diff --git a/dist/index.cjs b/dist/index.cjs index ed24044..de75e7a 100644 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -19741,10 +19741,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); (0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports2.error = error3; - function warning5(message, properties = {}) { + function warning7(message, properties = {}) { (0, command_1.issueCommand)("warning", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } - exports2.warning = warning5; + exports2.warning = warning7; function notice(message, properties = {}) { (0, command_1.issueCommand)("notice", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } @@ -58154,12 +58154,62 @@ var zodToJsonSchema = (schema, options) => { }; // src/setup/ensure-claude-cli.ts -var import_node_child_process = require("node:child_process"); +var import_node_child_process2 = require("node:child_process"); var import_node_fs = require("node:fs"); var import_node_os2 = require("node:os"); var import_node_path2 = require("node:path"); var core = __toESM(require_core(), 1); + +// src/setup/installer-support.ts +var import_node_child_process = require("node:child_process"); +function defaultSleep(ms2) { + return new Promise((resolve) => setTimeout(resolve, ms2)); +} +async function retryWithBackoff(fn, opts) { + const sleep = opts.sleep ?? defaultSleep; + let lastError; + for (let attempt = 1; attempt <= opts.attempts; attempt++) { + try { + return await fn(attempt); + } catch (err) { + lastError = err instanceof Error ? err : new Error(String(err)); + if (attempt < opts.attempts) { + opts.onRetry?.(attempt, lastError); + await sleep(opts.baseDelayMs * attempt); + } + } + } + throw lastError ?? new Error("retryWithBackoff: no attempts were made"); +} +function formatInstallerError(label, code, output) { + const base = `${label} exited with code ${code}`; + const tail = output.trim().split(/\r?\n/).map((line) => line.trim()).filter(Boolean).slice(-5).join(" | "); + return tail ? `${base}: ${tail}` : base; +} +function runCapturing(command, args, label) { + return new Promise((resolve, reject) => { + const proc = (0, import_node_child_process.spawn)(command, args, { stdio: ["ignore", "pipe", "pipe"] }); + let output = ""; + proc.stdout?.on("data", (chunk) => { + output += chunk.toString(); + process.stdout.write(chunk); + }); + proc.stderr?.on("data", (chunk) => { + output += chunk.toString(); + process.stderr.write(chunk); + }); + proc.on("error", reject); + proc.on("close", (code) => { + if (code === 0) resolve(); + else reject(new Error(formatInstallerError(label, code, output))); + }); + }); +} + +// src/setup/ensure-claude-cli.ts var CLI_VERSION = "2.1.141"; +var INSTALL_ATTEMPTS = 3; +var INSTALL_RETRY_BASE_DELAY_MS = 2e3; var cached = null; function ensureClaudeCli() { if (!cached) cached = resolveClaudeCli(); @@ -58182,44 +58232,51 @@ async function resolveClaudeCli() { return installClaudeCli(); } function whichClaude() { - const result = (0, import_node_child_process.spawnSync)("sh", ["-c", "command -v claude"], { + const result = (0, import_node_child_process2.spawnSync)("sh", ["-c", "command -v claude"], { encoding: "utf8" }); if (result.status !== 0) return null; const path3 = result.stdout.split(/\r?\n/)[0]?.trim(); return path3 && (0, import_node_fs.existsSync)(path3) ? path3 : null; } +function runInstallScript() { + return runCapturing( + "bash", + [ + "-c", + `set -o pipefail; curl -fsSL https://claude.ai/install.sh | bash -s -- ${CLI_VERSION}` + ], + "Claude CLI installer" + ); +} async function installClaudeCli() { core.info( `Claude CLI not found on PATH. Installing v${CLI_VERSION} via claude.ai/install.sh` ); - await new Promise((resolve, reject) => { - const proc = (0, import_node_child_process.spawn)( - "sh", - [ - "-c", - `curl -fsSL https://claude.ai/install.sh | bash -s -- ${CLI_VERSION}` - ], - { stdio: ["ignore", "inherit", "inherit"] } - ); - proc.on("error", reject); - proc.on("close", (code) => { - if (code === 0) resolve(); - else reject(new Error(`Claude CLI installer exited with code ${code}`)); - }); - }); const defaultPath = (0, import_node_path2.join)((0, import_node_os2.homedir)(), ".local", "bin", "claude"); - if ((0, import_node_fs.existsSync)(defaultPath)) { - core.info(`Installed Claude CLI at ${defaultPath}`); - return defaultPath; - } - const onPath = whichClaude(); - if (onPath) { - core.info(`Installed Claude CLI resolved via PATH: ${onPath}`); - return onPath; - } - throw new Error( - `Claude CLI installer succeeded but no binary found at ${defaultPath} or on PATH` + return retryWithBackoff( + async () => { + await runInstallScript(); + if ((0, import_node_fs.existsSync)(defaultPath)) { + core.info(`Installed Claude CLI at ${defaultPath}`); + return defaultPath; + } + const onPath = whichClaude(); + if (onPath) { + core.info(`Installed Claude CLI resolved via PATH: ${onPath}`); + return onPath; + } + throw new Error( + `Claude CLI installer succeeded but no binary found at ${defaultPath} or on PATH` + ); + }, + { + attempts: INSTALL_ATTEMPTS, + baseDelayMs: INSTALL_RETRY_BASE_DELAY_MS, + onRetry: (attempt, error3) => core.warning( + `Claude CLI install attempt ${attempt}/${INSTALL_ATTEMPTS} failed: ${error3.message}. Retrying...` + ) + } ); } @@ -59100,10 +59157,12 @@ var Codex = class { }; // src/setup/ensure-codex-cli.ts -var import_node_child_process2 = require("node:child_process"); +var import_node_child_process3 = require("node:child_process"); var import_node_fs2 = require("node:fs"); var core3 = __toESM(require_core(), 1); var CLI_VERSION2 = "0.139.0"; +var INSTALL_ATTEMPTS2 = 3; +var INSTALL_RETRY_BASE_DELAY_MS2 = 2e3; var cached2 = null; function ensureCodexCli() { if (!cached2) cached2 = resolveCodexCli(); @@ -59126,7 +59185,7 @@ async function resolveCodexCli() { return installCodexCli(); } function whichCodex() { - const result = (0, import_node_child_process2.spawnSync)("sh", ["-c", "command -v codex"], { + const result = (0, import_node_child_process3.spawnSync)("sh", ["-c", "command -v codex"], { encoding: "utf8" }); if (result.status !== 0) return null; @@ -59137,25 +59196,29 @@ async function installCodexCli() { core3.info( `Codex CLI not found on PATH. Installing @openai/codex@${CLI_VERSION2} globally via npm.` ); - await new Promise((resolve, reject) => { - const proc = (0, import_node_child_process2.spawn)( - "npm", - ["install", "-g", `@openai/codex@${CLI_VERSION2}`], - { stdio: ["ignore", "inherit", "inherit"] } - ); - proc.on("error", reject); - proc.on("close", (code) => { - if (code === 0) resolve(); - else reject(new Error(`Codex CLI installer exited with code ${code}`)); - }); - }); - const onPath = whichCodex(); - if (onPath) { - core3.info(`Installed Codex CLI resolved via PATH: ${onPath}`); - return onPath; - } - throw new Error( - "Codex CLI installer succeeded but no `codex` binary was found on PATH" + return retryWithBackoff( + async () => { + await runCapturing( + "npm", + ["install", "-g", `@openai/codex@${CLI_VERSION2}`], + "Codex CLI installer" + ); + const onPath = whichCodex(); + if (onPath) { + core3.info(`Installed Codex CLI resolved via PATH: ${onPath}`); + return onPath; + } + throw new Error( + "Codex CLI installer succeeded but no `codex` binary was found on PATH" + ); + }, + { + attempts: INSTALL_ATTEMPTS2, + baseDelayMs: INSTALL_RETRY_BASE_DELAY_MS2, + onRetry: (attempt, error3) => core3.warning( + `Codex CLI install attempt ${attempt}/${INSTALL_ATTEMPTS2} failed: ${error3.message}. Retrying...` + ) + } ); } @@ -67140,8 +67203,8 @@ function validateToolName(name) { function issueToolNameWarning(name, warnings) { if (warnings.length > 0) { console.warn(`Tool name validation warning for "${name}":`); - for (const warning5 of warnings) { - console.warn(` - ${warning5}`); + for (const warning7 of warnings) { + console.warn(` - ${warning7}`); } console.warn("Tool registration will proceed, but this may cause compatibility issues."); console.warn("Consider updating the tool name to conform to the MCP tool naming standard."); @@ -69872,7 +69935,7 @@ function parseConfig(raw) { } // src/git/identity.ts -var import_node_child_process3 = require("node:child_process"); +var import_node_child_process4 = require("node:child_process"); var import_node_fs5 = require("node:fs"); var import_node_os4 = require("node:os"); var import_node_path4 = require("node:path"); @@ -69948,7 +70011,7 @@ async function applyGitIdentity(opts) { } function runGit(cwd, args) { return new Promise((resolve, reject) => { - const child = (0, import_node_child_process3.spawn)("git", args, { + const child = (0, import_node_child_process4.spawn)("git", args, { cwd, stdio: ["ignore", "pipe", "pipe"] }); @@ -69970,7 +70033,7 @@ function runGit(cwd, args) { } // src/git/impl-checkout.ts -var import_node_child_process4 = require("node:child_process"); +var import_node_child_process5 = require("node:child_process"); var core6 = __toESM(require_core(), 1); // src/github/app-token.ts @@ -70097,7 +70160,7 @@ async function checkoutImplBranch(opts) { } function runGit2(cwd, args) { return new Promise((resolve, reject) => { - const child = (0, import_node_child_process4.spawn)("git", args, { + const child = (0, import_node_child_process5.spawn)("git", args, { cwd, stdio: ["ignore", "pipe", "pipe"] }); @@ -70132,11 +70195,13 @@ function parsePrMetadata(body) { /Shopfloor-Stage:\s*(spec|plan|implement|review)/ ); const iterMatch = body.match(/Shopfloor-Review-Iteration:\s*(\d+)/); + const errMatch = body.match(/Shopfloor-Review-Error-Count:\s*(\d+)/); if (!issueMatch || !stageMatch) return null; return { issueNumber: Number(issueMatch[1]), stage: stageMatch[1], - reviewIteration: iterMatch ? Number(iterMatch[1]) : 0 + reviewIteration: iterMatch ? Number(iterMatch[1]) : 0, + reviewErrorCount: errMatch ? Number(errMatch[1]) : 0 }; } function branchSlug(title) { @@ -71279,6 +71344,9 @@ function partitionCommentsByDiff(comments, positionMap) { // src/stages/review/aggregate.ts var SHOPFLOOR_REVIEW_MARKER = ""; +function renderLensFailure(f7) { + return `- \`${f7.lens}\` failed (${f7.kind}): ${f7.message}`; +} var SOURCE_CATEGORY = { compliance: "compliance", bugs: "bug", @@ -71339,6 +71407,28 @@ function aggregateFindings(input) { const blockedLenses = succeeded.filter( (s2) => s2.decision.verdict === "blocked" ); + if (succeeded.length === 0 && failedLenses.length > 0) { + const errorCount = (input.currentErrorCount ?? 0) + 1; + const maxErrors = input.maxConsecutiveReviewErrors ?? Number.POSITIVE_INFINITY; + const escalate = errorCount >= maxErrors; + const closing = escalate ? `This has now failed ${errorCount} consecutive times. A human should take over this PR.` : "This is an infrastructure error, not a code-review result. The pull request has not been evaluated and will be re-reviewed."; + const body = [ + SHOPFLOOR_REVIEW_MARKER, + "**Shopfloor agent review: could not complete.** Every reviewer failed before returning a verdict.", + "", + closing, + "", + "**Reviewer failures:**", + ...failedLenses.map(renderLensFailure) + ].join("\n"); + return { + kind: "errored", + body, + failures: failedLenses, + errorCount, + escalate + }; + } const allComments = succeeded.flatMap((s2) => s2.decision.comments); const deduped = dedupeComments(allComments); const filtered = deduped.filter( @@ -71378,7 +71468,7 @@ function aggregateFindings(input) { bodyParts.push(""); bodyParts.push("**Lens failures:**"); for (const f7 of failedLenses) { - bodyParts.push(`- \`${f7.lens}\` failed (${f7.kind}): ${f7.message}`); + bodyParts.push(renderLensFailure(f7)); } } if (blockedLenses.length > 0) { @@ -71411,6 +71501,7 @@ function aggregateFindings(input) { // src/stages/review/apply.ts var ITERATION_LINE2 = /Shopfloor-Review-Iteration:\s*\d+/; +var ERROR_COUNT_LINE = /\n?Shopfloor-Review-Error-Count:\s*\d+/g; function writeIterationToBody(body, iteration) { const baseBody = body ?? ""; if (!baseBody.match(ITERATION_LINE2)) { @@ -71424,6 +71515,15 @@ Shopfloor-Review-Iteration: ${iteration} `Shopfloor-Review-Iteration: ${iteration}` ); } +function stripErrorCountLine(body) { + return (body ?? "").replace(ERROR_COUNT_LINE, ""); +} +function writeErrorCountToBody(body, count) { + return `${stripErrorCountLine(body).trimEnd()} + +Shopfloor-Review-Error-Count: ${count} +`; +} async function applyReview(ctx, args) { if (!ctx.pr) throw new Error("applyReview requires ctx.pr"); const reviewer = ctx.reviewGithub ?? ctx.github; @@ -71454,6 +71554,12 @@ async function applyReview(ctx, args) { await ctx.github.addLabel(labelTarget, LABELS.reviewApproved); await ctx.github.removeLabel(labelTarget, LABELS.needsReview); await ctx.github.removeLabel(labelTarget, LABELS.reviewRequestedChanges); + if (ctx.pr.body?.includes("Shopfloor-Review-Error-Count")) { + await ctx.github.updatePrBody( + prNumber, + stripErrorCountLine(ctx.pr.body) + ); + } } ctx.audit({ type: "review_posted", @@ -71485,6 +71591,68 @@ async function applyReview(ctx, args) { }); return; } + if (outcome.kind === "errored") { + await ctx.github.postReview({ + prNumber, + commitSha: headSha, + event: "COMMENT", + body: outcome.body, + comments: [] + }); + if (ctx.reviewOnly) { + await ctx.github.setReviewStatus( + headSha, + "error", + "Shopfloor review could not complete (infrastructure error)", + workflowRunUrl + ); + ctx.audit({ + type: "review_posted", + prNumber, + verdict: "errored", + iteration: 0 + }); + return; + } + if (outcome.escalate) { + await ctx.github.addLabel(labelTarget, LABELS.reviewStuck); + await ctx.github.removeLabel(labelTarget, LABELS.needsReview); + await ctx.github.postIssueComment( + prNumber, + `Shopfloor agent review could not complete after ${outcome.errorCount} consecutive attempts (infrastructure failures). A human should take over this PR. See commit status for the latest failure detail.` + ); + await ctx.github.setReviewStatus( + headSha, + "error", + `Shopfloor review could not complete after ${outcome.errorCount} attempts`, + workflowRunUrl + ); + ctx.audit({ + type: "label_applied", + issueNumber: labelTarget, + add: [LABELS.reviewStuck], + remove: [LABELS.needsReview] + }); + return; + } + await ctx.github.setReviewStatus( + headSha, + "error", + "Shopfloor review could not complete (infrastructure error)", + workflowRunUrl + ); + await ctx.github.updatePrBody( + prNumber, + writeErrorCountToBody(ctx.pr.body, outcome.errorCount) + ); + ctx.audit({ + type: "review_posted", + prNumber, + verdict: "errored", + iteration: 0 + }); + return; + } await reviewer.postReview({ prNumber, commitSha: headSha, @@ -71511,7 +71679,10 @@ ${c2.body}` if (!ctx.reviewOnly) { await ctx.github.addLabel(labelTarget, LABELS.reviewRequestedChanges); await ctx.github.removeLabel(labelTarget, LABELS.needsReview); - const newBody = writeIterationToBody(ctx.pr.body, outcome.nextIteration); + const newBody = writeIterationToBody( + stripErrorCountLine(ctx.pr.body), + outcome.nextIteration + ); await ctx.github.updatePrBody(prNumber, newBody); } ctx.audit({ @@ -72055,6 +72226,7 @@ async function runTriage(ctx, args) { // src/runners.ts var CONFIDENCE_THRESHOLD = 60; +var MAX_CONSECUTIVE_REVIEW_ERRORS = 3; async function buildSpecRevisionBlock(ctx, branchName) { if (!ctx.issue) return ""; const open = await ctx.github.findOpenPrByHead(branchName); @@ -72199,6 +72371,8 @@ var RUNNERS = { async execute(ctx, routed) { if (!ctx.pr) throw new Error("review stage requires ctx.pr"); const iteration = ctx.reviewOnly ? 0 : routed.reviewIteration ?? 0; + const errorCount = ctx.reviewOnly ? 0 : routed.reviewErrorCount ?? 0; + const maxConsecutiveReviewErrors = ctx.reviewOnly ? Number.POSITIVE_INFINITY : MAX_CONSECUTIVE_REVIEW_ERRORS; const maxIterations = ctx.reviewOnly ? Number.POSITIVE_INFINITY : ctx.config.maxReviewIterations; if (ctx.gitOps) { try { @@ -72241,7 +72415,9 @@ var RUNNERS = { })), currentIteration: iteration, maxIterations, - confidenceThreshold: CONFIDENCE_THRESHOLD + confidenceThreshold: CONFIDENCE_THRESHOLD, + currentErrorCount: errorCount, + maxConsecutiveReviewErrors }); let labelTarget; if (ctx.reviewOnly) { @@ -72563,7 +72739,8 @@ function resolvePullRequestEvent(payload) { stage: "review", issueNumber: meta.issueNumber, implPrNumber: pr.number, - reviewIteration: meta.reviewIteration + reviewIteration: meta.reviewIteration, + reviewErrorCount: meta.reviewErrorCount }; } if ((payload.action === "synchronize" || payload.action === "ready_for_review") && meta.stage === "implement") { @@ -72579,7 +72756,8 @@ function resolvePullRequestEvent(payload) { stage: "review", issueNumber: meta.issueNumber, implPrNumber: pr.number, - reviewIteration: meta.reviewIteration + reviewIteration: meta.reviewIteration, + reviewErrorCount: meta.reviewErrorCount }; } return { @@ -73286,4 +73464,4 @@ if (process.env.SHOPFLOOR_INVOKE_ENTRY !== "0") { 0 && (module.exports = { runEntry }); -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy91dGlscy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMrY29yZUAxLjExLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvbW1hbmQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9maWxlLWNvbW1hbmQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvcHJveHkudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3R1bm5lbEAwLjAuNi9ub2RlX21vZHVsZXMvdHVubmVsL2xpYi90dW5uZWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3R1bm5lbEAwLjAuNi9ub2RlX21vZHVsZXMvdHVubmVsL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2Vycm9ycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2NvbnN0YW50cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvdGltZXJzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9kZXBzL3N0cmVhbXNlYXJjaC9zYm1oLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9kZXBzL2RpY2VyL2xpYi9QYXJ0U3RyZWFtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvdXRpbHMvZ2V0TGltaXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2RlcHMvZGljZXIvbGliL0hlYWRlclBhcnNlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvZGVwcy9kaWNlci9saWIvRGljZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi91dGlscy9kZWNvZGVUZXh0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvdXRpbHMvcGFyc2VQYXJhbXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi91dGlscy9iYXNlbmFtZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvbGliL3R5cGVzL211bHRpcGFydC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvbGliL3V0aWxzL0RlY29kZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi90eXBlcy91cmxlbmNvZGVkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvbWFpbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvZ2xvYmFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC93ZWJpZGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvZGF0YVVSTC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9maWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2Zvcm1kYXRhLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2JvZHkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9yZXF1ZXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci1iYXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvY29ubmVjdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL3NyYy9sbGh0dHAvdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9zcmMvbGxodHRwL2NvbnN0YW50cy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL1JlZGlyZWN0SGFuZGxlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9yZWRpcmVjdEludGVyY2VwdG9yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC9sbGh0dHAtd2FzbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jbGllbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbm9kZS9maXhlZC1xdWV1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9wb29sLXN0YXRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3Bvb2wtYmFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9wb29sLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2JhbGFuY2VkLXBvb2wuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29tcGF0L2Rpc3BhdGNoZXItd2Vha3JlZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hZ2VudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvcmVhZGFibGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2Fib3J0LXNpZ25hbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvYXBpLXJlcXVlc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1zdHJlYW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1waXBlbGluZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvYXBpLXVwZ3JhZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1jb25uZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1zeW1ib2xzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay11dGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2staW50ZXJjZXB0b3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWNsaWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stcG9vbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL3BsdXJhbGl6ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9wZW5kaW5nLWludGVyY2VwdG9ycy1mb3JtYXR0ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWFnZW50LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3Byb3h5LWFnZW50LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2hhbmRsZXIvUmV0cnlIYW5kbGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2dsb2JhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL0RlY29yYXRvckhhbmRsZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvaGVhZGVycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9yZXNwb25zZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9yZXF1ZXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZpbGVhcGkvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9maWxlYXBpL3Byb2dyZXNzZXZlbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmlsZWFwaS9lbmNvZGluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9maWxlYXBpL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmlsZWFwaS9maWxlcmVhZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NhY2hlL3N5bWJvbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY2FjaGUvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jYWNoZS9jYWNoZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jYWNoZS9jYWNoZXN0b3JhZ2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy91dGlsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Nvb2tpZXMvcGFyc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWJzb2NrZXQvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9zeW1ib2xzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9ldmVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L2Nvbm5lY3Rpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L2ZyYW1lLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9yZWNlaXZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWJzb2NrZXQvd2Vic29ja2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvYXV0aC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMrY29yZUAxLjExLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL29pZGMtdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9zdW1tYXJ5LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytjb3JlQDEuMTEuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGF0aC11dGlscy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMraW9AMS4xLjMvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2lvL3NyYy9pby11dGlsLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytpb0AxLjEuMy9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaW8vc3JjL2lvLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytleGVjQDEuMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy90b29scnVubmVyLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytleGVjQDEuMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy9leGVjLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytjb3JlQDEuMTEuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGxhdGZvcm0udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9jb3JlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWNvbnRlbnQtdHlwZS1wYXJzZUAyLjAuMS9ub2RlX21vZHVsZXMvZmFzdC1jb250ZW50LXR5cGUtcGFyc2UvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9jb2RlZ2VuL2NvZGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9jb2RlZ2VuL3Njb3BlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvY29kZWdlbi9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3V0aWwudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9uYW1lcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2Vycm9ycy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2Jvb2xTY2hlbWEudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9ydWxlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2FwcGxpY2FiaWxpdHkudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS92YWxpZGF0ZS9kYXRhVHlwZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2RlZmF1bHRzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9jb2RlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvdmFsaWRhdGUva2V5d29yZC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL3N1YnNjaGVtYS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1kZWVwLWVxdWFsQDMuMS4zL25vZGVfbW9kdWxlcy9mYXN0LWRlZXAtZXF1YWwvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzb24tc2NoZW1hLXRyYXZlcnNlQDEuMC4wL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS10cmF2ZXJzZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3Jlc29sdmUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS92YWxpZGF0ZS9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9yZWZfZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvcmVmcy9kYXRhLmpzb24iLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtdXJpQDMuMS4wL25vZGVfbW9kdWxlcy9mYXN0LXVyaS9saWIvdXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtdXJpQDMuMS4wL25vZGVfbW9kdWxlcy9mYXN0LXVyaS9saWIvc2NoZW1lcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC11cmlAMy4xLjAvbm9kZV9tb2R1bGVzL2Zhc3QtdXJpL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3J1bnRpbWUvdXJpLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvcmUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2NvcmUvaWQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2NvcmUvcmVmLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9jb3JlL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0TnVtYmVyLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL211bHRpcGxlT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvcnVudGltZS91Y3MybGVuZ3RoLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0TGVuZ3RoLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL3BhdHRlcm4udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL3ZhbGlkYXRpb24vbGltaXRQcm9wZXJ0aWVzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL3JlcXVpcmVkLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0SXRlbXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvcnVudGltZS9lcXVhbC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi91bmlxdWVJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi9jb25zdC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi9lbnVtLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9hcHBsaWNhdG9yL2FkZGl0aW9uYWxJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9pdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9wcmVmaXhJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9pdGVtczIwMjAudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvY29udGFpbnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvZGVwZW5kZW5jaWVzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9hcHBsaWNhdG9yL3Byb3BlcnR5TmFtZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYWRkaXRpb25hbFByb3BlcnRpZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvcHJvcGVydGllcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9wYXR0ZXJuUHJvcGVydGllcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9ub3QudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYW55T2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3Ivb25lT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYWxsT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvaWYudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvdGhlbkVsc2UudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2Zvcm1hdC9mb3JtYXQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2Zvcm1hdC9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvbWV0YWRhdGEudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2RyYWZ0Ny50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvZGlzY3JpbWluYXRvci90eXBlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvZGlzY3JpbWluYXRvci9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2Fqdi50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2LWZvcm1hdHNAMy4wLjFfYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2LWZvcm1hdHMvc3JjL2Zvcm1hdHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Fqdi1mb3JtYXRzQDMuMC4xX2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi1mb3JtYXRzL3NyYy9saW1pdC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2LWZvcm1hdHNAMy4wLjFfYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2LWZvcm1hdHMvc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9lbnRyeS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5pdmVyc2FsLXVzZXItYWdlbnRANy4wLjMvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC11c2VyLWFnZW50L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtlbmRwb2ludEAxMC4xLjQvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2VuZHBvaW50L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtyZXF1ZXN0QDkuMi40L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtyZXF1ZXN0LWVycm9yQDYuMS44L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0LWVycm9yL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtvYXV0aC1tZXRob2RzQDUuMS41L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9vYXV0aC1tZXRob2RzL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLW9hdXRoLWRldmljZUA3LjEuNS9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2UvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K2F1dGgtb2F1dGgtdXNlckA1LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLW9hdXRoLWFwcEA4LjEuNC9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1hcHAvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2xpYi91dGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvbGliL2NyeXB0by1ub2RlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9saWIvZ2V0LXRva2VuLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdG9hZC1jYWNoZUAzLjcuMC9ub2RlX21vZHVsZXMvdG9hZC1jYWNoZS9kaXN0L3RvYWQtY2FjaGUubWpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLWFwcEA3LjIuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1hcHAvZGlzdC1ub2RlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9iZWZvcmUtYWZ0ZXItaG9va0AzLjAuMi9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL3JlZ2lzdGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9iZWZvcmUtYWZ0ZXItaG9va0AzLjAuMi9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL2FkZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYmVmb3JlLWFmdGVyLWhvb2tAMy4wLjIvbm9kZV9tb2R1bGVzL2JlZm9yZS1hZnRlci1ob29rL2xpYi9yZW1vdmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JlZm9yZS1hZnRlci1ob29rQDMuMC4yL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrZ3JhcGhxbEA4LjIuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvZ3JhcGhxbC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrYXV0aC10b2tlbkA1LjEuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC10b2tlbi9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvY29yZS9kaXN0LXNyYy92ZXJzaW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9jb3JlL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtwbHVnaW4tcmVxdWVzdC1sb2dANS4zLjFfQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXJlcXVlc3QtbG9nL2Rpc3Qtc3JjL3ZlcnNpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXF1ZXN0LWxvZ0A1LjMuMV9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2cvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1wYWdpbmF0ZS1yZXN0QDExLjYuMF9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcGFnaW5hdGUtcmVzdC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxMy41LjBfQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvc3JjL3ZlcnNpb24udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTMuNS4wX0BvY3Rva2l0K2NvcmVANi4xLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy9nZW5lcmF0ZWQvZW5kcG9pbnRzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDEzLjUuMF9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZW5kcG9pbnRzLXRvLW1ldGhvZHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTMuNS4wX0BvY3Rva2l0K2NvcmVANi4xLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcmVzdEAyMS4xLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcmVzdEAyMS4xLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vc3JjL2FnZW50cy9jbGF1ZGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhbnRocm9waWMtYWkrY2xhdWRlLWFnZW50LXNka0AwLjIuMTQxX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AYW50aHJvcGljLWFpL2NsYXVkZS1hZ2VudC1zZGsvc2RrLm1qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL09wdGlvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9SZWZzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vZXJyb3JNZXNzYWdlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL2dldFJlbGF0aXZlUGF0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9leHRlcm5hbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvWm9kRXJyb3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvbG9jYWxlcy9lbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9wYXJzZVV0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9lcnJvclV0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvdHlwZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2FueS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2JpZ2ludC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYm9vbGVhbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYnJhbmRlZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvY2F0Y2guanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2RhdGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2RlZmF1bHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2VmZmVjdHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2VudW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2ludGVyc2VjdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbGl0ZXJhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvc3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9yZWNvcmQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL21hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbmF0aXZlRW51bS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbmV2ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL251bGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL3VuaW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9udWxsYWJsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbnVtYmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9vYmplY3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL29wdGlvbmFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9waXBlbGluZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvcHJvbWlzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvc2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy90dXBsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvdW5kZWZpbmVkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy91bmtub3duLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9yZWFkb25seS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3NlbGVjdFBhcnNlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlRGVmLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vem9kVG9Kc29uU2NoZW1hLmpzIiwgIi4uL3NyYy9zZXR1cC9lbnN1cmUtY2xhdWRlLWNsaS50cyIsICIuLi9zcmMvYWdlbnRzL2FkYXB0ZXIudHMiLCAiLi4vc3JjL2FnZW50cy9jb2RleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW5haStjb2RleC1zZGtAMC4xMzkuMC9ub2RlX21vZHVsZXMvQG9wZW5haS9jb2RleC1zZGsvc3JjL291dHB1dFNjaGVtYUZpbGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVuYWkrY29kZXgtc2RrQDAuMTM5LjAvbm9kZV9tb2R1bGVzL0BvcGVuYWkvY29kZXgtc2RrL3NyYy90aHJlYWQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVuYWkrY29kZXgtc2RrQDAuMTM5LjAvbm9kZV9tb2R1bGVzL0BvcGVuYWkvY29kZXgtc2RrL3NyYy9leGVjLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbmFpK2NvZGV4LXNka0AwLjEzOS4wL25vZGVfbW9kdWxlcy9Ab3BlbmFpL2NvZGV4LXNkay9zcmMvY29kZXgudHMiLCAiLi4vc3JjL3NldHVwL2Vuc3VyZS1jb2RleC1jbGkudHMiLCAiLi4vc3JjL2FnZW50cy9tY3AtaHR0cC1icmlkZ2UudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9jb3JlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2Vycm9ycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvcmVnZXhlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2NoZWNrcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2RvYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3ZlcnNpb25zLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvc2NoZW1hcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9sb2NhbGVzL2VuLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvcmVnaXN0cmllcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2FwaS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3RvLWpzb24tc2NoZW1hLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L21pbmkvc2NoZW1hcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci96b2QtY29tcGF0LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvaXNvLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvcGFyc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9zY2hlbWFzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvZXh0ZXJuYWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy90eXBlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL2V4cGVyaW1lbnRhbC90YXNrcy9pbnRlcmZhY2VzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvc2VydmVyL3pvZC1qc29uLXNjaGVtYS1jb21wYXQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zaGFyZWQvcHJvdG9jb2wudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy92YWxpZGF0aW9uL2Fqdi1wcm92aWRlci50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL2V4cGVyaW1lbnRhbC90YXNrcy9zZXJ2ZXIudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9leHBlcmltZW50YWwvdGFza3MvaGVscGVycy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci9jb21wbGV0YWJsZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NoYXJlZC90b29sTmFtZVZhbGlkYXRpb24udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9leHBlcmltZW50YWwvdGFza3MvbWNwLXNlcnZlci50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci9tY3AudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bob25vK25vZGUtc2VydmVyQDEuMTkuMTRfaG9ub0A0LjEyLjEyL25vZGVfbW9kdWxlcy9AaG9uby9ub2RlLXNlcnZlci9kaXN0L2luZGV4Lm1qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci93ZWJTdGFuZGFyZFN0cmVhbWFibGVIdHRwLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvc2VydmVyL3N0cmVhbWFibGVIdHRwLnRzIiwgIi4uL3NyYy9hdWRpdC9ldmVudHMudHMiLCAiLi4vc3JjL2F1ZGl0L3N0ZXAtc3VtbWFyeS50cyIsICIuLi9zcmMvY29uZmlnL2FnZW50LWVudi50cyIsICIuLi9zcmMvY29uZmlnL2NvZGV4LW9wdGlvbnMudHMiLCAiLi4vc3JjL2NvbmZpZy9pbnB1dHMudHMiLCAiLi4vc3JjL2dpdC9pZGVudGl0eS50cyIsICIuLi9zcmMvZ2l0L2ltcGwtY2hlY2tvdXQudHMiLCAiLi4vc3JjL2dpdGh1Yi9hcHAtdG9rZW4udHMiLCAiLi4vc3JjL3N0YXRlL21ldGFkYXRhLnRzIiwgIi4uL3NyYy9naXRodWIvYWRhcHRlci50cyIsICIuLi9zcmMvcnVubmVycy50cyIsICIuLi9zcmMvc3RhZ2VzL19zaGFyZWQvcHJvZ3Jlc3MtY29tbWVudC50cyIsICIuLi9zcmMvc3RhdGUvbGFiZWxzLnRzIiwgIi4uL3NyYy9zdGFnZXMvX3NoYXJlZC9jaGVjay1yZXZpZXctc2tpcC50cyIsICIuLi9zcmMvc3RhZ2VzL2ltcGxlbWVudC9hcHBseS50cyIsICIuLi9zcmMvc3RhZ2VzL19zaGFyZWQvcHJvbXB0cy90ZGQtYW5kLWFudGktcGF0dGVybnMubWQiLCAiLi4vc3JjL3N0YWdlcy9fc2hhcmVkL3Byb21wdHMudHMiLCAiLi4vc3JjL3N0YWdlcy9pbXBsZW1lbnQvZGVjaXNpb24udHMiLCAiLi4vc3JjL3N0YWdlcy9pbXBsZW1lbnQvcHJvbXB0LnN5c3RlbS5tZCIsICIuLi9zcmMvc3RhZ2VzL2ltcGxlbWVudC9wcm9tcHQuc3lzdGVtLnF1aWNrLm1kIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L3Byb21wdC51c2VyLm1kLnRtcGwiLCAiLi4vc3JjL3N0YWdlcy9pbXBsZW1lbnQvcHJvbXB0LnVzZXIucXVpY2subWQudG1wbCIsICIuLi9zcmMvdG9vbHMvdXBkYXRlLXByb2dyZXNzLnRzIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L3J1bm5lci50cyIsICIuLi9zcmMvc3RhZ2VzL3BsYW4vYXBwbHkudHMiLCAiLi4vc3JjL3N0YWdlcy9wbGFuL2RlY2lzaW9uLnRzIiwgIi4uL3NyYy9zdGFnZXMvcGxhbi9wcm9tcHQuc3lzdGVtLm1kIiwgIi4uL3NyYy9zdGFnZXMvcGxhbi9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvcGxhbi90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL3BsYW4vcnVubmVyLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2RpZmYtcG9zaXRpb25zLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2FnZ3JlZ2F0ZS50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9hcHBseS50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9kZWNpc2lvbi50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc2hhcmVkLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9idWdzL3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL2J1Z3MvcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvYnVncy90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvYnVncy9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL2NvbXBsaWFuY2UvcHJvbXB0LnN5c3RlbS5tZCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvY29tcGxpYW5jZS9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9jb21wbGlhbmNlL3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9jb21wbGlhbmNlL3J1bm5lci50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc2VjdXJpdHkvcHJvbXB0LnN5c3RlbS5tZCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc2VjdXJpdHkvcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc2VjdXJpdHkvdG9vbHMudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NlY3VyaXR5L3J1bm5lci50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc21lbGxzL3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NtZWxscy9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9zbWVsbHMvdG9vbHMudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NtZWxscy9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvcnVubmVyLnRzIiwgIi4uL3NyYy9zdGFnZXMvc3BlYy9hcHBseS50cyIsICIuLi9zcmMvc3RhZ2VzL3NwZWMvZGVjaXNpb24udHMiLCAiLi4vc3JjL3N0YWdlcy9zcGVjL3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9zcGVjL3Byb21wdC51c2VyLm1kLnRtcGwiLCAiLi4vc3JjL3N0YWdlcy9zcGVjL3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvc3BlYy9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9fc2hhcmVkL3NlZWQtc3RhZ2UtcHIudHMiLCAiLi4vc3JjL3N0YWdlcy90cmlhZ2UvYXBwbHkudHMiLCAiLi4vc3JjL3N0YWdlcy90cmlhZ2UvZGVjaXNpb24udHMiLCAiLi4vc3JjL3N0YWdlcy90cmlhZ2UvcHJvbXB0LnN5c3RlbS5tZCIsICIuLi9zcmMvc3RhZ2VzL3RyaWFnZS9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvdHJpYWdlL3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvdHJpYWdlL3J1bm5lci50cyIsICIuLi9zcmMvc3RhdGUvbWFjaGluZS50cyIsICIuLi9zcmMvb3JjaGVzdHJhdG9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogW251bGwsIG51bGwsIG51bGwsIG51bGwsICIndXNlIHN0cmljdCc7XG5cbnZhciBuZXQgPSByZXF1aXJlKCduZXQnKTtcbnZhciB0bHMgPSByZXF1aXJlKCd0bHMnKTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5cbmV4cG9ydHMuaHR0cE92ZXJIdHRwID0gaHR0cE92ZXJIdHRwO1xuZXhwb3J0cy5odHRwc092ZXJIdHRwID0gaHR0cHNPdmVySHR0cDtcbmV4cG9ydHMuaHR0cE92ZXJIdHRwcyA9IGh0dHBPdmVySHR0cHM7XG5leHBvcnRzLmh0dHBzT3Zlckh0dHBzID0gaHR0cHNPdmVySHR0cHM7XG5cblxuZnVuY3Rpb24gaHR0cE92ZXJIdHRwKG9wdGlvbnMpIHtcbiAgdmFyIGFnZW50ID0gbmV3IFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpO1xuICBhZ2VudC5yZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0O1xuICByZXR1cm4gYWdlbnQ7XG59XG5cbmZ1bmN0aW9uIGh0dHBzT3Zlckh0dHAob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwLnJlcXVlc3Q7XG4gIGFnZW50LmNyZWF0ZVNvY2tldCA9IGNyZWF0ZVNlY3VyZVNvY2tldDtcbiAgYWdlbnQuZGVmYXVsdFBvcnQgPSA0NDM7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuZnVuY3Rpb24gaHR0cE92ZXJIdHRwcyhvcHRpb25zKSB7XG4gIHZhciBhZ2VudCA9IG5ldyBUdW5uZWxpbmdBZ2VudChvcHRpb25zKTtcbiAgYWdlbnQucmVxdWVzdCA9IGh0dHBzLnJlcXVlc3Q7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuZnVuY3Rpb24gaHR0cHNPdmVySHR0cHMob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwcy5yZXF1ZXN0O1xuICBhZ2VudC5jcmVhdGVTb2NrZXQgPSBjcmVhdGVTZWN1cmVTb2NrZXQ7XG4gIGFnZW50LmRlZmF1bHRQb3J0ID0gNDQzO1xuICByZXR1cm4gYWdlbnQ7XG59XG5cblxuZnVuY3Rpb24gVHVubmVsaW5nQWdlbnQob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHNlbGYucHJveHlPcHRpb25zID0gc2VsZi5vcHRpb25zLnByb3h5IHx8IHt9O1xuICBzZWxmLm1heFNvY2tldHMgPSBzZWxmLm9wdGlvbnMubWF4U29ja2V0cyB8fCBodHRwLkFnZW50LmRlZmF1bHRNYXhTb2NrZXRzO1xuICBzZWxmLnJlcXVlc3RzID0gW107XG4gIHNlbGYuc29ja2V0cyA9IFtdO1xuXG4gIHNlbGYub24oJ2ZyZWUnLCBmdW5jdGlvbiBvbkZyZWUoc29ja2V0LCBob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRvT3B0aW9ucyhob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZWxmLnJlcXVlc3RzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYucmVxdWVzdHNbaV07XG4gICAgICBpZiAocGVuZGluZy5ob3N0ID09PSBvcHRpb25zLmhvc3QgJiYgcGVuZGluZy5wb3J0ID09PSBvcHRpb25zLnBvcnQpIHtcbiAgICAgICAgLy8gRGV0ZWN0IHRoZSByZXF1ZXN0IHRvIGNvbm5lY3Qgc2FtZSBvcmlnaW4gc2VydmVyLFxuICAgICAgICAvLyByZXVzZSB0aGUgY29ubmVjdGlvbi5cbiAgICAgICAgc2VsZi5yZXF1ZXN0cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHBlbmRpbmcucmVxdWVzdC5vblNvY2tldChzb2NrZXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgc2VsZi5yZW1vdmVTb2NrZXQoc29ja2V0KTtcbiAgfSk7XG59XG51dGlsLmluaGVyaXRzKFR1bm5lbGluZ0FnZW50LCBldmVudHMuRXZlbnRFbWl0dGVyKTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmFkZFJlcXVlc3QgPSBmdW5jdGlvbiBhZGRSZXF1ZXN0KHJlcSwgaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoe3JlcXVlc3Q6IHJlcX0sIHNlbGYub3B0aW9ucywgdG9PcHRpb25zKGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcykpO1xuXG4gIGlmIChzZWxmLnNvY2tldHMubGVuZ3RoID49IHRoaXMubWF4U29ja2V0cykge1xuICAgIC8vIFdlIGFyZSBvdmVyIGxpbWl0IHNvIHdlJ2xsIGFkZCBpdCB0byB0aGUgcXVldWUuXG4gICAgc2VsZi5yZXF1ZXN0cy5wdXNoKG9wdGlvbnMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHdlIGFyZSB1bmRlciBtYXhTb2NrZXRzIGNyZWF0ZSBhIG5ldyBvbmUuXG4gIHNlbGYuY3JlYXRlU29ja2V0KG9wdGlvbnMsIGZ1bmN0aW9uKHNvY2tldCkge1xuICAgIHNvY2tldC5vbignZnJlZScsIG9uRnJlZSk7XG4gICAgc29ja2V0Lm9uKCdjbG9zZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgc29ja2V0Lm9uKCdhZ2VudFJlbW92ZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgcmVxLm9uU29ja2V0KHNvY2tldCk7XG5cbiAgICBmdW5jdGlvbiBvbkZyZWUoKSB7XG4gICAgICBzZWxmLmVtaXQoJ2ZyZWUnLCBzb2NrZXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uQ2xvc2VPclJlbW92ZShlcnIpIHtcbiAgICAgIHNlbGYucmVtb3ZlU29ja2V0KHNvY2tldCk7XG4gICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2ZyZWUnLCBvbkZyZWUpO1xuICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2FnZW50UmVtb3ZlJywgb25DbG9zZU9yUmVtb3ZlKTtcbiAgICB9XG4gIH0pO1xufTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmNyZWF0ZVNvY2tldCA9IGZ1bmN0aW9uIGNyZWF0ZVNvY2tldChvcHRpb25zLCBjYikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwbGFjZWhvbGRlciA9IHt9O1xuICBzZWxmLnNvY2tldHMucHVzaChwbGFjZWhvbGRlcik7XG5cbiAgdmFyIGNvbm5lY3RPcHRpb25zID0gbWVyZ2VPcHRpb25zKHt9LCBzZWxmLnByb3h5T3B0aW9ucywge1xuICAgIG1ldGhvZDogJ0NPTk5FQ1QnLFxuICAgIHBhdGg6IG9wdGlvbnMuaG9zdCArICc6JyArIG9wdGlvbnMucG9ydCxcbiAgICBhZ2VudDogZmFsc2UsXG4gICAgaGVhZGVyczoge1xuICAgICAgaG9zdDogb3B0aW9ucy5ob3N0ICsgJzonICsgb3B0aW9ucy5wb3J0XG4gICAgfVxuICB9KTtcbiAgaWYgKG9wdGlvbnMubG9jYWxBZGRyZXNzKSB7XG4gICAgY29ubmVjdE9wdGlvbnMubG9jYWxBZGRyZXNzID0gb3B0aW9ucy5sb2NhbEFkZHJlc3M7XG4gIH1cbiAgaWYgKGNvbm5lY3RPcHRpb25zLnByb3h5QXV0aCkge1xuICAgIGNvbm5lY3RPcHRpb25zLmhlYWRlcnMgPSBjb25uZWN0T3B0aW9ucy5oZWFkZXJzIHx8IHt9O1xuICAgIGNvbm5lY3RPcHRpb25zLmhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnICtcbiAgICAgICAgbmV3IEJ1ZmZlcihjb25uZWN0T3B0aW9ucy5wcm94eUF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIGRlYnVnKCdtYWtpbmcgQ09OTkVDVCByZXF1ZXN0Jyk7XG4gIHZhciBjb25uZWN0UmVxID0gc2VsZi5yZXF1ZXN0KGNvbm5lY3RPcHRpb25zKTtcbiAgY29ubmVjdFJlcS51c2VDaHVua2VkRW5jb2RpbmdCeURlZmF1bHQgPSBmYWxzZTsgLy8gZm9yIHYwLjZcbiAgY29ubmVjdFJlcS5vbmNlKCdyZXNwb25zZScsIG9uUmVzcG9uc2UpOyAvLyBmb3IgdjAuNlxuICBjb25uZWN0UmVxLm9uY2UoJ3VwZ3JhZGUnLCBvblVwZ3JhZGUpOyAgIC8vIGZvciB2MC42XG4gIGNvbm5lY3RSZXEub25jZSgnY29ubmVjdCcsIG9uQ29ubmVjdCk7ICAgLy8gZm9yIHYwLjcgb3IgbGF0ZXJcbiAgY29ubmVjdFJlcS5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICBjb25uZWN0UmVxLmVuZCgpO1xuXG4gIGZ1bmN0aW9uIG9uUmVzcG9uc2UocmVzKSB7XG4gICAgLy8gVmVyeSBoYWNreS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgaHR0cC1wYXJzZXIgbGVha3MuXG4gICAgcmVzLnVwZ3JhZGUgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gb25VcGdyYWRlKHJlcywgc29ja2V0LCBoZWFkKSB7XG4gICAgLy8gSGFja3kuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpIHtcbiAgICAgIG9uQ29ubmVjdChyZXMsIHNvY2tldCwgaGVhZCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkNvbm5lY3QocmVzLCBzb2NrZXQsIGhlYWQpIHtcbiAgICBjb25uZWN0UmVxLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIHNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblxuICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICBkZWJ1ZygndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHN0YXR1c0NvZGU9JWQnLFxuICAgICAgICByZXMuc3RhdHVzQ29kZSk7XG4gICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCd0dW5uZWxpbmcgc29ja2V0IGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgJyArXG4gICAgICAgICdzdGF0dXNDb2RlPScgKyByZXMuc3RhdHVzQ29kZSk7XG4gICAgICBlcnJvci5jb2RlID0gJ0VDT05OUkVTRVQnO1xuICAgICAgb3B0aW9ucy5yZXF1ZXN0LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgc2VsZi5yZW1vdmVTb2NrZXQocGxhY2Vob2xkZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGVhZC5sZW5ndGggPiAwKSB7XG4gICAgICBkZWJ1ZygnZ290IGlsbGVnYWwgcmVzcG9uc2UgYm9keSBmcm9tIHByb3h5Jyk7XG4gICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdnb3QgaWxsZWdhbCByZXNwb25zZSBib2R5IGZyb20gcHJveHknKTtcbiAgICAgIGVycm9yLmNvZGUgPSAnRUNPTk5SRVNFVCc7XG4gICAgICBvcHRpb25zLnJlcXVlc3QuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgICBzZWxmLnJlbW92ZVNvY2tldChwbGFjZWhvbGRlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRlYnVnKCd0dW5uZWxpbmcgY29ubmVjdGlvbiBoYXMgZXN0YWJsaXNoZWQnKTtcbiAgICBzZWxmLnNvY2tldHNbc2VsZi5zb2NrZXRzLmluZGV4T2YocGxhY2Vob2xkZXIpXSA9IHNvY2tldDtcbiAgICByZXR1cm4gY2Ioc29ja2V0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRXJyb3IoY2F1c2UpIHtcbiAgICBjb25uZWN0UmVxLnJlbW92ZUFsbExpc3RlbmVycygpO1xuXG4gICAgZGVidWcoJ3R1bm5lbGluZyBzb2NrZXQgY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCBjYXVzZT0lc1xcbicsXG4gICAgICAgICAgY2F1c2UubWVzc2FnZSwgY2F1c2Uuc3RhY2spO1xuICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnY2F1c2U9JyArIGNhdXNlLm1lc3NhZ2UpO1xuICAgIGVycm9yLmNvZGUgPSAnRUNPTk5SRVNFVCc7XG4gICAgb3B0aW9ucy5yZXF1ZXN0LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgIHNlbGYucmVtb3ZlU29ja2V0KHBsYWNlaG9sZGVyKTtcbiAgfVxufTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLnJlbW92ZVNvY2tldCA9IGZ1bmN0aW9uIHJlbW92ZVNvY2tldChzb2NrZXQpIHtcbiAgdmFyIHBvcyA9IHRoaXMuc29ja2V0cy5pbmRleE9mKHNvY2tldClcbiAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5zb2NrZXRzLnNwbGljZShwb3MsIDEpO1xuXG4gIHZhciBwZW5kaW5nID0gdGhpcy5yZXF1ZXN0cy5zaGlmdCgpO1xuICBpZiAocGVuZGluZykge1xuICAgIC8vIElmIHdlIGhhdmUgcGVuZGluZyByZXF1ZXN0cyBhbmQgYSBzb2NrZXQgZ2V0cyBjbG9zZWQgYSBuZXcgb25lXG4gICAgLy8gbmVlZHMgdG8gYmUgY3JlYXRlZCB0byB0YWtlIG92ZXIgaW4gdGhlIHBvb2wgZm9yIHRoZSBvbmUgdGhhdCBjbG9zZWQuXG4gICAgdGhpcy5jcmVhdGVTb2NrZXQocGVuZGluZywgZnVuY3Rpb24oc29ja2V0KSB7XG4gICAgICBwZW5kaW5nLnJlcXVlc3Qub25Tb2NrZXQoc29ja2V0KTtcbiAgICB9KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gY3JlYXRlU2VjdXJlU29ja2V0KG9wdGlvbnMsIGNiKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmNyZWF0ZVNvY2tldC5jYWxsKHNlbGYsIG9wdGlvbnMsIGZ1bmN0aW9uKHNvY2tldCkge1xuICAgIHZhciBob3N0SGVhZGVyID0gb3B0aW9ucy5yZXF1ZXN0LmdldEhlYWRlcignaG9zdCcpO1xuICAgIHZhciB0bHNPcHRpb25zID0gbWVyZ2VPcHRpb25zKHt9LCBzZWxmLm9wdGlvbnMsIHtcbiAgICAgIHNvY2tldDogc29ja2V0LFxuICAgICAgc2VydmVybmFtZTogaG9zdEhlYWRlciA/IGhvc3RIZWFkZXIucmVwbGFjZSgvOi4qJC8sICcnKSA6IG9wdGlvbnMuaG9zdFxuICAgIH0pO1xuXG4gICAgLy8gMCBpcyBkdW1teSBwb3J0IGZvciB2MC42XG4gICAgdmFyIHNlY3VyZVNvY2tldCA9IHRscy5jb25uZWN0KDAsIHRsc09wdGlvbnMpO1xuICAgIHNlbGYuc29ja2V0c1tzZWxmLnNvY2tldHMuaW5kZXhPZihzb2NrZXQpXSA9IHNlY3VyZVNvY2tldDtcbiAgICBjYihzZWN1cmVTb2NrZXQpO1xuICB9KTtcbn1cblxuXG5mdW5jdGlvbiB0b09wdGlvbnMoaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSB7XG4gIGlmICh0eXBlb2YgaG9zdCA9PT0gJ3N0cmluZycpIHsgLy8gc2luY2UgdjAuMTBcbiAgICByZXR1cm4ge1xuICAgICAgaG9zdDogaG9zdCxcbiAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICBsb2NhbEFkZHJlc3M6IGxvY2FsQWRkcmVzc1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGhvc3Q7IC8vIGZvciB2MC4xMSBvciBsYXRlclxufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnModGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgb3ZlcnJpZGVzID0gYXJndW1lbnRzW2ldO1xuICAgIGlmICh0eXBlb2Ygb3ZlcnJpZGVzID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZXMpO1xuICAgICAgZm9yICh2YXIgaiA9IDAsIGtleUxlbiA9IGtleXMubGVuZ3RoOyBqIDwga2V5TGVuOyArK2opIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW2pdO1xuICAgICAgICBpZiAob3ZlcnJpZGVzW2tdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0YXJnZXRba10gPSBvdmVycmlkZXNba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG52YXIgZGVidWc7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyAmJiAvXFxidHVubmVsXFxiLy50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcpKSB7XG4gIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGFyZ3NbMF0gPSAnVFVOTkVMOiAnICsgYXJnc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncy51bnNoaWZ0KCdUVU5ORUw6Jyk7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gIH1cbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24oKSB7fTtcbn1cbmV4cG9ydHMuZGVidWcgPSBkZWJ1ZzsgLy8gZm9yIHRlc3RcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL3R1bm5lbCcpO1xuIiwgIm1vZHVsZS5leHBvcnRzID0ge1xuICBrQ2xvc2U6IFN5bWJvbCgnY2xvc2UnKSxcbiAga0Rlc3Ryb3k6IFN5bWJvbCgnZGVzdHJveScpLFxuICBrRGlzcGF0Y2g6IFN5bWJvbCgnZGlzcGF0Y2gnKSxcbiAga1VybDogU3ltYm9sKCd1cmwnKSxcbiAga1dyaXRpbmc6IFN5bWJvbCgnd3JpdGluZycpLFxuICBrUmVzdW1pbmc6IFN5bWJvbCgncmVzdW1pbmcnKSxcbiAga1F1ZXVlOiBTeW1ib2woJ3F1ZXVlJyksXG4gIGtDb25uZWN0OiBTeW1ib2woJ2Nvbm5lY3QnKSxcbiAga0Nvbm5lY3Rpbmc6IFN5bWJvbCgnY29ubmVjdGluZycpLFxuICBrSGVhZGVyc0xpc3Q6IFN5bWJvbCgnaGVhZGVycyBsaXN0JyksXG4gIGtLZWVwQWxpdmVEZWZhdWx0VGltZW91dDogU3ltYm9sKCdkZWZhdWx0IGtlZXAgYWxpdmUgdGltZW91dCcpLFxuICBrS2VlcEFsaXZlTWF4VGltZW91dDogU3ltYm9sKCdtYXgga2VlcCBhbGl2ZSB0aW1lb3V0JyksXG4gIGtLZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkOiBTeW1ib2woJ2tlZXAgYWxpdmUgdGltZW91dCB0aHJlc2hvbGQnKSxcbiAga0tlZXBBbGl2ZVRpbWVvdXRWYWx1ZTogU3ltYm9sKCdrZWVwIGFsaXZlIHRpbWVvdXQnKSxcbiAga0tlZXBBbGl2ZTogU3ltYm9sKCdrZWVwIGFsaXZlJyksXG4gIGtIZWFkZXJzVGltZW91dDogU3ltYm9sKCdoZWFkZXJzIHRpbWVvdXQnKSxcbiAga0JvZHlUaW1lb3V0OiBTeW1ib2woJ2JvZHkgdGltZW91dCcpLFxuICBrU2VydmVyTmFtZTogU3ltYm9sKCdzZXJ2ZXIgbmFtZScpLFxuICBrTG9jYWxBZGRyZXNzOiBTeW1ib2woJ2xvY2FsIGFkZHJlc3MnKSxcbiAga0hvc3Q6IFN5bWJvbCgnaG9zdCcpLFxuICBrTm9SZWY6IFN5bWJvbCgnbm8gcmVmJyksXG4gIGtCb2R5VXNlZDogU3ltYm9sKCd1c2VkJyksXG4gIGtSdW5uaW5nOiBTeW1ib2woJ3J1bm5pbmcnKSxcbiAga0Jsb2NraW5nOiBTeW1ib2woJ2Jsb2NraW5nJyksXG4gIGtQZW5kaW5nOiBTeW1ib2woJ3BlbmRpbmcnKSxcbiAga1NpemU6IFN5bWJvbCgnc2l6ZScpLFxuICBrQnVzeTogU3ltYm9sKCdidXN5JyksXG4gIGtRdWV1ZWQ6IFN5bWJvbCgncXVldWVkJyksXG4gIGtGcmVlOiBTeW1ib2woJ2ZyZWUnKSxcbiAga0Nvbm5lY3RlZDogU3ltYm9sKCdjb25uZWN0ZWQnKSxcbiAga0Nsb3NlZDogU3ltYm9sKCdjbG9zZWQnKSxcbiAga05lZWREcmFpbjogU3ltYm9sKCduZWVkIGRyYWluJyksXG4gIGtSZXNldDogU3ltYm9sKCdyZXNldCcpLFxuICBrRGVzdHJveWVkOiBTeW1ib2wuZm9yKCdub2RlanMuc3RyZWFtLmRlc3Ryb3llZCcpLFxuICBrTWF4SGVhZGVyc1NpemU6IFN5bWJvbCgnbWF4IGhlYWRlcnMgc2l6ZScpLFxuICBrUnVubmluZ0lkeDogU3ltYm9sKCdydW5uaW5nIGluZGV4JyksXG4gIGtQZW5kaW5nSWR4OiBTeW1ib2woJ3BlbmRpbmcgaW5kZXgnKSxcbiAga0Vycm9yOiBTeW1ib2woJ2Vycm9yJyksXG4gIGtDbGllbnRzOiBTeW1ib2woJ2NsaWVudHMnKSxcbiAga0NsaWVudDogU3ltYm9sKCdjbGllbnQnKSxcbiAga1BhcnNlcjogU3ltYm9sKCdwYXJzZXInKSxcbiAga09uRGVzdHJveWVkOiBTeW1ib2woJ2Rlc3Ryb3kgY2FsbGJhY2tzJyksXG4gIGtQaXBlbGluaW5nOiBTeW1ib2woJ3BpcGVsaW5pbmcnKSxcbiAga1NvY2tldDogU3ltYm9sKCdzb2NrZXQnKSxcbiAga0hvc3RIZWFkZXI6IFN5bWJvbCgnaG9zdCBoZWFkZXInKSxcbiAga0Nvbm5lY3RvcjogU3ltYm9sKCdjb25uZWN0b3InKSxcbiAga1N0cmljdENvbnRlbnRMZW5ndGg6IFN5bWJvbCgnc3RyaWN0IGNvbnRlbnQgbGVuZ3RoJyksXG4gIGtNYXhSZWRpcmVjdGlvbnM6IFN5bWJvbCgnbWF4UmVkaXJlY3Rpb25zJyksXG4gIGtNYXhSZXF1ZXN0czogU3ltYm9sKCdtYXhSZXF1ZXN0c1BlckNsaWVudCcpLFxuICBrUHJveHk6IFN5bWJvbCgncHJveHkgYWdlbnQgb3B0aW9ucycpLFxuICBrQ291bnRlcjogU3ltYm9sKCdzb2NrZXQgcmVxdWVzdCBjb3VudGVyJyksXG4gIGtJbnRlcmNlcHRvcnM6IFN5bWJvbCgnZGlzcGF0Y2ggaW50ZXJjZXB0b3JzJyksXG4gIGtNYXhSZXNwb25zZVNpemU6IFN5bWJvbCgnbWF4IHJlc3BvbnNlIHNpemUnKSxcbiAga0hUVFAyU2Vzc2lvbjogU3ltYm9sKCdodHRwMlNlc3Npb24nKSxcbiAga0hUVFAyU2Vzc2lvblN0YXRlOiBTeW1ib2woJ2h0dHAyU2Vzc2lvbiBzdGF0ZScpLFxuICBrSFRUUDJCdWlsZFJlcXVlc3Q6IFN5bWJvbCgnaHR0cDIgYnVpbGQgcmVxdWVzdCcpLFxuICBrSFRUUDFCdWlsZFJlcXVlc3Q6IFN5bWJvbCgnaHR0cDEgYnVpbGQgcmVxdWVzdCcpLFxuICBrSFRUUDJDb3B5SGVhZGVyczogU3ltYm9sKCdodHRwMiBjb3B5IGhlYWRlcnMnKSxcbiAga0hUVFBDb25uVmVyc2lvbjogU3ltYm9sKCdodHRwIGNvbm5lY3Rpb24gdmVyc2lvbicpLFxuICBrUmV0cnlIYW5kbGVyRGVmYXVsdFJldHJ5OiBTeW1ib2woJ3JldHJ5IGFnZW50IGRlZmF1bHQgcmV0cnknKSxcbiAga0NvbnN0cnVjdDogU3ltYm9sKCdjb25zdHJ1Y3RhYmxlJylcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY2xhc3MgVW5kaWNpRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICB0aGlzLm5hbWUgPSAnVW5kaWNpRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlInXG4gIH1cbn1cblxuY2xhc3MgQ29ubmVjdFRpbWVvdXRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENvbm5lY3RUaW1lb3V0RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0Nvbm5lY3RUaW1lb3V0RXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnQ29ubmVjdCBUaW1lb3V0IEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0NPTk5FQ1RfVElNRU9VVCdcbiAgfVxufVxuXG5jbGFzcyBIZWFkZXJzVGltZW91dEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSGVhZGVyc1RpbWVvdXRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnSGVhZGVyc1RpbWVvdXRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdIZWFkZXJzIFRpbWVvdXQgRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfSEVBREVSU19USU1FT1VUJ1xuICB9XG59XG5cbmNsYXNzIEhlYWRlcnNPdmVyZmxvd0Vycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSGVhZGVyc092ZXJmbG93RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0hlYWRlcnNPdmVyZmxvd0Vycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ0hlYWRlcnMgT3ZlcmZsb3cgRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfSEVBREVSU19PVkVSRkxPVydcbiAgfVxufVxuXG5jbGFzcyBCb2R5VGltZW91dEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQm9keVRpbWVvdXRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnQm9keVRpbWVvdXRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdCb2R5IFRpbWVvdXQgRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfQk9EWV9USU1FT1VUJ1xuICB9XG59XG5cbmNsYXNzIFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgc3RhdHVzQ29kZSwgaGVhZGVycywgYm9keSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVzcG9uc2VTdGF0dXNDb2RlRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ1Jlc3BvbnNlU3RhdHVzQ29kZUVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1Jlc3BvbnNlIFN0YXR1cyBDb2RlIEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX1JFU1BPTlNFX1NUQVRVU19DT0RFJ1xuICAgIHRoaXMuYm9keSA9IGJvZHlcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1c0NvZGVcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlXG4gICAgdGhpcy5oZWFkZXJzID0gaGVhZGVyc1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSW52YWxpZEFyZ3VtZW50RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0ludmFsaWRBcmd1bWVudEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ0ludmFsaWQgQXJndW1lbnQgRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfSU5WQUxJRF9BUkcnXG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZFJldHVyblZhbHVlRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBJbnZhbGlkUmV0dXJuVmFsdWVFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnSW52YWxpZFJldHVyblZhbHVlRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnSW52YWxpZCBSZXR1cm4gVmFsdWUgRXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUnXG4gIH1cbn1cblxuY2xhc3MgUmVxdWVzdEFib3J0ZWRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcXVlc3RBYm9ydGVkRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0Fib3J0RXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnUmVxdWVzdCBhYm9ydGVkJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0FCT1JURUQnXG4gIH1cbn1cblxuY2xhc3MgSW5mb3JtYXRpb25hbEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSW5mb3JtYXRpb25hbEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdJbmZvcm1hdGlvbmFsRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnUmVxdWVzdCBpbmZvcm1hdGlvbidcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9JTkZPJ1xuICB9XG59XG5cbmNsYXNzIFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1JlcXVlc3QgYm9keSBsZW5ndGggZG9lcyBub3QgbWF0Y2ggY29udGVudC1sZW5ndGggaGVhZGVyJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX1JFUV9DT05URU5UX0xFTkdUSF9NSVNNQVRDSCdcbiAgfVxufVxuXG5jbGFzcyBSZXNwb25zZUNvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVzcG9uc2VDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnUmVzcG9uc2VDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdSZXNwb25zZSBib2R5IGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBjb250ZW50LWxlbmd0aCBoZWFkZXInXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfUkVTX0NPTlRFTlRfTEVOR1RIX01JU01BVENIJ1xuICB9XG59XG5cbmNsYXNzIENsaWVudERlc3Ryb3llZEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ2xpZW50RGVzdHJveWVkRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0NsaWVudERlc3Ryb3llZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1RoZSBjbGllbnQgaXMgZGVzdHJveWVkJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0RFU1RST1lFRCdcbiAgfVxufVxuXG5jbGFzcyBDbGllbnRDbG9zZWRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENsaWVudENsb3NlZEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdDbGllbnRDbG9zZWRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdUaGUgY2xpZW50IGlzIGNsb3NlZCdcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9DTE9TRUQnXG4gIH1cbn1cblxuY2xhc3MgU29ja2V0RXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlLCBzb2NrZXQpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFNvY2tldEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdTb2NrZXRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdTb2NrZXQgZXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfU09DS0VUJ1xuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0XG4gIH1cbn1cblxuY2xhc3MgTm90U3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBOb3RTdXBwb3J0ZWRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnTm90U3VwcG9ydGVkRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnTm90IHN1cHBvcnRlZCBlcnJvcidcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9OT1RfU1VQUE9SVEVEJ1xuICB9XG59XG5cbmNsYXNzIEJhbGFuY2VkUG9vbE1pc3NpbmdVcHN0cmVhbUVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgTm90U3VwcG9ydGVkRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ01pc3NpbmdVcHN0cmVhbUVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ05vIHVwc3RyZWFtIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBCYWxhbmNlZFBvb2wnXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfQlBMX01JU1NJTkdfVVBTVFJFQU0nXG4gIH1cbn1cblxuY2xhc3MgSFRUUFBhcnNlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgY29kZSwgZGF0YSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSFRUUFBhcnNlckVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdIVFRQUGFyc2VyRXJyb3InXG4gICAgdGhpcy5jb2RlID0gY29kZSA/IGBIUEVfJHtjb2RlfWAgOiB1bmRlZmluZWRcbiAgICB0aGlzLmRhdGEgPSBkYXRhID8gZGF0YS50b1N0cmluZygpIDogdW5kZWZpbmVkXG4gIH1cbn1cblxuY2xhc3MgUmVzcG9uc2VFeGNlZWRlZE1heFNpemVFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlc3BvbnNlRXhjZWVkZWRNYXhTaXplRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ1Jlc3BvbnNlRXhjZWVkZWRNYXhTaXplRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnUmVzcG9uc2UgY29udGVudCBleGNlZWRlZCBtYXggc2l6ZSdcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9SRVNfRVhDRUVERURfTUFYX1NJWkUnXG4gIH1cbn1cblxuY2xhc3MgUmVxdWVzdFJldHJ5RXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlLCBjb2RlLCB7IGhlYWRlcnMsIGRhdGEgfSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVxdWVzdFJldHJ5RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ1JlcXVlc3RSZXRyeUVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1JlcXVlc3QgcmV0cnkgZXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfUkVRX1JFVFJZJ1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IGNvZGVcbiAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgdGhpcy5oZWFkZXJzID0gaGVhZGVyc1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBIVFRQUGFyc2VyRXJyb3IsXG4gIFVuZGljaUVycm9yLFxuICBIZWFkZXJzVGltZW91dEVycm9yLFxuICBIZWFkZXJzT3ZlcmZsb3dFcnJvcixcbiAgQm9keVRpbWVvdXRFcnJvcixcbiAgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yLFxuICBDb25uZWN0VGltZW91dEVycm9yLFxuICBSZXNwb25zZVN0YXR1c0NvZGVFcnJvcixcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIEludmFsaWRSZXR1cm5WYWx1ZUVycm9yLFxuICBSZXF1ZXN0QWJvcnRlZEVycm9yLFxuICBDbGllbnREZXN0cm95ZWRFcnJvcixcbiAgQ2xpZW50Q2xvc2VkRXJyb3IsXG4gIEluZm9ybWF0aW9uYWxFcnJvcixcbiAgU29ja2V0RXJyb3IsXG4gIE5vdFN1cHBvcnRlZEVycm9yLFxuICBSZXNwb25zZUNvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yLFxuICBCYWxhbmNlZFBvb2xNaXNzaW5nVXBzdHJlYW1FcnJvcixcbiAgUmVzcG9uc2VFeGNlZWRlZE1heFNpemVFcnJvcixcbiAgUmVxdWVzdFJldHJ5RXJyb3Jcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+fSAqL1xuY29uc3QgaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmQgPSB7fVxuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVFRQL0hlYWRlcnNcbmNvbnN0IHdlbGxrbm93bkhlYWRlck5hbWVzID0gW1xuICAnQWNjZXB0JyxcbiAgJ0FjY2VwdC1FbmNvZGluZycsXG4gICdBY2NlcHQtTGFuZ3VhZ2UnLFxuICAnQWNjZXB0LVJhbmdlcycsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscycsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLU1heC1BZ2UnLFxuICAnQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtTWV0aG9kJyxcbiAgJ0FnZScsXG4gICdBbGxvdycsXG4gICdBbHQtU3ZjJyxcbiAgJ0FsdC1Vc2VkJyxcbiAgJ0F1dGhvcml6YXRpb24nLFxuICAnQ2FjaGUtQ29udHJvbCcsXG4gICdDbGVhci1TaXRlLURhdGEnLFxuICAnQ29ubmVjdGlvbicsXG4gICdDb250ZW50LURpc3Bvc2l0aW9uJyxcbiAgJ0NvbnRlbnQtRW5jb2RpbmcnLFxuICAnQ29udGVudC1MYW5ndWFnZScsXG4gICdDb250ZW50LUxlbmd0aCcsXG4gICdDb250ZW50LUxvY2F0aW9uJyxcbiAgJ0NvbnRlbnQtUmFuZ2UnLFxuICAnQ29udGVudC1TZWN1cml0eS1Qb2xpY3knLFxuICAnQ29udGVudC1TZWN1cml0eS1Qb2xpY3ktUmVwb3J0LU9ubHknLFxuICAnQ29udGVudC1UeXBlJyxcbiAgJ0Nvb2tpZScsXG4gICdDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5JyxcbiAgJ0Nyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5JyxcbiAgJ0Nyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3knLFxuICAnRGF0ZScsXG4gICdEZXZpY2UtTWVtb3J5JyxcbiAgJ0Rvd25saW5rJyxcbiAgJ0VDVCcsXG4gICdFVGFnJyxcbiAgJ0V4cGVjdCcsXG4gICdFeHBlY3QtQ1QnLFxuICAnRXhwaXJlcycsXG4gICdGb3J3YXJkZWQnLFxuICAnRnJvbScsXG4gICdIb3N0JyxcbiAgJ0lmLU1hdGNoJyxcbiAgJ0lmLU1vZGlmaWVkLVNpbmNlJyxcbiAgJ0lmLU5vbmUtTWF0Y2gnLFxuICAnSWYtUmFuZ2UnLFxuICAnSWYtVW5tb2RpZmllZC1TaW5jZScsXG4gICdLZWVwLUFsaXZlJyxcbiAgJ0xhc3QtTW9kaWZpZWQnLFxuICAnTGluaycsXG4gICdMb2NhdGlvbicsXG4gICdNYXgtRm9yd2FyZHMnLFxuICAnT3JpZ2luJyxcbiAgJ1Blcm1pc3Npb25zLVBvbGljeScsXG4gICdQcmFnbWEnLFxuICAnUHJveHktQXV0aGVudGljYXRlJyxcbiAgJ1Byb3h5LUF1dGhvcml6YXRpb24nLFxuICAnUlRUJyxcbiAgJ1JhbmdlJyxcbiAgJ1JlZmVyZXInLFxuICAnUmVmZXJyZXItUG9saWN5JyxcbiAgJ1JlZnJlc2gnLFxuICAnUmV0cnktQWZ0ZXInLFxuICAnU2VjLVdlYlNvY2tldC1BY2NlcHQnLFxuICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJyxcbiAgJ1NlYy1XZWJTb2NrZXQtS2V5JyxcbiAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLFxuICAnU2VjLVdlYlNvY2tldC1WZXJzaW9uJyxcbiAgJ1NlcnZlcicsXG4gICdTZXJ2ZXItVGltaW5nJyxcbiAgJ1NlcnZpY2UtV29ya2VyLUFsbG93ZWQnLFxuICAnU2VydmljZS1Xb3JrZXItTmF2aWdhdGlvbi1QcmVsb2FkJyxcbiAgJ1NldC1Db29raWUnLFxuICAnU291cmNlTWFwJyxcbiAgJ1N0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHknLFxuICAnU3VwcG9ydHMtTG9hZGluZy1Nb2RlJyxcbiAgJ1RFJyxcbiAgJ1RpbWluZy1BbGxvdy1PcmlnaW4nLFxuICAnVHJhaWxlcicsXG4gICdUcmFuc2Zlci1FbmNvZGluZycsXG4gICdVcGdyYWRlJyxcbiAgJ1VwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMnLFxuICAnVXNlci1BZ2VudCcsXG4gICdWYXJ5JyxcbiAgJ1ZpYScsXG4gICdXV1ctQXV0aGVudGljYXRlJyxcbiAgJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLFxuICAnWC1ETlMtUHJlZmV0Y2gtQ29udHJvbCcsXG4gICdYLUZyYW1lLU9wdGlvbnMnLFxuICAnWC1QZXJtaXR0ZWQtQ3Jvc3MtRG9tYWluLVBvbGljaWVzJyxcbiAgJ1gtUG93ZXJlZC1CeScsXG4gICdYLVJlcXVlc3RlZC1XaXRoJyxcbiAgJ1gtWFNTLVByb3RlY3Rpb24nXG5dXG5cbmZvciAobGV0IGkgPSAwOyBpIDwgd2VsbGtub3duSGVhZGVyTmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgY29uc3Qga2V5ID0gd2VsbGtub3duSGVhZGVyTmFtZXNbaV1cbiAgY29uc3QgbG93ZXJDYXNlZEtleSA9IGtleS50b0xvd2VyQ2FzZSgpXG4gIGhlYWRlck5hbWVMb3dlckNhc2VkUmVjb3JkW2tleV0gPSBoZWFkZXJOYW1lTG93ZXJDYXNlZFJlY29yZFtsb3dlckNhc2VkS2V5XSA9XG4gICAgbG93ZXJDYXNlZEtleVxufVxuXG4vLyBOb3RlOiBvYmplY3QgcHJvdG90eXBlcyBzaG91bGQgbm90IGJlIGFibGUgdG8gYmUgcmVmZXJlbmNlZC4gZS5nLiBgT2JqZWN0I2hhc093blByb3BlcnR5YC5cbk9iamVjdC5zZXRQcm90b3R5cGVPZihoZWFkZXJOYW1lTG93ZXJDYXNlZFJlY29yZCwgbnVsbClcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdlbGxrbm93bkhlYWRlck5hbWVzLFxuICBoZWFkZXJOYW1lTG93ZXJDYXNlZFJlY29yZFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBrRGVzdHJveWVkLCBrQm9keVVzZWQgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IEluY29taW5nTWVzc2FnZSB9ID0gcmVxdWlyZSgnaHR0cCcpXG5jb25zdCBzdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgbmV0ID0gcmVxdWlyZSgnbmV0JylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSA9IHJlcXVpcmUoJy4vZXJyb3JzJylcbmNvbnN0IHsgQmxvYiB9ID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IG5vZGVVdGlsID0gcmVxdWlyZSgndXRpbCcpXG5jb25zdCB7IHN0cmluZ2lmeSB9ID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKVxuY29uc3QgeyBoZWFkZXJOYW1lTG93ZXJDYXNlZFJlY29yZCB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5jb25zdCBbbm9kZU1ham9yLCBub2RlTWlub3JdID0gcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KCcuJykubWFwKHYgPT4gTnVtYmVyKHYpKVxuXG5mdW5jdGlvbiBub3AgKCkge31cblxuZnVuY3Rpb24gaXNTdHJlYW0gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoucGlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLm9uID09PSAnZnVuY3Rpb24nXG59XG5cbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlLWZldGNoL2ZldGNoLWJsb2IvYmxvYi84YWI1ODdkMzQwODBkZTk0MTQwYjU0ZjA3MTY4NDUxZTdkMGI2NTVlL2luZGV4LmpzI0wyMjktTDI0MSAoTUlUIExpY2Vuc2UpXG5mdW5jdGlvbiBpc0Jsb2JMaWtlIChvYmplY3QpIHtcbiAgcmV0dXJuIChCbG9iICYmIG9iamVjdCBpbnN0YW5jZW9mIEJsb2IpIHx8IChcbiAgICBvYmplY3QgJiZcbiAgICB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgICh0eXBlb2Ygb2JqZWN0LnN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgdHlwZW9mIG9iamVjdC5hcnJheUJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAvXihCbG9ifEZpbGUpJC8udGVzdChvYmplY3RbU3ltYm9sLnRvU3RyaW5nVGFnXSlcbiAgKVxufVxuXG5mdW5jdGlvbiBidWlsZFVSTCAodXJsLCBxdWVyeVBhcmFtcykge1xuICBpZiAodXJsLmluY2x1ZGVzKCc/JykgfHwgdXJsLmluY2x1ZGVzKCcjJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1F1ZXJ5IHBhcmFtcyBjYW5ub3QgYmUgcGFzc2VkIHdoZW4gdXJsIGFscmVhZHkgY29udGFpbnMgXCI/XCIgb3IgXCIjXCIuJylcbiAgfVxuXG4gIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5KHF1ZXJ5UGFyYW1zKVxuXG4gIGlmIChzdHJpbmdpZmllZCkge1xuICAgIHVybCArPSAnPycgKyBzdHJpbmdpZmllZFxuICB9XG5cbiAgcmV0dXJuIHVybFxufVxuXG5mdW5jdGlvbiBwYXJzZVVSTCAodXJsKSB7XG4gIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgIHVybCA9IG5ldyBVUkwodXJsKVxuXG4gICAgaWYgKCEvXmh0dHBzPzovLnRlc3QodXJsLm9yaWdpbiB8fCB1cmwucHJvdG9jb2wpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIHByb3RvY29sOiB0aGUgVVJMIG11c3Qgc3RhcnQgd2l0aCBgaHR0cDpgIG9yIGBodHRwczpgLicpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVybFxuICB9XG5cbiAgaWYgKCF1cmwgfHwgdHlwZW9mIHVybCAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMOiBUaGUgVVJMIGFyZ3VtZW50IG11c3QgYmUgYSBub24tbnVsbCBvYmplY3QuJylcbiAgfVxuXG4gIGlmICghL15odHRwcz86Ly50ZXN0KHVybC5vcmlnaW4gfHwgdXJsLnByb3RvY29sKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignSW52YWxpZCBVUkwgcHJvdG9jb2w6IHRoZSBVUkwgbXVzdCBzdGFydCB3aXRoIGBodHRwOmAgb3IgYGh0dHBzOmAuJylcbiAgfVxuXG4gIGlmICghKHVybCBpbnN0YW5jZW9mIFVSTCkpIHtcbiAgICBpZiAodXJsLnBvcnQgIT0gbnVsbCAmJiB1cmwucG9ydCAhPT0gJycgJiYgIU51bWJlci5pc0Zpbml0ZShwYXJzZUludCh1cmwucG9ydCkpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMOiBwb3J0IG11c3QgYmUgYSB2YWxpZCBpbnRlZ2VyIG9yIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuJylcbiAgICB9XG5cbiAgICBpZiAodXJsLnBhdGggIT0gbnVsbCAmJiB0eXBlb2YgdXJsLnBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIHBhdGg6IHRoZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgbnVsbC91bmRlZmluZWQuJylcbiAgICB9XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lICE9IG51bGwgJiYgdHlwZW9mIHVybC5wYXRobmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignSW52YWxpZCBVUkwgcGF0aG5hbWU6IHRoZSBwYXRobmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG51bGwvdW5kZWZpbmVkLicpXG4gICAgfVxuXG4gICAgaWYgKHVybC5ob3N0bmFtZSAhPSBudWxsICYmIHR5cGVvZiB1cmwuaG9zdG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIGhvc3RuYW1lOiB0aGUgaG9zdG5hbWUgbXVzdCBiZSBhIHN0cmluZyBvciBudWxsL3VuZGVmaW5lZC4nKVxuICAgIH1cblxuICAgIGlmICh1cmwub3JpZ2luICE9IG51bGwgJiYgdHlwZW9mIHVybC5vcmlnaW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIG9yaWdpbjogdGhlIG9yaWdpbiBtdXN0IGJlIGEgc3RyaW5nIG9yIG51bGwvdW5kZWZpbmVkLicpXG4gICAgfVxuXG4gICAgY29uc3QgcG9ydCA9IHVybC5wb3J0ICE9IG51bGxcbiAgICAgID8gdXJsLnBvcnRcbiAgICAgIDogKHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MClcbiAgICBsZXQgb3JpZ2luID0gdXJsLm9yaWdpbiAhPSBudWxsXG4gICAgICA/IHVybC5vcmlnaW5cbiAgICAgIDogYCR7dXJsLnByb3RvY29sfS8vJHt1cmwuaG9zdG5hbWV9OiR7cG9ydH1gXG4gICAgbGV0IHBhdGggPSB1cmwucGF0aCAhPSBudWxsXG4gICAgICA/IHVybC5wYXRoXG4gICAgICA6IGAke3VybC5wYXRobmFtZSB8fCAnJ30ke3VybC5zZWFyY2ggfHwgJyd9YFxuXG4gICAgaWYgKG9yaWdpbi5lbmRzV2l0aCgnLycpKSB7XG4gICAgICBvcmlnaW4gPSBvcmlnaW4uc3Vic3RyaW5nKDAsIG9yaWdpbi5sZW5ndGggLSAxKVxuICAgIH1cblxuICAgIGlmIChwYXRoICYmICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcGF0aCA9IGAvJHtwYXRofWBcbiAgICB9XG4gICAgLy8gbmV3IFVSTChwYXRoLCBvcmlnaW4pIGlzIHVuc2FmZSB3aGVuIGBwYXRoYCBjb250YWlucyBhbiBhYnNvbHV0ZSBVUkxcbiAgICAvLyBGcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvVVJMOlxuICAgIC8vIElmIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJlbGF0aXZlIFVSTCwgc2Vjb25kIHBhcmFtIGlzIHJlcXVpcmVkLCBhbmQgd2lsbCBiZSB1c2VkIGFzIHRoZSBiYXNlIFVSTC5cbiAgICAvLyBJZiBmaXJzdCBwYXJhbWV0ZXIgaXMgYW4gYWJzb2x1dGUgVVJMLCBhIGdpdmVuIHNlY29uZCBwYXJhbSB3aWxsIGJlIGlnbm9yZWQuXG4gICAgdXJsID0gbmV3IFVSTChvcmlnaW4gKyBwYXRoKVxuICB9XG5cbiAgcmV0dXJuIHVybFxufVxuXG5mdW5jdGlvbiBwYXJzZU9yaWdpbiAodXJsKSB7XG4gIHVybCA9IHBhcnNlVVJMKHVybClcblxuICBpZiAodXJsLnBhdGhuYW1lICE9PSAnLycgfHwgdXJsLnNlYXJjaCB8fCB1cmwuaGFzaCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCB1cmwnKVxuICB9XG5cbiAgcmV0dXJuIHVybFxufVxuXG5mdW5jdGlvbiBnZXRIb3N0bmFtZSAoaG9zdCkge1xuICBpZiAoaG9zdFswXSA9PT0gJ1snKSB7XG4gICAgY29uc3QgaWR4ID0gaG9zdC5pbmRleE9mKCddJylcblxuICAgIGFzc2VydChpZHggIT09IC0xKVxuICAgIHJldHVybiBob3N0LnN1YnN0cmluZygxLCBpZHgpXG4gIH1cblxuICBjb25zdCBpZHggPSBob3N0LmluZGV4T2YoJzonKVxuICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuIGhvc3RcblxuICByZXR1cm4gaG9zdC5zdWJzdHJpbmcoMCwgaWR4KVxufVxuXG4vLyBJUCBhZGRyZXNzZXMgYXJlIG5vdCB2YWxpZCBzZXJ2ZXIgbmFtZXMgcGVyIFJGQzYwNjZcbi8vID4gQ3VycmVudGx5LCB0aGUgb25seSBzZXJ2ZXIgbmFtZXMgc3VwcG9ydGVkIGFyZSBETlMgaG9zdG5hbWVzXG5mdW5jdGlvbiBnZXRTZXJ2ZXJOYW1lIChob3N0KSB7XG4gIGlmICghaG9zdCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGhvc3QsICdzdHJpbmcnKVxuXG4gIGNvbnN0IHNlcnZlcm5hbWUgPSBnZXRIb3N0bmFtZShob3N0KVxuICBpZiAobmV0LmlzSVAoc2VydmVybmFtZSkpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIHJldHVybiBzZXJ2ZXJuYW1lXG59XG5cbmZ1bmN0aW9uIGRlZXBDbG9uZSAob2JqKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpXG59XG5cbmZ1bmN0aW9uIGlzQXN5bmNJdGVyYWJsZSAob2JqKSB7XG4gIHJldHVybiAhIShvYmogIT0gbnVsbCAmJiB0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJylcbn1cblxuZnVuY3Rpb24gaXNJdGVyYWJsZSAob2JqKSB7XG4gIHJldHVybiAhIShvYmogIT0gbnVsbCAmJiAodHlwZW9mIG9ialtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBvYmpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID09PSAnZnVuY3Rpb24nKSlcbn1cblxuZnVuY3Rpb24gYm9keUxlbmd0aCAoYm9keSkge1xuICBpZiAoYm9keSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDBcbiAgfSBlbHNlIGlmIChpc1N0cmVhbShib2R5KSkge1xuICAgIGNvbnN0IHN0YXRlID0gYm9keS5fcmVhZGFibGVTdGF0ZVxuICAgIHJldHVybiBzdGF0ZSAmJiBzdGF0ZS5vYmplY3RNb2RlID09PSBmYWxzZSAmJiBzdGF0ZS5lbmRlZCA9PT0gdHJ1ZSAmJiBOdW1iZXIuaXNGaW5pdGUoc3RhdGUubGVuZ3RoKVxuICAgICAgPyBzdGF0ZS5sZW5ndGhcbiAgICAgIDogbnVsbFxuICB9IGVsc2UgaWYgKGlzQmxvYkxpa2UoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5zaXplICE9IG51bGwgPyBib2R5LnNpemUgOiBudWxsXG4gIH0gZWxzZSBpZiAoaXNCdWZmZXIoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5ieXRlTGVuZ3RoXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0Rlc3Ryb3llZCAoc3RyZWFtKSB7XG4gIHJldHVybiAhc3RyZWFtIHx8ICEhKHN0cmVhbS5kZXN0cm95ZWQgfHwgc3RyZWFtW2tEZXN0cm95ZWRdKVxufVxuXG5mdW5jdGlvbiBpc1JlYWRhYmxlQWJvcnRlZCAoc3RyZWFtKSB7XG4gIGNvbnN0IHN0YXRlID0gc3RyZWFtICYmIHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICByZXR1cm4gaXNEZXN0cm95ZWQoc3RyZWFtKSAmJiBzdGF0ZSAmJiAhc3RhdGUuZW5kRW1pdHRlZFxufVxuXG5mdW5jdGlvbiBkZXN0cm95IChzdHJlYW0sIGVycikge1xuICBpZiAoc3RyZWFtID09IG51bGwgfHwgIWlzU3RyZWFtKHN0cmVhbSkgfHwgaXNEZXN0cm95ZWQoc3RyZWFtKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0uZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3RyZWFtKS5jb25zdHJ1Y3RvciA9PT0gSW5jb21pbmdNZXNzYWdlKSB7XG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM4NTA1L2ZpbGVzXG4gICAgICBzdHJlYW0uc29ja2V0ID0gbnVsbFxuICAgIH1cblxuICAgIHN0cmVhbS5kZXN0cm95KGVycilcbiAgfSBlbHNlIGlmIChlcnIpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKChzdHJlYW0sIGVycikgPT4ge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgIH0sIHN0cmVhbSwgZXJyKVxuICB9XG5cbiAgaWYgKHN0cmVhbS5kZXN0cm95ZWQgIT09IHRydWUpIHtcbiAgICBzdHJlYW1ba0Rlc3Ryb3llZF0gPSB0cnVlXG4gIH1cbn1cblxuY29uc3QgS0VFUEFMSVZFX1RJTUVPVVRfRVhQUiA9IC90aW1lb3V0PShcXGQrKS9cbmZ1bmN0aW9uIHBhcnNlS2VlcEFsaXZlVGltZW91dCAodmFsKSB7XG4gIGNvbnN0IG0gPSB2YWwudG9TdHJpbmcoKS5tYXRjaChLRUVQQUxJVkVfVElNRU9VVF9FWFBSKVxuICByZXR1cm4gbSA/IHBhcnNlSW50KG1bMV0sIDEwKSAqIDEwMDAgOiBudWxsXG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgaGVhZGVyIG5hbWUgYW5kIHJldHVybnMgaXRzIGxvd2VyY2FzZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSB2YWx1ZSBIZWFkZXIgbmFtZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gaGVhZGVyTmFtZVRvU3RyaW5nICh2YWx1ZSkge1xuICByZXR1cm4gaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmRbdmFsdWVdIHx8IHZhbHVlLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzIChoZWFkZXJzLCBvYmogPSB7fSkge1xuICAvLyBGb3IgSDIgc3VwcG9ydFxuICBpZiAoIUFycmF5LmlzQXJyYXkoaGVhZGVycykpIHJldHVybiBoZWFkZXJzXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgY29uc3Qga2V5ID0gaGVhZGVyc1tpXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICBsZXQgdmFsID0gb2JqW2tleV1cblxuICAgIGlmICghdmFsKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzW2kgKyAxXSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBoZWFkZXJzW2kgKyAxXS5tYXAoeCA9PiB4LnRvU3RyaW5nKCd1dGY4JykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpba2V5XSA9IGhlYWRlcnNbaSArIDFdLnRvU3RyaW5nKCd1dGY4JylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgdmFsID0gW3ZhbF1cbiAgICAgICAgb2JqW2tleV0gPSB2YWxcbiAgICAgIH1cbiAgICAgIHZhbC5wdXNoKGhlYWRlcnNbaSArIDFdLnRvU3RyaW5nKCd1dGY4JykpXG4gICAgfVxuICB9XG5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzQ2NTI4XG4gIGlmICgnY29udGVudC1sZW5ndGgnIGluIG9iaiAmJiAnY29udGVudC1kaXNwb3NpdGlvbicgaW4gb2JqKSB7XG4gICAgb2JqWydjb250ZW50LWRpc3Bvc2l0aW9uJ10gPSBCdWZmZXIuZnJvbShvYmpbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkudG9TdHJpbmcoJ2xhdGluMScpXG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbmZ1bmN0aW9uIHBhcnNlUmF3SGVhZGVycyAoaGVhZGVycykge1xuICBjb25zdCByZXQgPSBbXVxuICBsZXQgaGFzQ29udGVudExlbmd0aCA9IGZhbHNlXG4gIGxldCBjb250ZW50RGlzcG9zaXRpb25JZHggPSAtMVxuXG4gIGZvciAobGV0IG4gPSAwOyBuIDwgaGVhZGVycy5sZW5ndGg7IG4gKz0gMikge1xuICAgIGNvbnN0IGtleSA9IGhlYWRlcnNbbiArIDBdLnRvU3RyaW5nKClcbiAgICBjb25zdCB2YWwgPSBoZWFkZXJzW24gKyAxXS50b1N0cmluZygndXRmOCcpXG5cbiAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMTQgJiYgKGtleSA9PT0gJ2NvbnRlbnQtbGVuZ3RoJyB8fCBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtbGVuZ3RoJykpIHtcbiAgICAgIHJldC5wdXNoKGtleSwgdmFsKVxuICAgICAgaGFzQ29udGVudExlbmd0aCA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPT09IDE5ICYmIChrZXkgPT09ICdjb250ZW50LWRpc3Bvc2l0aW9uJyB8fCBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtZGlzcG9zaXRpb24nKSkge1xuICAgICAgY29udGVudERpc3Bvc2l0aW9uSWR4ID0gcmV0LnB1c2goa2V5LCB2YWwpIC0gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXQucHVzaChrZXksIHZhbClcbiAgICB9XG4gIH1cblxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvNDY1MjhcbiAgaWYgKGhhc0NvbnRlbnRMZW5ndGggJiYgY29udGVudERpc3Bvc2l0aW9uSWR4ICE9PSAtMSkge1xuICAgIHJldFtjb250ZW50RGlzcG9zaXRpb25JZHhdID0gQnVmZmVyLmZyb20ocmV0W2NvbnRlbnREaXNwb3NpdGlvbklkeF0pLnRvU3RyaW5nKCdsYXRpbjEnKVxuICB9XG5cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAoYnVmZmVyKSB7XG4gIC8vIFNlZSwgaHR0cHM6Ly9naXRodWIuY29tL21jb2xsaW5hL3VuZGljaS9wdWxsLzMxOVxuICByZXR1cm4gYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUhhbmRsZXIgKGhhbmRsZXIsIG1ldGhvZCwgdXBncmFkZSkge1xuICBpZiAoIWhhbmRsZXIgfHwgdHlwZW9mIGhhbmRsZXIgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoYW5kbGVyIG11c3QgYmUgYW4gb2JqZWN0JylcbiAgfVxuXG4gIGlmICh0eXBlb2YgaGFuZGxlci5vbkNvbm5lY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25Db25uZWN0IG1ldGhvZCcpXG4gIH1cblxuICBpZiAodHlwZW9mIGhhbmRsZXIub25FcnJvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkVycm9yIG1ldGhvZCcpXG4gIH1cblxuICBpZiAodHlwZW9mIGhhbmRsZXIub25Cb2R5U2VudCAhPT0gJ2Z1bmN0aW9uJyAmJiBoYW5kbGVyLm9uQm9keVNlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkJvZHlTZW50IG1ldGhvZCcpXG4gIH1cblxuICBpZiAodXBncmFkZSB8fCBtZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgIGlmICh0eXBlb2YgaGFuZGxlci5vblVwZ3JhZGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvblVwZ3JhZGUgbWV0aG9kJylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyLm9uSGVhZGVycyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9uSGVhZGVycyBtZXRob2QnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaGFuZGxlci5vbkRhdGEgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkRhdGEgbWV0aG9kJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhbmRsZXIub25Db21wbGV0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9uQ29tcGxldGUgbWV0aG9kJylcbiAgICB9XG4gIH1cbn1cblxuLy8gQSBib2R5IGlzIGRpc3R1cmJlZCBpZiBpdCBoYXMgYmVlbiByZWFkIGZyb20gYW5kIGl0IGNhbm5vdFxuLy8gYmUgcmUtdXNlZCB3aXRob3V0IGxvc2luZyBzdGF0ZSBvciBkYXRhLlxuZnVuY3Rpb24gaXNEaXN0dXJiZWQgKGJvZHkpIHtcbiAgcmV0dXJuICEhKGJvZHkgJiYgKFxuICAgIHN0cmVhbS5pc0Rpc3R1cmJlZFxuICAgICAgPyBzdHJlYW0uaXNEaXN0dXJiZWQoYm9keSkgfHwgYm9keVtrQm9keVVzZWRdIC8vIFRPRE8gKGZpeCk6IFdoeSBpcyBib2R5W2tCb2R5VXNlZF0gbmVlZGVkP1xuICAgICAgOiBib2R5W2tCb2R5VXNlZF0gfHxcbiAgICAgICAgYm9keS5yZWFkYWJsZURpZFJlYWQgfHxcbiAgICAgICAgKGJvZHkuX3JlYWRhYmxlU3RhdGUgJiYgYm9keS5fcmVhZGFibGVTdGF0ZS5kYXRhRW1pdHRlZCkgfHxcbiAgICAgICAgaXNSZWFkYWJsZUFib3J0ZWQoYm9keSlcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNFcnJvcmVkIChib2R5KSB7XG4gIHJldHVybiAhIShib2R5ICYmIChcbiAgICBzdHJlYW0uaXNFcnJvcmVkXG4gICAgICA/IHN0cmVhbS5pc0Vycm9yZWQoYm9keSlcbiAgICAgIDogL3N0YXRlOiAnZXJyb3JlZCcvLnRlc3Qobm9kZVV0aWwuaW5zcGVjdChib2R5KVxuICAgICAgKSkpXG59XG5cbmZ1bmN0aW9uIGlzUmVhZGFibGUgKGJvZHkpIHtcbiAgcmV0dXJuICEhKGJvZHkgJiYgKFxuICAgIHN0cmVhbS5pc1JlYWRhYmxlXG4gICAgICA/IHN0cmVhbS5pc1JlYWRhYmxlKGJvZHkpXG4gICAgICA6IC9zdGF0ZTogJ3JlYWRhYmxlJy8udGVzdChub2RlVXRpbC5pbnNwZWN0KGJvZHkpXG4gICAgICApKSlcbn1cblxuZnVuY3Rpb24gZ2V0U29ja2V0SW5mbyAoc29ja2V0KSB7XG4gIHJldHVybiB7XG4gICAgbG9jYWxBZGRyZXNzOiBzb2NrZXQubG9jYWxBZGRyZXNzLFxuICAgIGxvY2FsUG9ydDogc29ja2V0LmxvY2FsUG9ydCxcbiAgICByZW1vdGVBZGRyZXNzOiBzb2NrZXQucmVtb3RlQWRkcmVzcyxcbiAgICByZW1vdGVQb3J0OiBzb2NrZXQucmVtb3RlUG9ydCxcbiAgICByZW1vdGVGYW1pbHk6IHNvY2tldC5yZW1vdGVGYW1pbHksXG4gICAgdGltZW91dDogc29ja2V0LnRpbWVvdXQsXG4gICAgYnl0ZXNXcml0dGVuOiBzb2NrZXQuYnl0ZXNXcml0dGVuLFxuICAgIGJ5dGVzUmVhZDogc29ja2V0LmJ5dGVzUmVhZFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uICogY29udmVydEl0ZXJhYmxlVG9CdWZmZXIgKGl0ZXJhYmxlKSB7XG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgaXRlcmFibGUpIHtcbiAgICB5aWVsZCBCdWZmZXIuaXNCdWZmZXIoY2h1bmspID8gY2h1bmsgOiBCdWZmZXIuZnJvbShjaHVuaylcbiAgfVxufVxuXG5sZXQgUmVhZGFibGVTdHJlYW1cbmZ1bmN0aW9uIFJlYWRhYmxlU3RyZWFtRnJvbSAoaXRlcmFibGUpIHtcbiAgaWYgKCFSZWFkYWJsZVN0cmVhbSkge1xuICAgIFJlYWRhYmxlU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtL3dlYicpLlJlYWRhYmxlU3RyZWFtXG4gIH1cblxuICBpZiAoUmVhZGFibGVTdHJlYW0uZnJvbSkge1xuICAgIHJldHVybiBSZWFkYWJsZVN0cmVhbS5mcm9tKGNvbnZlcnRJdGVyYWJsZVRvQnVmZmVyKGl0ZXJhYmxlKSlcbiAgfVxuXG4gIGxldCBpdGVyYXRvclxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKFxuICAgIHtcbiAgICAgIGFzeW5jIHN0YXJ0ICgpIHtcbiAgICAgICAgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHB1bGwgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBidWYgPSBCdWZmZXIuaXNCdWZmZXIodmFsdWUpID8gdmFsdWUgOiBCdWZmZXIuZnJvbSh2YWx1ZSlcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udHJvbGxlci5kZXNpcmVkU2l6ZSA+IDBcbiAgICAgIH0sXG4gICAgICBhc3luYyBjYW5jZWwgKHJlYXNvbikge1xuICAgICAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4oKVxuICAgICAgfVxuICAgIH0sXG4gICAgMFxuICApXG59XG5cbi8vIFRoZSBjaHVuayBzaG91bGQgYmUgYSBGb3JtRGF0YSBpbnN0YW5jZSBhbmQgY29udGFpbnNcbi8vIGFsbCB0aGUgcmVxdWlyZWQgbWV0aG9kcy5cbmZ1bmN0aW9uIGlzRm9ybURhdGFMaWtlIChvYmplY3QpIHtcbiAgcmV0dXJuIChcbiAgICBvYmplY3QgJiZcbiAgICB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiBvYmplY3QuYXBwZW5kID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iamVjdC5kZWxldGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygb2JqZWN0LmdldCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmplY3QuZ2V0QWxsID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iamVjdC5oYXMgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygb2JqZWN0LnNldCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIG9iamVjdFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnRm9ybURhdGEnXG4gIClcbn1cblxuZnVuY3Rpb24gdGhyb3dJZkFib3J0ZWQgKHNpZ25hbCkge1xuICBpZiAoIXNpZ25hbCkgeyByZXR1cm4gfVxuICBpZiAodHlwZW9mIHNpZ25hbC50aHJvd0lmQWJvcnRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNpZ25hbC50aHJvd0lmQWJvcnRlZCgpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAvLyBET01FeGNlcHRpb24gbm90IGF2YWlsYWJsZSA8IHYxNy4wLjBcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCcpXG4gICAgICBlcnIubmFtZSA9ICdBYm9ydEVycm9yJ1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZEFib3J0TGlzdGVuZXIgKHNpZ25hbCwgbGlzdGVuZXIpIHtcbiAgaWYgKCdhZGRFdmVudExpc3RlbmVyJyBpbiBzaWduYWwpIHtcbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0pXG4gICAgcmV0dXJuICgpID0+IHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyKVxuICB9XG4gIHNpZ25hbC5hZGRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcilcbiAgcmV0dXJuICgpID0+IHNpZ25hbC5yZW1vdmVMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcilcbn1cblxuY29uc3QgaGFzVG9XZWxsRm9ybWVkID0gISFTdHJpbmcucHJvdG90eXBlLnRvV2VsbEZvcm1lZFxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqL1xuZnVuY3Rpb24gdG9VU1ZTdHJpbmcgKHZhbCkge1xuICBpZiAoaGFzVG9XZWxsRm9ybWVkKSB7XG4gICAgcmV0dXJuIGAke3ZhbH1gLnRvV2VsbEZvcm1lZCgpXG4gIH0gZWxzZSBpZiAobm9kZVV0aWwudG9VU1ZTdHJpbmcpIHtcbiAgICByZXR1cm4gbm9kZVV0aWwudG9VU1ZTdHJpbmcodmFsKVxuICB9XG5cbiAgcmV0dXJuIGAke3ZhbH1gXG59XG5cbi8vIFBhcnNlZCBhY2NvcmRpbmdseSB0byBSRkMgOTExMFxuLy8gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzkxMTAjZmllbGQuY29udGVudC1yYW5nZVxuZnVuY3Rpb24gcGFyc2VSYW5nZUhlYWRlciAocmFuZ2UpIHtcbiAgaWYgKHJhbmdlID09IG51bGwgfHwgcmFuZ2UgPT09ICcnKSByZXR1cm4geyBzdGFydDogMCwgZW5kOiBudWxsLCBzaXplOiBudWxsIH1cblxuICBjb25zdCBtID0gcmFuZ2UgPyByYW5nZS5tYXRjaCgvXmJ5dGVzIChcXGQrKS0oXFxkKylcXC8oXFxkKyk/JC8pIDogbnVsbFxuICByZXR1cm4gbVxuICAgID8ge1xuICAgICAgICBzdGFydDogcGFyc2VJbnQobVsxXSksXG4gICAgICAgIGVuZDogbVsyXSA/IHBhcnNlSW50KG1bMl0pIDogbnVsbCxcbiAgICAgICAgc2l6ZTogbVszXSA/IHBhcnNlSW50KG1bM10pIDogbnVsbFxuICAgICAgfVxuICAgIDogbnVsbFxufVxuXG5jb25zdCBrRW51bWVyYWJsZVByb3BlcnR5ID0gT2JqZWN0LmNyZWF0ZShudWxsKVxua0VudW1lcmFibGVQcm9wZXJ0eS5lbnVtZXJhYmxlID0gdHJ1ZVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbm9wLFxuICBpc0Rpc3R1cmJlZCxcbiAgaXNFcnJvcmVkLFxuICBpc1JlYWRhYmxlLFxuICB0b1VTVlN0cmluZyxcbiAgaXNSZWFkYWJsZUFib3J0ZWQsXG4gIGlzQmxvYkxpa2UsXG4gIHBhcnNlT3JpZ2luLFxuICBwYXJzZVVSTCxcbiAgZ2V0U2VydmVyTmFtZSxcbiAgaXNTdHJlYW0sXG4gIGlzSXRlcmFibGUsXG4gIGlzQXN5bmNJdGVyYWJsZSxcbiAgaXNEZXN0cm95ZWQsXG4gIGhlYWRlck5hbWVUb1N0cmluZyxcbiAgcGFyc2VSYXdIZWFkZXJzLFxuICBwYXJzZUhlYWRlcnMsXG4gIHBhcnNlS2VlcEFsaXZlVGltZW91dCxcbiAgZGVzdHJveSxcbiAgYm9keUxlbmd0aCxcbiAgZGVlcENsb25lLFxuICBSZWFkYWJsZVN0cmVhbUZyb20sXG4gIGlzQnVmZmVyLFxuICB2YWxpZGF0ZUhhbmRsZXIsXG4gIGdldFNvY2tldEluZm8sXG4gIGlzRm9ybURhdGFMaWtlLFxuICBidWlsZFVSTCxcbiAgdGhyb3dJZkFib3J0ZWQsXG4gIGFkZEFib3J0TGlzdGVuZXIsXG4gIHBhcnNlUmFuZ2VIZWFkZXIsXG4gIG5vZGVNYWpvcixcbiAgbm9kZU1pbm9yLFxuICBub2RlSGFzQXV0b1NlbGVjdEZhbWlseTogbm9kZU1ham9yID4gMTggfHwgKG5vZGVNYWpvciA9PT0gMTggJiYgbm9kZU1pbm9yID49IDEzKSxcbiAgc2FmZUhUVFBNZXRob2RzOiBbJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnVFJBQ0UnXVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5sZXQgZmFzdE5vdyA9IERhdGUubm93KClcbmxldCBmYXN0Tm93VGltZW91dFxuXG5jb25zdCBmYXN0VGltZXJzID0gW11cblxuZnVuY3Rpb24gb25UaW1lb3V0ICgpIHtcbiAgZmFzdE5vdyA9IERhdGUubm93KClcblxuICBsZXQgbGVuID0gZmFzdFRpbWVycy5sZW5ndGhcbiAgbGV0IGlkeCA9IDBcbiAgd2hpbGUgKGlkeCA8IGxlbikge1xuICAgIGNvbnN0IHRpbWVyID0gZmFzdFRpbWVyc1tpZHhdXG5cbiAgICBpZiAodGltZXIuc3RhdGUgPT09IDApIHtcbiAgICAgIHRpbWVyLnN0YXRlID0gZmFzdE5vdyArIHRpbWVyLmRlbGF5XG4gICAgfSBlbHNlIGlmICh0aW1lci5zdGF0ZSA+IDAgJiYgZmFzdE5vdyA+PSB0aW1lci5zdGF0ZSkge1xuICAgICAgdGltZXIuc3RhdGUgPSAtMVxuICAgICAgdGltZXIuY2FsbGJhY2sodGltZXIub3BhcXVlKVxuICAgIH1cblxuICAgIGlmICh0aW1lci5zdGF0ZSA9PT0gLTEpIHtcbiAgICAgIHRpbWVyLnN0YXRlID0gLTJcbiAgICAgIGlmIChpZHggIT09IGxlbiAtIDEpIHtcbiAgICAgICAgZmFzdFRpbWVyc1tpZHhdID0gZmFzdFRpbWVycy5wb3AoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFzdFRpbWVycy5wb3AoKVxuICAgICAgfVxuICAgICAgbGVuIC09IDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWR4ICs9IDFcbiAgICB9XG4gIH1cblxuICBpZiAoZmFzdFRpbWVycy5sZW5ndGggPiAwKSB7XG4gICAgcmVmcmVzaFRpbWVvdXQoKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlZnJlc2hUaW1lb3V0ICgpIHtcbiAgaWYgKGZhc3ROb3dUaW1lb3V0ICYmIGZhc3ROb3dUaW1lb3V0LnJlZnJlc2gpIHtcbiAgICBmYXN0Tm93VGltZW91dC5yZWZyZXNoKClcbiAgfSBlbHNlIHtcbiAgICBjbGVhclRpbWVvdXQoZmFzdE5vd1RpbWVvdXQpXG4gICAgZmFzdE5vd1RpbWVvdXQgPSBzZXRUaW1lb3V0KG9uVGltZW91dCwgMWUzKVxuICAgIGlmIChmYXN0Tm93VGltZW91dC51bnJlZikge1xuICAgICAgZmFzdE5vd1RpbWVvdXQudW5yZWYoKVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBUaW1lb3V0IHtcbiAgY29uc3RydWN0b3IgKGNhbGxiYWNrLCBkZWxheSwgb3BhcXVlKSB7XG4gICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgdGhpcy5kZWxheSA9IGRlbGF5XG4gICAgdGhpcy5vcGFxdWUgPSBvcGFxdWVcblxuICAgIC8vICAtMiBub3QgaW4gdGltZXIgbGlzdFxuICAgIC8vICAtMSBpbiB0aW1lciBsaXN0IGJ1dCBpbmFjdGl2ZVxuICAgIC8vICAgMCBpbiB0aW1lciBsaXN0IHdhaXRpbmcgZm9yIHRpbWVcbiAgICAvLyA+IDAgaW4gdGltZXIgbGlzdCB3YWl0aW5nIGZvciB0aW1lIHRvIGV4cGlyZVxuICAgIHRoaXMuc3RhdGUgPSAtMlxuXG4gICAgdGhpcy5yZWZyZXNoKClcbiAgfVxuXG4gIHJlZnJlc2ggKCkge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAtMikge1xuICAgICAgZmFzdFRpbWVycy5wdXNoKHRoaXMpXG4gICAgICBpZiAoIWZhc3ROb3dUaW1lb3V0IHx8IGZhc3RUaW1lcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJlZnJlc2hUaW1lb3V0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gMFxuICB9XG5cbiAgY2xlYXIgKCkge1xuICAgIHRoaXMuc3RhdGUgPSAtMVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXRUaW1lb3V0IChjYWxsYmFjaywgZGVsYXksIG9wYXF1ZSkge1xuICAgIHJldHVybiBkZWxheSA8IDFlM1xuICAgICAgPyBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkZWxheSwgb3BhcXVlKVxuICAgICAgOiBuZXcgVGltZW91dChjYWxsYmFjaywgZGVsYXksIG9wYXF1ZSlcbiAgfSxcbiAgY2xlYXJUaW1lb3V0ICh0aW1lb3V0KSB7XG4gICAgaWYgKHRpbWVvdXQgaW5zdGFuY2VvZiBUaW1lb3V0KSB7XG4gICAgICB0aW1lb3V0LmNsZWFyKClcbiAgICB9IGVsc2Uge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgfVxuICB9XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogQ29weXJpZ2h0IEJyaWFuIFdoaXRlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21zY2RleC9zdHJlYW1zZWFyY2hcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HU1xuICogSU4gVEhFIFNPRlRXQVJFLlxuICpcbiAqIEJhc2VkIGhlYXZpbHkgb24gdGhlIFN0cmVhbWluZyBCb3llci1Nb29yZS1Ib3JzcG9vbCBDKysgaW1wbGVtZW50YXRpb25cbiAqIGJ5IEhvbmdsaSBMYWkgYXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9Gb29CYXJXaWRnZXQvYm95ZXItbW9vcmUtaG9yc3Bvb2xcbiAqL1xuY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnbm9kZTpldmVudHMnKS5FdmVudEVtaXR0ZXJcbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnbm9kZTp1dGlsJykuaW5oZXJpdHNcblxuZnVuY3Rpb24gU0JNSCAobmVlZGxlKSB7XG4gIGlmICh0eXBlb2YgbmVlZGxlID09PSAnc3RyaW5nJykge1xuICAgIG5lZWRsZSA9IEJ1ZmZlci5mcm9tKG5lZWRsZSlcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKG5lZWRsZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgbmVlZGxlIGhhcyB0byBiZSBhIFN0cmluZyBvciBhIEJ1ZmZlci4nKVxuICB9XG5cbiAgY29uc3QgbmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aFxuXG4gIGlmIChuZWVkbGVMZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBuZWVkbGUgY2Fubm90IGJlIGFuIGVtcHR5IFN0cmluZy9CdWZmZXIuJylcbiAgfVxuXG4gIGlmIChuZWVkbGVMZW5ndGggPiAyNTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBuZWVkbGUgY2Fubm90IGhhdmUgYSBsZW5ndGggYmlnZ2VyIHRoYW4gMjU2LicpXG4gIH1cblxuICB0aGlzLm1heE1hdGNoZXMgPSBJbmZpbml0eVxuICB0aGlzLm1hdGNoZXMgPSAwXG5cbiAgdGhpcy5fb2NjID0gbmV3IEFycmF5KDI1NilcbiAgICAuZmlsbChuZWVkbGVMZW5ndGgpIC8vIEluaXRpYWxpemUgb2NjdXJyZW5jZSB0YWJsZS5cbiAgdGhpcy5fbG9va2JlaGluZF9zaXplID0gMFxuICB0aGlzLl9uZWVkbGUgPSBuZWVkbGVcbiAgdGhpcy5fYnVmcG9zID0gMFxuXG4gIHRoaXMuX2xvb2tiZWhpbmQgPSBCdWZmZXIuYWxsb2MobmVlZGxlTGVuZ3RoKVxuXG4gIC8vIFBvcHVsYXRlIG9jY3VycmVuY2UgdGFibGUgd2l0aCBhbmFseXNpcyBvZiB0aGUgbmVlZGxlLFxuICAvLyBpZ25vcmluZyBsYXN0IGxldHRlci5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWVkbGVMZW5ndGggLSAxOyArK2kpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby12YXJcbiAgICB0aGlzLl9vY2NbbmVlZGxlW2ldXSA9IG5lZWRsZUxlbmd0aCAtIDEgLSBpXG4gIH1cbn1cbmluaGVyaXRzKFNCTUgsIEV2ZW50RW1pdHRlcilcblxuU0JNSC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSA9IDBcbiAgdGhpcy5tYXRjaGVzID0gMFxuICB0aGlzLl9idWZwb3MgPSAwXG59XG5cblNCTUgucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIHBvcykge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCAnYmluYXJ5JylcbiAgfVxuICBjb25zdCBjaGxlbiA9IGNodW5rLmxlbmd0aFxuICB0aGlzLl9idWZwb3MgPSBwb3MgfHwgMFxuICBsZXQgclxuICB3aGlsZSAociAhPT0gY2hsZW4gJiYgdGhpcy5tYXRjaGVzIDwgdGhpcy5tYXhNYXRjaGVzKSB7IHIgPSB0aGlzLl9zYm1oX2ZlZWQoY2h1bmspIH1cbiAgcmV0dXJuIHJcbn1cblxuU0JNSC5wcm90b3R5cGUuX3NibWhfZmVlZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoXG4gIGNvbnN0IG5lZWRsZSA9IHRoaXMuX25lZWRsZVxuICBjb25zdCBuZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoXG4gIGNvbnN0IGxhc3ROZWVkbGVDaGFyID0gbmVlZGxlW25lZWRsZUxlbmd0aCAtIDFdXG5cbiAgLy8gUG9zaXRpdmU6IHBvaW50cyB0byBhIHBvc2l0aW9uIGluIGBkYXRhYFxuICAvLyAgICAgICAgICAgcG9zID09IDMgcG9pbnRzIHRvIGRhdGFbM11cbiAgLy8gTmVnYXRpdmU6IHBvaW50cyB0byBhIHBvc2l0aW9uIGluIHRoZSBsb29rYmVoaW5kIGJ1ZmZlclxuICAvLyAgICAgICAgICAgcG9zID09IC0yIHBvaW50cyB0byBsb29rYmVoaW5kW2xvb2tiZWhpbmRfc2l6ZSAtIDJdXG4gIGxldCBwb3MgPSAtdGhpcy5fbG9va2JlaGluZF9zaXplXG4gIGxldCBjaFxuXG4gIGlmIChwb3MgPCAwKSB7XG4gICAgLy8gTG9va2JlaGluZCBidWZmZXIgaXMgbm90IGVtcHR5LiBQZXJmb3JtIEJveWVyLU1vb3JlLUhvcnNwb29sXG4gICAgLy8gc2VhcmNoIHdpdGggY2hhcmFjdGVyIGxvb2t1cCBjb2RlIHRoYXQgY29uc2lkZXJzIGJvdGggdGhlXG4gICAgLy8gbG9va2JlaGluZCBidWZmZXIgYW5kIHRoZSBjdXJyZW50IHJvdW5kJ3MgaGF5c3RhY2sgZGF0YS5cbiAgICAvL1xuICAgIC8vIExvb3AgdW50aWxcbiAgICAvLyAgIHRoZXJlIGlzIGEgbWF0Y2guXG4gICAgLy8gb3IgdW50aWxcbiAgICAvLyAgIHdlJ3ZlIG1vdmVkIHBhc3QgdGhlIHBvc2l0aW9uIHRoYXQgcmVxdWlyZXMgdGhlXG4gICAgLy8gICBsb29rYmVoaW5kIGJ1ZmZlci4gSW4gdGhpcyBjYXNlIHdlIHN3aXRjaCB0byB0aGVcbiAgICAvLyAgIG9wdGltaXplZCBsb29wLlxuICAgIC8vIG9yIHVudGlsXG4gICAgLy8gICB0aGUgY2hhcmFjdGVyIHRvIGxvb2sgYXQgbGllcyBvdXRzaWRlIHRoZSBoYXlzdGFjay5cbiAgICB3aGlsZSAocG9zIDwgMCAmJiBwb3MgPD0gbGVuIC0gbmVlZGxlTGVuZ3RoKSB7XG4gICAgICBjaCA9IHRoaXMuX3NibWhfbG9va3VwX2NoYXIoZGF0YSwgcG9zICsgbmVlZGxlTGVuZ3RoIC0gMSlcblxuICAgICAgaWYgKFxuICAgICAgICBjaCA9PT0gbGFzdE5lZWRsZUNoYXIgJiZcbiAgICAgICAgdGhpcy5fc2JtaF9tZW1jbXAoZGF0YSwgcG9zLCBuZWVkbGVMZW5ndGggLSAxKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSA9IDBcbiAgICAgICAgKyt0aGlzLm1hdGNoZXNcbiAgICAgICAgdGhpcy5lbWl0KCdpbmZvJywgdHJ1ZSlcblxuICAgICAgICByZXR1cm4gKHRoaXMuX2J1ZnBvcyA9IHBvcyArIG5lZWRsZUxlbmd0aClcbiAgICAgIH1cbiAgICAgIHBvcyArPSB0aGlzLl9vY2NbY2hdXG4gICAgfVxuXG4gICAgLy8gTm8gbWF0Y2guXG5cbiAgICBpZiAocG9zIDwgMCkge1xuICAgICAgLy8gVGhlcmUncyB0b28gZmV3IGRhdGEgZm9yIEJveWVyLU1vb3JlLUhvcnNwb29sIHRvIHJ1bixcbiAgICAgIC8vIHNvIGxldCdzIHVzZSBhIGRpZmZlcmVudCBhbGdvcml0aG0gdG8gc2tpcCBhcyBtdWNoIGFzXG4gICAgICAvLyB3ZSBjYW4uXG4gICAgICAvLyBGb3J3YXJkIHBvcyB1bnRpbFxuICAgICAgLy8gICB0aGUgdHJhaWxpbmcgcGFydCBvZiBsb29rYmVoaW5kICsgZGF0YVxuICAgICAgLy8gICBsb29rcyBsaWtlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5lZWRsZVxuICAgICAgLy8gb3IgdW50aWxcbiAgICAgIC8vICAgcG9zID09IDBcbiAgICAgIHdoaWxlIChwb3MgPCAwICYmICF0aGlzLl9zYm1oX21lbWNtcChkYXRhLCBwb3MsIGxlbiAtIHBvcykpIHsgKytwb3MgfVxuICAgIH1cblxuICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgLy8gRGlzY2FyZCBsb29rYmVoaW5kIGJ1ZmZlci5cbiAgICAgIHRoaXMuZW1pdCgnaW5mbycsIGZhbHNlLCB0aGlzLl9sb29rYmVoaW5kLCAwLCB0aGlzLl9sb29rYmVoaW5kX3NpemUpXG4gICAgICB0aGlzLl9sb29rYmVoaW5kX3NpemUgPSAwXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEN1dCBvZmYgcGFydCBvZiB0aGUgbG9va2JlaGluZCBidWZmZXIgdGhhdCBoYXNcbiAgICAgIC8vIGJlZW4gcHJvY2Vzc2VkIGFuZCBhcHBlbmQgdGhlIGVudGlyZSBoYXlzdGFja1xuICAgICAgLy8gaW50byBpdC5cbiAgICAgIGNvbnN0IGJ5dGVzVG9DdXRPZmYgPSB0aGlzLl9sb29rYmVoaW5kX3NpemUgKyBwb3NcbiAgICAgIGlmIChieXRlc1RvQ3V0T2ZmID4gMCkge1xuICAgICAgICAvLyBUaGUgY3V0IG9mZiBkYXRhIGlzIGd1YXJhbnRlZWQgbm90IHRvIGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAgICAgICAgdGhpcy5lbWl0KCdpbmZvJywgZmFsc2UsIHRoaXMuX2xvb2tiZWhpbmQsIDAsIGJ5dGVzVG9DdXRPZmYpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvb2tiZWhpbmQuY29weSh0aGlzLl9sb29rYmVoaW5kLCAwLCBieXRlc1RvQ3V0T2ZmLFxuICAgICAgICB0aGlzLl9sb29rYmVoaW5kX3NpemUgLSBieXRlc1RvQ3V0T2ZmKVxuICAgICAgdGhpcy5fbG9va2JlaGluZF9zaXplIC09IGJ5dGVzVG9DdXRPZmZcblxuICAgICAgZGF0YS5jb3B5KHRoaXMuX2xvb2tiZWhpbmQsIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSlcbiAgICAgIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSArPSBsZW5cblxuICAgICAgdGhpcy5fYnVmcG9zID0gbGVuXG4gICAgICByZXR1cm4gbGVuXG4gICAgfVxuICB9XG5cbiAgcG9zICs9IChwb3MgPj0gMCkgKiB0aGlzLl9idWZwb3NcblxuICAvLyBMb29rYmVoaW5kIGJ1ZmZlciBpcyBub3cgZW1wdHkuIFdlIG9ubHkgbmVlZCB0byBjaGVjayBpZiB0aGVcbiAgLy8gbmVlZGxlIGlzIGluIHRoZSBoYXlzdGFjay5cbiAgaWYgKGRhdGEuaW5kZXhPZihuZWVkbGUsIHBvcykgIT09IC0xKSB7XG4gICAgcG9zID0gZGF0YS5pbmRleE9mKG5lZWRsZSwgcG9zKVxuICAgICsrdGhpcy5tYXRjaGVzXG4gICAgaWYgKHBvcyA+IDApIHsgdGhpcy5lbWl0KCdpbmZvJywgdHJ1ZSwgZGF0YSwgdGhpcy5fYnVmcG9zLCBwb3MpIH0gZWxzZSB7IHRoaXMuZW1pdCgnaW5mbycsIHRydWUpIH1cblxuICAgIHJldHVybiAodGhpcy5fYnVmcG9zID0gcG9zICsgbmVlZGxlTGVuZ3RoKVxuICB9IGVsc2Uge1xuICAgIHBvcyA9IGxlbiAtIG5lZWRsZUxlbmd0aFxuICB9XG5cbiAgLy8gVGhlcmUgd2FzIG5vIG1hdGNoLiBJZiB0aGVyZSdzIHRyYWlsaW5nIGhheXN0YWNrIGRhdGEgdGhhdCB3ZSBjYW5ub3RcbiAgLy8gbWF0Y2ggeWV0IHVzaW5nIHRoZSBCb3llci1Nb29yZS1Ib3JzcG9vbCBhbGdvcml0aG0gKGJlY2F1c2UgdGhlIHRyYWlsaW5nXG4gIC8vIGRhdGEgaXMgbGVzcyB0aGFuIHRoZSBuZWVkbGUgc2l6ZSkgdGhlbiBtYXRjaCB1c2luZyBhIG1vZGlmaWVkXG4gIC8vIGFsZ29yaXRobSB0aGF0IHN0YXJ0cyBtYXRjaGluZyBmcm9tIHRoZSBiZWdpbm5pbmcgaW5zdGVhZCBvZiB0aGUgZW5kLlxuICAvLyBXaGF0ZXZlciB0cmFpbGluZyBkYXRhIGlzIGxlZnQgYWZ0ZXIgcnVubmluZyB0aGlzIGFsZ29yaXRobSBpcyBhZGRlZCB0b1xuICAvLyB0aGUgbG9va2JlaGluZCBidWZmZXIuXG4gIHdoaWxlIChcbiAgICBwb3MgPCBsZW4gJiZcbiAgICAoXG4gICAgICBkYXRhW3Bvc10gIT09IG5lZWRsZVswXSB8fFxuICAgICAgKFxuICAgICAgICAoQnVmZmVyLmNvbXBhcmUoXG4gICAgICAgICAgZGF0YS5zdWJhcnJheShwb3MsIHBvcyArIGxlbiAtIHBvcyksXG4gICAgICAgICAgbmVlZGxlLnN1YmFycmF5KDAsIGxlbiAtIHBvcylcbiAgICAgICAgKSAhPT0gMClcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgICsrcG9zXG4gIH1cbiAgaWYgKHBvcyA8IGxlbikge1xuICAgIGRhdGEuY29weSh0aGlzLl9sb29rYmVoaW5kLCAwLCBwb3MsIHBvcyArIChsZW4gLSBwb3MpKVxuICAgIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSA9IGxlbiAtIHBvc1xuICB9XG5cbiAgLy8gRXZlcnl0aGluZyB1bnRpbCBwb3MgaXMgZ3VhcmFudGVlZCBub3QgdG8gY29udGFpbiBuZWVkbGUgZGF0YS5cbiAgaWYgKHBvcyA+IDApIHsgdGhpcy5lbWl0KCdpbmZvJywgZmFsc2UsIGRhdGEsIHRoaXMuX2J1ZnBvcywgcG9zIDwgbGVuID8gcG9zIDogbGVuKSB9XG5cbiAgdGhpcy5fYnVmcG9zID0gbGVuXG4gIHJldHVybiBsZW5cbn1cblxuU0JNSC5wcm90b3R5cGUuX3NibWhfbG9va3VwX2NoYXIgPSBmdW5jdGlvbiAoZGF0YSwgcG9zKSB7XG4gIHJldHVybiAocG9zIDwgMClcbiAgICA/IHRoaXMuX2xvb2tiZWhpbmRbdGhpcy5fbG9va2JlaGluZF9zaXplICsgcG9zXVxuICAgIDogZGF0YVtwb3NdXG59XG5cblNCTUgucHJvdG90eXBlLl9zYm1oX21lbWNtcCA9IGZ1bmN0aW9uIChkYXRhLCBwb3MsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdmFyXG4gICAgaWYgKHRoaXMuX3NibWhfbG9va3VwX2NoYXIoZGF0YSwgcG9zICsgaSkgIT09IHRoaXMuX25lZWRsZVtpXSkgeyByZXR1cm4gZmFsc2UgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU0JNSFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ25vZGU6dXRpbCcpLmluaGVyaXRzXG5jb25zdCBSZWFkYWJsZVN0cmVhbSA9IHJlcXVpcmUoJ25vZGU6c3RyZWFtJykuUmVhZGFibGVcblxuZnVuY3Rpb24gUGFydFN0cmVhbSAob3B0cykge1xuICBSZWFkYWJsZVN0cmVhbS5jYWxsKHRoaXMsIG9wdHMpXG59XG5pbmhlcml0cyhQYXJ0U3RyZWFtLCBSZWFkYWJsZVN0cmVhbSlcblxuUGFydFN0cmVhbS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge31cblxubW9kdWxlLmV4cG9ydHMgPSBQYXJ0U3RyZWFtXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0TGltaXQgKGxpbWl0cywgbmFtZSwgZGVmYXVsdExpbWl0KSB7XG4gIGlmIChcbiAgICAhbGltaXRzIHx8XG4gICAgbGltaXRzW25hbWVdID09PSB1bmRlZmluZWQgfHxcbiAgICBsaW1pdHNbbmFtZV0gPT09IG51bGxcbiAgKSB7IHJldHVybiBkZWZhdWx0TGltaXQgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgbGltaXRzW25hbWVdICE9PSAnbnVtYmVyJyB8fFxuICAgIGlzTmFOKGxpbWl0c1tuYW1lXSlcbiAgKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0xpbWl0ICcgKyBuYW1lICsgJyBpcyBub3QgYSB2YWxpZCBudW1iZXInKSB9XG5cbiAgcmV0dXJuIGxpbWl0c1tuYW1lXVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdub2RlOmV2ZW50cycpLkV2ZW50RW1pdHRlclxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdub2RlOnV0aWwnKS5pbmhlcml0c1xuY29uc3QgZ2V0TGltaXQgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdXRpbHMvZ2V0TGltaXQnKVxuXG5jb25zdCBTdHJlYW1TZWFyY2ggPSByZXF1aXJlKCcuLi8uLi9zdHJlYW1zZWFyY2gvc2JtaCcpXG5cbmNvbnN0IEJfRENSTEYgPSBCdWZmZXIuZnJvbSgnXFxyXFxuXFxyXFxuJylcbmNvbnN0IFJFX0NSTEYgPSAvXFxyXFxuL2dcbmNvbnN0IFJFX0hEUiA9IC9eKFteOl0rKTpbIFxcdF0/KFtcXHgwMC1cXHhGRl0rKT8kLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuZnVuY3Rpb24gSGVhZGVyUGFyc2VyIChjZmcpIHtcbiAgRXZlbnRFbWl0dGVyLmNhbGwodGhpcylcblxuICBjZmcgPSBjZmcgfHwge31cbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgdGhpcy5ucmVhZCA9IDBcbiAgdGhpcy5tYXhlZCA9IGZhbHNlXG4gIHRoaXMubnBhaXJzID0gMFxuICB0aGlzLm1heEhlYWRlclBhaXJzID0gZ2V0TGltaXQoY2ZnLCAnbWF4SGVhZGVyUGFpcnMnLCAyMDAwKVxuICB0aGlzLm1heEhlYWRlclNpemUgPSBnZXRMaW1pdChjZmcsICdtYXhIZWFkZXJTaXplJywgODAgKiAxMDI0KVxuICB0aGlzLmJ1ZmZlciA9ICcnXG4gIHRoaXMuaGVhZGVyID0ge31cbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlXG4gIHRoaXMuc3MgPSBuZXcgU3RyZWFtU2VhcmNoKEJfRENSTEYpXG4gIHRoaXMuc3Mub24oJ2luZm8nLCBmdW5jdGlvbiAoaXNNYXRjaCwgZGF0YSwgc3RhcnQsIGVuZCkge1xuICAgIGlmIChkYXRhICYmICFzZWxmLm1heGVkKSB7XG4gICAgICBpZiAoc2VsZi5ucmVhZCArIGVuZCAtIHN0YXJ0ID49IHNlbGYubWF4SGVhZGVyU2l6ZSkge1xuICAgICAgICBlbmQgPSBzZWxmLm1heEhlYWRlclNpemUgLSBzZWxmLm5yZWFkICsgc3RhcnRcbiAgICAgICAgc2VsZi5ucmVhZCA9IHNlbGYubWF4SGVhZGVyU2l6ZVxuICAgICAgICBzZWxmLm1heGVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIHsgc2VsZi5ucmVhZCArPSAoZW5kIC0gc3RhcnQpIH1cblxuICAgICAgc2VsZi5idWZmZXIgKz0gZGF0YS50b1N0cmluZygnYmluYXJ5Jywgc3RhcnQsIGVuZClcbiAgICB9XG4gICAgaWYgKGlzTWF0Y2gpIHsgc2VsZi5fZmluaXNoKCkgfVxuICB9KVxufVxuaW5oZXJpdHMoSGVhZGVyUGFyc2VyLCBFdmVudEVtaXR0ZXIpXG5cbkhlYWRlclBhcnNlci5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IHIgPSB0aGlzLnNzLnB1c2goZGF0YSlcbiAgaWYgKHRoaXMuZmluaXNoZWQpIHsgcmV0dXJuIHIgfVxufVxuXG5IZWFkZXJQYXJzZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbmlzaGVkID0gZmFsc2VcbiAgdGhpcy5idWZmZXIgPSAnJ1xuICB0aGlzLmhlYWRlciA9IHt9XG4gIHRoaXMuc3MucmVzZXQoKVxufVxuXG5IZWFkZXJQYXJzZXIucHJvdG90eXBlLl9maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmJ1ZmZlcikgeyB0aGlzLl9wYXJzZUhlYWRlcigpIH1cbiAgdGhpcy5zcy5tYXRjaGVzID0gdGhpcy5zcy5tYXhNYXRjaGVzXG4gIGNvbnN0IGhlYWRlciA9IHRoaXMuaGVhZGVyXG4gIHRoaXMuaGVhZGVyID0ge31cbiAgdGhpcy5idWZmZXIgPSAnJ1xuICB0aGlzLmZpbmlzaGVkID0gdHJ1ZVxuICB0aGlzLm5yZWFkID0gdGhpcy5ucGFpcnMgPSAwXG4gIHRoaXMubWF4ZWQgPSBmYWxzZVxuICB0aGlzLmVtaXQoJ2hlYWRlcicsIGhlYWRlcilcbn1cblxuSGVhZGVyUGFyc2VyLnByb3RvdHlwZS5fcGFyc2VIZWFkZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLm5wYWlycyA9PT0gdGhpcy5tYXhIZWFkZXJQYWlycykgeyByZXR1cm4gfVxuXG4gIGNvbnN0IGxpbmVzID0gdGhpcy5idWZmZXIuc3BsaXQoUkVfQ1JMRilcbiAgY29uc3QgbGVuID0gbGluZXMubGVuZ3RoXG4gIGxldCBtLCBoXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXZhclxuICAgIGlmIChsaW5lc1tpXS5sZW5ndGggPT09IDApIHsgY29udGludWUgfVxuICAgIGlmIChsaW5lc1tpXVswXSA9PT0gJ1xcdCcgfHwgbGluZXNbaV1bMF0gPT09ICcgJykge1xuICAgICAgLy8gZm9sZGVkIGhlYWRlciBjb250ZW50XG4gICAgICAvLyBSRkMyODIyIHNheXMgdG8ganVzdCByZW1vdmUgdGhlIENSTEYgYW5kIG5vdCB0aGUgd2hpdGVzcGFjZSBmb2xsb3dpbmdcbiAgICAgIC8vIGl0LCBzbyB3ZSBmb2xsb3cgdGhlIFJGQyBhbmQgaW5jbHVkZSB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIC4uLlxuICAgICAgaWYgKGgpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJbaF1bdGhpcy5oZWFkZXJbaF0ubGVuZ3RoIC0gMV0gKz0gbGluZXNbaV1cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwb3NDb2xvbiA9IGxpbmVzW2ldLmluZGV4T2YoJzonKVxuICAgIGlmIChcbiAgICAgIHBvc0NvbG9uID09PSAtMSB8fFxuICAgICAgcG9zQ29sb24gPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBtID0gUkVfSERSLmV4ZWMobGluZXNbaV0pXG4gICAgaCA9IG1bMV0udG9Mb3dlckNhc2UoKVxuICAgIHRoaXMuaGVhZGVyW2hdID0gdGhpcy5oZWFkZXJbaF0gfHwgW11cbiAgICB0aGlzLmhlYWRlcltoXS5wdXNoKChtWzJdIHx8ICcnKSlcbiAgICBpZiAoKyt0aGlzLm5wYWlycyA9PT0gdGhpcy5tYXhIZWFkZXJQYWlycykgeyBicmVhayB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIZWFkZXJQYXJzZXJcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgV3JpdGFibGVTdHJlYW0gPSByZXF1aXJlKCdub2RlOnN0cmVhbScpLldyaXRhYmxlXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ25vZGU6dXRpbCcpLmluaGVyaXRzXG5cbmNvbnN0IFN0cmVhbVNlYXJjaCA9IHJlcXVpcmUoJy4uLy4uL3N0cmVhbXNlYXJjaC9zYm1oJylcblxuY29uc3QgUGFydFN0cmVhbSA9IHJlcXVpcmUoJy4vUGFydFN0cmVhbScpXG5jb25zdCBIZWFkZXJQYXJzZXIgPSByZXF1aXJlKCcuL0hlYWRlclBhcnNlcicpXG5cbmNvbnN0IERBU0ggPSA0NVxuY29uc3QgQl9PTkVEQVNIID0gQnVmZmVyLmZyb20oJy0nKVxuY29uc3QgQl9DUkxGID0gQnVmZmVyLmZyb20oJ1xcclxcbicpXG5jb25zdCBFTVBUWV9GTiA9IGZ1bmN0aW9uICgpIHt9XG5cbmZ1bmN0aW9uIERpY2VyIChjZmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERpY2VyKSkgeyByZXR1cm4gbmV3IERpY2VyKGNmZykgfVxuICBXcml0YWJsZVN0cmVhbS5jYWxsKHRoaXMsIGNmZylcblxuICBpZiAoIWNmZyB8fCAoIWNmZy5oZWFkZXJGaXJzdCAmJiB0eXBlb2YgY2ZnLmJvdW5kYXJ5ICE9PSAnc3RyaW5nJykpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQm91bmRhcnkgcmVxdWlyZWQnKSB9XG5cbiAgaWYgKHR5cGVvZiBjZmcuYm91bmRhcnkgPT09ICdzdHJpbmcnKSB7IHRoaXMuc2V0Qm91bmRhcnkoY2ZnLmJvdW5kYXJ5KSB9IGVsc2UgeyB0aGlzLl9icGFyc2VyID0gdW5kZWZpbmVkIH1cblxuICB0aGlzLl9oZWFkZXJGaXJzdCA9IGNmZy5oZWFkZXJGaXJzdFxuXG4gIHRoaXMuX2Rhc2hlcyA9IDBcbiAgdGhpcy5fcGFydHMgPSAwXG4gIHRoaXMuX2ZpbmlzaGVkID0gZmFsc2VcbiAgdGhpcy5fcmVhbEZpbmlzaCA9IGZhbHNlXG4gIHRoaXMuX2lzUHJlYW1ibGUgPSB0cnVlXG4gIHRoaXMuX2p1c3RNYXRjaGVkID0gZmFsc2VcbiAgdGhpcy5fZmlyc3RXcml0ZSA9IHRydWVcbiAgdGhpcy5faW5IZWFkZXIgPSB0cnVlXG4gIHRoaXMuX3BhcnQgPSB1bmRlZmluZWRcbiAgdGhpcy5fY2IgPSB1bmRlZmluZWRcbiAgdGhpcy5faWdub3JlRGF0YSA9IGZhbHNlXG4gIHRoaXMuX3BhcnRPcHRzID0geyBoaWdoV2F0ZXJNYXJrOiBjZmcucGFydEh3bSB9XG4gIHRoaXMuX3BhdXNlID0gZmFsc2VcblxuICBjb25zdCBzZWxmID0gdGhpc1xuICB0aGlzLl9ocGFyc2VyID0gbmV3IEhlYWRlclBhcnNlcihjZmcpXG4gIHRoaXMuX2hwYXJzZXIub24oJ2hlYWRlcicsIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICBzZWxmLl9pbkhlYWRlciA9IGZhbHNlXG4gICAgc2VsZi5fcGFydC5lbWl0KCdoZWFkZXInLCBoZWFkZXIpXG4gIH0pXG59XG5pbmhlcml0cyhEaWNlciwgV3JpdGFibGVTdHJlYW0pXG5cbkRpY2VyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gKGV2KSB7XG4gIGlmIChldiA9PT0gJ2ZpbmlzaCcgJiYgIXRoaXMuX3JlYWxGaW5pc2gpIHtcbiAgICBpZiAoIXRoaXMuX2ZpbmlzaGVkKSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpc1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgZW5kIG9mIG11bHRpcGFydCBkYXRhJykpXG4gICAgICAgIGlmIChzZWxmLl9wYXJ0ICYmICFzZWxmLl9pZ25vcmVEYXRhKSB7XG4gICAgICAgICAgY29uc3QgdHlwZSA9IChzZWxmLl9pc1ByZWFtYmxlID8gJ1ByZWFtYmxlJyA6ICdQYXJ0JylcbiAgICAgICAgICBzZWxmLl9wYXJ0LmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKHR5cGUgKyAnIHRlcm1pbmF0ZWQgZWFybHkgZHVlIHRvIHVuZXhwZWN0ZWQgZW5kIG9mIG11bHRpcGFydCBkYXRhJykpXG4gICAgICAgICAgc2VsZi5fcGFydC5wdXNoKG51bGwpXG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxmLl9yZWFsRmluaXNoID0gdHJ1ZVxuICAgICAgICAgICAgc2VsZi5lbWl0KCdmaW5pc2gnKVxuICAgICAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzZWxmLl9yZWFsRmluaXNoID0gdHJ1ZVxuICAgICAgICBzZWxmLmVtaXQoJ2ZpbmlzaCcpXG4gICAgICAgIHNlbGYuX3JlYWxGaW5pc2ggPSBmYWxzZVxuICAgICAgfSlcbiAgICB9XG4gIH0gZWxzZSB7IFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5lbWl0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxufVxuXG5EaWNlci5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYikge1xuICAvLyBpZ25vcmUgdW5leHBlY3RlZCBkYXRhIChlLmcuIGV4dHJhIHRyYWlsZXIgZGF0YSBhZnRlciBmaW5pc2hlZClcbiAgaWYgKCF0aGlzLl9ocGFyc2VyICYmICF0aGlzLl9icGFyc2VyKSB7IHJldHVybiBjYigpIH1cblxuICBpZiAodGhpcy5faGVhZGVyRmlyc3QgJiYgdGhpcy5faXNQcmVhbWJsZSkge1xuICAgIGlmICghdGhpcy5fcGFydCkge1xuICAgICAgdGhpcy5fcGFydCA9IG5ldyBQYXJ0U3RyZWFtKHRoaXMuX3BhcnRPcHRzKVxuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudCgncHJlYW1ibGUnKSAhPT0gMCkgeyB0aGlzLmVtaXQoJ3ByZWFtYmxlJywgdGhpcy5fcGFydCkgfSBlbHNlIHsgdGhpcy5faWdub3JlKCkgfVxuICAgIH1cbiAgICBjb25zdCByID0gdGhpcy5faHBhcnNlci5wdXNoKGRhdGEpXG4gICAgaWYgKCF0aGlzLl9pbkhlYWRlciAmJiByICE9PSB1bmRlZmluZWQgJiYgciA8IGRhdGEubGVuZ3RoKSB7IGRhdGEgPSBkYXRhLnNsaWNlKHIpIH0gZWxzZSB7IHJldHVybiBjYigpIH1cbiAgfVxuXG4gIC8vIGFsbG93cyBmb3IgXCJlYXNpZXJcIiB0ZXN0aW5nXG4gIGlmICh0aGlzLl9maXJzdFdyaXRlKSB7XG4gICAgdGhpcy5fYnBhcnNlci5wdXNoKEJfQ1JMRilcbiAgICB0aGlzLl9maXJzdFdyaXRlID0gZmFsc2VcbiAgfVxuXG4gIHRoaXMuX2JwYXJzZXIucHVzaChkYXRhKVxuXG4gIGlmICh0aGlzLl9wYXVzZSkgeyB0aGlzLl9jYiA9IGNiIH0gZWxzZSB7IGNiKCkgfVxufVxuXG5EaWNlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3BhcnQgPSB1bmRlZmluZWRcbiAgdGhpcy5fYnBhcnNlciA9IHVuZGVmaW5lZFxuICB0aGlzLl9ocGFyc2VyID0gdW5kZWZpbmVkXG59XG5cbkRpY2VyLnByb3RvdHlwZS5zZXRCb3VuZGFyeSA9IGZ1bmN0aW9uIChib3VuZGFyeSkge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICB0aGlzLl9icGFyc2VyID0gbmV3IFN0cmVhbVNlYXJjaCgnXFxyXFxuLS0nICsgYm91bmRhcnkpXG4gIHRoaXMuX2JwYXJzZXIub24oJ2luZm8nLCBmdW5jdGlvbiAoaXNNYXRjaCwgZGF0YSwgc3RhcnQsIGVuZCkge1xuICAgIHNlbGYuX29uaW5mbyhpc01hdGNoLCBkYXRhLCBzdGFydCwgZW5kKVxuICB9KVxufVxuXG5EaWNlci5wcm90b3R5cGUuX2lnbm9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX3BhcnQgJiYgIXRoaXMuX2lnbm9yZURhdGEpIHtcbiAgICB0aGlzLl9pZ25vcmVEYXRhID0gdHJ1ZVxuICAgIHRoaXMuX3BhcnQub24oJ2Vycm9yJywgRU1QVFlfRk4pXG4gICAgLy8gd2UgbXVzdCBwZXJmb3JtIHNvbWUga2luZCBvZiByZWFkIG9uIHRoZSBzdHJlYW0gZXZlbiB0aG91Z2ggd2UgYXJlXG4gICAgLy8gaWdub3JpbmcgdGhlIGRhdGEsIG90aGVyd2lzZSBub2RlJ3MgUmVhZGFibGUgc3RyZWFtIHdpbGwgbm90IGVtaXQgJ2VuZCdcbiAgICAvLyBhZnRlciBwdXNoaW5nIG51bGwgdG8gdGhlIHN0cmVhbVxuICAgIHRoaXMuX3BhcnQucmVzdW1lKClcbiAgfVxufVxuXG5EaWNlci5wcm90b3R5cGUuX29uaW5mbyA9IGZ1bmN0aW9uIChpc01hdGNoLCBkYXRhLCBzdGFydCwgZW5kKSB7XG4gIGxldCBidWY7IGNvbnN0IHNlbGYgPSB0aGlzOyBsZXQgaSA9IDA7IGxldCByOyBsZXQgc2hvdWxkV3JpdGVNb3JlID0gdHJ1ZVxuXG4gIGlmICghdGhpcy5fcGFydCAmJiB0aGlzLl9qdXN0TWF0Y2hlZCAmJiBkYXRhKSB7XG4gICAgd2hpbGUgKHRoaXMuX2Rhc2hlcyA8IDIgJiYgKHN0YXJ0ICsgaSkgPCBlbmQpIHtcbiAgICAgIGlmIChkYXRhW3N0YXJ0ICsgaV0gPT09IERBU0gpIHtcbiAgICAgICAgKytpXG4gICAgICAgICsrdGhpcy5fZGFzaGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5fZGFzaGVzKSB7IGJ1ZiA9IEJfT05FREFTSCB9XG4gICAgICAgIHRoaXMuX2Rhc2hlcyA9IDBcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX2Rhc2hlcyA9PT0gMikge1xuICAgICAgaWYgKChzdGFydCArIGkpIDwgZW5kICYmIHRoaXMubGlzdGVuZXJDb3VudCgndHJhaWxlcicpICE9PSAwKSB7IHRoaXMuZW1pdCgndHJhaWxlcicsIGRhdGEuc2xpY2Uoc3RhcnQgKyBpLCBlbmQpKSB9XG4gICAgICB0aGlzLnJlc2V0KClcbiAgICAgIHRoaXMuX2ZpbmlzaGVkID0gdHJ1ZVxuICAgICAgLy8gbm8gbW9yZSBwYXJ0cyB3aWxsIGJlIGFkZGVkXG4gICAgICBpZiAoc2VsZi5fcGFydHMgPT09IDApIHtcbiAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IHRydWVcbiAgICAgICAgc2VsZi5lbWl0KCdmaW5pc2gnKVxuICAgICAgICBzZWxmLl9yZWFsRmluaXNoID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX2Rhc2hlcykgeyByZXR1cm4gfVxuICB9XG4gIGlmICh0aGlzLl9qdXN0TWF0Y2hlZCkgeyB0aGlzLl9qdXN0TWF0Y2hlZCA9IGZhbHNlIH1cbiAgaWYgKCF0aGlzLl9wYXJ0KSB7XG4gICAgdGhpcy5fcGFydCA9IG5ldyBQYXJ0U3RyZWFtKHRoaXMuX3BhcnRPcHRzKVxuICAgIHRoaXMuX3BhcnQuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgc2VsZi5fdW5wYXVzZSgpXG4gICAgfVxuICAgIGlmICh0aGlzLl9pc1ByZWFtYmxlICYmIHRoaXMubGlzdGVuZXJDb3VudCgncHJlYW1ibGUnKSAhPT0gMCkge1xuICAgICAgdGhpcy5lbWl0KCdwcmVhbWJsZScsIHRoaXMuX3BhcnQpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9pc1ByZWFtYmxlICE9PSB0cnVlICYmIHRoaXMubGlzdGVuZXJDb3VudCgncGFydCcpICE9PSAwKSB7XG4gICAgICB0aGlzLmVtaXQoJ3BhcnQnLCB0aGlzLl9wYXJ0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pZ25vcmUoKVxuICAgIH1cbiAgICBpZiAoIXRoaXMuX2lzUHJlYW1ibGUpIHsgdGhpcy5faW5IZWFkZXIgPSB0cnVlIH1cbiAgfVxuICBpZiAoZGF0YSAmJiBzdGFydCA8IGVuZCAmJiAhdGhpcy5faWdub3JlRGF0YSkge1xuICAgIGlmICh0aGlzLl9pc1ByZWFtYmxlIHx8ICF0aGlzLl9pbkhlYWRlcikge1xuICAgICAgaWYgKGJ1ZikgeyBzaG91bGRXcml0ZU1vcmUgPSB0aGlzLl9wYXJ0LnB1c2goYnVmKSB9XG4gICAgICBzaG91bGRXcml0ZU1vcmUgPSB0aGlzLl9wYXJ0LnB1c2goZGF0YS5zbGljZShzdGFydCwgZW5kKSlcbiAgICAgIGlmICghc2hvdWxkV3JpdGVNb3JlKSB7IHRoaXMuX3BhdXNlID0gdHJ1ZSB9XG4gICAgfSBlbHNlIGlmICghdGhpcy5faXNQcmVhbWJsZSAmJiB0aGlzLl9pbkhlYWRlcikge1xuICAgICAgaWYgKGJ1ZikgeyB0aGlzLl9ocGFyc2VyLnB1c2goYnVmKSB9XG4gICAgICByID0gdGhpcy5faHBhcnNlci5wdXNoKGRhdGEuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gICAgICBpZiAoIXRoaXMuX2luSGVhZGVyICYmIHIgIT09IHVuZGVmaW5lZCAmJiByIDwgZW5kKSB7IHRoaXMuX29uaW5mbyhmYWxzZSwgZGF0YSwgc3RhcnQgKyByLCBlbmQpIH1cbiAgICB9XG4gIH1cbiAgaWYgKGlzTWF0Y2gpIHtcbiAgICB0aGlzLl9ocGFyc2VyLnJlc2V0KClcbiAgICBpZiAodGhpcy5faXNQcmVhbWJsZSkgeyB0aGlzLl9pc1ByZWFtYmxlID0gZmFsc2UgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydCAhPT0gZW5kKSB7XG4gICAgICAgICsrdGhpcy5fcGFydHNcbiAgICAgICAgdGhpcy5fcGFydC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICgtLXNlbGYuX3BhcnRzID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5fZmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IHRydWVcbiAgICAgICAgICAgICAgc2VsZi5lbWl0KCdmaW5pc2gnKVxuICAgICAgICAgICAgICBzZWxmLl9yZWFsRmluaXNoID0gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlbGYuX3VucGF1c2UoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcGFydC5wdXNoKG51bGwpXG4gICAgdGhpcy5fcGFydCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuX2lnbm9yZURhdGEgPSBmYWxzZVxuICAgIHRoaXMuX2p1c3RNYXRjaGVkID0gdHJ1ZVxuICAgIHRoaXMuX2Rhc2hlcyA9IDBcbiAgfVxufVxuXG5EaWNlci5wcm90b3R5cGUuX3VucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5fcGF1c2UpIHsgcmV0dXJuIH1cblxuICB0aGlzLl9wYXVzZSA9IGZhbHNlXG4gIGlmICh0aGlzLl9jYikge1xuICAgIGNvbnN0IGNiID0gdGhpcy5fY2JcbiAgICB0aGlzLl9jYiA9IHVuZGVmaW5lZFxuICAgIGNiKClcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERpY2VyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIE5vZGUgaGFzIGFsd2F5cyB1dGYtOFxuY29uc3QgdXRmOERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04JylcbmNvbnN0IHRleHREZWNvZGVycyA9IG5ldyBNYXAoW1xuICBbJ3V0Zi04JywgdXRmOERlY29kZXJdLFxuICBbJ3V0ZjgnLCB1dGY4RGVjb2Rlcl1cbl0pXG5cbmZ1bmN0aW9uIGdldERlY29kZXIgKGNoYXJzZXQpIHtcbiAgbGV0IGxjXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChjaGFyc2V0KSB7XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgICAgcmV0dXJuIGRlY29kZXJzLnV0ZjhcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdhc2NpaSc6IC8vIFRPRE86IE1ha2UgdGhlc2UgYSBzZXBhcmF0ZSwgc3RyaWN0IGRlY29kZXI/XG4gICAgICBjYXNlICd1cy1hc2NpaSc6XG4gICAgICBjYXNlICdpc28tODg1OS0xJzpcbiAgICAgIGNhc2UgJ2lzbzg4NTktMSc6XG4gICAgICBjYXNlICdpc284ODU5MSc6XG4gICAgICBjYXNlICdpc29fODg1OS0xJzpcbiAgICAgIGNhc2UgJ3dpbmRvd3MtMTI1Mic6XG4gICAgICBjYXNlICdpc29fODg1OS0xOjE5ODcnOlxuICAgICAgY2FzZSAnY3AxMjUyJzpcbiAgICAgIGNhc2UgJ3gtY3AxMjUyJzpcbiAgICAgICAgcmV0dXJuIGRlY29kZXJzLmxhdGluMVxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgICAgcmV0dXJuIGRlY29kZXJzLnV0ZjE2bGVcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBkZWNvZGVycy5iYXNlNjRcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGMgPSB0cnVlXG4gICAgICAgICAgY2hhcnNldCA9IGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29kZXJzLm90aGVyLmJpbmQoY2hhcnNldClcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgZGVjb2RlcnMgPSB7XG4gIHV0Zjg6IChkYXRhLCBzb3VyY2VFbmNvZGluZykgPT4ge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBzb3VyY2VFbmNvZGluZylcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEudXRmOFNsaWNlKDAsIGRhdGEubGVuZ3RoKVxuICB9LFxuXG4gIGxhdGluMTogKGRhdGEsIHNvdXJjZUVuY29kaW5nKSA9PiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEubGF0aW4xU2xpY2UoMCwgZGF0YS5sZW5ndGgpXG4gIH0sXG5cbiAgdXRmMTZsZTogKGRhdGEsIHNvdXJjZUVuY29kaW5nKSA9PiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIHNvdXJjZUVuY29kaW5nKVxuICAgIH1cbiAgICByZXR1cm4gZGF0YS51Y3MyU2xpY2UoMCwgZGF0YS5sZW5ndGgpXG4gIH0sXG5cbiAgYmFzZTY0OiAoZGF0YSwgc291cmNlRW5jb2RpbmcpID0+IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgc291cmNlRW5jb2RpbmcpXG4gICAgfVxuICAgIHJldHVybiBkYXRhLmJhc2U2NFNsaWNlKDAsIGRhdGEubGVuZ3RoKVxuICB9LFxuXG4gIG90aGVyOiAoZGF0YSwgc291cmNlRW5jb2RpbmcpID0+IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgc291cmNlRW5jb2RpbmcpXG4gICAgfVxuXG4gICAgaWYgKHRleHREZWNvZGVycy5oYXModGhpcy50b1N0cmluZygpKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRleHREZWNvZGVycy5nZXQodGhpcykuZGVjb2RlKGRhdGEpXG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZydcbiAgICAgID8gZGF0YVxuICAgICAgOiBkYXRhLnRvU3RyaW5nKClcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWNvZGVUZXh0ICh0ZXh0LCBzb3VyY2VFbmNvZGluZywgZGVzdEVuY29kaW5nKSB7XG4gIGlmICh0ZXh0KSB7XG4gICAgcmV0dXJuIGdldERlY29kZXIoZGVzdEVuY29kaW5nKSh0ZXh0LCBzb3VyY2VFbmNvZGluZylcbiAgfVxuICByZXR1cm4gdGV4dFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZVRleHRcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBvYmplY3QtcHJvcGVydHktbmV3bGluZSAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGRlY29kZVRleHQgPSByZXF1aXJlKCcuL2RlY29kZVRleHQnKVxuXG5jb25zdCBSRV9FTkNPREVEID0gLyVbYS1mQS1GMC05XVthLWZBLUYwLTldL2dcblxuY29uc3QgRW5jb2RlZExvb2t1cCA9IHtcbiAgJyUwMCc6ICdcXHgwMCcsICclMDEnOiAnXFx4MDEnLCAnJTAyJzogJ1xceDAyJywgJyUwMyc6ICdcXHgwMycsICclMDQnOiAnXFx4MDQnLFxuICAnJTA1JzogJ1xceDA1JywgJyUwNic6ICdcXHgwNicsICclMDcnOiAnXFx4MDcnLCAnJTA4JzogJ1xceDA4JywgJyUwOSc6ICdcXHgwOScsXG4gICclMGEnOiAnXFx4MGEnLCAnJTBBJzogJ1xceDBhJywgJyUwYic6ICdcXHgwYicsICclMEInOiAnXFx4MGInLCAnJTBjJzogJ1xceDBjJyxcbiAgJyUwQyc6ICdcXHgwYycsICclMGQnOiAnXFx4MGQnLCAnJTBEJzogJ1xceDBkJywgJyUwZSc6ICdcXHgwZScsICclMEUnOiAnXFx4MGUnLFxuICAnJTBmJzogJ1xceDBmJywgJyUwRic6ICdcXHgwZicsICclMTAnOiAnXFx4MTAnLCAnJTExJzogJ1xceDExJywgJyUxMic6ICdcXHgxMicsXG4gICclMTMnOiAnXFx4MTMnLCAnJTE0JzogJ1xceDE0JywgJyUxNSc6ICdcXHgxNScsICclMTYnOiAnXFx4MTYnLCAnJTE3JzogJ1xceDE3JyxcbiAgJyUxOCc6ICdcXHgxOCcsICclMTknOiAnXFx4MTknLCAnJTFhJzogJ1xceDFhJywgJyUxQSc6ICdcXHgxYScsICclMWInOiAnXFx4MWInLFxuICAnJTFCJzogJ1xceDFiJywgJyUxYyc6ICdcXHgxYycsICclMUMnOiAnXFx4MWMnLCAnJTFkJzogJ1xceDFkJywgJyUxRCc6ICdcXHgxZCcsXG4gICclMWUnOiAnXFx4MWUnLCAnJTFFJzogJ1xceDFlJywgJyUxZic6ICdcXHgxZicsICclMUYnOiAnXFx4MWYnLCAnJTIwJzogJ1xceDIwJyxcbiAgJyUyMSc6ICdcXHgyMScsICclMjInOiAnXFx4MjInLCAnJTIzJzogJ1xceDIzJywgJyUyNCc6ICdcXHgyNCcsICclMjUnOiAnXFx4MjUnLFxuICAnJTI2JzogJ1xceDI2JywgJyUyNyc6ICdcXHgyNycsICclMjgnOiAnXFx4MjgnLCAnJTI5JzogJ1xceDI5JywgJyUyYSc6ICdcXHgyYScsXG4gICclMkEnOiAnXFx4MmEnLCAnJTJiJzogJ1xceDJiJywgJyUyQic6ICdcXHgyYicsICclMmMnOiAnXFx4MmMnLCAnJTJDJzogJ1xceDJjJyxcbiAgJyUyZCc6ICdcXHgyZCcsICclMkQnOiAnXFx4MmQnLCAnJTJlJzogJ1xceDJlJywgJyUyRSc6ICdcXHgyZScsICclMmYnOiAnXFx4MmYnLFxuICAnJTJGJzogJ1xceDJmJywgJyUzMCc6ICdcXHgzMCcsICclMzEnOiAnXFx4MzEnLCAnJTMyJzogJ1xceDMyJywgJyUzMyc6ICdcXHgzMycsXG4gICclMzQnOiAnXFx4MzQnLCAnJTM1JzogJ1xceDM1JywgJyUzNic6ICdcXHgzNicsICclMzcnOiAnXFx4MzcnLCAnJTM4JzogJ1xceDM4JyxcbiAgJyUzOSc6ICdcXHgzOScsICclM2EnOiAnXFx4M2EnLCAnJTNBJzogJ1xceDNhJywgJyUzYic6ICdcXHgzYicsICclM0InOiAnXFx4M2InLFxuICAnJTNjJzogJ1xceDNjJywgJyUzQyc6ICdcXHgzYycsICclM2QnOiAnXFx4M2QnLCAnJTNEJzogJ1xceDNkJywgJyUzZSc6ICdcXHgzZScsXG4gICclM0UnOiAnXFx4M2UnLCAnJTNmJzogJ1xceDNmJywgJyUzRic6ICdcXHgzZicsICclNDAnOiAnXFx4NDAnLCAnJTQxJzogJ1xceDQxJyxcbiAgJyU0Mic6ICdcXHg0MicsICclNDMnOiAnXFx4NDMnLCAnJTQ0JzogJ1xceDQ0JywgJyU0NSc6ICdcXHg0NScsICclNDYnOiAnXFx4NDYnLFxuICAnJTQ3JzogJ1xceDQ3JywgJyU0OCc6ICdcXHg0OCcsICclNDknOiAnXFx4NDknLCAnJTRhJzogJ1xceDRhJywgJyU0QSc6ICdcXHg0YScsXG4gICclNGInOiAnXFx4NGInLCAnJTRCJzogJ1xceDRiJywgJyU0Yyc6ICdcXHg0YycsICclNEMnOiAnXFx4NGMnLCAnJTRkJzogJ1xceDRkJyxcbiAgJyU0RCc6ICdcXHg0ZCcsICclNGUnOiAnXFx4NGUnLCAnJTRFJzogJ1xceDRlJywgJyU0Zic6ICdcXHg0ZicsICclNEYnOiAnXFx4NGYnLFxuICAnJTUwJzogJ1xceDUwJywgJyU1MSc6ICdcXHg1MScsICclNTInOiAnXFx4NTInLCAnJTUzJzogJ1xceDUzJywgJyU1NCc6ICdcXHg1NCcsXG4gICclNTUnOiAnXFx4NTUnLCAnJTU2JzogJ1xceDU2JywgJyU1Nyc6ICdcXHg1NycsICclNTgnOiAnXFx4NTgnLCAnJTU5JzogJ1xceDU5JyxcbiAgJyU1YSc6ICdcXHg1YScsICclNUEnOiAnXFx4NWEnLCAnJTViJzogJ1xceDViJywgJyU1Qic6ICdcXHg1YicsICclNWMnOiAnXFx4NWMnLFxuICAnJTVDJzogJ1xceDVjJywgJyU1ZCc6ICdcXHg1ZCcsICclNUQnOiAnXFx4NWQnLCAnJTVlJzogJ1xceDVlJywgJyU1RSc6ICdcXHg1ZScsXG4gICclNWYnOiAnXFx4NWYnLCAnJTVGJzogJ1xceDVmJywgJyU2MCc6ICdcXHg2MCcsICclNjEnOiAnXFx4NjEnLCAnJTYyJzogJ1xceDYyJyxcbiAgJyU2Myc6ICdcXHg2MycsICclNjQnOiAnXFx4NjQnLCAnJTY1JzogJ1xceDY1JywgJyU2Nic6ICdcXHg2NicsICclNjcnOiAnXFx4NjcnLFxuICAnJTY4JzogJ1xceDY4JywgJyU2OSc6ICdcXHg2OScsICclNmEnOiAnXFx4NmEnLCAnJTZBJzogJ1xceDZhJywgJyU2Yic6ICdcXHg2YicsXG4gICclNkInOiAnXFx4NmInLCAnJTZjJzogJ1xceDZjJywgJyU2Qyc6ICdcXHg2YycsICclNmQnOiAnXFx4NmQnLCAnJTZEJzogJ1xceDZkJyxcbiAgJyU2ZSc6ICdcXHg2ZScsICclNkUnOiAnXFx4NmUnLCAnJTZmJzogJ1xceDZmJywgJyU2Ric6ICdcXHg2ZicsICclNzAnOiAnXFx4NzAnLFxuICAnJTcxJzogJ1xceDcxJywgJyU3Mic6ICdcXHg3MicsICclNzMnOiAnXFx4NzMnLCAnJTc0JzogJ1xceDc0JywgJyU3NSc6ICdcXHg3NScsXG4gICclNzYnOiAnXFx4NzYnLCAnJTc3JzogJ1xceDc3JywgJyU3OCc6ICdcXHg3OCcsICclNzknOiAnXFx4NzknLCAnJTdhJzogJ1xceDdhJyxcbiAgJyU3QSc6ICdcXHg3YScsICclN2InOiAnXFx4N2InLCAnJTdCJzogJ1xceDdiJywgJyU3Yyc6ICdcXHg3YycsICclN0MnOiAnXFx4N2MnLFxuICAnJTdkJzogJ1xceDdkJywgJyU3RCc6ICdcXHg3ZCcsICclN2UnOiAnXFx4N2UnLCAnJTdFJzogJ1xceDdlJywgJyU3Zic6ICdcXHg3ZicsXG4gICclN0YnOiAnXFx4N2YnLCAnJTgwJzogJ1xceDgwJywgJyU4MSc6ICdcXHg4MScsICclODInOiAnXFx4ODInLCAnJTgzJzogJ1xceDgzJyxcbiAgJyU4NCc6ICdcXHg4NCcsICclODUnOiAnXFx4ODUnLCAnJTg2JzogJ1xceDg2JywgJyU4Nyc6ICdcXHg4NycsICclODgnOiAnXFx4ODgnLFxuICAnJTg5JzogJ1xceDg5JywgJyU4YSc6ICdcXHg4YScsICclOEEnOiAnXFx4OGEnLCAnJThiJzogJ1xceDhiJywgJyU4Qic6ICdcXHg4YicsXG4gICclOGMnOiAnXFx4OGMnLCAnJThDJzogJ1xceDhjJywgJyU4ZCc6ICdcXHg4ZCcsICclOEQnOiAnXFx4OGQnLCAnJThlJzogJ1xceDhlJyxcbiAgJyU4RSc6ICdcXHg4ZScsICclOGYnOiAnXFx4OGYnLCAnJThGJzogJ1xceDhmJywgJyU5MCc6ICdcXHg5MCcsICclOTEnOiAnXFx4OTEnLFxuICAnJTkyJzogJ1xceDkyJywgJyU5Myc6ICdcXHg5MycsICclOTQnOiAnXFx4OTQnLCAnJTk1JzogJ1xceDk1JywgJyU5Nic6ICdcXHg5NicsXG4gICclOTcnOiAnXFx4OTcnLCAnJTk4JzogJ1xceDk4JywgJyU5OSc6ICdcXHg5OScsICclOWEnOiAnXFx4OWEnLCAnJTlBJzogJ1xceDlhJyxcbiAgJyU5Yic6ICdcXHg5YicsICclOUInOiAnXFx4OWInLCAnJTljJzogJ1xceDljJywgJyU5Qyc6ICdcXHg5YycsICclOWQnOiAnXFx4OWQnLFxuICAnJTlEJzogJ1xceDlkJywgJyU5ZSc6ICdcXHg5ZScsICclOUUnOiAnXFx4OWUnLCAnJTlmJzogJ1xceDlmJywgJyU5Ric6ICdcXHg5ZicsXG4gICclYTAnOiAnXFx4YTAnLCAnJUEwJzogJ1xceGEwJywgJyVhMSc6ICdcXHhhMScsICclQTEnOiAnXFx4YTEnLCAnJWEyJzogJ1xceGEyJyxcbiAgJyVBMic6ICdcXHhhMicsICclYTMnOiAnXFx4YTMnLCAnJUEzJzogJ1xceGEzJywgJyVhNCc6ICdcXHhhNCcsICclQTQnOiAnXFx4YTQnLFxuICAnJWE1JzogJ1xceGE1JywgJyVBNSc6ICdcXHhhNScsICclYTYnOiAnXFx4YTYnLCAnJUE2JzogJ1xceGE2JywgJyVhNyc6ICdcXHhhNycsXG4gICclQTcnOiAnXFx4YTcnLCAnJWE4JzogJ1xceGE4JywgJyVBOCc6ICdcXHhhOCcsICclYTknOiAnXFx4YTknLCAnJUE5JzogJ1xceGE5JyxcbiAgJyVhYSc6ICdcXHhhYScsICclQWEnOiAnXFx4YWEnLCAnJWFBJzogJ1xceGFhJywgJyVBQSc6ICdcXHhhYScsICclYWInOiAnXFx4YWInLFxuICAnJUFiJzogJ1xceGFiJywgJyVhQic6ICdcXHhhYicsICclQUInOiAnXFx4YWInLCAnJWFjJzogJ1xceGFjJywgJyVBYyc6ICdcXHhhYycsXG4gICclYUMnOiAnXFx4YWMnLCAnJUFDJzogJ1xceGFjJywgJyVhZCc6ICdcXHhhZCcsICclQWQnOiAnXFx4YWQnLCAnJWFEJzogJ1xceGFkJyxcbiAgJyVBRCc6ICdcXHhhZCcsICclYWUnOiAnXFx4YWUnLCAnJUFlJzogJ1xceGFlJywgJyVhRSc6ICdcXHhhZScsICclQUUnOiAnXFx4YWUnLFxuICAnJWFmJzogJ1xceGFmJywgJyVBZic6ICdcXHhhZicsICclYUYnOiAnXFx4YWYnLCAnJUFGJzogJ1xceGFmJywgJyViMCc6ICdcXHhiMCcsXG4gICclQjAnOiAnXFx4YjAnLCAnJWIxJzogJ1xceGIxJywgJyVCMSc6ICdcXHhiMScsICclYjInOiAnXFx4YjInLCAnJUIyJzogJ1xceGIyJyxcbiAgJyViMyc6ICdcXHhiMycsICclQjMnOiAnXFx4YjMnLCAnJWI0JzogJ1xceGI0JywgJyVCNCc6ICdcXHhiNCcsICclYjUnOiAnXFx4YjUnLFxuICAnJUI1JzogJ1xceGI1JywgJyViNic6ICdcXHhiNicsICclQjYnOiAnXFx4YjYnLCAnJWI3JzogJ1xceGI3JywgJyVCNyc6ICdcXHhiNycsXG4gICclYjgnOiAnXFx4YjgnLCAnJUI4JzogJ1xceGI4JywgJyViOSc6ICdcXHhiOScsICclQjknOiAnXFx4YjknLCAnJWJhJzogJ1xceGJhJyxcbiAgJyVCYSc6ICdcXHhiYScsICclYkEnOiAnXFx4YmEnLCAnJUJBJzogJ1xceGJhJywgJyViYic6ICdcXHhiYicsICclQmInOiAnXFx4YmInLFxuICAnJWJCJzogJ1xceGJiJywgJyVCQic6ICdcXHhiYicsICclYmMnOiAnXFx4YmMnLCAnJUJjJzogJ1xceGJjJywgJyViQyc6ICdcXHhiYycsXG4gICclQkMnOiAnXFx4YmMnLCAnJWJkJzogJ1xceGJkJywgJyVCZCc6ICdcXHhiZCcsICclYkQnOiAnXFx4YmQnLCAnJUJEJzogJ1xceGJkJyxcbiAgJyViZSc6ICdcXHhiZScsICclQmUnOiAnXFx4YmUnLCAnJWJFJzogJ1xceGJlJywgJyVCRSc6ICdcXHhiZScsICclYmYnOiAnXFx4YmYnLFxuICAnJUJmJzogJ1xceGJmJywgJyViRic6ICdcXHhiZicsICclQkYnOiAnXFx4YmYnLCAnJWMwJzogJ1xceGMwJywgJyVDMCc6ICdcXHhjMCcsXG4gICclYzEnOiAnXFx4YzEnLCAnJUMxJzogJ1xceGMxJywgJyVjMic6ICdcXHhjMicsICclQzInOiAnXFx4YzInLCAnJWMzJzogJ1xceGMzJyxcbiAgJyVDMyc6ICdcXHhjMycsICclYzQnOiAnXFx4YzQnLCAnJUM0JzogJ1xceGM0JywgJyVjNSc6ICdcXHhjNScsICclQzUnOiAnXFx4YzUnLFxuICAnJWM2JzogJ1xceGM2JywgJyVDNic6ICdcXHhjNicsICclYzcnOiAnXFx4YzcnLCAnJUM3JzogJ1xceGM3JywgJyVjOCc6ICdcXHhjOCcsXG4gICclQzgnOiAnXFx4YzgnLCAnJWM5JzogJ1xceGM5JywgJyVDOSc6ICdcXHhjOScsICclY2EnOiAnXFx4Y2EnLCAnJUNhJzogJ1xceGNhJyxcbiAgJyVjQSc6ICdcXHhjYScsICclQ0EnOiAnXFx4Y2EnLCAnJWNiJzogJ1xceGNiJywgJyVDYic6ICdcXHhjYicsICclY0InOiAnXFx4Y2InLFxuICAnJUNCJzogJ1xceGNiJywgJyVjYyc6ICdcXHhjYycsICclQ2MnOiAnXFx4Y2MnLCAnJWNDJzogJ1xceGNjJywgJyVDQyc6ICdcXHhjYycsXG4gICclY2QnOiAnXFx4Y2QnLCAnJUNkJzogJ1xceGNkJywgJyVjRCc6ICdcXHhjZCcsICclQ0QnOiAnXFx4Y2QnLCAnJWNlJzogJ1xceGNlJyxcbiAgJyVDZSc6ICdcXHhjZScsICclY0UnOiAnXFx4Y2UnLCAnJUNFJzogJ1xceGNlJywgJyVjZic6ICdcXHhjZicsICclQ2YnOiAnXFx4Y2YnLFxuICAnJWNGJzogJ1xceGNmJywgJyVDRic6ICdcXHhjZicsICclZDAnOiAnXFx4ZDAnLCAnJUQwJzogJ1xceGQwJywgJyVkMSc6ICdcXHhkMScsXG4gICclRDEnOiAnXFx4ZDEnLCAnJWQyJzogJ1xceGQyJywgJyVEMic6ICdcXHhkMicsICclZDMnOiAnXFx4ZDMnLCAnJUQzJzogJ1xceGQzJyxcbiAgJyVkNCc6ICdcXHhkNCcsICclRDQnOiAnXFx4ZDQnLCAnJWQ1JzogJ1xceGQ1JywgJyVENSc6ICdcXHhkNScsICclZDYnOiAnXFx4ZDYnLFxuICAnJUQ2JzogJ1xceGQ2JywgJyVkNyc6ICdcXHhkNycsICclRDcnOiAnXFx4ZDcnLCAnJWQ4JzogJ1xceGQ4JywgJyVEOCc6ICdcXHhkOCcsXG4gICclZDknOiAnXFx4ZDknLCAnJUQ5JzogJ1xceGQ5JywgJyVkYSc6ICdcXHhkYScsICclRGEnOiAnXFx4ZGEnLCAnJWRBJzogJ1xceGRhJyxcbiAgJyVEQSc6ICdcXHhkYScsICclZGInOiAnXFx4ZGInLCAnJURiJzogJ1xceGRiJywgJyVkQic6ICdcXHhkYicsICclREInOiAnXFx4ZGInLFxuICAnJWRjJzogJ1xceGRjJywgJyVEYyc6ICdcXHhkYycsICclZEMnOiAnXFx4ZGMnLCAnJURDJzogJ1xceGRjJywgJyVkZCc6ICdcXHhkZCcsXG4gICclRGQnOiAnXFx4ZGQnLCAnJWREJzogJ1xceGRkJywgJyVERCc6ICdcXHhkZCcsICclZGUnOiAnXFx4ZGUnLCAnJURlJzogJ1xceGRlJyxcbiAgJyVkRSc6ICdcXHhkZScsICclREUnOiAnXFx4ZGUnLCAnJWRmJzogJ1xceGRmJywgJyVEZic6ICdcXHhkZicsICclZEYnOiAnXFx4ZGYnLFxuICAnJURGJzogJ1xceGRmJywgJyVlMCc6ICdcXHhlMCcsICclRTAnOiAnXFx4ZTAnLCAnJWUxJzogJ1xceGUxJywgJyVFMSc6ICdcXHhlMScsXG4gICclZTInOiAnXFx4ZTInLCAnJUUyJzogJ1xceGUyJywgJyVlMyc6ICdcXHhlMycsICclRTMnOiAnXFx4ZTMnLCAnJWU0JzogJ1xceGU0JyxcbiAgJyVFNCc6ICdcXHhlNCcsICclZTUnOiAnXFx4ZTUnLCAnJUU1JzogJ1xceGU1JywgJyVlNic6ICdcXHhlNicsICclRTYnOiAnXFx4ZTYnLFxuICAnJWU3JzogJ1xceGU3JywgJyVFNyc6ICdcXHhlNycsICclZTgnOiAnXFx4ZTgnLCAnJUU4JzogJ1xceGU4JywgJyVlOSc6ICdcXHhlOScsXG4gICclRTknOiAnXFx4ZTknLCAnJWVhJzogJ1xceGVhJywgJyVFYSc6ICdcXHhlYScsICclZUEnOiAnXFx4ZWEnLCAnJUVBJzogJ1xceGVhJyxcbiAgJyVlYic6ICdcXHhlYicsICclRWInOiAnXFx4ZWInLCAnJWVCJzogJ1xceGViJywgJyVFQic6ICdcXHhlYicsICclZWMnOiAnXFx4ZWMnLFxuICAnJUVjJzogJ1xceGVjJywgJyVlQyc6ICdcXHhlYycsICclRUMnOiAnXFx4ZWMnLCAnJWVkJzogJ1xceGVkJywgJyVFZCc6ICdcXHhlZCcsXG4gICclZUQnOiAnXFx4ZWQnLCAnJUVEJzogJ1xceGVkJywgJyVlZSc6ICdcXHhlZScsICclRWUnOiAnXFx4ZWUnLCAnJWVFJzogJ1xceGVlJyxcbiAgJyVFRSc6ICdcXHhlZScsICclZWYnOiAnXFx4ZWYnLCAnJUVmJzogJ1xceGVmJywgJyVlRic6ICdcXHhlZicsICclRUYnOiAnXFx4ZWYnLFxuICAnJWYwJzogJ1xceGYwJywgJyVGMCc6ICdcXHhmMCcsICclZjEnOiAnXFx4ZjEnLCAnJUYxJzogJ1xceGYxJywgJyVmMic6ICdcXHhmMicsXG4gICclRjInOiAnXFx4ZjInLCAnJWYzJzogJ1xceGYzJywgJyVGMyc6ICdcXHhmMycsICclZjQnOiAnXFx4ZjQnLCAnJUY0JzogJ1xceGY0JyxcbiAgJyVmNSc6ICdcXHhmNScsICclRjUnOiAnXFx4ZjUnLCAnJWY2JzogJ1xceGY2JywgJyVGNic6ICdcXHhmNicsICclZjcnOiAnXFx4ZjcnLFxuICAnJUY3JzogJ1xceGY3JywgJyVmOCc6ICdcXHhmOCcsICclRjgnOiAnXFx4ZjgnLCAnJWY5JzogJ1xceGY5JywgJyVGOSc6ICdcXHhmOScsXG4gICclZmEnOiAnXFx4ZmEnLCAnJUZhJzogJ1xceGZhJywgJyVmQSc6ICdcXHhmYScsICclRkEnOiAnXFx4ZmEnLCAnJWZiJzogJ1xceGZiJyxcbiAgJyVGYic6ICdcXHhmYicsICclZkInOiAnXFx4ZmInLCAnJUZCJzogJ1xceGZiJywgJyVmYyc6ICdcXHhmYycsICclRmMnOiAnXFx4ZmMnLFxuICAnJWZDJzogJ1xceGZjJywgJyVGQyc6ICdcXHhmYycsICclZmQnOiAnXFx4ZmQnLCAnJUZkJzogJ1xceGZkJywgJyVmRCc6ICdcXHhmZCcsXG4gICclRkQnOiAnXFx4ZmQnLCAnJWZlJzogJ1xceGZlJywgJyVGZSc6ICdcXHhmZScsICclZkUnOiAnXFx4ZmUnLCAnJUZFJzogJ1xceGZlJyxcbiAgJyVmZic6ICdcXHhmZicsICclRmYnOiAnXFx4ZmYnLCAnJWZGJzogJ1xceGZmJywgJyVGRic6ICdcXHhmZidcbn1cblxuZnVuY3Rpb24gZW5jb2RlZFJlcGxhY2VyIChtYXRjaCkge1xuICByZXR1cm4gRW5jb2RlZExvb2t1cFttYXRjaF1cbn1cblxuY29uc3QgU1RBVEVfS0VZID0gMFxuY29uc3QgU1RBVEVfVkFMVUUgPSAxXG5jb25zdCBTVEFURV9DSEFSU0VUID0gMlxuY29uc3QgU1RBVEVfTEFORyA9IDNcblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMgKHN0cikge1xuICBjb25zdCByZXMgPSBbXVxuICBsZXQgc3RhdGUgPSBTVEFURV9LRVlcbiAgbGV0IGNoYXJzZXQgPSAnJ1xuICBsZXQgaW5xdW90ZSA9IGZhbHNlXG4gIGxldCBlc2NhcGluZyA9IGZhbHNlXG4gIGxldCBwID0gMFxuICBsZXQgdG1wID0gJydcbiAgY29uc3QgbGVuID0gc3RyLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby12YXJcbiAgICBjb25zdCBjaGFyID0gc3RyW2ldXG4gICAgaWYgKGNoYXIgPT09ICdcXFxcJyAmJiBpbnF1b3RlKSB7XG4gICAgICBpZiAoZXNjYXBpbmcpIHsgZXNjYXBpbmcgPSBmYWxzZSB9IGVsc2Uge1xuICAgICAgICBlc2NhcGluZyA9IHRydWVcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgIGlmICghZXNjYXBpbmcpIHtcbiAgICAgICAgaWYgKGlucXVvdGUpIHtcbiAgICAgICAgICBpbnF1b3RlID0gZmFsc2VcbiAgICAgICAgICBzdGF0ZSA9IFNUQVRFX0tFWVxuICAgICAgICB9IGVsc2UgeyBpbnF1b3RlID0gdHJ1ZSB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2UgeyBlc2NhcGluZyA9IGZhbHNlIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVzY2FwaW5nICYmIGlucXVvdGUpIHsgdG1wICs9ICdcXFxcJyB9XG4gICAgICBlc2NhcGluZyA9IGZhbHNlXG4gICAgICBpZiAoKHN0YXRlID09PSBTVEFURV9DSEFSU0VUIHx8IHN0YXRlID09PSBTVEFURV9MQU5HKSAmJiBjaGFyID09PSBcIidcIikge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFNUQVRFX0NIQVJTRVQpIHtcbiAgICAgICAgICBzdGF0ZSA9IFNUQVRFX0xBTkdcbiAgICAgICAgICBjaGFyc2V0ID0gdG1wLnN1YnN0cmluZygxKVxuICAgICAgICB9IGVsc2UgeyBzdGF0ZSA9IFNUQVRFX1ZBTFVFIH1cbiAgICAgICAgdG1wID0gJydcbiAgICAgICAgY29udGludWVcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFNUQVRFX0tFWSAmJlxuICAgICAgICAoY2hhciA9PT0gJyonIHx8IGNoYXIgPT09ICc9JykgJiZcbiAgICAgICAgcmVzLmxlbmd0aCkge1xuICAgICAgICBzdGF0ZSA9IGNoYXIgPT09ICcqJ1xuICAgICAgICAgID8gU1RBVEVfQ0hBUlNFVFxuICAgICAgICAgIDogU1RBVEVfVkFMVUVcbiAgICAgICAgcmVzW3BdID0gW3RtcCwgdW5kZWZpbmVkXVxuICAgICAgICB0bXAgPSAnJ1xuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIGlmICghaW5xdW90ZSAmJiBjaGFyID09PSAnOycpIHtcbiAgICAgICAgc3RhdGUgPSBTVEFURV9LRVlcbiAgICAgICAgaWYgKGNoYXJzZXQpIHtcbiAgICAgICAgICBpZiAodG1wLmxlbmd0aCkge1xuICAgICAgICAgICAgdG1wID0gZGVjb2RlVGV4dCh0bXAucmVwbGFjZShSRV9FTkNPREVELCBlbmNvZGVkUmVwbGFjZXIpLFxuICAgICAgICAgICAgICAnYmluYXJ5JyxcbiAgICAgICAgICAgICAgY2hhcnNldClcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hhcnNldCA9ICcnXG4gICAgICAgIH0gZWxzZSBpZiAodG1wLmxlbmd0aCkge1xuICAgICAgICAgIHRtcCA9IGRlY29kZVRleHQodG1wLCAnYmluYXJ5JywgJ3V0ZjgnKVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNbcF0gPT09IHVuZGVmaW5lZCkgeyByZXNbcF0gPSB0bXAgfSBlbHNlIHsgcmVzW3BdWzFdID0gdG1wIH1cbiAgICAgICAgdG1wID0gJydcbiAgICAgICAgKytwXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2UgaWYgKCFpbnF1b3RlICYmIChjaGFyID09PSAnICcgfHwgY2hhciA9PT0gJ1xcdCcpKSB7IGNvbnRpbnVlIH1cbiAgICB9XG4gICAgdG1wICs9IGNoYXJcbiAgfVxuICBpZiAoY2hhcnNldCAmJiB0bXAubGVuZ3RoKSB7XG4gICAgdG1wID0gZGVjb2RlVGV4dCh0bXAucmVwbGFjZShSRV9FTkNPREVELCBlbmNvZGVkUmVwbGFjZXIpLFxuICAgICAgJ2JpbmFyeScsXG4gICAgICBjaGFyc2V0KVxuICB9IGVsc2UgaWYgKHRtcCkge1xuICAgIHRtcCA9IGRlY29kZVRleHQodG1wLCAnYmluYXJ5JywgJ3V0ZjgnKVxuICB9XG5cbiAgaWYgKHJlc1twXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRtcCkgeyByZXNbcF0gPSB0bXAgfVxuICB9IGVsc2UgeyByZXNbcF1bMV0gPSB0bXAgfVxuXG4gIHJldHVybiByZXNcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVBhcmFtc1xuIiwgIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJhc2VuYW1lIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHsgcmV0dXJuICcnIH1cbiAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby12YXJcbiAgICBzd2l0Y2ggKHBhdGguY2hhckNvZGVBdChpKSkge1xuICAgICAgY2FzZSAweDJGOiAvLyAnLydcbiAgICAgIGNhc2UgMHg1QzogLy8gJ1xcJ1xuICAgICAgICBwYXRoID0gcGF0aC5zbGljZShpICsgMSlcbiAgICAgICAgcmV0dXJuIChwYXRoID09PSAnLi4nIHx8IHBhdGggPT09ICcuJyA/ICcnIDogcGF0aClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChwYXRoID09PSAnLi4nIHx8IHBhdGggPT09ICcuJyA/ICcnIDogcGF0aClcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLy8gVE9ETzpcbi8vICAqIHN1cHBvcnQgMSBuZXN0ZWQgbXVsdGlwYXJ0IGxldmVsXG4vLyAgICAoc2VlIHNlY29uZCBtdWx0aXBhcnQgZXhhbXBsZSBoZXJlOlxuLy8gICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW50ZXJhY3QvZm9ybXMuaHRtbCNkaWR4LW11bHRpcGFydGZvcm0tZGF0YSlcbi8vICAqIHN1cHBvcnQgbGltaXRzLmZpZWxkTmFtZVNpemVcbi8vICAgICAtLSB0aGlzIHdpbGwgcmVxdWlyZSBtb2RpZmljYXRpb25zIHRvIHV0aWxzLnBhcnNlUGFyYW1zXG5cbmNvbnN0IHsgUmVhZGFibGUgfSA9IHJlcXVpcmUoJ25vZGU6c3RyZWFtJylcbmNvbnN0IHsgaW5oZXJpdHMgfSA9IHJlcXVpcmUoJ25vZGU6dXRpbCcpXG5cbmNvbnN0IERpY2VyID0gcmVxdWlyZSgnLi4vLi4vZGVwcy9kaWNlci9saWIvRGljZXInKVxuXG5jb25zdCBwYXJzZVBhcmFtcyA9IHJlcXVpcmUoJy4uL3V0aWxzL3BhcnNlUGFyYW1zJylcbmNvbnN0IGRlY29kZVRleHQgPSByZXF1aXJlKCcuLi91dGlscy9kZWNvZGVUZXh0JylcbmNvbnN0IGJhc2VuYW1lID0gcmVxdWlyZSgnLi4vdXRpbHMvYmFzZW5hbWUnKVxuY29uc3QgZ2V0TGltaXQgPSByZXF1aXJlKCcuLi91dGlscy9nZXRMaW1pdCcpXG5cbmNvbnN0IFJFX0JPVU5EQVJZID0gL15ib3VuZGFyeSQvaVxuY29uc3QgUkVfRklFTEQgPSAvXmZvcm0tZGF0YSQvaVxuY29uc3QgUkVfQ0hBUlNFVCA9IC9eY2hhcnNldCQvaVxuY29uc3QgUkVfRklMRU5BTUUgPSAvXmZpbGVuYW1lJC9pXG5jb25zdCBSRV9OQU1FID0gL15uYW1lJC9pXG5cbk11bHRpcGFydC5kZXRlY3QgPSAvXm11bHRpcGFydFxcL2Zvcm0tZGF0YS9pXG5mdW5jdGlvbiBNdWx0aXBhcnQgKGJveSwgY2ZnKSB7XG4gIGxldCBpXG4gIGxldCBsZW5cbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IGJvdW5kYXJ5XG4gIGNvbnN0IGxpbWl0cyA9IGNmZy5saW1pdHNcbiAgY29uc3QgaXNQYXJ0QUZpbGUgPSBjZmcuaXNQYXJ0QUZpbGUgfHwgKChmaWVsZE5hbWUsIGNvbnRlbnRUeXBlLCBmaWxlTmFtZSkgPT4gKGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB8fCBmaWxlTmFtZSAhPT0gdW5kZWZpbmVkKSlcbiAgY29uc3QgcGFyc2VkQ29uVHlwZSA9IGNmZy5wYXJzZWRDb25UeXBlIHx8IFtdXG4gIGNvbnN0IGRlZkNoYXJzZXQgPSBjZmcuZGVmQ2hhcnNldCB8fCAndXRmOCdcbiAgY29uc3QgcHJlc2VydmVQYXRoID0gY2ZnLnByZXNlcnZlUGF0aFxuICBjb25zdCBmaWxlT3B0cyA9IHsgaGlnaFdhdGVyTWFyazogY2ZnLmZpbGVId20gfVxuXG4gIGZvciAoaSA9IDAsIGxlbiA9IHBhcnNlZENvblR5cGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRDb25UeXBlW2ldKSAmJlxuICAgICAgUkVfQk9VTkRBUlkudGVzdChwYXJzZWRDb25UeXBlW2ldWzBdKSkge1xuICAgICAgYm91bmRhcnkgPSBwYXJzZWRDb25UeXBlW2ldWzFdXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrRmluaXNoZWQgKCkge1xuICAgIGlmIChuZW5kcyA9PT0gMCAmJiBmaW5pc2hlZCAmJiAhYm95Ll9kb25lKSB7XG4gICAgICBmaW5pc2hlZCA9IGZhbHNlXG4gICAgICBzZWxmLmVuZCgpXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBib3VuZGFyeSAhPT0gJ3N0cmluZycpIHsgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBhcnQ6IEJvdW5kYXJ5IG5vdCBmb3VuZCcpIH1cblxuICBjb25zdCBmaWVsZFNpemVMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2ZpZWxkU2l6ZScsIDEgKiAxMDI0ICogMTAyNClcbiAgY29uc3QgZmlsZVNpemVMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2ZpbGVTaXplJywgSW5maW5pdHkpXG4gIGNvbnN0IGZpbGVzTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWxlcycsIEluZmluaXR5KVxuICBjb25zdCBmaWVsZHNMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2ZpZWxkcycsIEluZmluaXR5KVxuICBjb25zdCBwYXJ0c0xpbWl0ID0gZ2V0TGltaXQobGltaXRzLCAncGFydHMnLCBJbmZpbml0eSlcbiAgY29uc3QgaGVhZGVyUGFpcnNMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2hlYWRlclBhaXJzJywgMjAwMClcbiAgY29uc3QgaGVhZGVyU2l6ZUxpbWl0ID0gZ2V0TGltaXQobGltaXRzLCAnaGVhZGVyU2l6ZScsIDgwICogMTAyNClcblxuICBsZXQgbmZpbGVzID0gMFxuICBsZXQgbmZpZWxkcyA9IDBcbiAgbGV0IG5lbmRzID0gMFxuICBsZXQgY3VyRmlsZVxuICBsZXQgY3VyRmllbGRcbiAgbGV0IGZpbmlzaGVkID0gZmFsc2VcblxuICB0aGlzLl9uZWVkRHJhaW4gPSBmYWxzZVxuICB0aGlzLl9wYXVzZSA9IGZhbHNlXG4gIHRoaXMuX2NiID0gdW5kZWZpbmVkXG4gIHRoaXMuX25wYXJ0cyA9IDBcbiAgdGhpcy5fYm95ID0gYm95XG5cbiAgY29uc3QgcGFyc2VyQ2ZnID0ge1xuICAgIGJvdW5kYXJ5LFxuICAgIG1heEhlYWRlclBhaXJzOiBoZWFkZXJQYWlyc0xpbWl0LFxuICAgIG1heEhlYWRlclNpemU6IGhlYWRlclNpemVMaW1pdCxcbiAgICBwYXJ0SHdtOiBmaWxlT3B0cy5oaWdoV2F0ZXJNYXJrLFxuICAgIGhpZ2hXYXRlck1hcms6IGNmZy5oaWdoV2F0ZXJNYXJrXG4gIH1cblxuICB0aGlzLnBhcnNlciA9IG5ldyBEaWNlcihwYXJzZXJDZmcpXG4gIHRoaXMucGFyc2VyLm9uKCdkcmFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICBzZWxmLl9uZWVkRHJhaW4gPSBmYWxzZVxuICAgIGlmIChzZWxmLl9jYiAmJiAhc2VsZi5fcGF1c2UpIHtcbiAgICAgIGNvbnN0IGNiID0gc2VsZi5fY2JcbiAgICAgIHNlbGYuX2NiID0gdW5kZWZpbmVkXG4gICAgICBjYigpXG4gICAgfVxuICB9KS5vbigncGFydCcsIGZ1bmN0aW9uIG9uUGFydCAocGFydCkge1xuICAgIGlmICgrK3NlbGYuX25wYXJ0cyA+IHBhcnRzTGltaXQpIHtcbiAgICAgIHNlbGYucGFyc2VyLnJlbW92ZUxpc3RlbmVyKCdwYXJ0Jywgb25QYXJ0KVxuICAgICAgc2VsZi5wYXJzZXIub24oJ3BhcnQnLCBza2lwUGFydClcbiAgICAgIGJveS5oaXRQYXJ0c0xpbWl0ID0gdHJ1ZVxuICAgICAgYm95LmVtaXQoJ3BhcnRzTGltaXQnKVxuICAgICAgcmV0dXJuIHNraXBQYXJ0KHBhcnQpXG4gICAgfVxuXG4gICAgLy8gaGFjayBiZWNhdXNlIHN0cmVhbXMyIF9hbHdheXNfIGRvZXNuJ3QgZW1pdCAnZW5kJyB1bnRpbCBuZXh0VGljaywgc28gbGV0XG4gICAgLy8gdXMgZW1pdCAnZW5kJyBlYXJseSBzaW5jZSB3ZSBrbm93IHRoZSBwYXJ0IGhhcyBlbmRlZCBpZiB3ZSBhcmUgYWxyZWFkeVxuICAgIC8vIHNlZWluZyB0aGUgbmV4dCBwYXJ0XG4gICAgaWYgKGN1ckZpZWxkKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IGN1ckZpZWxkXG4gICAgICBmaWVsZC5lbWl0KCdlbmQnKVxuICAgICAgZmllbGQucmVtb3ZlQWxsTGlzdGVuZXJzKCdlbmQnKVxuICAgIH1cblxuICAgIHBhcnQub24oJ2hlYWRlcicsIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICAgIGxldCBjb250eXBlXG4gICAgICBsZXQgZmllbGRuYW1lXG4gICAgICBsZXQgcGFyc2VkXG4gICAgICBsZXQgY2hhcnNldFxuICAgICAgbGV0IGVuY29kaW5nXG4gICAgICBsZXQgZmlsZW5hbWVcbiAgICAgIGxldCBuc2l6ZSA9IDBcblxuICAgICAgaWYgKGhlYWRlclsnY29udGVudC10eXBlJ10pIHtcbiAgICAgICAgcGFyc2VkID0gcGFyc2VQYXJhbXMoaGVhZGVyWydjb250ZW50LXR5cGUnXVswXSlcbiAgICAgICAgaWYgKHBhcnNlZFswXSkge1xuICAgICAgICAgIGNvbnR5cGUgPSBwYXJzZWRbMF0udG9Mb3dlckNhc2UoKVxuICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHBhcnNlZC5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgaWYgKFJFX0NIQVJTRVQudGVzdChwYXJzZWRbaV1bMF0pKSB7XG4gICAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJzZWRbaV1bMV0udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHlwZSA9PT0gdW5kZWZpbmVkKSB7IGNvbnR5cGUgPSAndGV4dC9wbGFpbicgfVxuICAgICAgaWYgKGNoYXJzZXQgPT09IHVuZGVmaW5lZCkgeyBjaGFyc2V0ID0gZGVmQ2hhcnNldCB9XG5cbiAgICAgIGlmIChoZWFkZXJbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkge1xuICAgICAgICBwYXJzZWQgPSBwYXJzZVBhcmFtcyhoZWFkZXJbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXVswXSlcbiAgICAgICAgaWYgKCFSRV9GSUVMRC50ZXN0KHBhcnNlZFswXSkpIHsgcmV0dXJuIHNraXBQYXJ0KHBhcnQpIH1cbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gcGFyc2VkLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgaWYgKFJFX05BTUUudGVzdChwYXJzZWRbaV1bMF0pKSB7XG4gICAgICAgICAgICBmaWVsZG5hbWUgPSBwYXJzZWRbaV1bMV1cbiAgICAgICAgICB9IGVsc2UgaWYgKFJFX0ZJTEVOQU1FLnRlc3QocGFyc2VkW2ldWzBdKSkge1xuICAgICAgICAgICAgZmlsZW5hbWUgPSBwYXJzZWRbaV1bMV1cbiAgICAgICAgICAgIGlmICghcHJlc2VydmVQYXRoKSB7IGZpbGVuYW1lID0gYmFzZW5hbWUoZmlsZW5hbWUpIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7IHJldHVybiBza2lwUGFydChwYXJ0KSB9XG5cbiAgICAgIGlmIChoZWFkZXJbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSkgeyBlbmNvZGluZyA9IGhlYWRlclsnY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddWzBdLnRvTG93ZXJDYXNlKCkgfSBlbHNlIHsgZW5jb2RpbmcgPSAnN2JpdCcgfVxuXG4gICAgICBsZXQgb25EYXRhLFxuICAgICAgICBvbkVuZFxuXG4gICAgICBpZiAoaXNQYXJ0QUZpbGUoZmllbGRuYW1lLCBjb250eXBlLCBmaWxlbmFtZSkpIHtcbiAgICAgICAgLy8gZmlsZS9iaW5hcnkgZmllbGRcbiAgICAgICAgaWYgKG5maWxlcyA9PT0gZmlsZXNMaW1pdCkge1xuICAgICAgICAgIGlmICghYm95LmhpdEZpbGVzTGltaXQpIHtcbiAgICAgICAgICAgIGJveS5oaXRGaWxlc0xpbWl0ID0gdHJ1ZVxuICAgICAgICAgICAgYm95LmVtaXQoJ2ZpbGVzTGltaXQnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc2tpcFBhcnQocGFydClcbiAgICAgICAgfVxuXG4gICAgICAgICsrbmZpbGVzXG5cbiAgICAgICAgaWYgKGJveS5saXN0ZW5lckNvdW50KCdmaWxlJykgPT09IDApIHtcbiAgICAgICAgICBzZWxmLnBhcnNlci5faWdub3JlKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgICsrbmVuZHNcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlU3RyZWFtKGZpbGVPcHRzKVxuICAgICAgICBjdXJGaWxlID0gZmlsZVxuICAgICAgICBmaWxlLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLS1uZW5kc1xuICAgICAgICAgIHNlbGYuX3BhdXNlID0gZmFsc2VcbiAgICAgICAgICBjaGVja0ZpbmlzaGVkKClcbiAgICAgICAgICBpZiAoc2VsZi5fY2IgJiYgIXNlbGYuX25lZWREcmFpbikge1xuICAgICAgICAgICAgY29uc3QgY2IgPSBzZWxmLl9jYlxuICAgICAgICAgICAgc2VsZi5fY2IgPSB1bmRlZmluZWRcbiAgICAgICAgICAgIGNiKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGZpbGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgIGlmICghc2VsZi5fcGF1c2UpIHsgcmV0dXJuIH1cbiAgICAgICAgICBzZWxmLl9wYXVzZSA9IGZhbHNlXG4gICAgICAgICAgaWYgKHNlbGYuX2NiICYmICFzZWxmLl9uZWVkRHJhaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gc2VsZi5fY2JcbiAgICAgICAgICAgIHNlbGYuX2NiID0gdW5kZWZpbmVkXG4gICAgICAgICAgICBjYigpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJveS5lbWl0KCdmaWxlJywgZmllbGRuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZW5jb2RpbmcsIGNvbnR5cGUpXG5cbiAgICAgICAgb25EYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICBpZiAoKG5zaXplICs9IGRhdGEubGVuZ3RoKSA+IGZpbGVTaXplTGltaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhbGVuID0gZmlsZVNpemVMaW1pdCAtIG5zaXplICsgZGF0YS5sZW5ndGhcbiAgICAgICAgICAgIGlmIChleHRyYWxlbiA+IDApIHsgZmlsZS5wdXNoKGRhdGEuc2xpY2UoMCwgZXh0cmFsZW4pKSB9XG4gICAgICAgICAgICBmaWxlLnRydW5jYXRlZCA9IHRydWVcbiAgICAgICAgICAgIGZpbGUuYnl0ZXNSZWFkID0gZmlsZVNpemVMaW1pdFxuICAgICAgICAgICAgcGFydC5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2RhdGEnKVxuICAgICAgICAgICAgZmlsZS5lbWl0KCdsaW1pdCcpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9IGVsc2UgaWYgKCFmaWxlLnB1c2goZGF0YSkpIHsgc2VsZi5fcGF1c2UgPSB0cnVlIH1cblxuICAgICAgICAgIGZpbGUuYnl0ZXNSZWFkID0gbnNpemVcbiAgICAgICAgfVxuXG4gICAgICAgIG9uRW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGN1ckZpbGUgPSB1bmRlZmluZWRcbiAgICAgICAgICBmaWxlLnB1c2gobnVsbClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm9uLWZpbGUgZmllbGRcbiAgICAgICAgaWYgKG5maWVsZHMgPT09IGZpZWxkc0xpbWl0KSB7XG4gICAgICAgICAgaWYgKCFib3kuaGl0RmllbGRzTGltaXQpIHtcbiAgICAgICAgICAgIGJveS5oaXRGaWVsZHNMaW1pdCA9IHRydWVcbiAgICAgICAgICAgIGJveS5lbWl0KCdmaWVsZHNMaW1pdCcpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBza2lwUGFydChwYXJ0KVxuICAgICAgICB9XG5cbiAgICAgICAgKytuZmllbGRzXG4gICAgICAgICsrbmVuZHNcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCB0cnVuY2F0ZWQgPSBmYWxzZVxuICAgICAgICBjdXJGaWVsZCA9IHBhcnRcblxuICAgICAgICBvbkRhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgIGlmICgobnNpemUgKz0gZGF0YS5sZW5ndGgpID4gZmllbGRTaXplTGltaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhbGVuID0gKGZpZWxkU2l6ZUxpbWl0IC0gKG5zaXplIC0gZGF0YS5sZW5ndGgpKVxuICAgICAgICAgICAgYnVmZmVyICs9IGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIDAsIGV4dHJhbGVuKVxuICAgICAgICAgICAgdHJ1bmNhdGVkID0gdHJ1ZVxuICAgICAgICAgICAgcGFydC5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2RhdGEnKVxuICAgICAgICAgIH0gZWxzZSB7IGJ1ZmZlciArPSBkYXRhLnRvU3RyaW5nKCdiaW5hcnknKSB9XG4gICAgICAgIH1cblxuICAgICAgICBvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjdXJGaWVsZCA9IHVuZGVmaW5lZFxuICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKSB7IGJ1ZmZlciA9IGRlY29kZVRleHQoYnVmZmVyLCAnYmluYXJ5JywgY2hhcnNldCkgfVxuICAgICAgICAgIGJveS5lbWl0KCdmaWVsZCcsIGZpZWxkbmFtZSwgYnVmZmVyLCBmYWxzZSwgdHJ1bmNhdGVkLCBlbmNvZGluZywgY29udHlwZSlcbiAgICAgICAgICAtLW5lbmRzXG4gICAgICAgICAgY2hlY2tGaW5pc2hlZCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyogQXMgb2Ygbm9kZUAyZWZlNGFiNzYxNjY2ICh2MC4xMC4yOSsvdjAuMTEuMTQrKSwgYnVzYm95IGhhZCBiZWNvbWVcbiAgICAgICAgIGJyb2tlbi4gU3RyZWFtczIvc3RyZWFtczMgaXMgYSBodWdlIGJsYWNrIGJveCBvZiBjb25mdXNpb24sIGJ1dFxuICAgICAgICAgc29tZWhvdyBvdmVycmlkaW5nIHRoZSBzeW5jIHN0YXRlIHNlZW1zIHRvIGZpeCB0aGluZ3MgYWdhaW4gKGFuZCBzdGlsbFxuICAgICAgICAgc2VlbXMgdG8gd29yayBmb3IgcHJldmlvdXMgbm9kZSB2ZXJzaW9ucykuXG4gICAgICAqL1xuICAgICAgcGFydC5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2VcblxuICAgICAgcGFydC5vbignZGF0YScsIG9uRGF0YSlcbiAgICAgIHBhcnQub24oJ2VuZCcsIG9uRW5kKVxuICAgIH0pLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChjdXJGaWxlKSB7IGN1ckZpbGUuZW1pdCgnZXJyb3InLCBlcnIpIH1cbiAgICB9KVxuICB9KS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgYm95LmVtaXQoJ2Vycm9yJywgZXJyKVxuICB9KS5vbignZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgIGNoZWNrRmluaXNoZWQoKVxuICB9KVxufVxuXG5NdWx0aXBhcnQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBjYikge1xuICBjb25zdCByID0gdGhpcy5wYXJzZXIud3JpdGUoY2h1bmspXG4gIGlmIChyICYmICF0aGlzLl9wYXVzZSkge1xuICAgIGNiKClcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9uZWVkRHJhaW4gPSAhclxuICAgIHRoaXMuX2NiID0gY2JcbiAgfVxufVxuXG5NdWx0aXBhcnQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcblxuICBpZiAoc2VsZi5wYXJzZXIud3JpdGFibGUpIHtcbiAgICBzZWxmLnBhcnNlci5lbmQoKVxuICB9IGVsc2UgaWYgKCFzZWxmLl9ib3kuX2RvbmUpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX2JveS5fZG9uZSA9IHRydWVcbiAgICAgIHNlbGYuX2JveS5lbWl0KCdmaW5pc2gnKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gc2tpcFBhcnQgKHBhcnQpIHtcbiAgcGFydC5yZXN1bWUoKVxufVxuXG5mdW5jdGlvbiBGaWxlU3RyZWFtIChvcHRzKSB7XG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0cylcblxuICB0aGlzLmJ5dGVzUmVhZCA9IDBcblxuICB0aGlzLnRydW5jYXRlZCA9IGZhbHNlXG59XG5cbmluaGVyaXRzKEZpbGVTdHJlYW0sIFJlYWRhYmxlKVxuXG5GaWxlU3RyZWFtLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IE11bHRpcGFydFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBSRV9QTFVTID0gL1xcKy9nXG5cbmNvbnN0IEhFWCA9IFtcbiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCxcbiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMFxuXVxuXG5mdW5jdGlvbiBEZWNvZGVyICgpIHtcbiAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWRcbn1cbkRlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKHN0cikge1xuICAvLyBSZXBsYWNlICcrJyB3aXRoICcgJyBiZWZvcmUgZGVjb2RpbmdcbiAgc3RyID0gc3RyLnJlcGxhY2UoUkVfUExVUywgJyAnKVxuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSAwOyBsZXQgcCA9IDA7IGNvbnN0IGxlbiA9IHN0ci5sZW5ndGhcbiAgZm9yICg7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzLmJ1ZmZlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIUhFWFtzdHIuY2hhckNvZGVBdChpKV0pIHtcbiAgICAgICAgcmVzICs9ICclJyArIHRoaXMuYnVmZmVyXG4gICAgICAgIHRoaXMuYnVmZmVyID0gdW5kZWZpbmVkXG4gICAgICAgIC0taSAvLyByZXRyeSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IHN0cltpXVxuICAgICAgICArK3BcbiAgICAgICAgaWYgKHRoaXMuYnVmZmVyLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHRoaXMuYnVmZmVyLCAxNikpXG4gICAgICAgICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RyW2ldID09PSAnJScpIHtcbiAgICAgIGlmIChpID4gcCkge1xuICAgICAgICByZXMgKz0gc3RyLnN1YnN0cmluZyhwLCBpKVxuICAgICAgICBwID0gaVxuICAgICAgfVxuICAgICAgdGhpcy5idWZmZXIgPSAnJ1xuICAgICAgKytwXG4gICAgfVxuICB9XG4gIGlmIChwIDwgbGVuICYmIHRoaXMuYnVmZmVyID09PSB1bmRlZmluZWQpIHsgcmVzICs9IHN0ci5zdWJzdHJpbmcocCkgfVxuICByZXR1cm4gcmVzXG59XG5EZWNvZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEZWNvZGVyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IERlY29kZXIgPSByZXF1aXJlKCcuLi91dGlscy9EZWNvZGVyJylcbmNvbnN0IGRlY29kZVRleHQgPSByZXF1aXJlKCcuLi91dGlscy9kZWNvZGVUZXh0JylcbmNvbnN0IGdldExpbWl0ID0gcmVxdWlyZSgnLi4vdXRpbHMvZ2V0TGltaXQnKVxuXG5jb25zdCBSRV9DSEFSU0VUID0gL15jaGFyc2V0JC9pXG5cblVybEVuY29kZWQuZGV0ZWN0ID0gL15hcHBsaWNhdGlvblxcL3gtd3d3LWZvcm0tdXJsZW5jb2RlZC9pXG5mdW5jdGlvbiBVcmxFbmNvZGVkIChib3ksIGNmZykge1xuICBjb25zdCBsaW1pdHMgPSBjZmcubGltaXRzXG4gIGNvbnN0IHBhcnNlZENvblR5cGUgPSBjZmcucGFyc2VkQ29uVHlwZVxuICB0aGlzLmJveSA9IGJveVxuXG4gIHRoaXMuZmllbGRTaXplTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWVsZFNpemUnLCAxICogMTAyNCAqIDEwMjQpXG4gIHRoaXMuZmllbGROYW1lU2l6ZUxpbWl0ID0gZ2V0TGltaXQobGltaXRzLCAnZmllbGROYW1lU2l6ZScsIDEwMClcbiAgdGhpcy5maWVsZHNMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2ZpZWxkcycsIEluZmluaXR5KVxuXG4gIGxldCBjaGFyc2V0XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBwYXJzZWRDb25UeXBlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdmFyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkQ29uVHlwZVtpXSkgJiZcbiAgICAgICAgUkVfQ0hBUlNFVC50ZXN0KHBhcnNlZENvblR5cGVbaV1bMF0pKSB7XG4gICAgICBjaGFyc2V0ID0gcGFyc2VkQ29uVHlwZVtpXVsxXS50b0xvd2VyQ2FzZSgpXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGFyc2V0ID09PSB1bmRlZmluZWQpIHsgY2hhcnNldCA9IGNmZy5kZWZDaGFyc2V0IHx8ICd1dGY4JyB9XG5cbiAgdGhpcy5kZWNvZGVyID0gbmV3IERlY29kZXIoKVxuICB0aGlzLmNoYXJzZXQgPSBjaGFyc2V0XG4gIHRoaXMuX2ZpZWxkcyA9IDBcbiAgdGhpcy5fc3RhdGUgPSAna2V5J1xuICB0aGlzLl9jaGVja2luZ0J5dGVzID0gdHJ1ZVxuICB0aGlzLl9ieXRlc0tleSA9IDBcbiAgdGhpcy5fYnl0ZXNWYWwgPSAwXG4gIHRoaXMuX2tleSA9ICcnXG4gIHRoaXMuX3ZhbCA9ICcnXG4gIHRoaXMuX2tleVRydW5jID0gZmFsc2VcbiAgdGhpcy5fdmFsVHJ1bmMgPSBmYWxzZVxuICB0aGlzLl9oaXRMaW1pdCA9IGZhbHNlXG59XG5cblVybEVuY29kZWQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGNiKSB7XG4gIGlmICh0aGlzLl9maWVsZHMgPT09IHRoaXMuZmllbGRzTGltaXQpIHtcbiAgICBpZiAoIXRoaXMuYm95LmhpdEZpZWxkc0xpbWl0KSB7XG4gICAgICB0aGlzLmJveS5oaXRGaWVsZHNMaW1pdCA9IHRydWVcbiAgICAgIHRoaXMuYm95LmVtaXQoJ2ZpZWxkc0xpbWl0JylcbiAgICB9XG4gICAgcmV0dXJuIGNiKClcbiAgfVxuXG4gIGxldCBpZHhlcTsgbGV0IGlkeGFtcDsgbGV0IGk7IGxldCBwID0gMDsgY29uc3QgbGVuID0gZGF0YS5sZW5ndGhcblxuICB3aGlsZSAocCA8IGxlbikge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ2tleScpIHtcbiAgICAgIGlkeGVxID0gaWR4YW1wID0gdW5kZWZpbmVkXG4gICAgICBmb3IgKGkgPSBwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jaGVja2luZ0J5dGVzKSB7ICsrcCB9XG4gICAgICAgIGlmIChkYXRhW2ldID09PSAweDNELyogPSAqLykge1xuICAgICAgICAgIGlkeGVxID0gaVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YVtpXSA9PT0gMHgyNi8qICYgKi8pIHtcbiAgICAgICAgICBpZHhhbXAgPSBpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fY2hlY2tpbmdCeXRlcyAmJiB0aGlzLl9ieXRlc0tleSA9PT0gdGhpcy5maWVsZE5hbWVTaXplTGltaXQpIHtcbiAgICAgICAgICB0aGlzLl9oaXRMaW1pdCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NoZWNraW5nQnl0ZXMpIHsgKyt0aGlzLl9ieXRlc0tleSB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpZHhlcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGtleSB3aXRoIGFzc2lnbm1lbnRcbiAgICAgICAgaWYgKGlkeGVxID4gcCkgeyB0aGlzLl9rZXkgKz0gdGhpcy5kZWNvZGVyLndyaXRlKGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHAsIGlkeGVxKSkgfVxuICAgICAgICB0aGlzLl9zdGF0ZSA9ICd2YWwnXG5cbiAgICAgICAgdGhpcy5faGl0TGltaXQgPSBmYWxzZVxuICAgICAgICB0aGlzLl9jaGVja2luZ0J5dGVzID0gdHJ1ZVxuICAgICAgICB0aGlzLl92YWwgPSAnJ1xuICAgICAgICB0aGlzLl9ieXRlc1ZhbCA9IDBcbiAgICAgICAgdGhpcy5fdmFsVHJ1bmMgPSBmYWxzZVxuICAgICAgICB0aGlzLmRlY29kZXIucmVzZXQoKVxuXG4gICAgICAgIHAgPSBpZHhlcSArIDFcbiAgICAgIH0gZWxzZSBpZiAoaWR4YW1wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8ga2V5IHdpdGggbm8gYXNzaWdubWVudFxuICAgICAgICArK3RoaXMuX2ZpZWxkc1xuICAgICAgICBsZXQga2V5OyBjb25zdCBrZXlUcnVuYyA9IHRoaXMuX2tleVRydW5jXG4gICAgICAgIGlmIChpZHhhbXAgPiBwKSB7IGtleSA9ICh0aGlzLl9rZXkgKz0gdGhpcy5kZWNvZGVyLndyaXRlKGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHAsIGlkeGFtcCkpKSB9IGVsc2UgeyBrZXkgPSB0aGlzLl9rZXkgfVxuXG4gICAgICAgIHRoaXMuX2hpdExpbWl0ID0gZmFsc2VcbiAgICAgICAgdGhpcy5fY2hlY2tpbmdCeXRlcyA9IHRydWVcbiAgICAgICAgdGhpcy5fa2V5ID0gJydcbiAgICAgICAgdGhpcy5fYnl0ZXNLZXkgPSAwXG4gICAgICAgIHRoaXMuX2tleVRydW5jID0gZmFsc2VcbiAgICAgICAgdGhpcy5kZWNvZGVyLnJlc2V0KClcblxuICAgICAgICBpZiAoa2V5Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuYm95LmVtaXQoJ2ZpZWxkJywgZGVjb2RlVGV4dChrZXksICdiaW5hcnknLCB0aGlzLmNoYXJzZXQpLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBrZXlUcnVuYyxcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICB9XG5cbiAgICAgICAgcCA9IGlkeGFtcCArIDFcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcyA9PT0gdGhpcy5maWVsZHNMaW1pdCkgeyByZXR1cm4gY2IoKSB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2hpdExpbWl0KSB7XG4gICAgICAgIC8vIHdlIG1heSBub3QgaGF2ZSBoaXQgdGhlIGFjdHVhbCBsaW1pdCBpZiB0aGVyZSBhcmUgZW5jb2RlZCBieXRlcy4uLlxuICAgICAgICBpZiAoaSA+IHApIHsgdGhpcy5fa2V5ICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwLCBpKSkgfVxuICAgICAgICBwID0gaVxuICAgICAgICBpZiAoKHRoaXMuX2J5dGVzS2V5ID0gdGhpcy5fa2V5Lmxlbmd0aCkgPT09IHRoaXMuZmllbGROYW1lU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgLy8geWVwLCB3ZSBhY3R1YWxseSBkaWQgaGl0IHRoZSBsaW1pdFxuICAgICAgICAgIHRoaXMuX2NoZWNraW5nQnl0ZXMgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuX2tleVRydW5jID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocCA8IGxlbikgeyB0aGlzLl9rZXkgKz0gdGhpcy5kZWNvZGVyLndyaXRlKGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHApKSB9XG4gICAgICAgIHAgPSBsZW5cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWR4YW1wID0gdW5kZWZpbmVkXG4gICAgICBmb3IgKGkgPSBwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jaGVja2luZ0J5dGVzKSB7ICsrcCB9XG4gICAgICAgIGlmIChkYXRhW2ldID09PSAweDI2LyogJiAqLykge1xuICAgICAgICAgIGlkeGFtcCA9IGlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9jaGVja2luZ0J5dGVzICYmIHRoaXMuX2J5dGVzVmFsID09PSB0aGlzLmZpZWxkU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgdGhpcy5faGl0TGltaXQgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jaGVja2luZ0J5dGVzKSB7ICsrdGhpcy5fYnl0ZXNWYWwgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaWR4YW1wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKyt0aGlzLl9maWVsZHNcbiAgICAgICAgaWYgKGlkeGFtcCA+IHApIHsgdGhpcy5fdmFsICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwLCBpZHhhbXApKSB9XG4gICAgICAgIHRoaXMuYm95LmVtaXQoJ2ZpZWxkJywgZGVjb2RlVGV4dCh0aGlzLl9rZXksICdiaW5hcnknLCB0aGlzLmNoYXJzZXQpLFxuICAgICAgICAgIGRlY29kZVRleHQodGhpcy5fdmFsLCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgICAgICB0aGlzLl9rZXlUcnVuYyxcbiAgICAgICAgICB0aGlzLl92YWxUcnVuYylcbiAgICAgICAgdGhpcy5fc3RhdGUgPSAna2V5J1xuXG4gICAgICAgIHRoaXMuX2hpdExpbWl0ID0gZmFsc2VcbiAgICAgICAgdGhpcy5fY2hlY2tpbmdCeXRlcyA9IHRydWVcbiAgICAgICAgdGhpcy5fa2V5ID0gJydcbiAgICAgICAgdGhpcy5fYnl0ZXNLZXkgPSAwXG4gICAgICAgIHRoaXMuX2tleVRydW5jID0gZmFsc2VcbiAgICAgICAgdGhpcy5kZWNvZGVyLnJlc2V0KClcblxuICAgICAgICBwID0gaWR4YW1wICsgMVxuICAgICAgICBpZiAodGhpcy5fZmllbGRzID09PSB0aGlzLmZpZWxkc0xpbWl0KSB7IHJldHVybiBjYigpIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGl0TGltaXQpIHtcbiAgICAgICAgLy8gd2UgbWF5IG5vdCBoYXZlIGhpdCB0aGUgYWN0dWFsIGxpbWl0IGlmIHRoZXJlIGFyZSBlbmNvZGVkIGJ5dGVzLi4uXG4gICAgICAgIGlmIChpID4gcCkgeyB0aGlzLl92YWwgKz0gdGhpcy5kZWNvZGVyLndyaXRlKGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHAsIGkpKSB9XG4gICAgICAgIHAgPSBpXG4gICAgICAgIGlmICgodGhpcy5fdmFsID09PSAnJyAmJiB0aGlzLmZpZWxkU2l6ZUxpbWl0ID09PSAwKSB8fFxuICAgICAgICAgICAgKHRoaXMuX2J5dGVzVmFsID0gdGhpcy5fdmFsLmxlbmd0aCkgPT09IHRoaXMuZmllbGRTaXplTGltaXQpIHtcbiAgICAgICAgICAvLyB5ZXAsIHdlIGFjdHVhbGx5IGRpZCBoaXQgdGhlIGxpbWl0XG4gICAgICAgICAgdGhpcy5fY2hlY2tpbmdCeXRlcyA9IGZhbHNlXG4gICAgICAgICAgdGhpcy5fdmFsVHJ1bmMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwIDwgbGVuKSB7IHRoaXMuX3ZhbCArPSB0aGlzLmRlY29kZXIud3JpdGUoZGF0YS50b1N0cmluZygnYmluYXJ5JywgcCkpIH1cbiAgICAgICAgcCA9IGxlblxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYigpXG59XG5cblVybEVuY29kZWQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYm95Ll9kb25lKSB7IHJldHVybiB9XG5cbiAgaWYgKHRoaXMuX3N0YXRlID09PSAna2V5JyAmJiB0aGlzLl9rZXkubGVuZ3RoID4gMCkge1xuICAgIHRoaXMuYm95LmVtaXQoJ2ZpZWxkJywgZGVjb2RlVGV4dCh0aGlzLl9rZXksICdiaW5hcnknLCB0aGlzLmNoYXJzZXQpLFxuICAgICAgJycsXG4gICAgICB0aGlzLl9rZXlUcnVuYyxcbiAgICAgIGZhbHNlKVxuICB9IGVsc2UgaWYgKHRoaXMuX3N0YXRlID09PSAndmFsJykge1xuICAgIHRoaXMuYm95LmVtaXQoJ2ZpZWxkJywgZGVjb2RlVGV4dCh0aGlzLl9rZXksICdiaW5hcnknLCB0aGlzLmNoYXJzZXQpLFxuICAgICAgZGVjb2RlVGV4dCh0aGlzLl92YWwsICdiaW5hcnknLCB0aGlzLmNoYXJzZXQpLFxuICAgICAgdGhpcy5fa2V5VHJ1bmMsXG4gICAgICB0aGlzLl92YWxUcnVuYylcbiAgfVxuICB0aGlzLmJveS5fZG9uZSA9IHRydWVcbiAgdGhpcy5ib3kuZW1pdCgnZmluaXNoJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBVcmxFbmNvZGVkXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IFdyaXRhYmxlU3RyZWFtID0gcmVxdWlyZSgnbm9kZTpzdHJlYW0nKS5Xcml0YWJsZVxuY29uc3QgeyBpbmhlcml0cyB9ID0gcmVxdWlyZSgnbm9kZTp1dGlsJylcbmNvbnN0IERpY2VyID0gcmVxdWlyZSgnLi4vZGVwcy9kaWNlci9saWIvRGljZXInKVxuXG5jb25zdCBNdWx0aXBhcnRQYXJzZXIgPSByZXF1aXJlKCcuL3R5cGVzL211bHRpcGFydCcpXG5jb25zdCBVcmxlbmNvZGVkUGFyc2VyID0gcmVxdWlyZSgnLi90eXBlcy91cmxlbmNvZGVkJylcbmNvbnN0IHBhcnNlUGFyYW1zID0gcmVxdWlyZSgnLi91dGlscy9wYXJzZVBhcmFtcycpXG5cbmZ1bmN0aW9uIEJ1c2JveSAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQnVzYm95KSkgeyByZXR1cm4gbmV3IEJ1c2JveShvcHRzKSB9XG5cbiAgaWYgKHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1c2JveSBleHBlY3RlZCBhbiBvcHRpb25zLU9iamVjdC4nKVxuICB9XG4gIGlmICh0eXBlb2Ygb3B0cy5oZWFkZXJzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1c2JveSBleHBlY3RlZCBhbiBvcHRpb25zLU9iamVjdCB3aXRoIGhlYWRlcnMtYXR0cmlidXRlLicpXG4gIH1cbiAgaWYgKHR5cGVvZiBvcHRzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ01pc3NpbmcgQ29udGVudC1UeXBlLWhlYWRlci4nKVxuICB9XG5cbiAgY29uc3Qge1xuICAgIGhlYWRlcnMsXG4gICAgLi4uc3RyZWFtT3B0aW9uc1xuICB9ID0gb3B0c1xuXG4gIHRoaXMub3B0cyA9IHtcbiAgICBhdXRvRGVzdHJveTogZmFsc2UsXG4gICAgLi4uc3RyZWFtT3B0aW9uc1xuICB9XG4gIFdyaXRhYmxlU3RyZWFtLmNhbGwodGhpcywgdGhpcy5vcHRzKVxuXG4gIHRoaXMuX2RvbmUgPSBmYWxzZVxuICB0aGlzLl9wYXJzZXIgPSB0aGlzLmdldFBhcnNlckJ5SGVhZGVycyhoZWFkZXJzKVxuICB0aGlzLl9maW5pc2hlZCA9IGZhbHNlXG59XG5pbmhlcml0cyhCdXNib3ksIFdyaXRhYmxlU3RyZWFtKVxuXG5CdXNib3kucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXYpIHtcbiAgaWYgKGV2ID09PSAnZmluaXNoJykge1xuICAgIGlmICghdGhpcy5fZG9uZSkge1xuICAgICAgdGhpcy5fcGFyc2VyPy5lbmQoKVxuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9maW5pc2hlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuX2ZpbmlzaGVkID0gdHJ1ZVxuICB9XG4gIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5lbWl0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVzYm95LnByb3RvdHlwZS5nZXRQYXJzZXJCeUhlYWRlcnMgPSBmdW5jdGlvbiAoaGVhZGVycykge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZVBhcmFtcyhoZWFkZXJzWydjb250ZW50LXR5cGUnXSlcblxuICBjb25zdCBjZmcgPSB7XG4gICAgZGVmQ2hhcnNldDogdGhpcy5vcHRzLmRlZkNoYXJzZXQsXG4gICAgZmlsZUh3bTogdGhpcy5vcHRzLmZpbGVId20sXG4gICAgaGVhZGVycyxcbiAgICBoaWdoV2F0ZXJNYXJrOiB0aGlzLm9wdHMuaGlnaFdhdGVyTWFyayxcbiAgICBpc1BhcnRBRmlsZTogdGhpcy5vcHRzLmlzUGFydEFGaWxlLFxuICAgIGxpbWl0czogdGhpcy5vcHRzLmxpbWl0cyxcbiAgICBwYXJzZWRDb25UeXBlOiBwYXJzZWQsXG4gICAgcHJlc2VydmVQYXRoOiB0aGlzLm9wdHMucHJlc2VydmVQYXRoXG4gIH1cblxuICBpZiAoTXVsdGlwYXJ0UGFyc2VyLmRldGVjdC50ZXN0KHBhcnNlZFswXSkpIHtcbiAgICByZXR1cm4gbmV3IE11bHRpcGFydFBhcnNlcih0aGlzLCBjZmcpXG4gIH1cbiAgaWYgKFVybGVuY29kZWRQYXJzZXIuZGV0ZWN0LnRlc3QocGFyc2VkWzBdKSkge1xuICAgIHJldHVybiBuZXcgVXJsZW5jb2RlZFBhcnNlcih0aGlzLCBjZmcpXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBDb250ZW50LVR5cGUuJylcbn1cblxuQnVzYm95LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aGlzLl9wYXJzZXIud3JpdGUoY2h1bmssIGNiKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJ1c2JveVxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IEJ1c2JveVxubW9kdWxlLmV4cG9ydHMuQnVzYm95ID0gQnVzYm95XG5cbm1vZHVsZS5leHBvcnRzLkRpY2VyID0gRGljZXJcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBNZXNzYWdlQ2hhbm5lbCwgcmVjZWl2ZU1lc3NhZ2VPblBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJylcblxuY29uc3QgY29yc1NhZmVMaXN0ZWRNZXRob2RzID0gWydHRVQnLCAnSEVBRCcsICdQT1NUJ11cbmNvbnN0IGNvcnNTYWZlTGlzdGVkTWV0aG9kc1NldCA9IG5ldyBTZXQoY29yc1NhZmVMaXN0ZWRNZXRob2RzKVxuXG5jb25zdCBudWxsQm9keVN0YXR1cyA9IFsxMDEsIDIwNCwgMjA1LCAzMDRdXG5cbmNvbnN0IHJlZGlyZWN0U3RhdHVzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuY29uc3QgcmVkaXJlY3RTdGF0dXNTZXQgPSBuZXcgU2V0KHJlZGlyZWN0U3RhdHVzKVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYmxvY2stYmFkLXBvcnRcbmNvbnN0IGJhZFBvcnRzID0gW1xuICAnMScsICc3JywgJzknLCAnMTEnLCAnMTMnLCAnMTUnLCAnMTcnLCAnMTknLCAnMjAnLCAnMjEnLCAnMjInLCAnMjMnLCAnMjUnLCAnMzcnLCAnNDInLCAnNDMnLCAnNTMnLCAnNjknLCAnNzcnLCAnNzknLFxuICAnODcnLCAnOTUnLCAnMTAxJywgJzEwMicsICcxMDMnLCAnMTA0JywgJzEwOScsICcxMTAnLCAnMTExJywgJzExMycsICcxMTUnLCAnMTE3JywgJzExOScsICcxMjMnLCAnMTM1JywgJzEzNycsXG4gICcxMzknLCAnMTQzJywgJzE2MScsICcxNzknLCAnMzg5JywgJzQyNycsICc0NjUnLCAnNTEyJywgJzUxMycsICc1MTQnLCAnNTE1JywgJzUyNicsICc1MzAnLCAnNTMxJywgJzUzMicsXG4gICc1NDAnLCAnNTQ4JywgJzU1NCcsICc1NTYnLCAnNTYzJywgJzU4NycsICc2MDEnLCAnNjM2JywgJzk4OScsICc5OTAnLCAnOTkzJywgJzk5NScsICcxNzE5JywgJzE3MjAnLCAnMTcyMycsXG4gICcyMDQ5JywgJzM2NTknLCAnNDA0NScsICc1MDYwJywgJzUwNjEnLCAnNjAwMCcsICc2NTY2JywgJzY2NjUnLCAnNjY2NicsICc2NjY3JywgJzY2NjgnLCAnNjY2OScsICc2Njk3JyxcbiAgJzEwMDgwJ1xuXVxuXG5jb25zdCBiYWRQb3J0c1NldCA9IG5ldyBTZXQoYmFkUG9ydHMpXG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtcmVmZXJyZXItcG9saWN5LyNyZWZlcnJlci1wb2xpY2llc1xuY29uc3QgcmVmZXJyZXJQb2xpY3kgPSBbXG4gICcnLFxuICAnbm8tcmVmZXJyZXInLFxuICAnbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUnLFxuICAnc2FtZS1vcmlnaW4nLFxuICAnb3JpZ2luJyxcbiAgJ3N0cmljdC1vcmlnaW4nLFxuICAnb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJyxcbiAgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nLFxuICAndW5zYWZlLXVybCdcbl1cbmNvbnN0IHJlZmVycmVyUG9saWN5U2V0ID0gbmV3IFNldChyZWZlcnJlclBvbGljeSlcblxuY29uc3QgcmVxdWVzdFJlZGlyZWN0ID0gWydmb2xsb3cnLCAnbWFudWFsJywgJ2Vycm9yJ11cblxuY29uc3Qgc2FmZU1ldGhvZHMgPSBbJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnVFJBQ0UnXVxuY29uc3Qgc2FmZU1ldGhvZHNTZXQgPSBuZXcgU2V0KHNhZmVNZXRob2RzKVxuXG5jb25zdCByZXF1ZXN0TW9kZSA9IFsnbmF2aWdhdGUnLCAnc2FtZS1vcmlnaW4nLCAnbm8tY29ycycsICdjb3JzJ11cblxuY29uc3QgcmVxdWVzdENyZWRlbnRpYWxzID0gWydvbWl0JywgJ3NhbWUtb3JpZ2luJywgJ2luY2x1ZGUnXVxuXG5jb25zdCByZXF1ZXN0Q2FjaGUgPSBbXG4gICdkZWZhdWx0JyxcbiAgJ25vLXN0b3JlJyxcbiAgJ3JlbG9hZCcsXG4gICduby1jYWNoZScsXG4gICdmb3JjZS1jYWNoZScsXG4gICdvbmx5LWlmLWNhY2hlZCdcbl1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3QtYm9keS1oZWFkZXItbmFtZVxuY29uc3QgcmVxdWVzdEJvZHlIZWFkZXIgPSBbXG4gICdjb250ZW50LWVuY29kaW5nJyxcbiAgJ2NvbnRlbnQtbGFuZ3VhZ2UnLFxuICAnY29udGVudC1sb2NhdGlvbicsXG4gICdjb250ZW50LXR5cGUnLFxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzIwMjFcbiAgLy8gJ0NvbnRlbnQtTGVuZ3RoJyBpcyBhIGZvcmJpZGRlbiBoZWFkZXIgbmFtZSwgd2hpY2ggaXMgdHlwaWNhbGx5XG4gIC8vIHJlbW92ZWQgaW4gdGhlIEhlYWRlcnMgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHVuZGljaSBkb2Vzbid0XG4gIC8vIGZpbHRlciBvdXQgaGVhZGVycywgc28gd2UgYWRkIGl0IGhlcmUuXG4gICdjb250ZW50LWxlbmd0aCdcbl1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2VudW1kZWYtcmVxdWVzdGR1cGxleFxuY29uc3QgcmVxdWVzdER1cGxleCA9IFtcbiAgJ2hhbGYnXG5dXG5cbi8vIGh0dHA6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZvcmJpZGRlbi1tZXRob2RcbmNvbnN0IGZvcmJpZGRlbk1ldGhvZHMgPSBbJ0NPTk5FQ1QnLCAnVFJBQ0UnLCAnVFJBQ0snXVxuY29uc3QgZm9yYmlkZGVuTWV0aG9kc1NldCA9IG5ldyBTZXQoZm9yYmlkZGVuTWV0aG9kcylcblxuY29uc3Qgc3VicmVzb3VyY2UgPSBbXG4gICdhdWRpbycsXG4gICdhdWRpb3dvcmtsZXQnLFxuICAnZm9udCcsXG4gICdpbWFnZScsXG4gICdtYW5pZmVzdCcsXG4gICdwYWludHdvcmtsZXQnLFxuICAnc2NyaXB0JyxcbiAgJ3N0eWxlJyxcbiAgJ3RyYWNrJyxcbiAgJ3ZpZGVvJyxcbiAgJ3hzbHQnLFxuICAnJ1xuXVxuY29uc3Qgc3VicmVzb3VyY2VTZXQgPSBuZXcgU2V0KHN1YnJlc291cmNlKVxuXG4vKiogQHR5cGUge2dsb2JhbFRoaXNbJ0RPTUV4Y2VwdGlvbiddfSAqL1xuY29uc3QgRE9NRXhjZXB0aW9uID0gZ2xvYmFsVGhpcy5ET01FeGNlcHRpb24gPz8gKCgpID0+IHtcbiAgLy8gRE9NRXhjZXB0aW9uIHdhcyBvbmx5IG1hZGUgYSBnbG9iYWwgaW4gTm9kZSB2MTcuMC4wLFxuICAvLyBidXQgZmV0Y2ggc3VwcG9ydHMgPj0gdjE2LjguXG4gIHRyeSB7XG4gICAgYXRvYignficpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZXJyKS5jb25zdHJ1Y3RvclxuICB9XG59KSgpXG5cbmxldCBjaGFubmVsXG5cbi8qKiBAdHlwZSB7Z2xvYmFsVGhpc1snc3RydWN0dXJlZENsb25lJ119ICovXG5jb25zdCBzdHJ1Y3R1cmVkQ2xvbmUgPVxuICBnbG9iYWxUaGlzLnN0cnVjdHVyZWRDbG9uZSA/P1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iMjdhZTI0ZGNjNDI1MWJhZDcyNmQ5ZDg0YmFmNjc4ZDFmNzA3ZmVkL2xpYi9pbnRlcm5hbC9zdHJ1Y3R1cmVkX2Nsb25lLmpzXG4gIC8vIHN0cnVjdHVyZWRDbG9uZSB3YXMgYWRkZWQgaW4gdjE3LjAuMCwgYnV0IGZldGNoIHN1cHBvcnRzIHYxNi44XG4gIGZ1bmN0aW9uIHN0cnVjdHVyZWRDbG9uZSAodmFsdWUsIG9wdGlvbnMgPSB1bmRlZmluZWQpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWlzc2luZyBhcmd1bWVudCcpXG4gICAgfVxuXG4gICAgaWYgKCFjaGFubmVsKSB7XG4gICAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKClcbiAgICB9XG4gICAgY2hhbm5lbC5wb3J0MS51bnJlZigpXG4gICAgY2hhbm5lbC5wb3J0Mi51bnJlZigpXG4gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSh2YWx1ZSwgb3B0aW9ucz8udHJhbnNmZXIpXG4gICAgcmV0dXJuIHJlY2VpdmVNZXNzYWdlT25Qb3J0KGNoYW5uZWwucG9ydDIpLm1lc3NhZ2VcbiAgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRE9NRXhjZXB0aW9uLFxuICBzdHJ1Y3R1cmVkQ2xvbmUsXG4gIHN1YnJlc291cmNlLFxuICBmb3JiaWRkZW5NZXRob2RzLFxuICByZXF1ZXN0Qm9keUhlYWRlcixcbiAgcmVmZXJyZXJQb2xpY3ksXG4gIHJlcXVlc3RSZWRpcmVjdCxcbiAgcmVxdWVzdE1vZGUsXG4gIHJlcXVlc3RDcmVkZW50aWFscyxcbiAgcmVxdWVzdENhY2hlLFxuICByZWRpcmVjdFN0YXR1cyxcbiAgY29yc1NhZmVMaXN0ZWRNZXRob2RzLFxuICBudWxsQm9keVN0YXR1cyxcbiAgc2FmZU1ldGhvZHMsXG4gIGJhZFBvcnRzLFxuICByZXF1ZXN0RHVwbGV4LFxuICBzdWJyZXNvdXJjZVNldCxcbiAgYmFkUG9ydHNTZXQsXG4gIHJlZGlyZWN0U3RhdHVzU2V0LFxuICBjb3JzU2FmZUxpc3RlZE1ldGhvZHNTZXQsXG4gIHNhZmVNZXRob2RzU2V0LFxuICBmb3JiaWRkZW5NZXRob2RzU2V0LFxuICByZWZlcnJlclBvbGljeVNldFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBJbiBjYXNlIG9mIGJyZWFraW5nIGNoYW5nZXMsIGluY3JlYXNlIHRoZSB2ZXJzaW9uXG4vLyBudW1iZXIgdG8gYXZvaWQgY29uZmxpY3RzLlxuY29uc3QgZ2xvYmFsT3JpZ2luID0gU3ltYm9sLmZvcigndW5kaWNpLmdsb2JhbE9yaWdpbi4xJylcblxuZnVuY3Rpb24gZ2V0R2xvYmFsT3JpZ2luICgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXNbZ2xvYmFsT3JpZ2luXVxufVxuXG5mdW5jdGlvbiBzZXRHbG9iYWxPcmlnaW4gKG5ld09yaWdpbikge1xuICBpZiAobmV3T3JpZ2luID09PSB1bmRlZmluZWQpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgZ2xvYmFsT3JpZ2luLCB7XG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBwYXJzZWRVUkwgPSBuZXcgVVJMKG5ld09yaWdpbilcblxuICBpZiAocGFyc2VkVVJMLnByb3RvY29sICE9PSAnaHR0cDonICYmIHBhcnNlZFVSTC5wcm90b2NvbCAhPT0gJ2h0dHBzOicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IGh0dHAgJiBodHRwcyB1cmxzIGFyZSBhbGxvd2VkLCByZWNlaXZlZCAke3BhcnNlZFVSTC5wcm90b2NvbH1gKVxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGdsb2JhbE9yaWdpbiwge1xuICAgIHZhbHVlOiBwYXJzZWRVUkwsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0R2xvYmFsT3JpZ2luLFxuICBzZXRHbG9iYWxPcmlnaW5cbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyByZWRpcmVjdFN0YXR1c1NldCwgcmVmZXJyZXJQb2xpY3lTZXQ6IHJlZmVycmVyUG9saWN5VG9rZW5zLCBiYWRQb3J0c1NldCB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBnZXRHbG9iYWxPcmlnaW4gfSA9IHJlcXVpcmUoJy4vZ2xvYmFsJylcbmNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKVxuY29uc3QgeyBpc0Jsb2JMaWtlLCB0b1VTVlN0cmluZywgUmVhZGFibGVTdHJlYW1Gcm9tIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgaXNVaW50OEFycmF5IH0gPSByZXF1aXJlKCd1dGlsL3R5cGVzJylcblxubGV0IHN1cHBvcnRlZEhhc2hlcyA9IFtdXG5cbi8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjZGV0ZXJtaW5pbmctaWYtY3J5cHRvLXN1cHBvcnQtaXMtdW5hdmFpbGFibGVcbi8qKiBAdHlwZSB7aW1wb3J0KCdjcnlwdG8nKXx1bmRlZmluZWR9ICovXG5sZXQgY3J5cHRvXG5cbnRyeSB7XG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpXG4gIGNvbnN0IHBvc3NpYmxlUmVsZXZhbnRIYXNoZXMgPSBbJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJ11cbiAgc3VwcG9ydGVkSGFzaGVzID0gY3J5cHRvLmdldEhhc2hlcygpLmZpbHRlcigoaGFzaCkgPT4gcG9zc2libGVSZWxldmFudEhhc2hlcy5pbmNsdWRlcyhoYXNoKSlcbi8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbn0gY2F0Y2gge1xufVxuXG5mdW5jdGlvbiByZXNwb25zZVVSTCAocmVzcG9uc2UpIHtcbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3Jlc3BvbnNlc1xuICAvLyBBIHJlc3BvbnNlIGhhcyBhbiBhc3NvY2lhdGVkIFVSTC4gSXQgaXMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IFVSTFxuICAvLyBpbiByZXNwb25zZVx1MjAxOXMgVVJMIGxpc3QgYW5kIG51bGwgaWYgcmVzcG9uc2VcdTIwMTlzIFVSTCBsaXN0IGlzIGVtcHR5LlxuICBjb25zdCB1cmxMaXN0ID0gcmVzcG9uc2UudXJsTGlzdFxuICBjb25zdCBsZW5ndGggPSB1cmxMaXN0Lmxlbmd0aFxuICByZXR1cm4gbGVuZ3RoID09PSAwID8gbnVsbCA6IHVybExpc3RbbGVuZ3RoIC0gMV0udG9TdHJpbmcoKVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS1sb2NhdGlvbi11cmxcbmZ1bmN0aW9uIHJlc3BvbnNlTG9jYXRpb25VUkwgKHJlc3BvbnNlLCByZXF1ZXN0RnJhZ21lbnQpIHtcbiAgLy8gMS4gSWYgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBub3QgYSByZWRpcmVjdCBzdGF0dXMsIHRoZW4gcmV0dXJuIG51bGwuXG4gIGlmICghcmVkaXJlY3RTdGF0dXNTZXQuaGFzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gMi4gTGV0IGxvY2F0aW9uIGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBoZWFkZXIgbGlzdCB2YWx1ZXMgZ2l2ZW5cbiAgLy8gYExvY2F0aW9uYCBhbmQgcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBsZXQgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ2xvY2F0aW9uJylcblxuICAvLyAzLiBJZiBsb2NhdGlvbiBpcyBhIGhlYWRlciB2YWx1ZSwgdGhlbiBzZXQgbG9jYXRpb24gdG8gdGhlIHJlc3VsdCBvZlxuICAvLyAgICBwYXJzaW5nIGxvY2F0aW9uIHdpdGggcmVzcG9uc2VcdTIwMTlzIFVSTC5cbiAgaWYgKGxvY2F0aW9uICE9PSBudWxsICYmIGlzVmFsaWRIZWFkZXJWYWx1ZShsb2NhdGlvbikpIHtcbiAgICBsb2NhdGlvbiA9IG5ldyBVUkwobG9jYXRpb24sIHJlc3BvbnNlVVJMKHJlc3BvbnNlKSlcbiAgfVxuXG4gIC8vIDQuIElmIGxvY2F0aW9uIGlzIGEgVVJMIHdob3NlIGZyYWdtZW50IGlzIG51bGwsIHRoZW4gc2V0IGxvY2F0aW9uXHUyMDE5c1xuICAvLyBmcmFnbWVudCB0byByZXF1ZXN0RnJhZ21lbnQuXG4gIGlmIChsb2NhdGlvbiAmJiAhbG9jYXRpb24uaGFzaCkge1xuICAgIGxvY2F0aW9uLmhhc2ggPSByZXF1ZXN0RnJhZ21lbnRcbiAgfVxuXG4gIC8vIDUuIFJldHVybiBsb2NhdGlvbi5cbiAgcmV0dXJuIGxvY2F0aW9uXG59XG5cbi8qKiBAcmV0dXJucyB7VVJMfSAqL1xuZnVuY3Rpb24gcmVxdWVzdEN1cnJlbnRVUkwgKHJlcXVlc3QpIHtcbiAgcmV0dXJuIHJlcXVlc3QudXJsTGlzdFtyZXF1ZXN0LnVybExpc3QubGVuZ3RoIC0gMV1cbn1cblxuZnVuY3Rpb24gcmVxdWVzdEJhZFBvcnQgKHJlcXVlc3QpIHtcbiAgLy8gMS4gTGV0IHVybCBiZSByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTC5cbiAgY29uc3QgdXJsID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcblxuICAvLyAyLiBJZiB1cmxcdTIwMTlzIHNjaGVtZSBpcyBhbiBIVFRQKFMpIHNjaGVtZSBhbmQgdXJsXHUyMDE5cyBwb3J0IGlzIGEgYmFkIHBvcnQsXG4gIC8vIHRoZW4gcmV0dXJuIGJsb2NrZWQuXG4gIGlmICh1cmxJc0h0dHBIdHRwc1NjaGVtZSh1cmwpICYmIGJhZFBvcnRzU2V0Lmhhcyh1cmwucG9ydCkpIHtcbiAgICByZXR1cm4gJ2Jsb2NrZWQnXG4gIH1cblxuICAvLyAzLiBSZXR1cm4gYWxsb3dlZC5cbiAgcmV0dXJuICdhbGxvd2VkJ1xufVxuXG5mdW5jdGlvbiBpc0Vycm9yTGlrZSAob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBFcnJvciB8fCAoXG4gICAgb2JqZWN0Py5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0Vycm9yJyB8fFxuICAgIG9iamVjdD8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdET01FeGNlcHRpb24nXG4gIClcbn1cblxuLy8gQ2hlY2sgd2hldGhlciB8c3RhdHVzVGV4dHwgaXMgYSBCeXRlU3RyaW5nIGFuZFxuLy8gbWF0Y2hlcyB0aGUgUmVhc29uLVBocmFzZSB0b2tlbiBwcm9kdWN0aW9uLlxuLy8gUkZDIDI2MTY6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNjE2XG4vLyBSRkMgNzIzMDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzBcbi8vIFwicmVhc29uLXBocmFzZSA9ICooIEhUQUIgLyBTUCAvIFZDSEFSIC8gb2JzLXRleHQgKVwiXG4vLyBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi85NC4wLjQ2MDQuMS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2ZldGNoL3Jlc3BvbnNlLmNjI0wxMTZcbmZ1bmN0aW9uIGlzVmFsaWRSZWFzb25QaHJhc2UgKHN0YXR1c1RleHQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0dXNUZXh0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgYyA9IHN0YXR1c1RleHQuY2hhckNvZGVBdChpKVxuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIChcbiAgICAgICAgICBjID09PSAweDA5IHx8IC8vIEhUQUJcbiAgICAgICAgICAoYyA+PSAweDIwICYmIGMgPD0gMHg3ZSkgfHwgLy8gU1AgLyBWQ0hBUlxuICAgICAgICAgIChjID49IDB4ODAgJiYgYyA8PSAweGZmKVxuICAgICAgICApIC8vIG9icy10ZXh0XG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yLjZcbiAqIEBwYXJhbSB7bnVtYmVyfSBjXG4gKi9cbmZ1bmN0aW9uIGlzVG9rZW5DaGFyQ29kZSAoYykge1xuICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlIDB4MjI6XG4gICAgY2FzZSAweDI4OlxuICAgIGNhc2UgMHgyOTpcbiAgICBjYXNlIDB4MmM6XG4gICAgY2FzZSAweDJmOlxuICAgIGNhc2UgMHgzYTpcbiAgICBjYXNlIDB4M2I6XG4gICAgY2FzZSAweDNjOlxuICAgIGNhc2UgMHgzZDpcbiAgICBjYXNlIDB4M2U6XG4gICAgY2FzZSAweDNmOlxuICAgIGNhc2UgMHg0MDpcbiAgICBjYXNlIDB4NWI6XG4gICAgY2FzZSAweDVjOlxuICAgIGNhc2UgMHg1ZDpcbiAgICBjYXNlIDB4N2I6XG4gICAgY2FzZSAweDdkOlxuICAgICAgLy8gRFFVT1RFIGFuZCBcIigpLC86Ozw9Pj9AW1xcXXt9XCJcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBWQ0hBUiAleDIxLTdFXG4gICAgICByZXR1cm4gYyA+PSAweDIxICYmIGMgPD0gMHg3ZVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJhY3RlcnNcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEhUVFBUb2tlbiAoY2hhcmFjdGVycykge1xuICBpZiAoY2hhcmFjdGVycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJhY3RlcnMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoIWlzVG9rZW5DaGFyQ29kZShjaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNoZWFkZXItbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHBvdGVudGlhbFZhbHVlXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRIZWFkZXJOYW1lIChwb3RlbnRpYWxWYWx1ZSkge1xuICByZXR1cm4gaXNWYWxpZEhUVFBUb2tlbihwb3RlbnRpYWxWYWx1ZSlcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNoZWFkZXItdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwb3RlbnRpYWxWYWx1ZVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkSGVhZGVyVmFsdWUgKHBvdGVudGlhbFZhbHVlKSB7XG4gIC8vIC0gSGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgSFRUUCB0YWIgb3Igc3BhY2UgYnl0ZXMuXG4gIC8vIC0gQ29udGFpbnMgbm8gMHgwMCAoTlVMKSBvciBIVFRQIG5ld2xpbmUgYnl0ZXMuXG4gIGlmIChcbiAgICBwb3RlbnRpYWxWYWx1ZS5zdGFydHNXaXRoKCdcXHQnKSB8fFxuICAgIHBvdGVudGlhbFZhbHVlLnN0YXJ0c1dpdGgoJyAnKSB8fFxuICAgIHBvdGVudGlhbFZhbHVlLmVuZHNXaXRoKCdcXHQnKSB8fFxuICAgIHBvdGVudGlhbFZhbHVlLmVuZHNXaXRoKCcgJylcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoXG4gICAgcG90ZW50aWFsVmFsdWUuaW5jbHVkZXMoJ1xcMCcpIHx8XG4gICAgcG90ZW50aWFsVmFsdWUuaW5jbHVkZXMoJ1xccicpIHx8XG4gICAgcG90ZW50aWFsVmFsdWUuaW5jbHVkZXMoJ1xcbicpXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1wb2xpY3kvI3NldC1yZXF1ZXN0cy1yZWZlcnJlci1wb2xpY3ktb24tcmVkaXJlY3RcbmZ1bmN0aW9uIHNldFJlcXVlc3RSZWZlcnJlclBvbGljeU9uUmVkaXJlY3QgKHJlcXVlc3QsIGFjdHVhbFJlc3BvbnNlKSB7XG4gIC8vICBHaXZlbiBhIHJlcXVlc3QgcmVxdWVzdCBhbmQgYSByZXNwb25zZSBhY3R1YWxSZXNwb25zZSwgdGhpcyBhbGdvcml0aG1cbiAgLy8gIHVwZGF0ZXMgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5IGFjY29yZGluZyB0byB0aGUgUmVmZXJyZXItUG9saWN5XG4gIC8vICBoZWFkZXIgKGlmIGFueSkgaW4gYWN0dWFsUmVzcG9uc2UuXG5cbiAgLy8gMS4gTGV0IHBvbGljeSBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyBcdTAwQTcgOC4xIFBhcnNlIGEgcmVmZXJyZXIgcG9saWN5XG4gIC8vIGZyb20gYSBSZWZlcnJlci1Qb2xpY3kgaGVhZGVyIG9uIGFjdHVhbFJlc3BvbnNlLlxuXG4gIC8vIDguMSBQYXJzZSBhIHJlZmVycmVyIHBvbGljeSBmcm9tIGEgUmVmZXJyZXItUG9saWN5IGhlYWRlclxuICAvLyAxLiBMZXQgcG9saWN5LXRva2VucyBiZSB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgaGVhZGVyIGxpc3QgdmFsdWVzIGdpdmVuIGBSZWZlcnJlci1Qb2xpY3lgIGFuZCByZXNwb25zZVx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGNvbnN0IHsgaGVhZGVyc0xpc3QgfSA9IGFjdHVhbFJlc3BvbnNlXG4gIC8vIDIuIExldCBwb2xpY3kgYmUgdGhlIGVtcHR5IHN0cmluZy5cbiAgLy8gMy4gRm9yIGVhY2ggdG9rZW4gaW4gcG9saWN5LXRva2VucywgaWYgdG9rZW4gaXMgYSByZWZlcnJlciBwb2xpY3kgYW5kIHRva2VuIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNldCBwb2xpY3kgdG8gdG9rZW4uXG4gIC8vIDQuIFJldHVybiBwb2xpY3kuXG4gIGNvbnN0IHBvbGljeUhlYWRlciA9IChoZWFkZXJzTGlzdC5nZXQoJ3JlZmVycmVyLXBvbGljeScpID8/ICcnKS5zcGxpdCgnLCcpXG5cbiAgLy8gTm90ZTogQXMgdGhlIHJlZmVycmVyLXBvbGljeSBjYW4gY29udGFpbiBtdWx0aXBsZSBwb2xpY2llc1xuICAvLyBzZXBhcmF0ZWQgYnkgY29tbWEsIHdlIG5lZWQgdG8gbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGVtXG4gIC8vIGFuZCBwaWNrIHRoZSBmaXJzdCB2YWxpZCBvbmUuXG4gIC8vIFJlZjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVycmVyLVBvbGljeSNzcGVjaWZ5X2FfZmFsbGJhY2tfcG9saWN5XG4gIGxldCBwb2xpY3kgPSAnJ1xuICBpZiAocG9saWN5SGVhZGVyLmxlbmd0aCA+IDApIHtcbiAgICAvLyBUaGUgcmlnaHQtbW9zdCBwb2xpY3kgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICAvLyBUaGUgbGVmdC1tb3N0IHBvbGljeSBpcyB0aGUgZmFsbGJhY2suXG4gICAgZm9yIChsZXQgaSA9IHBvbGljeUhlYWRlci5sZW5ndGg7IGkgIT09IDA7IGktLSkge1xuICAgICAgY29uc3QgdG9rZW4gPSBwb2xpY3lIZWFkZXJbaSAtIDFdLnRyaW0oKVxuICAgICAgaWYgKHJlZmVycmVyUG9saWN5VG9rZW5zLmhhcyh0b2tlbikpIHtcbiAgICAgICAgcG9saWN5ID0gdG9rZW5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAyLiBJZiBwb2xpY3kgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeSB0byBwb2xpY3kuXG4gIGlmIChwb2xpY3kgIT09ICcnKSB7XG4gICAgcmVxdWVzdC5yZWZlcnJlclBvbGljeSA9IHBvbGljeVxuICB9XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5LWNoZWNrXG5mdW5jdGlvbiBjcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2hlY2sgKCkge1xuICAvLyBUT0RPXG4gIHJldHVybiAnYWxsb3dlZCdcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtY29ycy1jaGVja1xuZnVuY3Rpb24gY29yc0NoZWNrICgpIHtcbiAgLy8gVE9ET1xuICByZXR1cm4gJ3N1Y2Nlc3MnXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXRhby1jaGVja1xuZnVuY3Rpb24gVEFPQ2hlY2sgKCkge1xuICAvLyBUT0RPXG4gIHJldHVybiAnc3VjY2Vzcydcbn1cblxuZnVuY3Rpb24gYXBwZW5kRmV0Y2hNZXRhZGF0YSAoaHR0cFJlcXVlc3QpIHtcbiAgLy8gIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtZmV0Y2gtbWV0YWRhdGEvI3NlYy1mZXRjaC1kZXN0LWhlYWRlclxuICAvLyAgVE9ET1xuXG4gIC8vICBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWZldGNoLW1ldGFkYXRhLyNzZWMtZmV0Y2gtbW9kZS1oZWFkZXJcblxuICAvLyAgMS4gQXNzZXJ0OiByXHUyMDE5cyB1cmwgaXMgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwuXG4gIC8vICBUT0RPXG5cbiAgLy8gIDIuIExldCBoZWFkZXIgYmUgYSBTdHJ1Y3R1cmVkIEhlYWRlciB3aG9zZSB2YWx1ZSBpcyBhIHRva2VuLlxuICBsZXQgaGVhZGVyID0gbnVsbFxuXG4gIC8vICAzLiBTZXQgaGVhZGVyXHUyMDE5cyB2YWx1ZSB0byByXHUyMDE5cyBtb2RlLlxuICBoZWFkZXIgPSBodHRwUmVxdWVzdC5tb2RlXG5cbiAgLy8gIDQuIFNldCBhIHN0cnVjdHVyZWQgZmllbGQgdmFsdWUgYFNlYy1GZXRjaC1Nb2RlYC9oZWFkZXIgaW4gclx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LnNldCgnc2VjLWZldGNoLW1vZGUnLCBoZWFkZXIpXG5cbiAgLy8gIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtZmV0Y2gtbWV0YWRhdGEvI3NlYy1mZXRjaC1zaXRlLWhlYWRlclxuICAvLyAgVE9ET1xuXG4gIC8vICBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWZldGNoLW1ldGFkYXRhLyNzZWMtZmV0Y2gtdXNlci1oZWFkZXJcbiAgLy8gIFRPRE9cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2FwcGVuZC1hLXJlcXVlc3Qtb3JpZ2luLWhlYWRlclxuZnVuY3Rpb24gYXBwZW5kUmVxdWVzdE9yaWdpbkhlYWRlciAocmVxdWVzdCkge1xuICAvLyAxLiBMZXQgc2VyaWFsaXplZE9yaWdpbiBiZSB0aGUgcmVzdWx0IG9mIGJ5dGUtc2VyaWFsaXppbmcgYSByZXF1ZXN0IG9yaWdpbiB3aXRoIHJlcXVlc3QuXG4gIGxldCBzZXJpYWxpemVkT3JpZ2luID0gcmVxdWVzdC5vcmlnaW5cblxuICAvLyAyLiBJZiByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBcImNvcnNcIiBvciByZXF1ZXN0XHUyMDE5cyBtb2RlIGlzIFwid2Vic29ja2V0XCIsIHRoZW4gYXBwZW5kIChgT3JpZ2luYCwgc2VyaWFsaXplZE9yaWdpbikgdG8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdjb3JzJyB8fCByZXF1ZXN0Lm1vZGUgPT09ICd3ZWJzb2NrZXQnKSB7XG4gICAgaWYgKHNlcmlhbGl6ZWRPcmlnaW4pIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdvcmlnaW4nLCBzZXJpYWxpemVkT3JpZ2luKVxuICAgIH1cblxuICAvLyAzLiBPdGhlcndpc2UsIGlmIHJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyBuZWl0aGVyIGBHRVRgIG5vciBgSEVBRGAsIHRoZW46XG4gIH0gZWxzZSBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdHRVQnICYmIHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAvLyAxLiBTd2l0Y2ggb24gcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5OlxuICAgIHN3aXRjaCAocmVxdWVzdC5yZWZlcnJlclBvbGljeSkge1xuICAgICAgY2FzZSAnbm8tcmVmZXJyZXInOlxuICAgICAgICAvLyBTZXQgc2VyaWFsaXplZE9yaWdpbiB0byBgbnVsbGAuXG4gICAgICAgIHNlcmlhbGl6ZWRPcmlnaW4gPSBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSc6XG4gICAgICBjYXNlICdzdHJpY3Qtb3JpZ2luJzpcbiAgICAgIGNhc2UgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nOlxuICAgICAgICAvLyBJZiByZXF1ZXN0XHUyMDE5cyBvcmlnaW4gaXMgYSB0dXBsZSBvcmlnaW4sIGl0cyBzY2hlbWUgaXMgXCJodHRwc1wiLCBhbmQgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHNjaGVtZSBpcyBub3QgXCJodHRwc1wiLCB0aGVuIHNldCBzZXJpYWxpemVkT3JpZ2luIHRvIGBudWxsYC5cbiAgICAgICAgaWYgKHJlcXVlc3Qub3JpZ2luICYmIHVybEhhc0h0dHBzU2NoZW1lKHJlcXVlc3Qub3JpZ2luKSAmJiAhdXJsSGFzSHR0cHNTY2hlbWUocmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdCkpKSB7XG4gICAgICAgICAgc2VyaWFsaXplZE9yaWdpbiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2FtZS1vcmlnaW4nOlxuICAgICAgICAvLyBJZiByZXF1ZXN0XHUyMDE5cyBvcmlnaW4gaXMgbm90IHNhbWUgb3JpZ2luIHdpdGggcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIG9yaWdpbiwgdGhlbiBzZXQgc2VyaWFsaXplZE9yaWdpbiB0byBgbnVsbGAuXG4gICAgICAgIGlmICghc2FtZU9yaWdpbihyZXF1ZXN0LCByZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KSkpIHtcbiAgICAgICAgICBzZXJpYWxpemVkT3JpZ2luID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nLlxuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkT3JpZ2luKSB7XG4gICAgICAvLyAyLiBBcHBlbmQgKGBPcmlnaW5gLCBzZXJpYWxpemVkT3JpZ2luKSB0byByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdvcmlnaW4nLCBzZXJpYWxpemVkT3JpZ2luKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb2Fyc2VuZWRTaGFyZWRDdXJyZW50VGltZSAoY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkpIHtcbiAgLy8gVE9ET1xuICByZXR1cm4gcGVyZm9ybWFuY2Uubm93KClcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NyZWF0ZS1hbi1vcGFxdWUtdGltaW5nLWluZm9cbmZ1bmN0aW9uIGNyZWF0ZU9wYXF1ZVRpbWluZ0luZm8gKHRpbWluZ0luZm8pIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydFRpbWU6IHRpbWluZ0luZm8uc3RhcnRUaW1lID8/IDAsXG4gICAgcmVkaXJlY3RTdGFydFRpbWU6IDAsXG4gICAgcmVkaXJlY3RFbmRUaW1lOiAwLFxuICAgIHBvc3RSZWRpcmVjdFN0YXJ0VGltZTogdGltaW5nSW5mby5zdGFydFRpbWUgPz8gMCxcbiAgICBmaW5hbFNlcnZpY2VXb3JrZXJTdGFydFRpbWU6IDAsXG4gICAgZmluYWxOZXR3b3JrUmVzcG9uc2VTdGFydFRpbWU6IDAsXG4gICAgZmluYWxOZXR3b3JrUmVxdWVzdFN0YXJ0VGltZTogMCxcbiAgICBlbmRUaW1lOiAwLFxuICAgIGVuY29kZWRCb2R5U2l6ZTogMCxcbiAgICBkZWNvZGVkQm9keVNpemU6IDAsXG4gICAgZmluYWxDb25uZWN0aW9uVGltaW5nSW5mbzogbnVsbFxuICB9XG59XG5cbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3BvbGljeS1jb250YWluZXJcbmZ1bmN0aW9uIG1ha2VQb2xpY3lDb250YWluZXIgKCkge1xuICAvLyBOb3RlOiB0aGUgZmV0Y2ggc3BlYyBkb2Vzbid0IG1ha2UgdXNlIG9mIGVtYmVkZGVyIHBvbGljeSBvciBDU1AgbGlzdFxuICByZXR1cm4ge1xuICAgIHJlZmVycmVyUG9saWN5OiAnc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbidcbiAgfVxufVxuXG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjbG9uZS1hLXBvbGljeS1jb250YWluZXJcbmZ1bmN0aW9uIGNsb25lUG9saWN5Q29udGFpbmVyIChwb2xpY3lDb250YWluZXIpIHtcbiAgcmV0dXJuIHtcbiAgICByZWZlcnJlclBvbGljeTogcG9saWN5Q29udGFpbmVyLnJlZmVycmVyUG9saWN5XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1wb2xpY3kvI2RldGVybWluZS1yZXF1ZXN0cy1yZWZlcnJlclxuZnVuY3Rpb24gZGV0ZXJtaW5lUmVxdWVzdHNSZWZlcnJlciAocmVxdWVzdCkge1xuICAvLyAxLiBMZXQgcG9saWN5IGJlIHJlcXVlc3QncyByZWZlcnJlciBwb2xpY3kuXG4gIGNvbnN0IHBvbGljeSA9IHJlcXVlc3QucmVmZXJyZXJQb2xpY3lcblxuICAvLyBOb3RlOiBwb2xpY3kgY2Fubm90IChzaG91bGRuJ3QpIGJlIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICBhc3NlcnQocG9saWN5KVxuXG4gIC8vIDIuIExldCBlbnZpcm9ubWVudCBiZSByZXF1ZXN0XHUyMDE5cyBjbGllbnQuXG5cbiAgbGV0IHJlZmVycmVyU291cmNlID0gbnVsbFxuXG4gIC8vIDMuIFN3aXRjaCBvbiByZXF1ZXN0XHUyMDE5cyByZWZlcnJlcjpcbiAgaWYgKHJlcXVlc3QucmVmZXJyZXIgPT09ICdjbGllbnQnKSB7XG4gICAgLy8gTm90ZTogbm9kZSBpc24ndCBhIGJyb3dzZXIgYW5kIGRvZXNuJ3QgaW1wbGVtZW50IGRvY3VtZW50L2lmcmFtZXMsXG4gICAgLy8gc28gd2UgYnlwYXNzIHRoaXMgc3RlcCBhbmQgcmVwbGFjZSBpdCB3aXRoIG91ciBvd24uXG5cbiAgICBjb25zdCBnbG9iYWxPcmlnaW4gPSBnZXRHbG9iYWxPcmlnaW4oKVxuXG4gICAgaWYgKCFnbG9iYWxPcmlnaW4gfHwgZ2xvYmFsT3JpZ2luLm9yaWdpbiA9PT0gJ251bGwnKSB7XG4gICAgICByZXR1cm4gJ25vLXJlZmVycmVyJ1xuICAgIH1cblxuICAgIC8vIG5vdGU6IHdlIG5lZWQgdG8gY2xvbmUgaXQgYXMgaXQncyBtdXRhdGVkXG4gICAgcmVmZXJyZXJTb3VyY2UgPSBuZXcgVVJMKGdsb2JhbE9yaWdpbilcbiAgfSBlbHNlIGlmIChyZXF1ZXN0LnJlZmVycmVyIGluc3RhbmNlb2YgVVJMKSB7XG4gICAgLy8gTGV0IHJlZmVycmVyU291cmNlIGJlIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyLlxuICAgIHJlZmVycmVyU291cmNlID0gcmVxdWVzdC5yZWZlcnJlclxuICB9XG5cbiAgLy8gNC4gTGV0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyVVJMIGJlIHRoZSByZXN1bHQgb2Ygc3RyaXBwaW5nIHJlZmVycmVyU291cmNlIGZvclxuICAvLyAgICB1c2UgYXMgYSByZWZlcnJlci5cbiAgbGV0IHJlZmVycmVyVVJMID0gc3RyaXBVUkxGb3JSZWZlcnJlcihyZWZlcnJlclNvdXJjZSlcblxuICAvLyA1LiBMZXQgcmVmZXJyZXJPcmlnaW4gYmUgdGhlIHJlc3VsdCBvZiBzdHJpcHBpbmcgcmVmZXJyZXJTb3VyY2UgZm9yIHVzZSBhc1xuICAvLyAgICBhIHJlZmVycmVyLCB3aXRoIHRoZSBvcmlnaW4tb25seSBmbGFnIHNldCB0byB0cnVlLlxuICBjb25zdCByZWZlcnJlck9yaWdpbiA9IHN0cmlwVVJMRm9yUmVmZXJyZXIocmVmZXJyZXJTb3VyY2UsIHRydWUpXG5cbiAgLy8gNi4gSWYgdGhlIHJlc3VsdCBvZiBzZXJpYWxpemluZyByZWZlcnJlclVSTCBpcyBhIHN0cmluZyB3aG9zZSBsZW5ndGggaXNcbiAgLy8gICAgZ3JlYXRlciB0aGFuIDQwOTYsIHNldCByZWZlcnJlclVSTCB0byByZWZlcnJlck9yaWdpbi5cbiAgaWYgKHJlZmVycmVyVVJMLnRvU3RyaW5nKCkubGVuZ3RoID4gNDA5Nikge1xuICAgIHJlZmVycmVyVVJMID0gcmVmZXJyZXJPcmlnaW5cbiAgfVxuXG4gIGNvbnN0IGFyZVNhbWVPcmlnaW4gPSBzYW1lT3JpZ2luKHJlcXVlc3QsIHJlZmVycmVyVVJMKVxuICBjb25zdCBpc05vblBvdGVudGlhbGx5VHJ1c3RXb3J0aHkgPSBpc1VSTFBvdGVudGlhbGx5VHJ1c3R3b3J0aHkocmVmZXJyZXJVUkwpICYmXG4gICAgIWlzVVJMUG90ZW50aWFsbHlUcnVzdHdvcnRoeShyZXF1ZXN0LnVybClcblxuICAvLyA4LiBFeGVjdXRlIHRoZSBzd2l0Y2ggc3RhdGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB2YWx1ZSBvZiBwb2xpY3k6XG4gIHN3aXRjaCAocG9saWN5KSB7XG4gICAgY2FzZSAnb3JpZ2luJzogcmV0dXJuIHJlZmVycmVyT3JpZ2luICE9IG51bGwgPyByZWZlcnJlck9yaWdpbiA6IHN0cmlwVVJMRm9yUmVmZXJyZXIocmVmZXJyZXJTb3VyY2UsIHRydWUpXG4gICAgY2FzZSAndW5zYWZlLXVybCc6IHJldHVybiByZWZlcnJlclVSTFxuICAgIGNhc2UgJ3NhbWUtb3JpZ2luJzpcbiAgICAgIHJldHVybiBhcmVTYW1lT3JpZ2luID8gcmVmZXJyZXJPcmlnaW4gOiAnbm8tcmVmZXJyZXInXG4gICAgY2FzZSAnb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJzpcbiAgICAgIHJldHVybiBhcmVTYW1lT3JpZ2luID8gcmVmZXJyZXJVUkwgOiByZWZlcnJlck9yaWdpblxuICAgIGNhc2UgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nOiB7XG4gICAgICBjb25zdCBjdXJyZW50VVJMID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcblxuICAgICAgLy8gMS4gSWYgdGhlIG9yaWdpbiBvZiByZWZlcnJlclVSTCBhbmQgdGhlIG9yaWdpbiBvZiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50XG4gICAgICAvLyAgICBVUkwgYXJlIHRoZSBzYW1lLCB0aGVuIHJldHVybiByZWZlcnJlclVSTC5cbiAgICAgIGlmIChzYW1lT3JpZ2luKHJlZmVycmVyVVJMLCBjdXJyZW50VVJMKSkge1xuICAgICAgICByZXR1cm4gcmVmZXJyZXJVUkxcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgcmVmZXJyZXJVUkwgaXMgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwgYW5kIHJlcXVlc3RcdTIwMTlzXG4gICAgICAvLyAgICBjdXJyZW50IFVSTCBpcyBub3QgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwsIHRoZW4gcmV0dXJuIG5vXG4gICAgICAvLyAgICByZWZlcnJlci5cbiAgICAgIGlmIChpc1VSTFBvdGVudGlhbGx5VHJ1c3R3b3J0aHkocmVmZXJyZXJVUkwpICYmICFpc1VSTFBvdGVudGlhbGx5VHJ1c3R3b3J0aHkoY3VycmVudFVSTCkpIHtcbiAgICAgICAgcmV0dXJuICduby1yZWZlcnJlcidcbiAgICAgIH1cblxuICAgICAgLy8gMy4gUmV0dXJuIHJlZmVycmVyT3JpZ2luLlxuICAgICAgcmV0dXJuIHJlZmVycmVyT3JpZ2luXG4gICAgfVxuICAgIGNhc2UgJ3N0cmljdC1vcmlnaW4nOiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAvKipcbiAgICAgICAgICogMS4gSWYgcmVmZXJyZXJVUkwgaXMgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwgYW5kXG4gICAgICAgICAqIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMIGlzIG5vdCBhIHBvdGVudGlhbGx5IHRydXN0d29ydGh5IFVSTCxcbiAgICAgICAgICogdGhlbiByZXR1cm4gbm8gcmVmZXJyZXIuXG4gICAgICAgICAqIDIuIFJldHVybiByZWZlcnJlck9yaWdpblxuICAgICAgICAqL1xuICAgIGNhc2UgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJzogLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgLyoqXG4gICAgICAgKiAxLiBJZiByZWZlcnJlclVSTCBpcyBhIHBvdGVudGlhbGx5IHRydXN0d29ydGh5IFVSTCBhbmRcbiAgICAgICAqIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMIGlzIG5vdCBhIHBvdGVudGlhbGx5IHRydXN0d29ydGh5IFVSTCxcbiAgICAgICAqIHRoZW4gcmV0dXJuIG5vIHJlZmVycmVyLlxuICAgICAgICogMi4gUmV0dXJuIHJlZmVycmVyT3JpZ2luXG4gICAgICAqL1xuXG4gICAgZGVmYXVsdDogLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgcmV0dXJuIGlzTm9uUG90ZW50aWFsbHlUcnVzdFdvcnRoeSA/ICduby1yZWZlcnJlcicgOiByZWZlcnJlck9yaWdpblxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLXJlZmVycmVyLXBvbGljeS8jc3RyaXAtdXJsXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBvcmlnaW5Pbmx5XG4gKi9cbmZ1bmN0aW9uIHN0cmlwVVJMRm9yUmVmZXJyZXIgKHVybCwgb3JpZ2luT25seSkge1xuICAvLyAxLiBBc3NlcnQ6IHVybCBpcyBhIFVSTC5cbiAgYXNzZXJ0KHVybCBpbnN0YW5jZW9mIFVSTClcblxuICAvLyAyLiBJZiB1cmxcdTIwMTlzIHNjaGVtZSBpcyBhIGxvY2FsIHNjaGVtZSwgdGhlbiByZXR1cm4gbm8gcmVmZXJyZXIuXG4gIGlmICh1cmwucHJvdG9jb2wgPT09ICdmaWxlOicgfHwgdXJsLnByb3RvY29sID09PSAnYWJvdXQ6JyB8fCB1cmwucHJvdG9jb2wgPT09ICdibGFuazonKSB7XG4gICAgcmV0dXJuICduby1yZWZlcnJlcidcbiAgfVxuXG4gIC8vIDMuIFNldCB1cmxcdTIwMTlzIHVzZXJuYW1lIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gIHVybC51c2VybmFtZSA9ICcnXG5cbiAgLy8gNC4gU2V0IHVybFx1MjAxOXMgcGFzc3dvcmQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgdXJsLnBhc3N3b3JkID0gJydcblxuICAvLyA1LiBTZXQgdXJsXHUyMDE5cyBmcmFnbWVudCB0byBudWxsLlxuICB1cmwuaGFzaCA9ICcnXG5cbiAgLy8gNi4gSWYgdGhlIG9yaWdpbi1vbmx5IGZsYWcgaXMgdHJ1ZSwgdGhlbjpcbiAgaWYgKG9yaWdpbk9ubHkpIHtcbiAgICAvLyAxLiBTZXQgdXJsXHUyMDE5cyBwYXRoIHRvIFx1MDBBQiB0aGUgZW1wdHkgc3RyaW5nIFx1MDBCQi5cbiAgICB1cmwucGF0aG5hbWUgPSAnJ1xuXG4gICAgLy8gMi4gU2V0IHVybFx1MjAxOXMgcXVlcnkgdG8gbnVsbC5cbiAgICB1cmwuc2VhcmNoID0gJydcbiAgfVxuXG4gIC8vIDcuIFJldHVybiB1cmwuXG4gIHJldHVybiB1cmxcbn1cblxuZnVuY3Rpb24gaXNVUkxQb3RlbnRpYWxseVRydXN0d29ydGh5ICh1cmwpIHtcbiAgaWYgKCEodXJsIGluc3RhbmNlb2YgVVJMKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gSWYgY2hpbGQgb2YgYWJvdXQsIHJldHVybiB0cnVlXG4gIGlmICh1cmwuaHJlZiA9PT0gJ2Fib3V0OmJsYW5rJyB8fCB1cmwuaHJlZiA9PT0gJ2Fib3V0OnNyY2RvYycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gSWYgc2NoZW1lIGlzIGRhdGEsIHJldHVybiB0cnVlXG4gIGlmICh1cmwucHJvdG9jb2wgPT09ICdkYXRhOicpIHJldHVybiB0cnVlXG5cbiAgLy8gSWYgZmlsZSwgcmV0dXJuIHRydWVcbiAgaWYgKHVybC5wcm90b2NvbCA9PT0gJ2ZpbGU6JykgcmV0dXJuIHRydWVcblxuICByZXR1cm4gaXNPcmlnaW5Qb3RlbnRpYWxseVRydXN0d29ydGh5KHVybC5vcmlnaW4pXG5cbiAgZnVuY3Rpb24gaXNPcmlnaW5Qb3RlbnRpYWxseVRydXN0d29ydGh5IChvcmlnaW4pIHtcbiAgICAvLyBJZiBvcmlnaW4gaXMgZXhwbGljaXRseSBudWxsLCByZXR1cm4gZmFsc2VcbiAgICBpZiAob3JpZ2luID09IG51bGwgfHwgb3JpZ2luID09PSAnbnVsbCcpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3Qgb3JpZ2luQXNVUkwgPSBuZXcgVVJMKG9yaWdpbilcblxuICAgIC8vIElmIHNlY3VyZSwgcmV0dXJuIHRydWVcbiAgICBpZiAob3JpZ2luQXNVUkwucHJvdG9jb2wgPT09ICdodHRwczonIHx8IG9yaWdpbkFzVVJMLnByb3RvY29sID09PSAnd3NzOicpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gSWYgbG9jYWxob3N0IG9yIHZhcmlhbnRzLCByZXR1cm4gdHJ1ZVxuICAgIGlmICgvXjEyNyg/OlxcLlswLTldKyl7MCwyfVxcLlswLTldKyR8XlxcWyg/OjAqOikqPzo/MCoxXFxdJC8udGVzdChvcmlnaW5Bc1VSTC5ob3N0bmFtZSkgfHxcbiAgICAgKG9yaWdpbkFzVVJMLmhvc3RuYW1lID09PSAnbG9jYWxob3N0JyB8fCBvcmlnaW5Bc1VSTC5ob3N0bmFtZS5pbmNsdWRlcygnbG9jYWxob3N0LicpKSB8fFxuICAgICAob3JpZ2luQXNVUkwuaG9zdG5hbWUuZW5kc1dpdGgoJy5sb2NhbGhvc3QnKSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gSWYgYW55IG90aGVyLCByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvI2RvZXMtcmVzcG9uc2UtbWF0Y2gtbWV0YWRhdGFsaXN0XG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0YWRhdGFMaXN0XG4gKi9cbmZ1bmN0aW9uIGJ5dGVzTWF0Y2ggKGJ5dGVzLCBtZXRhZGF0YUxpc3QpIHtcbiAgLy8gSWYgbm9kZSBpcyBub3QgYnVpbHQgd2l0aCBPcGVuU1NMIHN1cHBvcnQsIHdlIGNhbm5vdCBjaGVja1xuICAvLyBhIHJlcXVlc3QncyBpbnRlZ3JpdHksIHNvIGFsbG93IGl0IGJ5IGRlZmF1bHQgKHRoZSBzcGVjIHdpbGxcbiAgLy8gYWxsb3cgcmVxdWVzdHMgaWYgYW4gaW52YWxpZCBoYXNoIGlzIGdpdmVuLCBhcyBwcmVjZWRlbmNlKS5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmOiBvbmx5IGlmIG5vZGUgaXMgYnVpbHQgd2l0aCAtLXdpdGhvdXQtc3NsICovXG4gIGlmIChjcnlwdG8gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyAxLiBMZXQgcGFyc2VkTWV0YWRhdGEgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIG1ldGFkYXRhTGlzdC5cbiAgY29uc3QgcGFyc2VkTWV0YWRhdGEgPSBwYXJzZU1ldGFkYXRhKG1ldGFkYXRhTGlzdClcblxuICAvLyAyLiBJZiBwYXJzZWRNZXRhZGF0YSBpcyBubyBtZXRhZGF0YSwgcmV0dXJuIHRydWUuXG4gIGlmIChwYXJzZWRNZXRhZGF0YSA9PT0gJ25vIG1ldGFkYXRhJykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyAzLiBJZiByZXNwb25zZSBpcyBub3QgZWxpZ2libGUgZm9yIGludGVncml0eSB2YWxpZGF0aW9uLCByZXR1cm4gZmFsc2UuXG4gIC8vIFRPRE9cblxuICAvLyA0LiBJZiBwYXJzZWRNZXRhZGF0YSBpcyB0aGUgZW1wdHkgc2V0LCByZXR1cm4gdHJ1ZS5cbiAgaWYgKHBhcnNlZE1ldGFkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyA1LiBMZXQgbWV0YWRhdGEgYmUgdGhlIHJlc3VsdCBvZiBnZXR0aW5nIHRoZSBzdHJvbmdlc3RcbiAgLy8gICAgbWV0YWRhdGEgZnJvbSBwYXJzZWRNZXRhZGF0YS5cbiAgY29uc3Qgc3Ryb25nZXN0ID0gZ2V0U3Ryb25nZXN0TWV0YWRhdGEocGFyc2VkTWV0YWRhdGEpXG4gIGNvbnN0IG1ldGFkYXRhID0gZmlsdGVyTWV0YWRhdGFMaXN0QnlBbGdvcml0aG0ocGFyc2VkTWV0YWRhdGEsIHN0cm9uZ2VzdClcblxuICAvLyA2LiBGb3IgZWFjaCBpdGVtIGluIG1ldGFkYXRhOlxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWV0YWRhdGEpIHtcbiAgICAvLyAxLiBMZXQgYWxnb3JpdGhtIGJlIHRoZSBhbGcgY29tcG9uZW50IG9mIGl0ZW0uXG4gICAgY29uc3QgYWxnb3JpdGhtID0gaXRlbS5hbGdvXG5cbiAgICAvLyAyLiBMZXQgZXhwZWN0ZWRWYWx1ZSBiZSB0aGUgdmFsIGNvbXBvbmVudCBvZiBpdGVtLlxuICAgIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBpdGVtLmhhc2hcblxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9jb21taXQvZTRjNWNjN2E1ZTQ4MDkzMjIwNTI4ZGZkZDFjNDAxMmRjMzgzN2EwZVxuICAgIC8vIFwiYmUgbGliZXJhbCB3aXRoIHBhZGRpbmdcIi4gVGhpcyBpcyBhbm5veWluZywgYW5kIGl0J3Mgbm90IGV2ZW4gaW4gdGhlIHNwZWMuXG5cbiAgICAvLyAzLiBMZXQgYWN0dWFsVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBhbGdvcml0aG0gdG8gYnl0ZXMuXG4gICAgbGV0IGFjdHVhbFZhbHVlID0gY3J5cHRvLmNyZWF0ZUhhc2goYWxnb3JpdGhtKS51cGRhdGUoYnl0ZXMpLmRpZ2VzdCgnYmFzZTY0JylcblxuICAgIGlmIChhY3R1YWxWYWx1ZVthY3R1YWxWYWx1ZS5sZW5ndGggLSAxXSA9PT0gJz0nKSB7XG4gICAgICBpZiAoYWN0dWFsVmFsdWVbYWN0dWFsVmFsdWUubGVuZ3RoIC0gMl0gPT09ICc9Jykge1xuICAgICAgICBhY3R1YWxWYWx1ZSA9IGFjdHVhbFZhbHVlLnNsaWNlKDAsIC0yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0dWFsVmFsdWUgPSBhY3R1YWxWYWx1ZS5zbGljZSgwLCAtMSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0LiBJZiBhY3R1YWxWYWx1ZSBpcyBhIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZvciBleHBlY3RlZFZhbHVlLFxuICAgIC8vICAgIHJldHVybiB0cnVlLlxuICAgIGlmIChjb21wYXJlQmFzZTY0TWl4ZWQoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8vIDcuIFJldHVybiBmYWxzZS5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtc3VicmVzb3VyY2UtaW50ZWdyaXR5LyNncmFtbWFyZGVmLWhhc2gtd2l0aC1vcHRpb25zXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQMi8jc291cmNlLWxpc3Qtc3ludGF4XG4vLyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNTIzNCNhcHBlbmRpeC1CLjFcbmNvbnN0IHBhcnNlSGFzaFdpdGhPcHRpb25zID0gLyg/PGFsZ28+c2hhMjU2fHNoYTM4NHxzaGE1MTIpLSgoPzxoYXNoPltBLVphLXowLTkrL10rfFtBLVphLXowLTlfLV0rKT17MCwyfSg/Olxcc3wkKSggK1shLX5dKik/KT8vaVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvI3BhcnNlLW1ldGFkYXRhXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0YWRhdGFcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZXRhZGF0YSAobWV0YWRhdGEpIHtcbiAgLy8gMS4gTGV0IHJlc3VsdCBiZSB0aGUgZW1wdHkgc2V0LlxuICAvKiogQHR5cGUge3sgYWxnbzogc3RyaW5nLCBoYXNoOiBzdHJpbmcgfVtdfSAqL1xuICBjb25zdCByZXN1bHQgPSBbXVxuXG4gIC8vIDIuIExldCBlbXB0eSBiZSBlcXVhbCB0byB0cnVlLlxuICBsZXQgZW1wdHkgPSB0cnVlXG5cbiAgLy8gMy4gRm9yIGVhY2ggdG9rZW4gcmV0dXJuZWQgYnkgc3BsaXR0aW5nIG1ldGFkYXRhIG9uIHNwYWNlczpcbiAgZm9yIChjb25zdCB0b2tlbiBvZiBtZXRhZGF0YS5zcGxpdCgnICcpKSB7XG4gICAgLy8gMS4gU2V0IGVtcHR5IHRvIGZhbHNlLlxuICAgIGVtcHR5ID0gZmFsc2VcblxuICAgIC8vIDIuIFBhcnNlIHRva2VuIGFzIGEgaGFzaC13aXRoLW9wdGlvbnMuXG4gICAgY29uc3QgcGFyc2VkVG9rZW4gPSBwYXJzZUhhc2hXaXRoT3B0aW9ucy5leGVjKHRva2VuKVxuXG4gICAgLy8gMy4gSWYgdG9rZW4gZG9lcyBub3QgcGFyc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRva2VuLlxuICAgIGlmIChcbiAgICAgIHBhcnNlZFRva2VuID09PSBudWxsIHx8XG4gICAgICBwYXJzZWRUb2tlbi5ncm91cHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgcGFyc2VkVG9rZW4uZ3JvdXBzLmFsZ28gPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgLy8gTm90ZTogQ2hyb21pdW0gYmxvY2tzIHRoZSByZXF1ZXN0IGF0IHRoaXMgcG9pbnQsIGJ1dCBGaXJlZm94XG4gICAgICAvLyBnaXZlcyBhIHdhcm5pbmcgdGhhdCBhbiBpbnZhbGlkIGludGVncml0eSB3YXMgZ2l2ZW4uIFRoZVxuICAgICAgLy8gY29ycmVjdCBiZWhhdmlvciBpcyB0byBpZ25vcmUgdGhlc2UsIGFuZCBzdWJzZXF1ZW50bHkgbm90XG4gICAgICAvLyBjaGVjayB0aGUgaW50ZWdyaXR5IG9mIHRoZSByZXNvdXJjZS5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gNC4gTGV0IGFsZ29yaXRobSBiZSB0aGUgaGFzaC1hbGdvIGNvbXBvbmVudCBvZiB0b2tlbi5cbiAgICBjb25zdCBhbGdvcml0aG0gPSBwYXJzZWRUb2tlbi5ncm91cHMuYWxnby50b0xvd2VyQ2FzZSgpXG5cbiAgICAvLyA1LiBJZiBhbGdvcml0aG0gaXMgYSBoYXNoIGZ1bmN0aW9uIHJlY29nbml6ZWQgYnkgdGhlIHVzZXJcbiAgICAvLyAgICBhZ2VudCwgYWRkIHRoZSBwYXJzZWQgdG9rZW4gdG8gcmVzdWx0LlxuICAgIGlmIChzdXBwb3J0ZWRIYXNoZXMuaW5jbHVkZXMoYWxnb3JpdGhtKSkge1xuICAgICAgcmVzdWx0LnB1c2gocGFyc2VkVG9rZW4uZ3JvdXBzKVxuICAgIH1cbiAgfVxuXG4gIC8vIDQuIFJldHVybiBubyBtZXRhZGF0YSBpZiBlbXB0eSBpcyB0cnVlLCBvdGhlcndpc2UgcmV0dXJuIHJlc3VsdC5cbiAgaWYgKGVtcHR5ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuICdubyBtZXRhZGF0YSdcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3sgYWxnbzogJ3NoYTI1NicgfCAnc2hhMzg0JyB8ICdzaGE1MTInIH1bXX0gbWV0YWRhdGFMaXN0XG4gKi9cbmZ1bmN0aW9uIGdldFN0cm9uZ2VzdE1ldGFkYXRhIChtZXRhZGF0YUxpc3QpIHtcbiAgLy8gTGV0IGFsZ29yaXRobSBiZSB0aGUgYWxnbyBjb21wb25lbnQgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gbWV0YWRhdGFMaXN0LlxuICAvLyBDYW4gYmUgc2hhMjU2XG4gIGxldCBhbGdvcml0aG0gPSBtZXRhZGF0YUxpc3RbMF0uYWxnb1xuICAvLyBJZiB0aGUgYWxnb3JpdGhtIGlzIHNoYTUxMiwgdGhlbiBpdCBpcyB0aGUgc3Ryb25nZXN0XG4gIC8vIGFuZCB3ZSBjYW4gcmV0dXJuIGltbWVkaWF0ZWx5XG4gIGlmIChhbGdvcml0aG1bM10gPT09ICc1Jykge1xuICAgIHJldHVybiBhbGdvcml0aG1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbWV0YWRhdGFMaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBtZXRhZGF0YUxpc3RbaV1cbiAgICAvLyBJZiB0aGUgYWxnb3JpdGhtIGlzIHNoYTUxMiwgdGhlbiBpdCBpcyB0aGUgc3Ryb25nZXN0XG4gICAgLy8gYW5kIHdlIGNhbiBicmVhayB0aGUgbG9vcCBpbW1lZGlhdGVseVxuICAgIGlmIChtZXRhZGF0YS5hbGdvWzNdID09PSAnNScpIHtcbiAgICAgIGFsZ29yaXRobSA9ICdzaGE1MTInXG4gICAgICBicmVha1xuICAgIC8vIElmIHRoZSBhbGdvcml0aG0gaXMgc2hhMzg0LCB0aGVuIGEgcG90ZW50aWFsIHNoYTI1NiBvciBzaGEzODQgaXMgaWdub3JlZFxuICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtWzNdID09PSAnMycpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgLy8gYWxnb3JpdGhtIGlzIHNoYTI1NiwgY2hlY2sgaWYgYWxnb3JpdGhtIGlzIHNoYTM4NCBhbmQgaWYgc28sIHNldCBpdCBhc1xuICAgIC8vIHRoZSBzdHJvbmdlc3RcbiAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLmFsZ29bM10gPT09ICczJykge1xuICAgICAgYWxnb3JpdGhtID0gJ3NoYTM4NCdcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFsZ29yaXRobVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJNZXRhZGF0YUxpc3RCeUFsZ29yaXRobSAobWV0YWRhdGFMaXN0LCBhbGdvcml0aG0pIHtcbiAgaWYgKG1ldGFkYXRhTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gbWV0YWRhdGFMaXN0XG4gIH1cblxuICBsZXQgcG9zID0gMFxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGFkYXRhTGlzdC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChtZXRhZGF0YUxpc3RbaV0uYWxnbyA9PT0gYWxnb3JpdGhtKSB7XG4gICAgICBtZXRhZGF0YUxpc3RbcG9zKytdID0gbWV0YWRhdGFMaXN0W2ldXG4gICAgfVxuICB9XG5cbiAgbWV0YWRhdGFMaXN0Lmxlbmd0aCA9IHBvc1xuXG4gIHJldHVybiBtZXRhZGF0YUxpc3Rcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYmFzZTY0IHN0cmluZ3MsIGFsbG93aW5nIGZvciBiYXNlNjR1cmxcbiAqIGluIHRoZSBzZWNvbmQgc3RyaW5nLlxuICpcbiogQHBhcmFtIHtzdHJpbmd9IGFjdHVhbFZhbHVlIGFsd2F5cyBiYXNlNjRcbiAqIEBwYXJhbSB7c3RyaW5nfSBleHBlY3RlZFZhbHVlIGJhc2U2NCBvciBiYXNlNjR1cmxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBjb21wYXJlQmFzZTY0TWl4ZWQgKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKSB7XG4gIGlmIChhY3R1YWxWYWx1ZS5sZW5ndGggIT09IGV4cGVjdGVkVmFsdWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWxWYWx1ZS5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhY3R1YWxWYWx1ZVtpXSAhPT0gZXhwZWN0ZWRWYWx1ZVtpXSkge1xuICAgICAgaWYgKFxuICAgICAgICAoYWN0dWFsVmFsdWVbaV0gPT09ICcrJyAmJiBleHBlY3RlZFZhbHVlW2ldID09PSAnLScpIHx8XG4gICAgICAgIChhY3R1YWxWYWx1ZVtpXSA9PT0gJy8nICYmIGV4cGVjdGVkVmFsdWVbaV0gPT09ICdfJylcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy11cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzLyN1cGdyYWRlLXJlcXVlc3RcbmZ1bmN0aW9uIHRyeVVwZ3JhZGVSZXF1ZXN0VG9BUG90ZW50aWFsbHlUcnVzdHdvcnRoeVVSTCAocmVxdWVzdCkge1xuICAvLyBUT0RPXG59XG5cbi8qKlxuICogQGxpbmsge2h0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3NhbWUtb3JpZ2lufVxuICogQHBhcmFtIHtVUkx9IEFcbiAqIEBwYXJhbSB7VVJMfSBCXG4gKi9cbmZ1bmN0aW9uIHNhbWVPcmlnaW4gKEEsIEIpIHtcbiAgLy8gMS4gSWYgQSBhbmQgQiBhcmUgdGhlIHNhbWUgb3BhcXVlIG9yaWdpbiwgdGhlbiByZXR1cm4gdHJ1ZS5cbiAgaWYgKEEub3JpZ2luID09PSBCLm9yaWdpbiAmJiBBLm9yaWdpbiA9PT0gJ251bGwnKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIDIuIElmIEEgYW5kIEIgYXJlIGJvdGggdHVwbGUgb3JpZ2lucyBhbmQgdGhlaXIgc2NoZW1lcyxcbiAgLy8gICAgaG9zdHMsIGFuZCBwb3J0IGFyZSBpZGVudGljYWwsIHRoZW4gcmV0dXJuIHRydWUuXG4gIGlmIChBLnByb3RvY29sID09PSBCLnByb3RvY29sICYmIEEuaG9zdG5hbWUgPT09IEIuaG9zdG5hbWUgJiYgQS5wb3J0ID09PSBCLnBvcnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gMy4gUmV0dXJuIGZhbHNlLlxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWRQcm9taXNlICgpIHtcbiAgbGV0IHJlc1xuICBsZXQgcmVqXG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcmVzID0gcmVzb2x2ZVxuICAgIHJlaiA9IHJlamVjdFxuICB9KVxuXG4gIHJldHVybiB7IHByb21pc2UsIHJlc29sdmU6IHJlcywgcmVqZWN0OiByZWogfVxufVxuXG5mdW5jdGlvbiBpc0Fib3J0ZWQgKGZldGNoUGFyYW1zKSB7XG4gIHJldHVybiBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnN0YXRlID09PSAnYWJvcnRlZCdcbn1cblxuZnVuY3Rpb24gaXNDYW5jZWxsZWQgKGZldGNoUGFyYW1zKSB7XG4gIHJldHVybiBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnN0YXRlID09PSAnYWJvcnRlZCcgfHxcbiAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnN0YXRlID09PSAndGVybWluYXRlZCdcbn1cblxuY29uc3Qgbm9ybWFsaXplTWV0aG9kUmVjb3JkID0ge1xuICBkZWxldGU6ICdERUxFVEUnLFxuICBERUxFVEU6ICdERUxFVEUnLFxuICBnZXQ6ICdHRVQnLFxuICBHRVQ6ICdHRVQnLFxuICBoZWFkOiAnSEVBRCcsXG4gIEhFQUQ6ICdIRUFEJyxcbiAgb3B0aW9uczogJ09QVElPTlMnLFxuICBPUFRJT05TOiAnT1BUSU9OUycsXG4gIHBvc3Q6ICdQT1NUJyxcbiAgUE9TVDogJ1BPU1QnLFxuICBwdXQ6ICdQVVQnLFxuICBQVVQ6ICdQVVQnXG59XG5cbi8vIE5vdGU6IG9iamVjdCBwcm90b3R5cGVzIHNob3VsZCBub3QgYmUgYWJsZSB0byBiZSByZWZlcmVuY2VkLiBlLmcuIGBPYmplY3QjaGFzT3duUHJvcGVydHlgLlxuT2JqZWN0LnNldFByb3RvdHlwZU9mKG5vcm1hbGl6ZU1ldGhvZFJlY29yZCwgbnVsbClcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LW1ldGhvZC1ub3JtYWxpemVcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2RcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kIChtZXRob2QpIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZU1ldGhvZFJlY29yZFttZXRob2QudG9Mb3dlckNhc2UoKV0gPz8gbWV0aG9kXG59XG5cbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzZXJpYWxpemUtYS1qYXZhc2NyaXB0LXZhbHVlLXRvLWEtanNvbi1zdHJpbmdcbmZ1bmN0aW9uIHNlcmlhbGl6ZUphdmFzY3JpcHRWYWx1ZVRvSlNPTlN0cmluZyAodmFsdWUpIHtcbiAgLy8gMS4gTGV0IHJlc3VsdCBiZSA/IENhbGwoJUpTT04uc3RyaW5naWZ5JSwgdW5kZWZpbmVkLCBcdTAwQUIgdmFsdWUgXHUwMEJCKS5cbiAgY29uc3QgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpXG5cbiAgLy8gMi4gSWYgcmVzdWx0IGlzIHVuZGVmaW5lZCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlJylcbiAgfVxuXG4gIC8vIDMuIEFzc2VydDogcmVzdWx0IGlzIGEgc3RyaW5nLlxuICBhc3NlcnQodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpXG5cbiAgLy8gNC4gUmV0dXJuIHJlc3VsdC5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSUyNWl0ZXJhdG9ycHJvdG90eXBlJTI1LW9iamVjdFxuY29uc3QgZXNJdGVyYXRvclByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSlcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZGZuLWl0ZXJhdG9yLXByb3RvdHlwZS1vYmplY3RcbiAqIEBwYXJhbSB7KCkgPT4gdW5rbm93bltdfSBpdGVyYXRvclxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgbmFtZSBvZiB0aGUgaW5zdGFuY2VcbiAqIEBwYXJhbSB7J2tleSd8J3ZhbHVlJ3wna2V5K3ZhbHVlJ30ga2luZFxuICovXG5mdW5jdGlvbiBtYWtlSXRlcmF0b3IgKGl0ZXJhdG9yLCBuYW1lLCBraW5kKSB7XG4gIGNvbnN0IG9iamVjdCA9IHtcbiAgICBpbmRleDogMCxcbiAgICBraW5kLFxuICAgIHRhcmdldDogaXRlcmF0b3JcbiAgfVxuXG4gIGNvbnN0IGkgPSB7XG4gICAgbmV4dCAoKSB7XG4gICAgICAvLyAxLiBMZXQgaW50ZXJmYWNlIGJlIHRoZSBpbnRlcmZhY2UgZm9yIHdoaWNoIHRoZSBpdGVyYXRvciBwcm90b3R5cGUgb2JqZWN0IGV4aXN0cy5cblxuICAgICAgLy8gMi4gTGV0IHRoaXNWYWx1ZSBiZSB0aGUgdGhpcyB2YWx1ZS5cblxuICAgICAgLy8gMy4gTGV0IG9iamVjdCBiZSA/IFRvT2JqZWN0KHRoaXNWYWx1ZSkuXG5cbiAgICAgIC8vIDQuIElmIG9iamVjdCBpcyBhIHBsYXRmb3JtIG9iamVjdCwgdGhlbiBwZXJmb3JtIGEgc2VjdXJpdHlcbiAgICAgIC8vICAgIGNoZWNrLCBwYXNzaW5nOlxuXG4gICAgICAvLyA1LiBJZiBvYmplY3QgaXMgbm90IGEgZGVmYXVsdCBpdGVyYXRvciBvYmplY3QgZm9yIGludGVyZmFjZSxcbiAgICAgIC8vICAgIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpICE9PSBpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgYCduZXh0JyBjYWxsZWQgb24gYW4gb2JqZWN0IHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IGludGVyZmFjZSAke25hbWV9IEl0ZXJhdG9yLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyA2LiBMZXQgaW5kZXggYmUgb2JqZWN0XHUyMDE5cyBpbmRleC5cbiAgICAgIC8vIDcuIExldCBraW5kIGJlIG9iamVjdFx1MjAxOXMga2luZC5cbiAgICAgIC8vIDguIExldCB2YWx1ZXMgYmUgb2JqZWN0XHUyMDE5cyB0YXJnZXQncyB2YWx1ZSBwYWlycyB0byBpdGVyYXRlIG92ZXIuXG4gICAgICBjb25zdCB7IGluZGV4LCBraW5kLCB0YXJnZXQgfSA9IG9iamVjdFxuICAgICAgY29uc3QgdmFsdWVzID0gdGFyZ2V0KClcblxuICAgICAgLy8gOS4gTGV0IGxlbiBiZSB0aGUgbGVuZ3RoIG9mIHZhbHVlcy5cbiAgICAgIGNvbnN0IGxlbiA9IHZhbHVlcy5sZW5ndGhcblxuICAgICAgLy8gMTAuIElmIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBsZW4sIHRoZW4gcmV0dXJuXG4gICAgICAvLyAgICAgQ3JlYXRlSXRlclJlc3VsdE9iamVjdCh1bmRlZmluZWQsIHRydWUpLlxuICAgICAgaWYgKGluZGV4ID49IGxlbikge1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH1cbiAgICAgIH1cblxuICAgICAgLy8gMTEuIExldCBwYWlyIGJlIHRoZSBlbnRyeSBpbiB2YWx1ZXMgYXQgaW5kZXggaW5kZXguXG4gICAgICBjb25zdCBwYWlyID0gdmFsdWVzW2luZGV4XVxuXG4gICAgICAvLyAxMi4gU2V0IG9iamVjdFx1MjAxOXMgaW5kZXggdG8gaW5kZXggKyAxLlxuICAgICAgb2JqZWN0LmluZGV4ID0gaW5kZXggKyAxXG5cbiAgICAgIC8vIDEzLiBSZXR1cm4gdGhlIGl0ZXJhdG9yIHJlc3VsdCBmb3IgcGFpciBhbmQga2luZC5cbiAgICAgIHJldHVybiBpdGVyYXRvclJlc3VsdChwYWlyLCBraW5kKVxuICAgIH0sXG4gICAgLy8gVGhlIGNsYXNzIHN0cmluZyBvZiBhbiBpdGVyYXRvciBwcm90b3R5cGUgb2JqZWN0IGZvciBhIGdpdmVuIGludGVyZmFjZSBpcyB0aGVcbiAgICAvLyByZXN1bHQgb2YgY29uY2F0ZW5hdGluZyB0aGUgaWRlbnRpZmllciBvZiB0aGUgaW50ZXJmYWNlIGFuZCB0aGUgc3RyaW5nIFwiIEl0ZXJhdG9yXCIuXG4gICAgW1N5bWJvbC50b1N0cmluZ1RhZ106IGAke25hbWV9IEl0ZXJhdG9yYFxuICB9XG5cbiAgLy8gVGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgc2xvdCBvZiBhbiBpdGVyYXRvciBwcm90b3R5cGUgb2JqZWN0IG11c3QgYmUgJUl0ZXJhdG9yUHJvdG90eXBlJS5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGksIGVzSXRlcmF0b3JQcm90b3R5cGUpXG4gIC8vIGVzSXRlcmF0b3JQcm90b3R5cGUgbmVlZHMgdG8gYmUgdGhlIHByb3RvdHlwZSBvZiBpXG4gIC8vIHdoaWNoIGlzIHRoZSBwcm90b3R5cGUgb2YgYW4gZW1wdHkgb2JqZWN0LiBZZXMsIGl0J3MgY29uZnVzaW5nLlxuICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHt9LCBpKVxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2l0ZXJhdG9yLXJlc3VsdFxuZnVuY3Rpb24gaXRlcmF0b3JSZXN1bHQgKHBhaXIsIGtpbmQpIHtcbiAgbGV0IHJlc3VsdFxuXG4gIC8vIDEuIExldCByZXN1bHQgYmUgYSB2YWx1ZSBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBraW5kOlxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlICdrZXknOiB7XG4gICAgICAvLyAxLiBMZXQgaWRsS2V5IGJlIHBhaXJcdTIwMTlzIGtleS5cbiAgICAgIC8vIDIuIExldCBrZXkgYmUgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIGlkbEtleSB0byBhblxuICAgICAgLy8gICAgRUNNQVNjcmlwdCB2YWx1ZS5cbiAgICAgIC8vIDMuIHJlc3VsdCBpcyBrZXkuXG4gICAgICByZXN1bHQgPSBwYWlyWzBdXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlICd2YWx1ZSc6IHtcbiAgICAgIC8vIDEuIExldCBpZGxWYWx1ZSBiZSBwYWlyXHUyMDE5cyB2YWx1ZS5cbiAgICAgIC8vIDIuIExldCB2YWx1ZSBiZSB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgaWRsVmFsdWUgdG9cbiAgICAgIC8vICAgIGFuIEVDTUFTY3JpcHQgdmFsdWUuXG4gICAgICAvLyAzLiByZXN1bHQgaXMgdmFsdWUuXG4gICAgICByZXN1bHQgPSBwYWlyWzFdXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlICdrZXkrdmFsdWUnOiB7XG4gICAgICAvLyAxLiBMZXQgaWRsS2V5IGJlIHBhaXJcdTIwMTlzIGtleS5cbiAgICAgIC8vIDIuIExldCBpZGxWYWx1ZSBiZSBwYWlyXHUyMDE5cyB2YWx1ZS5cbiAgICAgIC8vIDMuIExldCBrZXkgYmUgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIGlkbEtleSB0byBhblxuICAgICAgLy8gICAgRUNNQVNjcmlwdCB2YWx1ZS5cbiAgICAgIC8vIDQuIExldCB2YWx1ZSBiZSB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgaWRsVmFsdWUgdG9cbiAgICAgIC8vICAgIGFuIEVDTUFTY3JpcHQgdmFsdWUuXG4gICAgICAvLyA1LiBMZXQgYXJyYXkgYmUgISBBcnJheUNyZWF0ZSgyKS5cbiAgICAgIC8vIDYuIENhbGwgISBDcmVhdGVEYXRhUHJvcGVydHkoYXJyYXksIFwiMFwiLCBrZXkpLlxuICAgICAgLy8gNy4gQ2FsbCAhIENyZWF0ZURhdGFQcm9wZXJ0eShhcnJheSwgXCIxXCIsIHZhbHVlKS5cbiAgICAgIC8vIDguIHJlc3VsdCBpcyBhcnJheS5cbiAgICAgIHJlc3VsdCA9IHBhaXJcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gMi4gUmV0dXJuIENyZWF0ZUl0ZXJSZXN1bHRPYmplY3QocmVzdWx0LCBmYWxzZSkuXG4gIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGRvbmU6IGZhbHNlIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNib2R5LWZ1bGx5LXJlYWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZnVsbHlSZWFkQm9keSAoYm9keSwgcHJvY2Vzc0JvZHksIHByb2Nlc3NCb2R5RXJyb3IpIHtcbiAgLy8gMS4gSWYgdGFza0Rlc3RpbmF0aW9uIGlzIG51bGwsIHRoZW4gc2V0IHRhc2tEZXN0aW5hdGlvbiB0b1xuICAvLyAgICB0aGUgcmVzdWx0IG9mIHN0YXJ0aW5nIGEgbmV3IHBhcmFsbGVsIHF1ZXVlLlxuXG4gIC8vIDIuIExldCBzdWNjZXNzU3RlcHMgZ2l2ZW4gYSBieXRlIHNlcXVlbmNlIGJ5dGVzIGJlIHRvIHF1ZXVlIGFcbiAgLy8gICAgZmV0Y2ggdGFzayB0byBydW4gcHJvY2Vzc0JvZHkgZ2l2ZW4gYnl0ZXMsIHdpdGggdGFza0Rlc3RpbmF0aW9uLlxuICBjb25zdCBzdWNjZXNzU3RlcHMgPSBwcm9jZXNzQm9keVxuXG4gIC8vIDMuIExldCBlcnJvclN0ZXBzIGJlIHRvIHF1ZXVlIGEgZmV0Y2ggdGFzayB0byBydW4gcHJvY2Vzc0JvZHlFcnJvcixcbiAgLy8gICAgd2l0aCB0YXNrRGVzdGluYXRpb24uXG4gIGNvbnN0IGVycm9yU3RlcHMgPSBwcm9jZXNzQm9keUVycm9yXG5cbiAgLy8gNC4gTGV0IHJlYWRlciBiZSB0aGUgcmVzdWx0IG9mIGdldHRpbmcgYSByZWFkZXIgZm9yIGJvZHlcdTIwMTlzIHN0cmVhbS5cbiAgLy8gICAgSWYgdGhhdCB0aHJldyBhbiBleGNlcHRpb24sIHRoZW4gcnVuIGVycm9yU3RlcHMgd2l0aCB0aGF0XG4gIC8vICAgIGV4Y2VwdGlvbiBhbmQgcmV0dXJuLlxuICBsZXQgcmVhZGVyXG5cbiAgdHJ5IHtcbiAgICByZWFkZXIgPSBib2R5LnN0cmVhbS5nZXRSZWFkZXIoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyb3JTdGVwcyhlKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gNS4gUmVhZCBhbGwgYnl0ZXMgZnJvbSByZWFkZXIsIGdpdmVuIHN1Y2Nlc3NTdGVwcyBhbmQgZXJyb3JTdGVwcy5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkQWxsQnl0ZXMocmVhZGVyKVxuICAgIHN1Y2Nlc3NTdGVwcyhyZXN1bHQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvclN0ZXBzKGUpXG4gIH1cbn1cblxuLyoqIEB0eXBlIHtSZWFkYWJsZVN0cmVhbX0gKi9cbmxldCBSZWFkYWJsZVN0cmVhbSA9IGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW1cblxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxpa2UgKHN0cmVhbSkge1xuICBpZiAoIVJlYWRhYmxlU3RyZWFtKSB7XG4gICAgUmVhZGFibGVTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJykuUmVhZGFibGVTdHJlYW1cbiAgfVxuXG4gIHJldHVybiBzdHJlYW0gaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSB8fCAoXG4gICAgc3RyZWFtW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdSZWFkYWJsZVN0cmVhbScgJiZcbiAgICB0eXBlb2Ygc3RyZWFtLnRlZSA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG5cbmNvbnN0IE1BWElNVU1fQVJHVU1FTlRfTEVOR1RIID0gNjU1MzVcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNpc29tb3JwaGljLWRlY29kZVxuICogQHBhcmFtIHtudW1iZXJbXXxVaW50OEFycmF5fSBpbnB1dFxuICovXG5mdW5jdGlvbiBpc29tb3JwaGljRGVjb2RlIChpbnB1dCkge1xuICAvLyAxLiBUbyBpc29tb3JwaGljIGRlY29kZSBhIGJ5dGUgc2VxdWVuY2UgaW5wdXQsIHJldHVybiBhIHN0cmluZyB3aG9zZSBjb2RlIHBvaW50XG4gIC8vICAgIGxlbmd0aCBpcyBlcXVhbCB0byBpbnB1dFx1MjAxOXMgbGVuZ3RoIGFuZCB3aG9zZSBjb2RlIHBvaW50cyBoYXZlIHRoZSBzYW1lIHZhbHVlc1xuICAvLyAgICBhcyB0aGUgdmFsdWVzIG9mIGlucHV0XHUyMDE5cyBieXRlcywgaW4gdGhlIHNhbWUgb3JkZXIuXG5cbiAgaWYgKGlucHV0Lmxlbmd0aCA8IE1BWElNVU1fQVJHVU1FTlRfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uaW5wdXQpXG4gIH1cblxuICByZXR1cm4gaW5wdXQucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gcHJldmlvdXMgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGN1cnJlbnQpLCAnJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjxVaW50OEFycmF5Pn0gY29udHJvbGxlclxuICovXG5mdW5jdGlvbiByZWFkYWJsZVN0cmVhbUNsb3NlIChjb250cm9sbGVyKSB7XG4gIHRyeSB7XG4gICAgY29udHJvbGxlci5jbG9zZSgpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIFRPRE86IGFkZCBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRoaXMgZXJyb3Igb2NjdXJzLlxuICAgIGlmICghZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0NvbnRyb2xsZXIgaXMgYWxyZWFkeSBjbG9zZWQnKSkge1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jaXNvbW9ycGhpYy1lbmNvZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICovXG5mdW5jdGlvbiBpc29tb3JwaGljRW5jb2RlIChpbnB1dCkge1xuICAvLyAxLiBBc3NlcnQ6IGlucHV0IGNvbnRhaW5zIG5vIGNvZGUgcG9pbnRzIGdyZWF0ZXIgdGhhbiBVKzAwRkYuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBhc3NlcnQoaW5wdXQuY2hhckNvZGVBdChpKSA8PSAweEZGKVxuICB9XG5cbiAgLy8gMi4gUmV0dXJuIGEgYnl0ZSBzZXF1ZW5jZSB3aG9zZSBsZW5ndGggaXMgZXF1YWwgdG8gaW5wdXRcdTIwMTlzIGNvZGVcbiAgLy8gICAgcG9pbnQgbGVuZ3RoIGFuZCB3aG9zZSBieXRlcyBoYXZlIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGVcbiAgLy8gICAgdmFsdWVzIG9mIGlucHV0XHUyMDE5cyBjb2RlIHBvaW50cywgaW4gdGhlIHNhbWUgb3JkZXJcbiAgcmV0dXJuIGlucHV0XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWFkYWJsZXN0cmVhbWRlZmF1bHRyZWFkZXItcmVhZC1hbGwtYnl0ZXNcbiAqIEBzZWUgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcmVhZC1sb29wXG4gKiBAcGFyYW0ge1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcn0gcmVhZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRBbGxCeXRlcyAocmVhZGVyKSB7XG4gIGNvbnN0IGJ5dGVzID0gW11cbiAgbGV0IGJ5dGVMZW5ndGggPSAwXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlOiBjaHVuayB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIC8vIDEuIENhbGwgc3VjY2Vzc1N0ZXBzIHdpdGggYnl0ZXMuXG4gICAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChieXRlcywgYnl0ZUxlbmd0aClcbiAgICB9XG5cbiAgICAvLyAxLiBJZiBjaHVuayBpcyBub3QgYSBVaW50OEFycmF5IG9iamVjdCwgY2FsbCBmYWlsdXJlU3RlcHNcbiAgICAvLyAgICB3aXRoIGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy5cbiAgICBpZiAoIWlzVWludDhBcnJheShjaHVuaykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1JlY2VpdmVkIG5vbi1VaW50OEFycmF5IGNodW5rJylcbiAgICB9XG5cbiAgICAvLyAyLiBBcHBlbmQgdGhlIGJ5dGVzIHJlcHJlc2VudGVkIGJ5IGNodW5rIHRvIGJ5dGVzLlxuICAgIGJ5dGVzLnB1c2goY2h1bmspXG4gICAgYnl0ZUxlbmd0aCArPSBjaHVuay5sZW5ndGhcblxuICAgIC8vIDMuIFJlYWQtbG9vcCBnaXZlbiByZWFkZXIsIGJ5dGVzLCBzdWNjZXNzU3RlcHMsIGFuZCBmYWlsdXJlU3RlcHMuXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNpcy1sb2NhbFxuICogQHBhcmFtIHtVUkx9IHVybFxuICovXG5mdW5jdGlvbiB1cmxJc0xvY2FsICh1cmwpIHtcbiAgYXNzZXJ0KCdwcm90b2NvbCcgaW4gdXJsKSAvLyBlbnN1cmUgaXQncyBhIHVybCBvYmplY3RcblxuICBjb25zdCBwcm90b2NvbCA9IHVybC5wcm90b2NvbFxuXG4gIHJldHVybiBwcm90b2NvbCA9PT0gJ2Fib3V0OicgfHwgcHJvdG9jb2wgPT09ICdibG9iOicgfHwgcHJvdG9jb2wgPT09ICdkYXRhOidcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ3xVUkx9IHVybFxuICovXG5mdW5jdGlvbiB1cmxIYXNIdHRwc1NjaGVtZSAodXJsKSB7XG4gIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1cmwuc3RhcnRzV2l0aCgnaHR0cHM6JylcbiAgfVxuXG4gIHJldHVybiB1cmwucHJvdG9jb2wgPT09ICdodHRwczonXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1zY2hlbWVcbiAqIEBwYXJhbSB7VVJMfSB1cmxcbiAqL1xuZnVuY3Rpb24gdXJsSXNIdHRwSHR0cHNTY2hlbWUgKHVybCkge1xuICBhc3NlcnQoJ3Byb3RvY29sJyBpbiB1cmwpIC8vIGVuc3VyZSBpdCdzIGEgdXJsIG9iamVjdFxuXG4gIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sXG5cbiAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cDonIHx8IHByb3RvY29sID09PSAnaHR0cHM6J1xufVxuXG4vKipcbiAqIEZldGNoIHN1cHBvcnRzIG5vZGUgPj0gMTYuOC4wLCBidXQgT2JqZWN0Lmhhc093biB3YXMgYWRkZWQgaW4gdjE2LjkuMC5cbiAqL1xuY29uc3QgaGFzT3duID0gT2JqZWN0Lmhhc093biB8fCAoKGRpY3QsIGtleSkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRpY3QsIGtleSkpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0Fib3J0ZWQsXG4gIGlzQ2FuY2VsbGVkLFxuICBjcmVhdGVEZWZlcnJlZFByb21pc2UsXG4gIFJlYWRhYmxlU3RyZWFtRnJvbSxcbiAgdG9VU1ZTdHJpbmcsXG4gIHRyeVVwZ3JhZGVSZXF1ZXN0VG9BUG90ZW50aWFsbHlUcnVzdHdvcnRoeVVSTCxcbiAgY29hcnNlbmVkU2hhcmVkQ3VycmVudFRpbWUsXG4gIGRldGVybWluZVJlcXVlc3RzUmVmZXJyZXIsXG4gIG1ha2VQb2xpY3lDb250YWluZXIsXG4gIGNsb25lUG9saWN5Q29udGFpbmVyLFxuICBhcHBlbmRGZXRjaE1ldGFkYXRhLFxuICBhcHBlbmRSZXF1ZXN0T3JpZ2luSGVhZGVyLFxuICBUQU9DaGVjayxcbiAgY29yc0NoZWNrLFxuICBjcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2hlY2ssXG4gIGNyZWF0ZU9wYXF1ZVRpbWluZ0luZm8sXG4gIHNldFJlcXVlc3RSZWZlcnJlclBvbGljeU9uUmVkaXJlY3QsXG4gIGlzVmFsaWRIVFRQVG9rZW4sXG4gIHJlcXVlc3RCYWRQb3J0LFxuICByZXF1ZXN0Q3VycmVudFVSTCxcbiAgcmVzcG9uc2VVUkwsXG4gIHJlc3BvbnNlTG9jYXRpb25VUkwsXG4gIGlzQmxvYkxpa2UsXG4gIGlzVVJMUG90ZW50aWFsbHlUcnVzdHdvcnRoeSxcbiAgaXNWYWxpZFJlYXNvblBocmFzZSxcbiAgc2FtZU9yaWdpbixcbiAgbm9ybWFsaXplTWV0aG9kLFxuICBzZXJpYWxpemVKYXZhc2NyaXB0VmFsdWVUb0pTT05TdHJpbmcsXG4gIG1ha2VJdGVyYXRvcixcbiAgaXNWYWxpZEhlYWRlck5hbWUsXG4gIGlzVmFsaWRIZWFkZXJWYWx1ZSxcbiAgaGFzT3duLFxuICBpc0Vycm9yTGlrZSxcbiAgZnVsbHlSZWFkQm9keSxcbiAgYnl0ZXNNYXRjaCxcbiAgaXNSZWFkYWJsZVN0cmVhbUxpa2UsXG4gIHJlYWRhYmxlU3RyZWFtQ2xvc2UsXG4gIGlzb21vcnBoaWNFbmNvZGUsXG4gIGlzb21vcnBoaWNEZWNvZGUsXG4gIHVybElzTG9jYWwsXG4gIHVybEhhc0h0dHBzU2NoZW1lLFxuICB1cmxJc0h0dHBIdHRwc1NjaGVtZSxcbiAgcmVhZEFsbEJ5dGVzLFxuICBub3JtYWxpemVNZXRob2RSZWNvcmQsXG4gIHBhcnNlTWV0YWRhdGFcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtVcmw6IFN5bWJvbCgndXJsJyksXG4gIGtIZWFkZXJzOiBTeW1ib2woJ2hlYWRlcnMnKSxcbiAga1NpZ25hbDogU3ltYm9sKCdzaWduYWwnKSxcbiAga1N0YXRlOiBTeW1ib2woJ3N0YXRlJyksXG4gIGtHdWFyZDogU3ltYm9sKCdndWFyZCcpLFxuICBrUmVhbG06IFN5bWJvbCgncmVhbG0nKVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IHR5cGVzIH0gPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IHsgaGFzT3duLCB0b1VTVlN0cmluZyB9ID0gcmVxdWlyZSgnLi91dGlsJylcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4uLy4uL3R5cGVzL3dlYmlkbCcpLldlYmlkbH0gKi9cbmNvbnN0IHdlYmlkbCA9IHt9XG53ZWJpZGwuY29udmVydGVycyA9IHt9XG53ZWJpZGwudXRpbCA9IHt9XG53ZWJpZGwuZXJyb3JzID0ge31cblxud2ViaWRsLmVycm9ycy5leGNlcHRpb24gPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICByZXR1cm4gbmV3IFR5cGVFcnJvcihgJHttZXNzYWdlLmhlYWRlcn06ICR7bWVzc2FnZS5tZXNzYWdlfWApXG59XG5cbndlYmlkbC5lcnJvcnMuY29udmVyc2lvbkZhaWxlZCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGNvbnN0IHBsdXJhbCA9IGNvbnRleHQudHlwZXMubGVuZ3RoID09PSAxID8gJycgOiAnIG9uZSBvZidcbiAgY29uc3QgbWVzc2FnZSA9XG4gICAgYCR7Y29udGV4dC5hcmd1bWVudH0gY291bGQgbm90IGJlIGNvbnZlcnRlZCB0b2AgK1xuICAgIGAke3BsdXJhbH06ICR7Y29udGV4dC50eXBlcy5qb2luKCcsICcpfS5gXG5cbiAgcmV0dXJuIHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICBoZWFkZXI6IGNvbnRleHQucHJlZml4LFxuICAgIG1lc3NhZ2VcbiAgfSlcbn1cblxud2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgIGhlYWRlcjogY29udGV4dC5wcmVmaXgsXG4gICAgbWVzc2FnZTogYFwiJHtjb250ZXh0LnZhbHVlfVwiIGlzIGFuIGludmFsaWQgJHtjb250ZXh0LnR5cGV9LmBcbiAgfSlcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNpbXBsZW1lbnRzXG53ZWJpZGwuYnJhbmRDaGVjayA9IGZ1bmN0aW9uIChWLCBJLCBvcHRzID0gdW5kZWZpbmVkKSB7XG4gIGlmIChvcHRzPy5zdHJpY3QgIT09IGZhbHNlICYmICEoViBpbnN0YW5jZW9mIEkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSWxsZWdhbCBpbnZvY2F0aW9uJylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gVj8uW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09IEkucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ11cbiAgfVxufVxuXG53ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayA9IGZ1bmN0aW9uICh7IGxlbmd0aCB9LCBtaW4sIGN0eCkge1xuICBpZiAobGVuZ3RoIDwgbWluKSB7XG4gICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgbWVzc2FnZTogYCR7bWlufSBhcmd1bWVudCR7bWluICE9PSAxID8gJ3MnIDogJyd9IHJlcXVpcmVkLCBgICtcbiAgICAgICAgICAgICAgIGBidXQke2xlbmd0aCA/ICcgb25seScgOiAnJ30gJHtsZW5ndGh9IGZvdW5kLmAsXG4gICAgICAuLi5jdHhcbiAgICB9KVxuICB9XG59XG5cbndlYmlkbC5pbGxlZ2FsQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICBoZWFkZXI6ICdUeXBlRXJyb3InLFxuICAgIG1lc3NhZ2U6ICdJbGxlZ2FsIGNvbnN0cnVjdG9yJ1xuICB9KVxufVxuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtZGF0YS10eXBlcy1hbmQtdmFsdWVzXG53ZWJpZGwudXRpbC5UeXBlID0gZnVuY3Rpb24gKFYpIHtcbiAgc3dpdGNoICh0eXBlb2YgVikge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6IHJldHVybiAnVW5kZWZpbmVkJ1xuICAgIGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gJ0Jvb2xlYW4nXG4gICAgY2FzZSAnc3RyaW5nJzogcmV0dXJuICdTdHJpbmcnXG4gICAgY2FzZSAnc3ltYm9sJzogcmV0dXJuICdTeW1ib2wnXG4gICAgY2FzZSAnbnVtYmVyJzogcmV0dXJuICdOdW1iZXInXG4gICAgY2FzZSAnYmlnaW50JzogcmV0dXJuICdCaWdJbnQnXG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgIGlmIChWID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnTnVsbCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdPYmplY3QnXG4gICAgfVxuICB9XG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jYWJzdHJhY3Qtb3BkZWYtY29udmVydHRvaW50XG53ZWJpZGwudXRpbC5Db252ZXJ0VG9JbnQgPSBmdW5jdGlvbiAoViwgYml0TGVuZ3RoLCBzaWduZWRuZXNzLCBvcHRzID0ge30pIHtcbiAgbGV0IHVwcGVyQm91bmRcbiAgbGV0IGxvd2VyQm91bmRcblxuICAvLyAxLiBJZiBiaXRMZW5ndGggaXMgNjQsIHRoZW46XG4gIGlmIChiaXRMZW5ndGggPT09IDY0KSB7XG4gICAgLy8gMS4gTGV0IHVwcGVyQm91bmQgYmUgMl41MyBcdTIyMTIgMS5cbiAgICB1cHBlckJvdW5kID0gTWF0aC5wb3coMiwgNTMpIC0gMVxuXG4gICAgLy8gMi4gSWYgc2lnbmVkbmVzcyBpcyBcInVuc2lnbmVkXCIsIHRoZW4gbGV0IGxvd2VyQm91bmQgYmUgMC5cbiAgICBpZiAoc2lnbmVkbmVzcyA9PT0gJ3Vuc2lnbmVkJykge1xuICAgICAgbG93ZXJCb3VuZCA9IDBcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gMy4gT3RoZXJ3aXNlIGxldCBsb3dlckJvdW5kIGJlIFx1MjIxMjJeNTMgKyAxLlxuICAgICAgbG93ZXJCb3VuZCA9IE1hdGgucG93KC0yLCA1MykgKyAxXG4gICAgfVxuICB9IGVsc2UgaWYgKHNpZ25lZG5lc3MgPT09ICd1bnNpZ25lZCcpIHtcbiAgICAvLyAyLiBPdGhlcndpc2UsIGlmIHNpZ25lZG5lc3MgaXMgXCJ1bnNpZ25lZFwiLCB0aGVuOlxuXG4gICAgLy8gMS4gTGV0IGxvd2VyQm91bmQgYmUgMC5cbiAgICBsb3dlckJvdW5kID0gMFxuXG4gICAgLy8gMi4gTGV0IHVwcGVyQm91bmQgYmUgMl5iaXRMZW5ndGggXHUyMjEyIDEuXG4gICAgdXBwZXJCb3VuZCA9IE1hdGgucG93KDIsIGJpdExlbmd0aCkgLSAxXG4gIH0gZWxzZSB7XG4gICAgLy8gMy4gT3RoZXJ3aXNlOlxuXG4gICAgLy8gMS4gTGV0IGxvd2VyQm91bmQgYmUgLTJeYml0TGVuZ3RoIFx1MjIxMiAxLlxuICAgIGxvd2VyQm91bmQgPSBNYXRoLnBvdygtMiwgYml0TGVuZ3RoKSAtIDFcblxuICAgIC8vIDIuIExldCB1cHBlckJvdW5kIGJlIDJeYml0TGVuZ3RoIFx1MjIxMiAxIFx1MjIxMiAxLlxuICAgIHVwcGVyQm91bmQgPSBNYXRoLnBvdygyLCBiaXRMZW5ndGggLSAxKSAtIDFcbiAgfVxuXG4gIC8vIDQuIExldCB4IGJlID8gVG9OdW1iZXIoVikuXG4gIGxldCB4ID0gTnVtYmVyKFYpXG5cbiAgLy8gNS4gSWYgeCBpcyBcdTIyMTIwLCB0aGVuIHNldCB4IHRvICswLlxuICBpZiAoeCA9PT0gMCkge1xuICAgIHggPSAwXG4gIH1cblxuICAvLyA2LiBJZiB0aGUgY29udmVyc2lvbiBpcyB0byBhbiBJREwgdHlwZSBhc3NvY2lhdGVkXG4gIC8vICAgIHdpdGggdGhlIFtFbmZvcmNlUmFuZ2VdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbjpcbiAgaWYgKG9wdHMuZW5mb3JjZVJhbmdlID09PSB0cnVlKSB7XG4gICAgLy8gMS4gSWYgeCBpcyBOYU4sICtcdTIyMUUsIG9yIFx1MjIxMlx1MjIxRSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoXG4gICAgICBOdW1iZXIuaXNOYU4oeCkgfHxcbiAgICAgIHggPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB8fFxuICAgICAgeCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZXG4gICAgKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0ludGVnZXIgY29udmVyc2lvbicsXG4gICAgICAgIG1lc3NhZ2U6IGBDb3VsZCBub3QgY29udmVydCAke1Z9IHRvIGFuIGludGVnZXIuYFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBTZXQgeCB0byBJbnRlZ2VyUGFydCh4KS5cbiAgICB4ID0gd2ViaWRsLnV0aWwuSW50ZWdlclBhcnQoeClcblxuICAgIC8vIDMuIElmIHggPCBsb3dlckJvdW5kIG9yIHggPiB1cHBlckJvdW5kLCB0aGVuXG4gICAgLy8gICAgdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKHggPCBsb3dlckJvdW5kIHx8IHggPiB1cHBlckJvdW5kKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0ludGVnZXIgY29udmVyc2lvbicsXG4gICAgICAgIG1lc3NhZ2U6IGBWYWx1ZSBtdXN0IGJlIGJldHdlZW4gJHtsb3dlckJvdW5kfS0ke3VwcGVyQm91bmR9LCBnb3QgJHt4fS5gXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDQuIFJldHVybiB4LlxuICAgIHJldHVybiB4XG4gIH1cblxuICAvLyA3LiBJZiB4IGlzIG5vdCBOYU4gYW5kIHRoZSBjb252ZXJzaW9uIGlzIHRvIGFuIElETFxuICAvLyAgICB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgW0NsYW1wXSBleHRlbmRlZFxuICAvLyAgICBhdHRyaWJ1dGUsIHRoZW46XG4gIGlmICghTnVtYmVyLmlzTmFOKHgpICYmIG9wdHMuY2xhbXAgPT09IHRydWUpIHtcbiAgICAvLyAxLiBTZXQgeCB0byBtaW4obWF4KHgsIGxvd2VyQm91bmQpLCB1cHBlckJvdW5kKS5cbiAgICB4ID0gTWF0aC5taW4oTWF0aC5tYXgoeCwgbG93ZXJCb3VuZCksIHVwcGVyQm91bmQpXG5cbiAgICAvLyAyLiBSb3VuZCB4IHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIGNob29zaW5nIHRoZVxuICAgIC8vICAgIGV2ZW4gaW50ZWdlciBpZiBpdCBsaWVzIGhhbGZ3YXkgYmV0d2VlbiB0d28sXG4gICAgLy8gICAgYW5kIGNob29zaW5nICswIHJhdGhlciB0aGFuIFx1MjIxMjAuXG4gICAgaWYgKE1hdGguZmxvb3IoeCkgJSAyID09PSAwKSB7XG4gICAgICB4ID0gTWF0aC5mbG9vcih4KVxuICAgIH0gZWxzZSB7XG4gICAgICB4ID0gTWF0aC5jZWlsKHgpXG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIHguXG4gICAgcmV0dXJuIHhcbiAgfVxuXG4gIC8vIDguIElmIHggaXMgTmFOLCArMCwgK1x1MjIxRSwgb3IgXHUyMjEyXHUyMjFFLCB0aGVuIHJldHVybiArMC5cbiAgaWYgKFxuICAgIE51bWJlci5pc05hTih4KSB8fFxuICAgICh4ID09PSAwICYmIE9iamVjdC5pcygwLCB4KSkgfHxcbiAgICB4ID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfHxcbiAgICB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIC8vIDkuIFNldCB4IHRvIEludGVnZXJQYXJ0KHgpLlxuICB4ID0gd2ViaWRsLnV0aWwuSW50ZWdlclBhcnQoeClcblxuICAvLyAxMC4gU2V0IHggdG8geCBtb2R1bG8gMl5iaXRMZW5ndGguXG4gIHggPSB4ICUgTWF0aC5wb3coMiwgYml0TGVuZ3RoKVxuXG4gIC8vIDExLiBJZiBzaWduZWRuZXNzIGlzIFwic2lnbmVkXCIgYW5kIHggXHUyMjY1IDJeYml0TGVuZ3RoIFx1MjIxMiAxLFxuICAvLyAgICB0aGVuIHJldHVybiB4IFx1MjIxMiAyXmJpdExlbmd0aC5cbiAgaWYgKHNpZ25lZG5lc3MgPT09ICdzaWduZWQnICYmIHggPj0gTWF0aC5wb3coMiwgYml0TGVuZ3RoKSAtIDEpIHtcbiAgICByZXR1cm4geCAtIE1hdGgucG93KDIsIGJpdExlbmd0aClcbiAgfVxuXG4gIC8vIDEyLiBPdGhlcndpc2UsIHJldHVybiB4LlxuICByZXR1cm4geFxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2Fic3RyYWN0LW9wZGVmLWludGVnZXJwYXJ0XG53ZWJpZGwudXRpbC5JbnRlZ2VyUGFydCA9IGZ1bmN0aW9uIChuKSB7XG4gIC8vIDEuIExldCByIGJlIGZsb29yKGFicyhuKSkuXG4gIGNvbnN0IHIgPSBNYXRoLmZsb29yKE1hdGguYWJzKG4pKVxuXG4gIC8vIDIuIElmIG4gPCAwLCB0aGVuIHJldHVybiAtMSBcdTAwRDcgci5cbiAgaWYgKG4gPCAwKSB7XG4gICAgcmV0dXJuIC0xICogclxuICB9XG5cbiAgLy8gMy4gT3RoZXJ3aXNlLCByZXR1cm4gci5cbiAgcmV0dXJuIHJcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy1zZXF1ZW5jZVxud2ViaWRsLnNlcXVlbmNlQ29udmVydGVyID0gZnVuY3Rpb24gKGNvbnZlcnRlcikge1xuICByZXR1cm4gKFYpID0+IHtcbiAgICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh3ZWJpZGwudXRpbC5UeXBlKFYpICE9PSAnT2JqZWN0Jykge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdTZXF1ZW5jZScsXG4gICAgICAgIG1lc3NhZ2U6IGBWYWx1ZSBvZiB0eXBlICR7d2ViaWRsLnV0aWwuVHlwZShWKX0gaXMgbm90IGFuIE9iamVjdC5gXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIExldCBtZXRob2QgYmUgPyBHZXRNZXRob2QoViwgQEBpdGVyYXRvcikuXG4gICAgLyoqIEB0eXBlIHtHZW5lcmF0b3J9ICovXG4gICAgY29uc3QgbWV0aG9kID0gVj8uW1N5bWJvbC5pdGVyYXRvcl0/LigpXG4gICAgY29uc3Qgc2VxID0gW11cblxuICAgIC8vIDMuIElmIG1ldGhvZCBpcyB1bmRlZmluZWQsIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmIChcbiAgICAgIG1ldGhvZCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0eXBlb2YgbWV0aG9kLm5leHQgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiAnU2VxdWVuY2UnLFxuICAgICAgICBtZXNzYWdlOiAnT2JqZWN0IGlzIG5vdCBhbiBpdGVyYXRvci4nXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jY3JlYXRlLXNlcXVlbmNlLWZyb20taXRlcmFibGVcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gbWV0aG9kLm5leHQoKVxuXG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBzZXEucHVzaChjb252ZXJ0ZXIodmFsdWUpKVxuICAgIH1cblxuICAgIHJldHVybiBzZXFcbiAgfVxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLXRvLXJlY29yZFxud2ViaWRsLnJlY29yZENvbnZlcnRlciA9IGZ1bmN0aW9uIChrZXlDb252ZXJ0ZXIsIHZhbHVlQ29udmVydGVyKSB7XG4gIHJldHVybiAoTykgPT4ge1xuICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKHdlYmlkbC51dGlsLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ1JlY29yZCcsXG4gICAgICAgIG1lc3NhZ2U6IGBWYWx1ZSBvZiB0eXBlICR7d2ViaWRsLnV0aWwuVHlwZShPKX0gaXMgbm90IGFuIE9iamVjdC5gXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIExldCByZXN1bHQgYmUgYSBuZXcgZW1wdHkgaW5zdGFuY2Ugb2YgcmVjb3JkPEssIFY+LlxuICAgIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgICBpZiAoIXR5cGVzLmlzUHJveHkoTykpIHtcbiAgICAgIC8vIE9iamVjdC5rZXlzIG9ubHkgcmV0dXJucyBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhPKVxuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIC8vIDEuIExldCB0eXBlZEtleSBiZSBrZXkgY29udmVydGVkIHRvIGFuIElETCB2YWx1ZSBvZiB0eXBlIEsuXG4gICAgICAgIGNvbnN0IHR5cGVkS2V5ID0ga2V5Q29udmVydGVyKGtleSlcblxuICAgICAgICAvLyAyLiBMZXQgdmFsdWUgYmUgPyBHZXQoTywga2V5KS5cbiAgICAgICAgLy8gMy4gTGV0IHR5cGVkVmFsdWUgYmUgdmFsdWUgY29udmVydGVkIHRvIGFuIElETCB2YWx1ZSBvZiB0eXBlIFYuXG4gICAgICAgIGNvbnN0IHR5cGVkVmFsdWUgPSB2YWx1ZUNvbnZlcnRlcihPW2tleV0pXG5cbiAgICAgICAgLy8gNC4gU2V0IHJlc3VsdFt0eXBlZEtleV0gdG8gdHlwZWRWYWx1ZS5cbiAgICAgICAgcmVzdWx0W3R5cGVkS2V5XSA9IHR5cGVkVmFsdWVcbiAgICAgIH1cblxuICAgICAgLy8gNS4gUmV0dXJuIHJlc3VsdC5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICAvLyAzLiBMZXQga2V5cyBiZSA/IE8uW1tPd25Qcm9wZXJ0eUtleXNdXSgpLlxuICAgIGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXMoTylcblxuICAgIC8vIDQuIEZvciBlYWNoIGtleSBvZiBrZXlzLlxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIC8vIDEuIExldCBkZXNjIGJlID8gTy5bW0dldE93blByb3BlcnR5XV0oa2V5KS5cbiAgICAgIGNvbnN0IGRlc2MgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBrZXkpXG5cbiAgICAgIC8vIDIuIElmIGRlc2MgaXMgbm90IHVuZGVmaW5lZCBhbmQgZGVzYy5bW0VudW1lcmFibGVdXSBpcyB0cnVlOlxuICAgICAgaWYgKGRlc2M/LmVudW1lcmFibGUpIHtcbiAgICAgICAgLy8gMS4gTGV0IHR5cGVkS2V5IGJlIGtleSBjb252ZXJ0ZWQgdG8gYW4gSURMIHZhbHVlIG9mIHR5cGUgSy5cbiAgICAgICAgY29uc3QgdHlwZWRLZXkgPSBrZXlDb252ZXJ0ZXIoa2V5KVxuXG4gICAgICAgIC8vIDIuIExldCB2YWx1ZSBiZSA/IEdldChPLCBrZXkpLlxuICAgICAgICAvLyAzLiBMZXQgdHlwZWRWYWx1ZSBiZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYW4gSURMIHZhbHVlIG9mIHR5cGUgVi5cbiAgICAgICAgY29uc3QgdHlwZWRWYWx1ZSA9IHZhbHVlQ29udmVydGVyKE9ba2V5XSlcblxuICAgICAgICAvLyA0LiBTZXQgcmVzdWx0W3R5cGVkS2V5XSB0byB0eXBlZFZhbHVlLlxuICAgICAgICByZXN1bHRbdHlwZWRLZXldID0gdHlwZWRWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDUuIFJldHVybiByZXN1bHQuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbndlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIgPSBmdW5jdGlvbiAoaSkge1xuICByZXR1cm4gKFYsIG9wdHMgPSB7fSkgPT4ge1xuICAgIGlmIChvcHRzLnN0cmljdCAhPT0gZmFsc2UgJiYgIShWIGluc3RhbmNlb2YgaSkpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiBpLm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IGBFeHBlY3RlZCAke1Z9IHRvIGJlIGFuIGluc3RhbmNlIG9mICR7aS5uYW1lfS5gXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBWXG4gIH1cbn1cblxud2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIgPSBmdW5jdGlvbiAoY29udmVydGVycykge1xuICByZXR1cm4gKGRpY3Rpb25hcnkpID0+IHtcbiAgICBjb25zdCB0eXBlID0gd2ViaWRsLnV0aWwuVHlwZShkaWN0aW9uYXJ5KVxuICAgIGNvbnN0IGRpY3QgPSB7fVxuXG4gICAgaWYgKHR5cGUgPT09ICdOdWxsJyB8fCB0eXBlID09PSAnVW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGRpY3RcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09ICdPYmplY3QnKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0RpY3Rpb25hcnknLFxuICAgICAgICBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtkaWN0aW9uYXJ5fSB0byBiZSBvbmUgb2Y6IE51bGwsIFVuZGVmaW5lZCwgT2JqZWN0LmBcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBvcHRpb25zIG9mIGNvbnZlcnRlcnMpIHtcbiAgICAgIGNvbnN0IHsga2V5LCBkZWZhdWx0VmFsdWUsIHJlcXVpcmVkLCBjb252ZXJ0ZXIgfSA9IG9wdGlvbnNcblxuICAgICAgaWYgKHJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgIGlmICghaGFzT3duKGRpY3Rpb25hcnksIGtleSkpIHtcbiAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICBoZWFkZXI6ICdEaWN0aW9uYXJ5JyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBNaXNzaW5nIHJlcXVpcmVkIGtleSBcIiR7a2V5fVwiLmBcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZSA9IGRpY3Rpb25hcnlba2V5XVxuICAgICAgY29uc3QgaGFzRGVmYXVsdCA9IGhhc093bihvcHRpb25zLCAnZGVmYXVsdFZhbHVlJylcblxuICAgICAgLy8gT25seSB1c2UgZGVmYXVsdFZhbHVlIGlmIHZhbHVlIGlzIHVuZGVmaW5lZCBhbmRcbiAgICAgIC8vIGEgZGVmYXVsdFZhbHVlIG9wdGlvbnMgd2FzIHByb3ZpZGVkLlxuICAgICAgaWYgKGhhc0RlZmF1bHQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSA/PyBkZWZhdWx0VmFsdWVcbiAgICAgIH1cblxuICAgICAgLy8gQSBrZXkgY2FuIGJlIG9wdGlvbmFsIGFuZCBoYXZlIG5vIGRlZmF1bHQgdmFsdWUuXG4gICAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgZG8gbm90IHBlcmZvcm0gYSBjb252ZXJzaW9uLFxuICAgICAgLy8gYW5kIGRvIG5vdCBhc3NpZ24gdGhlIGtleSBhIHZhbHVlLlxuICAgICAgaWYgKHJlcXVpcmVkIHx8IGhhc0RlZmF1bHQgfHwgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWx1ZSA9IGNvbnZlcnRlcih2YWx1ZSlcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgb3B0aW9ucy5hbGxvd2VkVmFsdWVzICYmXG4gICAgICAgICAgIW9wdGlvbnMuYWxsb3dlZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgaGVhZGVyOiAnRGljdGlvbmFyeScsXG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt2YWx1ZX0gaXMgbm90IGFuIGFjY2VwdGVkIHR5cGUuIEV4cGVjdGVkIG9uZSBvZiAke29wdGlvbnMuYWxsb3dlZFZhbHVlcy5qb2luKCcsICcpfS5gXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGRpY3Rba2V5XSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpY3RcbiAgfVxufVxuXG53ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIgPSBmdW5jdGlvbiAoY29udmVydGVyKSB7XG4gIHJldHVybiAoVikgPT4ge1xuICAgIGlmIChWID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gVlxuICAgIH1cblxuICAgIHJldHVybiBjb252ZXJ0ZXIoVilcbiAgfVxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLURPTVN0cmluZ1xud2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nID0gZnVuY3Rpb24gKFYsIG9wdHMgPSB7fSkge1xuICAvLyAxLiBJZiBWIGlzIG51bGwgYW5kIHRoZSBjb252ZXJzaW9uIGlzIHRvIGFuIElETCB0eXBlXG4gIC8vICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXVxuICAvLyAgICBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRoZSBET01TdHJpbmcgdmFsdWVcbiAgLy8gICAgdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBzdHJpbmcuXG4gIGlmIChWID09PSBudWxsICYmIG9wdHMubGVnYWN5TnVsbFRvRW1wdHlTdHJpbmcpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIDIuIExldCB4IGJlID8gVG9TdHJpbmcoVikuXG4gIGlmICh0eXBlb2YgViA9PT0gJ3N5bWJvbCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlIHN5bWJvbCB0byBzdHJpbmcuJylcbiAgfVxuXG4gIC8vIDMuIFJldHVybiB0aGUgSURMIERPTVN0cmluZyB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlXG4gIC8vICAgIHNhbWUgc2VxdWVuY2Ugb2YgY29kZSB1bml0cyBhcyB0aGUgb25lIHRoZVxuICAvLyAgICBFQ01BU2NyaXB0IFN0cmluZyB2YWx1ZSB4IHJlcHJlc2VudHMuXG4gIHJldHVybiBTdHJpbmcoVilcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy1CeXRlU3RyaW5nXG53ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nID0gZnVuY3Rpb24gKFYpIHtcbiAgLy8gMS4gTGV0IHggYmUgPyBUb1N0cmluZyhWKS5cbiAgLy8gTm90ZTogRE9NU3RyaW5nIGNvbnZlcnRlciBwZXJmb3JtID8gVG9TdHJpbmcoVilcbiAgY29uc3QgeCA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyhWKVxuXG4gIC8vIDIuIElmIHRoZSB2YWx1ZSBvZiBhbnkgZWxlbWVudCBvZiB4IGlzIGdyZWF0ZXIgdGhhblxuICAvLyAgICAyNTUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB4Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICh4LmNoYXJDb2RlQXQoaW5kZXgpID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgdG8gYSBCeXRlU3RyaW5nIGJlY2F1c2UgdGhlIGNoYXJhY3RlciBhdCAnICtcbiAgICAgICAgYGluZGV4ICR7aW5kZXh9IGhhcyBhIHZhbHVlIG9mICR7eC5jaGFyQ29kZUF0KGluZGV4KX0gd2hpY2ggaXMgZ3JlYXRlciB0aGFuIDI1NS5gXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLy8gMy4gUmV0dXJuIGFuIElETCBCeXRlU3RyaW5nIHZhbHVlIHdob3NlIGxlbmd0aCBpcyB0aGVcbiAgLy8gICAgbGVuZ3RoIG9mIHgsIGFuZCB3aGVyZSB0aGUgdmFsdWUgb2YgZWFjaCBlbGVtZW50IGlzXG4gIC8vICAgIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHguXG4gIHJldHVybiB4XG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtVVNWU3RyaW5nXG53ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcgPSB0b1VTVlN0cmluZ1xuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLWJvb2xlYW5cbndlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4gPSBmdW5jdGlvbiAoVikge1xuICAvLyAxLiBMZXQgeCBiZSB0aGUgcmVzdWx0IG9mIGNvbXB1dGluZyBUb0Jvb2xlYW4oVikuXG4gIGNvbnN0IHggPSBCb29sZWFuKFYpXG5cbiAgLy8gMi4gUmV0dXJuIHRoZSBJREwgYm9vbGVhbiB2YWx1ZSB0aGF0IGlzIHRoZSBvbmUgdGhhdCByZXByZXNlbnRzXG4gIC8vICAgIHRoZSBzYW1lIHRydXRoIHZhbHVlIGFzIHRoZSBFQ01BU2NyaXB0IEJvb2xlYW4gdmFsdWUgeC5cbiAgcmV0dXJuIHhcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy1hbnlcbndlYmlkbC5jb252ZXJ0ZXJzLmFueSA9IGZ1bmN0aW9uIChWKSB7XG4gIHJldHVybiBWXG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtbG9uZy1sb25nXG53ZWJpZGwuY29udmVydGVyc1snbG9uZyBsb25nJ10gPSBmdW5jdGlvbiAoVikge1xuICAvLyAxLiBMZXQgeCBiZSA/IENvbnZlcnRUb0ludChWLCA2NCwgXCJzaWduZWRcIikuXG4gIGNvbnN0IHggPSB3ZWJpZGwudXRpbC5Db252ZXJ0VG9JbnQoViwgNjQsICdzaWduZWQnKVxuXG4gIC8vIDIuIFJldHVybiB0aGUgSURMIGxvbmcgbG9uZyB2YWx1ZSB0aGF0IHJlcHJlc2VudHNcbiAgLy8gICAgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhcyB4LlxuICByZXR1cm4geFxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLXVuc2lnbmVkLWxvbmctbG9uZ1xud2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIGxvbmcgbG9uZyddID0gZnVuY3Rpb24gKFYpIHtcbiAgLy8gMS4gTGV0IHggYmUgPyBDb252ZXJ0VG9JbnQoViwgNjQsIFwidW5zaWduZWRcIikuXG4gIGNvbnN0IHggPSB3ZWJpZGwudXRpbC5Db252ZXJ0VG9JbnQoViwgNjQsICd1bnNpZ25lZCcpXG5cbiAgLy8gMi4gUmV0dXJuIHRoZSBJREwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlIHRoYXRcbiAgLy8gICAgcmVwcmVzZW50cyB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFzIHguXG4gIHJldHVybiB4XG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtdW5zaWduZWQtbG9uZ1xud2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIGxvbmcnXSA9IGZ1bmN0aW9uIChWKSB7XG4gIC8vIDEuIExldCB4IGJlID8gQ29udmVydFRvSW50KFYsIDMyLCBcInVuc2lnbmVkXCIpLlxuICBjb25zdCB4ID0gd2ViaWRsLnV0aWwuQ29udmVydFRvSW50KFYsIDMyLCAndW5zaWduZWQnKVxuXG4gIC8vIDIuIFJldHVybiB0aGUgSURMIHVuc2lnbmVkIGxvbmcgdmFsdWUgdGhhdFxuICAvLyAgICByZXByZXNlbnRzIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYXMgeC5cbiAgcmV0dXJuIHhcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy11bnNpZ25lZC1zaG9ydFxud2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIHNob3J0J10gPSBmdW5jdGlvbiAoViwgb3B0cykge1xuICAvLyAxLiBMZXQgeCBiZSA/IENvbnZlcnRUb0ludChWLCAxNiwgXCJ1bnNpZ25lZFwiKS5cbiAgY29uc3QgeCA9IHdlYmlkbC51dGlsLkNvbnZlcnRUb0ludChWLCAxNiwgJ3Vuc2lnbmVkJywgb3B0cylcblxuICAvLyAyLiBSZXR1cm4gdGhlIElETCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSB0aGF0IHJlcHJlc2VudHNcbiAgLy8gICAgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhcyB4LlxuICByZXR1cm4geFxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2lkbC1BcnJheUJ1ZmZlclxud2ViaWRsLmNvbnZlcnRlcnMuQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoViwgb3B0cyA9IHt9KSB7XG4gIC8vIDEuIElmIFR5cGUoVikgaXMgbm90IE9iamVjdCwgb3IgViBkb2VzIG5vdCBoYXZlIGFuXG4gIC8vICAgIFtbQXJyYXlCdWZmZXJEYXRhXV0gaW50ZXJuYWwgc2xvdCwgdGhlbiB0aHJvdyBhXG4gIC8vICAgIFR5cGVFcnJvci5cbiAgLy8gc2VlOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLWFycmF5YnVmZmVyLWluc3RhbmNlc1xuICAvLyBzZWU6IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvcGVydGllcy1vZi10aGUtc2hhcmVkYXJyYXlidWZmZXItaW5zdGFuY2VzXG4gIGlmIChcbiAgICB3ZWJpZGwudXRpbC5UeXBlKFYpICE9PSAnT2JqZWN0JyB8fFxuICAgICF0eXBlcy5pc0FueUFycmF5QnVmZmVyKFYpXG4gICkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuY29udmVyc2lvbkZhaWxlZCh7XG4gICAgICBwcmVmaXg6IGAke1Z9YCxcbiAgICAgIGFyZ3VtZW50OiBgJHtWfWAsXG4gICAgICB0eXBlczogWydBcnJheUJ1ZmZlciddXG4gICAgfSlcbiAgfVxuXG4gIC8vIDIuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCB0byBhbiBJREwgdHlwZSBhc3NvY2lhdGVkXG4gIC8vICAgIHdpdGggdGhlIFtBbGxvd1NoYXJlZF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhbmRcbiAgLy8gICAgSXNTaGFyZWRBcnJheUJ1ZmZlcihWKSBpcyB0cnVlLCB0aGVuIHRocm93IGFcbiAgLy8gICAgVHlwZUVycm9yLlxuICBpZiAob3B0cy5hbGxvd1NoYXJlZCA9PT0gZmFsc2UgJiYgdHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihWKSkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgIGhlYWRlcjogJ0FycmF5QnVmZmVyJyxcbiAgICAgIG1lc3NhZ2U6ICdTaGFyZWRBcnJheUJ1ZmZlciBpcyBub3QgYWxsb3dlZC4nXG4gICAgfSlcbiAgfVxuXG4gIC8vIDMuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCB0byBhbiBJREwgdHlwZSBhc3NvY2lhdGVkXG4gIC8vICAgIHdpdGggdGhlIFtBbGxvd1Jlc2l6YWJsZV0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhbmRcbiAgLy8gICAgSXNSZXNpemFibGVBcnJheUJ1ZmZlcihWKSBpcyB0cnVlLCB0aGVuIHRocm93IGFcbiAgLy8gICAgVHlwZUVycm9yLlxuICAvLyBOb3RlOiByZXNpemFibGUgQXJyYXlCdWZmZXJzIGFyZSBjdXJyZW50bHkgYSBwcm9wb3NhbC5cblxuICAvLyA0LiBSZXR1cm4gdGhlIElETCBBcnJheUJ1ZmZlciB2YWx1ZSB0aGF0IGlzIGFcbiAgLy8gICAgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdCBhcyBWLlxuICByZXR1cm4gVlxufVxuXG53ZWJpZGwuY29udmVydGVycy5UeXBlZEFycmF5ID0gZnVuY3Rpb24gKFYsIFQsIG9wdHMgPSB7fSkge1xuICAvLyAxLiBMZXQgVCBiZSB0aGUgSURMIHR5cGUgViBpcyBiZWluZyBjb252ZXJ0ZWQgdG8uXG5cbiAgLy8gMi4gSWYgVHlwZShWKSBpcyBub3QgT2JqZWN0LCBvciBWIGRvZXMgbm90IGhhdmUgYVxuICAvLyAgICBbW1R5cGVkQXJyYXlOYW1lXV0gaW50ZXJuYWwgc2xvdCB3aXRoIGEgdmFsdWVcbiAgLy8gICAgZXF1YWwgdG8gVFx1MjAxOXMgbmFtZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKFxuICAgIHdlYmlkbC51dGlsLlR5cGUoVikgIT09ICdPYmplY3QnIHx8XG4gICAgIXR5cGVzLmlzVHlwZWRBcnJheShWKSB8fFxuICAgIFYuY29uc3RydWN0b3IubmFtZSAhPT0gVC5uYW1lXG4gICkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuY29udmVyc2lvbkZhaWxlZCh7XG4gICAgICBwcmVmaXg6IGAke1QubmFtZX1gLFxuICAgICAgYXJndW1lbnQ6IGAke1Z9YCxcbiAgICAgIHR5cGVzOiBbVC5uYW1lXVxuICAgIH0pXG4gIH1cblxuICAvLyAzLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbQWxsb3dTaGFyZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYW5kXG4gIC8vICAgIElzU2hhcmVkQXJyYXlCdWZmZXIoVi5bW1ZpZXdlZEFycmF5QnVmZmVyXV0pIGlzXG4gIC8vICAgIHRydWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIGlmIChvcHRzLmFsbG93U2hhcmVkID09PSBmYWxzZSAmJiB0eXBlcy5pc1NoYXJlZEFycmF5QnVmZmVyKFYuYnVmZmVyKSkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgIGhlYWRlcjogJ0FycmF5QnVmZmVyJyxcbiAgICAgIG1lc3NhZ2U6ICdTaGFyZWRBcnJheUJ1ZmZlciBpcyBub3QgYWxsb3dlZC4nXG4gICAgfSlcbiAgfVxuXG4gIC8vIDQuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCB0byBhbiBJREwgdHlwZSBhc3NvY2lhdGVkXG4gIC8vICAgIHdpdGggdGhlIFtBbGxvd1Jlc2l6YWJsZV0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhbmRcbiAgLy8gICAgSXNSZXNpemFibGVBcnJheUJ1ZmZlcihWLltbVmlld2VkQXJyYXlCdWZmZXJdXSkgaXNcbiAgLy8gICAgdHJ1ZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgLy8gTm90ZTogcmVzaXphYmxlIGFycmF5IGJ1ZmZlcnMgYXJlIGN1cnJlbnRseSBhIHByb3Bvc2FsXG5cbiAgLy8gNS4gUmV0dXJuIHRoZSBJREwgdmFsdWUgb2YgdHlwZSBUIHRoYXQgaXMgYSByZWZlcmVuY2VcbiAgLy8gICAgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIFYuXG4gIHJldHVybiBWXG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLkRhdGFWaWV3ID0gZnVuY3Rpb24gKFYsIG9wdHMgPSB7fSkge1xuICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIG9yIFYgZG9lcyBub3QgaGF2ZSBhXG4gIC8vICAgIFtbRGF0YVZpZXddXSBpbnRlcm5hbCBzbG90LCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSAhPT0gJ09iamVjdCcgfHwgIXR5cGVzLmlzRGF0YVZpZXcoVikpIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICBoZWFkZXI6ICdEYXRhVmlldycsXG4gICAgICBtZXNzYWdlOiAnT2JqZWN0IGlzIG5vdCBhIERhdGFWaWV3LidcbiAgICB9KVxuICB9XG5cbiAgLy8gMi4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90IHRvIGFuIElETCB0eXBlIGFzc29jaWF0ZWRcbiAgLy8gICAgd2l0aCB0aGUgW0FsbG93U2hhcmVkXSBleHRlbmRlZCBhdHRyaWJ1dGUsIGFuZFxuICAvLyAgICBJc1NoYXJlZEFycmF5QnVmZmVyKFYuW1tWaWV3ZWRBcnJheUJ1ZmZlcl1dKSBpcyB0cnVlLFxuICAvLyAgICB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBpZiAob3B0cy5hbGxvd1NoYXJlZCA9PT0gZmFsc2UgJiYgdHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihWLmJ1ZmZlcikpIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICBoZWFkZXI6ICdBcnJheUJ1ZmZlcicsXG4gICAgICBtZXNzYWdlOiAnU2hhcmVkQXJyYXlCdWZmZXIgaXMgbm90IGFsbG93ZWQuJ1xuICAgIH0pXG4gIH1cblxuICAvLyAzLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbQWxsb3dSZXNpemFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYW5kXG4gIC8vICAgIElzUmVzaXphYmxlQXJyYXlCdWZmZXIoVi5bW1ZpZXdlZEFycmF5QnVmZmVyXV0pIGlzXG4gIC8vICAgIHRydWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIC8vIE5vdGU6IHJlc2l6YWJsZSBBcnJheUJ1ZmZlcnMgYXJlIGN1cnJlbnRseSBhIHByb3Bvc2FsXG5cbiAgLy8gNC4gUmV0dXJuIHRoZSBJREwgRGF0YVZpZXcgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZVxuICAvLyAgICB0byB0aGUgc2FtZSBvYmplY3QgYXMgVi5cbiAgcmV0dXJuIFZcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNCdWZmZXJTb3VyY2VcbndlYmlkbC5jb252ZXJ0ZXJzLkJ1ZmZlclNvdXJjZSA9IGZ1bmN0aW9uIChWLCBvcHRzID0ge30pIHtcbiAgaWYgKHR5cGVzLmlzQW55QXJyYXlCdWZmZXIoVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuQXJyYXlCdWZmZXIoViwgb3B0cylcbiAgfVxuXG4gIGlmICh0eXBlcy5pc1R5cGVkQXJyYXkoVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuVHlwZWRBcnJheShWLCBWLmNvbnN0cnVjdG9yKVxuICB9XG5cbiAgaWYgKHR5cGVzLmlzRGF0YVZpZXcoVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuRGF0YVZpZXcoViwgb3B0cylcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvdWxkIG5vdCBjb252ZXJ0ICR7Vn0gdG8gYSBCdWZmZXJTb3VyY2UuYClcbn1cblxud2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPEJ5dGVTdHJpbmc+J10gPSB3ZWJpZGwuc2VxdWVuY2VDb252ZXJ0ZXIoXG4gIHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmdcbilcblxud2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiddID0gd2ViaWRsLnNlcXVlbmNlQ29udmVydGVyKFxuICB3ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8Qnl0ZVN0cmluZz4nXVxuKVxuXG53ZWJpZGwuY29udmVydGVyc1sncmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+J10gPSB3ZWJpZGwucmVjb3JkQ29udmVydGVyKFxuICB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nLFxuICB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nXG4pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3ZWJpZGxcbn1cbiIsICJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBhdG9iIH0gPSByZXF1aXJlKCdidWZmZXInKVxuY29uc3QgeyBpc29tb3JwaGljRGVjb2RlIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuXG5jb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jaHR0cC10b2tlbi1jb2RlLXBvaW50XG4gKi9cbmNvbnN0IEhUVFBfVE9LRU5fQ09ERVBPSU5UUyA9IC9eWyEjJCUmJyorLS5eX3x+QS1aYS16MC05XSskL1xuY29uc3QgSFRUUF9XSElURVNQQUNFX1JFR0VYID0gLyhcXHUwMDBBfFxcdTAwMER8XFx1MDAwOXxcXHUwMDIwKS8gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1xdW90ZWQtc3RyaW5nLXRva2VuLWNvZGUtcG9pbnRcbiAqL1xuY29uc3QgSFRUUF9RVU9URURfU1RSSU5HX1RPS0VOUyA9IC9bXFx1MDAwOXxcXHUwMDIwLVxcdTAwN0V8XFx1MDA4MC1cXHUwMEZGXS8gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZGF0YS11cmwtcHJvY2Vzc29yXG4vKiogQHBhcmFtIHtVUkx9IGRhdGFVUkwgKi9cbmZ1bmN0aW9uIGRhdGFVUkxQcm9jZXNzb3IgKGRhdGFVUkwpIHtcbiAgLy8gMS4gQXNzZXJ0OiBkYXRhVVJMXHUyMDE5cyBzY2hlbWUgaXMgXCJkYXRhXCIuXG4gIGFzc2VydChkYXRhVVJMLnByb3RvY29sID09PSAnZGF0YTonKVxuXG4gIC8vIDIuIExldCBpbnB1dCBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIFVSTFxuICAvLyBzZXJpYWxpemVyIG9uIGRhdGFVUkwgd2l0aCBleGNsdWRlIGZyYWdtZW50XG4gIC8vIHNldCB0byB0cnVlLlxuICBsZXQgaW5wdXQgPSBVUkxTZXJpYWxpemVyKGRhdGFVUkwsIHRydWUpXG5cbiAgLy8gMy4gUmVtb3ZlIHRoZSBsZWFkaW5nIFwiZGF0YTpcIiBzdHJpbmcgZnJvbSBpbnB1dC5cbiAgaW5wdXQgPSBpbnB1dC5zbGljZSg1KVxuXG4gIC8vIDQuIExldCBwb3NpdGlvbiBwb2ludCBhdCB0aGUgc3RhcnQgb2YgaW5wdXQuXG4gIGNvbnN0IHBvc2l0aW9uID0geyBwb3NpdGlvbjogMCB9XG5cbiAgLy8gNS4gTGV0IG1pbWVUeXBlIGJlIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZyBhXG4gIC8vIHNlcXVlbmNlIG9mIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBlcXVhbFxuICAvLyB0byBVKzAwMkMgKCwpLCBnaXZlbiBwb3NpdGlvbi5cbiAgbGV0IG1pbWVUeXBlID0gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QoXG4gICAgJywnLFxuICAgIGlucHV0LFxuICAgIHBvc2l0aW9uXG4gIClcblxuICAvLyA2LiBTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlXG4gIC8vIGZyb20gbWltZVR5cGUuXG4gIC8vIFVuZGljaSBpbXBsZW1lbnRhdGlvbiBub3RlOiB3ZSBuZWVkIHRvIHN0b3JlIHRoZVxuICAvLyBsZW5ndGggYmVjYXVzZSBpZiB0aGUgbWltZXR5cGUgaGFzIHNwYWNlcyByZW1vdmVkLFxuICAvLyB0aGUgd3JvbmcgYW1vdW50IHdpbGwgYmUgc2xpY2VkIGZyb20gdGhlIGlucHV0IGluXG4gIC8vIHN0ZXAgIzlcbiAgY29uc3QgbWltZVR5cGVMZW5ndGggPSBtaW1lVHlwZS5sZW5ndGhcbiAgbWltZVR5cGUgPSByZW1vdmVBU0NJSVdoaXRlc3BhY2UobWltZVR5cGUsIHRydWUsIHRydWUpXG5cbiAgLy8gNy4gSWYgcG9zaXRpb24gaXMgcGFzdCB0aGUgZW5kIG9mIGlucHV0LCB0aGVuXG4gIC8vIHJldHVybiBmYWlsdXJlXG4gIGlmIChwb3NpdGlvbi5wb3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gJ2ZhaWx1cmUnXG4gIH1cblxuICAvLyA4LiBBZHZhbmNlIHBvc2l0aW9uIGJ5IDEuXG4gIHBvc2l0aW9uLnBvc2l0aW9uKytcblxuICAvLyA5LiBMZXQgZW5jb2RlZEJvZHkgYmUgdGhlIHJlbWFpbmRlciBvZiBpbnB1dC5cbiAgY29uc3QgZW5jb2RlZEJvZHkgPSBpbnB1dC5zbGljZShtaW1lVHlwZUxlbmd0aCArIDEpXG5cbiAgLy8gMTAuIExldCBib2R5IGJlIHRoZSBwZXJjZW50LWRlY29kaW5nIG9mIGVuY29kZWRCb2R5LlxuICBsZXQgYm9keSA9IHN0cmluZ1BlcmNlbnREZWNvZGUoZW5jb2RlZEJvZHkpXG5cbiAgLy8gMTEuIElmIG1pbWVUeXBlIGVuZHMgd2l0aCBVKzAwM0IgKDspLCBmb2xsb3dlZCBieVxuICAvLyB6ZXJvIG9yIG1vcmUgVSswMDIwIFNQQUNFLCBmb2xsb3dlZCBieSBhbiBBU0NJSVxuICAvLyBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBcImJhc2U2NFwiLCB0aGVuOlxuICBpZiAoLzsoXFx1MDAyMCl7MCx9YmFzZTY0JC9pLnRlc3QobWltZVR5cGUpKSB7XG4gICAgLy8gMS4gTGV0IHN0cmluZ0JvZHkgYmUgdGhlIGlzb21vcnBoaWMgZGVjb2RlIG9mIGJvZHkuXG4gICAgY29uc3Qgc3RyaW5nQm9keSA9IGlzb21vcnBoaWNEZWNvZGUoYm9keSlcblxuICAgIC8vIDIuIFNldCBib2R5IHRvIHRoZSBmb3JnaXZpbmctYmFzZTY0IGRlY29kZSBvZlxuICAgIC8vIHN0cmluZ0JvZHkuXG4gICAgYm9keSA9IGZvcmdpdmluZ0Jhc2U2NChzdHJpbmdCb2R5KVxuXG4gICAgLy8gMy4gSWYgYm9keSBpcyBmYWlsdXJlLCB0aGVuIHJldHVybiBmYWlsdXJlLlxuICAgIGlmIChib2R5ID09PSAnZmFpbHVyZScpIHtcbiAgICAgIHJldHVybiAnZmFpbHVyZSdcbiAgICB9XG5cbiAgICAvLyA0LiBSZW1vdmUgdGhlIGxhc3QgNiBjb2RlIHBvaW50cyBmcm9tIG1pbWVUeXBlLlxuICAgIG1pbWVUeXBlID0gbWltZVR5cGUuc2xpY2UoMCwgLTYpXG5cbiAgICAvLyA1LiBSZW1vdmUgdHJhaWxpbmcgVSswMDIwIFNQQUNFIGNvZGUgcG9pbnRzIGZyb20gbWltZVR5cGUsXG4gICAgLy8gaWYgYW55LlxuICAgIG1pbWVUeXBlID0gbWltZVR5cGUucmVwbGFjZSgvKFxcdTAwMjApKyQvLCAnJylcblxuICAgIC8vIDYuIFJlbW92ZSB0aGUgbGFzdCBVKzAwM0IgKDspIGNvZGUgcG9pbnQgZnJvbSBtaW1lVHlwZS5cbiAgICBtaW1lVHlwZSA9IG1pbWVUeXBlLnNsaWNlKDAsIC0xKVxuICB9XG5cbiAgLy8gMTIuIElmIG1pbWVUeXBlIHN0YXJ0cyB3aXRoIFUrMDAzQiAoOyksIHRoZW4gcHJlcGVuZFxuICAvLyBcInRleHQvcGxhaW5cIiB0byBtaW1lVHlwZS5cbiAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoJzsnKSkge1xuICAgIG1pbWVUeXBlID0gJ3RleHQvcGxhaW4nICsgbWltZVR5cGVcbiAgfVxuXG4gIC8vIDEzLiBMZXQgbWltZVR5cGVSZWNvcmQgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nXG4gIC8vIG1pbWVUeXBlLlxuICBsZXQgbWltZVR5cGVSZWNvcmQgPSBwYXJzZU1JTUVUeXBlKG1pbWVUeXBlKVxuXG4gIC8vIDE0LiBJZiBtaW1lVHlwZVJlY29yZCBpcyBmYWlsdXJlLCB0aGVuIHNldFxuICAvLyBtaW1lVHlwZVJlY29yZCB0byB0ZXh0L3BsYWluO2NoYXJzZXQ9VVMtQVNDSUkuXG4gIGlmIChtaW1lVHlwZVJlY29yZCA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgbWltZVR5cGVSZWNvcmQgPSBwYXJzZU1JTUVUeXBlKCd0ZXh0L3BsYWluO2NoYXJzZXQ9VVMtQVNDSUknKVxuICB9XG5cbiAgLy8gMTUuIFJldHVybiBhIG5ldyBkYXRhOiBVUkwgc3RydWN0IHdob3NlIE1JTUVcbiAgLy8gdHlwZSBpcyBtaW1lVHlwZVJlY29yZCBhbmQgYm9keSBpcyBib2R5LlxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZGF0YS11cmwtc3RydWN0XG4gIHJldHVybiB7IG1pbWVUeXBlOiBtaW1lVHlwZVJlY29yZCwgYm9keSB9XG59XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtc2VyaWFsaXplclxuLyoqXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGV4Y2x1ZGVGcmFnbWVudFxuICovXG5mdW5jdGlvbiBVUkxTZXJpYWxpemVyICh1cmwsIGV4Y2x1ZGVGcmFnbWVudCA9IGZhbHNlKSB7XG4gIGlmICghZXhjbHVkZUZyYWdtZW50KSB7XG4gICAgcmV0dXJuIHVybC5ocmVmXG4gIH1cblxuICBjb25zdCBocmVmID0gdXJsLmhyZWZcbiAgY29uc3QgaGFzaExlbmd0aCA9IHVybC5oYXNoLmxlbmd0aFxuXG4gIHJldHVybiBoYXNoTGVuZ3RoID09PSAwID8gaHJlZiA6IGhyZWYuc3Vic3RyaW5nKDAsIGhyZWYubGVuZ3RoIC0gaGFzaExlbmd0aClcbn1cblxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2NvbGxlY3QtYS1zZXF1ZW5jZS1vZi1jb2RlLXBvaW50c1xuLyoqXG4gKiBAcGFyYW0geyhjaGFyOiBzdHJpbmcpID0+IGJvb2xlYW59IGNvbmRpdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge3sgcG9zaXRpb246IG51bWJlciB9fSBwb3NpdGlvblxuICovXG5mdW5jdGlvbiBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzIChjb25kaXRpb24sIGlucHV0LCBwb3NpdGlvbikge1xuICAvLyAxLiBMZXQgcmVzdWx0IGJlIHRoZSBlbXB0eSBzdHJpbmcuXG4gIGxldCByZXN1bHQgPSAnJ1xuXG4gIC8vIDIuIFdoaWxlIHBvc2l0aW9uIGRvZXNuXHUyMDE5dCBwb2ludCBwYXN0IHRoZSBlbmQgb2YgaW5wdXQgYW5kIHRoZVxuICAvLyBjb2RlIHBvaW50IGF0IHBvc2l0aW9uIHdpdGhpbiBpbnB1dCBtZWV0cyB0aGUgY29uZGl0aW9uIGNvbmRpdGlvbjpcbiAgd2hpbGUgKHBvc2l0aW9uLnBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoICYmIGNvbmRpdGlvbihpbnB1dFtwb3NpdGlvbi5wb3NpdGlvbl0pKSB7XG4gICAgLy8gMS4gQXBwZW5kIHRoYXQgY29kZSBwb2ludCB0byB0aGUgZW5kIG9mIHJlc3VsdC5cbiAgICByZXN1bHQgKz0gaW5wdXRbcG9zaXRpb24ucG9zaXRpb25dXG5cbiAgICAvLyAyLiBBZHZhbmNlIHBvc2l0aW9uIGJ5IDEuXG4gICAgcG9zaXRpb24ucG9zaXRpb24rK1xuICB9XG5cbiAgLy8gMy4gUmV0dXJuIHJlc3VsdC5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIEEgZmFzdGVyIGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHMgdGhhdCBvbmx5IHdvcmtzIHdoZW4gY29tcGFyaW5nIGEgc2luZ2xlIGNoYXJhY3Rlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRcbiAqIEBwYXJhbSB7eyBwb3NpdGlvbjogbnVtYmVyIH19IHBvc2l0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0IChjaGFyLCBpbnB1dCwgcG9zaXRpb24pIHtcbiAgY29uc3QgaWR4ID0gaW5wdXQuaW5kZXhPZihjaGFyLCBwb3NpdGlvbi5wb3NpdGlvbilcbiAgY29uc3Qgc3RhcnQgPSBwb3NpdGlvbi5wb3NpdGlvblxuXG4gIGlmIChpZHggPT09IC0xKSB7XG4gICAgcG9zaXRpb24ucG9zaXRpb24gPSBpbnB1dC5sZW5ndGhcbiAgICByZXR1cm4gaW5wdXQuc2xpY2Uoc3RhcnQpXG4gIH1cblxuICBwb3NpdGlvbi5wb3NpdGlvbiA9IGlkeFxuICByZXR1cm4gaW5wdXQuc2xpY2Uoc3RhcnQsIHBvc2l0aW9uLnBvc2l0aW9uKVxufVxuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3N0cmluZy1wZXJjZW50LWRlY29kZVxuLyoqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCAqL1xuZnVuY3Rpb24gc3RyaW5nUGVyY2VudERlY29kZSAoaW5wdXQpIHtcbiAgLy8gMS4gTGV0IGJ5dGVzIGJlIHRoZSBVVEYtOCBlbmNvZGluZyBvZiBpbnB1dC5cbiAgY29uc3QgYnl0ZXMgPSBlbmNvZGVyLmVuY29kZShpbnB1dClcblxuICAvLyAyLiBSZXR1cm4gdGhlIHBlcmNlbnQtZGVjb2Rpbmcgb2YgYnl0ZXMuXG4gIHJldHVybiBwZXJjZW50RGVjb2RlKGJ5dGVzKVxufVxuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3BlcmNlbnQtZGVjb2RlXG4vKiogQHBhcmFtIHtVaW50OEFycmF5fSBpbnB1dCAqL1xuZnVuY3Rpb24gcGVyY2VudERlY29kZSAoaW5wdXQpIHtcbiAgLy8gMS4gTGV0IG91dHB1dCBiZSBhbiBlbXB0eSBieXRlIHNlcXVlbmNlLlxuICAvKiogQHR5cGUge251bWJlcltdfSAqL1xuICBjb25zdCBvdXRwdXQgPSBbXVxuXG4gIC8vIDIuIEZvciBlYWNoIGJ5dGUgYnl0ZSBpbiBpbnB1dDpcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGJ5dGUgPSBpbnB1dFtpXVxuXG4gICAgLy8gMS4gSWYgYnl0ZSBpcyBub3QgMHgyNSAoJSksIHRoZW4gYXBwZW5kIGJ5dGUgdG8gb3V0cHV0LlxuICAgIGlmIChieXRlICE9PSAweDI1KSB7XG4gICAgICBvdXRwdXQucHVzaChieXRlKVxuXG4gICAgLy8gMi4gT3RoZXJ3aXNlLCBpZiBieXRlIGlzIDB4MjUgKCUpIGFuZCB0aGUgbmV4dCB0d28gYnl0ZXNcbiAgICAvLyBhZnRlciBieXRlIGluIGlucHV0IGFyZSBub3QgaW4gdGhlIHJhbmdlc1xuICAgIC8vIDB4MzAgKDApIHRvIDB4MzkgKDkpLCAweDQxIChBKSB0byAweDQ2IChGKSxcbiAgICAvLyBhbmQgMHg2MSAoYSkgdG8gMHg2NiAoZiksIGFsbCBpbmNsdXNpdmUsIGFwcGVuZCBieXRlXG4gICAgLy8gdG8gb3V0cHV0LlxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBieXRlID09PSAweDI1ICYmXG4gICAgICAhL15bMC05QS1GYS1mXXsyfSQvaS50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKVxuICAgICkge1xuICAgICAgb3V0cHV0LnB1c2goMHgyNSlcblxuICAgIC8vIDMuIE90aGVyd2lzZTpcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gMS4gTGV0IGJ5dGVQb2ludCBiZSB0aGUgdHdvIGJ5dGVzIGFmdGVyIGJ5dGUgaW4gaW5wdXQsXG4gICAgICAvLyBkZWNvZGVkLCBhbmQgdGhlbiBpbnRlcnByZXRlZCBhcyBoZXhhZGVjaW1hbCBudW1iZXIuXG4gICAgICBjb25zdCBuZXh0VHdvQnl0ZXMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKVxuICAgICAgY29uc3QgYnl0ZVBvaW50ID0gTnVtYmVyLnBhcnNlSW50KG5leHRUd29CeXRlcywgMTYpXG5cbiAgICAgIC8vIDIuIEFwcGVuZCBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgYnl0ZVBvaW50IHRvIG91dHB1dC5cbiAgICAgIG91dHB1dC5wdXNoKGJ5dGVQb2ludClcblxuICAgICAgLy8gMy4gU2tpcCB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gaW5wdXQuXG4gICAgICBpICs9IDJcbiAgICB9XG4gIH1cblxuICAvLyAzLiBSZXR1cm4gb3V0cHV0LlxuICByZXR1cm4gVWludDhBcnJheS5mcm9tKG91dHB1dClcbn1cblxuLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNwYXJzZS1hLW1pbWUtdHlwZVxuLyoqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCAqL1xuZnVuY3Rpb24gcGFyc2VNSU1FVHlwZSAoaW5wdXQpIHtcbiAgLy8gMS4gUmVtb3ZlIGFueSBsZWFkaW5nIGFuZCB0cmFpbGluZyBIVFRQIHdoaXRlc3BhY2VcbiAgLy8gZnJvbSBpbnB1dC5cbiAgaW5wdXQgPSByZW1vdmVIVFRQV2hpdGVzcGFjZShpbnB1dCwgdHJ1ZSwgdHJ1ZSlcblxuICAvLyAyLiBMZXQgcG9zaXRpb24gYmUgYSBwb3NpdGlvbiB2YXJpYWJsZSBmb3IgaW5wdXQsXG4gIC8vIGluaXRpYWxseSBwb2ludGluZyBhdCB0aGUgc3RhcnQgb2YgaW5wdXQuXG4gIGNvbnN0IHBvc2l0aW9uID0geyBwb3NpdGlvbjogMCB9XG5cbiAgLy8gMy4gTGV0IHR5cGUgYmUgdGhlIHJlc3VsdCBvZiBjb2xsZWN0aW5nIGEgc2VxdWVuY2VcbiAgLy8gb2YgY29kZSBwb2ludHMgdGhhdCBhcmUgbm90IFUrMDAyRiAoLykgZnJvbVxuICAvLyBpbnB1dCwgZ2l2ZW4gcG9zaXRpb24uXG4gIGNvbnN0IHR5cGUgPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdChcbiAgICAnLycsXG4gICAgaW5wdXQsXG4gICAgcG9zaXRpb25cbiAgKVxuXG4gIC8vIDQuIElmIHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZyBvciBkb2VzIG5vdCBzb2xlbHlcbiAgLy8gY29udGFpbiBIVFRQIHRva2VuIGNvZGUgcG9pbnRzLCB0aGVuIHJldHVybiBmYWlsdXJlLlxuICAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtdG9rZW4tY29kZS1wb2ludFxuICBpZiAodHlwZS5sZW5ndGggPT09IDAgfHwgIUhUVFBfVE9LRU5fQ09ERVBPSU5UUy50ZXN0KHR5cGUpKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgLy8gNS4gSWYgcG9zaXRpb24gaXMgcGFzdCB0aGUgZW5kIG9mIGlucHV0LCB0aGVuIHJldHVyblxuICAvLyBmYWlsdXJlXG4gIGlmIChwb3NpdGlvbi5wb3NpdGlvbiA+IGlucHV0Lmxlbmd0aCkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIC8vIDYuIEFkdmFuY2UgcG9zaXRpb24gYnkgMS4gKFRoaXMgc2tpcHMgcGFzdCBVKzAwMkYgKC8pLilcbiAgcG9zaXRpb24ucG9zaXRpb24rK1xuXG4gIC8vIDcuIExldCBzdWJ0eXBlIGJlIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZyBhIHNlcXVlbmNlIG9mXG4gIC8vIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBVKzAwM0IgKDspIGZyb20gaW5wdXQsIGdpdmVuXG4gIC8vIHBvc2l0aW9uLlxuICBsZXQgc3VidHlwZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICc7JyxcbiAgICBpbnB1dCxcbiAgICBwb3NpdGlvblxuICApXG5cbiAgLy8gOC4gUmVtb3ZlIGFueSB0cmFpbGluZyBIVFRQIHdoaXRlc3BhY2UgZnJvbSBzdWJ0eXBlLlxuICBzdWJ0eXBlID0gcmVtb3ZlSFRUUFdoaXRlc3BhY2Uoc3VidHlwZSwgZmFsc2UsIHRydWUpXG5cbiAgLy8gOS4gSWYgc3VidHlwZSBpcyB0aGUgZW1wdHkgc3RyaW5nIG9yIGRvZXMgbm90IHNvbGVseVxuICAvLyBjb250YWluIEhUVFAgdG9rZW4gY29kZSBwb2ludHMsIHRoZW4gcmV0dXJuIGZhaWx1cmUuXG4gIGlmIChzdWJ0eXBlLmxlbmd0aCA9PT0gMCB8fCAhSFRUUF9UT0tFTl9DT0RFUE9JTlRTLnRlc3Qoc3VidHlwZSkpIHtcbiAgICByZXR1cm4gJ2ZhaWx1cmUnXG4gIH1cblxuICBjb25zdCB0eXBlTG93ZXJjYXNlID0gdHlwZS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHN1YnR5cGVMb3dlcmNhc2UgPSBzdWJ0eXBlLnRvTG93ZXJDYXNlKClcblxuICAvLyAxMC4gTGV0IG1pbWVUeXBlIGJlIGEgbmV3IE1JTUUgdHlwZSByZWNvcmQgd2hvc2UgdHlwZVxuICAvLyBpcyB0eXBlLCBpbiBBU0NJSSBsb3dlcmNhc2UsIGFuZCBzdWJ0eXBlIGlzIHN1YnR5cGUsXG4gIC8vIGluIEFTQ0lJIGxvd2VyY2FzZS5cbiAgLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNtaW1lLXR5cGVcbiAgY29uc3QgbWltZVR5cGUgPSB7XG4gICAgdHlwZTogdHlwZUxvd2VyY2FzZSxcbiAgICBzdWJ0eXBlOiBzdWJ0eXBlTG93ZXJjYXNlLFxuICAgIC8qKiBAdHlwZSB7TWFwPHN0cmluZywgc3RyaW5nPn0gKi9cbiAgICBwYXJhbWV0ZXJzOiBuZXcgTWFwKCksXG4gICAgLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNtaW1lLXR5cGUtZXNzZW5jZVxuICAgIGVzc2VuY2U6IGAke3R5cGVMb3dlcmNhc2V9LyR7c3VidHlwZUxvd2VyY2FzZX1gXG4gIH1cblxuICAvLyAxMS4gV2hpbGUgcG9zaXRpb24gaXMgbm90IHBhc3QgdGhlIGVuZCBvZiBpbnB1dDpcbiAgd2hpbGUgKHBvc2l0aW9uLnBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgLy8gMS4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLiAoVGhpcyBza2lwcyBwYXN0IFUrMDAzQiAoOykuKVxuICAgIHBvc2l0aW9uLnBvc2l0aW9uKytcblxuICAgIC8vIDIuIENvbGxlY3QgYSBzZXF1ZW5jZSBvZiBjb2RlIHBvaW50cyB0aGF0IGFyZSBIVFRQXG4gICAgLy8gd2hpdGVzcGFjZSBmcm9tIGlucHV0IGdpdmVuIHBvc2l0aW9uLlxuICAgIGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHMoXG4gICAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC13aGl0ZXNwYWNlXG4gICAgICBjaGFyID0+IEhUVFBfV0hJVEVTUEFDRV9SRUdFWC50ZXN0KGNoYXIpLFxuICAgICAgaW5wdXQsXG4gICAgICBwb3NpdGlvblxuICAgIClcblxuICAgIC8vIDMuIExldCBwYXJhbWV0ZXJOYW1lIGJlIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZyBhXG4gICAgLy8gc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMgdGhhdCBhcmUgbm90IFUrMDAzQiAoOylcbiAgICAvLyBvciBVKzAwM0QgKD0pIGZyb20gaW5wdXQsIGdpdmVuIHBvc2l0aW9uLlxuICAgIGxldCBwYXJhbWV0ZXJOYW1lID0gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50cyhcbiAgICAgIChjaGFyKSA9PiBjaGFyICE9PSAnOycgJiYgY2hhciAhPT0gJz0nLFxuICAgICAgaW5wdXQsXG4gICAgICBwb3NpdGlvblxuICAgIClcblxuICAgIC8vIDQuIFNldCBwYXJhbWV0ZXJOYW1lIHRvIHBhcmFtZXRlck5hbWUsIGluIEFTQ0lJXG4gICAgLy8gbG93ZXJjYXNlLlxuICAgIHBhcmFtZXRlck5hbWUgPSBwYXJhbWV0ZXJOYW1lLnRvTG93ZXJDYXNlKClcblxuICAgIC8vIDUuIElmIHBvc2l0aW9uIGlzIG5vdCBwYXN0IHRoZSBlbmQgb2YgaW5wdXQsIHRoZW46XG4gICAgaWYgKHBvc2l0aW9uLnBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICAvLyAxLiBJZiB0aGUgY29kZSBwb2ludCBhdCBwb3NpdGlvbiB3aXRoaW4gaW5wdXQgaXNcbiAgICAgIC8vIFUrMDAzQiAoOyksIHRoZW4gY29udGludWUuXG4gICAgICBpZiAoaW5wdXRbcG9zaXRpb24ucG9zaXRpb25dID09PSAnOycpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMi4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLiAoVGhpcyBza2lwcyBwYXN0IFUrMDAzRCAoPSkuKVxuICAgICAgcG9zaXRpb24ucG9zaXRpb24rK1xuICAgIH1cblxuICAgIC8vIDYuIElmIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiBpbnB1dCwgdGhlbiBicmVhay5cbiAgICBpZiAocG9zaXRpb24ucG9zaXRpb24gPiBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gNy4gTGV0IHBhcmFtZXRlclZhbHVlIGJlIG51bGwuXG4gICAgbGV0IHBhcmFtZXRlclZhbHVlID0gbnVsbFxuXG4gICAgLy8gOC4gSWYgdGhlIGNvZGUgcG9pbnQgYXQgcG9zaXRpb24gd2l0aGluIGlucHV0IGlzXG4gICAgLy8gVSswMDIyIChcIiksIHRoZW46XG4gICAgaWYgKGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXSA9PT0gJ1wiJykge1xuICAgICAgLy8gMS4gU2V0IHBhcmFtZXRlclZhbHVlIHRvIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZ1xuICAgICAgLy8gYW4gSFRUUCBxdW90ZWQgc3RyaW5nIGZyb20gaW5wdXQsIGdpdmVuIHBvc2l0aW9uXG4gICAgICAvLyBhbmQgdGhlIGV4dHJhY3QtdmFsdWUgZmxhZy5cbiAgICAgIHBhcmFtZXRlclZhbHVlID0gY29sbGVjdEFuSFRUUFF1b3RlZFN0cmluZyhpbnB1dCwgcG9zaXRpb24sIHRydWUpXG5cbiAgICAgIC8vIDIuIENvbGxlY3QgYSBzZXF1ZW5jZSBvZiBjb2RlIHBvaW50cyB0aGF0IGFyZSBub3RcbiAgICAgIC8vIFUrMDAzQiAoOykgZnJvbSBpbnB1dCwgZ2l2ZW4gcG9zaXRpb24uXG4gICAgICBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdChcbiAgICAgICAgJzsnLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIClcblxuICAgIC8vIDkuIE90aGVyd2lzZTpcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gMS4gU2V0IHBhcmFtZXRlclZhbHVlIHRvIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZ1xuICAgICAgLy8gYSBzZXF1ZW5jZSBvZiBjb2RlIHBvaW50cyB0aGF0IGFyZSBub3QgVSswMDNCICg7KVxuICAgICAgLy8gZnJvbSBpbnB1dCwgZ2l2ZW4gcG9zaXRpb24uXG4gICAgICBwYXJhbWV0ZXJWYWx1ZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICAgICAnOycsXG4gICAgICAgIGlucHV0LFxuICAgICAgICBwb3NpdGlvblxuICAgICAgKVxuXG4gICAgICAvLyAyLiBSZW1vdmUgYW55IHRyYWlsaW5nIEhUVFAgd2hpdGVzcGFjZSBmcm9tIHBhcmFtZXRlclZhbHVlLlxuICAgICAgcGFyYW1ldGVyVmFsdWUgPSByZW1vdmVIVFRQV2hpdGVzcGFjZShwYXJhbWV0ZXJWYWx1ZSwgZmFsc2UsIHRydWUpXG5cbiAgICAgIC8vIDMuIElmIHBhcmFtZXRlclZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gY29udGludWUuXG4gICAgICBpZiAocGFyYW1ldGVyVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMTAuIElmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlXG4gICAgLy8gLSBwYXJhbWV0ZXJOYW1lIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nXG4gICAgLy8gLSBwYXJhbWV0ZXJOYW1lIHNvbGVseSBjb250YWlucyBIVFRQIHRva2VuIGNvZGUgcG9pbnRzXG4gICAgLy8gLSBwYXJhbWV0ZXJWYWx1ZSBzb2xlbHkgY29udGFpbnMgSFRUUCBxdW90ZWQtc3RyaW5nIHRva2VuIGNvZGUgcG9pbnRzXG4gICAgLy8gLSBtaW1lVHlwZVx1MjAxOXMgcGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1lXSBkb2VzIG5vdCBleGlzdFxuICAgIC8vIHRoZW4gc2V0IG1pbWVUeXBlXHUyMDE5cyBwYXJhbWV0ZXJzW3BhcmFtZXRlck5hbWVdIHRvIHBhcmFtZXRlclZhbHVlLlxuICAgIGlmIChcbiAgICAgIHBhcmFtZXRlck5hbWUubGVuZ3RoICE9PSAwICYmXG4gICAgICBIVFRQX1RPS0VOX0NPREVQT0lOVFMudGVzdChwYXJhbWV0ZXJOYW1lKSAmJlxuICAgICAgKHBhcmFtZXRlclZhbHVlLmxlbmd0aCA9PT0gMCB8fCBIVFRQX1FVT1RFRF9TVFJJTkdfVE9LRU5TLnRlc3QocGFyYW1ldGVyVmFsdWUpKSAmJlxuICAgICAgIW1pbWVUeXBlLnBhcmFtZXRlcnMuaGFzKHBhcmFtZXRlck5hbWUpXG4gICAgKSB7XG4gICAgICBtaW1lVHlwZS5wYXJhbWV0ZXJzLnNldChwYXJhbWV0ZXJOYW1lLCBwYXJhbWV0ZXJWYWx1ZSlcbiAgICB9XG4gIH1cblxuICAvLyAxMi4gUmV0dXJuIG1pbWVUeXBlLlxuICByZXR1cm4gbWltZVR5cGVcbn1cblxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2ZvcmdpdmluZy1iYXNlNjQtZGVjb2RlXG4vKiogQHBhcmFtIHtzdHJpbmd9IGRhdGEgKi9cbmZ1bmN0aW9uIGZvcmdpdmluZ0Jhc2U2NCAoZGF0YSkge1xuICAvLyAxLiBSZW1vdmUgYWxsIEFTQ0lJIHdoaXRlc3BhY2UgZnJvbSBkYXRhLlxuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9bXFx1MDAwOVxcdTAwMEFcXHUwMDBDXFx1MDAwRFxcdTAwMjBdL2csICcnKSAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8vIDIuIElmIGRhdGFcdTIwMTlzIGNvZGUgcG9pbnQgbGVuZ3RoIGRpdmlkZXMgYnkgNCBsZWF2aW5nXG4gIC8vIG5vIHJlbWFpbmRlciwgdGhlbjpcbiAgaWYgKGRhdGEubGVuZ3RoICUgNCA9PT0gMCkge1xuICAgIC8vIDEuIElmIGRhdGEgZW5kcyB3aXRoIG9uZSBvciB0d28gVSswMDNEICg9KSBjb2RlIHBvaW50cyxcbiAgICAvLyB0aGVuIHJlbW92ZSB0aGVtIGZyb20gZGF0YS5cbiAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC89Pz0kLywgJycpXG4gIH1cblxuICAvLyAzLiBJZiBkYXRhXHUyMDE5cyBjb2RlIHBvaW50IGxlbmd0aCBkaXZpZGVzIGJ5IDQgbGVhdmluZ1xuICAvLyBhIHJlbWFpbmRlciBvZiAxLCB0aGVuIHJldHVybiBmYWlsdXJlLlxuICBpZiAoZGF0YS5sZW5ndGggJSA0ID09PSAxKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgLy8gNC4gSWYgZGF0YSBjb250YWlucyBhIGNvZGUgcG9pbnQgdGhhdCBpcyBub3Qgb25lIG9mXG4gIC8vICBVKzAwMkIgKCspXG4gIC8vICBVKzAwMkYgKC8pXG4gIC8vICBBU0NJSSBhbHBoYW51bWVyaWNcbiAgLy8gdGhlbiByZXR1cm4gZmFpbHVyZS5cbiAgaWYgKC9bXisvMC05QS1aYS16XS8udGVzdChkYXRhKSkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIGNvbnN0IGJpbmFyeSA9IGF0b2IoZGF0YSlcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnkubGVuZ3RoKVxuXG4gIGZvciAobGV0IGJ5dGUgPSAwOyBieXRlIDwgYmluYXJ5Lmxlbmd0aDsgYnl0ZSsrKSB7XG4gICAgYnl0ZXNbYnl0ZV0gPSBiaW5hcnkuY2hhckNvZGVBdChieXRlKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb2xsZWN0LWFuLWh0dHAtcXVvdGVkLXN0cmluZ1xuLy8gdGVzdHM6IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNleGFtcGxlLWh0dHAtcXVvdGVkLXN0cmluZ1xuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRcbiAqIEBwYXJhbSB7eyBwb3NpdGlvbjogbnVtYmVyIH19IHBvc2l0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBleHRyYWN0VmFsdWVcbiAqL1xuZnVuY3Rpb24gY29sbGVjdEFuSFRUUFF1b3RlZFN0cmluZyAoaW5wdXQsIHBvc2l0aW9uLCBleHRyYWN0VmFsdWUpIHtcbiAgLy8gMS4gTGV0IHBvc2l0aW9uU3RhcnQgYmUgcG9zaXRpb24uXG4gIGNvbnN0IHBvc2l0aW9uU3RhcnQgPSBwb3NpdGlvbi5wb3NpdGlvblxuXG4gIC8vIDIuIExldCB2YWx1ZSBiZSB0aGUgZW1wdHkgc3RyaW5nLlxuICBsZXQgdmFsdWUgPSAnJ1xuXG4gIC8vIDMuIEFzc2VydDogdGhlIGNvZGUgcG9pbnQgYXQgcG9zaXRpb24gd2l0aGluIGlucHV0XG4gIC8vIGlzIFUrMDAyMiAoXCIpLlxuICBhc3NlcnQoaW5wdXRbcG9zaXRpb24ucG9zaXRpb25dID09PSAnXCInKVxuXG4gIC8vIDQuIEFkdmFuY2UgcG9zaXRpb24gYnkgMS5cbiAgcG9zaXRpb24ucG9zaXRpb24rK1xuXG4gIC8vIDUuIFdoaWxlIHRydWU6XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gMS4gQXBwZW5kIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZyBhIHNlcXVlbmNlIG9mIGNvZGUgcG9pbnRzXG4gICAgLy8gdGhhdCBhcmUgbm90IFUrMDAyMiAoXCIpIG9yIFUrMDA1QyAoXFwpIGZyb20gaW5wdXQsIGdpdmVuXG4gICAgLy8gcG9zaXRpb24sIHRvIHZhbHVlLlxuICAgIHZhbHVlICs9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHMoXG4gICAgICAoY2hhcikgPT4gY2hhciAhPT0gJ1wiJyAmJiBjaGFyICE9PSAnXFxcXCcsXG4gICAgICBpbnB1dCxcbiAgICAgIHBvc2l0aW9uXG4gICAgKVxuXG4gICAgLy8gMi4gSWYgcG9zaXRpb24gaXMgcGFzdCB0aGUgZW5kIG9mIGlucHV0LCB0aGVuIGJyZWFrLlxuICAgIGlmIChwb3NpdGlvbi5wb3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gMy4gTGV0IHF1b3RlT3JCYWNrc2xhc2ggYmUgdGhlIGNvZGUgcG9pbnQgYXQgcG9zaXRpb24gd2l0aGluXG4gICAgLy8gaW5wdXQuXG4gICAgY29uc3QgcXVvdGVPckJhY2tzbGFzaCA9IGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXVxuXG4gICAgLy8gNC4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLlxuICAgIHBvc2l0aW9uLnBvc2l0aW9uKytcblxuICAgIC8vIDUuIElmIHF1b3RlT3JCYWNrc2xhc2ggaXMgVSswMDVDIChcXCksIHRoZW46XG4gICAgaWYgKHF1b3RlT3JCYWNrc2xhc2ggPT09ICdcXFxcJykge1xuICAgICAgLy8gMS4gSWYgcG9zaXRpb24gaXMgcGFzdCB0aGUgZW5kIG9mIGlucHV0LCB0aGVuIGFwcGVuZFxuICAgICAgLy8gVSswMDVDIChcXCkgdG8gdmFsdWUgYW5kIGJyZWFrLlxuICAgICAgaWYgKHBvc2l0aW9uLnBvc2l0aW9uID49IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICB2YWx1ZSArPSAnXFxcXCdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gQXBwZW5kIHRoZSBjb2RlIHBvaW50IGF0IHBvc2l0aW9uIHdpdGhpbiBpbnB1dCB0byB2YWx1ZS5cbiAgICAgIHZhbHVlICs9IGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXVxuXG4gICAgICAvLyAzLiBBZHZhbmNlIHBvc2l0aW9uIGJ5IDEuXG4gICAgICBwb3NpdGlvbi5wb3NpdGlvbisrXG5cbiAgICAvLyA2LiBPdGhlcndpc2U6XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDEuIEFzc2VydDogcXVvdGVPckJhY2tzbGFzaCBpcyBVKzAwMjIgKFwiKS5cbiAgICAgIGFzc2VydChxdW90ZU9yQmFja3NsYXNoID09PSAnXCInKVxuXG4gICAgICAvLyAyLiBCcmVhay5cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gNi4gSWYgdGhlIGV4dHJhY3QtdmFsdWUgZmxhZyBpcyBzZXQsIHRoZW4gcmV0dXJuIHZhbHVlLlxuICBpZiAoZXh0cmFjdFZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvLyA3LiBSZXR1cm4gdGhlIGNvZGUgcG9pbnRzIGZyb20gcG9zaXRpb25TdGFydCB0byBwb3NpdGlvbixcbiAgLy8gaW5jbHVzaXZlLCB3aXRoaW4gaW5wdXQuXG4gIHJldHVybiBpbnB1dC5zbGljZShwb3NpdGlvblN0YXJ0LCBwb3NpdGlvbi5wb3NpdGlvbilcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jc2VyaWFsaXplLWEtbWltZS10eXBlXG4gKi9cbmZ1bmN0aW9uIHNlcmlhbGl6ZUFNaW1lVHlwZSAobWltZVR5cGUpIHtcbiAgYXNzZXJ0KG1pbWVUeXBlICE9PSAnZmFpbHVyZScpXG4gIGNvbnN0IHsgcGFyYW1ldGVycywgZXNzZW5jZSB9ID0gbWltZVR5cGVcblxuICAvLyAxLiBMZXQgc2VyaWFsaXphdGlvbiBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtaW1lVHlwZVx1MjAxOXNcbiAgLy8gICAgdHlwZSwgVSswMDJGICgvKSwgYW5kIG1pbWVUeXBlXHUyMDE5cyBzdWJ0eXBlLlxuICBsZXQgc2VyaWFsaXphdGlvbiA9IGVzc2VuY2VcblxuICAvLyAyLiBGb3IgZWFjaCBuYW1lIFx1MjE5MiB2YWx1ZSBvZiBtaW1lVHlwZVx1MjAxOXMgcGFyYW1ldGVyczpcbiAgZm9yIChsZXQgW25hbWUsIHZhbHVlXSBvZiBwYXJhbWV0ZXJzLmVudHJpZXMoKSkge1xuICAgIC8vIDEuIEFwcGVuZCBVKzAwM0IgKDspIHRvIHNlcmlhbGl6YXRpb24uXG4gICAgc2VyaWFsaXphdGlvbiArPSAnOydcblxuICAgIC8vIDIuIEFwcGVuZCBuYW1lIHRvIHNlcmlhbGl6YXRpb24uXG4gICAgc2VyaWFsaXphdGlvbiArPSBuYW1lXG5cbiAgICAvLyAzLiBBcHBlbmQgVSswMDNEICg9KSB0byBzZXJpYWxpemF0aW9uLlxuICAgIHNlcmlhbGl6YXRpb24gKz0gJz0nXG5cbiAgICAvLyA0LiBJZiB2YWx1ZSBkb2VzIG5vdCBzb2xlbHkgY29udGFpbiBIVFRQIHRva2VuIGNvZGVcbiAgICAvLyAgICBwb2ludHMgb3IgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgdGhlbjpcbiAgICBpZiAoIUhUVFBfVE9LRU5fQ09ERVBPSU5UUy50ZXN0KHZhbHVlKSkge1xuICAgICAgLy8gMS4gUHJlY2VkZSBlYWNoIG9jY3VyZW5jZSBvZiBVKzAwMjIgKFwiKSBvclxuICAgICAgLy8gICAgVSswMDVDIChcXCkgaW4gdmFsdWUgd2l0aCBVKzAwNUMgKFxcKS5cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvKFxcXFx8XCIpL2csICdcXFxcJDEnKVxuXG4gICAgICAvLyAyLiBQcmVwZW5kIFUrMDAyMiAoXCIpIHRvIHZhbHVlLlxuICAgICAgdmFsdWUgPSAnXCInICsgdmFsdWVcblxuICAgICAgLy8gMy4gQXBwZW5kIFUrMDAyMiAoXCIpIHRvIHZhbHVlLlxuICAgICAgdmFsdWUgKz0gJ1wiJ1xuICAgIH1cblxuICAgIC8vIDUuIEFwcGVuZCB2YWx1ZSB0byBzZXJpYWxpemF0aW9uLlxuICAgIHNlcmlhbGl6YXRpb24gKz0gdmFsdWVcbiAgfVxuXG4gIC8vIDMuIFJldHVybiBzZXJpYWxpemF0aW9uLlxuICByZXR1cm4gc2VyaWFsaXphdGlvblxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtd2hpdGVzcGFjZVxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJcbiAqL1xuZnVuY3Rpb24gaXNIVFRQV2hpdGVTcGFjZSAoY2hhcikge1xuICByZXR1cm4gY2hhciA9PT0gJ1xccicgfHwgY2hhciA9PT0gJ1xcbicgfHwgY2hhciA9PT0gJ1xcdCcgfHwgY2hhciA9PT0gJyAnXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC13aGl0ZXNwYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUhUVFBXaGl0ZXNwYWNlIChzdHIsIGxlYWRpbmcgPSB0cnVlLCB0cmFpbGluZyA9IHRydWUpIHtcbiAgbGV0IGxlYWQgPSAwXG4gIGxldCB0cmFpbCA9IHN0ci5sZW5ndGggLSAxXG5cbiAgaWYgKGxlYWRpbmcpIHtcbiAgICBmb3IgKDsgbGVhZCA8IHN0ci5sZW5ndGggJiYgaXNIVFRQV2hpdGVTcGFjZShzdHJbbGVhZF0pOyBsZWFkKyspO1xuICB9XG5cbiAgaWYgKHRyYWlsaW5nKSB7XG4gICAgZm9yICg7IHRyYWlsID4gMCAmJiBpc0hUVFBXaGl0ZVNwYWNlKHN0clt0cmFpbF0pOyB0cmFpbC0tKTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc2xpY2UobGVhZCwgdHJhaWwgKyAxKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2FzY2lpLXdoaXRlc3BhY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyXG4gKi9cbmZ1bmN0aW9uIGlzQVNDSUlXaGl0ZXNwYWNlIChjaGFyKSB7XG4gIHJldHVybiBjaGFyID09PSAnXFxyJyB8fCBjaGFyID09PSAnXFxuJyB8fCBjaGFyID09PSAnXFx0JyB8fCBjaGFyID09PSAnXFxmJyB8fCBjaGFyID09PSAnICdcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1sZWFkaW5nLWFuZC10cmFpbGluZy1hc2NpaS13aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUFTQ0lJV2hpdGVzcGFjZSAoc3RyLCBsZWFkaW5nID0gdHJ1ZSwgdHJhaWxpbmcgPSB0cnVlKSB7XG4gIGxldCBsZWFkID0gMFxuICBsZXQgdHJhaWwgPSBzdHIubGVuZ3RoIC0gMVxuXG4gIGlmIChsZWFkaW5nKSB7XG4gICAgZm9yICg7IGxlYWQgPCBzdHIubGVuZ3RoICYmIGlzQVNDSUlXaGl0ZXNwYWNlKHN0cltsZWFkXSk7IGxlYWQrKyk7XG4gIH1cblxuICBpZiAodHJhaWxpbmcpIHtcbiAgICBmb3IgKDsgdHJhaWwgPiAwICYmIGlzQVNDSUlXaGl0ZXNwYWNlKHN0clt0cmFpbF0pOyB0cmFpbC0tKTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc2xpY2UobGVhZCwgdHJhaWwgKyAxKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGF0YVVSTFByb2Nlc3NvcixcbiAgVVJMU2VyaWFsaXplcixcbiAgY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50cyxcbiAgY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QsXG4gIHN0cmluZ1BlcmNlbnREZWNvZGUsXG4gIHBhcnNlTUlNRVR5cGUsXG4gIGNvbGxlY3RBbkhUVFBRdW90ZWRTdHJpbmcsXG4gIHNlcmlhbGl6ZUFNaW1lVHlwZVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IEJsb2IsIEZpbGU6IE5hdGl2ZUZpbGUgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IHR5cGVzIH0gPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IHsga1N0YXRlIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBpc0Jsb2JMaWtlIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyB3ZWJpZGwgfSA9IHJlcXVpcmUoJy4vd2ViaWRsJylcbmNvbnN0IHsgcGFyc2VNSU1FVHlwZSwgc2VyaWFsaXplQU1pbWVUeXBlIH0gPSByZXF1aXJlKCcuL2RhdGFVUkwnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXG5cbmNsYXNzIEZpbGUgZXh0ZW5kcyBCbG9iIHtcbiAgY29uc3RydWN0b3IgKGZpbGVCaXRzLCBmaWxlTmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gVGhlIEZpbGUgY29uc3RydWN0b3IgaXMgaW52b2tlZCB3aXRoIHR3byBvciB0aHJlZSBwYXJhbWV0ZXJzLCBkZXBlbmRpbmdcbiAgICAvLyBvbiB3aGV0aGVyIHRoZSBvcHRpb25hbCBkaWN0aW9uYXJ5IHBhcmFtZXRlciBpcyB1c2VkLiBXaGVuIHRoZSBGaWxlKClcbiAgICAvLyBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLCB1c2VyIGFnZW50cyBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOlxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdGaWxlIGNvbnN0cnVjdG9yJyB9KVxuXG4gICAgZmlsZUJpdHMgPSB3ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8QmxvYlBhcnQ+J10oZmlsZUJpdHMpXG4gICAgZmlsZU5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcoZmlsZU5hbWUpXG4gICAgb3B0aW9ucyA9IHdlYmlkbC5jb252ZXJ0ZXJzLkZpbGVQcm9wZXJ0eUJhZyhvcHRpb25zKVxuXG4gICAgLy8gMS4gTGV0IGJ5dGVzIGJlIHRoZSByZXN1bHQgb2YgcHJvY2Vzc2luZyBibG9iIHBhcnRzIGdpdmVuIGZpbGVCaXRzIGFuZFxuICAgIC8vIG9wdGlvbnMuXG4gICAgLy8gTm90ZTogQmxvYiBoYW5kbGVzIHRoaXMgZm9yIHVzXG5cbiAgICAvLyAyLiBMZXQgbiBiZSB0aGUgZmlsZU5hbWUgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgIGNvbnN0IG4gPSBmaWxlTmFtZVxuXG4gICAgLy8gMy4gUHJvY2VzcyBGaWxlUHJvcGVydHlCYWcgZGljdGlvbmFyeSBhcmd1bWVudCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmdcbiAgICAvLyBzdWJzdGVwczpcblxuICAgIC8vICAgIDEuIElmIHRoZSB0eXBlIG1lbWJlciBpcyBwcm92aWRlZCBhbmQgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIGxldCB0XG4gICAgLy8gICAgYmUgc2V0IHRvIHRoZSB0eXBlIGRpY3Rpb25hcnkgbWVtYmVyLiBJZiB0IGNvbnRhaW5zIGFueSBjaGFyYWN0ZXJzXG4gICAgLy8gICAgb3V0c2lkZSB0aGUgcmFuZ2UgVSswMDIwIHRvIFUrMDA3RSwgdGhlbiBzZXQgdCB0byB0aGUgZW1wdHkgc3RyaW5nXG4gICAgLy8gICAgYW5kIHJldHVybiBmcm9tIHRoZXNlIHN1YnN0ZXBzLlxuICAgIC8vICAgIDIuIENvbnZlcnQgZXZlcnkgY2hhcmFjdGVyIGluIHQgdG8gQVNDSUkgbG93ZXJjYXNlLlxuICAgIGxldCB0ID0gb3B0aW9ucy50eXBlXG4gICAgbGV0IGRcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sYWJlbHNcbiAgICBzdWJzdGVwOiB7XG4gICAgICBpZiAodCkge1xuICAgICAgICB0ID0gcGFyc2VNSU1FVHlwZSh0KVxuXG4gICAgICAgIGlmICh0ID09PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICB0ID0gJydcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbGFiZWxzXG4gICAgICAgICAgYnJlYWsgc3Vic3RlcFxuICAgICAgICB9XG5cbiAgICAgICAgdCA9IHNlcmlhbGl6ZUFNaW1lVHlwZSh0KS50b0xvd2VyQ2FzZSgpXG4gICAgICB9XG5cbiAgICAgIC8vICAgIDMuIElmIHRoZSBsYXN0TW9kaWZpZWQgbWVtYmVyIGlzIHByb3ZpZGVkLCBsZXQgZCBiZSBzZXQgdG8gdGhlXG4gICAgICAvLyAgICBsYXN0TW9kaWZpZWQgZGljdGlvbmFyeSBtZW1iZXIuIElmIGl0IGlzIG5vdCBwcm92aWRlZCwgc2V0IGQgdG8gdGhlXG4gICAgICAvLyAgICBjdXJyZW50IGRhdGUgYW5kIHRpbWUgcmVwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2VcbiAgICAgIC8vICAgIHRoZSBVbml4IEVwb2NoICh3aGljaCBpcyB0aGUgZXF1aXZhbGVudCBvZiBEYXRlLm5vdygpIFtFQ01BLTI2Ml0pLlxuICAgICAgZCA9IG9wdGlvbnMubGFzdE1vZGlmaWVkXG4gICAgfVxuXG4gICAgLy8gNC4gUmV0dXJuIGEgbmV3IEZpbGUgb2JqZWN0IEYgc3VjaCB0aGF0OlxuICAgIC8vIEYgcmVmZXJzIHRvIHRoZSBieXRlcyBieXRlIHNlcXVlbmNlLlxuICAgIC8vIEYuc2l6ZSBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiB0b3RhbCBieXRlcyBpbiBieXRlcy5cbiAgICAvLyBGLm5hbWUgaXMgc2V0IHRvIG4uXG4gICAgLy8gRi50eXBlIGlzIHNldCB0byB0LlxuICAgIC8vIEYubGFzdE1vZGlmaWVkIGlzIHNldCB0byBkLlxuXG4gICAgc3VwZXIocHJvY2Vzc0Jsb2JQYXJ0cyhmaWxlQml0cywgb3B0aW9ucyksIHsgdHlwZTogdCB9KVxuICAgIHRoaXNba1N0YXRlXSA9IHtcbiAgICAgIG5hbWU6IG4sXG4gICAgICBsYXN0TW9kaWZpZWQ6IGQsXG4gICAgICB0eXBlOiB0XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5hbWUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGUpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLm5hbWVcbiAgfVxuXG4gIGdldCBsYXN0TW9kaWZpZWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGUpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmxhc3RNb2RpZmllZFxuICB9XG5cbiAgZ2V0IHR5cGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGUpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnR5cGVcbiAgfVxufVxuXG5jbGFzcyBGaWxlTGlrZSB7XG4gIGNvbnN0cnVjdG9yIChibG9iTGlrZSwgZmlsZU5hbWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8vIFRPRE86IGFyZ3VtZW50IGlkbCB0eXBlIGNoZWNrXG5cbiAgICAvLyBUaGUgRmlsZSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkIHdpdGggdHdvIG9yIHRocmVlIHBhcmFtZXRlcnMsIGRlcGVuZGluZ1xuICAgIC8vIG9uIHdoZXRoZXIgdGhlIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVyIGlzIHVzZWQuIFdoZW4gdGhlIEZpbGUoKVxuICAgIC8vIGNvbnN0cnVjdG9yIGlzIGludm9rZWQsIHVzZXIgYWdlbnRzIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6XG5cbiAgICAvLyAxLiBMZXQgYnl0ZXMgYmUgdGhlIHJlc3VsdCBvZiBwcm9jZXNzaW5nIGJsb2IgcGFydHMgZ2l2ZW4gZmlsZUJpdHMgYW5kXG4gICAgLy8gb3B0aW9ucy5cblxuICAgIC8vIDIuIExldCBuIGJlIHRoZSBmaWxlTmFtZSBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgY29uc3QgbiA9IGZpbGVOYW1lXG5cbiAgICAvLyAzLiBQcm9jZXNzIEZpbGVQcm9wZXJ0eUJhZyBkaWN0aW9uYXJ5IGFyZ3VtZW50IGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZ1xuICAgIC8vIHN1YnN0ZXBzOlxuXG4gICAgLy8gICAgMS4gSWYgdGhlIHR5cGUgbWVtYmVyIGlzIHByb3ZpZGVkIGFuZCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgbGV0IHRcbiAgICAvLyAgICBiZSBzZXQgdG8gdGhlIHR5cGUgZGljdGlvbmFyeSBtZW1iZXIuIElmIHQgY29udGFpbnMgYW55IGNoYXJhY3RlcnNcbiAgICAvLyAgICBvdXRzaWRlIHRoZSByYW5nZSBVKzAwMjAgdG8gVSswMDdFLCB0aGVuIHNldCB0IHRvIHRoZSBlbXB0eSBzdHJpbmdcbiAgICAvLyAgICBhbmQgcmV0dXJuIGZyb20gdGhlc2Ugc3Vic3RlcHMuXG4gICAgLy8gICAgVE9ET1xuICAgIGNvbnN0IHQgPSBvcHRpb25zLnR5cGVcblxuICAgIC8vICAgIDIuIENvbnZlcnQgZXZlcnkgY2hhcmFjdGVyIGluIHQgdG8gQVNDSUkgbG93ZXJjYXNlLlxuICAgIC8vICAgIFRPRE9cblxuICAgIC8vICAgIDMuIElmIHRoZSBsYXN0TW9kaWZpZWQgbWVtYmVyIGlzIHByb3ZpZGVkLCBsZXQgZCBiZSBzZXQgdG8gdGhlXG4gICAgLy8gICAgbGFzdE1vZGlmaWVkIGRpY3Rpb25hcnkgbWVtYmVyLiBJZiBpdCBpcyBub3QgcHJvdmlkZWQsIHNldCBkIHRvIHRoZVxuICAgIC8vICAgIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSByZXByZXNlbnRlZCBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZVxuICAgIC8vICAgIHRoZSBVbml4IEVwb2NoICh3aGljaCBpcyB0aGUgZXF1aXZhbGVudCBvZiBEYXRlLm5vdygpIFtFQ01BLTI2Ml0pLlxuICAgIGNvbnN0IGQgPSBvcHRpb25zLmxhc3RNb2RpZmllZCA/PyBEYXRlLm5vdygpXG5cbiAgICAvLyA0LiBSZXR1cm4gYSBuZXcgRmlsZSBvYmplY3QgRiBzdWNoIHRoYXQ6XG4gICAgLy8gRiByZWZlcnMgdG8gdGhlIGJ5dGVzIGJ5dGUgc2VxdWVuY2UuXG4gICAgLy8gRi5zaXplIGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIHRvdGFsIGJ5dGVzIGluIGJ5dGVzLlxuICAgIC8vIEYubmFtZSBpcyBzZXQgdG8gbi5cbiAgICAvLyBGLnR5cGUgaXMgc2V0IHRvIHQuXG4gICAgLy8gRi5sYXN0TW9kaWZpZWQgaXMgc2V0IHRvIGQuXG5cbiAgICB0aGlzW2tTdGF0ZV0gPSB7XG4gICAgICBibG9iTGlrZSxcbiAgICAgIG5hbWU6IG4sXG4gICAgICB0eXBlOiB0LFxuICAgICAgbGFzdE1vZGlmaWVkOiBkXG4gICAgfVxuICB9XG5cbiAgc3RyZWFtICguLi5hcmdzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJsb2JMaWtlLnN0cmVhbSguLi5hcmdzKVxuICB9XG5cbiAgYXJyYXlCdWZmZXIgKC4uLmFyZ3MpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlTGlrZSlcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uYmxvYkxpa2UuYXJyYXlCdWZmZXIoLi4uYXJncylcbiAgfVxuXG4gIHNsaWNlICguLi5hcmdzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJsb2JMaWtlLnNsaWNlKC4uLmFyZ3MpXG4gIH1cblxuICB0ZXh0ICguLi5hcmdzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJsb2JMaWtlLnRleHQoLi4uYXJncylcbiAgfVxuXG4gIGdldCBzaXplICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlTGlrZSlcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uYmxvYkxpa2Uuc2l6ZVxuICB9XG5cbiAgZ2V0IHR5cGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ibG9iTGlrZS50eXBlXG4gIH1cblxuICBnZXQgbmFtZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLm5hbWVcbiAgfVxuXG4gIGdldCBsYXN0TW9kaWZpZWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5sYXN0TW9kaWZpZWRcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSAoKSB7XG4gICAgcmV0dXJuICdGaWxlJ1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZpbGUucHJvdG90eXBlLCB7XG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdGaWxlJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgbmFtZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbGFzdE1vZGlmaWVkOiBrRW51bWVyYWJsZVByb3BlcnR5XG59KVxuXG53ZWJpZGwuY29udmVydGVycy5CbG9iID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihCbG9iKVxuXG53ZWJpZGwuY29udmVydGVycy5CbG9iUGFydCA9IGZ1bmN0aW9uIChWLCBvcHRzKSB7XG4gIGlmICh3ZWJpZGwudXRpbC5UeXBlKFYpID09PSAnT2JqZWN0Jykge1xuICAgIGlmIChpc0Jsb2JMaWtlKFYpKSB7XG4gICAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuQmxvYihWLCB7IHN0cmljdDogZmFsc2UgfSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBBcnJheUJ1ZmZlci5pc1ZpZXcoVikgfHxcbiAgICAgIHR5cGVzLmlzQW55QXJyYXlCdWZmZXIoVilcbiAgICApIHtcbiAgICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5CdWZmZXJTb3VyY2UoViwgb3B0cylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKFYsIG9wdHMpXG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxCbG9iUGFydD4nXSA9IHdlYmlkbC5zZXF1ZW5jZUNvbnZlcnRlcihcbiAgd2ViaWRsLmNvbnZlcnRlcnMuQmxvYlBhcnRcbilcblxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0ZpbGVBUEkvI2Rmbi1GaWxlUHJvcGVydHlCYWdcbndlYmlkbC5jb252ZXJ0ZXJzLkZpbGVQcm9wZXJ0eUJhZyA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGtleTogJ2xhc3RNb2RpZmllZCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1snbG9uZyBsb25nJ10sXG4gICAgZ2V0IGRlZmF1bHRWYWx1ZSAoKSB7XG4gICAgICByZXR1cm4gRGF0ZS5ub3coKVxuICAgIH1cbiAgfSxcbiAge1xuICAgIGtleTogJ3R5cGUnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogJydcbiAgfSxcbiAge1xuICAgIGtleTogJ2VuZGluZ3MnLFxuICAgIGNvbnZlcnRlcjogKHZhbHVlKSA9PiB7XG4gICAgICB2YWx1ZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyh2YWx1ZSlcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKVxuXG4gICAgICBpZiAodmFsdWUgIT09ICduYXRpdmUnKSB7XG4gICAgICAgIHZhbHVlID0gJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogJ3RyYW5zcGFyZW50J1xuICB9XG5dKVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL0ZpbGVBUEkvI3Byb2Nlc3MtYmxvYi1wYXJ0c1xuICogQHBhcmFtIHsoTm9kZUpTLlR5cGVkQXJyYXl8QmxvYnxzdHJpbmcpW119IHBhcnRzXG4gKiBAcGFyYW0ge3sgdHlwZTogc3RyaW5nLCBlbmRpbmdzOiBzdHJpbmcgfX0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBwcm9jZXNzQmxvYlBhcnRzIChwYXJ0cywgb3B0aW9ucykge1xuICAvLyAxLiBMZXQgYnl0ZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgYnl0ZXMuXG4gIC8qKiBAdHlwZSB7Tm9kZUpTLlR5cGVkQXJyYXlbXX0gKi9cbiAgY29uc3QgYnl0ZXMgPSBbXVxuXG4gIC8vIDIuIEZvciBlYWNoIGVsZW1lbnQgaW4gcGFydHM6XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBwYXJ0cykge1xuICAgIC8vIDEuIElmIGVsZW1lbnQgaXMgYSBVU1ZTdHJpbmcsIHJ1biB0aGUgZm9sbG93aW5nIHN1YnN0ZXBzOlxuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIDEuIExldCBzIGJlIGVsZW1lbnQuXG4gICAgICBsZXQgcyA9IGVsZW1lbnRcblxuICAgICAgLy8gMi4gSWYgdGhlIGVuZGluZ3MgbWVtYmVyIG9mIG9wdGlvbnMgaXMgXCJuYXRpdmVcIiwgc2V0IHNcbiAgICAgIC8vICAgIHRvIHRoZSByZXN1bHQgb2YgY29udmVydGluZyBsaW5lIGVuZGluZ3MgdG8gbmF0aXZlXG4gICAgICAvLyAgICBvZiBlbGVtZW50LlxuICAgICAgaWYgKG9wdGlvbnMuZW5kaW5ncyA9PT0gJ25hdGl2ZScpIHtcbiAgICAgICAgcyA9IGNvbnZlcnRMaW5lRW5kaW5nc05hdGl2ZShzKVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBBcHBlbmQgdGhlIHJlc3VsdCBvZiBVVEYtOCBlbmNvZGluZyBzIHRvIGJ5dGVzLlxuICAgICAgYnl0ZXMucHVzaChlbmNvZGVyLmVuY29kZShzKSlcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdHlwZXMuaXNBbnlBcnJheUJ1ZmZlcihlbGVtZW50KSB8fFxuICAgICAgdHlwZXMuaXNUeXBlZEFycmF5KGVsZW1lbnQpXG4gICAgKSB7XG4gICAgICAvLyAyLiBJZiBlbGVtZW50IGlzIGEgQnVmZmVyU291cmNlLCBnZXQgYSBjb3B5IG9mIHRoZVxuICAgICAgLy8gICAgYnl0ZXMgaGVsZCBieSB0aGUgYnVmZmVyIHNvdXJjZSwgYW5kIGFwcGVuZCB0aG9zZVxuICAgICAgLy8gICAgYnl0ZXMgdG8gYnl0ZXMuXG4gICAgICBpZiAoIWVsZW1lbnQuYnVmZmVyKSB7IC8vIEFycmF5QnVmZmVyXG4gICAgICAgIGJ5dGVzLnB1c2gobmV3IFVpbnQ4QXJyYXkoZWxlbWVudCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieXRlcy5wdXNoKFxuICAgICAgICAgIG5ldyBVaW50OEFycmF5KGVsZW1lbnQuYnVmZmVyLCBlbGVtZW50LmJ5dGVPZmZzZXQsIGVsZW1lbnQuYnl0ZUxlbmd0aClcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNCbG9iTGlrZShlbGVtZW50KSkge1xuICAgICAgLy8gMy4gSWYgZWxlbWVudCBpcyBhIEJsb2IsIGFwcGVuZCB0aGUgYnl0ZXMgaXQgcmVwcmVzZW50c1xuICAgICAgLy8gICAgdG8gYnl0ZXMuXG4gICAgICBieXRlcy5wdXNoKGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgLy8gMy4gUmV0dXJuIGJ5dGVzLlxuICByZXR1cm4gYnl0ZXNcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9GaWxlQVBJLyNjb252ZXJ0LWxpbmUtZW5kaW5ncy10by1uYXRpdmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRMaW5lRW5kaW5nc05hdGl2ZSAocykge1xuICAvLyAxLiBMZXQgbmF0aXZlIGxpbmUgZW5kaW5nIGJlIGJlIHRoZSBjb2RlIHBvaW50IFUrMDAwQSBMRi5cbiAgbGV0IG5hdGl2ZUxpbmVFbmRpbmcgPSAnXFxuJ1xuXG4gIC8vIDIuIElmIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtXHUyMDE5cyBjb252ZW50aW9ucyBhcmUgdG9cbiAgLy8gICAgcmVwcmVzZW50IG5ld2xpbmVzIGFzIGEgY2FycmlhZ2UgcmV0dXJuIGFuZCBsaW5lIGZlZWRcbiAgLy8gICAgc2VxdWVuY2UsIHNldCBuYXRpdmUgbGluZSBlbmRpbmcgdG8gdGhlIGNvZGUgcG9pbnRcbiAgLy8gICAgVSswMDBEIENSIGZvbGxvd2VkIGJ5IHRoZSBjb2RlIHBvaW50IFUrMDAwQSBMRi5cbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBuYXRpdmVMaW5lRW5kaW5nID0gJ1xcclxcbidcbiAgfVxuXG4gIHJldHVybiBzLnJlcGxhY2UoL1xccj9cXG4vZywgbmF0aXZlTGluZUVuZGluZylcbn1cblxuLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBtb3ZlZCB0byAuL3V0aWwuanMsIHNvbWUgdG9vbHMgKHN1Y2ggYXNcbi8vIHJvbGx1cCkgd2lsbCB3YXJuIGFib3V0IGNpcmN1bGFyIGRlcGVuZGVuY2llcy4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzE2MjlcbmZ1bmN0aW9uIGlzRmlsZUxpa2UgKG9iamVjdCkge1xuICByZXR1cm4gKFxuICAgIChOYXRpdmVGaWxlICYmIG9iamVjdCBpbnN0YW5jZW9mIE5hdGl2ZUZpbGUpIHx8XG4gICAgb2JqZWN0IGluc3RhbmNlb2YgRmlsZSB8fCAoXG4gICAgICBvYmplY3QgJiZcbiAgICAgICh0eXBlb2Ygb2JqZWN0LnN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgdHlwZW9mIG9iamVjdC5hcnJheUJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAgIG9iamVjdFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnRmlsZSdcbiAgICApXG4gIClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IEZpbGUsIEZpbGVMaWtlLCBpc0ZpbGVMaWtlIH1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBpc0Jsb2JMaWtlLCB0b1VTVlN0cmluZywgbWFrZUl0ZXJhdG9yIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBrU3RhdGUgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IEZpbGU6IFVuZGljaUZpbGUsIEZpbGVMaWtlLCBpc0ZpbGVMaWtlIH0gPSByZXF1aXJlKCcuL2ZpbGUnKVxuY29uc3QgeyB3ZWJpZGwgfSA9IHJlcXVpcmUoJy4vd2ViaWRsJylcbmNvbnN0IHsgQmxvYiwgRmlsZTogTmF0aXZlRmlsZSB9ID0gcmVxdWlyZSgnYnVmZmVyJylcblxuLyoqIEB0eXBlIHtnbG9iYWxUaGlzWydGaWxlJ119ICovXG5jb25zdCBGaWxlID0gTmF0aXZlRmlsZSA/PyBVbmRpY2lGaWxlXG5cbi8vIGh0dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jZm9ybWRhdGFcbmNsYXNzIEZvcm1EYXRhIHtcbiAgY29uc3RydWN0b3IgKGZvcm0pIHtcbiAgICBpZiAoZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmNvbnZlcnNpb25GYWlsZWQoe1xuICAgICAgICBwcmVmaXg6ICdGb3JtRGF0YSBjb25zdHJ1Y3RvcicsXG4gICAgICAgIGFyZ3VtZW50OiAnQXJndW1lbnQgMScsXG4gICAgICAgIHR5cGVzOiBbJ3VuZGVmaW5lZCddXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXNba1N0YXRlXSA9IFtdXG4gIH1cblxuICBhcHBlbmQgKG5hbWUsIHZhbHVlLCBmaWxlbmFtZSA9IHVuZGVmaW5lZCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLmFwcGVuZCcgfSlcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICFpc0Jsb2JMaWtlKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgXCJGYWlsZWQgdG8gZXhlY3V0ZSAnYXBwZW5kJyBvbiAnRm9ybURhdGEnOiBwYXJhbWV0ZXIgMiBpcyBub3Qgb2YgdHlwZSAnQmxvYidcIlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIDEuIExldCB2YWx1ZSBiZSB2YWx1ZSBpZiBnaXZlbjsgb3RoZXJ3aXNlIGJsb2JWYWx1ZS5cblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcobmFtZSlcbiAgICB2YWx1ZSA9IGlzQmxvYkxpa2UodmFsdWUpXG4gICAgICA/IHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IodmFsdWUsIHsgc3RyaWN0OiBmYWxzZSB9KVxuICAgICAgOiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcodmFsdWUpXG4gICAgZmlsZW5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID09PSAzXG4gICAgICA/IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhmaWxlbmFtZSlcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAvLyAyLiBMZXQgZW50cnkgYmUgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhbiBlbnRyeSB3aXRoXG4gICAgLy8gbmFtZSwgdmFsdWUsIGFuZCBmaWxlbmFtZSBpZiBnaXZlbi5cbiAgICBjb25zdCBlbnRyeSA9IG1ha2VFbnRyeShuYW1lLCB2YWx1ZSwgZmlsZW5hbWUpXG5cbiAgICAvLyAzLiBBcHBlbmQgZW50cnkgdG8gdGhpc1x1MjAxOXMgZW50cnkgbGlzdC5cbiAgICB0aGlzW2tTdGF0ZV0ucHVzaChlbnRyeSlcbiAgfVxuXG4gIGRlbGV0ZSAobmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLmRlbGV0ZScgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcobmFtZSlcblxuICAgIC8vIFRoZSBkZWxldGUobmFtZSkgbWV0aG9kIHN0ZXBzIGFyZSB0byByZW1vdmUgYWxsIGVudHJpZXMgd2hvc2UgbmFtZVxuICAgIC8vIGlzIG5hbWUgZnJvbSB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LlxuICAgIHRoaXNba1N0YXRlXSA9IHRoaXNba1N0YXRlXS5maWx0ZXIoZW50cnkgPT4gZW50cnkubmFtZSAhPT0gbmFtZSlcbiAgfVxuXG4gIGdldCAobmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLmdldCcgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcobmFtZSlcblxuICAgIC8vIDEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IHdob3NlIG5hbWUgaXMgbmFtZSBpbiB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LFxuICAgIC8vIHRoZW4gcmV0dXJuIG51bGwuXG4gICAgY29uc3QgaWR4ID0gdGhpc1trU3RhdGVdLmZpbmRJbmRleCgoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09IG5hbWUpXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZW50cnkgd2hvc2UgbmFtZSBpcyBuYW1lIGZyb21cbiAgICAvLyB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV1baWR4XS52YWx1ZVxuICB9XG5cbiAgZ2V0QWxsIChuYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRm9ybURhdGEuZ2V0QWxsJyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhuYW1lKVxuXG4gICAgLy8gMS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgd2hvc2UgbmFtZSBpcyBuYW1lIGluIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3QsXG4gICAgLy8gdGhlbiByZXR1cm4gdGhlIGVtcHR5IGxpc3QuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSB2YWx1ZXMgb2YgYWxsIGVudHJpZXMgd2hvc2UgbmFtZSBpcyBuYW1lLCBpbiBvcmRlcixcbiAgICAvLyBmcm9tIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3QuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09IG5hbWUpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudmFsdWUpXG4gIH1cblxuICBoYXMgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdGb3JtRGF0YS5oYXMnIH0pXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKG5hbWUpXG5cbiAgICAvLyBUaGUgaGFzKG5hbWUpIG1ldGhvZCBzdGVwcyBhcmUgdG8gcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYW4gZW50cnlcbiAgICAvLyB3aG9zZSBuYW1lIGlzIG5hbWUgaW4gdGhpc1x1MjAxOXMgZW50cnkgbGlzdDsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkubmFtZSA9PT0gbmFtZSkgIT09IC0xXG4gIH1cblxuICBzZXQgKG5hbWUsIHZhbHVlLCBmaWxlbmFtZSA9IHVuZGVmaW5lZCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLnNldCcgfSlcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICFpc0Jsb2JMaWtlKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgXCJGYWlsZWQgdG8gZXhlY3V0ZSAnc2V0JyBvbiAnRm9ybURhdGEnOiBwYXJhbWV0ZXIgMiBpcyBub3Qgb2YgdHlwZSAnQmxvYidcIlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFRoZSBzZXQobmFtZSwgdmFsdWUpIGFuZCBzZXQobmFtZSwgYmxvYlZhbHVlLCBmaWxlbmFtZSkgbWV0aG9kIHN0ZXBzXG4gICAgLy8gYXJlOlxuXG4gICAgLy8gMS4gTGV0IHZhbHVlIGJlIHZhbHVlIGlmIGdpdmVuOyBvdGhlcndpc2UgYmxvYlZhbHVlLlxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhuYW1lKVxuICAgIHZhbHVlID0gaXNCbG9iTGlrZSh2YWx1ZSlcbiAgICAgID8gd2ViaWRsLmNvbnZlcnRlcnMuQmxvYih2YWx1ZSwgeyBzdHJpY3Q6IGZhbHNlIH0pXG4gICAgICA6IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyh2YWx1ZSlcbiAgICBmaWxlbmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDNcbiAgICAgID8gdG9VU1ZTdHJpbmcoZmlsZW5hbWUpXG4gICAgICA6IHVuZGVmaW5lZFxuXG4gICAgLy8gMi4gTGV0IGVudHJ5IGJlIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYW4gZW50cnkgd2l0aCBuYW1lLCB2YWx1ZSwgYW5kXG4gICAgLy8gZmlsZW5hbWUgaWYgZ2l2ZW4uXG4gICAgY29uc3QgZW50cnkgPSBtYWtlRW50cnkobmFtZSwgdmFsdWUsIGZpbGVuYW1lKVxuXG4gICAgLy8gMy4gSWYgdGhlcmUgYXJlIGVudHJpZXMgaW4gdGhpc1x1MjAxOXMgZW50cnkgbGlzdCB3aG9zZSBuYW1lIGlzIG5hbWUsIHRoZW5cbiAgICAvLyByZXBsYWNlIHRoZSBmaXJzdCBzdWNoIGVudHJ5IHdpdGggZW50cnkgYW5kIHJlbW92ZSB0aGUgb3RoZXJzLlxuICAgIGNvbnN0IGlkeCA9IHRoaXNba1N0YXRlXS5maW5kSW5kZXgoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBuYW1lKVxuICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICB0aGlzW2tTdGF0ZV0gPSBbXG4gICAgICAgIC4uLnRoaXNba1N0YXRlXS5zbGljZSgwLCBpZHgpLFxuICAgICAgICBlbnRyeSxcbiAgICAgICAgLi4udGhpc1trU3RhdGVdLnNsaWNlKGlkeCArIDEpLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm5hbWUgIT09IG5hbWUpXG4gICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDQuIE90aGVyd2lzZSwgYXBwZW5kIGVudHJ5IHRvIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3QuXG4gICAgICB0aGlzW2tTdGF0ZV0ucHVzaChlbnRyeSlcbiAgICB9XG4gIH1cblxuICBlbnRyaWVzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHJldHVybiBtYWtlSXRlcmF0b3IoXG4gICAgICAoKSA9PiB0aGlzW2tTdGF0ZV0ubWFwKHBhaXIgPT4gW3BhaXIubmFtZSwgcGFpci52YWx1ZV0pLFxuICAgICAgJ0Zvcm1EYXRhJyxcbiAgICAgICdrZXkrdmFsdWUnXG4gICAgKVxuICB9XG5cbiAga2V5cyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKFxuICAgICAgKCkgPT4gdGhpc1trU3RhdGVdLm1hcChwYWlyID0+IFtwYWlyLm5hbWUsIHBhaXIudmFsdWVdKSxcbiAgICAgICdGb3JtRGF0YScsXG4gICAgICAna2V5J1xuICAgIClcbiAgfVxuXG4gIHZhbHVlcyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKFxuICAgICAgKCkgPT4gdGhpc1trU3RhdGVdLm1hcChwYWlyID0+IFtwYWlyLm5hbWUsIHBhaXIudmFsdWVdKSxcbiAgICAgICdGb3JtRGF0YScsXG4gICAgICAndmFsdWUnXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7KHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nLCBzZWxmOiBGb3JtRGF0YSkgPT4gdm9pZH0gY2FsbGJhY2tGblxuICAgKiBAcGFyYW0ge3Vua25vd259IHRoaXNBcmdcbiAgICovXG4gIGZvckVhY2ggKGNhbGxiYWNrRm4sIHRoaXNBcmcgPSBnbG9iYWxUaGlzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRm9ybURhdGEuZm9yRWFjaCcgfSlcblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2tGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgXCJGYWlsZWQgdG8gZXhlY3V0ZSAnZm9yRWFjaCcgb24gJ0Zvcm1EYXRhJzogcGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgJ0Z1bmN0aW9uJy5cIlxuICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMpIHtcbiAgICAgIGNhbGxiYWNrRm4uYXBwbHkodGhpc0FyZywgW3ZhbHVlLCBrZXksIHRoaXNdKVxuICAgIH1cbiAgfVxufVxuXG5Gb3JtRGF0YS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEZvcm1EYXRhLnByb3RvdHlwZS5lbnRyaWVzXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZvcm1EYXRhLnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnRm9ybURhdGEnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9XG59KVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybS1jb250cm9sLWluZnJhc3RydWN0dXJlLmh0bWwjY3JlYXRlLWFuLWVudHJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8QmxvYn0gdmFsdWVcbiAqIEBwYXJhbSB7P3N0cmluZ30gZmlsZW5hbWVcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIG1ha2VFbnRyeSAobmFtZSwgdmFsdWUsIGZpbGVuYW1lKSB7XG4gIC8vIDEuIFNldCBuYW1lIHRvIHRoZSByZXN1bHQgb2YgY29udmVydGluZyBuYW1lIGludG8gYSBzY2FsYXIgdmFsdWUgc3RyaW5nLlxuICAvLyBcIlRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIHNjYWxhciB2YWx1ZSBzdHJpbmcsIHJlcGxhY2UgYW55IHN1cnJvZ2F0ZXNcbiAgLy8gIHdpdGggVStGRkZELlwiXG4gIC8vIHNlZTogaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxOC54L2RvY3MvYXBpL2J1ZmZlci5odG1sI2J1ZnRvc3RyaW5nZW5jb2Rpbmctc3RhcnQtZW5kXG4gIG5hbWUgPSBCdWZmZXIuZnJvbShuYW1lKS50b1N0cmluZygndXRmOCcpXG5cbiAgLy8gMi4gSWYgdmFsdWUgaXMgYSBzdHJpbmcsIHRoZW4gc2V0IHZhbHVlIHRvIHRoZSByZXN1bHQgb2YgY29udmVydGluZ1xuICAvLyAgICB2YWx1ZSBpbnRvIGEgc2NhbGFyIHZhbHVlIHN0cmluZy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IEJ1ZmZlci5mcm9tKHZhbHVlKS50b1N0cmluZygndXRmOCcpXG4gIH0gZWxzZSB7XG4gICAgLy8gMy4gT3RoZXJ3aXNlOlxuXG4gICAgLy8gMS4gSWYgdmFsdWUgaXMgbm90IGEgRmlsZSBvYmplY3QsIHRoZW4gc2V0IHZhbHVlIHRvIGEgbmV3IEZpbGUgb2JqZWN0LFxuICAgIC8vICAgIHJlcHJlc2VudGluZyB0aGUgc2FtZSBieXRlcywgd2hvc2UgbmFtZSBhdHRyaWJ1dGUgdmFsdWUgaXMgXCJibG9iXCJcbiAgICBpZiAoIWlzRmlsZUxpa2UodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgQmxvYlxuICAgICAgICA/IG5ldyBGaWxlKFt2YWx1ZV0sICdibG9iJywgeyB0eXBlOiB2YWx1ZS50eXBlIH0pXG4gICAgICAgIDogbmV3IEZpbGVMaWtlKHZhbHVlLCAnYmxvYicsIHsgdHlwZTogdmFsdWUudHlwZSB9KVxuICAgIH1cblxuICAgIC8vIDIuIElmIGZpbGVuYW1lIGlzIGdpdmVuLCB0aGVuIHNldCB2YWx1ZSB0byBhIG5ldyBGaWxlIG9iamVjdCxcbiAgICAvLyAgICByZXByZXNlbnRpbmcgdGhlIHNhbWUgYnl0ZXMsIHdob3NlIG5hbWUgYXR0cmlidXRlIGlzIGZpbGVuYW1lLlxuICAgIGlmIChmaWxlbmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvKiogQHR5cGUge0ZpbGVQcm9wZXJ0eUJhZ30gKi9cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIHR5cGU6IHZhbHVlLnR5cGUsXG4gICAgICAgIGxhc3RNb2RpZmllZDogdmFsdWUubGFzdE1vZGlmaWVkXG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gKE5hdGl2ZUZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBOYXRpdmVGaWxlKSB8fCB2YWx1ZSBpbnN0YW5jZW9mIFVuZGljaUZpbGVcbiAgICAgICAgPyBuZXcgRmlsZShbdmFsdWVdLCBmaWxlbmFtZSwgb3B0aW9ucylcbiAgICAgICAgOiBuZXcgRmlsZUxpa2UodmFsdWUsIGZpbGVuYW1lLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIC8vIDQuIFJldHVybiBhbiBlbnRyeSB3aG9zZSBuYW1lIGlzIG5hbWUgYW5kIHdob3NlIHZhbHVlIGlzIHZhbHVlLlxuICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBGb3JtRGF0YSB9XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEJ1c2JveSA9IHJlcXVpcmUoJ0BmYXN0aWZ5L2J1c2JveScpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHtcbiAgUmVhZGFibGVTdHJlYW1Gcm9tLFxuICBpc0Jsb2JMaWtlLFxuICBpc1JlYWRhYmxlU3RyZWFtTGlrZSxcbiAgcmVhZGFibGVTdHJlYW1DbG9zZSxcbiAgY3JlYXRlRGVmZXJyZWRQcm9taXNlLFxuICBmdWxseVJlYWRCb2R5XG59ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgRm9ybURhdGEgfSA9IHJlcXVpcmUoJy4vZm9ybWRhdGEnKVxuY29uc3QgeyBrU3RhdGUgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi93ZWJpZGwnKVxuY29uc3QgeyBET01FeGNlcHRpb24sIHN0cnVjdHVyZWRDbG9uZSB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBCbG9iLCBGaWxlOiBOYXRpdmVGaWxlIH0gPSByZXF1aXJlKCdidWZmZXInKVxuY29uc3QgeyBrQm9keVVzZWQgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBpc0Vycm9yZWQgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGlzVWludDhBcnJheSwgaXNBcnJheUJ1ZmZlciB9ID0gcmVxdWlyZSgndXRpbC90eXBlcycpXG5jb25zdCB7IEZpbGU6IFVuZGljaUZpbGUgfSA9IHJlcXVpcmUoJy4vZmlsZScpXG5jb25zdCB7IHBhcnNlTUlNRVR5cGUsIHNlcmlhbGl6ZUFNaW1lVHlwZSB9ID0gcmVxdWlyZSgnLi9kYXRhVVJMJylcblxubGV0IHJhbmRvbVxudHJ5IHtcbiAgY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnbm9kZTpjcnlwdG8nKVxuICByYW5kb20gPSAobWF4KSA9PiBjcnlwdG8ucmFuZG9tSW50KDAsIG1heClcbn0gY2F0Y2gge1xuICByYW5kb20gPSAobWF4KSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKG1heCkpXG59XG5cbmxldCBSZWFkYWJsZVN0cmVhbSA9IGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW1cblxuLyoqIEB0eXBlIHtnbG9iYWxUaGlzWydGaWxlJ119ICovXG5jb25zdCBGaWxlID0gTmF0aXZlRmlsZSA/PyBVbmRpY2lGaWxlXG5jb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXG5jb25zdCB0ZXh0RGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHlpbml0LWV4dHJhY3RcbmZ1bmN0aW9uIGV4dHJhY3RCb2R5IChvYmplY3QsIGtlZXBhbGl2ZSA9IGZhbHNlKSB7XG4gIGlmICghUmVhZGFibGVTdHJlYW0pIHtcbiAgICBSZWFkYWJsZVN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbVxuICB9XG5cbiAgLy8gMS4gTGV0IHN0cmVhbSBiZSBudWxsLlxuICBsZXQgc3RyZWFtID0gbnVsbFxuXG4gIC8vIDIuIElmIG9iamVjdCBpcyBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCwgdGhlbiBzZXQgc3RyZWFtIHRvIG9iamVjdC5cbiAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtKSB7XG4gICAgc3RyZWFtID0gb2JqZWN0XG4gIH0gZWxzZSBpZiAoaXNCbG9iTGlrZShvYmplY3QpKSB7XG4gICAgLy8gMy4gT3RoZXJ3aXNlLCBpZiBvYmplY3QgaXMgYSBCbG9iIG9iamVjdCwgc2V0IHN0cmVhbSB0byB0aGVcbiAgICAvLyAgICByZXN1bHQgb2YgcnVubmluZyBvYmplY3RcdTIwMTlzIGdldCBzdHJlYW0uXG4gICAgc3RyZWFtID0gb2JqZWN0LnN0cmVhbSgpXG4gIH0gZWxzZSB7XG4gICAgLy8gNC4gT3RoZXJ3aXNlLCBzZXQgc3RyZWFtIHRvIGEgbmV3IFJlYWRhYmxlU3RyZWFtIG9iamVjdCwgYW5kIHNldFxuICAgIC8vICAgIHVwIHN0cmVhbS5cbiAgICBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgYXN5bmMgcHVsbCAoY29udHJvbGxlcikge1xuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoXG4gICAgICAgICAgdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycgPyB0ZXh0RW5jb2Rlci5lbmNvZGUoc291cmNlKSA6IHNvdXJjZVxuICAgICAgICApXG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHJlYWRhYmxlU3RyZWFtQ2xvc2UoY29udHJvbGxlcikpXG4gICAgICB9LFxuICAgICAgc3RhcnQgKCkge30sXG4gICAgICB0eXBlOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgLy8gNS4gQXNzZXJ0OiBzdHJlYW0gaXMgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QuXG4gIGFzc2VydChpc1JlYWRhYmxlU3RyZWFtTGlrZShzdHJlYW0pKVxuXG4gIC8vIDYuIExldCBhY3Rpb24gYmUgbnVsbC5cbiAgbGV0IGFjdGlvbiA9IG51bGxcblxuICAvLyA3LiBMZXQgc291cmNlIGJlIG51bGwuXG4gIGxldCBzb3VyY2UgPSBudWxsXG5cbiAgLy8gOC4gTGV0IGxlbmd0aCBiZSBudWxsLlxuICBsZXQgbGVuZ3RoID0gbnVsbFxuXG4gIC8vIDkuIExldCB0eXBlIGJlIG51bGwuXG4gIGxldCB0eXBlID0gbnVsbFxuXG4gIC8vIDEwLiBTd2l0Y2ggb24gb2JqZWN0OlxuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBTZXQgc291cmNlIHRvIHRoZSBVVEYtOCBlbmNvZGluZyBvZiBvYmplY3QuXG4gICAgLy8gTm90ZTogc2V0dGluZyBzb3VyY2UgdG8gYSBVaW50OEFycmF5IGhlcmUgYnJlYWtzIHNvbWUgbW9ja2luZyBhc3N1bXB0aW9ucy5cbiAgICBzb3VyY2UgPSBvYmplY3RcblxuICAgIC8vIFNldCB0eXBlIHRvIGB0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLThgLlxuICAgIHR5cGUgPSAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04J1xuICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgIC8vIFVSTFNlYXJjaFBhcmFtc1xuXG4gICAgLy8gc3BlYyBzYXlzIHRvIHJ1biBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgb24gYm9keS5saXN0XG4gICAgLy8gdGhpcyBpcyBpbXBsZW1lbnRlZCBpbiBOb2RlLmpzIGFzIGFwYXJ0IG9mIGFuIFVSTFNlYXJjaFBhcmFtcyBpbnN0YW5jZSB0b1N0cmluZyBtZXRob2RcbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2U0NmM2ODBiZjJiMjExYmJkNTJjZjk1OWNhMTdlZTk4YzdmNjU3ZjUvbGliL2ludGVybmFsL3VybC5qcyNMNDkwXG4gICAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2U0NmM2ODBiZjJiMjExYmJkNTJjZjk1OWNhMTdlZTk4YzdmNjU3ZjUvbGliL2ludGVybmFsL3VybC5qcyNMMTEwMFxuXG4gICAgLy8gU2V0IHNvdXJjZSB0byB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBzZXJpYWxpemVyIHdpdGggb2JqZWN0XHUyMDE5cyBsaXN0LlxuICAgIHNvdXJjZSA9IG9iamVjdC50b1N0cmluZygpXG5cbiAgICAvLyBTZXQgdHlwZSB0byBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLThgLlxuICAgIHR5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnXG4gIH0gZWxzZSBpZiAoaXNBcnJheUJ1ZmZlcihvYmplY3QpKSB7XG4gICAgLy8gQnVmZmVyU291cmNlL0FycmF5QnVmZmVyXG5cbiAgICAvLyBTZXQgc291cmNlIHRvIGEgY29weSBvZiB0aGUgYnl0ZXMgaGVsZCBieSBvYmplY3QuXG4gICAgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkob2JqZWN0LnNsaWNlKCkpXG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KG9iamVjdCkpIHtcbiAgICAvLyBCdWZmZXJTb3VyY2UvQXJyYXlCdWZmZXJWaWV3XG5cbiAgICAvLyBTZXQgc291cmNlIHRvIGEgY29weSBvZiB0aGUgYnl0ZXMgaGVsZCBieSBvYmplY3QuXG4gICAgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkob2JqZWN0LmJ1ZmZlci5zbGljZShvYmplY3QuYnl0ZU9mZnNldCwgb2JqZWN0LmJ5dGVPZmZzZXQgKyBvYmplY3QuYnl0ZUxlbmd0aCkpXG4gIH0gZWxzZSBpZiAodXRpbC5pc0Zvcm1EYXRhTGlrZShvYmplY3QpKSB7XG4gICAgY29uc3QgYm91bmRhcnkgPSBgLS0tLWZvcm1kYXRhLXVuZGljaS0wJHtgJHtyYW5kb20oMWUxMSl9YC5wYWRTdGFydCgxMSwgJzAnKX1gXG4gICAgY29uc3QgcHJlZml4ID0gYC0tJHtib3VuZGFyeX1cXHJcXG5Db250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGFgXG5cbiAgICAvKiEgZm9ybWRhdGEtcG9seWZpbGwuIE1JVCBMaWNlbnNlLiBKaW1teSBXXHUwMEU0cnRpbmcgPGh0dHBzOi8vamltbXkud2FydGluZy5zZS9vcGVuc291cmNlPiAqL1xuICAgIGNvbnN0IGVzY2FwZSA9IChzdHIpID0+XG4gICAgICBzdHIucmVwbGFjZSgvXFxuL2csICclMEEnKS5yZXBsYWNlKC9cXHIvZywgJyUwRCcpLnJlcGxhY2UoL1wiL2csICclMjInKVxuICAgIGNvbnN0IG5vcm1hbGl6ZUxpbmVmZWVkcyA9ICh2YWx1ZSkgPT4gdmFsdWUucmVwbGFjZSgvXFxyP1xcbnxcXHIvZywgJ1xcclxcbicpXG5cbiAgICAvLyBTZXQgYWN0aW9uIHRvIHRoaXMgc3RlcDogcnVuIHRoZSBtdWx0aXBhcnQvZm9ybS1kYXRhXG4gICAgLy8gZW5jb2RpbmcgYWxnb3JpdGhtLCB3aXRoIG9iamVjdFx1MjAxOXMgZW50cnkgbGlzdCBhbmQgVVRGLTguXG4gICAgLy8gLSBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYm9keSBpcyBpbW11dGFibGUgYW5kIGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXJ3b3Jkc1xuICAgIC8vIC0gVGhhdCB0aGUgY29udGVudC1sZW5ndGggaXMgY2FsY3VsYXRlZCBpbiBhZHZhbmNlLlxuICAgIC8vIC0gQW5kIHRoYXQgYWxsIHBhcnRzIGFyZSBwcmUtZW5jb2RlZCBhbmQgcmVhZHkgdG8gYmUgc2VudC5cblxuICAgIGNvbnN0IGJsb2JQYXJ0cyA9IFtdXG4gICAgY29uc3Qgcm4gPSBuZXcgVWludDhBcnJheShbMTMsIDEwXSkgLy8gJ1xcclxcbidcbiAgICBsZW5ndGggPSAwXG4gICAgbGV0IGhhc1Vua25vd25TaXplVmFsdWUgPSBmYWxzZVxuXG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIG9iamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSB0ZXh0RW5jb2Rlci5lbmNvZGUocHJlZml4ICtcbiAgICAgICAgICBgOyBuYW1lPVwiJHtlc2NhcGUobm9ybWFsaXplTGluZWZlZWRzKG5hbWUpKX1cImAgK1xuICAgICAgICAgIGBcXHJcXG5cXHJcXG4ke25vcm1hbGl6ZUxpbmVmZWVkcyh2YWx1ZSl9XFxyXFxuYClcbiAgICAgICAgYmxvYlBhcnRzLnB1c2goY2h1bmspXG4gICAgICAgIGxlbmd0aCArPSBjaHVuay5ieXRlTGVuZ3RoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjaHVuayA9IHRleHRFbmNvZGVyLmVuY29kZShgJHtwcmVmaXh9OyBuYW1lPVwiJHtlc2NhcGUobm9ybWFsaXplTGluZWZlZWRzKG5hbWUpKX1cImAgK1xuICAgICAgICAgICh2YWx1ZS5uYW1lID8gYDsgZmlsZW5hbWU9XCIke2VzY2FwZSh2YWx1ZS5uYW1lKX1cImAgOiAnJykgKyAnXFxyXFxuJyArXG4gICAgICAgICAgYENvbnRlbnQtVHlwZTogJHtcbiAgICAgICAgICAgIHZhbHVlLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICAgICAgICB9XFxyXFxuXFxyXFxuYClcbiAgICAgICAgYmxvYlBhcnRzLnB1c2goY2h1bmssIHZhbHVlLCBybilcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zaXplID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGxlbmd0aCArPSBjaHVuay5ieXRlTGVuZ3RoICsgdmFsdWUuc2l6ZSArIHJuLmJ5dGVMZW5ndGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoYXNVbmtub3duU2l6ZVZhbHVlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2h1bmsgPSB0ZXh0RW5jb2Rlci5lbmNvZGUoYC0tJHtib3VuZGFyeX0tLWApXG4gICAgYmxvYlBhcnRzLnB1c2goY2h1bmspXG4gICAgbGVuZ3RoICs9IGNodW5rLmJ5dGVMZW5ndGhcbiAgICBpZiAoaGFzVW5rbm93blNpemVWYWx1ZSkge1xuICAgICAgbGVuZ3RoID0gbnVsbFxuICAgIH1cblxuICAgIC8vIFNldCBzb3VyY2UgdG8gb2JqZWN0LlxuICAgIHNvdXJjZSA9IG9iamVjdFxuXG4gICAgYWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gKiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgYmxvYlBhcnRzKSB7XG4gICAgICAgIGlmIChwYXJ0LnN0cmVhbSkge1xuICAgICAgICAgIHlpZWxkICogcGFydC5zdHJlYW0oKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHlpZWxkIHBhcnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0eXBlIHRvIGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT1gLFxuICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBtdWx0aXBhcnQvZm9ybS1kYXRhIGJvdW5kYXJ5IHN0cmluZyBnZW5lcmF0ZWRcbiAgICAvLyBieSB0aGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBlbmNvZGluZyBhbGdvcml0aG0uXG4gICAgdHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0nICsgYm91bmRhcnlcbiAgfSBlbHNlIGlmIChpc0Jsb2JMaWtlKG9iamVjdCkpIHtcbiAgICAvLyBCbG9iXG5cbiAgICAvLyBTZXQgc291cmNlIHRvIG9iamVjdC5cbiAgICBzb3VyY2UgPSBvYmplY3RcblxuICAgIC8vIFNldCBsZW5ndGggdG8gb2JqZWN0XHUyMDE5cyBzaXplLlxuICAgIGxlbmd0aCA9IG9iamVjdC5zaXplXG5cbiAgICAvLyBJZiBvYmplY3RcdTIwMTlzIHR5cGUgYXR0cmlidXRlIGlzIG5vdCB0aGUgZW1wdHkgYnl0ZSBzZXF1ZW5jZSwgc2V0XG4gICAgLy8gdHlwZSB0byBpdHMgdmFsdWUuXG4gICAgaWYgKG9iamVjdC50eXBlKSB7XG4gICAgICB0eXBlID0gb2JqZWN0LnR5cGVcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iamVjdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBJZiBrZWVwYWxpdmUgaXMgdHJ1ZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoa2VlcGFsaXZlKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdrZWVwYWxpdmUnKVxuICAgIH1cblxuICAgIC8vIElmIG9iamVjdCBpcyBkaXN0dXJiZWQgb3IgbG9ja2VkLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh1dGlsLmlzRGlzdHVyYmVkKG9iamVjdCkgfHwgb2JqZWN0LmxvY2tlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1Jlc3BvbnNlIGJvZHkgb2JqZWN0IHNob3VsZCBub3QgYmUgZGlzdHVyYmVkIG9yIGxvY2tlZCdcbiAgICAgIClcbiAgICB9XG5cbiAgICBzdHJlYW0gPVxuICAgICAgb2JqZWN0IGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0gPyBvYmplY3QgOiBSZWFkYWJsZVN0cmVhbUZyb20ob2JqZWN0KVxuICB9XG5cbiAgLy8gMTEuIElmIHNvdXJjZSBpcyBhIGJ5dGUgc2VxdWVuY2UsIHRoZW4gc2V0IGFjdGlvbiB0byBhXG4gIC8vIHN0ZXAgdGhhdCByZXR1cm5zIHNvdXJjZSBhbmQgbGVuZ3RoIHRvIHNvdXJjZVx1MjAxOXMgbGVuZ3RoLlxuICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycgfHwgdXRpbC5pc0J1ZmZlcihzb3VyY2UpKSB7XG4gICAgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgoc291cmNlKVxuICB9XG5cbiAgLy8gMTIuIElmIGFjdGlvbiBpcyBub24tbnVsbCwgdGhlbiBydW4gdGhlc2Ugc3RlcHMgaW4gaW4gcGFyYWxsZWw6XG4gIGlmIChhY3Rpb24gIT0gbnVsbCkge1xuICAgIC8vIFJ1biBhY3Rpb24uXG4gICAgbGV0IGl0ZXJhdG9yXG4gICAgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgIGFzeW5jIHN0YXJ0ICgpIHtcbiAgICAgICAgaXRlcmF0b3IgPSBhY3Rpb24ob2JqZWN0KVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHB1bGwgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgLy8gV2hlbiBydW5uaW5nIGFjdGlvbiBpcyBkb25lLCBjbG9zZSBzdHJlYW0uXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBXaGVuZXZlciBvbmUgb3IgbW9yZSBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBzdHJlYW0gaXMgbm90IGVycm9yZWQsXG4gICAgICAgICAgLy8gZW5xdWV1ZSBhIFVpbnQ4QXJyYXkgd3JhcHBpbmcgYW4gQXJyYXlCdWZmZXIgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlXG4gICAgICAgICAgLy8gYnl0ZXMgaW50byBzdHJlYW0uXG4gICAgICAgICAgaWYgKCFpc0Vycm9yZWQoc3RyZWFtKSkge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHZhbHVlKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZGVzaXJlZFNpemUgPiAwXG4gICAgICB9LFxuICAgICAgYXN5bmMgY2FuY2VsIChyZWFzb24pIHtcbiAgICAgICAgYXdhaXQgaXRlcmF0b3IucmV0dXJuKClcbiAgICAgIH0sXG4gICAgICB0eXBlOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgLy8gMTMuIExldCBib2R5IGJlIGEgYm9keSB3aG9zZSBzdHJlYW0gaXMgc3RyZWFtLCBzb3VyY2UgaXMgc291cmNlLFxuICAvLyBhbmQgbGVuZ3RoIGlzIGxlbmd0aC5cbiAgY29uc3QgYm9keSA9IHsgc3RyZWFtLCBzb3VyY2UsIGxlbmd0aCB9XG5cbiAgLy8gMTQuIFJldHVybiAoYm9keSwgdHlwZSkuXG4gIHJldHVybiBbYm9keSwgdHlwZV1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHlpbml0LXNhZmVseS1leHRyYWN0XG5mdW5jdGlvbiBzYWZlbHlFeHRyYWN0Qm9keSAob2JqZWN0LCBrZWVwYWxpdmUgPSBmYWxzZSkge1xuICBpZiAoIVJlYWRhYmxlU3RyZWFtKSB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICBSZWFkYWJsZVN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbVxuICB9XG5cbiAgLy8gVG8gc2FmZWx5IGV4dHJhY3QgYSBib2R5IGFuZCBhIGBDb250ZW50LVR5cGVgIHZhbHVlIGZyb21cbiAgLy8gYSBieXRlIHNlcXVlbmNlIG9yIEJvZHlJbml0IG9iamVjdCBvYmplY3QsIHJ1biB0aGVzZSBzdGVwczpcblxuICAvLyAxLiBJZiBvYmplY3QgaXMgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QsIHRoZW46XG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgIC8vIEFzc2VydDogb2JqZWN0IGlzIG5laXRoZXIgZGlzdHVyYmVkIG5vciBsb2NrZWQuXG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICBhc3NlcnQoIXV0aWwuaXNEaXN0dXJiZWQob2JqZWN0KSwgJ1RoZSBib2R5IGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQuJylcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgIGFzc2VydCghb2JqZWN0LmxvY2tlZCwgJ1RoZSBzdHJlYW0gaXMgbG9ja2VkLicpXG4gIH1cblxuICAvLyAyLiBSZXR1cm4gdGhlIHJlc3VsdHMgb2YgZXh0cmFjdGluZyBvYmplY3QuXG4gIHJldHVybiBleHRyYWN0Qm9keShvYmplY3QsIGtlZXBhbGl2ZSlcbn1cblxuZnVuY3Rpb24gY2xvbmVCb2R5IChib2R5KSB7XG4gIC8vIFRvIGNsb25lIGEgYm9keSBib2R5LCBydW4gdGhlc2Ugc3RlcHM6XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1jbG9uZVxuXG4gIC8vIDEuIExldCBcdTAwQUIgb3V0MSwgb3V0MiBcdTAwQkIgYmUgdGhlIHJlc3VsdCBvZiB0ZWVpbmcgYm9keVx1MjAxOXMgc3RyZWFtLlxuICBjb25zdCBbb3V0MSwgb3V0Ml0gPSBib2R5LnN0cmVhbS50ZWUoKVxuICBjb25zdCBvdXQyQ2xvbmUgPSBzdHJ1Y3R1cmVkQ2xvbmUob3V0MiwgeyB0cmFuc2ZlcjogW291dDJdIH0pXG4gIC8vIFRoaXMsIGZvciB3aGF0ZXZlciByZWFzb25zLCB1bnJlZnMgb3V0MkNsb25lIHdoaWNoIGFsbG93c1xuICAvLyB0aGUgcHJvY2VzcyB0byBleGl0IGJ5IGl0c2VsZi5cbiAgY29uc3QgWywgZmluYWxDbG9uZV0gPSBvdXQyQ2xvbmUudGVlKClcblxuICAvLyAyLiBTZXQgYm9keVx1MjAxOXMgc3RyZWFtIHRvIG91dDEuXG4gIGJvZHkuc3RyZWFtID0gb3V0MVxuXG4gIC8vIDMuIFJldHVybiBhIGJvZHkgd2hvc2Ugc3RyZWFtIGlzIG91dDIgYW5kIG90aGVyIG1lbWJlcnMgYXJlIGNvcGllZCBmcm9tIGJvZHkuXG4gIHJldHVybiB7XG4gICAgc3RyZWFtOiBmaW5hbENsb25lLFxuICAgIGxlbmd0aDogYm9keS5sZW5ndGgsXG4gICAgc291cmNlOiBib2R5LnNvdXJjZVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uICogY29uc3VtZUJvZHkgKGJvZHkpIHtcbiAgaWYgKGJvZHkpIHtcbiAgICBpZiAoaXNVaW50OEFycmF5KGJvZHkpKSB7XG4gICAgICB5aWVsZCBib2R5XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGJvZHkuc3RyZWFtXG5cbiAgICAgIGlmICh1dGlsLmlzRGlzdHVyYmVkKHN0cmVhbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGJvZHkgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4nKVxuICAgICAgfVxuXG4gICAgICBpZiAoc3RyZWFtLmxvY2tlZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgc3RyZWFtIGlzIGxvY2tlZC4nKVxuICAgICAgfVxuXG4gICAgICAvLyBDb21wYXQuXG4gICAgICBzdHJlYW1ba0JvZHlVc2VkXSA9IHRydWVcblxuICAgICAgeWllbGQgKiBzdHJlYW1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdGhyb3dJZkFib3J0ZWQgKHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYm9keU1peGluTWV0aG9kcyAoaW5zdGFuY2UpIHtcbiAgY29uc3QgbWV0aG9kcyA9IHtcbiAgICBibG9iICgpIHtcbiAgICAgIC8vIFRoZSBibG9iKCkgbWV0aG9kIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhlIHJlc3VsdCBvZlxuICAgICAgLy8gcnVubmluZyBjb25zdW1lIGJvZHkgd2l0aCB0aGlzIGFuZCB0aGUgZm9sbG93aW5nIHN0ZXBcbiAgICAgIC8vIGdpdmVuIGEgYnl0ZSBzZXF1ZW5jZSBieXRlczogcmV0dXJuIGEgQmxvYiB3aG9zZVxuICAgICAgLy8gY29udGVudHMgYXJlIGJ5dGVzIGFuZCB3aG9zZSB0eXBlIGF0dHJpYnV0ZSBpcyB0aGlzXHUyMDE5c1xuICAgICAgLy8gTUlNRSB0eXBlLlxuICAgICAgcmV0dXJuIHNwZWNDb25zdW1lQm9keSh0aGlzLCAoYnl0ZXMpID0+IHtcbiAgICAgICAgbGV0IG1pbWVUeXBlID0gYm9keU1pbWVUeXBlKHRoaXMpXG5cbiAgICAgICAgaWYgKG1pbWVUeXBlID09PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICBtaW1lVHlwZSA9ICcnXG4gICAgICAgIH0gZWxzZSBpZiAobWltZVR5cGUpIHtcbiAgICAgICAgICBtaW1lVHlwZSA9IHNlcmlhbGl6ZUFNaW1lVHlwZShtaW1lVHlwZSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiBhIEJsb2Igd2hvc2UgY29udGVudHMgYXJlIGJ5dGVzIGFuZCB0eXBlIGF0dHJpYnV0ZVxuICAgICAgICAvLyBpcyBtaW1lVHlwZS5cbiAgICAgICAgcmV0dXJuIG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogbWltZVR5cGUgfSlcbiAgICAgIH0sIGluc3RhbmNlKVxuICAgIH0sXG5cbiAgICBhcnJheUJ1ZmZlciAoKSB7XG4gICAgICAvLyBUaGUgYXJyYXlCdWZmZXIoKSBtZXRob2Qgc3RlcHMgYXJlIHRvIHJldHVybiB0aGUgcmVzdWx0XG4gICAgICAvLyBvZiBydW5uaW5nIGNvbnN1bWUgYm9keSB3aXRoIHRoaXMgYW5kIHRoZSBmb2xsb3dpbmcgc3RlcFxuICAgICAgLy8gZ2l2ZW4gYSBieXRlIHNlcXVlbmNlIGJ5dGVzOiByZXR1cm4gYSBuZXcgQXJyYXlCdWZmZXJcbiAgICAgIC8vIHdob3NlIGNvbnRlbnRzIGFyZSBieXRlcy5cbiAgICAgIHJldHVybiBzcGVjQ29uc3VtZUJvZHkodGhpcywgKGJ5dGVzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShieXRlcykuYnVmZmVyXG4gICAgICB9LCBpbnN0YW5jZSlcbiAgICB9LFxuXG4gICAgdGV4dCAoKSB7XG4gICAgICAvLyBUaGUgdGV4dCgpIG1ldGhvZCBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZ1xuICAgICAgLy8gY29uc3VtZSBib2R5IHdpdGggdGhpcyBhbmQgVVRGLTggZGVjb2RlLlxuICAgICAgcmV0dXJuIHNwZWNDb25zdW1lQm9keSh0aGlzLCB1dGY4RGVjb2RlQnl0ZXMsIGluc3RhbmNlKVxuICAgIH0sXG5cbiAgICBqc29uICgpIHtcbiAgICAgIC8vIFRoZSBqc29uKCkgbWV0aG9kIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhlIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgICAvLyBjb25zdW1lIGJvZHkgd2l0aCB0aGlzIGFuZCBwYXJzZSBKU09OIGZyb20gYnl0ZXMuXG4gICAgICByZXR1cm4gc3BlY0NvbnN1bWVCb2R5KHRoaXMsIHBhcnNlSlNPTkZyb21CeXRlcywgaW5zdGFuY2UpXG4gICAgfSxcblxuICAgIGFzeW5jIGZvcm1EYXRhICgpIHtcbiAgICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIGluc3RhbmNlKVxuXG4gICAgICB0aHJvd0lmQWJvcnRlZCh0aGlzW2tTdGF0ZV0pXG5cbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gdGhpcy5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJylcblxuICAgICAgLy8gSWYgbWltZVR5cGVcdTIwMTlzIGVzc2VuY2UgaXMgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsIHRoZW46XG4gICAgICBpZiAoL211bHRpcGFydFxcL2Zvcm0tZGF0YS8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHt9XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuaGVhZGVycykgaGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV0gPSB2YWx1ZVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuXG4gICAgICAgIGxldCBidXNib3lcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGJ1c2JveSA9IG5ldyBCdXNib3koe1xuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgIHByZXNlcnZlUGF0aDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oYCR7ZXJyfWAsICdBYm9ydEVycm9yJylcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1c2JveS5vbignZmllbGQnLCAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgICByZXNwb25zZUZvcm1EYXRhLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgYnVzYm95Lm9uKCdmaWxlJywgKG5hbWUsIHZhbHVlLCBmaWxlbmFtZSwgZW5jb2RpbmcsIG1pbWVUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2h1bmtzID0gW11cblxuICAgICAgICAgIGlmIChlbmNvZGluZyA9PT0gJ2Jhc2U2NCcgfHwgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2Jhc2U2NCcpIHtcbiAgICAgICAgICAgIGxldCBiYXNlNjRjaHVuayA9ICcnXG5cbiAgICAgICAgICAgIHZhbHVlLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICAgICAgICAgIGJhc2U2NGNodW5rICs9IGNodW5rLnRvU3RyaW5nKCkucmVwbGFjZSgvW1xcclxcbl0vZ20sICcnKVxuXG4gICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGJhc2U2NGNodW5rLmxlbmd0aCAtIGJhc2U2NGNodW5rLmxlbmd0aCAlIDRcbiAgICAgICAgICAgICAgY2h1bmtzLnB1c2goQnVmZmVyLmZyb20oYmFzZTY0Y2h1bmsuc2xpY2UoMCwgZW5kKSwgJ2Jhc2U2NCcpKVxuXG4gICAgICAgICAgICAgIGJhc2U2NGNodW5rID0gYmFzZTY0Y2h1bmsuc2xpY2UoZW5kKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHZhbHVlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKGJhc2U2NGNodW5rLCAnYmFzZTY0JykpXG4gICAgICAgICAgICAgIHJlc3BvbnNlRm9ybURhdGEuYXBwZW5kKG5hbWUsIG5ldyBGaWxlKGNodW5rcywgZmlsZW5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZS5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgICAgICAgICAgICBjaHVua3MucHVzaChjaHVuaylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB2YWx1ZS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgICByZXNwb25zZUZvcm1EYXRhLmFwcGVuZChuYW1lLCBuZXcgRmlsZShjaHVua3MsIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgYnVzYm95UmVzb2x2ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBidXNib3kub24oJ2ZpbmlzaCcsIHJlc29sdmUpXG4gICAgICAgICAgYnVzYm95Lm9uKCdlcnJvcicsIChlcnIpID0+IHJlamVjdChuZXcgVHlwZUVycm9yKGVycikpKVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0aGlzLmJvZHkgIT09IG51bGwpIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgY29uc3VtZUJvZHkodGhpc1trU3RhdGVdLmJvZHkpKSBidXNib3kud3JpdGUoY2h1bmspXG4gICAgICAgIGJ1c2JveS5lbmQoKVxuICAgICAgICBhd2FpdCBidXNib3lSZXNvbHZlXG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRm9ybURhdGFcbiAgICAgIH0gZWxzZSBpZiAoL2FwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAvLyBPdGhlcndpc2UsIGlmIG1pbWVUeXBlXHUyMDE5cyBlc3NlbmNlIGlzIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsIHRoZW46XG5cbiAgICAgICAgLy8gMS4gTGV0IGVudHJpZXMgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIGJ5dGVzLlxuICAgICAgICBsZXQgZW50cmllc1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCB0ZXh0ID0gJydcbiAgICAgICAgICAvLyBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgcGFyc2VyIHdpbGwga2VlcCB0aGUgQk9NLlxuICAgICAgICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNlclxuICAgICAgICAgIC8vIE5vdGUgdGhhdCBzdHJlYW1pbmcgZGVjb2RlciBpcyBzdGF0ZWZ1bCBhbmQgY2Fubm90IGJlIHJldXNlZFxuICAgICAgICAgIGNvbnN0IHN0cmVhbWluZ0RlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04JywgeyBpZ25vcmVCT006IHRydWUgfSlcblxuICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgY29uc3VtZUJvZHkodGhpc1trU3RhdGVdLmJvZHkpKSB7XG4gICAgICAgICAgICBpZiAoIWlzVWludDhBcnJheShjaHVuaykpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgVWludDhBcnJheSBjaHVuaycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0ICs9IHN0cmVhbWluZ0RlY29kZXIuZGVjb2RlKGNodW5rLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICB0ZXh0ICs9IHN0cmVhbWluZ0RlY29kZXIuZGVjb2RlKClcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh0ZXh0KVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogVW5jbGVhciB3aGVuIG5ldyBVUkxTZWFyY2hQYXJhbXMgY2FuIGZhaWwgb24gYSBzdHJpbmcuXG4gICAgICAgICAgLy8gMi4gSWYgZW50cmllcyBpcyBmYWlsdXJlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IFR5cGVFcnJvcigpLCB7IGNhdXNlOiBlcnIgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFJldHVybiBhIG5ldyBGb3JtRGF0YSBvYmplY3Qgd2hvc2UgZW50cmllcyBhcmUgZW50cmllcy5cbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgZW50cmllcykge1xuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybURhdGFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdhaXQgYSB0aWNrIGJlZm9yZSBjaGVja2luZyBpZiB0aGUgcmVxdWVzdCBoYXMgYmVlbiBhYm9ydGVkLlxuICAgICAgICAvLyBPdGhlcndpc2UsIGEgVHlwZUVycm9yIGNhbiBiZSB0aHJvd24gd2hlbiBhbiBBYm9ydEVycm9yIHNob3VsZC5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKClcblxuICAgICAgICB0aHJvd0lmQWJvcnRlZCh0aGlzW2tTdGF0ZV0pXG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgIGhlYWRlcjogYCR7aW5zdGFuY2UubmFtZX0uZm9ybURhdGFgLFxuICAgICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgcGFyc2UgY29udGVudCBhcyBGb3JtRGF0YS4nXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGhvZHNcbn1cblxuZnVuY3Rpb24gbWl4aW5Cb2R5IChwcm90b3R5cGUpIHtcbiAgT2JqZWN0LmFzc2lnbihwcm90b3R5cGUucHJvdG90eXBlLCBib2R5TWl4aW5NZXRob2RzKHByb3RvdHlwZSkpXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LWNvbnN1bWUtYm9keVxuICogQHBhcmFtIHtSZXNwb25zZXxSZXF1ZXN0fSBvYmplY3RcbiAqIEBwYXJhbSB7KHZhbHVlOiB1bmtub3duKSA9PiB1bmtub3dufSBjb252ZXJ0Qnl0ZXNUb0pTVmFsdWVcbiAqIEBwYXJhbSB7UmVzcG9uc2V8UmVxdWVzdH0gaW5zdGFuY2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3BlY0NvbnN1bWVCb2R5IChvYmplY3QsIGNvbnZlcnRCeXRlc1RvSlNWYWx1ZSwgaW5zdGFuY2UpIHtcbiAgd2ViaWRsLmJyYW5kQ2hlY2sob2JqZWN0LCBpbnN0YW5jZSlcblxuICB0aHJvd0lmQWJvcnRlZChvYmplY3Rba1N0YXRlXSlcblxuICAvLyAxLiBJZiBvYmplY3QgaXMgdW51c2FibGUsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZFxuICAvLyAgICB3aXRoIGEgVHlwZUVycm9yLlxuICBpZiAoYm9keVVudXNhYmxlKG9iamVjdFtrU3RhdGVdLmJvZHkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBpcyB1bnVzYWJsZScpXG4gIH1cblxuICAvLyAyLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLlxuICBjb25zdCBwcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAvLyAzLiBMZXQgZXJyb3JTdGVwcyBnaXZlbiBlcnJvciBiZSB0byByZWplY3QgcHJvbWlzZSB3aXRoIGVycm9yLlxuICBjb25zdCBlcnJvclN0ZXBzID0gKGVycm9yKSA9PiBwcm9taXNlLnJlamVjdChlcnJvcilcblxuICAvLyA0LiBMZXQgc3VjY2Vzc1N0ZXBzIGdpdmVuIGEgYnl0ZSBzZXF1ZW5jZSBkYXRhIGJlIHRvIHJlc29sdmVcbiAgLy8gICAgcHJvbWlzZSB3aXRoIHRoZSByZXN1bHQgb2YgcnVubmluZyBjb252ZXJ0Qnl0ZXNUb0pTVmFsdWVcbiAgLy8gICAgd2l0aCBkYXRhLiBJZiB0aGF0IHRocmV3IGFuIGV4Y2VwdGlvbiwgdGhlbiBydW4gZXJyb3JTdGVwc1xuICAvLyAgICB3aXRoIHRoYXQgZXhjZXB0aW9uLlxuICBjb25zdCBzdWNjZXNzU3RlcHMgPSAoZGF0YSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBwcm9taXNlLnJlc29sdmUoY29udmVydEJ5dGVzVG9KU1ZhbHVlKGRhdGEpKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yU3RlcHMoZSlcbiAgICB9XG4gIH1cblxuICAvLyA1LiBJZiBvYmplY3RcdTIwMTlzIGJvZHkgaXMgbnVsbCwgdGhlbiBydW4gc3VjY2Vzc1N0ZXBzIHdpdGggYW5cbiAgLy8gICAgZW1wdHkgYnl0ZSBzZXF1ZW5jZS5cbiAgaWYgKG9iamVjdFtrU3RhdGVdLmJvZHkgPT0gbnVsbCkge1xuICAgIHN1Y2Nlc3NTdGVwcyhuZXcgVWludDhBcnJheSgpKVxuICAgIHJldHVybiBwcm9taXNlLnByb21pc2VcbiAgfVxuXG4gIC8vIDYuIE90aGVyd2lzZSwgZnVsbHkgcmVhZCBvYmplY3RcdTIwMTlzIGJvZHkgZ2l2ZW4gc3VjY2Vzc1N0ZXBzLFxuICAvLyAgICBlcnJvclN0ZXBzLCBhbmQgb2JqZWN0XHUyMDE5cyByZWxldmFudCBnbG9iYWwgb2JqZWN0LlxuICBhd2FpdCBmdWxseVJlYWRCb2R5KG9iamVjdFtrU3RhdGVdLmJvZHksIHN1Y2Nlc3NTdGVwcywgZXJyb3JTdGVwcylcblxuICAvLyA3LiBSZXR1cm4gcHJvbWlzZS5cbiAgcmV0dXJuIHByb21pc2UucHJvbWlzZVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS11bnVzYWJsZVxuZnVuY3Rpb24gYm9keVVudXNhYmxlIChib2R5KSB7XG4gIC8vIEFuIG9iamVjdCBpbmNsdWRpbmcgdGhlIEJvZHkgaW50ZXJmYWNlIG1peGluIGlzXG4gIC8vIHNhaWQgdG8gYmUgdW51c2FibGUgaWYgaXRzIGJvZHkgaXMgbm9uLW51bGwgYW5kXG4gIC8vIGl0cyBib2R5XHUyMDE5cyBzdHJlYW0gaXMgZGlzdHVyYmVkIG9yIGxvY2tlZC5cbiAgcmV0dXJuIGJvZHkgIT0gbnVsbCAmJiAoYm9keS5zdHJlYW0ubG9ja2VkIHx8IHV0aWwuaXNEaXN0dXJiZWQoYm9keS5zdHJlYW0pKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI3V0Zi04LWRlY29kZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlclxuICovXG5mdW5jdGlvbiB1dGY4RGVjb2RlQnl0ZXMgKGJ1ZmZlcikge1xuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gMS4gTGV0IGJ1ZmZlciBiZSB0aGUgcmVzdWx0IG9mIHBlZWtpbmcgdGhyZWUgYnl0ZXMgZnJvbVxuICAvLyAgICBpb1F1ZXVlLCBjb252ZXJ0ZWQgdG8gYSBieXRlIHNlcXVlbmNlLlxuXG4gIC8vIDIuIElmIGJ1ZmZlciBpcyAweEVGIDB4QkIgMHhCRiwgdGhlbiByZWFkIHRocmVlXG4gIC8vICAgIGJ5dGVzIGZyb20gaW9RdWV1ZS4gKERvIG5vdGhpbmcgd2l0aCB0aG9zZSBieXRlcy4pXG4gIGlmIChidWZmZXJbMF0gPT09IDB4RUYgJiYgYnVmZmVyWzFdID09PSAweEJCICYmIGJ1ZmZlclsyXSA9PT0gMHhCRikge1xuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheSgzKVxuICB9XG5cbiAgLy8gMy4gUHJvY2VzcyBhIHF1ZXVlIHdpdGggYW4gaW5zdGFuY2Ugb2YgVVRGLThcdTIwMTlzXG4gIC8vICAgIGRlY29kZXIsIGlvUXVldWUsIG91dHB1dCwgYW5kIFwicmVwbGFjZW1lbnRcIi5cbiAgY29uc3Qgb3V0cHV0ID0gdGV4dERlY29kZXIuZGVjb2RlKGJ1ZmZlcilcblxuICAvLyA0LiBSZXR1cm4gb3V0cHV0LlxuICByZXR1cm4gb3V0cHV0XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jcGFyc2UtanNvbi1ieXRlcy10by1hLWphdmFzY3JpcHQtdmFsdWVcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXNcbiAqL1xuZnVuY3Rpb24gcGFyc2VKU09ORnJvbUJ5dGVzIChieXRlcykge1xuICByZXR1cm4gSlNPTi5wYXJzZSh1dGY4RGVjb2RlQnl0ZXMoYnl0ZXMpKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1taW1lLXR5cGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3Jlc3BvbnNlJykuUmVzcG9uc2V8aW1wb3J0KCcuL3JlcXVlc3QnKS5SZXF1ZXN0fSBvYmplY3RcbiAqL1xuZnVuY3Rpb24gYm9keU1pbWVUeXBlIChvYmplY3QpIHtcbiAgY29uc3QgeyBoZWFkZXJzTGlzdCB9ID0gb2JqZWN0W2tTdGF0ZV1cbiAgY29uc3QgY29udGVudFR5cGUgPSBoZWFkZXJzTGlzdC5nZXQoJ2NvbnRlbnQtdHlwZScpXG5cbiAgaWYgKGNvbnRlbnRUeXBlID09PSBudWxsKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlTUlNRVR5cGUoY29udGVudFR5cGUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBleHRyYWN0Qm9keSxcbiAgc2FmZWx5RXh0cmFjdEJvZHksXG4gIGNsb25lQm9keSxcbiAgbWl4aW5Cb2R5XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIE5vdFN1cHBvcnRlZEVycm9yXG59ID0gcmVxdWlyZSgnLi9lcnJvcnMnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsga0hUVFAyQnVpbGRSZXF1ZXN0LCBrSFRUUDJDb3B5SGVhZGVycywga0hUVFAxQnVpbGRSZXF1ZXN0IH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpXG5cbi8vIHRva2VuUmVnRXhwIGFuZCBoZWFkZXJDaGFyUmVnZXggaGF2ZSBiZWVuIGxpZnRlZCBmcm9tXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYWluL2xpYi9faHR0cF9jb21tb24uanNcblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiB2YWwgaXMgYSB2YWxpZCBIVFRQIHRva2VuXG4gKiBwZXIgdGhlIHJ1bGVzIGRlZmluZWQgaW4gUkZDIDcyMzBcbiAqIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMi42XG4gKi9cbmNvbnN0IHRva2VuUmVnRXhwID0gL15bXFxeX2BhLXpBLVpcXC0wLTkhIyQlJicqKy58fl0rJC9cblxuLyoqXG4gKiBNYXRjaGVzIGlmIHZhbCBjb250YWlucyBhbiBpbnZhbGlkIGZpZWxkLXZjaGFyXG4gKiAgZmllbGQtdmFsdWUgICAgPSAqKCBmaWVsZC1jb250ZW50IC8gb2JzLWZvbGQgKVxuICogIGZpZWxkLWNvbnRlbnQgID0gZmllbGQtdmNoYXIgWyAxKiggU1AgLyBIVEFCICkgZmllbGQtdmNoYXIgXVxuICogIGZpZWxkLXZjaGFyICAgID0gVkNIQVIgLyBvYnMtdGV4dFxuICovXG5jb25zdCBoZWFkZXJDaGFyUmVnZXggPSAvW15cXHRcXHgyMC1cXHg3ZVxceDgwLVxceGZmXS9cblxuLy8gVmVyaWZpZXMgdGhhdCBhIGdpdmVuIHBhdGggaXMgdmFsaWQgZG9lcyBub3QgY29udGFpbiBjb250cm9sIGNoYXJzIFxceDAwIHRvIFxceDIwXG5jb25zdCBpbnZhbGlkUGF0aFJlZ2V4ID0gL1teXFx1MDAyMS1cXHUwMGZmXS9cblxuY29uc3Qga0hhbmRsZXIgPSBTeW1ib2woJ2hhbmRsZXInKVxuXG5jb25zdCBjaGFubmVscyA9IHt9XG5cbmxldCBleHRyYWN0Qm9keVxuXG50cnkge1xuICBjb25zdCBkaWFnbm9zdGljc0NoYW5uZWwgPSByZXF1aXJlKCdkaWFnbm9zdGljc19jaGFubmVsJylcbiAgY2hhbm5lbHMuY3JlYXRlID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTpyZXF1ZXN0OmNyZWF0ZScpXG4gIGNoYW5uZWxzLmJvZHlTZW50ID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTpyZXF1ZXN0OmJvZHlTZW50JylcbiAgY2hhbm5lbHMuaGVhZGVycyA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6cmVxdWVzdDpoZWFkZXJzJylcbiAgY2hhbm5lbHMudHJhaWxlcnMgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOnJlcXVlc3Q6dHJhaWxlcnMnKVxuICBjaGFubmVscy5lcnJvciA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6cmVxdWVzdDplcnJvcicpXG59IGNhdGNoIHtcbiAgY2hhbm5lbHMuY3JlYXRlID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxuICBjaGFubmVscy5ib2R5U2VudCA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbiAgY2hhbm5lbHMuaGVhZGVycyA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbiAgY2hhbm5lbHMudHJhaWxlcnMgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLmVycm9yID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxufVxuXG5jbGFzcyBSZXF1ZXN0IHtcbiAgY29uc3RydWN0b3IgKG9yaWdpbiwge1xuICAgIHBhdGgsXG4gICAgbWV0aG9kLFxuICAgIGJvZHksXG4gICAgaGVhZGVycyxcbiAgICBxdWVyeSxcbiAgICBpZGVtcG90ZW50LFxuICAgIGJsb2NraW5nLFxuICAgIHVwZ3JhZGUsXG4gICAgaGVhZGVyc1RpbWVvdXQsXG4gICAgYm9keVRpbWVvdXQsXG4gICAgcmVzZXQsXG4gICAgdGhyb3dPbkVycm9yLFxuICAgIGV4cGVjdENvbnRpbnVlXG4gIH0sIGhhbmRsZXIpIHtcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3BhdGggbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHBhdGhbMF0gIT09ICcvJyAmJlxuICAgICAgIShwYXRoLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBwYXRoLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykpICYmXG4gICAgICBtZXRob2QgIT09ICdDT05ORUNUJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdwYXRoIG11c3QgYmUgYW4gYWJzb2x1dGUgVVJMIG9yIHN0YXJ0IHdpdGggYSBzbGFzaCcpXG4gICAgfSBlbHNlIGlmIChpbnZhbGlkUGF0aFJlZ2V4LmV4ZWMocGF0aCkgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCByZXF1ZXN0IHBhdGgnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWV0aG9kICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtZXRob2QgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfSBlbHNlIGlmICh0b2tlblJlZ0V4cC5leGVjKG1ldGhvZCkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCByZXF1ZXN0IG1ldGhvZCcpXG4gICAgfVxuXG4gICAgaWYgKHVwZ3JhZGUgJiYgdHlwZW9mIHVwZ3JhZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3VwZ3JhZGUgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuXG4gICAgaWYgKGhlYWRlcnNUaW1lb3V0ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNGaW5pdGUoaGVhZGVyc1RpbWVvdXQpIHx8IGhlYWRlcnNUaW1lb3V0IDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBoZWFkZXJzVGltZW91dCcpXG4gICAgfVxuXG4gICAgaWYgKGJvZHlUaW1lb3V0ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNGaW5pdGUoYm9keVRpbWVvdXQpIHx8IGJvZHlUaW1lb3V0IDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBib2R5VGltZW91dCcpXG4gICAgfVxuXG4gICAgaWYgKHJlc2V0ICE9IG51bGwgJiYgdHlwZW9mIHJlc2V0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCByZXNldCcpXG4gICAgfVxuXG4gICAgaWYgKGV4cGVjdENvbnRpbnVlICE9IG51bGwgJiYgdHlwZW9mIGV4cGVjdENvbnRpbnVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBleHBlY3RDb250aW51ZScpXG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXJzVGltZW91dCA9IGhlYWRlcnNUaW1lb3V0XG5cbiAgICB0aGlzLmJvZHlUaW1lb3V0ID0gYm9keVRpbWVvdXRcblxuICAgIHRoaXMudGhyb3dPbkVycm9yID0gdGhyb3dPbkVycm9yID09PSB0cnVlXG5cbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZFxuXG4gICAgdGhpcy5hYm9ydCA9IG51bGxcblxuICAgIGlmIChib2R5ID09IG51bGwpIHtcbiAgICAgIHRoaXMuYm9keSA9IG51bGxcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgIHRoaXMuYm9keSA9IGJvZHlcblxuICAgICAgY29uc3QgclN0YXRlID0gdGhpcy5ib2R5Ll9yZWFkYWJsZVN0YXRlXG4gICAgICBpZiAoIXJTdGF0ZSB8fCAhclN0YXRlLmF1dG9EZXN0cm95KSB7XG4gICAgICAgIHRoaXMuZW5kSGFuZGxlciA9IGZ1bmN0aW9uIGF1dG9EZXN0cm95ICgpIHtcbiAgICAgICAgICB1dGlsLmRlc3Ryb3kodGhpcylcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJvZHkub24oJ2VuZCcsIHRoaXMuZW5kSGFuZGxlcilcbiAgICAgIH1cblxuICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBlcnIgPT4ge1xuICAgICAgICBpZiAodGhpcy5hYm9ydCkge1xuICAgICAgICAgIHRoaXMuYWJvcnQoZXJyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5ib2R5Lm9uKCdlcnJvcicsIHRoaXMuZXJyb3JIYW5kbGVyKVxuICAgIH0gZWxzZSBpZiAodXRpbC5pc0J1ZmZlcihib2R5KSkge1xuICAgICAgdGhpcy5ib2R5ID0gYm9keS5ieXRlTGVuZ3RoID8gYm9keSA6IG51bGxcbiAgICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5ib2R5ID0gYm9keS5idWZmZXIuYnl0ZUxlbmd0aCA/IEJ1ZmZlci5mcm9tKGJvZHkuYnVmZmVyLCBib2R5LmJ5dGVPZmZzZXQsIGJvZHkuYnl0ZUxlbmd0aCkgOiBudWxsXG4gICAgfSBlbHNlIGlmIChib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHRoaXMuYm9keSA9IGJvZHkuYnl0ZUxlbmd0aCA/IEJ1ZmZlci5mcm9tKGJvZHkpIDogbnVsbFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmJvZHkgPSBib2R5Lmxlbmd0aCA/IEJ1ZmZlci5mcm9tKGJvZHkpIDogbnVsbFxuICAgIH0gZWxzZSBpZiAodXRpbC5pc0Zvcm1EYXRhTGlrZShib2R5KSB8fCB1dGlsLmlzSXRlcmFibGUoYm9keSkgfHwgdXRpbC5pc0Jsb2JMaWtlKGJvZHkpKSB7XG4gICAgICB0aGlzLmJvZHkgPSBib2R5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignYm9keSBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSBSZWFkYWJsZSBzdHJlYW0sIGFuIGl0ZXJhYmxlLCBvciBhbiBhc3luYyBpdGVyYWJsZScpXG4gICAgfVxuXG4gICAgdGhpcy5jb21wbGV0ZWQgPSBmYWxzZVxuXG4gICAgdGhpcy5hYm9ydGVkID0gZmFsc2VcblxuICAgIHRoaXMudXBncmFkZSA9IHVwZ3JhZGUgfHwgbnVsbFxuXG4gICAgdGhpcy5wYXRoID0gcXVlcnkgPyB1dGlsLmJ1aWxkVVJMKHBhdGgsIHF1ZXJ5KSA6IHBhdGhcblxuICAgIHRoaXMub3JpZ2luID0gb3JpZ2luXG5cbiAgICB0aGlzLmlkZW1wb3RlbnQgPSBpZGVtcG90ZW50ID09IG51bGxcbiAgICAgID8gbWV0aG9kID09PSAnSEVBRCcgfHwgbWV0aG9kID09PSAnR0VUJ1xuICAgICAgOiBpZGVtcG90ZW50XG5cbiAgICB0aGlzLmJsb2NraW5nID0gYmxvY2tpbmcgPT0gbnVsbCA/IGZhbHNlIDogYmxvY2tpbmdcblxuICAgIHRoaXMucmVzZXQgPSByZXNldCA9PSBudWxsID8gbnVsbCA6IHJlc2V0XG5cbiAgICB0aGlzLmhvc3QgPSBudWxsXG5cbiAgICB0aGlzLmNvbnRlbnRMZW5ndGggPSBudWxsXG5cbiAgICB0aGlzLmNvbnRlbnRUeXBlID0gbnVsbFxuXG4gICAgdGhpcy5oZWFkZXJzID0gJydcblxuICAgIC8vIE9ubHkgZm9yIEgyXG4gICAgdGhpcy5leHBlY3RDb250aW51ZSA9IGV4cGVjdENvbnRpbnVlICE9IG51bGwgPyBleHBlY3RDb250aW51ZSA6IGZhbHNlXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoICUgMiAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2hlYWRlcnMgYXJyYXkgbXVzdCBiZSBldmVuJylcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBwcm9jZXNzSGVhZGVyKHRoaXMsIGhlYWRlcnNbaV0sIGhlYWRlcnNbaSArIDFdKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGVhZGVycyAmJiB0eXBlb2YgaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzKVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV1cbiAgICAgICAgcHJvY2Vzc0hlYWRlcih0aGlzLCBrZXksIGhlYWRlcnNba2V5XSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhlYWRlcnMgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoZWFkZXJzIG11c3QgYmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5JylcbiAgICB9XG5cbiAgICBpZiAodXRpbC5pc0Zvcm1EYXRhTGlrZSh0aGlzLmJvZHkpKSB7XG4gICAgICBpZiAodXRpbC5ub2RlTWFqb3IgPCAxNiB8fCAodXRpbC5ub2RlTWFqb3IgPT09IDE2ICYmIHV0aWwubm9kZU1pbm9yIDwgOCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdGb3JtLURhdGEgYm9kaWVzIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiBub2RlIHYxNi44IGFuZCBuZXdlci4nKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWV4dHJhY3RCb2R5KSB7XG4gICAgICAgIGV4dHJhY3RCb2R5ID0gcmVxdWlyZSgnLi4vZmV0Y2gvYm9keS5qcycpLmV4dHJhY3RCb2R5XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtib2R5U3RyZWFtLCBjb250ZW50VHlwZV0gPSBleHRyYWN0Qm9keShib2R5KVxuICAgICAgaWYgKHRoaXMuY29udGVudFR5cGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbiAgICAgICAgdGhpcy5oZWFkZXJzICs9IGBjb250ZW50LXR5cGU6ICR7Y29udGVudFR5cGV9XFxyXFxuYFxuICAgICAgfVxuICAgICAgdGhpcy5ib2R5ID0gYm9keVN0cmVhbS5zdHJlYW1cbiAgICAgIHRoaXMuY29udGVudExlbmd0aCA9IGJvZHlTdHJlYW0ubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh1dGlsLmlzQmxvYkxpa2UoYm9keSkgJiYgdGhpcy5jb250ZW50VHlwZSA9PSBudWxsICYmIGJvZHkudHlwZSkge1xuICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGJvZHkudHlwZVxuICAgICAgdGhpcy5oZWFkZXJzICs9IGBjb250ZW50LXR5cGU6ICR7Ym9keS50eXBlfVxcclxcbmBcbiAgICB9XG5cbiAgICB1dGlsLnZhbGlkYXRlSGFuZGxlcihoYW5kbGVyLCBtZXRob2QsIHVwZ3JhZGUpXG5cbiAgICB0aGlzLnNlcnZlcm5hbWUgPSB1dGlsLmdldFNlcnZlck5hbWUodGhpcy5ob3N0KVxuXG4gICAgdGhpc1trSGFuZGxlcl0gPSBoYW5kbGVyXG5cbiAgICBpZiAoY2hhbm5lbHMuY3JlYXRlLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICBjaGFubmVscy5jcmVhdGUucHVibGlzaCh7IHJlcXVlc3Q6IHRoaXMgfSlcbiAgICB9XG4gIH1cblxuICBvbkJvZHlTZW50IChjaHVuaykge1xuICAgIGlmICh0aGlzW2tIYW5kbGVyXS5vbkJvZHlTZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25Cb2R5U2VudChjaHVuaylcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmFib3J0KGVycilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblJlcXVlc3RTZW50ICgpIHtcbiAgICBpZiAoY2hhbm5lbHMuYm9keVNlbnQuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgIGNoYW5uZWxzLmJvZHlTZW50LnB1Ymxpc2goeyByZXF1ZXN0OiB0aGlzIH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXNba0hhbmRsZXJdLm9uUmVxdWVzdFNlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vblJlcXVlc3RTZW50KClcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmFib3J0KGVycilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNvbm5lY3QgKGFib3J0KSB7XG4gICAgYXNzZXJ0KCF0aGlzLmFib3J0ZWQpXG4gICAgYXNzZXJ0KCF0aGlzLmNvbXBsZXRlZClcblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICBhYm9ydCh0aGlzLmVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vbkNvbm5lY3QoYWJvcnQpXG4gICAgfVxuICB9XG5cbiAgb25IZWFkZXJzIChzdGF0dXNDb2RlLCBoZWFkZXJzLCByZXN1bWUsIHN0YXR1c1RleHQpIHtcbiAgICBhc3NlcnQoIXRoaXMuYWJvcnRlZClcbiAgICBhc3NlcnQoIXRoaXMuY29tcGxldGVkKVxuXG4gICAgaWYgKGNoYW5uZWxzLmhlYWRlcnMuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgIGNoYW5uZWxzLmhlYWRlcnMucHVibGlzaCh7IHJlcXVlc3Q6IHRoaXMsIHJlc3BvbnNlOiB7IHN0YXR1c0NvZGUsIGhlYWRlcnMsIHN0YXR1c1RleHQgfSB9KVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25IZWFkZXJzKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHJlc3VtZSwgc3RhdHVzVGV4dClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuYWJvcnQoZXJyKVxuICAgIH1cbiAgfVxuXG4gIG9uRGF0YSAoY2h1bmspIHtcbiAgICBhc3NlcnQoIXRoaXMuYWJvcnRlZClcbiAgICBhc3NlcnQoIXRoaXMuY29tcGxldGVkKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vbkRhdGEoY2h1bmspXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmFib3J0KGVycilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIG9uVXBncmFkZSAoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KSB7XG4gICAgYXNzZXJ0KCF0aGlzLmFib3J0ZWQpXG4gICAgYXNzZXJ0KCF0aGlzLmNvbXBsZXRlZClcblxuICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vblVwZ3JhZGUoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KVxuICB9XG5cbiAgb25Db21wbGV0ZSAodHJhaWxlcnMpIHtcbiAgICB0aGlzLm9uRmluYWxseSgpXG5cbiAgICBhc3NlcnQoIXRoaXMuYWJvcnRlZClcblxuICAgIHRoaXMuY29tcGxldGVkID0gdHJ1ZVxuICAgIGlmIChjaGFubmVscy50cmFpbGVycy5oYXNTdWJzY3JpYmVycykge1xuICAgICAgY2hhbm5lbHMudHJhaWxlcnMucHVibGlzaCh7IHJlcXVlc3Q6IHRoaXMsIHRyYWlsZXJzIH0pXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vbkNvbXBsZXRlKHRyYWlsZXJzKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gVE9ETyAoZml4KTogVGhpcyBtaWdodCBiZSBhIGJhZCBpZGVhP1xuICAgICAgdGhpcy5vbkVycm9yKGVycilcbiAgICB9XG4gIH1cblxuICBvbkVycm9yIChlcnJvcikge1xuICAgIHRoaXMub25GaW5hbGx5KClcblxuICAgIGlmIChjaGFubmVscy5lcnJvci5oYXNTdWJzY3JpYmVycykge1xuICAgICAgY2hhbm5lbHMuZXJyb3IucHVibGlzaCh7IHJlcXVlc3Q6IHRoaXMsIGVycm9yIH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuYWJvcnRlZCA9IHRydWVcblxuICAgIHJldHVybiB0aGlzW2tIYW5kbGVyXS5vbkVycm9yKGVycm9yKVxuICB9XG5cbiAgb25GaW5hbGx5ICgpIHtcbiAgICBpZiAodGhpcy5lcnJvckhhbmRsZXIpIHtcbiAgICAgIHRoaXMuYm9keS5vZmYoJ2Vycm9yJywgdGhpcy5lcnJvckhhbmRsZXIpXG4gICAgICB0aGlzLmVycm9ySGFuZGxlciA9IG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmRIYW5kbGVyKSB7XG4gICAgICB0aGlzLmJvZHkub2ZmKCdlbmQnLCB0aGlzLmVuZEhhbmRsZXIpXG4gICAgICB0aGlzLmVuZEhhbmRsZXIgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogYWRqdXN0IHRvIHN1cHBvcnQgSDJcbiAgYWRkSGVhZGVyIChrZXksIHZhbHVlKSB7XG4gICAgcHJvY2Vzc0hlYWRlcih0aGlzLCBrZXksIHZhbHVlKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGF0aWMgW2tIVFRQMUJ1aWxkUmVxdWVzdF0gKG9yaWdpbiwgb3B0cywgaGFuZGxlcikge1xuICAgIC8vIFRPRE86IE1pZ3JhdGUgaGVhZGVyIHBhcnNpbmcgaGVyZSwgdG8gbWFrZSBSZXF1ZXN0c1xuICAgIC8vIEhUVFAgYWdub3N0aWNcbiAgICByZXR1cm4gbmV3IFJlcXVlc3Qob3JpZ2luLCBvcHRzLCBoYW5kbGVyKVxuICB9XG5cbiAgc3RhdGljIFtrSFRUUDJCdWlsZFJlcXVlc3RdIChvcmlnaW4sIG9wdHMsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0cy5oZWFkZXJzXG4gICAgb3B0cyA9IHsgLi4ub3B0cywgaGVhZGVyczogbnVsbCB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3Qob3JpZ2luLCBvcHRzLCBoYW5kbGVyKVxuXG4gICAgcmVxdWVzdC5oZWFkZXJzID0ge31cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgICBpZiAoaGVhZGVycy5sZW5ndGggJSAyICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaGVhZGVycyBhcnJheSBtdXN0IGJlIGV2ZW4nKVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHByb2Nlc3NIZWFkZXIocmVxdWVzdCwgaGVhZGVyc1tpXSwgaGVhZGVyc1tpICsgMV0sIHRydWUpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChoZWFkZXJzICYmIHR5cGVvZiBoZWFkZXJzID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGhlYWRlcnMpXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxuICAgICAgICBwcm9jZXNzSGVhZGVyKHJlcXVlc3QsIGtleSwgaGVhZGVyc1trZXldLCB0cnVlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGVhZGVycyAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2hlYWRlcnMgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXknKVxuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0XG4gIH1cblxuICBzdGF0aWMgW2tIVFRQMkNvcHlIZWFkZXJzXSAocmF3KSB7XG4gICAgY29uc3QgcmF3SGVhZGVycyA9IHJhdy5zcGxpdCgnXFxyXFxuJylcbiAgICBjb25zdCBoZWFkZXJzID0ge31cblxuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHJhd0hlYWRlcnMpIHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGhlYWRlci5zcGxpdCgnOiAnKVxuXG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZS5sZW5ndGggPT09IDApIGNvbnRpbnVlXG5cbiAgICAgIGlmIChoZWFkZXJzW2tleV0pIGhlYWRlcnNba2V5XSArPSBgLCR7dmFsdWV9YFxuICAgICAgZWxzZSBoZWFkZXJzW2tleV0gPSB2YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzXG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0hlYWRlclZhbHVlIChrZXksIHZhbCwgc2tpcEFwcGVuZCkge1xuICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBpbnZhbGlkICR7a2V5fSBoZWFkZXJgKVxuICB9XG5cbiAgdmFsID0gdmFsICE9IG51bGwgPyBgJHt2YWx9YCA6ICcnXG5cbiAgaWYgKGhlYWRlckNoYXJSZWdleC5leGVjKHZhbCkgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYGludmFsaWQgJHtrZXl9IGhlYWRlcmApXG4gIH1cblxuICByZXR1cm4gc2tpcEFwcGVuZCA/IHZhbCA6IGAke2tleX06ICR7dmFsfVxcclxcbmBcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0hlYWRlciAocmVxdWVzdCwga2V5LCB2YWwsIHNraXBBcHBlbmQgPSBmYWxzZSkge1xuICBpZiAodmFsICYmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgaW52YWxpZCAke2tleX0gaGVhZGVyYClcbiAgfSBlbHNlIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKFxuICAgIHJlcXVlc3QuaG9zdCA9PT0gbnVsbCAmJlxuICAgIGtleS5sZW5ndGggPT09IDQgJiZcbiAgICBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2hvc3QnXG4gICkge1xuICAgIGlmIChoZWFkZXJDaGFyUmVnZXguZXhlYyh2YWwpICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYGludmFsaWQgJHtrZXl9IGhlYWRlcmApXG4gICAgfVxuICAgIC8vIENvbnN1bWVkIGJ5IENsaWVudFxuICAgIHJlcXVlc3QuaG9zdCA9IHZhbFxuICB9IGVsc2UgaWYgKFxuICAgIHJlcXVlc3QuY29udGVudExlbmd0aCA9PT0gbnVsbCAmJlxuICAgIGtleS5sZW5ndGggPT09IDE0ICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LWxlbmd0aCdcbiAgKSB7XG4gICAgcmVxdWVzdC5jb250ZW50TGVuZ3RoID0gcGFyc2VJbnQodmFsLCAxMClcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShyZXF1ZXN0LmNvbnRlbnRMZW5ndGgpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgY29udGVudC1sZW5ndGggaGVhZGVyJylcbiAgICB9XG4gIH0gZWxzZSBpZiAoXG4gICAgcmVxdWVzdC5jb250ZW50VHlwZSA9PT0gbnVsbCAmJlxuICAgIGtleS5sZW5ndGggPT09IDEyICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnXG4gICkge1xuICAgIHJlcXVlc3QuY29udGVudFR5cGUgPSB2YWxcbiAgICBpZiAoc2tpcEFwcGVuZCkgcmVxdWVzdC5oZWFkZXJzW2tleV0gPSBwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWwsIHNraXBBcHBlbmQpXG4gICAgZWxzZSByZXF1ZXN0LmhlYWRlcnMgKz0gcHJvY2Vzc0hlYWRlclZhbHVlKGtleSwgdmFsKVxuICB9IGVsc2UgaWYgKFxuICAgIGtleS5sZW5ndGggPT09IDE3ICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0cmFuc2Zlci1lbmNvZGluZydcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIHRyYW5zZmVyLWVuY29kaW5nIGhlYWRlcicpXG4gIH0gZWxzZSBpZiAoXG4gICAga2V5Lmxlbmd0aCA9PT0gMTAgJiZcbiAgICBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2Nvbm5lY3Rpb24nXG4gICkge1xuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyB2YWwudG9Mb3dlckNhc2UoKSA6IG51bGxcbiAgICBpZiAodmFsdWUgIT09ICdjbG9zZScgJiYgdmFsdWUgIT09ICdrZWVwLWFsaXZlJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNvbm5lY3Rpb24gaGVhZGVyJylcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnY2xvc2UnKSB7XG4gICAgICByZXF1ZXN0LnJlc2V0ID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIGlmIChcbiAgICBrZXkubGVuZ3RoID09PSAxMCAmJlxuICAgIGtleS50b0xvd2VyQ2FzZSgpID09PSAna2VlcC1hbGl2ZSdcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGtlZXAtYWxpdmUgaGVhZGVyJylcbiAgfSBlbHNlIGlmIChcbiAgICBrZXkubGVuZ3RoID09PSA3ICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICd1cGdyYWRlJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgdXBncmFkZSBoZWFkZXInKVxuICB9IGVsc2UgaWYgKFxuICAgIGtleS5sZW5ndGggPT09IDYgJiZcbiAgICBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2V4cGVjdCdcbiAgKSB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKCdleHBlY3QgaGVhZGVyIG5vdCBzdXBwb3J0ZWQnKVxuICB9IGVsc2UgaWYgKHRva2VuUmVnRXhwLmV4ZWMoa2V5KSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBoZWFkZXIga2V5JylcbiAgfSBlbHNlIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc2tpcEFwcGVuZCkge1xuICAgICAgICAgIGlmIChyZXF1ZXN0LmhlYWRlcnNba2V5XSkgcmVxdWVzdC5oZWFkZXJzW2tleV0gKz0gYCwke3Byb2Nlc3NIZWFkZXJWYWx1ZShrZXksIHZhbFtpXSwgc2tpcEFwcGVuZCl9YFxuICAgICAgICAgIGVsc2UgcmVxdWVzdC5oZWFkZXJzW2tleV0gPSBwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWxbaV0sIHNraXBBcHBlbmQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxdWVzdC5oZWFkZXJzICs9IHByb2Nlc3NIZWFkZXJWYWx1ZShrZXksIHZhbFtpXSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2tpcEFwcGVuZCkgcmVxdWVzdC5oZWFkZXJzW2tleV0gPSBwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWwsIHNraXBBcHBlbmQpXG4gICAgICBlbHNlIHJlcXVlc3QuaGVhZGVycyArPSBwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWwpXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKVxuXG5jbGFzcyBEaXNwYXRjaGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgZGlzcGF0Y2ggKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJylcbiAgfVxuXG4gIGNsb3NlICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpXG4gIH1cblxuICBkZXN0cm95ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEaXNwYXRjaGVyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IERpc3BhdGNoZXIgPSByZXF1aXJlKCcuL2Rpc3BhdGNoZXInKVxuY29uc3Qge1xuICBDbGllbnREZXN0cm95ZWRFcnJvcixcbiAgQ2xpZW50Q2xvc2VkRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yXG59ID0gcmVxdWlyZSgnLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IGtEZXN0cm95LCBrQ2xvc2UsIGtEaXNwYXRjaCwga0ludGVyY2VwdG9ycyB9ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuXG5jb25zdCBrRGVzdHJveWVkID0gU3ltYm9sKCdkZXN0cm95ZWQnKVxuY29uc3Qga0Nsb3NlZCA9IFN5bWJvbCgnY2xvc2VkJylcbmNvbnN0IGtPbkRlc3Ryb3llZCA9IFN5bWJvbCgnb25EZXN0cm95ZWQnKVxuY29uc3Qga09uQ2xvc2VkID0gU3ltYm9sKCdvbkNsb3NlZCcpXG5jb25zdCBrSW50ZXJjZXB0ZWREaXNwYXRjaCA9IFN5bWJvbCgnSW50ZXJjZXB0ZWQgRGlzcGF0Y2gnKVxuXG5jbGFzcyBEaXNwYXRjaGVyQmFzZSBleHRlbmRzIERpc3BhdGNoZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpc1trRGVzdHJveWVkXSA9IGZhbHNlXG4gICAgdGhpc1trT25EZXN0cm95ZWRdID0gbnVsbFxuICAgIHRoaXNba0Nsb3NlZF0gPSBmYWxzZVxuICAgIHRoaXNba09uQ2xvc2VkXSA9IFtdXG4gIH1cblxuICBnZXQgZGVzdHJveWVkICgpIHtcbiAgICByZXR1cm4gdGhpc1trRGVzdHJveWVkXVxuICB9XG5cbiAgZ2V0IGNsb3NlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0Nsb3NlZF1cbiAgfVxuXG4gIGdldCBpbnRlcmNlcHRvcnMgKCkge1xuICAgIHJldHVybiB0aGlzW2tJbnRlcmNlcHRvcnNdXG4gIH1cblxuICBzZXQgaW50ZXJjZXB0b3JzIChuZXdJbnRlcmNlcHRvcnMpIHtcbiAgICBpZiAobmV3SW50ZXJjZXB0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gbmV3SW50ZXJjZXB0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGludGVyY2VwdG9yID0gdGhpc1trSW50ZXJjZXB0b3JzXVtpXVxuICAgICAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnRlcmNlcHRvciBtdXN0IGJlIGFuIGZ1bmN0aW9uJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXNba0ludGVyY2VwdG9yc10gPSBuZXdJbnRlcmNlcHRvcnNcbiAgfVxuXG4gIGNsb3NlIChjYWxsYmFjaykge1xuICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjYWxsYmFjaycpXG4gICAgfVxuXG4gICAgaWYgKHRoaXNba0Rlc3Ryb3llZF0pIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKG5ldyBDbGllbnREZXN0cm95ZWRFcnJvcigpLCBudWxsKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzW2tDbG9zZWRdKSB7XG4gICAgICBpZiAodGhpc1trT25DbG9zZWRdKSB7XG4gICAgICAgIHRoaXNba09uQ2xvc2VkXS5wdXNoKGNhbGxiYWNrKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2FsbGJhY2sobnVsbCwgbnVsbCkpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzW2tDbG9zZWRdID0gdHJ1ZVxuICAgIHRoaXNba09uQ2xvc2VkXS5wdXNoKGNhbGxiYWNrKVxuXG4gICAgY29uc3Qgb25DbG9zZWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzW2tPbkNsb3NlZF1cbiAgICAgIHRoaXNba09uQ2xvc2VkXSA9IG51bGxcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxiYWNrc1tpXShudWxsLCBudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNob3VsZCBub3QgZXJyb3IuXG4gICAgdGhpc1trQ2xvc2VdKClcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuZGVzdHJveSgpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzayhvbkNsb3NlZClcbiAgICAgIH0pXG4gIH1cblxuICBkZXN0cm95IChlcnIsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBlcnIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gZXJyXG4gICAgICBlcnIgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveShlcnIsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZXJyID8gLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNob3VsZCBuZXZlciBlcnJvciAqLyByZWplY3QoZXJyKSA6IHJlc29sdmUoZGF0YSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNhbGxiYWNrJylcbiAgICB9XG5cbiAgICBpZiAodGhpc1trRGVzdHJveWVkXSkge1xuICAgICAgaWYgKHRoaXNba09uRGVzdHJveWVkXSkge1xuICAgICAgICB0aGlzW2tPbkRlc3Ryb3llZF0ucHVzaChjYWxsYmFjaylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKG51bGwsIG51bGwpKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlcnIpIHtcbiAgICAgIGVyciA9IG5ldyBDbGllbnREZXN0cm95ZWRFcnJvcigpXG4gICAgfVxuXG4gICAgdGhpc1trRGVzdHJveWVkXSA9IHRydWVcbiAgICB0aGlzW2tPbkRlc3Ryb3llZF0gPSB0aGlzW2tPbkRlc3Ryb3llZF0gfHwgW11cbiAgICB0aGlzW2tPbkRlc3Ryb3llZF0ucHVzaChjYWxsYmFjaylcblxuICAgIGNvbnN0IG9uRGVzdHJveWVkID0gKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tzID0gdGhpc1trT25EZXN0cm95ZWRdXG4gICAgICB0aGlzW2tPbkRlc3Ryb3llZF0gPSBudWxsXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0obnVsbCwgbnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaG91bGQgbm90IGVycm9yLlxuICAgIHRoaXNba0Rlc3Ryb3ldKGVycikudGhlbigoKSA9PiB7XG4gICAgICBxdWV1ZU1pY3JvdGFzayhvbkRlc3Ryb3llZClcbiAgICB9KVxuICB9XG5cbiAgW2tJbnRlcmNlcHRlZERpc3BhdGNoXSAob3B0cywgaGFuZGxlcikge1xuICAgIGlmICghdGhpc1trSW50ZXJjZXB0b3JzXSB8fCB0aGlzW2tJbnRlcmNlcHRvcnNdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpc1trSW50ZXJjZXB0ZWREaXNwYXRjaF0gPSB0aGlzW2tEaXNwYXRjaF1cbiAgICAgIHJldHVybiB0aGlzW2tEaXNwYXRjaF0ob3B0cywgaGFuZGxlcilcbiAgICB9XG5cbiAgICBsZXQgZGlzcGF0Y2ggPSB0aGlzW2tEaXNwYXRjaF0uYmluZCh0aGlzKVxuICAgIGZvciAobGV0IGkgPSB0aGlzW2tJbnRlcmNlcHRvcnNdLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBkaXNwYXRjaCA9IHRoaXNba0ludGVyY2VwdG9yc11baV0oZGlzcGF0Y2gpXG4gICAgfVxuICAgIHRoaXNba0ludGVyY2VwdGVkRGlzcGF0Y2hdID0gZGlzcGF0Y2hcbiAgICByZXR1cm4gZGlzcGF0Y2gob3B0cywgaGFuZGxlcilcbiAgfVxuXG4gIGRpc3BhdGNoIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgaWYgKCFoYW5kbGVyIHx8IHR5cGVvZiBoYW5kbGVyICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoYW5kbGVyIG11c3QgYmUgYW4gb2JqZWN0JylcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29wdHMgbXVzdCBiZSBhbiBvYmplY3QuJylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXNba0Rlc3Ryb3llZF0gfHwgdGhpc1trT25EZXN0cm95ZWRdKSB7XG4gICAgICAgIHRocm93IG5ldyBDbGllbnREZXN0cm95ZWRFcnJvcigpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzW2tDbG9zZWRdKSB7XG4gICAgICAgIHRocm93IG5ldyBDbGllbnRDbG9zZWRFcnJvcigpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzW2tJbnRlcmNlcHRlZERpc3BhdGNoXShvcHRzLCBoYW5kbGVyKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyLm9uRXJyb3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9uRXJyb3IgbWV0aG9kJylcbiAgICAgIH1cblxuICAgICAgaGFuZGxlci5vbkVycm9yKGVycilcblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRGlzcGF0Y2hlckJhc2VcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgbmV0ID0gcmVxdWlyZSgnbmV0JylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIENvbm5lY3RUaW1lb3V0RXJyb3IgfSA9IHJlcXVpcmUoJy4vZXJyb3JzJylcblxubGV0IHRscyAvLyBpbmNsdWRlIHRscyBjb25kaXRpb25hbGx5IHNpbmNlIGl0IGlzIG5vdCBhbHdheXMgYXZhaWxhYmxlXG5cbi8vIFRPRE86IHNlc3Npb24gcmUtdXNlIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBmaXJzdFxuLy8gY29ubmVjdGlvbiB0byByZXNvbHZlIHRoZSBzZXNzaW9uIGFuZCBtaWdodCB0aGVyZWZvcmVcbi8vIHJlc29sdmUgdGhlIHNhbWUgc2VydmVybmFtZSBtdWx0aXBsZSB0aW1lcyBldmVuIHdoZW5cbi8vIHJlLXVzZSBpcyBlbmFibGVkLlxuXG5sZXQgU2Vzc2lvbkNhY2hlXG4vLyBGSVhNRTogcmVtb3ZlIHdvcmthcm91bmQgd2hlbiB0aGUgTm9kZSBidWcgaXMgZml4ZWRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDkzNDQjaXNzdWVjb21tZW50LTE3NDE3NzYzMDhcbmlmIChnbG9iYWwuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgIXByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UpIHtcbiAgU2Vzc2lvbkNhY2hlID0gY2xhc3MgV2Vha1Nlc3Npb25DYWNoZSB7XG4gICAgY29uc3RydWN0b3IgKG1heENhY2hlZFNlc3Npb25zKSB7XG4gICAgICB0aGlzLl9tYXhDYWNoZWRTZXNzaW9ucyA9IG1heENhY2hlZFNlc3Npb25zXG4gICAgICB0aGlzLl9zZXNzaW9uQ2FjaGUgPSBuZXcgTWFwKClcbiAgICAgIHRoaXMuX3Nlc3Npb25SZWdpc3RyeSA9IG5ldyBnbG9iYWwuRmluYWxpemF0aW9uUmVnaXN0cnkoKGtleSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbkNhY2hlLnNpemUgPCB0aGlzLl9tYXhDYWNoZWRTZXNzaW9ucykge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2Vzc2lvbkNhY2hlLmdldChrZXkpXG4gICAgICAgIGlmIChyZWYgIT09IHVuZGVmaW5lZCAmJiByZWYuZGVyZWYoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5fc2Vzc2lvbkNhY2hlLmRlbGV0ZShrZXkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0IChzZXNzaW9uS2V5KSB7XG4gICAgICBjb25zdCByZWYgPSB0aGlzLl9zZXNzaW9uQ2FjaGUuZ2V0KHNlc3Npb25LZXkpXG4gICAgICByZXR1cm4gcmVmID8gcmVmLmRlcmVmKCkgOiBudWxsXG4gICAgfVxuXG4gICAgc2V0IChzZXNzaW9uS2V5LCBzZXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3Nlc3Npb25DYWNoZS5zZXQoc2Vzc2lvbktleSwgbmV3IFdlYWtSZWYoc2Vzc2lvbikpXG4gICAgICB0aGlzLl9zZXNzaW9uUmVnaXN0cnkucmVnaXN0ZXIoc2Vzc2lvbiwgc2Vzc2lvbktleSlcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIFNlc3Npb25DYWNoZSA9IGNsYXNzIFNpbXBsZVNlc3Npb25DYWNoZSB7XG4gICAgY29uc3RydWN0b3IgKG1heENhY2hlZFNlc3Npb25zKSB7XG4gICAgICB0aGlzLl9tYXhDYWNoZWRTZXNzaW9ucyA9IG1heENhY2hlZFNlc3Npb25zXG4gICAgICB0aGlzLl9zZXNzaW9uQ2FjaGUgPSBuZXcgTWFwKClcbiAgICB9XG5cbiAgICBnZXQgKHNlc3Npb25LZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uQ2FjaGUuZ2V0KHNlc3Npb25LZXkpXG4gICAgfVxuXG4gICAgc2V0IChzZXNzaW9uS2V5LCBzZXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9zZXNzaW9uQ2FjaGUuc2l6ZSA+PSB0aGlzLl9tYXhDYWNoZWRTZXNzaW9ucykge1xuICAgICAgICAvLyByZW1vdmUgdGhlIG9sZGVzdCBzZXNzaW9uXG4gICAgICAgIGNvbnN0IHsgdmFsdWU6IG9sZGVzdEtleSB9ID0gdGhpcy5fc2Vzc2lvbkNhY2hlLmtleXMoKS5uZXh0KClcbiAgICAgICAgdGhpcy5fc2Vzc2lvbkNhY2hlLmRlbGV0ZShvbGRlc3RLZXkpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3Nlc3Npb25DYWNoZS5zZXQoc2Vzc2lvbktleSwgc2Vzc2lvbilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRDb25uZWN0b3IgKHsgYWxsb3dIMiwgbWF4Q2FjaGVkU2Vzc2lvbnMsIHNvY2tldFBhdGgsIHRpbWVvdXQsIC4uLm9wdHMgfSkge1xuICBpZiAobWF4Q2FjaGVkU2Vzc2lvbnMgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIobWF4Q2FjaGVkU2Vzc2lvbnMpIHx8IG1heENhY2hlZFNlc3Npb25zIDwgMCkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21heENhY2hlZFNlc3Npb25zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIHplcm8nKVxuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHsgcGF0aDogc29ja2V0UGF0aCwgLi4ub3B0cyB9XG4gIGNvbnN0IHNlc3Npb25DYWNoZSA9IG5ldyBTZXNzaW9uQ2FjaGUobWF4Q2FjaGVkU2Vzc2lvbnMgPT0gbnVsbCA/IDEwMCA6IG1heENhY2hlZFNlc3Npb25zKVxuICB0aW1lb3V0ID0gdGltZW91dCA9PSBudWxsID8gMTBlMyA6IHRpbWVvdXRcbiAgYWxsb3dIMiA9IGFsbG93SDIgIT0gbnVsbCA/IGFsbG93SDIgOiBmYWxzZVxuICByZXR1cm4gZnVuY3Rpb24gY29ubmVjdCAoeyBob3N0bmFtZSwgaG9zdCwgcHJvdG9jb2wsIHBvcnQsIHNlcnZlcm5hbWUsIGxvY2FsQWRkcmVzcywgaHR0cFNvY2tldCB9LCBjYWxsYmFjaykge1xuICAgIGxldCBzb2NrZXRcbiAgICBpZiAocHJvdG9jb2wgPT09ICdodHRwczonKSB7XG4gICAgICBpZiAoIXRscykge1xuICAgICAgICB0bHMgPSByZXF1aXJlKCd0bHMnKVxuICAgICAgfVxuICAgICAgc2VydmVybmFtZSA9IHNlcnZlcm5hbWUgfHwgb3B0aW9ucy5zZXJ2ZXJuYW1lIHx8IHV0aWwuZ2V0U2VydmVyTmFtZShob3N0KSB8fCBudWxsXG5cbiAgICAgIGNvbnN0IHNlc3Npb25LZXkgPSBzZXJ2ZXJuYW1lIHx8IGhvc3RuYW1lXG4gICAgICBjb25zdCBzZXNzaW9uID0gc2Vzc2lvbkNhY2hlLmdldChzZXNzaW9uS2V5KSB8fCBudWxsXG5cbiAgICAgIGFzc2VydChzZXNzaW9uS2V5KVxuXG4gICAgICBzb2NrZXQgPSB0bHMuY29ubmVjdCh7XG4gICAgICAgIGhpZ2hXYXRlck1hcms6IDE2Mzg0LCAvLyBUTFMgaW4gbm9kZSBjYW4ndCBoYXZlIGJpZ2dlciBIV00gYW55d2F5Li4uXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHNlcnZlcm5hbWUsXG4gICAgICAgIHNlc3Npb24sXG4gICAgICAgIGxvY2FsQWRkcmVzcyxcbiAgICAgICAgLy8gVE9ETyhIVFRQLzIpOiBBZGQgc3VwcG9ydCBmb3IgaDJjXG4gICAgICAgIEFMUE5Qcm90b2NvbHM6IGFsbG93SDIgPyBbJ2h0dHAvMS4xJywgJ2gyJ10gOiBbJ2h0dHAvMS4xJ10sXG4gICAgICAgIHNvY2tldDogaHR0cFNvY2tldCwgLy8gdXBncmFkZSBzb2NrZXQgY29ubmVjdGlvblxuICAgICAgICBwb3J0OiBwb3J0IHx8IDQ0MyxcbiAgICAgICAgaG9zdDogaG9zdG5hbWVcbiAgICAgIH0pXG5cbiAgICAgIHNvY2tldFxuICAgICAgICAub24oJ3Nlc3Npb24nLCBmdW5jdGlvbiAoc2Vzc2lvbikge1xuICAgICAgICAgIC8vIFRPRE8gKGZpeCk6IENhbiBhIHNlc3Npb24gYmVjb21lIGludmFsaWQgb25jZSBlc3RhYmxpc2hlZD8gRG9uJ3QgdGhpbmsgc28/XG4gICAgICAgICAgc2Vzc2lvbkNhY2hlLnNldChzZXNzaW9uS2V5LCBzZXNzaW9uKVxuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoIWh0dHBTb2NrZXQsICdodHRwU29ja2V0IGNhbiBvbmx5IGJlIHNlbnQgb24gVExTIHVwZGF0ZScpXG4gICAgICBzb2NrZXQgPSBuZXQuY29ubmVjdCh7XG4gICAgICAgIGhpZ2hXYXRlck1hcms6IDY0ICogMTAyNCwgLy8gU2FtZSBhcyBub2RlanMgZnMgc3RyZWFtcy5cbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbG9jYWxBZGRyZXNzLFxuICAgICAgICBwb3J0OiBwb3J0IHx8IDgwLFxuICAgICAgICBob3N0OiBob3N0bmFtZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBTZXQgVENQIGtlZXAgYWxpdmUgb3B0aW9ucyBvbiB0aGUgc29ja2V0IGhlcmUgaW5zdGVhZCBvZiBpbiBjb25uZWN0KCkgZm9yIHRoZSBjYXNlIG9mIGFzc2lnbmluZyB0aGUgc29ja2V0XG4gICAgaWYgKG9wdGlvbnMua2VlcEFsaXZlID09IG51bGwgfHwgb3B0aW9ucy5rZWVwQWxpdmUpIHtcbiAgICAgIGNvbnN0IGtlZXBBbGl2ZUluaXRpYWxEZWxheSA9IG9wdGlvbnMua2VlcEFsaXZlSW5pdGlhbERlbGF5ID09PSB1bmRlZmluZWQgPyA2MGUzIDogb3B0aW9ucy5rZWVwQWxpdmVJbml0aWFsRGVsYXlcbiAgICAgIHNvY2tldC5zZXRLZWVwQWxpdmUodHJ1ZSwga2VlcEFsaXZlSW5pdGlhbERlbGF5KVxuICAgIH1cblxuICAgIGNvbnN0IGNhbmNlbFRpbWVvdXQgPSBzZXR1cFRpbWVvdXQoKCkgPT4gb25Db25uZWN0VGltZW91dChzb2NrZXQpLCB0aW1lb3V0KVxuXG4gICAgc29ja2V0XG4gICAgICAuc2V0Tm9EZWxheSh0cnVlKVxuICAgICAgLm9uY2UocHJvdG9jb2wgPT09ICdodHRwczonID8gJ3NlY3VyZUNvbm5lY3QnIDogJ2Nvbm5lY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbmNlbFRpbWVvdXQoKVxuXG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNvbnN0IGNiID0gY2FsbGJhY2tcbiAgICAgICAgICBjYWxsYmFjayA9IG51bGxcbiAgICAgICAgICBjYihudWxsLCB0aGlzKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2FuY2VsVGltZW91dCgpXG5cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgY29uc3QgY2IgPSBjYWxsYmFja1xuICAgICAgICAgIGNhbGxiYWNrID0gbnVsbFxuICAgICAgICAgIGNiKGVycilcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIHJldHVybiBzb2NrZXRcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXR1cFRpbWVvdXQgKG9uQ29ubmVjdFRpbWVvdXQsIHRpbWVvdXQpIHtcbiAgaWYgKCF0aW1lb3V0KSB7XG4gICAgcmV0dXJuICgpID0+IHt9XG4gIH1cblxuICBsZXQgczEgPSBudWxsXG4gIGxldCBzMiA9IG51bGxcbiAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gc2V0SW1tZWRpYXRlIGlzIGFkZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHByaW90b3Jpc2Ugc29ja2V0IGVycm9yIGV2ZW50cyBvdmVyIHRpbWVvdXRzXG4gICAgczEgPSBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgICAgLy8gV2luZG93cyBuZWVkcyBhbiBleHRyYSBzZXRJbW1lZGlhdGUgcHJvYmFibHkgZHVlIHRvIGltcGxlbWVudGF0aW9uIGRpZmZlcmVuY2VzIGluIHRoZSBzb2NrZXQgbG9naWNcbiAgICAgICAgczIgPSBzZXRJbW1lZGlhdGUoKCkgPT4gb25Db25uZWN0VGltZW91dCgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25Db25uZWN0VGltZW91dCgpXG4gICAgICB9XG4gICAgfSlcbiAgfSwgdGltZW91dClcbiAgcmV0dXJuICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgIGNsZWFySW1tZWRpYXRlKHMxKVxuICAgIGNsZWFySW1tZWRpYXRlKHMyKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uQ29ubmVjdFRpbWVvdXQgKHNvY2tldCkge1xuICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgQ29ubmVjdFRpbWVvdXRFcnJvcigpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkQ29ubmVjdG9yXG4iLCBudWxsLCBudWxsLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBrQm9keVVzZWQgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgRUUgPSByZXF1aXJlKCdldmVudHMnKVxuXG5jb25zdCByZWRpcmVjdGFibGVTdGF0dXNDb2RlcyA9IFszMDAsIDMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5jb25zdCBrQm9keSA9IFN5bWJvbCgnYm9keScpXG5cbmNsYXNzIEJvZHlBc3luY0l0ZXJhYmxlIHtcbiAgY29uc3RydWN0b3IgKGJvZHkpIHtcbiAgICB0aGlzW2tCb2R5XSA9IGJvZHlcbiAgICB0aGlzW2tCb2R5VXNlZF0gPSBmYWxzZVxuICB9XG5cbiAgYXN5bmMgKiBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdICgpIHtcbiAgICBhc3NlcnQoIXRoaXNba0JvZHlVc2VkXSwgJ2Rpc3R1cmJlZCcpXG4gICAgdGhpc1trQm9keVVzZWRdID0gdHJ1ZVxuICAgIHlpZWxkICogdGhpc1trQm9keV1cbiAgfVxufVxuXG5jbGFzcyBSZWRpcmVjdEhhbmRsZXIge1xuICBjb25zdHJ1Y3RvciAoZGlzcGF0Y2gsIG1heFJlZGlyZWN0aW9ucywgb3B0cywgaGFuZGxlcikge1xuICAgIGlmIChtYXhSZWRpcmVjdGlvbnMgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIobWF4UmVkaXJlY3Rpb25zKSB8fCBtYXhSZWRpcmVjdGlvbnMgPCAwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtYXhSZWRpcmVjdGlvbnMgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgfVxuXG4gICAgdXRpbC52YWxpZGF0ZUhhbmRsZXIoaGFuZGxlciwgb3B0cy5tZXRob2QsIG9wdHMudXBncmFkZSlcblxuICAgIHRoaXMuZGlzcGF0Y2ggPSBkaXNwYXRjaFxuICAgIHRoaXMubG9jYXRpb24gPSBudWxsXG4gICAgdGhpcy5hYm9ydCA9IG51bGxcbiAgICB0aGlzLm9wdHMgPSB7IC4uLm9wdHMsIG1heFJlZGlyZWN0aW9uczogMCB9IC8vIG9wdHMgbXVzdCBiZSBhIGNvcHlcbiAgICB0aGlzLm1heFJlZGlyZWN0aW9ucyA9IG1heFJlZGlyZWN0aW9uc1xuICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXJcbiAgICB0aGlzLmhpc3RvcnkgPSBbXVxuXG4gICAgaWYgKHV0aWwuaXNTdHJlYW0odGhpcy5vcHRzLmJvZHkpKSB7XG4gICAgICAvLyBUT0RPIChmaXgpOiBQcm92aWRlIHNvbWUgd2F5IGZvciB0aGUgdXNlciB0byBjYWNoZSB0aGUgZmlsZSB0byBlLmcuIC90bXBcbiAgICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYWdhaW4/XG4gICAgICAvLyBUT0RPIChmaXgpOiBEbyB3ZSBuZWVkIDEwMC1leHBlY3Qgc3VwcG9ydCB0byBwcm92aWRlIGEgd2F5IHRvIGRvIHRoaXMgcHJvcGVybHk/XG4gICAgICBpZiAodXRpbC5ib2R5TGVuZ3RoKHRoaXMub3B0cy5ib2R5KSA9PT0gMCkge1xuICAgICAgICB0aGlzLm9wdHMuYm9keVxuICAgICAgICAgIC5vbignZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFzc2VydChmYWxzZSlcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0cy5ib2R5LnJlYWRhYmxlRGlkUmVhZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMub3B0cy5ib2R5W2tCb2R5VXNlZF0gPSBmYWxzZVxuICAgICAgICBFRS5wcm90b3R5cGUub24uY2FsbCh0aGlzLm9wdHMuYm9keSwgJ2RhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpc1trQm9keVVzZWRdID0gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLmJvZHkgJiYgdHlwZW9mIHRoaXMub3B0cy5ib2R5LnBpcGVUbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gVE9ETyAoZml4KTogV2UgY2FuJ3QgYWNjZXNzIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIHN0YXRlXG4gICAgICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgaXQgaGFzIGJlZW4gZGlzdHVyYmVkLiBUaGlzIGlzIGp1c3RcbiAgICAgIC8vIGEgd29ya2Fyb3VuZC5cbiAgICAgIHRoaXMub3B0cy5ib2R5ID0gbmV3IEJvZHlBc3luY0l0ZXJhYmxlKHRoaXMub3B0cy5ib2R5KVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLm9wdHMuYm9keSAmJlxuICAgICAgdHlwZW9mIHRoaXMub3B0cy5ib2R5ICE9PSAnc3RyaW5nJyAmJlxuICAgICAgIUFycmF5QnVmZmVyLmlzVmlldyh0aGlzLm9wdHMuYm9keSkgJiZcbiAgICAgIHV0aWwuaXNJdGVyYWJsZSh0aGlzLm9wdHMuYm9keSlcbiAgICApIHtcbiAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSBhbGxvdyByZS11c2luZyBpdGVyYWJsZSBpZiAhdGhpcy5vcHRzLmlkZW1wb3RlbnRcbiAgICAgIC8vIG9yIHRocm91Z2ggc29tZSBvdGhlciBmbGFnP1xuICAgICAgdGhpcy5vcHRzLmJvZHkgPSBuZXcgQm9keUFzeW5jSXRlcmFibGUodGhpcy5vcHRzLmJvZHkpXG4gICAgfVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCkge1xuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuaGFuZGxlci5vbkNvbm5lY3QoYWJvcnQsIHsgaGlzdG9yeTogdGhpcy5oaXN0b3J5IH0pXG4gIH1cblxuICBvblVwZ3JhZGUgKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHNvY2tldCkge1xuICAgIHRoaXMuaGFuZGxlci5vblVwZ3JhZGUoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KVxuICB9XG5cbiAgb25FcnJvciAoZXJyb3IpIHtcbiAgICB0aGlzLmhhbmRsZXIub25FcnJvcihlcnJvcilcbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgaGVhZGVycywgcmVzdW1lLCBzdGF0dXNUZXh0KSB7XG4gICAgdGhpcy5sb2NhdGlvbiA9IHRoaXMuaGlzdG9yeS5sZW5ndGggPj0gdGhpcy5tYXhSZWRpcmVjdGlvbnMgfHwgdXRpbC5pc0Rpc3R1cmJlZCh0aGlzLm9wdHMuYm9keSlcbiAgICAgID8gbnVsbFxuICAgICAgOiBwYXJzZUxvY2F0aW9uKHN0YXR1c0NvZGUsIGhlYWRlcnMpXG5cbiAgICBpZiAodGhpcy5vcHRzLm9yaWdpbikge1xuICAgICAgdGhpcy5oaXN0b3J5LnB1c2gobmV3IFVSTCh0aGlzLm9wdHMucGF0aCwgdGhpcy5vcHRzLm9yaWdpbikpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uSGVhZGVycyhzdGF0dXNDb2RlLCBoZWFkZXJzLCByZXN1bWUsIHN0YXR1c1RleHQpXG4gICAgfVxuXG4gICAgY29uc3QgeyBvcmlnaW4sIHBhdGhuYW1lLCBzZWFyY2ggfSA9IHV0aWwucGFyc2VVUkwobmV3IFVSTCh0aGlzLmxvY2F0aW9uLCB0aGlzLm9wdHMub3JpZ2luICYmIG5ldyBVUkwodGhpcy5vcHRzLnBhdGgsIHRoaXMub3B0cy5vcmlnaW4pKSlcbiAgICBjb25zdCBwYXRoID0gc2VhcmNoID8gYCR7cGF0aG5hbWV9JHtzZWFyY2h9YCA6IHBhdGhuYW1lXG5cbiAgICAvLyBSZW1vdmUgaGVhZGVycyByZWZlcnJpbmcgdG8gdGhlIG9yaWdpbmFsIFVSTC5cbiAgICAvLyBCeSBkZWZhdWx0IGl0IGlzIEhvc3Qgb25seSwgdW5sZXNzIGl0J3MgYSAzMDMgKHNlZSBiZWxvdyksIHdoaWNoIHJlbW92ZXMgYWxzbyBhbGwgQ29udGVudC0qIGhlYWRlcnMuXG4gICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjRcbiAgICB0aGlzLm9wdHMuaGVhZGVycyA9IGNsZWFuUmVxdWVzdEhlYWRlcnModGhpcy5vcHRzLmhlYWRlcnMsIHN0YXR1c0NvZGUgPT09IDMwMywgdGhpcy5vcHRzLm9yaWdpbiAhPT0gb3JpZ2luKVxuICAgIHRoaXMub3B0cy5wYXRoID0gcGF0aFxuICAgIHRoaXMub3B0cy5vcmlnaW4gPSBvcmlnaW5cbiAgICB0aGlzLm9wdHMubWF4UmVkaXJlY3Rpb25zID0gMFxuICAgIHRoaXMub3B0cy5xdWVyeSA9IG51bGxcblxuICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjRcbiAgICAvLyBJbiBjYXNlIG9mIEhUVFAgMzAzLCBhbHdheXMgcmVwbGFjZSBtZXRob2QgdG8gYmUgZWl0aGVyIEhFQUQgb3IgR0VUXG4gICAgaWYgKHN0YXR1c0NvZGUgPT09IDMwMyAmJiB0aGlzLm9wdHMubWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAgIHRoaXMub3B0cy5tZXRob2QgPSAnR0VUJ1xuICAgICAgdGhpcy5vcHRzLmJvZHkgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgb25EYXRhIChjaHVuaykge1xuICAgIGlmICh0aGlzLmxvY2F0aW9uKSB7XG4gICAgICAvKlxuICAgICAgICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNFxuXG4gICAgICAgIFRMRFI6IHVuZGljaSBhbHdheXMgaWdub3JlcyAzeHggcmVzcG9uc2UgYm9kaWVzLlxuXG4gICAgICAgIFJlZGlyZWN0aW9uIGlzIHVzZWQgdG8gc2VydmUgdGhlIHJlcXVlc3RlZCByZXNvdXJjZSBmcm9tIGFub3RoZXIgVVJMLCBzbyBpdCBpcyBhc3N1bWVzIHRoYXRcbiAgICAgICAgbm8gYm9keSBpcyBnZW5lcmF0ZWQgKGFuZCB0aHVzIGNhbiBiZSBpZ25vcmVkKS4gRXZlbiB0aG91Z2ggZ2VuZXJhdGluZyBhIGJvZHkgaXMgbm90IHByb2hpYml0ZWQuXG5cbiAgICAgICAgRm9yIHN0YXR1cyAzMDEsIDMwMiwgMzAzLCAzMDcgYW5kIDMwOCAodGhlIGxhdHRlciBmcm9tIFJGQyA3MjM4KSwgdGhlIHNwZWNzIG1lbnRpb24gdGhhdCB0aGUgYm9keSB1c3VhbGx5XG4gICAgICAgICh3aGljaCBtZWFucyBpdCdzIG9wdGlvbmFsIGFuZCBub3QgbWFuZGF0ZWQpIGNvbnRhaW4ganVzdCBhbiBoeXBlcmxpbmsgdG8gdGhlIHZhbHVlIG9mXG4gICAgICAgIHRoZSBMb2NhdGlvbiByZXNwb25zZSBoZWFkZXIsIHNvIHRoZSBib2R5IGNhbiBiZSBpZ25vcmVkIHNhZmVseS5cblxuICAgICAgICBGb3Igc3RhdHVzIDMwMCwgd2hpY2ggaXMgXCJNdWx0aXBsZSBDaG9pY2VzXCIsIHRoZSBzcGVjIG1lbnRpb25zIGJvdGggZ2VuZXJhdGluZyBhIExvY2F0aW9uXG4gICAgICAgIHJlc3BvbnNlIGhlYWRlciBBTkQgYSByZXNwb25zZSBib2R5IHdpdGggdGhlIG90aGVyIHBvc3NpYmxlIGxvY2F0aW9uIHRvIGZvbGxvdy5cbiAgICAgICAgU2luY2UgdGhlIHNwZWMgZXhwbGljaXRpbHkgY2hvb3NlcyBub3QgdG8gc3BlY2lmeSBhIGZvcm1hdCBmb3Igc3VjaCBib2R5IGFuZCBsZWF2ZSBpdCB0b1xuICAgICAgICBzZXJ2ZXJzIGFuZCBicm93c2VycyBpbXBsZW1lbnRvcnMsIHdlIGlnbm9yZSB0aGUgYm9keSBhcyB0aGVyZSBpcyBubyBzcGVjaWZpZWQgd2F5IHRvIGV2ZW50dWFsbHkgcGFyc2UgaXQuXG4gICAgICAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRGF0YShjaHVuaylcbiAgICB9XG4gIH1cblxuICBvbkNvbXBsZXRlICh0cmFpbGVycykge1xuICAgIGlmICh0aGlzLmxvY2F0aW9uKSB7XG4gICAgICAvKlxuICAgICAgICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNFxuXG4gICAgICAgIFRMRFI6IHVuZGljaSBhbHdheXMgaWdub3JlcyAzeHggcmVzcG9uc2UgdHJhaWxlcnMgYXMgdGhleSBhcmUgbm90IGV4cGVjdGVkIGluIGNhc2Ugb2YgcmVkaXJlY3Rpb25zXG4gICAgICAgIGFuZCBuZWl0aGVyIGFyZSB1c2VmdWwgaWYgcHJlc2VudC5cblxuICAgICAgICBTZWUgY29tbWVudCBvbiBvbkRhdGEgbWV0aG9kIGFib3ZlIGZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9ucy5cbiAgICAgICovXG5cbiAgICAgIHRoaXMubG9jYXRpb24gPSBudWxsXG4gICAgICB0aGlzLmFib3J0ID0gbnVsbFxuXG4gICAgICB0aGlzLmRpc3BhdGNoKHRoaXMub3B0cywgdGhpcylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVyLm9uQ29tcGxldGUodHJhaWxlcnMpXG4gICAgfVxuICB9XG5cbiAgb25Cb2R5U2VudCAoY2h1bmspIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyLm9uQm9keVNlbnQpIHtcbiAgICAgIHRoaXMuaGFuZGxlci5vbkJvZHlTZW50KGNodW5rKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2F0aW9uIChzdGF0dXNDb2RlLCBoZWFkZXJzKSB7XG4gIGlmIChyZWRpcmVjdGFibGVTdGF0dXNDb2Rlcy5pbmRleE9mKHN0YXR1c0NvZGUpID09PSAtMSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBpZiAoaGVhZGVyc1tpXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgIHJldHVybiBoZWFkZXJzW2kgKyAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC40XG5mdW5jdGlvbiBzaG91bGRSZW1vdmVIZWFkZXIgKGhlYWRlciwgcmVtb3ZlQ29udGVudCwgdW5rbm93bk9yaWdpbikge1xuICBpZiAoaGVhZGVyLmxlbmd0aCA9PT0gNCkge1xuICAgIHJldHVybiB1dGlsLmhlYWRlck5hbWVUb1N0cmluZyhoZWFkZXIpID09PSAnaG9zdCdcbiAgfVxuICBpZiAocmVtb3ZlQ29udGVudCAmJiB1dGlsLmhlYWRlck5hbWVUb1N0cmluZyhoZWFkZXIpLnN0YXJ0c1dpdGgoJ2NvbnRlbnQtJykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmICh1bmtub3duT3JpZ2luICYmIChoZWFkZXIubGVuZ3RoID09PSAxMyB8fCBoZWFkZXIubGVuZ3RoID09PSA2IHx8IGhlYWRlci5sZW5ndGggPT09IDE5KSkge1xuICAgIGNvbnN0IG5hbWUgPSB1dGlsLmhlYWRlck5hbWVUb1N0cmluZyhoZWFkZXIpXG4gICAgcmV0dXJuIG5hbWUgPT09ICdhdXRob3JpemF0aW9uJyB8fCBuYW1lID09PSAnY29va2llJyB8fCBuYW1lID09PSAncHJveHktYXV0aG9yaXphdGlvbidcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjRcbmZ1bmN0aW9uIGNsZWFuUmVxdWVzdEhlYWRlcnMgKGhlYWRlcnMsIHJlbW92ZUNvbnRlbnQsIHVua25vd25PcmlnaW4pIHtcbiAgY29uc3QgcmV0ID0gW11cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGlmICghc2hvdWxkUmVtb3ZlSGVhZGVyKGhlYWRlcnNbaV0sIHJlbW92ZUNvbnRlbnQsIHVua25vd25PcmlnaW4pKSB7XG4gICAgICAgIHJldC5wdXNoKGhlYWRlcnNbaV0sIGhlYWRlcnNbaSArIDFdKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChoZWFkZXJzICYmIHR5cGVvZiBoZWFkZXJzID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7XG4gICAgICBpZiAoIXNob3VsZFJlbW92ZUhlYWRlcihrZXksIHJlbW92ZUNvbnRlbnQsIHVua25vd25PcmlnaW4pKSB7XG4gICAgICAgIHJldC5wdXNoKGtleSwgaGVhZGVyc1trZXldKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoaGVhZGVycyA9PSBudWxsLCAnaGVhZGVycyBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheScpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlZGlyZWN0SGFuZGxlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBSZWRpcmVjdEhhbmRsZXIgPSByZXF1aXJlKCcuLi9oYW5kbGVyL1JlZGlyZWN0SGFuZGxlcicpXG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IgKHsgbWF4UmVkaXJlY3Rpb25zOiBkZWZhdWx0TWF4UmVkaXJlY3Rpb25zIH0pIHtcbiAgcmV0dXJuIChkaXNwYXRjaCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBJbnRlcmNlcHQgKG9wdHMsIGhhbmRsZXIpIHtcbiAgICAgIGNvbnN0IHsgbWF4UmVkaXJlY3Rpb25zID0gZGVmYXVsdE1heFJlZGlyZWN0aW9ucyB9ID0gb3B0c1xuXG4gICAgICBpZiAoIW1heFJlZGlyZWN0aW9ucykge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2gob3B0cywgaGFuZGxlcilcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVkaXJlY3RIYW5kbGVyID0gbmV3IFJlZGlyZWN0SGFuZGxlcihkaXNwYXRjaCwgbWF4UmVkaXJlY3Rpb25zLCBvcHRzLCBoYW5kbGVyKVxuICAgICAgb3B0cyA9IHsgLi4ub3B0cywgbWF4UmVkaXJlY3Rpb25zOiAwIH0gLy8gU3RvcCBzdWIgZGlzcGF0Y2hlciBmcm9tIGFsc28gcmVkaXJlY3RpbmcuXG4gICAgICByZXR1cm4gZGlzcGF0Y2gob3B0cywgcmVkaXJlY3RIYW5kbGVyKVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3JcbiIsICJtb2R1bGUuZXhwb3J0cyA9ICdBR0Z6YlFFQUFBQUJNQWhnQVg4QmYyQURmMzkvQVg5Z0JIOS9mMzhCZjJBQUFHQURmMzkvQUdBQmZ3QmdBbjkvQUdBR2YzOS9mMzkvQUFMTEFRZ0RaVzUyR0hkaGMyMWZiMjVmYUdWaFpHVnljMTlqYjIxd2JHVjBaUUFDQTJWdWRoVjNZWE50WDI5dVgyMWxjM05oWjJWZlltVm5hVzRBQUFObGJuWUxkMkZ6YlY5dmJsOTFjbXdBQVFObGJuWU9kMkZ6YlY5dmJsOXpkR0YwZFhNQUFRTmxibllVZDJGemJWOXZibDlvWldGa1pYSmZabWxsYkdRQUFRTmxibllVZDJGemJWOXZibDlvWldGa1pYSmZkbUZzZFdVQUFRTmxibllNZDJGemJWOXZibDlpYjJSNUFBRURaVzUyR0hkaGMyMWZiMjVmYldWemMyRm5aVjlqYjIxd2JHVjBaUUFBQTBaRkF3TUVBQUFGQUFBQUFBQUFCUUVGQUFVRkJRQUFCZ0FBQUFBR0JnWUdBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJBQUFCQVFjQUFBVUZBd0FCQkFVQmNBRVNFZ1VEQVFBQ0JnZ0Jmd0ZCZ05RRUN3ZlJCU0lHYldWdGIzSjVBZ0FMWDJsdWFYUnBZV3hwZW1VQUNSbGZYMmx1WkdseVpXTjBYMloxYm1OMGFXOXVYM1JoWW14bEFRQUxiR3hvZEhSd1gybHVhWFFBQ2hoc2JHaDBkSEJmYzJodmRXeGtYMnRsWlhCZllXeHBkbVVBUVF4c2JHaDBkSEJmWVd4c2IyTUFEQVp0WVd4c2IyTUFSZ3RzYkdoMGRIQmZabkpsWlFBTkJHWnlaV1VBU0E5c2JHaDBkSEJmWjJWMFgzUjVjR1VBRGhWc2JHaDBkSEJmWjJWMFgyaDBkSEJmYldGcWIzSUFEeFZzYkdoMGRIQmZaMlYwWDJoMGRIQmZiV2x1YjNJQUVCRnNiR2gwZEhCZloyVjBYMjFsZEdodlpBQVJGbXhzYUhSMGNGOW5aWFJmYzNSaGRIVnpYMk52WkdVQUVoSnNiR2gwZEhCZloyVjBYM1Z3WjNKaFpHVUFFd3hzYkdoMGRIQmZjbVZ6WlhRQUZBNXNiR2gwZEhCZlpYaGxZM1YwWlFBVkZHeHNhSFIwY0Y5elpYUjBhVzVuYzE5cGJtbDBBQllOYkd4b2RIUndYMlpwYm1semFBQVhER3hzYUhSMGNGOXdZWFZ6WlFBWURXeHNhSFIwY0Y5eVpYTjFiV1VBR1J0c2JHaDBkSEJmY21WemRXMWxYMkZtZEdWeVgzVndaM0poWkdVQUdoQnNiR2gwZEhCZloyVjBYMlZ5Y201dkFCc1hiR3hvZEhSd1gyZGxkRjlsY25KdmNsOXlaV0Z6YjI0QUhCZHNiR2gwZEhCZmMyVjBYMlZ5Y205eVgzSmxZWE52YmdBZEZHeHNhSFIwY0Y5blpYUmZaWEp5YjNKZmNHOXpBQjRSYkd4b2RIUndYMlZ5Y201dlgyNWhiV1VBSHhKc2JHaDBkSEJmYldWMGFHOWtYMjVoYldVQUlCSnNiR2gwZEhCZmMzUmhkSFZ6WDI1aGJXVUFJUnBzYkdoMGRIQmZjMlYwWDJ4bGJtbGxiblJmYUdWaFpHVnljd0FpSVd4c2FIUjBjRjl6WlhSZmJHVnVhV1Z1ZEY5amFIVnVhMlZrWDJ4bGJtZDBhQUFqSFd4c2FIUjBjRjl6WlhSZmJHVnVhV1Z1ZEY5clpXVndYMkZzYVhabEFDUWtiR3hvZEhSd1gzTmxkRjlzWlc1cFpXNTBYM1J5WVc1elptVnlYMlZ1WTI5a2FXNW5BQ1VZYkd4b2RIUndYMjFsYzNOaFoyVmZibVZsWkhOZlpXOW1BRDhKRndFQVFRRUxFUUVDQXdRRkN3WUhOVGszTVM4dEp5c3BDc0xnQWtVQ0FBc0lBQkNJZ0lDQUFBc1pBQ0FBRU1LQWdJQUFHaUFBSUFJMkFqZ2dBQ0FCT2dBb0N4d0FJQUFnQUM4Qk1pQUFMUUF1SUFBUXdZQ0FnQUFRZ0lDQWdBQUxLZ0VCZjBIQUFCREdnSUNBQUNJQkVNS0FnSUFBR2lBQlFZQ0lnSUFBTmdJNElBRWdBRG9BS0NBQkN3b0FJQUFReUlDQWdBQUxCd0FnQUMwQUtBc0hBQ0FBTFFBcUN3Y0FJQUF0QUNzTEJ3QWdBQzBBS1FzSEFDQUFMd0V5Q3djQUlBQXRBQzRMUlFFRWZ5QUFLQUlZSVFFZ0FDMEFMU0VDSUFBdEFDZ2hBeUFBS0FJNElRUWdBQkRDZ0lDQUFCb2dBQ0FFTmdJNElBQWdBem9BS0NBQUlBSTZBQzBnQUNBQk5nSVlDeEVBSUFBZ0FTQUJJQUpxRU1PQWdJQUFDeEFBSUFCQkFFSGNBQkRNZ0lDQUFCb0xad0VCZjBFQUlRRUNRQ0FBS0FJTURRQUNRQUpBQWtBQ1FDQUFMUUF2RGdNQkFBTUNDeUFBS0FJNElnRkZEUUFnQVNnQ0xDSUJSUTBBSUFBZ0FSR0FnSUNBQUFBaUFRMERDMEVBRHdzUXlvQ0FnQUFBQ3lBQVFjT1dnSUFBTmdJUVFRNGhBUXNnQVFzZUFBSkFJQUFvQWd3TkFDQUFRZEdiZ0lBQU5nSVFJQUJCRlRZQ0RBc0xGZ0FDUUNBQUtBSU1RUlZIRFFBZ0FFRUFOZ0lNQ3dzV0FBSkFJQUFvQWd4QkZrY05BQ0FBUVFBMkFnd0xDd2NBSUFBb0Fnd0xCd0FnQUNnQ0VBc0pBQ0FBSUFFMkFoQUxCd0FnQUNnQ0ZBc2lBQUpBSUFCQkpFa05BQkRLZ0lDQUFBQUxJQUJCQW5SQm9MT0FnQUJxS0FJQUN5SUFBa0FnQUVFdVNRMEFFTXFBZ0lBQUFBc2dBRUVDZEVHd3RJQ0FBR29vQWdBTDdnc0JBWDlCNjZpQWdBQWhBUUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQm5IOXFEdlFEWTJJQUFXRmhZV0ZoWVFJREJBVmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoQmdjSUNRb0xEQTBPRDJGaFlXRmhFR0ZoWVdGaFlXRmhZV0ZoRVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVJJVEZCVVdGeGdaR2h0aFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaEhCMGVIeUFoSWlNa0pTWW5LQ2txS3l3dExpOHdNVEl6TkRVMllUYzRPVHBoWVdGaFlXRmhZVHRoWVdFOFlXRmhZVDArUDJGaFlXRmhZV0ZoUUdGaFFXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMkZoWVdGaFlXRmhWRlZXVjFoWldsdGhYRjFoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGZVlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFgyQmhDMEhocDRDQUFBOExRYVNoZ0lBQUR3dEJ5NnlBZ0FBUEMwSCtzWUNBQUE4TFFjQ2tnSUFBRHd0QnE2U0FnQUFQQzBHTnFJQ0FBQThMUWVLbWdJQUFEd3RCZ0xDQWdBQVBDMEc1cjRDQUFBOExRZGVrZ0lBQUR3dEI3NStBZ0FBUEMwSGhuNENBQUE4TFFmcWZnSUFBRHd0QjhxQ0FnQUFQQzBHb3I0Q0FBQThMUWE2eWdJQUFEd3RCaUxDQWdBQVBDMEhzcDRDQUFBOExRWUtpZ0lBQUR3dEJqcDJBZ0FBUEMwSFFyb0NBQUE4TFFjcWpnSUFBRHd0QnhiS0FnQUFQQzBIZm5JQ0FBQThMUWRLY2dJQUFEd3RCeEtDQWdBQVBDMEhYb0lDQUFBOExRYUtmZ0lBQUR3dEI3YTZBZ0FBUEMwR3JzSUNBQUE4TFFkU2xnSUFBRHd0QnpLNkFnQUFQQzBINnJvQ0FBQThMUWZ5cmdJQUFEd3RCMHJDQWdBQVBDMEh4bllDQUFBOExRYnVnZ0lBQUR3dEI5NnVBZ0FBUEMwR1FzWUNBQUE4TFFkZXhnSUFBRHd0Qm9xMkFnQUFQQzBIVXA0Q0FBQThMUWVDcmdJQUFEd3RCbjZ5QWdBQVBDMEhyc1lDQUFBOExRZFdmZ0lBQUR3dEJ5ckdBZ0FBUEMwSGVwWUNBQUE4TFFkU2VnSUFBRHd0QjlKeUFnQUFQQzBHbnNvQ0FBQThMUWJHZGdJQUFEd3RCb0oyQWdBQVBDMEc1c1lDQUFBOExRYnl3Z0lBQUR3dEJrcUdBZ0FBUEMwR3pwb0NBQUE4TFFlbXNnSUFBRHd0QnJKNkFnQUFQQzBIVXE0Q0FBQThMUWZlbWdJQUFEd3RCZ0thQWdBQVBDMEd3b1lDQUFBOExRZjZlZ0lBQUR3dEJqYU9BZ0FBUEMwR0pyWUNBQUE4TFFmZWlnSUFBRHd0Qm9MR0FnQUFQQzBHdW40Q0FBQThMUWNhbGdJQUFEd3RCNko2QWdBQVBDMEdUb29DQUFBOExRY0t2Z0lBQUR3dEJ3NTJBZ0FBUEMwR0xySUNBQUE4TFFlR2RnSUFBRHd0QmphK0FnQUFQQzBIcW9ZQ0FBQThMUWJTdGdJQUFEd3RCMHErQWdBQVBDMEhmc29DQUFBOExRZEt5Z0lBQUR3dEI4TENBZ0FBUEMwR3Bvb0NBQUE4TFFmbWpnSUFBRHd0Qm1aNkFnQUFQQzBHMXJJQ0FBQThMUVp1d2dJQUFEd3RCa3JLQWdBQVBDMEcycTRDQUFBOExRY0tpZ0lBQUR3dEIrTEtBZ0FBUEMwR2VwWUNBQUE4TFFkQ2lnSUFBRHd0QnVwNkFnQUFQQzBHQm5vQ0FBQThMRU1xQWdJQUFBQXRCMXFHQWdBQWhBUXNnQVFzV0FDQUFJQUF0QUMxQi9nRnhJQUZCQUVkeU9nQXRDeGtBSUFBZ0FDMEFMVUg5QVhFZ0FVRUFSMEVCZEhJNkFDMExHUUFnQUNBQUxRQXRRZnNCY1NBQlFRQkhRUUowY2pvQUxRc1pBQ0FBSUFBdEFDMUI5d0Z4SUFGQkFFZEJBM1J5T2dBdEN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWdBaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxTUUVDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ0JDSUVSUTBBSUFBZ0FTQUNJQUZySUFRUmdZQ0FnQUFBSWdOQmYwY05BQ0FBUWNhUmdJQUFOZ0lRUVJnaEF3c2dBd3N1QVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSXdJZ1JGRFFBZ0FDQUVFWUNBZ0lBQUFDRURDeUFEQzBrQkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BZ2dpQkVVTkFDQUFJQUVnQWlBQmF5QUVFWUdBZ0lBQUFDSURRWDlIRFFBZ0FFSDJpb0NBQURZQ0VFRVlJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDTkNJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3dEpBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJTUlnUkZEUUFnQUNBQklBSWdBV3NnQkJHQmdJQ0FBQUFpQTBGL1J3MEFJQUJCN1pxQWdBQTJBaEJCR0NFREN5QURDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FqZ2lCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MU1FFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NFQ0lFUlEwQUlBQWdBU0FDSUFGcklBUVJnWUNBZ0FBQUlnTkJmMGNOQUNBQVFaV1FnSUFBTmdJUVFSZ2hBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUk4SWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREMwa0JBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWhRaUJFVU5BQ0FBSUFFZ0FpQUJheUFFRVlHQWdJQUFBQ0lEUVg5SERRQWdBRUdxbTRDQUFEWUNFRUVZSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ1FDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RKQVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSVlJZ1JGRFFBZ0FDQUJJQUlnQVdzZ0JCR0JnSUNBQUFBaUEwRi9SdzBBSUFCQjdaT0FnQUEyQWhCQkdDRURDeUFEQ3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9Ba1FpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDSkNJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3c3VBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJc0lnUkZEUUFnQUNBRUVZQ0FnSUFBQUNFREN5QURDMGtCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FpZ2lCRVVOQUNBQUlBRWdBaUFCYXlBRUVZR0FnSUFBQUNJRFFYOUhEUUFnQUVIMmlJQ0FBRFlDRUVFWUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NVQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXd0SkFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUljSWdSRkRRQWdBQ0FCSUFJZ0FXc2dCQkdCZ0lDQUFBQWlBMEYvUncwQUlBQkJ3cG1BZ0FBMkFoQkJHQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWtnaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxTUUVDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ0lDSUVSUTBBSUFBZ0FTQUNJQUZySUFRUmdZQ0FnQUFBSWdOQmYwY05BQ0FBUVpTVWdJQUFOZ0lRUVJnaEF3c2dBd3N1QVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSk1JZ1JGRFFBZ0FDQUVFWUNBZ0lBQUFDRURDeUFEQ3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BbFFpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDV0NJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3dEZBUUYvQWtBQ1FDQUFMd0V3UVJSeFFSUkhEUUJCQVNFRElBQXRBQ2hCQVVZTkFTQUFMd0V5UWVVQVJpRUREQUVMSUFBdEFDbEJCVVloQXdzZ0FDQURPZ0F1UVFBTC9nRUJBMzlCQVNFREFrQWdBQzhCTUNJRVFRaHhEUUFnQUNrRElFSUFVaUVEQ3dKQUFrQWdBQzBBTGtVTkFFRUJJUVVnQUMwQUtVRUZSZzBCUVFFaEJTQUVRY0FBY1VVZ0EzRkJBVWNOQVF0QkFDRUZJQVJCd0FCeERRQkJBaUVGSUFSQi8vOERjU0lEUVFoeERRQUNRQ0FEUVlBRWNVVU5BQUpBSUFBdEFDaEJBVWNOQUNBQUxRQXRRUXB4RFFCQkJROExRUVFQQ3dKQUlBTkJJSEVOQUFKQUlBQXRBQ2hCQVVZTkFDQUFMd0V5UWYvL0EzRWlBRUdjZjJwQjVBQkpEUUFnQUVITUFVWU5BQ0FBUWJBQ1JnMEFRUVFoQlNBRVFTaHhSUTBDSUFOQmlBUnhRWUFFUmcwQ0MwRUFEd3RCQUVFRElBQXBBeUJRR3lFRkN5QUZDMklCQW45QkFDRUJBa0FnQUMwQUtFRUJSZzBBSUFBdkFUSkIvLzhEY1NJQ1FaeC9ha0hrQUVrTkFDQUNRY3dCUmcwQUlBSkJzQUpHRFFBZ0FDOEJNQ0lBUWNBQWNRMEFRUUVoQVNBQVFZZ0VjVUdBQkVZTkFDQUFRU2h4UlNFQkN5QUJDNmNCQVFOL0FrQUNRQUpBSUFBdEFDcEZEUUFnQUMwQUswVU5BRUVBSVFNZ0FDOEJNQ0lFUVFKeFJRMEJEQUlMUVFBaEF5QUFMd0V3SWdSQkFYRkZEUUVMUVFFaEF5QUFMUUFvUVFGR0RRQWdBQzhCTWtILy93TnhJZ1ZCbkg5cVFlUUFTUTBBSUFWQnpBRkdEUUFnQlVHd0FrWU5BQ0FFUWNBQWNRMEFRUUFoQXlBRVFZZ0VjVUdBQkVZTkFDQUVRU2h4UVFCSElRTUxJQUJCQURzQk1DQUFRUUE2QUM4Z0F3dVpBUUVDZndKQUFrQUNRQ0FBTFFBcVJRMEFJQUF0QUN0RkRRQkJBQ0VCSUFBdkFUQWlBa0VDY1VVTkFRd0NDMEVBSVFFZ0FDOEJNQ0lDUVFGeFJRMEJDMEVCSVFFZ0FDMEFLRUVCUmcwQUlBQXZBVEpCLy84RGNTSUFRWngvYWtIa0FFa05BQ0FBUWN3QlJnMEFJQUJCc0FKR0RRQWdBa0hBQUhFTkFFRUFJUUVnQWtHSUJIRkJnQVJHRFFBZ0FrRW9jVUVBUnlFQkN5QUJDMWtBSUFCQkdHcENBRGNEQUNBQVFnQTNBd0FnQUVFNGFrSUFOd01BSUFCQk1HcENBRGNEQUNBQVFTaHFRZ0EzQXdBZ0FFRWdha0lBTndNQUlBQkJFR3BDQURjREFDQUFRUWhxUWdBM0F3QWdBRUhkQVRZQ0hFRUFDM3NCQVg4Q1FDQUFLQUlNSWdNTkFBSkFJQUFvQWdSRkRRQWdBQ0FCTmdJRUN3SkFJQUFnQVNBQ0VNU0FnSUFBSWdNTkFDQUFLQUlNRHdzZ0FDQUROZ0ljUVFBaEF5QUFLQUlFSWdGRkRRQWdBQ0FCSUFJZ0FDZ0NDQkdCZ0lDQUFBQWlBVVVOQUNBQUlBSTJBaFFnQUNBQk5nSU1JQUVoQXdzZ0F3dms4d0VERG44RGZnUi9JNENBZ0lBQVFSQnJJZ01rZ0lDQWdBQWdBU0VFSUFFaEJTQUJJUVlnQVNFSElBRWhDQ0FCSVFrZ0FTRUtJQUVoQ3lBQklRd2dBU0VOSUFFaERpQUJJUThDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ0hDSVFRWDlxRHQwQjJnRUIyUUVDQXdRRkJnY0lDUW9MREEwTzJBRVBFTmNCRVJMV0FSTVVGUllYR0JrYUcrQUIzd0VjSFI3VkFSOGdJU0lqSkNYVUFTWW5LQ2txS3l6VEFkSUJMUzdSQWRBQkx6QXhNak0wTlRZM09EazZPenc5UGo5QVFVSkRSRVZHMndGSFNFbEt6d0hPQVV2TkFVek1BVTFPVDFCUlVsTlVWVlpYV0ZsYVcxeGRYbDlnWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHA3ZkgxK2Y0QUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0hMQWNvQnVBSEpBYmtCeUFHNkFic0J2QUc5QWI0QnZ3SEFBY0VCd2dIREFjUUJ4UUhHQVFEY0FRdEJBQ0VRRE1ZQkMwRU9JUkFNeFFFTFFRMGhFQXpFQVF0QkR5RVFETU1CQzBFUUlSQU13Z0VMUVJNaEVBekJBUXRCRkNFUURNQUJDMEVWSVJBTXZ3RUxRUlloRUF5K0FRdEJGeUVRREwwQkMwRVlJUkFNdkFFTFFSa2hFQXk3QVF0QkdpRVFETG9CQzBFYklSQU11UUVMUVJ3aEVBeTRBUXRCQ0NFUURMY0JDMEVkSVJBTXRnRUxRU0FoRUF5MUFRdEJIeUVRRExRQkMwRUhJUkFNc3dFTFFTRWhFQXl5QVF0QklpRVFETEVCQzBFZUlSQU1zQUVMUVNNaEVBeXZBUXRCRWlFUURLNEJDMEVSSVJBTXJRRUxRU1FoRUF5c0FRdEJKU0VRREtzQkMwRW1JUkFNcWdFTFFTY2hFQXlwQVF0Qnd3RWhFQXlvQVF0QktTRVFES2NCQzBFcklSQU1wZ0VMUVN3aEVBeWxBUXRCTFNFUURLUUJDMEV1SVJBTW93RUxRUzhoRUF5aUFRdEJ4QUVoRUF5aEFRdEJNQ0VRREtBQkMwRTBJUkFNbndFTFFRd2hFQXllQVF0Qk1TRVFESjBCQzBFeUlSQU1uQUVMUVRNaEVBeWJBUXRCT1NFUURKb0JDMEUxSVJBTW1RRUxRY1VCSVJBTW1BRUxRUXNoRUF5WEFRdEJPaUVRREpZQkMwRTJJUkFNbFFFTFFRb2hFQXlVQVF0Qk55RVFESk1CQzBFNElSQU1rZ0VMUVR3aEVBeVJBUXRCT3lFUURKQUJDMEU5SVJBTWp3RUxRUWtoRUF5T0FRdEJLQ0VRREkwQkMwRStJUkFNakFFTFFUOGhFQXlMQVF0QndBQWhFQXlLQVF0QndRQWhFQXlKQVF0QndnQWhFQXlJQVF0Qnd3QWhFQXlIQVF0QnhBQWhFQXlHQVF0QnhRQWhFQXlGQVF0QnhnQWhFQXlFQVF0QktpRVFESU1CQzBISEFDRVFESUlCQzBISUFDRVFESUVCQzBISkFDRVFESUFCQzBIS0FDRVFESDhMUWNzQUlSQU1mZ3RCelFBaEVBeDlDMEhNQUNFUURId0xRYzRBSVJBTWV3dEJ6d0FoRUF4NkMwSFFBQ0VRREhrTFFkRUFJUkFNZUF0QjBnQWhFQXgzQzBIVEFDRVFESFlMUWRRQUlSQU1kUXRCMWdBaEVBeDBDMEhWQUNFUURITUxRUVloRUF4eUMwSFhBQ0VRREhFTFFRVWhFQXh3QzBIWUFDRVFERzhMUVFRaEVBeHVDMEhaQUNFUURHMExRZG9BSVJBTWJBdEIyd0FoRUF4ckMwSGNBQ0VRREdvTFFRTWhFQXhwQzBIZEFDRVFER2dMUWQ0QUlSQU1ad3RCM3dBaEVBeG1DMEhoQUNFUURHVUxRZUFBSVJBTVpBdEI0Z0FoRUF4akMwSGpBQ0VRREdJTFFRSWhFQXhoQzBIa0FDRVFER0FMUWVVQUlSQU1Yd3RCNWdBaEVBeGVDMEhuQUNFUURGMExRZWdBSVJBTVhBdEI2UUFoRUF4YkMwSHFBQ0VRREZvTFFlc0FJUkFNV1F0QjdBQWhFQXhZQzBIdEFDRVFERmNMUWU0QUlSQU1WZ3RCN3dBaEVBeFZDMEh3QUNFUURGUUxRZkVBSVJBTVV3dEI4Z0FoRUF4U0MwSHpBQ0VRREZFTFFmUUFJUkFNVUF0QjlRQWhFQXhQQzBIMkFDRVFERTRMUWZjQUlSQU1UUXRCK0FBaEVBeE1DMEg1QUNFUURFc0xRZm9BSVJBTVNndEIrd0FoRUF4SkMwSDhBQ0VRREVnTFFmMEFJUkFNUnd0Qi9nQWhFQXhHQzBIL0FDRVFERVVMUVlBQklSQU1SQXRCZ1FFaEVBeERDMEdDQVNFUURFSUxRWU1CSVJBTVFRdEJoQUVoRUF4QUMwR0ZBU0VRREQ4TFFZWUJJUkFNUGd0Qmh3RWhFQXc5QzBHSUFTRVFERHdMUVlrQklSQU1Pd3RCaWdFaEVBdzZDMEdMQVNFUUREa0xRWXdCSVJBTU9BdEJqUUVoRUF3M0MwR09BU0VRRERZTFFZOEJJUkFNTlF0QmtBRWhFQXcwQzBHUkFTRVFERE1MUVpJQklSQU1NZ3RCa3dFaEVBd3hDMEdVQVNFUUREQUxRWlVCSVJBTUx3dEJsZ0VoRUF3dUMwR1hBU0VRREMwTFFaZ0JJUkFNTEF0Qm1RRWhFQXdyQzBHYUFTRVFEQ29MUVpzQklSQU1LUXRCbkFFaEVBd29DMEdkQVNFUURDY0xRWjRCSVJBTUpndEJud0VoRUF3bEMwR2dBU0VRRENRTFFhRUJJUkFNSXd0Qm9nRWhFQXdpQzBHakFTRVFEQ0VMUWFRQklSQU1JQXRCcFFFaEVBd2ZDMEdtQVNFUURCNExRYWNCSVJBTUhRdEJxQUVoRUF3Y0MwR3BBU0VRREJzTFFhb0JJUkFNR2d0QnF3RWhFQXdaQzBHc0FTRVFEQmdMUWEwQklSQU1Gd3RCcmdFaEVBd1dDMEVCSVJBTUZRdEJyd0VoRUF3VUMwR3dBU0VRREJNTFFiRUJJUkFNRWd0QnN3RWhFQXdSQzBHeUFTRVFEQkFMUWJRQklSQU1Ed3RCdFFFaEVBd09DMEcyQVNFUURBMExRYmNCSVJBTURBdEJ1QUVoRUF3TEMwRzVBU0VRREFvTFFib0JJUkFNQ1F0QnV3RWhFQXdJQzBIR0FTRVFEQWNMUWJ3QklSQU1CZ3RCdlFFaEVBd0ZDMEcrQVNFUURBUUxRYjhCSVJBTUF3dEJ3QUVoRUF3Q0MwSENBU0VRREFFTFFjRUJJUkFMQTBBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQVFEc2NCQUFFQ0F3UUZCZ2NJQ1FvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZUh5QWhJeVVvUDBCQlJFVkdSMGhKU2t0TVRVOVFVVkpUM2dOWFdWdGNYV0JpWldabmFHbHFhMnh0YjNCeGNuTjBkWFozZUhsNmUzeDlmb0FCZ2dHRkFZWUJod0dKQVlzQmpBR05BWTRCandHUUFaRUJsQUdWQVpZQmx3R1lBWmtCbWdHYkFad0JuUUdlQVo4Qm9BR2hBYUlCb3dHa0FhVUJwZ0duQWFnQnFRR3FBYXNCckFHdEFhNEJyd0d3QWJFQnNnR3pBYlFCdFFHMkFiY0J1QUc1QWJvQnV3RzhBYjBCdmdHL0FjQUJ3UUhDQWNNQnhBSEZBY1lCeHdISUFja0J5Z0hMQWN3QnpRSE9BYzhCMEFIUkFkSUIwd0hVQWRVQjFnSFhBZGdCMlFIYUFkc0IzQUhkQWQ0QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCN0FIdEFlNEI3d0h3QWZFQjhnSHpBWmtDcEFLd0F2NEMvZ0lMSUFFaUJDQUNSdzN6QVVIZEFTRVFEUDhEQ3lBQkloQWdBa2NOM1FGQnd3RWhFQXorQXdzZ0FTSUJJQUpIRFpBQlFmY0FJUkFNL1FNTElBRWlBU0FDUncyR0FVSHZBQ0VRRFB3REN5QUJJZ0VnQWtjTmYwSHFBQ0VRRFBzREN5QUJJZ0VnQWtjTmUwSG9BQ0VRRFBvREN5QUJJZ0VnQWtjTmVFSG1BQ0VRRFBrREN5QUJJZ0VnQWtjTkdrRVlJUkFNK0FNTElBRWlBU0FDUncwVVFSSWhFQXozQXdzZ0FTSUJJQUpIRFZsQnhRQWhFQXoyQXdzZ0FTSUJJQUpIRFVwQlB5RVFEUFVEQ3lBQklnRWdBa2NOU0VFOElSQU05QU1MSUFFaUFTQUNSdzFCUVRFaEVBenpBd3NnQUMwQUxrRUJSZzNyQXd5SEFnc2dBQ0FCSWdFZ0FoREFnSUNBQUVFQlJ3M21BU0FBUWdBM0F5QU01d0VMSUFBZ0FTSUJJQUlRdElDQWdBQWlFQTNuQVNBQklRRU05UUlMQWtBZ0FTSUJJQUpIRFFCQkJpRVFEUEFEQ3lBQUlBRkJBV29pQVNBQ0VMdUFnSUFBSWhBTjZBRWdBU0VCRERFTElBQkNBRGNESUVFU0lSQU0xUU1MSUFFaUVDQUNSdzByUVIwaEVBenRBd3NDUUNBQklnRWdBa1lOQUNBQlFRRnFJUUZCRUNFUUROUURDMEVISVJBTTdBTUxJQUJDQUNBQUtRTWdJaEVnQWlBQkloQnJyU0lTZlNJVElCTWdFVlliTndNZ0lCRWdFbFlpRkVVTjVRRkJDQ0VRRE9zREN3SkFJQUVpQVNBQ1JnMEFJQUJCaVlDQWdBQTJBZ2dnQUNBQk5nSUVJQUVoQVVFVUlSQU0wZ01MUVFraEVBenFBd3NnQVNFQklBQXBBeUJRRGVRQklBRWhBUXp5QWdzQ1FDQUJJZ0VnQWtjTkFFRUxJUkFNNlFNTElBQWdBVUVCYWlJQklBSVF0b0NBZ0FBaUVBM2xBU0FCSVFFTThnSUxJQUFnQVNJQklBSVF1SUNBZ0FBaUVBM2xBU0FCSVFFTThnSUxJQUFnQVNJQklBSVF1SUNBZ0FBaUVBM21BU0FCSVFFTURRc2dBQ0FCSWdFZ0FoQzZnSUNBQUNJUURlY0JJQUVoQVF6d0Fnc0NRQ0FCSWdFZ0FrY05BRUVQSVJBTTVRTUxJQUV0QUFBaUVFRTdSZzBJSUJCQkRVY042QUVnQVVFQmFpRUJETzhDQ3lBQUlBRWlBU0FDRUxxQWdJQUFJaEFONkFFZ0FTRUJEUElDQ3dOQUFrQWdBUzBBQUVId3RZQ0FBR290QUFBaUVFRUJSZzBBSUJCQkFrY042d0VnQUNnQ0JDRVFJQUJCQURZQ0JDQUFJQkFnQVVFQmFpSUJFTG1BZ0lBQUloQU42Z0VnQVNFQkRQUUNDeUFCUVFGcUlnRWdBa2NOQUF0QkVpRVFET0lEQ3lBQUlBRWlBU0FDRUxxQWdJQUFJaEFONlFFZ0FTRUJEQW9MSUFFaUFTQUNSdzBHUVJzaEVBemdBd3NDUUNBQklnRWdBa2NOQUVFV0lSQU00QU1MSUFCQmlvQ0FnQUEyQWdnZ0FDQUJOZ0lFSUFBZ0FTQUNFTGlBZ0lBQUloQU42Z0VnQVNFQlFTQWhFQXpHQXdzQ1FDQUJJZ0VnQWtZTkFBTkFBa0FnQVMwQUFFSHd0NENBQUdvdEFBQWlFRUVDUmcwQUFrQWdFRUYvYWc0RTVRSHNBUURyQWV3QkN5QUJRUUZxSVFGQkNDRVFETWdEQ3lBQlFRRnFJZ0VnQWtjTkFBdEJGU0VRRE44REMwRVZJUkFNM2dNTEEwQUNRQ0FCTFFBQVFmQzVnSUFBYWkwQUFDSVFRUUpHRFFBZ0VFRi9hZzRFM2dIc0FlQUI2d0hzQVFzZ0FVRUJhaUlCSUFKSERRQUxRUmdoRUF6ZEF3c0NRQ0FCSWdFZ0FrWU5BQ0FBUVl1QWdJQUFOZ0lJSUFBZ0FUWUNCQ0FCSVFGQkJ5RVFETVFEQzBFWklSQU0zQU1MSUFGQkFXb2hBUXdDQ3dKQUlBRWlGQ0FDUncwQVFSb2hFQXpiQXdzZ0ZDRUJBa0FnRkMwQUFFRnphZzRVM1FMdUF1NEM3Z0x1QXU0QzdnTHVBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnTHVBdTRDN2dJQTdnSUxRUUFoRUNBQVFRQTJBaHdnQUVHdmk0Q0FBRFlDRUNBQVFRSTJBZ3dnQUNBVVFRRnFOZ0lVRE5vREN3SkFJQUV0QUFBaUVFRTdSZzBBSUJCQkRVY042QUVnQVVFQmFpRUJET1VDQ3lBQlFRRnFJUUVMUVNJaEVBeS9Bd3NDUUNBQkloQWdBa2NOQUVFY0lSQU0yQU1MUWdBaEVTQVFJUUVnRUMwQUFFRlFhZzQzNXdIbUFRRUNBd1FGQmdjSUFBQUFBQUFBQUFrS0N3d05EZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEeEFSRWhNVUFBdEJIaUVRREwwREMwSUNJUkVNNVFFTFFnTWhFUXprQVF0Q0JDRVJET01CQzBJRklSRU00Z0VMUWdZaEVRemhBUXRDQnlFUkRPQUJDMElJSVJFTTN3RUxRZ2toRVF6ZUFRdENDaUVSRE4wQkMwSUxJUkVNM0FFTFFnd2hFUXpiQVF0Q0RTRVJETm9CQzBJT0lSRU0yUUVMUWc4aEVRellBUXRDQ2lFUkROY0JDMElMSVJFTTFnRUxRZ3doRVF6VkFRdENEU0VSRE5RQkMwSU9JUkVNMHdFTFFnOGhFUXpTQVF0Q0FDRVJBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBUUxRQUFRVkJxRGpmbEFlUUJBQUVDQXdRRkJnZm1BZVlCNWdIbUFlWUI1Z0htQVFnSkNnc01EZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnRU9EeEFSRWhQbUFRdENBaUVSRE9RQkMwSURJUkVNNHdFTFFnUWhFUXppQVF0Q0JTRVJET0VCQzBJR0lSRU00QUVMUWdjaEVRemZBUXRDQ0NFUkRONEJDMElKSVJFTTNRRUxRZ29oRVF6Y0FRdENDeUVSRE5zQkMwSU1JUkVNMmdFTFFnMGhFUXpaQVF0Q0RpRVJETmdCQzBJUElSRU0xd0VMUWdvaEVReldBUXRDQ3lFUkROVUJDMElNSVJFTTFBRUxRZzBoRVF6VEFRdENEaUVSRE5JQkMwSVBJUkVNMFFFTElBQkNBQ0FBS1FNZ0loRWdBaUFCSWhCcnJTSVNmU0lUSUJNZ0VWWWJOd01nSUJFZ0VsWWlGRVVOMGdGQkh5RVFETUFEQ3dKQUlBRWlBU0FDUmcwQUlBQkJpWUNBZ0FBMkFnZ2dBQ0FCTmdJRUlBRWhBVUVrSVJBTXB3TUxRU0FoRUF5L0F3c2dBQ0FCSWhBZ0FoQytnSUNBQUVGL2FnNEZ0Z0VBeFFJQjBRSFNBUXRCRVNFUURLUURDeUFBUVFFNkFDOGdFQ0VCRExzREN5QUJJZ0VnQWtjTjBnRkJKQ0VRRExzREN5QUJJZzBnQWtjTkhrSEdBQ0VRRExvREN5QUFJQUVpQVNBQ0VMS0FnSUFBSWhBTjFBRWdBU0VCRExVQkN5QUJJaEFnQWtjTkprSFFBQ0VRRExnREN3SkFJQUVpQVNBQ1J3MEFRU2doRUF5NEF3c2dBRUVBTmdJRUlBQkJqSUNBZ0FBMkFnZ2dBQ0FCSUFFUXNZQ0FnQUFpRUEzVEFTQUJJUUVNMkFFTEFrQWdBU0lRSUFKSERRQkJLU0VRRExjREN5QVFMUUFBSWdGQklFWU5GQ0FCUVFsSERkTUJJQkJCQVdvaEFRd1ZDd0pBSUFFaUFTQUNSZzBBSUFGQkFXb2hBUXdYQzBFcUlSQU10UU1MQWtBZ0FTSVFJQUpIRFFCQkt5RVFETFVEQ3dKQUlCQXRBQUFpQVVFSlJnMEFJQUZCSUVjTjFRRUxJQUF0QUN4QkNFWU4wd0VnRUNFQkRKRURDd0pBSUFFaUFTQUNSdzBBUVN3aEVBeTBBd3NnQVMwQUFFRUtSdzNWQVNBQlFRRnFJUUVNeVFJTElBRWlEaUFDUnczVkFVRXZJUkFNc2dNTEEwQUNRQ0FCTFFBQUloQkJJRVlOQUFKQUlCQkJkbW9PQkFEY0Fkd0JBTm9CQ3lBQklRRU00QUVMSUFGQkFXb2lBU0FDUncwQUMwRXhJUkFNc1FNTFFUSWhFQ0FCSWhRZ0FrWU5zQU1nQWlBVWF5QUFLQUlBSWdGcUlSVWdGQ0FCYTBFRGFpRVdBa0FEUUNBVUxRQUFJaGRCSUhJZ0Z5QVhRYjkvYWtIL0FYRkJHa2tiUWY4QmNTQUJRZkM3Z0lBQWFpMEFBRWNOQVFKQUlBRkJBMGNOQUVFR0lRRU1sZ01MSUFGQkFXb2hBU0FVUVFGcUloUWdBa2NOQUFzZ0FDQVZOZ0lBRExFREN5QUFRUUEyQWdBZ0ZDRUJETmtCQzBFeklSQWdBU0lVSUFKR0RhOERJQUlnRkdzZ0FDZ0NBQ0lCYWlFVklCUWdBV3RCQ0dvaEZnSkFBMEFnRkMwQUFDSVhRU0J5SUJjZ0YwRy9mMnBCL3dGeFFScEpHMEgvQVhFZ0FVSDB1NENBQUdvdEFBQkhEUUVDUUNBQlFRaEhEUUJCQlNFQkRKVURDeUFCUVFGcUlRRWdGRUVCYWlJVUlBSkhEUUFMSUFBZ0ZUWUNBQXl3QXdzZ0FFRUFOZ0lBSUJRaEFRellBUXRCTkNFUUlBRWlGQ0FDUmcydUF5QUNJQlJySUFBb0FnQWlBV29oRlNBVUlBRnJRUVZxSVJZQ1FBTkFJQlF0QUFBaUYwRWdjaUFYSUJkQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SUFGQjBNS0FnQUJxTFFBQVJ3MEJBa0FnQVVFRlJ3MEFRUWNoQVF5VUF3c2dBVUVCYWlFQklCUkJBV29pRkNBQ1J3MEFDeUFBSUJVMkFnQU1yd01MSUFCQkFEWUNBQ0FVSVFFTTF3RUxBa0FnQVNJQklBSkdEUUFEUUFKQUlBRXRBQUJCZ0w2QWdBQnFMUUFBSWhCQkFVWU5BQ0FRUVFKR0RRb2dBU0VCRE4wQkN5QUJRUUZxSWdFZ0FrY05BQXRCTUNFUURLNERDMEV3SVJBTXJRTUxBa0FnQVNJQklBSkdEUUFEUUFKQUlBRXRBQUFpRUVFZ1JnMEFJQkJCZG1vT0JOa0IyZ0hhQWRrQjJnRUxJQUZCQVdvaUFTQUNSdzBBQzBFNElSQU1yUU1MUVRnaEVBeXNBd3NEUUFKQUlBRXRBQUFpRUVFZ1JnMEFJQkJCQ1VjTkF3c2dBVUVCYWlJQklBSkhEUUFMUVR3aEVBeXJBd3NEUUFKQUlBRXRBQUFpRUVFZ1JnMEFBa0FDUUNBUVFYWnFEZ1RhQVFFQjJnRUFDeUFRUVN4R0Rkc0JDeUFCSVFFTUJBc2dBVUVCYWlJQklBSkhEUUFMUVQ4aEVBeXFBd3NnQVNFQkROc0JDMEhBQUNFUUlBRWlGQ0FDUmcyb0F5QUNJQlJySUFBb0FnQWlBV29oRmlBVUlBRnJRUVpxSVJjQ1FBTkFJQlF0QUFCQklISWdBVUdBd0lDQUFHb3RBQUJIRFFFZ0FVRUdSZzJPQXlBQlFRRnFJUUVnRkVFQmFpSVVJQUpIRFFBTElBQWdGallDQUF5cEF3c2dBRUVBTmdJQUlCUWhBUXRCTmlFUURJNERDd0pBSUFFaUR5QUNSdzBBUWNFQUlSQU1wd01MSUFCQmpJQ0FnQUEyQWdnZ0FDQVBOZ0lFSUE4aEFTQUFMUUFzUVg5cURnVE5BZFVCMXdIWkFZY0RDeUFCUVFGcUlRRU16QUVMQWtBZ0FTSUJJQUpHRFFBRFFBSkFJQUV0QUFBaUVFRWdjaUFRSUJCQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SWhCQkNVWU5BQ0FRUVNCR0RRQUNRQUpBQWtBQ1FDQVFRWjEvYWc0VEFBTURBd01EQXdNQkF3TURBd01EQXdNREFnTUxJQUZCQVdvaEFVRXhJUkFNa1FNTElBRkJBV29oQVVFeUlSQU1rQU1MSUFGQkFXb2hBVUV6SVJBTWp3TUxJQUVoQVF6UUFRc2dBVUVCYWlJQklBSkhEUUFMUVRVaEVBeWxBd3RCTlNFUURLUURDd0pBSUFFaUFTQUNSZzBBQTBBQ1FDQUJMUUFBUVlDOGdJQUFhaTBBQUVFQlJnMEFJQUVoQVF6VEFRc2dBVUVCYWlJQklBSkhEUUFMUVQwaEVBeWtBd3RCUFNFUURLTURDeUFBSUFFaUFTQUNFTENBZ0lBQUloQU4xZ0VnQVNFQkRBRUxJQkJCQVdvaEFRdEJQQ0VRREljREN3SkFJQUVpQVNBQ1J3MEFRY0lBSVJBTW9BTUxBa0FEUUFKQUlBRXRBQUJCZDJvT0dBQUMvZ0wrQW9RRC9nTCtBdjRDL2dMK0F2NEMvZ0wrQXY0Qy9nTCtBdjRDL2dMK0F2NEMvZ0wrQXY0Q0FQNENDeUFCUVFGcUlnRWdBa2NOQUF0QndnQWhFQXlnQXdzZ0FVRUJhaUVCSUFBdEFDMUJBWEZGRGIwQklBRWhBUXRCTENFUURJVURDeUFCSWdFZ0FrY04wd0ZCeEFBaEVBeWRBd3NEUUFKQUlBRXRBQUJCa01DQWdBQnFMUUFBUVFGR0RRQWdBU0VCRExjQ0N5QUJRUUZxSWdFZ0FrY05BQXRCeFFBaEVBeWNBd3NnRFMwQUFDSVFRU0JHRGJNQklCQkJPa2NOZ1FNZ0FDZ0NCQ0VCSUFCQkFEWUNCQ0FBSUFFZ0RSQ3ZnSUNBQUNJQkRkQUJJQTFCQVdvaEFReXpBZ3RCeHdBaEVDQUJJZzBnQWtZTm1nTWdBaUFOYXlBQUtBSUFJZ0ZxSVJZZ0RTQUJhMEVGYWlFWEEwQWdEUzBBQUNJVVFTQnlJQlFnRkVHL2YycEIvd0Z4UVJwSkcwSC9BWEVnQVVHUXdvQ0FBR290QUFCSERZQURJQUZCQlVZTjlBSWdBVUVCYWlFQklBMUJBV29pRFNBQ1J3MEFDeUFBSUJZMkFnQU1tZ01MUWNnQUlSQWdBU0lOSUFKR0Raa0RJQUlnRFdzZ0FDZ0NBQ0lCYWlFV0lBMGdBV3RCQ1dvaEZ3TkFJQTB0QUFBaUZFRWdjaUFVSUJSQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SUFGQmxzS0FnQUJxTFFBQVJ3My9BZ0pBSUFGQkNVY05BRUVDSVFFTTlRSUxJQUZCQVdvaEFTQU5RUUZxSWcwZ0FrY05BQXNnQUNBV05nSUFESmtEQ3dKQUlBRWlEU0FDUncwQVFja0FJUkFNbVFNTEFrQUNRQ0FOTFFBQUlnRkJJSElnQVNBQlFiOS9ha0gvQVhGQkdra2JRZjhCY1VHU2Yyb09Cd0NBQTRBRGdBT0FBNEFEQVlBREN5QU5RUUZxSVFGQlBpRVFESUFEQ3lBTlFRRnFJUUZCUHlFUURQOENDMEhLQUNFUUlBRWlEU0FDUmcyWEF5QUNJQTFySUFBb0FnQWlBV29oRmlBTklBRnJRUUZxSVJjRFFDQU5MUUFBSWhSQklISWdGQ0FVUWI5L2FrSC9BWEZCR2trYlFmOEJjU0FCUWFEQ2dJQUFhaTBBQUVjTi9RSWdBVUVCUmczd0FpQUJRUUZxSVFFZ0RVRUJhaUlOSUFKSERRQUxJQUFnRmpZQ0FBeVhBd3RCeXdBaEVDQUJJZzBnQWtZTmxnTWdBaUFOYXlBQUtBSUFJZ0ZxSVJZZ0RTQUJhMEVPYWlFWEEwQWdEUzBBQUNJVVFTQnlJQlFnRkVHL2YycEIvd0Z4UVJwSkcwSC9BWEVnQVVHaXdvQ0FBR290QUFCSERmd0NJQUZCRGtZTjhBSWdBVUVCYWlFQklBMUJBV29pRFNBQ1J3MEFDeUFBSUJZMkFnQU1sZ01MUWN3QUlSQWdBU0lOSUFKR0RaVURJQUlnRFdzZ0FDZ0NBQ0lCYWlFV0lBMGdBV3RCRDJvaEZ3TkFJQTB0QUFBaUZFRWdjaUFVSUJSQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SUFGQndNS0FnQUJxTFFBQVJ3MzdBZ0pBSUFGQkQwY05BRUVESVFFTThRSUxJQUZCQVdvaEFTQU5RUUZxSWcwZ0FrY05BQXNnQUNBV05nSUFESlVEQzBITkFDRVFJQUVpRFNBQ1JnMlVBeUFDSUExcklBQW9BZ0FpQVdvaEZpQU5JQUZyUVFWcUlSY0RRQ0FOTFFBQUloUkJJSElnRkNBVVFiOS9ha0gvQVhGQkdra2JRZjhCY1NBQlFkRENnSUFBYWkwQUFFY04rZ0lDUUNBQlFRVkhEUUJCQkNFQkRQQUNDeUFCUVFGcUlRRWdEVUVCYWlJTklBSkhEUUFMSUFBZ0ZqWUNBQXlVQXdzQ1FDQUJJZzBnQWtjTkFFSE9BQ0VRREpRREN3SkFBa0FDUUFKQUlBMHRBQUFpQVVFZ2NpQUJJQUZCdjM5cVFmOEJjVUVhU1J0Qi93RnhRWjEvYWc0VEFQMEMvUUw5QXYwQy9RTDlBdjBDL1FMOUF2MEMvUUw5QWdIOUF2MEMvUUlDQS8wQ0N5QU5RUUZxSVFGQndRQWhFQXo5QWdzZ0RVRUJhaUVCUWNJQUlSQU0vQUlMSUExQkFXb2hBVUhEQUNFUURQc0NDeUFOUVFGcUlRRkJ4QUFoRUF6NkFnc0NRQ0FCSWdFZ0FrWU5BQ0FBUVkyQWdJQUFOZ0lJSUFBZ0FUWUNCQ0FCSVFGQnhRQWhFQXo2QWd0Qnp3QWhFQXlTQXdzZ0VDRUJBa0FDUUNBUUxRQUFRWFpxRGdRQnFBS29BZ0NvQWdzZ0VFRUJhaUVCQzBFbklSQU0rQUlMQWtBZ0FTSUJJQUpIRFFCQjBRQWhFQXlSQXdzQ1FDQUJMUUFBUVNCR0RRQWdBU0VCREkwQkN5QUJRUUZxSVFFZ0FDMEFMVUVCY1VVTnh3RWdBU0VCREl3QkN5QUJJaGNnQWtjTnlBRkIwZ0FoRUF5UEF3dEIwd0FoRUNBQkloUWdBa1lOamdNZ0FpQVVheUFBS0FJQUlnRnFJUllnRkNBQmEwRUJhaUVYQTBBZ0ZDMEFBQ0FCUWRiQ2dJQUFhaTBBQUVjTnpBRWdBVUVCUmczSEFTQUJRUUZxSVFFZ0ZFRUJhaUlVSUFKSERRQUxJQUFnRmpZQ0FBeU9Bd3NDUUNBQklnRWdBa2NOQUVIVkFDRVFESTREQ3lBQkxRQUFRUXBIRGN3QklBRkJBV29oQVF6SEFRc0NRQ0FCSWdFZ0FrY05BRUhXQUNFUURJMERDd0pBQWtBZ0FTMEFBRUYyYWc0RUFNMEJ6UUVCelFFTElBRkJBV29oQVF6SEFRc2dBVUVCYWlFQlFjb0FJUkFNOHdJTElBQWdBU0lCSUFJUXJvQ0FnQUFpRUEzTEFTQUJJUUZCelFBaEVBenlBZ3NnQUMwQUtVRWlSZzJGQXd5bUFnc0NRQ0FCSWdFZ0FrY05BRUhiQUNFUURJb0RDMEVBSVJSQkFTRVhRUUVoRmtFQUlSQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBUzBBQUVGUWFnNEsxQUhUQVFBQkFnTUVCUVlJMVFFTFFRSWhFQXdHQzBFRElSQU1CUXRCQkNFUURBUUxRUVVoRUF3REMwRUdJUkFNQWd0QkJ5RVFEQUVMUVFnaEVBdEJBQ0VYUVFBaEZrRUFJUlFNekFFTFFRa2hFRUVCSVJSQkFDRVhRUUFoRmd6TEFRc0NRQ0FCSWdFZ0FrY05BRUhkQUNFUURJa0RDeUFCTFFBQVFTNUhEY3dCSUFGQkFXb2hBUXltQWdzZ0FTSUJJQUpIRGN3QlFkOEFJUkFNaHdNTEFrQWdBU0lCSUFKR0RRQWdBRUdPZ0lDQUFEWUNDQ0FBSUFFMkFnUWdBU0VCUWRBQUlSQU03Z0lMUWVBQUlSQU1oZ01MUWVFQUlSQWdBU0lCSUFKR0RZVURJQUlnQVdzZ0FDZ0NBQ0lVYWlFV0lBRWdGR3RCQTJvaEZ3TkFJQUV0QUFBZ0ZFSGl3b0NBQUdvdEFBQkhEYzBCSUJSQkEwWU56QUVnRkVFQmFpRVVJQUZCQVdvaUFTQUNSdzBBQ3lBQUlCWTJBZ0FNaFFNTFFlSUFJUkFnQVNJQklBSkdEWVFESUFJZ0FXc2dBQ2dDQUNJVWFpRVdJQUVnRkd0QkFtb2hGd05BSUFFdEFBQWdGRUhtd29DQUFHb3RBQUJIRGN3QklCUkJBa1lOemdFZ0ZFRUJhaUVVSUFGQkFXb2lBU0FDUncwQUN5QUFJQlkyQWdBTWhBTUxRZU1BSVJBZ0FTSUJJQUpHRFlNRElBSWdBV3NnQUNnQ0FDSVVhaUVXSUFFZ0ZHdEJBMm9oRndOQUlBRXRBQUFnRkVIcHdvQ0FBR290QUFCSERjc0JJQlJCQTBZTnpnRWdGRUVCYWlFVUlBRkJBV29pQVNBQ1J3MEFDeUFBSUJZMkFnQU1nd01MQWtBZ0FTSUJJQUpIRFFCQjVRQWhFQXlEQXdzZ0FDQUJRUUZxSWdFZ0FoQ29nSUNBQUNJUURjMEJJQUVoQVVIV0FDRVFET2tDQ3dKQUlBRWlBU0FDUmcwQUEwQUNRQ0FCTFFBQUloQkJJRVlOQUFKQUFrQUNRQ0FRUWJoL2FnNExBQUhQQWM4Qnp3SFBBYzhCendIUEFjOEJBczhCQ3lBQlFRRnFJUUZCMGdBaEVBenRBZ3NnQVVFQmFpRUJRZE1BSVJBTTdBSUxJQUZCQVdvaEFVSFVBQ0VRRE9zQ0N5QUJRUUZxSWdFZ0FrY05BQXRCNUFBaEVBeUNBd3RCNUFBaEVBeUJBd3NEUUFKQUlBRXRBQUJCOE1LQWdBQnFMUUFBSWhCQkFVWU5BQ0FRUVg1cURnUFBBZEFCMFFIU0FRc2dBVUVCYWlJQklBSkhEUUFMUWVZQUlSQU1nQU1MQWtBZ0FTSUJJQUpHRFFBZ0FVRUJhaUVCREFNTFFlY0FJUkFNL3dJTEEwQUNRQ0FCTFFBQVFmREVnSUFBYWkwQUFDSVFRUUZHRFFBQ1FDQVFRWDVxRGdUU0FkTUIxQUVBMVFFTElBRWhBVUhYQUNFUURPY0NDeUFCUVFGcUlnRWdBa2NOQUF0QjZBQWhFQXorQWdzQ1FDQUJJZ0VnQWtjTkFFSHBBQ0VRRFA0Q0N3SkFJQUV0QUFBaUVFRjJhZzRhdWdIVkFkVUJ2QUhWQWRVQjFRSFZBZFVCMVFIVkFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIVkFkVUIxUUhLQWRVQjFRRUEwd0VMSUFGQkFXb2hBUXRCQmlFUURPTUNDd05BQWtBZ0FTMEFBRUh3eG9DQUFHb3RBQUJCQVVZTkFDQUJJUUVNbmdJTElBRkJBV29pQVNBQ1J3MEFDMEhxQUNFUURQc0NDd0pBSUFFaUFTQUNSZzBBSUFGQkFXb2hBUXdEQzBIckFDRVFEUG9DQ3dKQUlBRWlBU0FDUncwQVFld0FJUkFNK2dJTElBRkJBV29oQVF3QkN3SkFJQUVpQVNBQ1J3MEFRZTBBSVJBTStRSUxJQUZCQVdvaEFRdEJCQ0VRRE40Q0N3SkFJQUVpRkNBQ1J3MEFRZTRBSVJBTTl3SUxJQlFoQVFKQUFrQUNRQ0FVTFFBQVFmRElnSUFBYWkwQUFFRi9hZzRIMUFIVkFkWUJBSndDQVFMWEFRc2dGRUVCYWlFQkRBb0xJQlJCQVdvaEFRek5BUXRCQUNFUUlBQkJBRFlDSENBQVFadVNnSUFBTmdJUUlBQkJCellDRENBQUlCUkJBV28yQWhRTTlnSUxBa0FEUUFKQUlBRXRBQUJCOE1pQWdBQnFMUUFBSWhCQkJFWU5BQUpBQWtBZ0VFRi9hZzRIMGdIVEFkUUIyUUVBQkFIWkFRc2dBU0VCUWRvQUlSQU00QUlMSUFGQkFXb2hBVUhjQUNFUUROOENDeUFCUVFGcUlnRWdBa2NOQUF0Qjd3QWhFQXoyQWdzZ0FVRUJhaUVCRE1zQkN3SkFJQUVpRkNBQ1J3MEFRZkFBSVJBTTlRSUxJQlF0QUFCQkwwY04xQUVnRkVFQmFpRUJEQVlMQWtBZ0FTSVVJQUpIRFFCQjhRQWhFQXowQWdzQ1FDQVVMUUFBSWdGQkwwY05BQ0FVUVFGcUlRRkIzUUFoRUF6YkFnc2dBVUYyYWlJRVFSWkxEZE1CUVFFZ0JIUkJpWUNBQW5GRkRkTUJETW9DQ3dKQUlBRWlBU0FDUmcwQUlBRkJBV29oQVVIZUFDRVFETm9DQzBIeUFDRVFEUElDQ3dKQUlBRWlGQ0FDUncwQVFmUUFJUkFNOGdJTElCUWhBUUpBSUJRdEFBQkI4TXlBZ0FCcUxRQUFRWDlxRGdQSkFwUUNBTlFCQzBIaEFDRVFETmdDQ3dKQUlBRWlGQ0FDUmcwQUEwQUNRQ0FVTFFBQVFmREtnSUFBYWkwQUFDSUJRUU5HRFFBQ1FDQUJRWDlxRGdMTEFnRFZBUXNnRkNFQlFkOEFJUkFNMmdJTElCUkJBV29pRkNBQ1J3MEFDMEh6QUNFUURQRUNDMEh6QUNFUURQQUNDd0pBSUFFaUFTQUNSZzBBSUFCQmo0Q0FnQUEyQWdnZ0FDQUJOZ0lFSUFFaEFVSGdBQ0VRRE5jQ0MwSDFBQ0VRRE84Q0N3SkFJQUVpQVNBQ1J3MEFRZllBSVJBTTd3SUxJQUJCajRDQWdBQTJBZ2dnQUNBQk5nSUVJQUVoQVF0QkF5RVFETlFDQ3dOQUlBRXRBQUJCSUVjTnd3SWdBVUVCYWlJQklBSkhEUUFMUWZjQUlSQU03QUlMQWtBZ0FTSUJJQUpIRFFCQitBQWhFQXpzQWdzZ0FTMEFBRUVnUnczT0FTQUJRUUZxSVFFTTd3RUxJQUFnQVNJQklBSVFySUNBZ0FBaUVBM09BU0FCSVFFTWpnSUxBa0FnQVNJRUlBSkhEUUJCK2dBaEVBenFBZ3NnQkMwQUFFSE1BRWNOMFFFZ0JFRUJhaUVCUVJNaEVBelBBUXNDUUNBQklnUWdBa2NOQUVIN0FDRVFET2tDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRVnFJUkFEUUNBRUxRQUFJQUZCOE02QWdBQnFMUUFBUnczUUFTQUJRUVZHRGM0QklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFmc0FJUkFNNkFJTEFrQWdBU0lFSUFKSERRQkIvQUFoRUF6b0Fnc0NRQUpBSUFRdEFBQkJ2WDlxRGd3QTBRSFJBZEVCMFFIUkFkRUIwUUhSQWRFQjBRRUIwUUVMSUFSQkFXb2hBVUhtQUNFUURNOENDeUFFUVFGcUlRRkI1d0FoRUF6T0Fnc0NRQ0FCSWdRZ0FrY05BRUg5QUNFUURPY0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUh0ejRDQUFHb3RBQUJIRGM4QklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVIOUFDRVFET2NDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUkFoRUF6TUFRc0NRQ0FCSWdRZ0FrY05BRUgrQUNFUURPWUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFWcUlSQUNRQU5BSUFRdEFBQWdBVUgyem9DQUFHb3RBQUJIRGM0QklBRkJCVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVIK0FDRVFET1lDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUlloRUF6TEFRc0NRQ0FCSWdRZ0FrY05BRUgvQUNFUURPVUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFOcUlSQUNRQU5BSUFRdEFBQWdBVUg4em9DQUFHb3RBQUJIRGMwQklBRkJBMFlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVIL0FDRVFET1VDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUVVoRUF6S0FRc0NRQ0FCSWdRZ0FrY05BRUdBQVNFUURPUUNDeUFFTFFBQVFka0FSdzNMQVNBRVFRRnFJUUZCQ0NFUURNa0JDd0pBSUFFaUJDQUNSdzBBUVlFQklSQU00d0lMQWtBQ1FDQUVMUUFBUWJKL2FnNERBTXdCQWN3QkN5QUVRUUZxSVFGQjZ3QWhFQXpLQWdzZ0JFRUJhaUVCUWV3QUlSQU15UUlMQWtBZ0FTSUVJQUpIRFFCQmdnRWhFQXppQWdzQ1FBSkFJQVF0QUFCQnVIOXFEZ2dBeXdITEFjc0J5d0hMQWNzQkFjc0JDeUFFUVFGcUlRRkI2Z0FoRUF6SkFnc2dCRUVCYWlFQlFlMEFJUkFNeUFJTEFrQWdBU0lFSUFKSERRQkJnd0VoRUF6aEFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJBZ0JDQUJhMEVDYWlFVUFrQURRQ0FFTFFBQUlBRkJnTStBZ0FCcUxRQUFSdzNKQVNBQlFRSkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCQTJBZ0JCZ3dFaEVBemhBZ3RCQUNFUUlBQkJBRFlDQUNBVVFRRnFJUUVNeGdFTEFrQWdBU0lFSUFKSERRQkJoQUVoRUF6Z0Fnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVFYWlFUUFrQURRQ0FFTFFBQUlBRkJnOCtBZ0FCcUxRQUFSdzNJQVNBQlFRUkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCaEFFaEVBemdBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRWpJUkFNeFFFTEFrQWdBU0lFSUFKSERRQkJoUUVoRUF6ZkFnc0NRQUpBSUFRdEFBQkJ0SDlxRGdnQXlBSElBY2dCeUFISUFjZ0JBY2dCQ3lBRVFRRnFJUUZCN3dBaEVBekdBZ3NnQkVFQmFpRUJRZkFBSVJBTXhRSUxBa0FnQVNJRUlBSkhEUUJCaGdFaEVBemVBZ3NnQkMwQUFFSEZBRWNOeFFFZ0JFRUJhaUVCRElNQ0N3SkFJQUVpQkNBQ1J3MEFRWWNCSVJBTTNRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQTJvaEVBSkFBMEFnQkMwQUFDQUJRWWpQZ0lBQWFpMEFBRWNOeFFFZ0FVRURSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVljQklSQU0zUUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJMU0VRRE1JQkN3SkFJQUVpQkNBQ1J3MEFRWWdCSVJBTTNBSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQ0dvaEVBSkFBMEFnQkMwQUFDQUJRZERQZ0lBQWFpMEFBRWNOeEFFZ0FVRUlSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVlnQklSQU0zQUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJLU0VRRE1FQkN3SkFJQUVpQVNBQ1J3MEFRWWtCSVJBTTJ3SUxRUUVoRUNBQkxRQUFRZDhBUnczQUFTQUJRUUZxSVFFTWdRSUxBa0FnQVNJRUlBSkhEUUJCaWdFaEVBemFBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBMEFnQkMwQUFDQUJRWXpQZ0lBQWFpMEFBRWNOd1FFZ0FVRUJSZzJ2QWlBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHS0FTRVFETmtDQ3dKQUlBRWlCQ0FDUncwQVFZc0JJUkFNMlFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBbW9oRUFKQUEwQWdCQzBBQUNBQlFZN1BnSUFBYWkwQUFFY053UUVnQVVFQ1JnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWXNCSVJBTTJRSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkFpRVFETDRCQ3dKQUlBRWlCQ0FDUncwQVFZd0JJUkFNMkFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFmRFBnSUFBYWkwQUFFY053QUVnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWXdCSVJBTTJBSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkh5RVFETDBCQ3dKQUlBRWlCQ0FDUncwQVFZMEJJUkFNMXdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFmTFBnSUFBYWkwQUFFY052d0VnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWTBCSVJBTTF3SUxJQUJCQURZQ0FDQVFRUUZxSVFGQkNTRVFETHdCQ3dKQUlBRWlCQ0FDUncwQVFZNEJJUkFNMWdJTEFrQUNRQ0FFTFFBQVFiZC9hZzRIQUw4QnZ3Ry9BYjhCdndFQnZ3RUxJQVJCQVdvaEFVSDRBQ0VRREwwQ0N5QUVRUUZxSVFGQitRQWhFQXk4QWdzQ1FDQUJJZ1FnQWtjTkFFR1BBU0VRRE5VQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVZxSVJBQ1FBTkFJQVF0QUFBZ0FVR1J6NENBQUdvdEFBQkhEYjBCSUFGQkJVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdQQVNFUUROVUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFSZ2hFQXk2QVFzQ1FDQUJJZ1FnQWtjTkFFR1FBU0VRRE5RQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVR1h6NENBQUdvdEFBQkhEYndCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdRQVNFUUROUUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFSY2hFQXk1QVFzQ1FDQUJJZ1FnQWtjTkFFR1JBU0VRRE5NQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVpxSVJBQ1FBTkFJQVF0QUFBZ0FVR2F6NENBQUdvdEFBQkhEYnNCSUFGQkJrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdSQVNFUUROTUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFSVWhFQXk0QVFzQ1FDQUJJZ1FnQWtjTkFFR1NBU0VRRE5JQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVZxSVJBQ1FBTkFJQVF0QUFBZ0FVR2h6NENBQUdvdEFBQkhEYm9CSUFGQkJVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdTQVNFUUROSUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFSNGhFQXkzQVFzQ1FDQUJJZ1FnQWtjTkFFR1RBU0VRRE5FQ0N5QUVMUUFBUWN3QVJ3MjRBU0FFUVFGcUlRRkJDaUVRRExZQkN3SkFJQVFnQWtjTkFFR1VBU0VRRE5BQ0N3SkFBa0FnQkMwQUFFRy9mMm9PRHdDNUFia0J1UUc1QWJrQnVRRzVBYmtCdVFHNUFia0J1UUc1QVFHNUFRc2dCRUVCYWlFQlFmNEFJUkFNdHdJTElBUkJBV29oQVVIL0FDRVFETFlDQ3dKQUlBUWdBa2NOQUVHVkFTRVFETThDQ3dKQUFrQWdCQzBBQUVHL2Yyb09Bd0M0QVFHNEFRc2dCRUVCYWlFQlFmMEFJUkFNdGdJTElBUkJBV29oQkVHQUFTRVFETFVDQ3dKQUlBUWdBa2NOQUVHV0FTRVFETTRDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRRnFJUkFDUUFOQUlBUXRBQUFnQVVHbno0Q0FBR290QUFCSERiWUJJQUZCQVVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR1dBU0VRRE00Q0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVFzaEVBeXpBUXNDUUNBRUlBSkhEUUJCbHdFaEVBek5BZ3NDUUFKQUFrQUNRQ0FFTFFBQVFWTnFEaU1BdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QVFHNEFiZ0J1QUc0QWJnQkFyZ0J1QUc0QVFPNEFRc2dCRUVCYWlFQlFmc0FJUkFNdGdJTElBUkJBV29oQVVIOEFDRVFETFVDQ3lBRVFRRnFJUVJCZ1FFaEVBeTBBZ3NnQkVFQmFpRUVRWUlCSVJBTXN3SUxBa0FnQkNBQ1J3MEFRWmdCSVJBTXpBSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQkdvaEVBSkFBMEFnQkMwQUFDQUJRYW5QZ0lBQWFpMEFBRWNOdEFFZ0FVRUVSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVpnQklSQU16QUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJHU0VRRExFQkN3SkFJQVFnQWtjTkFFR1pBU0VRRE1zQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVZxSVJBQ1FBTkFJQVF0QUFBZ0FVR3V6NENBQUdvdEFBQkhEYk1CSUFGQkJVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdaQVNFUURNc0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFRWWhFQXl3QVFzQ1FDQUVJQUpIRFFCQm1nRWhFQXpLQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQWtBRFFDQUVMUUFBSUFGQnRNK0FnQUJxTFFBQVJ3MnlBU0FCUVFGR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJtZ0VoRUF6S0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFY0lSQU1yd0VMQWtBZ0JDQUNSdzBBUVpzQklSQU15UUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFXb2hFQUpBQTBBZ0JDMEFBQ0FCUWJiUGdJQUFhaTBBQUVjTnNRRWdBVUVCUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFac0JJUkFNeVFJTElBQkJBRFlDQUNBUVFRRnFJUUZCSnlFUURLNEJDd0pBSUFRZ0FrY05BRUdjQVNFUURNZ0NDd0pBQWtBZ0JDMEFBRUdzZjJvT0FnQUJzUUVMSUFSQkFXb2hCRUdHQVNFUURLOENDeUFFUVFGcUlRUkJod0VoRUF5dUFnc0NRQ0FFSUFKSERRQkJuUUVoRUF6SEFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVCYWlFUUFrQURRQ0FFTFFBQUlBRkJ1TStBZ0FCcUxRQUFSdzJ2QVNBQlFRRkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCblFFaEVBekhBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRW1JUkFNckFFTEFrQWdCQ0FDUncwQVFaNEJJUkFNeGdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFiclBnSUFBYWkwQUFFY05yZ0VnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWjRCSVJBTXhnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkF5RVFES3NCQ3dKQUlBUWdBa2NOQUVHZkFTRVFETVVDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRSnFJUkFDUUFOQUlBUXRBQUFnQVVIdHo0Q0FBR290QUFCSERhMEJJQUZCQWtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR2ZBU0VRRE1VQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVF3aEVBeXFBUXNDUUNBRUlBSkhEUUJCb0FFaEVBekVBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFRGFpRVFBa0FEUUNBRUxRQUFJQUZCdk0rQWdBQnFMUUFBUncyc0FTQUJRUU5HRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQm9BRWhFQXpFQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVOSVJBTXFRRUxBa0FnQkNBQ1J3MEFRYUVCSVJBTXd3SUxBa0FDUUNBRUxRQUFRYnAvYWc0TEFLd0JyQUdzQWF3QnJBR3NBYXdCckFHc0FRR3NBUXNnQkVFQmFpRUVRWXNCSVJBTXFnSUxJQVJCQVdvaEJFR01BU0VRREtrQ0N3SkFJQVFnQWtjTkFFR2lBU0VRRE1JQ0N5QUVMUUFBUWRBQVJ3MnBBU0FFUVFGcUlRUU02UUVMQWtBZ0JDQUNSdzBBUWFNQklSQU13UUlMQWtBQ1FDQUVMUUFBUWJkL2FnNEhBYW9CcWdHcUFhb0JxZ0VBcWdFTElBUkJBV29oQkVHT0FTRVFES2dDQ3lBRVFRRnFJUUZCSWlFUURLWUJDd0pBSUFRZ0FrY05BRUdrQVNFUURNQUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFGcUlSQUNRQU5BSUFRdEFBQWdBVUhBejRDQUFHb3RBQUJIRGFnQklBRkJBVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHa0FTRVFETUFDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUjBoRUF5bEFRc0NRQ0FFSUFKSERRQkJwUUVoRUF5L0Fnc0NRQUpBSUFRdEFBQkJybjlxRGdNQXFBRUJxQUVMSUFSQkFXb2hCRUdRQVNFUURLWUNDeUFFUVFGcUlRRkJCQ0VRREtRQkN3SkFJQVFnQWtjTkFFR21BU0VRREw0Q0N3SkFBa0FDUUFKQUFrQWdCQzBBQUVHL2Yyb09GUUNxQWFvQnFnR3FBYW9CcWdHcUFhb0JxZ0dxQVFHcUFhb0JBcW9CcWdFRHFnR3FBUVNxQVFzZ0JFRUJhaUVFUVlnQklSQU1xQUlMSUFSQkFXb2hCRUdKQVNFUURLY0NDeUFFUVFGcUlRUkJpZ0VoRUF5bUFnc2dCRUVCYWlFRVFZOEJJUkFNcFFJTElBUkJBV29oQkVHUkFTRVFES1FDQ3dKQUlBUWdBa2NOQUVHbkFTRVFETDBDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRSnFJUkFDUUFOQUlBUXRBQUFnQVVIdHo0Q0FBR290QUFCSERhVUJJQUZCQWtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR25BU0VRREwwQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJFaEVBeWlBUXNDUUNBRUlBSkhEUUJCcUFFaEVBeThBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQ2FpRVFBa0FEUUNBRUxRQUFJQUZCd3MrQWdBQnFMUUFBUncya0FTQUJRUUpHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQnFBRWhFQXk4QWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVzSVJBTW9RRUxBa0FnQkNBQ1J3MEFRYWtCSVJBTXV3SUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQkdvaEVBSkFBMEFnQkMwQUFDQUJRY1hQZ0lBQWFpMEFBRWNOb3dFZ0FVRUVSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWFrQklSQU11d0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJLeUVRREtBQkN3SkFJQVFnQWtjTkFFR3FBU0VRRExvQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVSEt6NENBQUdvdEFBQkhEYUlCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdxQVNFUURMb0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFSUWhFQXlmQVFzQ1FDQUVJQUpIRFFCQnF3RWhFQXk1QWdzQ1FBSkFBa0FDUUNBRUxRQUFRYjUvYWc0UEFBRUNwQUdrQWFRQnBBR2tBYVFCcEFHa0FhUUJwQUdrQVFPa0FRc2dCRUVCYWlFRVFaTUJJUkFNb2dJTElBUkJBV29oQkVHVUFTRVFES0VDQ3lBRVFRRnFJUVJCbFFFaEVBeWdBZ3NnQkVFQmFpRUVRWllCSVJBTW53SUxBa0FnQkNBQ1J3MEFRYXdCSVJBTXVBSUxJQVF0QUFCQnhRQkhEWjhCSUFSQkFXb2hCQXpnQVFzQ1FDQUVJQUpIRFFCQnJRRWhFQXkzQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUNhaUVRQWtBRFFDQUVMUUFBSUFGQnpjK0FnQUJxTFFBQVJ3MmZBU0FCUVFKR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJyUUVoRUF5M0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFT0lSQU1uQUVMQWtBZ0JDQUNSdzBBUWE0QklSQU10Z0lMSUFRdEFBQkIwQUJIRFowQklBUkJBV29oQVVFbElSQU1td0VMQWtBZ0JDQUNSdzBBUWE4QklSQU10UUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkNHb2hFQUpBQTBBZ0JDMEFBQ0FCUWREUGdJQUFhaTBBQUVjTm5RRWdBVUVJUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFhOEJJUkFNdFFJTElBQkJBRFlDQUNBUVFRRnFJUUZCS2lFUURKb0JDd0pBSUFRZ0FrY05BRUd3QVNFUURMUUNDd0pBQWtBZ0JDMEFBRUdyZjJvT0N3Q2RBWjBCblFHZEFaMEJuUUdkQVowQm5RRUJuUUVMSUFSQkFXb2hCRUdhQVNFUURKc0NDeUFFUVFGcUlRUkJtd0VoRUF5YUFnc0NRQ0FFSUFKSERRQkJzUUVoRUF5ekFnc0NRQUpBSUFRdEFBQkJ2MzlxRGhRQW5BR2NBWndCbkFHY0Fad0JuQUdjQVp3Qm5BR2NBWndCbkFHY0Fad0JuQUdjQVp3QkFad0JDeUFFUVFGcUlRUkJtUUVoRUF5YUFnc2dCRUVCYWlFRVFad0JJUkFNbVFJTEFrQWdCQ0FDUncwQVFiSUJJUkFNc2dJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBMm9oRUFKQUEwQWdCQzBBQUNBQlFkblBnSUFBYWkwQUFFY05tZ0VnQVVFRFJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRYklCSVJBTXNnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQklTRVFESmNCQ3dKQUlBUWdBa2NOQUVHekFTRVFETEVDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRWnFJUkFDUUFOQUlBUXRBQUFnQVVIZHo0Q0FBR290QUFCSERaa0JJQUZCQmtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR3pBU0VRRExFQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJvaEVBeVdBUXNDUUNBRUlBSkhEUUJCdEFFaEVBeXdBZ3NDUUFKQUFrQWdCQzBBQUVHN2Yyb09FUUNhQVpvQm1nR2FBWm9CbWdHYUFab0JtZ0VCbWdHYUFab0JtZ0dhQVFLYUFRc2dCRUVCYWlFRVFaMEJJUkFNbUFJTElBUkJBV29oQkVHZUFTRVFESmNDQ3lBRVFRRnFJUVJCbndFaEVBeVdBZ3NDUUNBRUlBSkhEUUJCdFFFaEVBeXZBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFRmFpRVFBa0FEUUNBRUxRQUFJQUZCNU0rQWdBQnFMUUFBUncyWEFTQUJRUVZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQnRRRWhFQXl2QWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVvSVJBTWxBRUxBa0FnQkNBQ1J3MEFRYllCSVJBTXJnSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQW1vaEVBSkFBMEFnQkMwQUFDQUJRZXJQZ0lBQWFpMEFBRWNObGdFZ0FVRUNSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWJZQklSQU1yZ0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJCeUVRREpNQkN3SkFJQVFnQWtjTkFFRzNBU0VRREswQ0N3SkFBa0FnQkMwQUFFRzdmMm9PRGdDV0FaWUJsZ0dXQVpZQmxnR1dBWllCbGdHV0FaWUJsZ0VCbGdFTElBUkJBV29oQkVHaEFTRVFESlFDQ3lBRVFRRnFJUVJCb2dFaEVBeVRBZ3NDUUNBRUlBSkhEUUJCdUFFaEVBeXNBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQ2FpRVFBa0FEUUNBRUxRQUFJQUZCN2MrQWdBQnFMUUFBUncyVUFTQUJRUUpHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQnVBRWhFQXlzQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVTSVJBTWtRRUxBa0FnQkNBQ1J3MEFRYmtCSVJBTXF3SUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRZkRQZ0lBQWFpMEFBRWNOa3dFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWJrQklSQU1xd0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJJQ0VRREpBQkN3SkFJQVFnQWtjTkFFRzZBU0VRREtvQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUZxSVJBQ1FBTkFJQVF0QUFBZ0FVSHl6NENBQUdvdEFBQkhEWklCSUFGQkFVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUc2QVNFUURLb0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFROGhFQXlQQVFzQ1FDQUVJQUpIRFFCQnV3RWhFQXlwQWdzQ1FBSkFJQVF0QUFCQnQzOXFEZ2NBa2dHU0FaSUJrZ0dTQVFHU0FRc2dCRUVCYWlFRVFhVUJJUkFNa0FJTElBUkJBV29oQkVHbUFTRVFESThDQ3dKQUlBUWdBa2NOQUVHOEFTRVFES2dDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRZHFJUkFDUUFOQUlBUXRBQUFnQVVIMHo0Q0FBR290QUFCSERaQUJJQUZCQjBZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFRzhBU0VRREtnQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJzaEVBeU5BUXNDUUNBRUlBSkhEUUJCdlFFaEVBeW5BZ3NDUUFKQUFrQWdCQzBBQUVHK2Yyb09FZ0NSQVpFQmtRR1JBWkVCa1FHUkFaRUJrUUVCa1FHUkFaRUJrUUdSQVpFQkFwRUJDeUFFUVFGcUlRUkJwQUVoRUF5UEFnc2dCRUVCYWlFRVFhY0JJUkFNamdJTElBUkJBV29oQkVHb0FTRVFESTBDQ3dKQUlBUWdBa2NOQUVHK0FTRVFES1lDQ3lBRUxRQUFRYzRBUncyTkFTQUVRUUZxSVFRTXp3RUxBa0FnQkNBQ1J3MEFRYjhCSVJBTXBRSUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JDMEFBRUcvZjJvT0ZRQUJBZ09jQVFRRkJwd0JuQUdjQVFjSUNRb0xuQUVNRFE0UG5BRUxJQVJCQVdvaEFVSG9BQ0VRREpvQ0N5QUVRUUZxSVFGQjZRQWhFQXlaQWdzZ0JFRUJhaUVCUWU0QUlSQU1tQUlMSUFSQkFXb2hBVUh5QUNFUURKY0NDeUFFUVFGcUlRRkI4d0FoRUF5V0Fnc2dCRUVCYWlFQlFmWUFJUkFNbFFJTElBUkJBV29oQVVIM0FDRVFESlFDQ3lBRVFRRnFJUUZCK2dBaEVBeVRBZ3NnQkVFQmFpRUVRWU1CSVJBTWtnSUxJQVJCQVdvaEJFR0VBU0VRREpFQ0N5QUVRUUZxSVFSQmhRRWhFQXlRQWdzZ0JFRUJhaUVFUVpJQklSQU1qd0lMSUFSQkFXb2hCRUdZQVNFUURJNENDeUFFUVFGcUlRUkJvQUVoRUF5TkFnc2dCRUVCYWlFRVFhTUJJUkFNakFJTElBUkJBV29oQkVHcUFTRVFESXNDQ3dKQUlBUWdBa1lOQUNBQVFaQ0FnSUFBTmdJSUlBQWdCRFlDQkVHckFTRVFESXNDQzBIQUFTRVFES01DQ3lBQUlBVWdBaENxZ0lDQUFDSUJEWXNCSUFVaEFReGNDd0pBSUFZZ0FrWU5BQ0FHUVFGcUlRVU1qUUVMUWNJQklSQU1vUUlMQTBBQ1FDQVFMUUFBUVhacURnU01BUUFBandFQUN5QVFRUUZxSWhBZ0FrY05BQXRCd3dFaEVBeWdBZ3NDUUNBSElBSkdEUUFnQUVHUmdJQ0FBRFlDQ0NBQUlBYzJBZ1FnQnlFQlFRRWhFQXlIQWd0QnhBRWhFQXlmQWdzQ1FDQUhJQUpIRFFCQnhRRWhFQXlmQWdzQ1FBSkFJQWN0QUFCQmRtb09CQUhPQWM0QkFNNEJDeUFIUVFGcUlRWU1qUUVMSUFkQkFXb2hCUXlKQVFzQ1FDQUhJQUpIRFFCQnhnRWhFQXllQWdzQ1FBSkFJQWN0QUFCQmRtb09Gd0dQQVk4QkFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFRQ1BBUXNnQjBFQmFpRUhDMEd3QVNFUURJUUNDd0pBSUFnZ0FrY05BRUhJQVNFUURKMENDeUFJTFFBQVFTQkhEWTBCSUFCQkFEc0JNaUFJUVFGcUlRRkJzd0VoRUF5REFnc2dBU0VYQWtBRFFDQVhJZ2NnQWtZTkFTQUhMUUFBUVZCcVFmOEJjU0lRUVFwUERjd0JBa0FnQUM4Qk1pSVVRWmt6U3cwQUlBQWdGRUVLYkNJVU93RXlJQkJCLy84RGN5QVVRZjcvQTNGSkRRQWdCMEVCYWlFWElBQWdGQ0FRYWlJUU93RXlJQkJCLy84RGNVSG9CMGtOQVFzTFFRQWhFQ0FBUVFBMkFod2dBRUhCaVlDQUFEWUNFQ0FBUVEwMkFnd2dBQ0FIUVFGcU5nSVVESndDQzBISEFTRVFESnNDQ3lBQUlBZ2dBaEN1Z0lDQUFDSVFSUTNLQVNBUVFSVkhEWXdCSUFCQnlBRTJBaHdnQUNBSU5nSVVJQUJCeVplQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF5YUFnc0NRQ0FKSUFKSERRQkJ6QUVoRUF5YUFndEJBQ0VVUVFFaEYwRUJJUlpCQUNFUUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBa3RBQUJCVUdvT0NwWUJsUUVBQVFJREJBVUdDSmNCQzBFQ0lSQU1CZ3RCQXlFUURBVUxRUVFoRUF3RUMwRUZJUkFNQXd0QkJpRVFEQUlMUVFjaEVBd0JDMEVJSVJBTFFRQWhGMEVBSVJaQkFDRVVESTRCQzBFSklSQkJBU0VVUVFBaEYwRUFJUllNalFFTEFrQWdDaUFDUncwQVFjNEJJUkFNbVFJTElBb3RBQUJCTGtjTmpnRWdDa0VCYWlFSkRNb0JDeUFMSUFKSERZNEJRZEFCSVJBTWx3SUxBa0FnQ3lBQ1JnMEFJQUJCam9DQWdBQTJBZ2dnQUNBTE5nSUVRYmNCSVJBTS9nRUxRZEVCSVJBTWxnSUxBa0FnQkNBQ1J3MEFRZElCSVJBTWxnSUxJQUlnQkdzZ0FDZ0NBQ0lRYWlFVUlBUWdFR3RCQkdvaEN3TkFJQVF0QUFBZ0VFSDh6NENBQUdvdEFBQkhEWTRCSUJCQkJFWU42UUVnRUVFQmFpRVFJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCMGdFaEVBeVZBZ3NnQUNBTUlBSVFySUNBZ0FBaUFRMk5BU0FNSVFFTXVBRUxBa0FnQkNBQ1J3MEFRZFFCSVJBTWxBSUxJQUlnQkdzZ0FDZ0NBQ0lRYWlFVUlBUWdFR3RCQVdvaERBTkFJQVF0QUFBZ0VFR0IwSUNBQUdvdEFBQkhEWThCSUJCQkFVWU5qZ0VnRUVFQmFpRVFJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCMUFFaEVBeVRBZ3NDUUNBRUlBSkhEUUJCMWdFaEVBeVRBZ3NnQWlBRWF5QUFLQUlBSWhCcUlSUWdCQ0FRYTBFQ2FpRUxBMEFnQkMwQUFDQVFRWVBRZ0lBQWFpMEFBRWNOamdFZ0VFRUNSZzJRQVNBUVFRRnFJUkFnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVIV0FTRVFESklDQ3dKQUlBUWdBa2NOQUVIWEFTRVFESklDQ3dKQUFrQWdCQzBBQUVHN2Yyb09FQUNQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCQVk4QkN5QUVRUUZxSVFSQnV3RWhFQXo1QVFzZ0JFRUJhaUVFUWJ3QklSQU0rQUVMQWtBZ0JDQUNSdzBBUWRnQklSQU1rUUlMSUFRdEFBQkJ5QUJIRFl3QklBUkJBV29oQkF6RUFRc0NRQ0FFSUFKR0RRQWdBRUdRZ0lDQUFEWUNDQ0FBSUFRMkFnUkJ2Z0VoRUF6M0FRdEIyUUVoRUF5UEFnc0NRQ0FFSUFKSERRQkIyZ0VoRUF5UEFnc2dCQzBBQUVISUFFWU53d0VnQUVFQk9nQW9ETGtCQ3lBQVFRSTZBQzhnQUNBRUlBSVFwb0NBZ0FBaUVBMk5BVUhDQVNFUURQUUJDeUFBTFFBb1FYOXFEZ0szQWJrQnVBRUxBMEFDUUNBRUxRQUFRWFpxRGdRQWpnR09BUUNPQVFzZ0JFRUJhaUlFSUFKSERRQUxRZDBCSVJBTWl3SUxJQUJCQURvQUx5QUFMUUF0UVFSeFJRMkVBZ3NnQUVFQU9nQXZJQUJCQVRvQU5DQUJJUUVNakFFTElCQkJGVVlOMmdFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWFlT2dJQUFOZ0lRSUFCQkVqWUNERUVBSVJBTWlBSUxBa0FnQUNBUUlBSVF0SUNBZ0FBaUJBMEFJQkFoQVF5QkFnc0NRQ0FFUVJWSERRQWdBRUVETmdJY0lBQWdFRFlDRkNBQVFiQ1lnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1pQUlMSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUduam9DQUFEWUNFQ0FBUVJJMkFneEJBQ0VRREljQ0N5QVFRUlZHRGRZQklBQkJBRFlDSENBQUlBRTJBaFFnQUVIYWpZQ0FBRFlDRUNBQVFSUTJBZ3hCQUNFUURJWUNDeUFBS0FJRUlSY2dBRUVBTmdJRUlCQWdFYWRxSWhZaEFTQUFJQmNnRUNBV0lCUWJJaEFRdFlDQWdBQWlGRVVOalFFZ0FFRUhOZ0ljSUFBZ0VEWUNGQ0FBSUJRMkFneEJBQ0VRRElVQ0N5QUFJQUF2QVRCQmdBRnlPd0V3SUFFaEFRdEJLaUVRRE9vQkN5QVFRUlZHRGRFQklBQkJBRFlDSENBQUlBRTJBaFFnQUVHRGpJQ0FBRFlDRUNBQVFSTTJBZ3hCQUNFUURJSUNDeUFRUVJWR0RjOEJJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR2FqNENBQURZQ0VDQUFRU0kyQWd4QkFDRVFESUVDQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVF0NENBZ0FBaUVBMEFJQUZCQVdvaEFReU5BUXNnQUVFTU5nSWNJQUFnRURZQ0RDQUFJQUZCQVdvMkFoUkJBQ0VRRElBQ0N5QVFRUlZHRGN3QklBQkJBRFlDSENBQUlBRTJBaFFnQUVHYWo0Q0FBRFlDRUNBQVFTSTJBZ3hCQUNFUURQOEJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXQ0Q0FnQUFpRUEwQUlBRkJBV29oQVF5TUFRc2dBRUVOTmdJY0lBQWdFRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUDRCQ3lBUVFSVkdEY2tCSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhHaklDQUFEWUNFQ0FBUVNNMkFneEJBQ0VRRFAwQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRdVlDQWdBQWlFQTBBSUFGQkFXb2hBUXlMQVFzZ0FFRU9OZ0ljSUFBZ0VEWUNEQ0FBSUFGQkFXbzJBaFJCQUNFUURQd0JDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkJ3SldBZ0FBMkFoQWdBRUVDTmdJTVFRQWhFQXo3QVFzZ0VFRVZSZzNGQVNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCeG95QWdBQTJBaEFnQUVFak5nSU1RUUFoRUF6NkFRc2dBRUVRTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURQa0JDeUFBS0FJRUlRUWdBRUVBTmdJRUFrQWdBQ0FFSUFFUXVZQ0FnQUFpQkEwQUlBRkJBV29oQVF6eEFRc2dBRUVSTmdJY0lBQWdCRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUGdCQ3lBUVFSVkdEY0VCSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhHaklDQUFEWUNFQ0FBUVNNMkFneEJBQ0VRRFBjQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRdVlDQWdBQWlFQTBBSUFGQkFXb2hBUXlJQVFzZ0FFRVROZ0ljSUFBZ0VEWUNEQ0FBSUFGQkFXbzJBaFJCQUNFUURQWUJDeUFBS0FJRUlRUWdBRUVBTmdJRUFrQWdBQ0FFSUFFUXVZQ0FnQUFpQkEwQUlBRkJBV29oQVF6dEFRc2dBRUVVTmdJY0lBQWdCRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUFVCQ3lBUVFSVkdEYjBCSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUdhajRDQUFEWUNFQ0FBUVNJMkFneEJBQ0VRRFBRQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRdDRDQWdBQWlFQTBBSUFGQkFXb2hBUXlHQVFzZ0FFRVdOZ0ljSUFBZ0VEWUNEQ0FBSUFGQkFXbzJBaFJCQUNFUURQTUJDeUFBS0FJRUlRUWdBRUVBTmdJRUFrQWdBQ0FFSUFFUXQ0Q0FnQUFpQkEwQUlBRkJBV29oQVF6cEFRc2dBRUVYTmdJY0lBQWdCRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUElCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCelpPQWdBQTJBaEFnQUVFTU5nSU1RUUFoRUF6eEFRdENBU0VSQ3lBUVFRRnFJUUVDUUNBQUtRTWdJaEpDLy8vLy8vLy8vLzhQVmcwQUlBQWdFa0lFaGlBUmhEY0RJQ0FCSVFFTWhBRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR3RpWUNBQURZQ0VDQUFRUXcyQWd4QkFDRVFETzhCQ3lBQVFRQTJBaHdnQUNBUU5nSVVJQUJCelpPQWdBQTJBaEFnQUVFTU5nSU1RUUFoRUF6dUFRc2dBQ2dDQkNFWElBQkJBRFlDQkNBUUlCR25haUlXSVFFZ0FDQVhJQkFnRmlBVUd5SVFFTFdBZ0lBQUloUkZEWE1nQUVFRk5nSWNJQUFnRURZQ0ZDQUFJQlEyQWd4QkFDRVFETzBCQ3lBQVFRQTJBaHdnQUNBUU5nSVVJQUJCcXB5QWdBQTJBaEFnQUVFUE5nSU1RUUFoRUF6c0FRc2dBQ0FRSUFJUXRJQ0FnQUFpQVEwQklCQWhBUXRCRGlFUURORUJDd0pBSUFGQkZVY05BQ0FBUVFJMkFod2dBQ0FRTmdJVUlBQkJzSmlBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXpxQVFzZ0FFRUFOZ0ljSUFBZ0VEWUNGQ0FBUWFlT2dJQUFOZ0lRSUFCQkVqWUNERUVBSVJBTTZRRUxJQUZCQVdvaEVBSkFJQUF2QVRBaUFVR0FBWEZGRFFBQ1FDQUFJQkFnQWhDN2dJQ0FBQ0lCRFFBZ0VDRUJESEFMSUFGQkZVY051Z0VnQUVFRk5nSWNJQUFnRURZQ0ZDQUFRZm1YZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNNlFFTEFrQWdBVUdnQkhGQm9BUkhEUUFnQUMwQUxVRUNjUTBBSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUdXazRDQUFEWUNFQ0FBUVFRMkFneEJBQ0VRRE9rQkN5QUFJQkFnQWhDOWdJQ0FBQm9nRUNFQkFrQUNRQUpBQWtBQ1FDQUFJQkFnQWhDemdJQ0FBQTRXQWdFQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUF3UUxJQUJCQVRvQUxnc2dBQ0FBTHdFd1FjQUFjanNCTUNBUUlRRUxRU1loRUF6UkFRc2dBRUVqTmdJY0lBQWdFRFlDRkNBQVFhV1dnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU02UUVMSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUhWaTRDQUFEWUNFQ0FBUVJFMkFneEJBQ0VRRE9nQkN5QUFMUUF0UVFGeFJRMEJRY01CSVJBTXpnRUxBa0FnRFNBQ1JnMEFBMEFDUUNBTkxRQUFRU0JHRFFBZ0RTRUJETVFCQ3lBTlFRRnFJZzBnQWtjTkFBdEJKU0VRRE9jQkMwRWxJUkFNNWdFTElBQW9BZ1FoQkNBQVFRQTJBZ1FnQUNBRUlBMFFyNENBZ0FBaUJFVU5yUUVnQUVFbU5nSWNJQUFnQkRZQ0RDQUFJQTFCQVdvMkFoUkJBQ0VRRE9VQkN5QVFRUlZHRGFzQklBQkJBRFlDSENBQUlBRTJBaFFnQUVIOWpZQ0FBRFlDRUNBQVFSMDJBZ3hCQUNFUURPUUJDeUFBUVNjMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU00d0VMSUJBaEFVRUJJUlFDUUFKQUFrQUNRQUpBQWtBQ1FDQUFMUUFzUVg1cURnY0dCUVVEQVFJQUJRc2dBQ0FBTHdFd1FRaHlPd0V3REFNTFFRSWhGQXdCQzBFRUlSUUxJQUJCQVRvQUxDQUFJQUF2QVRBZ0ZISTdBVEFMSUJBaEFRdEJLeUVRRE1vQkN5QUFRUUEyQWh3Z0FDQVFOZ0lVSUFCQnE1S0FnQUEyQWhBZ0FFRUxOZ0lNUVFBaEVBemlBUXNnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZUdQZ0lBQU5nSVFJQUJCQ2pZQ0RFRUFJUkFNNFFFTElBQkJBRG9BTENBUUlRRU12UUVMSUJBaEFVRUJJUlFDUUFKQUFrQUNRQUpBSUFBdEFDeEJlMm9PQkFNQkFnQUZDeUFBSUFBdkFUQkJDSEk3QVRBTUF3dEJBaUVVREFFTFFRUWhGQXNnQUVFQk9nQXNJQUFnQUM4Qk1DQVVjanNCTUFzZ0VDRUJDMEVwSVJBTXhRRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSHdsSUNBQURZQ0VDQUFRUU0yQWd4QkFDRVFETjBCQ3dKQUlBNHRBQUJCRFVjTkFDQUFLQUlFSVFFZ0FFRUFOZ0lFQWtBZ0FDQUJJQTRRc1lDQWdBQWlBUTBBSUE1QkFXb2hBUXgxQ3lBQVFTdzJBaHdnQUNBQk5nSU1JQUFnRGtFQmFqWUNGRUVBSVJBTTNRRUxJQUF0QUMxQkFYRkZEUUZCeEFFaEVBekRBUXNDUUNBT0lBSkhEUUJCTFNFUUROd0JDd0pBQWtBRFFBSkFJQTR0QUFCQmRtb09CQUlBQUFNQUN5QU9RUUZxSWc0Z0FrY05BQXRCTFNFUUROMEJDeUFBS0FJRUlRRWdBRUVBTmdJRUFrQWdBQ0FCSUE0UXNZQ0FnQUFpQVEwQUlBNGhBUXgwQ3lBQVFTdzJBaHdnQUNBT05nSVVJQUFnQVRZQ0RFRUFJUkFNM0FFTElBQW9BZ1FoQVNBQVFRQTJBZ1FDUUNBQUlBRWdEaEN4Z0lDQUFDSUJEUUFnRGtFQmFpRUJESE1MSUFCQkxEWUNIQ0FBSUFFMkFnd2dBQ0FPUVFGcU5nSVVRUUFoRUF6YkFRc2dBQ2dDQkNFRUlBQkJBRFlDQkNBQUlBUWdEaEN4Z0lDQUFDSUVEYUFCSUE0aEFRek9BUXNnRUVFc1J3MEJJQUZCQVdvaEVFRUJJUUVDUUFKQUFrQUNRQUpBSUFBdEFDeEJlMm9PQkFNQkFnUUFDeUFRSVFFTUJBdEJBaUVCREFFTFFRUWhBUXNnQUVFQk9nQXNJQUFnQUM4Qk1DQUJjanNCTUNBUUlRRU1BUXNnQUNBQUx3RXdRUWh5T3dFd0lCQWhBUXRCT1NFUURMOEJDeUFBUVFBNkFDd2dBU0VCQzBFMElSQU12UUVMSUFBZ0FDOEJNRUVnY2pzQk1DQUJJUUVNQWdzZ0FDZ0NCQ0VFSUFCQkFEWUNCQUpBSUFBZ0JDQUJFTEdBZ0lBQUlnUU5BQ0FCSVFFTXh3RUxJQUJCTnpZQ0hDQUFJQUUyQWhRZ0FDQUVOZ0lNUVFBaEVBelVBUXNnQUVFSU9nQXNJQUVoQVF0Qk1DRVFETGtCQ3dKQUlBQXRBQ2hCQVVZTkFDQUJJUUVNQkFzZ0FDMEFMVUVJY1VVTmt3RWdBU0VCREFNTElBQXRBREJCSUhFTmxBRkJ4UUVoRUF5M0FRc0NRQ0FQSUFKR0RRQUNRQU5BQWtBZ0R5MEFBRUZRYWlJQlFmOEJjVUVLU1EwQUlBOGhBVUUxSVJBTXVnRUxJQUFwQXlBaUVVS1pzK2JNbWJQbXpCbFdEUUVnQUNBUlFncCtJaEUzQXlBZ0VTQUJyVUwvQVlNaUVrSi9oVllOQVNBQUlCRWdFbnczQXlBZ0QwRUJhaUlQSUFKSERRQUxRVGtoRUF6UkFRc2dBQ2dDQkNFQ0lBQkJBRFlDQkNBQUlBSWdEMEVCYWlJRUVMR0FnSUFBSWdJTmxRRWdCQ0VCRE1NQkMwRTVJUkFNendFTEFrQWdBQzhCTUNJQlFRaHhSUTBBSUFBdEFDaEJBVWNOQUNBQUxRQXRRUWh4UlEyUUFRc2dBQ0FCUWZmN0EzRkJnQVJ5T3dFd0lBOGhBUXRCTnlFUURMUUJDeUFBSUFBdkFUQkJFSEk3QVRBTXF3RUxJQkJCRlVZTml3RWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFmQ09nSUFBTmdJUUlBQkJIRFlDREVFQUlSQU15d0VMSUFCQnd3QTJBaHdnQUNBQk5nSU1JQUFnRFVFQmFqWUNGRUVBSVJBTXlnRUxBa0FnQVMwQUFFRTZSdzBBSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ3ZnSUNBQUNJUURRQWdBVUVCYWlFQkRHTUxJQUJCd3dBMkFod2dBQ0FRTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNeWdFTElBQkJBRFlDSENBQUlBRTJBaFFnQUVHeGtZQ0FBRFlDRUNBQVFRbzJBZ3hCQUNFUURNa0JDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkJvSm1BZ0FBMkFoQWdBRUVlTmdJTVFRQWhFQXpJQVFzZ0FFRUFOZ0lBQ3lBQVFZQVNPd0VxSUFBZ0YwRUJhaUlCSUFJUXFJQ0FnQUFpRUEwQklBRWhBUXRCeHdBaEVBeXNBUXNnRUVFVlJ3MkRBU0FBUWRFQU5nSWNJQUFnQVRZQ0ZDQUFRZU9YZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNeEFFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkNuZ0lDQUFDSVFEUUFnQVNFQkRGNExJQUJCMGdBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU13d0VMSUFCQkFEWUNIQ0FBSUJRMkFoUWdBRUhCcUlDQUFEWUNFQ0FBUVFjMkFnd2dBRUVBTmdJQVFRQWhFQXpDQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVhRc2dBRUhUQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBekJBUXRCQUNFUUlBQkJBRFlDSENBQUlBRTJBaFFnQUVHQWtZQ0FBRFlDRUNBQVFRazJBZ3dNd0FFTElCQkJGVVlOZlNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCbEkyQWdBQTJBaEFnQUVFaE5nSU1RUUFoRUF5L0FRdEJBU0VXUVFBaEYwRUFJUlJCQVNFUUN5QUFJQkE2QUNzZ0FVRUJhaUVCQWtBQ1FDQUFMUUF0UVJCeERRQUNRQUpBQWtBZ0FDMEFLZzREQVFBQ0JBc2dGa1VOQXd3Q0N5QVVEUUVNQWdzZ0YwVU5BUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLMkFnSUFBSWhBTkFDQUJJUUVNWEFzZ0FFSFlBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF5K0FRc2dBQ2dDQkNFRUlBQkJBRFlDQkFKQUlBQWdCQ0FCRUsyQWdJQUFJZ1FOQUNBQklRRU1yUUVMSUFCQjJRQTJBaHdnQUNBQk5nSVVJQUFnQkRZQ0RFRUFJUkFNdlFFTElBQW9BZ1FoQkNBQVFRQTJBZ1FDUUNBQUlBUWdBUkN0Z0lDQUFDSUVEUUFnQVNFQkRLc0JDeUFBUWRvQU5nSWNJQUFnQVRZQ0ZDQUFJQVEyQWd4QkFDRVFETHdCQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVFyWUNBZ0FBaUJBMEFJQUVoQVF5cEFRc2dBRUhjQURZQ0hDQUFJQUUyQWhRZ0FDQUVOZ0lNUVFBaEVBeTdBUXNDUUNBQkxRQUFRVkJxSWhCQi93RnhRUXBQRFFBZ0FDQVFPZ0FxSUFGQkFXb2hBVUhQQUNFUURLSUJDeUFBS0FJRUlRUWdBRUVBTmdJRUFrQWdBQ0FFSUFFUXJZQ0FnQUFpQkEwQUlBRWhBUXluQVFzZ0FFSGVBRFlDSENBQUlBRTJBaFFnQUNBRU5nSU1RUUFoRUF5NkFRc2dBRUVBTmdJQUlCZEJBV29oQVFKQUlBQXRBQ2xCSTA4TkFDQUJJUUVNV1FzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWRPSmdJQUFOZ0lRSUFCQkNEWUNERUVBSVJBTXVRRUxJQUJCQURZQ0FBdEJBQ0VRSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUdRczRDQUFEWUNFQ0FBUVFnMkFnd010d0VMSUFCQkFEWUNBQ0FYUVFGcUlRRUNRQ0FBTFFBcFFTRkhEUUFnQVNFQkRGWUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR2Jpb0NBQURZQ0VDQUFRUWcyQWd4QkFDRVFETFlCQ3lBQVFRQTJBZ0FnRjBFQmFpRUJBa0FnQUMwQUtTSVFRVjFxUVF0UERRQWdBU0VCREZVTEFrQWdFRUVHU3cwQVFRRWdFSFJCeWdCeFJRMEFJQUVoQVF4VkMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZmVKZ0lBQU5nSVFJQUJCQ0RZQ0RBeTFBUXNnRUVFVlJnMXhJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFRzVqWUNBQURZQ0VDQUFRUm8yQWd4QkFDRVFETFFCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4VUN5QUFRZVVBTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURMTUJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXA0Q0FnQUFpRUEwQUlBRWhBUXhOQ3lBQVFkSUFOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRRExJQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcDRDQWdBQWlFQTBBSUFFaEFReE5DeUFBUWRNQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFETEVCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4UkN5QUFRZVVBTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURMQUJDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkJ4b3FBZ0FBMkFoQWdBRUVITmdJTVFRQWhFQXl2QVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVNRc2dBRUhTQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeXVBUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLZUFnSUFBSWhBTkFDQUJJUUVNU1FzZ0FFSFRBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF5dEFRc2dBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUtlQWdJQUFJaEFOQUNBQklRRU1UUXNnQUVIbEFEWUNIQ0FBSUFFMkFoUWdBQ0FRTmdJTVFRQWhFQXlzQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWR5SWdJQUFOZ0lRSUFCQkJ6WUNERUVBSVJBTXF3RUxJQkJCUDBjTkFTQUJRUUZxSVFFTFFRVWhFQXlRQVF0QkFDRVFJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSDlrb0NBQURZQ0VDQUFRUWMyQWd3TXFBRUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERUlMSUFCQjBnQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNcHdFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkNuZ0lDQUFDSVFEUUFnQVNFQkRFSUxJQUJCMHdBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU1wZ0VMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ25nSUNBQUNJUURRQWdBU0VCREVZTElBQkI1UUEyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTXBRRUxJQUFvQWdRaEFTQUFRUUEyQWdRQ1FDQUFJQUVnRkJDbmdJQ0FBQ0lCRFFBZ0ZDRUJERDhMSUFCQjBnQTJBaHdnQUNBVU5nSVVJQUFnQVRZQ0RFRUFJUkFNcEFFTElBQW9BZ1FoQVNBQVFRQTJBZ1FDUUNBQUlBRWdGQkNuZ0lDQUFDSUJEUUFnRkNFQkREOExJQUJCMHdBMkFod2dBQ0FVTmdJVUlBQWdBVFlDREVFQUlSQU1vd0VMSUFBb0FnUWhBU0FBUVFBMkFnUUNRQ0FBSUFFZ0ZCQ25nSUNBQUNJQkRRQWdGQ0VCREVNTElBQkI1UUEyQWh3Z0FDQVVOZ0lVSUFBZ0FUWUNERUVBSVJBTW9nRUxJQUJCQURZQ0hDQUFJQlEyQWhRZ0FFSERqNENBQURZQ0VDQUFRUWMyQWd4QkFDRVFES0VCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCdzQrQWdBQTJBaEFnQUVFSE5nSU1RUUFoRUF5Z0FRdEJBQ0VRSUFCQkFEWUNIQ0FBSUJRMkFoUWdBRUdNbklDQUFEWUNFQ0FBUVFjMkFnd01ud0VMSUFCQkFEWUNIQ0FBSUJRMkFoUWdBRUdNbklDQUFEWUNFQ0FBUVFjMkFneEJBQ0VRREo0QkN5QUFRUUEyQWh3Z0FDQVVOZ0lVSUFCQi9wR0FnQUEyQWhBZ0FFRUhOZ0lNUVFBaEVBeWRBUXNnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWTZiZ0lBQU5nSVFJQUJCQmpZQ0RFRUFJUkFNbkFFTElCQkJGVVlOVnlBQVFRQTJBaHdnQUNBQk5nSVVJQUJCekk2QWdBQTJBaEFnQUVFZ05nSU1RUUFoRUF5YkFRc2dBRUVBTmdJQUlCQkJBV29oQVVFa0lSQUxJQUFnRURvQUtTQUFLQUlFSVJBZ0FFRUFOZ0lFSUFBZ0VDQUJFS3VBZ0lBQUloQU5WQ0FCSVFFTVBnc2dBRUVBTmdJQUMwRUFJUkFnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRZkdiZ0lBQU5nSVFJQUJCQmpZQ0RBeVhBUXNnQVVFVlJnMVFJQUJCQURZQ0hDQUFJQVUyQWhRZ0FFSHdqSUNBQURZQ0VDQUFRUnMyQWd4QkFDRVFESllCQ3lBQUtBSUVJUVVnQUVFQU5nSUVJQUFnQlNBUUVLbUFnSUFBSWdVTkFTQVFRUUZxSVFVTFFhMEJJUkFNZXdzZ0FFSEJBVFlDSENBQUlBVTJBZ3dnQUNBUVFRRnFOZ0lVUVFBaEVBeVRBUXNnQUNnQ0JDRUdJQUJCQURZQ0JDQUFJQVlnRUJDcGdJQ0FBQ0lHRFFFZ0VFRUJhaUVHQzBHdUFTRVFESGdMSUFCQndnRTJBaHdnQUNBR05nSU1JQUFnRUVFQmFqWUNGRUVBSVJBTWtBRUxJQUJCQURZQ0hDQUFJQWMyQWhRZ0FFR1hpNENBQURZQ0VDQUFRUTAyQWd4QkFDRVFESThCQ3lBQVFRQTJBaHdnQUNBSU5nSVVJQUJCNDVDQWdBQTJBaEFnQUVFSk5nSU1RUUFoRUF5T0FRc2dBRUVBTmdJY0lBQWdDRFlDRkNBQVFaU05nSUFBTmdJUUlBQkJJVFlDREVFQUlSQU1qUUVMUVFFaEZrRUFJUmRCQUNFVVFRRWhFQXNnQUNBUU9nQXJJQWxCQVdvaENBSkFBa0FnQUMwQUxVRVFjUTBBQWtBQ1FBSkFJQUF0QUNvT0F3RUFBZ1FMSUJaRkRRTU1BZ3NnRkEwQkRBSUxJQmRGRFFFTElBQW9BZ1FoRUNBQVFRQTJBZ1FnQUNBUUlBZ1FyWUNBZ0FBaUVFVU5QU0FBUWNrQk5nSWNJQUFnQ0RZQ0ZDQUFJQkEyQWd4QkFDRVFESXdCQ3lBQUtBSUVJUVFnQUVFQU5nSUVJQUFnQkNBSUVLMkFnSUFBSWdSRkRYWWdBRUhLQVRZQ0hDQUFJQWcyQWhRZ0FDQUVOZ0lNUVFBaEVBeUxBUXNnQUNnQ0JDRUVJQUJCQURZQ0JDQUFJQVFnQ1JDdGdJQ0FBQ0lFUlExMElBQkJ5d0UyQWh3Z0FDQUpOZ0lVSUFBZ0JEWUNERUVBSVJBTWlnRUxJQUFvQWdRaEJDQUFRUUEyQWdRZ0FDQUVJQW9RcllDQWdBQWlCRVVOY2lBQVFjMEJOZ0ljSUFBZ0NqWUNGQ0FBSUFRMkFneEJBQ0VRRElrQkN3SkFJQXN0QUFCQlVHb2lFRUgvQVhGQkNrOE5BQ0FBSUJBNkFDb2dDMEVCYWlFS1FiWUJJUkFNY0FzZ0FDZ0NCQ0VFSUFCQkFEWUNCQ0FBSUFRZ0N4Q3RnSUNBQUNJRVJRMXdJQUJCendFMkFod2dBQ0FMTmdJVUlBQWdCRFlDREVFQUlSQU1pQUVMSUFCQkFEWUNIQ0FBSUFRMkFoUWdBRUdRczRDQUFEWUNFQ0FBUVFnMkFnd2dBRUVBTmdJQVFRQWhFQXlIQVFzZ0FVRVZSZzAvSUFCQkFEWUNIQ0FBSUF3MkFoUWdBRUhNam9DQUFEWUNFQ0FBUVNBMkFneEJBQ0VRRElZQkN5QUFRWUVFT3dFb0lBQW9BZ1FoRUNBQVFnQTNBd0FnQUNBUUlBeEJBV29pREJDcmdJQ0FBQ0lRUlEwNElBQkIwd0UyQWh3Z0FDQU1OZ0lVSUFBZ0VEWUNERUVBSVJBTWhRRUxJQUJCQURZQ0FBdEJBQ0VRSUFCQkFEWUNIQ0FBSUFRMkFoUWdBRUhZbTRDQUFEWUNFQ0FBUVFnMkFnd01nd0VMSUFBb0FnUWhFQ0FBUWdBM0F3QWdBQ0FRSUF0QkFXb2lDeENyZ0lDQUFDSVFEUUZCeGdFaEVBeHBDeUFBUVFJNkFDZ01WUXNnQUVIVkFUWUNIQ0FBSUFzMkFoUWdBQ0FRTmdJTVFRQWhFQXlBQVFzZ0VFRVZSZzAzSUFCQkFEWUNIQ0FBSUFRMkFoUWdBRUdraklDQUFEWUNFQ0FBUVJBMkFneEJBQ0VRREg4TElBQXRBRFJCQVVjTk5DQUFJQVFnQWhDOGdJQ0FBQ0lRUlEwMElCQkJGVWNOTlNBQVFkd0JOZ0ljSUFBZ0JEWUNGQ0FBUWRXV2dJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTWZndEJBQ0VRSUFCQkFEWUNIQ0FBUWErTGdJQUFOZ0lRSUFCQkFqWUNEQ0FBSUJSQkFXbzJBaFFNZlF0QkFDRVFER01MUVFJaEVBeGlDMEVOSVJBTVlRdEJEeUVRREdBTFFTVWhFQXhmQzBFVElSQU1YZ3RCRlNFUURGMExRUlloRUF4Y0MwRVhJUkFNV3d0QkdDRVFERm9MUVJraEVBeFpDMEVhSVJBTVdBdEJHeUVRREZjTFFSd2hFQXhXQzBFZElSQU1WUXRCSHlFUURGUUxRU0VoRUF4VEMwRWpJUkFNVWd0QnhnQWhFQXhSQzBFdUlSQU1VQXRCTHlFUURFOExRVHNoRUF4T0MwRTlJUkFNVFF0QnlBQWhFQXhNQzBISkFDRVFERXNMUWNzQUlSQU1TZ3RCekFBaEVBeEpDMEhPQUNFUURFZ0xRZEVBSVJBTVJ3dEIxUUFoRUF4R0MwSFlBQ0VRREVVTFFka0FJUkFNUkF0QjJ3QWhFQXhEQzBIa0FDRVFERUlMUWVVQUlSQU1RUXRCOFFBaEVBeEFDMEgwQUNFUUREOExRWTBCSVJBTVBndEJsd0VoRUF3OUMwR3BBU0VRRER3TFFhd0JJUkFNT3d0QndBRWhFQXc2QzBHNUFTRVFERGtMUWE4QklSQU1PQXRCc1FFaEVBdzNDMEd5QVNFUUREWUxRYlFCSVJBTU5RdEJ0UUVoRUF3MEMwRzZBU0VRRERNTFFiMEJJUkFNTWd0QnZ3RWhFQXd4QzBIQkFTRVFEREFMSUFCQkFEWUNIQ0FBSUFRMkFoUWdBRUhwaTRDQUFEWUNFQ0FBUVI4MkFneEJBQ0VRREVnTElBQkIyd0UyQWh3Z0FDQUVOZ0lVSUFCQitwYUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeEhDeUFBUWZnQU5nSWNJQUFnRERZQ0ZDQUFRY3FZZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNUmdzZ0FFSFJBRFlDSENBQUlBVTJBaFFnQUVHd2w0Q0FBRFlDRUNBQVFSVTJBZ3hCQUNFUURFVUxJQUJCK1FBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU1SQXNnQUVINEFEWUNIQ0FBSUFFMkFoUWdBRUhLbUlDQUFEWUNFQ0FBUVJVMkFneEJBQ0VRREVNTElBQkI1QUEyQWh3Z0FDQUJOZ0lVSUFCQjQ1ZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeENDeUFBUWRjQU5nSWNJQUFnQVRZQ0ZDQUFRY21YZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNUVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWJtTmdJQUFOZ0lRSUFCQkdqWUNERUVBSVJBTVFBc2dBRUhDQURZQ0hDQUFJQUUyQWhRZ0FFSGptSUNBQURZQ0VDQUFRUlUyQWd4QkFDRVFERDhMSUFCQkFEWUNCQ0FBSUE4Z0R4Q3hnSUNBQUNJRVJRMEJJQUJCT2pZQ0hDQUFJQVEyQWd3Z0FDQVBRUUZxTmdJVVFRQWhFQXcrQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVFzWUNBZ0FBaUJFVU5BQ0FBUVRzMkFod2dBQ0FFTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNUGdzZ0FVRUJhaUVCREMwTElBOUJBV29oQVF3dEN5QUFRUUEyQWh3Z0FDQVBOZ0lVSUFCQjVKS0FnQUEyQWhBZ0FFRUVOZ0lNUVFBaEVBdzdDeUFBUVRZMkFod2dBQ0FFTmdJVUlBQWdBallDREVFQUlSQU1PZ3NnQUVFdU5nSWNJQUFnRGpZQ0ZDQUFJQVEyQWd4QkFDRVFERGtMSUFCQjBBQTJBaHdnQUNBQk5nSVVJQUJCa1ppQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3NEN5QU5RUUZxSVFFTUxBc2dBRUVWTmdJY0lBQWdBVFlDRkNBQVFZS1pnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1OZ3NnQUVFYk5nSWNJQUFnQVRZQ0ZDQUFRWkdYZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTlFzZ0FFRVBOZ0ljSUFBZ0FUWUNGQ0FBUVpHWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTU5Bc2dBRUVMTmdJY0lBQWdBVFlDRkNBQVFaR1hnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1Nd3NnQUVFYU5nSWNJQUFnQVRZQ0ZDQUFRWUtaZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTWdzZ0FFRUxOZ0ljSUFBZ0FUWUNGQ0FBUVlLWmdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTU1Rc2dBRUVLTmdJY0lBQWdBVFlDRkNBQVFlU1dnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1NQXNnQUVFZU5nSWNJQUFnQVRZQ0ZDQUFRZm1YZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTHdzZ0FFRUFOZ0ljSUFBZ0VEWUNGQ0FBUWRxTmdJQUFOZ0lRSUFCQkZEWUNERUVBSVJBTUxnc2dBRUVFTmdJY0lBQWdBVFlDRkNBQVFiQ1lnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1MUXNnQUVFQU5nSUFJQXRCQVdvaEN3dEJ1QUVoRUF3U0N5QUFRUUEyQWdBZ0VFRUJhaUVCUWZVQUlSQU1FUXNnQVNFQkFrQWdBQzBBS1VFRlJ3MEFRZU1BSVJBTUVRdEI0Z0FoRUF3UUMwRUFJUkFnQUVFQU5nSWNJQUJCNUpHQWdBQTJBaEFnQUVFSE5nSU1JQUFnRkVFQmFqWUNGQXdvQ3lBQVFRQTJBZ0FnRjBFQmFpRUJRY0FBSVJBTURndEJBU0VCQ3lBQUlBRTZBQ3dnQUVFQU5nSUFJQmRCQVdvaEFRdEJLQ0VRREFzTElBRWhBUXRCT0NFUURBa0xBa0FnQVNJUElBSkdEUUFEUUFKQUlBOHRBQUJCZ0w2QWdBQnFMUUFBSWdGQkFVWU5BQ0FCUVFKSERRTWdEMEVCYWlFQkRBUUxJQTlCQVdvaUR5QUNSdzBBQzBFK0lSQU1JZ3RCUGlFUURDRUxJQUJCQURvQUxDQVBJUUVNQVF0QkN5RVFEQVlMUVRvaEVBd0ZDeUFCUVFGcUlRRkJMU0VRREFRTElBQWdBVG9BTENBQVFRQTJBZ0FnRmtFQmFpRUJRUXdoRUF3REN5QUFRUUEyQWdBZ0YwRUJhaUVCUVFvaEVBd0NDeUFBUVFBMkFnQUxJQUJCQURvQUxDQU5JUUZCQ1NFUURBQUxDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0N6WUNGQ0FBUWMyUWdJQUFOZ0lRSUFCQkNUWUNEQXdYQzBFQUlSQWdBRUVBTmdJY0lBQWdDallDRkNBQVFlbUtnSUFBTmdJUUlBQkJDVFlDREF3V0MwRUFJUkFnQUVFQU5nSWNJQUFnQ1RZQ0ZDQUFRYmVRZ0lBQU5nSVFJQUJCQ1RZQ0RBd1ZDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0NEWUNGQ0FBUVp5UmdJQUFOZ0lRSUFCQkNUWUNEQXdVQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFjMlFnSUFBTmdJUUlBQkJDVFlDREF3VEMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZW1LZ0lBQU5nSVFJQUJCQ1RZQ0RBd1NDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWJlUWdJQUFOZ0lRSUFCQkNUWUNEQXdSQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFaeVJnSUFBTmdJUUlBQkJDVFlDREF3UUMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWmVWZ0lBQU5nSVFJQUJCRHpZQ0RBd1BDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVplVmdJQUFOZ0lRSUFCQkR6WUNEQXdPQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFjQ1NnSUFBTmdJUUlBQkJDellDREF3TkMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWldKZ0lBQU5nSVFJQUJCQ3pZQ0RBd01DMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWVHUGdJQUFOZ0lRSUFCQkNqWUNEQXdMQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFmdVBnSUFBTmdJUUlBQkJDallDREF3S0MwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZkdaZ0lBQU5nSVFJQUJCQWpZQ0RBd0pDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWNTVWdJQUFOZ0lRSUFCQkFqWUNEQXdJQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFmS1ZnSUFBTmdJUUlBQkJBallDREF3SEN5QUFRUUkyQWh3Z0FDQUJOZ0lVSUFCQm5KcUFnQUEyQWhBZ0FFRVdOZ0lNUVFBaEVBd0dDMEVCSVJBTUJRdEIxQUFoRUNBQklnUWdBa1lOQkNBRFFRaHFJQUFnQkNBQ1FkakNnSUFBUVFvUXhZQ0FnQUFnQXlnQ0RDRUVJQU1vQWdnT0F3RUVBZ0FMRU1xQWdJQUFBQXNnQUVFQU5nSWNJQUJCdFpxQWdBQTJBaEFnQUVFWE5nSU1JQUFnQkVFQmFqWUNGRUVBSVJBTUFnc2dBRUVBTmdJY0lBQWdCRFlDRkNBQVFjcWFnSUFBTmdJUUlBQkJDVFlDREVFQUlSQU1BUXNDUUNBQklnUWdBa2NOQUVFaUlSQU1BUXNnQUVHSmdJQ0FBRFlDQ0NBQUlBUTJBZ1JCSVNFUUN5QURRUkJxSklDQWdJQUFJQkFMcndFQkFuOGdBU2dDQUNFR0FrQUNRQ0FDSUFOR0RRQWdCQ0FHYWlFRUlBWWdBMm9nQW1zaEJ5QUNJQVpCZjNNZ0JXb2lCbW9oQlFOQUFrQWdBaTBBQUNBRUxRQUFSZzBBUVFJaEJBd0RDd0pBSUFZTkFFRUFJUVFnQlNFQ0RBTUxJQVpCZjJvaEJpQUVRUUZxSVFRZ0FrRUJhaUlDSUFOSERRQUxJQWNoQmlBRElRSUxJQUJCQVRZQ0FDQUJJQVkyQWdBZ0FDQUNOZ0lFRHdzZ0FVRUFOZ0lBSUFBZ0JEWUNBQ0FBSUFJMkFnUUxDZ0FnQUJESGdJQ0FBQXZ5TmdFTGZ5T0FnSUNBQUVFUWF5SUJKSUNBZ0lBQUFrQkJBQ2dDb05DQWdBQU5BRUVBRU11QWdJQUFRWURVaElBQWF5SUNRZGtBU1EwQVFRQWhBd0pBUVFBb0F1RFRnSUFBSWdRTkFFRUFRbjgzQXV6VGdJQUFRUUJDZ0lDRWdJQ0F3QUEzQXVUVGdJQUFRUUFnQVVFSWFrRndjVUhZcXRXcUJYTWlCRFlDNE5PQWdBQkJBRUVBTmdMMDA0Q0FBRUVBUVFBMkFzVFRnSUFBQzBFQUlBSTJBc3pUZ0lBQVFRQkJnTlNFZ0FBMkFzalRnSUFBUVFCQmdOU0VnQUEyQXBqUWdJQUFRUUFnQkRZQ3JOQ0FnQUJCQUVGL05nS28wSUNBQUFOQUlBTkJ4TkNBZ0FCcUlBTkJ1TkNBZ0FCcUlnUTJBZ0FnQkNBRFFiRFFnSUFBYWlJRk5nSUFJQU5Cdk5DQWdBQnFJQVUyQWdBZ0EwSE0wSUNBQUdvZ0EwSEEwSUNBQUdvaUJUWUNBQ0FGSUFRMkFnQWdBMEhVMElDQUFHb2dBMEhJMElDQUFHb2lCRFlDQUNBRUlBVTJBZ0FnQTBIUTBJQ0FBR29nQkRZQ0FDQURRU0JxSWdOQmdBSkhEUUFMUVlEVWhJQUFRWGhCZ05TRWdBQnJRUTl4UVFCQmdOU0VnQUJCQ0dwQkQzRWJJZ05xSWdSQkJHb2dBa0ZJYWlJRklBTnJJZ05CQVhJMkFnQkJBRUVBS0FMdzA0Q0FBRFlDcE5DQWdBQkJBQ0FETmdLVTBJQ0FBRUVBSUFRMkFxRFFnSUFBUVlEVWhJQUFJQVZxUVRnMkFnUUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI3QUZMRFFBQ1FFRUFLQUtJMElDQUFDSUdRUkFnQUVFVGFrRndjU0FBUVF0Skd5SUNRUU4ySWdSMklnTkJBM0ZGRFFBQ1FBSkFJQU5CQVhFZ0JISkJBWE1pQlVFRGRDSUVRYkRRZ0lBQWFpSURJQVJCdU5DQWdBQnFLQUlBSWdRb0FnZ2lBa2NOQUVFQUlBWkJmaUFGZDNFMkFvalFnSUFBREFFTElBTWdBallDQ0NBQ0lBTTJBZ3dMSUFSQkNHb2hBeUFFSUFWQkEzUWlCVUVEY2pZQ0JDQUVJQVZxSWdRZ0JDZ0NCRUVCY2pZQ0JBd01DeUFDUVFBb0FwRFFnSUFBSWdkTkRRRUNRQ0FEUlEwQUFrQUNRQ0FESUFSMFFRSWdCSFFpQTBFQUlBTnJjbkVpQTBFQUlBTnJjVUYvYWlJRElBTkJESFpCRUhFaUEzWWlCRUVGZGtFSWNTSUZJQU55SUFRZ0JYWWlBMEVDZGtFRWNTSUVjaUFESUFSMklnTkJBWFpCQW5FaUJISWdBeUFFZGlJRFFRRjJRUUZ4SWdSeUlBTWdCSFpxSWdSQkEzUWlBMEd3MElDQUFHb2lCU0FEUWJqUWdJQUFhaWdDQUNJREtBSUlJZ0JIRFFCQkFDQUdRWDRnQkhkeElnWTJBb2pRZ0lBQURBRUxJQVVnQURZQ0NDQUFJQVUyQWd3TElBTWdBa0VEY2pZQ0JDQURJQVJCQTNRaUJHb2dCQ0FDYXlJRk5nSUFJQU1nQW1vaUFDQUZRUUZ5TmdJRUFrQWdCMFVOQUNBSFFYaHhRYkRRZ0lBQWFpRUNRUUFvQXB6UWdJQUFJUVFDUUFKQUlBWkJBU0FIUVFOMmRDSUljUTBBUVFBZ0JpQUljallDaU5DQWdBQWdBaUVJREFFTElBSW9BZ2doQ0FzZ0NDQUVOZ0lNSUFJZ0JEWUNDQ0FFSUFJMkFnd2dCQ0FJTmdJSUN5QURRUWhxSVFOQkFDQUFOZ0tjMElDQUFFRUFJQVUyQXBEUWdJQUFEQXdMUVFBb0FvelFnSUFBSWdsRkRRRWdDVUVBSUFscmNVRi9haUlESUFOQkRIWkJFSEVpQTNZaUJFRUZka0VJY1NJRklBTnlJQVFnQlhZaUEwRUNka0VFY1NJRWNpQURJQVIySWdOQkFYWkJBbkVpQkhJZ0F5QUVkaUlEUVFGMlFRRnhJZ1J5SUFNZ0JIWnFRUUowUWJqU2dJQUFhaWdDQUNJQUtBSUVRWGh4SUFKcklRUWdBQ0VGQWtBRFFBSkFJQVVvQWhBaUF3MEFJQVZCRkdvb0FnQWlBMFVOQWdzZ0F5Z0NCRUY0Y1NBQ2F5SUZJQVFnQlNBRVNTSUZHeUVFSUFNZ0FDQUZHeUVBSUFNaEJRd0FDd3NnQUNnQ0dDRUtBa0FnQUNnQ0RDSUlJQUJHRFFBZ0FDZ0NDQ0lEUVFBb0FwalFnSUFBU1JvZ0NDQUROZ0lJSUFNZ0NEWUNEQXdMQ3dKQUlBQkJGR29pQlNnQ0FDSUREUUFnQUNnQ0VDSURSUTBESUFCQkVHb2hCUXNEUUNBRklRc2dBeUlJUVJScUlnVW9BZ0FpQXcwQUlBaEJFR29oQlNBSUtBSVFJZ01OQUFzZ0MwRUFOZ0lBREFvTFFYOGhBaUFBUWI5L1N3MEFJQUJCRTJvaUEwRndjU0VDUVFBb0FvelFnSUFBSWdkRkRRQkJBQ0VMQWtBZ0FrR0FBa2tOQUVFZklRc2dBa0gvLy84SFN3MEFJQU5CQ0hZaUF5QURRWUQrUDJwQkVIWkJDSEVpQTNRaUJDQUVRWURnSDJwQkVIWkJCSEVpQkhRaUJTQUZRWUNBRDJwQkVIWkJBbkVpQlhSQkQzWWdBeUFFY2lBRmNtc2lBMEVCZENBQ0lBTkJGV3AyUVFGeGNrRWNhaUVMQzBFQUlBSnJJUVFDUUFKQUFrQUNRQ0FMUVFKMFFialNnSUFBYWlnQ0FDSUZEUUJCQUNFRFFRQWhDQXdCQzBFQUlRTWdBa0VBUVJrZ0MwRUJkbXNnQzBFZlJodDBJUUJCQUNFSUEwQUNRQ0FGS0FJRVFYaHhJQUpySWdZZ0JFOE5BQ0FHSVFRZ0JTRUlJQVlOQUVFQUlRUWdCU0VJSUFVaEF3d0RDeUFESUFWQkZHb29BZ0FpQmlBR0lBVWdBRUVkZGtFRWNXcEJFR29vQWdBaUJVWWJJQU1nQmhzaEF5QUFRUUYwSVFBZ0JRMEFDd3NDUUNBRElBaHlEUUJCQUNFSVFRSWdDM1FpQTBFQUlBTnJjaUFIY1NJRFJRMERJQU5CQUNBRGEzRkJmMm9pQXlBRFFReDJRUkJ4SWdOMklnVkJCWFpCQ0hFaUFDQURjaUFGSUFCMklnTkJBblpCQkhFaUJYSWdBeUFGZGlJRFFRRjJRUUp4SWdWeUlBTWdCWFlpQTBFQmRrRUJjU0lGY2lBRElBVjJha0VDZEVHNDBvQ0FBR29vQWdBaEF3c2dBMFVOQVFzRFFDQURLQUlFUVhoeElBSnJJZ1lnQkVraEFBSkFJQU1vQWhBaUJRMEFJQU5CRkdvb0FnQWhCUXNnQmlBRUlBQWJJUVFnQXlBSUlBQWJJUWdnQlNFRElBVU5BQXNMSUFoRkRRQWdCRUVBS0FLUTBJQ0FBQ0FDYTA4TkFDQUlLQUlZSVFzQ1FDQUlLQUlNSWdBZ0NFWU5BQ0FJS0FJSUlnTkJBQ2dDbU5DQWdBQkpHaUFBSUFNMkFnZ2dBeUFBTmdJTURBa0xBa0FnQ0VFVWFpSUZLQUlBSWdNTkFDQUlLQUlRSWdORkRRTWdDRUVRYWlFRkN3TkFJQVVoQmlBRElnQkJGR29pQlNnQ0FDSUREUUFnQUVFUWFpRUZJQUFvQWhBaUF3MEFDeUFHUVFBMkFnQU1DQXNDUUVFQUtBS1EwSUNBQUNJRElBSkpEUUJCQUNnQ25OQ0FnQUFoQkFKQUFrQWdBeUFDYXlJRlFSQkpEUUFnQkNBQ2FpSUFJQVZCQVhJMkFnUkJBQ0FGTmdLUTBJQ0FBRUVBSUFBMkFwelFnSUFBSUFRZ0Eyb2dCVFlDQUNBRUlBSkJBM0kyQWdRTUFRc2dCQ0FEUVFOeU5nSUVJQVFnQTJvaUF5QURLQUlFUVFGeU5nSUVRUUJCQURZQ25OQ0FnQUJCQUVFQU5nS1EwSUNBQUFzZ0JFRUlhaUVEREFvTEFrQkJBQ2dDbE5DQWdBQWlBQ0FDVFEwQVFRQW9BcURRZ0lBQUlnTWdBbW9pQkNBQUlBSnJJZ1ZCQVhJMkFnUkJBQ0FGTmdLVTBJQ0FBRUVBSUFRMkFxRFFnSUFBSUFNZ0FrRURjallDQkNBRFFRaHFJUU1NQ2dzQ1FBSkFRUUFvQXVEVGdJQUFSUTBBUVFBb0F1alRnSUFBSVFRTUFRdEJBRUovTndMczA0Q0FBRUVBUW9DQWhJQ0FnTUFBTndMazA0Q0FBRUVBSUFGQkRHcEJjSEZCMktyVnFnVnpOZ0xnMDRDQUFFRUFRUUEyQXZUVGdJQUFRUUJCQURZQ3hOT0FnQUJCZ0lBRUlRUUxRUUFoQXdKQUlBUWdBa0hIQUdvaUIyb2lCa0VBSUFScklndHhJZ2dnQWtzTkFFRUFRVEEyQXZqVGdJQUFEQW9MQWtCQkFDZ0N3Tk9BZ0FBaUEwVU5BQUpBUVFBb0FyalRnSUFBSWdRZ0NHb2lCU0FFVFEwQUlBVWdBMDBOQVF0QkFDRURRUUJCTURZQytOT0FnQUFNQ2d0QkFDMEF4Tk9BZ0FCQkJIRU5CQUpBQWtBQ1FFRUFLQUtnMElDQUFDSUVSUTBBUWNqVGdJQUFJUU1EUUFKQUlBTW9BZ0FpQlNBRVN3MEFJQVVnQXlnQ0JHb2dCRXNOQXdzZ0F5Z0NDQ0lERFFBTEMwRUFFTXVBZ0lBQUlnQkJmMFlOQlNBSUlRWUNRRUVBS0FMazA0Q0FBQ0lEUVg5cUlnUWdBSEZGRFFBZ0NDQUFheUFFSUFCcVFRQWdBMnR4YWlFR0N5QUdJQUpORFFVZ0JrSCsvLy8vQjBzTkJRSkFRUUFvQXNEVGdJQUFJZ05GRFFCQkFDZ0N1Tk9BZ0FBaUJDQUdhaUlGSUFSTkRRWWdCU0FEU3cwR0N5QUdFTXVBZ0lBQUlnTWdBRWNOQVF3SEN5QUdJQUJySUF0eElnWkIvdi8vL3dkTERRUWdCaERMZ0lDQUFDSUFJQU1vQWdBZ0F5Z0NCR3BHRFFNZ0FDRURDd0pBSUFOQmYwWU5BQ0FDUWNnQWFpQUdUUTBBQWtBZ0J5QUdhMEVBS0FMbzA0Q0FBQ0lFYWtFQUlBUnJjU0lFUWY3Ly8vOEhUUTBBSUFNaEFBd0hDd0pBSUFRUXk0Q0FnQUJCZjBZTkFDQUVJQVpxSVFZZ0F5RUFEQWNMUVFBZ0Jtc1F5NENBZ0FBYURBUUxJQU1oQUNBRFFYOUhEUVVNQXd0QkFDRUlEQWNMUVFBaEFBd0ZDeUFBUVg5SERRSUxRUUJCQUNnQ3hOT0FnQUJCQkhJMkFzVFRnSUFBQ3lBSVFmNy8vLzhIU3cwQklBZ1F5NENBZ0FBaEFFRUFFTXVBZ0lBQUlRTWdBRUYvUmcwQklBTkJmMFlOQVNBQUlBTlBEUUVnQXlBQWF5SUdJQUpCT0dwTkRRRUxRUUJCQUNnQ3VOT0FnQUFnQm1vaUF6WUN1Tk9BZ0FBQ1FDQURRUUFvQXJ6VGdJQUFUUTBBUVFBZ0F6WUN2Tk9BZ0FBTEFrQUNRQUpBQWtCQkFDZ0NvTkNBZ0FBaUJFVU5BRUhJMDRDQUFDRURBMEFnQUNBREtBSUFJZ1VnQXlnQ0JDSUlha1lOQWlBREtBSUlJZ01OQUF3REN3c0NRQUpBUVFBb0FwalFnSUFBSWdORkRRQWdBQ0FEVHcwQkMwRUFJQUEyQXBqUWdJQUFDMEVBSVFOQkFDQUdOZ0xNMDRDQUFFRUFJQUEyQXNqVGdJQUFRUUJCZnpZQ3FOQ0FnQUJCQUVFQUtBTGcwNENBQURZQ3JOQ0FnQUJCQUVFQU5nTFUwNENBQUFOQUlBTkJ4TkNBZ0FCcUlBTkJ1TkNBZ0FCcUlnUTJBZ0FnQkNBRFFiRFFnSUFBYWlJRk5nSUFJQU5Cdk5DQWdBQnFJQVUyQWdBZ0EwSE0wSUNBQUdvZ0EwSEEwSUNBQUdvaUJUWUNBQ0FGSUFRMkFnQWdBMEhVMElDQUFHb2dBMEhJMElDQUFHb2lCRFlDQUNBRUlBVTJBZ0FnQTBIUTBJQ0FBR29nQkRZQ0FDQURRU0JxSWdOQmdBSkhEUUFMSUFCQmVDQUFhMEVQY1VFQUlBQkJDR3BCRDNFYklnTnFJZ1FnQmtGSWFpSUZJQU5ySWdOQkFYSTJBZ1JCQUVFQUtBTHcwNENBQURZQ3BOQ0FnQUJCQUNBRE5nS1UwSUNBQUVFQUlBUTJBcURRZ0lBQUlBQWdCV3BCT0RZQ0JBd0NDeUFETFFBTVFRaHhEUUFnQkNBRlNRMEFJQVFnQUU4TkFDQUVRWGdnQkd0QkQzRkJBQ0FFUVFocVFROXhHeUlGYWlJQVFRQW9BcFRRZ0lBQUlBWnFJZ3NnQldzaUJVRUJjallDQkNBRElBZ2dCbW8yQWdSQkFFRUFLQUx3MDRDQUFEWUNwTkNBZ0FCQkFDQUZOZ0tVMElDQUFFRUFJQUEyQXFEUWdJQUFJQVFnQzJwQk9EWUNCQXdCQ3dKQUlBQkJBQ2dDbU5DQWdBQWlDRThOQUVFQUlBQTJBcGpRZ0lBQUlBQWhDQXNnQUNBR2FpRUZRY2pUZ0lBQUlRTUNRQUpBQWtBQ1FBSkFBa0FDUUFOQUlBTW9BZ0FnQlVZTkFTQURLQUlJSWdNTkFBd0NDd3NnQXkwQURFRUljVVVOQVF0QnlOT0FnQUFoQXdOQUFrQWdBeWdDQUNJRklBUkxEUUFnQlNBREtBSUVhaUlGSUFSTERRTUxJQU1vQWdnaEF3d0FDd3NnQXlBQU5nSUFJQU1nQXlnQ0JDQUdhallDQkNBQVFYZ2dBR3RCRDNGQkFDQUFRUWhxUVE5eEcyb2lDeUFDUVFOeU5nSUVJQVZCZUNBRmEwRVBjVUVBSUFWQkNHcEJEM0ViYWlJR0lBc2dBbW9pQW1zaEF3SkFJQVlnQkVjTkFFRUFJQUkyQXFEUWdJQUFRUUJCQUNnQ2xOQ0FnQUFnQTJvaUF6WUNsTkNBZ0FBZ0FpQURRUUZ5TmdJRURBTUxBa0FnQmtFQUtBS2MwSUNBQUVjTkFFRUFJQUkyQXB6UWdJQUFRUUJCQUNnQ2tOQ0FnQUFnQTJvaUF6WUNrTkNBZ0FBZ0FpQURRUUZ5TmdJRUlBSWdBMm9nQXpZQ0FBd0RDd0pBSUFZb0FnUWlCRUVEY1VFQlJ3MEFJQVJCZUhFaEJ3SkFBa0FnQkVIL0FVc05BQ0FHS0FJSUlnVWdCRUVEZGlJSVFRTjBRYkRRZ0lBQWFpSUFSaG9DUUNBR0tBSU1JZ1FnQlVjTkFFRUFRUUFvQW9qUWdJQUFRWDRnQ0hkeE5nS0kwSUNBQUF3Q0N5QUVJQUJHR2lBRUlBVTJBZ2dnQlNBRU5nSU1EQUVMSUFZb0FoZ2hDUUpBQWtBZ0JpZ0NEQ0lBSUFaR0RRQWdCaWdDQ0NJRUlBaEpHaUFBSUFRMkFnZ2dCQ0FBTmdJTURBRUxBa0FnQmtFVWFpSUVLQUlBSWdVTkFDQUdRUkJxSWdRb0FnQWlCUTBBUVFBaEFBd0JDd05BSUFRaENDQUZJZ0JCRkdvaUJDZ0NBQ0lGRFFBZ0FFRVFhaUVFSUFBb0FoQWlCUTBBQ3lBSVFRQTJBZ0FMSUFsRkRRQUNRQUpBSUFZZ0JpZ0NIQ0lGUVFKMFFialNnSUFBYWlJRUtBSUFSdzBBSUFRZ0FEWUNBQ0FBRFFGQkFFRUFLQUtNMElDQUFFRitJQVYzY1RZQ2pOQ0FnQUFNQWdzZ0NVRVFRUlFnQ1NnQ0VDQUdSaHRxSUFBMkFnQWdBRVVOQVFzZ0FDQUpOZ0lZQWtBZ0JpZ0NFQ0lFUlEwQUlBQWdCRFlDRUNBRUlBQTJBaGdMSUFZb0FoUWlCRVVOQUNBQVFSUnFJQVEyQWdBZ0JDQUFOZ0lZQ3lBSElBTnFJUU1nQmlBSGFpSUdLQUlFSVFRTElBWWdCRUYrY1RZQ0JDQUNJQU5xSUFNMkFnQWdBaUFEUVFGeU5nSUVBa0FnQTBIL0FVc05BQ0FEUVhoeFFiRFFnSUFBYWlFRUFrQUNRRUVBS0FLSTBJQ0FBQ0lGUVFFZ0EwRURkblFpQTNFTkFFRUFJQVVnQTNJMkFvalFnSUFBSUFRaEF3d0JDeUFFS0FJSUlRTUxJQU1nQWpZQ0RDQUVJQUkyQWdnZ0FpQUVOZ0lNSUFJZ0F6WUNDQXdEQzBFZklRUUNRQ0FEUWYvLy93ZExEUUFnQTBFSWRpSUVJQVJCZ1A0L2FrRVFka0VJY1NJRWRDSUZJQVZCZ09BZmFrRVFka0VFY1NJRmRDSUFJQUJCZ0lBUGFrRVFka0VDY1NJQWRFRVBkaUFFSUFWeUlBQnlheUlFUVFGMElBTWdCRUVWYW5aQkFYRnlRUnhxSVFRTElBSWdCRFlDSENBQ1FnQTNBaEFnQkVFQ2RFRzQwb0NBQUdvaEJRSkFRUUFvQW96UWdJQUFJZ0JCQVNBRWRDSUljUTBBSUFVZ0FqWUNBRUVBSUFBZ0NISTJBb3pRZ0lBQUlBSWdCVFlDR0NBQ0lBSTJBZ2dnQWlBQ05nSU1EQU1MSUFOQkFFRVpJQVJCQVhacklBUkJIMFliZENFRUlBVW9BZ0FoQUFOQUlBQWlCU2dDQkVGNGNTQURSZzBDSUFSQkhYWWhBQ0FFUVFGMElRUWdCU0FBUVFSeGFrRVFhaUlJS0FJQUlnQU5BQXNnQ0NBQ05nSUFJQUlnQlRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFJTElBQkJlQ0FBYTBFUGNVRUFJQUJCQ0dwQkQzRWJJZ05xSWdzZ0JrRklhaUlJSUFOcklnTkJBWEkyQWdRZ0FDQUlha0U0TmdJRUlBUWdCVUUzSUFWclFROXhRUUFnQlVGSmFrRVBjUnRxUVVGcUlnZ2dDQ0FFUVJCcVNSc2lDRUVqTmdJRVFRQkJBQ2dDOE5PQWdBQTJBcVRRZ0lBQVFRQWdBellDbE5DQWdBQkJBQ0FMTmdLZzBJQ0FBQ0FJUVJCcVFRQXBBdERUZ0lBQU53SUFJQWhCQUNrQ3lOT0FnQUEzQWdoQkFDQUlRUWhxTmdMUTA0Q0FBRUVBSUFZMkFzelRnSUFBUVFBZ0FEWUN5Tk9BZ0FCQkFFRUFOZ0xVMDRDQUFDQUlRU1JxSVFNRFFDQURRUWMyQWdBZ0EwRUVhaUlESUFWSkRRQUxJQWdnQkVZTkF5QUlJQWdvQWdSQmZuRTJBZ1FnQ0NBSUlBUnJJZ0EyQWdBZ0JDQUFRUUZ5TmdJRUFrQWdBRUgvQVVzTkFDQUFRWGh4UWJEUWdJQUFhaUVEQWtBQ1FFRUFLQUtJMElDQUFDSUZRUUVnQUVFRGRuUWlBSEVOQUVFQUlBVWdBSEkyQW9qUWdJQUFJQU1oQlF3QkN5QURLQUlJSVFVTElBVWdCRFlDRENBRElBUTJBZ2dnQkNBRE5nSU1JQVFnQlRZQ0NBd0VDMEVmSVFNQ1FDQUFRZi8vL3dkTERRQWdBRUVJZGlJRElBTkJnUDQvYWtFUWRrRUljU0lEZENJRklBVkJnT0FmYWtFUWRrRUVjU0lGZENJSUlBaEJnSUFQYWtFUWRrRUNjU0lJZEVFUGRpQURJQVZ5SUFoeWF5SURRUUYwSUFBZ0EwRVZhblpCQVhGeVFSeHFJUU1MSUFRZ0F6WUNIQ0FFUWdBM0FoQWdBMEVDZEVHNDBvQ0FBR29oQlFKQVFRQW9Bb3pRZ0lBQUlnaEJBU0FEZENJR2NRMEFJQVVnQkRZQ0FFRUFJQWdnQm5JMkFvelFnSUFBSUFRZ0JUWUNHQ0FFSUFRMkFnZ2dCQ0FFTmdJTURBUUxJQUJCQUVFWklBTkJBWFpySUFOQkgwWWJkQ0VESUFVb0FnQWhDQU5BSUFnaUJTZ0NCRUY0Y1NBQVJnMERJQU5CSFhZaENDQURRUUYwSVFNZ0JTQUlRUVJ4YWtFUWFpSUdLQUlBSWdnTkFBc2dCaUFFTmdJQUlBUWdCVFlDR0NBRUlBUTJBZ3dnQkNBRU5nSUlEQU1MSUFVb0FnZ2lBeUFDTmdJTUlBVWdBallDQ0NBQ1FRQTJBaGdnQWlBRk5nSU1JQUlnQXpZQ0NBc2dDMEVJYWlFRERBVUxJQVVvQWdnaUF5QUVOZ0lNSUFVZ0JEWUNDQ0FFUVFBMkFoZ2dCQ0FGTmdJTUlBUWdBellDQ0F0QkFDZ0NsTkNBZ0FBaUF5QUNUUTBBUVFBb0FxRFFnSUFBSWdRZ0Ftb2lCU0FESUFKcklnTkJBWEkyQWdSQkFDQUROZ0tVMElDQUFFRUFJQVUyQXFEUWdJQUFJQVFnQWtFRGNqWUNCQ0FFUVFocUlRTU1Bd3RCQUNFRFFRQkJNRFlDK05PQWdBQU1BZ3NDUUNBTFJRMEFBa0FDUUNBSUlBZ29BaHdpQlVFQ2RFRzQwb0NBQUdvaUF5Z0NBRWNOQUNBRElBQTJBZ0FnQUEwQlFRQWdCMEYrSUFWM2NTSUhOZ0tNMElDQUFBd0NDeUFMUVJCQkZDQUxLQUlRSUFoR0cyb2dBRFlDQUNBQVJRMEJDeUFBSUFzMkFoZ0NRQ0FJS0FJUUlnTkZEUUFnQUNBRE5nSVFJQU1nQURZQ0dBc2dDRUVVYWlnQ0FDSURSUTBBSUFCQkZHb2dBellDQUNBRElBQTJBaGdMQWtBQ1FDQUVRUTlMRFFBZ0NDQUVJQUpxSWdOQkEzSTJBZ1FnQ0NBRGFpSURJQU1vQWdSQkFYSTJBZ1FNQVFzZ0NDQUNhaUlBSUFSQkFYSTJBZ1FnQ0NBQ1FRTnlOZ0lFSUFBZ0JHb2dCRFlDQUFKQUlBUkIvd0ZMRFFBZ0JFRjRjVUd3MElDQUFHb2hBd0pBQWtCQkFDZ0NpTkNBZ0FBaUJVRUJJQVJCQTNaMElnUnhEUUJCQUNBRklBUnlOZ0tJMElDQUFDQURJUVFNQVFzZ0F5Z0NDQ0VFQ3lBRUlBQTJBZ3dnQXlBQU5nSUlJQUFnQXpZQ0RDQUFJQVEyQWdnTUFRdEJIeUVEQWtBZ0JFSC8vLzhIU3cwQUlBUkJDSFlpQXlBRFFZRCtQMnBCRUhaQkNIRWlBM1FpQlNBRlFZRGdIMnBCRUhaQkJIRWlCWFFpQWlBQ1FZQ0FEMnBCRUhaQkFuRWlBblJCRDNZZ0F5QUZjaUFDY21zaUEwRUJkQ0FFSUFOQkZXcDJRUUZ4Y2tFY2FpRURDeUFBSUFNMkFod2dBRUlBTndJUUlBTkJBblJCdU5LQWdBQnFJUVVDUUNBSFFRRWdBM1FpQW5FTkFDQUZJQUEyQWdCQkFDQUhJQUp5TmdLTTBJQ0FBQ0FBSUFVMkFoZ2dBQ0FBTmdJSUlBQWdBRFlDREF3QkN5QUVRUUJCR1NBRFFRRjJheUFEUVI5R0czUWhBeUFGS0FJQUlRSUNRQU5BSUFJaUJTZ0NCRUY0Y1NBRVJnMEJJQU5CSFhZaEFpQURRUUYwSVFNZ0JTQUNRUVJ4YWtFUWFpSUdLQUlBSWdJTkFBc2dCaUFBTmdJQUlBQWdCVFlDR0NBQUlBQTJBZ3dnQUNBQU5nSUlEQUVMSUFVb0FnZ2lBeUFBTmdJTUlBVWdBRFlDQ0NBQVFRQTJBaGdnQUNBRk5nSU1JQUFnQXpZQ0NBc2dDRUVJYWlFRERBRUxBa0FnQ2tVTkFBSkFBa0FnQUNBQUtBSWNJZ1ZCQW5SQnVOS0FnQUJxSWdNb0FnQkhEUUFnQXlBSU5nSUFJQWdOQVVFQUlBbEJmaUFGZDNFMkFvelFnSUFBREFJTElBcEJFRUVVSUFvb0FoQWdBRVliYWlBSU5nSUFJQWhGRFFFTElBZ2dDallDR0FKQUlBQW9BaEFpQTBVTkFDQUlJQU0yQWhBZ0F5QUlOZ0lZQ3lBQVFSUnFLQUlBSWdORkRRQWdDRUVVYWlBRE5nSUFJQU1nQ0RZQ0dBc0NRQUpBSUFSQkQwc05BQ0FBSUFRZ0Ftb2lBMEVEY2pZQ0JDQUFJQU5xSWdNZ0F5Z0NCRUVCY2pZQ0JBd0JDeUFBSUFKcUlnVWdCRUVCY2pZQ0JDQUFJQUpCQTNJMkFnUWdCU0FFYWlBRU5nSUFBa0FnQjBVTkFDQUhRWGh4UWJEUWdJQUFhaUVDUVFBb0FwelFnSUFBSVFNQ1FBSkFRUUVnQjBFRGRuUWlDQ0FHY1EwQVFRQWdDQ0FHY2pZQ2lOQ0FnQUFnQWlFSURBRUxJQUlvQWdnaENBc2dDQ0FETmdJTUlBSWdBellDQ0NBRElBSTJBZ3dnQXlBSU5nSUlDMEVBSUFVMkFwelFnSUFBUVFBZ0JEWUNrTkNBZ0FBTElBQkJDR29oQXdzZ0FVRVFhaVNBZ0lDQUFDQURDd29BSUFBUXlZQ0FnQUFMNGcwQkIzOENRQ0FBUlEwQUlBQkJlR29pQVNBQVFYeHFLQUlBSWdKQmVIRWlBR29oQXdKQUlBSkJBWEVOQUNBQ1FRTnhSUTBCSUFFZ0FTZ0NBQ0lDYXlJQlFRQW9BcGpRZ0lBQUlnUkpEUUVnQWlBQWFpRUFBa0FnQVVFQUtBS2MwSUNBQUVZTkFBSkFJQUpCL3dGTERRQWdBU2dDQ0NJRUlBSkJBM1lpQlVFRGRFR3cwSUNBQUdvaUJrWWFBa0FnQVNnQ0RDSUNJQVJIRFFCQkFFRUFLQUtJMElDQUFFRitJQVYzY1RZQ2lOQ0FnQUFNQXdzZ0FpQUdSaG9nQWlBRU5nSUlJQVFnQWpZQ0RBd0NDeUFCS0FJWUlRY0NRQUpBSUFFb0Fnd2lCaUFCUmcwQUlBRW9BZ2dpQWlBRVNSb2dCaUFDTmdJSUlBSWdCallDREF3QkN3SkFJQUZCRkdvaUFpZ0NBQ0lFRFFBZ0FVRVFhaUlDS0FJQUlnUU5BRUVBSVFZTUFRc0RRQ0FDSVFVZ0JDSUdRUlJxSWdJb0FnQWlCQTBBSUFaQkVHb2hBaUFHS0FJUUlnUU5BQXNnQlVFQU5nSUFDeUFIUlEwQkFrQUNRQ0FCSUFFb0Fod2lCRUVDZEVHNDBvQ0FBR29pQWlnQ0FFY05BQ0FDSUFZMkFnQWdCZzBCUVFCQkFDZ0NqTkNBZ0FCQmZpQUVkM0UyQW96UWdJQUFEQU1MSUFkQkVFRVVJQWNvQWhBZ0FVWWJhaUFHTmdJQUlBWkZEUUlMSUFZZ0J6WUNHQUpBSUFFb0FoQWlBa1VOQUNBR0lBSTJBaEFnQWlBR05nSVlDeUFCS0FJVUlnSkZEUUVnQmtFVWFpQUNOZ0lBSUFJZ0JqWUNHQXdCQ3lBREtBSUVJZ0pCQTNGQkEwY05BQ0FESUFKQmZuRTJBZ1JCQUNBQU5nS1EwSUNBQUNBQklBQnFJQUEyQWdBZ0FTQUFRUUZ5TmdJRUR3c2dBU0FEVHcwQUlBTW9BZ1FpQWtFQmNVVU5BQUpBQWtBZ0FrRUNjUTBBQWtBZ0EwRUFLQUtnMElDQUFFY05BRUVBSUFFMkFxRFFnSUFBUVFCQkFDZ0NsTkNBZ0FBZ0FHb2lBRFlDbE5DQWdBQWdBU0FBUVFGeU5nSUVJQUZCQUNnQ25OQ0FnQUJIRFFOQkFFRUFOZ0tRMElDQUFFRUFRUUEyQXB6UWdJQUFEd3NDUUNBRFFRQW9BcHpRZ0lBQVJ3MEFRUUFnQVRZQ25OQ0FnQUJCQUVFQUtBS1EwSUNBQUNBQWFpSUFOZ0tRMElDQUFDQUJJQUJCQVhJMkFnUWdBU0FBYWlBQU5nSUFEd3NnQWtGNGNTQUFhaUVBQWtBQ1FDQUNRZjhCU3cwQUlBTW9BZ2dpQkNBQ1FRTjJJZ1ZCQTNSQnNOQ0FnQUJxSWdaR0dnSkFJQU1vQWd3aUFpQUVSdzBBUVFCQkFDZ0NpTkNBZ0FCQmZpQUZkM0UyQW9qUWdJQUFEQUlMSUFJZ0JrWWFJQUlnQkRZQ0NDQUVJQUkyQWd3TUFRc2dBeWdDR0NFSEFrQUNRQ0FES0FJTUlnWWdBMFlOQUNBREtBSUlJZ0pCQUNnQ21OQ0FnQUJKR2lBR0lBSTJBZ2dnQWlBR05nSU1EQUVMQWtBZ0EwRVVhaUlDS0FJQUlnUU5BQ0FEUVJCcUlnSW9BZ0FpQkEwQVFRQWhCZ3dCQ3dOQUlBSWhCU0FFSWdaQkZHb2lBaWdDQUNJRURRQWdCa0VRYWlFQ0lBWW9BaEFpQkEwQUN5QUZRUUEyQWdBTElBZEZEUUFDUUFKQUlBTWdBeWdDSENJRVFRSjBRYmpTZ0lBQWFpSUNLQUlBUncwQUlBSWdCallDQUNBR0RRRkJBRUVBS0FLTTBJQ0FBRUYrSUFSM2NUWUNqTkNBZ0FBTUFnc2dCMEVRUVJRZ0J5Z0NFQ0FEUmh0cUlBWTJBZ0FnQmtVTkFRc2dCaUFITmdJWUFrQWdBeWdDRUNJQ1JRMEFJQVlnQWpZQ0VDQUNJQVkyQWhnTElBTW9BaFFpQWtVTkFDQUdRUlJxSUFJMkFnQWdBaUFHTmdJWUN5QUJJQUJxSUFBMkFnQWdBU0FBUVFGeU5nSUVJQUZCQUNnQ25OQ0FnQUJIRFFGQkFDQUFOZ0tRMElDQUFBOExJQU1nQWtGK2NUWUNCQ0FCSUFCcUlBQTJBZ0FnQVNBQVFRRnlOZ0lFQ3dKQUlBQkIvd0ZMRFFBZ0FFRjRjVUd3MElDQUFHb2hBZ0pBQWtCQkFDZ0NpTkNBZ0FBaUJFRUJJQUJCQTNaMElnQnhEUUJCQUNBRUlBQnlOZ0tJMElDQUFDQUNJUUFNQVFzZ0FpZ0NDQ0VBQ3lBQUlBRTJBZ3dnQWlBQk5nSUlJQUVnQWpZQ0RDQUJJQUEyQWdnUEMwRWZJUUlDUUNBQVFmLy8vd2RMRFFBZ0FFRUlkaUlDSUFKQmdQNC9ha0VRZGtFSWNTSUNkQ0lFSUFSQmdPQWZha0VRZGtFRWNTSUVkQ0lHSUFaQmdJQVBha0VRZGtFQ2NTSUdkRUVQZGlBQ0lBUnlJQVp5YXlJQ1FRRjBJQUFnQWtFVmFuWkJBWEZ5UVJ4cUlRSUxJQUVnQWpZQ0hDQUJRZ0EzQWhBZ0FrRUNkRUc0MG9DQUFHb2hCQUpBQWtCQkFDZ0NqTkNBZ0FBaUJrRUJJQUowSWdOeERRQWdCQ0FCTmdJQVFRQWdCaUFEY2pZQ2pOQ0FnQUFnQVNBRU5nSVlJQUVnQVRZQ0NDQUJJQUUyQWd3TUFRc2dBRUVBUVJrZ0FrRUJkbXNnQWtFZlJodDBJUUlnQkNnQ0FDRUdBa0FEUUNBR0lnUW9BZ1JCZUhFZ0FFWU5BU0FDUVIxMklRWWdBa0VCZENFQ0lBUWdCa0VFY1dwQkVHb2lBeWdDQUNJR0RRQUxJQU1nQVRZQ0FDQUJJQVEyQWhnZ0FTQUJOZ0lNSUFFZ0FUWUNDQXdCQ3lBRUtBSUlJZ0FnQVRZQ0RDQUVJQUUyQWdnZ0FVRUFOZ0lZSUFFZ0JEWUNEQ0FCSUFBMkFnZ0xRUUJCQUNnQ3FOQ0FnQUJCZjJvaUFVRi9JQUViTmdLbzBJQ0FBQXNMQkFBQUFBdE9BQUpBSUFBTkFEOEFRUkIwRHdzQ1FDQUFRZi8vQTNFTkFDQUFRWDlNRFFBQ1FDQUFRUkIyUUFBaUFFRi9SdzBBUVFCQk1EWUMrTk9BZ0FCQmZ3OExJQUJCRUhRUEN4REtnSUNBQUFBTDhnSUNBMzhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUlnQUdvaUEwRi9haUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CZldvZ0FUb0FBQ0FEUVg1cUlBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRWHhxSUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJmR29nQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVhocUlBRTJBZ0FnQWtGMGFpQUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtGd2FpQUJOZ0lBSUFKQmJHb2dBVFlDQUNBQ1FXaHFJQUUyQWdBZ0FrRmthaUFCTmdJQUlBUWdBMEVFY1VFWWNpSUZheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVlnQXlBRmFpRUJBMEFnQVNBR053TVlJQUVnQmpjREVDQUJJQVkzQXdnZ0FTQUdOd01BSUFGQklHb2hBU0FDUVdCcUlnSkJIMHNOQUFzTElBQUxDNDVJQVFCQmdBZ0xoa2dCQUFBQUFnQUFBQU1BQUFBQUFBQUFBQUFBQUFRQUFBQUZBQUFBQUFBQUFBQUFBQUFHQUFBQUJ3QUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVsdWRtRnNhV1FnWTJoaGNpQnBiaUIxY213Z2NYVmxjbmtBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDlpYjJSNUFFTnZiblJsYm5RdFRHVnVaM1JvSUc5MlpYSm1iRzkzQUVOb2RXNXJJSE5wZW1VZ2IzWmxjbVpzYjNjQVVtVnpjRzl1YzJVZ2IzWmxjbVpzYjNjQVNXNTJZV3hwWkNCdFpYUm9iMlFnWm05eUlFaFVWRkF2ZUM1NElISmxjWFZsYzNRQVNXNTJZV3hwWkNCdFpYUm9iMlFnWm05eUlGSlVVMUF2ZUM1NElISmxjWFZsYzNRQVJYaHdaV04wWldRZ1UwOVZVa05GSUcxbGRHaHZaQ0JtYjNJZ1NVTkZMM2d1ZUNCeVpYRjFaWE4wQUVsdWRtRnNhV1FnWTJoaGNpQnBiaUIxY213Z1puSmhaMjFsYm5RZ2MzUmhjblFBUlhod1pXTjBaV1FnWkc5MEFGTndZVzRnWTJGc2JHSmhZMnNnWlhKeWIzSWdhVzRnYjI1ZmMzUmhkSFZ6QUVsdWRtRnNhV1FnY21WemNHOXVjMlVnYzNSaGRIVnpBRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUdOb2RXNXJJR1Y0ZEdWdWMybHZibk1BVlhObGNpQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZjbVZ6WlhSZ0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOWphSFZ1YTE5b1pXRmtaWEpnSUdOaGJHeGlZV05ySUdWeWNtOXlBR0J2Ymw5dFpYTnpZV2RsWDJKbFoybHVZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmWTJoMWJtdGZaWGgwWlc1emFXOXVYM1poYkhWbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZjM1JoZEhWelgyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZkbVZ5YzJsdmJsOWpiMjF3YkdWMFpXQWdZMkZzYkdKaFkyc2daWEp5YjNJQVlHOXVYM1Z5YkY5amIyMXdiR1YwWldBZ1kyRnNiR0poWTJzZ1pYSnliM0lBWUc5dVgyTm9kVzVyWDJOdmJYQnNaWFJsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZmFHVmhaR1Z5WDNaaGJIVmxYMk52YlhCc1pYUmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmYldWemMyRm5aVjlqYjIxd2JHVjBaV0FnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDIxbGRHaHZaRjlqYjIxd2JHVjBaV0FnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDJobFlXUmxjbDltYVdWc1pGOWpiMjF3YkdWMFpXQWdZMkZzYkdKaFkyc2daWEp5YjNJQVlHOXVYMk5vZFc1clgyVjRkR1Z1YzJsdmJsOXVZVzFsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JWYm1WNGNHVmpkR1ZrSUdOb1lYSWdhVzRnZFhKc0lITmxjblpsY2dCSmJuWmhiR2xrSUdobFlXUmxjaUIyWVd4MVpTQmphR0Z5QUVsdWRtRnNhV1FnYUdWaFpHVnlJR1pwWld4a0lHTm9ZWElBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDkyWlhKemFXOXVBRWx1ZG1Gc2FXUWdiV2x1YjNJZ2RtVnljMmx2YmdCSmJuWmhiR2xrSUcxaGFtOXlJSFpsY25OcGIyNEFSWGh3WldOMFpXUWdjM0JoWTJVZ1lXWjBaWElnZG1WeWMybHZiZ0JGZUhCbFkzUmxaQ0JEVWt4R0lHRm1kR1Z5SUhabGNuTnBiMjRBU1c1MllXeHBaQ0JJVkZSUUlIWmxjbk5wYjI0QVNXNTJZV3hwWkNCb1pXRmtaWElnZEc5clpXNEFVM0JoYmlCallXeHNZbUZqYXlCbGNuSnZjaUJwYmlCdmJsOTFjbXdBU1c1MllXeHBaQ0JqYUdGeVlXTjBaWEp6SUdsdUlIVnliQUJWYm1WNGNHVmpkR1ZrSUhOMFlYSjBJR05vWVhJZ2FXNGdkWEpzQUVSdmRXSnNaU0JBSUdsdUlIVnliQUJGYlhCMGVTQkRiMjUwWlc1MExVeGxibWQwYUFCSmJuWmhiR2xrSUdOb1lYSmhZM1JsY2lCcGJpQkRiMjUwWlc1MExVeGxibWQwYUFCRWRYQnNhV05oZEdVZ1EyOXVkR1Z1ZEMxTVpXNW5kR2dBU1c1MllXeHBaQ0JqYUdGeUlHbHVJSFZ5YkNCd1lYUm9BRU52Ym5SbGJuUXRUR1Z1WjNSb0lHTmhiaWQwSUdKbElIQnlaWE5sYm5RZ2QybDBhQ0JVY21GdWMyWmxjaTFGYm1OdlpHbHVad0JKYm5aaGJHbGtJR05vWVhKaFkzUmxjaUJwYmlCamFIVnVheUJ6YVhwbEFGTndZVzRnWTJGc2JHSmhZMnNnWlhKeWIzSWdhVzRnYjI1ZmFHVmhaR1Z5WDNaaGJIVmxBRk53WVc0Z1kyRnNiR0poWTJzZ1pYSnliM0lnYVc0Z2IyNWZZMmgxYm10ZlpYaDBaVzV6YVc5dVgzWmhiSFZsQUVsdWRtRnNhV1FnWTJoaGNtRmpkR1Z5SUdsdUlHTm9kVzVySUdWNGRHVnVjMmx2Ym5NZ2RtRnNkV1VBVFdsemMybHVaeUJsZUhCbFkzUmxaQ0JNUmlCaFpuUmxjaUJvWldGa1pYSWdkbUZzZFdVQVNXNTJZV3hwWkNCZ1ZISmhibk5tWlhJdFJXNWpiMlJwYm1kZ0lHaGxZV1JsY2lCMllXeDFaUUJKYm5aaGJHbGtJR05vWVhKaFkzUmxjaUJwYmlCamFIVnVheUJsZUhSbGJuTnBiMjV6SUhGMWIzUmxJSFpoYkhWbEFFbHVkbUZzYVdRZ1kyaGhjbUZqZEdWeUlHbHVJR05vZFc1cklHVjRkR1Z1YzJsdmJuTWdjWFZ2ZEdWa0lIWmhiSFZsQUZCaGRYTmxaQ0JpZVNCdmJsOW9aV0ZrWlhKelgyTnZiWEJzWlhSbEFFbHVkbUZzYVdRZ1JVOUdJSE4wWVhSbEFHOXVYM0psYzJWMElIQmhkWE5sQUc5dVgyTm9kVzVyWDJobFlXUmxjaUJ3WVhWelpRQnZibDl0WlhOellXZGxYMkpsWjJsdUlIQmhkWE5sQUc5dVgyTm9kVzVyWDJWNGRHVnVjMmx2Ymw5MllXeDFaU0J3WVhWelpRQnZibDl6ZEdGMGRYTmZZMjl0Y0d4bGRHVWdjR0YxYzJVQWIyNWZkbVZ5YzJsdmJsOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOTFjbXhmWTI5dGNHeGxkR1VnY0dGMWMyVUFiMjVmWTJoMWJtdGZZMjl0Y0d4bGRHVWdjR0YxYzJVQWIyNWZhR1ZoWkdWeVgzWmhiSFZsWDJOdmJYQnNaWFJsSUhCaGRYTmxBRzl1WDIxbGMzTmhaMlZmWTI5dGNHeGxkR1VnY0dGMWMyVUFiMjVmYldWMGFHOWtYMk52YlhCc1pYUmxJSEJoZFhObEFHOXVYMmhsWVdSbGNsOW1hV1ZzWkY5amIyMXdiR1YwWlNCd1lYVnpaUUJ2Ymw5amFIVnVhMTlsZUhSbGJuTnBiMjVmYm1GdFpTQndZWFZ6WlFCVmJtVjRjR1ZqZEdWa0lITndZV05sSUdGbWRHVnlJSE4wWVhKMElHeHBibVVBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDlqYUhWdWExOWxlSFJsYm5OcGIyNWZibUZ0WlFCSmJuWmhiR2xrSUdOb1lYSmhZM1JsY2lCcGJpQmphSFZ1YXlCbGVIUmxibk5wYjI1eklHNWhiV1VBVUdGMWMyVWdiMjRnUTA5T1RrVkRWQzlWY0dkeVlXUmxBRkJoZFhObElHOXVJRkJTU1M5VmNHZHlZV1JsQUVWNGNHVmpkR1ZrSUVoVVZGQXZNaUJEYjI1dVpXTjBhVzl1SUZCeVpXWmhZMlVBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDl0WlhSb2IyUUFSWGh3WldOMFpXUWdjM0JoWTJVZ1lXWjBaWElnYldWMGFHOWtBRk53WVc0Z1kyRnNiR0poWTJzZ1pYSnliM0lnYVc0Z2IyNWZhR1ZoWkdWeVgyWnBaV3hrQUZCaGRYTmxaQUJKYm5aaGJHbGtJSGR2Y21RZ1pXNWpiM1Z1ZEdWeVpXUUFTVzUyWVd4cFpDQnRaWFJvYjJRZ1pXNWpiM1Z1ZEdWeVpXUUFWVzVsZUhCbFkzUmxaQ0JqYUdGeUlHbHVJSFZ5YkNCelkyaGxiV0VBVW1WeGRXVnpkQ0JvWVhNZ2FXNTJZV3hwWkNCZ1ZISmhibk5tWlhJdFJXNWpiMlJwYm1kZ0FGTlhTVlJEU0Y5UVVrOVlXUUJWVTBWZlVGSlBXRmtBVFV0QlExUkpWa2xVV1FCVlRsQlNUME5GVTFOQlFreEZYMFZPVkVsVVdRQkRUMUJaQUUxUFZrVkVYMUJGVWsxQlRrVk9WRXhaQUZSUFQxOUZRVkpNV1FCT1QxUkpSbGtBUmtGSlRFVkVYMFJGVUVWT1JFVk9RMWtBUWtGRVgwZEJWRVZYUVZrQVVFeEJXUUJRVlZRQVEwaEZRMHRQVlZRQVIwRlVSVmRCV1Y5VVNVMUZUMVZVQUZKRlVWVkZVMVJmVkVsTlJVOVZWQUJPUlZSWFQxSkxYME5QVGs1RlExUmZWRWxOUlU5VlZBQkRUMDVPUlVOVVNVOU9YMVJKVFVWUFZWUUFURTlIU1U1ZlZFbE5SVTlWVkFCT1JWUlhUMUpMWDFKRlFVUmZWRWxOUlU5VlZBQlFUMU5VQUUxSlUwUkpVa1ZEVkVWRVgxSkZVVlZGVTFRQVEweEpSVTVVWDBOTVQxTkZSRjlTUlZGVlJWTlVBRU5NU1VWT1ZGOURURTlUUlVSZlRFOUJSRjlDUVV4QlRrTkZSRjlTUlZGVlJWTlVBRUpCUkY5U1JWRlZSVk5VQUVoVVZGQmZVa1ZSVlVWVFZGOVRSVTVVWDFSUFgwaFVWRkJUWDFCUFVsUUFVa1ZRVDFKVUFFbE5YMEZmVkVWQlVFOVVBRkpGVTBWVVgwTlBUbFJGVGxRQVRrOWZRMDlPVkVWT1ZBQlFRVkpVU1VGTVgwTlBUbFJGVGxRQVNGQkZYMGxPVmtGTVNVUmZRMDlPVTFSQlRsUUFTRkJGWDBOQ1gxSkZVMFZVQUVkRlZBQklVRVZmVTFSU1NVTlVBRU5QVGtaTVNVTlVBRlJGVFZCUFVrRlNXVjlTUlVSSlVrVkRWQUJRUlZKTlFVNUZUbFJmVWtWRVNWSkZRMVFBUTA5T1RrVkRWQUJOVlV4VVNWOVRWRUZVVlZNQVNGQkZYMGxPVmtGTVNVUmZVMVJCVkZWVEFGUlBUMTlOUVU1WlgxSkZVVlZGVTFSVEFFVkJVa3haWDBoSlRsUlRBRlZPUVZaQlNVeEJRa3hGWDBaUFVsOU1SVWRCVEY5U1JVRlRUMDVUQUU5UVZFbFBUbE1BVTFkSlZFTklTVTVIWDFCU1QxUlBRMDlNVXdCV1FWSkpRVTVVWDBGTVUwOWZUa1ZIVDFSSlFWUkZVd0JOVlV4VVNWQk1SVjlEU0U5SlEwVlRBRWxPVkVWU1RrRk1YMU5GVWxaRlVsOUZVbEpQVWdCWFJVSmZVMFZTVmtWU1gxVk9TMDVQVjA1ZlJWSlNUMUlBVWtGSlRFZFZUbDlGVWxKUFVnQkpSRVZPVkVsVVdWOVFVazlXU1VSRlVsOUJWVlJJUlU1VVNVTkJWRWxQVGw5RlVsSlBVZ0JUVTB4ZlEwVlNWRWxHU1VOQlZFVmZSVkpTVDFJQVNVNVdRVXhKUkY5WVgwWlBVbGRCVWtSRlJGOUdUMUlBVTBWVVgxQkJVa0ZOUlZSRlVnQkhSVlJmVUVGU1FVMUZWRVZTQUVoUVJWOVZVMFZTQUZORlJWOVBWRWhGVWdCSVVFVmZRMEpmUTBoVlRrdGZTRVZCUkVWU0FFMUxRMEZNUlU1RVFWSUFVMFZVVlZBQVYwVkNYMU5GVWxaRlVsOUpVMTlFVDFkT0FGUkZRVkpFVDFkT0FFaFFSVjlEVEU5VFJVUmZRMDlPVGtWRFZFbFBUZ0JJUlZWU1NWTlVTVU5mUlZoUVNWSkJWRWxQVGdCRVNWTkRUMDVPUlVOVVJVUmZUMUJGVWtGVVNVOU9BRTVQVGw5QlZWUklUMUpKVkVGVVNWWkZYMGxPUms5U1RVRlVTVTlPQUVoUVJWOUpUbFpCVEVsRVgxWkZVbE5KVDA0QVNGQkZYME5DWDAxRlUxTkJSMFZmUWtWSFNVNEFVMGxVUlY5SlUxOUdVazlhUlU0QVNGQkZYMGxPVmtGTVNVUmZTRVZCUkVWU1gxUlBTMFZPQUVsT1ZrRk1TVVJmVkU5TFJVNEFSazlTUWtsRVJFVk9BRVZPU0VGT1EwVmZXVTlWVWw5RFFVeE5BRWhRUlY5SlRsWkJURWxFWDFWU1RBQkNURTlEUzBWRVgwSlpYMUJCVWtWT1ZFRk1YME5QVGxSU1Qwd0FUVXREVDB3QVFVTk1BRWhRUlY5SlRsUkZVazVCVEFCU1JWRlZSVk5VWDBoRlFVUkZVbDlHU1VWTVJGTmZWRTlQWDB4QlVrZEZYMVZPVDBaR1NVTkpRVXdBU0ZCRlgwOUxBRlZPVEVsT1N3QlZUa3hQUTBzQVVGSkpBRkpGVkZKWlgxZEpWRWdBU0ZCRlgwbE9Wa0ZNU1VSZlEwOU9WRVZPVkY5TVJVNUhWRWdBU0ZCRlgxVk9SVmhRUlVOVVJVUmZRMDlPVkVWT1ZGOU1SVTVIVkVnQVJreFZVMGdBVUZKUFVGQkJWRU5JQUUwdFUwVkJVa05JQUZWU1NWOVVUMDlmVEU5T1J3QlFVazlEUlZOVFNVNUhBRTFKVTBORlRFeEJUa1ZQVlZOZlVFVlNVMGxUVkVWT1ZGOVhRVkpPU1U1SEFFMUpVME5GVEV4QlRrVlBWVk5mVjBGU1RrbE9Sd0JJVUVWZlNVNVdRVXhKUkY5VVVrRk9VMFpGVWw5RlRrTlBSRWxPUndCRmVIQmxZM1JsWkNCRFVreEdBRWhRUlY5SlRsWkJURWxFWDBOSVZVNUxYMU5KV2tVQVRVOVdSUUJEVDA1VVNVNVZSUUJJVUVWZlEwSmZVMVJCVkZWVFgwTlBUVkJNUlZSRkFFaFFSVjlEUWw5SVJVRkVSVkpUWDBOUFRWQk1SVlJGQUVoUVJWOURRbDlXUlZKVFNVOU9YME5QVFZCTVJWUkZBRWhRUlY5RFFsOVZVa3hmUTA5TlVFeEZWRVVBU0ZCRlgwTkNYME5JVlU1TFgwTlBUVkJNUlZSRkFFaFFSVjlEUWw5SVJVRkVSVkpmVmtGTVZVVmZRMDlOVUV4RlZFVUFTRkJGWDBOQ1gwTklWVTVMWDBWWVZFVk9VMGxQVGw5V1FVeFZSVjlEVDAxUVRFVlVSUUJJVUVWZlEwSmZRMGhWVGt0ZlJWaFVSVTVUU1U5T1gwNUJUVVZmUTA5TlVFeEZWRVVBU0ZCRlgwTkNYMDFGVTFOQlIwVmZRMDlOVUV4RlZFVUFTRkJGWDBOQ1gwMUZWRWhQUkY5RFQwMVFURVZVUlFCSVVFVmZRMEpmU0VWQlJFVlNYMFpKUlV4RVgwTlBUVkJNUlZSRkFFUkZURVZVUlFCSVVFVmZTVTVXUVV4SlJGOUZUMFpmVTFSQlZFVUFTVTVXUVV4SlJGOVRVMHhmUTBWU1ZFbEdTVU5CVkVVQVVFRlZVMFVBVGs5ZlVrVlRVRTlPVTBVQVZVNVRWVkJRVDFKVVJVUmZUVVZFU1VGZlZGbFFSUUJIVDA1RkFFNVBWRjlCUTBORlVGUkJRa3hGQUZORlVsWkpRMFZmVlU1QlZrRkpURUZDVEVVQVVrRk9SMFZmVGs5VVgxTkJWRWxUUmtsQlFreEZBRTlTU1VkSlRsOUpVMTlWVGxKRlFVTklRVUpNUlFCU1JWTlFUMDVUUlY5SlUxOVRWRUZNUlFCUVZWSkhSUUJOUlZKSFJRQlNSVkZWUlZOVVgwaEZRVVJGVWw5R1NVVk1SRk5mVkU5UFgweEJVa2RGQUZKRlVWVkZVMVJmU0VWQlJFVlNYMVJQVDE5TVFWSkhSUUJRUVZsTVQwRkVYMVJQVDE5TVFWSkhSUUJKVGxOVlJrWkpRMGxGVGxSZlUxUlBVa0ZIUlFCSVVFVmZVRUZWVTBWRVgxVlFSMUpCUkVVQVNGQkZYMUJCVlZORlJGOUlNbDlWVUVkU1FVUkZBRk5QVlZKRFJRQkJUazVQVlU1RFJRQlVVa0ZEUlFCSVVFVmZWVTVGV0ZCRlExUkZSRjlUVUVGRFJRQkVSVk5EVWtsQ1JRQlZUbE5WUWxORFVrbENSUUJTUlVOUFVrUUFTRkJGWDBsT1ZrRk1TVVJmVFVWVVNFOUVBRTVQVkY5R1QxVk9SQUJRVWs5UVJrbE9SQUJWVGtKSlRrUUFVa1ZDU1U1RUFGVk9RVlZVU0U5U1NWcEZSQUJOUlZSSVQwUmZUazlVWDBGTVRFOVhSVVFBU0ZSVVVGOVdSVkpUU1U5T1gwNVBWRjlUVlZCUVQxSlVSVVFBUVV4U1JVRkVXVjlTUlZCUFVsUkZSQUJCUTBORlVGUkZSQUJPVDFSZlNVMVFURVZOUlU1VVJVUUFURTlQVUY5RVJWUkZRMVJGUkFCSVVFVmZRMUpmUlZoUVJVTlVSVVFBU0ZCRlgweEdYMFZZVUVWRFZFVkVBRU5TUlVGVVJVUUFTVTFmVlZORlJBQklVRVZmVUVGVlUwVkVBRlJKVFVWUFZWUmZUME5EVlZKRlJBQlFRVmxOUlU1VVgxSkZVVlZKVWtWRUFGQlNSVU5QVGtSSlZFbFBUbDlTUlZGVlNWSkZSQUJRVWs5WVdWOUJWVlJJUlU1VVNVTkJWRWxQVGw5U1JWRlZTVkpGUkFCT1JWUlhUMUpMWDBGVlZFaEZUbFJKUTBGVVNVOU9YMUpGVVZWSlVrVkVBRXhGVGtkVVNGOVNSVkZWU1ZKRlJBQlRVMHhmUTBWU1ZFbEdTVU5CVkVWZlVrVlJWVWxTUlVRQVZWQkhVa0ZFUlY5U1JWRlZTVkpGUkFCUVFVZEZYMFZZVUVsU1JVUUFVRkpGUTA5T1JFbFVTVTlPWDBaQlNVeEZSQUJGV0ZCRlExUkJWRWxQVGw5R1FVbE1SVVFBVWtWV1FVeEpSRUZVU1U5T1gwWkJTVXhGUkFCVFUweGZTRUZPUkZOSVFVdEZYMFpCU1V4RlJBQk1UME5MUlVRQVZGSkJUbE5HVDFKTlFWUkpUMDVmUVZCUVRFbEZSQUJPVDFSZlRVOUVTVVpKUlVRQVRrOVVYMFZZVkVWT1JFVkVBRUpCVGtSWFNVUlVTRjlNU1UxSlZGOUZXRU5GUlVSRlJBQlRTVlJGWDBsVFgwOVdSVkpNVDBGRVJVUUFTRVZCUkFCRmVIQmxZM1JsWkNCSVZGUlFMd0FBWGhNQUFDWVRBQUF3RUFBQThCY0FBSjBUQUFBVkVnQUFPUmNBQVBBU0FBQUtFQUFBZFJJQUFLMFNBQUNDRXdBQVR4UUFBSDhRQUFDZ0ZRQUFJeFFBQUlrU0FBQ0xGQUFBVFJVQUFOUVJBQURQRkFBQUVCZ0FBTWtXQUFEY0ZnQUF3UkVBQU9BWEFBQzdGQUFBZEJRQUFId1ZBQURsRkFBQUNCY0FBQjhRQUFCbEZRQUFveFFBQUNnVkFBQUNGUUFBbVJVQUFDd1FBQUNMR1FBQVR3OEFBTlFPQUFCcUVBQUF6aEFBQUFJWEFBQ0pEZ0FBYmhNQUFCd1RBQUJtRkFBQVZoY0FBTUVUQUFETkV3QUFiQk1BQUdnWEFBQm1Gd0FBWHhjQUFDSVRBQURPRHdBQWFRNEFBTmdPQUFCakZnQUF5eE1BQUtvT0FBQW9Gd0FBSmhjQUFNVVRBQUJkRmdBQTZCRUFBR2NUQUFCbEV3QUE4aFlBQUhNVEFBQWRGd0FBK1JZQUFQTVJBQURQRGdBQXpoVUFBQXdTQUFDekVRQUFwUkVBQUdFUUFBQXlGd0FBdXhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVFJQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSURBZ0lDQWdJQUFBSUNBQUlDQUFJQ0FnSUNBZ0lDQWdJQUJBQUFBQUFBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUNBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFJQ0FnSUNBQUFDQWdBQ0FnQUNBZ0lDQWdJQ0FnSUNBQU1BQkFBQUFBSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FBQUFBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBQWdBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiRzl6WldWbGNDMWhiR2wyWlFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUUVCQVFFQkFRRUJBUUlCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQlkyaDFibXRsWkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVBQVFFQkFRRUFBQUVCQUFFQkFBRUJBUUVCQVFFQkFRRUFBQUFBQUFBQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFCQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmxZM1JwYjI1bGJuUXRiR1Z1WjNSb2IyNXliM2g1TFdOdmJtNWxZM1JwYjI0QUFBQUFBQUFBQUFBQUFBQUFBQUJ5WVc1elptVnlMV1Z1WTI5a2FXNW5jR2R5WVdSbERRb05DZzBLVTAwTkNnMEtWRlJRTDBORkwxUlRVQzhBQUFBQUFBQUFBQUFBQUFBQkFnQUJBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUFBQUFBQUFBQUFBUUlBQVFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFRRUZBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFBQUFFQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQUFBQUFBUUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNRUFBQUVCQVFFQkFRRUJBUUVCQVVFQkFRRUJBUUVCQVFFQkFRQUJBQUdCd1FFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFFQUFRQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdBQUFBQUFBQU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TUFBQUFBQUFBREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJPVDFWT1EwVkZRMHRQVlZST1JVTlVSVlJGUTFKSlFrVk1WVk5JUlZSRlFVUlRSVUZTUTBoU1IwVkRWRWxXU1ZSWlRFVk9SRUZTVmtWUFZFbEdXVkJVU1U5T1UwTklVMFZCV1ZOVVFWUkRTRWRGVDFKRVNWSkZRMVJQVWxSU1EwaFFRVkpCVFVWVVJWSlZVa05GUWxORFVrbENSVUZTUkU5WFRrRkRSVWxPUkU1TFEwdFZRbE5EVWtsQ1JVaFVWRkF2UVVSVVVDOD0nXG4iLCAibW9kdWxlLmV4cG9ydHMgPSAnQUdGemJRRUFBQUFCTUFoZ0FYOEJmMkFEZjM5L0FYOWdCSDkvZjM4QmYyQUFBR0FEZjM5L0FHQUJmd0JnQW45L0FHQUdmMzkvZjM5L0FBTExBUWdEWlc1MkdIZGhjMjFmYjI1ZmFHVmhaR1Z5YzE5amIyMXdiR1YwWlFBQ0EyVnVkaFYzWVhOdFgyOXVYMjFsYzNOaFoyVmZZbVZuYVc0QUFBTmxibllMZDJGemJWOXZibDkxY213QUFRTmxibllPZDJGemJWOXZibDl6ZEdGMGRYTUFBUU5sYm5ZVWQyRnpiVjl2Ymw5b1pXRmtaWEpmWm1sbGJHUUFBUU5sYm5ZVWQyRnpiVjl2Ymw5b1pXRmtaWEpmZG1Gc2RXVUFBUU5sYm5ZTWQyRnpiVjl2Ymw5aWIyUjVBQUVEWlc1MkdIZGhjMjFmYjI1ZmJXVnpjMkZuWlY5amIyMXdiR1YwWlFBQUEwWkZBd01FQUFBRkFBQUFBQUFBQlFFRkFBVUZCUUFBQmdBQUFBQUdCZ1lHQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFCQUFBQkFRY0FBQVVGQXdBQkJBVUJjQUVTRWdVREFRQUNCZ2dCZndGQmdOUUVDd2ZSQlNJR2JXVnRiM0o1QWdBTFgybHVhWFJwWVd4cGVtVUFDUmxmWDJsdVpHbHlaV04wWDJaMWJtTjBhVzl1WDNSaFlteGxBUUFMYkd4b2RIUndYMmx1YVhRQUNoaHNiR2gwZEhCZmMyaHZkV3hrWDJ0bFpYQmZZV3hwZG1VQVFReHNiR2gwZEhCZllXeHNiMk1BREFadFlXeHNiMk1BUmd0c2JHaDBkSEJmWm5KbFpRQU5CR1p5WldVQVNBOXNiR2gwZEhCZloyVjBYM1I1Y0dVQURoVnNiR2gwZEhCZloyVjBYMmgwZEhCZmJXRnFiM0lBRHhWc2JHaDBkSEJmWjJWMFgyaDBkSEJmYldsdWIzSUFFQkZzYkdoMGRIQmZaMlYwWDIxbGRHaHZaQUFSRm14c2FIUjBjRjluWlhSZmMzUmhkSFZ6WDJOdlpHVUFFaEpzYkdoMGRIQmZaMlYwWDNWd1ozSmhaR1VBRXd4c2JHaDBkSEJmY21WelpYUUFGQTVzYkdoMGRIQmZaWGhsWTNWMFpRQVZGR3hzYUhSMGNGOXpaWFIwYVc1bmMxOXBibWwwQUJZTmJHeG9kSFJ3WDJacGJtbHphQUFYREd4c2FIUjBjRjl3WVhWelpRQVlEV3hzYUhSMGNGOXlaWE4xYldVQUdSdHNiR2gwZEhCZmNtVnpkVzFsWDJGbWRHVnlYM1Z3WjNKaFpHVUFHaEJzYkdoMGRIQmZaMlYwWDJWeWNtNXZBQnNYYkd4b2RIUndYMmRsZEY5bGNuSnZjbDl5WldGemIyNEFIQmRzYkdoMGRIQmZjMlYwWDJWeWNtOXlYM0psWVhOdmJnQWRGR3hzYUhSMGNGOW5aWFJmWlhKeWIzSmZjRzl6QUI0UmJHeG9kSFJ3WDJWeWNtNXZYMjVoYldVQUh4SnNiR2gwZEhCZmJXVjBhRzlrWDI1aGJXVUFJQkpzYkdoMGRIQmZjM1JoZEhWelgyNWhiV1VBSVJwc2JHaDBkSEJmYzJWMFgyeGxibWxsYm5SZmFHVmhaR1Z5Y3dBaUlXeHNhSFIwY0Y5elpYUmZiR1Z1YVdWdWRGOWphSFZ1YTJWa1gyeGxibWQwYUFBakhXeHNhSFIwY0Y5elpYUmZiR1Z1YVdWdWRGOXJaV1Z3WDJGc2FYWmxBQ1FrYkd4b2RIUndYM05sZEY5c1pXNXBaVzUwWDNSeVlXNXpabVZ5WDJWdVkyOWthVzVuQUNVWWJHeG9kSFJ3WDIxbGMzTmhaMlZmYm1WbFpITmZaVzltQUQ4SkZ3RUFRUUVMRVFFQ0F3UUZDd1lITlRrM01TOHRKeXNwQ3JMZ0FrVUNBQXNJQUJDSWdJQ0FBQXNaQUNBQUVNS0FnSUFBR2lBQUlBSTJBamdnQUNBQk9nQW9DeHdBSUFBZ0FDOEJNaUFBTFFBdUlBQVF3WUNBZ0FBUWdJQ0FnQUFMS2dFQmYwSEFBQkRHZ0lDQUFDSUJFTUtBZ0lBQUdpQUJRWUNJZ0lBQU5nSTRJQUVnQURvQUtDQUJDd29BSUFBUXlJQ0FnQUFMQndBZ0FDMEFLQXNIQUNBQUxRQXFDd2NBSUFBdEFDc0xCd0FnQUMwQUtRc0hBQ0FBTHdFeUN3Y0FJQUF0QUM0TFJRRUVmeUFBS0FJWUlRRWdBQzBBTFNFQ0lBQXRBQ2doQXlBQUtBSTRJUVFnQUJEQ2dJQ0FBQm9nQUNBRU5nSTRJQUFnQXpvQUtDQUFJQUk2QUMwZ0FDQUJOZ0lZQ3hFQUlBQWdBU0FCSUFKcUVNT0FnSUFBQ3hBQUlBQkJBRUhjQUJETWdJQ0FBQm9MWndFQmYwRUFJUUVDUUNBQUtBSU1EUUFDUUFKQUFrQUNRQ0FBTFFBdkRnTUJBQU1DQ3lBQUtBSTRJZ0ZGRFFBZ0FTZ0NMQ0lCUlEwQUlBQWdBUkdBZ0lDQUFBQWlBUTBEQzBFQUR3c1F5b0NBZ0FBQUN5QUFRY09XZ0lBQU5nSVFRUTRoQVFzZ0FRc2VBQUpBSUFBb0Fnd05BQ0FBUWRHYmdJQUFOZ0lRSUFCQkZUWUNEQXNMRmdBQ1FDQUFLQUlNUVJWSERRQWdBRUVBTmdJTUN3c1dBQUpBSUFBb0FneEJGa2NOQUNBQVFRQTJBZ3dMQ3djQUlBQW9BZ3dMQndBZ0FDZ0NFQXNKQUNBQUlBRTJBaEFMQndBZ0FDZ0NGQXNpQUFKQUlBQkJKRWtOQUJES2dJQ0FBQUFMSUFCQkFuUkJvTE9BZ0FCcUtBSUFDeUlBQWtBZ0FFRXVTUTBBRU1xQWdJQUFBQXNnQUVFQ2RFR3d0SUNBQUdvb0FnQUw3Z3NCQVg5QjY2aUFnQUFoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJuSDlxRHZRRFkySUFBV0ZoWVdGaFlRSURCQVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaEJnY0lDUW9MREEwT0QyRmhZV0ZoRUdGaFlXRmhZV0ZoWVdGaEVXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlSSVRGQlVXRnhnWkdodGhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhIQjBlSHlBaElpTWtKU1luS0NrcUt5d3RMaTh3TVRJek5EVTJZVGM0T1RwaFlXRmhZV0ZoWVR0aFlXRThZV0ZoWVQwK1AyRmhZV0ZoWVdGaFFHRmhRV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVVKRFJFVkdSMGhKU2t0TVRVNVBVRkZTVTJGaFlXRmhZV0ZoVkZWV1YxaFpXbHRoWEYxaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmVZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhYMkJoQzBIaHA0Q0FBQThMUWFTaGdJQUFEd3RCeTZ5QWdBQVBDMEgrc1lDQUFBOExRY0NrZ0lBQUR3dEJxNlNBZ0FBUEMwR05xSUNBQUE4TFFlS21nSUFBRHd0QmdMQ0FnQUFQQzBHNXI0Q0FBQThMUWRla2dJQUFEd3RCNzUrQWdBQVBDMEhobjRDQUFBOExRZnFmZ0lBQUR3dEI4cUNBZ0FBUEMwR29yNENBQUE4TFFhNnlnSUFBRHd0QmlMQ0FnQUFQQzBIc3A0Q0FBQThMUVlLaWdJQUFEd3RCanAyQWdBQVBDMEhRcm9DQUFBOExRY3FqZ0lBQUR3dEJ4YktBZ0FBUEMwSGZuSUNBQUE4TFFkS2NnSUFBRHd0QnhLQ0FnQUFQQzBIWG9JQ0FBQThMUWFLZmdJQUFEd3RCN2E2QWdBQVBDMEdyc0lDQUFBOExRZFNsZ0lBQUR3dEJ6SzZBZ0FBUEMwSDZyb0NBQUE4TFFmeXJnSUFBRHd0QjByQ0FnQUFQQzBIeG5ZQ0FBQThMUWJ1Z2dJQUFEd3RCOTZ1QWdBQVBDMEdRc1lDQUFBOExRZGV4Z0lBQUR3dEJvcTJBZ0FBUEMwSFVwNENBQUE4TFFlQ3JnSUFBRHd0Qm42eUFnQUFQQzBIcnNZQ0FBQThMUWRXZmdJQUFEd3RCeXJHQWdBQVBDMEhlcFlDQUFBOExRZFNlZ0lBQUR3dEI5SnlBZ0FBUEMwR25zb0NBQUE4TFFiR2RnSUFBRHd0Qm9KMkFnQUFQQzBHNXNZQ0FBQThMUWJ5d2dJQUFEd3RCa3FHQWdBQVBDMEd6cG9DQUFBOExRZW1zZ0lBQUR3dEJySjZBZ0FBUEMwSFVxNENBQUE4TFFmZW1nSUFBRHd0QmdLYUFnQUFQQzBHd29ZQ0FBQThMUWY2ZWdJQUFEd3RCamFPQWdBQVBDMEdKcllDQUFBOExRZmVpZ0lBQUR3dEJvTEdBZ0FBUEMwR3VuNENBQUE4TFFjYWxnSUFBRHd0QjZKNkFnQUFQQzBHVG9vQ0FBQThMUWNLdmdJQUFEd3RCdzUyQWdBQVBDMEdMcklDQUFBOExRZUdkZ0lBQUR3dEJqYStBZ0FBUEMwSHFvWUNBQUE4TFFiU3RnSUFBRHd0QjBxK0FnQUFQQzBIZnNvQ0FBQThMUWRLeWdJQUFEd3RCOExDQWdBQVBDMEdwb29DQUFBOExRZm1qZ0lBQUR3dEJtWjZBZ0FBUEMwRzFySUNBQUE4TFFadXdnSUFBRHd0QmtyS0FnQUFQQzBHMnE0Q0FBQThMUWNLaWdJQUFEd3RCK0xLQWdBQVBDMEdlcFlDQUFBOExRZENpZ0lBQUR3dEJ1cDZBZ0FBUEMwR0Jub0NBQUE4TEVNcUFnSUFBQUF0QjFxR0FnQUFoQVFzZ0FRc1dBQ0FBSUFBdEFDMUIvZ0Z4SUFGQkFFZHlPZ0F0Q3hrQUlBQWdBQzBBTFVIOUFYRWdBVUVBUjBFQmRISTZBQzBMR1FBZ0FDQUFMUUF0UWZzQmNTQUJRUUJIUVFKMGNqb0FMUXNaQUNBQUlBQXRBQzFCOXdGeElBRkJBRWRCQTNSeU9nQXRDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FnQWlCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MU1FFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NCQ0lFUlEwQUlBQWdBU0FDSUFGcklBUVJnWUNBZ0FBQUlnTkJmMGNOQUNBQVFjYVJnSUFBTmdJUVFSZ2hBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUl3SWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREMwa0JBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWdnaUJFVU5BQ0FBSUFFZ0FpQUJheUFFRVlHQWdJQUFBQ0lEUVg5SERRQWdBRUgyaW9DQUFEWUNFRUVZSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ05DSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RKQVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSU1JZ1JGRFFBZ0FDQUJJQUlnQVdzZ0JCR0JnSUNBQUFBaUEwRi9SdzBBSUFCQjdacUFnQUEyQWhCQkdDRURDeUFEQ3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BamdpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTFNRRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDRUNJRVJRMEFJQUFnQVNBQ0lBRnJJQVFSZ1lDQWdBQUFJZ05CZjBjTkFDQUFRWldRZ0lBQU5nSVFRUmdoQXdzZ0F3c3VBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJOElnUkZEUUFnQUNBRUVZQ0FnSUFBQUNFREN5QURDMGtCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FoUWlCRVVOQUNBQUlBRWdBaUFCYXlBRUVZR0FnSUFBQUNJRFFYOUhEUUFnQUVHcW00Q0FBRFlDRUVFWUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NRQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXd0SkFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUlZSWdSRkRRQWdBQ0FCSUFJZ0FXc2dCQkdCZ0lDQUFBQWlBMEYvUncwQUlBQkI3Wk9BZ0FBMkFoQkJHQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWtRaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ0pDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3N1QVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSXNJZ1JGRFFBZ0FDQUVFWUNBZ0lBQUFDRURDeUFEQzBrQkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BaWdpQkVVTkFDQUFJQUVnQWlBQmF5QUVFWUdBZ0lBQUFDSURRWDlIRFFBZ0FFSDJpSUNBQURZQ0VFRVlJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDVUNJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3dEpBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJY0lnUkZEUUFnQUNBQklBSWdBV3NnQkJHQmdJQ0FBQUFpQTBGL1J3MEFJQUJCd3BtQWdBQTJBaEJCR0NFREN5QURDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FrZ2lCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MU1FFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NJQ0lFUlEwQUlBQWdBU0FDSUFGcklBUVJnWUNBZ0FBQUlnTkJmMGNOQUNBQVFaU1VnSUFBTmdJUVFSZ2hBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUpNSWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWxRaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ1dDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RGQVFGL0FrQUNRQ0FBTHdFd1FSUnhRUlJIRFFCQkFTRURJQUF0QUNoQkFVWU5BU0FBTHdFeVFlVUFSaUVEREFFTElBQXRBQ2xCQlVZaEF3c2dBQ0FET2dBdVFRQUwvZ0VCQTM5QkFTRURBa0FnQUM4Qk1DSUVRUWh4RFFBZ0FDa0RJRUlBVWlFREN3SkFBa0FnQUMwQUxrVU5BRUVCSVFVZ0FDMEFLVUVGUmcwQlFRRWhCU0FFUWNBQWNVVWdBM0ZCQVVjTkFRdEJBQ0VGSUFSQndBQnhEUUJCQWlFRklBUkIvLzhEY1NJRFFRaHhEUUFDUUNBRFFZQUVjVVVOQUFKQUlBQXRBQ2hCQVVjTkFDQUFMUUF0UVFweERRQkJCUThMUVFRUEN3SkFJQU5CSUhFTkFBSkFJQUF0QUNoQkFVWU5BQ0FBTHdFeVFmLy9BM0VpQUVHY2YycEI1QUJKRFFBZ0FFSE1BVVlOQUNBQVFiQUNSZzBBUVFRaEJTQUVRU2h4UlEwQ0lBTkJpQVJ4UVlBRVJnMENDMEVBRHd0QkFFRURJQUFwQXlCUUd5RUZDeUFGQzJJQkFuOUJBQ0VCQWtBZ0FDMEFLRUVCUmcwQUlBQXZBVEpCLy84RGNTSUNRWngvYWtIa0FFa05BQ0FDUWN3QlJnMEFJQUpCc0FKR0RRQWdBQzhCTUNJQVFjQUFjUTBBUVFFaEFTQUFRWWdFY1VHQUJFWU5BQ0FBUVNoeFJTRUJDeUFCQzZjQkFRTi9Ba0FDUUFKQUlBQXRBQ3BGRFFBZ0FDMEFLMFVOQUVFQUlRTWdBQzhCTUNJRVFRSnhSUTBCREFJTFFRQWhBeUFBTHdFd0lnUkJBWEZGRFFFTFFRRWhBeUFBTFFBb1FRRkdEUUFnQUM4Qk1rSC8vd054SWdWQm5IOXFRZVFBU1EwQUlBVkJ6QUZHRFFBZ0JVR3dBa1lOQUNBRVFjQUFjUTBBUVFBaEF5QUVRWWdFY1VHQUJFWU5BQ0FFUVNoeFFRQkhJUU1MSUFCQkFEc0JNQ0FBUVFBNkFDOGdBd3VaQVFFQ2Z3SkFBa0FDUUNBQUxRQXFSUTBBSUFBdEFDdEZEUUJCQUNFQklBQXZBVEFpQWtFQ2NVVU5BUXdDQzBFQUlRRWdBQzhCTUNJQ1FRRnhSUTBCQzBFQklRRWdBQzBBS0VFQlJnMEFJQUF2QVRKQi8vOERjU0lBUVp4L2FrSGtBRWtOQUNBQVFjd0JSZzBBSUFCQnNBSkdEUUFnQWtIQUFIRU5BRUVBSVFFZ0FrR0lCSEZCZ0FSR0RRQWdBa0VvY1VFQVJ5RUJDeUFCQzBrQkFYc2dBRUVRYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNJQi9Rc0RBQ0FBSUFIOUN3TUFJQUJCTUdvZ0FmMExBd0FnQUVFZ2FpQUIvUXNEQUNBQVFkMEJOZ0ljUVFBTGV3RUJmd0pBSUFBb0Fnd2lBdzBBQWtBZ0FDZ0NCRVVOQUNBQUlBRTJBZ1FMQWtBZ0FDQUJJQUlReElDQWdBQWlBdzBBSUFBb0Fnd1BDeUFBSUFNMkFoeEJBQ0VESUFBb0FnUWlBVVVOQUNBQUlBRWdBaUFBS0FJSUVZR0FnSUFBQUNJQlJRMEFJQUFnQWpZQ0ZDQUFJQUUyQWd3Z0FTRURDeUFEQytUekFRTU9md04rQkg4amdJQ0FnQUJCRUdzaUF5U0FnSUNBQUNBQklRUWdBU0VGSUFFaEJpQUJJUWNnQVNFSUlBRWhDU0FCSVFvZ0FTRUxJQUVoRENBQklRMGdBU0VPSUFFaER3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUFLQUljSWhCQmYyb08zUUhhQVFIWkFRSURCQVVHQndnSkNnc01EUTdZQVE4UTF3RVJFdFlCRXhRVkZoY1lHUm9iNEFIZkFSd2RIdFVCSHlBaElpTWtKZFFCSmljb0tTb3JMTk1CMGdFdEx0RUIwQUV2TURFeU16UTFOamM0T1RvN1BEMCtQMEJCUWtORVJVYmJBVWRJU1VyUEFjNEJTODBCVE13QlRVNVBVRkZTVTFSVlZsZFlXVnBiWEYxZVgyQmhZbU5rWldabmFHbHFhMnh0Ym05d2NYSnpkSFYyZDNoNWVudDhmWDUvZ0FHQkFZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk0Qmp3R1FBWkVCa2dHVEFaUUJsUUdXQVpjQm1BR1pBWm9CbXdHY0FaMEJuZ0dmQWFBQm9RR2lBYU1CcEFHbEFhWUJwd0dvQWFrQnFnR3JBYXdCclFHdUFhOEJzQUd4QWJJQnN3RzBBYlVCdGdHM0Fjc0J5Z0c0QWNrQnVRSElBYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJBTndCQzBFQUlSQU14Z0VMUVE0aEVBekZBUXRCRFNFUURNUUJDMEVQSVJBTXd3RUxRUkFoRUF6Q0FRdEJFeUVRRE1FQkMwRVVJUkFNd0FFTFFSVWhFQXkvQVF0QkZpRVFETDRCQzBFWElSQU12UUVMUVJnaEVBeThBUXRCR1NFUURMc0JDMEVhSVJBTXVnRUxRUnNoRUF5NUFRdEJIQ0VRRExnQkMwRUlJUkFNdHdFTFFSMGhFQXkyQVF0QklDRVFETFVCQzBFZklSQU10QUVMUVFjaEVBeXpBUXRCSVNFUURMSUJDMEVpSVJBTXNRRUxRUjRoRUF5d0FRdEJJeUVRREs4QkMwRVNJUkFNcmdFTFFSRWhFQXl0QVF0QkpDRVFES3dCQzBFbElSQU1xd0VMUVNZaEVBeXFBUXRCSnlFUURLa0JDMEhEQVNFUURLZ0JDMEVwSVJBTXB3RUxRU3NoRUF5bUFRdEJMQ0VRREtVQkMwRXRJUkFNcEFFTFFTNGhFQXlqQVF0Qkx5RVFES0lCQzBIRUFTRVFES0VCQzBFd0lSQU1vQUVMUVRRaEVBeWZBUXRCRENFUURKNEJDMEV4SVJBTW5RRUxRVEloRUF5Y0FRdEJNeUVRREpzQkMwRTVJUkFNbWdFTFFUVWhFQXlaQVF0QnhRRWhFQXlZQVF0QkN5RVFESmNCQzBFNklSQU1sZ0VMUVRZaEVBeVZBUXRCQ2lFUURKUUJDMEUzSVJBTWt3RUxRVGdoRUF5U0FRdEJQQ0VRREpFQkMwRTdJUkFNa0FFTFFUMGhFQXlQQVF0QkNTRVFESTRCQzBFb0lSQU1qUUVMUVQ0aEVBeU1BUXRCUHlFUURJc0JDMEhBQUNFUURJb0JDMEhCQUNFUURJa0JDMEhDQUNFUURJZ0JDMEhEQUNFUURJY0JDMEhFQUNFUURJWUJDMEhGQUNFUURJVUJDMEhHQUNFUURJUUJDMEVxSVJBTWd3RUxRY2NBSVJBTWdnRUxRY2dBSVJBTWdRRUxRY2tBSVJBTWdBRUxRY29BSVJBTWZ3dEJ5d0FoRUF4K0MwSE5BQ0VRREgwTFFjd0FJUkFNZkF0QnpnQWhFQXg3QzBIUEFDRVFESG9MUWRBQUlSQU1lUXRCMFFBaEVBeDRDMEhTQUNFUURIY0xRZE1BSVJBTWRndEIxQUFoRUF4MUMwSFdBQ0VRREhRTFFkVUFJUkFNY3d0QkJpRVFESElMUWRjQUlSQU1jUXRCQlNFUURIQUxRZGdBSVJBTWJ3dEJCQ0VRREc0TFFka0FJUkFNYlF0QjJnQWhFQXhzQzBIYkFDRVFER3NMUWR3QUlSQU1hZ3RCQXlFUURHa0xRZDBBSVJBTWFBdEIzZ0FoRUF4bkMwSGZBQ0VRREdZTFFlRUFJUkFNWlF0QjRBQWhFQXhrQzBIaUFDRVFER01MUWVNQUlSQU1ZZ3RCQWlFUURHRUxRZVFBSVJBTVlBdEI1UUFoRUF4ZkMwSG1BQ0VRREY0TFFlY0FJUkFNWFF0QjZBQWhFQXhjQzBIcEFDRVFERnNMUWVvQUlSQU1XZ3RCNndBaEVBeFpDMEhzQUNFUURGZ0xRZTBBSVJBTVZ3dEI3Z0FoRUF4V0MwSHZBQ0VRREZVTFFmQUFJUkFNVkF0QjhRQWhFQXhUQzBIeUFDRVFERklMUWZNQUlSQU1VUXRCOUFBaEVBeFFDMEgxQUNFUURFOExRZllBSVJBTVRndEI5d0FoRUF4TkMwSDRBQ0VRREV3TFFma0FJUkFNU3d0QitnQWhFQXhLQzBIN0FDRVFERWtMUWZ3QUlSQU1TQXRCL1FBaEVBeEhDMEgrQUNFUURFWUxRZjhBSVJBTVJRdEJnQUVoRUF4RUMwR0JBU0VRREVNTFFZSUJJUkFNUWd0Qmd3RWhFQXhCQzBHRUFTRVFERUFMUVlVQklSQU1Qd3RCaGdFaEVBdytDMEdIQVNFUUREMExRWWdCSVJBTVBBdEJpUUVoRUF3N0MwR0tBU0VRRERvTFFZc0JJUkFNT1F0QmpBRWhFQXc0QzBHTkFTRVFERGNMUVk0QklSQU1OZ3RCandFaEVBdzFDMEdRQVNFUUREUUxRWkVCSVJBTU13dEJrZ0VoRUF3eUMwR1RBU0VRRERFTFFaUUJJUkFNTUF0QmxRRWhFQXd2QzBHV0FTRVFEQzRMUVpjQklSQU1MUXRCbUFFaEVBd3NDMEdaQVNFUURDc0xRWm9CSVJBTUtndEJtd0VoRUF3cEMwR2NBU0VRRENnTFFaMEJJUkFNSnd0Qm5nRWhFQXdtQzBHZkFTRVFEQ1VMUWFBQklSQU1KQXRCb1FFaEVBd2pDMEdpQVNFUURDSUxRYU1CSVJBTUlRdEJwQUVoRUF3Z0MwR2xBU0VRREI4TFFhWUJJUkFNSGd0QnB3RWhFQXdkQzBHb0FTRVFEQndMUWFrQklSQU1Hd3RCcWdFaEVBd2FDMEdyQVNFUURCa0xRYXdCSVJBTUdBdEJyUUVoRUF3WEMwR3VBU0VRREJZTFFRRWhFQXdWQzBHdkFTRVFEQlFMUWJBQklSQU1Fd3RCc1FFaEVBd1NDMEd6QVNFUURCRUxRYklCSVJBTUVBdEJ0QUVoRUF3UEMwRzFBU0VRREE0TFFiWUJJUkFNRFF0QnR3RWhFQXdNQzBHNEFTRVFEQXNMUWJrQklSQU1DZ3RCdWdFaEVBd0pDMEc3QVNFUURBZ0xRY1lCSVJBTUJ3dEJ2QUVoRUF3R0MwRzlBU0VRREFVTFFiNEJJUkFNQkF0QnZ3RWhFQXdEQzBIQUFTRVFEQUlMUWNJQklSQU1BUXRCd1FFaEVBc0RRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUJBT3h3RUFBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjRmSUNFakpTZy9RRUZFUlVaSFNFbEtTMHhOVDFCUlVsUGVBMWRaVzF4ZFlHSmxabWRvYVdwcmJHMXZjSEZ5YzNSMWRuZDRlWHA3ZkgxK2dBR0NBWVVCaGdHSEFZa0Jpd0dNQVkwQmpnR1BBWkFCa1FHVUFaVUJsZ0dYQVpnQm1RR2FBWnNCbkFHZEFaNEJud0dnQWFFQm9nR2pBYVFCcFFHbUFhY0JxQUdwQWFvQnF3R3NBYTBCcmdHdkFiQUJzUUd5QWJNQnRBRzFBYllCdHdHNEFia0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEFkUUIxUUhXQWRjQjJBSFpBZG9CMndIY0FkMEIzZ0hnQWVFQjRnSGpBZVFCNVFIbUFlY0I2QUhwQWVvQjZ3SHNBZTBCN2dIdkFmQUI4UUh5QWZNQm1RS2tBckFDL2dMK0Fnc2dBU0lFSUFKSERmTUJRZDBCSVJBTS93TUxJQUVpRUNBQ1J3M2RBVUhEQVNFUURQNERDeUFCSWdFZ0FrY05rQUZCOXdBaEVBejlBd3NnQVNJQklBSkhEWVlCUWU4QUlSQU0vQU1MSUFFaUFTQUNSdzEvUWVvQUlSQU0rd01MSUFFaUFTQUNSdzE3UWVnQUlSQU0rZ01MSUFFaUFTQUNSdzE0UWVZQUlSQU0rUU1MSUFFaUFTQUNSdzBhUVJnaEVBejRBd3NnQVNJQklBSkhEUlJCRWlFUURQY0RDeUFCSWdFZ0FrY05XVUhGQUNFUURQWURDeUFCSWdFZ0FrY05Ta0UvSVJBTTlRTUxJQUVpQVNBQ1J3MUlRVHdoRUF6MEF3c2dBU0lCSUFKSERVRkJNU0VRRFBNREN5QUFMUUF1UVFGR0Rlc0RESWNDQ3lBQUlBRWlBU0FDRU1DQWdJQUFRUUZIRGVZQklBQkNBRGNESUF6bkFRc2dBQ0FCSWdFZ0FoQzBnSUNBQUNJUURlY0JJQUVoQVF6MUFnc0NRQ0FCSWdFZ0FrY05BRUVHSVJBTThBTUxJQUFnQVVFQmFpSUJJQUlRdTRDQWdBQWlFQTNvQVNBQklRRU1NUXNnQUVJQU53TWdRUkloRUF6VkF3c2dBU0lRSUFKSERTdEJIU0VRRE8wREN3SkFJQUVpQVNBQ1JnMEFJQUZCQVdvaEFVRVFJUkFNMUFNTFFRY2hFQXpzQXdzZ0FFSUFJQUFwQXlBaUVTQUNJQUVpRUd1dEloSjlJaE1nRXlBUlZoczNBeUFnRVNBU1ZpSVVSUTNsQVVFSUlSQU02d01MQWtBZ0FTSUJJQUpHRFFBZ0FFR0pnSUNBQURZQ0NDQUFJQUUyQWdRZ0FTRUJRUlFoRUF6U0F3dEJDU0VRRE9vREN5QUJJUUVnQUNrRElGQU41QUVnQVNFQkRQSUNDd0pBSUFFaUFTQUNSdzBBUVFzaEVBenBBd3NnQUNBQlFRRnFJZ0VnQWhDMmdJQ0FBQ0lRRGVVQklBRWhBUXp5QWdzZ0FDQUJJZ0VnQWhDNGdJQ0FBQ0lRRGVVQklBRWhBUXp5QWdzZ0FDQUJJZ0VnQWhDNGdJQ0FBQ0lRRGVZQklBRWhBUXdOQ3lBQUlBRWlBU0FDRUxxQWdJQUFJaEFONXdFZ0FTRUJEUEFDQ3dKQUlBRWlBU0FDUncwQVFROGhFQXpsQXdzZ0FTMEFBQ0lRUVR0R0RRZ2dFRUVOUnczb0FTQUJRUUZxSVFFTTd3SUxJQUFnQVNJQklBSVF1b0NBZ0FBaUVBM29BU0FCSVFFTThnSUxBMEFDUUNBQkxRQUFRZkMxZ0lBQWFpMEFBQ0lRUVFGR0RRQWdFRUVDUnczckFTQUFLQUlFSVJBZ0FFRUFOZ0lFSUFBZ0VDQUJRUUZxSWdFUXVZQ0FnQUFpRUEzcUFTQUJJUUVNOUFJTElBRkJBV29pQVNBQ1J3MEFDMEVTSVJBTTRnTUxJQUFnQVNJQklBSVF1b0NBZ0FBaUVBM3BBU0FCSVFFTUNnc2dBU0lCSUFKSERRWkJHeUVRRE9BREN3SkFJQUVpQVNBQ1J3MEFRUlloRUF6Z0F3c2dBRUdLZ0lDQUFEWUNDQ0FBSUFFMkFnUWdBQ0FCSUFJUXVJQ0FnQUFpRUEzcUFTQUJJUUZCSUNFUURNWURDd0pBSUFFaUFTQUNSZzBBQTBBQ1FDQUJMUUFBUWZDM2dJQUFhaTBBQUNJUVFRSkdEUUFDUUNBUVFYOXFEZ1RsQWV3QkFPc0I3QUVMSUFGQkFXb2hBVUVJSVJBTXlBTUxJQUZCQVdvaUFTQUNSdzBBQzBFVklSQU0zd01MUVJVaEVBemVBd3NEUUFKQUlBRXRBQUJCOExtQWdBQnFMUUFBSWhCQkFrWU5BQ0FRUVg5cURnVGVBZXdCNEFIckFld0JDeUFCUVFGcUlnRWdBa2NOQUF0QkdDRVFETjBEQ3dKQUlBRWlBU0FDUmcwQUlBQkJpNENBZ0FBMkFnZ2dBQ0FCTmdJRUlBRWhBVUVISVJBTXhBTUxRUmtoRUF6Y0F3c2dBVUVCYWlFQkRBSUxBa0FnQVNJVUlBSkhEUUJCR2lFUUROc0RDeUFVSVFFQ1FDQVVMUUFBUVhOcURoVGRBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnTHVBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnTHVBZ0R1QWd0QkFDRVFJQUJCQURZQ0hDQUFRYStMZ0lBQU5nSVFJQUJCQWpZQ0RDQUFJQlJCQVdvMkFoUU0yZ01MQWtBZ0FTMEFBQ0lRUVR0R0RRQWdFRUVOUnczb0FTQUJRUUZxSVFFTTVRSUxJQUZCQVdvaEFRdEJJaUVRREw4REN3SkFJQUVpRUNBQ1J3MEFRUndoRUF6WUF3dENBQ0VSSUJBaEFTQVFMUUFBUVZCcURqZm5BZVlCQVFJREJBVUdCd2dBQUFBQUFBQUFDUW9MREEwT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEVCRVNFeFFBQzBFZUlSQU12UU1MUWdJaEVRemxBUXRDQXlFUkRPUUJDMElFSVJFTTR3RUxRZ1VoRVF6aUFRdENCaUVSRE9FQkMwSUhJUkVNNEFFTFFnZ2hFUXpmQVF0Q0NTRVJETjRCQzBJS0lSRU0zUUVMUWdzaEVRemNBUXRDRENFUkROc0JDMElOSVJFTTJnRUxRZzRoRVF6WkFRdENEeUVSRE5nQkMwSUtJUkVNMXdFTFFnc2hFUXpXQVF0Q0RDRVJETlVCQzBJTklSRU0xQUVMUWc0aEVRelRBUXRDRHlFUkROSUJDMElBSVJFQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQkF0QUFCQlVHb09OK1VCNUFFQUFRSURCQVVHQitZQjVnSG1BZVlCNWdIbUFlWUJDQWtLQ3d3TjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQVE0UEVCRVNFK1lCQzBJQ0lSRU01QUVMUWdNaEVRempBUXRDQkNFUkRPSUJDMElGSVJFTTRRRUxRZ1loRVF6Z0FRdENCeUVSRE44QkMwSUlJUkVNM2dFTFFna2hFUXpkQVF0Q0NpRVJETndCQzBJTElSRU0yd0VMUWd3aEVRemFBUXRDRFNFUkROa0JDMElPSVJFTTJBRUxRZzhoRVF6WEFRdENDaUVSRE5ZQkMwSUxJUkVNMVFFTFFnd2hFUXpVQVF0Q0RTRVJETk1CQzBJT0lSRU0wZ0VMUWc4aEVRelJBUXNnQUVJQUlBQXBBeUFpRVNBQ0lBRWlFR3V0SWhKOUloTWdFeUFSVmhzM0F5QWdFU0FTVmlJVVJRM1NBVUVmSVJBTXdBTUxBa0FnQVNJQklBSkdEUUFnQUVHSmdJQ0FBRFlDQ0NBQUlBRTJBZ1FnQVNFQlFTUWhFQXluQXd0QklDRVFETDhEQ3lBQUlBRWlFQ0FDRUw2QWdJQUFRWDlxRGdXMkFRREZBZ0hSQWRJQkMwRVJJUkFNcEFNTElBQkJBVG9BTHlBUUlRRU11d01MSUFFaUFTQUNSdzNTQVVFa0lSQU11d01MSUFFaURTQUNSdzBlUWNZQUlSQU11Z01MSUFBZ0FTSUJJQUlRc29DQWdBQWlFQTNVQVNBQklRRU10UUVMSUFFaUVDQUNSdzBtUWRBQUlSQU11QU1MQWtBZ0FTSUJJQUpIRFFCQktDRVFETGdEQ3lBQVFRQTJBZ1FnQUVHTWdJQ0FBRFlDQ0NBQUlBRWdBUkN4Z0lDQUFDSVFEZE1CSUFFaEFRellBUXNDUUNBQkloQWdBa2NOQUVFcElSQU10d01MSUJBdEFBQWlBVUVnUmcwVUlBRkJDVWNOMHdFZ0VFRUJhaUVCREJVTEFrQWdBU0lCSUFKR0RRQWdBVUVCYWlFQkRCY0xRU29oRUF5MUF3c0NRQ0FCSWhBZ0FrY05BRUVySVJBTXRRTUxBa0FnRUMwQUFDSUJRUWxHRFFBZ0FVRWdSdzNWQVFzZ0FDMEFMRUVJUmczVEFTQVFJUUVNa1FNTEFrQWdBU0lCSUFKSERRQkJMQ0VRRExRREN5QUJMUUFBUVFwSERkVUJJQUZCQVdvaEFRekpBZ3NnQVNJT0lBSkhEZFVCUVM4aEVBeXlBd3NEUUFKQUlBRXRBQUFpRUVFZ1JnMEFBa0FnRUVGMmFnNEVBTndCM0FFQTJnRUxJQUVoQVF6Z0FRc2dBVUVCYWlJQklBSkhEUUFMUVRFaEVBeXhBd3RCTWlFUUlBRWlGQ0FDUmcyd0F5QUNJQlJySUFBb0FnQWlBV29oRlNBVUlBRnJRUU5xSVJZQ1FBTkFJQlF0QUFBaUYwRWdjaUFYSUJkQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SUFGQjhMdUFnQUJxTFFBQVJ3MEJBa0FnQVVFRFJ3MEFRUVloQVF5V0F3c2dBVUVCYWlFQklCUkJBV29pRkNBQ1J3MEFDeUFBSUJVMkFnQU1zUU1MSUFCQkFEWUNBQ0FVSVFFTTJRRUxRVE1oRUNBQkloUWdBa1lOcndNZ0FpQVVheUFBS0FJQUlnRnFJUlVnRkNBQmEwRUlhaUVXQWtBRFFDQVVMUUFBSWhkQklISWdGeUFYUWI5L2FrSC9BWEZCR2trYlFmOEJjU0FCUWZTN2dJQUFhaTBBQUVjTkFRSkFJQUZCQ0VjTkFFRUZJUUVNbFFNTElBRkJBV29oQVNBVVFRRnFJaFFnQWtjTkFBc2dBQ0FWTmdJQURMQURDeUFBUVFBMkFnQWdGQ0VCRE5nQkMwRTBJUkFnQVNJVUlBSkdEYTRESUFJZ0ZHc2dBQ2dDQUNJQmFpRVZJQlFnQVd0QkJXb2hGZ0pBQTBBZ0ZDMEFBQ0lYUVNCeUlCY2dGMEcvZjJwQi93RnhRUnBKRzBIL0FYRWdBVUhRd29DQUFHb3RBQUJIRFFFQ1FDQUJRUVZIRFFCQkJ5RUJESlFEQ3lBQlFRRnFJUUVnRkVFQmFpSVVJQUpIRFFBTElBQWdGVFlDQUF5dkF3c2dBRUVBTmdJQUlCUWhBUXpYQVFzQ1FDQUJJZ0VnQWtZTkFBTkFBa0FnQVMwQUFFR0F2b0NBQUdvdEFBQWlFRUVCUmcwQUlCQkJBa1lOQ2lBQklRRU0zUUVMSUFGQkFXb2lBU0FDUncwQUMwRXdJUkFNcmdNTFFUQWhFQXl0QXdzQ1FDQUJJZ0VnQWtZTkFBTkFBa0FnQVMwQUFDSVFRU0JHRFFBZ0VFRjJhZzRFMlFIYUFkb0IyUUhhQVFzZ0FVRUJhaUlCSUFKSERRQUxRVGdoRUF5dEF3dEJPQ0VRREt3REN3TkFBa0FnQVMwQUFDSVFRU0JHRFFBZ0VFRUpSdzBEQ3lBQlFRRnFJZ0VnQWtjTkFBdEJQQ0VRREtzREN3TkFBa0FnQVMwQUFDSVFRU0JHRFFBQ1FBSkFJQkJCZG1vT0JOb0JBUUhhQVFBTElCQkJMRVlOMndFTElBRWhBUXdFQ3lBQlFRRnFJZ0VnQWtjTkFBdEJQeUVRREtvREN5QUJJUUVNMndFTFFjQUFJUkFnQVNJVUlBSkdEYWdESUFJZ0ZHc2dBQ2dDQUNJQmFpRVdJQlFnQVd0QkJtb2hGd0pBQTBBZ0ZDMEFBRUVnY2lBQlFZREFnSUFBYWkwQUFFY05BU0FCUVFaR0RZNERJQUZCQVdvaEFTQVVRUUZxSWhRZ0FrY05BQXNnQUNBV05nSUFES2tEQ3lBQVFRQTJBZ0FnRkNFQkMwRTJJUkFNamdNTEFrQWdBU0lQSUFKSERRQkJ3UUFoRUF5bkF3c2dBRUdNZ0lDQUFEWUNDQ0FBSUE4MkFnUWdEeUVCSUFBdEFDeEJmMm9PQk0wQjFRSFhBZGtCaHdNTElBRkJBV29oQVF6TUFRc0NRQ0FCSWdFZ0FrWU5BQU5BQWtBZ0FTMEFBQ0lRUVNCeUlCQWdFRUcvZjJwQi93RnhRUnBKRzBIL0FYRWlFRUVKUmcwQUlCQkJJRVlOQUFKQUFrQUNRQUpBSUJCQm5YOXFEaE1BQXdNREF3TURBd0VEQXdNREF3TURBd01DQXdzZ0FVRUJhaUVCUVRFaEVBeVJBd3NnQVVFQmFpRUJRVEloRUF5UUF3c2dBVUVCYWlFQlFUTWhFQXlQQXdzZ0FTRUJETkFCQ3lBQlFRRnFJZ0VnQWtjTkFBdEJOU0VRREtVREMwRTFJUkFNcEFNTEFrQWdBU0lCSUFKR0RRQURRQUpBSUFFdEFBQkJnTHlBZ0FCcUxRQUFRUUZHRFFBZ0FTRUJETk1CQ3lBQlFRRnFJZ0VnQWtjTkFBdEJQU0VRREtRREMwRTlJUkFNb3dNTElBQWdBU0lCSUFJUXNJQ0FnQUFpRUEzV0FTQUJJUUVNQVFzZ0VFRUJhaUVCQzBFOElSQU1od01MQWtBZ0FTSUJJQUpIRFFCQndnQWhFQXlnQXdzQ1FBTkFBa0FnQVMwQUFFRjNhZzRZQUFMK0F2NENoQVArQXY0Qy9nTCtBdjRDL2dMK0F2NEMvZ0wrQXY0Qy9nTCtBdjRDL2dMK0F2NEMvZ0lBL2dJTElBRkJBV29pQVNBQ1J3MEFDMEhDQUNFUURLQURDeUFCUVFGcUlRRWdBQzBBTFVFQmNVVU52UUVnQVNFQkMwRXNJUkFNaFFNTElBRWlBU0FDUnczVEFVSEVBQ0VRREowREN3TkFBa0FnQVMwQUFFR1F3SUNBQUdvdEFBQkJBVVlOQUNBQklRRU10d0lMSUFGQkFXb2lBU0FDUncwQUMwSEZBQ0VRREp3REN5QU5MUUFBSWhCQklFWU5zd0VnRUVFNlJ3MkJBeUFBS0FJRUlRRWdBRUVBTmdJRUlBQWdBU0FORUsrQWdJQUFJZ0VOMEFFZ0RVRUJhaUVCRExNQ0MwSEhBQ0VRSUFFaURTQUNSZzJhQXlBQ0lBMXJJQUFvQWdBaUFXb2hGaUFOSUFGclFRVnFJUmNEUUNBTkxRQUFJaFJCSUhJZ0ZDQVVRYjkvYWtIL0FYRkJHa2tiUWY4QmNTQUJRWkRDZ0lBQWFpMEFBRWNOZ0FNZ0FVRUZSZzMwQWlBQlFRRnFJUUVnRFVFQmFpSU5JQUpIRFFBTElBQWdGallDQUF5YUF3dEJ5QUFoRUNBQklnMGdBa1lObVFNZ0FpQU5heUFBS0FJQUlnRnFJUllnRFNBQmEwRUphaUVYQTBBZ0RTMEFBQ0lVUVNCeUlCUWdGRUcvZjJwQi93RnhRUnBKRzBIL0FYRWdBVUdXd29DQUFHb3RBQUJIRGY4Q0FrQWdBVUVKUncwQVFRSWhBUXoxQWdzZ0FVRUJhaUVCSUExQkFXb2lEU0FDUncwQUN5QUFJQlkyQWdBTW1RTUxBa0FnQVNJTklBSkhEUUJCeVFBaEVBeVpBd3NDUUFKQUlBMHRBQUFpQVVFZ2NpQUJJQUZCdjM5cVFmOEJjVUVhU1J0Qi93RnhRWkovYWc0SEFJQURnQU9BQTRBRGdBTUJnQU1MSUExQkFXb2hBVUUrSVJBTWdBTUxJQTFCQVdvaEFVRS9JUkFNL3dJTFFjb0FJUkFnQVNJTklBSkdEWmNESUFJZ0RXc2dBQ2dDQUNJQmFpRVdJQTBnQVd0QkFXb2hGd05BSUEwdEFBQWlGRUVnY2lBVUlCUkJ2MzlxUWY4QmNVRWFTUnRCL3dGeElBRkJvTUtBZ0FCcUxRQUFSdzM5QWlBQlFRRkdEZkFDSUFGQkFXb2hBU0FOUVFGcUlnMGdBa2NOQUFzZ0FDQVdOZ0lBREpjREMwSExBQ0VRSUFFaURTQUNSZzJXQXlBQ0lBMXJJQUFvQWdBaUFXb2hGaUFOSUFGclFRNXFJUmNEUUNBTkxRQUFJaFJCSUhJZ0ZDQVVRYjkvYWtIL0FYRkJHa2tiUWY4QmNTQUJRYUxDZ0lBQWFpMEFBRWNOL0FJZ0FVRU9SZzN3QWlBQlFRRnFJUUVnRFVFQmFpSU5JQUpIRFFBTElBQWdGallDQUF5V0F3dEJ6QUFoRUNBQklnMGdBa1lObFFNZ0FpQU5heUFBS0FJQUlnRnFJUllnRFNBQmEwRVBhaUVYQTBBZ0RTMEFBQ0lVUVNCeUlCUWdGRUcvZjJwQi93RnhRUnBKRzBIL0FYRWdBVUhBd29DQUFHb3RBQUJIRGZzQ0FrQWdBVUVQUncwQVFRTWhBUXp4QWdzZ0FVRUJhaUVCSUExQkFXb2lEU0FDUncwQUN5QUFJQlkyQWdBTWxRTUxRYzBBSVJBZ0FTSU5JQUpHRFpRRElBSWdEV3NnQUNnQ0FDSUJhaUVXSUEwZ0FXdEJCV29oRndOQUlBMHRBQUFpRkVFZ2NpQVVJQlJCdjM5cVFmOEJjVUVhU1J0Qi93RnhJQUZCME1LQWdBQnFMUUFBUnczNkFnSkFJQUZCQlVjTkFFRUVJUUVNOEFJTElBRkJBV29oQVNBTlFRRnFJZzBnQWtjTkFBc2dBQ0FXTmdJQURKUURDd0pBSUFFaURTQUNSdzBBUWM0QUlSQU1sQU1MQWtBQ1FBSkFBa0FnRFMwQUFDSUJRU0J5SUFFZ0FVRy9mMnBCL3dGeFFScEpHMEgvQVhGQm5YOXFEaE1BL1FMOUF2MEMvUUw5QXYwQy9RTDlBdjBDL1FMOUF2MENBZjBDL1FMOUFnSUQvUUlMSUExQkFXb2hBVUhCQUNFUURQMENDeUFOUVFGcUlRRkJ3Z0FoRUF6OEFnc2dEVUVCYWlFQlFjTUFJUkFNK3dJTElBMUJBV29oQVVIRUFDRVFEUG9DQ3dKQUlBRWlBU0FDUmcwQUlBQkJqWUNBZ0FBMkFnZ2dBQ0FCTmdJRUlBRWhBVUhGQUNFUURQb0NDMEhQQUNFUURKSURDeUFRSVFFQ1FBSkFJQkF0QUFCQmRtb09CQUdvQXFnQ0FLZ0NDeUFRUVFGcUlRRUxRU2NoRUF6NEFnc0NRQ0FCSWdFZ0FrY05BRUhSQUNFUURKRURDd0pBSUFFdEFBQkJJRVlOQUNBQklRRU1qUUVMSUFGQkFXb2hBU0FBTFFBdFFRRnhSUTNIQVNBQklRRU1qQUVMSUFFaUZ5QUNSdzNJQVVIU0FDRVFESThEQzBIVEFDRVFJQUVpRkNBQ1JnMk9BeUFDSUJScklBQW9BZ0FpQVdvaEZpQVVJQUZyUVFGcUlSY0RRQ0FVTFFBQUlBRkIxc0tBZ0FCcUxRQUFSdzNNQVNBQlFRRkdEY2NCSUFGQkFXb2hBU0FVUVFGcUloUWdBa2NOQUFzZ0FDQVdOZ0lBREk0REN3SkFJQUVpQVNBQ1J3MEFRZFVBSVJBTWpnTUxJQUV0QUFCQkNrY056QUVnQVVFQmFpRUJETWNCQ3dKQUlBRWlBU0FDUncwQVFkWUFJUkFNalFNTEFrQUNRQ0FCTFFBQVFYWnFEZ1FBelFITkFRSE5BUXNnQVVFQmFpRUJETWNCQ3lBQlFRRnFJUUZCeWdBaEVBenpBZ3NnQUNBQklnRWdBaEN1Z0lDQUFDSVFEY3NCSUFFaEFVSE5BQ0VRRFBJQ0N5QUFMUUFwUVNKR0RZVURES1lDQ3dKQUlBRWlBU0FDUncwQVFkc0FJUkFNaWdNTFFRQWhGRUVCSVJkQkFTRVdRUUFoRUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQkxRQUFRVkJxRGdyVUFkTUJBQUVDQXdRRkJnalZBUXRCQWlFUURBWUxRUU1oRUF3RkMwRUVJUkFNQkF0QkJTRVFEQU1MUVFZaEVBd0NDMEVISVJBTUFRdEJDQ0VRQzBFQUlSZEJBQ0VXUVFBaEZBek1BUXRCQ1NFUVFRRWhGRUVBSVJkQkFDRVdETXNCQ3dKQUlBRWlBU0FDUncwQVFkMEFJUkFNaVFNTElBRXRBQUJCTGtjTnpBRWdBVUVCYWlFQkRLWUNDeUFCSWdFZ0FrY056QUZCM3dBaEVBeUhBd3NDUUNBQklnRWdBa1lOQUNBQVFZNkFnSUFBTmdJSUlBQWdBVFlDQkNBQklRRkIwQUFoRUF6dUFndEI0QUFoRUF5R0F3dEI0UUFoRUNBQklnRWdBa1lOaFFNZ0FpQUJheUFBS0FJQUloUnFJUllnQVNBVWEwRURhaUVYQTBBZ0FTMEFBQ0FVUWVMQ2dJQUFhaTBBQUVjTnpRRWdGRUVEUmczTUFTQVVRUUZxSVJRZ0FVRUJhaUlCSUFKSERRQUxJQUFnRmpZQ0FBeUZBd3RCNGdBaEVDQUJJZ0VnQWtZTmhBTWdBaUFCYXlBQUtBSUFJaFJxSVJZZ0FTQVVhMEVDYWlFWEEwQWdBUzBBQUNBVVFlYkNnSUFBYWkwQUFFY056QUVnRkVFQ1JnM09BU0FVUVFGcUlSUWdBVUVCYWlJQklBSkhEUUFMSUFBZ0ZqWUNBQXlFQXd0QjR3QWhFQ0FCSWdFZ0FrWU5nd01nQWlBQmF5QUFLQUlBSWhScUlSWWdBU0FVYTBFRGFpRVhBMEFnQVMwQUFDQVVRZW5DZ0lBQWFpMEFBRWNOeXdFZ0ZFRURSZzNPQVNBVVFRRnFJUlFnQVVFQmFpSUJJQUpIRFFBTElBQWdGallDQUF5REF3c0NRQ0FCSWdFZ0FrY05BRUhsQUNFUURJTURDeUFBSUFGQkFXb2lBU0FDRUtpQWdJQUFJaEFOelFFZ0FTRUJRZFlBSVJBTTZRSUxBa0FnQVNJQklBSkdEUUFEUUFKQUlBRXRBQUFpRUVFZ1JnMEFBa0FDUUFKQUlCQkJ1SDlxRGdzQUFjOEJ6d0hQQWM4Qnp3SFBBYzhCendFQ3p3RUxJQUZCQVdvaEFVSFNBQ0VRRE8wQ0N5QUJRUUZxSVFGQjB3QWhFQXpzQWdzZ0FVRUJhaUVCUWRRQUlSQU02d0lMSUFGQkFXb2lBU0FDUncwQUMwSGtBQ0VRRElJREMwSGtBQ0VRRElFREN3TkFBa0FnQVMwQUFFSHd3b0NBQUdvdEFBQWlFRUVCUmcwQUlCQkJmbW9PQTg4QjBBSFJBZElCQ3lBQlFRRnFJZ0VnQWtjTkFBdEI1Z0FoRUF5QUF3c0NRQ0FCSWdFZ0FrWU5BQ0FCUVFGcUlRRU1Bd3RCNXdBaEVBei9BZ3NEUUFKQUlBRXRBQUJCOE1TQWdBQnFMUUFBSWhCQkFVWU5BQUpBSUJCQmZtb09CTklCMHdIVUFRRFZBUXNnQVNFQlFkY0FJUkFNNXdJTElBRkJBV29pQVNBQ1J3MEFDMEhvQUNFUURQNENDd0pBSUFFaUFTQUNSdzBBUWVrQUlSQU0vZ0lMQWtBZ0FTMEFBQ0lRUVhacURocTZBZFVCMVFHOEFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIVkFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIVkFjb0IxUUhWQVFEVEFRc2dBVUVCYWlFQkMwRUdJUkFNNHdJTEEwQUNRQ0FCTFFBQVFmREdnSUFBYWkwQUFFRUJSZzBBSUFFaEFReWVBZ3NnQVVFQmFpSUJJQUpIRFFBTFFlb0FJUkFNK3dJTEFrQWdBU0lCSUFKR0RRQWdBVUVCYWlFQkRBTUxRZXNBSVJBTStnSUxBa0FnQVNJQklBSkhEUUJCN0FBaEVBejZBZ3NnQVVFQmFpRUJEQUVMQWtBZ0FTSUJJQUpIRFFCQjdRQWhFQXo1QWdzZ0FVRUJhaUVCQzBFRUlSQU0zZ0lMQWtBZ0FTSVVJQUpIRFFCQjdnQWhFQXozQWdzZ0ZDRUJBa0FDUUFKQUlCUXRBQUJCOE1pQWdBQnFMUUFBUVg5cURnZlVBZFVCMWdFQW5BSUJBdGNCQ3lBVVFRRnFJUUVNQ2dzZ0ZFRUJhaUVCRE0wQkMwRUFJUkFnQUVFQU5nSWNJQUJCbTVLQWdBQTJBaEFnQUVFSE5nSU1JQUFnRkVFQmFqWUNGQXoyQWdzQ1FBTkFBa0FnQVMwQUFFSHd5SUNBQUdvdEFBQWlFRUVFUmcwQUFrQUNRQ0FRUVg5cURnZlNBZE1CMUFIWkFRQUVBZGtCQ3lBQklRRkIyZ0FoRUF6Z0Fnc2dBVUVCYWlFQlFkd0FJUkFNM3dJTElBRkJBV29pQVNBQ1J3MEFDMEh2QUNFUURQWUNDeUFCUVFGcUlRRU15d0VMQWtBZ0FTSVVJQUpIRFFCQjhBQWhFQXoxQWdzZ0ZDMEFBRUV2UnczVUFTQVVRUUZxSVFFTUJnc0NRQ0FCSWhRZ0FrY05BRUh4QUNFUURQUUNDd0pBSUJRdEFBQWlBVUV2UncwQUlCUkJBV29oQVVIZEFDRVFETnNDQ3lBQlFYWnFJZ1JCRmtzTjB3RkJBU0FFZEVHSmdJQUNjVVVOMHdFTXlnSUxBa0FnQVNJQklBSkdEUUFnQVVFQmFpRUJRZDRBSVJBTTJnSUxRZklBSVJBTThnSUxBa0FnQVNJVUlBSkhEUUJCOUFBaEVBenlBZ3NnRkNFQkFrQWdGQzBBQUVId3pJQ0FBR290QUFCQmYyb09BOGtDbEFJQTFBRUxRZUVBSVJBTTJBSUxBa0FnQVNJVUlBSkdEUUFEUUFKQUlCUXRBQUJCOE1xQWdBQnFMUUFBSWdGQkEwWU5BQUpBSUFGQmYyb09Bc3NDQU5VQkN5QVVJUUZCM3dBaEVBemFBZ3NnRkVFQmFpSVVJQUpIRFFBTFFmTUFJUkFNOFFJTFFmTUFJUkFNOEFJTEFrQWdBU0lCSUFKR0RRQWdBRUdQZ0lDQUFEWUNDQ0FBSUFFMkFnUWdBU0VCUWVBQUlSQU0xd0lMUWZVQUlSQU03d0lMQWtBZ0FTSUJJQUpIRFFCQjlnQWhFQXp2QWdzZ0FFR1BnSUNBQURZQ0NDQUFJQUUyQWdRZ0FTRUJDMEVESVJBTTFBSUxBMEFnQVMwQUFFRWdSdzNEQWlBQlFRRnFJZ0VnQWtjTkFBdEI5d0FoRUF6c0Fnc0NRQ0FCSWdFZ0FrY05BRUg0QUNFUURPd0NDeUFCTFFBQVFTQkhEYzRCSUFGQkFXb2hBUXp2QVFzZ0FDQUJJZ0VnQWhDc2dJQ0FBQ0lRRGM0QklBRWhBUXlPQWdzQ1FDQUJJZ1FnQWtjTkFFSDZBQ0VRRE9vQ0N5QUVMUUFBUWN3QVJ3M1JBU0FFUVFGcUlRRkJFeUVRRE04QkN3SkFJQUVpQkNBQ1J3MEFRZnNBSVJBTTZRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQldvaEVBTkFJQVF0QUFBZ0FVSHd6b0NBQUdvdEFBQkhEZEFCSUFGQkJVWU56Z0VnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCK3dBaEVBem9BZ3NDUUNBQklnUWdBa2NOQUVIOEFDRVFET2dDQ3dKQUFrQWdCQzBBQUVHOWYyb09EQURSQWRFQjBRSFJBZEVCMFFIUkFkRUIwUUhSQVFIUkFRc2dCRUVCYWlFQlFlWUFJUkFNendJTElBUkJBV29oQVVIbkFDRVFETTRDQ3dKQUlBRWlCQ0FDUncwQVFmMEFJUkFNNXdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBbW9oRUFKQUEwQWdCQzBBQUNBQlFlM1BnSUFBYWkwQUFFY056d0VnQVVFQ1JnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRZjBBSVJBTTV3SUxJQUJCQURZQ0FDQVFRUUZxSVFGQkVDRVFETXdCQ3dKQUlBRWlCQ0FDUncwQVFmNEFJUkFNNWdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJCV29oRUFKQUEwQWdCQzBBQUNBQlFmYk9nSUFBYWkwQUFFY056Z0VnQVVFRlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRZjRBSVJBTTVnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkZpRVFETXNCQ3dKQUlBRWlCQ0FDUncwQVFmOEFJUkFNNVFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBMm9oRUFKQUEwQWdCQzBBQUNBQlFmek9nSUFBYWkwQUFFY056UUVnQVVFRFJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRZjhBSVJBTTVRSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkJTRVFETW9CQ3dKQUlBRWlCQ0FDUncwQVFZQUJJUkFNNUFJTElBUXRBQUJCMlFCSERjc0JJQVJCQVdvaEFVRUlJUkFNeVFFTEFrQWdBU0lFSUFKSERRQkJnUUVoRUF6akFnc0NRQUpBSUFRdEFBQkJzbjlxRGdNQXpBRUJ6QUVMSUFSQkFXb2hBVUhyQUNFUURNb0NDeUFFUVFGcUlRRkI3QUFoRUF6SkFnc0NRQ0FCSWdRZ0FrY05BRUdDQVNFUURPSUNDd0pBQWtBZ0JDMEFBRUc0ZjJvT0NBRExBY3NCeXdITEFjc0J5d0VCeXdFTElBUkJBV29oQVVIcUFDRVFETWtDQ3lBRVFRRnFJUUZCN1FBaEVBeklBZ3NDUUNBQklnUWdBa2NOQUVHREFTRVFET0VDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hFQ0FFSUFGclFRSnFJUlFDUUFOQUlBUXRBQUFnQVVHQXo0Q0FBR290QUFCSERja0JJQUZCQWtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRURZQ0FFR0RBU0VRRE9FQ0MwRUFJUkFnQUVFQU5nSUFJQlJCQVdvaEFRekdBUXNDUUNBQklnUWdBa2NOQUVHRUFTRVFET0FDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRUnFJUkFDUUFOQUlBUXRBQUFnQVVHRHo0Q0FBR290QUFCSERjZ0JJQUZCQkVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR0VBU0VRRE9BQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVNNaEVBekZBUXNDUUNBQklnUWdBa2NOQUVHRkFTRVFETjhDQ3dKQUFrQWdCQzBBQUVHMGYyb09DQURJQWNnQnlBSElBY2dCeUFFQnlBRUxJQVJCQVdvaEFVSHZBQ0VRRE1ZQ0N5QUVRUUZxSVFGQjhBQWhFQXpGQWdzQ1FDQUJJZ1FnQWtjTkFFR0dBU0VRRE40Q0N5QUVMUUFBUWNVQVJ3M0ZBU0FFUVFGcUlRRU1nd0lMQWtBZ0FTSUVJQUpIRFFCQmh3RWhFQXpkQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRURhaUVRQWtBRFFDQUVMUUFBSUFGQmlNK0FnQUJxTFFBQVJ3M0ZBU0FCUVFOR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJod0VoRUF6ZEFnc2dBRUVBTmdJQUlCQkJBV29oQVVFdElSQU13Z0VMQWtBZ0FTSUVJQUpIRFFCQmlBRWhFQXpjQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUlhaUVRQWtBRFFDQUVMUUFBSUFGQjBNK0FnQUJxTFFBQVJ3M0VBU0FCUVFoR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJpQUVoRUF6Y0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFcElSQU13UUVMQWtBZ0FTSUJJQUpIRFFCQmlRRWhFQXpiQWd0QkFTRVFJQUV0QUFCQjN3QkhEY0FCSUFGQkFXb2hBUXlCQWdzQ1FDQUJJZ1FnQWtjTkFFR0tBU0VRRE5vQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUZxSVJBRFFDQUVMUUFBSUFGQmpNK0FnQUJxTFFBQVJ3M0JBU0FCUVFGR0RhOENJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWW9CSVJBTTJRSUxBa0FnQVNJRUlBSkhEUUJCaXdFaEVBelpBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQ2FpRVFBa0FEUUNBRUxRQUFJQUZCanMrQWdBQnFMUUFBUnczQkFTQUJRUUpHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQml3RWhFQXpaQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVDSVJBTXZnRUxBa0FnQVNJRUlBSkhEUUJCakFFaEVBellBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBa0FEUUNBRUxRQUFJQUZCOE0rQWdBQnFMUUFBUnczQUFTQUJRUUZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQmpBRWhFQXpZQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVmSVJBTXZRRUxBa0FnQVNJRUlBSkhEUUJCalFFaEVBelhBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBa0FEUUNBRUxRQUFJQUZCOHMrQWdBQnFMUUFBUncyL0FTQUJRUUZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQmpRRWhFQXpYQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVKSVJBTXZBRUxBa0FnQVNJRUlBSkhEUUJCamdFaEVBeldBZ3NDUUFKQUlBUXRBQUJCdDM5cURnY0F2d0cvQWI4QnZ3Ry9BUUcvQVFzZ0JFRUJhaUVCUWZnQUlSQU12UUlMSUFSQkFXb2hBVUg1QUNFUURMd0NDd0pBSUFFaUJDQUNSdzBBUVk4QklSQU0xUUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJXb2hFQUpBQTBBZ0JDMEFBQ0FCUVpIUGdJQUFhaTBBQUVjTnZRRWdBVUVGUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFZOEJJUkFNMVFJTElBQkJBRFlDQUNBUVFRRnFJUUZCR0NFUURMb0JDd0pBSUFFaUJDQUNSdzBBUVpBQklSQU0xQUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFtb2hFQUpBQTBBZ0JDMEFBQ0FCUVpmUGdJQUFhaTBBQUVjTnZBRWdBVUVDUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaQUJJUkFNMUFJTElBQkJBRFlDQUNBUVFRRnFJUUZCRnlFUURMa0JDd0pBSUFFaUJDQUNSdzBBUVpFQklSQU0wd0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJtb2hFQUpBQTBBZ0JDMEFBQ0FCUVpyUGdJQUFhaTBBQUVjTnV3RWdBVUVHUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaRUJJUkFNMHdJTElBQkJBRFlDQUNBUVFRRnFJUUZCRlNFUURMZ0JDd0pBSUFFaUJDQUNSdzBBUVpJQklSQU0wZ0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJXb2hFQUpBQTBBZ0JDMEFBQ0FCUWFIUGdJQUFhaTBBQUVjTnVnRWdBVUVGUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaSUJJUkFNMGdJTElBQkJBRFlDQUNBUVFRRnFJUUZCSGlFUURMY0JDd0pBSUFFaUJDQUNSdzBBUVpNQklSQU0wUUlMSUFRdEFBQkJ6QUJIRGJnQklBUkJBV29oQVVFS0lSQU10Z0VMQWtBZ0JDQUNSdzBBUVpRQklSQU0wQUlMQWtBQ1FDQUVMUUFBUWI5L2FnNFBBTGtCdVFHNUFia0J1UUc1QWJrQnVRRzVBYmtCdVFHNUFia0JBYmtCQ3lBRVFRRnFJUUZCL2dBaEVBeTNBZ3NnQkVFQmFpRUJRZjhBSVJBTXRnSUxBa0FnQkNBQ1J3MEFRWlVCSVJBTXp3SUxBa0FDUUNBRUxRQUFRYjkvYWc0REFMZ0JBYmdCQ3lBRVFRRnFJUUZCL1FBaEVBeTJBZ3NnQkVFQmFpRUVRWUFCSVJBTXRRSUxBa0FnQkNBQ1J3MEFRWllCSVJBTXpnSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRYWZQZ0lBQWFpMEFBRWNOdGdFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVpZQklSQU16Z0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJDeUVRRExNQkN3SkFJQVFnQWtjTkFFR1hBU0VRRE0wQ0N3SkFBa0FDUUFKQUlBUXRBQUJCVTJvT0l3QzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0JBYmdCdUFHNEFiZ0J1QUVDdUFHNEFiZ0JBN2dCQ3lBRVFRRnFJUUZCK3dBaEVBeTJBZ3NnQkVFQmFpRUJRZndBSVJBTXRRSUxJQVJCQVdvaEJFR0JBU0VRRExRQ0N5QUVRUUZxSVFSQmdnRWhFQXl6QWdzQ1FDQUVJQUpIRFFCQm1BRWhFQXpNQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUVhaUVRQWtBRFFDQUVMUUFBSUFGQnFjK0FnQUJxTFFBQVJ3MjBBU0FCUVFSR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJtQUVoRUF6TUFnc2dBRUVBTmdJQUlCQkJBV29oQVVFWklSQU1zUUVMQWtBZ0JDQUNSdzBBUVprQklSQU15d0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJXb2hFQUpBQTBBZ0JDMEFBQ0FCUWE3UGdJQUFhaTBBQUVjTnN3RWdBVUVGUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaa0JJUkFNeXdJTElBQkJBRFlDQUNBUVFRRnFJUUZCQmlFUURMQUJDd0pBSUFRZ0FrY05BRUdhQVNFUURNb0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFGcUlSQUNRQU5BSUFRdEFBQWdBVUcwejRDQUFHb3RBQUJIRGJJQklBRkJBVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHYUFTRVFETW9DQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUndoRUF5dkFRc0NRQ0FFSUFKSERRQkJtd0VoRUF6SkFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVCYWlFUUFrQURRQ0FFTFFBQUlBRkJ0cytBZ0FCcUxRQUFSdzJ4QVNBQlFRRkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCbXdFaEVBekpBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRW5JUkFNcmdFTEFrQWdCQ0FDUncwQVFad0JJUkFNeUFJTEFrQUNRQ0FFTFFBQVFheC9hZzRDQUFHeEFRc2dCRUVCYWlFRVFZWUJJUkFNcndJTElBUkJBV29oQkVHSEFTRVFESzRDQ3dKQUlBUWdBa2NOQUVHZEFTRVFETWNDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRRnFJUkFDUUFOQUlBUXRBQUFnQVVHNHo0Q0FBR290QUFCSERhOEJJQUZCQVVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR2RBU0VRRE1jQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVNZaEVBeXNBUXNDUUNBRUlBSkhEUUJCbmdFaEVBekdBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBa0FEUUNBRUxRQUFJQUZCdXMrQWdBQnFMUUFBUncydUFTQUJRUUZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQm5nRWhFQXpHQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVESVJBTXF3RUxBa0FnQkNBQ1J3MEFRWjhCSVJBTXhRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQW1vaEVBSkFBMEFnQkMwQUFDQUJRZTNQZ0lBQWFpMEFBRWNOclFFZ0FVRUNSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVo4QklSQU14UUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJEQ0VRREtvQkN3SkFJQVFnQWtjTkFFR2dBU0VRRE1RQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUU5xSVJBQ1FBTkFJQVF0QUFBZ0FVRzh6NENBQUdvdEFBQkhEYXdCSUFGQkEwWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdnQVNFUURNUUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFRMGhFQXlwQVFzQ1FDQUVJQUpIRFFCQm9RRWhFQXpEQWdzQ1FBSkFJQVF0QUFCQnVuOXFEZ3NBckFHc0Fhd0JyQUdzQWF3QnJBR3NBYXdCQWF3QkN5QUVRUUZxSVFSQml3RWhFQXlxQWdzZ0JFRUJhaUVFUVl3QklSQU1xUUlMQWtBZ0JDQUNSdzBBUWFJQklSQU13Z0lMSUFRdEFBQkIwQUJIRGFrQklBUkJBV29oQkF6cEFRc0NRQ0FFSUFKSERRQkJvd0VoRUF6QkFnc0NRQUpBSUFRdEFBQkJ0MzlxRGdjQnFnR3FBYW9CcWdHcUFRQ3FBUXNnQkVFQmFpRUVRWTRCSVJBTXFBSUxJQVJCQVdvaEFVRWlJUkFNcGdFTEFrQWdCQ0FDUncwQVFhUUJJUkFNd0FJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFjRFBnSUFBYWkwQUFFY05xQUVnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRYVFCSVJBTXdBSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkhTRVFES1VCQ3dKQUlBUWdBa2NOQUVHbEFTRVFETDhDQ3dKQUFrQWdCQzBBQUVHdWYyb09Bd0NvQVFHb0FRc2dCRUVCYWlFRVFaQUJJUkFNcGdJTElBUkJBV29oQVVFRUlSQU1wQUVMQWtBZ0JDQUNSdzBBUWFZQklSQU12Z0lMQWtBQ1FBSkFBa0FDUUNBRUxRQUFRYjkvYWc0VkFLb0JxZ0dxQWFvQnFnR3FBYW9CcWdHcUFhb0JBYW9CcWdFQ3FnR3FBUU9xQWFvQkJLb0JDeUFFUVFGcUlRUkJpQUVoRUF5b0Fnc2dCRUVCYWlFRVFZa0JJUkFNcHdJTElBUkJBV29oQkVHS0FTRVFES1lDQ3lBRVFRRnFJUVJCandFaEVBeWxBZ3NnQkVFQmFpRUVRWkVCSVJBTXBBSUxBa0FnQkNBQ1J3MEFRYWNCSVJBTXZRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQW1vaEVBSkFBMEFnQkMwQUFDQUJRZTNQZ0lBQWFpMEFBRWNOcFFFZ0FVRUNSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWFjQklSQU12UUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJFU0VRREtJQkN3SkFJQVFnQWtjTkFFR29BU0VRREx3Q0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVSEN6NENBQUdvdEFBQkhEYVFCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdvQVNFUURMd0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFTd2hFQXloQVFzQ1FDQUVJQUpIRFFCQnFRRWhFQXk3QWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUVhaUVRQWtBRFFDQUVMUUFBSUFGQnhjK0FnQUJxTFFBQVJ3MmpBU0FCUVFSR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJxUUVoRUF5N0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFcklSQU1vQUVMQWtBZ0JDQUNSdzBBUWFvQklSQU11Z0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFtb2hFQUpBQTBBZ0JDMEFBQ0FCUWNyUGdJQUFhaTBBQUVjTm9nRWdBVUVDUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFhb0JJUkFNdWdJTElBQkJBRFlDQUNBUVFRRnFJUUZCRkNFUURKOEJDd0pBSUFRZ0FrY05BRUdyQVNFUURMa0NDd0pBQWtBQ1FBSkFJQVF0QUFCQnZuOXFEZzhBQVFLa0FhUUJwQUdrQWFRQnBBR2tBYVFCcEFHa0FhUUJBNlFCQ3lBRVFRRnFJUVJCa3dFaEVBeWlBZ3NnQkVFQmFpRUVRWlFCSVJBTW9RSUxJQVJCQVdvaEJFR1ZBU0VRREtBQ0N5QUVRUUZxSVFSQmxnRWhFQXlmQWdzQ1FDQUVJQUpIRFFCQnJBRWhFQXk0QWdzZ0JDMEFBRUhGQUVjTm53RWdCRUVCYWlFRURPQUJDd0pBSUFRZ0FrY05BRUd0QVNFUURMY0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUhOejRDQUFHb3RBQUJIRFo4QklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHdEFTRVFETGNDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUTRoRUF5Y0FRc0NRQ0FFSUFKSERRQkJyZ0VoRUF5MkFnc2dCQzBBQUVIUUFFY05uUUVnQkVFQmFpRUJRU1VoRUF5YkFRc0NRQ0FFSUFKSERRQkJyd0VoRUF5MUFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVJYWlFUUFrQURRQ0FFTFFBQUlBRkIwTStBZ0FCcUxRQUFSdzJkQVNBQlFRaEdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCcndFaEVBeTFBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRXFJUkFNbWdFTEFrQWdCQ0FDUncwQVFiQUJJUkFNdEFJTEFrQUNRQ0FFTFFBQVFhdC9hZzRMQUowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVFHZEFRc2dCRUVCYWlFRVFab0JJUkFNbXdJTElBUkJBV29oQkVHYkFTRVFESm9DQ3dKQUlBUWdBa2NOQUVHeEFTRVFETE1DQ3dKQUFrQWdCQzBBQUVHL2Yyb09GQUNjQVp3Qm5BR2NBWndCbkFHY0Fad0JuQUdjQVp3Qm5BR2NBWndCbkFHY0Fad0JuQUVCbkFFTElBUkJBV29oQkVHWkFTRVFESm9DQ3lBRVFRRnFJUVJCbkFFaEVBeVpBZ3NDUUNBRUlBSkhEUUJCc2dFaEVBeXlBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFRGFpRVFBa0FEUUNBRUxRQUFJQUZCMmMrQWdBQnFMUUFBUncyYUFTQUJRUU5HRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQnNnRWhFQXl5QWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVoSVJBTWx3RUxBa0FnQkNBQ1J3MEFRYk1CSVJBTXNRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQm1vaEVBSkFBMEFnQkMwQUFDQUJRZDNQZ0lBQWFpMEFBRWNObVFFZ0FVRUdSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWJNQklSQU1zUUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJHaUVRREpZQkN3SkFJQVFnQWtjTkFFRzBBU0VRRExBQ0N3SkFBa0FDUUNBRUxRQUFRYnQvYWc0UkFKb0JtZ0dhQVpvQm1nR2FBWm9CbWdHYUFRR2FBWm9CbWdHYUFab0JBcG9CQ3lBRVFRRnFJUVJCblFFaEVBeVlBZ3NnQkVFQmFpRUVRWjRCSVJBTWx3SUxJQVJCQVdvaEJFR2ZBU0VRREpZQ0N3SkFJQVFnQWtjTkFFRzFBU0VRREs4Q0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVZxSVJBQ1FBTkFJQVF0QUFBZ0FVSGt6NENBQUdvdEFBQkhEWmNCSUFGQkJVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUcxQVNFUURLOENDeUFBUVFBMkFnQWdFRUVCYWlFQlFTZ2hFQXlVQVFzQ1FDQUVJQUpIRFFCQnRnRWhFQXl1QWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUNhaUVRQWtBRFFDQUVMUUFBSUFGQjZzK0FnQUJxTFFBQVJ3MldBU0FCUVFKR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJ0Z0VoRUF5dUFnc2dBRUVBTmdJQUlCQkJBV29oQVVFSElSQU1rd0VMQWtBZ0JDQUNSdzBBUWJjQklSQU1yUUlMQWtBQ1FDQUVMUUFBUWJ0L2FnNE9BSllCbGdHV0FaWUJsZ0dXQVpZQmxnR1dBWllCbGdHV0FRR1dBUXNnQkVFQmFpRUVRYUVCSVJBTWxBSUxJQVJCQVdvaEJFR2lBU0VRREpNQ0N3SkFJQVFnQWtjTkFFRzRBU0VRREt3Q0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVSHR6NENBQUdvdEFBQkhEWlFCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUc0QVNFUURLd0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFSSWhFQXlSQVFzQ1FDQUVJQUpIRFFCQnVRRWhFQXlyQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQWtBRFFDQUVMUUFBSUFGQjhNK0FnQUJxTFFBQVJ3MlRBU0FCUVFGR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJ1UUVoRUF5ckFnc2dBRUVBTmdJQUlCQkJBV29oQVVFZ0lSQU1rQUVMQWtBZ0JDQUNSdzBBUWJvQklSQU1xZ0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFXb2hFQUpBQTBBZ0JDMEFBQ0FCUWZMUGdJQUFhaTBBQUVjTmtnRWdBVUVCUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFib0JJUkFNcWdJTElBQkJBRFlDQUNBUVFRRnFJUUZCRHlFUURJOEJDd0pBSUFRZ0FrY05BRUc3QVNFUURLa0NDd0pBQWtBZ0JDMEFBRUczZjJvT0J3Q1NBWklCa2dHU0FaSUJBWklCQ3lBRVFRRnFJUVJCcFFFaEVBeVFBZ3NnQkVFQmFpRUVRYVlCSVJBTWp3SUxBa0FnQkNBQ1J3MEFRYndCSVJBTXFBSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQjJvaEVBSkFBMEFnQkMwQUFDQUJRZlRQZ0lBQWFpMEFBRWNOa0FFZ0FVRUhSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWJ3QklSQU1xQUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJHeUVRREkwQkN3SkFJQVFnQWtjTkFFRzlBU0VRREtjQ0N3SkFBa0FDUUNBRUxRQUFRYjUvYWc0U0FKRUJrUUdSQVpFQmtRR1JBWkVCa1FHUkFRR1JBWkVCa1FHUkFaRUJrUUVDa1FFTElBUkJBV29oQkVHa0FTRVFESThDQ3lBRVFRRnFJUVJCcHdFaEVBeU9BZ3NnQkVFQmFpRUVRYWdCSVJBTWpRSUxBa0FnQkNBQ1J3MEFRYjRCSVJBTXBnSUxJQVF0QUFCQnpnQkhEWTBCSUFSQkFXb2hCQXpQQVFzQ1FDQUVJQUpIRFFCQnZ3RWhFQXlsQWdzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFTFFBQVFiOS9hZzRWQUFFQ0E1d0JCQVVHbkFHY0Fad0JCd2dKQ2d1Y0FRd05EZytjQVFzZ0JFRUJhaUVCUWVnQUlSQU1tZ0lMSUFSQkFXb2hBVUhwQUNFUURKa0NDeUFFUVFGcUlRRkI3Z0FoRUF5WUFnc2dCRUVCYWlFQlFmSUFJUkFNbHdJTElBUkJBV29oQVVIekFDRVFESllDQ3lBRVFRRnFJUUZCOWdBaEVBeVZBZ3NnQkVFQmFpRUJRZmNBSVJBTWxBSUxJQVJCQVdvaEFVSDZBQ0VRREpNQ0N5QUVRUUZxSVFSQmd3RWhFQXlTQWdzZ0JFRUJhaUVFUVlRQklSQU1rUUlMSUFSQkFXb2hCRUdGQVNFUURKQUNDeUFFUVFGcUlRUkJrZ0VoRUF5UEFnc2dCRUVCYWlFRVFaZ0JJUkFNamdJTElBUkJBV29oQkVHZ0FTRVFESTBDQ3lBRVFRRnFJUVJCb3dFaEVBeU1BZ3NnQkVFQmFpRUVRYW9CSVJBTWl3SUxBa0FnQkNBQ1JnMEFJQUJCa0lDQWdBQTJBZ2dnQUNBRU5nSUVRYXNCSVJBTWl3SUxRY0FCSVJBTW93SUxJQUFnQlNBQ0VLcUFnSUFBSWdFTml3RWdCU0VCREZ3TEFrQWdCaUFDUmcwQUlBWkJBV29oQlF5TkFRdEJ3Z0VoRUF5aEFnc0RRQUpBSUJBdEFBQkJkbW9PQkl3QkFBQ1BBUUFMSUJCQkFXb2lFQ0FDUncwQUMwSERBU0VRREtBQ0N3SkFJQWNnQWtZTkFDQUFRWkdBZ0lBQU5nSUlJQUFnQnpZQ0JDQUhJUUZCQVNFUURJY0NDMEhFQVNFUURKOENDd0pBSUFjZ0FrY05BRUhGQVNFUURKOENDd0pBQWtBZ0J5MEFBRUYyYWc0RUFjNEJ6Z0VBemdFTElBZEJBV29oQmd5TkFRc2dCMEVCYWlFRkRJa0JDd0pBSUFjZ0FrY05BRUhHQVNFUURKNENDd0pBQWtBZ0J5MEFBRUYyYWc0WEFZOEJqd0VCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCQUk4QkN5QUhRUUZxSVFjTFFiQUJJUkFNaEFJTEFrQWdDQ0FDUncwQVFjZ0JJUkFNblFJTElBZ3RBQUJCSUVjTmpRRWdBRUVBT3dFeUlBaEJBV29oQVVHekFTRVFESU1DQ3lBQklSY0NRQU5BSUJjaUJ5QUNSZzBCSUFjdEFBQkJVR3BCL3dGeEloQkJDazhOekFFQ1FDQUFMd0V5SWhSQm1UTkxEUUFnQUNBVVFRcHNJaFE3QVRJZ0VFSC8vd056SUJSQi92OERjVWtOQUNBSFFRRnFJUmNnQUNBVUlCQnFJaEE3QVRJZ0VFSC8vd054UWVnSFNRMEJDd3RCQUNFUUlBQkJBRFlDSENBQVFjR0pnSUFBTmdJUUlBQkJEVFlDRENBQUlBZEJBV28yQWhRTW5BSUxRY2NCSVJBTW13SUxJQUFnQ0NBQ0VLNkFnSUFBSWhCRkRjb0JJQkJCRlVjTmpBRWdBRUhJQVRZQ0hDQUFJQWcyQWhRZ0FFSEpsNENBQURZQ0VDQUFRUlUyQWd4QkFDRVFESm9DQ3dKQUlBa2dBa2NOQUVITUFTRVFESm9DQzBFQUlSUkJBU0VYUVFFaEZrRUFJUkFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ1MwQUFFRlFhZzRLbGdHVkFRQUJBZ01FQlFZSWx3RUxRUUloRUF3R0MwRURJUkFNQlF0QkJDRVFEQVFMUVFVaEVBd0RDMEVHSVJBTUFndEJCeUVRREFFTFFRZ2hFQXRCQUNFWFFRQWhGa0VBSVJRTWpnRUxRUWtoRUVFQklSUkJBQ0VYUVFBaEZneU5BUXNDUUNBS0lBSkhEUUJCemdFaEVBeVpBZ3NnQ2kwQUFFRXVSdzJPQVNBS1FRRnFJUWtNeWdFTElBc2dBa2NOamdGQjBBRWhFQXlYQWdzQ1FDQUxJQUpHRFFBZ0FFR09nSUNBQURZQ0NDQUFJQXMyQWdSQnR3RWhFQXorQVF0QjBRRWhFQXlXQWdzQ1FDQUVJQUpIRFFCQjBnRWhFQXlXQWdzZ0FpQUVheUFBS0FJQUloQnFJUlFnQkNBUWEwRUVhaUVMQTBBZ0JDMEFBQ0FRUWZ6UGdJQUFhaTBBQUVjTmpnRWdFRUVFUmczcEFTQVFRUUZxSVJBZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSFNBU0VRREpVQ0N5QUFJQXdnQWhDc2dJQ0FBQ0lCRFkwQklBd2hBUXk0QVFzQ1FDQUVJQUpIRFFCQjFBRWhFQXlVQWdzZ0FpQUVheUFBS0FJQUloQnFJUlFnQkNBUWEwRUJhaUVNQTBBZ0JDMEFBQ0FRUVlIUWdJQUFhaTBBQUVjTmp3RWdFRUVCUmcyT0FTQVFRUUZxSVJBZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSFVBU0VRREpNQ0N3SkFJQVFnQWtjTkFFSFdBU0VRREpNQ0N5QUNJQVJySUFBb0FnQWlFR29oRkNBRUlCQnJRUUpxSVFzRFFDQUVMUUFBSUJCQmc5Q0FnQUJxTFFBQVJ3Mk9BU0FRUVFKR0RaQUJJQkJCQVdvaEVDQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRZFlCSVJBTWtnSUxBa0FnQkNBQ1J3MEFRZGNCSVJBTWtnSUxBa0FDUUNBRUxRQUFRYnQvYWc0UUFJOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3RUJqd0VMSUFSQkFXb2hCRUc3QVNFUURQa0JDeUFFUVFGcUlRUkJ2QUVoRUF6NEFRc0NRQ0FFSUFKSERRQkIyQUVoRUF5UkFnc2dCQzBBQUVISUFFY05qQUVnQkVFQmFpRUVETVFCQ3dKQUlBUWdBa1lOQUNBQVFaQ0FnSUFBTmdJSUlBQWdCRFlDQkVHK0FTRVFEUGNCQzBIWkFTRVFESThDQ3dKQUlBUWdBa2NOQUVIYUFTRVFESThDQ3lBRUxRQUFRY2dBUmczREFTQUFRUUU2QUNnTXVRRUxJQUJCQWpvQUx5QUFJQVFnQWhDbWdJQ0FBQ0lRRFkwQlFjSUJJUkFNOUFFTElBQXRBQ2hCZjJvT0FyY0J1UUc0QVFzRFFBSkFJQVF0QUFCQmRtb09CQUNPQVk0QkFJNEJDeUFFUVFGcUlnUWdBa2NOQUF0QjNRRWhFQXlMQWdzZ0FFRUFPZ0F2SUFBdEFDMUJCSEZGRFlRQ0N5QUFRUUE2QUM4Z0FFRUJPZ0EwSUFFaEFReU1BUXNnRUVFVlJnM2FBU0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJwNDZBZ0FBMkFoQWdBRUVTTmdJTVFRQWhFQXlJQWdzQ1FDQUFJQkFnQWhDMGdJQ0FBQ0lFRFFBZ0VDRUJESUVDQ3dKQUlBUkJGVWNOQUNBQVFRTTJBaHdnQUNBUU5nSVVJQUJCc0ppQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF5SUFnc2dBRUVBTmdJY0lBQWdFRFlDRkNBQVFhZU9nSUFBTmdJUUlBQkJFallDREVFQUlSQU1od0lMSUJCQkZVWU4xZ0VnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZHFOZ0lBQU5nSVFJQUJCRkRZQ0RFRUFJUkFNaGdJTElBQW9BZ1FoRnlBQVFRQTJBZ1FnRUNBUnAyb2lGaUVCSUFBZ0Z5QVFJQllnRkJzaUVCQzFnSUNBQUNJVVJRMk5BU0FBUVFjMkFod2dBQ0FRTmdJVUlBQWdGRFlDREVFQUlSQU1oUUlMSUFBZ0FDOEJNRUdBQVhJN0FUQWdBU0VCQzBFcUlSQU02Z0VMSUJCQkZVWU4wUUVnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWU9NZ0lBQU5nSVFJQUJCRXpZQ0RFRUFJUkFNZ2dJTElCQkJGVVlOendFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVpxUGdJQUFOZ0lRSUFCQklqWUNERUVBSVJBTWdRSUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDM2dJQ0FBQ0lRRFFBZ0FVRUJhaUVCREkwQkN5QUFRUXcyQWh3Z0FDQVFOZ0lNSUFBZ0FVRUJhallDRkVFQUlSQU1nQUlMSUJCQkZVWU56QUVnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWnFQZ0lBQU5nSVFJQUJCSWpZQ0RFRUFJUkFNL3dFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkMzZ0lDQUFDSVFEUUFnQVVFQmFpRUJESXdCQ3lBQVFRMDJBaHdnQUNBUU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTS9nRUxJQkJCRlVZTnlRRWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFjYU1nSUFBTmdJUUlBQkJJellDREVFQUlSQU0vUUVMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQzVnSUNBQUNJUURRQWdBVUVCYWlFQkRJc0JDeUFBUVE0MkFod2dBQ0FRTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNL0FFTElBQkJBRFlDSENBQUlBRTJBaFFnQUVIQWxZQ0FBRFlDRUNBQVFRSTJBZ3hCQUNFUURQc0JDeUFRUVJWR0RjVUJJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSEdqSUNBQURZQ0VDQUFRU00yQWd4QkFDRVFEUG9CQ3lBQVFSQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNK1FFTElBQW9BZ1FoQkNBQVFRQTJBZ1FDUUNBQUlBUWdBUkM1Z0lDQUFDSUVEUUFnQVVFQmFpRUJEUEVCQ3lBQVFSRTJBaHdnQUNBRU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTStBRUxJQkJCRlVZTndRRWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFjYU1nSUFBTmdJUUlBQkJJellDREVFQUlSQU05d0VMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQzVnSUNBQUNJUURRQWdBVUVCYWlFQkRJZ0JDeUFBUVJNMkFod2dBQ0FRTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNOWdFTElBQW9BZ1FoQkNBQVFRQTJBZ1FDUUNBQUlBUWdBUkM1Z0lDQUFDSUVEUUFnQVVFQmFpRUJETzBCQ3lBQVFSUTJBaHdnQUNBRU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTTlRRUxJQkJCRlVZTnZRRWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFacVBnSUFBTmdJUUlBQkJJallDREVFQUlSQU05QUVMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQzNnSUNBQUNJUURRQWdBVUVCYWlFQkRJWUJDeUFBUVJZMkFod2dBQ0FRTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNOHdFTElBQW9BZ1FoQkNBQVFRQTJBZ1FDUUNBQUlBUWdBUkMzZ0lDQUFDSUVEUUFnQVVFQmFpRUJET2tCQ3lBQVFSYzJBaHdnQUNBRU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTThnRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSE5rNENBQURZQ0VDQUFRUXcyQWd4QkFDRVFEUEVCQzBJQklSRUxJQkJCQVdvaEFRSkFJQUFwQXlBaUVrTC8vLy8vLy8vLy93OVdEUUFnQUNBU1FnU0dJQkdFTndNZ0lBRWhBUXlFQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWEySmdJQUFOZ0lRSUFCQkREWUNERUVBSVJBTTd3RUxJQUJCQURZQ0hDQUFJQkEyQWhRZ0FFSE5rNENBQURZQ0VDQUFRUXcyQWd4QkFDRVFETzRCQ3lBQUtBSUVJUmNnQUVFQU5nSUVJQkFnRWFkcUloWWhBU0FBSUJjZ0VDQVdJQlFiSWhBUXRZQ0FnQUFpRkVVTmN5QUFRUVUyQWh3Z0FDQVFOZ0lVSUFBZ0ZEWUNERUVBSVJBTTdRRUxJQUJCQURZQ0hDQUFJQkEyQWhRZ0FFR3FuSUNBQURZQ0VDQUFRUTgyQWd4QkFDRVFET3dCQ3lBQUlCQWdBaEMwZ0lDQUFDSUJEUUVnRUNFQkMwRU9JUkFNMFFFTEFrQWdBVUVWUncwQUlBQkJBallDSENBQUlCQTJBaFFnQUVHd21JQ0FBRFlDRUNBQVFSVTJBZ3hCQUNFUURPb0JDeUFBUVFBMkFod2dBQ0FRTmdJVUlBQkJwNDZBZ0FBMkFoQWdBRUVTTmdJTVFRQWhFQXpwQVFzZ0FVRUJhaUVRQWtBZ0FDOEJNQ0lCUVlBQmNVVU5BQUpBSUFBZ0VDQUNFTHVBZ0lBQUlnRU5BQ0FRSVFFTWNBc2dBVUVWUncyNkFTQUFRUVUyQWh3Z0FDQVFOZ0lVSUFCQitaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBenBBUXNDUUNBQlFhQUVjVUdnQkVjTkFDQUFMUUF0UVFKeERRQWdBRUVBTmdJY0lBQWdFRFlDRkNBQVFaYVRnSUFBTmdJUUlBQkJCRFlDREVFQUlSQU02UUVMSUFBZ0VDQUNFTDJBZ0lBQUdpQVFJUUVDUUFKQUFrQUNRQUpBSUFBZ0VDQUNFTE9BZ0lBQURoWUNBUUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFEQkFzZ0FFRUJPZ0F1Q3lBQUlBQXZBVEJCd0FCeU93RXdJQkFoQVF0QkppRVFETkVCQ3lBQVFTTTJBaHdnQUNBUU5nSVVJQUJCcFphQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF6cEFRc2dBRUVBTmdJY0lBQWdFRFlDRkNBQVFkV0xnSUFBTmdJUUlBQkJFVFlDREVFQUlSQU02QUVMSUFBdEFDMUJBWEZGRFFGQnd3RWhFQXpPQVFzQ1FDQU5JQUpHRFFBRFFBSkFJQTB0QUFCQklFWU5BQ0FOSVFFTXhBRUxJQTFCQVdvaURTQUNSdzBBQzBFbElSQU01d0VMUVNVaEVBem1BUXNnQUNnQ0JDRUVJQUJCQURZQ0JDQUFJQVFnRFJDdmdJQ0FBQ0lFUlEydEFTQUFRU1kyQWh3Z0FDQUVOZ0lNSUFBZ0RVRUJhallDRkVFQUlSQU01UUVMSUJCQkZVWU5xd0VnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZjJOZ0lBQU5nSVFJQUJCSFRZQ0RFRUFJUkFNNUFFTElBQkJKellDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF6akFRc2dFQ0VCUVFFaEZBSkFBa0FDUUFKQUFrQUNRQUpBSUFBdEFDeEJmbW9PQndZRkJRTUJBZ0FGQ3lBQUlBQXZBVEJCQ0hJN0FUQU1Bd3RCQWlFVURBRUxRUVFoRkFzZ0FFRUJPZ0FzSUFBZ0FDOEJNQ0FVY2pzQk1Bc2dFQ0VCQzBFcklSQU15Z0VMSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUdya29DQUFEWUNFQ0FBUVFzMkFneEJBQ0VRRE9JQkN5QUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjRZK0FnQUEyQWhBZ0FFRUtOZ0lNUVFBaEVBemhBUXNnQUVFQU9nQXNJQkFoQVF5OUFRc2dFQ0VCUVFFaEZBSkFBa0FDUUFKQUFrQWdBQzBBTEVGN2FnNEVBd0VDQUFVTElBQWdBQzhCTUVFSWNqc0JNQXdEQzBFQ0lSUU1BUXRCQkNFVUN5QUFRUUU2QUN3Z0FDQUFMd0V3SUJSeU93RXdDeUFRSVFFTFFTa2hFQXpGQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWZDVWdJQUFOZ0lRSUFCQkF6WUNERUVBSVJBTTNRRUxBa0FnRGkwQUFFRU5SdzBBSUFBb0FnUWhBU0FBUVFBMkFnUUNRQ0FBSUFFZ0RoQ3hnSUNBQUNJQkRRQWdEa0VCYWlFQkRIVUxJQUJCTERZQ0hDQUFJQUUyQWd3Z0FDQU9RUUZxTmdJVVFRQWhFQXpkQVFzZ0FDMEFMVUVCY1VVTkFVSEVBU0VRRE1NQkN3SkFJQTRnQWtjTkFFRXRJUkFNM0FFTEFrQUNRQU5BQWtBZ0RpMEFBRUYyYWc0RUFnQUFBd0FMSUE1QkFXb2lEaUFDUncwQUMwRXRJUkFNM1FFTElBQW9BZ1FoQVNBQVFRQTJBZ1FDUUNBQUlBRWdEaEN4Z0lDQUFDSUJEUUFnRGlFQkRIUUxJQUJCTERZQ0hDQUFJQTQyQWhRZ0FDQUJOZ0lNUVFBaEVBemNBUXNnQUNnQ0JDRUJJQUJCQURZQ0JBSkFJQUFnQVNBT0VMR0FnSUFBSWdFTkFDQU9RUUZxSVFFTWN3c2dBRUVzTmdJY0lBQWdBVFlDRENBQUlBNUJBV28yQWhSQkFDRVFETnNCQ3lBQUtBSUVJUVFnQUVFQU5nSUVJQUFnQkNBT0VMR0FnSUFBSWdRTm9BRWdEaUVCRE00QkN5QVFRU3hIRFFFZ0FVRUJhaUVRUVFFaEFRSkFBa0FDUUFKQUFrQWdBQzBBTEVGN2FnNEVBd0VDQkFBTElCQWhBUXdFQzBFQ0lRRU1BUXRCQkNFQkN5QUFRUUU2QUN3Z0FDQUFMd0V3SUFGeU93RXdJQkFoQVF3QkN5QUFJQUF2QVRCQkNISTdBVEFnRUNFQkMwRTVJUkFNdndFTElBQkJBRG9BTENBQklRRUxRVFFoRUF5OUFRc2dBQ0FBTHdFd1FTQnlPd0V3SUFFaEFRd0NDeUFBS0FJRUlRUWdBRUVBTmdJRUFrQWdBQ0FFSUFFUXNZQ0FnQUFpQkEwQUlBRWhBUXpIQVFzZ0FFRTNOZ0ljSUFBZ0FUWUNGQ0FBSUFRMkFneEJBQ0VRRE5RQkN5QUFRUWc2QUN3Z0FTRUJDMEV3SVJBTXVRRUxBa0FnQUMwQUtFRUJSZzBBSUFFaEFRd0VDeUFBTFFBdFFRaHhSUTJUQVNBQklRRU1Bd3NnQUMwQU1FRWdjUTJVQVVIRkFTRVFETGNCQ3dKQUlBOGdBa1lOQUFKQUEwQUNRQ0FQTFFBQVFWQnFJZ0ZCL3dGeFFRcEpEUUFnRHlFQlFUVWhFQXk2QVFzZ0FDa0RJQ0lSUXBtejVzeVpzK2JNR1ZZTkFTQUFJQkZDQ240aUVUY0RJQ0FSSUFHdFF2OEJneUlTUW4rRlZnMEJJQUFnRVNBU2ZEY0RJQ0FQUVFGcUlnOGdBa2NOQUF0Qk9TRVFETkVCQ3lBQUtBSUVJUUlnQUVFQU5nSUVJQUFnQWlBUFFRRnFJZ1FRc1lDQWdBQWlBZzJWQVNBRUlRRU13d0VMUVRraEVBelBBUXNDUUNBQUx3RXdJZ0ZCQ0hGRkRRQWdBQzBBS0VFQlJ3MEFJQUF0QUMxQkNIRkZEWkFCQ3lBQUlBRkI5L3NEY1VHQUJISTdBVEFnRHlFQkMwRTNJUkFNdEFFTElBQWdBQzhCTUVFUWNqc0JNQXlyQVFzZ0VFRVZSZzJMQVNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCOEk2QWdBQTJBaEFnQUVFY05nSU1RUUFoRUF6TEFRc2dBRUhEQURZQ0hDQUFJQUUyQWd3Z0FDQU5RUUZxTmdJVVFRQWhFQXpLQVFzQ1FDQUJMUUFBUVRwSERRQWdBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUsrQWdJQUFJaEFOQUNBQlFRRnFJUUVNWXdzZ0FFSERBRFlDSENBQUlCQTJBZ3dnQUNBQlFRRnFOZ0lVUVFBaEVBektBUXNnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRYkdSZ0lBQU5nSVFJQUJCQ2pZQ0RFRUFJUkFNeVFFTElBQkJBRFlDSENBQUlBRTJBaFFnQUVHZ21ZQ0FBRFlDRUNBQVFSNDJBZ3hCQUNFUURNZ0JDeUFBUVFBMkFnQUxJQUJCZ0JJN0FTb2dBQ0FYUVFGcUlnRWdBaENvZ0lDQUFDSVFEUUVnQVNFQkMwSEhBQ0VRREt3QkN5QVFRUlZIRFlNQklBQkIwUUEyQWh3Z0FDQUJOZ0lVSUFCQjQ1ZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBekVBUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLZUFnSUFBSWhBTkFDQUJJUUVNWGdzZ0FFSFNBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF6REFRc2dBRUVBTmdJY0lBQWdGRFlDRkNBQVFjR29nSUFBTmdJUUlBQkJCellDRENBQVFRQTJBZ0JCQUNFUURNSUJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXA0Q0FnQUFpRUEwQUlBRWhBUXhkQ3lBQVFkTUFOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRRE1FQkMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWUNSZ0lBQU5nSVFJQUJCQ1RZQ0RBekFBUXNnRUVFVlJnMTlJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR1VqWUNBQURZQ0VDQUFRU0UyQWd4QkFDRVFETDhCQzBFQklSWkJBQ0VYUVFBaEZFRUJJUkFMSUFBZ0VEb0FLeUFCUVFGcUlRRUNRQUpBSUFBdEFDMUJFSEVOQUFKQUFrQUNRQ0FBTFFBcURnTUJBQUlFQ3lBV1JRMEREQUlMSUJRTkFRd0NDeUFYUlEwQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcllDQWdBQWlFQTBBSUFFaEFReGNDeUFBUWRnQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFETDRCQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVFyWUNBZ0FBaUJBMEFJQUVoQVF5dEFRc2dBRUhaQURZQ0hDQUFJQUUyQWhRZ0FDQUVOZ0lNUVFBaEVBeTlBUXNnQUNnQ0JDRUVJQUJCQURZQ0JBSkFJQUFnQkNBQkVLMkFnSUFBSWdRTkFDQUJJUUVNcXdFTElBQkIyZ0EyQWh3Z0FDQUJOZ0lVSUFBZ0JEWUNERUVBSVJBTXZBRUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDdGdJQ0FBQ0lFRFFBZ0FTRUJES2tCQ3lBQVFkd0FOZ0ljSUFBZ0FUWUNGQ0FBSUFRMkFneEJBQ0VRRExzQkN3SkFJQUV0QUFCQlVHb2lFRUgvQVhGQkNrOE5BQ0FBSUJBNkFDb2dBVUVCYWlFQlFjOEFJUkFNb2dFTElBQW9BZ1FoQkNBQVFRQTJBZ1FDUUNBQUlBUWdBUkN0Z0lDQUFDSUVEUUFnQVNFQkRLY0JDeUFBUWQ0QU5nSWNJQUFnQVRZQ0ZDQUFJQVEyQWd4QkFDRVFETG9CQ3lBQVFRQTJBZ0FnRjBFQmFpRUJBa0FnQUMwQUtVRWpUdzBBSUFFaEFReFpDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkIwNG1BZ0FBMkFoQWdBRUVJTmdJTVFRQWhFQXk1QVFzZ0FFRUFOZ0lBQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFaQ3pnSUFBTmdJUUlBQkJDRFlDREF5M0FRc2dBRUVBTmdJQUlCZEJBV29oQVFKQUlBQXRBQ2xCSVVjTkFDQUJJUUVNVmdzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVp1S2dJQUFOZ0lRSUFCQkNEWUNERUVBSVJBTXRnRUxJQUJCQURZQ0FDQVhRUUZxSVFFQ1FDQUFMUUFwSWhCQlhXcEJDMDhOQUNBQklRRU1WUXNDUUNBUVFRWkxEUUJCQVNBUWRFSEtBSEZGRFFBZ0FTRUJERlVMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjk0bUFnQUEyQWhBZ0FFRUlOZ0lNRExVQkN5QVFRUlZHRFhFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWJtTmdJQUFOZ0lRSUFCQkdqWUNERUVBSVJBTXRBRUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERlFMSUFCQjVRQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNc3dFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkNuZ0lDQUFDSVFEUUFnQVNFQkRFMExJQUJCMGdBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU1zZ0VMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ25nSUNBQUNJUURRQWdBU0VCREUwTElBQkIwd0EyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTXNRRUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERkVMSUFCQjVRQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNc0FFTElBQkJBRFlDSENBQUlBRTJBaFFnQUVIR2lvQ0FBRFlDRUNBQVFRYzJBZ3hCQUNFUURLOEJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXA0Q0FnQUFpRUEwQUlBRWhBUXhKQ3lBQVFkSUFOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRREs0QkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcDRDQWdBQWlFQTBBSUFFaEFReEpDeUFBUWRNQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFESzBCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4TkN5QUFRZVVBTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURLd0JDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkIzSWlBZ0FBMkFoQWdBRUVITmdJTVFRQWhFQXlyQVFzZ0VFRS9SdzBCSUFGQkFXb2hBUXRCQlNFUURKQUJDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWYyU2dJQUFOZ0lRSUFCQkJ6WUNEQXlvQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVFnc2dBRUhTQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeW5BUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLZUFnSUFBSWhBTkFDQUJJUUVNUWdzZ0FFSFRBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF5bUFRc2dBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUtlQWdJQUFJaEFOQUNBQklRRU1SZ3NnQUVIbEFEWUNIQ0FBSUFFMkFoUWdBQ0FRTmdJTVFRQWhFQXlsQVFzZ0FDZ0NCQ0VCSUFCQkFEWUNCQUpBSUFBZ0FTQVVFS2VBZ0lBQUlnRU5BQ0FVSVFFTVB3c2dBRUhTQURZQ0hDQUFJQlEyQWhRZ0FDQUJOZ0lNUVFBaEVBeWtBUXNnQUNnQ0JDRUJJQUJCQURZQ0JBSkFJQUFnQVNBVUVLZUFnSUFBSWdFTkFDQVVJUUVNUHdzZ0FFSFRBRFlDSENBQUlCUTJBaFFnQUNBQk5nSU1RUUFoRUF5akFRc2dBQ2dDQkNFQklBQkJBRFlDQkFKQUlBQWdBU0FVRUtlQWdJQUFJZ0VOQUNBVUlRRU1Rd3NnQUVIbEFEWUNIQ0FBSUJRMkFoUWdBQ0FCTmdJTVFRQWhFQXlpQVFzZ0FFRUFOZ0ljSUFBZ0ZEWUNGQ0FBUWNPUGdJQUFOZ0lRSUFCQkJ6WUNERUVBSVJBTW9RRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSERqNENBQURZQ0VDQUFRUWMyQWd4QkFDRVFES0FCQzBFQUlSQWdBRUVBTmdJY0lBQWdGRFlDRkNBQVFZeWNnSUFBTmdJUUlBQkJCellDREF5ZkFRc2dBRUVBTmdJY0lBQWdGRFlDRkNBQVFZeWNnSUFBTmdJUUlBQkJCellDREVFQUlSQU1uZ0VMSUFCQkFEWUNIQ0FBSUJRMkFoUWdBRUgra1lDQUFEWUNFQ0FBUVFjMkFneEJBQ0VRREowQkN5QUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQmpwdUFnQUEyQWhBZ0FFRUdOZ0lNUVFBaEVBeWNBUXNnRUVFVlJnMVhJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSE1qb0NBQURZQ0VDQUFRU0EyQWd4QkFDRVFESnNCQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRU1FoRUFzZ0FDQVFPZ0FwSUFBb0FnUWhFQ0FBUVFBMkFnUWdBQ0FRSUFFUXE0Q0FnQUFpRUExVUlBRWhBUXcrQ3lBQVFRQTJBZ0FMUVFBaEVDQUFRUUEyQWh3Z0FDQUVOZ0lVSUFCQjhadUFnQUEyQWhBZ0FFRUdOZ0lNREpjQkN5QUJRUlZHRFZBZ0FFRUFOZ0ljSUFBZ0JUWUNGQ0FBUWZDTWdJQUFOZ0lRSUFCQkd6WUNERUVBSVJBTWxnRUxJQUFvQWdRaEJTQUFRUUEyQWdRZ0FDQUZJQkFRcVlDQWdBQWlCUTBCSUJCQkFXb2hCUXRCclFFaEVBeDdDeUFBUWNFQk5nSWNJQUFnQlRZQ0RDQUFJQkJCQVdvMkFoUkJBQ0VRREpNQkN5QUFLQUlFSVFZZ0FFRUFOZ0lFSUFBZ0JpQVFFS21BZ0lBQUlnWU5BU0FRUVFGcUlRWUxRYTRCSVJBTWVBc2dBRUhDQVRZQ0hDQUFJQVkyQWd3Z0FDQVFRUUZxTmdJVVFRQWhFQXlRQVFzZ0FFRUFOZ0ljSUFBZ0J6WUNGQ0FBUVplTGdJQUFOZ0lRSUFCQkRUWUNERUVBSVJBTWp3RUxJQUJCQURZQ0hDQUFJQWcyQWhRZ0FFSGprSUNBQURZQ0VDQUFRUWsyQWd4QkFDRVFESTRCQ3lBQVFRQTJBaHdnQUNBSU5nSVVJQUJCbEkyQWdBQTJBaEFnQUVFaE5nSU1RUUFoRUF5TkFRdEJBU0VXUVFBaEYwRUFJUlJCQVNFUUN5QUFJQkE2QUNzZ0NVRUJhaUVJQWtBQ1FDQUFMUUF0UVJCeERRQUNRQUpBQWtBZ0FDMEFLZzREQVFBQ0JBc2dGa1VOQXd3Q0N5QVVEUUVNQWdzZ0YwVU5BUXNnQUNnQ0JDRVFJQUJCQURZQ0JDQUFJQkFnQ0JDdGdJQ0FBQ0lRUlEwOUlBQkJ5UUUyQWh3Z0FDQUlOZ0lVSUFBZ0VEWUNERUVBSVJBTWpBRUxJQUFvQWdRaEJDQUFRUUEyQWdRZ0FDQUVJQWdRcllDQWdBQWlCRVVOZGlBQVFjb0JOZ0ljSUFBZ0NEWUNGQ0FBSUFRMkFneEJBQ0VRRElzQkN5QUFLQUlFSVFRZ0FFRUFOZ0lFSUFBZ0JDQUpFSzJBZ0lBQUlnUkZEWFFnQUVITEFUWUNIQ0FBSUFrMkFoUWdBQ0FFTmdJTVFRQWhFQXlLQVFzZ0FDZ0NCQ0VFSUFCQkFEWUNCQ0FBSUFRZ0NoQ3RnSUNBQUNJRVJRMXlJQUJCelFFMkFod2dBQ0FLTmdJVUlBQWdCRFlDREVFQUlSQU1pUUVMQWtBZ0N5MEFBRUZRYWlJUVFmOEJjVUVLVHcwQUlBQWdFRG9BS2lBTFFRRnFJUXBCdGdFaEVBeHdDeUFBS0FJRUlRUWdBRUVBTmdJRUlBQWdCQ0FMRUsyQWdJQUFJZ1JGRFhBZ0FFSFBBVFlDSENBQUlBczJBaFFnQUNBRU5nSU1RUUFoRUF5SUFRc2dBRUVBTmdJY0lBQWdCRFlDRkNBQVFaQ3pnSUFBTmdJUUlBQkJDRFlDRENBQVFRQTJBZ0JCQUNFUURJY0JDeUFCUVJWR0RUOGdBRUVBTmdJY0lBQWdERFlDRkNBQVFjeU9nSUFBTmdJUUlBQkJJRFlDREVFQUlSQU1oZ0VMSUFCQmdRUTdBU2dnQUNnQ0JDRVFJQUJDQURjREFDQUFJQkFnREVFQmFpSU1FS3VBZ0lBQUloQkZEVGdnQUVIVEFUWUNIQ0FBSUF3MkFoUWdBQ0FRTmdJTVFRQWhFQXlGQVFzZ0FFRUFOZ0lBQzBFQUlSQWdBRUVBTmdJY0lBQWdCRFlDRkNBQVFkaWJnSUFBTmdJUUlBQkJDRFlDREF5REFRc2dBQ2dDQkNFUUlBQkNBRGNEQUNBQUlCQWdDMEVCYWlJTEVLdUFnSUFBSWhBTkFVSEdBU0VRREdrTElBQkJBam9BS0F4VkN5QUFRZFVCTmdJY0lBQWdDellDRkNBQUlCQTJBZ3hCQUNFUURJQUJDeUFRUVJWR0RUY2dBRUVBTmdJY0lBQWdCRFlDRkNBQVFhU01nSUFBTmdJUUlBQkJFRFlDREVFQUlSQU1md3NnQUMwQU5FRUJSdzAwSUFBZ0JDQUNFTHlBZ0lBQUloQkZEVFFnRUVFVlJ3MDFJQUJCM0FFMkFod2dBQ0FFTmdJVUlBQkIxWmFBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXgrQzBFQUlSQWdBRUVBTmdJY0lBQkJyNHVBZ0FBMkFoQWdBRUVDTmdJTUlBQWdGRUVCYWpZQ0ZBeDlDMEVBSVJBTVl3dEJBaUVRREdJTFFRMGhFQXhoQzBFUElSQU1ZQXRCSlNFUURGOExRUk1oRUF4ZUMwRVZJUkFNWFF0QkZpRVFERndMUVJjaEVBeGJDMEVZSVJBTVdndEJHU0VRREZrTFFSb2hFQXhZQzBFYklSQU1Wd3RCSENFUURGWUxRUjBoRUF4VkMwRWZJUkFNVkF0QklTRVFERk1MUVNNaEVBeFNDMEhHQUNFUURGRUxRUzRoRUF4UUMwRXZJUkFNVHd0Qk95RVFERTRMUVQwaEVBeE5DMEhJQUNFUURFd0xRY2tBSVJBTVN3dEJ5d0FoRUF4S0MwSE1BQ0VRREVrTFFjNEFJUkFNU0F0QjBRQWhFQXhIQzBIVkFDRVFERVlMUWRnQUlSQU1SUXRCMlFBaEVBeEVDMEhiQUNFUURFTUxRZVFBSVJBTVFndEI1UUFoRUF4QkMwSHhBQ0VRREVBTFFmUUFJUkFNUHd0QmpRRWhFQXcrQzBHWEFTRVFERDBMUWFrQklSQU1QQXRCckFFaEVBdzdDMEhBQVNFUUREb0xRYmtCSVJBTU9RdEJyd0VoRUF3NEMwR3hBU0VRRERjTFFiSUJJUkFNTmd0QnRBRWhFQXcxQzBHMUFTRVFERFFMUWJvQklSQU1Nd3RCdlFFaEVBd3lDMEcvQVNFUURERUxRY0VCSVJBTU1Bc2dBRUVBTmdJY0lBQWdCRFlDRkNBQVFlbUxnSUFBTmdJUUlBQkJIellDREVFQUlSQU1TQXNnQUVIYkFUWUNIQ0FBSUFRMkFoUWdBRUg2bG9DQUFEWUNFQ0FBUVJVMkFneEJBQ0VRREVjTElBQkIrQUEyQWh3Z0FDQU1OZ0lVSUFCQnlwaUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeEdDeUFBUWRFQU5nSWNJQUFnQlRZQ0ZDQUFRYkNYZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNUlFzZ0FFSDVBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF4RUN5QUFRZmdBTmdJY0lBQWdBVFlDRkNBQVFjcVlnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1Rd3NnQUVIa0FEWUNIQ0FBSUFFMkFoUWdBRUhqbDRDQUFEWUNFQ0FBUVJVMkFneEJBQ0VRREVJTElBQkIxd0EyQWh3Z0FDQUJOZ0lVSUFCQnlaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeEJDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkJ1WTJBZ0FBMkFoQWdBRUVhTmdJTVFRQWhFQXhBQ3lBQVFjSUFOZ0ljSUFBZ0FUWUNGQ0FBUWVPWWdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTVB3c2dBRUVBTmdJRUlBQWdEeUFQRUxHQWdJQUFJZ1JGRFFFZ0FFRTZOZ0ljSUFBZ0JEWUNEQ0FBSUE5QkFXbzJBaFJCQUNFUURENExJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDeGdJQ0FBQ0lFUlEwQUlBQkJPellDSENBQUlBUTJBZ3dnQUNBQlFRRnFOZ0lVUVFBaEVBdytDeUFCUVFGcUlRRU1MUXNnRDBFQmFpRUJEQzBMSUFCQkFEWUNIQ0FBSUE4MkFoUWdBRUhra29DQUFEWUNFQ0FBUVFRMkFneEJBQ0VRRERzTElBQkJOallDSENBQUlBUTJBaFFnQUNBQ05nSU1RUUFoRUF3NkN5QUFRUzQyQWh3Z0FDQU9OZ0lVSUFBZ0JEWUNERUVBSVJBTU9Rc2dBRUhRQURZQ0hDQUFJQUUyQWhRZ0FFR1JtSUNBQURZQ0VDQUFRUlUyQWd4QkFDRVFERGdMSUExQkFXb2hBUXdzQ3lBQVFSVTJBaHdnQUNBQk5nSVVJQUJCZ3BtQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3MkN5QUFRUnMyQWh3Z0FDQUJOZ0lVSUFCQmtaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBdzFDeUFBUVE4MkFod2dBQ0FCTmdJVUlBQkJrWmVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXcwQ3lBQVFRczJBaHdnQUNBQk5nSVVJQUJCa1plQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3ekN5QUFRUm8yQWh3Z0FDQUJOZ0lVSUFCQmdwbUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBd3lDeUFBUVFzMkFod2dBQ0FCTmdJVUlBQkJncG1BZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXd4Q3lBQVFRbzJBaHdnQUNBQk5nSVVJQUJCNUphQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3d0N5QUFRUjQyQWh3Z0FDQUJOZ0lVSUFCQitaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBd3ZDeUFBUVFBMkFod2dBQ0FRTmdJVUlBQkIybzJBZ0FBMkFoQWdBRUVVTmdJTVFRQWhFQXd1Q3lBQVFRUTJBaHdnQUNBQk5nSVVJQUJCc0ppQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3dEN5QUFRUUEyQWdBZ0MwRUJhaUVMQzBHNEFTRVFEQklMSUFCQkFEWUNBQ0FRUVFGcUlRRkI5UUFoRUF3UkN5QUJJUUVDUUNBQUxRQXBRUVZIRFFCQjR3QWhFQXdSQzBIaUFDRVFEQkFMUVFBaEVDQUFRUUEyQWh3Z0FFSGtrWUNBQURZQ0VDQUFRUWMyQWd3Z0FDQVVRUUZxTmdJVURDZ0xJQUJCQURZQ0FDQVhRUUZxSVFGQndBQWhFQXdPQzBFQklRRUxJQUFnQVRvQUxDQUFRUUEyQWdBZ0YwRUJhaUVCQzBFb0lSQU1Dd3NnQVNFQkMwRTRJUkFNQ1FzQ1FDQUJJZzhnQWtZTkFBTkFBa0FnRHkwQUFFR0F2b0NBQUdvdEFBQWlBVUVCUmcwQUlBRkJBa2NOQXlBUFFRRnFJUUVNQkFzZ0QwRUJhaUlQSUFKSERRQUxRVDRoRUF3aUMwRStJUkFNSVFzZ0FFRUFPZ0FzSUE4aEFRd0JDMEVMSVJBTUJndEJPaUVRREFVTElBRkJBV29oQVVFdElSQU1CQXNnQUNBQk9nQXNJQUJCQURZQ0FDQVdRUUZxSVFGQkRDRVFEQU1MSUFCQkFEWUNBQ0FYUVFGcUlRRkJDaUVRREFJTElBQkJBRFlDQUFzZ0FFRUFPZ0FzSUEwaEFVRUpJUkFNQUFzTFFRQWhFQ0FBUVFBMkFod2dBQ0FMTmdJVUlBQkJ6WkNBZ0FBMkFoQWdBRUVKTmdJTURCY0xRUUFoRUNBQVFRQTJBaHdnQUNBS05nSVVJQUJCNllxQWdBQTJBaEFnQUVFSk5nSU1EQllMUVFBaEVDQUFRUUEyQWh3Z0FDQUpOZ0lVSUFCQnQ1Q0FnQUEyQWhBZ0FFRUpOZ0lNREJVTFFRQWhFQ0FBUVFBMkFod2dBQ0FJTmdJVUlBQkJuSkdBZ0FBMkFoQWdBRUVKTmdJTURCUUxRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCelpDQWdBQTJBaEFnQUVFSk5nSU1EQk1MUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjZZcUFnQUEyQWhBZ0FFRUpOZ0lNREJJTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJ0NUNBZ0FBMkFoQWdBRUVKTmdJTURCRUxRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCbkpHQWdBQTJBaEFnQUVFSk5nSU1EQkFMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQmw1V0FnQUEyQWhBZ0FFRVBOZ0lNREE4TFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJsNVdBZ0FBMkFoQWdBRUVQTmdJTURBNExRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCd0pLQWdBQTJBaEFnQUVFTE5nSU1EQTBMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQmxZbUFnQUEyQWhBZ0FFRUxOZ0lNREF3TFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkI0WStBZ0FBMkFoQWdBRUVLTmdJTURBc0xRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCKzQrQWdBQTJBaEFnQUVFS05nSU1EQW9MUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjhabUFnQUEyQWhBZ0FFRUNOZ0lNREFrTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJ4SlNBZ0FBMkFoQWdBRUVDTmdJTURBZ0xRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCOHBXQWdBQTJBaEFnQUVFQ05nSU1EQWNMSUFCQkFqWUNIQ0FBSUFFMkFoUWdBRUdjbW9DQUFEWUNFQ0FBUVJZMkFneEJBQ0VRREFZTFFRRWhFQXdGQzBIVUFDRVFJQUVpQkNBQ1JnMEVJQU5CQ0dvZ0FDQUVJQUpCMk1LQWdBQkJDaERGZ0lDQUFDQURLQUlNSVFRZ0F5Z0NDQTREQVFRQ0FBc1F5b0NBZ0FBQUN5QUFRUUEyQWh3Z0FFRzFtb0NBQURZQ0VDQUFRUmMyQWd3Z0FDQUVRUUZxTmdJVVFRQWhFQXdDQ3lBQVFRQTJBaHdnQUNBRU5nSVVJQUJCeXBxQWdBQTJBaEFnQUVFSk5nSU1RUUFoRUF3QkN3SkFJQUVpQkNBQ1J3MEFRU0loRUF3QkN5QUFRWW1BZ0lBQU5nSUlJQUFnQkRZQ0JFRWhJUkFMSUFOQkVHb2tnSUNBZ0FBZ0VBdXZBUUVDZnlBQktBSUFJUVlDUUFKQUlBSWdBMFlOQUNBRUlBWnFJUVFnQmlBRGFpQUNheUVISUFJZ0JrRi9jeUFGYWlJR2FpRUZBMEFDUUNBQ0xRQUFJQVF0QUFCR0RRQkJBaUVFREFNTEFrQWdCZzBBUVFBaEJDQUZJUUlNQXdzZ0JrRi9haUVHSUFSQkFXb2hCQ0FDUVFGcUlnSWdBMGNOQUFzZ0J5RUdJQU1oQWdzZ0FFRUJOZ0lBSUFFZ0JqWUNBQ0FBSUFJMkFnUVBDeUFCUVFBMkFnQWdBQ0FFTmdJQUlBQWdBallDQkFzS0FDQUFFTWVBZ0lBQUMvSTJBUXQvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFDUUVFQUtBS2cwSUNBQUEwQVFRQVF5NENBZ0FCQmdOU0VnQUJySWdKQjJRQkpEUUJCQUNFREFrQkJBQ2dDNE5PQWdBQWlCQTBBUVFCQ2Z6Y0M3Tk9BZ0FCQkFFS0FnSVNBZ0lEQUFEY0M1Tk9BZ0FCQkFDQUJRUWhxUVhCeFFkaXExYW9GY3lJRU5nTGcwNENBQUVFQVFRQTJBdlRUZ0lBQVFRQkJBRFlDeE5PQWdBQUxRUUFnQWpZQ3pOT0FnQUJCQUVHQTFJU0FBRFlDeU5PQWdBQkJBRUdBMUlTQUFEWUNtTkNBZ0FCQkFDQUVOZ0tzMElDQUFFRUFRWDgyQXFqUWdJQUFBMEFnQTBIRTBJQ0FBR29nQTBHNDBJQ0FBR29pQkRZQ0FDQUVJQU5Cc05DQWdBQnFJZ1UyQWdBZ0EwRzgwSUNBQUdvZ0JUWUNBQ0FEUWN6UWdJQUFhaUFEUWNEUWdJQUFhaUlGTmdJQUlBVWdCRFlDQUNBRFFkVFFnSUFBYWlBRFFjalFnSUFBYWlJRU5nSUFJQVFnQlRZQ0FDQURRZERRZ0lBQWFpQUVOZ0lBSUFOQklHb2lBMEdBQWtjTkFBdEJnTlNFZ0FCQmVFR0ExSVNBQUd0QkQzRkJBRUdBMUlTQUFFRUlha0VQY1JzaUEyb2lCRUVFYWlBQ1FVaHFJZ1VnQTJzaUEwRUJjallDQUVFQVFRQW9BdkRUZ0lBQU5nS2swSUNBQUVFQUlBTTJBcFRRZ0lBQVFRQWdCRFlDb05DQWdBQkJnTlNFZ0FBZ0JXcEJPRFlDQkFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVIc0FVc05BQUpBUVFBb0FvalFnSUFBSWdaQkVDQUFRUk5xUVhCeElBQkJDMGtiSWdKQkEzWWlCSFlpQTBFRGNVVU5BQUpBQWtBZ0EwRUJjU0FFY2tFQmN5SUZRUU4wSWdSQnNOQ0FnQUJxSWdNZ0JFRzQwSUNBQUdvb0FnQWlCQ2dDQ0NJQ1J3MEFRUUFnQmtGK0lBVjNjVFlDaU5DQWdBQU1BUXNnQXlBQ05nSUlJQUlnQXpZQ0RBc2dCRUVJYWlFRElBUWdCVUVEZENJRlFRTnlOZ0lFSUFRZ0JXb2lCQ0FFS0FJRVFRRnlOZ0lFREF3TElBSkJBQ2dDa05DQWdBQWlCMDBOQVFKQUlBTkZEUUFDUUFKQUlBTWdCSFJCQWlBRWRDSURRUUFnQTJ0eWNTSURRUUFnQTJ0eFFYOXFJZ01nQTBFTWRrRVFjU0lEZGlJRVFRVjJRUWh4SWdVZ0EzSWdCQ0FGZGlJRFFRSjJRUVJ4SWdSeUlBTWdCSFlpQTBFQmRrRUNjU0lFY2lBRElBUjJJZ05CQVhaQkFYRWlCSElnQXlBRWRtb2lCRUVEZENJRFFiRFFnSUFBYWlJRklBTkJ1TkNBZ0FCcUtBSUFJZ01vQWdnaUFFY05BRUVBSUFaQmZpQUVkM0VpQmpZQ2lOQ0FnQUFNQVFzZ0JTQUFOZ0lJSUFBZ0JUWUNEQXNnQXlBQ1FRTnlOZ0lFSUFNZ0JFRURkQ0lFYWlBRUlBSnJJZ1UyQWdBZ0F5QUNhaUlBSUFWQkFYSTJBZ1FDUUNBSFJRMEFJQWRCZUhGQnNOQ0FnQUJxSVFKQkFDZ0NuTkNBZ0FBaEJBSkFBa0FnQmtFQklBZEJBM1owSWdoeERRQkJBQ0FHSUFoeU5nS0kwSUNBQUNBQ0lRZ01BUXNnQWlnQ0NDRUlDeUFJSUFRMkFnd2dBaUFFTmdJSUlBUWdBallDRENBRUlBZzJBZ2dMSUFOQkNHb2hBMEVBSUFBMkFwelFnSUFBUVFBZ0JUWUNrTkNBZ0FBTURBdEJBQ2dDak5DQWdBQWlDVVVOQVNBSlFRQWdDV3R4UVg5cUlnTWdBMEVNZGtFUWNTSURkaUlFUVFWMlFRaHhJZ1VnQTNJZ0JDQUZkaUlEUVFKMlFRUnhJZ1J5SUFNZ0JIWWlBMEVCZGtFQ2NTSUVjaUFESUFSMklnTkJBWFpCQVhFaUJISWdBeUFFZG1wQkFuUkJ1TktBZ0FCcUtBSUFJZ0FvQWdSQmVIRWdBbXNoQkNBQUlRVUNRQU5BQWtBZ0JTZ0NFQ0lERFFBZ0JVRVVhaWdDQUNJRFJRMENDeUFES0FJRVFYaHhJQUpySWdVZ0JDQUZJQVJKSWdVYklRUWdBeUFBSUFVYklRQWdBeUVGREFBTEN5QUFLQUlZSVFvQ1FDQUFLQUlNSWdnZ0FFWU5BQ0FBS0FJSUlnTkJBQ2dDbU5DQWdBQkpHaUFJSUFNMkFnZ2dBeUFJTmdJTURBc0xBa0FnQUVFVWFpSUZLQUlBSWdNTkFDQUFLQUlRSWdORkRRTWdBRUVRYWlFRkN3TkFJQVVoQ3lBRElnaEJGR29pQlNnQ0FDSUREUUFnQ0VFUWFpRUZJQWdvQWhBaUF3MEFDeUFMUVFBMkFnQU1DZ3RCZnlFQ0lBQkJ2MzlMRFFBZ0FFRVRhaUlEUVhCeElRSkJBQ2dDak5DQWdBQWlCMFVOQUVFQUlRc0NRQ0FDUVlBQ1NRMEFRUjhoQ3lBQ1FmLy8vd2RMRFFBZ0EwRUlkaUlESUFOQmdQNC9ha0VRZGtFSWNTSURkQ0lFSUFSQmdPQWZha0VRZGtFRWNTSUVkQ0lGSUFWQmdJQVBha0VRZGtFQ2NTSUZkRUVQZGlBRElBUnlJQVZ5YXlJRFFRRjBJQUlnQTBFVmFuWkJBWEZ5UVJ4cUlRc0xRUUFnQW1zaEJBSkFBa0FDUUFKQUlBdEJBblJCdU5LQWdBQnFLQUlBSWdVTkFFRUFJUU5CQUNFSURBRUxRUUFoQXlBQ1FRQkJHU0FMUVFGMmF5QUxRUjlHRzNRaEFFRUFJUWdEUUFKQUlBVW9BZ1JCZUhFZ0Ftc2lCaUFFVHcwQUlBWWhCQ0FGSVFnZ0JnMEFRUUFoQkNBRklRZ2dCU0VEREFNTElBTWdCVUVVYWlnQ0FDSUdJQVlnQlNBQVFSMTJRUVJ4YWtFUWFpZ0NBQ0lGUmhzZ0F5QUdHeUVESUFCQkFYUWhBQ0FGRFFBTEN3SkFJQU1nQ0hJTkFFRUFJUWhCQWlBTGRDSURRUUFnQTJ0eUlBZHhJZ05GRFFNZ0EwRUFJQU5yY1VGL2FpSURJQU5CREhaQkVIRWlBM1lpQlVFRmRrRUljU0lBSUFOeUlBVWdBSFlpQTBFQ2RrRUVjU0lGY2lBRElBVjJJZ05CQVhaQkFuRWlCWElnQXlBRmRpSURRUUYyUVFGeElnVnlJQU1nQlhacVFRSjBRYmpTZ0lBQWFpZ0NBQ0VEQ3lBRFJRMEJDd05BSUFNb0FnUkJlSEVnQW1zaUJpQUVTU0VBQWtBZ0F5Z0NFQ0lGRFFBZ0EwRVVhaWdDQUNFRkN5QUdJQVFnQUJzaEJDQURJQWdnQUJzaENDQUZJUU1nQlEwQUN3c2dDRVVOQUNBRVFRQW9BcERRZ0lBQUlBSnJUdzBBSUFnb0FoZ2hDd0pBSUFnb0Fnd2lBQ0FJUmcwQUlBZ29BZ2dpQTBFQUtBS1kwSUNBQUVrYUlBQWdBellDQ0NBRElBQTJBZ3dNQ1FzQ1FDQUlRUlJxSWdVb0FnQWlBdzBBSUFnb0FoQWlBMFVOQXlBSVFSQnFJUVVMQTBBZ0JTRUdJQU1pQUVFVWFpSUZLQUlBSWdNTkFDQUFRUkJxSVFVZ0FDZ0NFQ0lERFFBTElBWkJBRFlDQUF3SUN3SkFRUUFvQXBEUWdJQUFJZ01nQWtrTkFFRUFLQUtjMElDQUFDRUVBa0FDUUNBRElBSnJJZ1ZCRUVrTkFDQUVJQUpxSWdBZ0JVRUJjallDQkVFQUlBVTJBcERRZ0lBQVFRQWdBRFlDbk5DQWdBQWdCQ0FEYWlBRk5nSUFJQVFnQWtFRGNqWUNCQXdCQ3lBRUlBTkJBM0kyQWdRZ0JDQURhaUlESUFNb0FnUkJBWEkyQWdSQkFFRUFOZ0tjMElDQUFFRUFRUUEyQXBEUWdJQUFDeUFFUVFocUlRTU1DZ3NDUUVFQUtBS1UwSUNBQUNJQUlBSk5EUUJCQUNnQ29OQ0FnQUFpQXlBQ2FpSUVJQUFnQW1zaUJVRUJjallDQkVFQUlBVTJBcFRRZ0lBQVFRQWdCRFlDb05DQWdBQWdBeUFDUVFOeU5nSUVJQU5CQ0dvaEF3d0tDd0pBQWtCQkFDZ0M0Tk9BZ0FCRkRRQkJBQ2dDNk5PQWdBQWhCQXdCQzBFQVFuODNBdXpUZ0lBQVFRQkNnSUNFZ0lDQXdBQTNBdVRUZ0lBQVFRQWdBVUVNYWtGd2NVSFlxdFdxQlhNMkF1RFRnSUFBUVFCQkFEWUM5Tk9BZ0FCQkFFRUFOZ0xFMDRDQUFFR0FnQVFoQkF0QkFDRURBa0FnQkNBQ1FjY0FhaUlIYWlJR1FRQWdCR3NpQzNFaUNDQUNTdzBBUVFCQk1EWUMrTk9BZ0FBTUNnc0NRRUVBS0FMQTA0Q0FBQ0lEUlEwQUFrQkJBQ2dDdU5PQWdBQWlCQ0FJYWlJRklBUk5EUUFnQlNBRFRRMEJDMEVBSVFOQkFFRXdOZ0w0MDRDQUFBd0tDMEVBTFFERTA0Q0FBRUVFY1EwRUFrQUNRQUpBUVFBb0FxRFFnSUFBSWdSRkRRQkJ5Tk9BZ0FBaEF3TkFBa0FnQXlnQ0FDSUZJQVJMRFFBZ0JTQURLQUlFYWlBRVN3MERDeUFES0FJSUlnTU5BQXNMUVFBUXk0Q0FnQUFpQUVGL1JnMEZJQWdoQmdKQVFRQW9BdVRUZ0lBQUlnTkJmMm9pQkNBQWNVVU5BQ0FJSUFCcklBUWdBR3BCQUNBRGEzRnFJUVlMSUFZZ0FrME5CU0FHUWY3Ly8vOEhTdzBGQWtCQkFDZ0N3Tk9BZ0FBaUEwVU5BRUVBS0FLNDA0Q0FBQ0lFSUFacUlnVWdCRTBOQmlBRklBTkxEUVlMSUFZUXk0Q0FnQUFpQXlBQVJ3MEJEQWNMSUFZZ0FHc2dDM0VpQmtIKy8vLy9CMHNOQkNBR0VNdUFnSUFBSWdBZ0F5Z0NBQ0FES0FJRWFrWU5BeUFBSVFNTEFrQWdBMEYvUmcwQUlBSkJ5QUJxSUFaTkRRQUNRQ0FISUFaclFRQW9BdWpUZ0lBQUlnUnFRUUFnQkd0eElnUkIvdi8vL3dkTkRRQWdBeUVBREFjTEFrQWdCQkRMZ0lDQUFFRi9SZzBBSUFRZ0Jtb2hCaUFESVFBTUJ3dEJBQ0FHYXhETGdJQ0FBQm9NQkFzZ0F5RUFJQU5CZjBjTkJRd0RDMEVBSVFnTUJ3dEJBQ0VBREFVTElBQkJmMGNOQWd0QkFFRUFLQUxFMDRDQUFFRUVjallDeE5PQWdBQUxJQWhCL3YvLy93ZExEUUVnQ0JETGdJQ0FBQ0VBUVFBUXk0Q0FnQUFoQXlBQVFYOUdEUUVnQTBGL1JnMEJJQUFnQTA4TkFTQURJQUJySWdZZ0FrRTRhazBOQVF0QkFFRUFLQUs0MDRDQUFDQUdhaUlETmdLNDA0Q0FBQUpBSUFOQkFDZ0N2Tk9BZ0FCTkRRQkJBQ0FETmdLODA0Q0FBQXNDUUFKQUFrQUNRRUVBS0FLZzBJQ0FBQ0lFUlEwQVFjalRnSUFBSVFNRFFDQUFJQU1vQWdBaUJTQURLQUlFSWdocVJnMENJQU1vQWdnaUF3MEFEQU1MQ3dKQUFrQkJBQ2dDbU5DQWdBQWlBMFVOQUNBQUlBTlBEUUVMUVFBZ0FEWUNtTkNBZ0FBTFFRQWhBMEVBSUFZMkFzelRnSUFBUVFBZ0FEWUN5Tk9BZ0FCQkFFRi9OZ0tvMElDQUFFRUFRUUFvQXVEVGdJQUFOZ0tzMElDQUFFRUFRUUEyQXRUVGdJQUFBMEFnQTBIRTBJQ0FBR29nQTBHNDBJQ0FBR29pQkRZQ0FDQUVJQU5Cc05DQWdBQnFJZ1UyQWdBZ0EwRzgwSUNBQUdvZ0JUWUNBQ0FEUWN6UWdJQUFhaUFEUWNEUWdJQUFhaUlGTmdJQUlBVWdCRFlDQUNBRFFkVFFnSUFBYWlBRFFjalFnSUFBYWlJRU5nSUFJQVFnQlRZQ0FDQURRZERRZ0lBQWFpQUVOZ0lBSUFOQklHb2lBMEdBQWtjTkFBc2dBRUY0SUFCclFROXhRUUFnQUVFSWFrRVBjUnNpQTJvaUJDQUdRVWhxSWdVZ0Eyc2lBMEVCY2pZQ0JFRUFRUUFvQXZEVGdJQUFOZ0trMElDQUFFRUFJQU0yQXBUUWdJQUFRUUFnQkRZQ29OQ0FnQUFnQUNBRmFrRTROZ0lFREFJTElBTXRBQXhCQ0hFTkFDQUVJQVZKRFFBZ0JDQUFUdzBBSUFSQmVDQUVhMEVQY1VFQUlBUkJDR3BCRDNFYklnVnFJZ0JCQUNnQ2xOQ0FnQUFnQm1vaUN5QUZheUlGUVFGeU5nSUVJQU1nQ0NBR2FqWUNCRUVBUVFBb0F2RFRnSUFBTmdLazBJQ0FBRUVBSUFVMkFwVFFnSUFBUVFBZ0FEWUNvTkNBZ0FBZ0JDQUxha0U0TmdJRURBRUxBa0FnQUVFQUtBS1kwSUNBQUNJSVR3MEFRUUFnQURZQ21OQ0FnQUFnQUNFSUN5QUFJQVpxSVFWQnlOT0FnQUFoQXdKQUFrQUNRQUpBQWtBQ1FBSkFBMEFnQXlnQ0FDQUZSZzBCSUFNb0FnZ2lBdzBBREFJTEN5QURMUUFNUVFoeFJRMEJDMEhJMDRDQUFDRURBMEFDUUNBREtBSUFJZ1VnQkVzTkFDQUZJQU1vQWdScUlnVWdCRXNOQXdzZ0F5Z0NDQ0VEREFBTEN5QURJQUEyQWdBZ0F5QURLQUlFSUFacU5nSUVJQUJCZUNBQWEwRVBjVUVBSUFCQkNHcEJEM0ViYWlJTElBSkJBM0kyQWdRZ0JVRjRJQVZyUVE5eFFRQWdCVUVJYWtFUGNSdHFJZ1lnQ3lBQ2FpSUNheUVEQWtBZ0JpQUVSdzBBUVFBZ0FqWUNvTkNBZ0FCQkFFRUFLQUtVMElDQUFDQURhaUlETmdLVTBJQ0FBQ0FDSUFOQkFYSTJBZ1FNQXdzQ1FDQUdRUUFvQXB6UWdJQUFSdzBBUVFBZ0FqWUNuTkNBZ0FCQkFFRUFLQUtRMElDQUFDQURhaUlETmdLUTBJQ0FBQ0FDSUFOQkFYSTJBZ1FnQWlBRGFpQUROZ0lBREFNTEFrQWdCaWdDQkNJRVFRTnhRUUZIRFFBZ0JFRjRjU0VIQWtBQ1FDQUVRZjhCU3cwQUlBWW9BZ2dpQlNBRVFRTjJJZ2hCQTNSQnNOQ0FnQUJxSWdCR0dnSkFJQVlvQWd3aUJDQUZSdzBBUVFCQkFDZ0NpTkNBZ0FCQmZpQUlkM0UyQW9qUWdJQUFEQUlMSUFRZ0FFWWFJQVFnQlRZQ0NDQUZJQVEyQWd3TUFRc2dCaWdDR0NFSkFrQUNRQ0FHS0FJTUlnQWdCa1lOQUNBR0tBSUlJZ1FnQ0VrYUlBQWdCRFlDQ0NBRUlBQTJBZ3dNQVFzQ1FDQUdRUlJxSWdRb0FnQWlCUTBBSUFaQkVHb2lCQ2dDQUNJRkRRQkJBQ0VBREFFTEEwQWdCQ0VJSUFVaUFFRVVhaUlFS0FJQUlnVU5BQ0FBUVJCcUlRUWdBQ2dDRUNJRkRRQUxJQWhCQURZQ0FBc2dDVVVOQUFKQUFrQWdCaUFHS0FJY0lnVkJBblJCdU5LQWdBQnFJZ1FvQWdCSERRQWdCQ0FBTmdJQUlBQU5BVUVBUVFBb0FvelFnSUFBUVg0Z0JYZHhOZ0tNMElDQUFBd0NDeUFKUVJCQkZDQUpLQUlRSUFaR0cyb2dBRFlDQUNBQVJRMEJDeUFBSUFrMkFoZ0NRQ0FHS0FJUUlnUkZEUUFnQUNBRU5nSVFJQVFnQURZQ0dBc2dCaWdDRkNJRVJRMEFJQUJCRkdvZ0JEWUNBQ0FFSUFBMkFoZ0xJQWNnQTJvaEF5QUdJQWRxSWdZb0FnUWhCQXNnQmlBRVFYNXhOZ0lFSUFJZ0Eyb2dBellDQUNBQ0lBTkJBWEkyQWdRQ1FDQURRZjhCU3cwQUlBTkJlSEZCc05DQWdBQnFJUVFDUUFKQVFRQW9Bb2pRZ0lBQUlnVkJBU0FEUVFOMmRDSURjUTBBUVFBZ0JTQURjallDaU5DQWdBQWdCQ0VEREFFTElBUW9BZ2doQXdzZ0F5QUNOZ0lNSUFRZ0FqWUNDQ0FDSUFRMkFnd2dBaUFETmdJSURBTUxRUjhoQkFKQUlBTkIvLy8vQjBzTkFDQURRUWgySWdRZ0JFR0EvajlxUVJCMlFRaHhJZ1IwSWdVZ0JVR0E0QjlxUVJCMlFRUnhJZ1YwSWdBZ0FFR0FnQTlxUVJCMlFRSnhJZ0IwUVE5MklBUWdCWElnQUhKcklnUkJBWFFnQXlBRVFSVnFka0VCY1hKQkhHb2hCQXNnQWlBRU5nSWNJQUpDQURjQ0VDQUVRUUowUWJqU2dJQUFhaUVGQWtCQkFDZ0NqTkNBZ0FBaUFFRUJJQVIwSWdoeERRQWdCU0FDTmdJQVFRQWdBQ0FJY2pZQ2pOQ0FnQUFnQWlBRk5nSVlJQUlnQWpZQ0NDQUNJQUkyQWd3TUF3c2dBMEVBUVJrZ0JFRUJkbXNnQkVFZlJodDBJUVFnQlNnQ0FDRUFBMEFnQUNJRktBSUVRWGh4SUFOR0RRSWdCRUVkZGlFQUlBUkJBWFFoQkNBRklBQkJCSEZxUVJCcUlnZ29BZ0FpQUEwQUN5QUlJQUkyQWdBZ0FpQUZOZ0lZSUFJZ0FqWUNEQ0FDSUFJMkFnZ01BZ3NnQUVGNElBQnJRUTl4UVFBZ0FFRUlha0VQY1JzaUEyb2lDeUFHUVVocUlnZ2dBMnNpQTBFQmNqWUNCQ0FBSUFocVFUZzJBZ1FnQkNBRlFUY2dCV3RCRDNGQkFDQUZRVWxxUVE5eEcycEJRV29pQ0NBSUlBUkJFR3BKR3lJSVFTTTJBZ1JCQUVFQUtBTHcwNENBQURZQ3BOQ0FnQUJCQUNBRE5nS1UwSUNBQUVFQUlBczJBcURRZ0lBQUlBaEJFR3BCQUNrQzBOT0FnQUEzQWdBZ0NFRUFLUUxJMDRDQUFEY0NDRUVBSUFoQkNHbzJBdERUZ0lBQVFRQWdCallDek5PQWdBQkJBQ0FBTmdMSTA0Q0FBRUVBUVFBMkF0VFRnSUFBSUFoQkpHb2hBd05BSUFOQkJ6WUNBQ0FEUVFScUlnTWdCVWtOQUFzZ0NDQUVSZzBESUFnZ0NDZ0NCRUYrY1RZQ0JDQUlJQWdnQkdzaUFEWUNBQ0FFSUFCQkFYSTJBZ1FDUUNBQVFmOEJTdzBBSUFCQmVIRkJzTkNBZ0FCcUlRTUNRQUpBUVFBb0FvalFnSUFBSWdWQkFTQUFRUU4yZENJQWNRMEFRUUFnQlNBQWNqWUNpTkNBZ0FBZ0F5RUZEQUVMSUFNb0FnZ2hCUXNnQlNBRU5nSU1JQU1nQkRZQ0NDQUVJQU0yQWd3Z0JDQUZOZ0lJREFRTFFSOGhBd0pBSUFCQi8vLy9CMHNOQUNBQVFRaDJJZ01nQTBHQS9qOXFRUkIyUVFoeElnTjBJZ1VnQlVHQTRCOXFRUkIyUVFSeElnVjBJZ2dnQ0VHQWdBOXFRUkIyUVFKeElnaDBRUTkySUFNZ0JYSWdDSEpySWdOQkFYUWdBQ0FEUVJWcWRrRUJjWEpCSEdvaEF3c2dCQ0FETmdJY0lBUkNBRGNDRUNBRFFRSjBRYmpTZ0lBQWFpRUZBa0JCQUNnQ2pOQ0FnQUFpQ0VFQklBTjBJZ1p4RFFBZ0JTQUVOZ0lBUVFBZ0NDQUdjallDak5DQWdBQWdCQ0FGTmdJWUlBUWdCRFlDQ0NBRUlBUTJBZ3dNQkFzZ0FFRUFRUmtnQTBFQmRtc2dBMEVmUmh0MElRTWdCU2dDQUNFSUEwQWdDQ0lGS0FJRVFYaHhJQUJHRFFNZ0EwRWRkaUVJSUFOQkFYUWhBeUFGSUFoQkJIRnFRUkJxSWdZb0FnQWlDQTBBQ3lBR0lBUTJBZ0FnQkNBRk5nSVlJQVFnQkRZQ0RDQUVJQVEyQWdnTUF3c2dCU2dDQ0NJRElBSTJBZ3dnQlNBQ05nSUlJQUpCQURZQ0dDQUNJQVUyQWd3Z0FpQUROZ0lJQ3lBTFFRaHFJUU1NQlFzZ0JTZ0NDQ0lESUFRMkFnd2dCU0FFTmdJSUlBUkJBRFlDR0NBRUlBVTJBZ3dnQkNBRE5nSUlDMEVBS0FLVTBJQ0FBQ0lESUFKTkRRQkJBQ2dDb05DQWdBQWlCQ0FDYWlJRklBTWdBbXNpQTBFQmNqWUNCRUVBSUFNMkFwVFFnSUFBUVFBZ0JUWUNvTkNBZ0FBZ0JDQUNRUU55TmdJRUlBUkJDR29oQXd3REMwRUFJUU5CQUVFd05nTDQwNENBQUF3Q0N3SkFJQXRGRFFBQ1FBSkFJQWdnQ0NnQ0hDSUZRUUowUWJqU2dJQUFhaUlES0FJQVJ3MEFJQU1nQURZQ0FDQUFEUUZCQUNBSFFYNGdCWGR4SWdjMkFvelFnSUFBREFJTElBdEJFRUVVSUFzb0FoQWdDRVliYWlBQU5nSUFJQUJGRFFFTElBQWdDellDR0FKQUlBZ29BaEFpQTBVTkFDQUFJQU0yQWhBZ0F5QUFOZ0lZQ3lBSVFSUnFLQUlBSWdORkRRQWdBRUVVYWlBRE5nSUFJQU1nQURZQ0dBc0NRQUpBSUFSQkQwc05BQ0FJSUFRZ0Ftb2lBMEVEY2pZQ0JDQUlJQU5xSWdNZ0F5Z0NCRUVCY2pZQ0JBd0JDeUFJSUFKcUlnQWdCRUVCY2pZQ0JDQUlJQUpCQTNJMkFnUWdBQ0FFYWlBRU5nSUFBa0FnQkVIL0FVc05BQ0FFUVhoeFFiRFFnSUFBYWlFREFrQUNRRUVBS0FLSTBJQ0FBQ0lGUVFFZ0JFRURkblFpQkhFTkFFRUFJQVVnQkhJMkFvalFnSUFBSUFNaEJBd0JDeUFES0FJSUlRUUxJQVFnQURZQ0RDQURJQUEyQWdnZ0FDQUROZ0lNSUFBZ0JEWUNDQXdCQzBFZklRTUNRQ0FFUWYvLy93ZExEUUFnQkVFSWRpSURJQU5CZ1A0L2FrRVFka0VJY1NJRGRDSUZJQVZCZ09BZmFrRVFka0VFY1NJRmRDSUNJQUpCZ0lBUGFrRVFka0VDY1NJQ2RFRVBkaUFESUFWeUlBSnlheUlEUVFGMElBUWdBMEVWYW5aQkFYRnlRUnhxSVFNTElBQWdBellDSENBQVFnQTNBaEFnQTBFQ2RFRzQwb0NBQUdvaEJRSkFJQWRCQVNBRGRDSUNjUTBBSUFVZ0FEWUNBRUVBSUFjZ0FuSTJBb3pRZ0lBQUlBQWdCVFlDR0NBQUlBQTJBZ2dnQUNBQU5nSU1EQUVMSUFSQkFFRVpJQU5CQVhacklBTkJIMFliZENFRElBVW9BZ0FoQWdKQUEwQWdBaUlGS0FJRVFYaHhJQVJHRFFFZ0EwRWRkaUVDSUFOQkFYUWhBeUFGSUFKQkJIRnFRUkJxSWdZb0FnQWlBZzBBQ3lBR0lBQTJBZ0FnQUNBRk5nSVlJQUFnQURZQ0RDQUFJQUEyQWdnTUFRc2dCU2dDQ0NJRElBQTJBZ3dnQlNBQU5nSUlJQUJCQURZQ0dDQUFJQVUyQWd3Z0FDQUROZ0lJQ3lBSVFRaHFJUU1NQVFzQ1FDQUtSUTBBQWtBQ1FDQUFJQUFvQWh3aUJVRUNkRUc0MG9DQUFHb2lBeWdDQUVjTkFDQURJQWcyQWdBZ0NBMEJRUUFnQ1VGK0lBVjNjVFlDak5DQWdBQU1BZ3NnQ2tFUVFSUWdDaWdDRUNBQVJodHFJQWcyQWdBZ0NFVU5BUXNnQ0NBS05nSVlBa0FnQUNnQ0VDSURSUTBBSUFnZ0F6WUNFQ0FESUFnMkFoZ0xJQUJCRkdvb0FnQWlBMFVOQUNBSVFSUnFJQU0yQWdBZ0F5QUlOZ0lZQ3dKQUFrQWdCRUVQU3cwQUlBQWdCQ0FDYWlJRFFRTnlOZ0lFSUFBZ0Eyb2lBeUFES0FJRVFRRnlOZ0lFREFFTElBQWdBbW9pQlNBRVFRRnlOZ0lFSUFBZ0FrRURjallDQkNBRklBUnFJQVEyQWdBQ1FDQUhSUTBBSUFkQmVIRkJzTkNBZ0FCcUlRSkJBQ2dDbk5DQWdBQWhBd0pBQWtCQkFTQUhRUU4yZENJSUlBWnhEUUJCQUNBSUlBWnlOZ0tJMElDQUFDQUNJUWdNQVFzZ0FpZ0NDQ0VJQ3lBSUlBTTJBZ3dnQWlBRE5nSUlJQU1nQWpZQ0RDQURJQWcyQWdnTFFRQWdCVFlDbk5DQWdBQkJBQ0FFTmdLUTBJQ0FBQXNnQUVFSWFpRURDeUFCUVJCcUpJQ0FnSUFBSUFNTENnQWdBQkRKZ0lDQUFBdmlEUUVIZndKQUlBQkZEUUFnQUVGNGFpSUJJQUJCZkdvb0FnQWlBa0Y0Y1NJQWFpRURBa0FnQWtFQmNRMEFJQUpCQTNGRkRRRWdBU0FCS0FJQUlnSnJJZ0ZCQUNnQ21OQ0FnQUFpQkVrTkFTQUNJQUJxSVFBQ1FDQUJRUUFvQXB6UWdJQUFSZzBBQWtBZ0FrSC9BVXNOQUNBQktBSUlJZ1FnQWtFRGRpSUZRUU4wUWJEUWdJQUFhaUlHUmhvQ1FDQUJLQUlNSWdJZ0JFY05BRUVBUVFBb0FvalFnSUFBUVg0Z0JYZHhOZ0tJMElDQUFBd0RDeUFDSUFaR0dpQUNJQVEyQWdnZ0JDQUNOZ0lNREFJTElBRW9BaGdoQndKQUFrQWdBU2dDRENJR0lBRkdEUUFnQVNnQ0NDSUNJQVJKR2lBR0lBSTJBZ2dnQWlBR05nSU1EQUVMQWtBZ0FVRVVhaUlDS0FJQUlnUU5BQ0FCUVJCcUlnSW9BZ0FpQkEwQVFRQWhCZ3dCQ3dOQUlBSWhCU0FFSWdaQkZHb2lBaWdDQUNJRURRQWdCa0VRYWlFQ0lBWW9BaEFpQkEwQUN5QUZRUUEyQWdBTElBZEZEUUVDUUFKQUlBRWdBU2dDSENJRVFRSjBRYmpTZ0lBQWFpSUNLQUlBUncwQUlBSWdCallDQUNBR0RRRkJBRUVBS0FLTTBJQ0FBRUYrSUFSM2NUWUNqTkNBZ0FBTUF3c2dCMEVRUVJRZ0J5Z0NFQ0FCUmh0cUlBWTJBZ0FnQmtVTkFnc2dCaUFITmdJWUFrQWdBU2dDRUNJQ1JRMEFJQVlnQWpZQ0VDQUNJQVkyQWhnTElBRW9BaFFpQWtVTkFTQUdRUlJxSUFJMkFnQWdBaUFHTmdJWURBRUxJQU1vQWdRaUFrRURjVUVEUncwQUlBTWdBa0YrY1RZQ0JFRUFJQUEyQXBEUWdJQUFJQUVnQUdvZ0FEWUNBQ0FCSUFCQkFYSTJBZ1FQQ3lBQklBTlBEUUFnQXlnQ0JDSUNRUUZ4UlEwQUFrQUNRQ0FDUVFKeERRQUNRQ0FEUVFBb0FxRFFnSUFBUncwQVFRQWdBVFlDb05DQWdBQkJBRUVBS0FLVTBJQ0FBQ0FBYWlJQU5nS1UwSUNBQUNBQklBQkJBWEkyQWdRZ0FVRUFLQUtjMElDQUFFY05BMEVBUVFBMkFwRFFnSUFBUVFCQkFEWUNuTkNBZ0FBUEN3SkFJQU5CQUNnQ25OQ0FnQUJIRFFCQkFDQUJOZ0tjMElDQUFFRUFRUUFvQXBEUWdJQUFJQUJxSWdBMkFwRFFnSUFBSUFFZ0FFRUJjallDQkNBQklBQnFJQUEyQWdBUEN5QUNRWGh4SUFCcUlRQUNRQUpBSUFKQi93RkxEUUFnQXlnQ0NDSUVJQUpCQTNZaUJVRURkRUd3MElDQUFHb2lCa1lhQWtBZ0F5Z0NEQ0lDSUFSSERRQkJBRUVBS0FLSTBJQ0FBRUYrSUFWM2NUWUNpTkNBZ0FBTUFnc2dBaUFHUmhvZ0FpQUVOZ0lJSUFRZ0FqWUNEQXdCQ3lBREtBSVlJUWNDUUFKQUlBTW9BZ3dpQmlBRFJnMEFJQU1vQWdnaUFrRUFLQUtZMElDQUFFa2FJQVlnQWpZQ0NDQUNJQVkyQWd3TUFRc0NRQ0FEUVJScUlnSW9BZ0FpQkEwQUlBTkJFR29pQWlnQ0FDSUVEUUJCQUNFR0RBRUxBMEFnQWlFRklBUWlCa0VVYWlJQ0tBSUFJZ1FOQUNBR1FSQnFJUUlnQmlnQ0VDSUVEUUFMSUFWQkFEWUNBQXNnQjBVTkFBSkFBa0FnQXlBREtBSWNJZ1JCQW5SQnVOS0FnQUJxSWdJb0FnQkhEUUFnQWlBR05nSUFJQVlOQVVFQVFRQW9Bb3pRZ0lBQVFYNGdCSGR4TmdLTTBJQ0FBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBTkdHMm9nQmpZQ0FDQUdSUTBCQ3lBR0lBYzJBaGdDUUNBREtBSVFJZ0pGRFFBZ0JpQUNOZ0lRSUFJZ0JqWUNHQXNnQXlnQ0ZDSUNSUTBBSUFaQkZHb2dBallDQUNBQ0lBWTJBaGdMSUFFZ0FHb2dBRFlDQUNBQklBQkJBWEkyQWdRZ0FVRUFLQUtjMElDQUFFY05BVUVBSUFBMkFwRFFnSUFBRHdzZ0F5QUNRWDV4TmdJRUlBRWdBR29nQURZQ0FDQUJJQUJCQVhJMkFnUUxBa0FnQUVIL0FVc05BQ0FBUVhoeFFiRFFnSUFBYWlFQ0FrQUNRRUVBS0FLSTBJQ0FBQ0lFUVFFZ0FFRURkblFpQUhFTkFFRUFJQVFnQUhJMkFvalFnSUFBSUFJaEFBd0JDeUFDS0FJSUlRQUxJQUFnQVRZQ0RDQUNJQUUyQWdnZ0FTQUNOZ0lNSUFFZ0FEWUNDQThMUVI4aEFnSkFJQUJCLy8vL0Iwc05BQ0FBUVFoMklnSWdBa0dBL2o5cVFSQjJRUWh4SWdKMElnUWdCRUdBNEI5cVFSQjJRUVJ4SWdSMElnWWdCa0dBZ0E5cVFSQjJRUUp4SWdaMFFROTJJQUlnQkhJZ0JuSnJJZ0pCQVhRZ0FDQUNRUlZxZGtFQmNYSkJIR29oQWdzZ0FTQUNOZ0ljSUFGQ0FEY0NFQ0FDUVFKMFFialNnSUFBYWlFRUFrQUNRRUVBS0FLTTBJQ0FBQ0lHUVFFZ0FuUWlBM0VOQUNBRUlBRTJBZ0JCQUNBR0lBTnlOZ0tNMElDQUFDQUJJQVEyQWhnZ0FTQUJOZ0lJSUFFZ0FUWUNEQXdCQ3lBQVFRQkJHU0FDUVFGMmF5QUNRUjlHRzNRaEFpQUVLQUlBSVFZQ1FBTkFJQVlpQkNnQ0JFRjRjU0FBUmcwQklBSkJIWFloQmlBQ1FRRjBJUUlnQkNBR1FRUnhha0VRYWlJREtBSUFJZ1lOQUFzZ0F5QUJOZ0lBSUFFZ0JEWUNHQ0FCSUFFMkFnd2dBU0FCTmdJSURBRUxJQVFvQWdnaUFDQUJOZ0lNSUFRZ0FUWUNDQ0FCUVFBMkFoZ2dBU0FFTmdJTUlBRWdBRFlDQ0F0QkFFRUFLQUtvMElDQUFFRi9haUlCUVg4Z0FSczJBcWpRZ0lBQUN3c0VBQUFBQzA0QUFrQWdBQTBBUHdCQkVIUVBDd0pBSUFCQi8vOERjUTBBSUFCQmYwd05BQUpBSUFCQkVIWkFBQ0lBUVg5SERRQkJBRUV3TmdMNDA0Q0FBRUYvRHdzZ0FFRVFkQThMRU1xQWdJQUFBQXZ5QWdJRGZ3RitBa0FnQWtVTkFDQUFJQUU2QUFBZ0FpQUFhaUlEUVg5cUlBRTZBQUFnQWtFRFNRMEFJQUFnQVRvQUFpQUFJQUU2QUFFZ0EwRjlhaUFCT2dBQUlBTkJmbW9nQVRvQUFDQUNRUWRKRFFBZ0FDQUJPZ0FESUFOQmZHb2dBVG9BQUNBQ1FRbEpEUUFnQUVFQUlBQnJRUU54SWdScUlnTWdBVUgvQVhGQmdZS0VDR3dpQVRZQ0FDQURJQUlnQkd0QmZIRWlCR29pQWtGOGFpQUJOZ0lBSUFSQkNVa05BQ0FESUFFMkFnZ2dBeUFCTmdJRUlBSkJlR29nQVRZQ0FDQUNRWFJxSUFFMkFnQWdCRUVaU1EwQUlBTWdBVFlDR0NBRElBRTJBaFFnQXlBQk5nSVFJQU1nQVRZQ0RDQUNRWEJxSUFFMkFnQWdBa0ZzYWlBQk5nSUFJQUpCYUdvZ0FUWUNBQ0FDUVdScUlBRTJBZ0FnQkNBRFFRUnhRUmh5SWdWcklnSkJJRWtOQUNBQnJVS0JnSUNBRUg0aEJpQURJQVZxSVFFRFFDQUJJQVkzQXhnZ0FTQUdOd01RSUFFZ0JqY0RDQ0FCSUFZM0F3QWdBVUVnYWlFQklBSkJZR29pQWtFZlN3MEFDd3NnQUFzTGprZ0JBRUdBQ0F1R1NBRUFBQUFDQUFBQUF3QUFBQUFBQUFBQUFBQUFCQUFBQUFVQUFBQUFBQUFBQUFBQUFBWUFBQUFIQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTVzUyWVd4cFpDQmphR0Z5SUdsdUlIVnliQ0J4ZFdWeWVRQlRjR0Z1SUdOaGJHeGlZV05ySUdWeWNtOXlJR2x1SUc5dVgySnZaSGtBUTI5dWRHVnVkQzFNWlc1bmRHZ2diM1psY21ac2IzY0FRMmgxYm1zZ2MybDZaU0J2ZG1WeVpteHZkd0JTWlhOd2IyNXpaU0J2ZG1WeVpteHZkd0JKYm5aaGJHbGtJRzFsZEdodlpDQm1iM0lnU0ZSVVVDOTRMbmdnY21WeGRXVnpkQUJKYm5aaGJHbGtJRzFsZEdodlpDQm1iM0lnVWxSVFVDOTRMbmdnY21WeGRXVnpkQUJGZUhCbFkzUmxaQ0JUVDFWU1EwVWdiV1YwYUc5a0lHWnZjaUJKUTBVdmVDNTRJSEpsY1hWbGMzUUFTVzUyWVd4cFpDQmphR0Z5SUdsdUlIVnliQ0JtY21GbmJXVnVkQ0J6ZEdGeWRBQkZlSEJsWTNSbFpDQmtiM1FBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDl6ZEdGMGRYTUFTVzUyWVd4cFpDQnlaWE53YjI1elpTQnpkR0YwZFhNQVNXNTJZV3hwWkNCamFHRnlZV04wWlhJZ2FXNGdZMmgxYm1zZ1pYaDBaVzV6YVc5dWN3QlZjMlZ5SUdOaGJHeGlZV05ySUdWeWNtOXlBR0J2Ymw5eVpYTmxkR0FnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDJOb2RXNXJYMmhsWVdSbGNtQWdZMkZzYkdKaFkyc2daWEp5YjNJQVlHOXVYMjFsYzNOaFoyVmZZbVZuYVc1Z0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOWphSFZ1YTE5bGVIUmxibk5wYjI1ZmRtRnNkV1ZnSUdOaGJHeGlZV05ySUdWeWNtOXlBR0J2Ymw5emRHRjBkWE5mWTI5dGNHeGxkR1ZnSUdOaGJHeGlZV05ySUdWeWNtOXlBR0J2Ymw5MlpYSnphVzl1WDJOdmJYQnNaWFJsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZmRYSnNYMk52YlhCc1pYUmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmWTJoMWJtdGZZMjl0Y0d4bGRHVmdJR05oYkd4aVlXTnJJR1Z5Y205eUFHQnZibDlvWldGa1pYSmZkbUZzZFdWZlkyOXRjR3hsZEdWZ0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOXRaWE56WVdkbFgyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZiV1YwYUc5a1gyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZhR1ZoWkdWeVgyWnBaV3hrWDJOdmJYQnNaWFJsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZlkyaDFibXRmWlhoMFpXNXphVzl1WDI1aGJXVmdJR05oYkd4aVlXTnJJR1Z5Y205eUFGVnVaWGh3WldOMFpXUWdZMmhoY2lCcGJpQjFjbXdnYzJWeWRtVnlBRWx1ZG1Gc2FXUWdhR1ZoWkdWeUlIWmhiSFZsSUdOb1lYSUFTVzUyWVd4cFpDQm9aV0ZrWlhJZ1ptbGxiR1FnWTJoaGNnQlRjR0Z1SUdOaGJHeGlZV05ySUdWeWNtOXlJR2x1SUc5dVgzWmxjbk5wYjI0QVNXNTJZV3hwWkNCdGFXNXZjaUIyWlhKemFXOXVBRWx1ZG1Gc2FXUWdiV0ZxYjNJZ2RtVnljMmx2YmdCRmVIQmxZM1JsWkNCemNHRmpaU0JoWm5SbGNpQjJaWEp6YVc5dUFFVjRjR1ZqZEdWa0lFTlNURVlnWVdaMFpYSWdkbVZ5YzJsdmJnQkpiblpoYkdsa0lFaFVWRkFnZG1WeWMybHZiZ0JKYm5aaGJHbGtJR2hsWVdSbGNpQjBiMnRsYmdCVGNHRnVJR05oYkd4aVlXTnJJR1Z5Y205eUlHbHVJRzl1WDNWeWJBQkpiblpoYkdsa0lHTm9ZWEpoWTNSbGNuTWdhVzRnZFhKc0FGVnVaWGh3WldOMFpXUWdjM1JoY25RZ1kyaGhjaUJwYmlCMWNtd0FSRzkxWW14bElFQWdhVzRnZFhKc0FFVnRjSFI1SUVOdmJuUmxiblF0VEdWdVozUm9BRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUVOdmJuUmxiblF0VEdWdVozUm9BRVIxY0d4cFkyRjBaU0JEYjI1MFpXNTBMVXhsYm1kMGFBQkpiblpoYkdsa0lHTm9ZWElnYVc0Z2RYSnNJSEJoZEdnQVEyOXVkR1Z1ZEMxTVpXNW5kR2dnWTJGdUozUWdZbVVnY0hKbGMyVnVkQ0IzYVhSb0lGUnlZVzV6Wm1WeUxVVnVZMjlrYVc1bkFFbHVkbUZzYVdRZ1kyaGhjbUZqZEdWeUlHbHVJR05vZFc1cklITnBlbVVBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDlvWldGa1pYSmZkbUZzZFdVQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5amFIVnVhMTlsZUhSbGJuTnBiMjVmZG1Gc2RXVUFTVzUyWVd4cFpDQmphR0Z5WVdOMFpYSWdhVzRnWTJoMWJtc2daWGgwWlc1emFXOXVjeUIyWVd4MVpRQk5hWE56YVc1bklHVjRjR1ZqZEdWa0lFeEdJR0ZtZEdWeUlHaGxZV1JsY2lCMllXeDFaUUJKYm5aaGJHbGtJR0JVY21GdWMyWmxjaTFGYm1OdlpHbHVaMkFnYUdWaFpHVnlJSFpoYkhWbEFFbHVkbUZzYVdRZ1kyaGhjbUZqZEdWeUlHbHVJR05vZFc1cklHVjRkR1Z1YzJsdmJuTWdjWFZ2ZEdVZ2RtRnNkV1VBU1c1MllXeHBaQ0JqYUdGeVlXTjBaWElnYVc0Z1kyaDFibXNnWlhoMFpXNXphVzl1Y3lCeGRXOTBaV1FnZG1Gc2RXVUFVR0YxYzJWa0lHSjVJRzl1WDJobFlXUmxjbk5mWTI5dGNHeGxkR1VBU1c1MllXeHBaQ0JGVDBZZ2MzUmhkR1VBYjI1ZmNtVnpaWFFnY0dGMWMyVUFiMjVmWTJoMWJtdGZhR1ZoWkdWeUlIQmhkWE5sQUc5dVgyMWxjM05oWjJWZlltVm5hVzRnY0dGMWMyVUFiMjVmWTJoMWJtdGZaWGgwWlc1emFXOXVYM1poYkhWbElIQmhkWE5sQUc5dVgzTjBZWFIxYzE5amIyMXdiR1YwWlNCd1lYVnpaUUJ2Ymw5MlpYSnphVzl1WDJOdmJYQnNaWFJsSUhCaGRYTmxBRzl1WDNWeWJGOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOWphSFZ1YTE5amIyMXdiR1YwWlNCd1lYVnpaUUJ2Ymw5b1pXRmtaWEpmZG1Gc2RXVmZZMjl0Y0d4bGRHVWdjR0YxYzJVQWIyNWZiV1Z6YzJGblpWOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOXRaWFJvYjJSZlkyOXRjR3hsZEdVZ2NHRjFjMlVBYjI1ZmFHVmhaR1Z5WDJacFpXeGtYMk52YlhCc1pYUmxJSEJoZFhObEFHOXVYMk5vZFc1clgyVjRkR1Z1YzJsdmJsOXVZVzFsSUhCaGRYTmxBRlZ1Wlhod1pXTjBaV1FnYzNCaFkyVWdZV1owWlhJZ2MzUmhjblFnYkdsdVpRQlRjR0Z1SUdOaGJHeGlZV05ySUdWeWNtOXlJR2x1SUc5dVgyTm9kVzVyWDJWNGRHVnVjMmx2Ymw5dVlXMWxBRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUdOb2RXNXJJR1Y0ZEdWdWMybHZibk1nYm1GdFpRQlFZWFZ6WlNCdmJpQkRUMDVPUlVOVUwxVndaM0poWkdVQVVHRjFjMlVnYjI0Z1VGSkpMMVZ3WjNKaFpHVUFSWGh3WldOMFpXUWdTRlJVVUM4eUlFTnZibTVsWTNScGIyNGdVSEpsWm1GalpRQlRjR0Z1SUdOaGJHeGlZV05ySUdWeWNtOXlJR2x1SUc5dVgyMWxkR2h2WkFCRmVIQmxZM1JsWkNCemNHRmpaU0JoWm5SbGNpQnRaWFJvYjJRQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5b1pXRmtaWEpmWm1sbGJHUUFVR0YxYzJWa0FFbHVkbUZzYVdRZ2QyOXlaQ0JsYm1OdmRXNTBaWEpsWkFCSmJuWmhiR2xrSUcxbGRHaHZaQ0JsYm1OdmRXNTBaWEpsWkFCVmJtVjRjR1ZqZEdWa0lHTm9ZWElnYVc0Z2RYSnNJSE5qYUdWdFlRQlNaWEYxWlhOMElHaGhjeUJwYm5aaGJHbGtJR0JVY21GdWMyWmxjaTFGYm1OdlpHbHVaMkFBVTFkSlZFTklYMUJTVDFoWkFGVlRSVjlRVWs5WVdRQk5TMEZEVkVsV1NWUlpBRlZPVUZKUFEwVlRVMEZDVEVWZlJVNVVTVlJaQUVOUFVGa0FUVTlXUlVSZlVFVlNUVUZPUlU1VVRGa0FWRTlQWDBWQlVreFpBRTVQVkVsR1dRQkdRVWxNUlVSZlJFVlFSVTVFUlU1RFdRQkNRVVJmUjBGVVJWZEJXUUJRVEVGWkFGQlZWQUJEU0VWRFMwOVZWQUJIUVZSRlYwRlpYMVJKVFVWUFZWUUFVa1ZSVlVWVFZGOVVTVTFGVDFWVUFFNUZWRmRQVWt0ZlEwOU9Ua1ZEVkY5VVNVMUZUMVZVQUVOUFRrNUZRMVJKVDA1ZlZFbE5SVTlWVkFCTVQwZEpUbDlVU1UxRlQxVlVBRTVGVkZkUFVrdGZVa1ZCUkY5VVNVMUZUMVZVQUZCUFUxUUFUVWxUUkVsU1JVTlVSVVJmVWtWUlZVVlRWQUJEVEVsRlRsUmZRMHhQVTBWRVgxSkZVVlZGVTFRQVEweEpSVTVVWDBOTVQxTkZSRjlNVDBGRVgwSkJURUZPUTBWRVgxSkZVVlZGVTFRQVFrRkVYMUpGVVZWRlUxUUFTRlJVVUY5U1JWRlZSVk5VWDFORlRsUmZWRTlmU0ZSVVVGTmZVRTlTVkFCU1JWQlBVbFFBU1UxZlFWOVVSVUZRVDFRQVVrVlRSVlJmUTA5T1ZFVk9WQUJPVDE5RFQwNVVSVTVVQUZCQlVsUkpRVXhmUTA5T1ZFVk9WQUJJVUVWZlNVNVdRVXhKUkY5RFQwNVRWRUZPVkFCSVVFVmZRMEpmVWtWVFJWUUFSMFZVQUVoUVJWOVRWRkpKUTFRQVEwOU9Sa3hKUTFRQVZFVk5VRTlTUVZKWlgxSkZSRWxTUlVOVUFGQkZVazFCVGtWT1ZGOVNSVVJKVWtWRFZBQkRUMDVPUlVOVUFFMVZURlJKWDFOVVFWUlZVd0JJVUVWZlNVNVdRVXhKUkY5VFZFRlVWVk1BVkU5UFgwMUJUbGxmVWtWUlZVVlRWRk1BUlVGU1RGbGZTRWxPVkZNQVZVNUJWa0ZKVEVGQ1RFVmZSazlTWDB4RlIwRk1YMUpGUVZOUFRsTUFUMUJVU1U5T1V3QlRWMGxVUTBoSlRrZGZVRkpQVkU5RFQweFRBRlpCVWtsQlRsUmZRVXhUVDE5T1JVZFBWRWxCVkVWVEFFMVZURlJKVUV4RlgwTklUMGxEUlZNQVNVNVVSVkpPUVV4ZlUwVlNWa1ZTWDBWU1VrOVNBRmRGUWw5VFJWSldSVkpmVlU1TFRrOVhUbDlGVWxKUFVnQlNRVWxNUjFWT1gwVlNVazlTQUVsRVJVNVVTVlJaWDFCU1QxWkpSRVZTWDBGVlZFaEZUbFJKUTBGVVNVOU9YMFZTVWs5U0FGTlRURjlEUlZKVVNVWkpRMEZVUlY5RlVsSlBVZ0JKVGxaQlRFbEVYMWhmUms5U1YwRlNSRVZFWDBaUFVnQlRSVlJmVUVGU1FVMUZWRVZTQUVkRlZGOVFRVkpCVFVWVVJWSUFTRkJGWDFWVFJWSUFVMFZGWDA5VVNFVlNBRWhRUlY5RFFsOURTRlZPUzE5SVJVRkVSVklBVFV0RFFVeEZUa1JCVWdCVFJWUlZVQUJYUlVKZlUwVlNWa1ZTWDBsVFgwUlBWMDRBVkVWQlVrUlBWMDRBU0ZCRlgwTk1UMU5GUkY5RFQwNU9SVU5VU1U5T0FFaEZWVkpKVTFSSlExOUZXRkJKVWtGVVNVOU9BRVJKVTBOUFRrNUZRMVJGUkY5UFVFVlNRVlJKVDA0QVRrOU9YMEZWVkVoUFVrbFVRVlJKVmtWZlNVNUdUMUpOUVZSSlQwNEFTRkJGWDBsT1ZrRk1TVVJmVmtWU1UwbFBUZ0JJVUVWZlEwSmZUVVZUVTBGSFJWOUNSVWRKVGdCVFNWUkZYMGxUWDBaU1QxcEZUZ0JJVUVWZlNVNVdRVXhKUkY5SVJVRkVSVkpmVkU5TFJVNEFTVTVXUVV4SlJGOVVUMHRGVGdCR1QxSkNTVVJFUlU0QVJVNUlRVTVEUlY5WlQxVlNYME5CVEUwQVNGQkZYMGxPVmtGTVNVUmZWVkpNQUVKTVQwTkxSVVJmUWxsZlVFRlNSVTVVUVV4ZlEwOU9WRkpQVEFCTlMwTlBUQUJCUTB3QVNGQkZYMGxPVkVWU1RrRk1BRkpGVVZWRlUxUmZTRVZCUkVWU1gwWkpSVXhFVTE5VVQwOWZURUZTUjBWZlZVNVBSa1pKUTBsQlRBQklVRVZmVDBzQVZVNU1TVTVMQUZWT1RFOURTd0JRVWtrQVVrVlVVbGxmVjBsVVNBQklVRVZmU1U1V1FVeEpSRjlEVDA1VVJVNVVYMHhGVGtkVVNBQklVRVZmVlU1RldGQkZRMVJGUkY5RFQwNVVSVTVVWDB4RlRrZFVTQUJHVEZWVFNBQlFVazlRVUVGVVEwZ0FUUzFUUlVGU1EwZ0FWVkpKWDFSUFQxOU1UMDVIQUZCU1QwTkZVMU5KVGtjQVRVbFRRMFZNVEVGT1JVOVZVMTlRUlZKVFNWTlVSVTVVWDFkQlVrNUpUa2NBVFVsVFEwVk1URUZPUlU5VlUxOVhRVkpPU1U1SEFFaFFSVjlKVGxaQlRFbEVYMVJTUVU1VFJrVlNYMFZPUTA5RVNVNUhBRVY0Y0dWamRHVmtJRU5TVEVZQVNGQkZYMGxPVmtGTVNVUmZRMGhWVGt0ZlUwbGFSUUJOVDFaRkFFTlBUbFJKVGxWRkFFaFFSVjlEUWw5VFZFRlVWVk5mUTA5TlVFeEZWRVVBU0ZCRlgwTkNYMGhGUVVSRlVsTmZRMDlOVUV4RlZFVUFTRkJGWDBOQ1gxWkZVbE5KVDA1ZlEwOU5VRXhGVkVVQVNGQkZYME5DWDFWU1RGOURUMDFRVEVWVVJRQklVRVZmUTBKZlEwaFZUa3RmUTA5TlVFeEZWRVVBU0ZCRlgwTkNYMGhGUVVSRlVsOVdRVXhWUlY5RFQwMVFURVZVUlFCSVVFVmZRMEpmUTBoVlRrdGZSVmhVUlU1VFNVOU9YMVpCVEZWRlgwTlBUVkJNUlZSRkFFaFFSVjlEUWw5RFNGVk9TMTlGV0ZSRlRsTkpUMDVmVGtGTlJWOURUMDFRVEVWVVJRQklVRVZmUTBKZlRVVlRVMEZIUlY5RFQwMVFURVZVUlFCSVVFVmZRMEpmVFVWVVNFOUVYME5QVFZCTVJWUkZBRWhRUlY5RFFsOUlSVUZFUlZKZlJrbEZURVJmUTA5TlVFeEZWRVVBUkVWTVJWUkZBRWhRUlY5SlRsWkJURWxFWDBWUFJsOVRWRUZVUlFCSlRsWkJURWxFWDFOVFRGOURSVkpVU1VaSlEwRlVSUUJRUVZWVFJRQk9UMTlTUlZOUVQwNVRSUUJWVGxOVlVGQlBVbFJGUkY5TlJVUkpRVjlVV1ZCRkFFZFBUa1VBVGs5VVgwRkRRMFZRVkVGQ1RFVUFVMFZTVmtsRFJWOVZUa0ZXUVVsTVFVSk1SUUJTUVU1SFJWOU9UMVJmVTBGVVNWTkdTVUZDVEVVQVQxSkpSMGxPWDBsVFgxVk9Va1ZCUTBoQlFreEZBRkpGVTFCUFRsTkZYMGxUWDFOVVFVeEZBRkJWVWtkRkFFMUZVa2RGQUZKRlVWVkZVMVJmU0VWQlJFVlNYMFpKUlV4RVUxOVVUMDlmVEVGU1IwVUFVa1ZSVlVWVFZGOUlSVUZFUlZKZlZFOVBYMHhCVWtkRkFGQkJXVXhQUVVSZlZFOVBYMHhCVWtkRkFFbE9VMVZHUmtsRFNVVk9WRjlUVkU5U1FVZEZBRWhRUlY5UVFWVlRSVVJmVlZCSFVrRkVSUUJJVUVWZlVFRlZVMFZFWDBneVgxVlFSMUpCUkVVQVUwOVZVa05GQUVGT1RrOVZUa05GQUZSU1FVTkZBRWhRUlY5VlRrVllVRVZEVkVWRVgxTlFRVU5GQUVSRlUwTlNTVUpGQUZWT1UxVkNVME5TU1VKRkFGSkZRMDlTUkFCSVVFVmZTVTVXUVV4SlJGOU5SVlJJVDBRQVRrOVVYMFpQVlU1RUFGQlNUMUJHU1U1RUFGVk9Ra2xPUkFCU1JVSkpUa1FBVlU1QlZWUklUMUpKV2tWRUFFMUZWRWhQUkY5T1QxUmZRVXhNVDFkRlJBQklWRlJRWDFaRlVsTkpUMDVmVGs5VVgxTlZVRkJQVWxSRlJBQkJURkpGUVVSWlgxSkZVRTlTVkVWRUFFRkRRMFZRVkVWRUFFNVBWRjlKVFZCTVJVMUZUbFJGUkFCTVQwOVFYMFJGVkVWRFZFVkVBRWhRUlY5RFVsOUZXRkJGUTFSRlJBQklVRVZmVEVaZlJWaFFSVU5VUlVRQVExSkZRVlJGUkFCSlRWOVZVMFZFQUVoUVJWOVFRVlZUUlVRQVZFbE5SVTlWVkY5UFEwTlZVa1ZFQUZCQldVMUZUbFJmVWtWUlZVbFNSVVFBVUZKRlEwOU9SRWxVU1U5T1gxSkZVVlZKVWtWRUFGQlNUMWhaWDBGVlZFaEZUbFJKUTBGVVNVOU9YMUpGVVZWSlVrVkVBRTVGVkZkUFVrdGZRVlZVU0VWT1ZFbERRVlJKVDA1ZlVrVlJWVWxTUlVRQVRFVk9SMVJJWDFKRlVWVkpVa1ZFQUZOVFRGOURSVkpVU1VaSlEwRlVSVjlTUlZGVlNWSkZSQUJWVUVkU1FVUkZYMUpGVVZWSlVrVkVBRkJCUjBWZlJWaFFTVkpGUkFCUVVrVkRUMDVFU1ZSSlQwNWZSa0ZKVEVWRUFFVllVRVZEVkVGVVNVOU9YMFpCU1V4RlJBQlNSVlpCVEVsRVFWUkpUMDVmUmtGSlRFVkVBRk5UVEY5SVFVNUVVMGhCUzBWZlJrRkpURVZFQUV4UFEwdEZSQUJVVWtGT1UwWlBVazFCVkVsUFRsOUJVRkJNU1VWRUFFNVBWRjlOVDBSSlJrbEZSQUJPVDFSZlJWaFVSVTVFUlVRQVFrRk9SRmRKUkZSSVgweEpUVWxVWDBWWVEwVkZSRVZFQUZOSlZFVmZTVk5mVDFaRlVreFBRVVJGUkFCSVJVRkVBRVY0Y0dWamRHVmtJRWhVVkZBdkFBQmVFd0FBSmhNQUFEQVFBQUR3RndBQW5STUFBQlVTQUFBNUZ3QUE4QklBQUFvUUFBQjFFZ0FBclJJQUFJSVRBQUJQRkFBQWZ4QUFBS0FWQUFBakZBQUFpUklBQUlzVUFBQk5GUUFBMUJFQUFNOFVBQUFRR0FBQXlSWUFBTndXQUFEQkVRQUE0QmNBQUxzVUFBQjBGQUFBZkJVQUFPVVVBQUFJRndBQUh4QUFBR1VWQUFDakZBQUFLQlVBQUFJVkFBQ1pGUUFBTEJBQUFJc1pBQUJQRHdBQTFBNEFBR29RQUFET0VBQUFBaGNBQUlrT0FBQnVFd0FBSEJNQUFHWVVBQUJXRndBQXdSTUFBTTBUQUFCc0V3QUFhQmNBQUdZWEFBQmZGd0FBSWhNQUFNNFBBQUJwRGdBQTJBNEFBR01XQUFETEV3QUFxZzRBQUNnWEFBQW1Gd0FBeFJNQUFGMFdBQURvRVFBQVp4TUFBR1VUQUFEeUZnQUFjeE1BQUIwWEFBRDVGZ0FBOHhFQUFNOE9BQURPRlFBQURCSUFBTE1SQUFDbEVRQUFZUkFBQURJWEFBQzdFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBZ0VCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdNQ0FnSUNBZ0FBQWdJQUFnSUFBZ0lDQWdJQ0FnSUNBZ0FFQUFBQUFBQUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUFBQUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUFJQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBZ0lDQWdJQUFBSUNBQUlDQUFJQ0FnSUNBZ0lDQWdJQUF3QUVBQUFBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUNBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc2IzTmxaV1Z3TFdGc2FYWmxBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkFRRUJBUUVCQVFFQkFnRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUZqYUhWdWEyVmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRQUJBUUVCQVFBQUFRRUFBUUVBQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBRUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdWamRHbHZibVZ1ZEMxc1pXNW5kR2h2Ym5KdmVIa3RZMjl1Ym1WamRHbHZiZ0FBQUFBQUFBQUFBQUFBQUFBQUFISmhibk5tWlhJdFpXNWpiMlJwYm1kd1ozSmhaR1VOQ2cwS0RRcFRUUTBLRFFwVVZGQXZRMFV2VkZOUUx3QUFBQUFBQUFBQUFBQUFBQUVDQUFFREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUFBQUFBQUFBQkFnQUJBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFCQVFVQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUFBQUFBQUFBQUFBUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFBQUFBQkFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1FBQUFRRUJBUUVCQVFFQkFRRUJRUUVCQVFFQkFRRUJBUUVCQUFFQUFZSEJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBUUFCQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBQUFBQUFBQUF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBZ0FBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdBQUFBQUFBQU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFNVBWVTVEUlVWRFMwOVZWRTVGUTFSRlZFVkRVa2xDUlV4VlUwaEZWRVZCUkZORlFWSkRTRkpIUlVOVVNWWkpWRmxNUlU1RVFWSldSVTlVU1VaWlVGUkpUMDVUUTBoVFJVRlpVMVJCVkVOSVIwVlBVa1JKVWtWRFZFOVNWRkpEU0ZCQlVrRk5SVlJGVWxWU1EwVkNVME5TU1VKRlFWSkVUMWRPUVVORlNVNUVUa3REUzFWQ1UwTlNTVUpGU0ZSVVVDOUJSRlJRTHc9PSdcbiIsICIvLyBAdHMtY2hlY2tcblxuJ3VzZSBzdHJpY3QnXG5cbi8qIGdsb2JhbCBXZWJBc3NlbWJseSAqL1xuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgbmV0ID0gcmVxdWlyZSgnbmV0JylcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJylcbmNvbnN0IHsgcGlwZWxpbmUgfSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi9jb3JlL3V0aWwnKVxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgnLi90aW1lcnMnKVxuY29uc3QgUmVxdWVzdCA9IHJlcXVpcmUoJy4vY29yZS9yZXF1ZXN0JylcbmNvbnN0IERpc3BhdGNoZXJCYXNlID0gcmVxdWlyZSgnLi9kaXNwYXRjaGVyLWJhc2UnKVxuY29uc3Qge1xuICBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IsXG4gIFJlc3BvbnNlQ29udGVudExlbmd0aE1pc21hdGNoRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBSZXF1ZXN0QWJvcnRlZEVycm9yLFxuICBIZWFkZXJzVGltZW91dEVycm9yLFxuICBIZWFkZXJzT3ZlcmZsb3dFcnJvcixcbiAgU29ja2V0RXJyb3IsXG4gIEluZm9ybWF0aW9uYWxFcnJvcixcbiAgQm9keVRpbWVvdXRFcnJvcixcbiAgSFRUUFBhcnNlckVycm9yLFxuICBSZXNwb25zZUV4Y2VlZGVkTWF4U2l6ZUVycm9yLFxuICBDbGllbnREZXN0cm95ZWRFcnJvclxufSA9IHJlcXVpcmUoJy4vY29yZS9lcnJvcnMnKVxuY29uc3QgYnVpbGRDb25uZWN0b3IgPSByZXF1aXJlKCcuL2NvcmUvY29ubmVjdCcpXG5jb25zdCB7XG4gIGtVcmwsXG4gIGtSZXNldCxcbiAga1NlcnZlck5hbWUsXG4gIGtDbGllbnQsXG4gIGtCdXN5LFxuICBrUGFyc2VyLFxuICBrQ29ubmVjdCxcbiAga0Jsb2NraW5nLFxuICBrUmVzdW1pbmcsXG4gIGtSdW5uaW5nLFxuICBrUGVuZGluZyxcbiAga1NpemUsXG4gIGtXcml0aW5nLFxuICBrUXVldWUsXG4gIGtDb25uZWN0ZWQsXG4gIGtDb25uZWN0aW5nLFxuICBrTmVlZERyYWluLFxuICBrTm9SZWYsXG4gIGtLZWVwQWxpdmVEZWZhdWx0VGltZW91dCxcbiAga0hvc3RIZWFkZXIsXG4gIGtQZW5kaW5nSWR4LFxuICBrUnVubmluZ0lkeCxcbiAga0Vycm9yLFxuICBrUGlwZWxpbmluZyxcbiAga1NvY2tldCxcbiAga0tlZXBBbGl2ZVRpbWVvdXRWYWx1ZSxcbiAga01heEhlYWRlcnNTaXplLFxuICBrS2VlcEFsaXZlTWF4VGltZW91dCxcbiAga0tlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGQsXG4gIGtIZWFkZXJzVGltZW91dCxcbiAga0JvZHlUaW1lb3V0LFxuICBrU3RyaWN0Q29udGVudExlbmd0aCxcbiAga0Nvbm5lY3RvcixcbiAga01heFJlZGlyZWN0aW9ucyxcbiAga01heFJlcXVlc3RzLFxuICBrQ291bnRlcixcbiAga0Nsb3NlLFxuICBrRGVzdHJveSxcbiAga0Rpc3BhdGNoLFxuICBrSW50ZXJjZXB0b3JzLFxuICBrTG9jYWxBZGRyZXNzLFxuICBrTWF4UmVzcG9uc2VTaXplLFxuICBrSFRUUENvbm5WZXJzaW9uLFxuICAvLyBIVFRQMlxuICBrSG9zdCxcbiAga0hUVFAyU2Vzc2lvbixcbiAga0hUVFAyU2Vzc2lvblN0YXRlLFxuICBrSFRUUDJCdWlsZFJlcXVlc3QsXG4gIGtIVFRQMkNvcHlIZWFkZXJzLFxuICBrSFRUUDFCdWlsZFJlcXVlc3Rcbn0gPSByZXF1aXJlKCcuL2NvcmUvc3ltYm9scycpXG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdodHRwMicpfSAqL1xubGV0IGh0dHAyXG50cnkge1xuICBodHRwMiA9IHJlcXVpcmUoJ2h0dHAyJylcbn0gY2F0Y2gge1xuICAvLyBAdHMtaWdub3JlXG4gIGh0dHAyID0geyBjb25zdGFudHM6IHt9IH1cbn1cblxuY29uc3Qge1xuICBjb25zdGFudHM6IHtcbiAgICBIVFRQMl9IRUFERVJfQVVUSE9SSVRZLFxuICAgIEhUVFAyX0hFQURFUl9NRVRIT0QsXG4gICAgSFRUUDJfSEVBREVSX1BBVEgsXG4gICAgSFRUUDJfSEVBREVSX1NDSEVNRSxcbiAgICBIVFRQMl9IRUFERVJfQ09OVEVOVF9MRU5HVEgsXG4gICAgSFRUUDJfSEVBREVSX0VYUEVDVCxcbiAgICBIVFRQMl9IRUFERVJfU1RBVFVTXG4gIH1cbn0gPSBodHRwMlxuXG4vLyBFeHBlcmltZW50YWxcbmxldCBoMkV4cGVyaW1lbnRhbFdhcm5lZCA9IGZhbHNlXG5cbmNvbnN0IEZhc3RCdWZmZXIgPSBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdXG5cbmNvbnN0IGtDbG9zZWRSZXNvbHZlID0gU3ltYm9sKCdrQ2xvc2VkUmVzb2x2ZScpXG5cbmNvbnN0IGNoYW5uZWxzID0ge31cblxudHJ5IHtcbiAgY29uc3QgZGlhZ25vc3RpY3NDaGFubmVsID0gcmVxdWlyZSgnZGlhZ25vc3RpY3NfY2hhbm5lbCcpXG4gIGNoYW5uZWxzLnNlbmRIZWFkZXJzID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTpjbGllbnQ6c2VuZEhlYWRlcnMnKVxuICBjaGFubmVscy5iZWZvcmVDb25uZWN0ID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTpjbGllbnQ6YmVmb3JlQ29ubmVjdCcpXG4gIGNoYW5uZWxzLmNvbm5lY3RFcnJvciA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6Y2xpZW50OmNvbm5lY3RFcnJvcicpXG4gIGNoYW5uZWxzLmNvbm5lY3RlZCA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6Y2xpZW50OmNvbm5lY3RlZCcpXG59IGNhdGNoIHtcbiAgY2hhbm5lbHMuc2VuZEhlYWRlcnMgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLmJlZm9yZUNvbm5lY3QgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLmNvbm5lY3RFcnJvciA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbiAgY2hhbm5lbHMuY29ubmVjdGVkID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtpbXBvcnQoJy4uL3R5cGVzL2NsaWVudCcpLmRlZmF1bHR9XG4gKi9cbmNsYXNzIENsaWVudCBleHRlbmRzIERpc3BhdGNoZXJCYXNlIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFVSTH0gdXJsXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9jbGllbnQnKS5DbGllbnQuT3B0aW9uc30gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IgKHVybCwge1xuICAgIGludGVyY2VwdG9ycyxcbiAgICBtYXhIZWFkZXJTaXplLFxuICAgIGhlYWRlcnNUaW1lb3V0LFxuICAgIHNvY2tldFRpbWVvdXQsXG4gICAgcmVxdWVzdFRpbWVvdXQsXG4gICAgY29ubmVjdFRpbWVvdXQsXG4gICAgYm9keVRpbWVvdXQsXG4gICAgaWRsZVRpbWVvdXQsXG4gICAga2VlcEFsaXZlLFxuICAgIGtlZXBBbGl2ZVRpbWVvdXQsXG4gICAgbWF4S2VlcEFsaXZlVGltZW91dCxcbiAgICBrZWVwQWxpdmVNYXhUaW1lb3V0LFxuICAgIGtlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGQsXG4gICAgc29ja2V0UGF0aCxcbiAgICBwaXBlbGluaW5nLFxuICAgIHRscyxcbiAgICBzdHJpY3RDb250ZW50TGVuZ3RoLFxuICAgIG1heENhY2hlZFNlc3Npb25zLFxuICAgIG1heFJlZGlyZWN0aW9ucyxcbiAgICBjb25uZWN0LFxuICAgIG1heFJlcXVlc3RzUGVyQ2xpZW50LFxuICAgIGxvY2FsQWRkcmVzcyxcbiAgICBtYXhSZXNwb25zZVNpemUsXG4gICAgYXV0b1NlbGVjdEZhbWlseSxcbiAgICBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQsXG4gICAgLy8gaDJcbiAgICBhbGxvd0gyLFxuICAgIG1heENvbmN1cnJlbnRTdHJlYW1zXG4gIH0gPSB7fSkge1xuICAgIHN1cGVyKClcblxuICAgIGlmIChrZWVwQWxpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd1bnN1cHBvcnRlZCBrZWVwQWxpdmUsIHVzZSBwaXBlbGluaW5nPTAgaW5zdGVhZCcpXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldFRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd1bnN1cHBvcnRlZCBzb2NrZXRUaW1lb3V0LCB1c2UgaGVhZGVyc1RpbWVvdXQgJiBib2R5VGltZW91dCBpbnN0ZWFkJylcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdFRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd1bnN1cHBvcnRlZCByZXF1ZXN0VGltZW91dCwgdXNlIGhlYWRlcnNUaW1lb3V0ICYgYm9keVRpbWVvdXQgaW5zdGVhZCcpXG4gICAgfVxuXG4gICAgaWYgKGlkbGVUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndW5zdXBwb3J0ZWQgaWRsZVRpbWVvdXQsIHVzZSBrZWVwQWxpdmVUaW1lb3V0IGluc3RlYWQnKVxuICAgIH1cblxuICAgIGlmIChtYXhLZWVwQWxpdmVUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndW5zdXBwb3J0ZWQgbWF4S2VlcEFsaXZlVGltZW91dCwgdXNlIGtlZXBBbGl2ZU1heFRpbWVvdXQgaW5zdGVhZCcpXG4gICAgfVxuXG4gICAgaWYgKG1heEhlYWRlclNpemUgIT0gbnVsbCAmJiAhTnVtYmVyLmlzRmluaXRlKG1heEhlYWRlclNpemUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgbWF4SGVhZGVyU2l6ZScpXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldFBhdGggIT0gbnVsbCAmJiB0eXBlb2Ygc29ja2V0UGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBzb2NrZXRQYXRoJylcbiAgICB9XG5cbiAgICBpZiAoY29ubmVjdFRpbWVvdXQgIT0gbnVsbCAmJiAoIU51bWJlci5pc0Zpbml0ZShjb25uZWN0VGltZW91dCkgfHwgY29ubmVjdFRpbWVvdXQgPCAwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNvbm5lY3RUaW1lb3V0JylcbiAgICB9XG5cbiAgICBpZiAoa2VlcEFsaXZlVGltZW91dCAhPSBudWxsICYmICghTnVtYmVyLmlzRmluaXRlKGtlZXBBbGl2ZVRpbWVvdXQpIHx8IGtlZXBBbGl2ZVRpbWVvdXQgPD0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBrZWVwQWxpdmVUaW1lb3V0JylcbiAgICB9XG5cbiAgICBpZiAoa2VlcEFsaXZlTWF4VGltZW91dCAhPSBudWxsICYmICghTnVtYmVyLmlzRmluaXRlKGtlZXBBbGl2ZU1heFRpbWVvdXQpIHx8IGtlZXBBbGl2ZU1heFRpbWVvdXQgPD0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBrZWVwQWxpdmVNYXhUaW1lb3V0JylcbiAgICB9XG5cbiAgICBpZiAoa2VlcEFsaXZlVGltZW91dFRocmVzaG9sZCAhPSBudWxsICYmICFOdW1iZXIuaXNGaW5pdGUoa2VlcEFsaXZlVGltZW91dFRocmVzaG9sZCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBrZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkJylcbiAgICB9XG5cbiAgICBpZiAoaGVhZGVyc1RpbWVvdXQgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIoaGVhZGVyc1RpbWVvdXQpIHx8IGhlYWRlcnNUaW1lb3V0IDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaGVhZGVyc1RpbWVvdXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgb3IgemVybycpXG4gICAgfVxuXG4gICAgaWYgKGJvZHlUaW1lb3V0ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGJvZHlUaW1lb3V0KSB8fCBib2R5VGltZW91dCA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2JvZHlUaW1lb3V0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIHplcm8nKVxuICAgIH1cblxuICAgIGlmIChjb25uZWN0ICE9IG51bGwgJiYgdHlwZW9mIGNvbm5lY3QgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGNvbm5lY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Nvbm5lY3QgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCcpXG4gICAgfVxuXG4gICAgaWYgKG1heFJlZGlyZWN0aW9ucyAhPSBudWxsICYmICghTnVtYmVyLmlzSW50ZWdlcihtYXhSZWRpcmVjdGlvbnMpIHx8IG1heFJlZGlyZWN0aW9ucyA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21heFJlZGlyZWN0aW9ucyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAobWF4UmVxdWVzdHNQZXJDbGllbnQgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIobWF4UmVxdWVzdHNQZXJDbGllbnQpIHx8IG1heFJlcXVlc3RzUGVyQ2xpZW50IDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWF4UmVxdWVzdHNQZXJDbGllbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgfVxuXG4gICAgaWYgKGxvY2FsQWRkcmVzcyAhPSBudWxsICYmICh0eXBlb2YgbG9jYWxBZGRyZXNzICE9PSAnc3RyaW5nJyB8fCBuZXQuaXNJUChsb2NhbEFkZHJlc3MpID09PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdsb2NhbEFkZHJlc3MgbXVzdCBiZSB2YWxpZCBzdHJpbmcgSVAgYWRkcmVzcycpXG4gICAgfVxuXG4gICAgaWYgKG1heFJlc3BvbnNlU2l6ZSAhPSBudWxsICYmICghTnVtYmVyLmlzSW50ZWdlcihtYXhSZXNwb25zZVNpemUpIHx8IG1heFJlc3BvbnNlU2l6ZSA8IC0xKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtYXhSZXNwb25zZVNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0ICE9IG51bGwgJiZcbiAgICAgICghTnVtYmVyLmlzSW50ZWdlcihhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQpIHx8IGF1dG9TZWxlY3RGYW1pbHlBdHRlbXB0VGltZW91dCA8IC0xKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgfVxuXG4gICAgLy8gaDJcbiAgICBpZiAoYWxsb3dIMiAhPSBudWxsICYmIHR5cGVvZiBhbGxvd0gyICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignYWxsb3dIMiBtdXN0IGJlIGEgdmFsaWQgYm9vbGVhbiB2YWx1ZScpXG4gICAgfVxuXG4gICAgaWYgKG1heENvbmN1cnJlbnRTdHJlYW1zICE9IG51bGwgJiYgKHR5cGVvZiBtYXhDb25jdXJyZW50U3RyZWFtcyAhPT0gJ251bWJlcicgfHwgbWF4Q29uY3VycmVudFN0cmVhbXMgPCAxKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtYXhDb25jdXJyZW50U3RyZWFtcyBtdXN0IGJlIGEgcG9zc2l0aXZlIGludGVnZXIsIGdyZWF0ZXIgdGhhbiAwJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbm5lY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbm5lY3QgPSBidWlsZENvbm5lY3Rvcih7XG4gICAgICAgIC4uLnRscyxcbiAgICAgICAgbWF4Q2FjaGVkU2Vzc2lvbnMsXG4gICAgICAgIGFsbG93SDIsXG4gICAgICAgIHNvY2tldFBhdGgsXG4gICAgICAgIHRpbWVvdXQ6IGNvbm5lY3RUaW1lb3V0LFxuICAgICAgICAuLi4odXRpbC5ub2RlSGFzQXV0b1NlbGVjdEZhbWlseSAmJiBhdXRvU2VsZWN0RmFtaWx5ID8geyBhdXRvU2VsZWN0RmFtaWx5LCBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQgfSA6IHVuZGVmaW5lZCksXG4gICAgICAgIC4uLmNvbm5lY3RcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpc1trSW50ZXJjZXB0b3JzXSA9IGludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvcnMuQ2xpZW50ICYmIEFycmF5LmlzQXJyYXkoaW50ZXJjZXB0b3JzLkNsaWVudClcbiAgICAgID8gaW50ZXJjZXB0b3JzLkNsaWVudFxuICAgICAgOiBbY3JlYXRlUmVkaXJlY3RJbnRlcmNlcHRvcih7IG1heFJlZGlyZWN0aW9ucyB9KV1cbiAgICB0aGlzW2tVcmxdID0gdXRpbC5wYXJzZU9yaWdpbih1cmwpXG4gICAgdGhpc1trQ29ubmVjdG9yXSA9IGNvbm5lY3RcbiAgICB0aGlzW2tTb2NrZXRdID0gbnVsbFxuICAgIHRoaXNba1BpcGVsaW5pbmddID0gcGlwZWxpbmluZyAhPSBudWxsID8gcGlwZWxpbmluZyA6IDFcbiAgICB0aGlzW2tNYXhIZWFkZXJzU2l6ZV0gPSBtYXhIZWFkZXJTaXplIHx8IGh0dHAubWF4SGVhZGVyU2l6ZVxuICAgIHRoaXNba0tlZXBBbGl2ZURlZmF1bHRUaW1lb3V0XSA9IGtlZXBBbGl2ZVRpbWVvdXQgPT0gbnVsbCA/IDRlMyA6IGtlZXBBbGl2ZVRpbWVvdXRcbiAgICB0aGlzW2tLZWVwQWxpdmVNYXhUaW1lb3V0XSA9IGtlZXBBbGl2ZU1heFRpbWVvdXQgPT0gbnVsbCA/IDYwMGUzIDoga2VlcEFsaXZlTWF4VGltZW91dFxuICAgIHRoaXNba0tlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGRdID0ga2VlcEFsaXZlVGltZW91dFRocmVzaG9sZCA9PSBudWxsID8gMWUzIDoga2VlcEFsaXZlVGltZW91dFRocmVzaG9sZFxuICAgIHRoaXNba0tlZXBBbGl2ZVRpbWVvdXRWYWx1ZV0gPSB0aGlzW2tLZWVwQWxpdmVEZWZhdWx0VGltZW91dF1cbiAgICB0aGlzW2tTZXJ2ZXJOYW1lXSA9IG51bGxcbiAgICB0aGlzW2tMb2NhbEFkZHJlc3NdID0gbG9jYWxBZGRyZXNzICE9IG51bGwgPyBsb2NhbEFkZHJlc3MgOiBudWxsXG4gICAgdGhpc1trUmVzdW1pbmddID0gMCAvLyAwLCBpZGxlLCAxLCBzY2hlZHVsZWQsIDIgcmVzdW1pbmdcbiAgICB0aGlzW2tOZWVkRHJhaW5dID0gMCAvLyAwLCBpZGxlLCAxLCBzY2hlZHVsZWQsIDIgcmVzdW1pbmdcbiAgICB0aGlzW2tIb3N0SGVhZGVyXSA9IGBob3N0OiAke3RoaXNba1VybF0uaG9zdG5hbWV9JHt0aGlzW2tVcmxdLnBvcnQgPyBgOiR7dGhpc1trVXJsXS5wb3J0fWAgOiAnJ31cXHJcXG5gXG4gICAgdGhpc1trQm9keVRpbWVvdXRdID0gYm9keVRpbWVvdXQgIT0gbnVsbCA/IGJvZHlUaW1lb3V0IDogMzAwZTNcbiAgICB0aGlzW2tIZWFkZXJzVGltZW91dF0gPSBoZWFkZXJzVGltZW91dCAhPSBudWxsID8gaGVhZGVyc1RpbWVvdXQgOiAzMDBlM1xuICAgIHRoaXNba1N0cmljdENvbnRlbnRMZW5ndGhdID0gc3RyaWN0Q29udGVudExlbmd0aCA9PSBudWxsID8gdHJ1ZSA6IHN0cmljdENvbnRlbnRMZW5ndGhcbiAgICB0aGlzW2tNYXhSZWRpcmVjdGlvbnNdID0gbWF4UmVkaXJlY3Rpb25zXG4gICAgdGhpc1trTWF4UmVxdWVzdHNdID0gbWF4UmVxdWVzdHNQZXJDbGllbnRcbiAgICB0aGlzW2tDbG9zZWRSZXNvbHZlXSA9IG51bGxcbiAgICB0aGlzW2tNYXhSZXNwb25zZVNpemVdID0gbWF4UmVzcG9uc2VTaXplID4gLTEgPyBtYXhSZXNwb25zZVNpemUgOiAtMVxuICAgIHRoaXNba0hUVFBDb25uVmVyc2lvbl0gPSAnaDEnXG5cbiAgICAvLyBIVFRQLzJcbiAgICB0aGlzW2tIVFRQMlNlc3Npb25dID0gbnVsbFxuICAgIHRoaXNba0hUVFAyU2Vzc2lvblN0YXRlXSA9ICFhbGxvd0gyXG4gICAgICA/IG51bGxcbiAgICAgIDoge1xuICAgICAgICAvLyBzdHJlYW1zOiBudWxsLCAvLyBGaXhlZCBxdWV1ZSBvZiBzdHJlYW1zIC0gRm9yIGZ1dHVyZSBzdXBwb3J0IG9mIGBwdXNoYFxuICAgICAgICAgIG9wZW5TdHJlYW1zOiAwLCAvLyBLZWVwIHRyYWNrIG9mIHRoZW0gdG8gZGVjaWRlIHdldGhlciBvciBub3QgdW5yZWYgdGhlIHNlc3Npb25cbiAgICAgICAgICBtYXhDb25jdXJyZW50U3RyZWFtczogbWF4Q29uY3VycmVudFN0cmVhbXMgIT0gbnVsbCA/IG1heENvbmN1cnJlbnRTdHJlYW1zIDogMTAwIC8vIE1heCBwZWVyQ29uY3VycmVudFN0cmVhbXMgZm9yIGEgTm9kZSBoMiBzZXJ2ZXJcbiAgICAgICAgfVxuICAgIHRoaXNba0hvc3RdID0gYCR7dGhpc1trVXJsXS5ob3N0bmFtZX0ke3RoaXNba1VybF0ucG9ydCA/IGA6JHt0aGlzW2tVcmxdLnBvcnR9YCA6ICcnfWBcblxuICAgIC8vIGtRdWV1ZSBpcyBidWlsdCB1cCBvZiAzIHNlY3Rpb25zIHNlcGFyYXRlZCBieVxuICAgIC8vIHRoZSBrUnVubmluZ0lkeCBhbmQga1BlbmRpbmdJZHggaW5kaWNlcy5cbiAgICAvLyB8ICAgY29tcGxldGUgICB8ICAgcnVubmluZyAgIHwgICBwZW5kaW5nICAgfFxuICAgIC8vICAgICAgICAgICAgICAgIF4ga1J1bm5pbmdJZHggXiBrUGVuZGluZ0lkeCBeIGtRdWV1ZS5sZW5ndGhcbiAgICAvLyBrUnVubmluZ0lkeCBwb2ludHMgdG8gdGhlIGZpcnN0IHJ1bm5pbmcgZWxlbWVudC5cbiAgICAvLyBrUGVuZGluZ0lkeCBwb2ludHMgdG8gdGhlIGZpcnN0IHBlbmRpbmcgZWxlbWVudC5cbiAgICAvLyBUaGlzIGltcGxlbWVudHMgYSBmYXN0IHF1ZXVlIHdpdGggYW4gYW1vcnRpemVkXG4gICAgLy8gdGltZSBvZiBPKDEpLlxuXG4gICAgdGhpc1trUXVldWVdID0gW11cbiAgICB0aGlzW2tSdW5uaW5nSWR4XSA9IDBcbiAgICB0aGlzW2tQZW5kaW5nSWR4XSA9IDBcbiAgfVxuXG4gIGdldCBwaXBlbGluaW5nICgpIHtcbiAgICByZXR1cm4gdGhpc1trUGlwZWxpbmluZ11cbiAgfVxuXG4gIHNldCBwaXBlbGluaW5nICh2YWx1ZSkge1xuICAgIHRoaXNba1BpcGVsaW5pbmddID0gdmFsdWVcbiAgICByZXN1bWUodGhpcywgdHJ1ZSlcbiAgfVxuXG4gIGdldCBba1BlbmRpbmddICgpIHtcbiAgICByZXR1cm4gdGhpc1trUXVldWVdLmxlbmd0aCAtIHRoaXNba1BlbmRpbmdJZHhdXG4gIH1cblxuICBnZXQgW2tSdW5uaW5nXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1BlbmRpbmdJZHhdIC0gdGhpc1trUnVubmluZ0lkeF1cbiAgfVxuXG4gIGdldCBba1NpemVdICgpIHtcbiAgICByZXR1cm4gdGhpc1trUXVldWVdLmxlbmd0aCAtIHRoaXNba1J1bm5pbmdJZHhdXG4gIH1cblxuICBnZXQgW2tDb25uZWN0ZWRdICgpIHtcbiAgICByZXR1cm4gISF0aGlzW2tTb2NrZXRdICYmICF0aGlzW2tDb25uZWN0aW5nXSAmJiAhdGhpc1trU29ja2V0XS5kZXN0cm95ZWRcbiAgfVxuXG4gIGdldCBba0J1c3ldICgpIHtcbiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW2tTb2NrZXRdXG4gICAgcmV0dXJuIChcbiAgICAgIChzb2NrZXQgJiYgKHNvY2tldFtrUmVzZXRdIHx8IHNvY2tldFtrV3JpdGluZ10gfHwgc29ja2V0W2tCbG9ja2luZ10pKSB8fFxuICAgICAgKHRoaXNba1NpemVdID49ICh0aGlzW2tQaXBlbGluaW5nXSB8fCAxKSkgfHxcbiAgICAgIHRoaXNba1BlbmRpbmddID4gMFxuICAgIClcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZTogb25seSB1c2VkIGZvciB0ZXN0ICovXG4gIFtrQ29ubmVjdF0gKGNiKSB7XG4gICAgY29ubmVjdCh0aGlzKVxuICAgIHRoaXMub25jZSgnY29ubmVjdCcsIGNiKVxuICB9XG5cbiAgW2tEaXNwYXRjaF0gKG9wdHMsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBvcmlnaW4gPSBvcHRzLm9yaWdpbiB8fCB0aGlzW2tVcmxdLm9yaWdpblxuXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXNba0hUVFBDb25uVmVyc2lvbl0gPT09ICdoMidcbiAgICAgID8gUmVxdWVzdFtrSFRUUDJCdWlsZFJlcXVlc3RdKG9yaWdpbiwgb3B0cywgaGFuZGxlcilcbiAgICAgIDogUmVxdWVzdFtrSFRUUDFCdWlsZFJlcXVlc3RdKG9yaWdpbiwgb3B0cywgaGFuZGxlcilcblxuICAgIHRoaXNba1F1ZXVlXS5wdXNoKHJlcXVlc3QpXG4gICAgaWYgKHRoaXNba1Jlc3VtaW5nXSkge1xuICAgICAgLy8gRG8gbm90aGluZy5cbiAgICB9IGVsc2UgaWYgKHV0aWwuYm9keUxlbmd0aChyZXF1ZXN0LmJvZHkpID09IG51bGwgJiYgdXRpbC5pc0l0ZXJhYmxlKHJlcXVlc3QuYm9keSkpIHtcbiAgICAgIC8vIFdhaXQgYSB0aWNrIGluIGNhc2Ugc3RyZWFtL2l0ZXJhdG9yIGlzIGVuZGVkIGluIHRoZSBzYW1lIHRpY2suXG4gICAgICB0aGlzW2tSZXN1bWluZ10gPSAxXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKHJlc3VtZSwgdGhpcylcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdW1lKHRoaXMsIHRydWUpXG4gICAgfVxuXG4gICAgaWYgKHRoaXNba1Jlc3VtaW5nXSAmJiB0aGlzW2tOZWVkRHJhaW5dICE9PSAyICYmIHRoaXNba0J1c3ldKSB7XG4gICAgICB0aGlzW2tOZWVkRHJhaW5dID0gMlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzW2tOZWVkRHJhaW5dIDwgMlxuICB9XG5cbiAgYXN5bmMgW2tDbG9zZV0gKCkge1xuICAgIC8vIFRPRE86IGZvciBIMiB3ZSBuZWVkIHRvIGdyYWNlZnVsbHkgZmx1c2ggdGhlIHJlbWFpbmluZyBlbnF1ZXVlZFxuICAgIC8vIHJlcXVlc3QgYW5kIGNsb3NlIGVhY2ggc3RyZWFtLlxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW2tTaXplXSkge1xuICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW2tDbG9zZWRSZXNvbHZlXSA9IHJlc29sdmVcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgW2tEZXN0cm95XSAoZXJyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXNba1F1ZXVlXS5zcGxpY2UodGhpc1trUGVuZGluZ0lkeF0pXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcXVlc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1ZXN0c1tpXVxuICAgICAgICBlcnJvclJlcXVlc3QodGhpcywgcmVxdWVzdCwgZXJyKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXNba0Nsb3NlZFJlc29sdmVdKSB7XG4gICAgICAgICAgLy8gVE9ETyAoZml4KTogU2hvdWxkIHdlIGVycm9yIGhlcmUgd2l0aCBDbGllbnREZXN0cm95ZWRFcnJvcj9cbiAgICAgICAgICB0aGlzW2tDbG9zZWRSZXNvbHZlXSgpXG4gICAgICAgICAgdGhpc1trQ2xvc2VkUmVzb2x2ZV0gPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzW2tIVFRQMlNlc3Npb25dICE9IG51bGwpIHtcbiAgICAgICAgdXRpbC5kZXN0cm95KHRoaXNba0hUVFAyU2Vzc2lvbl0sIGVycilcbiAgICAgICAgdGhpc1trSFRUUDJTZXNzaW9uXSA9IG51bGxcbiAgICAgICAgdGhpc1trSFRUUDJTZXNzaW9uU3RhdGVdID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXNba1NvY2tldF0pIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soY2FsbGJhY2spXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmRlc3Ryb3kodGhpc1trU29ja2V0XS5vbignY2xvc2UnLCBjYWxsYmFjayksIGVycilcbiAgICAgIH1cblxuICAgICAgcmVzdW1lKHRoaXMpXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvbkh0dHAyU2Vzc2lvbkVycm9yIChlcnIpIHtcbiAgYXNzZXJ0KGVyci5jb2RlICE9PSAnRVJSX1RMU19DRVJUX0FMVE5BTUVfSU5WQUxJRCcpXG5cbiAgdGhpc1trU29ja2V0XVtrRXJyb3JdID0gZXJyXG5cbiAgb25FcnJvcih0aGlzW2tDbGllbnRdLCBlcnIpXG59XG5cbmZ1bmN0aW9uIG9uSHR0cDJGcmFtZUVycm9yICh0eXBlLCBjb2RlLCBpZCkge1xuICBjb25zdCBlcnIgPSBuZXcgSW5mb3JtYXRpb25hbEVycm9yKGBIVFRQLzI6IFwiZnJhbWVFcnJvclwiIHJlY2VpdmVkIC0gdHlwZSAke3R5cGV9LCBjb2RlICR7Y29kZX1gKVxuXG4gIGlmIChpZCA9PT0gMCkge1xuICAgIHRoaXNba1NvY2tldF1ba0Vycm9yXSA9IGVyclxuICAgIG9uRXJyb3IodGhpc1trQ2xpZW50XSwgZXJyKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uSHR0cDJTZXNzaW9uRW5kICgpIHtcbiAgdXRpbC5kZXN0cm95KHRoaXMsIG5ldyBTb2NrZXRFcnJvcignb3RoZXIgc2lkZSBjbG9zZWQnKSlcbiAgdXRpbC5kZXN0cm95KHRoaXNba1NvY2tldF0sIG5ldyBTb2NrZXRFcnJvcignb3RoZXIgc2lkZSBjbG9zZWQnKSlcbn1cblxuZnVuY3Rpb24gb25IVFRQMkdvQXdheSAoY29kZSkge1xuICBjb25zdCBjbGllbnQgPSB0aGlzW2tDbGllbnRdXG4gIGNvbnN0IGVyciA9IG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoYEhUVFAvMjogXCJHT0FXQVlcIiBmcmFtZSByZWNlaXZlZCB3aXRoIGNvZGUgJHtjb2RlfWApXG4gIGNsaWVudFtrU29ja2V0XSA9IG51bGxcbiAgY2xpZW50W2tIVFRQMlNlc3Npb25dID0gbnVsbFxuXG4gIGlmIChjbGllbnQuZGVzdHJveWVkKSB7XG4gICAgYXNzZXJ0KHRoaXNba1BlbmRpbmddID09PSAwKVxuXG4gICAgLy8gRmFpbCBlbnRpcmUgcXVldWUuXG4gICAgY29uc3QgcmVxdWVzdHMgPSBjbGllbnRba1F1ZXVlXS5zcGxpY2UoY2xpZW50W2tSdW5uaW5nSWR4XSlcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcXVlc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdHNbaV1cbiAgICAgIGVycm9yUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBlcnIpXG4gICAgfVxuICB9IGVsc2UgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwKSB7XG4gICAgLy8gRmFpbCBoZWFkIG9mIHBpcGVsaW5lLlxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuICAgIGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF0rK10gPSBudWxsXG5cbiAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG4gIH1cblxuICBjbGllbnRba1BlbmRpbmdJZHhdID0gY2xpZW50W2tSdW5uaW5nSWR4XVxuXG4gIGFzc2VydChjbGllbnRba1J1bm5pbmddID09PSAwKVxuXG4gIGNsaWVudC5lbWl0KCdkaXNjb25uZWN0JyxcbiAgICBjbGllbnRba1VybF0sXG4gICAgW2NsaWVudF0sXG4gICAgZXJyXG4gIClcblxuICByZXN1bWUoY2xpZW50KVxufVxuXG5jb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2xsaHR0cC9jb25zdGFudHMnKVxuY29uc3QgY3JlYXRlUmVkaXJlY3RJbnRlcmNlcHRvciA9IHJlcXVpcmUoJy4vaW50ZXJjZXB0b3IvcmVkaXJlY3RJbnRlcmNlcHRvcicpXG5jb25zdCBFTVBUWV9CVUYgPSBCdWZmZXIuYWxsb2MoMClcblxuYXN5bmMgZnVuY3Rpb24gbGF6eWxsaHR0cCAoKSB7XG4gIGNvbnN0IGxsaHR0cFdhc21EYXRhID0gcHJvY2Vzcy5lbnYuSkVTVF9XT1JLRVJfSUQgPyByZXF1aXJlKCcuL2xsaHR0cC9sbGh0dHAtd2FzbS5qcycpIDogdW5kZWZpbmVkXG5cbiAgbGV0IG1vZFxuICB0cnkge1xuICAgIG1vZCA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQnVmZmVyLmZyb20ocmVxdWlyZSgnLi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcycpLCAnYmFzZTY0JykpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgLy8gV2UgY291bGQgY2hlY2sgaWYgdGhlIGVycm9yIHdhcyBjYXVzZWQgYnkgdGhlIHNpbWQgb3B0aW9uIG5vdFxuICAgIC8vIGJlaW5nIGVuYWJsZWQsIGJ1dCB0aGUgb2NjdXJyaW5nIG9mIHRoaXMgb3RoZXIgZXJyb3JcbiAgICAvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9lbXNjcmlwdGVuLWNvcmUvZW1zY3JpcHRlbi9pc3N1ZXMvMTE0OTVcbiAgICAvLyBnb3QgbWUgdG8gcmVtb3ZlIHRoYXQgY2hlY2sgdG8gYXZvaWQgYnJlYWtpbmcgTm9kZSAxMi5cbiAgICBtb2QgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKEJ1ZmZlci5mcm9tKGxsaHR0cFdhc21EYXRhIHx8IHJlcXVpcmUoJy4vbGxodHRwL2xsaHR0cC13YXNtLmpzJyksICdiYXNlNjQnKSlcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShtb2QsIHtcbiAgICBlbnY6IHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXG4gICAgICB3YXNtX29uX3VybDogKHAsIGF0LCBsZW4pID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0sXG4gICAgICB3YXNtX29uX3N0YXR1czogKHAsIGF0LCBsZW4pID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN1cnJlbnRQYXJzZXIucHRyLCBwKVxuICAgICAgICBjb25zdCBzdGFydCA9IGF0IC0gY3VycmVudEJ1ZmZlclB0ciArIGN1cnJlbnRCdWZmZXJSZWYuYnl0ZU9mZnNldFxuICAgICAgICByZXR1cm4gY3VycmVudFBhcnNlci5vblN0YXR1cyhuZXcgRmFzdEJ1ZmZlcihjdXJyZW50QnVmZmVyUmVmLmJ1ZmZlciwgc3RhcnQsIGxlbikpIHx8IDBcbiAgICAgIH0sXG4gICAgICB3YXNtX29uX21lc3NhZ2VfYmVnaW46IChwKSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50UGFyc2VyLnB0ciwgcClcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJzZXIub25NZXNzYWdlQmVnaW4oKSB8fCAwXG4gICAgICB9LFxuICAgICAgd2FzbV9vbl9oZWFkZXJfZmllbGQ6IChwLCBhdCwgbGVuKSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50UGFyc2VyLnB0ciwgcClcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBhdCAtIGN1cnJlbnRCdWZmZXJQdHIgKyBjdXJyZW50QnVmZmVyUmVmLmJ5dGVPZmZzZXRcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJzZXIub25IZWFkZXJGaWVsZChuZXcgRmFzdEJ1ZmZlcihjdXJyZW50QnVmZmVyUmVmLmJ1ZmZlciwgc3RhcnQsIGxlbikpIHx8IDBcbiAgICAgIH0sXG4gICAgICB3YXNtX29uX2hlYWRlcl92YWx1ZTogKHAsIGF0LCBsZW4pID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN1cnJlbnRQYXJzZXIucHRyLCBwKVxuICAgICAgICBjb25zdCBzdGFydCA9IGF0IC0gY3VycmVudEJ1ZmZlclB0ciArIGN1cnJlbnRCdWZmZXJSZWYuYnl0ZU9mZnNldFxuICAgICAgICByZXR1cm4gY3VycmVudFBhcnNlci5vbkhlYWRlclZhbHVlKG5ldyBGYXN0QnVmZmVyKGN1cnJlbnRCdWZmZXJSZWYuYnVmZmVyLCBzdGFydCwgbGVuKSkgfHwgMFxuICAgICAgfSxcbiAgICAgIHdhc21fb25faGVhZGVyc19jb21wbGV0ZTogKHAsIHN0YXR1c0NvZGUsIHVwZ3JhZGUsIHNob3VsZEtlZXBBbGl2ZSkgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3VycmVudFBhcnNlci5wdHIsIHApXG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyc2VyLm9uSGVhZGVyc0NvbXBsZXRlKHN0YXR1c0NvZGUsIEJvb2xlYW4odXBncmFkZSksIEJvb2xlYW4oc2hvdWxkS2VlcEFsaXZlKSkgfHwgMFxuICAgICAgfSxcbiAgICAgIHdhc21fb25fYm9keTogKHAsIGF0LCBsZW4pID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN1cnJlbnRQYXJzZXIucHRyLCBwKVxuICAgICAgICBjb25zdCBzdGFydCA9IGF0IC0gY3VycmVudEJ1ZmZlclB0ciArIGN1cnJlbnRCdWZmZXJSZWYuYnl0ZU9mZnNldFxuICAgICAgICByZXR1cm4gY3VycmVudFBhcnNlci5vbkJvZHkobmV3IEZhc3RCdWZmZXIoY3VycmVudEJ1ZmZlclJlZi5idWZmZXIsIHN0YXJ0LCBsZW4pKSB8fCAwXG4gICAgICB9LFxuICAgICAgd2FzbV9vbl9tZXNzYWdlX2NvbXBsZXRlOiAocCkgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3VycmVudFBhcnNlci5wdHIsIHApXG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyc2VyLm9uTWVzc2FnZUNvbXBsZXRlKCkgfHwgMFxuICAgICAgfVxuXG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIGNhbWVsY2FzZSAqL1xuICAgIH1cbiAgfSlcbn1cblxubGV0IGxsaHR0cEluc3RhbmNlID0gbnVsbFxubGV0IGxsaHR0cFByb21pc2UgPSBsYXp5bGxodHRwKClcbmxsaHR0cFByb21pc2UuY2F0Y2goKVxuXG5sZXQgY3VycmVudFBhcnNlciA9IG51bGxcbmxldCBjdXJyZW50QnVmZmVyUmVmID0gbnVsbFxubGV0IGN1cnJlbnRCdWZmZXJTaXplID0gMFxubGV0IGN1cnJlbnRCdWZmZXJQdHIgPSBudWxsXG5cbmNvbnN0IFRJTUVPVVRfSEVBREVSUyA9IDFcbmNvbnN0IFRJTUVPVVRfQk9EWSA9IDJcbmNvbnN0IFRJTUVPVVRfSURMRSA9IDNcblxuY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IgKGNsaWVudCwgc29ja2V0LCB7IGV4cG9ydHMgfSkge1xuICAgIGFzc2VydChOdW1iZXIuaXNGaW5pdGUoY2xpZW50W2tNYXhIZWFkZXJzU2l6ZV0pICYmIGNsaWVudFtrTWF4SGVhZGVyc1NpemVdID4gMClcblxuICAgIHRoaXMubGxodHRwID0gZXhwb3J0c1xuICAgIHRoaXMucHRyID0gdGhpcy5sbGh0dHAubGxodHRwX2FsbG9jKGNvbnN0YW50cy5UWVBFLlJFU1BPTlNFKVxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50XG4gICAgdGhpcy5zb2NrZXQgPSBzb2NrZXRcbiAgICB0aGlzLnRpbWVvdXQgPSBudWxsXG4gICAgdGhpcy50aW1lb3V0VmFsdWUgPSBudWxsXG4gICAgdGhpcy50aW1lb3V0VHlwZSA9IG51bGxcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBudWxsXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJydcbiAgICB0aGlzLnVwZ3JhZGUgPSBmYWxzZVxuICAgIHRoaXMuaGVhZGVycyA9IFtdXG4gICAgdGhpcy5oZWFkZXJzU2l6ZSA9IDBcbiAgICB0aGlzLmhlYWRlcnNNYXhTaXplID0gY2xpZW50W2tNYXhIZWFkZXJzU2l6ZV1cbiAgICB0aGlzLnNob3VsZEtlZXBBbGl2ZSA9IGZhbHNlXG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZVxuICAgIHRoaXMucmVzdW1lID0gdGhpcy5yZXN1bWUuYmluZCh0aGlzKVxuXG4gICAgdGhpcy5ieXRlc1JlYWQgPSAwXG5cbiAgICB0aGlzLmtlZXBBbGl2ZSA9ICcnXG4gICAgdGhpcy5jb250ZW50TGVuZ3RoID0gJydcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSAnJ1xuICAgIHRoaXMubWF4UmVzcG9uc2VTaXplID0gY2xpZW50W2tNYXhSZXNwb25zZVNpemVdXG4gIH1cblxuICBzZXRUaW1lb3V0ICh2YWx1ZSwgdHlwZSkge1xuICAgIHRoaXMudGltZW91dFR5cGUgPSB0eXBlXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnRpbWVvdXRWYWx1ZSkge1xuICAgICAgdGltZXJzLmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZXJzLnNldFRpbWVvdXQob25QYXJzZXJUaW1lb3V0LCB2YWx1ZSwgdGhpcylcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2U6IG9ubHkgZm9yIGplc3RcbiAgICAgICAgaWYgKHRoaXMudGltZW91dC51bnJlZikge1xuICAgICAgICAgIHRoaXMudGltZW91dC51bnJlZigpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGltZW91dCA9IG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMudGltZW91dFZhbHVlID0gdmFsdWVcbiAgICB9IGVsc2UgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2U6IG9ubHkgZm9yIGplc3RcbiAgICAgIGlmICh0aGlzLnRpbWVvdXQucmVmcmVzaCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQucmVmcmVzaCgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzdW1lICgpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQuZGVzdHJveWVkIHx8ICF0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXNzZXJ0KHRoaXMucHRyICE9IG51bGwpXG4gICAgYXNzZXJ0KGN1cnJlbnRQYXJzZXIgPT0gbnVsbClcblxuICAgIHRoaXMubGxodHRwLmxsaHR0cF9yZXN1bWUodGhpcy5wdHIpXG5cbiAgICBhc3NlcnQodGhpcy50aW1lb3V0VHlwZSA9PT0gVElNRU9VVF9CT0RZKVxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBvbmx5IGZvciBqZXN0XG4gICAgICBpZiAodGhpcy50aW1lb3V0LnJlZnJlc2gpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0LnJlZnJlc2goKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGF1c2VkID0gZmFsc2VcbiAgICB0aGlzLmV4ZWN1dGUodGhpcy5zb2NrZXQucmVhZCgpIHx8IEVNUFRZX0JVRikgLy8gRmx1c2ggcGFyc2VyLlxuICAgIHRoaXMucmVhZE1vcmUoKVxuICB9XG5cbiAgcmVhZE1vcmUgKCkge1xuICAgIHdoaWxlICghdGhpcy5wYXVzZWQgJiYgdGhpcy5wdHIpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gdGhpcy5zb2NrZXQucmVhZCgpXG4gICAgICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXhlY3V0ZShjaHVuaylcbiAgICB9XG4gIH1cblxuICBleGVjdXRlIChkYXRhKSB7XG4gICAgYXNzZXJ0KHRoaXMucHRyICE9IG51bGwpXG4gICAgYXNzZXJ0KGN1cnJlbnRQYXJzZXIgPT0gbnVsbClcbiAgICBhc3NlcnQoIXRoaXMucGF1c2VkKVxuXG4gICAgY29uc3QgeyBzb2NrZXQsIGxsaHR0cCB9ID0gdGhpc1xuXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gY3VycmVudEJ1ZmZlclNpemUpIHtcbiAgICAgIGlmIChjdXJyZW50QnVmZmVyUHRyKSB7XG4gICAgICAgIGxsaHR0cC5mcmVlKGN1cnJlbnRCdWZmZXJQdHIpXG4gICAgICB9XG4gICAgICBjdXJyZW50QnVmZmVyU2l6ZSA9IE1hdGguY2VpbChkYXRhLmxlbmd0aCAvIDQwOTYpICogNDA5NlxuICAgICAgY3VycmVudEJ1ZmZlclB0ciA9IGxsaHR0cC5tYWxsb2MoY3VycmVudEJ1ZmZlclNpemUpXG4gICAgfVxuXG4gICAgbmV3IFVpbnQ4QXJyYXkobGxodHRwLm1lbW9yeS5idWZmZXIsIGN1cnJlbnRCdWZmZXJQdHIsIGN1cnJlbnRCdWZmZXJTaXplKS5zZXQoZGF0YSlcblxuICAgIC8vIENhbGwgYGV4ZWN1dGVgIG9uIHRoZSB3YXNtIHBhcnNlci5cbiAgICAvLyBXZSBwYXNzIHRoZSBgbGxodHRwX3BhcnNlcmAgcG9pbnRlciBhZGRyZXNzLCB0aGUgcG9pbnRlciBhZGRyZXNzIG9mIGJ1ZmZlciB2aWV3IGRhdGEsXG4gICAgLy8gYW5kIGZpbmFsbHkgdGhlIGxlbmd0aCBvZiBieXRlcyB0byBwYXJzZS5cbiAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGVycm9yIGNvZGUgb3IgYGNvbnN0YW50cy5FUlJPUi5PS2AuXG4gICAgdHJ5IHtcbiAgICAgIGxldCByZXRcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY3VycmVudEJ1ZmZlclJlZiA9IGRhdGFcbiAgICAgICAgY3VycmVudFBhcnNlciA9IHRoaXNcbiAgICAgICAgcmV0ID0gbGxodHRwLmxsaHR0cF9leGVjdXRlKHRoaXMucHRyLCBjdXJyZW50QnVmZmVyUHRyLCBkYXRhLmxlbmd0aClcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2F0Y2ggKi9cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIG1ha2UgYSB0ZXN0IGNhc2UgZm9yICovXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY3VycmVudFBhcnNlciA9IG51bGxcbiAgICAgICAgY3VycmVudEJ1ZmZlclJlZiA9IG51bGxcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2Zmc2V0ID0gbGxodHRwLmxsaHR0cF9nZXRfZXJyb3JfcG9zKHRoaXMucHRyKSAtIGN1cnJlbnRCdWZmZXJQdHJcblxuICAgICAgaWYgKHJldCA9PT0gY29uc3RhbnRzLkVSUk9SLlBBVVNFRF9VUEdSQURFKSB7XG4gICAgICAgIHRoaXMub25VcGdyYWRlKGRhdGEuc2xpY2Uob2Zmc2V0KSlcbiAgICAgIH0gZWxzZSBpZiAocmV0ID09PSBjb25zdGFudHMuRVJST1IuUEFVU0VEKSB7XG4gICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZVxuICAgICAgICBzb2NrZXQudW5zaGlmdChkYXRhLnNsaWNlKG9mZnNldCkpXG4gICAgICB9IGVsc2UgaWYgKHJldCAhPT0gY29uc3RhbnRzLkVSUk9SLk9LKSB7XG4gICAgICAgIGNvbnN0IHB0ciA9IGxsaHR0cC5sbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbih0aGlzLnB0cilcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJ1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogZGlmZmljdWx0IHRvIG1ha2UgYSB0ZXN0IGNhc2UgZm9yICovXG4gICAgICAgIGlmIChwdHIpIHtcbiAgICAgICAgICBjb25zdCBsZW4gPSBuZXcgVWludDhBcnJheShsbGh0dHAubWVtb3J5LmJ1ZmZlciwgcHRyKS5pbmRleE9mKDApXG4gICAgICAgICAgbWVzc2FnZSA9XG4gICAgICAgICAgICAnUmVzcG9uc2UgZG9lcyBub3QgbWF0Y2ggdGhlIEhUVFAvMS4xIHByb3RvY29sICgnICtcbiAgICAgICAgICAgIEJ1ZmZlci5mcm9tKGxsaHR0cC5tZW1vcnkuYnVmZmVyLCBwdHIsIGxlbikudG9TdHJpbmcoKSArXG4gICAgICAgICAgICAnKSdcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgSFRUUFBhcnNlckVycm9yKG1lc3NhZ2UsIGNvbnN0YW50cy5FUlJPUltyZXRdLCBkYXRhLnNsaWNlKG9mZnNldCkpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBlcnIpXG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucHRyICE9IG51bGwpXG4gICAgYXNzZXJ0KGN1cnJlbnRQYXJzZXIgPT0gbnVsbClcblxuICAgIHRoaXMubGxodHRwLmxsaHR0cF9mcmVlKHRoaXMucHRyKVxuICAgIHRoaXMucHRyID0gbnVsbFxuXG4gICAgdGltZXJzLmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpXG4gICAgdGhpcy50aW1lb3V0ID0gbnVsbFxuICAgIHRoaXMudGltZW91dFZhbHVlID0gbnVsbFxuICAgIHRoaXMudGltZW91dFR5cGUgPSBudWxsXG5cbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlXG4gIH1cblxuICBvblN0YXR1cyAoYnVmKSB7XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gYnVmLnRvU3RyaW5nKClcbiAgfVxuXG4gIG9uTWVzc2FnZUJlZ2luICgpIHtcbiAgICBjb25zdCB7IHNvY2tldCwgY2xpZW50IH0gPSB0aGlzXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIG1ha2UgYSB0ZXN0IGNhc2UgZm9yICovXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICB9XG5cbiAgb25IZWFkZXJGaWVsZCAoYnVmKSB7XG4gICAgY29uc3QgbGVuID0gdGhpcy5oZWFkZXJzLmxlbmd0aFxuXG4gICAgaWYgKChsZW4gJiAxKSA9PT0gMCkge1xuICAgICAgdGhpcy5oZWFkZXJzLnB1c2goYnVmKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWRlcnNbbGVuIC0gMV0gPSBCdWZmZXIuY29uY2F0KFt0aGlzLmhlYWRlcnNbbGVuIC0gMV0sIGJ1Zl0pXG4gICAgfVxuXG4gICAgdGhpcy50cmFja0hlYWRlcihidWYubGVuZ3RoKVxuICB9XG5cbiAgb25IZWFkZXJWYWx1ZSAoYnVmKSB7XG4gICAgbGV0IGxlbiA9IHRoaXMuaGVhZGVycy5sZW5ndGhcblxuICAgIGlmICgobGVuICYgMSkgPT09IDEpIHtcbiAgICAgIHRoaXMuaGVhZGVycy5wdXNoKGJ1ZilcbiAgICAgIGxlbiArPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhZGVyc1tsZW4gLSAxXSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuaGVhZGVyc1tsZW4gLSAxXSwgYnVmXSlcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSB0aGlzLmhlYWRlcnNbbGVuIC0gMl1cbiAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMTAgJiYga2V5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2tlZXAtYWxpdmUnKSB7XG4gICAgICB0aGlzLmtlZXBBbGl2ZSArPSBidWYudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA9PT0gMTAgJiYga2V5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2Nvbm5lY3Rpb24nKSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24gKz0gYnVmLnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPT09IDE0ICYmIGtleS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LWxlbmd0aCcpIHtcbiAgICAgIHRoaXMuY29udGVudExlbmd0aCArPSBidWYudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIHRoaXMudHJhY2tIZWFkZXIoYnVmLmxlbmd0aClcbiAgfVxuXG4gIHRyYWNrSGVhZGVyIChsZW4pIHtcbiAgICB0aGlzLmhlYWRlcnNTaXplICs9IGxlblxuICAgIGlmICh0aGlzLmhlYWRlcnNTaXplID49IHRoaXMuaGVhZGVyc01heFNpemUpIHtcbiAgICAgIHV0aWwuZGVzdHJveSh0aGlzLnNvY2tldCwgbmV3IEhlYWRlcnNPdmVyZmxvd0Vycm9yKCkpXG4gICAgfVxuICB9XG5cbiAgb25VcGdyYWRlIChoZWFkKSB7XG4gICAgY29uc3QgeyB1cGdyYWRlLCBjbGllbnQsIHNvY2tldCwgaGVhZGVycywgc3RhdHVzQ29kZSB9ID0gdGhpc1xuXG4gICAgYXNzZXJ0KHVwZ3JhZGUpXG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cbiAgICBhc3NlcnQocmVxdWVzdClcblxuICAgIGFzc2VydCghc29ja2V0LmRlc3Ryb3llZClcbiAgICBhc3NlcnQoc29ja2V0ID09PSBjbGllbnRba1NvY2tldF0pXG4gICAgYXNzZXJ0KCF0aGlzLnBhdXNlZClcbiAgICBhc3NlcnQocmVxdWVzdC51cGdyYWRlIHx8IHJlcXVlc3QubWV0aG9kID09PSAnQ09OTkVDVCcpXG5cbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBudWxsXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJydcbiAgICB0aGlzLnNob3VsZEtlZXBBbGl2ZSA9IG51bGxcblxuICAgIGFzc2VydCh0aGlzLmhlYWRlcnMubGVuZ3RoICUgMiA9PT0gMClcbiAgICB0aGlzLmhlYWRlcnMgPSBbXVxuICAgIHRoaXMuaGVhZGVyc1NpemUgPSAwXG5cbiAgICBzb2NrZXQudW5zaGlmdChoZWFkKVxuXG4gICAgc29ja2V0W2tQYXJzZXJdLmRlc3Ryb3koKVxuICAgIHNvY2tldFtrUGFyc2VyXSA9IG51bGxcblxuICAgIHNvY2tldFtrQ2xpZW50XSA9IG51bGxcbiAgICBzb2NrZXRba0Vycm9yXSA9IG51bGxcbiAgICBzb2NrZXRcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvblNvY2tldEVycm9yKVxuICAgICAgLnJlbW92ZUxpc3RlbmVyKCdyZWFkYWJsZScsIG9uU29ja2V0UmVhZGFibGUpXG4gICAgICAucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uU29ja2V0RW5kKVxuICAgICAgLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uU29ja2V0Q2xvc2UpXG5cbiAgICBjbGllbnRba1NvY2tldF0gPSBudWxsXG4gICAgY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XSsrXSA9IG51bGxcbiAgICBjbGllbnQuZW1pdCgnZGlzY29ubmVjdCcsIGNsaWVudFtrVXJsXSwgW2NsaWVudF0sIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ3VwZ3JhZGUnKSlcblxuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0Lm9uVXBncmFkZShzdGF0dXNDb2RlLCBoZWFkZXJzLCBzb2NrZXQpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBlcnIpXG4gICAgfVxuXG4gICAgcmVzdW1lKGNsaWVudClcbiAgfVxuXG4gIG9uSGVhZGVyc0NvbXBsZXRlIChzdGF0dXNDb2RlLCB1cGdyYWRlLCBzaG91bGRLZWVwQWxpdmUpIHtcbiAgICBjb25zdCB7IGNsaWVudCwgc29ja2V0LCBoZWFkZXJzLCBzdGF0dXNUZXh0IH0gPSB0aGlzXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIG1ha2UgYSB0ZXN0IGNhc2UgZm9yICovXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byBtYWtlIGEgdGVzdCBjYXNlIGZvciAqL1xuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgYXNzZXJ0KCF0aGlzLnVwZ3JhZGUpXG4gICAgYXNzZXJ0KHRoaXMuc3RhdHVzQ29kZSA8IDIwMClcblxuICAgIGlmIChzdGF0dXNDb2RlID09PSAxMDApIHtcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBTb2NrZXRFcnJvcignYmFkIHJlc3BvbnNlJywgdXRpbC5nZXRTb2NrZXRJbmZvKHNvY2tldCkpKVxuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgLyogdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgc2VydmVyIGlzIG1pc2JlaGF2aW5nICovXG4gICAgaWYgKHVwZ3JhZGUgJiYgIXJlcXVlc3QudXBncmFkZSkge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IFNvY2tldEVycm9yKCdiYWQgdXBncmFkZScsIHV0aWwuZ2V0U29ja2V0SW5mbyhzb2NrZXQpKSlcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0aGlzLnRpbWVvdXRUeXBlLCBUSU1FT1VUX0hFQURFUlMpXG5cbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlXG4gICAgdGhpcy5zaG91bGRLZWVwQWxpdmUgPSAoXG4gICAgICBzaG91bGRLZWVwQWxpdmUgfHxcbiAgICAgIC8vIE92ZXJyaWRlIGxsaHR0cCB2YWx1ZSB3aGljaCBkb2VzIG5vdCBhbGxvdyBrZWVwQWxpdmUgZm9yIEhFQUQuXG4gICAgICAocmVxdWVzdC5tZXRob2QgPT09ICdIRUFEJyAmJiAhc29ja2V0W2tSZXNldF0gJiYgdGhpcy5jb25uZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT09ICdrZWVwLWFsaXZlJylcbiAgICApXG5cbiAgICBpZiAodGhpcy5zdGF0dXNDb2RlID49IDIwMCkge1xuICAgICAgY29uc3QgYm9keVRpbWVvdXQgPSByZXF1ZXN0LmJvZHlUaW1lb3V0ICE9IG51bGxcbiAgICAgICAgPyByZXF1ZXN0LmJvZHlUaW1lb3V0XG4gICAgICAgIDogY2xpZW50W2tCb2R5VGltZW91dF1cbiAgICAgIHRoaXMuc2V0VGltZW91dChib2R5VGltZW91dCwgVElNRU9VVF9CT0RZKVxuICAgIH0gZWxzZSBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogb25seSBmb3IgamVzdFxuICAgICAgaWYgKHRoaXMudGltZW91dC5yZWZyZXNoKSB7XG4gICAgICAgIHRoaXMudGltZW91dC5yZWZyZXNoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgICAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPT09IDEpXG4gICAgICB0aGlzLnVwZ3JhZGUgPSB0cnVlXG4gICAgICByZXR1cm4gMlxuICAgIH1cblxuICAgIGlmICh1cGdyYWRlKSB7XG4gICAgICBhc3NlcnQoY2xpZW50W2tSdW5uaW5nXSA9PT0gMSlcbiAgICAgIHRoaXMudXBncmFkZSA9IHRydWVcbiAgICAgIHJldHVybiAyXG4gICAgfVxuXG4gICAgYXNzZXJ0KHRoaXMuaGVhZGVycy5sZW5ndGggJSAyID09PSAwKVxuICAgIHRoaXMuaGVhZGVycyA9IFtdXG4gICAgdGhpcy5oZWFkZXJzU2l6ZSA9IDBcblxuICAgIGlmICh0aGlzLnNob3VsZEtlZXBBbGl2ZSAmJiBjbGllbnRba1BpcGVsaW5pbmddKSB7XG4gICAgICBjb25zdCBrZWVwQWxpdmVUaW1lb3V0ID0gdGhpcy5rZWVwQWxpdmUgPyB1dGlsLnBhcnNlS2VlcEFsaXZlVGltZW91dCh0aGlzLmtlZXBBbGl2ZSkgOiBudWxsXG5cbiAgICAgIGlmIChrZWVwQWxpdmVUaW1lb3V0ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IE1hdGgubWluKFxuICAgICAgICAgIGtlZXBBbGl2ZVRpbWVvdXQgLSBjbGllbnRba0tlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGRdLFxuICAgICAgICAgIGNsaWVudFtrS2VlcEFsaXZlTWF4VGltZW91dF1cbiAgICAgICAgKVxuICAgICAgICBpZiAodGltZW91dCA8PSAwKSB7XG4gICAgICAgICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xpZW50W2tLZWVwQWxpdmVUaW1lb3V0VmFsdWVdID0gdGltZW91dFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGllbnRba0tlZXBBbGl2ZVRpbWVvdXRWYWx1ZV0gPSBjbGllbnRba0tlZXBBbGl2ZURlZmF1bHRUaW1lb3V0XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdG9wIG1vcmUgcmVxdWVzdHMgZnJvbSBiZWluZyBkaXNwYXRjaGVkLlxuICAgICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgcGF1c2UgPSByZXF1ZXN0Lm9uSGVhZGVycyhzdGF0dXNDb2RlLCBoZWFkZXJzLCB0aGlzLnJlc3VtZSwgc3RhdHVzVGV4dCkgPT09IGZhbHNlXG5cbiAgICBpZiAocmVxdWVzdC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09ICdIRUFEJykge1xuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzQ29kZSA8IDIwMCkge1xuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBpZiAoc29ja2V0W2tCbG9ja2luZ10pIHtcbiAgICAgIHNvY2tldFtrQmxvY2tpbmddID0gZmFsc2VcbiAgICAgIHJlc3VtZShjbGllbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdXNlID8gY29uc3RhbnRzLkVSUk9SLlBBVVNFRCA6IDBcbiAgfVxuXG4gIG9uQm9keSAoYnVmKSB7XG4gICAgY29uc3QgeyBjbGllbnQsIHNvY2tldCwgc3RhdHVzQ29kZSwgbWF4UmVzcG9uc2VTaXplIH0gPSB0aGlzXG5cbiAgICBpZiAoc29ja2V0LmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF1dXG4gICAgYXNzZXJ0KHJlcXVlc3QpXG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcy50aW1lb3V0VHlwZSwgVElNRU9VVF9CT0RZKVxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBvbmx5IGZvciBqZXN0XG4gICAgICBpZiAodGhpcy50aW1lb3V0LnJlZnJlc2gpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0LnJlZnJlc2goKVxuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydChzdGF0dXNDb2RlID49IDIwMClcblxuICAgIGlmIChtYXhSZXNwb25zZVNpemUgPiAtMSAmJiB0aGlzLmJ5dGVzUmVhZCArIGJ1Zi5sZW5ndGggPiBtYXhSZXNwb25zZVNpemUpIHtcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBSZXNwb25zZUV4Y2VlZGVkTWF4U2l6ZUVycm9yKCkpXG4gICAgICByZXR1cm4gLTFcbiAgICB9XG5cbiAgICB0aGlzLmJ5dGVzUmVhZCArPSBidWYubGVuZ3RoXG5cbiAgICBpZiAocmVxdWVzdC5vbkRhdGEoYnVmKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBjb25zdGFudHMuRVJST1IuUEFVU0VEXG4gICAgfVxuICB9XG5cbiAgb25NZXNzYWdlQ29tcGxldGUgKCkge1xuICAgIGNvbnN0IHsgY2xpZW50LCBzb2NrZXQsIHN0YXR1c0NvZGUsIHVwZ3JhZGUsIGhlYWRlcnMsIGNvbnRlbnRMZW5ndGgsIGJ5dGVzUmVhZCwgc2hvdWxkS2VlcEFsaXZlIH0gPSB0aGlzXG5cbiAgICBpZiAoc29ja2V0LmRlc3Ryb3llZCAmJiAoIXN0YXR1c0NvZGUgfHwgc2hvdWxkS2VlcEFsaXZlKSkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgaWYgKHVwZ3JhZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuICAgIGFzc2VydChyZXF1ZXN0KVxuXG4gICAgYXNzZXJ0KHN0YXR1c0NvZGUgPj0gMTAwKVxuXG4gICAgdGhpcy5zdGF0dXNDb2RlID0gbnVsbFxuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICcnXG4gICAgdGhpcy5ieXRlc1JlYWQgPSAwXG4gICAgdGhpcy5jb250ZW50TGVuZ3RoID0gJydcbiAgICB0aGlzLmtlZXBBbGl2ZSA9ICcnXG4gICAgdGhpcy5jb25uZWN0aW9uID0gJydcblxuICAgIGFzc2VydCh0aGlzLmhlYWRlcnMubGVuZ3RoICUgMiA9PT0gMClcbiAgICB0aGlzLmhlYWRlcnMgPSBbXVxuICAgIHRoaXMuaGVhZGVyc1NpemUgPSAwXG5cbiAgICBpZiAoc3RhdHVzQ29kZSA8IDIwMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNob3VsZCBiZSBoYW5kbGVkIGJ5IGxsaHR0cD8gKi9cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJyAmJiBjb250ZW50TGVuZ3RoICYmIGJ5dGVzUmVhZCAhPT0gcGFyc2VJbnQoY29udGVudExlbmd0aCwgMTApKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgUmVzcG9uc2VDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpKVxuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgcmVxdWVzdC5vbkNvbXBsZXRlKGhlYWRlcnMpXG5cbiAgICBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdKytdID0gbnVsbFxuXG4gICAgaWYgKHNvY2tldFtrV3JpdGluZ10pIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjbGllbnRba1J1bm5pbmddLCAwKVxuICAgICAgLy8gUmVzcG9uc2UgY29tcGxldGVkIGJlZm9yZSByZXF1ZXN0LlxuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IEluZm9ybWF0aW9uYWxFcnJvcigncmVzZXQnKSlcbiAgICAgIHJldHVybiBjb25zdGFudHMuRVJST1IuUEFVU0VEXG4gICAgfSBlbHNlIGlmICghc2hvdWxkS2VlcEFsaXZlKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgSW5mb3JtYXRpb25hbEVycm9yKCdyZXNldCcpKVxuICAgICAgcmV0dXJuIGNvbnN0YW50cy5FUlJPUi5QQVVTRURcbiAgICB9IGVsc2UgaWYgKHNvY2tldFtrUmVzZXRdICYmIGNsaWVudFtrUnVubmluZ10gPT09IDApIHtcbiAgICAgIC8vIERlc3Ryb3kgc29ja2V0IG9uY2UgYWxsIHJlcXVlc3RzIGhhdmUgY29tcGxldGVkLlxuICAgICAgLy8gVGhlIHJlcXVlc3QgYXQgdGhlIHRhaWwgb2YgdGhlIHBpcGVsaW5lIGlzIHRoZSBvbmVcbiAgICAgIC8vIHRoYXQgcmVxdWVzdGVkIHJlc2V0IGFuZCBubyBmdXJ0aGVyIHJlcXVlc3RzIHNob3VsZFxuICAgICAgLy8gaGF2ZSBiZWVuIHF1ZXVlZCBzaW5jZSB0aGVuLlxuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IEluZm9ybWF0aW9uYWxFcnJvcigncmVzZXQnKSlcbiAgICAgIHJldHVybiBjb25zdGFudHMuRVJST1IuUEFVU0VEXG4gICAgfSBlbHNlIGlmIChjbGllbnRba1BpcGVsaW5pbmddID09PSAxKSB7XG4gICAgICAvLyBXZSBtdXN0IHdhaXQgYSBmdWxsIGV2ZW50IGxvb3AgY3ljbGUgdG8gcmV1c2UgdGhpcyBzb2NrZXQgdG8gbWFrZSBzdXJlXG4gICAgICAvLyB0aGF0IG5vbi1zcGVjIGNvbXBsaWFudCBzZXJ2ZXJzIGFyZSBub3QgY2xvc2luZyB0aGUgY29ubmVjdGlvbiBldmVuIGlmIHRoZXlcbiAgICAgIC8vIHNhaWQgdGhleSB3b24ndC5cbiAgICAgIHNldEltbWVkaWF0ZShyZXN1bWUsIGNsaWVudClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdW1lKGNsaWVudClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb25QYXJzZXJUaW1lb3V0IChwYXJzZXIpIHtcbiAgY29uc3QgeyBzb2NrZXQsIHRpbWVvdXRUeXBlLCBjbGllbnQgfSA9IHBhcnNlclxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0aW1lb3V0VHlwZSA9PT0gVElNRU9VVF9IRUFERVJTKSB7XG4gICAgaWYgKCFzb2NrZXRba1dyaXRpbmddIHx8IHNvY2tldC53cml0YWJsZU5lZWREcmFpbiB8fCBjbGllbnRba1J1bm5pbmddID4gMSkge1xuICAgICAgYXNzZXJ0KCFwYXJzZXIucGF1c2VkLCAnY2Fubm90IGJlIHBhdXNlZCB3aGlsZSB3YWl0aW5nIGZvciBoZWFkZXJzJylcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBIZWFkZXJzVGltZW91dEVycm9yKCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHRpbWVvdXRUeXBlID09PSBUSU1FT1VUX0JPRFkpIHtcbiAgICBpZiAoIXBhcnNlci5wYXVzZWQpIHtcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBCb2R5VGltZW91dEVycm9yKCkpXG4gICAgfVxuICB9IGVsc2UgaWYgKHRpbWVvdXRUeXBlID09PSBUSU1FT1VUX0lETEUpIHtcbiAgICBhc3NlcnQoY2xpZW50W2tSdW5uaW5nXSA9PT0gMCAmJiBjbGllbnRba0tlZXBBbGl2ZVRpbWVvdXRWYWx1ZV0pXG4gICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IEluZm9ybWF0aW9uYWxFcnJvcignc29ja2V0IGlkbGUgdGltZW91dCcpKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uU29ja2V0UmVhZGFibGUgKCkge1xuICBjb25zdCB7IFtrUGFyc2VyXTogcGFyc2VyIH0gPSB0aGlzXG4gIGlmIChwYXJzZXIpIHtcbiAgICBwYXJzZXIucmVhZE1vcmUoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uU29ja2V0RXJyb3IgKGVycikge1xuICBjb25zdCB7IFtrQ2xpZW50XTogY2xpZW50LCBba1BhcnNlcl06IHBhcnNlciB9ID0gdGhpc1xuXG4gIGFzc2VydChlcnIuY29kZSAhPT0gJ0VSUl9UTFNfQ0VSVF9BTFROQU1FX0lOVkFMSUQnKVxuXG4gIGlmIChjbGllbnRba0hUVFBDb25uVmVyc2lvbl0gIT09ICdoMicpIHtcbiAgICAvLyBPbiBNYWMgT1MsIHdlIGdldCBhbiBFQ09OTlJFU0VUIGV2ZW4gaWYgdGhlcmUgaXMgYSBmdWxsIGJvZHkgdG8gYmUgZm9yd2FyZGVkXG4gICAgLy8gdG8gdGhlIHVzZXIuXG4gICAgaWYgKGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcgJiYgcGFyc2VyLnN0YXR1c0NvZGUgJiYgIXBhcnNlci5zaG91bGRLZWVwQWxpdmUpIHtcbiAgICAgIC8vIFdlIHRyZWF0IGFsbCBpbmNvbWluZyBkYXRhIHNvIGZvciBhcyBhIHZhbGlkIHJlc3BvbnNlLlxuICAgICAgcGFyc2VyLm9uTWVzc2FnZUNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIHRoaXNba0Vycm9yXSA9IGVyclxuXG4gIG9uRXJyb3IodGhpc1trQ2xpZW50XSwgZXJyKVxufVxuXG5mdW5jdGlvbiBvbkVycm9yIChjbGllbnQsIGVycikge1xuICBpZiAoXG4gICAgY2xpZW50W2tSdW5uaW5nXSA9PT0gMCAmJlxuICAgIGVyci5jb2RlICE9PSAnVU5EX0VSUl9JTkZPJyAmJlxuICAgIGVyci5jb2RlICE9PSAnVU5EX0VSUl9TT0NLRVQnXG4gICkge1xuICAgIC8vIEVycm9yIGlzIG5vdCBjYXVzZWQgYnkgcnVubmluZyByZXF1ZXN0IGFuZCBub3QgYSByZWNvdmVyYWJsZVxuICAgIC8vIHNvY2tldCBlcnJvci5cblxuICAgIGFzc2VydChjbGllbnRba1BlbmRpbmdJZHhdID09PSBjbGllbnRba1J1bm5pbmdJZHhdKVxuXG4gICAgY29uc3QgcmVxdWVzdHMgPSBjbGllbnRba1F1ZXVlXS5zcGxpY2UoY2xpZW50W2tSdW5uaW5nSWR4XSlcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcXVlc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdHNbaV1cbiAgICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIGVycilcbiAgICB9XG4gICAgYXNzZXJ0KGNsaWVudFtrU2l6ZV0gPT09IDApXG4gIH1cbn1cblxuZnVuY3Rpb24gb25Tb2NrZXRFbmQgKCkge1xuICBjb25zdCB7IFtrUGFyc2VyXTogcGFyc2VyLCBba0NsaWVudF06IGNsaWVudCB9ID0gdGhpc1xuXG4gIGlmIChjbGllbnRba0hUVFBDb25uVmVyc2lvbl0gIT09ICdoMicpIHtcbiAgICBpZiAocGFyc2VyLnN0YXR1c0NvZGUgJiYgIXBhcnNlci5zaG91bGRLZWVwQWxpdmUpIHtcbiAgICAgIC8vIFdlIHRyZWF0IGFsbCBpbmNvbWluZyBkYXRhIHNvIGZhciBhcyBhIHZhbGlkIHJlc3BvbnNlLlxuICAgICAgcGFyc2VyLm9uTWVzc2FnZUNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIHV0aWwuZGVzdHJveSh0aGlzLCBuZXcgU29ja2V0RXJyb3IoJ290aGVyIHNpZGUgY2xvc2VkJywgdXRpbC5nZXRTb2NrZXRJbmZvKHRoaXMpKSlcbn1cblxuZnVuY3Rpb24gb25Tb2NrZXRDbG9zZSAoKSB7XG4gIGNvbnN0IHsgW2tDbGllbnRdOiBjbGllbnQsIFtrUGFyc2VyXTogcGFyc2VyIH0gPSB0aGlzXG5cbiAgaWYgKGNsaWVudFtrSFRUUENvbm5WZXJzaW9uXSA9PT0gJ2gxJyAmJiBwYXJzZXIpIHtcbiAgICBpZiAoIXRoaXNba0Vycm9yXSAmJiBwYXJzZXIuc3RhdHVzQ29kZSAmJiAhcGFyc2VyLnNob3VsZEtlZXBBbGl2ZSkge1xuICAgICAgLy8gV2UgdHJlYXQgYWxsIGluY29taW5nIGRhdGEgc28gZmFyIGFzIGEgdmFsaWQgcmVzcG9uc2UuXG4gICAgICBwYXJzZXIub25NZXNzYWdlQ29tcGxldGUoKVxuICAgIH1cblxuICAgIHRoaXNba1BhcnNlcl0uZGVzdHJveSgpXG4gICAgdGhpc1trUGFyc2VyXSA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGVyciA9IHRoaXNba0Vycm9yXSB8fCBuZXcgU29ja2V0RXJyb3IoJ2Nsb3NlZCcsIHV0aWwuZ2V0U29ja2V0SW5mbyh0aGlzKSlcblxuICBjbGllbnRba1NvY2tldF0gPSBudWxsXG5cbiAgaWYgKGNsaWVudC5kZXN0cm95ZWQpIHtcbiAgICBhc3NlcnQoY2xpZW50W2tQZW5kaW5nXSA9PT0gMClcblxuICAgIC8vIEZhaWwgZW50aXJlIHF1ZXVlLlxuICAgIGNvbnN0IHJlcXVlc3RzID0gY2xpZW50W2tRdWV1ZV0uc3BsaWNlKGNsaWVudFtrUnVubmluZ0lkeF0pXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RzW2ldXG4gICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG4gICAgfVxuICB9IGVsc2UgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwICYmIGVyci5jb2RlICE9PSAnVU5EX0VSUl9JTkZPJykge1xuICAgIC8vIEZhaWwgaGVhZCBvZiBwaXBlbGluZS5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cbiAgICBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdKytdID0gbnVsbFxuXG4gICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuICB9XG5cbiAgY2xpZW50W2tQZW5kaW5nSWR4XSA9IGNsaWVudFtrUnVubmluZ0lkeF1cblxuICBhc3NlcnQoY2xpZW50W2tSdW5uaW5nXSA9PT0gMClcblxuICBjbGllbnQuZW1pdCgnZGlzY29ubmVjdCcsIGNsaWVudFtrVXJsXSwgW2NsaWVudF0sIGVycilcblxuICByZXN1bWUoY2xpZW50KVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0IChjbGllbnQpIHtcbiAgYXNzZXJ0KCFjbGllbnRba0Nvbm5lY3RpbmddKVxuICBhc3NlcnQoIWNsaWVudFtrU29ja2V0XSlcblxuICBsZXQgeyBob3N0LCBob3N0bmFtZSwgcHJvdG9jb2wsIHBvcnQgfSA9IGNsaWVudFtrVXJsXVxuXG4gIC8vIFJlc29sdmUgaXB2NlxuICBpZiAoaG9zdG5hbWVbMF0gPT09ICdbJykge1xuICAgIGNvbnN0IGlkeCA9IGhvc3RuYW1lLmluZGV4T2YoJ10nKVxuXG4gICAgYXNzZXJ0KGlkeCAhPT0gLTEpXG4gICAgY29uc3QgaXAgPSBob3N0bmFtZS5zdWJzdHJpbmcoMSwgaWR4KVxuXG4gICAgYXNzZXJ0KG5ldC5pc0lQKGlwKSlcbiAgICBob3N0bmFtZSA9IGlwXG4gIH1cblxuICBjbGllbnRba0Nvbm5lY3RpbmddID0gdHJ1ZVxuXG4gIGlmIChjaGFubmVscy5iZWZvcmVDb25uZWN0Lmhhc1N1YnNjcmliZXJzKSB7XG4gICAgY2hhbm5lbHMuYmVmb3JlQ29ubmVjdC5wdWJsaXNoKHtcbiAgICAgIGNvbm5lY3RQYXJhbXM6IHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgIHByb3RvY29sLFxuICAgICAgICBwb3J0LFxuICAgICAgICBzZXJ2ZXJuYW1lOiBjbGllbnRba1NlcnZlck5hbWVdLFxuICAgICAgICBsb2NhbEFkZHJlc3M6IGNsaWVudFtrTG9jYWxBZGRyZXNzXVxuICAgICAgfSxcbiAgICAgIGNvbm5lY3RvcjogY2xpZW50W2tDb25uZWN0b3JdXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgc29ja2V0ID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY2xpZW50W2tDb25uZWN0b3JdKHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgIHByb3RvY29sLFxuICAgICAgICBwb3J0LFxuICAgICAgICBzZXJ2ZXJuYW1lOiBjbGllbnRba1NlcnZlck5hbWVdLFxuICAgICAgICBsb2NhbEFkZHJlc3M6IGNsaWVudFtrTG9jYWxBZGRyZXNzXVxuICAgICAgfSwgKGVyciwgc29ja2V0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoc29ja2V0KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBpZiAoY2xpZW50LmRlc3Ryb3llZCkge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldC5vbignZXJyb3InLCAoKSA9PiB7fSksIG5ldyBDbGllbnREZXN0cm95ZWRFcnJvcigpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY2xpZW50W2tDb25uZWN0aW5nXSA9IGZhbHNlXG5cbiAgICBhc3NlcnQoc29ja2V0KVxuXG4gICAgY29uc3QgaXNIMiA9IHNvY2tldC5hbHBuUHJvdG9jb2wgPT09ICdoMidcbiAgICBpZiAoaXNIMikge1xuICAgICAgaWYgKCFoMkV4cGVyaW1lbnRhbFdhcm5lZCkge1xuICAgICAgICBoMkV4cGVyaW1lbnRhbFdhcm5lZCA9IHRydWVcbiAgICAgICAgcHJvY2Vzcy5lbWl0V2FybmluZygnSDIgc3VwcG9ydCBpcyBleHBlcmltZW50YWwsIGV4cGVjdCB0aGVtIHRvIGNoYW5nZSBhdCBhbnkgdGltZS4nLCB7XG4gICAgICAgICAgY29kZTogJ1VORElDSS1IMidcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGh0dHAyLmNvbm5lY3QoY2xpZW50W2tVcmxdLCB7XG4gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb246ICgpID0+IHNvY2tldCxcbiAgICAgICAgcGVlck1heENvbmN1cnJlbnRTdHJlYW1zOiBjbGllbnRba0hUVFAyU2Vzc2lvblN0YXRlXS5tYXhDb25jdXJyZW50U3RyZWFtc1xuICAgICAgfSlcblxuICAgICAgY2xpZW50W2tIVFRQQ29ublZlcnNpb25dID0gJ2gyJ1xuICAgICAgc2Vzc2lvbltrQ2xpZW50XSA9IGNsaWVudFxuICAgICAgc2Vzc2lvbltrU29ja2V0XSA9IHNvY2tldFxuICAgICAgc2Vzc2lvbi5vbignZXJyb3InLCBvbkh0dHAyU2Vzc2lvbkVycm9yKVxuICAgICAgc2Vzc2lvbi5vbignZnJhbWVFcnJvcicsIG9uSHR0cDJGcmFtZUVycm9yKVxuICAgICAgc2Vzc2lvbi5vbignZW5kJywgb25IdHRwMlNlc3Npb25FbmQpXG4gICAgICBzZXNzaW9uLm9uKCdnb2F3YXknLCBvbkhUVFAyR29Bd2F5KVxuICAgICAgc2Vzc2lvbi5vbignY2xvc2UnLCBvblNvY2tldENsb3NlKVxuICAgICAgc2Vzc2lvbi51bnJlZigpXG5cbiAgICAgIGNsaWVudFtrSFRUUDJTZXNzaW9uXSA9IHNlc3Npb25cbiAgICAgIHNvY2tldFtrSFRUUDJTZXNzaW9uXSA9IHNlc3Npb25cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFsbGh0dHBJbnN0YW5jZSkge1xuICAgICAgICBsbGh0dHBJbnN0YW5jZSA9IGF3YWl0IGxsaHR0cFByb21pc2VcbiAgICAgICAgbGxodHRwUHJvbWlzZSA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc29ja2V0W2tOb1JlZl0gPSBmYWxzZVxuICAgICAgc29ja2V0W2tXcml0aW5nXSA9IGZhbHNlXG4gICAgICBzb2NrZXRba1Jlc2V0XSA9IGZhbHNlXG4gICAgICBzb2NrZXRba0Jsb2NraW5nXSA9IGZhbHNlXG4gICAgICBzb2NrZXRba1BhcnNlcl0gPSBuZXcgUGFyc2VyKGNsaWVudCwgc29ja2V0LCBsbGh0dHBJbnN0YW5jZSlcbiAgICB9XG5cbiAgICBzb2NrZXRba0NvdW50ZXJdID0gMFxuICAgIHNvY2tldFtrTWF4UmVxdWVzdHNdID0gY2xpZW50W2tNYXhSZXF1ZXN0c11cbiAgICBzb2NrZXRba0NsaWVudF0gPSBjbGllbnRcbiAgICBzb2NrZXRba0Vycm9yXSA9IG51bGxcblxuICAgIHNvY2tldFxuICAgICAgLm9uKCdlcnJvcicsIG9uU29ja2V0RXJyb3IpXG4gICAgICAub24oJ3JlYWRhYmxlJywgb25Tb2NrZXRSZWFkYWJsZSlcbiAgICAgIC5vbignZW5kJywgb25Tb2NrZXRFbmQpXG4gICAgICAub24oJ2Nsb3NlJywgb25Tb2NrZXRDbG9zZSlcblxuICAgIGNsaWVudFtrU29ja2V0XSA9IHNvY2tldFxuXG4gICAgaWYgKGNoYW5uZWxzLmNvbm5lY3RlZC5oYXNTdWJzY3JpYmVycykge1xuICAgICAgY2hhbm5lbHMuY29ubmVjdGVkLnB1Ymxpc2goe1xuICAgICAgICBjb25uZWN0UGFyYW1zOiB7XG4gICAgICAgICAgaG9zdCxcbiAgICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICBwb3J0LFxuICAgICAgICAgIHNlcnZlcm5hbWU6IGNsaWVudFtrU2VydmVyTmFtZV0sXG4gICAgICAgICAgbG9jYWxBZGRyZXNzOiBjbGllbnRba0xvY2FsQWRkcmVzc11cbiAgICAgICAgfSxcbiAgICAgICAgY29ubmVjdG9yOiBjbGllbnRba0Nvbm5lY3Rvcl0sXG4gICAgICAgIHNvY2tldFxuICAgICAgfSlcbiAgICB9XG4gICAgY2xpZW50LmVtaXQoJ2Nvbm5lY3QnLCBjbGllbnRba1VybF0sIFtjbGllbnRdKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoY2xpZW50LmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY2xpZW50W2tDb25uZWN0aW5nXSA9IGZhbHNlXG5cbiAgICBpZiAoY2hhbm5lbHMuY29ubmVjdEVycm9yLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICBjaGFubmVscy5jb25uZWN0RXJyb3IucHVibGlzaCh7XG4gICAgICAgIGNvbm5lY3RQYXJhbXM6IHtcbiAgICAgICAgICBob3N0LFxuICAgICAgICAgIGhvc3RuYW1lLFxuICAgICAgICAgIHByb3RvY29sLFxuICAgICAgICAgIHBvcnQsXG4gICAgICAgICAgc2VydmVybmFtZTogY2xpZW50W2tTZXJ2ZXJOYW1lXSxcbiAgICAgICAgICBsb2NhbEFkZHJlc3M6IGNsaWVudFtrTG9jYWxBZGRyZXNzXVxuICAgICAgICB9LFxuICAgICAgICBjb25uZWN0b3I6IGNsaWVudFtrQ29ubmVjdG9yXSxcbiAgICAgICAgZXJyb3I6IGVyclxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZXJyLmNvZGUgPT09ICdFUlJfVExTX0NFUlRfQUxUTkFNRV9JTlZBTElEJykge1xuICAgICAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPT09IDApXG4gICAgICB3aGlsZSAoY2xpZW50W2tQZW5kaW5nXSA+IDAgJiYgY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tQZW5kaW5nSWR4XV0uc2VydmVybmFtZSA9PT0gY2xpZW50W2tTZXJ2ZXJOYW1lXSkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tQZW5kaW5nSWR4XSsrXVxuICAgICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRXJyb3IoY2xpZW50LCBlcnIpXG4gICAgfVxuXG4gICAgY2xpZW50LmVtaXQoJ2Nvbm5lY3Rpb25FcnJvcicsIGNsaWVudFtrVXJsXSwgW2NsaWVudF0sIGVycilcbiAgfVxuXG4gIHJlc3VtZShjbGllbnQpXG59XG5cbmZ1bmN0aW9uIGVtaXREcmFpbiAoY2xpZW50KSB7XG4gIGNsaWVudFtrTmVlZERyYWluXSA9IDBcbiAgY2xpZW50LmVtaXQoJ2RyYWluJywgY2xpZW50W2tVcmxdLCBbY2xpZW50XSlcbn1cblxuZnVuY3Rpb24gcmVzdW1lIChjbGllbnQsIHN5bmMpIHtcbiAgaWYgKGNsaWVudFtrUmVzdW1pbmddID09PSAyKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjbGllbnRba1Jlc3VtaW5nXSA9IDJcblxuICBfcmVzdW1lKGNsaWVudCwgc3luYylcbiAgY2xpZW50W2tSZXN1bWluZ10gPSAwXG5cbiAgaWYgKGNsaWVudFtrUnVubmluZ0lkeF0gPiAyNTYpIHtcbiAgICBjbGllbnRba1F1ZXVlXS5zcGxpY2UoMCwgY2xpZW50W2tSdW5uaW5nSWR4XSlcbiAgICBjbGllbnRba1BlbmRpbmdJZHhdIC09IGNsaWVudFtrUnVubmluZ0lkeF1cbiAgICBjbGllbnRba1J1bm5pbmdJZHhdID0gMFxuICB9XG59XG5cbmZ1bmN0aW9uIF9yZXN1bWUgKGNsaWVudCwgc3luYykge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChjbGllbnQuZGVzdHJveWVkKSB7XG4gICAgICBhc3NlcnQoY2xpZW50W2tQZW5kaW5nXSA9PT0gMClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChjbGllbnRba0Nsb3NlZFJlc29sdmVdICYmICFjbGllbnRba1NpemVdKSB7XG4gICAgICBjbGllbnRba0Nsb3NlZFJlc29sdmVdKClcbiAgICAgIGNsaWVudFtrQ2xvc2VkUmVzb2x2ZV0gPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzb2NrZXQgPSBjbGllbnRba1NvY2tldF1cblxuICAgIGlmIChzb2NrZXQgJiYgIXNvY2tldC5kZXN0cm95ZWQgJiYgc29ja2V0LmFscG5Qcm90b2NvbCAhPT0gJ2gyJykge1xuICAgICAgaWYgKGNsaWVudFtrU2l6ZV0gPT09IDApIHtcbiAgICAgICAgaWYgKCFzb2NrZXRba05vUmVmXSAmJiBzb2NrZXQudW5yZWYpIHtcbiAgICAgICAgICBzb2NrZXQudW5yZWYoKVxuICAgICAgICAgIHNvY2tldFtrTm9SZWZdID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNvY2tldFtrTm9SZWZdICYmIHNvY2tldC5yZWYpIHtcbiAgICAgICAgc29ja2V0LnJlZigpXG4gICAgICAgIHNvY2tldFtrTm9SZWZdID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKGNsaWVudFtrU2l6ZV0gPT09IDApIHtcbiAgICAgICAgaWYgKHNvY2tldFtrUGFyc2VyXS50aW1lb3V0VHlwZSAhPT0gVElNRU9VVF9JRExFKSB7XG4gICAgICAgICAgc29ja2V0W2tQYXJzZXJdLnNldFRpbWVvdXQoY2xpZW50W2tLZWVwQWxpdmVUaW1lb3V0VmFsdWVdLCBUSU1FT1VUX0lETEUpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xpZW50W2tSdW5uaW5nXSA+IDAgJiYgc29ja2V0W2tQYXJzZXJdLnN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgICAgaWYgKHNvY2tldFtrUGFyc2VyXS50aW1lb3V0VHlwZSAhPT0gVElNRU9VVF9IRUFERVJTKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF1dXG4gICAgICAgICAgY29uc3QgaGVhZGVyc1RpbWVvdXQgPSByZXF1ZXN0LmhlYWRlcnNUaW1lb3V0ICE9IG51bGxcbiAgICAgICAgICAgID8gcmVxdWVzdC5oZWFkZXJzVGltZW91dFxuICAgICAgICAgICAgOiBjbGllbnRba0hlYWRlcnNUaW1lb3V0XVxuICAgICAgICAgIHNvY2tldFtrUGFyc2VyXS5zZXRUaW1lb3V0KGhlYWRlcnNUaW1lb3V0LCBUSU1FT1VUX0hFQURFUlMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tCdXN5XSkge1xuICAgICAgY2xpZW50W2tOZWVkRHJhaW5dID0gMlxuICAgIH0gZWxzZSBpZiAoY2xpZW50W2tOZWVkRHJhaW5dID09PSAyKSB7XG4gICAgICBpZiAoc3luYykge1xuICAgICAgICBjbGllbnRba05lZWREcmFpbl0gPSAxXG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdERyYWluLCBjbGllbnQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0RHJhaW4oY2xpZW50KVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tQZW5kaW5nXSA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrUnVubmluZ10gPj0gKGNsaWVudFtrUGlwZWxpbmluZ10gfHwgMSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1BlbmRpbmdJZHhdXVxuXG4gICAgaWYgKGNsaWVudFtrVXJsXS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgJiYgY2xpZW50W2tTZXJ2ZXJOYW1lXSAhPT0gcmVxdWVzdC5zZXJ2ZXJuYW1lKSB7XG4gICAgICBpZiAoY2xpZW50W2tSdW5uaW5nXSA+IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNsaWVudFtrU2VydmVyTmFtZV0gPSByZXF1ZXN0LnNlcnZlcm5hbWVcblxuICAgICAgaWYgKHNvY2tldCAmJiBzb2NrZXQuc2VydmVybmFtZSAhPT0gcmVxdWVzdC5zZXJ2ZXJuYW1lKSB7XG4gICAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ3NlcnZlcm5hbWUgY2hhbmdlZCcpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tDb25uZWN0aW5nXSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzb2NrZXQgJiYgIWNsaWVudFtrSFRUUDJTZXNzaW9uXSkge1xuICAgICAgY29ubmVjdChjbGllbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc29ja2V0LmRlc3Ryb3llZCB8fCBzb2NrZXRba1dyaXRpbmddIHx8IHNvY2tldFtrUmVzZXRdIHx8IHNvY2tldFtrQmxvY2tpbmddKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tSdW5uaW5nXSA+IDAgJiYgIXJlcXVlc3QuaWRlbXBvdGVudCkge1xuICAgICAgLy8gTm9uLWlkZW1wb3RlbnQgcmVxdWVzdCBjYW5ub3QgYmUgcmV0cmllZC5cbiAgICAgIC8vIEVuc3VyZSB0aGF0IG5vIG90aGVyIHJlcXVlc3RzIGFyZSBpbmZsaWdodCBhbmRcbiAgICAgIC8vIGNvdWxkIGNhdXNlIGZhaWx1cmUuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tSdW5uaW5nXSA+IDAgJiYgKHJlcXVlc3QudXBncmFkZSB8fCByZXF1ZXN0Lm1ldGhvZCA9PT0gJ0NPTk5FQ1QnKSkge1xuICAgICAgLy8gRG9uJ3QgZGlzcGF0Y2ggYW4gdXBncmFkZSB1bnRpbCBhbGwgcHJlY2VkaW5nIHJlcXVlc3RzIGhhdmUgY29tcGxldGVkLlxuICAgICAgLy8gQSBtaXNiZWhhdmluZyBzZXJ2ZXIgbWlnaHQgdXBncmFkZSB0aGUgY29ubmVjdGlvbiBiZWZvcmUgYWxsIHBpcGVsaW5lZFxuICAgICAgLy8gcmVxdWVzdCBoYXMgY29tcGxldGVkLlxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwICYmIHV0aWwuYm9keUxlbmd0aChyZXF1ZXN0LmJvZHkpICE9PSAwICYmXG4gICAgICAodXRpbC5pc1N0cmVhbShyZXF1ZXN0LmJvZHkpIHx8IHV0aWwuaXNBc3luY0l0ZXJhYmxlKHJlcXVlc3QuYm9keSkpKSB7XG4gICAgICAvLyBSZXF1ZXN0IHdpdGggc3RyZWFtIG9yIGl0ZXJhdG9yIGJvZHkgY2FuIGVycm9yIHdoaWxlIG90aGVyIHJlcXVlc3RzXG4gICAgICAvLyBhcmUgaW5mbGlnaHQgYW5kIGluZGlyZWN0bHkgZXJyb3IgdGhvc2UgYXMgd2VsbC5cbiAgICAgIC8vIEVuc3VyZSB0aGlzIGRvZXNuJ3QgaGFwcGVuIGJ5IHdhaXRpbmcgZm9yIGluZmxpZ2h0XG4gICAgICAvLyB0byBjb21wbGV0ZSBiZWZvcmUgZGlzcGF0Y2hpbmcuXG5cbiAgICAgIC8vIFJlcXVlc3Qgd2l0aCBzdHJlYW0gb3IgaXRlcmF0b3IgYm9keSBjYW5ub3QgYmUgcmV0cmllZC5cbiAgICAgIC8vIEVuc3VyZSB0aGF0IG5vIG90aGVyIHJlcXVlc3RzIGFyZSBpbmZsaWdodCBhbmRcbiAgICAgIC8vIGNvdWxkIGNhdXNlIGZhaWx1cmUuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3QuYWJvcnRlZCAmJiB3cml0ZShjbGllbnQsIHJlcXVlc3QpKSB7XG4gICAgICBjbGllbnRba1BlbmRpbmdJZHhdKytcbiAgICB9IGVsc2Uge1xuICAgICAgY2xpZW50W2tRdWV1ZV0uc3BsaWNlKGNsaWVudFtrUGVuZGluZ0lkeF0sIDEpXG4gICAgfVxuICB9XG59XG5cbi8vIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMwI3NlY3Rpb24tMy4zLjJcbmZ1bmN0aW9uIHNob3VsZFNlbmRDb250ZW50TGVuZ3RoIChtZXRob2QpIHtcbiAgcmV0dXJuIG1ldGhvZCAhPT0gJ0dFVCcgJiYgbWV0aG9kICE9PSAnSEVBRCcgJiYgbWV0aG9kICE9PSAnT1BUSU9OUycgJiYgbWV0aG9kICE9PSAnVFJBQ0UnICYmIG1ldGhvZCAhPT0gJ0NPTk5FQ1QnXG59XG5cbmZ1bmN0aW9uIHdyaXRlIChjbGllbnQsIHJlcXVlc3QpIHtcbiAgaWYgKGNsaWVudFtrSFRUUENvbm5WZXJzaW9uXSA9PT0gJ2gyJykge1xuICAgIHdyaXRlSDIoY2xpZW50LCBjbGllbnRba0hUVFAyU2Vzc2lvbl0sIHJlcXVlc3QpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCB7IGJvZHksIG1ldGhvZCwgcGF0aCwgaG9zdCwgdXBncmFkZSwgaGVhZGVycywgYmxvY2tpbmcsIHJlc2V0IH0gPSByZXF1ZXN0XG5cbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi00LjMuMVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTQuMy4yXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNC4zLjVcblxuICAvLyBTZW5kaW5nIGEgcGF5bG9hZCBib2R5IG9uIGEgcmVxdWVzdCB0aGF0IGRvZXMgbm90XG4gIC8vIGV4cGVjdCBpdCBjYW4gY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yIG9uIHNvbWVcbiAgLy8gc2VydmVycyBhbmQgY29ycnVwdCBjb25uZWN0aW9uIHN0YXRlLiBEbyBub3RcbiAgLy8gcmUtdXNlIHRoZSBjb25uZWN0aW9uIGZvciBmdXJ0aGVyIHJlcXVlc3RzLlxuXG4gIGNvbnN0IGV4cGVjdHNQYXlsb2FkID0gKFxuICAgIG1ldGhvZCA9PT0gJ1BVVCcgfHxcbiAgICBtZXRob2QgPT09ICdQT1NUJyB8fFxuICAgIG1ldGhvZCA9PT0gJ1BBVENIJ1xuICApXG5cbiAgaWYgKGJvZHkgJiYgdHlwZW9mIGJvZHkucmVhZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRyeSB0byByZWFkIEVPRiBpbiBvcmRlciB0byBnZXQgbGVuZ3RoLlxuICAgIGJvZHkucmVhZCgwKVxuICB9XG5cbiAgY29uc3QgYm9keUxlbmd0aCA9IHV0aWwuYm9keUxlbmd0aChib2R5KVxuXG4gIGxldCBjb250ZW50TGVuZ3RoID0gYm9keUxlbmd0aFxuXG4gIGlmIChjb250ZW50TGVuZ3RoID09PSBudWxsKSB7XG4gICAgY29udGVudExlbmd0aCA9IHJlcXVlc3QuY29udGVudExlbmd0aFxuICB9XG5cbiAgaWYgKGNvbnRlbnRMZW5ndGggPT09IDAgJiYgIWV4cGVjdHNQYXlsb2FkKSB7XG4gICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjMuMlxuICAgIC8vIEEgdXNlciBhZ2VudCBTSE9VTEQgTk9UIHNlbmQgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgZmllbGQgd2hlblxuICAgIC8vIHRoZSByZXF1ZXN0IG1lc3NhZ2UgZG9lcyBub3QgY29udGFpbiBhIHBheWxvYWQgYm9keSBhbmQgdGhlIG1ldGhvZFxuICAgIC8vIHNlbWFudGljcyBkbyBub3QgYW50aWNpcGF0ZSBzdWNoIGEgYm9keS5cblxuICAgIGNvbnRlbnRMZW5ndGggPSBudWxsXG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9pc3N1ZXMvMjA0NlxuICAvLyBBIHVzZXIgYWdlbnQgbWF5IHNlbmQgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgd2l0aCAwIHZhbHVlLCB0aGlzIHNob3VsZCBiZSBhbGxvd2VkLlxuICBpZiAoc2hvdWxkU2VuZENvbnRlbnRMZW5ndGgobWV0aG9kKSAmJiBjb250ZW50TGVuZ3RoID4gMCAmJiByZXF1ZXN0LmNvbnRlbnRMZW5ndGggIT09IG51bGwgJiYgcmVxdWVzdC5jb250ZW50TGVuZ3RoICE9PSBjb250ZW50TGVuZ3RoKSB7XG4gICAgaWYgKGNsaWVudFtrU3RyaWN0Q29udGVudExlbmd0aF0pIHtcbiAgICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcobmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpKVxuICB9XG5cbiAgY29uc3Qgc29ja2V0ID0gY2xpZW50W2tTb2NrZXRdXG5cbiAgdHJ5IHtcbiAgICByZXF1ZXN0Lm9uQ29ubmVjdCgoZXJyKSA9PiB7XG4gICAgICBpZiAocmVxdWVzdC5hYm9ydGVkIHx8IHJlcXVlc3QuY29tcGxldGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIgfHwgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKSlcblxuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IEluZm9ybWF0aW9uYWxFcnJvcignYWJvcnRlZCcpKVxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIGVycilcbiAgfVxuXG4gIGlmIChyZXF1ZXN0LmFib3J0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChtZXRob2QgPT09ICdIRUFEJykge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tY29sbGluYS91bmRpY2kvaXNzdWVzLzI1OFxuICAgIC8vIENsb3NlIGFmdGVyIGEgSEVBRCByZXF1ZXN0IHRvIGludGVyb3Agd2l0aCBtaXNiZWhhdmluZyBzZXJ2ZXJzXG4gICAgLy8gdGhhdCBtYXkgc2VuZCBhIGJvZHkgaW4gdGhlIHJlc3BvbnNlLlxuXG4gICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gIH1cblxuICBpZiAodXBncmFkZSB8fCBtZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgIC8vIE9uIENPTk5FQ1Qgb3IgdXBncmFkZSwgYmxvY2sgcGlwZWxpbmUgZnJvbSBkaXNwYXRjaGluZyBmdXJ0aGVyXG4gICAgLy8gcmVxdWVzdHMgb24gdGhpcyBjb25uZWN0aW9uLlxuXG4gICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gIH1cblxuICBpZiAocmVzZXQgIT0gbnVsbCkge1xuICAgIHNvY2tldFtrUmVzZXRdID0gcmVzZXRcbiAgfVxuXG4gIGlmIChjbGllbnRba01heFJlcXVlc3RzXSAmJiBzb2NrZXRba0NvdW50ZXJdKysgPj0gY2xpZW50W2tNYXhSZXF1ZXN0c10pIHtcbiAgICBzb2NrZXRba1Jlc2V0XSA9IHRydWVcbiAgfVxuXG4gIGlmIChibG9ja2luZykge1xuICAgIHNvY2tldFtrQmxvY2tpbmddID0gdHJ1ZVxuICB9XG5cbiAgbGV0IGhlYWRlciA9IGAke21ldGhvZH0gJHtwYXRofSBIVFRQLzEuMVxcclxcbmBcblxuICBpZiAodHlwZW9mIGhvc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgaGVhZGVyICs9IGBob3N0OiAke2hvc3R9XFxyXFxuYFxuICB9IGVsc2Uge1xuICAgIGhlYWRlciArPSBjbGllbnRba0hvc3RIZWFkZXJdXG4gIH1cblxuICBpZiAodXBncmFkZSkge1xuICAgIGhlYWRlciArPSBgY29ubmVjdGlvbjogdXBncmFkZVxcclxcbnVwZ3JhZGU6ICR7dXBncmFkZX1cXHJcXG5gXG4gIH0gZWxzZSBpZiAoY2xpZW50W2tQaXBlbGluaW5nXSAmJiAhc29ja2V0W2tSZXNldF0pIHtcbiAgICBoZWFkZXIgKz0gJ2Nvbm5lY3Rpb246IGtlZXAtYWxpdmVcXHJcXG4nXG4gIH0gZWxzZSB7XG4gICAgaGVhZGVyICs9ICdjb25uZWN0aW9uOiBjbG9zZVxcclxcbidcbiAgfVxuXG4gIGlmIChoZWFkZXJzKSB7XG4gICAgaGVhZGVyICs9IGhlYWRlcnNcbiAgfVxuXG4gIGlmIChjaGFubmVscy5zZW5kSGVhZGVycy5oYXNTdWJzY3JpYmVycykge1xuICAgIGNoYW5uZWxzLnNlbmRIZWFkZXJzLnB1Ymxpc2goeyByZXF1ZXN0LCBoZWFkZXJzOiBoZWFkZXIsIHNvY2tldCB9KVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IGFzc2VydGlvbiAqL1xuICBpZiAoIWJvZHkgfHwgYm9keUxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChjb250ZW50TGVuZ3RoID09PSAwKSB7XG4gICAgICBzb2NrZXQud3JpdGUoYCR7aGVhZGVyfWNvbnRlbnQtbGVuZ3RoOiAwXFxyXFxuXFxyXFxuYCwgJ2xhdGluMScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChjb250ZW50TGVuZ3RoID09PSBudWxsLCAnbm8gYm9keSBtdXN0IG5vdCBoYXZlIGNvbnRlbnQgbGVuZ3RoJylcbiAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9XFxyXFxuYCwgJ2xhdGluMScpXG4gICAgfVxuICAgIHJlcXVlc3Qub25SZXF1ZXN0U2VudCgpXG4gIH0gZWxzZSBpZiAodXRpbC5pc0J1ZmZlcihib2R5KSkge1xuICAgIGFzc2VydChjb250ZW50TGVuZ3RoID09PSBib2R5LmJ5dGVMZW5ndGgsICdidWZmZXIgYm9keSBtdXN0IGhhdmUgY29udGVudCBsZW5ndGgnKVxuXG4gICAgc29ja2V0LmNvcmsoKVxuICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9Y29udGVudC1sZW5ndGg6ICR7Y29udGVudExlbmd0aH1cXHJcXG5cXHJcXG5gLCAnbGF0aW4xJylcbiAgICBzb2NrZXQud3JpdGUoYm9keSlcbiAgICBzb2NrZXQudW5jb3JrKClcbiAgICByZXF1ZXN0Lm9uQm9keVNlbnQoYm9keSlcbiAgICByZXF1ZXN0Lm9uUmVxdWVzdFNlbnQoKVxuICAgIGlmICghZXhwZWN0c1BheWxvYWQpIHtcbiAgICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIGlmICh1dGlsLmlzQmxvYkxpa2UoYm9keSkpIHtcbiAgICBpZiAodHlwZW9mIGJvZHkuc3RyZWFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB3cml0ZUl0ZXJhYmxlKHsgYm9keTogYm9keS5zdHJlYW0oKSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgd3JpdGVCbG9iKHsgYm9keSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAodXRpbC5pc1N0cmVhbShib2R5KSkge1xuICAgIHdyaXRlU3RyZWFtKHsgYm9keSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSlcbiAgfSBlbHNlIGlmICh1dGlsLmlzSXRlcmFibGUoYm9keSkpIHtcbiAgICB3cml0ZUl0ZXJhYmxlKHsgYm9keSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSlcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoZmFsc2UpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiB3cml0ZUgyIChjbGllbnQsIHNlc3Npb24sIHJlcXVlc3QpIHtcbiAgY29uc3QgeyBib2R5LCBtZXRob2QsIHBhdGgsIGhvc3QsIHVwZ3JhZGUsIGV4cGVjdENvbnRpbnVlLCBzaWduYWwsIGhlYWRlcnM6IHJlcUhlYWRlcnMgfSA9IHJlcXVlc3RcblxuICBsZXQgaGVhZGVyc1xuICBpZiAodHlwZW9mIHJlcUhlYWRlcnMgPT09ICdzdHJpbmcnKSBoZWFkZXJzID0gUmVxdWVzdFtrSFRUUDJDb3B5SGVhZGVyc10ocmVxSGVhZGVycy50cmltKCkpXG4gIGVsc2UgaGVhZGVycyA9IHJlcUhlYWRlcnNcblxuICBpZiAodXBncmFkZSkge1xuICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIG5ldyBFcnJvcignVXBncmFkZSBub3Qgc3VwcG9ydGVkIGZvciBIMicpKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBUT0RPKEhUVFAvMik6IFNob3VsZCB3ZSBjYWxsIG9uQ29ubmVjdCBpbW1lZGlhdGVseSBvciBvbiBzdHJlYW0gcmVhZHkgZXZlbnQ/XG4gICAgcmVxdWVzdC5vbkNvbm5lY3QoKGVycikgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QuYWJvcnRlZCB8fCByZXF1ZXN0LmNvbXBsZXRlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyIHx8IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKCkpXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuICB9XG5cbiAgaWYgKHJlcXVlc3QuYWJvcnRlZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoJ25vZGU6aHR0cDInKS5DbGllbnRIdHRwMlN0cmVhbX0gKi9cbiAgbGV0IHN0cmVhbVxuICBjb25zdCBoMlN0YXRlID0gY2xpZW50W2tIVFRQMlNlc3Npb25TdGF0ZV1cblxuICBoZWFkZXJzW0hUVFAyX0hFQURFUl9BVVRIT1JJVFldID0gaG9zdCB8fCBjbGllbnRba0hvc3RdXG4gIGhlYWRlcnNbSFRUUDJfSEVBREVSX01FVEhPRF0gPSBtZXRob2RcblxuICBpZiAobWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICBzZXNzaW9uLnJlZigpXG4gICAgLy8gd2UgYXJlIGFscmVhZHkgY29ubmVjdGVkLCBzdHJlYW1zIGFyZSBwZW5kaW5nLCBmaXJzdCByZXF1ZXN0XG4gICAgLy8gd2lsbCBjcmVhdGUgYSBuZXcgc3RyZWFtLiBXZSB0cmlnZ2VyIGEgcmVxdWVzdCB0byBjcmVhdGUgdGhlIHN0cmVhbSBhbmQgd2FpdCB1bnRpbFxuICAgIC8vIGByZWFkeWAgZXZlbnQgaXMgdHJpZ2dlcmVkXG4gICAgLy8gV2UgZGlzYWJsZWQgZW5kU3RyZWFtIHRvIGFsbG93IHRoZSB1c2VyIHRvIHdyaXRlIHRvIHRoZSBzdHJlYW1cbiAgICBzdHJlYW0gPSBzZXNzaW9uLnJlcXVlc3QoaGVhZGVycywgeyBlbmRTdHJlYW06IGZhbHNlLCBzaWduYWwgfSlcblxuICAgIGlmIChzdHJlYW0uaWQgJiYgIXN0cmVhbS5wZW5kaW5nKSB7XG4gICAgICByZXF1ZXN0Lm9uVXBncmFkZShudWxsLCBudWxsLCBzdHJlYW0pXG4gICAgICArK2gyU3RhdGUub3BlblN0cmVhbXNcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyZWFtLm9uY2UoJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICByZXF1ZXN0Lm9uVXBncmFkZShudWxsLCBudWxsLCBzdHJlYW0pXG4gICAgICAgICsraDJTdGF0ZS5vcGVuU3RyZWFtc1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBzdHJlYW0ub25jZSgnY2xvc2UnLCAoKSA9PiB7XG4gICAgICBoMlN0YXRlLm9wZW5TdHJlYW1zIC09IDFcbiAgICAgIC8vIFRPRE8oSFRUUC8yKTogdW5yZWYgb25seSBpZiBjdXJyZW50IHN0cmVhbXMgY291bnQgaXMgMFxuICAgICAgaWYgKGgyU3RhdGUub3BlblN0cmVhbXMgPT09IDApIHNlc3Npb24udW5yZWYoKVxuICAgIH0pXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc1NDAjc2VjdGlvbi04LjNcbiAgLy8gOnBhdGggYW5kIDpzY2hlbWUgaGVhZGVycyBtdXN0IGJlIG9taXRlZCB3aGVuIHNlbmRpbmcgQ09OTkVDVFxuXG4gIGhlYWRlcnNbSFRUUDJfSEVBREVSX1BBVEhdID0gcGF0aFxuICBoZWFkZXJzW0hUVFAyX0hFQURFUl9TQ0hFTUVdID0gJ2h0dHBzJ1xuXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNC4zLjFcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi00LjMuMlxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTQuMy41XG5cbiAgLy8gU2VuZGluZyBhIHBheWxvYWQgYm9keSBvbiBhIHJlcXVlc3QgdGhhdCBkb2VzIG5vdFxuICAvLyBleHBlY3QgaXQgY2FuIGNhdXNlIHVuZGVmaW5lZCBiZWhhdmlvciBvbiBzb21lXG4gIC8vIHNlcnZlcnMgYW5kIGNvcnJ1cHQgY29ubmVjdGlvbiBzdGF0ZS4gRG8gbm90XG4gIC8vIHJlLXVzZSB0aGUgY29ubmVjdGlvbiBmb3IgZnVydGhlciByZXF1ZXN0cy5cblxuICBjb25zdCBleHBlY3RzUGF5bG9hZCA9IChcbiAgICBtZXRob2QgPT09ICdQVVQnIHx8XG4gICAgbWV0aG9kID09PSAnUE9TVCcgfHxcbiAgICBtZXRob2QgPT09ICdQQVRDSCdcbiAgKVxuXG4gIGlmIChib2R5ICYmIHR5cGVvZiBib2R5LnJlYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUcnkgdG8gcmVhZCBFT0YgaW4gb3JkZXIgdG8gZ2V0IGxlbmd0aC5cbiAgICBib2R5LnJlYWQoMClcbiAgfVxuXG4gIGxldCBjb250ZW50TGVuZ3RoID0gdXRpbC5ib2R5TGVuZ3RoKGJvZHkpXG5cbiAgaWYgKGNvbnRlbnRMZW5ndGggPT0gbnVsbCkge1xuICAgIGNvbnRlbnRMZW5ndGggPSByZXF1ZXN0LmNvbnRlbnRMZW5ndGhcbiAgfVxuXG4gIGlmIChjb250ZW50TGVuZ3RoID09PSAwIHx8ICFleHBlY3RzUGF5bG9hZCkge1xuICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjJcbiAgICAvLyBBIHVzZXIgYWdlbnQgU0hPVUxEIE5PVCBzZW5kIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIHdoZW5cbiAgICAvLyB0aGUgcmVxdWVzdCBtZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBwYXlsb2FkIGJvZHkgYW5kIHRoZSBtZXRob2RcbiAgICAvLyBzZW1hbnRpY3MgZG8gbm90IGFudGljaXBhdGUgc3VjaCBhIGJvZHkuXG5cbiAgICBjb250ZW50TGVuZ3RoID0gbnVsbFxuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzIwNDZcbiAgLy8gQSB1c2VyIGFnZW50IG1heSBzZW5kIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHdpdGggMCB2YWx1ZSwgdGhpcyBzaG91bGQgYmUgYWxsb3dlZC5cbiAgaWYgKHNob3VsZFNlbmRDb250ZW50TGVuZ3RoKG1ldGhvZCkgJiYgY29udGVudExlbmd0aCA+IDAgJiYgcmVxdWVzdC5jb250ZW50TGVuZ3RoICE9IG51bGwgJiYgcmVxdWVzdC5jb250ZW50TGVuZ3RoICE9PSBjb250ZW50TGVuZ3RoKSB7XG4gICAgaWYgKGNsaWVudFtrU3RyaWN0Q29udGVudExlbmd0aF0pIHtcbiAgICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcobmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpKVxuICB9XG5cbiAgaWYgKGNvbnRlbnRMZW5ndGggIT0gbnVsbCkge1xuICAgIGFzc2VydChib2R5LCAnbm8gYm9keSBtdXN0IG5vdCBoYXZlIGNvbnRlbnQgbGVuZ3RoJylcbiAgICBoZWFkZXJzW0hUVFAyX0hFQURFUl9DT05URU5UX0xFTkdUSF0gPSBgJHtjb250ZW50TGVuZ3RofWBcbiAgfVxuXG4gIHNlc3Npb24ucmVmKClcblxuICBjb25zdCBzaG91bGRFbmRTdHJlYW0gPSBtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ0hFQUQnXG4gIGlmIChleHBlY3RDb250aW51ZSkge1xuICAgIGhlYWRlcnNbSFRUUDJfSEVBREVSX0VYUEVDVF0gPSAnMTAwLWNvbnRpbnVlJ1xuICAgIHN0cmVhbSA9IHNlc3Npb24ucmVxdWVzdChoZWFkZXJzLCB7IGVuZFN0cmVhbTogc2hvdWxkRW5kU3RyZWFtLCBzaWduYWwgfSlcblxuICAgIHN0cmVhbS5vbmNlKCdjb250aW51ZScsIHdyaXRlQm9keUgyKVxuICB9IGVsc2Uge1xuICAgIHN0cmVhbSA9IHNlc3Npb24ucmVxdWVzdChoZWFkZXJzLCB7XG4gICAgICBlbmRTdHJlYW06IHNob3VsZEVuZFN0cmVhbSxcbiAgICAgIHNpZ25hbFxuICAgIH0pXG4gICAgd3JpdGVCb2R5SDIoKVxuICB9XG5cbiAgLy8gSW5jcmVtZW50IGNvdW50ZXIgYXMgd2UgaGF2ZSBuZXcgc2V2ZXJhbCBzdHJlYW1zIG9wZW5cbiAgKytoMlN0YXRlLm9wZW5TdHJlYW1zXG5cbiAgc3RyZWFtLm9uY2UoJ3Jlc3BvbnNlJywgaGVhZGVycyA9PiB7XG4gICAgY29uc3QgeyBbSFRUUDJfSEVBREVSX1NUQVRVU106IHN0YXR1c0NvZGUsIC4uLnJlYWxIZWFkZXJzIH0gPSBoZWFkZXJzXG5cbiAgICBpZiAocmVxdWVzdC5vbkhlYWRlcnMoTnVtYmVyKHN0YXR1c0NvZGUpLCByZWFsSGVhZGVycywgc3RyZWFtLnJlc3VtZS5iaW5kKHN0cmVhbSksICcnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHN0cmVhbS5wYXVzZSgpXG4gICAgfVxuICB9KVxuXG4gIHN0cmVhbS5vbmNlKCdlbmQnLCAoKSA9PiB7XG4gICAgcmVxdWVzdC5vbkNvbXBsZXRlKFtdKVxuICB9KVxuXG4gIHN0cmVhbS5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgIGlmIChyZXF1ZXN0Lm9uRGF0YShjaHVuaykgPT09IGZhbHNlKSB7XG4gICAgICBzdHJlYW0ucGF1c2UoKVxuICAgIH1cbiAgfSlcblxuICBzdHJlYW0ub25jZSgnY2xvc2UnLCAoKSA9PiB7XG4gICAgaDJTdGF0ZS5vcGVuU3RyZWFtcyAtPSAxXG4gICAgLy8gVE9ETyhIVFRQLzIpOiB1bnJlZiBvbmx5IGlmIGN1cnJlbnQgc3RyZWFtcyBjb3VudCBpcyAwXG4gICAgaWYgKGgyU3RhdGUub3BlblN0cmVhbXMgPT09IDApIHtcbiAgICAgIHNlc3Npb24udW5yZWYoKVxuICAgIH1cbiAgfSlcblxuICBzdHJlYW0ub25jZSgnZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGNsaWVudFtrSFRUUDJTZXNzaW9uXSAmJiAhY2xpZW50W2tIVFRQMlNlc3Npb25dLmRlc3Ryb3llZCAmJiAhdGhpcy5jbG9zZWQgJiYgIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICBoMlN0YXRlLnN0cmVhbXMgLT0gMVxuICAgICAgdXRpbC5kZXN0cm95KHN0cmVhbSwgZXJyKVxuICAgIH1cbiAgfSlcblxuICBzdHJlYW0ub25jZSgnZnJhbWVFcnJvcicsICh0eXBlLCBjb2RlKSA9PiB7XG4gICAgY29uc3QgZXJyID0gbmV3IEluZm9ybWF0aW9uYWxFcnJvcihgSFRUUC8yOiBcImZyYW1lRXJyb3JcIiByZWNlaXZlZCAtIHR5cGUgJHt0eXBlfSwgY29kZSAke2NvZGV9YClcbiAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG5cbiAgICBpZiAoY2xpZW50W2tIVFRQMlNlc3Npb25dICYmICFjbGllbnRba0hUVFAyU2Vzc2lvbl0uZGVzdHJveWVkICYmICF0aGlzLmNsb3NlZCAmJiAhdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIGgyU3RhdGUuc3RyZWFtcyAtPSAxXG4gICAgICB1dGlsLmRlc3Ryb3koc3RyZWFtLCBlcnIpXG4gICAgfVxuICB9KVxuXG4gIC8vIHN0cmVhbS5vbignYWJvcnRlZCcsICgpID0+IHtcbiAgLy8gICAvLyBUT0RPKEhUVFAvMik6IFN1cHBvcnQgYWJvcnRlZFxuICAvLyB9KVxuXG4gIC8vIHN0cmVhbS5vbigndGltZW91dCcsICgpID0+IHtcbiAgLy8gICAvLyBUT0RPKEhUVFAvMik6IFN1cHBvcnQgdGltZW91dFxuICAvLyB9KVxuXG4gIC8vIHN0cmVhbS5vbigncHVzaCcsIGhlYWRlcnMgPT4ge1xuICAvLyAgIC8vIFRPRE8oSFRUUC8yKTogU3VwcG9yIHB1c2hcbiAgLy8gfSlcblxuICAvLyBzdHJlYW0ub24oJ3RyYWlsZXJzJywgaGVhZGVycyA9PiB7XG4gIC8vICAgLy8gVE9ETyhIVFRQLzIpOiBTdXBwb3J0IHRyYWlsZXJzXG4gIC8vIH0pXG5cbiAgcmV0dXJuIHRydWVcblxuICBmdW5jdGlvbiB3cml0ZUJvZHlIMiAoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IGFzc2VydGlvbiAqL1xuICAgIGlmICghYm9keSkge1xuICAgICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNCdWZmZXIoYm9keSkpIHtcbiAgICAgIGFzc2VydChjb250ZW50TGVuZ3RoID09PSBib2R5LmJ5dGVMZW5ndGgsICdidWZmZXIgYm9keSBtdXN0IGhhdmUgY29udGVudCBsZW5ndGgnKVxuICAgICAgc3RyZWFtLmNvcmsoKVxuICAgICAgc3RyZWFtLndyaXRlKGJvZHkpXG4gICAgICBzdHJlYW0udW5jb3JrKClcbiAgICAgIHN0cmVhbS5lbmQoKVxuICAgICAgcmVxdWVzdC5vbkJvZHlTZW50KGJvZHkpXG4gICAgICByZXF1ZXN0Lm9uUmVxdWVzdFNlbnQoKVxuICAgIH0gZWxzZSBpZiAodXRpbC5pc0Jsb2JMaWtlKGJvZHkpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkuc3RyZWFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdyaXRlSXRlcmFibGUoe1xuICAgICAgICAgIGNsaWVudCxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIGNvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgaDJzdHJlYW06IHN0cmVhbSxcbiAgICAgICAgICBleHBlY3RzUGF5bG9hZCxcbiAgICAgICAgICBib2R5OiBib2R5LnN0cmVhbSgpLFxuICAgICAgICAgIHNvY2tldDogY2xpZW50W2tTb2NrZXRdLFxuICAgICAgICAgIGhlYWRlcjogJydcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlQmxvYih7XG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgIGV4cGVjdHNQYXlsb2FkLFxuICAgICAgICAgIGgyc3RyZWFtOiBzdHJlYW0sXG4gICAgICAgICAgaGVhZGVyOiAnJyxcbiAgICAgICAgICBzb2NrZXQ6IGNsaWVudFtrU29ja2V0XVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodXRpbC5pc1N0cmVhbShib2R5KSkge1xuICAgICAgd3JpdGVTdHJlYW0oe1xuICAgICAgICBib2R5LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGNvbnRlbnRMZW5ndGgsXG4gICAgICAgIGV4cGVjdHNQYXlsb2FkLFxuICAgICAgICBzb2NrZXQ6IGNsaWVudFtrU29ja2V0XSxcbiAgICAgICAgaDJzdHJlYW06IHN0cmVhbSxcbiAgICAgICAgaGVhZGVyOiAnJ1xuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNJdGVyYWJsZShib2R5KSkge1xuICAgICAgd3JpdGVJdGVyYWJsZSh7XG4gICAgICAgIGJvZHksXG4gICAgICAgIGNsaWVudCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgY29udGVudExlbmd0aCxcbiAgICAgICAgZXhwZWN0c1BheWxvYWQsXG4gICAgICAgIGhlYWRlcjogJycsXG4gICAgICAgIGgyc3RyZWFtOiBzdHJlYW0sXG4gICAgICAgIHNvY2tldDogY2xpZW50W2tTb2NrZXRdXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZmFsc2UpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtICh7IGgyc3RyZWFtLCBib2R5LCBjbGllbnQsIHJlcXVlc3QsIHNvY2tldCwgY29udGVudExlbmd0aCwgaGVhZGVyLCBleHBlY3RzUGF5bG9hZCB9KSB7XG4gIGFzc2VydChjb250ZW50TGVuZ3RoICE9PSAwIHx8IGNsaWVudFtrUnVubmluZ10gPT09IDAsICdzdHJlYW0gYm9keSBjYW5ub3QgYmUgcGlwZWxpbmVkJylcblxuICBpZiAoY2xpZW50W2tIVFRQQ29ublZlcnNpb25dID09PSAnaDInKSB7XG4gICAgLy8gRm9yIEhUVFAvMiwgaXMgZW5vdWdoIHRvIHBpcGUgdGhlIHN0cmVhbVxuICAgIGNvbnN0IHBpcGUgPSBwaXBlbGluZShcbiAgICAgIGJvZHksXG4gICAgICBoMnN0cmVhbSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHV0aWwuZGVzdHJveShib2R5LCBlcnIpXG4gICAgICAgICAgdXRpbC5kZXN0cm95KGgyc3RyZWFtLCBlcnIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIHBpcGUub24oJ2RhdGEnLCBvblBpcGVEYXRhKVxuICAgIHBpcGUub25jZSgnZW5kJywgKCkgPT4ge1xuICAgICAgcGlwZS5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uUGlwZURhdGEpXG4gICAgICB1dGlsLmRlc3Ryb3kocGlwZSlcbiAgICB9KVxuXG4gICAgZnVuY3Rpb24gb25QaXBlRGF0YSAoY2h1bmspIHtcbiAgICAgIHJlcXVlc3Qub25Cb2R5U2VudChjaHVuaylcbiAgICB9XG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBmaW5pc2hlZCA9IGZhbHNlXG5cbiAgY29uc3Qgd3JpdGVyID0gbmV3IEFzeW5jV3JpdGVyKHsgc29ja2V0LCByZXF1ZXN0LCBjb250ZW50TGVuZ3RoLCBjbGllbnQsIGV4cGVjdHNQYXlsb2FkLCBoZWFkZXIgfSlcblxuICBjb25zdCBvbkRhdGEgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAoIXdyaXRlci53cml0ZShjaHVuaykgJiYgdGhpcy5wYXVzZSkge1xuICAgICAgICB0aGlzLnBhdXNlKClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHV0aWwuZGVzdHJveSh0aGlzLCBlcnIpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9uRHJhaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYm9keS5yZXN1bWUpIHtcbiAgICAgIGJvZHkucmVzdW1lKClcbiAgICB9XG4gIH1cbiAgY29uc3Qgb25BYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBlcnIgPSBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gb25GaW5pc2hlZChlcnIpKVxuICB9XG4gIGNvbnN0IG9uRmluaXNoZWQgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBmaW5pc2hlZCA9IHRydWVcblxuICAgIGFzc2VydChzb2NrZXQuZGVzdHJveWVkIHx8IChzb2NrZXRba1dyaXRpbmddICYmIGNsaWVudFtrUnVubmluZ10gPD0gMSkpXG5cbiAgICBzb2NrZXRcbiAgICAgIC5vZmYoJ2RyYWluJywgb25EcmFpbilcbiAgICAgIC5vZmYoJ2Vycm9yJywgb25GaW5pc2hlZClcblxuICAgIGJvZHlcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uRGF0YSlcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25GaW5pc2hlZClcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkZpbmlzaGVkKVxuICAgICAgLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uQWJvcnQpXG5cbiAgICBpZiAoIWVycikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgd3JpdGVyLmVuZCgpXG4gICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICBlcnIgPSBlclxuICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlci5kZXN0cm95KGVycilcblxuICAgIGlmIChlcnIgJiYgKGVyci5jb2RlICE9PSAnVU5EX0VSUl9JTkZPJyB8fCBlcnIubWVzc2FnZSAhPT0gJ3Jlc2V0JykpIHtcbiAgICAgIHV0aWwuZGVzdHJveShib2R5LCBlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHV0aWwuZGVzdHJveShib2R5KVxuICAgIH1cbiAgfVxuXG4gIGJvZHlcbiAgICAub24oJ2RhdGEnLCBvbkRhdGEpXG4gICAgLm9uKCdlbmQnLCBvbkZpbmlzaGVkKVxuICAgIC5vbignZXJyb3InLCBvbkZpbmlzaGVkKVxuICAgIC5vbignY2xvc2UnLCBvbkFib3J0KVxuXG4gIGlmIChib2R5LnJlc3VtZSkge1xuICAgIGJvZHkucmVzdW1lKClcbiAgfVxuXG4gIHNvY2tldFxuICAgIC5vbignZHJhaW4nLCBvbkRyYWluKVxuICAgIC5vbignZXJyb3InLCBvbkZpbmlzaGVkKVxufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUJsb2IgKHsgaDJzdHJlYW0sIGJvZHksIGNsaWVudCwgcmVxdWVzdCwgc29ja2V0LCBjb250ZW50TGVuZ3RoLCBoZWFkZXIsIGV4cGVjdHNQYXlsb2FkIH0pIHtcbiAgYXNzZXJ0KGNvbnRlbnRMZW5ndGggPT09IGJvZHkuc2l6ZSwgJ2Jsb2IgYm9keSBtdXN0IGhhdmUgY29udGVudCBsZW5ndGgnKVxuXG4gIGNvbnN0IGlzSDIgPSBjbGllbnRba0hUVFBDb25uVmVyc2lvbl0gPT09ICdoMidcbiAgdHJ5IHtcbiAgICBpZiAoY29udGVudExlbmd0aCAhPSBudWxsICYmIGNvbnRlbnRMZW5ndGggIT09IGJvZHkuc2l6ZSkge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpXG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXdhaXQgYm9keS5hcnJheUJ1ZmZlcigpKVxuXG4gICAgaWYgKGlzSDIpIHtcbiAgICAgIGgyc3RyZWFtLmNvcmsoKVxuICAgICAgaDJzdHJlYW0ud3JpdGUoYnVmZmVyKVxuICAgICAgaDJzdHJlYW0udW5jb3JrKClcbiAgICB9IGVsc2Uge1xuICAgICAgc29ja2V0LmNvcmsoKVxuICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn1jb250ZW50LWxlbmd0aDogJHtjb250ZW50TGVuZ3RofVxcclxcblxcclxcbmAsICdsYXRpbjEnKVxuICAgICAgc29ja2V0LndyaXRlKGJ1ZmZlcilcbiAgICAgIHNvY2tldC51bmNvcmsoKVxuICAgIH1cblxuICAgIHJlcXVlc3Qub25Cb2R5U2VudChidWZmZXIpXG4gICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcblxuICAgIGlmICghZXhwZWN0c1BheWxvYWQpIHtcbiAgICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICAgIH1cblxuICAgIHJlc3VtZShjbGllbnQpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHV0aWwuZGVzdHJveShpc0gyID8gaDJzdHJlYW0gOiBzb2NrZXQsIGVycilcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUl0ZXJhYmxlICh7IGgyc3RyZWFtLCBib2R5LCBjbGllbnQsIHJlcXVlc3QsIHNvY2tldCwgY29udGVudExlbmd0aCwgaGVhZGVyLCBleHBlY3RzUGF5bG9hZCB9KSB7XG4gIGFzc2VydChjb250ZW50TGVuZ3RoICE9PSAwIHx8IGNsaWVudFtrUnVubmluZ10gPT09IDAsICdpdGVyYXRvciBib2R5IGNhbm5vdCBiZSBwaXBlbGluZWQnKVxuXG4gIGxldCBjYWxsYmFjayA9IG51bGxcbiAgZnVuY3Rpb24gb25EcmFpbiAoKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjb25zdCBjYiA9IGNhbGxiYWNrXG4gICAgICBjYWxsYmFjayA9IG51bGxcbiAgICAgIGNiKClcbiAgICB9XG4gIH1cblxuICBjb25zdCB3YWl0Rm9yRHJhaW4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXNzZXJ0KGNhbGxiYWNrID09PSBudWxsKVxuXG4gICAgaWYgKHNvY2tldFtrRXJyb3JdKSB7XG4gICAgICByZWplY3Qoc29ja2V0W2tFcnJvcl0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrID0gcmVzb2x2ZVxuICAgIH1cbiAgfSlcblxuICBpZiAoY2xpZW50W2tIVFRQQ29ublZlcnNpb25dID09PSAnaDInKSB7XG4gICAgaDJzdHJlYW1cbiAgICAgIC5vbignY2xvc2UnLCBvbkRyYWluKVxuICAgICAgLm9uKCdkcmFpbicsIG9uRHJhaW4pXG5cbiAgICB0cnkge1xuICAgICAgLy8gSXQncyB1cCB0byB0aGUgdXNlciB0byBzb21laG93IGFib3J0IHRoZSBhc3luYyBpdGVyYWJsZS5cbiAgICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgYm9keSkge1xuICAgICAgICBpZiAoc29ja2V0W2tFcnJvcl0pIHtcbiAgICAgICAgICB0aHJvdyBzb2NrZXRba0Vycm9yXVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzID0gaDJzdHJlYW0ud3JpdGUoY2h1bmspXG4gICAgICAgIHJlcXVlc3Qub25Cb2R5U2VudChjaHVuaylcbiAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICBhd2FpdCB3YWl0Rm9yRHJhaW4oKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoMnN0cmVhbS5kZXN0cm95KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcbiAgICAgIGgyc3RyZWFtLmVuZCgpXG4gICAgICBoMnN0cmVhbVxuICAgICAgICAub2ZmKCdjbG9zZScsIG9uRHJhaW4pXG4gICAgICAgIC5vZmYoJ2RyYWluJywgb25EcmFpbilcbiAgICB9XG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIHNvY2tldFxuICAgIC5vbignY2xvc2UnLCBvbkRyYWluKVxuICAgIC5vbignZHJhaW4nLCBvbkRyYWluKVxuXG4gIGNvbnN0IHdyaXRlciA9IG5ldyBBc3luY1dyaXRlcih7IHNvY2tldCwgcmVxdWVzdCwgY29udGVudExlbmd0aCwgY2xpZW50LCBleHBlY3RzUGF5bG9hZCwgaGVhZGVyIH0pXG4gIHRyeSB7XG4gICAgLy8gSXQncyB1cCB0byB0aGUgdXNlciB0byBzb21laG93IGFib3J0IHRoZSBhc3luYyBpdGVyYWJsZS5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGJvZHkpIHtcbiAgICAgIGlmIChzb2NrZXRba0Vycm9yXSkge1xuICAgICAgICB0aHJvdyBzb2NrZXRba0Vycm9yXVxuICAgICAgfVxuXG4gICAgICBpZiAoIXdyaXRlci53cml0ZShjaHVuaykpIHtcbiAgICAgICAgYXdhaXQgd2FpdEZvckRyYWluKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZXIuZW5kKClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgd3JpdGVyLmRlc3Ryb3koZXJyKVxuICB9IGZpbmFsbHkge1xuICAgIHNvY2tldFxuICAgICAgLm9mZignY2xvc2UnLCBvbkRyYWluKVxuICAgICAgLm9mZignZHJhaW4nLCBvbkRyYWluKVxuICB9XG59XG5cbmNsYXNzIEFzeW5jV3JpdGVyIHtcbiAgY29uc3RydWN0b3IgKHsgc29ja2V0LCByZXF1ZXN0LCBjb250ZW50TGVuZ3RoLCBjbGllbnQsIGV4cGVjdHNQYXlsb2FkLCBoZWFkZXIgfSkge1xuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0XG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdFxuICAgIHRoaXMuY29udGVudExlbmd0aCA9IGNvbnRlbnRMZW5ndGhcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudFxuICAgIHRoaXMuYnl0ZXNXcml0dGVuID0gMFxuICAgIHRoaXMuZXhwZWN0c1BheWxvYWQgPSBleHBlY3RzUGF5bG9hZFxuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyXG5cbiAgICBzb2NrZXRba1dyaXRpbmddID0gdHJ1ZVxuICB9XG5cbiAgd3JpdGUgKGNodW5rKSB7XG4gICAgY29uc3QgeyBzb2NrZXQsIHJlcXVlc3QsIGNvbnRlbnRMZW5ndGgsIGNsaWVudCwgYnl0ZXNXcml0dGVuLCBleHBlY3RzUGF5bG9hZCwgaGVhZGVyIH0gPSB0aGlzXG5cbiAgICBpZiAoc29ja2V0W2tFcnJvcl0pIHtcbiAgICAgIHRocm93IHNvY2tldFtrRXJyb3JdXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGxlbiA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGNodW5rKVxuICAgIGlmICghbGVuKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIFdlIHNob3VsZCBkZWZlciB3cml0aW5nIGNodW5rcy5cbiAgICBpZiAoY29udGVudExlbmd0aCAhPT0gbnVsbCAmJiBieXRlc1dyaXR0ZW4gKyBsZW4gPiBjb250ZW50TGVuZ3RoKSB7XG4gICAgICBpZiAoY2xpZW50W2tTdHJpY3RDb250ZW50TGVuZ3RoXSkge1xuICAgICAgICB0aHJvdyBuZXcgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yKClcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5lbWl0V2FybmluZyhuZXcgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yKCkpXG4gICAgfVxuXG4gICAgc29ja2V0LmNvcmsoKVxuXG4gICAgaWYgKGJ5dGVzV3JpdHRlbiA9PT0gMCkge1xuICAgICAgaWYgKCFleHBlY3RzUGF5bG9hZCkge1xuICAgICAgICBzb2NrZXRba1Jlc2V0XSA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRlbnRMZW5ndGggPT09IG51bGwpIHtcbiAgICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn10cmFuc2Zlci1lbmNvZGluZzogY2h1bmtlZFxcclxcbmAsICdsYXRpbjEnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn1jb250ZW50LWxlbmd0aDogJHtjb250ZW50TGVuZ3RofVxcclxcblxcclxcbmAsICdsYXRpbjEnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb250ZW50TGVuZ3RoID09PSBudWxsKSB7XG4gICAgICBzb2NrZXQud3JpdGUoYFxcclxcbiR7bGVuLnRvU3RyaW5nKDE2KX1cXHJcXG5gLCAnbGF0aW4xJylcbiAgICB9XG5cbiAgICB0aGlzLmJ5dGVzV3JpdHRlbiArPSBsZW5cblxuICAgIGNvbnN0IHJldCA9IHNvY2tldC53cml0ZShjaHVuaylcblxuICAgIHNvY2tldC51bmNvcmsoKVxuXG4gICAgcmVxdWVzdC5vbkJvZHlTZW50KGNodW5rKVxuXG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIGlmIChzb2NrZXRba1BhcnNlcl0udGltZW91dCAmJiBzb2NrZXRba1BhcnNlcl0udGltZW91dFR5cGUgPT09IFRJTUVPVVRfSEVBREVSUykge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogb25seSBmb3IgamVzdFxuICAgICAgICBpZiAoc29ja2V0W2tQYXJzZXJdLnRpbWVvdXQucmVmcmVzaCkge1xuICAgICAgICAgIHNvY2tldFtrUGFyc2VyXS50aW1lb3V0LnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgZW5kICgpIHtcbiAgICBjb25zdCB7IHNvY2tldCwgY29udGVudExlbmd0aCwgY2xpZW50LCBieXRlc1dyaXR0ZW4sIGV4cGVjdHNQYXlsb2FkLCBoZWFkZXIsIHJlcXVlc3QgfSA9IHRoaXNcbiAgICByZXF1ZXN0Lm9uUmVxdWVzdFNlbnQoKVxuXG4gICAgc29ja2V0W2tXcml0aW5nXSA9IGZhbHNlXG5cbiAgICBpZiAoc29ja2V0W2tFcnJvcl0pIHtcbiAgICAgIHRocm93IHNvY2tldFtrRXJyb3JdXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChieXRlc1dyaXR0ZW4gPT09IDApIHtcbiAgICAgIGlmIChleHBlY3RzUGF5bG9hZCkge1xuICAgICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMy4yXG4gICAgICAgIC8vIEEgdXNlciBhZ2VudCBTSE9VTEQgc2VuZCBhIENvbnRlbnQtTGVuZ3RoIGluIGEgcmVxdWVzdCBtZXNzYWdlIHdoZW5cbiAgICAgICAgLy8gbm8gVHJhbnNmZXItRW5jb2RpbmcgaXMgc2VudCBhbmQgdGhlIHJlcXVlc3QgbWV0aG9kIGRlZmluZXMgYSBtZWFuaW5nXG4gICAgICAgIC8vIGZvciBhbiBlbmNsb3NlZCBwYXlsb2FkIGJvZHkuXG5cbiAgICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn1jb250ZW50LWxlbmd0aDogMFxcclxcblxcclxcbmAsICdsYXRpbjEnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn1cXHJcXG5gLCAnbGF0aW4xJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRlbnRMZW5ndGggPT09IG51bGwpIHtcbiAgICAgIHNvY2tldC53cml0ZSgnXFxyXFxuMFxcclxcblxcclxcbicsICdsYXRpbjEnKVxuICAgIH1cblxuICAgIGlmIChjb250ZW50TGVuZ3RoICE9PSBudWxsICYmIGJ5dGVzV3JpdHRlbiAhPT0gY29udGVudExlbmd0aCkge1xuICAgICAgaWYgKGNsaWVudFtrU3RyaWN0Q29udGVudExlbmd0aF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc29ja2V0W2tQYXJzZXJdLnRpbWVvdXQgJiYgc29ja2V0W2tQYXJzZXJdLnRpbWVvdXRUeXBlID09PSBUSU1FT1VUX0hFQURFUlMpIHtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBvbmx5IGZvciBqZXN0XG4gICAgICBpZiAoc29ja2V0W2tQYXJzZXJdLnRpbWVvdXQucmVmcmVzaCkge1xuICAgICAgICBzb2NrZXRba1BhcnNlcl0udGltZW91dC5yZWZyZXNoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXN1bWUoY2xpZW50KVxuICB9XG5cbiAgZGVzdHJveSAoZXJyKSB7XG4gICAgY29uc3QgeyBzb2NrZXQsIGNsaWVudCB9ID0gdGhpc1xuXG4gICAgc29ja2V0W2tXcml0aW5nXSA9IGZhbHNlXG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBhc3NlcnQoY2xpZW50W2tSdW5uaW5nXSA8PSAxLCAncGlwZWxpbmUgc2hvdWxkIG9ubHkgY29udGFpbiB0aGlzIHJlcXVlc3QnKVxuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgZXJyKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlcnJvclJlcXVlc3QgKGNsaWVudCwgcmVxdWVzdCwgZXJyKSB7XG4gIHRyeSB7XG4gICAgcmVxdWVzdC5vbkVycm9yKGVycilcbiAgICBhc3NlcnQocmVxdWVzdC5hYm9ydGVkKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjbGllbnQuZW1pdCgnZXJyb3InLCBlcnIpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDbGllbnRcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4ndXNlIHN0cmljdCdcblxuLy8gRXh0cmFjdGVkIGZyb20gbm9kZS9saWIvaW50ZXJuYWwvZml4ZWRfcXVldWUuanNcblxuLy8gQ3VycmVudGx5IG9wdGltYWwgcXVldWUgc2l6ZSwgdGVzdGVkIG9uIFY4IDYuMCAtIDYuNi4gTXVzdCBiZSBwb3dlciBvZiB0d28uXG5jb25zdCBrU2l6ZSA9IDIwNDg7XG5jb25zdCBrTWFzayA9IGtTaXplIC0gMTtcblxuLy8gVGhlIEZpeGVkUXVldWUgaXMgaW1wbGVtZW50ZWQgYXMgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgZml4ZWQtc2l6ZVxuLy8gY2lyY3VsYXIgYnVmZmVycy4gSXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczpcbi8vXG4vLyAgaGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsXG4vLyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbi8vICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdlxuLy8gKy0tLS0tLS0tLS0tKyA8LS0tLS1cXCAgICAgICArLS0tLS0tLS0tLS0rIDwtLS0tLS1cXCAgICAgICAgICstLS0tLS0tLS0tLStcbi8vIHwgIFtudWxsXSAgIHwgICAgICAgIFxcLS0tLS0gfCAgIG5leHQgICAgfCAgICAgICAgIFxcLS0tLS0tLSB8ICAgbmV4dCAgICB8XG4vLyArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbi8vIHwgICBpdGVtICAgIHwgPC0tIGJvdHRvbSAgICB8ICAgaXRlbSAgICB8IDwtLSBib3R0b20gICAgICAgfCAgW2VtcHR5XSAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICBbZW1wdHldICB8XG4vLyB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgIHwgIFtlbXB0eV0gIHxcbi8vIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgfCAgW2VtcHR5XSAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgYm90dG9tIC0tPiB8ICAgaXRlbSAgICB8XG4vLyB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHxcbi8vIHwgICAgLi4uICAgIHwgICAgICAgICAgICAgICB8ICAgIC4uLiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAuLi4gICAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHxcbi8vIHwgIFtlbXB0eV0gIHwgPC0tIHRvcCAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfFxuLy8gfCAgW2VtcHR5XSAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyB8ICBbZW1wdHldICB8ICAgICAgICAgICAgICAgfCAgW2VtcHR5XSAgfCA8LS0gdG9wICB0b3AgLS0+IHwgIFtlbXB0eV0gIHxcbi8vICstLS0tLS0tLS0tLSsgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuLy9cbi8vIE9yLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSBjaXJjdWxhciBidWZmZXIsIGl0IGxvb2tzIHNvbWV0aGluZ1xuLy8gbGlrZSBlaXRoZXIgb2YgdGhlc2U6XG4vL1xuLy8gIGhlYWQgICB0YWlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZCAgIHRhaWxcbi8vICAgIHwgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfFxuLy8gICAgdiAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICB2XG4vLyArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbi8vIHwgIFtudWxsXSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgW251bGxdICAgfFxuLy8gKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4vLyB8ICBbZW1wdHldICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHxcbi8vIHwgIFtlbXB0eV0gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfFxuLy8gfCAgIGl0ZW0gICAgfCA8LS0gYm90dG9tICAgICAgICAgICAgdG9wIC0tPiB8ICBbZW1wdHldICB8XG4vLyB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFtlbXB0eV0gIHxcbi8vIHwgIFtlbXB0eV0gIHwgPC0tIHRvcCAgICAgICAgICAgIGJvdHRvbSAtLT4gfCAgIGl0ZW0gICAgfFxuLy8gfCAgW2VtcHR5XSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbi8vXG4vLyBBZGRpbmcgYSB2YWx1ZSBtZWFucyBtb3ZpbmcgYHRvcGAgZm9yd2FyZCBieSBvbmUsIHJlbW92aW5nIG1lYW5zXG4vLyBtb3ZpbmcgYGJvdHRvbWAgZm9yd2FyZCBieSBvbmUuIEFmdGVyIHJlYWNoaW5nIHRoZSBlbmQsIHRoZSBxdWV1ZVxuLy8gd3JhcHMgYXJvdW5kLlxuLy9cbi8vIFdoZW4gYHRvcCA9PT0gYm90dG9tYCB0aGUgY3VycmVudCBxdWV1ZSBpcyBlbXB0eSBhbmQgd2hlblxuLy8gYHRvcCArIDEgPT09IGJvdHRvbWAgaXQncyBmdWxsLiBUaGlzIHdhc3RlcyBhIHNpbmdsZSBzcGFjZSBvZiBzdG9yYWdlXG4vLyBidXQgYWxsb3dzIG11Y2ggcXVpY2tlciBjaGVja3MuXG5cbmNsYXNzIEZpeGVkQ2lyY3VsYXJCdWZmZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJvdHRvbSA9IDA7XG4gICAgdGhpcy50b3AgPSAwO1xuICAgIHRoaXMubGlzdCA9IG5ldyBBcnJheShrU2l6ZSk7XG4gICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9wID09PSB0aGlzLmJvdHRvbTtcbiAgfVxuXG4gIGlzRnVsbCgpIHtcbiAgICByZXR1cm4gKCh0aGlzLnRvcCArIDEpICYga01hc2spID09PSB0aGlzLmJvdHRvbTtcbiAgfVxuXG4gIHB1c2goZGF0YSkge1xuICAgIHRoaXMubGlzdFt0aGlzLnRvcF0gPSBkYXRhO1xuICAgIHRoaXMudG9wID0gKHRoaXMudG9wICsgMSkgJiBrTWFzaztcbiAgfVxuXG4gIHNoaWZ0KCkge1xuICAgIGNvbnN0IG5leHRJdGVtID0gdGhpcy5saXN0W3RoaXMuYm90dG9tXTtcbiAgICBpZiAobmV4dEl0ZW0gPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiBudWxsO1xuICAgIHRoaXMubGlzdFt0aGlzLmJvdHRvbV0gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ib3R0b20gPSAodGhpcy5ib3R0b20gKyAxKSAmIGtNYXNrO1xuICAgIHJldHVybiBuZXh0SXRlbTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEZpeGVkUXVldWUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBuZXcgRml4ZWRDaXJjdWxhckJ1ZmZlcigpO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1c2goZGF0YSkge1xuICAgIGlmICh0aGlzLmhlYWQuaXNGdWxsKCkpIHtcbiAgICAgIC8vIEhlYWQgaXMgZnVsbDogQ3JlYXRlcyBhIG5ldyBxdWV1ZSwgc2V0cyB0aGUgb2xkIHF1ZXVlJ3MgYC5uZXh0YCB0byBpdCxcbiAgICAgIC8vIGFuZCBzZXRzIGl0IGFzIHRoZSBuZXcgbWFpbiBxdWV1ZS5cbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0ID0gbmV3IEZpeGVkQ2lyY3VsYXJCdWZmZXIoKTtcbiAgICB9XG4gICAgdGhpcy5oZWFkLnB1c2goZGF0YSk7XG4gIH1cblxuICBzaGlmdCgpIHtcbiAgICBjb25zdCB0YWlsID0gdGhpcy50YWlsO1xuICAgIGNvbnN0IG5leHQgPSB0YWlsLnNoaWZ0KCk7XG4gICAgaWYgKHRhaWwuaXNFbXB0eSgpICYmIHRhaWwubmV4dCAhPT0gbnVsbCkge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYW5vdGhlciBxdWV1ZSwgaXQgZm9ybXMgdGhlIG5ldyB0YWlsLlxuICAgICAgdGhpcy50YWlsID0gdGFpbC5uZXh0O1xuICAgIH1cbiAgICByZXR1cm4gbmV4dDtcbiAgfVxufTtcbiIsICJjb25zdCB7IGtGcmVlLCBrQ29ubmVjdGVkLCBrUGVuZGluZywga1F1ZXVlZCwga1J1bm5pbmcsIGtTaXplIH0gPSByZXF1aXJlKCcuL2NvcmUvc3ltYm9scycpXG5jb25zdCBrUG9vbCA9IFN5bWJvbCgncG9vbCcpXG5cbmNsYXNzIFBvb2xTdGF0cyB7XG4gIGNvbnN0cnVjdG9yIChwb29sKSB7XG4gICAgdGhpc1trUG9vbF0gPSBwb29sXG4gIH1cblxuICBnZXQgY29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gdGhpc1trUG9vbF1ba0Nvbm5lY3RlZF1cbiAgfVxuXG4gIGdldCBmcmVlICgpIHtcbiAgICByZXR1cm4gdGhpc1trUG9vbF1ba0ZyZWVdXG4gIH1cblxuICBnZXQgcGVuZGluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1Bvb2xdW2tQZW5kaW5nXVxuICB9XG5cbiAgZ2V0IHF1ZXVlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1Bvb2xdW2tRdWV1ZWRdXG4gIH1cblxuICBnZXQgcnVubmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1Bvb2xdW2tSdW5uaW5nXVxuICB9XG5cbiAgZ2V0IHNpemUgKCkge1xuICAgIHJldHVybiB0aGlzW2tQb29sXVtrU2l6ZV1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xTdGF0c1xuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBEaXNwYXRjaGVyQmFzZSA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hlci1iYXNlJylcbmNvbnN0IEZpeGVkUXVldWUgPSByZXF1aXJlKCcuL25vZGUvZml4ZWQtcXVldWUnKVxuY29uc3QgeyBrQ29ubmVjdGVkLCBrU2l6ZSwga1J1bm5pbmcsIGtQZW5kaW5nLCBrUXVldWVkLCBrQnVzeSwga0ZyZWUsIGtVcmwsIGtDbG9zZSwga0Rlc3Ryb3ksIGtEaXNwYXRjaCB9ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgUG9vbFN0YXRzID0gcmVxdWlyZSgnLi9wb29sLXN0YXRzJylcblxuY29uc3Qga0NsaWVudHMgPSBTeW1ib2woJ2NsaWVudHMnKVxuY29uc3Qga05lZWREcmFpbiA9IFN5bWJvbCgnbmVlZERyYWluJylcbmNvbnN0IGtRdWV1ZSA9IFN5bWJvbCgncXVldWUnKVxuY29uc3Qga0Nsb3NlZFJlc29sdmUgPSBTeW1ib2woJ2Nsb3NlZCByZXNvbHZlJylcbmNvbnN0IGtPbkRyYWluID0gU3ltYm9sKCdvbkRyYWluJylcbmNvbnN0IGtPbkNvbm5lY3QgPSBTeW1ib2woJ29uQ29ubmVjdCcpXG5jb25zdCBrT25EaXNjb25uZWN0ID0gU3ltYm9sKCdvbkRpc2Nvbm5lY3QnKVxuY29uc3Qga09uQ29ubmVjdGlvbkVycm9yID0gU3ltYm9sKCdvbkNvbm5lY3Rpb25FcnJvcicpXG5jb25zdCBrR2V0RGlzcGF0Y2hlciA9IFN5bWJvbCgnZ2V0IGRpc3BhdGNoZXInKVxuY29uc3Qga0FkZENsaWVudCA9IFN5bWJvbCgnYWRkIGNsaWVudCcpXG5jb25zdCBrUmVtb3ZlQ2xpZW50ID0gU3ltYm9sKCdyZW1vdmUgY2xpZW50JylcbmNvbnN0IGtTdGF0cyA9IFN5bWJvbCgnc3RhdHMnKVxuXG5jbGFzcyBQb29sQmFzZSBleHRlbmRzIERpc3BhdGNoZXJCYXNlIHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXNba1F1ZXVlXSA9IG5ldyBGaXhlZFF1ZXVlKClcbiAgICB0aGlzW2tDbGllbnRzXSA9IFtdXG4gICAgdGhpc1trUXVldWVkXSA9IDBcblxuICAgIGNvbnN0IHBvb2wgPSB0aGlzXG5cbiAgICB0aGlzW2tPbkRyYWluXSA9IGZ1bmN0aW9uIG9uRHJhaW4gKG9yaWdpbiwgdGFyZ2V0cykge1xuICAgICAgY29uc3QgcXVldWUgPSBwb29sW2tRdWV1ZV1cblxuICAgICAgbGV0IG5lZWREcmFpbiA9IGZhbHNlXG5cbiAgICAgIHdoaWxlICghbmVlZERyYWluKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBxdWV1ZS5zaGlmdCgpXG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgcG9vbFtrUXVldWVkXS0tXG4gICAgICAgIG5lZWREcmFpbiA9ICF0aGlzLmRpc3BhdGNoKGl0ZW0ub3B0cywgaXRlbS5oYW5kbGVyKVxuICAgICAgfVxuXG4gICAgICB0aGlzW2tOZWVkRHJhaW5dID0gbmVlZERyYWluXG5cbiAgICAgIGlmICghdGhpc1trTmVlZERyYWluXSAmJiBwb29sW2tOZWVkRHJhaW5dKSB7XG4gICAgICAgIHBvb2xba05lZWREcmFpbl0gPSBmYWxzZVxuICAgICAgICBwb29sLmVtaXQoJ2RyYWluJywgb3JpZ2luLCBbcG9vbCwgLi4udGFyZ2V0c10pXG4gICAgICB9XG5cbiAgICAgIGlmIChwb29sW2tDbG9zZWRSZXNvbHZlXSAmJiBxdWV1ZS5pc0VtcHR5KCkpIHtcbiAgICAgICAgUHJvbWlzZVxuICAgICAgICAgIC5hbGwocG9vbFtrQ2xpZW50c10ubWFwKGMgPT4gYy5jbG9zZSgpKSlcbiAgICAgICAgICAudGhlbihwb29sW2tDbG9zZWRSZXNvbHZlXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzW2tPbkNvbm5lY3RdID0gKG9yaWdpbiwgdGFyZ2V0cykgPT4ge1xuICAgICAgcG9vbC5lbWl0KCdjb25uZWN0Jywgb3JpZ2luLCBbcG9vbCwgLi4udGFyZ2V0c10pXG4gICAgfVxuXG4gICAgdGhpc1trT25EaXNjb25uZWN0XSA9IChvcmlnaW4sIHRhcmdldHMsIGVycikgPT4ge1xuICAgICAgcG9vbC5lbWl0KCdkaXNjb25uZWN0Jywgb3JpZ2luLCBbcG9vbCwgLi4udGFyZ2V0c10sIGVycilcbiAgICB9XG5cbiAgICB0aGlzW2tPbkNvbm5lY3Rpb25FcnJvcl0gPSAob3JpZ2luLCB0YXJnZXRzLCBlcnIpID0+IHtcbiAgICAgIHBvb2wuZW1pdCgnY29ubmVjdGlvbkVycm9yJywgb3JpZ2luLCBbcG9vbCwgLi4udGFyZ2V0c10sIGVycilcbiAgICB9XG5cbiAgICB0aGlzW2tTdGF0c10gPSBuZXcgUG9vbFN0YXRzKHRoaXMpXG4gIH1cblxuICBnZXQgW2tCdXN5XSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba05lZWREcmFpbl1cbiAgfVxuXG4gIGdldCBba0Nvbm5lY3RlZF0gKCkge1xuICAgIHJldHVybiB0aGlzW2tDbGllbnRzXS5maWx0ZXIoY2xpZW50ID0+IGNsaWVudFtrQ29ubmVjdGVkXSkubGVuZ3RoXG4gIH1cblxuICBnZXQgW2tGcmVlXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0NsaWVudHNdLmZpbHRlcihjbGllbnQgPT4gY2xpZW50W2tDb25uZWN0ZWRdICYmICFjbGllbnRba05lZWREcmFpbl0pLmxlbmd0aFxuICB9XG5cbiAgZ2V0IFtrUGVuZGluZ10gKCkge1xuICAgIGxldCByZXQgPSB0aGlzW2tRdWV1ZWRdXG4gICAgZm9yIChjb25zdCB7IFtrUGVuZGluZ106IHBlbmRpbmcgfSBvZiB0aGlzW2tDbGllbnRzXSkge1xuICAgICAgcmV0ICs9IHBlbmRpbmdcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgZ2V0IFtrUnVubmluZ10gKCkge1xuICAgIGxldCByZXQgPSAwXG4gICAgZm9yIChjb25zdCB7IFtrUnVubmluZ106IHJ1bm5pbmcgfSBvZiB0aGlzW2tDbGllbnRzXSkge1xuICAgICAgcmV0ICs9IHJ1bm5pbmdcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgZ2V0IFtrU2l6ZV0gKCkge1xuICAgIGxldCByZXQgPSB0aGlzW2tRdWV1ZWRdXG4gICAgZm9yIChjb25zdCB7IFtrU2l6ZV06IHNpemUgfSBvZiB0aGlzW2tDbGllbnRzXSkge1xuICAgICAgcmV0ICs9IHNpemVcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgZ2V0IHN0YXRzICgpIHtcbiAgICByZXR1cm4gdGhpc1trU3RhdHNdXG4gIH1cblxuICBhc3luYyBba0Nsb3NlXSAoKSB7XG4gICAgaWYgKHRoaXNba1F1ZXVlXS5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzW2tDbGllbnRzXS5tYXAoYyA9PiBjLmNsb3NlKCkpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpc1trQ2xvc2VkUmVzb2x2ZV0gPSByZXNvbHZlXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIFtrRGVzdHJveV0gKGVycikge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpc1trUXVldWVdLnNoaWZ0KClcbiAgICAgIGlmICghaXRlbSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaXRlbS5oYW5kbGVyLm9uRXJyb3IoZXJyKVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzW2tDbGllbnRzXS5tYXAoYyA9PiBjLmRlc3Ryb3koZXJyKSkpXG4gIH1cblxuICBba0Rpc3BhdGNoXSAob3B0cywgaGFuZGxlcikge1xuICAgIGNvbnN0IGRpc3BhdGNoZXIgPSB0aGlzW2tHZXREaXNwYXRjaGVyXSgpXG5cbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIHRoaXNba05lZWREcmFpbl0gPSB0cnVlXG4gICAgICB0aGlzW2tRdWV1ZV0ucHVzaCh7IG9wdHMsIGhhbmRsZXIgfSlcbiAgICAgIHRoaXNba1F1ZXVlZF0rK1xuICAgIH0gZWxzZSBpZiAoIWRpc3BhdGNoZXIuZGlzcGF0Y2gob3B0cywgaGFuZGxlcikpIHtcbiAgICAgIGRpc3BhdGNoZXJba05lZWREcmFpbl0gPSB0cnVlXG4gICAgICB0aGlzW2tOZWVkRHJhaW5dID0gIXRoaXNba0dldERpc3BhdGNoZXJdKClcbiAgICB9XG5cbiAgICByZXR1cm4gIXRoaXNba05lZWREcmFpbl1cbiAgfVxuXG4gIFtrQWRkQ2xpZW50XSAoY2xpZW50KSB7XG4gICAgY2xpZW50XG4gICAgICAub24oJ2RyYWluJywgdGhpc1trT25EcmFpbl0pXG4gICAgICAub24oJ2Nvbm5lY3QnLCB0aGlzW2tPbkNvbm5lY3RdKVxuICAgICAgLm9uKCdkaXNjb25uZWN0JywgdGhpc1trT25EaXNjb25uZWN0XSlcbiAgICAgIC5vbignY29ubmVjdGlvbkVycm9yJywgdGhpc1trT25Db25uZWN0aW9uRXJyb3JdKVxuXG4gICAgdGhpc1trQ2xpZW50c10ucHVzaChjbGllbnQpXG5cbiAgICBpZiAodGhpc1trTmVlZERyYWluXSkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzW2tOZWVkRHJhaW5dKSB7XG4gICAgICAgICAgdGhpc1trT25EcmFpbl0oY2xpZW50W2tVcmxdLCBbdGhpcywgY2xpZW50XSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgW2tSZW1vdmVDbGllbnRdIChjbGllbnQpIHtcbiAgICBjbGllbnQuY2xvc2UoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gdGhpc1trQ2xpZW50c10uaW5kZXhPZihjbGllbnQpXG4gICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICB0aGlzW2tDbGllbnRzXS5zcGxpY2UoaWR4LCAxKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzW2tOZWVkRHJhaW5dID0gdGhpc1trQ2xpZW50c10uc29tZShkaXNwYXRjaGVyID0+IChcbiAgICAgICFkaXNwYXRjaGVyW2tOZWVkRHJhaW5dICYmXG4gICAgICBkaXNwYXRjaGVyLmNsb3NlZCAhPT0gdHJ1ZSAmJlxuICAgICAgZGlzcGF0Y2hlci5kZXN0cm95ZWQgIT09IHRydWVcbiAgICApKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBQb29sQmFzZSxcbiAga0NsaWVudHMsXG4gIGtOZWVkRHJhaW4sXG4gIGtBZGRDbGllbnQsXG4gIGtSZW1vdmVDbGllbnQsXG4gIGtHZXREaXNwYXRjaGVyXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHtcbiAgUG9vbEJhc2UsXG4gIGtDbGllbnRzLFxuICBrTmVlZERyYWluLFxuICBrQWRkQ2xpZW50LFxuICBrR2V0RGlzcGF0Y2hlclxufSA9IHJlcXVpcmUoJy4vcG9vbC1iYXNlJylcbmNvbnN0IENsaWVudCA9IHJlcXVpcmUoJy4vY2xpZW50JylcbmNvbnN0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3Jcbn0gPSByZXF1aXJlKCcuL2NvcmUvZXJyb3JzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL2NvcmUvdXRpbCcpXG5jb25zdCB7IGtVcmwsIGtJbnRlcmNlcHRvcnMgfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcbmNvbnN0IGJ1aWxkQ29ubmVjdG9yID0gcmVxdWlyZSgnLi9jb3JlL2Nvbm5lY3QnKVxuXG5jb25zdCBrT3B0aW9ucyA9IFN5bWJvbCgnb3B0aW9ucycpXG5jb25zdCBrQ29ubmVjdGlvbnMgPSBTeW1ib2woJ2Nvbm5lY3Rpb25zJylcbmNvbnN0IGtGYWN0b3J5ID0gU3ltYm9sKCdmYWN0b3J5JylcblxuZnVuY3Rpb24gZGVmYXVsdEZhY3RvcnkgKG9yaWdpbiwgb3B0cykge1xuICByZXR1cm4gbmV3IENsaWVudChvcmlnaW4sIG9wdHMpXG59XG5cbmNsYXNzIFBvb2wgZXh0ZW5kcyBQb29sQmFzZSB7XG4gIGNvbnN0cnVjdG9yIChvcmlnaW4sIHtcbiAgICBjb25uZWN0aW9ucyxcbiAgICBmYWN0b3J5ID0gZGVmYXVsdEZhY3RvcnksXG4gICAgY29ubmVjdCxcbiAgICBjb25uZWN0VGltZW91dCxcbiAgICB0bHMsXG4gICAgbWF4Q2FjaGVkU2Vzc2lvbnMsXG4gICAgc29ja2V0UGF0aCxcbiAgICBhdXRvU2VsZWN0RmFtaWx5LFxuICAgIGF1dG9TZWxlY3RGYW1pbHlBdHRlbXB0VGltZW91dCxcbiAgICBhbGxvd0gyLFxuICAgIC4uLm9wdGlvbnNcbiAgfSA9IHt9KSB7XG4gICAgc3VwZXIoKVxuXG4gICAgaWYgKGNvbm5lY3Rpb25zICE9IG51bGwgJiYgKCFOdW1iZXIuaXNGaW5pdGUoY29ubmVjdGlvbnMpIHx8IGNvbm5lY3Rpb25zIDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjb25uZWN0aW9ucycpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ZhY3RvcnkgbXVzdCBiZSBhIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgaWYgKGNvbm5lY3QgIT0gbnVsbCAmJiB0eXBlb2YgY29ubmVjdCAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgY29ubmVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY29ubmVjdCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0JylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbm5lY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbm5lY3QgPSBidWlsZENvbm5lY3Rvcih7XG4gICAgICAgIC4uLnRscyxcbiAgICAgICAgbWF4Q2FjaGVkU2Vzc2lvbnMsXG4gICAgICAgIGFsbG93SDIsXG4gICAgICAgIHNvY2tldFBhdGgsXG4gICAgICAgIHRpbWVvdXQ6IGNvbm5lY3RUaW1lb3V0LFxuICAgICAgICAuLi4odXRpbC5ub2RlSGFzQXV0b1NlbGVjdEZhbWlseSAmJiBhdXRvU2VsZWN0RmFtaWx5ID8geyBhdXRvU2VsZWN0RmFtaWx5LCBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQgfSA6IHVuZGVmaW5lZCksXG4gICAgICAgIC4uLmNvbm5lY3RcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpc1trSW50ZXJjZXB0b3JzXSA9IG9wdGlvbnMuaW50ZXJjZXB0b3JzICYmIG9wdGlvbnMuaW50ZXJjZXB0b3JzLlBvb2wgJiYgQXJyYXkuaXNBcnJheShvcHRpb25zLmludGVyY2VwdG9ycy5Qb29sKVxuICAgICAgPyBvcHRpb25zLmludGVyY2VwdG9ycy5Qb29sXG4gICAgICA6IFtdXG4gICAgdGhpc1trQ29ubmVjdGlvbnNdID0gY29ubmVjdGlvbnMgfHwgbnVsbFxuICAgIHRoaXNba1VybF0gPSB1dGlsLnBhcnNlT3JpZ2luKG9yaWdpbilcbiAgICB0aGlzW2tPcHRpb25zXSA9IHsgLi4udXRpbC5kZWVwQ2xvbmUob3B0aW9ucyksIGNvbm5lY3QsIGFsbG93SDIgfVxuICAgIHRoaXNba09wdGlvbnNdLmludGVyY2VwdG9ycyA9IG9wdGlvbnMuaW50ZXJjZXB0b3JzXG4gICAgICA/IHsgLi4ub3B0aW9ucy5pbnRlcmNlcHRvcnMgfVxuICAgICAgOiB1bmRlZmluZWRcbiAgICB0aGlzW2tGYWN0b3J5XSA9IGZhY3RvcnlcblxuICAgIHRoaXMub24oJ2Nvbm5lY3Rpb25FcnJvcicsIChvcmlnaW4sIHRhcmdldHMsIGVycm9yKSA9PiB7XG4gICAgICAvLyBJZiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLCB3ZSByZW1vdmUgdGhlIGNsaWVudCBmcm9tIHRoZSBwb29sLFxuICAgICAgLy8gYW5kIGVtaXQgYSBjb25uZWN0aW9uRXJyb3IgZXZlbnQuIFRoZXkgd2lsbCBub3QgYmUgcmUtdXNlZC5cbiAgICAgIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8zODk1XG4gICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICAgIC8vIERvIG5vdCB1c2Uga1JlbW92ZUNsaWVudCBoZXJlLCBhcyBpdCB3aWxsIGNsb3NlIHRoZSBjbGllbnQsXG4gICAgICAgIC8vIGJ1dCB0aGUgY2xpZW50IGNhbm5vdCBiZSBjbG9zZWQgaW4gdGhpcyBzdGF0ZS5cbiAgICAgICAgY29uc3QgaWR4ID0gdGhpc1trQ2xpZW50c10uaW5kZXhPZih0YXJnZXQpXG4gICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgdGhpc1trQ2xpZW50c10uc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBba0dldERpc3BhdGNoZXJdICgpIHtcbiAgICBsZXQgZGlzcGF0Y2hlciA9IHRoaXNba0NsaWVudHNdLmZpbmQoZGlzcGF0Y2hlciA9PiAhZGlzcGF0Y2hlcltrTmVlZERyYWluXSlcblxuICAgIGlmIChkaXNwYXRjaGVyKSB7XG4gICAgICByZXR1cm4gZGlzcGF0Y2hlclxuICAgIH1cblxuICAgIGlmICghdGhpc1trQ29ubmVjdGlvbnNdIHx8IHRoaXNba0NsaWVudHNdLmxlbmd0aCA8IHRoaXNba0Nvbm5lY3Rpb25zXSkge1xuICAgICAgZGlzcGF0Y2hlciA9IHRoaXNba0ZhY3RvcnldKHRoaXNba1VybF0sIHRoaXNba09wdGlvbnNdKVxuICAgICAgdGhpc1trQWRkQ2xpZW50XShkaXNwYXRjaGVyKVxuICAgIH1cblxuICAgIHJldHVybiBkaXNwYXRjaGVyXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQb29sXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHtcbiAgQmFsYW5jZWRQb29sTWlzc2luZ1Vwc3RyZWFtRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yXG59ID0gcmVxdWlyZSgnLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7XG4gIFBvb2xCYXNlLFxuICBrQ2xpZW50cyxcbiAga05lZWREcmFpbixcbiAga0FkZENsaWVudCxcbiAga1JlbW92ZUNsaWVudCxcbiAga0dldERpc3BhdGNoZXJcbn0gPSByZXF1aXJlKCcuL3Bvb2wtYmFzZScpXG5jb25zdCBQb29sID0gcmVxdWlyZSgnLi9wb29sJylcbmNvbnN0IHsga1VybCwga0ludGVyY2VwdG9ycyB9ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgeyBwYXJzZU9yaWdpbiB9ID0gcmVxdWlyZSgnLi9jb3JlL3V0aWwnKVxuY29uc3Qga0ZhY3RvcnkgPSBTeW1ib2woJ2ZhY3RvcnknKVxuXG5jb25zdCBrT3B0aW9ucyA9IFN5bWJvbCgnb3B0aW9ucycpXG5jb25zdCBrR3JlYXRlc3RDb21tb25EaXZpc29yID0gU3ltYm9sKCdrR3JlYXRlc3RDb21tb25EaXZpc29yJylcbmNvbnN0IGtDdXJyZW50V2VpZ2h0ID0gU3ltYm9sKCdrQ3VycmVudFdlaWdodCcpXG5jb25zdCBrSW5kZXggPSBTeW1ib2woJ2tJbmRleCcpXG5jb25zdCBrV2VpZ2h0ID0gU3ltYm9sKCdrV2VpZ2h0JylcbmNvbnN0IGtNYXhXZWlnaHRQZXJTZXJ2ZXIgPSBTeW1ib2woJ2tNYXhXZWlnaHRQZXJTZXJ2ZXInKVxuY29uc3Qga0Vycm9yUGVuYWx0eSA9IFN5bWJvbCgna0Vycm9yUGVuYWx0eScpXG5cbmZ1bmN0aW9uIGdldEdyZWF0ZXN0Q29tbW9uRGl2aXNvciAoYSwgYikge1xuICBpZiAoYiA9PT0gMCkgcmV0dXJuIGFcbiAgcmV0dXJuIGdldEdyZWF0ZXN0Q29tbW9uRGl2aXNvcihiLCBhICUgYilcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEZhY3RvcnkgKG9yaWdpbiwgb3B0cykge1xuICByZXR1cm4gbmV3IFBvb2wob3JpZ2luLCBvcHRzKVxufVxuXG5jbGFzcyBCYWxhbmNlZFBvb2wgZXh0ZW5kcyBQb29sQmFzZSB7XG4gIGNvbnN0cnVjdG9yICh1cHN0cmVhbXMgPSBbXSwgeyBmYWN0b3J5ID0gZGVmYXVsdEZhY3RvcnksIC4uLm9wdHMgfSA9IHt9KSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpc1trT3B0aW9uc10gPSBvcHRzXG4gICAgdGhpc1trSW5kZXhdID0gLTFcbiAgICB0aGlzW2tDdXJyZW50V2VpZ2h0XSA9IDBcblxuICAgIHRoaXNba01heFdlaWdodFBlclNlcnZlcl0gPSB0aGlzW2tPcHRpb25zXS5tYXhXZWlnaHRQZXJTZXJ2ZXIgfHwgMTAwXG4gICAgdGhpc1trRXJyb3JQZW5hbHR5XSA9IHRoaXNba09wdGlvbnNdLmVycm9yUGVuYWx0eSB8fCAxNVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHVwc3RyZWFtcykpIHtcbiAgICAgIHVwc3RyZWFtcyA9IFt1cHN0cmVhbXNdXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ZhY3RvcnkgbXVzdCBiZSBhIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgdGhpc1trSW50ZXJjZXB0b3JzXSA9IG9wdHMuaW50ZXJjZXB0b3JzICYmIG9wdHMuaW50ZXJjZXB0b3JzLkJhbGFuY2VkUG9vbCAmJiBBcnJheS5pc0FycmF5KG9wdHMuaW50ZXJjZXB0b3JzLkJhbGFuY2VkUG9vbClcbiAgICAgID8gb3B0cy5pbnRlcmNlcHRvcnMuQmFsYW5jZWRQb29sXG4gICAgICA6IFtdXG4gICAgdGhpc1trRmFjdG9yeV0gPSBmYWN0b3J5XG5cbiAgICBmb3IgKGNvbnN0IHVwc3RyZWFtIG9mIHVwc3RyZWFtcykge1xuICAgICAgdGhpcy5hZGRVcHN0cmVhbSh1cHN0cmVhbSlcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQmFsYW5jZWRQb29sU3RhdHMoKVxuICB9XG5cbiAgYWRkVXBzdHJlYW0gKHVwc3RyZWFtKSB7XG4gICAgY29uc3QgdXBzdHJlYW1PcmlnaW4gPSBwYXJzZU9yaWdpbih1cHN0cmVhbSkub3JpZ2luXG5cbiAgICBpZiAodGhpc1trQ2xpZW50c10uZmluZCgocG9vbCkgPT4gKFxuICAgICAgcG9vbFtrVXJsXS5vcmlnaW4gPT09IHVwc3RyZWFtT3JpZ2luICYmXG4gICAgICBwb29sLmNsb3NlZCAhPT0gdHJ1ZSAmJlxuICAgICAgcG9vbC5kZXN0cm95ZWQgIT09IHRydWVcbiAgICApKSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgY29uc3QgcG9vbCA9IHRoaXNba0ZhY3RvcnldKHVwc3RyZWFtT3JpZ2luLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzW2tPcHRpb25zXSkpXG5cbiAgICB0aGlzW2tBZGRDbGllbnRdKHBvb2wpXG4gICAgcG9vbC5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgIHBvb2xba1dlaWdodF0gPSBNYXRoLm1pbih0aGlzW2tNYXhXZWlnaHRQZXJTZXJ2ZXJdLCBwb29sW2tXZWlnaHRdICsgdGhpc1trRXJyb3JQZW5hbHR5XSlcbiAgICB9KVxuXG4gICAgcG9vbC5vbignY29ubmVjdGlvbkVycm9yJywgKCkgPT4ge1xuICAgICAgcG9vbFtrV2VpZ2h0XSA9IE1hdGgubWF4KDEsIHBvb2xba1dlaWdodF0gLSB0aGlzW2tFcnJvclBlbmFsdHldKVxuICAgICAgdGhpcy5fdXBkYXRlQmFsYW5jZWRQb29sU3RhdHMoKVxuICAgIH0pXG5cbiAgICBwb29sLm9uKCdkaXNjb25uZWN0JywgKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IGVyciA9IGFyZ3NbMl1cbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdVTkRfRVJSX1NPQ0tFVCcpIHtcbiAgICAgICAgLy8gZGVjcmVhc2UgdGhlIHdlaWdodCBvZiB0aGUgcG9vbC5cbiAgICAgICAgcG9vbFtrV2VpZ2h0XSA9IE1hdGgubWF4KDEsIHBvb2xba1dlaWdodF0gLSB0aGlzW2tFcnJvclBlbmFsdHldKVxuICAgICAgICB0aGlzLl91cGRhdGVCYWxhbmNlZFBvb2xTdGF0cygpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGZvciAoY29uc3QgY2xpZW50IG9mIHRoaXNba0NsaWVudHNdKSB7XG4gICAgICBjbGllbnRba1dlaWdodF0gPSB0aGlzW2tNYXhXZWlnaHRQZXJTZXJ2ZXJdXG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQmFsYW5jZWRQb29sU3RhdHMoKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIF91cGRhdGVCYWxhbmNlZFBvb2xTdGF0cyAoKSB7XG4gICAgdGhpc1trR3JlYXRlc3RDb21tb25EaXZpc29yXSA9IHRoaXNba0NsaWVudHNdLm1hcChwID0+IHBba1dlaWdodF0pLnJlZHVjZShnZXRHcmVhdGVzdENvbW1vbkRpdmlzb3IsIDApXG4gIH1cblxuICByZW1vdmVVcHN0cmVhbSAodXBzdHJlYW0pIHtcbiAgICBjb25zdCB1cHN0cmVhbU9yaWdpbiA9IHBhcnNlT3JpZ2luKHVwc3RyZWFtKS5vcmlnaW5cblxuICAgIGNvbnN0IHBvb2wgPSB0aGlzW2tDbGllbnRzXS5maW5kKChwb29sKSA9PiAoXG4gICAgICBwb29sW2tVcmxdLm9yaWdpbiA9PT0gdXBzdHJlYW1PcmlnaW4gJiZcbiAgICAgIHBvb2wuY2xvc2VkICE9PSB0cnVlICYmXG4gICAgICBwb29sLmRlc3Ryb3llZCAhPT0gdHJ1ZVxuICAgICkpXG5cbiAgICBpZiAocG9vbCkge1xuICAgICAgdGhpc1trUmVtb3ZlQ2xpZW50XShwb29sKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXQgdXBzdHJlYW1zICgpIHtcbiAgICByZXR1cm4gdGhpc1trQ2xpZW50c11cbiAgICAgIC5maWx0ZXIoZGlzcGF0Y2hlciA9PiBkaXNwYXRjaGVyLmNsb3NlZCAhPT0gdHJ1ZSAmJiBkaXNwYXRjaGVyLmRlc3Ryb3llZCAhPT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHApID0+IHBba1VybF0ub3JpZ2luKVxuICB9XG5cbiAgW2tHZXREaXNwYXRjaGVyXSAoKSB7XG4gICAgLy8gV2UgdmFsaWRhdGUgdGhhdCBwb29scyBpcyBncmVhdGVyIHRoYW4gMCxcbiAgICAvLyBvdGhlcndpc2Ugd2Ugd291bGQgaGF2ZSB0byB3YWl0IHVudGlsIGFuIHVwc3RyZWFtXG4gICAgLy8gaXMgYWRkZWQsIHdoaWNoIG1pZ2h0IG5ldmVyIGhhcHBlbi5cbiAgICBpZiAodGhpc1trQ2xpZW50c10ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQmFsYW5jZWRQb29sTWlzc2luZ1Vwc3RyZWFtRXJyb3IoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3BhdGNoZXIgPSB0aGlzW2tDbGllbnRzXS5maW5kKGRpc3BhdGNoZXIgPT4gKFxuICAgICAgIWRpc3BhdGNoZXJba05lZWREcmFpbl0gJiZcbiAgICAgIGRpc3BhdGNoZXIuY2xvc2VkICE9PSB0cnVlICYmXG4gICAgICBkaXNwYXRjaGVyLmRlc3Ryb3llZCAhPT0gdHJ1ZVxuICAgICkpXG5cbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFsbENsaWVudHNCdXN5ID0gdGhpc1trQ2xpZW50c10ubWFwKHBvb2wgPT4gcG9vbFtrTmVlZERyYWluXSkucmVkdWNlKChhLCBiKSA9PiBhICYmIGIsIHRydWUpXG5cbiAgICBpZiAoYWxsQ2xpZW50c0J1c3kpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCBjb3VudGVyID0gMFxuXG4gICAgbGV0IG1heFdlaWdodEluZGV4ID0gdGhpc1trQ2xpZW50c10uZmluZEluZGV4KHBvb2wgPT4gIXBvb2xba05lZWREcmFpbl0pXG5cbiAgICB3aGlsZSAoY291bnRlcisrIDwgdGhpc1trQ2xpZW50c10ubGVuZ3RoKSB7XG4gICAgICB0aGlzW2tJbmRleF0gPSAodGhpc1trSW5kZXhdICsgMSkgJSB0aGlzW2tDbGllbnRzXS5sZW5ndGhcbiAgICAgIGNvbnN0IHBvb2wgPSB0aGlzW2tDbGllbnRzXVt0aGlzW2tJbmRleF1dXG5cbiAgICAgIC8vIGZpbmQgcG9vbCBpbmRleCB3aXRoIHRoZSBsYXJnZXN0IHdlaWdodFxuICAgICAgaWYgKHBvb2xba1dlaWdodF0gPiB0aGlzW2tDbGllbnRzXVttYXhXZWlnaHRJbmRleF1ba1dlaWdodF0gJiYgIXBvb2xba05lZWREcmFpbl0pIHtcbiAgICAgICAgbWF4V2VpZ2h0SW5kZXggPSB0aGlzW2tJbmRleF1cbiAgICAgIH1cblxuICAgICAgLy8gZGVjcmVhc2UgdGhlIGN1cnJlbnQgd2VpZ2h0IGV2ZXJ5IGB0aGlzW2tDbGllbnRzXS5sZW5ndGhgLlxuICAgICAgaWYgKHRoaXNba0luZGV4XSA9PT0gMCkge1xuICAgICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgd2VpZ2h0IHRvIHRoZSBuZXh0IGxvd2VyIHdlaWdodC5cbiAgICAgICAgdGhpc1trQ3VycmVudFdlaWdodF0gPSB0aGlzW2tDdXJyZW50V2VpZ2h0XSAtIHRoaXNba0dyZWF0ZXN0Q29tbW9uRGl2aXNvcl1cblxuICAgICAgICBpZiAodGhpc1trQ3VycmVudFdlaWdodF0gPD0gMCkge1xuICAgICAgICAgIHRoaXNba0N1cnJlbnRXZWlnaHRdID0gdGhpc1trTWF4V2VpZ2h0UGVyU2VydmVyXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocG9vbFtrV2VpZ2h0XSA+PSB0aGlzW2tDdXJyZW50V2VpZ2h0XSAmJiAoIXBvb2xba05lZWREcmFpbl0pKSB7XG4gICAgICAgIHJldHVybiBwb29sXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpc1trQ3VycmVudFdlaWdodF0gPSB0aGlzW2tDbGllbnRzXVttYXhXZWlnaHRJbmRleF1ba1dlaWdodF1cbiAgICB0aGlzW2tJbmRleF0gPSBtYXhXZWlnaHRJbmRleFxuICAgIHJldHVybiB0aGlzW2tDbGllbnRzXVttYXhXZWlnaHRJbmRleF1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJhbGFuY2VkUG9vbFxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZTogb25seSBmb3IgTm9kZSAxMiAqL1xuXG5jb25zdCB7IGtDb25uZWN0ZWQsIGtTaXplIH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuXG5jbGFzcyBDb21wYXRXZWFrUmVmIHtcbiAgY29uc3RydWN0b3IgKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG4gIH1cblxuICBkZXJlZiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVba0Nvbm5lY3RlZF0gPT09IDAgJiYgdGhpcy52YWx1ZVtrU2l6ZV0gPT09IDBcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMudmFsdWVcbiAgfVxufVxuXG5jbGFzcyBDb21wYXRGaW5hbGl6ZXIge1xuICBjb25zdHJ1Y3RvciAoZmluYWxpemVyKSB7XG4gICAgdGhpcy5maW5hbGl6ZXIgPSBmaW5hbGl6ZXJcbiAgfVxuXG4gIHJlZ2lzdGVyIChkaXNwYXRjaGVyLCBrZXkpIHtcbiAgICBpZiAoZGlzcGF0Y2hlci5vbikge1xuICAgICAgZGlzcGF0Y2hlci5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgaWYgKGRpc3BhdGNoZXJba0Nvbm5lY3RlZF0gPT09IDAgJiYgZGlzcGF0Y2hlcltrU2l6ZV0gPT09IDApIHtcbiAgICAgICAgICB0aGlzLmZpbmFsaXplcihrZXkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAvLyBGSVhNRTogcmVtb3ZlIHdvcmthcm91bmQgd2hlbiB0aGUgTm9kZSBidWcgaXMgZml4ZWRcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy80OTM0NCNpc3N1ZWNvbW1lbnQtMTc0MTc3NjMwOFxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9WOF9DT1ZFUkFHRSkge1xuICAgIHJldHVybiB7XG4gICAgICBXZWFrUmVmOiBDb21wYXRXZWFrUmVmLFxuICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IENvbXBhdEZpbmFsaXplclxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIFdlYWtSZWY6IGdsb2JhbC5XZWFrUmVmIHx8IENvbXBhdFdlYWtSZWYsXG4gICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IGdsb2JhbC5GaW5hbGl6YXRpb25SZWdpc3RyeSB8fCBDb21wYXRGaW5hbGl6ZXJcbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuL2NvcmUvZXJyb3JzJylcbmNvbnN0IHsga0NsaWVudHMsIGtSdW5uaW5nLCBrQ2xvc2UsIGtEZXN0cm95LCBrRGlzcGF0Y2gsIGtJbnRlcmNlcHRvcnMgfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcbmNvbnN0IERpc3BhdGNoZXJCYXNlID0gcmVxdWlyZSgnLi9kaXNwYXRjaGVyLWJhc2UnKVxuY29uc3QgUG9vbCA9IHJlcXVpcmUoJy4vcG9vbCcpXG5jb25zdCBDbGllbnQgPSByZXF1aXJlKCcuL2NsaWVudCcpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi9jb3JlL3V0aWwnKVxuY29uc3QgY3JlYXRlUmVkaXJlY3RJbnRlcmNlcHRvciA9IHJlcXVpcmUoJy4vaW50ZXJjZXB0b3IvcmVkaXJlY3RJbnRlcmNlcHRvcicpXG5jb25zdCB7IFdlYWtSZWYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5IH0gPSByZXF1aXJlKCcuL2NvbXBhdC9kaXNwYXRjaGVyLXdlYWtyZWYnKSgpXG5cbmNvbnN0IGtPbkNvbm5lY3QgPSBTeW1ib2woJ29uQ29ubmVjdCcpXG5jb25zdCBrT25EaXNjb25uZWN0ID0gU3ltYm9sKCdvbkRpc2Nvbm5lY3QnKVxuY29uc3Qga09uQ29ubmVjdGlvbkVycm9yID0gU3ltYm9sKCdvbkNvbm5lY3Rpb25FcnJvcicpXG5jb25zdCBrTWF4UmVkaXJlY3Rpb25zID0gU3ltYm9sKCdtYXhSZWRpcmVjdGlvbnMnKVxuY29uc3Qga09uRHJhaW4gPSBTeW1ib2woJ29uRHJhaW4nKVxuY29uc3Qga0ZhY3RvcnkgPSBTeW1ib2woJ2ZhY3RvcnknKVxuY29uc3Qga0ZpbmFsaXplciA9IFN5bWJvbCgnZmluYWxpemVyJylcbmNvbnN0IGtPcHRpb25zID0gU3ltYm9sKCdvcHRpb25zJylcblxuZnVuY3Rpb24gZGVmYXVsdEZhY3RvcnkgKG9yaWdpbiwgb3B0cykge1xuICByZXR1cm4gb3B0cyAmJiBvcHRzLmNvbm5lY3Rpb25zID09PSAxXG4gICAgPyBuZXcgQ2xpZW50KG9yaWdpbiwgb3B0cylcbiAgICA6IG5ldyBQb29sKG9yaWdpbiwgb3B0cylcbn1cblxuY2xhc3MgQWdlbnQgZXh0ZW5kcyBEaXNwYXRjaGVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yICh7IGZhY3RvcnkgPSBkZWZhdWx0RmFjdG9yeSwgbWF4UmVkaXJlY3Rpb25zID0gMCwgY29ubmVjdCwgLi4ub3B0aW9ucyB9ID0ge30pIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGZhY3RvcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZmFjdG9yeSBtdXN0IGJlIGEgZnVuY3Rpb24uJylcbiAgICB9XG5cbiAgICBpZiAoY29ubmVjdCAhPSBudWxsICYmIHR5cGVvZiBjb25uZWN0ICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBjb25uZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb25uZWN0IG11c3QgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QnKVxuICAgIH1cblxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtYXhSZWRpcmVjdGlvbnMpIHx8IG1heFJlZGlyZWN0aW9ucyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWF4UmVkaXJlY3Rpb25zIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgIH1cblxuICAgIGlmIChjb25uZWN0ICYmIHR5cGVvZiBjb25uZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25uZWN0ID0geyAuLi5jb25uZWN0IH1cbiAgICB9XG5cbiAgICB0aGlzW2tJbnRlcmNlcHRvcnNdID0gb3B0aW9ucy5pbnRlcmNlcHRvcnMgJiYgb3B0aW9ucy5pbnRlcmNlcHRvcnMuQWdlbnQgJiYgQXJyYXkuaXNBcnJheShvcHRpb25zLmludGVyY2VwdG9ycy5BZ2VudClcbiAgICAgID8gb3B0aW9ucy5pbnRlcmNlcHRvcnMuQWdlbnRcbiAgICAgIDogW2NyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IoeyBtYXhSZWRpcmVjdGlvbnMgfSldXG5cbiAgICB0aGlzW2tPcHRpb25zXSA9IHsgLi4udXRpbC5kZWVwQ2xvbmUob3B0aW9ucyksIGNvbm5lY3QgfVxuICAgIHRoaXNba09wdGlvbnNdLmludGVyY2VwdG9ycyA9IG9wdGlvbnMuaW50ZXJjZXB0b3JzXG4gICAgICA/IHsgLi4ub3B0aW9ucy5pbnRlcmNlcHRvcnMgfVxuICAgICAgOiB1bmRlZmluZWRcbiAgICB0aGlzW2tNYXhSZWRpcmVjdGlvbnNdID0gbWF4UmVkaXJlY3Rpb25zXG4gICAgdGhpc1trRmFjdG9yeV0gPSBmYWN0b3J5XG4gICAgdGhpc1trQ2xpZW50c10gPSBuZXcgTWFwKClcbiAgICB0aGlzW2tGaW5hbGl6ZXJdID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBnYyBpcyB1bmRldGVybWluaXN0aWMgKi8ga2V5ID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXNba0NsaWVudHNdLmdldChrZXkpXG4gICAgICBpZiAocmVmICE9PSB1bmRlZmluZWQgJiYgcmVmLmRlcmVmKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzW2tDbGllbnRzXS5kZWxldGUoa2V5KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBhZ2VudCA9IHRoaXNcblxuICAgIHRoaXNba09uRHJhaW5dID0gKG9yaWdpbiwgdGFyZ2V0cykgPT4ge1xuICAgICAgYWdlbnQuZW1pdCgnZHJhaW4nLCBvcmlnaW4sIFthZ2VudCwgLi4udGFyZ2V0c10pXG4gICAgfVxuXG4gICAgdGhpc1trT25Db25uZWN0XSA9IChvcmlnaW4sIHRhcmdldHMpID0+IHtcbiAgICAgIGFnZW50LmVtaXQoJ2Nvbm5lY3QnLCBvcmlnaW4sIFthZ2VudCwgLi4udGFyZ2V0c10pXG4gICAgfVxuXG4gICAgdGhpc1trT25EaXNjb25uZWN0XSA9IChvcmlnaW4sIHRhcmdldHMsIGVycikgPT4ge1xuICAgICAgYWdlbnQuZW1pdCgnZGlzY29ubmVjdCcsIG9yaWdpbiwgW2FnZW50LCAuLi50YXJnZXRzXSwgZXJyKVxuICAgIH1cblxuICAgIHRoaXNba09uQ29ubmVjdGlvbkVycm9yXSA9IChvcmlnaW4sIHRhcmdldHMsIGVycikgPT4ge1xuICAgICAgYWdlbnQuZW1pdCgnY29ubmVjdGlvbkVycm9yJywgb3JpZ2luLCBbYWdlbnQsIC4uLnRhcmdldHNdLCBlcnIpXG4gICAgfVxuICB9XG5cbiAgZ2V0IFtrUnVubmluZ10gKCkge1xuICAgIGxldCByZXQgPSAwXG4gICAgZm9yIChjb25zdCByZWYgb2YgdGhpc1trQ2xpZW50c10udmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHJlZi5kZXJlZigpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZ2MgaXMgdW5kZXRlcm1pbmlzdGljICovXG4gICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgIHJldCArPSBjbGllbnRba1J1bm5pbmddXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIFtrRGlzcGF0Y2hdIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgbGV0IGtleVxuICAgIGlmIChvcHRzLm9yaWdpbiAmJiAodHlwZW9mIG9wdHMub3JpZ2luID09PSAnc3RyaW5nJyB8fCBvcHRzLm9yaWdpbiBpbnN0YW5jZW9mIFVSTCkpIHtcbiAgICAgIGtleSA9IFN0cmluZyhvcHRzLm9yaWdpbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdvcHRzLm9yaWdpbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyBvciBVUkwuJylcbiAgICB9XG5cbiAgICBjb25zdCByZWYgPSB0aGlzW2tDbGllbnRzXS5nZXQoa2V5KVxuXG4gICAgbGV0IGRpc3BhdGNoZXIgPSByZWYgPyByZWYuZGVyZWYoKSA6IG51bGxcbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIGRpc3BhdGNoZXIgPSB0aGlzW2tGYWN0b3J5XShvcHRzLm9yaWdpbiwgdGhpc1trT3B0aW9uc10pXG4gICAgICAgIC5vbignZHJhaW4nLCB0aGlzW2tPbkRyYWluXSlcbiAgICAgICAgLm9uKCdjb25uZWN0JywgdGhpc1trT25Db25uZWN0XSlcbiAgICAgICAgLm9uKCdkaXNjb25uZWN0JywgdGhpc1trT25EaXNjb25uZWN0XSlcbiAgICAgICAgLm9uKCdjb25uZWN0aW9uRXJyb3InLCB0aGlzW2tPbkNvbm5lY3Rpb25FcnJvcl0pXG5cbiAgICAgIHRoaXNba0NsaWVudHNdLnNldChrZXksIG5ldyBXZWFrUmVmKGRpc3BhdGNoZXIpKVxuICAgICAgdGhpc1trRmluYWxpemVyXS5yZWdpc3RlcihkaXNwYXRjaGVyLCBrZXkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3BhdGNoZXIuZGlzcGF0Y2gob3B0cywgaGFuZGxlcilcbiAgfVxuXG4gIGFzeW5jIFtrQ2xvc2VdICgpIHtcbiAgICBjb25zdCBjbG9zZVByb21pc2VzID0gW11cbiAgICBmb3IgKGNvbnN0IHJlZiBvZiB0aGlzW2tDbGllbnRzXS52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY2xpZW50ID0gcmVmLmRlcmVmKClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBnYyBpcyB1bmRldGVybWluaXN0aWMgKi9cbiAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgY2xvc2VQcm9taXNlcy5wdXNoKGNsaWVudC5jbG9zZSgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGNsb3NlUHJvbWlzZXMpXG4gIH1cblxuICBhc3luYyBba0Rlc3Ryb3ldIChlcnIpIHtcbiAgICBjb25zdCBkZXN0cm95UHJvbWlzZXMgPSBbXVxuICAgIGZvciAoY29uc3QgcmVmIG9mIHRoaXNba0NsaWVudHNdLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBjbGllbnQgPSByZWYuZGVyZWYoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IGdjIGlzIHVuZGV0ZXJtaW5pc3RpYyAqL1xuICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICBkZXN0cm95UHJvbWlzZXMucHVzaChjbGllbnQuZGVzdHJveShlcnIpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGRlc3Ryb3lQcm9taXNlcylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50XG4iLCAiLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvcHVsbC85MDdcblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IFJlYWRhYmxlIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgeyBSZXF1ZXN0QWJvcnRlZEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciwgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBSZWFkYWJsZVN0cmVhbUZyb20sIHRvVVNWU3RyaW5nIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG5sZXQgQmxvYlxuXG5jb25zdCBrQ29uc3VtZSA9IFN5bWJvbCgna0NvbnN1bWUnKVxuY29uc3Qga1JlYWRpbmcgPSBTeW1ib2woJ2tSZWFkaW5nJylcbmNvbnN0IGtCb2R5ID0gU3ltYm9sKCdrQm9keScpXG5jb25zdCBrQWJvcnQgPSBTeW1ib2woJ2Fib3J0JylcbmNvbnN0IGtDb250ZW50VHlwZSA9IFN5bWJvbCgna0NvbnRlbnRUeXBlJylcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgQm9keVJlYWRhYmxlIGV4dGVuZHMgUmVhZGFibGUge1xuICBjb25zdHJ1Y3RvciAoe1xuICAgIHJlc3VtZSxcbiAgICBhYm9ydCxcbiAgICBjb250ZW50VHlwZSA9ICcnLFxuICAgIGhpZ2hXYXRlck1hcmsgPSA2NCAqIDEwMjQgLy8gU2FtZSBhcyBub2RlanMgZnMgc3RyZWFtcy5cbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGF1dG9EZXN0cm95OiB0cnVlLFxuICAgICAgcmVhZDogcmVzdW1lLFxuICAgICAgaGlnaFdhdGVyTWFya1xuICAgIH0pXG5cbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRhdGFFbWl0dGVkID0gZmFsc2VcblxuICAgIHRoaXNba0Fib3J0XSA9IGFib3J0XG4gICAgdGhpc1trQ29uc3VtZV0gPSBudWxsXG4gICAgdGhpc1trQm9keV0gPSBudWxsXG4gICAgdGhpc1trQ29udGVudFR5cGVdID0gY29udGVudFR5cGVcblxuICAgIC8vIElzIHN0cmVhbSBiZWluZyBjb25zdW1lZCB0aHJvdWdoIFJlYWRhYmxlIEFQST9cbiAgICAvLyBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiBzbyB0aGF0IHdlIGF2b2lkIGNoZWNraW5nXG4gICAgLy8gZm9yICdkYXRhJyBhbmQgJ3JlYWRhYmxlJyBsaXN0ZW5lcnMgaW4gdGhlIGhvdCBwYXRoXG4gICAgLy8gaW5zaWRlIHB1c2goKS5cbiAgICB0aGlzW2tSZWFkaW5nXSA9IGZhbHNlXG4gIH1cblxuICBkZXN0cm95IChlcnIpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIE5vZGUgPCAxNlxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBpZiAoIWVyciAmJiAhdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgICBlcnIgPSBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpXG4gICAgfVxuXG4gICAgaWYgKGVycikge1xuICAgICAgdGhpc1trQWJvcnRdKClcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuZGVzdHJveShlcnIpXG4gIH1cblxuICBlbWl0IChldiwgLi4uYXJncykge1xuICAgIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgICAvLyBOb2RlIDwgMTYuN1xuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kYXRhRW1pdHRlZCA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGV2ID09PSAnZXJyb3InKSB7XG4gICAgICAvLyBOb2RlIDwgMTZcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZW1pdChldiwgLi4uYXJncylcbiAgfVxuXG4gIG9uIChldiwgLi4uYXJncykge1xuICAgIGlmIChldiA9PT0gJ2RhdGEnIHx8IGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgICB0aGlzW2tSZWFkaW5nXSA9IHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLm9uKGV2LCAuLi5hcmdzKVxuICB9XG5cbiAgYWRkTGlzdGVuZXIgKGV2LCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMub24oZXYsIC4uLmFyZ3MpXG4gIH1cblxuICBvZmYgKGV2LCAuLi5hcmdzKSB7XG4gICAgY29uc3QgcmV0ID0gc3VwZXIub2ZmKGV2LCAuLi5hcmdzKVxuICAgIGlmIChldiA9PT0gJ2RhdGEnIHx8IGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgICB0aGlzW2tSZWFkaW5nXSA9IChcbiAgICAgICAgdGhpcy5saXN0ZW5lckNvdW50KCdkYXRhJykgPiAwIHx8XG4gICAgICAgIHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDBcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGV2LCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMub2ZmKGV2LCAuLi5hcmdzKVxuICB9XG5cbiAgcHVzaCAoY2h1bmspIHtcbiAgICBpZiAodGhpc1trQ29uc3VtZV0gJiYgY2h1bmsgIT09IG51bGwgJiYgdGhpcy5yZWFkYWJsZUxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3VtZVB1c2godGhpc1trQ29uc3VtZV0sIGNodW5rKVxuICAgICAgcmV0dXJuIHRoaXNba1JlYWRpbmddID8gc3VwZXIucHVzaChjaHVuaykgOiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBzdXBlci5wdXNoKGNodW5rKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LXRleHRcbiAgYXN5bmMgdGV4dCAoKSB7XG4gICAgcmV0dXJuIGNvbnN1bWUodGhpcywgJ3RleHQnKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LWpzb25cbiAgYXN5bmMganNvbiAoKSB7XG4gICAgcmV0dXJuIGNvbnN1bWUodGhpcywgJ2pzb24nKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LWJsb2JcbiAgYXN5bmMgYmxvYiAoKSB7XG4gICAgcmV0dXJuIGNvbnN1bWUodGhpcywgJ2Jsb2InKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LWFycmF5YnVmZmVyXG4gIGFzeW5jIGFycmF5QnVmZmVyICgpIHtcbiAgICByZXR1cm4gY29uc3VtZSh0aGlzLCAnYXJyYXlCdWZmZXInKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LWZvcm1kYXRhXG4gIGFzeW5jIGZvcm1EYXRhICgpIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQuXG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKClcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS1ib2R5dXNlZFxuICBnZXQgYm9keVVzZWQgKCkge1xuICAgIHJldHVybiB1dGlsLmlzRGlzdHVyYmVkKHRoaXMpXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLWJvZHktYm9keVxuICBnZXQgYm9keSAoKSB7XG4gICAgaWYgKCF0aGlzW2tCb2R5XSkge1xuICAgICAgdGhpc1trQm9keV0gPSBSZWFkYWJsZVN0cmVhbUZyb20odGhpcylcbiAgICAgIGlmICh0aGlzW2tDb25zdW1lXSkge1xuICAgICAgICAvLyBUT0RPOiBJcyB0aGlzIHRoZSBiZXN0IHdheSB0byBmb3JjZSBhIGxvY2s/XG4gICAgICAgIHRoaXNba0JvZHldLmdldFJlYWRlcigpIC8vIEVuc3VyZSBzdHJlYW0gaXMgbG9ja2VkLlxuICAgICAgICBhc3NlcnQodGhpc1trQm9keV0ubG9ja2VkKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1trQm9keV1cbiAgfVxuXG4gIGR1bXAgKG9wdHMpIHtcbiAgICBsZXQgbGltaXQgPSBvcHRzICYmIE51bWJlci5pc0Zpbml0ZShvcHRzLmxpbWl0KSA/IG9wdHMubGltaXQgOiAyNjIxNDRcbiAgICBjb25zdCBzaWduYWwgPSBvcHRzICYmIG9wdHMuc2lnbmFsXG5cbiAgICBpZiAoc2lnbmFsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNpZ25hbCAhPT0gJ29iamVjdCcgfHwgISgnYWJvcnRlZCcgaW4gc2lnbmFsKSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc2lnbmFsIG11c3QgYmUgYW4gQWJvcnRTaWduYWwnKVxuICAgICAgICB9XG4gICAgICAgIHV0aWwudGhyb3dJZkFib3J0ZWQoc2lnbmFsKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNpZ25hbExpc3RlbmVyQ2xlYW51cCA9IHNpZ25hbFxuICAgICAgICA/IHV0aWwuYWRkQWJvcnRMaXN0ZW5lcihzaWduYWwsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxuICAgICAgICB9KVxuICAgICAgICA6IG5vb3BcblxuICAgICAgdGhpc1xuICAgICAgICAub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNpZ25hbExpc3RlbmVyQ2xlYW51cCgpXG4gICAgICAgICAgaWYgKHNpZ25hbCAmJiBzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgcmVqZWN0KHNpZ25hbC5yZWFzb24gfHwgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQnKSwgeyBuYW1lOiAnQWJvcnRFcnJvcicgfSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbignZXJyb3InLCBub29wKVxuICAgICAgICAub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgICAgICBsaW1pdCAtPSBjaHVuay5sZW5ndGhcbiAgICAgICAgICBpZiAobGltaXQgPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5yZXN1bWUoKVxuICAgIH0pXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcmVhZGFibGVzdHJlYW0tbG9ja2VkXG5mdW5jdGlvbiBpc0xvY2tlZCAoc2VsZikge1xuICAvLyBDb25zdW1lIGlzIGFuIGltcGxpY2l0IGxvY2suXG4gIHJldHVybiAoc2VsZltrQm9keV0gJiYgc2VsZltrQm9keV0ubG9ja2VkID09PSB0cnVlKSB8fCBzZWxmW2tDb25zdW1lXVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS11bnVzYWJsZVxuZnVuY3Rpb24gaXNVbnVzYWJsZSAoc2VsZikge1xuICByZXR1cm4gdXRpbC5pc0Rpc3R1cmJlZChzZWxmKSB8fCBpc0xvY2tlZChzZWxmKVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb25zdW1lIChzdHJlYW0sIHR5cGUpIHtcbiAgaWYgKGlzVW51c2FibGUoc3RyZWFtKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VudXNhYmxlJylcbiAgfVxuXG4gIGFzc2VydCghc3RyZWFtW2tDb25zdW1lXSlcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHN0cmVhbVtrQ29uc3VtZV0gPSB7XG4gICAgICB0eXBlLFxuICAgICAgc3RyZWFtLFxuICAgICAgcmVzb2x2ZSxcbiAgICAgIHJlamVjdCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICAgIGJvZHk6IFtdXG4gICAgfVxuXG4gICAgc3RyZWFtXG4gICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjb25zdW1lRmluaXNoKHRoaXNba0NvbnN1bWVdLCBlcnIpXG4gICAgICB9KVxuICAgICAgLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXNba0NvbnN1bWVdLmJvZHkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdW1lRmluaXNoKHRoaXNba0NvbnN1bWVdLCBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhjb25zdW1lU3RhcnQsIHN0cmVhbVtrQ29uc3VtZV0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVTdGFydCAoY29uc3VtZSkge1xuICBpZiAoY29uc3VtZS5ib2R5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCB7IF9yZWFkYWJsZVN0YXRlOiBzdGF0ZSB9ID0gY29uc3VtZS5zdHJlYW1cblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIHN0YXRlLmJ1ZmZlcikge1xuICAgIGNvbnN1bWVQdXNoKGNvbnN1bWUsIGNodW5rKVxuICB9XG5cbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBjb25zdW1lRW5kKHRoaXNba0NvbnN1bWVdKVxuICB9IGVsc2Uge1xuICAgIGNvbnN1bWUuc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdW1lRW5kKHRoaXNba0NvbnN1bWVdKVxuICAgIH0pXG4gIH1cblxuICBjb25zdW1lLnN0cmVhbS5yZXN1bWUoKVxuXG4gIHdoaWxlIChjb25zdW1lLnN0cmVhbS5yZWFkKCkgIT0gbnVsbCkge1xuICAgIC8vIExvb3BcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25zdW1lRW5kIChjb25zdW1lKSB7XG4gIGNvbnN0IHsgdHlwZSwgYm9keSwgcmVzb2x2ZSwgc3RyZWFtLCBsZW5ndGggfSA9IGNvbnN1bWVcblxuICB0cnkge1xuICAgIGlmICh0eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHJlc29sdmUodG9VU1ZTdHJpbmcoQnVmZmVyLmNvbmNhdChib2R5KSkpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnanNvbicpIHtcbiAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShCdWZmZXIuY29uY2F0KGJvZHkpKSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheUJ1ZmZlcicpIHtcbiAgICAgIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcblxuICAgICAgbGV0IHBvcyA9IDBcbiAgICAgIGZvciAoY29uc3QgYnVmIG9mIGJvZHkpIHtcbiAgICAgICAgZHN0LnNldChidWYsIHBvcylcbiAgICAgICAgcG9zICs9IGJ1Zi5ieXRlTGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoZHN0LmJ1ZmZlcilcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdibG9iJykge1xuICAgICAgaWYgKCFCbG9iKSB7XG4gICAgICAgIEJsb2IgPSByZXF1aXJlKCdidWZmZXInKS5CbG9iXG4gICAgICB9XG4gICAgICByZXNvbHZlKG5ldyBCbG9iKGJvZHksIHsgdHlwZTogc3RyZWFtW2tDb250ZW50VHlwZV0gfSkpXG4gICAgfVxuXG4gICAgY29uc3VtZUZpbmlzaChjb25zdW1lKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzdHJlYW0uZGVzdHJveShlcnIpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3VtZVB1c2ggKGNvbnN1bWUsIGNodW5rKSB7XG4gIGNvbnN1bWUubGVuZ3RoICs9IGNodW5rLmxlbmd0aFxuICBjb25zdW1lLmJvZHkucHVzaChjaHVuaylcbn1cblxuZnVuY3Rpb24gY29uc3VtZUZpbmlzaCAoY29uc3VtZSwgZXJyKSB7XG4gIGlmIChjb25zdW1lLmJvZHkgPT09IG51bGwpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChlcnIpIHtcbiAgICBjb25zdW1lLnJlamVjdChlcnIpXG4gIH0gZWxzZSB7XG4gICAgY29uc3VtZS5yZXNvbHZlKClcbiAgfVxuXG4gIGNvbnN1bWUudHlwZSA9IG51bGxcbiAgY29uc3VtZS5zdHJlYW0gPSBudWxsXG4gIGNvbnN1bWUucmVzb2x2ZSA9IG51bGxcbiAgY29uc3VtZS5yZWplY3QgPSBudWxsXG4gIGNvbnN1bWUubGVuZ3RoID0gMFxuICBjb25zdW1lLmJvZHkgPSBudWxsXG59XG4iLCAiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHtcbiAgUmVzcG9uc2VTdGF0dXNDb2RlRXJyb3Jcbn0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IHRvVVNWU3RyaW5nIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZXNvbHZlRXJyb3JCb2R5Q2FsbGJhY2sgKHsgY2FsbGJhY2ssIGJvZHksIGNvbnRlbnRUeXBlLCBzdGF0dXNDb2RlLCBzdGF0dXNNZXNzYWdlLCBoZWFkZXJzIH0pIHtcbiAgYXNzZXJ0KGJvZHkpXG5cbiAgbGV0IGNodW5rcyA9IFtdXG4gIGxldCBsaW1pdCA9IDBcblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGJvZHkpIHtcbiAgICBjaHVua3MucHVzaChjaHVuaylcbiAgICBsaW1pdCArPSBjaHVuay5sZW5ndGhcbiAgICBpZiAobGltaXQgPiAxMjggKiAxMDI0KSB7XG4gICAgICBjaHVua3MgPSBudWxsXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0dXNDb2RlID09PSAyMDQgfHwgIWNvbnRlbnRUeXBlIHx8ICFjaHVua3MpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrLCBuZXcgUmVzcG9uc2VTdGF0dXNDb2RlRXJyb3IoYFJlc3BvbnNlIHN0YXR1cyBjb2RlICR7c3RhdHVzQ29kZX0ke3N0YXR1c01lc3NhZ2UgPyBgOiAke3N0YXR1c01lc3NhZ2V9YCA6ICcnfWAsIHN0YXR1c0NvZGUsIGhlYWRlcnMpKVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoY29udGVudFR5cGUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZSh0b1VTVlN0cmluZyhCdWZmZXIuY29uY2F0KGNodW5rcykpKVxuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yKGBSZXNwb25zZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9JHtzdGF0dXNNZXNzYWdlID8gYDogJHtzdGF0dXNNZXNzYWdlfWAgOiAnJ31gLCBzdGF0dXNDb2RlLCBoZWFkZXJzLCBwYXlsb2FkKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChjb250ZW50VHlwZS5zdGFydHNXaXRoKCd0ZXh0LycpKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdG9VU1ZTdHJpbmcoQnVmZmVyLmNvbmNhdChjaHVua3MpKVxuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yKGBSZXNwb25zZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9JHtzdGF0dXNNZXNzYWdlID8gYDogJHtzdGF0dXNNZXNzYWdlfWAgOiAnJ31gLCBzdGF0dXNDb2RlLCBoZWFkZXJzLCBwYXlsb2FkKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gUHJvY2VzcyBpbiBhIGZhbGxiYWNrIGlmIGVycm9yXG4gIH1cblxuICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrLCBuZXcgUmVzcG9uc2VTdGF0dXNDb2RlRXJyb3IoYFJlc3BvbnNlIHN0YXR1cyBjb2RlICR7c3RhdHVzQ29kZX0ke3N0YXR1c01lc3NhZ2UgPyBgOiAke3N0YXR1c01lc3NhZ2V9YCA6ICcnfWAsIHN0YXR1c0NvZGUsIGhlYWRlcnMpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrIH1cbiIsICJjb25zdCB7IGFkZEFib3J0TGlzdGVuZXIgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IFJlcXVlc3RBYm9ydGVkRXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcblxuY29uc3Qga0xpc3RlbmVyID0gU3ltYm9sKCdrTGlzdGVuZXInKVxuY29uc3Qga1NpZ25hbCA9IFN5bWJvbCgna1NpZ25hbCcpXG5cbmZ1bmN0aW9uIGFib3J0IChzZWxmKSB7XG4gIGlmIChzZWxmLmFib3J0KSB7XG4gICAgc2VsZi5hYm9ydCgpXG4gIH0gZWxzZSB7XG4gICAgc2VsZi5vbkVycm9yKG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU2lnbmFsIChzZWxmLCBzaWduYWwpIHtcbiAgc2VsZltrU2lnbmFsXSA9IG51bGxcbiAgc2VsZltrTGlzdGVuZXJdID0gbnVsbFxuXG4gIGlmICghc2lnbmFsKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICBhYm9ydChzZWxmKVxuICAgIHJldHVyblxuICB9XG5cbiAgc2VsZltrU2lnbmFsXSA9IHNpZ25hbFxuICBzZWxmW2tMaXN0ZW5lcl0gPSAoKSA9PiB7XG4gICAgYWJvcnQoc2VsZilcbiAgfVxuXG4gIGFkZEFib3J0TGlzdGVuZXIoc2VsZltrU2lnbmFsXSwgc2VsZltrTGlzdGVuZXJdKVxufVxuXG5mdW5jdGlvbiByZW1vdmVTaWduYWwgKHNlbGYpIHtcbiAgaWYgKCFzZWxmW2tTaWduYWxdKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoJ3JlbW92ZUV2ZW50TGlzdGVuZXInIGluIHNlbGZba1NpZ25hbF0pIHtcbiAgICBzZWxmW2tTaWduYWxdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgc2VsZltrTGlzdGVuZXJdKVxuICB9IGVsc2Uge1xuICAgIHNlbGZba1NpZ25hbF0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgc2VsZltrTGlzdGVuZXJdKVxuICB9XG5cbiAgc2VsZltrU2lnbmFsXSA9IG51bGxcbiAgc2VsZltrTGlzdGVuZXJdID0gbnVsbFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRkU2lnbmFsLFxuICByZW1vdmVTaWduYWxcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgUmVhZGFibGUgPSByZXF1aXJlKCcuL3JlYWRhYmxlJylcbmNvbnN0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIFJlcXVlc3RBYm9ydGVkRXJyb3Jcbn0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsgZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBBc3luY1Jlc291cmNlIH0gPSByZXF1aXJlKCdhc3luY19ob29rcycpXG5jb25zdCB7IGFkZFNpZ25hbCwgcmVtb3ZlU2lnbmFsIH0gPSByZXF1aXJlKCcuL2Fib3J0LXNpZ25hbCcpXG5cbmNsYXNzIFJlcXVlc3RIYW5kbGVyIGV4dGVuZHMgQXN5bmNSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBjYWxsYmFjaykge1xuICAgIGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvcHRzJylcbiAgICB9XG5cbiAgICBjb25zdCB7IHNpZ25hbCwgbWV0aG9kLCBvcGFxdWUsIGJvZHksIG9uSW5mbywgcmVzcG9uc2VIZWFkZXJzLCB0aHJvd09uRXJyb3IsIGhpZ2hXYXRlck1hcmsgfSA9IG9wdHNcblxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjYWxsYmFjaycpXG4gICAgICB9XG5cbiAgICAgIGlmIChoaWdoV2F0ZXJNYXJrICYmICh0eXBlb2YgaGlnaFdhdGVyTWFyayAhPT0gJ251bWJlcicgfHwgaGlnaFdhdGVyTWFyayA8IDApKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBoaWdoV2F0ZXJNYXJrJylcbiAgICAgIH1cblxuICAgICAgaWYgKHNpZ25hbCAmJiB0eXBlb2Ygc2lnbmFsLm9uICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NpZ25hbCBtdXN0IGJlIGFuIEV2ZW50RW1pdHRlciBvciBFdmVudFRhcmdldCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgbWV0aG9kJylcbiAgICAgIH1cblxuICAgICAgaWYgKG9uSW5mbyAmJiB0eXBlb2Ygb25JbmZvICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkluZm8gY2FsbGJhY2snKVxuICAgICAgfVxuXG4gICAgICBzdXBlcignVU5ESUNJX1JFUVVFU1QnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgICAgdXRpbC5kZXN0cm95KGJvZHkub24oJ2Vycm9yJywgdXRpbC5ub3ApLCBlcnIpXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycyB8fCBudWxsXG4gICAgdGhpcy5vcGFxdWUgPSBvcGFxdWUgfHwgbnVsbFxuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xuICAgIHRoaXMucmVzID0gbnVsbFxuICAgIHRoaXMuYWJvcnQgPSBudWxsXG4gICAgdGhpcy5ib2R5ID0gYm9keVxuICAgIHRoaXMudHJhaWxlcnMgPSB7fVxuICAgIHRoaXMuY29udGV4dCA9IG51bGxcbiAgICB0aGlzLm9uSW5mbyA9IG9uSW5mbyB8fCBudWxsXG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB0aHJvd09uRXJyb3JcbiAgICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBoaWdoV2F0ZXJNYXJrXG5cbiAgICBpZiAodXRpbC5pc1N0cmVhbShib2R5KSkge1xuICAgICAgYm9keS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnIpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGFkZFNpZ25hbCh0aGlzLCBzaWduYWwpXG4gIH1cblxuICBvbkNvbm5lY3QgKGFib3J0LCBjb250ZXh0KSB7XG4gICAgaWYgKCF0aGlzLmNhbGxiYWNrKSB7XG4gICAgICB0aHJvdyBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpXG4gICAgfVxuXG4gICAgdGhpcy5hYm9ydCA9IGFib3J0XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dFxuICB9XG5cbiAgb25IZWFkZXJzIChzdGF0dXNDb2RlLCByYXdIZWFkZXJzLCByZXN1bWUsIHN0YXR1c01lc3NhZ2UpIHtcbiAgICBjb25zdCB7IGNhbGxiYWNrLCBvcGFxdWUsIGFib3J0LCBjb250ZXh0LCByZXNwb25zZUhlYWRlcnMsIGhpZ2hXYXRlck1hcmsgfSA9IHRoaXNcblxuICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZVJhd0hlYWRlcnMocmF3SGVhZGVycykgOiB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuXG4gICAgaWYgKHN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgIGlmICh0aGlzLm9uSW5mbykge1xuICAgICAgICB0aGlzLm9uSW5mbyh7IHN0YXR1c0NvZGUsIGhlYWRlcnMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZEhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZUhlYWRlcnMocmF3SGVhZGVycykgOiBoZWFkZXJzXG4gICAgY29uc3QgY29udGVudFR5cGUgPSBwYXJzZWRIZWFkZXJzWydjb250ZW50LXR5cGUnXVxuICAgIGNvbnN0IGJvZHkgPSBuZXcgUmVhZGFibGUoeyByZXN1bWUsIGFib3J0LCBjb250ZW50VHlwZSwgaGlnaFdhdGVyTWFyayB9KVxuXG4gICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICB0aGlzLnJlcyA9IGJvZHlcbiAgICBpZiAoY2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLnRocm93T25FcnJvciAmJiBzdGF0dXNDb2RlID49IDQwMCkge1xuICAgICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShnZXRSZXNvbHZlRXJyb3JCb2R5Q2FsbGJhY2ssIG51bGwsXG4gICAgICAgICAgeyBjYWxsYmFjaywgYm9keSwgY29udGVudFR5cGUsIHN0YXR1c0NvZGUsIHN0YXR1c01lc3NhZ2UsIGhlYWRlcnMgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShjYWxsYmFjaywgbnVsbCwgbnVsbCwge1xuICAgICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICB0cmFpbGVyczogdGhpcy50cmFpbGVycyxcbiAgICAgICAgICBvcGFxdWUsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EYXRhIChjaHVuaykge1xuICAgIGNvbnN0IHsgcmVzIH0gPSB0aGlzXG4gICAgcmV0dXJuIHJlcy5wdXNoKGNodW5rKVxuICB9XG5cbiAgb25Db21wbGV0ZSAodHJhaWxlcnMpIHtcbiAgICBjb25zdCB7IHJlcyB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICB1dGlsLnBhcnNlSGVhZGVycyh0cmFpbGVycywgdGhpcy50cmFpbGVycylcblxuICAgIHJlcy5wdXNoKG51bGwpXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBjb25zdCB7IHJlcywgY2FsbGJhY2ssIGJvZHksIG9wYXF1ZSB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIC8vIFRPRE86IERvZXMgdGhpcyBuZWVkIHF1ZXVlTWljcm90YXNrP1xuICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIGVyciwgeyBvcGFxdWUgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcykge1xuICAgICAgdGhpcy5yZXMgPSBudWxsXG4gICAgICAvLyBFbnN1cmUgYWxsIHF1ZXVlZCBoYW5kbGVycyBhcmUgaW52b2tlZCBiZWZvcmUgZGVzdHJveWluZyByZXMuXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHV0aWwuZGVzdHJveShyZXMsIGVycilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGJvZHkpIHtcbiAgICAgIHRoaXMuYm9keSA9IG51bGxcbiAgICAgIHV0aWwuZGVzdHJveShib2R5LCBlcnIpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3QgKG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3QuY2FsbCh0aGlzLCBvcHRzLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoZGF0YSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgdGhpcy5kaXNwYXRjaChvcHRzLCBuZXcgUmVxdWVzdEhhbmRsZXIob3B0cywgY2FsbGJhY2spKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgY29uc3Qgb3BhcXVlID0gb3B0cyAmJiBvcHRzLm9wYXF1ZVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKGVyciwgeyBvcGFxdWUgfSkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1ZXN0XG5tb2R1bGUuZXhwb3J0cy5SZXF1ZXN0SGFuZGxlciA9IFJlcXVlc3RIYW5kbGVyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgZmluaXNoZWQsIFBhc3NUaHJvdWdoIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3Qge1xuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcbiAgSW52YWxpZFJldHVyblZhbHVlRXJyb3IsXG4gIFJlcXVlc3RBYm9ydGVkRXJyb3Jcbn0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsgZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBBc3luY1Jlc291cmNlIH0gPSByZXF1aXJlKCdhc3luY19ob29rcycpXG5jb25zdCB7IGFkZFNpZ25hbCwgcmVtb3ZlU2lnbmFsIH0gPSByZXF1aXJlKCcuL2Fib3J0LXNpZ25hbCcpXG5cbmNsYXNzIFN0cmVhbUhhbmRsZXIgZXh0ZW5kcyBBc3luY1Jlc291cmNlIHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIGZhY3RvcnksIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9wdHMnKVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2lnbmFsLCBtZXRob2QsIG9wYXF1ZSwgYm9keSwgb25JbmZvLCByZXNwb25zZUhlYWRlcnMsIHRocm93T25FcnJvciB9ID0gb3B0c1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNhbGxiYWNrJylcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBmYWN0b3J5JylcbiAgICAgIH1cblxuICAgICAgaWYgKHNpZ25hbCAmJiB0eXBlb2Ygc2lnbmFsLm9uICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NpZ25hbCBtdXN0IGJlIGFuIEV2ZW50RW1pdHRlciBvciBFdmVudFRhcmdldCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgbWV0aG9kJylcbiAgICAgIH1cblxuICAgICAgaWYgKG9uSW5mbyAmJiB0eXBlb2Ygb25JbmZvICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkluZm8gY2FsbGJhY2snKVxuICAgICAgfVxuXG4gICAgICBzdXBlcignVU5ESUNJX1NUUkVBTScpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodXRpbC5pc1N0cmVhbShib2R5KSkge1xuICAgICAgICB1dGlsLmRlc3Ryb3koYm9keS5vbignZXJyb3InLCB1dGlsLm5vcCksIGVycilcbiAgICAgIH1cbiAgICAgIHRocm93IGVyclxuICAgIH1cblxuICAgIHRoaXMucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzIHx8IG51bGxcbiAgICB0aGlzLm9wYXF1ZSA9IG9wYXF1ZSB8fCBudWxsXG4gICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeVxuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xuICAgIHRoaXMucmVzID0gbnVsbFxuICAgIHRoaXMuYWJvcnQgPSBudWxsXG4gICAgdGhpcy5jb250ZXh0ID0gbnVsbFxuICAgIHRoaXMudHJhaWxlcnMgPSBudWxsXG4gICAgdGhpcy5ib2R5ID0gYm9keVxuICAgIHRoaXMub25JbmZvID0gb25JbmZvIHx8IG51bGxcbiAgICB0aGlzLnRocm93T25FcnJvciA9IHRocm93T25FcnJvciB8fCBmYWxzZVxuXG4gICAgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgIGJvZHkub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGRTaWduYWwodGhpcywgc2lnbmFsKVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCwgY29udGV4dCkge1xuICAgIGlmICghdGhpcy5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgcmF3SGVhZGVycywgcmVzdW1lLCBzdGF0dXNNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBmYWN0b3J5LCBvcGFxdWUsIGNvbnRleHQsIGNhbGxiYWNrLCByZXNwb25zZUhlYWRlcnMgfSA9IHRoaXNcblxuICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZVJhd0hlYWRlcnMocmF3SGVhZGVycykgOiB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuXG4gICAgaWYgKHN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgIGlmICh0aGlzLm9uSW5mbykge1xuICAgICAgICB0aGlzLm9uSW5mbyh7IHN0YXR1c0NvZGUsIGhlYWRlcnMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZmFjdG9yeSA9IG51bGxcblxuICAgIGxldCByZXNcblxuICAgIGlmICh0aGlzLnRocm93T25FcnJvciAmJiBzdGF0dXNDb2RlID49IDQwMCkge1xuICAgICAgY29uc3QgcGFyc2VkSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycyA9PT0gJ3JhdycgPyB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSA6IGhlYWRlcnNcbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcGFyc2VkSGVhZGVyc1snY29udGVudC10eXBlJ11cbiAgICAgIHJlcyA9IG5ldyBQYXNzVGhyb3VnaCgpXG5cbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShnZXRSZXNvbHZlRXJyb3JCb2R5Q2FsbGJhY2ssIG51bGwsXG4gICAgICAgIHsgY2FsbGJhY2ssIGJvZHk6IHJlcywgY29udGVudFR5cGUsIHN0YXR1c0NvZGUsIHN0YXR1c01lc3NhZ2UsIGhlYWRlcnMgfVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmFjdG9yeSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVzID0gdGhpcy5ydW5JbkFzeW5jU2NvcGUoZmFjdG9yeSwgbnVsbCwge1xuICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBvcGFxdWUsXG4gICAgICAgIGNvbnRleHRcbiAgICAgIH0pXG5cbiAgICAgIGlmIChcbiAgICAgICAgIXJlcyB8fFxuICAgICAgICB0eXBlb2YgcmVzLndyaXRlICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIHR5cGVvZiByZXMuZW5kICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIHR5cGVvZiByZXMub24gIT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFJldHVyblZhbHVlRXJyb3IoJ2V4cGVjdGVkIFdyaXRhYmxlJylcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogQXZvaWQgZmluaXNoZWQuIEl0IHJlZ2lzdGVycyBhbiB1bm5lY2Vzc2FyeSBhbW91bnQgb2YgbGlzdGVuZXJzLlxuICAgICAgZmluaXNoZWQocmVzLCB7IHJlYWRhYmxlOiBmYWxzZSB9LCAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2FsbGJhY2ssIHJlcywgb3BhcXVlLCB0cmFpbGVycywgYWJvcnQgfSA9IHRoaXNcblxuICAgICAgICB0aGlzLnJlcyA9IG51bGxcbiAgICAgICAgaWYgKGVyciB8fCAhcmVzLnJlYWRhYmxlKSB7XG4gICAgICAgICAgdXRpbC5kZXN0cm95KHJlcywgZXJyKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIGVyciB8fCBudWxsLCB7IG9wYXF1ZSwgdHJhaWxlcnMgfSlcblxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgYWJvcnQoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJlcy5vbignZHJhaW4nLCByZXN1bWUpXG5cbiAgICB0aGlzLnJlcyA9IHJlc1xuXG4gICAgY29uc3QgbmVlZERyYWluID0gcmVzLndyaXRhYmxlTmVlZERyYWluICE9PSB1bmRlZmluZWRcbiAgICAgID8gcmVzLndyaXRhYmxlTmVlZERyYWluXG4gICAgICA6IHJlcy5fd3JpdGFibGVTdGF0ZSAmJiByZXMuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluXG5cbiAgICByZXR1cm4gbmVlZERyYWluICE9PSB0cnVlXG4gIH1cblxuICBvbkRhdGEgKGNodW5rKSB7XG4gICAgY29uc3QgeyByZXMgfSA9IHRoaXNcblxuICAgIHJldHVybiByZXMgPyByZXMud3JpdGUoY2h1bmspIDogdHJ1ZVxuICB9XG5cbiAgb25Db21wbGV0ZSAodHJhaWxlcnMpIHtcbiAgICBjb25zdCB7IHJlcyB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICBpZiAoIXJlcykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy50cmFpbGVycyA9IHV0aWwucGFyc2VIZWFkZXJzKHRyYWlsZXJzKVxuXG4gICAgcmVzLmVuZCgpXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBjb25zdCB7IHJlcywgY2FsbGJhY2ssIG9wYXF1ZSwgYm9keSB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICB0aGlzLmZhY3RvcnkgPSBudWxsXG5cbiAgICBpZiAocmVzKSB7XG4gICAgICB0aGlzLnJlcyA9IG51bGxcbiAgICAgIHV0aWwuZGVzdHJveShyZXMsIGVycilcbiAgICB9IGVsc2UgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShjYWxsYmFjaywgbnVsbCwgZXJyLCB7IG9wYXF1ZSB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoYm9keSkge1xuICAgICAgdGhpcy5ib2R5ID0gbnVsbFxuICAgICAgdXRpbC5kZXN0cm95KGJvZHksIGVycilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyZWFtIChvcHRzLCBmYWN0b3J5LCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzdHJlYW0uY2FsbCh0aGlzLCBvcHRzLCBmYWN0b3J5LCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoZGF0YSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgdGhpcy5kaXNwYXRjaChvcHRzLCBuZXcgU3RyZWFtSGFuZGxlcihvcHRzLCBmYWN0b3J5LCBjYWxsYmFjaykpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgICBjb25zdCBvcGFxdWUgPSBvcHRzICYmIG9wdHMub3BhcXVlXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2FsbGJhY2soZXJyLCB7IG9wYXF1ZSB9KSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmVhbVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIFJlYWRhYmxlLFxuICBEdXBsZXgsXG4gIFBhc3NUaHJvdWdoXG59ID0gcmVxdWlyZSgnc3RyZWFtJylcbmNvbnN0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIEludmFsaWRSZXR1cm5WYWx1ZUVycm9yLFxuICBSZXF1ZXN0QWJvcnRlZEVycm9yXG59ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IEFzeW5jUmVzb3VyY2UgfSA9IHJlcXVpcmUoJ2FzeW5jX2hvb2tzJylcbmNvbnN0IHsgYWRkU2lnbmFsLCByZW1vdmVTaWduYWwgfSA9IHJlcXVpcmUoJy4vYWJvcnQtc2lnbmFsJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5cbmNvbnN0IGtSZXN1bWUgPSBTeW1ib2woJ3Jlc3VtZScpXG5cbmNsYXNzIFBpcGVsaW5lUmVxdWVzdCBleHRlbmRzIFJlYWRhYmxlIHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKHsgYXV0b0Rlc3Ryb3k6IHRydWUgfSlcblxuICAgIHRoaXNba1Jlc3VtZV0gPSBudWxsXG4gIH1cblxuICBfcmVhZCAoKSB7XG4gICAgY29uc3QgeyBba1Jlc3VtZV06IHJlc3VtZSB9ID0gdGhpc1xuXG4gICAgaWYgKHJlc3VtZSkge1xuICAgICAgdGhpc1trUmVzdW1lXSA9IG51bGxcbiAgICAgIHJlc3VtZSgpXG4gICAgfVxuICB9XG5cbiAgX2Rlc3Ryb3kgKGVyciwgY2FsbGJhY2spIHtcbiAgICB0aGlzLl9yZWFkKClcblxuICAgIGNhbGxiYWNrKGVycilcbiAgfVxufVxuXG5jbGFzcyBQaXBlbGluZVJlc3BvbnNlIGV4dGVuZHMgUmVhZGFibGUge1xuICBjb25zdHJ1Y3RvciAocmVzdW1lKSB7XG4gICAgc3VwZXIoeyBhdXRvRGVzdHJveTogdHJ1ZSB9KVxuICAgIHRoaXNba1Jlc3VtZV0gPSByZXN1bWVcbiAgfVxuXG4gIF9yZWFkICgpIHtcbiAgICB0aGlzW2tSZXN1bWVdKClcbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFlcnIgJiYgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgZXJyID0gbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycilcbiAgfVxufVxuXG5jbGFzcyBQaXBlbGluZUhhbmRsZXIgZXh0ZW5kcyBBc3luY1Jlc291cmNlIHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIGhhbmRsZXIpIHtcbiAgICBpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cycpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgaGFuZGxlcicpXG4gICAgfVxuXG4gICAgY29uc3QgeyBzaWduYWwsIG1ldGhvZCwgb3BhcXVlLCBvbkluZm8sIHJlc3BvbnNlSGVhZGVycyB9ID0gb3B0c1xuXG4gICAgaWYgKHNpZ25hbCAmJiB0eXBlb2Ygc2lnbmFsLm9uICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzaWduYWwgbXVzdCBiZSBhbiBFdmVudEVtaXR0ZXIgb3IgRXZlbnRUYXJnZXQnKVxuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT09ICdDT05ORUNUJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG1ldGhvZCcpXG4gICAgfVxuXG4gICAgaWYgKG9uSW5mbyAmJiB0eXBlb2Ygb25JbmZvICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25JbmZvIGNhbGxiYWNrJylcbiAgICB9XG5cbiAgICBzdXBlcignVU5ESUNJX1BJUEVMSU5FJylcblxuICAgIHRoaXMub3BhcXVlID0gb3BhcXVlIHx8IG51bGxcbiAgICB0aGlzLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycyB8fCBudWxsXG4gICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlclxuICAgIHRoaXMuYWJvcnQgPSBudWxsXG4gICAgdGhpcy5jb250ZXh0ID0gbnVsbFxuICAgIHRoaXMub25JbmZvID0gb25JbmZvIHx8IG51bGxcblxuICAgIHRoaXMucmVxID0gbmV3IFBpcGVsaW5lUmVxdWVzdCgpLm9uKCdlcnJvcicsIHV0aWwubm9wKVxuXG4gICAgdGhpcy5yZXQgPSBuZXcgRHVwbGV4KHtcbiAgICAgIHJlYWRhYmxlT2JqZWN0TW9kZTogb3B0cy5vYmplY3RNb2RlLFxuICAgICAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gICAgICByZWFkOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYm9keSB9ID0gdGhpc1xuXG4gICAgICAgIGlmIChib2R5ICYmIGJvZHkucmVzdW1lKSB7XG4gICAgICAgICAgYm9keS5yZXN1bWUoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgd3JpdGU6IChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVxIH0gPSB0aGlzXG5cbiAgICAgICAgaWYgKHJlcS5wdXNoKGNodW5rLCBlbmNvZGluZykgfHwgcmVxLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgICAgIGNhbGxiYWNrKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXFba1Jlc3VtZV0gPSBjYWxsYmFja1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGVzdHJveTogKGVyciwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgeyBib2R5LCByZXEsIHJlcywgcmV0LCBhYm9ydCB9ID0gdGhpc1xuXG4gICAgICAgIGlmICghZXJyICYmICFyZXQuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgICAgIGVyciA9IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhYm9ydCAmJiBlcnIpIHtcbiAgICAgICAgICBhYm9ydCgpXG4gICAgICAgIH1cblxuICAgICAgICB1dGlsLmRlc3Ryb3koYm9keSwgZXJyKVxuICAgICAgICB1dGlsLmRlc3Ryb3kocmVxLCBlcnIpXG4gICAgICAgIHV0aWwuZGVzdHJveShyZXMsIGVycilcblxuICAgICAgICByZW1vdmVTaWduYWwodGhpcylcblxuICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICB9XG4gICAgfSkub24oJ3ByZWZpbmlzaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVxIH0gPSB0aGlzXG5cbiAgICAgIC8vIE5vZGUgPCAxNSBkb2VzIG5vdCBjYWxsIF9maW5hbCBpbiBzYW1lIHRpY2suXG4gICAgICByZXEucHVzaChudWxsKVxuICAgIH0pXG5cbiAgICB0aGlzLnJlcyA9IG51bGxcblxuICAgIGFkZFNpZ25hbCh0aGlzLCBzaWduYWwpXG4gIH1cblxuICBvbkNvbm5lY3QgKGFib3J0LCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyByZXQsIHJlcyB9ID0gdGhpc1xuXG4gICAgYXNzZXJ0KCFyZXMsICdwaXBlbGluZSBjYW5ub3QgYmUgcmV0cmllZCcpXG5cbiAgICBpZiAocmV0LmRlc3Ryb3llZCkge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgcmF3SGVhZGVycywgcmVzdW1lKSB7XG4gICAgY29uc3QgeyBvcGFxdWUsIGhhbmRsZXIsIGNvbnRleHQgfSA9IHRoaXNcblxuICAgIGlmIChzdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICBpZiAodGhpcy5vbkluZm8pIHtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMucmVzcG9uc2VIZWFkZXJzID09PSAncmF3JyA/IHV0aWwucGFyc2VSYXdIZWFkZXJzKHJhd0hlYWRlcnMpIDogdXRpbC5wYXJzZUhlYWRlcnMocmF3SGVhZGVycylcbiAgICAgICAgdGhpcy5vbkluZm8oeyBzdGF0dXNDb2RlLCBoZWFkZXJzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnJlcyA9IG5ldyBQaXBlbGluZVJlc3BvbnNlKHJlc3VtZSlcblxuICAgIGxldCBib2R5XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaGFuZGxlciA9IG51bGxcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLnJlc3BvbnNlSGVhZGVycyA9PT0gJ3JhdycgPyB1dGlsLnBhcnNlUmF3SGVhZGVycyhyYXdIZWFkZXJzKSA6IHV0aWwucGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpXG4gICAgICBib2R5ID0gdGhpcy5ydW5JbkFzeW5jU2NvcGUoaGFuZGxlciwgbnVsbCwge1xuICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBvcGFxdWUsXG4gICAgICAgIGJvZHk6IHRoaXMucmVzLFxuICAgICAgICBjb250ZXh0XG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5yZXMub24oJ2Vycm9yJywgdXRpbC5ub3ApXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG5cbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkub24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUmV0dXJuVmFsdWVFcnJvcignZXhwZWN0ZWQgUmVhZGFibGUnKVxuICAgIH1cblxuICAgIGJvZHlcbiAgICAgIC5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgICAgICBjb25zdCB7IHJldCwgYm9keSB9ID0gdGhpc1xuXG4gICAgICAgIGlmICghcmV0LnB1c2goY2h1bmspICYmIGJvZHkucGF1c2UpIHtcbiAgICAgICAgICBib2R5LnBhdXNlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmV0IH0gPSB0aGlzXG5cbiAgICAgICAgdXRpbC5kZXN0cm95KHJldCwgZXJyKVxuICAgICAgfSlcbiAgICAgIC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHJldCB9ID0gdGhpc1xuXG4gICAgICAgIHJldC5wdXNoKG51bGwpXG4gICAgICB9KVxuICAgICAgLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyByZXQgfSA9IHRoaXNcblxuICAgICAgICBpZiAoIXJldC5fcmVhZGFibGVTdGF0ZS5lbmRlZCkge1xuICAgICAgICAgIHV0aWwuZGVzdHJveShyZXQsIG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKCkpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICB0aGlzLmJvZHkgPSBib2R5XG4gIH1cblxuICBvbkRhdGEgKGNodW5rKSB7XG4gICAgY29uc3QgeyByZXMgfSA9IHRoaXNcbiAgICByZXR1cm4gcmVzLnB1c2goY2h1bmspXG4gIH1cblxuICBvbkNvbXBsZXRlICh0cmFpbGVycykge1xuICAgIGNvbnN0IHsgcmVzIH0gPSB0aGlzXG4gICAgcmVzLnB1c2gobnVsbClcbiAgfVxuXG4gIG9uRXJyb3IgKGVycikge1xuICAgIGNvbnN0IHsgcmV0IH0gPSB0aGlzXG4gICAgdGhpcy5oYW5kbGVyID0gbnVsbFxuICAgIHV0aWwuZGVzdHJveShyZXQsIGVycilcbiAgfVxufVxuXG5mdW5jdGlvbiBwaXBlbGluZSAob3B0cywgaGFuZGxlcikge1xuICB0cnkge1xuICAgIGNvbnN0IHBpcGVsaW5lSGFuZGxlciA9IG5ldyBQaXBlbGluZUhhbmRsZXIob3B0cywgaGFuZGxlcilcbiAgICB0aGlzLmRpc3BhdGNoKHsgLi4ub3B0cywgYm9keTogcGlwZWxpbmVIYW5kbGVyLnJlcSB9LCBwaXBlbGluZUhhbmRsZXIpXG4gICAgcmV0dXJuIHBpcGVsaW5lSGFuZGxlci5yZXRcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaCgpLmRlc3Ryb3koZXJyKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGlwZWxpbmVcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgUmVxdWVzdEFib3J0ZWRFcnJvciwgU29ja2V0RXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IHsgQXN5bmNSZXNvdXJjZSB9ID0gcmVxdWlyZSgnYXN5bmNfaG9va3MnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGFkZFNpZ25hbCwgcmVtb3ZlU2lnbmFsIH0gPSByZXF1aXJlKCcuL2Fib3J0LXNpZ25hbCcpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuXG5jbGFzcyBVcGdyYWRlSGFuZGxlciBleHRlbmRzIEFzeW5jUmVzb3VyY2Uge1xuICBjb25zdHJ1Y3RvciAob3B0cywgY2FsbGJhY2spIHtcbiAgICBpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cycpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNhbGxiYWNrJylcbiAgICB9XG5cbiAgICBjb25zdCB7IHNpZ25hbCwgb3BhcXVlLCByZXNwb25zZUhlYWRlcnMgfSA9IG9wdHNcblxuICAgIGlmIChzaWduYWwgJiYgdHlwZW9mIHNpZ25hbC5vbiAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc2lnbmFsIG11c3QgYmUgYW4gRXZlbnRFbWl0dGVyIG9yIEV2ZW50VGFyZ2V0JylcbiAgICB9XG5cbiAgICBzdXBlcignVU5ESUNJX1VQR1JBREUnKVxuXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwgbnVsbFxuICAgIHRoaXMub3BhcXVlID0gb3BhcXVlIHx8IG51bGxcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuICAgIHRoaXMuY29udGV4dCA9IG51bGxcblxuICAgIGFkZFNpZ25hbCh0aGlzLCBzaWduYWwpXG4gIH1cblxuICBvbkNvbm5lY3QgKGFib3J0LCBjb250ZXh0KSB7XG4gICAgaWYgKCF0aGlzLmNhbGxiYWNrKSB7XG4gICAgICB0aHJvdyBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpXG4gICAgfVxuXG4gICAgdGhpcy5hYm9ydCA9IGFib3J0XG4gICAgdGhpcy5jb250ZXh0ID0gbnVsbFxuICB9XG5cbiAgb25IZWFkZXJzICgpIHtcbiAgICB0aHJvdyBuZXcgU29ja2V0RXJyb3IoJ2JhZCB1cGdyYWRlJywgbnVsbClcbiAgfVxuXG4gIG9uVXBncmFkZSAoc3RhdHVzQ29kZSwgcmF3SGVhZGVycywgc29ja2V0KSB7XG4gICAgY29uc3QgeyBjYWxsYmFjaywgb3BhcXVlLCBjb250ZXh0IH0gPSB0aGlzXG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc3RhdHVzQ29kZSwgMTAxKVxuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLnJlc3BvbnNlSGVhZGVycyA9PT0gJ3JhdycgPyB1dGlsLnBhcnNlUmF3SGVhZGVycyhyYXdIZWFkZXJzKSA6IHV0aWwucGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpXG4gICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIG51bGwsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBzb2NrZXQsXG4gICAgICBvcGFxdWUsXG4gICAgICBjb250ZXh0XG4gICAgfSlcbiAgfVxuXG4gIG9uRXJyb3IgKGVycikge1xuICAgIGNvbnN0IHsgY2FsbGJhY2ssIG9wYXF1ZSB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHRoaXMucnVuSW5Bc3luY1Njb3BlKGNhbGxiYWNrLCBudWxsLCBlcnIsIHsgb3BhcXVlIH0pXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGdyYWRlIChvcHRzLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB1cGdyYWRlLmNhbGwodGhpcywgb3B0cywgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHVwZ3JhZGVIYW5kbGVyID0gbmV3IFVwZ3JhZGVIYW5kbGVyKG9wdHMsIGNhbGxiYWNrKVxuICAgIHRoaXMuZGlzcGF0Y2goe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldGhvZDogb3B0cy5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICB1cGdyYWRlOiBvcHRzLnByb3RvY29sIHx8ICdXZWJzb2NrZXQnXG4gICAgfSwgdXBncmFkZUhhbmRsZXIpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgICBjb25zdCBvcGFxdWUgPSBvcHRzICYmIG9wdHMub3BhcXVlXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2FsbGJhY2soZXJyLCB7IG9wYXF1ZSB9KSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVwZ3JhZGVcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBBc3luY1Jlc291cmNlIH0gPSByZXF1aXJlKCdhc3luY19ob29rcycpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBSZXF1ZXN0QWJvcnRlZEVycm9yLCBTb2NrZXRFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGFkZFNpZ25hbCwgcmVtb3ZlU2lnbmFsIH0gPSByZXF1aXJlKCcuL2Fib3J0LXNpZ25hbCcpXG5cbmNsYXNzIENvbm5lY3RIYW5kbGVyIGV4dGVuZHMgQXN5bmNSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBjYWxsYmFjaykge1xuICAgIGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvcHRzJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgY2FsbGJhY2snKVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2lnbmFsLCBvcGFxdWUsIHJlc3BvbnNlSGVhZGVycyB9ID0gb3B0c1xuXG4gICAgaWYgKHNpZ25hbCAmJiB0eXBlb2Ygc2lnbmFsLm9uICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzaWduYWwgbXVzdCBiZSBhbiBFdmVudEVtaXR0ZXIgb3IgRXZlbnRUYXJnZXQnKVxuICAgIH1cblxuICAgIHN1cGVyKCdVTkRJQ0lfQ09OTkVDVCcpXG5cbiAgICB0aGlzLm9wYXF1ZSA9IG9wYXF1ZSB8fCBudWxsXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwgbnVsbFxuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xuICAgIHRoaXMuYWJvcnQgPSBudWxsXG5cbiAgICBhZGRTaWduYWwodGhpcywgc2lnbmFsKVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCwgY29udGV4dCkge1xuICAgIGlmICghdGhpcy5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgfVxuXG4gIG9uSGVhZGVycyAoKSB7XG4gICAgdGhyb3cgbmV3IFNvY2tldEVycm9yKCdiYWQgY29ubmVjdCcsIG51bGwpXG4gIH1cblxuICBvblVwZ3JhZGUgKHN0YXR1c0NvZGUsIHJhd0hlYWRlcnMsIHNvY2tldCkge1xuICAgIGNvbnN0IHsgY2FsbGJhY2ssIG9wYXF1ZSwgY29udGV4dCB9ID0gdGhpc1xuXG4gICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuXG4gICAgbGV0IGhlYWRlcnMgPSByYXdIZWFkZXJzXG4gICAgLy8gSW5kaWNhdGVzIGlzIGFuIEhUVFAyU2Vzc2lvblxuICAgIGlmIChoZWFkZXJzICE9IG51bGwpIHtcbiAgICAgIGhlYWRlcnMgPSB0aGlzLnJlc3BvbnNlSGVhZGVycyA9PT0gJ3JhdycgPyB1dGlsLnBhcnNlUmF3SGVhZGVycyhyYXdIZWFkZXJzKSA6IHV0aWwucGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpXG4gICAgfVxuXG4gICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIG51bGwsIHtcbiAgICAgIHN0YXR1c0NvZGUsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc29ja2V0LFxuICAgICAgb3BhcXVlLFxuICAgICAgY29udGV4dFxuICAgIH0pXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBjb25zdCB7IGNhbGxiYWNrLCBvcGFxdWUgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShjYWxsYmFjaywgbnVsbCwgZXJyLCB7IG9wYXF1ZSB9KVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29ubmVjdCAob3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29ubmVjdC5jYWxsKHRoaXMsIG9wdHMsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShkYXRhKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25uZWN0SGFuZGxlciA9IG5ldyBDb25uZWN0SGFuZGxlcihvcHRzLCBjYWxsYmFjaylcbiAgICB0aGlzLmRpc3BhdGNoKHsgLi4ub3B0cywgbWV0aG9kOiAnQ09OTkVDVCcgfSwgY29ubmVjdEhhbmRsZXIpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgICBjb25zdCBvcGFxdWUgPSBvcHRzICYmIG9wdHMub3BhcXVlXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2FsbGJhY2soZXJyLCB7IG9wYXF1ZSB9KSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbm5lY3RcbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMucmVxdWVzdCA9IHJlcXVpcmUoJy4vYXBpLXJlcXVlc3QnKVxubW9kdWxlLmV4cG9ydHMuc3RyZWFtID0gcmVxdWlyZSgnLi9hcGktc3RyZWFtJylcbm1vZHVsZS5leHBvcnRzLnBpcGVsaW5lID0gcmVxdWlyZSgnLi9hcGktcGlwZWxpbmUnKVxubW9kdWxlLmV4cG9ydHMudXBncmFkZSA9IHJlcXVpcmUoJy4vYXBpLXVwZ3JhZGUnKVxubW9kdWxlLmV4cG9ydHMuY29ubmVjdCA9IHJlcXVpcmUoJy4vYXBpLWNvbm5lY3QnKVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IFVuZGljaUVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5cbmNsYXNzIE1vY2tOb3RNYXRjaGVkRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBNb2NrTm90TWF0Y2hlZEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdNb2NrTm90TWF0Y2hlZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1RoZSByZXF1ZXN0IGRvZXMgbm90IG1hdGNoIGFueSByZWdpc3RlcmVkIG1vY2sgZGlzcGF0Y2hlcydcbiAgICB0aGlzLmNvZGUgPSAnVU5EX01PQ0tfRVJSX01PQ0tfTk9UX01BVENIRUQnXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE1vY2tOb3RNYXRjaGVkRXJyb3Jcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtBZ2VudDogU3ltYm9sKCdhZ2VudCcpLFxuICBrT3B0aW9uczogU3ltYm9sKCdvcHRpb25zJyksXG4gIGtGYWN0b3J5OiBTeW1ib2woJ2ZhY3RvcnknKSxcbiAga0Rpc3BhdGNoZXM6IFN5bWJvbCgnZGlzcGF0Y2hlcycpLFxuICBrRGlzcGF0Y2hLZXk6IFN5bWJvbCgnZGlzcGF0Y2gga2V5JyksXG4gIGtEZWZhdWx0SGVhZGVyczogU3ltYm9sKCdkZWZhdWx0IGhlYWRlcnMnKSxcbiAga0RlZmF1bHRUcmFpbGVyczogU3ltYm9sKCdkZWZhdWx0IHRyYWlsZXJzJyksXG4gIGtDb250ZW50TGVuZ3RoOiBTeW1ib2woJ2NvbnRlbnQgbGVuZ3RoJyksXG4gIGtNb2NrQWdlbnQ6IFN5bWJvbCgnbW9jayBhZ2VudCcpLFxuICBrTW9ja0FnZW50U2V0OiBTeW1ib2woJ21vY2sgYWdlbnQgc2V0JyksXG4gIGtNb2NrQWdlbnRHZXQ6IFN5bWJvbCgnbW9jayBhZ2VudCBnZXQnKSxcbiAga01vY2tEaXNwYXRjaDogU3ltYm9sKCdtb2NrIGRpc3BhdGNoJyksXG4gIGtDbG9zZTogU3ltYm9sKCdjbG9zZScpLFxuICBrT3JpZ2luYWxDbG9zZTogU3ltYm9sKCdvcmlnaW5hbCBhZ2VudCBjbG9zZScpLFxuICBrT3JpZ2luOiBTeW1ib2woJ29yaWdpbicpLFxuICBrSXNNb2NrQWN0aXZlOiBTeW1ib2woJ2lzIG1vY2sgYWN0aXZlJyksXG4gIGtOZXRDb25uZWN0OiBTeW1ib2woJ25ldCBjb25uZWN0JyksXG4gIGtHZXROZXRDb25uZWN0OiBTeW1ib2woJ2dldCBuZXQgY29ubmVjdCcpLFxuICBrQ29ubmVjdGVkOiBTeW1ib2woJ2Nvbm5lY3RlZCcpXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgTW9ja05vdE1hdGNoZWRFcnJvciB9ID0gcmVxdWlyZSgnLi9tb2NrLWVycm9ycycpXG5jb25zdCB7XG4gIGtEaXNwYXRjaGVzLFxuICBrTW9ja0FnZW50LFxuICBrT3JpZ2luYWxEaXNwYXRjaCxcbiAga09yaWdpbixcbiAga0dldE5ldENvbm5lY3Rcbn0gPSByZXF1aXJlKCcuL21vY2stc3ltYm9scycpXG5jb25zdCB7IGJ1aWxkVVJMLCBub3AgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IFNUQVRVU19DT0RFUyB9ID0gcmVxdWlyZSgnaHR0cCcpXG5jb25zdCB7XG4gIHR5cGVzOiB7XG4gICAgaXNQcm9taXNlXG4gIH1cbn0gPSByZXF1aXJlKCd1dGlsJylcblxuZnVuY3Rpb24gbWF0Y2hWYWx1ZSAobWF0Y2gsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG1hdGNoID09PSB2YWx1ZVxuICB9XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIHJldHVybiBtYXRjaC50ZXN0KHZhbHVlKVxuICB9XG4gIGlmICh0eXBlb2YgbWF0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbWF0Y2godmFsdWUpID09PSB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGxvd2VyQ2FzZUVudHJpZXMgKGhlYWRlcnMpIHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhoZWFkZXJzKS5tYXAoKFtoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZV0pID0+IHtcbiAgICAgIHJldHVybiBbaGVhZGVyTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLCBoZWFkZXJWYWx1ZV1cbiAgICB9KVxuICApXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uLy4uL2luZGV4JykuSGVhZGVyc3xzdHJpbmdbXXxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBoZWFkZXJzXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gKi9cbmZ1bmN0aW9uIGdldEhlYWRlckJ5TmFtZSAoaGVhZGVycywga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBpZiAoaGVhZGVyc1tpXS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKSkge1xuICAgICAgICByZXR1cm4gaGVhZGVyc1tpICsgMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gZWxzZSBpZiAodHlwZW9mIGhlYWRlcnMuZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGhlYWRlcnMuZ2V0KGtleSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbG93ZXJDYXNlRW50cmllcyhoZWFkZXJzKVtrZXkudG9Mb2NhbGVMb3dlckNhc2UoKV1cbiAgfVxufVxuXG4vKiogQHBhcmFtIHtzdHJpbmdbXX0gaGVhZGVycyAqL1xuZnVuY3Rpb24gYnVpbGRIZWFkZXJzRnJvbUFycmF5IChoZWFkZXJzKSB7IC8vIGZldGNoIEhlYWRlcnNMaXN0XG4gIGNvbnN0IGNsb25lID0gaGVhZGVycy5zbGljZSgpXG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xvbmUubGVuZ3RoOyBpbmRleCArPSAyKSB7XG4gICAgZW50cmllcy5wdXNoKFtjbG9uZVtpbmRleF0sIGNsb25lW2luZGV4ICsgMV1dKVxuICB9XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcylcbn1cblxuZnVuY3Rpb24gbWF0Y2hIZWFkZXJzIChtb2NrRGlzcGF0Y2gsIGhlYWRlcnMpIHtcbiAgaWYgKHR5cGVvZiBtb2NrRGlzcGF0Y2guaGVhZGVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7IC8vIGZldGNoIEhlYWRlcnNMaXN0XG4gICAgICBoZWFkZXJzID0gYnVpbGRIZWFkZXJzRnJvbUFycmF5KGhlYWRlcnMpXG4gICAgfVxuICAgIHJldHVybiBtb2NrRGlzcGF0Y2guaGVhZGVycyhoZWFkZXJzID8gbG93ZXJDYXNlRW50cmllcyhoZWFkZXJzKSA6IHt9KVxuICB9XG4gIGlmICh0eXBlb2YgbW9ja0Rpc3BhdGNoLmhlYWRlcnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAodHlwZW9mIGhlYWRlcnMgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBtb2NrRGlzcGF0Y2guaGVhZGVycyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3QgW21hdGNoSGVhZGVyTmFtZSwgbWF0Y2hIZWFkZXJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobW9ja0Rpc3BhdGNoLmhlYWRlcnMpKSB7XG4gICAgY29uc3QgaGVhZGVyVmFsdWUgPSBnZXRIZWFkZXJCeU5hbWUoaGVhZGVycywgbWF0Y2hIZWFkZXJOYW1lKVxuXG4gICAgaWYgKCFtYXRjaFZhbHVlKG1hdGNoSGVhZGVyVmFsdWUsIGhlYWRlclZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHNhZmVVcmwgKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBwYXRoLnNwbGl0KCc/JylcblxuICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCAhPT0gMikge1xuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBjb25zdCBxcCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGF0aFNlZ21lbnRzLnBvcCgpKVxuICBxcC5zb3J0KClcbiAgcmV0dXJuIFsuLi5wYXRoU2VnbWVudHMsIHFwLnRvU3RyaW5nKCldLmpvaW4oJz8nKVxufVxuXG5mdW5jdGlvbiBtYXRjaEtleSAobW9ja0Rpc3BhdGNoLCB7IHBhdGgsIG1ldGhvZCwgYm9keSwgaGVhZGVycyB9KSB7XG4gIGNvbnN0IHBhdGhNYXRjaCA9IG1hdGNoVmFsdWUobW9ja0Rpc3BhdGNoLnBhdGgsIHBhdGgpXG4gIGNvbnN0IG1ldGhvZE1hdGNoID0gbWF0Y2hWYWx1ZShtb2NrRGlzcGF0Y2gubWV0aG9kLCBtZXRob2QpXG4gIGNvbnN0IGJvZHlNYXRjaCA9IHR5cGVvZiBtb2NrRGlzcGF0Y2guYm9keSAhPT0gJ3VuZGVmaW5lZCcgPyBtYXRjaFZhbHVlKG1vY2tEaXNwYXRjaC5ib2R5LCBib2R5KSA6IHRydWVcbiAgY29uc3QgaGVhZGVyc01hdGNoID0gbWF0Y2hIZWFkZXJzKG1vY2tEaXNwYXRjaCwgaGVhZGVycylcbiAgcmV0dXJuIHBhdGhNYXRjaCAmJiBtZXRob2RNYXRjaCAmJiBib2R5TWF0Y2ggJiYgaGVhZGVyc01hdGNoXG59XG5cbmZ1bmN0aW9uIGdldFJlc3BvbnNlRGF0YSAoZGF0YSkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGFcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGF0YS50b1N0cmluZygpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TW9ja0Rpc3BhdGNoIChtb2NrRGlzcGF0Y2hlcywga2V5KSB7XG4gIGNvbnN0IGJhc2VQYXRoID0ga2V5LnF1ZXJ5ID8gYnVpbGRVUkwoa2V5LnBhdGgsIGtleS5xdWVyeSkgOiBrZXkucGF0aFxuICBjb25zdCByZXNvbHZlZFBhdGggPSB0eXBlb2YgYmFzZVBhdGggPT09ICdzdHJpbmcnID8gc2FmZVVybChiYXNlUGF0aCkgOiBiYXNlUGF0aFxuXG4gIC8vIE1hdGNoIHBhdGhcbiAgbGV0IG1hdGNoZWRNb2NrRGlzcGF0Y2hlcyA9IG1vY2tEaXNwYXRjaGVzLmZpbHRlcigoeyBjb25zdW1lZCB9KSA9PiAhY29uc3VtZWQpLmZpbHRlcigoeyBwYXRoIH0pID0+IG1hdGNoVmFsdWUoc2FmZVVybChwYXRoKSwgcmVzb2x2ZWRQYXRoKSlcbiAgaWYgKG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgTW9ja05vdE1hdGNoZWRFcnJvcihgTW9jayBkaXNwYXRjaCBub3QgbWF0Y2hlZCBmb3IgcGF0aCAnJHtyZXNvbHZlZFBhdGh9J2ApXG4gIH1cblxuICAvLyBNYXRjaCBtZXRob2RcbiAgbWF0Y2hlZE1vY2tEaXNwYXRjaGVzID0gbWF0Y2hlZE1vY2tEaXNwYXRjaGVzLmZpbHRlcigoeyBtZXRob2QgfSkgPT4gbWF0Y2hWYWx1ZShtZXRob2QsIGtleS5tZXRob2QpKVxuICBpZiAobWF0Y2hlZE1vY2tEaXNwYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBNb2NrTm90TWF0Y2hlZEVycm9yKGBNb2NrIGRpc3BhdGNoIG5vdCBtYXRjaGVkIGZvciBtZXRob2QgJyR7a2V5Lm1ldGhvZH0nYClcbiAgfVxuXG4gIC8vIE1hdGNoIGJvZHlcbiAgbWF0Y2hlZE1vY2tEaXNwYXRjaGVzID0gbWF0Y2hlZE1vY2tEaXNwYXRjaGVzLmZpbHRlcigoeyBib2R5IH0pID0+IHR5cGVvZiBib2R5ICE9PSAndW5kZWZpbmVkJyA/IG1hdGNoVmFsdWUoYm9keSwga2V5LmJvZHkpIDogdHJ1ZSlcbiAgaWYgKG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgTW9ja05vdE1hdGNoZWRFcnJvcihgTW9jayBkaXNwYXRjaCBub3QgbWF0Y2hlZCBmb3IgYm9keSAnJHtrZXkuYm9keX0nYClcbiAgfVxuXG4gIC8vIE1hdGNoIGhlYWRlcnNcbiAgbWF0Y2hlZE1vY2tEaXNwYXRjaGVzID0gbWF0Y2hlZE1vY2tEaXNwYXRjaGVzLmZpbHRlcigobW9ja0Rpc3BhdGNoKSA9PiBtYXRjaEhlYWRlcnMobW9ja0Rpc3BhdGNoLCBrZXkuaGVhZGVycykpXG4gIGlmIChtYXRjaGVkTW9ja0Rpc3BhdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IE1vY2tOb3RNYXRjaGVkRXJyb3IoYE1vY2sgZGlzcGF0Y2ggbm90IG1hdGNoZWQgZm9yIGhlYWRlcnMgJyR7dHlwZW9mIGtleS5oZWFkZXJzID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGtleS5oZWFkZXJzKSA6IGtleS5oZWFkZXJzfSdgKVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoZWRNb2NrRGlzcGF0Y2hlc1swXVxufVxuXG5mdW5jdGlvbiBhZGRNb2NrRGlzcGF0Y2ggKG1vY2tEaXNwYXRjaGVzLCBrZXksIGRhdGEpIHtcbiAgY29uc3QgYmFzZURhdGEgPSB7IHRpbWVzSW52b2tlZDogMCwgdGltZXM6IDEsIHBlcnNpc3Q6IGZhbHNlLCBjb25zdW1lZDogZmFsc2UgfVxuICBjb25zdCByZXBseURhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJyA/IHsgY2FsbGJhY2s6IGRhdGEgfSA6IHsgLi4uZGF0YSB9XG4gIGNvbnN0IG5ld01vY2tEaXNwYXRjaCA9IHsgLi4uYmFzZURhdGEsIC4uLmtleSwgcGVuZGluZzogdHJ1ZSwgZGF0YTogeyBlcnJvcjogbnVsbCwgLi4ucmVwbHlEYXRhIH0gfVxuICBtb2NrRGlzcGF0Y2hlcy5wdXNoKG5ld01vY2tEaXNwYXRjaClcbiAgcmV0dXJuIG5ld01vY2tEaXNwYXRjaFxufVxuXG5mdW5jdGlvbiBkZWxldGVNb2NrRGlzcGF0Y2ggKG1vY2tEaXNwYXRjaGVzLCBrZXkpIHtcbiAgY29uc3QgaW5kZXggPSBtb2NrRGlzcGF0Y2hlcy5maW5kSW5kZXgoZGlzcGF0Y2ggPT4ge1xuICAgIGlmICghZGlzcGF0Y2guY29uc3VtZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hLZXkoZGlzcGF0Y2gsIGtleSlcbiAgfSlcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIG1vY2tEaXNwYXRjaGVzLnNwbGljZShpbmRleCwgMSlcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEtleSAob3B0cykge1xuICBjb25zdCB7IHBhdGgsIG1ldGhvZCwgYm9keSwgaGVhZGVycywgcXVlcnkgfSA9IG9wdHNcbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIG1ldGhvZCxcbiAgICBib2R5LFxuICAgIGhlYWRlcnMsXG4gICAgcXVlcnlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUtleVZhbHVlcyAoZGF0YSkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChrZXlWYWx1ZVBhaXJzLCBba2V5LCB2YWx1ZV0pID0+IFtcbiAgICAuLi5rZXlWYWx1ZVBhaXJzLFxuICAgIEJ1ZmZlci5mcm9tKGAke2tleX1gKSxcbiAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcCh4ID0+IEJ1ZmZlci5mcm9tKGAke3h9YCkpIDogQnVmZmVyLmZyb20oYCR7dmFsdWV9YClcbiAgXSwgW10pXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL1N0YXR1c1xuICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1c0NvZGVcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhdHVzVGV4dCAoc3RhdHVzQ29kZSkge1xuICByZXR1cm4gU1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdIHx8ICd1bmtub3duJ1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZXNwb25zZSAoYm9keSkge1xuICBjb25zdCBidWZmZXJzID0gW11cbiAgZm9yIGF3YWl0IChjb25zdCBkYXRhIG9mIGJvZHkpIHtcbiAgICBidWZmZXJzLnB1c2goZGF0YSlcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzKS50b1N0cmluZygndXRmOCcpXG59XG5cbi8qKlxuICogTW9jayBkaXNwYXRjaCBmdW5jdGlvbiB1c2VkIHRvIHNpbXVsYXRlIHVuZGljaSBkaXNwYXRjaGVzXG4gKi9cbmZ1bmN0aW9uIG1vY2tEaXNwYXRjaCAob3B0cywgaGFuZGxlcikge1xuICAvLyBHZXQgbW9jayBkaXNwYXRjaCBmcm9tIGJ1aWx0IGtleVxuICBjb25zdCBrZXkgPSBidWlsZEtleShvcHRzKVxuICBjb25zdCBtb2NrRGlzcGF0Y2ggPSBnZXRNb2NrRGlzcGF0Y2godGhpc1trRGlzcGF0Y2hlc10sIGtleSlcblxuICBtb2NrRGlzcGF0Y2gudGltZXNJbnZva2VkKytcblxuICAvLyBIZXJlJ3Mgd2hlcmUgd2UgcmVzb2x2ZSBhIGNhbGxiYWNrIGlmIGEgY2FsbGJhY2sgaXMgcHJlc2VudCBmb3IgdGhlIGRpc3BhdGNoIGRhdGEuXG4gIGlmIChtb2NrRGlzcGF0Y2guZGF0YS5jYWxsYmFjaykge1xuICAgIG1vY2tEaXNwYXRjaC5kYXRhID0geyAuLi5tb2NrRGlzcGF0Y2guZGF0YSwgLi4ubW9ja0Rpc3BhdGNoLmRhdGEuY2FsbGJhY2sob3B0cykgfVxuICB9XG5cbiAgLy8gUGFyc2UgbW9ja0Rpc3BhdGNoIGRhdGFcbiAgY29uc3QgeyBkYXRhOiB7IHN0YXR1c0NvZGUsIGRhdGEsIGhlYWRlcnMsIHRyYWlsZXJzLCBlcnJvciB9LCBkZWxheSwgcGVyc2lzdCB9ID0gbW9ja0Rpc3BhdGNoXG4gIGNvbnN0IHsgdGltZXNJbnZva2VkLCB0aW1lcyB9ID0gbW9ja0Rpc3BhdGNoXG5cbiAgLy8gSWYgaXQncyB1c2VkIHVwIGFuZCBub3QgcGVyc2lzdGVudCwgbWFyayBhcyBjb25zdW1lZFxuICBtb2NrRGlzcGF0Y2guY29uc3VtZWQgPSAhcGVyc2lzdCAmJiB0aW1lc0ludm9rZWQgPj0gdGltZXNcbiAgbW9ja0Rpc3BhdGNoLnBlbmRpbmcgPSB0aW1lc0ludm9rZWQgPCB0aW1lc1xuXG4gIC8vIElmIHNwZWNpZmllZCwgdHJpZ2dlciBkaXNwYXRjaCBlcnJvclxuICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICBkZWxldGVNb2NrRGlzcGF0Y2godGhpc1trRGlzcGF0Y2hlc10sIGtleSlcbiAgICBoYW5kbGVyLm9uRXJyb3IoZXJyb3IpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEhhbmRsZSB0aGUgcmVxdWVzdCB3aXRoIGEgZGVsYXkgaWYgbmVjZXNzYXJ5XG4gIGlmICh0eXBlb2YgZGVsYXkgPT09ICdudW1iZXInICYmIGRlbGF5ID4gMCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaGFuZGxlUmVwbHkodGhpc1trRGlzcGF0Y2hlc10pXG4gICAgfSwgZGVsYXkpXG4gIH0gZWxzZSB7XG4gICAgaGFuZGxlUmVwbHkodGhpc1trRGlzcGF0Y2hlc10pXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVSZXBseSAobW9ja0Rpc3BhdGNoZXMsIF9kYXRhID0gZGF0YSkge1xuICAgIC8vIGZldGNoJ3MgSGVhZGVyc0xpc3QgaXMgYSAxRCBzdHJpbmcgYXJyYXlcbiAgICBjb25zdCBvcHRzSGVhZGVycyA9IEFycmF5LmlzQXJyYXkob3B0cy5oZWFkZXJzKVxuICAgICAgPyBidWlsZEhlYWRlcnNGcm9tQXJyYXkob3B0cy5oZWFkZXJzKVxuICAgICAgOiBvcHRzLmhlYWRlcnNcbiAgICBjb25zdCBib2R5ID0gdHlwZW9mIF9kYXRhID09PSAnZnVuY3Rpb24nXG4gICAgICA/IF9kYXRhKHsgLi4ub3B0cywgaGVhZGVyczogb3B0c0hlYWRlcnMgfSlcbiAgICAgIDogX2RhdGFcblxuICAgIC8vIHV0aWwudHlwZXMuaXNQcm9taXNlIGlzIGxpa2VseSBuZWVkZWQgZm9yIGplc3QuXG4gICAgaWYgKGlzUHJvbWlzZShib2R5KSkge1xuICAgICAgLy8gSWYgaGFuZGxlUmVwbHkgaXMgYXN5bmNocm9ub3VzLCB0aHJvd2luZyBhbiBlcnJvclxuICAgICAgLy8gaW4gdGhlIGNhbGxiYWNrIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLCByYXRoZXIgdGhhblxuICAgICAgLy8gc3luY2hyb25vdXNseSB0aHJvdyB0aGUgZXJyb3IsIHdoaWNoIGJyZWFrcyBzb21lIHRlc3RzLlxuICAgICAgLy8gUmF0aGVyLCB3ZSB3YWl0IGZvciB0aGUgY2FsbGJhY2sgdG8gcmVzb2x2ZSBpZiBpdCBpcyBhXG4gICAgICAvLyBwcm9taXNlLCBhbmQgdGhlbiByZS1ydW4gaGFuZGxlUmVwbHkgd2l0aCB0aGUgbmV3IGJvZHkuXG4gICAgICBib2R5LnRoZW4oKG5ld0RhdGEpID0+IGhhbmRsZVJlcGx5KG1vY2tEaXNwYXRjaGVzLCBuZXdEYXRhKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGdldFJlc3BvbnNlRGF0YShib2R5KVxuICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IGdlbmVyYXRlS2V5VmFsdWVzKGhlYWRlcnMpXG4gICAgY29uc3QgcmVzcG9uc2VUcmFpbGVycyA9IGdlbmVyYXRlS2V5VmFsdWVzKHRyYWlsZXJzKVxuXG4gICAgaGFuZGxlci5hYm9ydCA9IG5vcFxuICAgIGhhbmRsZXIub25IZWFkZXJzKHN0YXR1c0NvZGUsIHJlc3BvbnNlSGVhZGVycywgcmVzdW1lLCBnZXRTdGF0dXNUZXh0KHN0YXR1c0NvZGUpKVxuICAgIGhhbmRsZXIub25EYXRhKEJ1ZmZlci5mcm9tKHJlc3BvbnNlRGF0YSkpXG4gICAgaGFuZGxlci5vbkNvbXBsZXRlKHJlc3BvbnNlVHJhaWxlcnMpXG4gICAgZGVsZXRlTW9ja0Rpc3BhdGNoKG1vY2tEaXNwYXRjaGVzLCBrZXkpXG4gIH1cblxuICBmdW5jdGlvbiByZXN1bWUgKCkge31cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBidWlsZE1vY2tEaXNwYXRjaCAoKSB7XG4gIGNvbnN0IGFnZW50ID0gdGhpc1trTW9ja0FnZW50XVxuICBjb25zdCBvcmlnaW4gPSB0aGlzW2tPcmlnaW5dXG4gIGNvbnN0IG9yaWdpbmFsRGlzcGF0Y2ggPSB0aGlzW2tPcmlnaW5hbERpc3BhdGNoXVxuXG4gIHJldHVybiBmdW5jdGlvbiBkaXNwYXRjaCAob3B0cywgaGFuZGxlcikge1xuICAgIGlmIChhZ2VudC5pc01vY2tBY3RpdmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1vY2tEaXNwYXRjaC5jYWxsKHRoaXMsIG9wdHMsIGhhbmRsZXIpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBNb2NrTm90TWF0Y2hlZEVycm9yKSB7XG4gICAgICAgICAgY29uc3QgbmV0Q29ubmVjdCA9IGFnZW50W2tHZXROZXRDb25uZWN0XSgpXG4gICAgICAgICAgaWYgKG5ldENvbm5lY3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9ja05vdE1hdGNoZWRFcnJvcihgJHtlcnJvci5tZXNzYWdlfTogc3Vic2VxdWVudCByZXF1ZXN0IHRvIG9yaWdpbiAke29yaWdpbn0gd2FzIG5vdCBhbGxvd2VkIChuZXQuY29ubmVjdCBkaXNhYmxlZClgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hlY2tOZXRDb25uZWN0KG5ldENvbm5lY3QsIG9yaWdpbikpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGlzcGF0Y2guY2FsbCh0aGlzLCBvcHRzLCBoYW5kbGVyKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9ja05vdE1hdGNoZWRFcnJvcihgJHtlcnJvci5tZXNzYWdlfTogc3Vic2VxdWVudCByZXF1ZXN0IHRvIG9yaWdpbiAke29yaWdpbn0gd2FzIG5vdCBhbGxvd2VkIChuZXQuY29ubmVjdCBpcyBub3QgZW5hYmxlZCBmb3IgdGhpcyBvcmlnaW4pYClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcmlnaW5hbERpc3BhdGNoLmNhbGwodGhpcywgb3B0cywgaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tOZXRDb25uZWN0IChuZXRDb25uZWN0LCBvcmlnaW4pIHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChvcmlnaW4pXG4gIGlmIChuZXRDb25uZWN0ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ldENvbm5lY3QpICYmIG5ldENvbm5lY3Quc29tZSgobWF0Y2hlcikgPT4gbWF0Y2hWYWx1ZShtYXRjaGVyLCB1cmwuaG9zdCkpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRNb2NrT3B0aW9ucyAob3B0cykge1xuICBpZiAob3B0cykge1xuICAgIGNvbnN0IHsgYWdlbnQsIC4uLm1vY2tPcHRpb25zIH0gPSBvcHRzXG4gICAgcmV0dXJuIG1vY2tPcHRpb25zXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldFJlc3BvbnNlRGF0YSxcbiAgZ2V0TW9ja0Rpc3BhdGNoLFxuICBhZGRNb2NrRGlzcGF0Y2gsXG4gIGRlbGV0ZU1vY2tEaXNwYXRjaCxcbiAgYnVpbGRLZXksXG4gIGdlbmVyYXRlS2V5VmFsdWVzLFxuICBtYXRjaFZhbHVlLFxuICBnZXRSZXNwb25zZSxcbiAgZ2V0U3RhdHVzVGV4dCxcbiAgbW9ja0Rpc3BhdGNoLFxuICBidWlsZE1vY2tEaXNwYXRjaCxcbiAgY2hlY2tOZXRDb25uZWN0LFxuICBidWlsZE1vY2tPcHRpb25zLFxuICBnZXRIZWFkZXJCeU5hbWVcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBnZXRSZXNwb25zZURhdGEsIGJ1aWxkS2V5LCBhZGRNb2NrRGlzcGF0Y2ggfSA9IHJlcXVpcmUoJy4vbW9jay11dGlscycpXG5jb25zdCB7XG4gIGtEaXNwYXRjaGVzLFxuICBrRGlzcGF0Y2hLZXksXG4gIGtEZWZhdWx0SGVhZGVycyxcbiAga0RlZmF1bHRUcmFpbGVycyxcbiAga0NvbnRlbnRMZW5ndGgsXG4gIGtNb2NrRGlzcGF0Y2hcbn0gPSByZXF1aXJlKCcuL21vY2stc3ltYm9scycpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IGJ1aWxkVVJMIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHNjb3BlIEFQSSBmb3IgYW4gaW50ZXJjZXB0b3IgcmVwbHlcbiAqL1xuY2xhc3MgTW9ja1Njb3BlIHtcbiAgY29uc3RydWN0b3IgKG1vY2tEaXNwYXRjaCkge1xuICAgIHRoaXNba01vY2tEaXNwYXRjaF0gPSBtb2NrRGlzcGF0Y2hcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxheSBhIHJlcGx5IGJ5IGEgc2V0IGFtb3VudCBpbiBtcy5cbiAgICovXG4gIGRlbGF5ICh3YWl0SW5Ncykge1xuICAgIGlmICh0eXBlb2Ygd2FpdEluTXMgIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHdhaXRJbk1zKSB8fCB3YWl0SW5NcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3dhaXRJbk1zIG11c3QgYmUgYSB2YWxpZCBpbnRlZ2VyID4gMCcpXG4gICAgfVxuXG4gICAgdGhpc1trTW9ja0Rpc3BhdGNoXS5kZWxheSA9IHdhaXRJbk1zXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgYSBkZWZpbmVkIHJlcGx5LCBuZXZlciBtYXJrIGFzIGNvbnN1bWVkLlxuICAgKi9cbiAgcGVyc2lzdCAoKSB7XG4gICAgdGhpc1trTW9ja0Rpc3BhdGNoXS5wZXJzaXN0ID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgb25lIHRvIGRlZmluZSBhIHJlcGx5IGZvciBhIHNldCBhbW91bnQgb2YgbWF0Y2hpbmcgcmVxdWVzdHMuXG4gICAqL1xuICB0aW1lcyAocmVwZWF0VGltZXMpIHtcbiAgICBpZiAodHlwZW9mIHJlcGVhdFRpbWVzICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzSW50ZWdlcihyZXBlYXRUaW1lcykgfHwgcmVwZWF0VGltZXMgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdyZXBlYXRUaW1lcyBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciA+IDAnKVxuICAgIH1cblxuICAgIHRoaXNba01vY2tEaXNwYXRjaF0udGltZXMgPSByZXBlYXRUaW1lc1xuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIGludGVyY2VwdG9yIGZvciBhIE1vY2tcbiAqL1xuY2xhc3MgTW9ja0ludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIG1vY2tEaXNwYXRjaGVzKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdvcHRzIG11c3QgYmUgYW4gb2JqZWN0JylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRzLnBhdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29wdHMucGF0aCBtdXN0IGJlIGRlZmluZWQnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdHMubWV0aG9kID09PSAndW5kZWZpbmVkJykge1xuICAgICAgb3B0cy5tZXRob2QgPSAnR0VUJ1xuICAgIH1cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzEyNDVcbiAgICAvLyBBcyBwZXIgUkZDIDM5ODYsIGNsaWVudHMgYXJlIG5vdCBzdXBwb3NlZCB0byBzZW5kIFVSSVxuICAgIC8vIGZyYWdtZW50cyB0byBzZXJ2ZXJzIHdoZW4gdGhleSByZXRyaWV2ZSBhIGRvY3VtZW50LFxuICAgIGlmICh0eXBlb2Ygb3B0cy5wYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKG9wdHMucXVlcnkpIHtcbiAgICAgICAgb3B0cy5wYXRoID0gYnVpbGRVUkwob3B0cy5wYXRoLCBvcHRzLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTWF0Y2hlcyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9ibG9iL21haW4vbGliL2ZldGNoL2luZGV4LmpzI0wxODExXG4gICAgICAgIGNvbnN0IHBhcnNlZFVSTCA9IG5ldyBVUkwob3B0cy5wYXRoLCAnZGF0YTovLycpXG4gICAgICAgIG9wdHMucGF0aCA9IHBhcnNlZFVSTC5wYXRobmFtZSArIHBhcnNlZFVSTC5zZWFyY2hcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRzLm1ldGhvZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdHMubWV0aG9kID0gb3B0cy5tZXRob2QudG9VcHBlckNhc2UoKVxuICAgIH1cblxuICAgIHRoaXNba0Rpc3BhdGNoS2V5XSA9IGJ1aWxkS2V5KG9wdHMpXG4gICAgdGhpc1trRGlzcGF0Y2hlc10gPSBtb2NrRGlzcGF0Y2hlc1xuICAgIHRoaXNba0RlZmF1bHRIZWFkZXJzXSA9IHt9XG4gICAgdGhpc1trRGVmYXVsdFRyYWlsZXJzXSA9IHt9XG4gICAgdGhpc1trQ29udGVudExlbmd0aF0gPSBmYWxzZVxuICB9XG5cbiAgY3JlYXRlTW9ja1Njb3BlRGlzcGF0Y2hEYXRhIChzdGF0dXNDb2RlLCBkYXRhLCByZXNwb25zZU9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGdldFJlc3BvbnNlRGF0YShkYXRhKVxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzW2tDb250ZW50TGVuZ3RoXSA/IHsgJ2NvbnRlbnQtbGVuZ3RoJzogcmVzcG9uc2VEYXRhLmxlbmd0aCB9IDoge31cbiAgICBjb25zdCBoZWFkZXJzID0geyAuLi50aGlzW2tEZWZhdWx0SGVhZGVyc10sIC4uLmNvbnRlbnRMZW5ndGgsIC4uLnJlc3BvbnNlT3B0aW9ucy5oZWFkZXJzIH1cbiAgICBjb25zdCB0cmFpbGVycyA9IHsgLi4udGhpc1trRGVmYXVsdFRyYWlsZXJzXSwgLi4ucmVzcG9uc2VPcHRpb25zLnRyYWlsZXJzIH1cblxuICAgIHJldHVybiB7IHN0YXR1c0NvZGUsIGRhdGEsIGhlYWRlcnMsIHRyYWlsZXJzIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmVwbHlQYXJhbWV0ZXJzIChzdGF0dXNDb2RlLCBkYXRhLCByZXNwb25zZU9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIHN0YXR1c0NvZGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXR1c0NvZGUgbXVzdCBiZSBkZWZpbmVkJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdkYXRhIG11c3QgYmUgZGVmaW5lZCcpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2VPcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdyZXNwb25zZU9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb2NrIGFuIHVuZGljaSByZXF1ZXN0IHdpdGggYSBkZWZpbmVkIHJlcGx5LlxuICAgKi9cbiAgcmVwbHkgKHJlcGx5RGF0YSkge1xuICAgIC8vIFZhbHVlcyBvZiByZXBseSBhcmVuJ3QgYXZhaWxhYmxlIHJpZ2h0IG5vdyBhcyB0aGV5XG4gICAgLy8gY2FuIG9ubHkgYmUgYXZhaWxhYmxlIHdoZW4gdGhlIHJlcGx5IGNhbGxiYWNrIGlzIGludm9rZWQuXG4gICAgaWYgKHR5cGVvZiByZXBseURhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFdlJ2xsIGZpcnN0IHdyYXAgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGluIGFub3RoZXIgZnVuY3Rpb24sXG4gICAgICAvLyB0aGlzIGZ1bmN0aW9uIHdpbGwgcHJvcGVybHkgcmVzb2x2ZSB0aGUgZGF0YSBmcm9tIHRoZSBjYWxsYmFja1xuICAgICAgLy8gd2hlbiBpbnZva2VkLlxuICAgICAgY29uc3Qgd3JhcHBlZERlZmF1bHRzQ2FsbGJhY2sgPSAob3B0cykgPT4ge1xuICAgICAgICAvLyBPdXIgcmVwbHkgb3B0aW9ucyBjYWxsYmFjayBjb250YWlucyB0aGUgcGFyYW1ldGVyIGZvciBzdGF0dXNDb2RlLCBkYXRhIGFuZCBvcHRpb25zLlxuICAgICAgICBjb25zdCByZXNvbHZlZERhdGEgPSByZXBseURhdGEob3B0cylcblxuICAgICAgICAvLyBDaGVjayBpZiBpdCBpcyBpbiB0aGUgcmlnaHQgZm9ybWF0XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWREYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigncmVwbHkgb3B0aW9ucyBjYWxsYmFjayBtdXN0IHJldHVybiBhbiBvYmplY3QnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBzdGF0dXNDb2RlLCBkYXRhID0gJycsIHJlc3BvbnNlT3B0aW9ucyA9IHt9IH0gPSByZXNvbHZlZERhdGFcbiAgICAgICAgdGhpcy52YWxpZGF0ZVJlcGx5UGFyYW1ldGVycyhzdGF0dXNDb2RlLCBkYXRhLCByZXNwb25zZU9wdGlvbnMpXG4gICAgICAgIC8vIFNpbmNlIHRoZSB2YWx1ZXMgY2FuIGJlIG9idGFpbmVkIGltbWVkaWF0ZWx5IHdlIHJldHVybiB0aGVtXG4gICAgICAgIC8vIGZyb20gdGhpcyBoaWdoZXIgb3JkZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHJlc29sdmVkIGxhdGVyLlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnRoaXMuY3JlYXRlTW9ja1Njb3BlRGlzcGF0Y2hEYXRhKHN0YXR1c0NvZGUsIGRhdGEsIHJlc3BvbnNlT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdXN1YWwgZGlzcGF0Y2ggZGF0YSwgYnV0IHRoaXMgdGltZSBzZXQgdGhlIGRhdGEgcGFyYW1ldGVyIHRvIGZ1bmN0aW9uIHRoYXQgd2lsbCBldmVudHVhbGx5IHByb3ZpZGUgZGF0YS5cbiAgICAgIGNvbnN0IG5ld01vY2tEaXNwYXRjaCA9IGFkZE1vY2tEaXNwYXRjaCh0aGlzW2tEaXNwYXRjaGVzXSwgdGhpc1trRGlzcGF0Y2hLZXldLCB3cmFwcGVkRGVmYXVsdHNDYWxsYmFjaylcbiAgICAgIHJldHVybiBuZXcgTW9ja1Njb3BlKG5ld01vY2tEaXNwYXRjaClcbiAgICB9XG5cbiAgICAvLyBXZSBjYW4gaGF2ZSBlaXRoZXIgb25lIG9yIHRocmVlIHBhcmFtZXRlcnMsIGlmIHdlIGdldCBoZXJlLFxuICAgIC8vIHdlIHNob3VsZCBoYXZlIDEtMyBwYXJhbWV0ZXJzLiBTbyB3ZSBzcHJlYWQgdGhlIGFyZ3VtZW50cyBvZlxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdG8gb2J0YWluIHRoZSBwYXJhbWV0ZXJzLCBzaW5jZSByZXBseURhdGEgd2lsbCBhbHdheXNcbiAgICAvLyBqdXN0IGJlIHRoZSBzdGF0dXNDb2RlLlxuICAgIGNvbnN0IFtzdGF0dXNDb2RlLCBkYXRhID0gJycsIHJlc3BvbnNlT3B0aW9ucyA9IHt9XSA9IFsuLi5hcmd1bWVudHNdXG4gICAgdGhpcy52YWxpZGF0ZVJlcGx5UGFyYW1ldGVycyhzdGF0dXNDb2RlLCBkYXRhLCByZXNwb25zZU9wdGlvbnMpXG5cbiAgICAvLyBTZW5kIGluLWFscmVhZHkgcHJvdmlkZWQgZGF0YSBsaWtlIHVzdWFsXG4gICAgY29uc3QgZGlzcGF0Y2hEYXRhID0gdGhpcy5jcmVhdGVNb2NrU2NvcGVEaXNwYXRjaERhdGEoc3RhdHVzQ29kZSwgZGF0YSwgcmVzcG9uc2VPcHRpb25zKVxuICAgIGNvbnN0IG5ld01vY2tEaXNwYXRjaCA9IGFkZE1vY2tEaXNwYXRjaCh0aGlzW2tEaXNwYXRjaGVzXSwgdGhpc1trRGlzcGF0Y2hLZXldLCBkaXNwYXRjaERhdGEpXG4gICAgcmV0dXJuIG5ldyBNb2NrU2NvcGUobmV3TW9ja0Rpc3BhdGNoKVxuICB9XG5cbiAgLyoqXG4gICAqIE1vY2sgYW4gdW5kaWNpIHJlcXVlc3Qgd2l0aCBhIGRlZmluZWQgZXJyb3IuXG4gICAqL1xuICByZXBseVdpdGhFcnJvciAoZXJyb3IpIHtcbiAgICBpZiAodHlwZW9mIGVycm9yID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdlcnJvciBtdXN0IGJlIGRlZmluZWQnKVxuICAgIH1cblxuICAgIGNvbnN0IG5ld01vY2tEaXNwYXRjaCA9IGFkZE1vY2tEaXNwYXRjaCh0aGlzW2tEaXNwYXRjaGVzXSwgdGhpc1trRGlzcGF0Y2hLZXldLCB7IGVycm9yIH0pXG4gICAgcmV0dXJuIG5ldyBNb2NrU2NvcGUobmV3TW9ja0Rpc3BhdGNoKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkZWZhdWx0IHJlcGx5IGhlYWRlcnMgb24gdGhlIGludGVyY2VwdG9yIGZvciBzdWJzZXF1ZW50IHJlcGxpZXNcbiAgICovXG4gIGRlZmF1bHRSZXBseUhlYWRlcnMgKGhlYWRlcnMpIHtcbiAgICBpZiAodHlwZW9mIGhlYWRlcnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2hlYWRlcnMgbXVzdCBiZSBkZWZpbmVkJylcbiAgICB9XG5cbiAgICB0aGlzW2tEZWZhdWx0SGVhZGVyc10gPSBoZWFkZXJzXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGVmYXVsdCByZXBseSB0cmFpbGVycyBvbiB0aGUgaW50ZXJjZXB0b3IgZm9yIHN1YnNlcXVlbnQgcmVwbGllc1xuICAgKi9cbiAgZGVmYXVsdFJlcGx5VHJhaWxlcnMgKHRyYWlsZXJzKSB7XG4gICAgaWYgKHR5cGVvZiB0cmFpbGVycyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndHJhaWxlcnMgbXVzdCBiZSBkZWZpbmVkJylcbiAgICB9XG5cbiAgICB0aGlzW2tEZWZhdWx0VHJhaWxlcnNdID0gdHJhaWxlcnNcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZXBseSBjb250ZW50IGxlbmd0aCBoZWFkZXIgZm9yIHJlcGxpZXMgb24gdGhlIGludGVyY2VwdG9yXG4gICAqL1xuICByZXBseUNvbnRlbnRMZW5ndGggKCkge1xuICAgIHRoaXNba0NvbnRlbnRMZW5ndGhdID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMuTW9ja0ludGVyY2VwdG9yID0gTW9ja0ludGVyY2VwdG9yXG5tb2R1bGUuZXhwb3J0cy5Nb2NrU2NvcGUgPSBNb2NrU2NvcGVcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBwcm9taXNpZnkgfSA9IHJlcXVpcmUoJ3V0aWwnKVxuY29uc3QgQ2xpZW50ID0gcmVxdWlyZSgnLi4vY2xpZW50JylcbmNvbnN0IHsgYnVpbGRNb2NrRGlzcGF0Y2ggfSA9IHJlcXVpcmUoJy4vbW9jay11dGlscycpXG5jb25zdCB7XG4gIGtEaXNwYXRjaGVzLFxuICBrTW9ja0FnZW50LFxuICBrQ2xvc2UsXG4gIGtPcmlnaW5hbENsb3NlLFxuICBrT3JpZ2luLFxuICBrT3JpZ2luYWxEaXNwYXRjaCxcbiAga0Nvbm5lY3RlZFxufSA9IHJlcXVpcmUoJy4vbW9jay1zeW1ib2xzJylcbmNvbnN0IHsgTW9ja0ludGVyY2VwdG9yIH0gPSByZXF1aXJlKCcuL21vY2staW50ZXJjZXB0b3InKVxuY29uc3QgU3ltYm9scyA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5cbi8qKlxuICogTW9ja0NsaWVudCBwcm92aWRlcyBhbiBBUEkgdGhhdCBleHRlbmRzIHRoZSBDbGllbnQgdG8gaW5mbHVlbmNlIHRoZSBtb2NrRGlzcGF0Y2hlcy5cbiAqL1xuY2xhc3MgTW9ja0NsaWVudCBleHRlbmRzIENsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcmlnaW4sIG9wdHMpIHtcbiAgICBzdXBlcihvcmlnaW4sIG9wdHMpXG5cbiAgICBpZiAoIW9wdHMgfHwgIW9wdHMuYWdlbnQgfHwgdHlwZW9mIG9wdHMuYWdlbnQuZGlzcGF0Y2ggIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignQXJndW1lbnQgb3B0cy5hZ2VudCBtdXN0IGltcGxlbWVudCBBZ2VudCcpXG4gICAgfVxuXG4gICAgdGhpc1trTW9ja0FnZW50XSA9IG9wdHMuYWdlbnRcbiAgICB0aGlzW2tPcmlnaW5dID0gb3JpZ2luXG4gICAgdGhpc1trRGlzcGF0Y2hlc10gPSBbXVxuICAgIHRoaXNba0Nvbm5lY3RlZF0gPSAxXG4gICAgdGhpc1trT3JpZ2luYWxEaXNwYXRjaF0gPSB0aGlzLmRpc3BhdGNoXG4gICAgdGhpc1trT3JpZ2luYWxDbG9zZV0gPSB0aGlzLmNsb3NlLmJpbmQodGhpcylcblxuICAgIHRoaXMuZGlzcGF0Y2ggPSBidWlsZE1vY2tEaXNwYXRjaC5jYWxsKHRoaXMpXG4gICAgdGhpcy5jbG9zZSA9IHRoaXNba0Nsb3NlXVxuICB9XG5cbiAgZ2V0IFtTeW1ib2xzLmtDb25uZWN0ZWRdICgpIHtcbiAgICByZXR1cm4gdGhpc1trQ29ubmVjdGVkXVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGJhc2UgaW50ZXJjZXB0b3IgZm9yIG1vY2tpbmcgcmVwbGllcyBmcm9tIHVuZGljaS5cbiAgICovXG4gIGludGVyY2VwdCAob3B0cykge1xuICAgIHJldHVybiBuZXcgTW9ja0ludGVyY2VwdG9yKG9wdHMsIHRoaXNba0Rpc3BhdGNoZXNdKVxuICB9XG5cbiAgYXN5bmMgW2tDbG9zZV0gKCkge1xuICAgIGF3YWl0IHByb21pc2lmeSh0aGlzW2tPcmlnaW5hbENsb3NlXSkoKVxuICAgIHRoaXNba0Nvbm5lY3RlZF0gPSAwXG4gICAgdGhpc1trTW9ja0FnZW50XVtTeW1ib2xzLmtDbGllbnRzXS5kZWxldGUodGhpc1trT3JpZ2luXSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1vY2tDbGllbnRcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBwcm9taXNpZnkgfSA9IHJlcXVpcmUoJ3V0aWwnKVxuY29uc3QgUG9vbCA9IHJlcXVpcmUoJy4uL3Bvb2wnKVxuY29uc3QgeyBidWlsZE1vY2tEaXNwYXRjaCB9ID0gcmVxdWlyZSgnLi9tb2NrLXV0aWxzJylcbmNvbnN0IHtcbiAga0Rpc3BhdGNoZXMsXG4gIGtNb2NrQWdlbnQsXG4gIGtDbG9zZSxcbiAga09yaWdpbmFsQ2xvc2UsXG4gIGtPcmlnaW4sXG4gIGtPcmlnaW5hbERpc3BhdGNoLFxuICBrQ29ubmVjdGVkXG59ID0gcmVxdWlyZSgnLi9tb2NrLXN5bWJvbHMnKVxuY29uc3QgeyBNb2NrSW50ZXJjZXB0b3IgfSA9IHJlcXVpcmUoJy4vbW9jay1pbnRlcmNlcHRvcicpXG5jb25zdCBTeW1ib2xzID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcblxuLyoqXG4gKiBNb2NrUG9vbCBwcm92aWRlcyBhbiBBUEkgdGhhdCBleHRlbmRzIHRoZSBQb29sIHRvIGluZmx1ZW5jZSB0aGUgbW9ja0Rpc3BhdGNoZXMuXG4gKi9cbmNsYXNzIE1vY2tQb29sIGV4dGVuZHMgUG9vbCB7XG4gIGNvbnN0cnVjdG9yIChvcmlnaW4sIG9wdHMpIHtcbiAgICBzdXBlcihvcmlnaW4sIG9wdHMpXG5cbiAgICBpZiAoIW9wdHMgfHwgIW9wdHMuYWdlbnQgfHwgdHlwZW9mIG9wdHMuYWdlbnQuZGlzcGF0Y2ggIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignQXJndW1lbnQgb3B0cy5hZ2VudCBtdXN0IGltcGxlbWVudCBBZ2VudCcpXG4gICAgfVxuXG4gICAgdGhpc1trTW9ja0FnZW50XSA9IG9wdHMuYWdlbnRcbiAgICB0aGlzW2tPcmlnaW5dID0gb3JpZ2luXG4gICAgdGhpc1trRGlzcGF0Y2hlc10gPSBbXVxuICAgIHRoaXNba0Nvbm5lY3RlZF0gPSAxXG4gICAgdGhpc1trT3JpZ2luYWxEaXNwYXRjaF0gPSB0aGlzLmRpc3BhdGNoXG4gICAgdGhpc1trT3JpZ2luYWxDbG9zZV0gPSB0aGlzLmNsb3NlLmJpbmQodGhpcylcblxuICAgIHRoaXMuZGlzcGF0Y2ggPSBidWlsZE1vY2tEaXNwYXRjaC5jYWxsKHRoaXMpXG4gICAgdGhpcy5jbG9zZSA9IHRoaXNba0Nsb3NlXVxuICB9XG5cbiAgZ2V0IFtTeW1ib2xzLmtDb25uZWN0ZWRdICgpIHtcbiAgICByZXR1cm4gdGhpc1trQ29ubmVjdGVkXVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGJhc2UgaW50ZXJjZXB0b3IgZm9yIG1vY2tpbmcgcmVwbGllcyBmcm9tIHVuZGljaS5cbiAgICovXG4gIGludGVyY2VwdCAob3B0cykge1xuICAgIHJldHVybiBuZXcgTW9ja0ludGVyY2VwdG9yKG9wdHMsIHRoaXNba0Rpc3BhdGNoZXNdKVxuICB9XG5cbiAgYXN5bmMgW2tDbG9zZV0gKCkge1xuICAgIGF3YWl0IHByb21pc2lmeSh0aGlzW2tPcmlnaW5hbENsb3NlXSkoKVxuICAgIHRoaXNba0Nvbm5lY3RlZF0gPSAwXG4gICAgdGhpc1trTW9ja0FnZW50XVtTeW1ib2xzLmtDbGllbnRzXS5kZWxldGUodGhpc1trT3JpZ2luXSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1vY2tQb29sXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHNpbmd1bGFycyA9IHtcbiAgcHJvbm91bjogJ2l0JyxcbiAgaXM6ICdpcycsXG4gIHdhczogJ3dhcycsXG4gIHRoaXM6ICd0aGlzJ1xufVxuXG5jb25zdCBwbHVyYWxzID0ge1xuICBwcm9ub3VuOiAndGhleScsXG4gIGlzOiAnYXJlJyxcbiAgd2FzOiAnd2VyZScsXG4gIHRoaXM6ICd0aGVzZSdcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBQbHVyYWxpemVyIHtcbiAgY29uc3RydWN0b3IgKHNpbmd1bGFyLCBwbHVyYWwpIHtcbiAgICB0aGlzLnNpbmd1bGFyID0gc2luZ3VsYXJcbiAgICB0aGlzLnBsdXJhbCA9IHBsdXJhbFxuICB9XG5cbiAgcGx1cmFsaXplIChjb3VudCkge1xuICAgIGNvbnN0IG9uZSA9IGNvdW50ID09PSAxXG4gICAgY29uc3Qga2V5cyA9IG9uZSA/IHNpbmd1bGFycyA6IHBsdXJhbHNcbiAgICBjb25zdCBub3VuID0gb25lID8gdGhpcy5zaW5ndWxhciA6IHRoaXMucGx1cmFsXG4gICAgcmV0dXJuIHsgLi4ua2V5cywgY291bnQsIG5vdW4gfVxuICB9XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgVHJhbnNmb3JtIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgeyBDb25zb2xlIH0gPSByZXF1aXJlKCdjb25zb2xlJylcblxuLyoqXG4gKiBHZXRzIHRoZSBvdXRwdXQgb2YgYGNvbnNvbGUudGFibGUoXHUyMDI2KWAgYXMgYSBzdHJpbmcuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUGVuZGluZ0ludGVyY2VwdG9yc0Zvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yICh7IGRpc2FibGVDb2xvcnMgfSA9IHt9KSB7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcbiAgICAgIHRyYW5zZm9ybSAoY2h1bmssIF9lbmMsIGNiKSB7XG4gICAgICAgIGNiKG51bGwsIGNodW5rKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBDb25zb2xlKHtcbiAgICAgIHN0ZG91dDogdGhpcy50cmFuc2Zvcm0sXG4gICAgICBpbnNwZWN0T3B0aW9uczoge1xuICAgICAgICBjb2xvcnM6ICFkaXNhYmxlQ29sb3JzICYmICFwcm9jZXNzLmVudi5DSVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmb3JtYXQgKHBlbmRpbmdJbnRlcmNlcHRvcnMpIHtcbiAgICBjb25zdCB3aXRoUHJldHR5SGVhZGVycyA9IHBlbmRpbmdJbnRlcmNlcHRvcnMubWFwKFxuICAgICAgKHsgbWV0aG9kLCBwYXRoLCBkYXRhOiB7IHN0YXR1c0NvZGUgfSwgcGVyc2lzdCwgdGltZXMsIHRpbWVzSW52b2tlZCwgb3JpZ2luIH0pID0+ICh7XG4gICAgICAgIE1ldGhvZDogbWV0aG9kLFxuICAgICAgICBPcmlnaW46IG9yaWdpbixcbiAgICAgICAgUGF0aDogcGF0aCxcbiAgICAgICAgJ1N0YXR1cyBjb2RlJzogc3RhdHVzQ29kZSxcbiAgICAgICAgUGVyc2lzdGVudDogcGVyc2lzdCA/ICdcdTI3MDUnIDogJ1x1Mjc0QycsXG4gICAgICAgIEludm9jYXRpb25zOiB0aW1lc0ludm9rZWQsXG4gICAgICAgIFJlbWFpbmluZzogcGVyc2lzdCA/IEluZmluaXR5IDogdGltZXMgLSB0aW1lc0ludm9rZWRcbiAgICAgIH0pKVxuXG4gICAgdGhpcy5sb2dnZXIudGFibGUod2l0aFByZXR0eUhlYWRlcnMpXG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLnJlYWQoKS50b1N0cmluZygpXG4gIH1cbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBrQ2xpZW50cyB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IEFnZW50ID0gcmVxdWlyZSgnLi4vYWdlbnQnKVxuY29uc3Qge1xuICBrQWdlbnQsXG4gIGtNb2NrQWdlbnRTZXQsXG4gIGtNb2NrQWdlbnRHZXQsXG4gIGtEaXNwYXRjaGVzLFxuICBrSXNNb2NrQWN0aXZlLFxuICBrTmV0Q29ubmVjdCxcbiAga0dldE5ldENvbm5lY3QsXG4gIGtPcHRpb25zLFxuICBrRmFjdG9yeVxufSA9IHJlcXVpcmUoJy4vbW9jay1zeW1ib2xzJylcbmNvbnN0IE1vY2tDbGllbnQgPSByZXF1aXJlKCcuL21vY2stY2xpZW50JylcbmNvbnN0IE1vY2tQb29sID0gcmVxdWlyZSgnLi9tb2NrLXBvb2wnKVxuY29uc3QgeyBtYXRjaFZhbHVlLCBidWlsZE1vY2tPcHRpb25zIH0gPSByZXF1aXJlKCcuL21vY2stdXRpbHMnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgVW5kaWNpRXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IERpc3BhdGNoZXIgPSByZXF1aXJlKCcuLi9kaXNwYXRjaGVyJylcbmNvbnN0IFBsdXJhbGl6ZXIgPSByZXF1aXJlKCcuL3BsdXJhbGl6ZXInKVxuY29uc3QgUGVuZGluZ0ludGVyY2VwdG9yc0Zvcm1hdHRlciA9IHJlcXVpcmUoJy4vcGVuZGluZy1pbnRlcmNlcHRvcnMtZm9ybWF0dGVyJylcblxuY2xhc3MgRmFrZVdlYWtSZWYge1xuICBjb25zdHJ1Y3RvciAodmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgfVxuXG4gIGRlcmVmICgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZVxuICB9XG59XG5cbmNsYXNzIE1vY2tBZ2VudCBleHRlbmRzIERpc3BhdGNoZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMpXG5cbiAgICB0aGlzW2tOZXRDb25uZWN0XSA9IHRydWVcbiAgICB0aGlzW2tJc01vY2tBY3RpdmVdID0gdHJ1ZVxuXG4gICAgLy8gSW5zdGFudGlhdGUgQWdlbnQgYW5kIGVuY2Fwc3VsYXRlXG4gICAgaWYgKChvcHRzICYmIG9wdHMuYWdlbnQgJiYgdHlwZW9mIG9wdHMuYWdlbnQuZGlzcGF0Y2ggIT09ICdmdW5jdGlvbicpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0FyZ3VtZW50IG9wdHMuYWdlbnQgbXVzdCBpbXBsZW1lbnQgQWdlbnQnKVxuICAgIH1cbiAgICBjb25zdCBhZ2VudCA9IG9wdHMgJiYgb3B0cy5hZ2VudCA/IG9wdHMuYWdlbnQgOiBuZXcgQWdlbnQob3B0cylcbiAgICB0aGlzW2tBZ2VudF0gPSBhZ2VudFxuXG4gICAgdGhpc1trQ2xpZW50c10gPSBhZ2VudFtrQ2xpZW50c11cbiAgICB0aGlzW2tPcHRpb25zXSA9IGJ1aWxkTW9ja09wdGlvbnMob3B0cylcbiAgfVxuXG4gIGdldCAob3JpZ2luKSB7XG4gICAgbGV0IGRpc3BhdGNoZXIgPSB0aGlzW2tNb2NrQWdlbnRHZXRdKG9yaWdpbilcblxuICAgIGlmICghZGlzcGF0Y2hlcikge1xuICAgICAgZGlzcGF0Y2hlciA9IHRoaXNba0ZhY3RvcnldKG9yaWdpbilcbiAgICAgIHRoaXNba01vY2tBZ2VudFNldF0ob3JpZ2luLCBkaXNwYXRjaGVyKVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGF0Y2hlclxuICB9XG5cbiAgZGlzcGF0Y2ggKG9wdHMsIGhhbmRsZXIpIHtcbiAgICAvLyBDYWxsIE1vY2tBZ2VudC5nZXQgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIHNldHVwIGJlZm9yZSBkaXNwYXRjaGluZyBhcyBub3JtYWxcbiAgICB0aGlzLmdldChvcHRzLm9yaWdpbilcbiAgICByZXR1cm4gdGhpc1trQWdlbnRdLmRpc3BhdGNoKG9wdHMsIGhhbmRsZXIpXG4gIH1cblxuICBhc3luYyBjbG9zZSAoKSB7XG4gICAgYXdhaXQgdGhpc1trQWdlbnRdLmNsb3NlKClcbiAgICB0aGlzW2tDbGllbnRzXS5jbGVhcigpXG4gIH1cblxuICBkZWFjdGl2YXRlICgpIHtcbiAgICB0aGlzW2tJc01vY2tBY3RpdmVdID0gZmFsc2VcbiAgfVxuXG4gIGFjdGl2YXRlICgpIHtcbiAgICB0aGlzW2tJc01vY2tBY3RpdmVdID0gdHJ1ZVxuICB9XG5cbiAgZW5hYmxlTmV0Q29ubmVjdCAobWF0Y2hlcikge1xuICAgIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG1hdGNoZXIgPT09ICdmdW5jdGlvbicgfHwgbWF0Y2hlciBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpc1trTmV0Q29ubmVjdF0pKSB7XG4gICAgICAgIHRoaXNba05ldENvbm5lY3RdLnB1c2gobWF0Y2hlcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNba05ldENvbm5lY3RdID0gW21hdGNoZXJdXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXNba05ldENvbm5lY3RdID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1Vuc3VwcG9ydGVkIG1hdGNoZXIuIE11c3QgYmUgb25lIG9mIFN0cmluZ3xGdW5jdGlvbnxSZWdFeHAuJylcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlTmV0Q29ubmVjdCAoKSB7XG4gICAgdGhpc1trTmV0Q29ubmVjdF0gPSBmYWxzZVxuICB9XG5cbiAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBieXBhc3MgaXNzdWVzIGNhdXNlZCBieSB1c2luZyBnbG9iYWwgc3ltYm9scyAtIHNlZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzE0NDdcbiAgZ2V0IGlzTW9ja0FjdGl2ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0lzTW9ja0FjdGl2ZV1cbiAgfVxuXG4gIFtrTW9ja0FnZW50U2V0XSAob3JpZ2luLCBkaXNwYXRjaGVyKSB7XG4gICAgdGhpc1trQ2xpZW50c10uc2V0KG9yaWdpbiwgbmV3IEZha2VXZWFrUmVmKGRpc3BhdGNoZXIpKVxuICB9XG5cbiAgW2tGYWN0b3J5XSAob3JpZ2luKSB7XG4gICAgY29uc3QgbW9ja09wdGlvbnMgPSBPYmplY3QuYXNzaWduKHsgYWdlbnQ6IHRoaXMgfSwgdGhpc1trT3B0aW9uc10pXG4gICAgcmV0dXJuIHRoaXNba09wdGlvbnNdICYmIHRoaXNba09wdGlvbnNdLmNvbm5lY3Rpb25zID09PSAxXG4gICAgICA/IG5ldyBNb2NrQ2xpZW50KG9yaWdpbiwgbW9ja09wdGlvbnMpXG4gICAgICA6IG5ldyBNb2NrUG9vbChvcmlnaW4sIG1vY2tPcHRpb25zKVxuICB9XG5cbiAgW2tNb2NrQWdlbnRHZXRdIChvcmlnaW4pIHtcbiAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gaW1tZWRpYXRlbHkgZmluZCBpdFxuICAgIGNvbnN0IHJlZiA9IHRoaXNba0NsaWVudHNdLmdldChvcmlnaW4pXG4gICAgaWYgKHJlZikge1xuICAgICAgcmV0dXJuIHJlZi5kZXJlZigpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9yaWdpbiBpcyBub3QgYSBzdHJpbmcgY3JlYXRlIGEgZHVtbXkgcGFyZW50IHBvb2wgYW5kIHJldHVybiB0byB1c2VyXG4gICAgaWYgKHR5cGVvZiBvcmlnaW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBkaXNwYXRjaGVyID0gdGhpc1trRmFjdG9yeV0oJ2h0dHA6Ly9sb2NhbGhvc3Q6OTk5OScpXG4gICAgICB0aGlzW2tNb2NrQWdlbnRTZXRdKG9yaWdpbiwgZGlzcGF0Y2hlcilcbiAgICAgIHJldHVybiBkaXNwYXRjaGVyXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgbWF0Y2gsIGNyZWF0ZSBhIHBvb2wgYW5kIGFzc2lnbiB0aGUgc2FtZSBkaXNwYXRjaGVzXG4gICAgZm9yIChjb25zdCBba2V5TWF0Y2hlciwgbm9uRXhwbGljaXRSZWZdIG9mIEFycmF5LmZyb20odGhpc1trQ2xpZW50c10pKSB7XG4gICAgICBjb25zdCBub25FeHBsaWNpdERpc3BhdGNoZXIgPSBub25FeHBsaWNpdFJlZi5kZXJlZigpXG4gICAgICBpZiAobm9uRXhwbGljaXREaXNwYXRjaGVyICYmIHR5cGVvZiBrZXlNYXRjaGVyICE9PSAnc3RyaW5nJyAmJiBtYXRjaFZhbHVlKGtleU1hdGNoZXIsIG9yaWdpbikpIHtcbiAgICAgICAgY29uc3QgZGlzcGF0Y2hlciA9IHRoaXNba0ZhY3RvcnldKG9yaWdpbilcbiAgICAgICAgdGhpc1trTW9ja0FnZW50U2V0XShvcmlnaW4sIGRpc3BhdGNoZXIpXG4gICAgICAgIGRpc3BhdGNoZXJba0Rpc3BhdGNoZXNdID0gbm9uRXhwbGljaXREaXNwYXRjaGVyW2tEaXNwYXRjaGVzXVxuICAgICAgICByZXR1cm4gZGlzcGF0Y2hlclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFtrR2V0TmV0Q29ubmVjdF0gKCkge1xuICAgIHJldHVybiB0aGlzW2tOZXRDb25uZWN0XVxuICB9XG5cbiAgcGVuZGluZ0ludGVyY2VwdG9ycyAoKSB7XG4gICAgY29uc3QgbW9ja0FnZW50Q2xpZW50cyA9IHRoaXNba0NsaWVudHNdXG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShtb2NrQWdlbnRDbGllbnRzLmVudHJpZXMoKSlcbiAgICAgIC5mbGF0TWFwKChbb3JpZ2luLCBzY29wZV0pID0+IHNjb3BlLmRlcmVmKClba0Rpc3BhdGNoZXNdLm1hcChkaXNwYXRjaCA9PiAoeyAuLi5kaXNwYXRjaCwgb3JpZ2luIH0pKSlcbiAgICAgIC5maWx0ZXIoKHsgcGVuZGluZyB9KSA9PiBwZW5kaW5nKVxuICB9XG5cbiAgYXNzZXJ0Tm9QZW5kaW5nSW50ZXJjZXB0b3JzICh7IHBlbmRpbmdJbnRlcmNlcHRvcnNGb3JtYXR0ZXIgPSBuZXcgUGVuZGluZ0ludGVyY2VwdG9yc0Zvcm1hdHRlcigpIH0gPSB7fSkge1xuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLnBlbmRpbmdJbnRlcmNlcHRvcnMoKVxuXG4gICAgaWYgKHBlbmRpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwbHVyYWxpemVyID0gbmV3IFBsdXJhbGl6ZXIoJ2ludGVyY2VwdG9yJywgJ2ludGVyY2VwdG9ycycpLnBsdXJhbGl6ZShwZW5kaW5nLmxlbmd0aClcblxuICAgIHRocm93IG5ldyBVbmRpY2lFcnJvcihgXG4ke3BsdXJhbGl6ZXIuY291bnR9ICR7cGx1cmFsaXplci5ub3VufSAke3BsdXJhbGl6ZXIuaXN9IHBlbmRpbmc6XG5cbiR7cGVuZGluZ0ludGVyY2VwdG9yc0Zvcm1hdHRlci5mb3JtYXQocGVuZGluZyl9XG5gLnRyaW0oKSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1vY2tBZ2VudFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGtQcm94eSwga0Nsb3NlLCBrRGVzdHJveSwga0ludGVyY2VwdG9ycyB9ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgeyBVUkwgfSA9IHJlcXVpcmUoJ3VybCcpXG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQnKVxuY29uc3QgUG9vbCA9IHJlcXVpcmUoJy4vcG9vbCcpXG5jb25zdCBEaXNwYXRjaGVyQmFzZSA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hlci1iYXNlJylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIFJlcXVlc3RBYm9ydGVkRXJyb3IgfSA9IHJlcXVpcmUoJy4vY29yZS9lcnJvcnMnKVxuY29uc3QgYnVpbGRDb25uZWN0b3IgPSByZXF1aXJlKCcuL2NvcmUvY29ubmVjdCcpXG5cbmNvbnN0IGtBZ2VudCA9IFN5bWJvbCgncHJveHkgYWdlbnQnKVxuY29uc3Qga0NsaWVudCA9IFN5bWJvbCgncHJveHkgY2xpZW50JylcbmNvbnN0IGtQcm94eUhlYWRlcnMgPSBTeW1ib2woJ3Byb3h5IGhlYWRlcnMnKVxuY29uc3Qga1JlcXVlc3RUbHMgPSBTeW1ib2woJ3JlcXVlc3QgdGxzIHNldHRpbmdzJylcbmNvbnN0IGtQcm94eVRscyA9IFN5bWJvbCgncHJveHkgdGxzIHNldHRpbmdzJylcbmNvbnN0IGtDb25uZWN0RW5kcG9pbnQgPSBTeW1ib2woJ2Nvbm5lY3QgZW5kcG9pbnQgZnVuY3Rpb24nKVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJvdG9jb2xQb3J0IChwcm90b2NvbCkge1xuICByZXR1cm4gcHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODBcbn1cblxuZnVuY3Rpb24gYnVpbGRQcm94eU9wdGlvbnMgKG9wdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgIG9wdHMgPSB7IHVyaTogb3B0cyB9XG4gIH1cblxuICBpZiAoIW9wdHMgfHwgIW9wdHMudXJpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdQcm94eSBvcHRzLnVyaSBpcyBtYW5kYXRvcnknKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB1cmk6IG9wdHMudXJpLFxuICAgIHByb3RvY29sOiBvcHRzLnByb3RvY29sIHx8ICdodHRwcydcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0RmFjdG9yeSAob3JpZ2luLCBvcHRzKSB7XG4gIHJldHVybiBuZXcgUG9vbChvcmlnaW4sIG9wdHMpXG59XG5cbmNsYXNzIFByb3h5QWdlbnQgZXh0ZW5kcyBEaXNwYXRjaGVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG4gICAgc3VwZXIob3B0cylcbiAgICB0aGlzW2tQcm94eV0gPSBidWlsZFByb3h5T3B0aW9ucyhvcHRzKVxuICAgIHRoaXNba0FnZW50XSA9IG5ldyBBZ2VudChvcHRzKVxuICAgIHRoaXNba0ludGVyY2VwdG9yc10gPSBvcHRzLmludGVyY2VwdG9ycyAmJiBvcHRzLmludGVyY2VwdG9ycy5Qcm94eUFnZW50ICYmIEFycmF5LmlzQXJyYXkob3B0cy5pbnRlcmNlcHRvcnMuUHJveHlBZ2VudClcbiAgICAgID8gb3B0cy5pbnRlcmNlcHRvcnMuUHJveHlBZ2VudFxuICAgICAgOiBbXVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0cyA9IHsgdXJpOiBvcHRzIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdHMgfHwgIW9wdHMudXJpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1Byb3h5IG9wdHMudXJpIGlzIG1hbmRhdG9yeScpXG4gICAgfVxuXG4gICAgY29uc3QgeyBjbGllbnRGYWN0b3J5ID0gZGVmYXVsdEZhY3RvcnkgfSA9IG9wdHNcblxuICAgIGlmICh0eXBlb2YgY2xpZW50RmFjdG9yeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdQcm94eSBvcHRzLmNsaWVudEZhY3RvcnkgbXVzdCBiZSBhIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgdGhpc1trUmVxdWVzdFRsc10gPSBvcHRzLnJlcXVlc3RUbHNcbiAgICB0aGlzW2tQcm94eVRsc10gPSBvcHRzLnByb3h5VGxzXG4gICAgdGhpc1trUHJveHlIZWFkZXJzXSA9IG9wdHMuaGVhZGVycyB8fCB7fVxuXG4gICAgY29uc3QgcmVzb2x2ZWRVcmwgPSBuZXcgVVJMKG9wdHMudXJpKVxuICAgIGNvbnN0IHsgb3JpZ2luLCBwb3J0LCBob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQgfSA9IHJlc29sdmVkVXJsXG5cbiAgICBpZiAob3B0cy5hdXRoICYmIG9wdHMudG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb3B0cy5hdXRoIGNhbm5vdCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggb3B0cy50b2tlbicpXG4gICAgfSBlbHNlIGlmIChvcHRzLmF1dGgpIHtcbiAgICAgIC8qIEBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBvcHRzLnRva2VuICovXG4gICAgICB0aGlzW2tQcm94eUhlYWRlcnNdWydwcm94eS1hdXRob3JpemF0aW9uJ10gPSBgQmFzaWMgJHtvcHRzLmF1dGh9YFxuICAgIH0gZWxzZSBpZiAob3B0cy50b2tlbikge1xuICAgICAgdGhpc1trUHJveHlIZWFkZXJzXVsncHJveHktYXV0aG9yaXphdGlvbiddID0gb3B0cy50b2tlblxuICAgIH0gZWxzZSBpZiAodXNlcm5hbWUgJiYgcGFzc3dvcmQpIHtcbiAgICAgIHRoaXNba1Byb3h5SGVhZGVyc11bJ3Byb3h5LWF1dGhvcml6YXRpb24nXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGAke2RlY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSl9OiR7ZGVjb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKX1gKS50b1N0cmluZygnYmFzZTY0Jyl9YFxuICAgIH1cblxuICAgIGNvbnN0IGNvbm5lY3QgPSBidWlsZENvbm5lY3Rvcih7IC4uLm9wdHMucHJveHlUbHMgfSlcbiAgICB0aGlzW2tDb25uZWN0RW5kcG9pbnRdID0gYnVpbGRDb25uZWN0b3IoeyAuLi5vcHRzLnJlcXVlc3RUbHMgfSlcbiAgICB0aGlzW2tDbGllbnRdID0gY2xpZW50RmFjdG9yeShyZXNvbHZlZFVybCwgeyBjb25uZWN0IH0pXG4gICAgdGhpc1trQWdlbnRdID0gbmV3IEFnZW50KHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBjb25uZWN0OiBhc3luYyAob3B0cywgY2FsbGJhY2spID0+IHtcbiAgICAgICAgbGV0IHJlcXVlc3RlZEhvc3QgPSBvcHRzLmhvc3RcbiAgICAgICAgaWYgKCFvcHRzLnBvcnQpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRIb3N0ICs9IGA6JHtkZWZhdWx0UHJvdG9jb2xQb3J0KG9wdHMucHJvdG9jb2wpfWBcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgc29ja2V0LCBzdGF0dXNDb2RlIH0gPSBhd2FpdCB0aGlzW2tDbGllbnRdLmNvbm5lY3Qoe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgcG9ydCxcbiAgICAgICAgICAgIHBhdGg6IHJlcXVlc3RlZEhvc3QsXG4gICAgICAgICAgICBzaWduYWw6IG9wdHMuc2lnbmFsLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAuLi50aGlzW2tQcm94eUhlYWRlcnNdLFxuICAgICAgICAgICAgICBob3N0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICBzb2NrZXQub24oJ2Vycm9yJywgKCkgPT4ge30pLmRlc3Ryb3koKVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoYFByb3h5IHJlc3BvbnNlICgke3N0YXR1c0NvZGV9KSAhPT0gMjAwIHdoZW4gSFRUUCBUdW5uZWxpbmdgKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdHMucHJvdG9jb2wgIT09ICdodHRwczonKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBzb2NrZXQpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHNlcnZlcm5hbWVcbiAgICAgICAgICBpZiAodGhpc1trUmVxdWVzdFRsc10pIHtcbiAgICAgICAgICAgIHNlcnZlcm5hbWUgPSB0aGlzW2tSZXF1ZXN0VGxzXS5zZXJ2ZXJuYW1lXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlcnZlcm5hbWUgPSBvcHRzLnNlcnZlcm5hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpc1trQ29ubmVjdEVuZHBvaW50XSh7IC4uLm9wdHMsIHNlcnZlcm5hbWUsIGh0dHBTb2NrZXQ6IHNvY2tldCB9LCBjYWxsYmFjaylcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGRpc3BhdGNoIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgY29uc3QgeyBob3N0IH0gPSBuZXcgVVJMKG9wdHMub3JpZ2luKVxuICAgIGNvbnN0IGhlYWRlcnMgPSBidWlsZEhlYWRlcnMob3B0cy5oZWFkZXJzKVxuICAgIHRocm93SWZQcm94eUF1dGhJc1NlbnQoaGVhZGVycylcbiAgICByZXR1cm4gdGhpc1trQWdlbnRdLmRpc3BhdGNoKFxuICAgICAge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgLi4uaGVhZGVycyxcbiAgICAgICAgICBob3N0XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgW2tDbG9zZV0gKCkge1xuICAgIGF3YWl0IHRoaXNba0FnZW50XS5jbG9zZSgpXG4gICAgYXdhaXQgdGhpc1trQ2xpZW50XS5jbG9zZSgpXG4gIH1cblxuICBhc3luYyBba0Rlc3Ryb3ldICgpIHtcbiAgICBhd2FpdCB0aGlzW2tBZ2VudF0uZGVzdHJveSgpXG4gICAgYXdhaXQgdGhpc1trQ2xpZW50XS5kZXN0cm95KClcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBoZWFkZXJzXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn1cbiAqL1xuZnVuY3Rpb24gYnVpbGRIZWFkZXJzIChoZWFkZXJzKSB7XG4gIC8vIFdoZW4gdXNpbmcgdW5kaWNpLmZldGNoLCB0aGUgaGVhZGVycyBsaXN0IGlzIHN0b3JlZFxuICAvLyBhcyBhbiBhcnJheS5cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovXG4gICAgY29uc3QgaGVhZGVyc1BhaXIgPSB7fVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBoZWFkZXJzUGFpcltoZWFkZXJzW2ldXSA9IGhlYWRlcnNbaSArIDFdXG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnNQYWlyXG4gIH1cblxuICByZXR1cm4gaGVhZGVyc1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gaGVhZGVyc1xuICpcbiAqIFByZXZpb3VzIHZlcnNpb25zIG9mIFByb3h5QWdlbnQgc3VnZ2VzdHMgdGhlIFByb3h5LUF1dGhvcml6YXRpb24gaW4gcmVxdWVzdCBoZWFkZXJzXG4gKiBOZXZlcnRoZWxlc3MsIGl0IHdhcyBjaGFuZ2VkIGFuZCB0byBhdm9pZCBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgYnkgZW5kIHVzZXJzXG4gKiB0aGlzIGNoZWNrIHdhcyBjcmVhdGVkLlxuICogSXQgc2hvdWxkIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBmb3IgcGVyZm9ybWFuY2UgcmVhc29uc1xuICovXG5mdW5jdGlvbiB0aHJvd0lmUHJveHlBdXRoSXNTZW50IChoZWFkZXJzKSB7XG4gIGNvbnN0IGV4aXN0UHJveHlBdXRoID0gaGVhZGVycyAmJiBPYmplY3Qua2V5cyhoZWFkZXJzKVxuICAgIC5maW5kKChrZXkpID0+IGtleS50b0xvd2VyQ2FzZSgpID09PSAncHJveHktYXV0aG9yaXphdGlvbicpXG4gIGlmIChleGlzdFByb3h5QXV0aCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignUHJveHktQXV0aG9yaXphdGlvbiBzaG91bGQgYmUgc2VudCBpbiBQcm94eUFnZW50IGNvbnN0cnVjdG9yJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb3h5QWdlbnRcbiIsICJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuXG5jb25zdCB7IGtSZXRyeUhhbmRsZXJEZWZhdWx0UmV0cnkgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCB7IFJlcXVlc3RSZXRyeUVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IGlzRGlzdHVyYmVkLCBwYXJzZUhlYWRlcnMsIHBhcnNlUmFuZ2VIZWFkZXIgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJldHJ5QWZ0ZXJIZWFkZXIgKHJldHJ5QWZ0ZXIpIHtcbiAgY29uc3QgY3VycmVudCA9IERhdGUubm93KClcbiAgY29uc3QgZGlmZiA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXIpLmdldFRpbWUoKSAtIGN1cnJlbnRcblxuICByZXR1cm4gZGlmZlxufVxuXG5jbGFzcyBSZXRyeUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cywgaGFuZGxlcnMpIHtcbiAgICBjb25zdCB7IHJldHJ5T3B0aW9ucywgLi4uZGlzcGF0Y2hPcHRzIH0gPSBvcHRzXG4gICAgY29uc3Qge1xuICAgICAgLy8gUmV0cnkgc2NvcGVkXG4gICAgICByZXRyeTogcmV0cnlGbixcbiAgICAgIG1heFJldHJpZXMsXG4gICAgICBtYXhUaW1lb3V0LFxuICAgICAgbWluVGltZW91dCxcbiAgICAgIHRpbWVvdXRGYWN0b3IsXG4gICAgICAvLyBSZXNwb25zZSBzY29wZWRcbiAgICAgIG1ldGhvZHMsXG4gICAgICBlcnJvckNvZGVzLFxuICAgICAgcmV0cnlBZnRlcixcbiAgICAgIHN0YXR1c0NvZGVzXG4gICAgfSA9IHJldHJ5T3B0aW9ucyA/PyB7fVxuXG4gICAgdGhpcy5kaXNwYXRjaCA9IGhhbmRsZXJzLmRpc3BhdGNoXG4gICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlcnMuaGFuZGxlclxuICAgIHRoaXMub3B0cyA9IGRpc3BhdGNoT3B0c1xuICAgIHRoaXMuYWJvcnQgPSBudWxsXG4gICAgdGhpcy5hYm9ydGVkID0gZmFsc2VcbiAgICB0aGlzLnJldHJ5T3B0cyA9IHtcbiAgICAgIHJldHJ5OiByZXRyeUZuID8/IFJldHJ5SGFuZGxlcltrUmV0cnlIYW5kbGVyRGVmYXVsdFJldHJ5XSxcbiAgICAgIHJldHJ5QWZ0ZXI6IHJldHJ5QWZ0ZXIgPz8gdHJ1ZSxcbiAgICAgIG1heFRpbWVvdXQ6IG1heFRpbWVvdXQgPz8gMzAgKiAxMDAwLCAvLyAzMHMsXG4gICAgICB0aW1lb3V0OiBtaW5UaW1lb3V0ID8/IDUwMCwgLy8gLjVzXG4gICAgICB0aW1lb3V0RmFjdG9yOiB0aW1lb3V0RmFjdG9yID8/IDIsXG4gICAgICBtYXhSZXRyaWVzOiBtYXhSZXRyaWVzID8/IDUsXG4gICAgICAvLyBXaGF0IGVycm9ycyB3ZSBzaG91bGQgcmV0cnlcbiAgICAgIG1ldGhvZHM6IG1ldGhvZHMgPz8gWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BVVCcsICdERUxFVEUnLCAnVFJBQ0UnXSxcbiAgICAgIC8vIEluZGljYXRlcyB3aGljaCBlcnJvcnMgdG8gcmV0cnlcbiAgICAgIHN0YXR1c0NvZGVzOiBzdGF0dXNDb2RlcyA/PyBbNTAwLCA1MDIsIDUwMywgNTA0LCA0MjldLFxuICAgICAgLy8gTGlzdCBvZiBlcnJvcnMgdG8gcmV0cnlcbiAgICAgIGVycm9yQ29kZXM6IGVycm9yQ29kZXMgPz8gW1xuICAgICAgICAnRUNPTk5SRVNFVCcsXG4gICAgICAgICdFQ09OTlJFRlVTRUQnLFxuICAgICAgICAnRU5PVEZPVU5EJyxcbiAgICAgICAgJ0VORVRET1dOJyxcbiAgICAgICAgJ0VORVRVTlJFQUNIJyxcbiAgICAgICAgJ0VIT1NURE9XTicsXG4gICAgICAgICdFSE9TVFVOUkVBQ0gnLFxuICAgICAgICAnRVBJUEUnXG4gICAgICBdXG4gICAgfVxuXG4gICAgdGhpcy5yZXRyeUNvdW50ID0gMFxuICAgIHRoaXMuc3RhcnQgPSAwXG4gICAgdGhpcy5lbmQgPSBudWxsXG4gICAgdGhpcy5ldGFnID0gbnVsbFxuICAgIHRoaXMucmVzdW1lID0gbnVsbFxuXG4gICAgLy8gSGFuZGxlIHBvc3NpYmxlIG9uQ29ubmVjdCBkdXBsaWNhdGlvblxuICAgIHRoaXMuaGFuZGxlci5vbkNvbm5lY3QocmVhc29uID0+IHtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IHRydWVcbiAgICAgIGlmICh0aGlzLmFib3J0KSB7XG4gICAgICAgIHRoaXMuYWJvcnQocmVhc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWFzb24gPSByZWFzb25cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgb25SZXF1ZXN0U2VudCAoKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlci5vblJlcXVlc3RTZW50KSB7XG4gICAgICB0aGlzLmhhbmRsZXIub25SZXF1ZXN0U2VudCgpXG4gICAgfVxuICB9XG5cbiAgb25VcGdyYWRlIChzdGF0dXNDb2RlLCBoZWFkZXJzLCBzb2NrZXQpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyLm9uVXBncmFkZSkge1xuICAgICAgdGhpcy5oYW5kbGVyLm9uVXBncmFkZShzdGF0dXNDb2RlLCBoZWFkZXJzLCBzb2NrZXQpXG4gICAgfVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCkge1xuICAgIGlmICh0aGlzLmFib3J0ZWQpIHtcbiAgICAgIGFib3J0KHRoaXMucmVhc29uKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICB9XG4gIH1cblxuICBvbkJvZHlTZW50IChjaHVuaykge1xuICAgIGlmICh0aGlzLmhhbmRsZXIub25Cb2R5U2VudCkgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkJvZHlTZW50KGNodW5rKVxuICB9XG5cbiAgc3RhdGljIFtrUmV0cnlIYW5kbGVyRGVmYXVsdFJldHJ5XSAoZXJyLCB7IHN0YXRlLCBvcHRzIH0sIGNiKSB7XG4gICAgY29uc3QgeyBzdGF0dXNDb2RlLCBjb2RlLCBoZWFkZXJzIH0gPSBlcnJcbiAgICBjb25zdCB7IG1ldGhvZCwgcmV0cnlPcHRpb25zIH0gPSBvcHRzXG4gICAgY29uc3Qge1xuICAgICAgbWF4UmV0cmllcyxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBtYXhUaW1lb3V0LFxuICAgICAgdGltZW91dEZhY3RvcixcbiAgICAgIHN0YXR1c0NvZGVzLFxuICAgICAgZXJyb3JDb2RlcyxcbiAgICAgIG1ldGhvZHNcbiAgICB9ID0gcmV0cnlPcHRpb25zXG4gICAgbGV0IHsgY291bnRlciwgY3VycmVudFRpbWVvdXQgfSA9IHN0YXRlXG5cbiAgICBjdXJyZW50VGltZW91dCA9XG4gICAgICBjdXJyZW50VGltZW91dCAhPSBudWxsICYmIGN1cnJlbnRUaW1lb3V0ID4gMCA/IGN1cnJlbnRUaW1lb3V0IDogdGltZW91dFxuXG4gICAgLy8gQW55IGNvZGUgdGhhdCBpcyBub3QgYSBVbmRpY2kncyBvcmlnaW5hdGVkIGFuZCBhbGxvd2VkIHRvIHJldHJ5XG4gICAgaWYgKFxuICAgICAgY29kZSAmJlxuICAgICAgY29kZSAhPT0gJ1VORF9FUlJfUkVRX1JFVFJZJyAmJlxuICAgICAgY29kZSAhPT0gJ1VORF9FUlJfU09DS0VUJyAmJlxuICAgICAgIWVycm9yQ29kZXMuaW5jbHVkZXMoY29kZSlcbiAgICApIHtcbiAgICAgIGNiKGVycilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIGEgc2V0IG9mIG1ldGhvZCBhcmUgcHJvdmlkZWQgYW5kIHRoZSBjdXJyZW50IG1ldGhvZCBpcyBub3QgaW4gdGhlIGxpc3RcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRob2RzKSAmJiAhbWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgICBjYihlcnIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBJZiBhIHNldCBvZiBzdGF0dXMgY29kZSBhcmUgcHJvdmlkZWQgYW5kIHRoZSBjdXJyZW50IHN0YXR1cyBjb2RlIGlzIG5vdCBpbiB0aGUgbGlzdFxuICAgIGlmIChcbiAgICAgIHN0YXR1c0NvZGUgIT0gbnVsbCAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzdGF0dXNDb2RlcykgJiZcbiAgICAgICFzdGF0dXNDb2Rlcy5pbmNsdWRlcyhzdGF0dXNDb2RlKVxuICAgICkge1xuICAgICAgY2IoZXJyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGUgbWF4IG51bWJlciBvZiByZXRyaWVzXG4gICAgaWYgKGNvdW50ZXIgPiBtYXhSZXRyaWVzKSB7XG4gICAgICBjYihlcnIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgcmV0cnlBZnRlckhlYWRlciA9IGhlYWRlcnMgIT0gbnVsbCAmJiBoZWFkZXJzWydyZXRyeS1hZnRlciddXG4gICAgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHtcbiAgICAgIHJldHJ5QWZ0ZXJIZWFkZXIgPSBOdW1iZXIocmV0cnlBZnRlckhlYWRlcilcbiAgICAgIHJldHJ5QWZ0ZXJIZWFkZXIgPSBpc05hTihyZXRyeUFmdGVySGVhZGVyKVxuICAgICAgICA/IGNhbGN1bGF0ZVJldHJ5QWZ0ZXJIZWFkZXIocmV0cnlBZnRlckhlYWRlcilcbiAgICAgICAgOiByZXRyeUFmdGVySGVhZGVyICogMWUzIC8vIFJldHJ5LUFmdGVyIGlzIGluIHNlY29uZHNcbiAgICB9XG5cbiAgICBjb25zdCByZXRyeVRpbWVvdXQgPVxuICAgICAgcmV0cnlBZnRlckhlYWRlciA+IDBcbiAgICAgICAgPyBNYXRoLm1pbihyZXRyeUFmdGVySGVhZGVyLCBtYXhUaW1lb3V0KVxuICAgICAgICA6IE1hdGgubWluKGN1cnJlbnRUaW1lb3V0ICogdGltZW91dEZhY3RvciAqKiBjb3VudGVyLCBtYXhUaW1lb3V0KVxuXG4gICAgc3RhdGUuY3VycmVudFRpbWVvdXQgPSByZXRyeVRpbWVvdXRcblxuICAgIHNldFRpbWVvdXQoKCkgPT4gY2IobnVsbCksIHJldHJ5VGltZW91dClcbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgcmF3SGVhZGVycywgcmVzdW1lLCBzdGF0dXNNZXNzYWdlKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuXG4gICAgdGhpcy5yZXRyeUNvdW50ICs9IDFcblxuICAgIGlmIChzdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgdGhpcy5hYm9ydChcbiAgICAgICAgbmV3IFJlcXVlc3RSZXRyeUVycm9yKCdSZXF1ZXN0IGZhaWxlZCcsIHN0YXR1c0NvZGUsIHtcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIGNvdW50OiB0aGlzLnJldHJ5Q291bnRcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIC8vIENoZWNrcG9pbnQgZm9yIHJlc3VtZSBmcm9tIHdoZXJlIHdlIGxlZnQgaXRcbiAgICBpZiAodGhpcy5yZXN1bWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXN1bWUgPSBudWxsXG5cbiAgICAgIGlmIChzdGF0dXNDb2RlICE9PSAyMDYpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFJhbmdlID0gcGFyc2VSYW5nZUhlYWRlcihoZWFkZXJzWydjb250ZW50LXJhbmdlJ10pXG4gICAgICAvLyBJZiBubyBjb250ZW50IHJhbmdlXG4gICAgICBpZiAoIWNvbnRlbnRSYW5nZSkge1xuICAgICAgICB0aGlzLmFib3J0KFxuICAgICAgICAgIG5ldyBSZXF1ZXN0UmV0cnlFcnJvcignQ29udGVudC1SYW5nZSBtaXNtYXRjaCcsIHN0YXR1c0NvZGUsIHtcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBjb3VudDogdGhpcy5yZXRyeUNvdW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgLy8gTGV0J3Mgc3RhcnQgd2l0aCBhIHdlYWsgZXRhZyBjaGVja1xuICAgICAgaWYgKHRoaXMuZXRhZyAhPSBudWxsICYmIHRoaXMuZXRhZyAhPT0gaGVhZGVycy5ldGFnKSB7XG4gICAgICAgIHRoaXMuYWJvcnQoXG4gICAgICAgICAgbmV3IFJlcXVlc3RSZXRyeUVycm9yKCdFVGFnIG1pc21hdGNoJywgc3RhdHVzQ29kZSwge1xuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgIGNvdW50OiB0aGlzLnJldHJ5Q291bnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHN0YXJ0LCBzaXplLCBlbmQgPSBzaXplIH0gPSBjb250ZW50UmFuZ2VcblxuICAgICAgYXNzZXJ0KHRoaXMuc3RhcnQgPT09IHN0YXJ0LCAnY29udGVudC1yYW5nZSBtaXNtYXRjaCcpXG4gICAgICBhc3NlcnQodGhpcy5lbmQgPT0gbnVsbCB8fCB0aGlzLmVuZCA9PT0gZW5kLCAnY29udGVudC1yYW5nZSBtaXNtYXRjaCcpXG5cbiAgICAgIHRoaXMucmVzdW1lID0gcmVzdW1lXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVuZCA9PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gMjA2KSB7XG4gICAgICAgIC8vIEZpcnN0IHRpbWUgd2UgcmVjZWl2ZSAyMDZcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBwYXJzZVJhbmdlSGVhZGVyKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSlcblxuICAgICAgICBpZiAocmFuZ2UgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25IZWFkZXJzKFxuICAgICAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIHJhd0hlYWRlcnMsXG4gICAgICAgICAgICByZXN1bWUsXG4gICAgICAgICAgICBzdGF0dXNNZXNzYWdlXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBzdGFydCwgc2l6ZSwgZW5kID0gc2l6ZSB9ID0gcmFuZ2VcblxuICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgc3RhcnQgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUoc3RhcnQpICYmIHRoaXMuc3RhcnQgIT09IHN0YXJ0LFxuICAgICAgICAgICdjb250ZW50LXJhbmdlIG1pc21hdGNoJ1xuICAgICAgICApXG4gICAgICAgIGFzc2VydChOdW1iZXIuaXNGaW5pdGUoc3RhcnQpKVxuICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgZW5kICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKGVuZCkgJiYgdGhpcy5lbmQgIT09IGVuZCxcbiAgICAgICAgICAnaW52YWxpZCBjb250ZW50LWxlbmd0aCdcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydFxuICAgICAgICB0aGlzLmVuZCA9IGVuZFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBtYWtlIG91ciBiZXN0IHRvIGNoZWNrcG9pbnQgdGhlIGJvZHkgZm9yIGZ1cnRoZXIgcmFuZ2UgaGVhZGVyc1xuICAgICAgaWYgKHRoaXMuZW5kID09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ11cbiAgICAgICAgdGhpcy5lbmQgPSBjb250ZW50TGVuZ3RoICE9IG51bGwgPyBOdW1iZXIoY29udGVudExlbmd0aCkgOiBudWxsXG4gICAgICB9XG5cbiAgICAgIGFzc2VydChOdW1iZXIuaXNGaW5pdGUodGhpcy5zdGFydCkpXG4gICAgICBhc3NlcnQoXG4gICAgICAgIHRoaXMuZW5kID09IG51bGwgfHwgTnVtYmVyLmlzRmluaXRlKHRoaXMuZW5kKSxcbiAgICAgICAgJ2ludmFsaWQgY29udGVudC1sZW5ndGgnXG4gICAgICApXG5cbiAgICAgIHRoaXMucmVzdW1lID0gcmVzdW1lXG4gICAgICB0aGlzLmV0YWcgPSBoZWFkZXJzLmV0YWcgIT0gbnVsbCA/IGhlYWRlcnMuZXRhZyA6IG51bGxcblxuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkhlYWRlcnMoXG4gICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgIHJhd0hlYWRlcnMsXG4gICAgICAgIHJlc3VtZSxcbiAgICAgICAgc3RhdHVzTWVzc2FnZVxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGVyciA9IG5ldyBSZXF1ZXN0UmV0cnlFcnJvcignUmVxdWVzdCBmYWlsZWQnLCBzdGF0dXNDb2RlLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgY291bnQ6IHRoaXMucmV0cnlDb3VudFxuICAgIH0pXG5cbiAgICB0aGlzLmFib3J0KGVycilcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgb25EYXRhIChjaHVuaykge1xuICAgIHRoaXMuc3RhcnQgKz0gY2h1bmsubGVuZ3RoXG5cbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRGF0YShjaHVuaylcbiAgfVxuXG4gIG9uQ29tcGxldGUgKHJhd1RyYWlsZXJzKSB7XG4gICAgdGhpcy5yZXRyeUNvdW50ID0gMFxuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25Db21wbGV0ZShyYXdUcmFpbGVycylcbiAgfVxuXG4gIG9uRXJyb3IgKGVycikge1xuICAgIGlmICh0aGlzLmFib3J0ZWQgfHwgaXNEaXN0dXJiZWQodGhpcy5vcHRzLmJvZHkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRXJyb3IoZXJyKVxuICAgIH1cblxuICAgIHRoaXMucmV0cnlPcHRzLnJldHJ5KFxuICAgICAgZXJyLFxuICAgICAge1xuICAgICAgICBzdGF0ZTogeyBjb3VudGVyOiB0aGlzLnJldHJ5Q291bnQrKywgY3VycmVudFRpbWVvdXQ6IHRoaXMucmV0cnlBZnRlciB9LFxuICAgICAgICBvcHRzOiB7IHJldHJ5T3B0aW9uczogdGhpcy5yZXRyeU9wdHMsIC4uLnRoaXMub3B0cyB9XG4gICAgICB9LFxuICAgICAgb25SZXRyeS5iaW5kKHRoaXMpXG4gICAgKVxuXG4gICAgZnVuY3Rpb24gb25SZXRyeSAoZXJyKSB7XG4gICAgICBpZiAoZXJyICE9IG51bGwgfHwgdGhpcy5hYm9ydGVkIHx8IGlzRGlzdHVyYmVkKHRoaXMub3B0cy5ib2R5KSkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRXJyb3IoZXJyKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdGFydCAhPT0gMCkge1xuICAgICAgICB0aGlzLm9wdHMgPSB7XG4gICAgICAgICAgLi4udGhpcy5vcHRzLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0cy5oZWFkZXJzLFxuICAgICAgICAgICAgcmFuZ2U6IGBieXRlcz0ke3RoaXMuc3RhcnR9LSR7dGhpcy5lbmQgPz8gJyd9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHRoaXMub3B0cywgdGhpcylcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmhhbmRsZXIub25FcnJvcihlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmV0cnlIYW5kbGVyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIFdlIGluY2x1ZGUgYSB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIERpc3BhdGNoZXIgQVBJLiBJbiBjYXNlIG9mIGJyZWFraW5nIGNoYW5nZXMsXG4vLyB0aGlzIHZlcnNpb24gbnVtYmVyIG11c3QgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGNvbmZsaWN0cy5cbmNvbnN0IGdsb2JhbERpc3BhdGNoZXIgPSBTeW1ib2wuZm9yKCd1bmRpY2kuZ2xvYmFsRGlzcGF0Y2hlci4xJylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSA9IHJlcXVpcmUoJy4vY29yZS9lcnJvcnMnKVxuY29uc3QgQWdlbnQgPSByZXF1aXJlKCcuL2FnZW50JylcblxuaWYgKGdldEdsb2JhbERpc3BhdGNoZXIoKSA9PT0gdW5kZWZpbmVkKSB7XG4gIHNldEdsb2JhbERpc3BhdGNoZXIobmV3IEFnZW50KCkpXG59XG5cbmZ1bmN0aW9uIHNldEdsb2JhbERpc3BhdGNoZXIgKGFnZW50KSB7XG4gIGlmICghYWdlbnQgfHwgdHlwZW9mIGFnZW50LmRpc3BhdGNoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdBcmd1bWVudCBhZ2VudCBtdXN0IGltcGxlbWVudCBBZ2VudCcpXG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGdsb2JhbERpc3BhdGNoZXIsIHtcbiAgICB2YWx1ZTogYWdlbnQsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWxEaXNwYXRjaGVyICgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXNbZ2xvYmFsRGlzcGF0Y2hlcl1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldEdsb2JhbERpc3BhdGNoZXIsXG4gIGdldEdsb2JhbERpc3BhdGNoZXJcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBEZWNvcmF0b3JIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IgKGhhbmRsZXIpIHtcbiAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyXG4gIH1cblxuICBvbkNvbm5lY3QgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uQ29ubmVjdCguLi5hcmdzKVxuICB9XG5cbiAgb25FcnJvciAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25FcnJvciguLi5hcmdzKVxuICB9XG5cbiAgb25VcGdyYWRlICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vblVwZ3JhZGUoLi4uYXJncylcbiAgfVxuXG4gIG9uSGVhZGVycyAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25IZWFkZXJzKC4uLmFyZ3MpXG4gIH1cblxuICBvbkRhdGEgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRGF0YSguLi5hcmdzKVxuICB9XG5cbiAgb25Db21wbGV0ZSAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25Db21wbGV0ZSguLi5hcmdzKVxuICB9XG5cbiAgb25Cb2R5U2VudCAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25Cb2R5U2VudCguLi5hcmdzKVxuICB9XG59XG4iLCAiLy8gaHR0cHM6Ly9naXRodWIuY29tL0V0aGFuLUFycm93b29kL3VuZGljaS1mZXRjaFxuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBrSGVhZGVyc0xpc3QsIGtDb25zdHJ1Y3QgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCB7IGtHdWFyZCB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHtcbiAgbWFrZUl0ZXJhdG9yLFxuICBpc1ZhbGlkSGVhZGVyTmFtZSxcbiAgaXNWYWxpZEhlYWRlclZhbHVlXG59ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuXG5jb25zdCBrSGVhZGVyc01hcCA9IFN5bWJvbCgnaGVhZGVycyBtYXAnKVxuY29uc3Qga0hlYWRlcnNTb3J0ZWRNYXAgPSBTeW1ib2woJ2hlYWRlcnMgbWFwIHNvcnRlZCcpXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGNvZGVcbiAqL1xuZnVuY3Rpb24gaXNIVFRQV2hpdGVTcGFjZUNoYXJDb2RlIChjb2RlKSB7XG4gIHJldHVybiBjb2RlID09PSAweDAwYSB8fCBjb2RlID09PSAweDAwZCB8fCBjb2RlID09PSAweDAwOSB8fCBjb2RlID09PSAweDAyMFxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLXZhbHVlLW5vcm1hbGl6ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBvdGVudGlhbFZhbHVlXG4gKi9cbmZ1bmN0aW9uIGhlYWRlclZhbHVlTm9ybWFsaXplIChwb3RlbnRpYWxWYWx1ZSkge1xuICAvLyAgVG8gbm9ybWFsaXplIGEgYnl0ZSBzZXF1ZW5jZSBwb3RlbnRpYWxWYWx1ZSwgcmVtb3ZlXG4gIC8vICBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgSFRUUCB3aGl0ZXNwYWNlIGJ5dGVzIGZyb21cbiAgLy8gIHBvdGVudGlhbFZhbHVlLlxuICBsZXQgaSA9IDA7IGxldCBqID0gcG90ZW50aWFsVmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKGogPiBpICYmIGlzSFRUUFdoaXRlU3BhY2VDaGFyQ29kZShwb3RlbnRpYWxWYWx1ZS5jaGFyQ29kZUF0KGogLSAxKSkpIC0talxuICB3aGlsZSAoaiA+IGkgJiYgaXNIVFRQV2hpdGVTcGFjZUNoYXJDb2RlKHBvdGVudGlhbFZhbHVlLmNoYXJDb2RlQXQoaSkpKSArK2lcblxuICByZXR1cm4gaSA9PT0gMCAmJiBqID09PSBwb3RlbnRpYWxWYWx1ZS5sZW5ndGggPyBwb3RlbnRpYWxWYWx1ZSA6IHBvdGVudGlhbFZhbHVlLnN1YnN0cmluZyhpLCBqKVxufVxuXG5mdW5jdGlvbiBmaWxsIChoZWFkZXJzLCBvYmplY3QpIHtcbiAgLy8gVG8gZmlsbCBhIEhlYWRlcnMgb2JqZWN0IGhlYWRlcnMgd2l0aCBhIGdpdmVuIG9iamVjdCBvYmplY3QsIHJ1biB0aGVzZSBzdGVwczpcblxuICAvLyAxLiBJZiBvYmplY3QgaXMgYSBzZXF1ZW5jZSwgdGhlbiBmb3IgZWFjaCBoZWFkZXIgaW4gb2JqZWN0OlxuICAvLyBOb3RlOiB3ZWJpZGwgY29udmVyc2lvbiB0byBhcnJheSBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7ICsraSkge1xuICAgICAgY29uc3QgaGVhZGVyID0gb2JqZWN0W2ldXG4gICAgICAvLyAxLiBJZiBoZWFkZXIgZG9lcyBub3QgY29udGFpbiBleGFjdGx5IHR3byBpdGVtcywgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICBoZWFkZXI6ICdIZWFkZXJzIGNvbnN0cnVjdG9yJyxcbiAgICAgICAgICBtZXNzYWdlOiBgZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCAke2hlYWRlci5sZW5ndGh9LmBcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gMi4gQXBwZW5kIChoZWFkZXJcdTIwMTlzIGZpcnN0IGl0ZW0sIGhlYWRlclx1MjAxOXMgc2Vjb25kIGl0ZW0pIHRvIGhlYWRlcnMuXG4gICAgICBhcHBlbmRIZWFkZXIoaGVhZGVycywgaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkge1xuICAgIC8vIE5vdGU6IG51bGwgc2hvdWxkIHRocm93XG5cbiAgICAvLyAyLiBPdGhlcndpc2UsIG9iamVjdCBpcyBhIHJlY29yZCwgdGhlbiBmb3IgZWFjaCBrZXkgXHUyMTkyIHZhbHVlIGluIG9iamVjdCxcbiAgICAvLyAgICBhcHBlbmQgKGtleSwgdmFsdWUpIHRvIGhlYWRlcnNcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgYXBwZW5kSGVhZGVyKGhlYWRlcnMsIGtleXNbaV0sIG9iamVjdFtrZXlzW2ldXSlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgd2ViaWRsLmVycm9ycy5jb252ZXJzaW9uRmFpbGVkKHtcbiAgICAgIHByZWZpeDogJ0hlYWRlcnMgY29uc3RydWN0b3InLFxuICAgICAgYXJndW1lbnQ6ICdBcmd1bWVudCAxJyxcbiAgICAgIHR5cGVzOiBbJ3NlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PicsICdyZWNvcmQ8Qnl0ZVN0cmluZywgQnl0ZVN0cmluZz4nXVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWhlYWRlcnMtYXBwZW5kXG4gKi9cbmZ1bmN0aW9uIGFwcGVuZEhlYWRlciAoaGVhZGVycywgbmFtZSwgdmFsdWUpIHtcbiAgLy8gMS4gTm9ybWFsaXplIHZhbHVlLlxuICB2YWx1ZSA9IGhlYWRlclZhbHVlTm9ybWFsaXplKHZhbHVlKVxuXG4gIC8vIDIuIElmIG5hbWUgaXMgbm90IGEgaGVhZGVyIG5hbWUgb3IgdmFsdWUgaXMgbm90IGFcbiAgLy8gICAgaGVhZGVyIHZhbHVlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lKG5hbWUpKSB7XG4gICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgcHJlZml4OiAnSGVhZGVycy5hcHBlbmQnLFxuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICB0eXBlOiAnaGVhZGVyIG5hbWUnXG4gICAgfSlcbiAgfSBlbHNlIGlmICghaXNWYWxpZEhlYWRlclZhbHVlKHZhbHVlKSkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50KHtcbiAgICAgIHByZWZpeDogJ0hlYWRlcnMuYXBwZW5kJyxcbiAgICAgIHZhbHVlLFxuICAgICAgdHlwZTogJ2hlYWRlciB2YWx1ZSdcbiAgICB9KVxuICB9XG5cbiAgLy8gMy4gSWYgaGVhZGVyc1x1MjAxOXMgZ3VhcmQgaXMgXCJpbW11dGFibGVcIiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgLy8gNC4gT3RoZXJ3aXNlLCBpZiBoZWFkZXJzXHUyMDE5cyBndWFyZCBpcyBcInJlcXVlc3RcIiBhbmQgbmFtZSBpcyBhXG4gIC8vICAgIGZvcmJpZGRlbiBoZWFkZXIgbmFtZSwgcmV0dXJuLlxuICAvLyBOb3RlOiB1bmRpY2kgZG9lcyBub3QgaW1wbGVtZW50IGZvcmJpZGRlbiBoZWFkZXIgbmFtZXNcbiAgaWYgKGhlYWRlcnNba0d1YXJkXSA9PT0gJ2ltbXV0YWJsZScpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbW11dGFibGUnKVxuICB9IGVsc2UgaWYgKGhlYWRlcnNba0d1YXJkXSA9PT0gJ3JlcXVlc3Qtbm8tY29ycycpIHtcbiAgICAvLyA1LiBPdGhlcndpc2UsIGlmIGhlYWRlcnNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdC1uby1jb3JzXCI6XG4gICAgLy8gVE9ET1xuICB9XG5cbiAgLy8gNi4gT3RoZXJ3aXNlLCBpZiBoZWFkZXJzXHUyMDE5cyBndWFyZCBpcyBcInJlc3BvbnNlXCIgYW5kIG5hbWUgaXMgYVxuICAvLyAgICBmb3JiaWRkZW4gcmVzcG9uc2UtaGVhZGVyIG5hbWUsIHJldHVybi5cblxuICAvLyA3LiBBcHBlbmQgKG5hbWUsIHZhbHVlKSB0byBoZWFkZXJzXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgcmV0dXJuIGhlYWRlcnNba0hlYWRlcnNMaXN0XS5hcHBlbmQobmFtZSwgdmFsdWUpXG5cbiAgLy8gOC4gSWYgaGVhZGVyc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0LW5vLWNvcnNcIiwgdGhlbiByZW1vdmVcbiAgLy8gICAgcHJpdmlsZWdlZCBuby1DT1JTIHJlcXVlc3QgaGVhZGVycyBmcm9tIGhlYWRlcnNcbn1cblxuY2xhc3MgSGVhZGVyc0xpc3Qge1xuICAvKiogQHR5cGUge1tzdHJpbmcsIHN0cmluZ11bXXxudWxsfSAqL1xuICBjb29raWVzID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yIChpbml0KSB7XG4gICAgaWYgKGluaXQgaW5zdGFuY2VvZiBIZWFkZXJzTGlzdCkge1xuICAgICAgdGhpc1trSGVhZGVyc01hcF0gPSBuZXcgTWFwKGluaXRba0hlYWRlcnNNYXBdKVxuICAgICAgdGhpc1trSGVhZGVyc1NvcnRlZE1hcF0gPSBpbml0W2tIZWFkZXJzU29ydGVkTWFwXVxuICAgICAgdGhpcy5jb29raWVzID0gaW5pdC5jb29raWVzID09PSBudWxsID8gbnVsbCA6IFsuLi5pbml0LmNvb2tpZXNdXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0hlYWRlcnNNYXBdID0gbmV3IE1hcChpbml0KVxuICAgICAgdGhpc1trSGVhZGVyc1NvcnRlZE1hcF0gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2hlYWRlci1saXN0LWNvbnRhaW5zXG4gIGNvbnRhaW5zIChuYW1lKSB7XG4gICAgLy8gQSBoZWFkZXIgbGlzdCBsaXN0IGNvbnRhaW5zIGEgaGVhZGVyIG5hbWUgbmFtZSBpZiBsaXN0XG4gICAgLy8gY29udGFpbnMgYSBoZWFkZXIgd2hvc2UgbmFtZSBpcyBhIGJ5dGUtY2FzZS1pbnNlbnNpdGl2ZVxuICAgIC8vIG1hdGNoIGZvciBuYW1lLlxuICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKClcblxuICAgIHJldHVybiB0aGlzW2tIZWFkZXJzTWFwXS5oYXMobmFtZSlcbiAgfVxuXG4gIGNsZWFyICgpIHtcbiAgICB0aGlzW2tIZWFkZXJzTWFwXS5jbGVhcigpXG4gICAgdGhpc1trSGVhZGVyc1NvcnRlZE1hcF0gPSBudWxsXG4gICAgdGhpcy5jb29raWVzID0gbnVsbFxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLWxpc3QtYXBwZW5kXG4gIGFwcGVuZCAobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzW2tIZWFkZXJzU29ydGVkTWFwXSA9IG51bGxcblxuICAgIC8vIDEuIElmIGxpc3QgY29udGFpbnMgbmFtZSwgdGhlbiBzZXQgbmFtZSB0byB0aGUgZmlyc3Qgc3VjaFxuICAgIC8vICAgIGhlYWRlclx1MjAxOXMgbmFtZS5cbiAgICBjb25zdCBsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgY29uc3QgZXhpc3RzID0gdGhpc1trSGVhZGVyc01hcF0uZ2V0KGxvd2VyY2FzZU5hbWUpXG5cbiAgICAvLyAyLiBBcHBlbmQgKG5hbWUsIHZhbHVlKSB0byBsaXN0LlxuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIGNvbnN0IGRlbGltaXRlciA9IGxvd2VyY2FzZU5hbWUgPT09ICdjb29raWUnID8gJzsgJyA6ICcsICdcbiAgICAgIHRoaXNba0hlYWRlcnNNYXBdLnNldChsb3dlcmNhc2VOYW1lLCB7XG4gICAgICAgIG5hbWU6IGV4aXN0cy5uYW1lLFxuICAgICAgICB2YWx1ZTogYCR7ZXhpc3RzLnZhbHVlfSR7ZGVsaW1pdGVyfSR7dmFsdWV9YFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1trSGVhZGVyc01hcF0uc2V0KGxvd2VyY2FzZU5hbWUsIHsgbmFtZSwgdmFsdWUgfSlcbiAgICB9XG5cbiAgICBpZiAobG93ZXJjYXNlTmFtZSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICB0aGlzLmNvb2tpZXMgPz89IFtdXG4gICAgICB0aGlzLmNvb2tpZXMucHVzaCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1oZWFkZXItbGlzdC1zZXRcbiAgc2V0IChuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdID0gbnVsbFxuICAgIGNvbnN0IGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKClcblxuICAgIGlmIChsb3dlcmNhc2VOYW1lID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIHRoaXMuY29va2llcyA9IFt2YWx1ZV1cbiAgICB9XG5cbiAgICAvLyAxLiBJZiBsaXN0IGNvbnRhaW5zIG5hbWUsIHRoZW4gc2V0IHRoZSB2YWx1ZSBvZlxuICAgIC8vICAgIHRoZSBmaXJzdCBzdWNoIGhlYWRlciB0byB2YWx1ZSBhbmQgcmVtb3ZlIHRoZVxuICAgIC8vICAgIG90aGVycy5cbiAgICAvLyAyLiBPdGhlcndpc2UsIGFwcGVuZCBoZWFkZXIgKG5hbWUsIHZhbHVlKSB0byBsaXN0LlxuICAgIHRoaXNba0hlYWRlcnNNYXBdLnNldChsb3dlcmNhc2VOYW1lLCB7IG5hbWUsIHZhbHVlIH0pXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1oZWFkZXItbGlzdC1kZWxldGVcbiAgZGVsZXRlIChuYW1lKSB7XG4gICAgdGhpc1trSGVhZGVyc1NvcnRlZE1hcF0gPSBudWxsXG5cbiAgICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgICBpZiAobmFtZSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICB0aGlzLmNvb2tpZXMgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpc1trSGVhZGVyc01hcF0uZGVsZXRlKG5hbWUpXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1oZWFkZXItbGlzdC1nZXRcbiAgZ2V0IChuYW1lKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzW2tIZWFkZXJzTWFwXS5nZXQobmFtZS50b0xvd2VyQ2FzZSgpKVxuXG4gICAgLy8gMS4gSWYgbGlzdCBkb2VzIG5vdCBjb250YWluIG5hbWUsIHRoZW4gcmV0dXJuIG51bGwuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSB2YWx1ZXMgb2YgYWxsIGhlYWRlcnMgaW4gbGlzdCB3aG9zZSBuYW1lXG4gICAgLy8gICAgaXMgYSBieXRlLWNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIG5hbWUsXG4gICAgLy8gICAgc2VwYXJhdGVkIGZyb20gZWFjaCBvdGhlciBieSAweDJDIDB4MjAsIGluIG9yZGVyLlxuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlLnZhbHVlXG4gIH1cblxuICAqIFtTeW1ib2wuaXRlcmF0b3JdICgpIHtcbiAgICAvLyB1c2UgdGhlIGxvd2VyY2FzZWQgbmFtZVxuICAgIGZvciAoY29uc3QgW25hbWUsIHsgdmFsdWUgfV0gb2YgdGhpc1trSGVhZGVyc01hcF0pIHtcbiAgICAgIHlpZWxkIFtuYW1lLCB2YWx1ZV1cbiAgICB9XG4gIH1cblxuICBnZXQgZW50cmllcyAoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHt9XG5cbiAgICBpZiAodGhpc1trSGVhZGVyc01hcF0uc2l6ZSkge1xuICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgdGhpc1trSGVhZGVyc01hcF0udmFsdWVzKCkpIHtcbiAgICAgICAgaGVhZGVyc1tuYW1lXSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnNcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaGVhZGVycy1jbGFzc1xuY2xhc3MgSGVhZGVycyB7XG4gIGNvbnN0cnVjdG9yIChpbml0ID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGluaXQgPT09IGtDb25zdHJ1Y3QpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzW2tIZWFkZXJzTGlzdF0gPSBuZXcgSGVhZGVyc0xpc3QoKVxuXG4gICAgLy8gVGhlIG5ldyBIZWFkZXJzKGluaXQpIGNvbnN0cnVjdG9yIHN0ZXBzIGFyZTpcblxuICAgIC8vIDEuIFNldCB0aGlzXHUyMDE5cyBndWFyZCB0byBcIm5vbmVcIi5cbiAgICB0aGlzW2tHdWFyZF0gPSAnbm9uZSdcblxuICAgIC8vIDIuIElmIGluaXQgaXMgZ2l2ZW4sIHRoZW4gZmlsbCB0aGlzIHdpdGggaW5pdC5cbiAgICBpZiAoaW5pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbml0ID0gd2ViaWRsLmNvbnZlcnRlcnMuSGVhZGVyc0luaXQoaW5pdClcbiAgICAgIGZpbGwodGhpcywgaW5pdClcbiAgICB9XG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLWhlYWRlcnMtYXBwZW5kXG4gIGFwcGVuZCAobmFtZSwgdmFsdWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ0hlYWRlcnMuYXBwZW5kJyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcobmFtZSlcbiAgICB2YWx1ZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcodmFsdWUpXG5cbiAgICByZXR1cm4gYXBwZW5kSGVhZGVyKHRoaXMsIG5hbWUsIHZhbHVlKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkZXJzLWRlbGV0ZVxuICBkZWxldGUgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0hlYWRlcnMuZGVsZXRlJyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcobmFtZSlcblxuICAgIC8vIDEuIElmIG5hbWUgaXMgbm90IGEgaGVhZGVyIG5hbWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgICBwcmVmaXg6ICdIZWFkZXJzLmRlbGV0ZScsXG4gICAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgICB0eXBlOiAnaGVhZGVyIG5hbWUnXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIElmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwiaW1tdXRhYmxlXCIsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgLy8gMy4gT3RoZXJ3aXNlLCBpZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcInJlcXVlc3RcIiBhbmQgbmFtZSBpcyBhXG4gICAgLy8gICAgZm9yYmlkZGVuIGhlYWRlciBuYW1lLCByZXR1cm4uXG4gICAgLy8gNC4gT3RoZXJ3aXNlLCBpZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcInJlcXVlc3Qtbm8tY29yc1wiLCBuYW1lXG4gICAgLy8gICAgaXMgbm90IGEgbm8tQ09SUy1zYWZlbGlzdGVkIHJlcXVlc3QtaGVhZGVyIG5hbWUsIGFuZFxuICAgIC8vICAgIG5hbWUgaXMgbm90IGEgcHJpdmlsZWdlZCBuby1DT1JTIHJlcXVlc3QtaGVhZGVyIG5hbWUsXG4gICAgLy8gICAgcmV0dXJuLlxuICAgIC8vIDUuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXNwb25zZVwiIGFuZCBuYW1lIGlzXG4gICAgLy8gICAgYSBmb3JiaWRkZW4gcmVzcG9uc2UtaGVhZGVyIG5hbWUsIHJldHVybi5cbiAgICAvLyBOb3RlOiB1bmRpY2kgZG9lcyBub3QgaW1wbGVtZW50IGZvcmJpZGRlbiBoZWFkZXIgbmFtZXNcbiAgICBpZiAodGhpc1trR3VhcmRdID09PSAnaW1tdXRhYmxlJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW1tdXRhYmxlJylcbiAgICB9IGVsc2UgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ3JlcXVlc3Qtbm8tY29ycycpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICAvLyA2LiBJZiB0aGlzXHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIG5hbWUsIHRoZW5cbiAgICAvLyAgICByZXR1cm4uXG4gICAgaWYgKCF0aGlzW2tIZWFkZXJzTGlzdF0uY29udGFpbnMobmFtZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIDcuIERlbGV0ZSBuYW1lIGZyb20gdGhpc1x1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgLy8gOC4gSWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0LW5vLWNvcnNcIiwgdGhlbiByZW1vdmVcbiAgICAvLyAgICBwcml2aWxlZ2VkIG5vLUNPUlMgcmVxdWVzdCBoZWFkZXJzIGZyb20gdGhpcy5cbiAgICB0aGlzW2tIZWFkZXJzTGlzdF0uZGVsZXRlKG5hbWUpXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLWhlYWRlcnMtZ2V0XG4gIGdldCAobmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnSGVhZGVycy5nZXQnIH0pXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZyhuYW1lKVxuXG4gICAgLy8gMS4gSWYgbmFtZSBpcyBub3QgYSBoZWFkZXIgbmFtZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lKG5hbWUpKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmludmFsaWRBcmd1bWVudCh7XG4gICAgICAgIHByZWZpeDogJ0hlYWRlcnMuZ2V0JyxcbiAgICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICAgIHR5cGU6ICdoZWFkZXIgbmFtZSdcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSByZXN1bHQgb2YgZ2V0dGluZyBuYW1lIGZyb20gdGhpc1x1MjAxOXMgaGVhZGVyXG4gICAgLy8gICAgbGlzdC5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc0xpc3RdLmdldChuYW1lKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkZXJzLWhhc1xuICBoYXMgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0hlYWRlcnMuaGFzJyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcobmFtZSlcblxuICAgIC8vIDEuIElmIG5hbWUgaXMgbm90IGEgaGVhZGVyIG5hbWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgICBwcmVmaXg6ICdIZWFkZXJzLmhhcycsXG4gICAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgICB0eXBlOiAnaGVhZGVyIG5hbWUnXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIFJldHVybiB0cnVlIGlmIHRoaXNcdTIwMTlzIGhlYWRlciBsaXN0IGNvbnRhaW5zIG5hbWU7XG4gICAgLy8gICAgb3RoZXJ3aXNlIGZhbHNlLlxuICAgIHJldHVybiB0aGlzW2tIZWFkZXJzTGlzdF0uY29udGFpbnMobmFtZSlcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20taGVhZGVycy1zZXRcbiAgc2V0IChuYW1lLCB2YWx1ZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDIsIHsgaGVhZGVyOiAnSGVhZGVycy5zZXQnIH0pXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZyhuYW1lKVxuICAgIHZhbHVlID0gd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZyh2YWx1ZSlcblxuICAgIC8vIDEuIE5vcm1hbGl6ZSB2YWx1ZS5cbiAgICB2YWx1ZSA9IGhlYWRlclZhbHVlTm9ybWFsaXplKHZhbHVlKVxuXG4gICAgLy8gMi4gSWYgbmFtZSBpcyBub3QgYSBoZWFkZXIgbmFtZSBvciB2YWx1ZSBpcyBub3QgYVxuICAgIC8vICAgIGhlYWRlciB2YWx1ZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lKG5hbWUpKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmludmFsaWRBcmd1bWVudCh7XG4gICAgICAgIHByZWZpeDogJ0hlYWRlcnMuc2V0JyxcbiAgICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICAgIHR5cGU6ICdoZWFkZXIgbmFtZSdcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICghaXNWYWxpZEhlYWRlclZhbHVlKHZhbHVlKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgICBwcmVmaXg6ICdIZWFkZXJzLnNldCcsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0eXBlOiAnaGVhZGVyIHZhbHVlJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAzLiBJZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcImltbXV0YWJsZVwiLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIC8vIDQuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0XCIgYW5kIG5hbWUgaXMgYVxuICAgIC8vICAgIGZvcmJpZGRlbiBoZWFkZXIgbmFtZSwgcmV0dXJuLlxuICAgIC8vIDUuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0LW5vLWNvcnNcIiBhbmRcbiAgICAvLyAgICBuYW1lL3ZhbHVlIGlzIG5vdCBhIG5vLUNPUlMtc2FmZWxpc3RlZCByZXF1ZXN0LWhlYWRlcixcbiAgICAvLyAgICByZXR1cm4uXG4gICAgLy8gNi4gT3RoZXJ3aXNlLCBpZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcInJlc3BvbnNlXCIgYW5kIG5hbWUgaXMgYVxuICAgIC8vICAgIGZvcmJpZGRlbiByZXNwb25zZS1oZWFkZXIgbmFtZSwgcmV0dXJuLlxuICAgIC8vIE5vdGU6IHVuZGljaSBkb2VzIG5vdCBpbXBsZW1lbnQgZm9yYmlkZGVuIGhlYWRlciBuYW1lc1xuICAgIGlmICh0aGlzW2tHdWFyZF0gPT09ICdpbW11dGFibGUnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbW11dGFibGUnKVxuICAgIH0gZWxzZSBpZiAodGhpc1trR3VhcmRdID09PSAncmVxdWVzdC1uby1jb3JzJykge1xuICAgICAgLy8gVE9ET1xuICAgIH1cblxuICAgIC8vIDcuIFNldCAobmFtZSwgdmFsdWUpIGluIHRoaXNcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIC8vIDguIElmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdC1uby1jb3JzXCIsIHRoZW4gcmVtb3ZlXG4gICAgLy8gICAgcHJpdmlsZWdlZCBuby1DT1JTIHJlcXVlc3QgaGVhZGVycyBmcm9tIHRoaXNcbiAgICB0aGlzW2tIZWFkZXJzTGlzdF0uc2V0KG5hbWUsIHZhbHVlKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkZXJzLWdldHNldGNvb2tpZVxuICBnZXRTZXRDb29raWUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICAvLyAxLiBJZiB0aGlzXHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBTZXQtQ29va2llYCwgdGhlbiByZXR1cm4gXHUwMEFCIFx1MDBCQi5cbiAgICAvLyAyLiBSZXR1cm4gdGhlIHZhbHVlcyBvZiBhbGwgaGVhZGVycyBpbiB0aGlzXHUyMDE5cyBoZWFkZXIgbGlzdCB3aG9zZSBuYW1lIGlzXG4gICAgLy8gICAgYSBieXRlLWNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIGBTZXQtQ29va2llYCwgaW4gb3JkZXIuXG5cbiAgICBjb25zdCBsaXN0ID0gdGhpc1trSGVhZGVyc0xpc3RdLmNvb2tpZXNcblxuICAgIGlmIChsaXN0KSB7XG4gICAgICByZXR1cm4gWy4uLmxpc3RdXG4gICAgfVxuXG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1oZWFkZXItbGlzdC1zb3J0LWFuZC1jb21iaW5lXG4gIGdldCBba0hlYWRlcnNTb3J0ZWRNYXBdICgpIHtcbiAgICBpZiAodGhpc1trSGVhZGVyc0xpc3RdW2tIZWFkZXJzU29ydGVkTWFwXSkge1xuICAgICAgcmV0dXJuIHRoaXNba0hlYWRlcnNMaXN0XVtrSGVhZGVyc1NvcnRlZE1hcF1cbiAgICB9XG5cbiAgICAvLyAxLiBMZXQgaGVhZGVycyBiZSBhbiBlbXB0eSBsaXN0IG9mIGhlYWRlcnMgd2l0aCB0aGUga2V5IGJlaW5nIHRoZSBuYW1lXG4gICAgLy8gICAgYW5kIHZhbHVlIHRoZSB2YWx1ZS5cbiAgICBjb25zdCBoZWFkZXJzID0gW11cblxuICAgIC8vIDIuIExldCBuYW1lcyBiZSB0aGUgcmVzdWx0IG9mIGNvbnZlcnQgaGVhZGVyIG5hbWVzIHRvIGEgc29ydGVkLWxvd2VyY2FzZVxuICAgIC8vICAgIHNldCB3aXRoIGFsbCB0aGUgbmFtZXMgb2YgdGhlIGhlYWRlcnMgaW4gbGlzdC5cbiAgICBjb25zdCBuYW1lcyA9IFsuLi50aGlzW2tIZWFkZXJzTGlzdF1dLnNvcnQoKGEsIGIpID0+IGFbMF0gPCBiWzBdID8gLTEgOiAxKVxuICAgIGNvbnN0IGNvb2tpZXMgPSB0aGlzW2tIZWFkZXJzTGlzdF0uY29va2llc1xuXG4gICAgLy8gMy4gRm9yIGVhY2ggbmFtZSBvZiBuYW1lczpcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gbmFtZXNbaV1cbiAgICAgIC8vIDEuIElmIG5hbWUgaXMgYHNldC1jb29raWVgLCB0aGVuOlxuICAgICAgaWYgKG5hbWUgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICAvLyAxLiBMZXQgdmFsdWVzIGJlIGEgbGlzdCBvZiBhbGwgdmFsdWVzIG9mIGhlYWRlcnMgaW4gbGlzdCB3aG9zZSBuYW1lXG4gICAgICAgIC8vICAgIGlzIGEgYnl0ZS1jYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBuYW1lLCBpbiBvcmRlci5cblxuICAgICAgICAvLyAyLiBGb3IgZWFjaCB2YWx1ZSBvZiB2YWx1ZXM6XG4gICAgICAgIC8vIDEuIEFwcGVuZCAobmFtZSwgdmFsdWUpIHRvIGhlYWRlcnMuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29va2llcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgIGhlYWRlcnMucHVzaChbbmFtZSwgY29va2llc1tqXV0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIDIuIE90aGVyd2lzZTpcblxuICAgICAgICAvLyAxLiBMZXQgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBnZXR0aW5nIG5hbWUgZnJvbSBsaXN0LlxuXG4gICAgICAgIC8vIDIuIEFzc2VydDogdmFsdWUgaXMgbm9uLW51bGwuXG4gICAgICAgIGFzc2VydCh2YWx1ZSAhPT0gbnVsbClcblxuICAgICAgICAvLyAzLiBBcHBlbmQgKG5hbWUsIHZhbHVlKSB0byBoZWFkZXJzLlxuICAgICAgICBoZWFkZXJzLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzW2tIZWFkZXJzTGlzdF1ba0hlYWRlcnNTb3J0ZWRNYXBdID0gaGVhZGVyc1xuXG4gICAgLy8gNC4gUmV0dXJuIGhlYWRlcnMuXG4gICAgcmV0dXJuIGhlYWRlcnNcbiAgfVxuXG4gIGtleXMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICBpZiAodGhpc1trR3VhcmRdID09PSAnaW1tdXRhYmxlJykge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tIZWFkZXJzU29ydGVkTWFwXVxuICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigoKSA9PiB2YWx1ZSwgJ0hlYWRlcnMnLFxuICAgICAgICAna2V5JylcbiAgICB9XG5cbiAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKFxuICAgICAgKCkgPT4gWy4uLnRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdLnZhbHVlcygpXSxcbiAgICAgICdIZWFkZXJzJyxcbiAgICAgICdrZXknXG4gICAgKVxuICB9XG5cbiAgdmFsdWVzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ2ltbXV0YWJsZScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1trSGVhZGVyc1NvcnRlZE1hcF1cbiAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoKCkgPT4gdmFsdWUsICdIZWFkZXJzJyxcbiAgICAgICAgJ3ZhbHVlJylcbiAgICB9XG5cbiAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKFxuICAgICAgKCkgPT4gWy4uLnRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdLnZhbHVlcygpXSxcbiAgICAgICdIZWFkZXJzJyxcbiAgICAgICd2YWx1ZSdcbiAgICApXG4gIH1cblxuICBlbnRyaWVzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ2ltbXV0YWJsZScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1trSGVhZGVyc1NvcnRlZE1hcF1cbiAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoKCkgPT4gdmFsdWUsICdIZWFkZXJzJyxcbiAgICAgICAgJ2tleSt2YWx1ZScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VJdGVyYXRvcihcbiAgICAgICgpID0+IFsuLi50aGlzW2tIZWFkZXJzU29ydGVkTWFwXS52YWx1ZXMoKV0sXG4gICAgICAnSGVhZGVycycsXG4gICAgICAna2V5K3ZhbHVlJ1xuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZywgc2VsZjogSGVhZGVycykgPT4gdm9pZH0gY2FsbGJhY2tGblxuICAgKiBAcGFyYW0ge3Vua25vd259IHRoaXNBcmdcbiAgICovXG4gIGZvckVhY2ggKGNhbGxiYWNrRm4sIHRoaXNBcmcgPSBnbG9iYWxUaGlzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdIZWFkZXJzLmZvckVhY2gnIH0pXG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrRm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ2ZvckVhY2gnIG9uICdIZWFkZXJzJzogcGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgJ0Z1bmN0aW9uJy5cIlxuICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMpIHtcbiAgICAgIGNhbGxiYWNrRm4uYXBwbHkodGhpc0FyZywgW3ZhbHVlLCBrZXksIHRoaXNdKVxuICAgIH1cbiAgfVxuXG4gIFtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIHJldHVybiB0aGlzW2tIZWFkZXJzTGlzdF1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhIZWFkZXJzLnByb3RvdHlwZSwge1xuICBhcHBlbmQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGRlbGV0ZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZ2V0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBoYXM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHNldDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZ2V0U2V0Q29va2llOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBrZXlzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICB2YWx1ZXM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGVudHJpZXM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGZvckVhY2g6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiB7IGVudW1lcmFibGU6IGZhbHNlIH0sXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdIZWFkZXJzJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgW3V0aWwuaW5zcGVjdC5jdXN0b21dOiB7XG4gICAgZW51bWVyYWJsZTogZmFsc2VcbiAgfVxufSlcblxud2ViaWRsLmNvbnZlcnRlcnMuSGVhZGVyc0luaXQgPSBmdW5jdGlvbiAoVikge1xuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSA9PT0gJ09iamVjdCcpIHtcbiAgICBpZiAoVltTeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiddKFYpXG4gICAgfVxuXG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzWydyZWNvcmQ8Qnl0ZVN0cmluZywgQnl0ZVN0cmluZz4nXShWKVxuICB9XG5cbiAgdGhyb3cgd2ViaWRsLmVycm9ycy5jb252ZXJzaW9uRmFpbGVkKHtcbiAgICBwcmVmaXg6ICdIZWFkZXJzIGNvbnN0cnVjdG9yJyxcbiAgICBhcmd1bWVudDogJ0FyZ3VtZW50IDEnLFxuICAgIHR5cGVzOiBbJ3NlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PicsICdyZWNvcmQ8Qnl0ZVN0cmluZywgQnl0ZVN0cmluZz4nXVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZmlsbCxcbiAgSGVhZGVycyxcbiAgSGVhZGVyc0xpc3Rcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBIZWFkZXJzLCBIZWFkZXJzTGlzdCwgZmlsbCB9ID0gcmVxdWlyZSgnLi9oZWFkZXJzJylcbmNvbnN0IHsgZXh0cmFjdEJvZHksIGNsb25lQm9keSwgbWl4aW5Cb2R5IH0gPSByZXF1aXJlKCcuL2JvZHknKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGtFbnVtZXJhYmxlUHJvcGVydHkgfSA9IHV0aWxcbmNvbnN0IHtcbiAgaXNWYWxpZFJlYXNvblBocmFzZSxcbiAgaXNDYW5jZWxsZWQsXG4gIGlzQWJvcnRlZCxcbiAgaXNCbG9iTGlrZSxcbiAgc2VyaWFsaXplSmF2YXNjcmlwdFZhbHVlVG9KU09OU3RyaW5nLFxuICBpc0Vycm9yTGlrZSxcbiAgaXNvbW9ycGhpY0VuY29kZVxufSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7XG4gIHJlZGlyZWN0U3RhdHVzU2V0LFxuICBudWxsQm9keVN0YXR1cyxcbiAgRE9NRXhjZXB0aW9uXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBrU3RhdGUsIGtIZWFkZXJzLCBrR3VhcmQsIGtSZWFsbSB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCB7IEZvcm1EYXRhIH0gPSByZXF1aXJlKCcuL2Zvcm1kYXRhJylcbmNvbnN0IHsgZ2V0R2xvYmFsT3JpZ2luIH0gPSByZXF1aXJlKCcuL2dsb2JhbCcpXG5jb25zdCB7IFVSTFNlcmlhbGl6ZXIgfSA9IHJlcXVpcmUoJy4vZGF0YVVSTCcpXG5jb25zdCB7IGtIZWFkZXJzTGlzdCwga0NvbnN0cnVjdCB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IHR5cGVzIH0gPSByZXF1aXJlKCd1dGlsJylcblxuY29uc3QgUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtIHx8IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbVxuY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoJ3V0Zi04JylcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3Jlc3BvbnNlLWNsYXNzXG5jbGFzcyBSZXNwb25zZSB7XG4gIC8vIENyZWF0ZXMgbmV0d29yayBlcnJvciBSZXNwb25zZS5cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICAvLyBUT0RPXG4gICAgY29uc3QgcmVsZXZhbnRSZWFsbSA9IHsgc2V0dGluZ3NPYmplY3Q6IHt9IH1cblxuICAgIC8vIFRoZSBzdGF0aWMgZXJyb3IoKSBtZXRob2Qgc3RlcHMgYXJlIHRvIHJldHVybiB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGFcbiAgICAvLyBSZXNwb25zZSBvYmplY3QsIGdpdmVuIGEgbmV3IG5ldHdvcmsgZXJyb3IsIFwiaW1tdXRhYmxlXCIsIGFuZCB0aGlzXHUyMDE5c1xuICAgIC8vIHJlbGV2YW50IFJlYWxtLlxuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKClcbiAgICByZXNwb25zZU9iamVjdFtrU3RhdGVdID0gbWFrZU5ldHdvcmtFcnJvcigpXG4gICAgcmVzcG9uc2VPYmplY3Rba1JlYWxtXSA9IHJlbGV2YW50UmVhbG1cbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IHJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0uaGVhZGVyc0xpc3RcbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9ICdpbW11dGFibGUnXG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tSZWFsbV0gPSByZWxldmFudFJlYWxtXG4gICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0XG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLXJlc3BvbnNlLWpzb25cbiAgc3RhdGljIGpzb24gKGRhdGEsIGluaXQgPSB7fSkge1xuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdSZXNwb25zZS5qc29uJyB9KVxuXG4gICAgaWYgKGluaXQgIT09IG51bGwpIHtcbiAgICAgIGluaXQgPSB3ZWJpZGwuY29udmVydGVycy5SZXNwb25zZUluaXQoaW5pdClcbiAgICB9XG5cbiAgICAvLyAxLiBMZXQgYnl0ZXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHNlcmlhbGl6ZSBhIEphdmFTY3JpcHQgdmFsdWUgdG8gSlNPTiBieXRlcyBvbiBkYXRhLlxuICAgIGNvbnN0IGJ5dGVzID0gdGV4dEVuY29kZXIuZW5jb2RlKFxuICAgICAgc2VyaWFsaXplSmF2YXNjcmlwdFZhbHVlVG9KU09OU3RyaW5nKGRhdGEpXG4gICAgKVxuXG4gICAgLy8gMi4gTGV0IGJvZHkgYmUgdGhlIHJlc3VsdCBvZiBleHRyYWN0aW5nIGJ5dGVzLlxuICAgIGNvbnN0IGJvZHkgPSBleHRyYWN0Qm9keShieXRlcylcblxuICAgIC8vIDMuIExldCByZXNwb25zZU9iamVjdCBiZSB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgUmVzcG9uc2Ugb2JqZWN0LCBnaXZlbiBhIG5ldyByZXNwb25zZSxcbiAgICAvLyAgICBcInJlc3BvbnNlXCIsIGFuZCB0aGlzXHUyMDE5cyByZWxldmFudCBSZWFsbS5cbiAgICBjb25zdCByZWxldmFudFJlYWxtID0geyBzZXR0aW5nc09iamVjdDoge30gfVxuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKClcbiAgICByZXNwb25zZU9iamVjdFtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrR3VhcmRdID0gJ3Jlc3BvbnNlJ1xuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuXG4gICAgLy8gNC4gUGVyZm9ybSBpbml0aWFsaXplIGEgcmVzcG9uc2UgZ2l2ZW4gcmVzcG9uc2VPYmplY3QsIGluaXQsIGFuZCAoYm9keSwgXCJhcHBsaWNhdGlvbi9qc29uXCIpLlxuICAgIGluaXRpYWxpemVSZXNwb25zZShyZXNwb25zZU9iamVjdCwgaW5pdCwgeyBib2R5OiBib2R5WzBdLCB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSlcblxuICAgIC8vIDUuIFJldHVybiByZXNwb25zZU9iamVjdC5cbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3RcbiAgfVxuXG4gIC8vIENyZWF0ZXMgYSByZWRpcmVjdCBSZXNwb25zZSB0aGF0IHJlZGlyZWN0cyB0byB1cmwgd2l0aCBzdGF0dXMgc3RhdHVzLlxuICBzdGF0aWMgcmVkaXJlY3QgKHVybCwgc3RhdHVzID0gMzAyKSB7XG4gICAgY29uc3QgcmVsZXZhbnRSZWFsbSA9IHsgc2V0dGluZ3NPYmplY3Q6IHt9IH1cblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdSZXNwb25zZS5yZWRpcmVjdCcgfSlcblxuICAgIHVybCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyh1cmwpXG4gICAgc3RhdHVzID0gd2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIHNob3J0J10oc3RhdHVzKVxuXG4gICAgLy8gMS4gTGV0IHBhcnNlZFVSTCBiZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdXJsIHdpdGggY3VycmVudCBzZXR0aW5nc1xuICAgIC8vIG9iamVjdFx1MjAxOXMgQVBJIGJhc2UgVVJMLlxuICAgIC8vIDIuIElmIHBhcnNlZFVSTCBpcyBmYWlsdXJlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIC8vIFRPRE86IGJhc2UtVVJMP1xuICAgIGxldCBwYXJzZWRVUkxcbiAgICB0cnkge1xuICAgICAgcGFyc2VkVVJMID0gbmV3IFVSTCh1cmwsIGdldEdsb2JhbE9yaWdpbigpKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgVHlwZUVycm9yKCdGYWlsZWQgdG8gcGFyc2UgVVJMIGZyb20gJyArIHVybCksIHtcbiAgICAgICAgY2F1c2U6IGVyclxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAzLiBJZiBzdGF0dXMgaXMgbm90IGEgcmVkaXJlY3Qgc3RhdHVzLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvci5cbiAgICBpZiAoIXJlZGlyZWN0U3RhdHVzU2V0LmhhcyhzdGF0dXMpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZSAnICsgc3RhdHVzKVxuICAgIH1cblxuICAgIC8vIDQuIExldCByZXNwb25zZU9iamVjdCBiZSB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgUmVzcG9uc2Ugb2JqZWN0LFxuICAgIC8vIGdpdmVuIGEgbmV3IHJlc3BvbnNlLCBcImltbXV0YWJsZVwiLCBhbmQgdGhpc1x1MjAxOXMgcmVsZXZhbnQgUmVhbG0uXG4gICAgY29uc3QgcmVzcG9uc2VPYmplY3QgPSBuZXcgUmVzcG9uc2UoKVxuICAgIHJlc3BvbnNlT2JqZWN0W2tSZWFsbV0gPSByZWxldmFudFJlYWxtXG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tHdWFyZF0gPSAnaW1tdXRhYmxlJ1xuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuXG4gICAgLy8gNS4gU2V0IHJlc3BvbnNlT2JqZWN0XHUyMDE5cyByZXNwb25zZVx1MjAxOXMgc3RhdHVzIHRvIHN0YXR1cy5cbiAgICByZXNwb25zZU9iamVjdFtrU3RhdGVdLnN0YXR1cyA9IHN0YXR1c1xuXG4gICAgLy8gNi4gTGV0IHZhbHVlIGJlIHBhcnNlZFVSTCwgc2VyaWFsaXplZCBhbmQgaXNvbW9ycGhpYyBlbmNvZGVkLlxuICAgIGNvbnN0IHZhbHVlID0gaXNvbW9ycGhpY0VuY29kZShVUkxTZXJpYWxpemVyKHBhcnNlZFVSTCkpXG5cbiAgICAvLyA3LiBBcHBlbmQgYExvY2F0aW9uYC92YWx1ZSB0byByZXNwb25zZU9iamVjdFx1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIHJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0uaGVhZGVyc0xpc3QuYXBwZW5kKCdsb2NhdGlvbicsIHZhbHVlKVxuXG4gICAgLy8gOC4gUmV0dXJuIHJlc3BvbnNlT2JqZWN0LlxuICAgIHJldHVybiByZXNwb25zZU9iamVjdFxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1yZXNwb25zZVxuICBjb25zdHJ1Y3RvciAoYm9keSA9IG51bGwsIGluaXQgPSB7fSkge1xuICAgIGlmIChib2R5ICE9PSBudWxsKSB7XG4gICAgICBib2R5ID0gd2ViaWRsLmNvbnZlcnRlcnMuQm9keUluaXQoYm9keSlcbiAgICB9XG5cbiAgICBpbml0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVzcG9uc2VJbml0KGluaXQpXG5cbiAgICAvLyBUT0RPXG4gICAgdGhpc1trUmVhbG1dID0geyBzZXR0aW5nc09iamVjdDoge30gfVxuXG4gICAgLy8gMS4gU2V0IHRoaXNcdTIwMTlzIHJlc3BvbnNlIHRvIGEgbmV3IHJlc3BvbnNlLlxuICAgIHRoaXNba1N0YXRlXSA9IG1ha2VSZXNwb25zZSh7fSlcblxuICAgIC8vIDIuIFNldCB0aGlzXHUyMDE5cyBoZWFkZXJzIHRvIGEgbmV3IEhlYWRlcnMgb2JqZWN0IHdpdGggdGhpc1x1MjAxOXMgcmVsZXZhbnRcbiAgICAvLyBSZWFsbSwgd2hvc2UgaGVhZGVyIGxpc3QgaXMgdGhpc1x1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0IGFuZCBndWFyZFxuICAgIC8vIGlzIFwicmVzcG9uc2VcIi5cbiAgICB0aGlzW2tIZWFkZXJzXSA9IG5ldyBIZWFkZXJzKGtDb25zdHJ1Y3QpXG4gICAgdGhpc1trSGVhZGVyc11ba0d1YXJkXSA9ICdyZXNwb25zZSdcbiAgICB0aGlzW2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdID0gdGhpc1trU3RhdGVdLmhlYWRlcnNMaXN0XG4gICAgdGhpc1trSGVhZGVyc11ba1JlYWxtXSA9IHRoaXNba1JlYWxtXVxuXG4gICAgLy8gMy4gTGV0IGJvZHlXaXRoVHlwZSBiZSBudWxsLlxuICAgIGxldCBib2R5V2l0aFR5cGUgPSBudWxsXG5cbiAgICAvLyA0LiBJZiBib2R5IGlzIG5vbi1udWxsLCB0aGVuIHNldCBib2R5V2l0aFR5cGUgdG8gdGhlIHJlc3VsdCBvZiBleHRyYWN0aW5nIGJvZHkuXG4gICAgaWYgKGJvZHkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgW2V4dHJhY3RlZEJvZHksIHR5cGVdID0gZXh0cmFjdEJvZHkoYm9keSlcbiAgICAgIGJvZHlXaXRoVHlwZSA9IHsgYm9keTogZXh0cmFjdGVkQm9keSwgdHlwZSB9XG4gICAgfVxuXG4gICAgLy8gNS4gUGVyZm9ybSBpbml0aWFsaXplIGEgcmVzcG9uc2UgZ2l2ZW4gdGhpcywgaW5pdCwgYW5kIGJvZHlXaXRoVHlwZS5cbiAgICBpbml0aWFsaXplUmVzcG9uc2UodGhpcywgaW5pdCwgYm9keVdpdGhUeXBlKVxuICB9XG5cbiAgLy8gUmV0dXJucyByZXNwb25zZVx1MjAxOXMgdHlwZSwgZS5nLiwgXCJjb3JzXCIuXG4gIGdldCB0eXBlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIC8vIFRoZSB0eXBlIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyB0eXBlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0udHlwZVxuICB9XG5cbiAgLy8gUmV0dXJucyByZXNwb25zZVx1MjAxOXMgVVJMLCBpZiBpdCBoYXMgb25lOyBvdGhlcndpc2UgdGhlIGVtcHR5IHN0cmluZy5cbiAgZ2V0IHVybCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICBjb25zdCB1cmxMaXN0ID0gdGhpc1trU3RhdGVdLnVybExpc3RcblxuICAgIC8vIFRoZSB1cmwgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBpZiB0aGlzXHUyMDE5c1xuICAgIC8vIHJlc3BvbnNlXHUyMDE5cyBVUkwgaXMgbnVsbDsgb3RoZXJ3aXNlIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBVUkwsXG4gICAgLy8gc2VyaWFsaXplZCB3aXRoIGV4Y2x1ZGUgZnJhZ21lbnQgc2V0IHRvIHRydWUuXG4gICAgY29uc3QgdXJsID0gdXJsTGlzdFt1cmxMaXN0Lmxlbmd0aCAtIDFdID8/IG51bGxcblxuICAgIGlmICh1cmwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIHJldHVybiBVUkxTZXJpYWxpemVyKHVybCwgdHJ1ZSlcbiAgfVxuXG4gIC8vIFJldHVybnMgd2hldGhlciByZXNwb25zZSB3YXMgb2J0YWluZWQgdGhyb3VnaCBhIHJlZGlyZWN0LlxuICBnZXQgcmVkaXJlY3RlZCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyBUaGUgcmVkaXJlY3RlZCBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0cnVlIGlmIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBVUkxcbiAgICAvLyBsaXN0IGhhcyBtb3JlIHRoYW4gb25lIGl0ZW07IG90aGVyd2lzZSBmYWxzZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnVybExpc3QubGVuZ3RoID4gMVxuICB9XG5cbiAgLy8gUmV0dXJucyByZXNwb25zZVx1MjAxOXMgc3RhdHVzLlxuICBnZXQgc3RhdHVzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIC8vIFRoZSBzdGF0dXMgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cy5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnN0YXR1c1xuICB9XG5cbiAgLy8gUmV0dXJucyB3aGV0aGVyIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgYW4gb2sgc3RhdHVzLlxuICBnZXQgb2sgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgLy8gVGhlIG9rIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRydWUgaWYgdGhpc1x1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBhblxuICAgIC8vIG9rIHN0YXR1czsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uc3RhdHVzID49IDIwMCAmJiB0aGlzW2tTdGF0ZV0uc3RhdHVzIDw9IDI5OVxuICB9XG5cbiAgLy8gUmV0dXJucyByZXNwb25zZVx1MjAxOXMgc3RhdHVzIG1lc3NhZ2UuXG4gIGdldCBzdGF0dXNUZXh0ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIC8vIFRoZSBzdGF0dXNUZXh0IGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXNcbiAgICAvLyBtZXNzYWdlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uc3RhdHVzVGV4dFxuICB9XG5cbiAgLy8gUmV0dXJucyByZXNwb25zZVx1MjAxOXMgaGVhZGVycyBhcyBIZWFkZXJzLlxuICBnZXQgaGVhZGVycyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyBUaGUgaGVhZGVycyBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyBoZWFkZXJzLlxuICAgIHJldHVybiB0aGlzW2tIZWFkZXJzXVxuICB9XG5cbiAgZ2V0IGJvZHkgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ib2R5ID8gdGhpc1trU3RhdGVdLmJvZHkuc3RyZWFtIDogbnVsbFxuICB9XG5cbiAgZ2V0IGJvZHlVc2VkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIHJldHVybiAhIXRoaXNba1N0YXRlXS5ib2R5ICYmIHV0aWwuaXNEaXN0dXJiZWQodGhpc1trU3RhdGVdLmJvZHkuc3RyZWFtKVxuICB9XG5cbiAgLy8gUmV0dXJucyBhIGNsb25lIG9mIHJlc3BvbnNlLlxuICBjbG9uZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyAxLiBJZiB0aGlzIGlzIHVudXNhYmxlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh0aGlzLmJvZHlVc2VkIHx8ICh0aGlzLmJvZHkgJiYgdGhpcy5ib2R5LmxvY2tlZCkpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiAnUmVzcG9uc2UuY2xvbmUnLFxuICAgICAgICBtZXNzYWdlOiAnQm9keSBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLidcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMi4gTGV0IGNsb25lZFJlc3BvbnNlIGJlIHRoZSByZXN1bHQgb2YgY2xvbmluZyB0aGlzXHUyMDE5cyByZXNwb25zZS5cbiAgICBjb25zdCBjbG9uZWRSZXNwb25zZSA9IGNsb25lUmVzcG9uc2UodGhpc1trU3RhdGVdKVxuXG4gICAgLy8gMy4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYSBSZXNwb25zZSBvYmplY3QsIGdpdmVuXG4gICAgLy8gY2xvbmVkUmVzcG9uc2UsIHRoaXNcdTIwMTlzIGhlYWRlcnNcdTIwMTlzIGd1YXJkLCBhbmQgdGhpc1x1MjAxOXMgcmVsZXZhbnQgUmVhbG0uXG4gICAgY29uc3QgY2xvbmVkUmVzcG9uc2VPYmplY3QgPSBuZXcgUmVzcG9uc2UoKVxuICAgIGNsb25lZFJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0gPSBjbG9uZWRSZXNwb25zZVxuICAgIGNsb25lZFJlc3BvbnNlT2JqZWN0W2tSZWFsbV0gPSB0aGlzW2tSZWFsbV1cbiAgICBjbG9uZWRSZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IGNsb25lZFJlc3BvbnNlLmhlYWRlcnNMaXN0XG4gICAgY2xvbmVkUmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tHdWFyZF0gPSB0aGlzW2tIZWFkZXJzXVtrR3VhcmRdXG4gICAgY2xvbmVkUmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tSZWFsbV0gPSB0aGlzW2tIZWFkZXJzXVtrUmVhbG1dXG5cbiAgICByZXR1cm4gY2xvbmVkUmVzcG9uc2VPYmplY3RcbiAgfVxufVxuXG5taXhpbkJvZHkoUmVzcG9uc2UpXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJlc3BvbnNlLnByb3RvdHlwZSwge1xuICB0eXBlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICB1cmw6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHN0YXR1czoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb2s6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlZGlyZWN0ZWQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHN0YXR1c1RleHQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGhlYWRlcnM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGNsb25lOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBib2R5OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBib2R5VXNlZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ1Jlc3BvbnNlJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUmVzcG9uc2UsIHtcbiAganNvbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVkaXJlY3Q6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGVycm9yOiBrRW51bWVyYWJsZVByb3BlcnR5XG59KVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS1jbG9uZVxuZnVuY3Rpb24gY2xvbmVSZXNwb25zZSAocmVzcG9uc2UpIHtcbiAgLy8gVG8gY2xvbmUgYSByZXNwb25zZSByZXNwb25zZSwgcnVuIHRoZXNlIHN0ZXBzOlxuXG4gIC8vIDEuIElmIHJlc3BvbnNlIGlzIGEgZmlsdGVyZWQgcmVzcG9uc2UsIHRoZW4gcmV0dXJuIGEgbmV3IGlkZW50aWNhbFxuICAvLyBmaWx0ZXJlZCByZXNwb25zZSB3aG9zZSBpbnRlcm5hbCByZXNwb25zZSBpcyBhIGNsb25lIG9mIHJlc3BvbnNlXHUyMDE5c1xuICAvLyBpbnRlcm5hbCByZXNwb25zZS5cbiAgaWYgKHJlc3BvbnNlLmludGVybmFsUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZmlsdGVyUmVzcG9uc2UoXG4gICAgICBjbG9uZVJlc3BvbnNlKHJlc3BvbnNlLmludGVybmFsUmVzcG9uc2UpLFxuICAgICAgcmVzcG9uc2UudHlwZVxuICAgIClcbiAgfVxuXG4gIC8vIDIuIExldCBuZXdSZXNwb25zZSBiZSBhIGNvcHkgb2YgcmVzcG9uc2UsIGV4Y2VwdCBmb3IgaXRzIGJvZHkuXG4gIGNvbnN0IG5ld1Jlc3BvbnNlID0gbWFrZVJlc3BvbnNlKHsgLi4ucmVzcG9uc2UsIGJvZHk6IG51bGwgfSlcblxuICAvLyAzLiBJZiByZXNwb25zZVx1MjAxOXMgYm9keSBpcyBub24tbnVsbCwgdGhlbiBzZXQgbmV3UmVzcG9uc2VcdTIwMTlzIGJvZHkgdG8gdGhlXG4gIC8vIHJlc3VsdCBvZiBjbG9uaW5nIHJlc3BvbnNlXHUyMDE5cyBib2R5LlxuICBpZiAocmVzcG9uc2UuYm9keSAhPSBudWxsKSB7XG4gICAgbmV3UmVzcG9uc2UuYm9keSA9IGNsb25lQm9keShyZXNwb25zZS5ib2R5KVxuICB9XG5cbiAgLy8gNC4gUmV0dXJuIG5ld1Jlc3BvbnNlLlxuICByZXR1cm4gbmV3UmVzcG9uc2Vcbn1cblxuZnVuY3Rpb24gbWFrZVJlc3BvbnNlIChpbml0KSB7XG4gIHJldHVybiB7XG4gICAgYWJvcnRlZDogZmFsc2UsXG4gICAgcmFuZ2VSZXF1ZXN0ZWQ6IGZhbHNlLFxuICAgIHRpbWluZ0FsbG93UGFzc2VkOiBmYWxzZSxcbiAgICByZXF1ZXN0SW5jbHVkZXNDcmVkZW50aWFsczogZmFsc2UsXG4gICAgdHlwZTogJ2RlZmF1bHQnLFxuICAgIHN0YXR1czogMjAwLFxuICAgIHRpbWluZ0luZm86IG51bGwsXG4gICAgY2FjaGVTdGF0ZTogJycsXG4gICAgc3RhdHVzVGV4dDogJycsXG4gICAgLi4uaW5pdCxcbiAgICBoZWFkZXJzTGlzdDogaW5pdC5oZWFkZXJzTGlzdFxuICAgICAgPyBuZXcgSGVhZGVyc0xpc3QoaW5pdC5oZWFkZXJzTGlzdClcbiAgICAgIDogbmV3IEhlYWRlcnNMaXN0KCksXG4gICAgdXJsTGlzdDogaW5pdC51cmxMaXN0ID8gWy4uLmluaXQudXJsTGlzdF0gOiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VOZXR3b3JrRXJyb3IgKHJlYXNvbikge1xuICBjb25zdCBpc0Vycm9yID0gaXNFcnJvckxpa2UocmVhc29uKVxuICByZXR1cm4gbWFrZVJlc3BvbnNlKHtcbiAgICB0eXBlOiAnZXJyb3InLFxuICAgIHN0YXR1czogMCxcbiAgICBlcnJvcjogaXNFcnJvclxuICAgICAgPyByZWFzb25cbiAgICAgIDogbmV3IEVycm9yKHJlYXNvbiA/IFN0cmluZyhyZWFzb24pIDogcmVhc29uKSxcbiAgICBhYm9ydGVkOiByZWFzb24gJiYgcmVhc29uLm5hbWUgPT09ICdBYm9ydEVycm9yJ1xuICB9KVxufVxuXG5mdW5jdGlvbiBtYWtlRmlsdGVyZWRSZXNwb25zZSAocmVzcG9uc2UsIHN0YXRlKSB7XG4gIHN0YXRlID0ge1xuICAgIGludGVybmFsUmVzcG9uc2U6IHJlc3BvbnNlLFxuICAgIC4uLnN0YXRlXG4gIH1cblxuICByZXR1cm4gbmV3IFByb3h5KHJlc3BvbnNlLCB7XG4gICAgZ2V0ICh0YXJnZXQsIHApIHtcbiAgICAgIHJldHVybiBwIGluIHN0YXRlID8gc3RhdGVbcF0gOiB0YXJnZXRbcF1cbiAgICB9LFxuICAgIHNldCAodGFyZ2V0LCBwLCB2YWx1ZSkge1xuICAgICAgYXNzZXJ0KCEocCBpbiBzdGF0ZSkpXG4gICAgICB0YXJnZXRbcF0gPSB2YWx1ZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH0pXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWZpbHRlcmVkLXJlc3BvbnNlXG5mdW5jdGlvbiBmaWx0ZXJSZXNwb25zZSAocmVzcG9uc2UsIHR5cGUpIHtcbiAgLy8gU2V0IHJlc3BvbnNlIHRvIHRoZSBmb2xsb3dpbmcgZmlsdGVyZWQgcmVzcG9uc2Ugd2l0aCByZXNwb25zZSBhcyBpdHNcbiAgLy8gaW50ZXJuYWwgcmVzcG9uc2UsIGRlcGVuZGluZyBvbiByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZzpcbiAgaWYgKHR5cGUgPT09ICdiYXNpYycpIHtcbiAgICAvLyBBIGJhc2ljIGZpbHRlcmVkIHJlc3BvbnNlIGlzIGEgZmlsdGVyZWQgcmVzcG9uc2Ugd2hvc2UgdHlwZSBpcyBcImJhc2ljXCJcbiAgICAvLyBhbmQgaGVhZGVyIGxpc3QgZXhjbHVkZXMgYW55IGhlYWRlcnMgaW4gaW50ZXJuYWwgcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0XG4gICAgLy8gd2hvc2UgbmFtZSBpcyBhIGZvcmJpZGRlbiByZXNwb25zZS1oZWFkZXIgbmFtZS5cblxuICAgIC8vIE5vdGU6IHVuZGljaSBkb2VzIG5vdCBpbXBsZW1lbnQgZm9yYmlkZGVuIHJlc3BvbnNlLWhlYWRlciBuYW1lc1xuICAgIHJldHVybiBtYWtlRmlsdGVyZWRSZXNwb25zZShyZXNwb25zZSwge1xuICAgICAgdHlwZTogJ2Jhc2ljJyxcbiAgICAgIGhlYWRlcnNMaXN0OiByZXNwb25zZS5oZWFkZXJzTGlzdFxuICAgIH0pXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvcnMnKSB7XG4gICAgLy8gQSBDT1JTIGZpbHRlcmVkIHJlc3BvbnNlIGlzIGEgZmlsdGVyZWQgcmVzcG9uc2Ugd2hvc2UgdHlwZSBpcyBcImNvcnNcIlxuICAgIC8vIGFuZCBoZWFkZXIgbGlzdCBleGNsdWRlcyBhbnkgaGVhZGVycyBpbiBpbnRlcm5hbCByZXNwb25zZVx1MjAxOXMgaGVhZGVyXG4gICAgLy8gbGlzdCB3aG9zZSBuYW1lIGlzIG5vdCBhIENPUlMtc2FmZWxpc3RlZCByZXNwb25zZS1oZWFkZXIgbmFtZSwgZ2l2ZW5cbiAgICAvLyBpbnRlcm5hbCByZXNwb25zZVx1MjAxOXMgQ09SUy1leHBvc2VkIGhlYWRlci1uYW1lIGxpc3QuXG5cbiAgICAvLyBOb3RlOiB1bmRpY2kgZG9lcyBub3QgaW1wbGVtZW50IENPUlMtc2FmZWxpc3RlZCByZXNwb25zZS1oZWFkZXIgbmFtZXNcbiAgICByZXR1cm4gbWFrZUZpbHRlcmVkUmVzcG9uc2UocmVzcG9uc2UsIHtcbiAgICAgIHR5cGU6ICdjb3JzJyxcbiAgICAgIGhlYWRlcnNMaXN0OiByZXNwb25zZS5oZWFkZXJzTGlzdFxuICAgIH0pXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29wYXF1ZScpIHtcbiAgICAvLyBBbiBvcGFxdWUgZmlsdGVyZWQgcmVzcG9uc2UgaXMgYSBmaWx0ZXJlZCByZXNwb25zZSB3aG9zZSB0eXBlIGlzXG4gICAgLy8gXCJvcGFxdWVcIiwgVVJMIGxpc3QgaXMgdGhlIGVtcHR5IGxpc3QsIHN0YXR1cyBpcyAwLCBzdGF0dXMgbWVzc2FnZVxuICAgIC8vIGlzIHRoZSBlbXB0eSBieXRlIHNlcXVlbmNlLCBoZWFkZXIgbGlzdCBpcyBlbXB0eSwgYW5kIGJvZHkgaXMgbnVsbC5cblxuICAgIHJldHVybiBtYWtlRmlsdGVyZWRSZXNwb25zZShyZXNwb25zZSwge1xuICAgICAgdHlwZTogJ29wYXF1ZScsXG4gICAgICB1cmxMaXN0OiBPYmplY3QuZnJlZXplKFtdKSxcbiAgICAgIHN0YXR1czogMCxcbiAgICAgIHN0YXR1c1RleHQ6ICcnLFxuICAgICAgYm9keTogbnVsbFxuICAgIH0pXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29wYXF1ZXJlZGlyZWN0Jykge1xuICAgIC8vIEFuIG9wYXF1ZS1yZWRpcmVjdCBmaWx0ZXJlZCByZXNwb25zZSBpcyBhIGZpbHRlcmVkIHJlc3BvbnNlIHdob3NlIHR5cGVcbiAgICAvLyBpcyBcIm9wYXF1ZXJlZGlyZWN0XCIsIHN0YXR1cyBpcyAwLCBzdGF0dXMgbWVzc2FnZSBpcyB0aGUgZW1wdHkgYnl0ZVxuICAgIC8vIHNlcXVlbmNlLCBoZWFkZXIgbGlzdCBpcyBlbXB0eSwgYW5kIGJvZHkgaXMgbnVsbC5cblxuICAgIHJldHVybiBtYWtlRmlsdGVyZWRSZXNwb25zZShyZXNwb25zZSwge1xuICAgICAgdHlwZTogJ29wYXF1ZXJlZGlyZWN0JyxcbiAgICAgIHN0YXR1czogMCxcbiAgICAgIHN0YXR1c1RleHQ6ICcnLFxuICAgICAgaGVhZGVyc0xpc3Q6IFtdLFxuICAgICAgYm9keTogbnVsbFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0KGZhbHNlKVxuICB9XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNhcHByb3ByaWF0ZS1uZXR3b3JrLWVycm9yXG5mdW5jdGlvbiBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IgKGZldGNoUGFyYW1zLCBlcnIgPSBudWxsKSB7XG4gIC8vIDEuIEFzc2VydDogZmV0Y2hQYXJhbXMgaXMgY2FuY2VsZWQuXG4gIGFzc2VydChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpXG5cbiAgLy8gMi4gUmV0dXJuIGFuIGFib3J0ZWQgbmV0d29yayBlcnJvciBpZiBmZXRjaFBhcmFtcyBpcyBhYm9ydGVkO1xuICAvLyBvdGhlcndpc2UgcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgcmV0dXJuIGlzQWJvcnRlZChmZXRjaFBhcmFtcylcbiAgICA/IG1ha2VOZXR3b3JrRXJyb3IoT2JqZWN0LmFzc2lnbihuZXcgRE9NRXhjZXB0aW9uKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkLicsICdBYm9ydEVycm9yJyksIHsgY2F1c2U6IGVyciB9KSlcbiAgICA6IG1ha2VOZXR3b3JrRXJyb3IoT2JqZWN0LmFzc2lnbihuZXcgRE9NRXhjZXB0aW9uKCdSZXF1ZXN0IHdhcyBjYW5jZWxsZWQuJyksIHsgY2F1c2U6IGVyciB9KSlcbn1cblxuLy8gaHR0cHM6Ly93aGF0cHIub3JnL2ZldGNoLzEzOTIuaHRtbCNpbml0aWFsaXplLWEtcmVzcG9uc2VcbmZ1bmN0aW9uIGluaXRpYWxpemVSZXNwb25zZSAocmVzcG9uc2UsIGluaXQsIGJvZHkpIHtcbiAgLy8gMS4gSWYgaW5pdFtcInN0YXR1c1wiXSBpcyBub3QgaW4gdGhlIHJhbmdlIDIwMCB0byA1OTksIGluY2x1c2l2ZSwgdGhlblxuICAvLyAgICB0aHJvdyBhIFJhbmdlRXJyb3IuXG4gIGlmIChpbml0LnN0YXR1cyAhPT0gbnVsbCAmJiAoaW5pdC5zdGF0dXMgPCAyMDAgfHwgaW5pdC5zdGF0dXMgPiA1OTkpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2luaXRbXCJzdGF0dXNcIl0gbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMjAwIHRvIDU5OSwgaW5jbHVzaXZlLicpXG4gIH1cblxuICAvLyAyLiBJZiBpbml0W1wic3RhdHVzVGV4dFwiXSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVhc29uLXBocmFzZSB0b2tlbiBwcm9kdWN0aW9uLFxuICAvLyAgICB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBpZiAoJ3N0YXR1c1RleHQnIGluIGluaXQgJiYgaW5pdC5zdGF0dXNUZXh0ICE9IG51bGwpIHtcbiAgICAvLyBTZWUsIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMS4yOlxuICAgIC8vICAgcmVhc29uLXBocmFzZSAgPSAqKCBIVEFCIC8gU1AgLyBWQ0hBUiAvIG9icy10ZXh0IClcbiAgICBpZiAoIWlzVmFsaWRSZWFzb25QaHJhc2UoU3RyaW5nKGluaXQuc3RhdHVzVGV4dCkpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0YXR1c1RleHQnKVxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIFNldCByZXNwb25zZVx1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyB0byBpbml0W1wic3RhdHVzXCJdLlxuICBpZiAoJ3N0YXR1cycgaW4gaW5pdCAmJiBpbml0LnN0YXR1cyAhPSBudWxsKSB7XG4gICAgcmVzcG9uc2Vba1N0YXRlXS5zdGF0dXMgPSBpbml0LnN0YXR1c1xuICB9XG5cbiAgLy8gNC4gU2V0IHJlc3BvbnNlXHUyMDE5cyByZXNwb25zZVx1MjAxOXMgc3RhdHVzIG1lc3NhZ2UgdG8gaW5pdFtcInN0YXR1c1RleHRcIl0uXG4gIGlmICgnc3RhdHVzVGV4dCcgaW4gaW5pdCAmJiBpbml0LnN0YXR1c1RleHQgIT0gbnVsbCkge1xuICAgIHJlc3BvbnNlW2tTdGF0ZV0uc3RhdHVzVGV4dCA9IGluaXQuc3RhdHVzVGV4dFxuICB9XG5cbiAgLy8gNS4gSWYgaW5pdFtcImhlYWRlcnNcIl0gZXhpc3RzLCB0aGVuIGZpbGwgcmVzcG9uc2VcdTIwMTlzIGhlYWRlcnMgd2l0aCBpbml0W1wiaGVhZGVyc1wiXS5cbiAgaWYgKCdoZWFkZXJzJyBpbiBpbml0ICYmIGluaXQuaGVhZGVycyAhPSBudWxsKSB7XG4gICAgZmlsbChyZXNwb25zZVtrSGVhZGVyc10sIGluaXQuaGVhZGVycylcbiAgfVxuXG4gIC8vIDYuIElmIGJvZHkgd2FzIGdpdmVuLCB0aGVuOlxuICBpZiAoYm9keSkge1xuICAgIC8vIDEuIElmIHJlc3BvbnNlJ3Mgc3RhdHVzIGlzIGEgbnVsbCBib2R5IHN0YXR1cywgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAobnVsbEJvZHlTdGF0dXMuaW5jbHVkZXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdSZXNwb25zZSBjb25zdHJ1Y3RvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXNcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMi4gU2V0IHJlc3BvbnNlJ3MgYm9keSB0byBib2R5J3MgYm9keS5cbiAgICByZXNwb25zZVtrU3RhdGVdLmJvZHkgPSBib2R5LmJvZHlcblxuICAgIC8vIDMuIElmIGJvZHkncyB0eXBlIGlzIG5vbi1udWxsIGFuZCByZXNwb25zZSdzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW5cbiAgICAvLyAgICBgQ29udGVudC1UeXBlYCwgdGhlbiBhcHBlbmQgKGBDb250ZW50LVR5cGVgLCBib2R5J3MgdHlwZSkgdG8gcmVzcG9uc2UncyBoZWFkZXIgbGlzdC5cbiAgICBpZiAoYm9keS50eXBlICE9IG51bGwgJiYgIXJlc3BvbnNlW2tTdGF0ZV0uaGVhZGVyc0xpc3QuY29udGFpbnMoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICByZXNwb25zZVtrU3RhdGVdLmhlYWRlcnNMaXN0LmFwcGVuZCgnY29udGVudC10eXBlJywgYm9keS50eXBlKVxuICAgIH1cbiAgfVxufVxuXG53ZWJpZGwuY29udmVydGVycy5SZWFkYWJsZVN0cmVhbSA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoXG4gIFJlYWRhYmxlU3RyZWFtXG4pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLkZvcm1EYXRhID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihcbiAgRm9ybURhdGFcbilcblxud2ViaWRsLmNvbnZlcnRlcnMuVVJMU2VhcmNoUGFyYW1zID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihcbiAgVVJMU2VhcmNoUGFyYW1zXG4pXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyN0eXBlZGVmZGVmLXhtbGh0dHByZXF1ZXN0Ym9keWluaXRcbndlYmlkbC5jb252ZXJ0ZXJzLlhNTEh0dHBSZXF1ZXN0Qm9keUluaXQgPSBmdW5jdGlvbiAoVikge1xuICBpZiAodHlwZW9mIFYgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhWKVxuICB9XG5cbiAgaWYgKGlzQmxvYkxpa2UoVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuQmxvYihWLCB7IHN0cmljdDogZmFsc2UgfSlcbiAgfVxuXG4gIGlmICh0eXBlcy5pc0FycmF5QnVmZmVyKFYpIHx8IHR5cGVzLmlzVHlwZWRBcnJheShWKSB8fCB0eXBlcy5pc0RhdGFWaWV3KFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkJ1ZmZlclNvdXJjZShWKVxuICB9XG5cbiAgaWYgKHV0aWwuaXNGb3JtRGF0YUxpa2UoVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuRm9ybURhdGEoViwgeyBzdHJpY3Q6IGZhbHNlIH0pXG4gIH1cblxuICBpZiAoViBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5VUkxTZWFyY2hQYXJhbXMoVilcbiAgfVxuXG4gIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcoVilcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHlpbml0XG53ZWJpZGwuY29udmVydGVycy5Cb2R5SW5pdCA9IGZ1bmN0aW9uIChWKSB7XG4gIGlmIChWIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuUmVhZGFibGVTdHJlYW0oVilcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaW5jbHVkZSBhc3luYyBpdGVyYWJsZXMsXG4gIC8vIHRoaXMgaXMgYW4gdW5kaWNpIGV4dGVuc2lvbi5cbiAgaWYgKFY/LltTeW1ib2wuYXN5bmNJdGVyYXRvcl0pIHtcbiAgICByZXR1cm4gVlxuICB9XG5cbiAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlhNTEh0dHBSZXF1ZXN0Qm9keUluaXQoVilcbn1cblxud2ViaWRsLmNvbnZlcnRlcnMuUmVzcG9uc2VJbml0ID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoW1xuICB7XG4gICAga2V5OiAnc3RhdHVzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBzaG9ydCddLFxuICAgIGRlZmF1bHRWYWx1ZTogMjAwXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdzdGF0dXNUZXh0JyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiAnJ1xuICB9LFxuICB7XG4gICAga2V5OiAnaGVhZGVycycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5IZWFkZXJzSW5pdFxuICB9XG5dKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWFrZU5ldHdvcmtFcnJvcixcbiAgbWFrZVJlc3BvbnNlLFxuICBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IsXG4gIGZpbHRlclJlc3BvbnNlLFxuICBSZXNwb25zZSxcbiAgY2xvbmVSZXNwb25zZVxufVxuIiwgIi8qIGdsb2JhbHMgQWJvcnRDb250cm9sbGVyICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGV4dHJhY3RCb2R5LCBtaXhpbkJvZHksIGNsb25lQm9keSB9ID0gcmVxdWlyZSgnLi9ib2R5JylcbmNvbnN0IHsgSGVhZGVycywgZmlsbDogZmlsbEhlYWRlcnMsIEhlYWRlcnNMaXN0IH0gPSByZXF1aXJlKCcuL2hlYWRlcnMnKVxuY29uc3QgeyBGaW5hbGl6YXRpb25SZWdpc3RyeSB9ID0gcmVxdWlyZSgnLi4vY29tcGF0L2Rpc3BhdGNoZXItd2Vha3JlZicpKClcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3Qge1xuICBpc1ZhbGlkSFRUUFRva2VuLFxuICBzYW1lT3JpZ2luLFxuICBub3JtYWxpemVNZXRob2QsXG4gIG1ha2VQb2xpY3lDb250YWluZXIsXG4gIG5vcm1hbGl6ZU1ldGhvZFJlY29yZFxufSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7XG4gIGZvcmJpZGRlbk1ldGhvZHNTZXQsXG4gIGNvcnNTYWZlTGlzdGVkTWV0aG9kc1NldCxcbiAgcmVmZXJyZXJQb2xpY3ksXG4gIHJlcXVlc3RSZWRpcmVjdCxcbiAgcmVxdWVzdE1vZGUsXG4gIHJlcXVlc3RDcmVkZW50aWFscyxcbiAgcmVxdWVzdENhY2hlLFxuICByZXF1ZXN0RHVwbGV4XG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSB1dGlsXG5jb25zdCB7IGtIZWFkZXJzLCBrU2lnbmFsLCBrU3RhdGUsIGtHdWFyZCwga1JlYWxtIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyB3ZWJpZGwgfSA9IHJlcXVpcmUoJy4vd2ViaWRsJylcbmNvbnN0IHsgZ2V0R2xvYmFsT3JpZ2luIH0gPSByZXF1aXJlKCcuL2dsb2JhbCcpXG5jb25zdCB7IFVSTFNlcmlhbGl6ZXIgfSA9IHJlcXVpcmUoJy4vZGF0YVVSTCcpXG5jb25zdCB7IGtIZWFkZXJzTGlzdCwga0NvbnN0cnVjdCB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IGdldE1heExpc3RlbmVycywgc2V0TWF4TGlzdGVuZXJzLCBnZXRFdmVudExpc3RlbmVycywgZGVmYXVsdE1heExpc3RlbmVycyB9ID0gcmVxdWlyZSgnZXZlbnRzJylcblxubGV0IFRyYW5zZm9ybVN0cmVhbSA9IGdsb2JhbFRoaXMuVHJhbnNmb3JtU3RyZWFtXG5cbmNvbnN0IGtBYm9ydENvbnRyb2xsZXIgPSBTeW1ib2woJ2Fib3J0Q29udHJvbGxlcicpXG5cbmNvbnN0IHJlcXVlc3RGaW5hbGl6ZXIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKHsgc2lnbmFsLCBhYm9ydCB9KSA9PiB7XG4gIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0KVxufSlcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3QtY2xhc3NcbmNsYXNzIFJlcXVlc3Qge1xuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLXJlcXVlc3RcbiAgY29uc3RydWN0b3IgKGlucHV0LCBpbml0ID0ge30pIHtcbiAgICBpZiAoaW5wdXQgPT09IGtDb25zdHJ1Y3QpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdSZXF1ZXN0IGNvbnN0cnVjdG9yJyB9KVxuXG4gICAgaW5wdXQgPSB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyhpbnB1dClcbiAgICBpbml0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluaXQoaW5pdClcblxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNlbnZpcm9ubWVudC1zZXR0aW5ncy1vYmplY3RcbiAgICB0aGlzW2tSZWFsbV0gPSB7XG4gICAgICBzZXR0aW5nc09iamVjdDoge1xuICAgICAgICBiYXNlVXJsOiBnZXRHbG9iYWxPcmlnaW4oKSxcbiAgICAgICAgZ2V0IG9yaWdpbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVybD8ub3JpZ2luXG4gICAgICAgIH0sXG4gICAgICAgIHBvbGljeUNvbnRhaW5lcjogbWFrZVBvbGljeUNvbnRhaW5lcigpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMS4gTGV0IHJlcXVlc3QgYmUgbnVsbC5cbiAgICBsZXQgcmVxdWVzdCA9IG51bGxcblxuICAgIC8vIDIuIExldCBmYWxsYmFja01vZGUgYmUgbnVsbC5cbiAgICBsZXQgZmFsbGJhY2tNb2RlID0gbnVsbFxuXG4gICAgLy8gMy4gTGV0IGJhc2VVUkwgYmUgdGhpc1x1MjAxOXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0XHUyMDE5cyBBUEkgYmFzZSBVUkwuXG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXNba1JlYWxtXS5zZXR0aW5nc09iamVjdC5iYXNlVXJsXG5cbiAgICAvLyA0LiBMZXQgc2lnbmFsIGJlIG51bGwuXG4gICAgbGV0IHNpZ25hbCA9IG51bGxcblxuICAgIC8vIDUuIElmIGlucHV0IGlzIGEgc3RyaW5nLCB0aGVuOlxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyAxLiBMZXQgcGFyc2VkVVJMIGJlIHRoZSByZXN1bHQgb2YgcGFyc2luZyBpbnB1dCB3aXRoIGJhc2VVUkwuXG4gICAgICAvLyAyLiBJZiBwYXJzZWRVUkwgaXMgZmFpbHVyZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGxldCBwYXJzZWRVUkxcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZFVSTCA9IG5ldyBVUkwoaW5wdXQsIGJhc2VVcmwpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIHBhcnNlIFVSTCBmcm9tICcgKyBpbnB1dCwgeyBjYXVzZTogZXJyIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHBhcnNlZFVSTCBpbmNsdWRlcyBjcmVkZW50aWFscywgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmIChwYXJzZWRVUkwudXNlcm5hbWUgfHwgcGFyc2VkVVJMLnBhc3N3b3JkKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ1JlcXVlc3QgY2Fubm90IGJlIGNvbnN0cnVjdGVkIGZyb20gYSBVUkwgdGhhdCBpbmNsdWRlcyBjcmVkZW50aWFsczogJyArXG4gICAgICAgICAgICBpbnB1dFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIDQuIFNldCByZXF1ZXN0IHRvIGEgbmV3IHJlcXVlc3Qgd2hvc2UgVVJMIGlzIHBhcnNlZFVSTC5cbiAgICAgIHJlcXVlc3QgPSBtYWtlUmVxdWVzdCh7IHVybExpc3Q6IFtwYXJzZWRVUkxdIH0pXG5cbiAgICAgIC8vIDUuIFNldCBmYWxsYmFja01vZGUgdG8gXCJjb3JzXCIuXG4gICAgICBmYWxsYmFja01vZGUgPSAnY29ycydcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gNi4gT3RoZXJ3aXNlOlxuXG4gICAgICAvLyA3LiBBc3NlcnQ6IGlucHV0IGlzIGEgUmVxdWVzdCBvYmplY3QuXG4gICAgICBhc3NlcnQoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KVxuXG4gICAgICAvLyA4LiBTZXQgcmVxdWVzdCB0byBpbnB1dFx1MjAxOXMgcmVxdWVzdC5cbiAgICAgIHJlcXVlc3QgPSBpbnB1dFtrU3RhdGVdXG5cbiAgICAgIC8vIDkuIFNldCBzaWduYWwgdG8gaW5wdXRcdTIwMTlzIHNpZ25hbC5cbiAgICAgIHNpZ25hbCA9IGlucHV0W2tTaWduYWxdXG4gICAgfVxuXG4gICAgLy8gNy4gTGV0IG9yaWdpbiBiZSB0aGlzXHUyMDE5cyByZWxldmFudCBzZXR0aW5ncyBvYmplY3RcdTIwMTlzIG9yaWdpbi5cbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzW2tSZWFsbV0uc2V0dGluZ3NPYmplY3Qub3JpZ2luXG5cbiAgICAvLyA4LiBMZXQgd2luZG93IGJlIFwiY2xpZW50XCIuXG4gICAgbGV0IHdpbmRvdyA9ICdjbGllbnQnXG5cbiAgICAvLyA5LiBJZiByZXF1ZXN0XHUyMDE5cyB3aW5kb3cgaXMgYW4gZW52aXJvbm1lbnQgc2V0dGluZ3Mgb2JqZWN0IGFuZCBpdHMgb3JpZ2luXG4gICAgLy8gaXMgc2FtZSBvcmlnaW4gd2l0aCBvcmlnaW4sIHRoZW4gc2V0IHdpbmRvdyB0byByZXF1ZXN0XHUyMDE5cyB3aW5kb3cuXG4gICAgaWYgKFxuICAgICAgcmVxdWVzdC53aW5kb3c/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnRW52aXJvbm1lbnRTZXR0aW5nc09iamVjdCcgJiZcbiAgICAgIHNhbWVPcmlnaW4ocmVxdWVzdC53aW5kb3csIG9yaWdpbilcbiAgICApIHtcbiAgICAgIHdpbmRvdyA9IHJlcXVlc3Qud2luZG93XG4gICAgfVxuXG4gICAgLy8gMTAuIElmIGluaXRbXCJ3aW5kb3dcIl0gZXhpc3RzIGFuZCBpcyBub24tbnVsbCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoaW5pdC53aW5kb3cgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJ3dpbmRvdycgb3B0aW9uICcke3dpbmRvd30nIG11c3QgYmUgbnVsbGApXG4gICAgfVxuXG4gICAgLy8gMTEuIElmIGluaXRbXCJ3aW5kb3dcIl0gZXhpc3RzLCB0aGVuIHNldCB3aW5kb3cgdG8gXCJuby13aW5kb3dcIi5cbiAgICBpZiAoJ3dpbmRvdycgaW4gaW5pdCkge1xuICAgICAgd2luZG93ID0gJ25vLXdpbmRvdydcbiAgICB9XG5cbiAgICAvLyAxMi4gU2V0IHJlcXVlc3QgdG8gYSBuZXcgcmVxdWVzdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICByZXF1ZXN0ID0gbWFrZVJlcXVlc3Qoe1xuICAgICAgLy8gVVJMIHJlcXVlc3RcdTIwMTlzIFVSTC5cbiAgICAgIC8vIHVuZGljaSBpbXBsZW1lbnRhdGlvbiBub3RlOiB0aGlzIGlzIHNldCBhcyB0aGUgZmlyc3QgaXRlbSBpbiByZXF1ZXN0J3MgdXJsTGlzdCBpbiBtYWtlUmVxdWVzdFxuICAgICAgLy8gbWV0aG9kIHJlcXVlc3RcdTIwMTlzIG1ldGhvZC5cbiAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAvLyBoZWFkZXIgbGlzdCBBIGNvcHkgb2YgcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICAvLyB1bmRpY2kgaW1wbGVtZW50YXRpb24gbm90ZTogaGVhZGVyc0xpc3QgaXMgY2xvbmVkIGluIG1ha2VSZXF1ZXN0XG4gICAgICBoZWFkZXJzTGlzdDogcmVxdWVzdC5oZWFkZXJzTGlzdCxcbiAgICAgIC8vIHVuc2FmZS1yZXF1ZXN0IGZsYWcgU2V0LlxuICAgICAgdW5zYWZlUmVxdWVzdDogcmVxdWVzdC51bnNhZmVSZXF1ZXN0LFxuICAgICAgLy8gY2xpZW50IFRoaXNcdTIwMTlzIHJlbGV2YW50IHNldHRpbmdzIG9iamVjdC5cbiAgICAgIGNsaWVudDogdGhpc1trUmVhbG1dLnNldHRpbmdzT2JqZWN0LFxuICAgICAgLy8gd2luZG93IHdpbmRvdy5cbiAgICAgIHdpbmRvdyxcbiAgICAgIC8vIHByaW9yaXR5IHJlcXVlc3RcdTIwMTlzIHByaW9yaXR5LlxuICAgICAgcHJpb3JpdHk6IHJlcXVlc3QucHJpb3JpdHksXG4gICAgICAvLyBvcmlnaW4gcmVxdWVzdFx1MjAxOXMgb3JpZ2luLiBUaGUgcHJvcGFnYXRpb24gb2YgdGhlIG9yaWdpbiBpcyBvbmx5IHNpZ25pZmljYW50IGZvciBuYXZpZ2F0aW9uIHJlcXVlc3RzXG4gICAgICAvLyBiZWluZyBoYW5kbGVkIGJ5IGEgc2VydmljZSB3b3JrZXIuIEluIHRoaXMgc2NlbmFyaW8gYSByZXF1ZXN0IGNhbiBoYXZlIGFuIG9yaWdpbiB0aGF0IGlzIGRpZmZlcmVudFxuICAgICAgLy8gZnJvbSB0aGUgY3VycmVudCBjbGllbnQuXG4gICAgICBvcmlnaW46IHJlcXVlc3Qub3JpZ2luLFxuICAgICAgLy8gcmVmZXJyZXIgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIuXG4gICAgICByZWZlcnJlcjogcmVxdWVzdC5yZWZlcnJlcixcbiAgICAgIC8vIHJlZmVycmVyIHBvbGljeSByZXF1ZXN0XHUyMDE5cyByZWZlcnJlciBwb2xpY3kuXG4gICAgICByZWZlcnJlclBvbGljeTogcmVxdWVzdC5yZWZlcnJlclBvbGljeSxcbiAgICAgIC8vIG1vZGUgcmVxdWVzdFx1MjAxOXMgbW9kZS5cbiAgICAgIG1vZGU6IHJlcXVlc3QubW9kZSxcbiAgICAgIC8vIGNyZWRlbnRpYWxzIG1vZGUgcmVxdWVzdFx1MjAxOXMgY3JlZGVudGlhbHMgbW9kZS5cbiAgICAgIGNyZWRlbnRpYWxzOiByZXF1ZXN0LmNyZWRlbnRpYWxzLFxuICAgICAgLy8gY2FjaGUgbW9kZSByZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlLlxuICAgICAgY2FjaGU6IHJlcXVlc3QuY2FjaGUsXG4gICAgICAvLyByZWRpcmVjdCBtb2RlIHJlcXVlc3RcdTIwMTlzIHJlZGlyZWN0IG1vZGUuXG4gICAgICByZWRpcmVjdDogcmVxdWVzdC5yZWRpcmVjdCxcbiAgICAgIC8vIGludGVncml0eSBtZXRhZGF0YSByZXF1ZXN0XHUyMDE5cyBpbnRlZ3JpdHkgbWV0YWRhdGEuXG4gICAgICBpbnRlZ3JpdHk6IHJlcXVlc3QuaW50ZWdyaXR5LFxuICAgICAgLy8ga2VlcGFsaXZlIHJlcXVlc3RcdTIwMTlzIGtlZXBhbGl2ZS5cbiAgICAgIGtlZXBhbGl2ZTogcmVxdWVzdC5rZWVwYWxpdmUsXG4gICAgICAvLyByZWxvYWQtbmF2aWdhdGlvbiBmbGFnIHJlcXVlc3RcdTIwMTlzIHJlbG9hZC1uYXZpZ2F0aW9uIGZsYWcuXG4gICAgICByZWxvYWROYXZpZ2F0aW9uOiByZXF1ZXN0LnJlbG9hZE5hdmlnYXRpb24sXG4gICAgICAvLyBoaXN0b3J5LW5hdmlnYXRpb24gZmxhZyByZXF1ZXN0XHUyMDE5cyBoaXN0b3J5LW5hdmlnYXRpb24gZmxhZy5cbiAgICAgIGhpc3RvcnlOYXZpZ2F0aW9uOiByZXF1ZXN0Lmhpc3RvcnlOYXZpZ2F0aW9uLFxuICAgICAgLy8gVVJMIGxpc3QgQSBjbG9uZSBvZiByZXF1ZXN0XHUyMDE5cyBVUkwgbGlzdC5cbiAgICAgIHVybExpc3Q6IFsuLi5yZXF1ZXN0LnVybExpc3RdXG4gICAgfSlcblxuICAgIGNvbnN0IGluaXRIYXNLZXkgPSBPYmplY3Qua2V5cyhpbml0KS5sZW5ndGggIT09IDBcblxuICAgIC8vIDEzLiBJZiBpbml0IGlzIG5vdCBlbXB0eSwgdGhlbjpcbiAgICBpZiAoaW5pdEhhc0tleSkge1xuICAgICAgLy8gMS4gSWYgcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcIm5hdmlnYXRlXCIsIHRoZW4gc2V0IGl0IHRvIFwic2FtZS1vcmlnaW5cIi5cbiAgICAgIGlmIChyZXF1ZXN0Lm1vZGUgPT09ICduYXZpZ2F0ZScpIHtcbiAgICAgICAgcmVxdWVzdC5tb2RlID0gJ3NhbWUtb3JpZ2luJ1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBVbnNldCByZXF1ZXN0XHUyMDE5cyByZWxvYWQtbmF2aWdhdGlvbiBmbGFnLlxuICAgICAgcmVxdWVzdC5yZWxvYWROYXZpZ2F0aW9uID0gZmFsc2VcblxuICAgICAgLy8gMy4gVW5zZXQgcmVxdWVzdFx1MjAxOXMgaGlzdG9yeS1uYXZpZ2F0aW9uIGZsYWcuXG4gICAgICByZXF1ZXN0Lmhpc3RvcnlOYXZpZ2F0aW9uID0gZmFsc2VcblxuICAgICAgLy8gNC4gU2V0IHJlcXVlc3RcdTIwMTlzIG9yaWdpbiB0byBcImNsaWVudFwiLlxuICAgICAgcmVxdWVzdC5vcmlnaW4gPSAnY2xpZW50J1xuXG4gICAgICAvLyA1LiBTZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgdG8gXCJjbGllbnRcIlxuICAgICAgcmVxdWVzdC5yZWZlcnJlciA9ICdjbGllbnQnXG5cbiAgICAgIC8vIDYuIFNldCByZXF1ZXN0XHUyMDE5cyByZWZlcnJlciBwb2xpY3kgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgIHJlcXVlc3QucmVmZXJyZXJQb2xpY3kgPSAnJ1xuXG4gICAgICAvLyA3LiBTZXQgcmVxdWVzdFx1MjAxOXMgVVJMIHRvIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMLlxuICAgICAgcmVxdWVzdC51cmwgPSByZXF1ZXN0LnVybExpc3RbcmVxdWVzdC51cmxMaXN0Lmxlbmd0aCAtIDFdXG5cbiAgICAgIC8vIDguIFNldCByZXF1ZXN0XHUyMDE5cyBVUkwgbGlzdCB0byBcdTAwQUIgcmVxdWVzdFx1MjAxOXMgVVJMIFx1MDBCQi5cbiAgICAgIHJlcXVlc3QudXJsTGlzdCA9IFtyZXF1ZXN0LnVybF1cbiAgICB9XG5cbiAgICAvLyAxNC4gSWYgaW5pdFtcInJlZmVycmVyXCJdIGV4aXN0cywgdGhlbjpcbiAgICBpZiAoaW5pdC5yZWZlcnJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyAxLiBMZXQgcmVmZXJyZXIgYmUgaW5pdFtcInJlZmVycmVyXCJdLlxuICAgICAgY29uc3QgcmVmZXJyZXIgPSBpbml0LnJlZmVycmVyXG5cbiAgICAgIC8vIDIuIElmIHJlZmVycmVyIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHRvIFwibm8tcmVmZXJyZXJcIi5cbiAgICAgIGlmIChyZWZlcnJlciA9PT0gJycpIHtcbiAgICAgICAgcmVxdWVzdC5yZWZlcnJlciA9ICduby1yZWZlcnJlcidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIDEuIExldCBwYXJzZWRSZWZlcnJlciBiZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgcmVmZXJyZXIgd2l0aFxuICAgICAgICAvLyBiYXNlVVJMLlxuICAgICAgICAvLyAyLiBJZiBwYXJzZWRSZWZlcnJlciBpcyBmYWlsdXJlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgICAgICBsZXQgcGFyc2VkUmVmZXJyZXJcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwYXJzZWRSZWZlcnJlciA9IG5ldyBVUkwocmVmZXJyZXIsIGJhc2VVcmwpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlZmVycmVyIFwiJHtyZWZlcnJlcn1cIiBpcyBub3QgYSB2YWxpZCBVUkwuYCwgeyBjYXVzZTogZXJyIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBJZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlXG4gICAgICAgIC8vIC0gcGFyc2VkUmVmZXJyZXJcdTIwMTlzIHNjaGVtZSBpcyBcImFib3V0XCIgYW5kIHBhdGggaXMgdGhlIHN0cmluZyBcImNsaWVudFwiXG4gICAgICAgIC8vIC0gcGFyc2VkUmVmZXJyZXJcdTIwMTlzIG9yaWdpbiBpcyBub3Qgc2FtZSBvcmlnaW4gd2l0aCBvcmlnaW5cbiAgICAgICAgLy8gdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgdG8gXCJjbGllbnRcIi5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIChwYXJzZWRSZWZlcnJlci5wcm90b2NvbCA9PT0gJ2Fib3V0OicgJiYgcGFyc2VkUmVmZXJyZXIuaG9zdG5hbWUgPT09ICdjbGllbnQnKSB8fFxuICAgICAgICAgIChvcmlnaW4gJiYgIXNhbWVPcmlnaW4ocGFyc2VkUmVmZXJyZXIsIHRoaXNba1JlYWxtXS5zZXR0aW5nc09iamVjdC5iYXNlVXJsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVxdWVzdC5yZWZlcnJlciA9ICdjbGllbnQnXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBzZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgdG8gcGFyc2VkUmVmZXJyZXIuXG4gICAgICAgICAgcmVxdWVzdC5yZWZlcnJlciA9IHBhcnNlZFJlZmVycmVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAxNS4gSWYgaW5pdFtcInJlZmVycmVyUG9saWN5XCJdIGV4aXN0cywgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5XG4gICAgLy8gdG8gaXQuXG4gICAgaWYgKGluaXQucmVmZXJyZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVxdWVzdC5yZWZlcnJlclBvbGljeSA9IGluaXQucmVmZXJyZXJQb2xpY3lcbiAgICB9XG5cbiAgICAvLyAxNi4gTGV0IG1vZGUgYmUgaW5pdFtcIm1vZGVcIl0gaWYgaXQgZXhpc3RzLCBhbmQgZmFsbGJhY2tNb2RlIG90aGVyd2lzZS5cbiAgICBsZXQgbW9kZVxuICAgIGlmIChpbml0Lm1vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZSA9IGluaXQubW9kZVxuICAgIH0gZWxzZSB7XG4gICAgICBtb2RlID0gZmFsbGJhY2tNb2RlXG4gICAgfVxuXG4gICAgLy8gMTcuIElmIG1vZGUgaXMgXCJuYXZpZ2F0ZVwiLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmIChtb2RlID09PSAnbmF2aWdhdGUnKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ1JlcXVlc3QgY29uc3RydWN0b3InLFxuICAgICAgICBtZXNzYWdlOiAnaW52YWxpZCByZXF1ZXN0IG1vZGUgbmF2aWdhdGUuJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAxOC4gSWYgbW9kZSBpcyBub24tbnVsbCwgc2V0IHJlcXVlc3RcdTIwMTlzIG1vZGUgdG8gbW9kZS5cbiAgICBpZiAobW9kZSAhPSBudWxsKSB7XG4gICAgICByZXF1ZXN0Lm1vZGUgPSBtb2RlXG4gICAgfVxuXG4gICAgLy8gMTkuIElmIGluaXRbXCJjcmVkZW50aWFsc1wiXSBleGlzdHMsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIGNyZWRlbnRpYWxzIG1vZGVcbiAgICAvLyB0byBpdC5cbiAgICBpZiAoaW5pdC5jcmVkZW50aWFscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXF1ZXN0LmNyZWRlbnRpYWxzID0gaW5pdC5jcmVkZW50aWFsc1xuICAgIH1cblxuICAgIC8vIDE4LiBJZiBpbml0W1wiY2FjaGVcIl0gZXhpc3RzLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIHRvIGl0LlxuICAgIGlmIChpbml0LmNhY2hlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlcXVlc3QuY2FjaGUgPSBpbml0LmNhY2hlXG4gICAgfVxuXG4gICAgLy8gMjEuIElmIHJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgaXMgXCJvbmx5LWlmLWNhY2hlZFwiIGFuZCByZXF1ZXN0XHUyMDE5cyBtb2RlIGlzXG4gICAgLy8gbm90IFwic2FtZS1vcmlnaW5cIiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAocmVxdWVzdC5jYWNoZSA9PT0gJ29ubHktaWYtY2FjaGVkJyAmJiByZXF1ZXN0Lm1vZGUgIT09ICdzYW1lLW9yaWdpbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiJ29ubHktaWYtY2FjaGVkJyBjYW4gYmUgc2V0IG9ubHkgd2l0aCAnc2FtZS1vcmlnaW4nIG1vZGVcIlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIDIyLiBJZiBpbml0W1wicmVkaXJlY3RcIl0gZXhpc3RzLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBtb2RlIHRvIGl0LlxuICAgIGlmIChpbml0LnJlZGlyZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlcXVlc3QucmVkaXJlY3QgPSBpbml0LnJlZGlyZWN0XG4gICAgfVxuXG4gICAgLy8gMjMuIElmIGluaXRbXCJpbnRlZ3JpdHlcIl0gZXhpc3RzLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBpbnRlZ3JpdHkgbWV0YWRhdGEgdG8gaXQuXG4gICAgaWYgKGluaXQuaW50ZWdyaXR5ICE9IG51bGwpIHtcbiAgICAgIHJlcXVlc3QuaW50ZWdyaXR5ID0gU3RyaW5nKGluaXQuaW50ZWdyaXR5KVxuICAgIH1cblxuICAgIC8vIDI0LiBJZiBpbml0W1wia2VlcGFsaXZlXCJdIGV4aXN0cywgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMga2VlcGFsaXZlIHRvIGl0LlxuICAgIGlmIChpbml0LmtlZXBhbGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXF1ZXN0LmtlZXBhbGl2ZSA9IEJvb2xlYW4oaW5pdC5rZWVwYWxpdmUpXG4gICAgfVxuXG4gICAgLy8gMjUuIElmIGluaXRbXCJtZXRob2RcIl0gZXhpc3RzLCB0aGVuOlxuICAgIGlmIChpbml0Lm1ldGhvZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyAxLiBMZXQgbWV0aG9kIGJlIGluaXRbXCJtZXRob2RcIl0uXG4gICAgICBsZXQgbWV0aG9kID0gaW5pdC5tZXRob2RcblxuICAgICAgLy8gMi4gSWYgbWV0aG9kIGlzIG5vdCBhIG1ldGhvZCBvciBtZXRob2QgaXMgYSBmb3JiaWRkZW4gbWV0aG9kLCB0aGVuXG4gICAgICAvLyB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmICghaXNWYWxpZEhUVFBUb2tlbihtZXRob2QpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCcke21ldGhvZH0nIGlzIG5vdCBhIHZhbGlkIEhUVFAgbWV0aG9kLmApXG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JiaWRkZW5NZXRob2RzU2V0LmhhcyhtZXRob2QudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJyR7bWV0aG9kfScgSFRUUCBtZXRob2QgaXMgdW5zdXBwb3J0ZWQuYClcbiAgICAgIH1cblxuICAgICAgLy8gMy4gTm9ybWFsaXplIG1ldGhvZC5cbiAgICAgIG1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZFJlY29yZFttZXRob2RdID8/IG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpXG5cbiAgICAgIC8vIDQuIFNldCByZXF1ZXN0XHUyMDE5cyBtZXRob2QgdG8gbWV0aG9kLlxuICAgICAgcmVxdWVzdC5tZXRob2QgPSBtZXRob2RcbiAgICB9XG5cbiAgICAvLyAyNi4gSWYgaW5pdFtcInNpZ25hbFwiXSBleGlzdHMsIHRoZW4gc2V0IHNpZ25hbCB0byBpdC5cbiAgICBpZiAoaW5pdC5zaWduYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2lnbmFsID0gaW5pdC5zaWduYWxcbiAgICB9XG5cbiAgICAvLyAyNy4gU2V0IHRoaXNcdTIwMTlzIHJlcXVlc3QgdG8gcmVxdWVzdC5cbiAgICB0aGlzW2tTdGF0ZV0gPSByZXF1ZXN0XG5cbiAgICAvLyAyOC4gU2V0IHRoaXNcdTIwMTlzIHNpZ25hbCB0byBhIG5ldyBBYm9ydFNpZ25hbCBvYmplY3Qgd2l0aCB0aGlzXHUyMDE5cyByZWxldmFudFxuICAgIC8vIFJlYWxtLlxuICAgIC8vIFRPRE86IGNvdWxkIHRoaXMgYmUgc2ltcGxpZmllZCB3aXRoIEFib3J0U2lnbmFsLmFueVxuICAgIC8vIChodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1hYm9ydHNpZ25hbC1hbnkpXG4gICAgY29uc3QgYWMgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICB0aGlzW2tTaWduYWxdID0gYWMuc2lnbmFsXG4gICAgdGhpc1trU2lnbmFsXVtrUmVhbG1dID0gdGhpc1trUmVhbG1dXG5cbiAgICAvLyAyOS4gSWYgc2lnbmFsIGlzIG5vdCBudWxsLCB0aGVuIG1ha2UgdGhpc1x1MjAxOXMgc2lnbmFsIGZvbGxvdyBzaWduYWwuXG4gICAgaWYgKHNpZ25hbCAhPSBudWxsKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzaWduYWwgfHxcbiAgICAgICAgdHlwZW9mIHNpZ25hbC5hYm9ydGVkICE9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgdHlwZW9mIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyICE9PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1JlcXVlc3QnOiBtZW1iZXIgc2lnbmFsIGlzIG5vdCBvZiB0eXBlIEFib3J0U2lnbmFsLlwiXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIGFjLmFib3J0KHNpZ25hbC5yZWFzb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBLZWVwIGEgc3Ryb25nIHJlZiB0byBhYyB3aGlsZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAvLyBpcyBhbGl2ZS4gVGhpcyBpcyBuZWVkZWQgdG8gcHJldmVudCBBYm9ydENvbnRyb2xsZXJcbiAgICAgICAgLy8gZnJvbSBiZWluZyBwcmVtYXR1cmVseSBnYXJiYWdlIGNvbGxlY3RlZC5cbiAgICAgICAgLy8gU2VlLCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9pc3N1ZXMvMTkyNi5cbiAgICAgICAgdGhpc1trQWJvcnRDb250cm9sbGVyXSA9IGFjXG5cbiAgICAgICAgY29uc3QgYWNSZWYgPSBuZXcgV2Vha1JlZihhYylcbiAgICAgICAgY29uc3QgYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYWMgPSBhY1JlZi5kZXJlZigpXG4gICAgICAgICAgaWYgKGFjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjLmFib3J0KHRoaXMucmVhc29uKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXJkLXBhcnR5IEFib3J0Q29udHJvbGxlcnMgbWF5IG5vdCB3b3JrIHdpdGggdGhlc2UuXG4gICAgICAgIC8vIFNlZSwgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvcHVsbC8xOTEwI2lzc3VlY29tbWVudC0xNDY0NDk1NjE5LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIElmIHRoZSBtYXggYW1vdW50IG9mIGxpc3RlbmVycyBpcyBlcXVhbCB0byB0aGUgZGVmYXVsdCwgaW5jcmVhc2UgaXRcbiAgICAgICAgICAvLyBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGluIG5vZGUgPj0gdjE5LjkuMFxuICAgICAgICAgIGlmICh0eXBlb2YgZ2V0TWF4TGlzdGVuZXJzID09PSAnZnVuY3Rpb24nICYmIGdldE1heExpc3RlbmVycyhzaWduYWwpID09PSBkZWZhdWx0TWF4TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBzZXRNYXhMaXN0ZW5lcnMoMTAwLCBzaWduYWwpXG4gICAgICAgICAgfSBlbHNlIGlmIChnZXRFdmVudExpc3RlbmVycyhzaWduYWwsICdhYm9ydCcpLmxlbmd0aCA+PSBkZWZhdWx0TWF4TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBzZXRNYXhMaXN0ZW5lcnMoMTAwLCBzaWduYWwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgdXRpbC5hZGRBYm9ydExpc3RlbmVyKHNpZ25hbCwgYWJvcnQpXG4gICAgICAgIHJlcXVlc3RGaW5hbGl6ZXIucmVnaXN0ZXIoYWMsIHsgc2lnbmFsLCBhYm9ydCB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMwLiBTZXQgdGhpc1x1MjAxOXMgaGVhZGVycyB0byBhIG5ldyBIZWFkZXJzIG9iamVjdCB3aXRoIHRoaXNcdTIwMTlzIHJlbGV2YW50XG4gICAgLy8gUmVhbG0sIHdob3NlIGhlYWRlciBsaXN0IGlzIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGFuZCBndWFyZCBpc1xuICAgIC8vIFwicmVxdWVzdFwiLlxuICAgIHRoaXNba0hlYWRlcnNdID0gbmV3IEhlYWRlcnMoa0NvbnN0cnVjdClcbiAgICB0aGlzW2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdID0gcmVxdWVzdC5oZWFkZXJzTGlzdFxuICAgIHRoaXNba0hlYWRlcnNdW2tHdWFyZF0gPSAncmVxdWVzdCdcbiAgICB0aGlzW2tIZWFkZXJzXVtrUmVhbG1dID0gdGhpc1trUmVhbG1dXG5cbiAgICAvLyAzMS4gSWYgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcIm5vLWNvcnNcIiwgdGhlbjpcbiAgICBpZiAobW9kZSA9PT0gJ25vLWNvcnMnKSB7XG4gICAgICAvLyAxLiBJZiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgbm90IGEgQ09SUy1zYWZlbGlzdGVkIG1ldGhvZCxcbiAgICAgIC8vIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAoIWNvcnNTYWZlTGlzdGVkTWV0aG9kc1NldC5oYXMocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgYCcke3JlcXVlc3QubWV0aG9kfSBpcyB1bnN1cHBvcnRlZCBpbiBuby1jb3JzIG1vZGUuYFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIFNldCB0aGlzXHUyMDE5cyBoZWFkZXJzXHUyMDE5cyBndWFyZCB0byBcInJlcXVlc3Qtbm8tY29yc1wiLlxuICAgICAgdGhpc1trSGVhZGVyc11ba0d1YXJkXSA9ICdyZXF1ZXN0LW5vLWNvcnMnXG4gICAgfVxuXG4gICAgLy8gMzIuIElmIGluaXQgaXMgbm90IGVtcHR5LCB0aGVuOlxuICAgIGlmIChpbml0SGFzS2V5KSB7XG4gICAgICAvKiogQHR5cGUge0hlYWRlcnNMaXN0fSAqL1xuICAgICAgY29uc3QgaGVhZGVyc0xpc3QgPSB0aGlzW2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdXG4gICAgICAvLyAxLiBMZXQgaGVhZGVycyBiZSBhIGNvcHkgb2YgdGhpc1x1MjAxOXMgaGVhZGVycyBhbmQgaXRzIGFzc29jaWF0ZWQgaGVhZGVyXG4gICAgICAvLyBsaXN0LlxuICAgICAgLy8gMi4gSWYgaW5pdFtcImhlYWRlcnNcIl0gZXhpc3RzLCB0aGVuIHNldCBoZWFkZXJzIHRvIGluaXRbXCJoZWFkZXJzXCJdLlxuICAgICAgY29uc3QgaGVhZGVycyA9IGluaXQuaGVhZGVycyAhPT0gdW5kZWZpbmVkID8gaW5pdC5oZWFkZXJzIDogbmV3IEhlYWRlcnNMaXN0KGhlYWRlcnNMaXN0KVxuXG4gICAgICAvLyAzLiBFbXB0eSB0aGlzXHUyMDE5cyBoZWFkZXJzXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAgIGhlYWRlcnNMaXN0LmNsZWFyKClcblxuICAgICAgLy8gNC4gSWYgaGVhZGVycyBpcyBhIEhlYWRlcnMgb2JqZWN0LCB0aGVuIGZvciBlYWNoIGhlYWRlciBpbiBpdHMgaGVhZGVyXG4gICAgICAvLyBsaXN0LCBhcHBlbmQgaGVhZGVyXHUyMDE5cyBuYW1lL2hlYWRlclx1MjAxOXMgdmFsdWUgdG8gdGhpc1x1MjAxOXMgaGVhZGVycy5cbiAgICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVyc0xpc3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIGhlYWRlcnMpIHtcbiAgICAgICAgICBoZWFkZXJzTGlzdC5hcHBlbmQoa2V5LCB2YWwpXG4gICAgICAgIH1cbiAgICAgICAgLy8gTm90ZTogQ29weSB0aGUgYHNldC1jb29raWVgIG1ldGEtZGF0YS5cbiAgICAgICAgaGVhZGVyc0xpc3QuY29va2llcyA9IGhlYWRlcnMuY29va2llc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gNS4gT3RoZXJ3aXNlLCBmaWxsIHRoaXNcdTIwMTlzIGhlYWRlcnMgd2l0aCBoZWFkZXJzLlxuICAgICAgICBmaWxsSGVhZGVycyh0aGlzW2tIZWFkZXJzXSwgaGVhZGVycylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzMy4gTGV0IGlucHV0Qm9keSBiZSBpbnB1dFx1MjAxOXMgcmVxdWVzdFx1MjAxOXMgYm9keSBpZiBpbnB1dCBpcyBhIFJlcXVlc3RcbiAgICAvLyBvYmplY3Q7IG90aGVyd2lzZSBudWxsLlxuICAgIGNvbnN0IGlucHV0Qm9keSA9IGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCA/IGlucHV0W2tTdGF0ZV0uYm9keSA6IG51bGxcblxuICAgIC8vIDM0LiBJZiBlaXRoZXIgaW5pdFtcImJvZHlcIl0gZXhpc3RzIGFuZCBpcyBub24tbnVsbCBvciBpbnB1dEJvZHkgaXNcbiAgICAvLyBub24tbnVsbCwgYW5kIHJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyBgR0VUYCBvciBgSEVBRGAsIHRoZW4gdGhyb3cgYVxuICAgIC8vIFR5cGVFcnJvci5cbiAgICBpZiAoXG4gICAgICAoaW5pdC5ib2R5ICE9IG51bGwgfHwgaW5wdXRCb2R5ICE9IG51bGwpICYmXG4gICAgICAocmVxdWVzdC5tZXRob2QgPT09ICdHRVQnIHx8IHJlcXVlc3QubWV0aG9kID09PSAnSEVBRCcpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZXF1ZXN0IHdpdGggR0VUL0hFQUQgbWV0aG9kIGNhbm5vdCBoYXZlIGJvZHkuJylcbiAgICB9XG5cbiAgICAvLyAzNS4gTGV0IGluaXRCb2R5IGJlIG51bGwuXG4gICAgbGV0IGluaXRCb2R5ID0gbnVsbFxuXG4gICAgLy8gMzYuIElmIGluaXRbXCJib2R5XCJdIGV4aXN0cyBhbmQgaXMgbm9uLW51bGwsIHRoZW46XG4gICAgaWYgKGluaXQuYm9keSAhPSBudWxsKSB7XG4gICAgICAvLyAxLiBMZXQgQ29udGVudC1UeXBlIGJlIG51bGwuXG4gICAgICAvLyAyLiBTZXQgaW5pdEJvZHkgYW5kIENvbnRlbnQtVHlwZSB0byB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmdcbiAgICAgIC8vIGluaXRbXCJib2R5XCJdLCB3aXRoIGtlZXBhbGl2ZSBzZXQgdG8gcmVxdWVzdFx1MjAxOXMga2VlcGFsaXZlLlxuICAgICAgY29uc3QgW2V4dHJhY3RlZEJvZHksIGNvbnRlbnRUeXBlXSA9IGV4dHJhY3RCb2R5KFxuICAgICAgICBpbml0LmJvZHksXG4gICAgICAgIHJlcXVlc3Qua2VlcGFsaXZlXG4gICAgICApXG4gICAgICBpbml0Qm9keSA9IGV4dHJhY3RlZEJvZHlcblxuICAgICAgLy8gMywgSWYgQ29udGVudC1UeXBlIGlzIG5vbi1udWxsIGFuZCB0aGlzXHUyMDE5cyBoZWFkZXJzXHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzXG4gICAgICAvLyBub3QgY29udGFpbiBgQ29udGVudC1UeXBlYCwgdGhlbiBhcHBlbmQgYENvbnRlbnQtVHlwZWAvQ29udGVudC1UeXBlIHRvXG4gICAgICAvLyB0aGlzXHUyMDE5cyBoZWFkZXJzLlxuICAgICAgaWYgKGNvbnRlbnRUeXBlICYmICF0aGlzW2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdLmNvbnRhaW5zKCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgICB0aGlzW2tIZWFkZXJzXS5hcHBlbmQoJ2NvbnRlbnQtdHlwZScsIGNvbnRlbnRUeXBlKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDM3LiBMZXQgaW5wdXRPckluaXRCb2R5IGJlIGluaXRCb2R5IGlmIGl0IGlzIG5vbi1udWxsOyBvdGhlcndpc2VcbiAgICAvLyBpbnB1dEJvZHkuXG4gICAgY29uc3QgaW5wdXRPckluaXRCb2R5ID0gaW5pdEJvZHkgPz8gaW5wdXRCb2R5XG5cbiAgICAvLyAzOC4gSWYgaW5wdXRPckluaXRCb2R5IGlzIG5vbi1udWxsIGFuZCBpbnB1dE9ySW5pdEJvZHlcdTIwMTlzIHNvdXJjZSBpc1xuICAgIC8vIG51bGwsIHRoZW46XG4gICAgaWYgKGlucHV0T3JJbml0Qm9keSAhPSBudWxsICYmIGlucHV0T3JJbml0Qm9keS5zb3VyY2UgPT0gbnVsbCkge1xuICAgICAgLy8gMS4gSWYgaW5pdEJvZHkgaXMgbm9uLW51bGwgYW5kIGluaXRbXCJkdXBsZXhcIl0gZG9lcyBub3QgZXhpc3QsXG4gICAgICAvLyAgICB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgICAgaWYgKGluaXRCb2R5ICE9IG51bGwgJiYgaW5pdC5kdXBsZXggPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZXF1ZXN0SW5pdDogZHVwbGV4IG9wdGlvbiBpcyByZXF1aXJlZCB3aGVuIHNlbmRpbmcgYSBib2R5LicpXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgbmVpdGhlciBcInNhbWUtb3JpZ2luXCIgbm9yIFwiY29yc1wiLFxuICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmIChyZXF1ZXN0Lm1vZGUgIT09ICdzYW1lLW9yaWdpbicgJiYgcmVxdWVzdC5tb2RlICE9PSAnY29ycycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAnSWYgcmVxdWVzdCBpcyBtYWRlIGZyb20gUmVhZGFibGVTdHJlYW0sIG1vZGUgc2hvdWxkIGJlIFwic2FtZS1vcmlnaW5cIiBvciBcImNvcnNcIidcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBTZXQgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgdXNlLUNPUlMtcHJlZmxpZ2h0IGZsYWcuXG4gICAgICByZXF1ZXN0LnVzZUNPUlNQcmVmbGlnaHRGbGFnID0gdHJ1ZVxuICAgIH1cblxuICAgIC8vIDM5LiBMZXQgZmluYWxCb2R5IGJlIGlucHV0T3JJbml0Qm9keS5cbiAgICBsZXQgZmluYWxCb2R5ID0gaW5wdXRPckluaXRCb2R5XG5cbiAgICAvLyA0MC4gSWYgaW5pdEJvZHkgaXMgbnVsbCBhbmQgaW5wdXRCb2R5IGlzIG5vbi1udWxsLCB0aGVuOlxuICAgIGlmIChpbml0Qm9keSA9PSBudWxsICYmIGlucHV0Qm9keSAhPSBudWxsKSB7XG4gICAgICAvLyAxLiBJZiBpbnB1dCBpcyB1bnVzYWJsZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmICh1dGlsLmlzRGlzdHVyYmVkKGlucHV0Qm9keS5zdHJlYW0pIHx8IGlucHV0Qm9keS5zdHJlYW0ubG9ja2VkKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0Nhbm5vdCBjb25zdHJ1Y3QgYSBSZXF1ZXN0IHdpdGggYSBSZXF1ZXN0IG9iamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4nXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gMi4gU2V0IGZpbmFsQm9keSB0byB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgcHJveHkgZm9yIGlucHV0Qm9keS5cbiAgICAgIGlmICghVHJhbnNmb3JtU3RyZWFtKSB7XG4gICAgICAgIFRyYW5zZm9ybVN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5UcmFuc2Zvcm1TdHJlYW1cbiAgICAgIH1cblxuICAgICAgLy8gaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcmVhZGFibGVzdHJlYW0tY3JlYXRlLWEtcHJveHlcbiAgICAgIGNvbnN0IGlkZW50aXR5VHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpXG4gICAgICBpbnB1dEJvZHkuc3RyZWFtLnBpcGVUaHJvdWdoKGlkZW50aXR5VHJhbnNmb3JtKVxuICAgICAgZmluYWxCb2R5ID0ge1xuICAgICAgICBzb3VyY2U6IGlucHV0Qm9keS5zb3VyY2UsXG4gICAgICAgIGxlbmd0aDogaW5wdXRCb2R5Lmxlbmd0aCxcbiAgICAgICAgc3RyZWFtOiBpZGVudGl0eVRyYW5zZm9ybS5yZWFkYWJsZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDQxLiBTZXQgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgYm9keSB0byBmaW5hbEJvZHkuXG4gICAgdGhpc1trU3RhdGVdLmJvZHkgPSBmaW5hbEJvZHlcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVxdWVzdFx1MjAxOXMgSFRUUCBtZXRob2QsIHdoaWNoIGlzIFwiR0VUXCIgYnkgZGVmYXVsdC5cbiAgZ2V0IG1ldGhvZCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBtZXRob2QgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgbWV0aG9kLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ubWV0aG9kXG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBVUkwgb2YgcmVxdWVzdCBhcyBhIHN0cmluZy5cbiAgZ2V0IHVybCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSB1cmwgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgVVJMLCBzZXJpYWxpemVkLlxuICAgIHJldHVybiBVUkxTZXJpYWxpemVyKHRoaXNba1N0YXRlXS51cmwpXG4gIH1cblxuICAvLyBSZXR1cm5zIGEgSGVhZGVycyBvYmplY3QgY29uc2lzdGluZyBvZiB0aGUgaGVhZGVycyBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdC5cbiAgLy8gTm90ZSB0aGF0IGhlYWRlcnMgYWRkZWQgaW4gdGhlIG5ldHdvcmsgbGF5ZXIgYnkgdGhlIHVzZXIgYWdlbnQgd2lsbCBub3RcbiAgLy8gYmUgYWNjb3VudGVkIGZvciBpbiB0aGlzIG9iamVjdCwgZS5nLiwgdGhlIFwiSG9zdFwiIGhlYWRlci5cbiAgZ2V0IGhlYWRlcnMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgaGVhZGVycyBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyBoZWFkZXJzLlxuICAgIHJldHVybiB0aGlzW2tIZWFkZXJzXVxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUga2luZCBvZiByZXNvdXJjZSByZXF1ZXN0ZWQgYnkgcmVxdWVzdCwgZS5nLiwgXCJkb2N1bWVudFwiXG4gIC8vIG9yIFwic2NyaXB0XCIuXG4gIGdldCBkZXN0aW5hdGlvbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBkZXN0aW5hdGlvbiBnZXR0ZXIgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBkZXN0aW5hdGlvbi5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmRlc3RpbmF0aW9uXG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSByZWZlcnJlciBvZiByZXF1ZXN0LiBJdHMgdmFsdWUgY2FuIGJlIGEgc2FtZS1vcmlnaW4gVVJMIGlmXG4gIC8vIGV4cGxpY2l0bHkgc2V0IGluIGluaXQsIHRoZSBlbXB0eSBzdHJpbmcgdG8gaW5kaWNhdGUgbm8gcmVmZXJyZXIsIGFuZFxuICAvLyBcImFib3V0OmNsaWVudFwiIHdoZW4gZGVmYXVsdGluZyB0byB0aGUgZ2xvYmFsXHUyMDE5cyBkZWZhdWx0LiBUaGlzIGlzIHVzZWRcbiAgLy8gZHVyaW5nIGZldGNoaW5nIHRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgdGhlIGBSZWZlcmVyYCBoZWFkZXIgb2YgdGhlXG4gIC8vIHJlcXVlc3QgYmVpbmcgbWFkZS5cbiAgZ2V0IHJlZmVycmVyICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gMS4gSWYgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgaXMgXCJuby1yZWZlcnJlclwiLCB0aGVuIHJldHVybiB0aGVcbiAgICAvLyBlbXB0eSBzdHJpbmcuXG4gICAgaWYgKHRoaXNba1N0YXRlXS5yZWZlcnJlciA9PT0gJ25vLXJlZmVycmVyJykge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuXG4gICAgLy8gMi4gSWYgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgaXMgXCJjbGllbnRcIiwgdGhlbiByZXR1cm5cbiAgICAvLyBcImFib3V0OmNsaWVudFwiLlxuICAgIGlmICh0aGlzW2tTdGF0ZV0ucmVmZXJyZXIgPT09ICdjbGllbnQnKSB7XG4gICAgICByZXR1cm4gJ2Fib3V0OmNsaWVudCdcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIsIHNlcmlhbGl6ZWQuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5yZWZlcnJlci50b1N0cmluZygpXG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSByZWZlcnJlciBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QuXG4gIC8vIFRoaXMgaXMgdXNlZCBkdXJpbmcgZmV0Y2hpbmcgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIHJlcXVlc3RcdTIwMTlzXG4gIC8vIHJlZmVycmVyLlxuICBnZXQgcmVmZXJyZXJQb2xpY3kgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgcmVmZXJyZXJQb2xpY3kgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5LlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ucmVmZXJyZXJQb2xpY3lcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIG1vZGUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QsIHdoaWNoIGlzIGEgc3RyaW5nIGluZGljYXRpbmdcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCB3aWxsIHVzZSBDT1JTLCBvciB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8gc2FtZS1vcmlnaW5cbiAgLy8gVVJMcy5cbiAgZ2V0IG1vZGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgbW9kZSBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBtb2RlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ubW9kZVxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgY3JlZGVudGlhbHMgbW9kZSBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdCxcbiAgLy8gd2hpY2ggaXMgYSBzdHJpbmcgaW5kaWNhdGluZyB3aGV0aGVyIGNyZWRlbnRpYWxzIHdpbGwgYmUgc2VudCB3aXRoIHRoZVxuICAvLyByZXF1ZXN0IGFsd2F5cywgbmV2ZXIsIG9yIG9ubHkgd2hlbiBzZW50IHRvIGEgc2FtZS1vcmlnaW4gVVJMLlxuICBnZXQgY3JlZGVudGlhbHMgKCkge1xuICAgIC8vIFRoZSBjcmVkZW50aWFscyBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBjcmVkZW50aWFscyBtb2RlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uY3JlZGVudGlhbHNcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGNhY2hlIG1vZGUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QsXG4gIC8vIHdoaWNoIGlzIGEgc3RyaW5nIGluZGljYXRpbmcgaG93IHRoZSByZXF1ZXN0IHdpbGxcbiAgLy8gaW50ZXJhY3Qgd2l0aCB0aGUgYnJvd3Nlclx1MjAxOXMgY2FjaGUgd2hlbiBmZXRjaGluZy5cbiAgZ2V0IGNhY2hlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIGNhY2hlIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5jYWNoZVxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgcmVkaXJlY3QgbW9kZSBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdCxcbiAgLy8gd2hpY2ggaXMgYSBzdHJpbmcgaW5kaWNhdGluZyBob3cgcmVkaXJlY3RzIGZvciB0aGVcbiAgLy8gcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQgZHVyaW5nIGZldGNoaW5nLiBBIHJlcXVlc3RcbiAgLy8gd2lsbCBmb2xsb3cgcmVkaXJlY3RzIGJ5IGRlZmF1bHQuXG4gIGdldCByZWRpcmVjdCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSByZWRpcmVjdCBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBtb2RlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ucmVkaXJlY3RcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVxdWVzdFx1MjAxOXMgc3VicmVzb3VyY2UgaW50ZWdyaXR5IG1ldGFkYXRhLCB3aGljaCBpcyBhXG4gIC8vIGNyeXB0b2dyYXBoaWMgaGFzaCBvZiB0aGUgcmVzb3VyY2UgYmVpbmcgZmV0Y2hlZC4gSXRzIHZhbHVlXG4gIC8vIGNvbnNpc3RzIG9mIG11bHRpcGxlIGhhc2hlcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gW1NSSV1cbiAgZ2V0IGludGVncml0eSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBpbnRlZ3JpdHkgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgaW50ZWdyaXR5XG4gICAgLy8gbWV0YWRhdGEuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5pbnRlZ3JpdHlcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgcmVxdWVzdCBjYW4gb3V0bGl2ZSB0aGVcbiAgLy8gZ2xvYmFsIGluIHdoaWNoIGl0IHdhcyBjcmVhdGVkLlxuICBnZXQga2VlcGFsaXZlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIGtlZXBhbGl2ZSBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBrZWVwYWxpdmUuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5rZWVwYWxpdmVcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgcmVxdWVzdCBpcyBmb3IgYSByZWxvYWRcbiAgLy8gbmF2aWdhdGlvbi5cbiAgZ2V0IGlzUmVsb2FkTmF2aWdhdGlvbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBpc1JlbG9hZE5hdmlnYXRpb24gZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdHJ1ZSBpZiB0aGlzXHUyMDE5c1xuICAgIC8vIHJlcXVlc3RcdTIwMTlzIHJlbG9hZC1uYXZpZ2F0aW9uIGZsYWcgaXMgc2V0OyBvdGhlcndpc2UgZmFsc2UuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5yZWxvYWROYXZpZ2F0aW9uXG4gIH1cblxuICAvLyBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHJlcXVlc3QgaXMgZm9yIGEgaGlzdG9yeVxuICAvLyBuYXZpZ2F0aW9uIChhLmsuYS4gYmFjay1mb3dhcmQgbmF2aWdhdGlvbikuXG4gIGdldCBpc0hpc3RvcnlOYXZpZ2F0aW9uICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIGlzSGlzdG9yeU5hdmlnYXRpb24gZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdHJ1ZSBpZiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5c1xuICAgIC8vIGhpc3RvcnktbmF2aWdhdGlvbiBmbGFnIGlzIHNldDsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uaGlzdG9yeU5hdmlnYXRpb25cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIHNpZ25hbCBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdCwgd2hpY2ggaXMgYW4gQWJvcnRTaWduYWxcbiAgLy8gb2JqZWN0IGluZGljYXRpbmcgd2hldGhlciBvciBub3QgcmVxdWVzdCBoYXMgYmVlbiBhYm9ydGVkLCBhbmQgaXRzXG4gIC8vIGFib3J0IGV2ZW50IGhhbmRsZXIuXG4gIGdldCBzaWduYWwgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgc2lnbmFsIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHNpZ25hbC5cbiAgICByZXR1cm4gdGhpc1trU2lnbmFsXVxuICB9XG5cbiAgZ2V0IGJvZHkgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJvZHkgPyB0aGlzW2tTdGF0ZV0uYm9keS5zdHJlYW0gOiBudWxsXG4gIH1cblxuICBnZXQgYm9keVVzZWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICByZXR1cm4gISF0aGlzW2tTdGF0ZV0uYm9keSAmJiB1dGlsLmlzRGlzdHVyYmVkKHRoaXNba1N0YXRlXS5ib2R5LnN0cmVhbSlcbiAgfVxuXG4gIGdldCBkdXBsZXggKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICByZXR1cm4gJ2hhbGYnXG4gIH1cblxuICAvLyBSZXR1cm5zIGEgY2xvbmUgb2YgcmVxdWVzdC5cbiAgY2xvbmUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyAxLiBJZiB0aGlzIGlzIHVudXNhYmxlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh0aGlzLmJvZHlVc2VkIHx8IHRoaXMuYm9keT8ubG9ja2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnVzYWJsZScpXG4gICAgfVxuXG4gICAgLy8gMi4gTGV0IGNsb25lZFJlcXVlc3QgYmUgdGhlIHJlc3VsdCBvZiBjbG9uaW5nIHRoaXNcdTIwMTlzIHJlcXVlc3QuXG4gICAgY29uc3QgY2xvbmVkUmVxdWVzdCA9IGNsb25lUmVxdWVzdCh0aGlzW2tTdGF0ZV0pXG5cbiAgICAvLyAzLiBMZXQgY2xvbmVkUmVxdWVzdE9iamVjdCBiZSB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgUmVxdWVzdCBvYmplY3QsXG4gICAgLy8gZ2l2ZW4gY2xvbmVkUmVxdWVzdCwgdGhpc1x1MjAxOXMgaGVhZGVyc1x1MjAxOXMgZ3VhcmQsIGFuZCB0aGlzXHUyMDE5cyByZWxldmFudCBSZWFsbS5cbiAgICBjb25zdCBjbG9uZWRSZXF1ZXN0T2JqZWN0ID0gbmV3IFJlcXVlc3Qoa0NvbnN0cnVjdClcbiAgICBjbG9uZWRSZXF1ZXN0T2JqZWN0W2tTdGF0ZV0gPSBjbG9uZWRSZXF1ZXN0XG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrUmVhbG1dID0gdGhpc1trUmVhbG1dXG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrSGVhZGVyc10gPSBuZXcgSGVhZGVycyhrQ29uc3RydWN0KVxuICAgIGNsb25lZFJlcXVlc3RPYmplY3Rba0hlYWRlcnNdW2tIZWFkZXJzTGlzdF0gPSBjbG9uZWRSZXF1ZXN0LmhlYWRlcnNMaXN0XG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9IHRoaXNba0hlYWRlcnNdW2tHdWFyZF1cbiAgICBjbG9uZWRSZXF1ZXN0T2JqZWN0W2tIZWFkZXJzXVtrUmVhbG1dID0gdGhpc1trSGVhZGVyc11ba1JlYWxtXVxuXG4gICAgLy8gNC4gTWFrZSBjbG9uZWRSZXF1ZXN0T2JqZWN0XHUyMDE5cyBzaWduYWwgZm9sbG93IHRoaXNcdTIwMTlzIHNpZ25hbC5cbiAgICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGlmICh0aGlzLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBhYy5hYm9ydCh0aGlzLnNpZ25hbC5yZWFzb24pXG4gICAgfSBlbHNlIHtcbiAgICAgIHV0aWwuYWRkQWJvcnRMaXN0ZW5lcihcbiAgICAgICAgdGhpcy5zaWduYWwsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBhYy5hYm9ydCh0aGlzLnNpZ25hbC5yZWFzb24pXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrU2lnbmFsXSA9IGFjLnNpZ25hbFxuXG4gICAgLy8gNC4gUmV0dXJuIGNsb25lZFJlcXVlc3RPYmplY3QuXG4gICAgcmV0dXJuIGNsb25lZFJlcXVlc3RPYmplY3RcbiAgfVxufVxuXG5taXhpbkJvZHkoUmVxdWVzdClcblxuZnVuY3Rpb24gbWFrZVJlcXVlc3QgKGluaXQpIHtcbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3RzXG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBsb2NhbFVSTHNPbmx5OiBmYWxzZSxcbiAgICB1bnNhZmVSZXF1ZXN0OiBmYWxzZSxcbiAgICBib2R5OiBudWxsLFxuICAgIGNsaWVudDogbnVsbCxcbiAgICByZXNlcnZlZENsaWVudDogbnVsbCxcbiAgICByZXBsYWNlc0NsaWVudElkOiAnJyxcbiAgICB3aW5kb3c6ICdjbGllbnQnLFxuICAgIGtlZXBhbGl2ZTogZmFsc2UsXG4gICAgc2VydmljZVdvcmtlcnM6ICdhbGwnLFxuICAgIGluaXRpYXRvcjogJycsXG4gICAgZGVzdGluYXRpb246ICcnLFxuICAgIHByaW9yaXR5OiBudWxsLFxuICAgIG9yaWdpbjogJ2NsaWVudCcsXG4gICAgcG9saWN5Q29udGFpbmVyOiAnY2xpZW50JyxcbiAgICByZWZlcnJlcjogJ2NsaWVudCcsXG4gICAgcmVmZXJyZXJQb2xpY3k6ICcnLFxuICAgIG1vZGU6ICduby1jb3JzJyxcbiAgICB1c2VDT1JTUHJlZmxpZ2h0RmxhZzogZmFsc2UsXG4gICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gICAgdXNlQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIGNhY2hlOiAnZGVmYXVsdCcsXG4gICAgcmVkaXJlY3Q6ICdmb2xsb3cnLFxuICAgIGludGVncml0eTogJycsXG4gICAgY3J5cHRvR3JhcGhpY3NOb25jZU1ldGFkYXRhOiAnJyxcbiAgICBwYXJzZXJNZXRhZGF0YTogJycsXG4gICAgcmVsb2FkTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgaGlzdG9yeU5hdmlnYXRpb246IGZhbHNlLFxuICAgIHVzZXJBY3RpdmF0aW9uOiBmYWxzZSxcbiAgICB0YWludGVkT3JpZ2luOiBmYWxzZSxcbiAgICByZWRpcmVjdENvdW50OiAwLFxuICAgIHJlc3BvbnNlVGFpbnRpbmc6ICdiYXNpYycsXG4gICAgcHJldmVudE5vQ2FjaGVDYWNoZUNvbnRyb2xIZWFkZXJNb2RpZmljYXRpb246IGZhbHNlLFxuICAgIGRvbmU6IGZhbHNlLFxuICAgIHRpbWluZ0FsbG93RmFpbGVkOiBmYWxzZSxcbiAgICAuLi5pbml0LFxuICAgIGhlYWRlcnNMaXN0OiBpbml0LmhlYWRlcnNMaXN0XG4gICAgICA/IG5ldyBIZWFkZXJzTGlzdChpbml0LmhlYWRlcnNMaXN0KVxuICAgICAgOiBuZXcgSGVhZGVyc0xpc3QoKVxuICB9XG4gIHJlcXVlc3QudXJsID0gcmVxdWVzdC51cmxMaXN0WzBdXG4gIHJldHVybiByZXF1ZXN0XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlcXVlc3QtY2xvbmVcbmZ1bmN0aW9uIGNsb25lUmVxdWVzdCAocmVxdWVzdCkge1xuICAvLyBUbyBjbG9uZSBhIHJlcXVlc3QgcmVxdWVzdCwgcnVuIHRoZXNlIHN0ZXBzOlxuXG4gIC8vIDEuIExldCBuZXdSZXF1ZXN0IGJlIGEgY29weSBvZiByZXF1ZXN0LCBleGNlcHQgZm9yIGl0cyBib2R5LlxuICBjb25zdCBuZXdSZXF1ZXN0ID0gbWFrZVJlcXVlc3QoeyAuLi5yZXF1ZXN0LCBib2R5OiBudWxsIH0pXG5cbiAgLy8gMi4gSWYgcmVxdWVzdFx1MjAxOXMgYm9keSBpcyBub24tbnVsbCwgc2V0IG5ld1JlcXVlc3RcdTIwMTlzIGJvZHkgdG8gdGhlXG4gIC8vIHJlc3VsdCBvZiBjbG9uaW5nIHJlcXVlc3RcdTIwMTlzIGJvZHkuXG4gIGlmIChyZXF1ZXN0LmJvZHkgIT0gbnVsbCkge1xuICAgIG5ld1JlcXVlc3QuYm9keSA9IGNsb25lQm9keShyZXF1ZXN0LmJvZHkpXG4gIH1cblxuICAvLyAzLiBSZXR1cm4gbmV3UmVxdWVzdC5cbiAgcmV0dXJuIG5ld1JlcXVlc3Rcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUmVxdWVzdC5wcm90b3R5cGUsIHtcbiAgbWV0aG9kOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICB1cmw6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGhlYWRlcnM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlZGlyZWN0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjbG9uZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgc2lnbmFsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBkdXBsZXg6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGRlc3RpbmF0aW9uOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBib2R5OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBib2R5VXNlZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgaXNIaXN0b3J5TmF2aWdhdGlvbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgaXNSZWxvYWROYXZpZ2F0aW9uOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBrZWVwYWxpdmU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGludGVncml0eToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgY2FjaGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGNyZWRlbnRpYWxzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBhdHRyaWJ1dGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlZmVycmVyUG9saWN5OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWZlcnJlcjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbW9kZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ1JlcXVlc3QnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9XG59KVxuXG53ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0ID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihcbiAgUmVxdWVzdFxuKVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcmVxdWVzdGluZm9cbndlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvID0gZnVuY3Rpb24gKFYpIHtcbiAgaWYgKHR5cGVvZiBWID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcoVilcbiAgfVxuXG4gIGlmIChWIGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0KFYpXG4gIH1cblxuICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKFYpXG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLkFib3J0U2lnbmFsID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihcbiAgQWJvcnRTaWduYWxcbilcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3Rpbml0XG53ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGtleTogJ21ldGhvZCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdoZWFkZXJzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkhlYWRlcnNJbml0XG4gIH0sXG4gIHtcbiAgICBrZXk6ICdib2R5JyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcihcbiAgICAgIHdlYmlkbC5jb252ZXJ0ZXJzLkJvZHlJbml0XG4gICAgKVxuICB9LFxuICB7XG4gICAga2V5OiAncmVmZXJyZXInLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdyZWZlcnJlclBvbGljeScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeVxuICAgIGFsbG93ZWRWYWx1ZXM6IHJlZmVycmVyUG9saWN5XG4gIH0sXG4gIHtcbiAgICBrZXk6ICdtb2RlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXF1ZXN0LW1vZGVcbiAgICBhbGxvd2VkVmFsdWVzOiByZXF1ZXN0TW9kZVxuICB9LFxuICB7XG4gICAga2V5OiAnY3JlZGVudGlhbHMnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0Y3JlZGVudGlhbHNcbiAgICBhbGxvd2VkVmFsdWVzOiByZXF1ZXN0Q3JlZGVudGlhbHNcbiAgfSxcbiAge1xuICAgIGtleTogJ2NhY2hlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcmVxdWVzdGNhY2hlXG4gICAgYWxsb3dlZFZhbHVlczogcmVxdWVzdENhY2hlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdyZWRpcmVjdCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3RyZWRpcmVjdFxuICAgIGFsbG93ZWRWYWx1ZXM6IHJlcXVlc3RSZWRpcmVjdFxuICB9LFxuICB7XG4gICAga2V5OiAnaW50ZWdyaXR5JyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZ1xuICB9LFxuICB7XG4gICAga2V5OiAna2VlcGFsaXZlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW5cbiAgfSxcbiAge1xuICAgIGtleTogJ3NpZ25hbCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIoXG4gICAgICAoc2lnbmFsKSA9PiB3ZWJpZGwuY29udmVydGVycy5BYm9ydFNpZ25hbChcbiAgICAgICAgc2lnbmFsLFxuICAgICAgICB7IHN0cmljdDogZmFsc2UgfVxuICAgICAgKVxuICAgIClcbiAgfSxcbiAge1xuICAgIGtleTogJ3dpbmRvdycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5hbnlcbiAgfSxcbiAge1xuICAgIGtleTogJ2R1cGxleCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgYWxsb3dlZFZhbHVlczogcmVxdWVzdER1cGxleFxuICB9XG5dKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgUmVxdWVzdCwgbWFrZVJlcXVlc3QgfVxuIiwgIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9FdGhhbi1BcnJvd29vZC91bmRpY2ktZmV0Y2hcblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHtcbiAgUmVzcG9uc2UsXG4gIG1ha2VOZXR3b3JrRXJyb3IsXG4gIG1ha2VBcHByb3ByaWF0ZU5ldHdvcmtFcnJvcixcbiAgZmlsdGVyUmVzcG9uc2UsXG4gIG1ha2VSZXNwb25zZVxufSA9IHJlcXVpcmUoJy4vcmVzcG9uc2UnKVxuY29uc3QgeyBIZWFkZXJzIH0gPSByZXF1aXJlKCcuL2hlYWRlcnMnKVxuY29uc3QgeyBSZXF1ZXN0LCBtYWtlUmVxdWVzdCB9ID0gcmVxdWlyZSgnLi9yZXF1ZXN0JylcbmNvbnN0IHpsaWIgPSByZXF1aXJlKCd6bGliJylcbmNvbnN0IHtcbiAgYnl0ZXNNYXRjaCxcbiAgbWFrZVBvbGljeUNvbnRhaW5lcixcbiAgY2xvbmVQb2xpY3lDb250YWluZXIsXG4gIHJlcXVlc3RCYWRQb3J0LFxuICBUQU9DaGVjayxcbiAgYXBwZW5kUmVxdWVzdE9yaWdpbkhlYWRlcixcbiAgcmVzcG9uc2VMb2NhdGlvblVSTCxcbiAgcmVxdWVzdEN1cnJlbnRVUkwsXG4gIHNldFJlcXVlc3RSZWZlcnJlclBvbGljeU9uUmVkaXJlY3QsXG4gIHRyeVVwZ3JhZGVSZXF1ZXN0VG9BUG90ZW50aWFsbHlUcnVzdHdvcnRoeVVSTCxcbiAgY3JlYXRlT3BhcXVlVGltaW5nSW5mbyxcbiAgYXBwZW5kRmV0Y2hNZXRhZGF0YSxcbiAgY29yc0NoZWNrLFxuICBjcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2hlY2ssXG4gIGRldGVybWluZVJlcXVlc3RzUmVmZXJyZXIsXG4gIGNvYXJzZW5lZFNoYXJlZEN1cnJlbnRUaW1lLFxuICBjcmVhdGVEZWZlcnJlZFByb21pc2UsXG4gIGlzQmxvYkxpa2UsXG4gIHNhbWVPcmlnaW4sXG4gIGlzQ2FuY2VsbGVkLFxuICBpc0Fib3J0ZWQsXG4gIGlzRXJyb3JMaWtlLFxuICBmdWxseVJlYWRCb2R5LFxuICByZWFkYWJsZVN0cmVhbUNsb3NlLFxuICBpc29tb3JwaGljRW5jb2RlLFxuICB1cmxJc0xvY2FsLFxuICB1cmxJc0h0dHBIdHRwc1NjaGVtZSxcbiAgdXJsSGFzSHR0cHNTY2hlbWVcbn0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBrU3RhdGUsIGtIZWFkZXJzLCBrR3VhcmQsIGtSZWFsbSB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IHNhZmVseUV4dHJhY3RCb2R5IH0gPSByZXF1aXJlKCcuL2JvZHknKVxuY29uc3Qge1xuICByZWRpcmVjdFN0YXR1c1NldCxcbiAgbnVsbEJvZHlTdGF0dXMsXG4gIHNhZmVNZXRob2RzU2V0LFxuICByZXF1ZXN0Qm9keUhlYWRlcixcbiAgc3VicmVzb3VyY2VTZXQsXG4gIERPTUV4Y2VwdGlvblxufSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsga0hlYWRlcnNMaXN0IH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgRUUgPSByZXF1aXJlKCdldmVudHMnKVxuY29uc3QgeyBSZWFkYWJsZSwgcGlwZWxpbmUgfSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCB7IGFkZEFib3J0TGlzdGVuZXIsIGlzRXJyb3JlZCwgaXNSZWFkYWJsZSwgbm9kZU1ham9yLCBub2RlTWlub3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGRhdGFVUkxQcm9jZXNzb3IsIHNlcmlhbGl6ZUFNaW1lVHlwZSB9ID0gcmVxdWlyZSgnLi9kYXRhVVJMJylcbmNvbnN0IHsgVHJhbnNmb3JtU3RyZWFtIH0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJylcbmNvbnN0IHsgZ2V0R2xvYmFsRGlzcGF0Y2hlciB9ID0gcmVxdWlyZSgnLi4vZ2xvYmFsJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCB7IFNUQVRVU19DT0RFUyB9ID0gcmVxdWlyZSgnaHR0cCcpXG5jb25zdCBHRVRfT1JfSEVBRCA9IFsnR0VUJywgJ0hFQUQnXVxuXG4vKiogQHR5cGUge2ltcG9ydCgnYnVmZmVyJykucmVzb2x2ZU9iamVjdFVSTH0gKi9cbmxldCByZXNvbHZlT2JqZWN0VVJMXG5sZXQgUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtXG5cbmNsYXNzIEZldGNoIGV4dGVuZHMgRUUge1xuICBjb25zdHJ1Y3RvciAoZGlzcGF0Y2hlcikge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXJcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgdGhpcy5kdW1wID0gZmFsc2VcbiAgICB0aGlzLnN0YXRlID0gJ29uZ29pbmcnXG4gICAgLy8gMiB0ZXJtaW5hdGVkIGxpc3RlbmVycyBnZXQgYWRkZWQgcGVyIHJlcXVlc3QsXG4gICAgLy8gYnV0IG9ubHkgMSBnZXRzIHJlbW92ZWQuIElmIHRoZXJlIGFyZSAyMCByZWRpcmVjdHMsXG4gICAgLy8gMjEgbGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8xNzExXG4gICAgLy8gVE9ETyAoZml4KTogRmluZCBhbmQgZml4IHJvb3QgY2F1c2UgZm9yIGxlYWtlZCBsaXN0ZW5lci5cbiAgICB0aGlzLnNldE1heExpc3RlbmVycygyMSlcbiAgfVxuXG4gIHRlcm1pbmF0ZSAocmVhc29uKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvbmdvaW5nJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICd0ZXJtaW5hdGVkJ1xuICAgIHRoaXMuY29ubmVjdGlvbj8uZGVzdHJveShyZWFzb24pXG4gICAgdGhpcy5lbWl0KCd0ZXJtaW5hdGVkJywgcmVhc29uKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZldGNoLWNvbnRyb2xsZXItYWJvcnRcbiAgYWJvcnQgKGVycm9yKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvbmdvaW5nJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gMS4gU2V0IGNvbnRyb2xsZXJcdTIwMTlzIHN0YXRlIHRvIFwiYWJvcnRlZFwiLlxuICAgIHRoaXMuc3RhdGUgPSAnYWJvcnRlZCdcblxuICAgIC8vIDIuIExldCBmYWxsYmFja0Vycm9yIGJlIGFuIFwiQWJvcnRFcnJvclwiIERPTUV4Y2VwdGlvbi5cbiAgICAvLyAzLiBTZXQgZXJyb3IgdG8gZmFsbGJhY2tFcnJvciBpZiBpdCBpcyBub3QgZ2l2ZW4uXG4gICAgaWYgKCFlcnJvcikge1xuICAgICAgZXJyb3IgPSBuZXcgRE9NRXhjZXB0aW9uKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkLicsICdBYm9ydEVycm9yJylcbiAgICB9XG5cbiAgICAvLyA0LiBMZXQgc2VyaWFsaXplZEVycm9yIGJlIFN0cnVjdHVyZWRTZXJpYWxpemUoZXJyb3IpLlxuICAgIC8vICAgIElmIHRoYXQgdGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBpdCwgYW5kIGxldFxuICAgIC8vICAgIHNlcmlhbGl6ZWRFcnJvciBiZSBTdHJ1Y3R1cmVkU2VyaWFsaXplKGZhbGxiYWNrRXJyb3IpLlxuXG4gICAgLy8gNS4gU2V0IGNvbnRyb2xsZXJcdTIwMTlzIHNlcmlhbGl6ZWQgYWJvcnQgcmVhc29uIHRvIHNlcmlhbGl6ZWRFcnJvci5cbiAgICB0aGlzLnNlcmlhbGl6ZWRBYm9ydFJlYXNvbiA9IGVycm9yXG5cbiAgICB0aGlzLmNvbm5lY3Rpb24/LmRlc3Ryb3koZXJyb3IpXG4gICAgdGhpcy5lbWl0KCd0ZXJtaW5hdGVkJywgZXJyb3IpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZldGNoLW1ldGhvZFxuZnVuY3Rpb24gZmV0Y2ggKGlucHV0LCBpbml0ID0ge30pIHtcbiAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ2dsb2JhbFRoaXMuZmV0Y2gnIH0pXG5cbiAgLy8gMS4gTGV0IHAgYmUgYSBuZXcgcHJvbWlzZS5cbiAgY29uc3QgcCA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZSgpXG5cbiAgLy8gMi4gTGV0IHJlcXVlc3RPYmplY3QgYmUgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgaW5pdGlhbCB2YWx1ZSBvZlxuICAvLyBSZXF1ZXN0IGFzIGNvbnN0cnVjdG9yIHdpdGggaW5wdXQgYW5kIGluaXQgYXMgYXJndW1lbnRzLiBJZiB0aGlzIHRocm93c1xuICAvLyBhbiBleGNlcHRpb24sIHJlamVjdCBwIHdpdGggaXQgYW5kIHJldHVybiBwLlxuICBsZXQgcmVxdWVzdE9iamVjdFxuXG4gIHRyeSB7XG4gICAgcmVxdWVzdE9iamVjdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuICB9IGNhdGNoIChlKSB7XG4gICAgcC5yZWplY3QoZSlcbiAgICByZXR1cm4gcC5wcm9taXNlXG4gIH1cblxuICAvLyAzLiBMZXQgcmVxdWVzdCBiZSByZXF1ZXN0T2JqZWN0XHUyMDE5cyByZXF1ZXN0LlxuICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdE9iamVjdFtrU3RhdGVdXG5cbiAgLy8gNC4gSWYgcmVxdWVzdE9iamVjdFx1MjAxOXMgc2lnbmFsXHUyMDE5cyBhYm9ydGVkIGZsYWcgaXMgc2V0LCB0aGVuOlxuICBpZiAocmVxdWVzdE9iamVjdC5zaWduYWwuYWJvcnRlZCkge1xuICAgIC8vIDEuIEFib3J0IHRoZSBmZXRjaCgpIGNhbGwgd2l0aCBwLCByZXF1ZXN0LCBudWxsLCBhbmRcbiAgICAvLyAgICByZXF1ZXN0T2JqZWN0XHUyMDE5cyBzaWduYWxcdTIwMTlzIGFib3J0IHJlYXNvbi5cbiAgICBhYm9ydEZldGNoKHAsIHJlcXVlc3QsIG51bGwsIHJlcXVlc3RPYmplY3Quc2lnbmFsLnJlYXNvbilcblxuICAgIC8vIDIuIFJldHVybiBwLlxuICAgIHJldHVybiBwLnByb21pc2VcbiAgfVxuXG4gIC8vIDUuIExldCBnbG9iYWxPYmplY3QgYmUgcmVxdWVzdFx1MjAxOXMgY2xpZW50XHUyMDE5cyBnbG9iYWwgb2JqZWN0LlxuICBjb25zdCBnbG9iYWxPYmplY3QgPSByZXF1ZXN0LmNsaWVudC5nbG9iYWxPYmplY3RcblxuICAvLyA2LiBJZiBnbG9iYWxPYmplY3QgaXMgYSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgb2JqZWN0LCB0aGVuIHNldFxuICAvLyByZXF1ZXN0XHUyMDE5cyBzZXJ2aWNlLXdvcmtlcnMgbW9kZSB0byBcIm5vbmVcIi5cbiAgaWYgKGdsb2JhbE9iamVjdD8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUnKSB7XG4gICAgcmVxdWVzdC5zZXJ2aWNlV29ya2VycyA9ICdub25lJ1xuICB9XG5cbiAgLy8gNy4gTGV0IHJlc3BvbnNlT2JqZWN0IGJlIG51bGwuXG4gIGxldCByZXNwb25zZU9iamVjdCA9IG51bGxcblxuICAvLyA4LiBMZXQgcmVsZXZhbnRSZWFsbSBiZSB0aGlzXHUyMDE5cyByZWxldmFudCBSZWFsbS5cbiAgY29uc3QgcmVsZXZhbnRSZWFsbSA9IG51bGxcblxuICAvLyA5LiBMZXQgbG9jYWxseUFib3J0ZWQgYmUgZmFsc2UuXG4gIGxldCBsb2NhbGx5QWJvcnRlZCA9IGZhbHNlXG5cbiAgLy8gMTAuIExldCBjb250cm9sbGVyIGJlIG51bGwuXG4gIGxldCBjb250cm9sbGVyID0gbnVsbFxuXG4gIC8vIDExLiBBZGQgdGhlIGZvbGxvd2luZyBhYm9ydCBzdGVwcyB0byByZXF1ZXN0T2JqZWN0XHUyMDE5cyBzaWduYWw6XG4gIGFkZEFib3J0TGlzdGVuZXIoXG4gICAgcmVxdWVzdE9iamVjdC5zaWduYWwsXG4gICAgKCkgPT4ge1xuICAgICAgLy8gMS4gU2V0IGxvY2FsbHlBYm9ydGVkIHRvIHRydWUuXG4gICAgICBsb2NhbGx5QWJvcnRlZCA9IHRydWVcblxuICAgICAgLy8gMi4gQXNzZXJ0OiBjb250cm9sbGVyIGlzIG5vbi1udWxsLlxuICAgICAgYXNzZXJ0KGNvbnRyb2xsZXIgIT0gbnVsbClcblxuICAgICAgLy8gMy4gQWJvcnQgY29udHJvbGxlciB3aXRoIHJlcXVlc3RPYmplY3RcdTIwMTlzIHNpZ25hbFx1MjAxOXMgYWJvcnQgcmVhc29uLlxuICAgICAgY29udHJvbGxlci5hYm9ydChyZXF1ZXN0T2JqZWN0LnNpZ25hbC5yZWFzb24pXG5cbiAgICAgIC8vIDQuIEFib3J0IHRoZSBmZXRjaCgpIGNhbGwgd2l0aCBwLCByZXF1ZXN0LCByZXNwb25zZU9iamVjdCxcbiAgICAgIC8vICAgIGFuZCByZXF1ZXN0T2JqZWN0XHUyMDE5cyBzaWduYWxcdTIwMTlzIGFib3J0IHJlYXNvbi5cbiAgICAgIGFib3J0RmV0Y2gocCwgcmVxdWVzdCwgcmVzcG9uc2VPYmplY3QsIHJlcXVlc3RPYmplY3Quc2lnbmFsLnJlYXNvbilcbiAgICB9XG4gIClcblxuICAvLyAxMi4gTGV0IGhhbmRsZUZldGNoRG9uZSBnaXZlbiByZXNwb25zZSByZXNwb25zZSBiZSB0byBmaW5hbGl6ZSBhbmRcbiAgLy8gcmVwb3J0IHRpbWluZyB3aXRoIHJlc3BvbnNlLCBnbG9iYWxPYmplY3QsIGFuZCBcImZldGNoXCIuXG4gIGNvbnN0IGhhbmRsZUZldGNoRG9uZSA9IChyZXNwb25zZSkgPT5cbiAgICBmaW5hbGl6ZUFuZFJlcG9ydFRpbWluZyhyZXNwb25zZSwgJ2ZldGNoJylcblxuICAvLyAxMy4gU2V0IGNvbnRyb2xsZXIgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGZldGNoIGdpdmVuIHJlcXVlc3QsXG4gIC8vIHdpdGggcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5IHNldCB0byBoYW5kbGVGZXRjaERvbmUsIGFuZCBwcm9jZXNzUmVzcG9uc2VcbiAgLy8gZ2l2ZW4gcmVzcG9uc2UgYmVpbmcgdGhlc2Ugc3Vic3RlcHM6XG5cbiAgY29uc3QgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgLy8gMS4gSWYgbG9jYWxseUFib3J0ZWQgaXMgdHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN1YnN0ZXBzLlxuICAgIGlmIChsb2NhbGx5QWJvcnRlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgLy8gMi4gSWYgcmVzcG9uc2VcdTIwMTlzIGFib3J0ZWQgZmxhZyBpcyBzZXQsIHRoZW46XG4gICAgaWYgKHJlc3BvbnNlLmFib3J0ZWQpIHtcbiAgICAgIC8vIDEuIExldCBkZXNlcmlhbGl6ZWRFcnJvciBiZSB0aGUgcmVzdWx0IG9mIGRlc2VyaWFsaXplIGEgc2VyaWFsaXplZFxuICAgICAgLy8gICAgYWJvcnQgcmVhc29uIGdpdmVuIGNvbnRyb2xsZXJcdTIwMTlzIHNlcmlhbGl6ZWQgYWJvcnQgcmVhc29uIGFuZFxuICAgICAgLy8gICAgcmVsZXZhbnRSZWFsbS5cblxuICAgICAgLy8gMi4gQWJvcnQgdGhlIGZldGNoKCkgY2FsbCB3aXRoIHAsIHJlcXVlc3QsIHJlc3BvbnNlT2JqZWN0LCBhbmRcbiAgICAgIC8vICAgIGRlc2VyaWFsaXplZEVycm9yLlxuXG4gICAgICBhYm9ydEZldGNoKHAsIHJlcXVlc3QsIHJlc3BvbnNlT2JqZWN0LCBjb250cm9sbGVyLnNlcmlhbGl6ZWRBYm9ydFJlYXNvbilcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIH1cblxuICAgIC8vIDMuIElmIHJlc3BvbnNlIGlzIGEgbmV0d29yayBlcnJvciwgdGhlbiByZWplY3QgcCB3aXRoIGEgVHlwZUVycm9yXG4gICAgLy8gYW5kIHRlcm1pbmF0ZSB0aGVzZSBzdWJzdGVwcy5cbiAgICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgcC5yZWplY3QoXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3IFR5cGVFcnJvcignZmV0Y2ggZmFpbGVkJyksIHsgY2F1c2U6IHJlc3BvbnNlLmVycm9yIH0pXG4gICAgICApXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICB9XG5cbiAgICAvLyA0LiBTZXQgcmVzcG9uc2VPYmplY3QgdG8gdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhIFJlc3BvbnNlIG9iamVjdCxcbiAgICAvLyBnaXZlbiByZXNwb25zZSwgXCJpbW11dGFibGVcIiwgYW5kIHJlbGV2YW50UmVhbG0uXG4gICAgcmVzcG9uc2VPYmplY3QgPSBuZXcgUmVzcG9uc2UoKVxuICAgIHJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0gPSByZXNwb25zZVxuICAgIHJlc3BvbnNlT2JqZWN0W2tSZWFsbV0gPSByZWxldmFudFJlYWxtXG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tIZWFkZXJzTGlzdF0gPSByZXNwb25zZS5oZWFkZXJzTGlzdFxuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrR3VhcmRdID0gJ2ltbXV0YWJsZSdcbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba1JlYWxtXSA9IHJlbGV2YW50UmVhbG1cblxuICAgIC8vIDUuIFJlc29sdmUgcCB3aXRoIHJlc3BvbnNlT2JqZWN0LlxuICAgIHAucmVzb2x2ZShyZXNwb25zZU9iamVjdClcbiAgfVxuXG4gIGNvbnRyb2xsZXIgPSBmZXRjaGluZyh7XG4gICAgcmVxdWVzdCxcbiAgICBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHk6IGhhbmRsZUZldGNoRG9uZSxcbiAgICBwcm9jZXNzUmVzcG9uc2UsXG4gICAgZGlzcGF0Y2hlcjogaW5pdC5kaXNwYXRjaGVyID8/IGdldEdsb2JhbERpc3BhdGNoZXIoKSAvLyB1bmRpY2lcbiAgfSlcblxuICAvLyAxNC4gUmV0dXJuIHAuXG4gIHJldHVybiBwLnByb21pc2Vcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZpbmFsaXplLWFuZC1yZXBvcnQtdGltaW5nXG5mdW5jdGlvbiBmaW5hbGl6ZUFuZFJlcG9ydFRpbWluZyAocmVzcG9uc2UsIGluaXRpYXRvclR5cGUgPSAnb3RoZXInKSB7XG4gIC8vIDEuIElmIHJlc3BvbnNlIGlzIGFuIGFib3J0ZWQgbmV0d29yayBlcnJvciwgdGhlbiByZXR1cm4uXG4gIGlmIChyZXNwb25zZS50eXBlID09PSAnZXJyb3InICYmIHJlc3BvbnNlLmFib3J0ZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDIuIElmIHJlc3BvbnNlXHUyMDE5cyBVUkwgbGlzdCBpcyBudWxsIG9yIGVtcHR5LCB0aGVuIHJldHVybi5cbiAgaWYgKCFyZXNwb25zZS51cmxMaXN0Py5sZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDMuIExldCBvcmlnaW5hbFVSTCBiZSByZXNwb25zZVx1MjAxOXMgVVJMIGxpc3RbMF0uXG4gIGNvbnN0IG9yaWdpbmFsVVJMID0gcmVzcG9uc2UudXJsTGlzdFswXVxuXG4gIC8vIDQuIExldCB0aW1pbmdJbmZvIGJlIHJlc3BvbnNlXHUyMDE5cyB0aW1pbmcgaW5mby5cbiAgbGV0IHRpbWluZ0luZm8gPSByZXNwb25zZS50aW1pbmdJbmZvXG5cbiAgLy8gNS4gTGV0IGNhY2hlU3RhdGUgYmUgcmVzcG9uc2VcdTIwMTlzIGNhY2hlIHN0YXRlLlxuICBsZXQgY2FjaGVTdGF0ZSA9IHJlc3BvbnNlLmNhY2hlU3RhdGVcblxuICAvLyA2LiBJZiBvcmlnaW5hbFVSTFx1MjAxOXMgc2NoZW1lIGlzIG5vdCBhbiBIVFRQKFMpIHNjaGVtZSwgdGhlbiByZXR1cm4uXG4gIGlmICghdXJsSXNIdHRwSHR0cHNTY2hlbWUob3JpZ2luYWxVUkwpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyA3LiBJZiB0aW1pbmdJbmZvIGlzIG51bGwsIHRoZW4gcmV0dXJuLlxuICBpZiAodGltaW5nSW5mbyA9PT0gbnVsbCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gOC4gSWYgcmVzcG9uc2VcdTIwMTlzIHRpbWluZyBhbGxvdyBwYXNzZWQgZmxhZyBpcyBub3Qgc2V0LCB0aGVuOlxuICBpZiAoIXJlc3BvbnNlLnRpbWluZ0FsbG93UGFzc2VkKSB7XG4gICAgLy8gIDEuIFNldCB0aW1pbmdJbmZvIHRvIGEgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhbiBvcGFxdWUgdGltaW5nIGluZm8gZm9yIHRpbWluZ0luZm8uXG4gICAgdGltaW5nSW5mbyA9IGNyZWF0ZU9wYXF1ZVRpbWluZ0luZm8oe1xuICAgICAgc3RhcnRUaW1lOiB0aW1pbmdJbmZvLnN0YXJ0VGltZVxuICAgIH0pXG5cbiAgICAvLyAgMi4gU2V0IGNhY2hlU3RhdGUgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICBjYWNoZVN0YXRlID0gJydcbiAgfVxuXG4gIC8vIDkuIFNldCB0aW1pbmdJbmZvXHUyMDE5cyBlbmQgdGltZSB0byB0aGUgY29hcnNlbmVkIHNoYXJlZCBjdXJyZW50IHRpbWVcbiAgLy8gZ2l2ZW4gZ2xvYmFsXHUyMDE5cyByZWxldmFudCBzZXR0aW5ncyBvYmplY3RcdTIwMTlzIGNyb3NzLW9yaWdpbiBpc29sYXRlZFxuICAvLyBjYXBhYmlsaXR5LlxuICAvLyBUT0RPOiBnaXZlbiBnbG9iYWxcdTIwMTlzIHJlbGV2YW50IHNldHRpbmdzIG9iamVjdFx1MjAxOXMgY3Jvc3Mtb3JpZ2luIGlzb2xhdGVkXG4gIC8vIGNhcGFiaWxpdHk/XG4gIHRpbWluZ0luZm8uZW5kVGltZSA9IGNvYXJzZW5lZFNoYXJlZEN1cnJlbnRUaW1lKClcblxuICAvLyAxMC4gU2V0IHJlc3BvbnNlXHUyMDE5cyB0aW1pbmcgaW5mbyB0byB0aW1pbmdJbmZvLlxuICByZXNwb25zZS50aW1pbmdJbmZvID0gdGltaW5nSW5mb1xuXG4gIC8vIDExLiBNYXJrIHJlc291cmNlIHRpbWluZyBmb3IgdGltaW5nSW5mbywgb3JpZ2luYWxVUkwsIGluaXRpYXRvclR5cGUsXG4gIC8vIGdsb2JhbCwgYW5kIGNhY2hlU3RhdGUuXG4gIG1hcmtSZXNvdXJjZVRpbWluZyhcbiAgICB0aW1pbmdJbmZvLFxuICAgIG9yaWdpbmFsVVJMLFxuICAgIGluaXRpYXRvclR5cGUsXG4gICAgZ2xvYmFsVGhpcyxcbiAgICBjYWNoZVN0YXRlXG4gIClcbn1cblxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3Jlc291cmNlLXRpbWluZy8jZGZuLW1hcmstcmVzb3VyY2UtdGltaW5nXG5mdW5jdGlvbiBtYXJrUmVzb3VyY2VUaW1pbmcgKHRpbWluZ0luZm8sIG9yaWdpbmFsVVJMLCBpbml0aWF0b3JUeXBlLCBnbG9iYWxUaGlzLCBjYWNoZVN0YXRlKSB7XG4gIGlmIChub2RlTWFqb3IgPiAxOCB8fCAobm9kZU1ham9yID09PSAxOCAmJiBub2RlTWlub3IgPj0gMikpIHtcbiAgICBwZXJmb3JtYW5jZS5tYXJrUmVzb3VyY2VUaW1pbmcodGltaW5nSW5mbywgb3JpZ2luYWxVUkwuaHJlZiwgaW5pdGlhdG9yVHlwZSwgZ2xvYmFsVGhpcywgY2FjaGVTdGF0ZSlcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYWJvcnQtZmV0Y2hcbmZ1bmN0aW9uIGFib3J0RmV0Y2ggKHAsIHJlcXVlc3QsIHJlc3BvbnNlT2JqZWN0LCBlcnJvcikge1xuICAvLyBOb3RlOiBBYm9ydFNpZ25hbC5yZWFzb24gd2FzIGFkZGVkIGluIG5vZGUgdjE3LjIuMFxuICAvLyB3aGljaCB3b3VsZCBnaXZlIHVzIGFuIHVuZGVmaW5lZCBlcnJvciB0byByZWplY3Qgd2l0aC5cbiAgLy8gUmVtb3ZlIHRoaXMgb25jZSBub2RlIHYxNiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLlxuICBpZiAoIWVycm9yKSB7XG4gICAgZXJyb3IgPSBuZXcgRE9NRXhjZXB0aW9uKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkLicsICdBYm9ydEVycm9yJylcbiAgfVxuXG4gIC8vIDEuIFJlamVjdCBwcm9taXNlIHdpdGggZXJyb3IuXG4gIHAucmVqZWN0KGVycm9yKVxuXG4gIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbm90IG51bGwgYW5kIGlzIHJlYWRhYmxlLCB0aGVuIGNhbmNlbCByZXF1ZXN0XHUyMDE5c1xuICAvLyBib2R5IHdpdGggZXJyb3IuXG4gIGlmIChyZXF1ZXN0LmJvZHkgIT0gbnVsbCAmJiBpc1JlYWRhYmxlKHJlcXVlc3QuYm9keT8uc3RyZWFtKSkge1xuICAgIHJlcXVlc3QuYm9keS5zdHJlYW0uY2FuY2VsKGVycm9yKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFUlJfSU5WQUxJRF9TVEFURScpIHtcbiAgICAgICAgLy8gTm9kZSBidWc/XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxuXG4gIC8vIDMuIElmIHJlc3BvbnNlT2JqZWN0IGlzIG51bGwsIHRoZW4gcmV0dXJuLlxuICBpZiAocmVzcG9uc2VPYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gNC4gTGV0IHJlc3BvbnNlIGJlIHJlc3BvbnNlT2JqZWN0XHUyMDE5cyByZXNwb25zZS5cbiAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZU9iamVjdFtrU3RhdGVdXG5cbiAgLy8gNS4gSWYgcmVzcG9uc2VcdTIwMTlzIGJvZHkgaXMgbm90IG51bGwgYW5kIGlzIHJlYWRhYmxlLCB0aGVuIGVycm9yIHJlc3BvbnNlXHUyMDE5c1xuICAvLyBib2R5IHdpdGggZXJyb3IuXG4gIGlmIChyZXNwb25zZS5ib2R5ICE9IG51bGwgJiYgaXNSZWFkYWJsZShyZXNwb25zZS5ib2R5Py5zdHJlYW0pKSB7XG4gICAgcmVzcG9uc2UuYm9keS5zdHJlYW0uY2FuY2VsKGVycm9yKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFUlJfSU5WQUxJRF9TVEFURScpIHtcbiAgICAgICAgLy8gTm9kZSBidWc/XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZmV0Y2hpbmdcbmZ1bmN0aW9uIGZldGNoaW5nICh7XG4gIHJlcXVlc3QsXG4gIHByb2Nlc3NSZXF1ZXN0Qm9keUNodW5rTGVuZ3RoLFxuICBwcm9jZXNzUmVxdWVzdEVuZE9mQm9keSxcbiAgcHJvY2Vzc1Jlc3BvbnNlLFxuICBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHksXG4gIHByb2Nlc3NSZXNwb25zZUNvbnN1bWVCb2R5LFxuICB1c2VQYXJhbGxlbFF1ZXVlID0gZmFsc2UsXG4gIGRpc3BhdGNoZXIgLy8gdW5kaWNpXG59KSB7XG4gIC8vIDEuIExldCB0YXNrRGVzdGluYXRpb24gYmUgbnVsbC5cbiAgbGV0IHRhc2tEZXN0aW5hdGlvbiA9IG51bGxcblxuICAvLyAyLiBMZXQgY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkgYmUgZmFsc2UuXG4gIGxldCBjcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eSA9IGZhbHNlXG5cbiAgLy8gMy4gSWYgcmVxdWVzdFx1MjAxOXMgY2xpZW50IGlzIG5vbi1udWxsLCB0aGVuOlxuICBpZiAocmVxdWVzdC5jbGllbnQgIT0gbnVsbCkge1xuICAgIC8vIDEuIFNldCB0YXNrRGVzdGluYXRpb24gdG8gcmVxdWVzdFx1MjAxOXMgY2xpZW50XHUyMDE5cyBnbG9iYWwgb2JqZWN0LlxuICAgIHRhc2tEZXN0aW5hdGlvbiA9IHJlcXVlc3QuY2xpZW50Lmdsb2JhbE9iamVjdFxuXG4gICAgLy8gMi4gU2V0IGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5IHRvIHJlcXVlc3RcdTIwMTlzIGNsaWVudFx1MjAxOXMgY3Jvc3Mtb3JpZ2luXG4gICAgLy8gaXNvbGF0ZWQgY2FwYWJpbGl0eS5cbiAgICBjcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eSA9XG4gICAgICByZXF1ZXN0LmNsaWVudC5jcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eVxuICB9XG5cbiAgLy8gNC4gSWYgdXNlUGFyYWxsZWxRdWV1ZSBpcyB0cnVlLCB0aGVuIHNldCB0YXNrRGVzdGluYXRpb24gdG8gdGhlIHJlc3VsdCBvZlxuICAvLyBzdGFydGluZyBhIG5ldyBwYXJhbGxlbCBxdWV1ZS5cbiAgLy8gVE9ET1xuXG4gIC8vIDUuIExldCB0aW1pbmdJbmZvIGJlIGEgbmV3IGZldGNoIHRpbWluZyBpbmZvIHdob3NlIHN0YXJ0IHRpbWUgYW5kXG4gIC8vIHBvc3QtcmVkaXJlY3Qgc3RhcnQgdGltZSBhcmUgdGhlIGNvYXJzZW5lZCBzaGFyZWQgY3VycmVudCB0aW1lIGdpdmVuXG4gIC8vIGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5LlxuICBjb25zdCBjdXJyZW5UaW1lID0gY29hcnNlbmVkU2hhcmVkQ3VycmVudFRpbWUoY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkpXG4gIGNvbnN0IHRpbWluZ0luZm8gPSBjcmVhdGVPcGFxdWVUaW1pbmdJbmZvKHtcbiAgICBzdGFydFRpbWU6IGN1cnJlblRpbWVcbiAgfSlcblxuICAvLyA2LiBMZXQgZmV0Y2hQYXJhbXMgYmUgYSBuZXcgZmV0Y2ggcGFyYW1zIHdob3NlXG4gIC8vIHJlcXVlc3QgaXMgcmVxdWVzdCxcbiAgLy8gdGltaW5nIGluZm8gaXMgdGltaW5nSW5mbyxcbiAgLy8gcHJvY2VzcyByZXF1ZXN0IGJvZHkgY2h1bmsgbGVuZ3RoIGlzIHByb2Nlc3NSZXF1ZXN0Qm9keUNodW5rTGVuZ3RoLFxuICAvLyBwcm9jZXNzIHJlcXVlc3QgZW5kLW9mLWJvZHkgaXMgcHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHksXG4gIC8vIHByb2Nlc3MgcmVzcG9uc2UgaXMgcHJvY2Vzc1Jlc3BvbnNlLFxuICAvLyBwcm9jZXNzIHJlc3BvbnNlIGNvbnN1bWUgYm9keSBpcyBwcm9jZXNzUmVzcG9uc2VDb25zdW1lQm9keSxcbiAgLy8gcHJvY2VzcyByZXNwb25zZSBlbmQtb2YtYm9keSBpcyBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHksXG4gIC8vIHRhc2sgZGVzdGluYXRpb24gaXMgdGFza0Rlc3RpbmF0aW9uLFxuICAvLyBhbmQgY3Jvc3Mtb3JpZ2luIGlzb2xhdGVkIGNhcGFiaWxpdHkgaXMgY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkuXG4gIGNvbnN0IGZldGNoUGFyYW1zID0ge1xuICAgIGNvbnRyb2xsZXI6IG5ldyBGZXRjaChkaXNwYXRjaGVyKSxcbiAgICByZXF1ZXN0LFxuICAgIHRpbWluZ0luZm8sXG4gICAgcHJvY2Vzc1JlcXVlc3RCb2R5Q2h1bmtMZW5ndGgsXG4gICAgcHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHksXG4gICAgcHJvY2Vzc1Jlc3BvbnNlLFxuICAgIHByb2Nlc3NSZXNwb25zZUNvbnN1bWVCb2R5LFxuICAgIHByb2Nlc3NSZXNwb25zZUVuZE9mQm9keSxcbiAgICB0YXNrRGVzdGluYXRpb24sXG4gICAgY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHlcbiAgfVxuXG4gIC8vIDcuIElmIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgYSBieXRlIHNlcXVlbmNlLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBib2R5IHRvXG4gIC8vICAgIHJlcXVlc3RcdTIwMTlzIGJvZHkgYXMgYSBib2R5LlxuICAvLyBOT1RFOiBTaW5jZSBmZXRjaGluZyBpcyBvbmx5IGNhbGxlZCBmcm9tIGZldGNoLCBib2R5IHNob3VsZCBhbHJlYWR5IGJlXG4gIC8vIGV4dHJhY3RlZC5cbiAgYXNzZXJ0KCFyZXF1ZXN0LmJvZHkgfHwgcmVxdWVzdC5ib2R5LnN0cmVhbSlcblxuICAvLyA4LiBJZiByZXF1ZXN0XHUyMDE5cyB3aW5kb3cgaXMgXCJjbGllbnRcIiwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgd2luZG93IHRvIHJlcXVlc3RcdTIwMTlzXG4gIC8vIGNsaWVudCwgaWYgcmVxdWVzdFx1MjAxOXMgY2xpZW50XHUyMDE5cyBnbG9iYWwgb2JqZWN0IGlzIGEgV2luZG93IG9iamVjdDsgb3RoZXJ3aXNlXG4gIC8vIFwibm8td2luZG93XCIuXG4gIGlmIChyZXF1ZXN0LndpbmRvdyA9PT0gJ2NsaWVudCcpIHtcbiAgICAvLyBUT0RPOiBXaGF0IGlmIHJlcXVlc3QuY2xpZW50IGlzIG51bGw/XG4gICAgcmVxdWVzdC53aW5kb3cgPVxuICAgICAgcmVxdWVzdC5jbGllbnQ/Lmdsb2JhbE9iamVjdD8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdXaW5kb3cnXG4gICAgICAgID8gcmVxdWVzdC5jbGllbnRcbiAgICAgICAgOiAnbm8td2luZG93J1xuICB9XG5cbiAgLy8gOS4gSWYgcmVxdWVzdFx1MjAxOXMgb3JpZ2luIGlzIFwiY2xpZW50XCIsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIG9yaWdpbiB0byByZXF1ZXN0XHUyMDE5c1xuICAvLyBjbGllbnRcdTIwMTlzIG9yaWdpbi5cbiAgaWYgKHJlcXVlc3Qub3JpZ2luID09PSAnY2xpZW50Jykge1xuICAgIC8vIFRPRE86IFdoYXQgaWYgcmVxdWVzdC5jbGllbnQgaXMgbnVsbD9cbiAgICByZXF1ZXN0Lm9yaWdpbiA9IHJlcXVlc3QuY2xpZW50Py5vcmlnaW5cbiAgfVxuXG4gIC8vIDEwLiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB0cnVlOlxuICAvLyBUT0RPXG5cbiAgLy8gMTEuIElmIHJlcXVlc3RcdTIwMTlzIHBvbGljeSBjb250YWluZXIgaXMgXCJjbGllbnRcIiwgdGhlbjpcbiAgaWYgKHJlcXVlc3QucG9saWN5Q29udGFpbmVyID09PSAnY2xpZW50Jykge1xuICAgIC8vIDEuIElmIHJlcXVlc3RcdTIwMTlzIGNsaWVudCBpcyBub24tbnVsbCwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgcG9saWN5XG4gICAgLy8gY29udGFpbmVyIHRvIGEgY2xvbmUgb2YgcmVxdWVzdFx1MjAxOXMgY2xpZW50XHUyMDE5cyBwb2xpY3kgY29udGFpbmVyLiBbSFRNTF1cbiAgICBpZiAocmVxdWVzdC5jbGllbnQgIT0gbnVsbCkge1xuICAgICAgcmVxdWVzdC5wb2xpY3lDb250YWluZXIgPSBjbG9uZVBvbGljeUNvbnRhaW5lcihcbiAgICAgICAgcmVxdWVzdC5jbGllbnQucG9saWN5Q29udGFpbmVyXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDIuIE90aGVyd2lzZSwgc2V0IHJlcXVlc3RcdTIwMTlzIHBvbGljeSBjb250YWluZXIgdG8gYSBuZXcgcG9saWN5XG4gICAgICAvLyBjb250YWluZXIuXG4gICAgICByZXF1ZXN0LnBvbGljeUNvbnRhaW5lciA9IG1ha2VQb2xpY3lDb250YWluZXIoKVxuICAgIH1cbiAgfVxuXG4gIC8vIDEyLiBJZiByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBBY2NlcHRgLCB0aGVuOlxuICBpZiAoIXJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2FjY2VwdCcpKSB7XG4gICAgLy8gMS4gTGV0IHZhbHVlIGJlIGAqLypgLlxuICAgIGNvbnN0IHZhbHVlID0gJyovKidcblxuICAgIC8vIDIuIEEgdXNlciBhZ2VudCBzaG91bGQgc2V0IHZhbHVlIHRvIHRoZSBmaXJzdCBtYXRjaGluZyBzdGF0ZW1lbnQsIGlmXG4gICAgLy8gYW55LCBzd2l0Y2hpbmcgb24gcmVxdWVzdFx1MjAxOXMgZGVzdGluYXRpb246XG4gICAgLy8gXCJkb2N1bWVudFwiXG4gICAgLy8gXCJmcmFtZVwiXG4gICAgLy8gXCJpZnJhbWVcIlxuICAgIC8vIGB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjhgXG4gICAgLy8gXCJpbWFnZVwiXG4gICAgLy8gYGltYWdlL3BuZyxpbWFnZS9zdmcreG1sLGltYWdlLyo7cT0wLjgsKi8qO3E9MC41YFxuICAgIC8vIFwic3R5bGVcIlxuICAgIC8vIGB0ZXh0L2NzcywqLyo7cT0wLjFgXG4gICAgLy8gVE9ET1xuXG4gICAgLy8gMy4gQXBwZW5kIGBBY2NlcHRgL3ZhbHVlIHRvIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdhY2NlcHQnLCB2YWx1ZSlcbiAgfVxuXG4gIC8vIDEzLiBJZiByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBBY2NlcHQtTGFuZ3VhZ2VgLCB0aGVuXG4gIC8vIHVzZXIgYWdlbnRzIHNob3VsZCBhcHBlbmQgYEFjY2VwdC1MYW5ndWFnZWAvYW4gYXBwcm9wcmlhdGUgdmFsdWUgdG9cbiAgLy8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGlmICghcmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnYWNjZXB0LWxhbmd1YWdlJykpIHtcbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnYWNjZXB0LWxhbmd1YWdlJywgJyonKVxuICB9XG5cbiAgLy8gMTQuIElmIHJlcXVlc3RcdTIwMTlzIHByaW9yaXR5IGlzIG51bGwsIHRoZW4gdXNlIHJlcXVlc3RcdTIwMTlzIGluaXRpYXRvciBhbmRcbiAgLy8gZGVzdGluYXRpb24gYXBwcm9wcmlhdGVseSBpbiBzZXR0aW5nIHJlcXVlc3RcdTIwMTlzIHByaW9yaXR5IHRvIGFcbiAgLy8gdXNlci1hZ2VudC1kZWZpbmVkIG9iamVjdC5cbiAgaWYgKHJlcXVlc3QucHJpb3JpdHkgPT09IG51bGwpIHtcbiAgICAvLyBUT0RPXG4gIH1cblxuICAvLyAxNS4gSWYgcmVxdWVzdCBpcyBhIHN1YnJlc291cmNlIHJlcXVlc3QsIHRoZW46XG4gIGlmIChzdWJyZXNvdXJjZVNldC5oYXMocmVxdWVzdC5kZXN0aW5hdGlvbikpIHtcbiAgICAvLyBUT0RPXG4gIH1cblxuICAvLyAxNi4gUnVuIG1haW4gZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMuXG4gIG1haW5GZXRjaChmZXRjaFBhcmFtcylcbiAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIudGVybWluYXRlKGVycilcbiAgICB9KVxuXG4gIC8vIDE3LiBSZXR1cm4gZmV0Y2hQYXJhbSdzIGNvbnRyb2xsZXJcbiAgcmV0dXJuIGZldGNoUGFyYW1zLmNvbnRyb2xsZXJcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbWFpbi1mZXRjaFxuYXN5bmMgZnVuY3Rpb24gbWFpbkZldGNoIChmZXRjaFBhcmFtcywgcmVjdXJzaXZlID0gZmFsc2UpIHtcbiAgLy8gMS4gTGV0IHJlcXVlc3QgYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHJlcXVlc3QuXG4gIGNvbnN0IHJlcXVlc3QgPSBmZXRjaFBhcmFtcy5yZXF1ZXN0XG5cbiAgLy8gMi4gTGV0IHJlc3BvbnNlIGJlIG51bGwuXG4gIGxldCByZXNwb25zZSA9IG51bGxcblxuICAvLyAzLiBJZiByZXF1ZXN0XHUyMDE5cyBsb2NhbC1VUkxzLW9ubHkgZmxhZyBpcyBzZXQgYW5kIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMIGlzXG4gIC8vIG5vdCBsb2NhbCwgdGhlbiBzZXQgcmVzcG9uc2UgdG8gYSBuZXR3b3JrIGVycm9yLlxuICBpZiAocmVxdWVzdC5sb2NhbFVSTHNPbmx5ICYmICF1cmxJc0xvY2FsKHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpKSkge1xuICAgIHJlc3BvbnNlID0gbWFrZU5ldHdvcmtFcnJvcignbG9jYWwgVVJMcyBvbmx5JylcbiAgfVxuXG4gIC8vIDQuIFJ1biByZXBvcnQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdmlvbGF0aW9ucyBmb3IgcmVxdWVzdC5cbiAgLy8gVE9ET1xuXG4gIC8vIDUuIFVwZ3JhZGUgcmVxdWVzdCB0byBhIHBvdGVudGlhbGx5IHRydXN0d29ydGh5IFVSTCwgaWYgYXBwcm9wcmlhdGUuXG4gIHRyeVVwZ3JhZGVSZXF1ZXN0VG9BUG90ZW50aWFsbHlUcnVzdHdvcnRoeVVSTChyZXF1ZXN0KVxuXG4gIC8vIDYuIElmIHNob3VsZCByZXF1ZXN0IGJlIGJsb2NrZWQgZHVlIHRvIGEgYmFkIHBvcnQsIHNob3VsZCBmZXRjaGluZyByZXF1ZXN0XG4gIC8vIGJlIGJsb2NrZWQgYXMgbWl4ZWQgY29udGVudCwgb3Igc2hvdWxkIHJlcXVlc3QgYmUgYmxvY2tlZCBieSBDb250ZW50XG4gIC8vIFNlY3VyaXR5IFBvbGljeSByZXR1cm5zIGJsb2NrZWQsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKHJlcXVlc3RCYWRQb3J0KHJlcXVlc3QpID09PSAnYmxvY2tlZCcpIHtcbiAgICByZXNwb25zZSA9IG1ha2VOZXR3b3JrRXJyb3IoJ2JhZCBwb3J0JylcbiAgfVxuICAvLyBUT0RPOiBzaG91bGQgZmV0Y2hpbmcgcmVxdWVzdCBiZSBibG9ja2VkIGFzIG1peGVkIGNvbnRlbnQ/XG4gIC8vIFRPRE86IHNob3VsZCByZXF1ZXN0IGJlIGJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3k/XG5cbiAgLy8gNy4gSWYgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzXG4gIC8vIHJlZmVycmVyIHBvbGljeSB0byByZXF1ZXN0XHUyMDE5cyBwb2xpY3kgY29udGFpbmVyXHUyMDE5cyByZWZlcnJlciBwb2xpY3kuXG4gIGlmIChyZXF1ZXN0LnJlZmVycmVyUG9saWN5ID09PSAnJykge1xuICAgIHJlcXVlc3QucmVmZXJyZXJQb2xpY3kgPSByZXF1ZXN0LnBvbGljeUNvbnRhaW5lci5yZWZlcnJlclBvbGljeVxuICB9XG5cbiAgLy8gOC4gSWYgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgaXMgbm90IFwibm8tcmVmZXJyZXJcIiwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXNcbiAgLy8gcmVmZXJyZXIgdG8gdGhlIHJlc3VsdCBvZiBpbnZva2luZyBkZXRlcm1pbmUgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIuXG4gIGlmIChyZXF1ZXN0LnJlZmVycmVyICE9PSAnbm8tcmVmZXJyZXInKSB7XG4gICAgcmVxdWVzdC5yZWZlcnJlciA9IGRldGVybWluZVJlcXVlc3RzUmVmZXJyZXIocmVxdWVzdClcbiAgfVxuXG4gIC8vIDkuIFNldCByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgc2NoZW1lIHRvIFwiaHR0cHNcIiBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZ1xuICAvLyBjb25kaXRpb25zIGFyZSB0cnVlOlxuICAvLyAtIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBzY2hlbWUgaXMgXCJodHRwXCJcbiAgLy8gLSByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgaG9zdCBpcyBhIGRvbWFpblxuICAvLyAtIE1hdGNoaW5nIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBob3N0IHBlciBLbm93biBIU1RTIEhvc3QgRG9tYWluIE5hbWVcbiAgLy8gICBNYXRjaGluZyByZXN1bHRzIGluIGVpdGhlciBhIHN1cGVyZG9tYWluIG1hdGNoIHdpdGggYW4gYXNzZXJ0ZWRcbiAgLy8gICBpbmNsdWRlU3ViRG9tYWlucyBkaXJlY3RpdmUgb3IgYSBjb25ncnVlbnQgbWF0Y2ggKHdpdGggb3Igd2l0aG91dCBhblxuICAvLyAgIGFzc2VydGVkIGluY2x1ZGVTdWJEb21haW5zIGRpcmVjdGl2ZSkuIFtIU1RTXVxuICAvLyBUT0RPXG5cbiAgLy8gMTAuIElmIHJlY3Vyc2l2ZSBpcyBmYWxzZSwgdGhlbiBydW4gdGhlIHJlbWFpbmluZyBzdGVwcyBpbiBwYXJhbGxlbC5cbiAgLy8gVE9ET1xuXG4gIC8vIDExLiBJZiByZXNwb25zZSBpcyBudWxsLCB0aGVuIHNldCByZXNwb25zZSB0byB0aGUgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgLy8gdGhlIHN0ZXBzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIHN0YXRlbWVudDpcbiAgaWYgKHJlc3BvbnNlID09PSBudWxsKSB7XG4gICAgcmVzcG9uc2UgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFVSTCA9IHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpXG5cbiAgICAgIGlmIChcbiAgICAgICAgLy8gLSByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgb3JpZ2luIGlzIHNhbWUgb3JpZ2luIHdpdGggcmVxdWVzdFx1MjAxOXMgb3JpZ2luLFxuICAgICAgICAvLyAgIGFuZCByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBcImJhc2ljXCJcbiAgICAgICAgKHNhbWVPcmlnaW4oY3VycmVudFVSTCwgcmVxdWVzdC51cmwpICYmIHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ2Jhc2ljJykgfHxcbiAgICAgICAgLy8gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHNjaGVtZSBpcyBcImRhdGFcIlxuICAgICAgICAoY3VycmVudFVSTC5wcm90b2NvbCA9PT0gJ2RhdGE6JykgfHxcbiAgICAgICAgLy8gLSByZXF1ZXN0XHUyMDE5cyBtb2RlIGlzIFwibmF2aWdhdGVcIiBvciBcIndlYnNvY2tldFwiXG4gICAgICAgIChyZXF1ZXN0Lm1vZGUgPT09ICduYXZpZ2F0ZScgfHwgcmVxdWVzdC5tb2RlID09PSAnd2Vic29ja2V0JylcbiAgICAgICkge1xuICAgICAgICAvLyAxLiBTZXQgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgdG8gXCJiYXNpY1wiLlxuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPSAnYmFzaWMnXG5cbiAgICAgICAgLy8gMi4gUmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZyBzY2hlbWUgZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMuXG4gICAgICAgIHJldHVybiBhd2FpdCBzY2hlbWVGZXRjaChmZXRjaFBhcmFtcylcbiAgICAgIH1cblxuICAgICAgLy8gcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcInNhbWUtb3JpZ2luXCJcbiAgICAgIGlmIChyZXF1ZXN0Lm1vZGUgPT09ICdzYW1lLW9yaWdpbicpIHtcbiAgICAgICAgLy8gMS4gUmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ3JlcXVlc3QgbW9kZSBjYW5ub3QgYmUgXCJzYW1lLW9yaWdpblwiJylcbiAgICAgIH1cblxuICAgICAgLy8gcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcIm5vLWNvcnNcIlxuICAgICAgaWYgKHJlcXVlc3QubW9kZSA9PT0gJ25vLWNvcnMnKSB7XG4gICAgICAgIC8vIDEuIElmIHJlcXVlc3RcdTIwMTlzIHJlZGlyZWN0IG1vZGUgaXMgbm90IFwiZm9sbG93XCIsIHRoZW4gcmV0dXJuIGEgbmV0d29ya1xuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgaWYgKHJlcXVlc3QucmVkaXJlY3QgIT09ICdmb2xsb3cnKSB7XG4gICAgICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoXG4gICAgICAgICAgICAncmVkaXJlY3QgbW9kZSBjYW5ub3QgYmUgXCJmb2xsb3dcIiBmb3IgXCJuby1jb3JzXCIgcmVxdWVzdCdcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBTZXQgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgdG8gXCJvcGFxdWVcIi5cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID0gJ29wYXF1ZSdcblxuICAgICAgICAvLyAzLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBydW5uaW5nIHNjaGVtZSBmZXRjaCBnaXZlbiBmZXRjaFBhcmFtcy5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHNjaGVtZUZldGNoKGZldGNoUGFyYW1zKVxuICAgICAgfVxuXG4gICAgICAvLyByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgc2NoZW1lIGlzIG5vdCBhbiBIVFRQKFMpIHNjaGVtZVxuICAgICAgaWYgKCF1cmxJc0h0dHBIdHRwc1NjaGVtZShyZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KSkpIHtcbiAgICAgICAgLy8gUmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ1VSTCBzY2hlbWUgbXVzdCBiZSBhIEhUVFAoUykgc2NoZW1lJylcbiAgICAgIH1cblxuICAgICAgLy8gLSByZXF1ZXN0XHUyMDE5cyB1c2UtQ09SUy1wcmVmbGlnaHQgZmxhZyBpcyBzZXRcbiAgICAgIC8vIC0gcmVxdWVzdFx1MjAxOXMgdW5zYWZlLXJlcXVlc3QgZmxhZyBpcyBzZXQgYW5kIGVpdGhlciByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXNcbiAgICAgIC8vICAgbm90IGEgQ09SUy1zYWZlbGlzdGVkIG1ldGhvZCBvciBDT1JTLXVuc2FmZSByZXF1ZXN0LWhlYWRlciBuYW1lcyB3aXRoXG4gICAgICAvLyAgIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGlzIG5vdCBlbXB0eVxuICAgICAgLy8gICAgMS4gU2V0IHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIHRvIFwiY29yc1wiLlxuICAgICAgLy8gICAgMi4gTGV0IGNvcnNXaXRoUHJlZmxpZ2h0UmVzcG9uc2UgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIEhUVFAgZmV0Y2hcbiAgICAgIC8vICAgIGdpdmVuIGZldGNoUGFyYW1zIGFuZCB0cnVlLlxuICAgICAgLy8gICAgMy4gSWYgY29yc1dpdGhQcmVmbGlnaHRSZXNwb25zZSBpcyBhIG5ldHdvcmsgZXJyb3IsIHRoZW4gY2xlYXIgY2FjaGVcbiAgICAgIC8vICAgIGVudHJpZXMgdXNpbmcgcmVxdWVzdC5cbiAgICAgIC8vICAgIDQuIFJldHVybiBjb3JzV2l0aFByZWZsaWdodFJlc3BvbnNlLlxuICAgICAgLy8gVE9ET1xuXG4gICAgICAvLyBPdGhlcndpc2VcbiAgICAgIC8vICAgIDEuIFNldCByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyB0byBcImNvcnNcIi5cbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9ICdjb3JzJ1xuXG4gICAgICAvLyAgICAyLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBydW5uaW5nIEhUVFAgZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMuXG4gICAgICByZXR1cm4gYXdhaXQgaHR0cEZldGNoKGZldGNoUGFyYW1zKVxuICAgIH0pKClcbiAgfVxuXG4gIC8vIDEyLiBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlbiByZXR1cm4gcmVzcG9uc2UuXG4gIGlmIChyZWN1cnNpdmUpIHtcbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIC8vIDEzLiBJZiByZXNwb25zZSBpcyBub3QgYSBuZXR3b3JrIGVycm9yIGFuZCByZXNwb25zZSBpcyBub3QgYSBmaWx0ZXJlZFxuICAvLyByZXNwb25zZSwgdGhlbjpcbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMCAmJiAhcmVzcG9uc2UuaW50ZXJuYWxSZXNwb25zZSkge1xuICAgIC8vIElmIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIGlzIFwiY29yc1wiLCB0aGVuOlxuICAgIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdjb3JzJykge1xuICAgICAgLy8gMS4gTGV0IGhlYWRlck5hbWVzIGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBoZWFkZXIgbGlzdCB2YWx1ZXNcbiAgICAgIC8vIGdpdmVuIGBBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVyc2AgYW5kIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAgIC8vIFRPRE9cbiAgICAgIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIGNyZWRlbnRpYWxzIG1vZGUgaXMgbm90IFwiaW5jbHVkZVwiIGFuZCBoZWFkZXJOYW1lc1xuICAgICAgLy8gY29udGFpbnMgYCpgLCB0aGVuIHNldCByZXNwb25zZVx1MjAxOXMgQ09SUy1leHBvc2VkIGhlYWRlci1uYW1lIGxpc3QgdG9cbiAgICAgIC8vIGFsbCB1bmlxdWUgaGVhZGVyIG5hbWVzIGluIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAgIC8vIFRPRE9cbiAgICAgIC8vIDMuIE90aGVyd2lzZSwgaWYgaGVhZGVyTmFtZXMgaXMgbm90IG51bGwgb3IgZmFpbHVyZSwgdGhlbiBzZXRcbiAgICAgIC8vIHJlc3BvbnNlXHUyMDE5cyBDT1JTLWV4cG9zZWQgaGVhZGVyLW5hbWUgbGlzdCB0byBoZWFkZXJOYW1lcy5cbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICAvLyBTZXQgcmVzcG9uc2UgdG8gdGhlIGZvbGxvd2luZyBmaWx0ZXJlZCByZXNwb25zZSB3aXRoIHJlc3BvbnNlIGFzIGl0c1xuICAgIC8vIGludGVybmFsIHJlc3BvbnNlLCBkZXBlbmRpbmcgb24gcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmc6XG4gICAgaWYgKHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ2Jhc2ljJykge1xuICAgICAgcmVzcG9uc2UgPSBmaWx0ZXJSZXNwb25zZShyZXNwb25zZSwgJ2Jhc2ljJylcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ2NvcnMnKSB7XG4gICAgICByZXNwb25zZSA9IGZpbHRlclJlc3BvbnNlKHJlc3BvbnNlLCAnY29ycycpXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdvcGFxdWUnKSB7XG4gICAgICByZXNwb25zZSA9IGZpbHRlclJlc3BvbnNlKHJlc3BvbnNlLCAnb3BhcXVlJylcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIDE0LiBMZXQgaW50ZXJuYWxSZXNwb25zZSBiZSByZXNwb25zZSwgaWYgcmVzcG9uc2UgaXMgYSBuZXR3b3JrIGVycm9yLFxuICAvLyBhbmQgcmVzcG9uc2VcdTIwMTlzIGludGVybmFsIHJlc3BvbnNlIG90aGVyd2lzZS5cbiAgbGV0IGludGVybmFsUmVzcG9uc2UgPVxuICAgIHJlc3BvbnNlLnN0YXR1cyA9PT0gMCA/IHJlc3BvbnNlIDogcmVzcG9uc2UuaW50ZXJuYWxSZXNwb25zZVxuXG4gIC8vIDE1LiBJZiBpbnRlcm5hbFJlc3BvbnNlXHUyMDE5cyBVUkwgbGlzdCBpcyBlbXB0eSwgdGhlbiBzZXQgaXQgdG8gYSBjbG9uZSBvZlxuICAvLyByZXF1ZXN0XHUyMDE5cyBVUkwgbGlzdC5cbiAgaWYgKGludGVybmFsUmVzcG9uc2UudXJsTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICBpbnRlcm5hbFJlc3BvbnNlLnVybExpc3QucHVzaCguLi5yZXF1ZXN0LnVybExpc3QpXG4gIH1cblxuICAvLyAxNi4gSWYgcmVxdWVzdFx1MjAxOXMgdGltaW5nIGFsbG93IGZhaWxlZCBmbGFnIGlzIHVuc2V0LCB0aGVuIHNldFxuICAvLyBpbnRlcm5hbFJlc3BvbnNlXHUyMDE5cyB0aW1pbmcgYWxsb3cgcGFzc2VkIGZsYWcuXG4gIGlmICghcmVxdWVzdC50aW1pbmdBbGxvd0ZhaWxlZCkge1xuICAgIHJlc3BvbnNlLnRpbWluZ0FsbG93UGFzc2VkID0gdHJ1ZVxuICB9XG5cbiAgLy8gMTcuIElmIHJlc3BvbnNlIGlzIG5vdCBhIG5ldHdvcmsgZXJyb3IgYW5kIGFueSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnNcbiAgLy8gYmxvY2tlZFxuICAvLyAtIHNob3VsZCBpbnRlcm5hbFJlc3BvbnNlIHRvIHJlcXVlc3QgYmUgYmxvY2tlZCBhcyBtaXhlZCBjb250ZW50XG4gIC8vIC0gc2hvdWxkIGludGVybmFsUmVzcG9uc2UgdG8gcmVxdWVzdCBiZSBibG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5XG4gIC8vIC0gc2hvdWxkIGludGVybmFsUmVzcG9uc2UgdG8gcmVxdWVzdCBiZSBibG9ja2VkIGR1ZSB0byBpdHMgTUlNRSB0eXBlXG4gIC8vIC0gc2hvdWxkIGludGVybmFsUmVzcG9uc2UgdG8gcmVxdWVzdCBiZSBibG9ja2VkIGR1ZSB0byBub3NuaWZmXG4gIC8vIFRPRE9cblxuICAvLyAxOC4gSWYgcmVzcG9uc2VcdTIwMTlzIHR5cGUgaXMgXCJvcGFxdWVcIiwgaW50ZXJuYWxSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDIwNixcbiAgLy8gaW50ZXJuYWxSZXNwb25zZVx1MjAxOXMgcmFuZ2UtcmVxdWVzdGVkIGZsYWcgaXMgc2V0LCBhbmQgcmVxdWVzdFx1MjAxOXMgaGVhZGVyXG4gIC8vIGxpc3QgZG9lcyBub3QgY29udGFpbiBgUmFuZ2VgLCB0aGVuIHNldCByZXNwb25zZSBhbmQgaW50ZXJuYWxSZXNwb25zZVxuICAvLyB0byBhIG5ldHdvcmsgZXJyb3IuXG4gIGlmIChcbiAgICByZXNwb25zZS50eXBlID09PSAnb3BhcXVlJyAmJlxuICAgIGludGVybmFsUmVzcG9uc2Uuc3RhdHVzID09PSAyMDYgJiZcbiAgICBpbnRlcm5hbFJlc3BvbnNlLnJhbmdlUmVxdWVzdGVkICYmXG4gICAgIXJlcXVlc3QuaGVhZGVycy5jb250YWlucygncmFuZ2UnKVxuICApIHtcbiAgICByZXNwb25zZSA9IGludGVybmFsUmVzcG9uc2UgPSBtYWtlTmV0d29ya0Vycm9yKClcbiAgfVxuXG4gIC8vIDE5LiBJZiByZXNwb25zZSBpcyBub3QgYSBuZXR3b3JrIGVycm9yIGFuZCBlaXRoZXIgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIGlzXG4gIC8vIGBIRUFEYCBvciBgQ09OTkVDVGAsIG9yIGludGVybmFsUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBhIG51bGwgYm9keSBzdGF0dXMsXG4gIC8vIHNldCBpbnRlcm5hbFJlc3BvbnNlXHUyMDE5cyBib2R5IHRvIG51bGwgYW5kIGRpc3JlZ2FyZCBhbnkgZW5xdWV1aW5nIHRvd2FyZFxuICAvLyBpdCAoaWYgYW55KS5cbiAgaWYgKFxuICAgIHJlc3BvbnNlLnN0YXR1cyAhPT0gMCAmJlxuICAgIChyZXF1ZXN0Lm1ldGhvZCA9PT0gJ0hFQUQnIHx8XG4gICAgICByZXF1ZXN0Lm1ldGhvZCA9PT0gJ0NPTk5FQ1QnIHx8XG4gICAgICBudWxsQm9keVN0YXR1cy5pbmNsdWRlcyhpbnRlcm5hbFJlc3BvbnNlLnN0YXR1cykpXG4gICkge1xuICAgIGludGVybmFsUmVzcG9uc2UuYm9keSA9IG51bGxcbiAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmR1bXAgPSB0cnVlXG4gIH1cblxuICAvLyAyMC4gSWYgcmVxdWVzdFx1MjAxOXMgaW50ZWdyaXR5IG1ldGFkYXRhIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuOlxuICBpZiAocmVxdWVzdC5pbnRlZ3JpdHkpIHtcbiAgICAvLyAxLiBMZXQgcHJvY2Vzc0JvZHlFcnJvciBiZSB0aGlzIHN0ZXA6IHJ1biBmZXRjaCBmaW5hbGUgZ2l2ZW4gZmV0Y2hQYXJhbXNcbiAgICAvLyBhbmQgYSBuZXR3b3JrIGVycm9yLlxuICAgIGNvbnN0IHByb2Nlc3NCb2R5RXJyb3IgPSAocmVhc29uKSA9PlxuICAgICAgZmV0Y2hGaW5hbGUoZmV0Y2hQYXJhbXMsIG1ha2VOZXR3b3JrRXJyb3IocmVhc29uKSlcblxuICAgIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIGlzIFwib3BhcXVlXCIsIG9yIHJlc3BvbnNlXHUyMDE5cyBib2R5IGlzIG51bGwsXG4gICAgLy8gdGhlbiBydW4gcHJvY2Vzc0JvZHlFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuXG4gICAgaWYgKHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ29wYXF1ZScgfHwgcmVzcG9uc2UuYm9keSA9PSBudWxsKSB7XG4gICAgICBwcm9jZXNzQm9keUVycm9yKHJlc3BvbnNlLmVycm9yKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gMy4gTGV0IHByb2Nlc3NCb2R5IGdpdmVuIGJ5dGVzIGJlIHRoZXNlIHN0ZXBzOlxuICAgIGNvbnN0IHByb2Nlc3NCb2R5ID0gKGJ5dGVzKSA9PiB7XG4gICAgICAvLyAxLiBJZiBieXRlcyBkbyBub3QgbWF0Y2ggcmVxdWVzdFx1MjAxOXMgaW50ZWdyaXR5IG1ldGFkYXRhLFxuICAgICAgLy8gdGhlbiBydW4gcHJvY2Vzc0JvZHlFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuIFtTUkldXG4gICAgICBpZiAoIWJ5dGVzTWF0Y2goYnl0ZXMsIHJlcXVlc3QuaW50ZWdyaXR5KSkge1xuICAgICAgICBwcm9jZXNzQm9keUVycm9yKCdpbnRlZ3JpdHkgbWlzbWF0Y2gnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gMi4gU2V0IHJlc3BvbnNlXHUyMDE5cyBib2R5IHRvIGJ5dGVzIGFzIGEgYm9keS5cbiAgICAgIHJlc3BvbnNlLmJvZHkgPSBzYWZlbHlFeHRyYWN0Qm9keShieXRlcylbMF1cblxuICAgICAgLy8gMy4gUnVuIGZldGNoIGZpbmFsZSBnaXZlbiBmZXRjaFBhcmFtcyBhbmQgcmVzcG9uc2UuXG4gICAgICBmZXRjaEZpbmFsZShmZXRjaFBhcmFtcywgcmVzcG9uc2UpXG4gICAgfVxuXG4gICAgLy8gNC4gRnVsbHkgcmVhZCByZXNwb25zZVx1MjAxOXMgYm9keSBnaXZlbiBwcm9jZXNzQm9keSBhbmQgcHJvY2Vzc0JvZHlFcnJvci5cbiAgICBhd2FpdCBmdWxseVJlYWRCb2R5KHJlc3BvbnNlLmJvZHksIHByb2Nlc3NCb2R5LCBwcm9jZXNzQm9keUVycm9yKVxuICB9IGVsc2Uge1xuICAgIC8vIDIxLiBPdGhlcndpc2UsIHJ1biBmZXRjaCBmaW5hbGUgZ2l2ZW4gZmV0Y2hQYXJhbXMgYW5kIHJlc3BvbnNlLlxuICAgIGZldGNoRmluYWxlKGZldGNoUGFyYW1zLCByZXNwb25zZSlcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1zY2hlbWUtZmV0Y2hcbi8vIGdpdmVuIGEgZmV0Y2ggcGFyYW1zIGZldGNoUGFyYW1zXG5mdW5jdGlvbiBzY2hlbWVGZXRjaCAoZmV0Y2hQYXJhbXMpIHtcbiAgLy8gTm90ZTogc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgZGVzdHJveWVkIG9uIHJlZGlyZWN0LCB3aGljaCBzZXRzIGZldGNoUGFyYW1zIHRvIGFcbiAgLy8gY2FuY2VsbGVkIHN0YXRlLCB3ZSBkbyBub3Qgd2FudCB0aGlzIGNvbmRpdGlvbiB0byB0cmlnZ2VyICp1bmxlc3MqIHRoZXJlIGhhdmUgYmVlblxuICAvLyBubyByZWRpcmVjdHMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9pc3N1ZXMvMTc3NlxuICAvLyAxLiBJZiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZCwgdGhlbiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJyb3IgZm9yIGZldGNoUGFyYW1zLlxuICBpZiAoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpICYmIGZldGNoUGFyYW1zLnJlcXVlc3QucmVkaXJlY3RDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yKGZldGNoUGFyYW1zKSlcbiAgfVxuXG4gIC8vIDIuIExldCByZXF1ZXN0IGJlIGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0LlxuICBjb25zdCB7IHJlcXVlc3QgfSA9IGZldGNoUGFyYW1zXG5cbiAgY29uc3QgeyBwcm90b2NvbDogc2NoZW1lIH0gPSByZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KVxuXG4gIC8vIDMuIFN3aXRjaCBvbiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgc2NoZW1lIGFuZCBydW4gdGhlIGFzc29jaWF0ZWQgc3RlcHM6XG4gIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgY2FzZSAnYWJvdXQ6Jzoge1xuICAgICAgLy8gSWYgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHBhdGggaXMgdGhlIHN0cmluZyBcImJsYW5rXCIsIHRoZW4gcmV0dXJuIGEgbmV3IHJlc3BvbnNlXG4gICAgICAvLyB3aG9zZSBzdGF0dXMgbWVzc2FnZSBpcyBgT0tgLCBoZWFkZXIgbGlzdCBpcyBcdTAwQUIgKGBDb250ZW50LVR5cGVgLCBgdGV4dC9odG1sO2NoYXJzZXQ9dXRmLThgKSBcdTAwQkIsXG4gICAgICAvLyBhbmQgYm9keSBpcyB0aGUgZW1wdHkgYnl0ZSBzZXF1ZW5jZSBhcyBhIGJvZHkuXG5cbiAgICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcignYWJvdXQgc2NoZW1lIGlzIG5vdCBzdXBwb3J0ZWQnKSlcbiAgICB9XG4gICAgY2FzZSAnYmxvYjonOiB7XG4gICAgICBpZiAoIXJlc29sdmVPYmplY3RVUkwpIHtcbiAgICAgICAgcmVzb2x2ZU9iamVjdFVSTCA9IHJlcXVpcmUoJ2J1ZmZlcicpLnJlc29sdmVPYmplY3RVUkxcbiAgICAgIH1cblxuICAgICAgLy8gMS4gTGV0IGJsb2JVUkxFbnRyeSBiZSByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgYmxvYiBVUkwgZW50cnkuXG4gICAgICBjb25zdCBibG9iVVJMRW50cnkgPSByZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KVxuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9ibG9iLzdiMGViYWNjYzYyYjU2NmExOTY1Mzk2ZTViZTdiYjJiYzA2Zjg0MWYvRmlsZUFQSS91cmwvcmVzb3VyY2VzL2ZldGNoLXRlc3RzLmpzI0w1Mi1MNTZcbiAgICAgIC8vIEJ1ZmZlci5yZXNvbHZlT2JqZWN0VVJMIGRvZXMgbm90IGlnbm9yZSBVUkwgcXVlcmllcy5cbiAgICAgIGlmIChibG9iVVJMRW50cnkuc2VhcmNoLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ05ldHdvcmtFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2UuJykpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJsb2JVUkxFbnRyeU9iamVjdCA9IHJlc29sdmVPYmplY3RVUkwoYmxvYlVSTEVudHJ5LnRvU3RyaW5nKCkpXG5cbiAgICAgIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyBub3QgYEdFVGAsIGJsb2JVUkxFbnRyeSBpcyBudWxsLCBvciBibG9iVVJMRW50cnlcdTIwMTlzXG4gICAgICAvLyAgICBvYmplY3QgaXMgbm90IGEgQmxvYiBvYmplY3QsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCAhPT0gJ0dFVCcgfHwgIWlzQmxvYkxpa2UoYmxvYlVSTEVudHJ5T2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ2ludmFsaWQgbWV0aG9kJykpXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIExldCBib2R5V2l0aFR5cGUgYmUgdGhlIHJlc3VsdCBvZiBzYWZlbHkgZXh0cmFjdGluZyBibG9iVVJMRW50cnlcdTIwMTlzIG9iamVjdC5cbiAgICAgIGNvbnN0IGJvZHlXaXRoVHlwZSA9IHNhZmVseUV4dHJhY3RCb2R5KGJsb2JVUkxFbnRyeU9iamVjdClcblxuICAgICAgLy8gNC4gTGV0IGJvZHkgYmUgYm9keVdpdGhUeXBlXHUyMDE5cyBib2R5LlxuICAgICAgY29uc3QgYm9keSA9IGJvZHlXaXRoVHlwZVswXVxuXG4gICAgICAvLyA1LiBMZXQgbGVuZ3RoIGJlIGJvZHlcdTIwMTlzIGxlbmd0aCwgc2VyaWFsaXplZCBhbmQgaXNvbW9ycGhpYyBlbmNvZGVkLlxuICAgICAgY29uc3QgbGVuZ3RoID0gaXNvbW9ycGhpY0VuY29kZShgJHtib2R5Lmxlbmd0aH1gKVxuXG4gICAgICAvLyA2LiBMZXQgdHlwZSBiZSBib2R5V2l0aFR5cGVcdTIwMTlzIHR5cGUgaWYgaXQgaXMgbm9uLW51bGw7IG90aGVyd2lzZSB0aGUgZW1wdHkgYnl0ZSBzZXF1ZW5jZS5cbiAgICAgIGNvbnN0IHR5cGUgPSBib2R5V2l0aFR5cGVbMV0gPz8gJydcblxuICAgICAgLy8gNy4gUmV0dXJuIGEgbmV3IHJlc3BvbnNlIHdob3NlIHN0YXR1cyBtZXNzYWdlIGlzIGBPS2AsIGhlYWRlciBsaXN0IGlzXG4gICAgICAvLyAgICBcdTAwQUIgKGBDb250ZW50LUxlbmd0aGAsIGxlbmd0aCksIChgQ29udGVudC1UeXBlYCwgdHlwZSkgXHUwMEJCLCBhbmQgYm9keSBpcyBib2R5LlxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBtYWtlUmVzcG9uc2Uoe1xuICAgICAgICBzdGF0dXNUZXh0OiAnT0snLFxuICAgICAgICBoZWFkZXJzTGlzdDogW1xuICAgICAgICAgIFsnY29udGVudC1sZW5ndGgnLCB7IG5hbWU6ICdDb250ZW50LUxlbmd0aCcsIHZhbHVlOiBsZW5ndGggfV0sXG4gICAgICAgICAgWydjb250ZW50LXR5cGUnLCB7IG5hbWU6ICdDb250ZW50LVR5cGUnLCB2YWx1ZTogdHlwZSB9XVxuICAgICAgICBdXG4gICAgICB9KVxuXG4gICAgICByZXNwb25zZS5ib2R5ID0gYm9keVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKVxuICAgIH1cbiAgICBjYXNlICdkYXRhOic6IHtcbiAgICAgIC8vIDEuIExldCBkYXRhVVJMU3RydWN0IGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGVcbiAgICAgIC8vICAgIGRhdGE6IFVSTCBwcm9jZXNzb3Igb24gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkwuXG4gICAgICBjb25zdCBjdXJyZW50VVJMID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcbiAgICAgIGNvbnN0IGRhdGFVUkxTdHJ1Y3QgPSBkYXRhVVJMUHJvY2Vzc29yKGN1cnJlbnRVUkwpXG5cbiAgICAgIC8vIDIuIElmIGRhdGFVUkxTdHJ1Y3QgaXMgZmFpbHVyZSwgdGhlbiByZXR1cm4gYVxuICAgICAgLy8gICAgbmV0d29yayBlcnJvci5cbiAgICAgIGlmIChkYXRhVVJMU3RydWN0ID09PSAnZmFpbHVyZScpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdmYWlsZWQgdG8gZmV0Y2ggdGhlIGRhdGEgVVJMJykpXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIExldCBtaW1lVHlwZSBiZSBkYXRhVVJMU3RydWN0XHUyMDE5cyBNSU1FIHR5cGUsIHNlcmlhbGl6ZWQuXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHNlcmlhbGl6ZUFNaW1lVHlwZShkYXRhVVJMU3RydWN0Lm1pbWVUeXBlKVxuXG4gICAgICAvLyA0LiBSZXR1cm4gYSByZXNwb25zZSB3aG9zZSBzdGF0dXMgbWVzc2FnZSBpcyBgT0tgLFxuICAgICAgLy8gICAgaGVhZGVyIGxpc3QgaXMgXHUwMEFCIChgQ29udGVudC1UeXBlYCwgbWltZVR5cGUpIFx1MDBCQixcbiAgICAgIC8vICAgIGFuZCBib2R5IGlzIGRhdGFVUkxTdHJ1Y3RcdTIwMTlzIGJvZHkgYXMgYSBib2R5LlxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlUmVzcG9uc2Uoe1xuICAgICAgICBzdGF0dXNUZXh0OiAnT0snLFxuICAgICAgICBoZWFkZXJzTGlzdDogW1xuICAgICAgICAgIFsnY29udGVudC10eXBlJywgeyBuYW1lOiAnQ29udGVudC1UeXBlJywgdmFsdWU6IG1pbWVUeXBlIH1dXG4gICAgICAgIF0sXG4gICAgICAgIGJvZHk6IHNhZmVseUV4dHJhY3RCb2R5KGRhdGFVUkxTdHJ1Y3QuYm9keSlbMF1cbiAgICAgIH0pKVxuICAgIH1cbiAgICBjYXNlICdmaWxlOic6IHtcbiAgICAgIC8vIEZvciBub3csIHVuZm9ydHVuYXRlIGFzIGl0IGlzLCBmaWxlIFVSTHMgYXJlIGxlZnQgYXMgYW4gZXhlcmNpc2UgZm9yIHRoZSByZWFkZXIuXG4gICAgICAvLyBXaGVuIGluIGRvdWJ0LCByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdub3QgaW1wbGVtZW50ZWQuLi4geWV0Li4uJykpXG4gICAgfVxuICAgIGNhc2UgJ2h0dHA6JzpcbiAgICBjYXNlICdodHRwczonOiB7XG4gICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBvZiBydW5uaW5nIEhUVFAgZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMuXG5cbiAgICAgIHJldHVybiBodHRwRmV0Y2goZmV0Y2hQYXJhbXMpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBtYWtlTmV0d29ya0Vycm9yKGVycikpXG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcigndW5rbm93biBzY2hlbWUnKSlcbiAgICB9XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZpbmFsaXplLXJlc3BvbnNlXG5mdW5jdGlvbiBmaW5hbGl6ZVJlc3BvbnNlIChmZXRjaFBhcmFtcywgcmVzcG9uc2UpIHtcbiAgLy8gMS4gU2V0IGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBkb25lIGZsYWcuXG4gIGZldGNoUGFyYW1zLnJlcXVlc3QuZG9uZSA9IHRydWVcblxuICAvLyAyLCBJZiBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXNwb25zZSBkb25lIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgZmV0Y2hcbiAgLy8gdGFzayB0byBydW4gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVzcG9uc2UgZG9uZSBnaXZlbiByZXNwb25zZSwgd2l0aFxuICAvLyBmZXRjaFBhcmFtc1x1MjAxOXMgdGFzayBkZXN0aW5hdGlvbi5cbiAgaWYgKGZldGNoUGFyYW1zLnByb2Nlc3NSZXNwb25zZURvbmUgIT0gbnVsbCkge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGZldGNoUGFyYW1zLnByb2Nlc3NSZXNwb25zZURvbmUocmVzcG9uc2UpKVxuICB9XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmZXRjaC1maW5hbGVcbmZ1bmN0aW9uIGZldGNoRmluYWxlIChmZXRjaFBhcmFtcywgcmVzcG9uc2UpIHtcbiAgLy8gMS4gSWYgcmVzcG9uc2UgaXMgYSBuZXR3b3JrIGVycm9yLCB0aGVuOlxuICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIC8vIDEuIFNldCByZXNwb25zZVx1MjAxOXMgVVJMIGxpc3QgdG8gXHUwMEFCIGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBVUkwgbGlzdFswXSBcdTAwQkIuXG4gICAgcmVzcG9uc2UudXJsTGlzdCA9IFtmZXRjaFBhcmFtcy5yZXF1ZXN0LnVybExpc3RbMF1dXG5cbiAgICAvLyAyLiBTZXQgcmVzcG9uc2VcdTIwMTlzIHRpbWluZyBpbmZvIHRvIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYW4gb3BhcXVlIHRpbWluZ1xuICAgIC8vIGluZm8gZm9yIGZldGNoUGFyYW1zXHUyMDE5cyB0aW1pbmcgaW5mby5cbiAgICByZXNwb25zZS50aW1pbmdJbmZvID0gY3JlYXRlT3BhcXVlVGltaW5nSW5mbyh7XG4gICAgICBzdGFydFRpbWU6IGZldGNoUGFyYW1zLnRpbWluZ0luZm8uc3RhcnRUaW1lXG4gICAgfSlcbiAgfVxuXG4gIC8vIDIuIExldCBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkgYmUgdGhlIGZvbGxvd2luZyBzdGVwczpcbiAgY29uc3QgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5ID0gKCkgPT4ge1xuICAgIC8vIDEuIFNldCBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgZG9uZSBmbGFnLlxuICAgIGZldGNoUGFyYW1zLnJlcXVlc3QuZG9uZSA9IHRydWVcblxuICAgIC8vIElmIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlc3BvbnNlIGVuZC1vZi1ib2R5IGlzIG5vdCBudWxsLFxuICAgIC8vIHRoZW4gcXVldWUgYSBmZXRjaCB0YXNrIHRvIHJ1biBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXNwb25zZVxuICAgIC8vIGVuZC1vZi1ib2R5IGdpdmVuIHJlc3BvbnNlIHdpdGggZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gICAgaWYgKGZldGNoUGFyYW1zLnByb2Nlc3NSZXNwb25zZUVuZE9mQm9keSAhPSBudWxsKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkocmVzcG9uc2UpKVxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIElmIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlc3BvbnNlIGlzIG5vbi1udWxsLCB0aGVuIHF1ZXVlIGEgZmV0Y2ggdGFza1xuICAvLyB0byBydW4gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVzcG9uc2UgZ2l2ZW4gcmVzcG9uc2UsIHdpdGggZmV0Y2hQYXJhbXNcdTIwMTlzXG4gIC8vIHRhc2sgZGVzdGluYXRpb24uXG4gIGlmIChmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2UgIT0gbnVsbCkge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGZldGNoUGFyYW1zLnByb2Nlc3NSZXNwb25zZShyZXNwb25zZSkpXG4gIH1cblxuICAvLyA0LiBJZiByZXNwb25zZVx1MjAxOXMgYm9keSBpcyBudWxsLCB0aGVuIHJ1biBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkuXG4gIGlmIChyZXNwb25zZS5ib2R5ID09IG51bGwpIHtcbiAgICBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkoKVxuICB9IGVsc2Uge1xuICAvLyA1LiBPdGhlcndpc2U6XG5cbiAgICAvLyAxLiBMZXQgdHJhbnNmb3JtU3RyZWFtIGJlIGEgbmV3IGEgVHJhbnNmb3JtU3RyZWFtLlxuXG4gICAgLy8gMi4gTGV0IGlkZW50aXR5VHJhbnNmb3JtQWxnb3JpdGhtIGJlIGFuIGFsZ29yaXRobSB3aGljaCwgZ2l2ZW4gY2h1bmssXG4gICAgLy8gZW5xdWV1ZXMgY2h1bmsgaW4gdHJhbnNmb3JtU3RyZWFtLlxuICAgIGNvbnN0IGlkZW50aXR5VHJhbnNmb3JtQWxnb3JpdGhtID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspXG4gICAgfVxuXG4gICAgLy8gMy4gU2V0IHVwIHRyYW5zZm9ybVN0cmVhbSB3aXRoIHRyYW5zZm9ybUFsZ29yaXRobSBzZXQgdG8gaWRlbnRpdHlUcmFuc2Zvcm1BbGdvcml0aG1cbiAgICAvLyBhbmQgZmx1c2hBbGdvcml0aG0gc2V0IHRvIHByb2Nlc3NSZXNwb25zZUVuZE9mQm9keS5cbiAgICBjb25zdCB0cmFuc2Zvcm1TdHJlYW0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgIHN0YXJ0ICgpIHt9LFxuICAgICAgdHJhbnNmb3JtOiBpZGVudGl0eVRyYW5zZm9ybUFsZ29yaXRobSxcbiAgICAgIGZsdXNoOiBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHlcbiAgICB9LCB7XG4gICAgICBzaXplICgpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBzaXplICgpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gNC4gU2V0IHJlc3BvbnNlXHUyMDE5cyBib2R5IHRvIHRoZSByZXN1bHQgb2YgcGlwaW5nIHJlc3BvbnNlXHUyMDE5cyBib2R5IHRocm91Z2ggdHJhbnNmb3JtU3RyZWFtLlxuICAgIHJlc3BvbnNlLmJvZHkgPSB7IHN0cmVhbTogcmVzcG9uc2UuYm9keS5zdHJlYW0ucGlwZVRocm91Z2godHJhbnNmb3JtU3RyZWFtKSB9XG4gIH1cblxuICAvLyA2LiBJZiBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXNwb25zZSBjb25zdW1lIGJvZHkgaXMgbm9uLW51bGwsIHRoZW46XG4gIGlmIChmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VDb25zdW1lQm9keSAhPSBudWxsKSB7XG4gICAgLy8gMS4gTGV0IHByb2Nlc3NCb2R5IGdpdmVuIG51bGxPckJ5dGVzIGJlIHRoaXMgc3RlcDogcnVuIGZldGNoUGFyYW1zXHUyMDE5c1xuICAgIC8vIHByb2Nlc3MgcmVzcG9uc2UgY29uc3VtZSBib2R5IGdpdmVuIHJlc3BvbnNlIGFuZCBudWxsT3JCeXRlcy5cbiAgICBjb25zdCBwcm9jZXNzQm9keSA9IChudWxsT3JCeXRlcykgPT4gZmV0Y2hQYXJhbXMucHJvY2Vzc1Jlc3BvbnNlQ29uc3VtZUJvZHkocmVzcG9uc2UsIG51bGxPckJ5dGVzKVxuXG4gICAgLy8gMi4gTGV0IHByb2Nlc3NCb2R5RXJyb3IgYmUgdGhpcyBzdGVwOiBydW4gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3NcbiAgICAvLyByZXNwb25zZSBjb25zdW1lIGJvZHkgZ2l2ZW4gcmVzcG9uc2UgYW5kIGZhaWx1cmUuXG4gICAgY29uc3QgcHJvY2Vzc0JvZHlFcnJvciA9IChmYWlsdXJlKSA9PiBmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VDb25zdW1lQm9keShyZXNwb25zZSwgZmFpbHVyZSlcblxuICAgIC8vIDMuIElmIHJlc3BvbnNlXHUyMDE5cyBib2R5IGlzIG51bGwsIHRoZW4gcXVldWUgYSBmZXRjaCB0YXNrIHRvIHJ1biBwcm9jZXNzQm9keVxuICAgIC8vIGdpdmVuIG51bGwsIHdpdGggZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT0gbnVsbCkge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gcHJvY2Vzc0JvZHkobnVsbCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDQuIE90aGVyd2lzZSwgZnVsbHkgcmVhZCByZXNwb25zZVx1MjAxOXMgYm9keSBnaXZlbiBwcm9jZXNzQm9keSwgcHJvY2Vzc0JvZHlFcnJvcixcbiAgICAgIC8vIGFuZCBmZXRjaFBhcmFtc1x1MjAxOXMgdGFzayBkZXN0aW5hdGlvbi5cbiAgICAgIHJldHVybiBmdWxseVJlYWRCb2R5KHJlc3BvbnNlLmJvZHksIHByb2Nlc3NCb2R5LCBwcm9jZXNzQm9keUVycm9yKVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1mZXRjaFxuYXN5bmMgZnVuY3Rpb24gaHR0cEZldGNoIChmZXRjaFBhcmFtcykge1xuICAvLyAxLiBMZXQgcmVxdWVzdCBiZSBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdC5cbiAgY29uc3QgcmVxdWVzdCA9IGZldGNoUGFyYW1zLnJlcXVlc3RcblxuICAvLyAyLiBMZXQgcmVzcG9uc2UgYmUgbnVsbC5cbiAgbGV0IHJlc3BvbnNlID0gbnVsbFxuXG4gIC8vIDMuIExldCBhY3R1YWxSZXNwb25zZSBiZSBudWxsLlxuICBsZXQgYWN0dWFsUmVzcG9uc2UgPSBudWxsXG5cbiAgLy8gNC4gTGV0IHRpbWluZ0luZm8gYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHRpbWluZyBpbmZvLlxuICBjb25zdCB0aW1pbmdJbmZvID0gZmV0Y2hQYXJhbXMudGltaW5nSW5mb1xuXG4gIC8vIDUuIElmIHJlcXVlc3RcdTIwMTlzIHNlcnZpY2Utd29ya2VycyBtb2RlIGlzIFwiYWxsXCIsIHRoZW46XG4gIGlmIChyZXF1ZXN0LnNlcnZpY2VXb3JrZXJzID09PSAnYWxsJykge1xuICAgIC8vIFRPRE9cbiAgfVxuXG4gIC8vIDYuIElmIHJlc3BvbnNlIGlzIG51bGwsIHRoZW46XG4gIGlmIChyZXNwb25zZSA9PT0gbnVsbCkge1xuICAgIC8vIDEuIElmIG1ha2VDT1JTUHJlZmxpZ2h0IGlzIHRydWUgYW5kIG9uZSBvZiB0aGVzZSBjb25kaXRpb25zIGlzIHRydWU6XG4gICAgLy8gVE9ET1xuXG4gICAgLy8gMi4gSWYgcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgbW9kZSBpcyBcImZvbGxvd1wiLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5c1xuICAgIC8vIHNlcnZpY2Utd29ya2VycyBtb2RlIHRvIFwibm9uZVwiLlxuICAgIGlmIChyZXF1ZXN0LnJlZGlyZWN0ID09PSAnZm9sbG93Jykge1xuICAgICAgcmVxdWVzdC5zZXJ2aWNlV29ya2VycyA9ICdub25lJ1xuICAgIH1cblxuICAgIC8vIDMuIFNldCByZXNwb25zZSBhbmQgYWN0dWFsUmVzcG9uc2UgdG8gdGhlIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgLy8gSFRUUC1uZXR3b3JrLW9yLWNhY2hlIGZldGNoIGdpdmVuIGZldGNoUGFyYW1zLlxuICAgIGFjdHVhbFJlc3BvbnNlID0gcmVzcG9uc2UgPSBhd2FpdCBodHRwTmV0d29ya09yQ2FjaGVGZXRjaChmZXRjaFBhcmFtcylcblxuICAgIC8vIDQuIElmIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIGlzIFwiY29yc1wiIGFuZCBhIENPUlMgY2hlY2tcbiAgICAvLyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcmV0dXJucyBmYWlsdXJlLCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgaWYgKFxuICAgICAgcmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnY29ycycgJiZcbiAgICAgIGNvcnNDaGVjayhyZXF1ZXN0LCByZXNwb25zZSkgPT09ICdmYWlsdXJlJ1xuICAgICkge1xuICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ2NvcnMgZmFpbHVyZScpXG4gICAgfVxuXG4gICAgLy8gNS4gSWYgdGhlIFRBTyBjaGVjayBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcmV0dXJucyBmYWlsdXJlLCB0aGVuIHNldFxuICAgIC8vIHJlcXVlc3RcdTIwMTlzIHRpbWluZyBhbGxvdyBmYWlsZWQgZmxhZy5cbiAgICBpZiAoVEFPQ2hlY2socmVxdWVzdCwgcmVzcG9uc2UpID09PSAnZmFpbHVyZScpIHtcbiAgICAgIHJlcXVlc3QudGltaW5nQWxsb3dGYWlsZWQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgLy8gNy4gSWYgZWl0aGVyIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIG9yIHJlc3BvbnNlXHUyMDE5cyB0eXBlXG4gIC8vIGlzIFwib3BhcXVlXCIsIGFuZCB0aGUgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHBvbGljeSBjaGVjayB3aXRoXG4gIC8vIHJlcXVlc3RcdTIwMTlzIG9yaWdpbiwgcmVxdWVzdFx1MjAxOXMgY2xpZW50LCByZXF1ZXN0XHUyMDE5cyBkZXN0aW5hdGlvbixcbiAgLy8gYW5kIGFjdHVhbFJlc3BvbnNlIHJldHVybnMgYmxvY2tlZCwgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICBpZiAoXG4gICAgKHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ29wYXF1ZScgfHwgcmVzcG9uc2UudHlwZSA9PT0gJ29wYXF1ZScpICYmXG4gICAgY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNoZWNrKFxuICAgICAgcmVxdWVzdC5vcmlnaW4sXG4gICAgICByZXF1ZXN0LmNsaWVudCxcbiAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24sXG4gICAgICBhY3R1YWxSZXNwb25zZVxuICAgICkgPT09ICdibG9ja2VkJ1xuICApIHtcbiAgICByZXR1cm4gbWFrZU5ldHdvcmtFcnJvcignYmxvY2tlZCcpXG4gIH1cblxuICAvLyA4LiBJZiBhY3R1YWxSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIGEgcmVkaXJlY3Qgc3RhdHVzLCB0aGVuOlxuICBpZiAocmVkaXJlY3RTdGF0dXNTZXQuaGFzKGFjdHVhbFJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAvLyAxLiBJZiBhY3R1YWxSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIG5vdCAzMDMsIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbm90IG51bGwsXG4gICAgLy8gYW5kIHRoZSBjb25uZWN0aW9uIHVzZXMgSFRUUC8yLCB0aGVuIHVzZXIgYWdlbnRzIG1heSwgYW5kIGFyZSBldmVuXG4gICAgLy8gZW5jb3VyYWdlZCB0bywgdHJhbnNtaXQgYW4gUlNUX1NUUkVBTSBmcmFtZS5cbiAgICAvLyBTZWUsIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZmV0Y2gvaXNzdWVzLzEyODhcbiAgICBpZiAocmVxdWVzdC5yZWRpcmVjdCAhPT0gJ21hbnVhbCcpIHtcbiAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29ubmVjdGlvbi5kZXN0cm95KClcbiAgICB9XG5cbiAgICAvLyAyLiBTd2l0Y2ggb24gcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgbW9kZTpcbiAgICBpZiAocmVxdWVzdC5yZWRpcmVjdCA9PT0gJ2Vycm9yJykge1xuICAgICAgLy8gU2V0IHJlc3BvbnNlIHRvIGEgbmV0d29yayBlcnJvci5cbiAgICAgIHJlc3BvbnNlID0gbWFrZU5ldHdvcmtFcnJvcigndW5leHBlY3RlZCByZWRpcmVjdCcpXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LnJlZGlyZWN0ID09PSAnbWFudWFsJykge1xuICAgICAgLy8gU2V0IHJlc3BvbnNlIHRvIGFuIG9wYXF1ZS1yZWRpcmVjdCBmaWx0ZXJlZCByZXNwb25zZSB3aG9zZSBpbnRlcm5hbFxuICAgICAgLy8gcmVzcG9uc2UgaXMgYWN0dWFsUmVzcG9uc2UuXG4gICAgICAvLyBOT1RFKHNwZWMpOiBPbiB0aGUgd2ViIHRoaXMgd291bGQgcmV0dXJuIGFuIGBvcGFxdWVyZWRpcmVjdGAgcmVzcG9uc2UsXG4gICAgICAvLyBidXQgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ugc2VydmVyIHNpZGUuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzExOTMuXG4gICAgICByZXNwb25zZSA9IGFjdHVhbFJlc3BvbnNlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LnJlZGlyZWN0ID09PSAnZm9sbG93Jykge1xuICAgICAgLy8gU2V0IHJlc3BvbnNlIHRvIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQLXJlZGlyZWN0IGZldGNoIGdpdmVuXG4gICAgICAvLyBmZXRjaFBhcmFtcyBhbmQgcmVzcG9uc2UuXG4gICAgICByZXNwb25zZSA9IGF3YWl0IGh0dHBSZWRpcmVjdEZldGNoKGZldGNoUGFyYW1zLCByZXNwb25zZSlcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIDkuIFNldCByZXNwb25zZVx1MjAxOXMgdGltaW5nIGluZm8gdG8gdGltaW5nSW5mby5cbiAgcmVzcG9uc2UudGltaW5nSW5mbyA9IHRpbWluZ0luZm9cblxuICAvLyAxMC4gUmV0dXJuIHJlc3BvbnNlLlxuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcmVkaXJlY3QtZmV0Y2hcbmZ1bmN0aW9uIGh0dHBSZWRpcmVjdEZldGNoIChmZXRjaFBhcmFtcywgcmVzcG9uc2UpIHtcbiAgLy8gMS4gTGV0IHJlcXVlc3QgYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHJlcXVlc3QuXG4gIGNvbnN0IHJlcXVlc3QgPSBmZXRjaFBhcmFtcy5yZXF1ZXN0XG5cbiAgLy8gMi4gTGV0IGFjdHVhbFJlc3BvbnNlIGJlIHJlc3BvbnNlLCBpZiByZXNwb25zZSBpcyBub3QgYSBmaWx0ZXJlZCByZXNwb25zZSxcbiAgLy8gYW5kIHJlc3BvbnNlXHUyMDE5cyBpbnRlcm5hbCByZXNwb25zZSBvdGhlcndpc2UuXG4gIGNvbnN0IGFjdHVhbFJlc3BvbnNlID0gcmVzcG9uc2UuaW50ZXJuYWxSZXNwb25zZVxuICAgID8gcmVzcG9uc2UuaW50ZXJuYWxSZXNwb25zZVxuICAgIDogcmVzcG9uc2VcblxuICAvLyAzLiBMZXQgbG9jYXRpb25VUkwgYmUgYWN0dWFsUmVzcG9uc2VcdTIwMTlzIGxvY2F0aW9uIFVSTCBnaXZlbiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50XG4gIC8vIFVSTFx1MjAxOXMgZnJhZ21lbnQuXG4gIGxldCBsb2NhdGlvblVSTFxuXG4gIHRyeSB7XG4gICAgbG9jYXRpb25VUkwgPSByZXNwb25zZUxvY2F0aW9uVVJMKFxuICAgICAgYWN0dWFsUmVzcG9uc2UsXG4gICAgICByZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KS5oYXNoXG4gICAgKVxuXG4gICAgLy8gNC4gSWYgbG9jYXRpb25VUkwgaXMgbnVsbCwgdGhlbiByZXR1cm4gcmVzcG9uc2UuXG4gICAgaWYgKGxvY2F0aW9uVVJMID09IG51bGwpIHtcbiAgICAgIHJldHVybiByZXNwb25zZVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gNS4gSWYgbG9jYXRpb25VUkwgaXMgZmFpbHVyZSwgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcihlcnIpKVxuICB9XG5cbiAgLy8gNi4gSWYgbG9jYXRpb25VUkxcdTIwMTlzIHNjaGVtZSBpcyBub3QgYW4gSFRUUChTKSBzY2hlbWUsIHRoZW4gcmV0dXJuIGEgbmV0d29ya1xuICAvLyBlcnJvci5cbiAgaWYgKCF1cmxJc0h0dHBIdHRwc1NjaGVtZShsb2NhdGlvblVSTCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ1VSTCBzY2hlbWUgbXVzdCBiZSBhIEhUVFAoUykgc2NoZW1lJykpXG4gIH1cblxuICAvLyA3LiBJZiByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBjb3VudCBpcyAyMCwgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICBpZiAocmVxdWVzdC5yZWRpcmVjdENvdW50ID09PSAyMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcigncmVkaXJlY3QgY291bnQgZXhjZWVkZWQnKSlcbiAgfVxuXG4gIC8vIDguIEluY3JlYXNlIHJlcXVlc3RcdTIwMTlzIHJlZGlyZWN0IGNvdW50IGJ5IDEuXG4gIHJlcXVlc3QucmVkaXJlY3RDb3VudCArPSAxXG5cbiAgLy8gOS4gSWYgcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcImNvcnNcIiwgbG9jYXRpb25VUkwgaW5jbHVkZXMgY3JlZGVudGlhbHMsIGFuZFxuICAvLyByZXF1ZXN0XHUyMDE5cyBvcmlnaW4gaXMgbm90IHNhbWUgb3JpZ2luIHdpdGggbG9jYXRpb25VUkxcdTIwMTlzIG9yaWdpbiwgdGhlbiByZXR1cm5cbiAgLy8gIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKFxuICAgIHJlcXVlc3QubW9kZSA9PT0gJ2NvcnMnICYmXG4gICAgKGxvY2F0aW9uVVJMLnVzZXJuYW1lIHx8IGxvY2F0aW9uVVJMLnBhc3N3b3JkKSAmJlxuICAgICFzYW1lT3JpZ2luKHJlcXVlc3QsIGxvY2F0aW9uVVJMKVxuICApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ2Nyb3NzIG9yaWdpbiBub3QgYWxsb3dlZCBmb3IgcmVxdWVzdCBtb2RlIFwiY29yc1wiJykpXG4gIH1cblxuICAvLyAxMC4gSWYgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgaXMgXCJjb3JzXCIgYW5kIGxvY2F0aW9uVVJMIGluY2x1ZGVzXG4gIC8vIGNyZWRlbnRpYWxzLCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gIGlmIChcbiAgICByZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdjb3JzJyAmJlxuICAgIChsb2NhdGlvblVSTC51c2VybmFtZSB8fCBsb2NhdGlvblVSTC5wYXNzd29yZClcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKFxuICAgICAgJ1VSTCBjYW5ub3QgY29udGFpbiBjcmVkZW50aWFscyBmb3IgcmVxdWVzdCBtb2RlIFwiY29yc1wiJ1xuICAgICkpXG4gIH1cblxuICAvLyAxMS4gSWYgYWN0dWFsUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBub3QgMzAzLCByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vbi1udWxsLFxuICAvLyBhbmQgcmVxdWVzdFx1MjAxOXMgYm9keVx1MjAxOXMgc291cmNlIGlzIG51bGwsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKFxuICAgIGFjdHVhbFJlc3BvbnNlLnN0YXR1cyAhPT0gMzAzICYmXG4gICAgcmVxdWVzdC5ib2R5ICE9IG51bGwgJiZcbiAgICByZXF1ZXN0LmJvZHkuc291cmNlID09IG51bGxcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCkpXG4gIH1cblxuICAvLyAxMi4gSWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZVxuICAvLyAtIGFjdHVhbFJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgMzAxIG9yIDMwMiBhbmQgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIGlzIGBQT1NUYFxuICAvLyAtIGFjdHVhbFJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgMzAzIGFuZCByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgbm90IGBHRVRgIG9yIGBIRUFEYFxuICBpZiAoXG4gICAgKFszMDEsIDMwMl0uaW5jbHVkZXMoYWN0dWFsUmVzcG9uc2Uuc3RhdHVzKSAmJiByZXF1ZXN0Lm1ldGhvZCA9PT0gJ1BPU1QnKSB8fFxuICAgIChhY3R1YWxSZXNwb25zZS5zdGF0dXMgPT09IDMwMyAmJlxuICAgICAgIUdFVF9PUl9IRUFELmluY2x1ZGVzKHJlcXVlc3QubWV0aG9kKSlcbiAgKSB7XG4gICAgLy8gdGhlbjpcbiAgICAvLyAxLiBTZXQgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIHRvIGBHRVRgIGFuZCByZXF1ZXN0XHUyMDE5cyBib2R5IHRvIG51bGwuXG4gICAgcmVxdWVzdC5tZXRob2QgPSAnR0VUJ1xuICAgIHJlcXVlc3QuYm9keSA9IG51bGxcblxuICAgIC8vIDIuIEZvciBlYWNoIGhlYWRlck5hbWUgb2YgcmVxdWVzdC1ib2R5LWhlYWRlciBuYW1lLCBkZWxldGUgaGVhZGVyTmFtZSBmcm9tXG4gICAgLy8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgZm9yIChjb25zdCBoZWFkZXJOYW1lIG9mIHJlcXVlc3RCb2R5SGVhZGVyKSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmRlbGV0ZShoZWFkZXJOYW1lKVxuICAgIH1cbiAgfVxuXG4gIC8vIDEzLiBJZiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgb3JpZ2luIGlzIG5vdCBzYW1lIG9yaWdpbiB3aXRoIGxvY2F0aW9uVVJMXHUyMDE5c1xuICAvLyAgICAgb3JpZ2luLCB0aGVuIGZvciBlYWNoIGhlYWRlck5hbWUgb2YgQ09SUyBub24td2lsZGNhcmQgcmVxdWVzdC1oZWFkZXIgbmFtZSxcbiAgLy8gICAgIGRlbGV0ZSBoZWFkZXJOYW1lIGZyb20gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGlmICghc2FtZU9yaWdpbihyZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KSwgbG9jYXRpb25VUkwpKSB7XG4gICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvcnMtbm9uLXdpbGRjYXJkLXJlcXVlc3QtaGVhZGVyLW5hbWVcbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmRlbGV0ZSgnYXV0aG9yaXphdGlvbicpXG5cbiAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYXV0aGVudGljYXRpb24tZW50cmllc1xuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuZGVsZXRlKCdwcm94eS1hdXRob3JpemF0aW9uJywgdHJ1ZSlcblxuICAgIC8vIFwiQ29va2llXCIgYW5kIFwiSG9zdFwiIGFyZSBmb3JiaWRkZW4gcmVxdWVzdC1oZWFkZXJzLCB3aGljaCB1bmRpY2kgZG9lc24ndCBpbXBsZW1lbnQuXG4gICAgcmVxdWVzdC5oZWFkZXJzTGlzdC5kZWxldGUoJ2Nvb2tpZScpXG4gICAgcmVxdWVzdC5oZWFkZXJzTGlzdC5kZWxldGUoJ2hvc3QnKVxuICB9XG5cbiAgLy8gMTQuIElmIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbm9uLW51bGwsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIGJvZHkgdG8gdGhlIGZpcnN0IHJldHVyblxuICAvLyB2YWx1ZSBvZiBzYWZlbHkgZXh0cmFjdGluZyByZXF1ZXN0XHUyMDE5cyBib2R5XHUyMDE5cyBzb3VyY2UuXG4gIGlmIChyZXF1ZXN0LmJvZHkgIT0gbnVsbCkge1xuICAgIGFzc2VydChyZXF1ZXN0LmJvZHkuc291cmNlICE9IG51bGwpXG4gICAgcmVxdWVzdC5ib2R5ID0gc2FmZWx5RXh0cmFjdEJvZHkocmVxdWVzdC5ib2R5LnNvdXJjZSlbMF1cbiAgfVxuXG4gIC8vIDE1LiBMZXQgdGltaW5nSW5mbyBiZSBmZXRjaFBhcmFtc1x1MjAxOXMgdGltaW5nIGluZm8uXG4gIGNvbnN0IHRpbWluZ0luZm8gPSBmZXRjaFBhcmFtcy50aW1pbmdJbmZvXG5cbiAgLy8gMTYuIFNldCB0aW1pbmdJbmZvXHUyMDE5cyByZWRpcmVjdCBlbmQgdGltZSBhbmQgcG9zdC1yZWRpcmVjdCBzdGFydCB0aW1lIHRvIHRoZVxuICAvLyBjb2Fyc2VuZWQgc2hhcmVkIGN1cnJlbnQgdGltZSBnaXZlbiBmZXRjaFBhcmFtc1x1MjAxOXMgY3Jvc3Mtb3JpZ2luIGlzb2xhdGVkXG4gIC8vIGNhcGFiaWxpdHkuXG4gIHRpbWluZ0luZm8ucmVkaXJlY3RFbmRUaW1lID0gdGltaW5nSW5mby5wb3N0UmVkaXJlY3RTdGFydFRpbWUgPVxuICAgIGNvYXJzZW5lZFNoYXJlZEN1cnJlbnRUaW1lKGZldGNoUGFyYW1zLmNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5KVxuXG4gIC8vIDE3LiBJZiB0aW1pbmdJbmZvXHUyMDE5cyByZWRpcmVjdCBzdGFydCB0aW1lIGlzIDAsIHRoZW4gc2V0IHRpbWluZ0luZm9cdTIwMTlzXG4gIC8vICByZWRpcmVjdCBzdGFydCB0aW1lIHRvIHRpbWluZ0luZm9cdTIwMTlzIHN0YXJ0IHRpbWUuXG4gIGlmICh0aW1pbmdJbmZvLnJlZGlyZWN0U3RhcnRUaW1lID09PSAwKSB7XG4gICAgdGltaW5nSW5mby5yZWRpcmVjdFN0YXJ0VGltZSA9IHRpbWluZ0luZm8uc3RhcnRUaW1lXG4gIH1cblxuICAvLyAxOC4gQXBwZW5kIGxvY2F0aW9uVVJMIHRvIHJlcXVlc3RcdTIwMTlzIFVSTCBsaXN0LlxuICByZXF1ZXN0LnVybExpc3QucHVzaChsb2NhdGlvblVSTClcblxuICAvLyAxOS4gSW52b2tlIHNldCByZXF1ZXN0XHUyMDE5cyByZWZlcnJlciBwb2xpY3kgb24gcmVkaXJlY3Qgb24gcmVxdWVzdCBhbmRcbiAgLy8gYWN0dWFsUmVzcG9uc2UuXG4gIHNldFJlcXVlc3RSZWZlcnJlclBvbGljeU9uUmVkaXJlY3QocmVxdWVzdCwgYWN0dWFsUmVzcG9uc2UpXG5cbiAgLy8gMjAuIFJldHVybiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgbWFpbiBmZXRjaCBnaXZlbiBmZXRjaFBhcmFtcyBhbmQgdHJ1ZS5cbiAgcmV0dXJuIG1haW5GZXRjaChmZXRjaFBhcmFtcywgdHJ1ZSlcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtbmV0d29yay1vci1jYWNoZS1mZXRjaFxuYXN5bmMgZnVuY3Rpb24gaHR0cE5ldHdvcmtPckNhY2hlRmV0Y2ggKFxuICBmZXRjaFBhcmFtcyxcbiAgaXNBdXRoZW50aWNhdGlvbkZldGNoID0gZmFsc2UsXG4gIGlzTmV3Q29ubmVjdGlvbkZldGNoID0gZmFsc2Vcbikge1xuICAvLyAxLiBMZXQgcmVxdWVzdCBiZSBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdC5cbiAgY29uc3QgcmVxdWVzdCA9IGZldGNoUGFyYW1zLnJlcXVlc3RcblxuICAvLyAyLiBMZXQgaHR0cEZldGNoUGFyYW1zIGJlIG51bGwuXG4gIGxldCBodHRwRmV0Y2hQYXJhbXMgPSBudWxsXG5cbiAgLy8gMy4gTGV0IGh0dHBSZXF1ZXN0IGJlIG51bGwuXG4gIGxldCBodHRwUmVxdWVzdCA9IG51bGxcblxuICAvLyA0LiBMZXQgcmVzcG9uc2UgYmUgbnVsbC5cbiAgbGV0IHJlc3BvbnNlID0gbnVsbFxuXG4gIC8vIDUuIExldCBzdG9yZWRSZXNwb25zZSBiZSBudWxsLlxuICAvLyBUT0RPOiBjYWNoZVxuXG4gIC8vIDYuIExldCBodHRwQ2FjaGUgYmUgbnVsbC5cbiAgY29uc3QgaHR0cENhY2hlID0gbnVsbFxuXG4gIC8vIDcuIExldCB0aGUgcmV2YWxpZGF0aW5nRmxhZyBiZSB1bnNldC5cbiAgY29uc3QgcmV2YWxpZGF0aW5nRmxhZyA9IGZhbHNlXG5cbiAgLy8gOC4gUnVuIHRoZXNlIHN0ZXBzLCBidXQgYWJvcnQgd2hlbiB0aGUgb25nb2luZyBmZXRjaCBpcyB0ZXJtaW5hdGVkOlxuXG4gIC8vICAgIDEuIElmIHJlcXVlc3RcdTIwMTlzIHdpbmRvdyBpcyBcIm5vLXdpbmRvd1wiIGFuZCByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBtb2RlIGlzXG4gIC8vICAgIFwiZXJyb3JcIiwgdGhlbiBzZXQgaHR0cEZldGNoUGFyYW1zIHRvIGZldGNoUGFyYW1zIGFuZCBodHRwUmVxdWVzdCB0b1xuICAvLyAgICByZXF1ZXN0LlxuICBpZiAocmVxdWVzdC53aW5kb3cgPT09ICduby13aW5kb3cnICYmIHJlcXVlc3QucmVkaXJlY3QgPT09ICdlcnJvcicpIHtcbiAgICBodHRwRmV0Y2hQYXJhbXMgPSBmZXRjaFBhcmFtc1xuICAgIGh0dHBSZXF1ZXN0ID0gcmVxdWVzdFxuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZTpcblxuICAgIC8vIDEuIFNldCBodHRwUmVxdWVzdCB0byBhIGNsb25lIG9mIHJlcXVlc3QuXG4gICAgaHR0cFJlcXVlc3QgPSBtYWtlUmVxdWVzdChyZXF1ZXN0KVxuXG4gICAgLy8gMi4gU2V0IGh0dHBGZXRjaFBhcmFtcyB0byBhIGNvcHkgb2YgZmV0Y2hQYXJhbXMuXG4gICAgaHR0cEZldGNoUGFyYW1zID0geyAuLi5mZXRjaFBhcmFtcyB9XG5cbiAgICAvLyAzLiBTZXQgaHR0cEZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0IHRvIGh0dHBSZXF1ZXN0LlxuICAgIGh0dHBGZXRjaFBhcmFtcy5yZXF1ZXN0ID0gaHR0cFJlcXVlc3RcbiAgfVxuXG4gIC8vICAgIDMuIExldCBpbmNsdWRlQ3JlZGVudGlhbHMgYmUgdHJ1ZSBpZiBvbmUgb2ZcbiAgY29uc3QgaW5jbHVkZUNyZWRlbnRpYWxzID1cbiAgICByZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScgfHxcbiAgICAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ3NhbWUtb3JpZ2luJyAmJlxuICAgICAgcmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnYmFzaWMnKVxuXG4gIC8vICAgIDQuIExldCBjb250ZW50TGVuZ3RoIGJlIGh0dHBSZXF1ZXN0XHUyMDE5cyBib2R5XHUyMDE5cyBsZW5ndGgsIGlmIGh0dHBSZXF1ZXN0XHUyMDE5c1xuICAvLyAgICBib2R5IGlzIG5vbi1udWxsOyBvdGhlcndpc2UgbnVsbC5cbiAgY29uc3QgY29udGVudExlbmd0aCA9IGh0dHBSZXF1ZXN0LmJvZHkgPyBodHRwUmVxdWVzdC5ib2R5Lmxlbmd0aCA6IG51bGxcblxuICAvLyAgICA1LiBMZXQgY29udGVudExlbmd0aEhlYWRlclZhbHVlIGJlIG51bGwuXG4gIGxldCBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgPSBudWxsXG5cbiAgLy8gICAgNi4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbnVsbCBhbmQgaHR0cFJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyBgUE9TVGAgb3JcbiAgLy8gICAgYFBVVGAsIHRoZW4gc2V0IGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSB0byBgMGAuXG4gIGlmIChcbiAgICBodHRwUmVxdWVzdC5ib2R5ID09IG51bGwgJiZcbiAgICBbJ1BPU1QnLCAnUFVUJ10uaW5jbHVkZXMoaHR0cFJlcXVlc3QubWV0aG9kKVxuICApIHtcbiAgICBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgPSAnMCdcbiAgfVxuXG4gIC8vICAgIDcuIElmIGNvbnRlbnRMZW5ndGggaXMgbm9uLW51bGwsIHRoZW4gc2V0IGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSB0b1xuICAvLyAgICBjb250ZW50TGVuZ3RoLCBzZXJpYWxpemVkIGFuZCBpc29tb3JwaGljIGVuY29kZWQuXG4gIGlmIChjb250ZW50TGVuZ3RoICE9IG51bGwpIHtcbiAgICBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgPSBpc29tb3JwaGljRW5jb2RlKGAke2NvbnRlbnRMZW5ndGh9YClcbiAgfVxuXG4gIC8vICAgIDguIElmIGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSBpcyBub24tbnVsbCwgdGhlbiBhcHBlbmRcbiAgLy8gICAgYENvbnRlbnQtTGVuZ3RoYC9jb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlclxuICAvLyAgICBsaXN0LlxuICBpZiAoY29udGVudExlbmd0aEhlYWRlclZhbHVlICE9IG51bGwpIHtcbiAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2NvbnRlbnQtbGVuZ3RoJywgY29udGVudExlbmd0aEhlYWRlclZhbHVlKVxuICB9XG5cbiAgLy8gICAgOS4gSWYgY29udGVudExlbmd0aEhlYWRlclZhbHVlIGlzIG5vbi1udWxsLCB0aGVuIGFwcGVuZCAoYENvbnRlbnQtTGVuZ3RoYCxcbiAgLy8gICAgY29udGVudExlbmd0aEhlYWRlclZhbHVlKSB0byBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG5cbiAgLy8gICAgMTAuIElmIGNvbnRlbnRMZW5ndGggaXMgbm9uLW51bGwgYW5kIGh0dHBSZXF1ZXN0XHUyMDE5cyBrZWVwYWxpdmUgaXMgdHJ1ZSxcbiAgLy8gICAgdGhlbjpcbiAgaWYgKGNvbnRlbnRMZW5ndGggIT0gbnVsbCAmJiBodHRwUmVxdWVzdC5rZWVwYWxpdmUpIHtcbiAgICAvLyBOT1RFOiBrZWVwYWxpdmUgaXMgYSBub29wIG91dHNpZGUgb2YgYnJvd3NlciBjb250ZXh0LlxuICB9XG5cbiAgLy8gICAgMTEuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyByZWZlcnJlciBpcyBhIFVSTCwgdGhlbiBhcHBlbmRcbiAgLy8gICAgYFJlZmVyZXJgL2h0dHBSZXF1ZXN0XHUyMDE5cyByZWZlcnJlciwgc2VyaWFsaXplZCBhbmQgaXNvbW9ycGhpYyBlbmNvZGVkLFxuICAvLyAgICAgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoaHR0cFJlcXVlc3QucmVmZXJyZXIgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ3JlZmVyZXInLCBpc29tb3JwaGljRW5jb2RlKGh0dHBSZXF1ZXN0LnJlZmVycmVyLmhyZWYpKVxuICB9XG5cbiAgLy8gICAgMTIuIEFwcGVuZCBhIHJlcXVlc3QgYE9yaWdpbmAgaGVhZGVyIGZvciBodHRwUmVxdWVzdC5cbiAgYXBwZW5kUmVxdWVzdE9yaWdpbkhlYWRlcihodHRwUmVxdWVzdClcblxuICAvLyAgICAxMy4gQXBwZW5kIHRoZSBGZXRjaCBtZXRhZGF0YSBoZWFkZXJzIGZvciBodHRwUmVxdWVzdC4gW0ZFVENILU1FVEFEQVRBXVxuICBhcHBlbmRGZXRjaE1ldGFkYXRhKGh0dHBSZXF1ZXN0KVxuXG4gIC8vICAgIDE0LiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgVXNlci1BZ2VudGAsIHRoZW5cbiAgLy8gICAgdXNlciBhZ2VudHMgc2hvdWxkIGFwcGVuZCBgVXNlci1BZ2VudGAvZGVmYXVsdCBgVXNlci1BZ2VudGAgdmFsdWUgdG9cbiAgLy8gICAgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoIWh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCd1c2VyLWFnZW50JykpIHtcbiAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ3VzZXItYWdlbnQnLCB0eXBlb2YgZXNidWlsZERldGVjdGlvbiA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kaWNpJyA6ICdub2RlJylcbiAgfVxuXG4gIC8vICAgIDE1LiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpcyBcImRlZmF1bHRcIiBhbmQgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlclxuICAvLyAgICBsaXN0IGNvbnRhaW5zIGBJZi1Nb2RpZmllZC1TaW5jZWAsIGBJZi1Ob25lLU1hdGNoYCxcbiAgLy8gICAgYElmLVVubW9kaWZpZWQtU2luY2VgLCBgSWYtTWF0Y2hgLCBvciBgSWYtUmFuZ2VgLCB0aGVuIHNldFxuICAvLyAgICBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSB0byBcIm5vLXN0b3JlXCIuXG4gIGlmIChcbiAgICBodHRwUmVxdWVzdC5jYWNoZSA9PT0gJ2RlZmF1bHQnICYmXG4gICAgKGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdpZi1tb2RpZmllZC1zaW5jZScpIHx8XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnaWYtbm9uZS1tYXRjaCcpIHx8XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnaWYtdW5tb2RpZmllZC1zaW5jZScpIHx8XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnaWYtbWF0Y2gnKSB8fFxuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2lmLXJhbmdlJykpXG4gICkge1xuICAgIGh0dHBSZXF1ZXN0LmNhY2hlID0gJ25vLXN0b3JlJ1xuICB9XG5cbiAgLy8gICAgMTYuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIGlzIFwibm8tY2FjaGVcIiwgaHR0cFJlcXVlc3RcdTIwMTlzIHByZXZlbnRcbiAgLy8gICAgbm8tY2FjaGUgY2FjaGUtY29udHJvbCBoZWFkZXIgbW9kaWZpY2F0aW9uIGZsYWcgaXMgdW5zZXQsIGFuZFxuICAvLyAgICBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgQ2FjaGUtQ29udHJvbGAsIHRoZW4gYXBwZW5kXG4gIC8vICAgIGBDYWNoZS1Db250cm9sYC9gbWF4LWFnZT0wYCB0byBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIGlmIChcbiAgICBodHRwUmVxdWVzdC5jYWNoZSA9PT0gJ25vLWNhY2hlJyAmJlxuICAgICFodHRwUmVxdWVzdC5wcmV2ZW50Tm9DYWNoZUNhY2hlQ29udHJvbEhlYWRlck1vZGlmaWNhdGlvbiAmJlxuICAgICFodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnY2FjaGUtY29udHJvbCcpXG4gICkge1xuICAgIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnY2FjaGUtY29udHJvbCcsICdtYXgtYWdlPTAnKVxuICB9XG5cbiAgLy8gICAgMTcuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIGlzIFwibm8tc3RvcmVcIiBvciBcInJlbG9hZFwiLCB0aGVuOlxuICBpZiAoaHR0cFJlcXVlc3QuY2FjaGUgPT09ICduby1zdG9yZScgfHwgaHR0cFJlcXVlc3QuY2FjaGUgPT09ICdyZWxvYWQnKSB7XG4gICAgLy8gMS4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYFByYWdtYWAsIHRoZW4gYXBwZW5kXG4gICAgLy8gYFByYWdtYWAvYG5vLWNhY2hlYCB0byBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgaWYgKCFodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygncHJhZ21hJykpIHtcbiAgICAgIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgncHJhZ21hJywgJ25vLWNhY2hlJylcbiAgICB9XG5cbiAgICAvLyAyLiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgQ2FjaGUtQ29udHJvbGAsXG4gICAgLy8gdGhlbiBhcHBlbmQgYENhY2hlLUNvbnRyb2xgL2Buby1jYWNoZWAgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIGlmICghaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2NhY2hlLWNvbnRyb2wnKSkge1xuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdjYWNoZS1jb250cm9sJywgJ25vLWNhY2hlJylcbiAgICB9XG4gIH1cblxuICAvLyAgICAxOC4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGNvbnRhaW5zIGBSYW5nZWAsIHRoZW4gYXBwZW5kXG4gIC8vICAgIGBBY2NlcHQtRW5jb2RpbmdgL2BpZGVudGl0eWAgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ3JhbmdlJykpIHtcbiAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2FjY2VwdC1lbmNvZGluZycsICdpZGVudGl0eScpXG4gIH1cblxuICAvLyAgICAxOS4gTW9kaWZ5IGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBwZXIgSFRUUC4gRG8gbm90IGFwcGVuZCBhIGdpdmVuXG4gIC8vICAgIGhlYWRlciBpZiBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgY29udGFpbnMgdGhhdCBoZWFkZXJcdTIwMTlzIG5hbWUuXG4gIC8vICAgIFRPRE86IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZmV0Y2gvaXNzdWVzLzEyODUjaXNzdWVjb21tZW50LTg5NjU2MDEyOVxuICBpZiAoIWh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdhY2NlcHQtZW5jb2RpbmcnKSkge1xuICAgIGlmICh1cmxIYXNIdHRwc1NjaGVtZShyZXF1ZXN0Q3VycmVudFVSTChodHRwUmVxdWVzdCkpKSB7XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2FjY2VwdC1lbmNvZGluZycsICdiciwgZ3ppcCwgZGVmbGF0ZScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnYWNjZXB0LWVuY29kaW5nJywgJ2d6aXAsIGRlZmxhdGUnKVxuICAgIH1cbiAgfVxuXG4gIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmRlbGV0ZSgnaG9zdCcpXG5cbiAgLy8gICAgMjAuIElmIGluY2x1ZGVDcmVkZW50aWFscyBpcyB0cnVlLCB0aGVuOlxuICBpZiAoaW5jbHVkZUNyZWRlbnRpYWxzKSB7XG4gICAgLy8gMS4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgbm90IGNvbmZpZ3VyZWQgdG8gYmxvY2sgY29va2llcyBmb3IgaHR0cFJlcXVlc3RcbiAgICAvLyAoc2VlIHNlY3Rpb24gNyBvZiBbQ09PS0lFU10pLCB0aGVuOlxuICAgIC8vIFRPRE86IGNyZWRlbnRpYWxzXG4gICAgLy8gMi4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYEF1dGhvcml6YXRpb25gLCB0aGVuOlxuICAgIC8vIFRPRE86IGNyZWRlbnRpYWxzXG4gIH1cblxuICAvLyAgICAyMS4gSWYgdGhlcmVcdTIwMTlzIGEgcHJveHktYXV0aGVudGljYXRpb24gZW50cnksIHVzZSBpdCBhcyBhcHByb3ByaWF0ZS5cbiAgLy8gICAgVE9ETzogcHJveHktYXV0aGVudGljYXRpb25cblxuICAvLyAgICAyMi4gU2V0IGh0dHBDYWNoZSB0byB0aGUgcmVzdWx0IG9mIGRldGVybWluaW5nIHRoZSBIVFRQIGNhY2hlXG4gIC8vICAgIHBhcnRpdGlvbiwgZ2l2ZW4gaHR0cFJlcXVlc3QuXG4gIC8vICAgIFRPRE86IGNhY2hlXG5cbiAgLy8gICAgMjMuIElmIGh0dHBDYWNoZSBpcyBudWxsLCB0aGVuIHNldCBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSB0b1xuICAvLyAgICBcIm5vLXN0b3JlXCIuXG4gIGlmIChodHRwQ2FjaGUgPT0gbnVsbCkge1xuICAgIGh0dHBSZXF1ZXN0LmNhY2hlID0gJ25vLXN0b3JlJ1xuICB9XG5cbiAgLy8gICAgMjQuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIGlzIG5laXRoZXIgXCJuby1zdG9yZVwiIG5vciBcInJlbG9hZFwiLFxuICAvLyAgICB0aGVuOlxuICBpZiAoaHR0cFJlcXVlc3QubW9kZSAhPT0gJ25vLXN0b3JlJyAmJiBodHRwUmVxdWVzdC5tb2RlICE9PSAncmVsb2FkJykge1xuICAgIC8vIFRPRE86IGNhY2hlXG4gIH1cblxuICAvLyA5LiBJZiBhYm9ydGVkLCB0aGVuIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBlcnJvciBmb3IgZmV0Y2hQYXJhbXMuXG4gIC8vIFRPRE9cblxuICAvLyAxMC4gSWYgcmVzcG9uc2UgaXMgbnVsbCwgdGhlbjpcbiAgaWYgKHJlc3BvbnNlID09IG51bGwpIHtcbiAgICAvLyAxLiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpcyBcIm9ubHktaWYtY2FjaGVkXCIsIHRoZW4gcmV0dXJuIGFcbiAgICAvLyBuZXR3b3JrIGVycm9yLlxuICAgIGlmIChodHRwUmVxdWVzdC5tb2RlID09PSAnb25seS1pZi1jYWNoZWQnKSB7XG4gICAgICByZXR1cm4gbWFrZU5ldHdvcmtFcnJvcignb25seSBpZiBjYWNoZWQnKVxuICAgIH1cblxuICAgIC8vIDIuIExldCBmb3J3YXJkUmVzcG9uc2UgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIEhUVFAtbmV0d29yayBmZXRjaFxuICAgIC8vIGdpdmVuIGh0dHBGZXRjaFBhcmFtcywgaW5jbHVkZUNyZWRlbnRpYWxzLCBhbmQgaXNOZXdDb25uZWN0aW9uRmV0Y2guXG4gICAgY29uc3QgZm9yd2FyZFJlc3BvbnNlID0gYXdhaXQgaHR0cE5ldHdvcmtGZXRjaChcbiAgICAgIGh0dHBGZXRjaFBhcmFtcyxcbiAgICAgIGluY2x1ZGVDcmVkZW50aWFscyxcbiAgICAgIGlzTmV3Q29ubmVjdGlvbkZldGNoXG4gICAgKVxuXG4gICAgLy8gMy4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyB1bnNhZmUgYW5kIGZvcndhcmRSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzXG4gICAgLy8gaW4gdGhlIHJhbmdlIDIwMCB0byAzOTksIGluY2x1c2l2ZSwgaW52YWxpZGF0ZSBhcHByb3ByaWF0ZSBzdG9yZWRcbiAgICAvLyByZXNwb25zZXMgaW4gaHR0cENhY2hlLCBhcyBwZXIgdGhlIFwiSW52YWxpZGF0aW9uXCIgY2hhcHRlciBvZiBIVFRQXG4gICAgLy8gQ2FjaGluZywgYW5kIHNldCBzdG9yZWRSZXNwb25zZSB0byBudWxsLiBbSFRUUC1DQUNISU5HXVxuICAgIGlmIChcbiAgICAgICFzYWZlTWV0aG9kc1NldC5oYXMoaHR0cFJlcXVlc3QubWV0aG9kKSAmJlxuICAgICAgZm9yd2FyZFJlc3BvbnNlLnN0YXR1cyA+PSAyMDAgJiZcbiAgICAgIGZvcndhcmRSZXNwb25zZS5zdGF0dXMgPD0gMzk5XG4gICAgKSB7XG4gICAgICAvLyBUT0RPOiBjYWNoZVxuICAgIH1cblxuICAgIC8vIDQuIElmIHRoZSByZXZhbGlkYXRpbmdGbGFnIGlzIHNldCBhbmQgZm9yd2FyZFJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgMzA0LFxuICAgIC8vIHRoZW46XG4gICAgaWYgKHJldmFsaWRhdGluZ0ZsYWcgJiYgZm9yd2FyZFJlc3BvbnNlLnN0YXR1cyA9PT0gMzA0KSB7XG4gICAgICAvLyBUT0RPOiBjYWNoZVxuICAgIH1cblxuICAgIC8vIDUuIElmIHJlc3BvbnNlIGlzIG51bGwsIHRoZW46XG4gICAgaWYgKHJlc3BvbnNlID09IG51bGwpIHtcbiAgICAgIC8vIDEuIFNldCByZXNwb25zZSB0byBmb3J3YXJkUmVzcG9uc2UuXG4gICAgICByZXNwb25zZSA9IGZvcndhcmRSZXNwb25zZVxuXG4gICAgICAvLyAyLiBTdG9yZSBodHRwUmVxdWVzdCBhbmQgZm9yd2FyZFJlc3BvbnNlIGluIGh0dHBDYWNoZSwgYXMgcGVyIHRoZVxuICAgICAgLy8gXCJTdG9yaW5nIFJlc3BvbnNlcyBpbiBDYWNoZXNcIiBjaGFwdGVyIG9mIEhUVFAgQ2FjaGluZy4gW0hUVFAtQ0FDSElOR11cbiAgICAgIC8vIFRPRE86IGNhY2hlXG4gICAgfVxuICB9XG5cbiAgLy8gMTEuIFNldCByZXNwb25zZVx1MjAxOXMgVVJMIGxpc3QgdG8gYSBjbG9uZSBvZiBodHRwUmVxdWVzdFx1MjAxOXMgVVJMIGxpc3QuXG4gIHJlc3BvbnNlLnVybExpc3QgPSBbLi4uaHR0cFJlcXVlc3QudXJsTGlzdF1cblxuICAvLyAxMi4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGNvbnRhaW5zIGBSYW5nZWAsIHRoZW4gc2V0IHJlc3BvbnNlXHUyMDE5c1xuICAvLyByYW5nZS1yZXF1ZXN0ZWQgZmxhZy5cbiAgaWYgKGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdyYW5nZScpKSB7XG4gICAgcmVzcG9uc2UucmFuZ2VSZXF1ZXN0ZWQgPSB0cnVlXG4gIH1cblxuICAvLyAxMy4gU2V0IHJlc3BvbnNlXHUyMDE5cyByZXF1ZXN0LWluY2x1ZGVzLWNyZWRlbnRpYWxzIHRvIGluY2x1ZGVDcmVkZW50aWFscy5cbiAgcmVzcG9uc2UucmVxdWVzdEluY2x1ZGVzQ3JlZGVudGlhbHMgPSBpbmNsdWRlQ3JlZGVudGlhbHNcblxuICAvLyAxNC4gSWYgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyA0MDEsIGh0dHBSZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBub3RcbiAgLy8gXCJjb3JzXCIsIGluY2x1ZGVDcmVkZW50aWFscyBpcyB0cnVlLCBhbmQgcmVxdWVzdFx1MjAxOXMgd2luZG93IGlzIGFuIGVudmlyb25tZW50XG4gIC8vIHNldHRpbmdzIG9iamVjdCwgdGhlbjpcbiAgLy8gVE9ET1xuXG4gIC8vIDE1LiBJZiByZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDQwNywgdGhlbjpcbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA3KSB7XG4gICAgLy8gMS4gSWYgcmVxdWVzdFx1MjAxOXMgd2luZG93IGlzIFwibm8td2luZG93XCIsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICBpZiAocmVxdWVzdC53aW5kb3cgPT09ICduby13aW5kb3cnKSB7XG4gICAgICByZXR1cm4gbWFrZU5ldHdvcmtFcnJvcigpXG4gICAgfVxuXG4gICAgLy8gMi4gPz8/XG5cbiAgICAvLyAzLiBJZiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZCwgdGhlbiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJyb3IgZm9yIGZldGNoUGFyYW1zLlxuICAgIGlmIChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgIHJldHVybiBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IoZmV0Y2hQYXJhbXMpXG4gICAgfVxuXG4gICAgLy8gNC4gUHJvbXB0IHRoZSBlbmQgdXNlciBhcyBhcHByb3ByaWF0ZSBpbiByZXF1ZXN0XHUyMDE5cyB3aW5kb3cgYW5kIHN0b3JlXG4gICAgLy8gdGhlIHJlc3VsdCBhcyBhIHByb3h5LWF1dGhlbnRpY2F0aW9uIGVudHJ5LiBbSFRUUC1BVVRIXVxuICAgIC8vIFRPRE86IEludm9rZSBzb21lIGtpbmQgb2YgY2FsbGJhY2s/XG5cbiAgICAvLyA1LiBTZXQgcmVzcG9uc2UgdG8gdGhlIHJlc3VsdCBvZiBydW5uaW5nIEhUVFAtbmV0d29yay1vci1jYWNoZSBmZXRjaCBnaXZlblxuICAgIC8vIGZldGNoUGFyYW1zLlxuICAgIC8vIFRPRE9cbiAgICByZXR1cm4gbWFrZU5ldHdvcmtFcnJvcigncHJveHkgYXV0aGVudGljYXRpb24gcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gMTYuIElmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlXG4gIGlmIChcbiAgICAvLyByZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDQyMVxuICAgIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDIxICYmXG4gICAgLy8gaXNOZXdDb25uZWN0aW9uRmV0Y2ggaXMgZmFsc2VcbiAgICAhaXNOZXdDb25uZWN0aW9uRmV0Y2ggJiZcbiAgICAvLyByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG51bGwsIG9yIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbm9uLW51bGwgYW5kIHJlcXVlc3RcdTIwMTlzIGJvZHlcdTIwMTlzIHNvdXJjZSBpcyBub24tbnVsbFxuICAgIChyZXF1ZXN0LmJvZHkgPT0gbnVsbCB8fCByZXF1ZXN0LmJvZHkuc291cmNlICE9IG51bGwpXG4gICkge1xuICAgIC8vIHRoZW46XG5cbiAgICAvLyAxLiBJZiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZCwgdGhlbiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJyb3IgZm9yIGZldGNoUGFyYW1zLlxuICAgIGlmIChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgIHJldHVybiBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IoZmV0Y2hQYXJhbXMpXG4gICAgfVxuXG4gICAgLy8gMi4gU2V0IHJlc3BvbnNlIHRvIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQLW5ldHdvcmstb3ItY2FjaGVcbiAgICAvLyBmZXRjaCBnaXZlbiBmZXRjaFBhcmFtcywgaXNBdXRoZW50aWNhdGlvbkZldGNoLCBhbmQgdHJ1ZS5cblxuICAgIC8vIFRPRE8gKHNwZWMpOiBUaGUgc3BlYyBkb2Vzbid0IHNwZWNpZnkgdGhpcyBidXQgd2UgbmVlZCB0byBjYW5jZWxcbiAgICAvLyB0aGUgYWN0aXZlIHJlc3BvbnNlIGJlZm9yZSB3ZSBjYW4gc3RhcnQgYSBuZXcgb25lLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZmV0Y2gvaXNzdWVzLzEyOTNcbiAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbm5lY3Rpb24uZGVzdHJveSgpXG5cbiAgICByZXNwb25zZSA9IGF3YWl0IGh0dHBOZXR3b3JrT3JDYWNoZUZldGNoKFxuICAgICAgZmV0Y2hQYXJhbXMsXG4gICAgICBpc0F1dGhlbnRpY2F0aW9uRmV0Y2gsXG4gICAgICB0cnVlXG4gICAgKVxuICB9XG5cbiAgLy8gMTcuIElmIGlzQXV0aGVudGljYXRpb25GZXRjaCBpcyB0cnVlLCB0aGVuIGNyZWF0ZSBhbiBhdXRoZW50aWNhdGlvbiBlbnRyeVxuICBpZiAoaXNBdXRoZW50aWNhdGlvbkZldGNoKSB7XG4gICAgLy8gVE9ET1xuICB9XG5cbiAgLy8gMTguIFJldHVybiByZXNwb25zZS5cbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLW5ldHdvcmstZmV0Y2hcbmFzeW5jIGZ1bmN0aW9uIGh0dHBOZXR3b3JrRmV0Y2ggKFxuICBmZXRjaFBhcmFtcyxcbiAgaW5jbHVkZUNyZWRlbnRpYWxzID0gZmFsc2UsXG4gIGZvcmNlTmV3Q29ubmVjdGlvbiA9IGZhbHNlXG4pIHtcbiAgYXNzZXJ0KCFmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbm5lY3Rpb24gfHwgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb25uZWN0aW9uLmRlc3Ryb3llZClcblxuICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbm5lY3Rpb24gPSB7XG4gICAgYWJvcnQ6IG51bGwsXG4gICAgZGVzdHJveWVkOiBmYWxzZSxcbiAgICBkZXN0cm95IChlcnIpIHtcbiAgICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYWJvcnQ/LihlcnIgPz8gbmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIDEuIExldCByZXF1ZXN0IGJlIGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0LlxuICBjb25zdCByZXF1ZXN0ID0gZmV0Y2hQYXJhbXMucmVxdWVzdFxuXG4gIC8vIDIuIExldCByZXNwb25zZSBiZSBudWxsLlxuICBsZXQgcmVzcG9uc2UgPSBudWxsXG5cbiAgLy8gMy4gTGV0IHRpbWluZ0luZm8gYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHRpbWluZyBpbmZvLlxuICBjb25zdCB0aW1pbmdJbmZvID0gZmV0Y2hQYXJhbXMudGltaW5nSW5mb1xuXG4gIC8vIDQuIExldCBodHRwQ2FjaGUgYmUgdGhlIHJlc3VsdCBvZiBkZXRlcm1pbmluZyB0aGUgSFRUUCBjYWNoZSBwYXJ0aXRpb24sXG4gIC8vIGdpdmVuIHJlcXVlc3QuXG4gIC8vIFRPRE86IGNhY2hlXG4gIGNvbnN0IGh0dHBDYWNoZSA9IG51bGxcblxuICAvLyA1LiBJZiBodHRwQ2FjaGUgaXMgbnVsbCwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSB0byBcIm5vLXN0b3JlXCIuXG4gIGlmIChodHRwQ2FjaGUgPT0gbnVsbCkge1xuICAgIHJlcXVlc3QuY2FjaGUgPSAnbm8tc3RvcmUnXG4gIH1cblxuICAvLyA2LiBMZXQgbmV0d29ya1BhcnRpdGlvbktleSBiZSB0aGUgcmVzdWx0IG9mIGRldGVybWluaW5nIHRoZSBuZXR3b3JrXG4gIC8vIHBhcnRpdGlvbiBrZXkgZ2l2ZW4gcmVxdWVzdC5cbiAgLy8gVE9ET1xuXG4gIC8vIDcuIExldCBuZXdDb25uZWN0aW9uIGJlIFwieWVzXCIgaWYgZm9yY2VOZXdDb25uZWN0aW9uIGlzIHRydWU7IG90aGVyd2lzZVxuICAvLyBcIm5vXCIuXG4gIGNvbnN0IG5ld0Nvbm5lY3Rpb24gPSBmb3JjZU5ld0Nvbm5lY3Rpb24gPyAneWVzJyA6ICdubycgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gIC8vIDguIFN3aXRjaCBvbiByZXF1ZXN0XHUyMDE5cyBtb2RlOlxuICBpZiAocmVxdWVzdC5tb2RlID09PSAnd2Vic29ja2V0Jykge1xuICAgIC8vIExldCBjb25uZWN0aW9uIGJlIHRoZSByZXN1bHQgb2Ygb2J0YWluaW5nIGEgV2ViU29ja2V0IGNvbm5lY3Rpb24sXG4gICAgLy8gZ2l2ZW4gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkwuXG4gICAgLy8gVE9ET1xuICB9IGVsc2Uge1xuICAgIC8vIExldCBjb25uZWN0aW9uIGJlIHRoZSByZXN1bHQgb2Ygb2J0YWluaW5nIGEgY29ubmVjdGlvbiwgZ2l2ZW5cbiAgICAvLyBuZXR3b3JrUGFydGl0aW9uS2V5LCByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgb3JpZ2luLFxuICAgIC8vIGluY2x1ZGVDcmVkZW50aWFscywgYW5kIGZvcmNlTmV3Q29ubmVjdGlvbi5cbiAgICAvLyBUT0RPXG4gIH1cblxuICAvLyA5LiBSdW4gdGhlc2Ugc3RlcHMsIGJ1dCBhYm9ydCB3aGVuIHRoZSBvbmdvaW5nIGZldGNoIGlzIHRlcm1pbmF0ZWQ6XG5cbiAgLy8gICAgMS4gSWYgY29ubmVjdGlvbiBpcyBmYWlsdXJlLCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG5cbiAgLy8gICAgMi4gU2V0IHRpbWluZ0luZm9cdTIwMTlzIGZpbmFsIGNvbm5lY3Rpb24gdGltaW5nIGluZm8gdG8gdGhlIHJlc3VsdCBvZlxuICAvLyAgICBjYWxsaW5nIGNsYW1wIGFuZCBjb2Fyc2VuIGNvbm5lY3Rpb24gdGltaW5nIGluZm8gd2l0aCBjb25uZWN0aW9uXHUyMDE5c1xuICAvLyAgICB0aW1pbmcgaW5mbywgdGltaW5nSW5mb1x1MjAxOXMgcG9zdC1yZWRpcmVjdCBzdGFydCB0aW1lLCBhbmQgZmV0Y2hQYXJhbXNcdTIwMTlzXG4gIC8vICAgIGNyb3NzLW9yaWdpbiBpc29sYXRlZCBjYXBhYmlsaXR5LlxuXG4gIC8vICAgIDMuIElmIGNvbm5lY3Rpb24gaXMgbm90IGFuIEhUVFAvMiBjb25uZWN0aW9uLCByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vbi1udWxsLFxuICAvLyAgICBhbmQgcmVxdWVzdFx1MjAxOXMgYm9keVx1MjAxOXMgc291cmNlIGlzIG51bGwsIHRoZW4gYXBwZW5kIChgVHJhbnNmZXItRW5jb2RpbmdgLFxuICAvLyAgICBgY2h1bmtlZGApIHRvIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuXG4gIC8vICAgIDQuIFNldCB0aW1pbmdJbmZvXHUyMDE5cyBmaW5hbCBuZXR3b3JrLXJlcXVlc3Qgc3RhcnQgdGltZSB0byB0aGUgY29hcnNlbmVkXG4gIC8vICAgIHNoYXJlZCBjdXJyZW50IHRpbWUgZ2l2ZW4gZmV0Y2hQYXJhbXNcdTIwMTlzIGNyb3NzLW9yaWdpbiBpc29sYXRlZFxuICAvLyAgICBjYXBhYmlsaXR5LlxuXG4gIC8vICAgIDUuIFNldCByZXNwb25zZSB0byB0aGUgcmVzdWx0IG9mIG1ha2luZyBhbiBIVFRQIHJlcXVlc3Qgb3ZlciBjb25uZWN0aW9uXG4gIC8vICAgIHVzaW5nIHJlcXVlc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNhdmVhdHM6XG5cbiAgLy8gICAgICAgIC0gRm9sbG93IHRoZSByZWxldmFudCByZXF1aXJlbWVudHMgZnJvbSBIVFRQLiBbSFRUUF0gW0hUVFAtU0VNQU5USUNTXVxuICAvLyAgICAgICAgW0hUVFAtQ09ORF0gW0hUVFAtQ0FDSElOR10gW0hUVFAtQVVUSF1cblxuICAvLyAgICAgICAgLSBJZiByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vbi1udWxsLCBhbmQgcmVxdWVzdFx1MjAxOXMgYm9keVx1MjAxOXMgc291cmNlIGlzIG51bGwsXG4gIC8vICAgICAgICB0aGVuIHRoZSB1c2VyIGFnZW50IG1heSBoYXZlIGEgYnVmZmVyIG9mIHVwIHRvIDY0IGtpYmlieXRlcyBhbmQgc3RvcmVcbiAgLy8gICAgICAgIGEgcGFydCBvZiByZXF1ZXN0XHUyMDE5cyBib2R5IGluIHRoYXQgYnVmZmVyLiBJZiB0aGUgdXNlciBhZ2VudCByZWFkcyBmcm9tXG4gIC8vICAgICAgICByZXF1ZXN0XHUyMDE5cyBib2R5IGJleW9uZCB0aGF0IGJ1ZmZlclx1MjAxOXMgc2l6ZSBhbmQgdGhlIHVzZXIgYWdlbnQgbmVlZHMgdG9cbiAgLy8gICAgICAgIHJlc2VuZCByZXF1ZXN0LCB0aGVuIGluc3RlYWQgcmV0dXJuIGEgbmV0d29yayBlcnJvci5cblxuICAvLyAgICAgICAgLSBTZXQgdGltaW5nSW5mb1x1MjAxOXMgZmluYWwgbmV0d29yay1yZXNwb25zZSBzdGFydCB0aW1lIHRvIHRoZSBjb2Fyc2VuZWRcbiAgLy8gICAgICAgIHNoYXJlZCBjdXJyZW50IHRpbWUgZ2l2ZW4gZmV0Y2hQYXJhbXNcdTIwMTlzIGNyb3NzLW9yaWdpbiBpc29sYXRlZCBjYXBhYmlsaXR5LFxuICAvLyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHVzZXIgYWdlbnRcdTIwMTlzIEhUVFAgcGFyc2VyIHJlY2VpdmVzIHRoZSBmaXJzdCBieXRlXG4gIC8vICAgICAgICBvZiB0aGUgcmVzcG9uc2UgKGUuZy4sIGZyYW1lIGhlYWRlciBieXRlcyBmb3IgSFRUUC8yIG9yIHJlc3BvbnNlIHN0YXR1c1xuICAvLyAgICAgICAgbGluZSBmb3IgSFRUUC8xLngpLlxuXG4gIC8vICAgICAgICAtIFdhaXQgdW50aWwgYWxsIHRoZSBoZWFkZXJzIGFyZSB0cmFuc21pdHRlZC5cblxuICAvLyAgICAgICAgLSBBbnkgcmVzcG9uc2VzIHdob3NlIHN0YXR1cyBpcyBpbiB0aGUgcmFuZ2UgMTAwIHRvIDE5OSwgaW5jbHVzaXZlLFxuICAvLyAgICAgICAgYW5kIGlzIG5vdCAxMDEsIGFyZSB0byBiZSBpZ25vcmVkLCBleGNlcHQgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nXG4gIC8vICAgICAgICB0aW1pbmdJbmZvXHUyMDE5cyBmaW5hbCBuZXR3b3JrLXJlc3BvbnNlIHN0YXJ0IHRpbWUgYWJvdmUuXG5cbiAgLy8gICAgLSBJZiByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBjb250YWlucyBgVHJhbnNmZXItRW5jb2RpbmdgL2BjaHVua2VkYCBhbmRcbiAgLy8gICAgcmVzcG9uc2UgaXMgdHJhbnNmZXJyZWQgdmlhIEhUVFAvMS4wIG9yIG9sZGVyLCB0aGVuIHJldHVybiBhIG5ldHdvcmtcbiAgLy8gICAgZXJyb3IuXG5cbiAgLy8gICAgLSBJZiB0aGUgSFRUUCByZXF1ZXN0IHJlc3VsdHMgaW4gYSBUTFMgY2xpZW50IGNlcnRpZmljYXRlIGRpYWxvZywgdGhlbjpcblxuICAvLyAgICAgICAgMS4gSWYgcmVxdWVzdFx1MjAxOXMgd2luZG93IGlzIGFuIGVudmlyb25tZW50IHNldHRpbmdzIG9iamVjdCwgbWFrZSB0aGVcbiAgLy8gICAgICAgIGRpYWxvZyBhdmFpbGFibGUgaW4gcmVxdWVzdFx1MjAxOXMgd2luZG93LlxuXG4gIC8vICAgICAgICAyLiBPdGhlcndpc2UsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG5cbiAgLy8gVG8gdHJhbnNtaXQgcmVxdWVzdFx1MjAxOXMgYm9keSBib2R5LCBydW4gdGhlc2Ugc3RlcHM6XG4gIGxldCByZXF1ZXN0Qm9keSA9IG51bGxcbiAgLy8gMS4gSWYgYm9keSBpcyBudWxsIGFuZCBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXF1ZXN0IGVuZC1vZi1ib2R5IGlzXG4gIC8vIG5vbi1udWxsLCB0aGVuIHF1ZXVlIGEgZmV0Y2ggdGFzayBnaXZlbiBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXF1ZXN0XG4gIC8vIGVuZC1vZi1ib2R5IGFuZCBmZXRjaFBhcmFtc1x1MjAxOXMgdGFzayBkZXN0aW5hdGlvbi5cbiAgaWYgKHJlcXVlc3QuYm9keSA9PSBudWxsICYmIGZldGNoUGFyYW1zLnByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5KSB7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gZmV0Y2hQYXJhbXMucHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHkoKSlcbiAgfSBlbHNlIGlmIChyZXF1ZXN0LmJvZHkgIT0gbnVsbCkge1xuICAgIC8vIDIuIE90aGVyd2lzZSwgaWYgYm9keSBpcyBub24tbnVsbDpcblxuICAgIC8vICAgIDEuIExldCBwcm9jZXNzQm9keUNodW5rIGdpdmVuIGJ5dGVzIGJlIHRoZXNlIHN0ZXBzOlxuICAgIGNvbnN0IHByb2Nlc3NCb2R5Q2h1bmsgPSBhc3luYyBmdW5jdGlvbiAqIChieXRlcykge1xuICAgICAgLy8gMS4gSWYgdGhlIG9uZ29pbmcgZmV0Y2ggaXMgdGVybWluYXRlZCwgdGhlbiBhYm9ydCB0aGVzZSBzdGVwcy5cbiAgICAgIGlmIChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIFJ1biB0aGlzIHN0ZXAgaW4gcGFyYWxsZWw6IHRyYW5zbWl0IGJ5dGVzLlxuICAgICAgeWllbGQgYnl0ZXNcblxuICAgICAgLy8gMy4gSWYgZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVxdWVzdCBib2R5IGlzIG5vbi1udWxsLCB0aGVuIHJ1blxuICAgICAgLy8gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVxdWVzdCBib2R5IGdpdmVuIGJ5dGVzXHUyMDE5cyBsZW5ndGguXG4gICAgICBmZXRjaFBhcmFtcy5wcm9jZXNzUmVxdWVzdEJvZHlDaHVua0xlbmd0aD8uKGJ5dGVzLmJ5dGVMZW5ndGgpXG4gICAgfVxuXG4gICAgLy8gMi4gTGV0IHByb2Nlc3NFbmRPZkJvZHkgYmUgdGhlc2Ugc3RlcHM6XG4gICAgY29uc3QgcHJvY2Vzc0VuZE9mQm9keSA9ICgpID0+IHtcbiAgICAgIC8vIDEuIElmIGZldGNoUGFyYW1zIGlzIGNhbmNlbGVkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLlxuICAgICAgaWYgKGlzQ2FuY2VsbGVkKGZldGNoUGFyYW1zKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVxdWVzdCBlbmQtb2YtYm9keSBpcyBub24tbnVsbCxcbiAgICAgIC8vIHRoZW4gcnVuIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlcXVlc3QgZW5kLW9mLWJvZHkuXG4gICAgICBpZiAoZmV0Y2hQYXJhbXMucHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHkpIHtcbiAgICAgICAgZmV0Y2hQYXJhbXMucHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHkoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMuIExldCBwcm9jZXNzQm9keUVycm9yIGdpdmVuIGUgYmUgdGhlc2Ugc3RlcHM6XG4gICAgY29uc3QgcHJvY2Vzc0JvZHlFcnJvciA9IChlKSA9PiB7XG4gICAgICAvLyAxLiBJZiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZCwgdGhlbiBhYm9ydCB0aGVzZSBzdGVwcy5cbiAgICAgIGlmIChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGUgaXMgYW4gXCJBYm9ydEVycm9yXCIgRE9NRXhjZXB0aW9uLCB0aGVuIGFib3J0IGZldGNoUGFyYW1zXHUyMDE5cyBjb250cm9sbGVyLlxuICAgICAgaWYgKGUubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci50ZXJtaW5hdGUoZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0LiBJbmNyZW1lbnRhbGx5IHJlYWQgcmVxdWVzdFx1MjAxOXMgYm9keSBnaXZlbiBwcm9jZXNzQm9keUNodW5rLCBwcm9jZXNzRW5kT2ZCb2R5LFxuICAgIC8vIHByb2Nlc3NCb2R5RXJyb3IsIGFuZCBmZXRjaFBhcmFtc1x1MjAxOXMgdGFzayBkZXN0aW5hdGlvbi5cbiAgICByZXF1ZXN0Qm9keSA9IChhc3luYyBmdW5jdGlvbiAqICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgYnl0ZXMgb2YgcmVxdWVzdC5ib2R5LnN0cmVhbSkge1xuICAgICAgICAgIHlpZWxkICogcHJvY2Vzc0JvZHlDaHVuayhieXRlcylcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzRW5kT2ZCb2R5KClcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBwcm9jZXNzQm9keUVycm9yKGVycilcbiAgICAgIH1cbiAgICB9KSgpXG4gIH1cblxuICB0cnkge1xuICAgIC8vIHNvY2tldCBpcyBvbmx5IHByb3ZpZGVkIGZvciB3ZWJzb2NrZXRzXG4gICAgY29uc3QgeyBib2R5LCBzdGF0dXMsIHN0YXR1c1RleHQsIGhlYWRlcnNMaXN0LCBzb2NrZXQgfSA9IGF3YWl0IGRpc3BhdGNoKHsgYm9keTogcmVxdWVzdEJvZHkgfSlcblxuICAgIGlmIChzb2NrZXQpIHtcbiAgICAgIHJlc3BvbnNlID0gbWFrZVJlc3BvbnNlKHsgc3RhdHVzLCBzdGF0dXNUZXh0LCBoZWFkZXJzTGlzdCwgc29ja2V0IH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGl0ZXJhdG9yID0gYm9keVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKVxuICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5uZXh0ID0gKCkgPT4gaXRlcmF0b3IubmV4dCgpXG5cbiAgICAgIHJlc3BvbnNlID0gbWFrZVJlc3BvbnNlKHsgc3RhdHVzLCBzdGF0dXNUZXh0LCBoZWFkZXJzTGlzdCB9KVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gMTAuIElmIGFib3J0ZWQsIHRoZW46XG4gICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgIC8vIDEuIElmIGNvbm5lY3Rpb24gdXNlcyBIVFRQLzIsIHRoZW4gdHJhbnNtaXQgYW4gUlNUX1NUUkVBTSBmcmFtZS5cbiAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29ubmVjdGlvbi5kZXN0cm95KClcblxuICAgICAgLy8gMi4gUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGVycm9yIGZvciBmZXRjaFBhcmFtcy5cbiAgICAgIHJldHVybiBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IoZmV0Y2hQYXJhbXMsIGVycilcbiAgICB9XG5cbiAgICByZXR1cm4gbWFrZU5ldHdvcmtFcnJvcihlcnIpXG4gIH1cblxuICAvLyAxMS4gTGV0IHB1bGxBbGdvcml0aG0gYmUgYW4gYWN0aW9uIHRoYXQgcmVzdW1lcyB0aGUgb25nb2luZyBmZXRjaFxuICAvLyBpZiBpdCBpcyBzdXNwZW5kZWQuXG4gIGNvbnN0IHB1bGxBbGdvcml0aG0gPSAoKSA9PiB7XG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5yZXN1bWUoKVxuICB9XG5cbiAgLy8gMTIuIExldCBjYW5jZWxBbGdvcml0aG0gYmUgYW4gYWxnb3JpdGhtIHRoYXQgYWJvcnRzIGZldGNoUGFyYW1zXHUyMDE5c1xuICAvLyBjb250cm9sbGVyIHdpdGggcmVhc29uLCBnaXZlbiByZWFzb24uXG4gIGNvbnN0IGNhbmNlbEFsZ29yaXRobSA9IChyZWFzb24pID0+IHtcbiAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmFib3J0KHJlYXNvbilcbiAgfVxuXG4gIC8vIDEzLiBMZXQgaGlnaFdhdGVyTWFyayBiZSBhIG5vbi1uZWdhdGl2ZSwgbm9uLU5hTiBudW1iZXIsIGNob3NlbiBieVxuICAvLyB0aGUgdXNlciBhZ2VudC5cbiAgLy8gVE9ET1xuXG4gIC8vIDE0LiBMZXQgc2l6ZUFsZ29yaXRobSBiZSBhbiBhbGdvcml0aG0gdGhhdCBhY2NlcHRzIGEgY2h1bmsgb2JqZWN0XG4gIC8vIGFuZCByZXR1cm5zIGEgbm9uLW5lZ2F0aXZlLCBub24tTmFOLCBub24taW5maW5pdGUgbnVtYmVyLCBjaG9zZW4gYnkgdGhlIHVzZXIgYWdlbnQuXG4gIC8vIFRPRE9cblxuICAvLyAxNS4gTGV0IHN0cmVhbSBiZSBhIG5ldyBSZWFkYWJsZVN0cmVhbS5cbiAgLy8gMTYuIFNldCB1cCBzdHJlYW0gd2l0aCBwdWxsQWxnb3JpdGhtIHNldCB0byBwdWxsQWxnb3JpdGhtLFxuICAvLyBjYW5jZWxBbGdvcml0aG0gc2V0IHRvIGNhbmNlbEFsZ29yaXRobSwgaGlnaFdhdGVyTWFyayBzZXQgdG9cbiAgLy8gaGlnaFdhdGVyTWFyaywgYW5kIHNpemVBbGdvcml0aG0gc2V0IHRvIHNpemVBbGdvcml0aG0uXG4gIGlmICghUmVhZGFibGVTdHJlYW0pIHtcbiAgICBSZWFkYWJsZVN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbVxuICB9XG5cbiAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKFxuICAgIHtcbiAgICAgIGFzeW5jIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbGxlciA9IGNvbnRyb2xsZXJcbiAgICAgIH0sXG4gICAgICBhc3luYyBwdWxsIChjb250cm9sbGVyKSB7XG4gICAgICAgIGF3YWl0IHB1bGxBbGdvcml0aG0oY29udHJvbGxlcilcbiAgICAgIH0sXG4gICAgICBhc3luYyBjYW5jZWwgKHJlYXNvbikge1xuICAgICAgICBhd2FpdCBjYW5jZWxBbGdvcml0aG0ocmVhc29uKVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaGlnaFdhdGVyTWFyazogMCxcbiAgICAgIHNpemUgKCkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICAgIH1cbiAgKVxuXG4gIC8vIDE3LiBSdW4gdGhlc2Ugc3RlcHMsIGJ1dCBhYm9ydCB3aGVuIHRoZSBvbmdvaW5nIGZldGNoIGlzIHRlcm1pbmF0ZWQ6XG5cbiAgLy8gICAgMS4gU2V0IHJlc3BvbnNlXHUyMDE5cyBib2R5IHRvIGEgbmV3IGJvZHkgd2hvc2Ugc3RyZWFtIGlzIHN0cmVhbS5cbiAgcmVzcG9uc2UuYm9keSA9IHsgc3RyZWFtIH1cblxuICAvLyAgICAyLiBJZiByZXNwb25zZSBpcyBub3QgYSBuZXR3b3JrIGVycm9yIGFuZCByZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIGlzXG4gIC8vICAgIG5vdCBcIm5vLXN0b3JlXCIsIHRoZW4gdXBkYXRlIHJlc3BvbnNlIGluIGh0dHBDYWNoZSBmb3IgcmVxdWVzdC5cbiAgLy8gICAgVE9ET1xuXG4gIC8vICAgIDMuIElmIGluY2x1ZGVDcmVkZW50aWFscyBpcyB0cnVlIGFuZCB0aGUgdXNlciBhZ2VudCBpcyBub3QgY29uZmlndXJlZFxuICAvLyAgICB0byBibG9jayBjb29raWVzIGZvciByZXF1ZXN0IChzZWUgc2VjdGlvbiA3IG9mIFtDT09LSUVTXSksIHRoZW4gcnVuIHRoZVxuICAvLyAgICBcInNldC1jb29raWUtc3RyaW5nXCIgcGFyc2luZyBhbGdvcml0aG0gKHNlZSBzZWN0aW9uIDUuMiBvZiBbQ09PS0lFU10pIG9uXG4gIC8vICAgIHRoZSB2YWx1ZSBvZiBlYWNoIGhlYWRlciB3aG9zZSBuYW1lIGlzIGEgYnl0ZS1jYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvclxuICAvLyAgICBgU2V0LUNvb2tpZWAgaW4gcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0LCBpZiBhbnksIGFuZCByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTC5cbiAgLy8gICAgVE9ET1xuXG4gIC8vIDE4LiBJZiBhYm9ydGVkLCB0aGVuOlxuICAvLyBUT0RPXG5cbiAgLy8gMTkuIFJ1biB0aGVzZSBzdGVwcyBpbiBwYXJhbGxlbDpcblxuICAvLyAgICAxLiBSdW4gdGhlc2Ugc3RlcHMsIGJ1dCBhYm9ydCB3aGVuIGZldGNoUGFyYW1zIGlzIGNhbmNlbGVkOlxuICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLm9uKCd0ZXJtaW5hdGVkJywgb25BYm9ydGVkKVxuICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnJlc3VtZSA9IGFzeW5jICgpID0+IHtcbiAgICAvLyAxLiBXaGlsZSB0cnVlXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIC8vIDEtMy4gU2VlIG9uRGF0YS4uLlxuXG4gICAgICAvLyA0LiBTZXQgYnl0ZXMgdG8gdGhlIHJlc3VsdCBvZiBoYW5kbGluZyBjb250ZW50IGNvZGluZ3MgZ2l2ZW5cbiAgICAgIC8vIGNvZGluZ3MgYW5kIGJ5dGVzLlxuICAgICAgbGV0IGJ5dGVzXG4gICAgICBsZXQgaXNGYWlsdXJlXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCBmZXRjaFBhcmFtcy5jb250cm9sbGVyLm5leHQoKVxuXG4gICAgICAgIGlmIChpc0Fib3J0ZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ5dGVzID0gZG9uZSA/IHVuZGVmaW5lZCA6IHZhbHVlXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuZW5kZWQgJiYgIXRpbWluZ0luZm8uZW5jb2RlZEJvZHlTaXplKSB7XG4gICAgICAgICAgLy8gemxpYiBkb2Vzbid0IGxpa2UgZW1wdHkgc3RyZWFtcy5cbiAgICAgICAgICBieXRlcyA9IHVuZGVmaW5lZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ5dGVzID0gZXJyXG5cbiAgICAgICAgICAvLyBlcnIgbWF5IGJlIHByb3BhZ2F0ZWQgZnJvbSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgcmVhZGFibGVzdHJlYW0uY2FuY2VsLFxuICAgICAgICAgIC8vIHdoaWNoIG1pZ2h0IG5vdCBiZSBhbiBlcnJvci4gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzIwMDlcbiAgICAgICAgICBpc0ZhaWx1cmUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJ5dGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpZiB0aGUgYnl0ZXMgdHJhbnNtaXNzaW9uIGZvciByZXNwb25zZVx1MjAxOXMgbWVzc2FnZVxuICAgICAgICAvLyBib2R5IGlzIGRvbmUgbm9ybWFsbHkgYW5kIHN0cmVhbSBpcyByZWFkYWJsZSwgdGhlbiBjbG9zZVxuICAgICAgICAvLyBzdHJlYW0sIGZpbmFsaXplIHJlc3BvbnNlIGZvciBmZXRjaFBhcmFtcyBhbmQgcmVzcG9uc2UsIGFuZFxuICAgICAgICAvLyBhYm9ydCB0aGVzZSBpbi1wYXJhbGxlbCBzdGVwcy5cbiAgICAgICAgcmVhZGFibGVTdHJlYW1DbG9zZShmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2xsZXIpXG5cbiAgICAgICAgZmluYWxpemVSZXNwb25zZShmZXRjaFBhcmFtcywgcmVzcG9uc2UpXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDUuIEluY3JlYXNlIHRpbWluZ0luZm9cdTIwMTlzIGRlY29kZWQgYm9keSBzaXplIGJ5IGJ5dGVzXHUyMDE5cyBsZW5ndGguXG4gICAgICB0aW1pbmdJbmZvLmRlY29kZWRCb2R5U2l6ZSArPSBieXRlcz8uYnl0ZUxlbmd0aCA/PyAwXG5cbiAgICAgIC8vIDYuIElmIGJ5dGVzIGlzIGZhaWx1cmUsIHRoZW4gdGVybWluYXRlIGZldGNoUGFyYW1zXHUyMDE5cyBjb250cm9sbGVyLlxuICAgICAgaWYgKGlzRmFpbHVyZSkge1xuICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnRlcm1pbmF0ZShieXRlcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDcuIEVucXVldWUgYSBVaW50OEFycmF5IHdyYXBwaW5nIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgYnl0ZXNcbiAgICAgIC8vIGludG8gc3RyZWFtLlxuICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKVxuXG4gICAgICAvLyA4LiBJZiBzdHJlYW0gaXMgZXJyb3JlZCwgdGhlbiB0ZXJtaW5hdGUgdGhlIG9uZ29pbmcgZmV0Y2guXG4gICAgICBpZiAoaXNFcnJvcmVkKHN0cmVhbSkpIHtcbiAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci50ZXJtaW5hdGUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gOS4gSWYgc3RyZWFtIGRvZXNuXHUyMDE5dCBuZWVkIG1vcmUgZGF0YSBhc2sgdGhlIHVzZXIgYWdlbnQgdG8gc3VzcGVuZFxuICAgICAgLy8gdGhlIG9uZ29pbmcgZmV0Y2guXG4gICAgICBpZiAoIWZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbGxlci5kZXNpcmVkU2l6ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAgICAyLiBJZiBhYm9ydGVkLCB0aGVuOlxuICBmdW5jdGlvbiBvbkFib3J0ZWQgKHJlYXNvbikge1xuICAgIC8vIDIuIElmIGZldGNoUGFyYW1zIGlzIGFib3J0ZWQsIHRoZW46XG4gICAgaWYgKGlzQWJvcnRlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgIC8vIDEuIFNldCByZXNwb25zZVx1MjAxOXMgYWJvcnRlZCBmbGFnLlxuICAgICAgcmVzcG9uc2UuYWJvcnRlZCA9IHRydWVcblxuICAgICAgLy8gMi4gSWYgc3RyZWFtIGlzIHJlYWRhYmxlLCB0aGVuIGVycm9yIHN0cmVhbSB3aXRoIHRoZSByZXN1bHQgb2ZcbiAgICAgIC8vICAgIGRlc2VyaWFsaXplIGEgc2VyaWFsaXplZCBhYm9ydCByZWFzb24gZ2l2ZW4gZmV0Y2hQYXJhbXNcdTIwMTlzXG4gICAgICAvLyAgICBjb250cm9sbGVyXHUyMDE5cyBzZXJpYWxpemVkIGFib3J0IHJlYXNvbiBhbmQgYW5cbiAgICAgIC8vICAgIGltcGxlbWVudGF0aW9uLWRlZmluZWQgcmVhbG0uXG4gICAgICBpZiAoaXNSZWFkYWJsZShzdHJlYW0pKSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbGxlci5lcnJvcihcbiAgICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnNlcmlhbGl6ZWRBYm9ydFJlYXNvblxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDMuIE90aGVyd2lzZSwgaWYgc3RyZWFtIGlzIHJlYWRhYmxlLCBlcnJvciBzdHJlYW0gd2l0aCBhIFR5cGVFcnJvci5cbiAgICAgIGlmIChpc1JlYWRhYmxlKHN0cmVhbSkpIHtcbiAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb250cm9sbGVyLmVycm9yKG5ldyBUeXBlRXJyb3IoJ3Rlcm1pbmF0ZWQnLCB7XG4gICAgICAgICAgY2F1c2U6IGlzRXJyb3JMaWtlKHJlYXNvbikgPyByZWFzb24gOiB1bmRlZmluZWRcbiAgICAgICAgfSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNC4gSWYgY29ubmVjdGlvbiB1c2VzIEhUVFAvMiwgdGhlbiB0cmFuc21pdCBhbiBSU1RfU1RSRUFNIGZyYW1lLlxuICAgIC8vIDUuIE90aGVyd2lzZSwgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNsb3NlIGNvbm5lY3Rpb24gdW5sZXNzIGl0IHdvdWxkIGJlIGJhZCBmb3IgcGVyZm9ybWFuY2UgdG8gZG8gc28uXG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb25uZWN0aW9uLmRlc3Ryb3koKVxuICB9XG5cbiAgLy8gMjAuIFJldHVybiByZXNwb25zZS5cbiAgcmV0dXJuIHJlc3BvbnNlXG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzcGF0Y2ggKHsgYm9keSB9KSB7XG4gICAgY29uc3QgdXJsID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcbiAgICAvKiogQHR5cGUge2ltcG9ydCgnLi4vLi4nKS5BZ2VudH0gKi9cbiAgICBjb25zdCBhZ2VudCA9IGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuZGlzcGF0Y2hlclxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IGFnZW50LmRpc3BhdGNoKFxuICAgICAge1xuICAgICAgICBwYXRoOiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoLFxuICAgICAgICBvcmlnaW46IHVybC5vcmlnaW4sXG4gICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIGJvZHk6IGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuZGlzcGF0Y2hlci5pc01vY2tBY3RpdmUgPyByZXF1ZXN0LmJvZHkgJiYgKHJlcXVlc3QuYm9keS5zb3VyY2UgfHwgcmVxdWVzdC5ib2R5LnN0cmVhbSkgOiBib2R5LFxuICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnNMaXN0LmVudHJpZXMsXG4gICAgICAgIG1heFJlZGlyZWN0aW9uczogMCxcbiAgICAgICAgdXBncmFkZTogcmVxdWVzdC5tb2RlID09PSAnd2Vic29ja2V0JyA/ICd3ZWJzb2NrZXQnIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBib2R5OiBudWxsLFxuICAgICAgICBhYm9ydDogbnVsbCxcblxuICAgICAgICBvbkNvbm5lY3QgKGFib3J0KSB7XG4gICAgICAgICAgLy8gVE9ETyAoZml4KTogRG8gd2UgbmVlZCBjb25uZWN0aW9uIGhlcmU/XG4gICAgICAgICAgY29uc3QgeyBjb25uZWN0aW9uIH0gPSBmZXRjaFBhcmFtcy5jb250cm9sbGVyXG5cbiAgICAgICAgICBpZiAoY29ubmVjdGlvbi5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIGFib3J0KG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5vbigndGVybWluYXRlZCcsIGFib3J0KVxuICAgICAgICAgICAgdGhpcy5hYm9ydCA9IGNvbm5lY3Rpb24uYWJvcnQgPSBhYm9ydFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBvbkhlYWRlcnMgKHN0YXR1cywgaGVhZGVyc0xpc3QsIHJlc3VtZSwgc3RhdHVzVGV4dCkge1xuICAgICAgICAgIGlmIChzdGF0dXMgPCAyMDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBjb2RpbmdzID0gW11cbiAgICAgICAgICBsZXQgbG9jYXRpb24gPSAnJ1xuXG4gICAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcblxuICAgICAgICAgIC8vIEZvciBIMiwgdGhlIGhlYWRlcnMgYXJlIGEgcGxhaW4gSlMgb2JqZWN0XG4gICAgICAgICAgLy8gV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIGFuZCBpdGVyYXRlIGFjY29yZGluZ2x5XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVyc0xpc3QpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGhlYWRlcnNMaXN0Lmxlbmd0aDsgbiArPSAyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleSA9IGhlYWRlcnNMaXN0W24gKyAwXS50b1N0cmluZygnbGF0aW4xJylcbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gaGVhZGVyc0xpc3RbbiArIDFdLnRvU3RyaW5nKCdsYXRpbjEnKVxuICAgICAgICAgICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LWVuY29kaW5nJykge1xuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMxI3NlY3Rpb24tMy4xLjIuMVxuICAgICAgICAgICAgICAgIC8vIFwiQWxsIGNvbnRlbnQtY29kaW5nIHZhbHVlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4uLlwiXG4gICAgICAgICAgICAgICAgY29kaW5ncyA9IHZhbC50b0xvd2VyQ2FzZSgpLnNwbGl0KCcsJykubWFwKCh4KSA9PiB4LnRyaW0oKSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2F0aW9uJykge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gdmFsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBoZWFkZXJzW2tIZWFkZXJzTGlzdF0uYXBwZW5kKGtleSwgdmFsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVyc0xpc3QpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGhlYWRlcnNMaXN0W2tleV1cbiAgICAgICAgICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC1lbmNvZGluZycpIHtcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNzZWN0aW9uLTMuMS4yLjFcbiAgICAgICAgICAgICAgICAvLyBcIkFsbCBjb250ZW50LWNvZGluZyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUuLi5cIlxuICAgICAgICAgICAgICAgIGNvZGluZ3MgPSB2YWwudG9Mb3dlckNhc2UoKS5zcGxpdCgnLCcpLm1hcCgoeCkgPT4geC50cmltKCkpLnJldmVyc2UoKVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYXRpb24nKSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24gPSB2YWxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGhlYWRlcnNba0hlYWRlcnNMaXN0XS5hcHBlbmQoa2V5LCB2YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ib2R5ID0gbmV3IFJlYWRhYmxlKHsgcmVhZDogcmVzdW1lIH0pXG5cbiAgICAgICAgICBjb25zdCBkZWNvZGVycyA9IFtdXG5cbiAgICAgICAgICBjb25zdCB3aWxsRm9sbG93ID0gcmVxdWVzdC5yZWRpcmVjdCA9PT0gJ2ZvbGxvdycgJiZcbiAgICAgICAgICAgIGxvY2F0aW9uICYmXG4gICAgICAgICAgICByZWRpcmVjdFN0YXR1c1NldC5oYXMoc3RhdHVzKVxuXG4gICAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtRW5jb2RpbmdcbiAgICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJyAmJiByZXF1ZXN0Lm1ldGhvZCAhPT0gJ0NPTk5FQ1QnICYmICFudWxsQm9keVN0YXR1cy5pbmNsdWRlcyhzdGF0dXMpICYmICF3aWxsRm9sbG93KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvZGluZyBvZiBjb2RpbmdzKSB7XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5MTEyLmh0bWwjc2VjdGlvbi03LjJcbiAgICAgICAgICAgICAgaWYgKGNvZGluZyA9PT0gJ3gtZ3ppcCcgfHwgY29kaW5nID09PSAnZ3ppcCcpIHtcbiAgICAgICAgICAgICAgICBkZWNvZGVycy5wdXNoKHpsaWIuY3JlYXRlR3VuemlwKHtcbiAgICAgICAgICAgICAgICAgIC8vIEJlIGxlc3Mgc3RyaWN0IHdoZW4gZGVjb2RpbmcgY29tcHJlc3NlZCByZXNwb25zZXMsIHNpbmNlIHNvbWV0aW1lc1xuICAgICAgICAgICAgICAgICAgLy8gc2VydmVycyBzZW5kIHNsaWdodGx5IGludmFsaWQgcmVzcG9uc2VzIHRoYXQgYXJlIHN0aWxsIGFjY2VwdGVkXG4gICAgICAgICAgICAgICAgICAvLyBieSBjb21tb24gYnJvd3NlcnMuXG4gICAgICAgICAgICAgICAgICAvLyBBbHdheXMgdXNpbmcgWl9TWU5DX0ZMVVNIIGlzIHdoYXQgY1VSTCBkb2VzLlxuICAgICAgICAgICAgICAgICAgZmx1c2g6IHpsaWIuY29uc3RhbnRzLlpfU1lOQ19GTFVTSCxcbiAgICAgICAgICAgICAgICAgIGZpbmlzaEZsdXNoOiB6bGliLmNvbnN0YW50cy5aX1NZTkNfRkxVU0hcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RpbmcgPT09ICdkZWZsYXRlJykge1xuICAgICAgICAgICAgICAgIGRlY29kZXJzLnB1c2goemxpYi5jcmVhdGVJbmZsYXRlKCkpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kaW5nID09PSAnYnInKSB7XG4gICAgICAgICAgICAgICAgZGVjb2RlcnMucHVzaCh6bGliLmNyZWF0ZUJyb3RsaURlY29tcHJlc3MoKSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWNvZGVycy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgc3RhdHVzVGV4dCxcbiAgICAgICAgICAgIGhlYWRlcnNMaXN0OiBoZWFkZXJzW2tIZWFkZXJzTGlzdF0sXG4gICAgICAgICAgICBib2R5OiBkZWNvZGVycy5sZW5ndGhcbiAgICAgICAgICAgICAgPyBwaXBlbGluZSh0aGlzLmJvZHksIC4uLmRlY29kZXJzLCAoKSA9PiB7IH0pXG4gICAgICAgICAgICAgIDogdGhpcy5ib2R5Lm9uKCdlcnJvcicsICgpID0+IHt9KVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIG9uRGF0YSAoY2h1bmspIHtcbiAgICAgICAgICBpZiAoZmV0Y2hQYXJhbXMuY29udHJvbGxlci5kdW1wKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyAxLiBJZiBvbmUgb3IgbW9yZSBieXRlcyBoYXZlIGJlZW4gdHJhbnNtaXR0ZWQgZnJvbSByZXNwb25zZVx1MjAxOXNcbiAgICAgICAgICAvLyBtZXNzYWdlIGJvZHksIHRoZW46XG5cbiAgICAgICAgICAvLyAgMS4gTGV0IGJ5dGVzIGJlIHRoZSB0cmFuc21pdHRlZCBieXRlcy5cbiAgICAgICAgICBjb25zdCBieXRlcyA9IGNodW5rXG5cbiAgICAgICAgICAvLyAgMi4gTGV0IGNvZGluZ3MgYmUgdGhlIHJlc3VsdCBvZiBleHRyYWN0aW5nIGhlYWRlciBsaXN0IHZhbHVlc1xuICAgICAgICAgIC8vICBnaXZlbiBgQ29udGVudC1FbmNvZGluZ2AgYW5kIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAgICAgICAvLyAgU2VlIHB1bGxBbGdvcml0aG0uXG5cbiAgICAgICAgICAvLyAgMy4gSW5jcmVhc2UgdGltaW5nSW5mb1x1MjAxOXMgZW5jb2RlZCBib2R5IHNpemUgYnkgYnl0ZXNcdTIwMTlzIGxlbmd0aC5cbiAgICAgICAgICB0aW1pbmdJbmZvLmVuY29kZWRCb2R5U2l6ZSArPSBieXRlcy5ieXRlTGVuZ3RoXG5cbiAgICAgICAgICAvLyAgNC4gU2VlIHB1bGxBbGdvcml0aG0uLi5cblxuICAgICAgICAgIHJldHVybiB0aGlzLmJvZHkucHVzaChieXRlcylcbiAgICAgICAgfSxcblxuICAgICAgICBvbkNvbXBsZXRlICgpIHtcbiAgICAgICAgICBpZiAodGhpcy5hYm9ydCkge1xuICAgICAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5vZmYoJ3Rlcm1pbmF0ZWQnLCB0aGlzLmFib3J0KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuZW5kZWQgPSB0cnVlXG5cbiAgICAgICAgICB0aGlzLmJvZHkucHVzaChudWxsKVxuICAgICAgICB9LFxuXG4gICAgICAgIG9uRXJyb3IgKGVycm9yKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWJvcnQpIHtcbiAgICAgICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIub2ZmKCd0ZXJtaW5hdGVkJywgdGhpcy5hYm9ydClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmJvZHk/LmRlc3Ryb3koZXJyb3IpXG5cbiAgICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnRlcm1pbmF0ZShlcnJvcilcblxuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSxcblxuICAgICAgICBvblVwZ3JhZGUgKHN0YXR1cywgaGVhZGVyc0xpc3QsIHNvY2tldCkge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09IDEwMSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcblxuICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgaGVhZGVyc0xpc3QubGVuZ3RoOyBuICs9IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGhlYWRlcnNMaXN0W24gKyAwXS50b1N0cmluZygnbGF0aW4xJylcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGhlYWRlcnNMaXN0W24gKyAxXS50b1N0cmluZygnbGF0aW4xJylcblxuICAgICAgICAgICAgaGVhZGVyc1trSGVhZGVyc0xpc3RdLmFwcGVuZChrZXksIHZhbClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IFNUQVRVU19DT0RFU1tzdGF0dXNdLFxuICAgICAgICAgICAgaGVhZGVyc0xpc3Q6IGhlYWRlcnNba0hlYWRlcnNMaXN0XSxcbiAgICAgICAgICAgIHNvY2tldFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZmV0Y2gsXG4gIEZldGNoLFxuICBmZXRjaGluZyxcbiAgZmluYWxpemVBbmRSZXBvcnRUaW1pbmdcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtTdGF0ZTogU3ltYm9sKCdGaWxlUmVhZGVyIHN0YXRlJyksXG4gIGtSZXN1bHQ6IFN5bWJvbCgnRmlsZVJlYWRlciByZXN1bHQnKSxcbiAga0Vycm9yOiBTeW1ib2woJ0ZpbGVSZWFkZXIgZXJyb3InKSxcbiAga0xhc3RQcm9ncmVzc0V2ZW50RmlyZWQ6IFN5bWJvbCgnRmlsZVJlYWRlciBsYXN0IHByb2dyZXNzIGV2ZW50IGZpcmVkIHRpbWVzdGFtcCcpLFxuICBrRXZlbnRzOiBTeW1ib2woJ0ZpbGVSZWFkZXIgZXZlbnRzJyksXG4gIGtBYm9ydGVkOiBTeW1ib2woJ0ZpbGVSZWFkZXIgYWJvcnRlZCcpXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuXG5jb25zdCBrU3RhdGUgPSBTeW1ib2woJ1Byb2dyZXNzRXZlbnQgc3RhdGUnKVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly94aHIuc3BlYy53aGF0d2cub3JnLyNwcm9ncmVzc2V2ZW50XG4gKi9cbmNsYXNzIFByb2dyZXNzRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIGNvbnN0cnVjdG9yICh0eXBlLCBldmVudEluaXREaWN0ID0ge30pIHtcbiAgICB0eXBlID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKHR5cGUpXG4gICAgZXZlbnRJbml0RGljdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlByb2dyZXNzRXZlbnRJbml0KGV2ZW50SW5pdERpY3QgPz8ge30pXG5cbiAgICBzdXBlcih0eXBlLCBldmVudEluaXREaWN0KVxuXG4gICAgdGhpc1trU3RhdGVdID0ge1xuICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogZXZlbnRJbml0RGljdC5sZW5ndGhDb21wdXRhYmxlLFxuICAgICAgbG9hZGVkOiBldmVudEluaXREaWN0LmxvYWRlZCxcbiAgICAgIHRvdGFsOiBldmVudEluaXREaWN0LnRvdGFsXG4gICAgfVxuICB9XG5cbiAgZ2V0IGxlbmd0aENvbXB1dGFibGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFByb2dyZXNzRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmxlbmd0aENvbXB1dGFibGVcbiAgfVxuXG4gIGdldCBsb2FkZWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFByb2dyZXNzRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmxvYWRlZFxuICB9XG5cbiAgZ2V0IHRvdGFsICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBQcm9ncmVzc0V2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS50b3RhbFxuICB9XG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLlByb2dyZXNzRXZlbnRJbml0ID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoW1xuICB7XG4gICAga2V5OiAnbGVuZ3RoQ29tcHV0YWJsZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIGtleTogJ2xvYWRlZCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgbG9uZyBsb25nJ10sXG4gICAgZGVmYXVsdFZhbHVlOiAwXG4gIH0sXG4gIHtcbiAgICBrZXk6ICd0b3RhbCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgbG9uZyBsb25nJ10sXG4gICAgZGVmYXVsdFZhbHVlOiAwXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdidWJibGVzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnY2FuY2VsYWJsZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIGtleTogJ2NvbXBvc2VkJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9XG5dKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgUHJvZ3Jlc3NFdmVudFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtZW5jb2RpbmctZ2V0XG4gKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGxhYmVsXG4gKi9cbmZ1bmN0aW9uIGdldEVuY29kaW5nIChsYWJlbCkge1xuICBpZiAoIWxhYmVsKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgLy8gMS4gUmVtb3ZlIGFueSBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlIGZyb20gbGFiZWwuXG4gIC8vIDIuIElmIGxhYmVsIGlzIGFuIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIGFueSBvZiB0aGVcbiAgLy8gICAgbGFiZWxzIGxpc3RlZCBpbiB0aGUgdGFibGUgYmVsb3csIHRoZW4gcmV0dXJuIHRoZVxuICAvLyAgICBjb3JyZXNwb25kaW5nIGVuY29kaW5nOyBvdGhlcndpc2UgcmV0dXJuIGZhaWx1cmUuXG4gIHN3aXRjaCAobGFiZWwudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICd1bmljb2RlLTEtMS11dGYtOCc6XG4gICAgY2FzZSAndW5pY29kZTExdXRmOCc6XG4gICAgY2FzZSAndW5pY29kZTIwdXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3gtdW5pY29kZTIwdXRmOCc6XG4gICAgICByZXR1cm4gJ1VURi04J1xuICAgIGNhc2UgJzg2Nic6XG4gICAgY2FzZSAnY3A4NjYnOlxuICAgIGNhc2UgJ2NzaWJtODY2JzpcbiAgICBjYXNlICdpYm04NjYnOlxuICAgICAgcmV0dXJuICdJQk04NjYnXG4gICAgY2FzZSAnY3Npc29sYXRpbjInOlxuICAgIGNhc2UgJ2lzby04ODU5LTInOlxuICAgIGNhc2UgJ2lzby1pci0xMDEnOlxuICAgIGNhc2UgJ2lzbzg4NTktMic6XG4gICAgY2FzZSAnaXNvODg1OTInOlxuICAgIGNhc2UgJ2lzb184ODU5LTInOlxuICAgIGNhc2UgJ2lzb184ODU5LTI6MTk4Nyc6XG4gICAgY2FzZSAnbDInOlxuICAgIGNhc2UgJ2xhdGluMic6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTInXG4gICAgY2FzZSAnY3Npc29sYXRpbjMnOlxuICAgIGNhc2UgJ2lzby04ODU5LTMnOlxuICAgIGNhc2UgJ2lzby1pci0xMDknOlxuICAgIGNhc2UgJ2lzbzg4NTktMyc6XG4gICAgY2FzZSAnaXNvODg1OTMnOlxuICAgIGNhc2UgJ2lzb184ODU5LTMnOlxuICAgIGNhc2UgJ2lzb184ODU5LTM6MTk4OCc6XG4gICAgY2FzZSAnbDMnOlxuICAgIGNhc2UgJ2xhdGluMyc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTMnXG4gICAgY2FzZSAnY3Npc29sYXRpbjQnOlxuICAgIGNhc2UgJ2lzby04ODU5LTQnOlxuICAgIGNhc2UgJ2lzby1pci0xMTAnOlxuICAgIGNhc2UgJ2lzbzg4NTktNCc6XG4gICAgY2FzZSAnaXNvODg1OTQnOlxuICAgIGNhc2UgJ2lzb184ODU5LTQnOlxuICAgIGNhc2UgJ2lzb184ODU5LTQ6MTk4OCc6XG4gICAgY2FzZSAnbDQnOlxuICAgIGNhc2UgJ2xhdGluNCc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTQnXG4gICAgY2FzZSAnY3Npc29sYXRpbmN5cmlsbGljJzpcbiAgICBjYXNlICdjeXJpbGxpYyc6XG4gICAgY2FzZSAnaXNvLTg4NTktNSc6XG4gICAgY2FzZSAnaXNvLWlyLTE0NCc6XG4gICAgY2FzZSAnaXNvODg1OS01JzpcbiAgICBjYXNlICdpc284ODU5NSc6XG4gICAgY2FzZSAnaXNvXzg4NTktNSc6XG4gICAgY2FzZSAnaXNvXzg4NTktNToxOTg4JzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktNSdcbiAgICBjYXNlICdhcmFiaWMnOlxuICAgIGNhc2UgJ2FzbW8tNzA4JzpcbiAgICBjYXNlICdjc2lzbzg4NTk2ZSc6XG4gICAgY2FzZSAnY3Npc284ODU5NmknOlxuICAgIGNhc2UgJ2NzaXNvbGF0aW5hcmFiaWMnOlxuICAgIGNhc2UgJ2VjbWEtMTE0JzpcbiAgICBjYXNlICdpc28tODg1OS02JzpcbiAgICBjYXNlICdpc28tODg1OS02LWUnOlxuICAgIGNhc2UgJ2lzby04ODU5LTYtaSc6XG4gICAgY2FzZSAnaXNvLWlyLTEyNyc6XG4gICAgY2FzZSAnaXNvODg1OS02JzpcbiAgICBjYXNlICdpc284ODU5Nic6XG4gICAgY2FzZSAnaXNvXzg4NTktNic6XG4gICAgY2FzZSAnaXNvXzg4NTktNjoxOTg3JzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktNidcbiAgICBjYXNlICdjc2lzb2xhdGluZ3JlZWsnOlxuICAgIGNhc2UgJ2VjbWEtMTE4JzpcbiAgICBjYXNlICdlbG90XzkyOCc6XG4gICAgY2FzZSAnZ3JlZWsnOlxuICAgIGNhc2UgJ2dyZWVrOCc6XG4gICAgY2FzZSAnaXNvLTg4NTktNyc6XG4gICAgY2FzZSAnaXNvLWlyLTEyNic6XG4gICAgY2FzZSAnaXNvODg1OS03JzpcbiAgICBjYXNlICdpc284ODU5Nyc6XG4gICAgY2FzZSAnaXNvXzg4NTktNyc6XG4gICAgY2FzZSAnaXNvXzg4NTktNzoxOTg3JzpcbiAgICBjYXNlICdzdW5fZXVfZ3JlZWsnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS03J1xuICAgIGNhc2UgJ2NzaXNvODg1OThlJzpcbiAgICBjYXNlICdjc2lzb2xhdGluaGVicmV3JzpcbiAgICBjYXNlICdoZWJyZXcnOlxuICAgIGNhc2UgJ2lzby04ODU5LTgnOlxuICAgIGNhc2UgJ2lzby04ODU5LTgtZSc6XG4gICAgY2FzZSAnaXNvLWlyLTEzOCc6XG4gICAgY2FzZSAnaXNvODg1OS04JzpcbiAgICBjYXNlICdpc284ODU5OCc6XG4gICAgY2FzZSAnaXNvXzg4NTktOCc6XG4gICAgY2FzZSAnaXNvXzg4NTktODoxOTg4JzpcbiAgICBjYXNlICd2aXN1YWwnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS04J1xuICAgIGNhc2UgJ2NzaXNvODg1OThpJzpcbiAgICBjYXNlICdpc28tODg1OS04LWknOlxuICAgIGNhc2UgJ2xvZ2ljYWwnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS04LUknXG4gICAgY2FzZSAnY3Npc29sYXRpbjYnOlxuICAgIGNhc2UgJ2lzby04ODU5LTEwJzpcbiAgICBjYXNlICdpc28taXItMTU3JzpcbiAgICBjYXNlICdpc284ODU5LTEwJzpcbiAgICBjYXNlICdpc284ODU5MTAnOlxuICAgIGNhc2UgJ2w2JzpcbiAgICBjYXNlICdsYXRpbjYnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0xMCdcbiAgICBjYXNlICdpc28tODg1OS0xMyc6XG4gICAgY2FzZSAnaXNvODg1OS0xMyc6XG4gICAgY2FzZSAnaXNvODg1OTEzJzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktMTMnXG4gICAgY2FzZSAnaXNvLTg4NTktMTQnOlxuICAgIGNhc2UgJ2lzbzg4NTktMTQnOlxuICAgIGNhc2UgJ2lzbzg4NTkxNCc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTE0J1xuICAgIGNhc2UgJ2NzaXNvbGF0aW45JzpcbiAgICBjYXNlICdpc28tODg1OS0xNSc6XG4gICAgY2FzZSAnaXNvODg1OS0xNSc6XG4gICAgY2FzZSAnaXNvODg1OTE1JzpcbiAgICBjYXNlICdpc29fODg1OS0xNSc6XG4gICAgY2FzZSAnbDknOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0xNSdcbiAgICBjYXNlICdpc28tODg1OS0xNic6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTE2J1xuICAgIGNhc2UgJ2Nza29pOHInOlxuICAgIGNhc2UgJ2tvaSc6XG4gICAgY2FzZSAna29pOCc6XG4gICAgY2FzZSAna29pOC1yJzpcbiAgICBjYXNlICdrb2k4X3InOlxuICAgICAgcmV0dXJuICdLT0k4LVInXG4gICAgY2FzZSAna29pOC1ydSc6XG4gICAgY2FzZSAna29pOC11JzpcbiAgICAgIHJldHVybiAnS09JOC1VJ1xuICAgIGNhc2UgJ2NzbWFjaW50b3NoJzpcbiAgICBjYXNlICdtYWMnOlxuICAgIGNhc2UgJ21hY2ludG9zaCc6XG4gICAgY2FzZSAneC1tYWMtcm9tYW4nOlxuICAgICAgcmV0dXJuICdtYWNpbnRvc2gnXG4gICAgY2FzZSAnaXNvLTg4NTktMTEnOlxuICAgIGNhc2UgJ2lzbzg4NTktMTEnOlxuICAgIGNhc2UgJ2lzbzg4NTkxMSc6XG4gICAgY2FzZSAndGlzLTYyMCc6XG4gICAgY2FzZSAnd2luZG93cy04NzQnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTg3NCdcbiAgICBjYXNlICdjcDEyNTAnOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1MCc6XG4gICAgY2FzZSAneC1jcDEyNTAnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTAnXG4gICAgY2FzZSAnY3AxMjUxJzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTEnOlxuICAgIGNhc2UgJ3gtY3AxMjUxJzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjUxJ1xuICAgIGNhc2UgJ2Fuc2lfeDMuNC0xOTY4JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnY3AxMjUyJzpcbiAgICBjYXNlICdjcDgxOSc6XG4gICAgY2FzZSAnY3Npc29sYXRpbjEnOlxuICAgIGNhc2UgJ2libTgxOSc6XG4gICAgY2FzZSAnaXNvLTg4NTktMSc6XG4gICAgY2FzZSAnaXNvLWlyLTEwMCc6XG4gICAgY2FzZSAnaXNvODg1OS0xJzpcbiAgICBjYXNlICdpc284ODU5MSc6XG4gICAgY2FzZSAnaXNvXzg4NTktMSc6XG4gICAgY2FzZSAnaXNvXzg4NTktMToxOTg3JzpcbiAgICBjYXNlICdsMSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICd1cy1hc2NpaSc6XG4gICAgY2FzZSAnd2luZG93cy0xMjUyJzpcbiAgICBjYXNlICd4LWNwMTI1Mic6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1MidcbiAgICBjYXNlICdjcDEyNTMnOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1Myc6XG4gICAgY2FzZSAneC1jcDEyNTMnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTMnXG4gICAgY2FzZSAnY3AxMjU0JzpcbiAgICBjYXNlICdjc2lzb2xhdGluNSc6XG4gICAgY2FzZSAnaXNvLTg4NTktOSc6XG4gICAgY2FzZSAnaXNvLWlyLTE0OCc6XG4gICAgY2FzZSAnaXNvODg1OS05JzpcbiAgICBjYXNlICdpc284ODU5OSc6XG4gICAgY2FzZSAnaXNvXzg4NTktOSc6XG4gICAgY2FzZSAnaXNvXzg4NTktOToxOTg5JzpcbiAgICBjYXNlICdsNSc6XG4gICAgY2FzZSAnbGF0aW41JzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTQnOlxuICAgIGNhc2UgJ3gtY3AxMjU0JzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjU0J1xuICAgIGNhc2UgJ2NwMTI1NSc6XG4gICAgY2FzZSAnd2luZG93cy0xMjU1JzpcbiAgICBjYXNlICd4LWNwMTI1NSc6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1NSdcbiAgICBjYXNlICdjcDEyNTYnOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1Nic6XG4gICAgY2FzZSAneC1jcDEyNTYnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTYnXG4gICAgY2FzZSAnY3AxMjU3JzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTcnOlxuICAgIGNhc2UgJ3gtY3AxMjU3JzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjU3J1xuICAgIGNhc2UgJ2NwMTI1OCc6XG4gICAgY2FzZSAnd2luZG93cy0xMjU4JzpcbiAgICBjYXNlICd4LWNwMTI1OCc6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1OCdcbiAgICBjYXNlICd4LW1hYy1jeXJpbGxpYyc6XG4gICAgY2FzZSAneC1tYWMtdWtyYWluaWFuJzpcbiAgICAgIHJldHVybiAneC1tYWMtY3lyaWxsaWMnXG4gICAgY2FzZSAnY2hpbmVzZSc6XG4gICAgY2FzZSAnY3NnYjIzMTInOlxuICAgIGNhc2UgJ2NzaXNvNThnYjIzMTI4MCc6XG4gICAgY2FzZSAnZ2IyMzEyJzpcbiAgICBjYXNlICdnYl8yMzEyJzpcbiAgICBjYXNlICdnYl8yMzEyLTgwJzpcbiAgICBjYXNlICdnYmsnOlxuICAgIGNhc2UgJ2lzby1pci01OCc6XG4gICAgY2FzZSAneC1nYmsnOlxuICAgICAgcmV0dXJuICdHQksnXG4gICAgY2FzZSAnZ2IxODAzMCc6XG4gICAgICByZXR1cm4gJ2diMTgwMzAnXG4gICAgY2FzZSAnYmlnNSc6XG4gICAgY2FzZSAnYmlnNS1oa3Njcyc6XG4gICAgY2FzZSAnY24tYmlnNSc6XG4gICAgY2FzZSAnY3NiaWc1JzpcbiAgICBjYXNlICd4LXgtYmlnNSc6XG4gICAgICByZXR1cm4gJ0JpZzUnXG4gICAgY2FzZSAnY3NldWNwa2RmbXRqYXBhbmVzZSc6XG4gICAgY2FzZSAnZXVjLWpwJzpcbiAgICBjYXNlICd4LWV1Yy1qcCc6XG4gICAgICByZXR1cm4gJ0VVQy1KUCdcbiAgICBjYXNlICdjc2lzbzIwMjJqcCc6XG4gICAgY2FzZSAnaXNvLTIwMjItanAnOlxuICAgICAgcmV0dXJuICdJU08tMjAyMi1KUCdcbiAgICBjYXNlICdjc3NoaWZ0amlzJzpcbiAgICBjYXNlICdtczkzMic6XG4gICAgY2FzZSAnbXNfa2FuamknOlxuICAgIGNhc2UgJ3NoaWZ0LWppcyc6XG4gICAgY2FzZSAnc2hpZnRfamlzJzpcbiAgICBjYXNlICdzamlzJzpcbiAgICBjYXNlICd3aW5kb3dzLTMxaic6XG4gICAgY2FzZSAneC1zamlzJzpcbiAgICAgIHJldHVybiAnU2hpZnRfSklTJ1xuICAgIGNhc2UgJ2NzZXVja3InOlxuICAgIGNhc2UgJ2Nza3NjNTYwMTE5ODcnOlxuICAgIGNhc2UgJ2V1Yy1rcic6XG4gICAgY2FzZSAnaXNvLWlyLTE0OSc6XG4gICAgY2FzZSAna29yZWFuJzpcbiAgICBjYXNlICdrc19jXzU2MDEtMTk4Nyc6XG4gICAgY2FzZSAna3NfY181NjAxLTE5ODknOlxuICAgIGNhc2UgJ2tzYzU2MDEnOlxuICAgIGNhc2UgJ2tzY181NjAxJzpcbiAgICBjYXNlICd3aW5kb3dzLTk0OSc6XG4gICAgICByZXR1cm4gJ0VVQy1LUidcbiAgICBjYXNlICdjc2lzbzIwMjJrcic6XG4gICAgY2FzZSAnaHotZ2ItMjMxMic6XG4gICAgY2FzZSAnaXNvLTIwMjItY24nOlxuICAgIGNhc2UgJ2lzby0yMDIyLWNuLWV4dCc6XG4gICAgY2FzZSAnaXNvLTIwMjIta3InOlxuICAgIGNhc2UgJ3JlcGxhY2VtZW50JzpcbiAgICAgIHJldHVybiAncmVwbGFjZW1lbnQnXG4gICAgY2FzZSAndW5pY29kZWZmZmUnOlxuICAgIGNhc2UgJ3V0Zi0xNmJlJzpcbiAgICAgIHJldHVybiAnVVRGLTE2QkUnXG4gICAgY2FzZSAnY3N1bmljb2RlJzpcbiAgICBjYXNlICdpc28tMTA2NDYtdWNzLTInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1bmljb2RlJzpcbiAgICBjYXNlICd1bmljb2RlZmVmZic6XG4gICAgY2FzZSAndXRmLTE2JzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gJ1VURi0xNkxFJ1xuICAgIGNhc2UgJ3gtdXNlci1kZWZpbmVkJzpcbiAgICAgIHJldHVybiAneC11c2VyLWRlZmluZWQnXG4gICAgZGVmYXVsdDogcmV0dXJuICdmYWlsdXJlJ1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRFbmNvZGluZ1xufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIGtTdGF0ZSxcbiAga0Vycm9yLFxuICBrUmVzdWx0LFxuICBrQWJvcnRlZCxcbiAga0xhc3RQcm9ncmVzc0V2ZW50RmlyZWRcbn0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBQcm9ncmVzc0V2ZW50IH0gPSByZXF1aXJlKCcuL3Byb2dyZXNzZXZlbnQnKVxuY29uc3QgeyBnZXRFbmNvZGluZyB9ID0gcmVxdWlyZSgnLi9lbmNvZGluZycpXG5jb25zdCB7IERPTUV4Y2VwdGlvbiB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvY29uc3RhbnRzJylcbmNvbnN0IHsgc2VyaWFsaXplQU1pbWVUeXBlLCBwYXJzZU1JTUVUeXBlIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9kYXRhVVJMJylcbmNvbnN0IHsgdHlwZXMgfSA9IHJlcXVpcmUoJ3V0aWwnKVxuY29uc3QgeyBTdHJpbmdEZWNvZGVyIH0gPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpXG5jb25zdCB7IGJ0b2EgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5cbi8qKiBAdHlwZSB7UHJvcGVydHlEZXNjcmlwdG9yfSAqL1xuY29uc3Qgc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IGZhbHNlLFxuICBjb25maWd1cmFibGU6IGZhbHNlXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jcmVhZE9wZXJhdGlvblxuICogQHBhcmFtIHtpbXBvcnQoJy4vZmlsZXJlYWRlcicpLkZpbGVSZWFkZXJ9IGZyXG4gKiBAcGFyYW0ge2ltcG9ydCgnYnVmZmVyJykuQmxvYn0gYmxvYlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nP30gZW5jb2RpbmdOYW1lXG4gKi9cbmZ1bmN0aW9uIHJlYWRPcGVyYXRpb24gKGZyLCBibG9iLCB0eXBlLCBlbmNvZGluZ05hbWUpIHtcbiAgLy8gMS4gSWYgZnJcdTIwMTlzIHN0YXRlIGlzIFwibG9hZGluZ1wiLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvclxuICAvLyAgICBET01FeGNlcHRpb24uXG4gIGlmIChmcltrU3RhdGVdID09PSAnbG9hZGluZycpIHtcbiAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdJbnZhbGlkIHN0YXRlJywgJ0ludmFsaWRTdGF0ZUVycm9yJylcbiAgfVxuXG4gIC8vIDIuIFNldCBmclx1MjAxOXMgc3RhdGUgdG8gXCJsb2FkaW5nXCIuXG4gIGZyW2tTdGF0ZV0gPSAnbG9hZGluZydcblxuICAvLyAzLiBTZXQgZnJcdTIwMTlzIHJlc3VsdCB0byBudWxsLlxuICBmcltrUmVzdWx0XSA9IG51bGxcblxuICAvLyA0LiBTZXQgZnJcdTIwMTlzIGVycm9yIHRvIG51bGwuXG4gIGZyW2tFcnJvcl0gPSBudWxsXG5cbiAgLy8gNS4gTGV0IHN0cmVhbSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgZ2V0IHN0cmVhbSBvbiBibG9iLlxuICAvKiogQHR5cGUge2ltcG9ydCgnc3RyZWFtL3dlYicpLlJlYWRhYmxlU3RyZWFtfSAqL1xuICBjb25zdCBzdHJlYW0gPSBibG9iLnN0cmVhbSgpXG5cbiAgLy8gNi4gTGV0IHJlYWRlciBiZSB0aGUgcmVzdWx0IG9mIGdldHRpbmcgYSByZWFkZXIgZnJvbSBzdHJlYW0uXG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKVxuXG4gIC8vIDcuIExldCBieXRlcyBiZSBhbiBlbXB0eSBieXRlIHNlcXVlbmNlLlxuICAvKiogQHR5cGUge1VpbnQ4QXJyYXlbXX0gKi9cbiAgY29uc3QgYnl0ZXMgPSBbXVxuXG4gIC8vIDguIExldCBjaHVua1Byb21pc2UgYmUgdGhlIHJlc3VsdCBvZiByZWFkaW5nIGEgY2h1bmsgZnJvbVxuICAvLyAgICBzdHJlYW0gd2l0aCByZWFkZXIuXG4gIGxldCBjaHVua1Byb21pc2UgPSByZWFkZXIucmVhZCgpXG5cbiAgLy8gOS4gTGV0IGlzRmlyc3RDaHVuayBiZSB0cnVlLlxuICBsZXQgaXNGaXJzdENodW5rID0gdHJ1ZVxuXG4gIC8vIDEwLiBJbiBwYXJhbGxlbCwgd2hpbGUgdHJ1ZTpcbiAgLy8gTm90ZTogXCJJbiBwYXJhbGxlbFwiIGp1c3QgbWVhbnMgbm9uLWJsb2NraW5nXG4gIC8vIE5vdGUgMjogcmVhZE9wZXJhdGlvbiBpdHNlbGYgY2Fubm90IGJlIGFzeW5jIGFzIGRvdWJsZVxuICAvLyByZWFkaW5nIHRoZSBib2R5IHdvdWxkIHRoZW4gcmVqZWN0IHRoZSBwcm9taXNlLCBpbnN0ZWFkXG4gIC8vIG9mIHRocm93aW5nIGFuIGVycm9yLlxuICA7KGFzeW5jICgpID0+IHtcbiAgICB3aGlsZSAoIWZyW2tBYm9ydGVkXSkge1xuICAgICAgLy8gMS4gV2FpdCBmb3IgY2h1bmtQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBvciByZWplY3RlZC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IGNodW5rUHJvbWlzZVxuXG4gICAgICAgIC8vIDIuIElmIGNodW5rUHJvbWlzZSBpcyBmdWxmaWxsZWQsIGFuZCBpc0ZpcnN0Q2h1bmsgaXNcbiAgICAgICAgLy8gICAgdHJ1ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWRcbiAgICAgICAgLy8gICAgbG9hZHN0YXJ0IGF0IGZyLlxuICAgICAgICBpZiAoaXNGaXJzdENodW5rICYmICFmcltrQWJvcnRlZF0pIHtcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2xvYWRzdGFydCcsIGZyKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBTZXQgaXNGaXJzdENodW5rIHRvIGZhbHNlLlxuICAgICAgICBpc0ZpcnN0Q2h1bmsgPSBmYWxzZVxuXG4gICAgICAgIC8vIDQuIElmIGNodW5rUHJvbWlzZSBpcyBmdWxmaWxsZWQgd2l0aCBhbiBvYmplY3Qgd2hvc2VcbiAgICAgICAgLy8gICAgZG9uZSBwcm9wZXJ0eSBpcyBmYWxzZSBhbmQgd2hvc2UgdmFsdWUgcHJvcGVydHkgaXNcbiAgICAgICAgLy8gICAgYSBVaW50OEFycmF5IG9iamVjdCwgcnVuIHRoZXNlIHN0ZXBzOlxuICAgICAgICBpZiAoIWRvbmUgJiYgdHlwZXMuaXNVaW50OEFycmF5KHZhbHVlKSkge1xuICAgICAgICAgIC8vIDEuIExldCBicyBiZSB0aGUgYnl0ZSBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGVcbiAgICAgICAgICAvLyAgICBVaW50OEFycmF5IG9iamVjdC5cblxuICAgICAgICAgIC8vIDIuIEFwcGVuZCBicyB0byBieXRlcy5cbiAgICAgICAgICBieXRlcy5wdXNoKHZhbHVlKVxuXG4gICAgICAgICAgLy8gMy4gSWYgcm91Z2hseSA1MG1zIGhhdmUgcGFzc2VkIHNpbmNlIHRoZXNlIHN0ZXBzXG4gICAgICAgICAgLy8gICAgd2VyZSBsYXN0IGludm9rZWQsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFcbiAgICAgICAgICAvLyAgICBwcm9ncmVzcyBldmVudCBjYWxsZWQgcHJvZ3Jlc3MgYXQgZnIuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmcltrTGFzdFByb2dyZXNzRXZlbnRGaXJlZF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICBEYXRlLm5vdygpIC0gZnJba0xhc3RQcm9ncmVzc0V2ZW50RmlyZWRdID49IDUwXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAhZnJba0Fib3J0ZWRdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmcltrTGFzdFByb2dyZXNzRXZlbnRGaXJlZF0gPSBEYXRlLm5vdygpXG4gICAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICAgIGZpcmVBUHJvZ3Jlc3NFdmVudCgncHJvZ3Jlc3MnLCBmcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4gU2V0IGNodW5rUHJvbWlzZSB0byB0aGUgcmVzdWx0IG9mIHJlYWRpbmcgYVxuICAgICAgICAgIC8vICAgIGNodW5rIGZyb20gc3RyZWFtIHdpdGggcmVhZGVyLlxuICAgICAgICAgIGNodW5rUHJvbWlzZSA9IHJlYWRlci5yZWFkKClcbiAgICAgICAgfSBlbHNlIGlmIChkb25lKSB7XG4gICAgICAgICAgLy8gNS4gT3RoZXJ3aXNlLCBpZiBjaHVua1Byb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggYW5cbiAgICAgICAgICAvLyAgICBvYmplY3Qgd2hvc2UgZG9uZSBwcm9wZXJ0eSBpcyB0cnVlLCBxdWV1ZSBhIHRhc2tcbiAgICAgICAgICAvLyAgICB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwcyBhbmQgYWJvcnQgdGhpcyBhbGdvcml0aG06XG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgLy8gMS4gU2V0IGZyXHUyMDE5cyBzdGF0ZSB0byBcImRvbmVcIi5cbiAgICAgICAgICAgIGZyW2tTdGF0ZV0gPSAnZG9uZSdcblxuICAgICAgICAgICAgLy8gMi4gTGV0IHJlc3VsdCBiZSB0aGUgcmVzdWx0IG9mIHBhY2thZ2UgZGF0YSBnaXZlblxuICAgICAgICAgICAgLy8gICAgYnl0ZXMsIHR5cGUsIGJsb2JcdTIwMTlzIHR5cGUsIGFuZCBlbmNvZGluZ05hbWUuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwYWNrYWdlRGF0YShieXRlcywgdHlwZSwgYmxvYi50eXBlLCBlbmNvZGluZ05hbWUpXG5cbiAgICAgICAgICAgICAgLy8gNC4gRWxzZTpcblxuICAgICAgICAgICAgICBpZiAoZnJba0Fib3J0ZWRdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAxLiBTZXQgZnJcdTIwMTlzIHJlc3VsdCB0byByZXN1bHQuXG4gICAgICAgICAgICAgIGZyW2tSZXN1bHRdID0gcmVzdWx0XG5cbiAgICAgICAgICAgICAgLy8gMi4gRmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBsb2FkIGF0IHRoZSBmci5cbiAgICAgICAgICAgICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdsb2FkJywgZnIpXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyAzLiBJZiBwYWNrYWdlIGRhdGEgdGhyZXcgYW4gZXhjZXB0aW9uIGVycm9yOlxuXG4gICAgICAgICAgICAgIC8vIDEuIFNldCBmclx1MjAxOXMgZXJyb3IgdG8gZXJyb3IuXG4gICAgICAgICAgICAgIGZyW2tFcnJvcl0gPSBlcnJvclxuXG4gICAgICAgICAgICAgIC8vIDIuIEZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgZXJyb3IgYXQgZnIuXG4gICAgICAgICAgICAgIGZpcmVBUHJvZ3Jlc3NFdmVudCgnZXJyb3InLCBmcilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gNS4gSWYgZnJcdTIwMTlzIHN0YXRlIGlzIG5vdCBcImxvYWRpbmdcIiwgZmlyZSBhIHByb2dyZXNzXG4gICAgICAgICAgICAvLyAgICBldmVudCBjYWxsZWQgbG9hZGVuZCBhdCB0aGUgZnIuXG4gICAgICAgICAgICBpZiAoZnJba1N0YXRlXSAhPT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgICAgICAgIGZpcmVBUHJvZ3Jlc3NFdmVudCgnbG9hZGVuZCcsIGZyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZnJba0Fib3J0ZWRdKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyA2LiBPdGhlcndpc2UsIGlmIGNodW5rUHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIGFuXG4gICAgICAgIC8vICAgIGVycm9yIGVycm9yLCBxdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmdcbiAgICAgICAgLy8gICAgc3RlcHMgYW5kIGFib3J0IHRoaXMgYWxnb3JpdGhtOlxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgLy8gMS4gU2V0IGZyXHUyMDE5cyBzdGF0ZSB0byBcImRvbmVcIi5cbiAgICAgICAgICBmcltrU3RhdGVdID0gJ2RvbmUnXG5cbiAgICAgICAgICAvLyAyLiBTZXQgZnJcdTIwMTlzIGVycm9yIHRvIGVycm9yLlxuICAgICAgICAgIGZyW2tFcnJvcl0gPSBlcnJvclxuXG4gICAgICAgICAgLy8gMy4gRmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBlcnJvciBhdCBmci5cbiAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2Vycm9yJywgZnIpXG5cbiAgICAgICAgICAvLyA0LiBJZiBmclx1MjAxOXMgc3RhdGUgaXMgbm90IFwibG9hZGluZ1wiLCBmaXJlIGEgcHJvZ3Jlc3NcbiAgICAgICAgICAvLyAgICBldmVudCBjYWxsZWQgbG9hZGVuZCBhdCBmci5cbiAgICAgICAgICBpZiAoZnJba1N0YXRlXSAhPT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2xvYWRlbmQnLCBmcilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH0pKClcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNmaXJlLWEtcHJvZ3Jlc3MtZXZlbnRcbiAqIEBzZWUgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWV2ZW50LWZpcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBlIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vZmlsZXJlYWRlcicpLkZpbGVSZWFkZXJ9IHJlYWRlclxuICovXG5mdW5jdGlvbiBmaXJlQVByb2dyZXNzRXZlbnQgKGUsIHJlYWRlcikge1xuICAvLyBUaGUgcHJvZ3Jlc3MgZXZlbnQgZSBkb2VzIG5vdCBidWJibGUuIGUuYnViYmxlcyBtdXN0IGJlIGZhbHNlXG4gIC8vIFRoZSBwcm9ncmVzcyBldmVudCBlIGlzIE5PVCBjYW5jZWxhYmxlLiBlLmNhbmNlbGFibGUgbXVzdCBiZSBmYWxzZVxuICBjb25zdCBldmVudCA9IG5ldyBQcm9ncmVzc0V2ZW50KGUsIHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiBmYWxzZVxuICB9KVxuXG4gIHJlYWRlci5kaXNwYXRjaEV2ZW50KGV2ZW50KVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2Jsb2ItcGFja2FnZS1kYXRhXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXlbXX0gYnl0ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZz99IG1pbWVUeXBlXG4gKiBAcGFyYW0ge3N0cmluZz99IGVuY29kaW5nTmFtZVxuICovXG5mdW5jdGlvbiBwYWNrYWdlRGF0YSAoYnl0ZXMsIHR5cGUsIG1pbWVUeXBlLCBlbmNvZGluZ05hbWUpIHtcbiAgLy8gMS4gQSBCbG9iIGhhcyBhbiBhc3NvY2lhdGVkIHBhY2thZ2UgZGF0YSBhbGdvcml0aG0sIGdpdmVuXG4gIC8vICAgIGJ5dGVzLCBhIHR5cGUsIGEgb3B0aW9uYWwgbWltZVR5cGUsIGFuZCBhIG9wdGlvbmFsXG4gIC8vICAgIGVuY29kaW5nTmFtZSwgd2hpY2ggc3dpdGNoZXMgb24gdHlwZSBhbmQgcnVucyB0aGVcbiAgLy8gICAgYXNzb2NpYXRlZCBzdGVwczpcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdEYXRhVVJMJzoge1xuICAgICAgLy8gMS4gUmV0dXJuIGJ5dGVzIGFzIGEgRGF0YVVSTCBbUkZDMjM5N10gc3ViamVjdCB0b1xuICAgICAgLy8gICAgdGhlIGNvbnNpZGVyYXRpb25zIGJlbG93OlxuICAgICAgLy8gICogVXNlIG1pbWVUeXBlIGFzIHBhcnQgb2YgdGhlIERhdGEgVVJMIGlmIGl0IGlzXG4gICAgICAvLyAgICBhdmFpbGFibGUgaW4ga2VlcGluZyB3aXRoIHRoZSBEYXRhIFVSTFxuICAgICAgLy8gICAgc3BlY2lmaWNhdGlvbiBbUkZDMjM5N10uXG4gICAgICAvLyAgKiBJZiBtaW1lVHlwZSBpcyBub3QgYXZhaWxhYmxlIHJldHVybiBhIERhdGEgVVJMXG4gICAgICAvLyAgICB3aXRob3V0IGEgbWVkaWEtdHlwZS4gW1JGQzIzOTddLlxuXG4gICAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzIzOTcjc2VjdGlvbi0zXG4gICAgICAvLyBkYXRhdXJsICAgIDo9IFwiZGF0YTpcIiBbIG1lZGlhdHlwZSBdIFsgXCI7YmFzZTY0XCIgXSBcIixcIiBkYXRhXG4gICAgICAvLyBtZWRpYXR5cGUgIDo9IFsgdHlwZSBcIi9cIiBzdWJ0eXBlIF0gKiggXCI7XCIgcGFyYW1ldGVyIClcbiAgICAgIC8vIGRhdGEgICAgICAgOj0gKnVybGNoYXJcbiAgICAgIC8vIHBhcmFtZXRlciAgOj0gYXR0cmlidXRlIFwiPVwiIHZhbHVlXG4gICAgICBsZXQgZGF0YVVSTCA9ICdkYXRhOidcblxuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJylcblxuICAgICAgaWYgKHBhcnNlZCAhPT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgIGRhdGFVUkwgKz0gc2VyaWFsaXplQU1pbWVUeXBlKHBhcnNlZClcbiAgICAgIH1cblxuICAgICAgZGF0YVVSTCArPSAnO2Jhc2U2NCwnXG5cbiAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcignbGF0aW4xJylcblxuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBieXRlcykge1xuICAgICAgICBkYXRhVVJMICs9IGJ0b2EoZGVjb2Rlci53cml0ZShjaHVuaykpXG4gICAgICB9XG5cbiAgICAgIGRhdGFVUkwgKz0gYnRvYShkZWNvZGVyLmVuZCgpKVxuXG4gICAgICByZXR1cm4gZGF0YVVSTFxuICAgIH1cbiAgICBjYXNlICdUZXh0Jzoge1xuICAgICAgLy8gMS4gTGV0IGVuY29kaW5nIGJlIGZhaWx1cmVcbiAgICAgIGxldCBlbmNvZGluZyA9ICdmYWlsdXJlJ1xuXG4gICAgICAvLyAyLiBJZiB0aGUgZW5jb2RpbmdOYW1lIGlzIHByZXNlbnQsIHNldCBlbmNvZGluZyB0byB0aGVcbiAgICAgIC8vICAgIHJlc3VsdCBvZiBnZXR0aW5nIGFuIGVuY29kaW5nIGZyb20gZW5jb2RpbmdOYW1lLlxuICAgICAgaWYgKGVuY29kaW5nTmFtZSkge1xuICAgICAgICBlbmNvZGluZyA9IGdldEVuY29kaW5nKGVuY29kaW5nTmFtZSlcbiAgICAgIH1cblxuICAgICAgLy8gMy4gSWYgZW5jb2RpbmcgaXMgZmFpbHVyZSwgYW5kIG1pbWVUeXBlIGlzIHByZXNlbnQ6XG4gICAgICBpZiAoZW5jb2RpbmcgPT09ICdmYWlsdXJlJyAmJiBtaW1lVHlwZSkge1xuICAgICAgICAvLyAxLiBMZXQgdHlwZSBiZSB0aGUgcmVzdWx0IG9mIHBhcnNlIGEgTUlNRSB0eXBlXG4gICAgICAgIC8vICAgIGdpdmVuIG1pbWVUeXBlLlxuICAgICAgICBjb25zdCB0eXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSlcblxuICAgICAgICAvLyAyLiBJZiB0eXBlIGlzIG5vdCBmYWlsdXJlLCBzZXQgZW5jb2RpbmcgdG8gdGhlIHJlc3VsdFxuICAgICAgICAvLyAgICBvZiBnZXR0aW5nIGFuIGVuY29kaW5nIGZyb20gdHlwZVx1MjAxOXMgcGFyYW1ldGVyc1tcImNoYXJzZXRcIl0uXG4gICAgICAgIGlmICh0eXBlICE9PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICBlbmNvZGluZyA9IGdldEVuY29kaW5nKHR5cGUucGFyYW1ldGVycy5nZXQoJ2NoYXJzZXQnKSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBlbmNvZGluZyBpcyBmYWlsdXJlLCB0aGVuIHNldCBlbmNvZGluZyB0byBVVEYtOC5cbiAgICAgIGlmIChlbmNvZGluZyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgIGVuY29kaW5nID0gJ1VURi04J1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBEZWNvZGUgYnl0ZXMgdXNpbmcgZmFsbGJhY2sgZW5jb2RpbmcgZW5jb2RpbmcsIGFuZFxuICAgICAgLy8gICAgcmV0dXJuIHRoZSByZXN1bHQuXG4gICAgICByZXR1cm4gZGVjb2RlKGJ5dGVzLCBlbmNvZGluZylcbiAgICB9XG4gICAgY2FzZSAnQXJyYXlCdWZmZXInOiB7XG4gICAgICAvLyBSZXR1cm4gYSBuZXcgQXJyYXlCdWZmZXIgd2hvc2UgY29udGVudHMgYXJlIGJ5dGVzLlxuICAgICAgY29uc3Qgc2VxdWVuY2UgPSBjb21iaW5lQnl0ZVNlcXVlbmNlcyhieXRlcylcblxuICAgICAgcmV0dXJuIHNlcXVlbmNlLmJ1ZmZlclxuICAgIH1cbiAgICBjYXNlICdCaW5hcnlTdHJpbmcnOiB7XG4gICAgICAvLyBSZXR1cm4gYnl0ZXMgYXMgYSBiaW5hcnkgc3RyaW5nLCBpbiB3aGljaCBldmVyeSBieXRlXG4gICAgICAvLyAgaXMgcmVwcmVzZW50ZWQgYnkgYSBjb2RlIHVuaXQgb2YgZXF1YWwgdmFsdWUgWzAuLjI1NV0uXG4gICAgICBsZXQgYmluYXJ5U3RyaW5nID0gJydcblxuICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKCdsYXRpbjEnKVxuXG4gICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGJ5dGVzKSB7XG4gICAgICAgIGJpbmFyeVN0cmluZyArPSBkZWNvZGVyLndyaXRlKGNodW5rKVxuICAgICAgfVxuXG4gICAgICBiaW5hcnlTdHJpbmcgKz0gZGVjb2Rlci5lbmQoKVxuXG4gICAgICByZXR1cm4gYmluYXJ5U3RyaW5nXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jZGVjb2RlXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXlbXX0gaW9RdWV1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKi9cbmZ1bmN0aW9uIGRlY29kZSAoaW9RdWV1ZSwgZW5jb2RpbmcpIHtcbiAgY29uc3QgYnl0ZXMgPSBjb21iaW5lQnl0ZVNlcXVlbmNlcyhpb1F1ZXVlKVxuXG4gIC8vIDEuIExldCBCT01FbmNvZGluZyBiZSB0aGUgcmVzdWx0IG9mIEJPTSBzbmlmZmluZyBpb1F1ZXVlLlxuICBjb25zdCBCT01FbmNvZGluZyA9IEJPTVNuaWZmaW5nKGJ5dGVzKVxuXG4gIGxldCBzbGljZSA9IDBcblxuICAvLyAyLiBJZiBCT01FbmNvZGluZyBpcyBub24tbnVsbDpcbiAgaWYgKEJPTUVuY29kaW5nICE9PSBudWxsKSB7XG4gICAgLy8gMS4gU2V0IGVuY29kaW5nIHRvIEJPTUVuY29kaW5nLlxuICAgIGVuY29kaW5nID0gQk9NRW5jb2RpbmdcblxuICAgIC8vIDIuIFJlYWQgdGhyZWUgYnl0ZXMgZnJvbSBpb1F1ZXVlLCBpZiBCT01FbmNvZGluZyBpc1xuICAgIC8vICAgIFVURi04OyBvdGhlcndpc2UgcmVhZCB0d28gYnl0ZXMuXG4gICAgLy8gICAgKERvIG5vdGhpbmcgd2l0aCB0aG9zZSBieXRlcy4pXG4gICAgc2xpY2UgPSBCT01FbmNvZGluZyA9PT0gJ1VURi04JyA/IDMgOiAyXG4gIH1cblxuICAvLyAzLiBQcm9jZXNzIGEgcXVldWUgd2l0aCBhbiBpbnN0YW5jZSBvZiBlbmNvZGluZ1x1MjAxOXNcbiAgLy8gICAgZGVjb2RlciwgaW9RdWV1ZSwgb3V0cHV0LCBhbmQgXCJyZXBsYWNlbWVudFwiLlxuXG4gIC8vIDQuIFJldHVybiBvdXRwdXQuXG5cbiAgY29uc3Qgc2xpY2VkID0gYnl0ZXMuc2xpY2Uoc2xpY2UpXG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoZW5jb2RpbmcpLmRlY29kZShzbGljZWQpXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jYm9tLXNuaWZmXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGlvUXVldWVcbiAqL1xuZnVuY3Rpb24gQk9NU25pZmZpbmcgKGlvUXVldWUpIHtcbiAgLy8gMS4gTGV0IEJPTSBiZSB0aGUgcmVzdWx0IG9mIHBlZWtpbmcgMyBieXRlcyBmcm9tIGlvUXVldWUsXG4gIC8vICAgIGNvbnZlcnRlZCB0byBhIGJ5dGUgc2VxdWVuY2UuXG4gIGNvbnN0IFthLCBiLCBjXSA9IGlvUXVldWVcblxuICAvLyAyLiBGb3IgZWFjaCBvZiB0aGUgcm93cyBpbiB0aGUgdGFibGUgYmVsb3csIHN0YXJ0aW5nIHdpdGhcbiAgLy8gICAgdGhlIGZpcnN0IG9uZSBhbmQgZ29pbmcgZG93biwgaWYgQk9NIHN0YXJ0cyB3aXRoIHRoZVxuICAvLyAgICBieXRlcyBnaXZlbiBpbiB0aGUgZmlyc3QgY29sdW1uLCB0aGVuIHJldHVybiB0aGVcbiAgLy8gICAgZW5jb2RpbmcgZ2l2ZW4gaW4gdGhlIGNlbGwgaW4gdGhlIHNlY29uZCBjb2x1bW4gb2YgdGhhdFxuICAvLyAgICByb3cuIE90aGVyd2lzZSwgcmV0dXJuIG51bGwuXG4gIGlmIChhID09PSAweEVGICYmIGIgPT09IDB4QkIgJiYgYyA9PT0gMHhCRikge1xuICAgIHJldHVybiAnVVRGLTgnXG4gIH0gZWxzZSBpZiAoYSA9PT0gMHhGRSAmJiBiID09PSAweEZGKSB7XG4gICAgcmV0dXJuICdVVEYtMTZCRSdcbiAgfSBlbHNlIGlmIChhID09PSAweEZGICYmIGIgPT09IDB4RkUpIHtcbiAgICByZXR1cm4gJ1VURi0xNkxFJ1xuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXlbXX0gc2VxdWVuY2VzXG4gKi9cbmZ1bmN0aW9uIGNvbWJpbmVCeXRlU2VxdWVuY2VzIChzZXF1ZW5jZXMpIHtcbiAgY29uc3Qgc2l6ZSA9IHNlcXVlbmNlcy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gYSArIGIuYnl0ZUxlbmd0aFxuICB9LCAwKVxuXG4gIGxldCBvZmZzZXQgPSAwXG5cbiAgcmV0dXJuIHNlcXVlbmNlcy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICBhLnNldChiLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IGIuYnl0ZUxlbmd0aFxuICAgIHJldHVybiBhXG4gIH0sIG5ldyBVaW50OEFycmF5KHNpemUpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgcmVhZE9wZXJhdGlvbixcbiAgZmlyZUFQcm9ncmVzc0V2ZW50XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHtcbiAgc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgcmVhZE9wZXJhdGlvbixcbiAgZmlyZUFQcm9ncmVzc0V2ZW50XG59ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHtcbiAga1N0YXRlLFxuICBrRXJyb3IsXG4gIGtSZXN1bHQsXG4gIGtFdmVudHMsXG4gIGtBYm9ydGVkXG59ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG5jbGFzcyBGaWxlUmVhZGVyIGV4dGVuZHMgRXZlbnRUYXJnZXQge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpc1trU3RhdGVdID0gJ2VtcHR5J1xuICAgIHRoaXNba1Jlc3VsdF0gPSBudWxsXG4gICAgdGhpc1trRXJyb3JdID0gbnVsbFxuICAgIHRoaXNba0V2ZW50c10gPSB7XG4gICAgICBsb2FkZW5kOiBudWxsLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBhYm9ydDogbnVsbCxcbiAgICAgIGxvYWQ6IG51bGwsXG4gICAgICBwcm9ncmVzczogbnVsbCxcbiAgICAgIGxvYWRzdGFydDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkZm4tcmVhZEFzQXJyYXlCdWZmZXJcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2J1ZmZlcicpLkJsb2J9IGJsb2JcbiAgICovXG4gIHJlYWRBc0FycmF5QnVmZmVyIChibG9iKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdGaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyJyB9KVxuXG4gICAgYmxvYiA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoYmxvYiwgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgICAvLyBUaGUgcmVhZEFzQXJyYXlCdWZmZXIoYmxvYikgbWV0aG9kLCB3aGVuIGludm9rZWQsXG4gICAgLy8gbXVzdCBpbml0aWF0ZSBhIHJlYWQgb3BlcmF0aW9uIGZvciBibG9iIHdpdGggQXJyYXlCdWZmZXIuXG4gICAgcmVhZE9wZXJhdGlvbih0aGlzLCBibG9iLCAnQXJyYXlCdWZmZXInKVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI3JlYWRBc0JpbmFyeVN0cmluZ1xuICAgKiBAcGFyYW0ge2ltcG9ydCgnYnVmZmVyJykuQmxvYn0gYmxvYlxuICAgKi9cbiAgcmVhZEFzQmluYXJ5U3RyaW5nIChibG9iKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdGaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZycgfSlcblxuICAgIGJsb2IgPSB3ZWJpZGwuY29udmVydGVycy5CbG9iKGJsb2IsIHsgc3RyaWN0OiBmYWxzZSB9KVxuXG4gICAgLy8gVGhlIHJlYWRBc0JpbmFyeVN0cmluZyhibG9iKSBtZXRob2QsIHdoZW4gaW52b2tlZCxcbiAgICAvLyBtdXN0IGluaXRpYXRlIGEgcmVhZCBvcGVyYXRpb24gZm9yIGJsb2Igd2l0aCBCaW5hcnlTdHJpbmcuXG4gICAgcmVhZE9wZXJhdGlvbih0aGlzLCBibG9iLCAnQmluYXJ5U3RyaW5nJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNyZWFkQXNEYXRhVGV4dFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYnVmZmVyJykuQmxvYn0gYmxvYlxuICAgKiBAcGFyYW0ge3N0cmluZz99IGVuY29kaW5nXG4gICAqL1xuICByZWFkQXNUZXh0IChibG9iLCBlbmNvZGluZyA9IHVuZGVmaW5lZCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRmlsZVJlYWRlci5yZWFkQXNUZXh0JyB9KVxuXG4gICAgYmxvYiA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoYmxvYiwgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5jb2RpbmcgPSB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcoZW5jb2RpbmcpXG4gICAgfVxuXG4gICAgLy8gVGhlIHJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpIG1ldGhvZCwgd2hlbiBpbnZva2VkLFxuICAgIC8vIG11c3QgaW5pdGlhdGUgYSByZWFkIG9wZXJhdGlvbiBmb3IgYmxvYiB3aXRoIFRleHQgYW5kIGVuY29kaW5nLlxuICAgIHJlYWRPcGVyYXRpb24odGhpcywgYmxvYiwgJ1RleHQnLCBlbmNvZGluZylcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkZm4tcmVhZEFzRGF0YVVSTFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYnVmZmVyJykuQmxvYn0gYmxvYlxuICAgKi9cbiAgcmVhZEFzRGF0YVVSTCAoYmxvYikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMJyB9KVxuXG4gICAgYmxvYiA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoYmxvYiwgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgICAvLyBUaGUgcmVhZEFzRGF0YVVSTChibG9iKSBtZXRob2QsIHdoZW4gaW52b2tlZCwgbXVzdFxuICAgIC8vIGluaXRpYXRlIGEgcmVhZCBvcGVyYXRpb24gZm9yIGJsb2Igd2l0aCBEYXRhVVJMLlxuICAgIHJlYWRPcGVyYXRpb24odGhpcywgYmxvYiwgJ0RhdGFVUkwnKVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2Rmbi1hYm9ydFxuICAgKi9cbiAgYWJvcnQgKCkge1xuICAgIC8vIDEuIElmIHRoaXMncyBzdGF0ZSBpcyBcImVtcHR5XCIgb3IgaWYgdGhpcydzIHN0YXRlIGlzXG4gICAgLy8gICAgXCJkb25lXCIgc2V0IHRoaXMncyByZXN1bHQgdG8gbnVsbCBhbmQgdGVybWluYXRlXG4gICAgLy8gICAgdGhpcyBhbGdvcml0aG0uXG4gICAgaWYgKHRoaXNba1N0YXRlXSA9PT0gJ2VtcHR5JyB8fCB0aGlzW2tTdGF0ZV0gPT09ICdkb25lJykge1xuICAgICAgdGhpc1trUmVzdWx0XSA9IG51bGxcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIDIuIElmIHRoaXMncyBzdGF0ZSBpcyBcImxvYWRpbmdcIiBzZXQgdGhpcydzIHN0YXRlIHRvXG4gICAgLy8gICAgXCJkb25lXCIgYW5kIHNldCB0aGlzJ3MgcmVzdWx0IHRvIG51bGwuXG4gICAgaWYgKHRoaXNba1N0YXRlXSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzW2tTdGF0ZV0gPSAnZG9uZSdcbiAgICAgIHRoaXNba1Jlc3VsdF0gPSBudWxsXG4gICAgfVxuXG4gICAgLy8gMy4gSWYgdGhlcmUgYXJlIGFueSB0YXNrcyBmcm9tIHRoaXMgb24gdGhlIGZpbGUgcmVhZGluZ1xuICAgIC8vICAgIHRhc2sgc291cmNlIGluIGFuIGFmZmlsaWF0ZWQgdGFzayBxdWV1ZSwgdGhlbiByZW1vdmVcbiAgICAvLyAgICB0aG9zZSB0YXNrcyBmcm9tIHRoYXQgdGFzayBxdWV1ZS5cbiAgICB0aGlzW2tBYm9ydGVkXSA9IHRydWVcblxuICAgIC8vIDQuIFRlcm1pbmF0ZSB0aGUgYWxnb3JpdGhtIGZvciB0aGUgcmVhZCBtZXRob2QgYmVpbmcgcHJvY2Vzc2VkLlxuICAgIC8vIFRPRE9cblxuICAgIC8vIDUuIEZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgYWJvcnQgYXQgdGhpcy5cbiAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2Fib3J0JywgdGhpcylcblxuICAgIC8vIDYuIElmIHRoaXMncyBzdGF0ZSBpcyBub3QgXCJsb2FkaW5nXCIsIGZpcmUgYSBwcm9ncmVzc1xuICAgIC8vICAgIGV2ZW50IGNhbGxlZCBsb2FkZW5kIGF0IHRoaXMuXG4gICAgaWYgKHRoaXNba1N0YXRlXSAhPT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2xvYWRlbmQnLCB0aGlzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkb20tZmlsZXJlYWRlci1yZWFkeXN0YXRlXG4gICAqL1xuICBnZXQgcmVhZHlTdGF0ZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHN3aXRjaCAodGhpc1trU3RhdGVdKSB7XG4gICAgICBjYXNlICdlbXB0eSc6IHJldHVybiB0aGlzLkVNUFRZXG4gICAgICBjYXNlICdsb2FkaW5nJzogcmV0dXJuIHRoaXMuTE9BRElOR1xuICAgICAgY2FzZSAnZG9uZSc6IHJldHVybiB0aGlzLkRPTkVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZG9tLWZpbGVyZWFkZXItcmVzdWx0XG4gICAqL1xuICBnZXQgcmVzdWx0ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgLy8gVGhlIHJlc3VsdCBhdHRyaWJ1dGVcdTIwMTlzIGdldHRlciwgd2hlbiBpbnZva2VkLCBtdXN0IHJldHVyblxuICAgIC8vIHRoaXMncyByZXN1bHQuXG4gICAgcmV0dXJuIHRoaXNba1Jlc3VsdF1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkb20tZmlsZXJlYWRlci1lcnJvclxuICAgKi9cbiAgZ2V0IGVycm9yICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgLy8gVGhlIGVycm9yIGF0dHJpYnV0ZVx1MjAxOXMgZ2V0dGVyLCB3aGVuIGludm9rZWQsIG11c3QgcmV0dXJuXG4gICAgLy8gdGhpcydzIGVycm9yLlxuICAgIHJldHVybiB0aGlzW2tFcnJvcl1cbiAgfVxuXG4gIGdldCBvbmxvYWRlbmQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICByZXR1cm4gdGhpc1trRXZlbnRzXS5sb2FkZW5kXG4gIH1cblxuICBzZXQgb25sb2FkZW5kIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICBpZiAodGhpc1trRXZlbnRzXS5sb2FkZW5kKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCB0aGlzW2tFdmVudHNdLmxvYWRlbmQpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1trRXZlbnRzXS5sb2FkZW5kID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmxvYWRlbmQgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uZXJyb3IgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICByZXR1cm4gdGhpc1trRXZlbnRzXS5lcnJvclxuICB9XG5cbiAgc2V0IG9uZXJyb3IgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIGlmICh0aGlzW2tFdmVudHNdLmVycm9yKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpc1trRXZlbnRzXS5lcnJvcilcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmVycm9yID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1trRXZlbnRzXS5lcnJvciA9IG51bGxcbiAgICB9XG4gIH1cblxuICBnZXQgb25sb2Fkc3RhcnQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICByZXR1cm4gdGhpc1trRXZlbnRzXS5sb2Fkc3RhcnRcbiAgfVxuXG4gIHNldCBvbmxvYWRzdGFydCAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgaWYgKHRoaXNba0V2ZW50c10ubG9hZHN0YXJ0KSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRzdGFydCcsIHRoaXNba0V2ZW50c10ubG9hZHN0YXJ0KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNba0V2ZW50c10ubG9hZHN0YXJ0ID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZHN0YXJ0JywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0V2ZW50c10ubG9hZHN0YXJ0ID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBvbnByb2dyZXNzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgcmV0dXJuIHRoaXNba0V2ZW50c10ucHJvZ3Jlc3NcbiAgfVxuXG4gIHNldCBvbnByb2dyZXNzIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICBpZiAodGhpc1trRXZlbnRzXS5wcm9ncmVzcykge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXNba0V2ZW50c10ucHJvZ3Jlc3MpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1trRXZlbnRzXS5wcm9ncmVzcyA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0V2ZW50c10ucHJvZ3Jlc3MgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9ubG9hZCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHJldHVybiB0aGlzW2tFdmVudHNdLmxvYWRcbiAgfVxuXG4gIHNldCBvbmxvYWQgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIGlmICh0aGlzW2tFdmVudHNdLmxvYWQpIHtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXNba0V2ZW50c10ubG9hZClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmxvYWQgPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0V2ZW50c10ubG9hZCA9IG51bGxcbiAgICB9XG4gIH1cblxuICBnZXQgb25hYm9ydCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHJldHVybiB0aGlzW2tFdmVudHNdLmFib3J0XG4gIH1cblxuICBzZXQgb25hYm9ydCAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgaWYgKHRoaXNba0V2ZW50c10uYWJvcnQpIHtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0aGlzW2tFdmVudHNdLmFib3J0KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNba0V2ZW50c10uYWJvcnQgPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmFib3J0ID0gbnVsbFxuICAgIH1cbiAgfVxufVxuXG4vLyBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZG9tLWZpbGVyZWFkZXItZW1wdHlcbkZpbGVSZWFkZXIuRU1QVFkgPSBGaWxlUmVhZGVyLnByb3RvdHlwZS5FTVBUWSA9IDBcbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkb20tZmlsZXJlYWRlci1sb2FkaW5nXG5GaWxlUmVhZGVyLkxPQURJTkcgPSBGaWxlUmVhZGVyLnByb3RvdHlwZS5MT0FESU5HID0gMVxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2RvbS1maWxlcmVhZGVyLWRvbmVcbkZpbGVSZWFkZXIuRE9ORSA9IEZpbGVSZWFkZXIucHJvdG90eXBlLkRPTkUgPSAyXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZpbGVSZWFkZXIucHJvdG90eXBlLCB7XG4gIEVNUFRZOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBMT0FESU5HOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBET05FOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICByZWFkQXNBcnJheUJ1ZmZlcjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVhZEFzQmluYXJ5U3RyaW5nOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWFkQXNUZXh0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWFkQXNEYXRhVVJMOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBhYm9ydDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVhZHlTdGF0ZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVzdWx0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBlcnJvcjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25sb2Fkc3RhcnQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ucHJvZ3Jlc3M6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ubG9hZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25hYm9ydDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25lcnJvcjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25sb2FkZW5kOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnRmlsZVJlYWRlcicsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhGaWxlUmVhZGVyLCB7XG4gIEVNUFRZOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBMT0FESU5HOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBET05FOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRmlsZVJlYWRlclxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga0NvbnN0cnVjdDogcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJykua0NvbnN0cnVjdFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBVUkxTZXJpYWxpemVyIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9kYXRhVVJMJylcbmNvbnN0IHsgaXNWYWxpZEhlYWRlck5hbWUgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3V0aWwnKVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1lcXVhbHNcbiAqIEBwYXJhbSB7VVJMfSBBXG4gKiBAcGFyYW0ge1VSTH0gQlxuICogQHBhcmFtIHtib29sZWFuIHwgdW5kZWZpbmVkfSBleGNsdWRlRnJhZ21lbnRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiB1cmxFcXVhbHMgKEEsIEIsIGV4Y2x1ZGVGcmFnbWVudCA9IGZhbHNlKSB7XG4gIGNvbnN0IHNlcmlhbGl6ZWRBID0gVVJMU2VyaWFsaXplcihBLCBleGNsdWRlRnJhZ21lbnQpXG5cbiAgY29uc3Qgc2VyaWFsaXplZEIgPSBVUkxTZXJpYWxpemVyKEIsIGV4Y2x1ZGVGcmFnbWVudClcblxuICByZXR1cm4gc2VyaWFsaXplZEEgPT09IHNlcmlhbGl6ZWRCXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi82OTRkMjBkMTM0Y2I1NTNkOGQ4OWU1NTAwYjkxNDgwMTJiMWJhMjk5L2NvbnRlbnQvYnJvd3Nlci9jYWNoZV9zdG9yYWdlL2NhY2hlX3N0b3JhZ2VfY2FjaGUuY2MjTDI2MC1MMjYyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyXG4gKi9cbmZ1bmN0aW9uIGZpZWxkVmFsdWVzIChoZWFkZXIpIHtcbiAgYXNzZXJ0KGhlYWRlciAhPT0gbnVsbClcblxuICBjb25zdCB2YWx1ZXMgPSBbXVxuXG4gIGZvciAobGV0IHZhbHVlIG9mIGhlYWRlci5zcGxpdCgnLCcpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKClcblxuICAgIGlmICghdmFsdWUubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZVxuICAgIH0gZWxzZSBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lKHZhbHVlKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICB2YWx1ZXMucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXNcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHVybEVxdWFscyxcbiAgZmllbGRWYWx1ZXNcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBrQ29uc3RydWN0IH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyB1cmxFcXVhbHMsIGZpZWxkVmFsdWVzOiBnZXRGaWVsZFZhbHVlcyB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSwgaXNEaXN0dXJiZWQgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGtIZWFkZXJzTGlzdCB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBSZXNwb25zZSwgY2xvbmVSZXNwb25zZSB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvcmVzcG9uc2UnKVxuY29uc3QgeyBSZXF1ZXN0IH0gPSByZXF1aXJlKCcuLi9mZXRjaC9yZXF1ZXN0JylcbmNvbnN0IHsga1N0YXRlLCBrSGVhZGVycywga0d1YXJkLCBrUmVhbG0gfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3N5bWJvbHMnKVxuY29uc3QgeyBmZXRjaGluZyB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvaW5kZXgnKVxuY29uc3QgeyB1cmxJc0h0dHBIdHRwc1NjaGVtZSwgY3JlYXRlRGVmZXJyZWRQcm9taXNlLCByZWFkQWxsQnl0ZXMgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3V0aWwnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgZ2V0R2xvYmFsRGlzcGF0Y2hlciB9ID0gcmVxdWlyZSgnLi4vZ2xvYmFsJylcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkZm4tY2FjaGUtYmF0Y2gtb3BlcmF0aW9uXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDYWNoZUJhdGNoT3BlcmF0aW9uXG4gKiBAcHJvcGVydHkgeydkZWxldGUnIHwgJ3B1dCd9IHR5cGVcbiAqIEBwcm9wZXJ0eSB7YW55fSByZXF1ZXN0XG4gKiBAcHJvcGVydHkge2FueX0gcmVzcG9uc2VcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi8uLi90eXBlcy9jYWNoZScpLkNhY2hlUXVlcnlPcHRpb25zfSBvcHRpb25zXG4gKi9cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkZm4tcmVxdWVzdC1yZXNwb25zZS1saXN0XG4gKiBAdHlwZWRlZiB7W2FueSwgYW55XVtdfSByZXF1ZXN0UmVzcG9uc2VMaXN0XG4gKi9cblxuY2xhc3MgQ2FjaGUge1xuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZGZuLXJlbGV2YW50LXJlcXVlc3QtcmVzcG9uc2UtbGlzdFxuICAgKiBAdHlwZSB7cmVxdWVzdFJlc3BvbnNlTGlzdH1cbiAgICovXG4gICNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3RcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaWYgKGFyZ3VtZW50c1swXSAhPT0ga0NvbnN0cnVjdCkge1xuICAgICAgd2ViaWRsLmlsbGVnYWxDb25zdHJ1Y3RvcigpXG4gICAgfVxuXG4gICAgdGhpcy4jcmVsZXZhbnRSZXF1ZXN0UmVzcG9uc2VMaXN0ID0gYXJndW1lbnRzWzFdXG4gIH1cblxuICBhc3luYyBtYXRjaCAocmVxdWVzdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGUpXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0NhY2hlLm1hdGNoJyB9KVxuXG4gICAgcmVxdWVzdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvKHJlcXVlc3QpXG4gICAgb3B0aW9ucyA9IHdlYmlkbC5jb252ZXJ0ZXJzLkNhY2hlUXVlcnlPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBjb25zdCBwID0gYXdhaXQgdGhpcy5tYXRjaEFsbChyZXF1ZXN0LCBvcHRpb25zKVxuXG4gICAgaWYgKHAubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXR1cm4gcFswXVxuICB9XG5cbiAgYXN5bmMgbWF0Y2hBbGwgKHJlcXVlc3QgPSB1bmRlZmluZWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuXG4gICAgaWYgKHJlcXVlc3QgIT09IHVuZGVmaW5lZCkgcmVxdWVzdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvKHJlcXVlc3QpXG4gICAgb3B0aW9ucyA9IHdlYmlkbC5jb252ZXJ0ZXJzLkNhY2hlUXVlcnlPcHRpb25zKG9wdGlvbnMpXG5cbiAgICAvLyAxLlxuICAgIGxldCByID0gbnVsbFxuXG4gICAgLy8gMi5cbiAgICBpZiAocmVxdWVzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmVxdWVzdCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICAgICAgLy8gMi4xLjFcbiAgICAgICAgciA9IHJlcXVlc3Rba1N0YXRlXVxuXG4gICAgICAgIC8vIDIuMS4yXG4gICAgICAgIGlmIChyLm1ldGhvZCAhPT0gJ0dFVCcgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7XG4gICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIDIuMi4xXG4gICAgICAgIHIgPSBuZXcgUmVxdWVzdChyZXF1ZXN0KVtrU3RhdGVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNS5cbiAgICAvLyA1LjFcbiAgICBjb25zdCByZXNwb25zZXMgPSBbXVxuXG4gICAgLy8gNS4yXG4gICAgaWYgKHJlcXVlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gNS4yLjFcbiAgICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHRoaXMuI3JlbGV2YW50UmVxdWVzdFJlc3BvbnNlTGlzdCkge1xuICAgICAgICByZXNwb25zZXMucHVzaChyZXF1ZXN0UmVzcG9uc2VbMV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHsgLy8gNS4zXG4gICAgICAvLyA1LjMuMVxuICAgICAgY29uc3QgcmVxdWVzdFJlc3BvbnNlcyA9IHRoaXMuI3F1ZXJ5Q2FjaGUociwgb3B0aW9ucylcblxuICAgICAgLy8gNS4zLjJcbiAgICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHJlcXVlc3RSZXNwb25zZXMpIHtcbiAgICAgICAgcmVzcG9uc2VzLnB1c2gocmVxdWVzdFJlc3BvbnNlWzFdKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDUuNFxuICAgIC8vIFdlIGRvbid0IGltcGxlbWVudCBDT1JzIHNvIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZSByZXNwb25zZXMsIHlheSFcblxuICAgIC8vIDUuNS4xXG4gICAgY29uc3QgcmVzcG9uc2VMaXN0ID0gW11cblxuICAgIC8vIDUuNS4yXG4gICAgZm9yIChjb25zdCByZXNwb25zZSBvZiByZXNwb25zZXMpIHtcbiAgICAgIC8vIDUuNS4yLjFcbiAgICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKHJlc3BvbnNlLmJvZHk/LnNvdXJjZSA/PyBudWxsKVxuICAgICAgY29uc3QgYm9keSA9IHJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0uYm9keVxuICAgICAgcmVzcG9uc2VPYmplY3Rba1N0YXRlXSA9IHJlc3BvbnNlXG4gICAgICByZXNwb25zZU9iamVjdFtrU3RhdGVdLmJvZHkgPSBib2R5XG4gICAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IHJlc3BvbnNlLmhlYWRlcnNMaXN0XG4gICAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9ICdpbW11dGFibGUnXG5cbiAgICAgIHJlc3BvbnNlTGlzdC5wdXNoKHJlc3BvbnNlT2JqZWN0KVxuICAgIH1cblxuICAgIC8vIDYuXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUocmVzcG9uc2VMaXN0KVxuICB9XG5cbiAgYXN5bmMgYWRkIChyZXF1ZXN0KSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGUpXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0NhY2hlLmFkZCcgfSlcblxuICAgIHJlcXVlc3QgPSB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyhyZXF1ZXN0KVxuXG4gICAgLy8gMS5cbiAgICBjb25zdCByZXF1ZXN0cyA9IFtyZXF1ZXN0XVxuXG4gICAgLy8gMi5cbiAgICBjb25zdCByZXNwb25zZUFycmF5UHJvbWlzZSA9IHRoaXMuYWRkQWxsKHJlcXVlc3RzKVxuXG4gICAgLy8gMy5cbiAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2VBcnJheVByb21pc2VcbiAgfVxuXG4gIGFzeW5jIGFkZEFsbCAocmVxdWVzdHMpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2FjaGUuYWRkQWxsJyB9KVxuXG4gICAgcmVxdWVzdHMgPSB3ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8UmVxdWVzdEluZm8+J10ocmVxdWVzdHMpXG5cbiAgICAvLyAxLlxuICAgIGNvbnN0IHJlc3BvbnNlUHJvbWlzZXMgPSBbXVxuXG4gICAgLy8gMi5cbiAgICBjb25zdCByZXF1ZXN0TGlzdCA9IFtdXG5cbiAgICAvLyAzLlxuICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiByZXF1ZXN0cykge1xuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAzLjFcbiAgICAgIGNvbnN0IHIgPSByZXF1ZXN0W2tTdGF0ZV1cblxuICAgICAgLy8gMy4yXG4gICAgICBpZiAoIXVybElzSHR0cEh0dHBzU2NoZW1lKHIudXJsKSB8fCByLm1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLmFkZEFsbCcsXG4gICAgICAgICAgbWVzc2FnZTogJ0V4cGVjdGVkIGh0dHAvcyBzY2hlbWUgd2hlbiBtZXRob2QgaXMgbm90IEdFVC4nXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNC5cbiAgICAvKiogQHR5cGUge1JldHVyblR5cGU8dHlwZW9mIGZldGNoaW5nPltdfSAqL1xuICAgIGNvbnN0IGZldGNoQ29udHJvbGxlcnMgPSBbXVxuXG4gICAgLy8gNS5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgcmVxdWVzdHMpIHtcbiAgICAgIC8vIDUuMVxuICAgICAgY29uc3QgciA9IG5ldyBSZXF1ZXN0KHJlcXVlc3QpW2tTdGF0ZV1cblxuICAgICAgLy8gNS4yXG4gICAgICBpZiAoIXVybElzSHR0cEh0dHBzU2NoZW1lKHIudXJsKSkge1xuICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuYWRkQWxsJyxcbiAgICAgICAgICBtZXNzYWdlOiAnRXhwZWN0ZWQgaHR0cC9zIHNjaGVtZS4nXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIDUuNFxuICAgICAgci5pbml0aWF0b3IgPSAnZmV0Y2gnXG4gICAgICByLmRlc3RpbmF0aW9uID0gJ3N1YnJlc291cmNlJ1xuXG4gICAgICAvLyA1LjVcbiAgICAgIHJlcXVlc3RMaXN0LnB1c2gocilcblxuICAgICAgLy8gNS42XG4gICAgICBjb25zdCByZXNwb25zZVByb21pc2UgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gICAgICAvLyA1LjdcbiAgICAgIGZldGNoQ29udHJvbGxlcnMucHVzaChmZXRjaGluZyh7XG4gICAgICAgIHJlcXVlc3Q6IHIsXG4gICAgICAgIGRpc3BhdGNoZXI6IGdldEdsb2JhbERpc3BhdGNoZXIoKSxcbiAgICAgICAgcHJvY2Vzc1Jlc3BvbnNlIChyZXNwb25zZSkge1xuICAgICAgICAgIC8vIDEuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdlcnJvcicgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDYgfHwgcmVzcG9uc2Uuc3RhdHVzIDwgMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA+IDI5OSkge1xuICAgICAgICAgICAgcmVzcG9uc2VQcm9taXNlLnJlamVjdCh3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLmFkZEFsbCcsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdSZWNlaXZlZCBhbiBpbnZhbGlkIHN0YXR1cyBjb2RlIG9yIHRoZSByZXF1ZXN0IGZhaWxlZC4nXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmhlYWRlcnNMaXN0LmNvbnRhaW5zKCd2YXJ5JykpIHsgLy8gMi5cbiAgICAgICAgICAgIC8vIDIuMVxuICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZXMgPSBnZXRGaWVsZFZhbHVlcyhyZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ3ZhcnknKSlcblxuICAgICAgICAgICAgLy8gMi4yXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkVmFsdWUgb2YgZmllbGRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgLy8gMi4yLjFcbiAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUgPT09ICcqJykge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvbWlzZS5yZWplY3Qod2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuYWRkQWxsJyxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbnZhbGlkIHZhcnkgZmllbGQgdmFsdWUnXG4gICAgICAgICAgICAgICAgfSkpXG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xsZXIgb2YgZmV0Y2hDb250cm9sbGVycykge1xuICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NSZXNwb25zZUVuZE9mQm9keSAocmVzcG9uc2UpIHtcbiAgICAgICAgICAvLyAxLlxuICAgICAgICAgIGlmIChyZXNwb25zZS5hYm9ydGVkKSB7XG4gICAgICAgICAgICByZXNwb25zZVByb21pc2UucmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ2Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gMi5cbiAgICAgICAgICByZXNwb25zZVByb21pc2UucmVzb2x2ZShyZXNwb25zZSlcbiAgICAgICAgfVxuICAgICAgfSkpXG5cbiAgICAgIC8vIDUuOFxuICAgICAgcmVzcG9uc2VQcm9taXNlcy5wdXNoKHJlc3BvbnNlUHJvbWlzZS5wcm9taXNlKVxuICAgIH1cblxuICAgIC8vIDYuXG4gICAgY29uc3QgcCA9IFByb21pc2UuYWxsKHJlc3BvbnNlUHJvbWlzZXMpXG5cbiAgICAvLyA3LlxuICAgIGNvbnN0IHJlc3BvbnNlcyA9IGF3YWl0IHBcblxuICAgIC8vIDcuMVxuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSBbXVxuXG4gICAgLy8gNy4yXG4gICAgbGV0IGluZGV4ID0gMFxuXG4gICAgLy8gNy4zXG4gICAgZm9yIChjb25zdCByZXNwb25zZSBvZiByZXNwb25zZXMpIHtcbiAgICAgIC8vIDcuMy4xXG4gICAgICAvKiogQHR5cGUge0NhY2hlQmF0Y2hPcGVyYXRpb259ICovXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSB7XG4gICAgICAgIHR5cGU6ICdwdXQnLCAvLyA3LjMuMlxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0TGlzdFtpbmRleF0sIC8vIDcuMy4zXG4gICAgICAgIHJlc3BvbnNlIC8vIDcuMy40XG4gICAgICB9XG5cbiAgICAgIG9wZXJhdGlvbnMucHVzaChvcGVyYXRpb24pIC8vIDcuMy41XG5cbiAgICAgIGluZGV4KysgLy8gNy4zLjZcbiAgICB9XG5cbiAgICAvLyA3LjVcbiAgICBjb25zdCBjYWNoZUpvYlByb21pc2UgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gICAgLy8gNy42LjFcbiAgICBsZXQgZXJyb3JEYXRhID0gbnVsbFxuXG4gICAgLy8gNy42LjJcbiAgICB0cnkge1xuICAgICAgdGhpcy4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMob3BlcmF0aW9ucylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvckRhdGEgPSBlXG4gICAgfVxuXG4gICAgLy8gNy42LjNcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAvLyA3LjYuMy4xXG4gICAgICBpZiAoZXJyb3JEYXRhID09PSBudWxsKSB7XG4gICAgICAgIGNhY2hlSm9iUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIDcuNi4zLjJcbiAgICAgICAgY2FjaGVKb2JQcm9taXNlLnJlamVjdChlcnJvckRhdGEpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIDcuN1xuICAgIHJldHVybiBjYWNoZUpvYlByb21pc2UucHJvbWlzZVxuICB9XG5cbiAgYXN5bmMgcHV0IChyZXF1ZXN0LCByZXNwb25zZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdDYWNoZS5wdXQnIH0pXG5cbiAgICByZXF1ZXN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8ocmVxdWVzdClcbiAgICByZXNwb25zZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlc3BvbnNlKHJlc3BvbnNlKVxuXG4gICAgLy8gMS5cbiAgICBsZXQgaW5uZXJSZXF1ZXN0ID0gbnVsbFxuXG4gICAgLy8gMi5cbiAgICBpZiAocmVxdWVzdCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICAgIGlubmVyUmVxdWVzdCA9IHJlcXVlc3Rba1N0YXRlXVxuICAgIH0gZWxzZSB7IC8vIDMuXG4gICAgICBpbm5lclJlcXVlc3QgPSBuZXcgUmVxdWVzdChyZXF1ZXN0KVtrU3RhdGVdXG4gICAgfVxuXG4gICAgLy8gNC5cbiAgICBpZiAoIXVybElzSHR0cEh0dHBzU2NoZW1lKGlubmVyUmVxdWVzdC51cmwpIHx8IGlubmVyUmVxdWVzdC5tZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0NhY2hlLnB1dCcsXG4gICAgICAgIG1lc3NhZ2U6ICdFeHBlY3RlZCBhbiBodHRwL3Mgc2NoZW1lIHdoZW4gbWV0aG9kIGlzIG5vdCBHRVQnXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDUuXG4gICAgY29uc3QgaW5uZXJSZXNwb25zZSA9IHJlc3BvbnNlW2tTdGF0ZV1cblxuICAgIC8vIDYuXG4gICAgaWYgKGlubmVyUmVzcG9uc2Uuc3RhdHVzID09PSAyMDYpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiAnQ2FjaGUucHV0JyxcbiAgICAgICAgbWVzc2FnZTogJ0dvdCAyMDYgc3RhdHVzJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyA3LlxuICAgIGlmIChpbm5lclJlc3BvbnNlLmhlYWRlcnNMaXN0LmNvbnRhaW5zKCd2YXJ5JykpIHtcbiAgICAgIC8vIDcuMS5cbiAgICAgIGNvbnN0IGZpZWxkVmFsdWVzID0gZ2V0RmllbGRWYWx1ZXMoaW5uZXJSZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ3ZhcnknKSlcblxuICAgICAgLy8gNy4yLlxuICAgICAgZm9yIChjb25zdCBmaWVsZFZhbHVlIG9mIGZpZWxkVmFsdWVzKSB7XG4gICAgICAgIC8vIDcuMi4xXG4gICAgICAgIGlmIChmaWVsZFZhbHVlID09PSAnKicpIHtcbiAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICBoZWFkZXI6ICdDYWNoZS5wdXQnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0dvdCAqIHZhcnkgZmllbGQgdmFsdWUnXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDguXG4gICAgaWYgKGlubmVyUmVzcG9uc2UuYm9keSAmJiAoaXNEaXN0dXJiZWQoaW5uZXJSZXNwb25zZS5ib2R5LnN0cmVhbSkgfHwgaW5uZXJSZXNwb25zZS5ib2R5LnN0cmVhbS5sb2NrZWQpKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0NhY2hlLnB1dCcsXG4gICAgICAgIG1lc3NhZ2U6ICdSZXNwb25zZSBib2R5IGlzIGxvY2tlZCBvciBkaXN0dXJiZWQnXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDkuXG4gICAgY29uc3QgY2xvbmVkUmVzcG9uc2UgPSBjbG9uZVJlc3BvbnNlKGlubmVyUmVzcG9uc2UpXG5cbiAgICAvLyAxMC5cbiAgICBjb25zdCBib2R5UmVhZFByb21pc2UgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gICAgLy8gMTEuXG4gICAgaWYgKGlubmVyUmVzcG9uc2UuYm9keSAhPSBudWxsKSB7XG4gICAgICAvLyAxMS4xXG4gICAgICBjb25zdCBzdHJlYW0gPSBpbm5lclJlc3BvbnNlLmJvZHkuc3RyZWFtXG5cbiAgICAgIC8vIDExLjJcbiAgICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKVxuXG4gICAgICAvLyAxMS4zXG4gICAgICByZWFkQWxsQnl0ZXMocmVhZGVyKS50aGVuKGJvZHlSZWFkUHJvbWlzZS5yZXNvbHZlLCBib2R5UmVhZFByb21pc2UucmVqZWN0KVxuICAgIH0gZWxzZSB7XG4gICAgICBib2R5UmVhZFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgLy8gMTIuXG4gICAgLyoqIEB0eXBlIHtDYWNoZUJhdGNoT3BlcmF0aW9uW119ICovXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9IFtdXG5cbiAgICAvLyAxMy5cbiAgICAvKiogQHR5cGUge0NhY2hlQmF0Y2hPcGVyYXRpb259ICovXG4gICAgY29uc3Qgb3BlcmF0aW9uID0ge1xuICAgICAgdHlwZTogJ3B1dCcsIC8vIDE0LlxuICAgICAgcmVxdWVzdDogaW5uZXJSZXF1ZXN0LCAvLyAxNS5cbiAgICAgIHJlc3BvbnNlOiBjbG9uZWRSZXNwb25zZSAvLyAxNi5cbiAgICB9XG5cbiAgICAvLyAxNy5cbiAgICBvcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKVxuXG4gICAgLy8gMTkuXG4gICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBib2R5UmVhZFByb21pc2UucHJvbWlzZVxuXG4gICAgaWYgKGNsb25lZFJlc3BvbnNlLmJvZHkgIT0gbnVsbCkge1xuICAgICAgY2xvbmVkUmVzcG9uc2UuYm9keS5zb3VyY2UgPSBieXRlc1xuICAgIH1cblxuICAgIC8vIDE5LjFcbiAgICBjb25zdCBjYWNoZUpvYlByb21pc2UgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gICAgLy8gMTkuMi4xXG4gICAgbGV0IGVycm9yRGF0YSA9IG51bGxcblxuICAgIC8vIDE5LjIuMlxuICAgIHRyeSB7XG4gICAgICB0aGlzLiNiYXRjaENhY2hlT3BlcmF0aW9ucyhvcGVyYXRpb25zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yRGF0YSA9IGVcbiAgICB9XG5cbiAgICAvLyAxOS4yLjNcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAvLyAxOS4yLjMuMVxuICAgICAgaWYgKGVycm9yRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICBjYWNoZUpvYlByb21pc2UucmVzb2x2ZSgpXG4gICAgICB9IGVsc2UgeyAvLyAxOS4yLjMuMlxuICAgICAgICBjYWNoZUpvYlByb21pc2UucmVqZWN0KGVycm9yRGF0YSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGNhY2hlSm9iUHJvbWlzZS5wcm9taXNlXG4gIH1cblxuICBhc3luYyBkZWxldGUgKHJlcXVlc3QsIG9wdGlvbnMgPSB7fSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZS5kZWxldGUnIH0pXG5cbiAgICByZXF1ZXN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8ocmVxdWVzdClcbiAgICBvcHRpb25zID0gd2ViaWRsLmNvbnZlcnRlcnMuQ2FjaGVRdWVyeU9wdGlvbnMob3B0aW9ucylcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtSZXF1ZXN0fVxuICAgICAqL1xuICAgIGxldCByID0gbnVsbFxuXG4gICAgaWYgKHJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICByID0gcmVxdWVzdFtrU3RhdGVdXG5cbiAgICAgIGlmIChyLm1ldGhvZCAhPT0gJ0dFVCcgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQodHlwZW9mIHJlcXVlc3QgPT09ICdzdHJpbmcnKVxuXG4gICAgICByID0gbmV3IFJlcXVlc3QocmVxdWVzdClba1N0YXRlXVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7Q2FjaGVCYXRjaE9wZXJhdGlvbltdfSAqL1xuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSBbXVxuXG4gICAgLyoqIEB0eXBlIHtDYWNoZUJhdGNoT3BlcmF0aW9ufSAqL1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgcmVxdWVzdDogcixcbiAgICAgIG9wdGlvbnNcbiAgICB9XG5cbiAgICBvcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKVxuXG4gICAgY29uc3QgY2FjaGVKb2JQcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgIGxldCBlcnJvckRhdGEgPSBudWxsXG4gICAgbGV0IHJlcXVlc3RSZXNwb25zZXNcblxuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0UmVzcG9uc2VzID0gdGhpcy4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMob3BlcmF0aW9ucylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvckRhdGEgPSBlXG4gICAgfVxuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgaWYgKGVycm9yRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICBjYWNoZUpvYlByb21pc2UucmVzb2x2ZSghIXJlcXVlc3RSZXNwb25zZXM/Lmxlbmd0aClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlSm9iUHJvbWlzZS5yZWplY3QoZXJyb3JEYXRhKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2FjaGVKb2JQcm9taXNlLnByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkb20tY2FjaGUta2V5c1xuICAgKiBAcGFyYW0ge2FueX0gcmVxdWVzdFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vdHlwZXMvY2FjaGUnKS5DYWNoZVF1ZXJ5T3B0aW9uc30gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7cmVhZG9ubHkgUmVxdWVzdFtdfVxuICAgKi9cbiAgYXN5bmMga2V5cyAocmVxdWVzdCA9IHVuZGVmaW5lZCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGUpXG5cbiAgICBpZiAocmVxdWVzdCAhPT0gdW5kZWZpbmVkKSByZXF1ZXN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8ocmVxdWVzdClcbiAgICBvcHRpb25zID0gd2ViaWRsLmNvbnZlcnRlcnMuQ2FjaGVRdWVyeU9wdGlvbnMob3B0aW9ucylcblxuICAgIC8vIDEuXG4gICAgbGV0IHIgPSBudWxsXG5cbiAgICAvLyAyLlxuICAgIGlmIChyZXF1ZXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIDIuMVxuICAgICAgaWYgKHJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICAgIC8vIDIuMS4xXG4gICAgICAgIHIgPSByZXF1ZXN0W2tTdGF0ZV1cblxuICAgICAgICAvLyAyLjEuMlxuICAgICAgICBpZiAoci5tZXRob2QgIT09ICdHRVQnICYmICFvcHRpb25zLmlnbm9yZU1ldGhvZCkge1xuICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1ZXN0ID09PSAnc3RyaW5nJykgeyAvLyAyLjJcbiAgICAgICAgciA9IG5ldyBSZXF1ZXN0KHJlcXVlc3QpW2tTdGF0ZV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0LlxuICAgIGNvbnN0IHByb21pc2UgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gICAgLy8gNS5cbiAgICAvLyA1LjFcbiAgICBjb25zdCByZXF1ZXN0cyA9IFtdXG5cbiAgICAvLyA1LjJcbiAgICBpZiAocmVxdWVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyA1LjIuMVxuICAgICAgZm9yIChjb25zdCByZXF1ZXN0UmVzcG9uc2Ugb2YgdGhpcy4jcmVsZXZhbnRSZXF1ZXN0UmVzcG9uc2VMaXN0KSB7XG4gICAgICAgIC8vIDUuMi4xLjFcbiAgICAgICAgcmVxdWVzdHMucHVzaChyZXF1ZXN0UmVzcG9uc2VbMF0pXG4gICAgICB9XG4gICAgfSBlbHNlIHsgLy8gNS4zXG4gICAgICAvLyA1LjMuMVxuICAgICAgY29uc3QgcmVxdWVzdFJlc3BvbnNlcyA9IHRoaXMuI3F1ZXJ5Q2FjaGUociwgb3B0aW9ucylcblxuICAgICAgLy8gNS4zLjJcbiAgICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHJlcXVlc3RSZXNwb25zZXMpIHtcbiAgICAgICAgLy8gNS4zLjIuMVxuICAgICAgICByZXF1ZXN0cy5wdXNoKHJlcXVlc3RSZXNwb25zZVswXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA1LjRcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAvLyA1LjQuMVxuICAgICAgY29uc3QgcmVxdWVzdExpc3QgPSBbXVxuXG4gICAgICAvLyA1LjQuMlxuICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHJlcXVlc3RzKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSBuZXcgUmVxdWVzdCgnaHR0cHM6Ly9hJylcbiAgICAgICAgcmVxdWVzdE9iamVjdFtrU3RhdGVdID0gcmVxdWVzdFxuICAgICAgICByZXF1ZXN0T2JqZWN0W2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdID0gcmVxdWVzdC5oZWFkZXJzTGlzdFxuICAgICAgICByZXF1ZXN0T2JqZWN0W2tIZWFkZXJzXVtrR3VhcmRdID0gJ2ltbXV0YWJsZSdcbiAgICAgICAgcmVxdWVzdE9iamVjdFtrUmVhbG1dID0gcmVxdWVzdC5jbGllbnRcblxuICAgICAgICAvLyA1LjQuMi4xXG4gICAgICAgIHJlcXVlc3RMaXN0LnB1c2gocmVxdWVzdE9iamVjdClcbiAgICAgIH1cblxuICAgICAgLy8gNS40LjNcbiAgICAgIHByb21pc2UucmVzb2x2ZShPYmplY3QuZnJlZXplKHJlcXVlc3RMaXN0KSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIHByb21pc2UucHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2JhdGNoLWNhY2hlLW9wZXJhdGlvbnMtYWxnb3JpdGhtXG4gICAqIEBwYXJhbSB7Q2FjaGVCYXRjaE9wZXJhdGlvbltdfSBvcGVyYXRpb25zXG4gICAqIEByZXR1cm5zIHtyZXF1ZXN0UmVzcG9uc2VMaXN0fVxuICAgKi9cbiAgI2JhdGNoQ2FjaGVPcGVyYXRpb25zIChvcGVyYXRpb25zKSB7XG4gICAgLy8gMS5cbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuI3JlbGV2YW50UmVxdWVzdFJlc3BvbnNlTGlzdFxuXG4gICAgLy8gMi5cbiAgICBjb25zdCBiYWNrdXBDYWNoZSA9IFsuLi5jYWNoZV1cblxuICAgIC8vIDMuXG4gICAgY29uc3QgYWRkZWRJdGVtcyA9IFtdXG5cbiAgICAvLyA0LjFcbiAgICBjb25zdCByZXN1bHRMaXN0ID0gW11cblxuICAgIHRyeSB7XG4gICAgICAvLyA0LjJcbiAgICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uIG9mIG9wZXJhdGlvbnMpIHtcbiAgICAgICAgLy8gNC4yLjFcbiAgICAgICAgaWYgKG9wZXJhdGlvbi50eXBlICE9PSAnZGVsZXRlJyAmJiBvcGVyYXRpb24udHlwZSAhPT0gJ3B1dCcpIHtcbiAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICBoZWFkZXI6ICdDYWNoZS4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ29wZXJhdGlvbiB0eXBlIGRvZXMgbm90IG1hdGNoIFwiZGVsZXRlXCIgb3IgXCJwdXRcIidcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4yLjJcbiAgICAgICAgaWYgKG9wZXJhdGlvbi50eXBlID09PSAnZGVsZXRlJyAmJiBvcGVyYXRpb24ucmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLiNiYXRjaENhY2hlT3BlcmF0aW9ucycsXG4gICAgICAgICAgICBtZXNzYWdlOiAnZGVsZXRlIG9wZXJhdGlvbiBzaG91bGQgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCByZXNwb25zZSdcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4yLjNcbiAgICAgICAgaWYgKHRoaXMuI3F1ZXJ5Q2FjaGUob3BlcmF0aW9uLnJlcXVlc3QsIG9wZXJhdGlvbi5vcHRpb25zLCBhZGRlZEl0ZW1zKS5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCc/Pz8nLCAnSW52YWxpZFN0YXRlRXJyb3InKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4yLjRcbiAgICAgICAgbGV0IHJlcXVlc3RSZXNwb25zZXNcblxuICAgICAgICAvLyA0LjIuNVxuICAgICAgICBpZiAob3BlcmF0aW9uLnR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgICAgLy8gNC4yLjUuMVxuICAgICAgICAgIHJlcXVlc3RSZXNwb25zZXMgPSB0aGlzLiNxdWVyeUNhY2hlKG9wZXJhdGlvbi5yZXF1ZXN0LCBvcGVyYXRpb24ub3B0aW9ucylcblxuICAgICAgICAgIC8vIFRPRE86IHRoZSBzcGVjIGlzIHdyb25nLCB0aGlzIGlzIG5lZWRlZCB0byBwYXNzIFdQVHNcbiAgICAgICAgICBpZiAocmVxdWVzdFJlc3BvbnNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDQuMi41LjJcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiByZXF1ZXN0UmVzcG9uc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBjYWNoZS5pbmRleE9mKHJlcXVlc3RSZXNwb25zZSlcbiAgICAgICAgICAgIGFzc2VydChpZHggIT09IC0xKVxuXG4gICAgICAgICAgICAvLyA0LjIuNS4yLjFcbiAgICAgICAgICAgIGNhY2hlLnNwbGljZShpZHgsIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbi50eXBlID09PSAncHV0JykgeyAvLyA0LjIuNlxuICAgICAgICAgIC8vIDQuMi42LjFcbiAgICAgICAgICBpZiAob3BlcmF0aW9uLnJlc3BvbnNlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuI2JhdGNoQ2FjaGVPcGVyYXRpb25zJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ3B1dCBvcGVyYXRpb24gc2hvdWxkIGhhdmUgYW4gYXNzb2NpYXRlZCByZXNwb25zZSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4yLjYuMlxuICAgICAgICAgIGNvbnN0IHIgPSBvcGVyYXRpb24ucmVxdWVzdFxuXG4gICAgICAgICAgLy8gNC4yLjYuM1xuICAgICAgICAgIGlmICghdXJsSXNIdHRwSHR0cHNTY2hlbWUoci51cmwpKSB7XG4gICAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLiNiYXRjaENhY2hlT3BlcmF0aW9ucycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdleHBlY3RlZCBodHRwIG9yIGh0dHBzIHNjaGVtZSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4yLjYuNFxuICAgICAgICAgIGlmIChyLm1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuI2JhdGNoQ2FjaGVPcGVyYXRpb25zJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ25vdCBnZXQgbWV0aG9kJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyA0LjIuNi41XG4gICAgICAgICAgaWYgKG9wZXJhdGlvbi5vcHRpb25zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuI2JhdGNoQ2FjaGVPcGVyYXRpb25zJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ29wdGlvbnMgbXVzdCBub3QgYmUgZGVmaW5lZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4yLjYuNlxuICAgICAgICAgIHJlcXVlc3RSZXNwb25zZXMgPSB0aGlzLiNxdWVyeUNhY2hlKG9wZXJhdGlvbi5yZXF1ZXN0KVxuXG4gICAgICAgICAgLy8gNC4yLjYuN1xuICAgICAgICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHJlcXVlc3RSZXNwb25zZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGNhY2hlLmluZGV4T2YocmVxdWVzdFJlc3BvbnNlKVxuICAgICAgICAgICAgYXNzZXJ0KGlkeCAhPT0gLTEpXG5cbiAgICAgICAgICAgIC8vIDQuMi42LjcuMVxuICAgICAgICAgICAgY2FjaGUuc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyA0LjIuNi44XG4gICAgICAgICAgY2FjaGUucHVzaChbb3BlcmF0aW9uLnJlcXVlc3QsIG9wZXJhdGlvbi5yZXNwb25zZV0pXG5cbiAgICAgICAgICAvLyA0LjIuNi4xMFxuICAgICAgICAgIGFkZGVkSXRlbXMucHVzaChbb3BlcmF0aW9uLnJlcXVlc3QsIG9wZXJhdGlvbi5yZXNwb25zZV0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyA0LjIuN1xuICAgICAgICByZXN1bHRMaXN0LnB1c2goW29wZXJhdGlvbi5yZXF1ZXN0LCBvcGVyYXRpb24ucmVzcG9uc2VdKVxuICAgICAgfVxuXG4gICAgICAvLyA0LjNcbiAgICAgIHJldHVybiByZXN1bHRMaXN0XG4gICAgfSBjYXRjaCAoZSkgeyAvLyA1LlxuICAgICAgLy8gNS4xXG4gICAgICB0aGlzLiNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3QubGVuZ3RoID0gMFxuXG4gICAgICAvLyA1LjJcbiAgICAgIHRoaXMuI3JlbGV2YW50UmVxdWVzdFJlc3BvbnNlTGlzdCA9IGJhY2t1cENhY2hlXG5cbiAgICAgIC8vIDUuM1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNxdWVyeS1jYWNoZVxuICAgKiBAcGFyYW0ge2FueX0gcmVxdWVzdFF1ZXJ5XG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy9jYWNoZScpLkNhY2hlUXVlcnlPcHRpb25zfSBvcHRpb25zXG4gICAqIEBwYXJhbSB7cmVxdWVzdFJlc3BvbnNlTGlzdH0gdGFyZ2V0U3RvcmFnZVxuICAgKiBAcmV0dXJucyB7cmVxdWVzdFJlc3BvbnNlTGlzdH1cbiAgICovXG4gICNxdWVyeUNhY2hlIChyZXF1ZXN0UXVlcnksIG9wdGlvbnMsIHRhcmdldFN0b3JhZ2UpIHtcbiAgICAvKiogQHR5cGUge3JlcXVlc3RSZXNwb25zZUxpc3R9ICovXG4gICAgY29uc3QgcmVzdWx0TGlzdCA9IFtdXG5cbiAgICBjb25zdCBzdG9yYWdlID0gdGFyZ2V0U3RvcmFnZSA/PyB0aGlzLiNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3RcblxuICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IFtjYWNoZWRSZXF1ZXN0LCBjYWNoZWRSZXNwb25zZV0gPSByZXF1ZXN0UmVzcG9uc2VcbiAgICAgIGlmICh0aGlzLiNyZXF1ZXN0TWF0Y2hlc0NhY2hlZEl0ZW0ocmVxdWVzdFF1ZXJ5LCBjYWNoZWRSZXF1ZXN0LCBjYWNoZWRSZXNwb25zZSwgb3B0aW9ucykpIHtcbiAgICAgICAgcmVzdWx0TGlzdC5wdXNoKHJlcXVlc3RSZXNwb25zZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0TGlzdFxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3JlcXVlc3QtbWF0Y2hlcy1jYWNoZWQtaXRlbS1hbGdvcml0aG1cbiAgICogQHBhcmFtIHthbnl9IHJlcXVlc3RRdWVyeVxuICAgKiBAcGFyYW0ge2FueX0gcmVxdWVzdFxuICAgKiBAcGFyYW0ge2FueSB8IG51bGx9IHJlc3BvbnNlXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy9jYWNoZScpLkNhY2hlUXVlcnlPcHRpb25zIHwgdW5kZWZpbmVkfSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgI3JlcXVlc3RNYXRjaGVzQ2FjaGVkSXRlbSAocmVxdWVzdFF1ZXJ5LCByZXF1ZXN0LCByZXNwb25zZSA9IG51bGwsIG9wdGlvbnMpIHtcbiAgICAvLyBpZiAob3B0aW9ucz8uaWdub3JlTWV0aG9kID09PSBmYWxzZSAmJiByZXF1ZXN0Lm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAvLyAgIHJldHVybiBmYWxzZVxuICAgIC8vIH1cblxuICAgIGNvbnN0IHF1ZXJ5VVJMID0gbmV3IFVSTChyZXF1ZXN0UXVlcnkudXJsKVxuXG4gICAgY29uc3QgY2FjaGVkVVJMID0gbmV3IFVSTChyZXF1ZXN0LnVybClcblxuICAgIGlmIChvcHRpb25zPy5pZ25vcmVTZWFyY2gpIHtcbiAgICAgIGNhY2hlZFVSTC5zZWFyY2ggPSAnJ1xuXG4gICAgICBxdWVyeVVSTC5zZWFyY2ggPSAnJ1xuICAgIH1cblxuICAgIGlmICghdXJsRXF1YWxzKHF1ZXJ5VVJMLCBjYWNoZWRVUkwsIHRydWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICByZXNwb25zZSA9PSBudWxsIHx8XG4gICAgICBvcHRpb25zPy5pZ25vcmVWYXJ5IHx8XG4gICAgICAhcmVzcG9uc2UuaGVhZGVyc0xpc3QuY29udGFpbnMoJ3ZhcnknKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZFZhbHVlcyA9IGdldEZpZWxkVmFsdWVzKHJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgndmFyeScpKVxuXG4gICAgZm9yIChjb25zdCBmaWVsZFZhbHVlIG9mIGZpZWxkVmFsdWVzKSB7XG4gICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gJyonKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0VmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNMaXN0LmdldChmaWVsZFZhbHVlKVxuICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHJlcXVlc3RRdWVyeS5oZWFkZXJzTGlzdC5nZXQoZmllbGRWYWx1ZSlcblxuICAgICAgLy8gSWYgb25lIGhhcyB0aGUgaGVhZGVyIGFuZCB0aGUgb3RoZXIgZG9lc24ndCwgb3Igb25lIGhhc1xuICAgICAgLy8gYSBkaWZmZXJlbnQgdmFsdWUgdGhhbiB0aGUgb3RoZXIsIHJldHVybiBmYWxzZVxuICAgICAgaWYgKHJlcXVlc3RWYWx1ZSAhPT0gcXVlcnlWYWx1ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENhY2hlLnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnQ2FjaGUnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9LFxuICBtYXRjaDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbWF0Y2hBbGw6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGFkZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYWRkQWxsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBwdXQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGRlbGV0ZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAga2V5czoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxuY29uc3QgY2FjaGVRdWVyeU9wdGlvbkNvbnZlcnRlcnMgPSBbXG4gIHtcbiAgICBrZXk6ICdpZ25vcmVTZWFyY2gnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdpZ25vcmVNZXRob2QnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdpZ25vcmVWYXJ5JyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9XG5dXG5cbndlYmlkbC5jb252ZXJ0ZXJzLkNhY2hlUXVlcnlPcHRpb25zID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoY2FjaGVRdWVyeU9wdGlvbkNvbnZlcnRlcnMpXG5cbndlYmlkbC5jb252ZXJ0ZXJzLk11bHRpQ2FjaGVRdWVyeU9wdGlvbnMgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIC4uLmNhY2hlUXVlcnlPcHRpb25Db252ZXJ0ZXJzLFxuICB7XG4gICAga2V5OiAnY2FjaGVOYW1lJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZ1xuICB9XG5dKVxuXG53ZWJpZGwuY29udmVydGVycy5SZXNwb25zZSA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoUmVzcG9uc2UpXG5cbndlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxSZXF1ZXN0SW5mbz4nXSA9IHdlYmlkbC5zZXF1ZW5jZUNvbnZlcnRlcihcbiAgd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm9cbilcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENhY2hlXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsga0NvbnN0cnVjdCB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgQ2FjaGUgfSA9IHJlcXVpcmUoJy4vY2FjaGUnKVxuY29uc3QgeyB3ZWJpZGwgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3dlYmlkbCcpXG5jb25zdCB7IGtFbnVtZXJhYmxlUHJvcGVydHkgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5cbmNsYXNzIENhY2hlU3RvcmFnZSB7XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkZm4tcmVsZXZhbnQtbmFtZS10by1jYWNoZS1tYXBcbiAgICogQHR5cGUge01hcDxzdHJpbmcsIGltcG9ydCgnLi9jYWNoZScpLnJlcXVlc3RSZXNwb25zZUxpc3R9XG4gICAqL1xuICAjY2FjaGVzID0gbmV3IE1hcCgpXG5cbiAgY29uc3RydWN0b3IgKCkge1xuICAgIGlmIChhcmd1bWVudHNbMF0gIT09IGtDb25zdHJ1Y3QpIHtcbiAgICAgIHdlYmlkbC5pbGxlZ2FsQ29uc3RydWN0b3IoKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1hdGNoIChyZXF1ZXN0LCBvcHRpb25zID0ge30pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZVN0b3JhZ2UpXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0NhY2hlU3RvcmFnZS5tYXRjaCcgfSlcblxuICAgIHJlcXVlc3QgPSB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyhyZXF1ZXN0KVxuICAgIG9wdGlvbnMgPSB3ZWJpZGwuY29udmVydGVycy5NdWx0aUNhY2hlUXVlcnlPcHRpb25zKG9wdGlvbnMpXG5cbiAgICAvLyAxLlxuICAgIGlmIChvcHRpb25zLmNhY2hlTmFtZSAhPSBudWxsKSB7XG4gICAgICAvLyAxLjEuMS4xXG4gICAgICBpZiAodGhpcy4jY2FjaGVzLmhhcyhvcHRpb25zLmNhY2hlTmFtZSkpIHtcbiAgICAgICAgLy8gMS4xLjEuMS4xXG4gICAgICAgIGNvbnN0IGNhY2hlTGlzdCA9IHRoaXMuI2NhY2hlcy5nZXQob3B0aW9ucy5jYWNoZU5hbWUpXG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKGtDb25zdHJ1Y3QsIGNhY2hlTGlzdClcblxuICAgICAgICByZXR1cm4gYXdhaXQgY2FjaGUubWF0Y2gocmVxdWVzdCwgb3B0aW9ucylcbiAgICAgIH1cbiAgICB9IGVsc2UgeyAvLyAyLlxuICAgICAgLy8gMi4yXG4gICAgICBmb3IgKGNvbnN0IGNhY2hlTGlzdCBvZiB0aGlzLiNjYWNoZXMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgY2FjaGUgPSBuZXcgQ2FjaGUoa0NvbnN0cnVjdCwgY2FjaGVMaXN0KVxuXG4gICAgICAgIC8vIDIuMi4xLjJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjYWNoZS5tYXRjaChyZXF1ZXN0LCBvcHRpb25zKVxuXG4gICAgICAgIGlmIChyZXNwb25zZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2FjaGUtc3RvcmFnZS1oYXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIGhhcyAoY2FjaGVOYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGVTdG9yYWdlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZVN0b3JhZ2UuaGFzJyB9KVxuXG4gICAgY2FjaGVOYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKGNhY2hlTmFtZSlcblxuICAgIC8vIDIuMS4xXG4gICAgLy8gMi4yXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlcy5oYXMoY2FjaGVOYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2RvbS1jYWNoZXN0b3JhZ2Utb3BlblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPENhY2hlPn1cbiAgICovXG4gIGFzeW5jIG9wZW4gKGNhY2hlTmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlU3RvcmFnZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2FjaGVTdG9yYWdlLm9wZW4nIH0pXG5cbiAgICBjYWNoZU5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcoY2FjaGVOYW1lKVxuXG4gICAgLy8gMi4xXG4gICAgaWYgKHRoaXMuI2NhY2hlcy5oYXMoY2FjaGVOYW1lKSkge1xuICAgICAgLy8gYXdhaXQgY2FjaGVzLm9wZW4oJ3YxJykgIT09IGF3YWl0IGNhY2hlcy5vcGVuKCd2MScpXG5cbiAgICAgIC8vIDIuMS4xXG4gICAgICBjb25zdCBjYWNoZSA9IHRoaXMuI2NhY2hlcy5nZXQoY2FjaGVOYW1lKVxuXG4gICAgICAvLyAyLjEuMS4xXG4gICAgICByZXR1cm4gbmV3IENhY2hlKGtDb25zdHJ1Y3QsIGNhY2hlKVxuICAgIH1cblxuICAgIC8vIDIuMlxuICAgIGNvbnN0IGNhY2hlID0gW11cblxuICAgIC8vIDIuM1xuICAgIHRoaXMuI2NhY2hlcy5zZXQoY2FjaGVOYW1lLCBjYWNoZSlcblxuICAgIC8vIDIuNFxuICAgIHJldHVybiBuZXcgQ2FjaGUoa0NvbnN0cnVjdCwgY2FjaGUpXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2FjaGUtc3RvcmFnZS1kZWxldGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIGRlbGV0ZSAoY2FjaGVOYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGVTdG9yYWdlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZVN0b3JhZ2UuZGVsZXRlJyB9KVxuXG4gICAgY2FjaGVOYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKGNhY2hlTmFtZSlcblxuICAgIHJldHVybiB0aGlzLiNjYWNoZXMuZGVsZXRlKGNhY2hlTmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjYWNoZS1zdG9yYWdlLWtleXNcbiAgICogQHJldHVybnMge3N0cmluZ1tdfVxuICAgKi9cbiAgYXN5bmMga2V5cyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGVTdG9yYWdlKVxuXG4gICAgLy8gMi4xXG4gICAgY29uc3Qga2V5cyA9IHRoaXMuI2NhY2hlcy5rZXlzKClcblxuICAgIC8vIDIuMlxuICAgIHJldHVybiBbLi4ua2V5c11cbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhDYWNoZVN0b3JhZ2UucHJvdG90eXBlLCB7XG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdDYWNoZVN0b3JhZ2UnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9LFxuICBtYXRjaDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgaGFzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBvcGVuOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBkZWxldGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGtleXM6IGtFbnVtZXJhYmxlUHJvcGVydHlcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDYWNoZVN0b3JhZ2Vcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9jb29raWUtc3RvcmUvI2Nvb2tpZS1tYXhpbXVtLWF0dHJpYnV0ZS12YWx1ZS1zaXplXG5jb25zdCBtYXhBdHRyaWJ1dGVWYWx1ZVNpemUgPSAxMDI0XG5cbi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNjb29raWUtbWF4aW11bS1uYW1lLXZhbHVlLXBhaXItc2l6ZVxuY29uc3QgbWF4TmFtZVZhbHVlUGFpclNpemUgPSA0MDk2XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtYXhBdHRyaWJ1dGVWYWx1ZVNpemUsXG4gIG1heE5hbWVWYWx1ZVBhaXJTaXplXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNDVExFeGNsdWRpbmdIdGFiICh2YWx1ZSkge1xuICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG5cbiAgICBpZiAoXG4gICAgICAoY29kZSA+PSAweDAwIHx8IGNvZGUgPD0gMHgwOCkgfHxcbiAgICAgIChjb2RlID49IDB4MEEgfHwgY29kZSA8PSAweDFGKSB8fFxuICAgICAgY29kZSA9PT0gMHg3RlxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG59XG5cbi8qKlxuIENIQVIgICAgICAgICAgID0gPGFueSBVUy1BU0NJSSBjaGFyYWN0ZXIgKG9jdGV0cyAwIC0gMTI3KT5cbiB0b2tlbiAgICAgICAgICA9IDEqPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIHNlcGFyYXRvcnM+XG4gc2VwYXJhdG9ycyAgICAgPSBcIihcIiB8IFwiKVwiIHwgXCI8XCIgfCBcIj5cIiB8IFwiQFwiXG4gICAgICAgICAgICAgICAgfCBcIixcIiB8IFwiO1wiIHwgXCI6XCIgfCBcIlxcXCIgfCA8XCI+XG4gICAgICAgICAgICAgICAgfCBcIi9cIiB8IFwiW1wiIHwgXCJdXCIgfCBcIj9cIiB8IFwiPVwiXG4gICAgICAgICAgICAgICAgfCBcIntcIiB8IFwifVwiIHwgU1AgfCBIVFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb29raWVOYW1lIChuYW1lKSB7XG4gIGZvciAoY29uc3QgY2hhciBvZiBuYW1lKSB7XG4gICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKFxuICAgICAgKGNvZGUgPD0gMHgyMCB8fCBjb2RlID4gMHg3RikgfHxcbiAgICAgIGNoYXIgPT09ICcoJyB8fFxuICAgICAgY2hhciA9PT0gJyknIHx8XG4gICAgICBjaGFyID09PSAnPicgfHxcbiAgICAgIGNoYXIgPT09ICc8JyB8fFxuICAgICAgY2hhciA9PT0gJ0AnIHx8XG4gICAgICBjaGFyID09PSAnLCcgfHxcbiAgICAgIGNoYXIgPT09ICc7JyB8fFxuICAgICAgY2hhciA9PT0gJzonIHx8XG4gICAgICBjaGFyID09PSAnXFxcXCcgfHxcbiAgICAgIGNoYXIgPT09ICdcIicgfHxcbiAgICAgIGNoYXIgPT09ICcvJyB8fFxuICAgICAgY2hhciA9PT0gJ1snIHx8XG4gICAgICBjaGFyID09PSAnXScgfHxcbiAgICAgIGNoYXIgPT09ICc/JyB8fFxuICAgICAgY2hhciA9PT0gJz0nIHx8XG4gICAgICBjaGFyID09PSAneycgfHxcbiAgICAgIGNoYXIgPT09ICd9J1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvb2tpZSBuYW1lJylcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gY29va2llLXZhbHVlICAgICAgPSAqY29va2llLW9jdGV0IC8gKCBEUVVPVEUgKmNvb2tpZS1vY3RldCBEUVVPVEUgKVxuIGNvb2tpZS1vY3RldCAgICAgID0gJXgyMSAvICV4MjMtMkIgLyAleDJELTNBIC8gJXgzQy01QiAvICV4NUQtN0VcbiAgICAgICAgICAgICAgICAgICAgICAgOyBVUy1BU0NJSSBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyBDVExzLFxuICAgICAgICAgICAgICAgICAgICAgICA7IHdoaXRlc3BhY2UgRFFVT1RFLCBjb21tYSwgc2VtaWNvbG9uLFxuICAgICAgICAgICAgICAgICAgICAgICA7IGFuZCBiYWNrc2xhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvb2tpZVZhbHVlICh2YWx1ZSkge1xuICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG5cbiAgICBpZiAoXG4gICAgICBjb2RlIDwgMHgyMSB8fCAvLyBleGNsdWRlIENUTHMgKDAtMzEpXG4gICAgICBjb2RlID09PSAweDIyIHx8XG4gICAgICBjb2RlID09PSAweDJDIHx8XG4gICAgICBjb2RlID09PSAweDNCIHx8XG4gICAgICBjb2RlID09PSAweDVDIHx8XG4gICAgICBjb2RlID4gMHg3RSAvLyBub24tYXNjaWlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZWFkZXIgdmFsdWUnKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIHBhdGgtdmFsdWUgICAgICAgID0gPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIFwiO1wiPlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb29raWVQYXRoIChwYXRoKSB7XG4gIGZvciAoY29uc3QgY2hhciBvZiBwYXRoKSB7XG4gICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKGNvZGUgPCAweDIxIHx8IGNoYXIgPT09ICc7Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvb2tpZSBwYXRoJylcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJIGhhdmUgbm8gaWRlYSB3aHkgdGhlc2UgdmFsdWVzIGFyZW4ndCBhbGxvd2VkIHRvIGJlIGhvbmVzdCxcbiAqIGJ1dCBEZW5vIHRlc3RzIHRoZXNlLiAtIEtoYWZyYVxuICogQHBhcmFtIHtzdHJpbmd9IGRvbWFpblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvb2tpZURvbWFpbiAoZG9tYWluKSB7XG4gIGlmIChcbiAgICBkb21haW4uc3RhcnRzV2l0aCgnLScpIHx8XG4gICAgZG9tYWluLmVuZHNXaXRoKCcuJykgfHxcbiAgICBkb21haW4uZW5kc1dpdGgoJy0nKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29va2llIGRvbWFpbicpXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMxI3NlY3Rpb24tNy4xLjEuMVxuICogQHBhcmFtIHtudW1iZXJ8RGF0ZX0gZGF0ZVxuICBJTUYtZml4ZGF0ZSAgPSBkYXktbmFtZSBcIixcIiBTUCBkYXRlMSBTUCB0aW1lLW9mLWRheSBTUCBHTVRcbiAgOyBmaXhlZCBsZW5ndGgvem9uZS9jYXBpdGFsaXphdGlvbiBzdWJzZXQgb2YgdGhlIGZvcm1hdFxuICA7IHNlZSBTZWN0aW9uIDMuMyBvZiBbUkZDNTMyMl1cblxuICBkYXktbmFtZSAgICAgPSAleDRELjZGLjZFIDsgXCJNb25cIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDU0Ljc1LjY1IDsgXCJUdWVcIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDU3LjY1LjY0IDsgXCJXZWRcIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDU0LjY4Ljc1IDsgXCJUaHVcIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDQ2LjcyLjY5IDsgXCJGcmlcIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDUzLjYxLjc0IDsgXCJTYXRcIiwgY2FzZS1zZW5zaXRpdmVcbiAgICAgICAgICAgICAgLyAleDUzLjc1LjZFIDsgXCJTdW5cIiwgY2FzZS1zZW5zaXRpdmVcbiAgZGF0ZTEgICAgICAgID0gZGF5IFNQIG1vbnRoIFNQIHllYXJcbiAgICAgICAgICAgICAgICAgIDsgZS5nLiwgMDIgSnVuIDE5ODJcblxuICBkYXkgICAgICAgICAgPSAyRElHSVRcbiAgbW9udGggICAgICAgID0gJXg0QS42MS42RSA7IFwiSmFuXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0Ni42NS42MiA7IFwiRmViXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0RC42MS43MiA7IFwiTWFyXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0MS43MC43MiA7IFwiQXByXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0RC42MS43OSA7IFwiTWF5XCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0QS43NS42RSA7IFwiSnVuXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0QS43NS42QyA7IFwiSnVsXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0MS43NS42NyA7IFwiQXVnXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1My42NS43MCA7IFwiU2VwXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0Ri42My43NCA7IFwiT2N0XCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0RS42Ri43NiA7IFwiTm92XCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0NC42NS42MyA7IFwiRGVjXCIsIGNhc2Utc2Vuc2l0aXZlXG4gIHllYXIgICAgICAgICA9IDRESUdJVFxuXG4gIEdNVCAgICAgICAgICA9ICV4NDcuNEQuNTQgOyBcIkdNVFwiLCBjYXNlLXNlbnNpdGl2ZVxuXG4gIHRpbWUtb2YtZGF5ICA9IGhvdXIgXCI6XCIgbWludXRlIFwiOlwiIHNlY29uZFxuICAgICAgICAgICAgICA7IDAwOjAwOjAwIC0gMjM6NTk6NjAgKGxlYXAgc2Vjb25kKVxuXG4gIGhvdXIgICAgICAgICA9IDJESUdJVFxuICBtaW51dGUgICAgICAgPSAyRElHSVRcbiAgc2Vjb25kICAgICAgID0gMkRJR0lUXG4gKi9cbmZ1bmN0aW9uIHRvSU1GRGF0ZSAoZGF0ZSkge1xuICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gIH1cblxuICBjb25zdCBkYXlzID0gW1xuICAgICdTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLFxuICAgICdUaHUnLCAnRnJpJywgJ1NhdCdcbiAgXVxuXG4gIGNvbnN0IG1vbnRocyA9IFtcbiAgICAnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLFxuICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYydcbiAgXVxuXG4gIGNvbnN0IGRheU5hbWUgPSBkYXlzW2RhdGUuZ2V0VVRDRGF5KCldXG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxuICBjb25zdCBtb250aCA9IG1vbnRoc1tkYXRlLmdldFVUQ01vbnRoKCldXG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKClcbiAgY29uc3QgaG91ciA9IGRhdGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgbWludXRlID0gZGF0ZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IHNlY29uZCA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxuXG4gIHJldHVybiBgJHtkYXlOYW1lfSwgJHtkYXl9ICR7bW9udGh9ICR7eWVhcn0gJHtob3VyfToke21pbnV0ZX06JHtzZWNvbmR9IEdNVGBcbn1cblxuLyoqXG4gbWF4LWFnZS1hdiAgICAgICAgPSBcIk1heC1BZ2U9XCIgbm9uLXplcm8tZGlnaXQgKkRJR0lUXG4gICAgICAgICAgICAgICAgICAgICAgIDsgSW4gcHJhY3RpY2UsIGJvdGggZXhwaXJlcy1hdiBhbmQgbWF4LWFnZS1hdlxuICAgICAgICAgICAgICAgICAgICAgICA7IGFyZSBsaW1pdGVkIHRvIGRhdGVzIHJlcHJlc2VudGFibGUgYnkgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgdXNlciBhZ2VudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBtYXhBZ2VcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb29raWVNYXhBZ2UgKG1heEFnZSkge1xuICBpZiAobWF4QWdlIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb29raWUgbWF4LWFnZScpXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM2MjY1I3NlY3Rpb24tNC4xLjFcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuQ29va2llfSBjb29raWVcbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5IChjb29raWUpIHtcbiAgaWYgKGNvb2tpZS5uYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB2YWxpZGF0ZUNvb2tpZU5hbWUoY29va2llLm5hbWUpXG4gIHZhbGlkYXRlQ29va2llVmFsdWUoY29va2llLnZhbHVlKVxuXG4gIGNvbnN0IG91dCA9IFtgJHtjb29raWUubmFtZX09JHtjb29raWUudmFsdWV9YF1cblxuICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1jb29raWUtcHJlZml4ZXMtMDAjc2VjdGlvbi0zLjFcbiAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtY29va2llLXByZWZpeGVzLTAwI3NlY3Rpb24tMy4yXG4gIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCdfX1NlY3VyZS0nKSkge1xuICAgIGNvb2tpZS5zZWN1cmUgPSB0cnVlXG4gIH1cblxuICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgnX19Ib3N0LScpKSB7XG4gICAgY29va2llLnNlY3VyZSA9IHRydWVcbiAgICBjb29raWUuZG9tYWluID0gbnVsbFxuICAgIGNvb2tpZS5wYXRoID0gJy8nXG4gIH1cblxuICBpZiAoY29va2llLnNlY3VyZSkge1xuICAgIG91dC5wdXNoKCdTZWN1cmUnKVxuICB9XG5cbiAgaWYgKGNvb2tpZS5odHRwT25seSkge1xuICAgIG91dC5wdXNoKCdIdHRwT25seScpXG4gIH1cblxuICBpZiAodHlwZW9mIGNvb2tpZS5tYXhBZ2UgPT09ICdudW1iZXInKSB7XG4gICAgdmFsaWRhdGVDb29raWVNYXhBZ2UoY29va2llLm1heEFnZSlcbiAgICBvdXQucHVzaChgTWF4LUFnZT0ke2Nvb2tpZS5tYXhBZ2V9YClcbiAgfVxuXG4gIGlmIChjb29raWUuZG9tYWluKSB7XG4gICAgdmFsaWRhdGVDb29raWVEb21haW4oY29va2llLmRvbWFpbilcbiAgICBvdXQucHVzaChgRG9tYWluPSR7Y29va2llLmRvbWFpbn1gKVxuICB9XG5cbiAgaWYgKGNvb2tpZS5wYXRoKSB7XG4gICAgdmFsaWRhdGVDb29raWVQYXRoKGNvb2tpZS5wYXRoKVxuICAgIG91dC5wdXNoKGBQYXRoPSR7Y29va2llLnBhdGh9YClcbiAgfVxuXG4gIGlmIChjb29raWUuZXhwaXJlcyAmJiBjb29raWUuZXhwaXJlcy50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xuICAgIG91dC5wdXNoKGBFeHBpcmVzPSR7dG9JTUZEYXRlKGNvb2tpZS5leHBpcmVzKX1gKVxuICB9XG5cbiAgaWYgKGNvb2tpZS5zYW1lU2l0ZSkge1xuICAgIG91dC5wdXNoKGBTYW1lU2l0ZT0ke2Nvb2tpZS5zYW1lU2l0ZX1gKVxuICB9XG5cbiAgZm9yIChjb25zdCBwYXJ0IG9mIGNvb2tpZS51bnBhcnNlZCkge1xuICAgIGlmICghcGFydC5pbmNsdWRlcygnPScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdW5wYXJzZWQnKVxuICAgIH1cblxuICAgIGNvbnN0IFtrZXksIC4uLnZhbHVlXSA9IHBhcnQuc3BsaXQoJz0nKVxuXG4gICAgb3V0LnB1c2goYCR7a2V5LnRyaW0oKX09JHt2YWx1ZS5qb2luKCc9Jyl9YClcbiAgfVxuXG4gIHJldHVybiBvdXQuam9pbignOyAnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNDVExFeGNsdWRpbmdIdGFiLFxuICB2YWxpZGF0ZUNvb2tpZU5hbWUsXG4gIHZhbGlkYXRlQ29va2llUGF0aCxcbiAgdmFsaWRhdGVDb29raWVWYWx1ZSxcbiAgdG9JTUZEYXRlLFxuICBzdHJpbmdpZnlcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBtYXhOYW1lVmFsdWVQYWlyU2l6ZSwgbWF4QXR0cmlidXRlVmFsdWVTaXplIH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5jb25zdCB7IGlzQ1RMRXhjbHVkaW5nSHRhYiB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2RhdGFVUkwnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFyc2VzIHRoZSBmaWVsZC12YWx1ZSBhdHRyaWJ1dGVzIG9mIGEgc2V0LWNvb2tpZSBoZWFkZXIgc3RyaW5nLlxuICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40XG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyXG4gKiBAcmV0dXJucyBpZiB0aGUgaGVhZGVyIGlzIGludmFsaWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZFxuICovXG5mdW5jdGlvbiBwYXJzZVNldENvb2tpZSAoaGVhZGVyKSB7XG4gIC8vIDEuIElmIHRoZSBzZXQtY29va2llLXN0cmluZyBjb250YWlucyBhICV4MDAtMDggLyAleDBBLTFGIC8gJXg3RlxuICAvLyAgICBjaGFyYWN0ZXIgKENUTCBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyBIVEFCKTogQWJvcnQgdGhlc2Ugc3RlcHMgYW5kXG4gIC8vICAgIGlnbm9yZSB0aGUgc2V0LWNvb2tpZS1zdHJpbmcgZW50aXJlbHkuXG4gIGlmIChpc0NUTEV4Y2x1ZGluZ0h0YWIoaGVhZGVyKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgbmFtZVZhbHVlUGFpciA9ICcnXG4gIGxldCB1bnBhcnNlZEF0dHJpYnV0ZXMgPSAnJ1xuICBsZXQgbmFtZSA9ICcnXG4gIGxldCB2YWx1ZSA9ICcnXG5cbiAgLy8gMi4gSWYgdGhlIHNldC1jb29raWUtc3RyaW5nIGNvbnRhaW5zIGEgJXgzQiAoXCI7XCIpIGNoYXJhY3RlcjpcbiAgaWYgKGhlYWRlci5pbmNsdWRlcygnOycpKSB7XG4gICAgLy8gMS4gVGhlIG5hbWUtdmFsdWUtcGFpciBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIGNoYXJhY3RlcnMgdXAgdG8sXG4gICAgLy8gICAgYnV0IG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNCIChcIjtcIiksIGFuZCB0aGUgdW5wYXJzZWQtXG4gICAgLy8gICAgYXR0cmlidXRlcyBjb25zaXN0IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHNldC1jb29raWUtc3RyaW5nXG4gICAgLy8gICAgKGluY2x1ZGluZyB0aGUgJXgzQiAoXCI7XCIpIGluIHF1ZXN0aW9uKS5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHsgcG9zaXRpb246IDAgfVxuXG4gICAgbmFtZVZhbHVlUGFpciA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KCc7JywgaGVhZGVyLCBwb3NpdGlvbilcbiAgICB1bnBhcnNlZEF0dHJpYnV0ZXMgPSBoZWFkZXIuc2xpY2UocG9zaXRpb24ucG9zaXRpb24pXG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlOlxuXG4gICAgLy8gMS4gVGhlIG5hbWUtdmFsdWUtcGFpciBzdHJpbmcgY29uc2lzdHMgb2YgYWxsIHRoZSBjaGFyYWN0ZXJzXG4gICAgLy8gICAgY29udGFpbmVkIGluIHRoZSBzZXQtY29va2llLXN0cmluZywgYW5kIHRoZSB1bnBhcnNlZC1cbiAgICAvLyAgICBhdHRyaWJ1dGVzIGlzIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgbmFtZVZhbHVlUGFpciA9IGhlYWRlclxuICB9XG5cbiAgLy8gMy4gSWYgdGhlIG5hbWUtdmFsdWUtcGFpciBzdHJpbmcgbGFja3MgYSAleDNEIChcIj1cIikgY2hhcmFjdGVyLCB0aGVuXG4gIC8vICAgIHRoZSBuYW1lIHN0cmluZyBpcyBlbXB0eSwgYW5kIHRoZSB2YWx1ZSBzdHJpbmcgaXMgdGhlIHZhbHVlIG9mXG4gIC8vICAgIG5hbWUtdmFsdWUtcGFpci5cbiAgaWYgKCFuYW1lVmFsdWVQYWlyLmluY2x1ZGVzKCc9JykpIHtcbiAgICB2YWx1ZSA9IG5hbWVWYWx1ZVBhaXJcbiAgfSBlbHNlIHtcbiAgICAvLyAgICBPdGhlcndpc2UsIHRoZSBuYW1lIHN0cmluZyBjb25zaXN0cyBvZiB0aGUgY2hhcmFjdGVycyB1cCB0bywgYnV0XG4gICAgLy8gICAgbm90IGluY2x1ZGluZywgdGhlIGZpcnN0ICV4M0QgKFwiPVwiKSBjaGFyYWN0ZXIsIGFuZCB0aGUgKHBvc3NpYmx5XG4gICAgLy8gICAgZW1wdHkpIHZhbHVlIHN0cmluZyBjb25zaXN0cyBvZiB0aGUgY2hhcmFjdGVycyBhZnRlciB0aGUgZmlyc3RcbiAgICAvLyAgICAleDNEIChcIj1cIikgY2hhcmFjdGVyLlxuICAgIGNvbnN0IHBvc2l0aW9uID0geyBwb3NpdGlvbjogMCB9XG4gICAgbmFtZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICAgJz0nLFxuICAgICAgbmFtZVZhbHVlUGFpcixcbiAgICAgIHBvc2l0aW9uXG4gICAgKVxuICAgIHZhbHVlID0gbmFtZVZhbHVlUGFpci5zbGljZShwb3NpdGlvbi5wb3NpdGlvbiArIDEpXG4gIH1cblxuICAvLyA0LiBSZW1vdmUgYW55IGxlYWRpbmcgb3IgdHJhaWxpbmcgV1NQIGNoYXJhY3RlcnMgZnJvbSB0aGUgbmFtZVxuICAvLyAgICBzdHJpbmcgYW5kIHRoZSB2YWx1ZSBzdHJpbmcuXG4gIG5hbWUgPSBuYW1lLnRyaW0oKVxuICB2YWx1ZSA9IHZhbHVlLnRyaW0oKVxuXG4gIC8vIDUuIElmIHRoZSBzdW0gb2YgdGhlIGxlbmd0aHMgb2YgdGhlIG5hbWUgc3RyaW5nIGFuZCB0aGUgdmFsdWUgc3RyaW5nXG4gIC8vICAgIGlzIG1vcmUgdGhhbiA0MDk2IG9jdGV0cywgYWJvcnQgdGhlc2Ugc3RlcHMgYW5kIGlnbm9yZSB0aGUgc2V0LVxuICAvLyAgICBjb29raWUtc3RyaW5nIGVudGlyZWx5LlxuICBpZiAobmFtZS5sZW5ndGggKyB2YWx1ZS5sZW5ndGggPiBtYXhOYW1lVmFsdWVQYWlyU2l6ZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyA2LiBUaGUgY29va2llLW5hbWUgaXMgdGhlIG5hbWUgc3RyaW5nLCBhbmQgdGhlIGNvb2tpZS12YWx1ZSBpcyB0aGVcbiAgLy8gICAgdmFsdWUgc3RyaW5nLlxuICByZXR1cm4ge1xuICAgIG5hbWUsIHZhbHVlLCAuLi5wYXJzZVVucGFyc2VkQXR0cmlidXRlcyh1bnBhcnNlZEF0dHJpYnV0ZXMpXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHJlbWFpbmluZyBhdHRyaWJ1dGVzIG9mIGEgc2V0LWNvb2tpZSBoZWFkZXJcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtcmZjNjI2NWJpcyNzZWN0aW9uLTUuNFxuICogQHBhcmFtIHtzdHJpbmd9IHVucGFyc2VkQXR0cmlidXRlc1xuICogQHBhcmFtIHtbT2JqZWN0LjxzdHJpbmcsIHVua25vd24+XT17fX0gY29va2llQXR0cmlidXRlTGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZVVucGFyc2VkQXR0cmlidXRlcyAodW5wYXJzZWRBdHRyaWJ1dGVzLCBjb29raWVBdHRyaWJ1dGVMaXN0ID0ge30pIHtcbiAgLy8gMS4gSWYgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgc3RyaW5nIGlzIGVtcHR5LCBza2lwIHRoZSByZXN0IG9mXG4gIC8vICAgIHRoZXNlIHN0ZXBzLlxuICBpZiAodW5wYXJzZWRBdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjb29raWVBdHRyaWJ1dGVMaXN0XG4gIH1cblxuICAvLyAyLiBEaXNjYXJkIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgKHdoaWNoXG4gIC8vICAgIHdpbGwgYmUgYSAleDNCIChcIjtcIikgY2hhcmFjdGVyKS5cbiAgYXNzZXJ0KHVucGFyc2VkQXR0cmlidXRlc1swXSA9PT0gJzsnKVxuICB1bnBhcnNlZEF0dHJpYnV0ZXMgPSB1bnBhcnNlZEF0dHJpYnV0ZXMuc2xpY2UoMSlcblxuICBsZXQgY29va2llQXYgPSAnJ1xuXG4gIC8vIDMuIElmIHRoZSByZW1haW5pbmcgdW5wYXJzZWQtYXR0cmlidXRlcyBjb250YWlucyBhICV4M0IgKFwiO1wiKVxuICAvLyAgICBjaGFyYWN0ZXI6XG4gIGlmICh1bnBhcnNlZEF0dHJpYnV0ZXMuaW5jbHVkZXMoJzsnKSkge1xuICAgIC8vIDEuIENvbnN1bWUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgdXAgdG8sIGJ1dFxuICAgIC8vICAgIG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNCIChcIjtcIikgY2hhcmFjdGVyLlxuICAgIGNvb2tpZUF2ID0gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QoXG4gICAgICAnOycsXG4gICAgICB1bnBhcnNlZEF0dHJpYnV0ZXMsXG4gICAgICB7IHBvc2l0aW9uOiAwIH1cbiAgICApXG4gICAgdW5wYXJzZWRBdHRyaWJ1dGVzID0gdW5wYXJzZWRBdHRyaWJ1dGVzLnNsaWNlKGNvb2tpZUF2Lmxlbmd0aClcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2U6XG5cbiAgICAvLyAxLiBDb25zdW1lIHRoZSByZW1haW5kZXIgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMuXG4gICAgY29va2llQXYgPSB1bnBhcnNlZEF0dHJpYnV0ZXNcbiAgICB1bnBhcnNlZEF0dHJpYnV0ZXMgPSAnJ1xuICB9XG5cbiAgLy8gTGV0IHRoZSBjb29raWUtYXYgc3RyaW5nIGJlIHRoZSBjaGFyYWN0ZXJzIGNvbnN1bWVkIGluIHRoaXMgc3RlcC5cblxuICBsZXQgYXR0cmlidXRlTmFtZSA9ICcnXG4gIGxldCBhdHRyaWJ1dGVWYWx1ZSA9ICcnXG5cbiAgLy8gNC4gSWYgdGhlIGNvb2tpZS1hdiBzdHJpbmcgY29udGFpbnMgYSAleDNEIChcIj1cIikgY2hhcmFjdGVyOlxuICBpZiAoY29va2llQXYuaW5jbHVkZXMoJz0nKSkge1xuICAgIC8vIDEuIFRoZSAocG9zc2libHkgZW1wdHkpIGF0dHJpYnV0ZS1uYW1lIHN0cmluZyBjb25zaXN0cyBvZiB0aGVcbiAgICAvLyAgICBjaGFyYWN0ZXJzIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgdGhlIGZpcnN0ICV4M0QgKFwiPVwiKVxuICAgIC8vICAgIGNoYXJhY3RlciwgYW5kIHRoZSAocG9zc2libHkgZW1wdHkpIGF0dHJpYnV0ZS12YWx1ZSBzdHJpbmdcbiAgICAvLyAgICBjb25zaXN0cyBvZiB0aGUgY2hhcmFjdGVycyBhZnRlciB0aGUgZmlyc3QgJXgzRCAoXCI9XCIpXG4gICAgLy8gICAgY2hhcmFjdGVyLlxuICAgIGNvbnN0IHBvc2l0aW9uID0geyBwb3NpdGlvbjogMCB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lID0gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QoXG4gICAgICAnPScsXG4gICAgICBjb29raWVBdixcbiAgICAgIHBvc2l0aW9uXG4gICAgKVxuICAgIGF0dHJpYnV0ZVZhbHVlID0gY29va2llQXYuc2xpY2UocG9zaXRpb24ucG9zaXRpb24gKyAxKVxuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZTpcblxuICAgIC8vIDEuIFRoZSBhdHRyaWJ1dGUtbmFtZSBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIGVudGlyZSBjb29raWUtYXZcbiAgICAvLyAgICBzdHJpbmcsIGFuZCB0aGUgYXR0cmlidXRlLXZhbHVlIHN0cmluZyBpcyBlbXB0eS5cbiAgICBhdHRyaWJ1dGVOYW1lID0gY29va2llQXZcbiAgfVxuXG4gIC8vIDUuIFJlbW92ZSBhbnkgbGVhZGluZyBvciB0cmFpbGluZyBXU1AgY2hhcmFjdGVycyBmcm9tIHRoZSBhdHRyaWJ1dGUtXG4gIC8vICAgIG5hbWUgc3RyaW5nIGFuZCB0aGUgYXR0cmlidXRlLXZhbHVlIHN0cmluZy5cbiAgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWUudHJpbSgpXG4gIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWUudHJpbSgpXG5cbiAgLy8gNi4gSWYgdGhlIGF0dHJpYnV0ZS12YWx1ZSBpcyBsb25nZXIgdGhhbiAxMDI0IG9jdGV0cywgaWdub3JlIHRoZVxuICAvLyAgICBjb29raWUtYXYgc3RyaW5nIGFuZCByZXR1cm4gdG8gU3RlcCAxIG9mIHRoaXMgYWxnb3JpdGhtLlxuICBpZiAoYXR0cmlidXRlVmFsdWUubGVuZ3RoID4gbWF4QXR0cmlidXRlVmFsdWVTaXplKSB7XG4gICAgcmV0dXJuIHBhcnNlVW5wYXJzZWRBdHRyaWJ1dGVzKHVucGFyc2VkQXR0cmlidXRlcywgY29va2llQXR0cmlidXRlTGlzdClcbiAgfVxuXG4gIC8vIDcuIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZS1uYW1lIGFuZCBhdHRyaWJ1dGUtdmFsdWUgYWNjb3JkaW5nIHRvIHRoZVxuICAvLyAgICByZXF1aXJlbWVudHMgaW4gdGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucy4gIChOb3RpY2UgdGhhdFxuICAvLyAgICBhdHRyaWJ1dGVzIHdpdGggdW5yZWNvZ25pemVkIGF0dHJpYnV0ZS1uYW1lcyBhcmUgaWdub3JlZC4pXG4gIGNvbnN0IGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPSBhdHRyaWJ1dGVOYW1lLnRvTG93ZXJDYXNlKClcblxuICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjFcbiAgLy8gSWYgdGhlIGF0dHJpYnV0ZS1uYW1lIGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIHRoZSBzdHJpbmdcbiAgLy8gXCJFeHBpcmVzXCIsIHRoZSB1c2VyIGFnZW50IE1VU1QgcHJvY2VzcyB0aGUgY29va2llLWF2IGFzIGZvbGxvd3MuXG4gIGlmIChhdHRyaWJ1dGVOYW1lTG93ZXJjYXNlID09PSAnZXhwaXJlcycpIHtcbiAgICAvLyAxLiBMZXQgdGhlIGV4cGlyeS10aW1lIGJlIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgYXR0cmlidXRlLXZhbHVlXG4gICAgLy8gICAgYXMgY29va2llLWRhdGUgKHNlZSBTZWN0aW9uIDUuMS4xKS5cbiAgICBjb25zdCBleHBpcnlUaW1lID0gbmV3IERhdGUoYXR0cmlidXRlVmFsdWUpXG5cbiAgICAvLyAyLiBJZiB0aGUgYXR0cmlidXRlLXZhbHVlIGZhaWxlZCB0byBwYXJzZSBhcyBhIGNvb2tpZSBkYXRlLCBpZ25vcmVcbiAgICAvLyAgICB0aGUgY29va2llLWF2LlxuXG4gICAgY29va2llQXR0cmlidXRlTGlzdC5leHBpcmVzID0gZXhwaXJ5VGltZVxuICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPT09ICdtYXgtYWdlJykge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjQuMlxuICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nIFwiTWF4LVxuICAgIC8vIEFnZVwiLCB0aGUgdXNlciBhZ2VudCBNVVNUIHByb2Nlc3MgdGhlIGNvb2tpZS1hdiBhcyBmb2xsb3dzLlxuXG4gICAgLy8gMS4gSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgYXR0cmlidXRlLXZhbHVlIGlzIG5vdCBhIERJR0lUIG9yIGFcbiAgICAvLyAgICBcIi1cIiBjaGFyYWN0ZXIsIGlnbm9yZSB0aGUgY29va2llLWF2LlxuICAgIGNvbnN0IGNoYXJDb2RlID0gYXR0cmlidXRlVmFsdWUuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpICYmIGF0dHJpYnV0ZVZhbHVlWzBdICE9PSAnLScpIHtcbiAgICAgIHJldHVybiBwYXJzZVVucGFyc2VkQXR0cmlidXRlcyh1bnBhcnNlZEF0dHJpYnV0ZXMsIGNvb2tpZUF0dHJpYnV0ZUxpc3QpXG4gICAgfVxuXG4gICAgLy8gMi4gSWYgdGhlIHJlbWFpbmRlciBvZiBhdHRyaWJ1dGUtdmFsdWUgY29udGFpbnMgYSBub24tRElHSVRcbiAgICAvLyAgICBjaGFyYWN0ZXIsIGlnbm9yZSB0aGUgY29va2llLWF2LlxuICAgIGlmICghL15cXGQrJC8udGVzdChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVVucGFyc2VkQXR0cmlidXRlcyh1bnBhcnNlZEF0dHJpYnV0ZXMsIGNvb2tpZUF0dHJpYnV0ZUxpc3QpXG4gICAgfVxuXG4gICAgLy8gMy4gTGV0IGRlbHRhLXNlY29uZHMgYmUgdGhlIGF0dHJpYnV0ZS12YWx1ZSBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlci5cbiAgICBjb25zdCBkZWx0YVNlY29uZHMgPSBOdW1iZXIoYXR0cmlidXRlVmFsdWUpXG5cbiAgICAvLyA0LiBMZXQgY29va2llLWFnZS1saW1pdCBiZSB0aGUgbWF4aW11bSBhZ2Ugb2YgdGhlIGNvb2tpZSAod2hpY2hcbiAgICAvLyAgICBTSE9VTEQgYmUgNDAwIGRheXMgb3IgbGVzcywgc2VlIFNlY3Rpb24gNC4xLjIuMikuXG5cbiAgICAvLyA1LiBTZXQgZGVsdGEtc2Vjb25kcyB0byB0aGUgc21hbGxlciBvZiBpdHMgcHJlc2VudCB2YWx1ZSBhbmQgY29va2llLVxuICAgIC8vICAgIGFnZS1saW1pdC5cbiAgICAvLyBkZWx0YVNlY29uZHMgPSBNYXRoLm1pbihkZWx0YVNlY29uZHMgKiAxMDAwLCBtYXhFeHBpcmVzTXMpXG5cbiAgICAvLyA2LiBJZiBkZWx0YS1zZWNvbmRzIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvICgwKSwgbGV0IGV4cGlyeS1cbiAgICAvLyAgICB0aW1lIGJlIHRoZSBlYXJsaWVzdCByZXByZXNlbnRhYmxlIGRhdGUgYW5kIHRpbWUuICBPdGhlcndpc2UsIGxldFxuICAgIC8vICAgIHRoZSBleHBpcnktdGltZSBiZSB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIHBsdXMgZGVsdGEtc2Vjb25kc1xuICAgIC8vICAgIHNlY29uZHMuXG4gICAgLy8gY29uc3QgZXhwaXJ5VGltZSA9IGRlbHRhU2Vjb25kcyA8PSAwID8gRGF0ZS5ub3coKSA6IERhdGUubm93KCkgKyBkZWx0YVNlY29uZHNcblxuICAgIC8vIDcuIEFwcGVuZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGNvb2tpZS1hdHRyaWJ1dGUtbGlzdCB3aXRoIGFuXG4gICAgLy8gICAgYXR0cmlidXRlLW5hbWUgb2YgTWF4LUFnZSBhbmQgYW4gYXR0cmlidXRlLXZhbHVlIG9mIGV4cGlyeS10aW1lLlxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QubWF4QWdlID0gZGVsdGFTZWNvbmRzXG4gIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ2RvbWFpbicpIHtcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjNcbiAgICAvLyBJZiB0aGUgYXR0cmlidXRlLW5hbWUgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIHN0cmluZyBcIkRvbWFpblwiLFxuICAgIC8vIHRoZSB1c2VyIGFnZW50IE1VU1QgcHJvY2VzcyB0aGUgY29va2llLWF2IGFzIGZvbGxvd3MuXG5cbiAgICAvLyAxLiBMZXQgY29va2llLWRvbWFpbiBiZSB0aGUgYXR0cmlidXRlLXZhbHVlLlxuICAgIGxldCBjb29raWVEb21haW4gPSBhdHRyaWJ1dGVWYWx1ZVxuXG4gICAgLy8gMi4gSWYgY29va2llLWRvbWFpbiBzdGFydHMgd2l0aCAleDJFIChcIi5cIiksIGxldCBjb29raWUtZG9tYWluIGJlXG4gICAgLy8gICAgY29va2llLWRvbWFpbiB3aXRob3V0IGl0cyBsZWFkaW5nICV4MkUgKFwiLlwiKS5cbiAgICBpZiAoY29va2llRG9tYWluWzBdID09PSAnLicpIHtcbiAgICAgIGNvb2tpZURvbWFpbiA9IGNvb2tpZURvbWFpbi5zbGljZSgxKVxuICAgIH1cblxuICAgIC8vIDMuIENvbnZlcnQgdGhlIGNvb2tpZS1kb21haW4gdG8gbG93ZXIgY2FzZS5cbiAgICBjb29raWVEb21haW4gPSBjb29raWVEb21haW4udG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gNC4gQXBwZW5kIGFuIGF0dHJpYnV0ZSB0byB0aGUgY29va2llLWF0dHJpYnV0ZS1saXN0IHdpdGggYW5cbiAgICAvLyAgICBhdHRyaWJ1dGUtbmFtZSBvZiBEb21haW4gYW5kIGFuIGF0dHJpYnV0ZS12YWx1ZSBvZiBjb29raWUtZG9tYWluLlxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QuZG9tYWluID0gY29va2llRG9tYWluXG4gIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ3BhdGgnKSB7XG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtcmZjNjI2NWJpcyNzZWN0aW9uLTUuNC40XG4gICAgLy8gSWYgdGhlIGF0dHJpYnV0ZS1uYW1lIGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIHRoZSBzdHJpbmcgXCJQYXRoXCIsXG4gICAgLy8gdGhlIHVzZXIgYWdlbnQgTVVTVCBwcm9jZXNzIHRoZSBjb29raWUtYXYgYXMgZm9sbG93cy5cblxuICAgIC8vIDEuIElmIHRoZSBhdHRyaWJ1dGUtdmFsdWUgaXMgZW1wdHkgb3IgaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGVcbiAgICAvLyAgICBhdHRyaWJ1dGUtdmFsdWUgaXMgbm90ICV4MkYgKFwiL1wiKTpcbiAgICBsZXQgY29va2llUGF0aCA9ICcnXG4gICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmxlbmd0aCA9PT0gMCB8fCBhdHRyaWJ1dGVWYWx1ZVswXSAhPT0gJy8nKSB7XG4gICAgICAvLyAxLiBMZXQgY29va2llLXBhdGggYmUgdGhlIGRlZmF1bHQtcGF0aC5cbiAgICAgIGNvb2tpZVBhdGggPSAnLydcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlOlxuXG4gICAgICAvLyAxLiBMZXQgY29va2llLXBhdGggYmUgdGhlIGF0dHJpYnV0ZS12YWx1ZS5cbiAgICAgIGNvb2tpZVBhdGggPSBhdHRyaWJ1dGVWYWx1ZVxuICAgIH1cblxuICAgIC8vIDIuIEFwcGVuZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGNvb2tpZS1hdHRyaWJ1dGUtbGlzdCB3aXRoIGFuXG4gICAgLy8gICAgYXR0cmlidXRlLW5hbWUgb2YgUGF0aCBhbmQgYW4gYXR0cmlidXRlLXZhbHVlIG9mIGNvb2tpZS1wYXRoLlxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QucGF0aCA9IGNvb2tpZVBhdGhcbiAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lTG93ZXJjYXNlID09PSAnc2VjdXJlJykge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjQuNVxuICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nIFwiU2VjdXJlXCIsXG4gICAgLy8gdGhlIHVzZXIgYWdlbnQgTVVTVCBhcHBlbmQgYW4gYXR0cmlidXRlIHRvIHRoZSBjb29raWUtYXR0cmlidXRlLWxpc3RcbiAgICAvLyB3aXRoIGFuIGF0dHJpYnV0ZS1uYW1lIG9mIFNlY3VyZSBhbmQgYW4gZW1wdHkgYXR0cmlidXRlLXZhbHVlLlxuXG4gICAgY29va2llQXR0cmlidXRlTGlzdC5zZWN1cmUgPSB0cnVlXG4gIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ2h0dHBvbmx5Jykge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjQuNlxuICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nXG4gICAgLy8gXCJIdHRwT25seVwiLCB0aGUgdXNlciBhZ2VudCBNVVNUIGFwcGVuZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGNvb2tpZS1cbiAgICAvLyBhdHRyaWJ1dGUtbGlzdCB3aXRoIGFuIGF0dHJpYnV0ZS1uYW1lIG9mIEh0dHBPbmx5IGFuZCBhbiBlbXB0eVxuICAgIC8vIGF0dHJpYnV0ZS12YWx1ZS5cblxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QuaHR0cE9ubHkgPSB0cnVlXG4gIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ3NhbWVzaXRlJykge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjQuN1xuICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nXG4gICAgLy8gXCJTYW1lU2l0ZVwiLCB0aGUgdXNlciBhZ2VudCBNVVNUIHByb2Nlc3MgdGhlIGNvb2tpZS1hdiBhcyBmb2xsb3dzOlxuXG4gICAgLy8gMS4gTGV0IGVuZm9yY2VtZW50IGJlIFwiRGVmYXVsdFwiLlxuICAgIGxldCBlbmZvcmNlbWVudCA9ICdEZWZhdWx0J1xuXG4gICAgY29uc3QgYXR0cmlidXRlVmFsdWVMb3dlcmNhc2UgPSBhdHRyaWJ1dGVWYWx1ZS50b0xvd2VyQ2FzZSgpXG4gICAgLy8gMi4gSWYgY29va2llLWF2J3MgYXR0cmlidXRlLXZhbHVlIGlzIGEgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3JcbiAgICAvLyAgICBcIk5vbmVcIiwgc2V0IGVuZm9yY2VtZW50IHRvIFwiTm9uZVwiLlxuICAgIGlmIChhdHRyaWJ1dGVWYWx1ZUxvd2VyY2FzZS5pbmNsdWRlcygnbm9uZScpKSB7XG4gICAgICBlbmZvcmNlbWVudCA9ICdOb25lJ1xuICAgIH1cblxuICAgIC8vIDMuIElmIGNvb2tpZS1hdidzIGF0dHJpYnV0ZS12YWx1ZSBpcyBhIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yXG4gICAgLy8gICAgXCJTdHJpY3RcIiwgc2V0IGVuZm9yY2VtZW50IHRvIFwiU3RyaWN0XCIuXG4gICAgaWYgKGF0dHJpYnV0ZVZhbHVlTG93ZXJjYXNlLmluY2x1ZGVzKCdzdHJpY3QnKSkge1xuICAgICAgZW5mb3JjZW1lbnQgPSAnU3RyaWN0J1xuICAgIH1cblxuICAgIC8vIDQuIElmIGNvb2tpZS1hdidzIGF0dHJpYnV0ZS12YWx1ZSBpcyBhIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yXG4gICAgLy8gICAgXCJMYXhcIiwgc2V0IGVuZm9yY2VtZW50IHRvIFwiTGF4XCIuXG4gICAgaWYgKGF0dHJpYnV0ZVZhbHVlTG93ZXJjYXNlLmluY2x1ZGVzKCdsYXgnKSkge1xuICAgICAgZW5mb3JjZW1lbnQgPSAnTGF4J1xuICAgIH1cblxuICAgIC8vIDUuIEFwcGVuZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGNvb2tpZS1hdHRyaWJ1dGUtbGlzdCB3aXRoIGFuXG4gICAgLy8gICAgYXR0cmlidXRlLW5hbWUgb2YgXCJTYW1lU2l0ZVwiIGFuZCBhbiBhdHRyaWJ1dGUtdmFsdWUgb2ZcbiAgICAvLyAgICBlbmZvcmNlbWVudC5cbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0LnNhbWVTaXRlID0gZW5mb3JjZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0LnVucGFyc2VkID8/PSBbXVxuXG4gICAgY29va2llQXR0cmlidXRlTGlzdC51bnBhcnNlZC5wdXNoKGAke2F0dHJpYnV0ZU5hbWV9PSR7YXR0cmlidXRlVmFsdWV9YClcbiAgfVxuXG4gIC8vIDguIFJldHVybiB0byBTdGVwIDEgb2YgdGhpcyBhbGdvcml0aG0uXG4gIHJldHVybiBwYXJzZVVucGFyc2VkQXR0cmlidXRlcyh1bnBhcnNlZEF0dHJpYnV0ZXMsIGNvb2tpZUF0dHJpYnV0ZUxpc3QpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwYXJzZVNldENvb2tpZSxcbiAgcGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXNcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBwYXJzZVNldENvb2tpZSB9ID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCB7IHN0cmluZ2lmeSB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBIZWFkZXJzIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9oZWFkZXJzJylcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDb29raWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWVcbiAqIEBwcm9wZXJ0eSB7RGF0ZXxudW1iZXJ8dW5kZWZpbmVkfSBleHBpcmVzXG4gKiBAcHJvcGVydHkge251bWJlcnx1bmRlZmluZWR9IG1heEFnZVxuICogQHByb3BlcnR5IHtzdHJpbmd8dW5kZWZpbmVkfSBkb21haW5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHVuZGVmaW5lZH0gcGF0aFxuICogQHByb3BlcnR5IHtib29sZWFufHVuZGVmaW5lZH0gc2VjdXJlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW58dW5kZWZpbmVkfSBodHRwT25seVxuICogQHByb3BlcnR5IHsnU3RyaWN0J3wnTGF4J3wnTm9uZSd9IHNhbWVTaXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSB1bnBhcnNlZFxuICovXG5cbi8qKlxuICogQHBhcmFtIHtIZWFkZXJzfSBoZWFkZXJzXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn1cbiAqL1xuZnVuY3Rpb24gZ2V0Q29va2llcyAoaGVhZGVycykge1xuICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnZ2V0Q29va2llcycgfSlcblxuICB3ZWJpZGwuYnJhbmRDaGVjayhoZWFkZXJzLCBIZWFkZXJzLCB7IHN0cmljdDogZmFsc2UgfSlcblxuICBjb25zdCBjb29raWUgPSBoZWFkZXJzLmdldCgnY29va2llJylcbiAgY29uc3Qgb3V0ID0ge31cblxuICBpZiAoIWNvb2tpZSkge1xuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGZvciAoY29uc3QgcGllY2Ugb2YgY29va2llLnNwbGl0KCc7JykpIHtcbiAgICBjb25zdCBbbmFtZSwgLi4udmFsdWVdID0gcGllY2Uuc3BsaXQoJz0nKVxuXG4gICAgb3V0W25hbWUudHJpbSgpXSA9IHZhbHVlLmpvaW4oJz0nKVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyc1xuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7eyBwYXRoPzogc3RyaW5nLCBkb21haW4/OiBzdHJpbmcgfXx1bmRlZmluZWR9IGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBkZWxldGVDb29raWUgKGhlYWRlcnMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ2RlbGV0ZUNvb2tpZScgfSlcblxuICB3ZWJpZGwuYnJhbmRDaGVjayhoZWFkZXJzLCBIZWFkZXJzLCB7IHN0cmljdDogZmFsc2UgfSlcblxuICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKG5hbWUpXG4gIGF0dHJpYnV0ZXMgPSB3ZWJpZGwuY29udmVydGVycy5EZWxldGVDb29raWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpXG5cbiAgLy8gTWF0Y2hlcyBiZWhhdmlvciBvZlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVub19zdGQvYmxvYi82MzgyN2IxNjMzMGI4MjQ4OWEwNDYxNDAyN2MzM2I3OTA0ZTA4YmU1L2h0dHAvY29va2llLnRzI0wyNzhcbiAgc2V0Q29va2llKGhlYWRlcnMsIHtcbiAgICBuYW1lLFxuICAgIHZhbHVlOiAnJyxcbiAgICBleHBpcmVzOiBuZXcgRGF0ZSgwKSxcbiAgICAuLi5hdHRyaWJ1dGVzXG4gIH0pXG59XG5cbi8qKlxuICogQHBhcmFtIHtIZWFkZXJzfSBoZWFkZXJzXG4gKiBAcmV0dXJucyB7Q29va2llW119XG4gKi9cbmZ1bmN0aW9uIGdldFNldENvb2tpZXMgKGhlYWRlcnMpIHtcbiAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ2dldFNldENvb2tpZXMnIH0pXG5cbiAgd2ViaWRsLmJyYW5kQ2hlY2soaGVhZGVycywgSGVhZGVycywgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgY29uc3QgY29va2llcyA9IGhlYWRlcnMuZ2V0U2V0Q29va2llKClcblxuICBpZiAoIWNvb2tpZXMpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiBjb29raWVzLm1hcCgocGFpcikgPT4gcGFyc2VTZXRDb29raWUocGFpcikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtIZWFkZXJzfSBoZWFkZXJzXG4gKiBAcGFyYW0ge0Nvb2tpZX0gY29va2llXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gc2V0Q29va2llIChoZWFkZXJzLCBjb29raWUpIHtcbiAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ3NldENvb2tpZScgfSlcblxuICB3ZWJpZGwuYnJhbmRDaGVjayhoZWFkZXJzLCBIZWFkZXJzLCB7IHN0cmljdDogZmFsc2UgfSlcblxuICBjb29raWUgPSB3ZWJpZGwuY29udmVydGVycy5Db29raWUoY29va2llKVxuXG4gIGNvbnN0IHN0ciA9IHN0cmluZ2lmeShjb29raWUpXG5cbiAgaWYgKHN0cikge1xuICAgIGhlYWRlcnMuYXBwZW5kKCdTZXQtQ29va2llJywgc3RyaW5naWZ5KGNvb2tpZSkpXG4gIH1cbn1cblxud2ViaWRsLmNvbnZlcnRlcnMuRGVsZXRlQ29va2llQXR0cmlidXRlcyA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyksXG4gICAga2V5OiAncGF0aCcsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcih3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcpLFxuICAgIGtleTogJ2RvbWFpbicsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH1cbl0pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLkNvb2tpZSA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIGtleTogJ25hbWUnXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICBrZXk6ICd2YWx1ZSdcbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBsb25nIGxvbmcnXSh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKVxuICAgIH0pLFxuICAgIGtleTogJ2V4cGlyZXMnLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnNbJ2xvbmcgbG9uZyddKSxcbiAgICBrZXk6ICdtYXhBZ2UnLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKSxcbiAgICBrZXk6ICdkb21haW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKSxcbiAgICBrZXk6ICdwYXRoJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGxcbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4pLFxuICAgIGtleTogJ3NlY3VyZScsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcih3ZWJpZGwuY29udmVydGVycy5ib29sZWFuKSxcbiAgICBrZXk6ICdodHRwT25seScsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyxcbiAgICBrZXk6ICdzYW1lU2l0ZScsXG4gICAgYWxsb3dlZFZhbHVlczogWydTdHJpY3QnLCAnTGF4JywgJ05vbmUnXVxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwuc2VxdWVuY2VDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKSxcbiAgICBrZXk6ICd1bnBhcnNlZCcsXG4gICAgZGVmYXVsdFZhbHVlOiBbXVxuICB9XG5dKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29va2llcyxcbiAgZGVsZXRlQ29va2llLFxuICBnZXRTZXRDb29raWVzLFxuICBzZXRDb29raWVcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLy8gVGhpcyBpcyBhIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIHVuaXF1ZSB1c2VkXG4vLyB0byB2YWxpZGF0ZSB0aGF0IHRoZSBlbmRwb2ludCBhY2NlcHRzIHdlYnNvY2tldFxuLy8gY29ubmVjdGlvbnMuXG4vLyBTZWUgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY0NTUuaHRtbCNzZWN0aW9uLTEuM1xuY29uc3QgdWlkID0gJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMSdcblxuLyoqIEB0eXBlIHtQcm9wZXJ0eURlc2NyaXB0b3J9ICovXG5jb25zdCBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzID0ge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogZmFsc2UsXG4gIGNvbmZpZ3VyYWJsZTogZmFsc2Vcbn1cblxuY29uc3Qgc3RhdGVzID0ge1xuICBDT05ORUNUSU5HOiAwLFxuICBPUEVOOiAxLFxuICBDTE9TSU5HOiAyLFxuICBDTE9TRUQ6IDNcbn1cblxuY29uc3Qgb3Bjb2RlcyA9IHtcbiAgQ09OVElOVUFUSU9OOiAweDAsXG4gIFRFWFQ6IDB4MSxcbiAgQklOQVJZOiAweDIsXG4gIENMT1NFOiAweDgsXG4gIFBJTkc6IDB4OSxcbiAgUE9ORzogMHhBXG59XG5cbmNvbnN0IG1heFVuc2lnbmVkMTZCaXQgPSAyICoqIDE2IC0gMSAvLyA2NTUzNVxuXG5jb25zdCBwYXJzZXJTdGF0ZXMgPSB7XG4gIElORk86IDAsXG4gIFBBWUxPQURMRU5HVEhfMTY6IDIsXG4gIFBBWUxPQURMRU5HVEhfNjQ6IDMsXG4gIFJFQURfREFUQTogNFxufVxuXG5jb25zdCBlbXB0eUJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdWlkLFxuICBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBzdGF0ZXMsXG4gIG9wY29kZXMsXG4gIG1heFVuc2lnbmVkMTZCaXQsXG4gIHBhcnNlclN0YXRlcyxcbiAgZW1wdHlCdWZmZXJcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtXZWJTb2NrZXRVUkw6IFN5bWJvbCgndXJsJyksXG4gIGtSZWFkeVN0YXRlOiBTeW1ib2woJ3JlYWR5IHN0YXRlJyksXG4gIGtDb250cm9sbGVyOiBTeW1ib2woJ2NvbnRyb2xsZXInKSxcbiAga1Jlc3BvbnNlOiBTeW1ib2woJ3Jlc3BvbnNlJyksXG4gIGtCaW5hcnlUeXBlOiBTeW1ib2woJ2JpbmFyeSB0eXBlJyksXG4gIGtTZW50Q2xvc2U6IFN5bWJvbCgnc2VudCBjbG9zZScpLFxuICBrUmVjZWl2ZWRDbG9zZTogU3ltYm9sKCdyZWNlaXZlZCBjbG9zZScpLFxuICBrQnl0ZVBhcnNlcjogU3ltYm9sKCdieXRlIHBhcnNlcicpXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBNZXNzYWdlUG9ydCB9ID0gcmVxdWlyZSgnd29ya2VyX3RocmVhZHMnKVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY29tbXMuaHRtbCNtZXNzYWdlZXZlbnRcbiAqL1xuY2xhc3MgTWVzc2FnZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICAjZXZlbnRJbml0XG5cbiAgY29uc3RydWN0b3IgKHR5cGUsIGV2ZW50SW5pdERpY3QgPSB7fSkge1xuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdNZXNzYWdlRXZlbnQgY29uc3RydWN0b3InIH0pXG5cbiAgICB0eXBlID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKHR5cGUpXG4gICAgZXZlbnRJbml0RGljdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLk1lc3NhZ2VFdmVudEluaXQoZXZlbnRJbml0RGljdClcblxuICAgIHN1cGVyKHR5cGUsIGV2ZW50SW5pdERpY3QpXG5cbiAgICB0aGlzLiNldmVudEluaXQgPSBldmVudEluaXREaWN0XG4gIH1cblxuICBnZXQgZGF0YSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5kYXRhXG4gIH1cblxuICBnZXQgb3JpZ2luICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBNZXNzYWdlRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0Lm9yaWdpblxuICB9XG5cbiAgZ2V0IGxhc3RFdmVudElkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBNZXNzYWdlRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0Lmxhc3RFdmVudElkXG4gIH1cblxuICBnZXQgc291cmNlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBNZXNzYWdlRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0LnNvdXJjZVxuICB9XG5cbiAgZ2V0IHBvcnRzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBNZXNzYWdlRXZlbnQpXG5cbiAgICBpZiAoIU9iamVjdC5pc0Zyb3plbih0aGlzLiNldmVudEluaXQucG9ydHMpKSB7XG4gICAgICBPYmplY3QuZnJlZXplKHRoaXMuI2V2ZW50SW5pdC5wb3J0cylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0LnBvcnRzXG4gIH1cblxuICBpbml0TWVzc2FnZUV2ZW50IChcbiAgICB0eXBlLFxuICAgIGJ1YmJsZXMgPSBmYWxzZSxcbiAgICBjYW5jZWxhYmxlID0gZmFsc2UsXG4gICAgZGF0YSA9IG51bGwsXG4gICAgb3JpZ2luID0gJycsXG4gICAgbGFzdEV2ZW50SWQgPSAnJyxcbiAgICBzb3VyY2UgPSBudWxsLFxuICAgIHBvcnRzID0gW11cbiAgKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ01lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2ZW50JyB9KVxuXG4gICAgcmV0dXJuIG5ldyBNZXNzYWdlRXZlbnQodHlwZSwge1xuICAgICAgYnViYmxlcywgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0c1xuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI3RoZS1jbG9zZWV2ZW50LWludGVyZmFjZVxuICovXG5jbGFzcyBDbG9zZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICAjZXZlbnRJbml0XG5cbiAgY29uc3RydWN0b3IgKHR5cGUsIGV2ZW50SW5pdERpY3QgPSB7fSkge1xuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDbG9zZUV2ZW50IGNvbnN0cnVjdG9yJyB9KVxuXG4gICAgdHlwZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyh0eXBlKVxuICAgIGV2ZW50SW5pdERpY3QgPSB3ZWJpZGwuY29udmVydGVycy5DbG9zZUV2ZW50SW5pdChldmVudEluaXREaWN0KVxuXG4gICAgc3VwZXIodHlwZSwgZXZlbnRJbml0RGljdClcblxuICAgIHRoaXMuI2V2ZW50SW5pdCA9IGV2ZW50SW5pdERpY3RcbiAgfVxuXG4gIGdldCB3YXNDbGVhbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2xvc2VFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQud2FzQ2xlYW5cbiAgfVxuXG4gIGdldCBjb2RlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDbG9zZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5jb2RlXG4gIH1cblxuICBnZXQgcmVhc29uICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDbG9zZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5yZWFzb25cbiAgfVxufVxuXG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjdGhlLWVycm9yZXZlbnQtaW50ZXJmYWNlXG5jbGFzcyBFcnJvckV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICAjZXZlbnRJbml0XG5cbiAgY29uc3RydWN0b3IgKHR5cGUsIGV2ZW50SW5pdERpY3QpIHtcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRXJyb3JFdmVudCBjb25zdHJ1Y3RvcicgfSlcblxuICAgIHN1cGVyKHR5cGUsIGV2ZW50SW5pdERpY3QpXG5cbiAgICB0eXBlID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKHR5cGUpXG4gICAgZXZlbnRJbml0RGljdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLkVycm9yRXZlbnRJbml0KGV2ZW50SW5pdERpY3QgPz8ge30pXG5cbiAgICB0aGlzLiNldmVudEluaXQgPSBldmVudEluaXREaWN0XG4gIH1cblxuICBnZXQgbWVzc2FnZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRXJyb3JFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQubWVzc2FnZVxuICB9XG5cbiAgZ2V0IGZpbGVuYW1lICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBFcnJvckV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5maWxlbmFtZVxuICB9XG5cbiAgZ2V0IGxpbmVubyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRXJyb3JFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQubGluZW5vXG4gIH1cblxuICBnZXQgY29sbm8gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEVycm9yRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0LmNvbG5vXG4gIH1cblxuICBnZXQgZXJyb3IgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEVycm9yRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0LmVycm9yXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTWVzc2FnZUV2ZW50LnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnTWVzc2FnZUV2ZW50JyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgZGF0YToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb3JpZ2luOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBsYXN0RXZlbnRJZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgc291cmNlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBwb3J0czoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgaW5pdE1lc3NhZ2VFdmVudDoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ2xvc2VFdmVudC5wcm90b3R5cGUsIHtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ0Nsb3NlRXZlbnQnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9LFxuICByZWFzb246IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGNvZGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHdhc0NsZWFuOiBrRW51bWVyYWJsZVByb3BlcnR5XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhFcnJvckV2ZW50LnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnRXJyb3JFdmVudCcsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0sXG4gIG1lc3NhZ2U6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGZpbGVuYW1lOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBsaW5lbm86IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGNvbG5vOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBlcnJvcjoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxud2ViaWRsLmNvbnZlcnRlcnMuTWVzc2FnZVBvcnQgPSB3ZWJpZGwuaW50ZXJmYWNlQ29udmVydGVyKE1lc3NhZ2VQb3J0KVxuXG53ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8TWVzc2FnZVBvcnQ+J10gPSB3ZWJpZGwuc2VxdWVuY2VDb252ZXJ0ZXIoXG4gIHdlYmlkbC5jb252ZXJ0ZXJzLk1lc3NhZ2VQb3J0XG4pXG5cbmNvbnN0IGV2ZW50SW5pdCA9IFtcbiAge1xuICAgIGtleTogJ2J1YmJsZXMnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdjYW5jZWxhYmxlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnY29tcG9zZWQnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH1cbl1cblxud2ViaWRsLmNvbnZlcnRlcnMuTWVzc2FnZUV2ZW50SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAgLi4uZXZlbnRJbml0LFxuICB7XG4gICAga2V5OiAnZGF0YScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5hbnksXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdvcmlnaW4nLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogJydcbiAgfSxcbiAge1xuICAgIGtleTogJ2xhc3RFdmVudElkJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdzb3VyY2UnLFxuICAgIC8vIE5vZGUgZG9lc24ndCBpbXBsZW1lbnQgV2luZG93UHJveHkgb3IgU2VydmljZVdvcmtlciwgc28gdGhlIG9ubHlcbiAgICAvLyB2YWxpZCB2YWx1ZSBmb3Igc291cmNlIGlzIGEgTWVzc2FnZVBvcnQuXG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuTWVzc2FnZVBvcnQpLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAga2V5OiAncG9ydHMnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPE1lc3NhZ2VQb3J0PiddLFxuICAgIGdldCBkZWZhdWx0VmFsdWUgKCkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICB9XG5dKVxuXG53ZWJpZGwuY29udmVydGVycy5DbG9zZUV2ZW50SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAgLi4uZXZlbnRJbml0LFxuICB7XG4gICAga2V5OiAnd2FzQ2xlYW4nLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdjb2RlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBzaG9ydCddLFxuICAgIGRlZmF1bHRWYWx1ZTogMFxuICB9LFxuICB7XG4gICAga2V5OiAncmVhc29uJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnXG4gIH1cbl0pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLkVycm9yRXZlbnRJbml0ID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoW1xuICAuLi5ldmVudEluaXQsXG4gIHtcbiAgICBrZXk6ICdtZXNzYWdlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdmaWxlbmFtZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiAnJ1xuICB9LFxuICB7XG4gICAga2V5OiAnbGluZW5vJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBsb25nJ10sXG4gICAgZGVmYXVsdFZhbHVlOiAwXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdjb2xubycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgbG9uZyddLFxuICAgIGRlZmF1bHRWYWx1ZTogMFxuICB9LFxuICB7XG4gICAga2V5OiAnZXJyb3InLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYW55XG4gIH1cbl0pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNZXNzYWdlRXZlbnQsXG4gIENsb3NlRXZlbnQsXG4gIEVycm9yRXZlbnRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBrUmVhZHlTdGF0ZSwga0NvbnRyb2xsZXIsIGtSZXNwb25zZSwga0JpbmFyeVR5cGUsIGtXZWJTb2NrZXRVUkwgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IHN0YXRlcywgb3Bjb2RlcyB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBNZXNzYWdlRXZlbnQsIEVycm9yRXZlbnQgfSA9IHJlcXVpcmUoJy4vZXZlbnRzJylcblxuLyogZ2xvYmFscyBCbG9iICovXG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vd2Vic29ja2V0JykuV2ViU29ja2V0fSB3c1xuICovXG5mdW5jdGlvbiBpc0VzdGFibGlzaGVkICh3cykge1xuICAvLyBJZiB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgaXMgdmFsaWRhdGVkIGFzIHByb3ZpZGVkIGZvciBhYm92ZSwgaXQgaXNcbiAgLy8gc2FpZCB0aGF0IF9UaGUgV2ViU29ja2V0IENvbm5lY3Rpb24gaXMgRXN0YWJsaXNoZWRfIGFuZCB0aGF0IHRoZVxuICAvLyBXZWJTb2NrZXQgQ29ubmVjdGlvbiBpcyBpbiB0aGUgT1BFTiBzdGF0ZS5cbiAgcmV0dXJuIHdzW2tSZWFkeVN0YXRlXSA9PT0gc3RhdGVzLk9QRU5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi93ZWJzb2NrZXQnKS5XZWJTb2NrZXR9IHdzXG4gKi9cbmZ1bmN0aW9uIGlzQ2xvc2luZyAod3MpIHtcbiAgLy8gVXBvbiBlaXRoZXIgc2VuZGluZyBvciByZWNlaXZpbmcgYSBDbG9zZSBjb250cm9sIGZyYW1lLCBpdCBpcyBzYWlkXG4gIC8vIHRoYXQgX1RoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5kc2hha2UgaXMgU3RhcnRlZF8gYW5kIHRoYXQgdGhlXG4gIC8vIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGluIHRoZSBDTE9TSU5HIHN0YXRlLlxuICByZXR1cm4gd3Nba1JlYWR5U3RhdGVdID09PSBzdGF0ZXMuQ0xPU0lOR1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3dlYnNvY2tldCcpLldlYlNvY2tldH0gd3NcbiAqL1xuZnVuY3Rpb24gaXNDbG9zZWQgKHdzKSB7XG4gIHJldHVybiB3c1trUmVhZHlTdGF0ZV0gPT09IHN0YXRlcy5DTE9TRURcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ldmVudC1maXJlXG4gKiBAcGFyYW0ge3N0cmluZ30gZVxuICogQHBhcmFtIHtFdmVudFRhcmdldH0gdGFyZ2V0XG4gKiBAcGFyYW0ge0V2ZW50SW5pdCB8IHVuZGVmaW5lZH0gZXZlbnRJbml0RGljdFxuICovXG5mdW5jdGlvbiBmaXJlRXZlbnQgKGUsIHRhcmdldCwgZXZlbnRDb25zdHJ1Y3RvciA9IEV2ZW50LCBldmVudEluaXREaWN0KSB7XG4gIC8vIDEuIElmIGV2ZW50Q29uc3RydWN0b3IgaXMgbm90IGdpdmVuLCB0aGVuIGxldCBldmVudENvbnN0cnVjdG9yIGJlIEV2ZW50LlxuXG4gIC8vIDIuIExldCBldmVudCBiZSB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGFuIGV2ZW50IGdpdmVuIGV2ZW50Q29uc3RydWN0b3IsXG4gIC8vICAgIGluIHRoZSByZWxldmFudCByZWFsbSBvZiB0YXJnZXQuXG4gIC8vIDMuIEluaXRpYWxpemUgZXZlbnRcdTIwMTlzIHR5cGUgYXR0cmlidXRlIHRvIGUuXG4gIGNvbnN0IGV2ZW50ID0gbmV3IGV2ZW50Q29uc3RydWN0b3IoZSwgZXZlbnRJbml0RGljdCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cbiAgLy8gNC4gSW5pdGlhbGl6ZSBhbnkgb3RoZXIgSURMIGF0dHJpYnV0ZXMgb2YgZXZlbnQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAvLyAgICBpbnZvY2F0aW9uIG9mIHRoaXMgYWxnb3JpdGhtLlxuXG4gIC8vIDUuIFJldHVybiB0aGUgcmVzdWx0IG9mIGRpc3BhdGNoaW5nIGV2ZW50IGF0IHRhcmdldCwgd2l0aCBsZWdhY3kgdGFyZ2V0XG4gIC8vICAgIG92ZXJyaWRlIGZsYWcgc2V0IGlmIHNldC5cbiAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNmZWVkYmFjay1mcm9tLXRoZS1wcm90b2NvbFxuICogQHBhcmFtIHtpbXBvcnQoJy4vd2Vic29ja2V0JykuV2ViU29ja2V0fSB3c1xuICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgT3Bjb2RlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSBhcHBsaWNhdGlvbiBkYXRhXG4gKi9cbmZ1bmN0aW9uIHdlYnNvY2tldE1lc3NhZ2VSZWNlaXZlZCAod3MsIHR5cGUsIGRhdGEpIHtcbiAgLy8gMS4gSWYgcmVhZHkgc3RhdGUgaXMgbm90IE9QRU4gKDEpLCB0aGVuIHJldHVybi5cbiAgaWYgKHdzW2tSZWFkeVN0YXRlXSAhPT0gc3RhdGVzLk9QRU4pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDIuIExldCBkYXRhRm9yRXZlbnQgYmUgZGV0ZXJtaW5lZCBieSBzd2l0Y2hpbmcgb24gdHlwZSBhbmQgYmluYXJ5IHR5cGU6XG4gIGxldCBkYXRhRm9yRXZlbnRcblxuICBpZiAodHlwZSA9PT0gb3Bjb2Rlcy5URVhUKSB7XG4gICAgLy8gLT4gdHlwZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSBpcyBUZXh0XG4gICAgLy8gICAgICBhIG5ldyBET01TdHJpbmcgY29udGFpbmluZyBkYXRhXG4gICAgdHJ5IHtcbiAgICAgIGRhdGFGb3JFdmVudCA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnLCB7IGZhdGFsOiB0cnVlIH0pLmRlY29kZShkYXRhKVxuICAgIH0gY2F0Y2gge1xuICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdSZWNlaXZlZCBpbnZhbGlkIFVURi04IGluIHRleHQgZnJhbWUuJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSBvcGNvZGVzLkJJTkFSWSkge1xuICAgIGlmICh3c1trQmluYXJ5VHlwZV0gPT09ICdibG9iJykge1xuICAgICAgLy8gLT4gdHlwZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSBpcyBCaW5hcnkgYW5kIGJpbmFyeSB0eXBlIGlzIFwiYmxvYlwiXG4gICAgICAvLyAgICAgIGEgbmV3IEJsb2Igb2JqZWN0LCBjcmVhdGVkIGluIHRoZSByZWxldmFudCBSZWFsbSBvZiB0aGUgV2ViU29ja2V0XG4gICAgICAvLyAgICAgIG9iamVjdCwgdGhhdCByZXByZXNlbnRzIGRhdGEgYXMgaXRzIHJhdyBkYXRhXG4gICAgICBkYXRhRm9yRXZlbnQgPSBuZXcgQmxvYihbZGF0YV0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIC0+IHR5cGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgaXMgQmluYXJ5IGFuZCBiaW5hcnkgdHlwZSBpcyBcImFycmF5YnVmZmVyXCJcbiAgICAgIC8vICAgICAgYSBuZXcgQXJyYXlCdWZmZXIgb2JqZWN0LCBjcmVhdGVkIGluIHRoZSByZWxldmFudCBSZWFsbSBvZiB0aGVcbiAgICAgIC8vICAgICAgV2ViU29ja2V0IG9iamVjdCwgd2hvc2UgY29udGVudHMgYXJlIGRhdGFcbiAgICAgIGRhdGFGb3JFdmVudCA9IG5ldyBVaW50OEFycmF5KGRhdGEpLmJ1ZmZlclxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIEZpcmUgYW4gZXZlbnQgbmFtZWQgbWVzc2FnZSBhdCB0aGUgV2ViU29ja2V0IG9iamVjdCwgdXNpbmcgTWVzc2FnZUV2ZW50LFxuICAvLyAgICB3aXRoIHRoZSBvcmlnaW4gYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSBXZWJTb2NrZXRcbiAgLy8gICAgb2JqZWN0XHUyMDE5cyB1cmwncyBvcmlnaW4sIGFuZCB0aGUgZGF0YSBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gZGF0YUZvckV2ZW50LlxuICBmaXJlRXZlbnQoJ21lc3NhZ2UnLCB3cywgTWVzc2FnZUV2ZW50LCB7XG4gICAgb3JpZ2luOiB3c1trV2ViU29ja2V0VVJMXS5vcmlnaW4sXG4gICAgZGF0YTogZGF0YUZvckV2ZW50XG4gIH0pXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY0NTVcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMyNjE2XG4gKiBAc2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM5ODQwN1xuICogQHBhcmFtIHtzdHJpbmd9IHByb3RvY29sXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRTdWJwcm90b2NvbCAocHJvdG9jb2wpIHtcbiAgLy8gSWYgcHJlc2VudCwgdGhpcyB2YWx1ZSBpbmRpY2F0ZXMgb25lXG4gIC8vIG9yIG1vcmUgY29tbWEtc2VwYXJhdGVkIHN1YnByb3RvY29sIHRoZSBjbGllbnQgd2lzaGVzIHRvIHNwZWFrLFxuICAvLyBvcmRlcmVkIGJ5IHByZWZlcmVuY2UuICBUaGUgZWxlbWVudHMgdGhhdCBjb21wcmlzZSB0aGlzIHZhbHVlXG4gIC8vIE1VU1QgYmUgbm9uLWVtcHR5IHN0cmluZ3Mgd2l0aCBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzAwMjEgdG9cbiAgLy8gVSswMDdFIG5vdCBpbmNsdWRpbmcgc2VwYXJhdG9yIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBpblxuICAvLyBbUkZDMjYxNl0gYW5kIE1VU1QgYWxsIGJlIHVuaXF1ZSBzdHJpbmdzLlxuICBpZiAocHJvdG9jb2wubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IGNoYXIgb2YgcHJvdG9jb2wpIHtcbiAgICBjb25zdCBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG5cbiAgICBpZiAoXG4gICAgICBjb2RlIDwgMHgyMSB8fFxuICAgICAgY29kZSA+IDB4N0UgfHxcbiAgICAgIGNoYXIgPT09ICcoJyB8fFxuICAgICAgY2hhciA9PT0gJyknIHx8XG4gICAgICBjaGFyID09PSAnPCcgfHxcbiAgICAgIGNoYXIgPT09ICc+JyB8fFxuICAgICAgY2hhciA9PT0gJ0AnIHx8XG4gICAgICBjaGFyID09PSAnLCcgfHxcbiAgICAgIGNoYXIgPT09ICc7JyB8fFxuICAgICAgY2hhciA9PT0gJzonIHx8XG4gICAgICBjaGFyID09PSAnXFxcXCcgfHxcbiAgICAgIGNoYXIgPT09ICdcIicgfHxcbiAgICAgIGNoYXIgPT09ICcvJyB8fFxuICAgICAgY2hhciA9PT0gJ1snIHx8XG4gICAgICBjaGFyID09PSAnXScgfHxcbiAgICAgIGNoYXIgPT09ICc/JyB8fFxuICAgICAgY2hhciA9PT0gJz0nIHx8XG4gICAgICBjaGFyID09PSAneycgfHxcbiAgICAgIGNoYXIgPT09ICd9JyB8fFxuICAgICAgY29kZSA9PT0gMzIgfHwgLy8gU1BcbiAgICAgIGNvZGUgPT09IDkgLy8gSFRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY0NTUjc2VjdGlvbi03LTRcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRTdGF0dXNDb2RlIChjb2RlKSB7XG4gIGlmIChjb2RlID49IDEwMDAgJiYgY29kZSA8IDEwMTUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY29kZSAhPT0gMTAwNCAmJiAvLyByZXNlcnZlZFxuICAgICAgY29kZSAhPT0gMTAwNSAmJiAvLyBcIk1VU1QgTk9UIGJlIHNldCBhcyBhIHN0YXR1cyBjb2RlXCJcbiAgICAgIGNvZGUgIT09IDEwMDYgLy8gXCJNVVNUIE5PVCBiZSBzZXQgYXMgYSBzdGF0dXMgY29kZVwiXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi93ZWJzb2NrZXQnKS5XZWJTb2NrZXR9IHdzXG4gKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IHJlYXNvblxuICovXG5mdW5jdGlvbiBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbiAod3MsIHJlYXNvbikge1xuICBjb25zdCB7IFtrQ29udHJvbGxlcl06IGNvbnRyb2xsZXIsIFtrUmVzcG9uc2VdOiByZXNwb25zZSB9ID0gd3NcblxuICBjb250cm9sbGVyLmFib3J0KClcblxuICBpZiAocmVzcG9uc2U/LnNvY2tldCAmJiAhcmVzcG9uc2Uuc29ja2V0LmRlc3Ryb3llZCkge1xuICAgIHJlc3BvbnNlLnNvY2tldC5kZXN0cm95KClcbiAgfVxuXG4gIGlmIChyZWFzb24pIHtcbiAgICBmaXJlRXZlbnQoJ2Vycm9yJywgd3MsIEVycm9yRXZlbnQsIHtcbiAgICAgIGVycm9yOiBuZXcgRXJyb3IocmVhc29uKVxuICAgIH0pXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzRXN0YWJsaXNoZWQsXG4gIGlzQ2xvc2luZyxcbiAgaXNDbG9zZWQsXG4gIGZpcmVFdmVudCxcbiAgaXNWYWxpZFN1YnByb3RvY29sLFxuICBpc1ZhbGlkU3RhdHVzQ29kZSxcbiAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24sXG4gIHdlYnNvY2tldE1lc3NhZ2VSZWNlaXZlZFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBkaWFnbm9zdGljc0NoYW5uZWwgPSByZXF1aXJlKCdkaWFnbm9zdGljc19jaGFubmVsJylcbmNvbnN0IHsgdWlkLCBzdGF0ZXMgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHtcbiAga1JlYWR5U3RhdGUsXG4gIGtTZW50Q2xvc2UsXG4gIGtCeXRlUGFyc2VyLFxuICBrUmVjZWl2ZWRDbG9zZVxufSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IGZpcmVFdmVudCwgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24gfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IENsb3NlRXZlbnQgfSA9IHJlcXVpcmUoJy4vZXZlbnRzJylcbmNvbnN0IHsgbWFrZVJlcXVlc3QgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3JlcXVlc3QnKVxuY29uc3QgeyBmZXRjaGluZyB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvaW5kZXgnKVxuY29uc3QgeyBIZWFkZXJzIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9oZWFkZXJzJylcbmNvbnN0IHsgZ2V0R2xvYmFsRGlzcGF0Y2hlciB9ID0gcmVxdWlyZSgnLi4vZ2xvYmFsJylcbmNvbnN0IHsga0hlYWRlcnNMaXN0IH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuXG5jb25zdCBjaGFubmVscyA9IHt9XG5jaGFubmVscy5vcGVuID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTp3ZWJzb2NrZXQ6b3BlbicpXG5jaGFubmVscy5jbG9zZSA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6d2Vic29ja2V0OmNsb3NlJylcbmNoYW5uZWxzLnNvY2tldEVycm9yID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTp3ZWJzb2NrZXQ6c29ja2V0X2Vycm9yJylcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ2NyeXB0bycpfSAqL1xubGV0IGNyeXB0b1xudHJ5IHtcbiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJylcbn0gY2F0Y2gge1xuXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXdlYnNvY2tldC1lc3RhYmxpc2hcbiAqIEBwYXJhbSB7VVJMfSB1cmxcbiAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBwcm90b2NvbHNcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3dlYnNvY2tldCcpLldlYlNvY2tldH0gd3NcbiAqIEBwYXJhbSB7KHJlc3BvbnNlOiBhbnkpID0+IHZvaWR9IG9uRXN0YWJsaXNoXG4gKiBAcGFyYW0ge1BhcnRpYWw8aW1wb3J0KCcuLi8uLi90eXBlcy93ZWJzb2NrZXQnKS5XZWJTb2NrZXRJbml0Pn0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBlc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0aW9uICh1cmwsIHByb3RvY29scywgd3MsIG9uRXN0YWJsaXNoLCBvcHRpb25zKSB7XG4gIC8vIDEuIExldCByZXF1ZXN0VVJMIGJlIGEgY29weSBvZiB1cmwsIHdpdGggaXRzIHNjaGVtZSBzZXQgdG8gXCJodHRwXCIsIGlmIHVybFx1MjAxOXNcbiAgLy8gICAgc2NoZW1lIGlzIFwid3NcIiwgYW5kIHRvIFwiaHR0cHNcIiBvdGhlcndpc2UuXG4gIGNvbnN0IHJlcXVlc3RVUkwgPSB1cmxcblxuICByZXF1ZXN0VVJMLnByb3RvY29sID0gdXJsLnByb3RvY29sID09PSAnd3M6JyA/ICdodHRwOicgOiAnaHR0cHM6J1xuXG4gIC8vIDIuIExldCByZXF1ZXN0IGJlIGEgbmV3IHJlcXVlc3QsIHdob3NlIFVSTCBpcyByZXF1ZXN0VVJMLCBjbGllbnQgaXMgY2xpZW50LFxuICAvLyAgICBzZXJ2aWNlLXdvcmtlcnMgbW9kZSBpcyBcIm5vbmVcIiwgcmVmZXJyZXIgaXMgXCJuby1yZWZlcnJlclwiLCBtb2RlIGlzXG4gIC8vICAgIFwid2Vic29ja2V0XCIsIGNyZWRlbnRpYWxzIG1vZGUgaXMgXCJpbmNsdWRlXCIsIGNhY2hlIG1vZGUgaXMgXCJuby1zdG9yZVwiICxcbiAgLy8gICAgYW5kIHJlZGlyZWN0IG1vZGUgaXMgXCJlcnJvclwiLlxuICBjb25zdCByZXF1ZXN0ID0gbWFrZVJlcXVlc3Qoe1xuICAgIHVybExpc3Q6IFtyZXF1ZXN0VVJMXSxcbiAgICBzZXJ2aWNlV29ya2VyczogJ25vbmUnLFxuICAgIHJlZmVycmVyOiAnbm8tcmVmZXJyZXInLFxuICAgIG1vZGU6ICd3ZWJzb2NrZXQnLFxuICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgY2FjaGU6ICduby1zdG9yZScsXG4gICAgcmVkaXJlY3Q6ICdlcnJvcidcbiAgfSlcblxuICAvLyBOb3RlOiB1bmRpY2kgZXh0ZW5zaW9uLCBhbGxvdyBzZXR0aW5nIGN1c3RvbSBoZWFkZXJzLlxuICBpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgY29uc3QgaGVhZGVyc0xpc3QgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpW2tIZWFkZXJzTGlzdF1cblxuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QgPSBoZWFkZXJzTGlzdFxuICB9XG5cbiAgLy8gMy4gQXBwZW5kIChgVXBncmFkZWAsIGB3ZWJzb2NrZXRgKSB0byByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgLy8gNC4gQXBwZW5kIChgQ29ubmVjdGlvbmAsIGBVcGdyYWRlYCkgdG8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIC8vIE5vdGU6IGJvdGggb2YgdGhlc2UgYXJlIGhhbmRsZWQgYnkgdW5kaWNpIGN1cnJlbnRseS5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvYmxvYi82OGMyNjljNDE0NGM0NDZmM2YxMjIwOTUxMzM4ZGFlZjRhNmI1ZWM0L2xpYi9jbGllbnQuanMjTDEzOTdcblxuICAvLyA1LiBMZXQga2V5VmFsdWUgYmUgYSBub25jZSBjb25zaXN0aW5nIG9mIGEgcmFuZG9tbHkgc2VsZWN0ZWRcbiAgLy8gICAgMTYtYnl0ZSB2YWx1ZSB0aGF0IGhhcyBiZWVuIGZvcmdpdmluZy1iYXNlNjQtZW5jb2RlZCBhbmRcbiAgLy8gICAgaXNvbW9ycGhpYyBlbmNvZGVkLlxuICBjb25zdCBrZXlWYWx1ZSA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2Jhc2U2NCcpXG5cbiAgLy8gNi4gQXBwZW5kIChgU2VjLVdlYlNvY2tldC1LZXlgLCBrZXlWYWx1ZSkgdG8gcmVxdWVzdFx1MjAxOXNcbiAgLy8gICAgaGVhZGVyIGxpc3QuXG4gIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdzZWMtd2Vic29ja2V0LWtleScsIGtleVZhbHVlKVxuXG4gIC8vIDcuIEFwcGVuZCAoYFNlYy1XZWJTb2NrZXQtVmVyc2lvbmAsIGAxM2ApIHRvIHJlcXVlc3RcdTIwMTlzXG4gIC8vICAgIGhlYWRlciBsaXN0LlxuICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnc2VjLXdlYnNvY2tldC12ZXJzaW9uJywgJzEzJylcblxuICAvLyA4LiBGb3IgZWFjaCBwcm90b2NvbCBpbiBwcm90b2NvbHMsIGNvbWJpbmVcbiAgLy8gICAgKGBTZWMtV2ViU29ja2V0LVByb3RvY29sYCwgcHJvdG9jb2wpIGluIHJlcXVlc3RcdTIwMTlzIGhlYWRlclxuICAvLyAgICBsaXN0LlxuICBmb3IgKGNvbnN0IHByb3RvY29sIG9mIHByb3RvY29scykge1xuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdzZWMtd2Vic29ja2V0LXByb3RvY29sJywgcHJvdG9jb2wpXG4gIH1cblxuICAvLyA5LiBMZXQgcGVybWVzc2FnZURlZmxhdGUgYmUgYSB1c2VyLWFnZW50IGRlZmluZWRcbiAgLy8gICAgXCJwZXJtZXNzYWdlLWRlZmxhdGVcIiBleHRlbnNpb24gaGVhZGVyIHZhbHVlLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvYmxvYi9jZTc4MjM0ZjVlNjUzYTVkMzkxNjgxM2ZmOTkwZjA1MzUxMDIyN2JjL25ldHdlcmsvcHJvdG9jb2wvd2Vic29ja2V0L1dlYlNvY2tldENoYW5uZWwuY3BwI0wyNjczXG4gIC8vIFRPRE86IGVuYWJsZSBvbmNlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBpcyBzdXBwb3J0ZWRcbiAgY29uc3QgcGVybWVzc2FnZURlZmxhdGUgPSAnJyAvLyAncGVybWVzc2FnZS1kZWZsYXRlOyAxNSdcblxuICAvLyAxMC4gQXBwZW5kIChgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zYCwgcGVybWVzc2FnZURlZmxhdGUpIHRvXG4gIC8vICAgICByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgLy8gcmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ3NlYy13ZWJzb2NrZXQtZXh0ZW5zaW9ucycsIHBlcm1lc3NhZ2VEZWZsYXRlKVxuXG4gIC8vIDExLiBGZXRjaCByZXF1ZXN0IHdpdGggdXNlUGFyYWxsZWxRdWV1ZSBzZXQgdG8gdHJ1ZSwgYW5kXG4gIC8vICAgICBwcm9jZXNzUmVzcG9uc2UgZ2l2ZW4gcmVzcG9uc2UgYmVpbmcgdGhlc2Ugc3RlcHM6XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBmZXRjaGluZyh7XG4gICAgcmVxdWVzdCxcbiAgICB1c2VQYXJhbGxlbFF1ZXVlOiB0cnVlLFxuICAgIGRpc3BhdGNoZXI6IG9wdGlvbnMuZGlzcGF0Y2hlciA/PyBnZXRHbG9iYWxEaXNwYXRjaGVyKCksXG4gICAgcHJvY2Vzc1Jlc3BvbnNlIChyZXNwb25zZSkge1xuICAgICAgLy8gMS4gSWYgcmVzcG9uc2UgaXMgYSBuZXR3b3JrIGVycm9yIG9yIGl0cyBzdGF0dXMgaXMgbm90IDEwMSxcbiAgICAgIC8vICAgIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLlxuICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdlcnJvcicgfHwgcmVzcG9uc2Uuc3RhdHVzICE9PSAxMDEpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdSZWNlaXZlZCBuZXR3b3JrIGVycm9yIG9yIG5vbi0xMDEgc3RhdHVzIGNvZGUuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIHByb3RvY29scyBpcyBub3QgdGhlIGVtcHR5IGxpc3QgYW5kIGV4dHJhY3RpbmcgaGVhZGVyXG4gICAgICAvLyAgICBsaXN0IHZhbHVlcyBnaXZlbiBgU2VjLVdlYlNvY2tldC1Qcm90b2NvbGAgYW5kIHJlc3BvbnNlXHUyMDE5c1xuICAgICAgLy8gICAgaGVhZGVyIGxpc3QgcmVzdWx0cyBpbiBudWxsLCBmYWlsdXJlLCBvciB0aGUgZW1wdHkgYnl0ZVxuICAgICAgLy8gICAgc2VxdWVuY2UsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uXG4gICAgICBpZiAocHJvdG9jb2xzLmxlbmd0aCAhPT0gMCAmJiAhcmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdTZWMtV2ViU29ja2V0LVByb3RvY29sJykpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdTZXJ2ZXIgZGlkIG5vdCByZXNwb25kIHdpdGggc2VudCBwcm90b2NvbHMuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIEZvbGxvdyB0aGUgcmVxdWlyZW1lbnRzIHN0YXRlZCBzdGVwIDIgdG8gc3RlcCA2LCBpbmNsdXNpdmUsXG4gICAgICAvLyAgICBvZiB0aGUgbGFzdCBzZXQgb2Ygc3RlcHMgaW4gc2VjdGlvbiA0LjEgb2YgVGhlIFdlYlNvY2tldFxuICAgICAgLy8gICAgUHJvdG9jb2wgdG8gdmFsaWRhdGUgcmVzcG9uc2UuIFRoaXMgZWl0aGVyIHJlc3VsdHMgaW4gZmFpbFxuICAgICAgLy8gICAgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIG9yIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpc1xuICAgICAgLy8gICAgZXN0YWJsaXNoZWQuXG5cbiAgICAgIC8vIDIuIElmIHRoZSByZXNwb25zZSBsYWNrcyBhbiB8VXBncmFkZXwgaGVhZGVyIGZpZWxkIG9yIHRoZSB8VXBncmFkZXxcbiAgICAgIC8vICAgIGhlYWRlciBmaWVsZCBjb250YWlucyBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIEFTQ0lJIGNhc2UtXG4gICAgICAvLyAgICBpbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHZhbHVlIFwid2Vic29ja2V0XCIsIHRoZSBjbGllbnQgTVVTVFxuICAgICAgLy8gICAgX0ZhaWwgdGhlIFdlYlNvY2tldCBDb25uZWN0aW9uXy5cbiAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ1VwZ3JhZGUnKT8udG9Mb3dlckNhc2UoKSAhPT0gJ3dlYnNvY2tldCcpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdTZXJ2ZXIgZGlkIG5vdCBzZXQgVXBncmFkZSBoZWFkZXIgdG8gXCJ3ZWJzb2NrZXRcIi4nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gMy4gSWYgdGhlIHJlc3BvbnNlIGxhY2tzIGEgfENvbm5lY3Rpb258IGhlYWRlciBmaWVsZCBvciB0aGVcbiAgICAgIC8vICAgIHxDb25uZWN0aW9ufCBoZWFkZXIgZmllbGQgZG9lc24ndCBjb250YWluIGEgdG9rZW4gdGhhdCBpcyBhblxuICAgICAgLy8gICAgQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHZhbHVlIFwiVXBncmFkZVwiLCB0aGUgY2xpZW50XG4gICAgICAvLyAgICBNVVNUIF9GYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbl8uXG4gICAgICBpZiAocmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdDb25uZWN0aW9uJyk/LnRvTG93ZXJDYXNlKCkgIT09ICd1cGdyYWRlJykge1xuICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih3cywgJ1NlcnZlciBkaWQgbm90IHNldCBDb25uZWN0aW9uIGhlYWRlciB0byBcInVwZ3JhZGVcIi4nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgdGhlIHJlc3BvbnNlIGxhY2tzIGEgfFNlYy1XZWJTb2NrZXQtQWNjZXB0fCBoZWFkZXIgZmllbGQgb3JcbiAgICAgIC8vICAgIHRoZSB8U2VjLVdlYlNvY2tldC1BY2NlcHR8IGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiB0aGVcbiAgICAgIC8vICAgIGJhc2U2NC1lbmNvZGVkIFNIQS0xIG9mIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB8U2VjLVdlYlNvY2tldC1cbiAgICAgIC8vICAgIEtleXwgKGFzIGEgc3RyaW5nLCBub3QgYmFzZTY0LWRlY29kZWQpIHdpdGggdGhlIHN0cmluZyBcIjI1OEVBRkE1LVxuICAgICAgLy8gICAgRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExXCIgYnV0IGlnbm9yaW5nIGFueSBsZWFkaW5nIGFuZFxuICAgICAgLy8gICAgdHJhaWxpbmcgd2hpdGVzcGFjZSwgdGhlIGNsaWVudCBNVVNUIF9GYWlsIHRoZSBXZWJTb2NrZXRcbiAgICAgIC8vICAgIENvbm5lY3Rpb25fLlxuICAgICAgY29uc3Qgc2VjV1NBY2NlcHQgPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JylcbiAgICAgIGNvbnN0IGRpZ2VzdCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKGtleVZhbHVlICsgdWlkKS5kaWdlc3QoJ2Jhc2U2NCcpXG4gICAgICBpZiAoc2VjV1NBY2NlcHQgIT09IGRpZ2VzdCkge1xuICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih3cywgJ0luY29ycmVjdCBoYXNoIHJlY2VpdmVkIGluIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlci4nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gNS4gSWYgdGhlIHJlc3BvbnNlIGluY2x1ZGVzIGEgfFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uc3wgaGVhZGVyXG4gICAgICAvLyAgICBmaWVsZCBhbmQgdGhpcyBoZWFkZXIgZmllbGQgaW5kaWNhdGVzIHRoZSB1c2Ugb2YgYW4gZXh0ZW5zaW9uXG4gICAgICAvLyAgICB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiB0aGUgY2xpZW50J3MgaGFuZHNoYWtlICh0aGUgc2VydmVyIGhhc1xuICAgICAgLy8gICAgaW5kaWNhdGVkIGFuIGV4dGVuc2lvbiBub3QgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQpLCB0aGUgY2xpZW50XG4gICAgICAvLyAgICBNVVNUIF9GYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbl8uICAoVGhlIHBhcnNpbmcgb2YgdGhpc1xuICAgICAgLy8gICAgaGVhZGVyIGZpZWxkIHRvIGRldGVybWluZSB3aGljaCBleHRlbnNpb25zIGFyZSByZXF1ZXN0ZWQgaXNcbiAgICAgIC8vICAgIGRpc2N1c3NlZCBpbiBTZWN0aW9uIDkuMS4pXG4gICAgICBjb25zdCBzZWNFeHRlbnNpb24gPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucycpXG5cbiAgICAgIGlmIChzZWNFeHRlbnNpb24gIT09IG51bGwgJiYgc2VjRXh0ZW5zaW9uICE9PSBwZXJtZXNzYWdlRGVmbGF0ZSkge1xuICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih3cywgJ1JlY2VpdmVkIGRpZmZlcmVudCBwZXJtZXNzYWdlLWRlZmxhdGUgdGhhbiB0aGUgb25lIHNldC4nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgdGhlIHJlc3BvbnNlIGluY2x1ZGVzIGEgfFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8IGhlYWRlciBmaWVsZFxuICAgICAgLy8gICAgYW5kIHRoaXMgaGVhZGVyIGZpZWxkIGluZGljYXRlcyB0aGUgdXNlIG9mIGEgc3VicHJvdG9jb2wgdGhhdCB3YXNcbiAgICAgIC8vICAgIG5vdCBwcmVzZW50IGluIHRoZSBjbGllbnQncyBoYW5kc2hha2UgKHRoZSBzZXJ2ZXIgaGFzIGluZGljYXRlZCBhXG4gICAgICAvLyAgICBzdWJwcm90b2NvbCBub3QgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQpLCB0aGUgY2xpZW50IE1VU1QgX0ZhaWxcbiAgICAgIC8vICAgIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbl8uXG4gICAgICBjb25zdCBzZWNQcm90b2NvbCA9IHJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcpXG5cbiAgICAgIGlmIChzZWNQcm90b2NvbCAhPT0gbnVsbCAmJiBzZWNQcm90b2NvbCAhPT0gcmVxdWVzdC5oZWFkZXJzTGlzdC5nZXQoJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnKSkge1xuICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih3cywgJ1Byb3RvY29sIHdhcyBub3Qgc2V0IGluIHRoZSBvcGVuaW5nIGhhbmRzaGFrZS4nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVzcG9uc2Uuc29ja2V0Lm9uKCdkYXRhJywgb25Tb2NrZXREYXRhKVxuICAgICAgcmVzcG9uc2Uuc29ja2V0Lm9uKCdjbG9zZScsIG9uU29ja2V0Q2xvc2UpXG4gICAgICByZXNwb25zZS5zb2NrZXQub24oJ2Vycm9yJywgb25Tb2NrZXRFcnJvcilcblxuICAgICAgaWYgKGNoYW5uZWxzLm9wZW4uaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgICAgY2hhbm5lbHMub3Blbi5wdWJsaXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiByZXNwb25zZS5zb2NrZXQuYWRkcmVzcygpLFxuICAgICAgICAgIHByb3RvY29sOiBzZWNQcm90b2NvbCxcbiAgICAgICAgICBleHRlbnNpb25zOiBzZWNFeHRlbnNpb25cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgb25Fc3RhYmxpc2gocmVzcG9uc2UpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBjb250cm9sbGVyXG59XG5cbi8qKlxuICogQHBhcmFtIHtCdWZmZXJ9IGNodW5rXG4gKi9cbmZ1bmN0aW9uIG9uU29ja2V0RGF0YSAoY2h1bmspIHtcbiAgaWYgKCF0aGlzLndzW2tCeXRlUGFyc2VyXS53cml0ZShjaHVuaykpIHtcbiAgICB0aGlzLnBhdXNlKClcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZmVlZGJhY2stZnJvbS10aGUtcHJvdG9jb2xcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tNy4xLjRcbiAqL1xuZnVuY3Rpb24gb25Tb2NrZXRDbG9zZSAoKSB7XG4gIGNvbnN0IHsgd3MgfSA9IHRoaXNcblxuICAvLyBJZiB0aGUgVENQIGNvbm5lY3Rpb24gd2FzIGNsb3NlZCBhZnRlciB0aGVcbiAgLy8gV2ViU29ja2V0IGNsb3NpbmcgaGFuZHNoYWtlIHdhcyBjb21wbGV0ZWQsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvblxuICAvLyBpcyBzYWlkIHRvIGhhdmUgYmVlbiBjbG9zZWQgX2NsZWFubHlfLlxuICBjb25zdCB3YXNDbGVhbiA9IHdzW2tTZW50Q2xvc2VdICYmIHdzW2tSZWNlaXZlZENsb3NlXVxuXG4gIGxldCBjb2RlID0gMTAwNVxuICBsZXQgcmVhc29uID0gJydcblxuICBjb25zdCByZXN1bHQgPSB3c1trQnl0ZVBhcnNlcl0uY2xvc2luZ0luZm9cblxuICBpZiAocmVzdWx0KSB7XG4gICAgY29kZSA9IHJlc3VsdC5jb2RlID8/IDEwMDVcbiAgICByZWFzb24gPSByZXN1bHQucmVhc29uXG4gIH0gZWxzZSBpZiAoIXdzW2tTZW50Q2xvc2VdKSB7XG4gICAgLy8gSWYgX1RoZSBXZWJTb2NrZXRcbiAgICAvLyBDb25uZWN0aW9uIGlzIENsb3NlZF8gYW5kIG5vIENsb3NlIGNvbnRyb2wgZnJhbWUgd2FzIHJlY2VpdmVkIGJ5IHRoZVxuICAgIC8vIGVuZHBvaW50IChzdWNoIGFzIGNvdWxkIG9jY3VyIGlmIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBjb25uZWN0aW9uXG4gICAgLy8gaXMgbG9zdCksIF9UaGUgV2ViU29ja2V0IENvbm5lY3Rpb24gQ2xvc2UgQ29kZV8gaXMgY29uc2lkZXJlZCB0byBiZVxuICAgIC8vIDEwMDYuXG4gICAgY29kZSA9IDEwMDZcbiAgfVxuXG4gIC8vIDEuIENoYW5nZSB0aGUgcmVhZHkgc3RhdGUgdG8gQ0xPU0VEICgzKS5cbiAgd3Nba1JlYWR5U3RhdGVdID0gc3RhdGVzLkNMT1NFRFxuXG4gIC8vIDIuIElmIHRoZSB1c2VyIGFnZW50IHdhcyByZXF1aXJlZCB0byBmYWlsIHRoZSBXZWJTb2NrZXRcbiAgLy8gICAgY29ubmVjdGlvbiwgb3IgaWYgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIHdhcyBjbG9zZWRcbiAgLy8gICAgYWZ0ZXIgYmVpbmcgZmxhZ2dlZCBhcyBmdWxsLCBmaXJlIGFuIGV2ZW50IG5hbWVkIGVycm9yXG4gIC8vICAgIGF0IHRoZSBXZWJTb2NrZXQgb2JqZWN0LlxuICAvLyBUT0RPXG5cbiAgLy8gMy4gRmlyZSBhbiBldmVudCBuYW1lZCBjbG9zZSBhdCB0aGUgV2ViU29ja2V0IG9iamVjdCxcbiAgLy8gICAgdXNpbmcgQ2xvc2VFdmVudCwgd2l0aCB0aGUgd2FzQ2xlYW4gYXR0cmlidXRlXG4gIC8vICAgIGluaXRpYWxpemVkIHRvIHRydWUgaWYgdGhlIGNvbm5lY3Rpb24gY2xvc2VkIGNsZWFubHlcbiAgLy8gICAgYW5kIGZhbHNlIG90aGVyd2lzZSwgdGhlIGNvZGUgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvXG4gIC8vICAgIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZSBjb2RlLCBhbmQgdGhlIHJlYXNvblxuICAvLyAgICBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHJlc3VsdCBvZiBhcHBseWluZyBVVEYtOFxuICAvLyAgICBkZWNvZGUgd2l0aG91dCBCT00gdG8gdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGNsb3NlXG4gIC8vICAgIHJlYXNvbi5cbiAgZmlyZUV2ZW50KCdjbG9zZScsIHdzLCBDbG9zZUV2ZW50LCB7XG4gICAgd2FzQ2xlYW4sIGNvZGUsIHJlYXNvblxuICB9KVxuXG4gIGlmIChjaGFubmVscy5jbG9zZS5oYXNTdWJzY3JpYmVycykge1xuICAgIGNoYW5uZWxzLmNsb3NlLnB1Ymxpc2goe1xuICAgICAgd2Vic29ja2V0OiB3cyxcbiAgICAgIGNvZGUsXG4gICAgICByZWFzb25cbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uU29ja2V0RXJyb3IgKGVycm9yKSB7XG4gIGNvbnN0IHsgd3MgfSA9IHRoaXNcblxuICB3c1trUmVhZHlTdGF0ZV0gPSBzdGF0ZXMuQ0xPU0lOR1xuXG4gIGlmIChjaGFubmVscy5zb2NrZXRFcnJvci5oYXNTdWJzY3JpYmVycykge1xuICAgIGNoYW5uZWxzLnNvY2tldEVycm9yLnB1Ymxpc2goZXJyb3IpXG4gIH1cblxuICB0aGlzLmRlc3Ryb3koKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvblxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IG1heFVuc2lnbmVkMTZCaXQgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ2NyeXB0bycpfSAqL1xubGV0IGNyeXB0b1xudHJ5IHtcbiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJylcbn0gY2F0Y2gge1xuXG59XG5cbmNsYXNzIFdlYnNvY2tldEZyYW1lU2VuZCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0J1ZmZlcnx1bmRlZmluZWR9IGRhdGFcbiAgICovXG4gIGNvbnN0cnVjdG9yIChkYXRhKSB7XG4gICAgdGhpcy5mcmFtZURhdGEgPSBkYXRhXG4gICAgdGhpcy5tYXNrS2V5ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpXG4gIH1cblxuICBjcmVhdGVGcmFtZSAob3Bjb2RlKSB7XG4gICAgY29uc3QgYm9keUxlbmd0aCA9IHRoaXMuZnJhbWVEYXRhPy5ieXRlTGVuZ3RoID8/IDBcblxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBwYXlsb2FkTGVuZ3RoID0gYm9keUxlbmd0aCAvLyAwLTEyNVxuICAgIGxldCBvZmZzZXQgPSA2XG5cbiAgICBpZiAoYm9keUxlbmd0aCA+IG1heFVuc2lnbmVkMTZCaXQpIHtcbiAgICAgIG9mZnNldCArPSA4IC8vIHBheWxvYWQgbGVuZ3RoIGlzIG5leHQgOCBieXRlc1xuICAgICAgcGF5bG9hZExlbmd0aCA9IDEyN1xuICAgIH0gZWxzZSBpZiAoYm9keUxlbmd0aCA+IDEyNSkge1xuICAgICAgb2Zmc2V0ICs9IDIgLy8gcGF5bG9hZCBsZW5ndGggaXMgbmV4dCAyIGJ5dGVzXG4gICAgICBwYXlsb2FkTGVuZ3RoID0gMTI2XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJvZHlMZW5ndGggKyBvZmZzZXQpXG5cbiAgICAvLyBDbGVhciBmaXJzdCAyIGJ5dGVzLCBldmVyeXRoaW5nIGVsc2UgaXMgb3ZlcndyaXR0ZW5cbiAgICBidWZmZXJbMF0gPSBidWZmZXJbMV0gPSAwXG4gICAgYnVmZmVyWzBdIHw9IDB4ODAgLy8gRklOXG4gICAgYnVmZmVyWzBdID0gKGJ1ZmZlclswXSAmIDB4RjApICsgb3Bjb2RlIC8vIG9wY29kZVxuXG4gICAgLyohIHdzLiBNSVQgTGljZW5zZS4gRWluYXIgT3R0byBTdGFuZ3ZpayA8ZWluYXJvc0BnbWFpbC5jb20+ICovXG4gICAgYnVmZmVyW29mZnNldCAtIDRdID0gdGhpcy5tYXNrS2V5WzBdXG4gICAgYnVmZmVyW29mZnNldCAtIDNdID0gdGhpcy5tYXNrS2V5WzFdXG4gICAgYnVmZmVyW29mZnNldCAtIDJdID0gdGhpcy5tYXNrS2V5WzJdXG4gICAgYnVmZmVyW29mZnNldCAtIDFdID0gdGhpcy5tYXNrS2V5WzNdXG5cbiAgICBidWZmZXJbMV0gPSBwYXlsb2FkTGVuZ3RoXG5cbiAgICBpZiAocGF5bG9hZExlbmd0aCA9PT0gMTI2KSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50MTZCRShib2R5TGVuZ3RoLCAyKVxuICAgIH0gZWxzZSBpZiAocGF5bG9hZExlbmd0aCA9PT0gMTI3KSB7XG4gICAgICAvLyBDbGVhciBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aFxuICAgICAgYnVmZmVyWzJdID0gYnVmZmVyWzNdID0gMFxuICAgICAgYnVmZmVyLndyaXRlVUludEJFKGJvZHlMZW5ndGgsIDQsIDYpXG4gICAgfVxuXG4gICAgYnVmZmVyWzFdIHw9IDB4ODAgLy8gTUFTS1xuXG4gICAgLy8gbWFzayBib2R5XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib2R5TGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IHRoaXMuZnJhbWVEYXRhW2ldIF4gdGhpcy5tYXNrS2V5W2kgJSA0XVxuICAgIH1cblxuICAgIHJldHVybiBidWZmZXJcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgV2Vic29ja2V0RnJhbWVTZW5kXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgV3JpdGFibGUgfSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCBkaWFnbm9zdGljc0NoYW5uZWwgPSByZXF1aXJlKCdkaWFnbm9zdGljc19jaGFubmVsJylcbmNvbnN0IHsgcGFyc2VyU3RhdGVzLCBvcGNvZGVzLCBzdGF0ZXMsIGVtcHR5QnVmZmVyIH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5jb25zdCB7IGtSZWFkeVN0YXRlLCBrU2VudENsb3NlLCBrUmVzcG9uc2UsIGtSZWNlaXZlZENsb3NlIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBpc1ZhbGlkU3RhdHVzQ29kZSwgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24sIHdlYnNvY2tldE1lc3NhZ2VSZWNlaXZlZCB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgV2Vic29ja2V0RnJhbWVTZW5kIH0gPSByZXF1aXJlKCcuL2ZyYW1lJylcblxuLy8gVGhpcyBjb2RlIHdhcyBpbmZsdWVuY2VkIGJ5IHdzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxMSBFaW5hciBPdHRvIFN0YW5ndmlrIDxlaW5hcm9zQGdtYWlsLmNvbT5cbi8vIENvcHlyaWdodCAoYykgMjAxMyBBcm5vdXQgS2F6ZW1pZXIgYW5kIGNvbnRyaWJ1dG9yc1xuLy8gQ29weXJpZ2h0IChjKSAyMDE2IEx1aWdpIFBpbmNhIGFuZCBjb250cmlidXRvcnNcblxuY29uc3QgY2hhbm5lbHMgPSB7fVxuY2hhbm5lbHMucGluZyA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6d2Vic29ja2V0OnBpbmcnKVxuY2hhbm5lbHMucG9uZyA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6d2Vic29ja2V0OnBvbmcnKVxuXG5jbGFzcyBCeXRlUGFyc2VyIGV4dGVuZHMgV3JpdGFibGUge1xuICAjYnVmZmVycyA9IFtdXG4gICNieXRlT2Zmc2V0ID0gMFxuXG4gICNzdGF0ZSA9IHBhcnNlclN0YXRlcy5JTkZPXG5cbiAgI2luZm8gPSB7fVxuICAjZnJhZ21lbnRzID0gW11cblxuICBjb25zdHJ1Y3RvciAod3MpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLndzID0gd3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gY2h1bmtcbiAgICogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKi9cbiAgX3dyaXRlIChjaHVuaywgXywgY2FsbGJhY2spIHtcbiAgICB0aGlzLiNidWZmZXJzLnB1c2goY2h1bmspXG4gICAgdGhpcy4jYnl0ZU9mZnNldCArPSBjaHVuay5sZW5ndGhcblxuICAgIHRoaXMucnVuKGNhbGxiYWNrKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgd2hlbmV2ZXIgYSBuZXcgY2h1bmsgaXMgcmVjZWl2ZWQuXG4gICAqIENhbGxiYWNrIGlzIGNhbGxlZCB3aGVuZXZlciB0aGVyZSBhcmUgbm8gbW9yZSBjaHVua3MgYnVmZmVyaW5nLFxuICAgKiBvciBub3QgZW5vdWdoIGJ5dGVzIGFyZSBidWZmZXJlZCB0byBwYXJzZS5cbiAgICovXG4gIHJ1biAoY2FsbGJhY2spIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMuI3N0YXRlID09PSBwYXJzZXJTdGF0ZXMuSU5GTykge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgZW5vdWdoIGJ5dGVzIHRvIHBhcnNlIHRoZSBwYXlsb2FkIGxlbmd0aCwgZXRjLlxuICAgICAgICBpZiAodGhpcy4jYnl0ZU9mZnNldCA8IDIpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5jb25zdW1lKDIpXG5cbiAgICAgICAgdGhpcy4jaW5mby5maW4gPSAoYnVmZmVyWzBdICYgMHg4MCkgIT09IDBcbiAgICAgICAgdGhpcy4jaW5mby5vcGNvZGUgPSBidWZmZXJbMF0gJiAweDBGXG5cbiAgICAgICAgLy8gSWYgd2UgcmVjZWl2ZSBhIGZyYWdtZW50ZWQgbWVzc2FnZSwgd2UgdXNlIHRoZSB0eXBlIG9mIHRoZSBmaXJzdFxuICAgICAgICAvLyBmcmFtZSB0byBwYXJzZSB0aGUgZnVsbCBtZXNzYWdlIGFzIGJpbmFyeS90ZXh0LCB3aGVuIGl0J3MgdGVybWluYXRlZFxuICAgICAgICB0aGlzLiNpbmZvLm9yaWdpbmFsT3Bjb2RlID8/PSB0aGlzLiNpbmZvLm9wY29kZVxuXG4gICAgICAgIHRoaXMuI2luZm8uZnJhZ21lbnRlZCA9ICF0aGlzLiNpbmZvLmZpbiAmJiB0aGlzLiNpbmZvLm9wY29kZSAhPT0gb3Bjb2Rlcy5DT05USU5VQVRJT05cblxuICAgICAgICBpZiAodGhpcy4jaW5mby5mcmFnbWVudGVkICYmIHRoaXMuI2luZm8ub3Bjb2RlICE9PSBvcGNvZGVzLkJJTkFSWSAmJiB0aGlzLiNpbmZvLm9wY29kZSAhPT0gb3Bjb2Rlcy5URVhUKSB7XG4gICAgICAgICAgLy8gT25seSB0ZXh0IGFuZCBiaW5hcnkgZnJhbWVzIGNhbiBiZSBmcmFnbWVudGVkXG4gICAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24odGhpcy53cywgJ0ludmFsaWQgZnJhbWUgdHlwZSB3YXMgZnJhZ21lbnRlZC4nKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZExlbmd0aCA9IGJ1ZmZlclsxXSAmIDB4N0ZcblxuICAgICAgICBpZiAocGF5bG9hZExlbmd0aCA8PSAxMjUpIHtcbiAgICAgICAgICB0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGggPSBwYXlsb2FkTGVuZ3RoXG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSBwYXJzZXJTdGF0ZXMuUkVBRF9EQVRBXG4gICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZExlbmd0aCA9PT0gMTI2KSB7XG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSBwYXJzZXJTdGF0ZXMuUEFZTE9BRExFTkdUSF8xNlxuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWRMZW5ndGggPT09IDEyNykge1xuICAgICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLlBBWUxPQURMRU5HVEhfNjRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLiNpbmZvLmZyYWdtZW50ZWQgJiYgcGF5bG9hZExlbmd0aCA+IDEyNSkge1xuICAgICAgICAgIC8vIEEgZnJhZ21lbnRlZCBmcmFtZSBjYW4ndCBiZSBmcmFnbWVudGVkIGl0c2VsZlxuICAgICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHRoaXMud3MsICdGcmFnbWVudGVkIGZyYW1lIGV4Y2VlZGVkIDEyNSBieXRlcy4nKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICh0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5QSU5HIHx8XG4gICAgICAgICAgICB0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5QT05HIHx8XG4gICAgICAgICAgICB0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5DTE9TRSkgJiZcbiAgICAgICAgICBwYXlsb2FkTGVuZ3RoID4gMTI1XG4gICAgICAgICkge1xuICAgICAgICAgIC8vIENvbnRyb2wgZnJhbWVzIGNhbiBoYXZlIGEgcGF5bG9hZCBsZW5ndGggb2YgMTI1IGJ5dGVzIE1BWFxuICAgICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHRoaXMud3MsICdQYXlsb2FkIGxlbmd0aCBmb3IgY29udHJvbCBmcmFtZSBleGNlZWRlZCAxMjUgYnl0ZXMuJylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5DTE9TRSkge1xuICAgICAgICAgIGlmIChwYXlsb2FkTGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih0aGlzLndzLCAnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgd2l0aCBhIDEtYnl0ZSBib2R5LicpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5jb25zdW1lKHBheWxvYWRMZW5ndGgpXG5cbiAgICAgICAgICB0aGlzLiNpbmZvLmNsb3NlSW5mbyA9IHRoaXMucGFyc2VDbG9zZUJvZHkoZmFsc2UsIGJvZHkpXG5cbiAgICAgICAgICBpZiAoIXRoaXMud3Nba1NlbnRDbG9zZV0pIHtcbiAgICAgICAgICAgIC8vIElmIGFuIGVuZHBvaW50IHJlY2VpdmVzIGEgQ2xvc2UgZnJhbWUgYW5kIGRpZCBub3QgcHJldmlvdXNseSBzZW5kIGFcbiAgICAgICAgICAgIC8vIENsb3NlIGZyYW1lLCB0aGUgZW5kcG9pbnQgTVVTVCBzZW5kIGEgQ2xvc2UgZnJhbWUgaW4gcmVzcG9uc2UuICAoV2hlblxuICAgICAgICAgICAgLy8gc2VuZGluZyBhIENsb3NlIGZyYW1lIGluIHJlc3BvbnNlLCB0aGUgZW5kcG9pbnQgdHlwaWNhbGx5IGVjaG9zIHRoZVxuICAgICAgICAgICAgLy8gc3RhdHVzIGNvZGUgaXQgcmVjZWl2ZWQuKVxuICAgICAgICAgICAgY29uc3QgYm9keSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyKVxuICAgICAgICAgICAgYm9keS53cml0ZVVJbnQxNkJFKHRoaXMuI2luZm8uY2xvc2VJbmZvLmNvZGUsIDApXG4gICAgICAgICAgICBjb25zdCBjbG9zZUZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZChib2R5KVxuXG4gICAgICAgICAgICB0aGlzLndzW2tSZXNwb25zZV0uc29ja2V0LndyaXRlKFxuICAgICAgICAgICAgICBjbG9zZUZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuQ0xPU0UpLFxuICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMud3Nba1NlbnRDbG9zZV0gPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gVXBvbiBlaXRoZXIgc2VuZGluZyBvciByZWNlaXZpbmcgYSBDbG9zZSBjb250cm9sIGZyYW1lLCBpdCBpcyBzYWlkXG4gICAgICAgICAgLy8gdGhhdCBfVGhlIFdlYlNvY2tldCBDbG9zaW5nIEhhbmRzaGFrZSBpcyBTdGFydGVkXyBhbmQgdGhhdCB0aGVcbiAgICAgICAgICAvLyBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBpbiB0aGUgQ0xPU0lORyBzdGF0ZS5cbiAgICAgICAgICB0aGlzLndzW2tSZWFkeVN0YXRlXSA9IHN0YXRlcy5DTE9TSU5HXG4gICAgICAgICAgdGhpcy53c1trUmVjZWl2ZWRDbG9zZV0gPSB0cnVlXG5cbiAgICAgICAgICB0aGlzLmVuZCgpXG5cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5QSU5HKSB7XG4gICAgICAgICAgLy8gVXBvbiByZWNlaXB0IG9mIGEgUGluZyBmcmFtZSwgYW4gZW5kcG9pbnQgTVVTVCBzZW5kIGEgUG9uZyBmcmFtZSBpblxuICAgICAgICAgIC8vIHJlc3BvbnNlLCB1bmxlc3MgaXQgYWxyZWFkeSByZWNlaXZlZCBhIENsb3NlIGZyYW1lLlxuICAgICAgICAgIC8vIEEgUG9uZyBmcmFtZSBzZW50IGluIHJlc3BvbnNlIHRvIGEgUGluZyBmcmFtZSBtdXN0IGhhdmUgaWRlbnRpY2FsXG4gICAgICAgICAgLy8gXCJBcHBsaWNhdGlvbiBkYXRhXCJcblxuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmNvbnN1bWUocGF5bG9hZExlbmd0aClcblxuICAgICAgICAgIGlmICghdGhpcy53c1trUmVjZWl2ZWRDbG9zZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZChib2R5KVxuXG4gICAgICAgICAgICB0aGlzLndzW2tSZXNwb25zZV0uc29ja2V0LndyaXRlKGZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuUE9ORykpXG5cbiAgICAgICAgICAgIGlmIChjaGFubmVscy5waW5nLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICAgICAgICAgIGNoYW5uZWxzLnBpbmcucHVibGlzaCh7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYm9keVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLklORk9cblxuICAgICAgICAgIGlmICh0aGlzLiNieXRlT2Zmc2V0ID4gMCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2luZm8ub3Bjb2RlID09PSBvcGNvZGVzLlBPTkcpIHtcbiAgICAgICAgICAvLyBBIFBvbmcgZnJhbWUgTUFZIGJlIHNlbnQgdW5zb2xpY2l0ZWQuICBUaGlzIHNlcnZlcyBhcyBhXG4gICAgICAgICAgLy8gdW5pZGlyZWN0aW9uYWwgaGVhcnRiZWF0LiAgQSByZXNwb25zZSB0byBhbiB1bnNvbGljaXRlZCBQb25nIGZyYW1lIGlzXG4gICAgICAgICAgLy8gbm90IGV4cGVjdGVkLlxuXG4gICAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29uc3VtZShwYXlsb2FkTGVuZ3RoKVxuXG4gICAgICAgICAgaWYgKGNoYW5uZWxzLnBvbmcuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgICAgICAgIGNoYW5uZWxzLnBvbmcucHVibGlzaCh7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IGJvZHlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPiAwKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy4jc3RhdGUgPT09IHBhcnNlclN0YXRlcy5QQVlMT0FETEVOR1RIXzE2KSB7XG4gICAgICAgIGlmICh0aGlzLiNieXRlT2Zmc2V0IDwgMikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmNvbnN1bWUoMilcblxuICAgICAgICB0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGggPSBidWZmZXIucmVhZFVJbnQxNkJFKDApXG4gICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLlJFQURfREFUQVxuICAgICAgfSBlbHNlIGlmICh0aGlzLiNzdGF0ZSA9PT0gcGFyc2VyU3RhdGVzLlBBWUxPQURMRU5HVEhfNjQpIHtcbiAgICAgICAgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPCA4KSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuY29uc3VtZSg4KVxuICAgICAgICBjb25zdCB1cHBlciA9IGJ1ZmZlci5yZWFkVUludDMyQkUoMClcblxuICAgICAgICAvLyAyXjMxIGlzIHRoZSBtYXhpbmltdW0gYnl0ZXMgYW4gYXJyYXlidWZmZXIgY2FuIGNvbnRhaW5cbiAgICAgICAgLy8gb24gMzItYml0IHN5c3RlbXMuIEFsdGhvdWdoLCBvbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpc1xuICAgICAgICAvLyAyXjUzLTEgYnl0ZXMuXG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0Vycm9ycy9JbnZhbGlkX2FycmF5X2xlbmd0aFxuICAgICAgICAvLyBodHRwczovL3NvdXJjZS5jaHJvbWl1bS5vcmcvY2hyb21pdW0vY2hyb21pdW0vc3JjLysvbWFpbjp2OC9zcmMvY29tbW9uL2dsb2JhbHMuaDtkcmM9MTk0NjIxMmFjMDEwMDY2OGYxNGViOWUyODQzYmRkODQ2ZTUxMGExZTticHY9MTticHQ9MTtsPTEyNzVcbiAgICAgICAgLy8gaHR0cHM6Ly9zb3VyY2UuY2hyb21pdW0ub3JnL2Nocm9taXVtL2Nocm9taXVtL3NyYy8rL21haW46djgvc3JjL29iamVjdHMvanMtYXJyYXktYnVmZmVyLmg7bD0zNDtkcmM9MTk0NjIxMmFjMDEwMDY2OGYxNGViOWUyODQzYmRkODQ2ZTUxMGExZVxuICAgICAgICBpZiAodXBwZXIgPiAyICoqIDMxIC0gMSkge1xuICAgICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHRoaXMud3MsICdSZWNlaXZlZCBwYXlsb2FkIGxlbmd0aCA+IDJeMzEgYnl0ZXMuJylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvd2VyID0gYnVmZmVyLnJlYWRVSW50MzJCRSg0KVxuXG4gICAgICAgIHRoaXMuI2luZm8ucGF5bG9hZExlbmd0aCA9ICh1cHBlciA8PCA4KSArIGxvd2VyXG4gICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLlJFQURfREFUQVxuICAgICAgfSBlbHNlIGlmICh0aGlzLiNzdGF0ZSA9PT0gcGFyc2VyU3RhdGVzLlJFQURfREFUQSkge1xuICAgICAgICBpZiAodGhpcy4jYnl0ZU9mZnNldCA8IHRoaXMuI2luZm8ucGF5bG9hZExlbmd0aCkge1xuICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0aWxsIG1vcmUgZGF0YSBpbiB0aGlzIGNodW5rIHRoYXQgbmVlZHMgdG8gYmUgcmVhZFxuICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jYnl0ZU9mZnNldCA+PSB0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGgpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgc2VydmVyIHNlbnQgbXVsdGlwbGUgZnJhbWVzIGluIGEgc2luZ2xlIGNodW5rXG5cbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5jb25zdW1lKHRoaXMuI2luZm8ucGF5bG9hZExlbmd0aClcblxuICAgICAgICAgIHRoaXMuI2ZyYWdtZW50cy5wdXNoKGJvZHkpXG5cbiAgICAgICAgICAvLyBJZiB0aGUgZnJhbWUgaXMgdW5mcmFnbWVudGVkLCBvciBhIGZyYWdtZW50ZWQgZnJhbWUgd2FzIHRlcm1pbmF0ZWQsXG4gICAgICAgICAgLy8gYSBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICAgIGlmICghdGhpcy4jaW5mby5mcmFnbWVudGVkIHx8ICh0aGlzLiNpbmZvLmZpbiAmJiB0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5DT05USU5VQVRJT04pKSB7XG4gICAgICAgICAgICBjb25zdCBmdWxsTWVzc2FnZSA9IEJ1ZmZlci5jb25jYXQodGhpcy4jZnJhZ21lbnRzKVxuXG4gICAgICAgICAgICB3ZWJzb2NrZXRNZXNzYWdlUmVjZWl2ZWQodGhpcy53cywgdGhpcy4jaW5mby5vcmlnaW5hbE9wY29kZSwgZnVsbE1lc3NhZ2UpXG5cbiAgICAgICAgICAgIHRoaXMuI2luZm8gPSB7fVxuICAgICAgICAgICAgdGhpcy4jZnJhZ21lbnRzLmxlbmd0aCA9IDBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNzdGF0ZSA9IHBhcnNlclN0YXRlcy5JTkZPXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPiAwKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgbiBieXRlcyBmcm9tIHRoZSBidWZmZXJlZCBCdWZmZXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ8bnVsbH1cbiAgICovXG4gIGNvbnN1bWUgKG4pIHtcbiAgICBpZiAobiA+IHRoaXMuI2J5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIGlmIChuID09PSAwKSB7XG4gICAgICByZXR1cm4gZW1wdHlCdWZmZXJcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jYnVmZmVyc1swXS5sZW5ndGggPT09IG4pIHtcbiAgICAgIHRoaXMuI2J5dGVPZmZzZXQgLT0gdGhpcy4jYnVmZmVyc1swXS5sZW5ndGhcbiAgICAgIHJldHVybiB0aGlzLiNidWZmZXJzLnNoaWZ0KClcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobilcbiAgICBsZXQgb2Zmc2V0ID0gMFxuXG4gICAgd2hpbGUgKG9mZnNldCAhPT0gbikge1xuICAgICAgY29uc3QgbmV4dCA9IHRoaXMuI2J1ZmZlcnNbMF1cbiAgICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBuZXh0XG5cbiAgICAgIGlmIChsZW5ndGggKyBvZmZzZXQgPT09IG4pIHtcbiAgICAgICAgYnVmZmVyLnNldCh0aGlzLiNidWZmZXJzLnNoaWZ0KCksIG9mZnNldClcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoICsgb2Zmc2V0ID4gbikge1xuICAgICAgICBidWZmZXIuc2V0KG5leHQuc3ViYXJyYXkoMCwgbiAtIG9mZnNldCksIG9mZnNldClcbiAgICAgICAgdGhpcy4jYnVmZmVyc1swXSA9IG5leHQuc3ViYXJyYXkobiAtIG9mZnNldClcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZmZlci5zZXQodGhpcy4jYnVmZmVycy5zaGlmdCgpLCBvZmZzZXQpXG4gICAgICAgIG9mZnNldCArPSBuZXh0Lmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI2J5dGVPZmZzZXQgLT0gblxuXG4gICAgcmV0dXJuIGJ1ZmZlclxuICB9XG5cbiAgcGFyc2VDbG9zZUJvZHkgKG9ubHlDb2RlLCBkYXRhKSB7XG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tNy4xLjVcbiAgICAvKiogQHR5cGUge251bWJlcnx1bmRlZmluZWR9ICovXG4gICAgbGV0IGNvZGVcblxuICAgIGlmIChkYXRhLmxlbmd0aCA+PSAyKSB7XG4gICAgICAvLyBfVGhlIFdlYlNvY2tldCBDb25uZWN0aW9uIENsb3NlIENvZGVfIGlzXG4gICAgICAvLyBkZWZpbmVkIGFzIHRoZSBzdGF0dXMgY29kZSAoU2VjdGlvbiA3LjQpIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3QgQ2xvc2VcbiAgICAgIC8vIGNvbnRyb2wgZnJhbWUgcmVjZWl2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uXG4gICAgICBjb2RlID0gZGF0YS5yZWFkVUludDE2QkUoMClcbiAgICB9XG5cbiAgICBpZiAob25seUNvZGUpIHtcbiAgICAgIGlmICghaXNWYWxpZFN0YXR1c0NvZGUoY29kZSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgY29kZSB9XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tNy4xLjZcbiAgICAvKiogQHR5cGUge0J1ZmZlcn0gKi9cbiAgICBsZXQgcmVhc29uID0gZGF0YS5zdWJhcnJheSgyKVxuXG4gICAgLy8gUmVtb3ZlIEJPTVxuICAgIGlmIChyZWFzb25bMF0gPT09IDB4RUYgJiYgcmVhc29uWzFdID09PSAweEJCICYmIHJlYXNvblsyXSA9PT0gMHhCRikge1xuICAgICAgcmVhc29uID0gcmVhc29uLnN1YmFycmF5KDMpXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgIT09IHVuZGVmaW5lZCAmJiAhaXNWYWxpZFN0YXR1c0NvZGUoY29kZSkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE86IG9wdGltaXplIHRoaXNcbiAgICAgIHJlYXNvbiA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnLCB7IGZhdGFsOiB0cnVlIH0pLmRlY29kZShyZWFzb24pXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiB7IGNvZGUsIHJlYXNvbiB9XG4gIH1cblxuICBnZXQgY2xvc2luZ0luZm8gKCkge1xuICAgIHJldHVybiB0aGlzLiNpbmZvLmNsb3NlSW5mb1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBCeXRlUGFyc2VyXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBET01FeGNlcHRpb24gfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2NvbnN0YW50cycpXG5jb25zdCB7IFVSTFNlcmlhbGl6ZXIgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2RhdGFVUkwnKVxuY29uc3QgeyBnZXRHbG9iYWxPcmlnaW4gfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2dsb2JhbCcpXG5jb25zdCB7IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsIHN0YXRlcywgb3Bjb2RlcywgZW1wdHlCdWZmZXIgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHtcbiAga1dlYlNvY2tldFVSTCxcbiAga1JlYWR5U3RhdGUsXG4gIGtDb250cm9sbGVyLFxuICBrQmluYXJ5VHlwZSxcbiAga1Jlc3BvbnNlLFxuICBrU2VudENsb3NlLFxuICBrQnl0ZVBhcnNlclxufSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IGlzRXN0YWJsaXNoZWQsIGlzQ2xvc2luZywgaXNWYWxpZFN1YnByb3RvY29sLCBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbiwgZmlyZUV2ZW50IH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBlc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0aW9uIH0gPSByZXF1aXJlKCcuL2Nvbm5lY3Rpb24nKVxuY29uc3QgeyBXZWJzb2NrZXRGcmFtZVNlbmQgfSA9IHJlcXVpcmUoJy4vZnJhbWUnKVxuY29uc3QgeyBCeXRlUGFyc2VyIH0gPSByZXF1aXJlKCcuL3JlY2VpdmVyJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSwgaXNCbG9iTGlrZSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsgZ2V0R2xvYmFsRGlzcGF0Y2hlciB9ID0gcmVxdWlyZSgnLi4vZ2xvYmFsJylcbmNvbnN0IHsgdHlwZXMgfSA9IHJlcXVpcmUoJ3V0aWwnKVxuXG5sZXQgZXhwZXJpbWVudGFsV2FybmVkID0gZmFsc2VcblxuLy8gaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLWRlZmluaXRpb25cbmNsYXNzIFdlYlNvY2tldCBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgI2V2ZW50cyA9IHtcbiAgICBvcGVuOiBudWxsLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGNsb3NlOiBudWxsLFxuICAgIG1lc3NhZ2U6IG51bGxcbiAgfVxuXG4gICNidWZmZXJlZEFtb3VudCA9IDBcbiAgI3Byb3RvY29sID0gJydcbiAgI2V4dGVuc2lvbnMgPSAnJ1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBwcm90b2NvbHNcbiAgICovXG4gIGNvbnN0cnVjdG9yICh1cmwsIHByb3RvY29scyA9IFtdKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ1dlYlNvY2tldCBjb25zdHJ1Y3RvcicgfSlcblxuICAgIGlmICghZXhwZXJpbWVudGFsV2FybmVkKSB7XG4gICAgICBleHBlcmltZW50YWxXYXJuZWQgPSB0cnVlXG4gICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKCdXZWJTb2NrZXRzIGFyZSBleHBlcmltZW50YWwsIGV4cGVjdCB0aGVtIHRvIGNoYW5nZSBhdCBhbnkgdGltZS4nLCB7XG4gICAgICAgIGNvZGU6ICdVTkRJQ0ktV1MnXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB3ZWJpZGwuY29udmVydGVyc1snRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4gb3IgV2ViU29ja2V0SW5pdCddKHByb3RvY29scylcblxuICAgIHVybCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyh1cmwpXG4gICAgcHJvdG9jb2xzID0gb3B0aW9ucy5wcm90b2NvbHNcblxuICAgIC8vIDEuIExldCBiYXNlVVJMIGJlIHRoaXMncyByZWxldmFudCBzZXR0aW5ncyBvYmplY3QncyBBUEkgYmFzZSBVUkwuXG4gICAgY29uc3QgYmFzZVVSTCA9IGdldEdsb2JhbE9yaWdpbigpXG5cbiAgICAvLyAxLiBMZXQgdXJsUmVjb3JkIGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIFVSTCBwYXJzZXIgdG8gdXJsIHdpdGggYmFzZVVSTC5cbiAgICBsZXQgdXJsUmVjb3JkXG5cbiAgICB0cnkge1xuICAgICAgdXJsUmVjb3JkID0gbmV3IFVSTCh1cmwsIGJhc2VVUkwpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gMy4gSWYgdXJsUmVjb3JkIGlzIGZhaWx1cmUsIHRoZW4gdGhyb3cgYSBcIlN5bnRheEVycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihlLCAnU3ludGF4RXJyb3InKVxuICAgIH1cblxuICAgIC8vIDQuIElmIHVybFJlY29yZFx1MjAxOXMgc2NoZW1lIGlzIFwiaHR0cFwiLCB0aGVuIHNldCB1cmxSZWNvcmRcdTIwMTlzIHNjaGVtZSB0byBcIndzXCIuXG4gICAgaWYgKHVybFJlY29yZC5wcm90b2NvbCA9PT0gJ2h0dHA6Jykge1xuICAgICAgdXJsUmVjb3JkLnByb3RvY29sID0gJ3dzOidcbiAgICB9IGVsc2UgaWYgKHVybFJlY29yZC5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHtcbiAgICAgIC8vIDUuIE90aGVyd2lzZSwgaWYgdXJsUmVjb3JkXHUyMDE5cyBzY2hlbWUgaXMgXCJodHRwc1wiLCBzZXQgdXJsUmVjb3JkXHUyMDE5cyBzY2hlbWUgdG8gXCJ3c3NcIi5cbiAgICAgIHVybFJlY29yZC5wcm90b2NvbCA9ICd3c3M6J1xuICAgIH1cblxuICAgIC8vIDYuIElmIHVybFJlY29yZFx1MjAxOXMgc2NoZW1lIGlzIG5vdCBcIndzXCIgb3IgXCJ3c3NcIiwgdGhlbiB0aHJvdyBhIFwiU3ludGF4RXJyb3JcIiBET01FeGNlcHRpb24uXG4gICAgaWYgKHVybFJlY29yZC5wcm90b2NvbCAhPT0gJ3dzOicgJiYgdXJsUmVjb3JkLnByb3RvY29sICE9PSAnd3NzOicpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgIGBFeHBlY3RlZCBhIHdzOiBvciB3c3M6IHByb3RvY29sLCBnb3QgJHt1cmxSZWNvcmQucHJvdG9jb2x9YCxcbiAgICAgICAgJ1N5bnRheEVycm9yJ1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIDcuIElmIHVybFJlY29yZFx1MjAxOXMgZnJhZ21lbnQgaXMgbm9uLW51bGwsIHRoZW4gdGhyb3cgYSBcIlN5bnRheEVycm9yXCJcbiAgICAvLyAgICBET01FeGNlcHRpb24uXG4gICAgaWYgKHVybFJlY29yZC5oYXNoIHx8IHVybFJlY29yZC5ocmVmLmVuZHNXaXRoKCcjJykpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oJ0dvdCBmcmFnbWVudCcsICdTeW50YXhFcnJvcicpXG4gICAgfVxuXG4gICAgLy8gOC4gSWYgcHJvdG9jb2xzIGlzIGEgc3RyaW5nLCBzZXQgcHJvdG9jb2xzIHRvIGEgc2VxdWVuY2UgY29uc2lzdGluZ1xuICAgIC8vICAgIG9mIGp1c3QgdGhhdCBzdHJpbmcuXG4gICAgaWYgKHR5cGVvZiBwcm90b2NvbHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm90b2NvbHMgPSBbcHJvdG9jb2xzXVxuICAgIH1cblxuICAgIC8vIDkuIElmIGFueSBvZiB0aGUgdmFsdWVzIGluIHByb3RvY29scyBvY2N1ciBtb3JlIHRoYW4gb25jZSBvciBvdGhlcndpc2VcbiAgICAvLyAgICBmYWlsIHRvIG1hdGNoIHRoZSByZXF1aXJlbWVudHMgZm9yIGVsZW1lbnRzIHRoYXQgY29tcHJpc2UgdGhlIHZhbHVlXG4gICAgLy8gICAgb2YgYFNlYy1XZWJTb2NrZXQtUHJvdG9jb2xgIGZpZWxkcyBhcyBkZWZpbmVkIGJ5IFRoZSBXZWJTb2NrZXRcbiAgICAvLyAgICBwcm90b2NvbCwgdGhlbiB0aHJvdyBhIFwiU3ludGF4RXJyb3JcIiBET01FeGNlcHRpb24uXG4gICAgaWYgKHByb3RvY29scy5sZW5ndGggIT09IG5ldyBTZXQocHJvdG9jb2xzLm1hcChwID0+IHAudG9Mb3dlckNhc2UoKSkpLnNpemUpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oJ0ludmFsaWQgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCB2YWx1ZScsICdTeW50YXhFcnJvcicpXG4gICAgfVxuXG4gICAgaWYgKHByb3RvY29scy5sZW5ndGggPiAwICYmICFwcm90b2NvbHMuZXZlcnkocCA9PiBpc1ZhbGlkU3VicHJvdG9jb2wocCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgdmFsdWUnLCAnU3ludGF4RXJyb3InKVxuICAgIH1cblxuICAgIC8vIDEwLiBTZXQgdGhpcydzIHVybCB0byB1cmxSZWNvcmQuXG4gICAgdGhpc1trV2ViU29ja2V0VVJMXSA9IG5ldyBVUkwodXJsUmVjb3JkLmhyZWYpXG5cbiAgICAvLyAxMS4gTGV0IGNsaWVudCBiZSB0aGlzJ3MgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0LlxuXG4gICAgLy8gMTIuIFJ1biB0aGlzIHN0ZXAgaW4gcGFyYWxsZWw6XG5cbiAgICAvLyAgICAxLiBFc3RhYmxpc2ggYSBXZWJTb2NrZXQgY29ubmVjdGlvbiBnaXZlbiB1cmxSZWNvcmQsIHByb3RvY29scyxcbiAgICAvLyAgICAgICBhbmQgY2xpZW50LlxuICAgIHRoaXNba0NvbnRyb2xsZXJdID0gZXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbihcbiAgICAgIHVybFJlY29yZCxcbiAgICAgIHByb3RvY29scyxcbiAgICAgIHRoaXMsXG4gICAgICAocmVzcG9uc2UpID0+IHRoaXMuI29uQ29ubmVjdGlvbkVzdGFibGlzaGVkKHJlc3BvbnNlKSxcbiAgICAgIG9wdGlvbnNcbiAgICApXG5cbiAgICAvLyBFYWNoIFdlYlNvY2tldCBvYmplY3QgaGFzIGFuIGFzc29jaWF0ZWQgcmVhZHkgc3RhdGUsIHdoaWNoIGlzIGFcbiAgICAvLyBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVjdGlvbi4gSW5pdGlhbGx5IGl0IG11c3RcbiAgICAvLyBiZSBDT05ORUNUSU5HICgwKS5cbiAgICB0aGlzW2tSZWFkeVN0YXRlXSA9IFdlYlNvY2tldC5DT05ORUNUSU5HXG5cbiAgICAvLyBUaGUgZXh0ZW5zaW9ucyBhdHRyaWJ1dGUgbXVzdCBpbml0aWFsbHkgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICAvLyBUaGUgcHJvdG9jb2wgYXR0cmlidXRlIG11c3QgaW5pdGlhbGx5IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgLy8gRWFjaCBXZWJTb2NrZXQgb2JqZWN0IGhhcyBhbiBhc3NvY2lhdGVkIGJpbmFyeSB0eXBlLCB3aGljaCBpcyBhXG4gICAgLy8gQmluYXJ5VHlwZS4gSW5pdGlhbGx5IGl0IG11c3QgYmUgXCJibG9iXCIuXG4gICAgdGhpc1trQmluYXJ5VHlwZV0gPSAnYmxvYidcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2RvbS13ZWJzb2NrZXQtY2xvc2VcbiAgICogQHBhcmFtIHtudW1iZXJ8dW5kZWZpbmVkfSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gcmVhc29uXG4gICAqL1xuICBjbG9zZSAoY29kZSA9IHVuZGVmaW5lZCwgcmVhc29uID0gdW5kZWZpbmVkKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgaWYgKGNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29kZSA9IHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBzaG9ydCddKGNvZGUsIHsgY2xhbXA6IHRydWUgfSlcbiAgICB9XG5cbiAgICBpZiAocmVhc29uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlYXNvbiA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhyZWFzb24pXG4gICAgfVxuXG4gICAgLy8gMS4gSWYgY29kZSBpcyBwcmVzZW50LCBidXQgaXMgbmVpdGhlciBhbiBpbnRlZ2VyIGVxdWFsIHRvIDEwMDAgbm9yIGFuXG4gICAgLy8gICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgMzAwMCB0byA0OTk5LCBpbmNsdXNpdmUsIHRocm93IGFuXG4gICAgLy8gICAgXCJJbnZhbGlkQWNjZXNzRXJyb3JcIiBET01FeGNlcHRpb24uXG4gICAgaWYgKGNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvZGUgIT09IDEwMDAgJiYgKGNvZGUgPCAzMDAwIHx8IGNvZGUgPiA0OTk5KSkge1xuICAgICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdpbnZhbGlkIGNvZGUnLCAnSW52YWxpZEFjY2Vzc0Vycm9yJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVhc29uQnl0ZUxlbmd0aCA9IDBcblxuICAgIC8vIDIuIElmIHJlYXNvbiBpcyBwcmVzZW50LCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICBpZiAocmVhc29uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIDEuIExldCByZWFzb25CeXRlcyBiZSB0aGUgcmVzdWx0IG9mIGVuY29kaW5nIHJlYXNvbi5cbiAgICAgIC8vIDIuIElmIHJlYXNvbkJ5dGVzIGlzIGxvbmdlciB0aGFuIDEyMyBieXRlcywgdGhlbiB0aHJvdyBhXG4gICAgICAvLyAgICBcIlN5bnRheEVycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgICAgcmVhc29uQnl0ZUxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlYXNvbilcblxuICAgICAgaWYgKHJlYXNvbkJ5dGVMZW5ndGggPiAxMjMpIHtcbiAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihcbiAgICAgICAgICBgUmVhc29uIG11c3QgYmUgbGVzcyB0aGFuIDEyMyBieXRlczsgcmVjZWl2ZWQgJHtyZWFzb25CeXRlTGVuZ3RofWAsXG4gICAgICAgICAgJ1N5bnRheEVycm9yJ1xuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4gUnVuIHRoZSBmaXJzdCBtYXRjaGluZyBzdGVwcyBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDpcbiAgICBpZiAodGhpc1trUmVhZHlTdGF0ZV0gPT09IFdlYlNvY2tldC5DTE9TSU5HIHx8IHRoaXNba1JlYWR5U3RhdGVdID09PSBXZWJTb2NrZXQuQ0xPU0VEKSB7XG4gICAgICAvLyBJZiB0aGlzJ3MgcmVhZHkgc3RhdGUgaXMgQ0xPU0lORyAoMikgb3IgQ0xPU0VEICgzKVxuICAgICAgLy8gRG8gbm90aGluZy5cbiAgICB9IGVsc2UgaWYgKCFpc0VzdGFibGlzaGVkKHRoaXMpKSB7XG4gICAgICAvLyBJZiB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgbm90IHlldCBlc3RhYmxpc2hlZFxuICAgICAgLy8gRmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIHNldCB0aGlzJ3MgcmVhZHkgc3RhdGVcbiAgICAgIC8vIHRvIENMT1NJTkcgKDIpLlxuICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24odGhpcywgJ0Nvbm5lY3Rpb24gd2FzIGNsb3NlZCBiZWZvcmUgaXQgd2FzIGVzdGFibGlzaGVkLicpXG4gICAgICB0aGlzW2tSZWFkeVN0YXRlXSA9IFdlYlNvY2tldC5DTE9TSU5HXG4gICAgfSBlbHNlIGlmICghaXNDbG9zaW5nKHRoaXMpKSB7XG4gICAgICAvLyBJZiB0aGUgV2ViU29ja2V0IGNsb3NpbmcgaGFuZHNoYWtlIGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZFxuICAgICAgLy8gU3RhcnQgdGhlIFdlYlNvY2tldCBjbG9zaW5nIGhhbmRzaGFrZSBhbmQgc2V0IHRoaXMncyByZWFkeVxuICAgICAgLy8gc3RhdGUgdG8gQ0xPU0lORyAoMikuXG4gICAgICAvLyAtIElmIG5laXRoZXIgY29kZSBub3IgcmVhc29uIGlzIHByZXNlbnQsIHRoZSBXZWJTb2NrZXQgQ2xvc2VcbiAgICAgIC8vICAgbWVzc2FnZSBtdXN0IG5vdCBoYXZlIGEgYm9keS5cbiAgICAgIC8vIC0gSWYgY29kZSBpcyBwcmVzZW50LCB0aGVuIHRoZSBzdGF0dXMgY29kZSB0byB1c2UgaW4gdGhlXG4gICAgICAvLyAgIFdlYlNvY2tldCBDbG9zZSBtZXNzYWdlIG11c3QgYmUgdGhlIGludGVnZXIgZ2l2ZW4gYnkgY29kZS5cbiAgICAgIC8vIC0gSWYgcmVhc29uIGlzIGFsc28gcHJlc2VudCwgdGhlbiByZWFzb25CeXRlcyBtdXN0IGJlXG4gICAgICAvLyAgIHByb3ZpZGVkIGluIHRoZSBDbG9zZSBtZXNzYWdlIGFmdGVyIHRoZSBzdGF0dXMgY29kZS5cblxuICAgICAgY29uc3QgZnJhbWUgPSBuZXcgV2Vic29ja2V0RnJhbWVTZW5kKClcblxuICAgICAgLy8gSWYgbmVpdGhlciBjb2RlIG5vciByZWFzb24gaXMgcHJlc2VudCwgdGhlIFdlYlNvY2tldCBDbG9zZVxuICAgICAgLy8gbWVzc2FnZSBtdXN0IG5vdCBoYXZlIGEgYm9keS5cblxuICAgICAgLy8gSWYgY29kZSBpcyBwcmVzZW50LCB0aGVuIHRoZSBzdGF0dXMgY29kZSB0byB1c2UgaW4gdGhlXG4gICAgICAvLyBXZWJTb2NrZXQgQ2xvc2UgbWVzc2FnZSBtdXN0IGJlIHRoZSBpbnRlZ2VyIGdpdmVuIGJ5IGNvZGUuXG4gICAgICBpZiAoY29kZSAhPT0gdW5kZWZpbmVkICYmIHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZyYW1lLmZyYW1lRGF0YSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyKVxuICAgICAgICBmcmFtZS5mcmFtZURhdGEud3JpdGVVSW50MTZCRShjb2RlLCAwKVxuICAgICAgfSBlbHNlIGlmIChjb2RlICE9PSB1bmRlZmluZWQgJiYgcmVhc29uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gSWYgcmVhc29uIGlzIGFsc28gcHJlc2VudCwgdGhlbiByZWFzb25CeXRlcyBtdXN0IGJlXG4gICAgICAgIC8vIHByb3ZpZGVkIGluIHRoZSBDbG9zZSBtZXNzYWdlIGFmdGVyIHRoZSBzdGF0dXMgY29kZS5cbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIgKyByZWFzb25CeXRlTGVuZ3RoKVxuICAgICAgICBmcmFtZS5mcmFtZURhdGEud3JpdGVVSW50MTZCRShjb2RlLCAwKVxuICAgICAgICAvLyB0aGUgYm9keSBNQVkgY29udGFpbiBVVEYtOC1lbmNvZGVkIGRhdGEgd2l0aCB2YWx1ZSAvcmVhc29uL1xuICAgICAgICBmcmFtZS5mcmFtZURhdGEud3JpdGUocmVhc29uLCAyLCAndXRmLTgnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhID0gZW1wdHlCdWZmZXJcbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtpbXBvcnQoJ3N0cmVhbScpLkR1cGxleH0gKi9cbiAgICAgIGNvbnN0IHNvY2tldCA9IHRoaXNba1Jlc3BvbnNlXS5zb2NrZXRcblxuICAgICAgc29ja2V0LndyaXRlKGZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuQ0xPU0UpLCAoZXJyKSA9PiB7XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgdGhpc1trU2VudENsb3NlXSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gVXBvbiBlaXRoZXIgc2VuZGluZyBvciByZWNlaXZpbmcgYSBDbG9zZSBjb250cm9sIGZyYW1lLCBpdCBpcyBzYWlkXG4gICAgICAvLyB0aGF0IF9UaGUgV2ViU29ja2V0IENsb3NpbmcgSGFuZHNoYWtlIGlzIFN0YXJ0ZWRfIGFuZCB0aGF0IHRoZVxuICAgICAgLy8gV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgaW4gdGhlIENMT1NJTkcgc3RhdGUuXG4gICAgICB0aGlzW2tSZWFkeVN0YXRlXSA9IHN0YXRlcy5DTE9TSU5HXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgLy8gU2V0IHRoaXMncyByZWFkeSBzdGF0ZSB0byBDTE9TSU5HICgyKS5cbiAgICAgIHRoaXNba1JlYWR5U3RhdGVdID0gV2ViU29ja2V0LkNMT1NJTkdcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNkb20td2Vic29ja2V0LXNlbmRcbiAgICogQHBhcmFtIHtOb2RlSlMuVHlwZWRBcnJheXxBcnJheUJ1ZmZlcnxCbG9ifHN0cmluZ30gZGF0YVxuICAgKi9cbiAgc2VuZCAoZGF0YSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdXZWJTb2NrZXQuc2VuZCcgfSlcblxuICAgIGRhdGEgPSB3ZWJpZGwuY29udmVydGVycy5XZWJTb2NrZXRTZW5kRGF0YShkYXRhKVxuXG4gICAgLy8gMS4gSWYgdGhpcydzIHJlYWR5IHN0YXRlIGlzIENPTk5FQ1RJTkcsIHRoZW4gdGhyb3cgYW5cbiAgICAvLyAgICBcIkludmFsaWRTdGF0ZUVycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgIGlmICh0aGlzW2tSZWFkeVN0YXRlXSA9PT0gV2ViU29ja2V0LkNPTk5FQ1RJTkcpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oJ1NlbnQgYmVmb3JlIGNvbm5lY3RlZC4nLCAnSW52YWxpZFN0YXRlRXJyb3InKVxuICAgIH1cblxuICAgIC8vIDIuIFJ1biB0aGUgYXBwcm9wcmlhdGUgc2V0IG9mIHN0ZXBzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OlxuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTYuMVxuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuMlxuXG4gICAgaWYgKCFpc0VzdGFibGlzaGVkKHRoaXMpIHx8IGlzQ2xvc2luZyh0aGlzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoJ3N0cmVhbScpLkR1cGxleH0gKi9cbiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW2tSZXNwb25zZV0uc29ja2V0XG5cbiAgICAvLyBJZiBkYXRhIGlzIGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gSWYgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGFuZCB0aGUgV2ViU29ja2V0XG4gICAgICAvLyBjbG9zaW5nIGhhbmRzaGFrZSBoYXMgbm90IHlldCBzdGFydGVkLCB0aGVuIHRoZSB1c2VyIGFnZW50XG4gICAgICAvLyBtdXN0IHNlbmQgYSBXZWJTb2NrZXQgTWVzc2FnZSBjb21wcmlzZWQgb2YgdGhlIGRhdGEgYXJndW1lbnRcbiAgICAgIC8vIHVzaW5nIGEgdGV4dCBmcmFtZSBvcGNvZGU7IGlmIHRoZSBkYXRhIGNhbm5vdCBiZSBzZW50LCBlLmcuXG4gICAgICAvLyBiZWNhdXNlIGl0IHdvdWxkIG5lZWQgdG8gYmUgYnVmZmVyZWQgYnV0IHRoZSBidWZmZXIgaXMgZnVsbCxcbiAgICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgZmxhZyB0aGUgV2ViU29ja2V0IGFzIGZ1bGwgYW5kIHRoZW4gY2xvc2VcbiAgICAgIC8vIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gQW55IGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2l0aCBhXG4gICAgICAvLyBzdHJpbmcgYXJndW1lbnQgdGhhdCBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gbXVzdCBpbmNyZWFzZVxuICAgICAgLy8gdGhlIGJ1ZmZlcmVkQW1vdW50IGF0dHJpYnV0ZSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0b1xuICAgICAgLy8gZXhwcmVzcyB0aGUgYXJndW1lbnQgYXMgVVRGLTguXG5cbiAgICAgIGNvbnN0IHZhbHVlID0gQnVmZmVyLmZyb20oZGF0YSlcbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZCh2YWx1ZSlcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuVEVYVClcblxuICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgKz0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgc29ja2V0LndyaXRlKGJ1ZmZlciwgKCkgPT4ge1xuICAgICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCAtPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodHlwZXMuaXNBcnJheUJ1ZmZlcihkYXRhKSkge1xuICAgICAgLy8gSWYgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLCBhbmQgdGhlIFdlYlNvY2tldFxuICAgICAgLy8gY2xvc2luZyBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgc3RhcnRlZCwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0XG4gICAgICAvLyBzZW5kIGEgV2ViU29ja2V0IE1lc3NhZ2UgY29tcHJpc2VkIG9mIGRhdGEgdXNpbmcgYSBiaW5hcnkgZnJhbWVcbiAgICAgIC8vIG9wY29kZTsgaWYgdGhlIGRhdGEgY2Fubm90IGJlIHNlbnQsIGUuZy4gYmVjYXVzZSBpdCB3b3VsZCBuZWVkXG4gICAgICAvLyB0byBiZSBidWZmZXJlZCBidXQgdGhlIGJ1ZmZlciBpcyBmdWxsLCB0aGUgdXNlciBhZ2VudCBtdXN0IGZsYWdcbiAgICAgIC8vIHRoZSBXZWJTb2NrZXQgYXMgZnVsbCBhbmQgdGhlbiBjbG9zZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uXG4gICAgICAvLyBUaGUgZGF0YSB0byBiZSBzZW50IGlzIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgYnVmZmVyIGRlc2NyaWJlZFxuICAgICAgLy8gYnkgdGhlIEFycmF5QnVmZmVyIG9iamVjdC4gQW55IGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2l0aCBhblxuICAgICAgLy8gQXJyYXlCdWZmZXIgYXJndW1lbnQgdGhhdCBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gbXVzdFxuICAgICAgLy8gaW5jcmVhc2UgdGhlIGJ1ZmZlcmVkQW1vdW50IGF0dHJpYnV0ZSBieSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgLy8gQXJyYXlCdWZmZXIgaW4gYnl0ZXMuXG5cbiAgICAgIGNvbnN0IHZhbHVlID0gQnVmZmVyLmZyb20oZGF0YSlcbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZCh2YWx1ZSlcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuQklOQVJZKVxuXG4gICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCArPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgICBzb2NrZXQud3JpdGUoYnVmZmVyLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuI2J1ZmZlcmVkQW1vdW50IC09IHZhbHVlLmJ5dGVMZW5ndGhcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZGF0YSkpIHtcbiAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgYW5kIHRoZSBXZWJTb2NrZXRcbiAgICAgIC8vIGNsb3NpbmcgaGFuZHNoYWtlIGhhcyBub3QgeWV0IHN0YXJ0ZWQsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdFxuICAgICAgLy8gc2VuZCBhIFdlYlNvY2tldCBNZXNzYWdlIGNvbXByaXNlZCBvZiBkYXRhIHVzaW5nIGEgYmluYXJ5IGZyYW1lXG4gICAgICAvLyBvcGNvZGU7IGlmIHRoZSBkYXRhIGNhbm5vdCBiZSBzZW50LCBlLmcuIGJlY2F1c2UgaXQgd291bGQgbmVlZCB0b1xuICAgICAgLy8gYmUgYnVmZmVyZWQgYnV0IHRoZSBidWZmZXIgaXMgZnVsbCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmbGFnIHRoZVxuICAgICAgLy8gV2ViU29ja2V0IGFzIGZ1bGwgYW5kIHRoZW4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBUaGVcbiAgICAgIC8vIGRhdGEgdG8gYmUgc2VudCBpcyB0aGUgZGF0YSBzdG9yZWQgaW4gdGhlIHNlY3Rpb24gb2YgdGhlIGJ1ZmZlclxuICAgICAgLy8gZGVzY3JpYmVkIGJ5IHRoZSBBcnJheUJ1ZmZlciBvYmplY3QgdGhhdCBkYXRhIHJlZmVyZW5jZXMuIEFueVxuICAgICAgLy8gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCB3aXRoIHRoaXMga2luZCBvZiBhcmd1bWVudCB0aGF0IGRvZXNcbiAgICAgIC8vIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gbXVzdCBpbmNyZWFzZSB0aGUgYnVmZmVyZWRBbW91bnQgYXR0cmlidXRlXG4gICAgICAvLyBieSB0aGUgbGVuZ3RoIG9mIGRhdGFcdTIwMTlzIGJ1ZmZlciBpbiBieXRlcy5cblxuICAgICAgY29uc3QgYWIgPSBCdWZmZXIuZnJvbShkYXRhLCBkYXRhLmJ5dGVPZmZzZXQsIGRhdGEuYnl0ZUxlbmd0aClcblxuICAgICAgY29uc3QgZnJhbWUgPSBuZXcgV2Vic29ja2V0RnJhbWVTZW5kKGFiKVxuICAgICAgY29uc3QgYnVmZmVyID0gZnJhbWUuY3JlYXRlRnJhbWUob3Bjb2Rlcy5CSU5BUlkpXG5cbiAgICAgIHRoaXMuI2J1ZmZlcmVkQW1vdW50ICs9IGFiLmJ5dGVMZW5ndGhcbiAgICAgIHNvY2tldC53cml0ZShidWZmZXIsICgpID0+IHtcbiAgICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgLT0gYWIuYnl0ZUxlbmd0aFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGlzQmxvYkxpa2UoZGF0YSkpIHtcbiAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgYW5kIHRoZSBXZWJTb2NrZXRcbiAgICAgIC8vIGNsb3NpbmcgaGFuZHNoYWtlIGhhcyBub3QgeWV0IHN0YXJ0ZWQsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdFxuICAgICAgLy8gc2VuZCBhIFdlYlNvY2tldCBNZXNzYWdlIGNvbXByaXNlZCBvZiBkYXRhIHVzaW5nIGEgYmluYXJ5IGZyYW1lXG4gICAgICAvLyBvcGNvZGU7IGlmIHRoZSBkYXRhIGNhbm5vdCBiZSBzZW50LCBlLmcuIGJlY2F1c2UgaXQgd291bGQgbmVlZCB0b1xuICAgICAgLy8gYmUgYnVmZmVyZWQgYnV0IHRoZSBidWZmZXIgaXMgZnVsbCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmbGFnIHRoZVxuICAgICAgLy8gV2ViU29ja2V0IGFzIGZ1bGwgYW5kIHRoZW4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBUaGUgZGF0YVxuICAgICAgLy8gdG8gYmUgc2VudCBpcyB0aGUgcmF3IGRhdGEgcmVwcmVzZW50ZWQgYnkgdGhlIEJsb2Igb2JqZWN0LiBBbnlcbiAgICAgIC8vIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2l0aCBhIEJsb2IgYXJndW1lbnQgdGhhdCBkb2VzIG5vdCB0aHJvd1xuICAgICAgLy8gYW4gZXhjZXB0aW9uIG11c3QgaW5jcmVhc2UgdGhlIGJ1ZmZlcmVkQW1vdW50IGF0dHJpYnV0ZSBieSB0aGUgc2l6ZVxuICAgICAgLy8gb2YgdGhlIEJsb2Igb2JqZWN0XHUyMDE5cyByYXcgZGF0YSwgaW4gYnl0ZXMuXG5cbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZCgpXG5cbiAgICAgIGRhdGEuYXJyYXlCdWZmZXIoKS50aGVuKChhYikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IEJ1ZmZlci5mcm9tKGFiKVxuICAgICAgICBmcmFtZS5mcmFtZURhdGEgPSB2YWx1ZVxuICAgICAgICBjb25zdCBidWZmZXIgPSBmcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLkJJTkFSWSlcblxuICAgICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCArPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgICAgIHNvY2tldC53cml0ZShidWZmZXIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCAtPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldCByZWFkeVN0YXRlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICAvLyBUaGUgcmVhZHlTdGF0ZSBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzJ3MgcmVhZHkgc3RhdGUuXG4gICAgcmV0dXJuIHRoaXNba1JlYWR5U3RhdGVdXG4gIH1cblxuICBnZXQgYnVmZmVyZWRBbW91bnQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHJldHVybiB0aGlzLiNidWZmZXJlZEFtb3VudFxuICB9XG5cbiAgZ2V0IHVybCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgLy8gVGhlIHVybCBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzJ3MgdXJsLCBzZXJpYWxpemVkLlxuICAgIHJldHVybiBVUkxTZXJpYWxpemVyKHRoaXNba1dlYlNvY2tldFVSTF0pXG4gIH1cblxuICBnZXQgZXh0ZW5zaW9ucyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V4dGVuc2lvbnNcbiAgfVxuXG4gIGdldCBwcm90b2NvbCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgcmV0dXJuIHRoaXMuI3Byb3RvY29sXG4gIH1cblxuICBnZXQgb25vcGVuICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRzLm9wZW5cbiAgfVxuXG4gIHNldCBvbm9wZW4gKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgaWYgKHRoaXMuI2V2ZW50cy5vcGVuKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29wZW4nLCB0aGlzLiNldmVudHMub3BlbilcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLiNldmVudHMub3BlbiA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jZXZlbnRzLm9wZW4gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uZXJyb3IgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHJldHVybiB0aGlzLiNldmVudHMuZXJyb3JcbiAgfVxuXG4gIHNldCBvbmVycm9yIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIGlmICh0aGlzLiNldmVudHMuZXJyb3IpIHtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCB0aGlzLiNldmVudHMuZXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy4jZXZlbnRzLmVycm9yID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jZXZlbnRzLmVycm9yID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBvbmNsb3NlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRzLmNsb3NlXG4gIH1cblxuICBzZXQgb25jbG9zZSAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICBpZiAodGhpcy4jZXZlbnRzLmNsb3NlKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgdGhpcy4jZXZlbnRzLmNsb3NlKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5jbG9zZSA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5jbG9zZSA9IG51bGxcbiAgICB9XG4gIH1cblxuICBnZXQgb25tZXNzYWdlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRzLm1lc3NhZ2VcbiAgfVxuXG4gIHNldCBvbm1lc3NhZ2UgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgaWYgKHRoaXMuI2V2ZW50cy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLiNldmVudHMubWVzc2FnZSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLiNldmVudHMubWVzc2FnZSA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jZXZlbnRzLm1lc3NhZ2UgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IGJpbmFyeVR5cGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHJldHVybiB0aGlzW2tCaW5hcnlUeXBlXVxuICB9XG5cbiAgc2V0IGJpbmFyeVR5cGUgKHR5cGUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICBpZiAodHlwZSAhPT0gJ2Jsb2InICYmIHR5cGUgIT09ICdhcnJheWJ1ZmZlcicpIHtcbiAgICAgIHRoaXNba0JpbmFyeVR5cGVdID0gJ2Jsb2InXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0JpbmFyeVR5cGVdID0gdHlwZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2ZlZWRiYWNrLWZyb20tdGhlLXByb3RvY29sXG4gICAqL1xuICAjb25Db25uZWN0aW9uRXN0YWJsaXNoZWQgKHJlc3BvbnNlKSB7XG4gICAgLy8gcHJvY2Vzc1Jlc3BvbnNlIGlzIGNhbGxlZCB3aGVuIHRoZSBcInJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdCBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaW5pdGlhbGl6ZWQuXCJcbiAgICAvLyBvbmNlIHRoaXMgaGFwcGVucywgdGhlIGNvbm5lY3Rpb24gaXMgb3BlblxuICAgIHRoaXNba1Jlc3BvbnNlXSA9IHJlc3BvbnNlXG5cbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgQnl0ZVBhcnNlcih0aGlzKVxuICAgIHBhcnNlci5vbignZHJhaW4nLCBmdW5jdGlvbiBvblBhcnNlckRyYWluICgpIHtcbiAgICAgIHRoaXMud3Nba1Jlc3BvbnNlXS5zb2NrZXQucmVzdW1lKClcbiAgICB9KVxuXG4gICAgcmVzcG9uc2Uuc29ja2V0LndzID0gdGhpc1xuICAgIHRoaXNba0J5dGVQYXJzZXJdID0gcGFyc2VyXG5cbiAgICAvLyAxLiBDaGFuZ2UgdGhlIHJlYWR5IHN0YXRlIHRvIE9QRU4gKDEpLlxuICAgIHRoaXNba1JlYWR5U3RhdGVdID0gc3RhdGVzLk9QRU5cblxuICAgIC8vIDIuIENoYW5nZSB0aGUgZXh0ZW5zaW9ucyBhdHRyaWJ1dGVcdTIwMTlzIHZhbHVlIHRvIHRoZSBleHRlbnNpb25zIGluIHVzZSwgaWZcbiAgICAvLyAgICBpdCBpcyBub3QgdGhlIG51bGwgdmFsdWUuXG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tOS4xXG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJylcblxuICAgIGlmIChleHRlbnNpb25zICE9PSBudWxsKSB7XG4gICAgICB0aGlzLiNleHRlbnNpb25zID0gZXh0ZW5zaW9uc1xuICAgIH1cblxuICAgIC8vIDMuIENoYW5nZSB0aGUgcHJvdG9jb2wgYXR0cmlidXRlXHUyMDE5cyB2YWx1ZSB0byB0aGUgc3VicHJvdG9jb2wgaW4gdXNlLCBpZlxuICAgIC8vICAgIGl0IGlzIG5vdCB0aGUgbnVsbCB2YWx1ZS5cbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY0NTUjc2VjdGlvbi0xLjlcbiAgICBjb25zdCBwcm90b2NvbCA9IHJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgnc2VjLXdlYnNvY2tldC1wcm90b2NvbCcpXG5cbiAgICBpZiAocHJvdG9jb2wgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuI3Byb3RvY29sID0gcHJvdG9jb2xcbiAgICB9XG5cbiAgICAvLyA0LiBGaXJlIGFuIGV2ZW50IG5hbWVkIG9wZW4gYXQgdGhlIFdlYlNvY2tldCBvYmplY3QuXG4gICAgZmlyZUV2ZW50KCdvcGVuJywgdGhpcylcbiAgfVxufVxuXG4vLyBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNkb20td2Vic29ja2V0LWNvbm5lY3RpbmdcbldlYlNvY2tldC5DT05ORUNUSU5HID0gV2ViU29ja2V0LnByb3RvdHlwZS5DT05ORUNUSU5HID0gc3RhdGVzLkNPTk5FQ1RJTkdcbi8vIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2RvbS13ZWJzb2NrZXQtb3BlblxuV2ViU29ja2V0Lk9QRU4gPSBXZWJTb2NrZXQucHJvdG90eXBlLk9QRU4gPSBzdGF0ZXMuT1BFTlxuLy8gaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZG9tLXdlYnNvY2tldC1jbG9zaW5nXG5XZWJTb2NrZXQuQ0xPU0lORyA9IFdlYlNvY2tldC5wcm90b3R5cGUuQ0xPU0lORyA9IHN0YXRlcy5DTE9TSU5HXG4vLyBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNkb20td2Vic29ja2V0LWNsb3NlZFxuV2ViU29ja2V0LkNMT1NFRCA9IFdlYlNvY2tldC5wcm90b3R5cGUuQ0xPU0VEID0gc3RhdGVzLkNMT1NFRFxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhXZWJTb2NrZXQucHJvdG90eXBlLCB7XG4gIENPTk5FQ1RJTkc6IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIE9QRU46IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIENMT1NJTkc6IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIENMT1NFRDogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgdXJsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWFkeVN0YXRlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBidWZmZXJlZEFtb3VudDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25vcGVuOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBvbmVycm9yOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBvbmNsb3NlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjbG9zZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25tZXNzYWdlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBiaW5hcnlUeXBlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBzZW5kOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBleHRlbnNpb25zOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBwcm90b2NvbDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ1dlYlNvY2tldCcsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhXZWJTb2NrZXQsIHtcbiAgQ09OTkVDVElORzogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgT1BFTjogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgQ0xPU0lORzogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgQ0xPU0VEOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzXG59KVxuXG53ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8RE9NU3RyaW5nPiddID0gd2ViaWRsLnNlcXVlbmNlQ29udmVydGVyKFxuICB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmdcbilcblxud2ViaWRsLmNvbnZlcnRlcnNbJ0RPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+J10gPSBmdW5jdGlvbiAoVikge1xuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSA9PT0gJ09iamVjdCcgJiYgU3ltYm9sLml0ZXJhdG9yIGluIFYpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPERPTVN0cmluZz4nXShWKVxuICB9XG5cbiAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyhWKVxufVxuXG4vLyBUaGlzIGltcGxlbWVudHMgdGhlIHByb3BzYWwgbWFkZSBpbiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3dlYnNvY2tldHMvaXNzdWVzLzQyXG53ZWJpZGwuY29udmVydGVycy5XZWJTb2NrZXRJbml0ID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoW1xuICB7XG4gICAga2V5OiAncHJvdG9jb2xzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzWydET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPiddLFxuICAgIGdldCBkZWZhdWx0VmFsdWUgKCkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICB9LFxuICB7XG4gICAga2V5OiAnZGlzcGF0Y2hlcicsXG4gICAgY29udmVydGVyOiAoVikgPT4gVixcbiAgICBnZXQgZGVmYXVsdFZhbHVlICgpIHtcbiAgICAgIHJldHVybiBnZXRHbG9iYWxEaXNwYXRjaGVyKClcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBrZXk6ICdoZWFkZXJzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcih3ZWJpZGwuY29udmVydGVycy5IZWFkZXJzSW5pdClcbiAgfVxuXSlcblxud2ViaWRsLmNvbnZlcnRlcnNbJ0RPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+IG9yIFdlYlNvY2tldEluaXQnXSA9IGZ1bmN0aW9uIChWKSB7XG4gIGlmICh3ZWJpZGwudXRpbC5UeXBlKFYpID09PSAnT2JqZWN0JyAmJiAhKFN5bWJvbC5pdGVyYXRvciBpbiBWKSkge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5XZWJTb2NrZXRJbml0KFYpXG4gIH1cblxuICByZXR1cm4geyBwcm90b2NvbHM6IHdlYmlkbC5jb252ZXJ0ZXJzWydET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPiddKFYpIH1cbn1cblxud2ViaWRsLmNvbnZlcnRlcnMuV2ViU29ja2V0U2VuZERhdGEgPSBmdW5jdGlvbiAoVikge1xuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSA9PT0gJ09iamVjdCcpIHtcbiAgICBpZiAoaXNCbG9iTGlrZShWKSkge1xuICAgICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoViwgeyBzdHJpY3Q6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhWKSB8fCB0eXBlcy5pc0FueUFycmF5QnVmZmVyKFYpKSB7XG4gICAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuQnVmZmVyU291cmNlKFYpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhWKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgV2ViU29ja2V0XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IENsaWVudCA9IHJlcXVpcmUoJy4vbGliL2NsaWVudCcpXG5jb25zdCBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi9saWIvZGlzcGF0Y2hlcicpXG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9jb3JlL2Vycm9ycycpXG5jb25zdCBQb29sID0gcmVxdWlyZSgnLi9saWIvcG9vbCcpXG5jb25zdCBCYWxhbmNlZFBvb2wgPSByZXF1aXJlKCcuL2xpYi9iYWxhbmNlZC1wb29sJylcbmNvbnN0IEFnZW50ID0gcmVxdWlyZSgnLi9saWIvYWdlbnQnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4vbGliL2NvcmUvdXRpbCcpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSBlcnJvcnNcbmNvbnN0IGFwaSA9IHJlcXVpcmUoJy4vbGliL2FwaScpXG5jb25zdCBidWlsZENvbm5lY3RvciA9IHJlcXVpcmUoJy4vbGliL2NvcmUvY29ubmVjdCcpXG5jb25zdCBNb2NrQ2xpZW50ID0gcmVxdWlyZSgnLi9saWIvbW9jay9tb2NrLWNsaWVudCcpXG5jb25zdCBNb2NrQWdlbnQgPSByZXF1aXJlKCcuL2xpYi9tb2NrL21vY2stYWdlbnQnKVxuY29uc3QgTW9ja1Bvb2wgPSByZXF1aXJlKCcuL2xpYi9tb2NrL21vY2stcG9vbCcpXG5jb25zdCBtb2NrRXJyb3JzID0gcmVxdWlyZSgnLi9saWIvbW9jay9tb2NrLWVycm9ycycpXG5jb25zdCBQcm94eUFnZW50ID0gcmVxdWlyZSgnLi9saWIvcHJveHktYWdlbnQnKVxuY29uc3QgUmV0cnlIYW5kbGVyID0gcmVxdWlyZSgnLi9saWIvaGFuZGxlci9SZXRyeUhhbmRsZXInKVxuY29uc3QgeyBnZXRHbG9iYWxEaXNwYXRjaGVyLCBzZXRHbG9iYWxEaXNwYXRjaGVyIH0gPSByZXF1aXJlKCcuL2xpYi9nbG9iYWwnKVxuY29uc3QgRGVjb3JhdG9ySGFuZGxlciA9IHJlcXVpcmUoJy4vbGliL2hhbmRsZXIvRGVjb3JhdG9ySGFuZGxlcicpXG5jb25zdCBSZWRpcmVjdEhhbmRsZXIgPSByZXF1aXJlKCcuL2xpYi9oYW5kbGVyL1JlZGlyZWN0SGFuZGxlcicpXG5jb25zdCBjcmVhdGVSZWRpcmVjdEludGVyY2VwdG9yID0gcmVxdWlyZSgnLi9saWIvaW50ZXJjZXB0b3IvcmVkaXJlY3RJbnRlcmNlcHRvcicpXG5cbmxldCBoYXNDcnlwdG9cbnRyeSB7XG4gIHJlcXVpcmUoJ2NyeXB0bycpXG4gIGhhc0NyeXB0byA9IHRydWVcbn0gY2F0Y2gge1xuICBoYXNDcnlwdG8gPSBmYWxzZVxufVxuXG5PYmplY3QuYXNzaWduKERpc3BhdGNoZXIucHJvdG90eXBlLCBhcGkpXG5cbm1vZHVsZS5leHBvcnRzLkRpc3BhdGNoZXIgPSBEaXNwYXRjaGVyXG5tb2R1bGUuZXhwb3J0cy5DbGllbnQgPSBDbGllbnRcbm1vZHVsZS5leHBvcnRzLlBvb2wgPSBQb29sXG5tb2R1bGUuZXhwb3J0cy5CYWxhbmNlZFBvb2wgPSBCYWxhbmNlZFBvb2xcbm1vZHVsZS5leHBvcnRzLkFnZW50ID0gQWdlbnRcbm1vZHVsZS5leHBvcnRzLlByb3h5QWdlbnQgPSBQcm94eUFnZW50XG5tb2R1bGUuZXhwb3J0cy5SZXRyeUhhbmRsZXIgPSBSZXRyeUhhbmRsZXJcblxubW9kdWxlLmV4cG9ydHMuRGVjb3JhdG9ySGFuZGxlciA9IERlY29yYXRvckhhbmRsZXJcbm1vZHVsZS5leHBvcnRzLlJlZGlyZWN0SGFuZGxlciA9IFJlZGlyZWN0SGFuZGxlclxubW9kdWxlLmV4cG9ydHMuY3JlYXRlUmVkaXJlY3RJbnRlcmNlcHRvciA9IGNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3JcblxubW9kdWxlLmV4cG9ydHMuYnVpbGRDb25uZWN0b3IgPSBidWlsZENvbm5lY3RvclxubW9kdWxlLmV4cG9ydHMuZXJyb3JzID0gZXJyb3JzXG5cbmZ1bmN0aW9uIG1ha2VEaXNwYXRjaGVyIChmbikge1xuICByZXR1cm4gKHVybCwgb3B0cywgaGFuZGxlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlciA9IG9wdHNcbiAgICAgIG9wdHMgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKCF1cmwgfHwgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnICYmIHR5cGVvZiB1cmwgIT09ICdvYmplY3QnICYmICEodXJsIGluc3RhbmNlb2YgVVJMKSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCB1cmwnKVxuICAgIH1cblxuICAgIGlmIChvcHRzICE9IG51bGwgJiYgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cycpXG4gICAgfVxuXG4gICAgaWYgKG9wdHMgJiYgb3B0cy5wYXRoICE9IG51bGwpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0cy5wYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cy5wYXRoJylcbiAgICAgIH1cblxuICAgICAgbGV0IHBhdGggPSBvcHRzLnBhdGhcbiAgICAgIGlmICghb3B0cy5wYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBwYXRoID0gYC8ke3BhdGh9YFxuICAgICAgfVxuXG4gICAgICB1cmwgPSBuZXcgVVJMKHV0aWwucGFyc2VPcmlnaW4odXJsKS5vcmlnaW4gKyBwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdHMpIHtcbiAgICAgICAgb3B0cyA9IHR5cGVvZiB1cmwgPT09ICdvYmplY3QnID8gdXJsIDoge31cbiAgICAgIH1cblxuICAgICAgdXJsID0gdXRpbC5wYXJzZVVSTCh1cmwpXG4gICAgfVxuXG4gICAgY29uc3QgeyBhZ2VudCwgZGlzcGF0Y2hlciA9IGdldEdsb2JhbERpc3BhdGNoZXIoKSB9ID0gb3B0c1xuXG4gICAgaWYgKGFnZW50KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3Vuc3VwcG9ydGVkIG9wdHMuYWdlbnQuIERpZCB5b3UgbWVhbiBvcHRzLmNsaWVudD8nKVxuICAgIH1cblxuICAgIHJldHVybiBmbi5jYWxsKGRpc3BhdGNoZXIsIHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBvcmlnaW46IHVybC5vcmlnaW4sXG4gICAgICBwYXRoOiB1cmwuc2VhcmNoID8gYCR7dXJsLnBhdGhuYW1lfSR7dXJsLnNlYXJjaH1gIDogdXJsLnBhdGhuYW1lLFxuICAgICAgbWV0aG9kOiBvcHRzLm1ldGhvZCB8fCAob3B0cy5ib2R5ID8gJ1BVVCcgOiAnR0VUJylcbiAgICB9LCBoYW5kbGVyKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzLnNldEdsb2JhbERpc3BhdGNoZXIgPSBzZXRHbG9iYWxEaXNwYXRjaGVyXG5tb2R1bGUuZXhwb3J0cy5nZXRHbG9iYWxEaXNwYXRjaGVyID0gZ2V0R2xvYmFsRGlzcGF0Y2hlclxuXG5pZiAodXRpbC5ub2RlTWFqb3IgPiAxNiB8fCAodXRpbC5ub2RlTWFqb3IgPT09IDE2ICYmIHV0aWwubm9kZU1pbm9yID49IDgpKSB7XG4gIGxldCBmZXRjaEltcGwgPSBudWxsXG4gIG1vZHVsZS5leHBvcnRzLmZldGNoID0gYXN5bmMgZnVuY3Rpb24gZmV0Y2ggKHJlc291cmNlKSB7XG4gICAgaWYgKCFmZXRjaEltcGwpIHtcbiAgICAgIGZldGNoSW1wbCA9IHJlcXVpcmUoJy4vbGliL2ZldGNoJykuZmV0Y2hcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZldGNoSW1wbCguLi5hcmd1bWVudHMpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodHlwZW9mIGVyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB0aGlzKVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cbiAgbW9kdWxlLmV4cG9ydHMuSGVhZGVycyA9IHJlcXVpcmUoJy4vbGliL2ZldGNoL2hlYWRlcnMnKS5IZWFkZXJzXG4gIG1vZHVsZS5leHBvcnRzLlJlc3BvbnNlID0gcmVxdWlyZSgnLi9saWIvZmV0Y2gvcmVzcG9uc2UnKS5SZXNwb25zZVxuICBtb2R1bGUuZXhwb3J0cy5SZXF1ZXN0ID0gcmVxdWlyZSgnLi9saWIvZmV0Y2gvcmVxdWVzdCcpLlJlcXVlc3RcbiAgbW9kdWxlLmV4cG9ydHMuRm9ybURhdGEgPSByZXF1aXJlKCcuL2xpYi9mZXRjaC9mb3JtZGF0YScpLkZvcm1EYXRhXG4gIG1vZHVsZS5leHBvcnRzLkZpbGUgPSByZXF1aXJlKCcuL2xpYi9mZXRjaC9maWxlJykuRmlsZVxuICBtb2R1bGUuZXhwb3J0cy5GaWxlUmVhZGVyID0gcmVxdWlyZSgnLi9saWIvZmlsZWFwaS9maWxlcmVhZGVyJykuRmlsZVJlYWRlclxuXG4gIGNvbnN0IHsgc2V0R2xvYmFsT3JpZ2luLCBnZXRHbG9iYWxPcmlnaW4gfSA9IHJlcXVpcmUoJy4vbGliL2ZldGNoL2dsb2JhbCcpXG5cbiAgbW9kdWxlLmV4cG9ydHMuc2V0R2xvYmFsT3JpZ2luID0gc2V0R2xvYmFsT3JpZ2luXG4gIG1vZHVsZS5leHBvcnRzLmdldEdsb2JhbE9yaWdpbiA9IGdldEdsb2JhbE9yaWdpblxuXG4gIGNvbnN0IHsgQ2FjaGVTdG9yYWdlIH0gPSByZXF1aXJlKCcuL2xpYi9jYWNoZS9jYWNoZXN0b3JhZ2UnKVxuICBjb25zdCB7IGtDb25zdHJ1Y3QgfSA9IHJlcXVpcmUoJy4vbGliL2NhY2hlL3N5bWJvbHMnKVxuXG4gIC8vIENhY2hlICYgQ2FjaGVTdG9yYWdlIGFyZSB0aWdodGx5IGNvdXBsZWQgd2l0aCBmZXRjaC4gRXZlbiBpZiBpdCBtYXkgcnVuXG4gIC8vIGluIGFuIG9sZGVyIHZlcnNpb24gb2YgTm9kZSwgaXQgZG9lc24ndCBoYXZlIGFueSB1c2Ugd2l0aG91dCBmZXRjaC5cbiAgbW9kdWxlLmV4cG9ydHMuY2FjaGVzID0gbmV3IENhY2hlU3RvcmFnZShrQ29uc3RydWN0KVxufVxuXG5pZiAodXRpbC5ub2RlTWFqb3IgPj0gMTYpIHtcbiAgY29uc3QgeyBkZWxldGVDb29raWUsIGdldENvb2tpZXMsIGdldFNldENvb2tpZXMsIHNldENvb2tpZSB9ID0gcmVxdWlyZSgnLi9saWIvY29va2llcycpXG5cbiAgbW9kdWxlLmV4cG9ydHMuZGVsZXRlQ29va2llID0gZGVsZXRlQ29va2llXG4gIG1vZHVsZS5leHBvcnRzLmdldENvb2tpZXMgPSBnZXRDb29raWVzXG4gIG1vZHVsZS5leHBvcnRzLmdldFNldENvb2tpZXMgPSBnZXRTZXRDb29raWVzXG4gIG1vZHVsZS5leHBvcnRzLnNldENvb2tpZSA9IHNldENvb2tpZVxuXG4gIGNvbnN0IHsgcGFyc2VNSU1FVHlwZSwgc2VyaWFsaXplQU1pbWVUeXBlIH0gPSByZXF1aXJlKCcuL2xpYi9mZXRjaC9kYXRhVVJMJylcblxuICBtb2R1bGUuZXhwb3J0cy5wYXJzZU1JTUVUeXBlID0gcGFyc2VNSU1FVHlwZVxuICBtb2R1bGUuZXhwb3J0cy5zZXJpYWxpemVBTWltZVR5cGUgPSBzZXJpYWxpemVBTWltZVR5cGVcbn1cblxuaWYgKHV0aWwubm9kZU1ham9yID49IDE4ICYmIGhhc0NyeXB0bykge1xuICBjb25zdCB7IFdlYlNvY2tldCB9ID0gcmVxdWlyZSgnLi9saWIvd2Vic29ja2V0L3dlYnNvY2tldCcpXG5cbiAgbW9kdWxlLmV4cG9ydHMuV2ViU29ja2V0ID0gV2ViU29ja2V0XG59XG5cbm1vZHVsZS5leHBvcnRzLnJlcXVlc3QgPSBtYWtlRGlzcGF0Y2hlcihhcGkucmVxdWVzdClcbm1vZHVsZS5leHBvcnRzLnN0cmVhbSA9IG1ha2VEaXNwYXRjaGVyKGFwaS5zdHJlYW0pXG5tb2R1bGUuZXhwb3J0cy5waXBlbGluZSA9IG1ha2VEaXNwYXRjaGVyKGFwaS5waXBlbGluZSlcbm1vZHVsZS5leHBvcnRzLmNvbm5lY3QgPSBtYWtlRGlzcGF0Y2hlcihhcGkuY29ubmVjdClcbm1vZHVsZS5leHBvcnRzLnVwZ3JhZGUgPSBtYWtlRGlzcGF0Y2hlcihhcGkudXBncmFkZSlcblxubW9kdWxlLmV4cG9ydHMuTW9ja0NsaWVudCA9IE1vY2tDbGllbnRcbm1vZHVsZS5leHBvcnRzLk1vY2tQb29sID0gTW9ja1Bvb2xcbm1vZHVsZS5leHBvcnRzLk1vY2tBZ2VudCA9IE1vY2tBZ2VudFxubW9kdWxlLmV4cG9ydHMubW9ja0Vycm9ycyA9IG1vY2tFcnJvcnNcbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICIndXNlIHN0cmljdCdcblxuY29uc3QgTnVsbE9iamVjdCA9IGZ1bmN0aW9uIE51bGxPYmplY3QgKCkgeyB9XG5OdWxsT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggKiggXCI7XCIgcGFyYW1ldGVyICkgaW4gUkZDIDcyMzEgc2VjIDMuMS4xLjFcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiAvIHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqdGNoYXJcbiAqIHRjaGFyICAgICAgICAgPSBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiVcIiAvIFwiJlwiIC8gXCInXCIgLyBcIipcIlxuICogICAgICAgICAgICAgICAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIiAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqICAgICAgICAgICAgICAgLyBESUdJVCAvIEFMUEhBXG4gKiAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVyc1xuICogcXVvdGVkLXN0cmluZyA9IERRVU9URSAqKCBxZHRleHQgLyBxdW90ZWQtcGFpciApIERRVU9URVxuICogcWR0ZXh0ICAgICAgICA9IEhUQUIgLyBTUCAvICV4MjEgLyAleDIzLTVCIC8gJXg1RC03RSAvIG9icy10ZXh0XG4gKiBvYnMtdGV4dCAgICAgID0gJXg4MC1GRlxuICogcXVvdGVkLXBhaXIgICA9IFwiXFxcIiAoIEhUQUIgLyBTUCAvIFZDSEFSIC8gb2JzLXRleHQgKVxuICovXG5jb25zdCBwYXJhbVJFID0gLzsgKihbISMkJSYnKisuXlxcd2B8fi1dKyk9KFwiKD86W1xcdlxcdTAwMjBcXHUwMDIxXFx1MDAyMy1cXHUwMDViXFx1MDA1ZC1cXHUwMDdlXFx1MDA4MC1cXHUwMGZmXXxcXFxcW1xcdlxcdTAwMjAtXFx1MDBmZl0pKlwifFshIyQlJicqKy5eXFx3YHx+LV0rKSAqL2d1XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHF1b3RlZC1wYWlyIGluIFJGQyA3MjMwIHNlYyAzLjIuNlxuICpcbiAqIHF1b3RlZC1wYWlyID0gXCJcXFwiICggSFRBQiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCApXG4gKiBvYnMtdGV4dCAgICA9ICV4ODAtRkZcbiAqL1xuY29uc3QgcXVvdGVkUGFpclJFID0gL1xcXFwoW1xcdlxcdTAwMjAtXFx1MDBmZl0pL2d1XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHR5cGUgaW4gUkZDIDcyMzEgc2VjIDMuMS4xLjFcbiAqXG4gKiBtZWRpYS10eXBlID0gdHlwZSBcIi9cIiBzdWJ0eXBlXG4gKiB0eXBlICAgICAgID0gdG9rZW5cbiAqIHN1YnR5cGUgICAgPSB0b2tlblxuICovXG5jb25zdCBtZWRpYVR5cGVSRSA9IC9eWyEjJCUmJyorLl5cXHd8fi1dK1xcL1shIyQlJicqKy5eXFx3fH4tXSskL3VcblxuLy8gZGVmYXVsdCBDb250ZW50VHlwZSB0byBwcmV2ZW50IHJlcGVhdGVkIG9iamVjdCBjcmVhdGlvblxuY29uc3QgZGVmYXVsdENvbnRlbnRUeXBlID0geyB0eXBlOiAnJywgcGFyYW1ldGVyczogbmV3IE51bGxPYmplY3QoKSB9XG5PYmplY3QuZnJlZXplKGRlZmF1bHRDb250ZW50VHlwZS5wYXJhbWV0ZXJzKVxuT2JqZWN0LmZyZWV6ZShkZWZhdWx0Q29udGVudFR5cGUpXG5cbi8qKlxuICogUGFyc2UgbWVkaWEgdHlwZSB0byBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBoZWFkZXJcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZSAoaGVhZGVyKSB7XG4gIGlmICh0eXBlb2YgaGVhZGVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IGhlYWRlciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHN0cmluZycpXG4gIH1cblxuICBsZXQgaW5kZXggPSBoZWFkZXIuaW5kZXhPZignOycpXG4gIGNvbnN0IHR5cGUgPSBpbmRleCAhPT0gLTFcbiAgICA/IGhlYWRlci5zbGljZSgwLCBpbmRleCkudHJpbSgpXG4gICAgOiBoZWFkZXIudHJpbSgpXG5cbiAgaWYgKG1lZGlhVHlwZVJFLnRlc3QodHlwZSkgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBtZWRpYSB0eXBlJylcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB0eXBlOiB0eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgcGFyYW1ldGVyczogbmV3IE51bGxPYmplY3QoKVxuICB9XG5cbiAgLy8gcGFyc2UgcGFyYW1ldGVyc1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgbGV0IGtleVxuICBsZXQgbWF0Y2hcbiAgbGV0IHZhbHVlXG5cbiAgcGFyYW1SRS5sYXN0SW5kZXggPSBpbmRleFxuXG4gIHdoaWxlICgobWF0Y2ggPSBwYXJhbVJFLmV4ZWMoaGVhZGVyKSkpIHtcbiAgICBpZiAobWF0Y2guaW5kZXggIT09IGluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICAgIH1cblxuICAgIGluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aFxuICAgIGtleSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKClcbiAgICB2YWx1ZSA9IG1hdGNoWzJdXG5cbiAgICBpZiAodmFsdWVbMF0gPT09ICdcIicpIHtcbiAgICAgIC8vIHJlbW92ZSBxdW90ZXMgYW5kIGVzY2FwZXNcbiAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLnNsaWNlKDEsIHZhbHVlLmxlbmd0aCAtIDEpXG5cbiAgICAgIHF1b3RlZFBhaXJSRS50ZXN0KHZhbHVlKSAmJiAodmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHF1b3RlZFBhaXJSRSwgJyQxJykpXG4gICAgfVxuXG4gICAgcmVzdWx0LnBhcmFtZXRlcnNba2V5XSA9IHZhbHVlXG4gIH1cblxuICBpZiAoaW5kZXggIT09IGhlYWRlci5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBzYWZlUGFyc2UgKGhlYWRlcikge1xuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGVmYXVsdENvbnRlbnRUeXBlXG4gIH1cblxuICBsZXQgaW5kZXggPSBoZWFkZXIuaW5kZXhPZignOycpXG4gIGNvbnN0IHR5cGUgPSBpbmRleCAhPT0gLTFcbiAgICA/IGhlYWRlci5zbGljZSgwLCBpbmRleCkudHJpbSgpXG4gICAgOiBoZWFkZXIudHJpbSgpXG5cbiAgaWYgKG1lZGlhVHlwZVJFLnRlc3QodHlwZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb250ZW50VHlwZVxuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHR5cGU6IHR5cGUudG9Mb3dlckNhc2UoKSxcbiAgICBwYXJhbWV0ZXJzOiBuZXcgTnVsbE9iamVjdCgpXG4gIH1cblxuICAvLyBwYXJzZSBwYXJhbWV0ZXJzXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBsZXQga2V5XG4gIGxldCBtYXRjaFxuICBsZXQgdmFsdWVcblxuICBwYXJhbVJFLmxhc3RJbmRleCA9IGluZGV4XG5cbiAgd2hpbGUgKChtYXRjaCA9IHBhcmFtUkUuZXhlYyhoZWFkZXIpKSkge1xuICAgIGlmIChtYXRjaC5pbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0Q29udGVudFR5cGVcbiAgICB9XG5cbiAgICBpbmRleCArPSBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgdmFsdWUgPSBtYXRjaFsyXVxuXG4gICAgaWYgKHZhbHVlWzBdID09PSAnXCInKSB7XG4gICAgICAvLyByZW1vdmUgcXVvdGVzIGFuZCBlc2NhcGVzXG4gICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgIC5zbGljZSgxLCB2YWx1ZS5sZW5ndGggLSAxKVxuXG4gICAgICBxdW90ZWRQYWlyUkUudGVzdCh2YWx1ZSkgJiYgKHZhbHVlID0gdmFsdWUucmVwbGFjZShxdW90ZWRQYWlyUkUsICckMScpKVxuICAgIH1cblxuICAgIHJlc3VsdC5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZVxuICB9XG5cbiAgaWYgKGluZGV4ICE9PSBoZWFkZXIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb250ZW50VHlwZVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0geyBwYXJzZSwgc2FmZVBhcnNlIH1cbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gcGFyc2Vcbm1vZHVsZS5leHBvcnRzLnNhZmVQYXJzZSA9IHNhZmVQYXJzZVxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdENvbnRlbnRUeXBlID0gZGVmYXVsdENvbnRlbnRUeXBlXG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHRyYW5lb3VzLWNsYXNzXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0NvZGVPck5hbWUge1xuICBhYnN0cmFjdCByZWFkb25seSBzdHI6IHN0cmluZ1xuICBhYnN0cmFjdCByZWFkb25seSBuYW1lczogVXNlZE5hbWVzXG4gIGFic3RyYWN0IHRvU3RyaW5nKCk6IHN0cmluZ1xuICBhYnN0cmFjdCBlbXB0eVN0cigpOiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCBJREVOVElGSUVSID0gL15bYS16JF9dW2EteiRfMC05XSokL2lcblxuZXhwb3J0IGNsYXNzIE5hbWUgZXh0ZW5kcyBfQ29kZU9yTmFtZSB7XG4gIHJlYWRvbmx5IHN0cjogc3RyaW5nXG4gIGNvbnN0cnVjdG9yKHM6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICBpZiAoIUlERU5USUZJRVIudGVzdChzKSkgdGhyb3cgbmV3IEVycm9yKFwiQ29kZUdlbjogbmFtZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclwiKVxuICAgIHRoaXMuc3RyID0gc1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJcbiAgfVxuXG4gIGVtcHR5U3RyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuIHtbdGhpcy5zdHJdOiAxfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBfQ29kZSBleHRlbmRzIF9Db2RlT3JOYW1lIHtcbiAgcmVhZG9ubHkgX2l0ZW1zOiByZWFkb25seSBDb2RlSXRlbVtdXG4gIHByaXZhdGUgX3N0cj86IHN0cmluZ1xuICBwcml2YXRlIF9uYW1lcz86IFVzZWROYW1lc1xuXG4gIGNvbnN0cnVjdG9yKGNvZGU6IHN0cmluZyB8IHJlYWRvbmx5IENvZGVJdGVtW10pIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5faXRlbXMgPSB0eXBlb2YgY29kZSA9PT0gXCJzdHJpbmdcIiA/IFtjb2RlXSA6IGNvZGVcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyXG4gIH1cblxuICBlbXB0eVN0cigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zWzBdXG4gICAgcmV0dXJuIGl0ZW0gPT09IFwiXCIgfHwgaXRlbSA9PT0gJ1wiXCInXG4gIH1cblxuICBnZXQgc3RyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLl9zdHIgPz89IHRoaXMuX2l0ZW1zLnJlZHVjZSgoczogc3RyaW5nLCBjOiBDb2RlSXRlbSkgPT4gYCR7c30ke2N9YCwgXCJcIikpXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICByZXR1cm4gKHRoaXMuX25hbWVzID8/PSB0aGlzLl9pdGVtcy5yZWR1Y2UoKG5hbWVzOiBVc2VkTmFtZXMsIGMpID0+IHtcbiAgICAgIGlmIChjIGluc3RhbmNlb2YgTmFtZSkgbmFtZXNbYy5zdHJdID0gKG5hbWVzW2Muc3RyXSB8fCAwKSArIDFcbiAgICAgIHJldHVybiBuYW1lc1xuICAgIH0sIHt9KSlcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBDb2RlSXRlbSA9IE5hbWUgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbFxuXG5leHBvcnQgdHlwZSBVc2VkTmFtZXMgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCB1bmRlZmluZWQ+XG5cbmV4cG9ydCB0eXBlIENvZGUgPSBfQ29kZSB8IE5hbWVcblxuZXhwb3J0IHR5cGUgU2FmZUV4cHIgPSBDb2RlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGxcblxuZXhwb3J0IGNvbnN0IG5pbCA9IG5ldyBfQ29kZShcIlwiKVxuXG50eXBlIENvZGVBcmcgPSBTYWZlRXhwciB8IHN0cmluZyB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gXyhzdHJzOiBUZW1wbGF0ZVN0cmluZ3NBcnJheSwgLi4uYXJnczogQ29kZUFyZ1tdKTogX0NvZGUge1xuICBjb25zdCBjb2RlOiBDb2RlSXRlbVtdID0gW3N0cnNbMF1dXG4gIGxldCBpID0gMFxuICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgYWRkQ29kZUFyZyhjb2RlLCBhcmdzW2ldKVxuICAgIGNvZGUucHVzaChzdHJzWysraV0pXG4gIH1cbiAgcmV0dXJuIG5ldyBfQ29kZShjb2RlKVxufVxuXG5jb25zdCBwbHVzID0gbmV3IF9Db2RlKFwiK1wiKVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyKHN0cnM6IFRlbXBsYXRlU3RyaW5nc0FycmF5LCAuLi5hcmdzOiAoQ29kZUFyZyB8IHN0cmluZ1tdKVtdKTogX0NvZGUge1xuICBjb25zdCBleHByOiBDb2RlSXRlbVtdID0gW3NhZmVTdHJpbmdpZnkoc3Ryc1swXSldXG4gIGxldCBpID0gMFxuICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgZXhwci5wdXNoKHBsdXMpXG4gICAgYWRkQ29kZUFyZyhleHByLCBhcmdzW2ldKVxuICAgIGV4cHIucHVzaChwbHVzLCBzYWZlU3RyaW5naWZ5KHN0cnNbKytpXSkpXG4gIH1cbiAgb3B0aW1pemUoZXhwcilcbiAgcmV0dXJuIG5ldyBfQ29kZShleHByKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQ29kZUFyZyhjb2RlOiBDb2RlSXRlbVtdLCBhcmc6IENvZGVBcmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAoYXJnIGluc3RhbmNlb2YgX0NvZGUpIGNvZGUucHVzaCguLi5hcmcuX2l0ZW1zKVxuICBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBOYW1lKSBjb2RlLnB1c2goYXJnKVxuICBlbHNlIGNvZGUucHVzaChpbnRlcnBvbGF0ZShhcmcpKVxufVxuXG5mdW5jdGlvbiBvcHRpbWl6ZShleHByOiBDb2RlSXRlbVtdKTogdm9pZCB7XG4gIGxldCBpID0gMVxuICB3aGlsZSAoaSA8IGV4cHIubGVuZ3RoIC0gMSkge1xuICAgIGlmIChleHByW2ldID09PSBwbHVzKSB7XG4gICAgICBjb25zdCByZXMgPSBtZXJnZUV4cHJJdGVtcyhleHByW2kgLSAxXSwgZXhwcltpICsgMV0pXG4gICAgICBpZiAocmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhwci5zcGxpY2UoaSAtIDEsIDMsIHJlcylcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGV4cHJbaSsrXSA9IFwiK1wiXG4gICAgfVxuICAgIGkrK1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlRXhwckl0ZW1zKGE6IENvZGVJdGVtLCBiOiBDb2RlSXRlbSk6IENvZGVJdGVtIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGIgPT09ICdcIlwiJykgcmV0dXJuIGFcbiAgaWYgKGEgPT09ICdcIlwiJykgcmV0dXJuIGJcbiAgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoYiBpbnN0YW5jZW9mIE5hbWUgfHwgYVthLmxlbmd0aCAtIDFdICE9PSAnXCInKSByZXR1cm5cbiAgICBpZiAodHlwZW9mIGIgIT0gXCJzdHJpbmdcIikgcmV0dXJuIGAke2Euc2xpY2UoMCwgLTEpfSR7Yn1cImBcbiAgICBpZiAoYlswXSA9PT0gJ1wiJykgcmV0dXJuIGEuc2xpY2UoMCwgLTEpICsgYi5zbGljZSgxKVxuICAgIHJldHVyblxuICB9XG4gIGlmICh0eXBlb2YgYiA9PSBcInN0cmluZ1wiICYmIGJbMF0gPT09ICdcIicgJiYgIShhIGluc3RhbmNlb2YgTmFtZSkpIHJldHVybiBgXCIke2F9JHtiLnNsaWNlKDEpfWBcbiAgcmV0dXJuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJDb25jYXQoYzE6IENvZGUsIGMyOiBDb2RlKTogQ29kZSB7XG4gIHJldHVybiBjMi5lbXB0eVN0cigpID8gYzEgOiBjMS5lbXB0eVN0cigpID8gYzIgOiBzdHJgJHtjMX0ke2MyfWBcbn1cblxuLy8gVE9ETyBkbyBub3QgYWxsb3cgYXJyYXlzIGhlcmVcbmZ1bmN0aW9uIGludGVycG9sYXRlKHg/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsKTogU2FmZUV4cHIgfCBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHggPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgeCA9PSBcImJvb2xlYW5cIiB8fCB4ID09PSBudWxsXG4gICAgPyB4XG4gICAgOiBzYWZlU3RyaW5naWZ5KEFycmF5LmlzQXJyYXkoeCkgPyB4LmpvaW4oXCIsXCIpIDogeClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh4OiB1bmtub3duKTogQ29kZSB7XG4gIHJldHVybiBuZXcgX0NvZGUoc2FmZVN0cmluZ2lmeSh4KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVTdHJpbmdpZnkoeDogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh4KVxuICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csIFwiXFxcXHUyMDI4XCIpXG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgXCJcXFxcdTIwMjlcIilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5KGtleTogQ29kZSB8IHN0cmluZyB8IG51bWJlcik6IENvZGUge1xuICByZXR1cm4gdHlwZW9mIGtleSA9PSBcInN0cmluZ1wiICYmIElERU5USUZJRVIudGVzdChrZXkpID8gbmV3IF9Db2RlKGAuJHtrZXl9YCkgOiBfYFske2tleX1dYFxufVxuXG4vL0RvZXMgYmVzdCBlZmZvcnQgdG8gZm9ybWF0IHRoZSBuYW1lIHByb3Blcmx5XG5leHBvcnQgZnVuY3Rpb24gZ2V0RXNtRXhwb3J0TmFtZShrZXk6IENvZGUgfCBzdHJpbmcgfCBudW1iZXIpOiBDb2RlIHtcbiAgaWYgKHR5cGVvZiBrZXkgPT0gXCJzdHJpbmdcIiAmJiBJREVOVElGSUVSLnRlc3Qoa2V5KSkge1xuICAgIHJldHVybiBuZXcgX0NvZGUoYCR7a2V5fWApXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBpbnZhbGlkIGV4cG9ydCBuYW1lOiAke2tleX0sIHVzZSBleHBsaWNpdCAkaWQgbmFtZSBtYXBwaW5nYClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4cENvZGUocng6IFJlZ0V4cCk6IENvZGUge1xuICByZXR1cm4gbmV3IF9Db2RlKHJ4LnRvU3RyaW5nKCkpXG59XG4iLCAiaW1wb3J0IHtfLCBuaWwsIENvZGUsIE5hbWV9IGZyb20gXCIuL2NvZGVcIlxuXG5pbnRlcmZhY2UgTmFtZUdyb3VwIHtcbiAgcHJlZml4OiBzdHJpbmdcbiAgaW5kZXg6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVWYWx1ZSB7XG4gIHJlZjogVmFsdWVSZWZlcmVuY2UgLy8gdGhpcyBpcyB0aGUgcmVmZXJlbmNlIHRvIGFueSB2YWx1ZSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBmcm9tIGdlbmVyYXRlZCBjb2RlIHZpYSBgZ2xvYmFsc2AgdmFyIGluIHRoZSBjbG9zdXJlXG4gIGtleT86IHVua25vd24gLy8gYW55IGtleSB0byBpZGVudGlmeSBhIGdsb2JhbCB0byBhdm9pZCBkdXBsaWNhdGVzLCBpZiBub3QgcGFzc2VkIHJlZiBpcyB1c2VkXG4gIGNvZGU/OiBDb2RlIC8vIHRoaXMgaXMgdGhlIGNvZGUgY3JlYXRpbmcgdGhlIHZhbHVlIG5lZWRlZCBmb3Igc3RhbmRhbG9uZSBjb2RlIHdpdF9vdXQgY2xvc3VyZSAtIGNhbiBiZSBhIHByaW1pdGl2ZSB2YWx1ZSwgZnVuY3Rpb24gb3IgaW1wb3J0IChgcmVxdWlyZWApXG59XG5cbmV4cG9ydCB0eXBlIFZhbHVlUmVmZXJlbmNlID0gdW5rbm93biAvLyBwb3NzaWJseSBtYWtlIENvZGVHZW4gcGFyYW1ldGVyaXplZCB0eXBlIG9uIHRoaXMgdHlwZVxuXG5jbGFzcyBWYWx1ZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSB2YWx1ZT86IE5hbWVWYWx1ZVxuICBjb25zdHJ1Y3RvcihuYW1lOiBWYWx1ZVNjb3BlTmFtZSkge1xuICAgIHN1cGVyKGBDb2RlR2VuOiBcImNvZGVcIiBmb3IgJHtuYW1lfSBub3QgZGVmaW5lZGApXG4gICAgdGhpcy52YWx1ZSA9IG5hbWUudmFsdWVcbiAgfVxufVxuXG5pbnRlcmZhY2UgU2NvcGVPcHRpb25zIHtcbiAgcHJlZml4ZXM/OiBTZXQ8c3RyaW5nPlxuICBwYXJlbnQ/OiBTY29wZVxufVxuXG5pbnRlcmZhY2UgVmFsdWVTY29wZU9wdGlvbnMgZXh0ZW5kcyBTY29wZU9wdGlvbnMge1xuICBzY29wZTogU2NvcGVTdG9yZVxuICBlczU/OiBib29sZWFuXG4gIGxpbmVzPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBTY29wZVN0b3JlID0gUmVjb3JkPHN0cmluZywgVmFsdWVSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZD5cblxudHlwZSBTY29wZVZhbHVlcyA9IHtcbiAgW1ByZWZpeCBpbiBzdHJpbmddPzogTWFwPHVua25vd24sIFZhbHVlU2NvcGVOYW1lPlxufVxuXG5leHBvcnQgdHlwZSBTY29wZVZhbHVlU2V0cyA9IHtcbiAgW1ByZWZpeCBpbiBzdHJpbmddPzogU2V0PFZhbHVlU2NvcGVOYW1lPlxufVxuXG5leHBvcnQgZW51bSBVc2VkVmFsdWVTdGF0ZSB7XG4gIFN0YXJ0ZWQsXG4gIENvbXBsZXRlZCxcbn1cblxuZXhwb3J0IHR5cGUgVXNlZFNjb3BlVmFsdWVzID0ge1xuICBbUHJlZml4IGluIHN0cmluZ10/OiBNYXA8VmFsdWVTY29wZU5hbWUsIFVzZWRWYWx1ZVN0YXRlIHwgdW5kZWZpbmVkPlxufVxuXG5leHBvcnQgY29uc3QgdmFyS2luZHMgPSB7XG4gIGNvbnN0OiBuZXcgTmFtZShcImNvbnN0XCIpLFxuICBsZXQ6IG5ldyBOYW1lKFwibGV0XCIpLFxuICB2YXI6IG5ldyBOYW1lKFwidmFyXCIpLFxufVxuXG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25hbWVzOiB7W1ByZWZpeCBpbiBzdHJpbmddPzogTmFtZUdyb3VwfSA9IHt9XG4gIHByb3RlY3RlZCByZWFkb25seSBfcHJlZml4ZXM/OiBTZXQ8c3RyaW5nPlxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudD86IFNjb3BlXG5cbiAgY29uc3RydWN0b3Ioe3ByZWZpeGVzLCBwYXJlbnR9OiBTY29wZU9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuX3ByZWZpeGVzID0gcHJlZml4ZXNcbiAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnRcbiAgfVxuXG4gIHRvTmFtZShuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcpOiBOYW1lIHtcbiAgICByZXR1cm4gbmFtZU9yUHJlZml4IGluc3RhbmNlb2YgTmFtZSA/IG5hbWVPclByZWZpeCA6IHRoaXMubmFtZShuYW1lT3JQcmVmaXgpXG4gIH1cblxuICBuYW1lKHByZWZpeDogc3RyaW5nKTogTmFtZSB7XG4gICAgcmV0dXJuIG5ldyBOYW1lKHRoaXMuX25ld05hbWUocHJlZml4KSlcbiAgfVxuXG4gIHByb3RlY3RlZCBfbmV3TmFtZShwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmcgPSB0aGlzLl9uYW1lc1twcmVmaXhdIHx8IHRoaXMuX25hbWVHcm91cChwcmVmaXgpXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke25nLmluZGV4Kyt9YFxuICB9XG5cbiAgcHJpdmF0ZSBfbmFtZUdyb3VwKHByZWZpeDogc3RyaW5nKTogTmFtZUdyb3VwIHtcbiAgICBpZiAodGhpcy5fcGFyZW50Py5fcHJlZml4ZXM/LmhhcyhwcmVmaXgpIHx8ICh0aGlzLl9wcmVmaXhlcyAmJiAhdGhpcy5fcHJlZml4ZXMuaGFzKHByZWZpeCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IHByZWZpeCBcIiR7cHJlZml4fVwiIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc2NvcGVgKVxuICAgIH1cbiAgICByZXR1cm4gKHRoaXMuX25hbWVzW3ByZWZpeF0gPSB7cHJlZml4LCBpbmRleDogMH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFNjb3BlUGF0aCB7XG4gIHByb3BlcnR5OiBzdHJpbmdcbiAgaXRlbUluZGV4OiBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlU2NvcGVOYW1lIGV4dGVuZHMgTmFtZSB7XG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nXG4gIHZhbHVlPzogTmFtZVZhbHVlXG4gIHNjb3BlUGF0aD86IENvZGVcblxuICBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZywgbmFtZVN0cjogc3RyaW5nKSB7XG4gICAgc3VwZXIobmFtZVN0cilcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeFxuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IE5hbWVWYWx1ZSwge3Byb3BlcnR5LCBpdGVtSW5kZXh9OiBTY29wZVBhdGgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgICB0aGlzLnNjb3BlUGF0aCA9IF9gLiR7bmV3IE5hbWUocHJvcGVydHkpfVske2l0ZW1JbmRleH1dYFxuICB9XG59XG5cbmludGVyZmFjZSBWU09wdGlvbnMgZXh0ZW5kcyBWYWx1ZVNjb3BlT3B0aW9ucyB7XG4gIF9uOiBDb2RlXG59XG5cbmNvbnN0IGxpbmUgPSBfYFxcbmBcblxuZXhwb3J0IGNsYXNzIFZhbHVlU2NvcGUgZXh0ZW5kcyBTY29wZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBTY29wZVZhbHVlcyA9IHt9XG4gIHByb3RlY3RlZCByZWFkb25seSBfc2NvcGU6IFNjb3BlU3RvcmVcbiAgcmVhZG9ubHkgb3B0czogVlNPcHRpb25zXG5cbiAgY29uc3RydWN0b3Iob3B0czogVmFsdWVTY29wZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRzKVxuICAgIHRoaXMuX3Njb3BlID0gb3B0cy5zY29wZVxuICAgIHRoaXMub3B0cyA9IHsuLi5vcHRzLCBfbjogb3B0cy5saW5lcyA/IGxpbmUgOiBuaWx9XG4gIH1cblxuICBnZXQoKTogU2NvcGVTdG9yZSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njb3BlXG4gIH1cblxuICBuYW1lKHByZWZpeDogc3RyaW5nKTogVmFsdWVTY29wZU5hbWUge1xuICAgIHJldHVybiBuZXcgVmFsdWVTY29wZU5hbWUocHJlZml4LCB0aGlzLl9uZXdOYW1lKHByZWZpeCkpXG4gIH1cblxuICB2YWx1ZShuYW1lT3JQcmVmaXg6IFZhbHVlU2NvcGVOYW1lIHwgc3RyaW5nLCB2YWx1ZTogTmFtZVZhbHVlKTogVmFsdWVTY29wZU5hbWUge1xuICAgIGlmICh2YWx1ZS5yZWYgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKFwiQ29kZUdlbjogcmVmIG11c3QgYmUgcGFzc2VkIGluIHZhbHVlXCIpXG4gICAgY29uc3QgbmFtZSA9IHRoaXMudG9OYW1lKG5hbWVPclByZWZpeCkgYXMgVmFsdWVTY29wZU5hbWVcbiAgICBjb25zdCB7cHJlZml4fSA9IG5hbWVcbiAgICBjb25zdCB2YWx1ZUtleSA9IHZhbHVlLmtleSA/PyB2YWx1ZS5yZWZcbiAgICBsZXQgdnMgPSB0aGlzLl92YWx1ZXNbcHJlZml4XVxuICAgIGlmICh2cykge1xuICAgICAgY29uc3QgX25hbWUgPSB2cy5nZXQodmFsdWVLZXkpXG4gICAgICBpZiAoX25hbWUpIHJldHVybiBfbmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICB2cyA9IHRoaXMuX3ZhbHVlc1twcmVmaXhdID0gbmV3IE1hcCgpXG4gICAgfVxuICAgIHZzLnNldCh2YWx1ZUtleSwgbmFtZSlcblxuICAgIGNvbnN0IHMgPSB0aGlzLl9zY29wZVtwcmVmaXhdIHx8ICh0aGlzLl9zY29wZVtwcmVmaXhdID0gW10pXG4gICAgY29uc3QgaXRlbUluZGV4ID0gcy5sZW5ndGhcbiAgICBzW2l0ZW1JbmRleF0gPSB2YWx1ZS5yZWZcbiAgICBuYW1lLnNldFZhbHVlKHZhbHVlLCB7cHJvcGVydHk6IHByZWZpeCwgaXRlbUluZGV4fSlcbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgZ2V0VmFsdWUocHJlZml4OiBzdHJpbmcsIGtleU9yUmVmOiB1bmtub3duKTogVmFsdWVTY29wZU5hbWUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHZzID0gdGhpcy5fdmFsdWVzW3ByZWZpeF1cbiAgICBpZiAoIXZzKSByZXR1cm5cbiAgICByZXR1cm4gdnMuZ2V0KGtleU9yUmVmKVxuICB9XG5cbiAgc2NvcGVSZWZzKHNjb3BlTmFtZTogTmFtZSwgdmFsdWVzOiBTY29wZVZhbHVlcyB8IFNjb3BlVmFsdWVTZXRzID0gdGhpcy5fdmFsdWVzKTogQ29kZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZHVjZVZhbHVlcyh2YWx1ZXMsIChuYW1lOiBWYWx1ZVNjb3BlTmFtZSkgPT4ge1xuICAgICAgaWYgKG5hbWUuc2NvcGVQYXRoID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogbmFtZSBcIiR7bmFtZX1cIiBoYXMgbm8gdmFsdWVgKVxuICAgICAgcmV0dXJuIF9gJHtzY29wZU5hbWV9JHtuYW1lLnNjb3BlUGF0aH1gXG4gICAgfSlcbiAgfVxuXG4gIHNjb3BlQ29kZShcbiAgICB2YWx1ZXM6IFNjb3BlVmFsdWVzIHwgU2NvcGVWYWx1ZVNldHMgPSB0aGlzLl92YWx1ZXMsXG4gICAgdXNlZFZhbHVlcz86IFVzZWRTY29wZVZhbHVlcyxcbiAgICBnZXRDb2RlPzogKG46IFZhbHVlU2NvcGVOYW1lKSA9PiBDb2RlIHwgdW5kZWZpbmVkXG4gICk6IENvZGUge1xuICAgIHJldHVybiB0aGlzLl9yZWR1Y2VWYWx1ZXMoXG4gICAgICB2YWx1ZXMsXG4gICAgICAobmFtZTogVmFsdWVTY29wZU5hbWUpID0+IHtcbiAgICAgICAgaWYgKG5hbWUudmFsdWUgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBuYW1lIFwiJHtuYW1lfVwiIGhhcyBubyB2YWx1ZWApXG4gICAgICAgIHJldHVybiBuYW1lLnZhbHVlLmNvZGVcbiAgICAgIH0sXG4gICAgICB1c2VkVmFsdWVzLFxuICAgICAgZ2V0Q29kZVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX3JlZHVjZVZhbHVlcyhcbiAgICB2YWx1ZXM6IFNjb3BlVmFsdWVzIHwgU2NvcGVWYWx1ZVNldHMsXG4gICAgdmFsdWVDb2RlOiAobjogVmFsdWVTY29wZU5hbWUpID0+IENvZGUgfCB1bmRlZmluZWQsXG4gICAgdXNlZFZhbHVlczogVXNlZFNjb3BlVmFsdWVzID0ge30sXG4gICAgZ2V0Q29kZT86IChuOiBWYWx1ZVNjb3BlTmFtZSkgPT4gQ29kZSB8IHVuZGVmaW5lZFxuICApOiBDb2RlIHtcbiAgICBsZXQgY29kZTogQ29kZSA9IG5pbFxuICAgIGZvciAoY29uc3QgcHJlZml4IGluIHZhbHVlcykge1xuICAgICAgY29uc3QgdnMgPSB2YWx1ZXNbcHJlZml4XVxuICAgICAgaWYgKCF2cykgY29udGludWVcbiAgICAgIGNvbnN0IG5hbWVTZXQgPSAodXNlZFZhbHVlc1twcmVmaXhdID0gdXNlZFZhbHVlc1twcmVmaXhdIHx8IG5ldyBNYXAoKSlcbiAgICAgIHZzLmZvckVhY2goKG5hbWU6IFZhbHVlU2NvcGVOYW1lKSA9PiB7XG4gICAgICAgIGlmIChuYW1lU2V0LmhhcyhuYW1lKSkgcmV0dXJuXG4gICAgICAgIG5hbWVTZXQuc2V0KG5hbWUsIFVzZWRWYWx1ZVN0YXRlLlN0YXJ0ZWQpXG4gICAgICAgIGxldCBjID0gdmFsdWVDb2RlKG5hbWUpXG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgY29uc3QgZGVmID0gdGhpcy5vcHRzLmVzNSA/IHZhcktpbmRzLnZhciA6IHZhcktpbmRzLmNvbnN0XG4gICAgICAgICAgY29kZSA9IF9gJHtjb2RlfSR7ZGVmfSAke25hbWV9ID0gJHtjfTske3RoaXMub3B0cy5fbn1gXG4gICAgICAgIH0gZWxzZSBpZiAoKGMgPSBnZXRDb2RlPy4obmFtZSkpKSB7XG4gICAgICAgICAgY29kZSA9IF9gJHtjb2RlfSR7Y30ke3RoaXMub3B0cy5fbn1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IobmFtZSlcbiAgICAgICAgfVxuICAgICAgICBuYW1lU2V0LnNldChuYW1lLCBVc2VkVmFsdWVTdGF0ZS5Db21wbGV0ZWQpXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gY29kZVxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge1Njb3BlVmFsdWVTZXRzLCBOYW1lVmFsdWUsIFZhbHVlU2NvcGUsIFZhbHVlU2NvcGVOYW1lfSBmcm9tIFwiLi9zY29wZVwiXG5pbXBvcnQge18sIG5pbCwgX0NvZGUsIENvZGUsIE5hbWUsIFVzZWROYW1lcywgQ29kZUl0ZW0sIGFkZENvZGVBcmcsIF9Db2RlT3JOYW1lfSBmcm9tIFwiLi9jb2RlXCJcbmltcG9ydCB7U2NvcGUsIHZhcktpbmRzfSBmcm9tIFwiLi9zY29wZVwiXG5cbmV4cG9ydCB7Xywgc3RyLCBzdHJDb25jYXQsIG5pbCwgZ2V0UHJvcGVydHksIHN0cmluZ2lmeSwgcmVnZXhwQ29kZSwgTmFtZSwgQ29kZX0gZnJvbSBcIi4vY29kZVwiXG5leHBvcnQge1Njb3BlLCBTY29wZVN0b3JlLCBWYWx1ZVNjb3BlLCBWYWx1ZVNjb3BlTmFtZSwgU2NvcGVWYWx1ZVNldHMsIHZhcktpbmRzfSBmcm9tIFwiLi9zY29wZVwiXG5cbi8vIHR5cGUgZm9yIGV4cHJlc3Npb25zIHRoYXQgY2FuIGJlIHNhZmVseSBpbnNlcnRlZCBpbiBjb2RlIHdpdGhvdXQgcXVvdGVzXG5leHBvcnQgdHlwZSBTYWZlRXhwciA9IENvZGUgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbFxuXG4vLyB0eXBlIHRoYXQgaXMgZWl0aGVyIENvZGUgb2YgZnVuY3Rpb24gdGhhdCBhZGRzIGNvZGUgdG8gQ29kZUdlbiBpbnN0YW5jZSB1c2luZyBpdHMgbWV0aG9kc1xuZXhwb3J0IHR5cGUgQmxvY2sgPSBDb2RlIHwgKCgpID0+IHZvaWQpXG5cbmV4cG9ydCBjb25zdCBvcGVyYXRvcnMgPSB7XG4gIEdUOiBuZXcgX0NvZGUoXCI+XCIpLFxuICBHVEU6IG5ldyBfQ29kZShcIj49XCIpLFxuICBMVDogbmV3IF9Db2RlKFwiPFwiKSxcbiAgTFRFOiBuZXcgX0NvZGUoXCI8PVwiKSxcbiAgRVE6IG5ldyBfQ29kZShcIj09PVwiKSxcbiAgTkVROiBuZXcgX0NvZGUoXCIhPT1cIiksXG4gIE5PVDogbmV3IF9Db2RlKFwiIVwiKSxcbiAgT1I6IG5ldyBfQ29kZShcInx8XCIpLFxuICBBTkQ6IG5ldyBfQ29kZShcIiYmXCIpLFxuICBBREQ6IG5ldyBfQ29kZShcIitcIiksXG59XG5cbmFic3RyYWN0IGNsYXNzIE5vZGUge1xuICBhYnN0cmFjdCByZWFkb25seSBuYW1lczogVXNlZE5hbWVzXG5cbiAgb3B0aW1pemVOb2RlcygpOiB0aGlzIHwgQ2hpbGROb2RlIHwgQ2hpbGROb2RlW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKF9uYW1lczogVXNlZE5hbWVzLCBfY29uc3RhbnRzOiBDb25zdGFudHMpOiB0aGlzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gZ2V0IGNvdW50KCk6IG51bWJlciB7XG4gIC8vICAgcmV0dXJuIDFcbiAgLy8gfVxufVxuXG5jbGFzcyBEZWYgZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YXJLaW5kOiBOYW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogTmFtZSxcbiAgICBwcml2YXRlIHJocz86IFNhZmVFeHByXG4gICkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcih7ZXM1LCBfbn06IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFyS2luZCA9IGVzNSA/IHZhcktpbmRzLnZhciA6IHRoaXMudmFyS2luZFxuICAgIGNvbnN0IHJocyA9IHRoaXMucmhzID09PSB1bmRlZmluZWQgPyBcIlwiIDogYCA9ICR7dGhpcy5yaHN9YFxuICAgIHJldHVybiBgJHt2YXJLaW5kfSAke3RoaXMubmFtZX0ke3Joc307YCArIF9uXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFuYW1lc1t0aGlzLm5hbWUuc3RyXSkgcmV0dXJuXG4gICAgaWYgKHRoaXMucmhzKSB0aGlzLnJocyA9IG9wdGltaXplRXhwcih0aGlzLnJocywgbmFtZXMsIGNvbnN0YW50cylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuIHRoaXMucmhzIGluc3RhbmNlb2YgX0NvZGVPck5hbWUgPyB0aGlzLnJocy5uYW1lcyA6IHt9XG4gIH1cbn1cblxuY2xhc3MgQXNzaWduIGV4dGVuZHMgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGxoczogQ29kZSxcbiAgICBwdWJsaWMgcmhzOiBTYWZlRXhwcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpZGVFZmZlY3RzPzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIoe19ufTogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5saHN9ID0gJHt0aGlzLnJoc307YCArIF9uXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubGhzIGluc3RhbmNlb2YgTmFtZSAmJiAhbmFtZXNbdGhpcy5saHMuc3RyXSAmJiAhdGhpcy5zaWRlRWZmZWN0cykgcmV0dXJuXG4gICAgdGhpcy5yaHMgPSBvcHRpbWl6ZUV4cHIodGhpcy5yaHMsIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIGNvbnN0IG5hbWVzID0gdGhpcy5saHMgaW5zdGFuY2VvZiBOYW1lID8ge30gOiB7Li4udGhpcy5saHMubmFtZXN9XG4gICAgcmV0dXJuIGFkZEV4cHJOYW1lcyhuYW1lcywgdGhpcy5yaHMpXG4gIH1cbn1cblxuY2xhc3MgQXNzaWduT3AgZXh0ZW5kcyBBc3NpZ24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBsaHM6IENvZGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcDogQ29kZSxcbiAgICByaHM6IFNhZmVFeHByLFxuICAgIHNpZGVFZmZlY3RzPzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcihsaHMsIHJocywgc2lkZUVmZmVjdHMpXG4gIH1cblxuICByZW5kZXIoe19ufTogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5saHN9ICR7dGhpcy5vcH09ICR7dGhpcy5yaHN9O2AgKyBfblxuICB9XG59XG5cbmNsYXNzIExhYmVsIGV4dGVuZHMgTm9kZSB7XG4gIHJlYWRvbmx5IG5hbWVzOiBVc2VkTmFtZXMgPSB7fVxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBsYWJlbDogTmFtZSkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcih7X259OiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfTpgICsgX25cbiAgfVxufVxuXG5jbGFzcyBCcmVhayBleHRlbmRzIE5vZGUge1xuICByZWFkb25seSBuYW1lczogVXNlZE5hbWVzID0ge31cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbGFiZWw/OiBDb2RlKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKHtfbn06IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLmxhYmVsID8gYCAke3RoaXMubGFiZWx9YCA6IFwiXCJcbiAgICByZXR1cm4gYGJyZWFrJHtsYWJlbH07YCArIF9uXG4gIH1cbn1cblxuY2xhc3MgVGhyb3cgZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZXJyb3I6IENvZGUpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIoe19ufTogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHRocm93ICR7dGhpcy5lcnJvcn07YCArIF9uXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvci5uYW1lc1xuICB9XG59XG5cbmNsYXNzIEFueUNvZGUgZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2RlOiBTYWZlRXhwcikge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcih7X259OiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvZGV9O2AgKyBfblxuICB9XG5cbiAgb3B0aW1pemVOb2RlcygpOiB0aGlzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlfWAgPyB0aGlzIDogdW5kZWZpbmVkXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB7XG4gICAgdGhpcy5jb2RlID0gb3B0aW1pemVFeHByKHRoaXMuY29kZSwgbmFtZXMsIGNvbnN0YW50cylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSBpbnN0YW5jZW9mIF9Db2RlT3JOYW1lID8gdGhpcy5jb2RlLm5hbWVzIDoge31cbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBQYXJlbnROb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG5vZGVzOiBDaGlsZE5vZGVbXSA9IFtdKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMucmVkdWNlKChjb2RlLCBuKSA9PiBjb2RlICsgbi5yZW5kZXIob3B0cyksIFwiXCIpXG4gIH1cblxuICBvcHRpbWl6ZU5vZGVzKCk6IHRoaXMgfCBDaGlsZE5vZGUgfCBDaGlsZE5vZGVbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qge25vZGVzfSA9IHRoaXNcbiAgICBsZXQgaSA9IG5vZGVzLmxlbmd0aFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNvbnN0IG4gPSBub2Rlc1tpXS5vcHRpbWl6ZU5vZGVzKClcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG4pKSBub2Rlcy5zcGxpY2UoaSwgMSwgLi4ubilcbiAgICAgIGVsc2UgaWYgKG4pIG5vZGVzW2ldID0gblxuICAgICAgZWxzZSBub2Rlcy5zcGxpY2UoaSwgMSlcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzLmxlbmd0aCA+IDAgPyB0aGlzIDogdW5kZWZpbmVkXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qge25vZGVzfSA9IHRoaXNcbiAgICBsZXQgaSA9IG5vZGVzLmxlbmd0aFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIC8vIGl0ZXJhdGluZyBiYWNrd2FyZHMgaW1wcm92ZXMgMS1wYXNzIG9wdGltaXphdGlvblxuICAgICAgY29uc3QgbiA9IG5vZGVzW2ldXG4gICAgICBpZiAobi5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpKSBjb250aW51ZVxuICAgICAgc3VidHJhY3ROYW1lcyhuYW1lcywgbi5uYW1lcylcbiAgICAgIG5vZGVzLnNwbGljZShpLCAxKVxuICAgIH1cbiAgICByZXR1cm4gbm9kZXMubGVuZ3RoID4gMCA/IHRoaXMgOiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLnJlZHVjZSgobmFtZXM6IFVzZWROYW1lcywgbikgPT4gYWRkTmFtZXMobmFtZXMsIG4ubmFtZXMpLCB7fSlcbiAgfVxuXG4gIC8vIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAvLyAgIHJldHVybiB0aGlzLm5vZGVzLnJlZHVjZSgoYywgbikgPT4gYyArIG4uY291bnQsIDEpXG4gIC8vIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgQmxvY2tOb2RlIGV4dGVuZHMgUGFyZW50Tm9kZSB7XG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIntcIiArIG9wdHMuX24gKyBzdXBlci5yZW5kZXIob3B0cykgKyBcIn1cIiArIG9wdHMuX25cbiAgfVxufVxuXG5jbGFzcyBSb290IGV4dGVuZHMgUGFyZW50Tm9kZSB7fVxuXG5jbGFzcyBFbHNlIGV4dGVuZHMgQmxvY2tOb2RlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGtpbmQgPSBcImVsc2VcIlxufVxuXG5jbGFzcyBJZiBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJpZlwiXG4gIGVsc2U/OiBJZiB8IEVsc2VcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25kaXRpb246IENvZGUgfCBib29sZWFuLFxuICAgIG5vZGVzPzogQ2hpbGROb2RlW11cbiAgKSB7XG4gICAgc3VwZXIobm9kZXMpXG4gIH1cblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICBsZXQgY29kZSA9IGBpZigke3RoaXMuY29uZGl0aW9ufSlgICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gICAgaWYgKHRoaXMuZWxzZSkgY29kZSArPSBcImVsc2UgXCIgKyB0aGlzLmVsc2UucmVuZGVyKG9wdHMpXG4gICAgcmV0dXJuIGNvZGVcbiAgfVxuXG4gIG9wdGltaXplTm9kZXMoKTogSWYgfCBDaGlsZE5vZGVbXSB8IHVuZGVmaW5lZCB7XG4gICAgc3VwZXIub3B0aW1pemVOb2RlcygpXG4gICAgY29uc3QgY29uZCA9IHRoaXMuY29uZGl0aW9uXG4gICAgaWYgKGNvbmQgPT09IHRydWUpIHJldHVybiB0aGlzLm5vZGVzIC8vIGVsc2UgaXMgaWdub3JlZCBoZXJlXG4gICAgbGV0IGUgPSB0aGlzLmVsc2VcbiAgICBpZiAoZSkge1xuICAgICAgY29uc3QgbnMgPSBlLm9wdGltaXplTm9kZXMoKVxuICAgICAgZSA9IHRoaXMuZWxzZSA9IEFycmF5LmlzQXJyYXkobnMpID8gbmV3IEVsc2UobnMpIDogKG5zIGFzIEVsc2UgfCB1bmRlZmluZWQpXG4gICAgfVxuICAgIGlmIChlKSB7XG4gICAgICBpZiAoY29uZCA9PT0gZmFsc2UpIHJldHVybiBlIGluc3RhbmNlb2YgSWYgPyBlIDogZS5ub2Rlc1xuICAgICAgaWYgKHRoaXMubm9kZXMubGVuZ3RoKSByZXR1cm4gdGhpc1xuICAgICAgcmV0dXJuIG5ldyBJZihub3QoY29uZCksIGUgaW5zdGFuY2VvZiBJZiA/IFtlXSA6IGUubm9kZXMpXG4gICAgfVxuICAgIGlmIChjb25kID09PSBmYWxzZSB8fCAhdGhpcy5ub2Rlcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuZWxzZSA9IHRoaXMuZWxzZT8ub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKVxuICAgIGlmICghKHN1cGVyLm9wdGltaXplTmFtZXMobmFtZXMsIGNvbnN0YW50cykgfHwgdGhpcy5lbHNlKSkgcmV0dXJuXG4gICAgdGhpcy5jb25kaXRpb24gPSBvcHRpbWl6ZUV4cHIodGhpcy5jb25kaXRpb24sIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIGNvbnN0IG5hbWVzID0gc3VwZXIubmFtZXNcbiAgICBhZGRFeHByTmFtZXMobmFtZXMsIHRoaXMuY29uZGl0aW9uKVxuICAgIGlmICh0aGlzLmVsc2UpIGFkZE5hbWVzKG5hbWVzLCB0aGlzLmVsc2UubmFtZXMpXG4gICAgcmV0dXJuIG5hbWVzXG4gIH1cblxuICAvLyBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgLy8gICByZXR1cm4gc3VwZXIuY291bnQgKyAodGhpcy5lbHNlPy5jb3VudCB8fCAwKVxuICAvLyB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEZvciBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJmb3JcIlxufVxuXG5jbGFzcyBGb3JMb29wIGV4dGVuZHMgRm9yIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpdGVyYXRpb246IENvZGUpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGZvcigke3RoaXMuaXRlcmF0aW9ufSlgICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzdXBlci5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpKSByZXR1cm5cbiAgICB0aGlzLml0ZXJhdGlvbiA9IG9wdGltaXplRXhwcih0aGlzLml0ZXJhdGlvbiwgbmFtZXMsIGNvbnN0YW50cylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuIGFkZE5hbWVzKHN1cGVyLm5hbWVzLCB0aGlzLml0ZXJhdGlvbi5uYW1lcylcbiAgfVxufVxuXG5jbGFzcyBGb3JSYW5nZSBleHRlbmRzIEZvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFyS2luZDogTmFtZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IE5hbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmcm9tOiBTYWZlRXhwcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvOiBTYWZlRXhwclxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YXJLaW5kID0gb3B0cy5lczUgPyB2YXJLaW5kcy52YXIgOiB0aGlzLnZhcktpbmRcbiAgICBjb25zdCB7bmFtZSwgZnJvbSwgdG99ID0gdGhpc1xuICAgIHJldHVybiBgZm9yKCR7dmFyS2luZH0gJHtuYW1lfT0ke2Zyb219OyAke25hbWV9PCR7dG99OyAke25hbWV9KyspYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgY29uc3QgbmFtZXMgPSBhZGRFeHByTmFtZXMoc3VwZXIubmFtZXMsIHRoaXMuZnJvbSlcbiAgICByZXR1cm4gYWRkRXhwck5hbWVzKG5hbWVzLCB0aGlzLnRvKVxuICB9XG59XG5cbmNsYXNzIEZvckl0ZXIgZXh0ZW5kcyBGb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvb3A6IFwib2ZcIiB8IFwiaW5cIixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhcktpbmQ6IE5hbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBOYW1lLFxuICAgIHByaXZhdGUgaXRlcmFibGU6IENvZGVcbiAgKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBmb3IoJHt0aGlzLnZhcktpbmR9ICR7dGhpcy5uYW1lfSAke3RoaXMubG9vcH0gJHt0aGlzLml0ZXJhYmxlfSlgICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gIH1cblxuICBvcHRpbWl6ZU5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzdXBlci5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpKSByZXR1cm5cbiAgICB0aGlzLml0ZXJhYmxlID0gb3B0aW1pemVFeHByKHRoaXMuaXRlcmFibGUsIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiBhZGROYW1lcyhzdXBlci5uYW1lcywgdGhpcy5pdGVyYWJsZS5uYW1lcylcbiAgfVxufVxuXG5jbGFzcyBGdW5jIGV4dGVuZHMgQmxvY2tOb2RlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGtpbmQgPSBcImZ1bmNcIlxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogTmFtZSxcbiAgICBwdWJsaWMgYXJnczogQ29kZSxcbiAgICBwdWJsaWMgYXN5bmM/OiBib29sZWFuXG4gICkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9hc3luYyA9IHRoaXMuYXN5bmMgPyBcImFzeW5jIFwiIDogXCJcIlxuICAgIHJldHVybiBgJHtfYXN5bmN9ZnVuY3Rpb24gJHt0aGlzLm5hbWV9KCR7dGhpcy5hcmdzfSlgICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gIH1cbn1cblxuY2xhc3MgUmV0dXJuIGV4dGVuZHMgUGFyZW50Tm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJyZXR1cm5cIlxuXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBcInJldHVybiBcIiArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG59XG5cbmNsYXNzIFRyeSBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIGNhdGNoPzogQ2F0Y2hcbiAgZmluYWxseT86IEZpbmFsbHlcblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICBsZXQgY29kZSA9IFwidHJ5XCIgKyBzdXBlci5yZW5kZXIob3B0cylcbiAgICBpZiAodGhpcy5jYXRjaCkgY29kZSArPSB0aGlzLmNhdGNoLnJlbmRlcihvcHRzKVxuICAgIGlmICh0aGlzLmZpbmFsbHkpIGNvZGUgKz0gdGhpcy5maW5hbGx5LnJlbmRlcihvcHRzKVxuICAgIHJldHVybiBjb2RlXG4gIH1cblxuICBvcHRpbWl6ZU5vZGVzKCk6IHRoaXMge1xuICAgIHN1cGVyLm9wdGltaXplTm9kZXMoKVxuICAgIHRoaXMuY2F0Y2g/Lm9wdGltaXplTm9kZXMoKSBhcyBDYXRjaCB8IHVuZGVmaW5lZFxuICAgIHRoaXMuZmluYWxseT8ub3B0aW1pemVOb2RlcygpIGFzIEZpbmFsbHkgfCB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMge1xuICAgIHN1cGVyLm9wdGltaXplTmFtZXMobmFtZXMsIGNvbnN0YW50cylcbiAgICB0aGlzLmNhdGNoPy5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpXG4gICAgdGhpcy5maW5hbGx5Py5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIGNvbnN0IG5hbWVzID0gc3VwZXIubmFtZXNcbiAgICBpZiAodGhpcy5jYXRjaCkgYWRkTmFtZXMobmFtZXMsIHRoaXMuY2F0Y2gubmFtZXMpXG4gICAgaWYgKHRoaXMuZmluYWxseSkgYWRkTmFtZXMobmFtZXMsIHRoaXMuZmluYWxseS5uYW1lcylcbiAgICByZXR1cm4gbmFtZXNcbiAgfVxuXG4gIC8vIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAvLyAgIHJldHVybiBzdXBlci5jb3VudCArICh0aGlzLmNhdGNoPy5jb3VudCB8fCAwKSArICh0aGlzLmZpbmFsbHk/LmNvdW50IHx8IDApXG4gIC8vIH1cbn1cblxuY2xhc3MgQ2F0Y2ggZXh0ZW5kcyBCbG9ja05vZGUge1xuICBzdGF0aWMgcmVhZG9ubHkga2luZCA9IFwiY2F0Y2hcIlxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBlcnJvcjogTmFtZSkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY2F0Y2goJHt0aGlzLmVycm9yfSlgICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gIH1cbn1cblxuY2xhc3MgRmluYWxseSBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJmaW5hbGx5XCJcbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiZmluYWxseVwiICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gIH1cbn1cblxudHlwZSBTdGFydEJsb2NrTm9kZSA9IElmIHwgRm9yIHwgRnVuYyB8IFJldHVybiB8IFRyeVxuXG50eXBlIExlYWZOb2RlID0gRGVmIHwgQXNzaWduIHwgTGFiZWwgfCBCcmVhayB8IFRocm93IHwgQW55Q29kZVxuXG50eXBlIENoaWxkTm9kZSA9IFN0YXJ0QmxvY2tOb2RlIHwgTGVhZk5vZGVcblxudHlwZSBFbmRCbG9ja05vZGVUeXBlID1cbiAgfCB0eXBlb2YgSWZcbiAgfCB0eXBlb2YgRWxzZVxuICB8IHR5cGVvZiBGb3JcbiAgfCB0eXBlb2YgRnVuY1xuICB8IHR5cGVvZiBSZXR1cm5cbiAgfCB0eXBlb2YgQ2F0Y2hcbiAgfCB0eXBlb2YgRmluYWxseVxuXG50eXBlIENvbnN0YW50cyA9IFJlY29yZDxzdHJpbmcsIFNhZmVFeHByIHwgdW5kZWZpbmVkPlxuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVHZW5PcHRpb25zIHtcbiAgZXM1PzogYm9vbGVhblxuICBsaW5lcz86IGJvb2xlYW5cbiAgb3duUHJvcGVydGllcz86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIENHT3B0aW9ucyBleHRlbmRzIENvZGVHZW5PcHRpb25zIHtcbiAgX246IFwiXFxuXCIgfCBcIlwiXG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlR2VuIHtcbiAgcmVhZG9ubHkgX3Njb3BlOiBTY29wZVxuICByZWFkb25seSBfZXh0U2NvcGU6IFZhbHVlU2NvcGVcbiAgcmVhZG9ubHkgX3ZhbHVlczogU2NvcGVWYWx1ZVNldHMgPSB7fVxuICBwcml2YXRlIHJlYWRvbmx5IF9ub2RlczogUGFyZW50Tm9kZVtdXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jsb2NrU3RhcnRzOiBudW1iZXJbXSA9IFtdXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnN0YW50czogQ29uc3RhbnRzID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRzOiBDR09wdGlvbnNcblxuICBjb25zdHJ1Y3RvcihleHRTY29wZTogVmFsdWVTY29wZSwgb3B0czogQ29kZUdlbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMub3B0cyA9IHsuLi5vcHRzLCBfbjogb3B0cy5saW5lcyA/IFwiXFxuXCIgOiBcIlwifVxuICAgIHRoaXMuX2V4dFNjb3BlID0gZXh0U2NvcGVcbiAgICB0aGlzLl9zY29wZSA9IG5ldyBTY29wZSh7cGFyZW50OiBleHRTY29wZX0pXG4gICAgdGhpcy5fbm9kZXMgPSBbbmV3IFJvb3QoKV1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3QucmVuZGVyKHRoaXMub3B0cylcbiAgfVxuXG4gIC8vIHJldHVybnMgdW5pcXVlIG5hbWUgaW4gdGhlIGludGVybmFsIHNjb3BlXG4gIG5hbWUocHJlZml4OiBzdHJpbmcpOiBOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fc2NvcGUubmFtZShwcmVmaXgpXG4gIH1cblxuICAvLyByZXNlcnZlcyB1bmlxdWUgbmFtZSBpbiB0aGUgZXh0ZXJuYWwgc2NvcGVcbiAgc2NvcGVOYW1lKHByZWZpeDogc3RyaW5nKTogVmFsdWVTY29wZU5hbWUge1xuICAgIHJldHVybiB0aGlzLl9leHRTY29wZS5uYW1lKHByZWZpeClcbiAgfVxuXG4gIC8vIHJlc2VydmVzIHVuaXF1ZSBuYW1lIGluIHRoZSBleHRlcm5hbCBzY29wZSBhbmQgYXNzaWducyB2YWx1ZSB0byBpdFxuICBzY29wZVZhbHVlKHByZWZpeE9yTmFtZTogVmFsdWVTY29wZU5hbWUgfCBzdHJpbmcsIHZhbHVlOiBOYW1lVmFsdWUpOiBOYW1lIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fZXh0U2NvcGUudmFsdWUocHJlZml4T3JOYW1lLCB2YWx1ZSlcbiAgICBjb25zdCB2cyA9IHRoaXMuX3ZhbHVlc1tuYW1lLnByZWZpeF0gfHwgKHRoaXMuX3ZhbHVlc1tuYW1lLnByZWZpeF0gPSBuZXcgU2V0KCkpXG4gICAgdnMuYWRkKG5hbWUpXG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIGdldFNjb3BlVmFsdWUocHJlZml4OiBzdHJpbmcsIGtleU9yUmVmOiB1bmtub3duKTogVmFsdWVTY29wZU5hbWUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9leHRTY29wZS5nZXRWYWx1ZShwcmVmaXgsIGtleU9yUmVmKVxuICB9XG5cbiAgLy8gcmV0dXJuIGNvZGUgdGhhdCBhc3NpZ25zIHZhbHVlcyBpbiB0aGUgZXh0ZXJuYWwgc2NvcGUgdG8gdGhlIG5hbWVzIHRoYXQgYXJlIHVzZWQgaW50ZXJuYWxseVxuICAvLyAoc2FtZSBuYW1lcyB0aGF0IHdlcmUgcmV0dXJuZWQgYnkgZ2VuLnNjb3BlTmFtZSBvciBnZW4uc2NvcGVWYWx1ZSlcbiAgc2NvcGVSZWZzKHNjb3BlTmFtZTogTmFtZSk6IENvZGUge1xuICAgIHJldHVybiB0aGlzLl9leHRTY29wZS5zY29wZVJlZnMoc2NvcGVOYW1lLCB0aGlzLl92YWx1ZXMpXG4gIH1cblxuICBzY29wZUNvZGUoKTogQ29kZSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dFNjb3BlLnNjb3BlQ29kZSh0aGlzLl92YWx1ZXMpXG4gIH1cblxuICBwcml2YXRlIF9kZWYoXG4gICAgdmFyS2luZDogTmFtZSxcbiAgICBuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcsXG4gICAgcmhzPzogU2FmZUV4cHIsXG4gICAgY29uc3RhbnQ/OiBib29sZWFuXG4gICk6IE5hbWUge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLl9zY29wZS50b05hbWUobmFtZU9yUHJlZml4KVxuICAgIGlmIChyaHMgIT09IHVuZGVmaW5lZCAmJiBjb25zdGFudCkgdGhpcy5fY29uc3RhbnRzW25hbWUuc3RyXSA9IHJoc1xuICAgIHRoaXMuX2xlYWZOb2RlKG5ldyBEZWYodmFyS2luZCwgbmFtZSwgcmhzKSlcbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgLy8gYGNvbnN0YCBkZWNsYXJhdGlvbiAoYHZhcmAgaW4gZXM1IG1vZGUpXG4gIGNvbnN0KG5hbWVPclByZWZpeDogTmFtZSB8IHN0cmluZywgcmhzOiBTYWZlRXhwciwgX2NvbnN0YW50PzogYm9vbGVhbik6IE5hbWUge1xuICAgIHJldHVybiB0aGlzLl9kZWYodmFyS2luZHMuY29uc3QsIG5hbWVPclByZWZpeCwgcmhzLCBfY29uc3RhbnQpXG4gIH1cblxuICAvLyBgbGV0YCBkZWNsYXJhdGlvbiB3aXRoIG9wdGlvbmFsIGFzc2lnbm1lbnQgKGB2YXJgIGluIGVzNSBtb2RlKVxuICBsZXQobmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLCByaHM/OiBTYWZlRXhwciwgX2NvbnN0YW50PzogYm9vbGVhbik6IE5hbWUge1xuICAgIHJldHVybiB0aGlzLl9kZWYodmFyS2luZHMubGV0LCBuYW1lT3JQcmVmaXgsIHJocywgX2NvbnN0YW50KVxuICB9XG5cbiAgLy8gYHZhcmAgZGVjbGFyYXRpb24gd2l0aCBvcHRpb25hbCBhc3NpZ25tZW50XG4gIHZhcihuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcsIHJocz86IFNhZmVFeHByLCBfY29uc3RhbnQ/OiBib29sZWFuKTogTmFtZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZih2YXJLaW5kcy52YXIsIG5hbWVPclByZWZpeCwgcmhzLCBfY29uc3RhbnQpXG4gIH1cblxuICAvLyBhc3NpZ25tZW50IGNvZGVcbiAgYXNzaWduKGxoczogQ29kZSwgcmhzOiBTYWZlRXhwciwgc2lkZUVmZmVjdHM/OiBib29sZWFuKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBBc3NpZ24obGhzLCByaHMsIHNpZGVFZmZlY3RzKSlcbiAgfVxuXG4gIC8vIGArPWAgY29kZVxuICBhZGQobGhzOiBDb2RlLCByaHM6IFNhZmVFeHByKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBBc3NpZ25PcChsaHMsIG9wZXJhdG9ycy5BREQsIHJocykpXG4gIH1cblxuICAvLyBhcHBlbmRzIHBhc3NlZCBTYWZlRXhwciB0byBjb2RlIG9yIGV4ZWN1dGVzIEJsb2NrXG4gIGNvZGUoYzogQmxvY2sgfCBTYWZlRXhwcik6IENvZGVHZW4ge1xuICAgIGlmICh0eXBlb2YgYyA9PSBcImZ1bmN0aW9uXCIpIGMoKVxuICAgIGVsc2UgaWYgKGMgIT09IG5pbCkgdGhpcy5fbGVhZk5vZGUobmV3IEFueUNvZGUoYykpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIHJldHVybnMgY29kZSBmb3Igb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSBwYXNzZWQgYXJndW1lbnQgbGlzdCBvZiBrZXktdmFsdWUgcGFpcnNcbiAgb2JqZWN0KC4uLmtleVZhbHVlczogW05hbWUgfCBzdHJpbmcsIFNhZmVFeHByIHwgc3RyaW5nXVtdKTogX0NvZGUge1xuICAgIGNvbnN0IGNvZGU6IENvZGVJdGVtW10gPSBbXCJ7XCJdXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2Yga2V5VmFsdWVzKSB7XG4gICAgICBpZiAoY29kZS5sZW5ndGggPiAxKSBjb2RlLnB1c2goXCIsXCIpXG4gICAgICBjb2RlLnB1c2goa2V5KVxuICAgICAgaWYgKGtleSAhPT0gdmFsdWUgfHwgdGhpcy5vcHRzLmVzNSkge1xuICAgICAgICBjb2RlLnB1c2goXCI6XCIpXG4gICAgICAgIGFkZENvZGVBcmcoY29kZSwgdmFsdWUpXG4gICAgICB9XG4gICAgfVxuICAgIGNvZGUucHVzaChcIn1cIilcbiAgICByZXR1cm4gbmV3IF9Db2RlKGNvZGUpXG4gIH1cblxuICAvLyBgaWZgIGNsYXVzZSAob3Igc3RhdGVtZW50IGlmIGB0aGVuQm9keWAgYW5kLCBvcHRpb25hbGx5LCBgZWxzZUJvZHlgIGFyZSBwYXNzZWQpXG4gIGlmKGNvbmRpdGlvbjogQ29kZSB8IGJvb2xlYW4sIHRoZW5Cb2R5PzogQmxvY2ssIGVsc2VCb2R5PzogQmxvY2spOiBDb2RlR2VuIHtcbiAgICB0aGlzLl9ibG9ja05vZGUobmV3IElmKGNvbmRpdGlvbikpXG5cbiAgICBpZiAodGhlbkJvZHkgJiYgZWxzZUJvZHkpIHtcbiAgICAgIHRoaXMuY29kZSh0aGVuQm9keSkuZWxzZSgpLmNvZGUoZWxzZUJvZHkpLmVuZElmKClcbiAgICB9IGVsc2UgaWYgKHRoZW5Cb2R5KSB7XG4gICAgICB0aGlzLmNvZGUodGhlbkJvZHkpLmVuZElmKClcbiAgICB9IGVsc2UgaWYgKGVsc2VCb2R5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVHZW46IFwiZWxzZVwiIGJvZHkgd2l0aG91dCBcInRoZW5cIiBib2R5JylcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIGBlbHNlIGlmYCBjbGF1c2UgLSBpbnZhbGlkIHdpdGhvdXQgYGlmYCBvciBhZnRlciBgZWxzZWAgY2xhdXNlc1xuICBlbHNlSWYoY29uZGl0aW9uOiBDb2RlIHwgYm9vbGVhbik6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9lbHNlTm9kZShuZXcgSWYoY29uZGl0aW9uKSlcbiAgfVxuXG4gIC8vIGBlbHNlYCBjbGF1c2UgLSBvbmx5IHZhbGlkIGFmdGVyIGBpZmAgb3IgYGVsc2UgaWZgIGNsYXVzZXNcbiAgZWxzZSgpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fZWxzZU5vZGUobmV3IEVsc2UoKSlcbiAgfVxuXG4gIC8vIGVuZCBgaWZgIHN0YXRlbWVudCAobmVlZGVkIGlmIGdlbi5pZiB3YXMgdXNlZCBvbmx5IHdpdGggY29uZGl0aW9uKVxuICBlbmRJZigpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKElmLCBFbHNlKVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9yKG5vZGU6IEZvciwgZm9yQm9keT86IEJsb2NrKTogQ29kZUdlbiB7XG4gICAgdGhpcy5fYmxvY2tOb2RlKG5vZGUpXG4gICAgaWYgKGZvckJvZHkpIHRoaXMuY29kZShmb3JCb2R5KS5lbmRGb3IoKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBhIGdlbmVyaWMgYGZvcmAgY2xhdXNlIChvciBzdGF0ZW1lbnQgaWYgYGZvckJvZHlgIGlzIHBhc3NlZClcbiAgZm9yKGl0ZXJhdGlvbjogQ29kZSwgZm9yQm9keT86IEJsb2NrKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcihuZXcgRm9yTG9vcChpdGVyYXRpb24pLCBmb3JCb2R5KVxuICB9XG5cbiAgLy8gYGZvcmAgc3RhdGVtZW50IGZvciBhIHJhbmdlIG9mIHZhbHVlc1xuICBmb3JSYW5nZShcbiAgICBuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcsXG4gICAgZnJvbTogU2FmZUV4cHIsXG4gICAgdG86IFNhZmVFeHByLFxuICAgIGZvckJvZHk6IChpbmRleDogTmFtZSkgPT4gdm9pZCxcbiAgICB2YXJLaW5kOiBDb2RlID0gdGhpcy5vcHRzLmVzNSA/IHZhcktpbmRzLnZhciA6IHZhcktpbmRzLmxldFxuICApOiBDb2RlR2VuIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fc2NvcGUudG9OYW1lKG5hbWVPclByZWZpeClcbiAgICByZXR1cm4gdGhpcy5fZm9yKG5ldyBGb3JSYW5nZSh2YXJLaW5kLCBuYW1lLCBmcm9tLCB0byksICgpID0+IGZvckJvZHkobmFtZSkpXG4gIH1cblxuICAvLyBgZm9yLW9mYCBzdGF0ZW1lbnQgKGluIGVzNSBtb2RlIHJlcGxhY2Ugd2l0aCBhIG5vcm1hbCBmb3IgbG9vcClcbiAgZm9yT2YoXG4gICAgbmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLFxuICAgIGl0ZXJhYmxlOiBDb2RlLFxuICAgIGZvckJvZHk6IChpdGVtOiBOYW1lKSA9PiB2b2lkLFxuICAgIHZhcktpbmQ6IENvZGUgPSB2YXJLaW5kcy5jb25zdFxuICApOiBDb2RlR2VuIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fc2NvcGUudG9OYW1lKG5hbWVPclByZWZpeClcbiAgICBpZiAodGhpcy5vcHRzLmVzNSkge1xuICAgICAgY29uc3QgYXJyID0gaXRlcmFibGUgaW5zdGFuY2VvZiBOYW1lID8gaXRlcmFibGUgOiB0aGlzLnZhcihcIl9hcnJcIiwgaXRlcmFibGUpXG4gICAgICByZXR1cm4gdGhpcy5mb3JSYW5nZShcIl9pXCIsIDAsIF9gJHthcnJ9Lmxlbmd0aGAsIChpKSA9PiB7XG4gICAgICAgIHRoaXMudmFyKG5hbWUsIF9gJHthcnJ9WyR7aX1dYClcbiAgICAgICAgZm9yQm9keShuYW1lKVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ZvcihuZXcgRm9ySXRlcihcIm9mXCIsIHZhcktpbmQsIG5hbWUsIGl0ZXJhYmxlKSwgKCkgPT4gZm9yQm9keShuYW1lKSlcbiAgfVxuXG4gIC8vIGBmb3ItaW5gIHN0YXRlbWVudC5cbiAgLy8gV2l0aCBvcHRpb24gYG93blByb3BlcnRpZXNgIHJlcGxhY2VkIHdpdGggYSBgZm9yLW9mYCBsb29wIGZvciBvYmplY3Qga2V5c1xuICBmb3JJbihcbiAgICBuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcsXG4gICAgb2JqOiBDb2RlLFxuICAgIGZvckJvZHk6IChpdGVtOiBOYW1lKSA9PiB2b2lkLFxuICAgIHZhcktpbmQ6IENvZGUgPSB0aGlzLm9wdHMuZXM1ID8gdmFyS2luZHMudmFyIDogdmFyS2luZHMuY29uc3RcbiAgKTogQ29kZUdlbiB7XG4gICAgaWYgKHRoaXMub3B0cy5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JPZihuYW1lT3JQcmVmaXgsIF9gT2JqZWN0LmtleXMoJHtvYmp9KWAsIGZvckJvZHkpXG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLl9zY29wZS50b05hbWUobmFtZU9yUHJlZml4KVxuICAgIHJldHVybiB0aGlzLl9mb3IobmV3IEZvckl0ZXIoXCJpblwiLCB2YXJLaW5kLCBuYW1lLCBvYmopLCAoKSA9PiBmb3JCb2R5KG5hbWUpKVxuICB9XG5cbiAgLy8gZW5kIGBmb3JgIGxvb3BcbiAgZW5kRm9yKCk6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoRm9yKVxuICB9XG5cbiAgLy8gYGxhYmVsYCBzdGF0ZW1lbnRcbiAgbGFiZWwobGFiZWw6IE5hbWUpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IExhYmVsKGxhYmVsKSlcbiAgfVxuXG4gIC8vIGBicmVha2Agc3RhdGVtZW50XG4gIGJyZWFrKGxhYmVsPzogQ29kZSk6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgQnJlYWsobGFiZWwpKVxuICB9XG5cbiAgLy8gYHJldHVybmAgc3RhdGVtZW50XG4gIHJldHVybih2YWx1ZTogQmxvY2sgfCBTYWZlRXhwcik6IENvZGVHZW4ge1xuICAgIGNvbnN0IG5vZGUgPSBuZXcgUmV0dXJuKClcbiAgICB0aGlzLl9ibG9ja05vZGUobm9kZSlcbiAgICB0aGlzLmNvZGUodmFsdWUpXG4gICAgaWYgKG5vZGUubm9kZXMubGVuZ3RoICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVHZW46IFwicmV0dXJuXCIgc2hvdWxkIGhhdmUgb25lIG5vZGUnKVxuICAgIHJldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoUmV0dXJuKVxuICB9XG5cbiAgLy8gYHRyeWAgc3RhdGVtZW50XG4gIHRyeSh0cnlCb2R5OiBCbG9jaywgY2F0Y2hDb2RlPzogKGU6IE5hbWUpID0+IHZvaWQsIGZpbmFsbHlDb2RlPzogQmxvY2spOiBDb2RlR2VuIHtcbiAgICBpZiAoIWNhdGNoQ29kZSAmJiAhZmluYWxseUNvZGUpIHRocm93IG5ldyBFcnJvcignQ29kZUdlbjogXCJ0cnlcIiB3aXRob3V0IFwiY2F0Y2hcIiBhbmQgXCJmaW5hbGx5XCInKVxuICAgIGNvbnN0IG5vZGUgPSBuZXcgVHJ5KClcbiAgICB0aGlzLl9ibG9ja05vZGUobm9kZSlcbiAgICB0aGlzLmNvZGUodHJ5Qm9keSlcbiAgICBpZiAoY2F0Y2hDb2RlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMubmFtZShcImVcIilcbiAgICAgIHRoaXMuX2N1cnJOb2RlID0gbm9kZS5jYXRjaCA9IG5ldyBDYXRjaChlcnJvcilcbiAgICAgIGNhdGNoQ29kZShlcnJvcilcbiAgICB9XG4gICAgaWYgKGZpbmFsbHlDb2RlKSB7XG4gICAgICB0aGlzLl9jdXJyTm9kZSA9IG5vZGUuZmluYWxseSA9IG5ldyBGaW5hbGx5KClcbiAgICAgIHRoaXMuY29kZShmaW5hbGx5Q29kZSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShDYXRjaCwgRmluYWxseSlcbiAgfVxuXG4gIC8vIGB0aHJvd2Agc3RhdGVtZW50XG4gIHRocm93KGVycm9yOiBDb2RlKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBUaHJvdyhlcnJvcikpXG4gIH1cblxuICAvLyBzdGFydCBzZWxmLWJhbGFuY2luZyBibG9ja1xuICBibG9jayhib2R5PzogQmxvY2ssIG5vZGVDb3VudD86IG51bWJlcik6IENvZGVHZW4ge1xuICAgIHRoaXMuX2Jsb2NrU3RhcnRzLnB1c2godGhpcy5fbm9kZXMubGVuZ3RoKVxuICAgIGlmIChib2R5KSB0aGlzLmNvZGUoYm9keSkuZW5kQmxvY2sobm9kZUNvdW50KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBlbmQgdGhlIGN1cnJlbnQgc2VsZi1iYWxhbmNpbmcgYmxvY2tcbiAgZW5kQmxvY2sobm9kZUNvdW50PzogbnVtYmVyKTogQ29kZUdlbiB7XG4gICAgY29uc3QgbGVuID0gdGhpcy5fYmxvY2tTdGFydHMucG9wKClcbiAgICBpZiAobGVuID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihcIkNvZGVHZW46IG5vdCBpbiBzZWxmLWJhbGFuY2luZyBibG9ja1wiKVxuICAgIGNvbnN0IHRvQ2xvc2UgPSB0aGlzLl9ub2Rlcy5sZW5ndGggLSBsZW5cbiAgICBpZiAodG9DbG9zZSA8IDAgfHwgKG5vZGVDb3VudCAhPT0gdW5kZWZpbmVkICYmIHRvQ2xvc2UgIT09IG5vZGVDb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogd3JvbmcgbnVtYmVyIG9mIG5vZGVzOiAke3RvQ2xvc2V9IHZzICR7bm9kZUNvdW50fSBleHBlY3RlZGApXG4gICAgfVxuICAgIHRoaXMuX25vZGVzLmxlbmd0aCA9IGxlblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBgZnVuY3Rpb25gIGhlYWRpbmcgKG9yIGRlZmluaXRpb24gaWYgZnVuY0JvZHkgaXMgcGFzc2VkKVxuICBmdW5jKG5hbWU6IE5hbWUsIGFyZ3M6IENvZGUgPSBuaWwsIGFzeW5jPzogYm9vbGVhbiwgZnVuY0JvZHk/OiBCbG9jayk6IENvZGVHZW4ge1xuICAgIHRoaXMuX2Jsb2NrTm9kZShuZXcgRnVuYyhuYW1lLCBhcmdzLCBhc3luYykpXG4gICAgaWYgKGZ1bmNCb2R5KSB0aGlzLmNvZGUoZnVuY0JvZHkpLmVuZEZ1bmMoKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBlbmQgZnVuY3Rpb24gZGVmaW5pdGlvblxuICBlbmRGdW5jKCk6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoRnVuYylcbiAgfVxuXG4gIG9wdGltaXplKG4gPSAxKTogdm9pZCB7XG4gICAgd2hpbGUgKG4tLSA+IDApIHtcbiAgICAgIHRoaXMuX3Jvb3Qub3B0aW1pemVOb2RlcygpXG4gICAgICB0aGlzLl9yb290Lm9wdGltaXplTmFtZXModGhpcy5fcm9vdC5uYW1lcywgdGhpcy5fY29uc3RhbnRzKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xlYWZOb2RlKG5vZGU6IExlYWZOb2RlKTogQ29kZUdlbiB7XG4gICAgdGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaChub2RlKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwcml2YXRlIF9ibG9ja05vZGUobm9kZTogU3RhcnRCbG9ja05vZGUpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyTm9kZS5ub2Rlcy5wdXNoKG5vZGUpXG4gICAgdGhpcy5fbm9kZXMucHVzaChub2RlKVxuICB9XG5cbiAgcHJpdmF0ZSBfZW5kQmxvY2tOb2RlKE4xOiBFbmRCbG9ja05vZGVUeXBlLCBOMj86IEVuZEJsb2NrTm9kZVR5cGUpOiBDb2RlR2VuIHtcbiAgICBjb25zdCBuID0gdGhpcy5fY3Vyck5vZGVcbiAgICBpZiAobiBpbnN0YW5jZW9mIE4xIHx8IChOMiAmJiBuIGluc3RhbmNlb2YgTjIpKSB7XG4gICAgICB0aGlzLl9ub2Rlcy5wb3AoKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBub3QgaW4gYmxvY2sgXCIke04yID8gYCR7TjEua2luZH0vJHtOMi5raW5kfWAgOiBOMS5raW5kfVwiYClcbiAgfVxuXG4gIHByaXZhdGUgX2Vsc2VOb2RlKG5vZGU6IElmIHwgRWxzZSk6IENvZGVHZW4ge1xuICAgIGNvbnN0IG4gPSB0aGlzLl9jdXJyTm9kZVxuICAgIGlmICghKG4gaW5zdGFuY2VvZiBJZikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29kZUdlbjogXCJlbHNlXCIgd2l0aG91dCBcImlmXCInKVxuICAgIH1cbiAgICB0aGlzLl9jdXJyTm9kZSA9IG4uZWxzZSA9IG5vZGVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3Jvb3QoKTogUm9vdCB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzWzBdIGFzIFJvb3RcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9jdXJyTm9kZSgpOiBQYXJlbnROb2RlIHtcbiAgICBjb25zdCBucyA9IHRoaXMuX25vZGVzXG4gICAgcmV0dXJuIG5zW25zLmxlbmd0aCAtIDFdXG4gIH1cblxuICBwcml2YXRlIHNldCBfY3Vyck5vZGUobm9kZTogUGFyZW50Tm9kZSkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5fbm9kZXNcbiAgICBuc1tucy5sZW5ndGggLSAxXSA9IG5vZGVcbiAgfVxuXG4gIC8vIGdldCBub2RlQ291bnQoKTogbnVtYmVyIHtcbiAgLy8gICByZXR1cm4gdGhpcy5fcm9vdC5jb3VudFxuICAvLyB9XG59XG5cbmZ1bmN0aW9uIGFkZE5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGZyb206IFVzZWROYW1lcyk6IFVzZWROYW1lcyB7XG4gIGZvciAoY29uc3QgbiBpbiBmcm9tKSBuYW1lc1tuXSA9IChuYW1lc1tuXSB8fCAwKSArIChmcm9tW25dIHx8IDApXG4gIHJldHVybiBuYW1lc1xufVxuXG5mdW5jdGlvbiBhZGRFeHByTmFtZXMobmFtZXM6IFVzZWROYW1lcywgZnJvbTogU2FmZUV4cHIpOiBVc2VkTmFtZXMge1xuICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIF9Db2RlT3JOYW1lID8gYWRkTmFtZXMobmFtZXMsIGZyb20ubmFtZXMpIDogbmFtZXNcbn1cblxuZnVuY3Rpb24gb3B0aW1pemVFeHByPFQgZXh0ZW5kcyBTYWZlRXhwciB8IENvZGU+KGV4cHI6IFQsIG5hbWVzOiBVc2VkTmFtZXMsIGNvbnN0YW50czogQ29uc3RhbnRzKTogVFxuZnVuY3Rpb24gb3B0aW1pemVFeHByKGV4cHI6IFNhZmVFeHByLCBuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IFNhZmVFeHByIHtcbiAgaWYgKGV4cHIgaW5zdGFuY2VvZiBOYW1lKSByZXR1cm4gcmVwbGFjZU5hbWUoZXhwcilcbiAgaWYgKCFjYW5PcHRpbWl6ZShleHByKSkgcmV0dXJuIGV4cHJcbiAgcmV0dXJuIG5ldyBfQ29kZShcbiAgICBleHByLl9pdGVtcy5yZWR1Y2UoKGl0ZW1zOiBDb2RlSXRlbVtdLCBjOiBTYWZlRXhwciB8IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGMgaW5zdGFuY2VvZiBOYW1lKSBjID0gcmVwbGFjZU5hbWUoYylcbiAgICAgIGlmIChjIGluc3RhbmNlb2YgX0NvZGUpIGl0ZW1zLnB1c2goLi4uYy5faXRlbXMpXG4gICAgICBlbHNlIGl0ZW1zLnB1c2goYylcbiAgICAgIHJldHVybiBpdGVtc1xuICAgIH0sIFtdKVxuICApXG5cbiAgZnVuY3Rpb24gcmVwbGFjZU5hbWUobjogTmFtZSk6IFNhZmVFeHByIHtcbiAgICBjb25zdCBjID0gY29uc3RhbnRzW24uc3RyXVxuICAgIGlmIChjID09PSB1bmRlZmluZWQgfHwgbmFtZXNbbi5zdHJdICE9PSAxKSByZXR1cm4gblxuICAgIGRlbGV0ZSBuYW1lc1tuLnN0cl1cbiAgICByZXR1cm4gY1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuT3B0aW1pemUoZTogU2FmZUV4cHIpOiBlIGlzIF9Db2RlIHtcbiAgICByZXR1cm4gKFxuICAgICAgZSBpbnN0YW5jZW9mIF9Db2RlICYmXG4gICAgICBlLl9pdGVtcy5zb21lKFxuICAgICAgICAoYykgPT4gYyBpbnN0YW5jZW9mIE5hbWUgJiYgbmFtZXNbYy5zdHJdID09PSAxICYmIGNvbnN0YW50c1tjLnN0cl0gIT09IHVuZGVmaW5lZFxuICAgICAgKVxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiBzdWJ0cmFjdE5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGZyb206IFVzZWROYW1lcyk6IHZvaWQge1xuICBmb3IgKGNvbnN0IG4gaW4gZnJvbSkgbmFtZXNbbl0gPSAobmFtZXNbbl0gfHwgMCkgLSAoZnJvbVtuXSB8fCAwKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm90PFQgZXh0ZW5kcyBDb2RlIHwgU2FmZUV4cHI+KHg6IFQpOiBUXG5leHBvcnQgZnVuY3Rpb24gbm90KHg6IENvZGUgfCBTYWZlRXhwcik6IENvZGUgfCBTYWZlRXhwciB7XG4gIHJldHVybiB0eXBlb2YgeCA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgeCA9PSBcIm51bWJlclwiIHx8IHggPT09IG51bGwgPyAheCA6IF9gISR7cGFyKHgpfWBcbn1cblxuY29uc3QgYW5kQ29kZSA9IG1hcHBlbmQob3BlcmF0b3JzLkFORClcblxuLy8gYm9vbGVhbiBBTkQgKCYmKSBleHByZXNzaW9uIHdpdGggdGhlIHBhc3NlZCBhcmd1bWVudHNcbmV4cG9ydCBmdW5jdGlvbiBhbmQoLi4uYXJnczogQ29kZVtdKTogQ29kZSB7XG4gIHJldHVybiBhcmdzLnJlZHVjZShhbmRDb2RlKVxufVxuXG5jb25zdCBvckNvZGUgPSBtYXBwZW5kKG9wZXJhdG9ycy5PUilcblxuLy8gYm9vbGVhbiBPUiAofHwpIGV4cHJlc3Npb24gd2l0aCB0aGUgcGFzc2VkIGFyZ3VtZW50c1xuZXhwb3J0IGZ1bmN0aW9uIG9yKC4uLmFyZ3M6IENvZGVbXSk6IENvZGUge1xuICByZXR1cm4gYXJncy5yZWR1Y2Uob3JDb2RlKVxufVxuXG50eXBlIE1BcHBlbmQgPSAoeDogQ29kZSwgeTogQ29kZSkgPT4gQ29kZVxuXG5mdW5jdGlvbiBtYXBwZW5kKG9wOiBDb2RlKTogTUFwcGVuZCB7XG4gIHJldHVybiAoeCwgeSkgPT4gKHggPT09IG5pbCA/IHkgOiB5ID09PSBuaWwgPyB4IDogX2Ake3Bhcih4KX0gJHtvcH0gJHtwYXIoeSl9YClcbn1cblxuZnVuY3Rpb24gcGFyKHg6IENvZGUpOiBDb2RlIHtcbiAgcmV0dXJuIHggaW5zdGFuY2VvZiBOYW1lID8geCA6IF9gKCR7eH0pYFxufVxuIiwgImltcG9ydCB0eXBlIHtBbnlTY2hlbWEsIEV2YWx1YXRlZFByb3BlcnRpZXMsIEV2YWx1YXRlZEl0ZW1zfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYUN4dCwgU2NoZW1hT2JqQ3h0fSBmcm9tIFwiLlwiXG5pbXBvcnQge18sIGdldFByb3BlcnR5LCBDb2RlLCBOYW1lLCBDb2RlR2VufSBmcm9tIFwiLi9jb2RlZ2VuXCJcbmltcG9ydCB7X0NvZGV9IGZyb20gXCIuL2NvZGVnZW4vY29kZVwiXG5pbXBvcnQgdHlwZSB7UnVsZSwgVmFsaWRhdGlvblJ1bGVzfSBmcm9tIFwiLi9ydWxlc1wiXG5cbi8vIFRPRE8gcmVmYWN0b3IgdG8gdXNlIFNldFxuZXhwb3J0IGZ1bmN0aW9uIHRvSGFzaDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihhcnI6IFRbXSk6IHtbSyBpbiBUXT86IHRydWV9IHtcbiAgY29uc3QgaGFzaDoge1tLIGluIFRdPzogdHJ1ZX0gPSB7fVxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSBoYXNoW2l0ZW1dID0gdHJ1ZVxuICByZXR1cm4gaGFzaFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWx3YXlzVmFsaWRTY2hlbWEoaXQ6IFNjaGVtYUN4dCwgc2NoZW1hOiBBbnlTY2hlbWEpOiBib29sZWFuIHwgdm9pZCB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09IFwiYm9vbGVhblwiKSByZXR1cm4gc2NoZW1hXG4gIGlmIChPYmplY3Qua2V5cyhzY2hlbWEpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcbiAgY2hlY2tVbmtub3duUnVsZXMoaXQsIHNjaGVtYSlcbiAgcmV0dXJuICFzY2hlbWFIYXNSdWxlcyhzY2hlbWEsIGl0LnNlbGYuUlVMRVMuYWxsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tVbmtub3duUnVsZXMoaXQ6IFNjaGVtYUN4dCwgc2NoZW1hOiBBbnlTY2hlbWEgPSBpdC5zY2hlbWEpOiB2b2lkIHtcbiAgY29uc3Qge29wdHMsIHNlbGZ9ID0gaXRcbiAgaWYgKCFvcHRzLnN0cmljdFNjaGVtYSkgcmV0dXJuXG4gIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcImJvb2xlYW5cIikgcmV0dXJuXG4gIGNvbnN0IHJ1bGVzID0gc2VsZi5SVUxFUy5rZXl3b3Jkc1xuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICBpZiAoIXJ1bGVzW2tleV0pIGNoZWNrU3RyaWN0TW9kZShpdCwgYHVua25vd24ga2V5d29yZDogXCIke2tleX1cImApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzKFxuICBzY2hlbWE6IEFueVNjaGVtYSxcbiAgcnVsZXM6IHtbS2V5IGluIHN0cmluZ10/OiBib29sZWFuIHwgUnVsZX1cbik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuICFzY2hlbWFcbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSBpZiAocnVsZXNba2V5XSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFIYXNSdWxlc0J1dFJlZihzY2hlbWE6IEFueVNjaGVtYSwgUlVMRVM6IFZhbGlkYXRpb25SdWxlcyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuICFzY2hlbWFcbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSBpZiAoa2V5ICE9PSBcIiRyZWZcIiAmJiBSVUxFUy5hbGxba2V5XSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFSZWZPclZhbChcbiAge3RvcFNjaGVtYVJlZiwgc2NoZW1hUGF0aH06IFNjaGVtYU9iakN4dCxcbiAgc2NoZW1hOiB1bmtub3duLFxuICBrZXl3b3JkOiBzdHJpbmcsXG4gICRkYXRhPzogc3RyaW5nIHwgZmFsc2Vcbik6IENvZGUgfCBudW1iZXIgfCBib29sZWFuIHtcbiAgaWYgKCEkZGF0YSkge1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHNjaGVtYVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09IFwic3RyaW5nXCIpIHJldHVybiBfYCR7c2NoZW1hfWBcbiAgfVxuICByZXR1cm4gX2Ake3RvcFNjaGVtYVJlZn0ke3NjaGVtYVBhdGh9JHtnZXRQcm9wZXJ0eShrZXl3b3JkKX1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZUZyYWdtZW50KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHVuZXNjYXBlSnNvblBvaW50ZXIoZGVjb2RlVVJJQ29tcG9uZW50KHN0cikpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVGcmFnbWVudChzdHI6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZXNjYXBlSnNvblBvaW50ZXIoc3RyKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUpzb25Qb2ludGVyKHN0cjogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBzdHIgPT0gXCJudW1iZXJcIikgcmV0dXJuIGAke3N0cn1gXG4gIHJldHVybiBzdHIucmVwbGFjZSgvfi9nLCBcIn4wXCIpLnJlcGxhY2UoL1xcLy9nLCBcIn4xXCIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZUpzb25Qb2ludGVyKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+MS9nLCBcIi9cIikucmVwbGFjZSgvfjAvZywgXCJ+XCIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoSXRlbTxUPih4czogVCB8IFRbXSwgZjogKHg6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoeHMpKSB7XG4gICAgZm9yIChjb25zdCB4IG9mIHhzKSBmKHgpXG4gIH0gZWxzZSB7XG4gICAgZih4cylcbiAgfVxufVxuXG50eXBlIFNvbWVFdmFsdWF0ZWQgPSBFdmFsdWF0ZWRQcm9wZXJ0aWVzIHwgRXZhbHVhdGVkSXRlbXNcblxudHlwZSBNZXJnZUV2YWx1YXRlZEZ1bmM8VCBleHRlbmRzIFNvbWVFdmFsdWF0ZWQ+ID0gKFxuICBnZW46IENvZGVHZW4sXG4gIGZyb206IE5hbWUgfCBULFxuICB0bzogTmFtZSB8IEV4Y2x1ZGU8VCwgdHJ1ZT4gfCB1bmRlZmluZWQsXG4gIHRvTmFtZT86IHR5cGVvZiBOYW1lXG4pID0+IE5hbWUgfCBUXG5cbmludGVyZmFjZSBNYWtlTWVyZ2VGdW5jQXJnczxUIGV4dGVuZHMgU29tZUV2YWx1YXRlZD4ge1xuICBtZXJnZU5hbWVzOiAoZ2VuOiBDb2RlR2VuLCBmcm9tOiBOYW1lLCB0bzogTmFtZSkgPT4gdm9pZFxuICBtZXJnZVRvTmFtZTogKGdlbjogQ29kZUdlbiwgZnJvbTogVCwgdG86IE5hbWUpID0+IHZvaWRcbiAgbWVyZ2VWYWx1ZXM6IChmcm9tOiBULCB0bzogRXhjbHVkZTxULCB0cnVlPikgPT4gVFxuICByZXN1bHRUb05hbWU6IChnZW46IENvZGVHZW4sIHJlcz86IFQpID0+IE5hbWVcbn1cblxuZnVuY3Rpb24gbWFrZU1lcmdlRXZhbHVhdGVkPFQgZXh0ZW5kcyBTb21lRXZhbHVhdGVkPih7XG4gIG1lcmdlTmFtZXMsXG4gIG1lcmdlVG9OYW1lLFxuICBtZXJnZVZhbHVlcyxcbiAgcmVzdWx0VG9OYW1lLFxufTogTWFrZU1lcmdlRnVuY0FyZ3M8VD4pOiBNZXJnZUV2YWx1YXRlZEZ1bmM8VD4ge1xuICByZXR1cm4gKGdlbiwgZnJvbSwgdG8sIHRvTmFtZSkgPT4ge1xuICAgIGNvbnN0IHJlcyA9XG4gICAgICB0byA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gZnJvbVxuICAgICAgICA6IHRvIGluc3RhbmNlb2YgTmFtZVxuICAgICAgICA/IChmcm9tIGluc3RhbmNlb2YgTmFtZSA/IG1lcmdlTmFtZXMoZ2VuLCBmcm9tLCB0bykgOiBtZXJnZVRvTmFtZShnZW4sIGZyb20sIHRvKSwgdG8pXG4gICAgICAgIDogZnJvbSBpbnN0YW5jZW9mIE5hbWVcbiAgICAgICAgPyAobWVyZ2VUb05hbWUoZ2VuLCB0bywgZnJvbSksIGZyb20pXG4gICAgICAgIDogbWVyZ2VWYWx1ZXMoZnJvbSwgdG8pXG4gICAgcmV0dXJuIHRvTmFtZSA9PT0gTmFtZSAmJiAhKHJlcyBpbnN0YW5jZW9mIE5hbWUpID8gcmVzdWx0VG9OYW1lKGdlbiwgcmVzKSA6IHJlc1xuICB9XG59XG5cbmludGVyZmFjZSBNZXJnZUV2YWx1YXRlZCB7XG4gIHByb3BzOiBNZXJnZUV2YWx1YXRlZEZ1bmM8RXZhbHVhdGVkUHJvcGVydGllcz5cbiAgaXRlbXM6IE1lcmdlRXZhbHVhdGVkRnVuYzxFdmFsdWF0ZWRJdGVtcz5cbn1cblxuZXhwb3J0IGNvbnN0IG1lcmdlRXZhbHVhdGVkOiBNZXJnZUV2YWx1YXRlZCA9IHtcbiAgcHJvcHM6IG1ha2VNZXJnZUV2YWx1YXRlZCh7XG4gICAgbWVyZ2VOYW1lczogKGdlbiwgZnJvbSwgdG8pID0+XG4gICAgICBnZW4uaWYoX2Ake3RvfSAhPT0gdHJ1ZSAmJiAke2Zyb219ICE9PSB1bmRlZmluZWRgLCAoKSA9PiB7XG4gICAgICAgIGdlbi5pZihcbiAgICAgICAgICBfYCR7ZnJvbX0gPT09IHRydWVgLFxuICAgICAgICAgICgpID0+IGdlbi5hc3NpZ24odG8sIHRydWUpLFxuICAgICAgICAgICgpID0+IGdlbi5hc3NpZ24odG8sIF9gJHt0b30gfHwge31gKS5jb2RlKF9gT2JqZWN0LmFzc2lnbigke3RvfSwgJHtmcm9tfSlgKVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICBtZXJnZVRvTmFtZTogKGdlbiwgZnJvbSwgdG8pID0+XG4gICAgICBnZW4uaWYoX2Ake3RvfSAhPT0gdHJ1ZWAsICgpID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRydWUpIHtcbiAgICAgICAgICBnZW4uYXNzaWduKHRvLCB0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdlbi5hc3NpZ24odG8sIF9gJHt0b30gfHwge31gKVxuICAgICAgICAgIHNldEV2YWx1YXRlZChnZW4sIHRvLCBmcm9tKVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICBtZXJnZVZhbHVlczogKGZyb20sIHRvKSA9PiAoZnJvbSA9PT0gdHJ1ZSA/IHRydWUgOiB7Li4uZnJvbSwgLi4udG99KSxcbiAgICByZXN1bHRUb05hbWU6IGV2YWx1YXRlZFByb3BzVG9OYW1lLFxuICB9KSxcbiAgaXRlbXM6IG1ha2VNZXJnZUV2YWx1YXRlZCh7XG4gICAgbWVyZ2VOYW1lczogKGdlbiwgZnJvbSwgdG8pID0+XG4gICAgICBnZW4uaWYoX2Ake3RvfSAhPT0gdHJ1ZSAmJiAke2Zyb219ICE9PSB1bmRlZmluZWRgLCAoKSA9PlxuICAgICAgICBnZW4uYXNzaWduKHRvLCBfYCR7ZnJvbX0gPT09IHRydWUgPyB0cnVlIDogJHt0b30gPiAke2Zyb219ID8gJHt0b30gOiAke2Zyb219YClcbiAgICAgICksXG4gICAgbWVyZ2VUb05hbWU6IChnZW4sIGZyb20sIHRvKSA9PlxuICAgICAgZ2VuLmlmKF9gJHt0b30gIT09IHRydWVgLCAoKSA9PlxuICAgICAgICBnZW4uYXNzaWduKHRvLCBmcm9tID09PSB0cnVlID8gdHJ1ZSA6IF9gJHt0b30gPiAke2Zyb219ID8gJHt0b30gOiAke2Zyb219YClcbiAgICAgICksXG4gICAgbWVyZ2VWYWx1ZXM6IChmcm9tLCB0bykgPT4gKGZyb20gPT09IHRydWUgPyB0cnVlIDogTWF0aC5tYXgoZnJvbSwgdG8pKSxcbiAgICByZXN1bHRUb05hbWU6IChnZW4sIGl0ZW1zKSA9PiBnZW4udmFyKFwiaXRlbXNcIiwgaXRlbXMpLFxuICB9KSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlZFByb3BzVG9OYW1lKGdlbjogQ29kZUdlbiwgcHM/OiBFdmFsdWF0ZWRQcm9wZXJ0aWVzKTogTmFtZSB7XG4gIGlmIChwcyA9PT0gdHJ1ZSkgcmV0dXJuIGdlbi52YXIoXCJwcm9wc1wiLCB0cnVlKVxuICBjb25zdCBwcm9wcyA9IGdlbi52YXIoXCJwcm9wc1wiLCBfYHt9YClcbiAgaWYgKHBzICE9PSB1bmRlZmluZWQpIHNldEV2YWx1YXRlZChnZW4sIHByb3BzLCBwcylcbiAgcmV0dXJuIHByb3BzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFdmFsdWF0ZWQoZ2VuOiBDb2RlR2VuLCBwcm9wczogTmFtZSwgcHM6IHtbSyBpbiBzdHJpbmddPzogdHJ1ZX0pOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMocHMpLmZvckVhY2goKHApID0+IGdlbi5hc3NpZ24oX2Ake3Byb3BzfSR7Z2V0UHJvcGVydHkocCl9YCwgdHJ1ZSkpXG59XG5cbmNvbnN0IHNuaXBwZXRzOiB7W1MgaW4gc3RyaW5nXT86IF9Db2RlfSA9IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGdW5jKGdlbjogQ29kZUdlbiwgZjoge2NvZGU6IHN0cmluZ30pOiBOYW1lIHtcbiAgcmV0dXJuIGdlbi5zY29wZVZhbHVlKFwiZnVuY1wiLCB7XG4gICAgcmVmOiBmLFxuICAgIGNvZGU6IHNuaXBwZXRzW2YuY29kZV0gfHwgKHNuaXBwZXRzW2YuY29kZV0gPSBuZXcgX0NvZGUoZi5jb2RlKSksXG4gIH0pXG59XG5cbmV4cG9ydCBlbnVtIFR5cGUge1xuICBOdW0sXG4gIFN0cixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yUGF0aChcbiAgZGF0YVByb3A6IE5hbWUgfCBzdHJpbmcgfCBudW1iZXIsXG4gIGRhdGFQcm9wVHlwZT86IFR5cGUsXG4gIGpzUHJvcGVydHlTeW50YXg/OiBib29sZWFuXG4pOiBDb2RlIHwgc3RyaW5nIHtcbiAgLy8gbGV0IHBhdGhcbiAgaWYgKGRhdGFQcm9wIGluc3RhbmNlb2YgTmFtZSkge1xuICAgIGNvbnN0IGlzTnVtYmVyID0gZGF0YVByb3BUeXBlID09PSBUeXBlLk51bVxuICAgIHJldHVybiBqc1Byb3BlcnR5U3ludGF4XG4gICAgICA/IGlzTnVtYmVyXG4gICAgICAgID8gX2BcIltcIiArICR7ZGF0YVByb3B9ICsgXCJdXCJgXG4gICAgICAgIDogX2BcIlsnXCIgKyAke2RhdGFQcm9wfSArIFwiJ11cImBcbiAgICAgIDogaXNOdW1iZXJcbiAgICAgID8gX2BcIi9cIiArICR7ZGF0YVByb3B9YFxuICAgICAgOiBfYFwiL1wiICsgJHtkYXRhUHJvcH0ucmVwbGFjZSgvfi9nLCBcIn4wXCIpLnJlcGxhY2UoL1xcXFwvL2csIFwifjFcIilgIC8vIFRPRE8gbWF5YmUgdXNlIGdsb2JhbCBlc2NhcGVQb2ludGVyXG4gIH1cbiAgcmV0dXJuIGpzUHJvcGVydHlTeW50YXggPyBnZXRQcm9wZXJ0eShkYXRhUHJvcCkudG9TdHJpbmcoKSA6IFwiL1wiICsgZXNjYXBlSnNvblBvaW50ZXIoZGF0YVByb3ApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1N0cmljdE1vZGUoXG4gIGl0OiBTY2hlbWFDeHQsXG4gIG1zZzogc3RyaW5nLFxuICBtb2RlOiBib29sZWFuIHwgXCJsb2dcIiA9IGl0Lm9wdHMuc3RyaWN0U2NoZW1hXG4pOiB2b2lkIHtcbiAgaWYgKCFtb2RlKSByZXR1cm5cbiAgbXNnID0gYHN0cmljdCBtb2RlOiAke21zZ31gXG4gIGlmIChtb2RlID09PSB0cnVlKSB0aHJvdyBuZXcgRXJyb3IobXNnKVxuICBpdC5zZWxmLmxvZ2dlci53YXJuKG1zZylcbn1cbiIsICJpbXBvcnQge05hbWV9IGZyb20gXCIuL2NvZGVnZW5cIlxuXG5jb25zdCBuYW1lcyA9IHtcbiAgLy8gdmFsaWRhdGlvbiBmdW5jdGlvbiBhcmd1bWVudHNcbiAgZGF0YTogbmV3IE5hbWUoXCJkYXRhXCIpLCAvLyBkYXRhIHBhc3NlZCB0byB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gIC8vIGFyZ3MgcGFzc2VkIGZyb20gcmVmZXJlbmNpbmcgc2NoZW1hXG4gIHZhbEN4dDogbmV3IE5hbWUoXCJ2YWxDeHRcIiksIC8vIHZhbGlkYXRpb24vZGF0YSBjb250ZXh0IC0gc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LCBpdCBpcyBkZXN0cnVjdHVyZWQgdG8gdGhlIG5hbWVzIGJlbG93XG4gIGluc3RhbmNlUGF0aDogbmV3IE5hbWUoXCJpbnN0YW5jZVBhdGhcIiksXG4gIHBhcmVudERhdGE6IG5ldyBOYW1lKFwicGFyZW50RGF0YVwiKSxcbiAgcGFyZW50RGF0YVByb3BlcnR5OiBuZXcgTmFtZShcInBhcmVudERhdGFQcm9wZXJ0eVwiKSxcbiAgcm9vdERhdGE6IG5ldyBOYW1lKFwicm9vdERhdGFcIiksIC8vIHJvb3QgZGF0YSAtIHNhbWUgYXMgdGhlIGRhdGEgcGFzc2VkIHRvIHRoZSBmaXJzdC90b3AgdmFsaWRhdGlvbiBmdW5jdGlvblxuICBkeW5hbWljQW5jaG9yczogbmV3IE5hbWUoXCJkeW5hbWljQW5jaG9yc1wiKSwgLy8gdXNlZCB0byBzdXBwb3J0IHJlY3Vyc2l2ZVJlZiBhbmQgZHluYW1pY1JlZlxuICAvLyBmdW5jdGlvbiBzY29wZWQgdmFyaWFibGVzXG4gIHZFcnJvcnM6IG5ldyBOYW1lKFwidkVycm9yc1wiKSwgLy8gbnVsbCBvciBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yc1xuICBlcnJvcnM6IG5ldyBOYW1lKFwiZXJyb3JzXCIpLCAvLyBjb3VudGVyIG9mIHZhbGlkYXRpb24gZXJyb3JzXG4gIHRoaXM6IG5ldyBOYW1lKFwidGhpc1wiKSxcbiAgLy8gXCJnbG9iYWxzXCJcbiAgc2VsZjogbmV3IE5hbWUoXCJzZWxmXCIpLFxuICBzY29wZTogbmV3IE5hbWUoXCJzY29wZVwiKSxcbiAgLy8gSlREIHNlcmlhbGl6ZS9wYXJzZSBuYW1lIGZvciBKU09OIHN0cmluZyBhbmQgcG9zaXRpb25cbiAganNvbjogbmV3IE5hbWUoXCJqc29uXCIpLFxuICBqc29uUG9zOiBuZXcgTmFtZShcImpzb25Qb3NcIiksXG4gIGpzb25MZW46IG5ldyBOYW1lKFwianNvbkxlblwiKSxcbiAganNvblBhcnQ6IG5ldyBOYW1lKFwianNvblBhcnRcIiksXG59XG5cbmV4cG9ydCBkZWZhdWx0IG5hbWVzXG4iLCAiaW1wb3J0IHR5cGUge0tleXdvcmRFcnJvckN4dCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFDeHR9IGZyb20gXCIuL2luZGV4XCJcbmltcG9ydCB7Q29kZUdlbiwgXywgc3RyLCBzdHJDb25jYXQsIENvZGUsIE5hbWV9IGZyb20gXCIuL2NvZGVnZW5cIlxuaW1wb3J0IHtTYWZlRXhwcn0gZnJvbSBcIi4vY29kZWdlbi9jb2RlXCJcbmltcG9ydCB7Z2V0RXJyb3JQYXRoLCBUeXBlfSBmcm9tIFwiLi91dGlsXCJcbmltcG9ydCBOIGZyb20gXCIuL25hbWVzXCJcblxuZXhwb3J0IGNvbnN0IGtleXdvcmRFcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtrZXl3b3JkfSkgPT4gc3RyYG11c3QgcGFzcyBcIiR7a2V5d29yZH1cIiBrZXl3b3JkIHZhbGlkYXRpb25gLFxufVxuXG5leHBvcnQgY29uc3Qga2V5d29yZCREYXRhRXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7a2V5d29yZCwgc2NoZW1hVHlwZX0pID0+XG4gICAgc2NoZW1hVHlwZVxuICAgICAgPyBzdHJgXCIke2tleXdvcmR9XCIga2V5d29yZCBtdXN0IGJlICR7c2NoZW1hVHlwZX0gKCRkYXRhKWBcbiAgICAgIDogc3RyYFwiJHtrZXl3b3JkfVwiIGtleXdvcmQgaXMgaW52YWxpZCAoJGRhdGEpYCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclBhdGhzIHtcbiAgaW5zdGFuY2VQYXRoPzogQ29kZVxuICBzY2hlbWFQYXRoPzogc3RyaW5nXG4gIHBhcmVudFNjaGVtYT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydEVycm9yKFxuICBjeHQ6IEtleXdvcmRFcnJvckN4dCxcbiAgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSBrZXl3b3JkRXJyb3IsXG4gIGVycm9yUGF0aHM/OiBFcnJvclBhdGhzLFxuICBvdmVycmlkZUFsbEVycm9ycz86IGJvb2xlYW5cbik6IHZvaWQge1xuICBjb25zdCB7aXR9ID0gY3h0XG4gIGNvbnN0IHtnZW4sIGNvbXBvc2l0ZVJ1bGUsIGFsbEVycm9yc30gPSBpdFxuICBjb25zdCBlcnJPYmogPSBlcnJvck9iamVjdENvZGUoY3h0LCBlcnJvciwgZXJyb3JQYXRocylcbiAgaWYgKG92ZXJyaWRlQWxsRXJyb3JzID8/IChjb21wb3NpdGVSdWxlIHx8IGFsbEVycm9ycykpIHtcbiAgICBhZGRFcnJvcihnZW4sIGVyck9iailcbiAgfSBlbHNlIHtcbiAgICByZXR1cm5FcnJvcnMoaXQsIF9gWyR7ZXJyT2JqfV1gKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRFeHRyYUVycm9yKFxuICBjeHQ6IEtleXdvcmRFcnJvckN4dCxcbiAgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSBrZXl3b3JkRXJyb3IsXG4gIGVycm9yUGF0aHM/OiBFcnJvclBhdGhzXG4pOiB2b2lkIHtcbiAgY29uc3Qge2l0fSA9IGN4dFxuICBjb25zdCB7Z2VuLCBjb21wb3NpdGVSdWxlLCBhbGxFcnJvcnN9ID0gaXRcbiAgY29uc3QgZXJyT2JqID0gZXJyb3JPYmplY3RDb2RlKGN4dCwgZXJyb3IsIGVycm9yUGF0aHMpXG4gIGFkZEVycm9yKGdlbiwgZXJyT2JqKVxuICBpZiAoIShjb21wb3NpdGVSdWxlIHx8IGFsbEVycm9ycykpIHtcbiAgICByZXR1cm5FcnJvcnMoaXQsIE4udkVycm9ycylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRFcnJvcnNDb3VudChnZW46IENvZGVHZW4sIGVycnNDb3VudDogTmFtZSk6IHZvaWQge1xuICBnZW4uYXNzaWduKE4uZXJyb3JzLCBlcnJzQ291bnQpXG4gIGdlbi5pZihfYCR7Ti52RXJyb3JzfSAhPT0gbnVsbGAsICgpID0+XG4gICAgZ2VuLmlmKFxuICAgICAgZXJyc0NvdW50LFxuICAgICAgKCkgPT4gZ2VuLmFzc2lnbihfYCR7Ti52RXJyb3JzfS5sZW5ndGhgLCBlcnJzQ291bnQpLFxuICAgICAgKCkgPT4gZ2VuLmFzc2lnbihOLnZFcnJvcnMsIG51bGwpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRFcnJvcnMoe1xuICBnZW4sXG4gIGtleXdvcmQsXG4gIHNjaGVtYVZhbHVlLFxuICBkYXRhLFxuICBlcnJzQ291bnQsXG4gIGl0LFxufTogS2V5d29yZEVycm9yQ3h0KTogdm9pZCB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZXJyc0NvdW50ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICBjb25zdCBlcnIgPSBnZW4ubmFtZShcImVyclwiKVxuICBnZW4uZm9yUmFuZ2UoXCJpXCIsIGVycnNDb3VudCwgTi5lcnJvcnMsIChpKSA9PiB7XG4gICAgZ2VuLmNvbnN0KGVyciwgX2Ake04udkVycm9yc31bJHtpfV1gKVxuICAgIGdlbi5pZihfYCR7ZXJyfS5pbnN0YW5jZVBhdGggPT09IHVuZGVmaW5lZGAsICgpID0+XG4gICAgICBnZW4uYXNzaWduKF9gJHtlcnJ9Lmluc3RhbmNlUGF0aGAsIHN0ckNvbmNhdChOLmluc3RhbmNlUGF0aCwgaXQuZXJyb3JQYXRoKSlcbiAgICApXG4gICAgZ2VuLmFzc2lnbihfYCR7ZXJyfS5zY2hlbWFQYXRoYCwgc3RyYCR7aXQuZXJyU2NoZW1hUGF0aH0vJHtrZXl3b3JkfWApXG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgZ2VuLmFzc2lnbihfYCR7ZXJyfS5zY2hlbWFgLCBzY2hlbWFWYWx1ZSlcbiAgICAgIGdlbi5hc3NpZ24oX2Ake2Vycn0uZGF0YWAsIGRhdGEpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBhZGRFcnJvcihnZW46IENvZGVHZW4sIGVyck9iajogQ29kZSk6IHZvaWQge1xuICBjb25zdCBlcnIgPSBnZW4uY29uc3QoXCJlcnJcIiwgZXJyT2JqKVxuICBnZW4uaWYoXG4gICAgX2Ake04udkVycm9yc30gPT09IG51bGxgLFxuICAgICgpID0+IGdlbi5hc3NpZ24oTi52RXJyb3JzLCBfYFske2Vycn1dYCksXG4gICAgX2Ake04udkVycm9yc30ucHVzaCgke2Vycn0pYFxuICApXG4gIGdlbi5jb2RlKF9gJHtOLmVycm9yc30rK2ApXG59XG5cbmZ1bmN0aW9uIHJldHVybkVycm9ycyhpdDogU2NoZW1hQ3h0LCBlcnJzOiBDb2RlKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHZhbGlkYXRlTmFtZSwgc2NoZW1hRW52fSA9IGl0XG4gIGlmIChzY2hlbWFFbnYuJGFzeW5jKSB7XG4gICAgZ2VuLnRocm93KF9gbmV3ICR7aXQuVmFsaWRhdGlvbkVycm9yIGFzIE5hbWV9KCR7ZXJyc30pYClcbiAgfSBlbHNlIHtcbiAgICBnZW4uYXNzaWduKF9gJHt2YWxpZGF0ZU5hbWV9LmVycm9yc2AsIGVycnMpXG4gICAgZ2VuLnJldHVybihmYWxzZSlcbiAgfVxufVxuXG5jb25zdCBFID0ge1xuICBrZXl3b3JkOiBuZXcgTmFtZShcImtleXdvcmRcIiksXG4gIHNjaGVtYVBhdGg6IG5ldyBOYW1lKFwic2NoZW1hUGF0aFwiKSwgLy8gYWxzbyB1c2VkIGluIEpURCBlcnJvcnNcbiAgcGFyYW1zOiBuZXcgTmFtZShcInBhcmFtc1wiKSxcbiAgcHJvcGVydHlOYW1lOiBuZXcgTmFtZShcInByb3BlcnR5TmFtZVwiKSxcbiAgbWVzc2FnZTogbmV3IE5hbWUoXCJtZXNzYWdlXCIpLFxuICBzY2hlbWE6IG5ldyBOYW1lKFwic2NoZW1hXCIpLFxuICBwYXJlbnRTY2hlbWE6IG5ldyBOYW1lKFwicGFyZW50U2NoZW1hXCIpLFxufVxuXG5mdW5jdGlvbiBlcnJvck9iamVjdENvZGUoXG4gIGN4dDogS2V5d29yZEVycm9yQ3h0LFxuICBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgZXJyb3JQYXRocz86IEVycm9yUGF0aHNcbik6IENvZGUge1xuICBjb25zdCB7Y3JlYXRlRXJyb3JzfSA9IGN4dC5pdFxuICBpZiAoY3JlYXRlRXJyb3JzID09PSBmYWxzZSkgcmV0dXJuIF9ge31gXG4gIHJldHVybiBlcnJvck9iamVjdChjeHQsIGVycm9yLCBlcnJvclBhdGhzKVxufVxuXG5mdW5jdGlvbiBlcnJvck9iamVjdChcbiAgY3h0OiBLZXl3b3JkRXJyb3JDeHQsXG4gIGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBlcnJvclBhdGhzOiBFcnJvclBhdGhzID0ge31cbik6IENvZGUge1xuICBjb25zdCB7Z2VuLCBpdH0gPSBjeHRcbiAgY29uc3Qga2V5VmFsdWVzOiBbTmFtZSwgU2FmZUV4cHIgfCBzdHJpbmddW10gPSBbXG4gICAgZXJyb3JJbnN0YW5jZVBhdGgoaXQsIGVycm9yUGF0aHMpLFxuICAgIGVycm9yU2NoZW1hUGF0aChjeHQsIGVycm9yUGF0aHMpLFxuICBdXG4gIGV4dHJhRXJyb3JQcm9wcyhjeHQsIGVycm9yLCBrZXlWYWx1ZXMpXG4gIHJldHVybiBnZW4ub2JqZWN0KC4uLmtleVZhbHVlcylcbn1cblxuZnVuY3Rpb24gZXJyb3JJbnN0YW5jZVBhdGgoe2Vycm9yUGF0aH06IFNjaGVtYUN4dCwge2luc3RhbmNlUGF0aH06IEVycm9yUGF0aHMpOiBbTmFtZSwgQ29kZV0ge1xuICBjb25zdCBpbnN0UGF0aCA9IGluc3RhbmNlUGF0aFxuICAgID8gc3RyYCR7ZXJyb3JQYXRofSR7Z2V0RXJyb3JQYXRoKGluc3RhbmNlUGF0aCwgVHlwZS5TdHIpfWBcbiAgICA6IGVycm9yUGF0aFxuICByZXR1cm4gW04uaW5zdGFuY2VQYXRoLCBzdHJDb25jYXQoTi5pbnN0YW5jZVBhdGgsIGluc3RQYXRoKV1cbn1cblxuZnVuY3Rpb24gZXJyb3JTY2hlbWFQYXRoKFxuICB7a2V5d29yZCwgaXQ6IHtlcnJTY2hlbWFQYXRofX06IEtleXdvcmRFcnJvckN4dCxcbiAge3NjaGVtYVBhdGgsIHBhcmVudFNjaGVtYX06IEVycm9yUGF0aHNcbik6IFtOYW1lLCBzdHJpbmcgfCBDb2RlXSB7XG4gIGxldCBzY2hQYXRoID0gcGFyZW50U2NoZW1hID8gZXJyU2NoZW1hUGF0aCA6IHN0cmAke2VyclNjaGVtYVBhdGh9LyR7a2V5d29yZH1gXG4gIGlmIChzY2hlbWFQYXRoKSB7XG4gICAgc2NoUGF0aCA9IHN0cmAke3NjaFBhdGh9JHtnZXRFcnJvclBhdGgoc2NoZW1hUGF0aCwgVHlwZS5TdHIpfWBcbiAgfVxuICByZXR1cm4gW0Uuc2NoZW1hUGF0aCwgc2NoUGF0aF1cbn1cblxuZnVuY3Rpb24gZXh0cmFFcnJvclByb3BzKFxuICBjeHQ6IEtleXdvcmRFcnJvckN4dCxcbiAge3BhcmFtcywgbWVzc2FnZX06IEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIGtleVZhbHVlczogW05hbWUsIFNhZmVFeHByIHwgc3RyaW5nXVtdXG4pOiB2b2lkIHtcbiAgY29uc3Qge2tleXdvcmQsIGRhdGEsIHNjaGVtYVZhbHVlLCBpdH0gPSBjeHRcbiAgY29uc3Qge29wdHMsIHByb3BlcnR5TmFtZSwgdG9wU2NoZW1hUmVmLCBzY2hlbWFQYXRofSA9IGl0XG4gIGtleVZhbHVlcy5wdXNoKFxuICAgIFtFLmtleXdvcmQsIGtleXdvcmRdLFxuICAgIFtFLnBhcmFtcywgdHlwZW9mIHBhcmFtcyA9PSBcImZ1bmN0aW9uXCIgPyBwYXJhbXMoY3h0KSA6IHBhcmFtcyB8fCBfYHt9YF1cbiAgKVxuICBpZiAob3B0cy5tZXNzYWdlcykge1xuICAgIGtleVZhbHVlcy5wdXNoKFtFLm1lc3NhZ2UsIHR5cGVvZiBtZXNzYWdlID09IFwiZnVuY3Rpb25cIiA/IG1lc3NhZ2UoY3h0KSA6IG1lc3NhZ2VdKVxuICB9XG4gIGlmIChvcHRzLnZlcmJvc2UpIHtcbiAgICBrZXlWYWx1ZXMucHVzaChcbiAgICAgIFtFLnNjaGVtYSwgc2NoZW1hVmFsdWVdLFxuICAgICAgW0UucGFyZW50U2NoZW1hLCBfYCR7dG9wU2NoZW1hUmVmfSR7c2NoZW1hUGF0aH1gXSxcbiAgICAgIFtOLmRhdGEsIGRhdGFdXG4gICAgKVxuICB9XG4gIGlmIChwcm9wZXJ0eU5hbWUpIGtleVZhbHVlcy5wdXNoKFtFLnByb3BlcnR5TmFtZSwgcHJvcGVydHlOYW1lXSlcbn1cbiIsICJpbXBvcnQgdHlwZSB7S2V5d29yZEVycm9yRGVmaW5pdGlvbiwgS2V5d29yZEVycm9yQ3h0fSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYUN4dH0gZnJvbSBcIi4uXCJcbmltcG9ydCB7cmVwb3J0RXJyb3J9IGZyb20gXCIuLi9lcnJvcnNcIlxuaW1wb3J0IHtfLCBOYW1lfSBmcm9tIFwiLi4vY29kZWdlblwiXG5pbXBvcnQgTiBmcm9tIFwiLi4vbmFtZXNcIlxuXG5jb25zdCBib29sRXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6IFwiYm9vbGVhbiBzY2hlbWEgaXMgZmFsc2VcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcEJvb2xPckVtcHR5U2NoZW1hKGl0OiBTY2hlbWFDeHQpOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgc2NoZW1hLCB2YWxpZGF0ZU5hbWV9ID0gaXRcbiAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICBmYWxzZVNjaGVtYUVycm9yKGl0LCBmYWxzZSlcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIgJiYgc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZSkge1xuICAgIGdlbi5yZXR1cm4oTi5kYXRhKVxuICB9IGVsc2Uge1xuICAgIGdlbi5hc3NpZ24oX2Ake3ZhbGlkYXRlTmFtZX0uZXJyb3JzYCwgbnVsbClcbiAgICBnZW4ucmV0dXJuKHRydWUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb2xPckVtcHR5U2NoZW1hKGl0OiBTY2hlbWFDeHQsIHZhbGlkOiBOYW1lKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYX0gPSBpdFxuICBpZiAoc2NoZW1hID09PSBmYWxzZSkge1xuICAgIGdlbi52YXIodmFsaWQsIGZhbHNlKSAvLyBUT0RPIHZhclxuICAgIGZhbHNlU2NoZW1hRXJyb3IoaXQpXG4gIH0gZWxzZSB7XG4gICAgZ2VuLnZhcih2YWxpZCwgdHJ1ZSkgLy8gVE9ETyB2YXJcbiAgfVxufVxuXG5mdW5jdGlvbiBmYWxzZVNjaGVtYUVycm9yKGl0OiBTY2hlbWFDeHQsIG92ZXJyaWRlQWxsRXJyb3JzPzogYm9vbGVhbik6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBkYXRhfSA9IGl0XG4gIC8vIFRPRE8gbWF5YmUgc29tZSBvdGhlciBpbnRlcmZhY2Ugc2hvdWxkIGJlIHVzZWQgZm9yIG5vbi1rZXl3b3JkIHZhbGlkYXRpb24gZXJyb3JzLi4uXG4gIGNvbnN0IGN4dDogS2V5d29yZEVycm9yQ3h0ID0ge1xuICAgIGdlbixcbiAgICBrZXl3b3JkOiBcImZhbHNlIHNjaGVtYVwiLFxuICAgIGRhdGEsXG4gICAgc2NoZW1hOiBmYWxzZSxcbiAgICBzY2hlbWFDb2RlOiBmYWxzZSxcbiAgICBzY2hlbWFWYWx1ZTogZmFsc2UsXG4gICAgcGFyYW1zOiB7fSxcbiAgICBpdCxcbiAgfVxuICByZXBvcnRFcnJvcihjeHQsIGJvb2xFcnJvciwgdW5kZWZpbmVkLCBvdmVycmlkZUFsbEVycm9ycylcbn1cbiIsICJpbXBvcnQgdHlwZSB7QWRkZWRLZXl3b3JkRGVmaW5pdGlvbn0gZnJvbSBcIi4uL3R5cGVzXCJcblxuY29uc3QgX2pzb25UeXBlcyA9IFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImludGVnZXJcIiwgXCJib29sZWFuXCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcImFycmF5XCJdIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIEpTT05UeXBlID0gKHR5cGVvZiBfanNvblR5cGVzKVtudW1iZXJdXG5cbmNvbnN0IGpzb25UeXBlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KF9qc29uVHlwZXMpXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0pTT05UeXBlKHg6IHVua25vd24pOiB4IGlzIEpTT05UeXBlIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09IFwic3RyaW5nXCIgJiYganNvblR5cGVzLmhhcyh4KVxufVxuXG50eXBlIFZhbGlkYXRpb25UeXBlcyA9IHtcbiAgW0sgaW4gSlNPTlR5cGVdOiBib29sZWFuIHwgUnVsZUdyb3VwIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJ1bGVzIHtcbiAgcnVsZXM6IFJ1bGVHcm91cFtdXG4gIHBvc3Q6IFJ1bGVHcm91cFxuICBhbGw6IHtbS2V5IGluIHN0cmluZ10/OiBib29sZWFuIHwgUnVsZX0gLy8gcnVsZXMgdGhhdCBoYXZlIHRvIGJlIHZhbGlkYXRlZFxuICBrZXl3b3Jkczoge1tLZXkgaW4gc3RyaW5nXT86IGJvb2xlYW59IC8vIGFsbCBrbm93biBrZXl3b3JkcyAoc3VwZXJzZXQgb2YgXCJhbGxcIilcbiAgdHlwZXM6IFZhbGlkYXRpb25UeXBlc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVHcm91cCB7XG4gIHR5cGU/OiBKU09OVHlwZVxuICBydWxlczogUnVsZVtdXG59XG5cbi8vIFRoaXMgaW50ZXJmYWNlIHdyYXBzIEtleXdvcmREZWZpbml0aW9uIGJlY2F1c2UgZGVmaW5pdGlvbiBjYW4gaGF2ZSBtdWx0aXBsZSBrZXl3b3Jkc1xuZXhwb3J0IGludGVyZmFjZSBSdWxlIHtcbiAga2V5d29yZDogc3RyaW5nXG4gIGRlZmluaXRpb246IEFkZGVkS2V5d29yZERlZmluaXRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bGVzKCk6IFZhbGlkYXRpb25SdWxlcyB7XG4gIGNvbnN0IGdyb3VwczogUmVjb3JkPFwibnVtYmVyXCIgfCBcInN0cmluZ1wiIHwgXCJhcnJheVwiIHwgXCJvYmplY3RcIiwgUnVsZUdyb3VwPiA9IHtcbiAgICBudW1iZXI6IHt0eXBlOiBcIm51bWJlclwiLCBydWxlczogW119LFxuICAgIHN0cmluZzoge3R5cGU6IFwic3RyaW5nXCIsIHJ1bGVzOiBbXX0sXG4gICAgYXJyYXk6IHt0eXBlOiBcImFycmF5XCIsIHJ1bGVzOiBbXX0sXG4gICAgb2JqZWN0OiB7dHlwZTogXCJvYmplY3RcIiwgcnVsZXM6IFtdfSxcbiAgfVxuICByZXR1cm4ge1xuICAgIHR5cGVzOiB7Li4uZ3JvdXBzLCBpbnRlZ2VyOiB0cnVlLCBib29sZWFuOiB0cnVlLCBudWxsOiB0cnVlfSxcbiAgICBydWxlczogW3tydWxlczogW119LCBncm91cHMubnVtYmVyLCBncm91cHMuc3RyaW5nLCBncm91cHMuYXJyYXksIGdyb3Vwcy5vYmplY3RdLFxuICAgIHBvc3Q6IHtydWxlczogW119LFxuICAgIGFsbDoge30sXG4gICAga2V5d29yZHM6IHt9LFxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge0FueVNjaGVtYU9iamVjdH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFPYmpDeHR9IGZyb20gXCIuLlwiXG5pbXBvcnQgdHlwZSB7SlNPTlR5cGUsIFJ1bGVHcm91cCwgUnVsZX0gZnJvbSBcIi4uL3J1bGVzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzRm9yVHlwZShcbiAge3NjaGVtYSwgc2VsZn06IFNjaGVtYU9iakN4dCxcbiAgdHlwZTogSlNPTlR5cGVcbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICBjb25zdCBncm91cCA9IHNlbGYuUlVMRVMudHlwZXNbdHlwZV1cbiAgcmV0dXJuIGdyb3VwICYmIGdyb3VwICE9PSB0cnVlICYmIHNob3VsZFVzZUdyb3VwKHNjaGVtYSwgZ3JvdXApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRVc2VHcm91cChzY2hlbWE6IEFueVNjaGVtYU9iamVjdCwgZ3JvdXA6IFJ1bGVHcm91cCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ3JvdXAucnVsZXMuc29tZSgocnVsZSkgPT4gc2hvdWxkVXNlUnVsZShzY2hlbWEsIHJ1bGUpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkVXNlUnVsZShzY2hlbWE6IEFueVNjaGVtYU9iamVjdCwgcnVsZTogUnVsZSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gKFxuICAgIHNjaGVtYVtydWxlLmtleXdvcmRdICE9PSB1bmRlZmluZWQgfHxcbiAgICBydWxlLmRlZmluaXRpb24uaW1wbGVtZW50cz8uc29tZSgoa3dkKSA9PiBzY2hlbWFba3dkXSAhPT0gdW5kZWZpbmVkKVxuICApXG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBLZXl3b3JkRXJyb3JDeHQsXG4gIEVycm9yT2JqZWN0LFxuICBBbnlTY2hlbWFPYmplY3QsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7U2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi5cIlxuaW1wb3J0IHtpc0pTT05UeXBlLCBKU09OVHlwZX0gZnJvbSBcIi4uL3J1bGVzXCJcbmltcG9ydCB7c2NoZW1hSGFzUnVsZXNGb3JUeXBlfSBmcm9tIFwiLi9hcHBsaWNhYmlsaXR5XCJcbmltcG9ydCB7cmVwb3J0RXJyb3J9IGZyb20gXCIuLi9lcnJvcnNcIlxuaW1wb3J0IHtfLCBuaWwsIGFuZCwgbm90LCBvcGVyYXRvcnMsIENvZGUsIE5hbWV9IGZyb20gXCIuLi9jb2RlZ2VuXCJcbmltcG9ydCB7dG9IYXNoLCBzY2hlbWFSZWZPclZhbH0gZnJvbSBcIi4uL3V0aWxcIlxuXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gIENvcnJlY3QsXG4gIFdyb25nLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NoZW1hVHlwZXMoc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QpOiBKU09OVHlwZVtdIHtcbiAgY29uc3QgdHlwZXMgPSBnZXRKU09OVHlwZXMoc2NoZW1hLnR5cGUpXG4gIGNvbnN0IGhhc051bGwgPSB0eXBlcy5pbmNsdWRlcyhcIm51bGxcIilcbiAgaWYgKGhhc051bGwpIHtcbiAgICBpZiAoc2NoZW1hLm51bGxhYmxlID09PSBmYWxzZSkgdGhyb3cgbmV3IEVycm9yKFwidHlwZTogbnVsbCBjb250cmFkaWN0cyBudWxsYWJsZTogZmFsc2VcIilcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXR5cGVzLmxlbmd0aCAmJiBzY2hlbWEubnVsbGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIm51bGxhYmxlXCIgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBcInR5cGVcIicpXG4gICAgfVxuICAgIGlmIChzY2hlbWEubnVsbGFibGUgPT09IHRydWUpIHR5cGVzLnB1c2goXCJudWxsXCIpXG4gIH1cbiAgcmV0dXJuIHR5cGVzXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkdW5kYW50LXR5cGUtY29uc3RpdHVlbnRzXG5leHBvcnQgZnVuY3Rpb24gZ2V0SlNPTlR5cGVzKHRzOiB1bmtub3duIHwgdW5rbm93bltdKTogSlNPTlR5cGVbXSB7XG4gIGNvbnN0IHR5cGVzOiB1bmtub3duW10gPSBBcnJheS5pc0FycmF5KHRzKSA/IHRzIDogdHMgPyBbdHNdIDogW11cbiAgaWYgKHR5cGVzLmV2ZXJ5KGlzSlNPTlR5cGUpKSByZXR1cm4gdHlwZXNcbiAgdGhyb3cgbmV3IEVycm9yKFwidHlwZSBtdXN0IGJlIEpTT05UeXBlIG9yIEpTT05UeXBlW106IFwiICsgdHlwZXMuam9pbihcIixcIikpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBbmRDaGVja0RhdGFUeXBlKGl0OiBTY2hlbWFPYmpDeHQsIHR5cGVzOiBKU09OVHlwZVtdKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIG9wdHN9ID0gaXRcbiAgY29uc3QgY29lcmNlVG8gPSBjb2VyY2VUb1R5cGVzKHR5cGVzLCBvcHRzLmNvZXJjZVR5cGVzKVxuICBjb25zdCBjaGVja1R5cGVzID1cbiAgICB0eXBlcy5sZW5ndGggPiAwICYmXG4gICAgIShjb2VyY2VUby5sZW5ndGggPT09IDAgJiYgdHlwZXMubGVuZ3RoID09PSAxICYmIHNjaGVtYUhhc1J1bGVzRm9yVHlwZShpdCwgdHlwZXNbMF0pKVxuICBpZiAoY2hlY2tUeXBlcykge1xuICAgIGNvbnN0IHdyb25nVHlwZSA9IGNoZWNrRGF0YVR5cGVzKHR5cGVzLCBkYXRhLCBvcHRzLnN0cmljdE51bWJlcnMsIERhdGFUeXBlLldyb25nKVxuICAgIGdlbi5pZih3cm9uZ1R5cGUsICgpID0+IHtcbiAgICAgIGlmIChjb2VyY2VUby5sZW5ndGgpIGNvZXJjZURhdGEoaXQsIHR5cGVzLCBjb2VyY2VUbylcbiAgICAgIGVsc2UgcmVwb3J0VHlwZUVycm9yKGl0KVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGNoZWNrVHlwZXNcbn1cblxuY29uc3QgQ09FUkNJQkxFOiBTZXQ8SlNPTlR5cGU+ID0gbmV3IFNldChbXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgXCJpbnRlZ2VyXCIsIFwiYm9vbGVhblwiLCBcIm51bGxcIl0pXG5mdW5jdGlvbiBjb2VyY2VUb1R5cGVzKHR5cGVzOiBKU09OVHlwZVtdLCBjb2VyY2VUeXBlcz86IGJvb2xlYW4gfCBcImFycmF5XCIpOiBKU09OVHlwZVtdIHtcbiAgcmV0dXJuIGNvZXJjZVR5cGVzXG4gICAgPyB0eXBlcy5maWx0ZXIoKHQpID0+IENPRVJDSUJMRS5oYXModCkgfHwgKGNvZXJjZVR5cGVzID09PSBcImFycmF5XCIgJiYgdCA9PT0gXCJhcnJheVwiKSlcbiAgICA6IFtdXG59XG5cbmZ1bmN0aW9uIGNvZXJjZURhdGEoaXQ6IFNjaGVtYU9iakN4dCwgdHlwZXM6IEpTT05UeXBlW10sIGNvZXJjZVRvOiBKU09OVHlwZVtdKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIG9wdHN9ID0gaXRcbiAgY29uc3QgZGF0YVR5cGUgPSBnZW4ubGV0KFwiZGF0YVR5cGVcIiwgX2B0eXBlb2YgJHtkYXRhfWApXG4gIGNvbnN0IGNvZXJjZWQgPSBnZW4ubGV0KFwiY29lcmNlZFwiLCBfYHVuZGVmaW5lZGApXG4gIGlmIChvcHRzLmNvZXJjZVR5cGVzID09PSBcImFycmF5XCIpIHtcbiAgICBnZW4uaWYoX2Ake2RhdGFUeXBlfSA9PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KCR7ZGF0YX0pICYmICR7ZGF0YX0ubGVuZ3RoID09IDFgLCAoKSA9PlxuICAgICAgZ2VuXG4gICAgICAgIC5hc3NpZ24oZGF0YSwgX2Ake2RhdGF9WzBdYClcbiAgICAgICAgLmFzc2lnbihkYXRhVHlwZSwgX2B0eXBlb2YgJHtkYXRhfWApXG4gICAgICAgIC5pZihjaGVja0RhdGFUeXBlcyh0eXBlcywgZGF0YSwgb3B0cy5zdHJpY3ROdW1iZXJzKSwgKCkgPT4gZ2VuLmFzc2lnbihjb2VyY2VkLCBkYXRhKSlcbiAgICApXG4gIH1cbiAgZ2VuLmlmKF9gJHtjb2VyY2VkfSAhPT0gdW5kZWZpbmVkYClcbiAgZm9yIChjb25zdCB0IG9mIGNvZXJjZVRvKSB7XG4gICAgaWYgKENPRVJDSUJMRS5oYXModCkgfHwgKHQgPT09IFwiYXJyYXlcIiAmJiBvcHRzLmNvZXJjZVR5cGVzID09PSBcImFycmF5XCIpKSB7XG4gICAgICBjb2VyY2VTcGVjaWZpY1R5cGUodClcbiAgICB9XG4gIH1cbiAgZ2VuLmVsc2UoKVxuICByZXBvcnRUeXBlRXJyb3IoaXQpXG4gIGdlbi5lbmRJZigpXG5cbiAgZ2VuLmlmKF9gJHtjb2VyY2VkfSAhPT0gdW5kZWZpbmVkYCwgKCkgPT4ge1xuICAgIGdlbi5hc3NpZ24oZGF0YSwgY29lcmNlZClcbiAgICBhc3NpZ25QYXJlbnREYXRhKGl0LCBjb2VyY2VkKVxuICB9KVxuXG4gIGZ1bmN0aW9uIGNvZXJjZVNwZWNpZmljVHlwZSh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHQpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgZ2VuXG4gICAgICAgICAgLmVsc2VJZihfYCR7ZGF0YVR5cGV9ID09IFwibnVtYmVyXCIgfHwgJHtkYXRhVHlwZX0gPT0gXCJib29sZWFuXCJgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgX2BcIlwiICsgJHtkYXRhfWApXG4gICAgICAgICAgLmVsc2VJZihfYCR7ZGF0YX0gPT09IG51bGxgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgX2BcIlwiYClcbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGdlblxuICAgICAgICAgIC5lbHNlSWYoXG4gICAgICAgICAgICBfYCR7ZGF0YVR5cGV9ID09IFwiYm9vbGVhblwiIHx8ICR7ZGF0YX0gPT09IG51bGxcbiAgICAgICAgICAgICAgfHwgKCR7ZGF0YVR5cGV9ID09IFwic3RyaW5nXCIgJiYgJHtkYXRhfSAmJiAke2RhdGF9ID09ICske2RhdGF9KWBcbiAgICAgICAgICApXG4gICAgICAgICAgLmFzc2lnbihjb2VyY2VkLCBfYCske2RhdGF9YClcbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlIFwiaW50ZWdlclwiOlxuICAgICAgICBnZW5cbiAgICAgICAgICAuZWxzZUlmKFxuICAgICAgICAgICAgX2Ake2RhdGFUeXBlfSA9PT0gXCJib29sZWFuXCIgfHwgJHtkYXRhfSA9PT0gbnVsbFxuICAgICAgICAgICAgICB8fCAoJHtkYXRhVHlwZX0gPT09IFwic3RyaW5nXCIgJiYgJHtkYXRhfSAmJiAke2RhdGF9ID09ICske2RhdGF9ICYmICEoJHtkYXRhfSAlIDEpKWBcbiAgICAgICAgICApXG4gICAgICAgICAgLmFzc2lnbihjb2VyY2VkLCBfYCske2RhdGF9YClcbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBnZW5cbiAgICAgICAgICAuZWxzZUlmKF9gJHtkYXRhfSA9PT0gXCJmYWxzZVwiIHx8ICR7ZGF0YX0gPT09IDAgfHwgJHtkYXRhfSA9PT0gbnVsbGApXG4gICAgICAgICAgLmFzc2lnbihjb2VyY2VkLCBmYWxzZSlcbiAgICAgICAgICAuZWxzZUlmKF9gJHtkYXRhfSA9PT0gXCJ0cnVlXCIgfHwgJHtkYXRhfSA9PT0gMWApXG4gICAgICAgICAgLmFzc2lnbihjb2VyY2VkLCB0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgIGdlbi5lbHNlSWYoX2Ake2RhdGF9ID09PSBcIlwiIHx8ICR7ZGF0YX0gPT09IDAgfHwgJHtkYXRhfSA9PT0gZmFsc2VgKVxuICAgICAgICBnZW4uYXNzaWduKGNvZXJjZWQsIG51bGwpXG4gICAgICAgIHJldHVyblxuXG4gICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgZ2VuXG4gICAgICAgICAgLmVsc2VJZihcbiAgICAgICAgICAgIF9gJHtkYXRhVHlwZX0gPT09IFwic3RyaW5nXCIgfHwgJHtkYXRhVHlwZX0gPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgfHwgJHtkYXRhVHlwZX0gPT09IFwiYm9vbGVhblwiIHx8ICR7ZGF0YX0gPT09IG51bGxgXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgX2BbJHtkYXRhfV1gKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NpZ25QYXJlbnREYXRhKHtnZW4sIHBhcmVudERhdGEsIHBhcmVudERhdGFQcm9wZXJ0eX06IFNjaGVtYU9iakN4dCwgZXhwcjogTmFtZSk6IHZvaWQge1xuICAvLyBUT0RPIHVzZSBnZW4ucHJvcGVydHlcbiAgZ2VuLmlmKF9gJHtwYXJlbnREYXRhfSAhPT0gdW5kZWZpbmVkYCwgKCkgPT5cbiAgICBnZW4uYXNzaWduKF9gJHtwYXJlbnREYXRhfVske3BhcmVudERhdGFQcm9wZXJ0eX1dYCwgZXhwcilcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEYXRhVHlwZShcbiAgZGF0YVR5cGU6IEpTT05UeXBlLFxuICBkYXRhOiBOYW1lLFxuICBzdHJpY3ROdW1zPzogYm9vbGVhbiB8IFwibG9nXCIsXG4gIGNvcnJlY3QgPSBEYXRhVHlwZS5Db3JyZWN0XG4pOiBDb2RlIHtcbiAgY29uc3QgRVEgPSBjb3JyZWN0ID09PSBEYXRhVHlwZS5Db3JyZWN0ID8gb3BlcmF0b3JzLkVRIDogb3BlcmF0b3JzLk5FUVxuICBsZXQgY29uZDogQ29kZVxuICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgY2FzZSBcIm51bGxcIjpcbiAgICAgIHJldHVybiBfYCR7ZGF0YX0gJHtFUX0gbnVsbGBcbiAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgIGNvbmQgPSBfYEFycmF5LmlzQXJyYXkoJHtkYXRhfSlgXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIGNvbmQgPSBfYCR7ZGF0YX0gJiYgdHlwZW9mICR7ZGF0YX0gPT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSgke2RhdGF9KWBcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgIGNvbmQgPSBudW1Db25kKF9gISgke2RhdGF9ICUgMSkgJiYgIWlzTmFOKCR7ZGF0YX0pYClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgY29uZCA9IG51bUNvbmQoKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIF9gdHlwZW9mICR7ZGF0YX0gJHtFUX0gJHtkYXRhVHlwZX1gXG4gIH1cbiAgcmV0dXJuIGNvcnJlY3QgPT09IERhdGFUeXBlLkNvcnJlY3QgPyBjb25kIDogbm90KGNvbmQpXG5cbiAgZnVuY3Rpb24gbnVtQ29uZChfY29uZDogQ29kZSA9IG5pbCk6IENvZGUge1xuICAgIHJldHVybiBhbmQoX2B0eXBlb2YgJHtkYXRhfSA9PSBcIm51bWJlclwiYCwgX2NvbmQsIHN0cmljdE51bXMgPyBfYGlzRmluaXRlKCR7ZGF0YX0pYCA6IG5pbClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEYXRhVHlwZXMoXG4gIGRhdGFUeXBlczogSlNPTlR5cGVbXSxcbiAgZGF0YTogTmFtZSxcbiAgc3RyaWN0TnVtcz86IGJvb2xlYW4gfCBcImxvZ1wiLFxuICBjb3JyZWN0PzogRGF0YVR5cGVcbik6IENvZGUge1xuICBpZiAoZGF0YVR5cGVzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBjaGVja0RhdGFUeXBlKGRhdGFUeXBlc1swXSwgZGF0YSwgc3RyaWN0TnVtcywgY29ycmVjdClcbiAgfVxuICBsZXQgY29uZDogQ29kZVxuICBjb25zdCB0eXBlcyA9IHRvSGFzaChkYXRhVHlwZXMpXG4gIGlmICh0eXBlcy5hcnJheSAmJiB0eXBlcy5vYmplY3QpIHtcbiAgICBjb25zdCBub3RPYmogPSBfYHR5cGVvZiAke2RhdGF9ICE9IFwib2JqZWN0XCJgXG4gICAgY29uZCA9IHR5cGVzLm51bGwgPyBub3RPYmogOiBfYCEke2RhdGF9IHx8ICR7bm90T2JqfWBcbiAgICBkZWxldGUgdHlwZXMubnVsbFxuICAgIGRlbGV0ZSB0eXBlcy5hcnJheVxuICAgIGRlbGV0ZSB0eXBlcy5vYmplY3RcbiAgfSBlbHNlIHtcbiAgICBjb25kID0gbmlsXG4gIH1cbiAgaWYgKHR5cGVzLm51bWJlcikgZGVsZXRlIHR5cGVzLmludGVnZXJcbiAgZm9yIChjb25zdCB0IGluIHR5cGVzKSBjb25kID0gYW5kKGNvbmQsIGNoZWNrRGF0YVR5cGUodCBhcyBKU09OVHlwZSwgZGF0YSwgc3RyaWN0TnVtcywgY29ycmVjdCkpXG4gIHJldHVybiBjb25kXG59XG5cbmV4cG9ydCB0eXBlIFR5cGVFcnJvciA9IEVycm9yT2JqZWN0PFwidHlwZVwiLCB7dHlwZTogc3RyaW5nfT5cblxuY29uc3QgdHlwZUVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3NjaGVtYX0pID0+IGBtdXN0IGJlICR7c2NoZW1hfWAsXG4gIHBhcmFtczogKHtzY2hlbWEsIHNjaGVtYVZhbHVlfSkgPT5cbiAgICB0eXBlb2Ygc2NoZW1hID09IFwic3RyaW5nXCIgPyBfYHt0eXBlOiAke3NjaGVtYX19YCA6IF9ge3R5cGU6ICR7c2NoZW1hVmFsdWV9fWAsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRUeXBlRXJyb3IoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBjb25zdCBjeHQgPSBnZXRUeXBlRXJyb3JDb250ZXh0KGl0KVxuICByZXBvcnRFcnJvcihjeHQsIHR5cGVFcnJvcilcbn1cblxuZnVuY3Rpb24gZ2V0VHlwZUVycm9yQ29udGV4dChpdDogU2NoZW1hT2JqQ3h0KTogS2V5d29yZEVycm9yQ3h0IHtcbiAgY29uc3Qge2dlbiwgZGF0YSwgc2NoZW1hfSA9IGl0XG4gIGNvbnN0IHNjaGVtYUNvZGUgPSBzY2hlbWFSZWZPclZhbChpdCwgc2NoZW1hLCBcInR5cGVcIilcbiAgcmV0dXJuIHtcbiAgICBnZW4sXG4gICAga2V5d29yZDogXCJ0eXBlXCIsXG4gICAgZGF0YSxcbiAgICBzY2hlbWE6IHNjaGVtYS50eXBlLFxuICAgIHNjaGVtYUNvZGUsXG4gICAgc2NoZW1hVmFsdWU6IHNjaGVtYUNvZGUsXG4gICAgcGFyZW50U2NoZW1hOiBzY2hlbWEsXG4gICAgcGFyYW1zOiB7fSxcbiAgICBpdCxcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtTY2hlbWFPYmpDeHR9IGZyb20gXCIuLlwiXG5pbXBvcnQge18sIGdldFByb3BlcnR5LCBzdHJpbmdpZnl9IGZyb20gXCIuLi9jb2RlZ2VuXCJcbmltcG9ydCB7Y2hlY2tTdHJpY3RNb2RlfSBmcm9tIFwiLi4vdXRpbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25EZWZhdWx0cyhpdDogU2NoZW1hT2JqQ3h0LCB0eT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB7cHJvcGVydGllcywgaXRlbXN9ID0gaXQuc2NoZW1hXG4gIGlmICh0eSA9PT0gXCJvYmplY3RcIiAmJiBwcm9wZXJ0aWVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgYXNzaWduRGVmYXVsdChpdCwga2V5LCBwcm9wZXJ0aWVzW2tleV0uZGVmYXVsdClcbiAgICB9XG4gIH0gZWxzZSBpZiAodHkgPT09IFwiYXJyYXlcIiAmJiBBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgIGl0ZW1zLmZvckVhY2goKHNjaCwgaTogbnVtYmVyKSA9PiBhc3NpZ25EZWZhdWx0KGl0LCBpLCBzY2guZGVmYXVsdCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzaWduRGVmYXVsdChpdDogU2NoZW1hT2JqQ3h0LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIsIGRlZmF1bHRWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBjb21wb3NpdGVSdWxlLCBkYXRhLCBvcHRzfSA9IGl0XG4gIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGNvbnN0IGNoaWxkRGF0YSA9IF9gJHtkYXRhfSR7Z2V0UHJvcGVydHkocHJvcCl9YFxuICBpZiAoY29tcG9zaXRlUnVsZSkge1xuICAgIGNoZWNrU3RyaWN0TW9kZShpdCwgYGRlZmF1bHQgaXMgaWdub3JlZCBmb3I6ICR7Y2hpbGREYXRhfWApXG4gICAgcmV0dXJuXG4gIH1cblxuICBsZXQgY29uZGl0aW9uID0gX2Ake2NoaWxkRGF0YX0gPT09IHVuZGVmaW5lZGBcbiAgaWYgKG9wdHMudXNlRGVmYXVsdHMgPT09IFwiZW1wdHlcIikge1xuICAgIGNvbmRpdGlvbiA9IF9gJHtjb25kaXRpb259IHx8ICR7Y2hpbGREYXRhfSA9PT0gbnVsbCB8fCAke2NoaWxkRGF0YX0gPT09IFwiXCJgXG4gIH1cbiAgLy8gYCR7Y2hpbGREYXRhfSA9PT0gdW5kZWZpbmVkYCArXG4gIC8vIChvcHRzLnVzZURlZmF1bHRzID09PSBcImVtcHR5XCIgPyBgIHx8ICR7Y2hpbGREYXRhfSA9PT0gbnVsbCB8fCAke2NoaWxkRGF0YX0gPT09IFwiXCJgIDogXCJcIilcbiAgZ2VuLmlmKGNvbmRpdGlvbiwgX2Ake2NoaWxkRGF0YX0gPSAke3N0cmluZ2lmeShkZWZhdWx0VmFsdWUpfWApXG59XG4iLCAiaW1wb3J0IHR5cGUge0FueVNjaGVtYSwgU2NoZW1hTWFwfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYUN4dH0gZnJvbSBcIi4uL2NvbXBpbGVcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Q29kZUdlbiwgXywgYW5kLCBvciwgbm90LCBuaWwsIHN0ckNvbmNhdCwgZ2V0UHJvcGVydHksIENvZGUsIE5hbWV9IGZyb20gXCIuLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgVHlwZX0gZnJvbSBcIi4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQgTiBmcm9tIFwiLi4vY29tcGlsZS9uYW1lc1wiXG5pbXBvcnQge3VzZUZ1bmN9IGZyb20gXCIuLi9jb21waWxlL3V0aWxcIlxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmVwb3J0TWlzc2luZ1Byb3AoY3h0OiBLZXl3b3JkQ3h0LCBwcm9wOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgZGF0YSwgaXR9ID0gY3h0XG4gIGdlbi5pZihub1Byb3BlcnR5SW5EYXRhKGdlbiwgZGF0YSwgcHJvcCwgaXQub3B0cy5vd25Qcm9wZXJ0aWVzKSwgKCkgPT4ge1xuICAgIGN4dC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTogX2Ake3Byb3B9YH0sIHRydWUpXG4gICAgY3h0LmVycm9yKClcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTWlzc2luZ1Byb3AoXG4gIHtnZW4sIGRhdGEsIGl0OiB7b3B0c319OiBLZXl3b3JkQ3h0LFxuICBwcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgbWlzc2luZzogTmFtZVxuKTogQ29kZSB7XG4gIHJldHVybiBvcihcbiAgICAuLi5wcm9wZXJ0aWVzLm1hcCgocHJvcCkgPT5cbiAgICAgIGFuZChub1Byb3BlcnR5SW5EYXRhKGdlbiwgZGF0YSwgcHJvcCwgb3B0cy5vd25Qcm9wZXJ0aWVzKSwgX2Ake21pc3Npbmd9ID0gJHtwcm9wfWApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRNaXNzaW5nUHJvcChjeHQ6IEtleXdvcmRDeHQsIG1pc3Npbmc6IE5hbWUpOiB2b2lkIHtcbiAgY3h0LnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5OiBtaXNzaW5nfSwgdHJ1ZSlcbiAgY3h0LmVycm9yKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1Byb3BGdW5jKGdlbjogQ29kZUdlbik6IE5hbWUge1xuICByZXR1cm4gZ2VuLnNjb3BlVmFsdWUoXCJmdW5jXCIsIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG4gICAgcmVmOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICAgIGNvZGU6IF9gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eWAsXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc093blByb3BlcnR5KGdlbjogQ29kZUdlbiwgZGF0YTogTmFtZSwgcHJvcGVydHk6IE5hbWUgfCBzdHJpbmcpOiBDb2RlIHtcbiAgcmV0dXJuIF9gJHtoYXNQcm9wRnVuYyhnZW4pfS5jYWxsKCR7ZGF0YX0sICR7cHJvcGVydHl9KWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5SW5EYXRhKFxuICBnZW46IENvZGVHZW4sXG4gIGRhdGE6IE5hbWUsXG4gIHByb3BlcnR5OiBOYW1lIHwgc3RyaW5nLFxuICBvd25Qcm9wZXJ0aWVzPzogYm9vbGVhblxuKTogQ29kZSB7XG4gIGNvbnN0IGNvbmQgPSBfYCR7ZGF0YX0ke2dldFByb3BlcnR5KHByb3BlcnR5KX0gIT09IHVuZGVmaW5lZGBcbiAgcmV0dXJuIG93blByb3BlcnRpZXMgPyBfYCR7Y29uZH0gJiYgJHtpc093blByb3BlcnR5KGdlbiwgZGF0YSwgcHJvcGVydHkpfWAgOiBjb25kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub1Byb3BlcnR5SW5EYXRhKFxuICBnZW46IENvZGVHZW4sXG4gIGRhdGE6IE5hbWUsXG4gIHByb3BlcnR5OiBOYW1lIHwgc3RyaW5nLFxuICBvd25Qcm9wZXJ0aWVzPzogYm9vbGVhblxuKTogQ29kZSB7XG4gIGNvbnN0IGNvbmQgPSBfYCR7ZGF0YX0ke2dldFByb3BlcnR5KHByb3BlcnR5KX0gPT09IHVuZGVmaW5lZGBcbiAgcmV0dXJuIG93blByb3BlcnRpZXMgPyBvcihjb25kLCBub3QoaXNPd25Qcm9wZXJ0eShnZW4sIGRhdGEsIHByb3BlcnR5KSkpIDogY29uZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsU2NoZW1hUHJvcGVydGllcyhzY2hlbWFNYXA/OiBTY2hlbWFNYXApOiBzdHJpbmdbXSB7XG4gIHJldHVybiBzY2hlbWFNYXAgPyBPYmplY3Qua2V5cyhzY2hlbWFNYXApLmZpbHRlcigocCkgPT4gcCAhPT0gXCJfX3Byb3RvX19cIikgOiBbXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hUHJvcGVydGllcyhpdDogU2NoZW1hQ3h0LCBzY2hlbWFNYXA6IFNjaGVtYU1hcCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGFsbFNjaGVtYVByb3BlcnRpZXMoc2NoZW1hTWFwKS5maWx0ZXIoXG4gICAgKHApID0+ICFhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hTWFwW3BdIGFzIEFueVNjaGVtYSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsbFZhbGlkYXRlQ29kZShcbiAge3NjaGVtYUNvZGUsIGRhdGEsIGl0OiB7Z2VuLCB0b3BTY2hlbWFSZWYsIHNjaGVtYVBhdGgsIGVycm9yUGF0aH0sIGl0fTogS2V5d29yZEN4dCxcbiAgZnVuYzogQ29kZSxcbiAgY29udGV4dDogQ29kZSxcbiAgcGFzc1NjaGVtYT86IGJvb2xlYW5cbik6IENvZGUge1xuICBjb25zdCBkYXRhQW5kU2NoZW1hID0gcGFzc1NjaGVtYSA/IF9gJHtzY2hlbWFDb2RlfSwgJHtkYXRhfSwgJHt0b3BTY2hlbWFSZWZ9JHtzY2hlbWFQYXRofWAgOiBkYXRhXG4gIGNvbnN0IHZhbEN4dDogW05hbWUsIENvZGUgfCBudW1iZXJdW10gPSBbXG4gICAgW04uaW5zdGFuY2VQYXRoLCBzdHJDb25jYXQoTi5pbnN0YW5jZVBhdGgsIGVycm9yUGF0aCldLFxuICAgIFtOLnBhcmVudERhdGEsIGl0LnBhcmVudERhdGFdLFxuICAgIFtOLnBhcmVudERhdGFQcm9wZXJ0eSwgaXQucGFyZW50RGF0YVByb3BlcnR5XSxcbiAgICBbTi5yb290RGF0YSwgTi5yb290RGF0YV0sXG4gIF1cbiAgaWYgKGl0Lm9wdHMuZHluYW1pY1JlZikgdmFsQ3h0LnB1c2goW04uZHluYW1pY0FuY2hvcnMsIE4uZHluYW1pY0FuY2hvcnNdKVxuICBjb25zdCBhcmdzID0gX2Ake2RhdGFBbmRTY2hlbWF9LCAke2dlbi5vYmplY3QoLi4udmFsQ3h0KX1gXG4gIHJldHVybiBjb250ZXh0ICE9PSBuaWwgPyBfYCR7ZnVuY30uY2FsbCgke2NvbnRleHR9LCAke2FyZ3N9KWAgOiBfYCR7ZnVuY30oJHthcmdzfSlgXG59XG5cbmNvbnN0IG5ld1JlZ0V4cCA9IF9gbmV3IFJlZ0V4cGBcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhdHRlcm4oe2dlbiwgaXQ6IHtvcHRzfX06IEtleXdvcmRDeHQsIHBhdHRlcm46IHN0cmluZyk6IE5hbWUge1xuICBjb25zdCB1ID0gb3B0cy51bmljb2RlUmVnRXhwID8gXCJ1XCIgOiBcIlwiXG4gIGNvbnN0IHtyZWdFeHB9ID0gb3B0cy5jb2RlXG4gIGNvbnN0IHJ4ID0gcmVnRXhwKHBhdHRlcm4sIHUpXG5cbiAgcmV0dXJuIGdlbi5zY29wZVZhbHVlKFwicGF0dGVyblwiLCB7XG4gICAga2V5OiByeC50b1N0cmluZygpLFxuICAgIHJlZjogcngsXG4gICAgY29kZTogX2Ake3JlZ0V4cC5jb2RlID09PSBcIm5ldyBSZWdFeHBcIiA/IG5ld1JlZ0V4cCA6IHVzZUZ1bmMoZ2VuLCByZWdFeHApfSgke3BhdHRlcm59LCAke3V9KWAsXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFycmF5KGN4dDogS2V5d29yZEN4dCk6IE5hbWUge1xuICBjb25zdCB7Z2VuLCBkYXRhLCBrZXl3b3JkLCBpdH0gPSBjeHRcbiAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gIGlmIChpdC5hbGxFcnJvcnMpIHtcbiAgICBjb25zdCB2YWxpZEFyciA9IGdlbi5sZXQoXCJ2YWxpZFwiLCB0cnVlKVxuICAgIHZhbGlkYXRlSXRlbXMoKCkgPT4gZ2VuLmFzc2lnbih2YWxpZEFyciwgZmFsc2UpKVxuICAgIHJldHVybiB2YWxpZEFyclxuICB9XG4gIGdlbi52YXIodmFsaWQsIHRydWUpXG4gIHZhbGlkYXRlSXRlbXMoKCkgPT4gZ2VuLmJyZWFrKCkpXG4gIHJldHVybiB2YWxpZFxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlSXRlbXMobm90VmFsaWQ6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBsZW4gPSBnZW4uY29uc3QoXCJsZW5cIiwgX2Ake2RhdGF9Lmxlbmd0aGApXG4gICAgZ2VuLmZvclJhbmdlKFwiaVwiLCAwLCBsZW4sIChpKSA9PiB7XG4gICAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAgICB7XG4gICAgICAgICAga2V5d29yZCxcbiAgICAgICAgICBkYXRhUHJvcDogaSxcbiAgICAgICAgICBkYXRhUHJvcFR5cGU6IFR5cGUuTnVtLFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZFxuICAgICAgKVxuICAgICAgZ2VuLmlmKG5vdCh2YWxpZCksIG5vdFZhbGlkKVxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVW5pb24oY3h0OiBLZXl3b3JkQ3h0KTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYSwga2V5d29yZCwgaXR9ID0gY3h0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkgdGhyb3cgbmV3IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpXG4gIGNvbnN0IGFsd2F5c1ZhbGlkID0gc2NoZW1hLnNvbWUoKHNjaDogQW55U2NoZW1hKSA9PiBhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoKSlcbiAgaWYgKGFsd2F5c1ZhbGlkICYmICFpdC5vcHRzLnVuZXZhbHVhdGVkKSByZXR1cm5cblxuICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiLCBmYWxzZSlcbiAgY29uc3Qgc2NoVmFsaWQgPSBnZW4ubmFtZShcIl92YWxpZFwiKVxuXG4gIGdlbi5ibG9jaygoKSA9PlxuICAgIHNjaGVtYS5mb3JFYWNoKChfc2NoOiBBbnlTY2hlbWEsIGk6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc2NoQ3h0ID0gY3h0LnN1YnNjaGVtYShcbiAgICAgICAge1xuICAgICAgICAgIGtleXdvcmQsXG4gICAgICAgICAgc2NoZW1hUHJvcDogaSxcbiAgICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY2hWYWxpZFxuICAgICAgKVxuICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgX2Ake3ZhbGlkfSB8fCAke3NjaFZhbGlkfWApXG4gICAgICBjb25zdCBtZXJnZWQgPSBjeHQubWVyZ2VWYWxpZEV2YWx1YXRlZChzY2hDeHQsIHNjaFZhbGlkKVxuICAgICAgLy8gY2FuIHNob3J0LWNpcmN1aXQgaWYgYHVuZXZhbHVhdGVkUHJvcGVydGllcy9JdGVtc2Agbm90IHN1cHBvcnRlZCAob3B0cy51bmV2YWx1YXRlZCAhPT0gdHJ1ZSlcbiAgICAgIC8vIG9yIGlmIGFsbCBwcm9wZXJ0aWVzIGFuZCBpdGVtcyB3ZXJlIGV2YWx1YXRlZCAoaXQucHJvcHMgPT09IHRydWUgJiYgaXQuaXRlbXMgPT09IHRydWUpXG4gICAgICBpZiAoIW1lcmdlZCkgZ2VuLmlmKG5vdCh2YWxpZCkpXG4gICAgfSlcbiAgKVxuXG4gIGN4dC5yZXN1bHQoXG4gICAgdmFsaWQsXG4gICAgKCkgPT4gY3h0LnJlc2V0KCksXG4gICAgKCkgPT4gY3h0LmVycm9yKHRydWUpXG4gIClcbn1cbiIsICJpbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi5cIlxuaW1wb3J0IHR5cGUge1xuICBBbnlTY2hlbWEsXG4gIFNjaGVtYVZhbGlkYXRlRnVuY3Rpb24sXG4gIEFueVZhbGlkYXRlRnVuY3Rpb24sXG4gIEFkZGVkS2V5d29yZERlZmluaXRpb24sXG4gIE1hY3JvS2V5d29yZERlZmluaXRpb24sXG4gIEZ1bmNLZXl3b3JkRGVmaW5pdGlvbixcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFPYmpDeHR9IGZyb20gXCIuLlwiXG5pbXBvcnQge18sIG5pbCwgbm90LCBzdHJpbmdpZnksIENvZGUsIE5hbWUsIENvZGVHZW59IGZyb20gXCIuLi9jb2RlZ2VuXCJcbmltcG9ydCBOIGZyb20gXCIuLi9uYW1lc1wiXG5pbXBvcnQgdHlwZSB7SlNPTlR5cGV9IGZyb20gXCIuLi9ydWxlc1wiXG5pbXBvcnQge2NhbGxWYWxpZGF0ZUNvZGV9IGZyb20gXCIuLi8uLi92b2NhYnVsYXJpZXMvY29kZVwiXG5pbXBvcnQge2V4dGVuZEVycm9yc30gZnJvbSBcIi4uL2Vycm9yc1wiXG5cbnR5cGUgS2V5d29yZENvbXBpbGF0aW9uUmVzdWx0ID0gQW55U2NoZW1hIHwgU2NoZW1hVmFsaWRhdGVGdW5jdGlvbiB8IEFueVZhbGlkYXRlRnVuY3Rpb25cblxuZXhwb3J0IGZ1bmN0aW9uIG1hY3JvS2V5d29yZENvZGUoY3h0OiBLZXl3b3JkQ3h0LCBkZWY6IE1hY3JvS2V5d29yZERlZmluaXRpb24pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwga2V5d29yZCwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0fSA9IGN4dFxuICBjb25zdCBtYWNyb1NjaGVtYSA9IGRlZi5tYWNyby5jYWxsKGl0LnNlbGYsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdClcbiAgY29uc3Qgc2NoZW1hUmVmID0gdXNlS2V5d29yZChnZW4sIGtleXdvcmQsIG1hY3JvU2NoZW1hKVxuICBpZiAoaXQub3B0cy52YWxpZGF0ZVNjaGVtYSAhPT0gZmFsc2UpIGl0LnNlbGYudmFsaWRhdGVTY2hlbWEobWFjcm9TY2hlbWEsIHRydWUpXG5cbiAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gIGN4dC5zdWJzY2hlbWEoXG4gICAge1xuICAgICAgc2NoZW1hOiBtYWNyb1NjaGVtYSxcbiAgICAgIHNjaGVtYVBhdGg6IG5pbCxcbiAgICAgIGVyclNjaGVtYVBhdGg6IGAke2l0LmVyclNjaGVtYVBhdGh9LyR7a2V5d29yZH1gLFxuICAgICAgdG9wU2NoZW1hUmVmOiBzY2hlbWFSZWYsXG4gICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgIH0sXG4gICAgdmFsaWRcbiAgKVxuICBjeHQucGFzcyh2YWxpZCwgKCkgPT4gY3h0LmVycm9yKHRydWUpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnVuY0tleXdvcmRDb2RlKGN4dDogS2V5d29yZEN4dCwgZGVmOiBGdW5jS2V5d29yZERlZmluaXRpb24pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwga2V5d29yZCwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsICRkYXRhLCBpdH0gPSBjeHRcbiAgY2hlY2tBc3luY0tleXdvcmQoaXQsIGRlZilcbiAgY29uc3QgdmFsaWRhdGUgPVxuICAgICEkZGF0YSAmJiBkZWYuY29tcGlsZSA/IGRlZi5jb21waWxlLmNhbGwoaXQuc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KSA6IGRlZi52YWxpZGF0ZVxuICBjb25zdCB2YWxpZGF0ZVJlZiA9IHVzZUtleXdvcmQoZ2VuLCBrZXl3b3JkLCB2YWxpZGF0ZSlcbiAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIilcbiAgY3h0LmJsb2NrJGRhdGEodmFsaWQsIHZhbGlkYXRlS2V5d29yZClcbiAgY3h0Lm9rKGRlZi52YWxpZCA/PyB2YWxpZClcblxuICBmdW5jdGlvbiB2YWxpZGF0ZUtleXdvcmQoKTogdm9pZCB7XG4gICAgaWYgKGRlZi5lcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICBhc3NpZ25WYWxpZCgpXG4gICAgICBpZiAoZGVmLm1vZGlmeWluZykgbW9kaWZ5RGF0YShjeHQpXG4gICAgICByZXBvcnRFcnJzKCgpID0+IGN4dC5lcnJvcigpKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBydWxlRXJycyA9IGRlZi5hc3luYyA/IHZhbGlkYXRlQXN5bmMoKSA6IHZhbGlkYXRlU3luYygpXG4gICAgICBpZiAoZGVmLm1vZGlmeWluZykgbW9kaWZ5RGF0YShjeHQpXG4gICAgICByZXBvcnRFcnJzKCgpID0+IGFkZEVycnMoY3h0LCBydWxlRXJycykpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVBc3luYygpOiBOYW1lIHtcbiAgICBjb25zdCBydWxlRXJycyA9IGdlbi5sZXQoXCJydWxlRXJyc1wiLCBudWxsKVxuICAgIGdlbi50cnkoXG4gICAgICAoKSA9PiBhc3NpZ25WYWxpZChfYGF3YWl0IGApLFxuICAgICAgKGUpID0+XG4gICAgICAgIGdlbi5hc3NpZ24odmFsaWQsIGZhbHNlKS5pZihcbiAgICAgICAgICBfYCR7ZX0gaW5zdGFuY2VvZiAke2l0LlZhbGlkYXRpb25FcnJvciBhcyBOYW1lfWAsXG4gICAgICAgICAgKCkgPT4gZ2VuLmFzc2lnbihydWxlRXJycywgX2Ake2V9LmVycm9yc2ApLFxuICAgICAgICAgICgpID0+IGdlbi50aHJvdyhlKVxuICAgICAgICApXG4gICAgKVxuICAgIHJldHVybiBydWxlRXJyc1xuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVTeW5jKCk6IENvZGUge1xuICAgIGNvbnN0IHZhbGlkYXRlRXJycyA9IF9gJHt2YWxpZGF0ZVJlZn0uZXJyb3JzYFxuICAgIGdlbi5hc3NpZ24odmFsaWRhdGVFcnJzLCBudWxsKVxuICAgIGFzc2lnblZhbGlkKG5pbClcbiAgICByZXR1cm4gdmFsaWRhdGVFcnJzXG4gIH1cblxuICBmdW5jdGlvbiBhc3NpZ25WYWxpZChfYXdhaXQ6IENvZGUgPSBkZWYuYXN5bmMgPyBfYGF3YWl0IGAgOiBuaWwpOiB2b2lkIHtcbiAgICBjb25zdCBwYXNzQ3h0ID0gaXQub3B0cy5wYXNzQ29udGV4dCA/IE4udGhpcyA6IE4uc2VsZlxuICAgIGNvbnN0IHBhc3NTY2hlbWEgPSAhKChcImNvbXBpbGVcIiBpbiBkZWYgJiYgISRkYXRhKSB8fCBkZWYuc2NoZW1hID09PSBmYWxzZSlcbiAgICBnZW4uYXNzaWduKFxuICAgICAgdmFsaWQsXG4gICAgICBfYCR7X2F3YWl0fSR7Y2FsbFZhbGlkYXRlQ29kZShjeHQsIHZhbGlkYXRlUmVmLCBwYXNzQ3h0LCBwYXNzU2NoZW1hKX1gLFxuICAgICAgZGVmLm1vZGlmeWluZ1xuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcG9ydEVycnMoZXJyb3JzOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgZ2VuLmlmKG5vdChkZWYudmFsaWQgPz8gdmFsaWQpLCBlcnJvcnMpXG4gIH1cbn1cblxuZnVuY3Rpb24gbW9kaWZ5RGF0YShjeHQ6IEtleXdvcmRDeHQpOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgZGF0YSwgaXR9ID0gY3h0XG4gIGdlbi5pZihpdC5wYXJlbnREYXRhLCAoKSA9PiBnZW4uYXNzaWduKGRhdGEsIF9gJHtpdC5wYXJlbnREYXRhfVske2l0LnBhcmVudERhdGFQcm9wZXJ0eX1dYCkpXG59XG5cbmZ1bmN0aW9uIGFkZEVycnMoY3h0OiBLZXl3b3JkQ3h0LCBlcnJzOiBDb2RlKTogdm9pZCB7XG4gIGNvbnN0IHtnZW59ID0gY3h0XG4gIGdlbi5pZihcbiAgICBfYEFycmF5LmlzQXJyYXkoJHtlcnJzfSlgLFxuICAgICgpID0+IHtcbiAgICAgIGdlblxuICAgICAgICAuYXNzaWduKE4udkVycm9ycywgX2Ake04udkVycm9yc30gPT09IG51bGwgPyAke2VycnN9IDogJHtOLnZFcnJvcnN9LmNvbmNhdCgke2VycnN9KWApXG4gICAgICAgIC5hc3NpZ24oTi5lcnJvcnMsIF9gJHtOLnZFcnJvcnN9Lmxlbmd0aGApXG4gICAgICBleHRlbmRFcnJvcnMoY3h0KVxuICAgIH0sXG4gICAgKCkgPT4gY3h0LmVycm9yKClcbiAgKVxufVxuXG5mdW5jdGlvbiBjaGVja0FzeW5jS2V5d29yZCh7c2NoZW1hRW52fTogU2NoZW1hT2JqQ3h0LCBkZWY6IEZ1bmNLZXl3b3JkRGVmaW5pdGlvbik6IHZvaWQge1xuICBpZiAoZGVmLmFzeW5jICYmICFzY2hlbWFFbnYuJGFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoXCJhc3luYyBrZXl3b3JkIGluIHN5bmMgc2NoZW1hXCIpXG59XG5cbmZ1bmN0aW9uIHVzZUtleXdvcmQoZ2VuOiBDb2RlR2VuLCBrZXl3b3JkOiBzdHJpbmcsIHJlc3VsdD86IEtleXdvcmRDb21waWxhdGlvblJlc3VsdCk6IE5hbWUge1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihga2V5d29yZCBcIiR7a2V5d29yZH1cIiBmYWlsZWQgdG8gY29tcGlsZWApXG4gIHJldHVybiBnZW4uc2NvcGVWYWx1ZShcbiAgICBcImtleXdvcmRcIixcbiAgICB0eXBlb2YgcmVzdWx0ID09IFwiZnVuY3Rpb25cIiA/IHtyZWY6IHJlc3VsdH0gOiB7cmVmOiByZXN1bHQsIGNvZGU6IHN0cmluZ2lmeShyZXN1bHQpfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZFNjaGVtYVR5cGUoXG4gIHNjaGVtYTogdW5rbm93bixcbiAgc2NoZW1hVHlwZTogSlNPTlR5cGVbXSxcbiAgYWxsb3dVbmRlZmluZWQgPSBmYWxzZVxuKTogYm9vbGVhbiB7XG4gIC8vIFRPRE8gYWRkIHRlc3RzXG4gIHJldHVybiAoXG4gICAgIXNjaGVtYVR5cGUubGVuZ3RoIHx8XG4gICAgc2NoZW1hVHlwZS5zb21lKChzdCkgPT5cbiAgICAgIHN0ID09PSBcImFycmF5XCJcbiAgICAgICAgPyBBcnJheS5pc0FycmF5KHNjaGVtYSlcbiAgICAgICAgOiBzdCA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKVxuICAgICAgICA6IHR5cGVvZiBzY2hlbWEgPT0gc3QgfHwgKGFsbG93VW5kZWZpbmVkICYmIHR5cGVvZiBzY2hlbWEgPT0gXCJ1bmRlZmluZWRcIilcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlS2V5d29yZFVzYWdlKFxuICB7c2NoZW1hLCBvcHRzLCBzZWxmLCBlcnJTY2hlbWFQYXRofTogU2NoZW1hT2JqQ3h0LFxuICBkZWY6IEFkZGVkS2V5d29yZERlZmluaXRpb24sXG4gIGtleXdvcmQ6IHN0cmluZ1xuKTogdm9pZCB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoQXJyYXkuaXNBcnJheShkZWYua2V5d29yZCkgPyAhZGVmLmtleXdvcmQuaW5jbHVkZXMoa2V5d29yZCkgOiBkZWYua2V5d29yZCAhPT0ga2V5d29yZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICB9XG5cbiAgY29uc3QgZGVwcyA9IGRlZi5kZXBlbmRlbmNpZXNcbiAgaWYgKGRlcHM/LnNvbWUoKGt3ZCkgPT4gIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzY2hlbWEsIGt3ZCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYXJlbnQgc2NoZW1hIG11c3QgaGF2ZSBkZXBlbmRlbmNpZXMgb2YgJHtrZXl3b3JkfTogJHtkZXBzLmpvaW4oXCIsXCIpfWApXG4gIH1cblxuICBpZiAoZGVmLnZhbGlkYXRlU2NoZW1hKSB7XG4gICAgY29uc3QgdmFsaWQgPSBkZWYudmFsaWRhdGVTY2hlbWEoc2NoZW1hW2tleXdvcmRdKVxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgIGBrZXl3b3JkIFwiJHtrZXl3b3JkfVwiIHZhbHVlIGlzIGludmFsaWQgYXQgcGF0aCBcIiR7ZXJyU2NoZW1hUGF0aH1cIjogYCArXG4gICAgICAgIHNlbGYuZXJyb3JzVGV4dChkZWYudmFsaWRhdGVTY2hlbWEuZXJyb3JzKVxuICAgICAgaWYgKG9wdHMudmFsaWRhdGVTY2hlbWEgPT09IFwibG9nXCIpIHNlbGYubG9nZ2VyLmVycm9yKG1zZylcbiAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKG1zZylcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7QW55U2NoZW1hfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYU9iakN4dH0gZnJvbSBcIi4uXCJcbmltcG9ydCB7Xywgc3RyLCBnZXRQcm9wZXJ0eSwgQ29kZSwgTmFtZX0gZnJvbSBcIi4uL2NvZGVnZW5cIlxuaW1wb3J0IHtlc2NhcGVGcmFnbWVudCwgZ2V0RXJyb3JQYXRoLCBUeXBlfSBmcm9tIFwiLi4vdXRpbFwiXG5pbXBvcnQgdHlwZSB7SlNPTlR5cGV9IGZyb20gXCIuLi9ydWxlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NoZW1hQ29udGV4dCB7XG4gIC8vIFRPRE8gdXNlIE9wdGlvbmFsPyBhbGlnbiB3aXRoIFNjaGVtQ3h0IHByb3BlcnR5IHR5cGVzXG4gIHNjaGVtYTogQW55U2NoZW1hXG4gIHNjaGVtYVBhdGg6IENvZGVcbiAgZXJyU2NoZW1hUGF0aDogc3RyaW5nXG4gIHRvcFNjaGVtYVJlZj86IENvZGVcbiAgZXJyb3JQYXRoPzogQ29kZVxuICBkYXRhTGV2ZWw/OiBudW1iZXJcbiAgZGF0YVR5cGVzPzogSlNPTlR5cGVbXVxuICBkYXRhPzogTmFtZVxuICBwYXJlbnREYXRhPzogTmFtZVxuICBwYXJlbnREYXRhUHJvcGVydHk/OiBDb2RlIHwgbnVtYmVyXG4gIGRhdGFOYW1lcz86IE5hbWVbXVxuICBkYXRhUGF0aEFycj86IChDb2RlIHwgbnVtYmVyKVtdXG4gIHByb3BlcnR5TmFtZT86IE5hbWVcbiAganRkRGlzY3JpbWluYXRvcj86IHN0cmluZ1xuICBqdGRNZXRhZGF0YT86IGJvb2xlYW5cbiAgY29tcG9zaXRlUnVsZT86IHRydWVcbiAgY3JlYXRlRXJyb3JzPzogYm9vbGVhblxuICBhbGxFcnJvcnM/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjaGVtYUFyZ3MgPSBQYXJ0aWFsPHtcbiAga2V5d29yZDogc3RyaW5nXG4gIHNjaGVtYVByb3A6IHN0cmluZyB8IG51bWJlclxuICBzY2hlbWE6IEFueVNjaGVtYVxuICBzY2hlbWFQYXRoOiBDb2RlXG4gIGVyclNjaGVtYVBhdGg6IHN0cmluZ1xuICB0b3BTY2hlbWFSZWY6IENvZGVcbiAgZGF0YTogTmFtZSB8IENvZGVcbiAgZGF0YVByb3A6IENvZGUgfCBzdHJpbmcgfCBudW1iZXJcbiAgZGF0YVR5cGVzOiBKU09OVHlwZVtdXG4gIGRlZmluZWRQcm9wZXJ0aWVzOiBTZXQ8c3RyaW5nPlxuICBwcm9wZXJ0eU5hbWU6IE5hbWVcbiAgZGF0YVByb3BUeXBlOiBUeXBlXG4gIGp0ZERpc2NyaW1pbmF0b3I6IHN0cmluZ1xuICBqdGRNZXRhZGF0YTogYm9vbGVhblxuICBjb21wb3NpdGVSdWxlOiB0cnVlXG4gIGNyZWF0ZUVycm9yczogYm9vbGVhblxuICBhbGxFcnJvcnM6IGJvb2xlYW5cbn0+XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJzY2hlbWEoXG4gIGl0OiBTY2hlbWFPYmpDeHQsXG4gIHtrZXl3b3JkLCBzY2hlbWFQcm9wLCBzY2hlbWEsIHNjaGVtYVBhdGgsIGVyclNjaGVtYVBhdGgsIHRvcFNjaGVtYVJlZn06IFN1YnNjaGVtYUFyZ3Ncbik6IFN1YnNjaGVtYUNvbnRleHQge1xuICBpZiAoa2V5d29yZCAhPT0gdW5kZWZpbmVkICYmIHNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdib3RoIFwia2V5d29yZFwiIGFuZCBcInNjaGVtYVwiIHBhc3NlZCwgb25seSBvbmUgYWxsb3dlZCcpXG4gIH1cblxuICBpZiAoa2V5d29yZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qgc2NoID0gaXQuc2NoZW1hW2tleXdvcmRdXG4gICAgcmV0dXJuIHNjaGVtYVByb3AgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7XG4gICAgICAgICAgc2NoZW1hOiBzY2gsXG4gICAgICAgICAgc2NoZW1hUGF0aDogX2Ake2l0LnNjaGVtYVBhdGh9JHtnZXRQcm9wZXJ0eShrZXl3b3JkKX1gLFxuICAgICAgICAgIGVyclNjaGVtYVBhdGg6IGAke2l0LmVyclNjaGVtYVBhdGh9LyR7a2V5d29yZH1gLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBzY2hlbWE6IHNjaFtzY2hlbWFQcm9wXSxcbiAgICAgICAgICBzY2hlbWFQYXRoOiBfYCR7aXQuc2NoZW1hUGF0aH0ke2dldFByb3BlcnR5KGtleXdvcmQpfSR7Z2V0UHJvcGVydHkoc2NoZW1hUHJvcCl9YCxcbiAgICAgICAgICBlcnJTY2hlbWFQYXRoOiBgJHtpdC5lcnJTY2hlbWFQYXRofS8ke2tleXdvcmR9LyR7ZXNjYXBlRnJhZ21lbnQoc2NoZW1hUHJvcCl9YCxcbiAgICAgICAgfVxuICB9XG5cbiAgaWYgKHNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHNjaGVtYVBhdGggPT09IHVuZGVmaW5lZCB8fCBlcnJTY2hlbWFQYXRoID09PSB1bmRlZmluZWQgfHwgdG9wU2NoZW1hUmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJzY2hlbWFQYXRoXCIsIFwiZXJyU2NoZW1hUGF0aFwiIGFuZCBcInRvcFNjaGVtYVJlZlwiIGFyZSByZXF1aXJlZCB3aXRoIFwic2NoZW1hXCInKVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hLFxuICAgICAgc2NoZW1hUGF0aCxcbiAgICAgIHRvcFNjaGVtYVJlZixcbiAgICAgIGVyclNjaGVtYVBhdGgsXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdlaXRoZXIgXCJrZXl3b3JkXCIgb3IgXCJzY2hlbWFcIiBtdXN0IGJlIHBhc3NlZCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTdWJzY2hlbWFEYXRhKFxuICBzdWJzY2hlbWE6IFN1YnNjaGVtYUNvbnRleHQsXG4gIGl0OiBTY2hlbWFPYmpDeHQsXG4gIHtkYXRhUHJvcCwgZGF0YVByb3BUeXBlOiBkcFR5cGUsIGRhdGEsIGRhdGFUeXBlcywgcHJvcGVydHlOYW1lfTogU3Vic2NoZW1hQXJnc1xuKTogdm9pZCB7XG4gIGlmIChkYXRhICE9PSB1bmRlZmluZWQgJiYgZGF0YVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYm90aCBcImRhdGFcIiBhbmQgXCJkYXRhUHJvcFwiIHBhc3NlZCwgb25seSBvbmUgYWxsb3dlZCcpXG4gIH1cblxuICBjb25zdCB7Z2VufSA9IGl0XG5cbiAgaWYgKGRhdGFQcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB7ZXJyb3JQYXRoLCBkYXRhUGF0aEFyciwgb3B0c30gPSBpdFxuICAgIGNvbnN0IG5leHREYXRhID0gZ2VuLmxldChcImRhdGFcIiwgX2Ake2l0LmRhdGF9JHtnZXRQcm9wZXJ0eShkYXRhUHJvcCl9YCwgdHJ1ZSlcbiAgICBkYXRhQ29udGV4dFByb3BzKG5leHREYXRhKVxuICAgIHN1YnNjaGVtYS5lcnJvclBhdGggPSBzdHJgJHtlcnJvclBhdGh9JHtnZXRFcnJvclBhdGgoZGF0YVByb3AsIGRwVHlwZSwgb3B0cy5qc1Byb3BlcnR5U3ludGF4KX1gXG4gICAgc3Vic2NoZW1hLnBhcmVudERhdGFQcm9wZXJ0eSA9IF9gJHtkYXRhUHJvcH1gXG4gICAgc3Vic2NoZW1hLmRhdGFQYXRoQXJyID0gWy4uLmRhdGFQYXRoQXJyLCBzdWJzY2hlbWEucGFyZW50RGF0YVByb3BlcnR5XVxuICB9XG5cbiAgaWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG5leHREYXRhID0gZGF0YSBpbnN0YW5jZW9mIE5hbWUgPyBkYXRhIDogZ2VuLmxldChcImRhdGFcIiwgZGF0YSwgdHJ1ZSkgLy8gcmVwbGFjZWFibGUgaWYgdXNlZCBvbmNlP1xuICAgIGRhdGFDb250ZXh0UHJvcHMobmV4dERhdGEpXG4gICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gdW5kZWZpbmVkKSBzdWJzY2hlbWEucHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lXG4gICAgLy8gVE9ETyBzb21ldGhpbmcgaXMgcG9zc2libHkgd3JvbmcgaGVyZSB3aXRoIG5vdCBjaGFuZ2luZyBwYXJlbnREYXRhUHJvcGVydHkgYW5kIG5vdCBhcHBlbmRpbmcgZGF0YVBhdGhBcnJcbiAgfVxuXG4gIGlmIChkYXRhVHlwZXMpIHN1YnNjaGVtYS5kYXRhVHlwZXMgPSBkYXRhVHlwZXNcblxuICBmdW5jdGlvbiBkYXRhQ29udGV4dFByb3BzKF9uZXh0RGF0YTogTmFtZSk6IHZvaWQge1xuICAgIHN1YnNjaGVtYS5kYXRhID0gX25leHREYXRhXG4gICAgc3Vic2NoZW1hLmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDFcbiAgICBzdWJzY2hlbWEuZGF0YVR5cGVzID0gW11cbiAgICBpdC5kZWZpbmVkUHJvcGVydGllcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gICAgc3Vic2NoZW1hLnBhcmVudERhdGEgPSBpdC5kYXRhXG4gICAgc3Vic2NoZW1hLmRhdGFOYW1lcyA9IFsuLi5pdC5kYXRhTmFtZXMsIF9uZXh0RGF0YV1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kU3Vic2NoZW1hTW9kZShcbiAgc3Vic2NoZW1hOiBTdWJzY2hlbWFDb250ZXh0LFxuICB7anRkRGlzY3JpbWluYXRvciwganRkTWV0YWRhdGEsIGNvbXBvc2l0ZVJ1bGUsIGNyZWF0ZUVycm9ycywgYWxsRXJyb3JzfTogU3Vic2NoZW1hQXJnc1xuKTogdm9pZCB7XG4gIGlmIChjb21wb3NpdGVSdWxlICE9PSB1bmRlZmluZWQpIHN1YnNjaGVtYS5jb21wb3NpdGVSdWxlID0gY29tcG9zaXRlUnVsZVxuICBpZiAoY3JlYXRlRXJyb3JzICE9PSB1bmRlZmluZWQpIHN1YnNjaGVtYS5jcmVhdGVFcnJvcnMgPSBjcmVhdGVFcnJvcnNcbiAgaWYgKGFsbEVycm9ycyAhPT0gdW5kZWZpbmVkKSBzdWJzY2hlbWEuYWxsRXJyb3JzID0gYWxsRXJyb3JzXG4gIHN1YnNjaGVtYS5qdGREaXNjcmltaW5hdG9yID0ganRkRGlzY3JpbWluYXRvciAvLyBub3QgaW5oZXJpdGVkXG4gIHN1YnNjaGVtYS5qdGRNZXRhZGF0YSA9IGp0ZE1ldGFkYXRhIC8vIG5vdCBpbmhlcml0ZWRcbn1cbiIsICIndXNlIHN0cmljdCc7XG5cbi8vIGRvIG5vdCBlZGl0IC5qcyBmaWxlcyBkaXJlY3RseSAtIGVkaXQgc3JjL2luZGV4LmpzdFxuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnICYmIHR5cGVvZiBiID09ICdvYmplY3QnKSB7XG4gICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIHZhciBsZW5ndGgsIGksIGtleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICBpZiAoIWVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuXG4gICAgaWYgKGEuY29uc3RydWN0b3IgPT09IFJlZ0V4cCkgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xuICAgIGlmIChhLnZhbHVlT2YgIT09IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZikgcmV0dXJuIGEudmFsdWVPZigpID09PSBiLnZhbHVlT2YoKTtcbiAgICBpZiAoYS50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykgcmV0dXJuIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghZXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0cnVlIGlmIGJvdGggTmFOLCBmYWxzZSBvdGhlcndpc2VcbiAgcmV0dXJuIGEhPT1hICYmIGIhPT1iO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciB0cmF2ZXJzZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNjaGVtYSwgb3B0cywgY2IpIHtcbiAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHYwLjMuMSBhbmQgZWFybGllci5cbiAgaWYgKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgY2IgPSBvcHRzLmNiIHx8IGNiO1xuICB2YXIgcHJlID0gKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSA/IGNiIDogY2IucHJlIHx8IGZ1bmN0aW9uKCkge307XG4gIHZhciBwb3N0ID0gY2IucG9zdCB8fCBmdW5jdGlvbigpIHt9O1xuXG4gIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwgJycsIHNjaGVtYSk7XG59O1xuXG5cbnRyYXZlcnNlLmtleXdvcmRzID0ge1xuICBhZGRpdGlvbmFsSXRlbXM6IHRydWUsXG4gIGl0ZW1zOiB0cnVlLFxuICBjb250YWluczogdHJ1ZSxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUsXG4gIHByb3BlcnR5TmFtZXM6IHRydWUsXG4gIG5vdDogdHJ1ZSxcbiAgaWY6IHRydWUsXG4gIHRoZW46IHRydWUsXG4gIGVsc2U6IHRydWVcbn07XG5cbnRyYXZlcnNlLmFycmF5S2V5d29yZHMgPSB7XG4gIGl0ZW1zOiB0cnVlLFxuICBhbGxPZjogdHJ1ZSxcbiAgYW55T2Y6IHRydWUsXG4gIG9uZU9mOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5wcm9wc0tleXdvcmRzID0ge1xuICAkZGVmczogdHJ1ZSxcbiAgZGVmaW5pdGlvbnM6IHRydWUsXG4gIHByb3BlcnRpZXM6IHRydWUsXG4gIHBhdHRlcm5Qcm9wZXJ0aWVzOiB0cnVlLFxuICBkZXBlbmRlbmNpZXM6IHRydWVcbn07XG5cbnRyYXZlcnNlLnNraXBLZXl3b3JkcyA9IHtcbiAgZGVmYXVsdDogdHJ1ZSxcbiAgZW51bTogdHJ1ZSxcbiAgY29uc3Q6IHRydWUsXG4gIHJlcXVpcmVkOiB0cnVlLFxuICBtYXhpbXVtOiB0cnVlLFxuICBtaW5pbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNYXhpbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNaW5pbXVtOiB0cnVlLFxuICBtdWx0aXBsZU9mOiB0cnVlLFxuICBtYXhMZW5ndGg6IHRydWUsXG4gIG1pbkxlbmd0aDogdHJ1ZSxcbiAgcGF0dGVybjogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxuICBtYXhJdGVtczogdHJ1ZSxcbiAgbWluSXRlbXM6IHRydWUsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICBtYXhQcm9wZXJ0aWVzOiB0cnVlLFxuICBtaW5Qcm9wZXJ0aWVzOiB0cnVlXG59O1xuXG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwganNvblB0ciwgcm9vdFNjaGVtYSwgcGFyZW50SnNvblB0ciwgcGFyZW50S2V5d29yZCwgcGFyZW50U2NoZW1hLCBrZXlJbmRleCkge1xuICBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIHByZShzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIHZhciBzY2ggPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaCkpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0cmF2ZXJzZS5hcnJheUtleXdvcmRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHNjaC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtpXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2UucHJvcHNLZXl3b3Jkcykge1xuICAgICAgICBpZiAoc2NoICYmIHR5cGVvZiBzY2ggPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHNjaClcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtwcm9wXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGVzY2FwZUpzb25QdHIocHJvcCksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2Uua2V5d29yZHMgfHwgKG9wdHMuYWxsS2V5cyAmJiAhKGtleSBpbiB0cmF2ZXJzZS5za2lwS2V5d29yZHMpKSkge1xuICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2gsIGpzb25QdHIgKyAnLycgKyBrZXksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcG9zdChzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlSnNvblB0cihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7QW55U2NoZW1hLCBBbnlTY2hlbWFPYmplY3QsIFVyaVJlc29sdmVyfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUgQWp2IGZyb20gXCIuLi9hanZcIlxuaW1wb3J0IHR5cGUge1VSSUNvbXBvbmVudH0gZnJvbSBcImZhc3QtdXJpXCJcbmltcG9ydCB7ZWFjaEl0ZW19IGZyb20gXCIuL3V0aWxcIlxuaW1wb3J0ICogYXMgZXF1YWwgZnJvbSBcImZhc3QtZGVlcC1lcXVhbFwiXG5pbXBvcnQgKiBhcyB0cmF2ZXJzZSBmcm9tIFwianNvbi1zY2hlbWEtdHJhdmVyc2VcIlxuXG4vLyB0aGUgaGFzaCBvZiBsb2NhbCByZWZlcmVuY2VzIGluc2lkZSB0aGUgc2NoZW1hIChjcmVhdGVkIGJ5IGdldFNjaGVtYVJlZnMpLCB1c2VkIGZvciBpbmxpbmUgcmVzb2x1dGlvblxuZXhwb3J0IHR5cGUgTG9jYWxSZWZzID0ge1tSZWYgaW4gc3RyaW5nXT86IEFueVNjaGVtYU9iamVjdH1cblxuLy8gVE9ETyByZWZhY3RvciB0byB1c2Uga2V5d29yZCBkZWZpbml0aW9uc1xuY29uc3QgU0lNUExFX0lOTElORUQgPSBuZXcgU2V0KFtcbiAgXCJ0eXBlXCIsXG4gIFwiZm9ybWF0XCIsXG4gIFwicGF0dGVyblwiLFxuICBcIm1heExlbmd0aFwiLFxuICBcIm1pbkxlbmd0aFwiLFxuICBcIm1heFByb3BlcnRpZXNcIixcbiAgXCJtaW5Qcm9wZXJ0aWVzXCIsXG4gIFwibWF4SXRlbXNcIixcbiAgXCJtaW5JdGVtc1wiLFxuICBcIm1heGltdW1cIixcbiAgXCJtaW5pbXVtXCIsXG4gIFwidW5pcXVlSXRlbXNcIixcbiAgXCJtdWx0aXBsZU9mXCIsXG4gIFwicmVxdWlyZWRcIixcbiAgXCJlbnVtXCIsXG4gIFwiY29uc3RcIixcbl0pXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmxpbmVSZWYoc2NoZW1hOiBBbnlTY2hlbWEsIGxpbWl0OiBib29sZWFuIHwgbnVtYmVyID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHRydWVcbiAgaWYgKGxpbWl0ID09PSB0cnVlKSByZXR1cm4gIWhhc1JlZihzY2hlbWEpXG4gIGlmICghbGltaXQpIHJldHVybiBmYWxzZVxuICByZXR1cm4gY291bnRLZXlzKHNjaGVtYSkgPD0gbGltaXRcbn1cblxuY29uc3QgUkVGX0tFWVdPUkRTID0gbmV3IFNldChbXG4gIFwiJHJlZlwiLFxuICBcIiRyZWN1cnNpdmVSZWZcIixcbiAgXCIkcmVjdXJzaXZlQW5jaG9yXCIsXG4gIFwiJGR5bmFtaWNSZWZcIixcbiAgXCIkZHluYW1pY0FuY2hvclwiLFxuXSlcblxuZnVuY3Rpb24gaGFzUmVmKHNjaGVtYTogQW55U2NoZW1hT2JqZWN0KTogYm9vbGVhbiB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkge1xuICAgIGlmIChSRUZfS0VZV09SRFMuaGFzKGtleSkpIHJldHVybiB0cnVlXG4gICAgY29uc3Qgc2NoID0gc2NoZW1hW2tleV1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2gpICYmIHNjaC5zb21lKGhhc1JlZikpIHJldHVybiB0cnVlXG4gICAgaWYgKHR5cGVvZiBzY2ggPT0gXCJvYmplY3RcIiAmJiBoYXNSZWYoc2NoKSkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gY291bnRLZXlzKHNjaGVtYTogQW55U2NoZW1hT2JqZWN0KTogbnVtYmVyIHtcbiAgbGV0IGNvdW50ID0gMFxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICBpZiAoa2V5ID09PSBcIiRyZWZcIikgcmV0dXJuIEluZmluaXR5XG4gICAgY291bnQrK1xuICAgIGlmIChTSU1QTEVfSU5MSU5FRC5oYXMoa2V5KSkgY29udGludWVcbiAgICBpZiAodHlwZW9mIHNjaGVtYVtrZXldID09IFwib2JqZWN0XCIpIHtcbiAgICAgIGVhY2hJdGVtKHNjaGVtYVtrZXldLCAoc2NoKSA9PiAoY291bnQgKz0gY291bnRLZXlzKHNjaCkpKVxuICAgIH1cbiAgICBpZiAoY291bnQgPT09IEluZmluaXR5KSByZXR1cm4gSW5maW5pdHlcbiAgfVxuICByZXR1cm4gY291bnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxQYXRoKHJlc29sdmVyOiBVcmlSZXNvbHZlciwgaWQgPSBcIlwiLCBub3JtYWxpemU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKG5vcm1hbGl6ZSAhPT0gZmFsc2UpIGlkID0gbm9ybWFsaXplSWQoaWQpXG4gIGNvbnN0IHAgPSByZXNvbHZlci5wYXJzZShpZClcbiAgcmV0dXJuIF9nZXRGdWxsUGF0aChyZXNvbHZlciwgcClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9nZXRGdWxsUGF0aChyZXNvbHZlcjogVXJpUmVzb2x2ZXIsIHA6IFVSSUNvbXBvbmVudCk6IHN0cmluZyB7XG4gIGNvbnN0IHNlcmlhbGl6ZWQgPSByZXNvbHZlci5zZXJpYWxpemUocClcbiAgcmV0dXJuIHNlcmlhbGl6ZWQuc3BsaXQoXCIjXCIpWzBdICsgXCIjXCJcbn1cblxuY29uc3QgVFJBSUxJTkdfU0xBU0hfSEFTSCA9IC8jXFwvPyQvXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWQoaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiBpZCA/IGlkLnJlcGxhY2UoVFJBSUxJTkdfU0xBU0hfSEFTSCwgXCJcIikgOiBcIlwiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXJsKHJlc29sdmVyOiBVcmlSZXNvbHZlciwgYmFzZUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZCA9IG5vcm1hbGl6ZUlkKGlkKVxuICByZXR1cm4gcmVzb2x2ZXIucmVzb2x2ZShiYXNlSWQsIGlkKVxufVxuXG5jb25zdCBBTkNIT1IgPSAvXlthLXpfXVstYS16MC05Ll9dKiQvaVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NoZW1hUmVmcyh0aGlzOiBBanYsIHNjaGVtYTogQW55U2NoZW1hLCBiYXNlSWQ6IHN0cmluZyk6IExvY2FsUmVmcyB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09IFwiYm9vbGVhblwiKSByZXR1cm4ge31cbiAgY29uc3Qge3NjaGVtYUlkLCB1cmlSZXNvbHZlcn0gPSB0aGlzLm9wdHNcbiAgY29uc3Qgc2NoSWQgPSBub3JtYWxpemVJZChzY2hlbWFbc2NoZW1hSWRdIHx8IGJhc2VJZClcbiAgY29uc3QgYmFzZUlkczoge1tKc29uUHRyIGluIHN0cmluZ10/OiBzdHJpbmd9ID0ge1wiXCI6IHNjaElkfVxuICBjb25zdCBwYXRoUHJlZml4ID0gZ2V0RnVsbFBhdGgodXJpUmVzb2x2ZXIsIHNjaElkLCBmYWxzZSlcbiAgY29uc3QgbG9jYWxSZWZzOiBMb2NhbFJlZnMgPSB7fVxuICBjb25zdCBzY2hlbWFSZWZzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIHRyYXZlcnNlKHNjaGVtYSwge2FsbEtleXM6IHRydWV9LCAoc2NoLCBqc29uUHRyLCBfLCBwYXJlbnRKc29uUHRyKSA9PiB7XG4gICAgaWYgKHBhcmVudEpzb25QdHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG4gICAgY29uc3QgZnVsbFBhdGggPSBwYXRoUHJlZml4ICsganNvblB0clxuICAgIGxldCBpbm5lckJhc2VJZCA9IGJhc2VJZHNbcGFyZW50SnNvblB0cl1cbiAgICBpZiAodHlwZW9mIHNjaFtzY2hlbWFJZF0gPT0gXCJzdHJpbmdcIikgaW5uZXJCYXNlSWQgPSBhZGRSZWYuY2FsbCh0aGlzLCBzY2hbc2NoZW1hSWRdKVxuICAgIGFkZEFuY2hvci5jYWxsKHRoaXMsIHNjaC4kYW5jaG9yKVxuICAgIGFkZEFuY2hvci5jYWxsKHRoaXMsIHNjaC4kZHluYW1pY0FuY2hvcilcbiAgICBiYXNlSWRzW2pzb25QdHJdID0gaW5uZXJCYXNlSWRcblxuICAgIGZ1bmN0aW9uIGFkZFJlZih0aGlzOiBBanYsIHJlZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbiAgICAgIGNvbnN0IF9yZXNvbHZlID0gdGhpcy5vcHRzLnVyaVJlc29sdmVyLnJlc29sdmVcbiAgICAgIHJlZiA9IG5vcm1hbGl6ZUlkKGlubmVyQmFzZUlkID8gX3Jlc29sdmUoaW5uZXJCYXNlSWQsIHJlZikgOiByZWYpXG4gICAgICBpZiAoc2NoZW1hUmVmcy5oYXMocmVmKSkgdGhyb3cgYW1iaWd1b3MocmVmKVxuICAgICAgc2NoZW1hUmVmcy5hZGQocmVmKVxuICAgICAgbGV0IHNjaE9yUmVmID0gdGhpcy5yZWZzW3JlZl1cbiAgICAgIGlmICh0eXBlb2Ygc2NoT3JSZWYgPT0gXCJzdHJpbmdcIikgc2NoT3JSZWYgPSB0aGlzLnJlZnNbc2NoT3JSZWZdXG4gICAgICBpZiAodHlwZW9mIHNjaE9yUmVmID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY2hlY2tBbWJpZ3Vvc1JlZihzY2gsIHNjaE9yUmVmLnNjaGVtYSwgcmVmKVxuICAgICAgfSBlbHNlIGlmIChyZWYgIT09IG5vcm1hbGl6ZUlkKGZ1bGxQYXRoKSkge1xuICAgICAgICBpZiAocmVmWzBdID09PSBcIiNcIikge1xuICAgICAgICAgIGNoZWNrQW1iaWd1b3NSZWYoc2NoLCBsb2NhbFJlZnNbcmVmXSwgcmVmKVxuICAgICAgICAgIGxvY2FsUmVmc1tyZWZdID0gc2NoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZzW3JlZl0gPSBmdWxsUGF0aFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVmXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW5jaG9yKHRoaXM6IEFqdiwgYW5jaG9yOiB1bmtub3duKTogdm9pZCB7XG4gICAgICBpZiAodHlwZW9mIGFuY2hvciA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICghQU5DSE9SLnRlc3QoYW5jaG9yKSkgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFuY2hvciBcIiR7YW5jaG9yfVwiYClcbiAgICAgICAgYWRkUmVmLmNhbGwodGhpcywgYCMke2FuY2hvcn1gKVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gbG9jYWxSZWZzXG5cbiAgZnVuY3Rpb24gY2hlY2tBbWJpZ3Vvc1JlZihzY2gxOiBBbnlTY2hlbWEsIHNjaDI6IEFueVNjaGVtYSB8IHVuZGVmaW5lZCwgcmVmOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2NoMiAhPT0gdW5kZWZpbmVkICYmICFlcXVhbChzY2gxLCBzY2gyKSkgdGhyb3cgYW1iaWd1b3MocmVmKVxuICB9XG5cbiAgZnVuY3Rpb24gYW1iaWd1b3MocmVmOiBzdHJpbmcpOiBFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgcmVmZXJlbmNlIFwiJHtyZWZ9XCIgcmVzb2x2ZXMgdG8gbW9yZSB0aGFuIG9uZSBzY2hlbWFgKVxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBBbnlTY2hlbWEsXG4gIEFueVNjaGVtYU9iamVjdCxcbiAgS2V5d29yZEVycm9yQ3h0LFxuICBLZXl3b3JkQ3h0UGFyYW1zLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYUN4dCwgU2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi5cIlxuaW1wb3J0IHR5cGUge0luc3RhbmNlT3B0aW9uc30gZnJvbSBcIi4uLy4uL2NvcmVcIlxuaW1wb3J0IHtib29sT3JFbXB0eVNjaGVtYSwgdG9wQm9vbE9yRW1wdHlTY2hlbWF9IGZyb20gXCIuL2Jvb2xTY2hlbWFcIlxuaW1wb3J0IHtjb2VyY2VBbmRDaGVja0RhdGFUeXBlLCBnZXRTY2hlbWFUeXBlc30gZnJvbSBcIi4vZGF0YVR5cGVcIlxuaW1wb3J0IHtzaG91bGRVc2VHcm91cCwgc2hvdWxkVXNlUnVsZX0gZnJvbSBcIi4vYXBwbGljYWJpbGl0eVwiXG5pbXBvcnQge2NoZWNrRGF0YVR5cGUsIGNoZWNrRGF0YVR5cGVzLCByZXBvcnRUeXBlRXJyb3IsIERhdGFUeXBlfSBmcm9tIFwiLi9kYXRhVHlwZVwiXG5pbXBvcnQge2Fzc2lnbkRlZmF1bHRzfSBmcm9tIFwiLi9kZWZhdWx0c1wiXG5pbXBvcnQge2Z1bmNLZXl3b3JkQ29kZSwgbWFjcm9LZXl3b3JkQ29kZSwgdmFsaWRhdGVLZXl3b3JkVXNhZ2UsIHZhbGlkU2NoZW1hVHlwZX0gZnJvbSBcIi4va2V5d29yZFwiXG5pbXBvcnQge2dldFN1YnNjaGVtYSwgZXh0ZW5kU3Vic2NoZW1hRGF0YSwgU3Vic2NoZW1hQXJncywgZXh0ZW5kU3Vic2NoZW1hTW9kZX0gZnJvbSBcIi4vc3Vic2NoZW1hXCJcbmltcG9ydCB7XywgbmlsLCBzdHIsIG9yLCBub3QsIGdldFByb3BlcnR5LCBCbG9jaywgQ29kZSwgTmFtZSwgQ29kZUdlbn0gZnJvbSBcIi4uL2NvZGVnZW5cIlxuaW1wb3J0IE4gZnJvbSBcIi4uL25hbWVzXCJcbmltcG9ydCB7cmVzb2x2ZVVybH0gZnJvbSBcIi4uL3Jlc29sdmVcIlxuaW1wb3J0IHtcbiAgc2NoZW1hUmVmT3JWYWwsXG4gIHNjaGVtYUhhc1J1bGVzQnV0UmVmLFxuICBjaGVja1Vua25vd25SdWxlcyxcbiAgY2hlY2tTdHJpY3RNb2RlLFxuICB1bmVzY2FwZUpzb25Qb2ludGVyLFxuICBtZXJnZUV2YWx1YXRlZCxcbn0gZnJvbSBcIi4uL3V0aWxcIlxuaW1wb3J0IHR5cGUge0pTT05UeXBlLCBSdWxlLCBSdWxlR3JvdXB9IGZyb20gXCIuLi9ydWxlc1wiXG5pbXBvcnQge1xuICBFcnJvclBhdGhzLFxuICByZXBvcnRFcnJvcixcbiAgcmVwb3J0RXh0cmFFcnJvcixcbiAgcmVzZXRFcnJvcnNDb3VudCxcbiAga2V5d29yZCREYXRhRXJyb3IsXG59IGZyb20gXCIuLi9lcnJvcnNcIlxuXG4vLyBzY2hlbWEgY29tcGlsYXRpb24gLSBnZW5lcmF0ZXMgdmFsaWRhdGlvbiBmdW5jdGlvbiwgc3Vic2NoZW1hQ29kZSAoYmVsb3cpIGlzIHVzZWQgZm9yIHN1YnNjaGVtYXNcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZ1bmN0aW9uQ29kZShpdDogU2NoZW1hQ3h0KTogdm9pZCB7XG4gIGlmIChpc1NjaGVtYU9iaihpdCkpIHtcbiAgICBjaGVja0tleXdvcmRzKGl0KVxuICAgIGlmIChzY2hlbWFDeHRIYXNSdWxlcyhpdCkpIHtcbiAgICAgIHRvcFNjaGVtYU9iakNvZGUoaXQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAgdmFsaWRhdGVGdW5jdGlvbihpdCwgKCkgPT4gdG9wQm9vbE9yRW1wdHlTY2hlbWEoaXQpKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUZ1bmN0aW9uKFxuICB7Z2VuLCB2YWxpZGF0ZU5hbWUsIHNjaGVtYSwgc2NoZW1hRW52LCBvcHRzfTogU2NoZW1hQ3h0LFxuICBib2R5OiBCbG9ja1xuKTogdm9pZCB7XG4gIGlmIChvcHRzLmNvZGUuZXM1KSB7XG4gICAgZ2VuLmZ1bmModmFsaWRhdGVOYW1lLCBfYCR7Ti5kYXRhfSwgJHtOLnZhbEN4dH1gLCBzY2hlbWFFbnYuJGFzeW5jLCAoKSA9PiB7XG4gICAgICBnZW4uY29kZShfYFwidXNlIHN0cmljdFwiOyAke2Z1bmNTb3VyY2VVcmwoc2NoZW1hLCBvcHRzKX1gKVxuICAgICAgZGVzdHJ1Y3R1cmVWYWxDeHRFUzUoZ2VuLCBvcHRzKVxuICAgICAgZ2VuLmNvZGUoYm9keSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGdlbi5mdW5jKHZhbGlkYXRlTmFtZSwgX2Ake04uZGF0YX0sICR7ZGVzdHJ1Y3R1cmVWYWxDeHQob3B0cyl9YCwgc2NoZW1hRW52LiRhc3luYywgKCkgPT5cbiAgICAgIGdlbi5jb2RlKGZ1bmNTb3VyY2VVcmwoc2NoZW1hLCBvcHRzKSkuY29kZShib2R5KVxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXN0cnVjdHVyZVZhbEN4dChvcHRzOiBJbnN0YW5jZU9wdGlvbnMpOiBDb2RlIHtcbiAgcmV0dXJuIF9geyR7Ti5pbnN0YW5jZVBhdGh9PVwiXCIsICR7Ti5wYXJlbnREYXRhfSwgJHtOLnBhcmVudERhdGFQcm9wZXJ0eX0sICR7Ti5yb290RGF0YX09JHtcbiAgICBOLmRhdGFcbiAgfSR7b3B0cy5keW5hbWljUmVmID8gX2AsICR7Ti5keW5hbWljQW5jaG9yc309e31gIDogbmlsfX09e31gXG59XG5cbmZ1bmN0aW9uIGRlc3RydWN0dXJlVmFsQ3h0RVM1KGdlbjogQ29kZUdlbiwgb3B0czogSW5zdGFuY2VPcHRpb25zKTogdm9pZCB7XG4gIGdlbi5pZihcbiAgICBOLnZhbEN4dCxcbiAgICAoKSA9PiB7XG4gICAgICBnZW4udmFyKE4uaW5zdGFuY2VQYXRoLCBfYCR7Ti52YWxDeHR9LiR7Ti5pbnN0YW5jZVBhdGh9YClcbiAgICAgIGdlbi52YXIoTi5wYXJlbnREYXRhLCBfYCR7Ti52YWxDeHR9LiR7Ti5wYXJlbnREYXRhfWApXG4gICAgICBnZW4udmFyKE4ucGFyZW50RGF0YVByb3BlcnR5LCBfYCR7Ti52YWxDeHR9LiR7Ti5wYXJlbnREYXRhUHJvcGVydHl9YClcbiAgICAgIGdlbi52YXIoTi5yb290RGF0YSwgX2Ake04udmFsQ3h0fS4ke04ucm9vdERhdGF9YClcbiAgICAgIGlmIChvcHRzLmR5bmFtaWNSZWYpIGdlbi52YXIoTi5keW5hbWljQW5jaG9ycywgX2Ake04udmFsQ3h0fS4ke04uZHluYW1pY0FuY2hvcnN9YClcbiAgICB9LFxuICAgICgpID0+IHtcbiAgICAgIGdlbi52YXIoTi5pbnN0YW5jZVBhdGgsIF9gXCJcImApXG4gICAgICBnZW4udmFyKE4ucGFyZW50RGF0YSwgX2B1bmRlZmluZWRgKVxuICAgICAgZ2VuLnZhcihOLnBhcmVudERhdGFQcm9wZXJ0eSwgX2B1bmRlZmluZWRgKVxuICAgICAgZ2VuLnZhcihOLnJvb3REYXRhLCBOLmRhdGEpXG4gICAgICBpZiAob3B0cy5keW5hbWljUmVmKSBnZW4udmFyKE4uZHluYW1pY0FuY2hvcnMsIF9ge31gKVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiB0b3BTY2hlbWFPYmpDb2RlKGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3Qge3NjaGVtYSwgb3B0cywgZ2VufSA9IGl0XG4gIHZhbGlkYXRlRnVuY3Rpb24oaXQsICgpID0+IHtcbiAgICBpZiAob3B0cy4kY29tbWVudCAmJiBzY2hlbWEuJGNvbW1lbnQpIGNvbW1lbnRLZXl3b3JkKGl0KVxuICAgIGNoZWNrTm9EZWZhdWx0KGl0KVxuICAgIGdlbi5sZXQoTi52RXJyb3JzLCBudWxsKVxuICAgIGdlbi5sZXQoTi5lcnJvcnMsIDApXG4gICAgaWYgKG9wdHMudW5ldmFsdWF0ZWQpIHJlc2V0RXZhbHVhdGVkKGl0KVxuICAgIHR5cGVBbmRLZXl3b3JkcyhpdClcbiAgICByZXR1cm5SZXN1bHRzKGl0KVxuICB9KVxuICByZXR1cm5cbn1cblxuZnVuY3Rpb24gcmVzZXRFdmFsdWF0ZWQoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICAvLyBUT0RPIG1heWJlIHNvbWUgaG9vayB0byBleGVjdXRlIGl0IGluIHRoZSBlbmQgdG8gY2hlY2sgd2hldGhlciBwcm9wcy9pdGVtcyBhcmUgTmFtZSwgYXMgaW4gYXNzaWduRXZhbHVhdGVkXG4gIGNvbnN0IHtnZW4sIHZhbGlkYXRlTmFtZX0gPSBpdFxuICBpdC5ldmFsdWF0ZWQgPSBnZW4uY29uc3QoXCJldmFsdWF0ZWRcIiwgX2Ake3ZhbGlkYXRlTmFtZX0uZXZhbHVhdGVkYClcbiAgZ2VuLmlmKF9gJHtpdC5ldmFsdWF0ZWR9LmR5bmFtaWNQcm9wc2AsICgpID0+IGdlbi5hc3NpZ24oX2Ake2l0LmV2YWx1YXRlZH0ucHJvcHNgLCBfYHVuZGVmaW5lZGApKVxuICBnZW4uaWYoX2Ake2l0LmV2YWx1YXRlZH0uZHluYW1pY0l0ZW1zYCwgKCkgPT4gZ2VuLmFzc2lnbihfYCR7aXQuZXZhbHVhdGVkfS5pdGVtc2AsIF9gdW5kZWZpbmVkYCkpXG59XG5cbmZ1bmN0aW9uIGZ1bmNTb3VyY2VVcmwoc2NoZW1hOiBBbnlTY2hlbWEsIG9wdHM6IEluc3RhbmNlT3B0aW9ucyk6IENvZGUge1xuICBjb25zdCBzY2hJZCA9IHR5cGVvZiBzY2hlbWEgPT0gXCJvYmplY3RcIiAmJiBzY2hlbWFbb3B0cy5zY2hlbWFJZF1cbiAgcmV0dXJuIHNjaElkICYmIChvcHRzLmNvZGUuc291cmNlIHx8IG9wdHMuY29kZS5wcm9jZXNzKSA/IF9gLyojIHNvdXJjZVVSTD0ke3NjaElkfSAqL2AgOiBuaWxcbn1cblxuLy8gc2NoZW1hIGNvbXBpbGF0aW9uIC0gdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IHRvIGdlbmVyYXRlIGNvZGUgZm9yIHN1Yi1zY2hlbWFzXG5mdW5jdGlvbiBzdWJzY2hlbWFDb2RlKGl0OiBTY2hlbWFDeHQsIHZhbGlkOiBOYW1lKTogdm9pZCB7XG4gIGlmIChpc1NjaGVtYU9iaihpdCkpIHtcbiAgICBjaGVja0tleXdvcmRzKGl0KVxuICAgIGlmIChzY2hlbWFDeHRIYXNSdWxlcyhpdCkpIHtcbiAgICAgIHN1YlNjaGVtYU9iakNvZGUoaXQsIHZhbGlkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIGJvb2xPckVtcHR5U2NoZW1hKGl0LCB2YWxpZClcbn1cblxuZnVuY3Rpb24gc2NoZW1hQ3h0SGFzUnVsZXMoe3NjaGVtYSwgc2VsZn06IFNjaGVtYUN4dCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuICFzY2hlbWFcbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSBpZiAoc2VsZi5SVUxFUy5hbGxba2V5XSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGlzU2NoZW1hT2JqKGl0OiBTY2hlbWFDeHQpOiBpdCBpcyBTY2hlbWFPYmpDeHQge1xuICByZXR1cm4gdHlwZW9mIGl0LnNjaGVtYSAhPSBcImJvb2xlYW5cIlxufVxuXG5mdW5jdGlvbiBzdWJTY2hlbWFPYmpDb2RlKGl0OiBTY2hlbWFPYmpDeHQsIHZhbGlkOiBOYW1lKTogdm9pZCB7XG4gIGNvbnN0IHtzY2hlbWEsIGdlbiwgb3B0c30gPSBpdFxuICBpZiAob3B0cy4kY29tbWVudCAmJiBzY2hlbWEuJGNvbW1lbnQpIGNvbW1lbnRLZXl3b3JkKGl0KVxuICB1cGRhdGVDb250ZXh0KGl0KVxuICBjaGVja0FzeW5jU2NoZW1hKGl0KVxuICBjb25zdCBlcnJzQ291bnQgPSBnZW4uY29uc3QoXCJfZXJyc1wiLCBOLmVycm9ycylcbiAgdHlwZUFuZEtleXdvcmRzKGl0LCBlcnJzQ291bnQpXG4gIC8vIFRPRE8gdmFyXG4gIGdlbi52YXIodmFsaWQsIF9gJHtlcnJzQ291bnR9ID09PSAke04uZXJyb3JzfWApXG59XG5cbmZ1bmN0aW9uIGNoZWNrS2V5d29yZHMoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBjaGVja1Vua25vd25SdWxlcyhpdClcbiAgY2hlY2tSZWZzQW5kS2V5d29yZHMoaXQpXG59XG5cbmZ1bmN0aW9uIHR5cGVBbmRLZXl3b3JkcyhpdDogU2NoZW1hT2JqQ3h0LCBlcnJzQ291bnQ/OiBOYW1lKTogdm9pZCB7XG4gIGlmIChpdC5vcHRzLmp0ZCkgcmV0dXJuIHNjaGVtYUtleXdvcmRzKGl0LCBbXSwgZmFsc2UsIGVycnNDb3VudClcbiAgY29uc3QgdHlwZXMgPSBnZXRTY2hlbWFUeXBlcyhpdC5zY2hlbWEpXG4gIGNvbnN0IGNoZWNrZWRUeXBlcyA9IGNvZXJjZUFuZENoZWNrRGF0YVR5cGUoaXQsIHR5cGVzKVxuICBzY2hlbWFLZXl3b3JkcyhpdCwgdHlwZXMsICFjaGVja2VkVHlwZXMsIGVycnNDb3VudClcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWZzQW5kS2V5d29yZHMoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBjb25zdCB7c2NoZW1hLCBlcnJTY2hlbWFQYXRoLCBvcHRzLCBzZWxmfSA9IGl0XG4gIGlmIChzY2hlbWEuJHJlZiAmJiBvcHRzLmlnbm9yZUtleXdvcmRzV2l0aFJlZiAmJiBzY2hlbWFIYXNSdWxlc0J1dFJlZihzY2hlbWEsIHNlbGYuUlVMRVMpKSB7XG4gICAgc2VsZi5sb2dnZXIud2FybihgJHJlZjoga2V5d29yZHMgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIiR7ZXJyU2NoZW1hUGF0aH1cImApXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tOb0RlZmF1bHQoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBjb25zdCB7c2NoZW1hLCBvcHRzfSA9IGl0XG4gIGlmIChzY2hlbWEuZGVmYXVsdCAhPT0gdW5kZWZpbmVkICYmIG9wdHMudXNlRGVmYXVsdHMgJiYgb3B0cy5zdHJpY3RTY2hlbWEpIHtcbiAgICBjaGVja1N0cmljdE1vZGUoaXQsIFwiZGVmYXVsdCBpcyBpZ25vcmVkIGluIHRoZSBzY2hlbWEgcm9vdFwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBjb25zdCBzY2hJZCA9IGl0LnNjaGVtYVtpdC5vcHRzLnNjaGVtYUlkXVxuICBpZiAoc2NoSWQpIGl0LmJhc2VJZCA9IHJlc29sdmVVcmwoaXQub3B0cy51cmlSZXNvbHZlciwgaXQuYmFzZUlkLCBzY2hJZClcbn1cblxuZnVuY3Rpb24gY2hlY2tBc3luY1NjaGVtYShpdDogU2NoZW1hT2JqQ3h0KTogdm9pZCB7XG4gIGlmIChpdC5zY2hlbWEuJGFzeW5jICYmICFpdC5zY2hlbWFFbnYuJGFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoXCJhc3luYyBzY2hlbWEgaW4gc3luYyBzY2hlbWFcIilcbn1cblxuZnVuY3Rpb24gY29tbWVudEtleXdvcmQoe2dlbiwgc2NoZW1hRW52LCBzY2hlbWEsIGVyclNjaGVtYVBhdGgsIG9wdHN9OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3QgbXNnID0gc2NoZW1hLiRjb21tZW50XG4gIGlmIChvcHRzLiRjb21tZW50ID09PSB0cnVlKSB7XG4gICAgZ2VuLmNvZGUoX2Ake04uc2VsZn0ubG9nZ2VyLmxvZygke21zZ30pYClcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0cy4kY29tbWVudCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjb25zdCBzY2hlbWFQYXRoID0gc3RyYCR7ZXJyU2NoZW1hUGF0aH0vJGNvbW1lbnRgXG4gICAgY29uc3Qgcm9vdE5hbWUgPSBnZW4uc2NvcGVWYWx1ZShcInJvb3RcIiwge3JlZjogc2NoZW1hRW52LnJvb3R9KVxuICAgIGdlbi5jb2RlKF9gJHtOLnNlbGZ9Lm9wdHMuJGNvbW1lbnQoJHttc2d9LCAke3NjaGVtYVBhdGh9LCAke3Jvb3ROYW1lfS5zY2hlbWEpYClcbiAgfVxufVxuXG5mdW5jdGlvbiByZXR1cm5SZXN1bHRzKGl0OiBTY2hlbWFDeHQpOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgc2NoZW1hRW52LCB2YWxpZGF0ZU5hbWUsIFZhbGlkYXRpb25FcnJvciwgb3B0c30gPSBpdFxuICBpZiAoc2NoZW1hRW52LiRhc3luYykge1xuICAgIC8vIFRPRE8gYXNzaWduIHVuZXZhbHVhdGVkXG4gICAgZ2VuLmlmKFxuICAgICAgX2Ake04uZXJyb3JzfSA9PT0gMGAsXG4gICAgICAoKSA9PiBnZW4ucmV0dXJuKE4uZGF0YSksXG4gICAgICAoKSA9PiBnZW4udGhyb3coX2BuZXcgJHtWYWxpZGF0aW9uRXJyb3IgYXMgTmFtZX0oJHtOLnZFcnJvcnN9KWApXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIGdlbi5hc3NpZ24oX2Ake3ZhbGlkYXRlTmFtZX0uZXJyb3JzYCwgTi52RXJyb3JzKVxuICAgIGlmIChvcHRzLnVuZXZhbHVhdGVkKSBhc3NpZ25FdmFsdWF0ZWQoaXQpXG4gICAgZ2VuLnJldHVybihfYCR7Ti5lcnJvcnN9ID09PSAwYClcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NpZ25FdmFsdWF0ZWQoe2dlbiwgZXZhbHVhdGVkLCBwcm9wcywgaXRlbXN9OiBTY2hlbWFDeHQpOiB2b2lkIHtcbiAgaWYgKHByb3BzIGluc3RhbmNlb2YgTmFtZSkgZ2VuLmFzc2lnbihfYCR7ZXZhbHVhdGVkfS5wcm9wc2AsIHByb3BzKVxuICBpZiAoaXRlbXMgaW5zdGFuY2VvZiBOYW1lKSBnZW4uYXNzaWduKF9gJHtldmFsdWF0ZWR9Lml0ZW1zYCwgaXRlbXMpXG59XG5cbmZ1bmN0aW9uIHNjaGVtYUtleXdvcmRzKFxuICBpdDogU2NoZW1hT2JqQ3h0LFxuICB0eXBlczogSlNPTlR5cGVbXSxcbiAgdHlwZUVycm9yczogYm9vbGVhbixcbiAgZXJyc0NvdW50PzogTmFtZVxuKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYSwgZGF0YSwgYWxsRXJyb3JzLCBvcHRzLCBzZWxmfSA9IGl0XG4gIGNvbnN0IHtSVUxFU30gPSBzZWxmXG4gIGlmIChzY2hlbWEuJHJlZiAmJiAob3B0cy5pZ25vcmVLZXl3b3Jkc1dpdGhSZWYgfHwgIXNjaGVtYUhhc1J1bGVzQnV0UmVmKHNjaGVtYSwgUlVMRVMpKSkge1xuICAgIGdlbi5ibG9jaygoKSA9PiBrZXl3b3JkQ29kZShpdCwgXCIkcmVmXCIsIChSVUxFUy5hbGwuJHJlZiBhcyBSdWxlKS5kZWZpbml0aW9uKSkgLy8gVE9ETyB0eXBlY2FzdFxuICAgIHJldHVyblxuICB9XG4gIGlmICghb3B0cy5qdGQpIGNoZWNrU3RyaWN0VHlwZXMoaXQsIHR5cGVzKVxuICBnZW4uYmxvY2soKCkgPT4ge1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgUlVMRVMucnVsZXMpIGdyb3VwS2V5d29yZHMoZ3JvdXApXG4gICAgZ3JvdXBLZXl3b3JkcyhSVUxFUy5wb3N0KVxuICB9KVxuXG4gIGZ1bmN0aW9uIGdyb3VwS2V5d29yZHMoZ3JvdXA6IFJ1bGVHcm91cCk6IHZvaWQge1xuICAgIGlmICghc2hvdWxkVXNlR3JvdXAoc2NoZW1hLCBncm91cCkpIHJldHVyblxuICAgIGlmIChncm91cC50eXBlKSB7XG4gICAgICBnZW4uaWYoY2hlY2tEYXRhVHlwZShncm91cC50eXBlLCBkYXRhLCBvcHRzLnN0cmljdE51bWJlcnMpKVxuICAgICAgaXRlcmF0ZUtleXdvcmRzKGl0LCBncm91cClcbiAgICAgIGlmICh0eXBlcy5sZW5ndGggPT09IDEgJiYgdHlwZXNbMF0gPT09IGdyb3VwLnR5cGUgJiYgdHlwZUVycm9ycykge1xuICAgICAgICBnZW4uZWxzZSgpXG4gICAgICAgIHJlcG9ydFR5cGVFcnJvcihpdClcbiAgICAgIH1cbiAgICAgIGdlbi5lbmRJZigpXG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVLZXl3b3JkcyhpdCwgZ3JvdXApXG4gICAgfVxuICAgIC8vIFRPRE8gbWFrZSBpdCBcIm9rXCIgY2FsbD9cbiAgICBpZiAoIWFsbEVycm9ycykgZ2VuLmlmKF9gJHtOLmVycm9yc30gPT09ICR7ZXJyc0NvdW50IHx8IDB9YClcbiAgfVxufVxuXG5mdW5jdGlvbiBpdGVyYXRlS2V5d29yZHMoaXQ6IFNjaGVtYU9iakN4dCwgZ3JvdXA6IFJ1bGVHcm91cCk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZ2VuLFxuICAgIHNjaGVtYSxcbiAgICBvcHRzOiB7dXNlRGVmYXVsdHN9LFxuICB9ID0gaXRcbiAgaWYgKHVzZURlZmF1bHRzKSBhc3NpZ25EZWZhdWx0cyhpdCwgZ3JvdXAudHlwZSlcbiAgZ2VuLmJsb2NrKCgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgZ3JvdXAucnVsZXMpIHtcbiAgICAgIGlmIChzaG91bGRVc2VSdWxlKHNjaGVtYSwgcnVsZSkpIHtcbiAgICAgICAga2V5d29yZENvZGUoaXQsIHJ1bGUua2V5d29yZCwgcnVsZS5kZWZpbml0aW9uLCBncm91cC50eXBlKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gY2hlY2tTdHJpY3RUeXBlcyhpdDogU2NoZW1hT2JqQ3h0LCB0eXBlczogSlNPTlR5cGVbXSk6IHZvaWQge1xuICBpZiAoaXQuc2NoZW1hRW52Lm1ldGEgfHwgIWl0Lm9wdHMuc3RyaWN0VHlwZXMpIHJldHVyblxuICBjaGVja0NvbnRleHRUeXBlcyhpdCwgdHlwZXMpXG4gIGlmICghaXQub3B0cy5hbGxvd1VuaW9uVHlwZXMpIGNoZWNrTXVsdGlwbGVUeXBlcyhpdCwgdHlwZXMpXG4gIGNoZWNrS2V5d29yZFR5cGVzKGl0LCBpdC5kYXRhVHlwZXMpXG59XG5cbmZ1bmN0aW9uIGNoZWNrQ29udGV4dFR5cGVzKGl0OiBTY2hlbWFPYmpDeHQsIHR5cGVzOiBKU09OVHlwZVtdKTogdm9pZCB7XG4gIGlmICghdHlwZXMubGVuZ3RoKSByZXR1cm5cbiAgaWYgKCFpdC5kYXRhVHlwZXMubGVuZ3RoKSB7XG4gICAgaXQuZGF0YVR5cGVzID0gdHlwZXNcbiAgICByZXR1cm5cbiAgfVxuICB0eXBlcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgaWYgKCFpbmNsdWRlc1R5cGUoaXQuZGF0YVR5cGVzLCB0KSkge1xuICAgICAgc3RyaWN0VHlwZXNFcnJvcihpdCwgYHR5cGUgXCIke3R9XCIgbm90IGFsbG93ZWQgYnkgY29udGV4dCBcIiR7aXQuZGF0YVR5cGVzLmpvaW4oXCIsXCIpfVwiYClcbiAgICB9XG4gIH0pXG4gIG5hcnJvd1NjaGVtYVR5cGVzKGl0LCB0eXBlcylcbn1cblxuZnVuY3Rpb24gY2hlY2tNdWx0aXBsZVR5cGVzKGl0OiBTY2hlbWFPYmpDeHQsIHRzOiBKU09OVHlwZVtdKTogdm9pZCB7XG4gIGlmICh0cy5sZW5ndGggPiAxICYmICEodHMubGVuZ3RoID09PSAyICYmIHRzLmluY2x1ZGVzKFwibnVsbFwiKSkpIHtcbiAgICBzdHJpY3RUeXBlc0Vycm9yKGl0LCBcInVzZSBhbGxvd1VuaW9uVHlwZXMgdG8gYWxsb3cgdW5pb24gdHlwZSBrZXl3b3JkXCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tLZXl3b3JkVHlwZXMoaXQ6IFNjaGVtYU9iakN4dCwgdHM6IEpTT05UeXBlW10pOiB2b2lkIHtcbiAgY29uc3QgcnVsZXMgPSBpdC5zZWxmLlJVTEVTLmFsbFxuICBmb3IgKGNvbnN0IGtleXdvcmQgaW4gcnVsZXMpIHtcbiAgICBjb25zdCBydWxlID0gcnVsZXNba2V5d29yZF1cbiAgICBpZiAodHlwZW9mIHJ1bGUgPT0gXCJvYmplY3RcIiAmJiBzaG91bGRVc2VSdWxlKGl0LnNjaGVtYSwgcnVsZSkpIHtcbiAgICAgIGNvbnN0IHt0eXBlfSA9IHJ1bGUuZGVmaW5pdGlvblxuICAgICAgaWYgKHR5cGUubGVuZ3RoICYmICF0eXBlLnNvbWUoKHQpID0+IGhhc0FwcGxpY2FibGVUeXBlKHRzLCB0KSkpIHtcbiAgICAgICAgc3RyaWN0VHlwZXNFcnJvcihpdCwgYG1pc3NpbmcgdHlwZSBcIiR7dHlwZS5qb2luKFwiLFwiKX1cIiBmb3Iga2V5d29yZCBcIiR7a2V5d29yZH1cImApXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc0FwcGxpY2FibGVUeXBlKHNjaFRzOiBKU09OVHlwZVtdLCBrd2RUOiBKU09OVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc2NoVHMuaW5jbHVkZXMoa3dkVCkgfHwgKGt3ZFQgPT09IFwibnVtYmVyXCIgJiYgc2NoVHMuaW5jbHVkZXMoXCJpbnRlZ2VyXCIpKVxufVxuXG5mdW5jdGlvbiBpbmNsdWRlc1R5cGUodHM6IEpTT05UeXBlW10sIHQ6IEpTT05UeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0cy5pbmNsdWRlcyh0KSB8fCAodCA9PT0gXCJpbnRlZ2VyXCIgJiYgdHMuaW5jbHVkZXMoXCJudW1iZXJcIikpXG59XG5cbmZ1bmN0aW9uIG5hcnJvd1NjaGVtYVR5cGVzKGl0OiBTY2hlbWFPYmpDeHQsIHdpdGhUeXBlczogSlNPTlR5cGVbXSk6IHZvaWQge1xuICBjb25zdCB0czogSlNPTlR5cGVbXSA9IFtdXG4gIGZvciAoY29uc3QgdCBvZiBpdC5kYXRhVHlwZXMpIHtcbiAgICBpZiAoaW5jbHVkZXNUeXBlKHdpdGhUeXBlcywgdCkpIHRzLnB1c2godClcbiAgICBlbHNlIGlmICh3aXRoVHlwZXMuaW5jbHVkZXMoXCJpbnRlZ2VyXCIpICYmIHQgPT09IFwibnVtYmVyXCIpIHRzLnB1c2goXCJpbnRlZ2VyXCIpXG4gIH1cbiAgaXQuZGF0YVR5cGVzID0gdHNcbn1cblxuZnVuY3Rpb24gc3RyaWN0VHlwZXNFcnJvcihpdDogU2NoZW1hT2JqQ3h0LCBtc2c6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBzY2hlbWFQYXRoID0gaXQuc2NoZW1hRW52LmJhc2VJZCArIGl0LmVyclNjaGVtYVBhdGhcbiAgbXNnICs9IGAgYXQgXCIke3NjaGVtYVBhdGh9XCIgKHN0cmljdFR5cGVzKWBcbiAgY2hlY2tTdHJpY3RNb2RlKGl0LCBtc2csIGl0Lm9wdHMuc3RyaWN0VHlwZXMpXG59XG5cbmV4cG9ydCBjbGFzcyBLZXl3b3JkQ3h0IGltcGxlbWVudHMgS2V5d29yZEVycm9yQ3h0IHtcbiAgcmVhZG9ubHkgZ2VuOiBDb2RlR2VuXG4gIHJlYWRvbmx5IGFsbEVycm9ycz86IGJvb2xlYW5cbiAgcmVhZG9ubHkga2V5d29yZDogc3RyaW5nXG4gIHJlYWRvbmx5IGRhdGE6IE5hbWUgLy8gTmFtZSByZWZlcmVuY2luZyB0aGUgY3VycmVudCBsZXZlbCBvZiB0aGUgZGF0YSBpbnN0YW5jZVxuICByZWFkb25seSAkZGF0YT86IHN0cmluZyB8IGZhbHNlXG4gIHNjaGVtYTogYW55IC8vIGtleXdvcmQgdmFsdWUgaW4gdGhlIHNjaGVtYVxuICByZWFkb25seSBzY2hlbWFWYWx1ZTogQ29kZSB8IG51bWJlciB8IGJvb2xlYW4gLy8gQ29kZSByZWZlcmVuY2UgdG8ga2V5d29yZCBzY2hlbWEgdmFsdWUgb3IgcHJpbWl0aXZlIHZhbHVlXG4gIHJlYWRvbmx5IHNjaGVtYUNvZGU6IENvZGUgfCBudW1iZXIgfCBib29sZWFuIC8vIENvZGUgcmVmZXJlbmNlIHRvIHJlc29sdmVkIHNjaGVtYSB2YWx1ZSAoZGlmZmVyZW50IGlmIHNjaGVtYSBpcyAkZGF0YSlcbiAgcmVhZG9ubHkgc2NoZW1hVHlwZTogSlNPTlR5cGVbXSAvLyBhbGxvd2VkIHR5cGUocykgb2Yga2V5d29yZCB2YWx1ZSBpbiB0aGUgc2NoZW1hXG4gIHJlYWRvbmx5IHBhcmVudFNjaGVtYTogQW55U2NoZW1hT2JqZWN0XG4gIHJlYWRvbmx5IGVycnNDb3VudD86IE5hbWUgLy8gTmFtZSByZWZlcmVuY2UgdG8gdGhlIG51bWJlciBvZiB2YWxpZGF0aW9uIGVycm9ycyBjb2xsZWN0ZWQgYmVmb3JlIHRoaXMga2V5d29yZCxcbiAgLy8gcmVxdWlyZXMgb3B0aW9uIHRyYWNrRXJyb3JzIGluIGtleXdvcmQgZGVmaW5pdGlvblxuICBwYXJhbXM6IEtleXdvcmRDeHRQYXJhbXMgLy8gb2JqZWN0IHRvIHBhc3MgcGFyYW1ldGVycyB0byBlcnJvciBtZXNzYWdlcyBmcm9tIGtleXdvcmQgY29kZVxuICByZWFkb25seSBpdDogU2NoZW1hT2JqQ3h0IC8vIHNjaGVtYSBjb21waWxhdGlvbiBjb250ZXh0IChzY2hlbWEgaXMgZ3VhcmFudGVlZCB0byBiZSBhbiBvYmplY3QsIG5vdCBib29sZWFuKVxuICByZWFkb25seSBkZWY6IEFkZGVkS2V5d29yZERlZmluaXRpb25cblxuICBjb25zdHJ1Y3RvcihpdDogU2NoZW1hT2JqQ3h0LCBkZWY6IEFkZGVkS2V5d29yZERlZmluaXRpb24sIGtleXdvcmQ6IHN0cmluZykge1xuICAgIHZhbGlkYXRlS2V5d29yZFVzYWdlKGl0LCBkZWYsIGtleXdvcmQpXG4gICAgdGhpcy5nZW4gPSBpdC5nZW5cbiAgICB0aGlzLmFsbEVycm9ycyA9IGl0LmFsbEVycm9yc1xuICAgIHRoaXMua2V5d29yZCA9IGtleXdvcmRcbiAgICB0aGlzLmRhdGEgPSBpdC5kYXRhXG4gICAgdGhpcy5zY2hlbWEgPSBpdC5zY2hlbWFba2V5d29yZF1cbiAgICB0aGlzLiRkYXRhID0gZGVmLiRkYXRhICYmIGl0Lm9wdHMuJGRhdGEgJiYgdGhpcy5zY2hlbWEgJiYgdGhpcy5zY2hlbWEuJGRhdGFcbiAgICB0aGlzLnNjaGVtYVZhbHVlID0gc2NoZW1hUmVmT3JWYWwoaXQsIHRoaXMuc2NoZW1hLCBrZXl3b3JkLCB0aGlzLiRkYXRhKVxuICAgIHRoaXMuc2NoZW1hVHlwZSA9IGRlZi5zY2hlbWFUeXBlXG4gICAgdGhpcy5wYXJlbnRTY2hlbWEgPSBpdC5zY2hlbWFcbiAgICB0aGlzLnBhcmFtcyA9IHt9XG4gICAgdGhpcy5pdCA9IGl0XG4gICAgdGhpcy5kZWYgPSBkZWZcblxuICAgIGlmICh0aGlzLiRkYXRhKSB7XG4gICAgICB0aGlzLnNjaGVtYUNvZGUgPSBpdC5nZW4uY29uc3QoXCJ2U2NoZW1hXCIsIGdldERhdGEodGhpcy4kZGF0YSwgaXQpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNjaGVtYUNvZGUgPSB0aGlzLnNjaGVtYVZhbHVlXG4gICAgICBpZiAoIXZhbGlkU2NoZW1hVHlwZSh0aGlzLnNjaGVtYSwgZGVmLnNjaGVtYVR5cGUsIGRlZi5hbGxvd1VuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2tleXdvcmR9IHZhbHVlIG11c3QgYmUgJHtKU09OLnN0cmluZ2lmeShkZWYuc2NoZW1hVHlwZSl9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXCJjb2RlXCIgaW4gZGVmID8gZGVmLnRyYWNrRXJyb3JzIDogZGVmLmVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZXJyc0NvdW50ID0gaXQuZ2VuLmNvbnN0KFwiX2VycnNcIiwgTi5lcnJvcnMpXG4gICAgfVxuICB9XG5cbiAgcmVzdWx0KGNvbmRpdGlvbjogQ29kZSwgc3VjY2Vzc0FjdGlvbj86ICgpID0+IHZvaWQsIGZhaWxBY3Rpb24/OiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsUmVzdWx0KG5vdChjb25kaXRpb24pLCBzdWNjZXNzQWN0aW9uLCBmYWlsQWN0aW9uKVxuICB9XG5cbiAgZmFpbFJlc3VsdChjb25kaXRpb246IENvZGUsIHN1Y2Nlc3NBY3Rpb24/OiAoKSA9PiB2b2lkLCBmYWlsQWN0aW9uPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuLmlmKGNvbmRpdGlvbilcbiAgICBpZiAoZmFpbEFjdGlvbikgZmFpbEFjdGlvbigpXG4gICAgZWxzZSB0aGlzLmVycm9yKClcbiAgICBpZiAoc3VjY2Vzc0FjdGlvbikge1xuICAgICAgdGhpcy5nZW4uZWxzZSgpXG4gICAgICBzdWNjZXNzQWN0aW9uKClcbiAgICAgIGlmICh0aGlzLmFsbEVycm9ycykgdGhpcy5nZW4uZW5kSWYoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hbGxFcnJvcnMpIHRoaXMuZ2VuLmVuZElmKClcbiAgICAgIGVsc2UgdGhpcy5nZW4uZWxzZSgpXG4gICAgfVxuICB9XG5cbiAgcGFzcyhjb25kaXRpb246IENvZGUsIGZhaWxBY3Rpb24/OiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsUmVzdWx0KG5vdChjb25kaXRpb24pLCB1bmRlZmluZWQsIGZhaWxBY3Rpb24pXG4gIH1cblxuICBmYWlsKGNvbmRpdGlvbj86IENvZGUpOiB2b2lkIHtcbiAgICBpZiAoY29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZXJyb3IoKVxuICAgICAgaWYgKCF0aGlzLmFsbEVycm9ycykgdGhpcy5nZW4uaWYoZmFsc2UpIC8vIHRoaXMgYnJhbmNoIHdpbGwgYmUgcmVtb3ZlZCBieSBnZW4ub3B0aW1pemVcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmdlbi5pZihjb25kaXRpb24pXG4gICAgdGhpcy5lcnJvcigpXG4gICAgaWYgKHRoaXMuYWxsRXJyb3JzKSB0aGlzLmdlbi5lbmRJZigpXG4gICAgZWxzZSB0aGlzLmdlbi5lbHNlKClcbiAgfVxuXG4gIGZhaWwkZGF0YShjb25kaXRpb246IENvZGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuJGRhdGEpIHJldHVybiB0aGlzLmZhaWwoY29uZGl0aW9uKVxuICAgIGNvbnN0IHtzY2hlbWFDb2RlfSA9IHRoaXNcbiAgICB0aGlzLmZhaWwoX2Ake3NjaGVtYUNvZGV9ICE9PSB1bmRlZmluZWQgJiYgKCR7b3IodGhpcy5pbnZhbGlkJGRhdGEoKSwgY29uZGl0aW9uKX0pYClcbiAgfVxuXG4gIGVycm9yKGFwcGVuZD86IGJvb2xlYW4sIGVycm9yUGFyYW1zPzogS2V5d29yZEN4dFBhcmFtcywgZXJyb3JQYXRocz86IEVycm9yUGF0aHMpOiB2b2lkIHtcbiAgICBpZiAoZXJyb3JQYXJhbXMpIHtcbiAgICAgIHRoaXMuc2V0UGFyYW1zKGVycm9yUGFyYW1zKVxuICAgICAgdGhpcy5fZXJyb3IoYXBwZW5kLCBlcnJvclBhdGhzKVxuICAgICAgdGhpcy5zZXRQYXJhbXMoe30pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5fZXJyb3IoYXBwZW5kLCBlcnJvclBhdGhzKVxuICB9XG5cbiAgcHJpdmF0ZSBfZXJyb3IoYXBwZW5kPzogYm9vbGVhbiwgZXJyb3JQYXRocz86IEVycm9yUGF0aHMpOiB2b2lkIHtcbiAgICA7KGFwcGVuZCA/IHJlcG9ydEV4dHJhRXJyb3IgOiByZXBvcnRFcnJvcikodGhpcywgdGhpcy5kZWYuZXJyb3IsIGVycm9yUGF0aHMpXG4gIH1cblxuICAkZGF0YUVycm9yKCk6IHZvaWQge1xuICAgIHJlcG9ydEVycm9yKHRoaXMsIHRoaXMuZGVmLiRkYXRhRXJyb3IgfHwga2V5d29yZCREYXRhRXJyb3IpXG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lcnJzQ291bnQgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKCdhZGQgXCJ0cmFja0Vycm9yc1wiIHRvIGtleXdvcmQgZGVmaW5pdGlvbicpXG4gICAgcmVzZXRFcnJvcnNDb3VudCh0aGlzLmdlbiwgdGhpcy5lcnJzQ291bnQpXG4gIH1cblxuICBvayhjb25kOiBDb2RlIHwgYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGxFcnJvcnMpIHRoaXMuZ2VuLmlmKGNvbmQpXG4gIH1cblxuICBzZXRQYXJhbXMob2JqOiBLZXl3b3JkQ3h0UGFyYW1zLCBhc3NpZ24/OiB0cnVlKTogdm9pZCB7XG4gICAgaWYgKGFzc2lnbikgT2JqZWN0LmFzc2lnbih0aGlzLnBhcmFtcywgb2JqKVxuICAgIGVsc2UgdGhpcy5wYXJhbXMgPSBvYmpcbiAgfVxuXG4gIGJsb2NrJGRhdGEodmFsaWQ6IE5hbWUsIGNvZGVCbG9jazogKCkgPT4gdm9pZCwgJGRhdGFWYWxpZDogQ29kZSA9IG5pbCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuLmJsb2NrKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2skZGF0YSh2YWxpZCwgJGRhdGFWYWxpZClcbiAgICAgIGNvZGVCbG9jaygpXG4gICAgfSlcbiAgfVxuXG4gIGNoZWNrJGRhdGEodmFsaWQ6IE5hbWUgPSBuaWwsICRkYXRhVmFsaWQ6IENvZGUgPSBuaWwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuJGRhdGEpIHJldHVyblxuICAgIGNvbnN0IHtnZW4sIHNjaGVtYUNvZGUsIHNjaGVtYVR5cGUsIGRlZn0gPSB0aGlzXG4gICAgZ2VuLmlmKG9yKF9gJHtzY2hlbWFDb2RlfSA9PT0gdW5kZWZpbmVkYCwgJGRhdGFWYWxpZCkpXG4gICAgaWYgKHZhbGlkICE9PSBuaWwpIGdlbi5hc3NpZ24odmFsaWQsIHRydWUpXG4gICAgaWYgKHNjaGVtYVR5cGUubGVuZ3RoIHx8IGRlZi52YWxpZGF0ZVNjaGVtYSkge1xuICAgICAgZ2VuLmVsc2VJZih0aGlzLmludmFsaWQkZGF0YSgpKVxuICAgICAgdGhpcy4kZGF0YUVycm9yKClcbiAgICAgIGlmICh2YWxpZCAhPT0gbmlsKSBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSlcbiAgICB9XG4gICAgZ2VuLmVsc2UoKVxuICB9XG5cbiAgaW52YWxpZCRkYXRhKCk6IENvZGUge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYUNvZGUsIHNjaGVtYVR5cGUsIGRlZiwgaXR9ID0gdGhpc1xuICAgIHJldHVybiBvcih3cm9uZyREYXRhVHlwZSgpLCBpbnZhbGlkJERhdGFTY2hlbWEoKSlcblxuICAgIGZ1bmN0aW9uIHdyb25nJERhdGFUeXBlKCk6IENvZGUge1xuICAgICAgaWYgKHNjaGVtYVR5cGUubGVuZ3RoKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoIShzY2hlbWFDb2RlIGluc3RhbmNlb2YgTmFtZSkpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICAgICAgICBjb25zdCBzdCA9IEFycmF5LmlzQXJyYXkoc2NoZW1hVHlwZSkgPyBzY2hlbWFUeXBlIDogW3NjaGVtYVR5cGVdXG4gICAgICAgIHJldHVybiBfYCR7Y2hlY2tEYXRhVHlwZXMoc3QsIHNjaGVtYUNvZGUsIGl0Lm9wdHMuc3RyaWN0TnVtYmVycywgRGF0YVR5cGUuV3JvbmcpfWBcbiAgICAgIH1cbiAgICAgIHJldHVybiBuaWxcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkJERhdGFTY2hlbWEoKTogQ29kZSB7XG4gICAgICBpZiAoZGVmLnZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU2NoZW1hUmVmID0gZ2VuLnNjb3BlVmFsdWUoXCJ2YWxpZGF0ZSRkYXRhXCIsIHtyZWY6IGRlZi52YWxpZGF0ZVNjaGVtYX0pIC8vIFRPRE8gdmFsdWUuY29kZSBmb3Igc3RhbmRhbG9uZVxuICAgICAgICByZXR1cm4gX2AhJHt2YWxpZGF0ZVNjaGVtYVJlZn0oJHtzY2hlbWFDb2RlfSlgXG4gICAgICB9XG4gICAgICByZXR1cm4gbmlsXG4gICAgfVxuICB9XG5cbiAgc3Vic2NoZW1hKGFwcGw6IFN1YnNjaGVtYUFyZ3MsIHZhbGlkOiBOYW1lKTogU2NoZW1hQ3h0IHtcbiAgICBjb25zdCBzdWJzY2hlbWEgPSBnZXRTdWJzY2hlbWEodGhpcy5pdCwgYXBwbClcbiAgICBleHRlbmRTdWJzY2hlbWFEYXRhKHN1YnNjaGVtYSwgdGhpcy5pdCwgYXBwbClcbiAgICBleHRlbmRTdWJzY2hlbWFNb2RlKHN1YnNjaGVtYSwgYXBwbClcbiAgICBjb25zdCBuZXh0Q29udGV4dCA9IHsuLi50aGlzLml0LCAuLi5zdWJzY2hlbWEsIGl0ZW1zOiB1bmRlZmluZWQsIHByb3BzOiB1bmRlZmluZWR9XG4gICAgc3Vic2NoZW1hQ29kZShuZXh0Q29udGV4dCwgdmFsaWQpXG4gICAgcmV0dXJuIG5leHRDb250ZXh0XG4gIH1cblxuICBtZXJnZUV2YWx1YXRlZChzY2hlbWFDeHQ6IFNjaGVtYUN4dCwgdG9OYW1lPzogdHlwZW9mIE5hbWUpOiB2b2lkIHtcbiAgICBjb25zdCB7aXQsIGdlbn0gPSB0aGlzXG4gICAgaWYgKCFpdC5vcHRzLnVuZXZhbHVhdGVkKSByZXR1cm5cbiAgICBpZiAoaXQucHJvcHMgIT09IHRydWUgJiYgc2NoZW1hQ3h0LnByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGl0LnByb3BzID0gbWVyZ2VFdmFsdWF0ZWQucHJvcHMoZ2VuLCBzY2hlbWFDeHQucHJvcHMsIGl0LnByb3BzLCB0b05hbWUpXG4gICAgfVxuICAgIGlmIChpdC5pdGVtcyAhPT0gdHJ1ZSAmJiBzY2hlbWFDeHQuaXRlbXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaXQuaXRlbXMgPSBtZXJnZUV2YWx1YXRlZC5pdGVtcyhnZW4sIHNjaGVtYUN4dC5pdGVtcywgaXQuaXRlbXMsIHRvTmFtZSlcbiAgICB9XG4gIH1cblxuICBtZXJnZVZhbGlkRXZhbHVhdGVkKHNjaGVtYUN4dDogU2NoZW1hQ3h0LCB2YWxpZDogTmFtZSk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgICBjb25zdCB7aXQsIGdlbn0gPSB0aGlzXG4gICAgaWYgKGl0Lm9wdHMudW5ldmFsdWF0ZWQgJiYgKGl0LnByb3BzICE9PSB0cnVlIHx8IGl0Lml0ZW1zICE9PSB0cnVlKSkge1xuICAgICAgZ2VuLmlmKHZhbGlkLCAoKSA9PiB0aGlzLm1lcmdlRXZhbHVhdGVkKHNjaGVtYUN4dCwgTmFtZSkpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBrZXl3b3JkQ29kZShcbiAgaXQ6IFNjaGVtYU9iakN4dCxcbiAga2V5d29yZDogc3RyaW5nLFxuICBkZWY6IEFkZGVkS2V5d29yZERlZmluaXRpb24sXG4gIHJ1bGVUeXBlPzogSlNPTlR5cGVcbik6IHZvaWQge1xuICBjb25zdCBjeHQgPSBuZXcgS2V5d29yZEN4dChpdCwgZGVmLCBrZXl3b3JkKVxuICBpZiAoXCJjb2RlXCIgaW4gZGVmKSB7XG4gICAgZGVmLmNvZGUoY3h0LCBydWxlVHlwZSlcbiAgfSBlbHNlIGlmIChjeHQuJGRhdGEgJiYgZGVmLnZhbGlkYXRlKSB7XG4gICAgZnVuY0tleXdvcmRDb2RlKGN4dCwgZGVmKVxuICB9IGVsc2UgaWYgKFwibWFjcm9cIiBpbiBkZWYpIHtcbiAgICBtYWNyb0tleXdvcmRDb2RlKGN4dCwgZGVmKVxuICB9IGVsc2UgaWYgKGRlZi5jb21waWxlIHx8IGRlZi52YWxpZGF0ZSkge1xuICAgIGZ1bmNLZXl3b3JkQ29kZShjeHQsIGRlZilcbiAgfVxufVxuXG5jb25zdCBKU09OX1BPSU5URVIgPSAvXlxcLyg/Oltefl18fjB8fjEpKiQvXG5jb25zdCBSRUxBVElWRV9KU09OX1BPSU5URVIgPSAvXihbMC05XSspKCN8XFwvKD86W15+XXx+MHx+MSkqKT8kL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGEoXG4gICRkYXRhOiBzdHJpbmcsXG4gIHtkYXRhTGV2ZWwsIGRhdGFOYW1lcywgZGF0YVBhdGhBcnJ9OiBTY2hlbWFDeHRcbik6IENvZGUgfCBudW1iZXIge1xuICBsZXQganNvblBvaW50ZXJcbiAgbGV0IGRhdGE6IENvZGVcbiAgaWYgKCRkYXRhID09PSBcIlwiKSByZXR1cm4gTi5yb290RGF0YVxuICBpZiAoJGRhdGFbMF0gPT09IFwiL1wiKSB7XG4gICAgaWYgKCFKU09OX1BPSU5URVIudGVzdCgkZGF0YSkpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBKU09OLXBvaW50ZXI6ICR7JGRhdGF9YClcbiAgICBqc29uUG9pbnRlciA9ICRkYXRhXG4gICAgZGF0YSA9IE4ucm9vdERhdGFcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtYXRjaGVzID0gUkVMQVRJVkVfSlNPTl9QT0lOVEVSLmV4ZWMoJGRhdGEpXG4gICAgaWYgKCFtYXRjaGVzKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSlNPTi1wb2ludGVyOiAkeyRkYXRhfWApXG4gICAgY29uc3QgdXA6IG51bWJlciA9ICttYXRjaGVzWzFdXG4gICAganNvblBvaW50ZXIgPSBtYXRjaGVzWzJdXG4gICAgaWYgKGpzb25Qb2ludGVyID09PSBcIiNcIikge1xuICAgICAgaWYgKHVwID49IGRhdGFMZXZlbCkgdGhyb3cgbmV3IEVycm9yKGVycm9yTXNnKFwicHJvcGVydHkvaW5kZXhcIiwgdXApKVxuICAgICAgcmV0dXJuIGRhdGFQYXRoQXJyW2RhdGFMZXZlbCAtIHVwXVxuICAgIH1cbiAgICBpZiAodXAgPiBkYXRhTGV2ZWwpIHRocm93IG5ldyBFcnJvcihlcnJvck1zZyhcImRhdGFcIiwgdXApKVxuICAgIGRhdGEgPSBkYXRhTmFtZXNbZGF0YUxldmVsIC0gdXBdXG4gICAgaWYgKCFqc29uUG9pbnRlcikgcmV0dXJuIGRhdGFcbiAgfVxuXG4gIGxldCBleHByID0gZGF0YVxuICBjb25zdCBzZWdtZW50cyA9IGpzb25Qb2ludGVyLnNwbGl0KFwiL1wiKVxuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcbiAgICBpZiAoc2VnbWVudCkge1xuICAgICAgZGF0YSA9IF9gJHtkYXRhfSR7Z2V0UHJvcGVydHkodW5lc2NhcGVKc29uUG9pbnRlcihzZWdtZW50KSl9YFxuICAgICAgZXhwciA9IF9gJHtleHByfSAmJiAke2RhdGF9YFxuICAgIH1cbiAgfVxuICByZXR1cm4gZXhwclxuXG4gIGZ1bmN0aW9uIGVycm9yTXNnKHBvaW50ZXJUeXBlOiBzdHJpbmcsIHVwOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQ2Fubm90IGFjY2VzcyAke3BvaW50ZXJUeXBlfSAke3VwfSBsZXZlbHMgdXAsIGN1cnJlbnQgbGV2ZWwgaXMgJHtkYXRhTGV2ZWx9YFxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge0Vycm9yT2JqZWN0fSBmcm9tIFwiLi4vdHlwZXNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGVycm9yczogUGFydGlhbDxFcnJvck9iamVjdD5bXVxuICByZWFkb25seSBhanY6IHRydWVcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbjogdHJ1ZVxuXG4gIGNvbnN0cnVjdG9yKGVycm9yczogUGFydGlhbDxFcnJvck9iamVjdD5bXSkge1xuICAgIHN1cGVyKFwidmFsaWRhdGlvbiBmYWlsZWRcIilcbiAgICB0aGlzLmVycm9ycyA9IGVycm9yc1xuICAgIHRoaXMuYWp2ID0gdGhpcy52YWxpZGF0aW9uID0gdHJ1ZVxuICB9XG59XG4iLCAiaW1wb3J0IHtyZXNvbHZlVXJsLCBub3JtYWxpemVJZCwgZ2V0RnVsbFBhdGh9IGZyb20gXCIuL3Jlc29sdmVcIlxuaW1wb3J0IHR5cGUge1VyaVJlc29sdmVyfSBmcm9tIFwiLi4vdHlwZXNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaXNzaW5nUmVmRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IG1pc3NpbmdSZWY6IHN0cmluZ1xuICByZWFkb25seSBtaXNzaW5nU2NoZW1hOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihyZXNvbHZlcjogVXJpUmVzb2x2ZXIsIGJhc2VJZDogc3RyaW5nLCByZWY6IHN0cmluZywgbXNnPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobXNnIHx8IGBjYW4ndCByZXNvbHZlIHJlZmVyZW5jZSAke3JlZn0gZnJvbSBpZCAke2Jhc2VJZH1gKVxuICAgIHRoaXMubWlzc2luZ1JlZiA9IHJlc29sdmVVcmwocmVzb2x2ZXIsIGJhc2VJZCwgcmVmKVxuICAgIHRoaXMubWlzc2luZ1NjaGVtYSA9IG5vcm1hbGl6ZUlkKGdldEZ1bGxQYXRoKHJlc29sdmVyLCB0aGlzLm1pc3NpbmdSZWYpKVxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBBbnlTY2hlbWEsXG4gIEFueVNjaGVtYU9iamVjdCxcbiAgQW55VmFsaWRhdGVGdW5jdGlvbixcbiAgQXN5bmNWYWxpZGF0ZUZ1bmN0aW9uLFxuICBFdmFsdWF0ZWRQcm9wZXJ0aWVzLFxuICBFdmFsdWF0ZWRJdGVtcyxcbn0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIEFqdiBmcm9tIFwiLi4vY29yZVwiXG5pbXBvcnQgdHlwZSB7SW5zdGFuY2VPcHRpb25zfSBmcm9tIFwiLi4vY29yZVwiXG5pbXBvcnQge0NvZGVHZW4sIF8sIG5pbCwgc3RyaW5naWZ5LCBOYW1lLCBDb2RlLCBWYWx1ZVNjb3BlTmFtZX0gZnJvbSBcIi4vY29kZWdlblwiXG5pbXBvcnQgVmFsaWRhdGlvbkVycm9yIGZyb20gXCIuLi9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3JcIlxuaW1wb3J0IE4gZnJvbSBcIi4vbmFtZXNcIlxuaW1wb3J0IHtMb2NhbFJlZnMsIGdldEZ1bGxQYXRoLCBfZ2V0RnVsbFBhdGgsIGlubGluZVJlZiwgbm9ybWFsaXplSWQsIHJlc29sdmVVcmx9IGZyb20gXCIuL3Jlc29sdmVcIlxuaW1wb3J0IHtzY2hlbWFIYXNSdWxlc0J1dFJlZiwgdW5lc2NhcGVGcmFnbWVudH0gZnJvbSBcIi4vdXRpbFwiXG5pbXBvcnQge3ZhbGlkYXRlRnVuY3Rpb25Db2RlfSBmcm9tIFwiLi92YWxpZGF0ZVwiXG5pbXBvcnQge1VSSUNvbXBvbmVudH0gZnJvbSBcImZhc3QtdXJpXCJcbmltcG9ydCB7SlNPTlR5cGV9IGZyb20gXCIuL3J1bGVzXCJcblxuZXhwb3J0IHR5cGUgU2NoZW1hUmVmcyA9IHtcbiAgW1JlZiBpbiBzdHJpbmddPzogU2NoZW1hRW52IHwgQW55U2NoZW1hXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hQ3h0IHtcbiAgcmVhZG9ubHkgZ2VuOiBDb2RlR2VuXG4gIHJlYWRvbmx5IGFsbEVycm9ycz86IGJvb2xlYW4gLy8gdmFsaWRhdGlvbiBtb2RlIC0gd2hldGhlciB0byBjb2xsZWN0IGFsbCBlcnJvcnMgb3IgYnJlYWsgb24gZXJyb3JcbiAgcmVhZG9ubHkgZGF0YTogTmFtZSAvLyBOYW1lIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHBhcnQgb2YgZGF0YSBpbnN0YW5jZVxuICByZWFkb25seSBwYXJlbnREYXRhOiBOYW1lIC8vIHNob3VsZCBiZSB1c2VkIGluIGtleXdvcmRzIG1vZGlmeWluZyBkYXRhXG4gIHJlYWRvbmx5IHBhcmVudERhdGFQcm9wZXJ0eTogQ29kZSB8IG51bWJlciAvLyBzaG91bGQgYmUgdXNlZCBpbiBrZXl3b3JkcyBtb2RpZnlpbmcgZGF0YVxuICByZWFkb25seSBkYXRhTmFtZXM6IE5hbWVbXVxuICByZWFkb25seSBkYXRhUGF0aEFycjogKENvZGUgfCBudW1iZXIpW11cbiAgcmVhZG9ubHkgZGF0YUxldmVsOiBudW1iZXIgLy8gdGhlIGxldmVsIG9mIHRoZSBjdXJyZW50bHkgdmFsaWRhdGVkIGRhdGEsXG4gIC8vIGl0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBib3RoIHRoZSBwcm9wZXJ0eSBuYW1lcyBhbmQgdGhlIGRhdGEgb24gYWxsIGxldmVscyBmcm9tIHRoZSB0b3AuXG4gIGRhdGFUeXBlczogSlNPTlR5cGVbXSAvLyBkYXRhIHR5cGVzIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgcGFydCBvZiBkYXRhIGluc3RhbmNlXG4gIGRlZmluZWRQcm9wZXJ0aWVzOiBTZXQ8c3RyaW5nPiAvLyBzZXQgb2YgcHJvcGVydGllcyB0byBrZWVwIHRyYWNrIG9mIGZvciByZXF1aXJlZCBjaGVja3NcbiAgcmVhZG9ubHkgdG9wU2NoZW1hUmVmOiBDb2RlXG4gIHJlYWRvbmx5IHZhbGlkYXRlTmFtZTogTmFtZVxuICBldmFsdWF0ZWQ/OiBOYW1lXG4gIHJlYWRvbmx5IFZhbGlkYXRpb25FcnJvcj86IE5hbWVcbiAgcmVhZG9ubHkgc2NoZW1hOiBBbnlTY2hlbWEgLy8gY3VycmVudCBzY2hlbWEgb2JqZWN0IC0gZXF1YWwgdG8gcGFyZW50U2NoZW1hIHBhc3NlZCB2aWEgS2V5d29yZEN4dFxuICByZWFkb25seSBzY2hlbWFFbnY6IFNjaGVtYUVudlxuICByZWFkb25seSByb290SWQ6IHN0cmluZ1xuICBiYXNlSWQ6IHN0cmluZyAvLyB0aGUgY3VycmVudCBzY2hlbWEgYmFzZSBVUkkgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgYmFzZSBmb3IgcmVzb2x2aW5nIFVSSXMgaW4gcmVmZXJlbmNlcyAoXFwkcmVmKVxuICByZWFkb25seSBzY2hlbWFQYXRoOiBDb2RlIC8vIHRoZSBydW4tdGltZSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIHRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBjdXJyZW50IHNjaGVtYVxuICByZWFkb25seSBlcnJTY2hlbWFQYXRoOiBzdHJpbmcgLy8gdGhpcyBpcyBhY3R1YWwgc3RyaW5nLCBzaG91bGQgbm90IGJlIGNoYW5nZWQgdG8gQ29kZVxuICByZWFkb25seSBlcnJvclBhdGg6IENvZGVcbiAgcmVhZG9ubHkgcHJvcGVydHlOYW1lPzogTmFtZVxuICByZWFkb25seSBjb21wb3NpdGVSdWxlPzogYm9vbGVhbiAvLyB0cnVlIGluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IHNjaGVtYSBpcyBpbnNpZGUgdGhlIGNvbXBvdW5kIGtleXdvcmQsXG4gIC8vIHdoZXJlIGZhaWxpbmcgc29tZSBydWxlIGRvZXNuJ3QgbWVhbiB2YWxpZGF0aW9uIGZhaWx1cmUgKGBhbnlPZmAsIGBvbmVPZmAsIGBub3RgLCBgaWZgKS5cbiAgLy8gVGhpcyBmbGFnIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgeW91IGNhbiByZXR1cm4gdmFsaWRhdGlvbiByZXN1bHQgaW1tZWRpYXRlbHkgYWZ0ZXIgYW55IGVycm9yIGluIGNhc2UgdGhlIG9wdGlvbiBgYWxsRXJyb3JzYCBpcyBub3QgYHRydWUuXG4gIC8vIFlvdSBvbmx5IG5lZWQgdG8gdXNlIGl0IGlmIHlvdSBoYXZlIG1hbnkgc3RlcHMgaW4geW91ciBrZXl3b3JkcyBhbmQgcG90ZW50aWFsbHkgY2FuIGRlZmluZSBtdWx0aXBsZSBlcnJvcnMuXG4gIHByb3BzPzogRXZhbHVhdGVkUHJvcGVydGllcyB8IE5hbWUgLy8gcHJvcGVydGllcyBldmFsdWF0ZWQgYnkgdGhpcyBzY2hlbWEgLSB1c2VkIGJ5IHBhcmVudCBzY2hlbWEgb3IgYXNzaWduZWQgdG8gdmFsaWRhdGlvbiBmdW5jdGlvblxuICBpdGVtcz86IEV2YWx1YXRlZEl0ZW1zIHwgTmFtZSAvLyBsYXN0IGl0ZW0gZXZhbHVhdGVkIGJ5IHRoaXMgc2NoZW1hIC0gdXNlZCBieSBwYXJlbnQgc2NoZW1hIG9yIGFzc2lnbmVkIHRvIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAganRkRGlzY3JpbWluYXRvcj86IHN0cmluZ1xuICBqdGRNZXRhZGF0YT86IGJvb2xlYW5cbiAgcmVhZG9ubHkgY3JlYXRlRXJyb3JzPzogYm9vbGVhblxuICByZWFkb25seSBvcHRzOiBJbnN0YW5jZU9wdGlvbnMgLy8gQWp2IGluc3RhbmNlIG9wdGlvbi5cbiAgcmVhZG9ubHkgc2VsZjogQWp2IC8vIGN1cnJlbnQgQWp2IGluc3RhbmNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hT2JqQ3h0IGV4dGVuZHMgU2NoZW1hQ3h0IHtcbiAgcmVhZG9ubHkgc2NoZW1hOiBBbnlTY2hlbWFPYmplY3Rcbn1cbmludGVyZmFjZSBTY2hlbWFFbnZBcmdzIHtcbiAgcmVhZG9ubHkgc2NoZW1hOiBBbnlTY2hlbWFcbiAgcmVhZG9ubHkgc2NoZW1hSWQ/OiBcIiRpZFwiIHwgXCJpZFwiXG4gIHJlYWRvbmx5IHJvb3Q/OiBTY2hlbWFFbnZcbiAgcmVhZG9ubHkgYmFzZUlkPzogc3RyaW5nXG4gIHJlYWRvbmx5IHNjaGVtYVBhdGg/OiBzdHJpbmdcbiAgcmVhZG9ubHkgbG9jYWxSZWZzPzogTG9jYWxSZWZzXG4gIHJlYWRvbmx5IG1ldGE/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWFFbnYgaW1wbGVtZW50cyBTY2hlbWFFbnZBcmdzIHtcbiAgcmVhZG9ubHkgc2NoZW1hOiBBbnlTY2hlbWFcbiAgcmVhZG9ubHkgc2NoZW1hSWQ/OiBcIiRpZFwiIHwgXCJpZFwiXG4gIHJlYWRvbmx5IHJvb3Q6IFNjaGVtYUVudlxuICBiYXNlSWQ6IHN0cmluZyAvLyBUT0RPIHBvc3NpYmx5LCBpdCBzaG91bGQgYmUgcmVhZG9ubHlcbiAgc2NoZW1hUGF0aD86IHN0cmluZ1xuICBsb2NhbFJlZnM/OiBMb2NhbFJlZnNcbiAgcmVhZG9ubHkgbWV0YT86IGJvb2xlYW5cbiAgcmVhZG9ubHkgJGFzeW5jPzogYm9vbGVhbiAvLyB0cnVlIGlmIHRoZSBjdXJyZW50IHNjaGVtYSBpcyBhc3luY2hyb25vdXMuXG4gIHJlYWRvbmx5IHJlZnM6IFNjaGVtYVJlZnMgPSB7fVxuICByZWFkb25seSBkeW5hbWljQW5jaG9yczoge1tSZWYgaW4gc3RyaW5nXT86IHRydWV9ID0ge31cbiAgdmFsaWRhdGU/OiBBbnlWYWxpZGF0ZUZ1bmN0aW9uXG4gIHZhbGlkYXRlTmFtZT86IFZhbHVlU2NvcGVOYW1lXG4gIHNlcmlhbGl6ZT86IChkYXRhOiB1bmtub3duKSA9PiBzdHJpbmdcbiAgc2VyaWFsaXplTmFtZT86IFZhbHVlU2NvcGVOYW1lXG4gIHBhcnNlPzogKGRhdGE6IHN0cmluZykgPT4gdW5rbm93blxuICBwYXJzZU5hbWU/OiBWYWx1ZVNjb3BlTmFtZVxuXG4gIGNvbnN0cnVjdG9yKGVudjogU2NoZW1hRW52QXJncykge1xuICAgIGxldCBzY2hlbWE6IEFueVNjaGVtYU9iamVjdCB8IHVuZGVmaW5lZFxuICAgIGlmICh0eXBlb2YgZW52LnNjaGVtYSA9PSBcIm9iamVjdFwiKSBzY2hlbWEgPSBlbnYuc2NoZW1hXG4gICAgdGhpcy5zY2hlbWEgPSBlbnYuc2NoZW1hXG4gICAgdGhpcy5zY2hlbWFJZCA9IGVudi5zY2hlbWFJZFxuICAgIHRoaXMucm9vdCA9IGVudi5yb290IHx8IHRoaXNcbiAgICB0aGlzLmJhc2VJZCA9IGVudi5iYXNlSWQgPz8gbm9ybWFsaXplSWQoc2NoZW1hPy5bZW52LnNjaGVtYUlkIHx8IFwiJGlkXCJdKVxuICAgIHRoaXMuc2NoZW1hUGF0aCA9IGVudi5zY2hlbWFQYXRoXG4gICAgdGhpcy5sb2NhbFJlZnMgPSBlbnYubG9jYWxSZWZzXG4gICAgdGhpcy5tZXRhID0gZW52Lm1ldGFcbiAgICB0aGlzLiRhc3luYyA9IHNjaGVtYT8uJGFzeW5jXG4gICAgdGhpcy5yZWZzID0ge31cbiAgfVxufVxuXG4vLyBsZXQgY29kZVNpemUgPSAwXG4vLyBsZXQgbm9kZUNvdW50ID0gMFxuXG4vLyBDb21waWxlcyBzY2hlbWEgaW4gU2NoZW1hRW52XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVNjaGVtYSh0aGlzOiBBanYsIHNjaDogU2NoZW1hRW52KTogU2NoZW1hRW52IHtcbiAgLy8gVE9ETyByZWZhY3RvciAtIHJlbW92ZSBjb21waWxhdGlvbnNcbiAgY29uc3QgX3NjaCA9IGdldENvbXBpbGluZ1NjaGVtYS5jYWxsKHRoaXMsIHNjaClcbiAgaWYgKF9zY2gpIHJldHVybiBfc2NoXG4gIGNvbnN0IHJvb3RJZCA9IGdldEZ1bGxQYXRoKHRoaXMub3B0cy51cmlSZXNvbHZlciwgc2NoLnJvb3QuYmFzZUlkKSAvLyBUT0RPIGlmIGdldEZ1bGxQYXRoIHJlbW92ZWQgMSB0ZXN0cyBmYWlsc1xuICBjb25zdCB7ZXM1LCBsaW5lc30gPSB0aGlzLm9wdHMuY29kZVxuICBjb25zdCB7b3duUHJvcGVydGllc30gPSB0aGlzLm9wdHNcbiAgY29uc3QgZ2VuID0gbmV3IENvZGVHZW4odGhpcy5zY29wZSwge2VzNSwgbGluZXMsIG93blByb3BlcnRpZXN9KVxuICBsZXQgX1ZhbGlkYXRpb25FcnJvclxuICBpZiAoc2NoLiRhc3luYykge1xuICAgIF9WYWxpZGF0aW9uRXJyb3IgPSBnZW4uc2NvcGVWYWx1ZShcIkVycm9yXCIsIHtcbiAgICAgIHJlZjogVmFsaWRhdGlvbkVycm9yLFxuICAgICAgY29kZTogX2ByZXF1aXJlKFwiYWp2L2Rpc3QvcnVudGltZS92YWxpZGF0aW9uX2Vycm9yXCIpLmRlZmF1bHRgLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB2YWxpZGF0ZU5hbWUgPSBnZW4uc2NvcGVOYW1lKFwidmFsaWRhdGVcIilcbiAgc2NoLnZhbGlkYXRlTmFtZSA9IHZhbGlkYXRlTmFtZVxuXG4gIGNvbnN0IHNjaGVtYUN4dDogU2NoZW1hQ3h0ID0ge1xuICAgIGdlbixcbiAgICBhbGxFcnJvcnM6IHRoaXMub3B0cy5hbGxFcnJvcnMsXG4gICAgZGF0YTogTi5kYXRhLFxuICAgIHBhcmVudERhdGE6IE4ucGFyZW50RGF0YSxcbiAgICBwYXJlbnREYXRhUHJvcGVydHk6IE4ucGFyZW50RGF0YVByb3BlcnR5LFxuICAgIGRhdGFOYW1lczogW04uZGF0YV0sXG4gICAgZGF0YVBhdGhBcnI6IFtuaWxdLCAvLyBUT0RPIGNhbiBpdHMgbGVuZ3RoIGJlIHVzZWQgYXMgZGF0YUxldmVsIGlmIG5pbCBpcyByZW1vdmVkP1xuICAgIGRhdGFMZXZlbDogMCxcbiAgICBkYXRhVHlwZXM6IFtdLFxuICAgIGRlZmluZWRQcm9wZXJ0aWVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB0b3BTY2hlbWFSZWY6IGdlbi5zY29wZVZhbHVlKFxuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIHRoaXMub3B0cy5jb2RlLnNvdXJjZSA9PT0gdHJ1ZVxuICAgICAgICA/IHtyZWY6IHNjaC5zY2hlbWEsIGNvZGU6IHN0cmluZ2lmeShzY2guc2NoZW1hKX1cbiAgICAgICAgOiB7cmVmOiBzY2guc2NoZW1hfVxuICAgICksXG4gICAgdmFsaWRhdGVOYW1lLFxuICAgIFZhbGlkYXRpb25FcnJvcjogX1ZhbGlkYXRpb25FcnJvcixcbiAgICBzY2hlbWE6IHNjaC5zY2hlbWEsXG4gICAgc2NoZW1hRW52OiBzY2gsXG4gICAgcm9vdElkLFxuICAgIGJhc2VJZDogc2NoLmJhc2VJZCB8fCByb290SWQsXG4gICAgc2NoZW1hUGF0aDogbmlsLFxuICAgIGVyclNjaGVtYVBhdGg6IHNjaC5zY2hlbWFQYXRoIHx8ICh0aGlzLm9wdHMuanRkID8gXCJcIiA6IFwiI1wiKSxcbiAgICBlcnJvclBhdGg6IF9gXCJcImAsXG4gICAgb3B0czogdGhpcy5vcHRzLFxuICAgIHNlbGY6IHRoaXMsXG4gIH1cblxuICBsZXQgc291cmNlQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHRyeSB7XG4gICAgdGhpcy5fY29tcGlsYXRpb25zLmFkZChzY2gpXG4gICAgdmFsaWRhdGVGdW5jdGlvbkNvZGUoc2NoZW1hQ3h0KVxuICAgIGdlbi5vcHRpbWl6ZSh0aGlzLm9wdHMuY29kZS5vcHRpbWl6ZSlcbiAgICAvLyBnZW4ub3B0aW1pemUoMSlcbiAgICBjb25zdCB2YWxpZGF0ZUNvZGUgPSBnZW4udG9TdHJpbmcoKVxuICAgIHNvdXJjZUNvZGUgPSBgJHtnZW4uc2NvcGVSZWZzKE4uc2NvcGUpfXJldHVybiAke3ZhbGlkYXRlQ29kZX1gXG4gICAgLy8gY29uc29sZS5sb2coKGNvZGVTaXplICs9IHNvdXJjZUNvZGUubGVuZ3RoKSwgKG5vZGVDb3VudCArPSBnZW4ubm9kZUNvdW50KSlcbiAgICBpZiAodGhpcy5vcHRzLmNvZGUucHJvY2Vzcykgc291cmNlQ29kZSA9IHRoaXMub3B0cy5jb2RlLnByb2Nlc3Moc291cmNlQ29kZSwgc2NoKVxuICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuXFxuXFxuICoqKiBcXG5cIiwgc291cmNlQ29kZSlcbiAgICBjb25zdCBtYWtlVmFsaWRhdGUgPSBuZXcgRnVuY3Rpb24oYCR7Ti5zZWxmfWAsIGAke04uc2NvcGV9YCwgc291cmNlQ29kZSlcbiAgICBjb25zdCB2YWxpZGF0ZTogQW55VmFsaWRhdGVGdW5jdGlvbiA9IG1ha2VWYWxpZGF0ZSh0aGlzLCB0aGlzLnNjb3BlLmdldCgpKVxuICAgIHRoaXMuc2NvcGUudmFsdWUodmFsaWRhdGVOYW1lLCB7cmVmOiB2YWxpZGF0ZX0pXG5cbiAgICB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsXG4gICAgdmFsaWRhdGUuc2NoZW1hID0gc2NoLnNjaGVtYVxuICAgIHZhbGlkYXRlLnNjaGVtYUVudiA9IHNjaFxuICAgIGlmIChzY2guJGFzeW5jKSAodmFsaWRhdGUgYXMgQXN5bmNWYWxpZGF0ZUZ1bmN0aW9uKS4kYXN5bmMgPSB0cnVlXG4gICAgaWYgKHRoaXMub3B0cy5jb2RlLnNvdXJjZSA9PT0gdHJ1ZSkge1xuICAgICAgdmFsaWRhdGUuc291cmNlID0ge3ZhbGlkYXRlTmFtZSwgdmFsaWRhdGVDb2RlLCBzY29wZVZhbHVlczogZ2VuLl92YWx1ZXN9XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMudW5ldmFsdWF0ZWQpIHtcbiAgICAgIGNvbnN0IHtwcm9wcywgaXRlbXN9ID0gc2NoZW1hQ3h0XG4gICAgICB2YWxpZGF0ZS5ldmFsdWF0ZWQgPSB7XG4gICAgICAgIHByb3BzOiBwcm9wcyBpbnN0YW5jZW9mIE5hbWUgPyB1bmRlZmluZWQgOiBwcm9wcyxcbiAgICAgICAgaXRlbXM6IGl0ZW1zIGluc3RhbmNlb2YgTmFtZSA/IHVuZGVmaW5lZCA6IGl0ZW1zLFxuICAgICAgICBkeW5hbWljUHJvcHM6IHByb3BzIGluc3RhbmNlb2YgTmFtZSxcbiAgICAgICAgZHluYW1pY0l0ZW1zOiBpdGVtcyBpbnN0YW5jZW9mIE5hbWUsXG4gICAgICB9XG4gICAgICBpZiAodmFsaWRhdGUuc291cmNlKSB2YWxpZGF0ZS5zb3VyY2UuZXZhbHVhdGVkID0gc3RyaW5naWZ5KHZhbGlkYXRlLmV2YWx1YXRlZClcbiAgICB9XG4gICAgc2NoLnZhbGlkYXRlID0gdmFsaWRhdGVcbiAgICByZXR1cm4gc2NoXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkZWxldGUgc2NoLnZhbGlkYXRlXG4gICAgZGVsZXRlIHNjaC52YWxpZGF0ZU5hbWVcbiAgICBpZiAoc291cmNlQ29kZSkgdGhpcy5sb2dnZXIuZXJyb3IoXCJFcnJvciBjb21waWxpbmcgc2NoZW1hLCBmdW5jdGlvbiBjb2RlOlwiLCBzb3VyY2VDb2RlKVxuICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuXFxuXFxuICoqKiBcXG5cIiwgc291cmNlQ29kZSwgdGhpcy5vcHRzKVxuICAgIHRocm93IGVcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLl9jb21waWxhdGlvbnMuZGVsZXRlKHNjaClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlZihcbiAgdGhpczogQWp2LFxuICByb290OiBTY2hlbWFFbnYsXG4gIGJhc2VJZDogc3RyaW5nLFxuICByZWY6IHN0cmluZ1xuKTogQW55U2NoZW1hIHwgU2NoZW1hRW52IHwgdW5kZWZpbmVkIHtcbiAgcmVmID0gcmVzb2x2ZVVybCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIGJhc2VJZCwgcmVmKVxuICBjb25zdCBzY2hPckZ1bmMgPSByb290LnJlZnNbcmVmXVxuICBpZiAoc2NoT3JGdW5jKSByZXR1cm4gc2NoT3JGdW5jXG5cbiAgbGV0IF9zY2ggPSByZXNvbHZlLmNhbGwodGhpcywgcm9vdCwgcmVmKVxuICBpZiAoX3NjaCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qgc2NoZW1hID0gcm9vdC5sb2NhbFJlZnM/LltyZWZdIC8vIFRPRE8gbWF5YmUgbG9jYWxSZWZzIHNob3VsZCBob2xkIFNjaGVtYUVudlxuICAgIGNvbnN0IHtzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgICBpZiAoc2NoZW1hKSBfc2NoID0gbmV3IFNjaGVtYUVudih7c2NoZW1hLCBzY2hlbWFJZCwgcm9vdCwgYmFzZUlkfSlcbiAgfVxuXG4gIGlmIChfc2NoID09PSB1bmRlZmluZWQpIHJldHVyblxuICByZXR1cm4gKHJvb3QucmVmc1tyZWZdID0gaW5saW5lT3JDb21waWxlLmNhbGwodGhpcywgX3NjaCkpXG59XG5cbmZ1bmN0aW9uIGlubGluZU9yQ29tcGlsZSh0aGlzOiBBanYsIHNjaDogU2NoZW1hRW52KTogQW55U2NoZW1hIHwgU2NoZW1hRW52IHtcbiAgaWYgKGlubGluZVJlZihzY2guc2NoZW1hLCB0aGlzLm9wdHMuaW5saW5lUmVmcykpIHJldHVybiBzY2guc2NoZW1hXG4gIHJldHVybiBzY2gudmFsaWRhdGUgPyBzY2ggOiBjb21waWxlU2NoZW1hLmNhbGwodGhpcywgc2NoKVxufVxuXG4vLyBJbmRleCBvZiBzY2hlbWEgY29tcGlsYXRpb24gaW4gdGhlIGN1cnJlbnRseSBjb21waWxlZCBsaXN0XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcGlsaW5nU2NoZW1hKHRoaXM6IEFqdiwgc2NoRW52OiBTY2hlbWFFbnYpOiBTY2hlbWFFbnYgfCB2b2lkIHtcbiAgZm9yIChjb25zdCBzY2ggb2YgdGhpcy5fY29tcGlsYXRpb25zKSB7XG4gICAgaWYgKHNhbWVTY2hlbWFFbnYoc2NoLCBzY2hFbnYpKSByZXR1cm4gc2NoXG4gIH1cbn1cblxuZnVuY3Rpb24gc2FtZVNjaGVtYUVudihzMTogU2NoZW1hRW52LCBzMjogU2NoZW1hRW52KTogYm9vbGVhbiB7XG4gIHJldHVybiBzMS5zY2hlbWEgPT09IHMyLnNjaGVtYSAmJiBzMS5yb290ID09PSBzMi5yb290ICYmIHMxLmJhc2VJZCA9PT0gczIuYmFzZUlkXG59XG5cbi8vIHJlc29sdmUgYW5kIGNvbXBpbGUgdGhlIHJlZmVyZW5jZXMgKCRyZWYpXG4vLyBUT0RPIHJldHVybnMgQW55U2NoZW1hT2JqZWN0IChpZiB0aGUgc2NoZW1hIGNhbiBiZSBpbmxpbmVkKSBvciB2YWxpZGF0aW9uIGZ1bmN0aW9uXG5mdW5jdGlvbiByZXNvbHZlKFxuICB0aGlzOiBBanYsXG4gIHJvb3Q6IFNjaGVtYUVudiwgLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvb3Qgc2NoZW1hIGZvciB0aGUgY3VycmVudCBzY2hlbWFcbiAgcmVmOiBzdHJpbmcgLy8gcmVmZXJlbmNlIHRvIHJlc29sdmVcbik6IFNjaGVtYUVudiB8IHVuZGVmaW5lZCB7XG4gIGxldCBzY2hcbiAgd2hpbGUgKHR5cGVvZiAoc2NoID0gdGhpcy5yZWZzW3JlZl0pID09IFwic3RyaW5nXCIpIHJlZiA9IHNjaFxuICByZXR1cm4gc2NoIHx8IHRoaXMuc2NoZW1hc1tyZWZdIHx8IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCByZWYpXG59XG5cbi8vIFJlc29sdmUgc2NoZW1hLCBpdHMgcm9vdCBhbmQgYmFzZUlkXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNjaGVtYShcbiAgdGhpczogQWp2LFxuICByb290OiBTY2hlbWFFbnYsIC8vIHJvb3Qgb2JqZWN0IHdpdGggcHJvcGVydGllcyBzY2hlbWEsIHJlZnMgVE9ETyBiZWxvdyBTY2hlbWFFbnYgaXMgYXNzaWduZWQgdG8gaXRcbiAgcmVmOiBzdHJpbmcgLy8gcmVmZXJlbmNlIHRvIHJlc29sdmVcbik6IFNjaGVtYUVudiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHAgPSB0aGlzLm9wdHMudXJpUmVzb2x2ZXIucGFyc2UocmVmKVxuICBjb25zdCByZWZQYXRoID0gX2dldEZ1bGxQYXRoKHRoaXMub3B0cy51cmlSZXNvbHZlciwgcClcbiAgbGV0IGJhc2VJZCA9IGdldEZ1bGxQYXRoKHRoaXMub3B0cy51cmlSZXNvbHZlciwgcm9vdC5iYXNlSWQsIHVuZGVmaW5lZClcbiAgLy8gVE9ETyBgT2JqZWN0LmtleXMocm9vdC5zY2hlbWEpLmxlbmd0aCA+IDBgIHNob3VsZCBub3QgYmUgbmVlZGVkIC0gYnV0IHJlbW92aW5nIGJyZWFrcyAyIHRlc3RzXG4gIGlmIChPYmplY3Qua2V5cyhyb290LnNjaGVtYSkubGVuZ3RoID4gMCAmJiByZWZQYXRoID09PSBiYXNlSWQpIHtcbiAgICByZXR1cm4gZ2V0SnNvblBvaW50ZXIuY2FsbCh0aGlzLCBwLCByb290KVxuICB9XG5cbiAgY29uc3QgaWQgPSBub3JtYWxpemVJZChyZWZQYXRoKVxuICBjb25zdCBzY2hPclJlZiA9IHRoaXMucmVmc1tpZF0gfHwgdGhpcy5zY2hlbWFzW2lkXVxuICBpZiAodHlwZW9mIHNjaE9yUmVmID09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBzY2ggPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgc2NoT3JSZWYpXG4gICAgaWYgKHR5cGVvZiBzY2g/LnNjaGVtYSAhPT0gXCJvYmplY3RcIikgcmV0dXJuXG4gICAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcCwgc2NoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzY2hPclJlZj8uc2NoZW1hICE9PSBcIm9iamVjdFwiKSByZXR1cm5cbiAgaWYgKCFzY2hPclJlZi52YWxpZGF0ZSkgY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHNjaE9yUmVmKVxuICBpZiAoaWQgPT09IG5vcm1hbGl6ZUlkKHJlZikpIHtcbiAgICBjb25zdCB7c2NoZW1hfSA9IHNjaE9yUmVmXG4gICAgY29uc3Qge3NjaGVtYUlkfSA9IHRoaXMub3B0c1xuICAgIGNvbnN0IHNjaElkID0gc2NoZW1hW3NjaGVtYUlkXVxuICAgIGlmIChzY2hJZCkgYmFzZUlkID0gcmVzb2x2ZVVybCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIGJhc2VJZCwgc2NoSWQpXG4gICAgcmV0dXJuIG5ldyBTY2hlbWFFbnYoe3NjaGVtYSwgc2NoZW1hSWQsIHJvb3QsIGJhc2VJZH0pXG4gIH1cbiAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcCwgc2NoT3JSZWYpXG59XG5cbmNvbnN0IFBSRVZFTlRfU0NPUEVfQ0hBTkdFID0gbmV3IFNldChbXG4gIFwicHJvcGVydGllc1wiLFxuICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsXG4gIFwiZW51bVwiLFxuICBcImRlcGVuZGVuY2llc1wiLFxuICBcImRlZmluaXRpb25zXCIsXG5dKVxuXG5mdW5jdGlvbiBnZXRKc29uUG9pbnRlcihcbiAgdGhpczogQWp2LFxuICBwYXJzZWRSZWY6IFVSSUNvbXBvbmVudCxcbiAge2Jhc2VJZCwgc2NoZW1hLCByb290fTogU2NoZW1hRW52XG4pOiBTY2hlbWFFbnYgfCB1bmRlZmluZWQge1xuICBpZiAocGFyc2VkUmVmLmZyYWdtZW50Py5bMF0gIT09IFwiL1wiKSByZXR1cm5cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnNlZFJlZi5mcmFnbWVudC5zbGljZSgxKS5zcGxpdChcIi9cIikpIHtcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJib29sZWFuXCIpIHJldHVyblxuICAgIGNvbnN0IHBhcnRTY2hlbWEgPSBzY2hlbWFbdW5lc2NhcGVGcmFnbWVudChwYXJ0KV1cbiAgICBpZiAocGFydFNjaGVtYSA9PT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgICBzY2hlbWEgPSBwYXJ0U2NoZW1hXG4gICAgLy8gVE9ETyBQUkVWRU5UX1NDT1BFX0NIQU5HRSBjb3VsZCBiZSBkZWZpbmVkIGluIGtleXdvcmQgZGVmP1xuICAgIGNvbnN0IHNjaElkID0gdHlwZW9mIHNjaGVtYSA9PT0gXCJvYmplY3RcIiAmJiBzY2hlbWFbdGhpcy5vcHRzLnNjaGVtYUlkXVxuICAgIGlmICghUFJFVkVOVF9TQ09QRV9DSEFOR0UuaGFzKHBhcnQpICYmIHNjaElkKSB7XG4gICAgICBiYXNlSWQgPSByZXNvbHZlVXJsKHRoaXMub3B0cy51cmlSZXNvbHZlciwgYmFzZUlkLCBzY2hJZClcbiAgICB9XG4gIH1cbiAgbGV0IGVudjogU2NoZW1hRW52IHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlb2Ygc2NoZW1hICE9IFwiYm9vbGVhblwiICYmIHNjaGVtYS4kcmVmICYmICFzY2hlbWFIYXNSdWxlc0J1dFJlZihzY2hlbWEsIHRoaXMuUlVMRVMpKSB7XG4gICAgY29uc3QgJHJlZiA9IHJlc29sdmVVcmwodGhpcy5vcHRzLnVyaVJlc29sdmVyLCBiYXNlSWQsIHNjaGVtYS4kcmVmKVxuICAgIGVudiA9IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCAkcmVmKVxuICB9XG4gIC8vIGV2ZW4gdGhvdWdoIHJlc29sdXRpb24gZmFpbGVkIHdlIG5lZWQgdG8gcmV0dXJuIFNjaGVtYUVudiB0byB0aHJvdyBleGNlcHRpb25cbiAgLy8gc28gdGhhdCBjb21waWxlQXN5bmMgbG9hZHMgbWlzc2luZyBzY2hlbWEuXG4gIGNvbnN0IHtzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgZW52ID0gZW52IHx8IG5ldyBTY2hlbWFFbnYoe3NjaGVtYSwgc2NoZW1hSWQsIHJvb3QsIGJhc2VJZH0pXG4gIGlmIChlbnYuc2NoZW1hICE9PSBlbnYucm9vdC5zY2hlbWEpIHJldHVybiBlbnZcbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuIiwgIntcbiAgXCIkaWRcIjogXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiNcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIk1ldGEtc2NoZW1hIGZvciAkZGF0YSByZWZlcmVuY2UgKEpTT04gQW55U2NoZW1hIGV4dGVuc2lvbiBwcm9wb3NhbClcIixcbiAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gIFwicmVxdWlyZWRcIjogW1wiJGRhdGFcIl0sXG4gIFwicHJvcGVydGllc1wiOiB7XG4gICAgXCIkZGF0YVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiYW55T2ZcIjogW3tcImZvcm1hdFwiOiBcInJlbGF0aXZlLWpzb24tcG9pbnRlclwifSwge1wiZm9ybWF0XCI6IFwianNvbi1wb2ludGVyXCJ9XVxuICAgIH1cbiAgfSxcbiAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vKiogQHR5cGUgeyh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFufSAqL1xuY29uc3QgaXNVVUlEID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQoL15bXFxkYS1mXXs4fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXsxMn0kL2l1KVxuXG4vKiogQHR5cGUgeyh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFufSAqL1xuY29uc3QgaXNJUHY0ID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQoL14oPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkezJ9fFsxLTldXFxkfFxcZClcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZHsyfXxbMS05XVxcZHxcXGQpJC91KVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gaW5wdXRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ0FycmF5VG9IZXhTdHJpcHBlZCAoaW5wdXQpIHtcbiAgbGV0IGFjYyA9ICcnXG4gIGxldCBjb2RlID0gMFxuICBsZXQgaSA9IDBcblxuICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb2RlID0gaW5wdXRbaV0uY2hhckNvZGVBdCgwKVxuICAgIGlmIChjb2RlID09PSA0OCkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKCEoKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgfHwgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgfHwgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMDIpKSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGFjYyArPSBpbnB1dFtpXVxuICAgIGJyZWFrXG4gIH1cblxuICBmb3IgKGkgKz0gMTsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29kZSA9IGlucHV0W2ldLmNoYXJDb2RlQXQoMClcbiAgICBpZiAoISgoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KSB8fCAoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDcwKSB8fCAoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikpKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgYWNjICs9IGlucHV0W2ldXG4gIH1cbiAgcmV0dXJuIGFjY1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEdldElQVjZSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZXJyb3IgLSBJbmRpY2F0ZXMgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHBhcnNpbmcgdGhlIElQdjYgYWRkcmVzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIHBhcnNlZCBJUHY2IGFkZHJlc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3pvbmVdIC0gVGhlIHpvbmUgaWRlbnRpZmllciwgaWYgcHJlc2VudC5cbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IG5vblNpbXBsZURvbWFpbiA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKC9bXiFcIiQmJygpKissXFwtLjs9X2BhLXp7fX5dL3UpXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBidWZmZXJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBjb25zdW1lSXNab25lIChidWZmZXIpIHtcbiAgYnVmZmVyLmxlbmd0aCA9IDBcbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGJ1ZmZlclxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBhZGRyZXNzXG4gKiBAcGFyYW0ge0dldElQVjZSZXN1bHR9IG91dHB1dFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGNvbnN1bWVIZXh0ZXRzIChidWZmZXIsIGFkZHJlc3MsIG91dHB1dCkge1xuICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgIGNvbnN0IGhleCA9IHN0cmluZ0FycmF5VG9IZXhTdHJpcHBlZChidWZmZXIpXG4gICAgaWYgKGhleCAhPT0gJycpIHtcbiAgICAgIGFkZHJlc3MucHVzaChoZXgpXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5lcnJvciA9IHRydWVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBidWZmZXIubGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gKiBAcmV0dXJucyB7R2V0SVBWNlJlc3VsdH1cbiAqL1xuZnVuY3Rpb24gZ2V0SVBWNiAoaW5wdXQpIHtcbiAgbGV0IHRva2VuQ291bnQgPSAwXG4gIGNvbnN0IG91dHB1dCA9IHsgZXJyb3I6IGZhbHNlLCBhZGRyZXNzOiAnJywgem9uZTogJycgfVxuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IGFkZHJlc3MgPSBbXVxuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IGJ1ZmZlciA9IFtdXG4gIGxldCBlbmRpcHY2RW5jb3VudGVyZWQgPSBmYWxzZVxuICBsZXQgZW5kSXB2NiA9IGZhbHNlXG5cbiAgbGV0IGNvbnN1bWUgPSBjb25zdW1lSGV4dGV0c1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjdXJzb3IgPSBpbnB1dFtpXVxuICAgIGlmIChjdXJzb3IgPT09ICdbJyB8fCBjdXJzb3IgPT09ICddJykgeyBjb250aW51ZSB9XG4gICAgaWYgKGN1cnNvciA9PT0gJzonKSB7XG4gICAgICBpZiAoZW5kaXB2NkVuY291bnRlcmVkID09PSB0cnVlKSB7XG4gICAgICAgIGVuZElwdjYgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoIWNvbnN1bWUoYnVmZmVyLCBhZGRyZXNzLCBvdXRwdXQpKSB7IGJyZWFrIH1cbiAgICAgIGlmICgrK3Rva2VuQ291bnQgPiA3KSB7XG4gICAgICAgIC8vIG5vdCB2YWxpZFxuICAgICAgICBvdXRwdXQuZXJyb3IgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAoaSA+IDAgJiYgaW5wdXRbaSAtIDFdID09PSAnOicpIHtcbiAgICAgICAgZW5kaXB2NkVuY291bnRlcmVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgYWRkcmVzcy5wdXNoKCc6JylcbiAgICAgIGNvbnRpbnVlXG4gICAgfSBlbHNlIGlmIChjdXJzb3IgPT09ICclJykge1xuICAgICAgaWYgKCFjb25zdW1lKGJ1ZmZlciwgYWRkcmVzcywgb3V0cHV0KSkgeyBicmVhayB9XG4gICAgICAvLyBzd2l0Y2ggdG8gem9uZSBkZXRlY3Rpb25cbiAgICAgIGNvbnN1bWUgPSBjb25zdW1lSXNab25lXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci5wdXNoKGN1cnNvcilcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICB9XG4gIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGNvbnN1bWUgPT09IGNvbnN1bWVJc1pvbmUpIHtcbiAgICAgIG91dHB1dC56b25lID0gYnVmZmVyLmpvaW4oJycpXG4gICAgfSBlbHNlIGlmIChlbmRJcHY2KSB7XG4gICAgICBhZGRyZXNzLnB1c2goYnVmZmVyLmpvaW4oJycpKVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGRyZXNzLnB1c2goc3RyaW5nQXJyYXlUb0hleFN0cmlwcGVkKGJ1ZmZlcikpXG4gICAgfVxuICB9XG4gIG91dHB1dC5hZGRyZXNzID0gYWRkcmVzcy5qb2luKCcnKVxuICByZXR1cm4gb3V0cHV0XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTm9ybWFsaXplSVB2NlJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhvc3QgLSBUaGUgbm9ybWFsaXplZCBob3N0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtlc2NhcGVkSG9zdF0gLSBUaGUgZXNjYXBlZCBob3N0LlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc0lQVjYgLSBJbmRpY2F0ZXMgaWYgdGhlIGhvc3QgaXMgYW4gSVB2NiBhZGRyZXNzLlxuICovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGhvc3RcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVJUHY2UmVzdWx0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJUHY2IChob3N0KSB7XG4gIGlmIChmaW5kVG9rZW4oaG9zdCwgJzonKSA8IDIpIHsgcmV0dXJuIHsgaG9zdCwgaXNJUFY2OiBmYWxzZSB9IH1cbiAgY29uc3QgaXB2NiA9IGdldElQVjYoaG9zdClcblxuICBpZiAoIWlwdjYuZXJyb3IpIHtcbiAgICBsZXQgbmV3SG9zdCA9IGlwdjYuYWRkcmVzc1xuICAgIGxldCBlc2NhcGVkSG9zdCA9IGlwdjYuYWRkcmVzc1xuICAgIGlmIChpcHY2LnpvbmUpIHtcbiAgICAgIG5ld0hvc3QgKz0gJyUnICsgaXB2Ni56b25lXG4gICAgICBlc2NhcGVkSG9zdCArPSAnJTI1JyArIGlwdjYuem9uZVxuICAgIH1cbiAgICByZXR1cm4geyBob3N0OiBuZXdIb3N0LCBpc0lQVjY6IHRydWUsIGVzY2FwZWRIb3N0IH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBob3N0LCBpc0lQVjY6IGZhbHNlIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlblxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZmluZFRva2VuIChzdHIsIHRva2VuKSB7XG4gIGxldCBpbmQgPSAwXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0cltpXSA9PT0gdG9rZW4pIGluZCsrXG4gIH1cbiAgcmV0dXJuIGluZFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjRcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMgKHBhdGgpIHtcbiAgbGV0IGlucHV0ID0gcGF0aFxuICBjb25zdCBvdXRwdXQgPSBbXVxuICBsZXQgbmV4dFNsYXNoID0gLTFcbiAgbGV0IGxlbiA9IDBcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKGxlbiA9IGlucHV0Lmxlbmd0aCkge1xuICAgIGlmIChsZW4gPT09IDEpIHtcbiAgICAgIGlmIChpbnB1dCA9PT0gJy4nKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnLycpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJy8nKVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2goaW5wdXQpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgIGlmIChpbnB1dFswXSA9PT0gJy4nKSB7XG4gICAgICAgIGlmIChpbnB1dFsxXSA9PT0gJy4nKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dFsxXSA9PT0gJy8nKSB7XG4gICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgyKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaW5wdXRbMF0gPT09ICcvJykge1xuICAgICAgICBpZiAoaW5wdXRbMV0gPT09ICcuJyB8fCBpbnB1dFsxXSA9PT0gJy8nKSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goJy8nKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlbiA9PT0gMykge1xuICAgICAgaWYgKGlucHV0ID09PSAnLy4uJykge1xuICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIG91dHB1dC5wb3AoKVxuICAgICAgICB9XG4gICAgICAgIG91dHB1dC5wdXNoKCcvJylcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlucHV0WzBdID09PSAnLicpIHtcbiAgICAgIGlmIChpbnB1dFsxXSA9PT0gJy4nKSB7XG4gICAgICAgIGlmIChpbnB1dFsyXSA9PT0gJy8nKSB7XG4gICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgzKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaW5wdXRbMV0gPT09ICcvJykge1xuICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDIpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbnB1dFswXSA9PT0gJy8nKSB7XG4gICAgICBpZiAoaW5wdXRbMV0gPT09ICcuJykge1xuICAgICAgICBpZiAoaW5wdXRbMl0gPT09ICcvJykge1xuICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMilcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0WzJdID09PSAnLicpIHtcbiAgICAgICAgICBpZiAoaW5wdXRbM10gPT09ICcvJykge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgzKVxuICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgb3V0cHV0LnBvcCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJ1bGUgMkU6IE1vdmUgbm9ybWFsIHBhdGggc2VnbWVudCB0byBvdXRwdXRcbiAgICBpZiAoKG5leHRTbGFzaCA9IGlucHV0LmluZGV4T2YoJy8nLCAxKSkgPT09IC0xKSB7XG4gICAgICBvdXRwdXQucHVzaChpbnB1dClcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKGlucHV0LnNsaWNlKDAsIG5leHRTbGFzaCkpXG4gICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKG5leHRTbGFzaClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZXNjXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcgKGNvbXBvbmVudCwgZXNjKSB7XG4gIGNvbnN0IGZ1bmMgPSBlc2MgIT09IHRydWUgPyBlc2NhcGUgOiB1bmVzY2FwZVxuICBpZiAoY29tcG9uZW50LnNjaGVtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50LnNjaGVtZSA9IGZ1bmMoY29tcG9uZW50LnNjaGVtZSlcbiAgfVxuICBpZiAoY29tcG9uZW50LnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQudXNlcmluZm8gPSBmdW5jKGNvbXBvbmVudC51c2VyaW5mbylcbiAgfVxuICBpZiAoY29tcG9uZW50Lmhvc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC5ob3N0ID0gZnVuYyhjb21wb25lbnQuaG9zdClcbiAgfVxuICBpZiAoY29tcG9uZW50LnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC5wYXRoID0gZnVuYyhjb21wb25lbnQucGF0aClcbiAgfVxuICBpZiAoY29tcG9uZW50LnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQucXVlcnkgPSBmdW5jKGNvbXBvbmVudC5xdWVyeSlcbiAgfVxuICBpZiAoY29tcG9uZW50LmZyYWdtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQuZnJhZ21lbnQgPSBmdW5jKGNvbXBvbmVudC5mcmFnbWVudClcbiAgfVxuICByZXR1cm4gY29tcG9uZW50XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfVxuICovXG5mdW5jdGlvbiByZWNvbXBvc2VBdXRob3JpdHkgKGNvbXBvbmVudCkge1xuICBjb25zdCB1cmlUb2tlbnMgPSBbXVxuXG4gIGlmIChjb21wb25lbnQudXNlcmluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudC51c2VyaW5mbylcbiAgICB1cmlUb2tlbnMucHVzaCgnQCcpXG4gIH1cblxuICBpZiAoY29tcG9uZW50Lmhvc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBob3N0ID0gdW5lc2NhcGUoY29tcG9uZW50Lmhvc3QpXG4gICAgaWYgKCFpc0lQdjQoaG9zdCkpIHtcbiAgICAgIGNvbnN0IGlwVjZyZXMgPSBub3JtYWxpemVJUHY2KGhvc3QpXG4gICAgICBpZiAoaXBWNnJlcy5pc0lQVjYgPT09IHRydWUpIHtcbiAgICAgICAgaG9zdCA9IGBbJHtpcFY2cmVzLmVzY2FwZWRIb3N0fV1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBob3N0ID0gY29tcG9uZW50Lmhvc3RcbiAgICAgIH1cbiAgICB9XG4gICAgdXJpVG9rZW5zLnB1c2goaG9zdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29tcG9uZW50LnBvcnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBjb21wb25lbnQucG9ydCA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmlUb2tlbnMucHVzaCgnOicpXG4gICAgdXJpVG9rZW5zLnB1c2goU3RyaW5nKGNvbXBvbmVudC5wb3J0KSlcbiAgfVxuXG4gIHJldHVybiB1cmlUb2tlbnMubGVuZ3RoID8gdXJpVG9rZW5zLmpvaW4oJycpIDogdW5kZWZpbmVkXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbm9uU2ltcGxlRG9tYWluLFxuICByZWNvbXBvc2VBdXRob3JpdHksXG4gIG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nLFxuICByZW1vdmVEb3RTZWdtZW50cyxcbiAgaXNJUHY0LFxuICBpc1VVSUQsXG4gIG5vcm1hbGl6ZUlQdjYsXG4gIHN0cmluZ0FycmF5VG9IZXhTdHJpcHBlZFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGlzVVVJRCB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBVUk5fUkVHID0gLyhbXFxkYS16XVtcXGRcXC1hLXpdezAsMzF9KTooKD86W1xcdyEkJygpKissXFwtLjo7PUBdfCVbXFxkYS1mXXsyfSkrKS9pdVxuXG5jb25zdCBzdXBwb3J0ZWRTY2hlbWVOYW1lcyA9IC8qKiBAdHlwZSB7Y29uc3R9ICovIChbJ2h0dHAnLCAnaHR0cHMnLCAnd3MnLFxuICAnd3NzJywgJ3VybicsICd1cm46dXVpZCddKVxuXG4vKiogQHR5cGVkZWYge3N1cHBvcnRlZFNjaGVtZU5hbWVzW251bWJlcl19IFNjaGVtZU5hbWUgKi9cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge25hbWUgaXMgU2NoZW1lTmFtZX1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFNjaGVtZU5hbWUgKG5hbWUpIHtcbiAgcmV0dXJuIHN1cHBvcnRlZFNjaGVtZU5hbWVzLmluZGV4T2YoLyoqIEB0eXBlIHsqfSAqLyAobmFtZSkpICE9PSAtMVxufVxuXG4vKipcbiAqIEBjYWxsYmFjayBTY2hlbWVGblxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2NoZW1lSGFuZGxlclxuICogQHByb3BlcnR5IHtTY2hlbWVOYW1lfSBzY2hlbWUgLSBUaGUgc2NoZW1lIG5hbWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkb21haW5Ib3N0XSAtIEluZGljYXRlcyBpZiB0aGUgc2NoZW1lIHN1cHBvcnRzIGRvbWFpbiBob3N0cy5cbiAqIEBwcm9wZXJ0eSB7U2NoZW1lRm59IHBhcnNlIC0gRnVuY3Rpb24gdG8gcGFyc2UgdGhlIFVSSSBjb21wb25lbnQgZm9yIHRoaXMgc2NoZW1lLlxuICogQHByb3BlcnR5IHtTY2hlbWVGbn0gc2VyaWFsaXplIC0gRnVuY3Rpb24gdG8gc2VyaWFsaXplIHRoZSBVUkkgY29tcG9uZW50IGZvciB0aGlzIHNjaGVtZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3NraXBOb3JtYWxpemVdIC0gSW5kaWNhdGVzIGlmIG5vcm1hbGl6YXRpb24gc2hvdWxkIGJlIHNraXBwZWQgZm9yIHRoaXMgc2NoZW1lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbYWJzb2x1dGVQYXRoXSAtIEluZGljYXRlcyBpZiB0aGUgc2NoZW1lIHVzZXMgYWJzb2x1dGUgcGF0aHMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt1bmljb2RlU3VwcG9ydF0gLSBJbmRpY2F0ZXMgaWYgdGhlIHNjaGVtZSBzdXBwb3J0cyBVbmljb2RlLlxuICovXG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSB3c0NvbXBvbmVudFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHdzSXNTZWN1cmUgKHdzQ29tcG9uZW50KSB7XG4gIGlmICh3c0NvbXBvbmVudC5zZWN1cmUgPT09IHRydWUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGVsc2UgaWYgKHdzQ29tcG9uZW50LnNlY3VyZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICh3c0NvbXBvbmVudC5zY2hlbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgd3NDb21wb25lbnQuc2NoZW1lLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVswXSA9PT0gJ3cnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVswXSA9PT0gJ1cnKSAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVsxXSA9PT0gJ3MnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVsxXSA9PT0gJ1MnKSAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVsyXSA9PT0gJ3MnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVsyXSA9PT0gJ1MnKVxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gaHR0cFBhcnNlIChjb21wb25lbnQpIHtcbiAgaWYgKCFjb21wb25lbnQuaG9zdCkge1xuICAgIGNvbXBvbmVudC5lcnJvciA9IGNvbXBvbmVudC5lcnJvciB8fCAnSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuJ1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gaHR0cFNlcmlhbGl6ZSAoY29tcG9uZW50KSB7XG4gIGNvbnN0IHNlY3VyZSA9IFN0cmluZyhjb21wb25lbnQuc2NoZW1lKS50b0xvd2VyQ2FzZSgpID09PSAnaHR0cHMnXG5cbiAgLy8gbm9ybWFsaXplIHRoZSBkZWZhdWx0IHBvcnRcbiAgaWYgKGNvbXBvbmVudC5wb3J0ID09PSAoc2VjdXJlID8gNDQzIDogODApIHx8IGNvbXBvbmVudC5wb3J0ID09PSAnJykge1xuICAgIGNvbXBvbmVudC5wb3J0ID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyBub3JtYWxpemUgdGhlIGVtcHR5IHBhdGhcbiAgaWYgKCFjb21wb25lbnQucGF0aCkge1xuICAgIGNvbXBvbmVudC5wYXRoID0gJy8nXG4gIH1cblxuICAvLyBOT1RFOiBXZSBkbyBub3QgcGFyc2UgcXVlcnkgc3RyaW5ncyBmb3IgSFRUUCBVUklzXG4gIC8vIGFzIFdXVyBGb3JtIFVybCBFbmNvZGVkIHF1ZXJ5IHN0cmluZ3MgYXJlIHBhcnQgb2YgdGhlIEhUTUw0KyBzcGVjLFxuICAvLyBhbmQgbm90IHRoZSBIVFRQIHNwZWMuXG5cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gd3NQYXJzZSAod3NDb21wb25lbnQpIHtcbi8vIGluZGljYXRlIGlmIHRoZSBzZWN1cmUgZmxhZyBpcyBzZXRcbiAgd3NDb21wb25lbnQuc2VjdXJlID0gd3NJc1NlY3VyZSh3c0NvbXBvbmVudClcblxuICAvLyBjb25zdHJ1Y3QgcmVzb3VjZSBuYW1lXG4gIHdzQ29tcG9uZW50LnJlc291cmNlTmFtZSA9ICh3c0NvbXBvbmVudC5wYXRoIHx8ICcvJykgKyAod3NDb21wb25lbnQucXVlcnkgPyAnPycgKyB3c0NvbXBvbmVudC5xdWVyeSA6ICcnKVxuICB3c0NvbXBvbmVudC5wYXRoID0gdW5kZWZpbmVkXG4gIHdzQ29tcG9uZW50LnF1ZXJ5ID0gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHdzQ29tcG9uZW50XG59XG5cbi8qKiBAdHlwZSB7U2NoZW1lRm59ICovXG5mdW5jdGlvbiB3c1NlcmlhbGl6ZSAod3NDb21wb25lbnQpIHtcbi8vIG5vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gIGlmICh3c0NvbXBvbmVudC5wb3J0ID09PSAod3NJc1NlY3VyZSh3c0NvbXBvbmVudCkgPyA0NDMgOiA4MCkgfHwgd3NDb21wb25lbnQucG9ydCA9PT0gJycpIHtcbiAgICB3c0NvbXBvbmVudC5wb3J0ID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyBlbnN1cmUgc2NoZW1lIG1hdGNoZXMgc2VjdXJlIGZsYWdcbiAgaWYgKHR5cGVvZiB3c0NvbXBvbmVudC5zZWN1cmUgPT09ICdib29sZWFuJykge1xuICAgIHdzQ29tcG9uZW50LnNjaGVtZSA9ICh3c0NvbXBvbmVudC5zZWN1cmUgPyAnd3NzJyA6ICd3cycpXG4gICAgd3NDb21wb25lbnQuc2VjdXJlID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyByZWNvbnN0cnVjdCBwYXRoIGZyb20gcmVzb3VyY2UgbmFtZVxuICBpZiAod3NDb21wb25lbnQucmVzb3VyY2VOYW1lKSB7XG4gICAgY29uc3QgW3BhdGgsIHF1ZXJ5XSA9IHdzQ29tcG9uZW50LnJlc291cmNlTmFtZS5zcGxpdCgnPycpXG4gICAgd3NDb21wb25lbnQucGF0aCA9IChwYXRoICYmIHBhdGggIT09ICcvJyA/IHBhdGggOiB1bmRlZmluZWQpXG4gICAgd3NDb21wb25lbnQucXVlcnkgPSBxdWVyeVxuICAgIHdzQ29tcG9uZW50LnJlc291cmNlTmFtZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gZm9yYmlkIGZyYWdtZW50IGNvbXBvbmVudFxuICB3c0NvbXBvbmVudC5mcmFnbWVudCA9IHVuZGVmaW5lZFxuXG4gIHJldHVybiB3c0NvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJuUGFyc2UgKHVybkNvbXBvbmVudCwgb3B0aW9ucykge1xuICBpZiAoIXVybkNvbXBvbmVudC5wYXRoKSB7XG4gICAgdXJuQ29tcG9uZW50LmVycm9yID0gJ1VSTiBjYW4gbm90IGJlIHBhcnNlZCdcbiAgICByZXR1cm4gdXJuQ29tcG9uZW50XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHVybkNvbXBvbmVudC5wYXRoLm1hdGNoKFVSTl9SRUcpXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgY29uc3Qgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50LnNjaGVtZSB8fCAndXJuJ1xuICAgIHVybkNvbXBvbmVudC5uaWQgPSBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKClcbiAgICB1cm5Db21wb25lbnQubnNzID0gbWF0Y2hlc1syXVxuICAgIGNvbnN0IHVyblNjaGVtZSA9IGAke3NjaGVtZX06JHtvcHRpb25zLm5pZCB8fCB1cm5Db21wb25lbnQubmlkfWBcbiAgICBjb25zdCBzY2hlbWVIYW5kbGVyID0gZ2V0U2NoZW1lSGFuZGxlcih1cm5TY2hlbWUpXG4gICAgdXJuQ29tcG9uZW50LnBhdGggPSB1bmRlZmluZWRcblxuICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICB1cm5Db21wb25lbnQgPSBzY2hlbWVIYW5kbGVyLnBhcnNlKHVybkNvbXBvbmVudCwgb3B0aW9ucylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdXJuQ29tcG9uZW50LmVycm9yID0gdXJuQ29tcG9uZW50LmVycm9yIHx8ICdVUk4gY2FuIG5vdCBiZSBwYXJzZWQuJ1xuICB9XG5cbiAgcmV0dXJuIHVybkNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJuU2VyaWFsaXplICh1cm5Db21wb25lbnQsIG9wdGlvbnMpIHtcbiAgaWYgKHVybkNvbXBvbmVudC5uaWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVVJOIHdpdGhvdXQgbmlkIGNhbm5vdCBiZSBzZXJpYWxpemVkJylcbiAgfVxuICBjb25zdCBzY2hlbWUgPSBvcHRpb25zLnNjaGVtZSB8fCB1cm5Db21wb25lbnQuc2NoZW1lIHx8ICd1cm4nXG4gIGNvbnN0IG5pZCA9IHVybkNvbXBvbmVudC5uaWQudG9Mb3dlckNhc2UoKVxuICBjb25zdCB1cm5TY2hlbWUgPSBgJHtzY2hlbWV9OiR7b3B0aW9ucy5uaWQgfHwgbmlkfWBcbiAgY29uc3Qgc2NoZW1lSGFuZGxlciA9IGdldFNjaGVtZUhhbmRsZXIodXJuU2NoZW1lKVxuXG4gIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgdXJuQ29tcG9uZW50ID0gc2NoZW1lSGFuZGxlci5zZXJpYWxpemUodXJuQ29tcG9uZW50LCBvcHRpb25zKVxuICB9XG5cbiAgY29uc3QgdXJpQ29tcG9uZW50ID0gdXJuQ29tcG9uZW50XG4gIGNvbnN0IG5zcyA9IHVybkNvbXBvbmVudC5uc3NcbiAgdXJpQ29tcG9uZW50LnBhdGggPSBgJHtuaWQgfHwgb3B0aW9ucy5uaWR9OiR7bnNzfWBcblxuICBvcHRpb25zLnNraXBFc2NhcGUgPSB0cnVlXG4gIHJldHVybiB1cmlDb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHVybnV1aWRQYXJzZSAodXJuQ29tcG9uZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IHV1aWRDb21wb25lbnQgPSB1cm5Db21wb25lbnRcbiAgdXVpZENvbXBvbmVudC51dWlkID0gdXVpZENvbXBvbmVudC5uc3NcbiAgdXVpZENvbXBvbmVudC5uc3MgPSB1bmRlZmluZWRcblxuICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgKCF1dWlkQ29tcG9uZW50LnV1aWQgfHwgIWlzVVVJRCh1dWlkQ29tcG9uZW50LnV1aWQpKSkge1xuICAgIHV1aWRDb21wb25lbnQuZXJyb3IgPSB1dWlkQ29tcG9uZW50LmVycm9yIHx8ICdVVUlEIGlzIG5vdCB2YWxpZC4nXG4gIH1cblxuICByZXR1cm4gdXVpZENvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJudXVpZFNlcmlhbGl6ZSAodXVpZENvbXBvbmVudCkge1xuICBjb25zdCB1cm5Db21wb25lbnQgPSB1dWlkQ29tcG9uZW50XG4gIC8vIG5vcm1hbGl6ZSBVVUlEXG4gIHVybkNvbXBvbmVudC5uc3MgPSAodXVpZENvbXBvbmVudC51dWlkIHx8ICcnKS50b0xvd2VyQ2FzZSgpXG4gIHJldHVybiB1cm5Db21wb25lbnRcbn1cblxuY29uc3QgaHR0cCA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAnaHR0cCcsXG4gIGRvbWFpbkhvc3Q6IHRydWUsXG4gIHBhcnNlOiBodHRwUGFyc2UsXG4gIHNlcmlhbGl6ZTogaHR0cFNlcmlhbGl6ZVxufSlcblxuY29uc3QgaHR0cHMgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ2h0dHBzJyxcbiAgZG9tYWluSG9zdDogaHR0cC5kb21haW5Ib3N0LFxuICBwYXJzZTogaHR0cFBhcnNlLFxuICBzZXJpYWxpemU6IGh0dHBTZXJpYWxpemVcbn0pXG5cbmNvbnN0IHdzID0gLyoqIEB0eXBlIHtTY2hlbWVIYW5kbGVyfSAqLyAoe1xuICBzY2hlbWU6ICd3cycsXG4gIGRvbWFpbkhvc3Q6IHRydWUsXG4gIHBhcnNlOiB3c1BhcnNlLFxuICBzZXJpYWxpemU6IHdzU2VyaWFsaXplXG59KVxuXG5jb25zdCB3c3MgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ3dzcycsXG4gIGRvbWFpbkhvc3Q6IHdzLmRvbWFpbkhvc3QsXG4gIHBhcnNlOiB3cy5wYXJzZSxcbiAgc2VyaWFsaXplOiB3cy5zZXJpYWxpemVcbn0pXG5cbmNvbnN0IHVybiA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAndXJuJyxcbiAgcGFyc2U6IHVyblBhcnNlLFxuICBzZXJpYWxpemU6IHVyblNlcmlhbGl6ZSxcbiAgc2tpcE5vcm1hbGl6ZTogdHJ1ZVxufSlcblxuY29uc3QgdXJudXVpZCA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAndXJuOnV1aWQnLFxuICBwYXJzZTogdXJudXVpZFBhcnNlLFxuICBzZXJpYWxpemU6IHVybnV1aWRTZXJpYWxpemUsXG4gIHNraXBOb3JtYWxpemU6IHRydWVcbn0pXG5cbmNvbnN0IFNDSEVNRVMgPSAvKiogQHR5cGUge1JlY29yZDxTY2hlbWVOYW1lLCBTY2hlbWVIYW5kbGVyPn0gKi8gKHtcbiAgaHR0cCxcbiAgaHR0cHMsXG4gIHdzLFxuICB3c3MsXG4gIHVybixcbiAgJ3Vybjp1dWlkJzogdXJudXVpZFxufSlcblxuT2JqZWN0LnNldFByb3RvdHlwZU9mKFNDSEVNRVMsIG51bGwpXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBzY2hlbWVcbiAqIEByZXR1cm5zIHtTY2hlbWVIYW5kbGVyfHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gZ2V0U2NoZW1lSGFuZGxlciAoc2NoZW1lKSB7XG4gIHJldHVybiAoXG4gICAgc2NoZW1lICYmIChcbiAgICAgIFNDSEVNRVNbLyoqIEB0eXBlIHtTY2hlbWVOYW1lfSAqLyAoc2NoZW1lKV0gfHxcbiAgICAgIFNDSEVNRVNbLyoqIEB0eXBlIHtTY2hlbWVOYW1lfSAqLyhzY2hlbWUudG9Mb3dlckNhc2UoKSldKVxuICApIHx8XG4gICAgdW5kZWZpbmVkXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3c0lzU2VjdXJlLFxuICBTQ0hFTUVTLFxuICBpc1ZhbGlkU2NoZW1lTmFtZSxcbiAgZ2V0U2NoZW1lSGFuZGxlcixcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBub3JtYWxpemVJUHY2LCByZW1vdmVEb3RTZWdtZW50cywgcmVjb21wb3NlQXV0aG9yaXR5LCBub3JtYWxpemVDb21wb25lbnRFbmNvZGluZywgaXNJUHY0LCBub25TaW1wbGVEb21haW4gfSA9IHJlcXVpcmUoJy4vbGliL3V0aWxzJylcbmNvbnN0IHsgU0NIRU1FUywgZ2V0U2NoZW1lSGFuZGxlciB9ID0gcmVxdWlyZSgnLi9saWIvc2NoZW1lcycpXG5cbi8qKlxuICogQHRlbXBsYXRlIHtpbXBvcnQoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR8c3RyaW5nfSBUXG4gKiBAcGFyYW0ge1R9IHVyaVxuICogQHBhcmFtIHtpbXBvcnQoJy4vdHlwZXMvaW5kZXgnKS5PcHRpb25zfSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHtUfVxuICovXG5mdW5jdGlvbiBub3JtYWxpemUgKHVyaSwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHVyaSA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmkgPSAvKiogQHR5cGUge1R9ICovIChzZXJpYWxpemUocGFyc2UodXJpLCBvcHRpb25zKSwgb3B0aW9ucykpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHVyaSA9PT0gJ29iamVjdCcpIHtcbiAgICB1cmkgPSAvKiogQHR5cGUge1R9ICovIChwYXJzZShzZXJpYWxpemUodXJpLCBvcHRpb25zKSwgb3B0aW9ucykpXG4gIH1cbiAgcmV0dXJuIHVyaVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJJXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUklcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuT3B0aW9uc30gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiByZXNvbHZlIChiYXNlVVJJLCByZWxhdGl2ZVVSSSwgb3B0aW9ucykge1xuICBjb25zdCBzY2hlbWVsZXNzT3B0aW9ucyA9IG9wdGlvbnMgPyBPYmplY3QuYXNzaWduKHsgc2NoZW1lOiAnbnVsbCcgfSwgb3B0aW9ucykgOiB7IHNjaGVtZTogJ251bGwnIH1cbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlQ29tcG9uZW50KHBhcnNlKGJhc2VVUkksIHNjaGVtZWxlc3NPcHRpb25zKSwgcGFyc2UocmVsYXRpdmVVUkksIHNjaGVtZWxlc3NPcHRpb25zKSwgc2NoZW1lbGVzc09wdGlvbnMsIHRydWUpXG4gIHNjaGVtZWxlc3NPcHRpb25zLnNraXBFc2NhcGUgPSB0cnVlXG4gIHJldHVybiBzZXJpYWxpemUocmVzb2x2ZWQsIHNjaGVtZWxlc3NPcHRpb25zKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0ICgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gYmFzZVxuICogQHBhcmFtIHtpbXBvcnQgKCcuL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSByZWxhdGl2ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vdHlwZXMvaW5kZXgnKS5PcHRpb25zfSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3NraXBOb3JtYWxpemF0aW9uPWZhbHNlXVxuICogQHJldHVybnMge2ltcG9ydCAoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnQgKGJhc2UsIHJlbGF0aXZlLCBvcHRpb25zLCBza2lwTm9ybWFsaXphdGlvbikge1xuICAvKiogQHR5cGUge2ltcG9ydCgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gKi9cbiAgY29uc3QgdGFyZ2V0ID0ge31cbiAgaWYgKCFza2lwTm9ybWFsaXphdGlvbikge1xuICAgIGJhc2UgPSBwYXJzZShzZXJpYWxpemUoYmFzZSwgb3B0aW9ucyksIG9wdGlvbnMpIC8vIG5vcm1hbGl6ZSBiYXNlIGNvbXBvbmVudFxuICAgIHJlbGF0aXZlID0gcGFyc2Uoc2VyaWFsaXplKHJlbGF0aXZlLCBvcHRpb25zKSwgb3B0aW9ucykgLy8gbm9ybWFsaXplIHJlbGF0aXZlIGNvbXBvbmVudFxuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgaWYgKCFvcHRpb25zLnRvbGVyYW50ICYmIHJlbGF0aXZlLnNjaGVtZSkge1xuICAgIHRhcmdldC5zY2hlbWUgPSByZWxhdGl2ZS5zY2hlbWVcbiAgICAvLyB0YXJnZXQuYXV0aG9yaXR5ID0gcmVsYXRpdmUuYXV0aG9yaXR5O1xuICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvXG4gICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0XG4gICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0XG4gICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8ICcnKVxuICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJlbGF0aXZlLnVzZXJpbmZvICE9PSB1bmRlZmluZWQgfHwgcmVsYXRpdmUuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLnBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvXG4gICAgICB0YXJnZXQuaG9zdCA9IHJlbGF0aXZlLmhvc3RcbiAgICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydFxuICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8ICcnKVxuICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFyZWxhdGl2ZS5wYXRoKSB7XG4gICAgICAgIHRhcmdldC5wYXRoID0gYmFzZS5wYXRoXG4gICAgICAgIGlmIChyZWxhdGl2ZS5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQucXVlcnkgPSBiYXNlLnF1ZXJ5XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZWxhdGl2ZS5wYXRoWzBdID09PSAnLycpIHtcbiAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKChiYXNlLnVzZXJpbmZvICE9PSB1bmRlZmluZWQgfHwgYmFzZS5ob3N0ICE9PSB1bmRlZmluZWQgfHwgYmFzZS5wb3J0ICE9PSB1bmRlZmluZWQpICYmICFiYXNlLnBhdGgpIHtcbiAgICAgICAgICAgIHRhcmdldC5wYXRoID0gJy8nICsgcmVsYXRpdmUucGF0aFxuICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2UucGF0aCkge1xuICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZWxhdGl2ZS5wYXRoXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKDAsIGJhc2UucGF0aC5sYXN0SW5kZXhPZignLycpICsgMSkgKyByZWxhdGl2ZS5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHModGFyZ2V0LnBhdGgpXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnlcbiAgICAgIH1cbiAgICAgIC8vIHRhcmdldC5hdXRob3JpdHkgPSBiYXNlLmF1dGhvcml0eTtcbiAgICAgIHRhcmdldC51c2VyaW5mbyA9IGJhc2UudXNlcmluZm9cbiAgICAgIHRhcmdldC5ob3N0ID0gYmFzZS5ob3N0XG4gICAgICB0YXJnZXQucG9ydCA9IGJhc2UucG9ydFxuICAgIH1cbiAgICB0YXJnZXQuc2NoZW1lID0gYmFzZS5zY2hlbWVcbiAgfVxuXG4gIHRhcmdldC5mcmFnbWVudCA9IHJlbGF0aXZlLmZyYWdtZW50XG5cbiAgcmV0dXJuIHRhcmdldFxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0ICgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudHxzdHJpbmd9IHVyaUFcbiAqIEBwYXJhbSB7aW1wb3J0ICgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudHxzdHJpbmd9IHVyaUJcbiAqIEBwYXJhbSB7aW1wb3J0ICgnLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBlcXVhbCAodXJpQSwgdXJpQiwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHVyaUEgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJpQSA9IHVuZXNjYXBlKHVyaUEpXG4gICAgdXJpQSA9IHNlcmlhbGl6ZShub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhwYXJzZSh1cmlBLCBvcHRpb25zKSwgdHJ1ZSksIHsgLi4ub3B0aW9ucywgc2tpcEVzY2FwZTogdHJ1ZSB9KVxuICB9IGVsc2UgaWYgKHR5cGVvZiB1cmlBID09PSAnb2JqZWN0Jykge1xuICAgIHVyaUEgPSBzZXJpYWxpemUobm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcodXJpQSwgdHJ1ZSksIHsgLi4ub3B0aW9ucywgc2tpcEVzY2FwZTogdHJ1ZSB9KVxuICB9XG5cbiAgaWYgKHR5cGVvZiB1cmlCID09PSAnc3RyaW5nJykge1xuICAgIHVyaUIgPSB1bmVzY2FwZSh1cmlCKVxuICAgIHVyaUIgPSBzZXJpYWxpemUobm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcocGFyc2UodXJpQiwgb3B0aW9ucyksIHRydWUpLCB7IC4uLm9wdGlvbnMsIHNraXBFc2NhcGU6IHRydWUgfSlcbiAgfSBlbHNlIGlmICh0eXBlb2YgdXJpQiA9PT0gJ29iamVjdCcpIHtcbiAgICB1cmlCID0gc2VyaWFsaXplKG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKHVyaUIsIHRydWUpLCB7IC4uLm9wdGlvbnMsIHNraXBFc2NhcGU6IHRydWUgfSlcbiAgfVxuXG4gIHJldHVybiB1cmlBLnRvTG93ZXJDYXNlKCkgPT09IHVyaUIudG9Mb3dlckNhc2UoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhZG9ubHk8aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50Pn0gY21wdHNcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuT3B0aW9uc30gW29wdHNdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzZXJpYWxpemUgKGNtcHRzLCBvcHRzKSB7XG4gIGNvbnN0IGNvbXBvbmVudCA9IHtcbiAgICBob3N0OiBjbXB0cy5ob3N0LFxuICAgIHNjaGVtZTogY21wdHMuc2NoZW1lLFxuICAgIHVzZXJpbmZvOiBjbXB0cy51c2VyaW5mbyxcbiAgICBwb3J0OiBjbXB0cy5wb3J0LFxuICAgIHBhdGg6IGNtcHRzLnBhdGgsXG4gICAgcXVlcnk6IGNtcHRzLnF1ZXJ5LFxuICAgIG5pZDogY21wdHMubmlkLFxuICAgIG5zczogY21wdHMubnNzLFxuICAgIHV1aWQ6IGNtcHRzLnV1aWQsXG4gICAgZnJhZ21lbnQ6IGNtcHRzLmZyYWdtZW50LFxuICAgIHJlZmVyZW5jZTogY21wdHMucmVmZXJlbmNlLFxuICAgIHJlc291cmNlTmFtZTogY21wdHMucmVzb3VyY2VOYW1lLFxuICAgIHNlY3VyZTogY21wdHMuc2VjdXJlLFxuICAgIGVycm9yOiAnJ1xuICB9XG4gIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRzKVxuICBjb25zdCB1cmlUb2tlbnMgPSBbXVxuXG4gIC8vIGZpbmQgc2NoZW1lIGhhbmRsZXJcbiAgY29uc3Qgc2NoZW1lSGFuZGxlciA9IGdldFNjaGVtZUhhbmRsZXIob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50LnNjaGVtZSlcblxuICAvLyBwZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBzZXJpYWxpemF0aW9uXG4gIGlmIChzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKSBzY2hlbWVIYW5kbGVyLnNlcmlhbGl6ZShjb21wb25lbnQsIG9wdGlvbnMpXG5cbiAgaWYgKGNvbXBvbmVudC5wYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIW9wdGlvbnMuc2tpcEVzY2FwZSkge1xuICAgICAgY29tcG9uZW50LnBhdGggPSBlc2NhcGUoY29tcG9uZW50LnBhdGgpXG5cbiAgICAgIGlmIChjb21wb25lbnQuc2NoZW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29tcG9uZW50LnBhdGggPSBjb21wb25lbnQucGF0aC5zcGxpdCgnJTNBJykuam9pbignOicpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC5wYXRoID0gdW5lc2NhcGUoY29tcG9uZW50LnBhdGgpXG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSAnc3VmZml4JyAmJiBjb21wb25lbnQuc2NoZW1lKSB7XG4gICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50LnNjaGVtZSwgJzonKVxuICB9XG5cbiAgY29uc3QgYXV0aG9yaXR5ID0gcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudClcbiAgaWYgKGF1dGhvcml0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSAnc3VmZml4Jykge1xuICAgICAgdXJpVG9rZW5zLnB1c2goJy8vJylcbiAgICB9XG5cbiAgICB1cmlUb2tlbnMucHVzaChhdXRob3JpdHkpXG5cbiAgICBpZiAoY29tcG9uZW50LnBhdGggJiYgY29tcG9uZW50LnBhdGhbMF0gIT09ICcvJykge1xuICAgICAgdXJpVG9rZW5zLnB1c2goJy8nKVxuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50LnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBzID0gY29tcG9uZW50LnBhdGhcblxuICAgIGlmICghb3B0aW9ucy5hYnNvbHV0ZVBhdGggJiYgKCFzY2hlbWVIYW5kbGVyIHx8ICFzY2hlbWVIYW5kbGVyLmFic29sdXRlUGF0aCkpIHtcbiAgICAgIHMgPSByZW1vdmVEb3RTZWdtZW50cyhzKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGF1dGhvcml0eSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICBzWzBdID09PSAnLycgJiZcbiAgICAgIHNbMV0gPT09ICcvJ1xuICAgICkge1xuICAgICAgLy8gZG9uJ3QgYWxsb3cgdGhlIHBhdGggdG8gc3RhcnQgd2l0aCBcIi8vXCJcbiAgICAgIHMgPSAnLyUyRicgKyBzLnNsaWNlKDIpXG4gICAgfVxuXG4gICAgdXJpVG9rZW5zLnB1c2gocylcbiAgfVxuXG4gIGlmIChjb21wb25lbnQucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgIHVyaVRva2Vucy5wdXNoKCc/JywgY29tcG9uZW50LnF1ZXJ5KVxuICB9XG5cbiAgaWYgKGNvbXBvbmVudC5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXJpVG9rZW5zLnB1c2goJyMnLCBjb21wb25lbnQuZnJhZ21lbnQpXG4gIH1cbiAgcmV0dXJuIHVyaVRva2Vucy5qb2luKCcnKVxufVxuXG5jb25zdCBVUklfUEFSU0UgPSAvXig/OihbXiMvOj9dKyk6KT8oPzpcXC9cXC8oKD86KFteIy8/QF0qKUApPyhcXFtbXiMvP1xcXV0rXFxdfFteIy86P10qKSg/OjooXFxkKikpPykpPyhbXiM/XSopKD86XFw/KFteI10qKSk/KD86IygoPzoufFtcXG5cXHJdKSopKT8vdVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuT3B0aW9uc30gW29wdHNdXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBwYXJzZSAodXJpLCBvcHRzKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRzKVxuICAvKiogQHR5cGUge2ltcG9ydCgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gKi9cbiAgY29uc3QgcGFyc2VkID0ge1xuICAgIHNjaGVtZTogdW5kZWZpbmVkLFxuICAgIHVzZXJpbmZvOiB1bmRlZmluZWQsXG4gICAgaG9zdDogJycsXG4gICAgcG9ydDogdW5kZWZpbmVkLFxuICAgIHBhdGg6ICcnLFxuICAgIHF1ZXJ5OiB1bmRlZmluZWQsXG4gICAgZnJhZ21lbnQ6IHVuZGVmaW5lZFxuICB9XG5cbiAgbGV0IGlzSVAgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgPT09ICdzdWZmaXgnKSB7XG4gICAgaWYgKG9wdGlvbnMuc2NoZW1lKSB7XG4gICAgICB1cmkgPSBvcHRpb25zLnNjaGVtZSArICc6JyArIHVyaVxuICAgIH0gZWxzZSB7XG4gICAgICB1cmkgPSAnLy8nICsgdXJpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHVyaS5tYXRjaChVUklfUEFSU0UpXG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICAvLyBzdG9yZSBlYWNoIGNvbXBvbmVudFxuICAgIHBhcnNlZC5zY2hlbWUgPSBtYXRjaGVzWzFdXG4gICAgcGFyc2VkLnVzZXJpbmZvID0gbWF0Y2hlc1szXVxuICAgIHBhcnNlZC5ob3N0ID0gbWF0Y2hlc1s0XVxuICAgIHBhcnNlZC5wb3J0ID0gcGFyc2VJbnQobWF0Y2hlc1s1XSwgMTApXG4gICAgcGFyc2VkLnBhdGggPSBtYXRjaGVzWzZdIHx8ICcnXG4gICAgcGFyc2VkLnF1ZXJ5ID0gbWF0Y2hlc1s3XVxuICAgIHBhcnNlZC5mcmFnbWVudCA9IG1hdGNoZXNbOF1cblxuICAgIC8vIGZpeCBwb3J0IG51bWJlclxuICAgIGlmIChpc05hTihwYXJzZWQucG9ydCkpIHtcbiAgICAgIHBhcnNlZC5wb3J0ID0gbWF0Y2hlc1s1XVxuICAgIH1cbiAgICBpZiAocGFyc2VkLmhvc3QpIHtcbiAgICAgIGNvbnN0IGlwdjRyZXN1bHQgPSBpc0lQdjQocGFyc2VkLmhvc3QpXG4gICAgICBpZiAoaXB2NHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaXB2NnJlc3VsdCA9IG5vcm1hbGl6ZUlQdjYocGFyc2VkLmhvc3QpXG4gICAgICAgIHBhcnNlZC5ob3N0ID0gaXB2NnJlc3VsdC5ob3N0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgaXNJUCA9IGlwdjZyZXN1bHQuaXNJUFY2XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc0lQID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyc2VkLnNjaGVtZSA9PT0gdW5kZWZpbmVkICYmIHBhcnNlZC51c2VyaW5mbyA9PT0gdW5kZWZpbmVkICYmIHBhcnNlZC5ob3N0ID09PSB1bmRlZmluZWQgJiYgcGFyc2VkLnBvcnQgPT09IHVuZGVmaW5lZCAmJiBwYXJzZWQucXVlcnkgPT09IHVuZGVmaW5lZCAmJiAhcGFyc2VkLnBhdGgpIHtcbiAgICAgIHBhcnNlZC5yZWZlcmVuY2UgPSAnc2FtZS1kb2N1bWVudCdcbiAgICB9IGVsc2UgaWYgKHBhcnNlZC5zY2hlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyc2VkLnJlZmVyZW5jZSA9ICdyZWxhdGl2ZSdcbiAgICB9IGVsc2UgaWYgKHBhcnNlZC5mcmFnbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJzZWQucmVmZXJlbmNlID0gJ2Fic29sdXRlJ1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWQucmVmZXJlbmNlID0gJ3VyaSdcbiAgICB9XG5cbiAgICAvLyBjaGVjayBmb3IgcmVmZXJlbmNlIGVycm9yc1xuICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAmJiBvcHRpb25zLnJlZmVyZW5jZSAhPT0gJ3N1ZmZpeCcgJiYgb3B0aW9ucy5yZWZlcmVuY2UgIT09IHBhcnNlZC5yZWZlcmVuY2UpIHtcbiAgICAgIHBhcnNlZC5lcnJvciA9IHBhcnNlZC5lcnJvciB8fCAnVVJJIGlzIG5vdCBhICcgKyBvcHRpb25zLnJlZmVyZW5jZSArICcgcmVmZXJlbmNlLidcbiAgICB9XG5cbiAgICAvLyBmaW5kIHNjaGVtZSBoYW5kbGVyXG4gICAgY29uc3Qgc2NoZW1lSGFuZGxlciA9IGdldFNjaGVtZUhhbmRsZXIob3B0aW9ucy5zY2hlbWUgfHwgcGFyc2VkLnNjaGVtZSlcblxuICAgIC8vIGNoZWNrIGlmIHNjaGVtZSBjYW4ndCBoYW5kbGUgSVJJc1xuICAgIGlmICghb3B0aW9ucy51bmljb2RlU3VwcG9ydCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIudW5pY29kZVN1cHBvcnQpKSB7XG4gICAgICAvLyBpZiBob3N0IGNvbXBvbmVudCBpcyBhIGRvbWFpbiBuYW1lXG4gICAgICBpZiAocGFyc2VkLmhvc3QgJiYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLmRvbWFpbkhvc3QpKSAmJiBpc0lQID09PSBmYWxzZSAmJiBub25TaW1wbGVEb21haW4ocGFyc2VkLmhvc3QpKSB7XG4gICAgICAgIC8vIGNvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcGFyc2VkLmhvc3QgPSBVUkwuZG9tYWluVG9BU0NJSShwYXJzZWQuaG9zdC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcGFyc2VkLmVycm9yID0gcGFyc2VkLmVycm9yIHx8IFwiSG9zdCdzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvIEFTQ0lJOiBcIiArIGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gY29udmVydCBJUkkgLT4gVVJJXG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWVIYW5kbGVyIHx8IChzY2hlbWVIYW5kbGVyICYmICFzY2hlbWVIYW5kbGVyLnNraXBOb3JtYWxpemUpKSB7XG4gICAgICBpZiAodXJpLmluZGV4T2YoJyUnKSAhPT0gLTEpIHtcbiAgICAgICAgaWYgKHBhcnNlZC5zY2hlbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcnNlZC5zY2hlbWUgPSB1bmVzY2FwZShwYXJzZWQuc2NoZW1lKVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZWQuaG9zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGFyc2VkLmhvc3QgPSB1bmVzY2FwZShwYXJzZWQuaG9zdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBhcnNlZC5wYXRoKSB7XG4gICAgICAgIHBhcnNlZC5wYXRoID0gZXNjYXBlKHVuZXNjYXBlKHBhcnNlZC5wYXRoKSlcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZWQuZnJhZ21lbnQpIHtcbiAgICAgICAgcGFyc2VkLmZyYWdtZW50ID0gZW5jb2RlVVJJKGRlY29kZVVSSUNvbXBvbmVudChwYXJzZWQuZnJhZ21lbnQpKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBlcmZvcm0gc2NoZW1lIHNwZWNpZmljIHBhcnNpbmdcbiAgICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnBhcnNlKSB7XG4gICAgICBzY2hlbWVIYW5kbGVyLnBhcnNlKHBhcnNlZCwgb3B0aW9ucylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VkLmVycm9yID0gcGFyc2VkLmVycm9yIHx8ICdVUkkgY2FuIG5vdCBiZSBwYXJzZWQuJ1xuICB9XG4gIHJldHVybiBwYXJzZWRcbn1cblxuY29uc3QgZmFzdFVyaSA9IHtcbiAgU0NIRU1FUyxcbiAgbm9ybWFsaXplLFxuICByZXNvbHZlLFxuICByZXNvbHZlQ29tcG9uZW50LFxuICBlcXVhbCxcbiAgc2VyaWFsaXplLFxuICBwYXJzZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhc3RVcmlcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBmYXN0VXJpXG5tb2R1bGUuZXhwb3J0cy5mYXN0VXJpID0gZmFzdFVyaVxuIiwgImltcG9ydCAqIGFzIHVyaSBmcm9tIFwiZmFzdC11cmlcIlxuXG50eXBlIFVSSSA9IHR5cGVvZiB1cmkgJiB7Y29kZTogc3RyaW5nfVxuOyh1cmkgYXMgVVJJKS5jb2RlID0gJ3JlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL3VyaVwiKS5kZWZhdWx0J1xuXG5leHBvcnQgZGVmYXVsdCB1cmkgYXMgVVJJXG4iLCAiZXhwb3J0IHtcbiAgRm9ybWF0LFxuICBGb3JtYXREZWZpbml0aW9uLFxuICBBc3luY0Zvcm1hdERlZmluaXRpb24sXG4gIEtleXdvcmREZWZpbml0aW9uLFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIE1hY3JvS2V5d29yZERlZmluaXRpb24sXG4gIEZ1bmNLZXl3b3JkRGVmaW5pdGlvbixcbiAgVm9jYWJ1bGFyeSxcbiAgU2NoZW1hLFxuICBTY2hlbWFPYmplY3QsXG4gIEFueVNjaGVtYU9iamVjdCxcbiAgQXN5bmNTY2hlbWEsXG4gIEFueVNjaGVtYSxcbiAgVmFsaWRhdGVGdW5jdGlvbixcbiAgQXN5bmNWYWxpZGF0ZUZ1bmN0aW9uLFxuICBBbnlWYWxpZGF0ZUZ1bmN0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgRXJyb3JOb1BhcmFtcyxcbn0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQge1NjaGVtYUN4dCwgU2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi9jb21waWxlXCJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luPE9wdHM+IHtcbiAgKGFqdjogQWp2LCBvcHRpb25zPzogT3B0cyk6IEFqdlxuICBbcHJvcDogc3RyaW5nXTogYW55XG59XG5cbmV4cG9ydCB7S2V5d29yZEN4dH0gZnJvbSBcIi4vY29tcGlsZS92YWxpZGF0ZVwiXG5leHBvcnQge0RlZmluZWRFcnJvcn0gZnJvbSBcIi4vdm9jYWJ1bGFyaWVzL2Vycm9yc1wiXG5leHBvcnQge0pTT05UeXBlfSBmcm9tIFwiLi9jb21waWxlL3J1bGVzXCJcbmV4cG9ydCB7SlNPTlNjaGVtYVR5cGV9IGZyb20gXCIuL3R5cGVzL2pzb24tc2NoZW1hXCJcbmV4cG9ydCB7SlREU2NoZW1hVHlwZSwgU29tZUpURFNjaGVtYVR5cGUsIEpURERhdGFUeXBlfSBmcm9tIFwiLi90eXBlcy9qdGQtc2NoZW1hXCJcbmV4cG9ydCB7Xywgc3RyLCBzdHJpbmdpZnksIG5pbCwgTmFtZSwgQ29kZSwgQ29kZUdlbiwgQ29kZUdlbk9wdGlvbnN9IGZyb20gXCIuL2NvbXBpbGUvY29kZWdlblwiXG5cbmltcG9ydCB0eXBlIHtcbiAgU2NoZW1hLFxuICBBbnlTY2hlbWEsXG4gIEFueVNjaGVtYU9iamVjdCxcbiAgU2NoZW1hT2JqZWN0LFxuICBBc3luY1NjaGVtYSxcbiAgVm9jYWJ1bGFyeSxcbiAgS2V5d29yZERlZmluaXRpb24sXG4gIEFkZGVkS2V5d29yZERlZmluaXRpb24sXG4gIEFueVZhbGlkYXRlRnVuY3Rpb24sXG4gIFZhbGlkYXRlRnVuY3Rpb24sXG4gIEFzeW5jVmFsaWRhdGVGdW5jdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEZvcm1hdCxcbiAgQWRkZWRGb3JtYXQsXG4gIFJlZ0V4cEVuZ2luZSxcbiAgVXJpUmVzb2x2ZXIsXG59IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtKU09OU2NoZW1hVHlwZX0gZnJvbSBcIi4vdHlwZXMvanNvbi1zY2hlbWFcIlxuaW1wb3J0IHR5cGUge0pURFNjaGVtYVR5cGUsIFNvbWVKVERTY2hlbWFUeXBlLCBKVEREYXRhVHlwZX0gZnJvbSBcIi4vdHlwZXMvanRkLXNjaGVtYVwiXG5pbXBvcnQgVmFsaWRhdGlvbkVycm9yIGZyb20gXCIuL3J1bnRpbWUvdmFsaWRhdGlvbl9lcnJvclwiXG5pbXBvcnQgTWlzc2luZ1JlZkVycm9yIGZyb20gXCIuL2NvbXBpbGUvcmVmX2Vycm9yXCJcbmltcG9ydCB7Z2V0UnVsZXMsIFZhbGlkYXRpb25SdWxlcywgUnVsZSwgUnVsZUdyb3VwLCBKU09OVHlwZX0gZnJvbSBcIi4vY29tcGlsZS9ydWxlc1wiXG5pbXBvcnQge1NjaGVtYUVudiwgY29tcGlsZVNjaGVtYSwgcmVzb2x2ZVNjaGVtYX0gZnJvbSBcIi4vY29tcGlsZVwiXG5pbXBvcnQge0NvZGUsIFZhbHVlU2NvcGV9IGZyb20gXCIuL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge25vcm1hbGl6ZUlkLCBnZXRTY2hlbWFSZWZzfSBmcm9tIFwiLi9jb21waWxlL3Jlc29sdmVcIlxuaW1wb3J0IHtnZXRKU09OVHlwZXN9IGZyb20gXCIuL2NvbXBpbGUvdmFsaWRhdGUvZGF0YVR5cGVcIlxuaW1wb3J0IHtlYWNoSXRlbX0gZnJvbSBcIi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCAqIGFzICRkYXRhUmVmU2NoZW1hIGZyb20gXCIuL3JlZnMvZGF0YS5qc29uXCJcblxuaW1wb3J0IERlZmF1bHRVcmlSZXNvbHZlciBmcm9tIFwiLi9ydW50aW1lL3VyaVwiXG5cbmNvbnN0IGRlZmF1bHRSZWdFeHA6IFJlZ0V4cEVuZ2luZSA9IChzdHIsIGZsYWdzKSA9PiBuZXcgUmVnRXhwKHN0ciwgZmxhZ3MpXG5kZWZhdWx0UmVnRXhwLmNvZGUgPSBcIm5ldyBSZWdFeHBcIlxuXG5jb25zdCBNRVRBX0lHTk9SRV9PUFRJT05TOiAoa2V5b2YgT3B0aW9ucylbXSA9IFtcInJlbW92ZUFkZGl0aW9uYWxcIiwgXCJ1c2VEZWZhdWx0c1wiLCBcImNvZXJjZVR5cGVzXCJdXG5jb25zdCBFWFRfU0NPUEVfTkFNRVMgPSBuZXcgU2V0KFtcbiAgXCJ2YWxpZGF0ZVwiLFxuICBcInNlcmlhbGl6ZVwiLFxuICBcInBhcnNlXCIsXG4gIFwid3JhcHBlclwiLFxuICBcInJvb3RcIixcbiAgXCJzY2hlbWFcIixcbiAgXCJrZXl3b3JkXCIsXG4gIFwicGF0dGVyblwiLFxuICBcImZvcm1hdHNcIixcbiAgXCJ2YWxpZGF0ZSRkYXRhXCIsXG4gIFwiZnVuY1wiLFxuICBcIm9ialwiLFxuICBcIkVycm9yXCIsXG5dKVxuXG5leHBvcnQgdHlwZSBPcHRpb25zID0gQ3VycmVudE9wdGlvbnMgJiBEZXByZWNhdGVkT3B0aW9uc1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRPcHRpb25zIHtcbiAgLy8gc3RyaWN0IG1vZGUgb3B0aW9ucyAoTkVXKVxuICBzdHJpY3Q/OiBib29sZWFuIHwgXCJsb2dcIlxuICBzdHJpY3RTY2hlbWE/OiBib29sZWFuIHwgXCJsb2dcIlxuICBzdHJpY3ROdW1iZXJzPzogYm9vbGVhbiB8IFwibG9nXCJcbiAgc3RyaWN0VHlwZXM/OiBib29sZWFuIHwgXCJsb2dcIlxuICBzdHJpY3RUdXBsZXM/OiBib29sZWFuIHwgXCJsb2dcIlxuICBzdHJpY3RSZXF1aXJlZD86IGJvb2xlYW4gfCBcImxvZ1wiXG4gIGFsbG93TWF0Y2hpbmdQcm9wZXJ0aWVzPzogYm9vbGVhbiAvLyBkaXNhYmxlcyBhIHN0cmljdCBtb2RlIHJlc3RyaWN0aW9uXG4gIGFsbG93VW5pb25UeXBlcz86IGJvb2xlYW5cbiAgdmFsaWRhdGVGb3JtYXRzPzogYm9vbGVhblxuICAvLyB2YWxpZGF0aW9uIGFuZCByZXBvcnRpbmcgb3B0aW9uczpcbiAgJGRhdGE/OiBib29sZWFuXG4gIGFsbEVycm9ycz86IGJvb2xlYW5cbiAgdmVyYm9zZT86IGJvb2xlYW5cbiAgZGlzY3JpbWluYXRvcj86IGJvb2xlYW5cbiAgdW5pY29kZVJlZ0V4cD86IGJvb2xlYW5cbiAgdGltZXN0YW1wPzogXCJzdHJpbmdcIiB8IFwiZGF0ZVwiIC8vIEpURCBvbmx5XG4gIHBhcnNlRGF0ZT86IGJvb2xlYW4gLy8gSlREIG9ubHlcbiAgYWxsb3dEYXRlPzogYm9vbGVhbiAvLyBKVEQgb25seVxuICBzcGVjaWFsTnVtYmVycz86IFwiZmFzdFwiIHwgXCJudWxsXCIgLy8gSlREIG9ubHlcbiAgJGNvbW1lbnQ/OlxuICAgIHwgdHJ1ZVxuICAgIHwgKChjb21tZW50OiBzdHJpbmcsIHNjaGVtYVBhdGg/OiBzdHJpbmcsIHJvb3RTY2hlbWE/OiBBbnlTY2hlbWFPYmplY3QpID0+IHVua25vd24pXG4gIGZvcm1hdHM/OiB7W05hbWUgaW4gc3RyaW5nXT86IEZvcm1hdH1cbiAga2V5d29yZHM/OiBWb2NhYnVsYXJ5XG4gIHNjaGVtYXM/OiBBbnlTY2hlbWFbXSB8IHtbS2V5IGluIHN0cmluZ10/OiBBbnlTY2hlbWF9XG4gIGxvZ2dlcj86IExvZ2dlciB8IGZhbHNlXG4gIGxvYWRTY2hlbWE/OiAodXJpOiBzdHJpbmcpID0+IFByb21pc2U8QW55U2NoZW1hT2JqZWN0PlxuICAvLyBvcHRpb25zIHRvIG1vZGlmeSB2YWxpZGF0ZWQgZGF0YTpcbiAgcmVtb3ZlQWRkaXRpb25hbD86IGJvb2xlYW4gfCBcImFsbFwiIHwgXCJmYWlsaW5nXCJcbiAgdXNlRGVmYXVsdHM/OiBib29sZWFuIHwgXCJlbXB0eVwiXG4gIGNvZXJjZVR5cGVzPzogYm9vbGVhbiB8IFwiYXJyYXlcIlxuICAvLyBhZHZhbmNlZCBvcHRpb25zOlxuICBuZXh0PzogYm9vbGVhbiAvLyBORVdcbiAgdW5ldmFsdWF0ZWQ/OiBib29sZWFuIC8vIE5FV1xuICBkeW5hbWljUmVmPzogYm9vbGVhbiAvLyBORVdcbiAgc2NoZW1hSWQ/OiBcImlkXCIgfCBcIiRpZFwiXG4gIGp0ZD86IGJvb2xlYW4gLy8gTkVXXG4gIG1ldGE/OiBTY2hlbWFPYmplY3QgfCBib29sZWFuXG4gIGRlZmF1bHRNZXRhPzogc3RyaW5nIHwgQW55U2NoZW1hT2JqZWN0XG4gIHZhbGlkYXRlU2NoZW1hPzogYm9vbGVhbiB8IFwibG9nXCJcbiAgYWRkVXNlZFNjaGVtYT86IGJvb2xlYW5cbiAgaW5saW5lUmVmcz86IGJvb2xlYW4gfCBudW1iZXJcbiAgcGFzc0NvbnRleHQ/OiBib29sZWFuXG4gIGxvb3BSZXF1aXJlZD86IG51bWJlclxuICBsb29wRW51bT86IG51bWJlciAvLyBORVdcbiAgb3duUHJvcGVydGllcz86IGJvb2xlYW5cbiAgbXVsdGlwbGVPZlByZWNpc2lvbj86IG51bWJlclxuICBpbnQzMnJhbmdlPzogYm9vbGVhbiAvLyBKVEQgb25seVxuICBtZXNzYWdlcz86IGJvb2xlYW5cbiAgY29kZT86IENvZGVPcHRpb25zIC8vIE5FV1xuICB1cmlSZXNvbHZlcj86IFVyaVJlc29sdmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZU9wdGlvbnMge1xuICBlczU/OiBib29sZWFuXG4gIGVzbT86IGJvb2xlYW5cbiAgbGluZXM/OiBib29sZWFuXG4gIG9wdGltaXplPzogYm9vbGVhbiB8IG51bWJlclxuICBmb3JtYXRzPzogQ29kZSAvLyBjb2RlIHRvIHJlcXVpcmUgKG9yIGNvbnN0cnVjdCkgbWFwIG9mIGF2YWlsYWJsZSBmb3JtYXRzIC0gZm9yIHN0YW5kYWxvbmUgY29kZVxuICBzb3VyY2U/OiBib29sZWFuXG4gIHByb2Nlc3M/OiAoY29kZTogc3RyaW5nLCBzY2hlbWE/OiBTY2hlbWFFbnYpID0+IHN0cmluZ1xuICByZWdFeHA/OiBSZWdFeHBFbmdpbmVcbn1cblxuaW50ZXJmYWNlIEluc3RhbmNlQ29kZU9wdGlvbnMgZXh0ZW5kcyBDb2RlT3B0aW9ucyB7XG4gIHJlZ0V4cDogUmVnRXhwRW5naW5lXG4gIG9wdGltaXplOiBudW1iZXJcbn1cblxuaW50ZXJmYWNlIERlcHJlY2F0ZWRPcHRpb25zIHtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGlnbm9yZUtleXdvcmRzV2l0aFJlZj86IGJvb2xlYW5cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGpzUHJvcGVydHlTeW50YXg/OiBib29sZWFuIC8vIGFkZGVkIGluc3RlYWQgb2YganNvblBvaW50ZXJzXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICB1bmljb2RlPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgUmVtb3ZlZE9wdGlvbnMge1xuICBmb3JtYXQ/OiBib29sZWFuXG4gIGVycm9yRGF0YVBhdGg/OiBcIm9iamVjdFwiIHwgXCJwcm9wZXJ0eVwiXG4gIG51bGxhYmxlPzogYm9vbGVhbiAvLyBcIm51bGxhYmxlXCIga2V5d29yZCBpcyBzdXBwb3J0ZWQgYnkgZGVmYXVsdFxuICBqc29uUG9pbnRlcnM/OiBib29sZWFuXG4gIGV4dGVuZFJlZnM/OiB0cnVlIHwgXCJpZ25vcmVcIiB8IFwiZmFpbFwiXG4gIG1pc3NpbmdSZWZzPzogdHJ1ZSB8IFwiaWdub3JlXCIgfCBcImZhaWxcIlxuICBwcm9jZXNzQ29kZT86IChjb2RlOiBzdHJpbmcsIHNjaGVtYT86IFNjaGVtYUVudikgPT4gc3RyaW5nXG4gIHNvdXJjZUNvZGU/OiBib29sZWFuXG4gIHN0cmljdERlZmF1bHRzPzogYm9vbGVhblxuICBzdHJpY3RLZXl3b3Jkcz86IGJvb2xlYW5cbiAgdW5pcXVlSXRlbXM/OiBib29sZWFuXG4gIHVua25vd25Gb3JtYXRzPzogdHJ1ZSB8IHN0cmluZ1tdIHwgXCJpZ25vcmVcIlxuICBjYWNoZT86IGFueVxuICBzZXJpYWxpemU/OiAoc2NoZW1hOiBBbnlTY2hlbWEpID0+IHVua25vd25cbiAgYWp2RXJyb3JzPzogYm9vbGVhblxufVxuXG50eXBlIE9wdGlvbnNJbmZvPFQgZXh0ZW5kcyBSZW1vdmVkT3B0aW9ucyB8IERlcHJlY2F0ZWRPcHRpb25zPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmNvbnN0IHJlbW92ZWRPcHRpb25zOiBPcHRpb25zSW5mbzxSZW1vdmVkT3B0aW9ucz4gPSB7XG4gIGVycm9yRGF0YVBhdGg6IFwiXCIsXG4gIGZvcm1hdDogXCJgdmFsaWRhdGVGb3JtYXRzOiBmYWxzZWAgY2FuIGJlIHVzZWQgaW5zdGVhZC5cIixcbiAgbnVsbGFibGU6ICdcIm51bGxhYmxlXCIga2V5d29yZCBpcyBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4nLFxuICBqc29uUG9pbnRlcnM6IFwiRGVwcmVjYXRlZCBqc1Byb3BlcnR5U3ludGF4IGNhbiBiZSB1c2VkIGluc3RlYWQuXCIsXG4gIGV4dGVuZFJlZnM6IFwiRGVwcmVjYXRlZCBpZ25vcmVLZXl3b3Jkc1dpdGhSZWYgY2FuIGJlIHVzZWQgaW5zdGVhZC5cIixcbiAgbWlzc2luZ1JlZnM6IFwiUGFzcyBlbXB0eSBzY2hlbWEgd2l0aCAkaWQgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB0byBhanYuYWRkU2NoZW1hLlwiLFxuICBwcm9jZXNzQ29kZTogXCJVc2Ugb3B0aW9uIGBjb2RlOiB7cHJvY2VzczogKGNvZGUsIHNjaGVtYUVudjogb2JqZWN0KSA9PiBzdHJpbmd9YFwiLFxuICBzb3VyY2VDb2RlOiBcIlVzZSBvcHRpb24gYGNvZGU6IHtzb3VyY2U6IHRydWV9YFwiLFxuICBzdHJpY3REZWZhdWx0czogXCJJdCBpcyBkZWZhdWx0IG5vdywgc2VlIG9wdGlvbiBgc3RyaWN0YC5cIixcbiAgc3RyaWN0S2V5d29yZHM6IFwiSXQgaXMgZGVmYXVsdCBub3csIHNlZSBvcHRpb24gYHN0cmljdGAuXCIsXG4gIHVuaXF1ZUl0ZW1zOiAnXCJ1bmlxdWVJdGVtc1wiIGtleXdvcmQgaXMgYWx3YXlzIHZhbGlkYXRlZC4nLFxuICB1bmtub3duRm9ybWF0czogXCJEaXNhYmxlIHN0cmljdCBtb2RlIG9yIHBhc3MgYHRydWVgIHRvIGBhanYuYWRkRm9ybWF0YCAob3IgYGZvcm1hdHNgIG9wdGlvbikuXCIsXG4gIGNhY2hlOiBcIk1hcCBpcyB1c2VkIGFzIGNhY2hlLCBzY2hlbWEgb2JqZWN0IGFzIGtleS5cIixcbiAgc2VyaWFsaXplOiBcIk1hcCBpcyB1c2VkIGFzIGNhY2hlLCBzY2hlbWEgb2JqZWN0IGFzIGtleS5cIixcbiAgYWp2RXJyb3JzOiBcIkl0IGlzIGRlZmF1bHQgbm93LlwiLFxufVxuXG5jb25zdCBkZXByZWNhdGVkT3B0aW9uczogT3B0aW9uc0luZm88RGVwcmVjYXRlZE9wdGlvbnM+ID0ge1xuICBpZ25vcmVLZXl3b3Jkc1dpdGhSZWY6IFwiXCIsXG4gIGpzUHJvcGVydHlTeW50YXg6IFwiXCIsXG4gIHVuaWNvZGU6ICdcIm1pbkxlbmd0aFwiL1wibWF4TGVuZ3RoXCIgYWNjb3VudCBmb3IgdW5pY29kZSBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuJyxcbn1cblxudHlwZSBSZXF1aXJlZEluc3RhbmNlT3B0aW9ucyA9IHtcbiAgW0sgaW5cbiAgICB8IFwic3RyaWN0U2NoZW1hXCJcbiAgICB8IFwic3RyaWN0TnVtYmVyc1wiXG4gICAgfCBcInN0cmljdFR5cGVzXCJcbiAgICB8IFwic3RyaWN0VHVwbGVzXCJcbiAgICB8IFwic3RyaWN0UmVxdWlyZWRcIlxuICAgIHwgXCJpbmxpbmVSZWZzXCJcbiAgICB8IFwibG9vcFJlcXVpcmVkXCJcbiAgICB8IFwibG9vcEVudW1cIlxuICAgIHwgXCJtZXRhXCJcbiAgICB8IFwibWVzc2FnZXNcIlxuICAgIHwgXCJzY2hlbWFJZFwiXG4gICAgfCBcImFkZFVzZWRTY2hlbWFcIlxuICAgIHwgXCJ2YWxpZGF0ZVNjaGVtYVwiXG4gICAgfCBcInZhbGlkYXRlRm9ybWF0c1wiXG4gICAgfCBcImludDMycmFuZ2VcIlxuICAgIHwgXCJ1bmljb2RlUmVnRXhwXCJcbiAgICB8IFwidXJpUmVzb2x2ZXJcIl06IE5vbk51bGxhYmxlPE9wdGlvbnNbS10+XG59ICYge2NvZGU6IEluc3RhbmNlQ29kZU9wdGlvbnN9XG5cbmV4cG9ydCB0eXBlIEluc3RhbmNlT3B0aW9ucyA9IE9wdGlvbnMgJiBSZXF1aXJlZEluc3RhbmNlT3B0aW9uc1xuXG5jb25zdCBNQVhfRVhQUkVTU0lPTiA9IDIwMFxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gcmVxdWlyZWRPcHRpb25zKG86IE9wdGlvbnMpOiBSZXF1aXJlZEluc3RhbmNlT3B0aW9ucyB7XG4gIGNvbnN0IHMgPSBvLnN0cmljdFxuICBjb25zdCBfb3B0eiA9IG8uY29kZT8ub3B0aW1pemVcbiAgY29uc3Qgb3B0aW1pemUgPSBfb3B0eiA9PT0gdHJ1ZSB8fCBfb3B0eiA9PT0gdW5kZWZpbmVkID8gMSA6IF9vcHR6IHx8IDBcbiAgY29uc3QgcmVnRXhwID0gby5jb2RlPy5yZWdFeHAgPz8gZGVmYXVsdFJlZ0V4cFxuICBjb25zdCB1cmlSZXNvbHZlciA9IG8udXJpUmVzb2x2ZXIgPz8gRGVmYXVsdFVyaVJlc29sdmVyXG4gIHJldHVybiB7XG4gICAgc3RyaWN0U2NoZW1hOiBvLnN0cmljdFNjaGVtYSA/PyBzID8/IHRydWUsXG4gICAgc3RyaWN0TnVtYmVyczogby5zdHJpY3ROdW1iZXJzID8/IHMgPz8gdHJ1ZSxcbiAgICBzdHJpY3RUeXBlczogby5zdHJpY3RUeXBlcyA/PyBzID8/IFwibG9nXCIsXG4gICAgc3RyaWN0VHVwbGVzOiBvLnN0cmljdFR1cGxlcyA/PyBzID8/IFwibG9nXCIsXG4gICAgc3RyaWN0UmVxdWlyZWQ6IG8uc3RyaWN0UmVxdWlyZWQgPz8gcyA/PyBmYWxzZSxcbiAgICBjb2RlOiBvLmNvZGUgPyB7Li4uby5jb2RlLCBvcHRpbWl6ZSwgcmVnRXhwfSA6IHtvcHRpbWl6ZSwgcmVnRXhwfSxcbiAgICBsb29wUmVxdWlyZWQ6IG8ubG9vcFJlcXVpcmVkID8/IE1BWF9FWFBSRVNTSU9OLFxuICAgIGxvb3BFbnVtOiBvLmxvb3BFbnVtID8/IE1BWF9FWFBSRVNTSU9OLFxuICAgIG1ldGE6IG8ubWV0YSA/PyB0cnVlLFxuICAgIG1lc3NhZ2VzOiBvLm1lc3NhZ2VzID8/IHRydWUsXG4gICAgaW5saW5lUmVmczogby5pbmxpbmVSZWZzID8/IHRydWUsXG4gICAgc2NoZW1hSWQ6IG8uc2NoZW1hSWQgPz8gXCIkaWRcIixcbiAgICBhZGRVc2VkU2NoZW1hOiBvLmFkZFVzZWRTY2hlbWEgPz8gdHJ1ZSxcbiAgICB2YWxpZGF0ZVNjaGVtYTogby52YWxpZGF0ZVNjaGVtYSA/PyB0cnVlLFxuICAgIHZhbGlkYXRlRm9ybWF0czogby52YWxpZGF0ZUZvcm1hdHMgPz8gdHJ1ZSxcbiAgICB1bmljb2RlUmVnRXhwOiBvLnVuaWNvZGVSZWdFeHAgPz8gdHJ1ZSxcbiAgICBpbnQzMnJhbmdlOiBvLmludDMycmFuZ2UgPz8gdHJ1ZSxcbiAgICB1cmlSZXNvbHZlcjogdXJpUmVzb2x2ZXIsXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xuICBsb2coLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93blxuICB3YXJuKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd25cbiAgZXJyb3IoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93blxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBanYge1xuICBvcHRzOiBJbnN0YW5jZU9wdGlvbnNcbiAgZXJyb3JzPzogRXJyb3JPYmplY3RbXSB8IG51bGwgLy8gZXJyb3JzIGZyb20gdGhlIGxhc3QgdmFsaWRhdGlvblxuICBsb2dnZXI6IExvZ2dlclxuICAvLyBzaGFyZWQgZXh0ZXJuYWwgc2NvcGUgdmFsdWVzIGZvciBjb21waWxlZCBmdW5jdGlvbnNcbiAgcmVhZG9ubHkgc2NvcGU6IFZhbHVlU2NvcGVcbiAgcmVhZG9ubHkgc2NoZW1hczoge1tLZXkgaW4gc3RyaW5nXT86IFNjaGVtYUVudn0gPSB7fVxuICByZWFkb25seSByZWZzOiB7W1JlZiBpbiBzdHJpbmddPzogU2NoZW1hRW52IHwgc3RyaW5nfSA9IHt9XG4gIHJlYWRvbmx5IGZvcm1hdHM6IHtbTmFtZSBpbiBzdHJpbmddPzogQWRkZWRGb3JtYXR9ID0ge31cbiAgcmVhZG9ubHkgUlVMRVM6IFZhbGlkYXRpb25SdWxlc1xuICByZWFkb25seSBfY29tcGlsYXRpb25zOiBTZXQ8U2NoZW1hRW52PiA9IG5ldyBTZXQoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nOiB7W1JlZiBpbiBzdHJpbmddPzogUHJvbWlzZTxBbnlTY2hlbWFPYmplY3Q+fSA9IHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhY2hlOiBNYXA8QW55U2NoZW1hLCBTY2hlbWFFbnY+ID0gbmV3IE1hcCgpXG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldGFPcHRzOiBJbnN0YW5jZU9wdGlvbnNcblxuICBzdGF0aWMgVmFsaWRhdGlvbkVycm9yID0gVmFsaWRhdGlvbkVycm9yXG4gIHN0YXRpYyBNaXNzaW5nUmVmRXJyb3IgPSBNaXNzaW5nUmVmRXJyb3JcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBPcHRpb25zID0ge30pIHtcbiAgICBvcHRzID0gdGhpcy5vcHRzID0gey4uLm9wdHMsIC4uLnJlcXVpcmVkT3B0aW9ucyhvcHRzKX1cbiAgICBjb25zdCB7ZXM1LCBsaW5lc30gPSB0aGlzLm9wdHMuY29kZVxuXG4gICAgdGhpcy5zY29wZSA9IG5ldyBWYWx1ZVNjb3BlKHtzY29wZToge30sIHByZWZpeGVzOiBFWFRfU0NPUEVfTkFNRVMsIGVzNSwgbGluZXN9KVxuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKG9wdHMubG9nZ2VyKVxuICAgIGNvbnN0IGZvcm1hdE9wdCA9IG9wdHMudmFsaWRhdGVGb3JtYXRzXG4gICAgb3B0cy52YWxpZGF0ZUZvcm1hdHMgPSBmYWxzZVxuXG4gICAgdGhpcy5SVUxFUyA9IGdldFJ1bGVzKClcbiAgICBjaGVja09wdGlvbnMuY2FsbCh0aGlzLCByZW1vdmVkT3B0aW9ucywgb3B0cywgXCJOT1QgU1VQUE9SVEVEXCIpXG4gICAgY2hlY2tPcHRpb25zLmNhbGwodGhpcywgZGVwcmVjYXRlZE9wdGlvbnMsIG9wdHMsIFwiREVQUkVDQVRFRFwiLCBcIndhcm5cIilcbiAgICB0aGlzLl9tZXRhT3B0cyA9IGdldE1ldGFTY2hlbWFPcHRpb25zLmNhbGwodGhpcylcblxuICAgIGlmIChvcHRzLmZvcm1hdHMpIGFkZEluaXRpYWxGb3JtYXRzLmNhbGwodGhpcylcbiAgICB0aGlzLl9hZGRWb2NhYnVsYXJpZXMoKVxuICAgIHRoaXMuX2FkZERlZmF1bHRNZXRhU2NoZW1hKClcbiAgICBpZiAob3B0cy5rZXl3b3JkcykgYWRkSW5pdGlhbEtleXdvcmRzLmNhbGwodGhpcywgb3B0cy5rZXl3b3JkcylcbiAgICBpZiAodHlwZW9mIG9wdHMubWV0YSA9PSBcIm9iamVjdFwiKSB0aGlzLmFkZE1ldGFTY2hlbWEob3B0cy5tZXRhKVxuICAgIGFkZEluaXRpYWxTY2hlbWFzLmNhbGwodGhpcylcbiAgICBvcHRzLnZhbGlkYXRlRm9ybWF0cyA9IGZvcm1hdE9wdFxuICB9XG5cbiAgX2FkZFZvY2FidWxhcmllcygpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEtleXdvcmQoXCIkYXN5bmNcIilcbiAgfVxuXG4gIF9hZGREZWZhdWx0TWV0YVNjaGVtYSgpOiB2b2lkIHtcbiAgICBjb25zdCB7JGRhdGEsIG1ldGEsIHNjaGVtYUlkfSA9IHRoaXMub3B0c1xuICAgIGxldCBfZGF0YVJlZlNjaGVtYTogU2NoZW1hT2JqZWN0ID0gJGRhdGFSZWZTY2hlbWFcbiAgICBpZiAoc2NoZW1hSWQgPT09IFwiaWRcIikge1xuICAgICAgX2RhdGFSZWZTY2hlbWEgPSB7Li4uJGRhdGFSZWZTY2hlbWF9XG4gICAgICBfZGF0YVJlZlNjaGVtYS5pZCA9IF9kYXRhUmVmU2NoZW1hLiRpZFxuICAgICAgZGVsZXRlIF9kYXRhUmVmU2NoZW1hLiRpZFxuICAgIH1cbiAgICBpZiAobWV0YSAmJiAkZGF0YSkgdGhpcy5hZGRNZXRhU2NoZW1hKF9kYXRhUmVmU2NoZW1hLCBfZGF0YVJlZlNjaGVtYVtzY2hlbWFJZF0sIGZhbHNlKVxuICB9XG5cbiAgZGVmYXVsdE1ldGEoKTogc3RyaW5nIHwgQW55U2NoZW1hT2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB7bWV0YSwgc2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gICAgcmV0dXJuICh0aGlzLm9wdHMuZGVmYXVsdE1ldGEgPSB0eXBlb2YgbWV0YSA9PSBcIm9iamVjdFwiID8gbWV0YVtzY2hlbWFJZF0gfHwgbWV0YSA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGRhdGEgdXNpbmcgc2NoZW1hXG4gIC8vIEFueVNjaGVtYSB3aWxsIGJlIGNvbXBpbGVkIGFuZCBjYWNoZWQgdXNpbmcgc2NoZW1hIGl0c2VsZiBhcyBhIGtleSBmb3IgTWFwXG4gIHZhbGlkYXRlKHNjaGVtYTogU2NoZW1hIHwgc3RyaW5nLCBkYXRhOiB1bmtub3duKTogYm9vbGVhblxuICB2YWxpZGF0ZShzY2hlbWFLZXlSZWY6IEFueVNjaGVtYSB8IHN0cmluZywgZGF0YTogdW5rbm93bik6IGJvb2xlYW4gfCBQcm9taXNlPHVua25vd24+XG4gIHZhbGlkYXRlPFQ+KHNjaGVtYTogU2NoZW1hIHwgSlNPTlNjaGVtYVR5cGU8VD4gfCBzdHJpbmcsIGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFRcbiAgLy8gU2VwYXJhdGVkIGZvciB0eXBlIGluZmVyZW5jZSB0byB3b3JrXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIHZhbGlkYXRlPFQ+KHNjaGVtYTogSlREU2NoZW1hVHlwZTxUPiwgZGF0YTogdW5rbm93bik6IGRhdGEgaXMgVFxuICAvLyBUaGlzIG92ZXJsb2FkIGlzIG9ubHkgaW50ZW5kZWQgZm9yIHR5cGVzY3JpcHQgaW5mZXJlbmNlLCB0aGUgZmlyc3RcbiAgLy8gYXJndW1lbnQgcHJldmVudHMgbWFudWFsIHR5cGUgYW5ub3RhdGlvbiBmcm9tIG1hdGNoaW5nIHRoaXMgb3ZlcmxvYWRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB2YWxpZGF0ZTxOIGV4dGVuZHMgbmV2ZXIsIFQgZXh0ZW5kcyBTb21lSlREU2NoZW1hVHlwZT4oXG4gICAgc2NoZW1hOiBULFxuICAgIGRhdGE6IHVua25vd25cbiAgKTogZGF0YSBpcyBKVEREYXRhVHlwZTxUPlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlZHVuZGFudC10eXBlLWNvbnN0aXR1ZW50c1xuICB2YWxpZGF0ZTxUPihzY2hlbWE6IEFzeW5jU2NoZW1hLCBkYXRhOiB1bmtub3duIHwgVCk6IFByb21pc2U8VD5cbiAgdmFsaWRhdGU8VD4oc2NoZW1hS2V5UmVmOiBBbnlTY2hlbWEgfCBzdHJpbmcsIGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFQgfCBQcm9taXNlPFQ+XG4gIHZhbGlkYXRlPFQ+KFxuICAgIHNjaGVtYUtleVJlZjogQW55U2NoZW1hIHwgc3RyaW5nLCAvLyBrZXksIHJlZiBvciBzY2hlbWEgb2JqZWN0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZWR1bmRhbnQtdHlwZS1jb25zdGl0dWVudHNcbiAgICBkYXRhOiB1bmtub3duIHwgVCAvLyB0byBiZSB2YWxpZGF0ZWRcbiAgKTogYm9vbGVhbiB8IFByb21pc2U8VD4ge1xuICAgIGxldCB2OiBBbnlWYWxpZGF0ZUZ1bmN0aW9uIHwgdW5kZWZpbmVkXG4gICAgaWYgKHR5cGVvZiBzY2hlbWFLZXlSZWYgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdiA9IHRoaXMuZ2V0U2NoZW1hPFQ+KHNjaGVtYUtleVJlZilcbiAgICAgIGlmICghdikgdGhyb3cgbmV3IEVycm9yKGBubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmIFwiJHtzY2hlbWFLZXlSZWZ9XCJgKVxuICAgIH0gZWxzZSB7XG4gICAgICB2ID0gdGhpcy5jb21waWxlPFQ+KHNjaGVtYUtleVJlZilcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZCA9IHYoZGF0YSlcbiAgICBpZiAoIShcIiRhc3luY1wiIGluIHYpKSB0aGlzLmVycm9ycyA9IHYuZXJyb3JzXG4gICAgcmV0dXJuIHZhbGlkXG4gIH1cblxuICAvLyBDcmVhdGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgcGFzc2VkIHNjaGVtYVxuICAvLyBfbWV0YTogdHJ1ZSBpZiBzY2hlbWEgaXMgYSBtZXRhLXNjaGVtYS4gVXNlZCBpbnRlcm5hbGx5IHRvIGNvbXBpbGUgbWV0YSBzY2hlbWFzIG9mIHVzZXItZGVmaW5lZCBrZXl3b3Jkcy5cbiAgY29tcGlsZTxUID0gdW5rbm93bj4oc2NoZW1hOiBTY2hlbWEgfCBKU09OU2NoZW1hVHlwZTxUPiwgX21ldGE/OiBib29sZWFuKTogVmFsaWRhdGVGdW5jdGlvbjxUPlxuICAvLyBTZXBhcmF0ZWQgZm9yIHR5cGUgaW5mZXJlbmNlIHRvIHdvcmtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbiAgY29tcGlsZTxUID0gdW5rbm93bj4oc2NoZW1hOiBKVERTY2hlbWFUeXBlPFQ+LCBfbWV0YT86IGJvb2xlYW4pOiBWYWxpZGF0ZUZ1bmN0aW9uPFQ+XG4gIC8vIFRoaXMgb3ZlcmxvYWQgaXMgb25seSBpbnRlbmRlZCBmb3IgdHlwZXNjcmlwdCBpbmZlcmVuY2UsIHRoZSBmaXJzdFxuICAvLyBhcmd1bWVudCBwcmV2ZW50cyBtYW51YWwgdHlwZSBhbm5vdGF0aW9uIGZyb20gbWF0Y2hpbmcgdGhpcyBvdmVybG9hZFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbXBpbGU8TiBleHRlbmRzIG5ldmVyLCBUIGV4dGVuZHMgU29tZUpURFNjaGVtYVR5cGU+KFxuICAgIHNjaGVtYTogVCxcbiAgICBfbWV0YT86IGJvb2xlYW5cbiAgKTogVmFsaWRhdGVGdW5jdGlvbjxKVEREYXRhVHlwZTxUPj5cbiAgY29tcGlsZTxUID0gdW5rbm93bj4oc2NoZW1hOiBBc3luY1NjaGVtYSwgX21ldGE/OiBib29sZWFuKTogQXN5bmNWYWxpZGF0ZUZ1bmN0aW9uPFQ+XG4gIGNvbXBpbGU8VCA9IHVua25vd24+KHNjaGVtYTogQW55U2NoZW1hLCBfbWV0YT86IGJvb2xlYW4pOiBBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+XG4gIGNvbXBpbGU8VCA9IHVua25vd24+KHNjaGVtYTogQW55U2NoZW1hLCBfbWV0YT86IGJvb2xlYW4pOiBBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+IHtcbiAgICBjb25zdCBzY2ggPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hLCBfbWV0YSlcbiAgICByZXR1cm4gKHNjaC52YWxpZGF0ZSB8fCB0aGlzLl9jb21waWxlU2NoZW1hRW52KHNjaCkpIGFzIEFueVZhbGlkYXRlRnVuY3Rpb248VD5cbiAgfVxuXG4gIC8vIENyZWF0ZXMgdmFsaWRhdGluZyBmdW5jdGlvbiBmb3IgcGFzc2VkIHNjaGVtYSB3aXRoIGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIG1pc3Npbmcgc2NoZW1hcy5cbiAgLy8gYGxvYWRTY2hlbWFgIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgc2NoZW1hIHVyaSBhbmQgcmV0dXJucyBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2NoZW1hLlxuICAvLyBUT0RPIGFsbG93IHBhc3Npbmcgc2NoZW1hIFVSSVxuICAvLyBtZXRhIC0gb3B0aW9uYWwgdHJ1ZSB0byBjb21waWxlIG1ldGEtc2NoZW1hXG4gIGNvbXBpbGVBc3luYzxUID0gdW5rbm93bj4oXG4gICAgc2NoZW1hOiBTY2hlbWFPYmplY3QgfCBKU09OU2NoZW1hVHlwZTxUPixcbiAgICBfbWV0YT86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxWYWxpZGF0ZUZ1bmN0aW9uPFQ+PlxuICAvLyBTZXBhcmF0ZWQgZm9yIHR5cGUgaW5mZXJlbmNlIHRvIHdvcmtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbiAgY29tcGlsZUFzeW5jPFQgPSB1bmtub3duPihzY2hlbWE6IEpURFNjaGVtYVR5cGU8VD4sIF9tZXRhPzogYm9vbGVhbik6IFByb21pc2U8VmFsaWRhdGVGdW5jdGlvbjxUPj5cbiAgY29tcGlsZUFzeW5jPFQgPSB1bmtub3duPihzY2hlbWE6IEFzeW5jU2NoZW1hLCBtZXRhPzogYm9vbGVhbik6IFByb21pc2U8QXN5bmNWYWxpZGF0ZUZ1bmN0aW9uPFQ+PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlc1xuICBjb21waWxlQXN5bmM8VCA9IHVua25vd24+KFxuICAgIHNjaGVtYTogQW55U2NoZW1hT2JqZWN0LFxuICAgIG1ldGE/OiBib29sZWFuXG4gICk6IFByb21pc2U8QW55VmFsaWRhdGVGdW5jdGlvbjxUPj5cbiAgY29tcGlsZUFzeW5jPFQgPSB1bmtub3duPihcbiAgICBzY2hlbWE6IEFueVNjaGVtYU9iamVjdCxcbiAgICBtZXRhPzogYm9vbGVhblxuICApOiBQcm9taXNlPEFueVZhbGlkYXRlRnVuY3Rpb248VD4+IHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0cy5sb2FkU2NoZW1hICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwib3B0aW9ucy5sb2FkU2NoZW1hIHNob3VsZCBiZSBhIGZ1bmN0aW9uXCIpXG4gICAgfVxuICAgIGNvbnN0IHtsb2FkU2NoZW1hfSA9IHRoaXMub3B0c1xuICAgIHJldHVybiBydW5Db21waWxlQXN5bmMuY2FsbCh0aGlzLCBzY2hlbWEsIG1ldGEpXG5cbiAgICBhc3luYyBmdW5jdGlvbiBydW5Db21waWxlQXN5bmMoXG4gICAgICB0aGlzOiBBanYsXG4gICAgICBfc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsXG4gICAgICBfbWV0YT86IGJvb2xlYW5cbiAgICApOiBQcm9taXNlPEFueVZhbGlkYXRlRnVuY3Rpb24+IHtcbiAgICAgIGF3YWl0IGxvYWRNZXRhU2NoZW1hLmNhbGwodGhpcywgX3NjaGVtYS4kc2NoZW1hKVxuICAgICAgY29uc3Qgc2NoID0gdGhpcy5fYWRkU2NoZW1hKF9zY2hlbWEsIF9tZXRhKVxuICAgICAgcmV0dXJuIHNjaC52YWxpZGF0ZSB8fCBfY29tcGlsZUFzeW5jLmNhbGwodGhpcywgc2NoKVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWRNZXRhU2NoZW1hKHRoaXM6IEFqdiwgJHJlZj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKCRyZWYgJiYgIXRoaXMuZ2V0U2NoZW1hKCRyZWYpKSB7XG4gICAgICAgIGF3YWl0IHJ1bkNvbXBpbGVBc3luYy5jYWxsKHRoaXMsIHskcmVmfSwgdHJ1ZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfY29tcGlsZUFzeW5jKHRoaXM6IEFqdiwgc2NoOiBTY2hlbWFFbnYpOiBQcm9taXNlPEFueVZhbGlkYXRlRnVuY3Rpb24+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21waWxlU2NoZW1hRW52KHNjaClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdSZWZFcnJvcikpIHRocm93IGVcbiAgICAgICAgY2hlY2tMb2FkZWQuY2FsbCh0aGlzLCBlKVxuICAgICAgICBhd2FpdCBsb2FkTWlzc2luZ1NjaGVtYS5jYWxsKHRoaXMsIGUubWlzc2luZ1NjaGVtYSlcbiAgICAgICAgcmV0dXJuIF9jb21waWxlQXN5bmMuY2FsbCh0aGlzLCBzY2gpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tMb2FkZWQodGhpczogQWp2LCB7bWlzc2luZ1NjaGVtYTogcmVmLCBtaXNzaW5nUmVmfTogTWlzc2luZ1JlZkVycm9yKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5yZWZzW3JlZl0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbnlTY2hlbWEgJHtyZWZ9IGlzIGxvYWRlZCBidXQgJHttaXNzaW5nUmVmfSBjYW5ub3QgYmUgcmVzb2x2ZWRgKVxuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWRNaXNzaW5nU2NoZW1hKHRoaXM6IEFqdiwgcmVmOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IF9zY2hlbWEgPSBhd2FpdCBfbG9hZFNjaGVtYS5jYWxsKHRoaXMsIHJlZilcbiAgICAgIGlmICghdGhpcy5yZWZzW3JlZl0pIGF3YWl0IGxvYWRNZXRhU2NoZW1hLmNhbGwodGhpcywgX3NjaGVtYS4kc2NoZW1hKVxuICAgICAgaWYgKCF0aGlzLnJlZnNbcmVmXSkgdGhpcy5hZGRTY2hlbWEoX3NjaGVtYSwgcmVmLCBtZXRhKVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9sb2FkU2NoZW1hKHRoaXM6IEFqdiwgcmVmOiBzdHJpbmcpOiBQcm9taXNlPEFueVNjaGVtYU9iamVjdD4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMuX2xvYWRpbmdbcmVmXVxuICAgICAgaWYgKHApIHJldHVybiBwXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgKHRoaXMuX2xvYWRpbmdbcmVmXSA9IGxvYWRTY2hlbWEocmVmKSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9sb2FkaW5nW3JlZl1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBZGRzIHNjaGVtYSB0byB0aGUgaW5zdGFuY2VcbiAgYWRkU2NoZW1hKFxuICAgIHNjaGVtYTogQW55U2NoZW1hIHwgQW55U2NoZW1hW10sIC8vIElmIGFycmF5IGlzIHBhc3NlZCwgYGtleWAgd2lsbCBiZSBpZ25vcmVkXG4gICAga2V5Pzogc3RyaW5nLCAvLyBPcHRpb25hbCBzY2hlbWEga2V5LiBDYW4gYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgbWV0aG9kIGluc3RlYWQgb2Ygc2NoZW1hIG9iamVjdCBvciBpZC9yZWYuIE9uZSBzY2hlbWEgcGVyIGluc3RhbmNlIGNhbiBoYXZlIGVtcHR5IGBpZGAgYW5kIGBrZXlgLlxuICAgIF9tZXRhPzogYm9vbGVhbiwgLy8gdHJ1ZSBpZiBzY2hlbWEgaXMgYSBtZXRhLXNjaGVtYS4gVXNlZCBpbnRlcm5hbGx5LCBhZGRNZXRhU2NoZW1hIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICAgX3ZhbGlkYXRlU2NoZW1hID0gdGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hIC8vIGZhbHNlIHRvIHNraXAgc2NoZW1hIHZhbGlkYXRpb24uIFVzZWQgaW50ZXJuYWxseSwgb3B0aW9uIHZhbGlkYXRlU2NoZW1hIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICk6IEFqdiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgZm9yIChjb25zdCBzY2ggb2Ygc2NoZW1hKSB0aGlzLmFkZFNjaGVtYShzY2gsIHVuZGVmaW5lZCwgX21ldGEsIF92YWxpZGF0ZVNjaGVtYSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGxldCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGNvbnN0IHtzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgICAgIGlkID0gc2NoZW1hW3NjaGVtYUlkXVxuICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGlkICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzY2hlbWEgJHtzY2hlbWFJZH0gbXVzdCBiZSBzdHJpbmdgKVxuICAgICAgfVxuICAgIH1cbiAgICBrZXkgPSBub3JtYWxpemVJZChrZXkgfHwgaWQpXG4gICAgdGhpcy5fY2hlY2tVbmlxdWUoa2V5KVxuICAgIHRoaXMuc2NoZW1hc1trZXldID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgX21ldGEsIGtleSwgX3ZhbGlkYXRlU2NoZW1hLCB0cnVlKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBBZGQgc2NoZW1hIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIG90aGVyIHNjaGVtYXNcbiAgLy8gb3B0aW9ucyBpbiBNRVRBX0lHTk9SRV9PUFRJT05TIGFyZSBhbHdheSBzZXQgdG8gZmFsc2VcbiAgYWRkTWV0YVNjaGVtYShcbiAgICBzY2hlbWE6IEFueVNjaGVtYU9iamVjdCxcbiAgICBrZXk/OiBzdHJpbmcsIC8vIHNjaGVtYSBrZXlcbiAgICBfdmFsaWRhdGVTY2hlbWEgPSB0aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEgLy8gZmFsc2UgdG8gc2tpcCBzY2hlbWEgdmFsaWRhdGlvbiwgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdmFsaWRhdGVTY2hlbWEgb3B0aW9uIGZvciBtZXRhLXNjaGVtYVxuICApOiBBanYge1xuICAgIHRoaXMuYWRkU2NoZW1hKHNjaGVtYSwga2V5LCB0cnVlLCBfdmFsaWRhdGVTY2hlbWEpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vICBWYWxpZGF0ZSBzY2hlbWEgYWdhaW5zdCBpdHMgbWV0YS1zY2hlbWFcbiAgdmFsaWRhdGVTY2hlbWEoc2NoZW1hOiBBbnlTY2hlbWEsIHRocm93T3JMb2dFcnJvcj86IGJvb2xlYW4pOiBib29sZWFuIHwgUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiB0cnVlXG4gICAgbGV0ICRzY2hlbWE6IHN0cmluZyB8IEFueVNjaGVtYU9iamVjdCB8IHVuZGVmaW5lZFxuICAgICRzY2hlbWEgPSBzY2hlbWEuJHNjaGVtYVxuICAgIGlmICgkc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICRzY2hlbWEgIT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiJHNjaGVtYSBtdXN0IGJlIGEgc3RyaW5nXCIpXG4gICAgfVxuICAgICRzY2hlbWEgPSAkc2NoZW1hIHx8IHRoaXMub3B0cy5kZWZhdWx0TWV0YSB8fCB0aGlzLmRlZmF1bHRNZXRhKClcbiAgICBpZiAoISRzY2hlbWEpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJtZXRhLXNjaGVtYSBub3QgYXZhaWxhYmxlXCIpXG4gICAgICB0aGlzLmVycm9ycyA9IG51bGxcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZSgkc2NoZW1hLCBzY2hlbWEpXG4gICAgaWYgKCF2YWxpZCAmJiB0aHJvd09yTG9nRXJyb3IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBcInNjaGVtYSBpcyBpbnZhbGlkOiBcIiArIHRoaXMuZXJyb3JzVGV4dCgpXG4gICAgICBpZiAodGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hID09PSBcImxvZ1wiKSB0aGlzLmxvZ2dlci5lcnJvcihtZXNzYWdlKVxuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkXG4gIH1cblxuICAvLyBHZXQgY29tcGlsZWQgc2NoZW1hIGJ5IGBrZXlgIG9yIGByZWZgLlxuICAvLyAoYGtleWAgdGhhdCB3YXMgcGFzc2VkIHRvIGBhZGRTY2hlbWFgIG9yIGZ1bGwgc2NoZW1hIHJlZmVyZW5jZSAtIGBzY2hlbWEuJGlkYCBvciByZXNvbHZlZCBpZClcbiAgZ2V0U2NoZW1hPFQgPSB1bmtub3duPihrZXlSZWY6IHN0cmluZyk6IEFueVZhbGlkYXRlRnVuY3Rpb248VD4gfCB1bmRlZmluZWQge1xuICAgIGxldCBzY2hcbiAgICB3aGlsZSAodHlwZW9mIChzY2ggPSBnZXRTY2hFbnYuY2FsbCh0aGlzLCBrZXlSZWYpKSA9PSBcInN0cmluZ1wiKSBrZXlSZWYgPSBzY2hcbiAgICBpZiAoc2NoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHtzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgICAgIGNvbnN0IHJvb3QgPSBuZXcgU2NoZW1hRW52KHtzY2hlbWE6IHt9LCBzY2hlbWFJZH0pXG4gICAgICBzY2ggPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwga2V5UmVmKVxuICAgICAgaWYgKCFzY2gpIHJldHVyblxuICAgICAgdGhpcy5yZWZzW2tleVJlZl0gPSBzY2hcbiAgICB9XG4gICAgcmV0dXJuIChzY2gudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZVNjaGVtYUVudihzY2gpKSBhcyBBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+IHwgdW5kZWZpbmVkXG4gIH1cblxuICAvLyBSZW1vdmUgY2FjaGVkIHNjaGVtYShzKS5cbiAgLy8gSWYgbm8gcGFyYW1ldGVyIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyBidXQgbWV0YS1zY2hlbWFzIGFyZSByZW1vdmVkLlxuICAvLyBJZiBSZWdFeHAgaXMgcGFzc2VkIGFsbCBzY2hlbWFzIHdpdGgga2V5L2lkIG1hdGNoaW5nIHBhdHRlcm4gYnV0IG1ldGEtc2NoZW1hcyBhcmUgcmVtb3ZlZC5cbiAgLy8gRXZlbiBpZiBzY2hlbWEgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBzY2hlbWFzIGl0IHN0aWxsIGNhbiBiZSByZW1vdmVkIGFzIG90aGVyIHNjaGVtYXMgaGF2ZSBsb2NhbCByZWZlcmVuY2VzLlxuICByZW1vdmVTY2hlbWEoc2NoZW1hS2V5UmVmPzogQW55U2NoZW1hIHwgc3RyaW5nIHwgUmVnRXhwKTogQWp2IHtcbiAgICBpZiAoc2NoZW1hS2V5UmVmIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcywgc2NoZW1hS2V5UmVmKVxuICAgICAgdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMsIHNjaGVtYUtleVJlZilcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZW9mIHNjaGVtYUtleVJlZikge1xuICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcylcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMpXG4gICAgICAgIHRoaXMuX2NhY2hlLmNsZWFyKClcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjoge1xuICAgICAgICBjb25zdCBzY2ggPSBnZXRTY2hFbnYuY2FsbCh0aGlzLCBzY2hlbWFLZXlSZWYpXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoID09IFwib2JqZWN0XCIpIHRoaXMuX2NhY2hlLmRlbGV0ZShzY2guc2NoZW1hKVxuICAgICAgICBkZWxldGUgdGhpcy5zY2hlbWFzW3NjaGVtYUtleVJlZl1cbiAgICAgICAgZGVsZXRlIHRoaXMucmVmc1tzY2hlbWFLZXlSZWZdXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBzY2hlbWFLZXlSZWZcbiAgICAgICAgdGhpcy5fY2FjaGUuZGVsZXRlKGNhY2hlS2V5KVxuICAgICAgICBsZXQgaWQgPSBzY2hlbWFLZXlSZWZbdGhpcy5vcHRzLnNjaGVtYUlkXVxuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICBpZCA9IG5vcm1hbGl6ZUlkKGlkKVxuICAgICAgICAgIGRlbGV0ZSB0aGlzLnNjaGVtYXNbaWRdXG4gICAgICAgICAgZGVsZXRlIHRoaXMucmVmc1tpZF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYWp2LnJlbW92ZVNjaGVtYTogaW52YWxpZCBwYXJhbWV0ZXJcIilcbiAgICB9XG4gIH1cblxuICAvLyBhZGQgXCJ2b2NhYnVsYXJ5XCIgLSBhIGNvbGxlY3Rpb24gb2Yga2V5d29yZHNcbiAgYWRkVm9jYWJ1bGFyeShkZWZpbml0aW9uczogVm9jYWJ1bGFyeSk6IEFqdiB7XG4gICAgZm9yIChjb25zdCBkZWYgb2YgZGVmaW5pdGlvbnMpIHRoaXMuYWRkS2V5d29yZChkZWYpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGFkZEtleXdvcmQoXG4gICAga3dkT3JEZWY6IHN0cmluZyB8IEtleXdvcmREZWZpbml0aW9uLFxuICAgIGRlZj86IEtleXdvcmREZWZpbml0aW9uIC8vIGRlcHJlY2F0ZWRcbiAgKTogQWp2IHtcbiAgICBsZXQga2V5d29yZDogc3RyaW5nIHwgc3RyaW5nW11cbiAgICBpZiAodHlwZW9mIGt3ZE9yRGVmID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGtleXdvcmQgPSBrd2RPckRlZlxuICAgICAgaWYgKHR5cGVvZiBkZWYgPT0gXCJvYmplY3RcIikge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwidGhlc2UgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZCwgc2VlIGRvY3MgZm9yIGFkZEtleXdvcmRcIilcbiAgICAgICAgZGVmLmtleXdvcmQgPSBrZXl3b3JkXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2Yga3dkT3JEZWYgPT0gXCJvYmplY3RcIiAmJiBkZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmID0ga3dkT3JEZWZcbiAgICAgIGtleXdvcmQgPSBkZWYua2V5d29yZFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5d29yZCkgJiYgIWtleXdvcmQubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImFkZEtleXdvcmRzOiBrZXl3b3JkIG11c3QgYmUgc3RyaW5nIG9yIG5vbi1lbXB0eSBhcnJheVwiKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGFkZEtleXdvcmRzIHBhcmFtZXRlcnNcIilcbiAgICB9XG5cbiAgICBjaGVja0tleXdvcmQuY2FsbCh0aGlzLCBrZXl3b3JkLCBkZWYpXG4gICAgaWYgKCFkZWYpIHtcbiAgICAgIGVhY2hJdGVtKGtleXdvcmQsIChrd2QpID0+IGFkZFJ1bGUuY2FsbCh0aGlzLCBrd2QpKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAga2V5d29yZE1ldGFzY2hlbWEuY2FsbCh0aGlzLCBkZWYpXG4gICAgY29uc3QgZGVmaW5pdGlvbjogQWRkZWRLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAgICAgIC4uLmRlZixcbiAgICAgIHR5cGU6IGdldEpTT05UeXBlcyhkZWYudHlwZSksXG4gICAgICBzY2hlbWFUeXBlOiBnZXRKU09OVHlwZXMoZGVmLnNjaGVtYVR5cGUpLFxuICAgIH1cbiAgICBlYWNoSXRlbShcbiAgICAgIGtleXdvcmQsXG4gICAgICBkZWZpbml0aW9uLnR5cGUubGVuZ3RoID09PSAwXG4gICAgICAgID8gKGspID0+IGFkZFJ1bGUuY2FsbCh0aGlzLCBrLCBkZWZpbml0aW9uKVxuICAgICAgICA6IChrKSA9PiBkZWZpbml0aW9uLnR5cGUuZm9yRWFjaCgodCkgPT4gYWRkUnVsZS5jYWxsKHRoaXMsIGssIGRlZmluaXRpb24sIHQpKVxuICAgIClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0S2V5d29yZChrZXl3b3JkOiBzdHJpbmcpOiBBZGRlZEtleXdvcmREZWZpbml0aW9uIHwgYm9vbGVhbiB7XG4gICAgY29uc3QgcnVsZSA9IHRoaXMuUlVMRVMuYWxsW2tleXdvcmRdXG4gICAgcmV0dXJuIHR5cGVvZiBydWxlID09IFwib2JqZWN0XCIgPyBydWxlLmRlZmluaXRpb24gOiAhIXJ1bGVcbiAgfVxuXG4gIC8vIFJlbW92ZSBrZXl3b3JkXG4gIHJlbW92ZUtleXdvcmQoa2V5d29yZDogc3RyaW5nKTogQWp2IHtcbiAgICAvLyBUT0RPIHJldHVybiB0eXBlIHNob3VsZCBiZSBBanZcbiAgICBjb25zdCB7UlVMRVN9ID0gdGhpc1xuICAgIGRlbGV0ZSBSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXVxuICAgIGRlbGV0ZSBSVUxFUy5hbGxba2V5d29yZF1cbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIFJVTEVTLnJ1bGVzKSB7XG4gICAgICBjb25zdCBpID0gZ3JvdXAucnVsZXMuZmluZEluZGV4KChydWxlKSA9PiBydWxlLmtleXdvcmQgPT09IGtleXdvcmQpXG4gICAgICBpZiAoaSA+PSAwKSBncm91cC5ydWxlcy5zcGxpY2UoaSwgMSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEFkZCBmb3JtYXRcbiAgYWRkRm9ybWF0KG5hbWU6IHN0cmluZywgZm9ybWF0OiBGb3JtYXQpOiBBanYge1xuICAgIGlmICh0eXBlb2YgZm9ybWF0ID09IFwic3RyaW5nXCIpIGZvcm1hdCA9IG5ldyBSZWdFeHAoZm9ybWF0KVxuICAgIHRoaXMuZm9ybWF0c1tuYW1lXSA9IGZvcm1hdFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBlcnJvcnNUZXh0KFxuICAgIGVycm9yczogRXJyb3JPYmplY3RbXSB8IG51bGwgfCB1bmRlZmluZWQgPSB0aGlzLmVycm9ycywgLy8gb3B0aW9uYWwgYXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICB7c2VwYXJhdG9yID0gXCIsIFwiLCBkYXRhVmFyID0gXCJkYXRhXCJ9OiBFcnJvcnNUZXh0T3B0aW9ucyA9IHt9IC8vIG9wdGlvbmFsIG9wdGlvbnMgd2l0aCBwcm9wZXJ0aWVzIGBzZXBhcmF0b3JgIGFuZCBgZGF0YVZhcmBcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIWVycm9ycyB8fCBlcnJvcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJObyBlcnJvcnNcIlxuICAgIHJldHVybiBlcnJvcnNcbiAgICAgIC5tYXAoKGUpID0+IGAke2RhdGFWYXJ9JHtlLmluc3RhbmNlUGF0aH0gJHtlLm1lc3NhZ2V9YClcbiAgICAgIC5yZWR1Y2UoKHRleHQsIG1zZykgPT4gdGV4dCArIHNlcGFyYXRvciArIG1zZylcbiAgfVxuXG4gICRkYXRhTWV0YVNjaGVtYShtZXRhU2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsIGtleXdvcmRzSnNvblBvaW50ZXJzOiBzdHJpbmdbXSk6IEFueVNjaGVtYU9iamVjdCB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLlJVTEVTLmFsbFxuICAgIG1ldGFTY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1ldGFTY2hlbWEpKVxuICAgIGZvciAoY29uc3QganNvblBvaW50ZXIgb2Yga2V5d29yZHNKc29uUG9pbnRlcnMpIHtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0ganNvblBvaW50ZXIuc3BsaXQoXCIvXCIpLnNsaWNlKDEpIC8vIGZpcnN0IHNlZ21lbnQgaXMgYW4gZW1wdHkgc3RyaW5nXG4gICAgICBsZXQga2V5d29yZHMgPSBtZXRhU2NoZW1hXG4gICAgICBmb3IgKGNvbnN0IHNlZyBvZiBzZWdtZW50cykga2V5d29yZHMgPSBrZXl3b3Jkc1tzZWddIGFzIEFueVNjaGVtYU9iamVjdFxuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBydWxlcykge1xuICAgICAgICBjb25zdCBydWxlID0gcnVsZXNba2V5XVxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgIT0gXCJvYmplY3RcIikgY29udGludWVcbiAgICAgICAgY29uc3QgeyRkYXRhfSA9IHJ1bGUuZGVmaW5pdGlvblxuICAgICAgICBjb25zdCBzY2hlbWEgPSBrZXl3b3Jkc1trZXldIGFzIEFueVNjaGVtYU9iamVjdCB8IHVuZGVmaW5lZFxuICAgICAgICBpZiAoJGRhdGEgJiYgc2NoZW1hKSBrZXl3b3Jkc1trZXldID0gc2NoZW1hT3JEYXRhKHNjaGVtYSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YVNjaGVtYVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlQWxsU2NoZW1hcyhzY2hlbWFzOiB7W1JlZiBpbiBzdHJpbmddPzogU2NoZW1hRW52IHwgc3RyaW5nfSwgcmVnZXg/OiBSZWdFeHApOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleVJlZiBpbiBzY2hlbWFzKSB7XG4gICAgICBjb25zdCBzY2ggPSBzY2hlbWFzW2tleVJlZl1cbiAgICAgIGlmICghcmVnZXggfHwgcmVnZXgudGVzdChrZXlSZWYpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBkZWxldGUgc2NoZW1hc1trZXlSZWZdXG4gICAgICAgIH0gZWxzZSBpZiAoc2NoICYmICFzY2gubWV0YSkge1xuICAgICAgICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShzY2guc2NoZW1hKVxuICAgICAgICAgIGRlbGV0ZSBzY2hlbWFzW2tleVJlZl1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9hZGRTY2hlbWEoXG4gICAgc2NoZW1hOiBBbnlTY2hlbWEsXG4gICAgbWV0YT86IGJvb2xlYW4sXG4gICAgYmFzZUlkPzogc3RyaW5nLFxuICAgIHZhbGlkYXRlU2NoZW1hID0gdGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hLFxuICAgIGFkZFNjaGVtYSA9IHRoaXMub3B0cy5hZGRVc2VkU2NoZW1hXG4gICk6IFNjaGVtYUVudiB7XG4gICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICBjb25zdCB7c2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJvYmplY3RcIikge1xuICAgICAgaWQgPSBzY2hlbWFbc2NoZW1hSWRdXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuanRkKSB0aHJvdyBuZXcgRXJyb3IoXCJzY2hlbWEgbXVzdCBiZSBvYmplY3RcIilcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEgIT0gXCJib29sZWFuXCIpIHRocm93IG5ldyBFcnJvcihcInNjaGVtYSBtdXN0IGJlIG9iamVjdCBvciBib29sZWFuXCIpXG4gICAgfVxuICAgIGxldCBzY2ggPSB0aGlzLl9jYWNoZS5nZXQoc2NoZW1hKVxuICAgIGlmIChzY2ggIT09IHVuZGVmaW5lZCkgcmV0dXJuIHNjaFxuXG4gICAgYmFzZUlkID0gbm9ybWFsaXplSWQoaWQgfHwgYmFzZUlkKVxuICAgIGNvbnN0IGxvY2FsUmVmcyA9IGdldFNjaGVtYVJlZnMuY2FsbCh0aGlzLCBzY2hlbWEsIGJhc2VJZClcbiAgICBzY2ggPSBuZXcgU2NoZW1hRW52KHtzY2hlbWEsIHNjaGVtYUlkLCBtZXRhLCBiYXNlSWQsIGxvY2FsUmVmc30pXG4gICAgdGhpcy5fY2FjaGUuc2V0KHNjaC5zY2hlbWEsIHNjaClcbiAgICBpZiAoYWRkU2NoZW1hICYmICFiYXNlSWQuc3RhcnRzV2l0aChcIiNcIikpIHtcbiAgICAgIC8vIFRPRE8gYXRtIGl0IGlzIGFsbG93ZWQgdG8gb3ZlcndyaXRlIHNjaGVtYXMgd2l0aG91dCBpZCAoaW5zdGVhZCBvZiBub3QgYWRkaW5nIHRoZW0pXG4gICAgICBpZiAoYmFzZUlkKSB0aGlzLl9jaGVja1VuaXF1ZShiYXNlSWQpXG4gICAgICB0aGlzLnJlZnNbYmFzZUlkXSA9IHNjaFxuICAgIH1cbiAgICBpZiAodmFsaWRhdGVTY2hlbWEpIHRoaXMudmFsaWRhdGVTY2hlbWEoc2NoZW1hLCB0cnVlKVxuICAgIHJldHVybiBzY2hcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrVW5pcXVlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2hlbWFzW2lkXSB8fCB0aGlzLnJlZnNbaWRdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNjaGVtYSB3aXRoIGtleSBvciBpZCBcIiR7aWR9XCIgYWxyZWFkeSBleGlzdHNgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVTY2hlbWFFbnYoc2NoOiBTY2hlbWFFbnYpOiBBbnlWYWxpZGF0ZUZ1bmN0aW9uIHtcbiAgICBpZiAoc2NoLm1ldGEpIHRoaXMuX2NvbXBpbGVNZXRhU2NoZW1hKHNjaClcbiAgICBlbHNlIGNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCBzY2gpXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXNjaC52YWxpZGF0ZSkgdGhyb3cgbmV3IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpXG4gICAgcmV0dXJuIHNjaC52YWxpZGF0ZVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGlsZU1ldGFTY2hlbWEoc2NoOiBTY2hlbWFFbnYpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50T3B0cyA9IHRoaXMub3B0c1xuICAgIHRoaXMub3B0cyA9IHRoaXMuX21ldGFPcHRzXG4gICAgdHJ5IHtcbiAgICAgIGNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCBzY2gpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub3B0cyA9IGN1cnJlbnRPcHRzXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JzVGV4dE9wdGlvbnMge1xuICBzZXBhcmF0b3I/OiBzdHJpbmdcbiAgZGF0YVZhcj86IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBjaGVja09wdGlvbnMoXG4gIHRoaXM6IEFqdixcbiAgY2hlY2tPcHRzOiBPcHRpb25zSW5mbzxSZW1vdmVkT3B0aW9ucyB8IERlcHJlY2F0ZWRPcHRpb25zPixcbiAgb3B0aW9uczogT3B0aW9ucyAmIFJlbW92ZWRPcHRpb25zLFxuICBtc2c6IHN0cmluZyxcbiAgbG9nOiBcIndhcm5cIiB8IFwiZXJyb3JcIiA9IFwiZXJyb3JcIlxuKTogdm9pZCB7XG4gIGZvciAoY29uc3Qga2V5IGluIGNoZWNrT3B0cykge1xuICAgIGNvbnN0IG9wdCA9IGtleSBhcyBrZXlvZiB0eXBlb2YgY2hlY2tPcHRzXG4gICAgaWYgKG9wdCBpbiBvcHRpb25zKSB0aGlzLmxvZ2dlcltsb2ddKGAke21zZ306IG9wdGlvbiAke2tleX0uICR7Y2hlY2tPcHRzW29wdF19YClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY2hFbnYodGhpczogQWp2LCBrZXlSZWY6IHN0cmluZyk6IFNjaGVtYUVudiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGtleVJlZiA9IG5vcm1hbGl6ZUlkKGtleVJlZikgLy8gVE9ETyB0ZXN0cyBmYWlsIHdpdGhvdXQgdGhpcyBsaW5lXG4gIHJldHVybiB0aGlzLnNjaGVtYXNba2V5UmVmXSB8fCB0aGlzLnJlZnNba2V5UmVmXVxufVxuXG5mdW5jdGlvbiBhZGRJbml0aWFsU2NoZW1hcyh0aGlzOiBBanYpOiB2b2lkIHtcbiAgY29uc3Qgb3B0c1NjaGVtYXMgPSB0aGlzLm9wdHMuc2NoZW1hc1xuICBpZiAoIW9wdHNTY2hlbWFzKSByZXR1cm5cbiAgaWYgKEFycmF5LmlzQXJyYXkob3B0c1NjaGVtYXMpKSB0aGlzLmFkZFNjaGVtYShvcHRzU2NoZW1hcylcbiAgZWxzZSBmb3IgKGNvbnN0IGtleSBpbiBvcHRzU2NoZW1hcykgdGhpcy5hZGRTY2hlbWEob3B0c1NjaGVtYXNba2V5XSBhcyBBbnlTY2hlbWEsIGtleSlcbn1cblxuZnVuY3Rpb24gYWRkSW5pdGlhbEZvcm1hdHModGhpczogQWp2KTogdm9pZCB7XG4gIGZvciAoY29uc3QgbmFtZSBpbiB0aGlzLm9wdHMuZm9ybWF0cykge1xuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMub3B0cy5mb3JtYXRzW25hbWVdXG4gICAgaWYgKGZvcm1hdCkgdGhpcy5hZGRGb3JtYXQobmFtZSwgZm9ybWF0KVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxLZXl3b3JkcyhcbiAgdGhpczogQWp2LFxuICBkZWZzOiBWb2NhYnVsYXJ5IHwge1tLIGluIHN0cmluZ10/OiBLZXl3b3JkRGVmaW5pdGlvbn1cbik6IHZvaWQge1xuICBpZiAoQXJyYXkuaXNBcnJheShkZWZzKSkge1xuICAgIHRoaXMuYWRkVm9jYWJ1bGFyeShkZWZzKVxuICAgIHJldHVyblxuICB9XG4gIHRoaXMubG9nZ2VyLndhcm4oXCJrZXl3b3JkcyBvcHRpb24gYXMgbWFwIGlzIGRlcHJlY2F0ZWQsIHBhc3MgYXJyYXlcIilcbiAgZm9yIChjb25zdCBrZXl3b3JkIGluIGRlZnMpIHtcbiAgICBjb25zdCBkZWYgPSBkZWZzW2tleXdvcmRdIGFzIEtleXdvcmREZWZpbml0aW9uXG4gICAgaWYgKCFkZWYua2V5d29yZCkgZGVmLmtleXdvcmQgPSBrZXl3b3JkXG4gICAgdGhpcy5hZGRLZXl3b3JkKGRlZilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRNZXRhU2NoZW1hT3B0aW9ucyh0aGlzOiBBanYpOiBJbnN0YW5jZU9wdGlvbnMge1xuICBjb25zdCBtZXRhT3B0cyA9IHsuLi50aGlzLm9wdHN9XG4gIGZvciAoY29uc3Qgb3B0IG9mIE1FVEFfSUdOT1JFX09QVElPTlMpIGRlbGV0ZSBtZXRhT3B0c1tvcHRdXG4gIHJldHVybiBtZXRhT3B0c1xufVxuXG5jb25zdCBub0xvZ3MgPSB7bG9nKCkge30sIHdhcm4oKSB7fSwgZXJyb3IoKSB7fX1cblxuZnVuY3Rpb24gZ2V0TG9nZ2VyKGxvZ2dlcj86IFBhcnRpYWw8TG9nZ2VyPiB8IGZhbHNlKTogTG9nZ2VyIHtcbiAgaWYgKGxvZ2dlciA9PT0gZmFsc2UpIHJldHVybiBub0xvZ3NcbiAgaWYgKGxvZ2dlciA9PT0gdW5kZWZpbmVkKSByZXR1cm4gY29uc29sZVxuICBpZiAobG9nZ2VyLmxvZyAmJiBsb2dnZXIud2FybiAmJiBsb2dnZXIuZXJyb3IpIHJldHVybiBsb2dnZXIgYXMgTG9nZ2VyXG4gIHRocm93IG5ldyBFcnJvcihcImxvZ2dlciBtdXN0IGltcGxlbWVudCBsb2csIHdhcm4gYW5kIGVycm9yIG1ldGhvZHNcIilcbn1cblxuY29uc3QgS0VZV09SRF9OQU1FID0gL15bYS16XyRdW2EtejAtOV8kOi1dKiQvaVxuXG5mdW5jdGlvbiBjaGVja0tleXdvcmQodGhpczogQWp2LCBrZXl3b3JkOiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVmPzogS2V5d29yZERlZmluaXRpb24pOiB2b2lkIHtcbiAgY29uc3Qge1JVTEVTfSA9IHRoaXNcbiAgZWFjaEl0ZW0oa2V5d29yZCwgKGt3ZCkgPT4ge1xuICAgIGlmIChSVUxFUy5rZXl3b3Jkc1trd2RdKSB0aHJvdyBuZXcgRXJyb3IoYEtleXdvcmQgJHtrd2R9IGlzIGFscmVhZHkgZGVmaW5lZGApXG4gICAgaWYgKCFLRVlXT1JEX05BTUUudGVzdChrd2QpKSB0aHJvdyBuZXcgRXJyb3IoYEtleXdvcmQgJHtrd2R9IGhhcyBpbnZhbGlkIG5hbWVgKVxuICB9KVxuICBpZiAoIWRlZikgcmV0dXJuXG4gIGlmIChkZWYuJGRhdGEgJiYgIShcImNvZGVcIiBpbiBkZWYgfHwgXCJ2YWxpZGF0ZVwiIGluIGRlZikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyRkYXRhIGtleXdvcmQgbXVzdCBoYXZlIFwiY29kZVwiIG9yIFwidmFsaWRhdGVcIiBmdW5jdGlvbicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUnVsZShcbiAgdGhpczogQWp2LFxuICBrZXl3b3JkOiBzdHJpbmcsXG4gIGRlZmluaXRpb24/OiBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBkYXRhVHlwZT86IEpTT05UeXBlXG4pOiB2b2lkIHtcbiAgY29uc3QgcG9zdCA9IGRlZmluaXRpb24/LnBvc3RcbiAgaWYgKGRhdGFUeXBlICYmIHBvc3QpIHRocm93IG5ldyBFcnJvcigna2V5d29yZCB3aXRoIFwicG9zdFwiIGZsYWcgY2Fubm90IGhhdmUgXCJ0eXBlXCInKVxuICBjb25zdCB7UlVMRVN9ID0gdGhpc1xuICBsZXQgcnVsZUdyb3VwID0gcG9zdCA/IFJVTEVTLnBvc3QgOiBSVUxFUy5ydWxlcy5maW5kKCh7dHlwZTogdH0pID0+IHQgPT09IGRhdGFUeXBlKVxuICBpZiAoIXJ1bGVHcm91cCkge1xuICAgIHJ1bGVHcm91cCA9IHt0eXBlOiBkYXRhVHlwZSwgcnVsZXM6IFtdfVxuICAgIFJVTEVTLnJ1bGVzLnB1c2gocnVsZUdyb3VwKVxuICB9XG4gIFJVTEVTLmtleXdvcmRzW2tleXdvcmRdID0gdHJ1ZVxuICBpZiAoIWRlZmluaXRpb24pIHJldHVyblxuXG4gIGNvbnN0IHJ1bGU6IFJ1bGUgPSB7XG4gICAga2V5d29yZCxcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAuLi5kZWZpbml0aW9uLFxuICAgICAgdHlwZTogZ2V0SlNPTlR5cGVzKGRlZmluaXRpb24udHlwZSksXG4gICAgICBzY2hlbWFUeXBlOiBnZXRKU09OVHlwZXMoZGVmaW5pdGlvbi5zY2hlbWFUeXBlKSxcbiAgICB9LFxuICB9XG4gIGlmIChkZWZpbml0aW9uLmJlZm9yZSkgYWRkQmVmb3JlUnVsZS5jYWxsKHRoaXMsIHJ1bGVHcm91cCwgcnVsZSwgZGVmaW5pdGlvbi5iZWZvcmUpXG4gIGVsc2UgcnVsZUdyb3VwLnJ1bGVzLnB1c2gocnVsZSlcbiAgUlVMRVMuYWxsW2tleXdvcmRdID0gcnVsZVxuICBkZWZpbml0aW9uLmltcGxlbWVudHM/LmZvckVhY2goKGt3ZCkgPT4gdGhpcy5hZGRLZXl3b3JkKGt3ZCkpXG59XG5cbmZ1bmN0aW9uIGFkZEJlZm9yZVJ1bGUodGhpczogQWp2LCBydWxlR3JvdXA6IFJ1bGVHcm91cCwgcnVsZTogUnVsZSwgYmVmb3JlOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgaSA9IHJ1bGVHcm91cC5ydWxlcy5maW5kSW5kZXgoKF9ydWxlKSA9PiBfcnVsZS5rZXl3b3JkID09PSBiZWZvcmUpXG4gIGlmIChpID49IDApIHtcbiAgICBydWxlR3JvdXAucnVsZXMuc3BsaWNlKGksIDAsIHJ1bGUpXG4gIH0gZWxzZSB7XG4gICAgcnVsZUdyb3VwLnJ1bGVzLnB1c2gocnVsZSlcbiAgICB0aGlzLmxvZ2dlci53YXJuKGBydWxlICR7YmVmb3JlfSBpcyBub3QgZGVmaW5lZGApXG4gIH1cbn1cblxuZnVuY3Rpb24ga2V5d29yZE1ldGFzY2hlbWEodGhpczogQWp2LCBkZWY6IEtleXdvcmREZWZpbml0aW9uKTogdm9pZCB7XG4gIGxldCB7bWV0YVNjaGVtYX0gPSBkZWZcbiAgaWYgKG1ldGFTY2hlbWEgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGlmIChkZWYuJGRhdGEgJiYgdGhpcy5vcHRzLiRkYXRhKSBtZXRhU2NoZW1hID0gc2NoZW1hT3JEYXRhKG1ldGFTY2hlbWEpXG4gIGRlZi52YWxpZGF0ZVNjaGVtYSA9IHRoaXMuY29tcGlsZShtZXRhU2NoZW1hLCB0cnVlKVxufVxuXG5jb25zdCAkZGF0YVJlZiA9IHtcbiAgJHJlZjogXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiNcIixcbn1cblxuZnVuY3Rpb24gc2NoZW1hT3JEYXRhKHNjaGVtYTogQW55U2NoZW1hKTogQW55U2NoZW1hT2JqZWN0IHtcbiAgcmV0dXJuIHthbnlPZjogW3NjaGVtYSwgJGRhdGFSZWZdfVxufVxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImlkXCIsXG4gIGNvZGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOT1QgU1VQUE9SVEVEOiBrZXl3b3JkIFwiaWRcIiwgdXNlIFwiJGlkXCIgZm9yIHNjaGVtYSBJRCcpXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEFueVNjaGVtYX0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQgTWlzc2luZ1JlZkVycm9yIGZyb20gXCIuLi8uLi9jb21waWxlL3JlZl9lcnJvclwiXG5pbXBvcnQge2NhbGxWYWxpZGF0ZUNvZGV9IGZyb20gXCIuLi9jb2RlXCJcbmltcG9ydCB7XywgbmlsLCBzdHJpbmdpZnksIENvZGUsIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IE4gZnJvbSBcIi4uLy4uL2NvbXBpbGUvbmFtZXNcIlxuaW1wb3J0IHtTY2hlbWFFbnYsIHJlc29sdmVSZWZ9IGZyb20gXCIuLi8uLi9jb21waWxlXCJcbmltcG9ydCB7bWVyZ2VFdmFsdWF0ZWR9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCIkcmVmXCIsXG4gIHNjaGVtYVR5cGU6IFwic3RyaW5nXCIsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KTogdm9pZCB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hOiAkcmVmLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7YmFzZUlkLCBzY2hlbWFFbnY6IGVudiwgdmFsaWRhdGVOYW1lLCBvcHRzLCBzZWxmfSA9IGl0XG4gICAgY29uc3Qge3Jvb3R9ID0gZW52XG4gICAgaWYgKCgkcmVmID09PSBcIiNcIiB8fCAkcmVmID09PSBcIiMvXCIpICYmIGJhc2VJZCA9PT0gcm9vdC5iYXNlSWQpIHJldHVybiBjYWxsUm9vdFJlZigpXG4gICAgY29uc3Qgc2NoT3JFbnYgPSByZXNvbHZlUmVmLmNhbGwoc2VsZiwgcm9vdCwgYmFzZUlkLCAkcmVmKVxuICAgIGlmIChzY2hPckVudiA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgTWlzc2luZ1JlZkVycm9yKGl0Lm9wdHMudXJpUmVzb2x2ZXIsIGJhc2VJZCwgJHJlZilcbiAgICBpZiAoc2NoT3JFbnYgaW5zdGFuY2VvZiBTY2hlbWFFbnYpIHJldHVybiBjYWxsVmFsaWRhdGUoc2NoT3JFbnYpXG4gICAgcmV0dXJuIGlubGluZVJlZlNjaGVtYShzY2hPckVudilcblxuICAgIGZ1bmN0aW9uIGNhbGxSb290UmVmKCk6IHZvaWQge1xuICAgICAgaWYgKGVudiA9PT0gcm9vdCkgcmV0dXJuIGNhbGxSZWYoY3h0LCB2YWxpZGF0ZU5hbWUsIGVudiwgZW52LiRhc3luYylcbiAgICAgIGNvbnN0IHJvb3ROYW1lID0gZ2VuLnNjb3BlVmFsdWUoXCJyb290XCIsIHtyZWY6IHJvb3R9KVxuICAgICAgcmV0dXJuIGNhbGxSZWYoY3h0LCBfYCR7cm9vdE5hbWV9LnZhbGlkYXRlYCwgcm9vdCwgcm9vdC4kYXN5bmMpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsbFZhbGlkYXRlKHNjaDogU2NoZW1hRW52KTogdm9pZCB7XG4gICAgICBjb25zdCB2ID0gZ2V0VmFsaWRhdGUoY3h0LCBzY2gpXG4gICAgICBjYWxsUmVmKGN4dCwgdiwgc2NoLCBzY2guJGFzeW5jKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlubGluZVJlZlNjaGVtYShzY2g6IEFueVNjaGVtYSk6IHZvaWQge1xuICAgICAgY29uc3Qgc2NoTmFtZSA9IGdlbi5zY29wZVZhbHVlKFxuICAgICAgICBcInNjaGVtYVwiLFxuICAgICAgICBvcHRzLmNvZGUuc291cmNlID09PSB0cnVlID8ge3JlZjogc2NoLCBjb2RlOiBzdHJpbmdpZnkoc2NoKX0gOiB7cmVmOiBzY2h9XG4gICAgICApXG4gICAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBzY2hlbWE6IHNjaCxcbiAgICAgICAgICBkYXRhVHlwZXM6IFtdLFxuICAgICAgICAgIHNjaGVtYVBhdGg6IG5pbCxcbiAgICAgICAgICB0b3BTY2hlbWFSZWY6IHNjaE5hbWUsXG4gICAgICAgICAgZXJyU2NoZW1hUGF0aDogJHJlZixcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRcbiAgICAgIClcbiAgICAgIGN4dC5tZXJnZUV2YWx1YXRlZChzY2hDeHQpXG4gICAgICBjeHQub2sodmFsaWQpXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdGUoY3h0OiBLZXl3b3JkQ3h0LCBzY2g6IFNjaGVtYUVudik6IENvZGUge1xuICBjb25zdCB7Z2VufSA9IGN4dFxuICByZXR1cm4gc2NoLnZhbGlkYXRlXG4gICAgPyBnZW4uc2NvcGVWYWx1ZShcInZhbGlkYXRlXCIsIHtyZWY6IHNjaC52YWxpZGF0ZX0pXG4gICAgOiBfYCR7Z2VuLnNjb3BlVmFsdWUoXCJ3cmFwcGVyXCIsIHtyZWY6IHNjaH0pfS52YWxpZGF0ZWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxSZWYoY3h0OiBLZXl3b3JkQ3h0LCB2OiBDb2RlLCBzY2g/OiBTY2hlbWFFbnYsICRhc3luYz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgaXR9ID0gY3h0XG4gIGNvbnN0IHthbGxFcnJvcnMsIHNjaGVtYUVudjogZW52LCBvcHRzfSA9IGl0XG4gIGNvbnN0IHBhc3NDeHQgPSBvcHRzLnBhc3NDb250ZXh0ID8gTi50aGlzIDogbmlsXG4gIGlmICgkYXN5bmMpIGNhbGxBc3luY1JlZigpXG4gIGVsc2UgY2FsbFN5bmNSZWYoKVxuXG4gIGZ1bmN0aW9uIGNhbGxBc3luY1JlZigpOiB2b2lkIHtcbiAgICBpZiAoIWVudi4kYXN5bmMpIHRocm93IG5ldyBFcnJvcihcImFzeW5jIHNjaGVtYSByZWZlcmVuY2VkIGJ5IHN5bmMgc2NoZW1hXCIpXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIilcbiAgICBnZW4udHJ5KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBnZW4uY29kZShfYGF3YWl0ICR7Y2FsbFZhbGlkYXRlQ29kZShjeHQsIHYsIHBhc3NDeHQpfWApXG4gICAgICAgIGFkZEV2YWx1YXRlZEZyb20odikgLy8gVE9ETyB3aWxsIG5vdCB3b3JrIHdpdGggYXN5bmMsIGl0IGhhcyB0byBiZSByZXR1cm5lZCB3aXRoIHRoZSByZXN1bHRcbiAgICAgICAgaWYgKCFhbGxFcnJvcnMpIGdlbi5hc3NpZ24odmFsaWQsIHRydWUpXG4gICAgICB9LFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgZ2VuLmlmKF9gISgke2V9IGluc3RhbmNlb2YgJHtpdC5WYWxpZGF0aW9uRXJyb3IgYXMgTmFtZX0pYCwgKCkgPT4gZ2VuLnRocm93KGUpKVxuICAgICAgICBhZGRFcnJvcnNGcm9tKGUpXG4gICAgICAgIGlmICghYWxsRXJyb3JzKSBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSlcbiAgICAgIH1cbiAgICApXG4gICAgY3h0Lm9rKHZhbGlkKVxuICB9XG5cbiAgZnVuY3Rpb24gY2FsbFN5bmNSZWYoKTogdm9pZCB7XG4gICAgY3h0LnJlc3VsdChcbiAgICAgIGNhbGxWYWxpZGF0ZUNvZGUoY3h0LCB2LCBwYXNzQ3h0KSxcbiAgICAgICgpID0+IGFkZEV2YWx1YXRlZEZyb20odiksXG4gICAgICAoKSA9PiBhZGRFcnJvcnNGcm9tKHYpXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkRXJyb3JzRnJvbShzb3VyY2U6IENvZGUpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJzID0gX2Ake3NvdXJjZX0uZXJyb3JzYFxuICAgIGdlbi5hc3NpZ24oTi52RXJyb3JzLCBfYCR7Ti52RXJyb3JzfSA9PT0gbnVsbCA/ICR7ZXJyc30gOiAke04udkVycm9yc30uY29uY2F0KCR7ZXJyc30pYCkgLy8gVE9ETyB0YWdnZWRcbiAgICBnZW4uYXNzaWduKE4uZXJyb3JzLCBfYCR7Ti52RXJyb3JzfS5sZW5ndGhgKVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkRXZhbHVhdGVkRnJvbShzb3VyY2U6IENvZGUpOiB2b2lkIHtcbiAgICBpZiAoIWl0Lm9wdHMudW5ldmFsdWF0ZWQpIHJldHVyblxuICAgIGNvbnN0IHNjaEV2YWx1YXRlZCA9IHNjaD8udmFsaWRhdGU/LmV2YWx1YXRlZFxuICAgIC8vIFRPRE8gcmVmYWN0b3JcbiAgICBpZiAoaXQucHJvcHMgIT09IHRydWUpIHtcbiAgICAgIGlmIChzY2hFdmFsdWF0ZWQgJiYgIXNjaEV2YWx1YXRlZC5keW5hbWljUHJvcHMpIHtcbiAgICAgICAgaWYgKHNjaEV2YWx1YXRlZC5wcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaXQucHJvcHMgPSBtZXJnZUV2YWx1YXRlZC5wcm9wcyhnZW4sIHNjaEV2YWx1YXRlZC5wcm9wcywgaXQucHJvcHMpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3BzID0gZ2VuLnZhcihcInByb3BzXCIsIF9gJHtzb3VyY2V9LmV2YWx1YXRlZC5wcm9wc2ApXG4gICAgICAgIGl0LnByb3BzID0gbWVyZ2VFdmFsdWF0ZWQucHJvcHMoZ2VuLCBwcm9wcywgaXQucHJvcHMsIE5hbWUpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdC5pdGVtcyAhPT0gdHJ1ZSkge1xuICAgICAgaWYgKHNjaEV2YWx1YXRlZCAmJiAhc2NoRXZhbHVhdGVkLmR5bmFtaWNJdGVtcykge1xuICAgICAgICBpZiAoc2NoRXZhbHVhdGVkLml0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpdC5pdGVtcyA9IG1lcmdlRXZhbHVhdGVkLml0ZW1zKGdlbiwgc2NoRXZhbHVhdGVkLml0ZW1zLCBpdC5pdGVtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBnZW4udmFyKFwiaXRlbXNcIiwgX2Ake3NvdXJjZX0uZXZhbHVhdGVkLml0ZW1zYClcbiAgICAgICAgaXQuaXRlbXMgPSBtZXJnZUV2YWx1YXRlZC5pdGVtcyhnZW4sIGl0ZW1zLCBpdC5pdGVtcywgTmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1ZvY2FidWxhcnl9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgaWRLZXl3b3JkIGZyb20gXCIuL2lkXCJcbmltcG9ydCByZWZLZXl3b3JkIGZyb20gXCIuL3JlZlwiXG5cbmNvbnN0IGNvcmU6IFZvY2FidWxhcnkgPSBbXG4gIFwiJHNjaGVtYVwiLFxuICBcIiRpZFwiLFxuICBcIiRkZWZzXCIsXG4gIFwiJHZvY2FidWxhcnlcIixcbiAge2tleXdvcmQ6IFwiJGNvbW1lbnRcIn0sXG4gIFwiZGVmaW5pdGlvbnNcIixcbiAgaWRLZXl3b3JkLFxuICByZWZLZXl3b3JkLFxuXVxuXG5leHBvcnQgZGVmYXVsdCBjb3JlXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIG9wZXJhdG9ycywgQ29kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5cbmNvbnN0IG9wcyA9IG9wZXJhdG9yc1xuXG50eXBlIEt3ZCA9IFwibWF4aW11bVwiIHwgXCJtaW5pbXVtXCIgfCBcImV4Y2x1c2l2ZU1heGltdW1cIiB8IFwiZXhjbHVzaXZlTWluaW11bVwiXG5cbnR5cGUgQ29tcGFyaXNvbiA9IFwiPD1cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI+XCJcblxuY29uc3QgS1dEczoge1tLIGluIEt3ZF06IHtva1N0cjogQ29tcGFyaXNvbjsgb2s6IENvZGU7IGZhaWw6IENvZGV9fSA9IHtcbiAgbWF4aW11bToge29rU3RyOiBcIjw9XCIsIG9rOiBvcHMuTFRFLCBmYWlsOiBvcHMuR1R9LFxuICBtaW5pbXVtOiB7b2tTdHI6IFwiPj1cIiwgb2s6IG9wcy5HVEUsIGZhaWw6IG9wcy5MVH0sXG4gIGV4Y2x1c2l2ZU1heGltdW06IHtva1N0cjogXCI8XCIsIG9rOiBvcHMuTFQsIGZhaWw6IG9wcy5HVEV9LFxuICBleGNsdXNpdmVNaW5pbXVtOiB7b2tTdHI6IFwiPlwiLCBvazogb3BzLkdULCBmYWlsOiBvcHMuTFRFfSxcbn1cblxuZXhwb3J0IHR5cGUgTGltaXROdW1iZXJFcnJvciA9IEVycm9yT2JqZWN0PFxuICBLd2QsXG4gIHtsaW1pdDogbnVtYmVyOyBjb21wYXJpc29uOiBDb21wYXJpc29ufSxcbiAgbnVtYmVyIHwgeyRkYXRhOiBzdHJpbmd9XG4+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe2tleXdvcmQsIHNjaGVtYUNvZGV9KSA9PiBzdHJgbXVzdCBiZSAke0tXRHNba2V5d29yZCBhcyBLd2RdLm9rU3RyfSAke3NjaGVtYUNvZGV9YCxcbiAgcGFyYW1zOiAoe2tleXdvcmQsIHNjaGVtYUNvZGV9KSA9PlxuICAgIF9ge2NvbXBhcmlzb246ICR7S1dEc1trZXl3b3JkIGFzIEt3ZF0ub2tTdHJ9LCBsaW1pdDogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogT2JqZWN0LmtleXMoS1dEcyksXG4gIHR5cGU6IFwibnVtYmVyXCIsXG4gIHNjaGVtYVR5cGU6IFwibnVtYmVyXCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7a2V5d29yZCwgZGF0YSwgc2NoZW1hQ29kZX0gPSBjeHRcbiAgICBjeHQuZmFpbCRkYXRhKF9gJHtkYXRhfSAke0tXRHNba2V5d29yZCBhcyBLd2RdLmZhaWx9ICR7c2NoZW1hQ29kZX0gfHwgaXNOYU4oJHtkYXRhfSlgKVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck9iamVjdCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0cn0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5cbmV4cG9ydCB0eXBlIE11bHRpcGxlT2ZFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcIm11bHRpcGxlT2ZcIixcbiAge211bHRpcGxlT2Y6IG51bWJlcn0sXG4gIG51bWJlciB8IHskZGF0YTogc3RyaW5nfVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtzY2hlbWFDb2RlfSkgPT4gc3RyYG11c3QgYmUgbXVsdGlwbGUgb2YgJHtzY2hlbWFDb2RlfWAsXG4gIHBhcmFtczogKHtzY2hlbWFDb2RlfSkgPT4gX2B7bXVsdGlwbGVPZjogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJtdWx0aXBsZU9mXCIsXG4gIHR5cGU6IFwibnVtYmVyXCIsXG4gIHNjaGVtYVR5cGU6IFwibnVtYmVyXCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCBzY2hlbWFDb2RlLCBpdH0gPSBjeHRcbiAgICAvLyBjb25zdCBiZHQgPSBiYWQkRGF0YVR5cGUoc2NoZW1hQ29kZSwgPHN0cmluZz5kZWYuc2NoZW1hVHlwZSwgJGRhdGEpXG4gICAgY29uc3QgcHJlYyA9IGl0Lm9wdHMubXVsdGlwbGVPZlByZWNpc2lvblxuICAgIGNvbnN0IHJlcyA9IGdlbi5sZXQoXCJyZXNcIilcbiAgICBjb25zdCBpbnZhbGlkID0gcHJlY1xuICAgICAgPyBfYE1hdGguYWJzKE1hdGgucm91bmQoJHtyZXN9KSAtICR7cmVzfSkgPiAxZS0ke3ByZWN9YFxuICAgICAgOiBfYCR7cmVzfSAhPT0gcGFyc2VJbnQoJHtyZXN9KWBcbiAgICBjeHQuZmFpbCRkYXRhKF9gKCR7c2NoZW1hQ29kZX0gPT09IDAgfHwgKCR7cmVzfSA9ICR7ZGF0YX0vJHtzY2hlbWFDb2RlfSwgJHtpbnZhbGlkfSkpYClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qcyAtIHB1bnljb2RlLnVjczIuZGVjb2RlXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1Y3MybGVuZ3RoKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgbGVuID0gc3RyLmxlbmd0aFxuICBsZXQgbGVuZ3RoID0gMFxuICBsZXQgcG9zID0gMFxuICBsZXQgdmFsdWU6IG51bWJlclxuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgbGVuZ3RoKytcbiAgICB2YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KHBvcysrKVxuICAgIGlmICh2YWx1ZSA+PSAweGQ4MDAgJiYgdmFsdWUgPD0gMHhkYmZmICYmIHBvcyA8IGxlbikge1xuICAgICAgLy8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG4gICAgICB2YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KHBvcylcbiAgICAgIGlmICgodmFsdWUgJiAweGZjMDApID09PSAweGRjMDApIHBvcysrIC8vIGxvdyBzdXJyb2dhdGVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxlbmd0aFxufVxuXG51Y3MybGVuZ3RoLmNvZGUgPSAncmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvdWNzMmxlbmd0aFwiKS5kZWZhdWx0J1xuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIG9wZXJhdG9yc30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge3VzZUZ1bmN9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IHVjczJsZW5ndGggZnJvbSBcIi4uLy4uL3J1bnRpbWUvdWNzMmxlbmd0aFwiXG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlKHtrZXl3b3JkLCBzY2hlbWFDb2RlfSkge1xuICAgIGNvbnN0IGNvbXAgPSBrZXl3b3JkID09PSBcIm1heExlbmd0aFwiID8gXCJtb3JlXCIgOiBcImZld2VyXCJcbiAgICByZXR1cm4gc3RyYG11c3QgTk9UIGhhdmUgJHtjb21wfSB0aGFuICR7c2NoZW1hQ29kZX0gY2hhcmFjdGVyc2BcbiAgfSxcbiAgcGFyYW1zOiAoe3NjaGVtYUNvZGV9KSA9PiBfYHtsaW1pdDogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogW1wibWF4TGVuZ3RoXCIsIFwibWluTGVuZ3RoXCJdLFxuICB0eXBlOiBcInN0cmluZ1wiLFxuICBzY2hlbWFUeXBlOiBcIm51bWJlclwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2tleXdvcmQsIGRhdGEsIHNjaGVtYUNvZGUsIGl0fSA9IGN4dFxuICAgIGNvbnN0IG9wID0ga2V5d29yZCA9PT0gXCJtYXhMZW5ndGhcIiA/IG9wZXJhdG9ycy5HVCA6IG9wZXJhdG9ycy5MVFxuICAgIGNvbnN0IGxlbiA9XG4gICAgICBpdC5vcHRzLnVuaWNvZGUgPT09IGZhbHNlID8gX2Ake2RhdGF9Lmxlbmd0aGAgOiBfYCR7dXNlRnVuYyhjeHQuZ2VuLCB1Y3MybGVuZ3RoKX0oJHtkYXRhfSlgXG4gICAgY3h0LmZhaWwkZGF0YShfYCR7bGVufSAke29wfSAke3NjaGVtYUNvZGV9YClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHt1c2VQYXR0ZXJufSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge3VzZUZ1bmN9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IHtfLCBzdHJ9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuXG5leHBvcnQgdHlwZSBQYXR0ZXJuRXJyb3IgPSBFcnJvck9iamVjdDxcInBhdHRlcm5cIiwge3BhdHRlcm46IHN0cmluZ30sIHN0cmluZyB8IHskZGF0YTogc3RyaW5nfT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7c2NoZW1hQ29kZX0pID0+IHN0cmBtdXN0IG1hdGNoIHBhdHRlcm4gXCIke3NjaGVtYUNvZGV9XCJgLFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge3BhdHRlcm46ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwicGF0dGVyblwiLFxuICB0eXBlOiBcInN0cmluZ1wiLFxuICBzY2hlbWFUeXBlOiBcInN0cmluZ1wiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgZGF0YSwgJGRhdGEsIHNjaGVtYSwgc2NoZW1hQ29kZSwgaXR9ID0gY3h0XG4gICAgY29uc3QgdSA9IGl0Lm9wdHMudW5pY29kZVJlZ0V4cCA/IFwidVwiIDogXCJcIlxuICAgIGlmICgkZGF0YSkge1xuICAgICAgY29uc3Qge3JlZ0V4cH0gPSBpdC5vcHRzLmNvZGVcbiAgICAgIGNvbnN0IHJlZ0V4cENvZGUgPSByZWdFeHAuY29kZSA9PT0gXCJuZXcgUmVnRXhwXCIgPyBfYG5ldyBSZWdFeHBgIDogdXNlRnVuYyhnZW4sIHJlZ0V4cClcbiAgICAgIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIpXG4gICAgICBnZW4udHJ5KFxuICAgICAgICAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCBfYCR7cmVnRXhwQ29kZX0oJHtzY2hlbWFDb2RlfSwgJHt1fSkudGVzdCgke2RhdGF9KWApLFxuICAgICAgICAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSlcbiAgICAgIClcbiAgICAgIGN4dC5mYWlsJGRhdGEoX2AhJHt2YWxpZH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWdFeHAgPSB1c2VQYXR0ZXJuKGN4dCwgc2NoZW1hKVxuICAgICAgY3h0LmZhaWwkZGF0YShfYCEke3JlZ0V4cH0udGVzdCgke2RhdGF9KWApXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyLCBvcGVyYXRvcnN9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZSh7a2V5d29yZCwgc2NoZW1hQ29kZX0pIHtcbiAgICBjb25zdCBjb21wID0ga2V5d29yZCA9PT0gXCJtYXhQcm9wZXJ0aWVzXCIgPyBcIm1vcmVcIiA6IFwiZmV3ZXJcIlxuICAgIHJldHVybiBzdHJgbXVzdCBOT1QgaGF2ZSAke2NvbXB9IHRoYW4gJHtzY2hlbWFDb2RlfSBwcm9wZXJ0aWVzYFxuICB9LFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge2xpbWl0OiAke3NjaGVtYUNvZGV9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBbXCJtYXhQcm9wZXJ0aWVzXCIsIFwibWluUHJvcGVydGllc1wiXSxcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgc2NoZW1hVHlwZTogXCJudW1iZXJcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtrZXl3b3JkLCBkYXRhLCBzY2hlbWFDb2RlfSA9IGN4dFxuICAgIGNvbnN0IG9wID0ga2V5d29yZCA9PT0gXCJtYXhQcm9wZXJ0aWVzXCIgPyBvcGVyYXRvcnMuR1QgOiBvcGVyYXRvcnMuTFRcbiAgICBjeHQuZmFpbCRkYXRhKF9gT2JqZWN0LmtleXMoJHtkYXRhfSkubGVuZ3RoICR7b3B9ICR7c2NoZW1hQ29kZX1gKVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck9iamVjdCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge1xuICBjaGVja1JlcG9ydE1pc3NpbmdQcm9wLFxuICBjaGVja01pc3NpbmdQcm9wLFxuICByZXBvcnRNaXNzaW5nUHJvcCxcbiAgcHJvcGVydHlJbkRhdGEsXG4gIG5vUHJvcGVydHlJbkRhdGEsXG59IGZyb20gXCIuLi9jb2RlXCJcbmltcG9ydCB7Xywgc3RyLCBuaWwsIG5vdCwgTmFtZSwgQ29kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2NoZWNrU3RyaWN0TW9kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmV4cG9ydCB0eXBlIFJlcXVpcmVkRXJyb3IgPSBFcnJvck9iamVjdDxcbiAgXCJyZXF1aXJlZFwiLFxuICB7bWlzc2luZ1Byb3BlcnR5OiBzdHJpbmd9LFxuICBzdHJpbmdbXSB8IHskZGF0YTogc3RyaW5nfVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtwYXJhbXM6IHttaXNzaW5nUHJvcGVydHl9fSkgPT4gc3RyYG11c3QgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSAnJHttaXNzaW5nUHJvcGVydHl9J2AsXG4gIHBhcmFtczogKHtwYXJhbXM6IHttaXNzaW5nUHJvcGVydHl9fSkgPT4gX2B7bWlzc2luZ1Byb3BlcnR5OiAke21pc3NpbmdQcm9wZXJ0eX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwicmVxdWlyZWRcIixcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgc2NoZW1hVHlwZTogXCJhcnJheVwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBzY2hlbWFDb2RlLCBkYXRhLCAkZGF0YSwgaXR9ID0gY3h0XG4gICAgY29uc3Qge29wdHN9ID0gaXRcbiAgICBpZiAoISRkYXRhICYmIHNjaGVtYS5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHVzZUxvb3AgPSBzY2hlbWEubGVuZ3RoID49IG9wdHMubG9vcFJlcXVpcmVkXG4gICAgaWYgKGl0LmFsbEVycm9ycykgYWxsRXJyb3JzTW9kZSgpXG4gICAgZWxzZSBleGl0T25FcnJvck1vZGUoKVxuXG4gICAgaWYgKG9wdHMuc3RyaWN0UmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHByb3BzID0gY3h0LnBhcmVudFNjaGVtYS5wcm9wZXJ0aWVzXG4gICAgICBjb25zdCB7ZGVmaW5lZFByb3BlcnRpZXN9ID0gY3h0Lml0XG4gICAgICBmb3IgKGNvbnN0IHJlcXVpcmVkS2V5IG9mIHNjaGVtYSkge1xuICAgICAgICBpZiAocHJvcHM/LltyZXF1aXJlZEtleV0gPT09IHVuZGVmaW5lZCAmJiAhZGVmaW5lZFByb3BlcnRpZXMuaGFzKHJlcXVpcmVkS2V5KSkge1xuICAgICAgICAgIGNvbnN0IHNjaGVtYVBhdGggPSBpdC5zY2hlbWFFbnYuYmFzZUlkICsgaXQuZXJyU2NoZW1hUGF0aFxuICAgICAgICAgIGNvbnN0IG1zZyA9IGByZXF1aXJlZCBwcm9wZXJ0eSBcIiR7cmVxdWlyZWRLZXl9XCIgaXMgbm90IGRlZmluZWQgYXQgXCIke3NjaGVtYVBhdGh9XCIgKHN0cmljdFJlcXVpcmVkKWBcbiAgICAgICAgICBjaGVja1N0cmljdE1vZGUoaXQsIG1zZywgaXQub3B0cy5zdHJpY3RSZXF1aXJlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFsbEVycm9yc01vZGUoKTogdm9pZCB7XG4gICAgICBpZiAodXNlTG9vcCB8fCAkZGF0YSkge1xuICAgICAgICBjeHQuYmxvY2skZGF0YShuaWwsIGxvb3BBbGxSZXF1aXJlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBzY2hlbWEpIHtcbiAgICAgICAgICBjaGVja1JlcG9ydE1pc3NpbmdQcm9wKGN4dCwgcHJvcClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4aXRPbkVycm9yTW9kZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSBnZW4ubGV0KFwibWlzc2luZ1wiKVxuICAgICAgaWYgKHVzZUxvb3AgfHwgJGRhdGEpIHtcbiAgICAgICAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIiwgdHJ1ZSlcbiAgICAgICAgY3h0LmJsb2NrJGRhdGEodmFsaWQsICgpID0+IGxvb3BVbnRpbE1pc3NpbmcobWlzc2luZywgdmFsaWQpKVxuICAgICAgICBjeHQub2sodmFsaWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW4uaWYoY2hlY2tNaXNzaW5nUHJvcChjeHQsIHNjaGVtYSwgbWlzc2luZykpXG4gICAgICAgIHJlcG9ydE1pc3NpbmdQcm9wKGN4dCwgbWlzc2luZylcbiAgICAgICAgZ2VuLmVsc2UoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvb3BBbGxSZXF1aXJlZCgpOiB2b2lkIHtcbiAgICAgIGdlbi5mb3JPZihcInByb3BcIiwgc2NoZW1hQ29kZSBhcyBDb2RlLCAocHJvcCkgPT4ge1xuICAgICAgICBjeHQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6IHByb3B9KVxuICAgICAgICBnZW4uaWYobm9Qcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIHByb3AsIG9wdHMub3duUHJvcGVydGllcyksICgpID0+IGN4dC5lcnJvcigpKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb29wVW50aWxNaXNzaW5nKG1pc3Npbmc6IE5hbWUsIHZhbGlkOiBOYW1lKTogdm9pZCB7XG4gICAgICBjeHQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6IG1pc3Npbmd9KVxuICAgICAgZ2VuLmZvck9mKFxuICAgICAgICBtaXNzaW5nLFxuICAgICAgICBzY2hlbWFDb2RlIGFzIENvZGUsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBnZW4uYXNzaWduKHZhbGlkLCBwcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIG1pc3NpbmcsIG9wdHMub3duUHJvcGVydGllcykpXG4gICAgICAgICAgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IHtcbiAgICAgICAgICAgIGN4dC5lcnJvcigpXG4gICAgICAgICAgICBnZW4uYnJlYWsoKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG5pbFxuICAgICAgKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0ciwgb3BlcmF0b3JzfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2Uoe2tleXdvcmQsIHNjaGVtYUNvZGV9KSB7XG4gICAgY29uc3QgY29tcCA9IGtleXdvcmQgPT09IFwibWF4SXRlbXNcIiA/IFwibW9yZVwiIDogXCJmZXdlclwiXG4gICAgcmV0dXJuIHN0cmBtdXN0IE5PVCBoYXZlICR7Y29tcH0gdGhhbiAke3NjaGVtYUNvZGV9IGl0ZW1zYFxuICB9LFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge2xpbWl0OiAke3NjaGVtYUNvZGV9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBbXCJtYXhJdGVtc1wiLCBcIm1pbkl0ZW1zXCJdLFxuICB0eXBlOiBcImFycmF5XCIsXG4gIHNjaGVtYVR5cGU6IFwibnVtYmVyXCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7a2V5d29yZCwgZGF0YSwgc2NoZW1hQ29kZX0gPSBjeHRcbiAgICBjb25zdCBvcCA9IGtleXdvcmQgPT09IFwibWF4SXRlbXNcIiA/IG9wZXJhdG9ycy5HVCA6IG9wZXJhdG9ycy5MVFxuICAgIGN4dC5mYWlsJGRhdGEoX2Ake2RhdGF9Lmxlbmd0aCAke29wfSAke3NjaGVtYUNvZGV9YClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiLy8gaHR0cHM6Ly9naXRodWIuY29tL2Fqdi12YWxpZGF0b3IvYWp2L2lzc3Vlcy84ODlcbmltcG9ydCAqIGFzIGVxdWFsIGZyb20gXCJmYXN0LWRlZXAtZXF1YWxcIlxuXG50eXBlIEVxdWFsID0gdHlwZW9mIGVxdWFsICYge2NvZGU6IHN0cmluZ31cbjsoZXF1YWwgYXMgRXF1YWwpLmNvZGUgPSAncmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvZXF1YWxcIikuZGVmYXVsdCdcblxuZXhwb3J0IGRlZmF1bHQgZXF1YWwgYXMgRXF1YWxcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck9iamVjdCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge2NoZWNrRGF0YVR5cGVzLCBnZXRTY2hlbWFUeXBlcywgRGF0YVR5cGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlL2RhdGFUeXBlXCJcbmltcG9ydCB7Xywgc3RyLCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7dXNlRnVuY30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQgZXF1YWwgZnJvbSBcIi4uLy4uL3J1bnRpbWUvZXF1YWxcIlxuXG5leHBvcnQgdHlwZSBVbmlxdWVJdGVtc0Vycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwidW5pcXVlSXRlbXNcIixcbiAge2k6IG51bWJlcjsgajogbnVtYmVyfSxcbiAgYm9vbGVhbiB8IHskZGF0YTogc3RyaW5nfVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtwYXJhbXM6IHtpLCBqfX0pID0+XG4gICAgc3RyYG11c3QgTk9UIGhhdmUgZHVwbGljYXRlIGl0ZW1zIChpdGVtcyAjIyAke2p9IGFuZCAke2l9IGFyZSBpZGVudGljYWwpYCxcbiAgcGFyYW1zOiAoe3BhcmFtczoge2ksIGp9fSkgPT4gX2B7aTogJHtpfSwgajogJHtqfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJ1bmlxdWVJdGVtc1wiLFxuICB0eXBlOiBcImFycmF5XCIsXG4gIHNjaGVtYVR5cGU6IFwiYm9vbGVhblwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgZGF0YSwgJGRhdGEsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBzY2hlbWFDb2RlLCBpdH0gPSBjeHRcbiAgICBpZiAoISRkYXRhICYmICFzY2hlbWEpIHJldHVyblxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIpXG4gICAgY29uc3QgaXRlbVR5cGVzID0gcGFyZW50U2NoZW1hLml0ZW1zID8gZ2V0U2NoZW1hVHlwZXMocGFyZW50U2NoZW1hLml0ZW1zKSA6IFtdXG4gICAgY3h0LmJsb2NrJGRhdGEodmFsaWQsIHZhbGlkYXRlVW5pcXVlSXRlbXMsIF9gJHtzY2hlbWFDb2RlfSA9PT0gZmFsc2VgKVxuICAgIGN4dC5vayh2YWxpZClcblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlVW5pcXVlSXRlbXMoKTogdm9pZCB7XG4gICAgICBjb25zdCBpID0gZ2VuLmxldChcImlcIiwgX2Ake2RhdGF9Lmxlbmd0aGApXG4gICAgICBjb25zdCBqID0gZ2VuLmxldChcImpcIilcbiAgICAgIGN4dC5zZXRQYXJhbXMoe2ksIGp9KVxuICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgdHJ1ZSlcbiAgICAgIGdlbi5pZihfYCR7aX0gPiAxYCwgKCkgPT4gKGNhbk9wdGltaXplKCkgPyBsb29wTiA6IGxvb3BOMikoaSwgaikpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuT3B0aW1pemUoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaXRlbVR5cGVzLmxlbmd0aCA+IDAgJiYgIWl0ZW1UeXBlcy5zb21lKCh0KSA9PiB0ID09PSBcIm9iamVjdFwiIHx8IHQgPT09IFwiYXJyYXlcIilcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb29wTihpOiBOYW1lLCBqOiBOYW1lKTogdm9pZCB7XG4gICAgICBjb25zdCBpdGVtID0gZ2VuLm5hbWUoXCJpdGVtXCIpXG4gICAgICBjb25zdCB3cm9uZ1R5cGUgPSBjaGVja0RhdGFUeXBlcyhpdGVtVHlwZXMsIGl0ZW0sIGl0Lm9wdHMuc3RyaWN0TnVtYmVycywgRGF0YVR5cGUuV3JvbmcpXG4gICAgICBjb25zdCBpbmRpY2VzID0gZ2VuLmNvbnN0KFwiaW5kaWNlc1wiLCBfYHt9YClcbiAgICAgIGdlbi5mb3IoX2A7JHtpfS0tO2AsICgpID0+IHtcbiAgICAgICAgZ2VuLmxldChpdGVtLCBfYCR7ZGF0YX1bJHtpfV1gKVxuICAgICAgICBnZW4uaWYod3JvbmdUeXBlLCBfYGNvbnRpbnVlYClcbiAgICAgICAgaWYgKGl0ZW1UeXBlcy5sZW5ndGggPiAxKSBnZW4uaWYoX2B0eXBlb2YgJHtpdGVtfSA9PSBcInN0cmluZ1wiYCwgX2Ake2l0ZW19ICs9IFwiX1wiYClcbiAgICAgICAgZ2VuXG4gICAgICAgICAgLmlmKF9gdHlwZW9mICR7aW5kaWNlc31bJHtpdGVtfV0gPT0gXCJudW1iZXJcImAsICgpID0+IHtcbiAgICAgICAgICAgIGdlbi5hc3NpZ24oaiwgX2Ake2luZGljZXN9WyR7aXRlbX1dYClcbiAgICAgICAgICAgIGN4dC5lcnJvcigpXG4gICAgICAgICAgICBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSkuYnJlYWsoKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNvZGUoX2Ake2luZGljZXN9WyR7aXRlbX1dID0gJHtpfWApXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvb3BOMihpOiBOYW1lLCBqOiBOYW1lKTogdm9pZCB7XG4gICAgICBjb25zdCBlcWwgPSB1c2VGdW5jKGdlbiwgZXF1YWwpXG4gICAgICBjb25zdCBvdXRlciA9IGdlbi5uYW1lKFwib3V0ZXJcIilcbiAgICAgIGdlbi5sYWJlbChvdXRlcikuZm9yKF9gOyR7aX0tLTtgLCAoKSA9PlxuICAgICAgICBnZW4uZm9yKF9gJHtqfSA9ICR7aX07ICR7an0tLTtgLCAoKSA9PlxuICAgICAgICAgIGdlbi5pZihfYCR7ZXFsfSgke2RhdGF9WyR7aX1dLCAke2RhdGF9WyR7an1dKWAsICgpID0+IHtcbiAgICAgICAgICAgIGN4dC5lcnJvcigpXG4gICAgICAgICAgICBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSkuYnJlYWsob3V0ZXIpXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtffSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7dXNlRnVuY30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQgZXF1YWwgZnJvbSBcIi4uLy4uL3J1bnRpbWUvZXF1YWxcIlxuXG5leHBvcnQgdHlwZSBDb25zdEVycm9yID0gRXJyb3JPYmplY3Q8XCJjb25zdFwiLCB7YWxsb3dlZFZhbHVlOiBhbnl9PlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogXCJtdXN0IGJlIGVxdWFsIHRvIGNvbnN0YW50XCIsXG4gIHBhcmFtczogKHtzY2hlbWFDb2RlfSkgPT4gX2B7YWxsb3dlZFZhbHVlOiAke3NjaGVtYUNvZGV9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImNvbnN0XCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCAkZGF0YSwgc2NoZW1hQ29kZSwgc2NoZW1hfSA9IGN4dFxuICAgIGlmICgkZGF0YSB8fCAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT0gXCJvYmplY3RcIikpIHtcbiAgICAgIGN4dC5mYWlsJGRhdGEoX2AhJHt1c2VGdW5jKGdlbiwgZXF1YWwpfSgke2RhdGF9LCAke3NjaGVtYUNvZGV9KWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGN4dC5mYWlsKF9gJHtzY2hlbWF9ICE9PSAke2RhdGF9YClcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEVycm9yT2JqZWN0LCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgb3IsIE5hbWUsIENvZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHt1c2VGdW5jfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCBlcXVhbCBmcm9tIFwiLi4vLi4vcnVudGltZS9lcXVhbFwiXG5cbmV4cG9ydCB0eXBlIEVudW1FcnJvciA9IEVycm9yT2JqZWN0PFwiZW51bVwiLCB7YWxsb3dlZFZhbHVlczogYW55W119LCBhbnlbXSB8IHskZGF0YTogc3RyaW5nfT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6IFwibXVzdCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzXCIsXG4gIHBhcmFtczogKHtzY2hlbWFDb2RlfSkgPT4gX2B7YWxsb3dlZFZhbHVlczogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJlbnVtXCIsXG4gIHNjaGVtYVR5cGU6IFwiYXJyYXlcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsICRkYXRhLCBzY2hlbWEsIHNjaGVtYUNvZGUsIGl0fSA9IGN4dFxuICAgIGlmICghJGRhdGEgJiYgc2NoZW1hLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiZW51bSBtdXN0IGhhdmUgbm9uLWVtcHR5IGFycmF5XCIpXG4gICAgY29uc3QgdXNlTG9vcCA9IHNjaGVtYS5sZW5ndGggPj0gaXQub3B0cy5sb29wRW51bVxuICAgIGxldCBlcWw6IE5hbWUgfCB1bmRlZmluZWRcbiAgICBjb25zdCBnZXRFcWwgPSAoKTogTmFtZSA9PiAoZXFsID8/PSB1c2VGdW5jKGdlbiwgZXF1YWwpKVxuXG4gICAgbGV0IHZhbGlkOiBDb2RlXG4gICAgaWYgKHVzZUxvb3AgfHwgJGRhdGEpIHtcbiAgICAgIHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIpXG4gICAgICBjeHQuYmxvY2skZGF0YSh2YWxpZCwgbG9vcEVudW0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICAgICAgY29uc3QgdlNjaGVtYSA9IGdlbi5jb25zdChcInZTY2hlbWFcIiwgc2NoZW1hQ29kZSlcbiAgICAgIHZhbGlkID0gb3IoLi4uc2NoZW1hLm1hcCgoX3g6IHVua25vd24sIGk6IG51bWJlcikgPT4gZXF1YWxDb2RlKHZTY2hlbWEsIGkpKSlcbiAgICB9XG4gICAgY3h0LnBhc3ModmFsaWQpXG5cbiAgICBmdW5jdGlvbiBsb29wRW51bSgpOiB2b2lkIHtcbiAgICAgIGdlbi5hc3NpZ24odmFsaWQsIGZhbHNlKVxuICAgICAgZ2VuLmZvck9mKFwidlwiLCBzY2hlbWFDb2RlIGFzIENvZGUsICh2KSA9PlxuICAgICAgICBnZW4uaWYoX2Ake2dldEVxbCgpfSgke2RhdGF9LCAke3Z9KWAsICgpID0+IGdlbi5hc3NpZ24odmFsaWQsIHRydWUpLmJyZWFrKCkpXG4gICAgICApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXF1YWxDb2RlKHZTY2hlbWE6IE5hbWUsIGk6IG51bWJlcik6IENvZGUge1xuICAgICAgY29uc3Qgc2NoID0gc2NoZW1hW2ldXG4gICAgICByZXR1cm4gdHlwZW9mIHNjaCA9PT0gXCJvYmplY3RcIiAmJiBzY2ggIT09IG51bGxcbiAgICAgICAgPyBfYCR7Z2V0RXFsKCl9KCR7ZGF0YX0sICR7dlNjaGVtYX1bJHtpfV0pYFxuICAgICAgICA6IF9gJHtkYXRhfSA9PT0gJHtzY2h9YFxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0Vycm9yT2JqZWN0LCBWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IGxpbWl0TnVtYmVyLCB7TGltaXROdW1iZXJFcnJvcn0gZnJvbSBcIi4vbGltaXROdW1iZXJcIlxuaW1wb3J0IG11bHRpcGxlT2YsIHtNdWx0aXBsZU9mRXJyb3J9IGZyb20gXCIuL211bHRpcGxlT2ZcIlxuaW1wb3J0IGxpbWl0TGVuZ3RoIGZyb20gXCIuL2xpbWl0TGVuZ3RoXCJcbmltcG9ydCBwYXR0ZXJuLCB7UGF0dGVybkVycm9yfSBmcm9tIFwiLi9wYXR0ZXJuXCJcbmltcG9ydCBsaW1pdFByb3BlcnRpZXMgZnJvbSBcIi4vbGltaXRQcm9wZXJ0aWVzXCJcbmltcG9ydCByZXF1aXJlZCwge1JlcXVpcmVkRXJyb3J9IGZyb20gXCIuL3JlcXVpcmVkXCJcbmltcG9ydCBsaW1pdEl0ZW1zIGZyb20gXCIuL2xpbWl0SXRlbXNcIlxuaW1wb3J0IHVuaXF1ZUl0ZW1zLCB7VW5pcXVlSXRlbXNFcnJvcn0gZnJvbSBcIi4vdW5pcXVlSXRlbXNcIlxuaW1wb3J0IGNvbnN0S2V5d29yZCwge0NvbnN0RXJyb3J9IGZyb20gXCIuL2NvbnN0XCJcbmltcG9ydCBlbnVtS2V5d29yZCwge0VudW1FcnJvcn0gZnJvbSBcIi4vZW51bVwiXG5cbmNvbnN0IHZhbGlkYXRpb246IFZvY2FidWxhcnkgPSBbXG4gIC8vIG51bWJlclxuICBsaW1pdE51bWJlcixcbiAgbXVsdGlwbGVPZixcbiAgLy8gc3RyaW5nXG4gIGxpbWl0TGVuZ3RoLFxuICBwYXR0ZXJuLFxuICAvLyBvYmplY3RcbiAgbGltaXRQcm9wZXJ0aWVzLFxuICByZXF1aXJlZCxcbiAgLy8gYXJyYXlcbiAgbGltaXRJdGVtcyxcbiAgdW5pcXVlSXRlbXMsXG4gIC8vIGFueVxuICB7a2V5d29yZDogXCJ0eXBlXCIsIHNjaGVtYVR5cGU6IFtcInN0cmluZ1wiLCBcImFycmF5XCJdfSxcbiAge2tleXdvcmQ6IFwibnVsbGFibGVcIiwgc2NoZW1hVHlwZTogXCJib29sZWFuXCJ9LFxuICBjb25zdEtleXdvcmQsXG4gIGVudW1LZXl3b3JkLFxuXVxuXG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0aW9uXG5cbnR5cGUgTGltaXRFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcIm1heEl0ZW1zXCIgfCBcIm1pbkl0ZW1zXCIgfCBcIm1pblByb3BlcnRpZXNcIiB8IFwibWF4UHJvcGVydGllc1wiIHwgXCJtaW5MZW5ndGhcIiB8IFwibWF4TGVuZ3RoXCIsXG4gIHtsaW1pdDogbnVtYmVyfSxcbiAgbnVtYmVyIHwgeyRkYXRhOiBzdHJpbmd9XG4+XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25LZXl3b3JkRXJyb3IgPVxuICB8IExpbWl0RXJyb3JcbiAgfCBMaW1pdE51bWJlckVycm9yXG4gIHwgTXVsdGlwbGVPZkVycm9yXG4gIHwgUGF0dGVybkVycm9yXG4gIHwgUmVxdWlyZWRFcnJvclxuICB8IFVuaXF1ZUl0ZW1zRXJyb3JcbiAgfCBDb25zdEVycm9yXG4gIHwgRW51bUVycm9yXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIG5vdCwgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hLCBjaGVja1N0cmljdE1vZGUsIFR5cGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBBZGRpdGlvbmFsSXRlbXNFcnJvciA9IEVycm9yT2JqZWN0PFwiYWRkaXRpb25hbEl0ZW1zXCIsIHtsaW1pdDogbnVtYmVyfSwgQW55U2NoZW1hPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtwYXJhbXM6IHtsZW59fSkgPT4gc3RyYG11c3QgTk9UIGhhdmUgbW9yZSB0aGFuICR7bGVufSBpdGVtc2AsXG4gIHBhcmFtczogKHtwYXJhbXM6IHtsZW59fSkgPT4gX2B7bGltaXQ6ICR7bGVufX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJhZGRpdGlvbmFsSXRlbXNcIiBhcyBjb25zdCxcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICBiZWZvcmU6IFwidW5pcXVlSXRlbXNcIixcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge3BhcmVudFNjaGVtYSwgaXR9ID0gY3h0XG4gICAgY29uc3Qge2l0ZW1zfSA9IHBhcmVudFNjaGVtYVxuICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICAgIGNoZWNrU3RyaWN0TW9kZShpdCwgJ1wiYWRkaXRpb25hbEl0ZW1zXCIgaXMgaWdub3JlZCB3aGVuIFwiaXRlbXNcIiBpcyBub3QgYW4gYXJyYXkgb2Ygc2NoZW1hcycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFsaWRhdGVBZGRpdGlvbmFsSXRlbXMoY3h0LCBpdGVtcylcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zKGN4dDogS2V5d29yZEN4dCwgaXRlbXM6IEFueVNjaGVtYVtdKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYSwgZGF0YSwga2V5d29yZCwgaXR9ID0gY3h0XG4gIGl0Lml0ZW1zID0gdHJ1ZVxuICBjb25zdCBsZW4gPSBnZW4uY29uc3QoXCJsZW5cIiwgX2Ake2RhdGF9Lmxlbmd0aGApXG4gIGlmIChzY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgY3h0LnNldFBhcmFtcyh7bGVuOiBpdGVtcy5sZW5ndGh9KVxuICAgIGN4dC5wYXNzKF9gJHtsZW59IDw9ICR7aXRlbXMubGVuZ3RofWApXG4gIH0gZWxzZSBpZiAodHlwZW9mIHNjaGVtYSA9PSBcIm9iamVjdFwiICYmICFhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKSkge1xuICAgIGNvbnN0IHZhbGlkID0gZ2VuLnZhcihcInZhbGlkXCIsIF9gJHtsZW59IDw9ICR7aXRlbXMubGVuZ3RofWApIC8vIFRPRE8gdmFyXG4gICAgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IHZhbGlkYXRlSXRlbXModmFsaWQpKVxuICAgIGN4dC5vayh2YWxpZClcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlSXRlbXModmFsaWQ6IE5hbWUpOiB2b2lkIHtcbiAgICBnZW4uZm9yUmFuZ2UoXCJpXCIsIGl0ZW1zLmxlbmd0aCwgbGVuLCAoaSkgPT4ge1xuICAgICAgY3h0LnN1YnNjaGVtYSh7a2V5d29yZCwgZGF0YVByb3A6IGksIGRhdGFQcm9wVHlwZTogVHlwZS5OdW19LCB2YWxpZClcbiAgICAgIGlmICghaXQuYWxsRXJyb3JzKSBnZW4uaWYobm90KHZhbGlkKSwgKCkgPT4gZ2VuLmJyZWFrKCkpXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBBbnlTY2hlbWEsIEFueVNjaGVtYU9iamVjdH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge199IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgbWVyZ2VFdmFsdWF0ZWQsIGNoZWNrU3RyaWN0TW9kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQge3ZhbGlkYXRlQXJyYXl9IGZyb20gXCIuLi9jb2RlXCJcblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiaXRlbXNcIixcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBbXCJvYmplY3RcIiwgXCJhcnJheVwiLCBcImJvb2xlYW5cIl0sXG4gIGJlZm9yZTogXCJ1bmlxdWVJdGVtc1wiLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtzY2hlbWEsIGl0fSA9IGN4dFxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHJldHVybiB2YWxpZGF0ZVR1cGxlKGN4dCwgXCJhZGRpdGlvbmFsSXRlbXNcIiwgc2NoZW1hKVxuICAgIGl0Lml0ZW1zID0gdHJ1ZVxuICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKSkgcmV0dXJuXG4gICAgY3h0Lm9rKHZhbGlkYXRlQXJyYXkoY3h0KSlcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVHVwbGUoXG4gIGN4dDogS2V5d29yZEN4dCxcbiAgZXh0cmFJdGVtczogc3RyaW5nLFxuICBzY2hBcnI6IEFueVNjaGVtYVtdID0gY3h0LnNjaGVtYVxuKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHBhcmVudFNjaGVtYSwgZGF0YSwga2V5d29yZCwgaXR9ID0gY3h0XG4gIGNoZWNrU3RyaWN0VHVwbGUocGFyZW50U2NoZW1hKVxuICBpZiAoaXQub3B0cy51bmV2YWx1YXRlZCAmJiBzY2hBcnIubGVuZ3RoICYmIGl0Lml0ZW1zICE9PSB0cnVlKSB7XG4gICAgaXQuaXRlbXMgPSBtZXJnZUV2YWx1YXRlZC5pdGVtcyhnZW4sIHNjaEFyci5sZW5ndGgsIGl0Lml0ZW1zKVxuICB9XG4gIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICBjb25zdCBsZW4gPSBnZW4uY29uc3QoXCJsZW5cIiwgX2Ake2RhdGF9Lmxlbmd0aGApXG4gIHNjaEFyci5mb3JFYWNoKChzY2g6IEFueVNjaGVtYSwgaTogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2gpKSByZXR1cm5cbiAgICBnZW4uaWYoX2Ake2xlbn0gPiAke2l9YCwgKCkgPT5cbiAgICAgIGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBrZXl3b3JkLFxuICAgICAgICAgIHNjaGVtYVByb3A6IGksXG4gICAgICAgICAgZGF0YVByb3A6IGksXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkXG4gICAgICApXG4gICAgKVxuICAgIGN4dC5vayh2YWxpZClcbiAgfSlcblxuICBmdW5jdGlvbiBjaGVja1N0cmljdFR1cGxlKHNjaDogQW55U2NoZW1hT2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3Qge29wdHMsIGVyclNjaGVtYVBhdGh9ID0gaXRcbiAgICBjb25zdCBsID0gc2NoQXJyLmxlbmd0aFxuICAgIGNvbnN0IGZ1bGxUdXBsZSA9IGwgPT09IHNjaC5taW5JdGVtcyAmJiAobCA9PT0gc2NoLm1heEl0ZW1zIHx8IHNjaFtleHRyYUl0ZW1zXSA9PT0gZmFsc2UpXG4gICAgaWYgKG9wdHMuc3RyaWN0VHVwbGVzICYmICFmdWxsVHVwbGUpIHtcbiAgICAgIGNvbnN0IG1zZyA9IGBcIiR7a2V5d29yZH1cIiBpcyAke2x9LXR1cGxlLCBidXQgbWluSXRlbXMgb3IgbWF4SXRlbXMvJHtleHRyYUl0ZW1zfSBhcmUgbm90IHNwZWNpZmllZCBvciBkaWZmZXJlbnQgYXQgcGF0aCBcIiR7ZXJyU2NoZW1hUGF0aH1cImBcbiAgICAgIGNoZWNrU3RyaWN0TW9kZShpdCwgbXNnLCBvcHRzLnN0cmljdFR1cGxlcylcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB7dmFsaWRhdGVUdXBsZX0gZnJvbSBcIi4vaXRlbXNcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJwcmVmaXhJdGVtc1wiLFxuICB0eXBlOiBcImFycmF5XCIsXG4gIHNjaGVtYVR5cGU6IFtcImFycmF5XCJdLFxuICBiZWZvcmU6IFwidW5pcXVlSXRlbXNcIixcbiAgY29kZTogKGN4dCkgPT4gdmFsaWRhdGVUdXBsZShjeHQsIFwiaXRlbXNcIiksXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgQW55U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWF9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IHt2YWxpZGF0ZUFycmF5fSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge3ZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zfSBmcm9tIFwiLi9hZGRpdGlvbmFsSXRlbXNcIlxuXG5leHBvcnQgdHlwZSBJdGVtc0Vycm9yID0gRXJyb3JPYmplY3Q8XCJpdGVtc1wiLCB7bGltaXQ6IG51bWJlcn0sIEFueVNjaGVtYT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zOiB7bGVufX0pID0+IHN0cmBtdXN0IE5PVCBoYXZlIG1vcmUgdGhhbiAke2xlbn0gaXRlbXNgLFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7bGVufX0pID0+IF9ge2xpbWl0OiAke2xlbn19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiaXRlbXNcIixcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBbXCJvYmplY3RcIiwgXCJib29sZWFuXCJdLFxuICBiZWZvcmU6IFwidW5pcXVlSXRlbXNcIixcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge3NjaGVtYSwgcGFyZW50U2NoZW1hLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7cHJlZml4SXRlbXN9ID0gcGFyZW50U2NoZW1hXG4gICAgaXQuaXRlbXMgPSB0cnVlXG4gICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWEpKSByZXR1cm5cbiAgICBpZiAocHJlZml4SXRlbXMpIHZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zKGN4dCwgcHJlZml4SXRlbXMpXG4gICAgZWxzZSBjeHQub2sodmFsaWRhdGVBcnJheShjeHQpKVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7XG4gIENvZGVLZXl3b3JkRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEFueVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0ciwgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hLCBjaGVja1N0cmljdE1vZGUsIFR5cGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBDb250YWluc0Vycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwiY29udGFpbnNcIixcbiAge21pbkNvbnRhaW5zOiBudW1iZXI7IG1heENvbnRhaW5zPzogbnVtYmVyfSxcbiAgQW55U2NoZW1hXG4+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3BhcmFtczoge21pbiwgbWF4fX0pID0+XG4gICAgbWF4ID09PSB1bmRlZmluZWRcbiAgICAgID8gc3RyYG11c3QgY29udGFpbiBhdCBsZWFzdCAke21pbn0gdmFsaWQgaXRlbShzKWBcbiAgICAgIDogc3RyYG11c3QgY29udGFpbiBhdCBsZWFzdCAke21pbn0gYW5kIG5vIG1vcmUgdGhhbiAke21heH0gdmFsaWQgaXRlbShzKWAsXG4gIHBhcmFtczogKHtwYXJhbXM6IHttaW4sIG1heH19KSA9PlxuICAgIG1heCA9PT0gdW5kZWZpbmVkID8gX2B7bWluQ29udGFpbnM6ICR7bWlufX1gIDogX2B7bWluQ29udGFpbnM6ICR7bWlufSwgbWF4Q29udGFpbnM6ICR7bWF4fX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJjb250YWluc1wiLFxuICB0eXBlOiBcImFycmF5XCIsXG4gIHNjaGVtYVR5cGU6IFtcIm9iamVjdFwiLCBcImJvb2xlYW5cIl0sXG4gIGJlZm9yZTogXCJ1bmlxdWVJdGVtc1wiLFxuICB0cmFja0Vycm9yczogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGRhdGEsIGl0fSA9IGN4dFxuICAgIGxldCBtaW46IG51bWJlclxuICAgIGxldCBtYXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICAgIGNvbnN0IHttaW5Db250YWlucywgbWF4Q29udGFpbnN9ID0gcGFyZW50U2NoZW1hXG4gICAgaWYgKGl0Lm9wdHMubmV4dCkge1xuICAgICAgbWluID0gbWluQ29udGFpbnMgPT09IHVuZGVmaW5lZCA/IDEgOiBtaW5Db250YWluc1xuICAgICAgbWF4ID0gbWF4Q29udGFpbnNcbiAgICB9IGVsc2Uge1xuICAgICAgbWluID0gMVxuICAgIH1cbiAgICBjb25zdCBsZW4gPSBnZW4uY29uc3QoXCJsZW5cIiwgX2Ake2RhdGF9Lmxlbmd0aGApXG4gICAgY3h0LnNldFBhcmFtcyh7bWluLCBtYXh9KVxuICAgIGlmIChtYXggPT09IHVuZGVmaW5lZCAmJiBtaW4gPT09IDApIHtcbiAgICAgIGNoZWNrU3RyaWN0TW9kZShpdCwgYFwibWluQ29udGFpbnNcIiA9PSAwIHdpdGhvdXQgXCJtYXhDb250YWluc1wiOiBcImNvbnRhaW5zXCIga2V5d29yZCBpZ25vcmVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAobWF4ICE9PSB1bmRlZmluZWQgJiYgbWluID4gbWF4KSB7XG4gICAgICBjaGVja1N0cmljdE1vZGUoaXQsIGBcIm1pbkNvbnRhaW5zXCIgPiBcIm1heENvbnRhaW5zXCIgaXMgYWx3YXlzIGludmFsaWRgKVxuICAgICAgY3h0LmZhaWwoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKSkge1xuICAgICAgbGV0IGNvbmQgPSBfYCR7bGVufSA+PSAke21pbn1gXG4gICAgICBpZiAobWF4ICE9PSB1bmRlZmluZWQpIGNvbmQgPSBfYCR7Y29uZH0gJiYgJHtsZW59IDw9ICR7bWF4fWBcbiAgICAgIGN4dC5wYXNzKGNvbmQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpdC5pdGVtcyA9IHRydWVcbiAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgICBpZiAobWF4ID09PSB1bmRlZmluZWQgJiYgbWluID09PSAxKSB7XG4gICAgICB2YWxpZGF0ZUl0ZW1zKHZhbGlkLCAoKSA9PiBnZW4uaWYodmFsaWQsICgpID0+IGdlbi5icmVhaygpKSlcbiAgICB9IGVsc2UgaWYgKG1pbiA9PT0gMCkge1xuICAgICAgZ2VuLmxldCh2YWxpZCwgdHJ1ZSlcbiAgICAgIGlmIChtYXggIT09IHVuZGVmaW5lZCkgZ2VuLmlmKF9gJHtkYXRhfS5sZW5ndGggPiAwYCwgdmFsaWRhdGVJdGVtc1dpdGhDb3VudClcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuLmxldCh2YWxpZCwgZmFsc2UpXG4gICAgICB2YWxpZGF0ZUl0ZW1zV2l0aENvdW50KClcbiAgICB9XG4gICAgY3h0LnJlc3VsdCh2YWxpZCwgKCkgPT4gY3h0LnJlc2V0KCkpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUl0ZW1zV2l0aENvdW50KCk6IHZvaWQge1xuICAgICAgY29uc3Qgc2NoVmFsaWQgPSBnZW4ubmFtZShcIl92YWxpZFwiKVxuICAgICAgY29uc3QgY291bnQgPSBnZW4ubGV0KFwiY291bnRcIiwgMClcbiAgICAgIHZhbGlkYXRlSXRlbXMoc2NoVmFsaWQsICgpID0+IGdlbi5pZihzY2hWYWxpZCwgKCkgPT4gY2hlY2tMaW1pdHMoY291bnQpKSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUl0ZW1zKF92YWxpZDogTmFtZSwgYmxvY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgIGdlbi5mb3JSYW5nZShcImlcIiwgMCwgbGVuLCAoaSkgPT4ge1xuICAgICAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleXdvcmQ6IFwiY29udGFpbnNcIixcbiAgICAgICAgICAgIGRhdGFQcm9wOiBpLFxuICAgICAgICAgICAgZGF0YVByb3BUeXBlOiBUeXBlLk51bSxcbiAgICAgICAgICAgIGNvbXBvc2l0ZVJ1bGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfdmFsaWRcbiAgICAgICAgKVxuICAgICAgICBibG9jaygpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrTGltaXRzKGNvdW50OiBOYW1lKTogdm9pZCB7XG4gICAgICBnZW4uY29kZShfYCR7Y291bnR9KytgKVxuICAgICAgaWYgKG1heCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGdlbi5pZihfYCR7Y291bnR9ID49ICR7bWlufWAsICgpID0+IGdlbi5hc3NpZ24odmFsaWQsIHRydWUpLmJyZWFrKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW4uaWYoX2Ake2NvdW50fSA+ICR7bWF4fWAsICgpID0+IGdlbi5hc3NpZ24odmFsaWQsIGZhbHNlKS5icmVhaygpKVxuICAgICAgICBpZiAobWluID09PSAxKSBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKVxuICAgICAgICBlbHNlIGdlbi5pZihfYCR7Y291bnR9ID49ICR7bWlufWAsICgpID0+IGdlbi5hc3NpZ24odmFsaWQsIHRydWUpKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBTY2hlbWFNYXAsXG4gIEFueVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0cn0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7Y2hlY2tSZXBvcnRNaXNzaW5nUHJvcCwgY2hlY2tNaXNzaW5nUHJvcCwgcmVwb3J0TWlzc2luZ1Byb3AsIHByb3BlcnR5SW5EYXRhfSBmcm9tIFwiLi4vY29kZVwiXG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5RGVwZW5kZW5jaWVzID0ge1tLIGluIHN0cmluZ10/OiBzdHJpbmdbXX1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmNpZXNFcnJvclBhcmFtcyB7XG4gIHByb3BlcnR5OiBzdHJpbmdcbiAgbWlzc2luZ1Byb3BlcnR5OiBzdHJpbmdcbiAgZGVwc0NvdW50OiBudW1iZXJcbiAgZGVwczogc3RyaW5nIC8vIFRPRE8gY2hhbmdlIHRvIHN0cmluZ1tdXG59XG5cbnR5cGUgU2NoZW1hRGVwZW5kZW5jaWVzID0gU2NoZW1hTWFwXG5cbmV4cG9ydCB0eXBlIERlcGVuZGVuY2llc0Vycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwiZGVwZW5kZW5jaWVzXCIsXG4gIERlcGVuZGVuY2llc0Vycm9yUGFyYW1zLFxuICB7W0sgaW4gc3RyaW5nXT86IHN0cmluZ1tdIHwgQW55U2NoZW1hfVxuPlxuXG5leHBvcnQgY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zOiB7cHJvcGVydHksIGRlcHNDb3VudCwgZGVwc319KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlfaWVzID0gZGVwc0NvdW50ID09PSAxID8gXCJwcm9wZXJ0eVwiIDogXCJwcm9wZXJ0aWVzXCJcbiAgICByZXR1cm4gc3RyYG11c3QgaGF2ZSAke3Byb3BlcnR5X2llc30gJHtkZXBzfSB3aGVuIHByb3BlcnR5ICR7cHJvcGVydHl9IGlzIHByZXNlbnRgXG4gIH0sXG4gIHBhcmFtczogKHtwYXJhbXM6IHtwcm9wZXJ0eSwgZGVwc0NvdW50LCBkZXBzLCBtaXNzaW5nUHJvcGVydHl9fSkgPT5cbiAgICBfYHtwcm9wZXJ0eTogJHtwcm9wZXJ0eX0sXG4gICAgbWlzc2luZ1Byb3BlcnR5OiAke21pc3NpbmdQcm9wZXJ0eX0sXG4gICAgZGVwc0NvdW50OiAke2RlcHNDb3VudH0sXG4gICAgZGVwczogJHtkZXBzfX1gLCAvLyBUT0RPIGNoYW5nZSB0byByZWZlcmVuY2Vcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiZGVwZW5kZW5jaWVzXCIsXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFwib2JqZWN0XCIsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IFtwcm9wRGVwcywgc2NoRGVwc10gPSBzcGxpdERlcGVuZGVuY2llcyhjeHQpXG4gICAgdmFsaWRhdGVQcm9wZXJ0eURlcHMoY3h0LCBwcm9wRGVwcylcbiAgICB2YWxpZGF0ZVNjaGVtYURlcHMoY3h0LCBzY2hEZXBzKVxuICB9LFxufVxuXG5mdW5jdGlvbiBzcGxpdERlcGVuZGVuY2llcyh7c2NoZW1hfTogS2V5d29yZEN4dCk6IFtQcm9wZXJ0eURlcGVuZGVuY2llcywgU2NoZW1hRGVwZW5kZW5jaWVzXSB7XG4gIGNvbnN0IHByb3BlcnR5RGVwczogUHJvcGVydHlEZXBlbmRlbmNpZXMgPSB7fVxuICBjb25zdCBzY2hlbWFEZXBzOiBTY2hlbWFEZXBlbmRlbmNpZXMgPSB7fVxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiKSBjb250aW51ZVxuICAgIGNvbnN0IGRlcHMgPSBBcnJheS5pc0FycmF5KHNjaGVtYVtrZXldKSA/IHByb3BlcnR5RGVwcyA6IHNjaGVtYURlcHNcbiAgICBkZXBzW2tleV0gPSBzY2hlbWFba2V5XVxuICB9XG4gIHJldHVybiBbcHJvcGVydHlEZXBzLCBzY2hlbWFEZXBzXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eURlcHMoXG4gIGN4dDogS2V5d29yZEN4dCxcbiAgcHJvcGVydHlEZXBzOiB7W0sgaW4gc3RyaW5nXT86IHN0cmluZ1tdfSA9IGN4dC5zY2hlbWFcbik6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBkYXRhLCBpdH0gPSBjeHRcbiAgaWYgKE9iamVjdC5rZXlzKHByb3BlcnR5RGVwcykubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgY29uc3QgbWlzc2luZyA9IGdlbi5sZXQoXCJtaXNzaW5nXCIpXG4gIGZvciAoY29uc3QgcHJvcCBpbiBwcm9wZXJ0eURlcHMpIHtcbiAgICBjb25zdCBkZXBzID0gcHJvcGVydHlEZXBzW3Byb3BdIGFzIHN0cmluZ1tdXG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAwKSBjb250aW51ZVxuICAgIGNvbnN0IGhhc1Byb3BlcnR5ID0gcHJvcGVydHlJbkRhdGEoZ2VuLCBkYXRhLCBwcm9wLCBpdC5vcHRzLm93blByb3BlcnRpZXMpXG4gICAgY3h0LnNldFBhcmFtcyh7XG4gICAgICBwcm9wZXJ0eTogcHJvcCxcbiAgICAgIGRlcHNDb3VudDogZGVwcy5sZW5ndGgsXG4gICAgICBkZXBzOiBkZXBzLmpvaW4oXCIsIFwiKSxcbiAgICB9KVxuICAgIGlmIChpdC5hbGxFcnJvcnMpIHtcbiAgICAgIGdlbi5pZihoYXNQcm9wZXJ0eSwgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGRlcFByb3Agb2YgZGVwcykge1xuICAgICAgICAgIGNoZWNrUmVwb3J0TWlzc2luZ1Byb3AoY3h0LCBkZXBQcm9wKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBnZW4uaWYoX2Ake2hhc1Byb3BlcnR5fSAmJiAoJHtjaGVja01pc3NpbmdQcm9wKGN4dCwgZGVwcywgbWlzc2luZyl9KWApXG4gICAgICByZXBvcnRNaXNzaW5nUHJvcChjeHQsIG1pc3NpbmcpXG4gICAgICBnZW4uZWxzZSgpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYURlcHMoY3h0OiBLZXl3b3JkQ3h0LCBzY2hlbWFEZXBzOiBTY2hlbWFNYXAgPSBjeHQuc2NoZW1hKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIGtleXdvcmQsIGl0fSA9IGN4dFxuICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgZm9yIChjb25zdCBwcm9wIGluIHNjaGVtYURlcHMpIHtcbiAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYURlcHNbcHJvcF0gYXMgQW55U2NoZW1hKSkgY29udGludWVcbiAgICBnZW4uaWYoXG4gICAgICBwcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIHByb3AsIGl0Lm9wdHMub3duUHJvcGVydGllcyksXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoe2tleXdvcmQsIHNjaGVtYVByb3A6IHByb3B9LCB2YWxpZClcbiAgICAgICAgY3h0Lm1lcmdlVmFsaWRFdmFsdWF0ZWQoc2NoQ3h0LCB2YWxpZClcbiAgICAgIH0sXG4gICAgICAoKSA9PiBnZW4udmFyKHZhbGlkLCB0cnVlKSAvLyBUT0RPIHZhclxuICAgIClcbiAgICBjeHQub2sodmFsaWQpXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBub3R9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TmFtZXNFcnJvciA9IEVycm9yT2JqZWN0PFwicHJvcGVydHlOYW1lc1wiLCB7cHJvcGVydHlOYW1lOiBzdHJpbmd9LCBBbnlTY2hlbWE+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiBcInByb3BlcnR5IG5hbWUgbXVzdCBiZSB2YWxpZFwiLFxuICBwYXJhbXM6ICh7cGFyYW1zfSkgPT4gX2B7cHJvcGVydHlOYW1lOiAke3BhcmFtcy5wcm9wZXJ0eU5hbWV9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcInByb3BlcnR5TmFtZXNcIixcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgc2NoZW1hVHlwZTogW1wib2JqZWN0XCIsIFwiYm9vbGVhblwiXSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBkYXRhLCBpdH0gPSBjeHRcbiAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHJldHVyblxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuXG4gICAgZ2VuLmZvckluKFwia2V5XCIsIGRhdGEsIChrZXkpID0+IHtcbiAgICAgIGN4dC5zZXRQYXJhbXMoe3Byb3BlcnR5TmFtZToga2V5fSlcbiAgICAgIGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBrZXl3b3JkOiBcInByb3BlcnR5TmFtZXNcIixcbiAgICAgICAgICBkYXRhOiBrZXksXG4gICAgICAgICAgZGF0YVR5cGVzOiBbXCJzdHJpbmdcIl0sXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBrZXksXG4gICAgICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRcbiAgICAgIClcbiAgICAgIGdlbi5pZihub3QodmFsaWQpLCAoKSA9PiB7XG4gICAgICAgIGN4dC5lcnJvcih0cnVlKVxuICAgICAgICBpZiAoIWl0LmFsbEVycm9ycykgZ2VuLmJyZWFrKClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGN4dC5vayh2YWxpZClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEFkZGVkS2V5d29yZERlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQge2FsbFNjaGVtYVByb3BlcnRpZXMsIHVzZVBhdHRlcm4sIGlzT3duUHJvcGVydHl9IGZyb20gXCIuLi9jb2RlXCJcbmltcG9ydCB7XywgbmlsLCBvciwgbm90LCBDb2RlLCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCBOIGZyb20gXCIuLi8uLi9jb21waWxlL25hbWVzXCJcbmltcG9ydCB0eXBlIHtTdWJzY2hlbWFBcmdzfSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZS9zdWJzY2hlbWFcIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgc2NoZW1hUmVmT3JWYWwsIFR5cGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBBZGRpdGlvbmFsUHJvcGVydGllc0Vycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIixcbiAge2FkZGl0aW9uYWxQcm9wZXJ0eTogc3RyaW5nfSxcbiAgQW55U2NoZW1hXG4+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiBcIm11c3QgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXCIsXG4gIHBhcmFtczogKHtwYXJhbXN9KSA9PiBfYHthZGRpdGlvbmFsUHJvcGVydHk6ICR7cGFyYW1zLmFkZGl0aW9uYWxQcm9wZXJ0eX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gJiBBZGRlZEtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIsXG4gIHR5cGU6IFtcIm9iamVjdFwiXSxcbiAgc2NoZW1hVHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgYWxsb3dVbmRlZmluZWQ6IHRydWUsXG4gIHRyYWNrRXJyb3JzOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgZGF0YSwgZXJyc0NvdW50LCBpdH0gPSBjeHRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWVycnNDb3VudCkgdGhyb3cgbmV3IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpXG4gICAgY29uc3Qge2FsbEVycm9ycywgb3B0c30gPSBpdFxuICAgIGl0LnByb3BzID0gdHJ1ZVxuICAgIGlmIChvcHRzLnJlbW92ZUFkZGl0aW9uYWwgIT09IFwiYWxsXCIgJiYgYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHJldHVyblxuICAgIGNvbnN0IHByb3BzID0gYWxsU2NoZW1hUHJvcGVydGllcyhwYXJlbnRTY2hlbWEucHJvcGVydGllcylcbiAgICBjb25zdCBwYXRQcm9wcyA9IGFsbFNjaGVtYVByb3BlcnRpZXMocGFyZW50U2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzKVxuICAgIGNoZWNrQWRkaXRpb25hbFByb3BlcnRpZXMoKVxuICAgIGN4dC5vayhfYCR7ZXJyc0NvdW50fSA9PT0gJHtOLmVycm9yc31gKVxuXG4gICAgZnVuY3Rpb24gY2hlY2tBZGRpdGlvbmFsUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgIGdlbi5mb3JJbihcImtleVwiLCBkYXRhLCAoa2V5OiBOYW1lKSA9PiB7XG4gICAgICAgIGlmICghcHJvcHMubGVuZ3RoICYmICFwYXRQcm9wcy5sZW5ndGgpIGFkZGl0aW9uYWxQcm9wZXJ0eUNvZGUoa2V5KVxuICAgICAgICBlbHNlIGdlbi5pZihpc0FkZGl0aW9uYWwoa2V5KSwgKCkgPT4gYWRkaXRpb25hbFByb3BlcnR5Q29kZShrZXkpKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FkZGl0aW9uYWwoa2V5OiBOYW1lKTogQ29kZSB7XG4gICAgICBsZXQgZGVmaW5lZFByb3A6IENvZGVcbiAgICAgIGlmIChwcm9wcy5sZW5ndGggPiA4KSB7XG4gICAgICAgIC8vIFRPRE8gbWF5YmUgYW4gb3B0aW9uIGluc3RlYWQgb2YgaGFyZC1jb2RlZCA4P1xuICAgICAgICBjb25zdCBwcm9wc1NjaGVtYSA9IHNjaGVtYVJlZk9yVmFsKGl0LCBwYXJlbnRTY2hlbWEucHJvcGVydGllcywgXCJwcm9wZXJ0aWVzXCIpXG4gICAgICAgIGRlZmluZWRQcm9wID0gaXNPd25Qcm9wZXJ0eShnZW4sIHByb3BzU2NoZW1hIGFzIENvZGUsIGtleSlcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMubGVuZ3RoKSB7XG4gICAgICAgIGRlZmluZWRQcm9wID0gb3IoLi4ucHJvcHMubWFwKChwKSA9PiBfYCR7a2V5fSA9PT0gJHtwfWApKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lZFByb3AgPSBuaWxcbiAgICAgIH1cbiAgICAgIGlmIChwYXRQcm9wcy5sZW5ndGgpIHtcbiAgICAgICAgZGVmaW5lZFByb3AgPSBvcihkZWZpbmVkUHJvcCwgLi4ucGF0UHJvcHMubWFwKChwKSA9PiBfYCR7dXNlUGF0dGVybihjeHQsIHApfS50ZXN0KCR7a2V5fSlgKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBub3QoZGVmaW5lZFByb3ApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlQWRkaXRpb25hbChrZXk6IE5hbWUpOiB2b2lkIHtcbiAgICAgIGdlbi5jb2RlKF9gZGVsZXRlICR7ZGF0YX1bJHtrZXl9XWApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkaXRpb25hbFByb3BlcnR5Q29kZShrZXk6IE5hbWUpOiB2b2lkIHtcbiAgICAgIGlmIChvcHRzLnJlbW92ZUFkZGl0aW9uYWwgPT09IFwiYWxsXCIgfHwgKG9wdHMucmVtb3ZlQWRkaXRpb25hbCAmJiBzY2hlbWEgPT09IGZhbHNlKSkge1xuICAgICAgICBkZWxldGVBZGRpdGlvbmFsKGtleSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICAgIGN4dC5zZXRQYXJhbXMoe2FkZGl0aW9uYWxQcm9wZXJ0eToga2V5fSlcbiAgICAgICAgY3h0LmVycm9yKClcbiAgICAgICAgaWYgKCFhbGxFcnJvcnMpIGdlbi5icmVhaygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcIm9iamVjdFwiICYmICFhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKSkge1xuICAgICAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgICAgICAgaWYgKG9wdHMucmVtb3ZlQWRkaXRpb25hbCA9PT0gXCJmYWlsaW5nXCIpIHtcbiAgICAgICAgICBhcHBseUFkZGl0aW9uYWxTY2hlbWEoa2V5LCB2YWxpZCwgZmFsc2UpXG4gICAgICAgICAgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IHtcbiAgICAgICAgICAgIGN4dC5yZXNldCgpXG4gICAgICAgICAgICBkZWxldGVBZGRpdGlvbmFsKGtleSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFwcGx5QWRkaXRpb25hbFNjaGVtYShrZXksIHZhbGlkKVxuICAgICAgICAgIGlmICghYWxsRXJyb3JzKSBnZW4uaWYobm90KHZhbGlkKSwgKCkgPT4gZ2VuLmJyZWFrKCkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseUFkZGl0aW9uYWxTY2hlbWEoa2V5OiBOYW1lLCB2YWxpZDogTmFtZSwgZXJyb3JzPzogZmFsc2UpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN1YnNjaGVtYTogU3Vic2NoZW1hQXJncyA9IHtcbiAgICAgICAga2V5d29yZDogXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiLFxuICAgICAgICBkYXRhUHJvcDoga2V5LFxuICAgICAgICBkYXRhUHJvcFR5cGU6IFR5cGUuU3RyLFxuICAgICAgfVxuICAgICAgaWYgKGVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihzdWJzY2hlbWEsIHtcbiAgICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZUVycm9yczogZmFsc2UsXG4gICAgICAgICAgYWxsRXJyb3JzOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGN4dC5zdWJzY2hlbWEoc3Vic2NoZW1hLCB2YWxpZClcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7cHJvcGVydHlJbkRhdGEsIGFsbFNjaGVtYVByb3BlcnRpZXN9IGZyb20gXCIuLi9jb2RlXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIHRvSGFzaCwgbWVyZ2VFdmFsdWF0ZWR9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IGFwRGVmIGZyb20gXCIuL2FkZGl0aW9uYWxQcm9wZXJ0aWVzXCJcblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwicHJvcGVydGllc1wiLFxuICB0eXBlOiBcIm9iamVjdFwiLFxuICBzY2hlbWFUeXBlOiBcIm9iamVjdFwiLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBkYXRhLCBpdH0gPSBjeHRcbiAgICBpZiAoaXQub3B0cy5yZW1vdmVBZGRpdGlvbmFsID09PSBcImFsbFwiICYmIHBhcmVudFNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcERlZi5jb2RlKG5ldyBLZXl3b3JkQ3h0KGl0LCBhcERlZiwgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiKSlcbiAgICB9XG4gICAgY29uc3QgYWxsUHJvcHMgPSBhbGxTY2hlbWFQcm9wZXJ0aWVzKHNjaGVtYSlcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgYWxsUHJvcHMpIHtcbiAgICAgIGl0LmRlZmluZWRQcm9wZXJ0aWVzLmFkZChwcm9wKVxuICAgIH1cbiAgICBpZiAoaXQub3B0cy51bmV2YWx1YXRlZCAmJiBhbGxQcm9wcy5sZW5ndGggJiYgaXQucHJvcHMgIT09IHRydWUpIHtcbiAgICAgIGl0LnByb3BzID0gbWVyZ2VFdmFsdWF0ZWQucHJvcHMoZ2VuLCB0b0hhc2goYWxsUHJvcHMpLCBpdC5wcm9wcylcbiAgICB9XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGFsbFByb3BzLmZpbHRlcigocCkgPT4gIWFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWFbcF0pKVxuICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgICAgaWYgKGhhc0RlZmF1bHQocHJvcCkpIHtcbiAgICAgICAgYXBwbHlQcm9wZXJ0eVNjaGVtYShwcm9wKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuLmlmKHByb3BlcnR5SW5EYXRhKGdlbiwgZGF0YSwgcHJvcCwgaXQub3B0cy5vd25Qcm9wZXJ0aWVzKSlcbiAgICAgICAgYXBwbHlQcm9wZXJ0eVNjaGVtYShwcm9wKVxuICAgICAgICBpZiAoIWl0LmFsbEVycm9ycykgZ2VuLmVsc2UoKS52YXIodmFsaWQsIHRydWUpXG4gICAgICAgIGdlbi5lbmRJZigpXG4gICAgICB9XG4gICAgICBjeHQuaXQuZGVmaW5lZFByb3BlcnRpZXMuYWRkKHByb3ApXG4gICAgICBjeHQub2sodmFsaWQpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzRGVmYXVsdChwcm9wOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiBpdC5vcHRzLnVzZURlZmF1bHRzICYmICFpdC5jb21wb3NpdGVSdWxlICYmIHNjaGVtYVtwcm9wXS5kZWZhdWx0ICE9PSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseVByb3BlcnR5U2NoZW1hKHByb3A6IHN0cmluZyk6IHZvaWQge1xuICAgICAgY3h0LnN1YnNjaGVtYShcbiAgICAgICAge1xuICAgICAgICAgIGtleXdvcmQ6IFwicHJvcGVydGllc1wiLFxuICAgICAgICAgIHNjaGVtYVByb3A6IHByb3AsXG4gICAgICAgICAgZGF0YVByb3A6IHByb3AsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkXG4gICAgICApXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7YWxsU2NoZW1hUHJvcGVydGllcywgdXNlUGF0dGVybn0gZnJvbSBcIi4uL2NvZGVcIlxuaW1wb3J0IHtfLCBub3QsIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgY2hlY2tTdHJpY3RNb2RlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7ZXZhbHVhdGVkUHJvcHNUb05hbWUsIFR5cGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IHtBbnlTY2hlbWF9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFwib2JqZWN0XCIsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBkYXRhLCBwYXJlbnRTY2hlbWEsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHtvcHRzfSA9IGl0XG4gICAgY29uc3QgcGF0dGVybnMgPSBhbGxTY2hlbWFQcm9wZXJ0aWVzKHNjaGVtYSlcbiAgICBjb25zdCBhbHdheXNWYWxpZFBhdHRlcm5zID0gcGF0dGVybnMuZmlsdGVyKChwKSA9PlxuICAgICAgYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYVtwXSBhcyBBbnlTY2hlbWEpXG4gICAgKVxuXG4gICAgaWYgKFxuICAgICAgcGF0dGVybnMubGVuZ3RoID09PSAwIHx8XG4gICAgICAoYWx3YXlzVmFsaWRQYXR0ZXJucy5sZW5ndGggPT09IHBhdHRlcm5zLmxlbmd0aCAmJlxuICAgICAgICAoIWl0Lm9wdHMudW5ldmFsdWF0ZWQgfHwgaXQucHJvcHMgPT09IHRydWUpKVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tQcm9wZXJ0aWVzID1cbiAgICAgIG9wdHMuc3RyaWN0U2NoZW1hICYmICFvcHRzLmFsbG93TWF0Y2hpbmdQcm9wZXJ0aWVzICYmIHBhcmVudFNjaGVtYS5wcm9wZXJ0aWVzXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgaWYgKGl0LnByb3BzICE9PSB0cnVlICYmICEoaXQucHJvcHMgaW5zdGFuY2VvZiBOYW1lKSkge1xuICAgICAgaXQucHJvcHMgPSBldmFsdWF0ZWRQcm9wc1RvTmFtZShnZW4sIGl0LnByb3BzKVxuICAgIH1cbiAgICBjb25zdCB7cHJvcHN9ID0gaXRcbiAgICB2YWxpZGF0ZVBhdHRlcm5Qcm9wZXJ0aWVzKClcblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlUGF0dGVyblByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHBhdCBvZiBwYXR0ZXJucykge1xuICAgICAgICBpZiAoY2hlY2tQcm9wZXJ0aWVzKSBjaGVja01hdGNoaW5nUHJvcGVydGllcyhwYXQpXG4gICAgICAgIGlmIChpdC5hbGxFcnJvcnMpIHtcbiAgICAgICAgICB2YWxpZGF0ZVByb3BlcnRpZXMocGF0KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdlbi52YXIodmFsaWQsIHRydWUpIC8vIFRPRE8gdmFyXG4gICAgICAgICAgdmFsaWRhdGVQcm9wZXJ0aWVzKHBhdClcbiAgICAgICAgICBnZW4uaWYodmFsaWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja01hdGNoaW5nUHJvcGVydGllcyhwYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIGNoZWNrUHJvcGVydGllcykge1xuICAgICAgICBpZiAobmV3IFJlZ0V4cChwYXQpLnRlc3QocHJvcCkpIHtcbiAgICAgICAgICBjaGVja1N0cmljdE1vZGUoXG4gICAgICAgICAgICBpdCxcbiAgICAgICAgICAgIGBwcm9wZXJ0eSAke3Byb3B9IG1hdGNoZXMgcGF0dGVybiAke3BhdH0gKHVzZSBhbGxvd01hdGNoaW5nUHJvcGVydGllcylgXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0aWVzKHBhdDogc3RyaW5nKTogdm9pZCB7XG4gICAgICBnZW4uZm9ySW4oXCJrZXlcIiwgZGF0YSwgKGtleSkgPT4ge1xuICAgICAgICBnZW4uaWYoX2Ake3VzZVBhdHRlcm4oY3h0LCBwYXQpfS50ZXN0KCR7a2V5fSlgLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWx3YXlzVmFsaWQgPSBhbHdheXNWYWxpZFBhdHRlcm5zLmluY2x1ZGVzKHBhdClcbiAgICAgICAgICBpZiAoIWFsd2F5c1ZhbGlkKSB7XG4gICAgICAgICAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5d29yZDogXCJwYXR0ZXJuUHJvcGVydGllc1wiLFxuICAgICAgICAgICAgICAgIHNjaGVtYVByb3A6IHBhdCxcbiAgICAgICAgICAgICAgICBkYXRhUHJvcDoga2V5LFxuICAgICAgICAgICAgICAgIGRhdGFQcm9wVHlwZTogVHlwZS5TdHIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHZhbGlkXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGl0Lm9wdHMudW5ldmFsdWF0ZWQgJiYgcHJvcHMgIT09IHRydWUpIHtcbiAgICAgICAgICAgIGdlbi5hc3NpZ24oX2Ake3Byb3BzfVske2tleX1dYCwgdHJ1ZSlcbiAgICAgICAgICB9IGVsc2UgaWYgKCFhbHdheXNWYWxpZCAmJiAhaXQuYWxsRXJyb3JzKSB7XG4gICAgICAgICAgICAvLyBjYW4gc2hvcnQtY2lyY3VpdCBpZiBgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzYCBpcyBub3Qgc3VwcG9ydGVkIChvcHRzLm5leHQgPT09IGZhbHNlKVxuICAgICAgICAgICAgLy8gb3IgaWYgYWxsIHByb3BlcnRpZXMgd2VyZSBldmFsdWF0ZWQgKHByb3BzID09PSB0cnVlKVxuICAgICAgICAgICAgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IGdlbi5icmVhaygpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck5vUGFyYW1zLCBBbnlTY2hlbWF9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmV4cG9ydCB0eXBlIE5vdEtleXdvcmRFcnJvciA9IEVycm9yTm9QYXJhbXM8XCJub3RcIiwgQW55U2NoZW1hPlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJub3RcIixcbiAgc2NoZW1hVHlwZTogW1wib2JqZWN0XCIsIFwiYm9vbGVhblwiXSxcbiAgdHJhY2tFcnJvcnM6IHRydWUsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBpdH0gPSBjeHRcbiAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHtcbiAgICAgIGN4dC5mYWlsKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICAgIGN4dC5zdWJzY2hlbWEoXG4gICAgICB7XG4gICAgICAgIGtleXdvcmQ6IFwibm90XCIsXG4gICAgICAgIGNvbXBvc2l0ZVJ1bGU6IHRydWUsXG4gICAgICAgIGNyZWF0ZUVycm9yczogZmFsc2UsXG4gICAgICAgIGFsbEVycm9yczogZmFsc2UsXG4gICAgICB9LFxuICAgICAgdmFsaWRcbiAgICApXG5cbiAgICBjeHQuZmFpbFJlc3VsdChcbiAgICAgIHZhbGlkLFxuICAgICAgKCkgPT4gY3h0LnJlc2V0KCksXG4gICAgICAoKSA9PiBjeHQuZXJyb3IoKVxuICAgIClcbiAgfSxcbiAgZXJyb3I6IHttZXNzYWdlOiBcIm11c3QgTk9UIGJlIHZhbGlkXCJ9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck5vUGFyYW1zLCBBbnlTY2hlbWF9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQge3ZhbGlkYXRlVW5pb259IGZyb20gXCIuLi9jb2RlXCJcblxuZXhwb3J0IHR5cGUgQW55T2ZFcnJvciA9IEVycm9yTm9QYXJhbXM8XCJhbnlPZlwiLCBBbnlTY2hlbWFbXT5cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiYW55T2ZcIixcbiAgc2NoZW1hVHlwZTogXCJhcnJheVwiLFxuICB0cmFja0Vycm9yczogdHJ1ZSxcbiAgY29kZTogdmFsaWRhdGVVbmlvbixcbiAgZXJyb3I6IHttZXNzYWdlOiBcIm11c3QgbWF0Y2ggYSBzY2hlbWEgaW4gYW55T2ZcIn0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQW55U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7XywgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7U2NoZW1hQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZVwiXG5cbmV4cG9ydCB0eXBlIE9uZU9mRXJyb3IgPSBFcnJvck9iamVjdDxcbiAgXCJvbmVPZlwiLFxuICB7cGFzc2luZ1NjaGVtYXM6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsfSxcbiAgQW55U2NoZW1hW11cbj5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6IFwibXVzdCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2ZcIixcbiAgcGFyYW1zOiAoe3BhcmFtc30pID0+IF9ge3Bhc3NpbmdTY2hlbWFzOiAke3BhcmFtcy5wYXNzaW5nfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJvbmVPZlwiLFxuICBzY2hlbWFUeXBlOiBcImFycmF5XCIsXG4gIHRyYWNrRXJyb3JzOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXR9ID0gY3h0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICAgIGlmIChpdC5vcHRzLmRpc2NyaW1pbmF0b3IgJiYgcGFyZW50U2NoZW1hLmRpc2NyaW1pbmF0b3IpIHJldHVyblxuICAgIGNvbnN0IHNjaEFycjogQW55U2NoZW1hW10gPSBzY2hlbWFcbiAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiLCBmYWxzZSlcbiAgICBjb25zdCBwYXNzaW5nID0gZ2VuLmxldChcInBhc3NpbmdcIiwgbnVsbClcbiAgICBjb25zdCBzY2hWYWxpZCA9IGdlbi5uYW1lKFwiX3ZhbGlkXCIpXG4gICAgY3h0LnNldFBhcmFtcyh7cGFzc2luZ30pXG4gICAgLy8gVE9ETyBwb3NzaWJseSBmYWlsIHN0cmFpZ2h0IGF3YXkgKHdpdGggd2FybmluZyBvciBleGNlcHRpb24pIGlmIHRoZXJlIGFyZSB0d28gZW1wdHkgYWx3YXlzIHZhbGlkIHNjaGVtYXNcblxuICAgIGdlbi5ibG9jayh2YWxpZGF0ZU9uZU9mKVxuXG4gICAgY3h0LnJlc3VsdChcbiAgICAgIHZhbGlkLFxuICAgICAgKCkgPT4gY3h0LnJlc2V0KCksXG4gICAgICAoKSA9PiBjeHQuZXJyb3IodHJ1ZSlcbiAgICApXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZU9uZU9mKCk6IHZvaWQge1xuICAgICAgc2NoQXJyLmZvckVhY2goKHNjaDogQW55U2NoZW1hLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IHNjaEN4dDogU2NoZW1hQ3h0IHwgdW5kZWZpbmVkXG4gICAgICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoKSkge1xuICAgICAgICAgIGdlbi52YXIoc2NoVmFsaWQsIHRydWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2NoQ3h0ID0gY3h0LnN1YnNjaGVtYShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5d29yZDogXCJvbmVPZlwiLFxuICAgICAgICAgICAgICBzY2hlbWFQcm9wOiBpLFxuICAgICAgICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjaFZhbGlkXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgZ2VuXG4gICAgICAgICAgICAuaWYoX2Ake3NjaFZhbGlkfSAmJiAke3ZhbGlkfWApXG4gICAgICAgICAgICAuYXNzaWduKHZhbGlkLCBmYWxzZSlcbiAgICAgICAgICAgIC5hc3NpZ24ocGFzc2luZywgX2BbJHtwYXNzaW5nfSwgJHtpfV1gKVxuICAgICAgICAgICAgLmVsc2UoKVxuICAgICAgICB9XG5cbiAgICAgICAgZ2VuLmlmKHNjaFZhbGlkLCAoKSA9PiB7XG4gICAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgdHJ1ZSlcbiAgICAgICAgICBnZW4uYXNzaWduKHBhc3NpbmcsIGkpXG4gICAgICAgICAgaWYgKHNjaEN4dCkgY3h0Lm1lcmdlRXZhbHVhdGVkKHNjaEN4dCwgTmFtZSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBBbnlTY2hlbWF9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImFsbE9mXCIsXG4gIHNjaGVtYVR5cGU6IFwiYXJyYXlcIixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBzY2hlbWEsIGl0fSA9IGN4dFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEpKSB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgICBzY2hlbWEuZm9yRWFjaCgoc2NoOiBBbnlTY2hlbWEsIGk6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2gpKSByZXR1cm5cbiAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoe2tleXdvcmQ6IFwiYWxsT2ZcIiwgc2NoZW1hUHJvcDogaX0sIHZhbGlkKVxuICAgICAgY3h0Lm9rKHZhbGlkKVxuICAgICAgY3h0Lm1lcmdlRXZhbHVhdGVkKHNjaEN4dClcbiAgICB9KVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7XG4gIENvZGVLZXl3b3JkRGVmaW5pdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIEFueVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFPYmpDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0ciwgbm90LCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIGNoZWNrU3RyaWN0TW9kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmV4cG9ydCB0eXBlIElmS2V5d29yZEVycm9yID0gRXJyb3JPYmplY3Q8XCJpZlwiLCB7ZmFpbGluZ0tleXdvcmQ6IHN0cmluZ30sIEFueVNjaGVtYT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zfSkgPT4gc3RyYG11c3QgbWF0Y2ggXCIke3BhcmFtcy5pZkNsYXVzZX1cIiBzY2hlbWFgLFxuICBwYXJhbXM6ICh7cGFyYW1zfSkgPT4gX2B7ZmFpbGluZ0tleXdvcmQ6ICR7cGFyYW1zLmlmQ2xhdXNlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJpZlwiLFxuICBzY2hlbWFUeXBlOiBbXCJvYmplY3RcIiwgXCJib29sZWFuXCJdLFxuICB0cmFja0Vycm9yczogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgcGFyZW50U2NoZW1hLCBpdH0gPSBjeHRcbiAgICBpZiAocGFyZW50U2NoZW1hLnRoZW4gPT09IHVuZGVmaW5lZCAmJiBwYXJlbnRTY2hlbWEuZWxzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGVja1N0cmljdE1vZGUoaXQsICdcImlmXCIgd2l0aG91dCBcInRoZW5cIiBhbmQgXCJlbHNlXCIgaXMgaWdub3JlZCcpXG4gICAgfVxuICAgIGNvbnN0IGhhc1RoZW4gPSBoYXNTY2hlbWEoaXQsIFwidGhlblwiKVxuICAgIGNvbnN0IGhhc0Vsc2UgPSBoYXNTY2hlbWEoaXQsIFwiZWxzZVwiKVxuICAgIGlmICghaGFzVGhlbiAmJiAhaGFzRWxzZSkgcmV0dXJuXG5cbiAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiLCB0cnVlKVxuICAgIGNvbnN0IHNjaFZhbGlkID0gZ2VuLm5hbWUoXCJfdmFsaWRcIilcbiAgICB2YWxpZGF0ZUlmKClcbiAgICBjeHQucmVzZXQoKVxuXG4gICAgaWYgKGhhc1RoZW4gJiYgaGFzRWxzZSkge1xuICAgICAgY29uc3QgaWZDbGF1c2UgPSBnZW4ubGV0KFwiaWZDbGF1c2VcIilcbiAgICAgIGN4dC5zZXRQYXJhbXMoe2lmQ2xhdXNlfSlcbiAgICAgIGdlbi5pZihzY2hWYWxpZCwgdmFsaWRhdGVDbGF1c2UoXCJ0aGVuXCIsIGlmQ2xhdXNlKSwgdmFsaWRhdGVDbGF1c2UoXCJlbHNlXCIsIGlmQ2xhdXNlKSlcbiAgICB9IGVsc2UgaWYgKGhhc1RoZW4pIHtcbiAgICAgIGdlbi5pZihzY2hWYWxpZCwgdmFsaWRhdGVDbGF1c2UoXCJ0aGVuXCIpKVxuICAgIH0gZWxzZSB7XG4gICAgICBnZW4uaWYobm90KHNjaFZhbGlkKSwgdmFsaWRhdGVDbGF1c2UoXCJlbHNlXCIpKVxuICAgIH1cblxuICAgIGN4dC5wYXNzKHZhbGlkLCAoKSA9PiBjeHQuZXJyb3IodHJ1ZSkpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUlmKCk6IHZvaWQge1xuICAgICAgY29uc3Qgc2NoQ3h0ID0gY3h0LnN1YnNjaGVtYShcbiAgICAgICAge1xuICAgICAgICAgIGtleXdvcmQ6IFwiaWZcIixcbiAgICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZUVycm9yczogZmFsc2UsXG4gICAgICAgICAgYWxsRXJyb3JzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoVmFsaWRcbiAgICAgIClcbiAgICAgIGN4dC5tZXJnZUV2YWx1YXRlZChzY2hDeHQpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVDbGF1c2Uoa2V5d29yZDogc3RyaW5nLCBpZkNsYXVzZT86IE5hbWUpOiAoKSA9PiB2b2lkIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoe2tleXdvcmR9LCBzY2hWYWxpZClcbiAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgc2NoVmFsaWQpXG4gICAgICAgIGN4dC5tZXJnZVZhbGlkRXZhbHVhdGVkKHNjaEN4dCwgdmFsaWQpXG4gICAgICAgIGlmIChpZkNsYXVzZSkgZ2VuLmFzc2lnbihpZkNsYXVzZSwgX2Ake2tleXdvcmR9YClcbiAgICAgICAgZWxzZSBjeHQuc2V0UGFyYW1zKHtpZkNsYXVzZToga2V5d29yZH0pXG4gICAgICB9XG4gICAgfVxuICB9LFxufVxuXG5mdW5jdGlvbiBoYXNTY2hlbWEoaXQ6IFNjaGVtYU9iakN4dCwga2V5d29yZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNjaGVtYSA9IGl0LnNjaGVtYVtrZXl3b3JkXVxuICByZXR1cm4gc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgIWFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWEpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtjaGVja1N0cmljdE1vZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogW1widGhlblwiLCBcImVsc2VcIl0sXG4gIHNjaGVtYVR5cGU6IFtcIm9iamVjdFwiLCBcImJvb2xlYW5cIl0sXG4gIGNvZGUoe2tleXdvcmQsIHBhcmVudFNjaGVtYSwgaXR9OiBLZXl3b3JkQ3h0KSB7XG4gICAgaWYgKHBhcmVudFNjaGVtYS5pZiA9PT0gdW5kZWZpbmVkKSBjaGVja1N0cmljdE1vZGUoaXQsIGBcIiR7a2V5d29yZH1cIiB3aXRob3V0IFwiaWZcIiBpcyBpZ25vcmVkYClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0Vycm9yTm9QYXJhbXMsIFZvY2FidWxhcnl9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgYWRkaXRpb25hbEl0ZW1zLCB7QWRkaXRpb25hbEl0ZW1zRXJyb3J9IGZyb20gXCIuL2FkZGl0aW9uYWxJdGVtc1wiXG5pbXBvcnQgcHJlZml4SXRlbXMgZnJvbSBcIi4vcHJlZml4SXRlbXNcIlxuaW1wb3J0IGl0ZW1zIGZyb20gXCIuL2l0ZW1zXCJcbmltcG9ydCBpdGVtczIwMjAsIHtJdGVtc0Vycm9yfSBmcm9tIFwiLi9pdGVtczIwMjBcIlxuaW1wb3J0IGNvbnRhaW5zLCB7Q29udGFpbnNFcnJvcn0gZnJvbSBcIi4vY29udGFpbnNcIlxuaW1wb3J0IGRlcGVuZGVuY2llcywge0RlcGVuZGVuY2llc0Vycm9yfSBmcm9tIFwiLi9kZXBlbmRlbmNpZXNcIlxuaW1wb3J0IHByb3BlcnR5TmFtZXMsIHtQcm9wZXJ0eU5hbWVzRXJyb3J9IGZyb20gXCIuL3Byb3BlcnR5TmFtZXNcIlxuaW1wb3J0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCB7QWRkaXRpb25hbFByb3BlcnRpZXNFcnJvcn0gZnJvbSBcIi4vYWRkaXRpb25hbFByb3BlcnRpZXNcIlxuaW1wb3J0IHByb3BlcnRpZXMgZnJvbSBcIi4vcHJvcGVydGllc1wiXG5pbXBvcnQgcGF0dGVyblByb3BlcnRpZXMgZnJvbSBcIi4vcGF0dGVyblByb3BlcnRpZXNcIlxuaW1wb3J0IG5vdEtleXdvcmQsIHtOb3RLZXl3b3JkRXJyb3J9IGZyb20gXCIuL25vdFwiXG5pbXBvcnQgYW55T2YsIHtBbnlPZkVycm9yfSBmcm9tIFwiLi9hbnlPZlwiXG5pbXBvcnQgb25lT2YsIHtPbmVPZkVycm9yfSBmcm9tIFwiLi9vbmVPZlwiXG5pbXBvcnQgYWxsT2YgZnJvbSBcIi4vYWxsT2ZcIlxuaW1wb3J0IGlmS2V5d29yZCwge0lmS2V5d29yZEVycm9yfSBmcm9tIFwiLi9pZlwiXG5pbXBvcnQgdGhlbkVsc2UgZnJvbSBcIi4vdGhlbkVsc2VcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBcHBsaWNhdG9yKGRyYWZ0MjAyMCA9IGZhbHNlKTogVm9jYWJ1bGFyeSB7XG4gIGNvbnN0IGFwcGxpY2F0b3IgPSBbXG4gICAgLy8gYW55XG4gICAgbm90S2V5d29yZCxcbiAgICBhbnlPZixcbiAgICBvbmVPZixcbiAgICBhbGxPZixcbiAgICBpZktleXdvcmQsXG4gICAgdGhlbkVsc2UsXG4gICAgLy8gb2JqZWN0XG4gICAgcHJvcGVydHlOYW1lcyxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICBkZXBlbmRlbmNpZXMsXG4gICAgcHJvcGVydGllcyxcbiAgICBwYXR0ZXJuUHJvcGVydGllcyxcbiAgXVxuICAvLyBhcnJheVxuICBpZiAoZHJhZnQyMDIwKSBhcHBsaWNhdG9yLnB1c2gocHJlZml4SXRlbXMsIGl0ZW1zMjAyMClcbiAgZWxzZSBhcHBsaWNhdG9yLnB1c2goYWRkaXRpb25hbEl0ZW1zLCBpdGVtcylcbiAgYXBwbGljYXRvci5wdXNoKGNvbnRhaW5zKVxuICByZXR1cm4gYXBwbGljYXRvclxufVxuXG5leHBvcnQgdHlwZSBBcHBsaWNhdG9yS2V5d29yZEVycm9yID1cbiAgfCBFcnJvck5vUGFyYW1zPFwiZmFsc2Ugc2NoZW1hXCI+XG4gIHwgQWRkaXRpb25hbEl0ZW1zRXJyb3JcbiAgfCBJdGVtc0Vycm9yXG4gIHwgQ29udGFpbnNFcnJvclxuICB8IEFkZGl0aW9uYWxQcm9wZXJ0aWVzRXJyb3JcbiAgfCBEZXBlbmRlbmNpZXNFcnJvclxuICB8IElmS2V5d29yZEVycm9yXG4gIHwgQW55T2ZFcnJvclxuICB8IE9uZU9mRXJyb3JcbiAgfCBOb3RLZXl3b3JkRXJyb3JcbiAgfCBQcm9wZXJ0eU5hbWVzRXJyb3JcbiIsICJpbXBvcnQgdHlwZSB7XG4gIEFkZGVkRm9ybWF0LFxuICBGb3JtYXRWYWxpZGF0b3IsXG4gIEFzeW5jRm9ybWF0VmFsaWRhdG9yLFxuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyLCBuaWwsIG9yLCBDb2RlLCBnZXRQcm9wZXJ0eSwgcmVnZXhwQ29kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5cbnR5cGUgRm9ybWF0VmFsaWRhdGUgPVxuICB8IEZvcm1hdFZhbGlkYXRvcjxzdHJpbmc+XG4gIHwgRm9ybWF0VmFsaWRhdG9yPG51bWJlcj5cbiAgfCBBc3luY0Zvcm1hdFZhbGlkYXRvcjxzdHJpbmc+XG4gIHwgQXN5bmNGb3JtYXRWYWxpZGF0b3I8bnVtYmVyPlxuICB8IFJlZ0V4cFxuICB8IHN0cmluZ1xuICB8IHRydWVcblxuZXhwb3J0IHR5cGUgRm9ybWF0RXJyb3IgPSBFcnJvck9iamVjdDxcImZvcm1hdFwiLCB7Zm9ybWF0OiBzdHJpbmd9LCBzdHJpbmcgfCB7JGRhdGE6IHN0cmluZ30+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3NjaGVtYUNvZGV9KSA9PiBzdHJgbXVzdCBtYXRjaCBmb3JtYXQgXCIke3NjaGVtYUNvZGV9XCJgLFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge2Zvcm1hdDogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJmb3JtYXRcIixcbiAgdHlwZTogW1wibnVtYmVyXCIsIFwic3RyaW5nXCJdLFxuICBzY2hlbWFUeXBlOiBcInN0cmluZ1wiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0LCBydWxlVHlwZT86IHN0cmluZykge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsICRkYXRhLCBzY2hlbWEsIHNjaGVtYUNvZGUsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHtvcHRzLCBlcnJTY2hlbWFQYXRoLCBzY2hlbWFFbnYsIHNlbGZ9ID0gaXRcbiAgICBpZiAoIW9wdHMudmFsaWRhdGVGb3JtYXRzKSByZXR1cm5cblxuICAgIGlmICgkZGF0YSkgdmFsaWRhdGUkRGF0YUZvcm1hdCgpXG4gICAgZWxzZSB2YWxpZGF0ZUZvcm1hdCgpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZSREYXRhRm9ybWF0KCk6IHZvaWQge1xuICAgICAgY29uc3QgZm10cyA9IGdlbi5zY29wZVZhbHVlKFwiZm9ybWF0c1wiLCB7XG4gICAgICAgIHJlZjogc2VsZi5mb3JtYXRzLFxuICAgICAgICBjb2RlOiBvcHRzLmNvZGUuZm9ybWF0cyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBmRGVmID0gZ2VuLmNvbnN0KFwiZkRlZlwiLCBfYCR7Zm10c31bJHtzY2hlbWFDb2RlfV1gKVxuICAgICAgY29uc3QgZlR5cGUgPSBnZW4ubGV0KFwiZlR5cGVcIilcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGdlbi5sZXQoXCJmb3JtYXRcIilcbiAgICAgIC8vIFRPRE8gc2ltcGxpZnlcbiAgICAgIGdlbi5pZihcbiAgICAgICAgX2B0eXBlb2YgJHtmRGVmfSA9PSBcIm9iamVjdFwiICYmICEoJHtmRGVmfSBpbnN0YW5jZW9mIFJlZ0V4cClgLFxuICAgICAgICAoKSA9PiBnZW4uYXNzaWduKGZUeXBlLCBfYCR7ZkRlZn0udHlwZSB8fCBcInN0cmluZ1wiYCkuYXNzaWduKGZvcm1hdCwgX2Ake2ZEZWZ9LnZhbGlkYXRlYCksXG4gICAgICAgICgpID0+IGdlbi5hc3NpZ24oZlR5cGUsIF9gXCJzdHJpbmdcImApLmFzc2lnbihmb3JtYXQsIGZEZWYpXG4gICAgICApXG4gICAgICBjeHQuZmFpbCRkYXRhKG9yKHVua25vd25GbXQoKSwgaW52YWxpZEZtdCgpKSlcblxuICAgICAgZnVuY3Rpb24gdW5rbm93bkZtdCgpOiBDb2RlIHtcbiAgICAgICAgaWYgKG9wdHMuc3RyaWN0U2NoZW1hID09PSBmYWxzZSkgcmV0dXJuIG5pbFxuICAgICAgICByZXR1cm4gX2Ake3NjaGVtYUNvZGV9ICYmICEke2Zvcm1hdH1gXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGludmFsaWRGbXQoKTogQ29kZSB7XG4gICAgICAgIGNvbnN0IGNhbGxGb3JtYXQgPSBzY2hlbWFFbnYuJGFzeW5jXG4gICAgICAgICAgPyBfYCgke2ZEZWZ9LmFzeW5jID8gYXdhaXQgJHtmb3JtYXR9KCR7ZGF0YX0pIDogJHtmb3JtYXR9KCR7ZGF0YX0pKWBcbiAgICAgICAgICA6IF9gJHtmb3JtYXR9KCR7ZGF0YX0pYFxuICAgICAgICBjb25zdCB2YWxpZERhdGEgPSBfYCh0eXBlb2YgJHtmb3JtYXR9ID09IFwiZnVuY3Rpb25cIiA/ICR7Y2FsbEZvcm1hdH0gOiAke2Zvcm1hdH0udGVzdCgke2RhdGF9KSlgXG4gICAgICAgIHJldHVybiBfYCR7Zm9ybWF0fSAmJiAke2Zvcm1hdH0gIT09IHRydWUgJiYgJHtmVHlwZX0gPT09ICR7cnVsZVR5cGV9ICYmICEke3ZhbGlkRGF0YX1gXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgICBjb25zdCBmb3JtYXREZWY6IEFkZGVkRm9ybWF0IHwgdW5kZWZpbmVkID0gc2VsZi5mb3JtYXRzW3NjaGVtYV1cbiAgICAgIGlmICghZm9ybWF0RGVmKSB7XG4gICAgICAgIHVua25vd25Gb3JtYXQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChmb3JtYXREZWYgPT09IHRydWUpIHJldHVyblxuICAgICAgY29uc3QgW2ZtdFR5cGUsIGZvcm1hdCwgZm10UmVmXSA9IGdldEZvcm1hdChmb3JtYXREZWYpXG4gICAgICBpZiAoZm10VHlwZSA9PT0gcnVsZVR5cGUpIGN4dC5wYXNzKHZhbGlkQ29uZGl0aW9uKCkpXG5cbiAgICAgIGZ1bmN0aW9uIHVua25vd25Gb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChvcHRzLnN0cmljdFNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuKHVua25vd25Nc2coKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IodW5rbm93bk1zZygpKVxuXG4gICAgICAgIGZ1bmN0aW9uIHVua25vd25Nc2coKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gYHVua25vd24gZm9ybWF0IFwiJHtzY2hlbWEgYXMgc3RyaW5nfVwiIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCIke2VyclNjaGVtYVBhdGh9XCJgXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZ2V0Rm9ybWF0KGZtdERlZjogQWRkZWRGb3JtYXQpOiBbc3RyaW5nLCBGb3JtYXRWYWxpZGF0ZSwgQ29kZV0ge1xuICAgICAgICBjb25zdCBjb2RlID1cbiAgICAgICAgICBmbXREZWYgaW5zdGFuY2VvZiBSZWdFeHBcbiAgICAgICAgICAgID8gcmVnZXhwQ29kZShmbXREZWYpXG4gICAgICAgICAgICA6IG9wdHMuY29kZS5mb3JtYXRzXG4gICAgICAgICAgICA/IF9gJHtvcHRzLmNvZGUuZm9ybWF0c30ke2dldFByb3BlcnR5KHNjaGVtYSl9YFxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgZm10ID0gZ2VuLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIsIHtrZXk6IHNjaGVtYSwgcmVmOiBmbXREZWYsIGNvZGV9KVxuICAgICAgICBpZiAodHlwZW9mIGZtdERlZiA9PSBcIm9iamVjdFwiICYmICEoZm10RGVmIGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgICAgICAgIHJldHVybiBbZm10RGVmLnR5cGUgfHwgXCJzdHJpbmdcIiwgZm10RGVmLnZhbGlkYXRlLCBfYCR7Zm10fS52YWxpZGF0ZWBdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1wic3RyaW5nXCIsIGZtdERlZiwgZm10XVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB2YWxpZENvbmRpdGlvbigpOiBDb2RlIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmb3JtYXREZWYgPT0gXCJvYmplY3RcIiAmJiAhKGZvcm1hdERlZiBpbnN0YW5jZW9mIFJlZ0V4cCkgJiYgZm9ybWF0RGVmLmFzeW5jKSB7XG4gICAgICAgICAgaWYgKCFzY2hlbWFFbnYuJGFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoXCJhc3luYyBmb3JtYXQgaW4gc3luYyBzY2hlbWFcIilcbiAgICAgICAgICByZXR1cm4gX2Bhd2FpdCAke2ZtdFJlZn0oJHtkYXRhfSlgXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBmb3JtYXQgPT0gXCJmdW5jdGlvblwiID8gX2Ake2ZtdFJlZn0oJHtkYXRhfSlgIDogX2Ake2ZtdFJlZn0udGVzdCgke2RhdGF9KWBcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IGZvcm1hdEtleXdvcmQgZnJvbSBcIi4vZm9ybWF0XCJcblxuY29uc3QgZm9ybWF0OiBWb2NhYnVsYXJ5ID0gW2Zvcm1hdEtleXdvcmRdXG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdFxuIiwgImltcG9ydCB0eXBlIHtWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vdHlwZXNcIlxuXG5leHBvcnQgY29uc3QgbWV0YWRhdGFWb2NhYnVsYXJ5OiBWb2NhYnVsYXJ5ID0gW1xuICBcInRpdGxlXCIsXG4gIFwiZGVzY3JpcHRpb25cIixcbiAgXCJkZWZhdWx0XCIsXG4gIFwiZGVwcmVjYXRlZFwiLFxuICBcInJlYWRPbmx5XCIsXG4gIFwid3JpdGVPbmx5XCIsXG4gIFwiZXhhbXBsZXNcIixcbl1cblxuZXhwb3J0IGNvbnN0IGNvbnRlbnRWb2NhYnVsYXJ5OiBWb2NhYnVsYXJ5ID0gW1xuICBcImNvbnRlbnRNZWRpYVR5cGVcIixcbiAgXCJjb250ZW50RW5jb2RpbmdcIixcbiAgXCJjb250ZW50U2NoZW1hXCIsXG5dXG4iLCAiaW1wb3J0IHR5cGUge1ZvY2FidWxhcnl9IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgY29yZVZvY2FidWxhcnkgZnJvbSBcIi4vY29yZVwiXG5pbXBvcnQgdmFsaWRhdGlvblZvY2FidWxhcnkgZnJvbSBcIi4vdmFsaWRhdGlvblwiXG5pbXBvcnQgZ2V0QXBwbGljYXRvclZvY2FidWxhcnkgZnJvbSBcIi4vYXBwbGljYXRvclwiXG5pbXBvcnQgZm9ybWF0Vm9jYWJ1bGFyeSBmcm9tIFwiLi9mb3JtYXRcIlxuaW1wb3J0IHttZXRhZGF0YVZvY2FidWxhcnksIGNvbnRlbnRWb2NhYnVsYXJ5fSBmcm9tIFwiLi9tZXRhZGF0YVwiXG5cbmNvbnN0IGRyYWZ0N1ZvY2FidWxhcmllczogVm9jYWJ1bGFyeVtdID0gW1xuICBjb3JlVm9jYWJ1bGFyeSxcbiAgdmFsaWRhdGlvblZvY2FidWxhcnksXG4gIGdldEFwcGxpY2F0b3JWb2NhYnVsYXJ5KCksXG4gIGZvcm1hdFZvY2FidWxhcnksXG4gIG1ldGFkYXRhVm9jYWJ1bGFyeSxcbiAgY29udGVudFZvY2FidWxhcnksXG5dXG5cbmV4cG9ydCBkZWZhdWx0IGRyYWZ0N1ZvY2FidWxhcmllc1xuIiwgImltcG9ydCB0eXBlIHtFcnJvck9iamVjdH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcblxuZXhwb3J0IGVudW0gRGlzY3JFcnJvciB7XG4gIFRhZyA9IFwidGFnXCIsXG4gIE1hcHBpbmcgPSBcIm1hcHBpbmdcIixcbn1cblxuZXhwb3J0IHR5cGUgRGlzY3JFcnJvck9iajxFIGV4dGVuZHMgRGlzY3JFcnJvcj4gPSBFcnJvck9iamVjdDxcbiAgXCJkaXNjcmltaW5hdG9yXCIsXG4gIHtlcnJvcjogRTsgdGFnOiBzdHJpbmc7IHRhZ1ZhbHVlOiB1bmtub3dufSxcbiAgc3RyaW5nXG4+XG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgQW55U2NoZW1hT2JqZWN0LCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7XywgZ2V0UHJvcGVydHksIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHtEaXNjckVycm9yLCBEaXNjckVycm9yT2JqfSBmcm9tIFwiLi4vZGlzY3JpbWluYXRvci90eXBlc1wiXG5pbXBvcnQge3Jlc29sdmVSZWYsIFNjaGVtYUVudn0gZnJvbSBcIi4uLy4uL2NvbXBpbGVcIlxuaW1wb3J0IE1pc3NpbmdSZWZFcnJvciBmcm9tIFwiLi4vLi4vY29tcGlsZS9yZWZfZXJyb3JcIlxuaW1wb3J0IHtzY2hlbWFIYXNSdWxlc0J1dFJlZn0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5cbmV4cG9ydCB0eXBlIERpc2NyaW1pbmF0b3JFcnJvciA9IERpc2NyRXJyb3JPYmo8RGlzY3JFcnJvci5UYWc+IHwgRGlzY3JFcnJvck9iajxEaXNjckVycm9yLk1hcHBpbmc+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3BhcmFtczoge2Rpc2NyRXJyb3IsIHRhZ05hbWV9fSkgPT5cbiAgICBkaXNjckVycm9yID09PSBEaXNjckVycm9yLlRhZ1xuICAgICAgPyBgdGFnIFwiJHt0YWdOYW1lfVwiIG11c3QgYmUgc3RyaW5nYFxuICAgICAgOiBgdmFsdWUgb2YgdGFnIFwiJHt0YWdOYW1lfVwiIG11c3QgYmUgaW4gb25lT2ZgLFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7ZGlzY3JFcnJvciwgdGFnLCB0YWdOYW1lfX0pID0+XG4gICAgX2B7ZXJyb3I6ICR7ZGlzY3JFcnJvcn0sIHRhZzogJHt0YWdOYW1lfSwgdGFnVmFsdWU6ICR7dGFnfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJkaXNjcmltaW5hdG9yXCIsXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFwib2JqZWN0XCIsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7b25lT2Z9ID0gcGFyZW50U2NoZW1hXG4gICAgaWYgKCFpdC5vcHRzLmRpc2NyaW1pbmF0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIGRpc2NyaW1pbmF0b3Igb3B0aW9uXCIpXG4gICAgfVxuICAgIGNvbnN0IHRhZ05hbWUgPSBzY2hlbWEucHJvcGVydHlOYW1lXG4gICAgaWYgKHR5cGVvZiB0YWdOYW1lICE9IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIHByb3BlcnR5TmFtZVwiKVxuICAgIGlmIChzY2hlbWEubWFwcGluZykgdGhyb3cgbmV3IEVycm9yKFwiZGlzY3JpbWluYXRvcjogbWFwcGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpXG4gICAgaWYgKCFvbmVPZikgdGhyb3cgbmV3IEVycm9yKFwiZGlzY3JpbWluYXRvcjogcmVxdWlyZXMgb25lT2Yga2V5d29yZFwiKVxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIsIGZhbHNlKVxuICAgIGNvbnN0IHRhZyA9IGdlbi5jb25zdChcInRhZ1wiLCBfYCR7ZGF0YX0ke2dldFByb3BlcnR5KHRhZ05hbWUpfWApXG4gICAgZ2VuLmlmKFxuICAgICAgX2B0eXBlb2YgJHt0YWd9ID09IFwic3RyaW5nXCJgLFxuICAgICAgKCkgPT4gdmFsaWRhdGVNYXBwaW5nKCksXG4gICAgICAoKSA9PiBjeHQuZXJyb3IoZmFsc2UsIHtkaXNjckVycm9yOiBEaXNjckVycm9yLlRhZywgdGFnLCB0YWdOYW1lfSlcbiAgICApXG4gICAgY3h0Lm9rKHZhbGlkKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVNYXBwaW5nKCk6IHZvaWQge1xuICAgICAgY29uc3QgbWFwcGluZyA9IGdldE1hcHBpbmcoKVxuICAgICAgZ2VuLmlmKGZhbHNlKVxuICAgICAgZm9yIChjb25zdCB0YWdWYWx1ZSBpbiBtYXBwaW5nKSB7XG4gICAgICAgIGdlbi5lbHNlSWYoX2Ake3RhZ30gPT09ICR7dGFnVmFsdWV9YClcbiAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgYXBwbHlUYWdTY2hlbWEobWFwcGluZ1t0YWdWYWx1ZV0pKVxuICAgICAgfVxuICAgICAgZ2VuLmVsc2UoKVxuICAgICAgY3h0LmVycm9yKGZhbHNlLCB7ZGlzY3JFcnJvcjogRGlzY3JFcnJvci5NYXBwaW5nLCB0YWcsIHRhZ05hbWV9KVxuICAgICAgZ2VuLmVuZElmKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseVRhZ1NjaGVtYShzY2hlbWFQcm9wPzogbnVtYmVyKTogTmFtZSB7XG4gICAgICBjb25zdCBfdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgICBjb25zdCBzY2hDeHQgPSBjeHQuc3Vic2NoZW1hKHtrZXl3b3JkOiBcIm9uZU9mXCIsIHNjaGVtYVByb3B9LCBfdmFsaWQpXG4gICAgICBjeHQubWVyZ2VFdmFsdWF0ZWQoc2NoQ3h0LCBOYW1lKVxuICAgICAgcmV0dXJuIF92YWxpZFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1hcHBpbmcoKToge1tUIGluIHN0cmluZ10/OiBudW1iZXJ9IHtcbiAgICAgIGNvbnN0IG9uZU9mTWFwcGluZzoge1tUIGluIHN0cmluZ10/OiBudW1iZXJ9ID0ge31cbiAgICAgIGNvbnN0IHRvcFJlcXVpcmVkID0gaGFzUmVxdWlyZWQocGFyZW50U2NoZW1hKVxuICAgICAgbGV0IHRhZ1JlcXVpcmVkID0gdHJ1ZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbmVPZi5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc2NoID0gb25lT2ZbaV1cbiAgICAgICAgaWYgKHNjaD8uJHJlZiAmJiAhc2NoZW1hSGFzUnVsZXNCdXRSZWYoc2NoLCBpdC5zZWxmLlJVTEVTKSkge1xuICAgICAgICAgIGNvbnN0IHJlZiA9IHNjaC4kcmVmXG4gICAgICAgICAgc2NoID0gcmVzb2x2ZVJlZi5jYWxsKGl0LnNlbGYsIGl0LnNjaGVtYUVudi5yb290LCBpdC5iYXNlSWQsIHJlZilcbiAgICAgICAgICBpZiAoc2NoIGluc3RhbmNlb2YgU2NoZW1hRW52KSBzY2ggPSBzY2guc2NoZW1hXG4gICAgICAgICAgaWYgKHNjaCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgTWlzc2luZ1JlZkVycm9yKGl0Lm9wdHMudXJpUmVzb2x2ZXIsIGl0LmJhc2VJZCwgcmVmKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BTY2ggPSBzY2g/LnByb3BlcnRpZXM/Llt0YWdOYW1lXVxuICAgICAgICBpZiAodHlwZW9mIHByb3BTY2ggIT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBkaXNjcmltaW5hdG9yOiBvbmVPZiBzdWJzY2hlbWFzIChvciByZWZlcmVuY2VkIHNjaGVtYXMpIG11c3QgaGF2ZSBcInByb3BlcnRpZXMvJHt0YWdOYW1lfVwiYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICB0YWdSZXF1aXJlZCA9IHRhZ1JlcXVpcmVkICYmICh0b3BSZXF1aXJlZCB8fCBoYXNSZXF1aXJlZChzY2gpKVxuICAgICAgICBhZGRNYXBwaW5ncyhwcm9wU2NoLCBpKVxuICAgICAgfVxuICAgICAgaWYgKCF0YWdSZXF1aXJlZCkgdGhyb3cgbmV3IEVycm9yKGBkaXNjcmltaW5hdG9yOiBcIiR7dGFnTmFtZX1cIiBtdXN0IGJlIHJlcXVpcmVkYClcbiAgICAgIHJldHVybiBvbmVPZk1hcHBpbmdcblxuICAgICAgZnVuY3Rpb24gaGFzUmVxdWlyZWQoe3JlcXVpcmVkfTogQW55U2NoZW1hT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJlcXVpcmVkKSAmJiByZXF1aXJlZC5pbmNsdWRlcyh0YWdOYW1lKVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBhZGRNYXBwaW5ncyhzY2g6IEFueVNjaGVtYU9iamVjdCwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChzY2guY29uc3QpIHtcbiAgICAgICAgICBhZGRNYXBwaW5nKHNjaC5jb25zdCwgaSlcbiAgICAgICAgfSBlbHNlIGlmIChzY2guZW51bSkge1xuICAgICAgICAgIGZvciAoY29uc3QgdGFnVmFsdWUgb2Ygc2NoLmVudW0pIHtcbiAgICAgICAgICAgIGFkZE1hcHBpbmcodGFnVmFsdWUsIGkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZGlzY3JpbWluYXRvcjogXCJwcm9wZXJ0aWVzLyR7dGFnTmFtZX1cIiBtdXN0IGhhdmUgXCJjb25zdFwiIG9yIFwiZW51bVwiYClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBhZGRNYXBwaW5nKHRhZ1ZhbHVlOiB1bmtub3duLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YWdWYWx1ZSAhPSBcInN0cmluZ1wiIHx8IHRhZ1ZhbHVlIGluIG9uZU9mTWFwcGluZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZGlzY3JpbWluYXRvcjogXCIke3RhZ05hbWV9XCIgdmFsdWVzIG11c3QgYmUgdW5pcXVlIHN0cmluZ3NgKVxuICAgICAgICB9XG4gICAgICAgIG9uZU9mTWFwcGluZ1t0YWdWYWx1ZV0gPSBpXG4gICAgICB9XG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJ7XG4gIFwiJHNjaGVtYVwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiLFxuICBcIiRpZFwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiLFxuICBcInRpdGxlXCI6IFwiQ29yZSBzY2hlbWEgbWV0YS1zY2hlbWFcIixcbiAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgXCJzY2hlbWFBcnJheVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgXCJpdGVtc1wiOiB7XCIkcmVmXCI6IFwiI1wifVxuICAgIH0sXG4gICAgXCJub25OZWdhdGl2ZUludGVnZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiaW50ZWdlclwiLFxuICAgICAgXCJtaW5pbXVtXCI6IDBcbiAgICB9LFxuICAgIFwibm9uTmVnYXRpdmVJbnRlZ2VyRGVmYXVsdDBcIjoge1xuICAgICAgXCJhbGxPZlwiOiBbe1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LCB7XCJkZWZhdWx0XCI6IDB9XVxuICAgIH0sXG4gICAgXCJzaW1wbGVUeXBlc1wiOiB7XG4gICAgICBcImVudW1cIjogW1wiYXJyYXlcIiwgXCJib29sZWFuXCIsIFwiaW50ZWdlclwiLCBcIm51bGxcIiwgXCJudW1iZXJcIiwgXCJvYmplY3RcIiwgXCJzdHJpbmdcIl1cbiAgICB9LFxuICAgIFwic3RyaW5nQXJyYXlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiaXRlbXNcIjoge1widHlwZVwiOiBcInN0cmluZ1wifSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZSxcbiAgICAgIFwiZGVmYXVsdFwiOiBbXVxuICAgIH1cbiAgfSxcbiAgXCJ0eXBlXCI6IFtcIm9iamVjdFwiLCBcImJvb2xlYW5cIl0sXG4gIFwicHJvcGVydGllc1wiOiB7XG4gICAgXCIkaWRcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImZvcm1hdFwiOiBcInVyaS1yZWZlcmVuY2VcIlxuICAgIH0sXG4gICAgXCIkc2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgIH0sXG4gICAgXCIkcmVmXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJmb3JtYXRcIjogXCJ1cmktcmVmZXJlbmNlXCJcbiAgICB9LFxuICAgIFwiJGNvbW1lbnRcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICB9LFxuICAgIFwidGl0bGVcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICB9LFxuICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICB9LFxuICAgIFwiZGVmYXVsdFwiOiB0cnVlLFxuICAgIFwicmVhZE9ubHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgfSxcbiAgICBcImV4YW1wbGVzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiAwXG4gICAgfSxcbiAgICBcIm1heGltdW1cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICB9LFxuICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgIH0sXG4gICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgfSxcbiAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICB9LFxuICAgIFwibWF4TGVuZ3RoXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlclwifSxcbiAgICBcIm1pbkxlbmd0aFwiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MFwifSxcbiAgICBcInBhdHRlcm5cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImZvcm1hdFwiOiBcInJlZ2V4XCJcbiAgICB9LFxuICAgIFwiYWRkaXRpb25hbEl0ZW1zXCI6IHtcIiRyZWZcIjogXCIjXCJ9LFxuICAgIFwiaXRlbXNcIjoge1xuICAgICAgXCJhbnlPZlwiOiBbe1wiJHJlZlwiOiBcIiNcIn0sIHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9XSxcbiAgICAgIFwiZGVmYXVsdFwiOiB0cnVlXG4gICAgfSxcbiAgICBcIm1heEl0ZW1zXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlclwifSxcbiAgICBcIm1pbkl0ZW1zXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwXCJ9LFxuICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgfSxcbiAgICBcImNvbnRhaW5zXCI6IHtcIiRyZWZcIjogXCIjXCJ9LFxuICAgIFwibWF4UHJvcGVydGllc1wiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sXG4gICAgXCJtaW5Qcm9wZXJ0aWVzXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwXCJ9LFxuICAgIFwicmVxdWlyZWRcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIn0sXG4gICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgIH0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgIH0sXG4gICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgICBcInByb3BlcnR5TmFtZXNcIjoge1wiZm9ybWF0XCI6IFwicmVnZXhcIn0sXG4gICAgICBcImRlZmF1bHRcIjoge31cbiAgICB9LFxuICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiYW55T2ZcIjogW3tcIiRyZWZcIjogXCIjXCJ9LCB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwifV1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicHJvcGVydHlOYW1lc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcImNvbnN0XCI6IHRydWUsXG4gICAgXCJlbnVtXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHRydWUsXG4gICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwidHlwZVwiOiB7XG4gICAgICBcImFueU9mXCI6IFtcbiAgICAgICAge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXNcIn0sXG4gICAgICAgIHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXNcIn0sXG4gICAgICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBcImZvcm1hdFwiOiB7XCJ0eXBlXCI6IFwic3RyaW5nXCJ9LFxuICAgIFwiY29udGVudE1lZGlhVHlwZVwiOiB7XCJ0eXBlXCI6IFwic3RyaW5nXCJ9LFxuICAgIFwiY29udGVudEVuY29kaW5nXCI6IHtcInR5cGVcIjogXCJzdHJpbmdcIn0sXG4gICAgXCJpZlwiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcInRoZW5cIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgXCJlbHNlXCI6IHtcIiRyZWZcIjogXCIjXCJ9LFxuICAgIFwiYWxsT2ZcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIn0sXG4gICAgXCJhbnlPZlwiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwifSxcbiAgICBcIm9uZU9mXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9LFxuICAgIFwibm90XCI6IHtcIiRyZWZcIjogXCIjXCJ9XG4gIH0sXG4gIFwiZGVmYXVsdFwiOiB0cnVlXG59XG4iLCAiaW1wb3J0IHR5cGUge0FueVNjaGVtYU9iamVjdH0gZnJvbSBcIi4vdHlwZXNcIlxuaW1wb3J0IEFqdkNvcmUgZnJvbSBcIi4vY29yZVwiXG5pbXBvcnQgZHJhZnQ3Vm9jYWJ1bGFyaWVzIGZyb20gXCIuL3ZvY2FidWxhcmllcy9kcmFmdDdcIlxuaW1wb3J0IGRpc2NyaW1pbmF0b3IgZnJvbSBcIi4vdm9jYWJ1bGFyaWVzL2Rpc2NyaW1pbmF0b3JcIlxuaW1wb3J0ICogYXMgZHJhZnQ3TWV0YVNjaGVtYSBmcm9tIFwiLi9yZWZzL2pzb24tc2NoZW1hLWRyYWZ0LTA3Lmpzb25cIlxuXG5jb25zdCBNRVRBX1NVUFBPUlRfREFUQSA9IFtcIi9wcm9wZXJ0aWVzXCJdXG5cbmNvbnN0IE1FVEFfU0NIRU1BX0lEID0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYVwiXG5cbmV4cG9ydCBjbGFzcyBBanYgZXh0ZW5kcyBBanZDb3JlIHtcbiAgX2FkZFZvY2FidWxhcmllcygpOiB2b2lkIHtcbiAgICBzdXBlci5fYWRkVm9jYWJ1bGFyaWVzKClcbiAgICBkcmFmdDdWb2NhYnVsYXJpZXMuZm9yRWFjaCgodikgPT4gdGhpcy5hZGRWb2NhYnVsYXJ5KHYpKVxuICAgIGlmICh0aGlzLm9wdHMuZGlzY3JpbWluYXRvcikgdGhpcy5hZGRLZXl3b3JkKGRpc2NyaW1pbmF0b3IpXG4gIH1cblxuICBfYWRkRGVmYXVsdE1ldGFTY2hlbWEoKTogdm9pZCB7XG4gICAgc3VwZXIuX2FkZERlZmF1bHRNZXRhU2NoZW1hKClcbiAgICBpZiAoIXRoaXMub3B0cy5tZXRhKSByZXR1cm5cbiAgICBjb25zdCBtZXRhU2NoZW1hID0gdGhpcy5vcHRzLiRkYXRhXG4gICAgICA/IHRoaXMuJGRhdGFNZXRhU2NoZW1hKGRyYWZ0N01ldGFTY2hlbWEsIE1FVEFfU1VQUE9SVF9EQVRBKVxuICAgICAgOiBkcmFmdDdNZXRhU2NoZW1hXG4gICAgdGhpcy5hZGRNZXRhU2NoZW1hKG1ldGFTY2hlbWEsIE1FVEFfU0NIRU1BX0lELCBmYWxzZSlcbiAgICB0aGlzLnJlZnNbXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYVwiXSA9IE1FVEFfU0NIRU1BX0lEXG4gIH1cblxuICBkZWZhdWx0TWV0YSgpOiBzdHJpbmcgfCBBbnlTY2hlbWFPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy5vcHRzLmRlZmF1bHRNZXRhID1cbiAgICAgIHN1cGVyLmRlZmF1bHRNZXRhKCkgfHwgKHRoaXMuZ2V0U2NoZW1hKE1FVEFfU0NIRU1BX0lEKSA/IE1FVEFfU0NIRU1BX0lEIDogdW5kZWZpbmVkKSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBBanZcbm1vZHVsZS5leHBvcnRzLkFqdiA9IEFqdlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KVxuXG5leHBvcnQgZGVmYXVsdCBBanZcblxuZXhwb3J0IHtcbiAgRm9ybWF0LFxuICBGb3JtYXREZWZpbml0aW9uLFxuICBBc3luY0Zvcm1hdERlZmluaXRpb24sXG4gIEtleXdvcmREZWZpbml0aW9uLFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIE1hY3JvS2V5d29yZERlZmluaXRpb24sXG4gIEZ1bmNLZXl3b3JkRGVmaW5pdGlvbixcbiAgVm9jYWJ1bGFyeSxcbiAgU2NoZW1hLFxuICBTY2hlbWFPYmplY3QsXG4gIEFueVNjaGVtYU9iamVjdCxcbiAgQXN5bmNTY2hlbWEsXG4gIEFueVNjaGVtYSxcbiAgVmFsaWRhdGVGdW5jdGlvbixcbiAgQXN5bmNWYWxpZGF0ZUZ1bmN0aW9uLFxuICBTY2hlbWFWYWxpZGF0ZUZ1bmN0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgRXJyb3JOb1BhcmFtcyxcbn0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQge1BsdWdpbiwgT3B0aW9ucywgQ29kZU9wdGlvbnMsIEluc3RhbmNlT3B0aW9ucywgTG9nZ2VyLCBFcnJvcnNUZXh0T3B0aW9uc30gZnJvbSBcIi4vY29yZVwiXG5leHBvcnQge1NjaGVtYUN4dCwgU2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi9jb21waWxlXCJcbmV4cG9ydCB7S2V5d29yZEN4dH0gZnJvbSBcIi4vY29tcGlsZS92YWxpZGF0ZVwiXG5leHBvcnQge0RlZmluZWRFcnJvcn0gZnJvbSBcIi4vdm9jYWJ1bGFyaWVzL2Vycm9yc1wiXG5leHBvcnQge0pTT05UeXBlfSBmcm9tIFwiLi9jb21waWxlL3J1bGVzXCJcbmV4cG9ydCB7SlNPTlNjaGVtYVR5cGV9IGZyb20gXCIuL3R5cGVzL2pzb24tc2NoZW1hXCJcbmV4cG9ydCB7Xywgc3RyLCBzdHJpbmdpZnksIG5pbCwgTmFtZSwgQ29kZSwgQ29kZUdlbiwgQ29kZUdlbk9wdGlvbnN9IGZyb20gXCIuL2NvbXBpbGUvY29kZWdlblwiXG5leHBvcnQge2RlZmF1bHQgYXMgVmFsaWRhdGlvbkVycm9yfSBmcm9tIFwiLi9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3JcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIE1pc3NpbmdSZWZFcnJvcn0gZnJvbSBcIi4vY29tcGlsZS9yZWZfZXJyb3JcIlxuIiwgImltcG9ydCB0eXBlIHtGb3JtYXQsIEZvcm1hdERlZmluaXRpb259IGZyb20gXCJhanZcIlxuaW1wb3J0IHR5cGUge0Zvcm1hdFZhbGlkYXRvciwgRm9ybWF0Q29tcGFyZX0gZnJvbSBcImFqdi9kaXN0L3R5cGVzXCJcblxuZXhwb3J0IHR5cGUgRm9ybWF0TW9kZSA9IFwiZmFzdFwiIHwgXCJmdWxsXCJcblxuZXhwb3J0IHR5cGUgRm9ybWF0TmFtZSA9XG4gIHwgXCJkYXRlXCJcbiAgfCBcInRpbWVcIlxuICB8IFwiZGF0ZS10aW1lXCJcbiAgfCBcImlzby10aW1lXCJcbiAgfCBcImlzby1kYXRlLXRpbWVcIlxuICB8IFwiZHVyYXRpb25cIlxuICB8IFwidXJpXCJcbiAgfCBcInVyaS1yZWZlcmVuY2VcIlxuICB8IFwidXJpLXRlbXBsYXRlXCJcbiAgfCBcInVybFwiXG4gIHwgXCJlbWFpbFwiXG4gIHwgXCJob3N0bmFtZVwiXG4gIHwgXCJpcHY0XCJcbiAgfCBcImlwdjZcIlxuICB8IFwicmVnZXhcIlxuICB8IFwidXVpZFwiXG4gIHwgXCJqc29uLXBvaW50ZXJcIlxuICB8IFwianNvbi1wb2ludGVyLXVyaS1mcmFnbWVudFwiXG4gIHwgXCJyZWxhdGl2ZS1qc29uLXBvaW50ZXJcIlxuICB8IFwiYnl0ZVwiXG4gIHwgXCJpbnQzMlwiXG4gIHwgXCJpbnQ2NFwiXG4gIHwgXCJmbG9hdFwiXG4gIHwgXCJkb3VibGVcIlxuICB8IFwicGFzc3dvcmRcIlxuICB8IFwiYmluYXJ5XCJcblxuZXhwb3J0IHR5cGUgRGVmaW5lZEZvcm1hdHMgPSB7XG4gIFtrZXkgaW4gRm9ybWF0TmFtZV06IEZvcm1hdFxufVxuXG5mdW5jdGlvbiBmbXREZWYoXG4gIHZhbGlkYXRlOiBSZWdFeHAgfCBGb3JtYXRWYWxpZGF0b3I8c3RyaW5nPixcbiAgY29tcGFyZTogRm9ybWF0Q29tcGFyZTxzdHJpbmc+XG4pOiBGb3JtYXREZWZpbml0aW9uPHN0cmluZz4ge1xuICByZXR1cm4ge3ZhbGlkYXRlLCBjb21wYXJlfVxufVxuXG5leHBvcnQgY29uc3QgZnVsbEZvcm1hdHM6IERlZmluZWRGb3JtYXRzID0ge1xuICAvLyBkYXRlOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIGRhdGU6IGZtdERlZihkYXRlLCBjb21wYXJlRGF0ZSksXG4gIC8vIGRhdGUtdGltZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICB0aW1lOiBmbXREZWYoZ2V0VGltZSh0cnVlKSwgY29tcGFyZVRpbWUpLFxuICBcImRhdGUtdGltZVwiOiBmbXREZWYoZ2V0RGF0ZVRpbWUodHJ1ZSksIGNvbXBhcmVEYXRlVGltZSksXG4gIFwiaXNvLXRpbWVcIjogZm10RGVmKGdldFRpbWUoKSwgY29tcGFyZUlzb1RpbWUpLFxuICBcImlzby1kYXRlLXRpbWVcIjogZm10RGVmKGdldERhdGVUaW1lKCksIGNvbXBhcmVJc29EYXRlVGltZSksXG4gIC8vIGR1cmF0aW9uOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNhcHBlbmRpeC1BXG4gIGR1cmF0aW9uOiAvXlAoPyEkKSgoXFxkK1kpPyhcXGQrTSk/KFxcZCtEKT8oVCg/PVxcZCkoXFxkK0gpPyhcXGQrTSk/KFxcZCtTKT8pP3woXFxkK1cpPykkLyxcbiAgdXJpLFxuICBcInVyaS1yZWZlcmVuY2VcIjpcbiAgICAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KT8oPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSp8XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT8oPzpcXD8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pLFxuICAvLyB1cmktdGVtcGxhdGU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwXG4gIFwidXJpLXRlbXBsYXRlXCI6XG4gICAgL14oPzooPzpbXlxceDAwLVxceDIwXCInPD4lXFxcXF5ge3x9XXwlWzAtOWEtZl17Mn0pfFxce1srIy4vOz8mPSwhQHxdPyg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8oPzosKD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPykqXFx9KSokL2ksXG4gIC8vIEZvciB0aGUgc291cmNlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kcGVyaW5pLzcyOTI5NFxuICAvLyBGb3IgdGVzdCBjYXNlczogaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL2RlbW8vdXJsLXJlZ2V4XG4gIHVybDogL14oPzpodHRwcz98ZnRwKTpcXC9cXC8oPzpcXFMrKD86OlxcUyopP0ApPyg/Oig/ISg/OjEwfDEyNykoPzpcXC5cXGR7MSwzfSl7M30pKD8hKD86MTY5XFwuMjU0fDE5MlxcLjE2OCkoPzpcXC5cXGR7MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJcXGR8M1swLTFdKSg/OlxcLlxcZHsxLDN9KXsyfSkoPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtejAtOVxcdXswMGExfS1cXHV7ZmZmZn1dKy0pKlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSspKD86XFwuKD86W2EtejAtOVxcdXswMGExfS1cXHV7ZmZmZn1dKy0pKlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSspKig/OlxcLig/OlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9XXsyLH0pKSkoPzo6XFxkezIsNX0pPyg/OlxcL1teXFxzXSopPyQvaXUsXG4gIGVtYWlsOlxuICAgIC9eW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/JC9pLFxuICBob3N0bmFtZTpcbiAgICAvXig/PS57MSwyNTN9XFwuPyQpW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KD86XFwuW2EtejAtOV0oPzpbLTAtOWEtel17MCw2MX1bMC05YS16XSk/KSpcXC4/JC9pLFxuICAvLyBvcHRpbWl6ZWQgaHR0cHM6Ly93d3cuc2FmYXJpYm9va3NvbmxpbmUuY29tL2xpYnJhcnkvdmlldy9yZWd1bGFyLWV4cHJlc3Npb25zLWNvb2tib29rLzk3ODA1OTY4MDI4MzcvY2gwN3MxNi5odG1sXG4gIGlwdjQ6IC9eKD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSQvLFxuICBpcHY2OiAvXigoKFswLTlhLWZdezEsNH06KXs3fShbMC05YS1mXXsxLDR9fDopKXwoKFswLTlhLWZdezEsNH06KXs2fSg6WzAtOWEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCgoWzAtOWEtZl17MSw0fTopezV9KCgoOlswLTlhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCgoWzAtOWEtZl17MSw0fTopezR9KCgoOlswLTlhLWZdezEsNH0pezEsM30pfCgoOlswLTlhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoKFswLTlhLWZdezEsNH06KXszfSgoKDpbMC05YS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05YS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCgoWzAtOWEtZl17MSw0fTopezJ9KCgoOlswLTlhLWZdezEsNH0pezEsNX0pfCgoOlswLTlhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KChbMC05YS1mXXsxLDR9Oil7MX0oKCg6WzAtOWEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOWEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoOigoKDpbMC05YS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05YS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSQvaSxcbiAgcmVnZXgsXG4gIC8vIHV1aWQ6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQxMjJcbiAgdXVpZDogL14oPzp1cm46dXVpZDopP1swLTlhLWZdezh9LSg/OlswLTlhLWZdezR9LSl7M31bMC05YS1mXXsxMn0kL2ksXG4gIC8vIEpTT04tcG9pbnRlcjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDFcbiAgLy8gdXJpIGZyYWdtZW50OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNhcHBlbmRpeC1BXG4gIFwianNvbi1wb2ludGVyXCI6IC9eKD86XFwvKD86W15+L118fjB8fjEpKikqJC8sXG4gIFwianNvbi1wb2ludGVyLXVyaS1mcmFnbWVudFwiOiAvXiMoPzpcXC8oPzpbYS16MC05X1xcLS4hJCYnKCkqKyw7Oj1AXXwlWzAtOWEtZl17Mn18fjB8fjEpKikqJC9pLFxuICAvLyByZWxhdGl2ZSBKU09OLXBvaW50ZXI6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWx1ZmYtcmVsYXRpdmUtanNvbi1wb2ludGVyLTAwXG4gIFwicmVsYXRpdmUtanNvbi1wb2ludGVyXCI6IC9eKD86MHxbMS05XVswLTldKikoPzojfCg/OlxcLyg/Oltefi9dfH4wfH4xKSopKikkLyxcbiAgLy8gdGhlIGZvbGxvd2luZyBmb3JtYXRzIGFyZSB1c2VkIGJ5IHRoZSBvcGVuYXBpIHNwZWNpZmljYXRpb246IGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMCNkYXRhLXR5cGVzXG4gIC8vIGJ5dGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWd1ZWxtb3RhL2lzLWJhc2U2NFxuICBieXRlLFxuICAvLyBzaWduZWQgMzIgYml0IGludGVnZXJcbiAgaW50MzI6IHt0eXBlOiBcIm51bWJlclwiLCB2YWxpZGF0ZTogdmFsaWRhdGVJbnQzMn0sXG4gIC8vIHNpZ25lZCA2NCBiaXQgaW50ZWdlclxuICBpbnQ2NDoge3R5cGU6IFwibnVtYmVyXCIsIHZhbGlkYXRlOiB2YWxpZGF0ZUludDY0fSxcbiAgLy8gQy10eXBlIGZsb2F0XG4gIGZsb2F0OiB7dHlwZTogXCJudW1iZXJcIiwgdmFsaWRhdGU6IHZhbGlkYXRlTnVtYmVyfSxcbiAgLy8gQy10eXBlIGRvdWJsZVxuICBkb3VibGU6IHt0eXBlOiBcIm51bWJlclwiLCB2YWxpZGF0ZTogdmFsaWRhdGVOdW1iZXJ9LFxuICAvLyBoaW50IHRvIHRoZSBVSSB0byBoaWRlIGlucHV0IHN0cmluZ3NcbiAgcGFzc3dvcmQ6IHRydWUsXG4gIC8vIHVuY2hlY2tlZCBzdHJpbmcgcGF5bG9hZFxuICBiaW5hcnk6IHRydWUsXG59XG5cbmV4cG9ydCBjb25zdCBmYXN0Rm9ybWF0czogRGVmaW5lZEZvcm1hdHMgPSB7XG4gIC4uLmZ1bGxGb3JtYXRzLFxuICBkYXRlOiBmbXREZWYoL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGQkLywgY29tcGFyZURhdGUpLFxuICB0aW1lOiBmbXREZWYoXG4gICAgL14oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KSQvaSxcbiAgICBjb21wYXJlVGltZVxuICApLFxuICBcImRhdGUtdGltZVwiOiBmbXREZWYoXG4gICAgL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGR0KD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPykkL2ksXG4gICAgY29tcGFyZURhdGVUaW1lXG4gICksXG4gIFwiaXNvLXRpbWVcIjogZm10RGVmKFxuICAgIC9eKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pLFxuICAgIGNvbXBhcmVJc29UaW1lXG4gICksXG4gIFwiaXNvLWRhdGUtdGltZVwiOiBmbXREZWYoXG4gICAgL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGRbdFxcc10oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KT8kL2ksXG4gICAgY29tcGFyZUlzb0RhdGVUaW1lXG4gICksXG4gIC8vIHVyaTogaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9pcy1teS1qc29uLXZhbGlkL2Jsb2IvbWFzdGVyL2Zvcm1hdHMuanNcbiAgdXJpOiAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KSg/OlxcLz9cXC8pP1teXFxzXSokL2ksXG4gIFwidXJpLXJlZmVyZW5jZVwiOiAvXig/Oig/OlthLXpdW2EtejAtOStcXC0uXSo6KT9cXC8/XFwvKT8oPzpbXlxcXFxcXHMjXVteXFxzI10qKT8oPzojW15cXFxcXFxzXSopPyQvaSxcbiAgLy8gZW1haWwgKHNvdXJjZXMgZnJvbSBqc2VuIHZhbGlkYXRvcik6XG4gIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjAxMzIzL3VzaW5nLWEtcmVndWxhci1leHByZXNzaW9uLXRvLXZhbGlkYXRlLWFuLWVtYWlsLWFkZHJlc3MjYW5zd2VyLTg4MjkzNjNcbiAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZm9ybXMuaHRtbCN2YWxpZC1lLW1haWwtYWRkcmVzcyAoc2VhcmNoIGZvciAnd2lsZnVsIHZpb2xhdGlvbicpXG4gIGVtYWlsOlxuICAgIC9eW2EtejAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KD86XFwuW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KSokL2ksXG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXROYW1lcyA9IE9iamVjdC5rZXlzKGZ1bGxGb3JtYXRzKSBhcyBGb3JtYXROYW1lW11cblxuZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjYXBwZW5kaXgtQ1xuICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMClcbn1cblxuY29uc3QgREFURSA9IC9eKFxcZFxcZFxcZFxcZCktKFxcZFxcZCktKFxcZFxcZCkkL1xuY29uc3QgREFZUyA9IFswLCAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVxuXG5mdW5jdGlvbiBkYXRlKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgY29uc3QgbWF0Y2hlczogc3RyaW5nW10gfCBudWxsID0gREFURS5leGVjKHN0cilcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgeWVhcjogbnVtYmVyID0gK21hdGNoZXNbMV1cbiAgY29uc3QgbW9udGg6IG51bWJlciA9ICttYXRjaGVzWzJdXG4gIGNvbnN0IGRheTogbnVtYmVyID0gK21hdGNoZXNbM11cbiAgcmV0dXJuIChcbiAgICBtb250aCA+PSAxICYmXG4gICAgbW9udGggPD0gMTIgJiZcbiAgICBkYXkgPj0gMSAmJlxuICAgIGRheSA8PSAobW9udGggPT09IDIgJiYgaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogREFZU1ttb250aF0pXG4gIClcbn1cblxuZnVuY3Rpb24gY29tcGFyZURhdGUoZDE6IHN0cmluZywgZDI6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGQxICYmIGQyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoZDEgPiBkMikgcmV0dXJuIDFcbiAgaWYgKGQxIDwgZDIpIHJldHVybiAtMVxuICByZXR1cm4gMFxufVxuXG5jb25zdCBUSU1FID0gL14oXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKD86XFwuXFxkKyk/KSh6fChbKy1dKShcXGRcXGQpKD86Oj8oXFxkXFxkKSk/KT8kL2lcblxuZnVuY3Rpb24gZ2V0VGltZShzdHJpY3RUaW1lWm9uZT86IGJvb2xlYW4pOiAoc3RyOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24gdGltZShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1hdGNoZXM6IHN0cmluZ1tdIHwgbnVsbCA9IFRJTUUuZXhlYyhzdHIpXG4gICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2VcbiAgICBjb25zdCBocjogbnVtYmVyID0gK21hdGNoZXNbMV1cbiAgICBjb25zdCBtaW46IG51bWJlciA9ICttYXRjaGVzWzJdXG4gICAgY29uc3Qgc2VjOiBudW1iZXIgPSArbWF0Y2hlc1szXVxuICAgIGNvbnN0IHR6OiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtYXRjaGVzWzRdXG4gICAgY29uc3QgdHpTaWduOiBudW1iZXIgPSBtYXRjaGVzWzVdID09PSBcIi1cIiA/IC0xIDogMVxuICAgIGNvbnN0IHR6SDogbnVtYmVyID0gKyhtYXRjaGVzWzZdIHx8IDApXG4gICAgY29uc3QgdHpNOiBudW1iZXIgPSArKG1hdGNoZXNbN10gfHwgMClcbiAgICBpZiAodHpIID4gMjMgfHwgdHpNID4gNTkgfHwgKHN0cmljdFRpbWVab25lICYmICF0eikpIHJldHVybiBmYWxzZVxuICAgIGlmIChociA8PSAyMyAmJiBtaW4gPD0gNTkgJiYgc2VjIDwgNjApIHJldHVybiB0cnVlXG4gICAgLy8gbGVhcCBzZWNvbmRcbiAgICBjb25zdCB1dGNNaW4gPSBtaW4gLSB0ek0gKiB0elNpZ25cbiAgICBjb25zdCB1dGNIciA9IGhyIC0gdHpIICogdHpTaWduIC0gKHV0Y01pbiA8IDAgPyAxIDogMClcbiAgICByZXR1cm4gKHV0Y0hyID09PSAyMyB8fCB1dGNIciA9PT0gLTEpICYmICh1dGNNaW4gPT09IDU5IHx8IHV0Y01pbiA9PT0gLTEpICYmIHNlYyA8IDYxXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGFyZVRpbWUoczE6IHN0cmluZywgczI6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKHMxICYmIHMyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCB0MSA9IG5ldyBEYXRlKFwiMjAyMC0wMS0wMVRcIiArIHMxKS52YWx1ZU9mKClcbiAgY29uc3QgdDIgPSBuZXcgRGF0ZShcIjIwMjAtMDEtMDFUXCIgKyBzMikudmFsdWVPZigpXG4gIGlmICghKHQxICYmIHQyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gdDEgLSB0MlxufVxuXG5mdW5jdGlvbiBjb21wYXJlSXNvVGltZSh0MTogc3RyaW5nLCB0Mjogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCEodDEgJiYgdDIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGExID0gVElNRS5leGVjKHQxKVxuICBjb25zdCBhMiA9IFRJTUUuZXhlYyh0MilcbiAgaWYgKCEoYTEgJiYgYTIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIHQxID0gYTFbMV0gKyBhMVsyXSArIGExWzNdXG4gIHQyID0gYTJbMV0gKyBhMlsyXSArIGEyWzNdXG4gIGlmICh0MSA+IHQyKSByZXR1cm4gMVxuICBpZiAodDEgPCB0MikgcmV0dXJuIC0xXG4gIHJldHVybiAwXG59XG5cbmNvbnN0IERBVEVfVElNRV9TRVBBUkFUT1IgPSAvdHxcXHMvaVxuZnVuY3Rpb24gZ2V0RGF0ZVRpbWUoc3RyaWN0VGltZVpvbmU/OiBib29sZWFuKTogKHN0cjogc3RyaW5nKSA9PiBib29sZWFuIHtcbiAgY29uc3QgdGltZSA9IGdldFRpbWUoc3RyaWN0VGltZVpvbmUpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGRhdGVfdGltZShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgICBjb25zdCBkYXRlVGltZTogc3RyaW5nW10gPSBzdHIuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUilcbiAgICByZXR1cm4gZGF0ZVRpbWUubGVuZ3RoID09PSAyICYmIGRhdGUoZGF0ZVRpbWVbMF0pICYmIHRpbWUoZGF0ZVRpbWVbMV0pXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGFyZURhdGVUaW1lKGR0MTogc3RyaW5nLCBkdDI6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGR0MSAmJiBkdDIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGQxID0gbmV3IERhdGUoZHQxKS52YWx1ZU9mKClcbiAgY29uc3QgZDIgPSBuZXcgRGF0ZShkdDIpLnZhbHVlT2YoKVxuICBpZiAoIShkMSAmJiBkMikpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIGQxIC0gZDJcbn1cblxuZnVuY3Rpb24gY29tcGFyZUlzb0RhdGVUaW1lKGR0MTogc3RyaW5nLCBkdDI6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGR0MSAmJiBkdDIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IFtkMSwgdDFdID0gZHQxLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpXG4gIGNvbnN0IFtkMiwgdDJdID0gZHQyLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpXG4gIGNvbnN0IHJlcyA9IGNvbXBhcmVEYXRlKGQxLCBkMilcbiAgaWYgKHJlcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiByZXMgfHwgY29tcGFyZVRpbWUodDEsIHQyKVxufVxuXG5jb25zdCBOT1RfVVJJX0ZSQUdNRU5UID0gL1xcL3w6L1xuY29uc3QgVVJJID1cbiAgL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKSg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaVxuXG5mdW5jdGlvbiB1cmkoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cDovL2ptcndhcmUuY29tL2FydGljbGVzLzIwMDkvdXJpX3JlZ2V4cC9VUklfcmVnZXguaHRtbCArIG9wdGlvbmFsIHByb3RvY29sICsgcmVxdWlyZWQgXCIuXCJcbiAgcmV0dXJuIE5PVF9VUklfRlJBR01FTlQudGVzdChzdHIpICYmIFVSSS50ZXN0KHN0cilcbn1cblxuY29uc3QgQllURSA9IC9eKD86W0EtWmEtejAtOSsvXXs0fSkqKD86W0EtWmEtejAtOSsvXXsyfT09fFtBLVphLXowLTkrL117M309KT8kL2dtXG5cbmZ1bmN0aW9uIGJ5dGUoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgQllURS5sYXN0SW5kZXggPSAwXG4gIHJldHVybiBCWVRFLnRlc3Qoc3RyKVxufVxuXG5jb25zdCBNSU5fSU5UMzIgPSAtKDIgKiogMzEpXG5jb25zdCBNQVhfSU5UMzIgPSAyICoqIDMxIC0gMVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUludDMyKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIodmFsdWUpICYmIHZhbHVlIDw9IE1BWF9JTlQzMiAmJiB2YWx1ZSA+PSBNSU5fSU5UMzJcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVJbnQ2NCh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIC8vIEpTT04gYW5kIGphdmFzY3JpcHQgbWF4IEludCBpcyAyKio1Mywgc28gYW55IGludCB0aGF0IHBhc3NlcyBpc0ludGVnZXIgaXMgdmFsaWQgZm9yIEludDY0XG4gIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU51bWJlcigpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgWl9BTkNIT1IgPSAvW15cXFxcXVxcXFxaL1xuZnVuY3Rpb24gcmVnZXgoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKFpfQU5DSE9SLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlXG4gIHRyeSB7XG4gICAgbmV3IFJlZ0V4cChzdHIpXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIENvZGVLZXl3b3JkRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQ29kZSxcbiAgTmFtZSxcbiAgRXJyb3JPYmplY3QsXG59IGZyb20gXCJhanZcIlxuaW1wb3J0IHR5cGUge0FkZGVkRm9ybWF0fSBmcm9tIFwiYWp2L2Rpc3QvdHlwZXNcIlxuaW1wb3J0IHR5cGUge1J1bGV9IGZyb20gXCJhanYvZGlzdC9jb21waWxlL3J1bGVzXCJcbmltcG9ydCB7S2V5d29yZEN4dH0gZnJvbSBcImFqdlwiXG5pbXBvcnQge18sIHN0ciwgb3IsIGdldFByb3BlcnR5LCBvcGVyYXRvcnN9IGZyb20gXCJhanYvZGlzdC9jb21waWxlL2NvZGVnZW5cIlxuXG50eXBlIEt3ZCA9IFwiZm9ybWF0TWF4aW11bVwiIHwgXCJmb3JtYXRNaW5pbXVtXCIgfCBcImZvcm1hdEV4Y2x1c2l2ZU1heGltdW1cIiB8IFwiZm9ybWF0RXhjbHVzaXZlTWluaW11bVwiXG5cbnR5cGUgQ29tcGFyaXNvbiA9IFwiPD1cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI+XCJcblxuY29uc3Qgb3BzID0gb3BlcmF0b3JzXG5cbmNvbnN0IEtXRHM6IHtbSyBpbiBLd2RdOiB7b2tTdHI6IENvbXBhcmlzb247IG9rOiBDb2RlOyBmYWlsOiBDb2RlfX0gPSB7XG4gIGZvcm1hdE1heGltdW06IHtva1N0cjogXCI8PVwiLCBvazogb3BzLkxURSwgZmFpbDogb3BzLkdUfSxcbiAgZm9ybWF0TWluaW11bToge29rU3RyOiBcIj49XCIsIG9rOiBvcHMuR1RFLCBmYWlsOiBvcHMuTFR9LFxuICBmb3JtYXRFeGNsdXNpdmVNYXhpbXVtOiB7b2tTdHI6IFwiPFwiLCBvazogb3BzLkxULCBmYWlsOiBvcHMuR1RFfSxcbiAgZm9ybWF0RXhjbHVzaXZlTWluaW11bToge29rU3RyOiBcIj5cIiwgb2s6IG9wcy5HVCwgZmFpbDogb3BzLkxURX0sXG59XG5cbmV4cG9ydCB0eXBlIExpbWl0Rm9ybWF0RXJyb3IgPSBFcnJvck9iamVjdDxLd2QsIHtsaW1pdDogc3RyaW5nOyBjb21wYXJpc29uOiBDb21wYXJpc29ufT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7a2V5d29yZCwgc2NoZW1hQ29kZX0pID0+IHN0cmBzaG91bGQgYmUgJHtLV0RzW2tleXdvcmQgYXMgS3dkXS5va1N0cn0gJHtzY2hlbWFDb2RlfWAsXG4gIHBhcmFtczogKHtrZXl3b3JkLCBzY2hlbWFDb2RlfSkgPT5cbiAgICBfYHtjb21wYXJpc29uOiAke0tXRHNba2V5d29yZCBhcyBLd2RdLm9rU3RyfSwgbGltaXQ6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuZXhwb3J0IGNvbnN0IGZvcm1hdExpbWl0RGVmaW5pdGlvbjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBPYmplY3Qua2V5cyhLV0RzKSxcbiAgdHlwZTogXCJzdHJpbmdcIixcbiAgc2NoZW1hVHlwZTogXCJzdHJpbmdcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dCkge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsIHNjaGVtYUNvZGUsIGtleXdvcmQsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHtvcHRzLCBzZWxmfSA9IGl0XG4gICAgaWYgKCFvcHRzLnZhbGlkYXRlRm9ybWF0cykgcmV0dXJuXG5cbiAgICBjb25zdCBmQ3h0ID0gbmV3IEtleXdvcmRDeHQoaXQsIChzZWxmLlJVTEVTLmFsbC5mb3JtYXQgYXMgUnVsZSkuZGVmaW5pdGlvbiwgXCJmb3JtYXRcIilcbiAgICBpZiAoZkN4dC4kZGF0YSkgdmFsaWRhdGUkRGF0YUZvcm1hdCgpXG4gICAgZWxzZSB2YWxpZGF0ZUZvcm1hdCgpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZSREYXRhRm9ybWF0KCk6IHZvaWQge1xuICAgICAgY29uc3QgZm10cyA9IGdlbi5zY29wZVZhbHVlKFwiZm9ybWF0c1wiLCB7XG4gICAgICAgIHJlZjogc2VsZi5mb3JtYXRzLFxuICAgICAgICBjb2RlOiBvcHRzLmNvZGUuZm9ybWF0cyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBmbXQgPSBnZW4uY29uc3QoXCJmbXRcIiwgX2Ake2ZtdHN9WyR7ZkN4dC5zY2hlbWFDb2RlfV1gKVxuICAgICAgY3h0LmZhaWwkZGF0YShcbiAgICAgICAgb3IoXG4gICAgICAgICAgX2B0eXBlb2YgJHtmbXR9ICE9IFwib2JqZWN0XCJgLFxuICAgICAgICAgIF9gJHtmbXR9IGluc3RhbmNlb2YgUmVnRXhwYCxcbiAgICAgICAgICBfYHR5cGVvZiAke2ZtdH0uY29tcGFyZSAhPSBcImZ1bmN0aW9uXCJgLFxuICAgICAgICAgIGNvbXBhcmVDb2RlKGZtdClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgY29uc3QgZm9ybWF0ID0gZkN4dC5zY2hlbWEgYXMgc3RyaW5nXG4gICAgICBjb25zdCBmbXREZWY6IEFkZGVkRm9ybWF0IHwgdW5kZWZpbmVkID0gc2VsZi5mb3JtYXRzW2Zvcm1hdF1cbiAgICAgIGlmICghZm10RGVmIHx8IGZtdERlZiA9PT0gdHJ1ZSkgcmV0dXJuXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBmbXREZWYgIT0gXCJvYmplY3RcIiB8fFxuICAgICAgICBmbXREZWYgaW5zdGFuY2VvZiBSZWdFeHAgfHxcbiAgICAgICAgdHlwZW9mIGZtdERlZi5jb21wYXJlICE9IFwiZnVuY3Rpb25cIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXCIke2tleXdvcmR9XCI6IGZvcm1hdCBcIiR7Zm9ybWF0fVwiIGRvZXMgbm90IGRlZmluZSBcImNvbXBhcmVcIiBmdW5jdGlvbmApXG4gICAgICB9XG4gICAgICBjb25zdCBmbXQgPSBnZW4uc2NvcGVWYWx1ZShcImZvcm1hdHNcIiwge1xuICAgICAgICBrZXk6IGZvcm1hdCxcbiAgICAgICAgcmVmOiBmbXREZWYsXG4gICAgICAgIGNvZGU6IG9wdHMuY29kZS5mb3JtYXRzID8gX2Ake29wdHMuY29kZS5mb3JtYXRzfSR7Z2V0UHJvcGVydHkoZm9ybWF0KX1gIDogdW5kZWZpbmVkLFxuICAgICAgfSlcblxuICAgICAgY3h0LmZhaWwkZGF0YShjb21wYXJlQ29kZShmbXQpKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXBhcmVDb2RlKGZtdDogTmFtZSk6IENvZGUge1xuICAgICAgcmV0dXJuIF9gJHtmbXR9LmNvbXBhcmUoJHtkYXRhfSwgJHtzY2hlbWFDb2RlfSkgJHtLV0RzW2tleXdvcmQgYXMgS3dkXS5mYWlsfSAwYFxuICAgIH1cbiAgfSxcbiAgZGVwZW5kZW5jaWVzOiBbXCJmb3JtYXRcIl0sXG59XG5cbmNvbnN0IGZvcm1hdExpbWl0UGx1Z2luOiBQbHVnaW48dW5kZWZpbmVkPiA9IChhanY6IEFqdik6IEFqdiA9PiB7XG4gIGFqdi5hZGRLZXl3b3JkKGZvcm1hdExpbWl0RGVmaW5pdGlvbilcbiAgcmV0dXJuIGFqdlxufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRMaW1pdFBsdWdpblxuIiwgImltcG9ydCB7XG4gIERlZmluZWRGb3JtYXRzLFxuICBGb3JtYXRNb2RlLFxuICBGb3JtYXROYW1lLFxuICBmb3JtYXROYW1lcyxcbiAgZmFzdEZvcm1hdHMsXG4gIGZ1bGxGb3JtYXRzLFxufSBmcm9tIFwiLi9mb3JtYXRzXCJcbmltcG9ydCBmb3JtYXRMaW1pdCBmcm9tIFwiLi9saW1pdFwiXG5pbXBvcnQgdHlwZSBBanYgZnJvbSBcImFqdlwiXG5pbXBvcnQgdHlwZSB7UGx1Z2luLCBGb3JtYXR9IGZyb20gXCJhanZcIlxuaW1wb3J0IHtfLCBOYW1lfSBmcm9tIFwiYWp2L2Rpc3QvY29tcGlsZS9jb2RlZ2VuXCJcblxuZXhwb3J0IHtGb3JtYXRNb2RlLCBGb3JtYXROYW1lfSBmcm9tIFwiLi9mb3JtYXRzXCJcbmV4cG9ydCB7TGltaXRGb3JtYXRFcnJvcn0gZnJvbSBcIi4vbGltaXRcIlxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRPcHRpb25zIHtcbiAgbW9kZT86IEZvcm1hdE1vZGVcbiAgZm9ybWF0cz86IEZvcm1hdE5hbWVbXVxuICBrZXl3b3Jkcz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRm9ybWF0c1BsdWdpbk9wdGlvbnMgPSBGb3JtYXROYW1lW10gfCBGb3JtYXRPcHRpb25zXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0c1BsdWdpbiBleHRlbmRzIFBsdWdpbjxGb3JtYXRzUGx1Z2luT3B0aW9ucz4ge1xuICBnZXQ6IChmb3JtYXQ6IEZvcm1hdE5hbWUsIG1vZGU/OiBGb3JtYXRNb2RlKSA9PiBGb3JtYXRcbn1cblxuY29uc3QgZnVsbE5hbWUgPSBuZXcgTmFtZShcImZ1bGxGb3JtYXRzXCIpXG5jb25zdCBmYXN0TmFtZSA9IG5ldyBOYW1lKFwiZmFzdEZvcm1hdHNcIilcblxuY29uc3QgZm9ybWF0c1BsdWdpbjogRm9ybWF0c1BsdWdpbiA9IChcbiAgYWp2OiBBanYsXG4gIG9wdHM6IEZvcm1hdHNQbHVnaW5PcHRpb25zID0ge2tleXdvcmRzOiB0cnVlfVxuKTogQWp2ID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob3B0cykpIHtcbiAgICBhZGRGb3JtYXRzKGFqdiwgb3B0cywgZnVsbEZvcm1hdHMsIGZ1bGxOYW1lKVxuICAgIHJldHVybiBhanZcbiAgfVxuICBjb25zdCBbZm9ybWF0cywgZXhwb3J0TmFtZV0gPVxuICAgIG9wdHMubW9kZSA9PT0gXCJmYXN0XCIgPyBbZmFzdEZvcm1hdHMsIGZhc3ROYW1lXSA6IFtmdWxsRm9ybWF0cywgZnVsbE5hbWVdXG4gIGNvbnN0IGxpc3QgPSBvcHRzLmZvcm1hdHMgfHwgZm9ybWF0TmFtZXNcbiAgYWRkRm9ybWF0cyhhanYsIGxpc3QsIGZvcm1hdHMsIGV4cG9ydE5hbWUpXG4gIGlmIChvcHRzLmtleXdvcmRzKSBmb3JtYXRMaW1pdChhanYpXG4gIHJldHVybiBhanZcbn1cblxuZm9ybWF0c1BsdWdpbi5nZXQgPSAobmFtZTogRm9ybWF0TmFtZSwgbW9kZTogRm9ybWF0TW9kZSA9IFwiZnVsbFwiKTogRm9ybWF0ID0+IHtcbiAgY29uc3QgZm9ybWF0cyA9IG1vZGUgPT09IFwiZmFzdFwiID8gZmFzdEZvcm1hdHMgOiBmdWxsRm9ybWF0c1xuICBjb25zdCBmID0gZm9ybWF0c1tuYW1lXVxuICBpZiAoIWYpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBmb3JtYXQgXCIke25hbWV9XCJgKVxuICByZXR1cm4gZlxufVxuXG5mdW5jdGlvbiBhZGRGb3JtYXRzKGFqdjogQWp2LCBsaXN0OiBGb3JtYXROYW1lW10sIGZzOiBEZWZpbmVkRm9ybWF0cywgZXhwb3J0TmFtZTogTmFtZSk6IHZvaWQge1xuICBhanYub3B0cy5jb2RlLmZvcm1hdHMgPz89IF9gcmVxdWlyZShcImFqdi1mb3JtYXRzL2Rpc3QvZm9ybWF0c1wiKS4ke2V4cG9ydE5hbWV9YFxuICBmb3IgKGNvbnN0IGYgb2YgbGlzdCkgYWp2LmFkZEZvcm1hdChmLCBmc1tmXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZm9ybWF0c1BsdWdpblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRzUGx1Z2luXG4iLCAiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUFwcEF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1hcHBcIjtcbmltcG9ydCB7IE9jdG9raXQgfSBmcm9tIFwiQG9jdG9raXQvcmVzdFwiO1xuaW1wb3J0IHR5cGUgeyBBZ2VudEFkYXB0ZXIgfSBmcm9tIFwiLi9hZ2VudHMvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgQ2xhdWRlQWdlbnRBZGFwdGVyIH0gZnJvbSBcIi4vYWdlbnRzL2NsYXVkZS5qc1wiO1xuaW1wb3J0IHsgQ29kZXhBZ2VudEFkYXB0ZXIgfSBmcm9tIFwiLi9hZ2VudHMvY29kZXguanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgQXVkaXRFbWl0dGVyLFxuICBjb21iaW5lRW1pdHRlcnMsXG4gIGNyZWF0ZUF1ZGl0RW1pdHRlcixcbn0gZnJvbSBcIi4vYXVkaXQvZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVTdGVwU3VtbWFyeU1pcnJvciB9IGZyb20gXCIuL2F1ZGl0L3N0ZXAtc3VtbWFyeS5qc1wiO1xuaW1wb3J0IHsgYnVpbGRBZ2VudEVudkZyb21Db25maWcgfSBmcm9tIFwiLi9jb25maWcvYWdlbnQtZW52LmpzXCI7XG5pbXBvcnQgeyBidWlsZENvZGV4T3B0aW9ucyB9IGZyb20gXCIuL2NvbmZpZy9jb2RleC1vcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9pbnB1dHMuanNcIjtcbmltcG9ydCB7IGFwcGx5R2l0SWRlbnRpdHksIHJlc29sdmVCb3RJZGVudGl0eSB9IGZyb20gXCIuL2dpdC9pZGVudGl0eS5qc1wiO1xuaW1wb3J0IHtcbiAgcHJlcGFyZUltcGxDaGVja291dCxcbiAgcHJlcGFyZVJldmlld0Jhc2UsXG4gIHB1c2hJbXBsQ29tbWl0cyxcbiAgdG9rZW5SZXNvbHZlckZvcixcbn0gZnJvbSBcIi4vZ2l0L2ltcGwtY2hlY2tvdXQuanNcIjtcbmltcG9ydCB7IEdpdEh1YkFkYXB0ZXIsIHR5cGUgT2N0b2tpdExpa2UgfSBmcm9tIFwiLi9naXRodWIvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgdHlwZSBBdXRoU3BlYywgcmVzb2x2ZUF1dGggfSBmcm9tIFwiLi9naXRodWIvYXBwLXRva2VuLmpzXCI7XG5pbXBvcnQgeyBydW5PcmNoZXN0cmF0b3IgfSBmcm9tIFwiLi9vcmNoZXN0cmF0b3IuanNcIjtcbmltcG9ydCB0eXBlIHsgR2l0T3BzIH0gZnJvbSBcIi4vc3RhZ2VzL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudFBheWxvYWQgfSBmcm9tIFwiLi9zdGF0ZS90eXBlcy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkVudHJ5RGVwcyB7XG4gIC8vIEluamVjdCBhbiBPY3Rva2l0IGZhY3RvcnkgaW4gdGVzdHMgc28gd2UgZG9uJ3QgaGl0IHRoZSBuZXR3b3JrLlxuICBvY3Rva2l0RmFjdG9yeT86IChhdXRoOiBBdXRoU3BlYykgPT4gT2N0b2tpdExpa2U7XG4gIC8vIEluamVjdCB0aGUgYWdlbnQgYWRhcHRlciBpbiB0ZXN0czsgZGVmYXVsdHMgdG8gdGhlIHByb3ZpZGVyIHNlbGVjdGVkIGJ5XG4gIC8vIGNvbmZpZy5hZ2VudFByb3ZpZGVyIChDbGF1ZGVBZ2VudEFkYXB0ZXIgb3IgQ29kZXhBZ2VudEFkYXB0ZXIpLlxuICBhZ2VudEZhY3Rvcnk/OiAoKSA9PiBBZ2VudEFkYXB0ZXI7XG4gIC8vIE92ZXJyaWRlIGF1ZGl0IHNpbmsgZm9yIHRlc3RzLlxuICBhdWRpdFNpbms/OiBBdWRpdEVtaXR0ZXI7XG59XG5cbmNvbnN0IElOUFVUX0tFWVMgPSBbXG4gIFwiYW50aHJvcGljX2FwaV9rZXlcIixcbiAgXCJjbGF1ZGVfY29kZV9vYXV0aF90b2tlblwiLFxuICBcImFnZW50X3Byb3ZpZGVyXCIsXG4gIFwib3BlbmFpX2FwaV9rZXlcIixcbiAgXCJjb2RleF9hdXRoX2pzb25cIixcbiAgXCJjb2RleF9zYW5kYm94X21vZGVcIixcbiAgXCJjb2RleF9hcHByb3ZhbF9wb2xpY3lcIixcbiAgXCJjb2RleF9uZXR3b3JrX2FjY2Vzc1wiLFxuICBcImNvZGV4X3NraXBfZ2l0X3JlcG9fY2hlY2tcIixcbiAgXCJnaXRodWJfYXBwX2NsaWVudF9pZFwiLFxuICBcImdpdGh1Yl9hcHBfcHJpdmF0ZV9rZXlcIixcbiAgXCJnaXRodWJfYXBwX3Jldmlld19jbGllbnRfaWRcIixcbiAgXCJnaXRodWJfYXBwX3Jldmlld19wcml2YXRlX2tleVwiLFxuICBcImdpdGh1Yl9hcHBfdG9rZW5cIixcbiAgXCJnaXRodWJfYXBwX3Jldmlld190b2tlblwiLFxuICBcImdpdGh1Yl90b2tlblwiLFxuICBcInNzaF9zaWduaW5nX2tleVwiLFxuICBcInRyaWdnZXJfbGFiZWxcIixcbiAgXCJtYXhfcmV2aWV3X2l0ZXJhdGlvbnNcIixcbiAgXCJ0cmlhZ2VfbW9kZWxcIixcbiAgXCJzcGVjX21vZGVsXCIsXG4gIFwicGxhbl9tb2RlbFwiLFxuICBcImltcGxfbW9kZWxcIixcbiAgXCJyZXZpZXdfY29tcGxpYW5jZV9tb2RlbFwiLFxuICBcInJldmlld19idWdzX21vZGVsXCIsXG4gIFwicmV2aWV3X3NlY3VyaXR5X21vZGVsXCIsXG4gIFwicmV2aWV3X3NtZWxsc19tb2RlbFwiLFxuICBcInRyaWFnZV9lZmZvcnRcIixcbiAgXCJzcGVjX2VmZm9ydFwiLFxuICBcInBsYW5fZWZmb3J0XCIsXG4gIFwiaW1wbF9lZmZvcnRcIixcbiAgXCJyZXZpZXdfY29tcGxpYW5jZV9lZmZvcnRcIixcbiAgXCJyZXZpZXdfYnVnc19lZmZvcnRcIixcbiAgXCJyZXZpZXdfc2VjdXJpdHlfZWZmb3J0XCIsXG4gIFwicmV2aWV3X3NtZWxsc19lZmZvcnRcIixcbiAgXCJ0cmlhZ2VfbWF4X2J1ZGdldF91c2RcIixcbiAgXCJzcGVjX21heF9idWRnZXRfdXNkXCIsXG4gIFwicGxhbl9tYXhfYnVkZ2V0X3VzZFwiLFxuICBcImltcGxfbWF4X2J1ZGdldF91c2RcIixcbiAgXCJyZXZpZXdfbWF4X2J1ZGdldF91c2RfcGVyX2xlbnNcIixcbiAgXCJ0cmlhZ2VfbWF4X3R1cm5zXCIsXG4gIFwic3BlY19tYXhfdHVybnNcIixcbiAgXCJwbGFuX21heF90dXJuc1wiLFxuICBcImltcGxfbWF4X3R1cm5zXCIsXG4gIFwicmV2aWV3X21heF90dXJuc19wZXJfbGVuc1wiLFxuICBcInRyaWFnZV90aW1lb3V0X21zXCIsXG4gIFwic3BlY190aW1lb3V0X21zXCIsXG4gIFwicGxhbl90aW1lb3V0X21zXCIsXG4gIFwiaW1wbF90aW1lb3V0X21zXCIsXG4gIFwicmV2aWV3X3RpbWVvdXRfbXNfcGVyX2xlbnNcIixcbiAgXCJyZXZpZXdfb25seVwiLFxuICBcIm1vZGVcIixcbiAgXCJzdGFnZXNcIixcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5FbnRyeShkZXBzOiBSdW5FbnRyeURlcHMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJhd0lucHV0cyA9IHJlYWRBY3Rpb25JbnB1dHMoKTtcbiAgICBjb25zdCBjb25maWcgPSBwYXJzZUNvbmZpZyhyYXdJbnB1dHMpO1xuXG4gICAgY29uc3QgW293bmVyLCByZXBvXSA9IChwcm9jZXNzLmVudi5HSVRIVUJfUkVQT1NJVE9SWSA/PyBcIlwiKS5zcGxpdChcIi9cIik7XG4gICAgaWYgKCFvd25lciB8fCAhcmVwbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR0lUSFVCX1JFUE9TSVRPUlkgaXMgbm90IHNldFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudE5hbWUgPSBwcm9jZXNzLmVudi5HSVRIVUJfRVZFTlRfTkFNRSA/PyBcIlwiO1xuICAgIGNvbnN0IGV2ZW50UGF0aCA9IHByb2Nlc3MuZW52LkdJVEhVQl9FVkVOVF9QQVRIID8/IFwiXCI7XG4gICAgaWYgKCFldmVudFBhdGgpIHRocm93IG5ldyBFcnJvcihcIkdJVEhVQl9FVkVOVF9QQVRIIGlzIG5vdCBzZXRcIik7XG4gICAgY29uc3QgZXZlbnRQYXlsb2FkID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoZXZlbnRQYXRoLCBcInV0ZjhcIikpIGFzXG4gICAgICB8IEV2ZW50UGF5bG9hZFxuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgY29uc3QgZXZlbnQgPSB7IG5hbWU6IGV2ZW50TmFtZSwgcGF5bG9hZDogZXZlbnRQYXlsb2FkIGFzIEV2ZW50UGF5bG9hZCB9O1xuXG4gICAgLy8gR2l0SHViIEFjdGlvbnMgZG9lcyBub3QgaW5qZWN0IEdJVEhVQl9UT0tFTiBpbnRvIE5vZGUgYWN0aW9uIHN0ZXBzXG4gICAgLy8gYXV0b21hdGljYWxseTsgdGhlIGNhbGxlciBwYXNzZXMgaXQgZXhwbGljaXRseSB2aWEgdGhlIGdpdGh1Yl90b2tlblxuICAgIC8vIGlucHV0ICh0eXBpY2FsbHkgYCR7eyBnaXRodWIudG9rZW4gfX1gKS4gRmFsbCBiYWNrIHRvIHRoZSBlbnYgdmFyIGZvclxuICAgIC8vIGNhbGxlcnMgd2hvIHNldCBpdCBvbiB0aGUgc3RlcCBleHBsaWNpdGx5LlxuICAgIGNvbnN0IGdpdGh1YlRva2VuID1cbiAgICAgIHJhd0lucHV0cy5naXRodWJfdG9rZW4gfHwgcHJvY2Vzcy5lbnYuR0lUSFVCX1RPS0VOIHx8IG51bGw7XG5cbiAgICBjb25zdCBwcmltYXJ5QXV0aCA9IGF3YWl0IHJlc29sdmVBdXRoKHtcbiAgICAgIHByZW1pbnRlZDogcmF3SW5wdXRzLmdpdGh1Yl9hcHBfdG9rZW4gPz8gbnVsbCxcbiAgICAgIGFwcDogY29uZmlnLmdpdGh1YkFwcCxcbiAgICAgIGZhbGxiYWNrVG9rZW46IGdpdGh1YlRva2VuLFxuICAgICAgb3duZXIsXG4gICAgICByZXBvLFxuICAgIH0pO1xuICAgIGlmICghcHJpbWFyeUF1dGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJObyBHaXRIdWIgY3JlZGVudGlhbHMgYXZhaWxhYmxlLiBQcm92aWRlIG9uZSBvZjogZ2l0aHViX2FwcF90b2tlbiAocHJlbWludGVkIGluc3RhbGxhdGlvbiB0b2tlbiksIGdpdGh1Yl9hcHBfY2xpZW50X2lkK2dpdGh1Yl9hcHBfcHJpdmF0ZV9rZXkgKEFwcCBjcmVkZW50aWFscyBmb3IgaW4tcHJvY2VzcyBtaW50aW5nKSwgb3IgZW5zdXJlIEdJVEhVQl9UT0tFTiBpcyBzZXQgb24gdGhlIGpvYi5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmV2aWV3QXV0aCA9IGF3YWl0IHJlc29sdmVBdXRoKHtcbiAgICAgIHByZW1pbnRlZDogcmF3SW5wdXRzLmdpdGh1Yl9hcHBfcmV2aWV3X3Rva2VuID8/IG51bGwsXG4gICAgICBhcHA6IGNvbmZpZy5yZXZpZXdHaXRodWJBcHAsXG4gICAgICBmYWxsYmFja1Rva2VuOiBnaXRodWJUb2tlbixcbiAgICAgIG93bmVyLFxuICAgICAgcmVwbyxcbiAgICB9KTtcblxuICAgIGlmIChwcmltYXJ5QXV0aC5raW5kID09PSBcInRva2VuXCIgJiYgcHJpbWFyeUF1dGguc291cmNlID09PSBcImdpdGh1Yl90b2tlblwiKSB7XG4gICAgICBjb3JlLndhcm5pbmcoXG4gICAgICAgIFwiU2hvcGZsb29yIGlzIHJ1bm5pbmcgd2l0aCB0aGUgd29ya2Zsb3cncyBkZWZhdWx0IEdJVEhVQl9UT0tFTi4gTXV0YXRpb25zIG1hZGUgd2l0aCB0aGlzIHRva2VuIHdpbGwgbm90IHRyaWdnZXIgZG93bnN0cmVhbSB3b3JrZmxvd3MgKGxhYmVsIGZsaXBzLCBQUiBwdXNoZXMsIGFuZCByZXZpZXcgc3VibWlzc2lvbnMgd2lsbCBmYWlsIHRvIGFkdmFuY2UgdGhlIHBpcGVsaW5lKS4gSW5zdGFsbCBhIFNob3BmbG9vciBHaXRIdWIgQXBwIGFuZCBwcm92aWRlIGdpdGh1Yl9hcHBfY2xpZW50X2lkICsgZ2l0aHViX2FwcF9wcml2YXRlX2tleSBmb3IgZnVsbCBmdW5jdGlvbmFsaXR5LlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgdGhlIHJlcG8tbG9jYWwgZ2l0IGlkZW50aXR5IHNvIHRoZSBDbGF1ZGUgaW1wbGVtZW50IGFnZW50XG4gICAgLy8gY2FuIGBnaXQgY29tbWl0YCB3aXRob3V0IGZsYWlsaW5nLiBXaXRob3V0IHRoaXMsIGV2ZXJ5IGltcGxlbWVudCBydW5cbiAgICAvLyBkaWVzIG9uIGBDb21taXR0ZXIgaWRlbnRpdHkgdW5rbm93bmAuIERvbmUgYmVmb3JlIHRoZSBvcmNoZXN0cmF0b3JcbiAgICAvLyBkaXNwYXRjaGVzIHNvIGFsbCBzdGFnZSBhZ2VudHMgaW5oZXJpdCBhIGZ1bGx5IGNvbmZpZ3VyZWQgaWRlbnRpdHkuXG4gICAgY29uc3QgaWRlbnRpdHkgPSBhd2FpdCByZXNvbHZlQm90SWRlbnRpdHkocHJpbWFyeUF1dGgpO1xuICAgIGF3YWl0IGFwcGx5R2l0SWRlbnRpdHkoe1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgaWRlbnRpdHksXG4gICAgICBzc2hTaWduaW5nS2V5OiBjb25maWcuc3NoU2lnbmluZ0tleSxcbiAgICB9KTtcbiAgICBpZiAoXG4gICAgICByZXZpZXdBdXRoICYmXG4gICAgICByZXZpZXdBdXRoLmtpbmQgPT09IFwidG9rZW5cIiAmJlxuICAgICAgcmV2aWV3QXV0aC5zb3VyY2UgPT09IFwiZ2l0aHViX3Rva2VuXCJcbiAgICApIHtcbiAgICAgIGNvcmUud2FybmluZyhcbiAgICAgICAgXCJTaG9wZmxvb3IncyByZXZpZXcgcGF0aCBpcyBydW5uaW5nIHdpdGggdGhlIHdvcmtmbG93J3MgZGVmYXVsdCBHSVRIVUJfVE9LRU4uIFJldmlld3Mgc3VibWl0dGVkIHdpdGggdGhpcyB0b2tlbiBjYW5ub3QgQVBQUk9WRSBvciBSRVFVRVNUX0NIQU5HRVMgb24gYSBQUiBhdXRob3JlZCBieSBnaXRodWItYWN0aW9uc1tib3RdLCBhbmQgYW55IHJlc3VsdGluZyBldmVudHMgd2lsbCBub3QgdHJpZ2dlciBkb3duc3RyZWFtIHdvcmtmbG93cy4gUHJvdmlkZSBhIGRpc3RpbmN0IHJldmlldyBBcHAgdmlhIGdpdGh1Yl9hcHBfcmV2aWV3X2NsaWVudF9pZCArIGdpdGh1Yl9hcHBfcmV2aWV3X3ByaXZhdGVfa2V5LlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5JZCA9IHByb2Nlc3MuZW52LkdJVEhVQl9SVU5fSUQgPz8gYGxvY2FsLSR7RGF0ZS5ub3coKX1gO1xuICAgIGNvbnN0IGF1ZGl0ID1cbiAgICAgIGRlcHMuYXVkaXRTaW5rID8/XG4gICAgICBjb21iaW5lRW1pdHRlcnMoY3JlYXRlQXVkaXRFbWl0dGVyKHsgcnVuSWQgfSksIGNyZWF0ZVN0ZXBTdW1tYXJ5TWlycm9yKCkpO1xuXG4gICAgY29uc3Qgb2N0b2tpdEZhY3RvcnkgPSBkZXBzLm9jdG9raXRGYWN0b3J5ID8/IGRlZmF1bHRPY3Rva2l0RmFjdG9yeTtcbiAgICBjb25zdCBnaXRodWIgPSBuZXcgR2l0SHViQWRhcHRlcihcbiAgICAgIG9jdG9raXRGYWN0b3J5KHByaW1hcnlBdXRoKSxcbiAgICAgIHsgb3duZXIsIHJlcG8gfSxcbiAgICAgIGF1ZGl0LFxuICAgICk7XG4gICAgY29uc3QgcmV2aWV3R2l0aHViID0gcmV2aWV3QXV0aFxuICAgICAgPyBuZXcgR2l0SHViQWRhcHRlcihvY3Rva2l0RmFjdG9yeShyZXZpZXdBdXRoKSwgeyBvd25lciwgcmVwbyB9LCBhdWRpdClcbiAgICAgIDogbnVsbDtcblxuICAgIGNvbnN0IGFnZW50ID0gZGVwcy5hZ2VudEZhY3RvcnlcbiAgICAgID8gZGVwcy5hZ2VudEZhY3RvcnkoKVxuICAgICAgOiBjb25maWcuYWdlbnRQcm92aWRlciA9PT0gXCJjb2RleFwiXG4gICAgICAgID8gbmV3IENvZGV4QWdlbnRBZGFwdGVyKGJ1aWxkQ29kZXhPcHRpb25zKGNvbmZpZykpXG4gICAgICAgIDogbmV3IENsYXVkZUFnZW50QWRhcHRlcihidWlsZEFnZW50RW52RnJvbUNvbmZpZyhjb25maWcpKTtcblxuICAgIGNvbnN0IHJldmlld09ubHkgPSByYXdJbnB1dHMucmV2aWV3X29ubHkgPT09IFwidHJ1ZVwiO1xuXG4gICAgLy8gQmluZCB0aGUgcmVzb2x2ZWQgQXV0aFNwZWMgaW50byBhIHRva2VuIHJlc29sdmVyIGFuZCB0aGUgaW1wbC1zdGFnZSBnaXRcbiAgICAvLyBoZWxwZXJzLiBUaGUgaW1wbGVtZW50IHJ1bm5lciBjYWxscyB0aGVzZSB0byBzZXQgdGhlIGxvY2FsIGJyYW5jaCB1cFxuICAgIC8vIGJlZm9yZSB0aGUgYWdlbnQgcnVucyBhbmQgdG8gcHVzaCB0aGUgYWdlbnQncyBjb21taXRzIGFmdGVyd2FyZHMuIFdlXG4gICAgLy8gYnVpbGQgdGhlIGNsb3N1cmUgb25jZSBhdCBzdGFydHVwIHNvIGVhY2ggaGVscGVyIGludm9jYXRpb24gY2FuIGFza1xuICAgIC8vIGZvciBhIGZyZXNoIGluc3RhbGxhdGlvbiB0b2tlbiAocmVsZXZhbnQgd2hlbiB0aGUgYWdlbnQgcnVuIG91dGxpdmVzXG4gICAgLy8gdGhlIGluc3RhbGxhdGlvbi10b2tlbiBUVEwpLlxuICAgIGNvbnN0IHJlc29sdmVHaXRUb2tlbiA9IHRva2VuUmVzb2x2ZXJGb3IocHJpbWFyeUF1dGgsIG93bmVyLCByZXBvKTtcbiAgICBjb25zdCBnaXRPcHM6IEdpdE9wcyA9IHtcbiAgICAgIGFzeW5jIHByZXBhcmVJbXBsQ2hlY2tvdXQob3B0cykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHJlc29sdmVHaXRUb2tlbigpO1xuICAgICAgICBhd2FpdCBwcmVwYXJlSW1wbENoZWNrb3V0KHtcbiAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgcmVwbyxcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBhc3luYyBwdXNoSW1wbENvbW1pdHMob3B0cykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHJlc29sdmVHaXRUb2tlbigpO1xuICAgICAgICBhd2FpdCBwdXNoSW1wbENvbW1pdHMoe1xuICAgICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICByZXBvLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGFzeW5jIHByZXBhcmVSZXZpZXdCYXNlKG9wdHMpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCByZXNvbHZlR2l0VG9rZW4oKTtcbiAgICAgICAgYXdhaXQgcHJlcGFyZVJldmlld0Jhc2Uoe1xuICAgICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICByZXBvLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuT3JjaGVzdHJhdG9yKHtcbiAgICAgIGV2ZW50LFxuICAgICAgcmVwbzogeyBvd25lciwgbmFtZTogcmVwbyB9LFxuICAgICAgZ2l0aHViLFxuICAgICAgcmV2aWV3R2l0aHViLFxuICAgICAgYWdlbnQsXG4gICAgICBhdWRpdCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJ1bklkLFxuICAgICAgZ2l0T3BzLFxuICAgICAgLi4uKHJldmlld09ubHkgPyB7IHJldmlld09ubHk6IHRydWUgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBjb3JlLnNldE91dHB1dChcInN0YWdlXCIsIHJlc3VsdC5zdGFnZSk7XG4gICAgY29yZS5zZXRPdXRwdXQoXCJleGVjdXRlZFwiLCByZXN1bHQuZXhlY3V0ZWQgPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvcmUuc2V0RmFpbGVkKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSk7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5zdGFjaykgY29yZS5lcnJvcihlcnIuc3RhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRPY3Rva2l0RmFjdG9yeShhdXRoOiBBdXRoU3BlYyk6IE9jdG9raXRMaWtlIHtcbiAgaWYgKGF1dGgua2luZCA9PT0gXCJ0b2tlblwiKSB7XG4gICAgcmV0dXJuIG5ldyBPY3Rva2l0KHsgYXV0aDogYXV0aC50b2tlbiB9KSBhcyB1bmtub3duIGFzIE9jdG9raXRMaWtlO1xuICB9XG4gIC8vIE9jdG9raXQncyBhdXRoLWFwcCBzdHJhdGVneSBjYWNoZXMgdGhlIGluc3RhbGxhdGlvbiB0b2tlbiBpbi1wcm9jZXNzIGFuZFxuICAvLyByZWZyZXNoZXMgaXQgdHJhbnNwYXJlbnRseSBiZWZvcmUgZXhwaXJ5IG9uIGV2ZXJ5IHJlcXVlc3QuIFRoYXQga2VlcHMgdGhlXG4gIC8vIHBpcGVsaW5lIGFsaXZlIHBhc3QgdGhlIDYwLW1pbnV0ZSBpbnN0YWxsYXRpb24tdG9rZW4gVFRMIGV2ZW4gd2hlbiBhblxuICAvLyBpbXBsZW1lbnQgcnVuIHNwYW5zIGhvdXJzLlxuICByZXR1cm4gbmV3IE9jdG9raXQoe1xuICAgIGF1dGhTdHJhdGVneTogY3JlYXRlQXBwQXV0aCxcbiAgICBhdXRoOiB7XG4gICAgICBhcHBJZDogYXV0aC5jbGllbnRJZCxcbiAgICAgIHByaXZhdGVLZXk6IGF1dGgucHJpdmF0ZUtleSxcbiAgICAgIGluc3RhbGxhdGlvbklkOiBhdXRoLmluc3RhbGxhdGlvbklkLFxuICAgIH0sXG4gIH0pIGFzIHVua25vd24gYXMgT2N0b2tpdExpa2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRBY3Rpb25JbnB1dHMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIC8vIFNraXAga2V5cyB3aG9zZSBBY3Rpb24gaW5wdXQgaXMgZW1wdHkgc28gWm9kJ3MgYC5kZWZhdWx0KClgIGNhbiBmaXJlLlxuICAvLyBwYXJzZUNvbmZpZydzIGBjbGVhbmVkYCBtYXAgcHJlc2VydmVzIHdoYXRldmVyIGtleXMgYXJlIHByZXNlbnQsIHNvXG4gIC8vIGVtaXR0aW5nIGBcIlwiYCB3b3VsZCBzdXBwcmVzcyBkZWZhdWx0cyBmb3IgZXZlcnkgb3B0aW9uYWwgaW5wdXQuXG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IGsgb2YgSU5QVVRfS0VZUykge1xuICAgIGNvbnN0IHYgPSBjb3JlLmdldElucHV0KGspO1xuICAgIGlmICh2KSBvdXRba10gPSB2O1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8vIENMSSBlbnRyeSBcdTIwMTQgYXV0by1pbnZva2VkIHdoZW4gdGhpcyBtb2R1bGUgaXMgdGhlIGJ1bmRsZSdzIGVudHJ5IHBvaW50LlxuLy8gVGVzdHMgc2V0IFNIT1BGTE9PUl9JTlZPS0VfRU5UUlk9MCB0byBpbXBvcnQgd2l0aG91dCBmaXJpbmcuXG5pZiAocHJvY2Vzcy5lbnYuU0hPUEZMT09SX0lOVk9LRV9FTlRSWSAhPT0gXCIwXCIpIHtcbiAgcnVuRW50cnkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgY29yZS5zZXRGYWlsZWQoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH0pO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyQWdlbnQoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSBcIm9iamVjdFwiICYmIFwidXNlckFnZW50XCIgaW4gbmF2aWdhdG9yKSB7XG4gICAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gIH1cblxuICBpZiAodHlwZW9mIHByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgcHJvY2Vzcy52ZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYE5vZGUuanMvJHtwcm9jZXNzLnZlcnNpb24uc3Vic3RyKDEpfSAoJHtwcm9jZXNzLnBsYXRmb3JtfTsgJHtcbiAgICAgIHByb2Nlc3MuYXJjaFxuICAgIH0pYDtcbiAgfVxuXG4gIHJldHVybiBcIjxlbnZpcm9ubWVudCB1bmRldGVjdGFibGU+XCI7XG59XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL2RlZmF1bHRzLmpzXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tIFwidW5pdmVyc2FsLXVzZXItYWdlbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCIwLjAuMC1kZXZlbG9wbWVudFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZGVmYXVsdHMuanNcbnZhciB1c2VyQWdlbnQgPSBgb2N0b2tpdC1lbmRwb2ludC5qcy8ke1ZFUlNJT059ICR7Z2V0VXNlckFnZW50KCl9YDtcbnZhciBERUZBVUxUUyA9IHtcbiAgbWV0aG9kOiBcIkdFVFwiLFxuICBiYXNlVXJsOiBcImh0dHBzOi8vYXBpLmdpdGh1Yi5jb21cIixcbiAgaGVhZGVyczoge1xuICAgIGFjY2VwdDogXCJhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb25cIixcbiAgICBcInVzZXItYWdlbnRcIjogdXNlckFnZW50XG4gIH0sXG4gIG1lZGlhVHlwZToge1xuICAgIGZvcm1hdDogXCJcIlxuICB9XG59O1xuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9sb3dlcmNhc2Uta2V5cy5qc1xuZnVuY3Rpb24gbG93ZXJjYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFvYmplY3QpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkucmVkdWNlKChuZXdPYmosIGtleSkgPT4ge1xuICAgIG5ld09ialtrZXkudG9Mb3dlckNhc2UoKV0gPSBvYmplY3Rba2V5XTtcbiAgICByZXR1cm4gbmV3T2JqO1xuICB9LCB7fSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy91dGlsL2lzLXBsYWluLW9iamVjdC5qc1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICE9PSBcIltvYmplY3QgT2JqZWN0XVwiKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgQ3RvciA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgXCJjb25zdHJ1Y3RvclwiKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiYgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwoQ3RvcikgPT09IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsKHZhbHVlKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3V0aWwvbWVyZ2UtZGVlcC5qc1xuZnVuY3Rpb24gbWVyZ2VEZWVwKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3B0aW9uc1trZXldKSkge1xuICAgICAgaWYgKCEoa2V5IGluIGRlZmF1bHRzKSkgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgW2tleV06IG9wdGlvbnNba2V5XSB9KTtcbiAgICAgIGVsc2UgcmVzdWx0W2tleV0gPSBtZXJnZURlZXAoZGVmYXVsdHNba2V5XSwgb3B0aW9uc1trZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgW2tleV06IG9wdGlvbnNba2V5XSB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9yZW1vdmUtdW5kZWZpbmVkLXByb3BlcnRpZXMuanNcbmZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMob2JqKSB7XG4gIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgIGlmIChvYmpba2V5XSA9PT0gdm9pZCAwKSB7XG4gICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9tZXJnZS5qc1xuZnVuY3Rpb24gbWVyZ2UoZGVmYXVsdHMsIHJvdXRlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygcm91dGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsZXQgW21ldGhvZCwgdXJsXSA9IHJvdXRlLnNwbGl0KFwiIFwiKTtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih1cmwgPyB7IG1ldGhvZCwgdXJsIH0gOiB7IHVybDogbWV0aG9kIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCByb3V0ZSk7XG4gIH1cbiAgb3B0aW9ucy5oZWFkZXJzID0gbG93ZXJjYXNlS2V5cyhvcHRpb25zLmhlYWRlcnMpO1xuICByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKG9wdGlvbnMpO1xuICByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKG9wdGlvbnMuaGVhZGVycyk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBtZXJnZURlZXAoZGVmYXVsdHMgfHwge30sIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy51cmwgPT09IFwiL2dyYXBocWxcIikge1xuICAgIGlmIChkZWZhdWx0cyAmJiBkZWZhdWx0cy5tZWRpYVR5cGUucHJldmlld3M/Lmxlbmd0aCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5tZWRpYVR5cGUucHJldmlld3MgPSBkZWZhdWx0cy5tZWRpYVR5cGUucHJldmlld3MuZmlsdGVyKFxuICAgICAgICAocHJldmlldykgPT4gIW1lcmdlZE9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzLmluY2x1ZGVzKHByZXZpZXcpXG4gICAgICApLmNvbmNhdChtZXJnZWRPcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cyk7XG4gICAgfVxuICAgIG1lcmdlZE9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzID0gKG1lcmdlZE9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzIHx8IFtdKS5tYXAoKHByZXZpZXcpID0+IHByZXZpZXcucmVwbGFjZSgvLXByZXZpZXcvLCBcIlwiKSk7XG4gIH1cbiAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy91dGlsL2FkZC1xdWVyeS1wYXJhbWV0ZXJzLmpzXG5mdW5jdGlvbiBhZGRRdWVyeVBhcmFtZXRlcnModXJsLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHNlcGFyYXRvciA9IC9cXD8vLnRlc3QodXJsKSA/IFwiJlwiIDogXCI/XCI7XG4gIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMocGFyYW1ldGVycyk7XG4gIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIHJldHVybiB1cmwgKyBzZXBhcmF0b3IgKyBuYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICBpZiAobmFtZSA9PT0gXCJxXCIpIHtcbiAgICAgIHJldHVybiBcInE9XCIgKyBwYXJhbWV0ZXJzLnEuc3BsaXQoXCIrXCIpLm1hcChlbmNvZGVVUklDb21wb25lbnQpLmpvaW4oXCIrXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7bmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVyc1tuYW1lXSl9YDtcbiAgfSkuam9pbihcIiZcIik7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy91dGlsL2V4dHJhY3QtdXJsLXZhcmlhYmxlLW5hbWVzLmpzXG52YXIgdXJsVmFyaWFibGVSZWdleCA9IC9cXHtbXnt9fV0rXFx9L2c7XG5mdW5jdGlvbiByZW1vdmVOb25DaGFycyh2YXJpYWJsZU5hbWUpIHtcbiAgcmV0dXJuIHZhcmlhYmxlTmFtZS5yZXBsYWNlKC8oPzpeXFxXKyl8KD86KD88IVxcVylcXFcrJCkvZywgXCJcIikuc3BsaXQoLywvKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RVcmxWYXJpYWJsZU5hbWVzKHVybCkge1xuICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHVybFZhcmlhYmxlUmVnZXgpO1xuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXMubWFwKHJlbW92ZU5vbkNoYXJzKS5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy91dGlsL29taXQuanNcbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzVG9PbWl0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgX19wcm90b19fOiBudWxsIH07XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcbiAgICBpZiAoa2V5c1RvT21pdC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC91cmwtdGVtcGxhdGUuanNcbmZ1bmN0aW9uIGVuY29kZVJlc2VydmVkKHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KC8oJVswLTlBLUZhLWZdezJ9KS9nKS5tYXAoZnVuY3Rpb24ocGFydCkge1xuICAgIGlmICghLyVbMC05QS1GYS1mXS8udGVzdChwYXJ0KSkge1xuICAgICAgcGFydCA9IGVuY29kZVVSSShwYXJ0KS5yZXBsYWNlKC8lNUIvZywgXCJbXCIpLnJlcGxhY2UoLyU1RC9nLCBcIl1cIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0O1xuICB9KS5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gZW5jb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpKl0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBcIiVcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUsIGtleSkge1xuICB2YWx1ZSA9IG9wZXJhdG9yID09PSBcIitcIiB8fCBvcGVyYXRvciA9PT0gXCIjXCIgPyBlbmNvZGVSZXNlcnZlZCh2YWx1ZSkgOiBlbmNvZGVVbnJlc2VydmVkKHZhbHVlKTtcbiAgaWYgKGtleSkge1xuICAgIHJldHVybiBlbmNvZGVVbnJlc2VydmVkKGtleSkgKyBcIj1cIiArIHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdm9pZCAwICYmIHZhbHVlICE9PSBudWxsO1xufVxuZnVuY3Rpb24gaXNLZXlPcGVyYXRvcihvcGVyYXRvcikge1xuICByZXR1cm4gb3BlcmF0b3IgPT09IFwiO1wiIHx8IG9wZXJhdG9yID09PSBcIiZcIiB8fCBvcGVyYXRvciA9PT0gXCI/XCI7XG59XG5mdW5jdGlvbiBnZXRWYWx1ZXMoY29udGV4dCwgb3BlcmF0b3IsIGtleSwgbW9kaWZpZXIpIHtcbiAgdmFyIHZhbHVlID0gY29udGV4dFtrZXldLCByZXN1bHQgPSBbXTtcbiAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkgJiYgdmFsdWUgIT09IFwiXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBpZiAobW9kaWZpZXIgJiYgbW9kaWZpZXIgIT09IFwiKlwiKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHBhcnNlSW50KG1vZGlmaWVyLCAxMCkpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZSwgaXNLZXlPcGVyYXRvcihvcGVyYXRvcikgPyBrZXkgOiBcIlwiKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1vZGlmaWVyID09PSBcIipcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZS5maWx0ZXIoaXNEZWZpbmVkKS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlMikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAgIGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZTIsIGlzS2V5T3BlcmF0b3Iob3BlcmF0b3IpID8ga2V5IDogXCJcIilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZVtrXSkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlW2tdLCBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IFtdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZS5maWx0ZXIoaXNEZWZpbmVkKS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlMikge1xuICAgICAgICAgICAgdG1wLnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlMikpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodmFsdWVba10pKSB7XG4gICAgICAgICAgICAgIHRtcC5wdXNoKGVuY29kZVVucmVzZXJ2ZWQoaykpO1xuICAgICAgICAgICAgICB0bXAucHVzaChlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWVba10udG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVVucmVzZXJ2ZWQoa2V5KSArIFwiPVwiICsgdG1wLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0bXAubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godG1wLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAob3BlcmF0b3IgPT09IFwiO1wiKSB7XG4gICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICByZXN1bHQucHVzaChlbmNvZGVVbnJlc2VydmVkKGtleSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwiXCIgJiYgKG9wZXJhdG9yID09PSBcIiZcIiB8fCBvcGVyYXRvciA9PT0gXCI/XCIpKSB7XG4gICAgICByZXN1bHQucHVzaChlbmNvZGVVbnJlc2VydmVkKGtleSkgKyBcIj1cIik7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgcmVzdWx0LnB1c2goXCJcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBwYXJzZVVybCh0ZW1wbGF0ZSkge1xuICByZXR1cm4ge1xuICAgIGV4cGFuZDogZXhwYW5kLmJpbmQobnVsbCwgdGVtcGxhdGUpXG4gIH07XG59XG5mdW5jdGlvbiBleHBhbmQodGVtcGxhdGUsIGNvbnRleHQpIHtcbiAgdmFyIG9wZXJhdG9ycyA9IFtcIitcIiwgXCIjXCIsIFwiLlwiLCBcIi9cIiwgXCI7XCIsIFwiP1wiLCBcIiZcIl07XG4gIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZShcbiAgICAvXFx7KFteXFx7XFx9XSspXFx9fChbXlxce1xcfV0rKS9nLFxuICAgIGZ1bmN0aW9uKF8sIGV4cHJlc3Npb24sIGxpdGVyYWwpIHtcbiAgICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgIGxldCBvcGVyYXRvciA9IFwiXCI7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgICAgICBpZiAob3BlcmF0b3JzLmluZGV4T2YoZXhwcmVzc2lvbi5jaGFyQXQoMCkpICE9PSAtMSkge1xuICAgICAgICAgIG9wZXJhdG9yID0gZXhwcmVzc2lvbi5jaGFyQXQoMCk7XG4gICAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgICAgIGV4cHJlc3Npb24uc3BsaXQoLywvZykuZm9yRWFjaChmdW5jdGlvbih2YXJpYWJsZSkge1xuICAgICAgICAgIHZhciB0bXAgPSAvKFteOlxcKl0qKSg/OjooXFxkKyl8KFxcKikpPy8uZXhlYyh2YXJpYWJsZSk7XG4gICAgICAgICAgdmFsdWVzLnB1c2goZ2V0VmFsdWVzKGNvbnRleHQsIG9wZXJhdG9yLCB0bXBbMV0sIHRtcFsyXSB8fCB0bXBbM10pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcGVyYXRvciAmJiBvcGVyYXRvciAhPT0gXCIrXCIpIHtcbiAgICAgICAgICB2YXIgc2VwYXJhdG9yID0gXCIsXCI7XG4gICAgICAgICAgaWYgKG9wZXJhdG9yID09PSBcIj9cIikge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gXCImXCI7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRvciAhPT0gXCIjXCIpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gKHZhbHVlcy5sZW5ndGggIT09IDAgPyBvcGVyYXRvciA6IFwiXCIpICsgdmFsdWVzLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oXCIsXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5jb2RlUmVzZXJ2ZWQobGl0ZXJhbCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuICBpZiAodGVtcGxhdGUgPT09IFwiL1wiKSB7XG4gICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3BhcnNlLmpzXG5mdW5jdGlvbiBwYXJzZShvcHRpb25zKSB7XG4gIGxldCBtZXRob2QgPSBvcHRpb25zLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICBsZXQgdXJsID0gKG9wdGlvbnMudXJsIHx8IFwiL1wiKS5yZXBsYWNlKC86KFthLXpdXFx3KykvZywgXCJ7JDF9XCIpO1xuICBsZXQgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMuaGVhZGVycyk7XG4gIGxldCBib2R5O1xuICBsZXQgcGFyYW1ldGVycyA9IG9taXQob3B0aW9ucywgW1xuICAgIFwibWV0aG9kXCIsXG4gICAgXCJiYXNlVXJsXCIsXG4gICAgXCJ1cmxcIixcbiAgICBcImhlYWRlcnNcIixcbiAgICBcInJlcXVlc3RcIixcbiAgICBcIm1lZGlhVHlwZVwiXG4gIF0pO1xuICBjb25zdCB1cmxWYXJpYWJsZU5hbWVzID0gZXh0cmFjdFVybFZhcmlhYmxlTmFtZXModXJsKTtcbiAgdXJsID0gcGFyc2VVcmwodXJsKS5leHBhbmQocGFyYW1ldGVycyk7XG4gIGlmICghL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICB1cmwgPSBvcHRpb25zLmJhc2VVcmwgKyB1cmw7XG4gIH1cbiAgY29uc3Qgb21pdHRlZFBhcmFtZXRlcnMgPSBPYmplY3Qua2V5cyhvcHRpb25zKS5maWx0ZXIoKG9wdGlvbikgPT4gdXJsVmFyaWFibGVOYW1lcy5pbmNsdWRlcyhvcHRpb24pKS5jb25jYXQoXCJiYXNlVXJsXCIpO1xuICBjb25zdCByZW1haW5pbmdQYXJhbWV0ZXJzID0gb21pdChwYXJhbWV0ZXJzLCBvbWl0dGVkUGFyYW1ldGVycyk7XG4gIGNvbnN0IGlzQmluYXJ5UmVxdWVzdCA9IC9hcHBsaWNhdGlvblxcL29jdGV0LXN0cmVhbS9pLnRlc3QoaGVhZGVycy5hY2NlcHQpO1xuICBpZiAoIWlzQmluYXJ5UmVxdWVzdCkge1xuICAgIGlmIChvcHRpb25zLm1lZGlhVHlwZS5mb3JtYXQpIHtcbiAgICAgIGhlYWRlcnMuYWNjZXB0ID0gaGVhZGVycy5hY2NlcHQuc3BsaXQoLywvKS5tYXAoXG4gICAgICAgIChmb3JtYXQpID0+IGZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgIC9hcHBsaWNhdGlvblxcL3ZuZChcXC5cXHcrKShcXC52Myk/KFxcLlxcdyspPyhcXCtqc29uKT8kLyxcbiAgICAgICAgICBgYXBwbGljYXRpb24vdm5kJDEkMi4ke29wdGlvbnMubWVkaWFUeXBlLmZvcm1hdH1gXG4gICAgICAgIClcbiAgICAgICkuam9pbihcIixcIik7XG4gICAgfVxuICAgIGlmICh1cmwuZW5kc1dpdGgoXCIvZ3JhcGhxbFwiKSkge1xuICAgICAgaWYgKG9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcHJldmlld3NGcm9tQWNjZXB0SGVhZGVyID0gaGVhZGVycy5hY2NlcHQubWF0Y2goLyg/PCFbXFx3LV0pW1xcdy1dKyg/PS1wcmV2aWV3KS9nKSB8fCBbXTtcbiAgICAgICAgaGVhZGVycy5hY2NlcHQgPSBwcmV2aWV3c0Zyb21BY2NlcHRIZWFkZXIuY29uY2F0KG9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzKS5tYXAoKHByZXZpZXcpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLm1lZGlhVHlwZS5mb3JtYXQgPyBgLiR7b3B0aW9ucy5tZWRpYVR5cGUuZm9ybWF0fWAgOiBcIitqc29uXCI7XG4gICAgICAgICAgcmV0dXJuIGBhcHBsaWNhdGlvbi92bmQuZ2l0aHViLiR7cHJldmlld30tcHJldmlldyR7Zm9ybWF0fWA7XG4gICAgICAgIH0pLmpvaW4oXCIsXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoW1wiR0VUXCIsIFwiSEVBRFwiXS5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgdXJsID0gYWRkUXVlcnlQYXJhbWV0ZXJzKHVybCwgcmVtYWluaW5nUGFyYW1ldGVycyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKFwiZGF0YVwiIGluIHJlbWFpbmluZ1BhcmFtZXRlcnMpIHtcbiAgICAgIGJvZHkgPSByZW1haW5pbmdQYXJhbWV0ZXJzLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhyZW1haW5pbmdQYXJhbWV0ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgYm9keSA9IHJlbWFpbmluZ1BhcmFtZXRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSAmJiB0eXBlb2YgYm9keSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gPSBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLThcIjtcbiAgfVxuICBpZiAoW1wiUEFUQ0hcIiwgXCJQVVRcIl0uaW5jbHVkZXMobWV0aG9kKSAmJiB0eXBlb2YgYm9keSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGJvZHkgPSBcIlwiO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHsgbWV0aG9kLCB1cmwsIGhlYWRlcnMgfSxcbiAgICB0eXBlb2YgYm9keSAhPT0gXCJ1bmRlZmluZWRcIiA/IHsgYm9keSB9IDogbnVsbCxcbiAgICBvcHRpb25zLnJlcXVlc3QgPyB7IHJlcXVlc3Q6IG9wdGlvbnMucmVxdWVzdCB9IDogbnVsbFxuICApO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvZW5kcG9pbnQtd2l0aC1kZWZhdWx0cy5qc1xuZnVuY3Rpb24gZW5kcG9pbnRXaXRoRGVmYXVsdHMoZGVmYXVsdHMsIHJvdXRlLCBvcHRpb25zKSB7XG4gIHJldHVybiBwYXJzZShtZXJnZShkZWZhdWx0cywgcm91dGUsIG9wdGlvbnMpKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3dpdGgtZGVmYXVsdHMuanNcbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhvbGREZWZhdWx0cywgbmV3RGVmYXVsdHMpIHtcbiAgY29uc3QgREVGQVVMVFMyID0gbWVyZ2Uob2xkRGVmYXVsdHMsIG5ld0RlZmF1bHRzKTtcbiAgY29uc3QgZW5kcG9pbnQyID0gZW5kcG9pbnRXaXRoRGVmYXVsdHMuYmluZChudWxsLCBERUZBVUxUUzIpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihlbmRwb2ludDIsIHtcbiAgICBERUZBVUxUUzogREVGQVVMVFMyLFxuICAgIGRlZmF1bHRzOiB3aXRoRGVmYXVsdHMuYmluZChudWxsLCBERUZBVUxUUzIpLFxuICAgIG1lcmdlOiBtZXJnZS5iaW5kKG51bGwsIERFRkFVTFRTMiksXG4gICAgcGFyc2VcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xudmFyIGVuZHBvaW50ID0gd2l0aERlZmF1bHRzKG51bGwsIERFRkFVTFRTKTtcbmV4cG9ydCB7XG4gIGVuZHBvaW50XG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuaW1wb3J0IHsgZW5kcG9pbnQgfSBmcm9tIFwiQG9jdG9raXQvZW5kcG9pbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2RlZmF1bHRzLmpzXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tIFwidW5pdmVyc2FsLXVzZXItYWdlbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCI5LjIuNFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZGVmYXVsdHMuanNcbnZhciBkZWZhdWx0c19kZWZhdWx0ID0ge1xuICBoZWFkZXJzOiB7XG4gICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LXJlcXVlc3QuanMvJHtWRVJTSU9OfSAke2dldFVzZXJBZ2VudCgpfWBcbiAgfVxufTtcblxuLy8gcGtnL2Rpc3Qtc3JjL2ZldGNoLXdyYXBwZXIuanNcbmltcG9ydCB7IHNhZmVQYXJzZSB9IGZyb20gXCJmYXN0LWNvbnRlbnQtdHlwZS1wYXJzZVwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvaXMtcGxhaW4tb2JqZWN0LmpzXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT09IFwiW29iamVjdCBPYmplY3RdXCIpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHJldHVybiB0cnVlO1xuICBjb25zdCBDdG9yID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCBcImNvbnN0cnVjdG9yXCIpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbChDdG9yKSA9PT0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwodmFsdWUpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvZmV0Y2gtd3JhcHBlci5qc1xuaW1wb3J0IHsgUmVxdWVzdEVycm9yIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3QtZXJyb3JcIjtcbmFzeW5jIGZ1bmN0aW9uIGZldGNoV3JhcHBlcihyZXF1ZXN0T3B0aW9ucykge1xuICBjb25zdCBmZXRjaCA9IHJlcXVlc3RPcHRpb25zLnJlcXVlc3Q/LmZldGNoIHx8IGdsb2JhbFRoaXMuZmV0Y2g7XG4gIGlmICghZmV0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcImZldGNoIGlzIG5vdCBzZXQuIFBsZWFzZSBwYXNzIGEgZmV0Y2ggaW1wbGVtZW50YXRpb24gYXMgbmV3IE9jdG9raXQoeyByZXF1ZXN0OiB7IGZldGNoIH19KS4gTGVhcm4gbW9yZSBhdCBodHRwczovL2dpdGh1Yi5jb20vb2N0b2tpdC9vY3Rva2l0LmpzLyNmZXRjaC1taXNzaW5nXCJcbiAgICApO1xuICB9XG4gIGNvbnN0IGxvZyA9IHJlcXVlc3RPcHRpb25zLnJlcXVlc3Q/LmxvZyB8fCBjb25zb2xlO1xuICBjb25zdCBwYXJzZVN1Y2Nlc3NSZXNwb25zZUJvZHkgPSByZXF1ZXN0T3B0aW9ucy5yZXF1ZXN0Py5wYXJzZVN1Y2Nlc3NSZXNwb25zZUJvZHkgIT09IGZhbHNlO1xuICBjb25zdCBib2R5ID0gaXNQbGFpbk9iamVjdChyZXF1ZXN0T3B0aW9ucy5ib2R5KSB8fCBBcnJheS5pc0FycmF5KHJlcXVlc3RPcHRpb25zLmJvZHkpID8gSlNPTi5zdHJpbmdpZnkocmVxdWVzdE9wdGlvbnMuYm9keSkgOiByZXF1ZXN0T3B0aW9ucy5ib2R5O1xuICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhyZXF1ZXN0T3B0aW9ucy5oZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtcbiAgICAgIG5hbWUsXG4gICAgICBTdHJpbmcodmFsdWUpXG4gICAgXSlcbiAgKTtcbiAgbGV0IGZldGNoUmVzcG9uc2U7XG4gIHRyeSB7XG4gICAgZmV0Y2hSZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcXVlc3RPcHRpb25zLnVybCwge1xuICAgICAgbWV0aG9kOiByZXF1ZXN0T3B0aW9ucy5tZXRob2QsXG4gICAgICBib2R5LFxuICAgICAgcmVkaXJlY3Q6IHJlcXVlc3RPcHRpb25zLnJlcXVlc3Q/LnJlZGlyZWN0LFxuICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnMsXG4gICAgICBzaWduYWw6IHJlcXVlc3RPcHRpb25zLnJlcXVlc3Q/LnNpZ25hbCxcbiAgICAgIC8vIGR1cGxleCBtdXN0IGJlIHNldCBpZiByZXF1ZXN0LmJvZHkgaXMgUmVhZGFibGVTdHJlYW0gb3IgQXN5bmMgSXRlcmFibGVzLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tcmVxdWVzdGluaXQtZHVwbGV4LlxuICAgICAgLi4ucmVxdWVzdE9wdGlvbnMuYm9keSAmJiB7IGR1cGxleDogXCJoYWxmXCIgfVxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxldCBtZXNzYWdlID0gXCJVbmtub3duIEVycm9yXCI7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgICAgICBlcnJvci5zdGF0dXMgPSA1MDA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gXCJUeXBlRXJyb3JcIiAmJiBcImNhdXNlXCIgaW4gZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmNhdXNlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBtZXNzYWdlID0gZXJyb3IuY2F1c2UubWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IuY2F1c2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gZXJyb3IuY2F1c2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdEVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihtZXNzYWdlLCA1MDAsIHtcbiAgICAgIHJlcXVlc3Q6IHJlcXVlc3RPcHRpb25zXG4gICAgfSk7XG4gICAgcmVxdWVzdEVycm9yLmNhdXNlID0gZXJyb3I7XG4gICAgdGhyb3cgcmVxdWVzdEVycm9yO1xuICB9XG4gIGNvbnN0IHN0YXR1cyA9IGZldGNoUmVzcG9uc2Uuc3RhdHVzO1xuICBjb25zdCB1cmwgPSBmZXRjaFJlc3BvbnNlLnVybDtcbiAgY29uc3QgcmVzcG9uc2VIZWFkZXJzID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGZldGNoUmVzcG9uc2UuaGVhZGVycykge1xuICAgIHJlc3BvbnNlSGVhZGVyc1trZXldID0gdmFsdWU7XG4gIH1cbiAgY29uc3Qgb2N0b2tpdFJlc3BvbnNlID0ge1xuICAgIHVybCxcbiAgICBzdGF0dXMsXG4gICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgIGRhdGE6IFwiXCJcbiAgfTtcbiAgaWYgKFwiZGVwcmVjYXRpb25cIiBpbiByZXNwb25zZUhlYWRlcnMpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gcmVzcG9uc2VIZWFkZXJzLmxpbmsgJiYgcmVzcG9uc2VIZWFkZXJzLmxpbmsubWF0Y2goLzwoW148Pl0rKT47IHJlbD1cImRlcHJlY2F0aW9uXCIvKTtcbiAgICBjb25zdCBkZXByZWNhdGlvbkxpbmsgPSBtYXRjaGVzICYmIG1hdGNoZXMucG9wKCk7XG4gICAgbG9nLndhcm4oXG4gICAgICBgW0BvY3Rva2l0L3JlcXVlc3RdIFwiJHtyZXF1ZXN0T3B0aW9ucy5tZXRob2R9ICR7cmVxdWVzdE9wdGlvbnMudXJsfVwiIGlzIGRlcHJlY2F0ZWQuIEl0IGlzIHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIG9uICR7cmVzcG9uc2VIZWFkZXJzLnN1bnNldH0ke2RlcHJlY2F0aW9uTGluayA/IGAuIFNlZSAke2RlcHJlY2F0aW9uTGlua31gIDogXCJcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoc3RhdHVzID09PSAyMDQgfHwgc3RhdHVzID09PSAyMDUpIHtcbiAgICByZXR1cm4gb2N0b2tpdFJlc3BvbnNlO1xuICB9XG4gIGlmIChyZXF1ZXN0T3B0aW9ucy5tZXRob2QgPT09IFwiSEVBRFwiKSB7XG4gICAgaWYgKHN0YXR1cyA8IDQwMCkge1xuICAgICAgcmV0dXJuIG9jdG9raXRSZXNwb25zZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihmZXRjaFJlc3BvbnNlLnN0YXR1c1RleHQsIHN0YXR1cywge1xuICAgICAgcmVzcG9uc2U6IG9jdG9raXRSZXNwb25zZSxcbiAgICAgIHJlcXVlc3Q6IHJlcXVlc3RPcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgaWYgKHN0YXR1cyA9PT0gMzA0KSB7XG4gICAgb2N0b2tpdFJlc3BvbnNlLmRhdGEgPSBhd2FpdCBnZXRSZXNwb25zZURhdGEoZmV0Y2hSZXNwb25zZSk7XG4gICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihcIk5vdCBtb2RpZmllZFwiLCBzdGF0dXMsIHtcbiAgICAgIHJlc3BvbnNlOiBvY3Rva2l0UmVzcG9uc2UsXG4gICAgICByZXF1ZXN0OiByZXF1ZXN0T3B0aW9uc1xuICAgIH0pO1xuICB9XG4gIGlmIChzdGF0dXMgPj0gNDAwKSB7XG4gICAgb2N0b2tpdFJlc3BvbnNlLmRhdGEgPSBhd2FpdCBnZXRSZXNwb25zZURhdGEoZmV0Y2hSZXNwb25zZSk7XG4gICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcih0b0Vycm9yTWVzc2FnZShvY3Rva2l0UmVzcG9uc2UuZGF0YSksIHN0YXR1cywge1xuICAgICAgcmVzcG9uc2U6IG9jdG9raXRSZXNwb25zZSxcbiAgICAgIHJlcXVlc3Q6IHJlcXVlc3RPcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgb2N0b2tpdFJlc3BvbnNlLmRhdGEgPSBwYXJzZVN1Y2Nlc3NSZXNwb25zZUJvZHkgPyBhd2FpdCBnZXRSZXNwb25zZURhdGEoZmV0Y2hSZXNwb25zZSkgOiBmZXRjaFJlc3BvbnNlLmJvZHk7XG4gIHJldHVybiBvY3Rva2l0UmVzcG9uc2U7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRSZXNwb25zZURhdGEocmVzcG9uc2UpIHtcbiAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKTtcbiAgaWYgKCFjb250ZW50VHlwZSkge1xuICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkuY2F0Y2goKCkgPT4gXCJcIik7XG4gIH1cbiAgY29uc3QgbWltZXR5cGUgPSBzYWZlUGFyc2UoY29udGVudFR5cGUpO1xuICBpZiAoaXNKU09OUmVzcG9uc2UobWltZXR5cGUpKSB7XG4gICAgbGV0IHRleHQgPSBcIlwiO1xuICAgIHRyeSB7XG4gICAgICB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGV4dCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH0gZWxzZSBpZiAobWltZXR5cGUudHlwZS5zdGFydHNXaXRoKFwidGV4dC9cIikgfHwgbWltZXR5cGUucGFyYW1ldGVycy5jaGFyc2V0Py50b0xvd2VyQ2FzZSgpID09PSBcInV0Zi04XCIpIHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLmNhdGNoKCgpID0+IFwiXCIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLmNhdGNoKCgpID0+IG5ldyBBcnJheUJ1ZmZlcigwKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzSlNPTlJlc3BvbnNlKG1pbWV0eXBlKSB7XG4gIHJldHVybiBtaW1ldHlwZS50eXBlID09PSBcImFwcGxpY2F0aW9uL2pzb25cIiB8fCBtaW1ldHlwZS50eXBlID09PSBcImFwcGxpY2F0aW9uL3NjaW0ranNvblwiO1xufVxuZnVuY3Rpb24gdG9FcnJvck1lc3NhZ2UoZGF0YSkge1xuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIFwiVW5rbm93biBlcnJvclwiO1xuICB9XG4gIGlmIChcIm1lc3NhZ2VcIiBpbiBkYXRhKSB7XG4gICAgY29uc3Qgc3VmZml4ID0gXCJkb2N1bWVudGF0aW9uX3VybFwiIGluIGRhdGEgPyBgIC0gJHtkYXRhLmRvY3VtZW50YXRpb25fdXJsfWAgOiBcIlwiO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEuZXJyb3JzKSA/IGAke2RhdGEubWVzc2FnZX06ICR7ZGF0YS5lcnJvcnMubWFwKCh2KSA9PiBKU09OLnN0cmluZ2lmeSh2KSkuam9pbihcIiwgXCIpfSR7c3VmZml4fWAgOiBgJHtkYXRhLm1lc3NhZ2V9JHtzdWZmaXh9YDtcbiAgfVxuICByZXR1cm4gYFVua25vd24gZXJyb3I6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YDtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3dpdGgtZGVmYXVsdHMuanNcbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhvbGRFbmRwb2ludCwgbmV3RGVmYXVsdHMpIHtcbiAgY29uc3QgZW5kcG9pbnQyID0gb2xkRW5kcG9pbnQuZGVmYXVsdHMobmV3RGVmYXVsdHMpO1xuICBjb25zdCBuZXdBcGkgPSBmdW5jdGlvbihyb3V0ZSwgcGFyYW1ldGVycykge1xuICAgIGNvbnN0IGVuZHBvaW50T3B0aW9ucyA9IGVuZHBvaW50Mi5tZXJnZShyb3V0ZSwgcGFyYW1ldGVycyk7XG4gICAgaWYgKCFlbmRwb2ludE9wdGlvbnMucmVxdWVzdCB8fCAhZW5kcG9pbnRPcHRpb25zLnJlcXVlc3QuaG9vaykge1xuICAgICAgcmV0dXJuIGZldGNoV3JhcHBlcihlbmRwb2ludDIucGFyc2UoZW5kcG9pbnRPcHRpb25zKSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QyID0gKHJvdXRlMiwgcGFyYW1ldGVyczIpID0+IHtcbiAgICAgIHJldHVybiBmZXRjaFdyYXBwZXIoXG4gICAgICAgIGVuZHBvaW50Mi5wYXJzZShlbmRwb2ludDIubWVyZ2Uocm91dGUyLCBwYXJhbWV0ZXJzMikpXG4gICAgICApO1xuICAgIH07XG4gICAgT2JqZWN0LmFzc2lnbihyZXF1ZXN0Miwge1xuICAgICAgZW5kcG9pbnQ6IGVuZHBvaW50MixcbiAgICAgIGRlZmF1bHRzOiB3aXRoRGVmYXVsdHMuYmluZChudWxsLCBlbmRwb2ludDIpXG4gICAgfSk7XG4gICAgcmV0dXJuIGVuZHBvaW50T3B0aW9ucy5yZXF1ZXN0Lmhvb2socmVxdWVzdDIsIGVuZHBvaW50T3B0aW9ucyk7XG4gIH07XG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ld0FwaSwge1xuICAgIGVuZHBvaW50OiBlbmRwb2ludDIsXG4gICAgZGVmYXVsdHM6IHdpdGhEZWZhdWx0cy5iaW5kKG51bGwsIGVuZHBvaW50MilcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xudmFyIHJlcXVlc3QgPSB3aXRoRGVmYXVsdHMoZW5kcG9pbnQsIGRlZmF1bHRzX2RlZmF1bHQpO1xuZXhwb3J0IHtcbiAgcmVxdWVzdFxufTtcbiIsICJjbGFzcyBSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWU7XG4gIC8qKlxuICAgKiBodHRwIHN0YXR1cyBjb2RlXG4gICAqL1xuICBzdGF0dXM7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IG9wdGlvbnMgdGhhdCBsZWFkIHRvIHRoZSBlcnJvci5cbiAgICovXG4gIHJlcXVlc3Q7XG4gIC8qKlxuICAgKiBSZXNwb25zZSBvYmplY3QgaWYgYSByZXNwb25zZSB3YXMgcmVjZWl2ZWRcbiAgICovXG4gIHJlc3BvbnNlO1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBzdGF0dXNDb2RlLCBvcHRpb25zKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJIdHRwRXJyb3JcIjtcbiAgICB0aGlzLnN0YXR1cyA9IE51bWJlci5wYXJzZUludChzdGF0dXNDb2RlKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHRoaXMuc3RhdHVzKSkge1xuICAgICAgdGhpcy5zdGF0dXMgPSAwO1xuICAgIH1cbiAgICBpZiAoXCJyZXNwb25zZVwiIGluIG9wdGlvbnMpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBvcHRpb25zLnJlc3BvbnNlO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0Q29weSA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMucmVxdWVzdCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb24pIHtcbiAgICAgIHJlcXVlc3RDb3B5LmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLnJlcXVlc3QuaGVhZGVycywge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBvcHRpb25zLnJlcXVlc3QuaGVhZGVycy5hdXRob3JpemF0aW9uLnJlcGxhY2UoXG4gICAgICAgICAgLyg/PCEgKSAuKiQvLFxuICAgICAgICAgIFwiIFtSRURBQ1RFRF1cIlxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmVxdWVzdENvcHkudXJsID0gcmVxdWVzdENvcHkudXJsLnJlcGxhY2UoL1xcYmNsaWVudF9zZWNyZXQ9XFx3Ky9nLCBcImNsaWVudF9zZWNyZXQ9W1JFREFDVEVEXVwiKS5yZXBsYWNlKC9cXGJhY2Nlc3NfdG9rZW49XFx3Ky9nLCBcImFjY2Vzc190b2tlbj1bUkVEQUNURURdXCIpO1xuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3RDb3B5O1xuICB9XG59XG5leHBvcnQge1xuICBSZXF1ZXN0RXJyb3Jcbn07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCIwLjAuMC1kZXZlbG9wbWVudFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZ2V0LXdlYi1mbG93LWF1dGhvcml6YXRpb24tdXJsLmpzXG5pbXBvcnQgeyBvYXV0aEF1dGhvcml6YXRpb25VcmwgfSBmcm9tIFwiQG9jdG9raXQvb2F1dGgtYXV0aG9yaXphdGlvbi11cmxcIjtcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbHMuanNcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0LWVycm9yXCI7XG5mdW5jdGlvbiByZXF1ZXN0VG9PQXV0aEJhc2VVcmwocmVxdWVzdCkge1xuICBjb25zdCBlbmRwb2ludERlZmF1bHRzID0gcmVxdWVzdC5lbmRwb2ludC5ERUZBVUxUUztcbiAgcmV0dXJuIC9eaHR0cHM6XFwvXFwvKGFwaVxcLik/Z2l0aHViXFwuY29tJC8udGVzdChlbmRwb2ludERlZmF1bHRzLmJhc2VVcmwpID8gXCJodHRwczovL2dpdGh1Yi5jb21cIiA6IGVuZHBvaW50RGVmYXVsdHMuYmFzZVVybC5yZXBsYWNlKFwiL2FwaS92M1wiLCBcIlwiKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIG9hdXRoUmVxdWVzdChyZXF1ZXN0LCByb3V0ZSwgcGFyYW1ldGVycykge1xuICBjb25zdCB3aXRoT0F1dGhQYXJhbWV0ZXJzID0ge1xuICAgIGJhc2VVcmw6IHJlcXVlc3RUb09BdXRoQmFzZVVybChyZXF1ZXN0KSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBhY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfSxcbiAgICAuLi5wYXJhbWV0ZXJzXG4gIH07XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdChyb3V0ZSwgd2l0aE9BdXRoUGFyYW1ldGVycyk7XG4gIGlmIChcImVycm9yXCIgaW4gcmVzcG9uc2UuZGF0YSkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihcbiAgICAgIGAke3Jlc3BvbnNlLmRhdGEuZXJyb3JfZGVzY3JpcHRpb259ICgke3Jlc3BvbnNlLmRhdGEuZXJyb3J9LCAke3Jlc3BvbnNlLmRhdGEuZXJyb3JfdXJpfSlgLFxuICAgICAgNDAwLFxuICAgICAge1xuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LmVuZHBvaW50Lm1lcmdlKFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIHdpdGhPQXV0aFBhcmFtZXRlcnNcbiAgICAgICAgKVxuICAgICAgfVxuICAgICk7XG4gICAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9nZXQtd2ViLWZsb3ctYXV0aG9yaXphdGlvbi11cmwuanNcbmZ1bmN0aW9uIGdldFdlYkZsb3dBdXRob3JpemF0aW9uVXJsKHtcbiAgcmVxdWVzdCA9IGRlZmF1bHRSZXF1ZXN0LFxuICAuLi5vcHRpb25zXG59KSB7XG4gIGNvbnN0IGJhc2VVcmwgPSByZXF1ZXN0VG9PQXV0aEJhc2VVcmwocmVxdWVzdCk7XG4gIHJldHVybiBvYXV0aEF1dGhvcml6YXRpb25Vcmwoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgYmFzZVVybFxuICB9KTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2V4Y2hhbmdlLXdlYi1mbG93LWNvZGUuanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3QyIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmFzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdlV2ViRmxvd0NvZGUob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0MjtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvYXV0aFJlcXVlc3QoXG4gICAgcmVxdWVzdCxcbiAgICBcIlBPU1QgL2xvZ2luL29hdXRoL2FjY2Vzc190b2tlblwiLFxuICAgIHtcbiAgICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICAgIGNsaWVudF9zZWNyZXQ6IG9wdGlvbnMuY2xpZW50U2VjcmV0LFxuICAgICAgY29kZTogb3B0aW9ucy5jb2RlLFxuICAgICAgcmVkaXJlY3RfdXJpOiBvcHRpb25zLnJlZGlyZWN0VXJsXG4gICAgfVxuICApO1xuICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICBjbGllbnRUeXBlOiBvcHRpb25zLmNsaWVudFR5cGUsXG4gICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgY2xpZW50U2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgc2NvcGVzOiByZXNwb25zZS5kYXRhLnNjb3BlLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIH07XG4gIGlmIChvcHRpb25zLmNsaWVudFR5cGUgPT09IFwiZ2l0aHViLWFwcFwiKSB7XG4gICAgaWYgKFwicmVmcmVzaF90b2tlblwiIGluIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgIGNvbnN0IGFwaVRpbWVJbk1zID0gbmV3IERhdGUocmVzcG9uc2UuaGVhZGVycy5kYXRlKS5nZXRUaW1lKCk7XG4gICAgICBhdXRoZW50aWNhdGlvbi5yZWZyZXNoVG9rZW4gPSByZXNwb25zZS5kYXRhLnJlZnJlc2hfdG9rZW4sIGF1dGhlbnRpY2F0aW9uLmV4cGlyZXNBdCA9IHRvVGltZXN0YW1wKFxuICAgICAgICBhcGlUaW1lSW5NcyxcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5leHBpcmVzX2luXG4gICAgICApLCBhdXRoZW50aWNhdGlvbi5yZWZyZXNoVG9rZW5FeHBpcmVzQXQgPSB0b1RpbWVzdGFtcChcbiAgICAgICAgYXBpVGltZUluTXMsXG4gICAgICAgIHJlc3BvbnNlLmRhdGEucmVmcmVzaF90b2tlbl9leHBpcmVzX2luXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgYXV0aGVudGljYXRpb24uc2NvcGVzO1xuICB9XG4gIHJldHVybiB7IC4uLnJlc3BvbnNlLCBhdXRoZW50aWNhdGlvbiB9O1xufVxuZnVuY3Rpb24gdG9UaW1lc3RhbXAoYXBpVGltZUluTXMsIGV4cGlyYXRpb25JblNlY29uZHMpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKGFwaVRpbWVJbk1zICsgZXhwaXJhdGlvbkluU2Vjb25kcyAqIDFlMykudG9JU09TdHJpbmcoKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2NyZWF0ZS1kZXZpY2UtY29kZS5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDMgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGV2aWNlQ29kZShvcHRpb25zKSB7XG4gIGNvbnN0IHJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3QgfHwgZGVmYXVsdFJlcXVlc3QzO1xuICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZFxuICB9O1xuICBpZiAoXCJzY29wZXNcIiBpbiBvcHRpb25zICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucy5zY29wZXMpKSB7XG4gICAgcGFyYW1ldGVycy5zY29wZSA9IG9wdGlvbnMuc2NvcGVzLmpvaW4oXCIgXCIpO1xuICB9XG4gIHJldHVybiBvYXV0aFJlcXVlc3QocmVxdWVzdCwgXCJQT1NUIC9sb2dpbi9kZXZpY2UvY29kZVwiLCBwYXJhbWV0ZXJzKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2V4Y2hhbmdlLWRldmljZS1jb2RlLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0NCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiBleGNoYW5nZURldmljZUNvZGUob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0NDtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvYXV0aFJlcXVlc3QoXG4gICAgcmVxdWVzdCxcbiAgICBcIlBPU1QgL2xvZ2luL29hdXRoL2FjY2Vzc190b2tlblwiLFxuICAgIHtcbiAgICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICAgIGRldmljZV9jb2RlOiBvcHRpb25zLmNvZGUsXG4gICAgICBncmFudF90eXBlOiBcInVybjppZXRmOnBhcmFtczpvYXV0aDpncmFudC10eXBlOmRldmljZV9jb2RlXCJcbiAgICB9XG4gICk7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0ge1xuICAgIGNsaWVudFR5cGU6IG9wdGlvbnMuY2xpZW50VHlwZSxcbiAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgc2NvcGVzOiByZXNwb25zZS5kYXRhLnNjb3BlLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIH07XG4gIGlmIChcImNsaWVudFNlY3JldFwiIGluIG9wdGlvbnMpIHtcbiAgICBhdXRoZW50aWNhdGlvbi5jbGllbnRTZWNyZXQgPSBvcHRpb25zLmNsaWVudFNlY3JldDtcbiAgfVxuICBpZiAob3B0aW9ucy5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIikge1xuICAgIGlmIChcInJlZnJlc2hfdG9rZW5cIiBpbiByZXNwb25zZS5kYXRhKSB7XG4gICAgICBjb25zdCBhcGlUaW1lSW5NcyA9IG5ldyBEYXRlKHJlc3BvbnNlLmhlYWRlcnMuZGF0ZSkuZ2V0VGltZSgpO1xuICAgICAgYXV0aGVudGljYXRpb24ucmVmcmVzaFRva2VuID0gcmVzcG9uc2UuZGF0YS5yZWZyZXNoX3Rva2VuLCBhdXRoZW50aWNhdGlvbi5leHBpcmVzQXQgPSB0b1RpbWVzdGFtcDIoXG4gICAgICAgIGFwaVRpbWVJbk1zLFxuICAgICAgICByZXNwb25zZS5kYXRhLmV4cGlyZXNfaW5cbiAgICAgICksIGF1dGhlbnRpY2F0aW9uLnJlZnJlc2hUb2tlbkV4cGlyZXNBdCA9IHRvVGltZXN0YW1wMihcbiAgICAgICAgYXBpVGltZUluTXMsXG4gICAgICAgIHJlc3BvbnNlLmRhdGEucmVmcmVzaF90b2tlbl9leHBpcmVzX2luXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgYXV0aGVudGljYXRpb24uc2NvcGVzO1xuICB9XG4gIHJldHVybiB7IC4uLnJlc3BvbnNlLCBhdXRoZW50aWNhdGlvbiB9O1xufVxuZnVuY3Rpb24gdG9UaW1lc3RhbXAyKGFwaVRpbWVJbk1zLCBleHBpcmF0aW9uSW5TZWNvbmRzKSB7XG4gIHJldHVybiBuZXcgRGF0ZShhcGlUaW1lSW5NcyArIGV4cGlyYXRpb25JblNlY29uZHMgKiAxZTMpLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9jaGVjay10b2tlbi5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDUgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tUb2tlbihvcHRpb25zKSB7XG4gIGNvbnN0IHJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3QgfHwgZGVmYXVsdFJlcXVlc3Q1O1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoXCJQT1NUIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW5cIiwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIGF1dGhvcml6YXRpb246IGBiYXNpYyAke2J0b2EoXG4gICAgICAgIGAke29wdGlvbnMuY2xpZW50SWR9OiR7b3B0aW9ucy5jbGllbnRTZWNyZXR9YFxuICAgICAgKX1gXG4gICAgfSxcbiAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgYWNjZXNzX3Rva2VuOiBvcHRpb25zLnRva2VuXG4gIH0pO1xuICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICBjbGllbnRUeXBlOiBvcHRpb25zLmNsaWVudFR5cGUsXG4gICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgY2xpZW50U2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICB0b2tlbjogb3B0aW9ucy50b2tlbixcbiAgICBzY29wZXM6IHJlc3BvbnNlLmRhdGEuc2NvcGVzXG4gIH07XG4gIGlmIChyZXNwb25zZS5kYXRhLmV4cGlyZXNfYXQpXG4gICAgYXV0aGVudGljYXRpb24uZXhwaXJlc0F0ID0gcmVzcG9uc2UuZGF0YS5leHBpcmVzX2F0O1xuICBpZiAob3B0aW9ucy5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIikge1xuICAgIGRlbGV0ZSBhdXRoZW50aWNhdGlvbi5zY29wZXM7XG4gIH1cbiAgcmV0dXJuIHsgLi4ucmVzcG9uc2UsIGF1dGhlbnRpY2F0aW9uIH07XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9yZWZyZXNoLXRva2VuLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0NiB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiByZWZyZXNoVG9rZW4ob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0NjtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvYXV0aFJlcXVlc3QoXG4gICAgcmVxdWVzdCxcbiAgICBcIlBPU1QgL2xvZ2luL29hdXRoL2FjY2Vzc190b2tlblwiLFxuICAgIHtcbiAgICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICAgIGNsaWVudF9zZWNyZXQ6IG9wdGlvbnMuY2xpZW50U2VjcmV0LFxuICAgICAgZ3JhbnRfdHlwZTogXCJyZWZyZXNoX3Rva2VuXCIsXG4gICAgICByZWZyZXNoX3Rva2VuOiBvcHRpb25zLnJlZnJlc2hUb2tlblxuICAgIH1cbiAgKTtcbiAgY29uc3QgYXBpVGltZUluTXMgPSBuZXcgRGF0ZShyZXNwb25zZS5oZWFkZXJzLmRhdGUpLmdldFRpbWUoKTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSB7XG4gICAgY2xpZW50VHlwZTogXCJnaXRodWItYXBwXCIsXG4gICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgY2xpZW50U2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaFRva2VuOiByZXNwb25zZS5kYXRhLnJlZnJlc2hfdG9rZW4sXG4gICAgZXhwaXJlc0F0OiB0b1RpbWVzdGFtcDMoYXBpVGltZUluTXMsIHJlc3BvbnNlLmRhdGEuZXhwaXJlc19pbiksXG4gICAgcmVmcmVzaFRva2VuRXhwaXJlc0F0OiB0b1RpbWVzdGFtcDMoXG4gICAgICBhcGlUaW1lSW5NcyxcbiAgICAgIHJlc3BvbnNlLmRhdGEucmVmcmVzaF90b2tlbl9leHBpcmVzX2luXG4gICAgKVxuICB9O1xuICByZXR1cm4geyAuLi5yZXNwb25zZSwgYXV0aGVudGljYXRpb24gfTtcbn1cbmZ1bmN0aW9uIHRvVGltZXN0YW1wMyhhcGlUaW1lSW5NcywgZXhwaXJhdGlvbkluU2Vjb25kcykge1xuICByZXR1cm4gbmV3IERhdGUoYXBpVGltZUluTXMgKyBleHBpcmF0aW9uSW5TZWNvbmRzICogMWUzKS50b0lTT1N0cmluZygpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvc2NvcGUtdG9rZW4uanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3Q3IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmFzeW5jIGZ1bmN0aW9uIHNjb3BlVG9rZW4ob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcmVxdWVzdDogb3B0aW9uc1JlcXVlc3QsXG4gICAgY2xpZW50VHlwZSxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnRTZWNyZXQsXG4gICAgdG9rZW4sXG4gICAgLi4ucmVxdWVzdE9wdGlvbnNcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3QgfHwgZGVmYXVsdFJlcXVlc3Q3O1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoXG4gICAgXCJQT1NUIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW4vc2NvcGVkXCIsXG4gICAge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHtidG9hKGAke2NsaWVudElkfToke2NsaWVudFNlY3JldH1gKX1gXG4gICAgICB9LFxuICAgICAgY2xpZW50X2lkOiBjbGllbnRJZCxcbiAgICAgIGFjY2Vzc190b2tlbjogdG9rZW4sXG4gICAgICAuLi5yZXF1ZXN0T3B0aW9uc1xuICAgIH1cbiAgKTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIGNsaWVudFR5cGUsXG4gICAgICBjbGllbnRJZCxcbiAgICAgIGNsaWVudFNlY3JldCxcbiAgICAgIHRva2VuOiByZXNwb25zZS5kYXRhLnRva2VuXG4gICAgfSxcbiAgICByZXNwb25zZS5kYXRhLmV4cGlyZXNfYXQgPyB7IGV4cGlyZXNBdDogcmVzcG9uc2UuZGF0YS5leHBpcmVzX2F0IH0gOiB7fVxuICApO1xuICByZXR1cm4geyAuLi5yZXNwb25zZSwgYXV0aGVudGljYXRpb24gfTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3Jlc2V0LXRva2VuLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0OCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiByZXNldFRva2VuKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdDg7XG4gIGNvbnN0IGF1dGggPSBidG9hKGAke29wdGlvbnMuY2xpZW50SWR9OiR7b3B0aW9ucy5jbGllbnRTZWNyZXR9YCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdChcbiAgICBcIlBBVENIIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW5cIixcbiAgICB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIGF1dGhvcml6YXRpb246IGBiYXNpYyAke2F1dGh9YFxuICAgICAgfSxcbiAgICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICAgIGFjY2Vzc190b2tlbjogb3B0aW9ucy50b2tlblxuICAgIH1cbiAgKTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSB7XG4gICAgY2xpZW50VHlwZTogb3B0aW9ucy5jbGllbnRUeXBlLFxuICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldDogb3B0aW9ucy5jbGllbnRTZWNyZXQsXG4gICAgdG9rZW46IHJlc3BvbnNlLmRhdGEudG9rZW4sXG4gICAgc2NvcGVzOiByZXNwb25zZS5kYXRhLnNjb3Blc1xuICB9O1xuICBpZiAocmVzcG9uc2UuZGF0YS5leHBpcmVzX2F0KVxuICAgIGF1dGhlbnRpY2F0aW9uLmV4cGlyZXNBdCA9IHJlc3BvbnNlLmRhdGEuZXhwaXJlc19hdDtcbiAgaWYgKG9wdGlvbnMuY2xpZW50VHlwZSA9PT0gXCJnaXRodWItYXBwXCIpIHtcbiAgICBkZWxldGUgYXV0aGVudGljYXRpb24uc2NvcGVzO1xuICB9XG4gIHJldHVybiB7IC4uLnJlc3BvbnNlLCBhdXRoZW50aWNhdGlvbiB9O1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvZGVsZXRlLXRva2VuLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0OSB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiBkZWxldGVUb2tlbihvcHRpb25zKSB7XG4gIGNvbnN0IHJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3QgfHwgZGVmYXVsdFJlcXVlc3Q5O1xuICBjb25zdCBhdXRoID0gYnRvYShgJHtvcHRpb25zLmNsaWVudElkfToke29wdGlvbnMuY2xpZW50U2VjcmV0fWApO1xuICByZXR1cm4gcmVxdWVzdChcbiAgICBcIkRFTEVURSAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuXCIsXG4gICAge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHthdXRofWBcbiAgICAgIH0sXG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBhY2Nlc3NfdG9rZW46IG9wdGlvbnMudG9rZW5cbiAgICB9XG4gICk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9kZWxldGUtYXV0aG9yaXphdGlvbi5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDEwIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUF1dGhvcml6YXRpb24ob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0MTA7XG4gIGNvbnN0IGF1dGggPSBidG9hKGAke29wdGlvbnMuY2xpZW50SWR9OiR7b3B0aW9ucy5jbGllbnRTZWNyZXR9YCk7XG4gIHJldHVybiByZXF1ZXN0KFxuICAgIFwiREVMRVRFIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vZ3JhbnRcIixcbiAgICB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIGF1dGhvcml6YXRpb246IGBiYXNpYyAke2F1dGh9YFxuICAgICAgfSxcbiAgICAgIGNsaWVudF9pZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICAgIGFjY2Vzc190b2tlbjogb3B0aW9ucy50b2tlblxuICAgIH1cbiAgKTtcbn1cbmV4cG9ydCB7XG4gIFZFUlNJT04sXG4gIGNoZWNrVG9rZW4sXG4gIGNyZWF0ZURldmljZUNvZGUsXG4gIGRlbGV0ZUF1dGhvcml6YXRpb24sXG4gIGRlbGV0ZVRva2VuLFxuICBleGNoYW5nZURldmljZUNvZGUsXG4gIGV4Y2hhbmdlV2ViRmxvd0NvZGUsXG4gIGdldFdlYkZsb3dBdXRob3JpemF0aW9uVXJsLFxuICByZWZyZXNoVG9rZW4sXG4gIHJlc2V0VG9rZW4sXG4gIHNjb3BlVG9rZW5cbn07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tIFwidW5pdmVyc2FsLXVzZXItYWdlbnRcIjtcbmltcG9ydCB7IHJlcXVlc3QgYXMgb2N0b2tpdFJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZ2V0LW9hdXRoLWFjY2Vzcy10b2tlbi5qc1xuaW1wb3J0IHsgY3JlYXRlRGV2aWNlQ29kZSwgZXhjaGFuZ2VEZXZpY2VDb2RlIH0gZnJvbSBcIkBvY3Rva2l0L29hdXRoLW1ldGhvZHNcIjtcbmFzeW5jIGZ1bmN0aW9uIGdldE9BdXRoQWNjZXNzVG9rZW4oc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgY2FjaGVkQXV0aGVudGljYXRpb24gPSBnZXRDYWNoZWRBdXRoZW50aWNhdGlvbihzdGF0ZSwgb3B0aW9ucy5hdXRoKTtcbiAgaWYgKGNhY2hlZEF1dGhlbnRpY2F0aW9uKSByZXR1cm4gY2FjaGVkQXV0aGVudGljYXRpb247XG4gIGNvbnN0IHsgZGF0YTogdmVyaWZpY2F0aW9uIH0gPSBhd2FpdCBjcmVhdGVEZXZpY2VDb2RlKHtcbiAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICByZXF1ZXN0OiBvcHRpb25zLnJlcXVlc3QgfHwgc3RhdGUucmVxdWVzdCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBleHRyYSBjb2RlIHRvIG1ha2UgVFMgaGFwcHkgaXMgbm90IHdvcnRoIGl0XG4gICAgc2NvcGVzOiBvcHRpb25zLmF1dGguc2NvcGVzIHx8IHN0YXRlLnNjb3Blc1xuICB9KTtcbiAgYXdhaXQgc3RhdGUub25WZXJpZmljYXRpb24odmVyaWZpY2F0aW9uKTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSBhd2FpdCB3YWl0Rm9yQWNjZXNzVG9rZW4oXG4gICAgb3B0aW9ucy5yZXF1ZXN0IHx8IHN0YXRlLnJlcXVlc3QsXG4gICAgc3RhdGUuY2xpZW50SWQsXG4gICAgc3RhdGUuY2xpZW50VHlwZSxcbiAgICB2ZXJpZmljYXRpb25cbiAgKTtcbiAgc3RhdGUuYXV0aGVudGljYXRpb24gPSBhdXRoZW50aWNhdGlvbjtcbiAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uO1xufVxuZnVuY3Rpb24gZ2V0Q2FjaGVkQXV0aGVudGljYXRpb24oc3RhdGUsIGF1dGgyKSB7XG4gIGlmIChhdXRoMi5yZWZyZXNoID09PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gIGlmICghc3RhdGUuYXV0aGVudGljYXRpb24pIHJldHVybiBmYWxzZTtcbiAgaWYgKHN0YXRlLmNsaWVudFR5cGUgPT09IFwiZ2l0aHViLWFwcFwiKSB7XG4gICAgcmV0dXJuIHN0YXRlLmF1dGhlbnRpY2F0aW9uO1xuICB9XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gc3RhdGUuYXV0aGVudGljYXRpb247XG4gIGNvbnN0IG5ld1Njb3BlID0gKFwic2NvcGVzXCIgaW4gYXV0aDIgJiYgYXV0aDIuc2NvcGVzIHx8IHN0YXRlLnNjb3Blcykuam9pbihcbiAgICBcIiBcIlxuICApO1xuICBjb25zdCBjdXJyZW50U2NvcGUgPSBhdXRoZW50aWNhdGlvbi5zY29wZXMuam9pbihcIiBcIik7XG4gIHJldHVybiBuZXdTY29wZSA9PT0gY3VycmVudFNjb3BlID8gYXV0aGVudGljYXRpb24gOiBmYWxzZTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHdhaXQoc2Vjb25kcykge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMWUzKSk7XG59XG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yQWNjZXNzVG9rZW4ocmVxdWVzdCwgY2xpZW50SWQsIGNsaWVudFR5cGUsIHZlcmlmaWNhdGlvbikge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBjbGllbnRJZCxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBjb2RlOiB2ZXJpZmljYXRpb24uZGV2aWNlX2NvZGVcbiAgICB9O1xuICAgIGNvbnN0IHsgYXV0aGVudGljYXRpb24gfSA9IGNsaWVudFR5cGUgPT09IFwib2F1dGgtYXBwXCIgPyBhd2FpdCBleGNoYW5nZURldmljZUNvZGUoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNsaWVudFR5cGU6IFwib2F1dGgtYXBwXCJcbiAgICB9KSA6IGF3YWl0IGV4Y2hhbmdlRGV2aWNlQ29kZSh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2xpZW50VHlwZTogXCJnaXRodWItYXBwXCJcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0b2tlblwiLFxuICAgICAgdG9rZW5UeXBlOiBcIm9hdXRoXCIsXG4gICAgICAuLi5hdXRoZW50aWNhdGlvblxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFlcnJvci5yZXNwb25zZSkgdGhyb3cgZXJyb3I7XG4gICAgY29uc3QgZXJyb3JUeXBlID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcjtcbiAgICBpZiAoZXJyb3JUeXBlID09PSBcImF1dGhvcml6YXRpb25fcGVuZGluZ1wiKSB7XG4gICAgICBhd2FpdCB3YWl0KHZlcmlmaWNhdGlvbi5pbnRlcnZhbCk7XG4gICAgICByZXR1cm4gd2FpdEZvckFjY2Vzc1Rva2VuKHJlcXVlc3QsIGNsaWVudElkLCBjbGllbnRUeXBlLCB2ZXJpZmljYXRpb24pO1xuICAgIH1cbiAgICBpZiAoZXJyb3JUeXBlID09PSBcInNsb3dfZG93blwiKSB7XG4gICAgICBhd2FpdCB3YWl0KHZlcmlmaWNhdGlvbi5pbnRlcnZhbCArIDcpO1xuICAgICAgcmV0dXJuIHdhaXRGb3JBY2Nlc3NUb2tlbihyZXF1ZXN0LCBjbGllbnRJZCwgY2xpZW50VHlwZSwgdmVyaWZpY2F0aW9uKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2F1dGguanNcbmFzeW5jIGZ1bmN0aW9uIGF1dGgoc3RhdGUsIGF1dGhPcHRpb25zKSB7XG4gIHJldHVybiBnZXRPQXV0aEFjY2Vzc1Rva2VuKHN0YXRlLCB7XG4gICAgYXV0aDogYXV0aE9wdGlvbnNcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9ob29rLmpzXG5hc3luYyBmdW5jdGlvbiBob29rKHN0YXRlLCByZXF1ZXN0LCByb3V0ZSwgcGFyYW1ldGVycykge1xuICBsZXQgZW5kcG9pbnQgPSByZXF1ZXN0LmVuZHBvaW50Lm1lcmdlKFxuICAgIHJvdXRlLFxuICAgIHBhcmFtZXRlcnNcbiAgKTtcbiAgaWYgKC9cXC9sb2dpblxcLyhvYXV0aFxcL2FjY2Vzc190b2tlbnxkZXZpY2VcXC9jb2RlKSQvLnRlc3QoZW5kcG9pbnQudXJsKSkge1xuICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgfVxuICBjb25zdCB7IHRva2VuIH0gPSBhd2FpdCBnZXRPQXV0aEFjY2Vzc1Rva2VuKHN0YXRlLCB7XG4gICAgcmVxdWVzdCxcbiAgICBhdXRoOiB7IHR5cGU6IFwib2F1dGhcIiB9XG4gIH0pO1xuICBlbmRwb2ludC5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBgdG9rZW4gJHt0b2tlbn1gO1xuICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiMC4wLjAtZGV2ZWxvcG1lbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5mdW5jdGlvbiBjcmVhdGVPQXV0aERldmljZUF1dGgob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0V2l0aERlZmF1bHRzID0gb3B0aW9ucy5yZXF1ZXN0IHx8IG9jdG9raXRSZXF1ZXN0LmRlZmF1bHRzKHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcInVzZXItYWdlbnRcIjogYG9jdG9raXQtYXV0aC1vYXV0aC1kZXZpY2UuanMvJHtWRVJTSU9OfSAke2dldFVzZXJBZ2VudCgpfWBcbiAgICB9XG4gIH0pO1xuICBjb25zdCB7IHJlcXVlc3QgPSByZXF1ZXN0V2l0aERlZmF1bHRzLCAuLi5vdGhlck9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXRlID0gb3B0aW9ucy5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIiA/IHtcbiAgICAuLi5vdGhlck9wdGlvbnMsXG4gICAgY2xpZW50VHlwZTogXCJnaXRodWItYXBwXCIsXG4gICAgcmVxdWVzdFxuICB9IDoge1xuICAgIC4uLm90aGVyT3B0aW9ucyxcbiAgICBjbGllbnRUeXBlOiBcIm9hdXRoLWFwcFwiLFxuICAgIHJlcXVlc3QsXG4gICAgc2NvcGVzOiBvcHRpb25zLnNjb3BlcyB8fCBbXVxuICB9O1xuICBpZiAoIW9wdGlvbnMuY2xpZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnW0BvY3Rva2l0L2F1dGgtb2F1dGgtZGV2aWNlXSBcImNsaWVudElkXCIgb3B0aW9uIG11c3QgYmUgc2V0IChodHRwczovL2dpdGh1Yi5jb20vb2N0b2tpdC9hdXRoLW9hdXRoLWRldmljZS5qcyN1c2FnZSknXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub25WZXJpZmljYXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnW0BvY3Rva2l0L2F1dGgtb2F1dGgtZGV2aWNlXSBcIm9uVmVyaWZpY2F0aW9uXCIgb3B0aW9uIG11c3QgYmUgYSBmdW5jdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL29jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2UuanMjdXNhZ2UpJ1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aC5iaW5kKG51bGwsIHN0YXRlKSwge1xuICAgIGhvb2s6IGhvb2suYmluZChudWxsLCBzdGF0ZSlcbiAgfSk7XG59XG5leHBvcnQge1xuICBjcmVhdGVPQXV0aERldmljZUF1dGhcbn07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tIFwidW5pdmVyc2FsLXVzZXItYWdlbnRcIjtcbmltcG9ydCB7IHJlcXVlc3QgYXMgb2N0b2tpdFJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvdmVyc2lvbi5qc1xudmFyIFZFUlNJT04gPSBcIjAuMC4wLWRldmVsb3BtZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9nZXQtYXV0aGVudGljYXRpb24uanNcbmltcG9ydCB7IGNyZWF0ZU9BdXRoRGV2aWNlQXV0aCB9IGZyb20gXCJAb2N0b2tpdC9hdXRoLW9hdXRoLWRldmljZVwiO1xuaW1wb3J0IHsgZXhjaGFuZ2VXZWJGbG93Q29kZSB9IGZyb20gXCJAb2N0b2tpdC9vYXV0aC1tZXRob2RzXCI7XG5hc3luYyBmdW5jdGlvbiBnZXRBdXRoZW50aWNhdGlvbihzdGF0ZSkge1xuICBpZiAoXCJjb2RlXCIgaW4gc3RhdGUuc3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gYXdhaXQgZXhjaGFuZ2VXZWJGbG93Q29kZSh7XG4gICAgICBjbGllbnRJZDogc3RhdGUuY2xpZW50SWQsXG4gICAgICBjbGllbnRTZWNyZXQ6IHN0YXRlLmNsaWVudFNlY3JldCxcbiAgICAgIGNsaWVudFR5cGU6IHN0YXRlLmNsaWVudFR5cGUsXG4gICAgICBvblRva2VuQ3JlYXRlZDogc3RhdGUub25Ub2tlbkNyZWF0ZWQsXG4gICAgICAuLi5zdGF0ZS5zdHJhdGVneU9wdGlvbnMsXG4gICAgICByZXF1ZXN0OiBzdGF0ZS5yZXF1ZXN0XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgIHRva2VuVHlwZTogXCJvYXV0aFwiLFxuICAgICAgLi4uYXV0aGVudGljYXRpb25cbiAgICB9O1xuICB9XG4gIGlmIChcIm9uVmVyaWZpY2F0aW9uXCIgaW4gc3RhdGUuc3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgY29uc3QgZGV2aWNlQXV0aCA9IGNyZWF0ZU9BdXRoRGV2aWNlQXV0aCh7XG4gICAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgb25Ub2tlbkNyZWF0ZWQ6IHN0YXRlLm9uVG9rZW5DcmVhdGVkLFxuICAgICAgLi4uc3RhdGUuc3RyYXRlZ3lPcHRpb25zLFxuICAgICAgcmVxdWVzdDogc3RhdGUucmVxdWVzdFxuICAgIH0pO1xuICAgIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gYXdhaXQgZGV2aWNlQXV0aCh7XG4gICAgICB0eXBlOiBcIm9hdXRoXCJcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICAuLi5hdXRoZW50aWNhdGlvblxuICAgIH07XG4gIH1cbiAgaWYgKFwidG9rZW5cIiBpbiBzdGF0ZS5zdHJhdGVneU9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0b2tlblwiLFxuICAgICAgdG9rZW5UeXBlOiBcIm9hdXRoXCIsXG4gICAgICBjbGllbnRJZDogc3RhdGUuY2xpZW50SWQsXG4gICAgICBjbGllbnRTZWNyZXQ6IHN0YXRlLmNsaWVudFNlY3JldCxcbiAgICAgIGNsaWVudFR5cGU6IHN0YXRlLmNsaWVudFR5cGUsXG4gICAgICBvblRva2VuQ3JlYXRlZDogc3RhdGUub25Ub2tlbkNyZWF0ZWQsXG4gICAgICAuLi5zdGF0ZS5zdHJhdGVneU9wdGlvbnNcbiAgICB9O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIltAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJdIEludmFsaWQgc3RyYXRlZ3kgb3B0aW9uc1wiKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2F1dGguanNcbmltcG9ydCB7XG4gIGNoZWNrVG9rZW4sXG4gIGRlbGV0ZUF1dGhvcml6YXRpb24sXG4gIGRlbGV0ZVRva2VuLFxuICByZWZyZXNoVG9rZW4sXG4gIHJlc2V0VG9rZW5cbn0gZnJvbSBcIkBvY3Rva2l0L29hdXRoLW1ldGhvZHNcIjtcbmFzeW5jIGZ1bmN0aW9uIGF1dGgoc3RhdGUsIG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXN0YXRlLmF1dGhlbnRpY2F0aW9uKSB7XG4gICAgc3RhdGUuYXV0aGVudGljYXRpb24gPSBzdGF0ZS5jbGllbnRUeXBlID09PSBcIm9hdXRoLWFwcFwiID8gYXdhaXQgZ2V0QXV0aGVudGljYXRpb24oc3RhdGUpIDogYXdhaXQgZ2V0QXV0aGVudGljYXRpb24oc3RhdGUpO1xuICB9XG4gIGlmIChzdGF0ZS5hdXRoZW50aWNhdGlvbi5pbnZhbGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW0BvY3Rva2l0L2F1dGgtb2F1dGgtdXNlcl0gVG9rZW4gaXMgaW52YWxpZFwiKTtcbiAgfVxuICBjb25zdCBjdXJyZW50QXV0aGVudGljYXRpb24gPSBzdGF0ZS5hdXRoZW50aWNhdGlvbjtcbiAgaWYgKFwiZXhwaXJlc0F0XCIgaW4gY3VycmVudEF1dGhlbnRpY2F0aW9uKSB7XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gXCJyZWZyZXNoXCIgfHwgbmV3IERhdGUoY3VycmVudEF1dGhlbnRpY2F0aW9uLmV4cGlyZXNBdCkgPCAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuICAgICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gYXdhaXQgcmVmcmVzaFRva2VuKHtcbiAgICAgICAgY2xpZW50VHlwZTogXCJnaXRodWItYXBwXCIsXG4gICAgICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICAgIHJlZnJlc2hUb2tlbjogY3VycmVudEF1dGhlbnRpY2F0aW9uLnJlZnJlc2hUb2tlbixcbiAgICAgICAgcmVxdWVzdDogc3RhdGUucmVxdWVzdFxuICAgICAgfSk7XG4gICAgICBzdGF0ZS5hdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgdG9rZW5UeXBlOiBcIm9hdXRoXCIsXG4gICAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgICAgLi4uYXV0aGVudGljYXRpb25cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChvcHRpb25zLnR5cGUgPT09IFwicmVmcmVzaFwiKSB7XG4gICAgaWYgKHN0YXRlLmNsaWVudFR5cGUgPT09IFwib2F1dGgtYXBwXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJbQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXSBPQXV0aCBBcHBzIGRvIG5vdCBzdXBwb3J0IGV4cGlyaW5nIHRva2Vuc1wiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWN1cnJlbnRBdXRoZW50aWNhdGlvbi5oYXNPd25Qcm9wZXJ0eShcImV4cGlyZXNBdFwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW0BvY3Rva2l0L2F1dGgtb2F1dGgtdXNlcl0gUmVmcmVzaCB0b2tlbiBtaXNzaW5nXCIpO1xuICAgIH1cbiAgICBhd2FpdCBzdGF0ZS5vblRva2VuQ3JlYXRlZD8uKHN0YXRlLmF1dGhlbnRpY2F0aW9uLCB7XG4gICAgICB0eXBlOiBvcHRpb25zLnR5cGVcbiAgICB9KTtcbiAgfVxuICBpZiAob3B0aW9ucy50eXBlID09PSBcImNoZWNrXCIgfHwgb3B0aW9ucy50eXBlID09PSBcInJlc2V0XCIpIHtcbiAgICBjb25zdCBtZXRob2QgPSBvcHRpb25zLnR5cGUgPT09IFwiY2hlY2tcIiA/IGNoZWNrVG9rZW4gOiByZXNldFRva2VuO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGF1dGhlbnRpY2F0aW9uIH0gPSBhd2FpdCBtZXRob2Qoe1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1ha2luZyBUUyBoYXBweSB3b3VsZCByZXF1aXJlIHVubmVjZXNzYXJ5IGNvZGUgc28gbm9cbiAgICAgICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZSxcbiAgICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgICBjbGllbnRTZWNyZXQ6IHN0YXRlLmNsaWVudFNlY3JldCxcbiAgICAgICAgdG9rZW46IHN0YXRlLmF1dGhlbnRpY2F0aW9uLnRva2VuLFxuICAgICAgICByZXF1ZXN0OiBzdGF0ZS5yZXF1ZXN0XG4gICAgICB9KTtcbiAgICAgIHN0YXRlLmF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICB0b2tlblR5cGU6IFwib2F1dGhcIixcbiAgICAgICAgdHlwZTogXCJ0b2tlblwiLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRCRFxuICAgICAgICAuLi5hdXRoZW50aWNhdGlvblxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09IFwicmVzZXRcIikge1xuICAgICAgICBhd2FpdCBzdGF0ZS5vblRva2VuQ3JlYXRlZD8uKHN0YXRlLmF1dGhlbnRpY2F0aW9uLCB7XG4gICAgICAgICAgdHlwZTogb3B0aW9ucy50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlLmF1dGhlbnRpY2F0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IFwiW0BvY3Rva2l0L2F1dGgtb2F1dGgtdXNlcl0gVG9rZW4gaXMgaW52YWxpZFwiO1xuICAgICAgICBzdGF0ZS5hdXRoZW50aWNhdGlvbi5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBpZiAob3B0aW9ucy50eXBlID09PSBcImRlbGV0ZVwiIHx8IG9wdGlvbnMudHlwZSA9PT0gXCJkZWxldGVBdXRob3JpemF0aW9uXCIpIHtcbiAgICBjb25zdCBtZXRob2QgPSBvcHRpb25zLnR5cGUgPT09IFwiZGVsZXRlXCIgPyBkZWxldGVUb2tlbiA6IGRlbGV0ZUF1dGhvcml6YXRpb247XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG1ldGhvZCh7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWFraW5nIFRTIGhhcHB5IHdvdWxkIHJlcXVpcmUgdW5uZWNlc3NhcnkgY29kZSBzbyBub1xuICAgICAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgICAgICBjbGllbnRJZDogc3RhdGUuY2xpZW50SWQsXG4gICAgICAgIGNsaWVudFNlY3JldDogc3RhdGUuY2xpZW50U2VjcmV0LFxuICAgICAgICB0b2tlbjogc3RhdGUuYXV0aGVudGljYXRpb24udG9rZW4sXG4gICAgICAgIHJlcXVlc3Q6IHN0YXRlLnJlcXVlc3RcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSA0MDQpIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBzdGF0ZS5hdXRoZW50aWNhdGlvbi5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gc3RhdGUuYXV0aGVudGljYXRpb247XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmF1dGhlbnRpY2F0aW9uO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvcmVxdWlyZXMtYmFzaWMtYXV0aC5qc1xudmFyIFJPVVRFU19SRVFVSVJJTkdfQkFTSUNfQVVUSCA9IC9cXC9hcHBsaWNhdGlvbnNcXC9bXi9dK1xcLyh0b2tlbnxncmFudClzPy87XG5mdW5jdGlvbiByZXF1aXJlc0Jhc2ljQXV0aCh1cmwpIHtcbiAgcmV0dXJuIHVybCAmJiBST1VURVNfUkVRVUlSSU5HX0JBU0lDX0FVVEgudGVzdCh1cmwpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xuYXN5bmMgZnVuY3Rpb24gaG9vayhzdGF0ZSwgcmVxdWVzdCwgcm91dGUsIHBhcmFtZXRlcnMgPSB7fSkge1xuICBjb25zdCBlbmRwb2ludCA9IHJlcXVlc3QuZW5kcG9pbnQubWVyZ2UoXG4gICAgcm91dGUsXG4gICAgcGFyYW1ldGVyc1xuICApO1xuICBpZiAoL1xcL2xvZ2luXFwvKG9hdXRoXFwvYWNjZXNzX3Rva2VufGRldmljZVxcL2NvZGUpJC8udGVzdChlbmRwb2ludC51cmwpKSB7XG4gICAgcmV0dXJuIHJlcXVlc3QoZW5kcG9pbnQpO1xuICB9XG4gIGlmIChyZXF1aXJlc0Jhc2ljQXV0aChlbmRwb2ludC51cmwpKSB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBidG9hKGAke3N0YXRlLmNsaWVudElkfToke3N0YXRlLmNsaWVudFNlY3JldH1gKTtcbiAgICBlbmRwb2ludC5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBgYmFzaWMgJHtjcmVkZW50aWFsc31gO1xuICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgfVxuICBjb25zdCB7IHRva2VuIH0gPSBzdGF0ZS5jbGllbnRUeXBlID09PSBcIm9hdXRoLWFwcFwiID8gYXdhaXQgYXV0aCh7IC4uLnN0YXRlLCByZXF1ZXN0IH0pIDogYXdhaXQgYXV0aCh7IC4uLnN0YXRlLCByZXF1ZXN0IH0pO1xuICBlbmRwb2ludC5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBcInRva2VuIFwiICsgdG9rZW47XG4gIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5mdW5jdGlvbiBjcmVhdGVPQXV0aFVzZXJBdXRoKHtcbiAgY2xpZW50SWQsXG4gIGNsaWVudFNlY3JldCxcbiAgY2xpZW50VHlwZSA9IFwib2F1dGgtYXBwXCIsXG4gIHJlcXVlc3QgPSBvY3Rva2l0UmVxdWVzdC5kZWZhdWx0cyh7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LWF1dGgtb2F1dGgtYXBwLmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gXG4gICAgfVxuICB9KSxcbiAgb25Ub2tlbkNyZWF0ZWQsXG4gIC4uLnN0cmF0ZWd5T3B0aW9uc1xufSkge1xuICBjb25zdCBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oe1xuICAgIGNsaWVudFR5cGUsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50U2VjcmV0LFxuICAgIG9uVG9rZW5DcmVhdGVkLFxuICAgIHN0cmF0ZWd5T3B0aW9ucyxcbiAgICByZXF1ZXN0XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihhdXRoLmJpbmQobnVsbCwgc3RhdGUpLCB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBub3Qgd29ydGggdGhlIGV4dHJhIGNvZGUgbmVlZGVkIHRvIGFwcGVhc2UgVFNcbiAgICBob29rOiBob29rLmJpbmQobnVsbCwgc3RhdGUpXG4gIH0pO1xufVxuY3JlYXRlT0F1dGhVc2VyQXV0aC5WRVJTSU9OID0gVkVSU0lPTjtcbmV4cG9ydCB7XG4gIGNyZWF0ZU9BdXRoVXNlckF1dGgsXG4gIHJlcXVpcmVzQmFzaWNBdXRoXG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2F1dGguanNcbmltcG9ydCB7IGNyZWF0ZU9BdXRoVXNlckF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXCI7XG5hc3luYyBmdW5jdGlvbiBhdXRoKHN0YXRlLCBhdXRoT3B0aW9ucykge1xuICBpZiAoYXV0aE9wdGlvbnMudHlwZSA9PT0gXCJvYXV0aC1hcHBcIikge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm9hdXRoLWFwcFwiLFxuICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHtidG9hKFxuICAgICAgICAgIGAke3N0YXRlLmNsaWVudElkfToke3N0YXRlLmNsaWVudFNlY3JldH1gXG4gICAgICAgICl9YFxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgaWYgKFwiZmFjdG9yeVwiIGluIGF1dGhPcHRpb25zKSB7XG4gICAgY29uc3QgeyB0eXBlLCAuLi5vcHRpb25zIH0gPSB7XG4gICAgICAuLi5hdXRoT3B0aW9ucyxcbiAgICAgIC4uLnN0YXRlXG4gICAgfTtcbiAgICByZXR1cm4gYXV0aE9wdGlvbnMuZmFjdG9yeShvcHRpb25zKTtcbiAgfVxuICBjb25zdCBjb21tb24gPSB7XG4gICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldDogc3RhdGUuY2xpZW50U2VjcmV0LFxuICAgIHJlcXVlc3Q6IHN0YXRlLnJlcXVlc3QsXG4gICAgLi4uYXV0aE9wdGlvbnNcbiAgfTtcbiAgY29uc3QgdXNlckF1dGggPSBzdGF0ZS5jbGllbnRUeXBlID09PSBcIm9hdXRoLWFwcFwiID8gYXdhaXQgY3JlYXRlT0F1dGhVc2VyQXV0aCh7XG4gICAgLi4uY29tbW9uLFxuICAgIGNsaWVudFR5cGU6IHN0YXRlLmNsaWVudFR5cGVcbiAgfSkgOiBhd2FpdCBjcmVhdGVPQXV0aFVzZXJBdXRoKHtcbiAgICAuLi5jb21tb24sXG4gICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZVxuICB9KTtcbiAgcmV0dXJuIHVzZXJBdXRoKCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9ob29rLmpzXG5pbXBvcnQgeyByZXF1aXJlc0Jhc2ljQXV0aCB9IGZyb20gXCJAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJcIjtcbmFzeW5jIGZ1bmN0aW9uIGhvb2soc3RhdGUsIHJlcXVlc3QyLCByb3V0ZSwgcGFyYW1ldGVycykge1xuICBsZXQgZW5kcG9pbnQgPSByZXF1ZXN0Mi5lbmRwb2ludC5tZXJnZShcbiAgICByb3V0ZSxcbiAgICBwYXJhbWV0ZXJzXG4gICk7XG4gIGlmICgvXFwvbG9naW5cXC8ob2F1dGhcXC9hY2Nlc3NfdG9rZW58ZGV2aWNlXFwvY29kZSkkLy50ZXN0KGVuZHBvaW50LnVybCkpIHtcbiAgICByZXR1cm4gcmVxdWVzdDIoZW5kcG9pbnQpO1xuICB9XG4gIGlmIChzdGF0ZS5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIiAmJiAhcmVxdWlyZXNCYXNpY0F1dGgoZW5kcG9pbnQudXJsKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBbQG9jdG9raXQvYXV0aC1vYXV0aC1hcHBdIEdpdEh1YiBBcHBzIGNhbm5vdCB1c2UgdGhlaXIgY2xpZW50IElEL3NlY3JldCBmb3IgYmFzaWMgYXV0aGVudGljYXRpb24gZm9yIGVuZHBvaW50cyBvdGhlciB0aGFuIFwiL2FwcGxpY2F0aW9ucy97Y2xpZW50X2lkfS8qKlwiLiBcIiR7ZW5kcG9pbnQubWV0aG9kfSAke2VuZHBvaW50LnVybH1cIiBpcyBub3Qgc3VwcG9ydGVkLmBcbiAgICApO1xuICB9XG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYnRvYShgJHtzdGF0ZS5jbGllbnRJZH06JHtzdGF0ZS5jbGllbnRTZWNyZXR9YCk7XG4gIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IGBiYXNpYyAke2NyZWRlbnRpYWxzfWA7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlcXVlc3QyKGVuZHBvaW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSA0MDEpIHRocm93IGVycm9yO1xuICAgIGVycm9yLm1lc3NhZ2UgPSBgW0BvY3Rva2l0L2F1dGgtb2F1dGgtYXBwXSBcIiR7ZW5kcG9pbnQubWV0aG9kfSAke2VuZHBvaW50LnVybH1cIiBkb2VzIG5vdCBzdXBwb3J0IGNsaWVudElkL2NsaWVudFNlY3JldCBiYXNpYyBhdXRoZW50aWNhdGlvbi5gO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiMC4wLjAtZGV2ZWxvcG1lbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyBjcmVhdGVPQXV0aFVzZXJBdXRoIGFzIGNyZWF0ZU9BdXRoVXNlckF1dGgyIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtb2F1dGgtdXNlclwiO1xuZnVuY3Rpb24gY3JlYXRlT0F1dGhBcHBBdXRoKG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIHJlcXVlc3Q6IHJlcXVlc3QuZGVmYXVsdHMoe1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LWF1dGgtb2F1dGgtYXBwLmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2xpZW50VHlwZTogXCJvYXV0aC1hcHBcIlxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihhdXRoLmJpbmQobnVsbCwgc3RhdGUpLCB7XG4gICAgaG9vazogaG9vay5iaW5kKG51bGwsIHN0YXRlKVxuICB9KTtcbn1cbmV4cG9ydCB7XG4gIGNyZWF0ZU9BdXRoQXBwQXV0aCxcbiAgY3JlYXRlT0F1dGhVc2VyQXV0aDIgYXMgY3JlYXRlT0F1dGhVc2VyQXV0aFxufTtcbiIsICIvLyB3ZSBkb24ndCBAdHMtY2hlY2sgaGVyZSBiZWNhdXNlIGl0IGNob2tlcyBvbiBhdG9iIGFuZCBidG9hIHdoaWNoIGFyZSBhdmFpbGFibGUgaW4gYWxsIG1vZGVybiBKUyBydW50aW1lIGVudmlyb25tZW50c1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGtjczEocHJpdmF0ZUtleSkge1xuICByZXR1cm4gcHJpdmF0ZUtleS5pbmNsdWRlcyhcIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS1cIik7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByaXZhdGVLZXlcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcGVuU3NoKHByaXZhdGVLZXkpIHtcbiAgcmV0dXJuIHByaXZhdGVLZXkuaW5jbHVkZXMoXCItLS0tLUJFR0lOIE9QRU5TU0ggUFJJVkFURSBLRVktLS0tLVwiKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcyQXJyYXlCdWZmZXIoc3RyKSB7XG4gIGNvbnN0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcihzdHIubGVuZ3RoKTtcbiAgY29uc3QgYnVmVmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gIGZvciAobGV0IGkgPSAwLCBzdHJMZW4gPSBzdHIubGVuZ3RoOyBpIDwgc3RyTGVuOyBpKyspIHtcbiAgICBidWZWaWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVtXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRERVJmcm9tUEVNKHBlbSkge1xuICBjb25zdCBwZW1CNjQgPSBwZW1cbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLnNsaWNlKDEsIC0xKSAvLyBSZW1vdmUgdGhlIC0tLSBCRUdJTiAvIEVORCBQUklWQVRFIEtFWSAtLS1cbiAgICAuam9pbihcIlwiKTtcblxuICBjb25zdCBkZWNvZGVkID0gYXRvYihwZW1CNjQpO1xuICByZXR1cm4gc3RyaW5nMkFycmF5QnVmZmVyKGRlY29kZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbHMnKS5IZWFkZXJ9IGhlYWRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFscycpLlBheWxvYWR9IHBheWxvYWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmNvZGVkTWVzc2FnZShoZWFkZXIsIHBheWxvYWQpIHtcbiAgcmV0dXJuIGAke2Jhc2U2NGVuY29kZUpTT04oaGVhZGVyKX0uJHtiYXNlNjRlbmNvZGVKU09OKHBheWxvYWQpfWA7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYnVmZmVyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0ZW5jb2RlKGJ1ZmZlcikge1xuICB2YXIgYmluYXJ5ID0gXCJcIjtcbiAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgdmFyIGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7XG4gIH1cblxuICByZXR1cm4gZnJvbUJhc2U2NChidG9hKGJpbmFyeSkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZyb21CYXNlNjQoYmFzZTY0KSB7XG4gIHJldHVybiBiYXNlNjQucmVwbGFjZSgvPS9nLCBcIlwiKS5yZXBsYWNlKC9cXCsvZywgXCItXCIpLnJlcGxhY2UoL1xcLy9nLCBcIl9cIik7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLHVua25vd24+fSBvYmpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGJhc2U2NGVuY29kZUpTT04ob2JqKSB7XG4gIHJldHVybiBmcm9tQmFzZTY0KGJ0b2EoSlNPTi5zdHJpbmdpZnkob2JqKSkpO1xufVxuIiwgIi8vIHRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSBvbmx5IHN1cHBvcnQgTm9kZSAyMCtcbmV4cG9ydCB7IHN1YnRsZSB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgY3JlYXRlUHJpdmF0ZUtleSB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5pbXBvcnQgeyBpc1BrY3MxIH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuLy8gbm8tb3AsIHVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gd2F5IHRvIHRyYW5zZm9ybSBmcm9tIFBLQ1M4IG9yIE9wZW5TU0ggdG8gUEtDUzEgd2l0aCBXZWJDcnlwdG9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UHJpdmF0ZUtleShwcml2YXRlS2V5KSB7XG4gIGlmICghaXNQa2NzMShwcml2YXRlS2V5KSkgcmV0dXJuIHByaXZhdGVLZXk7XG5cbiAgcmV0dXJuIGNyZWF0ZVByaXZhdGVLZXkocHJpdmF0ZUtleSkuZXhwb3J0KHtcbiAgICB0eXBlOiBcInBrY3M4XCIsXG4gICAgZm9ybWF0OiBcInBlbVwiLFxuICB9KTtcbn1cbiIsICIvLyB3ZSBkb24ndCBAdHMtY2hlY2sgaGVyZSBiZWNhdXNlIGl0IGNob2tlcyBjcnlwdG8gd2hpY2ggaXMgYSBnbG9iYWwgQVBJIGluIG1vZGVybiBKUyBydW50aW1lIGVudmlyb25tZW50c1xuXG5pbXBvcnQge1xuICBpc1BrY3MxLFxuICBpc09wZW5Tc2gsXG4gIGdldEVuY29kZWRNZXNzYWdlLFxuICBnZXRERVJmcm9tUEVNLFxuICBzdHJpbmcyQXJyYXlCdWZmZXIsXG4gIGJhc2U2NGVuY29kZSxcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuaW1wb3J0IHsgc3VidGxlLCBjb252ZXJ0UHJpdmF0ZUtleSB9IGZyb20gXCIjY3J5cHRvXCI7XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFscycpLkdldFRva2VuT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRva2VuKHsgcHJpdmF0ZUtleSwgcGF5bG9hZCB9KSB7XG4gIGNvbnN0IGNvbnZlcnRlZFByaXZhdGVLZXkgPSBjb252ZXJ0UHJpdmF0ZUtleShwcml2YXRlS2V5KTtcblxuICAvLyBXZWJDcnlwdG8gb25seSBzdXBwb3J0cyBQS0NTIzgsIHVuZm9ydHVuYXRlbHlcbiAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gIGlmIChpc1BrY3MxKGNvbnZlcnRlZFByaXZhdGVLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJbdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0XSBQcml2YXRlIEtleSBpcyBpbiBQS0NTIzEgZm9ybWF0LCBidXQgb25seSBQS0NTIzggaXMgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dyMm0vdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0I3ByaXZhdGUta2V5LWZvcm1hdHNcIlxuICAgICk7XG4gIH1cbiAgLyogYzggaWdub3JlIHN0b3AgKi9cblxuICAvLyBXZWJDcnlwdG8gZG9lcyBub3Qgc3VwcG9ydCBPcGVuU1NILCB1bmZvcnR1bmF0ZWx5XG4gIGlmIChpc09wZW5Tc2goY29udmVydGVkUHJpdmF0ZUtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlt1bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RdIFByaXZhdGUgS2V5IGlzIGluIE9wZW5TU0ggZm9ybWF0LCBidXQgb25seSBQS0NTIzggaXMgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dyMm0vdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0I3ByaXZhdGUta2V5LWZvcm1hdHNcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBhbGdvcml0aG0gPSB7XG4gICAgbmFtZTogXCJSU0FTU0EtUEtDUzEtdjFfNVwiLFxuICAgIGhhc2g6IHsgbmFtZTogXCJTSEEtMjU2XCIgfSxcbiAgfTtcblxuICAvKiogQHR5cGUge2ltcG9ydCgnLi4vaW50ZXJuYWxzJykuSGVhZGVyfSAqL1xuICBjb25zdCBoZWFkZXIgPSB7IGFsZzogXCJSUzI1NlwiLCB0eXA6IFwiSldUXCIgfTtcblxuICBjb25zdCBwcml2YXRlS2V5REVSID0gZ2V0REVSZnJvbVBFTShjb252ZXJ0ZWRQcml2YXRlS2V5KTtcbiAgY29uc3QgaW1wb3J0ZWRLZXkgPSBhd2FpdCBzdWJ0bGUuaW1wb3J0S2V5KFxuICAgIFwicGtjczhcIixcbiAgICBwcml2YXRlS2V5REVSLFxuICAgIGFsZ29yaXRobSxcbiAgICBmYWxzZSxcbiAgICBbXCJzaWduXCJdXG4gICk7XG5cbiAgY29uc3QgZW5jb2RlZE1lc3NhZ2UgPSBnZXRFbmNvZGVkTWVzc2FnZShoZWFkZXIsIHBheWxvYWQpO1xuICBjb25zdCBlbmNvZGVkTWVzc2FnZUFyckJ1ZiA9IHN0cmluZzJBcnJheUJ1ZmZlcihlbmNvZGVkTWVzc2FnZSk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlQXJyQnVmID0gYXdhaXQgc3VidGxlLnNpZ24oXG4gICAgYWxnb3JpdGhtLm5hbWUsXG4gICAgaW1wb3J0ZWRLZXksXG4gICAgZW5jb2RlZE1lc3NhZ2VBcnJCdWZcbiAgKTtcblxuICBjb25zdCBlbmNvZGVkU2lnbmF0dXJlID0gYmFzZTY0ZW5jb2RlKHNpZ25hdHVyZUFyckJ1Zik7XG5cbiAgcmV0dXJuIGAke2VuY29kZWRNZXNzYWdlfS4ke2VuY29kZWRTaWduYXR1cmV9YDtcbn1cbiIsICIvLyBAdHMtY2hlY2tcblxuLy8gQHRzLWlnbm9yZSAtICNnZXQtdG9rZW4gaXMgZGVmaW5lZCBpbiBcImltcG9ydHNcIiBpbiBwYWNrYWdlLmpzb25cbmltcG9ydCB7IGdldFRva2VuIH0gZnJvbSBcIi4vbGliL2dldC10b2tlbi5qc1wiO1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLlwiKS5PcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuXCIpLlJlc3VsdD59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdpdGh1YkFwcEp3dCh7XG4gIGlkLFxuICBwcml2YXRlS2V5LFxuICBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbn0pIHtcbiAgLy8gUHJpdmF0ZSBrZXlzIGFyZSBvZnRlbiB0aW1lcyBjb25maWd1cmVkIGFzIGVudmlyb25tZW50IHZhcmlhYmxlcywgaW4gd2hpY2ggY2FzZSBsaW5lIGJyZWFrcyBhcmUgZXNjYXBlZCB1c2luZyBgXFxcXG5gLlxuICAvLyBSZXBsYWNlIHRoZXNlIGhlcmUgZm9yIGNvbnZlbmllbmNlLlxuICBjb25zdCBwcml2YXRlS2V5V2l0aE5ld2xpbmVzID0gcHJpdmF0ZUtleS5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJyk7XG5cbiAgLy8gV2hlbiBjcmVhdGluZyBhIEpTT04gV2ViIFRva2VuLCBpdCBzZXRzIHRoZSBcImlzc3VlZCBhdCB0aW1lXCIgKGlhdCkgdG8gMzBzXG4gIC8vIGluIHRoZSBwYXN0IGFzIHdlIGhhdmUgc2VlbiBwZW9wbGUgcnVubmluZyBzaXR1YXRpb25zIHdoZXJlIHRoZSBHaXRIdWIgQVBJXG4gIC8vIGNsYWltZWQgdGhlIGlhdCB3b3VsZCBiZSBpbiBmdXR1cmUuIEl0IHR1cm5lZCBvdXQgdGhlIGNsb2NrcyBvbiB0aGVcbiAgLy8gZGlmZmVyZW50IG1hY2hpbmUgd2VyZSBub3QgaW4gc3luYy5cbiAgY29uc3Qgbm93V2l0aFNhZmV0eU1hcmdpbiA9IG5vdyAtIDMwO1xuICBjb25zdCBleHBpcmF0aW9uID0gbm93V2l0aFNhZmV0eU1hcmdpbiArIDYwICogMTA7IC8vIEpXVCBleHBpcmF0aW9uIHRpbWUgKDEwIG1pbnV0ZSBtYXhpbXVtKVxuXG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgaWF0OiBub3dXaXRoU2FmZXR5TWFyZ2luLCAvLyBJc3N1ZWQgYXQgdGltZVxuICAgIGV4cDogZXhwaXJhdGlvbixcbiAgICBpc3M6IGlkLFxuICB9O1xuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0VG9rZW4oe1xuICAgIHByaXZhdGVLZXk6IHByaXZhdGVLZXlXaXRoTmV3bGluZXMsXG4gICAgcGF5bG9hZCxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBJZDogaWQsXG4gICAgZXhwaXJhdGlvbixcbiAgICB0b2tlbixcbiAgfTtcbn1cbiIsICIvKipcbiAqIHRvYWQtY2FjaGVcbiAqXG4gKiBAY29weXJpZ2h0IDIwMjQgSWdvciBTYXZpbiA8a2liZXJ0b2FkQGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICogQHZlcnNpb24gMy43LjBcbiAqL1xuY2xhc3MgRmlmb01hcCB7XG4gIGNvbnN0cnVjdG9yKG1heCA9IDEwMDAsIHR0bEluTXNlY3MgPSAwKSB7XG4gICAgaWYgKGlzTmFOKG1heCkgfHwgbWF4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1heCB2YWx1ZScpXG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHR0bEluTXNlY3MpIHx8IHR0bEluTXNlY3MgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHRsIHZhbHVlJylcbiAgICB9XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLml0ZW1zID0gbmV3IE1hcCgpO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5tYXggPSBtYXg7XG4gICAgdGhpcy50dGwgPSB0dGxJbk1zZWNzO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuc2l6ZVxuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlKGtleSkge1xuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBkZWxldGVkSXRlbSA9IHRoaXMuaXRlbXMuZ2V0KGtleSk7XG5cbiAgICAgIHRoaXMuaXRlbXMuZGVsZXRlKGtleSk7XG5cbiAgICAgIGlmIChkZWxldGVkSXRlbS5wcmV2ICE9PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZWRJdGVtLnByZXYubmV4dCA9IGRlbGV0ZWRJdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWxldGVkSXRlbS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZWRJdGVtLm5leHQucHJldiA9IGRlbGV0ZWRJdGVtLnByZXY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpcnN0ID09PSBkZWxldGVkSXRlbSkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gZGVsZXRlZEl0ZW0ubmV4dDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGFzdCA9PT0gZGVsZXRlZEl0ZW0pIHtcbiAgICAgICAgdGhpcy5sYXN0ID0gZGVsZXRlZEl0ZW0ucHJldjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVNYW55KGtleXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVsZXRlKGtleXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maXJzdDtcblxuICAgICAgdGhpcy5pdGVtcy5kZWxldGUoaXRlbS5rZXkpO1xuXG4gICAgICBpZiAodGhpcy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGl0ZW0ubmV4dDtcbiAgICAgICAgdGhpcy5maXJzdC5wcmV2ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleHBpcmVzQXQoa2V5KSB7XG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLmdldChrZXkpLmV4cGlyeVxuICAgIH1cbiAgfVxuXG4gIGdldChrZXkpIHtcbiAgICBpZiAodGhpcy5pdGVtcy5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZ2V0KGtleSk7XG5cbiAgICAgIGlmICh0aGlzLnR0bCA+IDAgJiYgaXRlbS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRNYW55KGtleXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2godGhpcy5nZXQoa2V5c1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMua2V5cygpXG4gIH1cblxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgaXRlbVxuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5nZXQoa2V5KTtcbiAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaXRlbS5leHBpcnkgPSB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bDtcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQWRkIG5ldyBpdGVtXG4gICAgaWYgKHRoaXMubWF4ID4gMCAmJiB0aGlzLnNpemUgPT09IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLmV2aWN0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIGV4cGlyeTogdGhpcy50dGwgPiAwID8gRGF0ZS5ub3coKSArIHRoaXMudHRsIDogdGhpcy50dGwsXG4gICAgICBrZXk6IGtleSxcbiAgICAgIHByZXY6IHRoaXMubGFzdCxcbiAgICAgIG5leHQ6IG51bGwsXG4gICAgICB2YWx1ZSxcbiAgICB9O1xuICAgIHRoaXMuaXRlbXMuc2V0KGtleSwgaXRlbSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAxKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gaXRlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXN0Lm5leHQgPSBpdGVtO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGl0ZW07XG4gIH1cbn1jbGFzcyBMcnVNYXAge1xuICBjb25zdHJ1Y3RvcihtYXggPSAxMDAwLCB0dGxJbk1zZWNzID0gMCkge1xuICAgIGlmIChpc05hTihtYXgpIHx8IG1heCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXggdmFsdWUnKVxuICAgIH1cblxuICAgIGlmIChpc05hTih0dGxJbk1zZWNzKSB8fCB0dGxJbk1zZWNzIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR0bCB2YWx1ZScpXG4gICAgfVxuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMubWF4ID0gbWF4O1xuICAgIHRoaXMudHRsID0gdHRsSW5Nc2VjcztcbiAgfVxuXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnNpemVcbiAgfVxuXG4gIGJ1bXBMcnUoaXRlbSkge1xuICAgIGlmICh0aGlzLmxhc3QgPT09IGl0ZW0pIHtcbiAgICAgIHJldHVybiAvLyBJdGVtIGlzIGFscmVhZHkgdGhlIGxhc3Qgb25lLCBubyBuZWVkIHRvIGJ1bXBcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0O1xuICAgIGNvbnN0IG5leHQgPSBpdGVtLm5leHQ7XG4gICAgY29uc3QgcHJldiA9IGl0ZW0ucHJldjtcblxuICAgIGlmICh0aGlzLmZpcnN0ID09PSBpdGVtKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV4dDtcbiAgICB9XG5cbiAgICBpdGVtLm5leHQgPSBudWxsO1xuICAgIGl0ZW0ucHJldiA9IGxhc3Q7XG4gICAgbGFzdC5uZXh0ID0gaXRlbTtcblxuICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICAgIH1cblxuICAgIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICBuZXh0LnByZXYgPSBwcmV2O1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGl0ZW07XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLml0ZW1zID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gIH1cblxuICBkZWxldGUoa2V5KSB7XG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldChrZXkpO1xuXG4gICAgICB0aGlzLml0ZW1zLmRlbGV0ZShrZXkpO1xuXG4gICAgICBpZiAoaXRlbS5wcmV2ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZW0ucHJldi5uZXh0ID0gaXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZW0ubmV4dC5wcmV2ID0gaXRlbS5wcmV2O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maXJzdCA9PT0gaXRlbSkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gaXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5sYXN0ID09PSBpdGVtKSB7XG4gICAgICAgIHRoaXMubGFzdCA9IGl0ZW0ucHJldjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVNYW55KGtleXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVsZXRlKGtleXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maXJzdDtcblxuICAgICAgdGhpcy5pdGVtcy5kZWxldGUoaXRlbS5rZXkpO1xuXG4gICAgICBpZiAodGhpcy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGl0ZW0ubmV4dDtcbiAgICAgICAgdGhpcy5maXJzdC5wcmV2ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleHBpcmVzQXQoa2V5KSB7XG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLmdldChrZXkpLmV4cGlyeVxuICAgIH1cbiAgfVxuXG4gIGdldChrZXkpIHtcbiAgICBpZiAodGhpcy5pdGVtcy5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZ2V0KGtleSk7XG5cbiAgICAgIC8vIEl0ZW0gaGFzIGFscmVhZHkgZXhwaXJlZFxuICAgICAgaWYgKHRoaXMudHRsID4gMCAmJiBpdGVtLmV4cGlyeSA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBJdGVtIGlzIHN0aWxsIGZyZXNoXG4gICAgICB0aGlzLmJ1bXBMcnUoaXRlbSk7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIGdldE1hbnkoa2V5cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQucHVzaCh0aGlzLmdldChrZXlzW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAga2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5rZXlzKClcbiAgfVxuXG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgLy8gUmVwbGFjZSBleGlzdGluZyBpdGVtXG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldChrZXkpO1xuICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpdGVtLmV4cGlyeSA9IHRoaXMudHRsID4gMCA/IERhdGUubm93KCkgKyB0aGlzLnR0bCA6IHRoaXMudHRsO1xuXG4gICAgICBpZiAodGhpcy5sYXN0ICE9PSBpdGVtKSB7XG4gICAgICAgIHRoaXMuYnVtcExydShpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQWRkIG5ldyBpdGVtXG4gICAgaWYgKHRoaXMubWF4ID4gMCAmJiB0aGlzLnNpemUgPT09IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLmV2aWN0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIGV4cGlyeTogdGhpcy50dGwgPiAwID8gRGF0ZS5ub3coKSArIHRoaXMudHRsIDogdGhpcy50dGwsXG4gICAgICBrZXk6IGtleSxcbiAgICAgIHByZXY6IHRoaXMubGFzdCxcbiAgICAgIG5leHQ6IG51bGwsXG4gICAgICB2YWx1ZSxcbiAgICB9O1xuICAgIHRoaXMuaXRlbXMuc2V0KGtleSwgaXRlbSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAxKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gaXRlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXN0Lm5leHQgPSBpdGVtO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGl0ZW07XG4gIH1cbn1jbGFzcyBMcnVPYmplY3Qge1xuICBjb25zdHJ1Y3RvcihtYXggPSAxMDAwLCB0dGxJbk1zZWNzID0gMCkge1xuICAgIGlmIChpc05hTihtYXgpIHx8IG1heCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXggdmFsdWUnKVxuICAgIH1cblxuICAgIGlmIChpc05hTih0dGxJbk1zZWNzKSB8fCB0dGxJbk1zZWNzIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR0bCB2YWx1ZScpXG4gICAgfVxuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLnNpemUgPSAwO1xuICAgIHRoaXMubWF4ID0gbWF4O1xuICAgIHRoaXMudHRsID0gdHRsSW5Nc2VjcztcbiAgfVxuXG4gIGJ1bXBMcnUoaXRlbSkge1xuICAgIGlmICh0aGlzLmxhc3QgPT09IGl0ZW0pIHtcbiAgICAgIHJldHVybiAvLyBJdGVtIGlzIGFscmVhZHkgdGhlIGxhc3Qgb25lLCBubyBuZWVkIHRvIGJ1bXBcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0O1xuICAgIGNvbnN0IG5leHQgPSBpdGVtLm5leHQ7XG4gICAgY29uc3QgcHJldiA9IGl0ZW0ucHJldjtcblxuICAgIGlmICh0aGlzLmZpcnN0ID09PSBpdGVtKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV4dDtcbiAgICB9XG5cbiAgICBpdGVtLm5leHQgPSBudWxsO1xuICAgIGl0ZW0ucHJldiA9IGxhc3Q7XG4gICAgbGFzdC5uZXh0ID0gaXRlbTtcblxuICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICAgIH1cblxuICAgIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICBuZXh0LnByZXYgPSBwcmV2O1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGl0ZW07XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLml0ZW1zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG4gIH1cblxuICBkZWxldGUoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1trZXldO1xuXG4gICAgICBkZWxldGUgdGhpcy5pdGVtc1trZXldO1xuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIGlmIChpdGVtLnByZXYgIT09IG51bGwpIHtcbiAgICAgICAgaXRlbS5wcmV2Lm5leHQgPSBpdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLm5leHQgIT09IG51bGwpIHtcbiAgICAgICAgaXRlbS5uZXh0LnByZXYgPSBpdGVtLnByZXY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpcnN0ID09PSBpdGVtKSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBpdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmxhc3QgPT09IGl0ZW0pIHtcbiAgICAgICAgdGhpcy5sYXN0ID0gaXRlbS5wcmV2O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZU1hbnkoa2V5cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5kZWxldGUoa2V5c1tpXSk7XG4gICAgfVxuICB9XG5cbiAgZXZpY3QoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpcnN0O1xuXG4gICAgICBkZWxldGUgdGhpcy5pdGVtc1tpdGVtLmtleV07XG5cbiAgICAgIGlmICgtLXRoaXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBpdGVtLm5leHQ7XG4gICAgICAgIHRoaXMuZmlyc3QucHJldiA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwaXJlc0F0KGtleSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXNba2V5XS5leHBpcnlcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1trZXldO1xuXG4gICAgICAvLyBJdGVtIGhhcyBhbHJlYWR5IGV4cGlyZWRcbiAgICAgIGlmICh0aGlzLnR0bCA+IDAgJiYgaXRlbS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSXRlbSBpcyBzdGlsbCBmcmVzaFxuICAgICAgdGhpcy5idW1wTHJ1KGl0ZW0pO1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRNYW55KGtleXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2godGhpcy5nZXQoa2V5c1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGtleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaXRlbXMpXG4gIH1cblxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgaXRlbVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcbiAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaXRlbS5leHBpcnkgPSB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bDtcblxuICAgICAgaWYgKHRoaXMubGFzdCAhPT0gaXRlbSkge1xuICAgICAgICB0aGlzLmJ1bXBMcnUoaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEFkZCBuZXcgaXRlbVxuICAgIGlmICh0aGlzLm1heCA+IDAgJiYgdGhpcy5zaXplID09PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5ldmljdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICBleHBpcnk6IHRoaXMudHRsID4gMCA/IERhdGUubm93KCkgKyB0aGlzLnR0bCA6IHRoaXMudHRsLFxuICAgICAga2V5OiBrZXksXG4gICAgICBwcmV2OiB0aGlzLmxhc3QsXG4gICAgICBuZXh0OiBudWxsLFxuICAgICAgdmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLml0ZW1zW2tleV0gPSBpdGVtO1xuXG4gICAgaWYgKCsrdGhpcy5zaXplID09PSAxKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gaXRlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXN0Lm5leHQgPSBpdGVtO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGl0ZW07XG4gIH1cbn1jbGFzcyBIaXRTdGF0aXN0aWNzUmVjb3JkIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5yZWNvcmRzID0ge307XG4gIH1cblxuICBpbml0Rm9yQ2FjaGUoY2FjaGVJZCwgY3VycmVudFRpbWVTdGFtcCkge1xuICAgIHRoaXMucmVjb3Jkc1tjYWNoZUlkXSA9IHtcbiAgICAgIFtjdXJyZW50VGltZVN0YW1wXToge1xuICAgICAgICBjYWNoZVNpemU6IDAsXG4gICAgICAgIGhpdHM6IDAsXG4gICAgICAgIGZhbHN5SGl0czogMCxcbiAgICAgICAgZW1wdHlIaXRzOiAwLFxuICAgICAgICBtaXNzZXM6IDAsXG4gICAgICAgIGV4cGlyYXRpb25zOiAwLFxuICAgICAgICBldmljdGlvbnM6IDAsXG4gICAgICAgIGludmFsaWRhdGVPbmU6IDAsXG4gICAgICAgIGludmFsaWRhdGVBbGw6IDAsXG4gICAgICAgIHNldHM6IDAsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXNldEZvckNhY2hlKGNhY2hlSWQpIHtcbiAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5yZWNvcmRzW2NhY2hlSWRdKSkge1xuICAgICAgdGhpcy5yZWNvcmRzW2NhY2hlSWRdW2tleV0gPSB7XG4gICAgICAgIGNhY2hlU2l6ZTogMCxcbiAgICAgICAgaGl0czogMCxcbiAgICAgICAgZmFsc3lIaXRzOiAwLFxuICAgICAgICBlbXB0eUhpdHM6IDAsXG4gICAgICAgIG1pc3NlczogMCxcbiAgICAgICAgZXhwaXJhdGlvbnM6IDAsXG4gICAgICAgIGV2aWN0aW9uczogMCxcbiAgICAgICAgaW52YWxpZGF0ZU9uZTogMCxcbiAgICAgICAgaW52YWxpZGF0ZUFsbDogMCxcbiAgICAgICAgc2V0czogMCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGlzdGljcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRzXG4gIH1cbn0vKipcbiAqXG4gKiBAcGFyYW0ge0RhdGV9IGRhdGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFRpbWVzdGFtcChkYXRlKSB7XG4gIHJldHVybiBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0tJHtkYXRlXG4gICAgLmdldERhdGUoKVxuICAgIC50b1N0cmluZygpXG4gICAgLnBhZFN0YXJ0KDIsICcwJyl9YFxufWNsYXNzIEhpdFN0YXRpc3RpY3Mge1xuICBjb25zdHJ1Y3RvcihjYWNoZUlkLCBzdGF0aXN0aWNUdGxJbkhvdXJzLCBnbG9iYWxTdGF0aXN0aWNzUmVjb3JkKSB7XG4gICAgdGhpcy5jYWNoZUlkID0gY2FjaGVJZDtcbiAgICB0aGlzLnN0YXRpc3RpY1R0bEluSG91cnMgPSBzdGF0aXN0aWNUdGxJbkhvdXJzO1xuXG4gICAgdGhpcy5jb2xsZWN0aW9uU3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuY3VycmVudFRpbWVTdGFtcCA9IGdldFRpbWVzdGFtcCh0aGlzLmNvbGxlY3Rpb25TdGFydCk7XG5cbiAgICB0aGlzLnJlY29yZHMgPSBnbG9iYWxTdGF0aXN0aWNzUmVjb3JkIHx8IG5ldyBIaXRTdGF0aXN0aWNzUmVjb3JkKCk7XG4gICAgdGhpcy5yZWNvcmRzLmluaXRGb3JDYWNoZSh0aGlzLmNhY2hlSWQsIHRoaXMuY3VycmVudFRpbWVTdGFtcCk7XG4gIH1cblxuICBnZXQgY3VycmVudFJlY29yZCgpIHtcbiAgICAvLyBzYWZldHkgbmV0XG4gICAgLyogYzggaWdub3JlIG5leHQgMTQgKi9cbiAgICBpZiAoIXRoaXMucmVjb3Jkcy5yZWNvcmRzW3RoaXMuY2FjaGVJZF1bdGhpcy5jdXJyZW50VGltZVN0YW1wXSkge1xuICAgICAgdGhpcy5yZWNvcmRzLnJlY29yZHNbdGhpcy5jYWNoZUlkXVt0aGlzLmN1cnJlbnRUaW1lU3RhbXBdID0ge1xuICAgICAgICBjYWNoZVNpemU6IDAsXG4gICAgICAgIGhpdHM6IDAsXG4gICAgICAgIGZhbHN5SGl0czogMCxcbiAgICAgICAgZW1wdHlIaXRzOiAwLFxuICAgICAgICBtaXNzZXM6IDAsXG4gICAgICAgIGV4cGlyYXRpb25zOiAwLFxuICAgICAgICBldmljdGlvbnM6IDAsXG4gICAgICAgIHNldHM6IDAsXG4gICAgICAgIGludmFsaWRhdGVPbmU6IDAsXG4gICAgICAgIGludmFsaWRhdGVBbGw6IDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlY29yZHMucmVjb3Jkc1t0aGlzLmNhY2hlSWRdW3RoaXMuY3VycmVudFRpbWVTdGFtcF1cbiAgfVxuXG4gIGhvdXJzUGFzc2VkKCkge1xuICAgIHJldHVybiAoRGF0ZS5ub3coKSAtIHRoaXMuY29sbGVjdGlvblN0YXJ0KSAvIDEwMDAgLyA2MCAvIDYwXG4gIH1cblxuICBhZGRIaXQoKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuaGl0cysrO1xuICB9XG4gIGFkZEZhbHN5SGl0KCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmZhbHN5SGl0cysrO1xuICB9XG5cbiAgYWRkRW1wdHlIaXQoKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuZW1wdHlIaXRzKys7XG4gIH1cblxuICBhZGRNaXNzKCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLm1pc3NlcysrO1xuICB9XG5cbiAgYWRkRXZpY3Rpb24oKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuZXZpY3Rpb25zKys7XG4gIH1cblxuICBzZXRDYWNoZVNpemUoY3VycmVudFNpemUpIHtcbiAgICB0aGlzLmFyY2hpdmVJZk5lZWRlZCgpO1xuICAgIHRoaXMuY3VycmVudFJlY29yZC5jYWNoZVNpemUgPSBjdXJyZW50U2l6ZTtcbiAgfVxuXG4gIGFkZEV4cGlyYXRpb24oKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuZXhwaXJhdGlvbnMrKztcbiAgfVxuXG4gIGFkZFNldCgpIHtcbiAgICB0aGlzLmFyY2hpdmVJZk5lZWRlZCgpO1xuICAgIHRoaXMuY3VycmVudFJlY29yZC5zZXRzKys7XG4gIH1cblxuICBhZGRJbnZhbGlkYXRlT25lKCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmludmFsaWRhdGVPbmUrKztcbiAgfVxuXG4gIGFkZEludmFsaWRhdGVBbGwoKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuaW52YWxpZGF0ZUFsbCsrO1xuICB9XG5cbiAgZ2V0U3RhdGlzdGljcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRzLmdldFN0YXRpc3RpY3MoKVxuICB9XG5cbiAgYXJjaGl2ZUlmTmVlZGVkKCkge1xuICAgIGlmICh0aGlzLmhvdXJzUGFzc2VkKCkgPj0gdGhpcy5zdGF0aXN0aWNUdGxJbkhvdXJzKSB7XG4gICAgICB0aGlzLmNvbGxlY3Rpb25TdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgICB0aGlzLmN1cnJlbnRUaW1lU3RhbXAgPSBnZXRUaW1lc3RhbXAodGhpcy5jb2xsZWN0aW9uU3RhcnQpO1xuICAgICAgdGhpcy5yZWNvcmRzLmluaXRGb3JDYWNoZSh0aGlzLmNhY2hlSWQsIHRoaXMuY3VycmVudFRpbWVTdGFtcCk7XG4gICAgfVxuICB9XG59Y2xhc3MgTHJ1T2JqZWN0SGl0U3RhdGlzdGljcyBleHRlbmRzIExydU9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKG1heCwgdHRsSW5Nc2VjcywgY2FjaGVJZCwgZ2xvYmFsU3RhdGlzdGljc1JlY29yZCwgc3RhdGlzdGljVHRsSW5Ib3Vycykge1xuICAgIHN1cGVyKG1heCB8fCAxMDAwLCB0dGxJbk1zZWNzIHx8IDApO1xuXG4gICAgaWYgKCFjYWNoZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhY2hlIGlkIGlzIG1hbmRhdG9yeScpXG4gICAgfVxuXG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzID0gbmV3IEhpdFN0YXRpc3RpY3MoXG4gICAgICBjYWNoZUlkLFxuICAgICAgc3RhdGlzdGljVHRsSW5Ib3VycyAhPT0gdW5kZWZpbmVkID8gc3RhdGlzdGljVHRsSW5Ib3VycyA6IDI0LFxuICAgICAgZ2xvYmFsU3RhdGlzdGljc1JlY29yZCxcbiAgICApO1xuICB9XG5cbiAgZ2V0U3RhdGlzdGljcygpIHtcbiAgICByZXR1cm4gdGhpcy5oaXRTdGF0aXN0aWNzLmdldFN0YXRpc3RpY3MoKVxuICB9XG5cbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICBzdXBlci5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZFNldCgpO1xuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5zZXRDYWNoZVNpemUodGhpcy5zaXplKTtcbiAgfVxuXG4gIGV2aWN0KCkge1xuICAgIHN1cGVyLmV2aWN0KCk7XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZEV2aWN0aW9uKCk7XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLnNldENhY2hlU2l6ZSh0aGlzLnNpemUpO1xuICB9XG5cbiAgZGVsZXRlKGtleSwgaXNFeHBpcmF0aW9uID0gZmFsc2UpIHtcbiAgICBzdXBlci5kZWxldGUoa2V5KTtcblxuICAgIGlmICghaXNFeHBpcmF0aW9uKSB7XG4gICAgICB0aGlzLmhpdFN0YXRpc3RpY3MuYWRkSW52YWxpZGF0ZU9uZSgpO1xuICAgIH1cbiAgICB0aGlzLmhpdFN0YXRpc3RpY3Muc2V0Q2FjaGVTaXplKHRoaXMuc2l6ZSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBzdXBlci5jbGVhcigpO1xuXG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZEludmFsaWRhdGVBbGwoKTtcbiAgICB0aGlzLmhpdFN0YXRpc3RpY3Muc2V0Q2FjaGVTaXplKHRoaXMuc2l6ZSk7XG4gIH1cblxuICBnZXQoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1trZXldO1xuXG4gICAgICAvLyBJdGVtIGhhcyBhbHJlYWR5IGV4cGlyZWRcbiAgICAgIGlmICh0aGlzLnR0bCA+IDAgJiYgaXRlbS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShrZXksIHRydWUpO1xuICAgICAgICB0aGlzLmhpdFN0YXRpc3RpY3MuYWRkRXhwaXJhdGlvbigpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSXRlbSBpcyBzdGlsbCBmcmVzaFxuICAgICAgdGhpcy5idW1wTHJ1KGl0ZW0pO1xuICAgICAgaWYgKCFpdGVtLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRGYWxzeUhpdCgpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBpdGVtLnZhbHVlID09PSBudWxsIHx8IGl0ZW0udmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRFbXB0eUhpdCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZEhpdCgpO1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWVcbiAgICB9XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZE1pc3MoKTtcbiAgfVxufWNsYXNzIEZpZm9PYmplY3Qge1xuICBjb25zdHJ1Y3RvcihtYXggPSAxMDAwLCB0dGxJbk1zZWNzID0gMCkge1xuICAgIGlmIChpc05hTihtYXgpIHx8IG1heCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXggdmFsdWUnKVxuICAgIH1cblxuICAgIGlmIChpc05hTih0dGxJbk1zZWNzKSB8fCB0dGxJbk1zZWNzIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR0bCB2YWx1ZScpXG4gICAgfVxuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLnNpemUgPSAwO1xuICAgIHRoaXMubWF4ID0gbWF4O1xuICAgIHRoaXMudHRsID0gdHRsSW5Nc2VjcztcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuaXRlbXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgfVxuXG4gIGRlbGV0ZShrZXkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbXMsIGtleSkpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRJdGVtID0gdGhpcy5pdGVtc1trZXldO1xuXG4gICAgICBkZWxldGUgdGhpcy5pdGVtc1trZXldO1xuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIGlmIChkZWxldGVkSXRlbS5wcmV2ICE9PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZWRJdGVtLnByZXYubmV4dCA9IGRlbGV0ZWRJdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWxldGVkSXRlbS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZWRJdGVtLm5leHQucHJldiA9IGRlbGV0ZWRJdGVtLnByZXY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpcnN0ID09PSBkZWxldGVkSXRlbSkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gZGVsZXRlZEl0ZW0ubmV4dDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGFzdCA9PT0gZGVsZXRlZEl0ZW0pIHtcbiAgICAgICAgdGhpcy5sYXN0ID0gZGVsZXRlZEl0ZW0ucHJldjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVNYW55KGtleXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVsZXRlKGtleXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maXJzdDtcblxuICAgICAgZGVsZXRlIHRoaXMuaXRlbXNbaXRlbS5rZXldO1xuXG4gICAgICBpZiAoLS10aGlzLnNpemUgPT09IDApIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpcnN0ID0gaXRlbS5uZXh0O1xuICAgICAgICB0aGlzLmZpcnN0LnByZXYgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cGlyZXNBdChrZXkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbXMsIGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zW2tleV0uZXhwaXJ5XG4gICAgfVxuICB9XG5cbiAgZ2V0KGtleSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcblxuICAgICAgaWYgKHRoaXMudHRsID4gMCAmJiBpdGVtLmV4cGlyeSA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbS52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIGdldE1hbnkoa2V5cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQucHVzaCh0aGlzLmdldChrZXlzW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAga2V5cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5pdGVtcylcbiAgfVxuXG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgLy8gUmVwbGFjZSBleGlzdGluZyBpdGVtXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1trZXldO1xuICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpdGVtLmV4cGlyeSA9IHRoaXMudHRsID4gMCA/IERhdGUubm93KCkgKyB0aGlzLnR0bCA6IHRoaXMudHRsO1xuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBBZGQgbmV3IGl0ZW1cbiAgICBpZiAodGhpcy5tYXggPiAwICYmIHRoaXMuc2l6ZSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgIHRoaXMuZXZpY3QoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtID0ge1xuICAgICAgZXhwaXJ5OiB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bCxcbiAgICAgIGtleToga2V5LFxuICAgICAgcHJldjogdGhpcy5sYXN0LFxuICAgICAgbmV4dDogbnVsbCxcbiAgICAgIHZhbHVlLFxuICAgIH07XG4gICAgdGhpcy5pdGVtc1trZXldID0gaXRlbTtcblxuICAgIGlmICgrK3RoaXMuc2l6ZSA9PT0gMSkge1xuICAgICAgdGhpcy5maXJzdCA9IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFzdC5uZXh0ID0gaXRlbTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG59ZXhwb3J0e0ZpZm9PYmplY3QgYXMgRmlmbyxGaWZvTWFwLEZpZm9PYmplY3QsSGl0U3RhdGlzdGljc1JlY29yZCxMcnVPYmplY3QgYXMgTHJ1LExydU9iamVjdEhpdFN0YXRpc3RpY3MgYXMgTHJ1SGl0U3RhdGlzdGljcyxMcnVNYXAsTHJ1T2JqZWN0LExydU9iamVjdEhpdFN0YXRpc3RpY3N9OyIsICIvLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbmltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gXCJ1bml2ZXJzYWwtdXNlci1hZ2VudFwiO1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5pbXBvcnQgeyBjcmVhdGVPQXV0aEFwcEF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC1hcHBcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dldC1hcHAtYXV0aGVudGljYXRpb24uanNcbmltcG9ydCBnaXRodWJBcHBKd3QgZnJvbSBcInVuaXZlcnNhbC1naXRodWItYXBwLWp3dFwiO1xuYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQXV0aGVudGljYXRpb24oe1xuICBhcHBJZCxcbiAgcHJpdmF0ZUtleSxcbiAgdGltZURpZmZlcmVuY2Vcbn0pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhdXRoT3B0aW9ucyA9IHtcbiAgICAgIGlkOiBhcHBJZCxcbiAgICAgIHByaXZhdGVLZXlcbiAgICB9O1xuICAgIGlmICh0aW1lRGlmZmVyZW5jZSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihhdXRoT3B0aW9ucywge1xuICAgICAgICBub3c6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDFlMykgKyB0aW1lRGlmZmVyZW5jZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGFwcEF1dGhlbnRpY2F0aW9uID0gYXdhaXQgZ2l0aHViQXBwSnd0KGF1dGhPcHRpb25zKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhcHBcIixcbiAgICAgIHRva2VuOiBhcHBBdXRoZW50aWNhdGlvbi50b2tlbixcbiAgICAgIGFwcElkOiBhcHBBdXRoZW50aWNhdGlvbi5hcHBJZCxcbiAgICAgIGV4cGlyZXNBdDogbmV3IERhdGUoYXBwQXV0aGVudGljYXRpb24uZXhwaXJhdGlvbiAqIDFlMykudG9JU09TdHJpbmcoKVxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKHByaXZhdGVLZXkgPT09IFwiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhlICdwcml2YXRlS2V5YCBvcHRpb24gY29udGFpbnMgb25seSB0aGUgZmlyc3QgbGluZSAnLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLScuIElmIHlvdSBhcmUgc2V0dGluZyBpdCB1c2luZyBhIGAuZW52YCBmaWxlLCBtYWtlIHN1cmUgaXQgaXMgc2V0IG9uIGEgc2luZ2xlIGxpbmUgd2l0aCBuZXdsaW5lcyByZXBsYWNlZCBieSAnXFxuJ1wiXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2NhY2hlLmpzXG5pbXBvcnQgeyBMcnUgfSBmcm9tIFwidG9hZC1jYWNoZVwiO1xuZnVuY3Rpb24gZ2V0Q2FjaGUoKSB7XG4gIHJldHVybiBuZXcgTHJ1KFxuICAgIC8vIGNhY2hlIG1heC4gMTUwMDAgdG9rZW5zLCB0aGF0IHdpbGwgdXNlIGxlc3MgdGhhbiAxMG1iIG1lbW9yeVxuICAgIDE1ZTMsXG4gICAgLy8gQ2FjaGUgZm9yIDEgbWludXRlIGxlc3MgdGhhbiBHaXRIdWIgZXhwaXJ5XG4gICAgMWUzICogNjAgKiA1OVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0KGNhY2hlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gb3B0aW9uc1RvQ2FjaGVLZXkob3B0aW9ucyk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IFtcbiAgICB0b2tlbixcbiAgICBjcmVhdGVkQXQsXG4gICAgZXhwaXJlc0F0LFxuICAgIHJlcG9zaXRvcnlTZWxlY3Rpb24sXG4gICAgcGVybWlzc2lvbnNTdHJpbmcsXG4gICAgc2luZ2xlRmlsZU5hbWVcbiAgXSA9IHJlc3VsdC5zcGxpdChcInxcIik7XG4gIGNvbnN0IHBlcm1pc3Npb25zID0gb3B0aW9ucy5wZXJtaXNzaW9ucyB8fCBwZXJtaXNzaW9uc1N0cmluZy5zcGxpdCgvLC8pLnJlZHVjZSgocGVybWlzc2lvbnMyLCBzdHJpbmcpID0+IHtcbiAgICBpZiAoLyEkLy50ZXN0KHN0cmluZykpIHtcbiAgICAgIHBlcm1pc3Npb25zMltzdHJpbmcuc2xpY2UoMCwgLTEpXSA9IFwid3JpdGVcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVybWlzc2lvbnMyW3N0cmluZ10gPSBcInJlYWRcIjtcbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb25zMjtcbiAgfSwge30pO1xuICByZXR1cm4ge1xuICAgIHRva2VuLFxuICAgIGNyZWF0ZWRBdCxcbiAgICBleHBpcmVzQXQsXG4gICAgcGVybWlzc2lvbnMsXG4gICAgcmVwb3NpdG9yeUlkczogb3B0aW9ucy5yZXBvc2l0b3J5SWRzLFxuICAgIHJlcG9zaXRvcnlOYW1lczogb3B0aW9ucy5yZXBvc2l0b3J5TmFtZXMsXG4gICAgc2luZ2xlRmlsZU5hbWUsXG4gICAgcmVwb3NpdG9yeVNlbGVjdGlvblxuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2V0KGNhY2hlLCBvcHRpb25zLCBkYXRhKSB7XG4gIGNvbnN0IGtleSA9IG9wdGlvbnNUb0NhY2hlS2V5KG9wdGlvbnMpO1xuICBjb25zdCBwZXJtaXNzaW9uc1N0cmluZyA9IG9wdGlvbnMucGVybWlzc2lvbnMgPyBcIlwiIDogT2JqZWN0LmtleXMoZGF0YS5wZXJtaXNzaW9ucykubWFwKFxuICAgIChuYW1lKSA9PiBgJHtuYW1lfSR7ZGF0YS5wZXJtaXNzaW9uc1tuYW1lXSA9PT0gXCJ3cml0ZVwiID8gXCIhXCIgOiBcIlwifWBcbiAgKS5qb2luKFwiLFwiKTtcbiAgY29uc3QgdmFsdWUgPSBbXG4gICAgZGF0YS50b2tlbixcbiAgICBkYXRhLmNyZWF0ZWRBdCxcbiAgICBkYXRhLmV4cGlyZXNBdCxcbiAgICBkYXRhLnJlcG9zaXRvcnlTZWxlY3Rpb24sXG4gICAgcGVybWlzc2lvbnNTdHJpbmcsXG4gICAgZGF0YS5zaW5nbGVGaWxlTmFtZVxuICBdLmpvaW4oXCJ8XCIpO1xuICBhd2FpdCBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBvcHRpb25zVG9DYWNoZUtleSh7XG4gIGluc3RhbGxhdGlvbklkLFxuICBwZXJtaXNzaW9ucyA9IHt9LFxuICByZXBvc2l0b3J5SWRzID0gW10sXG4gIHJlcG9zaXRvcnlOYW1lcyA9IFtdXG59KSB7XG4gIGNvbnN0IHBlcm1pc3Npb25zU3RyaW5nID0gT2JqZWN0LmtleXMocGVybWlzc2lvbnMpLnNvcnQoKS5tYXAoKG5hbWUpID0+IHBlcm1pc3Npb25zW25hbWVdID09PSBcInJlYWRcIiA/IG5hbWUgOiBgJHtuYW1lfSFgKS5qb2luKFwiLFwiKTtcbiAgY29uc3QgcmVwb3NpdG9yeUlkc1N0cmluZyA9IHJlcG9zaXRvcnlJZHMuc29ydCgpLmpvaW4oXCIsXCIpO1xuICBjb25zdCByZXBvc2l0b3J5TmFtZXNTdHJpbmcgPSByZXBvc2l0b3J5TmFtZXMuam9pbihcIixcIik7XG4gIHJldHVybiBbXG4gICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgcmVwb3NpdG9yeUlkc1N0cmluZyxcbiAgICByZXBvc2l0b3J5TmFtZXNTdHJpbmcsXG4gICAgcGVybWlzc2lvbnNTdHJpbmdcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihcInxcIik7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy90by10b2tlbi1hdXRoZW50aWNhdGlvbi5qc1xuZnVuY3Rpb24gdG9Ub2tlbkF1dGhlbnRpY2F0aW9uKHtcbiAgaW5zdGFsbGF0aW9uSWQsXG4gIHRva2VuLFxuICBjcmVhdGVkQXQsXG4gIGV4cGlyZXNBdCxcbiAgcmVwb3NpdG9yeVNlbGVjdGlvbixcbiAgcGVybWlzc2lvbnMsXG4gIHJlcG9zaXRvcnlJZHMsXG4gIHJlcG9zaXRvcnlOYW1lcyxcbiAgc2luZ2xlRmlsZU5hbWVcbn0pIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAge1xuICAgICAgdHlwZTogXCJ0b2tlblwiLFxuICAgICAgdG9rZW5UeXBlOiBcImluc3RhbGxhdGlvblwiLFxuICAgICAgdG9rZW4sXG4gICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgY3JlYXRlZEF0LFxuICAgICAgZXhwaXJlc0F0LFxuICAgICAgcmVwb3NpdG9yeVNlbGVjdGlvblxuICAgIH0sXG4gICAgcmVwb3NpdG9yeUlkcyA/IHsgcmVwb3NpdG9yeUlkcyB9IDogbnVsbCxcbiAgICByZXBvc2l0b3J5TmFtZXMgPyB7IHJlcG9zaXRvcnlOYW1lcyB9IDogbnVsbCxcbiAgICBzaW5nbGVGaWxlTmFtZSA/IHsgc2luZ2xlRmlsZU5hbWUgfSA6IG51bGxcbiAgKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2dldC1pbnN0YWxsYXRpb24tYXV0aGVudGljYXRpb24uanNcbmFzeW5jIGZ1bmN0aW9uIGdldEluc3RhbGxhdGlvbkF1dGhlbnRpY2F0aW9uKHN0YXRlLCBvcHRpb25zLCBjdXN0b21SZXF1ZXN0KSB7XG4gIGNvbnN0IGluc3RhbGxhdGlvbklkID0gTnVtYmVyKG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQgfHwgc3RhdGUuaW5zdGFsbGF0aW9uSWQpO1xuICBpZiAoIWluc3RhbGxhdGlvbklkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJbQG9jdG9raXQvYXV0aC1hcHBdIGluc3RhbGxhdGlvbklkIG9wdGlvbiBpcyByZXF1aXJlZCBmb3IgaW5zdGFsbGF0aW9uIGF1dGhlbnRpY2F0aW9uLlwiXG4gICAgKTtcbiAgfVxuICBpZiAob3B0aW9ucy5mYWN0b3J5KSB7XG4gICAgY29uc3QgeyB0eXBlLCBmYWN0b3J5LCBvYXV0aEFwcCwgLi4uZmFjdG9yeUF1dGhPcHRpb25zIH0gPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIHJldHVybiBmYWN0b3J5KGZhY3RvcnlBdXRoT3B0aW9ucyk7XG4gIH1cbiAgY29uc3QgcmVxdWVzdCA9IGN1c3RvbVJlcXVlc3QgfHwgc3RhdGUucmVxdWVzdDtcbiAgcmV0dXJuIGdldEluc3RhbGxhdGlvbkF1dGhlbnRpY2F0aW9uQ29uY3VycmVudGx5KFxuICAgIHN0YXRlLFxuICAgIHsgLi4ub3B0aW9ucywgaW5zdGFsbGF0aW9uSWQgfSxcbiAgICByZXF1ZXN0XG4gICk7XG59XG52YXIgcGVuZGluZ1Byb21pc2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldEluc3RhbGxhdGlvbkF1dGhlbnRpY2F0aW9uQ29uY3VycmVudGx5KHN0YXRlLCBvcHRpb25zLCByZXF1ZXN0KSB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gb3B0aW9uc1RvQ2FjaGVLZXkob3B0aW9ucyk7XG4gIGlmIChwZW5kaW5nUHJvbWlzZXMuaGFzKGNhY2hlS2V5KSkge1xuICAgIHJldHVybiBwZW5kaW5nUHJvbWlzZXMuZ2V0KGNhY2hlS2V5KTtcbiAgfVxuICBjb25zdCBwcm9taXNlID0gZ2V0SW5zdGFsbGF0aW9uQXV0aGVudGljYXRpb25JbXBsKFxuICAgIHN0YXRlLFxuICAgIG9wdGlvbnMsXG4gICAgcmVxdWVzdFxuICApLmZpbmFsbHkoKCkgPT4gcGVuZGluZ1Byb21pc2VzLmRlbGV0ZShjYWNoZUtleSkpO1xuICBwZW5kaW5nUHJvbWlzZXMuc2V0KGNhY2hlS2V5LCBwcm9taXNlKTtcbiAgcmV0dXJuIHByb21pc2U7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbkltcGwoc3RhdGUsIG9wdGlvbnMsIHJlcXVlc3QpIHtcbiAgaWYgKCFvcHRpb25zLnJlZnJlc2gpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXQoc3RhdGUuY2FjaGUsIG9wdGlvbnMpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdG9rZW46IHRva2VuMixcbiAgICAgICAgY3JlYXRlZEF0OiBjcmVhdGVkQXQyLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdDIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9uczIsXG4gICAgICAgIHJlcG9zaXRvcnlJZHM6IHJlcG9zaXRvcnlJZHMyLFxuICAgICAgICByZXBvc2l0b3J5TmFtZXM6IHJlcG9zaXRvcnlOYW1lczIsXG4gICAgICAgIHNpbmdsZUZpbGVOYW1lOiBzaW5nbGVGaWxlTmFtZTIsXG4gICAgICAgIHJlcG9zaXRvcnlTZWxlY3Rpb246IHJlcG9zaXRvcnlTZWxlY3Rpb24yXG4gICAgICB9ID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHRvVG9rZW5BdXRoZW50aWNhdGlvbih7XG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBvcHRpb25zLmluc3RhbGxhdGlvbklkLFxuICAgICAgICB0b2tlbjogdG9rZW4yLFxuICAgICAgICBjcmVhdGVkQXQ6IGNyZWF0ZWRBdDIsXG4gICAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0MixcbiAgICAgICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zMixcbiAgICAgICAgcmVwb3NpdG9yeVNlbGVjdGlvbjogcmVwb3NpdG9yeVNlbGVjdGlvbjIsXG4gICAgICAgIHJlcG9zaXRvcnlJZHM6IHJlcG9zaXRvcnlJZHMyLFxuICAgICAgICByZXBvc2l0b3J5TmFtZXM6IHJlcG9zaXRvcnlOYW1lczIsXG4gICAgICAgIHNpbmdsZUZpbGVOYW1lOiBzaW5nbGVGaWxlTmFtZTJcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBjb25zdCBhcHBBdXRoZW50aWNhdGlvbiA9IGF3YWl0IGdldEFwcEF1dGhlbnRpY2F0aW9uKHN0YXRlKTtcbiAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICBpbnN0YWxsYXRpb25faWQ6IG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQsXG4gICAgbWVkaWFUeXBlOiB7XG4gICAgICBwcmV2aWV3czogW1wibWFjaGluZS1tYW5cIl1cbiAgICB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIGF1dGhvcml6YXRpb246IGBiZWFyZXIgJHthcHBBdXRoZW50aWNhdGlvbi50b2tlbn1gXG4gICAgfVxuICB9O1xuICBpZiAob3B0aW9ucy5yZXBvc2l0b3J5SWRzKSB7XG4gICAgT2JqZWN0LmFzc2lnbihwYXlsb2FkLCB7IHJlcG9zaXRvcnlfaWRzOiBvcHRpb25zLnJlcG9zaXRvcnlJZHMgfSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMucmVwb3NpdG9yeU5hbWVzKSB7XG4gICAgT2JqZWN0LmFzc2lnbihwYXlsb2FkLCB7XG4gICAgICByZXBvc2l0b3JpZXM6IG9wdGlvbnMucmVwb3NpdG9yeU5hbWVzXG4gICAgfSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMucGVybWlzc2lvbnMpIHtcbiAgICBPYmplY3QuYXNzaWduKHBheWxvYWQsIHsgcGVybWlzc2lvbnM6IG9wdGlvbnMucGVybWlzc2lvbnMgfSk7XG4gIH1cbiAgY29uc3Qge1xuICAgIGRhdGE6IHtcbiAgICAgIHRva2VuLFxuICAgICAgZXhwaXJlc19hdDogZXhwaXJlc0F0LFxuICAgICAgcmVwb3NpdG9yaWVzLFxuICAgICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zT3B0aW9uYWwsXG4gICAgICByZXBvc2l0b3J5X3NlbGVjdGlvbjogcmVwb3NpdG9yeVNlbGVjdGlvbk9wdGlvbmFsLFxuICAgICAgc2luZ2xlX2ZpbGU6IHNpbmdsZUZpbGVOYW1lXG4gICAgfVxuICB9ID0gYXdhaXQgcmVxdWVzdChcbiAgICBcIlBPU1QgL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L2FjY2Vzc190b2tlbnNcIixcbiAgICBwYXlsb2FkXG4gICk7XG4gIGNvbnN0IHBlcm1pc3Npb25zID0gcGVybWlzc2lvbnNPcHRpb25hbCB8fCB7fTtcbiAgY29uc3QgcmVwb3NpdG9yeVNlbGVjdGlvbiA9IHJlcG9zaXRvcnlTZWxlY3Rpb25PcHRpb25hbCB8fCBcImFsbFwiO1xuICBjb25zdCByZXBvc2l0b3J5SWRzID0gcmVwb3NpdG9yaWVzID8gcmVwb3NpdG9yaWVzLm1hcCgocikgPT4gci5pZCkgOiB2b2lkIDA7XG4gIGNvbnN0IHJlcG9zaXRvcnlOYW1lcyA9IHJlcG9zaXRvcmllcyA/IHJlcG9zaXRvcmllcy5tYXAoKHJlcG8pID0+IHJlcG8ubmFtZSkgOiB2b2lkIDA7XG4gIGNvbnN0IGNyZWF0ZWRBdCA9ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgY29uc3QgY2FjaGVPcHRpb25zID0ge1xuICAgIHRva2VuLFxuICAgIGNyZWF0ZWRBdCxcbiAgICBleHBpcmVzQXQsXG4gICAgcmVwb3NpdG9yeVNlbGVjdGlvbixcbiAgICBwZXJtaXNzaW9ucyxcbiAgICByZXBvc2l0b3J5SWRzLFxuICAgIHJlcG9zaXRvcnlOYW1lc1xuICB9O1xuICBpZiAoc2luZ2xlRmlsZU5hbWUpIHtcbiAgICBPYmplY3QuYXNzaWduKHBheWxvYWQsIHsgc2luZ2xlRmlsZU5hbWUgfSk7XG4gIH1cbiAgYXdhaXQgc2V0KHN0YXRlLmNhY2hlLCBvcHRpb25zLCBjYWNoZU9wdGlvbnMpO1xuICBjb25zdCBjYWNoZURhdGEgPSB7XG4gICAgaW5zdGFsbGF0aW9uSWQ6IG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQsXG4gICAgdG9rZW4sXG4gICAgY3JlYXRlZEF0LFxuICAgIGV4cGlyZXNBdCxcbiAgICByZXBvc2l0b3J5U2VsZWN0aW9uLFxuICAgIHBlcm1pc3Npb25zLFxuICAgIHJlcG9zaXRvcnlJZHMsXG4gICAgcmVwb3NpdG9yeU5hbWVzXG4gIH07XG4gIGlmIChzaW5nbGVGaWxlTmFtZSkge1xuICAgIE9iamVjdC5hc3NpZ24oY2FjaGVEYXRhLCB7IHNpbmdsZUZpbGVOYW1lIH0pO1xuICB9XG4gIHJldHVybiB0b1Rva2VuQXV0aGVudGljYXRpb24oY2FjaGVEYXRhKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2F1dGguanNcbmFzeW5jIGZ1bmN0aW9uIGF1dGgoc3RhdGUsIGF1dGhPcHRpb25zKSB7XG4gIHN3aXRjaCAoYXV0aE9wdGlvbnMudHlwZSkge1xuICAgIGNhc2UgXCJhcHBcIjpcbiAgICAgIHJldHVybiBnZXRBcHBBdXRoZW50aWNhdGlvbihzdGF0ZSk7XG4gICAgY2FzZSBcIm9hdXRoLWFwcFwiOlxuICAgICAgcmV0dXJuIHN0YXRlLm9hdXRoQXBwKHsgdHlwZTogXCJvYXV0aC1hcHBcIiB9KTtcbiAgICBjYXNlIFwiaW5zdGFsbGF0aW9uXCI6XG4gICAgICBhdXRoT3B0aW9ucztcbiAgICAgIHJldHVybiBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbihzdGF0ZSwge1xuICAgICAgICAuLi5hdXRoT3B0aW9ucyxcbiAgICAgICAgdHlwZTogXCJpbnN0YWxsYXRpb25cIlxuICAgICAgfSk7XG4gICAgY2FzZSBcIm9hdXRoLXVzZXJcIjpcbiAgICAgIHJldHVybiBzdGF0ZS5vYXV0aEFwcChhdXRoT3B0aW9ucyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhdXRoIHR5cGU6ICR7YXV0aE9wdGlvbnMudHlwZX1gKTtcbiAgfVxufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xuaW1wb3J0IHsgcmVxdWlyZXNCYXNpY0F1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXCI7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdC1lcnJvclwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvcmVxdWlyZXMtYXBwLWF1dGguanNcbnZhciBQQVRIUyA9IFtcbiAgXCIvYXBwXCIsXG4gIFwiL2FwcC9ob29rL2NvbmZpZ1wiLFxuICBcIi9hcHAvaG9vay9kZWxpdmVyaWVzXCIsXG4gIFwiL2FwcC9ob29rL2RlbGl2ZXJpZXMve2RlbGl2ZXJ5X2lkfVwiLFxuICBcIi9hcHAvaG9vay9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH0vYXR0ZW1wdHNcIixcbiAgXCIvYXBwL2luc3RhbGxhdGlvbnNcIixcbiAgXCIvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH1cIixcbiAgXCIvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vYWNjZXNzX3Rva2Vuc1wiLFxuICBcIi9hcHAvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9zdXNwZW5kZWRcIixcbiAgXCIvYXBwL2luc3RhbGxhdGlvbi1yZXF1ZXN0c1wiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL2FjY291bnRzL3thY2NvdW50X2lkfVwiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3BsYW5cIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFuc1wiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3BsYW5zL3twbGFuX2lkfS9hY2NvdW50c1wiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvYWNjb3VudHMve2FjY291bnRfaWR9XCIsXG4gIFwiL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9wbGFuXCIsXG4gIFwiL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9wbGFuc1wiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhbnMve3BsYW5faWR9L2FjY291bnRzXCIsXG4gIFwiL29yZ3Mve29yZ30vaW5zdGFsbGF0aW9uXCIsXG4gIFwiL3JlcG9zL3tvd25lcn0ve3JlcG99L2luc3RhbGxhdGlvblwiLFxuICBcIi91c2Vycy97dXNlcm5hbWV9L2luc3RhbGxhdGlvblwiXG5dO1xuZnVuY3Rpb24gcm91dGVNYXRjaGVyKHBhdGhzKSB7XG4gIGNvbnN0IHJlZ2V4ZXMgPSBwYXRocy5tYXAoXG4gICAgKHApID0+IHAuc3BsaXQoXCIvXCIpLm1hcCgoYykgPT4gYy5zdGFydHNXaXRoKFwie1wiKSA/IFwiKD86Lis/KVwiIDogYykuam9pbihcIi9cIilcbiAgKTtcbiAgY29uc3QgcmVnZXggPSBgXig/OiR7cmVnZXhlcy5tYXAoKHIpID0+IGAoPzoke3J9KWApLmpvaW4oXCJ8XCIpfSkkYDtcbiAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXgsIFwiaVwiKTtcbn1cbnZhciBSRUdFWCA9IHJvdXRlTWF0Y2hlcihQQVRIUyk7XG5mdW5jdGlvbiByZXF1aXJlc0FwcEF1dGgodXJsKSB7XG4gIHJldHVybiAhIXVybCAmJiBSRUdFWC50ZXN0KHVybC5zcGxpdChcIj9cIilbMF0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xudmFyIEZJVkVfU0VDT05EU19JTl9NUyA9IDUgKiAxZTM7XG5mdW5jdGlvbiBpc05vdFRpbWVTa2V3RXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuICEoZXJyb3IubWVzc2FnZS5tYXRjaChcbiAgICAvJ0V4cGlyYXRpb24gdGltZScgY2xhaW0gXFwoJ2V4cCdcXCkgbXVzdCBiZSBhIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBmdXR1cmUgdGltZSBhdCB3aGljaCB0aGUgYXNzZXJ0aW9uIGV4cGlyZXMvXG4gICkgfHwgZXJyb3IubWVzc2FnZS5tYXRjaChcbiAgICAvJ0lzc3VlZCBhdCcgY2xhaW0gXFwoJ2lhdCdcXCkgbXVzdCBiZSBhbiBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgdGltZSB0aGF0IHRoZSBhc3NlcnRpb24gd2FzIGlzc3VlZC9cbiAgKSk7XG59XG5hc3luYyBmdW5jdGlvbiBob29rKHN0YXRlLCByZXF1ZXN0LCByb3V0ZSwgcGFyYW1ldGVycykge1xuICBjb25zdCBlbmRwb2ludCA9IHJlcXVlc3QuZW5kcG9pbnQubWVyZ2Uocm91dGUsIHBhcmFtZXRlcnMpO1xuICBjb25zdCB1cmwgPSBlbmRwb2ludC51cmw7XG4gIGlmICgvXFwvbG9naW5cXC9vYXV0aFxcL2FjY2Vzc190b2tlbiQvLnRlc3QodXJsKSkge1xuICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgfVxuICBpZiAocmVxdWlyZXNBcHBBdXRoKHVybC5yZXBsYWNlKHJlcXVlc3QuZW5kcG9pbnQuREVGQVVMVFMuYmFzZVVybCwgXCJcIikpKSB7XG4gICAgY29uc3QgeyB0b2tlbjogdG9rZW4yIH0gPSBhd2FpdCBnZXRBcHBBdXRoZW50aWNhdGlvbihzdGF0ZSk7XG4gICAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gYGJlYXJlciAke3Rva2VuMn1gO1xuICAgIGxldCByZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KGVuZHBvaW50KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzTm90VGltZVNrZXdFcnJvcihlcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGVycm9yLnJlc3BvbnNlLmhlYWRlcnMuZGF0ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmZsb29yKFxuICAgICAgICAoRGF0ZS5wYXJzZShlcnJvci5yZXNwb25zZS5oZWFkZXJzLmRhdGUpIC0gRGF0ZS5wYXJzZSgoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLnRvU3RyaW5nKCkpKSAvIDFlM1xuICAgICAgKTtcbiAgICAgIHN0YXRlLmxvZy53YXJuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgc3RhdGUubG9nLndhcm4oXG4gICAgICAgIGBbQG9jdG9raXQvYXV0aC1hcHBdIEdpdEh1YiBBUEkgdGltZSBhbmQgc3lzdGVtIHRpbWUgYXJlIGRpZmZlcmVudCBieSAke2RpZmZ9IHNlY29uZHMuIFJldHJ5aW5nIHJlcXVlc3Qgd2l0aCB0aGUgZGlmZmVyZW5jZSBhY2NvdW50ZWQgZm9yLmBcbiAgICAgICk7XG4gICAgICBjb25zdCB7IHRva2VuOiB0b2tlbjMgfSA9IGF3YWl0IGdldEFwcEF1dGhlbnRpY2F0aW9uKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHRpbWVEaWZmZXJlbmNlOiBkaWZmXG4gICAgICB9KTtcbiAgICAgIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IGBiZWFyZXIgJHt0b2tlbjN9YDtcbiAgICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG4gIGlmIChyZXF1aXJlc0Jhc2ljQXV0aCh1cmwpKSB7XG4gICAgY29uc3QgYXV0aGVudGljYXRpb24gPSBhd2FpdCBzdGF0ZS5vYXV0aEFwcCh7IHR5cGU6IFwib2F1dGgtYXBwXCIgfSk7XG4gICAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gYXV0aGVudGljYXRpb24uaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgfVxuICBjb25zdCB7IHRva2VuLCBjcmVhdGVkQXQgfSA9IGF3YWl0IGdldEluc3RhbGxhdGlvbkF1dGhlbnRpY2F0aW9uKFxuICAgIHN0YXRlLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVEJEXG4gICAge30sXG4gICAgcmVxdWVzdC5kZWZhdWx0cyh7IGJhc2VVcmw6IGVuZHBvaW50LmJhc2VVcmwgfSlcbiAgKTtcbiAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gYHRva2VuICR7dG9rZW59YDtcbiAgcmV0dXJuIHNlbmRSZXF1ZXN0V2l0aFJldHJpZXMoXG4gICAgc3RhdGUsXG4gICAgcmVxdWVzdCxcbiAgICBlbmRwb2ludCxcbiAgICBjcmVhdGVkQXRcbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0V2l0aFJldHJpZXMoc3RhdGUsIHJlcXVlc3QsIG9wdGlvbnMsIGNyZWF0ZWRBdCwgcmV0cmllcyA9IDApIHtcbiAgY29uc3QgdGltZVNpbmNlVG9rZW5DcmVhdGlvbkluTXMgPSArLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkgLSArbmV3IERhdGUoY3JlYXRlZEF0KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmVxdWVzdChvcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSA0MDEpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBpZiAodGltZVNpbmNlVG9rZW5DcmVhdGlvbkluTXMgPj0gRklWRV9TRUNPTkRTX0lOX01TKSB7XG4gICAgICBpZiAocmV0cmllcyA+IDApIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBBZnRlciAke3JldHJpZXN9IHJldHJpZXMgd2l0aGluICR7dGltZVNpbmNlVG9rZW5DcmVhdGlvbkluTXMgLyAxZTN9cyBvZiBjcmVhdGluZyB0aGUgaW5zdGFsbGF0aW9uIGFjY2VzcyB0b2tlbiwgdGhlIHJlc3BvbnNlIHJlbWFpbnMgNDAxLiBBdCB0aGlzIHBvaW50LCB0aGUgY2F1c2UgbWF5IGJlIGFuIGF1dGhlbnRpY2F0aW9uIHByb2JsZW0gb3IgYSBzeXN0ZW0gb3V0YWdlLiBQbGVhc2UgY2hlY2sgaHR0cHM6Ly93d3cuZ2l0aHVic3RhdHVzLmNvbSBmb3Igc3RhdHVzIGluZm9ybWF0aW9uYDtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICArK3JldHJpZXM7XG4gICAgY29uc3QgYXdhaXRUaW1lID0gcmV0cmllcyAqIDFlMztcbiAgICBzdGF0ZS5sb2cud2FybihcbiAgICAgIGBbQG9jdG9raXQvYXV0aC1hcHBdIFJldHJ5aW5nIGFmdGVyIDQwMSByZXNwb25zZSB0byBhY2NvdW50IGZvciB0b2tlbiByZXBsaWNhdGlvbiBkZWxheSAocmV0cnk6ICR7cmV0cmllc30sIHdhaXQ6ICR7YXdhaXRUaW1lIC8gMWUzfXMpYFxuICAgICk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgYXdhaXRUaW1lKSk7XG4gICAgcmV0dXJuIHNlbmRSZXF1ZXN0V2l0aFJldHJpZXMoc3RhdGUsIHJlcXVlc3QsIG9wdGlvbnMsIGNyZWF0ZWRBdCwgcmV0cmllcyk7XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCI3LjIuMlwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbmltcG9ydCB7IGNyZWF0ZU9BdXRoVXNlckF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXCI7XG5mdW5jdGlvbiBjcmVhdGVBcHBBdXRoKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zLmFwcElkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW0BvY3Rva2l0L2F1dGgtYXBwXSBhcHBJZCBvcHRpb24gaXMgcmVxdWlyZWRcIik7XG4gIH1cbiAgaWYgKCFvcHRpb25zLnByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJbQG9jdG9raXQvYXV0aC1hcHBdIHByaXZhdGVLZXkgb3B0aW9uIGlzIHJlcXVpcmVkXCIpO1xuICB9XG4gIGlmIChcImluc3RhbGxhdGlvbklkXCIgaW4gb3B0aW9ucyAmJiAhb3B0aW9ucy5pbnN0YWxsYXRpb25JZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiW0BvY3Rva2l0L2F1dGgtYXBwXSBpbnN0YWxsYXRpb25JZCBpcyBzZXQgdG8gYSBmYWxzeSB2YWx1ZVwiXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2cgPSBvcHRpb25zLmxvZyB8fCB7fTtcbiAgaWYgKHR5cGVvZiBsb2cud2FybiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgbG9nLndhcm4gPSBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtcbiAgfVxuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0LmRlZmF1bHRzKHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcInVzZXItYWdlbnRcIjogYG9jdG9raXQtYXV0aC1hcHAuanMvJHtWRVJTSU9OfSAke2dldFVzZXJBZ2VudCgpfWBcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oXG4gICAge1xuICAgICAgcmVxdWVzdCxcbiAgICAgIGNhY2hlOiBnZXRDYWNoZSgpXG4gICAgfSxcbiAgICBvcHRpb25zLFxuICAgIG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQgPyB7IGluc3RhbGxhdGlvbklkOiBOdW1iZXIob3B0aW9ucy5pbnN0YWxsYXRpb25JZCkgfSA6IHt9LFxuICAgIHtcbiAgICAgIGxvZyxcbiAgICAgIG9hdXRoQXBwOiBjcmVhdGVPQXV0aEFwcEF1dGgoe1xuICAgICAgICBjbGllbnRUeXBlOiBcImdpdGh1Yi1hcHBcIixcbiAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQgfHwgXCJcIixcbiAgICAgICAgY2xpZW50U2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCB8fCBcIlwiLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9KVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aC5iaW5kKG51bGwsIHN0YXRlKSwge1xuICAgIGhvb2s6IGhvb2suYmluZChudWxsLCBzdGF0ZSlcbiAgfSk7XG59XG5leHBvcnQge1xuICBjcmVhdGVBcHBBdXRoLFxuICBjcmVhdGVPQXV0aFVzZXJBdXRoXG59O1xuIiwgIi8vIEB0cy1jaGVja1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIoc3RhdGUsIG5hbWUsIG1ldGhvZCwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibWV0aG9kIGZvciBiZWZvcmUgaG9vayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShuYW1lKSkge1xuICAgIHJldHVybiBuYW1lLnJldmVyc2UoKS5yZWR1Y2UoKGNhbGxiYWNrLCBuYW1lKSA9PiB7XG4gICAgICByZXR1cm4gcmVnaXN0ZXIuYmluZChudWxsLCBzdGF0ZSwgbmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgIH0sIG1ldGhvZCkoKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICBpZiAoIXN0YXRlLnJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICByZXR1cm4gbWV0aG9kKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZS5yZWdpc3RyeVtuYW1lXS5yZWR1Y2UoKG1ldGhvZCwgcmVnaXN0ZXJlZCkgPT4ge1xuICAgICAgcmV0dXJuIHJlZ2lzdGVyZWQuaG9vay5iaW5kKG51bGwsIG1ldGhvZCwgb3B0aW9ucyk7XG4gICAgfSwgbWV0aG9kKSgpO1xuICB9KTtcbn1cbiIsICIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhvb2soc3RhdGUsIGtpbmQsIG5hbWUsIGhvb2spIHtcbiAgY29uc3Qgb3JpZyA9IGhvb2s7XG4gIGlmICghc3RhdGUucmVnaXN0cnlbbmFtZV0pIHtcbiAgICBzdGF0ZS5yZWdpc3RyeVtuYW1lXSA9IFtdO1xuICB9XG5cbiAgaWYgKGtpbmQgPT09IFwiYmVmb3JlXCIpIHtcbiAgICBob29rID0gKG1ldGhvZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKG9yaWcuYmluZChudWxsLCBvcHRpb25zKSlcbiAgICAgICAgLnRoZW4obWV0aG9kLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICAgIH07XG4gIH1cblxuICBpZiAoa2luZCA9PT0gXCJhZnRlclwiKSB7XG4gICAgaG9vayA9IChtZXRob2QsIG9wdGlvbnMpID0+IHtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLnRoZW4obWV0aG9kLmJpbmQobnVsbCwgb3B0aW9ucykpXG4gICAgICAgIC50aGVuKChyZXN1bHRfKSA9PiB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0XztcbiAgICAgICAgICByZXR1cm4gb3JpZyhyZXN1bHQsIG9wdGlvbnMpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChraW5kID09PSBcImVycm9yXCIpIHtcbiAgICBob29rID0gKG1ldGhvZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKG1ldGhvZC5iaW5kKG51bGwsIG9wdGlvbnMpKVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9yaWcoZXJyb3IsIG9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGUucmVnaXN0cnlbbmFtZV0ucHVzaCh7XG4gICAgaG9vazogaG9vayxcbiAgICBvcmlnOiBvcmlnLFxuICB9KTtcbn1cbiIsICIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUhvb2soc3RhdGUsIG5hbWUsIG1ldGhvZCkge1xuICBpZiAoIXN0YXRlLnJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBzdGF0ZS5yZWdpc3RyeVtuYW1lXVxuICAgIC5tYXAoKHJlZ2lzdGVyZWQpID0+IHtcbiAgICAgIHJldHVybiByZWdpc3RlcmVkLm9yaWc7XG4gICAgfSlcbiAgICAuaW5kZXhPZihtZXRob2QpO1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5yZWdpc3RyeVtuYW1lXS5zcGxpY2UoaW5kZXgsIDEpO1xufVxuIiwgIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL2xpYi9yZWdpc3Rlci5qc1wiO1xuaW1wb3J0IHsgYWRkSG9vayB9IGZyb20gXCIuL2xpYi9hZGQuanNcIjtcbmltcG9ydCB7IHJlbW92ZUhvb2sgfSBmcm9tIFwiLi9saWIvcmVtb3ZlLmpzXCI7XG5cbi8vIGJpbmQgd2l0aCBhcnJheSBvZiBhcmd1bWVudHM6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTc5MjkxM1xuY29uc3QgYmluZCA9IEZ1bmN0aW9uLmJpbmQ7XG5jb25zdCBiaW5kYWJsZSA9IGJpbmQuYmluZChiaW5kKTtcblxuZnVuY3Rpb24gYmluZEFwaShob29rLCBzdGF0ZSwgbmFtZSkge1xuICBjb25zdCByZW1vdmVIb29rUmVmID0gYmluZGFibGUocmVtb3ZlSG9vaywgbnVsbCkuYXBwbHkoXG4gICAgbnVsbCxcbiAgICBuYW1lID8gW3N0YXRlLCBuYW1lXSA6IFtzdGF0ZV1cbiAgKTtcbiAgaG9vay5hcGkgPSB7IHJlbW92ZTogcmVtb3ZlSG9va1JlZiB9O1xuICBob29rLnJlbW92ZSA9IHJlbW92ZUhvb2tSZWY7XG4gIFtcImJlZm9yZVwiLCBcImVycm9yXCIsIFwiYWZ0ZXJcIiwgXCJ3cmFwXCJdLmZvckVhY2goKGtpbmQpID0+IHtcbiAgICBjb25zdCBhcmdzID0gbmFtZSA/IFtzdGF0ZSwga2luZCwgbmFtZV0gOiBbc3RhdGUsIGtpbmRdO1xuICAgIGhvb2tba2luZF0gPSBob29rLmFwaVtraW5kXSA9IGJpbmRhYmxlKGFkZEhvb2ssIG51bGwpLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gU2luZ3VsYXIoKSB7XG4gIGNvbnN0IHNpbmd1bGFySG9va05hbWUgPSBTeW1ib2woXCJTaW5ndWxhclwiKTtcbiAgY29uc3Qgc2luZ3VsYXJIb29rU3RhdGUgPSB7XG4gICAgcmVnaXN0cnk6IHt9LFxuICB9O1xuICBjb25zdCBzaW5ndWxhckhvb2sgPSByZWdpc3Rlci5iaW5kKG51bGwsIHNpbmd1bGFySG9va1N0YXRlLCBzaW5ndWxhckhvb2tOYW1lKTtcbiAgYmluZEFwaShzaW5ndWxhckhvb2ssIHNpbmd1bGFySG9va1N0YXRlLCBzaW5ndWxhckhvb2tOYW1lKTtcbiAgcmV0dXJuIHNpbmd1bGFySG9vaztcbn1cblxuZnVuY3Rpb24gQ29sbGVjdGlvbigpIHtcbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgcmVnaXN0cnk6IHt9LFxuICB9O1xuXG4gIGNvbnN0IGhvb2sgPSByZWdpc3Rlci5iaW5kKG51bGwsIHN0YXRlKTtcbiAgYmluZEFwaShob29rLCBzdGF0ZSk7XG5cbiAgcmV0dXJuIGhvb2s7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHsgU2luZ3VsYXIsIENvbGxlY3Rpb24gfTtcbiIsICIvLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiMC4wLjAtZGV2ZWxvcG1lbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3dpdGgtZGVmYXVsdHMuanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgUmVxdWVzdDIgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZ3JhcGhxbC5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBSZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2Vycm9yLmpzXG5mdW5jdGlvbiBfYnVpbGRNZXNzYWdlRm9yUmVzcG9uc2VFcnJvcnMoZGF0YSkge1xuICByZXR1cm4gYFJlcXVlc3QgZmFpbGVkIGR1ZSB0byBmb2xsb3dpbmcgcmVzcG9uc2UgZXJyb3JzOlxuYCArIGRhdGEuZXJyb3JzLm1hcCgoZSkgPT4gYCAtICR7ZS5tZXNzYWdlfWApLmpvaW4oXCJcXG5cIik7XG59XG52YXIgR3JhcGhxbFJlc3BvbnNlRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVxdWVzdDIsIGhlYWRlcnMsIHJlc3BvbnNlKSB7XG4gICAgc3VwZXIoX2J1aWxkTWVzc2FnZUZvclJlc3BvbnNlRXJyb3JzKHJlc3BvbnNlKSk7XG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDI7XG4gICAgdGhpcy5oZWFkZXJzID0gaGVhZGVycztcbiAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgdGhpcy5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnM7XG4gICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH1cbiAgfVxuICBuYW1lID0gXCJHcmFwaHFsUmVzcG9uc2VFcnJvclwiO1xuICBlcnJvcnM7XG4gIGRhdGE7XG59O1xuXG4vLyBwa2cvZGlzdC1zcmMvZ3JhcGhxbC5qc1xudmFyIE5PTl9WQVJJQUJMRV9PUFRJT05TID0gW1xuICBcIm1ldGhvZFwiLFxuICBcImJhc2VVcmxcIixcbiAgXCJ1cmxcIixcbiAgXCJoZWFkZXJzXCIsXG4gIFwicmVxdWVzdFwiLFxuICBcInF1ZXJ5XCIsXG4gIFwibWVkaWFUeXBlXCIsXG4gIFwib3BlcmF0aW9uTmFtZVwiXG5dO1xudmFyIEZPUkJJRERFTl9WQVJJQUJMRV9PUFRJT05TID0gW1wicXVlcnlcIiwgXCJtZXRob2RcIiwgXCJ1cmxcIl07XG52YXIgR0hFU19WM19TVUZGSVhfUkVHRVggPSAvXFwvYXBpXFwvdjNcXC8/JC87XG5mdW5jdGlvbiBncmFwaHFsKHJlcXVlc3QyLCBxdWVyeSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgcXVlcnkgPT09IFwic3RyaW5nXCIgJiYgXCJxdWVyeVwiIGluIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKGBbQG9jdG9raXQvZ3JhcGhxbF0gXCJxdWVyeVwiIGNhbm5vdCBiZSB1c2VkIGFzIHZhcmlhYmxlIG5hbWVgKVxuICAgICAgKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKCFGT1JCSURERU5fVkFSSUFCTEVfT1BUSU9OUy5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQG9jdG9raXQvZ3JhcGhxbF0gXCIke2tleX1cIiBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZSBuYW1lYFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJzZWRPcHRpb25zID0gdHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiID8gT2JqZWN0LmFzc2lnbih7IHF1ZXJ5IH0sIG9wdGlvbnMpIDogcXVlcnk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gT2JqZWN0LmtleXMoXG4gICAgcGFyc2VkT3B0aW9uc1xuICApLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICBpZiAoTk9OX1ZBUklBQkxFX09QVElPTlMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZWRPcHRpb25zW2tleV07XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdC52YXJpYWJsZXMpIHtcbiAgICAgIHJlc3VsdC52YXJpYWJsZXMgPSB7fTtcbiAgICB9XG4gICAgcmVzdWx0LnZhcmlhYmxlc1trZXldID0gcGFyc2VkT3B0aW9uc1trZXldO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHt9KTtcbiAgY29uc3QgYmFzZVVybCA9IHBhcnNlZE9wdGlvbnMuYmFzZVVybCB8fCByZXF1ZXN0Mi5lbmRwb2ludC5ERUZBVUxUUy5iYXNlVXJsO1xuICBpZiAoR0hFU19WM19TVUZGSVhfUkVHRVgudGVzdChiYXNlVXJsKSkge1xuICAgIHJlcXVlc3RPcHRpb25zLnVybCA9IGJhc2VVcmwucmVwbGFjZShHSEVTX1YzX1NVRkZJWF9SRUdFWCwgXCIvYXBpL2dyYXBocWxcIik7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3QyKHJlcXVlc3RPcHRpb25zKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXNwb25zZS5kYXRhLmVycm9ycykge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgaGVhZGVyc1trZXldID0gcmVzcG9uc2UuaGVhZGVyc1trZXldO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEdyYXBocWxSZXNwb25zZUVycm9yKFxuICAgICAgICByZXF1ZXN0T3B0aW9ucyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgcmVzcG9uc2UuZGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy93aXRoLWRlZmF1bHRzLmpzXG5mdW5jdGlvbiB3aXRoRGVmYXVsdHMocmVxdWVzdDIsIG5ld0RlZmF1bHRzKSB7XG4gIGNvbnN0IG5ld1JlcXVlc3QgPSByZXF1ZXN0Mi5kZWZhdWx0cyhuZXdEZWZhdWx0cyk7XG4gIGNvbnN0IG5ld0FwaSA9IChxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBncmFwaHFsKG5ld1JlcXVlc3QsIHF1ZXJ5LCBvcHRpb25zKTtcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3QXBpLCB7XG4gICAgZGVmYXVsdHM6IHdpdGhEZWZhdWx0cy5iaW5kKG51bGwsIG5ld1JlcXVlc3QpLFxuICAgIGVuZHBvaW50OiBuZXdSZXF1ZXN0LmVuZHBvaW50XG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbnZhciBncmFwaHFsMiA9IHdpdGhEZWZhdWx0cyhyZXF1ZXN0LCB7XG4gIGhlYWRlcnM6IHtcbiAgICBcInVzZXItYWdlbnRcIjogYG9jdG9raXQtZ3JhcGhxbC5qcy8ke1ZFUlNJT059ICR7Z2V0VXNlckFnZW50KCl9YFxuICB9LFxuICBtZXRob2Q6IFwiUE9TVFwiLFxuICB1cmw6IFwiL2dyYXBocWxcIlxufSk7XG5mdW5jdGlvbiB3aXRoQ3VzdG9tUmVxdWVzdChjdXN0b21SZXF1ZXN0KSB7XG4gIHJldHVybiB3aXRoRGVmYXVsdHMoY3VzdG9tUmVxdWVzdCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgdXJsOiBcIi9ncmFwaHFsXCJcbiAgfSk7XG59XG5leHBvcnQge1xuICBHcmFwaHFsUmVzcG9uc2VFcnJvcixcbiAgZ3JhcGhxbDIgYXMgZ3JhcGhxbCxcbiAgd2l0aEN1c3RvbVJlcXVlc3Rcbn07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL2lzLWp3dC5qc1xudmFyIGI2NHVybCA9IFwiKD86W2EtekEtWjAtOV8tXSspXCI7XG52YXIgc2VwID0gXCJcXFxcLlwiO1xudmFyIGp3dFJFID0gbmV3IFJlZ0V4cChgXiR7YjY0dXJsfSR7c2VwfSR7YjY0dXJsfSR7c2VwfSR7YjY0dXJsfSRgKTtcbnZhciBpc0pXVCA9IGp3dFJFLnRlc3QuYmluZChqd3RSRSk7XG5cbi8vIHBrZy9kaXN0LXNyYy9hdXRoLmpzXG5hc3luYyBmdW5jdGlvbiBhdXRoKHRva2VuKSB7XG4gIGNvbnN0IGlzQXBwID0gaXNKV1QodG9rZW4pO1xuICBjb25zdCBpc0luc3RhbGxhdGlvbiA9IHRva2VuLnN0YXJ0c1dpdGgoXCJ2MS5cIikgfHwgdG9rZW4uc3RhcnRzV2l0aChcImdoc19cIik7XG4gIGNvbnN0IGlzVXNlclRvU2VydmVyID0gdG9rZW4uc3RhcnRzV2l0aChcImdodV9cIik7XG4gIGNvbnN0IHRva2VuVHlwZSA9IGlzQXBwID8gXCJhcHBcIiA6IGlzSW5zdGFsbGF0aW9uID8gXCJpbnN0YWxsYXRpb25cIiA6IGlzVXNlclRvU2VydmVyID8gXCJ1c2VyLXRvLXNlcnZlclwiIDogXCJvYXV0aFwiO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICB0b2tlbixcbiAgICB0b2tlblR5cGVcbiAgfTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3dpdGgtYXV0aG9yaXphdGlvbi1wcmVmaXguanNcbmZ1bmN0aW9uIHdpdGhBdXRob3JpemF0aW9uUHJlZml4KHRva2VuKSB7XG4gIGlmICh0b2tlbi5zcGxpdCgvXFwuLykubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGBiZWFyZXIgJHt0b2tlbn1gO1xuICB9XG4gIHJldHVybiBgdG9rZW4gJHt0b2tlbn1gO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xuYXN5bmMgZnVuY3Rpb24gaG9vayh0b2tlbiwgcmVxdWVzdCwgcm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgZW5kcG9pbnQgPSByZXF1ZXN0LmVuZHBvaW50Lm1lcmdlKFxuICAgIHJvdXRlLFxuICAgIHBhcmFtZXRlcnNcbiAgKTtcbiAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gd2l0aEF1dGhvcml6YXRpb25QcmVmaXgodG9rZW4pO1xuICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xudmFyIGNyZWF0ZVRva2VuQXV0aCA9IGZ1bmN0aW9uIGNyZWF0ZVRva2VuQXV0aDIodG9rZW4pIHtcbiAgaWYgKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltAb2N0b2tpdC9hdXRoLXRva2VuXSBObyB0b2tlbiBwYXNzZWQgdG8gY3JlYXRlVG9rZW5BdXRoXCIpO1xuICB9XG4gIGlmICh0eXBlb2YgdG9rZW4gIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIltAb2N0b2tpdC9hdXRoLXRva2VuXSBUb2tlbiBwYXNzZWQgdG8gY3JlYXRlVG9rZW5BdXRoIGlzIG5vdCBhIHN0cmluZ1wiXG4gICAgKTtcbiAgfVxuICB0b2tlbiA9IHRva2VuLnJlcGxhY2UoL14odG9rZW58YmVhcmVyKSArL2ksIFwiXCIpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihhdXRoLmJpbmQobnVsbCwgdG9rZW4pLCB7XG4gICAgaG9vazogaG9vay5iaW5kKG51bGwsIHRva2VuKVxuICB9KTtcbn07XG5leHBvcnQge1xuICBjcmVhdGVUb2tlbkF1dGhcbn07XG4iLCAiY29uc3QgVkVSU0lPTiA9IFwiNi4xLjZcIjtcbmV4cG9ydCB7XG4gIFZFUlNJT05cbn07XG4iLCAiaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5pbXBvcnQgSG9vayBmcm9tIFwiYmVmb3JlLWFmdGVyLWhvb2tcIjtcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuaW1wb3J0IHsgd2l0aEN1c3RvbVJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvZ3JhcGhxbFwiO1xuaW1wb3J0IHsgY3JlYXRlVG9rZW5BdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtdG9rZW5cIjtcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcbmNvbnN0IGNvbnNvbGVXYXJuID0gY29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7XG5jb25zdCBjb25zb2xlRXJyb3IgPSBjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7XG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIobG9nZ2VyID0ge30pIHtcbiAgaWYgKHR5cGVvZiBsb2dnZXIuZGVidWcgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxvZ2dlci5kZWJ1ZyA9IG5vb3A7XG4gIH1cbiAgaWYgKHR5cGVvZiBsb2dnZXIuaW5mbyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgbG9nZ2VyLmluZm8gPSBub29wO1xuICB9XG4gIGlmICh0eXBlb2YgbG9nZ2VyLndhcm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxvZ2dlci53YXJuID0gY29uc29sZVdhcm47XG4gIH1cbiAgaWYgKHR5cGVvZiBsb2dnZXIuZXJyb3IgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxvZ2dlci5lcnJvciA9IGNvbnNvbGVFcnJvcjtcbiAgfVxuICByZXR1cm4gbG9nZ2VyO1xufVxuY29uc3QgdXNlckFnZW50VHJhaWwgPSBgb2N0b2tpdC1jb3JlLmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gO1xuY2xhc3MgT2N0b2tpdCB7XG4gIHN0YXRpYyBWRVJTSU9OID0gVkVSU0lPTjtcbiAgc3RhdGljIGRlZmF1bHRzKGRlZmF1bHRzKSB7XG4gICAgY29uc3QgT2N0b2tpdFdpdGhEZWZhdWx0cyA9IGNsYXNzIGV4dGVuZHMgdGhpcyB7XG4gICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcmdzWzBdIHx8IHt9O1xuICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHRzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBzdXBlcihkZWZhdWx0cyhvcHRpb25zKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGRlZmF1bHRzLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMudXNlckFnZW50ICYmIGRlZmF1bHRzLnVzZXJBZ2VudCA/IHtcbiAgICAgICAgICAgICAgdXNlckFnZW50OiBgJHtvcHRpb25zLnVzZXJBZ2VudH0gJHtkZWZhdWx0cy51c2VyQWdlbnR9YFxuICAgICAgICAgICAgfSA6IG51bGxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gT2N0b2tpdFdpdGhEZWZhdWx0cztcbiAgfVxuICBzdGF0aWMgcGx1Z2lucyA9IFtdO1xuICAvKipcbiAgICogQXR0YWNoIGEgcGx1Z2luIChvciBtYW55KSB0byB5b3VyIE9jdG9raXQgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IEFQSSA9IE9jdG9raXQucGx1Z2luKHBsdWdpbjEsIHBsdWdpbjIsIHBsdWdpbjMsIC4uLilcbiAgICovXG4gIHN0YXRpYyBwbHVnaW4oLi4ubmV3UGx1Z2lucykge1xuICAgIGNvbnN0IGN1cnJlbnRQbHVnaW5zID0gdGhpcy5wbHVnaW5zO1xuICAgIGNvbnN0IE5ld09jdG9raXQgPSBjbGFzcyBleHRlbmRzIHRoaXMge1xuICAgICAgc3RhdGljIHBsdWdpbnMgPSBjdXJyZW50UGx1Z2lucy5jb25jYXQoXG4gICAgICAgIG5ld1BsdWdpbnMuZmlsdGVyKChwbHVnaW4pID0+ICFjdXJyZW50UGx1Z2lucy5pbmNsdWRlcyhwbHVnaW4pKVxuICAgICAgKTtcbiAgICB9O1xuICAgIHJldHVybiBOZXdPY3Rva2l0O1xuICB9XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGhvb2sgPSBuZXcgSG9vay5Db2xsZWN0aW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdERlZmF1bHRzID0ge1xuICAgICAgYmFzZVVybDogcmVxdWVzdC5lbmRwb2ludC5ERUZBVUxUUy5iYXNlVXJsLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICByZXF1ZXN0OiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLnJlcXVlc3QsIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB1c2FnZSBvbmx5LCBubyBuZWVkIHRvIHR5cGVcbiAgICAgICAgaG9vazogaG9vay5iaW5kKG51bGwsIFwicmVxdWVzdFwiKVxuICAgICAgfSksXG4gICAgICBtZWRpYVR5cGU6IHtcbiAgICAgICAgcHJldmlld3M6IFtdLFxuICAgICAgICBmb3JtYXQ6IFwiXCJcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlcXVlc3REZWZhdWx0cy5oZWFkZXJzW1widXNlci1hZ2VudFwiXSA9IG9wdGlvbnMudXNlckFnZW50ID8gYCR7b3B0aW9ucy51c2VyQWdlbnR9ICR7dXNlckFnZW50VHJhaWx9YCA6IHVzZXJBZ2VudFRyYWlsO1xuICAgIGlmIChvcHRpb25zLmJhc2VVcmwpIHtcbiAgICAgIHJlcXVlc3REZWZhdWx0cy5iYXNlVXJsID0gb3B0aW9ucy5iYXNlVXJsO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wcmV2aWV3cykge1xuICAgICAgcmVxdWVzdERlZmF1bHRzLm1lZGlhVHlwZS5wcmV2aWV3cyA9IG9wdGlvbnMucHJldmlld3M7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRpbWVab25lKSB7XG4gICAgICByZXF1ZXN0RGVmYXVsdHMuaGVhZGVyc1tcInRpbWUtem9uZVwiXSA9IG9wdGlvbnMudGltZVpvbmU7XG4gICAgfVxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3QuZGVmYXVsdHMocmVxdWVzdERlZmF1bHRzKTtcbiAgICB0aGlzLmdyYXBocWwgPSB3aXRoQ3VzdG9tUmVxdWVzdCh0aGlzLnJlcXVlc3QpLmRlZmF1bHRzKHJlcXVlc3REZWZhdWx0cyk7XG4gICAgdGhpcy5sb2cgPSBjcmVhdGVMb2dnZXIob3B0aW9ucy5sb2cpO1xuICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgaWYgKCFvcHRpb25zLmF1dGhTdHJhdGVneSkge1xuICAgICAgaWYgKCFvcHRpb25zLmF1dGgpIHtcbiAgICAgICAgdGhpcy5hdXRoID0gYXN5bmMgKCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiBcInVuYXV0aGVudGljYXRlZFwiXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXV0aCA9IGNyZWF0ZVRva2VuQXV0aChvcHRpb25zLmF1dGgpO1xuICAgICAgICBob29rLndyYXAoXCJyZXF1ZXN0XCIsIGF1dGguaG9vayk7XG4gICAgICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgYXV0aFN0cmF0ZWd5LCAuLi5vdGhlck9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgICBjb25zdCBhdXRoID0gYXV0aFN0cmF0ZWd5KFxuICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcXVlc3Q6IHRoaXMucmVxdWVzdCxcbiAgICAgICAgICAgIGxvZzogdGhpcy5sb2csXG4gICAgICAgICAgICAvLyB3ZSBwYXNzIHRoZSBjdXJyZW50IG9jdG9raXQgaW5zdGFuY2UgYXMgd2VsbCBhcyBpdHMgY29uc3RydWN0b3Igb3B0aW9uc1xuICAgICAgICAgICAgLy8gdG8gYWxsb3cgZm9yIGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWdpZXMgdGhhdCByZXR1cm4gYSBuZXcgb2N0b2tpdCBpbnN0YW5jZVxuICAgICAgICAgICAgLy8gdGhhdCBzaGFyZXMgdGhlIHNhbWUgaW50ZXJuYWwgc3RhdGUgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGUgb3JpZ2luYWxcbiAgICAgICAgICAgIC8vIHJlcXVpcmVtZW50IGZvciB0aGlzIHdhcyB0aGUgXCJldmVudC1vY3Rva2l0XCIgYXV0aGVudGljYXRpb24gc3RyYXRlZ3lcbiAgICAgICAgICAgIC8vIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9ib3Qvb2N0b2tpdC1hdXRoLXByb2JvdC5cbiAgICAgICAgICAgIG9jdG9raXQ6IHRoaXMsXG4gICAgICAgICAgICBvY3Rva2l0T3B0aW9uczogb3RoZXJPcHRpb25zXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zLmF1dGhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGhvb2sud3JhcChcInJlcXVlc3RcIiwgYXV0aC5ob29rKTtcbiAgICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzQ29uc3RydWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xhc3NDb25zdHJ1Y3Rvci5wbHVnaW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNsYXNzQ29uc3RydWN0b3IucGx1Z2luc1tpXSh0aGlzLCBvcHRpb25zKSk7XG4gICAgfVxuICB9XG4gIC8vIGFzc2lnbmVkIGR1cmluZyBjb25zdHJ1Y3RvclxuICByZXF1ZXN0O1xuICBncmFwaHFsO1xuICBsb2c7XG4gIGhvb2s7XG4gIC8vIFRPRE86IHR5cGUgYG9jdG9raXQuYXV0aGAgYmFzZWQgb24gcGFzc2VkIG9wdGlvbnMuYXV0aFN0cmF0ZWd5XG4gIGF1dGg7XG59XG5leHBvcnQge1xuICBPY3Rva2l0XG59O1xuIiwgImNvbnN0IFZFUlNJT04gPSBcIjUuMy4xXCI7XG5leHBvcnQge1xuICBWRVJTSU9OXG59O1xuIiwgImltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5mdW5jdGlvbiByZXF1ZXN0TG9nKG9jdG9raXQpIHtcbiAgb2N0b2tpdC5ob29rLndyYXAoXCJyZXF1ZXN0XCIsIChyZXF1ZXN0LCBvcHRpb25zKSA9PiB7XG4gICAgb2N0b2tpdC5sb2cuZGVidWcoXCJyZXF1ZXN0XCIsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IG9jdG9raXQucmVxdWVzdC5lbmRwb2ludC5wYXJzZShvcHRpb25zKTtcbiAgICBjb25zdCBwYXRoID0gcmVxdWVzdE9wdGlvbnMudXJsLnJlcGxhY2Uob3B0aW9ucy5iYXNlVXJsLCBcIlwiKTtcbiAgICByZXR1cm4gcmVxdWVzdChvcHRpb25zKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdElkID0gcmVzcG9uc2UuaGVhZGVyc1tcIngtZ2l0aHViLXJlcXVlc3QtaWRcIl07XG4gICAgICBvY3Rva2l0LmxvZy5pbmZvKFxuICAgICAgICBgJHtyZXF1ZXN0T3B0aW9ucy5tZXRob2R9ICR7cGF0aH0gLSAke3Jlc3BvbnNlLnN0YXR1c30gd2l0aCBpZCAke3JlcXVlc3RJZH0gaW4gJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdElkID0gZXJyb3IucmVzcG9uc2U/LmhlYWRlcnNbXCJ4LWdpdGh1Yi1yZXF1ZXN0LWlkXCJdIHx8IFwiVU5LTk9XTlwiO1xuICAgICAgb2N0b2tpdC5sb2cuZXJyb3IoXG4gICAgICAgIGAke3JlcXVlc3RPcHRpb25zLm1ldGhvZH0gJHtwYXRofSAtICR7ZXJyb3Iuc3RhdHVzfSB3aXRoIGlkICR7cmVxdWVzdElkfSBpbiAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgfSk7XG59XG5yZXF1ZXN0TG9nLlZFUlNJT04gPSBWRVJTSU9OO1xuZXhwb3J0IHtcbiAgcmVxdWVzdExvZ1xufTtcbiIsICIvLyBwa2cvZGlzdC1zcmMvdmVyc2lvbi5qc1xudmFyIFZFUlNJT04gPSBcIjAuMC4wLWRldmVsb3BtZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9ub3JtYWxpemUtcGFnaW5hdGVkLWxpc3QtcmVzcG9uc2UuanNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhZ2luYXRlZExpc3RSZXNwb25zZShyZXNwb25zZSkge1xuICBpZiAoIXJlc3BvbnNlLmRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICBkYXRhOiBbXVxuICAgIH07XG4gIH1cbiAgY29uc3QgcmVzcG9uc2VOZWVkc05vcm1hbGl6YXRpb24gPSBcInRvdGFsX2NvdW50XCIgaW4gcmVzcG9uc2UuZGF0YSAmJiAhKFwidXJsXCIgaW4gcmVzcG9uc2UuZGF0YSk7XG4gIGlmICghcmVzcG9uc2VOZWVkc05vcm1hbGl6YXRpb24pIHJldHVybiByZXNwb25zZTtcbiAgY29uc3QgaW5jb21wbGV0ZVJlc3VsdHMgPSByZXNwb25zZS5kYXRhLmluY29tcGxldGVfcmVzdWx0cztcbiAgY29uc3QgcmVwb3NpdG9yeVNlbGVjdGlvbiA9IHJlc3BvbnNlLmRhdGEucmVwb3NpdG9yeV9zZWxlY3Rpb247XG4gIGNvbnN0IHRvdGFsQ291bnQgPSByZXNwb25zZS5kYXRhLnRvdGFsX2NvdW50O1xuICBkZWxldGUgcmVzcG9uc2UuZGF0YS5pbmNvbXBsZXRlX3Jlc3VsdHM7XG4gIGRlbGV0ZSByZXNwb25zZS5kYXRhLnJlcG9zaXRvcnlfc2VsZWN0aW9uO1xuICBkZWxldGUgcmVzcG9uc2UuZGF0YS50b3RhbF9jb3VudDtcbiAgY29uc3QgbmFtZXNwYWNlS2V5ID0gT2JqZWN0LmtleXMocmVzcG9uc2UuZGF0YSlbMF07XG4gIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhW25hbWVzcGFjZUtleV07XG4gIHJlc3BvbnNlLmRhdGEgPSBkYXRhO1xuICBpZiAodHlwZW9mIGluY29tcGxldGVSZXN1bHRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmVzcG9uc2UuZGF0YS5pbmNvbXBsZXRlX3Jlc3VsdHMgPSBpbmNvbXBsZXRlUmVzdWx0cztcbiAgfVxuICBpZiAodHlwZW9mIHJlcG9zaXRvcnlTZWxlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXNwb25zZS5kYXRhLnJlcG9zaXRvcnlfc2VsZWN0aW9uID0gcmVwb3NpdG9yeVNlbGVjdGlvbjtcbiAgfVxuICByZXNwb25zZS5kYXRhLnRvdGFsX2NvdW50ID0gdG90YWxDb3VudDtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaXRlcmF0b3IuanNcbmZ1bmN0aW9uIGl0ZXJhdG9yKG9jdG9raXQsIHJvdXRlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSB0eXBlb2Ygcm91dGUgPT09IFwiZnVuY3Rpb25cIiA/IHJvdXRlLmVuZHBvaW50KHBhcmFtZXRlcnMpIDogb2N0b2tpdC5yZXF1ZXN0LmVuZHBvaW50KHJvdXRlLCBwYXJhbWV0ZXJzKTtcbiAgY29uc3QgcmVxdWVzdE1ldGhvZCA9IHR5cGVvZiByb3V0ZSA9PT0gXCJmdW5jdGlvblwiID8gcm91dGUgOiBvY3Rva2l0LnJlcXVlc3Q7XG4gIGNvbnN0IG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kO1xuICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzO1xuICBsZXQgdXJsID0gb3B0aW9ucy51cmw7XG4gIHJldHVybiB7XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXTogKCkgPT4gKHtcbiAgICAgIGFzeW5jIG5leHQoKSB7XG4gICAgICAgIGlmICghdXJsKSByZXR1cm4geyBkb25lOiB0cnVlIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0TWV0aG9kKHsgbWV0aG9kLCB1cmwsIGhlYWRlcnMgfSk7XG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFJlc3BvbnNlID0gbm9ybWFsaXplUGFnaW5hdGVkTGlzdFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICB1cmwgPSAoKG5vcm1hbGl6ZWRSZXNwb25zZS5oZWFkZXJzLmxpbmsgfHwgXCJcIikubWF0Y2goXG4gICAgICAgICAgICAvPChbXjw+XSspPjtcXHMqcmVsPVwibmV4dFwiL1xuICAgICAgICAgICkgfHwgW10pWzFdO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBub3JtYWxpemVkUmVzcG9uc2UgfTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSA0MDkpIHRocm93IGVycm9yO1xuICAgICAgICAgIHVybCA9IFwiXCI7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgICAgZGF0YTogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3BhZ2luYXRlLmpzXG5mdW5jdGlvbiBwYWdpbmF0ZShvY3Rva2l0LCByb3V0ZSwgcGFyYW1ldGVycywgbWFwRm4pIHtcbiAgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBtYXBGbiA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IHZvaWQgMDtcbiAgfVxuICByZXR1cm4gZ2F0aGVyKFxuICAgIG9jdG9raXQsXG4gICAgW10sXG4gICAgaXRlcmF0b3Iob2N0b2tpdCwgcm91dGUsIHBhcmFtZXRlcnMpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpLFxuICAgIG1hcEZuXG4gICk7XG59XG5mdW5jdGlvbiBnYXRoZXIob2N0b2tpdCwgcmVzdWx0cywgaXRlcmF0b3IyLCBtYXBGbikge1xuICByZXR1cm4gaXRlcmF0b3IyLm5leHQoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBsZXQgZWFybHlFeGl0ID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGVhcmx5RXhpdCA9IHRydWU7XG4gICAgfVxuICAgIHJlc3VsdHMgPSByZXN1bHRzLmNvbmNhdChcbiAgICAgIG1hcEZuID8gbWFwRm4ocmVzdWx0LnZhbHVlLCBkb25lKSA6IHJlc3VsdC52YWx1ZS5kYXRhXG4gICAgKTtcbiAgICBpZiAoZWFybHlFeGl0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgcmV0dXJuIGdhdGhlcihvY3Rva2l0LCByZXN1bHRzLCBpdGVyYXRvcjIsIG1hcEZuKTtcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9jb21wb3NlLXBhZ2luYXRlLmpzXG52YXIgY29tcG9zZVBhZ2luYXRlUmVzdCA9IE9iamVjdC5hc3NpZ24ocGFnaW5hdGUsIHtcbiAgaXRlcmF0b3Jcbn0pO1xuXG4vLyBwa2cvZGlzdC1zcmMvZ2VuZXJhdGVkL3BhZ2luYXRpbmctZW5kcG9pbnRzLmpzXG52YXIgcGFnaW5hdGluZ0VuZHBvaW50cyA9IFtcbiAgXCJHRVQgL2Fkdmlzb3JpZXNcIixcbiAgXCJHRVQgL2FwcC9ob29rL2RlbGl2ZXJpZXNcIixcbiAgXCJHRVQgL2FwcC9pbnN0YWxsYXRpb24tcmVxdWVzdHNcIixcbiAgXCJHRVQgL2FwcC9pbnN0YWxsYXRpb25zXCIsXG4gIFwiR0VUIC9hc3NpZ25tZW50cy97YXNzaWdubWVudF9pZH0vYWNjZXB0ZWRfYXNzaWdubWVudHNcIixcbiAgXCJHRVQgL2NsYXNzcm9vbXNcIixcbiAgXCJHRVQgL2NsYXNzcm9vbXMve2NsYXNzcm9vbV9pZH0vYXNzaWdubWVudHNcIixcbiAgXCJHRVQgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zXCIsXG4gIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vZGVwZW5kYWJvdC9hbGVydHNcIixcbiAgXCJHRVQgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzXCIsXG4gIFwiR0VUIC9ldmVudHNcIixcbiAgXCJHRVQgL2dpc3RzXCIsXG4gIFwiR0VUIC9naXN0cy9wdWJsaWNcIixcbiAgXCJHRVQgL2dpc3RzL3N0YXJyZWRcIixcbiAgXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9jb21tZW50c1wiLFxuICBcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1pdHNcIixcbiAgXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9mb3Jrc1wiLFxuICBcIkdFVCAvaW5zdGFsbGF0aW9uL3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvaXNzdWVzXCIsXG4gIFwiR0VUIC9saWNlbnNlc1wiLFxuICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFuc1wiLFxuICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFucy97cGxhbl9pZH0vYWNjb3VudHNcIixcbiAgXCJHRVQgL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9wbGFuc1wiLFxuICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9zdHViYmVkL3BsYW5zL3twbGFuX2lkfS9hY2NvdW50c1wiLFxuICBcIkdFVCAvbmV0d29ya3Mve293bmVyfS97cmVwb30vZXZlbnRzXCIsXG4gIFwiR0VUIC9ub3RpZmljYXRpb25zXCIsXG4gIFwiR0VUIC9vcmdhbml6YXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvY2FjaGUvdXNhZ2UtYnktcmVwb3NpdG9yeVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL2hvc3RlZC1ydW5uZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVyLWdyb3Vwc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lci1ncm91cHMve3J1bm5lcl9ncm91cF9pZH0vaG9zdGVkLXJ1bm5lcnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXItZ3JvdXBzL3tydW5uZXJfZ3JvdXBfaWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lci1ncm91cHMve3J1bm5lcl9ncm91cF9pZH0vcnVubmVyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2F0dGVzdGF0aW9ucy97c3ViamVjdF9kaWdlc3R9XCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2Jsb2Nrc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2RlLXNjYW5uaW5nL2FsZXJ0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29waWxvdC9iaWxsaW5nL3NlYXRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2NvcGlsb3QvbWV0cmljc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L3VzYWdlXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3QvYWxlcnRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vZXZlbnRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2ZhaWxlZF9pbnZpdGF0aW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ob29rc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH0vZGVsaXZlcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9pbnNpZ2h0cy9hcGkvcm91dGUtc3RhdHMve2FjdG9yX3R5cGV9L3thY3Rvcl9pZH1cIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaW5zaWdodHMvYXBpL3N1YmplY3Qtc3RhdHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaW5zaWdodHMvYXBpL3VzZXItc3RhdHMve3VzZXJfaWR9XCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2luc3RhbGxhdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaW52aXRhdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9L3RlYW1zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2lzc3Vlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9tZW1iZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L21lbWJlcnMve3VzZXJuYW1lfS9jb2Rlc3BhY2VzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L21pZ3JhdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzL3tyb2xlX2lkfS90ZWFtc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMve3JvbGVfaWR9L3VzZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L291dHNpZGVfY29sbGFib3JhdG9yc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW4tcmVxdWVzdHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2VuLXJlcXVlc3RzL3twYXRfcmVxdWVzdF9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2Vucy97cGF0X2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcHJpdmF0ZS1yZWdpc3RyaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3Byb2plY3RzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3Byb3BlcnRpZXMvdmFsdWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3B1YmxpY19tZW1iZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3JlcG9zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3J1bGUtc3VpdGVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3tydWxlc2V0X2lkfS9oaXN0b3J5XCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3NlY3JldC1zY2FubmluZy9hbGVydHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vc2VjdXJpdHktYWR2aXNvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW0ve3RlYW1fc2x1Z30vY29waWxvdC9tZXRyaWNzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW0ve3RlYW1fc2x1Z30vY29waWxvdC91c2FnZVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHMve2NvbW1lbnRfbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vaW52aXRhdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vbWVtYmVyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9wcm9qZWN0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9yZXBvc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS90ZWFtc1wiLFxuICBcIkdFVCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfS9jYXJkc1wiLFxuICBcIkdFVCAvcHJvamVjdHMve3Byb2plY3RfaWR9L2NvbGxhYm9yYXRvcnNcIixcbiAgXCJHRVQgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2x1bW5zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2FydGlmYWN0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9jYWNoZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvb3JnYW5pemF0aW9uLXNlY3JldHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvb3JnYW5pemF0aW9uLXZhcmlhYmxlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hcnRpZmFjdHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hdHRlbXB0cy97YXR0ZW1wdF9udW1iZXJ9L2pvYnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9qb2JzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3NlY3JldHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS9ydW5zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpdml0eVwiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXNzaWduZWVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdHRlc3RhdGlvbnMve3N1YmplY3RfZGlnZXN0fVwiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXJ1bnMve2NoZWNrX3J1bl9pZH0vYW5ub3RhdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXN1aXRlcy97Y2hlY2tfc3VpdGVfaWR9L2NoZWNrLXJ1bnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfS9pbnN0YW5jZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYW5hbHlzZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvZGV2Y29udGFpbmVyc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9zZWNyZXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2xsYWJvcmF0b3JzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97Y29tbWl0X3NoYX0vY29tbWVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve2NvbW1pdF9zaGF9L3B1bGxzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L2NoZWNrLXJ1bnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve3JlZn0vY2hlY2stc3VpdGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L3N0YXR1c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9zdGF0dXNlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29udHJpYnV0b3JzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L2FsZXJ0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9zZWNyZXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwbG95bWVudHMve2RlcGxveW1lbnRfaWR9L3N0YXR1c2VzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudC1icmFuY2gtcG9saWNpZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudF9wcm90ZWN0aW9uX3J1bGVzL2FwcHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vc2VjcmV0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS92YXJpYWJsZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2V2ZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZm9ya3NcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rcy97aG9va19pZH0vZGVsaXZlcmllc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaW52aXRhdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2V2ZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vZXZlbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vbGFiZWxzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vcmVhY3Rpb25zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vc3ViX2lzc3Vlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3RpbWVsaW5lXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9rZXlzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9sYWJlbHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXMve21pbGVzdG9uZV9udW1iZXJ9L2xhYmVsc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbm90aWZpY2F0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvYnVpbGRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcm9qZWN0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvbW1pdHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vZmlsZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzL3tyZXZpZXdfaWR9L2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L2Fzc2V0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXMvYnJhbmNoZXMve2JyYW5jaH1cIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0cy9ydWxlLXN1aXRlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMve3J1bGVzZXRfaWR9L2hpc3RvcnlcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9hbGVydHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn0vbG9jYXRpb25zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdGFyZ2F6ZXJzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdWJzY3JpYmVyc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdGFnc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdGVhbXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RvcGljc1wiLFxuICBcIkdFVCAvcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9zZWFyY2gvY29kZVwiLFxuICBcIkdFVCAvc2VhcmNoL2NvbW1pdHNcIixcbiAgXCJHRVQgL3NlYXJjaC9pc3N1ZXNcIixcbiAgXCJHRVQgL3NlYXJjaC9sYWJlbHNcIixcbiAgXCJHRVQgL3NlYXJjaC9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL3NlYXJjaC90b3BpY3NcIixcbiAgXCJHRVQgL3NlYXJjaC91c2Vyc1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L2Rpc2N1c3Npb25zXCIsXG4gIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50c1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHMve2NvbW1lbnRfbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L2ludml0YXRpb25zXCIsXG4gIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vbWVtYmVyc1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L3Byb2plY3RzXCIsXG4gIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vcmVwb3NcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS90ZWFtc1wiLFxuICBcIkdFVCAvdXNlci9ibG9ja3NcIixcbiAgXCJHRVQgL3VzZXIvY29kZXNwYWNlc1wiLFxuICBcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHNcIixcbiAgXCJHRVQgL3VzZXIvZW1haWxzXCIsXG4gIFwiR0VUIC91c2VyL2ZvbGxvd2Vyc1wiLFxuICBcIkdFVCAvdXNlci9mb2xsb3dpbmdcIixcbiAgXCJHRVQgL3VzZXIvZ3BnX2tleXNcIixcbiAgXCJHRVQgL3VzZXIvaW5zdGFsbGF0aW9uc1wiLFxuICBcIkdFVCAvdXNlci9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvdXNlci9pc3N1ZXNcIixcbiAgXCJHRVQgL3VzZXIva2V5c1wiLFxuICBcIkdFVCAvdXNlci9tYXJrZXRwbGFjZV9wdXJjaGFzZXNcIixcbiAgXCJHRVQgL3VzZXIvbWFya2V0cGxhY2VfcHVyY2hhc2VzL3N0dWJiZWRcIixcbiAgXCJHRVQgL3VzZXIvbWVtYmVyc2hpcHMvb3Jnc1wiLFxuICBcIkdFVCAvdXNlci9taWdyYXRpb25zXCIsXG4gIFwiR0VUIC91c2VyL21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC91c2VyL29yZ3NcIixcbiAgXCJHRVQgL3VzZXIvcGFja2FnZXNcIixcbiAgXCJHRVQgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnNcIixcbiAgXCJHRVQgL3VzZXIvcHVibGljX2VtYWlsc1wiLFxuICBcIkdFVCAvdXNlci9yZXBvc1wiLFxuICBcIkdFVCAvdXNlci9yZXBvc2l0b3J5X2ludml0YXRpb25zXCIsXG4gIFwiR0VUIC91c2VyL3NvY2lhbF9hY2NvdW50c1wiLFxuICBcIkdFVCAvdXNlci9zc2hfc2lnbmluZ19rZXlzXCIsXG4gIFwiR0VUIC91c2VyL3N0YXJyZWRcIixcbiAgXCJHRVQgL3VzZXIvc3Vic2NyaXB0aW9uc1wiLFxuICBcIkdFVCAvdXNlci90ZWFtc1wiLFxuICBcIkdFVCAvdXNlcnNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vYXR0ZXN0YXRpb25zL3tzdWJqZWN0X2RpZ2VzdH1cIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZXZlbnRzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2V2ZW50cy9vcmdzL3tvcmd9XCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2V2ZW50cy9wdWJsaWNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZm9sbG93ZXJzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2ZvbGxvd2luZ1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9naXN0c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ncGdfa2V5c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9rZXlzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L29yZ3NcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcHJvamVjdHNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcmVjZWl2ZWRfZXZlbnRzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlY2VpdmVkX2V2ZW50cy9wdWJsaWNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcmVwb3NcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc29jaWFsX2FjY291bnRzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3NzaF9zaWduaW5nX2tleXNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc3RhcnJlZFwiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9zdWJzY3JpcHRpb25zXCJcbl07XG5cbi8vIHBrZy9kaXN0LXNyYy9wYWdpbmF0aW5nLWVuZHBvaW50cy5qc1xuZnVuY3Rpb24gaXNQYWdpbmF0aW5nRW5kcG9pbnQoYXJnKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhZ2luYXRpbmdFbmRwb2ludHMuaW5jbHVkZXMoYXJnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5mdW5jdGlvbiBwYWdpbmF0ZVJlc3Qob2N0b2tpdCkge1xuICByZXR1cm4ge1xuICAgIHBhZ2luYXRlOiBPYmplY3QuYXNzaWduKHBhZ2luYXRlLmJpbmQobnVsbCwgb2N0b2tpdCksIHtcbiAgICAgIGl0ZXJhdG9yOiBpdGVyYXRvci5iaW5kKG51bGwsIG9jdG9raXQpXG4gICAgfSlcbiAgfTtcbn1cbnBhZ2luYXRlUmVzdC5WRVJTSU9OID0gVkVSU0lPTjtcbmV4cG9ydCB7XG4gIGNvbXBvc2VQYWdpbmF0ZVJlc3QsXG4gIGlzUGFnaW5hdGluZ0VuZHBvaW50LFxuICBwYWdpbmF0ZVJlc3QsXG4gIHBhZ2luYXRpbmdFbmRwb2ludHNcbn07XG4iLCAiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjEzLjUuMFwiO1xuIiwgImltcG9ydCB0eXBlIHsgRW5kcG9pbnRzRGVmYXVsdHNBbmREZWNvcmF0aW9ucyB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuY29uc3QgRW5kcG9pbnRzOiBFbmRwb2ludHNEZWZhdWx0c0FuZERlY29yYXRpb25zID0ge1xuICBhY3Rpb25zOiB7XG4gICAgYWRkQ3VzdG9tTGFiZWxzVG9TZWxmSG9zdGVkUnVubmVyRm9yT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgYWRkQ3VzdG9tTGFiZWxzVG9TZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnMve3J1bm5lcl9pZH0vbGFiZWxzXCIsXG4gICAgXSxcbiAgICBhZGRSZXBvQWNjZXNzVG9TZWxmSG9zdGVkUnVubmVyR3JvdXBJbk9yZzogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXItZ3JvdXBzL3tydW5uZXJfZ3JvdXBfaWR9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGFkZFNlbGVjdGVkUmVwb1RvT3JnU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBhZGRTZWxlY3RlZFJlcG9Ub09yZ1ZhcmlhYmxlOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgYXBwcm92ZVdvcmtmbG93UnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hcHByb3ZlXCIsXG4gICAgXSxcbiAgICBjYW5jZWxXb3JrZmxvd1J1bjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vY2FuY2VsXCIsXG4gICAgXSxcbiAgICBjcmVhdGVFbnZpcm9ubWVudFZhcmlhYmxlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vdmFyaWFibGVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcIlBPU1QgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVyc1wiXSxcbiAgICBjcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yVXBkYXRlT3JnU2VjcmV0OiBbXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVSZXBvU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yZ1ZhcmlhYmxlOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzXCJdLFxuICAgIGNyZWF0ZVJlZ2lzdHJhdGlvblRva2VuRm9yT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL3JlZ2lzdHJhdGlvbi10b2tlblwiLFxuICAgIF0sXG4gICAgY3JlYXRlUmVnaXN0cmF0aW9uVG9rZW5Gb3JSZXBvOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy9yZWdpc3RyYXRpb24tdG9rZW5cIixcbiAgICBdLFxuICAgIGNyZWF0ZVJlbW92ZVRva2VuRm9yT3JnOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy9yZW1vdmUtdG9rZW5cIl0sXG4gICAgY3JlYXRlUmVtb3ZlVG9rZW5Gb3JSZXBvOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy9yZW1vdmUtdG9rZW5cIixcbiAgICBdLFxuICAgIGNyZWF0ZVJlcG9WYXJpYWJsZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy92YXJpYWJsZXNcIl0sXG4gICAgY3JlYXRlV29ya2Zsb3dEaXNwYXRjaDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L2Rpc3BhdGNoZXNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUFjdGlvbnNDYWNoZUJ5SWQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2NhY2hlcy97Y2FjaGVfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVBY3Rpb25zQ2FjaGVCeUtleTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvY2FjaGVzez9rZXkscmVmfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlQXJ0aWZhY3Q6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2FydGlmYWN0cy97YXJ0aWZhY3RfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVFbnZpcm9ubWVudFNlY3JldDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVFbnZpcm9ubWVudFZhcmlhYmxlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS92YXJpYWJsZXMve25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMve2hvc3RlZF9ydW5uZXJfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVPcmdTZWNyZXQ6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBkZWxldGVPcmdWYXJpYWJsZTogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiXSxcbiAgICBkZWxldGVSZXBvU2VjcmV0OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVJlcG9WYXJpYWJsZTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlU2VsZkhvc3RlZFJ1bm5lckZyb21Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlU2VsZkhvc3RlZFJ1bm5lckZyb21SZXBvOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVXb3JrZmxvd1J1bjogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH1cIl0sXG4gICAgZGVsZXRlV29ya2Zsb3dSdW5Mb2dzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2xvZ3NcIixcbiAgICBdLFxuICAgIGRpc2FibGVTZWxlY3RlZFJlcG9zaXRvcnlHaXRodWJBY3Rpb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGRpc2FibGVXb3JrZmxvdzogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vZGlzYWJsZVwiLFxuICAgIF0sXG4gICAgZG93bmxvYWRBcnRpZmFjdDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvYXJ0aWZhY3RzL3thcnRpZmFjdF9pZH0ve2FyY2hpdmVfZm9ybWF0fVwiLFxuICAgIF0sXG4gICAgZG93bmxvYWRKb2JMb2dzRm9yV29ya2Zsb3dSdW46IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2pvYnMve2pvYl9pZH0vbG9nc1wiLFxuICAgIF0sXG4gICAgZG93bmxvYWRXb3JrZmxvd1J1bkF0dGVtcHRMb2dzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2F0dGVtcHRzL3thdHRlbXB0X251bWJlcn0vbG9nc1wiLFxuICAgIF0sXG4gICAgZG93bmxvYWRXb3JrZmxvd1J1bkxvZ3M6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vbG9nc1wiLFxuICAgIF0sXG4gICAgZW5hYmxlU2VsZWN0ZWRSZXBvc2l0b3J5R2l0aHViQWN0aW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9ucy9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBlbmFibGVXb3JrZmxvdzogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vZW5hYmxlXCIsXG4gICAgXSxcbiAgICBmb3JjZUNhbmNlbFdvcmtmbG93UnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9mb3JjZS1jYW5jZWxcIixcbiAgICBdLFxuICAgIGdlbmVyYXRlUnVubmVySml0Y29uZmlnRm9yT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL2dlbmVyYXRlLWppdGNvbmZpZ1wiLFxuICAgIF0sXG4gICAgZ2VuZXJhdGVSdW5uZXJKaXRjb25maWdGb3JSZXBvOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy9nZW5lcmF0ZS1qaXRjb25maWdcIixcbiAgICBdLFxuICAgIGdldEFjdGlvbnNDYWNoZUxpc3Q6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9jYWNoZXNcIl0sXG4gICAgZ2V0QWN0aW9uc0NhY2hlVXNhZ2U6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9jYWNoZS91c2FnZVwiXSxcbiAgICBnZXRBY3Rpb25zQ2FjaGVVc2FnZUJ5UmVwb0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9jYWNoZS91c2FnZS1ieS1yZXBvc2l0b3J5XCIsXG4gICAgXSxcbiAgICBnZXRBY3Rpb25zQ2FjaGVVc2FnZUZvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvY2FjaGUvdXNhZ2VcIl0sXG4gICAgZ2V0QWxsb3dlZEFjdGlvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvc2VsZWN0ZWQtYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0QWxsb3dlZEFjdGlvbnNSZXBvc2l0b3J5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9wZXJtaXNzaW9ucy9zZWxlY3RlZC1hY3Rpb25zXCIsXG4gICAgXSxcbiAgICBnZXRBcnRpZmFjdDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2FydGlmYWN0cy97YXJ0aWZhY3RfaWR9XCJdLFxuICAgIGdldEN1c3RvbU9pZGNTdWJDbGFpbUZvclJlcG86IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL29pZGMvY3VzdG9taXphdGlvbi9zdWJcIixcbiAgICBdLFxuICAgIGdldEVudmlyb25tZW50UHVibGljS2V5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9zZWNyZXRzL3B1YmxpYy1rZXlcIixcbiAgICBdLFxuICAgIGdldEVudmlyb25tZW50U2VjcmV0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGdldEVudmlyb25tZW50VmFyaWFibGU6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3ZhcmlhYmxlcy97bmFtZX1cIixcbiAgICBdLFxuICAgIGdldEdpdGh1YkFjdGlvbnNEZWZhdWx0V29ya2Zsb3dQZXJtaXNzaW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9ucy93b3JrZmxvd1wiLFxuICAgIF0sXG4gICAgZ2V0R2l0aHViQWN0aW9uc0RlZmF1bHRXb3JrZmxvd1Blcm1pc3Npb25zUmVwb3NpdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnMvd29ya2Zsb3dcIixcbiAgICBdLFxuICAgIGdldEdpdGh1YkFjdGlvbnNQZXJtaXNzaW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0R2l0aHViQWN0aW9uc1Blcm1pc3Npb25zUmVwb3NpdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnNcIixcbiAgICBdLFxuICAgIGdldEhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy97aG9zdGVkX3J1bm5lcl9pZH1cIixcbiAgICBdLFxuICAgIGdldEhvc3RlZFJ1bm5lcnNHaXRodWJPd25lZEltYWdlc0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy9pbWFnZXMvZ2l0aHViLW93bmVkXCIsXG4gICAgXSxcbiAgICBnZXRIb3N0ZWRSdW5uZXJzTGltaXRzRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL2hvc3RlZC1ydW5uZXJzL2xpbWl0c1wiLFxuICAgIF0sXG4gICAgZ2V0SG9zdGVkUnVubmVyc01hY2hpbmVTcGVjc0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy9tYWNoaW5lLXNpemVzXCIsXG4gICAgXSxcbiAgICBnZXRIb3N0ZWRSdW5uZXJzUGFydG5lckltYWdlc0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy9pbWFnZXMvcGFydG5lclwiLFxuICAgIF0sXG4gICAgZ2V0SG9zdGVkUnVubmVyc1BsYXRmb3Jtc0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy9wbGF0Zm9ybXNcIixcbiAgICBdLFxuICAgIGdldEpvYkZvcldvcmtmbG93UnVuOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvam9icy97am9iX2lkfVwiXSxcbiAgICBnZXRPcmdQdWJsaWNLZXk6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMvcHVibGljLWtleVwiXSxcbiAgICBnZXRPcmdTZWNyZXQ6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBnZXRPcmdWYXJpYWJsZTogW1wiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiXSxcbiAgICBnZXRQZW5kaW5nRGVwbG95bWVudHNGb3JSdW46IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vcGVuZGluZ19kZXBsb3ltZW50c1wiLFxuICAgIF0sXG4gICAgZ2V0UmVwb1Blcm1pc3Npb25zOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9wZXJtaXNzaW9uc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImFjdGlvbnNcIiwgXCJnZXRHaXRodWJBY3Rpb25zUGVybWlzc2lvbnNSZXBvc2l0b3J5XCJdIH0sXG4gICAgXSxcbiAgICBnZXRSZXBvUHVibGljS2V5OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvc2VjcmV0cy9wdWJsaWMta2V5XCJdLFxuICAgIGdldFJlcG9TZWNyZXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZ2V0UmVwb1ZhcmlhYmxlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiXSxcbiAgICBnZXRSZXZpZXdzRm9yUnVuOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2FwcHJvdmFsc1wiLFxuICAgIF0sXG4gICAgZ2V0U2VsZkhvc3RlZFJ1bm5lckZvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfVwiXSxcbiAgICBnZXRTZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0V29ya2Zsb3c6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy93b3JrZmxvd3Mve3dvcmtmbG93X2lkfVwiXSxcbiAgICBnZXRXb3JrZmxvd0FjY2Vzc1RvUmVwb3NpdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnMvYWNjZXNzXCIsXG4gICAgXSxcbiAgICBnZXRXb3JrZmxvd1J1bjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH1cIl0sXG4gICAgZ2V0V29ya2Zsb3dSdW5BdHRlbXB0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2F0dGVtcHRzL3thdHRlbXB0X251bWJlcn1cIixcbiAgICBdLFxuICAgIGdldFdvcmtmbG93UnVuVXNhZ2U6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vdGltaW5nXCIsXG4gICAgXSxcbiAgICBnZXRXb3JrZmxvd1VzYWdlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS90aW1pbmdcIixcbiAgICBdLFxuICAgIGxpc3RBcnRpZmFjdHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvYXJ0aWZhY3RzXCJdLFxuICAgIGxpc3RFbnZpcm9ubWVudFNlY3JldHM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3NlY3JldHNcIixcbiAgICBdLFxuICAgIGxpc3RFbnZpcm9ubWVudFZhcmlhYmxlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vdmFyaWFibGVzXCIsXG4gICAgXSxcbiAgICBsaXN0R2l0aHViSG9zdGVkUnVubmVyc0luR3JvdXBGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVyLWdyb3Vwcy97cnVubmVyX2dyb3VwX2lkfS9ob3N0ZWQtcnVubmVyc1wiLFxuICAgIF0sXG4gICAgbGlzdEhvc3RlZFJ1bm5lcnNGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL2hvc3RlZC1ydW5uZXJzXCJdLFxuICAgIGxpc3RKb2JzRm9yV29ya2Zsb3dSdW46IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vam9ic1wiLFxuICAgIF0sXG4gICAgbGlzdEpvYnNGb3JXb3JrZmxvd1J1bkF0dGVtcHQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vYXR0ZW1wdHMve2F0dGVtcHRfbnVtYmVyfS9qb2JzXCIsXG4gICAgXSxcbiAgICBsaXN0TGFiZWxzRm9yU2VsZkhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgbGlzdExhYmVsc0ZvclNlbGZIb3N0ZWRSdW5uZXJGb3JSZXBvOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgbGlzdE9yZ1NlY3JldHM6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHNcIl0sXG4gICAgbGlzdE9yZ1ZhcmlhYmxlczogW1wiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzXCJdLFxuICAgIGxpc3RSZXBvT3JnYW5pemF0aW9uU2VjcmV0czogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvb3JnYW5pemF0aW9uLXNlY3JldHNcIixcbiAgICBdLFxuICAgIGxpc3RSZXBvT3JnYW5pemF0aW9uVmFyaWFibGVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9vcmdhbml6YXRpb24tdmFyaWFibGVzXCIsXG4gICAgXSxcbiAgICBsaXN0UmVwb1NlY3JldHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9zZWNyZXRzXCJdLFxuICAgIGxpc3RSZXBvVmFyaWFibGVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzXCJdLFxuICAgIGxpc3RSZXBvV29ya2Zsb3dzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzXCJdLFxuICAgIGxpc3RSdW5uZXJBcHBsaWNhdGlvbnNGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnMvZG93bmxvYWRzXCJdLFxuICAgIGxpc3RSdW5uZXJBcHBsaWNhdGlvbnNGb3JSZXBvOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL2Rvd25sb2Fkc1wiLFxuICAgIF0sXG4gICAgbGlzdFNlbGVjdGVkUmVwb3NGb3JPcmdTZWNyZXQ6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFNlbGVjdGVkUmVwb3NGb3JPcmdWYXJpYWJsZTogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy92YXJpYWJsZXMve25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFNlbGVjdGVkUmVwb3NpdG9yaWVzRW5hYmxlZEdpdGh1YkFjdGlvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBsaXN0U2VsZkhvc3RlZFJ1bm5lcnNGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnNcIl0sXG4gICAgbGlzdFNlbGZIb3N0ZWRSdW5uZXJzRm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnNcIl0sXG4gICAgbGlzdFdvcmtmbG93UnVuQXJ0aWZhY3RzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2FydGlmYWN0c1wiLFxuICAgIF0sXG4gICAgbGlzdFdvcmtmbG93UnVuczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vcnVuc1wiLFxuICAgIF0sXG4gICAgbGlzdFdvcmtmbG93UnVuc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zXCJdLFxuICAgIHJlUnVuSm9iRm9yV29ya2Zsb3dSdW46IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9qb2JzL3tqb2JfaWR9L3JlcnVuXCIsXG4gICAgXSxcbiAgICByZVJ1bldvcmtmbG93OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vcmVydW5cIl0sXG4gICAgcmVSdW5Xb3JrZmxvd0ZhaWxlZEpvYnM6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L3JlcnVuLWZhaWxlZC1qb2JzXCIsXG4gICAgXSxcbiAgICByZW1vdmVBbGxDdXN0b21MYWJlbHNGcm9tU2VsZkhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlQWxsQ3VzdG9tTGFiZWxzRnJvbVNlbGZIb3N0ZWRSdW5uZXJGb3JSZXBvOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlQ3VzdG9tTGFiZWxGcm9tU2VsZkhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVscy97bmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZUN1c3RvbUxhYmVsRnJvbVNlbGZIb3N0ZWRSdW5uZXJGb3JSZXBvOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVscy97bmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZVNlbGVjdGVkUmVwb0Zyb21PcmdTZWNyZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHJlbW92ZVNlbGVjdGVkUmVwb0Zyb21PcmdWYXJpYWJsZTogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vYWN0aW9ucy92YXJpYWJsZXMve25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHJldmlld0N1c3RvbUdhdGVzRm9yUnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9kZXBsb3ltZW50X3Byb3RlY3Rpb25fcnVsZVwiLFxuICAgIF0sXG4gICAgcmV2aWV3UGVuZGluZ0RlcGxveW1lbnRzRm9yUnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9wZW5kaW5nX2RlcGxveW1lbnRzXCIsXG4gICAgXSxcbiAgICBzZXRBbGxvd2VkQWN0aW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9ucy9zZWxlY3RlZC1hY3Rpb25zXCIsXG4gICAgXSxcbiAgICBzZXRBbGxvd2VkQWN0aW9uc1JlcG9zaXRvcnk6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3Blcm1pc3Npb25zL3NlbGVjdGVkLWFjdGlvbnNcIixcbiAgICBdLFxuICAgIHNldEN1c3RvbUxhYmVsc0ZvclNlbGZIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIHNldEN1c3RvbUxhYmVsc0ZvclNlbGZIb3N0ZWRSdW5uZXJGb3JSZXBvOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgc2V0Q3VzdG9tT2lkY1N1YkNsYWltRm9yUmVwbzogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvb2lkYy9jdXN0b21pemF0aW9uL3N1YlwiLFxuICAgIF0sXG4gICAgc2V0R2l0aHViQWN0aW9uc0RlZmF1bHRXb3JrZmxvd1Blcm1pc3Npb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3dvcmtmbG93XCIsXG4gICAgXSxcbiAgICBzZXRHaXRodWJBY3Rpb25zRGVmYXVsdFdvcmtmbG93UGVybWlzc2lvbnNSZXBvc2l0b3J5OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9wZXJtaXNzaW9ucy93b3JrZmxvd1wiLFxuICAgIF0sXG4gICAgc2V0R2l0aHViQWN0aW9uc1Blcm1pc3Npb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zXCIsXG4gICAgXSxcbiAgICBzZXRHaXRodWJBY3Rpb25zUGVybWlzc2lvbnNSZXBvc2l0b3J5OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9wZXJtaXNzaW9uc1wiLFxuICAgIF0sXG4gICAgc2V0U2VsZWN0ZWRSZXBvc0Zvck9yZ1NlY3JldDogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBzZXRTZWxlY3RlZFJlcG9zRm9yT3JnVmFyaWFibGU6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIHNldFNlbGVjdGVkUmVwb3NpdG9yaWVzRW5hYmxlZEdpdGh1YkFjdGlvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBzZXRXb3JrZmxvd0FjY2Vzc1RvUmVwb3NpdG9yeTogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnMvYWNjZXNzXCIsXG4gICAgXSxcbiAgICB1cGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3ZhcmlhYmxlcy97bmFtZX1cIixcbiAgICBdLFxuICAgIHVwZGF0ZUhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJQQVRDSCAvb3Jncy97b3JnfS9hY3Rpb25zL2hvc3RlZC1ydW5uZXJzL3tob3N0ZWRfcnVubmVyX2lkfVwiLFxuICAgIF0sXG4gICAgdXBkYXRlT3JnVmFyaWFibGU6IFtcIlBBVENIIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiXSxcbiAgICB1cGRhdGVSZXBvVmFyaWFibGU6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfVwiLFxuICAgIF0sXG4gIH0sXG4gIGFjdGl2aXR5OiB7XG4gICAgY2hlY2tSZXBvSXNTdGFycmVkQnlBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3N0YXJyZWQve293bmVyfS97cmVwb31cIl0sXG4gICAgZGVsZXRlUmVwb1N1YnNjcmlwdGlvbjogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdWJzY3JpcHRpb25cIl0sXG4gICAgZGVsZXRlVGhyZWFkU3Vic2NyaXB0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvbm90aWZpY2F0aW9ucy90aHJlYWRzL3t0aHJlYWRfaWR9L3N1YnNjcmlwdGlvblwiLFxuICAgIF0sXG4gICAgZ2V0RmVlZHM6IFtcIkdFVCAvZmVlZHNcIl0sXG4gICAgZ2V0UmVwb1N1YnNjcmlwdGlvbjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdWJzY3JpcHRpb25cIl0sXG4gICAgZ2V0VGhyZWFkOiBbXCJHRVQgL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfVwiXSxcbiAgICBnZXRUaHJlYWRTdWJzY3JpcHRpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfS9zdWJzY3JpcHRpb25cIixcbiAgICBdLFxuICAgIGxpc3RFdmVudHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2V2ZW50c1wiXSxcbiAgICBsaXN0Tm90aWZpY2F0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL25vdGlmaWNhdGlvbnNcIl0sXG4gICAgbGlzdE9yZ0V2ZW50c0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ldmVudHMvb3Jncy97b3JnfVwiLFxuICAgIF0sXG4gICAgbGlzdFB1YmxpY0V2ZW50czogW1wiR0VUIC9ldmVudHNcIl0sXG4gICAgbGlzdFB1YmxpY0V2ZW50c0ZvclJlcG9OZXR3b3JrOiBbXCJHRVQgL25ldHdvcmtzL3tvd25lcn0ve3JlcG99L2V2ZW50c1wiXSxcbiAgICBsaXN0UHVibGljRXZlbnRzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2V2ZW50cy9wdWJsaWNcIl0sXG4gICAgbGlzdFB1YmxpY09yZ0V2ZW50czogW1wiR0VUIC9vcmdzL3tvcmd9L2V2ZW50c1wiXSxcbiAgICBsaXN0UmVjZWl2ZWRFdmVudHNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcmVjZWl2ZWRfZXZlbnRzXCJdLFxuICAgIGxpc3RSZWNlaXZlZFB1YmxpY0V2ZW50c0ZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlY2VpdmVkX2V2ZW50cy9wdWJsaWNcIixcbiAgICBdLFxuICAgIGxpc3RSZXBvRXZlbnRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2V2ZW50c1wiXSxcbiAgICBsaXN0UmVwb05vdGlmaWNhdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L25vdGlmaWNhdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RSZXBvc1N0YXJyZWRCeUF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvc3RhcnJlZFwiXSxcbiAgICBsaXN0UmVwb3NTdGFycmVkQnlVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc3RhcnJlZFwiXSxcbiAgICBsaXN0UmVwb3NXYXRjaGVkQnlVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc3Vic2NyaXB0aW9uc1wiXSxcbiAgICBsaXN0U3RhcmdhemVyc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhcmdhemVyc1wiXSxcbiAgICBsaXN0V2F0Y2hlZFJlcG9zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9zdWJzY3JpcHRpb25zXCJdLFxuICAgIGxpc3RXYXRjaGVyc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3Vic2NyaWJlcnNcIl0sXG4gICAgbWFya05vdGlmaWNhdGlvbnNBc1JlYWQ6IFtcIlBVVCAvbm90aWZpY2F0aW9uc1wiXSxcbiAgICBtYXJrUmVwb05vdGlmaWNhdGlvbnNBc1JlYWQ6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vbm90aWZpY2F0aW9uc1wiXSxcbiAgICBtYXJrVGhyZWFkQXNEb25lOiBbXCJERUxFVEUgL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfVwiXSxcbiAgICBtYXJrVGhyZWFkQXNSZWFkOiBbXCJQQVRDSCAvbm90aWZpY2F0aW9ucy90aHJlYWRzL3t0aHJlYWRfaWR9XCJdLFxuICAgIHNldFJlcG9TdWJzY3JpcHRpb246IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3Vic2NyaXB0aW9uXCJdLFxuICAgIHNldFRocmVhZFN1YnNjcmlwdGlvbjogW1xuICAgICAgXCJQVVQgL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfS9zdWJzY3JpcHRpb25cIixcbiAgICBdLFxuICAgIHN0YXJSZXBvRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBVVCAvdXNlci9zdGFycmVkL3tvd25lcn0ve3JlcG99XCJdLFxuICAgIHVuc3RhclJlcG9Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL3N0YXJyZWQve293bmVyfS97cmVwb31cIl0sXG4gIH0sXG4gIGFwcHM6IHtcbiAgICBhZGRSZXBvVG9JbnN0YWxsYXRpb246IFtcbiAgICAgIFwiUFVUIC91c2VyL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImFwcHNcIiwgXCJhZGRSZXBvVG9JbnN0YWxsYXRpb25Gb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgYWRkUmVwb1RvSW5zdGFsbGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUFVUIC91c2VyL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgY2hlY2tUb2tlbjogW1wiUE9TVCAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuXCJdLFxuICAgIGNyZWF0ZUZyb21NYW5pZmVzdDogW1wiUE9TVCAvYXBwLW1hbmlmZXN0cy97Y29kZX0vY29udmVyc2lvbnNcIl0sXG4gICAgY3JlYXRlSW5zdGFsbGF0aW9uQWNjZXNzVG9rZW46IFtcbiAgICAgIFwiUE9TVCAvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vYWNjZXNzX3Rva2Vuc1wiLFxuICAgIF0sXG4gICAgZGVsZXRlQXV0aG9yaXphdGlvbjogW1wiREVMRVRFIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vZ3JhbnRcIl0sXG4gICAgZGVsZXRlSW5zdGFsbGF0aW9uOiBbXCJERUxFVEUgL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9XCJdLFxuICAgIGRlbGV0ZVRva2VuOiBbXCJERUxFVEUgL2FwcGxpY2F0aW9ucy97Y2xpZW50X2lkfS90b2tlblwiXSxcbiAgICBnZXRBdXRoZW50aWNhdGVkOiBbXCJHRVQgL2FwcFwiXSxcbiAgICBnZXRCeVNsdWc6IFtcIkdFVCAvYXBwcy97YXBwX3NsdWd9XCJdLFxuICAgIGdldEluc3RhbGxhdGlvbjogW1wiR0VUIC9hcHAvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfVwiXSxcbiAgICBnZXRPcmdJbnN0YWxsYXRpb246IFtcIkdFVCAvb3Jncy97b3JnfS9pbnN0YWxsYXRpb25cIl0sXG4gICAgZ2V0UmVwb0luc3RhbGxhdGlvbjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pbnN0YWxsYXRpb25cIl0sXG4gICAgZ2V0U3Vic2NyaXB0aW9uUGxhbkZvckFjY291bnQ6IFtcbiAgICAgIFwiR0VUIC9tYXJrZXRwbGFjZV9saXN0aW5nL2FjY291bnRzL3thY2NvdW50X2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0U3Vic2NyaXB0aW9uUGxhbkZvckFjY291bnRTdHViYmVkOiBbXG4gICAgICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9zdHViYmVkL2FjY291bnRzL3thY2NvdW50X2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0VXNlckluc3RhbGxhdGlvbjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2luc3RhbGxhdGlvblwiXSxcbiAgICBnZXRXZWJob29rQ29uZmlnRm9yQXBwOiBbXCJHRVQgL2FwcC9ob29rL2NvbmZpZ1wiXSxcbiAgICBnZXRXZWJob29rRGVsaXZlcnk6IFtcIkdFVCAvYXBwL2hvb2svZGVsaXZlcmllcy97ZGVsaXZlcnlfaWR9XCJdLFxuICAgIGxpc3RBY2NvdW50c0ZvclBsYW46IFtcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFucy97cGxhbl9pZH0vYWNjb3VudHNcIl0sXG4gICAgbGlzdEFjY291bnRzRm9yUGxhblN0dWJiZWQ6IFtcbiAgICAgIFwiR0VUIC9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhbnMve3BsYW5faWR9L2FjY291bnRzXCIsXG4gICAgXSxcbiAgICBsaXN0SW5zdGFsbGF0aW9uUmVwb3NGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RJbnN0YWxsYXRpb25SZXF1ZXN0c0ZvckF1dGhlbnRpY2F0ZWRBcHA6IFtcbiAgICAgIFwiR0VUIC9hcHAvaW5zdGFsbGF0aW9uLXJlcXVlc3RzXCIsXG4gICAgXSxcbiAgICBsaXN0SW5zdGFsbGF0aW9uczogW1wiR0VUIC9hcHAvaW5zdGFsbGF0aW9uc1wiXSxcbiAgICBsaXN0SW5zdGFsbGF0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvaW5zdGFsbGF0aW9uc1wiXSxcbiAgICBsaXN0UGxhbnM6IFtcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFuc1wiXSxcbiAgICBsaXN0UGxhbnNTdHViYmVkOiBbXCJHRVQgL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9wbGFuc1wiXSxcbiAgICBsaXN0UmVwb3NBY2Nlc3NpYmxlVG9JbnN0YWxsYXRpb246IFtcIkdFVCAvaW5zdGFsbGF0aW9uL3JlcG9zaXRvcmllc1wiXSxcbiAgICBsaXN0U3Vic2NyaXB0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvbWFya2V0cGxhY2VfcHVyY2hhc2VzXCJdLFxuICAgIGxpc3RTdWJzY3JpcHRpb25zRm9yQXV0aGVudGljYXRlZFVzZXJTdHViYmVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9tYXJrZXRwbGFjZV9wdXJjaGFzZXMvc3R1YmJlZFwiLFxuICAgIF0sXG4gICAgbGlzdFdlYmhvb2tEZWxpdmVyaWVzOiBbXCJHRVQgL2FwcC9ob29rL2RlbGl2ZXJpZXNcIl0sXG4gICAgcmVkZWxpdmVyV2ViaG9va0RlbGl2ZXJ5OiBbXG4gICAgICBcIlBPU1QgL2FwcC9ob29rL2RlbGl2ZXJpZXMve2RlbGl2ZXJ5X2lkfS9hdHRlbXB0c1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlUmVwb0Zyb21JbnN0YWxsYXRpb246IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImFwcHNcIiwgXCJyZW1vdmVSZXBvRnJvbUluc3RhbGxhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICByZW1vdmVSZXBvRnJvbUluc3RhbGxhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHJlc2V0VG9rZW46IFtcIlBBVENIIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW5cIl0sXG4gICAgcmV2b2tlSW5zdGFsbGF0aW9uQWNjZXNzVG9rZW46IFtcIkRFTEVURSAvaW5zdGFsbGF0aW9uL3Rva2VuXCJdLFxuICAgIHNjb3BlVG9rZW46IFtcIlBPU1QgL2FwcGxpY2F0aW9ucy97Y2xpZW50X2lkfS90b2tlbi9zY29wZWRcIl0sXG4gICAgc3VzcGVuZEluc3RhbGxhdGlvbjogW1wiUFVUIC9hcHAvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9zdXNwZW5kZWRcIl0sXG4gICAgdW5zdXNwZW5kSW5zdGFsbGF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vc3VzcGVuZGVkXCIsXG4gICAgXSxcbiAgICB1cGRhdGVXZWJob29rQ29uZmlnRm9yQXBwOiBbXCJQQVRDSCAvYXBwL2hvb2svY29uZmlnXCJdLFxuICB9LFxuICBiaWxsaW5nOiB7XG4gICAgZ2V0R2l0aHViQWN0aW9uc0JpbGxpbmdPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9iaWxsaW5nL2FjdGlvbnNcIl0sXG4gICAgZ2V0R2l0aHViQWN0aW9uc0JpbGxpbmdVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9zZXR0aW5ncy9iaWxsaW5nL2FjdGlvbnNcIixcbiAgICBdLFxuICAgIGdldEdpdGh1YkJpbGxpbmdVc2FnZVJlcG9ydE9yZzogW1xuICAgICAgXCJHRVQgL29yZ2FuaXphdGlvbnMve29yZ30vc2V0dGluZ3MvYmlsbGluZy91c2FnZVwiLFxuICAgIF0sXG4gICAgZ2V0R2l0aHViUGFja2FnZXNCaWxsaW5nT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvYmlsbGluZy9wYWNrYWdlc1wiXSxcbiAgICBnZXRHaXRodWJQYWNrYWdlc0JpbGxpbmdVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9zZXR0aW5ncy9iaWxsaW5nL3BhY2thZ2VzXCIsXG4gICAgXSxcbiAgICBnZXRTaGFyZWRTdG9yYWdlQmlsbGluZ09yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvYmlsbGluZy9zaGFyZWQtc3RvcmFnZVwiLFxuICAgIF0sXG4gICAgZ2V0U2hhcmVkU3RvcmFnZUJpbGxpbmdVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9zZXR0aW5ncy9iaWxsaW5nL3NoYXJlZC1zdG9yYWdlXCIsXG4gICAgXSxcbiAgfSxcbiAgY2hlY2tzOiB7XG4gICAgY3JlYXRlOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1ydW5zXCJdLFxuICAgIGNyZWF0ZVN1aXRlOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1zdWl0ZXNcIl0sXG4gICAgZ2V0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXJ1bnMve2NoZWNrX3J1bl9pZH1cIl0sXG4gICAgZ2V0U3VpdGU6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stc3VpdGVzL3tjaGVja19zdWl0ZV9pZH1cIl0sXG4gICAgbGlzdEFubm90YXRpb25zOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stcnVucy97Y2hlY2tfcnVuX2lkfS9hbm5vdGF0aW9uc1wiLFxuICAgIF0sXG4gICAgbGlzdEZvclJlZjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L2NoZWNrLXJ1bnNcIl0sXG4gICAgbGlzdEZvclN1aXRlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stc3VpdGVzL3tjaGVja19zdWl0ZV9pZH0vY2hlY2stcnVuc1wiLFxuICAgIF0sXG4gICAgbGlzdFN1aXRlc0ZvclJlZjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L2NoZWNrLXN1aXRlc1wiXSxcbiAgICByZXJlcXVlc3RSdW46IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stcnVucy97Y2hlY2tfcnVuX2lkfS9yZXJlcXVlc3RcIixcbiAgICBdLFxuICAgIHJlcmVxdWVzdFN1aXRlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXN1aXRlcy97Y2hlY2tfc3VpdGVfaWR9L3JlcmVxdWVzdFwiLFxuICAgIF0sXG4gICAgc2V0U3VpdGVzUHJlZmVyZW5jZXM6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXN1aXRlcy9wcmVmZXJlbmNlc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stcnVucy97Y2hlY2tfcnVuX2lkfVwiXSxcbiAgfSxcbiAgY29kZVNjYW5uaW5nOiB7XG4gICAgY29tbWl0QXV0b2ZpeDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfS9hdXRvZml4L2NvbW1pdHNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUF1dG9maXg6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn0vYXV0b2ZpeFwiLFxuICAgIF0sXG4gICAgY3JlYXRlVmFyaWFudEFuYWx5c2lzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvY29kZXFsL3ZhcmlhbnQtYW5hbHlzZXNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUFuYWx5c2lzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbmFseXNlcy97YW5hbHlzaXNfaWR9ez9jb25maXJtX2RlbGV0ZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUNvZGVxbERhdGFiYXNlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9jb2RlcWwvZGF0YWJhc2VzL3tsYW5ndWFnZX1cIixcbiAgICBdLFxuICAgIGdldEFsZXJ0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkUGFyYW1ldGVyczogeyBhbGVydF9pZDogXCJhbGVydF9udW1iZXJcIiB9IH0sXG4gICAgXSxcbiAgICBnZXRBbmFseXNpczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYW5hbHlzZXMve2FuYWx5c2lzX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0QXV0b2ZpeDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2F1dG9maXhcIixcbiAgICBdLFxuICAgIGdldENvZGVxbERhdGFiYXNlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9jb2RlcWwvZGF0YWJhc2VzL3tsYW5ndWFnZX1cIixcbiAgICBdLFxuICAgIGdldERlZmF1bHRTZXR1cDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2RlZmF1bHQtc2V0dXBcIl0sXG4gICAgZ2V0U2FyaWY6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9zYXJpZnMve3NhcmlmX2lkfVwiXSxcbiAgICBnZXRWYXJpYW50QW5hbHlzaXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2NvZGVxbC92YXJpYW50LWFuYWx5c2VzL3tjb2RlcWxfdmFyaWFudF9hbmFseXNpc19pZH1cIixcbiAgICBdLFxuICAgIGdldFZhcmlhbnRBbmFseXNpc1JlcG9UYXNrOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9jb2RlcWwvdmFyaWFudC1hbmFseXNlcy97Y29kZXFsX3ZhcmlhbnRfYW5hbHlzaXNfaWR9L3JlcG9zL3tyZXBvX293bmVyfS97cmVwb19uYW1lfVwiLFxuICAgIF0sXG4gICAgbGlzdEFsZXJ0SW5zdGFuY2VzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn0vaW5zdGFuY2VzXCIsXG4gICAgXSxcbiAgICBsaXN0QWxlcnRzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vY29kZS1zY2FubmluZy9hbGVydHNcIl0sXG4gICAgbGlzdEFsZXJ0c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHNcIl0sXG4gICAgbGlzdEFsZXJ0c0luc3RhbmNlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2luc3RhbmNlc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImNvZGVTY2FubmluZ1wiLCBcImxpc3RBbGVydEluc3RhbmNlc1wiXSB9LFxuICAgIF0sXG4gICAgbGlzdENvZGVxbERhdGFiYXNlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvY29kZXFsL2RhdGFiYXNlc1wiLFxuICAgIF0sXG4gICAgbGlzdFJlY2VudEFuYWx5c2VzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYW5hbHlzZXNcIl0sXG4gICAgdXBkYXRlQWxlcnQ6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVEZWZhdWx0U2V0dXA6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvZGVmYXVsdC1zZXR1cFwiLFxuICAgIF0sXG4gICAgdXBsb2FkU2FyaWY6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvc2FyaWZzXCJdLFxuICB9LFxuICBjb2RlU2VjdXJpdHk6IHtcbiAgICBhdHRhY2hDb25maWd1cmF0aW9uOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vYXR0YWNoXCIsXG4gICAgXSxcbiAgICBhdHRhY2hFbnRlcnByaXNlQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJQT1NUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vYXR0YWNoXCIsXG4gICAgXSxcbiAgICBjcmVhdGVDb25maWd1cmF0aW9uOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnNcIl0sXG4gICAgY3JlYXRlQ29uZmlndXJhdGlvbkZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiUE9TVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUNvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVDb25maWd1cmF0aW9uRm9yRW50ZXJwcmlzZTogW1xuICAgICAgXCJERUxFVEUgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGV0YWNoQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy9kZXRhY2hcIixcbiAgICBdLFxuICAgIGdldENvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBnZXRDb25maWd1cmF0aW9uRm9yUmVwb3NpdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2VjdXJpdHktY29uZmlndXJhdGlvblwiLFxuICAgIF0sXG4gICAgZ2V0Q29uZmlndXJhdGlvbnNGb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnNcIixcbiAgICBdLFxuICAgIGdldENvbmZpZ3VyYXRpb25zRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9uc1wiXSxcbiAgICBnZXREZWZhdWx0Q29uZmlndXJhdGlvbnM6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMvZGVmYXVsdHNcIixcbiAgICBdLFxuICAgIGdldERlZmF1bHRDb25maWd1cmF0aW9uc0ZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy9kZWZhdWx0c1wiLFxuICAgIF0sXG4gICAgZ2V0UmVwb3NpdG9yaWVzRm9yQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBnZXRSZXBvc2l0b3JpZXNGb3JFbnRlcnByaXNlQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJHRVQgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGdldFNpbmdsZUNvbmZpZ3VyYXRpb25Gb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBzZXRDb25maWd1cmF0aW9uQXNEZWZhdWx0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfS9kZWZhdWx0c1wiLFxuICAgIF0sXG4gICAgc2V0Q29uZmlndXJhdGlvbkFzRGVmYXVsdEZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiUFVUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vZGVmYXVsdHNcIixcbiAgICBdLFxuICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZUVudGVycHJpc2VDb25maWd1cmF0aW9uOiBbXG4gICAgICBcIlBBVENIIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH1cIixcbiAgICBdLFxuICB9LFxuICBjb2Rlc09mQ29uZHVjdDoge1xuICAgIGdldEFsbENvZGVzT2ZDb25kdWN0OiBbXCJHRVQgL2NvZGVzX29mX2NvbmR1Y3RcIl0sXG4gICAgZ2V0Q29uZHVjdENvZGU6IFtcIkdFVCAvY29kZXNfb2ZfY29uZHVjdC97a2V5fVwiXSxcbiAgfSxcbiAgY29kZXNwYWNlczoge1xuICAgIGFkZFJlcG9zaXRvcnlGb3JTZWNyZXRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQVVQgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgYWRkU2VsZWN0ZWRSZXBvVG9PcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGNoZWNrUGVybWlzc2lvbnNGb3JEZXZjb250YWluZXI6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL3Blcm1pc3Npb25zX2NoZWNrXCIsXG4gICAgXSxcbiAgICBjb2Rlc3BhY2VNYWNoaW5lc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX0vbWFjaGluZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL2NvZGVzcGFjZXNcIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVPcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVPclVwZGF0ZVJlcG9TZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVTZWNyZXRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQVVQgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZVdpdGhQckZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vY29kZXNwYWNlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlV2l0aFJlcG9Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzXCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfVwiXSxcbiAgICBkZWxldGVGcm9tT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9tZW1iZXJzL3t1c2VybmFtZX0vY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVPcmdTZWNyZXQ6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBkZWxldGVSZXBvU2VjcmV0OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVNlY3JldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZXhwb3J0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX0vZXhwb3J0c1wiLFxuICAgIF0sXG4gICAgZ2V0Q29kZXNwYWNlc0ZvclVzZXJJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vbWVtYmVycy97dXNlcm5hbWV9L2NvZGVzcGFjZXNcIixcbiAgICBdLFxuICAgIGdldEV4cG9ydERldGFpbHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9L2V4cG9ydHMve2V4cG9ydF9pZH1cIixcbiAgICBdLFxuICAgIGdldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9XCJdLFxuICAgIGdldE9yZ1B1YmxpY0tleTogW1wiR0VUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy9wdWJsaWMta2V5XCJdLFxuICAgIGdldE9yZ1NlY3JldDogW1wiR0VUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCJdLFxuICAgIGdldFB1YmxpY0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMvcHVibGljLWtleVwiLFxuICAgIF0sXG4gICAgZ2V0UmVwb1B1YmxpY0tleTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvc2VjcmV0cy9wdWJsaWMta2V5XCIsXG4gICAgXSxcbiAgICBnZXRSZXBvU2VjcmV0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGdldFNlY3JldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgbGlzdERldmNvbnRhaW5lcnNJblJlcG9zaXRvcnlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvZGV2Y29udGFpbmVyc1wiLFxuICAgIF0sXG4gICAgbGlzdEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvY29kZXNwYWNlc1wiXSxcbiAgICBsaXN0SW5Pcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkUGFyYW1ldGVyczogeyBvcmdfaWQ6IFwib3JnXCIgfSB9LFxuICAgIF0sXG4gICAgbGlzdEluUmVwb3NpdG9yeUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlc1wiLFxuICAgIF0sXG4gICAgbGlzdE9yZ1NlY3JldHM6IFtcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHNcIl0sXG4gICAgbGlzdFJlcG9TZWNyZXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvc2VjcmV0c1wiXSxcbiAgICBsaXN0UmVwb3NpdG9yaWVzRm9yU2VjcmV0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFNlY3JldHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0c1wiXSxcbiAgICBsaXN0U2VsZWN0ZWRSZXBvc0Zvck9yZ1NlY3JldDogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBwcmVGbGlnaHRXaXRoUmVwb0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9uZXdcIixcbiAgICBdLFxuICAgIHB1Ymxpc2hGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQT1NUIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfS9wdWJsaXNoXCIsXG4gICAgXSxcbiAgICByZW1vdmVSZXBvc2l0b3J5Rm9yU2VjcmV0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHJlbW92ZVNlbGVjdGVkUmVwb0Zyb21PcmdTZWNyZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHJlcG9NYWNoaW5lc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9tYWNoaW5lc1wiLFxuICAgIF0sXG4gICAgc2V0UmVwb3NpdG9yaWVzRm9yU2VjcmV0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUFVUIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgc2V0U2VsZWN0ZWRSZXBvc0Zvck9yZ1NlY3JldDogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBzdGFydEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfS9zdGFydFwiXSxcbiAgICBzdG9wRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9L3N0b3BcIl0sXG4gICAgc3RvcEluT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vbWVtYmVycy97dXNlcm5hbWV9L2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfS9zdG9wXCIsXG4gICAgXSxcbiAgICB1cGRhdGVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUEFUQ0ggL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9XCJdLFxuICB9LFxuICBjb3BpbG90OiB7XG4gICAgYWRkQ29waWxvdFNlYXRzRm9yVGVhbXM6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9jb3BpbG90L2JpbGxpbmcvc2VsZWN0ZWRfdGVhbXNcIixcbiAgICBdLFxuICAgIGFkZENvcGlsb3RTZWF0c0ZvclVzZXJzOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vY29waWxvdC9iaWxsaW5nL3NlbGVjdGVkX3VzZXJzXCIsXG4gICAgXSxcbiAgICBjYW5jZWxDb3BpbG90U2VhdEFzc2lnbm1lbnRGb3JUZWFtczogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vY29waWxvdC9iaWxsaW5nL3NlbGVjdGVkX3RlYW1zXCIsXG4gICAgXSxcbiAgICBjYW5jZWxDb3BpbG90U2VhdEFzc2lnbm1lbnRGb3JVc2VyczogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vY29waWxvdC9iaWxsaW5nL3NlbGVjdGVkX3VzZXJzXCIsXG4gICAgXSxcbiAgICBjb3BpbG90TWV0cmljc0Zvck9yZ2FuaXphdGlvbjogW1wiR0VUIC9vcmdzL3tvcmd9L2NvcGlsb3QvbWV0cmljc1wiXSxcbiAgICBjb3BpbG90TWV0cmljc0ZvclRlYW06IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtL3t0ZWFtX3NsdWd9L2NvcGlsb3QvbWV0cmljc1wiXSxcbiAgICBnZXRDb3BpbG90T3JnYW5pemF0aW9uRGV0YWlsczogW1wiR0VUIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZ1wiXSxcbiAgICBnZXRDb3BpbG90U2VhdERldGFpbHNGb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9tZW1iZXJzL3t1c2VybmFtZX0vY29waWxvdFwiLFxuICAgIF0sXG4gICAgbGlzdENvcGlsb3RTZWF0czogW1wiR0VUIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZy9zZWF0c1wiXSxcbiAgICB1c2FnZU1ldHJpY3NGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L3VzYWdlXCJdLFxuICAgIHVzYWdlTWV0cmljc0ZvclRlYW06IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtL3t0ZWFtX3NsdWd9L2NvcGlsb3QvdXNhZ2VcIl0sXG4gIH0sXG4gIGRlcGVuZGFib3Q6IHtcbiAgICBhZGRTZWxlY3RlZFJlcG9Ub09yZ1NlY3JldDogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVPcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVPclVwZGF0ZVJlcG9TZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlT3JnU2VjcmV0OiBbXCJERUxFVEUgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZGVsZXRlUmVwb1NlY3JldDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRBbGVydDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L2FsZXJ0cy97YWxlcnRfbnVtYmVyfVwiXSxcbiAgICBnZXRPcmdQdWJsaWNLZXk6IFtcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMvcHVibGljLWtleVwiXSxcbiAgICBnZXRPcmdTZWNyZXQ6IFtcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBnZXRSZXBvUHVibGljS2V5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9zZWNyZXRzL3B1YmxpYy1rZXlcIixcbiAgICBdLFxuICAgIGdldFJlcG9TZWNyZXQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgbGlzdEFsZXJ0c0ZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vZGVwZW5kYWJvdC9hbGVydHNcIixcbiAgICBdLFxuICAgIGxpc3RBbGVydHNGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L2FsZXJ0c1wiXSxcbiAgICBsaXN0QWxlcnRzRm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L2FsZXJ0c1wiXSxcbiAgICBsaXN0T3JnU2VjcmV0czogW1wiR0VUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0c1wiXSxcbiAgICBsaXN0UmVwb1NlY3JldHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9zZWNyZXRzXCJdLFxuICAgIGxpc3RTZWxlY3RlZFJlcG9zRm9yT3JnU2VjcmV0OiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIHJlbW92ZVNlbGVjdGVkUmVwb0Zyb21PcmdTZWNyZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIHNldFNlbGVjdGVkUmVwb3NGb3JPcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlQWxlcnQ6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGFib3QvYWxlcnRzL3thbGVydF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgfSxcbiAgZGVwZW5kZW5jeUdyYXBoOiB7XG4gICAgY3JlYXRlUmVwb3NpdG9yeVNuYXBzaG90OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGVuY3ktZ3JhcGgvc25hcHNob3RzXCIsXG4gICAgXSxcbiAgICBkaWZmUmFuZ2U6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRlbmN5LWdyYXBoL2NvbXBhcmUve2Jhc2VoZWFkfVwiLFxuICAgIF0sXG4gICAgZXhwb3J0U2JvbTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRlbmN5LWdyYXBoL3Nib21cIl0sXG4gIH0sXG4gIGVtb2ppczogeyBnZXQ6IFtcIkdFVCAvZW1vamlzXCJdIH0sXG4gIGdpc3RzOiB7XG4gICAgY2hlY2tJc1N0YXJyZWQ6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L3N0YXJcIl0sXG4gICAgY3JlYXRlOiBbXCJQT1NUIC9naXN0c1wiXSxcbiAgICBjcmVhdGVDb21tZW50OiBbXCJQT1NUIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHNcIl0sXG4gICAgZGVsZXRlOiBbXCJERUxFVEUgL2dpc3RzL3tnaXN0X2lkfVwiXSxcbiAgICBkZWxldGVDb21tZW50OiBbXCJERUxFVEUgL2dpc3RzL3tnaXN0X2lkfS9jb21tZW50cy97Y29tbWVudF9pZH1cIl0sXG4gICAgZm9yazogW1wiUE9TVCAvZ2lzdHMve2dpc3RfaWR9L2ZvcmtzXCJdLFxuICAgIGdldDogW1wiR0VUIC9naXN0cy97Z2lzdF9pZH1cIl0sXG4gICAgZ2V0Q29tbWVudDogW1wiR0VUIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIGdldFJldmlzaW9uOiBbXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS97c2hhfVwiXSxcbiAgICBsaXN0OiBbXCJHRVQgL2dpc3RzXCJdLFxuICAgIGxpc3RDb21tZW50czogW1wiR0VUIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHNcIl0sXG4gICAgbGlzdENvbW1pdHM6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1pdHNcIl0sXG4gICAgbGlzdEZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9naXN0c1wiXSxcbiAgICBsaXN0Rm9ya3M6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L2ZvcmtzXCJdLFxuICAgIGxpc3RQdWJsaWM6IFtcIkdFVCAvZ2lzdHMvcHVibGljXCJdLFxuICAgIGxpc3RTdGFycmVkOiBbXCJHRVQgL2dpc3RzL3N0YXJyZWRcIl0sXG4gICAgc3RhcjogW1wiUFVUIC9naXN0cy97Z2lzdF9pZH0vc3RhclwiXSxcbiAgICB1bnN0YXI6IFtcIkRFTEVURSAvZ2lzdHMve2dpc3RfaWR9L3N0YXJcIl0sXG4gICAgdXBkYXRlOiBbXCJQQVRDSCAvZ2lzdHMve2dpc3RfaWR9XCJdLFxuICAgIHVwZGF0ZUNvbW1lbnQ6IFtcIlBBVENIIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICB9LFxuICBnaXQ6IHtcbiAgICBjcmVhdGVCbG9iOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvYmxvYnNcIl0sXG4gICAgY3JlYXRlQ29tbWl0OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvY29tbWl0c1wiXSxcbiAgICBjcmVhdGVSZWY6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC9yZWZzXCJdLFxuICAgIGNyZWF0ZVRhZzogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L3RhZ3NcIl0sXG4gICAgY3JlYXRlVHJlZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L3RyZWVzXCJdLFxuICAgIGRlbGV0ZVJlZjogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvcmVmcy97cmVmfVwiXSxcbiAgICBnZXRCbG9iOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC9ibG9icy97ZmlsZV9zaGF9XCJdLFxuICAgIGdldENvbW1pdDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvY29tbWl0cy97Y29tbWl0X3NoYX1cIl0sXG4gICAgZ2V0UmVmOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC9yZWYve3JlZn1cIl0sXG4gICAgZ2V0VGFnOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC90YWdzL3t0YWdfc2hhfVwiXSxcbiAgICBnZXRUcmVlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC90cmVlcy97dHJlZV9zaGF9XCJdLFxuICAgIGxpc3RNYXRjaGluZ1JlZnM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L21hdGNoaW5nLXJlZnMve3JlZn1cIl0sXG4gICAgdXBkYXRlUmVmOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L3JlZnMve3JlZn1cIl0sXG4gIH0sXG4gIGdpdGlnbm9yZToge1xuICAgIGdldEFsbFRlbXBsYXRlczogW1wiR0VUIC9naXRpZ25vcmUvdGVtcGxhdGVzXCJdLFxuICAgIGdldFRlbXBsYXRlOiBbXCJHRVQgL2dpdGlnbm9yZS90ZW1wbGF0ZXMve25hbWV9XCJdLFxuICB9LFxuICBob3N0ZWRDb21wdXRlOiB7XG4gICAgY3JlYXRlTmV0d29ya0NvbmZpZ3VyYXRpb25Gb3JPcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zXCIsXG4gICAgXSxcbiAgICBkZWxldGVOZXR3b3JrQ29uZmlndXJhdGlvbkZyb21Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3NldHRpbmdzL25ldHdvcmstY29uZmlndXJhdGlvbnMve25ldHdvcmtfY29uZmlndXJhdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGdldE5ldHdvcmtDb25maWd1cmF0aW9uRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zL3tuZXR3b3JrX2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBnZXROZXR3b3JrU2V0dGluZ3NGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3NldHRpbmdzL25ldHdvcmstc2V0dGluZ3Mve25ldHdvcmtfc2V0dGluZ3NfaWR9XCIsXG4gICAgXSxcbiAgICBsaXN0TmV0d29ya0NvbmZpZ3VyYXRpb25zRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zXCIsXG4gICAgXSxcbiAgICB1cGRhdGVOZXR3b3JrQ29uZmlndXJhdGlvbkZvck9yZzogW1xuICAgICAgXCJQQVRDSCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zL3tuZXR3b3JrX2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgfSxcbiAgaW50ZXJhY3Rpb25zOiB7XG4gICAgZ2V0UmVzdHJpY3Rpb25zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9pbnRlcmFjdGlvbi1saW1pdHNcIl0sXG4gICAgZ2V0UmVzdHJpY3Rpb25zRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIGdldFJlc3RyaWN0aW9uc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIGdldFJlc3RyaWN0aW9uc0ZvcllvdXJQdWJsaWNSZXBvczogW1xuICAgICAgXCJHRVQgL3VzZXIvaW50ZXJhY3Rpb24tbGltaXRzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wiaW50ZXJhY3Rpb25zXCIsIFwiZ2V0UmVzdHJpY3Rpb25zRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIHJlbW92ZVJlc3RyaWN0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJERUxFVEUgL3VzZXIvaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIHJlbW92ZVJlc3RyaWN0aW9uc0Zvck9yZzogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2ludGVyYWN0aW9uLWxpbWl0c1wiXSxcbiAgICByZW1vdmVSZXN0cmljdGlvbnNGb3JSZXBvOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaW50ZXJhY3Rpb24tbGltaXRzXCIsXG4gICAgXSxcbiAgICByZW1vdmVSZXN0cmljdGlvbnNGb3JZb3VyUHVibGljUmVwb3M6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL2ludGVyYWN0aW9uLWxpbWl0c1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImludGVyYWN0aW9uc1wiLCBcInJlbW92ZVJlc3RyaWN0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBzZXRSZXN0cmljdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUFVUIC91c2VyL2ludGVyYWN0aW9uLWxpbWl0c1wiXSxcbiAgICBzZXRSZXN0cmljdGlvbnNGb3JPcmc6IFtcIlBVVCAvb3Jncy97b3JnfS9pbnRlcmFjdGlvbi1saW1pdHNcIl0sXG4gICAgc2V0UmVzdHJpY3Rpb25zRm9yUmVwbzogW1wiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pbnRlcmFjdGlvbi1saW1pdHNcIl0sXG4gICAgc2V0UmVzdHJpY3Rpb25zRm9yWW91clB1YmxpY1JlcG9zOiBbXG4gICAgICBcIlBVVCAvdXNlci9pbnRlcmFjdGlvbi1saW1pdHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJpbnRlcmFjdGlvbnNcIiwgXCJzZXRSZXN0cmljdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gIH0sXG4gIGlzc3Vlczoge1xuICAgIGFkZEFzc2lnbmVlczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vYXNzaWduZWVzXCIsXG4gICAgXSxcbiAgICBhZGRMYWJlbHM6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9sYWJlbHNcIl0sXG4gICAgYWRkU3ViSXNzdWU6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3N1Yl9pc3N1ZXNcIixcbiAgICBdLFxuICAgIGNoZWNrVXNlckNhbkJlQXNzaWduZWQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXNzaWduZWVzL3thc3NpZ25lZX1cIl0sXG4gICAgY2hlY2tVc2VyQ2FuQmVBc3NpZ25lZFRvSXNzdWU6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vYXNzaWduZWVzL3thc3NpZ25lZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzXCJdLFxuICAgIGNyZWF0ZUNvbW1lbnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVMYWJlbDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vbGFiZWxzXCJdLFxuICAgIGNyZWF0ZU1pbGVzdG9uZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vbWlsZXN0b25lc1wiXSxcbiAgICBkZWxldGVDb21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzL3tjb21tZW50X2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlTGFiZWw6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vbGFiZWxzL3tuYW1lfVwiXSxcbiAgICBkZWxldGVNaWxlc3RvbmU6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9taWxlc3RvbmVzL3ttaWxlc3RvbmVfbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgZ2V0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfVwiXSxcbiAgICBnZXRDb21tZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9jb21tZW50cy97Y29tbWVudF9pZH1cIl0sXG4gICAgZ2V0RXZlbnQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2V2ZW50cy97ZXZlbnRfaWR9XCJdLFxuICAgIGdldExhYmVsOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2xhYmVscy97bmFtZX1cIl0sXG4gICAgZ2V0TWlsZXN0b25lOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXMve21pbGVzdG9uZV9udW1iZXJ9XCJdLFxuICAgIGxpc3Q6IFtcIkdFVCAvaXNzdWVzXCJdLFxuICAgIGxpc3RBc3NpZ25lZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXNzaWduZWVzXCJdLFxuICAgIGxpc3RDb21tZW50czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vY29tbWVudHNcIl0sXG4gICAgbGlzdENvbW1lbnRzRm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHNcIl0sXG4gICAgbGlzdEV2ZW50czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vZXZlbnRzXCJdLFxuICAgIGxpc3RFdmVudHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9ldmVudHNcIl0sXG4gICAgbGlzdEV2ZW50c0ZvclRpbWVsaW5lOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3RpbWVsaW5lXCIsXG4gICAgXSxcbiAgICBsaXN0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9pc3N1ZXNcIl0sXG4gICAgbGlzdEZvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2lzc3Vlc1wiXSxcbiAgICBsaXN0Rm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXNcIl0sXG4gICAgbGlzdExhYmVsc0Zvck1pbGVzdG9uZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXMve21pbGVzdG9uZV9udW1iZXJ9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgbGlzdExhYmVsc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbGFiZWxzXCJdLFxuICAgIGxpc3RMYWJlbHNPbklzc3VlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgbGlzdE1pbGVzdG9uZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbWlsZXN0b25lc1wiXSxcbiAgICBsaXN0U3ViSXNzdWVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3N1Yl9pc3N1ZXNcIixcbiAgICBdLFxuICAgIGxvY2s6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xvY2tcIl0sXG4gICAgcmVtb3ZlQWxsTGFiZWxzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlQXNzaWduZWVzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2Fzc2lnbmVlc1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlTGFiZWw6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vbGFiZWxzL3tuYW1lfVwiLFxuICAgIF0sXG4gICAgcmVtb3ZlU3ViSXNzdWU6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vc3ViX2lzc3VlXCIsXG4gICAgXSxcbiAgICByZXByaW9yaXRpemVTdWJJc3N1ZTogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3N1Yl9pc3N1ZXMvcHJpb3JpdHlcIixcbiAgICBdLFxuICAgIHNldExhYmVsczogW1wiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vbGFiZWxzXCJdLFxuICAgIHVubG9jazogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vbG9ja1wiXSxcbiAgICB1cGRhdGU6IFtcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn1cIl0sXG4gICAgdXBkYXRlQ29tbWVudDogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9jb21tZW50cy97Y29tbWVudF9pZH1cIl0sXG4gICAgdXBkYXRlTGFiZWw6IFtcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9sYWJlbHMve25hbWV9XCJdLFxuICAgIHVwZGF0ZU1pbGVzdG9uZTogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vbWlsZXN0b25lcy97bWlsZXN0b25lX251bWJlcn1cIixcbiAgICBdLFxuICB9LFxuICBsaWNlbnNlczoge1xuICAgIGdldDogW1wiR0VUIC9saWNlbnNlcy97bGljZW5zZX1cIl0sXG4gICAgZ2V0QWxsQ29tbW9ubHlVc2VkOiBbXCJHRVQgL2xpY2Vuc2VzXCJdLFxuICAgIGdldEZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbGljZW5zZVwiXSxcbiAgfSxcbiAgbWFya2Rvd246IHtcbiAgICByZW5kZXI6IFtcIlBPU1QgL21hcmtkb3duXCJdLFxuICAgIHJlbmRlclJhdzogW1xuICAgICAgXCJQT1NUIC9tYXJrZG93bi9yYXdcIixcbiAgICAgIHsgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIiB9IH0sXG4gICAgXSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGdldDogW1wiR0VUIC9tZXRhXCJdLFxuICAgIGdldEFsbFZlcnNpb25zOiBbXCJHRVQgL3ZlcnNpb25zXCJdLFxuICAgIGdldE9jdG9jYXQ6IFtcIkdFVCAvb2N0b2NhdFwiXSxcbiAgICBnZXRaZW46IFtcIkdFVCAvemVuXCJdLFxuICAgIHJvb3Q6IFtcIkdFVCAvXCJdLFxuICB9LFxuICBtaWdyYXRpb25zOiB7XG4gICAgZGVsZXRlQXJjaGl2ZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L2FyY2hpdmVcIixcbiAgICBdLFxuICAgIGRlbGV0ZUFyY2hpdmVGb3JPcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vYXJjaGl2ZVwiLFxuICAgIF0sXG4gICAgZG93bmxvYWRBcmNoaXZlRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L2FyY2hpdmVcIixcbiAgICBdLFxuICAgIGdldEFyY2hpdmVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9hcmNoaXZlXCIsXG4gICAgXSxcbiAgICBnZXRTdGF0dXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH1cIl0sXG4gICAgZ2V0U3RhdHVzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfVwiXSxcbiAgICBsaXN0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9taWdyYXRpb25zXCJdLFxuICAgIGxpc3RGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9taWdyYXRpb25zXCJdLFxuICAgIGxpc3RSZXBvc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFJlcG9zRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIl0sXG4gICAgbGlzdFJlcG9zRm9yVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJtaWdyYXRpb25zXCIsIFwibGlzdFJlcG9zRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIHN0YXJ0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIvbWlncmF0aW9uc1wiXSxcbiAgICBzdGFydEZvck9yZzogW1wiUE9TVCAvb3Jncy97b3JnfS9taWdyYXRpb25zXCJdLFxuICAgIHVubG9ja1JlcG9Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvcy97cmVwb19uYW1lfS9sb2NrXCIsXG4gICAgXSxcbiAgICB1bmxvY2tSZXBvRm9yT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L3JlcG9zL3tyZXBvX25hbWV9L2xvY2tcIixcbiAgICBdLFxuICB9LFxuICBvaWRjOiB7XG4gICAgZ2V0T2lkY0N1c3RvbVN1YlRlbXBsYXRlRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL29pZGMvY3VzdG9taXphdGlvbi9zdWJcIixcbiAgICBdLFxuICAgIHVwZGF0ZU9pZGNDdXN0b21TdWJUZW1wbGF0ZUZvck9yZzogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9vaWRjL2N1c3RvbWl6YXRpb24vc3ViXCIsXG4gICAgXSxcbiAgfSxcbiAgb3Jnczoge1xuICAgIGFkZFNlY3VyaXR5TWFuYWdlclRlYW06IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3NlY3VyaXR5LW1hbmFnZXJzL3RlYW1zL3t0ZWFtX3NsdWd9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5vcmdzLmFkZFNlY3VyaXR5TWFuYWdlclRlYW0oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9vcmdzL3NlY3VyaXR5LW1hbmFnZXJzI2FkZC1hLXNlY3VyaXR5LW1hbmFnZXItdGVhbVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFzc2lnblRlYW1Ub09yZ1JvbGU6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy90ZWFtcy97dGVhbV9zbHVnfS97cm9sZV9pZH1cIixcbiAgICBdLFxuICAgIGFzc2lnblVzZXJUb09yZ1JvbGU6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy91c2Vycy97dXNlcm5hbWV9L3tyb2xlX2lkfVwiLFxuICAgIF0sXG4gICAgYmxvY2tVc2VyOiBbXCJQVVQgL29yZ3Mve29yZ30vYmxvY2tzL3t1c2VybmFtZX1cIl0sXG4gICAgY2FuY2VsSW52aXRhdGlvbjogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfVwiXSxcbiAgICBjaGVja0Jsb2NrZWRVc2VyOiBbXCJHRVQgL29yZ3Mve29yZ30vYmxvY2tzL3t1c2VybmFtZX1cIl0sXG4gICAgY2hlY2tNZW1iZXJzaGlwRm9yVXNlcjogW1wiR0VUIC9vcmdzL3tvcmd9L21lbWJlcnMve3VzZXJuYW1lfVwiXSxcbiAgICBjaGVja1B1YmxpY01lbWJlcnNoaXBGb3JVc2VyOiBbXCJHRVQgL29yZ3Mve29yZ30vcHVibGljX21lbWJlcnMve3VzZXJuYW1lfVwiXSxcbiAgICBjb252ZXJ0TWVtYmVyVG9PdXRzaWRlQ29sbGFib3JhdG9yOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9vdXRzaWRlX2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlSW52aXRhdGlvbjogW1wiUE9TVCAvb3Jncy97b3JnfS9pbnZpdGF0aW9uc1wiXSxcbiAgICBjcmVhdGVJc3N1ZVR5cGU6IFtcIlBPU1QgL29yZ3Mve29yZ30vaXNzdWUtdHlwZXNcIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVDdXN0b21Qcm9wZXJ0aWVzOiBbXCJQQVRDSCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3NjaGVtYVwiXSxcbiAgICBjcmVhdGVPclVwZGF0ZUN1c3RvbVByb3BlcnRpZXNWYWx1ZXNGb3JSZXBvczogW1xuICAgICAgXCJQQVRDSCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3ZhbHVlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVDdXN0b21Qcm9wZXJ0eTogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vcHJvcGVydGllcy9zY2hlbWEve2N1c3RvbV9wcm9wZXJ0eV9uYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlV2ViaG9vazogW1wiUE9TVCAvb3Jncy97b3JnfS9ob29rc1wiXSxcbiAgICBkZWxldGU6IFtcIkRFTEVURSAvb3Jncy97b3JnfVwiXSxcbiAgICBkZWxldGVJc3N1ZVR5cGU6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9pc3N1ZS10eXBlcy97aXNzdWVfdHlwZV9pZH1cIl0sXG4gICAgZGVsZXRlV2ViaG9vazogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfVwiXSxcbiAgICBlbmFibGVPckRpc2FibGVTZWN1cml0eVByb2R1Y3RPbkFsbE9yZ1JlcG9zOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30ve3NlY3VyaXR5X3Byb2R1Y3R9L3tlbmFibGVtZW50fVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3Qub3Jncy5lbmFibGVPckRpc2FibGVTZWN1cml0eVByb2R1Y3RPbkFsbE9yZ1JlcG9zKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3Qvb3Jncy9vcmdzI2VuYWJsZS1vci1kaXNhYmxlLWEtc2VjdXJpdHktZmVhdHVyZS1mb3ItYW4tb3JnYW5pemF0aW9uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0OiBbXCJHRVQgL29yZ3Mve29yZ31cIl0sXG4gICAgZ2V0QWxsQ3VzdG9tUHJvcGVydGllczogW1wiR0VUIC9vcmdzL3tvcmd9L3Byb3BlcnRpZXMvc2NoZW1hXCJdLFxuICAgIGdldEN1c3RvbVByb3BlcnR5OiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3NjaGVtYS97Y3VzdG9tX3Byb3BlcnR5X25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRNZW1iZXJzaGlwRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9tZW1iZXJzaGlwcy9vcmdzL3tvcmd9XCJdLFxuICAgIGdldE1lbWJlcnNoaXBGb3JVc2VyOiBbXCJHRVQgL29yZ3Mve29yZ30vbWVtYmVyc2hpcHMve3VzZXJuYW1lfVwiXSxcbiAgICBnZXRPcmdSb2xlOiBbXCJHRVQgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzL3tyb2xlX2lkfVwiXSxcbiAgICBnZXRPcmdSdWxlc2V0SGlzdG9yeTogW1wiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3tydWxlc2V0X2lkfS9oaXN0b3J5XCJdLFxuICAgIGdldE9yZ1J1bGVzZXRWZXJzaW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy97cnVsZXNldF9pZH0vaGlzdG9yeS97dmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGdldFdlYmhvb2s6IFtcIkdFVCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH1cIl0sXG4gICAgZ2V0V2ViaG9va0NvbmZpZ0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfS9jb25maWdcIl0sXG4gICAgZ2V0V2ViaG9va0RlbGl2ZXJ5OiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH0vZGVsaXZlcmllcy97ZGVsaXZlcnlfaWR9XCIsXG4gICAgXSxcbiAgICBsaXN0OiBbXCJHRVQgL29yZ2FuaXphdGlvbnNcIl0sXG4gICAgbGlzdEFwcEluc3RhbGxhdGlvbnM6IFtcIkdFVCAvb3Jncy97b3JnfS9pbnN0YWxsYXRpb25zXCJdLFxuICAgIGxpc3RBdHRlc3RhdGlvbnM6IFtcIkdFVCAvb3Jncy97b3JnfS9hdHRlc3RhdGlvbnMve3N1YmplY3RfZGlnZXN0fVwiXSxcbiAgICBsaXN0QmxvY2tlZFVzZXJzOiBbXCJHRVQgL29yZ3Mve29yZ30vYmxvY2tzXCJdLFxuICAgIGxpc3RDdXN0b21Qcm9wZXJ0aWVzVmFsdWVzRm9yUmVwb3M6IFtcIkdFVCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3ZhbHVlc1wiXSxcbiAgICBsaXN0RmFpbGVkSW52aXRhdGlvbnM6IFtcIkdFVCAvb3Jncy97b3JnfS9mYWlsZWRfaW52aXRhdGlvbnNcIl0sXG4gICAgbGlzdEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvb3Jnc1wiXSxcbiAgICBsaXN0Rm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L29yZ3NcIl0sXG4gICAgbGlzdEludml0YXRpb25UZWFtczogW1wiR0VUIC9vcmdzL3tvcmd9L2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfS90ZWFtc1wiXSxcbiAgICBsaXN0SXNzdWVUeXBlczogW1wiR0VUIC9vcmdzL3tvcmd9L2lzc3VlLXR5cGVzXCJdLFxuICAgIGxpc3RNZW1iZXJzOiBbXCJHRVQgL29yZ3Mve29yZ30vbWVtYmVyc1wiXSxcbiAgICBsaXN0TWVtYmVyc2hpcHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL21lbWJlcnNoaXBzL29yZ3NcIl0sXG4gICAgbGlzdE9yZ1JvbGVUZWFtczogW1wiR0VUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy97cm9sZV9pZH0vdGVhbXNcIl0sXG4gICAgbGlzdE9yZ1JvbGVVc2VyczogW1wiR0VUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy97cm9sZV9pZH0vdXNlcnNcIl0sXG4gICAgbGlzdE9yZ1JvbGVzOiBbXCJHRVQgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzXCJdLFxuICAgIGxpc3RPcmdhbml6YXRpb25GaW5lR3JhaW5lZFBlcm1pc3Npb25zOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tZmluZS1ncmFpbmVkLXBlcm1pc3Npb25zXCIsXG4gICAgXSxcbiAgICBsaXN0T3V0c2lkZUNvbGxhYm9yYXRvcnM6IFtcIkdFVCAvb3Jncy97b3JnfS9vdXRzaWRlX2NvbGxhYm9yYXRvcnNcIl0sXG4gICAgbGlzdFBhdEdyYW50UmVwb3NpdG9yaWVzOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zL3twYXRfaWR9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFBhdEdyYW50UmVxdWVzdFJlcG9zaXRvcmllczogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2VuLXJlcXVlc3RzL3twYXRfcmVxdWVzdF9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBsaXN0UGF0R3JhbnRSZXF1ZXN0czogW1wiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbi1yZXF1ZXN0c1wiXSxcbiAgICBsaXN0UGF0R3JhbnRzOiBbXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2Vuc1wiXSxcbiAgICBsaXN0UGVuZGluZ0ludml0YXRpb25zOiBbXCJHRVQgL29yZ3Mve29yZ30vaW52aXRhdGlvbnNcIl0sXG4gICAgbGlzdFB1YmxpY01lbWJlcnM6IFtcIkdFVCAvb3Jncy97b3JnfS9wdWJsaWNfbWVtYmVyc1wiXSxcbiAgICBsaXN0U2VjdXJpdHlNYW5hZ2VyVGVhbXM6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3NlY3VyaXR5LW1hbmFnZXJzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5vcmdzLmxpc3RTZWN1cml0eU1hbmFnZXJUZWFtcygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L29yZ3Mvc2VjdXJpdHktbWFuYWdlcnMjbGlzdC1zZWN1cml0eS1tYW5hZ2VyLXRlYW1zXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdFdlYmhvb2tEZWxpdmVyaWVzOiBbXCJHRVQgL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXNcIl0sXG4gICAgbGlzdFdlYmhvb2tzOiBbXCJHRVQgL29yZ3Mve29yZ30vaG9va3NcIl0sXG4gICAgcGluZ1dlYmhvb2s6IFtcIlBPU1QgL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9L3BpbmdzXCJdLFxuICAgIHJlZGVsaXZlcldlYmhvb2tEZWxpdmVyeTogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfS9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH0vYXR0ZW1wdHNcIixcbiAgICBdLFxuICAgIHJlbW92ZUN1c3RvbVByb3BlcnR5OiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3NjaGVtYS97Y3VzdG9tX3Byb3BlcnR5X25hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVNZW1iZXI6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9tZW1iZXJzL3t1c2VybmFtZX1cIl0sXG4gICAgcmVtb3ZlTWVtYmVyc2hpcEZvclVzZXI6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9tZW1iZXJzaGlwcy97dXNlcm5hbWV9XCJdLFxuICAgIHJlbW92ZU91dHNpZGVDb2xsYWJvcmF0b3I6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L291dHNpZGVfY29sbGFib3JhdG9ycy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVQdWJsaWNNZW1iZXJzaGlwRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3B1YmxpY19tZW1iZXJzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZVNlY3VyaXR5TWFuYWdlclRlYW06IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3NlY3VyaXR5LW1hbmFnZXJzL3RlYW1zL3t0ZWFtX3NsdWd9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5vcmdzLnJlbW92ZVNlY3VyaXR5TWFuYWdlclRlYW0oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9vcmdzL3NlY3VyaXR5LW1hbmFnZXJzI3JlbW92ZS1hLXNlY3VyaXR5LW1hbmFnZXItdGVhbVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHJldmlld1BhdEdyYW50UmVxdWVzdDogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbi1yZXF1ZXN0cy97cGF0X3JlcXVlc3RfaWR9XCIsXG4gICAgXSxcbiAgICByZXZpZXdQYXRHcmFudFJlcXVlc3RzSW5CdWxrOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2VuLXJlcXVlc3RzXCIsXG4gICAgXSxcbiAgICByZXZva2VBbGxPcmdSb2xlc1RlYW06IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy90ZWFtcy97dGVhbV9zbHVnfVwiLFxuICAgIF0sXG4gICAgcmV2b2tlQWxsT3JnUm9sZXNVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdXNlcnMve3VzZXJuYW1lfVwiLFxuICAgIF0sXG4gICAgcmV2b2tlT3JnUm9sZVRlYW06IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy90ZWFtcy97dGVhbV9zbHVnfS97cm9sZV9pZH1cIixcbiAgICBdLFxuICAgIHJldm9rZU9yZ1JvbGVVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdXNlcnMve3VzZXJuYW1lfS97cm9sZV9pZH1cIixcbiAgICBdLFxuICAgIHNldE1lbWJlcnNoaXBGb3JVc2VyOiBbXCJQVVQgL29yZ3Mve29yZ30vbWVtYmVyc2hpcHMve3VzZXJuYW1lfVwiXSxcbiAgICBzZXRQdWJsaWNNZW1iZXJzaGlwRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3B1YmxpY19tZW1iZXJzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIHVuYmxvY2tVc2VyOiBbXCJERUxFVEUgL29yZ3Mve29yZ30vYmxvY2tzL3t1c2VybmFtZX1cIl0sXG4gICAgdXBkYXRlOiBbXCJQQVRDSCAvb3Jncy97b3JnfVwiXSxcbiAgICB1cGRhdGVJc3N1ZVR5cGU6IFtcIlBVVCAvb3Jncy97b3JnfS9pc3N1ZS10eXBlcy97aXNzdWVfdHlwZV9pZH1cIl0sXG4gICAgdXBkYXRlTWVtYmVyc2hpcEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBBVENIIC91c2VyL21lbWJlcnNoaXBzL29yZ3Mve29yZ31cIixcbiAgICBdLFxuICAgIHVwZGF0ZVBhdEFjY2VzczogW1wiUE9TVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zL3twYXRfaWR9XCJdLFxuICAgIHVwZGF0ZVBhdEFjY2Vzc2VzOiBbXCJQT1NUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbnNcIl0sXG4gICAgdXBkYXRlV2ViaG9vazogW1wiUEFUQ0ggL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9XCJdLFxuICAgIHVwZGF0ZVdlYmhvb2tDb25maWdGb3JPcmc6IFtcIlBBVENIIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfS9jb25maWdcIl0sXG4gIH0sXG4gIHBhY2thZ2VzOiB7XG4gICAgZGVsZXRlUGFja2FnZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlUGFja2FnZUZvck9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVBhY2thZ2VGb3JVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlUGFja2FnZVZlcnNpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnMve3BhY2thZ2VfdmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVBhY2thZ2VWZXJzaW9uRm9yT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlUGFja2FnZVZlcnNpb25Gb3JVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yQVBhY2thZ2VPd25lZEJ5QW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wicGFja2FnZXNcIiwgXCJnZXRBbGxQYWNrYWdlVmVyc2lvbnNGb3JQYWNrYWdlT3duZWRCeU9yZ1wiXSB9LFxuICAgIF0sXG4gICAgZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yQVBhY2thZ2VPd25lZEJ5VGhlQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgcmVuYW1lZDogW1xuICAgICAgICAgIFwicGFja2FnZXNcIixcbiAgICAgICAgICBcImdldEFsbFBhY2thZ2VWZXJzaW9uc0ZvclBhY2thZ2VPd25lZEJ5QXV0aGVudGljYXRlZFVzZXJcIixcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZXRBbGxQYWNrYWdlVmVyc2lvbnNGb3JQYWNrYWdlT3duZWRCeUF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yUGFja2FnZU93bmVkQnlPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zXCIsXG4gICAgXSxcbiAgICBnZXRBbGxQYWNrYWdlVmVyc2lvbnNGb3JQYWNrYWdlT3duZWRCeVVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zXCIsXG4gICAgXSxcbiAgICBnZXRQYWNrYWdlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRQYWNrYWdlRm9yT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZUZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRQYWNrYWdlVmVyc2lvbkZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZVZlcnNpb25Gb3JPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zL3twYWNrYWdlX3ZlcnNpb25faWR9XCIsXG4gICAgXSxcbiAgICBnZXRQYWNrYWdlVmVyc2lvbkZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zL3twYWNrYWdlX3ZlcnNpb25faWR9XCIsXG4gICAgXSxcbiAgICBsaXN0RG9ja2VyTWlncmF0aW9uQ29uZmxpY3RpbmdQYWNrYWdlc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9kb2NrZXIvY29uZmxpY3RzXCIsXG4gICAgXSxcbiAgICBsaXN0RG9ja2VyTWlncmF0aW9uQ29uZmxpY3RpbmdQYWNrYWdlc0Zvck9yZ2FuaXphdGlvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vZG9ja2VyL2NvbmZsaWN0c1wiLFxuICAgIF0sXG4gICAgbGlzdERvY2tlck1pZ3JhdGlvbkNvbmZsaWN0aW5nUGFja2FnZXNGb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9kb2NrZXIvY29uZmxpY3RzXCIsXG4gICAgXSxcbiAgICBsaXN0UGFja2FnZXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3BhY2thZ2VzXCJdLFxuICAgIGxpc3RQYWNrYWdlc0Zvck9yZ2FuaXphdGlvbjogW1wiR0VUIC9vcmdzL3tvcmd9L3BhY2thZ2VzXCJdLFxuICAgIGxpc3RQYWNrYWdlc0ZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlc1wiXSxcbiAgICByZXN0b3JlUGFja2FnZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBPU1QgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vcmVzdG9yZXs/dG9rZW59XCIsXG4gICAgXSxcbiAgICByZXN0b3JlUGFja2FnZUZvck9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3Jlc3RvcmV7P3Rva2VufVwiLFxuICAgIF0sXG4gICAgcmVzdG9yZVBhY2thZ2VGb3JVc2VyOiBbXG4gICAgICBcIlBPU1QgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vcmVzdG9yZXs/dG9rZW59XCIsXG4gICAgXSxcbiAgICByZXN0b3JlUGFja2FnZVZlcnNpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQT1NUIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zL3twYWNrYWdlX3ZlcnNpb25faWR9L3Jlc3RvcmVcIixcbiAgICBdLFxuICAgIHJlc3RvcmVQYWNrYWdlVmVyc2lvbkZvck9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zL3twYWNrYWdlX3ZlcnNpb25faWR9L3Jlc3RvcmVcIixcbiAgICBdLFxuICAgIHJlc3RvcmVQYWNrYWdlVmVyc2lvbkZvclVzZXI6IFtcbiAgICAgIFwiUE9TVCAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfS9yZXN0b3JlXCIsXG4gICAgXSxcbiAgfSxcbiAgcHJpdmF0ZVJlZ2lzdHJpZXM6IHtcbiAgICBjcmVhdGVPcmdQcml2YXRlUmVnaXN0cnk6IFtcIlBPU1QgL29yZ3Mve29yZ30vcHJpdmF0ZS1yZWdpc3RyaWVzXCJdLFxuICAgIGRlbGV0ZU9yZ1ByaXZhdGVSZWdpc3RyeTogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vcHJpdmF0ZS1yZWdpc3RyaWVzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGdldE9yZ1ByaXZhdGVSZWdpc3RyeTogW1wiR0VUIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllcy97c2VjcmV0X25hbWV9XCJdLFxuICAgIGdldE9yZ1B1YmxpY0tleTogW1wiR0VUIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllcy9wdWJsaWMta2V5XCJdLFxuICAgIGxpc3RPcmdQcml2YXRlUmVnaXN0cmllczogW1wiR0VUIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllc1wiXSxcbiAgICB1cGRhdGVPcmdQcml2YXRlUmVnaXN0cnk6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vcHJpdmF0ZS1yZWdpc3RyaWVzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICB9LFxuICBwcm9qZWN0czoge1xuICAgIGFkZENvbGxhYm9yYXRvcjogW1xuICAgICAgXCJQVVQgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2xsYWJvcmF0b3JzL3t1c2VybmFtZX1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmFkZENvbGxhYm9yYXRvcigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbGxhYm9yYXRvcnMjYWRkLXByb2plY3QtY29sbGFib3JhdG9yXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlQ2FyZDogW1xuICAgICAgXCJQT1NUIC9wcm9qZWN0cy9jb2x1bW5zL3tjb2x1bW5faWR9L2NhcmRzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5jcmVhdGVDYXJkKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY2FyZHMjY3JlYXRlLWEtcHJvamVjdC1jYXJkXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlQ29sdW1uOiBbXG4gICAgICBcIlBPU1QgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2x1bW5zXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5jcmVhdGVDb2x1bW4oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI2NyZWF0ZS1hLXByb2plY3QtY29sdW1uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuY3JlYXRlRm9yQXV0aGVudGljYXRlZFVzZXIoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyNjcmVhdGUtYS11c2VyLXByb2plY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVGb3JPcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuY3JlYXRlRm9yT3JnKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjY3JlYXRlLWFuLW9yZ2FuaXphdGlvbi1wcm9qZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlRm9yUmVwbzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuY3JlYXRlRm9yUmVwbygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2NyZWF0ZS1hLXJlcG9zaXRvcnktcHJvamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGRlbGV0ZTogW1xuICAgICAgXCJERUxFVEUgL3Byb2plY3RzL3twcm9qZWN0X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuZGVsZXRlKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjZGVsZXRlLWEtcHJvamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGRlbGV0ZUNhcmQ6IFtcbiAgICAgIFwiREVMRVRFIC9wcm9qZWN0cy9jb2x1bW5zL2NhcmRzL3tjYXJkX2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuZGVsZXRlQ2FyZCgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NhcmRzI2RlbGV0ZS1hLXByb2plY3QtY2FyZFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGRlbGV0ZUNvbHVtbjogW1xuICAgICAgXCJERUxFVEUgL3Byb2plY3RzL2NvbHVtbnMve2NvbHVtbl9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmRlbGV0ZUNvbHVtbigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbHVtbnMjZGVsZXRlLWEtcHJvamVjdC1jb2x1bW5cIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZXQ6IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmdldCgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2dldC1hLXByb2plY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZXRDYXJkOiBbXG4gICAgICBcIkdFVCAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy97Y2FyZF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmdldENhcmQoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jYXJkcyNnZXQtYS1wcm9qZWN0LWNhcmRcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZXRDb2x1bW46IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy9jb2x1bW5zL3tjb2x1bW5faWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5nZXRDb2x1bW4oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI2dldC1hLXByb2plY3QtY29sdW1uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0UGVybWlzc2lvbkZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9L3Blcm1pc3Npb25cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmdldFBlcm1pc3Npb25Gb3JVc2VyKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY29sbGFib3JhdG9ycyNnZXQtcHJvamVjdC1wZXJtaXNzaW9uLWZvci1hLXVzZXJcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0Q2FyZHM6IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy9jb2x1bW5zL3tjb2x1bW5faWR9L2NhcmRzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5saXN0Q2FyZHMoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jYXJkcyNsaXN0LXByb2plY3QtY2FyZHNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0Q29sbGFib3JhdG9yczogW1xuICAgICAgXCJHRVQgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2xsYWJvcmF0b3JzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5saXN0Q29sbGFib3JhdG9ycygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbGxhYm9yYXRvcnMjbGlzdC1wcm9qZWN0LWNvbGxhYm9yYXRvcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0Q29sdW1uczogW1xuICAgICAgXCJHRVQgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2x1bW5zXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5saXN0Q29sdW1ucygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbHVtbnMjbGlzdC1wcm9qZWN0LWNvbHVtbnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0Rm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubGlzdEZvck9yZygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2xpc3Qtb3JnYW5pemF0aW9uLXByb2plY3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdEZvclJlcG86IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubGlzdEZvclJlcG8oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyNsaXN0LXJlcG9zaXRvcnktcHJvamVjdHNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0Rm9yVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmxpc3RGb3JVc2VyKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjbGlzdC11c2VyLXByb2plY3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbW92ZUNhcmQ6IFtcbiAgICAgIFwiUE9TVCAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy97Y2FyZF9pZH0vbW92ZXNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLm1vdmVDYXJkKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY2FyZHMjbW92ZS1hLXByb2plY3QtY2FyZFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1vdmVDb2x1bW46IFtcbiAgICAgIFwiUE9TVCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfS9tb3Zlc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubW92ZUNvbHVtbigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbHVtbnMjbW92ZS1hLXByb2plY3QtY29sdW1uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcmVtb3ZlQ29sbGFib3JhdG9yOiBbXG4gICAgICBcIkRFTEVURSAvcHJvamVjdHMve3Byb2plY3RfaWR9L2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMucmVtb3ZlQ29sbGFib3JhdG9yKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY29sbGFib3JhdG9ycyNyZW1vdmUtdXNlci1hcy1hLWNvbGxhYm9yYXRvclwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHVwZGF0ZTogW1xuICAgICAgXCJQQVRDSCAvcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy51cGRhdGUoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyN1cGRhdGUtYS1wcm9qZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdXBkYXRlQ2FyZDogW1xuICAgICAgXCJQQVRDSCAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy97Y2FyZF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLnVwZGF0ZUNhcmQoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jYXJkcyN1cGRhdGUtYW4tZXhpc3RpbmctcHJvamVjdC1jYXJkXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdXBkYXRlQ29sdW1uOiBbXG4gICAgICBcIlBBVENIIC9wcm9qZWN0cy9jb2x1bW5zL3tjb2x1bW5faWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy51cGRhdGVDb2x1bW4oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI3VwZGF0ZS1hbi1leGlzdGluZy1wcm9qZWN0LWNvbHVtblwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBwdWxsczoge1xuICAgIGNoZWNrSWZNZXJnZWQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9tZXJnZVwiXSxcbiAgICBjcmVhdGU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzXCJdLFxuICAgIGNyZWF0ZVJlcGx5Rm9yUmV2aWV3Q29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZXBsaWVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVSZXZpZXc6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3c1wiXSxcbiAgICBjcmVhdGVSZXZpZXdDb21tZW50OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGRlbGV0ZVBlbmRpbmdSZXZpZXc6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3Mve3Jldmlld19pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVJldmlld0NvbW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH1cIixcbiAgICBdLFxuICAgIGRpc21pc3NSZXZpZXc6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3Mve3Jldmlld19pZH0vZGlzbWlzc2Fsc1wiLFxuICAgIF0sXG4gICAgZ2V0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn1cIl0sXG4gICAgZ2V0UmV2aWV3OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzL3tyZXZpZXdfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRSZXZpZXdDb21tZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL2NvbW1lbnRzL3tjb21tZW50X2lkfVwiXSxcbiAgICBsaXN0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzXCJdLFxuICAgIGxpc3RDb21tZW50c0ZvclJldmlldzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3cy97cmV2aWV3X2lkfS9jb21tZW50c1wiLFxuICAgIF0sXG4gICAgbGlzdENvbW1pdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9jb21taXRzXCJdLFxuICAgIGxpc3RGaWxlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2ZpbGVzXCJdLFxuICAgIGxpc3RSZXF1ZXN0ZWRSZXZpZXdlcnM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3JlcXVlc3RlZF9yZXZpZXdlcnNcIixcbiAgICBdLFxuICAgIGxpc3RSZXZpZXdDb21tZW50czogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGxpc3RSZXZpZXdDb21tZW50c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMvY29tbWVudHNcIl0sXG4gICAgbGlzdFJldmlld3M6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzXCJdLFxuICAgIG1lcmdlOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vbWVyZ2VcIl0sXG4gICAgcmVtb3ZlUmVxdWVzdGVkUmV2aWV3ZXJzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXF1ZXN0ZWRfcmV2aWV3ZXJzXCIsXG4gICAgXSxcbiAgICByZXF1ZXN0UmV2aWV3ZXJzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmVxdWVzdGVkX3Jldmlld2Vyc1wiLFxuICAgIF0sXG4gICAgc3VibWl0UmV2aWV3OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3cy97cmV2aWV3X2lkfS9ldmVudHNcIixcbiAgICBdLFxuICAgIHVwZGF0ZTogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn1cIl0sXG4gICAgdXBkYXRlQnJhbmNoOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS91cGRhdGUtYnJhbmNoXCIsXG4gICAgXSxcbiAgICB1cGRhdGVSZXZpZXc6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3Mve3Jldmlld19pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZVJldmlld0NvbW1lbnQ6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL2NvbW1lbnRzL3tjb21tZW50X2lkfVwiLFxuICAgIF0sXG4gIH0sXG4gIHJhdGVMaW1pdDogeyBnZXQ6IFtcIkdFVCAvcmF0ZV9saW1pdFwiXSB9LFxuICByZWFjdGlvbnM6IHtcbiAgICBjcmVhdGVGb3JDb21taXRDb21tZW50OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvcklzc3VlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvcklzc3VlQ29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRm9yUHVsbFJlcXVlc3RSZXZpZXdDb21tZW50OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvclJlbGVhc2U6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRm9yVGVhbURpc2N1c3Npb25Db21tZW50SW5Pcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBjcmVhdGVGb3JUZWFtRGlzY3Vzc2lvbkluT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUZvckNvbW1pdENvbW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zL3tyZWFjdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUZvcklzc3VlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JJc3N1ZUNvbW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JQdWxsUmVxdWVzdENvbW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zL3tyZWFjdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUZvclJlbGVhc2U6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy97cmVsZWFzZV9pZH0vcmVhY3Rpb25zL3tyZWFjdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUZvclRlYW1EaXNjdXNzaW9uOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JUZWFtRGlzY3Vzc2lvbkNvbW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHMve2NvbW1lbnRfbnVtYmVyfS9yZWFjdGlvbnMve3JlYWN0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdEZvckNvbW1pdENvbW1lbnQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0Rm9ySXNzdWU6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3JlYWN0aW9uc1wiXSxcbiAgICBsaXN0Rm9ySXNzdWVDb21tZW50OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RGb3JQdWxsUmVxdWVzdFJldmlld0NvbW1lbnQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0Rm9yUmVsZWFzZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RGb3JUZWFtRGlzY3Vzc2lvbkNvbW1lbnRJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9udW1iZXJ9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgbGlzdEZvclRlYW1EaXNjdXNzaW9uSW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgfSxcbiAgcmVwb3M6IHtcbiAgICBhY2NlcHRJbnZpdGF0aW9uOiBbXG4gICAgICBcIlBBVENIIC91c2VyL3JlcG9zaXRvcnlfaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wicmVwb3NcIiwgXCJhY2NlcHRJbnZpdGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGFjY2VwdEludml0YXRpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQQVRDSCAvdXNlci9yZXBvc2l0b3J5X2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgYWRkQXBwQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL2FwcHNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwiYXBwc1wiIH0sXG4gICAgXSxcbiAgICBhZGRDb2xsYWJvcmF0b3I6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9XCJdLFxuICAgIGFkZFN0YXR1c0NoZWNrQ29udGV4dHM6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzL2NvbnRleHRzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImNvbnRleHRzXCIgfSxcbiAgICBdLFxuICAgIGFkZFRlYW1BY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdGVhbXNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwidGVhbXNcIiB9LFxuICAgIF0sXG4gICAgYWRkVXNlckFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy91c2Vyc1wiLFxuICAgICAge30sXG4gICAgICB7IG1hcFRvRGF0YTogXCJ1c2Vyc1wiIH0sXG4gICAgXSxcbiAgICBjYW5jZWxQYWdlc0RlcGxveW1lbnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvZGVwbG95bWVudHMve3BhZ2VzX2RlcGxveW1lbnRfaWR9L2NhbmNlbFwiLFxuICAgIF0sXG4gICAgY2hlY2tBdXRvbWF0ZWRTZWN1cml0eUZpeGVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXV0b21hdGVkLXNlY3VyaXR5LWZpeGVzXCIsXG4gICAgXSxcbiAgICBjaGVja0NvbGxhYm9yYXRvcjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2xsYWJvcmF0b3JzL3t1c2VybmFtZX1cIl0sXG4gICAgY2hlY2tQcml2YXRlVnVsbmVyYWJpbGl0eVJlcG9ydGluZzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3ByaXZhdGUtdnVsbmVyYWJpbGl0eS1yZXBvcnRpbmdcIixcbiAgICBdLFxuICAgIGNoZWNrVnVsbmVyYWJpbGl0eUFsZXJ0czogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3Z1bG5lcmFiaWxpdHktYWxlcnRzXCIsXG4gICAgXSxcbiAgICBjb2Rlb3duZXJzRXJyb3JzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVvd25lcnMvZXJyb3JzXCJdLFxuICAgIGNvbXBhcmVDb21taXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbXBhcmUve2Jhc2V9Li4ue2hlYWR9XCJdLFxuICAgIGNvbXBhcmVDb21taXRzV2l0aEJhc2VoZWFkOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tcGFyZS97YmFzZWhlYWR9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVBdHRlc3RhdGlvbjogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXR0ZXN0YXRpb25zXCJdLFxuICAgIGNyZWF0ZUF1dG9saW5rOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdXRvbGlua3NcIl0sXG4gICAgY3JlYXRlQ29tbWl0Q29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tjb21taXRfc2hhfS9jb21tZW50c1wiLFxuICAgIF0sXG4gICAgY3JlYXRlQ29tbWl0U2lnbmF0dXJlUHJvdGVjdGlvbjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3NpZ25hdHVyZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUNvbW1pdFN0YXR1czogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhdHVzZXMve3NoYX1cIl0sXG4gICAgY3JlYXRlRGVwbG95S2V5OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9rZXlzXCJdLFxuICAgIGNyZWF0ZURlcGxveW1lbnQ6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzXCJdLFxuICAgIGNyZWF0ZURlcGxveW1lbnRCcmFuY2hQb2xpY3k6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50LWJyYW5jaC1wb2xpY2llc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRGVwbG95bWVudFByb3RlY3Rpb25SdWxlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudF9wcm90ZWN0aW9uX3J1bGVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVEZXBsb3ltZW50U3RhdHVzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzL3tkZXBsb3ltZW50X2lkfS9zdGF0dXNlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRGlzcGF0Y2hFdmVudDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGlzcGF0Y2hlc1wiXSxcbiAgICBjcmVhdGVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9yZXBvc1wiXSxcbiAgICBjcmVhdGVGb3JrOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9mb3Jrc1wiXSxcbiAgICBjcmVhdGVJbk9yZzogW1wiUE9TVCAvb3Jncy97b3JnfS9yZXBvc1wiXSxcbiAgICBjcmVhdGVPclVwZGF0ZUN1c3RvbVByb3BlcnRpZXNWYWx1ZXM6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3Byb3BlcnRpZXMvdmFsdWVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVPclVwZGF0ZUVudmlyb25tZW50OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVGaWxlQ29udGVudHM6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29udGVudHMve3BhdGh9XCJdLFxuICAgIGNyZWF0ZU9yZ1J1bGVzZXQ6IFtcIlBPU1QgL29yZ3Mve29yZ30vcnVsZXNldHNcIl0sXG4gICAgY3JlYXRlUGFnZXNEZXBsb3ltZW50OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlcy9kZXBsb3ltZW50c1wiXSxcbiAgICBjcmVhdGVQYWdlc1NpdGU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzXCJdLFxuICAgIGNyZWF0ZVJlbGVhc2U6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzXCJdLFxuICAgIGNyZWF0ZVJlcG9SdWxlc2V0OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0c1wiXSxcbiAgICBjcmVhdGVVc2luZ1RlbXBsYXRlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3t0ZW1wbGF0ZV9vd25lcn0ve3RlbXBsYXRlX3JlcG99L2dlbmVyYXRlXCIsXG4gICAgXSxcbiAgICBjcmVhdGVXZWJob29rOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rc1wiXSxcbiAgICBkZWNsaW5lSW52aXRhdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvcmVwb3NpdG9yeV9pbnZpdGF0aW9ucy97aW52aXRhdGlvbl9pZH1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJyZXBvc1wiLCBcImRlY2xpbmVJbnZpdGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGRlY2xpbmVJbnZpdGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL3JlcG9zaXRvcnlfaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGU6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb31cIl0sXG4gICAgZGVsZXRlQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUFkbWluQnJhbmNoUHJvdGVjdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vZW5mb3JjZV9hZG1pbnNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUFuRW52aXJvbm1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVBdXRvbGluazogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdXRvbGlua3Mve2F1dG9saW5rX2lkfVwiXSxcbiAgICBkZWxldGVCcmFuY2hQcm90ZWN0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvblwiLFxuICAgIF0sXG4gICAgZGVsZXRlQ29tbWl0Q29tbWVudDogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tZW50cy97Y29tbWVudF9pZH1cIl0sXG4gICAgZGVsZXRlQ29tbWl0U2lnbmF0dXJlUHJvdGVjdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc2lnbmF0dXJlc1wiLFxuICAgIF0sXG4gICAgZGVsZXRlRGVwbG95S2V5OiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2tleXMve2tleV9pZH1cIl0sXG4gICAgZGVsZXRlRGVwbG95bWVudDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzL3tkZXBsb3ltZW50X2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRGVwbG95bWVudEJyYW5jaFBvbGljeTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudC1icmFuY2gtcG9saWNpZXMve2JyYW5jaF9wb2xpY3lfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGaWxlOiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbnRlbnRzL3twYXRofVwiXSxcbiAgICBkZWxldGVJbnZpdGF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVPcmdSdWxlc2V0OiBbXCJERUxFVEUgL29yZ3Mve29yZ30vcnVsZXNldHMve3J1bGVzZXRfaWR9XCJdLFxuICAgIGRlbGV0ZVBhZ2VzU2l0ZTogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlc1wiXSxcbiAgICBkZWxldGVQdWxsUmVxdWVzdFJldmlld1Byb3RlY3Rpb246IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3B1bGxfcmVxdWVzdF9yZXZpZXdzXCIsXG4gICAgXSxcbiAgICBkZWxldGVSZWxlYXNlOiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfVwiXSxcbiAgICBkZWxldGVSZWxlYXNlQXNzZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy9hc3NldHMve2Fzc2V0X2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlUmVwb1J1bGVzZXQ6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMve3J1bGVzZXRfaWR9XCJdLFxuICAgIGRlbGV0ZVdlYmhvb2s6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9XCJdLFxuICAgIGRpc2FibGVBdXRvbWF0ZWRTZWN1cml0eUZpeGVzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYXV0b21hdGVkLXNlY3VyaXR5LWZpeGVzXCIsXG4gICAgXSxcbiAgICBkaXNhYmxlRGVwbG95bWVudFByb3RlY3Rpb25SdWxlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50X3Byb3RlY3Rpb25fcnVsZXMve3Byb3RlY3Rpb25fcnVsZV9pZH1cIixcbiAgICBdLFxuICAgIGRpc2FibGVQcml2YXRlVnVsbmVyYWJpbGl0eVJlcG9ydGluZzogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L3ByaXZhdGUtdnVsbmVyYWJpbGl0eS1yZXBvcnRpbmdcIixcbiAgICBdLFxuICAgIGRpc2FibGVWdWxuZXJhYmlsaXR5QWxlcnRzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vdnVsbmVyYWJpbGl0eS1hbGVydHNcIixcbiAgICBdLFxuICAgIGRvd25sb2FkQXJjaGl2ZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3ppcGJhbGwve3JlZn1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJyZXBvc1wiLCBcImRvd25sb2FkWmlwYmFsbEFyY2hpdmVcIl0gfSxcbiAgICBdLFxuICAgIGRvd25sb2FkVGFyYmFsbEFyY2hpdmU6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdGFyYmFsbC97cmVmfVwiXSxcbiAgICBkb3dubG9hZFppcGJhbGxBcmNoaXZlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3ppcGJhbGwve3JlZn1cIl0sXG4gICAgZW5hYmxlQXV0b21hdGVkU2VjdXJpdHlGaXhlczogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F1dG9tYXRlZC1zZWN1cml0eS1maXhlc1wiLFxuICAgIF0sXG4gICAgZW5hYmxlUHJpdmF0ZVZ1bG5lcmFiaWxpdHlSZXBvcnRpbmc6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcml2YXRlLXZ1bG5lcmFiaWxpdHktcmVwb3J0aW5nXCIsXG4gICAgXSxcbiAgICBlbmFibGVWdWxuZXJhYmlsaXR5QWxlcnRzOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vdnVsbmVyYWJpbGl0eS1hbGVydHNcIixcbiAgICBdLFxuICAgIGdlbmVyYXRlUmVsZWFzZU5vdGVzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL2dlbmVyYXRlLW5vdGVzXCIsXG4gICAgXSxcbiAgICBnZXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb31cIl0sXG4gICAgZ2V0QWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnNcIixcbiAgICBdLFxuICAgIGdldEFkbWluQnJhbmNoUHJvdGVjdGlvbjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vZW5mb3JjZV9hZG1pbnNcIixcbiAgICBdLFxuICAgIGdldEFsbERlcGxveW1lbnRQcm90ZWN0aW9uUnVsZXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnRfcHJvdGVjdGlvbl9ydWxlc1wiLFxuICAgIF0sXG4gICAgZ2V0QWxsRW52aXJvbm1lbnRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50c1wiXSxcbiAgICBnZXRBbGxTdGF0dXNDaGVja0NvbnRleHRzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzL2NvbnRleHRzXCIsXG4gICAgXSxcbiAgICBnZXRBbGxUb3BpY3M6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdG9waWNzXCJdLFxuICAgIGdldEFwcHNXaXRoQWNjZXNzVG9Qcm90ZWN0ZWRCcmFuY2g6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy9hcHBzXCIsXG4gICAgXSxcbiAgICBnZXRBdXRvbGluazogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdXRvbGlua3Mve2F1dG9saW5rX2lkfVwiXSxcbiAgICBnZXRCcmFuY2g6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH1cIl0sXG4gICAgZ2V0QnJhbmNoUHJvdGVjdGlvbjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb25cIixcbiAgICBdLFxuICAgIGdldEJyYW5jaFJ1bGVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzL2JyYW5jaGVzL3ticmFuY2h9XCJdLFxuICAgIGdldENsb25lczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS90cmFmZmljL2Nsb25lc1wiXSxcbiAgICBnZXRDb2RlRnJlcXVlbmN5U3RhdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhdHMvY29kZV9mcmVxdWVuY3lcIl0sXG4gICAgZ2V0Q29sbGFib3JhdG9yUGVybWlzc2lvbkxldmVsOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9L3Blcm1pc3Npb25cIixcbiAgICBdLFxuICAgIGdldENvbWJpbmVkU3RhdHVzRm9yUmVmOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve3JlZn0vc3RhdHVzXCJdLFxuICAgIGdldENvbW1pdDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9XCJdLFxuICAgIGdldENvbW1pdEFjdGl2aXR5U3RhdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhdHMvY29tbWl0X2FjdGl2aXR5XCJdLFxuICAgIGdldENvbW1pdENvbW1lbnQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIGdldENvbW1pdFNpZ25hdHVyZVByb3RlY3Rpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3NpZ25hdHVyZXNcIixcbiAgICBdLFxuICAgIGdldENvbW11bml0eVByb2ZpbGVNZXRyaWNzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW11bml0eS9wcm9maWxlXCJdLFxuICAgIGdldENvbnRlbnQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29udGVudHMve3BhdGh9XCJdLFxuICAgIGdldENvbnRyaWJ1dG9yc1N0YXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXRzL2NvbnRyaWJ1dG9yc1wiXSxcbiAgICBnZXRDdXN0b21EZXBsb3ltZW50UHJvdGVjdGlvblJ1bGU6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnRfcHJvdGVjdGlvbl9ydWxlcy97cHJvdGVjdGlvbl9ydWxlX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0Q3VzdG9tUHJvcGVydGllc1ZhbHVlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcm9wZXJ0aWVzL3ZhbHVlc1wiXSxcbiAgICBnZXREZXBsb3lLZXk6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30va2V5cy97a2V5X2lkfVwiXSxcbiAgICBnZXREZXBsb3ltZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzL3tkZXBsb3ltZW50X2lkfVwiXSxcbiAgICBnZXREZXBsb3ltZW50QnJhbmNoUG9saWN5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50LWJyYW5jaC1wb2xpY2llcy97YnJhbmNoX3BvbGljeV9pZH1cIixcbiAgICBdLFxuICAgIGdldERlcGxveW1lbnRTdGF0dXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50cy97ZGVwbG95bWVudF9pZH0vc3RhdHVzZXMve3N0YXR1c19pZH1cIixcbiAgICBdLFxuICAgIGdldEVudmlyb25tZW50OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0TGF0ZXN0UGFnZXNCdWlsZDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlcy9idWlsZHMvbGF0ZXN0XCJdLFxuICAgIGdldExhdGVzdFJlbGVhc2U6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMvbGF0ZXN0XCJdLFxuICAgIGdldE9yZ1J1bGVTdWl0ZTogW1wiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3J1bGUtc3VpdGVzL3tydWxlX3N1aXRlX2lkfVwiXSxcbiAgICBnZXRPcmdSdWxlU3VpdGVzOiBbXCJHRVQgL29yZ3Mve29yZ30vcnVsZXNldHMvcnVsZS1zdWl0ZXNcIl0sXG4gICAgZ2V0T3JnUnVsZXNldDogW1wiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3tydWxlc2V0X2lkfVwiXSxcbiAgICBnZXRPcmdSdWxlc2V0czogW1wiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzXCJdLFxuICAgIGdldFBhZ2VzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzXCJdLFxuICAgIGdldFBhZ2VzQnVpbGQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvYnVpbGRzL3tidWlsZF9pZH1cIl0sXG4gICAgZ2V0UGFnZXNEZXBsb3ltZW50OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvZGVwbG95bWVudHMve3BhZ2VzX2RlcGxveW1lbnRfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRQYWdlc0hlYWx0aENoZWNrOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2hlYWx0aFwiXSxcbiAgICBnZXRQYXJ0aWNpcGF0aW9uU3RhdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhdHMvcGFydGljaXBhdGlvblwiXSxcbiAgICBnZXRQdWxsUmVxdWVzdFJldmlld1Byb3RlY3Rpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3B1bGxfcmVxdWVzdF9yZXZpZXdzXCIsXG4gICAgXSxcbiAgICBnZXRQdW5jaENhcmRTdGF0czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdGF0cy9wdW5jaF9jYXJkXCJdLFxuICAgIGdldFJlYWRtZTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWFkbWVcIl0sXG4gICAgZ2V0UmVhZG1lSW5EaXJlY3Rvcnk6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVhZG1lL3tkaXJ9XCJdLFxuICAgIGdldFJlbGVhc2U6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9XCJdLFxuICAgIGdldFJlbGVhc2VBc3NldDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy9hc3NldHMve2Fzc2V0X2lkfVwiXSxcbiAgICBnZXRSZWxlYXNlQnlUYWc6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMvdGFncy97dGFnfVwiXSxcbiAgICBnZXRSZXBvUnVsZVN1aXRlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMvcnVsZS1zdWl0ZXMve3J1bGVfc3VpdGVfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRSZXBvUnVsZVN1aXRlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0cy9ydWxlLXN1aXRlc1wiXSxcbiAgICBnZXRSZXBvUnVsZXNldDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0cy97cnVsZXNldF9pZH1cIl0sXG4gICAgZ2V0UmVwb1J1bGVzZXRIaXN0b3J5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMve3J1bGVzZXRfaWR9L2hpc3RvcnlcIixcbiAgICBdLFxuICAgIGdldFJlcG9SdWxlc2V0VmVyc2lvbjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3tydWxlc2V0X2lkfS9oaXN0b3J5L3t2ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UmVwb1J1bGVzZXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzXCJdLFxuICAgIGdldFN0YXR1c0NoZWNrc1Byb3RlY3Rpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3N0YXR1c19jaGVja3NcIixcbiAgICBdLFxuICAgIGdldFRlYW1zV2l0aEFjY2Vzc1RvUHJvdGVjdGVkQnJhbmNoOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdGVhbXNcIixcbiAgICBdLFxuICAgIGdldFRvcFBhdGhzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RyYWZmaWMvcG9wdWxhci9wYXRoc1wiXSxcbiAgICBnZXRUb3BSZWZlcnJlcnM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdHJhZmZpYy9wb3B1bGFyL3JlZmVycmVyc1wiXSxcbiAgICBnZXRVc2Vyc1dpdGhBY2Nlc3NUb1Byb3RlY3RlZEJyYW5jaDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3VzZXJzXCIsXG4gICAgXSxcbiAgICBnZXRWaWV3czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS90cmFmZmljL3ZpZXdzXCJdLFxuICAgIGdldFdlYmhvb2s6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9XCJdLFxuICAgIGdldFdlYmhvb2tDb25maWdGb3JSZXBvOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L2NvbmZpZ1wiLFxuICAgIF0sXG4gICAgZ2V0V2ViaG9va0RlbGl2ZXJ5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXMve2RlbGl2ZXJ5X2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdEFjdGl2aXRpZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aXZpdHlcIl0sXG4gICAgbGlzdEF0dGVzdGF0aW9uczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F0dGVzdGF0aW9ucy97c3ViamVjdF9kaWdlc3R9XCIsXG4gICAgXSxcbiAgICBsaXN0QXV0b2xpbmtzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F1dG9saW5rc1wiXSxcbiAgICBsaXN0QnJhbmNoZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXNcIl0sXG4gICAgbGlzdEJyYW5jaGVzRm9ySGVhZENvbW1pdDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve2NvbW1pdF9zaGF9L2JyYW5jaGVzLXdoZXJlLWhlYWRcIixcbiAgICBdLFxuICAgIGxpc3RDb2xsYWJvcmF0b3JzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbGxhYm9yYXRvcnNcIl0sXG4gICAgbGlzdENvbW1lbnRzRm9yQ29tbWl0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97Y29tbWl0X3NoYX0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGxpc3RDb21taXRDb21tZW50c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHNcIl0sXG4gICAgbGlzdENvbW1pdFN0YXR1c2VzRm9yUmVmOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9zdGF0dXNlc1wiLFxuICAgIF0sXG4gICAgbGlzdENvbW1pdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0c1wiXSxcbiAgICBsaXN0Q29udHJpYnV0b3JzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbnRyaWJ1dG9yc1wiXSxcbiAgICBsaXN0Q3VzdG9tRGVwbG95bWVudFJ1bGVJbnRlZ3JhdGlvbnM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnRfcHJvdGVjdGlvbl9ydWxlcy9hcHBzXCIsXG4gICAgXSxcbiAgICBsaXN0RGVwbG95S2V5czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9rZXlzXCJdLFxuICAgIGxpc3REZXBsb3ltZW50QnJhbmNoUG9saWNpZXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnQtYnJhbmNoLXBvbGljaWVzXCIsXG4gICAgXSxcbiAgICBsaXN0RGVwbG95bWVudFN0YXR1c2VzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwbG95bWVudHMve2RlcGxveW1lbnRfaWR9L3N0YXR1c2VzXCIsXG4gICAgXSxcbiAgICBsaXN0RGVwbG95bWVudHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwbG95bWVudHNcIl0sXG4gICAgbGlzdEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvcmVwb3NcIl0sXG4gICAgbGlzdEZvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3JlcG9zXCJdLFxuICAgIGxpc3RGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcmVwb3NcIl0sXG4gICAgbGlzdEZvcmtzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ZvcmtzXCJdLFxuICAgIGxpc3RJbnZpdGF0aW9uczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pbnZpdGF0aW9uc1wiXSxcbiAgICBsaXN0SW52aXRhdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3JlcG9zaXRvcnlfaW52aXRhdGlvbnNcIl0sXG4gICAgbGlzdExhbmd1YWdlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9sYW5ndWFnZXNcIl0sXG4gICAgbGlzdFBhZ2VzQnVpbGRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2J1aWxkc1wiXSxcbiAgICBsaXN0UHVibGljOiBbXCJHRVQgL3JlcG9zaXRvcmllc1wiXSxcbiAgICBsaXN0UHVsbFJlcXVlc3RzQXNzb2NpYXRlZFdpdGhDb21taXQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tjb21taXRfc2hhfS9wdWxsc1wiLFxuICAgIF0sXG4gICAgbGlzdFJlbGVhc2VBc3NldHM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy97cmVsZWFzZV9pZH0vYXNzZXRzXCIsXG4gICAgXSxcbiAgICBsaXN0UmVsZWFzZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXNcIl0sXG4gICAgbGlzdFRhZ3M6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdGFnc1wiXSxcbiAgICBsaXN0VGVhbXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdGVhbXNcIl0sXG4gICAgbGlzdFdlYmhvb2tEZWxpdmVyaWVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXNcIixcbiAgICBdLFxuICAgIGxpc3RXZWJob29rczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rc1wiXSxcbiAgICBtZXJnZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vbWVyZ2VzXCJdLFxuICAgIG1lcmdlVXBzdHJlYW06IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L21lcmdlLXVwc3RyZWFtXCJdLFxuICAgIHBpbmdXZWJob29rOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rcy97aG9va19pZH0vcGluZ3NcIl0sXG4gICAgcmVkZWxpdmVyV2ViaG9va0RlbGl2ZXJ5OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfS9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH0vYXR0ZW1wdHNcIixcbiAgICBdLFxuICAgIHJlbW92ZUFwcEFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL2FwcHNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwiYXBwc1wiIH0sXG4gICAgXSxcbiAgICByZW1vdmVDb2xsYWJvcmF0b3I6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2xsYWJvcmF0b3JzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZVN0YXR1c0NoZWNrQ29udGV4dHM6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3N0YXR1c19jaGVja3MvY29udGV4dHNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwiY29udGV4dHNcIiB9LFxuICAgIF0sXG4gICAgcmVtb3ZlU3RhdHVzQ2hlY2tQcm90ZWN0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzXCIsXG4gICAgXSxcbiAgICByZW1vdmVUZWFtQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdGVhbXNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwidGVhbXNcIiB9LFxuICAgIF0sXG4gICAgcmVtb3ZlVXNlckFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3VzZXJzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcInVzZXJzXCIgfSxcbiAgICBdLFxuICAgIHJlbmFtZUJyYW5jaDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcmVuYW1lXCJdLFxuICAgIHJlcGxhY2VBbGxUb3BpY3M6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vdG9waWNzXCJdLFxuICAgIHJlcXVlc3RQYWdlc0J1aWxkOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlcy9idWlsZHNcIl0sXG4gICAgc2V0QWRtaW5CcmFuY2hQcm90ZWN0aW9uOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vZW5mb3JjZV9hZG1pbnNcIixcbiAgICBdLFxuICAgIHNldEFwcEFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL2FwcHNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwiYXBwc1wiIH0sXG4gICAgXSxcbiAgICBzZXRTdGF0dXNDaGVja0NvbnRleHRzOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzL2NvbnRleHRzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImNvbnRleHRzXCIgfSxcbiAgICBdLFxuICAgIHNldFRlYW1BY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy90ZWFtc1wiLFxuICAgICAge30sXG4gICAgICB7IG1hcFRvRGF0YTogXCJ0ZWFtc1wiIH0sXG4gICAgXSxcbiAgICBzZXRVc2VyQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdXNlcnNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwidXNlcnNcIiB9LFxuICAgIF0sXG4gICAgdGVzdFB1c2hXZWJob29rOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rcy97aG9va19pZH0vdGVzdHNcIl0sXG4gICAgdHJhbnNmZXI6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RyYW5zZmVyXCJdLFxuICAgIHVwZGF0ZTogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99XCJdLFxuICAgIHVwZGF0ZUJyYW5jaFByb3RlY3Rpb246IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uXCIsXG4gICAgXSxcbiAgICB1cGRhdGVDb21taXRDb21tZW50OiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIHVwZGF0ZURlcGxveW1lbnRCcmFuY2hQb2xpY3k6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnQtYnJhbmNoLXBvbGljaWVzL3ticmFuY2hfcG9saWN5X2lkfVwiLFxuICAgIF0sXG4gICAgdXBkYXRlSW5mb3JtYXRpb25BYm91dFBhZ2VzU2l0ZTogW1wiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlc1wiXSxcbiAgICB1cGRhdGVJbnZpdGF0aW9uOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pbnZpdGF0aW9ucy97aW52aXRhdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZU9yZ1J1bGVzZXQ6IFtcIlBVVCAvb3Jncy97b3JnfS9ydWxlc2V0cy97cnVsZXNldF9pZH1cIl0sXG4gICAgdXBkYXRlUHVsbFJlcXVlc3RSZXZpZXdQcm90ZWN0aW9uOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3B1bGxfcmVxdWVzdF9yZXZpZXdzXCIsXG4gICAgXSxcbiAgICB1cGRhdGVSZWxlYXNlOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9XCJdLFxuICAgIHVwZGF0ZVJlbGVhc2VBc3NldDogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMvYXNzZXRzL3thc3NldF9pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZVJlcG9SdWxlc2V0OiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3tydWxlc2V0X2lkfVwiXSxcbiAgICB1cGRhdGVTdGF0dXNDaGVja1BvdGVjdGlvbjogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wicmVwb3NcIiwgXCJ1cGRhdGVTdGF0dXNDaGVja1Byb3RlY3Rpb25cIl0gfSxcbiAgICBdLFxuICAgIHVwZGF0ZVN0YXR1c0NoZWNrUHJvdGVjdGlvbjogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzXCIsXG4gICAgXSxcbiAgICB1cGRhdGVXZWJob29rOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9XCJdLFxuICAgIHVwZGF0ZVdlYmhvb2tDb25maWdGb3JSZXBvOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rcy97aG9va19pZH0vY29uZmlnXCIsXG4gICAgXSxcbiAgICB1cGxvYWRSZWxlYXNlQXNzZXQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L2Fzc2V0c3s/bmFtZSxsYWJlbH1cIixcbiAgICAgIHsgYmFzZVVybDogXCJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbVwiIH0sXG4gICAgXSxcbiAgfSxcbiAgc2VhcmNoOiB7XG4gICAgY29kZTogW1wiR0VUIC9zZWFyY2gvY29kZVwiXSxcbiAgICBjb21taXRzOiBbXCJHRVQgL3NlYXJjaC9jb21taXRzXCJdLFxuICAgIGlzc3Vlc0FuZFB1bGxSZXF1ZXN0czogW1xuICAgICAgXCJHRVQgL3NlYXJjaC9pc3N1ZXNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnNlYXJjaC5pc3N1ZXNBbmRQdWxsUmVxdWVzdHMoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9zZWFyY2gvc2VhcmNoI3NlYXJjaC1pc3N1ZXMtYW5kLXB1bGwtcmVxdWVzdHNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsYWJlbHM6IFtcIkdFVCAvc2VhcmNoL2xhYmVsc1wiXSxcbiAgICByZXBvczogW1wiR0VUIC9zZWFyY2gvcmVwb3NpdG9yaWVzXCJdLFxuICAgIHRvcGljczogW1wiR0VUIC9zZWFyY2gvdG9waWNzXCJdLFxuICAgIHVzZXJzOiBbXCJHRVQgL3NlYXJjaC91c2Vyc1wiXSxcbiAgfSxcbiAgc2VjcmV0U2Nhbm5pbmc6IHtcbiAgICBjcmVhdGVQdXNoUHJvdGVjdGlvbkJ5cGFzczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvcHVzaC1wcm90ZWN0aW9uLWJ5cGFzc2VzXCIsXG4gICAgXSxcbiAgICBnZXRBbGVydDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn1cIixcbiAgICBdLFxuICAgIGdldFNjYW5IaXN0b3J5OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9zY2FuLWhpc3RvcnlcIl0sXG4gICAgbGlzdEFsZXJ0c0ZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vc2VjcmV0LXNjYW5uaW5nL2FsZXJ0c1wiLFxuICAgIF0sXG4gICAgbGlzdEFsZXJ0c0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3NlY3JldC1zY2FubmluZy9hbGVydHNcIl0sXG4gICAgbGlzdEFsZXJ0c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjcmV0LXNjYW5uaW5nL2FsZXJ0c1wiXSxcbiAgICBsaXN0TG9jYXRpb25zRm9yQWxlcnQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2xvY2F0aW9uc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlQWxlcnQ6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn1cIixcbiAgICBdLFxuICB9LFxuICBzZWN1cml0eUFkdmlzb3JpZXM6IHtcbiAgICBjcmVhdGVGb3JrOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3VyaXR5LWFkdmlzb3JpZXMve2doc2FfaWR9L2ZvcmtzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVQcml2YXRlVnVsbmVyYWJpbGl0eVJlcG9ydDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzL3JlcG9ydHNcIixcbiAgICBdLFxuICAgIGNyZWF0ZVJlcG9zaXRvcnlBZHZpc29yeTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVSZXBvc2l0b3J5QWR2aXNvcnlDdmVSZXF1ZXN0OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3VyaXR5LWFkdmlzb3JpZXMve2doc2FfaWR9L2N2ZVwiLFxuICAgIF0sXG4gICAgZ2V0R2xvYmFsQWR2aXNvcnk6IFtcIkdFVCAvYWR2aXNvcmllcy97Z2hzYV9pZH1cIl0sXG4gICAgZ2V0UmVwb3NpdG9yeUFkdmlzb3J5OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjdXJpdHktYWR2aXNvcmllcy97Z2hzYV9pZH1cIixcbiAgICBdLFxuICAgIGxpc3RHbG9iYWxBZHZpc29yaWVzOiBbXCJHRVQgL2Fkdmlzb3JpZXNcIl0sXG4gICAgbGlzdE9yZ1JlcG9zaXRvcnlBZHZpc29yaWVzOiBbXCJHRVQgL29yZ3Mve29yZ30vc2VjdXJpdHktYWR2aXNvcmllc1wiXSxcbiAgICBsaXN0UmVwb3NpdG9yeUFkdmlzb3JpZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjdXJpdHktYWR2aXNvcmllc1wiXSxcbiAgICB1cGRhdGVSZXBvc2l0b3J5QWR2aXNvcnk6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3VyaXR5LWFkdmlzb3JpZXMve2doc2FfaWR9XCIsXG4gICAgXSxcbiAgfSxcbiAgdGVhbXM6IHtcbiAgICBhZGRPclVwZGF0ZU1lbWJlcnNoaXBGb3JVc2VySW5Pcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L21lbWJlcnNoaXBzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIGFkZE9yVXBkYXRlUHJvamVjdFBlcm1pc3Npb25zSW5Pcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3Byb2plY3RzL3twcm9qZWN0X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QudGVhbXMuYWRkT3JVcGRhdGVQcm9qZWN0UGVybWlzc2lvbnNJbk9yZygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3RlYW1zL3RlYW1zI2FkZC1vci11cGRhdGUtdGVhbS1wcm9qZWN0LXBlcm1pc3Npb25zXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWRkT3JVcGRhdGVQcm9qZWN0UGVybWlzc2lvbnNMZWdhY3k6IFtcbiAgICAgIFwiUFVUIC90ZWFtcy97dGVhbV9pZH0vcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5hZGRPclVwZGF0ZVByb2plY3RQZXJtaXNzaW9uc0xlZ2FjeSgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3RlYW1zL3RlYW1zI2FkZC1vci11cGRhdGUtdGVhbS1wcm9qZWN0LXBlcm1pc3Npb25zLWxlZ2FjeVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFkZE9yVXBkYXRlUmVwb1Blcm1pc3Npb25zSW5Pcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3JlcG9zL3tvd25lcn0ve3JlcG99XCIsXG4gICAgXSxcbiAgICBjaGVja1Blcm1pc3Npb25zRm9yUHJvamVjdEluT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLmNoZWNrUGVybWlzc2lvbnNGb3JQcm9qZWN0SW5PcmcoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNjaGVjay10ZWFtLXBlcm1pc3Npb25zLWZvci1hLXByb2plY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjaGVja1Blcm1pc3Npb25zRm9yUHJvamVjdExlZ2FjeTogW1xuICAgICAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLmNoZWNrUGVybWlzc2lvbnNGb3JQcm9qZWN0TGVnYWN5KCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvdGVhbXMvdGVhbXMjY2hlY2stdGVhbS1wZXJtaXNzaW9ucy1mb3ItYS1wcm9qZWN0LWxlZ2FjeVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNoZWNrUGVybWlzc2lvbnNGb3JSZXBvSW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3JlcG9zL3tvd25lcn0ve3JlcG99XCIsXG4gICAgXSxcbiAgICBjcmVhdGU6IFtcIlBPU1QgL29yZ3Mve29yZ30vdGVhbXNcIl0sXG4gICAgY3JlYXRlRGlzY3Vzc2lvbkNvbW1lbnRJbk9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGNyZWF0ZURpc2N1c3Npb25Jbk9yZzogW1wiUE9TVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9uc1wiXSxcbiAgICBkZWxldGVEaXNjdXNzaW9uQ29tbWVudEluT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn1cIixcbiAgICBdLFxuICAgIGRlbGV0ZURpc2N1c3Npb25Jbk9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlSW5Pcmc6IFtcIkRFTEVURSAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfVwiXSxcbiAgICBnZXRCeU5hbWU6IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfVwiXSxcbiAgICBnZXREaXNjdXNzaW9uQ29tbWVudEluT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn1cIixcbiAgICBdLFxuICAgIGdldERpc2N1c3Npb25Jbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgZ2V0TWVtYmVyc2hpcEZvclVzZXJJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vbWVtYmVyc2hpcHMve3VzZXJuYW1lfVwiLFxuICAgIF0sXG4gICAgbGlzdDogW1wiR0VUIC9vcmdzL3tvcmd9L3RlYW1zXCJdLFxuICAgIGxpc3RDaGlsZEluT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vdGVhbXNcIl0sXG4gICAgbGlzdERpc2N1c3Npb25Db21tZW50c0luT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBsaXN0RGlzY3Vzc2lvbnNJbk9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zXCJdLFxuICAgIGxpc3RGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3RlYW1zXCJdLFxuICAgIGxpc3RNZW1iZXJzSW5Pcmc6IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9tZW1iZXJzXCJdLFxuICAgIGxpc3RQZW5kaW5nSW52aXRhdGlvbnNJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vaW52aXRhdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RQcm9qZWN0c0luT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9wcm9qZWN0c1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QudGVhbXMubGlzdFByb2plY3RzSW5PcmcoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNsaXN0LXRlYW0tcHJvamVjdHNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0UHJvamVjdHNMZWdhY3k6IFtcbiAgICAgIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLmxpc3RQcm9qZWN0c0xlZ2FjeSgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3RlYW1zL3RlYW1zI2xpc3QtdGVhbS1wcm9qZWN0cy1sZWdhY3lcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaXN0UmVwb3NJbk9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3JlcG9zXCJdLFxuICAgIHJlbW92ZU1lbWJlcnNoaXBGb3JVc2VySW5Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L21lbWJlcnNoaXBzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZVByb2plY3RJbk9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5yZW1vdmVQcm9qZWN0SW5PcmcoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNyZW1vdmUtYS1wcm9qZWN0LWZyb20tYS10ZWFtXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcmVtb3ZlUHJvamVjdExlZ2FjeTogW1xuICAgICAgXCJERUxFVEUgL3RlYW1zL3t0ZWFtX2lkfS9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLnJlbW92ZVByb2plY3RMZWdhY3koKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNyZW1vdmUtYS1wcm9qZWN0LWZyb20tYS10ZWFtLWxlZ2FjeVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHJlbW92ZVJlcG9Jbk9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcmVwb3Mve293bmVyfS97cmVwb31cIixcbiAgICBdLFxuICAgIHVwZGF0ZURpc2N1c3Npb25Db21tZW50SW5Pcmc6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVEaXNjdXNzaW9uSW5Pcmc6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgdXBkYXRlSW5Pcmc6IFtcIlBBVENIIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9XCJdLFxuICB9LFxuICB1c2Vyczoge1xuICAgIGFkZEVtYWlsRm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJQT1NUIC91c2VyL2VtYWlsc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiYWRkRW1haWxGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgYWRkRW1haWxGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9lbWFpbHNcIl0sXG4gICAgYWRkU29jaWFsQWNjb3VudEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL3NvY2lhbF9hY2NvdW50c1wiXSxcbiAgICBibG9jazogW1wiUFVUIC91c2VyL2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIGNoZWNrQmxvY2tlZDogW1wiR0VUIC91c2VyL2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIGNoZWNrRm9sbG93aW5nRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2ZvbGxvd2luZy97dGFyZ2V0X3VzZXJ9XCJdLFxuICAgIGNoZWNrUGVyc29uSXNGb2xsb3dlZEJ5QXV0aGVudGljYXRlZDogW1wiR0VUIC91c2VyL2ZvbGxvd2luZy97dXNlcm5hbWV9XCJdLFxuICAgIGNyZWF0ZUdwZ0tleUZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9ncGdfa2V5c1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiY3JlYXRlR3BnS2V5Rm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGNyZWF0ZUdwZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL2dwZ19rZXlzXCJdLFxuICAgIGNyZWF0ZVB1YmxpY1NzaEtleUZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9rZXlzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJjcmVhdGVQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgY3JlYXRlUHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIva2V5c1wiXSxcbiAgICBjcmVhdGVTc2hTaWduaW5nS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIvc3NoX3NpZ25pbmdfa2V5c1wiXSxcbiAgICBkZWxldGVFbWFpbEZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL2VtYWlsc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiZGVsZXRlRW1haWxGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgZGVsZXRlRW1haWxGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL2VtYWlsc1wiXSxcbiAgICBkZWxldGVHcGdLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9ncGdfa2V5cy97Z3BnX2tleV9pZH1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImRlbGV0ZUdwZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBkZWxldGVHcGdLZXlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL2dwZ19rZXlzL3tncGdfa2V5X2lkfVwiXSxcbiAgICBkZWxldGVQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9rZXlzL3trZXlfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJkZWxldGVQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgZGVsZXRlUHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9rZXlzL3trZXlfaWR9XCJdLFxuICAgIGRlbGV0ZVNvY2lhbEFjY291bnRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL3NvY2lhbF9hY2NvdW50c1wiXSxcbiAgICBkZWxldGVTc2hTaWduaW5nS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL3NzaF9zaWduaW5nX2tleXMve3NzaF9zaWduaW5nX2tleV9pZH1cIixcbiAgICBdLFxuICAgIGZvbGxvdzogW1wiUFVUIC91c2VyL2ZvbGxvd2luZy97dXNlcm5hbWV9XCJdLFxuICAgIGdldEF1dGhlbnRpY2F0ZWQ6IFtcIkdFVCAvdXNlclwiXSxcbiAgICBnZXRCeUlkOiBbXCJHRVQgL3VzZXIve2FjY291bnRfaWR9XCJdLFxuICAgIGdldEJ5VXNlcm5hbWU6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfVwiXSxcbiAgICBnZXRDb250ZXh0Rm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2hvdmVyY2FyZFwiXSxcbiAgICBnZXRHcGdLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9ncGdfa2V5cy97Z3BnX2tleV9pZH1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImdldEdwZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBnZXRHcGdLZXlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2dwZ19rZXlzL3tncGdfa2V5X2lkfVwiXSxcbiAgICBnZXRQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9rZXlzL3trZXlfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJnZXRQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgZ2V0UHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9rZXlzL3trZXlfaWR9XCJdLFxuICAgIGdldFNzaFNpZ25pbmdLZXlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvc3NoX3NpZ25pbmdfa2V5cy97c3NoX3NpZ25pbmdfa2V5X2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdDogW1wiR0VUIC91c2Vyc1wiXSxcbiAgICBsaXN0QXR0ZXN0YXRpb25zOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vYXR0ZXN0YXRpb25zL3tzdWJqZWN0X2RpZ2VzdH1cIl0sXG4gICAgbGlzdEJsb2NrZWRCeUF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiR0VUIC91c2VyL2Jsb2Nrc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwibGlzdEJsb2NrZWRCeUF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0QmxvY2tlZEJ5QXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9ibG9ja3NcIl0sXG4gICAgbGlzdEVtYWlsc0ZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiR0VUIC91c2VyL2VtYWlsc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwibGlzdEVtYWlsc0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0RW1haWxzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9lbWFpbHNcIl0sXG4gICAgbGlzdEZvbGxvd2VkQnlBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9mb2xsb3dpbmdcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImxpc3RGb2xsb3dlZEJ5QXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGxpc3RGb2xsb3dlZEJ5QXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9mb2xsb3dpbmdcIl0sXG4gICAgbGlzdEZvbGxvd2Vyc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvZm9sbG93ZXJzXCJdLFxuICAgIGxpc3RGb2xsb3dlcnNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZm9sbG93ZXJzXCJdLFxuICAgIGxpc3RGb2xsb3dpbmdGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZm9sbG93aW5nXCJdLFxuICAgIGxpc3RHcGdLZXlzRm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIvZ3BnX2tleXNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImxpc3RHcGdLZXlzRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGxpc3RHcGdLZXlzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9ncGdfa2V5c1wiXSxcbiAgICBsaXN0R3BnS2V5c0ZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ncGdfa2V5c1wiXSxcbiAgICBsaXN0UHVibGljRW1haWxzRm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIvcHVibGljX2VtYWlsc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwibGlzdFB1YmxpY0VtYWlsc0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0UHVibGljRW1haWxzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9wdWJsaWNfZW1haWxzXCJdLFxuICAgIGxpc3RQdWJsaWNLZXlzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2tleXNcIl0sXG4gICAgbGlzdFB1YmxpY1NzaEtleXNGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9rZXlzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJsaXN0UHVibGljU3NoS2V5c0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0UHVibGljU3NoS2V5c0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIva2V5c1wiXSxcbiAgICBsaXN0U29jaWFsQWNjb3VudHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3NvY2lhbF9hY2NvdW50c1wiXSxcbiAgICBsaXN0U29jaWFsQWNjb3VudHNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc29jaWFsX2FjY291bnRzXCJdLFxuICAgIGxpc3RTc2hTaWduaW5nS2V5c0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvc3NoX3NpZ25pbmdfa2V5c1wiXSxcbiAgICBsaXN0U3NoU2lnbmluZ0tleXNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc3NoX3NpZ25pbmdfa2V5c1wiXSxcbiAgICBzZXRQcmltYXJ5RW1haWxWaXNpYmlsaXR5Rm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJQQVRDSCAvdXNlci9lbWFpbC92aXNpYmlsaXR5XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJzZXRQcmltYXJ5RW1haWxWaXNpYmlsaXR5Rm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIHNldFByaW1hcnlFbWFpbFZpc2liaWxpdHlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQQVRDSCAvdXNlci9lbWFpbC92aXNpYmlsaXR5XCIsXG4gICAgXSxcbiAgICB1bmJsb2NrOiBbXCJERUxFVEUgL3VzZXIvYmxvY2tzL3t1c2VybmFtZX1cIl0sXG4gICAgdW5mb2xsb3c6IFtcIkRFTEVURSAvdXNlci9mb2xsb3dpbmcve3VzZXJuYW1lfVwiXSxcbiAgICB1cGRhdGVBdXRoZW50aWNhdGVkOiBbXCJQQVRDSCAvdXNlclwiXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVuZHBvaW50cztcbiIsICJpbXBvcnQgdHlwZSB7IE9jdG9raXQgfSBmcm9tIFwiQG9jdG9raXQvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludE9wdGlvbnMsIFJlcXVlc3RQYXJhbWV0ZXJzLCBSb3V0ZSB9IGZyb20gXCJAb2N0b2tpdC90eXBlc1wiO1xuaW1wb3J0IEVORFBPSU5UUyBmcm9tIFwiLi9nZW5lcmF0ZWQvZW5kcG9pbnRzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJlc3RFbmRwb2ludE1ldGhvZHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQvbWV0aG9kLXR5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50RGVjb3JhdGlvbnMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG4vLyBUaGUgZm9sbG93aW5nIGNvZGUgd2FzIHJlZmFjdG9yZWQgaW46IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3Rva2l0L3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHMuanMvcHVsbC82MjJcbi8vIHRvIG9wdGltaXNlIHRoZSBydW50aW1lIHBlcmZvcm1hbmNlIG9mIE9jdG9raXQgaW5pdGlhbGl6YXRpb24uXG4vL1xuLy8gVGhpcyBvcHRpbWl6YXRpb24gaW52b2x2ZXMgdHdvIGtleSBjaGFuZ2VzOlxuLy8gMS4gUHJlLUNvbXB1dGF0aW9uOiBUaGUgZW5kcG9pbnQgbWV0aG9kcyBhcmUgcHJlLWNvbXB1dGVkIG9uY2UgYXQgbW9kdWxlIGxvYWRcbi8vICAgIHRpbWUgaW5zdGVhZCBvZiBlYWNoIGludm9jYXRpb24gb2YgYGVuZHBvaW50c1RvTWV0aG9kcygpYC5cbi8vIDIuIExhenkgaW5pdGlhbGl6YXRpb24gYW5kIGNhY2hpbmc6IFdlIHVzZSBhIFByb3h5IGZvciBlYWNoIHNjb3BlIHRvIG9ubHlcbi8vICAgIGluaXRpYWxpemUgbWV0aG9kcyB0aGF0IGFyZSBhY3R1YWxseSBjYWxsZWQuIFRoaXMgcmVkdWNlcyBydW50aW1lIG92ZXJoZWFkXG4vLyAgICBhcyB0aGUgaW5pdGlhbGl6YXRpb24gaW52b2x2ZXMgZGVlcCBtZXJnaW5nIG9mIG9iamVjdHMuIFRoZSBpbml0aWFsaXplZFxuLy8gICAgbWV0aG9kcyBhcmUgdGhlbiBjYWNoZWQgZm9yIGZ1dHVyZSB1c2UuXG5cbmNvbnN0IGVuZHBvaW50TWV0aG9kc01hcCA9IG5ldyBNYXAoKTtcbmZvciAoY29uc3QgW3Njb3BlLCBlbmRwb2ludHNdIG9mIE9iamVjdC5lbnRyaWVzKEVORFBPSU5UUykpIHtcbiAgZm9yIChjb25zdCBbbWV0aG9kTmFtZSwgZW5kcG9pbnRdIG9mIE9iamVjdC5lbnRyaWVzKGVuZHBvaW50cykpIHtcbiAgICBjb25zdCBbcm91dGUsIGRlZmF1bHRzLCBkZWNvcmF0aW9uc10gPSBlbmRwb2ludDtcbiAgICBjb25zdCBbbWV0aG9kLCB1cmxdID0gcm91dGUuc3BsaXQoLyAvKTtcbiAgICBjb25zdCBlbmRwb2ludERlZmF1bHRzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICB1cmwsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdHMsXG4gICAgKTtcblxuICAgIGlmICghZW5kcG9pbnRNZXRob2RzTWFwLmhhcyhzY29wZSkpIHtcbiAgICAgIGVuZHBvaW50TWV0aG9kc01hcC5zZXQoc2NvcGUsIG5ldyBNYXAoKSk7XG4gICAgfVxuXG4gICAgZW5kcG9pbnRNZXRob2RzTWFwLmdldChzY29wZSkuc2V0KG1ldGhvZE5hbWUsIHtcbiAgICAgIHNjb3BlLFxuICAgICAgbWV0aG9kTmFtZSxcbiAgICAgIGVuZHBvaW50RGVmYXVsdHMsXG4gICAgICBkZWNvcmF0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG50eXBlIFByb3h5VGFyZ2V0ID0ge1xuICBvY3Rva2l0OiBPY3Rva2l0O1xuICBzY29wZTogc3RyaW5nO1xuICBjYWNoZTogUmVjb3JkPHN0cmluZywgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+O1xufTtcblxuY29uc3QgaGFuZGxlciA9IHtcbiAgaGFzKHsgc2NvcGUgfTogUHJveHlUYXJnZXQsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBlbmRwb2ludE1ldGhvZHNNYXAuZ2V0KHNjb3BlKS5oYXMobWV0aG9kTmFtZSk7XG4gIH0sXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQ6IFByb3h5VGFyZ2V0LCBtZXRob2ROYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHRoaXMuZ2V0KHRhcmdldCwgbWV0aG9kTmFtZSksIC8vIGVuc3VyZXMgbWV0aG9kIGlzIGluIHRoZSBjYWNoZVxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIH07XG4gIH0sXG4gIGRlZmluZVByb3BlcnR5KFxuICAgIHRhcmdldDogUHJveHlUYXJnZXQsXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcixcbiAgKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldC5jYWNoZSwgbWV0aG9kTmFtZSwgZGVzY3JpcHRvcik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGRlbGV0ZVByb3BlcnR5KHRhcmdldDogUHJveHlUYXJnZXQsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGRlbGV0ZSB0YXJnZXQuY2FjaGVbbWV0aG9kTmFtZV07XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG93bktleXMoeyBzY29wZSB9OiBQcm94eVRhcmdldCkge1xuICAgIHJldHVybiBbLi4uZW5kcG9pbnRNZXRob2RzTWFwLmdldChzY29wZSkua2V5cygpXTtcbiAgfSxcbiAgc2V0KHRhcmdldDogUHJveHlUYXJnZXQsIG1ldGhvZE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiAodGFyZ2V0LmNhY2hlW21ldGhvZE5hbWVdID0gdmFsdWUpO1xuICB9LFxuICBnZXQoeyBvY3Rva2l0LCBzY29wZSwgY2FjaGUgfTogUHJveHlUYXJnZXQsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGlmIChjYWNoZVttZXRob2ROYW1lXSkge1xuICAgICAgcmV0dXJuIGNhY2hlW21ldGhvZE5hbWVdO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZCA9IGVuZHBvaW50TWV0aG9kc01hcC5nZXQoc2NvcGUpLmdldChtZXRob2ROYW1lKTtcbiAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGVuZHBvaW50RGVmYXVsdHMsIGRlY29yYXRpb25zIH0gPSBtZXRob2Q7XG5cbiAgICBpZiAoZGVjb3JhdGlvbnMpIHtcbiAgICAgIGNhY2hlW21ldGhvZE5hbWVdID0gZGVjb3JhdGUoXG4gICAgICAgIG9jdG9raXQsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBlbmRwb2ludERlZmF1bHRzLFxuICAgICAgICBkZWNvcmF0aW9ucyxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlW21ldGhvZE5hbWVdID0gb2N0b2tpdC5yZXF1ZXN0LmRlZmF1bHRzKGVuZHBvaW50RGVmYXVsdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZVttZXRob2ROYW1lXTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRwb2ludHNUb01ldGhvZHMob2N0b2tpdDogT2N0b2tpdCk6IFJlc3RFbmRwb2ludE1ldGhvZHMge1xuICBjb25zdCBuZXdNZXRob2RzID0ge30gYXMgeyBba2V5OiBzdHJpbmddOiBvYmplY3QgfTtcblxuICBmb3IgKGNvbnN0IHNjb3BlIG9mIGVuZHBvaW50TWV0aG9kc01hcC5rZXlzKCkpIHtcbiAgICBuZXdNZXRob2RzW3Njb3BlXSA9IG5ldyBQcm94eSh7IG9jdG9raXQsIHNjb3BlLCBjYWNoZToge30gfSwgaGFuZGxlcik7XG4gIH1cblxuICByZXR1cm4gbmV3TWV0aG9kcyBhcyBSZXN0RW5kcG9pbnRNZXRob2RzO1xufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZShcbiAgb2N0b2tpdDogT2N0b2tpdCxcbiAgc2NvcGU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBkZWZhdWx0czogRW5kcG9pbnRPcHRpb25zLFxuICBkZWNvcmF0aW9uczogRW5kcG9pbnREZWNvcmF0aW9ucyxcbikge1xuICBjb25zdCByZXF1ZXN0V2l0aERlZmF1bHRzID0gb2N0b2tpdC5yZXF1ZXN0LmRlZmF1bHRzKGRlZmF1bHRzKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBmdW5jdGlvbiB3aXRoRGVjb3JhdGlvbnMoXG4gICAgLi4uYXJnczogW1JvdXRlLCBSZXF1ZXN0UGFyYW1ldGVycz9dIHwgW0VuZHBvaW50T3B0aW9uc11cbiAgKSB7XG4gICAgLy8gQHRzLWlnbm9yZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzI1NDg4XG4gICAgbGV0IG9wdGlvbnMgPSByZXF1ZXN0V2l0aERlZmF1bHRzLmVuZHBvaW50Lm1lcmdlKC4uLmFyZ3MpO1xuXG4gICAgLy8gVGhlcmUgYXJlIGN1cnJlbnRseSBubyBvdGhlciBkZWNvcmF0aW9ucyB0aGFuIGAubWFwVG9EYXRhYFxuICAgIGlmIChkZWNvcmF0aW9ucy5tYXBUb0RhdGEpIHtcbiAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgIGRhdGE6IG9wdGlvbnNbZGVjb3JhdGlvbnMubWFwVG9EYXRhXSxcbiAgICAgICAgW2RlY29yYXRpb25zLm1hcFRvRGF0YV06IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcXVlc3RXaXRoRGVmYXVsdHMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29yYXRpb25zLnJlbmFtZWQpIHtcbiAgICAgIGNvbnN0IFtuZXdTY29wZSwgbmV3TWV0aG9kTmFtZV0gPSBkZWNvcmF0aW9ucy5yZW5hbWVkO1xuICAgICAgb2N0b2tpdC5sb2cud2FybihcbiAgICAgICAgYG9jdG9raXQuJHtzY29wZX0uJHttZXRob2ROYW1lfSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gb2N0b2tpdC4ke25ld1Njb3BlfS4ke25ld01ldGhvZE5hbWV9KClgLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRlY29yYXRpb25zLmRlcHJlY2F0ZWQpIHtcbiAgICAgIG9jdG9raXQubG9nLndhcm4oZGVjb3JhdGlvbnMuZGVwcmVjYXRlZCk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29yYXRpb25zLnJlbmFtZWRQYXJhbWV0ZXJzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjU0ODhcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSByZXF1ZXN0V2l0aERlZmF1bHRzLmVuZHBvaW50Lm1lcmdlKC4uLmFyZ3MpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCBhbGlhc10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICAgIGRlY29yYXRpb25zLnJlbmFtZWRQYXJhbWV0ZXJzLFxuICAgICAgKSkge1xuICAgICAgICBpZiAobmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgb2N0b2tpdC5sb2cud2FybihcbiAgICAgICAgICAgIGBcIiR7bmFtZX1cIiBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBmb3IgXCJvY3Rva2l0LiR7c2NvcGV9LiR7bWV0aG9kTmFtZX0oKVwiLiBVc2UgXCIke2FsaWFzfVwiIGluc3RlYWRgLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCEoYWxpYXMgaW4gb3B0aW9ucykpIHtcbiAgICAgICAgICAgIG9wdGlvbnNbYWxpYXNdID0gb3B0aW9uc1tuYW1lXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIG9wdGlvbnNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXF1ZXN0V2l0aERlZmF1bHRzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yNTQ4OFxuICAgIHJldHVybiByZXF1ZXN0V2l0aERlZmF1bHRzKC4uLmFyZ3MpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHdpdGhEZWNvcmF0aW9ucywgcmVxdWVzdFdpdGhEZWZhdWx0cyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgeyBSZXN0RW5kcG9pbnRNZXRob2RUeXBlcyB9IGZyb20gXCIuL2dlbmVyYXRlZC9wYXJhbWV0ZXJzLWFuZC1yZXNwb25zZS10eXBlcy5qc1wiO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gXCIuL3ZlcnNpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IGVuZHBvaW50c1RvTWV0aG9kcyB9IGZyb20gXCIuL2VuZHBvaW50cy10by1tZXRob2RzLmpzXCI7XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBmb3IgZG93bnN0cmVhbSB1c2VycyBpbiBvcmRlciB0byBmaXggYSBUeXBlU2NyaXB0IGVycm9yXG4vLyBUaGUgaW5mZXJyZWQgdHlwZSBvZiAnT2N0b2tpdCcgY2Fubm90IGJlIG5hbWVkIHdpdGhvdXQgYSByZWZlcmVuY2UgdG8gJy4uL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzL2Rpc3QtdHlwZXMvdHlwZXMuanMnLiBUaGlzIGlzIGxpa2VseSBub3QgcG9ydGFibGUuIEEgdHlwZSBhbm5vdGF0aW9uIGlzIG5lY2Vzc2FyeS5cbmV4cG9ydCB0eXBlIHsgQXBpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0RW5kcG9pbnRNZXRob2RzKG9jdG9raXQ6IE9jdG9raXQpOiBBcGkge1xuICBjb25zdCBhcGkgPSBlbmRwb2ludHNUb01ldGhvZHMob2N0b2tpdCk7XG4gIHJldHVybiB7XG4gICAgcmVzdDogYXBpLFxuICB9O1xufVxucmVzdEVuZHBvaW50TWV0aG9kcy5WRVJTSU9OID0gVkVSU0lPTjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxlZ2FjeVJlc3RFbmRwb2ludE1ldGhvZHMob2N0b2tpdDogT2N0b2tpdCk6IEFwaVtcInJlc3RcIl0gJiBBcGkge1xuICBjb25zdCBhcGkgPSBlbmRwb2ludHNUb01ldGhvZHMob2N0b2tpdCk7XG4gIHJldHVybiB7XG4gICAgLi4uYXBpLFxuICAgIHJlc3Q6IGFwaSxcbiAgfTtcbn1cbmxlZ2FjeVJlc3RFbmRwb2ludE1ldGhvZHMuVkVSU0lPTiA9IFZFUlNJT047XG4iLCAiY29uc3QgVkVSU0lPTiA9IFwiMjEuMS4xXCI7XG5leHBvcnQge1xuICBWRVJTSU9OXG59O1xuIiwgImltcG9ydCB7IE9jdG9raXQgYXMgQ29yZSB9IGZyb20gXCJAb2N0b2tpdC9jb3JlXCI7XG5pbXBvcnQgeyByZXF1ZXN0TG9nIH0gZnJvbSBcIkBvY3Rva2l0L3BsdWdpbi1yZXF1ZXN0LWxvZ1wiO1xuaW1wb3J0IHtcbiAgcGFnaW5hdGVSZXN0XG59IGZyb20gXCJAb2N0b2tpdC9wbHVnaW4tcGFnaW5hdGUtcmVzdFwiO1xuaW1wb3J0IHsgbGVnYWN5UmVzdEVuZHBvaW50TWV0aG9kcyB9IGZyb20gXCJAb2N0b2tpdC9wbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvbi5qc1wiO1xuY29uc3QgT2N0b2tpdCA9IENvcmUucGx1Z2luKHJlcXVlc3RMb2csIGxlZ2FjeVJlc3RFbmRwb2ludE1ldGhvZHMsIHBhZ2luYXRlUmVzdCkuZGVmYXVsdHMoXG4gIHtcbiAgICB1c2VyQWdlbnQ6IGBvY3Rva2l0LXJlc3QuanMvJHtWRVJTSU9OfWBcbiAgfVxuKTtcbmV4cG9ydCB7XG4gIE9jdG9raXRcbn07XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiQGFjdGlvbnMvY29yZVwiO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2RrTWNwU2VydmVyLFxuICBxdWVyeSxcbiAgdHlwZSBTREtNZXNzYWdlLFxufSBmcm9tIFwiQGFudGhyb3BpYy1haS9jbGF1ZGUtYWdlbnQtc2RrXCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyB6b2RUb0pzb25TY2hlbWEgfSBmcm9tIFwiem9kLXRvLWpzb24tc2NoZW1hXCI7XG5pbXBvcnQgeyBlbnN1cmVDbGF1ZGVDbGkgfSBmcm9tIFwiLi4vc2V0dXAvZW5zdXJlLWNsYXVkZS1jbGkuanNcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRBZGFwdGVyLCBSdW5TdGFnZUFyZ3MgfSBmcm9tIFwiLi9hZGFwdGVyLmpzXCI7XG5pbXBvcnQgeyBBZ2VudEVycm9yIH0gZnJvbSBcIi4vYWRhcHRlci5qc1wiO1xuXG5jb25zdCBTVUJUWVBFX1RPX0tJTkQ6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB8IFwiYWdlbnRfYnVkZ2V0XCJcbiAgfCBcImFnZW50X21heF90dXJuc1wiXG4gIHwgXCJhZ2VudF9pbnZhbGlkX291dHB1dFwiXG4gIHwgXCJhZ2VudF9leGVjdXRpb25cIlxuPiA9IHtcbiAgZXJyb3JfbWF4X2J1ZGdldF91c2Q6IFwiYWdlbnRfYnVkZ2V0XCIsXG4gIGVycm9yX21heF90dXJuczogXCJhZ2VudF9tYXhfdHVybnNcIixcbiAgZXJyb3JfbWF4X3N0cnVjdHVyZWRfb3V0cHV0X3JldHJpZXM6IFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIixcbiAgZXJyb3JfZHVyaW5nX2V4ZWN1dGlvbjogXCJhZ2VudF9leGVjdXRpb25cIixcbn07XG5cbi8vIFBlcm1pc3Npb24gcGF0dGVybnMgU2hvcGZsb29yIHByZS1hcHByb3ZlcyBvbiBldmVyeSBzdGFnZS4gVGhlIGFnZW50IFNESydzXG4vLyBwYXR0ZXJuIHN5bnRheCBpcyBgQmFzaCg8cHJlZml4PjoqKWAgd2hlcmUgdGhlIHByZWZpeCBjYW4gYmUgYSBjb21tYW5kIGFsb25lXG4vLyAoYGxzYCkgb3Igd2l0aCBzdWJjb21tYW5kcyAoYGdpdCBhZGRgKS4gTm9uLWJhc2ggdG9vbCBuYW1lcyBhcmUgbWF0Y2hlZCBhc1xuLy8gbGl0ZXJhbHMuIFRoZXNlIGRlZmF1bHRzIHJ1biBpbiBldmVyeSBwcm9qZWN0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVcbi8vIHByb2plY3QgaGFzIGl0cyBvd24gLmNsYXVkZS9zZXR0aW5ncy5qc29uLiBQcm9qZWN0IHNldHRpbmdzIHN0YWNrIG9uIHRvcC5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FHRU5UX0FMTE9XOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgLy8gQnVpbHQtaW4gZmlsZSBvcHMgYW5kIHNlYXJjaC5cbiAgXCJSZWFkXCIsXG4gIFwiV3JpdGVcIixcbiAgXCJFZGl0XCIsXG4gIFwiTXVsdGlFZGl0XCIsXG4gIFwiTm90ZWJvb2tFZGl0XCIsXG4gIFwiR2xvYlwiLFxuICBcIkdyZXBcIixcbiAgXCJMU1wiLFxuICAvLyBHaXQgc3ViY29tbWFuZHMgdGhlIGltcGwgcHJvbXB0IGF1dGhvcmlzZXMuIFB1c2ggYW5kIGhpc3RvcnktcmV3cml0aW5nXG4gIC8vIGNvbW1hbmRzIGFyZSBleHBsaWNpdGx5IGRlbmllZCBiZWxvdzsgdGhlIHJvdXRlciBwdXNoZXMgY29tbWl0cyBvbiB0aGVcbiAgLy8gYWdlbnQncyBiZWhhbGYgYXQgdGhlIGVuZCBvZiB0aGUgcnVuLlxuICBcIkJhc2goZ2l0IGxvZzoqKVwiLFxuICBcIkJhc2goZ2l0IGRpZmY6KilcIixcbiAgXCJCYXNoKGdpdCBzdGF0dXM6KilcIixcbiAgXCJCYXNoKGdpdCBzaG93OiopXCIsXG4gIFwiQmFzaChnaXQgYWRkOiopXCIsXG4gIFwiQmFzaChnaXQgY29tbWl0OiopXCIsXG4gIFwiQmFzaChnaXQgcmV2LXBhcnNlOiopXCIsXG4gIC8vIFN0YW5kYXJkIHJlYWQtb25seSBpbnNwZWN0aW9uLlxuICBcIkJhc2gobHM6KilcIixcbiAgXCJCYXNoKGNhdDoqKVwiLFxuICBcIkJhc2goaGVhZDoqKVwiLFxuICBcIkJhc2godGFpbDoqKVwiLFxuICBcIkJhc2goZ3JlcDoqKVwiLFxuICBcIkJhc2goZmluZDoqKVwiLFxuICBcIkJhc2god2M6KilcIixcbiAgXCJCYXNoKHRyZWU6KilcIixcbiAgXCJCYXNoKGZpbGU6KilcIixcbiAgXCJCYXNoKHN0YXQ6KilcIixcbiAgXCJCYXNoKHdoaWNoOiopXCIsXG4gIFwiQmFzaChlY2hvOiopXCIsXG4gIFwiQmFzaChwcmludGY6KilcIixcbiAgXCJCYXNoKHNvcnQ6KilcIixcbiAgXCJCYXNoKHVuaXE6KilcIixcbiAgXCJCYXNoKGpxOiopXCIsXG4gIFwiQmFzaCh5cToqKVwiLFxuICBcIkJhc2goeGFyZ3M6KilcIixcbiAgXCJCYXNoKGRpZmY6KilcIixcbiAgXCJCYXNoKHRydWU6KilcIixcbiAgXCJCYXNoKGZhbHNlOiopXCIsXG4gIC8vIEZpbGUgbXV0YXRpb24uIENsYXVkZSBDb2RlJ3Mgc2FuZGJveCBhbHJlYWR5IHJlc3RyaWN0cyB3cml0ZXMgdG8gdGhlXG4gIC8vIHNlc3Npb24ncyBjd2QsIHNvIHRoZXNlIGNhbid0IGVzY2FwZSB0aGUgY2hlY2tvdXQuXG4gIFwiQmFzaChta2RpcjoqKVwiLFxuICBcIkJhc2gobXY6KilcIixcbiAgXCJCYXNoKGNwOiopXCIsXG4gIFwiQmFzaCh0b3VjaDoqKVwiLFxuICBcIkJhc2goc2VkOiopXCIsXG4gIFwiQmFzaChhd2s6KilcIixcbiAgXCJCYXNoKHJtOiopXCIsXG4gIFwiQmFzaChsbjoqKVwiLFxuICAvLyBKYXZhU2NyaXB0IC8gVHlwZVNjcmlwdCB0b29sY2hhaW5zLlxuICBcIkJhc2gocG5wbToqKVwiLFxuICBcIkJhc2gocG5weDoqKVwiLFxuICBcIkJhc2gobnBtOiopXCIsXG4gIFwiQmFzaChucHg6KilcIixcbiAgXCJCYXNoKHlhcm46KilcIixcbiAgXCJCYXNoKGJ1bjoqKVwiLFxuICBcIkJhc2goYnVueDoqKVwiLFxuICBcIkJhc2gobm9kZToqKVwiLFxuICBcIkJhc2goZGVubzoqKVwiLFxuICBcIkJhc2godHNjOiopXCIsXG4gIFwiQmFzaCh0c3g6KilcIixcbiAgXCJCYXNoKGVzbGludDoqKVwiLFxuICBcIkJhc2gocHJldHRpZXI6KilcIixcbiAgXCJCYXNoKHZpdGVzdDoqKVwiLFxuICBcIkJhc2goamVzdDoqKVwiLFxuICAvLyBQeXRob24gdG9vbGNoYWlucy5cbiAgXCJCYXNoKHB5dGhvbjoqKVwiLFxuICBcIkJhc2gocHl0aG9uMzoqKVwiLFxuICBcIkJhc2gocGlwOiopXCIsXG4gIFwiQmFzaChwaXAzOiopXCIsXG4gIFwiQmFzaChwb2V0cnk6KilcIixcbiAgXCJCYXNoKHV2OiopXCIsXG4gIFwiQmFzaCh1dng6KilcIixcbiAgXCJCYXNoKHJ1ZmY6KilcIixcbiAgXCJCYXNoKGJsYWNrOiopXCIsXG4gIFwiQmFzaChteXB5OiopXCIsXG4gIFwiQmFzaChweXRlc3Q6KilcIixcbiAgLy8gT3RoZXIgY29tcGlsZWQgbGFuZ3VhZ2VzLlxuICBcIkJhc2goZ286KilcIixcbiAgXCJCYXNoKGNhcmdvOiopXCIsXG4gIFwiQmFzaChydXN0YzoqKVwiLFxuICBcIkJhc2gocnVzdHVwOiopXCIsXG4gIC8vIEdlbmVyaWMgYnVpbGQgcnVubmVycy5cbiAgXCJCYXNoKG1ha2U6KilcIixcbiAgXCJCYXNoKGp1c3Q6KilcIixcbl07XG5cbi8vIEhhcmQtZGVueSBjbGVhciBmb290Z3Vucy4gVGhlIGNsYXNzaWZpZXIgc3RpbGwgZ2F0ZXMgYW55dGhpbmcgbm90IGluIHRoZVxuLy8gYWxsb3cgbGlzdCwgYnV0IHRoZXNlIGdldCBhIGZhc3Qgbm8gcmF0aGVyIHRoYW4gYSBtb2RlbCByb3VuZC10cmlwLlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdFTlRfREVOWTogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIC8vIFByaXZpbGVnZSBlc2NhbGF0aW9uLlxuICBcIkJhc2goc3VkbzoqKVwiLFxuICBcIkJhc2goc3U6KilcIixcbiAgXCJCYXNoKGRvYXM6KilcIixcbiAgLy8gT3V0Ym91bmQgU1NIIGFuZCBjb3B5LW92ZXItbmV0d29yay4gVGhlIGFnZW50IGhhcyB6ZXJvIGxlZ2l0aW1hdGUgcmVhc29uXG4gIC8vIHRvIHJlYWNoIGFuIGV4dGVybmFsIGhvc3QgZnJvbSB0aGUgQ0kgcnVubmVyLlxuICBcIkJhc2goc3NoOiopXCIsXG4gIFwiQmFzaChzY3A6KilcIixcbiAgXCJCYXNoKHNmdHA6KilcIixcbiAgXCJCYXNoKHJzeW5jOiopXCIsXG4gIC8vIEFjY2lkZW50YWwgcGFja2FnZSBwdWJsaXNoaW5nLiBBIGJ1ZyBpbiBhbiBpbXBsIHN0YWdlIG11c3Qgbm90IGJlIGFibGUgdG9cbiAgLy8gc2hpcCB0byBhIHJlZ2lzdHJ5LlxuICBcIkJhc2gobnBtIHB1Ymxpc2g6KilcIixcbiAgXCJCYXNoKHBucG0gcHVibGlzaDoqKVwiLFxuICBcIkJhc2goeWFybiBwdWJsaXNoOiopXCIsXG4gIFwiQmFzaChidW4gcHVibGlzaDoqKVwiLFxuICBcIkJhc2goY2FyZ28gcHVibGlzaDoqKVwiLFxuICBcIkJhc2goZ2VtIHB1c2g6KilcIixcbiAgXCJCYXNoKHR3aW5lIHVwbG9hZDoqKVwiLFxuICBcIkJhc2godXYgcHVibGlzaDoqKVwiLFxuICBcIkJhc2gocG9ldHJ5IHB1Ymxpc2g6KilcIixcbiAgLy8gQ29udGFpbmVyLXJlZ2lzdHJ5IHB1c2hlcyBhbmQgY3JlZGVudGlhbCBncmFicy5cbiAgXCJCYXNoKGRvY2tlciBwdXNoOiopXCIsXG4gIFwiQmFzaChkb2NrZXIgbG9naW46KilcIixcbiAgXCJCYXNoKHBvZG1hbiBwdXNoOiopXCIsXG4gIFwiQmFzaChwb2RtYW4gbG9naW46KilcIixcbiAgLy8gR2l0IG11dGF0aW9ucyB0aGUgYWdlbnQgbXVzdCBub3QgcGVyZm9ybS4gVGhlIHJvdXRlciBvd25zIHRoZSBuZXR3b3JrXG4gIC8vIHBhdGggKHB1c2gpIGFuZCB0aGUgYWdlbnQgaGFzIG5vIGJ1c2luZXNzIHJld3JpdGluZyBoaXN0b3J5LCBibG93aW5nIGF3YXlcbiAgLy8gdGhlIHdvcmtpbmcgdHJlZSwgb3IgZGVsZXRpbmcgYnJhbmNoZXMuXG4gIFwiQmFzaChnaXQgcHVzaDoqKVwiLFxuICBcIkJhc2goZ2l0IHJlc2V0IC0taGFyZDoqKVwiLFxuICBcIkJhc2goZ2l0IGNoZWNrb3V0IC0tOiopXCIsXG4gIFwiQmFzaChnaXQgY2xlYW4gLWY6KilcIixcbiAgXCJCYXNoKGdpdCBicmFuY2ggLUQ6KilcIixcbiAgXCJCYXNoKGdpdCB3b3JrdHJlZSBhZGQ6KilcIixcbiAgXCJCYXNoKGdpdCB3b3JrdHJlZSByZW1vdmU6KilcIixcbiAgXCJCYXNoKGdpdCByZWJhc2U6KilcIixcbl07XG5cbmV4cG9ydCB0eXBlIENsYXVkZUNsaVJlc29sdmVyID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG5leHBvcnQgY2xhc3MgQ2xhdWRlQWdlbnRBZGFwdGVyIGltcGxlbWVudHMgQWdlbnRBZGFwdGVyIHtcbiAgLy8gVGhlIGVudiAod2hlbiBzZXQpIGlzIGZvcndhcmRlZCB0byB0aGUgU0RLJ3MgYHF1ZXJ5KClgIHNvIGl0IHNjb3BlcyB0aGVcbiAgLy8gQW50aHJvcGljIGNyZWRlbnRpYWwgYW5kIGFueSBhbGxvd2xpc3RlZCBob3N0IHZhcnMgdG8gU0RLIHN1YnByb2Nlc3Nlc1xuICAvLyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYHByb2Nlc3MuZW52YC4gU2VlIHNyYy9jb25maWcvYWdlbnQtZW52LnRzLlxuICAvL1xuICAvLyByZXNvbHZlQ2xpIGlzIGludm9rZWQgbGF6aWx5IG9uIHRoZSBmaXJzdCBydW5TdGFnZSBjYWxsLiBJdCBsb2NhdGVzIChvclxuICAvLyBpbnN0YWxscykgdGhlIG5hdGl2ZSBDbGF1ZGUgQ0xJIGJpbmFyeSBiZWNhdXNlIHRoZSBTREsgc2hpcHMgdGhlIGJpbmFyeVxuICAvLyBhcyBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpb25hbCBucG0gcGFja2FnZXMgXHUyMDE0IHRob3NlIHdvbid0IGJlIHByZXNlbnQgaW5cbiAgLy8gdGhlIGNvbW1pdHRlZCBkaXN0LyBidW5kbGUgb24gYSBHaXRIdWIgcnVubmVyIHdob3NlIGFyY2ggZGlmZmVycyBmcm9tXG4gIC8vIHRoZSBidWlsZCBob3N0LlxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlQ2xpOiBDbGF1ZGVDbGlSZXNvbHZlciA9IGVuc3VyZUNsYXVkZUNsaSxcbiAgKSB7fVxuXG4gIGFzeW5jIHJ1blN0YWdlPFQ+KGFyZ3M6IFJ1blN0YWdlQXJnczxUPik6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBhcmdzLmFib3J0Q29udHJvbGxlciA/PyBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gVHJhY2sgd2hldGhlciAqb3VyKiB0aW1lciBmaXJlZCB0aGUgYWJvcnQuIFRoZSBTREsgdGhyb3dzIGEgZ2VuZXJpY1xuICAgIC8vIEVycm9yKFwiQ2xhdWRlIENvZGUgcHJvY2VzcyBhYm9ydGVkIGJ5IHVzZXJcIikgZm9yIGFueSBhYm9ydCBhbmQgZ2l2ZXMgdXNcbiAgICAvLyBubyB3YXkgdG8gdGVsbCBhIHdhbGwtY2xvY2sgdGltZW91dCBmcm9tIGFuIGV4dGVybmFsL3VzZXIgYWJvcnQsIHNvIHdlXG4gICAgLy8gcmVjb3JkIHRoZSBjYXVzZSBoZXJlIGFuZCByZWNsYXNzaWZ5IHRoZSB0aHJvd24gZXJyb3IgYmVsb3cuXG4gICAgbGV0IHRpbWVkT3V0ID0gZmFsc2U7XG4gICAgY29uc3QgdGltZXIgPVxuICAgICAgYXJncy50aW1lb3V0TXMgIT0gbnVsbFxuICAgICAgICA/IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGltZWRPdXQgPSB0cnVlO1xuICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgICAgIH0sIGFyZ3MudGltZW91dE1zKVxuICAgICAgICA6IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGUgPSBhd2FpdCB0aGlzLnJlc29sdmVDbGkoKTtcblxuICAgICAgY29uc3QgbWNwU2VydmVyID0gY3JlYXRlU2RrTWNwU2VydmVyKHtcbiAgICAgICAgbmFtZTogXCJzaG9wZmxvb3JcIixcbiAgICAgICAgdmVyc2lvbjogXCIyLjAuMFwiLFxuICAgICAgICB0b29sczogYXJncy50b29scyBhcyBhbnksXG4gICAgICB9KTtcblxuICAgICAgbG9nQWdlbnRJbnB1dChhcmdzKTtcblxuICAgICAgY29uc3Qgc3RyZWFtID0gcXVlcnkoe1xuICAgICAgICBwcm9tcHQ6IGFyZ3MudXNlclByb21wdCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1vZGVsOiBhcmdzLm1vZGVsLFxuICAgICAgICAgIHBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlLFxuICAgICAgICAgIHN5c3RlbVByb21wdDoge1xuICAgICAgICAgICAgdHlwZTogXCJwcmVzZXRcIixcbiAgICAgICAgICAgIHByZXNldDogXCJjbGF1ZGVfY29kZVwiLFxuICAgICAgICAgICAgYXBwZW5kOiBhcmdzLnN5c3RlbVByb21wdCxcbiAgICAgICAgICAgIGV4Y2x1ZGVEeW5hbWljU2VjdGlvbnM6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgLy8gU3VwcHJlc3MgdGhlIFNESydzIGRlZmF1bHQgXCJDby1BdXRob3JlZC1CeTogQ2xhdWRlXCIgdHJhaWxlciBvblxuICAgICAgICAgICAgLy8gY29tbWl0cyBhbmQgdGhlIFwiR2VuZXJhdGVkIHdpdGggQ2xhdWRlIENvZGVcIiBmb290ZXIgb24gUFIgYm9kaWVzLlxuICAgICAgICAgICAgLy8gU2hvcGZsb29yIHN0YWdlcyBwcm9kdWNlIGNvbW1pdHRlZCBhcnRpZmFjdHMgdGhhdCBzaG91bGQgcmVhZCBhc1xuICAgICAgICAgICAgLy8gbmV1dHJhbCwgcHJvamVjdC1hcHByb3ByaWF0ZSBwcm9zZTsgYXR0cmlidXRpb24gYmVsb25ncyBpbiB0aGVcbiAgICAgICAgICAgIC8vIFBSIGRlc2NyaXB0aW9uLCBub3QgdGhlIGFydGlmYWN0IGl0c2VsZi5cbiAgICAgICAgICAgIGF0dHJpYnV0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbW1pdDogXCJcIixcbiAgICAgICAgICAgICAgcHI6IFwiXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAgICAgYWxsb3c6IFsuLi5ERUZBVUxUX0FHRU5UX0FMTE9XXSxcbiAgICAgICAgICAgICAgZGVueTogWy4uLkRFRkFVTFRfQUdFTlRfREVOWV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWNwU2VydmVyczogeyBzaG9wZmxvb3I6IG1jcFNlcnZlciB9LFxuICAgICAgICAgIGFsbG93ZWRUb29sczogYXJncy50b29scy5tYXAoKHQpID0+IGBtY3BfX3Nob3BmbG9vcl9fJHt0Lm5hbWV9YCksXG4gICAgICAgICAgcGVybWlzc2lvbk1vZGU6IFwiYXV0b1wiLFxuICAgICAgICAgIG91dHB1dEZvcm1hdDoge1xuICAgICAgICAgICAgdHlwZTogXCJqc29uX3NjaGVtYVwiLFxuICAgICAgICAgICAgc2NoZW1hOiB6b2RUb0pzb25TY2hlbWEoYXJncy5kZWNpc2lvblNjaGVtYSBhcyB6LlpvZFR5cGVBbnkpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKGFyZ3MuYnVkZ2V0VXNkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8geyBtYXhCdWRnZXRVc2Q6IGFyZ3MuYnVkZ2V0VXNkIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIC4uLihhcmdzLm1heFR1cm5zICE9PSB1bmRlZmluZWQgPyB7IG1heFR1cm5zOiBhcmdzLm1heFR1cm5zIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFyZ3MuZWZmb3J0ICE9PSB1bmRlZmluZWQgPyB7IGVmZm9ydDogYXJncy5lZmZvcnQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGhpcy5lbnYgPyB7IGVudjogdGhpcy5lbnYgfSA6IHt9KSxcbiAgICAgICAgICBhYm9ydENvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29yZS5zdGFydEdyb3VwKFwiQ2xhdWRlIGFnZW50IGV2ZW50c1wiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgbXNnIG9mIHN0cmVhbSkge1xuICAgICAgICAgIGxvZ1Nka0V2ZW50KG1zZyk7XG4gICAgICAgICAgaWYgKG1zZy50eXBlICE9PSBcInJlc3VsdFwiKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAobXNnLnN1YnR5cGUgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICBpZiAobXNnLnN0cnVjdHVyZWRfb3V0cHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgLy8gVGhlIENMSSByZXBvcnRlZCBhIGNsZWFuIHJ1biBidXQgaWdub3JlZCAtLWpzb24tc2NoZW1hIGFuZFxuICAgICAgICAgICAgICAvLyBlbWl0dGVkIHBsYWluIHRleHQuIFRoZSBTREsncyBgZXJyb3JfbWF4X3N0cnVjdHVyZWRfb3V0cHV0X3JldHJpZXNgXG4gICAgICAgICAgICAgIC8vIGRvZXNuJ3QgZmlyZSBpbiB0aGlzIHBhdGg7IHdlIHN1cmZhY2Ugb3VyIG93biBkaWFnbm9zdGljIHNvIHRoZVxuICAgICAgICAgICAgICAvLyBmYWlsaW5nIHJ1biBwcmludHMgd2hhdCB0aGUgbW9kZWwgYWN0dWFsbHkgc2FpZC5cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgICAgICAgXCJhZ2VudF9pbnZhbGlkX291dHB1dFwiLFxuICAgICAgICAgICAgICAgIGZvcm1hdE1pc3NpbmdTdHJ1Y3R1cmVkT3V0cHV0KG1zZyksXG4gICAgICAgICAgICAgICAgXCJzdWNjZXNzX3dpdGhvdXRfc3RydWN0dXJlZF9vdXRwdXRcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcmdzLmRlY2lzaW9uU2NoZW1hLnBhcnNlKG1zZy5zdHJ1Y3R1cmVkX291dHB1dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGtpbmQgPVxuICAgICAgICAgICAgU1VCVFlQRV9UT19LSU5EW21zZy5zdWJ0eXBlIGFzIHN0cmluZ10gPz8gXCJhZ2VudF9leGVjdXRpb25cIjtcbiAgICAgICAgICB0aHJvdyBuZXcgQWdlbnRFcnJvcihcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBgY2xhdWRlIHNlc3Npb24gZW5kZWQgd2l0aCAke21zZy5zdWJ0eXBlfWAsXG4gICAgICAgICAgICBtc2cuc3VidHlwZSBhcyBzdHJpbmcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgQWdlbnRFcnJvcihcbiAgICAgICAgICBcImFnZW50X2V4ZWN1dGlvblwiLFxuICAgICAgICAgIFwiY2xhdWRlIHNlc3Npb24gZW5kZWQgd2l0aG91dCBhIHJlc3VsdCBtZXNzYWdlXCIsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gQSB0aW1lb3V0LXRyaWdnZXJlZCBhYm9ydCByZWFjaGVzIHVzIGFzIGEgcmF3IFNESyBFcnJvci4gUmVjbGFzc2lmeVxuICAgICAgICAvLyBpdCBhcyBhZ2VudF90aW1lb3V0IHNvIHRoZSBmYWlsdXJlIHN1cmZhY2VzIHdpdGggdGhlIHJpZ2h0IGtpbmRcbiAgICAgICAgLy8gaW5zdGVhZCBvZiBmYWxsaW5nIHRocm91Z2ggdG8gXCJpbnRlcm5hbFwiIGluIHRoZSBvcmNoZXN0cmF0b3IuXG4gICAgICAgIC8vIEV4dGVybmFsbHktYWJvcnRlZCBydW5zIGFuZCBpbnRlbnRpb25hbCBBZ2VudEVycm9ycyBwYXNzIHRocm91Z2guXG4gICAgICAgIGlmICh0aW1lZE91dCAmJiAhKGVyciBpbnN0YW5jZW9mIEFnZW50RXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgICBcImFnZW50X3RpbWVvdXRcIixcbiAgICAgICAgICAgIGBjbGF1ZGUgc2Vzc2lvbiBhYm9ydGVkIGFmdGVyIGV4Y2VlZGluZyB0aGUgJHthcmdzLnRpbWVvdXRNc31tcyBzdGFnZSB0aW1lb3V0YCxcbiAgICAgICAgICAgIFwidGltZW91dFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29yZS5lbmRHcm91cCgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0FnZW50SW5wdXQ8VD4oYXJnczogUnVuU3RhZ2VBcmdzPFQ+KTogdm9pZCB7XG4gIGNvcmUuc3RhcnRHcm91cChgQ2xhdWRlIGFnZW50IGlucHV0ICgke2FyZ3MubW9kZWx9KWApO1xuICB0cnkge1xuICAgIGNvcmUuaW5mbyhgbW9kZWw6ICR7YXJncy5tb2RlbH1gKTtcbiAgICBpZiAoYXJncy5lZmZvcnQgIT09IHVuZGVmaW5lZCkgY29yZS5pbmZvKGBlZmZvcnQ6ICR7YXJncy5lZmZvcnR9YCk7XG4gICAgaWYgKGFyZ3MuYnVkZ2V0VXNkICE9PSB1bmRlZmluZWQpIGNvcmUuaW5mbyhgYnVkZ2V0VXNkOiAke2FyZ3MuYnVkZ2V0VXNkfWApO1xuICAgIGlmIChhcmdzLm1heFR1cm5zICE9PSB1bmRlZmluZWQpIGNvcmUuaW5mbyhgbWF4VHVybnM6ICR7YXJncy5tYXhUdXJuc31gKTtcbiAgICBpZiAoYXJncy50aW1lb3V0TXMgIT09IHVuZGVmaW5lZCkgY29yZS5pbmZvKGB0aW1lb3V0TXM6ICR7YXJncy50aW1lb3V0TXN9YCk7XG4gICAgY29uc3QgdG9vbExpc3QgPSBhcmdzLnRvb2xzLmxlbmd0aFxuICAgICAgPyBhcmdzLnRvb2xzLm1hcCgodCkgPT4gYC0gJHt0Lm5hbWV9OiAke3QuZGVzY3JpcHRpb24gPz8gXCJcIn1gKS5qb2luKFwiXFxuXCIpXG4gICAgICA6IFwiKG5vbmUpXCI7XG4gICAgY29yZS5pbmZvKGB0b29sczpcXG4ke3Rvb2xMaXN0fWApO1xuICAgIGNvcmUuaW5mbyhgc3lzdGVtUHJvbXB0OlxcbiR7YXJncy5zeXN0ZW1Qcm9tcHR9YCk7XG4gICAgY29yZS5pbmZvKGB1c2VyUHJvbXB0OlxcbiR7YXJncy51c2VyUHJvbXB0fWApO1xuICB9IGZpbmFsbHkge1xuICAgIGNvcmUuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dTZGtFdmVudChtc2c6IFNES01lc3NhZ2UpOiB2b2lkIHtcbiAgaWYgKG1zZy50eXBlID09PSBcInN5c3RlbVwiICYmIG1zZy5zdWJ0eXBlID09PSBcImluaXRcIikge1xuICAgIGNvbnN0IG1jcCA9IG1zZy5tY3Bfc2VydmVycy5tYXAoKHMpID0+IGAke3MubmFtZX06JHtzLnN0YXR1c31gKS5qb2luKFwiLFwiKTtcbiAgICBjb3JlLmluZm8oXG4gICAgICBgW2luaXRdIG1vZGVsPSR7bXNnLm1vZGVsfSBjd2Q9JHttc2cuY3dkfSB0b29scz0ke21zZy50b29scy5sZW5ndGh9IG1jcD0ke21jcCB8fCBcIihub25lKVwifWAsXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1zZy50eXBlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgY29uc3QgY29udGVudCA9IG1zZy5tZXNzYWdlPy5jb250ZW50O1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgYmxvY2sgb2YgY29udGVudCkge1xuICAgICAgY29uc3QgYiA9IGJsb2NrIGFzIHVua25vd24gYXMge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgICAgICBbazogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgIH07XG4gICAgICBpZiAoYi50eXBlID09PSBcInRoaW5raW5nXCIgJiYgdHlwZW9mIGIudGhpbmtpbmcgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29yZS5pbmZvKGBbdGhpbmtpbmddICR7dHJ1bmNhdGUoYi50aGlua2luZywgNTAwKX1gKTtcbiAgICAgIH0gZWxzZSBpZiAoYi50eXBlID09PSBcInRvb2xfdXNlXCIpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBiLm5hbWUgPT09IFwic3RyaW5nXCIgPyBiLm5hbWUgOiBcIih1bmtub3duKVwiO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRydW5jYXRlKHNhZmVTdHJpbmdpZnkoYi5pbnB1dCksIDMwMCk7XG4gICAgICAgIGNvcmUuaW5mbyhgW3Rvb2xfdXNlXSAke25hbWV9IGlucHV0PSR7aW5wdXR9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZiAobXNnLnR5cGUgPT09IFwidXNlclwiKSB7XG4gICAgY29uc3QgY29udGVudCA9IG1zZy5tZXNzYWdlPy5jb250ZW50O1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgYmxvY2sgb2YgY29udGVudCkge1xuICAgICAgY29uc3QgYiA9IGJsb2NrIGFzIHVua25vd24gYXMge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgICAgICBbazogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgIH07XG4gICAgICBpZiAoYi50eXBlICE9PSBcInRvb2xfcmVzdWx0XCIpIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgc3RhdHVzID0gYi5pc19lcnJvciA/IFwiZXJyb3JcIiA6IFwib2tcIjtcbiAgICAgIGNvcmUuaW5mbyhcbiAgICAgICAgYFt0b29sX3Jlc3VsdDoke3N0YXR1c31dICR7dHJ1bmNhdGUoZXh0cmFjdFRvb2xSZXN1bHRUZXh0KGIuY29udGVudCksIDUwMCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRydW5jYXRlKHM6IHN0cmluZywgbWF4OiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAocy5sZW5ndGggPD0gbWF4KSByZXR1cm4gcztcbiAgcmV0dXJuIGAke3Muc2xpY2UoMCwgbWF4KX0uLi4gW3RydW5jYXRlZCwgJHtzLmxlbmd0aH0gY2hhcnNdYDtcbn1cblxuZnVuY3Rpb24gc2FmZVN0cmluZ2lmeSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKSA/PyBcIlwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCIodW5zZXJpYWxpemFibGUpXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRvb2xSZXN1bHRUZXh0KGNvbnRlbnQ6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHJldHVybiBjb250ZW50O1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBzYWZlU3RyaW5naWZ5KGNvbnRlbnQpO1xuICByZXR1cm4gY29udGVudFxuICAgIC5tYXAoKGIpID0+IHtcbiAgICAgIGlmIChiICYmIHR5cGVvZiBiID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYiBhcyB7IHR5cGU/OiBzdHJpbmc7IHRleHQ/OiBzdHJpbmcgfTtcbiAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IFwidGV4dFwiICYmIHR5cGVvZiBibG9jay50ZXh0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIGJsb2NrLnRleHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzYWZlU3RyaW5naWZ5KGIpO1xuICAgIH0pXG4gICAgLmpvaW4oXCIgXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaXNzaW5nU3RydWN0dXJlZE91dHB1dChtc2c6IHtcbiAgcmVzdWx0PzogdW5rbm93bjtcbiAgbnVtX3R1cm5zPzogdW5rbm93bjtcbiAgdG90YWxfY29zdF91c2Q/OiB1bmtub3duO1xuICBzdG9wX3JlYXNvbj86IHVua25vd247XG59KTogc3RyaW5nIHtcbiAgY29uc3QgUkVTVUxUX1BSRVZJRVdfQ0hBUlMgPSA2MDA7XG4gIGNvbnN0IHJlc3VsdFJhdyA9IHR5cGVvZiBtc2cucmVzdWx0ID09PSBcInN0cmluZ1wiID8gbXNnLnJlc3VsdCA6IFwiXCI7XG4gIGNvbnN0IHByZXZpZXcgPVxuICAgIHJlc3VsdFJhdy5sZW5ndGggPiBSRVNVTFRfUFJFVklFV19DSEFSU1xuICAgICAgPyBgJHtyZXN1bHRSYXcuc2xpY2UoMCwgUkVTVUxUX1BSRVZJRVdfQ0hBUlMpfS4uLiBbdHJ1bmNhdGVkLCAke3Jlc3VsdFJhdy5sZW5ndGh9IGNoYXJzXWBcbiAgICAgIDogcmVzdWx0UmF3O1xuICBjb25zdCBudW1UdXJucyA9IHR5cGVvZiBtc2cubnVtX3R1cm5zID09PSBcIm51bWJlclwiID8gbXNnLm51bV90dXJucyA6IFwiP1wiO1xuICBjb25zdCBjb3N0ID1cbiAgICB0eXBlb2YgbXNnLnRvdGFsX2Nvc3RfdXNkID09PSBcIm51bWJlclwiXG4gICAgICA/IG1zZy50b3RhbF9jb3N0X3VzZC50b0ZpeGVkKDQpXG4gICAgICA6IFwiP1wiO1xuICBjb25zdCBzdG9wUmVhc29uID1cbiAgICB0eXBlb2YgbXNnLnN0b3BfcmVhc29uID09PSBcInN0cmluZ1wiID8gbXNnLnN0b3BfcmVhc29uIDogXCI/XCI7XG4gIHJldHVybiAoXG4gICAgYGNsYXVkZSBzZXNzaW9uIGVuZGVkIHdpdGggc3VidHlwZT1zdWNjZXNzIGJ1dCBubyBzdHJ1Y3R1cmVkX291dHB1dC4gYCArXG4gICAgYFRoZSBDTEkgYWNjZXB0ZWQgLS1qc29uLXNjaGVtYSBidXQgdGhlIG1vZGVsIHJldHVybmVkIHBsYWluIHRleHQgaW5zdGVhZCBvZiBzdHJ1Y3R1cmVkIGRhdGEuIGAgK1xuICAgIGBudW1fdHVybnM9JHtudW1UdXJuc30gY29zdF91c2Q9JHtjb3N0fSBzdG9wX3JlYXNvbj0ke3N0b3BSZWFzb259LiBgICtcbiAgICBgcmVzdWx0IHByZXZpZXc6ICR7cHJldmlldyB8fCBcIihlbXB0eSlcIn1gXG4gICk7XG59XG4iLCAiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy8gKGMpIEFudGhyb3BpYyBQQkMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBMZWdhbCBBZ3JlZW1lbnRzIG91dGxpbmVkIGhlcmU6IGh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vbGVnYWwtYW5kLWNvbXBsaWFuY2UuXG5cbi8vIFZlcnNpb246IDAuMi4xNDFcblxuLy8gV2FudCB0byBzZWUgdGhlIHVubWluaWZpZWQgc291cmNlPyBXZSdyZSBoaXJpbmchXG4vLyBodHRwczovL2pvYi1ib2FyZHMuZ3JlZW5ob3VzZS5pby9hbnRocm9waWMvam9icy80ODE2MTk5MDA4XG5pbXBvcnR7Y3JlYXRlUmVxdWlyZSBhcyAkU31mcm9tXCJub2RlOm1vZHVsZVwiO3ZhciBkXz1PYmplY3QuY3JlYXRlO3ZhcntnZXRQcm90b3R5cGVPZjppXyxkZWZpbmVQcm9wZXJ0eTpSRyxnZXRPd25Qcm9wZXJ0eU5hbWVzOm5ffT1PYmplY3Q7dmFyIHJfPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gb18oJCl7cmV0dXJuIHRoaXNbJF19dmFyIHRfLGFfLEJYPSgkLFEsSik9Pnt2YXIgWT0kIT1udWxsJiZ0eXBlb2YgJD09PVwib2JqZWN0XCI7aWYoWSl7dmFyIFg9UT90Xz8/PW5ldyBXZWFrTWFwOmFfPz89bmV3IFdlYWtNYXAsVz1YLmdldCgkKTtpZihXKXJldHVybiBXfUo9JCE9bnVsbD9kXyhpXygkKSk6e307bGV0IEc9UXx8ISR8fCEkLl9fZXNNb2R1bGU/UkcoSixcImRlZmF1bHRcIix7dmFsdWU6JCxlbnVtZXJhYmxlOiEwfSk6Sjtmb3IobGV0IFUgb2Ygbl8oJCkpaWYoIXJfLmNhbGwoRyxVKSlSRyhHLFUse2dldDpvXy5iaW5kKCQsVSksZW51bWVyYWJsZTohMH0pO2lmKFkpWC5zZXQoJCxHKTtyZXR1cm4gR307dmFyIEk9KCQsUSk9PigpPT4oUXx8JCgoUT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsUSksUS5leHBvcnRzKTt2YXIgc189KCQpPT4kO2Z1bmN0aW9uIGVfKCQsUSl7dGhpc1skXT1zXy5iaW5kKG51bGwsUSl9dmFyIGo0PSgkLFEpPT57Zm9yKHZhciBKIGluIFEpUkcoJCxKLHtnZXQ6UVtKXSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxzZXQ6ZV8uYmluZChRLEopfSl9O3ZhciBTNj0kUyhpbXBvcnQubWV0YS51cmwpLFFTPVN5bWJvbC5kaXNwb3NlfHxTeW1ib2wuZm9yKFwiU3ltYm9sLmRpc3Bvc2VcIiksSlM9U3ltYm9sLmFzeW5jRGlzcG9zZXx8U3ltYm9sLmZvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2VcIiksWiQ9KCQsUSxKKT0+e2lmKFEhPW51bGwpe2lmKHR5cGVvZiBRIT09XCJvYmplY3RcIiYmdHlwZW9mIFEhPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKCdPYmplY3QgZXhwZWN0ZWQgdG8gYmUgYXNzaWduZWQgdG8gXCJ1c2luZ1wiIGRlY2xhcmF0aW9uJyk7dmFyIFk7aWYoSilZPVFbSlNdO2lmKFk9PT12b2lkIDApWT1RW1FTXTtpZih0eXBlb2YgWSE9PVwiZnVuY3Rpb25cIil0aHJvdyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGVcIik7JC5wdXNoKFtKLFksUV0pfWVsc2UgaWYoSikkLnB1c2goW0pdKTtyZXR1cm4gUX0sTSQ9KCQsUSxKKT0+e3ZhciBZPXR5cGVvZiBTdXBwcmVzc2VkRXJyb3I9PT1cImZ1bmN0aW9uXCI/U3VwcHJlc3NlZEVycm9yOmZ1bmN0aW9uKEcsVSxILHEpe3JldHVybiBxPUVycm9yKEgpLHEubmFtZT1cIlN1cHByZXNzZWRFcnJvclwiLHEuZXJyb3I9RyxxLnN1cHByZXNzZWQ9VSxxfSxYPShHKT0+UT1KP25ldyBZKEcsUSxcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbFwiKTooSj0hMCxHKSxXPShHKT0+e3doaWxlKEc9JC5wb3AoKSl0cnl7dmFyIFU9R1sxXSYmR1sxXS5jYWxsKEdbMl0pO2lmKEdbMF0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShVKS50aGVuKFcsKEgpPT4oWChIKSxXKCkpKX1jYXRjaChIKXtYKEgpfWlmKEopdGhyb3cgUX07cmV0dXJuIFcoKX07dmFyIEQyPUkoKHcyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3MixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt3Mi5fZ2xvYmFsVGhpcz12b2lkIDA7dzIuX2dsb2JhbFRoaXM9dHlwZW9mIGdsb2JhbFRoaXM9PT1cIm9iamVjdFwiP2dsb2JhbFRoaXM6Z2xvYmFsfSk7dmFyIEYyPUkoKE4wKT0+e3ZhciBSeD1OMCYmTjAuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbigkLFEsSixZKXtpZihZPT09dm9pZCAwKVk9SjtPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxZLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBRW0pdfX0pfTpmdW5jdGlvbigkLFEsSixZKXtpZihZPT09dm9pZCAwKVk9SjskW1ldPVFbSl19KSxQeD1OMCYmTjAuX19leHBvcnRTdGFyfHxmdW5jdGlvbigkLFEpe2Zvcih2YXIgSiBpbiAkKWlmKEohPT1cImRlZmF1bHRcIiYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChRLEopKVJ4KFEsJCxKKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE4wLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1B4KEQyKCksTjApfSk7dmFyIFoyPUkoKHcwKT0+e3ZhciBFeD13MCYmdzAuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbigkLFEsSixZKXtpZihZPT09dm9pZCAwKVk9SjtPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxZLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBRW0pdfX0pfTpmdW5jdGlvbigkLFEsSixZKXtpZihZPT09dm9pZCAwKVk9SjskW1ldPVFbSl19KSxieD13MCYmdzAuX19leHBvcnRTdGFyfHxmdW5jdGlvbigkLFEpe2Zvcih2YXIgSiBpbiAkKWlmKEohPT1cImRlZmF1bHRcIiYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChRLEopKUV4KFEsJCxKKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHcwLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2J4KEYyKCksdzApfSk7dmFyIFRVPUkoKE0yKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShNMixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtNMi5WRVJTSU9OPXZvaWQgMDtNMi5WRVJTSU9OPVwiMS45LjBcIn0pO3ZhciBQMj1JKChJMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoSTIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7STIuaXNDb21wYXRpYmxlPUkyLl9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrPXZvaWQgMDt2YXIgX3g9VFUoKSxqMj0vXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSgtKC4rKSk/JC87ZnVuY3Rpb24gQTIoJCl7bGV0IFE9bmV3IFNldChbJF0pLEo9bmV3IFNldCxZPSQubWF0Y2goajIpO2lmKCFZKXJldHVybigpPT4hMTtsZXQgWD17bWFqb3I6K1lbMV0sbWlub3I6K1lbMl0scGF0Y2g6K1lbM10scHJlcmVsZWFzZTpZWzRdfTtpZihYLnByZXJlbGVhc2UhPW51bGwpcmV0dXJuIGZ1bmN0aW9uKEgpe3JldHVybiBIPT09JH07ZnVuY3Rpb24gVyhVKXtyZXR1cm4gSi5hZGQoVSksITF9ZnVuY3Rpb24gRyhVKXtyZXR1cm4gUS5hZGQoVSksITB9cmV0dXJuIGZ1bmN0aW9uKEgpe2lmKFEuaGFzKEgpKXJldHVybiEwO2lmKEouaGFzKEgpKXJldHVybiExO2xldCBxPUgubWF0Y2goajIpO2lmKCFxKXJldHVybiBXKEgpO2xldCBWPXttYWpvcjorcVsxXSxtaW5vcjorcVsyXSxwYXRjaDorcVszXSxwcmVyZWxlYXNlOnFbNF19O2lmKFYucHJlcmVsZWFzZSE9bnVsbClyZXR1cm4gVyhIKTtpZihYLm1ham9yIT09Vi5tYWpvcilyZXR1cm4gVyhIKTtpZihYLm1ham9yPT09MCl7aWYoWC5taW5vcj09PVYubWlub3ImJlgucGF0Y2g8PVYucGF0Y2gpcmV0dXJuIEcoSCk7cmV0dXJuIFcoSCl9aWYoWC5taW5vcjw9Vi5taW5vcilyZXR1cm4gRyhIKTtyZXR1cm4gVyhIKX19STIuX21ha2VDb21wYXRpYmlsaXR5Q2hlY2s9QTI7STIuaXNDb21wYXRpYmxlPUEyKF94LlZFUlNJT04pfSk7dmFyIE8wPUkoKEUyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShFMixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtFMi51bnJlZ2lzdGVyR2xvYmFsPUUyLmdldEdsb2JhbD1FMi5yZWdpc3Rlckdsb2JhbD12b2lkIDA7dmFyIGt4PVoyKCksYjg9VFUoKSx2eD1QMigpLEN4PWI4LlZFUlNJT04uc3BsaXQoXCIuXCIpWzBdLHA3PVN5bWJvbC5mb3IoYG9wZW50ZWxlbWV0cnkuanMuYXBpLiR7Q3h9YCksZDc9a3guX2dsb2JhbFRoaXM7ZnVuY3Rpb24gVHgoJCxRLEosWT0hMSl7dmFyIFg7bGV0IFc9ZDdbcDddPShYPWQ3W3A3XSkhPT1udWxsJiZYIT09dm9pZCAwP1g6e3ZlcnNpb246YjguVkVSU0lPTn07aWYoIVkmJldbJF0pe2xldCBHPUVycm9yKGBAb3BlbnRlbGVtZXRyeS9hcGk6IEF0dGVtcHRlZCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIG9mIEFQSTogJHskfWApO3JldHVybiBKLmVycm9yKEcuc3RhY2t8fEcubWVzc2FnZSksITF9aWYoVy52ZXJzaW9uIT09YjguVkVSU0lPTil7bGV0IEc9RXJyb3IoYEBvcGVudGVsZW1ldHJ5L2FwaTogUmVnaXN0cmF0aW9uIG9mIHZlcnNpb24gdiR7Vy52ZXJzaW9ufSBmb3IgJHskfSBkb2VzIG5vdCBtYXRjaCBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgQVBJIHYke2I4LlZFUlNJT059YCk7cmV0dXJuIEouZXJyb3IoRy5zdGFja3x8Ry5tZXNzYWdlKSwhMX1yZXR1cm4gV1skXT1RLEouZGVidWcoYEBvcGVudGVsZW1ldHJ5L2FwaTogUmVnaXN0ZXJlZCBhIGdsb2JhbCBmb3IgJHskfSB2JHtiOC5WRVJTSU9OfS5gKSwhMH1FMi5yZWdpc3Rlckdsb2JhbD1UeDtmdW5jdGlvbiB4eCgkKXt2YXIgUSxKO2xldCBZPShRPWQ3W3A3XSk9PT1udWxsfHxRPT09dm9pZCAwP3ZvaWQgMDpRLnZlcnNpb247aWYoIVl8fCEoMCx2eC5pc0NvbXBhdGlibGUpKFkpKXJldHVybjtyZXR1cm4oSj1kN1twN10pPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6SlskXX1FMi5nZXRHbG9iYWw9eHg7ZnVuY3Rpb24gZngoJCxRKXtRLmRlYnVnKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFVucmVnaXN0ZXJpbmcgYSBnbG9iYWwgZm9yICR7JH0gdiR7YjguVkVSU0lPTn0uYCk7bGV0IEo9ZDdbcDddO2lmKEopZGVsZXRlIEpbJF19RTIudW5yZWdpc3Rlckdsb2JhbD1meH0pO3ZhciB2Mj1JKChTMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUzIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7UzIuRGlhZ0NvbXBvbmVudExvZ2dlcj12b2lkIDA7dmFyIGh4PU8wKCk7Y2xhc3MgXzJ7Y29uc3RydWN0b3IoJCl7dGhpcy5fbmFtZXNwYWNlPSQubmFtZXNwYWNlfHxcIkRpYWdDb21wb25lbnRMb2dnZXJcIn1kZWJ1ZyguLi4kKXtyZXR1cm4gaTcoXCJkZWJ1Z1wiLHRoaXMuX25hbWVzcGFjZSwkKX1lcnJvciguLi4kKXtyZXR1cm4gaTcoXCJlcnJvclwiLHRoaXMuX25hbWVzcGFjZSwkKX1pbmZvKC4uLiQpe3JldHVybiBpNyhcImluZm9cIix0aGlzLl9uYW1lc3BhY2UsJCl9d2FybiguLi4kKXtyZXR1cm4gaTcoXCJ3YXJuXCIsdGhpcy5fbmFtZXNwYWNlLCQpfXZlcmJvc2UoLi4uJCl7cmV0dXJuIGk3KFwidmVyYm9zZVwiLHRoaXMuX25hbWVzcGFjZSwkKX19UzIuRGlhZ0NvbXBvbmVudExvZ2dlcj1fMjtmdW5jdGlvbiBpNygkLFEsSil7bGV0IFk9KDAsaHguZ2V0R2xvYmFsKShcImRpYWdcIik7aWYoIVkpcmV0dXJuO3JldHVybiBKLnVuc2hpZnQoUSksWVskXSguLi5KKX19KTt2YXIgajU9SSgoQzIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEMyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0MyLkRpYWdMb2dMZXZlbD12b2lkIDA7dmFyIHV4OyhmdW5jdGlvbigkKXskWyQuTk9ORT0wXT1cIk5PTkVcIiwkWyQuRVJST1I9MzBdPVwiRVJST1JcIiwkWyQuV0FSTj01MF09XCJXQVJOXCIsJFskLklORk89NjBdPVwiSU5GT1wiLCRbJC5ERUJVRz03MF09XCJERUJVR1wiLCRbJC5WRVJCT1NFPTgwXT1cIlZFUkJPU0VcIiwkWyQuQUxMPTk5OTldPVwiQUxMXCJ9KSh1eD1DMi5EaWFnTG9nTGV2ZWx8fChDMi5EaWFnTG9nTGV2ZWw9e30pKX0pO3ZhciBmMj1JKChUMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoVDIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7VDIuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyPXZvaWQgMDt2YXIgbDQ9ajUoKTtmdW5jdGlvbiBteCgkLFEpe2lmKCQ8bDQuRGlhZ0xvZ0xldmVsLk5PTkUpJD1sNC5EaWFnTG9nTGV2ZWwuTk9ORTtlbHNlIGlmKCQ+bDQuRGlhZ0xvZ0xldmVsLkFMTCkkPWw0LkRpYWdMb2dMZXZlbC5BTEw7UT1RfHx7fTtmdW5jdGlvbiBKKFksWCl7bGV0IFc9UVtZXTtpZih0eXBlb2YgVz09PVwiZnVuY3Rpb25cIiYmJD49WClyZXR1cm4gVy5iaW5kKFEpO3JldHVybiBmdW5jdGlvbigpe319cmV0dXJue2Vycm9yOkooXCJlcnJvclwiLGw0LkRpYWdMb2dMZXZlbC5FUlJPUiksd2FybjpKKFwid2FyblwiLGw0LkRpYWdMb2dMZXZlbC5XQVJOKSxpbmZvOkooXCJpbmZvXCIsbDQuRGlhZ0xvZ0xldmVsLklORk8pLGRlYnVnOkooXCJkZWJ1Z1wiLGw0LkRpYWdMb2dMZXZlbC5ERUJVRyksdmVyYm9zZTpKKFwidmVyYm9zZVwiLGw0LkRpYWdMb2dMZXZlbC5WRVJCT1NFKX19VDIuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyPW14fSk7dmFyIEQwPUkoKGcyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShnMixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnMi5EaWFnQVBJPXZvaWQgMDt2YXIgbHg9djIoKSxjeD1mMigpLHkyPWo1KCksQTU9TzAoKSxweD1cImRpYWdcIjtjbGFzcyBmVXtjb25zdHJ1Y3Rvcigpe2Z1bmN0aW9uICQoWSl7cmV0dXJuIGZ1bmN0aW9uKC4uLlgpe2xldCBXPSgwLEE1LmdldEdsb2JhbCkoXCJkaWFnXCIpO2lmKCFXKXJldHVybjtyZXR1cm4gV1tZXSguLi5YKX19bGV0IFE9dGhpcyxKPShZLFg9e2xvZ0xldmVsOnkyLkRpYWdMb2dMZXZlbC5JTkZPfSk9Pnt2YXIgVyxHLFU7aWYoWT09PVEpe2xldCBWPUVycm9yKFwiQ2Fubm90IHVzZSBkaWFnIGFzIHRoZSBsb2dnZXIgZm9yIGl0c2VsZi4gUGxlYXNlIHVzZSBhIERpYWdMb2dnZXIgaW1wbGVtZW50YXRpb24gbGlrZSBDb25zb2xlRGlhZ0xvZ2dlciBvciBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvblwiKTtyZXR1cm4gUS5lcnJvcigoVz1WLnN0YWNrKSE9PW51bGwmJlchPT12b2lkIDA/VzpWLm1lc3NhZ2UpLCExfWlmKHR5cGVvZiBYPT09XCJudW1iZXJcIilYPXtsb2dMZXZlbDpYfTtsZXQgSD0oMCxBNS5nZXRHbG9iYWwpKFwiZGlhZ1wiKSxxPSgwLGN4LmNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcikoKEc9WC5sb2dMZXZlbCkhPT1udWxsJiZHIT09dm9pZCAwP0c6eTIuRGlhZ0xvZ0xldmVsLklORk8sWSk7aWYoSCYmIVguc3VwcHJlc3NPdmVycmlkZU1lc3NhZ2Upe2xldCBWPShVPUVycm9yKCkuc3RhY2spIT09bnVsbCYmVSE9PXZvaWQgMD9VOlwiPGZhaWxlZCB0byBnZW5lcmF0ZSBzdGFja3RyYWNlPlwiO0gud2FybihgQ3VycmVudCBsb2dnZXIgd2lsbCBiZSBvdmVyd3JpdHRlbiBmcm9tICR7Vn1gKSxxLndhcm4oYEN1cnJlbnQgbG9nZ2VyIHdpbGwgb3ZlcndyaXRlIG9uZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZnJvbSAke1Z9YCl9cmV0dXJuKDAsQTUucmVnaXN0ZXJHbG9iYWwpKFwiZGlhZ1wiLHEsUSwhMCl9O1Euc2V0TG9nZ2VyPUosUS5kaXNhYmxlPSgpPT57KDAsQTUudW5yZWdpc3Rlckdsb2JhbCkocHgsUSl9LFEuY3JlYXRlQ29tcG9uZW50TG9nZ2VyPShZKT0+e3JldHVybiBuZXcgbHguRGlhZ0NvbXBvbmVudExvZ2dlcihZKX0sUS52ZXJib3NlPSQoXCJ2ZXJib3NlXCIpLFEuZGVidWc9JChcImRlYnVnXCIpLFEuaW5mbz0kKFwiaW5mb1wiKSxRLndhcm49JChcIndhcm5cIiksUS5lcnJvcj0kKFwiZXJyb3JcIil9c3RhdGljIGluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXRoaXMuX2luc3RhbmNlPW5ldyBmVTtyZXR1cm4gdGhpcy5faW5zdGFuY2V9fWcyLkRpYWdBUEk9ZlV9KTt2YXIgbDI9SSgodTIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHUyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3UyLkJhZ2dhZ2VJbXBsPXZvaWQgMDtjbGFzcyBfOHtjb25zdHJ1Y3RvcigkKXt0aGlzLl9lbnRyaWVzPSQ/bmV3IE1hcCgkKTpuZXcgTWFwfWdldEVudHJ5KCQpe2xldCBRPXRoaXMuX2VudHJpZXMuZ2V0KCQpO2lmKCFRKXJldHVybjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxRKX1nZXRBbGxFbnRyaWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fZW50cmllcy5lbnRyaWVzKCkpLm1hcCgoWyQsUV0pPT5bJCxRXSl9c2V0RW50cnkoJCxRKXtsZXQgSj1uZXcgXzgodGhpcy5fZW50cmllcyk7cmV0dXJuIEouX2VudHJpZXMuc2V0KCQsUSksSn1yZW1vdmVFbnRyeSgkKXtsZXQgUT1uZXcgXzgodGhpcy5fZW50cmllcyk7cmV0dXJuIFEuX2VudHJpZXMuZGVsZXRlKCQpLFF9cmVtb3ZlRW50cmllcyguLi4kKXtsZXQgUT1uZXcgXzgodGhpcy5fZW50cmllcyk7Zm9yKGxldCBKIG9mICQpUS5fZW50cmllcy5kZWxldGUoSik7cmV0dXJuIFF9Y2xlYXIoKXtyZXR1cm4gbmV3IF84fX11Mi5CYWdnYWdlSW1wbD1fOH0pO3ZhciBkMj1JKChjMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYzIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7YzIuYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2w9dm9pZCAwO2MyLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPVN5bWJvbChcIkJhZ2dhZ2VFbnRyeU1ldGFkYXRhXCIpfSk7dmFyIHlVPUkoKGkyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShpMixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtpMi5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9aTIuY3JlYXRlQmFnZ2FnZT12b2lkIDA7dmFyIGR4PUQwKCksaXg9bDIoKSxueD1kMigpLHJ4PWR4LkRpYWdBUEkuaW5zdGFuY2UoKTtmdW5jdGlvbiBveCgkPXt9KXtyZXR1cm4gbmV3IGl4LkJhZ2dhZ2VJbXBsKG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoJCkpKX1pMi5jcmVhdGVCYWdnYWdlPW94O2Z1bmN0aW9uIHR4KCQpe2lmKHR5cGVvZiAkIT09XCJzdHJpbmdcIilyeC5lcnJvcihgQ2Fubm90IGNyZWF0ZSBiYWdnYWdlIG1ldGFkYXRhIGZyb20gdW5rbm93biB0eXBlOiAke3R5cGVvZiAkfWApLCQ9XCJcIjtyZXR1cm57X19UWVBFX186bnguYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wsdG9TdHJpbmcoKXtyZXR1cm4gJH19fWkyLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz10eH0pO3ZhciBuNz1JKChyMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkocjIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7cjIuUk9PVF9DT05URVhUPXIyLmNyZWF0ZUNvbnRleHRLZXk9dm9pZCAwO2Z1bmN0aW9uIHN4KCQpe3JldHVybiBTeW1ib2wuZm9yKCQpfXIyLmNyZWF0ZUNvbnRleHRLZXk9c3g7Y2xhc3MgSTV7Y29uc3RydWN0b3IoJCl7bGV0IFE9dGhpcztRLl9jdXJyZW50Q29udGV4dD0kP25ldyBNYXAoJCk6bmV3IE1hcCxRLmdldFZhbHVlPShKKT0+US5fY3VycmVudENvbnRleHQuZ2V0KEopLFEuc2V0VmFsdWU9KEosWSk9PntsZXQgWD1uZXcgSTUoUS5fY3VycmVudENvbnRleHQpO3JldHVybiBYLl9jdXJyZW50Q29udGV4dC5zZXQoSixZKSxYfSxRLmRlbGV0ZVZhbHVlPShKKT0+e2xldCBZPW5ldyBJNShRLl9jdXJyZW50Q29udGV4dCk7cmV0dXJuIFkuX2N1cnJlbnRDb250ZXh0LmRlbGV0ZShKKSxZfX19cjIuUk9PVF9DT05URVhUPW5ldyBJNX0pO3ZhciBlMj1JKChhMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYTIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7YTIuRGlhZ0NvbnNvbGVMb2dnZXI9dm9pZCAwO3ZhciBnVT1be246XCJlcnJvclwiLGM6XCJlcnJvclwifSx7bjpcIndhcm5cIixjOlwid2FyblwifSx7bjpcImluZm9cIixjOlwiaW5mb1wifSx7bjpcImRlYnVnXCIsYzpcImRlYnVnXCJ9LHtuOlwidmVyYm9zZVwiLGM6XCJ0cmFjZVwifV07Y2xhc3MgdDJ7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiAkKFEpe3JldHVybiBmdW5jdGlvbiguLi5KKXtpZihjb25zb2xlKXtsZXQgWT1jb25zb2xlW1FdO2lmKHR5cGVvZiBZIT09XCJmdW5jdGlvblwiKVk9Y29uc29sZS5sb2c7aWYodHlwZW9mIFk9PT1cImZ1bmN0aW9uXCIpcmV0dXJuIFkuYXBwbHkoY29uc29sZSxKKX19fWZvcihsZXQgUT0wO1E8Z1UubGVuZ3RoO1ErKyl0aGlzW2dVW1FdLm5dPSQoZ1VbUV0uYyl9fWEyLkRpYWdDb25zb2xlTG9nZ2VyPXQyfSk7dmFyIG5VPUkoKCREKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTskRC5jcmVhdGVOb29wTWV0ZXI9JEQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9JEQuTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQz0kRC5OT09QX09CU0VSVkFCTEVfQ09VTlRFUl9NRVRSSUM9JEQuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPSRELk5PT1BfSElTVE9HUkFNX01FVFJJQz0kRC5OT09QX0dBVUdFX01FVFJJQz0kRC5OT09QX0NPVU5URVJfTUVUUklDPSRELk5PT1BfTUVURVI9JEQuTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljPSRELk5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWM9JEQuTm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljPSRELk5vb3BPYnNlcnZhYmxlTWV0cmljPSRELk5vb3BIaXN0b2dyYW1NZXRyaWM9JEQuTm9vcEdhdWdlTWV0cmljPSRELk5vb3BVcERvd25Db3VudGVyTWV0cmljPSRELk5vb3BDb3VudGVyTWV0cmljPSRELk5vb3BNZXRyaWM9JEQuTm9vcE1ldGVyPXZvaWQgMDtjbGFzcyBoVXtjb25zdHJ1Y3Rvcigpe31jcmVhdGVHYXVnZSgkLFEpe3JldHVybiAkRC5OT09QX0dBVUdFX01FVFJJQ31jcmVhdGVIaXN0b2dyYW0oJCxRKXtyZXR1cm4gJEQuTk9PUF9ISVNUT0dSQU1fTUVUUklDfWNyZWF0ZUNvdW50ZXIoJCxRKXtyZXR1cm4gJEQuTk9PUF9DT1VOVEVSX01FVFJJQ31jcmVhdGVVcERvd25Db3VudGVyKCQsUSl7cmV0dXJuICRELk5PT1BfVVBfRE9XTl9DT1VOVEVSX01FVFJJQ31jcmVhdGVPYnNlcnZhYmxlR2F1Z2UoJCxRKXtyZXR1cm4gJEQuTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQ31jcmVhdGVPYnNlcnZhYmxlQ291bnRlcigkLFEpe3JldHVybiAkRC5OT09QX09CU0VSVkFCTEVfQ09VTlRFUl9NRVRSSUN9Y3JlYXRlT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXIoJCxRKXtyZXR1cm4gJEQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUN9YWRkQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soJCxRKXt9cmVtb3ZlQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soJCl7fX0kRC5Ob29wTWV0ZXI9aFU7Y2xhc3MgUzh7fSRELk5vb3BNZXRyaWM9Uzg7Y2xhc3MgdVUgZXh0ZW5kcyBTOHthZGQoJCxRKXt9fSRELk5vb3BDb3VudGVyTWV0cmljPXVVO2NsYXNzIG1VIGV4dGVuZHMgUzh7YWRkKCQsUSl7fX0kRC5Ob29wVXBEb3duQ291bnRlck1ldHJpYz1tVTtjbGFzcyBsVSBleHRlbmRzIFM4e3JlY29yZCgkLFEpe319JEQuTm9vcEdhdWdlTWV0cmljPWxVO2NsYXNzIGNVIGV4dGVuZHMgUzh7cmVjb3JkKCQsUSl7fX0kRC5Ob29wSGlzdG9ncmFtTWV0cmljPWNVO2NsYXNzIHI3e2FkZENhbGxiYWNrKCQpe31yZW1vdmVDYWxsYmFjaygkKXt9fSRELk5vb3BPYnNlcnZhYmxlTWV0cmljPXI3O2NsYXNzIHBVIGV4dGVuZHMgcjd7fSRELk5vb3BPYnNlcnZhYmxlQ291bnRlck1ldHJpYz1wVTtjbGFzcyBkVSBleHRlbmRzIHI3e30kRC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPWRVO2NsYXNzIGlVIGV4dGVuZHMgcjd7fSRELk5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYz1pVTskRC5OT09QX01FVEVSPW5ldyBoVTskRC5OT09QX0NPVU5URVJfTUVUUklDPW5ldyB1VTskRC5OT09QX0dBVUdFX01FVFJJQz1uZXcgbFU7JEQuTk9PUF9ISVNUT0dSQU1fTUVUUklDPW5ldyBjVTskRC5OT09QX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9bmV3IG1VOyRELk5PT1BfT0JTRVJWQUJMRV9DT1VOVEVSX01FVFJJQz1uZXcgcFU7JEQuTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQz1uZXcgZFU7JEQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9bmV3IGlVO2Z1bmN0aW9uICRmKCl7cmV0dXJuICRELk5PT1BfTUVURVJ9JEQuY3JlYXRlTm9vcE1ldGVyPSRmfSk7dmFyIFZEPUkoKHFEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShxRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtxRC5WYWx1ZVR5cGU9dm9pZCAwO3ZhciBWZjsoZnVuY3Rpb24oJCl7JFskLklOVD0wXT1cIklOVFwiLCRbJC5ET1VCTEU9MV09XCJET1VCTEVcIn0pKFZmPXFELlZhbHVlVHlwZXx8KHFELlZhbHVlVHlwZT17fSkpfSk7dmFyIG9VPUkoKEJEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShCRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtCRC5kZWZhdWx0VGV4dE1hcFNldHRlcj1CRC5kZWZhdWx0VGV4dE1hcEdldHRlcj12b2lkIDA7QkQuZGVmYXVsdFRleHRNYXBHZXR0ZXI9e2dldCgkLFEpe2lmKCQ9PW51bGwpcmV0dXJuO3JldHVybiAkW1FdfSxrZXlzKCQpe2lmKCQ9PW51bGwpcmV0dXJuW107cmV0dXJuIE9iamVjdC5rZXlzKCQpfX07QkQuZGVmYXVsdFRleHRNYXBTZXR0ZXI9e3NldCgkLFEsSil7aWYoJD09bnVsbClyZXR1cm47JFtRXT1KfX19KTt2YXIgREQ9SSgod0QpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHdELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3dELk5vb3BDb250ZXh0TWFuYWdlcj12b2lkIDA7dmFyIHpmPW43KCk7Y2xhc3MgTkR7YWN0aXZlKCl7cmV0dXJuIHpmLlJPT1RfQ09OVEVYVH13aXRoKCQsUSxKLC4uLlkpe3JldHVybiBRLmNhbGwoSiwuLi5ZKX1iaW5kKCQsUSl7cmV0dXJuIFF9ZW5hYmxlKCl7cmV0dXJuIHRoaXN9ZGlzYWJsZSgpe3JldHVybiB0aGlzfX13RC5Ob29wQ29udGV4dE1hbmFnZXI9TkR9KTt2YXIgbzc9SSgoWkQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFpELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1pELkNvbnRleHRBUEk9dm9pZCAwO3ZhciBOZj1ERCgpLHRVPU8wKCksRkQ9RDAoKSxhVT1cImNvbnRleHRcIix3Zj1uZXcgTmYuTm9vcENvbnRleHRNYW5hZ2VyO2NsYXNzIHNVe2NvbnN0cnVjdG9yKCl7fXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl0aGlzLl9pbnN0YW5jZT1uZXcgc1U7cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbENvbnRleHRNYW5hZ2VyKCQpe3JldHVybigwLHRVLnJlZ2lzdGVyR2xvYmFsKShhVSwkLEZELkRpYWdBUEkuaW5zdGFuY2UoKSl9YWN0aXZlKCl7cmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYWN0aXZlKCl9d2l0aCgkLFEsSiwuLi5ZKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS53aXRoKCQsUSxKLC4uLlkpfWJpbmQoJCxRKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5iaW5kKCQsUSl9X2dldENvbnRleHRNYW5hZ2VyKCl7cmV0dXJuKDAsdFUuZ2V0R2xvYmFsKShhVSl8fHdmfWRpc2FibGUoKXt0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmRpc2FibGUoKSwoMCx0VS51bnJlZ2lzdGVyR2xvYmFsKShhVSxGRC5EaWFnQVBJLmluc3RhbmNlKCkpfX1aRC5Db250ZXh0QVBJPXNVfSk7dmFyICRIPUkoKExEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShMRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtMRC5UcmFjZUZsYWdzPXZvaWQgMDt2YXIgT2Y7KGZ1bmN0aW9uKCQpeyRbJC5OT05FPTBdPVwiTk9ORVwiLCRbJC5TQU1QTEVEPTFdPVwiU0FNUExFRFwifSkoT2Y9TEQuVHJhY2VGbGFnc3x8KExELlRyYWNlRmxhZ3M9e30pKX0pO3ZhciBSNT1JKChqRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoakQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7akQuSU5WQUxJRF9TUEFOX0NPTlRFWFQ9akQuSU5WQUxJRF9UUkFDRUlEPWpELklOVkFMSURfU1BBTklEPXZvaWQgMDt2YXIgRGY9JEgoKTtqRC5JTlZBTElEX1NQQU5JRD1cIjAwMDAwMDAwMDAwMDAwMDBcIjtqRC5JTlZBTElEX1RSQUNFSUQ9XCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiO2pELklOVkFMSURfU1BBTl9DT05URVhUPXt0cmFjZUlkOmpELklOVkFMSURfVFJBQ0VJRCxzcGFuSWQ6akQuSU5WQUxJRF9TUEFOSUQsdHJhY2VGbGFnczpEZi5UcmFjZUZsYWdzLk5PTkV9fSk7dmFyIFA1PUkoKEVEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShFRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtFRC5Ob25SZWNvcmRpbmdTcGFuPXZvaWQgMDt2YXIgRmY9UjUoKTtjbGFzcyBQRHtjb25zdHJ1Y3RvcigkPUZmLklOVkFMSURfU1BBTl9DT05URVhUKXt0aGlzLl9zcGFuQ29udGV4dD0kfXNwYW5Db250ZXh0KCl7cmV0dXJuIHRoaXMuX3NwYW5Db250ZXh0fXNldEF0dHJpYnV0ZSgkLFEpe3JldHVybiB0aGlzfXNldEF0dHJpYnV0ZXMoJCl7cmV0dXJuIHRoaXN9YWRkRXZlbnQoJCxRKXtyZXR1cm4gdGhpc31hZGRMaW5rKCQpe3JldHVybiB0aGlzfWFkZExpbmtzKCQpe3JldHVybiB0aGlzfXNldFN0YXR1cygkKXtyZXR1cm4gdGhpc311cGRhdGVOYW1lKCQpe3JldHVybiB0aGlzfWVuZCgkKXt9aXNSZWNvcmRpbmcoKXtyZXR1cm4hMX1yZWNvcmRFeGNlcHRpb24oJCxRKXt9fUVELk5vblJlY29yZGluZ1NwYW49UER9KTt2YXIgWEg9SSgoU0QpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFNELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1NELmdldFNwYW5Db250ZXh0PVNELnNldFNwYW5Db250ZXh0PVNELmRlbGV0ZVNwYW49U0Quc2V0U3Bhbj1TRC5nZXRBY3RpdmVTcGFuPVNELmdldFNwYW49dm9pZCAwO3ZhciBaZj1uNygpLE1mPVA1KCksTGY9bzcoKSxRSD0oMCxaZi5jcmVhdGVDb250ZXh0S2V5KShcIk9wZW5UZWxlbWV0cnkgQ29udGV4dCBLZXkgU1BBTlwiKTtmdW5jdGlvbiBKSCgkKXtyZXR1cm4gJC5nZXRWYWx1ZShRSCl8fHZvaWQgMH1TRC5nZXRTcGFuPUpIO2Z1bmN0aW9uIGpmKCl7cmV0dXJuIEpIKExmLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKS5hY3RpdmUoKSl9U0QuZ2V0QWN0aXZlU3Bhbj1qZjtmdW5jdGlvbiBfRCgkLFEpe3JldHVybiAkLnNldFZhbHVlKFFILFEpfVNELnNldFNwYW49X0Q7ZnVuY3Rpb24gQWYoJCl7cmV0dXJuICQuZGVsZXRlVmFsdWUoUUgpfVNELmRlbGV0ZVNwYW49QWY7ZnVuY3Rpb24gSWYoJCxRKXtyZXR1cm4gX0QoJCxuZXcgTWYuTm9uUmVjb3JkaW5nU3BhbihRKSl9U0Quc2V0U3BhbkNvbnRleHQ9SWY7ZnVuY3Rpb24gUmYoJCl7dmFyIFE7cmV0dXJuKFE9SkgoJCkpPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5zcGFuQ29udGV4dCgpfVNELmdldFNwYW5Db250ZXh0PVJmfSk7dmFyIEU1PUkoKHhEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh4RCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt4RC53cmFwU3BhbkNvbnRleHQ9eEQuaXNTcGFuQ29udGV4dFZhbGlkPXhELmlzVmFsaWRTcGFuSWQ9eEQuaXNWYWxpZFRyYWNlSWQ9dm9pZCAwO3ZhciB2RD1SNSgpLGtmPVA1KCksdmY9L14oWzAtOWEtZl17MzJ9KSQvaSxDZj0vXlswLTlhLWZdezE2fSQvaTtmdW5jdGlvbiBDRCgkKXtyZXR1cm4gdmYudGVzdCgkKSYmJCE9PXZELklOVkFMSURfVFJBQ0VJRH14RC5pc1ZhbGlkVHJhY2VJZD1DRDtmdW5jdGlvbiBURCgkKXtyZXR1cm4gQ2YudGVzdCgkKSYmJCE9PXZELklOVkFMSURfU1BBTklEfXhELmlzVmFsaWRTcGFuSWQ9VEQ7ZnVuY3Rpb24gVGYoJCl7cmV0dXJuIENEKCQudHJhY2VJZCkmJlREKCQuc3BhbklkKX14RC5pc1NwYW5Db250ZXh0VmFsaWQ9VGY7ZnVuY3Rpb24geGYoJCl7cmV0dXJuIG5ldyBrZi5Ob25SZWNvcmRpbmdTcGFuKCQpfXhELndyYXBTcGFuQ29udGV4dD14Zn0pO3ZhciBHSD1JKChoRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoaEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7aEQuTm9vcFRyYWNlcj12b2lkIDA7dmFyIGhmPW83KCkseUQ9WEgoKSxZSD1QNSgpLHVmPUU1KCksV0g9aGYuQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpO2NsYXNzIGdEe3N0YXJ0U3BhbigkLFEsSj1XSC5hY3RpdmUoKSl7aWYoQm9vbGVhbihRPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5yb290KSlyZXR1cm4gbmV3IFlILk5vblJlY29yZGluZ1NwYW47bGV0IFg9SiYmKDAseUQuZ2V0U3BhbkNvbnRleHQpKEopO2lmKG1mKFgpJiYoMCx1Zi5pc1NwYW5Db250ZXh0VmFsaWQpKFgpKXJldHVybiBuZXcgWUguTm9uUmVjb3JkaW5nU3BhbihYKTtlbHNlIHJldHVybiBuZXcgWUguTm9uUmVjb3JkaW5nU3Bhbn1zdGFydEFjdGl2ZVNwYW4oJCxRLEosWSl7bGV0IFgsVyxHO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm47ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPT09MilHPVE7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPT09MylYPVEsRz1KO2Vsc2UgWD1RLFc9SixHPVk7bGV0IFU9VyE9PW51bGwmJlchPT12b2lkIDA/VzpXSC5hY3RpdmUoKSxIPXRoaXMuc3RhcnRTcGFuKCQsWCxVKSxxPSgwLHlELnNldFNwYW4pKFUsSCk7cmV0dXJuIFdILndpdGgocSxHLHZvaWQgMCxIKX19aEQuTm9vcFRyYWNlcj1nRDtmdW5jdGlvbiBtZigkKXtyZXR1cm4gdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZ0eXBlb2YgJC5zcGFuSWQ9PT1cInN0cmluZ1wiJiZ0eXBlb2YgJC50cmFjZUlkPT09XCJzdHJpbmdcIiYmdHlwZW9mICQudHJhY2VGbGFncz09PVwibnVtYmVyXCJ9fSk7dmFyIFVIPUkoKGxEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShsRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtsRC5Qcm94eVRyYWNlcj12b2lkIDA7dmFyIGxmPUdIKCksY2Y9bmV3IGxmLk5vb3BUcmFjZXI7Y2xhc3MgbUR7Y29uc3RydWN0b3IoJCxRLEosWSl7dGhpcy5fcHJvdmlkZXI9JCx0aGlzLm5hbWU9USx0aGlzLnZlcnNpb249Six0aGlzLm9wdGlvbnM9WX1zdGFydFNwYW4oJCxRLEope3JldHVybiB0aGlzLl9nZXRUcmFjZXIoKS5zdGFydFNwYW4oJCxRLEopfXN0YXJ0QWN0aXZlU3BhbigkLFEsSixZKXtsZXQgWD10aGlzLl9nZXRUcmFjZXIoKTtyZXR1cm4gUmVmbGVjdC5hcHBseShYLnN0YXJ0QWN0aXZlU3BhbixYLGFyZ3VtZW50cyl9X2dldFRyYWNlcigpe2lmKHRoaXMuX2RlbGVnYXRlKXJldHVybiB0aGlzLl9kZWxlZ2F0ZTtsZXQgJD10aGlzLl9wcm92aWRlci5nZXREZWxlZ2F0ZVRyYWNlcih0aGlzLm5hbWUsdGhpcy52ZXJzaW9uLHRoaXMub3B0aW9ucyk7aWYoISQpcmV0dXJuIGNmO3JldHVybiB0aGlzLl9kZWxlZ2F0ZT0kLHRoaXMuX2RlbGVnYXRlfX1sRC5Qcm94eVRyYWNlcj1tRH0pO3ZhciBuRD1JKChkRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZEQuTm9vcFRyYWNlclByb3ZpZGVyPXZvaWQgMDt2YXIgcGY9R0goKTtjbGFzcyBwRHtnZXRUcmFjZXIoJCxRLEope3JldHVybiBuZXcgcGYuTm9vcFRyYWNlcn19ZEQuTm9vcFRyYWNlclByb3ZpZGVyPXBEfSk7dmFyIEhIPUkoKG9EKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShvRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtvRC5Qcm94eVRyYWNlclByb3ZpZGVyPXZvaWQgMDt2YXIgZGY9VUgoKSxuZj1uRCgpLHJmPW5ldyBuZi5Ob29wVHJhY2VyUHJvdmlkZXI7Y2xhc3MgckR7Z2V0VHJhY2VyKCQsUSxKKXt2YXIgWTtyZXR1cm4oWT10aGlzLmdldERlbGVnYXRlVHJhY2VyKCQsUSxKKSkhPT1udWxsJiZZIT09dm9pZCAwP1k6bmV3IGRmLlByb3h5VHJhY2VyKHRoaXMsJCxRLEopfWdldERlbGVnYXRlKCl7dmFyICQ7cmV0dXJuKCQ9dGhpcy5fZGVsZWdhdGUpIT09bnVsbCYmJCE9PXZvaWQgMD8kOnJmfXNldERlbGVnYXRlKCQpe3RoaXMuX2RlbGVnYXRlPSR9Z2V0RGVsZWdhdGVUcmFjZXIoJCxRLEope3ZhciBZO3JldHVybihZPXRoaXMuX2RlbGVnYXRlKT09PW51bGx8fFk9PT12b2lkIDA/dm9pZCAwOlkuZ2V0VHJhY2VyKCQsUSxKKX19b0QuUHJveHlUcmFjZXJQcm92aWRlcj1yRH0pO3ZhciBzRD1JKChhRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYUQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7YUQuU2FtcGxpbmdEZWNpc2lvbj12b2lkIDA7dmFyIG9mOyhmdW5jdGlvbigkKXskWyQuTk9UX1JFQ09SRD0wXT1cIk5PVF9SRUNPUkRcIiwkWyQuUkVDT1JEPTFdPVwiUkVDT1JEXCIsJFskLlJFQ09SRF9BTkRfU0FNUExFRD0yXT1cIlJFQ09SRF9BTkRfU0FNUExFRFwifSkob2Y9YUQuU2FtcGxpbmdEZWNpc2lvbnx8KGFELlNhbXBsaW5nRGVjaXNpb249e30pKX0pO3ZhciAkRj1JKChlRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZUQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZUQuU3BhbktpbmQ9dm9pZCAwO3ZhciB0ZjsoZnVuY3Rpb24oJCl7JFskLklOVEVSTkFMPTBdPVwiSU5URVJOQUxcIiwkWyQuU0VSVkVSPTFdPVwiU0VSVkVSXCIsJFskLkNMSUVOVD0yXT1cIkNMSUVOVFwiLCRbJC5QUk9EVUNFUj0zXT1cIlBST0RVQ0VSXCIsJFskLkNPTlNVTUVSPTRdPVwiQ09OU1VNRVJcIn0pKHRmPWVELlNwYW5LaW5kfHwoZUQuU3BhbktpbmQ9e30pKX0pO3ZhciBKRj1JKChRRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUUYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7UUYuU3BhblN0YXR1c0NvZGU9dm9pZCAwO3ZhciBhZjsoZnVuY3Rpb24oJCl7JFskLlVOU0VUPTBdPVwiVU5TRVRcIiwkWyQuT0s9MV09XCJPS1wiLCRbJC5FUlJPUj0yXT1cIkVSUk9SXCJ9KShhZj1RRi5TcGFuU3RhdHVzQ29kZXx8KFFGLlNwYW5TdGF0dXNDb2RlPXt9KSl9KTt2YXIgV0Y9SSgoWEYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFhGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1hGLnZhbGlkYXRlVmFsdWU9WEYudmFsaWRhdGVLZXk9dm9pZCAwO3ZhciBCSD1cIltfMC05YS16LSovXVwiLHNmPWBbYS16XSR7Qkh9ezAsMjU1fWAsZWY9YFthLXowLTldJHtCSH17MCwyNDB9QFthLXpdJHtCSH17MCwxM31gLCR5PW5ldyBSZWdFeHAoYF4oPzoke3NmfXwke2VmfSkkYCksUXk9L15bIC1+XXswLDI1NX1bIS1+XSQvLEp5PS8sfD0vO2Z1bmN0aW9uIFh5KCQpe3JldHVybiAkeS50ZXN0KCQpfVhGLnZhbGlkYXRlS2V5PVh5O2Z1bmN0aW9uIFl5KCQpe3JldHVybiBReS50ZXN0KCQpJiYhSnkudGVzdCgkKX1YRi52YWxpZGF0ZVZhbHVlPVl5fSk7dmFyIEJGPUkoKHFGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShxRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtxRi5UcmFjZVN0YXRlSW1wbD12b2lkIDA7dmFyIEdGPVdGKCksVUY9MzIsR3k9NTEyLEhGPVwiLFwiLEtGPVwiPVwiO2NsYXNzIHpIe2NvbnN0cnVjdG9yKCQpe2lmKHRoaXMuX2ludGVybmFsU3RhdGU9bmV3IE1hcCwkKXRoaXMuX3BhcnNlKCQpfXNldCgkLFEpe2xldCBKPXRoaXMuX2Nsb25lKCk7aWYoSi5faW50ZXJuYWxTdGF0ZS5oYXMoJCkpSi5faW50ZXJuYWxTdGF0ZS5kZWxldGUoJCk7cmV0dXJuIEouX2ludGVybmFsU3RhdGUuc2V0KCQsUSksSn11bnNldCgkKXtsZXQgUT10aGlzLl9jbG9uZSgpO3JldHVybiBRLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZSgkKSxRfWdldCgkKXtyZXR1cm4gdGhpcy5faW50ZXJuYWxTdGF0ZS5nZXQoJCl9c2VyaWFsaXplKCl7cmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoKCQsUSk9PntyZXR1cm4gJC5wdXNoKFErS0YrdGhpcy5nZXQoUSkpLCR9LFtdKS5qb2luKEhGKX1fcGFyc2UoJCl7aWYoJC5sZW5ndGg+R3kpcmV0dXJuO2lmKHRoaXMuX2ludGVybmFsU3RhdGU9JC5zcGxpdChIRikucmV2ZXJzZSgpLnJlZHVjZSgoUSxKKT0+e2xldCBZPUoudHJpbSgpLFg9WS5pbmRleE9mKEtGKTtpZihYIT09LTEpe2xldCBXPVkuc2xpY2UoMCxYKSxHPVkuc2xpY2UoWCsxLEoubGVuZ3RoKTtpZigoMCxHRi52YWxpZGF0ZUtleSkoVykmJigwLEdGLnZhbGlkYXRlVmFsdWUpKEcpKVEuc2V0KFcsRyl9cmV0dXJuIFF9LG5ldyBNYXApLHRoaXMuX2ludGVybmFsU3RhdGUuc2l6ZT5VRil0aGlzLl9pbnRlcm5hbFN0YXRlPW5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsVUYpKX1fa2V5cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCl9X2Nsb25lKCl7bGV0ICQ9bmV3IHpIO3JldHVybiAkLl9pbnRlcm5hbFN0YXRlPW5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksJH19cUYuVHJhY2VTdGF0ZUltcGw9ekh9KTt2YXIgd0Y9SSgoekYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHpGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3pGLmNyZWF0ZVRyYWNlU3RhdGU9dm9pZCAwO3ZhciBVeT1CRigpO2Z1bmN0aW9uIEh5KCQpe3JldHVybiBuZXcgVXkuVHJhY2VTdGF0ZUltcGwoJCl9ekYuY3JlYXRlVHJhY2VTdGF0ZT1IeX0pO3ZhciBGRj1JKChPRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoT0YsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7T0YuY29udGV4dD12b2lkIDA7dmFyIEt5PW83KCk7T0YuY29udGV4dD1LeS5Db250ZXh0QVBJLmdldEluc3RhbmNlKCl9KTt2YXIgTEY9SSgoWkYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFpGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1pGLmRpYWc9dm9pZCAwO3ZhciBxeT1EMCgpO1pGLmRpYWc9cXkuRGlhZ0FQSS5pbnN0YW5jZSgpfSk7dmFyIElGPUkoKGpGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShqRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtqRi5OT09QX01FVEVSX1BST1ZJREVSPWpGLk5vb3BNZXRlclByb3ZpZGVyPXZvaWQgMDt2YXIgVnk9blUoKTtjbGFzcyBOSHtnZXRNZXRlcigkLFEsSil7cmV0dXJuIFZ5Lk5PT1BfTUVURVJ9fWpGLk5vb3BNZXRlclByb3ZpZGVyPU5IO2pGLk5PT1BfTUVURVJfUFJPVklERVI9bmV3IE5IfSk7dmFyIGJGPUkoKFBGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShQRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtQRi5NZXRyaWNzQVBJPXZvaWQgMDt2YXIgenk9SUYoKSx3SD1PMCgpLFJGPUQwKCksT0g9XCJtZXRyaWNzXCI7Y2xhc3MgREh7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXRoaXMuX2luc3RhbmNlPW5ldyBESDtyZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsTWV0ZXJQcm92aWRlcigkKXtyZXR1cm4oMCx3SC5yZWdpc3Rlckdsb2JhbCkoT0gsJCxSRi5EaWFnQVBJLmluc3RhbmNlKCkpfWdldE1ldGVyUHJvdmlkZXIoKXtyZXR1cm4oMCx3SC5nZXRHbG9iYWwpKE9IKXx8enkuTk9PUF9NRVRFUl9QUk9WSURFUn1nZXRNZXRlcigkLFEsSil7cmV0dXJuIHRoaXMuZ2V0TWV0ZXJQcm92aWRlcigpLmdldE1ldGVyKCQsUSxKKX1kaXNhYmxlKCl7KDAsd0gudW5yZWdpc3Rlckdsb2JhbCkoT0gsUkYuRGlhZ0FQSS5pbnN0YW5jZSgpKX19UEYuTWV0cmljc0FQST1ESH0pO3ZhciBrRj1JKChfRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoX0YsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7X0YubWV0cmljcz12b2lkIDA7dmFyIE55PWJGKCk7X0YubWV0cmljcz1OeS5NZXRyaWNzQVBJLmdldEluc3RhbmNlKCl9KTt2YXIgeEY9SSgoQ0YpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KENGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0NGLk5vb3BUZXh0TWFwUHJvcGFnYXRvcj12b2lkIDA7Y2xhc3MgdkZ7aW5qZWN0KCQsUSl7fWV4dHJhY3QoJCxRKXtyZXR1cm4gJH1maWVsZHMoKXtyZXR1cm5bXX19Q0YuTm9vcFRleHRNYXBQcm9wYWdhdG9yPXZGfSk7dmFyIGhGPUkoKHlGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5RixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5Ri5kZWxldGVCYWdnYWdlPXlGLnNldEJhZ2dhZ2U9eUYuZ2V0QWN0aXZlQmFnZ2FnZT15Ri5nZXRCYWdnYWdlPXZvaWQgMDt2YXIgd3k9bzcoKSxPeT1uNygpLEZIPSgwLE95LmNyZWF0ZUNvbnRleHRLZXkpKFwiT3BlblRlbGVtZXRyeSBCYWdnYWdlIEtleVwiKTtmdW5jdGlvbiBmRigkKXtyZXR1cm4gJC5nZXRWYWx1ZShGSCl8fHZvaWQgMH15Ri5nZXRCYWdnYWdlPWZGO2Z1bmN0aW9uIER5KCl7cmV0dXJuIGZGKHd5LkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKS5hY3RpdmUoKSl9eUYuZ2V0QWN0aXZlQmFnZ2FnZT1EeTtmdW5jdGlvbiBGeSgkLFEpe3JldHVybiAkLnNldFZhbHVlKEZILFEpfXlGLnNldEJhZ2dhZ2U9Rnk7ZnVuY3Rpb24gWnkoJCl7cmV0dXJuICQuZGVsZXRlVmFsdWUoRkgpfXlGLmRlbGV0ZUJhZ2dhZ2U9Wnl9KTt2YXIgcEY9SSgobEYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGxGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2xGLlByb3BhZ2F0aW9uQVBJPXZvaWQgMDt2YXIgWkg9TzAoKSxBeT14RigpLHVGPW9VKCksYjU9aEYoKSxJeT15VSgpLG1GPUQwKCksTUg9XCJwcm9wYWdhdGlvblwiLFJ5PW5ldyBBeS5Ob29wVGV4dE1hcFByb3BhZ2F0b3I7Y2xhc3MgTEh7Y29uc3RydWN0b3IoKXt0aGlzLmNyZWF0ZUJhZ2dhZ2U9SXkuY3JlYXRlQmFnZ2FnZSx0aGlzLmdldEJhZ2dhZ2U9YjUuZ2V0QmFnZ2FnZSx0aGlzLmdldEFjdGl2ZUJhZ2dhZ2U9YjUuZ2V0QWN0aXZlQmFnZ2FnZSx0aGlzLnNldEJhZ2dhZ2U9YjUuc2V0QmFnZ2FnZSx0aGlzLmRlbGV0ZUJhZ2dhZ2U9YjUuZGVsZXRlQmFnZ2FnZX1zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2UpdGhpcy5faW5zdGFuY2U9bmV3IExIO3JldHVybiB0aGlzLl9pbnN0YW5jZX1zZXRHbG9iYWxQcm9wYWdhdG9yKCQpe3JldHVybigwLFpILnJlZ2lzdGVyR2xvYmFsKShNSCwkLG1GLkRpYWdBUEkuaW5zdGFuY2UoKSl9aW5qZWN0KCQsUSxKPXVGLmRlZmF1bHRUZXh0TWFwU2V0dGVyKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdCgkLFEsSil9ZXh0cmFjdCgkLFEsSj11Ri5kZWZhdWx0VGV4dE1hcEdldHRlcil7cmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5leHRyYWN0KCQsUSxKKX1maWVsZHMoKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmZpZWxkcygpfWRpc2FibGUoKXsoMCxaSC51bnJlZ2lzdGVyR2xvYmFsKShNSCxtRi5EaWFnQVBJLmluc3RhbmNlKCkpfV9nZXRHbG9iYWxQcm9wYWdhdG9yKCl7cmV0dXJuKDAsWkguZ2V0R2xvYmFsKShNSCl8fFJ5fX1sRi5Qcm9wYWdhdGlvbkFQST1MSH0pO3ZhciBuRj1JKChkRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZEYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZEYucHJvcGFnYXRpb249dm9pZCAwO3ZhciBQeT1wRigpO2RGLnByb3BhZ2F0aW9uPVB5LlByb3BhZ2F0aW9uQVBJLmdldEluc3RhbmNlKCl9KTt2YXIgZUY9SSgoYUYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGFGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2FGLlRyYWNlQVBJPXZvaWQgMDt2YXIgakg9TzAoKSxyRj1ISCgpLG9GPUU1KCksazg9WEgoKSx0Rj1EMCgpLEFIPVwidHJhY2VcIjtjbGFzcyBJSHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXI9bmV3IHJGLlByb3h5VHJhY2VyUHJvdmlkZXIsdGhpcy53cmFwU3BhbkNvbnRleHQ9b0Yud3JhcFNwYW5Db250ZXh0LHRoaXMuaXNTcGFuQ29udGV4dFZhbGlkPW9GLmlzU3BhbkNvbnRleHRWYWxpZCx0aGlzLmRlbGV0ZVNwYW49azguZGVsZXRlU3Bhbix0aGlzLmdldFNwYW49azguZ2V0U3Bhbix0aGlzLmdldEFjdGl2ZVNwYW49azguZ2V0QWN0aXZlU3Bhbix0aGlzLmdldFNwYW5Db250ZXh0PWs4LmdldFNwYW5Db250ZXh0LHRoaXMuc2V0U3Bhbj1rOC5zZXRTcGFuLHRoaXMuc2V0U3BhbkNvbnRleHQ9azguc2V0U3BhbkNvbnRleHR9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXRoaXMuX2luc3RhbmNlPW5ldyBJSDtyZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIoJCl7bGV0IFE9KDAsakgucmVnaXN0ZXJHbG9iYWwpKEFILHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIsdEYuRGlhZ0FQSS5pbnN0YW5jZSgpKTtpZihRKXRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIuc2V0RGVsZWdhdGUoJCk7cmV0dXJuIFF9Z2V0VHJhY2VyUHJvdmlkZXIoKXtyZXR1cm4oMCxqSC5nZXRHbG9iYWwpKEFIKXx8dGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcn1nZXRUcmFjZXIoJCxRKXtyZXR1cm4gdGhpcy5nZXRUcmFjZXJQcm92aWRlcigpLmdldFRyYWNlcigkLFEpfWRpc2FibGUoKXsoMCxqSC51bnJlZ2lzdGVyR2xvYmFsKShBSCx0Ri5EaWFnQVBJLmluc3RhbmNlKCkpLHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXI9bmV3IHJGLlByb3h5VHJhY2VyUHJvdmlkZXJ9fWFGLlRyYWNlQVBJPUlIfSk7dmFyIEpaPUkoKCRaKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkWixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTskWi50cmFjZT12b2lkIDA7dmFyIEV5PWVGKCk7JFoudHJhY2U9RXkuVHJhY2VBUEkuZ2V0SW5zdGFuY2UoKX0pO3ZhciBFSD1JKChGJCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7RiQudHJhY2U9RiQucHJvcGFnYXRpb249RiQubWV0cmljcz1GJC5kaWFnPUYkLmNvbnRleHQ9RiQuSU5WQUxJRF9TUEFOX0NPTlRFWFQ9RiQuSU5WQUxJRF9UUkFDRUlEPUYkLklOVkFMSURfU1BBTklEPUYkLmlzVmFsaWRTcGFuSWQ9RiQuaXNWYWxpZFRyYWNlSWQ9RiQuaXNTcGFuQ29udGV4dFZhbGlkPUYkLmNyZWF0ZVRyYWNlU3RhdGU9RiQuVHJhY2VGbGFncz1GJC5TcGFuU3RhdHVzQ29kZT1GJC5TcGFuS2luZD1GJC5TYW1wbGluZ0RlY2lzaW9uPUYkLlByb3h5VHJhY2VyUHJvdmlkZXI9RiQuUHJveHlUcmFjZXI9RiQuZGVmYXVsdFRleHRNYXBTZXR0ZXI9RiQuZGVmYXVsdFRleHRNYXBHZXR0ZXI9RiQuVmFsdWVUeXBlPUYkLmNyZWF0ZU5vb3BNZXRlcj1GJC5EaWFnTG9nTGV2ZWw9RiQuRGlhZ0NvbnNvbGVMb2dnZXI9RiQuUk9PVF9DT05URVhUPUYkLmNyZWF0ZUNvbnRleHRLZXk9RiQuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nPXZvaWQgMDt2YXIgYnk9eVUoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmdcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnkuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nfX0pO3ZhciBYWj1uNygpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImNyZWF0ZUNvbnRleHRLZXlcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWFouY3JlYXRlQ29udGV4dEtleX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJST09UX0NPTlRFWFRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWFouUk9PVF9DT05URVhUfX0pO3ZhciBfeT1lMigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIkRpYWdDb25zb2xlTG9nZ2VyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF95LkRpYWdDb25zb2xlTG9nZ2VyfX0pO3ZhciBTeT1qNSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIkRpYWdMb2dMZXZlbFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBTeS5EaWFnTG9nTGV2ZWx9fSk7dmFyIGt5PW5VKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiY3JlYXRlTm9vcE1ldGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGt5LmNyZWF0ZU5vb3BNZXRlcn19KTt2YXIgdnk9VkQoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJWYWx1ZVR5cGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdnkuVmFsdWVUeXBlfX0pO3ZhciBZWj1vVSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImRlZmF1bHRUZXh0TWFwR2V0dGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFlaLmRlZmF1bHRUZXh0TWFwR2V0dGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImRlZmF1bHRUZXh0TWFwU2V0dGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFlaLmRlZmF1bHRUZXh0TWFwU2V0dGVyfX0pO3ZhciBDeT1VSCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIlByb3h5VHJhY2VyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEN5LlByb3h5VHJhY2VyfX0pO3ZhciBUeT1ISCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIlByb3h5VHJhY2VyUHJvdmlkZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVHkuUHJveHlUcmFjZXJQcm92aWRlcn19KTt2YXIgeHk9c0QoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJTYW1wbGluZ0RlY2lzaW9uXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHh5LlNhbXBsaW5nRGVjaXNpb259fSk7dmFyIGZ5PSRGKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiU3BhbktpbmRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnkuU3BhbktpbmR9fSk7dmFyIHl5PUpGKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiU3BhblN0YXR1c0NvZGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geXkuU3BhblN0YXR1c0NvZGV9fSk7dmFyIGd5PSRIKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiVHJhY2VGbGFnc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBneS5UcmFjZUZsYWdzfX0pO3ZhciBoeT13RigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImNyZWF0ZVRyYWNlU3RhdGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaHkuY3JlYXRlVHJhY2VTdGF0ZX19KTt2YXIgUkg9RTUoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJpc1NwYW5Db250ZXh0VmFsaWRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUkguaXNTcGFuQ29udGV4dFZhbGlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImlzVmFsaWRUcmFjZUlkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJILmlzVmFsaWRUcmFjZUlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImlzVmFsaWRTcGFuSWRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUkguaXNWYWxpZFNwYW5JZH19KTt2YXIgUEg9UjUoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJJTlZBTElEX1NQQU5JRFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBQSC5JTlZBTElEX1NQQU5JRH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJJTlZBTElEX1RSQUNFSURcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUEguSU5WQUxJRF9UUkFDRUlEfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIklOVkFMSURfU1BBTl9DT05URVhUXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFBILklOVkFMSURfU1BBTl9DT05URVhUfX0pO3ZhciBXWj1GRigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImNvbnRleHRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1ouY29udGV4dH19KTt2YXIgR1o9TEYoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJkaWFnXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEdaLmRpYWd9fSk7dmFyIFVaPWtGKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwibWV0cmljc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBVWi5tZXRyaWNzfX0pO3ZhciBIWj1uRigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcInByb3BhZ2F0aW9uXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhaLnByb3BhZ2F0aW9ufX0pO3ZhciBLWj1KWigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcInRyYWNlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtaLnRyYWNlfX0pO0YkLmRlZmF1bHQ9e2NvbnRleHQ6V1ouY29udGV4dCxkaWFnOkdaLmRpYWcsbWV0cmljczpVWi5tZXRyaWNzLHByb3BhZ2F0aW9uOkhaLnByb3BhZ2F0aW9uLHRyYWNlOktaLnRyYWNlfX0pO3ZhciBiSj1JKChWaik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoVmosXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7VmoucmVnZXhwQ29kZT1Wai5nZXRFc21FeHBvcnROYW1lPVZqLmdldFByb3BlcnR5PVZqLnNhZmVTdHJpbmdpZnk9Vmouc3RyaW5naWZ5PVZqLnN0ckNvbmNhdD1Wai5hZGRDb2RlQXJnPVZqLnN0cj1Wai5fPVZqLm5pbD1Wai5fQ29kZT1Wai5OYW1lPVZqLklERU5USUZJRVI9VmouX0NvZGVPck5hbWU9dm9pZCAwO2NsYXNzIE1Xe31Wai5fQ29kZU9yTmFtZT1NVztWai5JREVOVElGSUVSPS9eW2EteiRfXVthLXokXzAtOV0qJC9pO2NsYXNzIEI5IGV4dGVuZHMgTVd7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTtpZighVmouSURFTlRJRklFUi50ZXN0KCQpKXRocm93IEVycm9yKFwiQ29kZUdlbjogbmFtZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclwiKTt0aGlzLnN0cj0kfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuc3RyfWVtcHR5U3RyKCl7cmV0dXJuITF9Z2V0IG5hbWVzKCl7cmV0dXJue1t0aGlzLnN0cl06MX19fVZqLk5hbWU9Qjk7Y2xhc3MgejQgZXh0ZW5kcyBNV3tjb25zdHJ1Y3RvcigkKXtzdXBlcigpO3RoaXMuX2l0ZW1zPXR5cGVvZiAkPT09XCJzdHJpbmdcIj9bJF06JH10b1N0cmluZygpe3JldHVybiB0aGlzLnN0cn1lbXB0eVN0cigpe2lmKHRoaXMuX2l0ZW1zLmxlbmd0aD4xKXJldHVybiExO2xldCAkPXRoaXMuX2l0ZW1zWzBdO3JldHVybiAkPT09XCJcInx8JD09PSdcIlwiJ31nZXQgc3RyKCl7dmFyICQ7cmV0dXJuKCQ9dGhpcy5fc3RyKSE9PW51bGwmJiQhPT12b2lkIDA/JDp0aGlzLl9zdHI9dGhpcy5faXRlbXMucmVkdWNlKChRLEopPT5gJHtRfSR7Sn1gLFwiXCIpfWdldCBuYW1lcygpe3ZhciAkO3JldHVybigkPXRoaXMuX25hbWVzKSE9PW51bGwmJiQhPT12b2lkIDA/JDp0aGlzLl9uYW1lcz10aGlzLl9pdGVtcy5yZWR1Y2UoKFEsSik9PntpZihKIGluc3RhbmNlb2YgQjkpUVtKLnN0cl09KFFbSi5zdHJdfHwwKSsxO3JldHVybiBRfSx7fSl9fVZqLl9Db2RlPXo0O1ZqLm5pbD1uZXcgejQoXCJcIik7ZnVuY3Rpb24gS2ooJCwuLi5RKXtsZXQgSj1bJFswXV0sWT0wO3doaWxlKFk8US5sZW5ndGgpREIoSixRW1ldKSxKLnB1c2goJFsrK1ldKTtyZXR1cm4gbmV3IHo0KEopfVZqLl89S2o7dmFyIE9CPW5ldyB6NChcIitcIik7ZnVuY3Rpb24gcWooJCwuLi5RKXtsZXQgSj1bRUooJFswXSldLFk9MDt3aGlsZShZPFEubGVuZ3RoKUoucHVzaChPQiksREIoSixRW1ldKSxKLnB1c2goT0IsRUooJFsrK1ldKSk7cmV0dXJuIEJwKEopLG5ldyB6NChKKX1Wai5zdHI9cWo7ZnVuY3Rpb24gREIoJCxRKXtpZihRIGluc3RhbmNlb2YgejQpJC5wdXNoKC4uLlEuX2l0ZW1zKTtlbHNlIGlmKFEgaW5zdGFuY2VvZiBCOSkkLnB1c2goUSk7ZWxzZSAkLnB1c2god3AoUSkpfVZqLmFkZENvZGVBcmc9REI7ZnVuY3Rpb24gQnAoJCl7bGV0IFE9MTt3aGlsZShRPCQubGVuZ3RoLTEpe2lmKCRbUV09PT1PQil7bGV0IEo9enAoJFtRLTFdLCRbUSsxXSk7aWYoSiE9PXZvaWQgMCl7JC5zcGxpY2UoUS0xLDMsSik7Y29udGludWV9JFtRKytdPVwiK1wifVErK319ZnVuY3Rpb24genAoJCxRKXtpZihRPT09J1wiXCInKXJldHVybiAkO2lmKCQ9PT0nXCJcIicpcmV0dXJuIFE7aWYodHlwZW9mICQ9PVwic3RyaW5nXCIpe2lmKFEgaW5zdGFuY2VvZiBCOXx8JFskLmxlbmd0aC0xXSE9PSdcIicpcmV0dXJuO2lmKHR5cGVvZiBRIT1cInN0cmluZ1wiKXJldHVybmAkeyQuc2xpY2UoMCwtMSl9JHtRfVwiYDtpZihRWzBdPT09J1wiJylyZXR1cm4gJC5zbGljZSgwLC0xKStRLnNsaWNlKDEpO3JldHVybn1pZih0eXBlb2YgUT09XCJzdHJpbmdcIiYmUVswXT09PSdcIicmJiEoJCBpbnN0YW5jZW9mIEI5KSlyZXR1cm5gXCIkeyR9JHtRLnNsaWNlKDEpfWA7cmV0dXJufWZ1bmN0aW9uIE5wKCQsUSl7cmV0dXJuIFEuZW1wdHlTdHIoKT8kOiQuZW1wdHlTdHIoKT9ROnFqYCR7JH0ke1F9YH1Wai5zdHJDb25jYXQ9TnA7ZnVuY3Rpb24gd3AoJCl7cmV0dXJuIHR5cGVvZiAkPT1cIm51bWJlclwifHx0eXBlb2YgJD09XCJib29sZWFuXCJ8fCQ9PT1udWxsPyQ6RUooQXJyYXkuaXNBcnJheSgkKT8kLmpvaW4oXCIsXCIpOiQpfWZ1bmN0aW9uIE9wKCQpe3JldHVybiBuZXcgejQoRUooJCkpfVZqLnN0cmluZ2lmeT1PcDtmdW5jdGlvbiBFSigkKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoJCkucmVwbGFjZSgvXFx1MjAyOC9nLFwiXFxcXHUyMDI4XCIpLnJlcGxhY2UoL1xcdTIwMjkvZyxcIlxcXFx1MjAyOVwiKX1Wai5zYWZlU3RyaW5naWZ5PUVKO2Z1bmN0aW9uIERwKCQpe3JldHVybiB0eXBlb2YgJD09XCJzdHJpbmdcIiYmVmouSURFTlRJRklFUi50ZXN0KCQpP25ldyB6NChgLiR7JH1gKTpLamBbJHskfV1gfVZqLmdldFByb3BlcnR5PURwO2Z1bmN0aW9uIEZwKCQpe2lmKHR5cGVvZiAkPT1cInN0cmluZ1wiJiZWai5JREVOVElGSUVSLnRlc3QoJCkpcmV0dXJuIG5ldyB6NChgJHskfWApO3Rocm93IEVycm9yKGBDb2RlR2VuOiBpbnZhbGlkIGV4cG9ydCBuYW1lOiAkeyR9LCB1c2UgZXhwbGljaXQgJGlkIG5hbWUgbWFwcGluZ2ApfVZqLmdldEVzbUV4cG9ydE5hbWU9RnA7ZnVuY3Rpb24gWnAoJCl7cmV0dXJuIG5ldyB6NCgkLnRvU3RyaW5nKCkpfVZqLnJlZ2V4cENvZGU9WnB9KTt2YXIgTEI9SSgod2opPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHdqLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3dqLlZhbHVlU2NvcGU9d2ouVmFsdWVTY29wZU5hbWU9d2ouU2NvcGU9d2oudmFyS2luZHM9d2ouVXNlZFZhbHVlU3RhdGU9dm9pZCAwO3ZhciBSNj1iSigpO2NsYXNzIHpqIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoJCl7c3VwZXIoYENvZGVHZW46IFwiY29kZVwiIGZvciAkeyR9IG5vdCBkZWZpbmVkYCk7dGhpcy52YWx1ZT0kLnZhbHVlfX12YXIgalc7KGZ1bmN0aW9uKCQpeyRbJC5TdGFydGVkPTBdPVwiU3RhcnRlZFwiLCRbJC5Db21wbGV0ZWQ9MV09XCJDb21wbGV0ZWRcIn0pKGpXfHwod2ouVXNlZFZhbHVlU3RhdGU9alc9e30pKTt3ai52YXJLaW5kcz17Y29uc3Q6bmV3IFI2Lk5hbWUoXCJjb25zdFwiKSxsZXQ6bmV3IFI2Lk5hbWUoXCJsZXRcIiksdmFyOm5ldyBSNi5OYW1lKFwidmFyXCIpfTtjbGFzcyBaQntjb25zdHJ1Y3Rvcih7cHJlZml4ZXM6JCxwYXJlbnQ6UX09e30pe3RoaXMuX25hbWVzPXt9LHRoaXMuX3ByZWZpeGVzPSQsdGhpcy5fcGFyZW50PVF9dG9OYW1lKCQpe3JldHVybiAkIGluc3RhbmNlb2YgUjYuTmFtZT8kOnRoaXMubmFtZSgkKX1uYW1lKCQpe3JldHVybiBuZXcgUjYuTmFtZSh0aGlzLl9uZXdOYW1lKCQpKX1fbmV3TmFtZSgkKXtsZXQgUT10aGlzLl9uYW1lc1skXXx8dGhpcy5fbmFtZUdyb3VwKCQpO3JldHVybmAkeyR9JHtRLmluZGV4Kyt9YH1fbmFtZUdyb3VwKCQpe3ZhciBRLEo7aWYoKChKPShRPXRoaXMuX3BhcmVudCk9PT1udWxsfHxRPT09dm9pZCAwP3ZvaWQgMDpRLl9wcmVmaXhlcyk9PT1udWxsfHxKPT09dm9pZCAwP3ZvaWQgMDpKLmhhcygkKSl8fHRoaXMuX3ByZWZpeGVzJiYhdGhpcy5fcHJlZml4ZXMuaGFzKCQpKXRocm93IEVycm9yKGBDb2RlR2VuOiBwcmVmaXggXCIkeyR9XCIgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzY29wZWApO3JldHVybiB0aGlzLl9uYW1lc1skXT17cHJlZml4OiQsaW5kZXg6MH19fXdqLlNjb3BlPVpCO2NsYXNzIE1CIGV4dGVuZHMgUjYuTmFtZXtjb25zdHJ1Y3RvcigkLFEpe3N1cGVyKFEpO3RoaXMucHJlZml4PSR9c2V0VmFsdWUoJCx7cHJvcGVydHk6USxpdGVtSW5kZXg6Sn0pe3RoaXMudmFsdWU9JCx0aGlzLnNjb3BlUGF0aD1SNi5fYC4ke25ldyBSNi5OYW1lKFEpfVske0p9XWB9fXdqLlZhbHVlU2NvcGVOYW1lPU1CO3ZhciB2cD1SNi5fYFxcbmA7Y2xhc3MgTmogZXh0ZW5kcyBaQntjb25zdHJ1Y3RvcigkKXtzdXBlcigkKTt0aGlzLl92YWx1ZXM9e30sdGhpcy5fc2NvcGU9JC5zY29wZSx0aGlzLm9wdHM9ey4uLiQsX246JC5saW5lcz92cDpSNi5uaWx9fWdldCgpe3JldHVybiB0aGlzLl9zY29wZX1uYW1lKCQpe3JldHVybiBuZXcgTUIoJCx0aGlzLl9uZXdOYW1lKCQpKX12YWx1ZSgkLFEpe3ZhciBKO2lmKFEucmVmPT09dm9pZCAwKXRocm93IEVycm9yKFwiQ29kZUdlbjogcmVmIG11c3QgYmUgcGFzc2VkIGluIHZhbHVlXCIpO2xldCBZPXRoaXMudG9OYW1lKCQpLHtwcmVmaXg6WH09WSxXPShKPVEua2V5KSE9PW51bGwmJkohPT12b2lkIDA/SjpRLnJlZixHPXRoaXMuX3ZhbHVlc1tYXTtpZihHKXtsZXQgcT1HLmdldChXKTtpZihxKXJldHVybiBxfWVsc2UgRz10aGlzLl92YWx1ZXNbWF09bmV3IE1hcDtHLnNldChXLFkpO2xldCBVPXRoaXMuX3Njb3BlW1hdfHwodGhpcy5fc2NvcGVbWF09W10pLEg9VS5sZW5ndGg7cmV0dXJuIFVbSF09US5yZWYsWS5zZXRWYWx1ZShRLHtwcm9wZXJ0eTpYLGl0ZW1JbmRleDpIfSksWX1nZXRWYWx1ZSgkLFEpe2xldCBKPXRoaXMuX3ZhbHVlc1skXTtpZighSilyZXR1cm47cmV0dXJuIEouZ2V0KFEpfXNjb3BlUmVmcygkLFE9dGhpcy5fdmFsdWVzKXtyZXR1cm4gdGhpcy5fcmVkdWNlVmFsdWVzKFEsKEopPT57aWYoSi5zY29wZVBhdGg9PT12b2lkIDApdGhyb3cgRXJyb3IoYENvZGVHZW46IG5hbWUgXCIke0p9XCIgaGFzIG5vIHZhbHVlYCk7cmV0dXJuIFI2Ll9gJHskfSR7Si5zY29wZVBhdGh9YH0pfXNjb3BlQ29kZSgkPXRoaXMuX3ZhbHVlcyxRLEope3JldHVybiB0aGlzLl9yZWR1Y2VWYWx1ZXMoJCwoWSk9PntpZihZLnZhbHVlPT09dm9pZCAwKXRocm93IEVycm9yKGBDb2RlR2VuOiBuYW1lIFwiJHtZfVwiIGhhcyBubyB2YWx1ZWApO3JldHVybiBZLnZhbHVlLmNvZGV9LFEsSil9X3JlZHVjZVZhbHVlcygkLFEsSj17fSxZKXtsZXQgWD1SNi5uaWw7Zm9yKGxldCBXIGluICQpe2xldCBHPSRbV107aWYoIUcpY29udGludWU7bGV0IFU9SltXXT1KW1ddfHxuZXcgTWFwO0cuZm9yRWFjaCgoSCk9PntpZihVLmhhcyhIKSlyZXR1cm47VS5zZXQoSCxqVy5TdGFydGVkKTtsZXQgcT1RKEgpO2lmKHEpe2xldCBWPXRoaXMub3B0cy5lczU/d2oudmFyS2luZHMudmFyOndqLnZhcktpbmRzLmNvbnN0O1g9UjYuX2Ake1h9JHtWfSAke0h9ID0gJHtxfTske3RoaXMub3B0cy5fbn1gfWVsc2UgaWYocT1ZPT09bnVsbHx8WT09PXZvaWQgMD92b2lkIDA6WShIKSlYPVI2Ll9gJHtYfSR7cX0ke3RoaXMub3B0cy5fbn1gO2Vsc2UgdGhyb3cgbmV3IHpqKEgpO1Uuc2V0KEgsalcuQ29tcGxldGVkKX0pfXJldHVybiBYfX13ai5WYWx1ZVNjb3BlPU5qfSk7dmFyIFEkPUkoKFA2KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtQNi5vcj1QNi5hbmQ9UDYubm90PVA2LkNvZGVHZW49UDYub3BlcmF0b3JzPVA2LnZhcktpbmRzPVA2LlZhbHVlU2NvcGVOYW1lPVA2LlZhbHVlU2NvcGU9UDYuU2NvcGU9UDYuTmFtZT1QNi5yZWdleHBDb2RlPVA2LnN0cmluZ2lmeT1QNi5nZXRQcm9wZXJ0eT1QNi5uaWw9UDYuc3RyQ29uY2F0PVA2LnN0cj1QNi5fPXZvaWQgMDt2YXIgSyQ9YkooKSxOND1MQigpLGYxPWJKKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwiX1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5ffX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcInN0clwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5zdHJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwic3RyQ29uY2F0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYxLnN0ckNvbmNhdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJuaWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEubmlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcImdldFByb3BlcnR5XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYxLmdldFByb3BlcnR5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcInN0cmluZ2lmeVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5zdHJpbmdpZnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwicmVnZXhwQ29kZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5yZWdleHBDb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcIk5hbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEuTmFtZX19KTt2YXIgYlc9TEIoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJTY29wZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBiVy5TY29wZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJWYWx1ZVNjb3BlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJXLlZhbHVlU2NvcGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwiVmFsdWVTY29wZU5hbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYlcuVmFsdWVTY29wZU5hbWV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwidmFyS2luZHNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYlcudmFyS2luZHN9fSk7UDYub3BlcmF0b3JzPXtHVDpuZXcgSyQuX0NvZGUoXCI+XCIpLEdURTpuZXcgSyQuX0NvZGUoXCI+PVwiKSxMVDpuZXcgSyQuX0NvZGUoXCI8XCIpLExURTpuZXcgSyQuX0NvZGUoXCI8PVwiKSxFUTpuZXcgSyQuX0NvZGUoXCI9PT1cIiksTkVROm5ldyBLJC5fQ29kZShcIiE9PVwiKSxOT1Q6bmV3IEskLl9Db2RlKFwiIVwiKSxPUjpuZXcgSyQuX0NvZGUoXCJ8fFwiKSxBTkQ6bmV3IEskLl9Db2RlKFwiJiZcIiksQUREOm5ldyBLJC5fQ29kZShcIitcIil9O2NsYXNzIHkxe29wdGltaXplTm9kZXMoKXtyZXR1cm4gdGhpc31vcHRpbWl6ZU5hbWVzKCQsUSl7cmV0dXJuIHRoaXN9fWNsYXNzIERqIGV4dGVuZHMgeTF7Y29uc3RydWN0b3IoJCxRLEope3N1cGVyKCk7dGhpcy52YXJLaW5kPSQsdGhpcy5uYW1lPVEsdGhpcy5yaHM9Sn1yZW5kZXIoe2VzNTokLF9uOlF9KXtsZXQgSj0kP040LnZhcktpbmRzLnZhcjp0aGlzLnZhcktpbmQsWT10aGlzLnJocz09PXZvaWQgMD9cIlwiOmAgPSAke3RoaXMucmhzfWA7cmV0dXJuYCR7Sn0gJHt0aGlzLm5hbWV9JHtZfTtgK1F9b3B0aW1pemVOYW1lcygkLFEpe2lmKCEkW3RoaXMubmFtZS5zdHJdKXJldHVybjtpZih0aGlzLnJocyl0aGlzLnJocz1OOSh0aGlzLnJocywkLFEpO3JldHVybiB0aGlzfWdldCBuYW1lcygpe3JldHVybiB0aGlzLnJocyBpbnN0YW5jZW9mIEskLl9Db2RlT3JOYW1lP3RoaXMucmhzLm5hbWVzOnt9fX1jbGFzcyBJQiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQsUSxKKXtzdXBlcigpO3RoaXMubGhzPSQsdGhpcy5yaHM9USx0aGlzLnNpZGVFZmZlY3RzPUp9cmVuZGVyKHtfbjokfSl7cmV0dXJuYCR7dGhpcy5saHN9ID0gJHt0aGlzLnJoc307YCskfW9wdGltaXplTmFtZXMoJCxRKXtpZih0aGlzLmxocyBpbnN0YW5jZW9mIEskLk5hbWUmJiEkW3RoaXMubGhzLnN0cl0mJiF0aGlzLnNpZGVFZmZlY3RzKXJldHVybjtyZXR1cm4gdGhpcy5yaHM9TjkodGhpcy5yaHMsJCxRKSx0aGlzfWdldCBuYW1lcygpe2xldCAkPXRoaXMubGhzIGluc3RhbmNlb2YgSyQuTmFtZT97fTp7Li4udGhpcy5saHMubmFtZXN9O3JldHVybiBFVygkLHRoaXMucmhzKX19Y2xhc3MgRmogZXh0ZW5kcyBJQntjb25zdHJ1Y3RvcigkLFEsSixZKXtzdXBlcigkLEosWSk7dGhpcy5vcD1RfXJlbmRlcih7X246JH0pe3JldHVybmAke3RoaXMubGhzfSAke3RoaXMub3B9PSAke3RoaXMucmhzfTtgKyR9fWNsYXNzIFpqIGV4dGVuZHMgeTF7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTt0aGlzLmxhYmVsPSQsdGhpcy5uYW1lcz17fX1yZW5kZXIoe19uOiR9KXtyZXR1cm5gJHt0aGlzLmxhYmVsfTpgKyR9fWNsYXNzIE1qIGV4dGVuZHMgeTF7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTt0aGlzLmxhYmVsPSQsdGhpcy5uYW1lcz17fX1yZW5kZXIoe19uOiR9KXtyZXR1cm5gYnJlYWske3RoaXMubGFiZWw/YCAke3RoaXMubGFiZWx9YDpcIlwifTtgKyR9fWNsYXNzIExqIGV4dGVuZHMgeTF7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTt0aGlzLmVycm9yPSR9cmVuZGVyKHtfbjokfSl7cmV0dXJuYHRocm93ICR7dGhpcy5lcnJvcn07YCskfWdldCBuYW1lcygpe3JldHVybiB0aGlzLmVycm9yLm5hbWVzfX1jbGFzcyBqaiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5jb2RlPSR9cmVuZGVyKHtfbjokfSl7cmV0dXJuYCR7dGhpcy5jb2RlfTtgKyR9b3B0aW1pemVOb2Rlcygpe3JldHVybmAke3RoaXMuY29kZX1gP3RoaXM6dm9pZCAwfW9wdGltaXplTmFtZXMoJCxRKXtyZXR1cm4gdGhpcy5jb2RlPU45KHRoaXMuY29kZSwkLFEpLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMuY29kZSBpbnN0YW5jZW9mIEskLl9Db2RlT3JOYW1lP3RoaXMuY29kZS5uYW1lczp7fX19Y2xhc3MgX1cgZXh0ZW5kcyB5MXtjb25zdHJ1Y3RvcigkPVtdKXtzdXBlcigpO3RoaXMubm9kZXM9JH1yZW5kZXIoJCl7cmV0dXJuIHRoaXMubm9kZXMucmVkdWNlKChRLEopPT5RK0oucmVuZGVyKCQpLFwiXCIpfW9wdGltaXplTm9kZXMoKXtsZXR7bm9kZXM6JH09dGhpcyxRPSQubGVuZ3RoO3doaWxlKFEtLSl7bGV0IEo9JFtRXS5vcHRpbWl6ZU5vZGVzKCk7aWYoQXJyYXkuaXNBcnJheShKKSkkLnNwbGljZShRLDEsLi4uSik7ZWxzZSBpZihKKSRbUV09SjtlbHNlICQuc3BsaWNlKFEsMSl9cmV0dXJuICQubGVuZ3RoPjA/dGhpczp2b2lkIDB9b3B0aW1pemVOYW1lcygkLFEpe2xldHtub2RlczpKfT10aGlzLFk9Si5sZW5ndGg7d2hpbGUoWS0tKXtsZXQgWD1KW1ldO2lmKFgub3B0aW1pemVOYW1lcygkLFEpKWNvbnRpbnVlO2ZwKCQsWC5uYW1lcyksSi5zcGxpY2UoWSwxKX1yZXR1cm4gSi5sZW5ndGg+MD90aGlzOnZvaWQgMH1nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5ub2Rlcy5yZWR1Y2UoKCQsUSk9PlQwKCQsUS5uYW1lcykse30pfX1jbGFzcyBnMSBleHRlbmRzIF9Xe3JlbmRlcigkKXtyZXR1cm5cIntcIiskLl9uK3N1cGVyLnJlbmRlcigkKStcIn1cIiskLl9ufX1jbGFzcyBBaiBleHRlbmRzIF9Xe31jbGFzcyBfSiBleHRlbmRzIGcxe31fSi5raW5kPVwiZWxzZVwiO2NsYXNzIFExIGV4dGVuZHMgZzF7Y29uc3RydWN0b3IoJCxRKXtzdXBlcihRKTt0aGlzLmNvbmRpdGlvbj0kfXJlbmRlcigkKXtsZXQgUT1gaWYoJHt0aGlzLmNvbmRpdGlvbn0pYCtzdXBlci5yZW5kZXIoJCk7aWYodGhpcy5lbHNlKVErPVwiZWxzZSBcIit0aGlzLmVsc2UucmVuZGVyKCQpO3JldHVybiBRfW9wdGltaXplTm9kZXMoKXtzdXBlci5vcHRpbWl6ZU5vZGVzKCk7bGV0ICQ9dGhpcy5jb25kaXRpb247aWYoJD09PSEwKXJldHVybiB0aGlzLm5vZGVzO2xldCBRPXRoaXMuZWxzZTtpZihRKXtsZXQgSj1RLm9wdGltaXplTm9kZXMoKTtRPXRoaXMuZWxzZT1BcnJheS5pc0FycmF5KEopP25ldyBfSihKKTpKfWlmKFEpe2lmKCQ9PT0hMSlyZXR1cm4gUSBpbnN0YW5jZW9mIFExP1E6US5ub2RlcztpZih0aGlzLm5vZGVzLmxlbmd0aClyZXR1cm4gdGhpcztyZXR1cm4gbmV3IFExKGJqKCQpLFEgaW5zdGFuY2VvZiBRMT9bUV06US5ub2Rlcyl9aWYoJD09PSExfHwhdGhpcy5ub2Rlcy5sZW5ndGgpcmV0dXJuO3JldHVybiB0aGlzfW9wdGltaXplTmFtZXMoJCxRKXt2YXIgSjtpZih0aGlzLmVsc2U9KEo9dGhpcy5lbHNlKT09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkoub3B0aW1pemVOYW1lcygkLFEpLCEoc3VwZXIub3B0aW1pemVOYW1lcygkLFEpfHx0aGlzLmVsc2UpKXJldHVybjtyZXR1cm4gdGhpcy5jb25kaXRpb249TjkodGhpcy5jb25kaXRpb24sJCxRKSx0aGlzfWdldCBuYW1lcygpe2xldCAkPXN1cGVyLm5hbWVzO2lmKEVXKCQsdGhpcy5jb25kaXRpb24pLHRoaXMuZWxzZSlUMCgkLHRoaXMuZWxzZS5uYW1lcyk7cmV0dXJuICR9fVExLmtpbmQ9XCJpZlwiO2NsYXNzIHo5IGV4dGVuZHMgZzF7fXo5LmtpbmQ9XCJmb3JcIjtjbGFzcyBJaiBleHRlbmRzIHo5e2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5pdGVyYXRpb249JH1yZW5kZXIoJCl7cmV0dXJuYGZvcigke3RoaXMuaXRlcmF0aW9ufSlgK3N1cGVyLnJlbmRlcigkKX1vcHRpbWl6ZU5hbWVzKCQsUSl7aWYoIXN1cGVyLm9wdGltaXplTmFtZXMoJCxRKSlyZXR1cm47cmV0dXJuIHRoaXMuaXRlcmF0aW9uPU45KHRoaXMuaXRlcmF0aW9uLCQsUSksdGhpc31nZXQgbmFtZXMoKXtyZXR1cm4gVDAoc3VwZXIubmFtZXMsdGhpcy5pdGVyYXRpb24ubmFtZXMpfX1jbGFzcyBSaiBleHRlbmRzIHo5e2NvbnN0cnVjdG9yKCQsUSxKLFkpe3N1cGVyKCk7dGhpcy52YXJLaW5kPSQsdGhpcy5uYW1lPVEsdGhpcy5mcm9tPUosdGhpcy50bz1ZfXJlbmRlcigkKXtsZXQgUT0kLmVzNT9ONC52YXJLaW5kcy52YXI6dGhpcy52YXJLaW5kLHtuYW1lOkosZnJvbTpZLHRvOlh9PXRoaXM7cmV0dXJuYGZvcigke1F9ICR7Sn09JHtZfTsgJHtKfTwke1h9OyAke0p9KyspYCtzdXBlci5yZW5kZXIoJCl9Z2V0IG5hbWVzKCl7bGV0ICQ9RVcoc3VwZXIubmFtZXMsdGhpcy5mcm9tKTtyZXR1cm4gRVcoJCx0aGlzLnRvKX19Y2xhc3MgakIgZXh0ZW5kcyB6OXtjb25zdHJ1Y3RvcigkLFEsSixZKXtzdXBlcigpO3RoaXMubG9vcD0kLHRoaXMudmFyS2luZD1RLHRoaXMubmFtZT1KLHRoaXMuaXRlcmFibGU9WX1yZW5kZXIoJCl7cmV0dXJuYGZvcigke3RoaXMudmFyS2luZH0gJHt0aGlzLm5hbWV9ICR7dGhpcy5sb29wfSAke3RoaXMuaXRlcmFibGV9KWArc3VwZXIucmVuZGVyKCQpfW9wdGltaXplTmFtZXMoJCxRKXtpZighc3VwZXIub3B0aW1pemVOYW1lcygkLFEpKXJldHVybjtyZXR1cm4gdGhpcy5pdGVyYWJsZT1OOSh0aGlzLml0ZXJhYmxlLCQsUSksdGhpc31nZXQgbmFtZXMoKXtyZXR1cm4gVDAoc3VwZXIubmFtZXMsdGhpcy5pdGVyYWJsZS5uYW1lcyl9fWNsYXNzIEFXIGV4dGVuZHMgZzF7Y29uc3RydWN0b3IoJCxRLEope3N1cGVyKCk7dGhpcy5uYW1lPSQsdGhpcy5hcmdzPVEsdGhpcy5hc3luYz1KfXJlbmRlcigkKXtyZXR1cm5gJHt0aGlzLmFzeW5jP1wiYXN5bmMgXCI6XCJcIn1mdW5jdGlvbiAke3RoaXMubmFtZX0oJHt0aGlzLmFyZ3N9KWArc3VwZXIucmVuZGVyKCQpfX1BVy5raW5kPVwiZnVuY1wiO2NsYXNzIElXIGV4dGVuZHMgX1d7cmVuZGVyKCQpe3JldHVyblwicmV0dXJuIFwiK3N1cGVyLnJlbmRlcigkKX19SVcua2luZD1cInJldHVyblwiO2NsYXNzIFBqIGV4dGVuZHMgZzF7cmVuZGVyKCQpe2xldCBRPVwidHJ5XCIrc3VwZXIucmVuZGVyKCQpO2lmKHRoaXMuY2F0Y2gpUSs9dGhpcy5jYXRjaC5yZW5kZXIoJCk7aWYodGhpcy5maW5hbGx5KVErPXRoaXMuZmluYWxseS5yZW5kZXIoJCk7cmV0dXJuIFF9b3B0aW1pemVOb2Rlcygpe3ZhciAkLFE7cmV0dXJuIHN1cGVyLm9wdGltaXplTm9kZXMoKSwoJD10aGlzLmNhdGNoKT09PW51bGx8fCQ9PT12b2lkIDB8fCQub3B0aW1pemVOb2RlcygpLChRPXRoaXMuZmluYWxseSk9PT1udWxsfHxRPT09dm9pZCAwfHxRLm9wdGltaXplTm9kZXMoKSx0aGlzfW9wdGltaXplTmFtZXMoJCxRKXt2YXIgSixZO3JldHVybiBzdXBlci5vcHRpbWl6ZU5hbWVzKCQsUSksKEo9dGhpcy5jYXRjaCk9PT1udWxsfHxKPT09dm9pZCAwfHxKLm9wdGltaXplTmFtZXMoJCxRKSwoWT10aGlzLmZpbmFsbHkpPT09bnVsbHx8WT09PXZvaWQgMHx8WS5vcHRpbWl6ZU5hbWVzKCQsUSksdGhpc31nZXQgbmFtZXMoKXtsZXQgJD1zdXBlci5uYW1lcztpZih0aGlzLmNhdGNoKVQwKCQsdGhpcy5jYXRjaC5uYW1lcyk7aWYodGhpcy5maW5hbGx5KVQwKCQsdGhpcy5maW5hbGx5Lm5hbWVzKTtyZXR1cm4gJH19Y2xhc3MgUlcgZXh0ZW5kcyBnMXtjb25zdHJ1Y3RvcigkKXtzdXBlcigpO3RoaXMuZXJyb3I9JH1yZW5kZXIoJCl7cmV0dXJuYGNhdGNoKCR7dGhpcy5lcnJvcn0pYCtzdXBlci5yZW5kZXIoJCl9fVJXLmtpbmQ9XCJjYXRjaFwiO2NsYXNzIFBXIGV4dGVuZHMgZzF7cmVuZGVyKCQpe3JldHVyblwiZmluYWxseVwiK3N1cGVyLnJlbmRlcigkKX19UFcua2luZD1cImZpbmFsbHlcIjtjbGFzcyBFantjb25zdHJ1Y3RvcigkLFE9e30pe3RoaXMuX3ZhbHVlcz17fSx0aGlzLl9ibG9ja1N0YXJ0cz1bXSx0aGlzLl9jb25zdGFudHM9e30sdGhpcy5vcHRzPXsuLi5RLF9uOlEubGluZXM/YFxuYDpcIlwifSx0aGlzLl9leHRTY29wZT0kLHRoaXMuX3Njb3BlPW5ldyBONC5TY29wZSh7cGFyZW50OiR9KSx0aGlzLl9ub2Rlcz1bbmV3IEFqXX10b1N0cmluZygpe3JldHVybiB0aGlzLl9yb290LnJlbmRlcih0aGlzLm9wdHMpfW5hbWUoJCl7cmV0dXJuIHRoaXMuX3Njb3BlLm5hbWUoJCl9c2NvcGVOYW1lKCQpe3JldHVybiB0aGlzLl9leHRTY29wZS5uYW1lKCQpfXNjb3BlVmFsdWUoJCxRKXtsZXQgSj10aGlzLl9leHRTY29wZS52YWx1ZSgkLFEpO3JldHVybih0aGlzLl92YWx1ZXNbSi5wcmVmaXhdfHwodGhpcy5fdmFsdWVzW0oucHJlZml4XT1uZXcgU2V0KSkuYWRkKEopLEp9Z2V0U2NvcGVWYWx1ZSgkLFEpe3JldHVybiB0aGlzLl9leHRTY29wZS5nZXRWYWx1ZSgkLFEpfXNjb3BlUmVmcygkKXtyZXR1cm4gdGhpcy5fZXh0U2NvcGUuc2NvcGVSZWZzKCQsdGhpcy5fdmFsdWVzKX1zY29wZUNvZGUoKXtyZXR1cm4gdGhpcy5fZXh0U2NvcGUuc2NvcGVDb2RlKHRoaXMuX3ZhbHVlcyl9X2RlZigkLFEsSixZKXtsZXQgWD10aGlzLl9zY29wZS50b05hbWUoUSk7aWYoSiE9PXZvaWQgMCYmWSl0aGlzLl9jb25zdGFudHNbWC5zdHJdPUo7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBEaigkLFgsSikpLFh9Y29uc3QoJCxRLEope3JldHVybiB0aGlzLl9kZWYoTjQudmFyS2luZHMuY29uc3QsJCxRLEopfWxldCgkLFEsSil7cmV0dXJuIHRoaXMuX2RlZihONC52YXJLaW5kcy5sZXQsJCxRLEopfXZhcigkLFEsSil7cmV0dXJuIHRoaXMuX2RlZihONC52YXJLaW5kcy52YXIsJCxRLEopfWFzc2lnbigkLFEsSil7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBJQigkLFEsSikpfWFkZCgkLFEpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgRmooJCxQNi5vcGVyYXRvcnMuQURELFEpKX1jb2RlKCQpe2lmKHR5cGVvZiAkPT1cImZ1bmN0aW9uXCIpJCgpO2Vsc2UgaWYoJCE9PUskLm5pbCl0aGlzLl9sZWFmTm9kZShuZXcgamooJCkpO3JldHVybiB0aGlzfW9iamVjdCguLi4kKXtsZXQgUT1bXCJ7XCJdO2ZvcihsZXRbSixZXW9mICQpe2lmKFEubGVuZ3RoPjEpUS5wdXNoKFwiLFwiKTtpZihRLnB1c2goSiksSiE9PVl8fHRoaXMub3B0cy5lczUpUS5wdXNoKFwiOlwiKSwoMCxLJC5hZGRDb2RlQXJnKShRLFkpfXJldHVybiBRLnB1c2goXCJ9XCIpLG5ldyBLJC5fQ29kZShRKX1pZigkLFEsSil7aWYodGhpcy5fYmxvY2tOb2RlKG5ldyBRMSgkKSksUSYmSil0aGlzLmNvZGUoUSkuZWxzZSgpLmNvZGUoSikuZW5kSWYoKTtlbHNlIGlmKFEpdGhpcy5jb2RlKFEpLmVuZElmKCk7ZWxzZSBpZihKKXRocm93IEVycm9yKCdDb2RlR2VuOiBcImVsc2VcIiBib2R5IHdpdGhvdXQgXCJ0aGVuXCIgYm9keScpO3JldHVybiB0aGlzfWVsc2VJZigkKXtyZXR1cm4gdGhpcy5fZWxzZU5vZGUobmV3IFExKCQpKX1lbHNlKCl7cmV0dXJuIHRoaXMuX2Vsc2VOb2RlKG5ldyBfSil9ZW5kSWYoKXtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKFExLF9KKX1fZm9yKCQsUSl7aWYodGhpcy5fYmxvY2tOb2RlKCQpLFEpdGhpcy5jb2RlKFEpLmVuZEZvcigpO3JldHVybiB0aGlzfWZvcigkLFEpe3JldHVybiB0aGlzLl9mb3IobmV3IElqKCQpLFEpfWZvclJhbmdlKCQsUSxKLFksWD10aGlzLm9wdHMuZXM1P040LnZhcktpbmRzLnZhcjpONC52YXJLaW5kcy5sZXQpe2xldCBXPXRoaXMuX3Njb3BlLnRvTmFtZSgkKTtyZXR1cm4gdGhpcy5fZm9yKG5ldyBSaihYLFcsUSxKKSwoKT0+WShXKSl9Zm9yT2YoJCxRLEosWT1ONC52YXJLaW5kcy5jb25zdCl7bGV0IFg9dGhpcy5fc2NvcGUudG9OYW1lKCQpO2lmKHRoaXMub3B0cy5lczUpe2xldCBXPVEgaW5zdGFuY2VvZiBLJC5OYW1lP1E6dGhpcy52YXIoXCJfYXJyXCIsUSk7cmV0dXJuIHRoaXMuZm9yUmFuZ2UoXCJfaVwiLDAsSyQuX2Ake1d9Lmxlbmd0aGAsKEcpPT57dGhpcy52YXIoWCxLJC5fYCR7V31bJHtHfV1gKSxKKFgpfSl9cmV0dXJuIHRoaXMuX2ZvcihuZXcgakIoXCJvZlwiLFksWCxRKSwoKT0+SihYKSl9Zm9ySW4oJCxRLEosWT10aGlzLm9wdHMuZXM1P040LnZhcktpbmRzLnZhcjpONC52YXJLaW5kcy5jb25zdCl7aWYodGhpcy5vcHRzLm93blByb3BlcnRpZXMpcmV0dXJuIHRoaXMuZm9yT2YoJCxLJC5fYE9iamVjdC5rZXlzKCR7UX0pYCxKKTtsZXQgWD10aGlzLl9zY29wZS50b05hbWUoJCk7cmV0dXJuIHRoaXMuX2ZvcihuZXcgakIoXCJpblwiLFksWCxRKSwoKT0+SihYKSl9ZW5kRm9yKCl7cmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZSh6OSl9bGFiZWwoJCl7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBaaigkKSl9YnJlYWsoJCl7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBNaigkKSl9cmV0dXJuKCQpe2xldCBRPW5ldyBJVztpZih0aGlzLl9ibG9ja05vZGUoUSksdGhpcy5jb2RlKCQpLFEubm9kZXMubGVuZ3RoIT09MSl0aHJvdyBFcnJvcignQ29kZUdlbjogXCJyZXR1cm5cIiBzaG91bGQgaGF2ZSBvbmUgbm9kZScpO3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoSVcpfXRyeSgkLFEsSil7aWYoIVEmJiFKKXRocm93IEVycm9yKCdDb2RlR2VuOiBcInRyeVwiIHdpdGhvdXQgXCJjYXRjaFwiIGFuZCBcImZpbmFsbHlcIicpO2xldCBZPW5ldyBQajtpZih0aGlzLl9ibG9ja05vZGUoWSksdGhpcy5jb2RlKCQpLFEpe2xldCBYPXRoaXMubmFtZShcImVcIik7dGhpcy5fY3Vyck5vZGU9WS5jYXRjaD1uZXcgUlcoWCksUShYKX1pZihKKXRoaXMuX2N1cnJOb2RlPVkuZmluYWxseT1uZXcgUFcsdGhpcy5jb2RlKEopO3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoUlcsUFcpfXRocm93KCQpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgTGooJCkpfWJsb2NrKCQsUSl7aWYodGhpcy5fYmxvY2tTdGFydHMucHVzaCh0aGlzLl9ub2Rlcy5sZW5ndGgpLCQpdGhpcy5jb2RlKCQpLmVuZEJsb2NrKFEpO3JldHVybiB0aGlzfWVuZEJsb2NrKCQpe2xldCBRPXRoaXMuX2Jsb2NrU3RhcnRzLnBvcCgpO2lmKFE9PT12b2lkIDApdGhyb3cgRXJyb3IoXCJDb2RlR2VuOiBub3QgaW4gc2VsZi1iYWxhbmNpbmcgYmxvY2tcIik7bGV0IEo9dGhpcy5fbm9kZXMubGVuZ3RoLVE7aWYoSjwwfHwkIT09dm9pZCAwJiZKIT09JCl0aHJvdyBFcnJvcihgQ29kZUdlbjogd3JvbmcgbnVtYmVyIG9mIG5vZGVzOiAke0p9IHZzICR7JH0gZXhwZWN0ZWRgKTtyZXR1cm4gdGhpcy5fbm9kZXMubGVuZ3RoPVEsdGhpc31mdW5jKCQsUT1LJC5uaWwsSixZKXtpZih0aGlzLl9ibG9ja05vZGUobmV3IEFXKCQsUSxKKSksWSl0aGlzLmNvZGUoWSkuZW5kRnVuYygpO3JldHVybiB0aGlzfWVuZEZ1bmMoKXtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKEFXKX1vcHRpbWl6ZSgkPTEpe3doaWxlKCQtLSA+MCl0aGlzLl9yb290Lm9wdGltaXplTm9kZXMoKSx0aGlzLl9yb290Lm9wdGltaXplTmFtZXModGhpcy5fcm9vdC5uYW1lcyx0aGlzLl9jb25zdGFudHMpfV9sZWFmTm9kZSgkKXtyZXR1cm4gdGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaCgkKSx0aGlzfV9ibG9ja05vZGUoJCl7dGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaCgkKSx0aGlzLl9ub2Rlcy5wdXNoKCQpfV9lbmRCbG9ja05vZGUoJCxRKXtsZXQgSj10aGlzLl9jdXJyTm9kZTtpZihKIGluc3RhbmNlb2YgJHx8USYmSiBpbnN0YW5jZW9mIFEpcmV0dXJuIHRoaXMuX25vZGVzLnBvcCgpLHRoaXM7dGhyb3cgRXJyb3IoYENvZGVHZW46IG5vdCBpbiBibG9jayBcIiR7UT9gJHskLmtpbmR9LyR7US5raW5kfWA6JC5raW5kfVwiYCl9X2Vsc2VOb2RlKCQpe2xldCBRPXRoaXMuX2N1cnJOb2RlO2lmKCEoUSBpbnN0YW5jZW9mIFExKSl0aHJvdyBFcnJvcignQ29kZUdlbjogXCJlbHNlXCIgd2l0aG91dCBcImlmXCInKTtyZXR1cm4gdGhpcy5fY3Vyck5vZGU9US5lbHNlPSQsdGhpc31nZXQgX3Jvb3QoKXtyZXR1cm4gdGhpcy5fbm9kZXNbMF19Z2V0IF9jdXJyTm9kZSgpe2xldCAkPXRoaXMuX25vZGVzO3JldHVybiAkWyQubGVuZ3RoLTFdfXNldCBfY3Vyck5vZGUoJCl7bGV0IFE9dGhpcy5fbm9kZXM7UVtRLmxlbmd0aC0xXT0kfX1QNi5Db2RlR2VuPUVqO2Z1bmN0aW9uIFQwKCQsUSl7Zm9yKGxldCBKIGluIFEpJFtKXT0oJFtKXXx8MCkrKFFbSl18fDApO3JldHVybiAkfWZ1bmN0aW9uIEVXKCQsUSl7cmV0dXJuIFEgaW5zdGFuY2VvZiBLJC5fQ29kZU9yTmFtZT9UMCgkLFEubmFtZXMpOiR9ZnVuY3Rpb24gTjkoJCxRLEope2lmKCQgaW5zdGFuY2VvZiBLJC5OYW1lKXJldHVybiBZKCQpO2lmKCFYKCQpKXJldHVybiAkO3JldHVybiBuZXcgSyQuX0NvZGUoJC5faXRlbXMucmVkdWNlKChXLEcpPT57aWYoRyBpbnN0YW5jZW9mIEskLk5hbWUpRz1ZKEcpO2lmKEcgaW5zdGFuY2VvZiBLJC5fQ29kZSlXLnB1c2goLi4uRy5faXRlbXMpO2Vsc2UgVy5wdXNoKEcpO3JldHVybiBXfSxbXSkpO2Z1bmN0aW9uIFkoVyl7bGV0IEc9SltXLnN0cl07aWYoRz09PXZvaWQgMHx8UVtXLnN0cl0hPT0xKXJldHVybiBXO3JldHVybiBkZWxldGUgUVtXLnN0cl0sR31mdW5jdGlvbiBYKFcpe3JldHVybiBXIGluc3RhbmNlb2YgSyQuX0NvZGUmJlcuX2l0ZW1zLnNvbWUoKEcpPT5HIGluc3RhbmNlb2YgSyQuTmFtZSYmUVtHLnN0cl09PT0xJiZKW0cuc3RyXSE9PXZvaWQgMCl9fWZ1bmN0aW9uIGZwKCQsUSl7Zm9yKGxldCBKIGluIFEpJFtKXT0oJFtKXXx8MCktKFFbSl18fDApfWZ1bmN0aW9uIGJqKCQpe3JldHVybiB0eXBlb2YgJD09XCJib29sZWFuXCJ8fHR5cGVvZiAkPT1cIm51bWJlclwifHwkPT09bnVsbD8hJDpLJC5fYCEke0FCKCQpfWB9UDYubm90PWJqO3ZhciB5cD1faihQNi5vcGVyYXRvcnMuQU5EKTtmdW5jdGlvbiBncCguLi4kKXtyZXR1cm4gJC5yZWR1Y2UoeXApfVA2LmFuZD1ncDt2YXIgaHA9X2ooUDYub3BlcmF0b3JzLk9SKTtmdW5jdGlvbiB1cCguLi4kKXtyZXR1cm4gJC5yZWR1Y2UoaHApfVA2Lm9yPXVwO2Z1bmN0aW9uIF9qKCQpe3JldHVybihRLEopPT5RPT09SyQubmlsP0o6Sj09PUskLm5pbD9ROkskLl9gJHtBQihRKX0gJHskfSAke0FCKEopfWB9ZnVuY3Rpb24gQUIoJCl7cmV0dXJuICQgaW5zdGFuY2VvZiBLJC5OYW1lPyQ6SyQuX2AoJHskfSlgfX0pO3ZhciBxJD1JKChnaik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2osXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Z2ouY2hlY2tTdHJpY3RNb2RlPWdqLmdldEVycm9yUGF0aD1nai5UeXBlPWdqLnVzZUZ1bmM9Z2ouc2V0RXZhbHVhdGVkPWdqLmV2YWx1YXRlZFByb3BzVG9OYW1lPWdqLm1lcmdlRXZhbHVhdGVkPWdqLmVhY2hJdGVtPWdqLnVuZXNjYXBlSnNvblBvaW50ZXI9Z2ouZXNjYXBlSnNvblBvaW50ZXI9Z2ouZXNjYXBlRnJhZ21lbnQ9Z2oudW5lc2NhcGVGcmFnbWVudD1nai5zY2hlbWFSZWZPclZhbD1nai5zY2hlbWFIYXNSdWxlc0J1dFJlZj1nai5zY2hlbWFIYXNSdWxlcz1nai5jaGVja1Vua25vd25SdWxlcz1nai5hbHdheXNWYWxpZFNjaGVtYT1nai50b0hhc2g9dm9pZCAwO3ZhciBQJD1RJCgpLHBwPWJKKCk7ZnVuY3Rpb24gZHAoJCl7bGV0IFE9e307Zm9yKGxldCBKIG9mICQpUVtKXT0hMDtyZXR1cm4gUX1nai50b0hhc2g9ZHA7ZnVuY3Rpb24gaXAoJCxRKXtpZih0eXBlb2YgUT09XCJib29sZWFuXCIpcmV0dXJuIFE7aWYoT2JqZWN0LmtleXMoUSkubGVuZ3RoPT09MClyZXR1cm4hMDtyZXR1cm4gQ2ooJCxRKSwhVGooUSwkLnNlbGYuUlVMRVMuYWxsKX1nai5hbHdheXNWYWxpZFNjaGVtYT1pcDtmdW5jdGlvbiBDaigkLFE9JC5zY2hlbWEpe2xldHtvcHRzOkosc2VsZjpZfT0kO2lmKCFKLnN0cmljdFNjaGVtYSlyZXR1cm47aWYodHlwZW9mIFE9PT1cImJvb2xlYW5cIilyZXR1cm47bGV0IFg9WS5SVUxFUy5rZXl3b3Jkcztmb3IobGV0IFcgaW4gUSlpZighWFtXXSl5aigkLGB1bmtub3duIGtleXdvcmQ6IFwiJHtXfVwiYCl9Z2ouY2hlY2tVbmtub3duUnVsZXM9Q2o7ZnVuY3Rpb24gVGooJCxRKXtpZih0eXBlb2YgJD09XCJib29sZWFuXCIpcmV0dXJuISQ7Zm9yKGxldCBKIGluICQpaWYoUVtKXSlyZXR1cm4hMDtyZXR1cm4hMX1nai5zY2hlbWFIYXNSdWxlcz1UajtmdW5jdGlvbiBucCgkLFEpe2lmKHR5cGVvZiAkPT1cImJvb2xlYW5cIilyZXR1cm4hJDtmb3IobGV0IEogaW4gJClpZihKIT09XCIkcmVmXCImJlEuYWxsW0pdKXJldHVybiEwO3JldHVybiExfWdqLnNjaGVtYUhhc1J1bGVzQnV0UmVmPW5wO2Z1bmN0aW9uIHJwKHt0b3BTY2hlbWFSZWY6JCxzY2hlbWFQYXRoOlF9LEosWSxYKXtpZighWCl7aWYodHlwZW9mIEo9PVwibnVtYmVyXCJ8fHR5cGVvZiBKPT1cImJvb2xlYW5cIilyZXR1cm4gSjtpZih0eXBlb2YgSj09XCJzdHJpbmdcIilyZXR1cm4gUCQuX2Ake0p9YH1yZXR1cm4gUCQuX2AkeyR9JHtRfSR7KDAsUCQuZ2V0UHJvcGVydHkpKFkpfWB9Z2ouc2NoZW1hUmVmT3JWYWw9cnA7ZnVuY3Rpb24gb3AoJCl7cmV0dXJuIHhqKGRlY29kZVVSSUNvbXBvbmVudCgkKSl9Z2oudW5lc2NhcGVGcmFnbWVudD1vcDtmdW5jdGlvbiB0cCgkKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFBCKCQpKX1nai5lc2NhcGVGcmFnbWVudD10cDtmdW5jdGlvbiBQQigkKXtpZih0eXBlb2YgJD09XCJudW1iZXJcIilyZXR1cm5gJHskfWA7cmV0dXJuICQucmVwbGFjZSgvfi9nLFwifjBcIikucmVwbGFjZSgvXFwvL2csXCJ+MVwiKX1nai5lc2NhcGVKc29uUG9pbnRlcj1QQjtmdW5jdGlvbiB4aigkKXtyZXR1cm4gJC5yZXBsYWNlKC9+MS9nLFwiL1wiKS5yZXBsYWNlKC9+MC9nLFwiflwiKX1nai51bmVzY2FwZUpzb25Qb2ludGVyPXhqO2Z1bmN0aW9uIGFwKCQsUSl7aWYoQXJyYXkuaXNBcnJheSgkKSlmb3IobGV0IEogb2YgJClRKEopO2Vsc2UgUSgkKX1nai5lYWNoSXRlbT1hcDtmdW5jdGlvbiBraih7bWVyZ2VOYW1lczokLG1lcmdlVG9OYW1lOlEsbWVyZ2VWYWx1ZXM6SixyZXN1bHRUb05hbWU6WX0pe3JldHVybihYLFcsRyxVKT0+e2xldCBIPUc9PT12b2lkIDA/VzpHIGluc3RhbmNlb2YgUCQuTmFtZT8oVyBpbnN0YW5jZW9mIFAkLk5hbWU/JChYLFcsRyk6UShYLFcsRyksRyk6VyBpbnN0YW5jZW9mIFAkLk5hbWU/KFEoWCxHLFcpLFcpOkooVyxHKTtyZXR1cm4gVT09PVAkLk5hbWUmJiEoSCBpbnN0YW5jZW9mIFAkLk5hbWUpP1koWCxIKTpIfX1nai5tZXJnZUV2YWx1YXRlZD17cHJvcHM6a2ooe21lcmdlTmFtZXM6KCQsUSxKKT0+JC5pZihQJC5fYCR7Sn0gIT09IHRydWUgJiYgJHtRfSAhPT0gdW5kZWZpbmVkYCwoKT0+eyQuaWYoUCQuX2Ake1F9ID09PSB0cnVlYCwoKT0+JC5hc3NpZ24oSiwhMCksKCk9PiQuYXNzaWduKEosUCQuX2Ake0p9IHx8IHt9YCkuY29kZShQJC5fYE9iamVjdC5hc3NpZ24oJHtKfSwgJHtRfSlgKSl9KSxtZXJnZVRvTmFtZTooJCxRLEopPT4kLmlmKFAkLl9gJHtKfSAhPT0gdHJ1ZWAsKCk9PntpZihRPT09ITApJC5hc3NpZ24oSiwhMCk7ZWxzZSAkLmFzc2lnbihKLFAkLl9gJHtKfSB8fCB7fWApLEVCKCQsSixRKX0pLG1lcmdlVmFsdWVzOigkLFEpPT4kPT09ITA/ITA6ey4uLiQsLi4uUX0scmVzdWx0VG9OYW1lOmZqfSksaXRlbXM6a2ooe21lcmdlTmFtZXM6KCQsUSxKKT0+JC5pZihQJC5fYCR7Sn0gIT09IHRydWUgJiYgJHtRfSAhPT0gdW5kZWZpbmVkYCwoKT0+JC5hc3NpZ24oSixQJC5fYCR7UX0gPT09IHRydWUgPyB0cnVlIDogJHtKfSA+ICR7UX0gPyAke0p9IDogJHtRfWApKSxtZXJnZVRvTmFtZTooJCxRLEopPT4kLmlmKFAkLl9gJHtKfSAhPT0gdHJ1ZWAsKCk9PiQuYXNzaWduKEosUT09PSEwPyEwOlAkLl9gJHtKfSA+ICR7UX0gPyAke0p9IDogJHtRfWApKSxtZXJnZVZhbHVlczooJCxRKT0+JD09PSEwPyEwOk1hdGgubWF4KCQsUSkscmVzdWx0VG9OYW1lOigkLFEpPT4kLnZhcihcIml0ZW1zXCIsUSl9KX07ZnVuY3Rpb24gZmooJCxRKXtpZihRPT09ITApcmV0dXJuICQudmFyKFwicHJvcHNcIiwhMCk7bGV0IEo9JC52YXIoXCJwcm9wc1wiLFAkLl9ge31gKTtpZihRIT09dm9pZCAwKUVCKCQsSixRKTtyZXR1cm4gSn1nai5ldmFsdWF0ZWRQcm9wc1RvTmFtZT1majtmdW5jdGlvbiBFQigkLFEsSil7T2JqZWN0LmtleXMoSikuZm9yRWFjaCgoWSk9PiQuYXNzaWduKFAkLl9gJHtRfSR7KDAsUCQuZ2V0UHJvcGVydHkpKFkpfWAsITApKX1nai5zZXRFdmFsdWF0ZWQ9RUI7dmFyIHZqPXt9O2Z1bmN0aW9uIHNwKCQsUSl7cmV0dXJuICQuc2NvcGVWYWx1ZShcImZ1bmNcIix7cmVmOlEsY29kZTp2altRLmNvZGVdfHwodmpbUS5jb2RlXT1uZXcgcHAuX0NvZGUoUS5jb2RlKSl9KX1nai51c2VGdW5jPXNwO3ZhciBSQjsoZnVuY3Rpb24oJCl7JFskLk51bT0wXT1cIk51bVwiLCRbJC5TdHI9MV09XCJTdHJcIn0pKFJCfHwoZ2ouVHlwZT1SQj17fSkpO2Z1bmN0aW9uIGVwKCQsUSxKKXtpZigkIGluc3RhbmNlb2YgUCQuTmFtZSl7bGV0IFk9UT09PVJCLk51bTtyZXR1cm4gSj9ZP1AkLl9gXCJbXCIgKyAkeyR9ICsgXCJdXCJgOlAkLl9gXCJbJ1wiICsgJHskfSArIFwiJ11cImA6WT9QJC5fYFwiL1wiICsgJHskfWA6UCQuX2BcIi9cIiArICR7JH0ucmVwbGFjZSgvfi9nLCBcIn4wXCIpLnJlcGxhY2UoL1xcXFwvL2csIFwifjFcIilgfXJldHVybiBKPygwLFAkLmdldFByb3BlcnR5KSgkKS50b1N0cmluZygpOlwiL1wiK1BCKCQpfWdqLmdldEVycm9yUGF0aD1lcDtmdW5jdGlvbiB5aigkLFEsSj0kLm9wdHMuc3RyaWN0U2NoZW1hKXtpZighSilyZXR1cm47aWYoUT1gc3RyaWN0IG1vZGU6ICR7UX1gLEo9PT0hMCl0aHJvdyBFcnJvcihRKTskLnNlbGYubG9nZ2VyLndhcm4oUSl9Z2ouY2hlY2tTdHJpY3RNb2RlPXlqfSk7dmFyIEoxPUkoKHVqKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1aixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgSzY9USQoKSxEZD17ZGF0YTpuZXcgSzYuTmFtZShcImRhdGFcIiksdmFsQ3h0Om5ldyBLNi5OYW1lKFwidmFsQ3h0XCIpLGluc3RhbmNlUGF0aDpuZXcgSzYuTmFtZShcImluc3RhbmNlUGF0aFwiKSxwYXJlbnREYXRhOm5ldyBLNi5OYW1lKFwicGFyZW50RGF0YVwiKSxwYXJlbnREYXRhUHJvcGVydHk6bmV3IEs2Lk5hbWUoXCJwYXJlbnREYXRhUHJvcGVydHlcIikscm9vdERhdGE6bmV3IEs2Lk5hbWUoXCJyb290RGF0YVwiKSxkeW5hbWljQW5jaG9yczpuZXcgSzYuTmFtZShcImR5bmFtaWNBbmNob3JzXCIpLHZFcnJvcnM6bmV3IEs2Lk5hbWUoXCJ2RXJyb3JzXCIpLGVycm9yczpuZXcgSzYuTmFtZShcImVycm9yc1wiKSx0aGlzOm5ldyBLNi5OYW1lKFwidGhpc1wiKSxzZWxmOm5ldyBLNi5OYW1lKFwic2VsZlwiKSxzY29wZTpuZXcgSzYuTmFtZShcInNjb3BlXCIpLGpzb246bmV3IEs2Lk5hbWUoXCJqc29uXCIpLGpzb25Qb3M6bmV3IEs2Lk5hbWUoXCJqc29uUG9zXCIpLGpzb25MZW46bmV3IEs2Lk5hbWUoXCJqc29uTGVuXCIpLGpzb25QYXJ0Om5ldyBLNi5OYW1lKFwianNvblBhcnRcIil9O3VqLmRlZmF1bHQ9RGR9KTt2YXIgU0o9SSgocGopPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHBqLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3BqLmV4dGVuZEVycm9ycz1wai5yZXNldEVycm9yc0NvdW50PXBqLnJlcG9ydEV4dHJhRXJyb3I9cGoucmVwb3J0RXJyb3I9cGoua2V5d29yZCREYXRhRXJyb3I9cGoua2V5d29yZEVycm9yPXZvaWQgMDt2YXIgViQ9USQoKSxrVz1xJCgpLHc2PUoxKCk7cGoua2V5d29yZEVycm9yPXttZXNzYWdlOih7a2V5d29yZDokfSk9PlYkLnN0cmBtdXN0IHBhc3MgXCIkeyR9XCIga2V5d29yZCB2YWxpZGF0aW9uYH07cGoua2V5d29yZCREYXRhRXJyb3I9e21lc3NhZ2U6KHtrZXl3b3JkOiQsc2NoZW1hVHlwZTpRfSk9PlE/ViQuc3RyYFwiJHskfVwiIGtleXdvcmQgbXVzdCBiZSAke1F9ICgkZGF0YSlgOlYkLnN0cmBcIiR7JH1cIiBrZXl3b3JkIGlzIGludmFsaWQgKCRkYXRhKWB9O2Z1bmN0aW9uIFpkKCQsUT1wai5rZXl3b3JkRXJyb3IsSixZKXtsZXR7aXQ6WH09JCx7Z2VuOlcsY29tcG9zaXRlUnVsZTpHLGFsbEVycm9yczpVfT1YLEg9Y2ooJCxRLEopO2lmKFkhPT1udWxsJiZZIT09dm9pZCAwP1k6R3x8VSltaihXLEgpO2Vsc2UgbGooWCxWJC5fYFske0h9XWApfXBqLnJlcG9ydEVycm9yPVpkO2Z1bmN0aW9uIE1kKCQsUT1wai5rZXl3b3JkRXJyb3IsSil7bGV0e2l0Oll9PSQse2dlbjpYLGNvbXBvc2l0ZVJ1bGU6VyxhbGxFcnJvcnM6R309WSxVPWNqKCQsUSxKKTtpZihtaihYLFUpLCEoV3x8RykpbGooWSx3Ni5kZWZhdWx0LnZFcnJvcnMpfXBqLnJlcG9ydEV4dHJhRXJyb3I9TWQ7ZnVuY3Rpb24gTGQoJCxRKXskLmFzc2lnbih3Ni5kZWZhdWx0LmVycm9ycyxRKSwkLmlmKFYkLl9gJHt3Ni5kZWZhdWx0LnZFcnJvcnN9ICE9PSBudWxsYCwoKT0+JC5pZihRLCgpPT4kLmFzc2lnbihWJC5fYCR7dzYuZGVmYXVsdC52RXJyb3JzfS5sZW5ndGhgLFEpLCgpPT4kLmFzc2lnbih3Ni5kZWZhdWx0LnZFcnJvcnMsbnVsbCkpKX1wai5yZXNldEVycm9yc0NvdW50PUxkO2Z1bmN0aW9uIGpkKHtnZW46JCxrZXl3b3JkOlEsc2NoZW1hVmFsdWU6SixkYXRhOlksZXJyc0NvdW50OlgsaXQ6V30pe2lmKFg9PT12b2lkIDApdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7bGV0IEc9JC5uYW1lKFwiZXJyXCIpOyQuZm9yUmFuZ2UoXCJpXCIsWCx3Ni5kZWZhdWx0LmVycm9ycywoVSk9PntpZigkLmNvbnN0KEcsViQuX2Ake3c2LmRlZmF1bHQudkVycm9yc31bJHtVfV1gKSwkLmlmKFYkLl9gJHtHfS5pbnN0YW5jZVBhdGggPT09IHVuZGVmaW5lZGAsKCk9PiQuYXNzaWduKFYkLl9gJHtHfS5pbnN0YW5jZVBhdGhgLCgwLFYkLnN0ckNvbmNhdCkodzYuZGVmYXVsdC5pbnN0YW5jZVBhdGgsVy5lcnJvclBhdGgpKSksJC5hc3NpZ24oViQuX2Ake0d9LnNjaGVtYVBhdGhgLFYkLnN0cmAke1cuZXJyU2NoZW1hUGF0aH0vJHtRfWApLFcub3B0cy52ZXJib3NlKSQuYXNzaWduKFYkLl9gJHtHfS5zY2hlbWFgLEopLCQuYXNzaWduKFYkLl9gJHtHfS5kYXRhYCxZKX0pfXBqLmV4dGVuZEVycm9ycz1qZDtmdW5jdGlvbiBtaigkLFEpe2xldCBKPSQuY29uc3QoXCJlcnJcIixRKTskLmlmKFYkLl9gJHt3Ni5kZWZhdWx0LnZFcnJvcnN9ID09PSBudWxsYCwoKT0+JC5hc3NpZ24odzYuZGVmYXVsdC52RXJyb3JzLFYkLl9gWyR7Sn1dYCksViQuX2Ake3c2LmRlZmF1bHQudkVycm9yc30ucHVzaCgke0p9KWApLCQuY29kZShWJC5fYCR7dzYuZGVmYXVsdC5lcnJvcnN9KytgKX1mdW5jdGlvbiBsaigkLFEpe2xldHtnZW46Six2YWxpZGF0ZU5hbWU6WSxzY2hlbWFFbnY6WH09JDtpZihYLiRhc3luYylKLnRocm93KFYkLl9gbmV3ICR7JC5WYWxpZGF0aW9uRXJyb3J9KCR7UX0pYCk7ZWxzZSBKLmFzc2lnbihWJC5fYCR7WX0uZXJyb3JzYCxRKSxKLnJldHVybighMSl9dmFyIHgwPXtrZXl3b3JkOm5ldyBWJC5OYW1lKFwia2V5d29yZFwiKSxzY2hlbWFQYXRoOm5ldyBWJC5OYW1lKFwic2NoZW1hUGF0aFwiKSxwYXJhbXM6bmV3IFYkLk5hbWUoXCJwYXJhbXNcIikscHJvcGVydHlOYW1lOm5ldyBWJC5OYW1lKFwicHJvcGVydHlOYW1lXCIpLG1lc3NhZ2U6bmV3IFYkLk5hbWUoXCJtZXNzYWdlXCIpLHNjaGVtYTpuZXcgViQuTmFtZShcInNjaGVtYVwiKSxwYXJlbnRTY2hlbWE6bmV3IFYkLk5hbWUoXCJwYXJlbnRTY2hlbWFcIil9O2Z1bmN0aW9uIGNqKCQsUSxKKXtsZXR7Y3JlYXRlRXJyb3JzOll9PSQuaXQ7aWYoWT09PSExKXJldHVybiBWJC5fYHt9YDtyZXR1cm4gQWQoJCxRLEopfWZ1bmN0aW9uIEFkKCQsUSxKPXt9KXtsZXR7Z2VuOlksaXQ6WH09JCxXPVtJZChYLEopLFJkKCQsSildO3JldHVybiBQZCgkLFEsVyksWS5vYmplY3QoLi4uVyl9ZnVuY3Rpb24gSWQoe2Vycm9yUGF0aDokfSx7aW5zdGFuY2VQYXRoOlF9KXtsZXQgSj1RP1YkLnN0cmAkeyR9JHsoMCxrVy5nZXRFcnJvclBhdGgpKFEsa1cuVHlwZS5TdHIpfWA6JDtyZXR1cm5bdzYuZGVmYXVsdC5pbnN0YW5jZVBhdGgsKDAsViQuc3RyQ29uY2F0KSh3Ni5kZWZhdWx0Lmluc3RhbmNlUGF0aCxKKV19ZnVuY3Rpb24gUmQoe2tleXdvcmQ6JCxpdDp7ZXJyU2NoZW1hUGF0aDpRfX0se3NjaGVtYVBhdGg6SixwYXJlbnRTY2hlbWE6WX0pe2xldCBYPVk/UTpWJC5zdHJgJHtRfS8keyR9YDtpZihKKVg9ViQuc3RyYCR7WH0keygwLGtXLmdldEVycm9yUGF0aCkoSixrVy5UeXBlLlN0cil9YDtyZXR1cm5beDAuc2NoZW1hUGF0aCxYXX1mdW5jdGlvbiBQZCgkLHtwYXJhbXM6USxtZXNzYWdlOkp9LFkpe2xldHtrZXl3b3JkOlgsZGF0YTpXLHNjaGVtYVZhbHVlOkcsaXQ6VX09JCx7b3B0czpILHByb3BlcnR5TmFtZTpxLHRvcFNjaGVtYVJlZjpWLHNjaGVtYVBhdGg6Qn09VTtpZihZLnB1c2goW3gwLmtleXdvcmQsWF0sW3gwLnBhcmFtcyx0eXBlb2YgUT09XCJmdW5jdGlvblwiP1EoJCk6UXx8ViQuX2B7fWBdKSxILm1lc3NhZ2VzKVkucHVzaChbeDAubWVzc2FnZSx0eXBlb2YgSj09XCJmdW5jdGlvblwiP0ooJCk6Sl0pO2lmKEgudmVyYm9zZSlZLnB1c2goW3gwLnNjaGVtYSxHXSxbeDAucGFyZW50U2NoZW1hLFYkLl9gJHtWfSR7Qn1gXSxbdzYuZGVmYXVsdC5kYXRhLFddKTtpZihxKVkucHVzaChbeDAucHJvcGVydHlOYW1lLHFdKX19KTt2YXIgb2o9SSgobmopPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KG5qLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO25qLmJvb2xPckVtcHR5U2NoZW1hPW5qLnRvcEJvb2xPckVtcHR5U2NoZW1hPXZvaWQgMDt2YXIga2Q9U0ooKSx2ZD1RJCgpLENkPUoxKCksVGQ9e21lc3NhZ2U6XCJib29sZWFuIHNjaGVtYSBpcyBmYWxzZVwifTtmdW5jdGlvbiB4ZCgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosdmFsaWRhdGVOYW1lOll9PSQ7aWYoSj09PSExKWlqKCQsITEpO2Vsc2UgaWYodHlwZW9mIEo9PVwib2JqZWN0XCImJkouJGFzeW5jPT09ITApUS5yZXR1cm4oQ2QuZGVmYXVsdC5kYXRhKTtlbHNlIFEuYXNzaWduKHZkLl9gJHtZfS5lcnJvcnNgLG51bGwpLFEucmV0dXJuKCEwKX1uai50b3BCb29sT3JFbXB0eVNjaGVtYT14ZDtmdW5jdGlvbiBmZCgkLFEpe2xldHtnZW46SixzY2hlbWE6WX09JDtpZihZPT09ITEpSi52YXIoUSwhMSksaWooJCk7ZWxzZSBKLnZhcihRLCEwKX1uai5ib29sT3JFbXB0eVNjaGVtYT1mZDtmdW5jdGlvbiBpaigkLFEpe2xldHtnZW46SixkYXRhOll9PSQsWD17Z2VuOkosa2V5d29yZDpcImZhbHNlIHNjaGVtYVwiLGRhdGE6WSxzY2hlbWE6ITEsc2NoZW1hQ29kZTohMSxzY2hlbWFWYWx1ZTohMSxwYXJhbXM6e30saXQ6JH07KDAsa2QucmVwb3J0RXJyb3IpKFgsVGQsdm9pZCAwLFEpfX0pO3ZhciBfQj1JKCh0aik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodGosXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dGouZ2V0UnVsZXM9dGouaXNKU09OVHlwZT12b2lkIDA7dmFyIGdkPVtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJpbnRlZ2VyXCIsXCJib29sZWFuXCIsXCJudWxsXCIsXCJvYmplY3RcIixcImFycmF5XCJdLGhkPW5ldyBTZXQoZ2QpO2Z1bmN0aW9uIHVkKCQpe3JldHVybiB0eXBlb2YgJD09XCJzdHJpbmdcIiYmaGQuaGFzKCQpfXRqLmlzSlNPTlR5cGU9dWQ7ZnVuY3Rpb24gbWQoKXtsZXQgJD17bnVtYmVyOnt0eXBlOlwibnVtYmVyXCIscnVsZXM6W119LHN0cmluZzp7dHlwZTpcInN0cmluZ1wiLHJ1bGVzOltdfSxhcnJheTp7dHlwZTpcImFycmF5XCIscnVsZXM6W119LG9iamVjdDp7dHlwZTpcIm9iamVjdFwiLHJ1bGVzOltdfX07cmV0dXJue3R5cGVzOnsuLi4kLGludGVnZXI6ITAsYm9vbGVhbjohMCxudWxsOiEwfSxydWxlczpbe3J1bGVzOltdfSwkLm51bWJlciwkLnN0cmluZywkLmFycmF5LCQub2JqZWN0XSxwb3N0OntydWxlczpbXX0sYWxsOnt9LGtleXdvcmRzOnt9fX10ai5nZXRSdWxlcz1tZH0pO3ZhciBTQj1JKCgkQSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoJEEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7JEEuc2hvdWxkVXNlUnVsZT0kQS5zaG91bGRVc2VHcm91cD0kQS5zY2hlbWFIYXNSdWxlc0ZvclR5cGU9dm9pZCAwO2Z1bmN0aW9uIGNkKHtzY2hlbWE6JCxzZWxmOlF9LEope2xldCBZPVEuUlVMRVMudHlwZXNbSl07cmV0dXJuIFkmJlkhPT0hMCYmc2ooJCxZKX0kQS5zY2hlbWFIYXNSdWxlc0ZvclR5cGU9Y2Q7ZnVuY3Rpb24gc2ooJCxRKXtyZXR1cm4gUS5ydWxlcy5zb21lKChKKT0+ZWooJCxKKSl9JEEuc2hvdWxkVXNlR3JvdXA9c2o7ZnVuY3Rpb24gZWooJCxRKXt2YXIgSjtyZXR1cm4gJFtRLmtleXdvcmRdIT09dm9pZCAwfHwoKEo9US5kZWZpbml0aW9uLmltcGxlbWVudHMpPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si5zb21lKChZKT0+JFtZXSE9PXZvaWQgMCkpfSRBLnNob3VsZFVzZVJ1bGU9ZWp9KTt2YXIga0o9SSgoV0EpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFdBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1dBLnJlcG9ydFR5cGVFcnJvcj1XQS5jaGVja0RhdGFUeXBlcz1XQS5jaGVja0RhdGFUeXBlPVdBLmNvZXJjZUFuZENoZWNrRGF0YVR5cGU9V0EuZ2V0SlNPTlR5cGVzPVdBLmdldFNjaGVtYVR5cGVzPVdBLkRhdGFUeXBlPXZvaWQgMDt2YXIgaWQ9X0IoKSxuZD1TQigpLHJkPVNKKCksJCQ9USQoKSxKQT1xJCgpLHc5OyhmdW5jdGlvbigkKXskWyQuQ29ycmVjdD0wXT1cIkNvcnJlY3RcIiwkWyQuV3Jvbmc9MV09XCJXcm9uZ1wifSkodzl8fChXQS5EYXRhVHlwZT13OT17fSkpO2Z1bmN0aW9uIG9kKCQpe2xldCBRPVhBKCQudHlwZSk7aWYoUS5pbmNsdWRlcyhcIm51bGxcIikpe2lmKCQubnVsbGFibGU9PT0hMSl0aHJvdyBFcnJvcihcInR5cGU6IG51bGwgY29udHJhZGljdHMgbnVsbGFibGU6IGZhbHNlXCIpfWVsc2V7aWYoIVEubGVuZ3RoJiYkLm51bGxhYmxlIT09dm9pZCAwKXRocm93IEVycm9yKCdcIm51bGxhYmxlXCIgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBcInR5cGVcIicpO2lmKCQubnVsbGFibGU9PT0hMClRLnB1c2goXCJudWxsXCIpfXJldHVybiBRfVdBLmdldFNjaGVtYVR5cGVzPW9kO2Z1bmN0aW9uIFhBKCQpe2xldCBRPUFycmF5LmlzQXJyYXkoJCk/JDokP1skXTpbXTtpZihRLmV2ZXJ5KGlkLmlzSlNPTlR5cGUpKXJldHVybiBRO3Rocm93IEVycm9yKFwidHlwZSBtdXN0IGJlIEpTT05UeXBlIG9yIEpTT05UeXBlW106IFwiK1Euam9pbihcIixcIikpfVdBLmdldEpTT05UeXBlcz1YQTtmdW5jdGlvbiB0ZCgkLFEpe2xldHtnZW46SixkYXRhOlksb3B0czpYfT0kLFc9YWQoUSxYLmNvZXJjZVR5cGVzKSxHPVEubGVuZ3RoPjAmJiEoVy5sZW5ndGg9PT0wJiZRLmxlbmd0aD09PTEmJigwLG5kLnNjaGVtYUhhc1J1bGVzRm9yVHlwZSkoJCxRWzBdKSk7aWYoRyl7bGV0IFU9dkIoUSxZLFguc3RyaWN0TnVtYmVycyx3OS5Xcm9uZyk7Si5pZihVLCgpPT57aWYoVy5sZW5ndGgpc2QoJCxRLFcpO2Vsc2UgQ0IoJCl9KX1yZXR1cm4gR31XQS5jb2VyY2VBbmRDaGVja0RhdGFUeXBlPXRkO3ZhciBZQT1uZXcgU2V0KFtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJpbnRlZ2VyXCIsXCJib29sZWFuXCIsXCJudWxsXCJdKTtmdW5jdGlvbiBhZCgkLFEpe3JldHVybiBRPyQuZmlsdGVyKChKKT0+WUEuaGFzKEopfHxRPT09XCJhcnJheVwiJiZKPT09XCJhcnJheVwiKTpbXX1mdW5jdGlvbiBzZCgkLFEsSil7bGV0e2dlbjpZLGRhdGE6WCxvcHRzOld9PSQsRz1ZLmxldChcImRhdGFUeXBlXCIsJCQuX2B0eXBlb2YgJHtYfWApLFU9WS5sZXQoXCJjb2VyY2VkXCIsJCQuX2B1bmRlZmluZWRgKTtpZihXLmNvZXJjZVR5cGVzPT09XCJhcnJheVwiKVkuaWYoJCQuX2Ake0d9ID09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoJHtYfSkgJiYgJHtYfS5sZW5ndGggPT0gMWAsKCk9PlkuYXNzaWduKFgsJCQuX2Ake1h9WzBdYCkuYXNzaWduKEcsJCQuX2B0eXBlb2YgJHtYfWApLmlmKHZCKFEsWCxXLnN0cmljdE51bWJlcnMpLCgpPT5ZLmFzc2lnbihVLFgpKSk7WS5pZigkJC5fYCR7VX0gIT09IHVuZGVmaW5lZGApO2ZvcihsZXQgcSBvZiBKKWlmKFlBLmhhcyhxKXx8cT09PVwiYXJyYXlcIiYmVy5jb2VyY2VUeXBlcz09PVwiYXJyYXlcIilIKHEpO1kuZWxzZSgpLENCKCQpLFkuZW5kSWYoKSxZLmlmKCQkLl9gJHtVfSAhPT0gdW5kZWZpbmVkYCwoKT0+e1kuYXNzaWduKFgsVSksZWQoJCxVKX0pO2Z1bmN0aW9uIEgocSl7c3dpdGNoKHEpe2Nhc2VcInN0cmluZ1wiOlkuZWxzZUlmKCQkLl9gJHtHfSA9PSBcIm51bWJlclwiIHx8ICR7R30gPT0gXCJib29sZWFuXCJgKS5hc3NpZ24oVSwkJC5fYFwiXCIgKyAke1h9YCkuZWxzZUlmKCQkLl9gJHtYfSA9PT0gbnVsbGApLmFzc2lnbihVLCQkLl9gXCJcImApO3JldHVybjtjYXNlXCJudW1iZXJcIjpZLmVsc2VJZigkJC5fYCR7R30gPT0gXCJib29sZWFuXCIgfHwgJHtYfSA9PT0gbnVsbFxuICAgICAgICAgICAgICB8fCAoJHtHfSA9PSBcInN0cmluZ1wiICYmICR7WH0gJiYgJHtYfSA9PSArJHtYfSlgKS5hc3NpZ24oVSwkJC5fYCske1h9YCk7cmV0dXJuO2Nhc2VcImludGVnZXJcIjpZLmVsc2VJZigkJC5fYCR7R30gPT09IFwiYm9vbGVhblwiIHx8ICR7WH0gPT09IG51bGxcbiAgICAgICAgICAgICAgfHwgKCR7R30gPT09IFwic3RyaW5nXCIgJiYgJHtYfSAmJiAke1h9ID09ICske1h9ICYmICEoJHtYfSAlIDEpKWApLmFzc2lnbihVLCQkLl9gKyR7WH1gKTtyZXR1cm47Y2FzZVwiYm9vbGVhblwiOlkuZWxzZUlmKCQkLl9gJHtYfSA9PT0gXCJmYWxzZVwiIHx8ICR7WH0gPT09IDAgfHwgJHtYfSA9PT0gbnVsbGApLmFzc2lnbihVLCExKS5lbHNlSWYoJCQuX2Ake1h9ID09PSBcInRydWVcIiB8fCAke1h9ID09PSAxYCkuYXNzaWduKFUsITApO3JldHVybjtjYXNlXCJudWxsXCI6WS5lbHNlSWYoJCQuX2Ake1h9ID09PSBcIlwiIHx8ICR7WH0gPT09IDAgfHwgJHtYfSA9PT0gZmFsc2VgKSxZLmFzc2lnbihVLG51bGwpO3JldHVybjtjYXNlXCJhcnJheVwiOlkuZWxzZUlmKCQkLl9gJHtHfSA9PT0gXCJzdHJpbmdcIiB8fCAke0d9ID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICAgIHx8ICR7R30gPT09IFwiYm9vbGVhblwiIHx8ICR7WH0gPT09IG51bGxgKS5hc3NpZ24oVSwkJC5fYFske1h9XWApfX19ZnVuY3Rpb24gZWQoe2dlbjokLHBhcmVudERhdGE6USxwYXJlbnREYXRhUHJvcGVydHk6Sn0sWSl7JC5pZigkJC5fYCR7UX0gIT09IHVuZGVmaW5lZGAsKCk9PiQuYXNzaWduKCQkLl9gJHtRfVske0p9XWAsWSkpfWZ1bmN0aW9uIGtCKCQsUSxKLFk9dzkuQ29ycmVjdCl7bGV0IFg9WT09PXc5LkNvcnJlY3Q/JCQub3BlcmF0b3JzLkVROiQkLm9wZXJhdG9ycy5ORVEsVztzd2l0Y2goJCl7Y2FzZVwibnVsbFwiOnJldHVybiAkJC5fYCR7UX0gJHtYfSBudWxsYDtjYXNlXCJhcnJheVwiOlc9JCQuX2BBcnJheS5pc0FycmF5KCR7UX0pYDticmVhaztjYXNlXCJvYmplY3RcIjpXPSQkLl9gJHtRfSAmJiB0eXBlb2YgJHtRfSA9PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KCR7UX0pYDticmVhaztjYXNlXCJpbnRlZ2VyXCI6Vz1HKCQkLl9gISgke1F9ICUgMSkgJiYgIWlzTmFOKCR7UX0pYCk7YnJlYWs7Y2FzZVwibnVtYmVyXCI6Vz1HKCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gJCQuX2B0eXBlb2YgJHtRfSAke1h9ICR7JH1gfXJldHVybiBZPT09dzkuQ29ycmVjdD9XOigwLCQkLm5vdCkoVyk7ZnVuY3Rpb24gRyhVPSQkLm5pbCl7cmV0dXJuKDAsJCQuYW5kKSgkJC5fYHR5cGVvZiAke1F9ID09IFwibnVtYmVyXCJgLFUsSj8kJC5fYGlzRmluaXRlKCR7UX0pYDokJC5uaWwpfX1XQS5jaGVja0RhdGFUeXBlPWtCO2Z1bmN0aW9uIHZCKCQsUSxKLFkpe2lmKCQubGVuZ3RoPT09MSlyZXR1cm4ga0IoJFswXSxRLEosWSk7bGV0IFgsVz0oMCxKQS50b0hhc2gpKCQpO2lmKFcuYXJyYXkmJlcub2JqZWN0KXtsZXQgRz0kJC5fYHR5cGVvZiAke1F9ICE9IFwib2JqZWN0XCJgO1g9Vy5udWxsP0c6JCQuX2AhJHtRfSB8fCAke0d9YCxkZWxldGUgVy5udWxsLGRlbGV0ZSBXLmFycmF5LGRlbGV0ZSBXLm9iamVjdH1lbHNlIFg9JCQubmlsO2lmKFcubnVtYmVyKWRlbGV0ZSBXLmludGVnZXI7Zm9yKGxldCBHIGluIFcpWD0oMCwkJC5hbmQpKFgsa0IoRyxRLEosWSkpO3JldHVybiBYfVdBLmNoZWNrRGF0YVR5cGVzPXZCO3ZhciAkaT17bWVzc2FnZTooe3NjaGVtYTokfSk9PmBtdXN0IGJlICR7JH1gLHBhcmFtczooe3NjaGVtYTokLHNjaGVtYVZhbHVlOlF9KT0+dHlwZW9mICQ9PVwic3RyaW5nXCI/JCQuX2B7dHlwZTogJHskfX1gOiQkLl9ge3R5cGU6ICR7UX19YH07ZnVuY3Rpb24gQ0IoJCl7bGV0IFE9UWkoJCk7KDAscmQucmVwb3J0RXJyb3IpKFEsJGkpfVdBLnJlcG9ydFR5cGVFcnJvcj1DQjtmdW5jdGlvbiBRaSgkKXtsZXR7Z2VuOlEsZGF0YTpKLHNjaGVtYTpZfT0kLFg9KDAsSkEuc2NoZW1hUmVmT3JWYWwpKCQsWSxcInR5cGVcIik7cmV0dXJue2dlbjpRLGtleXdvcmQ6XCJ0eXBlXCIsZGF0YTpKLHNjaGVtYTpZLnR5cGUsc2NoZW1hQ29kZTpYLHNjaGVtYVZhbHVlOlgscGFyZW50U2NoZW1hOlkscGFyYW1zOnt9LGl0OiR9fX0pO3ZhciBxQT1JKChIQSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoSEEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7SEEuYXNzaWduRGVmYXVsdHM9dm9pZCAwO3ZhciBPOT1RJCgpLEhpPXEkKCk7ZnVuY3Rpb24gS2koJCxRKXtsZXR7cHJvcGVydGllczpKLGl0ZW1zOll9PSQuc2NoZW1hO2lmKFE9PT1cIm9iamVjdFwiJiZKKWZvcihsZXQgWCBpbiBKKVVBKCQsWCxKW1hdLmRlZmF1bHQpO2Vsc2UgaWYoUT09PVwiYXJyYXlcIiYmQXJyYXkuaXNBcnJheShZKSlZLmZvckVhY2goKFgsVyk9PlVBKCQsVyxYLmRlZmF1bHQpKX1IQS5hc3NpZ25EZWZhdWx0cz1LaTtmdW5jdGlvbiBVQSgkLFEsSil7bGV0e2dlbjpZLGNvbXBvc2l0ZVJ1bGU6WCxkYXRhOlcsb3B0czpHfT0kO2lmKEo9PT12b2lkIDApcmV0dXJuO2xldCBVPU85Ll9gJHtXfSR7KDAsTzkuZ2V0UHJvcGVydHkpKFEpfWA7aWYoWCl7KDAsSGkuY2hlY2tTdHJpY3RNb2RlKSgkLGBkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAke1V9YCk7cmV0dXJufWxldCBIPU85Ll9gJHtVfSA9PT0gdW5kZWZpbmVkYDtpZihHLnVzZURlZmF1bHRzPT09XCJlbXB0eVwiKUg9TzkuX2Ake0h9IHx8ICR7VX0gPT09IG51bGwgfHwgJHtVfSA9PT0gXCJcImA7WS5pZihILE85Ll9gJHtVfSA9ICR7KDAsTzkuc3RyaW5naWZ5KShKKX1gKX19KTt2YXIgJDQ9SSgoekEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHpBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3pBLnZhbGlkYXRlVW5pb249ekEudmFsaWRhdGVBcnJheT16QS51c2VQYXR0ZXJuPXpBLmNhbGxWYWxpZGF0ZUNvZGU9ekEuc2NoZW1hUHJvcGVydGllcz16QS5hbGxTY2hlbWFQcm9wZXJ0aWVzPXpBLm5vUHJvcGVydHlJbkRhdGE9ekEucHJvcGVydHlJbkRhdGE9ekEuaXNPd25Qcm9wZXJ0eT16QS5oYXNQcm9wRnVuYz16QS5yZXBvcnRNaXNzaW5nUHJvcD16QS5jaGVja01pc3NpbmdQcm9wPXpBLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3A9dm9pZCAwO3ZhciBrJD1RJCgpLFRCPXEkKCksaDE9SjEoKSxxaT1xJCgpO2Z1bmN0aW9uIFZpKCQsUSl7bGV0e2dlbjpKLGRhdGE6WSxpdDpYfT0kO0ouaWYoZkIoSixZLFEsWC5vcHRzLm93blByb3BlcnRpZXMpLCgpPT57JC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTprJC5fYCR7UX1gfSwhMCksJC5lcnJvcigpfSl9ekEuY2hlY2tSZXBvcnRNaXNzaW5nUHJvcD1WaTtmdW5jdGlvbiBCaSh7Z2VuOiQsZGF0YTpRLGl0OntvcHRzOkp9fSxZLFgpe3JldHVybigwLGskLm9yKSguLi5ZLm1hcCgoVyk9PigwLGskLmFuZCkoZkIoJCxRLFcsSi5vd25Qcm9wZXJ0aWVzKSxrJC5fYCR7WH0gPSAke1d9YCkpKX16QS5jaGVja01pc3NpbmdQcm9wPUJpO2Z1bmN0aW9uIHppKCQsUSl7JC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTpRfSwhMCksJC5lcnJvcigpfXpBLnJlcG9ydE1pc3NpbmdQcm9wPXppO2Z1bmN0aW9uIFZBKCQpe3JldHVybiAkLnNjb3BlVmFsdWUoXCJmdW5jXCIse3JlZjpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGNvZGU6ayQuX2BPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5YH0pfXpBLmhhc1Byb3BGdW5jPVZBO2Z1bmN0aW9uIHhCKCQsUSxKKXtyZXR1cm4gayQuX2Ake1ZBKCQpfS5jYWxsKCR7UX0sICR7Sn0pYH16QS5pc093blByb3BlcnR5PXhCO2Z1bmN0aW9uIE5pKCQsUSxKLFkpe2xldCBYPWskLl9gJHtRfSR7KDAsayQuZ2V0UHJvcGVydHkpKEopfSAhPT0gdW5kZWZpbmVkYDtyZXR1cm4gWT9rJC5fYCR7WH0gJiYgJHt4QigkLFEsSil9YDpYfXpBLnByb3BlcnR5SW5EYXRhPU5pO2Z1bmN0aW9uIGZCKCQsUSxKLFkpe2xldCBYPWskLl9gJHtRfSR7KDAsayQuZ2V0UHJvcGVydHkpKEopfSA9PT0gdW5kZWZpbmVkYDtyZXR1cm4gWT8oMCxrJC5vcikoWCwoMCxrJC5ub3QpKHhCKCQsUSxKKSkpOlh9ekEubm9Qcm9wZXJ0eUluRGF0YT1mQjtmdW5jdGlvbiBCQSgkKXtyZXR1cm4gJD9PYmplY3Qua2V5cygkKS5maWx0ZXIoKFEpPT5RIT09XCJfX3Byb3RvX19cIik6W119ekEuYWxsU2NoZW1hUHJvcGVydGllcz1CQTtmdW5jdGlvbiB3aSgkLFEpe3JldHVybiBCQShRKS5maWx0ZXIoKEopPT4hKDAsVEIuYWx3YXlzVmFsaWRTY2hlbWEpKCQsUVtKXSkpfXpBLnNjaGVtYVByb3BlcnRpZXM9d2k7ZnVuY3Rpb24gT2koe3NjaGVtYUNvZGU6JCxkYXRhOlEsaXQ6e2dlbjpKLHRvcFNjaGVtYVJlZjpZLHNjaGVtYVBhdGg6WCxlcnJvclBhdGg6V30saXQ6R30sVSxILHEpe2xldCBWPXE/ayQuX2AkeyR9LCAke1F9LCAke1l9JHtYfWA6USxCPVtbaDEuZGVmYXVsdC5pbnN0YW5jZVBhdGgsKDAsayQuc3RyQ29uY2F0KShoMS5kZWZhdWx0Lmluc3RhbmNlUGF0aCxXKV0sW2gxLmRlZmF1bHQucGFyZW50RGF0YSxHLnBhcmVudERhdGFdLFtoMS5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eSxHLnBhcmVudERhdGFQcm9wZXJ0eV0sW2gxLmRlZmF1bHQucm9vdERhdGEsaDEuZGVmYXVsdC5yb290RGF0YV1dO2lmKEcub3B0cy5keW5hbWljUmVmKUIucHVzaChbaDEuZGVmYXVsdC5keW5hbWljQW5jaG9ycyxoMS5kZWZhdWx0LmR5bmFtaWNBbmNob3JzXSk7bGV0IHo9ayQuX2Ake1Z9LCAke0oub2JqZWN0KC4uLkIpfWA7cmV0dXJuIEghPT1rJC5uaWw/ayQuX2Ake1V9LmNhbGwoJHtIfSwgJHt6fSlgOmskLl9gJHtVfSgke3p9KWB9ekEuY2FsbFZhbGlkYXRlQ29kZT1PaTt2YXIgRGk9ayQuX2BuZXcgUmVnRXhwYDtmdW5jdGlvbiBGaSh7Z2VuOiQsaXQ6e29wdHM6UX19LEope2xldCBZPVEudW5pY29kZVJlZ0V4cD9cInVcIjpcIlwiLHtyZWdFeHA6WH09US5jb2RlLFc9WChKLFkpO3JldHVybiAkLnNjb3BlVmFsdWUoXCJwYXR0ZXJuXCIse2tleTpXLnRvU3RyaW5nKCkscmVmOlcsY29kZTprJC5fYCR7WC5jb2RlPT09XCJuZXcgUmVnRXhwXCI/RGk6KDAscWkudXNlRnVuYykoJCxYKX0oJHtKfSwgJHtZfSlgfSl9ekEudXNlUGF0dGVybj1GaTtmdW5jdGlvbiBaaSgkKXtsZXR7Z2VuOlEsZGF0YTpKLGtleXdvcmQ6WSxpdDpYfT0kLFc9US5uYW1lKFwidmFsaWRcIik7aWYoWC5hbGxFcnJvcnMpe2xldCBVPVEubGV0KFwidmFsaWRcIiwhMCk7cmV0dXJuIEcoKCk9PlEuYXNzaWduKFUsITEpKSxVfXJldHVybiBRLnZhcihXLCEwKSxHKCgpPT5RLmJyZWFrKCkpLFc7ZnVuY3Rpb24gRyhVKXtsZXQgSD1RLmNvbnN0KFwibGVuXCIsayQuX2Ake0p9Lmxlbmd0aGApO1EuZm9yUmFuZ2UoXCJpXCIsMCxILChxKT0+eyQuc3Vic2NoZW1hKHtrZXl3b3JkOlksZGF0YVByb3A6cSxkYXRhUHJvcFR5cGU6VEIuVHlwZS5OdW19LFcpLFEuaWYoKDAsayQubm90KShXKSxVKX0pfX16QS52YWxpZGF0ZUFycmF5PVppO2Z1bmN0aW9uIE1pKCQpe2xldHtnZW46USxzY2hlbWE6SixrZXl3b3JkOlksaXQ6WH09JDtpZighQXJyYXkuaXNBcnJheShKKSl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtpZihKLnNvbWUoKEgpPT4oMCxUQi5hbHdheXNWYWxpZFNjaGVtYSkoWCxIKSkmJiFYLm9wdHMudW5ldmFsdWF0ZWQpcmV0dXJuO2xldCBHPVEubGV0KFwidmFsaWRcIiwhMSksVT1RLm5hbWUoXCJfdmFsaWRcIik7US5ibG9jaygoKT0+Si5mb3JFYWNoKChILHEpPT57bGV0IFY9JC5zdWJzY2hlbWEoe2tleXdvcmQ6WSxzY2hlbWFQcm9wOnEsY29tcG9zaXRlUnVsZTohMH0sVSk7aWYoUS5hc3NpZ24oRyxrJC5fYCR7R30gfHwgJHtVfWApLCEkLm1lcmdlVmFsaWRFdmFsdWF0ZWQoVixVKSlRLmlmKCgwLGskLm5vdCkoRykpfSkpLCQucmVzdWx0KEcsKCk9PiQucmVzZXQoKSwoKT0+JC5lcnJvcighMCkpfXpBLnZhbGlkYXRlVW5pb249TWl9KTt2YXIgWkE9SSgoREEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KERBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0RBLnZhbGlkYXRlS2V5d29yZFVzYWdlPURBLnZhbGlkU2NoZW1hVHlwZT1EQS5mdW5jS2V5d29yZENvZGU9REEubWFjcm9LZXl3b3JkQ29kZT12b2lkIDA7dmFyIE82PVEkKCksZjA9SjEoKSxDaT0kNCgpLFRpPVNKKCk7ZnVuY3Rpb24geGkoJCxRKXtsZXR7Z2VuOkosa2V5d29yZDpZLHNjaGVtYTpYLHBhcmVudFNjaGVtYTpXLGl0Okd9PSQsVT1RLm1hY3JvLmNhbGwoRy5zZWxmLFgsVyxHKSxIPU9BKEosWSxVKTtpZihHLm9wdHMudmFsaWRhdGVTY2hlbWEhPT0hMSlHLnNlbGYudmFsaWRhdGVTY2hlbWEoVSwhMCk7bGV0IHE9Si5uYW1lKFwidmFsaWRcIik7JC5zdWJzY2hlbWEoe3NjaGVtYTpVLHNjaGVtYVBhdGg6TzYubmlsLGVyclNjaGVtYVBhdGg6YCR7Ry5lcnJTY2hlbWFQYXRofS8ke1l9YCx0b3BTY2hlbWFSZWY6SCxjb21wb3NpdGVSdWxlOiEwfSxxKSwkLnBhc3MocSwoKT0+JC5lcnJvcighMCkpfURBLm1hY3JvS2V5d29yZENvZGU9eGk7ZnVuY3Rpb24gZmkoJCxRKXt2YXIgSjtsZXR7Z2VuOlksa2V5d29yZDpYLHNjaGVtYTpXLHBhcmVudFNjaGVtYTpHLCRkYXRhOlUsaXQ6SH09JDtnaShILFEpO2xldCBxPSFVJiZRLmNvbXBpbGU/US5jb21waWxlLmNhbGwoSC5zZWxmLFcsRyxIKTpRLnZhbGlkYXRlLFY9T0EoWSxYLHEpLEI9WS5sZXQoXCJ2YWxpZFwiKTskLmJsb2NrJGRhdGEoQix6KSwkLm9rKChKPVEudmFsaWQpIT09bnVsbCYmSiE9PXZvaWQgMD9KOkIpO2Z1bmN0aW9uIHooKXtpZihRLmVycm9ycz09PSExKXtpZihPKCksUS5tb2RpZnlpbmcpd0EoJCk7RCgoKT0+JC5lcnJvcigpKX1lbHNle2xldCBNPVEuYXN5bmM/TigpOncoKTtpZihRLm1vZGlmeWluZyl3QSgkKTtEKCgpPT55aSgkLE0pKX19ZnVuY3Rpb24gTigpe2xldCBNPVkubGV0KFwicnVsZUVycnNcIixudWxsKTtyZXR1cm4gWS50cnkoKCk9Pk8oTzYuX2Bhd2FpdCBgKSwoaik9PlkuYXNzaWduKEIsITEpLmlmKE82Ll9gJHtqfSBpbnN0YW5jZW9mICR7SC5WYWxpZGF0aW9uRXJyb3J9YCwoKT0+WS5hc3NpZ24oTSxPNi5fYCR7an0uZXJyb3JzYCksKCk9PlkudGhyb3coaikpKSxNfWZ1bmN0aW9uIHcoKXtsZXQgTT1PNi5fYCR7Vn0uZXJyb3JzYDtyZXR1cm4gWS5hc3NpZ24oTSxudWxsKSxPKE82Lm5pbCksTX1mdW5jdGlvbiBPKE09US5hc3luYz9PNi5fYGF3YWl0IGA6TzYubmlsKXtsZXQgaj1ILm9wdHMucGFzc0NvbnRleHQ/ZjAuZGVmYXVsdC50aGlzOmYwLmRlZmF1bHQuc2VsZixBPSEoKFwiY29tcGlsZVwiaW4gUSkmJiFVfHxRLnNjaGVtYT09PSExKTtZLmFzc2lnbihCLE82Ll9gJHtNfSR7KDAsQ2kuY2FsbFZhbGlkYXRlQ29kZSkoJCxWLGosQSl9YCxRLm1vZGlmeWluZyl9ZnVuY3Rpb24gRChNKXt2YXIgajtZLmlmKCgwLE82Lm5vdCkoKGo9US52YWxpZCkhPT1udWxsJiZqIT09dm9pZCAwP2o6QiksTSl9fURBLmZ1bmNLZXl3b3JkQ29kZT1maTtmdW5jdGlvbiB3QSgkKXtsZXR7Z2VuOlEsZGF0YTpKLGl0Oll9PSQ7US5pZihZLnBhcmVudERhdGEsKCk9PlEuYXNzaWduKEosTzYuX2Ake1kucGFyZW50RGF0YX1bJHtZLnBhcmVudERhdGFQcm9wZXJ0eX1dYCkpfWZ1bmN0aW9uIHlpKCQsUSl7bGV0e2dlbjpKfT0kO0ouaWYoTzYuX2BBcnJheS5pc0FycmF5KCR7UX0pYCwoKT0+e0ouYXNzaWduKGYwLmRlZmF1bHQudkVycm9ycyxPNi5fYCR7ZjAuZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbCA/ICR7UX0gOiAke2YwLmRlZmF1bHQudkVycm9yc30uY29uY2F0KCR7UX0pYCkuYXNzaWduKGYwLmRlZmF1bHQuZXJyb3JzLE82Ll9gJHtmMC5kZWZhdWx0LnZFcnJvcnN9Lmxlbmd0aGApLCgwLFRpLmV4dGVuZEVycm9ycykoJCl9LCgpPT4kLmVycm9yKCkpfWZ1bmN0aW9uIGdpKHtzY2hlbWFFbnY6JH0sUSl7aWYoUS5hc3luYyYmISQuJGFzeW5jKXRocm93IEVycm9yKFwiYXN5bmMga2V5d29yZCBpbiBzeW5jIHNjaGVtYVwiKX1mdW5jdGlvbiBPQSgkLFEsSil7aWYoSj09PXZvaWQgMCl0aHJvdyBFcnJvcihga2V5d29yZCBcIiR7UX1cIiBmYWlsZWQgdG8gY29tcGlsZWApO3JldHVybiAkLnNjb3BlVmFsdWUoXCJrZXl3b3JkXCIsdHlwZW9mIEo9PVwiZnVuY3Rpb25cIj97cmVmOkp9OntyZWY6Sixjb2RlOigwLE82LnN0cmluZ2lmeSkoSil9KX1mdW5jdGlvbiBoaSgkLFEsSj0hMSl7cmV0dXJuIVEubGVuZ3RofHxRLnNvbWUoKFkpPT5ZPT09XCJhcnJheVwiP0FycmF5LmlzQXJyYXkoJCk6WT09PVwib2JqZWN0XCI/JCYmdHlwZW9mICQ9PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KCQpOnR5cGVvZiAkPT1ZfHxKJiZ0eXBlb2YgJD5cInVcIil9REEudmFsaWRTY2hlbWFUeXBlPWhpO2Z1bmN0aW9uIHVpKHtzY2hlbWE6JCxvcHRzOlEsc2VsZjpKLGVyclNjaGVtYVBhdGg6WX0sWCxXKXtpZihBcnJheS5pc0FycmF5KFgua2V5d29yZCk/IVgua2V5d29yZC5pbmNsdWRlcyhXKTpYLmtleXdvcmQhPT1XKXRocm93IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpO2xldCBHPVguZGVwZW5kZW5jaWVzO2lmKEc9PT1udWxsfHxHPT09dm9pZCAwP3ZvaWQgMDpHLnNvbWUoKFUpPT4hT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCQsVSkpKXRocm93IEVycm9yKGBwYXJlbnQgc2NoZW1hIG11c3QgaGF2ZSBkZXBlbmRlbmNpZXMgb2YgJHtXfTogJHtHLmpvaW4oXCIsXCIpfWApO2lmKFgudmFsaWRhdGVTY2hlbWEpe2lmKCFYLnZhbGlkYXRlU2NoZW1hKCRbV10pKXtsZXQgSD1ga2V5d29yZCBcIiR7V31cIiB2YWx1ZSBpcyBpbnZhbGlkIGF0IHBhdGggXCIke1l9XCI6IGArSi5lcnJvcnNUZXh0KFgudmFsaWRhdGVTY2hlbWEuZXJyb3JzKTtpZihRLnZhbGlkYXRlU2NoZW1hPT09XCJsb2dcIilKLmxvZ2dlci5lcnJvcihIKTtlbHNlIHRocm93IEVycm9yKEgpfX19REEudmFsaWRhdGVLZXl3b3JkVXNhZ2U9dWl9KTt2YXIgQUE9SSgoTEEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KExBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0xBLmV4dGVuZFN1YnNjaGVtYU1vZGU9TEEuZXh0ZW5kU3Vic2NoZW1hRGF0YT1MQS5nZXRTdWJzY2hlbWE9dm9pZCAwO3ZhciBfND1RJCgpLE1BPXEkKCk7ZnVuY3Rpb24gcGkoJCx7a2V5d29yZDpRLHNjaGVtYVByb3A6SixzY2hlbWE6WSxzY2hlbWFQYXRoOlgsZXJyU2NoZW1hUGF0aDpXLHRvcFNjaGVtYVJlZjpHfSl7aWYoUSE9PXZvaWQgMCYmWSE9PXZvaWQgMCl0aHJvdyBFcnJvcignYm90aCBcImtleXdvcmRcIiBhbmQgXCJzY2hlbWFcIiBwYXNzZWQsIG9ubHkgb25lIGFsbG93ZWQnKTtpZihRIT09dm9pZCAwKXtsZXQgVT0kLnNjaGVtYVtRXTtyZXR1cm4gSj09PXZvaWQgMD97c2NoZW1hOlUsc2NoZW1hUGF0aDpfNC5fYCR7JC5zY2hlbWFQYXRofSR7KDAsXzQuZ2V0UHJvcGVydHkpKFEpfWAsZXJyU2NoZW1hUGF0aDpgJHskLmVyclNjaGVtYVBhdGh9LyR7UX1gfTp7c2NoZW1hOlVbSl0sc2NoZW1hUGF0aDpfNC5fYCR7JC5zY2hlbWFQYXRofSR7KDAsXzQuZ2V0UHJvcGVydHkpKFEpfSR7KDAsXzQuZ2V0UHJvcGVydHkpKEopfWAsZXJyU2NoZW1hUGF0aDpgJHskLmVyclNjaGVtYVBhdGh9LyR7UX0vJHsoMCxNQS5lc2NhcGVGcmFnbWVudCkoSil9YH19aWYoWSE9PXZvaWQgMCl7aWYoWD09PXZvaWQgMHx8Vz09PXZvaWQgMHx8Rz09PXZvaWQgMCl0aHJvdyBFcnJvcignXCJzY2hlbWFQYXRoXCIsIFwiZXJyU2NoZW1hUGF0aFwiIGFuZCBcInRvcFNjaGVtYVJlZlwiIGFyZSByZXF1aXJlZCB3aXRoIFwic2NoZW1hXCInKTtyZXR1cm57c2NoZW1hOlksc2NoZW1hUGF0aDpYLHRvcFNjaGVtYVJlZjpHLGVyclNjaGVtYVBhdGg6V319dGhyb3cgRXJyb3IoJ2VpdGhlciBcImtleXdvcmRcIiBvciBcInNjaGVtYVwiIG11c3QgYmUgcGFzc2VkJyl9TEEuZ2V0U3Vic2NoZW1hPXBpO2Z1bmN0aW9uIGRpKCQsUSx7ZGF0YVByb3A6SixkYXRhUHJvcFR5cGU6WSxkYXRhOlgsZGF0YVR5cGVzOlcscHJvcGVydHlOYW1lOkd9KXtpZihYIT09dm9pZCAwJiZKIT09dm9pZCAwKXRocm93IEVycm9yKCdib3RoIFwiZGF0YVwiIGFuZCBcImRhdGFQcm9wXCIgcGFzc2VkLCBvbmx5IG9uZSBhbGxvd2VkJyk7bGV0e2dlbjpVfT1RO2lmKEohPT12b2lkIDApe2xldHtlcnJvclBhdGg6cSxkYXRhUGF0aEFycjpWLG9wdHM6Qn09USx6PVUubGV0KFwiZGF0YVwiLF80Ll9gJHtRLmRhdGF9JHsoMCxfNC5nZXRQcm9wZXJ0eSkoSil9YCwhMCk7SCh6KSwkLmVycm9yUGF0aD1fNC5zdHJgJHtxfSR7KDAsTUEuZ2V0RXJyb3JQYXRoKShKLFksQi5qc1Byb3BlcnR5U3ludGF4KX1gLCQucGFyZW50RGF0YVByb3BlcnR5PV80Ll9gJHtKfWAsJC5kYXRhUGF0aEFycj1bLi4uViwkLnBhcmVudERhdGFQcm9wZXJ0eV19aWYoWCE9PXZvaWQgMCl7bGV0IHE9WCBpbnN0YW5jZW9mIF80Lk5hbWU/WDpVLmxldChcImRhdGFcIixYLCEwKTtpZihIKHEpLEchPT12b2lkIDApJC5wcm9wZXJ0eU5hbWU9R31pZihXKSQuZGF0YVR5cGVzPVc7ZnVuY3Rpb24gSChxKXskLmRhdGE9cSwkLmRhdGFMZXZlbD1RLmRhdGFMZXZlbCsxLCQuZGF0YVR5cGVzPVtdLFEuZGVmaW5lZFByb3BlcnRpZXM9bmV3IFNldCwkLnBhcmVudERhdGE9US5kYXRhLCQuZGF0YU5hbWVzPVsuLi5RLmRhdGFOYW1lcyxxXX19TEEuZXh0ZW5kU3Vic2NoZW1hRGF0YT1kaTtmdW5jdGlvbiBpaSgkLHtqdGREaXNjcmltaW5hdG9yOlEsanRkTWV0YWRhdGE6Sixjb21wb3NpdGVSdWxlOlksY3JlYXRlRXJyb3JzOlgsYWxsRXJyb3JzOld9KXtpZihZIT09dm9pZCAwKSQuY29tcG9zaXRlUnVsZT1ZO2lmKFghPT12b2lkIDApJC5jcmVhdGVFcnJvcnM9WDtpZihXIT09dm9pZCAwKSQuYWxsRXJyb3JzPVc7JC5qdGREaXNjcmltaW5hdG9yPVEsJC5qdGRNZXRhZGF0YT1KfUxBLmV4dGVuZFN1YnNjaGVtYU1vZGU9aWl9KTt2YXIgeUI9SSgoWXckLElBKT0+e0lBLmV4cG9ydHM9ZnVuY3Rpb24gJChRLEope2lmKFE9PT1KKXJldHVybiEwO2lmKFEmJkomJnR5cGVvZiBRPT1cIm9iamVjdFwiJiZ0eXBlb2YgSj09XCJvYmplY3RcIil7aWYoUS5jb25zdHJ1Y3RvciE9PUouY29uc3RydWN0b3IpcmV0dXJuITE7dmFyIFksWCxXO2lmKEFycmF5LmlzQXJyYXkoUSkpe2lmKFk9US5sZW5ndGgsWSE9Si5sZW5ndGgpcmV0dXJuITE7Zm9yKFg9WTtYLS0hPT0wOylpZighJChRW1hdLEpbWF0pKXJldHVybiExO3JldHVybiEwfWlmKFEuY29uc3RydWN0b3I9PT1SZWdFeHApcmV0dXJuIFEuc291cmNlPT09Si5zb3VyY2UmJlEuZmxhZ3M9PT1KLmZsYWdzO2lmKFEudmFsdWVPZiE9PU9iamVjdC5wcm90b3R5cGUudmFsdWVPZilyZXR1cm4gUS52YWx1ZU9mKCk9PT1KLnZhbHVlT2YoKTtpZihRLnRvU3RyaW5nIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZylyZXR1cm4gUS50b1N0cmluZygpPT09Si50b1N0cmluZygpO2lmKFc9T2JqZWN0LmtleXMoUSksWT1XLmxlbmd0aCxZIT09T2JqZWN0LmtleXMoSikubGVuZ3RoKXJldHVybiExO2ZvcihYPVk7WC0tIT09MDspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChKLFdbWF0pKXJldHVybiExO2ZvcihYPVk7WC0tIT09MDspe3ZhciBHPVdbWF07aWYoISQoUVtHXSxKW0ddKSlyZXR1cm4hMX1yZXR1cm4hMH1yZXR1cm4gUSE9PVEmJkohPT1KfX0pO3ZhciBQQT1JKChXdyQsUkEpPT57dmFyIHUxPVJBLmV4cG9ydHM9ZnVuY3Rpb24oJCxRLEope2lmKHR5cGVvZiBRPT1cImZ1bmN0aW9uXCIpSj1RLFE9e307Sj1RLmNifHxKO3ZhciBZPXR5cGVvZiBKPT1cImZ1bmN0aW9uXCI/SjpKLnByZXx8ZnVuY3Rpb24oKXt9LFg9Si5wb3N0fHxmdW5jdGlvbigpe307dlcoUSxZLFgsJCxcIlwiLCQpfTt1MS5rZXl3b3Jkcz17YWRkaXRpb25hbEl0ZW1zOiEwLGl0ZW1zOiEwLGNvbnRhaW5zOiEwLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiEwLHByb3BlcnR5TmFtZXM6ITAsbm90OiEwLGlmOiEwLHRoZW46ITAsZWxzZTohMH07dTEuYXJyYXlLZXl3b3Jkcz17aXRlbXM6ITAsYWxsT2Y6ITAsYW55T2Y6ITAsb25lT2Y6ITB9O3UxLnByb3BzS2V5d29yZHM9eyRkZWZzOiEwLGRlZmluaXRpb25zOiEwLHByb3BlcnRpZXM6ITAscGF0dGVyblByb3BlcnRpZXM6ITAsZGVwZW5kZW5jaWVzOiEwfTt1MS5za2lwS2V5d29yZHM9e2RlZmF1bHQ6ITAsZW51bTohMCxjb25zdDohMCxyZXF1aXJlZDohMCxtYXhpbXVtOiEwLG1pbmltdW06ITAsZXhjbHVzaXZlTWF4aW11bTohMCxleGNsdXNpdmVNaW5pbXVtOiEwLG11bHRpcGxlT2Y6ITAsbWF4TGVuZ3RoOiEwLG1pbkxlbmd0aDohMCxwYXR0ZXJuOiEwLGZvcm1hdDohMCxtYXhJdGVtczohMCxtaW5JdGVtczohMCx1bmlxdWVJdGVtczohMCxtYXhQcm9wZXJ0aWVzOiEwLG1pblByb3BlcnRpZXM6ITB9O2Z1bmN0aW9uIHZXKCQsUSxKLFksWCxXLEcsVSxILHEpe2lmKFkmJnR5cGVvZiBZPT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheShZKSl7UShZLFgsVyxHLFUsSCxxKTtmb3IodmFyIFYgaW4gWSl7dmFyIEI9WVtWXTtpZihBcnJheS5pc0FycmF5KEIpKXtpZihWIGluIHUxLmFycmF5S2V5d29yZHMpZm9yKHZhciB6PTA7ejxCLmxlbmd0aDt6KyspdlcoJCxRLEosQlt6XSxYK1wiL1wiK1YrXCIvXCIreixXLFgsVixZLHopfWVsc2UgaWYoViBpbiB1MS5wcm9wc0tleXdvcmRzKXtpZihCJiZ0eXBlb2YgQj09XCJvYmplY3RcIilmb3IodmFyIE4gaW4gQil2VygkLFEsSixCW05dLFgrXCIvXCIrVitcIi9cIitvaShOKSxXLFgsVixZLE4pfWVsc2UgaWYoViBpbiB1MS5rZXl3b3Jkc3x8JC5hbGxLZXlzJiYhKFYgaW4gdTEuc2tpcEtleXdvcmRzKSl2VygkLFEsSixCLFgrXCIvXCIrVixXLFgsVixZKX1KKFksWCxXLEcsVSxILHEpfX1mdW5jdGlvbiBvaSgkKXtyZXR1cm4gJC5yZXBsYWNlKC9+L2csXCJ+MFwiKS5yZXBsYWNlKC9cXC8vZyxcIn4xXCIpfX0pO3ZhciB2Sj1JKChTQSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoU0EsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7U0EuZ2V0U2NoZW1hUmVmcz1TQS5yZXNvbHZlVXJsPVNBLm5vcm1hbGl6ZUlkPVNBLl9nZXRGdWxsUGF0aD1TQS5nZXRGdWxsUGF0aD1TQS5pbmxpbmVSZWY9dm9pZCAwO3ZhciB0aT1xJCgpLGFpPXlCKCksc2k9UEEoKSxlaT1uZXcgU2V0KFtcInR5cGVcIixcImZvcm1hdFwiLFwicGF0dGVyblwiLFwibWF4TGVuZ3RoXCIsXCJtaW5MZW5ndGhcIixcIm1heFByb3BlcnRpZXNcIixcIm1pblByb3BlcnRpZXNcIixcIm1heEl0ZW1zXCIsXCJtaW5JdGVtc1wiLFwibWF4aW11bVwiLFwibWluaW11bVwiLFwidW5pcXVlSXRlbXNcIixcIm11bHRpcGxlT2ZcIixcInJlcXVpcmVkXCIsXCJlbnVtXCIsXCJjb25zdFwiXSk7ZnVuY3Rpb24gJG4oJCxRPSEwKXtpZih0eXBlb2YgJD09XCJib29sZWFuXCIpcmV0dXJuITA7aWYoUT09PSEwKXJldHVybiFnQigkKTtpZighUSlyZXR1cm4hMTtyZXR1cm4gRUEoJCk8PVF9U0EuaW5saW5lUmVmPSRuO3ZhciBRbj1uZXcgU2V0KFtcIiRyZWZcIixcIiRyZWN1cnNpdmVSZWZcIixcIiRyZWN1cnNpdmVBbmNob3JcIixcIiRkeW5hbWljUmVmXCIsXCIkZHluYW1pY0FuY2hvclwiXSk7ZnVuY3Rpb24gZ0IoJCl7Zm9yKGxldCBRIGluICQpe2lmKFFuLmhhcyhRKSlyZXR1cm4hMDtsZXQgSj0kW1FdO2lmKEFycmF5LmlzQXJyYXkoSikmJkouc29tZShnQikpcmV0dXJuITA7aWYodHlwZW9mIEo9PVwib2JqZWN0XCImJmdCKEopKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEVBKCQpe2xldCBRPTA7Zm9yKGxldCBKIGluICQpe2lmKEo9PT1cIiRyZWZcIilyZXR1cm4gMS8wO2lmKFErKyxlaS5oYXMoSikpY29udGludWU7aWYodHlwZW9mICRbSl09PVwib2JqZWN0XCIpKDAsdGkuZWFjaEl0ZW0pKCRbSl0sKFkpPT5RKz1FQShZKSk7aWYoUT09PTEvMClyZXR1cm4gMS8wfXJldHVybiBRfWZ1bmN0aW9uIGJBKCQsUT1cIlwiLEope2lmKEohPT0hMSlRPUQ5KFEpO2xldCBZPSQucGFyc2UoUSk7cmV0dXJuIF9BKCQsWSl9U0EuZ2V0RnVsbFBhdGg9YkE7ZnVuY3Rpb24gX0EoJCxRKXtyZXR1cm4gJC5zZXJpYWxpemUoUSkuc3BsaXQoXCIjXCIpWzBdK1wiI1wifVNBLl9nZXRGdWxsUGF0aD1fQTt2YXIgSm49LyNcXC8/JC87ZnVuY3Rpb24gRDkoJCl7cmV0dXJuICQ/JC5yZXBsYWNlKEpuLFwiXCIpOlwiXCJ9U0Eubm9ybWFsaXplSWQ9RDk7ZnVuY3Rpb24gWG4oJCxRLEope3JldHVybiBKPUQ5KEopLCQucmVzb2x2ZShRLEopfVNBLnJlc29sdmVVcmw9WG47dmFyIFluPS9eW2Etel9dWy1hLXowLTkuX10qJC9pO2Z1bmN0aW9uIFduKCQsUSl7aWYodHlwZW9mICQ9PVwiYm9vbGVhblwiKXJldHVybnt9O2xldHtzY2hlbWFJZDpKLHVyaVJlc29sdmVyOll9PXRoaXMub3B0cyxYPUQ5KCRbSl18fFEpLFc9e1wiXCI6WH0sRz1iQShZLFgsITEpLFU9e30sSD1uZXcgU2V0O3JldHVybiBzaSgkLHthbGxLZXlzOiEwfSwoQix6LE4sdyk9PntpZih3PT09dm9pZCAwKXJldHVybjtsZXQgTz1HK3osRD1XW3ddO2lmKHR5cGVvZiBCW0pdPT1cInN0cmluZ1wiKUQ9TS5jYWxsKHRoaXMsQltKXSk7ai5jYWxsKHRoaXMsQi4kYW5jaG9yKSxqLmNhbGwodGhpcyxCLiRkeW5hbWljQW5jaG9yKSxXW3pdPUQ7ZnVuY3Rpb24gTShBKXtsZXQgaz10aGlzLm9wdHMudXJpUmVzb2x2ZXIucmVzb2x2ZTtpZihBPUQ5KEQ/ayhELEEpOkEpLEguaGFzKEEpKXRocm93IFYoQSk7SC5hZGQoQSk7bGV0IHU9dGhpcy5yZWZzW0FdO2lmKHR5cGVvZiB1PT1cInN0cmluZ1wiKXU9dGhpcy5yZWZzW3VdO2lmKHR5cGVvZiB1PT1cIm9iamVjdFwiKXEoQix1LnNjaGVtYSxBKTtlbHNlIGlmKEEhPT1EOShPKSlpZihBWzBdPT09XCIjXCIpcShCLFVbQV0sQSksVVtBXT1CO2Vsc2UgdGhpcy5yZWZzW0FdPU87cmV0dXJuIEF9ZnVuY3Rpb24gaihBKXtpZih0eXBlb2YgQT09XCJzdHJpbmdcIil7aWYoIVluLnRlc3QoQSkpdGhyb3cgRXJyb3IoYGludmFsaWQgYW5jaG9yIFwiJHtBfVwiYCk7TS5jYWxsKHRoaXMsYCMke0F9YCl9fX0pLFU7ZnVuY3Rpb24gcShCLHosTil7aWYoeiE9PXZvaWQgMCYmIWFpKEIseikpdGhyb3cgVihOKX1mdW5jdGlvbiBWKEIpe3JldHVybiBFcnJvcihgcmVmZXJlbmNlIFwiJHtCfVwiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hYCl9fVNBLmdldFNjaGVtYVJlZnM9V259KTt2YXIgeEo9SSgoaUEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGlBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2lBLmdldERhdGE9aUEuS2V5d29yZEN4dD1pQS52YWxpZGF0ZUZ1bmN0aW9uQ29kZT12b2lkIDA7dmFyIGZBPW9qKCksdkE9a0ooKSx1Qj1TQigpLENXPWtKKCksVm49cUEoKSxUSj1aQSgpLGhCPUFBKCkscD1RJCgpLGE9SjEoKSxCbj12SigpLFgxPXEkKCksQ0o9U0ooKTtmdW5jdGlvbiB6bigkKXtpZihoQSgkKSl7aWYodUEoJCksZ0EoJCkpe09uKCQpO3JldHVybn19eUEoJCwoKT0+KDAsZkEudG9wQm9vbE9yRW1wdHlTY2hlbWEpKCQpKX1pQS52YWxpZGF0ZUZ1bmN0aW9uQ29kZT16bjtmdW5jdGlvbiB5QSh7Z2VuOiQsdmFsaWRhdGVOYW1lOlEsc2NoZW1hOkosc2NoZW1hRW52Olksb3B0czpYfSxXKXtpZihYLmNvZGUuZXM1KSQuZnVuYyhRLHAuX2Ake2EuZGVmYXVsdC5kYXRhfSwgJHthLmRlZmF1bHQudmFsQ3h0fWAsWS4kYXN5bmMsKCk9PnskLmNvZGUocC5fYFwidXNlIHN0cmljdFwiOyAke0NBKEosWCl9YCksd24oJCxYKSwkLmNvZGUoVyl9KTtlbHNlICQuZnVuYyhRLHAuX2Ake2EuZGVmYXVsdC5kYXRhfSwgJHtObihYKX1gLFkuJGFzeW5jLCgpPT4kLmNvZGUoQ0EoSixYKSkuY29kZShXKSl9ZnVuY3Rpb24gTm4oJCl7cmV0dXJuIHAuX2B7JHthLmRlZmF1bHQuaW5zdGFuY2VQYXRofT1cIlwiLCAke2EuZGVmYXVsdC5wYXJlbnREYXRhfSwgJHthLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5fSwgJHthLmRlZmF1bHQucm9vdERhdGF9PSR7YS5kZWZhdWx0LmRhdGF9JHskLmR5bmFtaWNSZWY/cC5fYCwgJHthLmRlZmF1bHQuZHluYW1pY0FuY2hvcnN9PXt9YDpwLm5pbH19PXt9YH1mdW5jdGlvbiB3bigkLFEpeyQuaWYoYS5kZWZhdWx0LnZhbEN4dCwoKT0+e2lmKCQudmFyKGEuZGVmYXVsdC5pbnN0YW5jZVBhdGgscC5fYCR7YS5kZWZhdWx0LnZhbEN4dH0uJHthLmRlZmF1bHQuaW5zdGFuY2VQYXRofWApLCQudmFyKGEuZGVmYXVsdC5wYXJlbnREYXRhLHAuX2Ake2EuZGVmYXVsdC52YWxDeHR9LiR7YS5kZWZhdWx0LnBhcmVudERhdGF9YCksJC52YXIoYS5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eSxwLl9gJHthLmRlZmF1bHQudmFsQ3h0fS4ke2EuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHl9YCksJC52YXIoYS5kZWZhdWx0LnJvb3REYXRhLHAuX2Ake2EuZGVmYXVsdC52YWxDeHR9LiR7YS5kZWZhdWx0LnJvb3REYXRhfWApLFEuZHluYW1pY1JlZikkLnZhcihhLmRlZmF1bHQuZHluYW1pY0FuY2hvcnMscC5fYCR7YS5kZWZhdWx0LnZhbEN4dH0uJHthLmRlZmF1bHQuZHluYW1pY0FuY2hvcnN9YCl9LCgpPT57aWYoJC52YXIoYS5kZWZhdWx0Lmluc3RhbmNlUGF0aCxwLl9gXCJcImApLCQudmFyKGEuZGVmYXVsdC5wYXJlbnREYXRhLHAuX2B1bmRlZmluZWRgKSwkLnZhcihhLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LHAuX2B1bmRlZmluZWRgKSwkLnZhcihhLmRlZmF1bHQucm9vdERhdGEsYS5kZWZhdWx0LmRhdGEpLFEuZHluYW1pY1JlZikkLnZhcihhLmRlZmF1bHQuZHluYW1pY0FuY2hvcnMscC5fYHt9YCl9KX1mdW5jdGlvbiBPbigkKXtsZXR7c2NoZW1hOlEsb3B0czpKLGdlbjpZfT0kO3lBKCQsKCk9PntpZihKLiRjb21tZW50JiZRLiRjb21tZW50KWxBKCQpO2lmKExuKCQpLFkubGV0KGEuZGVmYXVsdC52RXJyb3JzLG51bGwpLFkubGV0KGEuZGVmYXVsdC5lcnJvcnMsMCksSi51bmV2YWx1YXRlZClEbigkKTttQSgkKSxJbigkKX0pO3JldHVybn1mdW5jdGlvbiBEbigkKXtsZXR7Z2VuOlEsdmFsaWRhdGVOYW1lOkp9PSQ7JC5ldmFsdWF0ZWQ9US5jb25zdChcImV2YWx1YXRlZFwiLHAuX2Ake0p9LmV2YWx1YXRlZGApLFEuaWYocC5fYCR7JC5ldmFsdWF0ZWR9LmR5bmFtaWNQcm9wc2AsKCk9PlEuYXNzaWduKHAuX2AkeyQuZXZhbHVhdGVkfS5wcm9wc2AscC5fYHVuZGVmaW5lZGApKSxRLmlmKHAuX2AkeyQuZXZhbHVhdGVkfS5keW5hbWljSXRlbXNgLCgpPT5RLmFzc2lnbihwLl9gJHskLmV2YWx1YXRlZH0uaXRlbXNgLHAuX2B1bmRlZmluZWRgKSl9ZnVuY3Rpb24gQ0EoJCxRKXtsZXQgSj10eXBlb2YgJD09XCJvYmplY3RcIiYmJFtRLnNjaGVtYUlkXTtyZXR1cm4gSiYmKFEuY29kZS5zb3VyY2V8fFEuY29kZS5wcm9jZXNzKT9wLl9gLyojIHNvdXJjZVVSTD0ke0p9ICovYDpwLm5pbH1mdW5jdGlvbiBGbigkLFEpe2lmKGhBKCQpKXtpZih1QSgkKSxnQSgkKSl7Wm4oJCxRKTtyZXR1cm59fSgwLGZBLmJvb2xPckVtcHR5U2NoZW1hKSgkLFEpfWZ1bmN0aW9uIGdBKHtzY2hlbWE6JCxzZWxmOlF9KXtpZih0eXBlb2YgJD09XCJib29sZWFuXCIpcmV0dXJuISQ7Zm9yKGxldCBKIGluICQpaWYoUS5SVUxFUy5hbGxbSl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gaEEoJCl7cmV0dXJuIHR5cGVvZiAkLnNjaGVtYSE9XCJib29sZWFuXCJ9ZnVuY3Rpb24gWm4oJCxRKXtsZXR7c2NoZW1hOkosZ2VuOlksb3B0czpYfT0kO2lmKFguJGNvbW1lbnQmJkouJGNvbW1lbnQpbEEoJCk7am4oJCksQW4oJCk7bGV0IFc9WS5jb25zdChcIl9lcnJzXCIsYS5kZWZhdWx0LmVycm9ycyk7bUEoJCxXKSxZLnZhcihRLHAuX2Ake1d9ID09PSAke2EuZGVmYXVsdC5lcnJvcnN9YCl9ZnVuY3Rpb24gdUEoJCl7KDAsWDEuY2hlY2tVbmtub3duUnVsZXMpKCQpLE1uKCQpfWZ1bmN0aW9uIG1BKCQsUSl7aWYoJC5vcHRzLmp0ZClyZXR1cm4gVEEoJCxbXSwhMSxRKTtsZXQgSj0oMCx2QS5nZXRTY2hlbWFUeXBlcykoJC5zY2hlbWEpLFk9KDAsdkEuY29lcmNlQW5kQ2hlY2tEYXRhVHlwZSkoJCxKKTtUQSgkLEosIVksUSl9ZnVuY3Rpb24gTW4oJCl7bGV0e3NjaGVtYTpRLGVyclNjaGVtYVBhdGg6SixvcHRzOlksc2VsZjpYfT0kO2lmKFEuJHJlZiYmWS5pZ25vcmVLZXl3b3Jkc1dpdGhSZWYmJigwLFgxLnNjaGVtYUhhc1J1bGVzQnV0UmVmKShRLFguUlVMRVMpKVgubG9nZ2VyLndhcm4oYCRyZWY6IGtleXdvcmRzIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCIke0p9XCJgKX1mdW5jdGlvbiBMbigkKXtsZXR7c2NoZW1hOlEsb3B0czpKfT0kO2lmKFEuZGVmYXVsdCE9PXZvaWQgMCYmSi51c2VEZWZhdWx0cyYmSi5zdHJpY3RTY2hlbWEpKDAsWDEuY2hlY2tTdHJpY3RNb2RlKSgkLFwiZGVmYXVsdCBpcyBpZ25vcmVkIGluIHRoZSBzY2hlbWEgcm9vdFwiKX1mdW5jdGlvbiBqbigkKXtsZXQgUT0kLnNjaGVtYVskLm9wdHMuc2NoZW1hSWRdO2lmKFEpJC5iYXNlSWQ9KDAsQm4ucmVzb2x2ZVVybCkoJC5vcHRzLnVyaVJlc29sdmVyLCQuYmFzZUlkLFEpfWZ1bmN0aW9uIEFuKCQpe2lmKCQuc2NoZW1hLiRhc3luYyYmISQuc2NoZW1hRW52LiRhc3luYyl0aHJvdyBFcnJvcihcImFzeW5jIHNjaGVtYSBpbiBzeW5jIHNjaGVtYVwiKX1mdW5jdGlvbiBsQSh7Z2VuOiQsc2NoZW1hRW52OlEsc2NoZW1hOkosZXJyU2NoZW1hUGF0aDpZLG9wdHM6WH0pe2xldCBXPUouJGNvbW1lbnQ7aWYoWC4kY29tbWVudD09PSEwKSQuY29kZShwLl9gJHthLmRlZmF1bHQuc2VsZn0ubG9nZ2VyLmxvZygke1d9KWApO2Vsc2UgaWYodHlwZW9mIFguJGNvbW1lbnQ9PVwiZnVuY3Rpb25cIil7bGV0IEc9cC5zdHJgJHtZfS8kY29tbWVudGAsVT0kLnNjb3BlVmFsdWUoXCJyb290XCIse3JlZjpRLnJvb3R9KTskLmNvZGUocC5fYCR7YS5kZWZhdWx0LnNlbGZ9Lm9wdHMuJGNvbW1lbnQoJHtXfSwgJHtHfSwgJHtVfS5zY2hlbWEpYCl9fWZ1bmN0aW9uIEluKCQpe2xldHtnZW46USxzY2hlbWFFbnY6Six2YWxpZGF0ZU5hbWU6WSxWYWxpZGF0aW9uRXJyb3I6WCxvcHRzOld9PSQ7aWYoSi4kYXN5bmMpUS5pZihwLl9gJHthLmRlZmF1bHQuZXJyb3JzfSA9PT0gMGAsKCk9PlEucmV0dXJuKGEuZGVmYXVsdC5kYXRhKSwoKT0+US50aHJvdyhwLl9gbmV3ICR7WH0oJHthLmRlZmF1bHQudkVycm9yc30pYCkpO2Vsc2V7aWYoUS5hc3NpZ24ocC5fYCR7WX0uZXJyb3JzYCxhLmRlZmF1bHQudkVycm9ycyksVy51bmV2YWx1YXRlZClSbigkKTtRLnJldHVybihwLl9gJHthLmRlZmF1bHQuZXJyb3JzfSA9PT0gMGApfX1mdW5jdGlvbiBSbih7Z2VuOiQsZXZhbHVhdGVkOlEscHJvcHM6SixpdGVtczpZfSl7aWYoSiBpbnN0YW5jZW9mIHAuTmFtZSkkLmFzc2lnbihwLl9gJHtRfS5wcm9wc2AsSik7aWYoWSBpbnN0YW5jZW9mIHAuTmFtZSkkLmFzc2lnbihwLl9gJHtRfS5pdGVtc2AsWSl9ZnVuY3Rpb24gVEEoJCxRLEosWSl7bGV0e2dlbjpYLHNjaGVtYTpXLGRhdGE6RyxhbGxFcnJvcnM6VSxvcHRzOkgsc2VsZjpxfT0kLHtSVUxFUzpWfT1xO2lmKFcuJHJlZiYmKEguaWdub3JlS2V5d29yZHNXaXRoUmVmfHwhKDAsWDEuc2NoZW1hSGFzUnVsZXNCdXRSZWYpKFcsVikpKXtYLmJsb2NrKCgpPT5wQSgkLFwiJHJlZlwiLFYuYWxsLiRyZWYuZGVmaW5pdGlvbikpO3JldHVybn1pZighSC5qdGQpUG4oJCxRKTtYLmJsb2NrKCgpPT57Zm9yKGxldCB6IG9mIFYucnVsZXMpQih6KTtCKFYucG9zdCl9KTtmdW5jdGlvbiBCKHope2lmKCEoMCx1Qi5zaG91bGRVc2VHcm91cCkoVyx6KSlyZXR1cm47aWYoei50eXBlKXtpZihYLmlmKCgwLENXLmNoZWNrRGF0YVR5cGUpKHoudHlwZSxHLEguc3RyaWN0TnVtYmVycykpLHhBKCQseiksUS5sZW5ndGg9PT0xJiZRWzBdPT09ei50eXBlJiZKKVguZWxzZSgpLCgwLENXLnJlcG9ydFR5cGVFcnJvcikoJCk7WC5lbmRJZigpfWVsc2UgeEEoJCx6KTtpZighVSlYLmlmKHAuX2Ake2EuZGVmYXVsdC5lcnJvcnN9ID09PSAke1l8fDB9YCl9fWZ1bmN0aW9uIHhBKCQsUSl7bGV0e2dlbjpKLHNjaGVtYTpZLG9wdHM6e3VzZURlZmF1bHRzOlh9fT0kO2lmKFgpKDAsVm4uYXNzaWduRGVmYXVsdHMpKCQsUS50eXBlKTtKLmJsb2NrKCgpPT57Zm9yKGxldCBXIG9mIFEucnVsZXMpaWYoKDAsdUIuc2hvdWxkVXNlUnVsZSkoWSxXKSlwQSgkLFcua2V5d29yZCxXLmRlZmluaXRpb24sUS50eXBlKX0pfWZ1bmN0aW9uIFBuKCQsUSl7aWYoJC5zY2hlbWFFbnYubWV0YXx8ISQub3B0cy5zdHJpY3RUeXBlcylyZXR1cm47aWYoRW4oJCxRKSwhJC5vcHRzLmFsbG93VW5pb25UeXBlcylibigkLFEpO19uKCQsJC5kYXRhVHlwZXMpfWZ1bmN0aW9uIEVuKCQsUSl7aWYoIVEubGVuZ3RoKXJldHVybjtpZighJC5kYXRhVHlwZXMubGVuZ3RoKXskLmRhdGFUeXBlcz1RO3JldHVybn1RLmZvckVhY2goKEopPT57aWYoIWNBKCQuZGF0YVR5cGVzLEopKW1CKCQsYHR5cGUgXCIke0p9XCIgbm90IGFsbG93ZWQgYnkgY29udGV4dCBcIiR7JC5kYXRhVHlwZXMuam9pbihcIixcIil9XCJgKX0pLGtuKCQsUSl9ZnVuY3Rpb24gYm4oJCxRKXtpZihRLmxlbmd0aD4xJiYhKFEubGVuZ3RoPT09MiYmUS5pbmNsdWRlcyhcIm51bGxcIikpKW1CKCQsXCJ1c2UgYWxsb3dVbmlvblR5cGVzIHRvIGFsbG93IHVuaW9uIHR5cGUga2V5d29yZFwiKX1mdW5jdGlvbiBfbigkLFEpe2xldCBKPSQuc2VsZi5SVUxFUy5hbGw7Zm9yKGxldCBZIGluIEope2xldCBYPUpbWV07aWYodHlwZW9mIFg9PVwib2JqZWN0XCImJigwLHVCLnNob3VsZFVzZVJ1bGUpKCQuc2NoZW1hLFgpKXtsZXR7dHlwZTpXfT1YLmRlZmluaXRpb247aWYoVy5sZW5ndGgmJiFXLnNvbWUoKEcpPT5TbihRLEcpKSltQigkLGBtaXNzaW5nIHR5cGUgXCIke1cuam9pbihcIixcIil9XCIgZm9yIGtleXdvcmQgXCIke1l9XCJgKX19fWZ1bmN0aW9uIFNuKCQsUSl7cmV0dXJuICQuaW5jbHVkZXMoUSl8fFE9PT1cIm51bWJlclwiJiYkLmluY2x1ZGVzKFwiaW50ZWdlclwiKX1mdW5jdGlvbiBjQSgkLFEpe3JldHVybiAkLmluY2x1ZGVzKFEpfHxRPT09XCJpbnRlZ2VyXCImJiQuaW5jbHVkZXMoXCJudW1iZXJcIil9ZnVuY3Rpb24ga24oJCxRKXtsZXQgSj1bXTtmb3IobGV0IFkgb2YgJC5kYXRhVHlwZXMpaWYoY0EoUSxZKSlKLnB1c2goWSk7ZWxzZSBpZihRLmluY2x1ZGVzKFwiaW50ZWdlclwiKSYmWT09PVwibnVtYmVyXCIpSi5wdXNoKFwiaW50ZWdlclwiKTskLmRhdGFUeXBlcz1KfWZ1bmN0aW9uIG1CKCQsUSl7bGV0IEo9JC5zY2hlbWFFbnYuYmFzZUlkKyQuZXJyU2NoZW1hUGF0aDtRKz1gIGF0IFwiJHtKfVwiIChzdHJpY3RUeXBlcylgLCgwLFgxLmNoZWNrU3RyaWN0TW9kZSkoJCxRLCQub3B0cy5zdHJpY3RUeXBlcyl9Y2xhc3MgbEJ7Y29uc3RydWN0b3IoJCxRLEope2lmKCgwLFRKLnZhbGlkYXRlS2V5d29yZFVzYWdlKSgkLFEsSiksdGhpcy5nZW49JC5nZW4sdGhpcy5hbGxFcnJvcnM9JC5hbGxFcnJvcnMsdGhpcy5rZXl3b3JkPUosdGhpcy5kYXRhPSQuZGF0YSx0aGlzLnNjaGVtYT0kLnNjaGVtYVtKXSx0aGlzLiRkYXRhPVEuJGRhdGEmJiQub3B0cy4kZGF0YSYmdGhpcy5zY2hlbWEmJnRoaXMuc2NoZW1hLiRkYXRhLHRoaXMuc2NoZW1hVmFsdWU9KDAsWDEuc2NoZW1hUmVmT3JWYWwpKCQsdGhpcy5zY2hlbWEsSix0aGlzLiRkYXRhKSx0aGlzLnNjaGVtYVR5cGU9US5zY2hlbWFUeXBlLHRoaXMucGFyZW50U2NoZW1hPSQuc2NoZW1hLHRoaXMucGFyYW1zPXt9LHRoaXMuaXQ9JCx0aGlzLmRlZj1RLHRoaXMuJGRhdGEpdGhpcy5zY2hlbWFDb2RlPSQuZ2VuLmNvbnN0KFwidlNjaGVtYVwiLGRBKHRoaXMuJGRhdGEsJCkpO2Vsc2UgaWYodGhpcy5zY2hlbWFDb2RlPXRoaXMuc2NoZW1hVmFsdWUsISgwLFRKLnZhbGlkU2NoZW1hVHlwZSkodGhpcy5zY2hlbWEsUS5zY2hlbWFUeXBlLFEuYWxsb3dVbmRlZmluZWQpKXRocm93IEVycm9yKGAke0p9IHZhbHVlIG11c3QgYmUgJHtKU09OLnN0cmluZ2lmeShRLnNjaGVtYVR5cGUpfWApO2lmKFwiY29kZVwiaW4gUT9RLnRyYWNrRXJyb3JzOlEuZXJyb3JzIT09ITEpdGhpcy5lcnJzQ291bnQ9JC5nZW4uY29uc3QoXCJfZXJyc1wiLGEuZGVmYXVsdC5lcnJvcnMpfXJlc3VsdCgkLFEsSil7dGhpcy5mYWlsUmVzdWx0KCgwLHAubm90KSgkKSxRLEopfWZhaWxSZXN1bHQoJCxRLEope2lmKHRoaXMuZ2VuLmlmKCQpLEopSigpO2Vsc2UgdGhpcy5lcnJvcigpO2lmKFEpe2lmKHRoaXMuZ2VuLmVsc2UoKSxRKCksdGhpcy5hbGxFcnJvcnMpdGhpcy5nZW4uZW5kSWYoKX1lbHNlIGlmKHRoaXMuYWxsRXJyb3JzKXRoaXMuZ2VuLmVuZElmKCk7ZWxzZSB0aGlzLmdlbi5lbHNlKCl9cGFzcygkLFEpe3RoaXMuZmFpbFJlc3VsdCgoMCxwLm5vdCkoJCksdm9pZCAwLFEpfWZhaWwoJCl7aWYoJD09PXZvaWQgMCl7aWYodGhpcy5lcnJvcigpLCF0aGlzLmFsbEVycm9ycyl0aGlzLmdlbi5pZighMSk7cmV0dXJufWlmKHRoaXMuZ2VuLmlmKCQpLHRoaXMuZXJyb3IoKSx0aGlzLmFsbEVycm9ycyl0aGlzLmdlbi5lbmRJZigpO2Vsc2UgdGhpcy5nZW4uZWxzZSgpfWZhaWwkZGF0YSgkKXtpZighdGhpcy4kZGF0YSlyZXR1cm4gdGhpcy5mYWlsKCQpO2xldHtzY2hlbWFDb2RlOlF9PXRoaXM7dGhpcy5mYWlsKHAuX2Ake1F9ICE9PSB1bmRlZmluZWQgJiYgKCR7KDAscC5vcikodGhpcy5pbnZhbGlkJGRhdGEoKSwkKX0pYCl9ZXJyb3IoJCxRLEope2lmKFEpe3RoaXMuc2V0UGFyYW1zKFEpLHRoaXMuX2Vycm9yKCQsSiksdGhpcy5zZXRQYXJhbXMoe30pO3JldHVybn10aGlzLl9lcnJvcigkLEopfV9lcnJvcigkLFEpeygkP0NKLnJlcG9ydEV4dHJhRXJyb3I6Q0oucmVwb3J0RXJyb3IpKHRoaXMsdGhpcy5kZWYuZXJyb3IsUSl9JGRhdGFFcnJvcigpeygwLENKLnJlcG9ydEVycm9yKSh0aGlzLHRoaXMuZGVmLiRkYXRhRXJyb3J8fENKLmtleXdvcmQkRGF0YUVycm9yKX1yZXNldCgpe2lmKHRoaXMuZXJyc0NvdW50PT09dm9pZCAwKXRocm93IEVycm9yKCdhZGQgXCJ0cmFja0Vycm9yc1wiIHRvIGtleXdvcmQgZGVmaW5pdGlvbicpOygwLENKLnJlc2V0RXJyb3JzQ291bnQpKHRoaXMuZ2VuLHRoaXMuZXJyc0NvdW50KX1vaygkKXtpZighdGhpcy5hbGxFcnJvcnMpdGhpcy5nZW4uaWYoJCl9c2V0UGFyYW1zKCQsUSl7aWYoUSlPYmplY3QuYXNzaWduKHRoaXMucGFyYW1zLCQpO2Vsc2UgdGhpcy5wYXJhbXM9JH1ibG9jayRkYXRhKCQsUSxKPXAubmlsKXt0aGlzLmdlbi5ibG9jaygoKT0+e3RoaXMuY2hlY2skZGF0YSgkLEopLFEoKX0pfWNoZWNrJGRhdGEoJD1wLm5pbCxRPXAubmlsKXtpZighdGhpcy4kZGF0YSlyZXR1cm47bGV0e2dlbjpKLHNjaGVtYUNvZGU6WSxzY2hlbWFUeXBlOlgsZGVmOld9PXRoaXM7aWYoSi5pZigoMCxwLm9yKShwLl9gJHtZfSA9PT0gdW5kZWZpbmVkYCxRKSksJCE9PXAubmlsKUouYXNzaWduKCQsITApO2lmKFgubGVuZ3RofHxXLnZhbGlkYXRlU2NoZW1hKXtpZihKLmVsc2VJZih0aGlzLmludmFsaWQkZGF0YSgpKSx0aGlzLiRkYXRhRXJyb3IoKSwkIT09cC5uaWwpSi5hc3NpZ24oJCwhMSl9Si5lbHNlKCl9aW52YWxpZCRkYXRhKCl7bGV0e2dlbjokLHNjaGVtYUNvZGU6USxzY2hlbWFUeXBlOkosZGVmOlksaXQ6WH09dGhpcztyZXR1cm4oMCxwLm9yKShXKCksRygpKTtmdW5jdGlvbiBXKCl7aWYoSi5sZW5ndGgpe2lmKCEoUSBpbnN0YW5jZW9mIHAuTmFtZSkpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7bGV0IFU9QXJyYXkuaXNBcnJheShKKT9KOltKXTtyZXR1cm4gcC5fYCR7KDAsQ1cuY2hlY2tEYXRhVHlwZXMpKFUsUSxYLm9wdHMuc3RyaWN0TnVtYmVycyxDVy5EYXRhVHlwZS5Xcm9uZyl9YH1yZXR1cm4gcC5uaWx9ZnVuY3Rpb24gRygpe2lmKFkudmFsaWRhdGVTY2hlbWEpe2xldCBVPSQuc2NvcGVWYWx1ZShcInZhbGlkYXRlJGRhdGFcIix7cmVmOlkudmFsaWRhdGVTY2hlbWF9KTtyZXR1cm4gcC5fYCEke1V9KCR7UX0pYH1yZXR1cm4gcC5uaWx9fXN1YnNjaGVtYSgkLFEpe2xldCBKPSgwLGhCLmdldFN1YnNjaGVtYSkodGhpcy5pdCwkKTsoMCxoQi5leHRlbmRTdWJzY2hlbWFEYXRhKShKLHRoaXMuaXQsJCksKDAsaEIuZXh0ZW5kU3Vic2NoZW1hTW9kZSkoSiwkKTtsZXQgWT17Li4udGhpcy5pdCwuLi5KLGl0ZW1zOnZvaWQgMCxwcm9wczp2b2lkIDB9O3JldHVybiBGbihZLFEpLFl9bWVyZ2VFdmFsdWF0ZWQoJCxRKXtsZXR7aXQ6SixnZW46WX09dGhpcztpZighSi5vcHRzLnVuZXZhbHVhdGVkKXJldHVybjtpZihKLnByb3BzIT09ITAmJiQucHJvcHMhPT12b2lkIDApSi5wcm9wcz1YMS5tZXJnZUV2YWx1YXRlZC5wcm9wcyhZLCQucHJvcHMsSi5wcm9wcyxRKTtpZihKLml0ZW1zIT09ITAmJiQuaXRlbXMhPT12b2lkIDApSi5pdGVtcz1YMS5tZXJnZUV2YWx1YXRlZC5pdGVtcyhZLCQuaXRlbXMsSi5pdGVtcyxRKX1tZXJnZVZhbGlkRXZhbHVhdGVkKCQsUSl7bGV0e2l0OkosZ2VuOll9PXRoaXM7aWYoSi5vcHRzLnVuZXZhbHVhdGVkJiYoSi5wcm9wcyE9PSEwfHxKLml0ZW1zIT09ITApKXJldHVybiBZLmlmKFEsKCk9PnRoaXMubWVyZ2VFdmFsdWF0ZWQoJCxwLk5hbWUpKSwhMH19aUEuS2V5d29yZEN4dD1sQjtmdW5jdGlvbiBwQSgkLFEsSixZKXtsZXQgWD1uZXcgbEIoJCxKLFEpO2lmKFwiY29kZVwiaW4gSilKLmNvZGUoWCxZKTtlbHNlIGlmKFguJGRhdGEmJkoudmFsaWRhdGUpKDAsVEouZnVuY0tleXdvcmRDb2RlKShYLEopO2Vsc2UgaWYoXCJtYWNyb1wiaW4gSikoMCxUSi5tYWNyb0tleXdvcmRDb2RlKShYLEopO2Vsc2UgaWYoSi5jb21waWxlfHxKLnZhbGlkYXRlKSgwLFRKLmZ1bmNLZXl3b3JkQ29kZSkoWCxKKX12YXIgdm49L15cXC8oPzpbXn5dfH4wfH4xKSokLyxDbj0vXihbMC05XSspKCN8XFwvKD86W15+XXx+MHx+MSkqKT8kLztmdW5jdGlvbiBkQSgkLHtkYXRhTGV2ZWw6USxkYXRhTmFtZXM6SixkYXRhUGF0aEFycjpZfSl7bGV0IFgsVztpZigkPT09XCJcIilyZXR1cm4gYS5kZWZhdWx0LnJvb3REYXRhO2lmKCRbMF09PT1cIi9cIil7aWYoIXZuLnRlc3QoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgSlNPTi1wb2ludGVyOiAkeyR9YCk7WD0kLFc9YS5kZWZhdWx0LnJvb3REYXRhfWVsc2V7bGV0IHE9Q24uZXhlYygkKTtpZighcSl0aHJvdyBFcnJvcihgSW52YWxpZCBKU09OLXBvaW50ZXI6ICR7JH1gKTtsZXQgVj0rcVsxXTtpZihYPXFbMl0sWD09PVwiI1wiKXtpZihWPj1RKXRocm93IEVycm9yKEgoXCJwcm9wZXJ0eS9pbmRleFwiLFYpKTtyZXR1cm4gWVtRLVZdfWlmKFY+USl0aHJvdyBFcnJvcihIKFwiZGF0YVwiLFYpKTtpZihXPUpbUS1WXSwhWClyZXR1cm4gV31sZXQgRz1XLFU9WC5zcGxpdChcIi9cIik7Zm9yKGxldCBxIG9mIFUpaWYocSlXPXAuX2Ake1d9JHsoMCxwLmdldFByb3BlcnR5KSgoMCxYMS51bmVzY2FwZUpzb25Qb2ludGVyKShxKSl9YCxHPXAuX2Ake0d9ICYmICR7V31gO3JldHVybiBHO2Z1bmN0aW9uIEgocSxWKXtyZXR1cm5gQ2Fubm90IGFjY2VzcyAke3F9ICR7Vn0gbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICR7UX1gfX1pQS5nZXREYXRhPWRBfSk7dmFyIFRXPUkoKG9BKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShvQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtjbGFzcyByQSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCQpe3N1cGVyKFwidmFsaWRhdGlvbiBmYWlsZWRcIik7dGhpcy5lcnJvcnM9JCx0aGlzLmFqdj10aGlzLnZhbGlkYXRpb249ITB9fW9BLmRlZmF1bHQ9ckF9KTt2YXIgZko9SSgoYUEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGFBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBjQj12SigpO2NsYXNzIHRBIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoJCxRLEosWSl7c3VwZXIoWXx8YGNhbid0IHJlc29sdmUgcmVmZXJlbmNlICR7Sn0gZnJvbSBpZCAke1F9YCk7dGhpcy5taXNzaW5nUmVmPSgwLGNCLnJlc29sdmVVcmwpKCQsUSxKKSx0aGlzLm1pc3NpbmdTY2hlbWE9KDAsY0Iubm9ybWFsaXplSWQpKCgwLGNCLmdldEZ1bGxQYXRoKSgkLHRoaXMubWlzc2luZ1JlZikpfX1hQS5kZWZhdWx0PXRBfSk7dmFyIGZXPUkoKCRJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTskSS5yZXNvbHZlU2NoZW1hPSRJLmdldENvbXBpbGluZ1NjaGVtYT0kSS5yZXNvbHZlUmVmPSRJLmNvbXBpbGVTY2hlbWE9JEkuU2NoZW1hRW52PXZvaWQgMDt2YXIgdzQ9USQoKSxnbj1UVygpLHkwPUoxKCksTzQ9dkooKSxzQT1xJCgpLGhuPXhKKCk7Y2xhc3MgeUp7Y29uc3RydWN0b3IoJCl7dmFyIFE7dGhpcy5yZWZzPXt9LHRoaXMuZHluYW1pY0FuY2hvcnM9e307bGV0IEo7aWYodHlwZW9mICQuc2NoZW1hPT1cIm9iamVjdFwiKUo9JC5zY2hlbWE7dGhpcy5zY2hlbWE9JC5zY2hlbWEsdGhpcy5zY2hlbWFJZD0kLnNjaGVtYUlkLHRoaXMucm9vdD0kLnJvb3R8fHRoaXMsdGhpcy5iYXNlSWQ9KFE9JC5iYXNlSWQpIT09bnVsbCYmUSE9PXZvaWQgMD9ROigwLE80Lm5vcm1hbGl6ZUlkKShKPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6SlskLnNjaGVtYUlkfHxcIiRpZFwiXSksdGhpcy5zY2hlbWFQYXRoPSQuc2NoZW1hUGF0aCx0aGlzLmxvY2FsUmVmcz0kLmxvY2FsUmVmcyx0aGlzLm1ldGE9JC5tZXRhLHRoaXMuJGFzeW5jPUo9PT1udWxsfHxKPT09dm9pZCAwP3ZvaWQgMDpKLiRhc3luYyx0aGlzLnJlZnM9e319fSRJLlNjaGVtYUVudj15SjtmdW5jdGlvbiBkQigkKXtsZXQgUT1lQS5jYWxsKHRoaXMsJCk7aWYoUSlyZXR1cm4gUTtsZXQgSj0oMCxPNC5nZXRGdWxsUGF0aCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLCQucm9vdC5iYXNlSWQpLHtlczU6WSxsaW5lczpYfT10aGlzLm9wdHMuY29kZSx7b3duUHJvcGVydGllczpXfT10aGlzLm9wdHMsRz1uZXcgdzQuQ29kZUdlbih0aGlzLnNjb3BlLHtlczU6WSxsaW5lczpYLG93blByb3BlcnRpZXM6V30pLFU7aWYoJC4kYXN5bmMpVT1HLnNjb3BlVmFsdWUoXCJFcnJvclwiLHtyZWY6Z24uZGVmYXVsdCxjb2RlOnc0Ll9gcmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvdmFsaWRhdGlvbl9lcnJvclwiKS5kZWZhdWx0YH0pO2xldCBIPUcuc2NvcGVOYW1lKFwidmFsaWRhdGVcIik7JC52YWxpZGF0ZU5hbWU9SDtsZXQgcT17Z2VuOkcsYWxsRXJyb3JzOnRoaXMub3B0cy5hbGxFcnJvcnMsZGF0YTp5MC5kZWZhdWx0LmRhdGEscGFyZW50RGF0YTp5MC5kZWZhdWx0LnBhcmVudERhdGEscGFyZW50RGF0YVByb3BlcnR5OnkwLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LGRhdGFOYW1lczpbeTAuZGVmYXVsdC5kYXRhXSxkYXRhUGF0aEFycjpbdzQubmlsXSxkYXRhTGV2ZWw6MCxkYXRhVHlwZXM6W10sZGVmaW5lZFByb3BlcnRpZXM6bmV3IFNldCx0b3BTY2hlbWFSZWY6Ry5zY29wZVZhbHVlKFwic2NoZW1hXCIsdGhpcy5vcHRzLmNvZGUuc291cmNlPT09ITA/e3JlZjokLnNjaGVtYSxjb2RlOigwLHc0LnN0cmluZ2lmeSkoJC5zY2hlbWEpfTp7cmVmOiQuc2NoZW1hfSksdmFsaWRhdGVOYW1lOkgsVmFsaWRhdGlvbkVycm9yOlUsc2NoZW1hOiQuc2NoZW1hLHNjaGVtYUVudjokLHJvb3RJZDpKLGJhc2VJZDokLmJhc2VJZHx8SixzY2hlbWFQYXRoOnc0Lm5pbCxlcnJTY2hlbWFQYXRoOiQuc2NoZW1hUGF0aHx8KHRoaXMub3B0cy5qdGQ/XCJcIjpcIiNcIiksZXJyb3JQYXRoOnc0Ll9gXCJcImAsb3B0czp0aGlzLm9wdHMsc2VsZjp0aGlzfSxWO3RyeXt0aGlzLl9jb21waWxhdGlvbnMuYWRkKCQpLCgwLGhuLnZhbGlkYXRlRnVuY3Rpb25Db2RlKShxKSxHLm9wdGltaXplKHRoaXMub3B0cy5jb2RlLm9wdGltaXplKTtsZXQgQj1HLnRvU3RyaW5nKCk7aWYoVj1gJHtHLnNjb3BlUmVmcyh5MC5kZWZhdWx0LnNjb3BlKX1yZXR1cm4gJHtCfWAsdGhpcy5vcHRzLmNvZGUucHJvY2VzcylWPXRoaXMub3B0cy5jb2RlLnByb2Nlc3MoViwkKTtsZXQgTj1GdW5jdGlvbihgJHt5MC5kZWZhdWx0LnNlbGZ9YCxgJHt5MC5kZWZhdWx0LnNjb3BlfWAsVikodGhpcyx0aGlzLnNjb3BlLmdldCgpKTtpZih0aGlzLnNjb3BlLnZhbHVlKEgse3JlZjpOfSksTi5lcnJvcnM9bnVsbCxOLnNjaGVtYT0kLnNjaGVtYSxOLnNjaGVtYUVudj0kLCQuJGFzeW5jKU4uJGFzeW5jPSEwO2lmKHRoaXMub3B0cy5jb2RlLnNvdXJjZT09PSEwKU4uc291cmNlPXt2YWxpZGF0ZU5hbWU6SCx2YWxpZGF0ZUNvZGU6QixzY29wZVZhbHVlczpHLl92YWx1ZXN9O2lmKHRoaXMub3B0cy51bmV2YWx1YXRlZCl7bGV0e3Byb3BzOncsaXRlbXM6T309cTtpZihOLmV2YWx1YXRlZD17cHJvcHM6dyBpbnN0YW5jZW9mIHc0Lk5hbWU/dm9pZCAwOncsaXRlbXM6TyBpbnN0YW5jZW9mIHc0Lk5hbWU/dm9pZCAwOk8sZHluYW1pY1Byb3BzOncgaW5zdGFuY2VvZiB3NC5OYW1lLGR5bmFtaWNJdGVtczpPIGluc3RhbmNlb2YgdzQuTmFtZX0sTi5zb3VyY2UpTi5zb3VyY2UuZXZhbHVhdGVkPSgwLHc0LnN0cmluZ2lmeSkoTi5ldmFsdWF0ZWQpfXJldHVybiAkLnZhbGlkYXRlPU4sJH1jYXRjaChCKXtpZihkZWxldGUgJC52YWxpZGF0ZSxkZWxldGUgJC52YWxpZGF0ZU5hbWUsVil0aGlzLmxvZ2dlci5lcnJvcihcIkVycm9yIGNvbXBpbGluZyBzY2hlbWEsIGZ1bmN0aW9uIGNvZGU6XCIsVik7dGhyb3cgQn1maW5hbGx5e3RoaXMuX2NvbXBpbGF0aW9ucy5kZWxldGUoJCl9fSRJLmNvbXBpbGVTY2hlbWE9ZEI7ZnVuY3Rpb24gdW4oJCxRLEope3ZhciBZO0o9KDAsTzQucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLFEsSik7bGV0IFg9JC5yZWZzW0pdO2lmKFgpcmV0dXJuIFg7bGV0IFc9Y24uY2FsbCh0aGlzLCQsSik7aWYoVz09PXZvaWQgMCl7bGV0IEc9KFk9JC5sb2NhbFJlZnMpPT09bnVsbHx8WT09PXZvaWQgMD92b2lkIDA6WVtKXSx7c2NoZW1hSWQ6VX09dGhpcy5vcHRzO2lmKEcpVz1uZXcgeUooe3NjaGVtYTpHLHNjaGVtYUlkOlUscm9vdDokLGJhc2VJZDpRfSl9aWYoVz09PXZvaWQgMClyZXR1cm47cmV0dXJuICQucmVmc1tKXT1tbi5jYWxsKHRoaXMsVyl9JEkucmVzb2x2ZVJlZj11bjtmdW5jdGlvbiBtbigkKXtpZigoMCxPNC5pbmxpbmVSZWYpKCQuc2NoZW1hLHRoaXMub3B0cy5pbmxpbmVSZWZzKSlyZXR1cm4gJC5zY2hlbWE7cmV0dXJuICQudmFsaWRhdGU/JDpkQi5jYWxsKHRoaXMsJCl9ZnVuY3Rpb24gZUEoJCl7Zm9yKGxldCBRIG9mIHRoaXMuX2NvbXBpbGF0aW9ucylpZihsbihRLCQpKXJldHVybiBRfSRJLmdldENvbXBpbGluZ1NjaGVtYT1lQTtmdW5jdGlvbiBsbigkLFEpe3JldHVybiAkLnNjaGVtYT09PVEuc2NoZW1hJiYkLnJvb3Q9PT1RLnJvb3QmJiQuYmFzZUlkPT09US5iYXNlSWR9ZnVuY3Rpb24gY24oJCxRKXtsZXQgSjt3aGlsZSh0eXBlb2YoSj10aGlzLnJlZnNbUV0pPT1cInN0cmluZ1wiKVE9SjtyZXR1cm4gSnx8dGhpcy5zY2hlbWFzW1FdfHx4Vy5jYWxsKHRoaXMsJCxRKX1mdW5jdGlvbiB4VygkLFEpe2xldCBKPXRoaXMub3B0cy51cmlSZXNvbHZlci5wYXJzZShRKSxZPSgwLE80Ll9nZXRGdWxsUGF0aCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLEopLFg9KDAsTzQuZ2V0RnVsbFBhdGgpKHRoaXMub3B0cy51cmlSZXNvbHZlciwkLmJhc2VJZCx2b2lkIDApO2lmKE9iamVjdC5rZXlzKCQuc2NoZW1hKS5sZW5ndGg+MCYmWT09PVgpcmV0dXJuIHBCLmNhbGwodGhpcyxKLCQpO2xldCBXPSgwLE80Lm5vcm1hbGl6ZUlkKShZKSxHPXRoaXMucmVmc1tXXXx8dGhpcy5zY2hlbWFzW1ddO2lmKHR5cGVvZiBHPT1cInN0cmluZ1wiKXtsZXQgVT14Vy5jYWxsKHRoaXMsJCxHKTtpZih0eXBlb2YoVT09PW51bGx8fFU9PT12b2lkIDA/dm9pZCAwOlUuc2NoZW1hKSE9PVwib2JqZWN0XCIpcmV0dXJuO3JldHVybiBwQi5jYWxsKHRoaXMsSixVKX1pZih0eXBlb2YoRz09PW51bGx8fEc9PT12b2lkIDA/dm9pZCAwOkcuc2NoZW1hKSE9PVwib2JqZWN0XCIpcmV0dXJuO2lmKCFHLnZhbGlkYXRlKWRCLmNhbGwodGhpcyxHKTtpZihXPT09KDAsTzQubm9ybWFsaXplSWQpKFEpKXtsZXR7c2NoZW1hOlV9PUcse3NjaGVtYUlkOkh9PXRoaXMub3B0cyxxPVVbSF07aWYocSlYPSgwLE80LnJlc29sdmVVcmwpKHRoaXMub3B0cy51cmlSZXNvbHZlcixYLHEpO3JldHVybiBuZXcgeUooe3NjaGVtYTpVLHNjaGVtYUlkOkgscm9vdDokLGJhc2VJZDpYfSl9cmV0dXJuIHBCLmNhbGwodGhpcyxKLEcpfSRJLnJlc29sdmVTY2hlbWE9eFc7dmFyIHBuPW5ldyBTZXQoW1wicHJvcGVydGllc1wiLFwicGF0dGVyblByb3BlcnRpZXNcIixcImVudW1cIixcImRlcGVuZGVuY2llc1wiLFwiZGVmaW5pdGlvbnNcIl0pO2Z1bmN0aW9uIHBCKCQse2Jhc2VJZDpRLHNjaGVtYTpKLHJvb3Q6WX0pe3ZhciBYO2lmKCgoWD0kLmZyYWdtZW50KT09PW51bGx8fFg9PT12b2lkIDA/dm9pZCAwOlhbMF0pIT09XCIvXCIpcmV0dXJuO2ZvcihsZXQgVSBvZiAkLmZyYWdtZW50LnNsaWNlKDEpLnNwbGl0KFwiL1wiKSl7aWYodHlwZW9mIEo9PT1cImJvb2xlYW5cIilyZXR1cm47bGV0IEg9SlsoMCxzQS51bmVzY2FwZUZyYWdtZW50KShVKV07aWYoSD09PXZvaWQgMClyZXR1cm47Sj1IO2xldCBxPXR5cGVvZiBKPT09XCJvYmplY3RcIiYmSlt0aGlzLm9wdHMuc2NoZW1hSWRdO2lmKCFwbi5oYXMoVSkmJnEpUT0oMCxPNC5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsUSxxKX1sZXQgVztpZih0eXBlb2YgSiE9XCJib29sZWFuXCImJkouJHJlZiYmISgwLHNBLnNjaGVtYUhhc1J1bGVzQnV0UmVmKShKLHRoaXMuUlVMRVMpKXtsZXQgVT0oMCxPNC5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsUSxKLiRyZWYpO1c9eFcuY2FsbCh0aGlzLFksVSl9bGV0e3NjaGVtYUlkOkd9PXRoaXMub3B0cztpZihXPVd8fG5ldyB5Sih7c2NoZW1hOkosc2NoZW1hSWQ6Ryxyb290OlksYmFzZUlkOlF9KSxXLnNjaGVtYSE9PVcucm9vdC5zY2hlbWEpcmV0dXJuIFc7cmV0dXJufX0pO3ZhciBKST1JKChWdyQsdG4pPT57dG4uZXhwb3J0cz17JGlkOlwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jXCIsZGVzY3JpcHRpb246XCJNZXRhLXNjaGVtYSBmb3IgJGRhdGEgcmVmZXJlbmNlIChKU09OIEFueVNjaGVtYSBleHRlbnNpb24gcHJvcG9zYWwpXCIsdHlwZTpcIm9iamVjdFwiLHJlcXVpcmVkOltcIiRkYXRhXCJdLHByb3BlcnRpZXM6eyRkYXRhOnt0eXBlOlwic3RyaW5nXCIsYW55T2Y6W3tmb3JtYXQ6XCJyZWxhdGl2ZS1qc29uLXBvaW50ZXJcIn0se2Zvcm1hdDpcImpzb24tcG9pbnRlclwifV19fSxhZGRpdGlvbmFsUHJvcGVydGllczohMX19KTt2YXIgWUk9SSgoQnckLFhJKT0+e3ZhciBhbj17MDowLDE6MSwyOjIsMzozLDQ6NCw1OjUsNjo2LDc6Nyw4OjgsOTo5LGE6MTAsQToxMCxiOjExLEI6MTEsYzoxMixDOjEyLGQ6MTMsRDoxMyxlOjE0LEU6MTQsZjoxNSxGOjE1fTtYSS5leHBvcnRzPXtIRVg6YW59fSk7dmFyIEJJPUkoKHp3JCxWSSk9Pnt2YXJ7SEVYOnNufT1ZSSgpLGVuPS9eKD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZHsyfXxbMS05XVxcZHxcXGQpXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfDFcXGR7Mn18WzEtOV1cXGR8XFxkKSQvdTtmdW5jdGlvbiBISSgkKXtpZihxSSgkLFwiLlwiKTwzKXJldHVybntob3N0OiQsaXNJUFY0OiExfTtsZXQgUT0kLm1hdGNoKGVuKXx8W10sW0pdPVE7aWYoSilyZXR1cm57aG9zdDpRcihKLFwiLlwiKSxpc0lQVjQ6ITB9O2Vsc2UgcmV0dXJue2hvc3Q6JCxpc0lQVjQ6ITF9fWZ1bmN0aW9uIGlCKCQsUT0hMSl7bGV0IEo9XCJcIixZPSEwO2ZvcihsZXQgWCBvZiAkKXtpZihzbltYXT09PXZvaWQgMClyZXR1cm47aWYoWCE9PVwiMFwiJiZZPT09ITApWT0hMTtpZighWSlKKz1YfWlmKFEmJkoubGVuZ3RoPT09MClKPVwiMFwiO3JldHVybiBKfWZ1bmN0aW9uICRyKCQpe2xldCBRPTAsSj17ZXJyb3I6ITEsYWRkcmVzczpcIlwiLHpvbmU6XCJcIn0sWT1bXSxYPVtdLFc9ITEsRz0hMSxVPSExO2Z1bmN0aW9uIEgoKXtpZihYLmxlbmd0aCl7aWYoVz09PSExKXtsZXQgcT1pQihYKTtpZihxIT09dm9pZCAwKVkucHVzaChxKTtlbHNlIHJldHVybiBKLmVycm9yPSEwLCExfVgubGVuZ3RoPTB9cmV0dXJuITB9Zm9yKGxldCBxPTA7cTwkLmxlbmd0aDtxKyspe2xldCBWPSRbcV07aWYoVj09PVwiW1wifHxWPT09XCJdXCIpY29udGludWU7aWYoVj09PVwiOlwiKXtpZihHPT09ITApVT0hMDtpZighSCgpKWJyZWFrO2lmKFErKyxZLnB1c2goXCI6XCIpLFE+Nyl7Si5lcnJvcj0hMDticmVha31pZihxLTE+PTAmJiRbcS0xXT09PVwiOlwiKUc9ITA7Y29udGludWV9ZWxzZSBpZihWPT09XCIlXCIpe2lmKCFIKCkpYnJlYWs7Vz0hMH1lbHNle1gucHVzaChWKTtjb250aW51ZX19aWYoWC5sZW5ndGgpaWYoVylKLnpvbmU9WC5qb2luKFwiXCIpO2Vsc2UgaWYoVSlZLnB1c2goWC5qb2luKFwiXCIpKTtlbHNlIFkucHVzaChpQihYKSk7cmV0dXJuIEouYWRkcmVzcz1ZLmpvaW4oXCJcIiksSn1mdW5jdGlvbiBLSSgkKXtpZihxSSgkLFwiOlwiKTwyKXJldHVybntob3N0OiQsaXNJUFY2OiExfTtsZXQgUT0kcigkKTtpZighUS5lcnJvcil7bGV0e2FkZHJlc3M6SixhZGRyZXNzOll9PVE7aWYoUS56b25lKUorPVwiJVwiK1Euem9uZSxZKz1cIiUyNVwiK1Euem9uZTtyZXR1cm57aG9zdDpKLGVzY2FwZWRIb3N0OlksaXNJUFY2OiEwfX1lbHNlIHJldHVybntob3N0OiQsaXNJUFY2OiExfX1mdW5jdGlvbiBRcigkLFEpe2xldCBKPVwiXCIsWT0hMCxYPSQubGVuZ3RoO2ZvcihsZXQgVz0wO1c8WDtXKyspe2xldCBHPSRbV107aWYoRz09PVwiMFwiJiZZKXtpZihXKzE8PVgmJiRbVysxXT09PVF8fFcrMT09PVgpSis9RyxZPSExfWVsc2V7aWYoRz09PVEpWT0hMDtlbHNlIFk9ITE7Sis9R319cmV0dXJuIEp9ZnVuY3Rpb24gcUkoJCxRKXtsZXQgSj0wO2ZvcihsZXQgWT0wO1k8JC5sZW5ndGg7WSsrKWlmKCRbWV09PT1RKUorKztyZXR1cm4gSn12YXIgV0k9L15cXC5cXC4/XFwvL3UsR0k9L15cXC9cXC4oPzpcXC98JCkvdSxVST0vXlxcL1xcLlxcLig/OlxcL3wkKS91LEpyPS9eXFwvPyg/Oi58XFxuKSo/KD89XFwvfCQpL3U7ZnVuY3Rpb24gWHIoJCl7bGV0IFE9W107d2hpbGUoJC5sZW5ndGgpaWYoJC5tYXRjaChXSSkpJD0kLnJlcGxhY2UoV0ksXCJcIik7ZWxzZSBpZigkLm1hdGNoKEdJKSkkPSQucmVwbGFjZShHSSxcIi9cIik7ZWxzZSBpZigkLm1hdGNoKFVJKSkkPSQucmVwbGFjZShVSSxcIi9cIiksUS5wb3AoKTtlbHNlIGlmKCQ9PT1cIi5cInx8JD09PVwiLi5cIikkPVwiXCI7ZWxzZXtsZXQgSj0kLm1hdGNoKEpyKTtpZihKKXtsZXQgWT1KWzBdOyQ9JC5zbGljZShZLmxlbmd0aCksUS5wdXNoKFkpfWVsc2UgdGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIGRvdCBzZWdtZW50IGNvbmRpdGlvblwiKX1yZXR1cm4gUS5qb2luKFwiXCIpfWZ1bmN0aW9uIFlyKCQsUSl7bGV0IEo9USE9PSEwP2VzY2FwZTp1bmVzY2FwZTtpZigkLnNjaGVtZSE9PXZvaWQgMCkkLnNjaGVtZT1KKCQuc2NoZW1lKTtpZigkLnVzZXJpbmZvIT09dm9pZCAwKSQudXNlcmluZm89SigkLnVzZXJpbmZvKTtpZigkLmhvc3QhPT12b2lkIDApJC5ob3N0PUooJC5ob3N0KTtpZigkLnBhdGghPT12b2lkIDApJC5wYXRoPUooJC5wYXRoKTtpZigkLnF1ZXJ5IT09dm9pZCAwKSQucXVlcnk9SigkLnF1ZXJ5KTtpZigkLmZyYWdtZW50IT09dm9pZCAwKSQuZnJhZ21lbnQ9SigkLmZyYWdtZW50KTtyZXR1cm4gJH1mdW5jdGlvbiBXcigkKXtsZXQgUT1bXTtpZigkLnVzZXJpbmZvIT09dm9pZCAwKVEucHVzaCgkLnVzZXJpbmZvKSxRLnB1c2goXCJAXCIpO2lmKCQuaG9zdCE9PXZvaWQgMCl7bGV0IEo9dW5lc2NhcGUoJC5ob3N0KSxZPUhJKEopO2lmKFkuaXNJUFY0KUo9WS5ob3N0O2Vsc2V7bGV0IFg9S0koWS5ob3N0KTtpZihYLmlzSVBWNj09PSEwKUo9YFske1guZXNjYXBlZEhvc3R9XWA7ZWxzZSBKPSQuaG9zdH1RLnB1c2goSil9aWYodHlwZW9mICQucG9ydD09PVwibnVtYmVyXCJ8fHR5cGVvZiAkLnBvcnQ9PT1cInN0cmluZ1wiKVEucHVzaChcIjpcIiksUS5wdXNoKFN0cmluZygkLnBvcnQpKTtyZXR1cm4gUS5sZW5ndGg/US5qb2luKFwiXCIpOnZvaWQgMH1WSS5leHBvcnRzPXtyZWNvbXBvc2VBdXRob3JpdHk6V3Isbm9ybWFsaXplQ29tcG9uZW50RW5jb2Rpbmc6WXIscmVtb3ZlRG90U2VnbWVudHM6WHIsbm9ybWFsaXplSVB2NDpISSxub3JtYWxpemVJUHY2OktJLHN0cmluZ0FycmF5VG9IZXhTdHJpcHBlZDppQn19KTt2YXIgRkk9SSgoTnckLERJKT0+e3ZhciBHcj0vXltcXGRhLWZdezh9LVtcXGRhLWZdezR9LVtcXGRhLWZdezR9LVtcXGRhLWZdezR9LVtcXGRhLWZdezEyfSQvaXUsVXI9LyhbXFxkYS16XVtcXGRcXC1hLXpdezAsMzF9KTooKD86W1xcdyEkJygpKissXFwtLjo7PUBdfCVbXFxkYS1mXXsyfSkrKS9pdTtmdW5jdGlvbiB6SSgkKXtyZXR1cm4gdHlwZW9mICQuc2VjdXJlPT09XCJib29sZWFuXCI/JC5zZWN1cmU6U3RyaW5nKCQuc2NoZW1lKS50b0xvd2VyQ2FzZSgpPT09XCJ3c3NcIn1mdW5jdGlvbiBOSSgkKXtpZighJC5ob3N0KSQuZXJyb3I9JC5lcnJvcnx8XCJIVFRQIFVSSXMgbXVzdCBoYXZlIGEgaG9zdC5cIjtyZXR1cm4gJH1mdW5jdGlvbiB3SSgkKXtsZXQgUT1TdHJpbmcoJC5zY2hlbWUpLnRvTG93ZXJDYXNlKCk9PT1cImh0dHBzXCI7aWYoJC5wb3J0PT09KFE/NDQzOjgwKXx8JC5wb3J0PT09XCJcIikkLnBvcnQ9dm9pZCAwO2lmKCEkLnBhdGgpJC5wYXRoPVwiL1wiO3JldHVybiAkfWZ1bmN0aW9uIEhyKCQpe3JldHVybiAkLnNlY3VyZT16SSgkKSwkLnJlc291cmNlTmFtZT0oJC5wYXRofHxcIi9cIikrKCQucXVlcnk/XCI/XCIrJC5xdWVyeTpcIlwiKSwkLnBhdGg9dm9pZCAwLCQucXVlcnk9dm9pZCAwLCR9ZnVuY3Rpb24gS3IoJCl7aWYoJC5wb3J0PT09KHpJKCQpPzQ0Mzo4MCl8fCQucG9ydD09PVwiXCIpJC5wb3J0PXZvaWQgMDtpZih0eXBlb2YgJC5zZWN1cmU9PT1cImJvb2xlYW5cIikkLnNjaGVtZT0kLnNlY3VyZT9cIndzc1wiOlwid3NcIiwkLnNlY3VyZT12b2lkIDA7aWYoJC5yZXNvdXJjZU5hbWUpe2xldFtRLEpdPSQucmVzb3VyY2VOYW1lLnNwbGl0KFwiP1wiKTskLnBhdGg9USYmUSE9PVwiL1wiP1E6dm9pZCAwLCQucXVlcnk9SiwkLnJlc291cmNlTmFtZT12b2lkIDB9cmV0dXJuICQuZnJhZ21lbnQ9dm9pZCAwLCR9ZnVuY3Rpb24gcXIoJCxRKXtpZighJC5wYXRoKXJldHVybiAkLmVycm9yPVwiVVJOIGNhbiBub3QgYmUgcGFyc2VkXCIsJDtsZXQgSj0kLnBhdGgubWF0Y2goVXIpO2lmKEope2xldCBZPVEuc2NoZW1lfHwkLnNjaGVtZXx8XCJ1cm5cIjskLm5pZD1KWzFdLnRvTG93ZXJDYXNlKCksJC5uc3M9SlsyXTtsZXQgWD1gJHtZfToke1EubmlkfHwkLm5pZH1gLFc9bkJbWF07aWYoJC5wYXRoPXZvaWQgMCxXKSQ9Vy5wYXJzZSgkLFEpfWVsc2UgJC5lcnJvcj0kLmVycm9yfHxcIlVSTiBjYW4gbm90IGJlIHBhcnNlZC5cIjtyZXR1cm4gJH1mdW5jdGlvbiBWcigkLFEpe2xldCBKPVEuc2NoZW1lfHwkLnNjaGVtZXx8XCJ1cm5cIixZPSQubmlkLnRvTG93ZXJDYXNlKCksWD1gJHtKfToke1EubmlkfHxZfWAsVz1uQltYXTtpZihXKSQ9Vy5zZXJpYWxpemUoJCxRKTtsZXQgRz0kLFU9JC5uc3M7cmV0dXJuIEcucGF0aD1gJHtZfHxRLm5pZH06JHtVfWAsUS5za2lwRXNjYXBlPSEwLEd9ZnVuY3Rpb24gQnIoJCxRKXtsZXQgSj0kO2lmKEoudXVpZD1KLm5zcyxKLm5zcz12b2lkIDAsIVEudG9sZXJhbnQmJighSi51dWlkfHwhR3IudGVzdChKLnV1aWQpKSlKLmVycm9yPUouZXJyb3J8fFwiVVVJRCBpcyBub3QgdmFsaWQuXCI7cmV0dXJuIEp9ZnVuY3Rpb24genIoJCl7bGV0IFE9JDtyZXR1cm4gUS5uc3M9KCQudXVpZHx8XCJcIikudG9Mb3dlckNhc2UoKSxRfXZhciBPST17c2NoZW1lOlwiaHR0cFwiLGRvbWFpbkhvc3Q6ITAscGFyc2U6Tkksc2VyaWFsaXplOndJfSxOcj17c2NoZW1lOlwiaHR0cHNcIixkb21haW5Ib3N0Ok9JLmRvbWFpbkhvc3QscGFyc2U6Tkksc2VyaWFsaXplOndJfSx5Vz17c2NoZW1lOlwid3NcIixkb21haW5Ib3N0OiEwLHBhcnNlOkhyLHNlcmlhbGl6ZTpLcn0sd3I9e3NjaGVtZTpcIndzc1wiLGRvbWFpbkhvc3Q6eVcuZG9tYWluSG9zdCxwYXJzZTp5Vy5wYXJzZSxzZXJpYWxpemU6eVcuc2VyaWFsaXplfSxPcj17c2NoZW1lOlwidXJuXCIscGFyc2U6cXIsc2VyaWFsaXplOlZyLHNraXBOb3JtYWxpemU6ITB9LERyPXtzY2hlbWU6XCJ1cm46dXVpZFwiLHBhcnNlOkJyLHNlcmlhbGl6ZTp6cixza2lwTm9ybWFsaXplOiEwfSxuQj17aHR0cDpPSSxodHRwczpOcix3czp5Vyx3c3M6d3IsdXJuOk9yLFwidXJuOnV1aWRcIjpEcn07REkuZXhwb3J0cz1uQn0pO3ZhciBNST1JKCh3dyQsaFcpPT57dmFye25vcm1hbGl6ZUlQdjY6RnIsbm9ybWFsaXplSVB2NDpacixyZW1vdmVEb3RTZWdtZW50czpnSixyZWNvbXBvc2VBdXRob3JpdHk6TXIsbm9ybWFsaXplQ29tcG9uZW50RW5jb2Rpbmc6Z1d9PUJJKCksckI9RkkoKTtmdW5jdGlvbiBMcigkLFEpe2lmKHR5cGVvZiAkPT09XCJzdHJpbmdcIikkPVM0KFkxKCQsUSksUSk7ZWxzZSBpZih0eXBlb2YgJD09PVwib2JqZWN0XCIpJD1ZMShTNCgkLFEpLFEpO3JldHVybiAkfWZ1bmN0aW9uIGpyKCQsUSxKKXtsZXQgWT1PYmplY3QuYXNzaWduKHtzY2hlbWU6XCJudWxsXCJ9LEopLFg9WkkoWTEoJCxZKSxZMShRLFkpLFksITApO3JldHVybiBTNChYLHsuLi5ZLHNraXBFc2NhcGU6ITB9KX1mdW5jdGlvbiBaSSgkLFEsSixZKXtsZXQgWD17fTtpZighWSkkPVkxKFM0KCQsSiksSiksUT1ZMShTNChRLEopLEopO2lmKEo9Snx8e30sIUoudG9sZXJhbnQmJlEuc2NoZW1lKVguc2NoZW1lPVEuc2NoZW1lLFgudXNlcmluZm89US51c2VyaW5mbyxYLmhvc3Q9US5ob3N0LFgucG9ydD1RLnBvcnQsWC5wYXRoPWdKKFEucGF0aHx8XCJcIiksWC5xdWVyeT1RLnF1ZXJ5O2Vsc2V7aWYoUS51c2VyaW5mbyE9PXZvaWQgMHx8US5ob3N0IT09dm9pZCAwfHxRLnBvcnQhPT12b2lkIDApWC51c2VyaW5mbz1RLnVzZXJpbmZvLFguaG9zdD1RLmhvc3QsWC5wb3J0PVEucG9ydCxYLnBhdGg9Z0ooUS5wYXRofHxcIlwiKSxYLnF1ZXJ5PVEucXVlcnk7ZWxzZXtpZighUS5wYXRoKWlmKFgucGF0aD0kLnBhdGgsUS5xdWVyeSE9PXZvaWQgMClYLnF1ZXJ5PVEucXVlcnk7ZWxzZSBYLnF1ZXJ5PSQucXVlcnk7ZWxzZXtpZihRLnBhdGguY2hhckF0KDApPT09XCIvXCIpWC5wYXRoPWdKKFEucGF0aCk7ZWxzZXtpZigoJC51c2VyaW5mbyE9PXZvaWQgMHx8JC5ob3N0IT09dm9pZCAwfHwkLnBvcnQhPT12b2lkIDApJiYhJC5wYXRoKVgucGF0aD1cIi9cIitRLnBhdGg7ZWxzZSBpZighJC5wYXRoKVgucGF0aD1RLnBhdGg7ZWxzZSBYLnBhdGg9JC5wYXRoLnNsaWNlKDAsJC5wYXRoLmxhc3RJbmRleE9mKFwiL1wiKSsxKStRLnBhdGg7WC5wYXRoPWdKKFgucGF0aCl9WC5xdWVyeT1RLnF1ZXJ5fVgudXNlcmluZm89JC51c2VyaW5mbyxYLmhvc3Q9JC5ob3N0LFgucG9ydD0kLnBvcnR9WC5zY2hlbWU9JC5zY2hlbWV9cmV0dXJuIFguZnJhZ21lbnQ9US5mcmFnbWVudCxYfWZ1bmN0aW9uIEFyKCQsUSxKKXtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpJD11bmVzY2FwZSgkKSwkPVM0KGdXKFkxKCQsSiksITApLHsuLi5KLHNraXBFc2NhcGU6ITB9KTtlbHNlIGlmKHR5cGVvZiAkPT09XCJvYmplY3RcIikkPVM0KGdXKCQsITApLHsuLi5KLHNraXBFc2NhcGU6ITB9KTtpZih0eXBlb2YgUT09PVwic3RyaW5nXCIpUT11bmVzY2FwZShRKSxRPVM0KGdXKFkxKFEsSiksITApLHsuLi5KLHNraXBFc2NhcGU6ITB9KTtlbHNlIGlmKHR5cGVvZiBRPT09XCJvYmplY3RcIilRPVM0KGdXKFEsITApLHsuLi5KLHNraXBFc2NhcGU6ITB9KTtyZXR1cm4gJC50b0xvd2VyQ2FzZSgpPT09US50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFM0KCQsUSl7bGV0IEo9e2hvc3Q6JC5ob3N0LHNjaGVtZTokLnNjaGVtZSx1c2VyaW5mbzokLnVzZXJpbmZvLHBvcnQ6JC5wb3J0LHBhdGg6JC5wYXRoLHF1ZXJ5OiQucXVlcnksbmlkOiQubmlkLG5zczokLm5zcyx1dWlkOiQudXVpZCxmcmFnbWVudDokLmZyYWdtZW50LHJlZmVyZW5jZTokLnJlZmVyZW5jZSxyZXNvdXJjZU5hbWU6JC5yZXNvdXJjZU5hbWUsc2VjdXJlOiQuc2VjdXJlLGVycm9yOlwiXCJ9LFk9T2JqZWN0LmFzc2lnbih7fSxRKSxYPVtdLFc9ckJbKFkuc2NoZW1lfHxKLnNjaGVtZXx8XCJcIikudG9Mb3dlckNhc2UoKV07aWYoVyYmVy5zZXJpYWxpemUpVy5zZXJpYWxpemUoSixZKTtpZihKLnBhdGghPT12b2lkIDApaWYoIVkuc2tpcEVzY2FwZSl7aWYoSi5wYXRoPWVzY2FwZShKLnBhdGgpLEouc2NoZW1lIT09dm9pZCAwKUoucGF0aD1KLnBhdGguc3BsaXQoXCIlM0FcIikuam9pbihcIjpcIil9ZWxzZSBKLnBhdGg9dW5lc2NhcGUoSi5wYXRoKTtpZihZLnJlZmVyZW5jZSE9PVwic3VmZml4XCImJkouc2NoZW1lKVgucHVzaChKLnNjaGVtZSxcIjpcIik7bGV0IEc9TXIoSik7aWYoRyE9PXZvaWQgMCl7aWYoWS5yZWZlcmVuY2UhPT1cInN1ZmZpeFwiKVgucHVzaChcIi8vXCIpO2lmKFgucHVzaChHKSxKLnBhdGgmJkoucGF0aC5jaGFyQXQoMCkhPT1cIi9cIilYLnB1c2goXCIvXCIpfWlmKEoucGF0aCE9PXZvaWQgMCl7bGV0IFU9Si5wYXRoO2lmKCFZLmFic29sdXRlUGF0aCYmKCFXfHwhVy5hYnNvbHV0ZVBhdGgpKVU9Z0ooVSk7aWYoRz09PXZvaWQgMClVPVUucmVwbGFjZSgvXlxcL1xcLy91LFwiLyUyRlwiKTtYLnB1c2goVSl9aWYoSi5xdWVyeSE9PXZvaWQgMClYLnB1c2goXCI/XCIsSi5xdWVyeSk7aWYoSi5mcmFnbWVudCE9PXZvaWQgMClYLnB1c2goXCIjXCIsSi5mcmFnbWVudCk7cmV0dXJuIFguam9pbihcIlwiKX12YXIgSXI9QXJyYXkuZnJvbSh7bGVuZ3RoOjEyN30sKCQsUSk9Pi9bXiFcIiQmJygpKissXFwtLjs9X2BhLXp7fX5dL3UudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKFEpKSk7ZnVuY3Rpb24gUnIoJCl7bGV0IFE9MDtmb3IobGV0IEo9MCxZPSQubGVuZ3RoO0o8WTsrK0opaWYoUT0kLmNoYXJDb2RlQXQoSiksUT4xMjZ8fElyW1FdKXJldHVybiEwO3JldHVybiExfXZhciBQcj0vXig/OihbXiMvOj9dKyk6KT8oPzpcXC9cXC8oKD86KFteIy8/QF0qKUApPyhcXFtbXiMvP1xcXV0rXFxdfFteIy86P10qKSg/OjooXFxkKikpPykpPyhbXiM/XSopKD86XFw/KFteI10qKSk/KD86IygoPzoufFtcXG5cXHJdKSopKT8vdTtmdW5jdGlvbiBZMSgkLFEpe2xldCBKPU9iamVjdC5hc3NpZ24oe30sUSksWT17c2NoZW1lOnZvaWQgMCx1c2VyaW5mbzp2b2lkIDAsaG9zdDpcIlwiLHBvcnQ6dm9pZCAwLHBhdGg6XCJcIixxdWVyeTp2b2lkIDAsZnJhZ21lbnQ6dm9pZCAwfSxYPSQuaW5kZXhPZihcIiVcIikhPT0tMSxXPSExO2lmKEoucmVmZXJlbmNlPT09XCJzdWZmaXhcIikkPShKLnNjaGVtZT9KLnNjaGVtZStcIjpcIjpcIlwiKStcIi8vXCIrJDtsZXQgRz0kLm1hdGNoKFByKTtpZihHKXtpZihZLnNjaGVtZT1HWzFdLFkudXNlcmluZm89R1szXSxZLmhvc3Q9R1s0XSxZLnBvcnQ9cGFyc2VJbnQoR1s1XSwxMCksWS5wYXRoPUdbNl18fFwiXCIsWS5xdWVyeT1HWzddLFkuZnJhZ21lbnQ9R1s4XSxpc05hTihZLnBvcnQpKVkucG9ydD1HWzVdO2lmKFkuaG9zdCl7bGV0IEg9WnIoWS5ob3N0KTtpZihILmlzSVBWND09PSExKXtsZXQgcT1GcihILmhvc3QpO1kuaG9zdD1xLmhvc3QudG9Mb3dlckNhc2UoKSxXPXEuaXNJUFY2fWVsc2UgWS5ob3N0PUguaG9zdCxXPSEwfWlmKFkuc2NoZW1lPT09dm9pZCAwJiZZLnVzZXJpbmZvPT09dm9pZCAwJiZZLmhvc3Q9PT12b2lkIDAmJlkucG9ydD09PXZvaWQgMCYmWS5xdWVyeT09PXZvaWQgMCYmIVkucGF0aClZLnJlZmVyZW5jZT1cInNhbWUtZG9jdW1lbnRcIjtlbHNlIGlmKFkuc2NoZW1lPT09dm9pZCAwKVkucmVmZXJlbmNlPVwicmVsYXRpdmVcIjtlbHNlIGlmKFkuZnJhZ21lbnQ9PT12b2lkIDApWS5yZWZlcmVuY2U9XCJhYnNvbHV0ZVwiO2Vsc2UgWS5yZWZlcmVuY2U9XCJ1cmlcIjtpZihKLnJlZmVyZW5jZSYmSi5yZWZlcmVuY2UhPT1cInN1ZmZpeFwiJiZKLnJlZmVyZW5jZSE9PVkucmVmZXJlbmNlKVkuZXJyb3I9WS5lcnJvcnx8XCJVUkkgaXMgbm90IGEgXCIrSi5yZWZlcmVuY2UrXCIgcmVmZXJlbmNlLlwiO2xldCBVPXJCWyhKLnNjaGVtZXx8WS5zY2hlbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCldO2lmKCFKLnVuaWNvZGVTdXBwb3J0JiYoIVV8fCFVLnVuaWNvZGVTdXBwb3J0KSl7aWYoWS5ob3N0JiYoSi5kb21haW5Ib3N0fHxVJiZVLmRvbWFpbkhvc3QpJiZXPT09ITEmJlJyKFkuaG9zdCkpdHJ5e1kuaG9zdD1VUkwuZG9tYWluVG9BU0NJSShZLmhvc3QudG9Mb3dlckNhc2UoKSl9Y2F0Y2goSCl7WS5lcnJvcj1ZLmVycm9yfHxcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSTogXCIrSH19aWYoIVV8fFUmJiFVLnNraXBOb3JtYWxpemUpe2lmKFgmJlkuc2NoZW1lIT09dm9pZCAwKVkuc2NoZW1lPXVuZXNjYXBlKFkuc2NoZW1lKTtpZihYJiZZLmhvc3QhPT12b2lkIDApWS5ob3N0PXVuZXNjYXBlKFkuaG9zdCk7aWYoWS5wYXRoKVkucGF0aD1lc2NhcGUodW5lc2NhcGUoWS5wYXRoKSk7aWYoWS5mcmFnbWVudClZLmZyYWdtZW50PWVuY29kZVVSSShkZWNvZGVVUklDb21wb25lbnQoWS5mcmFnbWVudCkpfWlmKFUmJlUucGFyc2UpVS5wYXJzZShZLEopfWVsc2UgWS5lcnJvcj1ZLmVycm9yfHxcIlVSSSBjYW4gbm90IGJlIHBhcnNlZC5cIjtyZXR1cm4gWX12YXIgb0I9e1NDSEVNRVM6ckIsbm9ybWFsaXplOkxyLHJlc29sdmU6anIscmVzb2x2ZUNvbXBvbmVudHM6WkksZXF1YWw6QXIsc2VyaWFsaXplOlM0LHBhcnNlOlkxfTtoVy5leHBvcnRzPW9CO2hXLmV4cG9ydHMuZGVmYXVsdD1vQjtoVy5leHBvcnRzLmZhc3RVcmk9b0J9KTt2YXIgQUk9SSgoakkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGpJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBMST1NSSgpO0xJLmNvZGU9J3JlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL3VyaVwiKS5kZWZhdWx0JztqSS5kZWZhdWx0PUxJfSk7dmFyIGtJPUkoKFcxKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShXMSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtXMS5Db2RlR2VuPVcxLk5hbWU9VzEubmlsPVcxLnN0cmluZ2lmeT1XMS5zdHI9VzEuXz1XMS5LZXl3b3JkQ3h0PXZvaWQgMDt2YXIgYnI9eEooKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJLZXl3b3JkQ3h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyLktleXdvcmRDeHR9fSk7dmFyIEY5PVEkKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFcxLFwiX1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBGOS5ffX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXMSxcInN0clwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBGOS5zdHJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFcxLFwic3RyaW5naWZ5XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEY5LnN0cmluZ2lmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJuaWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRjkubmlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXMSxcIk5hbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRjkuTmFtZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJDb2RlR2VuXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEY5LkNvZGVHZW59fSk7dmFyIF9yPVRXKCksYkk9ZkooKSxTcj1fQigpLGhKPWZXKCksa3I9USQoKSx1Sj12SigpLHVXPWtKKCksYUI9cSQoKSxJST1KSSgpLHZyPUFJKCksX0k9KCQsUSk9Pm5ldyBSZWdFeHAoJCxRKTtfSS5jb2RlPVwibmV3IFJlZ0V4cFwiO3ZhciBDcj1bXCJyZW1vdmVBZGRpdGlvbmFsXCIsXCJ1c2VEZWZhdWx0c1wiLFwiY29lcmNlVHlwZXNcIl0sVHI9bmV3IFNldChbXCJ2YWxpZGF0ZVwiLFwic2VyaWFsaXplXCIsXCJwYXJzZVwiLFwid3JhcHBlclwiLFwicm9vdFwiLFwic2NoZW1hXCIsXCJrZXl3b3JkXCIsXCJwYXR0ZXJuXCIsXCJmb3JtYXRzXCIsXCJ2YWxpZGF0ZSRkYXRhXCIsXCJmdW5jXCIsXCJvYmpcIixcIkVycm9yXCJdKSx4cj17ZXJyb3JEYXRhUGF0aDpcIlwiLGZvcm1hdDpcImB2YWxpZGF0ZUZvcm1hdHM6IGZhbHNlYCBjYW4gYmUgdXNlZCBpbnN0ZWFkLlwiLG51bGxhYmxlOidcIm51bGxhYmxlXCIga2V5d29yZCBpcyBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4nLGpzb25Qb2ludGVyczpcIkRlcHJlY2F0ZWQganNQcm9wZXJ0eVN5bnRheCBjYW4gYmUgdXNlZCBpbnN0ZWFkLlwiLGV4dGVuZFJlZnM6XCJEZXByZWNhdGVkIGlnbm9yZUtleXdvcmRzV2l0aFJlZiBjYW4gYmUgdXNlZCBpbnN0ZWFkLlwiLG1pc3NpbmdSZWZzOlwiUGFzcyBlbXB0eSBzY2hlbWEgd2l0aCAkaWQgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB0byBhanYuYWRkU2NoZW1hLlwiLHByb2Nlc3NDb2RlOlwiVXNlIG9wdGlvbiBgY29kZToge3Byb2Nlc3M6IChjb2RlLCBzY2hlbWFFbnY6IG9iamVjdCkgPT4gc3RyaW5nfWBcIixzb3VyY2VDb2RlOlwiVXNlIG9wdGlvbiBgY29kZToge3NvdXJjZTogdHJ1ZX1gXCIsc3RyaWN0RGVmYXVsdHM6XCJJdCBpcyBkZWZhdWx0IG5vdywgc2VlIG9wdGlvbiBgc3RyaWN0YC5cIixzdHJpY3RLZXl3b3JkczpcIkl0IGlzIGRlZmF1bHQgbm93LCBzZWUgb3B0aW9uIGBzdHJpY3RgLlwiLHVuaXF1ZUl0ZW1zOidcInVuaXF1ZUl0ZW1zXCIga2V5d29yZCBpcyBhbHdheXMgdmFsaWRhdGVkLicsdW5rbm93bkZvcm1hdHM6XCJEaXNhYmxlIHN0cmljdCBtb2RlIG9yIHBhc3MgYHRydWVgIHRvIGBhanYuYWRkRm9ybWF0YCAob3IgYGZvcm1hdHNgIG9wdGlvbikuXCIsY2FjaGU6XCJNYXAgaXMgdXNlZCBhcyBjYWNoZSwgc2NoZW1hIG9iamVjdCBhcyBrZXkuXCIsc2VyaWFsaXplOlwiTWFwIGlzIHVzZWQgYXMgY2FjaGUsIHNjaGVtYSBvYmplY3QgYXMga2V5LlwiLGFqdkVycm9yczpcIkl0IGlzIGRlZmF1bHQgbm93LlwifSxmcj17aWdub3JlS2V5d29yZHNXaXRoUmVmOlwiXCIsanNQcm9wZXJ0eVN5bnRheDpcIlwiLHVuaWNvZGU6J1wibWluTGVuZ3RoXCIvXCJtYXhMZW5ndGhcIiBhY2NvdW50IGZvciB1bmljb2RlIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4nfSxSST0yMDA7ZnVuY3Rpb24geXIoJCl7dmFyIFEsSixZLFgsVyxHLFUsSCxxLFYsQix6LE4sdyxPLEQsTSxqLEEsayx1LEckLGgkLHMkLHU2O2xldCBDND0kLnN0cmljdCxMND0oUT0kLmNvZGUpPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5vcHRpbWl6ZSxuMD1MND09PSEwfHxMND09PXZvaWQgMD8xOkw0fHwwLFUxPShZPShKPSQuY29kZSk9PT1udWxsfHxKPT09dm9pZCAwP3ZvaWQgMDpKLnJlZ0V4cCkhPT1udWxsJiZZIT09dm9pZCAwP1k6X0kscjA9KFg9JC51cmlSZXNvbHZlcikhPT1udWxsJiZYIT09dm9pZCAwP1g6dnIuZGVmYXVsdDtyZXR1cm57c3RyaWN0U2NoZW1hOihHPShXPSQuc3RyaWN0U2NoZW1hKSE9PW51bGwmJlchPT12b2lkIDA/VzpDNCkhPT1udWxsJiZHIT09dm9pZCAwP0c6ITAsc3RyaWN0TnVtYmVyczooSD0oVT0kLnN0cmljdE51bWJlcnMpIT09bnVsbCYmVSE9PXZvaWQgMD9VOkM0KSE9PW51bGwmJkghPT12b2lkIDA/SDohMCxzdHJpY3RUeXBlczooVj0ocT0kLnN0cmljdFR5cGVzKSE9PW51bGwmJnEhPT12b2lkIDA/cTpDNCkhPT1udWxsJiZWIT09dm9pZCAwP1Y6XCJsb2dcIixzdHJpY3RUdXBsZXM6KHo9KEI9JC5zdHJpY3RUdXBsZXMpIT09bnVsbCYmQiE9PXZvaWQgMD9COkM0KSE9PW51bGwmJnohPT12b2lkIDA/ejpcImxvZ1wiLHN0cmljdFJlcXVpcmVkOih3PShOPSQuc3RyaWN0UmVxdWlyZWQpIT09bnVsbCYmTiE9PXZvaWQgMD9OOkM0KSE9PW51bGwmJnchPT12b2lkIDA/dzohMSxjb2RlOiQuY29kZT97Li4uJC5jb2RlLG9wdGltaXplOm4wLHJlZ0V4cDpVMX06e29wdGltaXplOm4wLHJlZ0V4cDpVMX0sbG9vcFJlcXVpcmVkOihPPSQubG9vcFJlcXVpcmVkKSE9PW51bGwmJk8hPT12b2lkIDA/TzpSSSxsb29wRW51bTooRD0kLmxvb3BFbnVtKSE9PW51bGwmJkQhPT12b2lkIDA/RDpSSSxtZXRhOihNPSQubWV0YSkhPT1udWxsJiZNIT09dm9pZCAwP006ITAsbWVzc2FnZXM6KGo9JC5tZXNzYWdlcykhPT1udWxsJiZqIT09dm9pZCAwP2o6ITAsaW5saW5lUmVmczooQT0kLmlubGluZVJlZnMpIT09bnVsbCYmQSE9PXZvaWQgMD9BOiEwLHNjaGVtYUlkOihrPSQuc2NoZW1hSWQpIT09bnVsbCYmayE9PXZvaWQgMD9rOlwiJGlkXCIsYWRkVXNlZFNjaGVtYToodT0kLmFkZFVzZWRTY2hlbWEpIT09bnVsbCYmdSE9PXZvaWQgMD91OiEwLHZhbGlkYXRlU2NoZW1hOihHJD0kLnZhbGlkYXRlU2NoZW1hKSE9PW51bGwmJkckIT09dm9pZCAwP0ckOiEwLHZhbGlkYXRlRm9ybWF0czooaCQ9JC52YWxpZGF0ZUZvcm1hdHMpIT09bnVsbCYmaCQhPT12b2lkIDA/aCQ6ITAsdW5pY29kZVJlZ0V4cDoocyQ9JC51bmljb2RlUmVnRXhwKSE9PW51bGwmJnMkIT09dm9pZCAwP3MkOiEwLGludDMycmFuZ2U6KHU2PSQuaW50MzJyYW5nZSkhPT1udWxsJiZ1NiE9PXZvaWQgMD91NjohMCx1cmlSZXNvbHZlcjpyMH19Y2xhc3MgbVd7Y29uc3RydWN0b3IoJD17fSl7dGhpcy5zY2hlbWFzPXt9LHRoaXMucmVmcz17fSx0aGlzLmZvcm1hdHM9e30sdGhpcy5fY29tcGlsYXRpb25zPW5ldyBTZXQsdGhpcy5fbG9hZGluZz17fSx0aGlzLl9jYWNoZT1uZXcgTWFwLCQ9dGhpcy5vcHRzPXsuLi4kLC4uLnlyKCQpfTtsZXR7ZXM1OlEsbGluZXM6Sn09dGhpcy5vcHRzLmNvZGU7dGhpcy5zY29wZT1uZXcga3IuVmFsdWVTY29wZSh7c2NvcGU6e30scHJlZml4ZXM6VHIsZXM1OlEsbGluZXM6Sn0pLHRoaXMubG9nZ2VyPWNyKCQubG9nZ2VyKTtsZXQgWT0kLnZhbGlkYXRlRm9ybWF0cztpZigkLnZhbGlkYXRlRm9ybWF0cz0hMSx0aGlzLlJVTEVTPSgwLFNyLmdldFJ1bGVzKSgpLFBJLmNhbGwodGhpcyx4ciwkLFwiTk9UIFNVUFBPUlRFRFwiKSxQSS5jYWxsKHRoaXMsZnIsJCxcIkRFUFJFQ0FURURcIixcIndhcm5cIiksdGhpcy5fbWV0YU9wdHM9bXIuY2FsbCh0aGlzKSwkLmZvcm1hdHMpaHIuY2FsbCh0aGlzKTtpZih0aGlzLl9hZGRWb2NhYnVsYXJpZXMoKSx0aGlzLl9hZGREZWZhdWx0TWV0YVNjaGVtYSgpLCQua2V5d29yZHMpdXIuY2FsbCh0aGlzLCQua2V5d29yZHMpO2lmKHR5cGVvZiAkLm1ldGE9PVwib2JqZWN0XCIpdGhpcy5hZGRNZXRhU2NoZW1hKCQubWV0YSk7Z3IuY2FsbCh0aGlzKSwkLnZhbGlkYXRlRm9ybWF0cz1ZfV9hZGRWb2NhYnVsYXJpZXMoKXt0aGlzLmFkZEtleXdvcmQoXCIkYXN5bmNcIil9X2FkZERlZmF1bHRNZXRhU2NoZW1hKCl7bGV0eyRkYXRhOiQsbWV0YTpRLHNjaGVtYUlkOkp9PXRoaXMub3B0cyxZPUlJO2lmKEo9PT1cImlkXCIpWT17Li4uSUl9LFkuaWQ9WS4kaWQsZGVsZXRlIFkuJGlkO2lmKFEmJiQpdGhpcy5hZGRNZXRhU2NoZW1hKFksWVtKXSwhMSl9ZGVmYXVsdE1ldGEoKXtsZXR7bWV0YTokLHNjaGVtYUlkOlF9PXRoaXMub3B0cztyZXR1cm4gdGhpcy5vcHRzLmRlZmF1bHRNZXRhPXR5cGVvZiAkPT1cIm9iamVjdFwiPyRbUV18fCQ6dm9pZCAwfXZhbGlkYXRlKCQsUSl7bGV0IEo7aWYodHlwZW9mICQ9PVwic3RyaW5nXCIpe2lmKEo9dGhpcy5nZXRTY2hlbWEoJCksIUopdGhyb3cgRXJyb3IoYG5vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgXCIkeyR9XCJgKX1lbHNlIEo9dGhpcy5jb21waWxlKCQpO2xldCBZPUooUSk7aWYoIShcIiRhc3luY1wiaW4gSikpdGhpcy5lcnJvcnM9Si5lcnJvcnM7cmV0dXJuIFl9Y29tcGlsZSgkLFEpe2xldCBKPXRoaXMuX2FkZFNjaGVtYSgkLFEpO3JldHVybiBKLnZhbGlkYXRlfHx0aGlzLl9jb21waWxlU2NoZW1hRW52KEopfWNvbXBpbGVBc3luYygkLFEpe2lmKHR5cGVvZiB0aGlzLm9wdHMubG9hZFNjaGVtYSE9XCJmdW5jdGlvblwiKXRocm93IEVycm9yKFwib3B0aW9ucy5sb2FkU2NoZW1hIHNob3VsZCBiZSBhIGZ1bmN0aW9uXCIpO2xldHtsb2FkU2NoZW1hOkp9PXRoaXMub3B0cztyZXR1cm4gWS5jYWxsKHRoaXMsJCxRKTthc3luYyBmdW5jdGlvbiBZKHEsVil7YXdhaXQgWC5jYWxsKHRoaXMscS4kc2NoZW1hKTtsZXQgQj10aGlzLl9hZGRTY2hlbWEocSxWKTtyZXR1cm4gQi52YWxpZGF0ZXx8Vy5jYWxsKHRoaXMsQil9YXN5bmMgZnVuY3Rpb24gWChxKXtpZihxJiYhdGhpcy5nZXRTY2hlbWEocSkpYXdhaXQgWS5jYWxsKHRoaXMseyRyZWY6cX0sITApfWFzeW5jIGZ1bmN0aW9uIFcocSl7dHJ5e3JldHVybiB0aGlzLl9jb21waWxlU2NoZW1hRW52KHEpfWNhdGNoKFYpe2lmKCEoViBpbnN0YW5jZW9mIGJJLmRlZmF1bHQpKXRocm93IFY7cmV0dXJuIEcuY2FsbCh0aGlzLFYpLGF3YWl0IFUuY2FsbCh0aGlzLFYubWlzc2luZ1NjaGVtYSksVy5jYWxsKHRoaXMscSl9fWZ1bmN0aW9uIEcoe21pc3NpbmdTY2hlbWE6cSxtaXNzaW5nUmVmOlZ9KXtpZih0aGlzLnJlZnNbcV0pdGhyb3cgRXJyb3IoYEFueVNjaGVtYSAke3F9IGlzIGxvYWRlZCBidXQgJHtWfSBjYW5ub3QgYmUgcmVzb2x2ZWRgKX1hc3luYyBmdW5jdGlvbiBVKHEpe2xldCBWPWF3YWl0IEguY2FsbCh0aGlzLHEpO2lmKCF0aGlzLnJlZnNbcV0pYXdhaXQgWC5jYWxsKHRoaXMsVi4kc2NoZW1hKTtpZighdGhpcy5yZWZzW3FdKXRoaXMuYWRkU2NoZW1hKFYscSxRKX1hc3luYyBmdW5jdGlvbiBIKHEpe2xldCBWPXRoaXMuX2xvYWRpbmdbcV07aWYoVilyZXR1cm4gVjt0cnl7cmV0dXJuIGF3YWl0KHRoaXMuX2xvYWRpbmdbcV09SihxKSl9ZmluYWxseXtkZWxldGUgdGhpcy5fbG9hZGluZ1txXX19fWFkZFNjaGVtYSgkLFEsSixZPXRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSl7aWYoQXJyYXkuaXNBcnJheSgkKSl7Zm9yKGxldCBXIG9mICQpdGhpcy5hZGRTY2hlbWEoVyx2b2lkIDAsSixZKTtyZXR1cm4gdGhpc31sZXQgWDtpZih0eXBlb2YgJD09PVwib2JqZWN0XCIpe2xldHtzY2hlbWFJZDpXfT10aGlzLm9wdHM7aWYoWD0kW1ddLFghPT12b2lkIDAmJnR5cGVvZiBYIT1cInN0cmluZ1wiKXRocm93IEVycm9yKGBzY2hlbWEgJHtXfSBtdXN0IGJlIHN0cmluZ2ApfXJldHVybiBRPSgwLHVKLm5vcm1hbGl6ZUlkKShRfHxYKSx0aGlzLl9jaGVja1VuaXF1ZShRKSx0aGlzLnNjaGVtYXNbUV09dGhpcy5fYWRkU2NoZW1hKCQsSixRLFksITApLHRoaXN9YWRkTWV0YVNjaGVtYSgkLFEsSj10aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEpe3JldHVybiB0aGlzLmFkZFNjaGVtYSgkLFEsITAsSiksdGhpc312YWxpZGF0ZVNjaGVtYSgkLFEpe2lmKHR5cGVvZiAkPT1cImJvb2xlYW5cIilyZXR1cm4hMDtsZXQgSjtpZihKPSQuJHNjaGVtYSxKIT09dm9pZCAwJiZ0eXBlb2YgSiE9XCJzdHJpbmdcIil0aHJvdyBFcnJvcihcIiRzY2hlbWEgbXVzdCBiZSBhIHN0cmluZ1wiKTtpZihKPUp8fHRoaXMub3B0cy5kZWZhdWx0TWV0YXx8dGhpcy5kZWZhdWx0TWV0YSgpLCFKKXJldHVybiB0aGlzLmxvZ2dlci53YXJuKFwibWV0YS1zY2hlbWEgbm90IGF2YWlsYWJsZVwiKSx0aGlzLmVycm9ycz1udWxsLCEwO2xldCBZPXRoaXMudmFsaWRhdGUoSiwkKTtpZighWSYmUSl7bGV0IFg9XCJzY2hlbWEgaXMgaW52YWxpZDogXCIrdGhpcy5lcnJvcnNUZXh0KCk7aWYodGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hPT09XCJsb2dcIil0aGlzLmxvZ2dlci5lcnJvcihYKTtlbHNlIHRocm93IEVycm9yKFgpfXJldHVybiBZfWdldFNjaGVtYSgkKXtsZXQgUTt3aGlsZSh0eXBlb2YoUT1FSS5jYWxsKHRoaXMsJCkpPT1cInN0cmluZ1wiKSQ9UTtpZihRPT09dm9pZCAwKXtsZXR7c2NoZW1hSWQ6Sn09dGhpcy5vcHRzLFk9bmV3IGhKLlNjaGVtYUVudih7c2NoZW1hOnt9LHNjaGVtYUlkOkp9KTtpZihRPWhKLnJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLFksJCksIVEpcmV0dXJuO3RoaXMucmVmc1skXT1RfXJldHVybiBRLnZhbGlkYXRlfHx0aGlzLl9jb21waWxlU2NoZW1hRW52KFEpfXJlbW92ZVNjaGVtYSgkKXtpZigkIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcywkKSx0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMucmVmcywkKSx0aGlzO3N3aXRjaCh0eXBlb2YgJCl7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHRoaXMuX3JlbW92ZUFsbFNjaGVtYXModGhpcy5zY2hlbWFzKSx0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMucmVmcyksdGhpcy5fY2FjaGUuY2xlYXIoKSx0aGlzO2Nhc2VcInN0cmluZ1wiOntsZXQgUT1FSS5jYWxsKHRoaXMsJCk7aWYodHlwZW9mIFE9PVwib2JqZWN0XCIpdGhpcy5fY2FjaGUuZGVsZXRlKFEuc2NoZW1hKTtyZXR1cm4gZGVsZXRlIHRoaXMuc2NoZW1hc1skXSxkZWxldGUgdGhpcy5yZWZzWyRdLHRoaXN9Y2FzZVwib2JqZWN0XCI6e2xldCBRPSQ7dGhpcy5fY2FjaGUuZGVsZXRlKFEpO2xldCBKPSRbdGhpcy5vcHRzLnNjaGVtYUlkXTtpZihKKUo9KDAsdUoubm9ybWFsaXplSWQpKEopLGRlbGV0ZSB0aGlzLnNjaGVtYXNbSl0sZGVsZXRlIHRoaXMucmVmc1tKXTtyZXR1cm4gdGhpc31kZWZhdWx0OnRocm93IEVycm9yKFwiYWp2LnJlbW92ZVNjaGVtYTogaW52YWxpZCBwYXJhbWV0ZXJcIil9fWFkZFZvY2FidWxhcnkoJCl7Zm9yKGxldCBRIG9mICQpdGhpcy5hZGRLZXl3b3JkKFEpO3JldHVybiB0aGlzfWFkZEtleXdvcmQoJCxRKXtsZXQgSjtpZih0eXBlb2YgJD09XCJzdHJpbmdcIil7aWYoSj0kLHR5cGVvZiBRPT1cIm9iamVjdFwiKXRoaXMubG9nZ2VyLndhcm4oXCJ0aGVzZSBwYXJhbWV0ZXJzIGFyZSBkZXByZWNhdGVkLCBzZWUgZG9jcyBmb3IgYWRkS2V5d29yZFwiKSxRLmtleXdvcmQ9Sn1lbHNlIGlmKHR5cGVvZiAkPT1cIm9iamVjdFwiJiZRPT09dm9pZCAwKXtpZihRPSQsSj1RLmtleXdvcmQsQXJyYXkuaXNBcnJheShKKSYmIUoubGVuZ3RoKXRocm93IEVycm9yKFwiYWRkS2V5d29yZHM6IGtleXdvcmQgbXVzdCBiZSBzdHJpbmcgb3Igbm9uLWVtcHR5IGFycmF5XCIpfWVsc2UgdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGFkZEtleXdvcmRzIHBhcmFtZXRlcnNcIik7aWYoZHIuY2FsbCh0aGlzLEosUSksIVEpcmV0dXJuKDAsYUIuZWFjaEl0ZW0pKEosKFgpPT50Qi5jYWxsKHRoaXMsWCkpLHRoaXM7bnIuY2FsbCh0aGlzLFEpO2xldCBZPXsuLi5RLHR5cGU6KDAsdVcuZ2V0SlNPTlR5cGVzKShRLnR5cGUpLHNjaGVtYVR5cGU6KDAsdVcuZ2V0SlNPTlR5cGVzKShRLnNjaGVtYVR5cGUpfTtyZXR1cm4oMCxhQi5lYWNoSXRlbSkoSixZLnR5cGUubGVuZ3RoPT09MD8oWCk9PnRCLmNhbGwodGhpcyxYLFkpOihYKT0+WS50eXBlLmZvckVhY2goKFcpPT50Qi5jYWxsKHRoaXMsWCxZLFcpKSksdGhpc31nZXRLZXl3b3JkKCQpe2xldCBRPXRoaXMuUlVMRVMuYWxsWyRdO3JldHVybiB0eXBlb2YgUT09XCJvYmplY3RcIj9RLmRlZmluaXRpb246ISFRfXJlbW92ZUtleXdvcmQoJCl7bGV0e1JVTEVTOlF9PXRoaXM7ZGVsZXRlIFEua2V5d29yZHNbJF0sZGVsZXRlIFEuYWxsWyRdO2ZvcihsZXQgSiBvZiBRLnJ1bGVzKXtsZXQgWT1KLnJ1bGVzLmZpbmRJbmRleCgoWCk9Plgua2V5d29yZD09PSQpO2lmKFk+PTApSi5ydWxlcy5zcGxpY2UoWSwxKX1yZXR1cm4gdGhpc31hZGRGb3JtYXQoJCxRKXtpZih0eXBlb2YgUT09XCJzdHJpbmdcIilRPW5ldyBSZWdFeHAoUSk7cmV0dXJuIHRoaXMuZm9ybWF0c1skXT1RLHRoaXN9ZXJyb3JzVGV4dCgkPXRoaXMuZXJyb3JzLHtzZXBhcmF0b3I6UT1cIiwgXCIsZGF0YVZhcjpKPVwiZGF0YVwifT17fSl7aWYoISR8fCQubGVuZ3RoPT09MClyZXR1cm5cIk5vIGVycm9yc1wiO3JldHVybiAkLm1hcCgoWSk9PmAke0p9JHtZLmluc3RhbmNlUGF0aH0gJHtZLm1lc3NhZ2V9YCkucmVkdWNlKChZLFgpPT5ZK1ErWCl9JGRhdGFNZXRhU2NoZW1hKCQsUSl7bGV0IEo9dGhpcy5SVUxFUy5hbGw7JD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCQpKTtmb3IobGV0IFkgb2YgUSl7bGV0IFg9WS5zcGxpdChcIi9cIikuc2xpY2UoMSksVz0kO2ZvcihsZXQgRyBvZiBYKVc9V1tHXTtmb3IobGV0IEcgaW4gSil7bGV0IFU9SltHXTtpZih0eXBlb2YgVSE9XCJvYmplY3RcIiljb250aW51ZTtsZXR7JGRhdGE6SH09VS5kZWZpbml0aW9uLHE9V1tHXTtpZihIJiZxKVdbR109U0kocSl9fXJldHVybiAkfV9yZW1vdmVBbGxTY2hlbWFzKCQsUSl7Zm9yKGxldCBKIGluICQpe2xldCBZPSRbSl07aWYoIVF8fFEudGVzdChKKSl7aWYodHlwZW9mIFk9PVwic3RyaW5nXCIpZGVsZXRlICRbSl07ZWxzZSBpZihZJiYhWS5tZXRhKXRoaXMuX2NhY2hlLmRlbGV0ZShZLnNjaGVtYSksZGVsZXRlICRbSl19fX1fYWRkU2NoZW1hKCQsUSxKLFk9dGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hLFg9dGhpcy5vcHRzLmFkZFVzZWRTY2hlbWEpe2xldCBXLHtzY2hlbWFJZDpHfT10aGlzLm9wdHM7aWYodHlwZW9mICQ9PVwib2JqZWN0XCIpVz0kW0ddO2Vsc2UgaWYodGhpcy5vcHRzLmp0ZCl0aHJvdyBFcnJvcihcInNjaGVtYSBtdXN0IGJlIG9iamVjdFwiKTtlbHNlIGlmKHR5cGVvZiAkIT1cImJvb2xlYW5cIil0aHJvdyBFcnJvcihcInNjaGVtYSBtdXN0IGJlIG9iamVjdCBvciBib29sZWFuXCIpO2xldCBVPXRoaXMuX2NhY2hlLmdldCgkKTtpZihVIT09dm9pZCAwKXJldHVybiBVO0o9KDAsdUoubm9ybWFsaXplSWQpKFd8fEopO2xldCBIPXVKLmdldFNjaGVtYVJlZnMuY2FsbCh0aGlzLCQsSik7aWYoVT1uZXcgaEouU2NoZW1hRW52KHtzY2hlbWE6JCxzY2hlbWFJZDpHLG1ldGE6USxiYXNlSWQ6Sixsb2NhbFJlZnM6SH0pLHRoaXMuX2NhY2hlLnNldChVLnNjaGVtYSxVKSxYJiYhSi5zdGFydHNXaXRoKFwiI1wiKSl7aWYoSil0aGlzLl9jaGVja1VuaXF1ZShKKTt0aGlzLnJlZnNbSl09VX1pZihZKXRoaXMudmFsaWRhdGVTY2hlbWEoJCwhMCk7cmV0dXJuIFV9X2NoZWNrVW5pcXVlKCQpe2lmKHRoaXMuc2NoZW1hc1skXXx8dGhpcy5yZWZzWyRdKXRocm93IEVycm9yKGBzY2hlbWEgd2l0aCBrZXkgb3IgaWQgXCIkeyR9XCIgYWxyZWFkeSBleGlzdHNgKX1fY29tcGlsZVNjaGVtYUVudigkKXtpZigkLm1ldGEpdGhpcy5fY29tcGlsZU1ldGFTY2hlbWEoJCk7ZWxzZSBoSi5jb21waWxlU2NoZW1hLmNhbGwodGhpcywkKTtpZighJC52YWxpZGF0ZSl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtyZXR1cm4gJC52YWxpZGF0ZX1fY29tcGlsZU1ldGFTY2hlbWEoJCl7bGV0IFE9dGhpcy5vcHRzO3RoaXMub3B0cz10aGlzLl9tZXRhT3B0czt0cnl7aEouY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsJCl9ZmluYWxseXt0aGlzLm9wdHM9UX19fW1XLlZhbGlkYXRpb25FcnJvcj1fci5kZWZhdWx0O21XLk1pc3NpbmdSZWZFcnJvcj1iSS5kZWZhdWx0O1cxLmRlZmF1bHQ9bVc7ZnVuY3Rpb24gUEkoJCxRLEosWT1cImVycm9yXCIpe2ZvcihsZXQgWCBpbiAkKXtsZXQgVz1YO2lmKFcgaW4gUSl0aGlzLmxvZ2dlcltZXShgJHtKfTogb3B0aW9uICR7WH0uICR7JFtXXX1gKX19ZnVuY3Rpb24gRUkoJCl7cmV0dXJuICQ9KDAsdUoubm9ybWFsaXplSWQpKCQpLHRoaXMuc2NoZW1hc1skXXx8dGhpcy5yZWZzWyRdfWZ1bmN0aW9uIGdyKCl7bGV0ICQ9dGhpcy5vcHRzLnNjaGVtYXM7aWYoISQpcmV0dXJuO2lmKEFycmF5LmlzQXJyYXkoJCkpdGhpcy5hZGRTY2hlbWEoJCk7ZWxzZSBmb3IobGV0IFEgaW4gJCl0aGlzLmFkZFNjaGVtYSgkW1FdLFEpfWZ1bmN0aW9uIGhyKCl7Zm9yKGxldCAkIGluIHRoaXMub3B0cy5mb3JtYXRzKXtsZXQgUT10aGlzLm9wdHMuZm9ybWF0c1skXTtpZihRKXRoaXMuYWRkRm9ybWF0KCQsUSl9fWZ1bmN0aW9uIHVyKCQpe2lmKEFycmF5LmlzQXJyYXkoJCkpe3RoaXMuYWRkVm9jYWJ1bGFyeSgkKTtyZXR1cm59dGhpcy5sb2dnZXIud2FybihcImtleXdvcmRzIG9wdGlvbiBhcyBtYXAgaXMgZGVwcmVjYXRlZCwgcGFzcyBhcnJheVwiKTtmb3IobGV0IFEgaW4gJCl7bGV0IEo9JFtRXTtpZighSi5rZXl3b3JkKUoua2V5d29yZD1RO3RoaXMuYWRkS2V5d29yZChKKX19ZnVuY3Rpb24gbXIoKXtsZXQgJD17Li4udGhpcy5vcHRzfTtmb3IobGV0IFEgb2YgQ3IpZGVsZXRlICRbUV07cmV0dXJuICR9dmFyIGxyPXtsb2coKXt9LHdhcm4oKXt9LGVycm9yKCl7fX07ZnVuY3Rpb24gY3IoJCl7aWYoJD09PSExKXJldHVybiBscjtpZigkPT09dm9pZCAwKXJldHVybiBjb25zb2xlO2lmKCQubG9nJiYkLndhcm4mJiQuZXJyb3IpcmV0dXJuICQ7dGhyb3cgRXJyb3IoXCJsb2dnZXIgbXVzdCBpbXBsZW1lbnQgbG9nLCB3YXJuIGFuZCBlcnJvciBtZXRob2RzXCIpfXZhciBwcj0vXlthLXpfJF1bYS16MC05XyQ6LV0qJC9pO2Z1bmN0aW9uIGRyKCQsUSl7bGV0e1JVTEVTOkp9PXRoaXM7aWYoKDAsYUIuZWFjaEl0ZW0pKCQsKFkpPT57aWYoSi5rZXl3b3Jkc1tZXSl0aHJvdyBFcnJvcihgS2V5d29yZCAke1l9IGlzIGFscmVhZHkgZGVmaW5lZGApO2lmKCFwci50ZXN0KFkpKXRocm93IEVycm9yKGBLZXl3b3JkICR7WX0gaGFzIGludmFsaWQgbmFtZWApfSksIVEpcmV0dXJuO2lmKFEuJGRhdGEmJiEoKFwiY29kZVwiaW4gUSl8fChcInZhbGlkYXRlXCJpbiBRKSkpdGhyb3cgRXJyb3IoJyRkYXRhIGtleXdvcmQgbXVzdCBoYXZlIFwiY29kZVwiIG9yIFwidmFsaWRhdGVcIiBmdW5jdGlvbicpfWZ1bmN0aW9uIHRCKCQsUSxKKXt2YXIgWTtsZXQgWD1RPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5wb3N0O2lmKEomJlgpdGhyb3cgRXJyb3IoJ2tleXdvcmQgd2l0aCBcInBvc3RcIiBmbGFnIGNhbm5vdCBoYXZlIFwidHlwZVwiJyk7bGV0e1JVTEVTOld9PXRoaXMsRz1YP1cucG9zdDpXLnJ1bGVzLmZpbmQoKHt0eXBlOkh9KT0+SD09PUopO2lmKCFHKUc9e3R5cGU6SixydWxlczpbXX0sVy5ydWxlcy5wdXNoKEcpO2lmKFcua2V5d29yZHNbJF09ITAsIVEpcmV0dXJuO2xldCBVPXtrZXl3b3JkOiQsZGVmaW5pdGlvbjp7Li4uUSx0eXBlOigwLHVXLmdldEpTT05UeXBlcykoUS50eXBlKSxzY2hlbWFUeXBlOigwLHVXLmdldEpTT05UeXBlcykoUS5zY2hlbWFUeXBlKX19O2lmKFEuYmVmb3JlKWlyLmNhbGwodGhpcyxHLFUsUS5iZWZvcmUpO2Vsc2UgRy5ydWxlcy5wdXNoKFUpO1cuYWxsWyRdPVUsKFk9US5pbXBsZW1lbnRzKT09PW51bGx8fFk9PT12b2lkIDB8fFkuZm9yRWFjaCgoSCk9PnRoaXMuYWRkS2V5d29yZChIKSl9ZnVuY3Rpb24gaXIoJCxRLEope2xldCBZPSQucnVsZXMuZmluZEluZGV4KChYKT0+WC5rZXl3b3JkPT09Sik7aWYoWT49MCkkLnJ1bGVzLnNwbGljZShZLDAsUSk7ZWxzZSAkLnJ1bGVzLnB1c2goUSksdGhpcy5sb2dnZXIud2FybihgcnVsZSAke0p9IGlzIG5vdCBkZWZpbmVkYCl9ZnVuY3Rpb24gbnIoJCl7bGV0e21ldGFTY2hlbWE6UX09JDtpZihRPT09dm9pZCAwKXJldHVybjtpZigkLiRkYXRhJiZ0aGlzLm9wdHMuJGRhdGEpUT1TSShRKTskLnZhbGlkYXRlU2NoZW1hPXRoaXMuY29tcGlsZShRLCEwKX12YXIgcnI9eyRyZWY6XCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiNcIn07ZnVuY3Rpb24gU0koJCl7cmV0dXJue2FueU9mOlskLHJyXX19fSk7dmFyIENJPUkoKHZJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2SSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgYXI9e2tleXdvcmQ6XCJpZFwiLGNvZGUoKXt0aHJvdyBFcnJvcignTk9UIFNVUFBPUlRFRDoga2V5d29yZCBcImlkXCIsIHVzZSBcIiRpZFwiIGZvciBzY2hlbWEgSUQnKX19O3ZJLmRlZmF1bHQ9YXJ9KTt2YXIgaEk9SSgoeUkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHlJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3lJLmNhbGxSZWY9eUkuZ2V0VmFsaWRhdGU9dm9pZCAwO3ZhciBlcj1mSigpLFRJPSQ0KCksRTY9USQoKSxaOT1KMSgpLHhJPWZXKCksbFc9cSQoKSwkbz17a2V5d29yZDpcIiRyZWZcIixzY2hlbWFUeXBlOlwic3RyaW5nXCIsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosaXQ6WX09JCx7YmFzZUlkOlgsc2NoZW1hRW52OlcsdmFsaWRhdGVOYW1lOkcsb3B0czpVLHNlbGY6SH09WSx7cm9vdDpxfT1XO2lmKChKPT09XCIjXCJ8fEo9PT1cIiMvXCIpJiZYPT09cS5iYXNlSWQpcmV0dXJuIEIoKTtsZXQgVj14SS5yZXNvbHZlUmVmLmNhbGwoSCxxLFgsSik7aWYoVj09PXZvaWQgMCl0aHJvdyBuZXcgZXIuZGVmYXVsdChZLm9wdHMudXJpUmVzb2x2ZXIsWCxKKTtpZihWIGluc3RhbmNlb2YgeEkuU2NoZW1hRW52KXJldHVybiB6KFYpO3JldHVybiBOKFYpO2Z1bmN0aW9uIEIoKXtpZihXPT09cSlyZXR1cm4gY1coJCxHLFcsVy4kYXN5bmMpO2xldCB3PVEuc2NvcGVWYWx1ZShcInJvb3RcIix7cmVmOnF9KTtyZXR1cm4gY1coJCxFNi5fYCR7d30udmFsaWRhdGVgLHEscS4kYXN5bmMpfWZ1bmN0aW9uIHoodyl7bGV0IE89ZkkoJCx3KTtjVygkLE8sdyx3LiRhc3luYyl9ZnVuY3Rpb24gTih3KXtsZXQgTz1RLnNjb3BlVmFsdWUoXCJzY2hlbWFcIixVLmNvZGUuc291cmNlPT09ITA/e3JlZjp3LGNvZGU6KDAsRTYuc3RyaW5naWZ5KSh3KX06e3JlZjp3fSksRD1RLm5hbWUoXCJ2YWxpZFwiKSxNPSQuc3Vic2NoZW1hKHtzY2hlbWE6dyxkYXRhVHlwZXM6W10sc2NoZW1hUGF0aDpFNi5uaWwsdG9wU2NoZW1hUmVmOk8sZXJyU2NoZW1hUGF0aDpKfSxEKTskLm1lcmdlRXZhbHVhdGVkKE0pLCQub2soRCl9fX07ZnVuY3Rpb24gZkkoJCxRKXtsZXR7Z2VuOkp9PSQ7cmV0dXJuIFEudmFsaWRhdGU/Si5zY29wZVZhbHVlKFwidmFsaWRhdGVcIix7cmVmOlEudmFsaWRhdGV9KTpFNi5fYCR7Si5zY29wZVZhbHVlKFwid3JhcHBlclwiLHtyZWY6UX0pfS52YWxpZGF0ZWB9eUkuZ2V0VmFsaWRhdGU9Zkk7ZnVuY3Rpb24gY1coJCxRLEosWSl7bGV0e2dlbjpYLGl0Old9PSQse2FsbEVycm9yczpHLHNjaGVtYUVudjpVLG9wdHM6SH09VyxxPUgucGFzc0NvbnRleHQ/WjkuZGVmYXVsdC50aGlzOkU2Lm5pbDtpZihZKVYoKTtlbHNlIEIoKTtmdW5jdGlvbiBWKCl7aWYoIVUuJGFzeW5jKXRocm93IEVycm9yKFwiYXN5bmMgc2NoZW1hIHJlZmVyZW5jZWQgYnkgc3luYyBzY2hlbWFcIik7bGV0IHc9WC5sZXQoXCJ2YWxpZFwiKTtYLnRyeSgoKT0+e2lmKFguY29kZShFNi5fYGF3YWl0ICR7KDAsVEkuY2FsbFZhbGlkYXRlQ29kZSkoJCxRLHEpfWApLE4oUSksIUcpWC5hc3NpZ24odywhMCl9LChPKT0+e2lmKFguaWYoRTYuX2AhKCR7T30gaW5zdGFuY2VvZiAke1cuVmFsaWRhdGlvbkVycm9yfSlgLCgpPT5YLnRocm93KE8pKSx6KE8pLCFHKVguYXNzaWduKHcsITEpfSksJC5vayh3KX1mdW5jdGlvbiBCKCl7JC5yZXN1bHQoKDAsVEkuY2FsbFZhbGlkYXRlQ29kZSkoJCxRLHEpLCgpPT5OKFEpLCgpPT56KFEpKX1mdW5jdGlvbiB6KHcpe2xldCBPPUU2Ll9gJHt3fS5lcnJvcnNgO1guYXNzaWduKFo5LmRlZmF1bHQudkVycm9ycyxFNi5fYCR7WjkuZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbCA/ICR7T30gOiAke1o5LmRlZmF1bHQudkVycm9yc30uY29uY2F0KCR7T30pYCksWC5hc3NpZ24oWjkuZGVmYXVsdC5lcnJvcnMsRTYuX2Ake1o5LmRlZmF1bHQudkVycm9yc30ubGVuZ3RoYCl9ZnVuY3Rpb24gTih3KXt2YXIgTztpZighVy5vcHRzLnVuZXZhbHVhdGVkKXJldHVybjtsZXQgRD0oTz1KPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si52YWxpZGF0ZSk9PT1udWxsfHxPPT09dm9pZCAwP3ZvaWQgMDpPLmV2YWx1YXRlZDtpZihXLnByb3BzIT09ITApaWYoRCYmIUQuZHluYW1pY1Byb3BzKXtpZihELnByb3BzIT09dm9pZCAwKVcucHJvcHM9bFcubWVyZ2VFdmFsdWF0ZWQucHJvcHMoWCxELnByb3BzLFcucHJvcHMpfWVsc2V7bGV0IE09WC52YXIoXCJwcm9wc1wiLEU2Ll9gJHt3fS5ldmFsdWF0ZWQucHJvcHNgKTtXLnByb3BzPWxXLm1lcmdlRXZhbHVhdGVkLnByb3BzKFgsTSxXLnByb3BzLEU2Lk5hbWUpfWlmKFcuaXRlbXMhPT0hMClpZihEJiYhRC5keW5hbWljSXRlbXMpe2lmKEQuaXRlbXMhPT12b2lkIDApVy5pdGVtcz1sVy5tZXJnZUV2YWx1YXRlZC5pdGVtcyhYLEQuaXRlbXMsVy5pdGVtcyl9ZWxzZXtsZXQgTT1YLnZhcihcIml0ZW1zXCIsRTYuX2Ake3d9LmV2YWx1YXRlZC5pdGVtc2ApO1cuaXRlbXM9bFcubWVyZ2VFdmFsdWF0ZWQuaXRlbXMoWCxNLFcuaXRlbXMsRTYuTmFtZSl9fX15SS5jYWxsUmVmPWNXO3lJLmRlZmF1bHQ9JG99KTt2YXIgbUk9SSgodUkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHVJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBYbz1DSSgpLFlvPWhJKCksV289W1wiJHNjaGVtYVwiLFwiJGlkXCIsXCIkZGVmc1wiLFwiJHZvY2FidWxhcnlcIix7a2V5d29yZDpcIiRjb21tZW50XCJ9LFwiZGVmaW5pdGlvbnNcIixYby5kZWZhdWx0LFlvLmRlZmF1bHRdO3VJLmRlZmF1bHQ9V299KTt2YXIgY0k9SSgobEkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGxJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwVz1RJCgpLG0xPXBXLm9wZXJhdG9ycyxkVz17bWF4aW11bTp7b2tTdHI6XCI8PVwiLG9rOm0xLkxURSxmYWlsOm0xLkdUfSxtaW5pbXVtOntva1N0cjpcIj49XCIsb2s6bTEuR1RFLGZhaWw6bTEuTFR9LGV4Y2x1c2l2ZU1heGltdW06e29rU3RyOlwiPFwiLG9rOm0xLkxULGZhaWw6bTEuR1RFfSxleGNsdXNpdmVNaW5pbXVtOntva1N0cjpcIj5cIixvazptMS5HVCxmYWlsOm0xLkxURX19LFVvPXttZXNzYWdlOih7a2V5d29yZDokLHNjaGVtYUNvZGU6UX0pPT5wVy5zdHJgbXVzdCBiZSAke2RXWyRdLm9rU3RyfSAke1F9YCxwYXJhbXM6KHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSk9PnBXLl9ge2NvbXBhcmlzb246ICR7ZFdbJF0ub2tTdHJ9LCBsaW1pdDogJHtRfX1gfSxIbz17a2V5d29yZDpPYmplY3Qua2V5cyhkVyksdHlwZTpcIm51bWJlclwiLHNjaGVtYVR5cGU6XCJudW1iZXJcIiwkZGF0YTohMCxlcnJvcjpVbyxjb2RlKCQpe2xldHtrZXl3b3JkOlEsZGF0YTpKLHNjaGVtYUNvZGU6WX09JDskLmZhaWwkZGF0YShwVy5fYCR7Sn0gJHtkV1tRXS5mYWlsfSAke1l9IHx8IGlzTmFOKCR7Sn0pYCl9fTtsSS5kZWZhdWx0PUhvfSk7dmFyIGRJPUkoKHBJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShwSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbUo9USQoKSxxbz17bWVzc2FnZTooe3NjaGVtYUNvZGU6JH0pPT5tSi5zdHJgbXVzdCBiZSBtdWx0aXBsZSBvZiAkeyR9YCxwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+bUouX2B7bXVsdGlwbGVPZjogJHskfX1gfSxWbz17a2V5d29yZDpcIm11bHRpcGxlT2ZcIix0eXBlOlwibnVtYmVyXCIsc2NoZW1hVHlwZTpcIm51bWJlclwiLCRkYXRhOiEwLGVycm9yOnFvLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SixzY2hlbWFDb2RlOlksaXQ6WH09JCxXPVgub3B0cy5tdWx0aXBsZU9mUHJlY2lzaW9uLEc9US5sZXQoXCJyZXNcIiksVT1XP21KLl9gTWF0aC5hYnMoTWF0aC5yb3VuZCgke0d9KSAtICR7R30pID4gMWUtJHtXfWA6bUouX2Ake0d9ICE9PSBwYXJzZUludCgke0d9KWA7JC5mYWlsJGRhdGEobUouX2AoJHtZfSA9PT0gMCB8fCAoJHtHfSA9ICR7Sn0vJHtZfSwgJHtVfSkpYCl9fTtwSS5kZWZhdWx0PVZvfSk7dmFyIHJJPUkoKG5JKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShuSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBpSSgkKXtsZXQgUT0kLmxlbmd0aCxKPTAsWT0wLFg7d2hpbGUoWTxRKWlmKEorKyxYPSQuY2hhckNvZGVBdChZKyspLFg+PTU1Mjk2JiZYPD01NjMxOSYmWTxRKXtpZihYPSQuY2hhckNvZGVBdChZKSwoWCY2NDUxMik9PT01NjMyMClZKyt9cmV0dXJuIEp9bkkuZGVmYXVsdD1pSTtpSS5jb2RlPSdyZXF1aXJlKFwiYWp2L2Rpc3QvcnVudGltZS91Y3MybGVuZ3RoXCIpLmRlZmF1bHQnfSk7dmFyIHRJPUkoKG9JKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShvSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZzA9USQoKSxObz1xJCgpLHdvPXJJKCksT289e21lc3NhZ2Uoe2tleXdvcmQ6JCxzY2hlbWFDb2RlOlF9KXtsZXQgSj0kPT09XCJtYXhMZW5ndGhcIj9cIm1vcmVcIjpcImZld2VyXCI7cmV0dXJuIGcwLnN0cmBtdXN0IE5PVCBoYXZlICR7Sn0gdGhhbiAke1F9IGNoYXJhY3RlcnNgfSxwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+ZzAuX2B7bGltaXQ6ICR7JH19YH0sRG89e2tleXdvcmQ6W1wibWF4TGVuZ3RoXCIsXCJtaW5MZW5ndGhcIl0sdHlwZTpcInN0cmluZ1wiLHNjaGVtYVR5cGU6XCJudW1iZXJcIiwkZGF0YTohMCxlcnJvcjpPbyxjb2RlKCQpe2xldHtrZXl3b3JkOlEsZGF0YTpKLHNjaGVtYUNvZGU6WSxpdDpYfT0kLFc9UT09PVwibWF4TGVuZ3RoXCI/ZzAub3BlcmF0b3JzLkdUOmcwLm9wZXJhdG9ycy5MVCxHPVgub3B0cy51bmljb2RlPT09ITE/ZzAuX2Ake0p9Lmxlbmd0aGA6ZzAuX2AkeygwLE5vLnVzZUZ1bmMpKCQuZ2VuLHdvLmRlZmF1bHQpfSgke0p9KWA7JC5mYWlsJGRhdGEoZzAuX2Ake0d9ICR7V30gJHtZfWApfX07b0kuZGVmYXVsdD1Eb30pO3ZhciBzST1JKChhSSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYUksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIFpvPSQ0KCksTW89cSQoKSxNOT1RJCgpLExvPXttZXNzYWdlOih7c2NoZW1hQ29kZTokfSk9Pk05LnN0cmBtdXN0IG1hdGNoIHBhdHRlcm4gXCIkeyR9XCJgLHBhcmFtczooe3NjaGVtYUNvZGU6JH0pPT5NOS5fYHtwYXR0ZXJuOiAkeyR9fWB9LGpvPXtrZXl3b3JkOlwicGF0dGVyblwiLHR5cGU6XCJzdHJpbmdcIixzY2hlbWFUeXBlOlwic3RyaW5nXCIsJGRhdGE6ITAsZXJyb3I6TG8sY29kZSgkKXtsZXR7Z2VuOlEsZGF0YTpKLCRkYXRhOlksc2NoZW1hOlgsc2NoZW1hQ29kZTpXLGl0Okd9PSQsVT1HLm9wdHMudW5pY29kZVJlZ0V4cD9cInVcIjpcIlwiO2lmKFkpe2xldHtyZWdFeHA6SH09Ry5vcHRzLmNvZGUscT1ILmNvZGU9PT1cIm5ldyBSZWdFeHBcIj9NOS5fYG5ldyBSZWdFeHBgOigwLE1vLnVzZUZ1bmMpKFEsSCksVj1RLmxldChcInZhbGlkXCIpO1EudHJ5KCgpPT5RLmFzc2lnbihWLE05Ll9gJHtxfSgke1d9LCAke1V9KS50ZXN0KCR7Sn0pYCksKCk9PlEuYXNzaWduKFYsITEpKSwkLmZhaWwkZGF0YShNOS5fYCEke1Z9YCl9ZWxzZXtsZXQgSD0oMCxaby51c2VQYXR0ZXJuKSgkLFgpOyQuZmFpbCRkYXRhKE05Ll9gISR7SH0udGVzdCgke0p9KWApfX19O2FJLmRlZmF1bHQ9am99KTt2YXIgJFI9SSgoZUkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGVJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBsSj1RJCgpLElvPXttZXNzYWdlKHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSl7bGV0IEo9JD09PVwibWF4UHJvcGVydGllc1wiP1wibW9yZVwiOlwiZmV3ZXJcIjtyZXR1cm4gbEouc3RyYG11c3QgTk9UIGhhdmUgJHtKfSB0aGFuICR7UX0gcHJvcGVydGllc2B9LHBhcmFtczooe3NjaGVtYUNvZGU6JH0pPT5sSi5fYHtsaW1pdDogJHskfX1gfSxSbz17a2V5d29yZDpbXCJtYXhQcm9wZXJ0aWVzXCIsXCJtaW5Qcm9wZXJ0aWVzXCJdLHR5cGU6XCJvYmplY3RcIixzY2hlbWFUeXBlOlwibnVtYmVyXCIsJGRhdGE6ITAsZXJyb3I6SW8sY29kZSgkKXtsZXR7a2V5d29yZDpRLGRhdGE6SixzY2hlbWFDb2RlOll9PSQsWD1RPT09XCJtYXhQcm9wZXJ0aWVzXCI/bEoub3BlcmF0b3JzLkdUOmxKLm9wZXJhdG9ycy5MVDskLmZhaWwkZGF0YShsSi5fYE9iamVjdC5rZXlzKCR7Sn0pLmxlbmd0aCAke1h9ICR7WX1gKX19O2VJLmRlZmF1bHQ9Um99KTt2YXIgSlI9SSgoUVIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFFSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBjSj0kNCgpLHBKPVEkKCksRW89cSQoKSxibz17bWVzc2FnZTooe3BhcmFtczp7bWlzc2luZ1Byb3BlcnR5OiR9fSk9PnBKLnN0cmBtdXN0IGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgJyR7JH0nYCxwYXJhbXM6KHtwYXJhbXM6e21pc3NpbmdQcm9wZXJ0eTokfX0pPT5wSi5fYHttaXNzaW5nUHJvcGVydHk6ICR7JH19YH0sX289e2tleXdvcmQ6XCJyZXF1aXJlZFwiLHR5cGU6XCJvYmplY3RcIixzY2hlbWFUeXBlOlwiYXJyYXlcIiwkZGF0YTohMCxlcnJvcjpibyxjb2RlKCQpe2xldHtnZW46USxzY2hlbWE6SixzY2hlbWFDb2RlOlksZGF0YTpYLCRkYXRhOlcsaXQ6R309JCx7b3B0czpVfT1HO2lmKCFXJiZKLmxlbmd0aD09PTApcmV0dXJuO2xldCBIPUoubGVuZ3RoPj1VLmxvb3BSZXF1aXJlZDtpZihHLmFsbEVycm9ycylxKCk7ZWxzZSBWKCk7aWYoVS5zdHJpY3RSZXF1aXJlZCl7bGV0IE49JC5wYXJlbnRTY2hlbWEucHJvcGVydGllcyx7ZGVmaW5lZFByb3BlcnRpZXM6d309JC5pdDtmb3IobGV0IE8gb2YgSilpZigoTj09PW51bGx8fE49PT12b2lkIDA/dm9pZCAwOk5bT10pPT09dm9pZCAwJiYhdy5oYXMoTykpe2xldCBEPUcuc2NoZW1hRW52LmJhc2VJZCtHLmVyclNjaGVtYVBhdGgsTT1gcmVxdWlyZWQgcHJvcGVydHkgXCIke099XCIgaXMgbm90IGRlZmluZWQgYXQgXCIke0R9XCIgKHN0cmljdFJlcXVpcmVkKWA7KDAsRW8uY2hlY2tTdHJpY3RNb2RlKShHLE0sRy5vcHRzLnN0cmljdFJlcXVpcmVkKX19ZnVuY3Rpb24gcSgpe2lmKEh8fFcpJC5ibG9jayRkYXRhKHBKLm5pbCxCKTtlbHNlIGZvcihsZXQgTiBvZiBKKSgwLGNKLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3ApKCQsTil9ZnVuY3Rpb24gVigpe2xldCBOPVEubGV0KFwibWlzc2luZ1wiKTtpZihIfHxXKXtsZXQgdz1RLmxldChcInZhbGlkXCIsITApOyQuYmxvY2skZGF0YSh3LCgpPT56KE4sdykpLCQub2sodyl9ZWxzZSBRLmlmKCgwLGNKLmNoZWNrTWlzc2luZ1Byb3ApKCQsSixOKSksKDAsY0oucmVwb3J0TWlzc2luZ1Byb3ApKCQsTiksUS5lbHNlKCl9ZnVuY3Rpb24gQigpe1EuZm9yT2YoXCJwcm9wXCIsWSwoTik9PnskLnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5Ok59KSxRLmlmKCgwLGNKLm5vUHJvcGVydHlJbkRhdGEpKFEsWCxOLFUub3duUHJvcGVydGllcyksKCk9PiQuZXJyb3IoKSl9KX1mdW5jdGlvbiB6KE4sdyl7JC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTpOfSksUS5mb3JPZihOLFksKCk9PntRLmFzc2lnbih3LCgwLGNKLnByb3BlcnR5SW5EYXRhKShRLFgsTixVLm93blByb3BlcnRpZXMpKSxRLmlmKCgwLHBKLm5vdCkodyksKCk9PnskLmVycm9yKCksUS5icmVhaygpfSl9LHBKLm5pbCl9fX07UVIuZGVmYXVsdD1fb30pO3ZhciBZUj1JKChYUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoWFIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGRKPVEkKCksa289e21lc3NhZ2Uoe2tleXdvcmQ6JCxzY2hlbWFDb2RlOlF9KXtsZXQgSj0kPT09XCJtYXhJdGVtc1wiP1wibW9yZVwiOlwiZmV3ZXJcIjtyZXR1cm4gZEouc3RyYG11c3QgTk9UIGhhdmUgJHtKfSB0aGFuICR7UX0gaXRlbXNgfSxwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+ZEouX2B7bGltaXQ6ICR7JH19YH0sdm89e2tleXdvcmQ6W1wibWF4SXRlbXNcIixcIm1pbkl0ZW1zXCJdLHR5cGU6XCJhcnJheVwiLHNjaGVtYVR5cGU6XCJudW1iZXJcIiwkZGF0YTohMCxlcnJvcjprbyxjb2RlKCQpe2xldHtrZXl3b3JkOlEsZGF0YTpKLHNjaGVtYUNvZGU6WX09JCxYPVE9PT1cIm1heEl0ZW1zXCI/ZEoub3BlcmF0b3JzLkdUOmRKLm9wZXJhdG9ycy5MVDskLmZhaWwkZGF0YShkSi5fYCR7Sn0ubGVuZ3RoICR7WH0gJHtZfWApfX07WFIuZGVmYXVsdD12b30pO3ZhciBpVz1JKChHUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoR1IsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIFdSPXlCKCk7V1IuY29kZT0ncmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvZXF1YWxcIikuZGVmYXVsdCc7R1IuZGVmYXVsdD1XUn0pO3ZhciBIUj1JKChVUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoVVIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHNCPWtKKCksWTY9USQoKSx4bz1xJCgpLGZvPWlXKCkseW89e21lc3NhZ2U6KHtwYXJhbXM6e2k6JCxqOlF9fSk9Plk2LnN0cmBtdXN0IE5PVCBoYXZlIGR1cGxpY2F0ZSBpdGVtcyAoaXRlbXMgIyMgJHtRfSBhbmQgJHskfSBhcmUgaWRlbnRpY2FsKWAscGFyYW1zOih7cGFyYW1zOntpOiQsajpRfX0pPT5ZNi5fYHtpOiAkeyR9LCBqOiAke1F9fWB9LGdvPXtrZXl3b3JkOlwidW5pcXVlSXRlbXNcIix0eXBlOlwiYXJyYXlcIixzY2hlbWFUeXBlOlwiYm9vbGVhblwiLCRkYXRhOiEwLGVycm9yOnlvLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SiwkZGF0YTpZLHNjaGVtYTpYLHBhcmVudFNjaGVtYTpXLHNjaGVtYUNvZGU6RyxpdDpVfT0kO2lmKCFZJiYhWClyZXR1cm47bGV0IEg9US5sZXQoXCJ2YWxpZFwiKSxxPVcuaXRlbXM/KDAsc0IuZ2V0U2NoZW1hVHlwZXMpKFcuaXRlbXMpOltdOyQuYmxvY2skZGF0YShILFYsWTYuX2Ake0d9ID09PSBmYWxzZWApLCQub2soSCk7ZnVuY3Rpb24gVigpe2xldCB3PVEubGV0KFwiaVwiLFk2Ll9gJHtKfS5sZW5ndGhgKSxPPVEubGV0KFwialwiKTskLnNldFBhcmFtcyh7aTp3LGo6T30pLFEuYXNzaWduKEgsITApLFEuaWYoWTYuX2Ake3d9ID4gMWAsKCk9PihCKCk/ejpOKSh3LE8pKX1mdW5jdGlvbiBCKCl7cmV0dXJuIHEubGVuZ3RoPjAmJiFxLnNvbWUoKHcpPT53PT09XCJvYmplY3RcInx8dz09PVwiYXJyYXlcIil9ZnVuY3Rpb24geih3LE8pe2xldCBEPVEubmFtZShcIml0ZW1cIiksTT0oMCxzQi5jaGVja0RhdGFUeXBlcykocSxELFUub3B0cy5zdHJpY3ROdW1iZXJzLHNCLkRhdGFUeXBlLldyb25nKSxqPVEuY29uc3QoXCJpbmRpY2VzXCIsWTYuX2B7fWApO1EuZm9yKFk2Ll9gOyR7d30tLTtgLCgpPT57aWYoUS5sZXQoRCxZNi5fYCR7Sn1bJHt3fV1gKSxRLmlmKE0sWTYuX2Bjb250aW51ZWApLHEubGVuZ3RoPjEpUS5pZihZNi5fYHR5cGVvZiAke0R9ID09IFwic3RyaW5nXCJgLFk2Ll9gJHtEfSArPSBcIl9cImApO1EuaWYoWTYuX2B0eXBlb2YgJHtqfVske0R9XSA9PSBcIm51bWJlclwiYCwoKT0+e1EuYXNzaWduKE8sWTYuX2Ake2p9WyR7RH1dYCksJC5lcnJvcigpLFEuYXNzaWduKEgsITEpLmJyZWFrKCl9KS5jb2RlKFk2Ll9gJHtqfVske0R9XSA9ICR7d31gKX0pfWZ1bmN0aW9uIE4odyxPKXtsZXQgRD0oMCx4by51c2VGdW5jKShRLGZvLmRlZmF1bHQpLE09US5uYW1lKFwib3V0ZXJcIik7US5sYWJlbChNKS5mb3IoWTYuX2A7JHt3fS0tO2AsKCk9PlEuZm9yKFk2Ll9gJHtPfSA9ICR7d307ICR7T30tLTtgLCgpPT5RLmlmKFk2Ll9gJHtEfSgke0p9WyR7d31dLCAke0p9WyR7T31dKWAsKCk9PnskLmVycm9yKCksUS5hc3NpZ24oSCwhMSkuYnJlYWsoTSl9KSkpfX19O1VSLmRlZmF1bHQ9Z299KTt2YXIgcVI9SSgoS1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEtSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBlQj1RJCgpLHVvPXEkKCksbW89aVcoKSxsbz17bWVzc2FnZTpcIm11c3QgYmUgZXF1YWwgdG8gY29uc3RhbnRcIixwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+ZUIuX2B7YWxsb3dlZFZhbHVlOiAkeyR9fWB9LGNvPXtrZXl3b3JkOlwiY29uc3RcIiwkZGF0YTohMCxlcnJvcjpsbyxjb2RlKCQpe2xldHtnZW46USxkYXRhOkosJGRhdGE6WSxzY2hlbWFDb2RlOlgsc2NoZW1hOld9PSQ7aWYoWXx8VyYmdHlwZW9mIFc9PVwib2JqZWN0XCIpJC5mYWlsJGRhdGEoZUIuX2AhJHsoMCx1by51c2VGdW5jKShRLG1vLmRlZmF1bHQpfSgke0p9LCAke1h9KWApO2Vsc2UgJC5mYWlsKGVCLl9gJHtXfSAhPT0gJHtKfWApfX07S1IuZGVmYXVsdD1jb30pO3ZhciBCUj1JKChWUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoVlIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGlKPVEkKCksaW89cSQoKSxubz1pVygpLHJvPXttZXNzYWdlOlwibXVzdCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzXCIscGFyYW1zOih7c2NoZW1hQ29kZTokfSk9PmlKLl9ge2FsbG93ZWRWYWx1ZXM6ICR7JH19YH0sb289e2tleXdvcmQ6XCJlbnVtXCIsc2NoZW1hVHlwZTpcImFycmF5XCIsJGRhdGE6ITAsZXJyb3I6cm8sY29kZSgkKXtsZXR7Z2VuOlEsZGF0YTpKLCRkYXRhOlksc2NoZW1hOlgsc2NoZW1hQ29kZTpXLGl0Okd9PSQ7aWYoIVkmJlgubGVuZ3RoPT09MCl0aHJvdyBFcnJvcihcImVudW0gbXVzdCBoYXZlIG5vbi1lbXB0eSBhcnJheVwiKTtsZXQgVT1YLmxlbmd0aD49Ry5vcHRzLmxvb3BFbnVtLEgscT0oKT0+SCE9PW51bGwmJkghPT12b2lkIDA/SDpIPSgwLGlvLnVzZUZ1bmMpKFEsbm8uZGVmYXVsdCksVjtpZihVfHxZKVY9US5sZXQoXCJ2YWxpZFwiKSwkLmJsb2NrJGRhdGEoVixCKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KFgpKXRocm93IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpO2xldCBOPVEuY29uc3QoXCJ2U2NoZW1hXCIsVyk7Vj0oMCxpSi5vcikoLi4uWC5tYXAoKHcsTyk9PnooTixPKSkpfSQucGFzcyhWKTtmdW5jdGlvbiBCKCl7US5hc3NpZ24oViwhMSksUS5mb3JPZihcInZcIixXLChOKT0+US5pZihpSi5fYCR7cSgpfSgke0p9LCAke059KWAsKCk9PlEuYXNzaWduKFYsITApLmJyZWFrKCkpKX1mdW5jdGlvbiB6KE4sdyl7bGV0IE89WFt3XTtyZXR1cm4gdHlwZW9mIE89PT1cIm9iamVjdFwiJiZPIT09bnVsbD9pSi5fYCR7cSgpfSgke0p9LCAke059WyR7d31dKWA6aUouX2Ake0p9ID09PSAke099YH19fTtWUi5kZWZhdWx0PW9vfSk7dmFyIE5SPUkoKHpSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6UixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgYW89Y0koKSxzbz1kSSgpLGVvPXRJKCksJHQ9c0koKSxRdD0kUigpLEp0PUpSKCksWHQ9WVIoKSxZdD1IUigpLFd0PXFSKCksR3Q9QlIoKSxVdD1bYW8uZGVmYXVsdCxzby5kZWZhdWx0LGVvLmRlZmF1bHQsJHQuZGVmYXVsdCxRdC5kZWZhdWx0LEp0LmRlZmF1bHQsWHQuZGVmYXVsdCxZdC5kZWZhdWx0LHtrZXl3b3JkOlwidHlwZVwiLHNjaGVtYVR5cGU6W1wic3RyaW5nXCIsXCJhcnJheVwiXX0se2tleXdvcmQ6XCJudWxsYWJsZVwiLHNjaGVtYVR5cGU6XCJib29sZWFuXCJ9LFd0LmRlZmF1bHQsR3QuZGVmYXVsdF07elIuZGVmYXVsdD1VdH0pO3ZhciBRej1JKChPUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoT1IsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7T1IudmFsaWRhdGVBZGRpdGlvbmFsSXRlbXM9dm9pZCAwO3ZhciBoMD1RJCgpLCR6PXEkKCksS3Q9e21lc3NhZ2U6KHtwYXJhbXM6e2xlbjokfX0pPT5oMC5zdHJgbXVzdCBOT1QgaGF2ZSBtb3JlIHRoYW4gJHskfSBpdGVtc2AscGFyYW1zOih7cGFyYW1zOntsZW46JH19KT0+aDAuX2B7bGltaXQ6ICR7JH19YH0scXQ9e2tleXdvcmQ6XCJhZGRpdGlvbmFsSXRlbXNcIix0eXBlOlwiYXJyYXlcIixzY2hlbWFUeXBlOltcImJvb2xlYW5cIixcIm9iamVjdFwiXSxiZWZvcmU6XCJ1bmlxdWVJdGVtc1wiLGVycm9yOkt0LGNvZGUoJCl7bGV0e3BhcmVudFNjaGVtYTpRLGl0Okp9PSQse2l0ZW1zOll9PVE7aWYoIUFycmF5LmlzQXJyYXkoWSkpeygwLCR6LmNoZWNrU3RyaWN0TW9kZSkoSiwnXCJhZGRpdGlvbmFsSXRlbXNcIiBpcyBpZ25vcmVkIHdoZW4gXCJpdGVtc1wiIGlzIG5vdCBhbiBhcnJheSBvZiBzY2hlbWFzJyk7cmV0dXJufXdSKCQsWSl9fTtmdW5jdGlvbiB3UigkLFEpe2xldHtnZW46SixzY2hlbWE6WSxkYXRhOlgsa2V5d29yZDpXLGl0Okd9PSQ7Ry5pdGVtcz0hMDtsZXQgVT1KLmNvbnN0KFwibGVuXCIsaDAuX2Ake1h9Lmxlbmd0aGApO2lmKFk9PT0hMSkkLnNldFBhcmFtcyh7bGVuOlEubGVuZ3RofSksJC5wYXNzKGgwLl9gJHtVfSA8PSAke1EubGVuZ3RofWApO2Vsc2UgaWYodHlwZW9mIFk9PVwib2JqZWN0XCImJiEoMCwkei5hbHdheXNWYWxpZFNjaGVtYSkoRyxZKSl7bGV0IHE9Si52YXIoXCJ2YWxpZFwiLGgwLl9gJHtVfSA8PSAke1EubGVuZ3RofWApO0ouaWYoKDAsaDAubm90KShxKSwoKT0+SChxKSksJC5vayhxKX1mdW5jdGlvbiBIKHEpe0ouZm9yUmFuZ2UoXCJpXCIsUS5sZW5ndGgsVSwoVik9PntpZigkLnN1YnNjaGVtYSh7a2V5d29yZDpXLGRhdGFQcm9wOlYsZGF0YVByb3BUeXBlOiR6LlR5cGUuTnVtfSxxKSwhRy5hbGxFcnJvcnMpSi5pZigoMCxoMC5ub3QpKHEpLCgpPT5KLmJyZWFrKCkpfSl9fU9SLnZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zPXdSO09SLmRlZmF1bHQ9cXR9KTt2YXIgSno9SSgoTVIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KE1SLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO01SLnZhbGlkYXRlVHVwbGU9dm9pZCAwO3ZhciBGUj1RJCgpLG5XPXEkKCksQnQ9JDQoKSx6dD17a2V5d29yZDpcIml0ZW1zXCIsdHlwZTpcImFycmF5XCIsc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImFycmF5XCIsXCJib29sZWFuXCJdLGJlZm9yZTpcInVuaXF1ZUl0ZW1zXCIsY29kZSgkKXtsZXR7c2NoZW1hOlEsaXQ6Sn09JDtpZihBcnJheS5pc0FycmF5KFEpKXJldHVybiBaUigkLFwiYWRkaXRpb25hbEl0ZW1zXCIsUSk7aWYoSi5pdGVtcz0hMCwoMCxuVy5hbHdheXNWYWxpZFNjaGVtYSkoSixRKSlyZXR1cm47JC5vaygoMCxCdC52YWxpZGF0ZUFycmF5KSgkKSl9fTtmdW5jdGlvbiBaUigkLFEsSj0kLnNjaGVtYSl7bGV0e2dlbjpZLHBhcmVudFNjaGVtYTpYLGRhdGE6VyxrZXl3b3JkOkcsaXQ6VX09JDtpZihWKFgpLFUub3B0cy51bmV2YWx1YXRlZCYmSi5sZW5ndGgmJlUuaXRlbXMhPT0hMClVLml0ZW1zPW5XLm1lcmdlRXZhbHVhdGVkLml0ZW1zKFksSi5sZW5ndGgsVS5pdGVtcyk7bGV0IEg9WS5uYW1lKFwidmFsaWRcIikscT1ZLmNvbnN0KFwibGVuXCIsRlIuX2Ake1d9Lmxlbmd0aGApO0ouZm9yRWFjaCgoQix6KT0+e2lmKCgwLG5XLmFsd2F5c1ZhbGlkU2NoZW1hKShVLEIpKXJldHVybjtZLmlmKEZSLl9gJHtxfSA+ICR7en1gLCgpPT4kLnN1YnNjaGVtYSh7a2V5d29yZDpHLHNjaGVtYVByb3A6eixkYXRhUHJvcDp6fSxIKSksJC5vayhIKX0pO2Z1bmN0aW9uIFYoQil7bGV0e29wdHM6eixlcnJTY2hlbWFQYXRoOk59PVUsdz1KLmxlbmd0aCxPPXc9PT1CLm1pbkl0ZW1zJiYodz09PUIubWF4SXRlbXN8fEJbUV09PT0hMSk7aWYoei5zdHJpY3RUdXBsZXMmJiFPKXtsZXQgRD1gXCIke0d9XCIgaXMgJHt3fS10dXBsZSwgYnV0IG1pbkl0ZW1zIG9yIG1heEl0ZW1zLyR7UX0gYXJlIG5vdCBzcGVjaWZpZWQgb3IgZGlmZmVyZW50IGF0IHBhdGggXCIke059XCJgOygwLG5XLmNoZWNrU3RyaWN0TW9kZSkoVSxELHouc3RyaWN0VHVwbGVzKX19fU1SLnZhbGlkYXRlVHVwbGU9WlI7TVIuZGVmYXVsdD16dH0pO3ZhciBBUj1JKChqUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoalIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHd0PUp6KCksT3Q9e2tleXdvcmQ6XCJwcmVmaXhJdGVtc1wiLHR5cGU6XCJhcnJheVwiLHNjaGVtYVR5cGU6W1wiYXJyYXlcIl0sYmVmb3JlOlwidW5pcXVlSXRlbXNcIixjb2RlOigkKT0+KDAsd3QudmFsaWRhdGVUdXBsZSkoJCxcIml0ZW1zXCIpfTtqUi5kZWZhdWx0PU90fSk7dmFyIFBSPUkoKFJSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShSUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgSVI9USQoKSxGdD1xJCgpLFp0PSQ0KCksTXQ9UXooKSxMdD17bWVzc2FnZTooe3BhcmFtczp7bGVuOiR9fSk9PklSLnN0cmBtdXN0IE5PVCBoYXZlIG1vcmUgdGhhbiAkeyR9IGl0ZW1zYCxwYXJhbXM6KHtwYXJhbXM6e2xlbjokfX0pPT5JUi5fYHtsaW1pdDogJHskfX1gfSxqdD17a2V5d29yZDpcIml0ZW1zXCIsdHlwZTpcImFycmF5XCIsc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0sYmVmb3JlOlwidW5pcXVlSXRlbXNcIixlcnJvcjpMdCxjb2RlKCQpe2xldHtzY2hlbWE6USxwYXJlbnRTY2hlbWE6SixpdDpZfT0kLHtwcmVmaXhJdGVtczpYfT1KO2lmKFkuaXRlbXM9ITAsKDAsRnQuYWx3YXlzVmFsaWRTY2hlbWEpKFksUSkpcmV0dXJuO2lmKFgpKDAsTXQudmFsaWRhdGVBZGRpdGlvbmFsSXRlbXMpKCQsWCk7ZWxzZSAkLm9rKCgwLFp0LnZhbGlkYXRlQXJyYXkpKCQpKX19O1JSLmRlZmF1bHQ9anR9KTt2YXIgYlI9SSgoRVIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEVSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBRND1RJCgpLHJXPXEkKCksSXQ9e21lc3NhZ2U6KHtwYXJhbXM6e21pbjokLG1heDpRfX0pPT5RPT09dm9pZCAwP1E0LnN0cmBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJHskfSB2YWxpZCBpdGVtKHMpYDpRNC5zdHJgbXVzdCBjb250YWluIGF0IGxlYXN0ICR7JH0gYW5kIG5vIG1vcmUgdGhhbiAke1F9IHZhbGlkIGl0ZW0ocylgLHBhcmFtczooe3BhcmFtczp7bWluOiQsbWF4OlF9fSk9PlE9PT12b2lkIDA/UTQuX2B7bWluQ29udGFpbnM6ICR7JH19YDpRNC5fYHttaW5Db250YWluczogJHskfSwgbWF4Q29udGFpbnM6ICR7UX19YH0sUnQ9e2tleXdvcmQ6XCJjb250YWluc1wiLHR5cGU6XCJhcnJheVwiLHNjaGVtYVR5cGU6W1wib2JqZWN0XCIsXCJib29sZWFuXCJdLGJlZm9yZTpcInVuaXF1ZUl0ZW1zXCIsdHJhY2tFcnJvcnM6ITAsZXJyb3I6SXQsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkoscGFyZW50U2NoZW1hOlksZGF0YTpYLGl0Old9PSQsRyxVLHttaW5Db250YWluczpILG1heENvbnRhaW5zOnF9PVk7aWYoVy5vcHRzLm5leHQpRz1IPT09dm9pZCAwPzE6SCxVPXE7ZWxzZSBHPTE7bGV0IFY9US5jb25zdChcImxlblwiLFE0Ll9gJHtYfS5sZW5ndGhgKTtpZigkLnNldFBhcmFtcyh7bWluOkcsbWF4OlV9KSxVPT09dm9pZCAwJiZHPT09MCl7KDAsclcuY2hlY2tTdHJpY3RNb2RlKShXLCdcIm1pbkNvbnRhaW5zXCIgPT0gMCB3aXRob3V0IFwibWF4Q29udGFpbnNcIjogXCJjb250YWluc1wiIGtleXdvcmQgaWdub3JlZCcpO3JldHVybn1pZihVIT09dm9pZCAwJiZHPlUpeygwLHJXLmNoZWNrU3RyaWN0TW9kZSkoVywnXCJtaW5Db250YWluc1wiID4gXCJtYXhDb250YWluc1wiIGlzIGFsd2F5cyBpbnZhbGlkJyksJC5mYWlsKCk7cmV0dXJufWlmKCgwLHJXLmFsd2F5c1ZhbGlkU2NoZW1hKShXLEopKXtsZXQgTz1RNC5fYCR7Vn0gPj0gJHtHfWA7aWYoVSE9PXZvaWQgMClPPVE0Ll9gJHtPfSAmJiAke1Z9IDw9ICR7VX1gOyQucGFzcyhPKTtyZXR1cm59Vy5pdGVtcz0hMDtsZXQgQj1RLm5hbWUoXCJ2YWxpZFwiKTtpZihVPT09dm9pZCAwJiZHPT09MSlOKEIsKCk9PlEuaWYoQiwoKT0+US5icmVhaygpKSk7ZWxzZSBpZihHPT09MCl7aWYoUS5sZXQoQiwhMCksVSE9PXZvaWQgMClRLmlmKFE0Ll9gJHtYfS5sZW5ndGggPiAwYCx6KX1lbHNlIFEubGV0KEIsITEpLHooKTskLnJlc3VsdChCLCgpPT4kLnJlc2V0KCkpO2Z1bmN0aW9uIHooKXtsZXQgTz1RLm5hbWUoXCJfdmFsaWRcIiksRD1RLmxldChcImNvdW50XCIsMCk7TihPLCgpPT5RLmlmKE8sKCk9PncoRCkpKX1mdW5jdGlvbiBOKE8sRCl7US5mb3JSYW5nZShcImlcIiwwLFYsKE0pPT57JC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJjb250YWluc1wiLGRhdGFQcm9wOk0sZGF0YVByb3BUeXBlOnJXLlR5cGUuTnVtLGNvbXBvc2l0ZVJ1bGU6ITB9LE8pLEQoKX0pfWZ1bmN0aW9uIHcoTyl7aWYoUS5jb2RlKFE0Ll9gJHtPfSsrYCksVT09PXZvaWQgMClRLmlmKFE0Ll9gJHtPfSA+PSAke0d9YCwoKT0+US5hc3NpZ24oQiwhMCkuYnJlYWsoKSk7ZWxzZSBpZihRLmlmKFE0Ll9gJHtPfSA+ICR7VX1gLCgpPT5RLmFzc2lnbihCLCExKS5icmVhaygpKSxHPT09MSlRLmFzc2lnbihCLCEwKTtlbHNlIFEuaWYoUTQuX2Ake099ID49ICR7R31gLCgpPT5RLmFzc2lnbihCLCEwKSl9fX07RVIuZGVmYXVsdD1SdH0pO3ZhciBUUj1JKChrUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoa1IsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7a1IudmFsaWRhdGVTY2hlbWFEZXBzPWtSLnZhbGlkYXRlUHJvcGVydHlEZXBzPWtSLmVycm9yPXZvaWQgMDt2YXIgWHo9USQoKSxFdD1xJCgpLG5KPSQ0KCk7a1IuZXJyb3I9e21lc3NhZ2U6KHtwYXJhbXM6e3Byb3BlcnR5OiQsZGVwc0NvdW50OlEsZGVwczpKfX0pPT57bGV0IFk9UT09PTE/XCJwcm9wZXJ0eVwiOlwicHJvcGVydGllc1wiO3JldHVybiBYei5zdHJgbXVzdCBoYXZlICR7WX0gJHtKfSB3aGVuIHByb3BlcnR5ICR7JH0gaXMgcHJlc2VudGB9LHBhcmFtczooe3BhcmFtczp7cHJvcGVydHk6JCxkZXBzQ291bnQ6USxkZXBzOkosbWlzc2luZ1Byb3BlcnR5Oll9fSk9Plh6Ll9ge3Byb3BlcnR5OiAkeyR9LFxuICAgIG1pc3NpbmdQcm9wZXJ0eTogJHtZfSxcbiAgICBkZXBzQ291bnQ6ICR7UX0sXG4gICAgZGVwczogJHtKfX1gfTt2YXIgYnQ9e2tleXdvcmQ6XCJkZXBlbmRlbmNpZXNcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcIm9iamVjdFwiLGVycm9yOmtSLmVycm9yLGNvZGUoJCl7bGV0W1EsSl09X3QoJCk7X1IoJCxRKSxTUigkLEopfX07ZnVuY3Rpb24gX3Qoe3NjaGVtYTokfSl7bGV0IFE9e30sSj17fTtmb3IobGV0IFkgaW4gJCl7aWYoWT09PVwiX19wcm90b19fXCIpY29udGludWU7bGV0IFg9QXJyYXkuaXNBcnJheSgkW1ldKT9ROko7WFtZXT0kW1ldfXJldHVybltRLEpdfWZ1bmN0aW9uIF9SKCQsUT0kLnNjaGVtYSl7bGV0e2dlbjpKLGRhdGE6WSxpdDpYfT0kO2lmKE9iamVjdC5rZXlzKFEpLmxlbmd0aD09PTApcmV0dXJuO2xldCBXPUoubGV0KFwibWlzc2luZ1wiKTtmb3IobGV0IEcgaW4gUSl7bGV0IFU9UVtHXTtpZihVLmxlbmd0aD09PTApY29udGludWU7bGV0IEg9KDAsbkoucHJvcGVydHlJbkRhdGEpKEosWSxHLFgub3B0cy5vd25Qcm9wZXJ0aWVzKTtpZigkLnNldFBhcmFtcyh7cHJvcGVydHk6RyxkZXBzQ291bnQ6VS5sZW5ndGgsZGVwczpVLmpvaW4oXCIsIFwiKX0pLFguYWxsRXJyb3JzKUouaWYoSCwoKT0+e2ZvcihsZXQgcSBvZiBVKSgwLG5KLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3ApKCQscSl9KTtlbHNlIEouaWYoWHouX2Ake0h9ICYmICgkeygwLG5KLmNoZWNrTWlzc2luZ1Byb3ApKCQsVSxXKX0pYCksKDAsbkoucmVwb3J0TWlzc2luZ1Byb3ApKCQsVyksSi5lbHNlKCl9fWtSLnZhbGlkYXRlUHJvcGVydHlEZXBzPV9SO2Z1bmN0aW9uIFNSKCQsUT0kLnNjaGVtYSl7bGV0e2dlbjpKLGRhdGE6WSxrZXl3b3JkOlgsaXQ6V309JCxHPUoubmFtZShcInZhbGlkXCIpO2ZvcihsZXQgVSBpbiBRKXtpZigoMCxFdC5hbHdheXNWYWxpZFNjaGVtYSkoVyxRW1VdKSljb250aW51ZTtKLmlmKCgwLG5KLnByb3BlcnR5SW5EYXRhKShKLFksVSxXLm9wdHMub3duUHJvcGVydGllcyksKCk9PntsZXQgSD0kLnN1YnNjaGVtYSh7a2V5d29yZDpYLHNjaGVtYVByb3A6VX0sRyk7JC5tZXJnZVZhbGlkRXZhbHVhdGVkKEgsRyl9LCgpPT5KLnZhcihHLCEwKSksJC5vayhHKX19a1IudmFsaWRhdGVTY2hlbWFEZXBzPVNSO2tSLmRlZmF1bHQ9YnR9KTt2YXIgeVI9SSgoZlIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGZSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB4Uj1RJCgpLHZ0PXEkKCksQ3Q9e21lc3NhZ2U6XCJwcm9wZXJ0eSBuYW1lIG11c3QgYmUgdmFsaWRcIixwYXJhbXM6KHtwYXJhbXM6JH0pPT54Ui5fYHtwcm9wZXJ0eU5hbWU6ICR7JC5wcm9wZXJ0eU5hbWV9fWB9LFR0PXtrZXl3b3JkOlwicHJvcGVydHlOYW1lc1wiLHR5cGU6XCJvYmplY3RcIixzY2hlbWFUeXBlOltcIm9iamVjdFwiLFwiYm9vbGVhblwiXSxlcnJvcjpDdCxjb2RlKCQpe2xldHtnZW46USxzY2hlbWE6SixkYXRhOlksaXQ6WH09JDtpZigoMCx2dC5hbHdheXNWYWxpZFNjaGVtYSkoWCxKKSlyZXR1cm47bGV0IFc9US5uYW1lKFwidmFsaWRcIik7US5mb3JJbihcImtleVwiLFksKEcpPT57JC5zZXRQYXJhbXMoe3Byb3BlcnR5TmFtZTpHfSksJC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJwcm9wZXJ0eU5hbWVzXCIsZGF0YTpHLGRhdGFUeXBlczpbXCJzdHJpbmdcIl0scHJvcGVydHlOYW1lOkcsY29tcG9zaXRlUnVsZTohMH0sVyksUS5pZigoMCx4Ui5ub3QpKFcpLCgpPT57aWYoJC5lcnJvcighMCksIVguYWxsRXJyb3JzKVEuYnJlYWsoKX0pfSksJC5vayhXKX19O2ZSLmRlZmF1bHQ9VHR9KTt2YXIgWXo9SSgoZ1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGdSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBvVz0kNCgpLEQ0PVEkKCksZnQ9SjEoKSx0Vz1xJCgpLHl0PXttZXNzYWdlOlwibXVzdCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcIixwYXJhbXM6KHtwYXJhbXM6JH0pPT5ENC5fYHthZGRpdGlvbmFsUHJvcGVydHk6ICR7JC5hZGRpdGlvbmFsUHJvcGVydHl9fWB9LGd0PXtrZXl3b3JkOlwiYWRkaXRpb25hbFByb3BlcnRpZXNcIix0eXBlOltcIm9iamVjdFwiXSxzY2hlbWFUeXBlOltcImJvb2xlYW5cIixcIm9iamVjdFwiXSxhbGxvd1VuZGVmaW5lZDohMCx0cmFja0Vycm9yczohMCxlcnJvcjp5dCxjb2RlKCQpe2xldHtnZW46USxzY2hlbWE6SixwYXJlbnRTY2hlbWE6WSxkYXRhOlgsZXJyc0NvdW50OlcsaXQ6R309JDtpZighVyl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtsZXR7YWxsRXJyb3JzOlUsb3B0czpIfT1HO2lmKEcucHJvcHM9ITAsSC5yZW1vdmVBZGRpdGlvbmFsIT09XCJhbGxcIiYmKDAsdFcuYWx3YXlzVmFsaWRTY2hlbWEpKEcsSikpcmV0dXJuO2xldCBxPSgwLG9XLmFsbFNjaGVtYVByb3BlcnRpZXMpKFkucHJvcGVydGllcyksVj0oMCxvVy5hbGxTY2hlbWFQcm9wZXJ0aWVzKShZLnBhdHRlcm5Qcm9wZXJ0aWVzKTtCKCksJC5vayhENC5fYCR7V30gPT09ICR7ZnQuZGVmYXVsdC5lcnJvcnN9YCk7ZnVuY3Rpb24gQigpe1EuZm9ySW4oXCJrZXlcIixYLChEKT0+e2lmKCFxLmxlbmd0aCYmIVYubGVuZ3RoKXcoRCk7ZWxzZSBRLmlmKHooRCksKCk9PncoRCkpfSl9ZnVuY3Rpb24geihEKXtsZXQgTTtpZihxLmxlbmd0aD44KXtsZXQgaj0oMCx0Vy5zY2hlbWFSZWZPclZhbCkoRyxZLnByb3BlcnRpZXMsXCJwcm9wZXJ0aWVzXCIpO009KDAsb1cuaXNPd25Qcm9wZXJ0eSkoUSxqLEQpfWVsc2UgaWYocS5sZW5ndGgpTT0oMCxENC5vcikoLi4ucS5tYXAoKGopPT5ENC5fYCR7RH0gPT09ICR7an1gKSk7ZWxzZSBNPUQ0Lm5pbDtpZihWLmxlbmd0aClNPSgwLEQ0Lm9yKShNLC4uLlYubWFwKChqKT0+RDQuX2AkeygwLG9XLnVzZVBhdHRlcm4pKCQsail9LnRlc3QoJHtEfSlgKSk7cmV0dXJuKDAsRDQubm90KShNKX1mdW5jdGlvbiBOKEQpe1EuY29kZShENC5fYGRlbGV0ZSAke1h9WyR7RH1dYCl9ZnVuY3Rpb24gdyhEKXtpZihILnJlbW92ZUFkZGl0aW9uYWw9PT1cImFsbFwifHxILnJlbW92ZUFkZGl0aW9uYWwmJko9PT0hMSl7TihEKTtyZXR1cm59aWYoSj09PSExKXtpZigkLnNldFBhcmFtcyh7YWRkaXRpb25hbFByb3BlcnR5OkR9KSwkLmVycm9yKCksIVUpUS5icmVhaygpO3JldHVybn1pZih0eXBlb2YgSj09XCJvYmplY3RcIiYmISgwLHRXLmFsd2F5c1ZhbGlkU2NoZW1hKShHLEopKXtsZXQgTT1RLm5hbWUoXCJ2YWxpZFwiKTtpZihILnJlbW92ZUFkZGl0aW9uYWw9PT1cImZhaWxpbmdcIilPKEQsTSwhMSksUS5pZigoMCxENC5ub3QpKE0pLCgpPT57JC5yZXNldCgpLE4oRCl9KTtlbHNlIGlmKE8oRCxNKSwhVSlRLmlmKCgwLEQ0Lm5vdCkoTSksKCk9PlEuYnJlYWsoKSl9fWZ1bmN0aW9uIE8oRCxNLGope2xldCBBPXtrZXl3b3JkOlwiYWRkaXRpb25hbFByb3BlcnRpZXNcIixkYXRhUHJvcDpELGRhdGFQcm9wVHlwZTp0Vy5UeXBlLlN0cn07aWYoaj09PSExKU9iamVjdC5hc3NpZ24oQSx7Y29tcG9zaXRlUnVsZTohMCxjcmVhdGVFcnJvcnM6ITEsYWxsRXJyb3JzOiExfSk7JC5zdWJzY2hlbWEoQSxNKX19fTtnUi5kZWZhdWx0PWd0fSk7dmFyIGxSPUkoKG1SKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShtUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdXQ9eEooKSxoUj0kNCgpLFd6PXEkKCksdVI9WXooKSxtdD17a2V5d29yZDpcInByb3BlcnRpZXNcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcIm9iamVjdFwiLGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLHBhcmVudFNjaGVtYTpZLGRhdGE6WCxpdDpXfT0kO2lmKFcub3B0cy5yZW1vdmVBZGRpdGlvbmFsPT09XCJhbGxcIiYmWS5hZGRpdGlvbmFsUHJvcGVydGllcz09PXZvaWQgMCl1Ui5kZWZhdWx0LmNvZGUobmV3IHV0LktleXdvcmRDeHQoVyx1Ui5kZWZhdWx0LFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIikpO2xldCBHPSgwLGhSLmFsbFNjaGVtYVByb3BlcnRpZXMpKEopO2ZvcihsZXQgQiBvZiBHKVcuZGVmaW5lZFByb3BlcnRpZXMuYWRkKEIpO2lmKFcub3B0cy51bmV2YWx1YXRlZCYmRy5sZW5ndGgmJlcucHJvcHMhPT0hMClXLnByb3BzPVd6Lm1lcmdlRXZhbHVhdGVkLnByb3BzKFEsKDAsV3oudG9IYXNoKShHKSxXLnByb3BzKTtsZXQgVT1HLmZpbHRlcigoQik9PiEoMCxXei5hbHdheXNWYWxpZFNjaGVtYSkoVyxKW0JdKSk7aWYoVS5sZW5ndGg9PT0wKXJldHVybjtsZXQgSD1RLm5hbWUoXCJ2YWxpZFwiKTtmb3IobGV0IEIgb2YgVSl7aWYocShCKSlWKEIpO2Vsc2V7aWYoUS5pZigoMCxoUi5wcm9wZXJ0eUluRGF0YSkoUSxYLEIsVy5vcHRzLm93blByb3BlcnRpZXMpKSxWKEIpLCFXLmFsbEVycm9ycylRLmVsc2UoKS52YXIoSCwhMCk7US5lbmRJZigpfSQuaXQuZGVmaW5lZFByb3BlcnRpZXMuYWRkKEIpLCQub2soSCl9ZnVuY3Rpb24gcShCKXtyZXR1cm4gVy5vcHRzLnVzZURlZmF1bHRzJiYhVy5jb21wb3NpdGVSdWxlJiZKW0JdLmRlZmF1bHQhPT12b2lkIDB9ZnVuY3Rpb24gVihCKXskLnN1YnNjaGVtYSh7a2V5d29yZDpcInByb3BlcnRpZXNcIixzY2hlbWFQcm9wOkIsZGF0YVByb3A6Qn0sSCl9fX07bVIuZGVmYXVsdD1tdH0pO3ZhciBuUj1JKChpUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoaVIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGNSPSQ0KCksYVc9USQoKSxwUj1xJCgpLGRSPXEkKCksY3Q9e2tleXdvcmQ6XCJwYXR0ZXJuUHJvcGVydGllc1wiLHR5cGU6XCJvYmplY3RcIixzY2hlbWFUeXBlOlwib2JqZWN0XCIsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosZGF0YTpZLHBhcmVudFNjaGVtYTpYLGl0Old9PSQse29wdHM6R309VyxVPSgwLGNSLmFsbFNjaGVtYVByb3BlcnRpZXMpKEopLEg9VS5maWx0ZXIoKE8pPT4oMCxwUi5hbHdheXNWYWxpZFNjaGVtYSkoVyxKW09dKSk7aWYoVS5sZW5ndGg9PT0wfHxILmxlbmd0aD09PVUubGVuZ3RoJiYoIVcub3B0cy51bmV2YWx1YXRlZHx8Vy5wcm9wcz09PSEwKSlyZXR1cm47bGV0IHE9Ry5zdHJpY3RTY2hlbWEmJiFHLmFsbG93TWF0Y2hpbmdQcm9wZXJ0aWVzJiZYLnByb3BlcnRpZXMsVj1RLm5hbWUoXCJ2YWxpZFwiKTtpZihXLnByb3BzIT09ITAmJiEoVy5wcm9wcyBpbnN0YW5jZW9mIGFXLk5hbWUpKVcucHJvcHM9KDAsZFIuZXZhbHVhdGVkUHJvcHNUb05hbWUpKFEsVy5wcm9wcyk7bGV0e3Byb3BzOkJ9PVc7eigpO2Z1bmN0aW9uIHooKXtmb3IobGV0IE8gb2YgVSl7aWYocSlOKE8pO2lmKFcuYWxsRXJyb3JzKXcoTyk7ZWxzZSBRLnZhcihWLCEwKSx3KE8pLFEuaWYoVil9fWZ1bmN0aW9uIE4oTyl7Zm9yKGxldCBEIGluIHEpaWYobmV3IFJlZ0V4cChPKS50ZXN0KEQpKSgwLHBSLmNoZWNrU3RyaWN0TW9kZSkoVyxgcHJvcGVydHkgJHtEfSBtYXRjaGVzIHBhdHRlcm4gJHtPfSAodXNlIGFsbG93TWF0Y2hpbmdQcm9wZXJ0aWVzKWApfWZ1bmN0aW9uIHcoTyl7US5mb3JJbihcImtleVwiLFksKEQpPT57US5pZihhVy5fYCR7KDAsY1IudXNlUGF0dGVybikoJCxPKX0udGVzdCgke0R9KWAsKCk9PntsZXQgTT1ILmluY2x1ZGVzKE8pO2lmKCFNKSQuc3Vic2NoZW1hKHtrZXl3b3JkOlwicGF0dGVyblByb3BlcnRpZXNcIixzY2hlbWFQcm9wOk8sZGF0YVByb3A6RCxkYXRhUHJvcFR5cGU6ZFIuVHlwZS5TdHJ9LFYpO2lmKFcub3B0cy51bmV2YWx1YXRlZCYmQiE9PSEwKVEuYXNzaWduKGFXLl9gJHtCfVske0R9XWAsITApO2Vsc2UgaWYoIU0mJiFXLmFsbEVycm9ycylRLmlmKCgwLGFXLm5vdCkoViksKCk9PlEuYnJlYWsoKSl9KX0pfX19O2lSLmRlZmF1bHQ9Y3R9KTt2YXIgb1I9SSgoclIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHJSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBkdD1xJCgpLGl0PXtrZXl3b3JkOlwibm90XCIsc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0sdHJhY2tFcnJvcnM6ITAsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosaXQ6WX09JDtpZigoMCxkdC5hbHdheXNWYWxpZFNjaGVtYSkoWSxKKSl7JC5mYWlsKCk7cmV0dXJufWxldCBYPVEubmFtZShcInZhbGlkXCIpOyQuc3Vic2NoZW1hKHtrZXl3b3JkOlwibm90XCIsY29tcG9zaXRlUnVsZTohMCxjcmVhdGVFcnJvcnM6ITEsYWxsRXJyb3JzOiExfSxYKSwkLmZhaWxSZXN1bHQoWCwoKT0+JC5yZXNldCgpLCgpPT4kLmVycm9yKCkpfSxlcnJvcjp7bWVzc2FnZTpcIm11c3QgTk9UIGJlIHZhbGlkXCJ9fTtyUi5kZWZhdWx0PWl0fSk7dmFyIGFSPUkoKHRSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0UixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcnQ9JDQoKSxvdD17a2V5d29yZDpcImFueU9mXCIsc2NoZW1hVHlwZTpcImFycmF5XCIsdHJhY2tFcnJvcnM6ITAsY29kZTpydC52YWxpZGF0ZVVuaW9uLGVycm9yOnttZXNzYWdlOlwibXVzdCBtYXRjaCBhIHNjaGVtYSBpbiBhbnlPZlwifX07dFIuZGVmYXVsdD1vdH0pO3ZhciBlUj1JKChzUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoc1IsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHNXPVEkKCksYXQ9cSQoKSxzdD17bWVzc2FnZTpcIm11c3QgbWF0Y2ggZXhhY3RseSBvbmUgc2NoZW1hIGluIG9uZU9mXCIscGFyYW1zOih7cGFyYW1zOiR9KT0+c1cuX2B7cGFzc2luZ1NjaGVtYXM6ICR7JC5wYXNzaW5nfX1gfSxldD17a2V5d29yZDpcIm9uZU9mXCIsc2NoZW1hVHlwZTpcImFycmF5XCIsdHJhY2tFcnJvcnM6ITAsZXJyb3I6c3QsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkoscGFyZW50U2NoZW1hOlksaXQ6WH09JDtpZighQXJyYXkuaXNBcnJheShKKSl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtpZihYLm9wdHMuZGlzY3JpbWluYXRvciYmWS5kaXNjcmltaW5hdG9yKXJldHVybjtsZXQgVz1KLEc9US5sZXQoXCJ2YWxpZFwiLCExKSxVPVEubGV0KFwicGFzc2luZ1wiLG51bGwpLEg9US5uYW1lKFwiX3ZhbGlkXCIpOyQuc2V0UGFyYW1zKHtwYXNzaW5nOlV9KSxRLmJsb2NrKHEpLCQucmVzdWx0KEcsKCk9PiQucmVzZXQoKSwoKT0+JC5lcnJvcighMCkpO2Z1bmN0aW9uIHEoKXtXLmZvckVhY2goKFYsQik9PntsZXQgejtpZigoMCxhdC5hbHdheXNWYWxpZFNjaGVtYSkoWCxWKSlRLnZhcihILCEwKTtlbHNlIHo9JC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJvbmVPZlwiLHNjaGVtYVByb3A6Qixjb21wb3NpdGVSdWxlOiEwfSxIKTtpZihCPjApUS5pZihzVy5fYCR7SH0gJiYgJHtHfWApLmFzc2lnbihHLCExKS5hc3NpZ24oVSxzVy5fYFske1V9LCAke0J9XWApLmVsc2UoKTtRLmlmKEgsKCk9PntpZihRLmFzc2lnbihHLCEwKSxRLmFzc2lnbihVLEIpLHopJC5tZXJnZUV2YWx1YXRlZCh6LHNXLk5hbWUpfSl9KX19fTtzUi5kZWZhdWx0PWV0fSk7dmFyIFFQPUkoKCRQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgUWE9cSQoKSxKYT17a2V5d29yZDpcImFsbE9mXCIsc2NoZW1hVHlwZTpcImFycmF5XCIsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosaXQ6WX09JDtpZighQXJyYXkuaXNBcnJheShKKSl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtsZXQgWD1RLm5hbWUoXCJ2YWxpZFwiKTtKLmZvckVhY2goKFcsRyk9PntpZigoMCxRYS5hbHdheXNWYWxpZFNjaGVtYSkoWSxXKSlyZXR1cm47bGV0IFU9JC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJhbGxPZlwiLHNjaGVtYVByb3A6R30sWCk7JC5vayhYKSwkLm1lcmdlRXZhbHVhdGVkKFUpfSl9fTskUC5kZWZhdWx0PUphfSk7dmFyIFdQPUkoKFlQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShZUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZVc9USQoKSxYUD1xJCgpLFlhPXttZXNzYWdlOih7cGFyYW1zOiR9KT0+ZVcuc3RyYG11c3QgbWF0Y2ggXCIkeyQuaWZDbGF1c2V9XCIgc2NoZW1hYCxwYXJhbXM6KHtwYXJhbXM6JH0pPT5lVy5fYHtmYWlsaW5nS2V5d29yZDogJHskLmlmQ2xhdXNlfX1gfSxXYT17a2V5d29yZDpcImlmXCIsc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0sdHJhY2tFcnJvcnM6ITAsZXJyb3I6WWEsY29kZSgkKXtsZXR7Z2VuOlEscGFyZW50U2NoZW1hOkosaXQ6WX09JDtpZihKLnRoZW49PT12b2lkIDAmJkouZWxzZT09PXZvaWQgMCkoMCxYUC5jaGVja1N0cmljdE1vZGUpKFksJ1wiaWZcIiB3aXRob3V0IFwidGhlblwiIGFuZCBcImVsc2VcIiBpcyBpZ25vcmVkJyk7bGV0IFg9SlAoWSxcInRoZW5cIiksVz1KUChZLFwiZWxzZVwiKTtpZighWCYmIVcpcmV0dXJuO2xldCBHPVEubGV0KFwidmFsaWRcIiwhMCksVT1RLm5hbWUoXCJfdmFsaWRcIik7aWYoSCgpLCQucmVzZXQoKSxYJiZXKXtsZXQgVj1RLmxldChcImlmQ2xhdXNlXCIpOyQuc2V0UGFyYW1zKHtpZkNsYXVzZTpWfSksUS5pZihVLHEoXCJ0aGVuXCIsVikscShcImVsc2VcIixWKSl9ZWxzZSBpZihYKVEuaWYoVSxxKFwidGhlblwiKSk7ZWxzZSBRLmlmKCgwLGVXLm5vdCkoVSkscShcImVsc2VcIikpOyQucGFzcyhHLCgpPT4kLmVycm9yKCEwKSk7ZnVuY3Rpb24gSCgpe2xldCBWPSQuc3Vic2NoZW1hKHtrZXl3b3JkOlwiaWZcIixjb21wb3NpdGVSdWxlOiEwLGNyZWF0ZUVycm9yczohMSxhbGxFcnJvcnM6ITF9LFUpOyQubWVyZ2VFdmFsdWF0ZWQoVil9ZnVuY3Rpb24gcShWLEIpe3JldHVybigpPT57bGV0IHo9JC5zdWJzY2hlbWEoe2tleXdvcmQ6Vn0sVSk7aWYoUS5hc3NpZ24oRyxVKSwkLm1lcmdlVmFsaWRFdmFsdWF0ZWQoeixHKSxCKVEuYXNzaWduKEIsZVcuX2Ake1Z9YCk7ZWxzZSAkLnNldFBhcmFtcyh7aWZDbGF1c2U6Vn0pfX19fTtmdW5jdGlvbiBKUCgkLFEpe2xldCBKPSQuc2NoZW1hW1FdO3JldHVybiBKIT09dm9pZCAwJiYhKDAsWFAuYWx3YXlzVmFsaWRTY2hlbWEpKCQsSil9WVAuZGVmYXVsdD1XYX0pO3ZhciBVUD1JKChHUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoR1AsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIFVhPXEkKCksSGE9e2tleXdvcmQ6W1widGhlblwiLFwiZWxzZVwiXSxzY2hlbWFUeXBlOltcIm9iamVjdFwiLFwiYm9vbGVhblwiXSxjb2RlKHtrZXl3b3JkOiQscGFyZW50U2NoZW1hOlEsaXQ6Sn0pe2lmKFEuaWY9PT12b2lkIDApKDAsVWEuY2hlY2tTdHJpY3RNb2RlKShKLGBcIiR7JH1cIiB3aXRob3V0IFwiaWZcIiBpcyBpZ25vcmVkYCl9fTtHUC5kZWZhdWx0PUhhfSk7dmFyIEtQPUkoKEhQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShIUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcWE9UXooKSxWYT1BUigpLEJhPUp6KCksemE9UFIoKSxOYT1iUigpLHdhPVRSKCksT2E9eVIoKSxEYT1ZeigpLEZhPWxSKCksWmE9blIoKSxNYT1vUigpLExhPWFSKCksamE9ZVIoKSxBYT1RUCgpLElhPVdQKCksUmE9VVAoKTtmdW5jdGlvbiBQYSgkPSExKXtsZXQgUT1bTWEuZGVmYXVsdCxMYS5kZWZhdWx0LGphLmRlZmF1bHQsQWEuZGVmYXVsdCxJYS5kZWZhdWx0LFJhLmRlZmF1bHQsT2EuZGVmYXVsdCxEYS5kZWZhdWx0LHdhLmRlZmF1bHQsRmEuZGVmYXVsdCxaYS5kZWZhdWx0XTtpZigkKVEucHVzaChWYS5kZWZhdWx0LHphLmRlZmF1bHQpO2Vsc2UgUS5wdXNoKHFhLmRlZmF1bHQsQmEuZGVmYXVsdCk7cmV0dXJuIFEucHVzaChOYS5kZWZhdWx0KSxRfUhQLmRlZmF1bHQ9UGF9KTt2YXIgVlA9SSgocVApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHFQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwJD1RJCgpLGJhPXttZXNzYWdlOih7c2NoZW1hQ29kZTokfSk9PnAkLnN0cmBtdXN0IG1hdGNoIGZvcm1hdCBcIiR7JH1cImAscGFyYW1zOih7c2NoZW1hQ29kZTokfSk9PnAkLl9ge2Zvcm1hdDogJHskfX1gfSxfYT17a2V5d29yZDpcImZvcm1hdFwiLHR5cGU6W1wibnVtYmVyXCIsXCJzdHJpbmdcIl0sc2NoZW1hVHlwZTpcInN0cmluZ1wiLCRkYXRhOiEwLGVycm9yOmJhLGNvZGUoJCxRKXtsZXR7Z2VuOkosZGF0YTpZLCRkYXRhOlgsc2NoZW1hOlcsc2NoZW1hQ29kZTpHLGl0OlV9PSQse29wdHM6SCxlcnJTY2hlbWFQYXRoOnEsc2NoZW1hRW52OlYsc2VsZjpCfT1VO2lmKCFILnZhbGlkYXRlRm9ybWF0cylyZXR1cm47aWYoWCl6KCk7ZWxzZSBOKCk7ZnVuY3Rpb24geigpe2xldCB3PUouc2NvcGVWYWx1ZShcImZvcm1hdHNcIix7cmVmOkIuZm9ybWF0cyxjb2RlOkguY29kZS5mb3JtYXRzfSksTz1KLmNvbnN0KFwiZkRlZlwiLHAkLl9gJHt3fVske0d9XWApLEQ9Si5sZXQoXCJmVHlwZVwiKSxNPUoubGV0KFwiZm9ybWF0XCIpO0ouaWYocCQuX2B0eXBlb2YgJHtPfSA9PSBcIm9iamVjdFwiICYmICEoJHtPfSBpbnN0YW5jZW9mIFJlZ0V4cClgLCgpPT5KLmFzc2lnbihELHAkLl9gJHtPfS50eXBlIHx8IFwic3RyaW5nXCJgKS5hc3NpZ24oTSxwJC5fYCR7T30udmFsaWRhdGVgKSwoKT0+Si5hc3NpZ24oRCxwJC5fYFwic3RyaW5nXCJgKS5hc3NpZ24oTSxPKSksJC5mYWlsJGRhdGEoKDAscCQub3IpKGooKSxBKCkpKTtmdW5jdGlvbiBqKCl7aWYoSC5zdHJpY3RTY2hlbWE9PT0hMSlyZXR1cm4gcCQubmlsO3JldHVybiBwJC5fYCR7R30gJiYgISR7TX1gfWZ1bmN0aW9uIEEoKXtsZXQgaz1WLiRhc3luYz9wJC5fYCgke099LmFzeW5jID8gYXdhaXQgJHtNfSgke1l9KSA6ICR7TX0oJHtZfSkpYDpwJC5fYCR7TX0oJHtZfSlgLHU9cCQuX2AodHlwZW9mICR7TX0gPT0gXCJmdW5jdGlvblwiID8gJHtrfSA6ICR7TX0udGVzdCgke1l9KSlgO3JldHVybiBwJC5fYCR7TX0gJiYgJHtNfSAhPT0gdHJ1ZSAmJiAke0R9ID09PSAke1F9ICYmICEke3V9YH19ZnVuY3Rpb24gTigpe2xldCB3PUIuZm9ybWF0c1tXXTtpZighdyl7aigpO3JldHVybn1pZih3PT09ITApcmV0dXJuO2xldFtPLEQsTV09QSh3KTtpZihPPT09USkkLnBhc3MoaygpKTtmdW5jdGlvbiBqKCl7aWYoSC5zdHJpY3RTY2hlbWE9PT0hMSl7Qi5sb2dnZXIud2Fybih1KCkpO3JldHVybn10aHJvdyBFcnJvcih1KCkpO2Z1bmN0aW9uIHUoKXtyZXR1cm5gdW5rbm93biBmb3JtYXQgXCIke1d9XCIgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIiR7cX1cImB9fWZ1bmN0aW9uIEEodSl7bGV0IEckPXUgaW5zdGFuY2VvZiBSZWdFeHA/KDAscCQucmVnZXhwQ29kZSkodSk6SC5jb2RlLmZvcm1hdHM/cCQuX2Ake0guY29kZS5mb3JtYXRzfSR7KDAscCQuZ2V0UHJvcGVydHkpKFcpfWA6dm9pZCAwLGgkPUouc2NvcGVWYWx1ZShcImZvcm1hdHNcIix7a2V5OlcscmVmOnUsY29kZTpHJH0pO2lmKHR5cGVvZiB1PT1cIm9iamVjdFwiJiYhKHUgaW5zdGFuY2VvZiBSZWdFeHApKXJldHVyblt1LnR5cGV8fFwic3RyaW5nXCIsdS52YWxpZGF0ZSxwJC5fYCR7aCR9LnZhbGlkYXRlYF07cmV0dXJuW1wic3RyaW5nXCIsdSxoJF19ZnVuY3Rpb24gaygpe2lmKHR5cGVvZiB3PT1cIm9iamVjdFwiJiYhKHcgaW5zdGFuY2VvZiBSZWdFeHApJiZ3LmFzeW5jKXtpZighVi4kYXN5bmMpdGhyb3cgRXJyb3IoXCJhc3luYyBmb3JtYXQgaW4gc3luYyBzY2hlbWFcIik7cmV0dXJuIHAkLl9gYXdhaXQgJHtNfSgke1l9KWB9cmV0dXJuIHR5cGVvZiBEPT1cImZ1bmN0aW9uXCI/cCQuX2Ake019KCR7WX0pYDpwJC5fYCR7TX0udGVzdCgke1l9KWB9fX19O3FQLmRlZmF1bHQ9X2F9KTt2YXIgelA9SSgoQlApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEJQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBrYT1WUCgpLHZhPVtrYS5kZWZhdWx0XTtCUC5kZWZhdWx0PXZhfSk7dmFyIE9QPUkoKE5QKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShOUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtOUC5jb250ZW50Vm9jYWJ1bGFyeT1OUC5tZXRhZGF0YVZvY2FidWxhcnk9dm9pZCAwO05QLm1ldGFkYXRhVm9jYWJ1bGFyeT1bXCJ0aXRsZVwiLFwiZGVzY3JpcHRpb25cIixcImRlZmF1bHRcIixcImRlcHJlY2F0ZWRcIixcInJlYWRPbmx5XCIsXCJ3cml0ZU9ubHlcIixcImV4YW1wbGVzXCJdO05QLmNvbnRlbnRWb2NhYnVsYXJ5PVtcImNvbnRlbnRNZWRpYVR5cGVcIixcImNvbnRlbnRFbmNvZGluZ1wiLFwiY29udGVudFNjaGVtYVwiXX0pO3ZhciBaUD1JKChGUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoRlAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHhhPW1JKCksZmE9TlIoKSx5YT1LUCgpLGdhPXpQKCksRFA9T1AoKSxoYT1beGEuZGVmYXVsdCxmYS5kZWZhdWx0LCgwLHlhLmRlZmF1bHQpKCksZ2EuZGVmYXVsdCxEUC5tZXRhZGF0YVZvY2FidWxhcnksRFAuY29udGVudFZvY2FidWxhcnldO0ZQLmRlZmF1bHQ9aGF9KTt2YXIgQVA9SSgoTFApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KExQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0xQLkRpc2NyRXJyb3I9dm9pZCAwO3ZhciBNUDsoZnVuY3Rpb24oJCl7JC5UYWc9XCJ0YWdcIiwkLk1hcHBpbmc9XCJtYXBwaW5nXCJ9KShNUHx8KExQLkRpc2NyRXJyb3I9TVA9e30pKX0pO3ZhciBQUD1JKChSUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUlAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIEw5PVEkKCksR3o9QVAoKSxJUD1mVygpLG1hPWZKKCksbGE9cSQoKSxjYT17bWVzc2FnZTooe3BhcmFtczp7ZGlzY3JFcnJvcjokLHRhZ05hbWU6UX19KT0+JD09PUd6LkRpc2NyRXJyb3IuVGFnP2B0YWcgXCIke1F9XCIgbXVzdCBiZSBzdHJpbmdgOmB2YWx1ZSBvZiB0YWcgXCIke1F9XCIgbXVzdCBiZSBpbiBvbmVPZmAscGFyYW1zOih7cGFyYW1zOntkaXNjckVycm9yOiQsdGFnOlEsdGFnTmFtZTpKfX0pPT5MOS5fYHtlcnJvcjogJHskfSwgdGFnOiAke0p9LCB0YWdWYWx1ZTogJHtRfX1gfSxwYT17a2V5d29yZDpcImRpc2NyaW1pbmF0b3JcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcIm9iamVjdFwiLGVycm9yOmNhLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SixzY2hlbWE6WSxwYXJlbnRTY2hlbWE6WCxpdDpXfT0kLHtvbmVPZjpHfT1YO2lmKCFXLm9wdHMuZGlzY3JpbWluYXRvcil0aHJvdyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIGRpc2NyaW1pbmF0b3Igb3B0aW9uXCIpO2xldCBVPVkucHJvcGVydHlOYW1lO2lmKHR5cGVvZiBVIT1cInN0cmluZ1wiKXRocm93IEVycm9yKFwiZGlzY3JpbWluYXRvcjogcmVxdWlyZXMgcHJvcGVydHlOYW1lXCIpO2lmKFkubWFwcGluZyl0aHJvdyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IG1hcHBpbmcgaXMgbm90IHN1cHBvcnRlZFwiKTtpZighRyl0aHJvdyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIG9uZU9mIGtleXdvcmRcIik7bGV0IEg9US5sZXQoXCJ2YWxpZFwiLCExKSxxPVEuY29uc3QoXCJ0YWdcIixMOS5fYCR7Sn0keygwLEw5LmdldFByb3BlcnR5KShVKX1gKTtRLmlmKEw5Ll9gdHlwZW9mICR7cX0gPT0gXCJzdHJpbmdcImAsKCk9PlYoKSwoKT0+JC5lcnJvcighMSx7ZGlzY3JFcnJvcjpHei5EaXNjckVycm9yLlRhZyx0YWc6cSx0YWdOYW1lOlV9KSksJC5vayhIKTtmdW5jdGlvbiBWKCl7bGV0IE49eigpO1EuaWYoITEpO2ZvcihsZXQgdyBpbiBOKVEuZWxzZUlmKEw5Ll9gJHtxfSA9PT0gJHt3fWApLFEuYXNzaWduKEgsQihOW3ddKSk7US5lbHNlKCksJC5lcnJvcighMSx7ZGlzY3JFcnJvcjpHei5EaXNjckVycm9yLk1hcHBpbmcsdGFnOnEsdGFnTmFtZTpVfSksUS5lbmRJZigpfWZ1bmN0aW9uIEIoTil7bGV0IHc9US5uYW1lKFwidmFsaWRcIiksTz0kLnN1YnNjaGVtYSh7a2V5d29yZDpcIm9uZU9mXCIsc2NoZW1hUHJvcDpOfSx3KTtyZXR1cm4gJC5tZXJnZUV2YWx1YXRlZChPLEw5Lk5hbWUpLHd9ZnVuY3Rpb24geigpe3ZhciBOO2xldCB3PXt9LE89TShYKSxEPSEwO2ZvcihsZXQgaz0wO2s8Ry5sZW5ndGg7aysrKXtsZXQgdT1HW2tdO2lmKCh1PT09bnVsbHx8dT09PXZvaWQgMD92b2lkIDA6dS4kcmVmKSYmISgwLGxhLnNjaGVtYUhhc1J1bGVzQnV0UmVmKSh1LFcuc2VsZi5SVUxFUykpe2xldCBoJD11LiRyZWY7aWYodT1JUC5yZXNvbHZlUmVmLmNhbGwoVy5zZWxmLFcuc2NoZW1hRW52LnJvb3QsVy5iYXNlSWQsaCQpLHUgaW5zdGFuY2VvZiBJUC5TY2hlbWFFbnYpdT11LnNjaGVtYTtpZih1PT09dm9pZCAwKXRocm93IG5ldyBtYS5kZWZhdWx0KFcub3B0cy51cmlSZXNvbHZlcixXLmJhc2VJZCxoJCl9bGV0IEckPShOPXU9PT1udWxsfHx1PT09dm9pZCAwP3ZvaWQgMDp1LnByb3BlcnRpZXMpPT09bnVsbHx8Tj09PXZvaWQgMD92b2lkIDA6TltVXTtpZih0eXBlb2YgRyQhPVwib2JqZWN0XCIpdGhyb3cgRXJyb3IoYGRpc2NyaW1pbmF0b3I6IG9uZU9mIHN1YnNjaGVtYXMgKG9yIHJlZmVyZW5jZWQgc2NoZW1hcykgbXVzdCBoYXZlIFwicHJvcGVydGllcy8ke1V9XCJgKTtEPUQmJihPfHxNKHUpKSxqKEckLGspfWlmKCFEKXRocm93IEVycm9yKGBkaXNjcmltaW5hdG9yOiBcIiR7VX1cIiBtdXN0IGJlIHJlcXVpcmVkYCk7cmV0dXJuIHc7ZnVuY3Rpb24gTSh7cmVxdWlyZWQ6a30pe3JldHVybiBBcnJheS5pc0FycmF5KGspJiZrLmluY2x1ZGVzKFUpfWZ1bmN0aW9uIGooayx1KXtpZihrLmNvbnN0KUEoay5jb25zdCx1KTtlbHNlIGlmKGsuZW51bSlmb3IobGV0IEckIG9mIGsuZW51bSlBKEckLHUpO2Vsc2UgdGhyb3cgRXJyb3IoYGRpc2NyaW1pbmF0b3I6IFwicHJvcGVydGllcy8ke1V9XCIgbXVzdCBoYXZlIFwiY29uc3RcIiBvciBcImVudW1cImApfWZ1bmN0aW9uIEEoayx1KXtpZih0eXBlb2YgayE9XCJzdHJpbmdcInx8ayBpbiB3KXRocm93IEVycm9yKGBkaXNjcmltaW5hdG9yOiBcIiR7VX1cIiB2YWx1ZXMgbXVzdCBiZSB1bmlxdWUgc3RyaW5nc2ApO3dba109dX19fX07UlAuZGVmYXVsdD1wYX0pO3ZhciBFUD1JKChLTyQsaWEpPT57aWEuZXhwb3J0cz17JHNjaGVtYTpcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiLCRpZDpcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiLHRpdGxlOlwiQ29yZSBzY2hlbWEgbWV0YS1zY2hlbWFcIixkZWZpbml0aW9uczp7c2NoZW1hQXJyYXk6e3R5cGU6XCJhcnJheVwiLG1pbkl0ZW1zOjEsaXRlbXM6eyRyZWY6XCIjXCJ9fSxub25OZWdhdGl2ZUludGVnZXI6e3R5cGU6XCJpbnRlZ2VyXCIsbWluaW11bTowfSxub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MDp7YWxsT2Y6W3skcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0se2RlZmF1bHQ6MH1dfSxzaW1wbGVUeXBlczp7ZW51bTpbXCJhcnJheVwiLFwiYm9vbGVhblwiLFwiaW50ZWdlclwiLFwibnVsbFwiLFwibnVtYmVyXCIsXCJvYmplY3RcIixcInN0cmluZ1wiXX0sc3RyaW5nQXJyYXk6e3R5cGU6XCJhcnJheVwiLGl0ZW1zOnt0eXBlOlwic3RyaW5nXCJ9LHVuaXF1ZUl0ZW1zOiEwLGRlZmF1bHQ6W119fSx0eXBlOltcIm9iamVjdFwiLFwiYm9vbGVhblwiXSxwcm9wZXJ0aWVzOnskaWQ6e3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1cmktcmVmZXJlbmNlXCJ9LCRzY2hlbWE6e3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1cmlcIn0sJHJlZjp7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInVyaS1yZWZlcmVuY2VcIn0sJGNvbW1lbnQ6e3R5cGU6XCJzdHJpbmdcIn0sdGl0bGU6e3R5cGU6XCJzdHJpbmdcIn0sZGVzY3JpcHRpb246e3R5cGU6XCJzdHJpbmdcIn0sZGVmYXVsdDohMCxyZWFkT25seTp7dHlwZTpcImJvb2xlYW5cIixkZWZhdWx0OiExfSxleGFtcGxlczp7dHlwZTpcImFycmF5XCIsaXRlbXM6ITB9LG11bHRpcGxlT2Y6e3R5cGU6XCJudW1iZXJcIixleGNsdXNpdmVNaW5pbXVtOjB9LG1heGltdW06e3R5cGU6XCJudW1iZXJcIn0sZXhjbHVzaXZlTWF4aW11bTp7dHlwZTpcIm51bWJlclwifSxtaW5pbXVtOnt0eXBlOlwibnVtYmVyXCJ9LGV4Y2x1c2l2ZU1pbmltdW06e3R5cGU6XCJudW1iZXJcIn0sbWF4TGVuZ3RoOnskcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sbWluTGVuZ3RoOnskcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MFwifSxwYXR0ZXJuOnt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwicmVnZXhcIn0sYWRkaXRpb25hbEl0ZW1zOnskcmVmOlwiI1wifSxpdGVtczp7YW55T2Y6W3skcmVmOlwiI1wifSx7JHJlZjpcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIn1dLGRlZmF1bHQ6ITB9LG1heEl0ZW1zOnskcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sbWluSXRlbXM6eyRyZWY6XCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwXCJ9LHVuaXF1ZUl0ZW1zOnt0eXBlOlwiYm9vbGVhblwiLGRlZmF1bHQ6ITF9LGNvbnRhaW5zOnskcmVmOlwiI1wifSxtYXhQcm9wZXJ0aWVzOnskcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sbWluUHJvcGVydGllczp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyRGVmYXVsdDBcIn0scmVxdWlyZWQ6eyRyZWY6XCIjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5XCJ9LGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnskcmVmOlwiI1wifSxkZWZpbml0aW9uczp7dHlwZTpcIm9iamVjdFwiLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnskcmVmOlwiI1wifSxkZWZhdWx0Ont9fSxwcm9wZXJ0aWVzOnt0eXBlOlwib2JqZWN0XCIsYWRkaXRpb25hbFByb3BlcnRpZXM6eyRyZWY6XCIjXCJ9LGRlZmF1bHQ6e319LHBhdHRlcm5Qcm9wZXJ0aWVzOnt0eXBlOlwib2JqZWN0XCIsYWRkaXRpb25hbFByb3BlcnRpZXM6eyRyZWY6XCIjXCJ9LHByb3BlcnR5TmFtZXM6e2Zvcm1hdDpcInJlZ2V4XCJ9LGRlZmF1bHQ6e319LGRlcGVuZGVuY2llczp7dHlwZTpcIm9iamVjdFwiLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnthbnlPZjpbeyRyZWY6XCIjXCJ9LHskcmVmOlwiIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwifV19fSxwcm9wZXJ0eU5hbWVzOnskcmVmOlwiI1wifSxjb25zdDohMCxlbnVtOnt0eXBlOlwiYXJyYXlcIixpdGVtczohMCxtaW5JdGVtczoxLHVuaXF1ZUl0ZW1zOiEwfSx0eXBlOnthbnlPZjpbeyRyZWY6XCIjL2RlZmluaXRpb25zL3NpbXBsZVR5cGVzXCJ9LHt0eXBlOlwiYXJyYXlcIixpdGVtczp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXNcIn0sbWluSXRlbXM6MSx1bmlxdWVJdGVtczohMH1dfSxmb3JtYXQ6e3R5cGU6XCJzdHJpbmdcIn0sY29udGVudE1lZGlhVHlwZTp7dHlwZTpcInN0cmluZ1wifSxjb250ZW50RW5jb2Rpbmc6e3R5cGU6XCJzdHJpbmdcIn0saWY6eyRyZWY6XCIjXCJ9LHRoZW46eyRyZWY6XCIjXCJ9LGVsc2U6eyRyZWY6XCIjXCJ9LGFsbE9mOnskcmVmOlwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwifSxhbnlPZjp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIn0sb25lT2Y6eyRyZWY6XCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9LG5vdDp7JHJlZjpcIiNcIn19LGRlZmF1bHQ6ITB9fSk7dmFyIEh6PUkoKGI2LFV6KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtiNi5NaXNzaW5nUmVmRXJyb3I9YjYuVmFsaWRhdGlvbkVycm9yPWI2LkNvZGVHZW49YjYuTmFtZT1iNi5uaWw9YjYuc3RyaW5naWZ5PWI2LnN0cj1iNi5fPWI2LktleXdvcmRDeHQ9YjYuQWp2PXZvaWQgMDt2YXIgbmE9a0koKSxyYT1aUCgpLG9hPVBQKCksYlA9RVAoKSx0YT1bXCIvcHJvcGVydGllc1wiXSwkRz1cImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hXCI7Y2xhc3MgckogZXh0ZW5kcyBuYS5kZWZhdWx0e19hZGRWb2NhYnVsYXJpZXMoKXtpZihzdXBlci5fYWRkVm9jYWJ1bGFyaWVzKCkscmEuZGVmYXVsdC5mb3JFYWNoKCgkKT0+dGhpcy5hZGRWb2NhYnVsYXJ5KCQpKSx0aGlzLm9wdHMuZGlzY3JpbWluYXRvcil0aGlzLmFkZEtleXdvcmQob2EuZGVmYXVsdCl9X2FkZERlZmF1bHRNZXRhU2NoZW1hKCl7aWYoc3VwZXIuX2FkZERlZmF1bHRNZXRhU2NoZW1hKCksIXRoaXMub3B0cy5tZXRhKXJldHVybjtsZXQgJD10aGlzLm9wdHMuJGRhdGE/dGhpcy4kZGF0YU1ldGFTY2hlbWEoYlAsdGEpOmJQO3RoaXMuYWRkTWV0YVNjaGVtYSgkLCRHLCExKSx0aGlzLnJlZnNbXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYVwiXT0kR31kZWZhdWx0TWV0YSgpe3JldHVybiB0aGlzLm9wdHMuZGVmYXVsdE1ldGE9c3VwZXIuZGVmYXVsdE1ldGEoKXx8KHRoaXMuZ2V0U2NoZW1hKCRHKT8kRzp2b2lkIDApfX1iNi5BanY9cko7VXouZXhwb3J0cz1iNj1ySjtVei5leHBvcnRzLkFqdj1ySjtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7YjYuZGVmYXVsdD1ySjt2YXIgYWE9eEooKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJLZXl3b3JkQ3h0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFhLktleXdvcmRDeHR9fSk7dmFyIGo5PVEkKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiX1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBqOS5ffX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcInN0clwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBqOS5zdHJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwic3RyaW5naWZ5XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGo5LnN0cmluZ2lmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJuaWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gajkubmlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcIk5hbWVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gajkuTmFtZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJDb2RlR2VuXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGo5LkNvZGVHZW59fSk7dmFyIHNhPVRXKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiVmFsaWRhdGlvbkVycm9yXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNhLmRlZmF1bHR9fSk7dmFyIGVhPWZKKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiTWlzc2luZ1JlZkVycm9yXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVhLmRlZmF1bHR9fSl9KTt2YXIgZ1A9SSgoZlApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGZQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2ZQLmZvcm1hdE5hbWVzPWZQLmZhc3RGb3JtYXRzPWZQLmZ1bGxGb3JtYXRzPXZvaWQgMDtmdW5jdGlvbiBrNCgkLFEpe3JldHVybnt2YWxpZGF0ZTokLGNvbXBhcmU6UX19ZlAuZnVsbEZvcm1hdHM9e2RhdGU6azQodlAsQnopLHRpbWU6azQocXooITApLHp6KSxcImRhdGUtdGltZVwiOms0KF9QKCEwKSxUUCksXCJpc28tdGltZVwiOms0KHF6KCksQ1ApLFwiaXNvLWRhdGUtdGltZVwiOms0KF9QKCkseFApLGR1cmF0aW9uOi9eUCg/ISQpKChcXGQrWSk/KFxcZCtNKT8oXFxkK0QpPyhUKD89XFxkKShcXGQrSCk/KFxcZCtNKT8oXFxkK1MpPyk/fChcXGQrVyk/KSQvLHVyaTpVcyxcInVyaS1yZWZlcmVuY2VcIjovXig/OlthLXpdW2EtejAtOStcXC0uXSo6KT8oPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSp8XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT8oPzpcXD8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pLFwidXJpLXRlbXBsYXRlXCI6L14oPzooPzpbXlxceDAwLVxceDIwXCInPD4lXFxcXF5ge3x9XXwlWzAtOWEtZl17Mn0pfFxce1srIy4vOz8mPSwhQHxdPyg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8oPzosKD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPykqXFx9KSokL2ksdXJsOi9eKD86aHR0cHM/fGZ0cCk6XFwvXFwvKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyEoPzoxMHwxMjcpKD86XFwuXFxkezEsM30pezN9KSg/ISg/OjE2OVxcLjI1NHwxOTJcXC4xNjgpKD86XFwuXFxkezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyXFxkfDNbMC0xXSkoPzpcXC5cXGR7MSwzfSl7Mn0pKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswMV1cXGR8MjJbMC0zXSkoPzpcXC4oPzoxP1xcZHsxLDJ9fDJbMC00XVxcZHwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVxcZD98MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSstKSpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rKSg/OlxcLig/OlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSstKSpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rKSooPzpcXC4oPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfV17Mix9KSkpKD86OlxcZHsyLDV9KT8oPzpcXC9bXlxcc10qKT8kL2l1LGVtYWlsOi9eW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/JC9pLGhvc3RuYW1lOi9eKD89LnsxLDI1M31cXC4/JClbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlstMC05YS16XXswLDYxfVswLTlhLXpdKT8pKlxcLj8kL2ksaXB2NDovXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkkLyxpcHY2Oi9eKCgoWzAtOWEtZl17MSw0fTopezd9KFswLTlhLWZdezEsNH18OikpfCgoWzAtOWEtZl17MSw0fTopezZ9KDpbMC05YS1mXXsxLDR9fCgoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KChbMC05YS1mXXsxLDR9Oil7NX0oKCg6WzAtOWEtZl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KChbMC05YS1mXXsxLDR9Oil7NH0oKCg6WzAtOWEtZl17MSw0fSl7MSwzfSl8KCg6WzAtOWEtZl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCgoWzAtOWEtZl17MSw0fTopezN9KCgoOlswLTlhLWZdezEsNH0pezEsNH0pfCgoOlswLTlhLWZdezEsNH0pezAsMn06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KChbMC05YS1mXXsxLDR9Oil7Mn0oKCg6WzAtOWEtZl17MSw0fSl7MSw1fSl8KCg6WzAtOWEtZl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoKFswLTlhLWZdezEsNH06KXsxfSgoKDpbMC05YS1mXXsxLDR9KXsxLDZ9KXwoKDpbMC05YS1mXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCg6KCgoOlswLTlhLWZdezEsNH0pezEsN30pfCgoOlswLTlhLWZdezEsNH0pezAsNX06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSkpJC9pLHJlZ2V4Ok5zLHV1aWQ6L14oPzp1cm46dXVpZDopP1swLTlhLWZdezh9LSg/OlswLTlhLWZdezR9LSl7M31bMC05YS1mXXsxMn0kL2ksXCJqc29uLXBvaW50ZXJcIjovXig/OlxcLyg/Oltefi9dfH4wfH4xKSopKiQvLFwianNvbi1wb2ludGVyLXVyaS1mcmFnbWVudFwiOi9eIyg/OlxcLyg/OlthLXowLTlfXFwtLiEkJicoKSorLDs6PUBdfCVbMC05YS1mXXsyfXx+MHx+MSkqKSokL2ksXCJyZWxhdGl2ZS1qc29uLXBvaW50ZXJcIjovXig/OjB8WzEtOV1bMC05XSopKD86I3woPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSopJC8sYnl0ZTpIcyxpbnQzMjp7dHlwZTpcIm51bWJlclwiLHZhbGlkYXRlOlZzfSxpbnQ2NDp7dHlwZTpcIm51bWJlclwiLHZhbGlkYXRlOkJzfSxmbG9hdDp7dHlwZTpcIm51bWJlclwiLHZhbGlkYXRlOmtQfSxkb3VibGU6e3R5cGU6XCJudW1iZXJcIix2YWxpZGF0ZTprUH0scGFzc3dvcmQ6ITAsYmluYXJ5OiEwfTtmUC5mYXN0Rm9ybWF0cz17Li4uZlAuZnVsbEZvcm1hdHMsZGF0ZTprNCgvXlxcZFxcZFxcZFxcZC1bMC0xXVxcZC1bMC0zXVxcZCQvLEJ6KSx0aW1lOms0KC9eKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPykkL2ksenopLFwiZGF0ZS10aW1lXCI6azQoL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGR0KD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPykkL2ksVFApLFwiaXNvLXRpbWVcIjprNCgvXig/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pPyQvaSxDUCksXCJpc28tZGF0ZS10aW1lXCI6azQoL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGRbdFxcc10oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KT8kL2kseFApLHVyaTovXig/OlthLXpdW2EtejAtOStcXC0uXSo6KSg/OlxcLz9cXC8pP1teXFxzXSokL2ksXCJ1cmktcmVmZXJlbmNlXCI6L14oPzooPzpbYS16XVthLXowLTkrXFwtLl0qOik/XFwvP1xcLyk/KD86W15cXFxcXFxzI11bXlxccyNdKik/KD86I1teXFxcXFxcc10qKT8kL2ksZW1haWw6L15bYS16MC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaX07ZlAuZm9ybWF0TmFtZXM9T2JqZWN0LmtleXMoZlAuZnVsbEZvcm1hdHMpO2Z1bmN0aW9uIEpzKCQpe3JldHVybiAkJTQ9PT0wJiYoJCUxMDAhPT0wfHwkJTQwMD09PTApfXZhciBYcz0vXihcXGRcXGRcXGRcXGQpLShcXGRcXGQpLShcXGRcXGQpJC8sWXM9WzAsMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIHZQKCQpe2xldCBRPVhzLmV4ZWMoJCk7aWYoIVEpcmV0dXJuITE7bGV0IEo9K1FbMV0sWT0rUVsyXSxYPStRWzNdO3JldHVybiBZPj0xJiZZPD0xMiYmWD49MSYmWDw9KFk9PT0yJiZKcyhKKT8yOTpZc1tZXSl9ZnVuY3Rpb24gQnooJCxRKXtpZighKCQmJlEpKXJldHVybjtpZigkPlEpcmV0dXJuIDE7aWYoJDxRKXJldHVybi0xO3JldHVybiAwfXZhciBLej0vXihcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQoPzpcXC5cXGQrKT8pKHp8KFsrLV0pKFxcZFxcZCkoPzo6PyhcXGRcXGQpKT8pPyQvaTtmdW5jdGlvbiBxeigkKXtyZXR1cm4gZnVuY3Rpb24oSil7bGV0IFk9S3ouZXhlYyhKKTtpZighWSlyZXR1cm4hMTtsZXQgWD0rWVsxXSxXPStZWzJdLEc9K1lbM10sVT1ZWzRdLEg9WVs1XT09PVwiLVwiPy0xOjEscT0rKFlbNl18fDApLFY9KyhZWzddfHwwKTtpZihxPjIzfHxWPjU5fHwkJiYhVSlyZXR1cm4hMTtpZihYPD0yMyYmVzw9NTkmJkc8NjApcmV0dXJuITA7bGV0IEI9Vy1WKkgsej1YLXEqSC0oQjwwPzE6MCk7cmV0dXJuKHo9PT0yM3x8ej09PS0xKSYmKEI9PT01OXx8Qj09PS0xKSYmRzw2MX19ZnVuY3Rpb24genooJCxRKXtpZighKCQmJlEpKXJldHVybjtsZXQgSj1uZXcgRGF0ZShcIjIwMjAtMDEtMDFUXCIrJCkudmFsdWVPZigpLFk9bmV3IERhdGUoXCIyMDIwLTAxLTAxVFwiK1EpLnZhbHVlT2YoKTtpZighKEomJlkpKXJldHVybjtyZXR1cm4gSi1ZfWZ1bmN0aW9uIENQKCQsUSl7aWYoISgkJiZRKSlyZXR1cm47bGV0IEo9S3ouZXhlYygkKSxZPUt6LmV4ZWMoUSk7aWYoIShKJiZZKSlyZXR1cm47aWYoJD1KWzFdK0pbMl0rSlszXSxRPVlbMV0rWVsyXStZWzNdLCQ+USlyZXR1cm4gMTtpZigkPFEpcmV0dXJuLTE7cmV0dXJuIDB9dmFyIFZ6PS90fFxccy9pO2Z1bmN0aW9uIF9QKCQpe2xldCBRPXF6KCQpO3JldHVybiBmdW5jdGlvbihZKXtsZXQgWD1ZLnNwbGl0KFZ6KTtyZXR1cm4gWC5sZW5ndGg9PT0yJiZ2UChYWzBdKSYmUShYWzFdKX19ZnVuY3Rpb24gVFAoJCxRKXtpZighKCQmJlEpKXJldHVybjtsZXQgSj1uZXcgRGF0ZSgkKS52YWx1ZU9mKCksWT1uZXcgRGF0ZShRKS52YWx1ZU9mKCk7aWYoIShKJiZZKSlyZXR1cm47cmV0dXJuIEotWX1mdW5jdGlvbiB4UCgkLFEpe2lmKCEoJCYmUSkpcmV0dXJuO2xldFtKLFldPSQuc3BsaXQoVnopLFtYLFddPVEuc3BsaXQoVnopLEc9QnooSixYKTtpZihHPT09dm9pZCAwKXJldHVybjtyZXR1cm4gR3x8enooWSxXKX12YXIgV3M9L1xcL3w6LyxHcz0vXig/OlthLXpdW2EtejAtOStcXC0uXSo6KSg/OlxcLz9cXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06XXwlWzAtOWEtZl17Mn0pKkApPyg/OlxcWyg/Oig/Oig/Oig/OlswLTlhLWZdezEsNH06KXs2fXw6Oig/OlswLTlhLWZdezEsNH06KXs1fXwoPzpbMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXs0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwxfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezN9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDJ9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7Mn18KD86KD86WzAtOWEtZl17MSw0fTopezAsM31bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH06fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDR9WzAtOWEtZl17MSw0fSk/OjopKD86WzAtOWEtZl17MSw0fTpbMC05YS1mXXsxLDR9fCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl8KD86KD86WzAtOWEtZl17MSw0fTopezAsNX1bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH18KD86KD86WzAtOWEtZl17MSw0fTopezAsNn1bMC05YS1mXXsxLDR9KT86Oil8W1Z2XVswLTlhLWZdK1xcLlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdKylcXF18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pfCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqfFxcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopKD86XFw/KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyg/OiMoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pO2Z1bmN0aW9uIFVzKCQpe3JldHVybiBXcy50ZXN0KCQpJiZHcy50ZXN0KCQpfXZhciBTUD0vXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC9nbTtmdW5jdGlvbiBIcygkKXtyZXR1cm4gU1AubGFzdEluZGV4PTAsU1AudGVzdCgkKX12YXIgS3M9LTIxNDc0ODM2NDgscXM9MjE0NzQ4MzY0NztmdW5jdGlvbiBWcygkKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcigkKSYmJDw9cXMmJiQ+PUtzfWZ1bmN0aW9uIEJzKCQpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKCQpfWZ1bmN0aW9uIGtQKCl7cmV0dXJuITB9dmFyIHpzPS9bXlxcXFxdXFxcXFovO2Z1bmN0aW9uIE5zKCQpe2lmKHpzLnRlc3QoJCkpcmV0dXJuITE7dHJ5e3JldHVybiBuZXcgUmVnRXhwKCQpLCEwfWNhdGNoKFEpe3JldHVybiExfX19KTt2YXIgdVA9SSgoaFApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGhQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2hQLmZvcm1hdExpbWl0RGVmaW5pdGlvbj12b2lkIDA7dmFyIE9zPUh6KCksRjQ9USQoKSxsMT1GNC5vcGVyYXRvcnMsUUc9e2Zvcm1hdE1heGltdW06e29rU3RyOlwiPD1cIixvazpsMS5MVEUsZmFpbDpsMS5HVH0sZm9ybWF0TWluaW11bTp7b2tTdHI6XCI+PVwiLG9rOmwxLkdURSxmYWlsOmwxLkxUfSxmb3JtYXRFeGNsdXNpdmVNYXhpbXVtOntva1N0cjpcIjxcIixvazpsMS5MVCxmYWlsOmwxLkdURX0sZm9ybWF0RXhjbHVzaXZlTWluaW11bTp7b2tTdHI6XCI+XCIsb2s6bDEuR1QsZmFpbDpsMS5MVEV9fSxEcz17bWVzc2FnZTooe2tleXdvcmQ6JCxzY2hlbWFDb2RlOlF9KT0+RjQuc3RyYHNob3VsZCBiZSAke1FHWyRdLm9rU3RyfSAke1F9YCxwYXJhbXM6KHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSk9PkY0Ll9ge2NvbXBhcmlzb246ICR7UUdbJF0ub2tTdHJ9LCBsaW1pdDogJHtRfX1gfTtoUC5mb3JtYXRMaW1pdERlZmluaXRpb249e2tleXdvcmQ6T2JqZWN0LmtleXMoUUcpLHR5cGU6XCJzdHJpbmdcIixzY2hlbWFUeXBlOlwic3RyaW5nXCIsJGRhdGE6ITAsZXJyb3I6RHMsY29kZSgkKXtsZXR7Z2VuOlEsZGF0YTpKLHNjaGVtYUNvZGU6WSxrZXl3b3JkOlgsaXQ6V309JCx7b3B0czpHLHNlbGY6VX09VztpZighRy52YWxpZGF0ZUZvcm1hdHMpcmV0dXJuO2xldCBIPW5ldyBPcy5LZXl3b3JkQ3h0KFcsVS5SVUxFUy5hbGwuZm9ybWF0LmRlZmluaXRpb24sXCJmb3JtYXRcIik7aWYoSC4kZGF0YSlxKCk7ZWxzZSBWKCk7ZnVuY3Rpb24gcSgpe2xldCB6PVEuc2NvcGVWYWx1ZShcImZvcm1hdHNcIix7cmVmOlUuZm9ybWF0cyxjb2RlOkcuY29kZS5mb3JtYXRzfSksTj1RLmNvbnN0KFwiZm10XCIsRjQuX2Ake3p9WyR7SC5zY2hlbWFDb2RlfV1gKTskLmZhaWwkZGF0YSgoMCxGNC5vcikoRjQuX2B0eXBlb2YgJHtOfSAhPSBcIm9iamVjdFwiYCxGNC5fYCR7Tn0gaW5zdGFuY2VvZiBSZWdFeHBgLEY0Ll9gdHlwZW9mICR7Tn0uY29tcGFyZSAhPSBcImZ1bmN0aW9uXCJgLEIoTikpKX1mdW5jdGlvbiBWKCl7bGV0IHo9SC5zY2hlbWEsTj1VLmZvcm1hdHNbel07aWYoIU58fE49PT0hMClyZXR1cm47aWYodHlwZW9mIE4hPVwib2JqZWN0XCJ8fE4gaW5zdGFuY2VvZiBSZWdFeHB8fHR5cGVvZiBOLmNvbXBhcmUhPVwiZnVuY3Rpb25cIil0aHJvdyBFcnJvcihgXCIke1h9XCI6IGZvcm1hdCBcIiR7en1cIiBkb2VzIG5vdCBkZWZpbmUgXCJjb21wYXJlXCIgZnVuY3Rpb25gKTtsZXQgdz1RLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIse2tleTp6LHJlZjpOLGNvZGU6Ry5jb2RlLmZvcm1hdHM/RjQuX2Ake0cuY29kZS5mb3JtYXRzfSR7KDAsRjQuZ2V0UHJvcGVydHkpKHopfWA6dm9pZCAwfSk7JC5mYWlsJGRhdGEoQih3KSl9ZnVuY3Rpb24gQih6KXtyZXR1cm4gRjQuX2Ake3p9LmNvbXBhcmUoJHtKfSwgJHtZfSkgJHtRR1tYXS5mYWlsfSAwYH19LGRlcGVuZGVuY2llczpbXCJmb3JtYXRcIl19O3ZhciBGcz0oJCk9PntyZXR1cm4gJC5hZGRLZXl3b3JkKGhQLmZvcm1hdExpbWl0RGVmaW5pdGlvbiksJH07aFAuZGVmYXVsdD1Gc30pO3ZhciBwUD1JKChvSixjUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkob0osXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIEE5PWdQKCksTXM9dVAoKSxPej1RJCgpLG1QPW5ldyBPei5OYW1lKFwiZnVsbEZvcm1hdHNcIiksTHM9bmV3IE96Lk5hbWUoXCJmYXN0Rm9ybWF0c1wiKSxEej0oJCxRPXtrZXl3b3JkczohMH0pPT57aWYoQXJyYXkuaXNBcnJheShRKSlyZXR1cm4gbFAoJCxRLEE5LmZ1bGxGb3JtYXRzLG1QKSwkO2xldFtKLFldPVEubW9kZT09PVwiZmFzdFwiP1tBOS5mYXN0Rm9ybWF0cyxMc106W0E5LmZ1bGxGb3JtYXRzLG1QXSxYPVEuZm9ybWF0c3x8QTkuZm9ybWF0TmFtZXM7aWYobFAoJCxYLEosWSksUS5rZXl3b3JkcykoMCxNcy5kZWZhdWx0KSgkKTtyZXR1cm4gJH07RHouZ2V0PSgkLFE9XCJmdWxsXCIpPT57bGV0IFk9KFE9PT1cImZhc3RcIj9BOS5mYXN0Rm9ybWF0czpBOS5mdWxsRm9ybWF0cylbJF07aWYoIVkpdGhyb3cgRXJyb3IoYFVua25vd24gZm9ybWF0IFwiJHskfVwiYCk7cmV0dXJuIFl9O2Z1bmN0aW9uIGxQKCQsUSxKLFkpe3ZhciBYLFc7KFg9KFc9JC5vcHRzLmNvZGUpLmZvcm1hdHMpIT09bnVsbCYmWCE9PXZvaWQgMHx8KFcuZm9ybWF0cz1Pei5fYHJlcXVpcmUoXCJhanYtZm9ybWF0cy9kaXN0L2Zvcm1hdHNcIikuJHtZfWApO2ZvcihsZXQgRyBvZiBRKSQuYWRkRm9ybWF0KEcsSltHXSl9Y1AuZXhwb3J0cz1vSj1EejtPYmplY3QuZGVmaW5lUHJvcGVydHkob0osXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7b0ouZGVmYXVsdD1Een0pO2ltcG9ydHtleGVjRmlsZSBhcyBFNiR9ZnJvbVwiY2hpbGRfcHJvY2Vzc1wiO2ltcG9ydHtyYW5kb21VVUlEIGFzIHJ6fWZyb21cImNyeXB0b1wiO2ltcG9ydHtjcmVhdGVSZWFkU3RyZWFtIGFzIGI2JCxyZWFscGF0aFN5bmMgYXMgXzYkfWZyb21cImZzXCI7aW1wb3J0e2NvcHlGaWxlIGFzIFM2JCxta2RpciBhcyBweixyZWFkZGlyIGFzIGs2JCxyZWFkRmlsZSBhcyBNXyxybSBhcyB2NiQsd3JpdGVGaWxlIGFzIExffWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2NyZWF0ZVJlcXVpcmUgYXMgQzYkfWZyb21cIm1vZHVsZVwiO2ltcG9ydHtob21lZGlyIGFzIGR6LHRtcGRpciBhcyBUNiR9ZnJvbVwib3NcIjtpbXBvcnR7ZGlybmFtZSBhcyB3Xyxpc0Fic29sdXRlIGFzIGpfLGpvaW4gYXMgaDYscmVsYXRpdmUgYXMgQV8scmVzb2x2ZSBhcyBxWCxzZXAgYXMgb3p9ZnJvbVwicGF0aFwiO2ltcG9ydHtjcmVhdGVJbnRlcmZhY2UgYXMgeDYkfWZyb21cInJlYWRsaW5lXCI7aW1wb3J0e2ZpbGVVUkxUb1BhdGggYXMgZjYkfWZyb21cInVybFwiO2ltcG9ydHtzZXRNYXhMaXN0ZW5lcnMgYXMgWFN9ZnJvbVwiZXZlbnRzXCI7dmFyIFlTPTUwO2Z1bmN0aW9uIGEwKCQ9WVMpe2xldCBRPW5ldyBBYm9ydENvbnRyb2xsZXI7cmV0dXJuIFhTKCQsUS5zaWduYWwpLFF9ZnVuY3Rpb24gelgoJCxRLEope3JldHVybiBuZXcgUHJvbWlzZSgoWSxYKT0+e2lmKFE/LmFib3J0ZWQpe2lmKEo/LnRocm93T25BYm9ydHx8Sj8uYWJvcnRFcnJvcilYKEouYWJvcnRFcnJvcj8uKCk/P0Vycm9yKFwiYWJvcnRlZFwiKSk7ZWxzZSBZKCk7cmV0dXJufWxldCBXPXNldFRpbWVvdXQoKFUsSCxxKT0+e1U/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLEgpLHEoKX0sJCxRLEcsWSk7ZnVuY3Rpb24gRygpe2lmKGNsZWFyVGltZW91dChXKSxKPy50aHJvd09uQWJvcnR8fEo/LmFib3J0RXJyb3IpWChKLmFib3J0RXJyb3I/LigpPz9FcnJvcihcImFib3J0ZWRcIikpO2Vsc2UgWSgpfWlmKFE/LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLEcse29uY2U6ITB9KSxKPy51bnJlZilXLnVucmVmKCl9KX1mdW5jdGlvbiBXUygkLFEpeyQoRXJyb3IoUSkpfWZ1bmN0aW9uIFQ0KCQsUSxKKXtsZXQgWSxYPW5ldyBQcm9taXNlKChXLEcpPT57aWYoWT1zZXRUaW1lb3V0KFdTLFEsRyxKKSx0eXBlb2YgWT09PVwib2JqZWN0XCIpWS51bnJlZj8uKCl9KTtyZXR1cm4gUHJvbWlzZS5yYWNlKFskLFhdKS5maW5hbGx5KCgpPT57aWYoWSE9PXZvaWQgMCljbGVhclRpbWVvdXQoWSl9KX1pbXBvcnR7c3Bhd24gYXMgQnh9ZnJvbVwiY2hpbGRfcHJvY2Vzc1wiO2ltcG9ydHtleGlzdHNTeW5jIGFzIHp4fWZyb21cImZzXCI7aW1wb3J0e2NyZWF0ZUludGVyZmFjZSBhcyBOeH1mcm9tXCJyZWFkbGluZVwiO3ZhciBzMD1bXCJQcmVUb29sVXNlXCIsXCJQb3N0VG9vbFVzZVwiLFwiUG9zdFRvb2xVc2VGYWlsdXJlXCIsXCJQb3N0VG9vbEJhdGNoXCIsXCJOb3RpZmljYXRpb25cIixcIlVzZXJQcm9tcHRTdWJtaXRcIixcIlVzZXJQcm9tcHRFeHBhbnNpb25cIixcIlNlc3Npb25TdGFydFwiLFwiU2Vzc2lvbkVuZFwiLFwiU3RvcFwiLFwiU3RvcEZhaWx1cmVcIixcIlN1YmFnZW50U3RhcnRcIixcIlN1YmFnZW50U3RvcFwiLFwiUHJlQ29tcGFjdFwiLFwiUG9zdENvbXBhY3RcIixcIlBlcm1pc3Npb25SZXF1ZXN0XCIsXCJQZXJtaXNzaW9uRGVuaWVkXCIsXCJTZXR1cFwiLFwiVGVhbW1hdGVJZGxlXCIsXCJUYXNrQ3JlYXRlZFwiLFwiVGFza0NvbXBsZXRlZFwiLFwiRWxpY2l0YXRpb25cIixcIkVsaWNpdGF0aW9uUmVzdWx0XCIsXCJDb25maWdDaGFuZ2VcIixcIldvcmt0cmVlQ3JlYXRlXCIsXCJXb3JrdHJlZVJlbW92ZVwiLFwiSW5zdHJ1Y3Rpb25zTG9hZGVkXCIsXCJDd2RDaGFuZ2VkXCIsXCJGaWxlQ2hhbmdlZFwiXSxHUz1bXCJjbGVhclwiLFwicmVzdW1lXCIsXCJsb2dvdXRcIixcInByb21wdF9pbnB1dF9leGl0XCIsXCJvdGhlclwiLFwiYnlwYXNzX3Blcm1pc3Npb25zX2Rpc2FibGVkXCJdLFVTPVwiX19TWVNURU1fUFJPTVBUX0RZTkFNSUNfQk9VTkRBUllfX1wiO3ZhciBIUz0vXig/Olxccyo8W2Etel1bXFx3LV0qW1xccz5dfFxcW1JlcXVlc3QgaW50ZXJydXB0ZWQgYnkgdXNlclteXFxdXSpcXF0pLyxLUz0vPGNvbW1hbmQtbmFtZT4oLio/KTxcXC9jb21tYW5kLW5hbWU+LztmdW5jdGlvbiB5OSgkLFEpe2lmKCQudHlwZSE9PVwidXNlclwiKXJldHVybjtpZigkLmlzTWV0YT09PSEwfHwkLmlzQ29tcGFjdFN1bW1hcnk9PT0hMClyZXR1cm47bGV0IEo9JC5tZXNzYWdlO2lmKCFKKXJldHVybjtsZXQgWT1KLmNvbnRlbnQsWD1bXTtpZih0eXBlb2YgWT09PVwic3RyaW5nXCIpWC5wdXNoKFkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShZKSlmb3IobGV0IFcgb2YgWSl7aWYoIVd8fHR5cGVvZiBXIT09XCJvYmplY3RcIiljb250aW51ZTtpZihXLnR5cGU9PT1cInRvb2xfcmVzdWx0XCIpcmV0dXJuO2lmKFcudHlwZT09PVwidGV4dFwiJiZ0eXBlb2YgVy50ZXh0PT09XCJzdHJpbmdcIilYLnB1c2goVy50ZXh0KX1mb3IobGV0IFcgb2YgWCl7bGV0IEc9Vy5yZXBsYWNlQWxsKGBcbmAsXCIgXCIpLnRyaW0oKTtpZighRyljb250aW51ZTtsZXQgVT1LUy5leGVjKEcpO2lmKFUpe2lmKCFRLmNvbW1hbmRGYWxsYmFjaylRLmNvbW1hbmRGYWxsYmFjaz1VWzFdO2NvbnRpbnVlfWxldCBIPS88YmFzaC1pbnB1dD4oW1xcc1xcU10qPyk8XFwvYmFzaC1pbnB1dD4vLmV4ZWMoRyk7aWYoSClyZXR1cm5gISAke0hbMV0udHJpbSgpfWA7aWYoSFMudGVzdChHKSljb250aW51ZTtpZihHLmxlbmd0aD4yMDApRz1HLnNsaWNlKDAsMjAwKS50cmltKCkrXCJcdTIwMjZcIjtyZXR1cm4gR31yZXR1cm59dmFyIHFTPXtjdXN0b21UaXRsZTpcImN1c3RvbVRpdGxlXCIsYWlUaXRsZTpcImFpVGl0bGVcIixsYXN0UHJvbXB0OlwibGFzdFByb21wdFwiLHN1bW1hcnk6XCJzdW1tYXJ5SGludFwiLGdpdEJyYW5jaDpcImdpdEJyYW5jaFwifTtmdW5jdGlvbiBOWCgkLFEsSixZKXtsZXQgWD1ZPy5tdGltZT8/JD8ubXRpbWU/PzAsVz0kIT09dm9pZCAwP3tzZXNzaW9uSWQ6JC5zZXNzaW9uSWQsbXRpbWU6WCxkYXRhOnsuLi4kLmRhdGF9fTp7c2Vzc2lvbklkOlEuc2Vzc2lvbklkLG10aW1lOlgsZGF0YTp7fX0sRz1XLmRhdGE7Zm9yKGxldCBVIG9mIEope2xldCBIPUJTKFUudGltZXN0YW1wKTtpZihHLmlzU2lkZWNoYWluPT09dm9pZCAwKUcuaXNTaWRlY2hhaW49VS5pc1NpZGVjaGFpbj09PSEwO2lmKEcuY3JlYXRlZEF0PT09dm9pZCAwJiZIIT09dm9pZCAwKUcuY3JlYXRlZEF0PUg7aWYoRy5jd2Q9PT12b2lkIDApe2xldCBxPVUuY3dkO2lmKHR5cGVvZiBxPT09XCJzdHJpbmdcIiYmcSlHLmN3ZD1xfXpTKEcsVSk7Zm9yKGxldFtxLFZdb2YgT2JqZWN0LmVudHJpZXMocVMpKXtsZXQgQj1VW3FdO2lmKHR5cGVvZiBCPT09XCJzdHJpbmdcIilHW1ZdPUJ9aWYoVS50eXBlPT09XCJ0YWdcIil7bGV0IHE9VS50YWc7aWYodHlwZW9mIHE9PT1cInN0cmluZ1wiJiZxKUcudGFnPXE7ZWxzZSBkZWxldGUgRy50YWd9fXJldHVybiBXfWZ1bmN0aW9uIEdOKCQsUSl7bGV0IEo9JC5kYXRhO2lmKEouaXNTaWRlY2hhaW49PT0hMClyZXR1cm4gbnVsbDtsZXQgWT1IMShKLmZpcnN0UHJvbXB0TG9ja2VkPT09ITA/Si5maXJzdFByb21wdDpKLmNvbW1hbmRGYWxsYmFjayl8fHZvaWQgMCxYPUgxKEouY3VzdG9tVGl0bGUpfHxIMShKLmFpVGl0bGUpfHx2b2lkIDAsVz1YfHxIMShKLmxhc3RQcm9tcHQpfHxIMShKLnN1bW1hcnlIaW50KXx8WTtpZighVylyZXR1cm4gbnVsbDtyZXR1cm57c2Vzc2lvbklkOiQuc2Vzc2lvbklkLHN1bW1hcnk6VyxsYXN0TW9kaWZpZWQ6JC5tdGltZSxmaWxlU2l6ZTp2b2lkIDAsY3VzdG9tVGl0bGU6WCxmaXJzdFByb21wdDpZLGdpdEJyYW5jaDpIMShKLmdpdEJyYW5jaCl8fHZvaWQgMCxjd2Q6SDEoSi5jd2QpfHxRfHx2b2lkIDAsdGFnOkgxKEoudGFnKXx8dm9pZCAwLGNyZWF0ZWRBdDpWUyhKLmNyZWF0ZWRBdCl9fWZ1bmN0aW9uIEgxKCQpe3JldHVybiB0eXBlb2YgJD09PVwic3RyaW5nXCI/JDp2b2lkIDB9ZnVuY3Rpb24gVlMoJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJudW1iZXJcIj8kOnZvaWQgMH1mdW5jdGlvbiBCUygkKXtpZih0eXBlb2YgJCE9PVwic3RyaW5nXCIpcmV0dXJuO2xldCBRPURhdGUucGFyc2UoJCk7cmV0dXJuIE51bWJlci5pc05hTihRKT92b2lkIDA6UX1mdW5jdGlvbiB6UygkLFEpe2lmKCQuZmlyc3RQcm9tcHRMb2NrZWQpcmV0dXJuO2xldCBKPXtjb21tYW5kRmFsbGJhY2s6JC5jb21tYW5kRmFsbGJhY2s/P1wiXCJ9LFk9eTkoUSxKKTtpZihKLmNvbW1hbmRGYWxsYmFjayYmISQuY29tbWFuZEZhbGxiYWNrKSQuY29tbWFuZEZhbGxiYWNrPUouY29tbWFuZEZhbGxiYWNrO2lmKFkhPT12b2lkIDApJC5maXJzdFByb21wdD1ZLCQuZmlyc3RQcm9tcHRMb2NrZWQ9ITB9Y2xhc3MgUEd7c3RvcmU9bmV3IE1hcDttdGltZXM9bmV3IE1hcDtzdW1tYXJpZXM9bmV3IE1hcDtsYXN0TXRpbWU9MDtrZXlUb1N0cmluZygkKXtsZXQgUT1bJC5wcm9qZWN0S2V5LCQuc2Vzc2lvbklkXTtpZigkLnN1YnBhdGgpUS5wdXNoKCQuc3VicGF0aCk7cmV0dXJuIFEuam9pbihcIi9cIil9YXN5bmMgYXBwZW5kKCQsUSl7bGV0IEo9dGhpcy5rZXlUb1N0cmluZygkKSxZPXRoaXMuc3RvcmUuZ2V0KEopPz9bXTtZLnB1c2goLi4uUSksdGhpcy5zdG9yZS5zZXQoSixZKTtsZXQgWD1NYXRoLm1heChEYXRlLm5vdygpLHRoaXMubGFzdE10aW1lKzEpO2lmKHRoaXMubGFzdE10aW1lPVgsdGhpcy5tdGltZXMuc2V0KEosWCksJC5zdWJwYXRoPT09dm9pZCAwKXtsZXQgVz1gJHskLnByb2plY3RLZXl9LyR7JC5zZXNzaW9uSWR9YCxHPU5YKHRoaXMuc3VtbWFyaWVzLmdldChXKSwkLFEse210aW1lOlh9KTt0aGlzLnN1bW1hcmllcy5zZXQoVyxHKX19YXN5bmMgbG9hZCgkKXtsZXQgUT10aGlzLmtleVRvU3RyaW5nKCQpO3JldHVybiB0aGlzLnN0b3JlLmdldChRKT8/bnVsbH1hc3luYyBsaXN0U2Vzc2lvbnMoJCl7bGV0IFE9W10sSj0kK1wiL1wiO2ZvcihsZXRbWV1vZiB0aGlzLnN0b3JlKWlmKFkuc3RhcnRzV2l0aChKKSl7bGV0IFg9WS5zbGljZShKLmxlbmd0aCk7aWYoIVguaW5jbHVkZXMoXCIvXCIpKVEucHVzaCh7c2Vzc2lvbklkOlgsbXRpbWU6dGhpcy5tdGltZXMuZ2V0KFkpPz8wfSl9cmV0dXJuIFF9YXN5bmMgbGlzdFNlc3Npb25TdW1tYXJpZXMoJCl7bGV0IFE9W10sSj0kK1wiL1wiO2ZvcihsZXRbWSxYXW9mIHRoaXMuc3VtbWFyaWVzKWlmKFkuc3RhcnRzV2l0aChKKSlRLnB1c2goWCk7cmV0dXJuIFF9YXN5bmMgZGVsZXRlKCQpe2xldCBRPXRoaXMua2V5VG9TdHJpbmcoJCk7aWYodGhpcy5zdG9yZS5kZWxldGUoUSksdGhpcy5tdGltZXMuZGVsZXRlKFEpLCQuc3VicGF0aD09PXZvaWQgMCl7dGhpcy5zdW1tYXJpZXMuZGVsZXRlKGAkeyQucHJvamVjdEtleX0vJHskLnNlc3Npb25JZH1gKTtsZXQgSj1gJHskLnByb2plY3RLZXl9LyR7JC5zZXNzaW9uSWR9L2A7Zm9yKGxldCBZIG9mIHRoaXMuc3RvcmUua2V5cygpKWlmKFkuc3RhcnRzV2l0aChKKSl0aGlzLnN0b3JlLmRlbGV0ZShZKSx0aGlzLm10aW1lcy5kZWxldGUoWSl9fWFzeW5jIGxpc3RTdWJrZXlzKCQpe2xldCBRPWAkeyQucHJvamVjdEtleX0vJHskLnNlc3Npb25JZH0vYCxKPVtdO2ZvcihsZXQgWSBvZiB0aGlzLnN0b3JlLmtleXMoKSlpZihZLnN0YXJ0c1dpdGgoUSkpSi5wdXNoKFkuc2xpY2UoUS5sZW5ndGgpKTtyZXR1cm4gSn1nZXRFbnRyaWVzKCQpe3JldHVybiB0aGlzLnN0b3JlLmdldCh0aGlzLmtleVRvU3RyaW5nKCQpKT8/W119Z2V0IHNpemUoKXtsZXQgJD0wO2ZvcihsZXQgUSBvZiB0aGlzLnN0b3JlLmtleXMoKSl7bGV0IEo9US5pbmRleE9mKFwiL1wiKTtpZihKIT09LTEmJiFRLnNsaWNlKEorMSkuaW5jbHVkZXMoXCIvXCIpKSQrK31yZXR1cm4gJH1jbGVhcigpe3RoaXMuc3RvcmUuY2xlYXIoKSx0aGlzLm10aW1lcy5jbGVhcigpLHRoaXMuc3VtbWFyaWVzLmNsZWFyKCl9fWNsYXNzIHE2IGV4dGVuZHMgRXJyb3J7fWZ1bmN0aW9uIGUwKCl7cmV0dXJuIHByb2Nlc3MudmVyc2lvbnMuYnVuIT09dm9pZCAwfWZ1bmN0aW9uIFIkKCQpe2lmKCEkKXJldHVybiExO2lmKHR5cGVvZiAkPT09XCJib29sZWFuXCIpcmV0dXJuICQ7bGV0IFE9U3RyaW5nKCQpLnRvTG93ZXJDYXNlKCkudHJpbSgpO3JldHVybltcIjFcIixcInRydWVcIixcInllc1wiLFwib25cIl0uaW5jbHVkZXMoUSl9ZnVuY3Rpb24gZTEoKXtsZXQgJD1uZXcgU2V0O3JldHVybntzdWJzY3JpYmUoUSl7cmV0dXJuICQuYWRkKFEpLCgpPT57JC5kZWxldGUoUSl9fSxlbWl0KC4uLlEpe2xldCBKO2ZvcihsZXQgWSBvZiAkKXRyeXtZKC4uLlEpfWNhdGNoKFgpeyhKPz89W10pLnB1c2goWCl9aWYoSil0aHJvdyBKLmxlbmd0aD09PTE/SlswXTpBZ2dyZWdhdGVFcnJvcihKLFwiU2lnbmFsIGxpc3RlbmVyKHMpIHRocmV3XCIpfSxjbGVhcigpeyQuY2xlYXIoKX19fXZhciB3Uz10eXBlb2YgZ2xvYmFsPT1cIm9iamVjdFwiJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCx3WD13Uzt2YXIgT1M9dHlwZW9mIHNlbGY9PVwib2JqZWN0XCImJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLERTPXdYfHxPU3x8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLGw2PURTO3ZhciBGUz1sNi5TeW1ib2wsYzY9RlM7dmFyIFVOPU9iamVjdC5wcm90b3R5cGUsWlM9VU4uaGFzT3duUHJvcGVydHksTVM9VU4udG9TdHJpbmcsZzk9YzY/YzYudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIExTKCQpe3ZhciBRPVpTLmNhbGwoJCxnOSksSj0kW2c5XTt0cnl7JFtnOV09dm9pZCAwO3ZhciBZPSEwfWNhdGNoKFcpe312YXIgWD1NUy5jYWxsKCQpO2lmKFkpaWYoUSkkW2c5XT1KO2Vsc2UgZGVsZXRlICRbZzldO3JldHVybiBYfXZhciBITj1MUzt2YXIgalM9T2JqZWN0LnByb3RvdHlwZSxBUz1qUy50b1N0cmluZztmdW5jdGlvbiBJUygkKXtyZXR1cm4gQVMuY2FsbCgkKX12YXIgS049SVM7dmFyIFJTPVwiW29iamVjdCBOdWxsXVwiLFBTPVwiW29iamVjdCBVbmRlZmluZWRdXCIscU49YzY/YzYudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIEVTKCQpe2lmKCQ9PW51bGwpcmV0dXJuICQ9PT12b2lkIDA/UFM6UlM7cmV0dXJuIHFOJiZxTiBpbiBPYmplY3QoJCk/SE4oJCk6S04oJCl9dmFyIEE0PUVTO2Z1bmN0aW9uIGJTKCQpe3ZhciBRPXR5cGVvZiAkO3JldHVybiAkIT1udWxsJiYoUT09XCJvYmplY3RcInx8UT09XCJmdW5jdGlvblwiKX12YXIgJDY9YlM7dmFyIF9TPVwiW29iamVjdCBBc3luY0Z1bmN0aW9uXVwiLFNTPVwiW29iamVjdCBGdW5jdGlvbl1cIixrUz1cIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCIsdlM9XCJbb2JqZWN0IFByb3h5XVwiO2Z1bmN0aW9uIENTKCQpe2lmKCEkNigkKSlyZXR1cm4hMTt2YXIgUT1BNCgkKTtyZXR1cm4gUT09U1N8fFE9PWtTfHxRPT1fU3x8UT09dlN9dmFyICQ4PUNTO3ZhciBUUz1sNltcIl9fY29yZS1qc19zaGFyZWRfX1wiXSxPWD1UUzt2YXIgVk49ZnVuY3Rpb24oKXt2YXIgJD0vW14uXSskLy5leGVjKE9YJiZPWC5rZXlzJiZPWC5rZXlzLklFX1BST1RPfHxcIlwiKTtyZXR1cm4gJD9cIlN5bWJvbChzcmMpXzEuXCIrJDpcIlwifSgpO2Z1bmN0aW9uIHhTKCQpe3JldHVybiEhVk4mJlZOIGluICR9dmFyIEJOPXhTO3ZhciBmUz1GdW5jdGlvbi5wcm90b3R5cGUseVM9ZlMudG9TdHJpbmc7ZnVuY3Rpb24gZ1MoJCl7aWYoJCE9bnVsbCl7dHJ5e3JldHVybiB5Uy5jYWxsKCQpfWNhdGNoKFEpe310cnl7cmV0dXJuICQrXCJcIn1jYXRjaChRKXt9fXJldHVyblwiXCJ9dmFyIHpOPWdTO3ZhciBoUz0vW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csdVM9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyxtUz1GdW5jdGlvbi5wcm90b3R5cGUsbFM9T2JqZWN0LnByb3RvdHlwZSxjUz1tUy50b1N0cmluZyxwUz1sUy5oYXNPd25Qcm9wZXJ0eSxkUz1SZWdFeHAoXCJeXCIrY1MuY2FsbChwUykucmVwbGFjZShoUyxcIlxcXFwkJlwiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLFwiJDEuKj9cIikrXCIkXCIpO2Z1bmN0aW9uIGlTKCQpe2lmKCEkNigkKXx8Qk4oJCkpcmV0dXJuITE7dmFyIFE9JDgoJCk/ZFM6dVM7cmV0dXJuIFEudGVzdCh6TigkKSl9dmFyIE5OPWlTO2Z1bmN0aW9uIG5TKCQsUSl7cmV0dXJuICQ9PW51bGw/dm9pZCAwOiRbUV19dmFyIHdOPW5TO2Z1bmN0aW9uIHJTKCQsUSl7dmFyIEo9d04oJCxRKTtyZXR1cm4gTk4oSik/Sjp2b2lkIDB9dmFyIFE4PXJTO3ZhciBvUz1ROChPYmplY3QsXCJjcmVhdGVcIikseDQ9b1M7ZnVuY3Rpb24gdFMoKXt0aGlzLl9fZGF0YV9fPXg0P3g0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfXZhciBPTj10UztmdW5jdGlvbiBhUygkKXt2YXIgUT10aGlzLmhhcygkKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bJF07cmV0dXJuIHRoaXMuc2l6ZS09UT8xOjAsUX12YXIgRE49YVM7dmFyIHNTPVwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiLGVTPU9iamVjdC5wcm90b3R5cGUsJGs9ZVMuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gUWsoJCl7dmFyIFE9dGhpcy5fX2RhdGFfXztpZih4NCl7dmFyIEo9UVskXTtyZXR1cm4gSj09PXNTP3ZvaWQgMDpKfXJldHVybiAkay5jYWxsKFEsJCk/UVskXTp2b2lkIDB9dmFyIEZOPVFrO3ZhciBKaz1PYmplY3QucHJvdG90eXBlLFhrPUprLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFlrKCQpe3ZhciBRPXRoaXMuX19kYXRhX187cmV0dXJuIHg0P1FbJF0hPT12b2lkIDA6WGsuY2FsbChRLCQpfXZhciBaTj1Zazt2YXIgV2s9XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCI7ZnVuY3Rpb24gR2soJCxRKXt2YXIgSj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKCQpPzA6MSxKWyRdPXg0JiZRPT09dm9pZCAwP1drOlEsdGhpc312YXIgTU49R2s7ZnVuY3Rpb24gSjgoJCl7dmFyIFE9LTEsSj0kPT1udWxsPzA6JC5sZW5ndGg7dGhpcy5jbGVhcigpO3doaWxlKCsrUTxKKXt2YXIgWT0kW1FdO3RoaXMuc2V0KFlbMF0sWVsxXSl9fUo4LnByb3RvdHlwZS5jbGVhcj1PTjtKOC5wcm90b3R5cGUuZGVsZXRlPUROO0o4LnByb3RvdHlwZS5nZXQ9Rk47SjgucHJvdG90eXBlLmhhcz1aTjtKOC5wcm90b3R5cGUuc2V0PU1OO3ZhciBFRz1KODtmdW5jdGlvbiBVaygpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9dmFyIExOPVVrO2Z1bmN0aW9uIEhrKCQsUSl7cmV0dXJuICQ9PT1RfHwkIT09JCYmUSE9PVF9dmFyIEsxPUhrO2Z1bmN0aW9uIEtrKCQsUSl7dmFyIEo9JC5sZW5ndGg7d2hpbGUoSi0tKWlmKEsxKCRbSl1bMF0sUSkpcmV0dXJuIEo7cmV0dXJuLTF9dmFyIHExPUtrO3ZhciBxaz1BcnJheS5wcm90b3R5cGUsVms9cWsuc3BsaWNlO2Z1bmN0aW9uIEJrKCQpe3ZhciBRPXRoaXMuX19kYXRhX18sSj1xMShRLCQpO2lmKEo8MClyZXR1cm4hMTt2YXIgWT1RLmxlbmd0aC0xO2lmKEo9PVkpUS5wb3AoKTtlbHNlIFZrLmNhbGwoUSxKLDEpO3JldHVybi0tdGhpcy5zaXplLCEwfXZhciBqTj1CaztmdW5jdGlvbiB6aygkKXt2YXIgUT10aGlzLl9fZGF0YV9fLEo9cTEoUSwkKTtyZXR1cm4gSjwwP3ZvaWQgMDpRW0pdWzFdfXZhciBBTj16aztmdW5jdGlvbiBOaygkKXtyZXR1cm4gcTEodGhpcy5fX2RhdGFfXywkKT4tMX12YXIgSU49Tms7ZnVuY3Rpb24gd2soJCxRKXt2YXIgSj10aGlzLl9fZGF0YV9fLFk9cTEoSiwkKTtpZihZPDApKyt0aGlzLnNpemUsSi5wdXNoKFskLFFdKTtlbHNlIEpbWV1bMV09UTtyZXR1cm4gdGhpc312YXIgUk49d2s7ZnVuY3Rpb24gWDgoJCl7dmFyIFE9LTEsSj0kPT1udWxsPzA6JC5sZW5ndGg7dGhpcy5jbGVhcigpO3doaWxlKCsrUTxKKXt2YXIgWT0kW1FdO3RoaXMuc2V0KFlbMF0sWVsxXSl9fVg4LnByb3RvdHlwZS5jbGVhcj1MTjtYOC5wcm90b3R5cGUuZGVsZXRlPWpOO1g4LnByb3RvdHlwZS5nZXQ9QU47WDgucHJvdG90eXBlLmhhcz1JTjtYOC5wcm90b3R5cGUuc2V0PVJOO3ZhciBWMT1YODt2YXIgT2s9UTgobDYsXCJNYXBcIiksRFg9T2s7ZnVuY3Rpb24gRGsoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBFRyxtYXA6bmV3KERYfHxWMSksc3RyaW5nOm5ldyBFR319dmFyIFBOPURrO2Z1bmN0aW9uIEZrKCQpe3ZhciBRPXR5cGVvZiAkO3JldHVybiBRPT1cInN0cmluZ1wifHxRPT1cIm51bWJlclwifHxRPT1cInN5bWJvbFwifHxRPT1cImJvb2xlYW5cIj8kIT09XCJfX3Byb3RvX19cIjokPT09bnVsbH12YXIgRU49Rms7ZnVuY3Rpb24gWmsoJCxRKXt2YXIgSj0kLl9fZGF0YV9fO3JldHVybiBFTihRKT9KW3R5cGVvZiBRPT1cInN0cmluZ1wiP1wic3RyaW5nXCI6XCJoYXNoXCJdOkoubWFwfXZhciBCMT1aaztmdW5jdGlvbiBNaygkKXt2YXIgUT1CMSh0aGlzLCQpLmRlbGV0ZSgkKTtyZXR1cm4gdGhpcy5zaXplLT1RPzE6MCxRfXZhciBiTj1NaztmdW5jdGlvbiBMaygkKXtyZXR1cm4gQjEodGhpcywkKS5nZXQoJCl9dmFyIF9OPUxrO2Z1bmN0aW9uIGprKCQpe3JldHVybiBCMSh0aGlzLCQpLmhhcygkKX12YXIgU049ams7ZnVuY3Rpb24gQWsoJCxRKXt2YXIgSj1CMSh0aGlzLCQpLFk9Si5zaXplO3JldHVybiBKLnNldCgkLFEpLHRoaXMuc2l6ZSs9Si5zaXplPT1ZPzA6MSx0aGlzfXZhciBrTj1BaztmdW5jdGlvbiBZOCgkKXt2YXIgUT0tMSxKPSQ9PW51bGw/MDokLmxlbmd0aDt0aGlzLmNsZWFyKCk7d2hpbGUoKytRPEope3ZhciBZPSRbUV07dGhpcy5zZXQoWVswXSxZWzFdKX19WTgucHJvdG90eXBlLmNsZWFyPVBOO1k4LnByb3RvdHlwZS5kZWxldGU9Yk47WTgucHJvdG90eXBlLmdldD1fTjtZOC5wcm90b3R5cGUuaGFzPVNOO1k4LnByb3RvdHlwZS5zZXQ9a047dmFyIGg5PVk4O3ZhciBJaz1cIkV4cGVjdGVkIGEgZnVuY3Rpb25cIjtmdW5jdGlvbiBiRygkLFEpe2lmKHR5cGVvZiAkIT1cImZ1bmN0aW9uXCJ8fFEhPW51bGwmJnR5cGVvZiBRIT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKElrKTt2YXIgSj1mdW5jdGlvbigpe3ZhciBZPWFyZ3VtZW50cyxYPVE/US5hcHBseSh0aGlzLFkpOllbMF0sVz1KLmNhY2hlO2lmKFcuaGFzKFgpKXJldHVybiBXLmdldChYKTt2YXIgRz0kLmFwcGx5KHRoaXMsWSk7cmV0dXJuIEouY2FjaGU9Vy5zZXQoWCxHKXx8VyxHfTtyZXR1cm4gSi5jYWNoZT1uZXcoYkcuQ2FjaGV8fGg5KSxKfWJHLkNhY2hlPWg5O3ZhciB2JD1iRztpbXBvcnR7aG9tZWRpciBhcyBSa31mcm9tXCJvc1wiO2ltcG9ydHtqb2luIGFzIFBrfWZyb21cInBhdGhcIjt2YXIgcDY9diQoKCk9PntyZXR1cm4ocHJvY2Vzcy5lbnYuQ0xBVURFX0NPTkZJR19ESVI/P1BrKFJrKCksXCIuY2xhdWRlXCIpKS5ub3JtYWxpemUoXCJORkNcIil9LCgpPT5wcm9jZXNzLmVudi5DTEFVREVfQ09ORklHX0RJUik7dmFyIE8wJD12JCgoKT0+UiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfU1VQRVJWSVNFRCkpO2Z1bmN0aW9uIGYoJCxRLEosWSxYKXtpZihZPT09XCJtXCIpdGhyb3cgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO2lmKFk9PT1cImFcIiYmIVgpdGhyb3cgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO2lmKHR5cGVvZiBRPT09XCJmdW5jdGlvblwiPyQhPT1RfHwhWDohUS5oYXMoJCkpdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuIFk9PT1cImFcIj9YLmNhbGwoJCxKKTpYP1gudmFsdWU9SjpRLnNldCgkLEopLEp9ZnVuY3Rpb24gWigkLFEsSixZKXtpZihKPT09XCJhXCImJiFZKXRocm93IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZih0eXBlb2YgUT09PVwiZnVuY3Rpb25cIj8kIT09UXx8IVk6IVEuaGFzKCQpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm4gSj09PVwibVwiP1k6Sj09PVwiYVwiP1kuY2FsbCgkKTpZP1kudmFsdWU6US5nZXQoJCl9dmFyIF9HPWZ1bmN0aW9uKCl7bGV0e2NyeXB0bzokfT1nbG9iYWxUaGlzO2lmKCQ/LnJhbmRvbVVVSUQpcmV0dXJuIF9HPSQucmFuZG9tVVVJRC5iaW5kKCQpLCQucmFuZG9tVVVJRCgpO2xldCBRPW5ldyBVaW50OEFycmF5KDEpLEo9JD8oKT0+JC5nZXRSYW5kb21WYWx1ZXMoUSlbMF06KCk9Pk1hdGgucmFuZG9tKCkqMjU1JjI1NTtyZXR1cm5cIjEwMDAwMDAwLTEwMDAtNDAwMC04MDAwLTEwMDAwMDAwMDAwMFwiLnJlcGxhY2UoL1swMThdL2csKFkpPT4oK1leSigpJjE1Pj4rWS80KS50b1N0cmluZygxNikpfTtmdW5jdGlvbiBmNCgkKXtyZXR1cm4gdHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCYmKChcIm5hbWVcImluICQpJiYkLm5hbWU9PT1cIkFib3J0RXJyb3JcInx8KFwibWVzc2FnZVwiaW4gJCkmJlN0cmluZygkLm1lc3NhZ2UpLmluY2x1ZGVzKFwiRmV0Y2hSZXF1ZXN0Q2FuY2VsZWRFeGNlcHRpb25cIikpfXZhciB1OT0oJCk9PntpZigkIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuICQ7aWYodHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCl7dHJ5e2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKT09PVwiW29iamVjdCBFcnJvcl1cIil7bGV0IFE9RXJyb3IoJC5tZXNzYWdlLCQuY2F1c2U/e2NhdXNlOiQuY2F1c2V9Ont9KTtpZigkLnN0YWNrKVEuc3RhY2s9JC5zdGFjaztpZigkLmNhdXNlJiYhUS5jYXVzZSlRLmNhdXNlPSQuY2F1c2U7aWYoJC5uYW1lKVEubmFtZT0kLm5hbWU7cmV0dXJuIFF9fWNhdGNoe310cnl7cmV0dXJuIEVycm9yKEpTT04uc3RyaW5naWZ5KCQpKX1jYXRjaHt9fXJldHVybiBFcnJvcigkKX07Y2xhc3MgZyBleHRlbmRzIEVycm9ye31jbGFzcyBuJCBleHRlbmRzIGd7Y29uc3RydWN0b3IoJCxRLEosWSxYKXtzdXBlcihgJHtuJC5tYWtlTWVzc2FnZSgkLFEsSil9YCk7dGhpcy5zdGF0dXM9JCx0aGlzLmhlYWRlcnM9WSx0aGlzLnJlcXVlc3RJRD1ZPy5nZXQoXCJyZXF1ZXN0LWlkXCIpLHRoaXMuZXJyb3I9USx0aGlzLnR5cGU9WD8/bnVsbH1zdGF0aWMgbWFrZU1lc3NhZ2UoJCxRLEope2xldCBZPVE/Lm1lc3NhZ2U/dHlwZW9mIFEubWVzc2FnZT09PVwic3RyaW5nXCI/US5tZXNzYWdlOkpTT04uc3RyaW5naWZ5KFEubWVzc2FnZSk6UT9KU09OLnN0cmluZ2lmeShRKTpKO2lmKCQmJlkpcmV0dXJuYCR7JH0gJHtZfWA7aWYoJClyZXR1cm5gJHskfSBzdGF0dXMgY29kZSAobm8gYm9keSlgO2lmKFkpcmV0dXJuIFk7cmV0dXJuXCIobm8gc3RhdHVzIGNvZGUgb3IgYm9keSlcIn1zdGF0aWMgZ2VuZXJhdGUoJCxRLEosWSl7aWYoISR8fCFZKXJldHVybiBuZXcgJDAoe21lc3NhZ2U6SixjYXVzZTp1OShRKX0pO2xldCBYPVEsVz1YPy5lcnJvcj8udHlwZTtpZigkPT09NDAwKXJldHVybiBuZXcgbDkoJCxYLEosWSxXKTtpZigkPT09NDAxKXJldHVybiBuZXcgYzkoJCxYLEosWSxXKTtpZigkPT09NDAzKXJldHVybiBuZXcgcDkoJCxYLEosWSxXKTtpZigkPT09NDA0KXJldHVybiBuZXcgZDkoJCxYLEosWSxXKTtpZigkPT09NDA5KXJldHVybiBuZXcgaTkoJCxYLEosWSxXKTtpZigkPT09NDIyKXJldHVybiBuZXcgbjkoJCxYLEosWSxXKTtpZigkPT09NDI5KXJldHVybiBuZXcgcjkoJCxYLEosWSxXKTtpZigkPj01MDApcmV0dXJuIG5ldyBvOSgkLFgsSixZLFcpO3JldHVybiBuZXcgbiQoJCxYLEosWSxXKX19Y2xhc3MgUTYgZXh0ZW5kcyBuJHtjb25zdHJ1Y3Rvcih7bWVzc2FnZTokfT17fSl7c3VwZXIodm9pZCAwLHZvaWQgMCwkfHxcIlJlcXVlc3Qgd2FzIGFib3J0ZWQuXCIsdm9pZCAwKX19Y2xhc3MgJDAgZXh0ZW5kcyBuJHtjb25zdHJ1Y3Rvcih7bWVzc2FnZTokLGNhdXNlOlF9KXtzdXBlcih2b2lkIDAsdm9pZCAwLCR8fFwiQ29ubmVjdGlvbiBlcnJvci5cIix2b2lkIDApO2lmKFEpdGhpcy5jYXVzZT1RfX1jbGFzcyBtOSBleHRlbmRzICQwe2NvbnN0cnVjdG9yKHttZXNzYWdlOiR9PXt9KXtzdXBlcih7bWVzc2FnZTokPz9cIlJlcXVlc3QgdGltZWQgb3V0LlwifSl9fWNsYXNzIGw5IGV4dGVuZHMgbiR7fWNsYXNzIGM5IGV4dGVuZHMgbiR7fWNsYXNzIHA5IGV4dGVuZHMgbiR7fWNsYXNzIGQ5IGV4dGVuZHMgbiR7fWNsYXNzIGk5IGV4dGVuZHMgbiR7fWNsYXNzIG45IGV4dGVuZHMgbiR7fWNsYXNzIHI5IGV4dGVuZHMgbiR7fWNsYXNzIG85IGV4dGVuZHMgbiR7fXZhciBiaz0vXlthLXpdW2EtejAtOSsuLV0qOi9pLHZOPSgkKT0+e3JldHVybiBiay50ZXN0KCQpfSxTRz0oJCk9PihTRz1BcnJheS5pc0FycmF5LFNHKCQpKSxrRz1TRztmdW5jdGlvbiBGWCgkKXtpZih0eXBlb2YgJCE9PVwib2JqZWN0XCIpcmV0dXJue307cmV0dXJuICQ/P3t9fWZ1bmN0aW9uIHZHKCQpe2lmKCEkKXJldHVybiEwO2ZvcihsZXQgUSBpbiAkKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIENOKCQsUSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgkLFEpfXZhciBUTj0oJCxRKT0+e2lmKHR5cGVvZiBRIT09XCJudW1iZXJcInx8IU51bWJlci5pc0ludGVnZXIoUSkpdGhyb3cgbmV3IGcoYCR7JH0gbXVzdCBiZSBhbiBpbnRlZ2VyYCk7aWYoUTwwKXRocm93IG5ldyBnKGAkeyR9IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyYCk7cmV0dXJuIFF9O3ZhciBaWD0oJCk9Pnt0cnl7cmV0dXJuIEpTT04ucGFyc2UoJCl9Y2F0Y2goUSl7cmV0dXJufX07dmFyIHhOPSgkKT0+bmV3IFByb21pc2UoKFEpPT5zZXRUaW1lb3V0KFEsJCkpO3ZhciBkNj1cIjAuOTQuMFwiO3ZhciBoTj0oKT0+e3JldHVybiB0eXBlb2Ygd2luZG93PFwidVwiJiZ0eXBlb2Ygd2luZG93LmRvY3VtZW50PFwidVwiJiZ0eXBlb2YgbmF2aWdhdG9yPFwidVwifTtmdW5jdGlvbiBfaygpe2lmKHR5cGVvZiBEZW5vPFwidVwiJiZEZW5vLmJ1aWxkIT1udWxsKXJldHVyblwiZGVub1wiO2lmKHR5cGVvZiBFZGdlUnVudGltZTxcInVcIilyZXR1cm5cImVkZ2VcIjtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzczxcInVcIj9nbG9iYWxUaGlzLnByb2Nlc3M6MCk9PT1cIltvYmplY3QgcHJvY2Vzc11cIilyZXR1cm5cIm5vZGVcIjtyZXR1cm5cInVua25vd25cIn12YXIgU2s9KCk9PntsZXQgJD1faygpO2lmKCQ9PT1cImRlbm9cIilyZXR1cm57XCJYLVN0YWlubGVzcy1MYW5nXCI6XCJqc1wiLFwiWC1TdGFpbmxlc3MtUGFja2FnZS1WZXJzaW9uXCI6ZDYsXCJYLVN0YWlubGVzcy1PU1wiOnlOKERlbm8uYnVpbGQub3MpLFwiWC1TdGFpbmxlc3MtQXJjaFwiOmZOKERlbm8uYnVpbGQuYXJjaCksXCJYLVN0YWlubGVzcy1SdW50aW1lXCI6XCJkZW5vXCIsXCJYLVN0YWlubGVzcy1SdW50aW1lLVZlcnNpb25cIjp0eXBlb2YgRGVuby52ZXJzaW9uPT09XCJzdHJpbmdcIj9EZW5vLnZlcnNpb246RGVuby52ZXJzaW9uPy5kZW5vPz9cInVua25vd25cIn07aWYodHlwZW9mIEVkZ2VSdW50aW1lPFwidVwiKXJldHVybntcIlgtU3RhaW5sZXNzLUxhbmdcIjpcImpzXCIsXCJYLVN0YWlubGVzcy1QYWNrYWdlLVZlcnNpb25cIjpkNixcIlgtU3RhaW5sZXNzLU9TXCI6XCJVbmtub3duXCIsXCJYLVN0YWlubGVzcy1BcmNoXCI6YG90aGVyOiR7RWRnZVJ1bnRpbWV9YCxcIlgtU3RhaW5sZXNzLVJ1bnRpbWVcIjpcImVkZ2VcIixcIlgtU3RhaW5sZXNzLVJ1bnRpbWUtVmVyc2lvblwiOmdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ufTtpZigkPT09XCJub2RlXCIpcmV0dXJue1wiWC1TdGFpbmxlc3MtTGFuZ1wiOlwianNcIixcIlgtU3RhaW5sZXNzLVBhY2thZ2UtVmVyc2lvblwiOmQ2LFwiWC1TdGFpbmxlc3MtT1NcIjp5TihnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0/P1widW5rbm93blwiKSxcIlgtU3RhaW5sZXNzLUFyY2hcIjpmTihnbG9iYWxUaGlzLnByb2Nlc3MuYXJjaD8/XCJ1bmtub3duXCIpLFwiWC1TdGFpbmxlc3MtUnVudGltZVwiOlwibm9kZVwiLFwiWC1TdGFpbmxlc3MtUnVudGltZS1WZXJzaW9uXCI6Z2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb24/P1widW5rbm93blwifTtsZXQgUT1raygpO2lmKFEpcmV0dXJue1wiWC1TdGFpbmxlc3MtTGFuZ1wiOlwianNcIixcIlgtU3RhaW5sZXNzLVBhY2thZ2UtVmVyc2lvblwiOmQ2LFwiWC1TdGFpbmxlc3MtT1NcIjpcIlVua25vd25cIixcIlgtU3RhaW5sZXNzLUFyY2hcIjpcInVua25vd25cIixcIlgtU3RhaW5sZXNzLVJ1bnRpbWVcIjpgYnJvd3Nlcjoke1EuYnJvd3Nlcn1gLFwiWC1TdGFpbmxlc3MtUnVudGltZS1WZXJzaW9uXCI6US52ZXJzaW9ufTtyZXR1cm57XCJYLVN0YWlubGVzcy1MYW5nXCI6XCJqc1wiLFwiWC1TdGFpbmxlc3MtUGFja2FnZS1WZXJzaW9uXCI6ZDYsXCJYLVN0YWlubGVzcy1PU1wiOlwiVW5rbm93blwiLFwiWC1TdGFpbmxlc3MtQXJjaFwiOlwidW5rbm93blwiLFwiWC1TdGFpbmxlc3MtUnVudGltZVwiOlwidW5rbm93blwiLFwiWC1TdGFpbmxlc3MtUnVudGltZS1WZXJzaW9uXCI6XCJ1bmtub3duXCJ9fTtmdW5jdGlvbiBraygpe2lmKHR5cGVvZiBuYXZpZ2F0b3I+XCJ1XCJ8fCFuYXZpZ2F0b3IpcmV0dXJuIG51bGw7bGV0ICQ9W3trZXk6XCJlZGdlXCIscGF0dGVybjovRWRnZSg/OlxcVysoXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/L30se2tleTpcImllXCIscGF0dGVybjovTVNJRSg/OlxcVysoXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/L30se2tleTpcImllXCIscGF0dGVybjovVHJpZGVudCg/Oi4qcnZcXDooXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/L30se2tleTpcImNocm9tZVwiLHBhdHRlcm46L0Nocm9tZSg/OlxcVysoXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/L30se2tleTpcImZpcmVmb3hcIixwYXR0ZXJuOi9GaXJlZm94KD86XFxXKyhcXGQrKVxcLihcXGQrKSg/OlxcLihcXGQrKSk/KT8vfSx7a2V5Olwic2FmYXJpXCIscGF0dGVybjovKD86VmVyc2lvblxcVysoXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/KD86XFxXK01vYmlsZVxcUyopP1xcVytTYWZhcmkvfV07Zm9yKGxldHtrZXk6USxwYXR0ZXJuOkp9b2YgJCl7bGV0IFk9Si5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKFkpe2xldCBYPVlbMV18fDAsVz1ZWzJdfHwwLEc9WVszXXx8MDtyZXR1cm57YnJvd3NlcjpRLHZlcnNpb246YCR7WH0uJHtXfS4ke0d9YH19fXJldHVybiBudWxsfXZhciBmTj0oJCk9PntpZigkPT09XCJ4MzJcIilyZXR1cm5cIngzMlwiO2lmKCQ9PT1cIng4Nl82NFwifHwkPT09XCJ4NjRcIilyZXR1cm5cIng2NFwiO2lmKCQ9PT1cImFybVwiKXJldHVyblwiYXJtXCI7aWYoJD09PVwiYWFyY2g2NFwifHwkPT09XCJhcm02NFwiKXJldHVyblwiYXJtNjRcIjtpZigkKXJldHVybmBvdGhlcjokeyR9YDtyZXR1cm5cInVua25vd25cIn0seU49KCQpPT57aWYoJD0kLnRvTG93ZXJDYXNlKCksJC5pbmNsdWRlcyhcImlvc1wiKSlyZXR1cm5cImlPU1wiO2lmKCQ9PT1cImFuZHJvaWRcIilyZXR1cm5cIkFuZHJvaWRcIjtpZigkPT09XCJkYXJ3aW5cIilyZXR1cm5cIk1hY09TXCI7aWYoJD09PVwid2luMzJcIilyZXR1cm5cIldpbmRvd3NcIjtpZigkPT09XCJmcmVlYnNkXCIpcmV0dXJuXCJGcmVlQlNEXCI7aWYoJD09PVwib3BlbmJzZFwiKXJldHVyblwiT3BlbkJTRFwiO2lmKCQ9PT1cImxpbnV4XCIpcmV0dXJuXCJMaW51eFwiO2lmKCQpcmV0dXJuYE90aGVyOiR7JH1gO3JldHVyblwiVW5rbm93blwifSxnTix0OT0oKT0+e3JldHVybiBnTj8/KGdOPVNrKCkpfTtmdW5jdGlvbiB1Tigpe2lmKHR5cGVvZiBmZXRjaDxcInVcIilyZXR1cm4gZmV0Y2g7dGhyb3cgRXJyb3IoXCJgZmV0Y2hgIGlzIG5vdCBkZWZpbmVkIGFzIGEgZ2xvYmFsOyBFaXRoZXIgcGFzcyBgZmV0Y2hgIHRvIHRoZSBjbGllbnQsIGBuZXcgQW50aHJvcGljKHsgZmV0Y2ggfSlgIG9yIHBvbHlmaWxsIHRoZSBnbG9iYWwsIGBnbG9iYWxUaGlzLmZldGNoID0gZmV0Y2hgXCIpfWZ1bmN0aW9uIENHKC4uLiQpe2xldCBRPWdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW07aWYodHlwZW9mIFE+XCJ1XCIpdGhyb3cgRXJyb3IoXCJgUmVhZGFibGVTdHJlYW1gIGlzIG5vdCBkZWZpbmVkIGFzIGEgZ2xvYmFsOyBZb3Ugd2lsbCBuZWVkIHRvIHBvbHlmaWxsIGl0LCBgZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3RyZWFtYFwiKTtyZXR1cm4gbmV3IFEoLi4uJCl9ZnVuY3Rpb24gTVgoJCl7bGV0IFE9U3ltYm9sLmFzeW5jSXRlcmF0b3IgaW4gJD8kW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOiRbU3ltYm9sLml0ZXJhdG9yXSgpO3JldHVybiBDRyh7c3RhcnQoKXt9LGFzeW5jIHB1bGwoSil7bGV0e2RvbmU6WSx2YWx1ZTpYfT1hd2FpdCBRLm5leHQoKTtpZihZKUouY2xvc2UoKTtlbHNlIEouZW5xdWV1ZShYKX0sYXN5bmMgY2FuY2VsKCl7YXdhaXQgUS5yZXR1cm4/LigpfX0pfWZ1bmN0aW9uIGE5KCQpe2lmKCRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKXJldHVybiAkO2xldCBRPSQuZ2V0UmVhZGVyKCk7cmV0dXJue2FzeW5jIG5leHQoKXt0cnl7bGV0IEo9YXdhaXQgUS5yZWFkKCk7aWYoSj8uZG9uZSlRLnJlbGVhc2VMb2NrKCk7cmV0dXJuIEp9Y2F0Y2goSil7dGhyb3cgUS5yZWxlYXNlTG9jaygpLEp9fSxhc3luYyByZXR1cm4oKXtsZXQgSj1RLmNhbmNlbCgpO3JldHVybiBRLnJlbGVhc2VMb2NrKCksYXdhaXQgSix7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fSxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7cmV0dXJuIHRoaXN9fX1hc3luYyBmdW5jdGlvbiBtTigkKXtpZigkPT09bnVsbHx8dHlwZW9mICQhPT1cIm9iamVjdFwiKXJldHVybjtpZigkW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSl7YXdhaXQgJFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKS5yZXR1cm4/LigpO3JldHVybn1sZXQgUT0kLmdldFJlYWRlcigpLEo9US5jYW5jZWwoKTtRLnJlbGVhc2VMb2NrKCksYXdhaXQgSn12YXIgbE49KHtoZWFkZXJzOiQsYm9keTpRfSk9PntyZXR1cm57Ym9keUhlYWRlcnM6e1wiY29udGVudC10eXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoUSl9fTtmdW5jdGlvbiBjTigkKXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoJCkuZmlsdGVyKChbUSxKXSk9PnR5cGVvZiBKPFwidVwiKS5tYXAoKFtRLEpdKT0+e2lmKHR5cGVvZiBKPT09XCJzdHJpbmdcInx8dHlwZW9mIEo9PT1cIm51bWJlclwifHx0eXBlb2YgSj09PVwiYm9vbGVhblwiKXJldHVybmAke2VuY29kZVVSSUNvbXBvbmVudChRKX09JHtlbmNvZGVVUklDb21wb25lbnQoSil9YDtpZihKPT09bnVsbClyZXR1cm5gJHtlbmNvZGVVUklDb21wb25lbnQoUSl9PWA7dGhyb3cgbmV3IGcoYENhbm5vdCBzdHJpbmdpZnkgdHlwZSAke3R5cGVvZiBKfTsgRXhwZWN0ZWQgc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIG9yIG51bGwuIElmIHlvdSBuZWVkIHRvIHBhc3MgbmVzdGVkIHF1ZXJ5IHBhcmFtZXRlcnMsIHlvdSBjYW4gbWFudWFsbHkgZW5jb2RlIHRoZW0sIGUuZy4geyBxdWVyeTogeyAnZm9vW2tleTFdJzogdmFsdWUxLCAnZm9vW2tleTJdJzogdmFsdWUyIH0gfSwgYW5kIHBsZWFzZSBvcGVuIGEgR2l0SHViIGlzc3VlIHJlcXVlc3RpbmcgYmV0dGVyIHN1cHBvcnQgZm9yIHlvdXIgdXNlIGNhc2UuYCl9KS5qb2luKFwiJlwiKX12YXIgZE49XCJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpqd3QtYmVhcmVyXCIsaU49XCJyZWZyZXNoX3Rva2VuXCIsTFg9XCIvdjEvb2F1dGgvdG9rZW5cIixRMD1cIm9hdXRoLTIwMjUtMDQtMjBcIixuTj1cIm9pZGMtZmVkZXJhdGlvbi0yMDI2LTA0LTAxXCIsck49MTIwLFc4PTMwLG9OPTUscE49MTA0ODU3NjtmdW5jdGlvbiBqWCgkKXtpZighJClyZXR1cm47bGV0IFE7dHJ5e1E9bmV3IFVSTCgkKX1jYXRjaChZKXt0aHJvdyBuZXcgTyQoYEludmFsaWQgdG9rZW4gZW5kcG9pbnQgYmFzZSBVUkwgXCIkeyR9XCI6ICR7WX1gKX1pZihRLnByb3RvY29sPT09XCJodHRwczpcIilyZXR1cm47bGV0IEo9US5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15cXFt8XFxdJC9nLFwiXCIpO2lmKFEucHJvdG9jb2w9PT1cImh0dHA6XCImJihKPT09XCJsb2NhbGhvc3RcInx8Sj09PVwiMTI3LjAuMC4xXCJ8fEo9PT1cIjo6MVwiKSlyZXR1cm47dGhyb3cgbmV3IE8kKGBSZWZ1c2luZyB0byBzZW5kIGNyZWRlbnRpYWwgb3ZlciBub24taHR0cHMgdG9rZW4gZW5kcG9pbnQgXCIkeyR9XCJgKX1hc3luYyBmdW5jdGlvbiBBWCgkLFEpe2xldCBKPWF3YWl0IHhrKCQpLFk7dHJ5e1k9SlNPTi5wYXJzZShKKX1jYXRjaHt0aHJvdyBuZXcgTyQoYFRva2VuIGVuZHBvaW50IHJldHVybmVkIG5vbi1KU09OIHJlc3BvbnNlIChzdGF0dXMgJHskLnN0YXR1c30pYCwkLnN0YXR1cyxENihKKSxRKX1pZighWS5hY2Nlc3NfdG9rZW4pdGhyb3cgbmV3IE8kKGBUb2tlbiBlbmRwb2ludCByZXNwb25zZSBtaXNzaW5nIGFjY2Vzc190b2tlbjogJHtKU09OLnN0cmluZ2lmeShENihZKSl9YCwkLnN0YXR1cyxENihZKSxRKTtpZihZLnRva2VuX3R5cGUmJlkudG9rZW5fdHlwZS50b0xvd2VyQ2FzZSgpIT09XCJiZWFyZXJcIil0aHJvdyBuZXcgTyQoYFRva2VuIGVuZHBvaW50IHJlc3BvbnNlOiB1bnN1cHBvcnRlZCB0b2tlbl90eXBlIFwiJHtZLnRva2VuX3R5cGV9XCIgKHdhbnQgQmVhcmVyKWAsJC5zdGF0dXMsRDYoWSksUSk7cmV0dXJuIFl9dmFyIFRHPTIwMDAsVGs9bmV3IFNldChbXCJlcnJvclwiLFwiZXJyb3JfZGVzY3JpcHRpb25cIixcImVycm9yX3VyaVwiXSk7ZnVuY3Rpb24gRDYoJCl7aWYoJD09bnVsbClyZXR1cm4gJDtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpe2xldCBRO3RyeXtRPUpTT04ucGFyc2UoJCl9Y2F0Y2h7aWYoJC5sZW5ndGg8PVRHKXJldHVybiAkO3JldHVybiAkLnNsaWNlKDAsVEcpK2AuLi4gPCR7JC5sZW5ndGgtVEd9IG1vcmUgY2hhcnM+YH1yZXR1cm4gSlNPTi5zdHJpbmdpZnkoRDYoUSkpfWlmKHR5cGVvZiAkPT09XCJvYmplY3RcIiYmIUFycmF5LmlzQXJyYXkoJCkpe2xldCBRPXt9O2ZvcihsZXRbSixZXW9mIE9iamVjdC5lbnRyaWVzKCQpKWlmKFRrLmhhcyhKKSlRW0pdPVk7cmV0dXJuIFF9cmV0dXJuIG51bGx9YXN5bmMgZnVuY3Rpb24gSVgoJCxRPShKKT0+Y29uc29sZS53YXJuKGBhbnRocm9waWMtc2RrOiAke0p9YCkpe2lmKHR5cGVvZiBwcm9jZXNzPlwidVwifHxwcm9jZXNzLnBsYXRmb3JtPT09XCJ3aW4zMlwiKXJldHVybjtsZXQgSj1hd2FpdCBpbXBvcnQoXCJub2RlOmZzXCIpLFk9JCxYO3RyeXtZPWF3YWl0IEoucHJvbWlzZXMucmVhbHBhdGgoJCksWD1hd2FpdCBKLnByb21pc2VzLnN0YXQoWSl9Y2F0Y2h7cmV0dXJufWxldCBXPVgubW9kZSY1MTE7aWYoVyYxOCl0aHJvdyBuZXcgTyQoYENyZWRlbnRpYWxzIGZpbGUgYXQgJHtZfSBpcyBncm91cC93b3JsZC13cml0YWJsZSAobW9kZSAwbyR7Vy50b1N0cmluZyg4KX0pOyB0aGlzIGFsbG93cyBvdGhlciBsb2NhbCB1c2VycyB0byBwbGFudCB0b2tlbnMuIFJ1biBcXGBjaG1vZCA2MDAgJHtZfVxcYC5gKTtpZihXJjM2KXRocm93IG5ldyBPJChgQ3JlZGVudGlhbHMgZmlsZSBhdCAke1l9IGlzIGdyb3VwL3dvcmxkLXJlYWRhYmxlIChtb2RlIDBvJHtXLnRvU3RyaW5nKDgpfSk7IHJ1biBcXGBjaG1vZCA2MDAgJHtZfVxcYCBiZWZvcmUgcmV0cnlpbmcuYCk7aWYodHlwZW9mIHByb2Nlc3MuZ2V0dWlkPT09XCJmdW5jdGlvblwiJiZYLnVpZCE9PXByb2Nlc3MuZ2V0dWlkKCkpUShgY3JlZGVudGlhbHMgZmlsZSBhdCAke1l9IGlzIG93bmVkIGJ5IHVpZCAke1gudWlkfSAoY3VycmVudCBwcm9jZXNzIHVpZCAke3Byb2Nlc3MuZ2V0dWlkKCl9KTsgdmVyaWZ5IHRoaXMgaXMgaW50ZW50aW9uYWwuYCl9YXN5bmMgZnVuY3Rpb24gUlgoJCxRKXtsZXQgSj1hd2FpdCBpbXBvcnQoXCJub2RlOmZzXCIpLFg9KGF3YWl0IGltcG9ydChcIm5vZGU6cGF0aFwiKSkuZGlybmFtZSgkKTthd2FpdCBKLnByb21pc2VzLm1rZGlyKFgse3JlY3Vyc2l2ZTohMCxtb2RlOjQ0OH0pO2xldCBXPWAkeyR9LiR7cHJvY2Vzcy5waWR9LiR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9LnRtcGA7dHJ5e2xldCBHPWF3YWl0IEoucHJvbWlzZXMub3BlbihXLFwid1wiLDM4NCk7dHJ5e2F3YWl0IEcud3JpdGVGaWxlKEpTT04uc3RyaW5naWZ5KFEsbnVsbCwyKSksYXdhaXQgRy5zeW5jKCl9ZmluYWxseXthd2FpdCBHLmNsb3NlKCl9YXdhaXQgSi5wcm9taXNlcy5yZW5hbWUoVywkKX1jYXRjaChHKXt0aHJvdyBhd2FpdCBKLnByb21pc2VzLnVubGluayhXKS5jYXRjaCgoKT0+e30pLEd9dHJ5e2xldCBHPWF3YWl0IEoucHJvbWlzZXMub3BlbihYLFwiclwiKTt0cnl7YXdhaXQgRy5zeW5jKCl9ZmluYWxseXthd2FpdCBHLmNsb3NlKCl9fWNhdGNoe319YXN5bmMgZnVuY3Rpb24geGsoJCl7aWYoISQuYm9keSlyZXR1cm5cIlwiO2xldCBRPSQuYm9keS5nZXRSZWFkZXIoKSxKPVtdLFk9MDtmb3IoOzspe2xldHtkb25lOlcsdmFsdWU6R309YXdhaXQgUS5yZWFkKCk7aWYoVylicmVhaztpZihZK0cubGVuZ3RoPnBOKXtsZXQgVT1wTi1ZO2lmKFU+MClKLnB1c2goRy5zdWJhcnJheSgwLFUpKTthd2FpdCBRLmNhbmNlbCgpO2JyZWFrfUoucHVzaChHKSxZKz1HLmxlbmd0aH1sZXQgWDtpZihKLmxlbmd0aD09PTEpWD1KWzBdO2Vsc2V7WD1uZXcgVWludDhBcnJheShKLnJlZHVjZSgoRyxVKT0+RytVLmxlbmd0aCwwKSk7bGV0IFc9MDtmb3IobGV0IEcgb2YgSilYLnNldChHLFcpLFcrPUcubGVuZ3RofXJldHVybiBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKS5kZWNvZGUoWCl9Y2xhc3MgTyQgZXh0ZW5kcyBne2NvbnN0cnVjdG9yKCQsUT1udWxsLEo9bnVsbCxZPW51bGwpe3N1cGVyKCQpO3RoaXMuc3RhdHVzQ29kZT1RLHRoaXMuYm9keT1KLHRoaXMucmVxdWVzdElkPVl9fWZ1bmN0aW9uIFc0KCl7cmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKS8xMDAwKX1jbGFzcyB4R3tjb25zdHJ1Y3RvcigkLFEpe3RoaXMuY2FjaGVkPW51bGwsdGhpcy5wZW5kaW5nUmVmcmVzaD1udWxsLHRoaXMubmV4dEZvcmNlPSExLHRoaXMubGFzdEFkdmlzb3J5RXJyb3I9MCx0aGlzLnByb3ZpZGVyPSQsdGhpcy5vbkFkdmlzb3J5UmVmcmVzaEVycm9yPVF9YXN5bmMgZ2V0VG9rZW4oKXtsZXQgJD10aGlzLm5leHRGb3JjZTt0aGlzLm5leHRGb3JjZT0hMTtsZXQgUT10aGlzLmNhY2hlZDtpZigkfHxRPT1udWxsKXJldHVybihhd2FpdCB0aGlzLnJlZnJlc2goJCkpLnRva2VuO2lmKFEuZXhwaXJlc0F0PT1udWxsKXJldHVybiBRLnRva2VuO2xldCBKPVEuZXhwaXJlc0F0LVc0KCk7aWYoSj5yTilyZXR1cm4gUS50b2tlbjtpZihKPlc4KXJldHVybiB0aGlzLmJhY2tncm91bmRSZWZyZXNoKCksUS50b2tlbjtyZXR1cm4oYXdhaXQgdGhpcy5yZWZyZXNoKCkpLnRva2VufWludmFsaWRhdGUoKXt0aGlzLmNhY2hlZD1udWxsLHRoaXMubmV4dEZvcmNlPSEwfXJlZnJlc2goJD0hMSl7aWYodGhpcy5wZW5kaW5nUmVmcmVzaCYmISQpcmV0dXJuIHRoaXMucGVuZGluZ1JlZnJlc2g7cmV0dXJuIHRoaXMuZG9SZWZyZXNoKCQpfWJhY2tncm91bmRSZWZyZXNoKCl7aWYodGhpcy5wZW5kaW5nUmVmcmVzaClyZXR1cm47aWYoVzQoKS10aGlzLmxhc3RBZHZpc29yeUVycm9yPG9OKXJldHVybjt0aGlzLmRvUmVmcmVzaCgpLmNhdGNoKCgkKT0+e3RoaXMubGFzdEFkdmlzb3J5RXJyb3I9VzQoKSx0aGlzLm9uQWR2aXNvcnlSZWZyZXNoRXJyb3I/LigkKX0pfWRvUmVmcmVzaCgkPSExKXtyZXR1cm4gdGhpcy5wZW5kaW5nUmVmcmVzaD10aGlzLnByb3ZpZGVyKCQ/e2ZvcmNlUmVmcmVzaDohMH06dm9pZCAwKS50aGVuKChRKT0+e3JldHVybiB0aGlzLmNhY2hlZD1RLHRoaXMucGVuZGluZ1JlZnJlc2g9bnVsbCxRfSwoUSk9Pnt0aHJvdyB0aGlzLnBlbmRpbmdSZWZyZXNoPW51bGwsUX0pLHRoaXMucGVuZGluZ1JlZnJlc2h9fXZhciB3JD0oJCk9PntpZih0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzPFwidVwiKXJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZW52Py5bJF0/LnRyaW0oKXx8dm9pZCAwO2lmKHR5cGVvZiBnbG9iYWxUaGlzLkRlbm88XCJ1XCIpcmV0dXJuIGdsb2JhbFRoaXMuRGVuby5lbnY/LmdldD8uKCQpPy50cmltKCl8fHZvaWQgMDtyZXR1cm59O2Z1bmN0aW9uIHNOKCQpe2xldCBRPTA7Zm9yKGxldCBYIG9mICQpUSs9WC5sZW5ndGg7bGV0IEo9bmV3IFVpbnQ4QXJyYXkoUSksWT0wO2ZvcihsZXQgWCBvZiAkKUouc2V0KFgsWSksWSs9WC5sZW5ndGg7cmV0dXJuIEp9dmFyIHROO2Z1bmN0aW9uIEc4KCQpe2xldCBRO3JldHVybih0Tj8/KFE9bmV3IGdsb2JhbFRoaXMuVGV4dEVuY29kZXIsdE49US5lbmNvZGUuYmluZChRKSkpKCQpfXZhciBhTjtmdW5jdGlvbiBmRygkKXtsZXQgUTtyZXR1cm4oYU4/PyhRPW5ldyBnbG9iYWxUaGlzLlRleHREZWNvZGVyLGFOPVEuZGVjb2RlLmJpbmQoUSkpKSgkKX12YXIgRVg9e29mZjowLGVycm9yOjIwMCx3YXJuOjMwMCxpbmZvOjQwMCxkZWJ1Zzo1MDB9LHlHPSgkLFEsSik9PntpZighJClyZXR1cm47aWYoQ04oRVgsJCkpcmV0dXJuICQ7dSQoSikud2FybihgJHtRfSB3YXMgc2V0IHRvICR7SlNPTi5zdHJpbmdpZnkoJCl9LCBleHBlY3RlZCBvbmUgb2YgJHtKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhFWCkpfWApO3JldHVybn07ZnVuY3Rpb24gczkoKXt9ZnVuY3Rpb24gUFgoJCxRLEope2lmKCFRfHxFWFskXT5FWFtKXSlyZXR1cm4gczk7ZWxzZSByZXR1cm4gUVskXS5iaW5kKFEpfXZhciBmaz17ZXJyb3I6czksd2FybjpzOSxpbmZvOnM5LGRlYnVnOnM5fSxlTj1uZXcgV2Vha01hcDtmdW5jdGlvbiB1JCgkKXtsZXQgUT0kLmxvZ2dlcixKPSQubG9nTGV2ZWw/P1wib2ZmXCI7aWYoIVEpcmV0dXJuIGZrO2xldCBZPWVOLmdldChRKTtpZihZJiZZWzBdPT09SilyZXR1cm4gWVsxXTtsZXQgWD17ZXJyb3I6UFgoXCJlcnJvclwiLFEsSiksd2FybjpQWChcIndhcm5cIixRLEopLGluZm86UFgoXCJpbmZvXCIsUSxKKSxkZWJ1ZzpQWChcImRlYnVnXCIsUSxKKX07cmV0dXJuIGVOLnNldChRLFtKLFhdKSxYfXZhciB5ND0oJCk9PntpZigkLm9wdGlvbnMpJC5vcHRpb25zPXsuLi4kLm9wdGlvbnN9LGRlbGV0ZSAkLm9wdGlvbnMuaGVhZGVycztpZigkLmhlYWRlcnMpJC5oZWFkZXJzPU9iamVjdC5mcm9tRW50cmllcygoJC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycz9bLi4uJC5oZWFkZXJzXTpPYmplY3QuZW50cmllcygkLmhlYWRlcnMpKS5tYXAoKFtRLEpdKT0+W1EsUS50b0xvd2VyQ2FzZSgpPT09XCJ4LWFwaS1rZXlcInx8US50b0xvd2VyQ2FzZSgpPT09XCJhdXRob3JpemF0aW9uXCJ8fFEudG9Mb3dlckNhc2UoKT09PVwiY29va2llXCJ8fFEudG9Mb3dlckNhc2UoKT09PVwic2V0LWNvb2tpZVwiP1wiKioqXCI6Sl0pKTtpZihcInJldHJ5T2ZSZXF1ZXN0TG9nSURcImluICQpe2lmKCQucmV0cnlPZlJlcXVlc3RMb2dJRCkkLnJldHJ5T2Y9JC5yZXRyeU9mUmVxdWVzdExvZ0lEO2RlbGV0ZSAkLnJldHJ5T2ZSZXF1ZXN0TG9nSUR9cmV0dXJuICR9O3ZhciBiWD1cIjEuMFwiLHlrPS9eW0EtWmEtejAtOV8uLV0rJC87ZnVuY3Rpb24gJHcoJCl7aWYoISQpdGhyb3cgRXJyb3IoXCJwcm9maWxlIG5hbWUgaXMgZW1wdHlcIik7aWYoJD09PVwiLlwifHwkPT09XCIuLlwiKXRocm93IEVycm9yKGBwcm9maWxlIG5hbWUgXCIkeyR9XCIgaXMgbm90IGFsbG93ZWRgKTtpZigkLmluY2x1ZGVzKFwiL1wiKXx8JC5pbmNsdWRlcyhcIlxcXFxcIikpdGhyb3cgRXJyb3IoYHByb2ZpbGUgbmFtZSBcIiR7JH1cIiBtdXN0IG5vdCBjb250YWluIHBhdGggc2VwYXJhdG9yc2ApO2lmKCF5ay50ZXN0KCQpKXRocm93IEVycm9yKGBwcm9maWxlIG5hbWUgXCIkeyR9XCIgY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzIChhbGxvd2VkOiBsZXR0ZXJzLCBkaWdpdHMsICdfJywgJy4nLCAnLScpYCl9dmFyIFF3PWFzeW5jKCQpPT57dmFyIFEsSjtsZXQgWT1hd2FpdCBnRygpO2lmKFk9PT1udWxsKXJldHVybiBudWxsO2xldCBYPSQ/P2F3YWl0IFh3KCk7aWYoWD09PW51bGwpcmV0dXJuIG51bGw7JHcoWCk7bGV0IFc9YXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKSxVPShhd2FpdCBpbXBvcnQoXCJub2RlOnBhdGhcIikpLmpvaW4oWSxcImNvbmZpZ3NcIixgJHtYfS5qc29uYCksSDt0cnl7SD1hd2FpdCBXLnByb21pc2VzLnJlYWRGaWxlKFUsXCJ1dGYtOFwiKX1jYXRjaChCKXtpZihCPy5jb2RlIT09XCJFTk9FTlRcIil0aHJvdyBFcnJvcihgZmFpbGVkIHRvIHJlYWQgY29uZmlnIGZpbGUgJHtVfTogJHtCfWApO0g9bnVsbH1pZihIPT09bnVsbCl7bGV0IEI9dyQoXCJBTlRIUk9QSUNfT1JHQU5JWkFUSU9OX0lEXCIpLHo9dyQoXCJBTlRIUk9QSUNfSURFTlRJVFlfVE9LRU5fRklMRVwiKSxOPXckKFwiQU5USFJPUElDX0ZFREVSQVRJT05fUlVMRV9JRFwiKTtpZihOJiZCKXJldHVybntmcm9tRmlsZTohMSxjb25maWc6e29yZ2FuaXphdGlvbl9pZDpCLHdvcmtzcGFjZV9pZDp3JChcIkFOVEhST1BJQ19XT1JLU1BBQ0VfSURcIiksYmFzZV91cmw6dyQoXCJBTlRIUk9QSUNfQkFTRV9VUkxcIiksYXV0aGVudGljYXRpb246e3R5cGU6XCJvaWRjX2ZlZGVyYXRpb25cIixmZWRlcmF0aW9uX3J1bGVfaWQ6TixzZXJ2aWNlX2FjY291bnRfaWQ6dyQoXCJBTlRIUk9QSUNfU0VSVklDRV9BQ0NPVU5UX0lEXCIpLGlkZW50aXR5X3Rva2VuOno/e3NvdXJjZTpcImZpbGVcIixwYXRoOnp9OnZvaWQgMCxzY29wZTp3JChcIkFOVEhST1BJQ19TQ09QRVwiKX19fTtyZXR1cm4gbnVsbH1sZXQgcTt0cnl7cT1KU09OLnBhcnNlKEgpfWNhdGNoKEIpe3Rocm93IEVycm9yKGBmYWlsZWQgdG8gcGFyc2UgY29uZmlnIGZpbGUgJHtVfTogJHtCfWApfWlmKCFxLmF1dGhlbnRpY2F0aW9uKXRocm93IEVycm9yKGBjb25maWcgZmlsZSAke1V9IGlzIG1pc3NpbmcgXCJhdXRoZW50aWNhdGlvblwiYCk7bGV0IFY9cS5hdXRoZW50aWNhdGlvbi50eXBlO2lmKFYhPT1cIm9pZGNfZmVkZXJhdGlvblwiJiZWIT09XCJ1c2VyX29hdXRoXCIpdGhyb3cgRXJyb3IoYGF1dGhlbnRpY2F0aW9uLnR5cGUgXCIke1Z9XCIgaXMgbm90IGEga25vd24gYXV0aGVudGljYXRpb24gdHlwZWApO2lmKHEub3JnYW5pemF0aW9uX2lkPz8ocS5vcmdhbml6YXRpb25faWQ9dyQoXCJBTlRIUk9QSUNfT1JHQU5JWkFUSU9OX0lEXCIpKSxxLndvcmtzcGFjZV9pZD8/KHEud29ya3NwYWNlX2lkPXckKFwiQU5USFJPUElDX1dPUktTUEFDRV9JRFwiKSkscS5iYXNlX3VybD8/KHEuYmFzZV91cmw9dyQoXCJBTlRIUk9QSUNfQkFTRV9VUkxcIikpLChRPXEuYXV0aGVudGljYXRpb24pLnNjb3BlPz8oUS5zY29wZT13JChcIkFOVEhST1BJQ19TQ09QRVwiKSkscS5hdXRoZW50aWNhdGlvbi50eXBlPT09XCJvaWRjX2ZlZGVyYXRpb25cIil7aWYoIXEuYXV0aGVudGljYXRpb24uaWRlbnRpdHlfdG9rZW4pe2xldCBCPXckKFwiQU5USFJPUElDX0lERU5USVRZX1RPS0VOX0ZJTEVcIik7aWYoQilxLmF1dGhlbnRpY2F0aW9uLmlkZW50aXR5X3Rva2VuPXtzb3VyY2U6XCJmaWxlXCIscGF0aDpCfX1pZighcS5hdXRoZW50aWNhdGlvbi5mZWRlcmF0aW9uX3J1bGVfaWQpcS5hdXRoZW50aWNhdGlvbi5mZWRlcmF0aW9uX3J1bGVfaWQ9dyQoXCJBTlRIUk9QSUNfRkVERVJBVElPTl9SVUxFX0lEXCIpPz9cIlwiOyhKPXEuYXV0aGVudGljYXRpb24pLnNlcnZpY2VfYWNjb3VudF9pZD8/KEouc2VydmljZV9hY2NvdW50X2lkPXckKFwiQU5USFJPUElDX1NFUlZJQ0VfQUNDT1VOVF9JRFwiKSl9cmV0dXJue2NvbmZpZzpxLGZyb21GaWxlOiEwfX07dmFyIEp3PWFzeW5jKCQsUSk9PntpZigkPy5hdXRoZW50aWNhdGlvbi5jcmVkZW50aWFsc19wYXRoKXJldHVybiAkLmF1dGhlbnRpY2F0aW9uLmNyZWRlbnRpYWxzX3BhdGg7bGV0IEo9YXdhaXQgZ0coKTtpZighSilyZXR1cm4gbnVsbDtsZXQgWT1RPz9hd2FpdCBYdygpO2lmKCFZKXJldHVybiBudWxsO3JldHVybiAkdyhZKSwoYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpKS5qb2luKEosXCJjcmVkZW50aWFsc1wiLGAke1l9Lmpzb25gKX0sZ0c9YXN5bmMoKT0+e2lmKCFnaygpKXJldHVybiBudWxsO2xldCAkPWF3YWl0IGltcG9ydChcIm5vZGU6cGF0aFwiKSxRPXckKFwiQU5USFJPUElDX0NPTkZJR19ESVJcIik7aWYoUSlyZXR1cm4gUTtpZih0OSgpW1wiWC1TdGFpbmxlc3MtT1NcIl09PT1cIldpbmRvd3NcIil7bGV0IFc9dyQoXCJBUFBEQVRBXCIpO2lmKFcpcmV0dXJuICQuam9pbihXLFwiQW50aHJvcGljXCIpO2xldCBHPXckKFwiVVNFUlBST0ZJTEVcIik7aWYoRylyZXR1cm4gJC5qb2luKEcsXCJBcHBEYXRhXCIsXCJSb2FtaW5nXCIsXCJBbnRocm9waWNcIik7cmV0dXJuIG51bGx9bGV0IFk9dyQoXCJYREdfQ09ORklHX0hPTUVcIik7aWYoWSlyZXR1cm4gJC5qb2luKFksXCJhbnRocm9waWNcIik7bGV0IFg9dyQoXCJIT01FXCIpO2lmKFgpcmV0dXJuICQuam9pbihYLFwiLmNvbmZpZ1wiLFwiYW50aHJvcGljXCIpO3JldHVybiBudWxsfSxnaz0oKT0+e2xldCAkPXQ5KClbXCJYLVN0YWlubGVzcy1SdW50aW1lXCJdO3JldHVybiAkPT09XCJub2RlXCJ8fCQ9PT1cImRlbm9cIn0sWHc9YXN5bmMoKT0+e2xldCAkPWF3YWl0IGdHKCk7aWYoISQpcmV0dXJuIG51bGw7bGV0IFE9dyQoXCJBTlRIUk9QSUNfUFJPRklMRVwiKTtpZihRKXJldHVybiBRO2xldCBKPWF3YWl0IGltcG9ydChcIm5vZGU6ZnNcIiksWD0oYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpKS5qb2luKCQsXCJhY3RpdmVfY29uZmlnXCIpO3RyeXtyZXR1cm4oYXdhaXQgSi5wcm9taXNlcy5yZWFkRmlsZShYLFwidXRmLThcIikpLnRyaW0oKXx8XCJkZWZhdWx0XCJ9Y2F0Y2goVyl7aWYoVz8uY29kZSE9PVwiRU5PRU5UXCIpdGhyb3cgRXJyb3IoYGZhaWxlZCB0byByZWFkICR7WH06ICR7V31gKTtyZXR1cm5cImRlZmF1bHRcIn19O2Z1bmN0aW9uIGhHKCQpe2lmKCEkKXRocm93IG5ldyBnKFwiSWRlbnRpdHkgdG9rZW4gZmlsZSBwYXRoIGlzIGVtcHR5XCIpO3JldHVybiBhc3luYygpPT57bGV0IFE9YXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKSxKO3RyeXtKPWF3YWl0IFEucHJvbWlzZXMucmVhZEZpbGUoJCxcInV0Zi04XCIpfWNhdGNoKFgpe3Rocm93IG5ldyBnKGBGYWlsZWQgdG8gcmVhZCBpZGVudGl0eSB0b2tlbiBmaWxlIGF0ICR7JH06ICR7WH1gKX1sZXQgWT1KLnRyaW0oKTtpZighWSl0aHJvdyBuZXcgZyhgSWRlbnRpdHkgdG9rZW4gZmlsZSBhdCAkeyR9IGlzIGVtcHR5YCk7cmV0dXJuIFl9fWZ1bmN0aW9uIFl3KCQpe2lmKCEkKXRocm93IG5ldyBnKFwiSWRlbnRpdHkgdG9rZW4gdmFsdWUgaXMgZW1wdHlcIik7cmV0dXJuKCk9PiR9ZnVuY3Rpb24gV3coJCl7cmV0dXJuIGFzeW5jKCk9PntqWCgkLmJhc2VVUkwpO2xldCBRPWF3YWl0ICQuaWRlbnRpdHlUb2tlblByb3ZpZGVyKCk7aWYoUS5sZW5ndGg+MTYzODQpdGhyb3cgbmV3IE8kKGBJZGVudGl0eSB0b2tlbiBpcyAke01hdGguY2VpbChRLmxlbmd0aC8xMDI0KX0gS2lCLCBleGNlZWRzIHRoZSAxNiBLaUIgYXNzZXJ0aW9uIGxpbWl0YCk7bGV0IEo9e2dyYW50X3R5cGU6ZE4sYXNzZXJ0aW9uOlEsZmVkZXJhdGlvbl9ydWxlX2lkOiQuZmVkZXJhdGlvblJ1bGVJZCxvcmdhbml6YXRpb25faWQ6JC5vcmdhbml6YXRpb25JZH07aWYoJC5zZXJ2aWNlQWNjb3VudElkKUouc2VydmljZV9hY2NvdW50X2lkPSQuc2VydmljZUFjY291bnRJZDtpZigkLndvcmtzcGFjZUlkKUoud29ya3NwYWNlX2lkPSQud29ya3NwYWNlSWQ7bGV0IFk9YCR7JC5iYXNlVVJMfSR7TFh9YCxYO3RyeXtYPWF3YWl0ICQuZmV0Y2goWSx7bWV0aG9kOlwiUE9TVFwiLGhlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCIsXCJhbnRocm9waWMtYmV0YVwiOmAke1EwfSwke25OfWAsXCJVc2VyLUFnZW50XCI6JC51c2VyQWdlbnR8fGBhbnRocm9waWMtc2RrLXR5cGVzY3JpcHQvJHtkNn0gb2lkY0ZlZGVyYXRpb25Qcm92aWRlcmB9LGJvZHk6SlNPTi5zdHJpbmdpZnkoSil9KX1jYXRjaChIKXt0aHJvdyBuZXcgTyQoYEZhaWxlZCB0byByZWFjaCB0b2tlbiBlbmRwb2ludCAke1l9OiAke0h9YCl9bGV0IFc9WC5oZWFkZXJzLmdldChcIlJlcXVlc3QtSWRcIik7aWYoIVgub2spe2xldCBIPWF3YWl0IFgudGV4dCgpLmNhdGNoKCgpPT5cIlwiKSxxPUQ2KEgpLFY9XCJcIjtpZihYLnN0YXR1cz09PTQwMSlWPWAgRW5zdXJlIHlvdXIgZmVkZXJhdGlvbiBydWxlIG1hdGNoZXMgeW91ciBpZGVudGl0eSB0b2tlbi4gJHskLndvcmtzcGFjZUlkP1wiXCI6XCJJZiB5b3VyIGZlZGVyYXRpb24gcnVsZSBpcyBzY29wZWQgdG8gbXVsdGlwbGUgd29ya3NwYWNlcywgc2V0IHRoZSBBTlRIUk9QSUNfV09SS1NQQUNFX0lEIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgJ3dvcmtzcGFjZV9pZCcgY29uZmlnIGtleSwgb3IgdGhlIGB3b3Jrc3BhY2VJZGAgb3B0aW9uLiBcIn1WaWV3IHlvdXIgYXV0aGVudGljYXRpb24gZXZlbnRzIGluIHRoZSBXb3JrbG9hZCBpZGVudGl0eSBwYWdlIG9mIENsYXVkZSBDb25zb2xlIGZvciBtb3JlIGRldGFpbHMuYDt0aHJvdyBuZXcgTyQoYFRva2VuIGV4Y2hhbmdlIGZhaWxlZCB3aXRoIHN0YXR1cyAke1guc3RhdHVzfSR7Vz9gIChyZXF1ZXN0LWlkICR7V30pYDpcIlwifTogJHtxfSR7Vn1gLFguc3RhdHVzLHEsVyl9bGV0IEc9YXdhaXQgQVgoWCxXKSxVPU51bWJlcihHLmV4cGlyZXNfaW4pO2lmKCFOdW1iZXIuaXNGaW5pdGUoVSkpdGhyb3cgbmV3IE8kKGBUb2tlbiBlbmRwb2ludCByZXNwb25zZSBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShENihHKSl9YCxYLnN0YXR1cyxENihHKSxXKTtyZXR1cm57dG9rZW46Ry5hY2Nlc3NfdG9rZW4sZXhwaXJlc0F0Olc0KCkrVX19fWZ1bmN0aW9uIEd3KCQpe3JldHVybiBhc3luYyhRKT0+e2xldCBKPWF3YWl0IGltcG9ydChcIm5vZGU6ZnNcIik7YXdhaXQgSVgoJC5jcmVkZW50aWFsc1BhdGgsJC5vblNhZmV0eVdhcm5pbmcpO2xldCBZO3RyeXtZPWF3YWl0IEoucHJvbWlzZXMucmVhZEZpbGUoJC5jcmVkZW50aWFsc1BhdGgsXCJ1dGYtOFwiKX1jYXRjaChEKXt0aHJvdyBuZXcgTyQoYENyZWRlbnRpYWxzIGZpbGUgbm90IGZvdW5kIGF0ICR7JC5jcmVkZW50aWFsc1BhdGh9OiAke0R9YCl9bGV0IFg7dHJ5e1g9SlNPTi5wYXJzZShZKX1jYXRjaChEKXt0aHJvdyBuZXcgTyQoYENyZWRlbnRpYWxzIGZpbGUgYXQgJHskLmNyZWRlbnRpYWxzUGF0aH0gaXMgbm90IHZhbGlkIEpTT046ICR7RH1gKX1sZXQgVz1YLmFjY2Vzc190b2tlbjtpZighVyl0aHJvdyBuZXcgTyQoYENyZWRlbnRpYWxzIGZpbGUgYXQgJHskLmNyZWRlbnRpYWxzUGF0aH0gbXVzdCBpbmNsdWRlICdhY2Nlc3NfdG9rZW4nYCk7bGV0IEc9WC5leHBpcmVzX2F0O2lmKCFRPy5mb3JjZVJlZnJlc2gmJihHPT1udWxsfHxXNCgpPEctVzgpKXJldHVybnt0b2tlbjpXLGV4cGlyZXNBdDpHPz9udWxsfTtsZXQgVT1YLnJlZnJlc2hfdG9rZW47aWYoISQuY2xpZW50SWR8fCFVKXRocm93IG5ldyBPJChgQWNjZXNzIHRva2VuIGF0ICR7JC5jcmVkZW50aWFsc1BhdGh9IGhhcyBleHBpcmVkIGFuZCBubyByZWZyZXNoIGlzIGF2YWlsYWJsZSAoY2xpZW50X2lkICR7JC5jbGllbnRJZD9cInNldFwiOlwiZW1wdHlcIn0sIHJlZnJlc2hfdG9rZW4gJHtVP1wic2V0XCI6XCJlbXB0eVwifSlgKTtqWCgkLmJhc2VVUkwpO2xldCBIPXtncmFudF90eXBlOmlOLHJlZnJlc2hfdG9rZW46VSxjbGllbnRfaWQ6JC5jbGllbnRJZH0scT1gJHskLmJhc2VVUkx9JHtMWH1gLFY7dHJ5e1Y9YXdhaXQgJC5mZXRjaChxLHttZXRob2Q6XCJQT1NUXCIsaGVhZGVyczp7XCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIixcImFudGhyb3BpYy1iZXRhXCI6UTAsXCJVc2VyLUFnZW50XCI6JC51c2VyQWdlbnR8fGBhbnRocm9waWMtc2RrLXR5cGVzY3JpcHQvJHtkNn0gdXNlck9BdXRoUHJvdmlkZXJgfSxib2R5OkpTT04uc3RyaW5naWZ5KEgpfSl9Y2F0Y2goRCl7dGhyb3cgbmV3IE8kKGBVc2VyIE9BdXRoIHJlZnJlc2ggZmFpbGVkIHRvIHJlYWNoIHRva2VuIGVuZHBvaW50OiAke0R9YCl9bGV0IEI9Vi5oZWFkZXJzLmdldChcIlJlcXVlc3QtSWRcIik7aWYoIVYub2spe2xldCBEPWF3YWl0IFYudGV4dCgpLmNhdGNoKCgpPT5cIlwiKTt0aHJvdyBuZXcgTyQoYFVzZXIgT0F1dGggcmVmcmVzaCBmYWlsZWQgKEhUVFAgJHtWLnN0YXR1c30pOiAke0Q2KEQpfWAsVi5zdGF0dXMsRDYoRCksQil9bGV0IHo9YXdhaXQgQVgoVixCKSxOPU51bWJlcih6LmV4cGlyZXNfaW4pO2lmKCFOdW1iZXIuaXNGaW5pdGUoTikpdGhyb3cgbmV3IE8kKGBVc2VyIE9BdXRoIHJlZnJlc2ggcmVzcG9uc2UgbWlzc2luZyBvciBpbnZhbGlkIGV4cGlyZXNfaW46ICR7SlNPTi5zdHJpbmdpZnkoRDYoeikpfWAsVi5zdGF0dXMsRDYoeiksQik7bGV0IHc9VzQoKStOLE89ei5yZWZyZXNoX3Rva2VufHxVO3JldHVybiBhd2FpdCBSWCgkLmNyZWRlbnRpYWxzUGF0aCx7Li4uWCx2ZXJzaW9uOmJYLHR5cGU6XCJvYXV0aF90b2tlblwiLGFjY2Vzc190b2tlbjp6LmFjY2Vzc190b2tlbixleHBpcmVzX2F0OncscmVmcmVzaF90b2tlbjpPfSkse3Rva2VuOnouYWNjZXNzX3Rva2VuLGV4cGlyZXNBdDp3fX19ZnVuY3Rpb24gdUcoJCxRKXtsZXQgSj0kLmF1dGhlbnRpY2F0aW9uLmNyZWRlbnRpYWxzX3BhdGg/P251bGwsWT0oJC5iYXNlX3VybHx8US5iYXNlVVJMKS5yZXBsYWNlKC9cXC8rJC8sXCJcIiksWD1oaygkLEosWSxRKSxXPXt9O2lmKCQud29ya3NwYWNlX2lkJiYkLmF1dGhlbnRpY2F0aW9uLnR5cGU9PT1cInVzZXJfb2F1dGhcIilXW1wiYW50aHJvcGljLXdvcmtzcGFjZS1pZFwiXT0kLndvcmtzcGFjZV9pZDtyZXR1cm57cHJvdmlkZXI6WCxleHRyYUhlYWRlcnM6VyxiYXNlVVJMOiQuYmFzZV91cmx8fHZvaWQgMH19YXN5bmMgZnVuY3Rpb24gVXcoJCxRKXtsZXQgSj1hd2FpdCBRdyhRKTtpZighSilyZXR1cm4gbnVsbDtsZXR7Y29uZmlnOlksZnJvbUZpbGU6WH09SixXPVkuYXV0aGVudGljYXRpb24uY3JlZGVudGlhbHNfcGF0aHx8IVg/WTp7Li4uWSxhdXRoZW50aWNhdGlvbjp7Li4uWS5hdXRoZW50aWNhdGlvbixjcmVkZW50aWFsc19wYXRoOmF3YWl0IEp3KFksUSk/P3ZvaWQgMH19O3JldHVybiB1RyhXLCQpfWZ1bmN0aW9uIGhrKCQsUSxKLFkpe3N3aXRjaCgkLmF1dGhlbnRpY2F0aW9uLnR5cGUpe2Nhc2VcIm9pZGNfZmVkZXJhdGlvblwiOntsZXQgWD0kLmF1dGhlbnRpY2F0aW9uLFc9dWsoWCk7aWYoIVcpdGhyb3cgbmV3IE8kKFwib2lkY19mZWRlcmF0aW9uIGNvbmZpZyByZXF1aXJlcyBhbiBpZGVudGl0eSB0b2tlbiAoc2V0IGF1dGhlbnRpY2F0aW9uLmlkZW50aXR5X3Rva2VuLCBBTlRIUk9QSUNfSURFTlRJVFlfVE9LRU5fRklMRSwgb3IgQU5USFJPUElDX0lERU5USVRZX1RPS0VOKVwiKTtpZighWC5mZWRlcmF0aW9uX3J1bGVfaWQpdGhyb3cgbmV3IE8kKFwib2lkY19mZWRlcmF0aW9uIGNvbmZpZyByZXF1aXJlcyAnZmVkZXJhdGlvbl9ydWxlX2lkJy4gU2V0IGl0IGluIGF1dGhlbnRpY2F0aW9uLmZlZGVyYXRpb25fcnVsZV9pZCBpbiB5b3VyIHByb2ZpbGUsIG9yIHZpYSBBTlRIUk9QSUNfRkVERVJBVElPTl9SVUxFX0lEIChwcm9maWxlIHRha2VzIHByZWNlZGVuY2UpLlwiKTtpZighJC5vcmdhbml6YXRpb25faWQpdGhyb3cgbmV3IE8kKFwib2lkY19mZWRlcmF0aW9uIGNvbmZpZyByZXF1aXJlcyBvcmdhbml6YXRpb25faWQgKHNldCBBTlRIUk9QSUNfT1JHQU5JWkFUSU9OX0lEIG9yIGNvbmZpZy5vcmdhbml6YXRpb25faWQpXCIpO2xldCBHPVd3KHtpZGVudGl0eVRva2VuUHJvdmlkZXI6VyxmZWRlcmF0aW9uUnVsZUlkOlguZmVkZXJhdGlvbl9ydWxlX2lkLG9yZ2FuaXphdGlvbklkOiQub3JnYW5pemF0aW9uX2lkLHNlcnZpY2VBY2NvdW50SWQ6WC5zZXJ2aWNlX2FjY291bnRfaWQsd29ya3NwYWNlSWQ6JC53b3Jrc3BhY2VfaWQsYmFzZVVSTDpKLGZldGNoOlkuZmV0Y2gsdXNlckFnZW50OlkudXNlckFnZW50fSk7aWYoUSlyZXR1cm4gbWsoRyxRLFkub25DYWNoZVdyaXRlRXJyb3IsWS5vblNhZmV0eVdhcm5pbmcpO3JldHVybiBHfWNhc2VcInVzZXJfb2F1dGhcIjp7aWYoIVEpdGhyb3cgbmV3IE8kKFwidXNlcl9vYXV0aCBjb25maWcgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uY3JlZGVudGlhbHNfcGF0aCAob3IgbG9hZCB2aWEgYSBwcm9maWxlIHNvIGl0IGRlZmF1bHRzIHRvIDxjb25maWdfZGlyPi9jcmVkZW50aWFscy88cHJvZmlsZT4uanNvbilcIik7cmV0dXJuIEd3KHtjcmVkZW50aWFsc1BhdGg6USxjbGllbnRJZDokLmF1dGhlbnRpY2F0aW9uLmNsaWVudF9pZCxiYXNlVVJMOkosZmV0Y2g6WS5mZXRjaCx1c2VyQWdlbnQ6WS51c2VyQWdlbnQsb25TYWZldHlXYXJuaW5nOlkub25TYWZldHlXYXJuaW5nfSl9ZGVmYXVsdDp7bGV0IFg9JC5hdXRoZW50aWNhdGlvbi50eXBlO3Rocm93IG5ldyBPJChgYXV0aGVudGljYXRpb24udHlwZSBcIiR7WH1cIiBpcyBub3QgYSBrbm93biBhdXRoZW50aWNhdGlvbiB0eXBlYCl9fX1mdW5jdGlvbiB1aygkKXtpZigkLmlkZW50aXR5X3Rva2VuKXtsZXQgWT0kLmlkZW50aXR5X3Rva2VuLnNvdXJjZTtpZihZIT09XCJmaWxlXCIpdGhyb3cgbmV3IE8kKGBpZGVudGl0eV90b2tlbi5zb3VyY2UgXCIke1l9XCIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIFNESyB2ZXJzaW9uIChvbmx5IFwiZmlsZVwiKWApO2lmKCEkLmlkZW50aXR5X3Rva2VuLnBhdGgpdGhyb3cgbmV3IE8kKCdpZGVudGl0eV90b2tlbi5zb3VyY2UgXCJmaWxlXCIgcmVxdWlyZXMgYSBub24tZW1wdHkgcGF0aCcpO3JldHVybiBoRygkLmlkZW50aXR5X3Rva2VuLnBhdGgpfWxldCBRPXckKFwiQU5USFJPUElDX0lERU5USVRZX1RPS0VOX0ZJTEVcIik7aWYoUSlyZXR1cm4gaEcoUSk7bGV0IEo9dyQoXCJBTlRIUk9QSUNfSURFTlRJVFlfVE9LRU5cIik7aWYoSilyZXR1cm4gWXcoSik7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbWsoJCxRLEosWSl7cmV0dXJuIGFzeW5jKFgpPT57bGV0IFc9YXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKTthd2FpdCBJWChRLFkpO2xldCBHO3RyeXtsZXQgSD1hd2FpdCBXLnByb21pc2VzLnJlYWRGaWxlKFEsXCJ1dGYtOFwiKTtHPUpTT04ucGFyc2UoSCk7bGV0IHE9Rz8uYWNjZXNzX3Rva2VuO2lmKHEmJiFYPy5mb3JjZVJlZnJlc2gpe2xldCBWPUc/LmV4cGlyZXNfYXQ7aWYoVj09bnVsbHx8VzQoKTxWLVc4KXJldHVybnt0b2tlbjpxLGV4cGlyZXNBdDpWPz9udWxsfX19Y2F0Y2goSCl7aWYoSD8uY29kZSE9PVwiRU5PRU5UXCImJiEoSCBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSlKPy4oSCl9bGV0IFU9YXdhaXQgJChYKTt0cnl7YXdhaXQgUlgoUSx7Li4uRz8/e30sdmVyc2lvbjpiWCx0eXBlOlwib2F1dGhfdG9rZW5cIixhY2Nlc3NfdG9rZW46VS50b2tlbixleHBpcmVzX2F0OlUuZXhwaXJlc0F0fSl9Y2F0Y2goSCl7Sj8uKEgpfXJldHVybiBVfX12YXIgazYsdjY7Y2xhc3MgejF7Y29uc3RydWN0b3IoKXtrNi5zZXQodGhpcyx2b2lkIDApLHY2LnNldCh0aGlzLHZvaWQgMCksZih0aGlzLGs2LG5ldyBVaW50OEFycmF5LFwiZlwiKSxmKHRoaXMsdjYsbnVsbCxcImZcIil9ZGVjb2RlKCQpe2lmKCQ9PW51bGwpcmV0dXJuW107bGV0IFE9JCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KCQpOnR5cGVvZiAkPT09XCJzdHJpbmdcIj9HOCgkKTokO2YodGhpcyxrNixzTihbWih0aGlzLGs2LFwiZlwiKSxRXSksXCJmXCIpO2xldCBKPVtdLFk7d2hpbGUoKFk9bGsoWih0aGlzLGs2LFwiZlwiKSxaKHRoaXMsdjYsXCJmXCIpKSkhPW51bGwpe2lmKFkuY2FycmlhZ2UmJloodGhpcyx2NixcImZcIik9PW51bGwpe2YodGhpcyx2NixZLmluZGV4LFwiZlwiKTtjb250aW51ZX1pZihaKHRoaXMsdjYsXCJmXCIpIT1udWxsJiYoWS5pbmRleCE9PVoodGhpcyx2NixcImZcIikrMXx8WS5jYXJyaWFnZSkpe0oucHVzaChmRyhaKHRoaXMsazYsXCJmXCIpLnN1YmFycmF5KDAsWih0aGlzLHY2LFwiZlwiKS0xKSkpLGYodGhpcyxrNixaKHRoaXMsazYsXCJmXCIpLnN1YmFycmF5KFoodGhpcyx2NixcImZcIikpLFwiZlwiKSxmKHRoaXMsdjYsbnVsbCxcImZcIik7Y29udGludWV9bGV0IFg9Wih0aGlzLHY2LFwiZlwiKSE9PW51bGw/WS5wcmVjZWRpbmctMTpZLnByZWNlZGluZyxXPWZHKFoodGhpcyxrNixcImZcIikuc3ViYXJyYXkoMCxYKSk7Si5wdXNoKFcpLGYodGhpcyxrNixaKHRoaXMsazYsXCJmXCIpLnN1YmFycmF5KFkuaW5kZXgpLFwiZlwiKSxmKHRoaXMsdjYsbnVsbCxcImZcIil9cmV0dXJuIEp9Zmx1c2goKXtpZighWih0aGlzLGs2LFwiZlwiKS5sZW5ndGgpcmV0dXJuW107cmV0dXJuIHRoaXMuZGVjb2RlKGBcbmApfX1rNj1uZXcgV2Vha01hcCx2Nj1uZXcgV2Vha01hcDt6MS5ORVdMSU5FX0NIQVJTPW5ldyBTZXQoW2BcbmAsXCJcXHJcIl0pO3oxLk5FV0xJTkVfUkVHRVhQPS9cXHJcXG58W1xcblxccl0vZztmdW5jdGlvbiBsaygkLFEpe2ZvcihsZXQgWD1RPz8wO1g8JC5sZW5ndGg7WCsrKXtpZigkW1hdPT09MTApcmV0dXJue3ByZWNlZGluZzpYLGluZGV4OlgrMSxjYXJyaWFnZTohMX07aWYoJFtYXT09PTEzKXJldHVybntwcmVjZWRpbmc6WCxpbmRleDpYKzEsY2FycmlhZ2U6ITB9fXJldHVybiBudWxsfWZ1bmN0aW9uIEh3KCQpe2ZvcihsZXQgWT0wO1k8JC5sZW5ndGgtMTtZKyspe2lmKCRbWV09PT0xMCYmJFtZKzFdPT09MTApcmV0dXJuIFkrMjtpZigkW1ldPT09MTMmJiRbWSsxXT09PTEzKXJldHVybiBZKzI7aWYoJFtZXT09PTEzJiYkW1krMV09PT0xMCYmWSszPCQubGVuZ3RoJiYkW1krMl09PT0xMyYmJFtZKzNdPT09MTApcmV0dXJuIFkrNH1yZXR1cm4tMX12YXIgZTk7Y2xhc3MgQzZ7Y29uc3RydWN0b3IoJCxRLEope3RoaXMuaXRlcmF0b3I9JCxlOS5zZXQodGhpcyx2b2lkIDApLHRoaXMuY29udHJvbGxlcj1RLGYodGhpcyxlOSxKLFwiZlwiKX1zdGF0aWMgZnJvbVNTRVJlc3BvbnNlKCQsUSxKKXtsZXQgWT0hMSxYPUo/dSQoSik6Y29uc29sZTthc3luYyBmdW5jdGlvbipXKCl7aWYoWSl0aHJvdyBuZXcgZyhcIkNhbm5vdCBpdGVyYXRlIG92ZXIgYSBjb25zdW1lZCBzdHJlYW0sIHVzZSBgLnRlZSgpYCB0byBzcGxpdCB0aGUgc3RyZWFtLlwiKTtZPSEwO2xldCBHPSExO3RyeXtmb3IgYXdhaXQobGV0IFUgb2YgY2soJCxRKSl7aWYoVS5ldmVudD09PVwiY29tcGxldGlvblwiKXRyeXt5aWVsZCBKU09OLnBhcnNlKFUuZGF0YSl9Y2F0Y2goSCl7dGhyb3cgWC5lcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBtZXNzYWdlIGludG8gSlNPTjpcIixVLmRhdGEpLFguZXJyb3IoXCJGcm9tIGNodW5rOlwiLFUucmF3KSxIfWlmKFUuZXZlbnQ9PT1cIm1lc3NhZ2Vfc3RhcnRcInx8VS5ldmVudD09PVwibWVzc2FnZV9kZWx0YVwifHxVLmV2ZW50PT09XCJtZXNzYWdlX3N0b3BcInx8VS5ldmVudD09PVwiY29udGVudF9ibG9ja19zdGFydFwifHxVLmV2ZW50PT09XCJjb250ZW50X2Jsb2NrX2RlbHRhXCJ8fFUuZXZlbnQ9PT1cImNvbnRlbnRfYmxvY2tfc3RvcFwifHxVLmV2ZW50PT09XCJtZXNzYWdlXCJ8fFUuZXZlbnQ9PT1cInVzZXIubWVzc2FnZVwifHxVLmV2ZW50PT09XCJ1c2VyLmludGVycnVwdFwifHxVLmV2ZW50PT09XCJ1c2VyLnRvb2xfY29uZmlybWF0aW9uXCJ8fFUuZXZlbnQ9PT1cInVzZXIuY3VzdG9tX3Rvb2xfcmVzdWx0XCJ8fFUuZXZlbnQ9PT1cImFnZW50Lm1lc3NhZ2VcInx8VS5ldmVudD09PVwiYWdlbnQudGhpbmtpbmdcInx8VS5ldmVudD09PVwiYWdlbnQudG9vbF91c2VcInx8VS5ldmVudD09PVwiYWdlbnQudG9vbF9yZXN1bHRcInx8VS5ldmVudD09PVwiYWdlbnQubWNwX3Rvb2xfdXNlXCJ8fFUuZXZlbnQ9PT1cImFnZW50Lm1jcF90b29sX3Jlc3VsdFwifHxVLmV2ZW50PT09XCJhZ2VudC5jdXN0b21fdG9vbF91c2VcInx8VS5ldmVudD09PVwiYWdlbnQudGhyZWFkX2NvbnRleHRfY29tcGFjdGVkXCJ8fFUuZXZlbnQ9PT1cInNlc3Npb24uc3RhdHVzX3J1bm5pbmdcInx8VS5ldmVudD09PVwic2Vzc2lvbi5zdGF0dXNfaWRsZVwifHxVLmV2ZW50PT09XCJzZXNzaW9uLnN0YXR1c19yZXNjaGVkdWxlZFwifHxVLmV2ZW50PT09XCJzZXNzaW9uLnN0YXR1c190ZXJtaW5hdGVkXCJ8fFUuZXZlbnQ9PT1cInNlc3Npb24uZXJyb3JcInx8VS5ldmVudD09PVwic2Vzc2lvbi5kZWxldGVkXCJ8fFUuZXZlbnQ9PT1cInNwYW4ubW9kZWxfcmVxdWVzdF9zdGFydFwifHxVLmV2ZW50PT09XCJzcGFuLm1vZGVsX3JlcXVlc3RfZW5kXCIpdHJ5e3lpZWxkIEpTT04ucGFyc2UoVS5kYXRhKX1jYXRjaChIKXt0aHJvdyBYLmVycm9yKFwiQ291bGQgbm90IHBhcnNlIG1lc3NhZ2UgaW50byBKU09OOlwiLFUuZGF0YSksWC5lcnJvcihcIkZyb20gY2h1bms6XCIsVS5yYXcpLEh9aWYoVS5ldmVudD09PVwicGluZ1wiKWNvbnRpbnVlO2lmKFUuZXZlbnQ9PT1cImVycm9yXCIpe2xldCBIPVpYKFUuZGF0YSk/P1UuZGF0YSxxPUg/LmVycm9yPy50eXBlO3Rocm93IG5ldyBuJCh2b2lkIDAsSCx2b2lkIDAsJC5oZWFkZXJzLHEpfX1HPSEwfWNhdGNoKFUpe2lmKGY0KFUpKXJldHVybjt0aHJvdyBVfWZpbmFsbHl7aWYoIUcpUS5hYm9ydCgpfX1yZXR1cm4gbmV3IEM2KFcsUSxKKX1zdGF0aWMgZnJvbVJlYWRhYmxlU3RyZWFtKCQsUSxKKXtsZXQgWT0hMTthc3luYyBmdW5jdGlvbipYKCl7bGV0IEc9bmV3IHoxLFU9YTkoJCk7Zm9yIGF3YWl0KGxldCBIIG9mIFUpZm9yKGxldCBxIG9mIEcuZGVjb2RlKEgpKXlpZWxkIHE7Zm9yKGxldCBIIG9mIEcuZmx1c2goKSl5aWVsZCBIfWFzeW5jIGZ1bmN0aW9uKlcoKXtpZihZKXRocm93IG5ldyBnKFwiQ2Fubm90IGl0ZXJhdGUgb3ZlciBhIGNvbnN1bWVkIHN0cmVhbSwgdXNlIGAudGVlKClgIHRvIHNwbGl0IHRoZSBzdHJlYW0uXCIpO1k9ITA7bGV0IEc9ITE7dHJ5e2ZvciBhd2FpdChsZXQgVSBvZiBYKCkpe2lmKEcpY29udGludWU7aWYoVSl5aWVsZCBKU09OLnBhcnNlKFUpfUc9ITB9Y2F0Y2goVSl7aWYoZjQoVSkpcmV0dXJuO3Rocm93IFV9ZmluYWxseXtpZighRylRLmFib3J0KCl9fXJldHVybiBuZXcgQzYoVyxRLEopfVsoZTk9bmV3IFdlYWtNYXAsU3ltYm9sLmFzeW5jSXRlcmF0b3IpXSgpe3JldHVybiB0aGlzLml0ZXJhdG9yKCl9dGVlKCl7bGV0ICQ9W10sUT1bXSxKPXRoaXMuaXRlcmF0b3IoKSxZPShYKT0+e3JldHVybntuZXh0OigpPT57aWYoWC5sZW5ndGg9PT0wKXtsZXQgVz1KLm5leHQoKTskLnB1c2goVyksUS5wdXNoKFcpfXJldHVybiBYLnNoaWZ0KCl9fX07cmV0dXJuW25ldyBDNigoKT0+WSgkKSx0aGlzLmNvbnRyb2xsZXIsWih0aGlzLGU5LFwiZlwiKSksbmV3IEM2KCgpPT5ZKFEpLHRoaXMuY29udHJvbGxlcixaKHRoaXMsZTksXCJmXCIpKV19dG9SZWFkYWJsZVN0cmVhbSgpe2xldCAkPXRoaXMsUTtyZXR1cm4gQ0coe2FzeW5jIHN0YXJ0KCl7UT0kW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpfSxhc3luYyBwdWxsKEope3RyeXtsZXR7dmFsdWU6WSxkb25lOlh9PWF3YWl0IFEubmV4dCgpO2lmKFgpcmV0dXJuIEouY2xvc2UoKTtsZXQgVz1HOChKU09OLnN0cmluZ2lmeShZKStgXG5gKTtKLmVucXVldWUoVyl9Y2F0Y2goWSl7Si5lcnJvcihZKX19LGFzeW5jIGNhbmNlbCgpe2F3YWl0IFEucmV0dXJuPy4oKX19KX19YXN5bmMgZnVuY3Rpb24qY2soJCxRKXtpZighJC5ib2R5KXtpZihRLmFib3J0KCksdHlwZW9mIGdsb2JhbFRoaXMubmF2aWdhdG9yPFwidVwiJiZnbG9iYWxUaGlzLm5hdmlnYXRvci5wcm9kdWN0PT09XCJSZWFjdE5hdGl2ZVwiKXRocm93IG5ldyBnKFwiVGhlIGRlZmF1bHQgcmVhY3QtbmF0aXZlIGZldGNoIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLiBQbGVhc2UgdXNlIGV4cG8vZmV0Y2g6IGh0dHBzOi8vZG9jcy5leHBvLmRldi92ZXJzaW9ucy9sYXRlc3Qvc2RrL2V4cG8vI2V4cG9mZXRjaC1hcGlcIik7dGhyb3cgbmV3IGcoXCJBdHRlbXB0ZWQgdG8gaXRlcmF0ZSBvdmVyIGEgcmVzcG9uc2Ugd2l0aCBubyBib2R5XCIpfWxldCBKPW5ldyBLdyxZPW5ldyB6MSxYPWE5KCQuYm9keSk7Zm9yIGF3YWl0KGxldCBXIG9mIHBrKFgpKWZvcihsZXQgRyBvZiBZLmRlY29kZShXKSl7bGV0IFU9Si5kZWNvZGUoRyk7aWYoVSl5aWVsZCBVfWZvcihsZXQgVyBvZiBZLmZsdXNoKCkpe2xldCBHPUouZGVjb2RlKFcpO2lmKEcpeWllbGQgR319YXN5bmMgZnVuY3Rpb24qcGsoJCl7bGV0IFE9bmV3IFVpbnQ4QXJyYXk7Zm9yIGF3YWl0KGxldCBKIG9mICQpe2lmKEo9PW51bGwpY29udGludWU7bGV0IFk9SiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KEopOnR5cGVvZiBKPT09XCJzdHJpbmdcIj9HOChKKTpKLFg9bmV3IFVpbnQ4QXJyYXkoUS5sZW5ndGgrWS5sZW5ndGgpO1guc2V0KFEpLFguc2V0KFksUS5sZW5ndGgpLFE9WDtsZXQgVzt3aGlsZSgoVz1IdyhRKSkhPT0tMSl5aWVsZCBRLnNsaWNlKDAsVyksUT1RLnNsaWNlKFcpfWlmKFEubGVuZ3RoPjApeWllbGQgUX1jbGFzcyBLd3tjb25zdHJ1Y3Rvcigpe3RoaXMuZXZlbnQ9bnVsbCx0aGlzLmRhdGE9W10sdGhpcy5jaHVua3M9W119ZGVjb2RlKCQpe2lmKCQuZW5kc1dpdGgoXCJcXHJcIikpJD0kLnN1YnN0cmluZygwLCQubGVuZ3RoLTEpO2lmKCEkKXtpZighdGhpcy5ldmVudCYmIXRoaXMuZGF0YS5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IFg9e2V2ZW50OnRoaXMuZXZlbnQsZGF0YTp0aGlzLmRhdGEuam9pbihgXG5gKSxyYXc6dGhpcy5jaHVua3N9O3JldHVybiB0aGlzLmV2ZW50PW51bGwsdGhpcy5kYXRhPVtdLHRoaXMuY2h1bmtzPVtdLFh9aWYodGhpcy5jaHVua3MucHVzaCgkKSwkLnN0YXJ0c1dpdGgoXCI6XCIpKXJldHVybiBudWxsO2xldFtRLEosWV09ZGsoJCxcIjpcIik7aWYoWS5zdGFydHNXaXRoKFwiIFwiKSlZPVkuc3Vic3RyaW5nKDEpO2lmKFE9PT1cImV2ZW50XCIpdGhpcy5ldmVudD1ZO2Vsc2UgaWYoUT09PVwiZGF0YVwiKXRoaXMuZGF0YS5wdXNoKFkpO3JldHVybiBudWxsfX1mdW5jdGlvbiBkaygkLFEpe2xldCBKPSQuaW5kZXhPZihRKTtpZihKIT09LTEpcmV0dXJuWyQuc3Vic3RyaW5nKDAsSiksUSwkLnN1YnN0cmluZyhKK1EubGVuZ3RoKV07cmV0dXJuWyQsXCJcIixcIlwiXX1hc3luYyBmdW5jdGlvbiBfWCgkLFEpe2xldHtyZXNwb25zZTpKLHJlcXVlc3RMb2dJRDpZLHJldHJ5T2ZSZXF1ZXN0TG9nSUQ6WCxzdGFydFRpbWU6V309USxHPWF3YWl0KGFzeW5jKCk9PntpZihRLm9wdGlvbnMuc3RyZWFtKXtpZih1JCgkKS5kZWJ1ZyhcInJlc3BvbnNlXCIsSi5zdGF0dXMsSi51cmwsSi5oZWFkZXJzLEouYm9keSksUS5vcHRpb25zLl9fc3RyZWFtQ2xhc3MpcmV0dXJuIFEub3B0aW9ucy5fX3N0cmVhbUNsYXNzLmZyb21TU0VSZXNwb25zZShKLFEuY29udHJvbGxlcik7cmV0dXJuIEM2LmZyb21TU0VSZXNwb25zZShKLFEuY29udHJvbGxlcil9aWYoSi5zdGF0dXM9PT0yMDQpcmV0dXJuIG51bGw7aWYoUS5vcHRpb25zLl9fYmluYXJ5UmVzcG9uc2UpcmV0dXJuIEo7bGV0IEg9Si5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKT8uc3BsaXQoXCI7XCIpWzBdPy50cmltKCk7aWYoSD8uaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpfHxIPy5lbmRzV2l0aChcIitqc29uXCIpKXtpZihKLmhlYWRlcnMuZ2V0KFwiY29udGVudC1sZW5ndGhcIik9PT1cIjBcIilyZXR1cm47bGV0IHo9YXdhaXQgSi5qc29uKCk7cmV0dXJuIG1HKHosSil9cmV0dXJuIGF3YWl0IEoudGV4dCgpfSkoKTtyZXR1cm4gdSQoJCkuZGVidWcoYFske1l9XSByZXNwb25zZSBwYXJzZWRgLHk0KHtyZXRyeU9mUmVxdWVzdExvZ0lEOlgsdXJsOkoudXJsLHN0YXR1czpKLnN0YXR1cyxib2R5OkcsZHVyYXRpb25NczpEYXRlLm5vdygpLVd9KSksR31mdW5jdGlvbiBtRygkLFEpe2lmKCEkfHx0eXBlb2YgJCE9PVwib2JqZWN0XCJ8fEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuICQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkLFwiX3JlcXVlc3RfaWRcIix7dmFsdWU6US5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIiksZW51bWVyYWJsZTohMX0pfXZhciAkNztjbGFzcyBKMCBleHRlbmRzIFByb21pc2V7Y29uc3RydWN0b3IoJCxRLEo9X1gpe3N1cGVyKChZKT0+e1kobnVsbCl9KTt0aGlzLnJlc3BvbnNlUHJvbWlzZT1RLHRoaXMucGFyc2VSZXNwb25zZT1KLCQ3LnNldCh0aGlzLHZvaWQgMCksZih0aGlzLCQ3LCQsXCJmXCIpfV90aGVuVW53cmFwKCQpe3JldHVybiBuZXcgSjAoWih0aGlzLCQ3LFwiZlwiKSx0aGlzLnJlc3BvbnNlUHJvbWlzZSxhc3luYyhRLEopPT5tRygkKGF3YWl0IHRoaXMucGFyc2VSZXNwb25zZShRLEopLEopLEoucmVzcG9uc2UpKX1hc1Jlc3BvbnNlKCl7cmV0dXJuIHRoaXMucmVzcG9uc2VQcm9taXNlLnRoZW4oKCQpPT4kLnJlc3BvbnNlKX1hc3luYyB3aXRoUmVzcG9uc2UoKXtsZXRbJCxRXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wYXJzZSgpLHRoaXMuYXNSZXNwb25zZSgpXSk7cmV0dXJue2RhdGE6JCxyZXNwb25zZTpRLHJlcXVlc3RfaWQ6US5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIil9fXBhcnNlKCl7aWYoIXRoaXMucGFyc2VkUHJvbWlzZSl0aGlzLnBhcnNlZFByb21pc2U9dGhpcy5yZXNwb25zZVByb21pc2UudGhlbigoJCk9PnRoaXMucGFyc2VSZXNwb25zZShaKHRoaXMsJDcsXCJmXCIpLCQpKTtyZXR1cm4gdGhpcy5wYXJzZWRQcm9taXNlfXRoZW4oJCxRKXtyZXR1cm4gdGhpcy5wYXJzZSgpLnRoZW4oJCxRKX1jYXRjaCgkKXtyZXR1cm4gdGhpcy5wYXJzZSgpLmNhdGNoKCQpfWZpbmFsbHkoJCl7cmV0dXJuIHRoaXMucGFyc2UoKS5maW5hbGx5KCQpfX0kNz1uZXcgV2Vha01hcDt2YXIgU1g7Y2xhc3MgbEd7Y29uc3RydWN0b3IoJCxRLEosWSl7U1guc2V0KHRoaXMsdm9pZCAwKSxmKHRoaXMsU1gsJCxcImZcIiksdGhpcy5vcHRpb25zPVksdGhpcy5yZXNwb25zZT1RLHRoaXMuYm9keT1KfWhhc05leHRQYWdlKCl7aWYoIXRoaXMuZ2V0UGFnaW5hdGVkSXRlbXMoKS5sZW5ndGgpcmV0dXJuITE7cmV0dXJuIHRoaXMubmV4dFBhZ2VSZXF1ZXN0T3B0aW9ucygpIT1udWxsfWFzeW5jIGdldE5leHRQYWdlKCl7bGV0ICQ9dGhpcy5uZXh0UGFnZVJlcXVlc3RPcHRpb25zKCk7aWYoISQpdGhyb3cgbmV3IGcoXCJObyBuZXh0IHBhZ2UgZXhwZWN0ZWQ7IHBsZWFzZSBjaGVjayBgLmhhc05leHRQYWdlKClgIGJlZm9yZSBjYWxsaW5nIGAuZ2V0TmV4dFBhZ2UoKWAuXCIpO3JldHVybiBhd2FpdCBaKHRoaXMsU1gsXCJmXCIpLnJlcXVlc3RBUElMaXN0KHRoaXMuY29uc3RydWN0b3IsJCl9YXN5bmMqaXRlclBhZ2VzKCl7bGV0ICQ9dGhpczt5aWVsZCAkO3doaWxlKCQuaGFzTmV4dFBhZ2UoKSkkPWF3YWl0ICQuZ2V0TmV4dFBhZ2UoKSx5aWVsZCAkfWFzeW5jKlsoU1g9bmV3IFdlYWtNYXAsU3ltYm9sLmFzeW5jSXRlcmF0b3IpXSgpe2ZvciBhd2FpdChsZXQgJCBvZiB0aGlzLml0ZXJQYWdlcygpKWZvcihsZXQgUSBvZiAkLmdldFBhZ2luYXRlZEl0ZW1zKCkpeWllbGQgUX19Y2xhc3Mga1ggZXh0ZW5kcyBKMHtjb25zdHJ1Y3RvcigkLFEsSil7c3VwZXIoJCxRLGFzeW5jKFksWCk9Pm5ldyBKKFksWC5yZXNwb25zZSxhd2FpdCBfWChZLFgpLFgub3B0aW9ucykpfWFzeW5jKltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtsZXQgJD1hd2FpdCB0aGlzO2ZvciBhd2FpdChsZXQgUSBvZiAkKXlpZWxkIFF9fWNsYXNzIEc0IGV4dGVuZHMgbEd7Y29uc3RydWN0b3IoJCxRLEosWSl7c3VwZXIoJCxRLEosWSk7dGhpcy5kYXRhPUouZGF0YXx8W10sdGhpcy5oYXNfbW9yZT1KLmhhc19tb3JlfHwhMSx0aGlzLmZpcnN0X2lkPUouZmlyc3RfaWR8fG51bGwsdGhpcy5sYXN0X2lkPUoubGFzdF9pZHx8bnVsbH1nZXRQYWdpbmF0ZWRJdGVtcygpe3JldHVybiB0aGlzLmRhdGE/P1tdfWhhc05leHRQYWdlKCl7aWYodGhpcy5oYXNfbW9yZT09PSExKXJldHVybiExO3JldHVybiBzdXBlci5oYXNOZXh0UGFnZSgpfW5leHRQYWdlUmVxdWVzdE9wdGlvbnMoKXtpZih0aGlzLm9wdGlvbnMucXVlcnk/LmJlZm9yZV9pZCl7bGV0IFE9dGhpcy5maXJzdF9pZDtpZighUSlyZXR1cm4gbnVsbDtyZXR1cm57Li4udGhpcy5vcHRpb25zLHF1ZXJ5OnsuLi5GWCh0aGlzLm9wdGlvbnMucXVlcnkpLGJlZm9yZV9pZDpRfX19bGV0ICQ9dGhpcy5sYXN0X2lkO2lmKCEkKXJldHVybiBudWxsO3JldHVybnsuLi50aGlzLm9wdGlvbnMscXVlcnk6ey4uLkZYKHRoaXMub3B0aW9ucy5xdWVyeSksYWZ0ZXJfaWQ6JH19fX1jbGFzcyBEJCBleHRlbmRzIGxHe2NvbnN0cnVjdG9yKCQsUSxKLFkpe3N1cGVyKCQsUSxKLFkpO3RoaXMuZGF0YT1KLmRhdGF8fFtdLHRoaXMubmV4dF9wYWdlPUoubmV4dF9wYWdlfHxudWxsfWdldFBhZ2luYXRlZEl0ZW1zKCl7cmV0dXJuIHRoaXMuZGF0YT8/W119bmV4dFBhZ2VSZXF1ZXN0T3B0aW9ucygpe2xldCAkPXRoaXMubmV4dF9wYWdlO2lmKCEkKXJldHVybiBudWxsO3JldHVybnsuLi50aGlzLm9wdGlvbnMscXVlcnk6ey4uLkZYKHRoaXMub3B0aW9ucy5xdWVyeSkscGFnZTokfX19fXZhciBwRz0oKT0+e2lmKHR5cGVvZiBGaWxlPlwidVwiKXtsZXR7cHJvY2VzczokfT1nbG9iYWxUaGlzLFE9dHlwZW9mICQ/LnZlcnNpb25zPy5ub2RlPT09XCJzdHJpbmdcIiYmcGFyc2VJbnQoJC52ZXJzaW9ucy5ub2RlLnNwbGl0KFwiLlwiKSk8MjA7dGhyb3cgRXJyb3IoXCJgRmlsZWAgaXMgbm90IGRlZmluZWQgYXMgYSBnbG9iYWwsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBmaWxlIHVwbG9hZHMuXCIrKFE/XCIgVXBkYXRlIHRvIE5vZGUgMjAgTFRTIG9yIG5ld2VyLCBvciBzZXQgYGdsb2JhbFRoaXMuRmlsZWAgdG8gYGltcG9ydCgnbm9kZTpidWZmZXInKS5GaWxlYC5cIjpcIlwiKSl9fTtmdW5jdGlvbiBYMCgkLFEsSil7cmV0dXJuIHBHKCksbmV3IEZpbGUoJCxRPz9cInVua25vd25fZmlsZVwiLEopfWZ1bmN0aW9uIFE3KCQsUSl7bGV0IEo9dHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCYmKChcIm5hbWVcImluICQpJiYkLm5hbWUmJlN0cmluZygkLm5hbWUpfHwoXCJ1cmxcImluICQpJiYkLnVybCYmU3RyaW5nKCQudXJsKXx8KFwiZmlsZW5hbWVcImluICQpJiYkLmZpbGVuYW1lJiZTdHJpbmcoJC5maWxlbmFtZSl8fChcInBhdGhcImluICQpJiYkLnBhdGgmJlN0cmluZygkLnBhdGgpKXx8XCJcIjtyZXR1cm4gUT9KLnNwbGl0KC9bXFxcXC9dLykucG9wKCl8fHZvaWQgMDpKfXZhciBkRz0oJCk9PiQhPW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmdHlwZW9mICRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPT09XCJmdW5jdGlvblwiO3ZhciBVOD1hc3luYygkLFEsSj0hMCk9PntyZXR1cm57Li4uJCxib2R5OmF3YWl0IHJrKCQuYm9keSxRLEopfX0scXc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbmsoJCl7bGV0IFE9dHlwZW9mICQ9PT1cImZ1bmN0aW9uXCI/JDokLmZldGNoLEo9cXcuZ2V0KFEpO2lmKEopcmV0dXJuIEo7bGV0IFk9KGFzeW5jKCk9Pnt0cnl7bGV0IFg9XCJSZXNwb25zZVwiaW4gUT9RLlJlc3BvbnNlOihhd2FpdCBRKFwiZGF0YTosXCIpKS5jb25zdHJ1Y3RvcixXPW5ldyBGb3JtRGF0YTtpZihXLnRvU3RyaW5nKCk9PT1hd2FpdCBuZXcgWChXKS50ZXh0KCkpcmV0dXJuITE7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITB9fSkoKTtyZXR1cm4gcXcuc2V0KFEsWSksWX12YXIgcms9YXN5bmMoJCxRLEo9ITApPT57aWYoIWF3YWl0IG5rKFEpKXRocm93IFR5cGVFcnJvcihcIlRoZSBwcm92aWRlZCBmZXRjaCBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgdXBsb2FkcyB3aXRoIHRoZSBjdXJyZW50IGdsb2JhbCBGb3JtRGF0YSBjbGFzcy5cIik7bGV0IFk9bmV3IEZvcm1EYXRhO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcygkfHx7fSkubWFwKChbWCxXXSk9PmNHKFksWCxXLEopKSksWX0sb2s9KCQpPT4kIGluc3RhbmNlb2YgQmxvYiYmKFwibmFtZVwiaW4gJCk7dmFyIGNHPWFzeW5jKCQsUSxKLFkpPT57aWYoSj09PXZvaWQgMClyZXR1cm47aWYoSj09bnVsbCl0aHJvdyBUeXBlRXJyb3IoYFJlY2VpdmVkIG51bGwgZm9yIFwiJHtRfVwiOyB0byBwYXNzIG51bGwgaW4gRm9ybURhdGEsIHlvdSBtdXN0IHVzZSB0aGUgc3RyaW5nICdudWxsJ2ApO2lmKHR5cGVvZiBKPT09XCJzdHJpbmdcInx8dHlwZW9mIEo9PT1cIm51bWJlclwifHx0eXBlb2YgSj09PVwiYm9vbGVhblwiKSQuYXBwZW5kKFEsU3RyaW5nKEopKTtlbHNlIGlmKEogaW5zdGFuY2VvZiBSZXNwb25zZSl7bGV0IFg9e30sVz1KLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO2lmKFcpWD17dHlwZTpXfTskLmFwcGVuZChRLFgwKFthd2FpdCBKLmJsb2IoKV0sUTcoSixZKSxYKSl9ZWxzZSBpZihkRyhKKSkkLmFwcGVuZChRLFgwKFthd2FpdCBuZXcgUmVzcG9uc2UoTVgoSikpLmJsb2IoKV0sUTcoSixZKSkpO2Vsc2UgaWYob2soSikpJC5hcHBlbmQoUSxYMChbSl0sUTcoSixZKSx7dHlwZTpKLnR5cGV9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KEopKWF3YWl0IFByb21pc2UuYWxsKEoubWFwKChYKT0+Y0coJCxRK1wiW11cIixYLFkpKSk7ZWxzZSBpZih0eXBlb2YgSj09PVwib2JqZWN0XCIpYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoSikubWFwKChbWCxXXSk9PmNHKCQsYCR7UX1bJHtYfV1gLFcsWSkpKTtlbHNlIHRocm93IFR5cGVFcnJvcihgSW52YWxpZCB2YWx1ZSBnaXZlbiB0byBmb3JtLCBleHBlY3RlZCBhIHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBvYmplY3QsIEFycmF5LCBGaWxlIG9yIEJsb2IgYnV0IGdvdCAke0p9IGluc3RlYWRgKX07dmFyIFZ3PSgkKT0+JCE9bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZ0eXBlb2YgJC5zaXplPT09XCJudW1iZXJcIiYmdHlwZW9mICQudHlwZT09PVwic3RyaW5nXCImJnR5cGVvZiAkLnRleHQ9PT1cImZ1bmN0aW9uXCImJnR5cGVvZiAkLnNsaWNlPT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgJC5hcnJheUJ1ZmZlcj09PVwiZnVuY3Rpb25cIix0az0oJCk9PiQhPW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmdHlwZW9mICQubmFtZT09PVwic3RyaW5nXCImJnR5cGVvZiAkLmxhc3RNb2RpZmllZD09PVwibnVtYmVyXCImJlZ3KCQpLGFrPSgkKT0+JCE9bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZ0eXBlb2YgJC51cmw9PT1cInN0cmluZ1wiJiZ0eXBlb2YgJC5ibG9iPT09XCJmdW5jdGlvblwiO2FzeW5jIGZ1bmN0aW9uIHZYKCQsUSxKKXtpZihwRygpLCQ9YXdhaXQgJCxRfHwoUT1RNygkLCEwKSksdGsoJCkpe2lmKCQgaW5zdGFuY2VvZiBGaWxlJiZRPT1udWxsJiZKPT1udWxsKXJldHVybiAkO3JldHVybiBYMChbYXdhaXQgJC5hcnJheUJ1ZmZlcigpXSxRPz8kLm5hbWUse3R5cGU6JC50eXBlLGxhc3RNb2RpZmllZDokLmxhc3RNb2RpZmllZCwuLi5KfSl9aWYoYWsoJCkpe2xldCBYPWF3YWl0ICQuYmxvYigpO3JldHVybiBRfHwoUT1uZXcgVVJMKCQudXJsKS5wYXRobmFtZS5zcGxpdCgvW1xcXFwvXS8pLnBvcCgpKSxYMChhd2FpdCBpRyhYKSxRLEopfWxldCBZPWF3YWl0IGlHKCQpO2lmKCFKPy50eXBlKXtsZXQgWD1ZLmZpbmQoKFcpPT50eXBlb2YgVz09PVwib2JqZWN0XCImJihcInR5cGVcImluIFcpJiZXLnR5cGUpO2lmKHR5cGVvZiBYPT09XCJzdHJpbmdcIilKPXsuLi5KLHR5cGU6WH19cmV0dXJuIFgwKFksUSxKKX1hc3luYyBmdW5jdGlvbiBpRygkKXtsZXQgUT1bXTtpZih0eXBlb2YgJD09PVwic3RyaW5nXCJ8fEFycmF5QnVmZmVyLmlzVmlldygkKXx8JCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKVEucHVzaCgkKTtlbHNlIGlmKFZ3KCQpKVEucHVzaCgkIGluc3RhbmNlb2YgQmxvYj8kOmF3YWl0ICQuYXJyYXlCdWZmZXIoKSk7ZWxzZSBpZihkRygkKSlmb3IgYXdhaXQobGV0IEogb2YgJClRLnB1c2goLi4uYXdhaXQgaUcoSikpO2Vsc2V7bGV0IEo9JD8uY29uc3RydWN0b3I/Lm5hbWU7dGhyb3cgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YSB0eXBlOiAke3R5cGVvZiAkfSR7Sj9gOyBjb25zdHJ1Y3RvcjogJHtKfWA6XCJcIn0ke3NrKCQpfWApfXJldHVybiBRfWZ1bmN0aW9uIHNrKCQpe2lmKHR5cGVvZiAkIT09XCJvYmplY3RcInx8JD09PW51bGwpcmV0dXJuXCJcIjtyZXR1cm5gOyBwcm9wczogWyR7T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoJCkubWFwKChKKT0+YFwiJHtKfVwiYCkuam9pbihcIiwgXCIpfV1gfWNsYXNzIHR7Y29uc3RydWN0b3IoJCl7dGhpcy5fY2xpZW50PSR9fXZhciBCdz1TeW1ib2wuZm9yKFwiYnJhbmQucHJpdmF0ZU51bGxhYmxlSGVhZGVyc1wiKTtmdW5jdGlvbiokdigkKXtpZighJClyZXR1cm47aWYoQncgaW4gJCl7bGV0e3ZhbHVlczpZLG51bGxzOlh9PSQ7eWllbGQqWS5lbnRyaWVzKCk7Zm9yKGxldCBXIG9mIFgpeWllbGRbVyxudWxsXTtyZXR1cm59bGV0IFE9ITEsSjtpZigkIGluc3RhbmNlb2YgSGVhZGVycylKPSQuZW50cmllcygpO2Vsc2UgaWYoa0coJCkpSj0kO2Vsc2UgUT0hMCxKPU9iamVjdC5lbnRyaWVzKCQ/P3t9KTtmb3IobGV0IFkgb2YgSil7bGV0IFg9WVswXTtpZih0eXBlb2YgWCE9PVwic3RyaW5nXCIpdGhyb3cgVHlwZUVycm9yKFwiZXhwZWN0ZWQgaGVhZGVyIG5hbWUgdG8gYmUgYSBzdHJpbmdcIik7bGV0IFc9a0coWVsxXSk/WVsxXTpbWVsxXV0sRz0hMTtmb3IobGV0IFUgb2YgVyl7aWYoVT09PXZvaWQgMCljb250aW51ZTtpZihRJiYhRylHPSEwLHlpZWxkW1gsbnVsbF07eWllbGRbWCxVXX19fXZhciBSPSgkKT0+e2xldCBRPW5ldyBIZWFkZXJzLEo9bmV3IFNldDtmb3IobGV0IFkgb2YgJCl7bGV0IFg9bmV3IFNldDtmb3IobGV0W1csR11vZiAkdihZKSl7bGV0IFU9Vy50b0xvd2VyQ2FzZSgpO2lmKCFYLmhhcyhVKSlRLmRlbGV0ZShXKSxYLmFkZChVKTtpZihHPT09bnVsbClRLmRlbGV0ZShXKSxKLmFkZChVKTtlbHNlIFEuYXBwZW5kKFcsRyksSi5kZWxldGUoVSl9fXJldHVybntbQnddOiEwLHZhbHVlczpRLG51bGxzOkp9fTtmdW5jdGlvbiBOdygkKXtyZXR1cm4gJC5yZXBsYWNlKC9bXkEtWmEtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdKy9nLGVuY29kZVVSSUNvbXBvbmVudCl9dmFyIHp3PU9iamVjdC5mcmVlemUoT2JqZWN0LmNyZWF0ZShudWxsKSksUXY9KCQ9TncpPT5mdW5jdGlvbihKLC4uLlkpe2lmKEoubGVuZ3RoPT09MSlyZXR1cm4gSlswXTtsZXQgWD0hMSxXPVtdLEc9Si5yZWR1Y2UoKFYsQix6KT0+e2lmKC9bPyNdLy50ZXN0KEIpKVg9ITA7bGV0IE49WVt6XSx3PShYP2VuY29kZVVSSUNvbXBvbmVudDokKShcIlwiK04pO2lmKHohPT1ZLmxlbmd0aCYmKE49PW51bGx8fHR5cGVvZiBOPT09XCJvYmplY3RcIiYmTi50b1N0cmluZz09PU9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoTi5oYXNPd25Qcm9wZXJ0eT8/encpPz96dyk/LnRvU3RyaW5nKSl3PU4rXCJcIixXLnB1c2goe3N0YXJ0OlYubGVuZ3RoK0IubGVuZ3RoLGxlbmd0aDp3Lmxlbmd0aCxlcnJvcjpgVmFsdWUgb2YgdHlwZSAke09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChOKS5zbGljZSg4LC0xKX0gaXMgbm90IGEgdmFsaWQgcGF0aCBwYXJhbWV0ZXJgfSk7cmV0dXJuIFYrQisoej09PVkubGVuZ3RoP1wiXCI6dyl9LFwiXCIpLFU9Ry5zcGxpdCgvWz8jXS8sMSlbMF0sSD0vKD88PV58XFwvKSg/OlxcLnwlMmUpezEsMn0oPz1cXC98JCkvZ2kscTt3aGlsZSgocT1ILmV4ZWMoVSkpIT09bnVsbClXLnB1c2goe3N0YXJ0OnEuaW5kZXgsbGVuZ3RoOnFbMF0ubGVuZ3RoLGVycm9yOmBWYWx1ZSBcIiR7cVswXX1cIiBjYW4ndCBiZSBzYWZlbHkgcGFzc2VkIGFzIGEgcGF0aCBwYXJhbWV0ZXJgfSk7aWYoVy5zb3J0KChWLEIpPT5WLnN0YXJ0LUIuc3RhcnQpLFcubGVuZ3RoPjApe2xldCBWPTAsQj1XLnJlZHVjZSgoeixOKT0+e2xldCB3PVwiIFwiLnJlcGVhdChOLnN0YXJ0LVYpLE89XCJeXCIucmVwZWF0KE4ubGVuZ3RoKTtyZXR1cm4gVj1OLnN0YXJ0K04ubGVuZ3RoLHordytPfSxcIlwiKTt0aHJvdyBuZXcgZyhgUGF0aCBwYXJhbWV0ZXJzIHJlc3VsdCBpbiBwYXRoIHdpdGggaW52YWxpZCBzZWdtZW50czpcbiR7Vy5tYXAoKHopPT56LmVycm9yKS5qb2luKGBcbmApfVxuJHtHfVxuJHtCfWApfXJldHVybiBHfSxUPVF2KE53KTtjbGFzcyBKNyBleHRlbmRzIHR7Y3JlYXRlKCQsUSl7bGV0e2JldGFzOkosLi4uWX09JDtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvZW52aXJvbm1lbnRzP2JldGE9dHJ1ZVwiLHtib2R5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1yZXRyaWV2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL2Vudmlyb25tZW50cy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9lbnZpcm9ubWVudHMvJHskfT9iZXRhPXRydWVgLHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL2Vudmlyb25tZW50cz9iZXRhPXRydWVcIixEJCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL2Vudmlyb25tZW50cy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YXJjaGl2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9lbnZpcm9ubWVudHMvJHskfS9hcmNoaXZlP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fXZhciBYNz1TeW1ib2woXCJhbnRocm9waWMuc2RrLnN0YWlubGVzc0hlbHBlclwiKTtmdW5jdGlvbiBDWCgkKXtyZXR1cm4gdHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCYmWDcgaW4gJH1mdW5jdGlvbiBuRygkLFEpe2xldCBKPW5ldyBTZXQ7aWYoJCl7Zm9yKGxldCBZIG9mICQpaWYoQ1goWSkpSi5hZGQoWVtYN10pfWlmKFEpZm9yKGxldCBZIG9mIFEpe2lmKENYKFkpKUouYWRkKFlbWDddKTtpZihBcnJheS5pc0FycmF5KFkuY29udGVudCkpe2ZvcihsZXQgWCBvZiBZLmNvbnRlbnQpaWYoQ1goWCkpSi5hZGQoWFtYN10pfX1yZXR1cm4gQXJyYXkuZnJvbShKKX1mdW5jdGlvbiBUWCgkLFEpe2xldCBKPW5HKCQsUSk7aWYoSi5sZW5ndGg9PT0wKXJldHVybnt9O3JldHVybntcIngtc3RhaW5sZXNzLWhlbHBlclwiOkouam9pbihcIiwgXCIpfX1mdW5jdGlvbiB3dygkKXtpZihDWCgkKSlyZXR1cm57XCJ4LXN0YWlubGVzcy1oZWxwZXJcIjokW1g3XX07cmV0dXJue319Y2xhc3MgWTcgZXh0ZW5kcyB0e2xpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvZmlsZXM/YmV0YT10cnVlXCIsRzQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwiZmlsZXMtYXBpLTIwMjUtMDQtMTRcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvZmlsZXMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJmaWxlcy1hcGktMjAyNS0wNC0xNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1kb3dubG9hZCgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL2ZpbGVzLyR7JH0vY29udGVudD9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJmaWxlcy1hcGktMjAyNS0wNC0xNFwiXS50b1N0cmluZygpLEFjY2VwdDpcImFwcGxpY2F0aW9uL2JpbmFyeVwifSxKPy5oZWFkZXJzXSksX19iaW5hcnlSZXNwb25zZTohMH0pfXJldHJpZXZlTWV0YWRhdGEoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9maWxlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcImZpbGVzLWFwaS0yMDI1LTA0LTE0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwbG9hZCgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL2ZpbGVzP2JldGE9dHJ1ZVwiLFU4KHtib2R5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwiZmlsZXMtYXBpLTIwMjUtMDQtMTRcIl0udG9TdHJpbmcoKX0sd3coWS5maWxlKSxRPy5oZWFkZXJzXSl9LHRoaXMuX2NsaWVudCkpfX1jbGFzcyBXNyBleHRlbmRzIHR7cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9tb2RlbHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbey4uLlk/LnRvU3RyaW5nKCkhPW51bGw/e1wiYW50aHJvcGljLWJldGFcIjpZPy50b1N0cmluZygpfTp2b2lkIDB9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvbW9kZWxzP2JldGE9dHJ1ZVwiLEc0LHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7Li4uSj8udG9TdHJpbmcoKSE9bnVsbD97XCJhbnRocm9waWMtYmV0YVwiOko/LnRvU3RyaW5nKCl9OnZvaWQgMH0sUT8uaGVhZGVyc10pfSl9fWNsYXNzIEc3IGV4dGVuZHMgdHtjcmVhdGUoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS91c2VyX3Byb2ZpbGVzP2JldGE9dHJ1ZVwiLHtib2R5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwidXNlci1wcm9maWxlcy0yMDI2LTAzLTI0XCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvdXNlcl9wcm9maWxlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInVzZXItcHJvZmlsZXMtMjAyNi0wMy0yNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3VzZXJfcHJvZmlsZXMvJHskfT9iZXRhPXRydWVgLHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwidXNlci1wcm9maWxlcy0yMDI2LTAzLTI0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvdXNlcl9wcm9maWxlcz9iZXRhPXRydWVcIixEJCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJ1c2VyLXByb2ZpbGVzLTIwMjYtMDMtMjRcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9Y3JlYXRlRW5yb2xsbWVudFVSTCgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS91c2VyX3Byb2ZpbGVzLyR7JH0vZW5yb2xsbWVudF91cmw/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwidXNlci1wcm9maWxlcy0yMDI2LTAzLTI0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1jbGFzcyBVNyBleHRlbmRzIHR7bGlzdCgkLFE9e30sSil7bGV0e2JldGFzOlksLi4uWH09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFRgL3YxL2FnZW50cy8keyR9L3ZlcnNpb25zP2JldGE9dHJ1ZWAsRCQse3F1ZXJ5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgSDggZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLnZlcnNpb25zPW5ldyBVNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL2FnZW50cz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL2FnZW50cy8keyR9P2JldGE9dHJ1ZWAse3F1ZXJ5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL2FnZW50cy8keyR9P2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvYWdlbnRzP2JldGE9dHJ1ZVwiLEQkLHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9YXJjaGl2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9hZ2VudHMvJHskfS9hcmNoaXZlP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fUg4LlZlcnNpb25zPVU3O2NsYXNzIEg3IGV4dGVuZHMgdHtjcmVhdGUoJCxRLEope2xldHt2aWV3OlksYmV0YXM6WCwuLi5XfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0vbWVtb3JpZXM/YmV0YT10cnVlYCx7cXVlcnk6e3ZpZXc6WX0sYm9keTpXLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRLEope2xldHttZW1vcnlfc3RvcmVfaWQ6WSxiZXRhczpYLC4uLld9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvbWVtb3J5X3N0b3Jlcy8ke1l9L21lbW9yaWVzLyR7JH0/YmV0YT10cnVlYCx7cXVlcnk6VywuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwZGF0ZSgkLFEsSil7bGV0e21lbW9yeV9zdG9yZV9pZDpZLHZpZXc6WCxiZXRhczpXLC4uLkd9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHtZfS9tZW1vcmllcy8keyR9P2JldGE9dHJ1ZWAse3F1ZXJ5Ont2aWV3Olh9LGJvZHk6RywuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uVz8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0vbWVtb3JpZXM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFEsSil7bGV0e21lbW9yeV9zdG9yZV9pZDpZLGV4cGVjdGVkX2NvbnRlbnRfc2hhMjU2OlgsYmV0YXM6V309UTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9tZW1vcnlfc3RvcmVzLyR7WX0vbWVtb3JpZXMvJHskfT9iZXRhPXRydWVgLHtxdWVyeTp7ZXhwZWN0ZWRfY29udGVudF9zaGEyNTY6WH0sLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlc/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgSzcgZXh0ZW5kcyB0e3JldHJpZXZlKCQsUSxKKXtsZXR7bWVtb3J5X3N0b3JlX2lkOlksYmV0YXM6WCwuLi5XfT1RO3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHtZfS9tZW1vcnlfdmVyc2lvbnMvJHskfT9iZXRhPXRydWVgLHtxdWVyeTpXLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkLFE9e30sSil7bGV0e2JldGFzOlksLi4uWH09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHskfS9tZW1vcnlfdmVyc2lvbnM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXJlZGFjdCgkLFEsSil7bGV0e21lbW9yeV9zdG9yZV9pZDpZLGJldGFzOlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHtZfS9tZW1vcnlfdmVyc2lvbnMvJHskfS9yZWRhY3Q/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgWTAgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLm1lbW9yaWVzPW5ldyBINyh0aGlzLl9jbGllbnQpLHRoaXMubWVtb3J5VmVyc2lvbnM9bmV3IEs3KHRoaXMuX2NsaWVudCl9Y3JlYXRlKCQsUSl7bGV0e2JldGFzOkosLi4uWX09JDtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVtb3J5X3N0b3Jlcz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHskfT9iZXRhPXRydWVgLHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL21lbW9yeV9zdG9yZXM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1hcmNoaXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHskfS9hcmNoaXZlP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fVkwLk1lbW9yaWVzPUg3O1kwLk1lbW9yeVZlcnNpb25zPUs3O2NsYXNzIEs4e2NvbnN0cnVjdG9yKCQsUSl7dGhpcy5pdGVyYXRvcj0kLHRoaXMuY29udHJvbGxlcj1RfWFzeW5jKmRlY29kZXIoKXtsZXQgJD1uZXcgejE7Zm9yIGF3YWl0KGxldCBRIG9mIHRoaXMuaXRlcmF0b3IpZm9yKGxldCBKIG9mICQuZGVjb2RlKFEpKXlpZWxkIEpTT04ucGFyc2UoSik7Zm9yKGxldCBRIG9mICQuZmx1c2goKSl5aWVsZCBKU09OLnBhcnNlKFEpfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5kZWNvZGVyKCl9c3RhdGljIGZyb21SZXNwb25zZSgkLFEpe2lmKCEkLmJvZHkpe2lmKFEuYWJvcnQoKSx0eXBlb2YgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I8XCJ1XCImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnByb2R1Y3Q9PT1cIlJlYWN0TmF0aXZlXCIpdGhyb3cgbmV3IGcoXCJUaGUgZGVmYXVsdCByZWFjdC1uYXRpdmUgZmV0Y2ggaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcuIFBsZWFzZSB1c2UgZXhwby9mZXRjaDogaHR0cHM6Ly9kb2NzLmV4cG8uZGV2L3ZlcnNpb25zL2xhdGVzdC9zZGsvZXhwby8jZXhwb2ZldGNoLWFwaVwiKTt0aHJvdyBuZXcgZyhcIkF0dGVtcHRlZCB0byBpdGVyYXRlIG92ZXIgYSByZXNwb25zZSB3aXRoIG5vIGJvZHlcIil9cmV0dXJuIG5ldyBLOChhOSgkLmJvZHkpLFEpfX1jbGFzcyBxNyBleHRlbmRzIHR7Y3JlYXRlKCQsUSl7bGV0e2JldGFzOkosLi4uWX09JDtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVzc2FnZXMvYmF0Y2hlcz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1lc3NhZ2UtYmF0Y2hlcy0yMDI0LTA5LTI0XCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvbWVzc2FnZXMvYmF0Y2hlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1lc3NhZ2UtYmF0Y2hlcy0yMDI0LTA5LTI0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvbWVzc2FnZXMvYmF0Y2hlcz9iZXRhPXRydWVcIixHNCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtZXNzYWdlLWJhdGNoZXMtMjAyNC0wOS0yNFwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9tZXNzYWdlcy9iYXRjaGVzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWVzc2FnZS1iYXRjaGVzLTIwMjQtMDktMjRcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9Y2FuY2VsKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lc3NhZ2VzL2JhdGNoZXMvJHskfS9jYW5jZWw/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWVzc2FnZS1iYXRjaGVzLTIwMjQtMDktMjRcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YXN5bmMgcmVzdWx0cygkLFE9e30sSil7bGV0IFk9YXdhaXQgdGhpcy5yZXRyaWV2ZSgkKTtpZighWS5yZXN1bHRzX3VybCl0aHJvdyBuZXcgZyhgTm8gYmF0Y2ggXFxgcmVzdWx0c191cmxcXGA7IEhhcyBpdCBmaW5pc2hlZCBwcm9jZXNzaW5nPyAke1kucHJvY2Vzc2luZ19zdGF0dXN9IC0gJHtZLmlkfWApO2xldHtiZXRhczpYfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChZLnJlc3VsdHNfdXJsLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtZXNzYWdlLWJhdGNoZXMtMjAyNC0wOS0yNFwiXS50b1N0cmluZygpLEFjY2VwdDpcImFwcGxpY2F0aW9uL2JpbmFyeVwifSxKPy5oZWFkZXJzXSksc3RyZWFtOiEwLF9fYmluYXJ5UmVzcG9uc2U6ITB9KS5fdGhlblVud3JhcCgoVyxHKT0+SzguZnJvbVJlc3BvbnNlKEcucmVzcG9uc2UsRy5jb250cm9sbGVyKSl9fXZhciB4WD17XCJjbGF1ZGUtb3B1cy00LTIwMjUwNTE0XCI6ODE5MixcImNsYXVkZS1vcHVzLTQtMFwiOjgxOTIsXCJjbGF1ZGUtNC1vcHVzLTIwMjUwNTE0XCI6ODE5MixcImFudGhyb3BpYy5jbGF1ZGUtb3B1cy00LTIwMjUwNTE0LXYxOjBcIjo4MTkyLFwiY2xhdWRlLW9wdXMtNEAyMDI1MDUxNFwiOjgxOTIsXCJjbGF1ZGUtb3B1cy00LTEtMjAyNTA4MDVcIjo4MTkyLFwiYW50aHJvcGljLmNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNS12MTowXCI6ODE5MixcImNsYXVkZS1vcHVzLTQtMUAyMDI1MDgwNVwiOjgxOTJ9O2Z1bmN0aW9uIE93KCQpe3JldHVybiAkPy5vdXRwdXRfZm9ybWF0Pz8kPy5vdXRwdXRfY29uZmlnPy5mb3JtYXR9ZnVuY3Rpb24gckcoJCxRLEope2xldCBZPU93KFEpO2lmKCFRfHwhKFwicGFyc2VcImluKFk/P3t9KSkpcmV0dXJuey4uLiQsY29udGVudDokLmNvbnRlbnQubWFwKChYKT0+e2lmKFgudHlwZT09PVwidGV4dFwiKXtsZXQgVz1PYmplY3QuZGVmaW5lUHJvcGVydHkoey4uLlh9LFwicGFyc2VkX291dHB1dFwiLHt2YWx1ZTpudWxsLGVudW1lcmFibGU6ITF9KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFcsXCJwYXJzZWRcIix7Z2V0KCl7cmV0dXJuIEoubG9nZ2VyLndhcm4oXCJUaGUgYHBhcnNlZGAgcHJvcGVydHkgb24gYHRleHRgIGJsb2NrcyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGBwYXJzZWRfb3V0cHV0YCBpbnN0ZWFkLlwiKSxudWxsfSxlbnVtZXJhYmxlOiExfSl9cmV0dXJuIFh9KSxwYXJzZWRfb3V0cHV0Om51bGx9O3JldHVybiBvRygkLFEsSil9ZnVuY3Rpb24gb0coJCxRLEope2xldCBZPW51bGwsWD0kLmNvbnRlbnQubWFwKChXKT0+e2lmKFcudHlwZT09PVwidGV4dFwiKXtsZXQgRz1CdihRLFcudGV4dCk7aWYoWT09PW51bGwpWT1HO2xldCBVPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7Li4uV30sXCJwYXJzZWRfb3V0cHV0XCIse3ZhbHVlOkcsZW51bWVyYWJsZTohMX0pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoVSxcInBhcnNlZFwiLHtnZXQoKXtyZXR1cm4gSi5sb2dnZXIud2FybihcIlRoZSBgcGFyc2VkYCBwcm9wZXJ0eSBvbiBgdGV4dGAgYmxvY2tzIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgYHBhcnNlZF9vdXRwdXRgIGluc3RlYWQuXCIpLEd9LGVudW1lcmFibGU6ITF9KX1yZXR1cm4gV30pO3JldHVybnsuLi4kLGNvbnRlbnQ6WCxwYXJzZWRfb3V0cHV0Oll9fWZ1bmN0aW9uIEJ2KCQsUSl7bGV0IEo9T3coJCk7aWYoSj8udHlwZSE9PVwianNvbl9zY2hlbWFcIilyZXR1cm4gbnVsbDt0cnl7aWYoXCJwYXJzZVwiaW4gSilyZXR1cm4gSi5wYXJzZShRKTtyZXR1cm4gSlNPTi5wYXJzZShRKX1jYXRjaChZKXt0aHJvdyBuZXcgZyhgRmFpbGVkIHRvIHBhcnNlIHN0cnVjdHVyZWQgb3V0cHV0OiAke1l9YCl9fXZhciB6dj0oJCk9PntsZXQgUT0wLEo9W107d2hpbGUoUTwkLmxlbmd0aCl7bGV0IFk9JFtRXTtpZihZPT09XCJcXFxcXCIpe1ErKztjb250aW51ZX1pZihZPT09XCJ7XCIpe0oucHVzaCh7dHlwZTpcImJyYWNlXCIsdmFsdWU6XCJ7XCJ9KSxRKys7Y29udGludWV9aWYoWT09PVwifVwiKXtKLnB1c2goe3R5cGU6XCJicmFjZVwiLHZhbHVlOlwifVwifSksUSsrO2NvbnRpbnVlfWlmKFk9PT1cIltcIil7Si5wdXNoKHt0eXBlOlwicGFyZW5cIix2YWx1ZTpcIltcIn0pLFErKztjb250aW51ZX1pZihZPT09XCJdXCIpe0oucHVzaCh7dHlwZTpcInBhcmVuXCIsdmFsdWU6XCJdXCJ9KSxRKys7Y29udGludWV9aWYoWT09PVwiOlwiKXtKLnB1c2goe3R5cGU6XCJzZXBhcmF0b3JcIix2YWx1ZTpcIjpcIn0pLFErKztjb250aW51ZX1pZihZPT09XCIsXCIpe0oucHVzaCh7dHlwZTpcImRlbGltaXRlclwiLHZhbHVlOlwiLFwifSksUSsrO2NvbnRpbnVlfWlmKFk9PT0nXCInKXtsZXQgVT1cIlwiLEg9ITE7WT0kWysrUV07d2hpbGUoWSE9PSdcIicpe2lmKFE9PT0kLmxlbmd0aCl7SD0hMDticmVha31pZihZPT09XCJcXFxcXCIpe2lmKFErKyxRPT09JC5sZW5ndGgpe0g9ITA7YnJlYWt9VSs9WSskW1FdLFk9JFsrK1FdfWVsc2UgVSs9WSxZPSRbKytRXX1pZihZPSRbKytRXSwhSClKLnB1c2goe3R5cGU6XCJzdHJpbmdcIix2YWx1ZTpVfSk7Y29udGludWV9aWYoWSYmL1xccy8udGVzdChZKSl7USsrO2NvbnRpbnVlfWxldCBXPS9bMC05XS87aWYoWSYmVy50ZXN0KFkpfHxZPT09XCItXCJ8fFk9PT1cIi5cIil7bGV0IFU9XCJcIjtpZihZPT09XCItXCIpVSs9WSxZPSRbKytRXTt3aGlsZShZJiZXLnRlc3QoWSl8fFk9PT1cIi5cIilVKz1ZLFk9JFsrK1FdO0oucHVzaCh7dHlwZTpcIm51bWJlclwiLHZhbHVlOlV9KTtjb250aW51ZX1sZXQgRz0vW2Etel0vaTtpZihZJiZHLnRlc3QoWSkpe2xldCBVPVwiXCI7d2hpbGUoWSYmRy50ZXN0KFkpKXtpZihRPT09JC5sZW5ndGgpYnJlYWs7VSs9WSxZPSRbKytRXX1pZihVPT1cInRydWVcInx8VT09XCJmYWxzZVwifHxVPT09XCJudWxsXCIpSi5wdXNoKHt0eXBlOlwibmFtZVwiLHZhbHVlOlV9KTtlbHNle1ErKztjb250aW51ZX1jb250aW51ZX1RKyt9cmV0dXJuIEp9LHE4PSgkKT0+e2lmKCQubGVuZ3RoPT09MClyZXR1cm4gJDtsZXQgUT0kWyQubGVuZ3RoLTFdO3N3aXRjaChRLnR5cGUpe2Nhc2VcInNlcGFyYXRvclwiOnJldHVybiAkPSQuc2xpY2UoMCwkLmxlbmd0aC0xKSxxOCgkKTticmVhaztjYXNlXCJudW1iZXJcIjpsZXQgSj1RLnZhbHVlW1EudmFsdWUubGVuZ3RoLTFdO2lmKEo9PT1cIi5cInx8Sj09PVwiLVwiKXJldHVybiAkPSQuc2xpY2UoMCwkLmxlbmd0aC0xKSxxOCgkKTtjYXNlXCJzdHJpbmdcIjpsZXQgWT0kWyQubGVuZ3RoLTJdO2lmKFk/LnR5cGU9PT1cImRlbGltaXRlclwiKXJldHVybiAkPSQuc2xpY2UoMCwkLmxlbmd0aC0xKSxxOCgkKTtlbHNlIGlmKFk/LnR5cGU9PT1cImJyYWNlXCImJlkudmFsdWU9PT1cIntcIilyZXR1cm4gJD0kLnNsaWNlKDAsJC5sZW5ndGgtMSkscTgoJCk7YnJlYWs7Y2FzZVwiZGVsaW1pdGVyXCI6cmV0dXJuICQ9JC5zbGljZSgwLCQubGVuZ3RoLTEpLHE4KCQpO2JyZWFrfXJldHVybiAkfSxOdj0oJCk9PntsZXQgUT1bXTtpZigkLm1hcCgoSik9PntpZihKLnR5cGU9PT1cImJyYWNlXCIpaWYoSi52YWx1ZT09PVwie1wiKVEucHVzaChcIn1cIik7ZWxzZSBRLnNwbGljZShRLmxhc3RJbmRleE9mKFwifVwiKSwxKTtpZihKLnR5cGU9PT1cInBhcmVuXCIpaWYoSi52YWx1ZT09PVwiW1wiKVEucHVzaChcIl1cIik7ZWxzZSBRLnNwbGljZShRLmxhc3RJbmRleE9mKFwiXVwiKSwxKX0pLFEubGVuZ3RoPjApUS5yZXZlcnNlKCkubWFwKChKKT0+e2lmKEo9PT1cIn1cIikkLnB1c2goe3R5cGU6XCJicmFjZVwiLHZhbHVlOlwifVwifSk7ZWxzZSBpZihKPT09XCJdXCIpJC5wdXNoKHt0eXBlOlwicGFyZW5cIix2YWx1ZTpcIl1cIn0pfSk7cmV0dXJuICR9LHd2PSgkKT0+e2xldCBRPVwiXCI7cmV0dXJuICQubWFwKChKKT0+e3N3aXRjaChKLnR5cGUpe2Nhc2VcInN0cmluZ1wiOlErPSdcIicrSi52YWx1ZSsnXCInO2JyZWFrO2RlZmF1bHQ6USs9Si52YWx1ZTticmVha319KSxRfSxmWD0oJCk9PkpTT04ucGFyc2Uod3YoTnYocTgoenYoJCkpKSkpO3ZhciBpNixOMSxWOCxWNyx5WCxCNyx6NyxnWCxONyxnNCx3NyxoWCx1WCxXMCxtWCxsWCxPNyx0RyxEdyxjWCxhRyxzRyxlRyxGdyxadz1cIl9fanNvbl9idWZcIjtmdW5jdGlvbiBNdygkKXtyZXR1cm4gJC50eXBlPT09XCJ0b29sX3VzZVwifHwkLnR5cGU9PT1cInNlcnZlcl90b29sX3VzZVwifHwkLnR5cGU9PT1cIm1jcF90b29sX3VzZVwifWNsYXNzIEQ3e2NvbnN0cnVjdG9yKCQsUSl7aTYuYWRkKHRoaXMpLHRoaXMubWVzc2FnZXM9W10sdGhpcy5yZWNlaXZlZE1lc3NhZ2VzPVtdLE4xLnNldCh0aGlzLHZvaWQgMCksVjguc2V0KHRoaXMsbnVsbCksdGhpcy5jb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsVjcuc2V0KHRoaXMsdm9pZCAwKSx5WC5zZXQodGhpcywoKT0+e30pLEI3LnNldCh0aGlzLCgpPT57fSksejcuc2V0KHRoaXMsdm9pZCAwKSxnWC5zZXQodGhpcywoKT0+e30pLE43LnNldCh0aGlzLCgpPT57fSksZzQuc2V0KHRoaXMse30pLHc3LnNldCh0aGlzLCExKSxoWC5zZXQodGhpcywhMSksdVguc2V0KHRoaXMsITEpLFcwLnNldCh0aGlzLCExKSxtWC5zZXQodGhpcyx2b2lkIDApLGxYLnNldCh0aGlzLHZvaWQgMCksTzcuc2V0KHRoaXMsdm9pZCAwKSxjWC5zZXQodGhpcywoSik9PntpZihmKHRoaXMsaFgsITAsXCJmXCIpLGY0KEopKUo9bmV3IFE2O2lmKEogaW5zdGFuY2VvZiBRNilyZXR1cm4gZih0aGlzLHVYLCEwLFwiZlwiKSx0aGlzLl9lbWl0KFwiYWJvcnRcIixKKTtpZihKIGluc3RhbmNlb2YgZylyZXR1cm4gdGhpcy5fZW1pdChcImVycm9yXCIsSik7aWYoSiBpbnN0YW5jZW9mIEVycm9yKXtsZXQgWT1uZXcgZyhKLm1lc3NhZ2UpO3JldHVybiBZLmNhdXNlPUosdGhpcy5fZW1pdChcImVycm9yXCIsWSl9cmV0dXJuIHRoaXMuX2VtaXQoXCJlcnJvclwiLG5ldyBnKFN0cmluZyhKKSkpfSksZih0aGlzLFY3LG5ldyBQcm9taXNlKChKLFkpPT57Zih0aGlzLHlYLEosXCJmXCIpLGYodGhpcyxCNyxZLFwiZlwiKX0pLFwiZlwiKSxmKHRoaXMsejcsbmV3IFByb21pc2UoKEosWSk9PntmKHRoaXMsZ1gsSixcImZcIiksZih0aGlzLE43LFksXCJmXCIpfSksXCJmXCIpLFoodGhpcyxWNyxcImZcIikuY2F0Y2goKCk9Pnt9KSxaKHRoaXMsejcsXCJmXCIpLmNhdGNoKCgpPT57fSksZih0aGlzLFY4LCQsXCJmXCIpLGYodGhpcyxPNyxRPy5sb2dnZXI/P2NvbnNvbGUsXCJmXCIpfWdldCByZXNwb25zZSgpe3JldHVybiBaKHRoaXMsbVgsXCJmXCIpfWdldCByZXF1ZXN0X2lkKCl7cmV0dXJuIFoodGhpcyxsWCxcImZcIil9YXN5bmMgd2l0aFJlc3BvbnNlKCl7Zih0aGlzLFcwLCEwLFwiZlwiKTtsZXQgJD1hd2FpdCBaKHRoaXMsVjcsXCJmXCIpO2lmKCEkKXRocm93IEVycm9yKFwiQ291bGQgbm90IHJlc29sdmUgYSBgUmVzcG9uc2VgIG9iamVjdFwiKTtyZXR1cm57ZGF0YTp0aGlzLHJlc3BvbnNlOiQscmVxdWVzdF9pZDokLmhlYWRlcnMuZ2V0KFwicmVxdWVzdC1pZFwiKX19c3RhdGljIGZyb21SZWFkYWJsZVN0cmVhbSgkKXtsZXQgUT1uZXcgRDcobnVsbCk7cmV0dXJuIFEuX3J1bigoKT0+US5fZnJvbVJlYWRhYmxlU3RyZWFtKCQpKSxRfXN0YXRpYyBjcmVhdGVNZXNzYWdlKCQsUSxKLHtsb2dnZXI6WX09e30pe2xldCBYPW5ldyBENyhRLHtsb2dnZXI6WX0pO2ZvcihsZXQgVyBvZiBRLm1lc3NhZ2VzKVguX2FkZE1lc3NhZ2VQYXJhbShXKTtyZXR1cm4gZihYLFY4LHsuLi5RLHN0cmVhbTohMH0sXCJmXCIpLFguX3J1bigoKT0+WC5fY3JlYXRlTWVzc2FnZSgkLHsuLi5RLHN0cmVhbTohMH0sey4uLkosaGVhZGVyczp7Li4uSj8uaGVhZGVycyxcIlgtU3RhaW5sZXNzLUhlbHBlci1NZXRob2RcIjpcInN0cmVhbVwifX0pKSxYfV9ydW4oJCl7JCgpLnRoZW4oKCk9Pnt0aGlzLl9lbWl0RmluYWwoKSx0aGlzLl9lbWl0KFwiZW5kXCIpfSxaKHRoaXMsY1gsXCJmXCIpKX1fYWRkTWVzc2FnZVBhcmFtKCQpe3RoaXMubWVzc2FnZXMucHVzaCgkKX1fYWRkTWVzc2FnZSgkLFE9ITApe2lmKHRoaXMucmVjZWl2ZWRNZXNzYWdlcy5wdXNoKCQpLFEpdGhpcy5fZW1pdChcIm1lc3NhZ2VcIiwkKX1hc3luYyBfY3JlYXRlTWVzc2FnZSgkLFEsSil7bGV0IFk9Sj8uc2lnbmFsLFg7aWYoWSl7aWYoWS5hYm9ydGVkKXRoaXMuY29udHJvbGxlci5hYm9ydCgpO1g9dGhpcy5jb250cm9sbGVyLmFib3J0LmJpbmQodGhpcy5jb250cm9sbGVyKSxZLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFgpfXRyeXtaKHRoaXMsaTYsXCJtXCIsYUcpLmNhbGwodGhpcyk7bGV0e3Jlc3BvbnNlOlcsZGF0YTpHfT1hd2FpdCAkLmNyZWF0ZSh7Li4uUSxzdHJlYW06ITB9LHsuLi5KLHNpZ25hbDp0aGlzLmNvbnRyb2xsZXIuc2lnbmFsfSkud2l0aFJlc3BvbnNlKCk7dGhpcy5fY29ubmVjdGVkKFcpO2ZvciBhd2FpdChsZXQgVSBvZiBHKVoodGhpcyxpNixcIm1cIixzRykuY2FsbCh0aGlzLFUpO2lmKEcuY29udHJvbGxlci5zaWduYWw/LmFib3J0ZWQpdGhyb3cgbmV3IFE2O1oodGhpcyxpNixcIm1cIixlRykuY2FsbCh0aGlzKX1maW5hbGx5e2lmKFkmJlgpWS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIixYKX19X2Nvbm5lY3RlZCgkKXtpZih0aGlzLmVuZGVkKXJldHVybjtmKHRoaXMsbVgsJCxcImZcIiksZih0aGlzLGxYLCQ/LmhlYWRlcnMuZ2V0KFwicmVxdWVzdC1pZFwiKSxcImZcIiksWih0aGlzLHlYLFwiZlwiKS5jYWxsKHRoaXMsJCksdGhpcy5fZW1pdChcImNvbm5lY3RcIil9Z2V0IGVuZGVkKCl7cmV0dXJuIFoodGhpcyx3NyxcImZcIil9Z2V0IGVycm9yZWQoKXtyZXR1cm4gWih0aGlzLGhYLFwiZlwiKX1nZXQgYWJvcnRlZCgpe3JldHVybiBaKHRoaXMsdVgsXCJmXCIpfWFib3J0KCl7dGhpcy5jb250cm9sbGVyLmFib3J0KCl9b24oJCxRKXtyZXR1cm4oWih0aGlzLGc0LFwiZlwiKVskXXx8KFoodGhpcyxnNCxcImZcIilbJF09W10pKS5wdXNoKHtsaXN0ZW5lcjpRfSksdGhpc31vZmYoJCxRKXtsZXQgSj1aKHRoaXMsZzQsXCJmXCIpWyRdO2lmKCFKKXJldHVybiB0aGlzO2xldCBZPUouZmluZEluZGV4KChYKT0+WC5saXN0ZW5lcj09PVEpO2lmKFk+PTApSi5zcGxpY2UoWSwxKTtyZXR1cm4gdGhpc31vbmNlKCQsUSl7cmV0dXJuKFoodGhpcyxnNCxcImZcIilbJF18fChaKHRoaXMsZzQsXCJmXCIpWyRdPVtdKSkucHVzaCh7bGlzdGVuZXI6USxvbmNlOiEwfSksdGhpc31lbWl0dGVkKCQpe3JldHVybiBuZXcgUHJvbWlzZSgoUSxKKT0+e2lmKGYodGhpcyxXMCwhMCxcImZcIiksJCE9PVwiZXJyb3JcIil0aGlzLm9uY2UoXCJlcnJvclwiLEopO3RoaXMub25jZSgkLFEpfSl9YXN5bmMgZG9uZSgpe2YodGhpcyxXMCwhMCxcImZcIiksYXdhaXQgWih0aGlzLHo3LFwiZlwiKX1nZXQgY3VycmVudE1lc3NhZ2UoKXtyZXR1cm4gWih0aGlzLE4xLFwiZlwiKX1hc3luYyBmaW5hbE1lc3NhZ2UoKXtyZXR1cm4gYXdhaXQgdGhpcy5kb25lKCksWih0aGlzLGk2LFwibVwiLHRHKS5jYWxsKHRoaXMpfWFzeW5jIGZpbmFsVGV4dCgpe3JldHVybiBhd2FpdCB0aGlzLmRvbmUoKSxaKHRoaXMsaTYsXCJtXCIsRHcpLmNhbGwodGhpcyl9X2VtaXQoJCwuLi5RKXtpZihaKHRoaXMsdzcsXCJmXCIpKXJldHVybjtpZigkPT09XCJlbmRcIilmKHRoaXMsdzcsITAsXCJmXCIpLFoodGhpcyxnWCxcImZcIikuY2FsbCh0aGlzKTtsZXQgSj1aKHRoaXMsZzQsXCJmXCIpWyRdO2lmKEopWih0aGlzLGc0LFwiZlwiKVskXT1KLmZpbHRlcigoWSk9PiFZLm9uY2UpLEouZm9yRWFjaCgoe2xpc3RlbmVyOll9KT0+WSguLi5RKSk7aWYoJD09PVwiYWJvcnRcIil7bGV0IFk9UVswXTtpZighWih0aGlzLFcwLFwiZlwiKSYmIUo/Lmxlbmd0aClQcm9taXNlLnJlamVjdChZKTtaKHRoaXMsQjcsXCJmXCIpLmNhbGwodGhpcyxZKSxaKHRoaXMsTjcsXCJmXCIpLmNhbGwodGhpcyxZKSx0aGlzLl9lbWl0KFwiZW5kXCIpO3JldHVybn1pZigkPT09XCJlcnJvclwiKXtsZXQgWT1RWzBdO2lmKCFaKHRoaXMsVzAsXCJmXCIpJiYhSj8ubGVuZ3RoKVByb21pc2UucmVqZWN0KFkpO1oodGhpcyxCNyxcImZcIikuY2FsbCh0aGlzLFkpLFoodGhpcyxONyxcImZcIikuY2FsbCh0aGlzLFkpLHRoaXMuX2VtaXQoXCJlbmRcIil9fV9lbWl0RmluYWwoKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMuYXQoLTEpKXRoaXMuX2VtaXQoXCJmaW5hbE1lc3NhZ2VcIixaKHRoaXMsaTYsXCJtXCIsdEcpLmNhbGwodGhpcykpfWFzeW5jIF9mcm9tUmVhZGFibGVTdHJlYW0oJCxRKXtsZXQgSj1RPy5zaWduYWwsWTtpZihKKXtpZihKLmFib3J0ZWQpdGhpcy5jb250cm9sbGVyLmFib3J0KCk7WT10aGlzLmNvbnRyb2xsZXIuYWJvcnQuYmluZCh0aGlzLmNvbnRyb2xsZXIpLEouYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWSl9dHJ5e1oodGhpcyxpNixcIm1cIixhRykuY2FsbCh0aGlzKSx0aGlzLl9jb25uZWN0ZWQobnVsbCk7bGV0IFg9QzYuZnJvbVJlYWRhYmxlU3RyZWFtKCQsdGhpcy5jb250cm9sbGVyKTtmb3IgYXdhaXQobGV0IFcgb2YgWClaKHRoaXMsaTYsXCJtXCIsc0cpLmNhbGwodGhpcyxXKTtpZihYLmNvbnRyb2xsZXIuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtaKHRoaXMsaTYsXCJtXCIsZUcpLmNhbGwodGhpcyl9ZmluYWxseXtpZihKJiZZKUoucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWSl9fVsoTjE9bmV3IFdlYWtNYXAsVjg9bmV3IFdlYWtNYXAsVjc9bmV3IFdlYWtNYXAseVg9bmV3IFdlYWtNYXAsQjc9bmV3IFdlYWtNYXAsejc9bmV3IFdlYWtNYXAsZ1g9bmV3IFdlYWtNYXAsTjc9bmV3IFdlYWtNYXAsZzQ9bmV3IFdlYWtNYXAsdzc9bmV3IFdlYWtNYXAsaFg9bmV3IFdlYWtNYXAsdVg9bmV3IFdlYWtNYXAsVzA9bmV3IFdlYWtNYXAsbVg9bmV3IFdlYWtNYXAsbFg9bmV3IFdlYWtNYXAsTzc9bmV3IFdlYWtNYXAsY1g9bmV3IFdlYWtNYXAsaTY9bmV3IFdlYWtTZXQsdEc9ZnVuY3Rpb24oKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIE1lc3NhZ2Ugd2l0aCByb2xlPWFzc2lzdGFudFwiKTtyZXR1cm4gdGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKX0sRHc9ZnVuY3Rpb24oKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIE1lc3NhZ2Ugd2l0aCByb2xlPWFzc2lzdGFudFwiKTtsZXQgUT10aGlzLnJlY2VpdmVkTWVzc2FnZXMuYXQoLTEpLmNvbnRlbnQuZmlsdGVyKChKKT0+Si50eXBlPT09XCJ0ZXh0XCIpLm1hcCgoSik9PkoudGV4dCk7aWYoUS5sZW5ndGg9PT0wKXRocm93IG5ldyBnKFwic3RyZWFtIGVuZGVkIHdpdGhvdXQgcHJvZHVjaW5nIGEgY29udGVudCBibG9jayB3aXRoIHR5cGU9dGV4dFwiKTtyZXR1cm4gUS5qb2luKFwiIFwiKX0sYUc9ZnVuY3Rpb24oKXtpZih0aGlzLmVuZGVkKXJldHVybjtmKHRoaXMsTjEsdm9pZCAwLFwiZlwiKX0sc0c9ZnVuY3Rpb24oUSl7aWYodGhpcy5lbmRlZClyZXR1cm47bGV0IEo9Wih0aGlzLGk2LFwibVwiLEZ3KS5jYWxsKHRoaXMsUSk7c3dpdGNoKHRoaXMuX2VtaXQoXCJzdHJlYW1FdmVudFwiLFEsSiksUS50eXBlKXtjYXNlXCJjb250ZW50X2Jsb2NrX2RlbHRhXCI6e2xldCBZPUouY29udGVudC5hdCgtMSk7c3dpdGNoKFEuZGVsdGEudHlwZSl7Y2FzZVwidGV4dF9kZWx0YVwiOntpZihZLnR5cGU9PT1cInRleHRcIil0aGlzLl9lbWl0KFwidGV4dFwiLFEuZGVsdGEudGV4dCxZLnRleHR8fFwiXCIpO2JyZWFrfWNhc2VcImNpdGF0aW9uc19kZWx0YVwiOntpZihZLnR5cGU9PT1cInRleHRcIil0aGlzLl9lbWl0KFwiY2l0YXRpb25cIixRLmRlbHRhLmNpdGF0aW9uLFkuY2l0YXRpb25zPz9bXSk7YnJlYWt9Y2FzZVwiaW5wdXRfanNvbl9kZWx0YVwiOntpZihNdyhZKSYmWS5pbnB1dCl0aGlzLl9lbWl0KFwiaW5wdXRKc29uXCIsUS5kZWx0YS5wYXJ0aWFsX2pzb24sWS5pbnB1dCk7YnJlYWt9Y2FzZVwidGhpbmtpbmdfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0aGlua2luZ1wiKXRoaXMuX2VtaXQoXCJ0aGlua2luZ1wiLFEuZGVsdGEudGhpbmtpbmcsWS50aGlua2luZyk7YnJlYWt9Y2FzZVwic2lnbmF0dXJlX2RlbHRhXCI6e2lmKFkudHlwZT09PVwidGhpbmtpbmdcIil0aGlzLl9lbWl0KFwic2lnbmF0dXJlXCIsWS5zaWduYXR1cmUpO2JyZWFrfWNhc2VcImNvbXBhY3Rpb25fZGVsdGFcIjp7aWYoWS50eXBlPT09XCJjb21wYWN0aW9uXCImJlkuY29udGVudCl0aGlzLl9lbWl0KFwiY29tcGFjdGlvblwiLFkuY29udGVudCk7YnJlYWt9ZGVmYXVsdDpMdyhRLmRlbHRhKX1icmVha31jYXNlXCJtZXNzYWdlX3N0b3BcIjp7dGhpcy5fYWRkTWVzc2FnZVBhcmFtKEopLHRoaXMuX2FkZE1lc3NhZ2UockcoSixaKHRoaXMsVjgsXCJmXCIpLHtsb2dnZXI6Wih0aGlzLE83LFwiZlwiKX0pLCEwKTticmVha31jYXNlXCJjb250ZW50X2Jsb2NrX3N0b3BcIjp7dGhpcy5fZW1pdChcImNvbnRlbnRCbG9ja1wiLEouY29udGVudC5hdCgtMSkpO2JyZWFrfWNhc2VcIm1lc3NhZ2Vfc3RhcnRcIjp7Zih0aGlzLE4xLEosXCJmXCIpO2JyZWFrfWNhc2VcImNvbnRlbnRfYmxvY2tfc3RhcnRcIjpjYXNlXCJtZXNzYWdlX2RlbHRhXCI6YnJlYWt9fSxlRz1mdW5jdGlvbigpe2lmKHRoaXMuZW5kZWQpdGhyb3cgbmV3IGcoXCJzdHJlYW0gaGFzIGVuZGVkLCB0aGlzIHNob3VsZG4ndCBoYXBwZW5cIik7bGV0IFE9Wih0aGlzLE4xLFwiZlwiKTtpZighUSl0aHJvdyBuZXcgZyhcInJlcXVlc3QgZW5kZWQgd2l0aG91dCBzZW5kaW5nIGFueSBjaHVua3NcIik7cmV0dXJuIGYodGhpcyxOMSx2b2lkIDAsXCJmXCIpLHJHKFEsWih0aGlzLFY4LFwiZlwiKSx7bG9nZ2VyOloodGhpcyxPNyxcImZcIil9KX0sRnc9ZnVuY3Rpb24oUSl7bGV0IEo9Wih0aGlzLE4xLFwiZlwiKTtpZihRLnR5cGU9PT1cIm1lc3NhZ2Vfc3RhcnRcIil7aWYoSil0aHJvdyBuZXcgZyhgVW5leHBlY3RlZCBldmVudCBvcmRlciwgZ290ICR7US50eXBlfSBiZWZvcmUgcmVjZWl2aW5nIFwibWVzc2FnZV9zdG9wXCJgKTtyZXR1cm4gUS5tZXNzYWdlfWlmKCFKKXRocm93IG5ldyBnKGBVbmV4cGVjdGVkIGV2ZW50IG9yZGVyLCBnb3QgJHtRLnR5cGV9IGJlZm9yZSBcIm1lc3NhZ2Vfc3RhcnRcImApO3N3aXRjaChRLnR5cGUpe2Nhc2VcIm1lc3NhZ2Vfc3RvcFwiOnJldHVybiBKO2Nhc2VcIm1lc3NhZ2VfZGVsdGFcIjppZihKLmNvbnRhaW5lcj1RLmRlbHRhLmNvbnRhaW5lcixKLnN0b3BfcmVhc29uPVEuZGVsdGEuc3RvcF9yZWFzb24sSi5zdG9wX3NlcXVlbmNlPVEuZGVsdGEuc3RvcF9zZXF1ZW5jZSxKLnVzYWdlLm91dHB1dF90b2tlbnM9US51c2FnZS5vdXRwdXRfdG9rZW5zLEouY29udGV4dF9tYW5hZ2VtZW50PVEuY29udGV4dF9tYW5hZ2VtZW50LFEudXNhZ2UuaW5wdXRfdG9rZW5zIT1udWxsKUoudXNhZ2UuaW5wdXRfdG9rZW5zPVEudXNhZ2UuaW5wdXRfdG9rZW5zO2lmKFEudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zIT1udWxsKUoudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zPVEudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zO2lmKFEudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMhPW51bGwpSi51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2Vucz1RLnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zO2lmKFEudXNhZ2Uuc2VydmVyX3Rvb2xfdXNlIT1udWxsKUoudXNhZ2Uuc2VydmVyX3Rvb2xfdXNlPVEudXNhZ2Uuc2VydmVyX3Rvb2xfdXNlO2lmKFEudXNhZ2UuaXRlcmF0aW9ucyE9bnVsbClKLnVzYWdlLml0ZXJhdGlvbnM9US51c2FnZS5pdGVyYXRpb25zO3JldHVybiBKO2Nhc2VcImNvbnRlbnRfYmxvY2tfc3RhcnRcIjpyZXR1cm4gSi5jb250ZW50LnB1c2goUS5jb250ZW50X2Jsb2NrKSxKO2Nhc2VcImNvbnRlbnRfYmxvY2tfZGVsdGFcIjp7bGV0IFk9Si5jb250ZW50LmF0KFEuaW5kZXgpO3N3aXRjaChRLmRlbHRhLnR5cGUpe2Nhc2VcInRleHRfZGVsdGFcIjp7aWYoWT8udHlwZT09PVwidGV4dFwiKUouY29udGVudFtRLmluZGV4XT17Li4uWSx0ZXh0OihZLnRleHR8fFwiXCIpK1EuZGVsdGEudGV4dH07YnJlYWt9Y2FzZVwiY2l0YXRpb25zX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRleHRcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksY2l0YXRpb25zOlsuLi5ZLmNpdGF0aW9ucz8/W10sUS5kZWx0YS5jaXRhdGlvbl19O2JyZWFrfWNhc2VcImlucHV0X2pzb25fZGVsdGFcIjp7aWYoWSYmTXcoWSkpe2xldCBYPVlbWnddfHxcIlwiO1grPVEuZGVsdGEucGFydGlhbF9qc29uO2xldCBXPXsuLi5ZfTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkoVyxadyx7dmFsdWU6WCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwfSksWCl0cnl7Vy5pbnB1dD1mWChYKX1jYXRjaChHKXtsZXQgVT1uZXcgZyhgVW5hYmxlIHRvIHBhcnNlIHRvb2wgcGFyYW1ldGVyIEpTT04gZnJvbSBtb2RlbC4gUGxlYXNlIHJldHJ5IHlvdXIgcmVxdWVzdCBvciBhZGp1c3QgeW91ciBwcm9tcHQuIEVycm9yOiAke0d9LiBKU09OOiAke1h9YCk7Wih0aGlzLGNYLFwiZlwiKS5jYWxsKHRoaXMsVSl9Si5jb250ZW50W1EuaW5kZXhdPVd9YnJlYWt9Y2FzZVwidGhpbmtpbmdfZGVsdGFcIjp7aWYoWT8udHlwZT09PVwidGhpbmtpbmdcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksdGhpbmtpbmc6WS50aGlua2luZytRLmRlbHRhLnRoaW5raW5nfTticmVha31jYXNlXCJzaWduYXR1cmVfZGVsdGFcIjp7aWYoWT8udHlwZT09PVwidGhpbmtpbmdcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksc2lnbmF0dXJlOlEuZGVsdGEuc2lnbmF0dXJlfTticmVha31jYXNlXCJjb21wYWN0aW9uX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cImNvbXBhY3Rpb25cIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksY29udGVudDooWS5jb250ZW50fHxcIlwiKStRLmRlbHRhLmNvbnRlbnR9O2JyZWFrfWRlZmF1bHQ6THcoUS5kZWx0YSl9cmV0dXJuIEp9Y2FzZVwiY29udGVudF9ibG9ja19zdG9wXCI6cmV0dXJuIEp9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcildKCl7bGV0ICQ9W10sUT1bXSxKPSExO3JldHVybiB0aGlzLm9uKFwic3RyZWFtRXZlbnRcIiwoWSk9PntsZXQgWD1RLnNoaWZ0KCk7aWYoWClYLnJlc29sdmUoWSk7ZWxzZSAkLnB1c2goWSl9KSx0aGlzLm9uKFwiZW5kXCIsKCk9PntKPSEwO2ZvcihsZXQgWSBvZiBRKVkucmVzb2x2ZSh2b2lkIDApO1EubGVuZ3RoPTB9KSx0aGlzLm9uKFwiYWJvcnRcIiwoWSk9PntKPSEwO2ZvcihsZXQgWCBvZiBRKVgucmVqZWN0KFkpO1EubGVuZ3RoPTB9KSx0aGlzLm9uKFwiZXJyb3JcIiwoWSk9PntKPSEwO2ZvcihsZXQgWCBvZiBRKVgucmVqZWN0KFkpO1EubGVuZ3RoPTB9KSx7bmV4dDphc3luYygpPT57aWYoISQubGVuZ3RoKXtpZihKKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07cmV0dXJuIG5ldyBQcm9taXNlKChYLFcpPT5RLnB1c2goe3Jlc29sdmU6WCxyZWplY3Q6V30pKS50aGVuKChYKT0+WD97dmFsdWU6WCxkb25lOiExfTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX1yZXR1cm57dmFsdWU6JC5zaGlmdCgpLGRvbmU6ITF9fSxyZXR1cm46YXN5bmMoKT0+e3JldHVybiB0aGlzLmFib3J0KCkse3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19fXRvUmVhZGFibGVTdHJlYW0oKXtyZXR1cm4gbmV3IEM2KHRoaXNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdLmJpbmQodGhpcyksdGhpcy5jb250cm9sbGVyKS50b1JlYWRhYmxlU3RyZWFtKCl9fWZ1bmN0aW9uIEx3KCQpe31jbGFzcyBCOCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCQpe2xldCBRPXR5cGVvZiAkPT09XCJzdHJpbmdcIj8kOiQubWFwKChKKT0+e2lmKEoudHlwZT09PVwidGV4dFwiKXJldHVybiBKLnRleHQ7cmV0dXJuYFske0oudHlwZX1dYH0pLmpvaW4oXCIgXCIpO3N1cGVyKFEpO3RoaXMubmFtZT1cIlRvb2xFcnJvclwiLHRoaXMuY29udGVudD0kfX12YXIganc9MWU1LEF3PWBZb3UgaGF2ZSBiZWVuIHdvcmtpbmcgb24gdGhlIHRhc2sgZGVzY3JpYmVkIGFib3ZlIGJ1dCBoYXZlIG5vdCB5ZXQgY29tcGxldGVkIGl0LiBXcml0ZSBhIGNvbnRpbnVhdGlvbiBzdW1tYXJ5IHRoYXQgd2lsbCBhbGxvdyB5b3UgKG9yIGFub3RoZXIgaW5zdGFuY2Ugb2YgeW91cnNlbGYpIHRvIHJlc3VtZSB3b3JrIGVmZmljaWVudGx5IGluIGEgZnV0dXJlIGNvbnRleHQgd2luZG93IHdoZXJlIHRoZSBjb252ZXJzYXRpb24gaGlzdG9yeSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhpcyBzdW1tYXJ5LiBZb3VyIHN1bW1hcnkgc2hvdWxkIGJlIHN0cnVjdHVyZWQsIGNvbmNpc2UsIGFuZCBhY3Rpb25hYmxlLiBJbmNsdWRlOlxuMS4gVGFzayBPdmVydmlld1xuVGhlIHVzZXIncyBjb3JlIHJlcXVlc3QgYW5kIHN1Y2Nlc3MgY3JpdGVyaWFcbkFueSBjbGFyaWZpY2F0aW9ucyBvciBjb25zdHJhaW50cyB0aGV5IHNwZWNpZmllZFxuMi4gQ3VycmVudCBTdGF0ZVxuV2hhdCBoYXMgYmVlbiBjb21wbGV0ZWQgc28gZmFyXG5GaWxlcyBjcmVhdGVkLCBtb2RpZmllZCwgb3IgYW5hbHl6ZWQgKHdpdGggcGF0aHMgaWYgcmVsZXZhbnQpXG5LZXkgb3V0cHV0cyBvciBhcnRpZmFjdHMgcHJvZHVjZWRcbjMuIEltcG9ydGFudCBEaXNjb3Zlcmllc1xuVGVjaG5pY2FsIGNvbnN0cmFpbnRzIG9yIHJlcXVpcmVtZW50cyB1bmNvdmVyZWRcbkRlY2lzaW9ucyBtYWRlIGFuZCB0aGVpciByYXRpb25hbGVcbkVycm9ycyBlbmNvdW50ZXJlZCBhbmQgaG93IHRoZXkgd2VyZSByZXNvbHZlZFxuV2hhdCBhcHByb2FjaGVzIHdlcmUgdHJpZWQgdGhhdCBkaWRuJ3Qgd29yayAoYW5kIHdoeSlcbjQuIE5leHQgU3RlcHNcblNwZWNpZmljIGFjdGlvbnMgbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSB0YXNrXG5BbnkgYmxvY2tlcnMgb3Igb3BlbiBxdWVzdGlvbnMgdG8gcmVzb2x2ZVxuUHJpb3JpdHkgb3JkZXIgaWYgbXVsdGlwbGUgc3RlcHMgcmVtYWluXG41LiBDb250ZXh0IHRvIFByZXNlcnZlXG5Vc2VyIHByZWZlcmVuY2VzIG9yIHN0eWxlIHJlcXVpcmVtZW50c1xuRG9tYWluLXNwZWNpZmljIGRldGFpbHMgdGhhdCBhcmVuJ3Qgb2J2aW91c1xuQW55IHByb21pc2VzIG1hZGUgdG8gdGhlIHVzZXJcbkJlIGNvbmNpc2UgYnV0IGNvbXBsZXRlXHUyMDE0ZXJyIG9uIHRoZSBzaWRlIG9mIGluY2x1ZGluZyBpbmZvcm1hdGlvbiB0aGF0IHdvdWxkIHByZXZlbnQgZHVwbGljYXRlIHdvcmsgb3IgcmVwZWF0ZWQgbWlzdGFrZXMuIFdyaXRlIGluIGEgd2F5IHRoYXQgZW5hYmxlcyBpbW1lZGlhdGUgcmVzdW1wdGlvbiBvZiB0aGUgdGFzay5cbldyYXAgeW91ciBzdW1tYXJ5IGluIDxzdW1tYXJ5Pjwvc3VtbWFyeT4gdGFncy5gO3ZhciBGNyx6OCxHMCxyJCxGNixUNixoNCx3MSxaNyxJdywkVTtmdW5jdGlvbiBSdygpe2xldCAkLFE7cmV0dXJue3Byb21pc2U6bmV3IFByb21pc2UoKFksWCk9PnskPVksUT1YfSkscmVzb2x2ZTokLHJlamVjdDpRfX1jbGFzcyBNN3tjb25zdHJ1Y3RvcigkLFEsSil7RjcuYWRkKHRoaXMpLHRoaXMuY2xpZW50PSQsejguc2V0KHRoaXMsITEpLEcwLnNldCh0aGlzLCExKSxyJC5zZXQodGhpcyx2b2lkIDApLEY2LnNldCh0aGlzLHZvaWQgMCksVDYuc2V0KHRoaXMsdm9pZCAwKSxoNC5zZXQodGhpcyx2b2lkIDApLHcxLnNldCh0aGlzLHZvaWQgMCksWjcuc2V0KHRoaXMsMCksZih0aGlzLHIkLHtwYXJhbXM6ey4uLlEsbWVzc2FnZXM6c3RydWN0dXJlZENsb25lKFEubWVzc2FnZXMpfX0sXCJmXCIpO2xldCBYPVtcIkJldGFUb29sUnVubmVyXCIsLi4ubkcoUS50b29scyxRLm1lc3NhZ2VzKV0uam9pbihcIiwgXCIpO2lmKGYodGhpcyxGNix7Li4uSixoZWFkZXJzOlIoW3tcIngtc3RhaW5sZXNzLWhlbHBlclwiOlh9LEo/LmhlYWRlcnNdKX0sXCJmXCIpLGYodGhpcyx3MSxSdygpLFwiZlwiKSxRLmNvbXBhY3Rpb25Db250cm9sPy5lbmFibGVkKWNvbnNvbGUud2FybignQW50aHJvcGljOiBUaGUgYGNvbXBhY3Rpb25Db250cm9sYCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSBzZXJ2ZXItc2lkZSBjb21wYWN0aW9uIGluc3RlYWQgYnkgcGFzc2luZyBgZWRpdHM6IFt7IHR5cGU6IFwiY29tcGFjdF8yMDI2MDExMlwiIH1dYCBpbiB0aGUgcGFyYW1zIHBhc3NlZCB0byBgdG9vbFJ1bm5lcigpYC4gU2VlIGh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9kb2NzL2VuL2J1aWxkLXdpdGgtY2xhdWRlL2NvbXBhY3Rpb24nKX1hc3luYypbKHo4PW5ldyBXZWFrTWFwLEcwPW5ldyBXZWFrTWFwLHIkPW5ldyBXZWFrTWFwLEY2PW5ldyBXZWFrTWFwLFQ2PW5ldyBXZWFrTWFwLGg0PW5ldyBXZWFrTWFwLHcxPW5ldyBXZWFrTWFwLFo3PW5ldyBXZWFrTWFwLEY3PW5ldyBXZWFrU2V0LEl3PWFzeW5jIGZ1bmN0aW9uKCl7bGV0IFE9Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXMuY29tcGFjdGlvbkNvbnRyb2w7aWYoIVF8fCFRLmVuYWJsZWQpcmV0dXJuITE7bGV0IEo9MDtpZihaKHRoaXMsVDYsXCJmXCIpIT09dm9pZCAwKXRyeXtsZXQgSD1hd2FpdCBaKHRoaXMsVDYsXCJmXCIpO0o9SC51c2FnZS5pbnB1dF90b2tlbnMrKEgudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zPz8wKSsoSC51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2Vucz8/MCkrSC51c2FnZS5vdXRwdXRfdG9rZW5zfWNhdGNoe3JldHVybiExfWxldCBZPVEuY29udGV4dFRva2VuVGhyZXNob2xkPz9qdztpZihKPFkpcmV0dXJuITE7bGV0IFg9US5tb2RlbD8/Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubW9kZWwsVz1RLnN1bW1hcnlQcm9tcHQ/P0F3LEc9Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWVzc2FnZXM7aWYoR1tHLmxlbmd0aC0xXS5yb2xlPT09XCJhc3Npc3RhbnRcIil7bGV0IEg9R1tHLmxlbmd0aC0xXTtpZihBcnJheS5pc0FycmF5KEguY29udGVudCkpe2xldCBxPUguY29udGVudC5maWx0ZXIoKFYpPT5WLnR5cGUhPT1cInRvb2xfdXNlXCIpO2lmKHEubGVuZ3RoPT09MClHLnBvcCgpO2Vsc2UgSC5jb250ZW50PXF9fWxldCBVPWF3YWl0IHRoaXMuY2xpZW50LmJldGEubWVzc2FnZXMuY3JlYXRlKHttb2RlbDpYLG1lc3NhZ2VzOlsuLi5HLHtyb2xlOlwidXNlclwiLGNvbnRlbnQ6W3t0eXBlOlwidGV4dFwiLHRleHQ6V31dfV0sbWF4X3Rva2VuczpaKHRoaXMsciQsXCJmXCIpLnBhcmFtcy5tYXhfdG9rZW5zfSx7c2lnbmFsOloodGhpcyxGNixcImZcIikuc2lnbmFsLGhlYWRlcnM6UihbWih0aGlzLEY2LFwiZlwiKS5oZWFkZXJzLHtcIngtc3RhaW5sZXNzLWhlbHBlclwiOlwiY29tcGFjdGlvblwifV0pfSk7aWYoVS5jb250ZW50WzBdPy50eXBlIT09XCJ0ZXh0XCIpdGhyb3cgbmV3IGcoXCJFeHBlY3RlZCB0ZXh0IHJlc3BvbnNlIGZvciBjb21wYWN0aW9uXCIpO3JldHVybiBaKHRoaXMsciQsXCJmXCIpLnBhcmFtcy5tZXNzYWdlcz1be3JvbGU6XCJ1c2VyXCIsY29udGVudDpVLmNvbnRlbnR9XSwhMH0sU3ltYm9sLmFzeW5jSXRlcmF0b3IpXSgpe3ZhciAkO2lmKFoodGhpcyx6OCxcImZcIikpdGhyb3cgbmV3IGcoXCJDYW5ub3QgaXRlcmF0ZSBvdmVyIGEgY29uc3VtZWQgc3RyZWFtXCIpO2YodGhpcyx6OCwhMCxcImZcIiksZih0aGlzLEcwLCEwLFwiZlwiKSxmKHRoaXMsaDQsdm9pZCAwLFwiZlwiKTt0cnl7d2hpbGUoITApe2xldCBRO3RyeXtpZihaKHRoaXMsciQsXCJmXCIpLnBhcmFtcy5tYXhfaXRlcmF0aW9ucyYmWih0aGlzLFo3LFwiZlwiKT49Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWF4X2l0ZXJhdGlvbnMpYnJlYWs7Zih0aGlzLEcwLCExLFwiZlwiKSxmKHRoaXMsaDQsdm9pZCAwLFwiZlwiKSxmKHRoaXMsWjcsKCQ9Wih0aGlzLFo3LFwiZlwiKSwkKyssJCksXCJmXCIpLGYodGhpcyxUNix2b2lkIDAsXCJmXCIpO2xldHttYXhfaXRlcmF0aW9uczpKLGNvbXBhY3Rpb25Db250cm9sOlksLi4uWH09Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXM7aWYoWC5zdHJlYW0pUT10aGlzLmNsaWVudC5iZXRhLm1lc3NhZ2VzLnN0cmVhbSh7Li4uWH0sWih0aGlzLEY2LFwiZlwiKSksZih0aGlzLFQ2LFEuZmluYWxNZXNzYWdlKCksXCJmXCIpLFoodGhpcyxUNixcImZcIikuY2F0Y2goKCk9Pnt9KSx5aWVsZCBRO2Vsc2UgZih0aGlzLFQ2LHRoaXMuY2xpZW50LmJldGEubWVzc2FnZXMuY3JlYXRlKHsuLi5YLHN0cmVhbTohMX0sWih0aGlzLEY2LFwiZlwiKSksXCJmXCIpLHlpZWxkIFoodGhpcyxUNixcImZcIik7aWYoIWF3YWl0IFoodGhpcyxGNyxcIm1cIixJdykuY2FsbCh0aGlzKSl7aWYoIVoodGhpcyxHMCxcImZcIikpe2xldHtyb2xlOlUsY29udGVudDpIfT1hd2FpdCBaKHRoaXMsVDYsXCJmXCIpO1oodGhpcyxyJCxcImZcIikucGFyYW1zLm1lc3NhZ2VzLnB1c2goe3JvbGU6VSxjb250ZW50Okh9KX1sZXQgRz1hd2FpdCBaKHRoaXMsRjcsXCJtXCIsJFUpLmNhbGwodGhpcyxaKHRoaXMsciQsXCJmXCIpLnBhcmFtcy5tZXNzYWdlcy5hdCgtMSkpO2lmKEcpWih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWVzc2FnZXMucHVzaChHKTtlbHNlIGlmKCFaKHRoaXMsRzAsXCJmXCIpKWJyZWFrfX1maW5hbGx5e2lmKFEpUS5hYm9ydCgpfX1pZighWih0aGlzLFQ2LFwiZlwiKSl0aHJvdyBuZXcgZyhcIlRvb2xSdW5uZXIgY29uY2x1ZGVkIHdpdGhvdXQgYSBtZXNzYWdlIGZyb20gdGhlIHNlcnZlclwiKTtaKHRoaXMsdzEsXCJmXCIpLnJlc29sdmUoYXdhaXQgWih0aGlzLFQ2LFwiZlwiKSl9Y2F0Y2goUSl7dGhyb3cgZih0aGlzLHo4LCExLFwiZlwiKSxaKHRoaXMsdzEsXCJmXCIpLnByb21pc2UuY2F0Y2goKCk9Pnt9KSxaKHRoaXMsdzEsXCJmXCIpLnJlamVjdChRKSxmKHRoaXMsdzEsUncoKSxcImZcIiksUX19c2V0TWVzc2FnZXNQYXJhbXMoJCl7aWYodHlwZW9mICQ9PT1cImZ1bmN0aW9uXCIpWih0aGlzLHIkLFwiZlwiKS5wYXJhbXM9JChaKHRoaXMsciQsXCJmXCIpLnBhcmFtcyk7ZWxzZSBaKHRoaXMsciQsXCJmXCIpLnBhcmFtcz0kO2YodGhpcyxHMCwhMCxcImZcIiksZih0aGlzLGg0LHZvaWQgMCxcImZcIil9c2V0UmVxdWVzdE9wdGlvbnMoJCl7aWYodHlwZW9mICQ9PT1cImZ1bmN0aW9uXCIpZih0aGlzLEY2LCQoWih0aGlzLEY2LFwiZlwiKSksXCJmXCIpO2Vsc2UgZih0aGlzLEY2LHsuLi5aKHRoaXMsRjYsXCJmXCIpLC4uLiR9LFwiZlwiKX1hc3luYyBnZW5lcmF0ZVRvb2xSZXNwb25zZSgkPVoodGhpcyxGNixcImZcIikuc2lnbmFsKXtsZXQgUT1hd2FpdCBaKHRoaXMsVDYsXCJmXCIpPz90aGlzLnBhcmFtcy5tZXNzYWdlcy5hdCgtMSk7aWYoIVEpcmV0dXJuIG51bGw7cmV0dXJuIFoodGhpcyxGNyxcIm1cIiwkVSkuY2FsbCh0aGlzLFEsJCl9ZG9uZSgpe3JldHVybiBaKHRoaXMsdzEsXCJmXCIpLnByb21pc2V9YXN5bmMgcnVuVW50aWxEb25lKCl7aWYoIVoodGhpcyx6OCxcImZcIikpZm9yIGF3YWl0KGxldCAkIG9mIHRoaXMpO3JldHVybiB0aGlzLmRvbmUoKX1nZXQgcGFyYW1zKCl7cmV0dXJuIFoodGhpcyxyJCxcImZcIikucGFyYW1zfXB1c2hNZXNzYWdlcyguLi4kKXt0aGlzLnNldE1lc3NhZ2VzUGFyYW1zKChRKT0+KHsuLi5RLG1lc3NhZ2VzOlsuLi5RLm1lc3NhZ2VzLC4uLiRdfSkpfXRoZW4oJCxRKXtyZXR1cm4gdGhpcy5ydW5VbnRpbERvbmUoKS50aGVuKCQsUSl9fSRVPWFzeW5jIGZ1bmN0aW9uKFEsSj1aKHRoaXMsRjYsXCJmXCIpLnNpZ25hbCl7aWYoWih0aGlzLGg0LFwiZlwiKSE9PXZvaWQgMClyZXR1cm4gWih0aGlzLGg0LFwiZlwiKTtyZXR1cm4gZih0aGlzLGg0LE92KFoodGhpcyxyJCxcImZcIikucGFyYW1zLFEsey4uLloodGhpcyxGNixcImZcIiksc2lnbmFsOkp9KSxcImZcIiksWih0aGlzLGg0LFwiZlwiKX07YXN5bmMgZnVuY3Rpb24gT3YoJCxRPSQubWVzc2FnZXMuYXQoLTEpLEope2lmKCFRfHxRLnJvbGUhPT1cImFzc2lzdGFudFwifHwhUS5jb250ZW50fHx0eXBlb2YgUS5jb250ZW50PT09XCJzdHJpbmdcIilyZXR1cm4gbnVsbDtsZXQgWT1RLmNvbnRlbnQuZmlsdGVyKChXKT0+Vy50eXBlPT09XCJ0b29sX3VzZVwiKTtpZihZLmxlbmd0aD09PTApcmV0dXJuIG51bGw7cmV0dXJue3JvbGU6XCJ1c2VyXCIsY29udGVudDphd2FpdCBQcm9taXNlLmFsbChZLm1hcChhc3luYyhXKT0+e2xldCBHPSQudG9vbHMuZmluZCgoVSk9PihcIm5hbWVcImluIFU/VS5uYW1lOlUubWNwX3NlcnZlcl9uYW1lKT09PVcubmFtZSk7aWYoIUd8fCEoXCJydW5cImluIEcpKXJldHVybnt0eXBlOlwidG9vbF9yZXN1bHRcIix0b29sX3VzZV9pZDpXLmlkLGNvbnRlbnQ6YEVycm9yOiBUb29sICcke1cubmFtZX0nIG5vdCBmb3VuZGAsaXNfZXJyb3I6ITB9O3RyeXtsZXQgVT1XLmlucHV0O2lmKFwicGFyc2VcImluIEcmJkcucGFyc2UpVT1HLnBhcnNlKFUpO2xldCBIPWF3YWl0IEcucnVuKFUse3Rvb2xVc2VCbG9jazpXLHNpZ25hbDpKPy5zaWduYWx9KTtyZXR1cm57dHlwZTpcInRvb2xfcmVzdWx0XCIsdG9vbF91c2VfaWQ6Vy5pZCxjb250ZW50Okh9fWNhdGNoKFUpe3JldHVybnt0eXBlOlwidG9vbF9yZXN1bHRcIix0b29sX3VzZV9pZDpXLmlkLGNvbnRlbnQ6VSBpbnN0YW5jZW9mIEI4P1UuY29udGVudDpgRXJyb3I6ICR7VSBpbnN0YW5jZW9mIEVycm9yP1UubWVzc2FnZTpTdHJpbmcoVSl9YCxpc19lcnJvcjohMH19fSkpfX12YXIgUHc9e1wiY2xhdWRlLTEuM1wiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtMS4zLTEwMGtcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLWluc3RhbnQtMS4xXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS1pbnN0YW50LTEuMS0xMDBrXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS1pbnN0YW50LTEuMlwiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtMy1zb25uZXQtMjAyNDAyMjlcIjpcIkp1bHkgMjFzdCwgMjAyNVwiLFwiY2xhdWRlLTMtb3B1cy0yMDI0MDIyOVwiOlwiSmFudWFyeSA1dGgsIDIwMjZcIixcImNsYXVkZS0yLjFcIjpcIkp1bHkgMjFzdCwgMjAyNVwiLFwiY2xhdWRlLTIuMFwiOlwiSnVseSAyMXN0LCAyMDI1XCIsXCJjbGF1ZGUtMy03LXNvbm5ldC1sYXRlc3RcIjpcIkZlYnJ1YXJ5IDE5dGgsIDIwMjZcIixcImNsYXVkZS0zLTctc29ubmV0LTIwMjUwMjE5XCI6XCJGZWJydWFyeSAxOXRoLCAyMDI2XCJ9LER2PVtcImNsYXVkZS1teXRob3MtcHJldmlld1wiLFwiY2xhdWRlLW9wdXMtNC02XCJdO2NsYXNzIE8xIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5iYXRjaGVzPW5ldyBxNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2xldCBKPUV3KCQpLHtiZXRhczpZLC4uLlh9PUo7aWYoWC5tb2RlbCBpbiBQdyljb25zb2xlLndhcm4oYFRoZSBtb2RlbCAnJHtYLm1vZGVsfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCByZWFjaCBlbmQtb2YtbGlmZSBvbiAke1B3W1gubW9kZWxdfVxuUGxlYXNlIG1pZ3JhdGUgdG8gYSBuZXdlciBtb2RlbC4gVmlzaXQgaHR0cHM6Ly9kb2NzLmFudGhyb3BpYy5jb20vZW4vZG9jcy9yZXNvdXJjZXMvbW9kZWwtZGVwcmVjYXRpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLmApO2lmKER2LmluY2x1ZGVzKFgubW9kZWwpJiZYLnRoaW5raW5nJiZYLnRoaW5raW5nLnR5cGU9PT1cImVuYWJsZWRcIiljb25zb2xlLndhcm4oYFVzaW5nIENsYXVkZSB3aXRoICR7WC5tb2RlbH0gYW5kICd0aGlua2luZy50eXBlPWVuYWJsZWQnIGlzIGRlcHJlY2F0ZWQuIFVzZSAndGhpbmtpbmcudHlwZT1hZGFwdGl2ZScgaW5zdGVhZCB3aGljaCByZXN1bHRzIGluIGJldHRlciBtb2RlbCBwZXJmb3JtYW5jZSBpbiBvdXIgdGVzdGluZzogaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL2RvY3MvZW4vYnVpbGQtd2l0aC1jbGF1ZGUvYWRhcHRpdmUtdGhpbmtpbmdgKTtsZXQgVz10aGlzLl9jbGllbnQuX29wdGlvbnMudGltZW91dDtpZighWC5zdHJlYW0mJlc9PW51bGwpe2xldCBVPXhYW1gubW9kZWxdPz92b2lkIDA7Vz10aGlzLl9jbGllbnQuY2FsY3VsYXRlTm9uc3RyZWFtaW5nVGltZW91dChYLm1heF90b2tlbnMsVSl9bGV0IEc9VFgoWC50b29scyxYLm1lc3NhZ2VzKTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVzc2FnZXM/YmV0YT10cnVlXCIse2JvZHk6WCx0aW1lb3V0Olc/PzYwMDAwMCwuLi5RLGhlYWRlcnM6Uihbey4uLlk/LnRvU3RyaW5nKCkhPW51bGw/e1wiYW50aHJvcGljLWJldGFcIjpZPy50b1N0cmluZygpfTp2b2lkIDB9LEcsUT8uaGVhZGVyc10pLHN0cmVhbTpKLnN0cmVhbT8/ITF9KX1wYXJzZSgkLFEpe3JldHVybiBRPXsuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uJC5iZXRhcz8/W10sXCJzdHJ1Y3R1cmVkLW91dHB1dHMtMjAyNS0xMi0xNVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9LHRoaXMuY3JlYXRlKCQsUSkudGhlbigoSik9Pm9HKEosJCx7bG9nZ2VyOnRoaXMuX2NsaWVudC5sb2dnZXI/P2NvbnNvbGV9KSl9c3RyZWFtKCQsUSl7cmV0dXJuIEQ3LmNyZWF0ZU1lc3NhZ2UodGhpcywkLFEpfWNvdW50VG9rZW5zKCQsUSl7bGV0IEo9RXcoJCkse2JldGFzOlksLi4uWH09SjtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVzc2FnZXMvY291bnRfdG9rZW5zP2JldGE9dHJ1ZVwiLHtib2R5OlgsLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwidG9rZW4tY291bnRpbmctMjAyNC0xMS0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX10b29sUnVubmVyKCQsUSl7cmV0dXJuIG5ldyBNNyh0aGlzLl9jbGllbnQsJCxRKX19ZnVuY3Rpb24gRXcoJCl7aWYoISQub3V0cHV0X2Zvcm1hdClyZXR1cm4gJDtpZigkLm91dHB1dF9jb25maWc/LmZvcm1hdCl0aHJvdyBuZXcgZyhcIkJvdGggb3V0cHV0X2Zvcm1hdCBhbmQgb3V0cHV0X2NvbmZpZy5mb3JtYXQgd2VyZSBwcm92aWRlZC4gUGxlYXNlIHVzZSBvbmx5IG91dHB1dF9jb25maWcuZm9ybWF0IChvdXRwdXRfZm9ybWF0IGlzIGRlcHJlY2F0ZWQpLlwiKTtsZXR7b3V0cHV0X2Zvcm1hdDpRLC4uLkp9PSQ7cmV0dXJuey4uLkosb3V0cHV0X2NvbmZpZzp7Li4uJC5vdXRwdXRfY29uZmlnLGZvcm1hdDpRfX19TzEuQmF0Y2hlcz1xNztPMS5CZXRhVG9vbFJ1bm5lcj1NNztPMS5Ub29sRXJyb3I9Qjg7Y2xhc3MgTDcgZXh0ZW5kcyB0e2xpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS9zZXNzaW9ucy8keyR9L2V2ZW50cz9iZXRhPXRydWVgLEQkLHtxdWVyeTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9c2VuZCgkLFEsSil7bGV0e2JldGFzOlksLi4uWH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvc2Vzc2lvbnMvJHskfS9ldmVudHM/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9c3RyZWFtKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvc2Vzc2lvbnMvJHskfS9ldmVudHMvc3RyZWFtP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pLHN0cmVhbTohMH0pfX1jbGFzcyBqNyBleHRlbmRzIHR7cmV0cmlldmUoJCxRLEope2xldHtzZXNzaW9uX2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9zZXNzaW9ucy8ke1l9L3Jlc291cmNlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7c2Vzc2lvbl9pZDpZLGJldGFzOlgsLi4uV309UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvc2Vzc2lvbnMvJHtZfS9yZXNvdXJjZXMvJHskfT9iZXRhPXRydWVgLHtib2R5OlcsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoVGAvdjEvc2Vzc2lvbnMvJHskfS9yZXNvdXJjZXM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFEsSil7bGV0e3Nlc3Npb25faWQ6WSxiZXRhczpYfT1RO3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL3Nlc3Npb25zLyR7WX0vcmVzb3VyY2VzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1hZGQoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3Nlc3Npb25zLyR7JH0vcmVzb3VyY2VzP2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1jbGFzcyBVMCBleHRlbmRzIHR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuZXZlbnRzPW5ldyBMNyh0aGlzLl9jbGllbnQpLHRoaXMucmVzb3VyY2VzPW5ldyBqNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL3Nlc3Npb25zP2JldGE9dHJ1ZVwiLHtib2R5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1yZXRyaWV2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL3Nlc3Npb25zLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3Nlc3Npb25zLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9zZXNzaW9ucz9iZXRhPXRydWVcIixEJCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL3Nlc3Npb25zLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1hcmNoaXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3Nlc3Npb25zLyR7JH0vYXJjaGl2ZT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1VMC5FdmVudHM9TDc7VTAuUmVzb3VyY2VzPWo3O2NsYXNzIEE3IGV4dGVuZHMgdHtjcmVhdGUoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9za2lsbHMvJHskfS92ZXJzaW9ucz9iZXRhPXRydWVgLFU4KHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwic2tpbGxzLTIwMjUtMTAtMDJcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSx0aGlzLl9jbGllbnQpKX1yZXRyaWV2ZSgkLFEsSil7bGV0e3NraWxsX2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9za2lsbHMvJHtZfS92ZXJzaW9ucy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcInNraWxscy0yMDI1LTEwLTAyXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS9za2lsbHMvJHskfS92ZXJzaW9ucz9iZXRhPXRydWVgLEQkLHtxdWVyeTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInNraWxscy0yMDI1LTEwLTAyXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFEsSil7bGV0e3NraWxsX2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9za2lsbHMvJHtZfS92ZXJzaW9ucy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcInNraWxscy0yMDI1LTEwLTAyXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1jbGFzcyBOOCBleHRlbmRzIHR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMudmVyc2lvbnM9bmV3IEE3KHRoaXMuX2NsaWVudCl9Y3JlYXRlKCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL3NraWxscz9iZXRhPXRydWVcIixVOCh7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcInNraWxscy0yMDI1LTEwLTAyXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0sdGhpcy5fY2xpZW50LCExKSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9za2lsbHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL3NraWxscz9iZXRhPXRydWVcIixEJCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9za2lsbHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19TjguVmVyc2lvbnM9QTc7Y2xhc3MgSTcgZXh0ZW5kcyB0e2NyZWF0ZSgkLFEsSil7bGV0e2JldGFzOlksLi4uWH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdmF1bHRzLyR7JH0vY3JlZGVudGlhbHM/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRLEope2xldHt2YXVsdF9pZDpZLGJldGFzOlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvdmF1bHRzLyR7WX0vY3JlZGVudGlhbHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwZGF0ZSgkLFEsSil7bGV0e3ZhdWx0X2lkOlksYmV0YXM6WCwuLi5XfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS92YXVsdHMvJHtZfS9jcmVkZW50aWFscy8keyR9P2JldGE9dHJ1ZWAse2JvZHk6VywuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS92YXVsdHMvJHskfS9jcmVkZW50aWFscz9iZXRhPXRydWVgLEQkLHtxdWVyeTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUSxKKXtsZXR7dmF1bHRfaWQ6WSxiZXRhczpYfT1RO3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL3ZhdWx0cy8ke1l9L2NyZWRlbnRpYWxzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1hcmNoaXZlKCQsUSxKKXtsZXR7dmF1bHRfaWQ6WSxiZXRhczpYfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS92YXVsdHMvJHtZfS9jcmVkZW50aWFscy8keyR9L2FyY2hpdmU/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgdzggZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLmNyZWRlbnRpYWxzPW5ldyBJNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL3ZhdWx0cz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS92YXVsdHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwZGF0ZSgkLFEsSil7bGV0e2JldGFzOlksLi4uWH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdmF1bHRzLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS92YXVsdHM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS92YXVsdHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWFyY2hpdmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdmF1bHRzLyR7JH0vYXJjaGl2ZT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX13OC5DcmVkZW50aWFscz1JNztjbGFzcyBXNiBleHRlbmRzIHR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMubW9kZWxzPW5ldyBXNyh0aGlzLl9jbGllbnQpLHRoaXMubWVzc2FnZXM9bmV3IE8xKHRoaXMuX2NsaWVudCksdGhpcy5hZ2VudHM9bmV3IEg4KHRoaXMuX2NsaWVudCksdGhpcy5lbnZpcm9ubWVudHM9bmV3IEo3KHRoaXMuX2NsaWVudCksdGhpcy5zZXNzaW9ucz1uZXcgVTAodGhpcy5fY2xpZW50KSx0aGlzLnZhdWx0cz1uZXcgdzgodGhpcy5fY2xpZW50KSx0aGlzLm1lbW9yeVN0b3Jlcz1uZXcgWTAodGhpcy5fY2xpZW50KSx0aGlzLmZpbGVzPW5ldyBZNyh0aGlzLl9jbGllbnQpLHRoaXMuc2tpbGxzPW5ldyBOOCh0aGlzLl9jbGllbnQpLHRoaXMudXNlclByb2ZpbGVzPW5ldyBHNyh0aGlzLl9jbGllbnQpfX1XNi5Nb2RlbHM9Vzc7VzYuTWVzc2FnZXM9TzE7VzYuQWdlbnRzPUg4O1c2LkVudmlyb25tZW50cz1KNztXNi5TZXNzaW9ucz1VMDtXNi5WYXVsdHM9dzg7VzYuTWVtb3J5U3RvcmVzPVkwO1c2LkZpbGVzPVk3O1c2LlNraWxscz1OODtXNi5Vc2VyUHJvZmlsZXM9Rzc7Y2xhc3MgTzggZXh0ZW5kcyB0e2NyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL2NvbXBsZXRlXCIse2JvZHk6WSx0aW1lb3V0OnRoaXMuX2NsaWVudC5fb3B0aW9ucy50aW1lb3V0Pz82MDAwMDAsLi4uUSxoZWFkZXJzOlIoW3suLi5KPy50b1N0cmluZygpIT1udWxsP3tcImFudGhyb3BpYy1iZXRhXCI6Sj8udG9TdHJpbmcoKX06dm9pZCAwfSxRPy5oZWFkZXJzXSksc3RyZWFtOiQuc3RyZWFtPz8hMX0pfX1mdW5jdGlvbiBidygkKXtyZXR1cm4gJD8ub3V0cHV0X2NvbmZpZz8uZm9ybWF0fWZ1bmN0aW9uIFFVKCQsUSxKKXtsZXQgWT1idyhRKTtpZighUXx8IShcInBhcnNlXCJpbihZPz97fSkpKXJldHVybnsuLi4kLGNvbnRlbnQ6JC5jb250ZW50Lm1hcCgoWCk9PntpZihYLnR5cGU9PT1cInRleHRcIilyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHsuLi5YfSxcInBhcnNlZF9vdXRwdXRcIix7dmFsdWU6bnVsbCxlbnVtZXJhYmxlOiExfSk7cmV0dXJuIFh9KSxwYXJzZWRfb3V0cHV0Om51bGx9O3JldHVybiBKVSgkLFEsSil9ZnVuY3Rpb24gSlUoJCxRLEope2xldCBZPW51bGwsWD0kLmNvbnRlbnQubWFwKChXKT0+e2lmKFcudHlwZT09PVwidGV4dFwiKXtsZXQgRz1QdihRLFcudGV4dCk7aWYoWT09PW51bGwpWT1HO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoey4uLld9LFwicGFyc2VkX291dHB1dFwiLHt2YWx1ZTpHLGVudW1lcmFibGU6ITF9KX1yZXR1cm4gV30pO3JldHVybnsuLi4kLGNvbnRlbnQ6WCxwYXJzZWRfb3V0cHV0Oll9fWZ1bmN0aW9uIFB2KCQsUSl7bGV0IEo9YncoJCk7aWYoSj8udHlwZSE9PVwianNvbl9zY2hlbWFcIilyZXR1cm4gbnVsbDt0cnl7aWYoXCJwYXJzZVwiaW4gSilyZXR1cm4gSi5wYXJzZShRKTtyZXR1cm4gSlNPTi5wYXJzZShRKX1jYXRjaChZKXt0aHJvdyBuZXcgZyhgRmFpbGVkIHRvIHBhcnNlIHN0cnVjdHVyZWQgb3V0cHV0OiAke1l9YCl9fXZhciBuNixEMSxEOCxSNyxwWCxQNyxFNyxkWCxiNyx1NCxfNyxpWCxuWCxIMCxyWCxvWCxTNyxYVSxfdyxZVSxXVSxHVSxVVSxTdyxrdz1cIl9fanNvbl9idWZcIjtmdW5jdGlvbiB2dygkKXtyZXR1cm4gJC50eXBlPT09XCJ0b29sX3VzZVwifHwkLnR5cGU9PT1cInNlcnZlcl90b29sX3VzZVwifWNsYXNzIGs3e2NvbnN0cnVjdG9yKCQsUSl7bjYuYWRkKHRoaXMpLHRoaXMubWVzc2FnZXM9W10sdGhpcy5yZWNlaXZlZE1lc3NhZ2VzPVtdLEQxLnNldCh0aGlzLHZvaWQgMCksRDguc2V0KHRoaXMsbnVsbCksdGhpcy5jb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsUjcuc2V0KHRoaXMsdm9pZCAwKSxwWC5zZXQodGhpcywoKT0+e30pLFA3LnNldCh0aGlzLCgpPT57fSksRTcuc2V0KHRoaXMsdm9pZCAwKSxkWC5zZXQodGhpcywoKT0+e30pLGI3LnNldCh0aGlzLCgpPT57fSksdTQuc2V0KHRoaXMse30pLF83LnNldCh0aGlzLCExKSxpWC5zZXQodGhpcywhMSksblguc2V0KHRoaXMsITEpLEgwLnNldCh0aGlzLCExKSxyWC5zZXQodGhpcyx2b2lkIDApLG9YLnNldCh0aGlzLHZvaWQgMCksUzcuc2V0KHRoaXMsdm9pZCAwKSxZVS5zZXQodGhpcywoSik9PntpZihmKHRoaXMsaVgsITAsXCJmXCIpLGY0KEopKUo9bmV3IFE2O2lmKEogaW5zdGFuY2VvZiBRNilyZXR1cm4gZih0aGlzLG5YLCEwLFwiZlwiKSx0aGlzLl9lbWl0KFwiYWJvcnRcIixKKTtpZihKIGluc3RhbmNlb2YgZylyZXR1cm4gdGhpcy5fZW1pdChcImVycm9yXCIsSik7aWYoSiBpbnN0YW5jZW9mIEVycm9yKXtsZXQgWT1uZXcgZyhKLm1lc3NhZ2UpO3JldHVybiBZLmNhdXNlPUosdGhpcy5fZW1pdChcImVycm9yXCIsWSl9cmV0dXJuIHRoaXMuX2VtaXQoXCJlcnJvclwiLG5ldyBnKFN0cmluZyhKKSkpfSksZih0aGlzLFI3LG5ldyBQcm9taXNlKChKLFkpPT57Zih0aGlzLHBYLEosXCJmXCIpLGYodGhpcyxQNyxZLFwiZlwiKX0pLFwiZlwiKSxmKHRoaXMsRTcsbmV3IFByb21pc2UoKEosWSk9PntmKHRoaXMsZFgsSixcImZcIiksZih0aGlzLGI3LFksXCJmXCIpfSksXCJmXCIpLFoodGhpcyxSNyxcImZcIikuY2F0Y2goKCk9Pnt9KSxaKHRoaXMsRTcsXCJmXCIpLmNhdGNoKCgpPT57fSksZih0aGlzLEQ4LCQsXCJmXCIpLGYodGhpcyxTNyxRPy5sb2dnZXI/P2NvbnNvbGUsXCJmXCIpfWdldCByZXNwb25zZSgpe3JldHVybiBaKHRoaXMsclgsXCJmXCIpfWdldCByZXF1ZXN0X2lkKCl7cmV0dXJuIFoodGhpcyxvWCxcImZcIil9YXN5bmMgd2l0aFJlc3BvbnNlKCl7Zih0aGlzLEgwLCEwLFwiZlwiKTtsZXQgJD1hd2FpdCBaKHRoaXMsUjcsXCJmXCIpO2lmKCEkKXRocm93IEVycm9yKFwiQ291bGQgbm90IHJlc29sdmUgYSBgUmVzcG9uc2VgIG9iamVjdFwiKTtyZXR1cm57ZGF0YTp0aGlzLHJlc3BvbnNlOiQscmVxdWVzdF9pZDokLmhlYWRlcnMuZ2V0KFwicmVxdWVzdC1pZFwiKX19c3RhdGljIGZyb21SZWFkYWJsZVN0cmVhbSgkKXtsZXQgUT1uZXcgazcobnVsbCk7cmV0dXJuIFEuX3J1bigoKT0+US5fZnJvbVJlYWRhYmxlU3RyZWFtKCQpKSxRfXN0YXRpYyBjcmVhdGVNZXNzYWdlKCQsUSxKLHtsb2dnZXI6WX09e30pe2xldCBYPW5ldyBrNyhRLHtsb2dnZXI6WX0pO2ZvcihsZXQgVyBvZiBRLm1lc3NhZ2VzKVguX2FkZE1lc3NhZ2VQYXJhbShXKTtyZXR1cm4gZihYLEQ4LHsuLi5RLHN0cmVhbTohMH0sXCJmXCIpLFguX3J1bigoKT0+WC5fY3JlYXRlTWVzc2FnZSgkLHsuLi5RLHN0cmVhbTohMH0sey4uLkosaGVhZGVyczp7Li4uSj8uaGVhZGVycyxcIlgtU3RhaW5sZXNzLUhlbHBlci1NZXRob2RcIjpcInN0cmVhbVwifX0pKSxYfV9ydW4oJCl7JCgpLnRoZW4oKCk9Pnt0aGlzLl9lbWl0RmluYWwoKSx0aGlzLl9lbWl0KFwiZW5kXCIpfSxaKHRoaXMsWVUsXCJmXCIpKX1fYWRkTWVzc2FnZVBhcmFtKCQpe3RoaXMubWVzc2FnZXMucHVzaCgkKX1fYWRkTWVzc2FnZSgkLFE9ITApe2lmKHRoaXMucmVjZWl2ZWRNZXNzYWdlcy5wdXNoKCQpLFEpdGhpcy5fZW1pdChcIm1lc3NhZ2VcIiwkKX1hc3luYyBfY3JlYXRlTWVzc2FnZSgkLFEsSil7bGV0IFk9Sj8uc2lnbmFsLFg7aWYoWSl7aWYoWS5hYm9ydGVkKXRoaXMuY29udHJvbGxlci5hYm9ydCgpO1g9dGhpcy5jb250cm9sbGVyLmFib3J0LmJpbmQodGhpcy5jb250cm9sbGVyKSxZLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFgpfXRyeXtaKHRoaXMsbjYsXCJtXCIsV1UpLmNhbGwodGhpcyk7bGV0e3Jlc3BvbnNlOlcsZGF0YTpHfT1hd2FpdCAkLmNyZWF0ZSh7Li4uUSxzdHJlYW06ITB9LHsuLi5KLHNpZ25hbDp0aGlzLmNvbnRyb2xsZXIuc2lnbmFsfSkud2l0aFJlc3BvbnNlKCk7dGhpcy5fY29ubmVjdGVkKFcpO2ZvciBhd2FpdChsZXQgVSBvZiBHKVoodGhpcyxuNixcIm1cIixHVSkuY2FsbCh0aGlzLFUpO2lmKEcuY29udHJvbGxlci5zaWduYWw/LmFib3J0ZWQpdGhyb3cgbmV3IFE2O1oodGhpcyxuNixcIm1cIixVVSkuY2FsbCh0aGlzKX1maW5hbGx5e2lmKFkmJlgpWS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIixYKX19X2Nvbm5lY3RlZCgkKXtpZih0aGlzLmVuZGVkKXJldHVybjtmKHRoaXMsclgsJCxcImZcIiksZih0aGlzLG9YLCQ/LmhlYWRlcnMuZ2V0KFwicmVxdWVzdC1pZFwiKSxcImZcIiksWih0aGlzLHBYLFwiZlwiKS5jYWxsKHRoaXMsJCksdGhpcy5fZW1pdChcImNvbm5lY3RcIil9Z2V0IGVuZGVkKCl7cmV0dXJuIFoodGhpcyxfNyxcImZcIil9Z2V0IGVycm9yZWQoKXtyZXR1cm4gWih0aGlzLGlYLFwiZlwiKX1nZXQgYWJvcnRlZCgpe3JldHVybiBaKHRoaXMsblgsXCJmXCIpfWFib3J0KCl7dGhpcy5jb250cm9sbGVyLmFib3J0KCl9b24oJCxRKXtyZXR1cm4oWih0aGlzLHU0LFwiZlwiKVskXXx8KFoodGhpcyx1NCxcImZcIilbJF09W10pKS5wdXNoKHtsaXN0ZW5lcjpRfSksdGhpc31vZmYoJCxRKXtsZXQgSj1aKHRoaXMsdTQsXCJmXCIpWyRdO2lmKCFKKXJldHVybiB0aGlzO2xldCBZPUouZmluZEluZGV4KChYKT0+WC5saXN0ZW5lcj09PVEpO2lmKFk+PTApSi5zcGxpY2UoWSwxKTtyZXR1cm4gdGhpc31vbmNlKCQsUSl7cmV0dXJuKFoodGhpcyx1NCxcImZcIilbJF18fChaKHRoaXMsdTQsXCJmXCIpWyRdPVtdKSkucHVzaCh7bGlzdGVuZXI6USxvbmNlOiEwfSksdGhpc31lbWl0dGVkKCQpe3JldHVybiBuZXcgUHJvbWlzZSgoUSxKKT0+e2lmKGYodGhpcyxIMCwhMCxcImZcIiksJCE9PVwiZXJyb3JcIil0aGlzLm9uY2UoXCJlcnJvclwiLEopO3RoaXMub25jZSgkLFEpfSl9YXN5bmMgZG9uZSgpe2YodGhpcyxIMCwhMCxcImZcIiksYXdhaXQgWih0aGlzLEU3LFwiZlwiKX1nZXQgY3VycmVudE1lc3NhZ2UoKXtyZXR1cm4gWih0aGlzLEQxLFwiZlwiKX1hc3luYyBmaW5hbE1lc3NhZ2UoKXtyZXR1cm4gYXdhaXQgdGhpcy5kb25lKCksWih0aGlzLG42LFwibVwiLFhVKS5jYWxsKHRoaXMpfWFzeW5jIGZpbmFsVGV4dCgpe3JldHVybiBhd2FpdCB0aGlzLmRvbmUoKSxaKHRoaXMsbjYsXCJtXCIsX3cpLmNhbGwodGhpcyl9X2VtaXQoJCwuLi5RKXtpZihaKHRoaXMsXzcsXCJmXCIpKXJldHVybjtpZigkPT09XCJlbmRcIilmKHRoaXMsXzcsITAsXCJmXCIpLFoodGhpcyxkWCxcImZcIikuY2FsbCh0aGlzKTtsZXQgSj1aKHRoaXMsdTQsXCJmXCIpWyRdO2lmKEopWih0aGlzLHU0LFwiZlwiKVskXT1KLmZpbHRlcigoWSk9PiFZLm9uY2UpLEouZm9yRWFjaCgoe2xpc3RlbmVyOll9KT0+WSguLi5RKSk7aWYoJD09PVwiYWJvcnRcIil7bGV0IFk9UVswXTtpZighWih0aGlzLEgwLFwiZlwiKSYmIUo/Lmxlbmd0aClQcm9taXNlLnJlamVjdChZKTtaKHRoaXMsUDcsXCJmXCIpLmNhbGwodGhpcyxZKSxaKHRoaXMsYjcsXCJmXCIpLmNhbGwodGhpcyxZKSx0aGlzLl9lbWl0KFwiZW5kXCIpO3JldHVybn1pZigkPT09XCJlcnJvclwiKXtsZXQgWT1RWzBdO2lmKCFaKHRoaXMsSDAsXCJmXCIpJiYhSj8ubGVuZ3RoKVByb21pc2UucmVqZWN0KFkpO1oodGhpcyxQNyxcImZcIikuY2FsbCh0aGlzLFkpLFoodGhpcyxiNyxcImZcIikuY2FsbCh0aGlzLFkpLHRoaXMuX2VtaXQoXCJlbmRcIil9fV9lbWl0RmluYWwoKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMuYXQoLTEpKXRoaXMuX2VtaXQoXCJmaW5hbE1lc3NhZ2VcIixaKHRoaXMsbjYsXCJtXCIsWFUpLmNhbGwodGhpcykpfWFzeW5jIF9mcm9tUmVhZGFibGVTdHJlYW0oJCxRKXtsZXQgSj1RPy5zaWduYWwsWTtpZihKKXtpZihKLmFib3J0ZWQpdGhpcy5jb250cm9sbGVyLmFib3J0KCk7WT10aGlzLmNvbnRyb2xsZXIuYWJvcnQuYmluZCh0aGlzLmNvbnRyb2xsZXIpLEouYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWSl9dHJ5e1oodGhpcyxuNixcIm1cIixXVSkuY2FsbCh0aGlzKSx0aGlzLl9jb25uZWN0ZWQobnVsbCk7bGV0IFg9QzYuZnJvbVJlYWRhYmxlU3RyZWFtKCQsdGhpcy5jb250cm9sbGVyKTtmb3IgYXdhaXQobGV0IFcgb2YgWClaKHRoaXMsbjYsXCJtXCIsR1UpLmNhbGwodGhpcyxXKTtpZihYLmNvbnRyb2xsZXIuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtaKHRoaXMsbjYsXCJtXCIsVVUpLmNhbGwodGhpcyl9ZmluYWxseXtpZihKJiZZKUoucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWSl9fVsoRDE9bmV3IFdlYWtNYXAsRDg9bmV3IFdlYWtNYXAsUjc9bmV3IFdlYWtNYXAscFg9bmV3IFdlYWtNYXAsUDc9bmV3IFdlYWtNYXAsRTc9bmV3IFdlYWtNYXAsZFg9bmV3IFdlYWtNYXAsYjc9bmV3IFdlYWtNYXAsdTQ9bmV3IFdlYWtNYXAsXzc9bmV3IFdlYWtNYXAsaVg9bmV3IFdlYWtNYXAsblg9bmV3IFdlYWtNYXAsSDA9bmV3IFdlYWtNYXAsclg9bmV3IFdlYWtNYXAsb1g9bmV3IFdlYWtNYXAsUzc9bmV3IFdlYWtNYXAsWVU9bmV3IFdlYWtNYXAsbjY9bmV3IFdlYWtTZXQsWFU9ZnVuY3Rpb24oKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIE1lc3NhZ2Ugd2l0aCByb2xlPWFzc2lzdGFudFwiKTtyZXR1cm4gdGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKX0sX3c9ZnVuY3Rpb24oKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIE1lc3NhZ2Ugd2l0aCByb2xlPWFzc2lzdGFudFwiKTtsZXQgUT10aGlzLnJlY2VpdmVkTWVzc2FnZXMuYXQoLTEpLmNvbnRlbnQuZmlsdGVyKChKKT0+Si50eXBlPT09XCJ0ZXh0XCIpLm1hcCgoSik9PkoudGV4dCk7aWYoUS5sZW5ndGg9PT0wKXRocm93IG5ldyBnKFwic3RyZWFtIGVuZGVkIHdpdGhvdXQgcHJvZHVjaW5nIGEgY29udGVudCBibG9jayB3aXRoIHR5cGU9dGV4dFwiKTtyZXR1cm4gUS5qb2luKFwiIFwiKX0sV1U9ZnVuY3Rpb24oKXtpZih0aGlzLmVuZGVkKXJldHVybjtmKHRoaXMsRDEsdm9pZCAwLFwiZlwiKX0sR1U9ZnVuY3Rpb24oUSl7aWYodGhpcy5lbmRlZClyZXR1cm47bGV0IEo9Wih0aGlzLG42LFwibVwiLFN3KS5jYWxsKHRoaXMsUSk7c3dpdGNoKHRoaXMuX2VtaXQoXCJzdHJlYW1FdmVudFwiLFEsSiksUS50eXBlKXtjYXNlXCJjb250ZW50X2Jsb2NrX2RlbHRhXCI6e2xldCBZPUouY29udGVudC5hdCgtMSk7c3dpdGNoKFEuZGVsdGEudHlwZSl7Y2FzZVwidGV4dF9kZWx0YVwiOntpZihZLnR5cGU9PT1cInRleHRcIil0aGlzLl9lbWl0KFwidGV4dFwiLFEuZGVsdGEudGV4dCxZLnRleHR8fFwiXCIpO2JyZWFrfWNhc2VcImNpdGF0aW9uc19kZWx0YVwiOntpZihZLnR5cGU9PT1cInRleHRcIil0aGlzLl9lbWl0KFwiY2l0YXRpb25cIixRLmRlbHRhLmNpdGF0aW9uLFkuY2l0YXRpb25zPz9bXSk7YnJlYWt9Y2FzZVwiaW5wdXRfanNvbl9kZWx0YVwiOntpZih2dyhZKSYmWS5pbnB1dCl0aGlzLl9lbWl0KFwiaW5wdXRKc29uXCIsUS5kZWx0YS5wYXJ0aWFsX2pzb24sWS5pbnB1dCk7YnJlYWt9Y2FzZVwidGhpbmtpbmdfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0aGlua2luZ1wiKXRoaXMuX2VtaXQoXCJ0aGlua2luZ1wiLFEuZGVsdGEudGhpbmtpbmcsWS50aGlua2luZyk7YnJlYWt9Y2FzZVwic2lnbmF0dXJlX2RlbHRhXCI6e2lmKFkudHlwZT09PVwidGhpbmtpbmdcIil0aGlzLl9lbWl0KFwic2lnbmF0dXJlXCIsWS5zaWduYXR1cmUpO2JyZWFrfWRlZmF1bHQ6Q3coUS5kZWx0YSl9YnJlYWt9Y2FzZVwibWVzc2FnZV9zdG9wXCI6e3RoaXMuX2FkZE1lc3NhZ2VQYXJhbShKKSx0aGlzLl9hZGRNZXNzYWdlKFFVKEosWih0aGlzLEQ4LFwiZlwiKSx7bG9nZ2VyOloodGhpcyxTNyxcImZcIil9KSwhMCk7YnJlYWt9Y2FzZVwiY29udGVudF9ibG9ja19zdG9wXCI6e3RoaXMuX2VtaXQoXCJjb250ZW50QmxvY2tcIixKLmNvbnRlbnQuYXQoLTEpKTticmVha31jYXNlXCJtZXNzYWdlX3N0YXJ0XCI6e2YodGhpcyxEMSxKLFwiZlwiKTticmVha31jYXNlXCJjb250ZW50X2Jsb2NrX3N0YXJ0XCI6Y2FzZVwibWVzc2FnZV9kZWx0YVwiOmJyZWFrfX0sVVU9ZnVuY3Rpb24oKXtpZih0aGlzLmVuZGVkKXRocm93IG5ldyBnKFwic3RyZWFtIGhhcyBlbmRlZCwgdGhpcyBzaG91bGRuJ3QgaGFwcGVuXCIpO2xldCBRPVoodGhpcyxEMSxcImZcIik7aWYoIVEpdGhyb3cgbmV3IGcoXCJyZXF1ZXN0IGVuZGVkIHdpdGhvdXQgc2VuZGluZyBhbnkgY2h1bmtzXCIpO3JldHVybiBmKHRoaXMsRDEsdm9pZCAwLFwiZlwiKSxRVShRLFoodGhpcyxEOCxcImZcIikse2xvZ2dlcjpaKHRoaXMsUzcsXCJmXCIpfSl9LFN3PWZ1bmN0aW9uKFEpe2xldCBKPVoodGhpcyxEMSxcImZcIik7aWYoUS50eXBlPT09XCJtZXNzYWdlX3N0YXJ0XCIpe2lmKEopdGhyb3cgbmV3IGcoYFVuZXhwZWN0ZWQgZXZlbnQgb3JkZXIsIGdvdCAke1EudHlwZX0gYmVmb3JlIHJlY2VpdmluZyBcIm1lc3NhZ2Vfc3RvcFwiYCk7cmV0dXJuIFEubWVzc2FnZX1pZighSil0aHJvdyBuZXcgZyhgVW5leHBlY3RlZCBldmVudCBvcmRlciwgZ290ICR7US50eXBlfSBiZWZvcmUgXCJtZXNzYWdlX3N0YXJ0XCJgKTtzd2l0Y2goUS50eXBlKXtjYXNlXCJtZXNzYWdlX3N0b3BcIjpyZXR1cm4gSjtjYXNlXCJtZXNzYWdlX2RlbHRhXCI6aWYoSi5zdG9wX3JlYXNvbj1RLmRlbHRhLnN0b3BfcmVhc29uLEouc3RvcF9zZXF1ZW5jZT1RLmRlbHRhLnN0b3Bfc2VxdWVuY2UsSi51c2FnZS5vdXRwdXRfdG9rZW5zPVEudXNhZ2Uub3V0cHV0X3Rva2VucyxRLnVzYWdlLmlucHV0X3Rva2VucyE9bnVsbClKLnVzYWdlLmlucHV0X3Rva2Vucz1RLnVzYWdlLmlucHV0X3Rva2VucztpZihRLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucyE9bnVsbClKLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vucz1RLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucztpZihRLnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zIT1udWxsKUoudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM9US51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucztpZihRLnVzYWdlLnNlcnZlcl90b29sX3VzZSE9bnVsbClKLnVzYWdlLnNlcnZlcl90b29sX3VzZT1RLnVzYWdlLnNlcnZlcl90b29sX3VzZTtyZXR1cm4gSjtjYXNlXCJjb250ZW50X2Jsb2NrX3N0YXJ0XCI6cmV0dXJuIEouY29udGVudC5wdXNoKHsuLi5RLmNvbnRlbnRfYmxvY2t9KSxKO2Nhc2VcImNvbnRlbnRfYmxvY2tfZGVsdGFcIjp7bGV0IFk9Si5jb250ZW50LmF0KFEuaW5kZXgpO3N3aXRjaChRLmRlbHRhLnR5cGUpe2Nhc2VcInRleHRfZGVsdGFcIjp7aWYoWT8udHlwZT09PVwidGV4dFwiKUouY29udGVudFtRLmluZGV4XT17Li4uWSx0ZXh0OihZLnRleHR8fFwiXCIpK1EuZGVsdGEudGV4dH07YnJlYWt9Y2FzZVwiY2l0YXRpb25zX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRleHRcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksY2l0YXRpb25zOlsuLi5ZLmNpdGF0aW9ucz8/W10sUS5kZWx0YS5jaXRhdGlvbl19O2JyZWFrfWNhc2VcImlucHV0X2pzb25fZGVsdGFcIjp7aWYoWSYmdncoWSkpe2xldCBYPVlba3ddfHxcIlwiO1grPVEuZGVsdGEucGFydGlhbF9qc29uO2xldCBXPXsuLi5ZfTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkoVyxrdyx7dmFsdWU6WCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwfSksWClXLmlucHV0PWZYKFgpO0ouY29udGVudFtRLmluZGV4XT1XfWJyZWFrfWNhc2VcInRoaW5raW5nX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRoaW5raW5nXCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLHRoaW5raW5nOlkudGhpbmtpbmcrUS5kZWx0YS50aGlua2luZ307YnJlYWt9Y2FzZVwic2lnbmF0dXJlX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRoaW5raW5nXCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLHNpZ25hdHVyZTpRLmRlbHRhLnNpZ25hdHVyZX07YnJlYWt9ZGVmYXVsdDpDdyhRLmRlbHRhKX1yZXR1cm4gSn1jYXNlXCJjb250ZW50X2Jsb2NrX3N0b3BcIjpyZXR1cm4gSn19LFN5bWJvbC5hc3luY0l0ZXJhdG9yKV0oKXtsZXQgJD1bXSxRPVtdLEo9ITE7cmV0dXJuIHRoaXMub24oXCJzdHJlYW1FdmVudFwiLChZKT0+e2xldCBYPVEuc2hpZnQoKTtpZihYKVgucmVzb2x2ZShZKTtlbHNlICQucHVzaChZKX0pLHRoaXMub24oXCJlbmRcIiwoKT0+e0o9ITA7Zm9yKGxldCBZIG9mIFEpWS5yZXNvbHZlKHZvaWQgMCk7US5sZW5ndGg9MH0pLHRoaXMub24oXCJhYm9ydFwiLChZKT0+e0o9ITA7Zm9yKGxldCBYIG9mIFEpWC5yZWplY3QoWSk7US5sZW5ndGg9MH0pLHRoaXMub24oXCJlcnJvclwiLChZKT0+e0o9ITA7Zm9yKGxldCBYIG9mIFEpWC5yZWplY3QoWSk7US5sZW5ndGg9MH0pLHtuZXh0OmFzeW5jKCk9PntpZighJC5sZW5ndGgpe2lmKEopcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtyZXR1cm4gbmV3IFByb21pc2UoKFgsVyk9PlEucHVzaCh7cmVzb2x2ZTpYLHJlamVjdDpXfSkpLnRoZW4oKFgpPT5YP3t2YWx1ZTpYLGRvbmU6ITF9Ont2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfXJldHVybnt2YWx1ZTokLnNoaWZ0KCksZG9uZTohMX19LHJldHVybjphc3luYygpPT57cmV0dXJuIHRoaXMuYWJvcnQoKSx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX19dG9SZWFkYWJsZVN0cmVhbSgpe3JldHVybiBuZXcgQzYodGhpc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0uYmluZCh0aGlzKSx0aGlzLmNvbnRyb2xsZXIpLnRvUmVhZGFibGVTdHJlYW0oKX19ZnVuY3Rpb24gQ3coJCl7fWNsYXNzIHY3IGV4dGVuZHMgdHtjcmVhdGUoJCxRKXtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVzc2FnZXMvYmF0Y2hlc1wiLHtib2R5OiQsLi4uUX0pfXJldHJpZXZlKCQsUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvbWVzc2FnZXMvYmF0Y2hlcy8keyR9YCxRKX1saXN0KCQ9e30sUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL21lc3NhZ2VzL2JhdGNoZXNcIixHNCx7cXVlcnk6JCwuLi5RfSl9ZGVsZXRlKCQsUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvbWVzc2FnZXMvYmF0Y2hlcy8keyR9YCxRKX1jYW5jZWwoJCxRKXtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvbWVzc2FnZXMvYmF0Y2hlcy8keyR9L2NhbmNlbGAsUSl9YXN5bmMgcmVzdWx0cygkLFEpe2xldCBKPWF3YWl0IHRoaXMucmV0cmlldmUoJCk7aWYoIUoucmVzdWx0c191cmwpdGhyb3cgbmV3IGcoYE5vIGJhdGNoIFxcYHJlc3VsdHNfdXJsXFxgOyBIYXMgaXQgZmluaXNoZWQgcHJvY2Vzc2luZz8gJHtKLnByb2Nlc3Npbmdfc3RhdHVzfSAtICR7Si5pZH1gKTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChKLnJlc3VsdHNfdXJsLHsuLi5RLGhlYWRlcnM6Uihbe0FjY2VwdDpcImFwcGxpY2F0aW9uL2JpbmFyeVwifSxRPy5oZWFkZXJzXSksc3RyZWFtOiEwLF9fYmluYXJ5UmVzcG9uc2U6ITB9KS5fdGhlblVud3JhcCgoWSxYKT0+SzguZnJvbVJlc3BvbnNlKFgucmVzcG9uc2UsWC5jb250cm9sbGVyKSl9fWNsYXNzIEswIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5iYXRjaGVzPW5ldyB2Nyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2lmKCQubW9kZWwgaW4gVHcpY29uc29sZS53YXJuKGBUaGUgbW9kZWwgJyR7JC5tb2RlbH0nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmVhY2ggZW5kLW9mLWxpZmUgb24gJHtUd1skLm1vZGVsXX1cblBsZWFzZSBtaWdyYXRlIHRvIGEgbmV3ZXIgbW9kZWwuIFZpc2l0IGh0dHBzOi8vZG9jcy5hbnRocm9waWMuY29tL2VuL2RvY3MvcmVzb3VyY2VzL21vZGVsLWRlcHJlY2F0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gKTtpZihidi5pbmNsdWRlcygkLm1vZGVsKSYmJC50aGlua2luZyYmJC50aGlua2luZy50eXBlPT09XCJlbmFibGVkXCIpY29uc29sZS53YXJuKGBVc2luZyBDbGF1ZGUgd2l0aCAkeyQubW9kZWx9IGFuZCAndGhpbmtpbmcudHlwZT1lbmFibGVkJyBpcyBkZXByZWNhdGVkLiBVc2UgJ3RoaW5raW5nLnR5cGU9YWRhcHRpdmUnIGluc3RlYWQgd2hpY2ggcmVzdWx0cyBpbiBiZXR0ZXIgbW9kZWwgcGVyZm9ybWFuY2UgaW4gb3VyIHRlc3Rpbmc6IGh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9kb2NzL2VuL2J1aWxkLXdpdGgtY2xhdWRlL2FkYXB0aXZlLXRoaW5raW5nYCk7bGV0IEo9dGhpcy5fY2xpZW50Ll9vcHRpb25zLnRpbWVvdXQ7aWYoISQuc3RyZWFtJiZKPT1udWxsKXtsZXQgWD14WFskLm1vZGVsXT8/dm9pZCAwO0o9dGhpcy5fY2xpZW50LmNhbGN1bGF0ZU5vbnN0cmVhbWluZ1RpbWVvdXQoJC5tYXhfdG9rZW5zLFgpfWxldCBZPVRYKCQudG9vbHMsJC5tZXNzYWdlcyk7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzXCIse2JvZHk6JCx0aW1lb3V0Oko/PzYwMDAwMCwuLi5RLGhlYWRlcnM6UihbWSxRPy5oZWFkZXJzXSksc3RyZWFtOiQuc3RyZWFtPz8hMX0pfXBhcnNlKCQsUSl7cmV0dXJuIHRoaXMuY3JlYXRlKCQsUSkudGhlbigoSik9PkpVKEosJCx7bG9nZ2VyOnRoaXMuX2NsaWVudC5sb2dnZXI/P2NvbnNvbGV9KSl9c3RyZWFtKCQsUSl7cmV0dXJuIGs3LmNyZWF0ZU1lc3NhZ2UodGhpcywkLFEse2xvZ2dlcjp0aGlzLl9jbGllbnQubG9nZ2VyPz9jb25zb2xlfSl9Y291bnRUb2tlbnMoJCxRKXtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvbWVzc2FnZXMvY291bnRfdG9rZW5zXCIse2JvZHk6JCwuLi5RfSl9fXZhciBUdz17XCJjbGF1ZGUtMS4zXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS0xLjMtMTAwa1wiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtaW5zdGFudC0xLjFcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLWluc3RhbnQtMS4xLTEwMGtcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLWluc3RhbnQtMS4yXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS0zLXNvbm5ldC0yMDI0MDIyOVwiOlwiSnVseSAyMXN0LCAyMDI1XCIsXCJjbGF1ZGUtMy1vcHVzLTIwMjQwMjI5XCI6XCJKYW51YXJ5IDV0aCwgMjAyNlwiLFwiY2xhdWRlLTIuMVwiOlwiSnVseSAyMXN0LCAyMDI1XCIsXCJjbGF1ZGUtMi4wXCI6XCJKdWx5IDIxc3QsIDIwMjVcIixcImNsYXVkZS0zLTctc29ubmV0LWxhdGVzdFwiOlwiRmVicnVhcnkgMTl0aCwgMjAyNlwiLFwiY2xhdWRlLTMtNy1zb25uZXQtMjAyNTAyMTlcIjpcIkZlYnJ1YXJ5IDE5dGgsIDIwMjZcIixcImNsYXVkZS0zLTUtaGFpa3UtbGF0ZXN0XCI6XCJGZWJydWFyeSAxOXRoLCAyMDI2XCIsXCJjbGF1ZGUtMy01LWhhaWt1LTIwMjQxMDIyXCI6XCJGZWJydWFyeSAxOXRoLCAyMDI2XCIsXCJjbGF1ZGUtb3B1cy00LTBcIjpcIkp1bmUgMTV0aCwgMjAyNlwiLFwiY2xhdWRlLW9wdXMtNC0yMDI1MDUxNFwiOlwiSnVuZSAxNXRoLCAyMDI2XCIsXCJjbGF1ZGUtc29ubmV0LTQtMFwiOlwiSnVuZSAxNXRoLCAyMDI2XCIsXCJjbGF1ZGUtc29ubmV0LTQtMjAyNTA1MTRcIjpcIkp1bmUgMTV0aCwgMjAyNlwifSxidj1bXCJjbGF1ZGUtbXl0aG9zLXByZXZpZXdcIixcImNsYXVkZS1vcHVzLTQtNlwiXTtLMC5CYXRjaGVzPXY3O2NsYXNzIEY4IGV4dGVuZHMgdHtyZXRyaWV2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL21vZGVscy8keyR9YCx7Li4uSixoZWFkZXJzOlIoW3suLi5ZPy50b1N0cmluZygpIT1udWxsP3tcImFudGhyb3BpYy1iZXRhXCI6WT8udG9TdHJpbmcoKX06dm9pZCAwfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL21vZGVsc1wiLEc0LHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7Li4uSj8udG9TdHJpbmcoKSE9bnVsbD97XCJhbnRocm9waWMtYmV0YVwiOko/LnRvU3RyaW5nKCl9OnZvaWQgMH0sUT8uaGVhZGVyc10pfSl9fXZhciBIVSxLVSx0WCx4dyxmdz1cIlxcXFxuXFxcXG5IdW1hbjpcIix5dz1cIlxcXFxuXFxcXG5Bc3Npc3RhbnQ6XCI7Y2xhc3MgeSR7Z2V0IGNyZWRlbnRpYWxzKCl7cmV0dXJuIHRoaXMuX2F1dGhTdGF0ZS5wcm92aWRlcn1jb25zdHJ1Y3Rvcih7YmFzZVVSTDokPXckKFwiQU5USFJPUElDX0JBU0VfVVJMXCIpLGFwaUtleTpRLGF1dGhUb2tlbjpKLC4uLll9PXt9KXtpZihIVS5hZGQodGhpcyksdGhpcy5fcmVxdWVzdEF1dGhGbGFncz1uZXcgV2Vha01hcCx0WC5zZXQodGhpcyx2b2lkIDApLFE9PT12b2lkIDApUT1ZLnByb2ZpbGUhPW51bGw/bnVsbDp3JChcIkFOVEhST1BJQ19BUElfS0VZXCIpPz9udWxsO2lmKEo9PT12b2lkIDApSj1ZLnByb2ZpbGUhPW51bGw/bnVsbDp3JChcIkFOVEhST1BJQ19BVVRIX1RPS0VOXCIpPz9udWxsO2lmKFkucHJvZmlsZSE9bnVsbCYmKFkuY3JlZGVudGlhbHMhPW51bGx8fFkuY29uZmlnIT1udWxsKSl0aHJvdyBUeXBlRXJyb3IoXCJQYXNzIGF0IG1vc3Qgb25lIG9mIGBwcm9maWxlYCwgYGNyZWRlbnRpYWxzYCwgb3IgYGNvbmZpZ2AuXCIpO2xldCBYPXthcGlLZXk6USxhdXRoVG9rZW46SiwuLi5ZLGJhc2VVUkw6JHx8XCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCJ9O2lmKCFYLmRhbmdlcm91c2x5QWxsb3dCcm93c2VyJiZoTigpKXRocm93IG5ldyBnKGBJdCBsb29rcyBsaWtlIHlvdSdyZSBydW5uaW5nIGluIGEgYnJvd3Nlci1saWtlIGVudmlyb25tZW50LlxuXG5UaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFzIGl0IHJpc2tzIGV4cG9zaW5nIHlvdXIgc2VjcmV0IEFQSSBjcmVkZW50aWFscyB0byBhdHRhY2tlcnMuXG5JZiB5b3UgdW5kZXJzdGFuZCB0aGUgcmlza3MgYW5kIGhhdmUgYXBwcm9wcmlhdGUgbWl0aWdhdGlvbnMgaW4gcGxhY2UsXG55b3UgY2FuIHNldCB0aGUgXFxgZGFuZ2Vyb3VzbHlBbGxvd0Jyb3dzZXJcXGAgb3B0aW9uIHRvIFxcYHRydWVcXGAsIGUuZy4sXG5cbm5ldyBBbnRocm9waWMoeyBhcGlLZXksIGRhbmdlcm91c2x5QWxsb3dCcm93c2VyOiB0cnVlIH0pO1xuYCk7dGhpcy5iYXNlVVJMPVguYmFzZVVSTCx0aGlzLl9iYXNlVVJMSXNFeHBsaWNpdD1ZLl9fYmFzZVVSTElzRXhwbGljaXQ/PyEhJCx0aGlzLnRpbWVvdXQ9WC50aW1lb3V0Pz9LVS5ERUZBVUxUX1RJTUVPVVQsdGhpcy5sb2dnZXI9WC5sb2dnZXI/P2NvbnNvbGU7bGV0IFc9XCJ3YXJuXCI7dGhpcy5sb2dMZXZlbD1XLHRoaXMubG9nTGV2ZWw9eUcoWC5sb2dMZXZlbCxcIkNsaWVudE9wdGlvbnMubG9nTGV2ZWxcIix0aGlzKT8/eUcodyQoXCJBTlRIUk9QSUNfTE9HXCIpLFwicHJvY2Vzcy5lbnZbJ0FOVEhST1BJQ19MT0cnXVwiLHRoaXMpPz9XLHRoaXMuZmV0Y2hPcHRpb25zPVguZmV0Y2hPcHRpb25zLHRoaXMubWF4UmV0cmllcz1YLm1heFJldHJpZXM/PzIsdGhpcy5mZXRjaD1YLmZldGNoPz91TigpLGYodGhpcyx0WCxsTixcImZcIik7bGV0IEc9dyQoXCJBTlRIUk9QSUNfQ1VTVE9NX0hFQURFUlNcIik7aWYoRyl7bGV0IEg9e307Zm9yKGxldCBxIG9mIEcuc3BsaXQoYFxuYCkpe2xldCBWPXEuaW5kZXhPZihcIjpcIik7aWYoVj49MClIW3Euc3Vic3RyaW5nKDAsVikudHJpbSgpXT1xLnN1YnN0cmluZyhWKzEpLnRyaW0oKX1YLmRlZmF1bHRIZWFkZXJzPXsuLi5ILC4uLlguZGVmYXVsdEhlYWRlcnN9fWxldCBVPVkuX19hdXRoO2lmKGRlbGV0ZSBYLl9fYXV0aCxkZWxldGUgWC5fX2Jhc2VVUkxJc0V4cGxpY2l0LHRoaXMuX29wdGlvbnM9WCx0aGlzLmFwaUtleT10eXBlb2YgUT09PVwic3RyaW5nXCI/UTpudWxsLHRoaXMuYXV0aFRva2VuPUosVSl7aWYodGhpcy5fYXV0aFN0YXRlPVUsIXRoaXMuX2Jhc2VVUkxJc0V4cGxpY2l0JiZVLmJhc2VVUkwpdGhpcy5iYXNlVVJMPVUuYmFzZVVSTH1lbHNlIGlmKHRoaXMuX2F1dGhTdGF0ZT17cHJvdmlkZXI6bnVsbCx0b2tlbkNhY2hlOm51bGwscmVzb2x1dGlvbjpudWxsLGVycm9yOm51bGwsZXh0cmFIZWFkZXJzOnt9fSx0aGlzLmFwaUtleT09bnVsbCYmdGhpcy5hdXRoVG9rZW49PW51bGwpe2xldCBIPVguY3JlZGVudGlhbHM/P251bGw7aWYoSCl0aGlzLl9hdXRoU3RhdGUucHJvdmlkZXI9SCx0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZT10aGlzLl9tYWtlVG9rZW5DYWNoZShIKTtlbHNlIGlmKFguY29uZmlnIT1udWxsKXtsZXQgcT11RyhYLmNvbmZpZyx0aGlzLl9jcmVkZW50aWFsUmVzb2x2ZXJPcHRpb25zKCkpO3RoaXMuX2F1dGhTdGF0ZS5wcm92aWRlcj1xLnByb3ZpZGVyLHRoaXMuX2F1dGhTdGF0ZS50b2tlbkNhY2hlPXRoaXMuX21ha2VUb2tlbkNhY2hlKHEucHJvdmlkZXIpLHRoaXMuX2F1dGhTdGF0ZS5leHRyYUhlYWRlcnM9cS5leHRyYUhlYWRlcnMsdGhpcy5fYXBwbHlDcmVkZW50aWFsQmFzZVVSTChxLmJhc2VVUkwpfWVsc2UgaWYoWC5wcm9maWxlIT1udWxsKXRoaXMuX2F1dGhTdGF0ZS5yZXNvbHV0aW9uPXRoaXMuX3Jlc29sdmVEZWZhdWx0Q3JlZGVudGlhbHMoWC5wcm9maWxlKTtlbHNlIHRoaXMuX2F1dGhTdGF0ZS5yZXNvbHV0aW9uPXRoaXMuX3Jlc29sdmVEZWZhdWx0Q3JlZGVudGlhbHMoKX19X2FwcGx5Q3JlZGVudGlhbEJhc2VVUkwoJCl7aWYoISQpcmV0dXJuO2xldCBRPSQucmVwbGFjZSgvXFwvKyQvLFwiXCIpO2lmKHRoaXMuX2F1dGhTdGF0ZS5iYXNlVVJMPVEsIXRoaXMuX2Jhc2VVUkxJc0V4cGxpY2l0KXRoaXMuYmFzZVVSTD1RfV9jcmVkZW50aWFsUmVzb2x2ZXJPcHRpb25zKCl7cmV0dXJue2Jhc2VVUkw6dGhpcy5iYXNlVVJMLGZldGNoOnRoaXMuZmV0Y2gsdXNlckFnZW50OnRoaXMuZ2V0VXNlckFnZW50KCksb25DYWNoZVdyaXRlRXJyb3I6KCQpPT57dSQodGhpcykuZGVidWcoXCJjcmVkZW50aWFsIGNhY2hlIHdyaXRlIGZhaWxlZCAoYmVzdC1lZmZvcnQpXCIsJCl9LG9uU2FmZXR5V2FybmluZzooJCk9Pnt1JCh0aGlzKS53YXJuKCQpfX19X21ha2VUb2tlbkNhY2hlKCQpe3JldHVybiBuZXcgeEcoJCwoUSk9Pnt1JCh0aGlzKS5kZWJ1ZyhcImFkdmlzb3J5IHRva2VuIHJlZnJlc2ggZmFpbGVkOyBzZXJ2aW5nIGNhY2hlZCB0b2tlblwiLFEpfSl9d2l0aE9wdGlvbnMoJCl7bGV0IFE9XCJjcmVkZW50aWFsc1wiaW4gJHx8XCJjb25maWdcImluICR8fFwicHJvZmlsZVwiaW4gJCxKPVwiYXBpS2V5XCJpbiAkfHxcImF1dGhUb2tlblwiaW4gJHx8USxZPXsuLi50aGlzLl9vcHRpb25zLC4uLnRoaXMuX2Jhc2VVUkxJc0V4cGxpY2l0P3tiYXNlVVJMOnRoaXMuYmFzZVVSTH06e30sbWF4UmV0cmllczp0aGlzLm1heFJldHJpZXMsdGltZW91dDp0aGlzLnRpbWVvdXQsbG9nZ2VyOnRoaXMubG9nZ2VyLGxvZ0xldmVsOnRoaXMubG9nTGV2ZWwsZmV0Y2g6dGhpcy5mZXRjaCxmZXRjaE9wdGlvbnM6dGhpcy5mZXRjaE9wdGlvbnMsYXBpS2V5OnRoaXMuYXBpS2V5LGF1dGhUb2tlbjp0aGlzLmF1dGhUb2tlbixjcmVkZW50aWFsczp0aGlzLmNyZWRlbnRpYWxzLC4uLlE/e2NyZWRlbnRpYWxzOnZvaWQgMCxjb25maWc6dm9pZCAwLHByb2ZpbGU6dm9pZCAwfTp7fSwuLi4kLF9fYXV0aDpKP3ZvaWQgMDp0aGlzLl9hdXRoU3RhdGUsX19iYXNlVVJMSXNFeHBsaWNpdDpcImJhc2VVUkxcImluICQ/ITA6dGhpcy5fYmFzZVVSTElzRXhwbGljaXR9O3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcihZKX1hc3luYyBfcmVzb2x2ZURlZmF1bHRDcmVkZW50aWFscygkKXt0cnl7bGV0IFE9YXdhaXQgVXcodGhpcy5fY3JlZGVudGlhbFJlc29sdmVyT3B0aW9ucygpLCQpO2lmKFEpdGhpcy5fYXV0aFN0YXRlLnByb3ZpZGVyPVEucHJvdmlkZXIsdGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGU9dGhpcy5fbWFrZVRva2VuQ2FjaGUoUS5wcm92aWRlciksdGhpcy5fYXV0aFN0YXRlLmV4dHJhSGVhZGVycz1RLmV4dHJhSGVhZGVycyx0aGlzLl9hcHBseUNyZWRlbnRpYWxCYXNlVVJMKFEuYmFzZVVSTCk7ZWxzZSBpZigkIT1udWxsKXRocm93IG5ldyBnKGBQcm9maWxlIFwiJHskfVwiIGNvdWxkIG5vdCBiZSByZXNvbHZlZCAobm8gPGNvbmZpZ19kaXI+L2NvbmZpZ3MvJHskfS5qc29uIGZvdW5kKS5gKX1jYXRjaChRKXt0aGlzLl9hdXRoU3RhdGUuZXJyb3I9UX1maW5hbGx5e3RoaXMuX2F1dGhTdGF0ZS5yZXNvbHV0aW9uPW51bGx9fWRlZmF1bHRRdWVyeSgpe3JldHVybiB0aGlzLl9vcHRpb25zLmRlZmF1bHRRdWVyeX12YWxpZGF0ZUhlYWRlcnMoe3ZhbHVlczokLG51bGxzOlF9KXtpZigkLmdldChcIngtYXBpLWtleVwiKXx8JC5nZXQoXCJhdXRob3JpemF0aW9uXCIpKXJldHVybjtpZih0aGlzLl9hdXRoU3RhdGUuZXJyb3IpdGhyb3cgdGhpcy5fYXV0aFN0YXRlLmVycm9yO2lmKHRoaXMuX2F1dGhTdGF0ZS50b2tlbkNhY2hlfHx0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbilyZXR1cm47aWYodGhpcy5hcGlLZXkmJiQuZ2V0KFwieC1hcGkta2V5XCIpKXJldHVybjtpZihRLmhhcyhcIngtYXBpLWtleVwiKSlyZXR1cm47aWYodGhpcy5hdXRoVG9rZW4mJiQuZ2V0KFwiYXV0aG9yaXphdGlvblwiKSlyZXR1cm47aWYoUS5oYXMoXCJhdXRob3JpemF0aW9uXCIpKXJldHVybjt0aHJvdyBFcnJvcignQ291bGQgbm90IHJlc29sdmUgYXV0aGVudGljYXRpb24gbWV0aG9kLiBFeHBlY3RlZCBvbmUgb2YgYXBpS2V5LCBhdXRoVG9rZW4sIGNyZWRlbnRpYWxzLCBjb25maWcsIG9yIHByb2ZpbGUgdG8gYmUgc2V0LiBPciBmb3Igb25lIG9mIHRoZSBcIlgtQXBpLUtleVwiIG9yIFwiQXV0aG9yaXphdGlvblwiIGhlYWRlcnMgdG8gYmUgZXhwbGljaXRseSBvbWl0dGVkJyl9X2F1dGhGbGFncygkKXtsZXQgUT10aGlzLl9yZXF1ZXN0QXV0aEZsYWdzLmdldCgkKTtpZighUSlRPXt1c2VkVG9rZW5DYWNoZTohMSxkaWRSZWZyZXNoRm9yNDAxOiExfSx0aGlzLl9yZXF1ZXN0QXV0aEZsYWdzLnNldCgkLFEpO3JldHVybiBRfWFzeW5jIGF1dGhIZWFkZXJzKCQpe2lmKHRoaXMuX2F1dGhTdGF0ZS5yZXNvbHV0aW9uKWF3YWl0IHRoaXMuX2F1dGhTdGF0ZS5yZXNvbHV0aW9uO2lmKHRoaXMuX2F1dGhTdGF0ZS5lcnJvcilyZXR1cm47aWYodGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGUmJnRoaXMuYXBpS2V5PT1udWxsKXtsZXQgUT1hd2FpdCB0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZS5nZXRUb2tlbigpO3JldHVybiB0aGlzLl9hdXRoRmxhZ3MoJCkudXNlZFRva2VuQ2FjaGU9ITAsUihbe0F1dGhvcml6YXRpb246YEJlYXJlciAke1F9YH1dKX1yZXR1cm4gUihbYXdhaXQgdGhpcy5hcGlLZXlBdXRoKCQpLGF3YWl0IHRoaXMuYmVhcmVyQXV0aCgkKV0pfWFzeW5jIGFwaUtleUF1dGgoJCl7aWYodGhpcy5hcGlLZXk9PW51bGwpcmV0dXJuO3JldHVybiBSKFt7XCJYLUFwaS1LZXlcIjp0aGlzLmFwaUtleX1dKX1hc3luYyBiZWFyZXJBdXRoKCQpe2lmKHRoaXMuYXV0aFRva2VuPT1udWxsKXJldHVybjtyZXR1cm4gUihbe0F1dGhvcml6YXRpb246YEJlYXJlciAke3RoaXMuYXV0aFRva2VufWB9XSl9c3RyaW5naWZ5UXVlcnkoJCl7cmV0dXJuIGNOKCQpfWdldFVzZXJBZ2VudCgpe3JldHVybmAke3RoaXMuY29uc3RydWN0b3IubmFtZX0vSlMgJHtkNn1gfWRlZmF1bHRJZGVtcG90ZW5jeUtleSgpe3JldHVybmBzdGFpbmxlc3Mtbm9kZS1yZXRyeS0ke19HKCl9YH1tYWtlU3RhdHVzRXJyb3IoJCxRLEosWSl7cmV0dXJuIG4kLmdlbmVyYXRlKCQsUSxKLFkpfWJ1aWxkVVJMKCQsUSxKKXtsZXQgWT0hWih0aGlzLEhVLFwibVwiLHh3KS5jYWxsKHRoaXMpJiZKfHx0aGlzLmJhc2VVUkwsWD12TigkKT9uZXcgVVJMKCQpOm5ldyBVUkwoWSsoWS5lbmRzV2l0aChcIi9cIikmJiQuc3RhcnRzV2l0aChcIi9cIik/JC5zbGljZSgxKTokKSksVz10aGlzLmRlZmF1bHRRdWVyeSgpLEc9T2JqZWN0LmZyb21FbnRyaWVzKFguc2VhcmNoUGFyYW1zKTtpZighdkcoVyl8fCF2RyhHKSlRPXsuLi5HLC4uLlcsLi4uUX07aWYodHlwZW9mIFE9PT1cIm9iamVjdFwiJiZRJiYhQXJyYXkuaXNBcnJheShRKSlYLnNlYXJjaD10aGlzLnN0cmluZ2lmeVF1ZXJ5KFEpO3JldHVybiBYLnRvU3RyaW5nKCl9X2NhbGN1bGF0ZU5vbnN0cmVhbWluZ1RpbWVvdXQoJCl7aWYoMzYwMCokLzEyODAwMD42MDApdGhyb3cgbmV3IGcoXCJTdHJlYW1pbmcgaXMgcmVxdWlyZWQgZm9yIG9wZXJhdGlvbnMgdGhhdCBtYXkgdGFrZSBsb25nZXIgdGhhbiAxMCBtaW51dGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudGhyb3BpY3MvYW50aHJvcGljLXNkay10eXBlc2NyaXB0I3N0cmVhbWluZy1yZXNwb25zZXMgZm9yIG1vcmUgZGV0YWlsc1wiKTtyZXR1cm4gNjAwMDAwfWFzeW5jIHByZXBhcmVPcHRpb25zKCQpe31hc3luYyBwcmVwYXJlUmVxdWVzdCgkLHt1cmw6USxvcHRpb25zOkp9KXtpZih0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZSYmdGhpcy5hcGlLZXk9PW51bGwpe2xldCBZPSQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnM/JC5oZWFkZXJzOm5ldyBIZWFkZXJzKCQuaGVhZGVycyk7Zm9yKGxldFtXLEddb2YgT2JqZWN0LmVudHJpZXModGhpcy5fYXV0aFN0YXRlLmV4dHJhSGVhZGVycykpaWYoIVkuaGFzKFcpKVkuc2V0KFcsRyk7aWYoIVkuZ2V0KFwiYW50aHJvcGljLWJldGFcIik/LnNwbGl0KFwiLFwiKS5tYXAoKFcpPT5XLnRyaW0oKSk/LmluY2x1ZGVzKFEwKSlZLmFwcGVuZChcImFudGhyb3BpYy1iZXRhXCIsUTApOyQuaGVhZGVycz1ZfX1nZXQoJCxRKXtyZXR1cm4gdGhpcy5tZXRob2RSZXF1ZXN0KFwiZ2V0XCIsJCxRKX1wb3N0KCQsUSl7cmV0dXJuIHRoaXMubWV0aG9kUmVxdWVzdChcInBvc3RcIiwkLFEpfXBhdGNoKCQsUSl7cmV0dXJuIHRoaXMubWV0aG9kUmVxdWVzdChcInBhdGNoXCIsJCxRKX1wdXQoJCxRKXtyZXR1cm4gdGhpcy5tZXRob2RSZXF1ZXN0KFwicHV0XCIsJCxRKX1kZWxldGUoJCxRKXtyZXR1cm4gdGhpcy5tZXRob2RSZXF1ZXN0KFwiZGVsZXRlXCIsJCxRKX1tZXRob2RSZXF1ZXN0KCQsUSxKKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KFByb21pc2UucmVzb2x2ZShKKS50aGVuKChZKT0+e3JldHVybnttZXRob2Q6JCxwYXRoOlEsLi4uWX19KSl9cmVxdWVzdCgkLFE9bnVsbCl7cmV0dXJuIG5ldyBKMCh0aGlzLHRoaXMubWFrZVJlcXVlc3QoJCxRLHZvaWQgMCkpfWFzeW5jIG1ha2VSZXF1ZXN0KCQsUSxKKXtsZXQgWT1hd2FpdCAkLFg9WS5tYXhSZXRyaWVzPz90aGlzLm1heFJldHJpZXM7aWYoUT09bnVsbClRPVgsdGhpcy5fcmVxdWVzdEF1dGhGbGFncy5kZWxldGUoWSk7YXdhaXQgdGhpcy5wcmVwYXJlT3B0aW9ucyhZKTtsZXR7cmVxOlcsdXJsOkcsdGltZW91dDpVfT1hd2FpdCB0aGlzLmJ1aWxkUmVxdWVzdChZLHtyZXRyeUNvdW50OlgtUX0pO2F3YWl0IHRoaXMucHJlcGFyZVJlcXVlc3QoVyx7dXJsOkcsb3B0aW9uczpZfSk7bGV0IEg9XCJsb2dfXCIrKE1hdGgucmFuZG9tKCkqMTY3NzcyMTZ8MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDYsXCIwXCIpLHE9Sj09PXZvaWQgMD9cIlwiOmAsIHJldHJ5T2Y6ICR7Sn1gLFY9RGF0ZS5ub3coKTtpZih1JCh0aGlzKS5kZWJ1ZyhgWyR7SH1dIHNlbmRpbmcgcmVxdWVzdGAseTQoe3JldHJ5T2ZSZXF1ZXN0TG9nSUQ6SixtZXRob2Q6WS5tZXRob2QsdXJsOkcsb3B0aW9uczpZLGhlYWRlcnM6Vy5oZWFkZXJzfSkpLFkuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtsZXQgQj1uZXcgQWJvcnRDb250cm9sbGVyLHo9YXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KEcsVyxVLEIpLmNhdGNoKHU5KSxOPURhdGUubm93KCk7aWYoeiBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3Ipe2xldCBEPWByZXRyeWluZywgJHtRfSBhdHRlbXB0cyByZW1haW5pbmdgO2lmKFkuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtsZXQgTT1mNCh6KXx8L3RpbWVkPyA/b3V0L2kudGVzdChTdHJpbmcoeikrKFwiY2F1c2VcImluIHo/U3RyaW5nKHouY2F1c2UpOlwiXCIpKTtpZihRKXJldHVybiB1JCh0aGlzKS5pbmZvKGBbJHtIfV0gY29ubmVjdGlvbiAke00/XCJ0aW1lZCBvdXRcIjpcImZhaWxlZFwifSAtICR7RH1gKSx1JCh0aGlzKS5kZWJ1ZyhgWyR7SH1dIGNvbm5lY3Rpb24gJHtNP1widGltZWQgb3V0XCI6XCJmYWlsZWRcIn0gKCR7RH0pYCx5NCh7cmV0cnlPZlJlcXVlc3RMb2dJRDpKLHVybDpHLGR1cmF0aW9uTXM6Ti1WLG1lc3NhZ2U6ei5tZXNzYWdlfSkpLHRoaXMucmV0cnlSZXF1ZXN0KFksUSxKPz9IKTtpZih1JCh0aGlzKS5pbmZvKGBbJHtIfV0gY29ubmVjdGlvbiAke00/XCJ0aW1lZCBvdXRcIjpcImZhaWxlZFwifSAtIGVycm9yOyBubyBtb3JlIHJldHJpZXMgbGVmdGApLHUkKHRoaXMpLmRlYnVnKGBbJHtIfV0gY29ubmVjdGlvbiAke00/XCJ0aW1lZCBvdXRcIjpcImZhaWxlZFwifSAoZXJyb3I7IG5vIG1vcmUgcmV0cmllcyBsZWZ0KWAseTQoe3JldHJ5T2ZSZXF1ZXN0TG9nSUQ6Six1cmw6RyxkdXJhdGlvbk1zOk4tVixtZXNzYWdlOnoubWVzc2FnZX0pKSxNKXRocm93IG5ldyBtOTt0aHJvdyBuZXcgJDAoe2NhdXNlOnp9KX1sZXQgdz1bLi4uei5oZWFkZXJzLmVudHJpZXMoKV0uZmlsdGVyKChbRF0pPT5EPT09XCJyZXF1ZXN0LWlkXCIpLm1hcCgoW0QsTV0pPT5cIiwgXCIrRCtcIjogXCIrSlNPTi5zdHJpbmdpZnkoTSkpLmpvaW4oXCJcIiksTz1gWyR7SH0ke3F9JHt3fV0gJHtXLm1ldGhvZH0gJHtHfSAke3oub2s/XCJzdWNjZWVkZWRcIjpcImZhaWxlZFwifSB3aXRoIHN0YXR1cyAke3ouc3RhdHVzfSBpbiAke04tVn1tc2A7aWYoIXoub2spe2xldCBEPWF3YWl0IHRoaXMuc2hvdWxkUmV0cnkoeixZKTtpZihRJiZEKXtsZXQgRyQ9YHJldHJ5aW5nLCAke1F9IGF0dGVtcHRzIHJlbWFpbmluZ2A7cmV0dXJuIGF3YWl0IG1OKHouYm9keSksdSQodGhpcykuaW5mbyhgJHtPfSAtICR7RyR9YCksdSQodGhpcykuZGVidWcoYFske0h9XSByZXNwb25zZSBlcnJvciAoJHtHJH0pYCx5NCh7cmV0cnlPZlJlcXVlc3RMb2dJRDpKLHVybDp6LnVybCxzdGF0dXM6ei5zdGF0dXMsaGVhZGVyczp6LmhlYWRlcnMsZHVyYXRpb25NczpOLVZ9KSksdGhpcy5yZXRyeVJlcXVlc3QoWSxRLEo/P0gsei5oZWFkZXJzKX1sZXQgTT1EP1wiZXJyb3I7IG5vIG1vcmUgcmV0cmllcyBsZWZ0XCI6XCJlcnJvcjsgbm90IHJldHJ5YWJsZVwiO3UkKHRoaXMpLmluZm8oYCR7T30gLSAke019YCk7bGV0IGo9YXdhaXQgei50ZXh0KCkuY2F0Y2goKEckKT0+dTkoRyQpLm1lc3NhZ2UpLEE9Wlgoaiksaz1BP3ZvaWQgMDpqO3Rocm93IHUkKHRoaXMpLmRlYnVnKGBbJHtIfV0gcmVzcG9uc2UgZXJyb3IgKCR7TX0pYCx5NCh7cmV0cnlPZlJlcXVlc3RMb2dJRDpKLHVybDp6LnVybCxzdGF0dXM6ei5zdGF0dXMsaGVhZGVyczp6LmhlYWRlcnMsbWVzc2FnZTprLGR1cmF0aW9uTXM6RGF0ZS5ub3coKS1WfSkpLHRoaXMubWFrZVN0YXR1c0Vycm9yKHouc3RhdHVzLEEsayx6LmhlYWRlcnMpfXJldHVybiB1JCh0aGlzKS5pbmZvKE8pLHUkKHRoaXMpLmRlYnVnKGBbJHtIfV0gcmVzcG9uc2Ugc3RhcnRgLHk0KHtyZXRyeU9mUmVxdWVzdExvZ0lEOkosdXJsOnoudXJsLHN0YXR1czp6LnN0YXR1cyxoZWFkZXJzOnouaGVhZGVycyxkdXJhdGlvbk1zOk4tVn0pKSx7cmVzcG9uc2U6eixvcHRpb25zOlksY29udHJvbGxlcjpCLHJlcXVlc3RMb2dJRDpILHJldHJ5T2ZSZXF1ZXN0TG9nSUQ6SixzdGFydFRpbWU6Vn19Z2V0QVBJTGlzdCgkLFEsSil7cmV0dXJuIHRoaXMucmVxdWVzdEFQSUxpc3QoUSxKJiZcInRoZW5cImluIEo/Si50aGVuKChZKT0+KHttZXRob2Q6XCJnZXRcIixwYXRoOiQsLi4uWX0pKTp7bWV0aG9kOlwiZ2V0XCIscGF0aDokLC4uLkp9KX1yZXF1ZXN0QVBJTGlzdCgkLFEpe2xldCBKPXRoaXMubWFrZVJlcXVlc3QoUSxudWxsLHZvaWQgMCk7cmV0dXJuIG5ldyBrWCh0aGlzLEosJCl9YXN5bmMgZmV0Y2hXaXRoVGltZW91dCgkLFEsSixZKXtsZXR7c2lnbmFsOlgsbWV0aG9kOlcsLi4uR309UXx8e30sVT10aGlzLl9tYWtlQWJvcnQoWSk7aWYoWClYLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFUse29uY2U6ITB9KTtsZXQgSD1zZXRUaW1lb3V0KFUsSikscT1nbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtJiZHLmJvZHkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtfHx0eXBlb2YgRy5ib2R5PT09XCJvYmplY3RcIiYmRy5ib2R5IT09bnVsbCYmU3ltYm9sLmFzeW5jSXRlcmF0b3IgaW4gRy5ib2R5LFY9e3NpZ25hbDpZLnNpZ25hbCwuLi5xP3tkdXBsZXg6XCJoYWxmXCJ9Ont9LG1ldGhvZDpcIkdFVFwiLC4uLkd9O2lmKFcpVi5tZXRob2Q9Vy50b1VwcGVyQ2FzZSgpO3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5mZXRjaC5jYWxsKHZvaWQgMCwkLFYpfWZpbmFsbHl7Y2xlYXJUaW1lb3V0KEgpfX1hc3luYyBzaG91bGRSZXRyeSgkLFEpe2xldCBKPXRoaXMuX2F1dGhGbGFncyhRKTtpZigkLnN0YXR1cz09PTQwMSYmdGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGUmJkoudXNlZFRva2VuQ2FjaGUmJiFKLmRpZFJlZnJlc2hGb3I0MDEpcmV0dXJuIEouZGlkUmVmcmVzaEZvcjQwMT0hMCx0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZS5pbnZhbGlkYXRlKCksITA7bGV0IFk9JC5oZWFkZXJzLmdldChcIngtc2hvdWxkLXJldHJ5XCIpO2lmKFk9PT1cInRydWVcIilyZXR1cm4hMDtpZihZPT09XCJmYWxzZVwiKXJldHVybiExO2lmKCQuc3RhdHVzPT09NDA4KXJldHVybiEwO2lmKCQuc3RhdHVzPT09NDA5KXJldHVybiEwO2lmKCQuc3RhdHVzPT09NDI5KXJldHVybiEwO2lmKCQuc3RhdHVzPj01MDApcmV0dXJuITA7cmV0dXJuITF9YXN5bmMgcmV0cnlSZXF1ZXN0KCQsUSxKLFkpe2xldCBYLFc9WT8uZ2V0KFwicmV0cnktYWZ0ZXItbXNcIik7aWYoVyl7bGV0IFU9cGFyc2VGbG9hdChXKTtpZighTnVtYmVyLmlzTmFOKFUpKVg9VX1sZXQgRz1ZPy5nZXQoXCJyZXRyeS1hZnRlclwiKTtpZihHJiYhWCl7bGV0IFU9cGFyc2VGbG9hdChHKTtpZighTnVtYmVyLmlzTmFOKFUpKVg9VSoxMDAwO2Vsc2UgWD1EYXRlLnBhcnNlKEcpLURhdGUubm93KCl9aWYoWD09PXZvaWQgMCl7bGV0IFU9JC5tYXhSZXRyaWVzPz90aGlzLm1heFJldHJpZXM7WD10aGlzLmNhbGN1bGF0ZURlZmF1bHRSZXRyeVRpbWVvdXRNaWxsaXMoUSxVKX1yZXR1cm4gYXdhaXQgeE4oWCksdGhpcy5tYWtlUmVxdWVzdCgkLFEtMSxKKX1jYWxjdWxhdGVEZWZhdWx0UmV0cnlUaW1lb3V0TWlsbGlzKCQsUSl7bGV0IFg9US0kLFc9TWF0aC5taW4oMC41Kk1hdGgucG93KDIsWCksOCksRz0xLU1hdGgucmFuZG9tKCkqMC4yNTtyZXR1cm4gVypHKjEwMDB9Y2FsY3VsYXRlTm9uc3RyZWFtaW5nVGltZW91dCgkLFEpe2lmKDM2MDAwMDAqJC8xMjgwMDA+NjAwMDAwfHxRIT1udWxsJiYkPlEpdGhyb3cgbmV3IGcoXCJTdHJlYW1pbmcgaXMgcmVxdWlyZWQgZm9yIG9wZXJhdGlvbnMgdGhhdCBtYXkgdGFrZSBsb25nZXIgdGhhbiAxMCBtaW51dGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudGhyb3BpY3MvYW50aHJvcGljLXNkay10eXBlc2NyaXB0I2xvbmctcmVxdWVzdHMgZm9yIG1vcmUgZGV0YWlsc1wiKTtyZXR1cm4gNjAwMDAwfWFzeW5jIGJ1aWxkUmVxdWVzdCgkLHtyZXRyeUNvdW50OlE9MH09e30pe2xldCBKPXsuLi4kfSx7bWV0aG9kOlkscGF0aDpYLHF1ZXJ5OlcsZGVmYXVsdEJhc2VVUkw6R309SjtpZih0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbilhd2FpdCB0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbjtpZighdGhpcy5fYmFzZVVSTElzRXhwbGljaXQmJnRoaXMuX2F1dGhTdGF0ZS5iYXNlVVJMJiZ0aGlzLmJhc2VVUkwhPT10aGlzLl9hdXRoU3RhdGUuYmFzZVVSTCl0aGlzLmJhc2VVUkw9dGhpcy5fYXV0aFN0YXRlLmJhc2VVUkw7bGV0IFU9dGhpcy5idWlsZFVSTChYLFcsRyk7aWYoXCJ0aW1lb3V0XCJpbiBKKVROKFwidGltZW91dFwiLEoudGltZW91dCk7Si50aW1lb3V0PUoudGltZW91dD8/dGhpcy50aW1lb3V0O2xldHtib2R5SGVhZGVyczpILGJvZHk6cX09dGhpcy5idWlsZEJvZHkoe29wdGlvbnM6Sn0pLFY9YXdhaXQgdGhpcy5idWlsZEhlYWRlcnMoe29wdGlvbnM6JCxtZXRob2Q6WSxib2R5SGVhZGVyczpILHJldHJ5Q291bnQ6UX0pO3JldHVybntyZXE6e21ldGhvZDpZLGhlYWRlcnM6ViwuLi5KLnNpZ25hbCYme3NpZ25hbDpKLnNpZ25hbH0sLi4uZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSYmcSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0mJntkdXBsZXg6XCJoYWxmXCJ9LC4uLnEmJntib2R5OnF9LC4uLnRoaXMuZmV0Y2hPcHRpb25zPz97fSwuLi5KLmZldGNoT3B0aW9ucz8/e319LHVybDpVLHRpbWVvdXQ6Si50aW1lb3V0fX1hc3luYyBidWlsZEhlYWRlcnMoe29wdGlvbnM6JCxtZXRob2Q6USxib2R5SGVhZGVyczpKLHJldHJ5Q291bnQ6WX0pe2xldCBYPXt9O2lmKHRoaXMuaWRlbXBvdGVuY3lIZWFkZXImJlEhPT1cImdldFwiKXtpZighJC5pZGVtcG90ZW5jeUtleSkkLmlkZW1wb3RlbmN5S2V5PXRoaXMuZGVmYXVsdElkZW1wb3RlbmN5S2V5KCk7WFt0aGlzLmlkZW1wb3RlbmN5SGVhZGVyXT0kLmlkZW1wb3RlbmN5S2V5fWxldCBXPVIoW1gse0FjY2VwdDpcImFwcGxpY2F0aW9uL2pzb25cIixcIlVzZXItQWdlbnRcIjp0aGlzLmdldFVzZXJBZ2VudCgpLFwiWC1TdGFpbmxlc3MtUmV0cnktQ291bnRcIjpTdHJpbmcoWSksLi4uJC50aW1lb3V0P3tcIlgtU3RhaW5sZXNzLVRpbWVvdXRcIjpTdHJpbmcoTWF0aC50cnVuYygkLnRpbWVvdXQvMTAwMCkpfTp7fSwuLi50OSgpLC4uLnRoaXMuX29wdGlvbnMuZGFuZ2Vyb3VzbHlBbGxvd0Jyb3dzZXI/e1wiYW50aHJvcGljLWRhbmdlcm91cy1kaXJlY3QtYnJvd3Nlci1hY2Nlc3NcIjpcInRydWVcIn06dm9pZCAwLFwiYW50aHJvcGljLXZlcnNpb25cIjpcIjIwMjMtMDYtMDFcIn0sYXdhaXQgdGhpcy5hdXRoSGVhZGVycygkKSx0aGlzLl9vcHRpb25zLmRlZmF1bHRIZWFkZXJzLEosJC5oZWFkZXJzXSk7cmV0dXJuIHRoaXMudmFsaWRhdGVIZWFkZXJzKFcpLFcudmFsdWVzfV9tYWtlQWJvcnQoJCl7cmV0dXJuKCk9PiQuYWJvcnQoKX1idWlsZEJvZHkoe29wdGlvbnM6e2JvZHk6JCxoZWFkZXJzOlF9fSl7aWYoISQpcmV0dXJue2JvZHlIZWFkZXJzOnZvaWQgMCxib2R5OnZvaWQgMH07bGV0IEo9UihbUV0pO2lmKEFycmF5QnVmZmVyLmlzVmlldygkKXx8JCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwkIGluc3RhbmNlb2YgRGF0YVZpZXd8fHR5cGVvZiAkPT09XCJzdHJpbmdcIiYmSi52YWx1ZXMuaGFzKFwiY29udGVudC10eXBlXCIpfHxnbG9iYWxUaGlzLkJsb2ImJiQgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkJsb2J8fCQgaW5zdGFuY2VvZiBGb3JtRGF0YXx8JCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc3x8Z2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSYmJCBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0pcmV0dXJue2JvZHlIZWFkZXJzOnZvaWQgMCxib2R5OiR9O2Vsc2UgaWYodHlwZW9mICQ9PT1cIm9iamVjdFwiJiYoKFN5bWJvbC5hc3luY0l0ZXJhdG9yIGluICQpfHwoU3ltYm9sLml0ZXJhdG9yIGluICQpJiYoXCJuZXh0XCJpbiAkKSYmdHlwZW9mICQubmV4dD09PVwiZnVuY3Rpb25cIikpcmV0dXJue2JvZHlIZWFkZXJzOnZvaWQgMCxib2R5Ok1YKCQpfTtlbHNlIGlmKHR5cGVvZiAkPT09XCJvYmplY3RcIiYmSi52YWx1ZXMuZ2V0KFwiY29udGVudC10eXBlXCIpPT09XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIilyZXR1cm57Ym9keUhlYWRlcnM6e1wiY29udGVudC10eXBlXCI6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIn0sYm9keTp0aGlzLnN0cmluZ2lmeVF1ZXJ5KCQpfTtlbHNlIHJldHVybiBaKHRoaXMsdFgsXCJmXCIpLmNhbGwodGhpcyx7Ym9keTokLGhlYWRlcnM6Sn0pfX1LVT15JCx0WD1uZXcgV2Vha01hcCxIVT1uZXcgV2Vha1NldCx4dz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhc2VVUkwhPT1cImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIn07eSQuQW50aHJvcGljPUtVO3kkLkhVTUFOX1BST01QVD1mdzt5JC5BSV9QUk9NUFQ9eXc7eSQuREVGQVVMVF9USU1FT1VUPTYwMDAwMDt5JC5BbnRocm9waWNFcnJvcj1nO3kkLkFQSUVycm9yPW4kO3kkLkFQSUNvbm5lY3Rpb25FcnJvcj0kMDt5JC5BUElDb25uZWN0aW9uVGltZW91dEVycm9yPW05O3kkLkFQSVVzZXJBYm9ydEVycm9yPVE2O3kkLk5vdEZvdW5kRXJyb3I9ZDk7eSQuQ29uZmxpY3RFcnJvcj1pOTt5JC5SYXRlTGltaXRFcnJvcj1yOTt5JC5CYWRSZXF1ZXN0RXJyb3I9bDk7eSQuQXV0aGVudGljYXRpb25FcnJvcj1jOTt5JC5JbnRlcm5hbFNlcnZlckVycm9yPW85O3kkLlBlcm1pc3Npb25EZW5pZWRFcnJvcj1wOTt5JC5VbnByb2Nlc3NhYmxlRW50aXR5RXJyb3I9bjk7eSQudG9GaWxlPXZYO2NsYXNzIHEwIGV4dGVuZHMgeSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuY29tcGxldGlvbnM9bmV3IE84KHRoaXMpLHRoaXMubWVzc2FnZXM9bmV3IEswKHRoaXMpLHRoaXMubW9kZWxzPW5ldyBGOCh0aGlzKSx0aGlzLmJldGE9bmV3IFc2KHRoaXMpfX1xMC5Db21wbGV0aW9ucz1PODtxMC5NZXNzYWdlcz1LMDtxMC5Nb2RlbHM9Rjg7cTAuQmV0YT1XNjtmdW5jdGlvbiBJNCgkKXtyZXR1cm4gJCBpbnN0YW5jZW9mIEVycm9yPyQ6RXJyb3IoU3RyaW5nKCQpKX1mdW5jdGlvbiBaOCgkKXtyZXR1cm4gJCBpbnN0YW5jZW9mIEVycm9yPyQubWVzc2FnZTpTdHJpbmcoJCl9ZnVuY3Rpb24gbyQoJCl7aWYoJCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZcImNvZGVcImluICQmJnR5cGVvZiAkLmNvZGU9PT1cInN0cmluZ1wiKXJldHVybiAkLmNvZGU7cmV0dXJufWZ1bmN0aW9uIEYxKCQpe3JldHVybiBvJCgkKT09PVwiRU5PRU5UXCJ9ZnVuY3Rpb24gcVUoJCl7cmV0dXJuIG8kKCQpPT09XCJFSVNESVJcIn1mdW5jdGlvbiBndygkKXtsZXQgUT1vJCgkKTtyZXR1cm4gUT09PVwiRU5PRU5UXCJ8fFE9PT1cIkVBQ0NFU1wifHxRPT09XCJFUEVSTVwifHxRPT09XCJFTk9URElSXCJ8fFE9PT1cIkVMT09QXCJ9aW1wb3J0e3JhbmRvbVVVSUQgYXMgU3Z9ZnJvbVwiY3J5cHRvXCI7aW1wb3J0e2FwcGVuZEZpbGUgYXMga3YsbWtkaXIgYXMgdnZ9ZnJvbVwiZnMvcHJvbWlzZXNcIjtpbXBvcnR7am9pbiBhcyBod31mcm9tXCJwYXRoXCI7dmFyIFYwLE04PW51bGw7ZnVuY3Rpb24gdXcoKXtpZihNOClyZXR1cm4gTTg7aWYoIVIkKHByb2Nlc3MuZW52LkRFQlVHX0NMQVVERV9BR0VOVF9TREspKXJldHVybiBWMD1udWxsLE04PVByb21pc2UucmVzb2x2ZSgpLE04O2xldCAkPWh3KHA2KCksXCJkZWJ1Z1wiKTtyZXR1cm4gVjA9aHcoJCxgc2RrLSR7U3YoKX0udHh0YCkscHJvY2Vzcy5zdGRlcnIud3JpdGUoYFNESyBkZWJ1ZyBsb2dzOiAke1YwfVxuYCksTTg9dnYoJCx7cmVjdXJzaXZlOiEwfSkudGhlbigoKT0+e30pLmNhdGNoKCgpPT57fSksTTh9ZnVuY3Rpb24gbXcoKXtyZXR1cm4gdXcoKSxWMD8/bnVsbH1mdW5jdGlvbiBaNigkKXtpZihWMD09PW51bGwpcmV0dXJuO2xldCBKPWAke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0gJHskfVxuYDt1dygpLnRoZW4oKCk9PntpZihWMClrdihWMCxKKS5jYXRjaCgoKT0+e30pfSl9ZnVuY3Rpb24gQ3YoKXt0aGlzLl9fZGF0YV9fPW5ldyBWMSx0aGlzLnNpemU9MH12YXIgbHc9Q3Y7ZnVuY3Rpb24gVHYoJCl7dmFyIFE9dGhpcy5fX2RhdGFfXyxKPVEuZGVsZXRlKCQpO3JldHVybiB0aGlzLnNpemU9US5zaXplLEp9dmFyIGN3PVR2O2Z1bmN0aW9uIHh2KCQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCgkKX12YXIgcHc9eHY7ZnVuY3Rpb24gZnYoJCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKCQpfXZhciBkdz1mdjt2YXIgeXY9MjAwO2Z1bmN0aW9uIGd2KCQsUSl7dmFyIEo9dGhpcy5fX2RhdGFfXztpZihKIGluc3RhbmNlb2YgVjEpe3ZhciBZPUouX19kYXRhX187aWYoIURYfHxZLmxlbmd0aDx5di0xKXJldHVybiBZLnB1c2goWyQsUV0pLHRoaXMuc2l6ZT0rK0ouc2l6ZSx0aGlzO0o9dGhpcy5fX2RhdGFfXz1uZXcgaDkoWSl9cmV0dXJuIEouc2V0KCQsUSksdGhpcy5zaXplPUouc2l6ZSx0aGlzfXZhciBpdz1ndjtmdW5jdGlvbiBMOCgkKXt2YXIgUT10aGlzLl9fZGF0YV9fPW5ldyBWMSgkKTt0aGlzLnNpemU9US5zaXplfUw4LnByb3RvdHlwZS5jbGVhcj1sdztMOC5wcm90b3R5cGUuZGVsZXRlPWN3O0w4LnByb3RvdHlwZS5nZXQ9cHc7TDgucHJvdG90eXBlLmhhcz1kdztMOC5wcm90b3R5cGUuc2V0PWl3O3ZhciBudz1MODt2YXIgaHY9ZnVuY3Rpb24oKXt0cnl7dmFyICQ9UTgoT2JqZWN0LFwiZGVmaW5lUHJvcGVydHlcIik7cmV0dXJuICQoe30sXCJcIix7fSksJH1jYXRjaChRKXt9fSgpLGo4PWh2O2Z1bmN0aW9uIHV2KCQsUSxKKXtpZihRPT1cIl9fcHJvdG9fX1wiJiZqOClqOCgkLFEse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOkosd3JpdGFibGU6ITB9KTtlbHNlICRbUV09Sn12YXIgQTg9dXY7dmFyIG12PU9iamVjdC5wcm90b3R5cGUsbHY9bXYuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gY3YoJCxRLEope3ZhciBZPSRbUV07aWYoIShsdi5jYWxsKCQsUSkmJksxKFksSikpfHxKPT09dm9pZCAwJiYhKFEgaW4gJCkpQTgoJCxRLEopfXZhciBhWD1jdjtmdW5jdGlvbiBwdigkLFEsSixZKXt2YXIgWD0hSjtKfHwoSj17fSk7dmFyIFc9LTEsRz1RLmxlbmd0aDt3aGlsZSgrK1c8Ryl7dmFyIFU9UVtXXSxIPVk/WShKW1VdLCRbVV0sVSxKLCQpOnZvaWQgMDtpZihIPT09dm9pZCAwKUg9JFtVXTtpZihYKUE4KEosVSxIKTtlbHNlIGFYKEosVSxIKX1yZXR1cm4gSn12YXIgcnc9cHY7ZnVuY3Rpb24gZHYoJCxRKXt2YXIgSj0tMSxZPUFycmF5KCQpO3doaWxlKCsrSjwkKVlbSl09UShKKTtyZXR1cm4gWX12YXIgb3c9ZHY7ZnVuY3Rpb24gaXYoJCl7cmV0dXJuICQhPW51bGwmJnR5cGVvZiAkPT1cIm9iamVjdFwifXZhciByNj1pdjt2YXIgbnY9XCJbb2JqZWN0IEFyZ3VtZW50c11cIjtmdW5jdGlvbiBydigkKXtyZXR1cm4gcjYoJCkmJkE0KCQpPT1udn12YXIgVlU9cnY7dmFyIHR3PU9iamVjdC5wcm90b3R5cGUsb3Y9dHcuaGFzT3duUHJvcGVydHksdHY9dHcucHJvcGVydHlJc0VudW1lcmFibGUsYXY9VlUoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9WVTpmdW5jdGlvbigkKXtyZXR1cm4gcjYoJCkmJm92LmNhbGwoJCxcImNhbGxlZVwiKSYmIXR2LmNhbGwoJCxcImNhbGxlZVwiKX0sbTQ9YXY7dmFyIHN2PUFycmF5LmlzQXJyYXksVjY9c3Y7dmFyIGVYPXt9O2o0KGVYLHtkZWZhdWx0OigpPT5DN30pO2Z1bmN0aW9uIGV2KCl7cmV0dXJuITF9dmFyIGF3PWV2O3ZhciAkTz10eXBlb2YgZVg9PVwib2JqZWN0XCImJmVYJiYhZVgubm9kZVR5cGUmJmVYLHN3PSRPJiZ0eXBlb2Ygc1g9PVwib2JqZWN0XCImJnNYJiYhc1gubm9kZVR5cGUmJnNYLCRDPXN3JiZzdy5leHBvcnRzPT09JE8sZXc9JEM/bDYuQnVmZmVyOnZvaWQgMCxRQz1ldz9ldy5pc0J1ZmZlcjp2b2lkIDAsSkM9UUN8fGF3LEM3PUpDO3ZhciBYQz05MDA3MTk5MjU0NzQwOTkxLFlDPS9eKD86MHxbMS05XVxcZCopJC87ZnVuY3Rpb24gV0MoJCxRKXt2YXIgSj10eXBlb2YgJDtyZXR1cm4gUT1RPT1udWxsP1hDOlEsISFRJiYoSj09XCJudW1iZXJcInx8SiE9XCJzeW1ib2xcIiYmWUMudGVzdCgkKSkmJigkPi0xJiYkJTE9PTAmJiQ8USl9dmFyIFoxPVdDO3ZhciBHQz05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIFVDKCQpe3JldHVybiB0eXBlb2YgJD09XCJudW1iZXJcIiYmJD4tMSYmJCUxPT0wJiYkPD1HQ312YXIgSTg9VUM7dmFyIEhDPVwiW29iamVjdCBBcmd1bWVudHNdXCIsS0M9XCJbb2JqZWN0IEFycmF5XVwiLHFDPVwiW29iamVjdCBCb29sZWFuXVwiLFZDPVwiW29iamVjdCBEYXRlXVwiLEJDPVwiW29iamVjdCBFcnJvcl1cIix6Qz1cIltvYmplY3QgRnVuY3Rpb25dXCIsTkM9XCJbb2JqZWN0IE1hcF1cIix3Qz1cIltvYmplY3QgTnVtYmVyXVwiLE9DPVwiW29iamVjdCBPYmplY3RdXCIsREM9XCJbb2JqZWN0IFJlZ0V4cF1cIixGQz1cIltvYmplY3QgU2V0XVwiLFpDPVwiW29iamVjdCBTdHJpbmddXCIsTUM9XCJbb2JqZWN0IFdlYWtNYXBdXCIsTEM9XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiLGpDPVwiW29iamVjdCBEYXRhVmlld11cIixBQz1cIltvYmplY3QgRmxvYXQzMkFycmF5XVwiLElDPVwiW29iamVjdCBGbG9hdDY0QXJyYXldXCIsUkM9XCJbb2JqZWN0IEludDhBcnJheV1cIixQQz1cIltvYmplY3QgSW50MTZBcnJheV1cIixFQz1cIltvYmplY3QgSW50MzJBcnJheV1cIixiQz1cIltvYmplY3QgVWludDhBcnJheV1cIixfQz1cIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldXCIsU0M9XCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiLGtDPVwiW29iamVjdCBVaW50MzJBcnJheV1cIixfJD17fTtfJFtBQ109XyRbSUNdPV8kW1JDXT1fJFtQQ109XyRbRUNdPV8kW2JDXT1fJFtfQ109XyRbU0NdPV8kW2tDXT0hMDtfJFtIQ109XyRbS0NdPV8kW0xDXT1fJFtxQ109XyRbakNdPV8kW1ZDXT1fJFtCQ109XyRbekNdPV8kW05DXT1fJFt3Q109XyRbT0NdPV8kW0RDXT1fJFtGQ109XyRbWkNdPV8kW01DXT0hMTtmdW5jdGlvbiB2QygkKXtyZXR1cm4gcjYoJCkmJkk4KCQubGVuZ3RoKSYmISFfJFtBNCgkKV19dmFyIFFPPXZDO2Z1bmN0aW9uIENDKCQpe3JldHVybiBmdW5jdGlvbihRKXtyZXR1cm4gJChRKX19dmFyIEpPPUNDO3ZhciBRNT17fTtqNChRNSx7ZGVmYXVsdDooKT0+SjV9KTt2YXIgWE89dHlwZW9mIFE1PT1cIm9iamVjdFwiJiZRNSYmIVE1Lm5vZGVUeXBlJiZRNSxUNz1YTyYmdHlwZW9mICQ1PT1cIm9iamVjdFwiJiYkNSYmISQ1Lm5vZGVUeXBlJiYkNSxUQz1UNyYmVDcuZXhwb3J0cz09PVhPLEJVPVRDJiZ3WC5wcm9jZXNzLHhDPWZ1bmN0aW9uKCl7dHJ5e3ZhciAkPVQ3JiZUNy5yZXF1aXJlJiZUNy5yZXF1aXJlKFwidXRpbFwiKS50eXBlcztpZigkKXJldHVybiAkO3JldHVybiBCVSYmQlUuYmluZGluZyYmQlUuYmluZGluZyhcInV0aWxcIil9Y2F0Y2goUSl7fX0oKSxKNT14Qzt2YXIgWU89SjUmJko1LmlzVHlwZWRBcnJheSxmQz1ZTz9KTyhZTyk6UU8sWDU9ZkM7dmFyIHlDPU9iamVjdC5wcm90b3R5cGUsZ0M9eUMuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gaEMoJCxRKXt2YXIgSj1WNigkKSxZPSFKJiZtNCgkKSxYPSFKJiYhWSYmQzcoJCksVz0hSiYmIVkmJiFYJiZYNSgkKSxHPUp8fFl8fFh8fFcsVT1HP293KCQubGVuZ3RoLFN0cmluZyk6W10sSD1VLmxlbmd0aDtmb3IodmFyIHEgaW4gJClpZigoUXx8Z0MuY2FsbCgkLHEpKSYmIShHJiYocT09XCJsZW5ndGhcInx8WCYmKHE9PVwib2Zmc2V0XCJ8fHE9PVwicGFyZW50XCIpfHxXJiYocT09XCJidWZmZXJcInx8cT09XCJieXRlTGVuZ3RoXCJ8fHE9PVwiYnl0ZU9mZnNldFwiKXx8WjEocSxIKSkpKVUucHVzaChxKTtyZXR1cm4gVX12YXIgV089aEM7dmFyIHVDPU9iamVjdC5wcm90b3R5cGU7ZnVuY3Rpb24gbUMoJCl7dmFyIFE9JCYmJC5jb25zdHJ1Y3RvcixKPXR5cGVvZiBRPT1cImZ1bmN0aW9uXCImJlEucHJvdG90eXBlfHx1QztyZXR1cm4gJD09PUp9dmFyIFk1PW1DO2Z1bmN0aW9uIGxDKCQsUSl7cmV0dXJuIGZ1bmN0aW9uKEope3JldHVybiAkKFEoSikpfX12YXIgR089bEM7ZnVuY3Rpb24gY0MoJCl7cmV0dXJuICQhPW51bGwmJkk4KCQubGVuZ3RoKSYmISQ4KCQpfXZhciBSOD1jQztmdW5jdGlvbiBwQygkKXt2YXIgUT1bXTtpZigkIT1udWxsKWZvcih2YXIgSiBpbiBPYmplY3QoJCkpUS5wdXNoKEopO3JldHVybiBRfXZhciBVTz1wQzt2YXIgZEM9T2JqZWN0LnByb3RvdHlwZSxpQz1kQy5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBuQygkKXtpZighJDYoJCkpcmV0dXJuIFVPKCQpO3ZhciBRPVk1KCQpLEo9W107Zm9yKHZhciBZIGluICQpaWYoIShZPT1cImNvbnN0cnVjdG9yXCImJihRfHwhaUMuY2FsbCgkLFkpKSkpSi5wdXNoKFkpO3JldHVybiBKfXZhciBITz1uQztmdW5jdGlvbiByQygkKXtyZXR1cm4gUjgoJCk/V08oJCwhMCk6SE8oJCl9dmFyIFc1PXJDO3ZhciBVNT17fTtqNChVNSx7ZGVmYXVsdDooKT0+elV9KTt2YXIgQk89dHlwZW9mIFU1PT1cIm9iamVjdFwiJiZVNSYmIVU1Lm5vZGVUeXBlJiZVNSxLTz1CTyYmdHlwZW9mIEc1PT1cIm9iamVjdFwiJiZHNSYmIUc1Lm5vZGVUeXBlJiZHNSxvQz1LTyYmS08uZXhwb3J0cz09PUJPLHFPPW9DP2w2LkJ1ZmZlcjp2b2lkIDAsVk89cU8/cU8uYWxsb2NVbnNhZmU6dm9pZCAwO2Z1bmN0aW9uIHRDKCQsUSl7aWYoUSlyZXR1cm4gJC5zbGljZSgpO3ZhciBKPSQubGVuZ3RoLFk9Vk8/Vk8oSik6bmV3ICQuY29uc3RydWN0b3IoSik7cmV0dXJuICQuY29weShZKSxZfXZhciB6VT10QztmdW5jdGlvbiBhQygkLFEpe3ZhciBKPS0xLFk9JC5sZW5ndGg7UXx8KFE9QXJyYXkoWSkpO3doaWxlKCsrSjxZKVFbSl09JFtKXTtyZXR1cm4gUX12YXIgek89YUM7ZnVuY3Rpb24gc0MoJCxRKXt2YXIgSj0tMSxZPVEubGVuZ3RoLFg9JC5sZW5ndGg7d2hpbGUoKytKPFkpJFtYK0pdPVFbSl07cmV0dXJuICR9dmFyIE5PPXNDO3ZhciBlQz1HTyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxINT1lQzt2YXIgJFQ9bDYuVWludDhBcnJheSxOVT0kVDtmdW5jdGlvbiBRVCgkKXt2YXIgUT1uZXcgJC5jb25zdHJ1Y3RvcigkLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgTlUoUSkuc2V0KG5ldyBOVSgkKSksUX12YXIgd089UVQ7ZnVuY3Rpb24gSlQoJCxRKXt2YXIgSj1RP3dPKCQuYnVmZmVyKTokLmJ1ZmZlcjtyZXR1cm4gbmV3ICQuY29uc3RydWN0b3IoSiwkLmJ5dGVPZmZzZXQsJC5sZW5ndGgpfXZhciBPTz1KVDt2YXIgRE89T2JqZWN0LmNyZWF0ZSxYVD1mdW5jdGlvbigpe2Z1bmN0aW9uICQoKXt9cmV0dXJuIGZ1bmN0aW9uKFEpe2lmKCEkNihRKSlyZXR1cm57fTtpZihETylyZXR1cm4gRE8oUSk7JC5wcm90b3R5cGU9UTt2YXIgSj1uZXcgJDtyZXR1cm4gJC5wcm90b3R5cGU9dm9pZCAwLEp9fSgpLEZPPVhUO2Z1bmN0aW9uIFlUKCQpe3JldHVybiB0eXBlb2YgJC5jb25zdHJ1Y3Rvcj09XCJmdW5jdGlvblwiJiYhWTUoJCk/Rk8oSDUoJCkpOnt9fXZhciBaTz1ZVDtpbXBvcnR7cmVhbHBhdGhTeW5jIGFzIG1PfWZyb21cImZzXCI7dmFyIFdUPVwiW29iamVjdCBTeW1ib2xdXCI7ZnVuY3Rpb24gR1QoJCl7cmV0dXJuIHR5cGVvZiAkPT1cInN5bWJvbFwifHxyNigkKSYmQTQoJCk9PVdUfXZhciBQOD1HVDt2YXIgVVQ9L1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxIVD0vXlxcdyokLztmdW5jdGlvbiBLVCgkLFEpe2lmKFY2KCQpKXJldHVybiExO3ZhciBKPXR5cGVvZiAkO2lmKEo9PVwibnVtYmVyXCJ8fEo9PVwic3ltYm9sXCJ8fEo9PVwiYm9vbGVhblwifHwkPT1udWxsfHxQOCgkKSlyZXR1cm4hMDtyZXR1cm4gSFQudGVzdCgkKXx8IVVULnRlc3QoJCl8fFEhPW51bGwmJiQgaW4gT2JqZWN0KFEpfXZhciBNTz1LVDt2YXIgcVQ9NTAwO2Z1bmN0aW9uIFZUKCQpe3ZhciBRPXYkKCQsZnVuY3Rpb24oWSl7aWYoSi5zaXplPT09cVQpSi5jbGVhcigpO3JldHVybiBZfSksSj1RLmNhY2hlO3JldHVybiBRfXZhciBMTz1WVDt2YXIgQlQ9L1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nLHpUPS9cXFxcKFxcXFwpPy9nLE5UPUxPKGZ1bmN0aW9uKCQpe3ZhciBRPVtdO2lmKCQuY2hhckNvZGVBdCgwKT09PTQ2KVEucHVzaChcIlwiKTtyZXR1cm4gJC5yZXBsYWNlKEJULGZ1bmN0aW9uKEosWSxYLFcpe1EucHVzaChYP1cucmVwbGFjZSh6VCxcIiQxXCIpOll8fEopfSksUX0pLGpPPU5UO2Z1bmN0aW9uIHdUKCQsUSl7dmFyIEo9LTEsWT0kPT1udWxsPzA6JC5sZW5ndGgsWD1BcnJheShZKTt3aGlsZSgrK0o8WSlYW0pdPVEoJFtKXSxKLCQpO3JldHVybiBYfXZhciBBTz13VDt2YXIgT1Q9MS8wLElPPWM2P2M2LnByb3RvdHlwZTp2b2lkIDAsUk89SU8/SU8udG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIFBPKCQpe2lmKHR5cGVvZiAkPT1cInN0cmluZ1wiKXJldHVybiAkO2lmKFY2KCQpKXJldHVybiBBTygkLFBPKStcIlwiO2lmKFA4KCQpKXJldHVybiBSTz9STy5jYWxsKCQpOlwiXCI7dmFyIFE9JCtcIlwiO3JldHVybiBRPT1cIjBcIiYmMS8kPT0tT1Q/XCItMFwiOlF9dmFyIEVPPVBPO2Z1bmN0aW9uIERUKCQpe3JldHVybiAkPT1udWxsP1wiXCI6RU8oJCl9dmFyIGJPPURUO2Z1bmN0aW9uIEZUKCQsUSl7aWYoVjYoJCkpcmV0dXJuICQ7cmV0dXJuIE1PKCQsUSk/WyRdOmpPKGJPKCQpKX12YXIgTTE9RlQ7dmFyIFpUPTEvMDtmdW5jdGlvbiBNVCgkKXtpZih0eXBlb2YgJD09XCJzdHJpbmdcInx8UDgoJCkpcmV0dXJuICQ7dmFyIFE9JCtcIlwiO3JldHVybiBRPT1cIjBcIiYmMS8kPT0tWlQ/XCItMFwiOlF9dmFyIEU4PU1UO2Z1bmN0aW9uIExUKCQsUSl7UT1NMShRLCQpO3ZhciBKPTAsWT1RLmxlbmd0aDt3aGlsZSgkIT1udWxsJiZKPFkpJD0kW0U4KFFbSisrXSldO3JldHVybiBKJiZKPT1ZPyQ6dm9pZCAwfXZhciBfTz1MVDtmdW5jdGlvbiBqVCgkLFEpe3JldHVybiAkIT1udWxsJiZRIGluIE9iamVjdCgkKX12YXIgU089alQ7ZnVuY3Rpb24gQVQoJCxRLEope1E9TTEoUSwkKTt2YXIgWT0tMSxYPVEubGVuZ3RoLFc9ITE7d2hpbGUoKytZPFgpe3ZhciBHPUU4KFFbWV0pO2lmKCEoVz0kIT1udWxsJiZKKCQsRykpKWJyZWFrOyQ9JFtHXX1pZihXfHwrK1khPVgpcmV0dXJuIFc7cmV0dXJuIFg9JD09bnVsbD8wOiQubGVuZ3RoLCEhWCYmSTgoWCkmJloxKEcsWCkmJihWNigkKXx8bTQoJCkpfXZhciBrTz1BVDtmdW5jdGlvbiBJVCgkLFEpe3JldHVybiAkIT1udWxsJiZrTygkLFEsU08pfXZhciB2Tz1JVDtmdW5jdGlvbiBSVCgkKXtyZXR1cm4gJH12YXIgSzU9UlQ7aW1wb3J0e2N3ZCBhcyBiVH1mcm9tXCJwcm9jZXNzXCI7aW1wb3J0e3JhbmRvbVVVSUQgYXMgeDd9ZnJvbVwiY3J5cHRvXCI7dmFyIHdVPW51bGw7ZnVuY3Rpb24gQ08oKXtyZXR1cm4gd1V9ZnVuY3Rpb24gVE8oJCl7d1U9JH12YXIgcTU9bmV3IE1hcDtmdW5jdGlvbiB4TygkKXtyZXR1cm4gcTUuaGFzKCQpP3E1LmdldCgkKTp2b2lkIDB9ZnVuY3Rpb24gZk8oJCxRKXtxNS5zZXQoJCxRKX12YXIgUFQ7dmFyIE9VPW5ldyBNYXA7ZnVuY3Rpb24geU8oJCl7cmV0dXJuIE9VLmdldCgkKX1mdW5jdGlvbiBnTygkLFEpe09VLnNldCgkLFEpfWZ1bmN0aW9uIEIwKCl7d1U9bnVsbCxxNS5jbGVhcigpLE9VLmNsZWFyKCksUFQ9dm9pZCAwfXZhciBFVDtmdW5jdGlvbiBoTygpe3JldHVybiBFVH1mdW5jdGlvbiB1Tygpe3JldHVybntzZW50Om5ldyBTZXQscmVqZWN0ZWQ6bmV3IFNldH19dmFyIF9UPXtyZW5kZXJUYXJnZXQ6XCJpbmtcIix3b3Jrc3BhY2U6XCJsb2NhbFwiLGNhbkRyaXZlOiEwLHRyYW5zY3JpcHRTb3VyY2U6XCJsb2NhbC1qc29ubFwiLHJlbW90ZTpudWxsfTtmdW5jdGlvbiBTVCgpe2xldCAkPVwiXCI7aWYodHlwZW9mIHByb2Nlc3M8XCJ1XCImJnR5cGVvZiBwcm9jZXNzLmN3ZD09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIG1PPT09XCJmdW5jdGlvblwiKXtsZXQgSj1iVCgpO3RyeXskPW1PKEopLm5vcm1hbGl6ZShcIk5GQ1wiKX1jYXRjaHskPUoubm9ybWFsaXplKFwiTkZDXCIpfX1yZXR1cm57b3JpZ2luYWxDd2Q6JCxwcm9qZWN0Um9vdDokLHRvdGFsQ29zdFVTRDowLHRvdGFsQVBJRHVyYXRpb246MCx0b3RhbEFQSUR1cmF0aW9uV2l0aG91dFJldHJpZXM6MCx0b3RhbFRvb2xEdXJhdGlvbjowLHN0YXJ0VGltZTpEYXRlLm5vdygpLGxhc3RJbnRlcmFjdGlvblRpbWU6RGF0ZS5ub3coKSx0b3RhbExpbmVzQWRkZWQ6MCx0b3RhbExpbmVzUmVtb3ZlZDowLGhhc1Vua25vd25Nb2RlbENvc3Q6ITEsY3dkOiQsbW9kZWxVc2FnZTp7fSxtYWluTG9vcE1vZGVsT3ZlcnJpZGU6dm9pZCAwLGluaXRpYWxNYWluTG9vcE1vZGVsOm51bGwsbW9kZWxTdHJpbmdzOm51bGwsaXNJbnRlcmFjdGl2ZTohMSxhdHRhY2hlckNhcHM6bnVsbCxoYXNTdHJlYW1pbmdJbnB1dDohMSxmcmlkYXlGdW5kYXlEaXNhYmxlZEZvclNlc3Npb246ITEsa2Fpcm9zQWN0aXZlOiExLHJlbmRlcmVyTW9kZTp2b2lkIDAsc3RyaWN0VG9vbFJlc3VsdFBhaXJpbmc6ITEsbWVtb3J5VG9nZ2xlZE9mZjohMSx0ZWFtTWVtb3J5U2VydmVyU3RhdHVzOnZvaWQgMCxzZGtBZ2VudFByb2dyZXNzU3VtbWFyaWVzRW5hYmxlZDohMSx1c2VyTXNnT3B0SW46ITEsY2xpZW50VHlwZTpcImNsaVwiLHNlc3Npb25Tb3VyY2U6dm9pZCAwLHNlc3Npb25TdGFydFR5cGU6XCJmcmVzaFwiLHF1ZXN0aW9uUHJldmlld0Zvcm1hdDp2b2lkIDAsc2Vzc2lvbkluZ3Jlc3NUb2tlbjp2b2lkIDAsb2F1dGhUb2tlbkZyb21GZDp2b2lkIDAsYXBpS2V5RnJvbUZkOnZvaWQgMCxnYXRld2F5QXV0aDpudWxsLGdhdGV3YXlSZWZyZXNoSW5GbGlnaHQ6bnVsbCxmbGFnU2V0dGluZ3NQYXRoOnZvaWQgMCxmbGFnU2V0dGluZ3NJbmxpbmU6bnVsbCxwYXJlbnRNYW5hZ2VkU2V0dGluZ3M6bnVsbCxhbGxvd2VkU2V0dGluZ1NvdXJjZXM6W1widXNlclNldHRpbmdzXCIsXCJwcm9qZWN0U2V0dGluZ3NcIixcImxvY2FsU2V0dGluZ3NcIixcImZsYWdTZXR0aW5nc1wiLFwicG9saWN5U2V0dGluZ3NcIl0sbWV0ZXI6bnVsbCxzZXNzaW9uQ291bnRlcjpudWxsLGxvY0NvdW50ZXI6bnVsbCxwckNvdW50ZXI6bnVsbCxjb21taXRDb3VudGVyOm51bGwsY29zdENvdW50ZXI6bnVsbCx0b2tlbkNvdW50ZXI6bnVsbCxjb2RlRWRpdFRvb2xEZWNpc2lvbkNvdW50ZXI6bnVsbCxhY3RpdmVUaW1lQ291bnRlcjpudWxsLHN0YXRzU3RvcmU6bnVsbCxzZXNzaW9uSWQ6eDcoKSxwYXJlbnRTZXNzaW9uSWQ6dm9pZCAwLGxvZ2dlclByb3ZpZGVyOm51bGwsZXZlbnRMb2dnZXI6bnVsbCxtZXRlclByb3ZpZGVyOm51bGwsdHJhY2VyUHJvdmlkZXI6bnVsbCxjYWNoZWRUZWxlbWV0cnlSZXNvdXJjZTpudWxsLGFnZW50Q29sb3JNYXA6bmV3IE1hcCxhZ2VudENvbG9ySW5kZXg6MCxsYXN0QVBJUmVxdWVzdDpudWxsLGxhc3RDYW5jZWxsZWRBUElNZXNzYWdlSWQ6bnVsbCxsYXN0QVBJUmVxdWVzdE1lc3NhZ2VzOm51bGwsbGFzdENsYXNzaWZpZXJSZXF1ZXN0czpudWxsLGNhY2hlZENsYXVkZU1kQ29udGVudDpudWxsLGluTWVtb3J5RXJyb3JMb2c6W10saW5saW5lUGx1Z2luczpbXSxpbmxpbmVQbHVnaW5VcmxzOltdLGNocm9tZUZsYWdPdmVycmlkZTp2b2lkIDAsdXNlQ293b3JrUGx1Z2luczohMSxzZXNzaW9uQnlwYXNzUGVybWlzc2lvbnNNb2RlOiExLHNjaGVkdWxlZFRhc2tzRW5hYmxlZDohMSxzZXNzaW9uUHJSZXNvbHZlZDohMSxzZXNzaW9uQ3JvblRhc2tzOltdLGxvb3BDaGFpblN0YXJ0ZWRBdDpPYmplY3QuY3JlYXRlKG51bGwpLHNlc3Npb25DcmVhdGVkVGVhbXM6bmV3IFNldCxzZXNzaW9uVHJ1c3RBY2NlcHRlZDohMSxzZXNzaW9uUGVyc2lzdGVuY2VEaXNhYmxlZDohMSxoYXNFeGl0ZWRQbGFuTW9kZTohMSxuZWVkc1BsYW5Nb2RlRXhpdEF0dGFjaG1lbnQ6ITEsbmVlZHNBdXRvTW9kZUV4aXRBdHRhY2htZW50OiExLGxzcFJlY29tbWVuZGF0aW9uU2hvd25UaGlzU2Vzc2lvbjohMSxpbml0SnNvblNjaGVtYTpudWxsLHJlZ2lzdGVyZWRIb29rczpudWxsLHBsYW5TbHVnQ2FjaGU6bmV3IE1hcCx0ZWxlcG9ydGVkU2Vzc2lvbkluZm86bnVsbCxpbnZva2VkU2tpbGxzOm5ldyBNYXAsc2xvd09wZXJhdGlvbnM6W10sc2RrQmV0YXM6dm9pZCAwLHNka09BdXRoVG9rZW5SZWZyZXNoQ2FsbGJhY2s6bnVsbCxtYWluVGhyZWFkQWdlbnRUeXBlOnZvaWQgMCxtYWluVGhyZWFkQWdlbnRIb29rczp2b2lkIDAsc2Vzc2lvblNraWxsQWxsb3dsaXN0OnZvaWQgMCxjYXBzOl9ULHJlcGxCcmlkZ2VBY3RpdmU6ITEsZGlyZWN0Q29ubmVjdFNlcnZlclVybDp2b2lkIDAsbWNwQ29ubmVjdE5vbkJsb2NraW5nOiExLGFjdGl2ZVJvdXRpbmU6dm9pZCAwLHN5c3RlbVByb21wdFNlY3Rpb25DYWNoZTpuZXcgTWFwLGxhc3RFbWl0dGVkRGF0ZTpudWxsLGFkZGl0aW9uYWxEaXJlY3Rvcmllc0ZvckNsYXVkZU1kOltdLGFsbG93ZWRDaGFubmVsczpbXSxhY3RpdmVJbnB1dHM6bmV3IE1hcCxoYXNEZXZDaGFubmVsczohMSxzZXNzaW9uUHJvamVjdERpcjpudWxsLHByb21wdENhY2hlMWhBbGxvd2xpc3Q6bnVsbCxzdGlja3lCZXRhczp1TygpLHRoaW5raW5nVHlwZU92ZXJyaWRlczpuZXcgTWFwLGluZmVyZW5jZVByb2ZpbGVCYWNraW5nTW9kZWxzOm5ldyBNYXAscHJvbXB0SWQ6bnVsbCxwcm9tcHRJbmRleDowLGxhc3RNYWluUmVxdWVzdElkOnZvaWQgMCxsYXN0TWFpblRocmVhZENhY2hlVHRsTXM6bnVsbCxsYXN0QXBpQ29tcGxldGlvblRpbWVzdGFtcDpudWxsLHBlbmRpbmdQb3N0Q29tcGFjdGlvbjohMX19dmFyIHg2PVNUKCk7ZnVuY3Rpb24gRFUoKXtyZXR1cm4geDYuc2Vzc2lvbklkfXZhciBrVD1lMSgpLEVZJD1rVC5zdWJzY3JpYmU7ZnVuY3Rpb24gZjcoKXtyZXR1cm4geDYub3JpZ2luYWxDd2R9ZnVuY3Rpb24gRlUoJCl7eDYub3JpZ2luYWxDd2Q9JC5ub3JtYWxpemUoXCJORkNcIiksbE8uZW1pdCh4Ni5vcmlnaW5hbEN3ZCl9dmFyIGxPPWUxKCksYlkkPWxPLnN1YnNjcmliZTt2YXIgdlQ9ZTEoKSxfWSQ9dlQuc3Vic2NyaWJlO3ZhciBDVD1lMSgpO3ZhciBTWSQ9Q1Quc3Vic2NyaWJlO2Z1bmN0aW9uIHk3KCl7cmV0dXJuIHg2LmZsYWdTZXR0aW5nc1BhdGh9ZnVuY3Rpb24gWlUoJCl7eDYuZmxhZ1NldHRpbmdzUGF0aD0kfWZ1bmN0aW9uIFY1KCl7cmV0dXJuIHg2LmZsYWdTZXR0aW5nc0lubGluZX1mdW5jdGlvbiBNVSgkKXt4Ni5mbGFnU2V0dGluZ3NJbmxpbmU9JH1mdW5jdGlvbiBCNSgpe3JldHVybiB4Ni5wYXJlbnRNYW5hZ2VkU2V0dGluZ3N9ZnVuY3Rpb24gTFUoJCl7eDYucGFyZW50TWFuYWdlZFNldHRpbmdzPSR9ZnVuY3Rpb24gejUoKXtyZXR1cm4geDYuYWxsb3dlZFNldHRpbmdTb3VyY2VzfWZ1bmN0aW9uIGpVKCQpe3g2LmFsbG93ZWRTZXR0aW5nU291cmNlcz0kfWZ1bmN0aW9uIGNPKCl7cmV0dXJuIHg2LnVzZUNvd29ya1BsdWdpbnN9aW1wb3J0e2FwcGVuZEZpbGUgYXMgWDIsbWtkaXIgYXMgc1QscmVuYW1lIGFzIFkyLHN0YXQgYXMgZVQsc3ltbGluayBhcyAkeCx1bmxpbmsgYXMgUFV9ZnJvbVwiZnMvcHJvbWlzZXNcIjtpbXBvcnR7ZGlybmFtZSBhcyBXMixqb2luIGFzIGtVfWZyb21cInBhdGhcIjtmdW5jdGlvbiBwTyh7d3JpdGVGbjokLGZsdXNoSW50ZXJ2YWxNczpRPTEwMDAsbWF4QnVmZmVyU2l6ZTpKPTEwMCxtYXhCdWZmZXJCeXRlczpZPTEvMCxpbW1lZGlhdGVNb2RlOlg9ITF9KXtsZXQgVz1bXSxHPTAsVT1udWxsLEg9bnVsbDtmdW5jdGlvbiBxKCl7aWYoVSljbGVhclRpbWVvdXQoVSksVT1udWxsfWZ1bmN0aW9uIFYodyl7dHJ5eyQodyl9Y2F0Y2h7fX1mdW5jdGlvbiBCKCl7aWYoSClWKEguam9pbihcIlwiKSksSD1udWxsO2lmKFcubGVuZ3RoPT09MClyZXR1cm47VihXLmpvaW4oXCJcIikpLFc9W10sRz0wLHEoKX1mdW5jdGlvbiB6KCl7aWYoIVUpVT1zZXRUaW1lb3V0KEIsUSl9ZnVuY3Rpb24gTigpe2lmKEgpe0gucHVzaCguLi5XKSxXPVtdLEc9MCxxKCk7cmV0dXJufWxldCB3PVc7Vz1bXSxHPTAscSgpLEg9dyxzZXRJbW1lZGlhdGUoKCk9PntsZXQgTz1IO2lmKEg9bnVsbCxPKVYoTy5qb2luKFwiXCIpKX0pfXJldHVybnt3cml0ZSh3KXtpZihYKXtWKHcpO3JldHVybn1pZihXLnB1c2godyksRys9dy5sZW5ndGgseigpLFcubGVuZ3RoPj1KfHxHPj1ZKU4oKX0sZmx1c2g6QixkaXNwb3NlKCl7QigpfX19dmFyIGRPPW5ldyBTZXQ7ZnVuY3Rpb24gVFQoJCl7aWYodHlwZW9mICQ9PT1cImZ1bmN0aW9uXCIpcmV0dXJuICQ7aWYoU3ltYm9sLmFzeW5jRGlzcG9zZSBpbiAkKXJldHVybigpPT4kW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCk7cmV0dXJuKCk9PiRbU3ltYm9sLmRpc3Bvc2VdKCl9ZnVuY3Rpb24gaU8oJCl7bGV0IFE9VFQoJCk7ZE8uYWRkKFEpO2xldCBKPSgpPT57ZE8uZGVsZXRlKFEpfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihKLHtbU3ltYm9sLmRpc3Bvc2VdOkp9KX12YXIgbk89diQoKCQpPT57aWYoISR8fCQudHJpbSgpPT09XCJcIilyZXR1cm4gbnVsbDtsZXQgUT0kLnNwbGl0KFwiLFwiKS5tYXAoKFcpPT5XLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO2lmKFEubGVuZ3RoPT09MClyZXR1cm4gbnVsbDtsZXQgSj1RLnNvbWUoKFcpPT5XLnN0YXJ0c1dpdGgoXCIhXCIpKSxZPVEuc29tZSgoVyk9PiFXLnN0YXJ0c1dpdGgoXCIhXCIpKTtpZihKJiZZKXJldHVybiBudWxsO2xldCBYPVEubWFwKChXKT0+Vy5yZXBsYWNlKC9eIS8sXCJcIikudG9Mb3dlckNhc2UoKSk7cmV0dXJue2luY2x1ZGU6Sj9bXTpYLGV4Y2x1ZGU6Sj9YOltdLGlzRXhjbHVzaXZlOkp9fSk7ZnVuY3Rpb24geFQoJCl7bGV0IFE9W10sSj0kLm1hdGNoKC9eTUNQIHNlcnZlciBbXCInXShbXlwiJ10rKVtcIiddLyk7aWYoSiYmSlsxXSlRLnB1c2goXCJtY3BcIiksUS5wdXNoKEpbMV0udG9Mb3dlckNhc2UoKSk7ZWxzZXtsZXQgVz0kLm1hdGNoKC9eKFteOltdKyk6Lyk7aWYoVyYmV1sxXSlRLnB1c2goV1sxXS50cmltKCkudG9Mb3dlckNhc2UoKSl9bGV0IFk9JC5tYXRjaCgvXlxcWyhbXlxcXV0rKV0vKTtpZihZJiZZWzFdKVEucHVzaChZWzFdLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtpZigkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCIxcCBldmVudDpcIikpUS5wdXNoKFwiMXBcIik7bGV0IFg9JC5tYXRjaCgvOlxccyooW146XSs/KSg/OlxccysoPzp0eXBlfG1vZGV8c3RhdHVzfGV2ZW50KSk/Oi8pO2lmKFgmJlhbMV0pe2xldCBXPVhbMV0udHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoVy5sZW5ndGg8MzAmJiFXLmluY2x1ZGVzKFwiIFwiKSlRLnB1c2goVyl9cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChRKSl9ZnVuY3Rpb24gZlQoJCxRKXtpZighUSlyZXR1cm4hMDtpZigkLmxlbmd0aD09PTApcmV0dXJuITE7aWYoUS5pc0V4Y2x1c2l2ZSlyZXR1cm4hJC5zb21lKChKKT0+US5leGNsdWRlLmluY2x1ZGVzKEopKTtlbHNlIHJldHVybiAkLnNvbWUoKEopPT5RLmluY2x1ZGUuaW5jbHVkZXMoSikpfWZ1bmN0aW9uIHJPKCQsUSl7aWYoIVEpcmV0dXJuITA7bGV0IEo9eFQoJCk7cmV0dXJuIGZUKEosUSl9aW1wb3J0KmFzIHMgZnJvbVwiZnNcIjtpbXBvcnR7bWtkaXIgYXMgeVQsb3BlbiBhcyBnVCxyZWFkZGlyIGFzIGhULHJlYWRGaWxlIGFzIHRPLHJlbmFtZSBhcyB1VCxybWRpciBhcyBtVCxybSBhcyBsVCxzdGF0IGFzIGNULHVubGluayBhcyBwVH1mcm9tXCJmcy9wcm9taXNlc1wiO2Z1bmN0aW9uIG9PKCQpe3JldHVybi9eW1xcXFwvXXsyfS8udGVzdCgkKX1mdW5jdGlvbiBONSgkLFEpe2lmKG9PKFEpKXJldHVybntyZXNvbHZlZFBhdGg6USxpc1N5bWxpbms6ITEsaXNDYW5vbmljYWw6ITF9O3RyeXtsZXQgSj0kLmxzdGF0U3luYyhRKTtpZihKLmlzRklGTygpfHxKLmlzU29ja2V0KCl8fEouaXNDaGFyYWN0ZXJEZXZpY2UoKXx8Si5pc0Jsb2NrRGV2aWNlKCkpcmV0dXJue3Jlc29sdmVkUGF0aDpRLGlzU3ltbGluazohMSxpc0Nhbm9uaWNhbDohMX07bGV0IFk9JC5yZWFscGF0aFN5bmMoUSk7cmV0dXJue3Jlc29sdmVkUGF0aDpZLGlzU3ltbGluazpZIT09USxpc0Nhbm9uaWNhbDohMH19Y2F0Y2goSil7cmV0dXJue3Jlc29sdmVkUGF0aDpRLGlzU3ltbGluazohMSxpc0Nhbm9uaWNhbDohMX19fXZhciBkVD17Y3dkKCl7cmV0dXJuIHByb2Nlc3MuY3dkKCl9LGV4aXN0c1N5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy5leGlzdHNTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5leGlzdHNTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0sYXN5bmMgc3RhdCgkKXtyZXR1cm4gY1QoJCl9LGFzeW5jIHJlYWRkaXIoJCl7cmV0dXJuIGhUKCQse3dpdGhGaWxlVHlwZXM6ITB9KX0sYXN5bmMgdW5saW5rKCQpe3JldHVybiBwVCgkKX0sYXN5bmMgcm1kaXIoJCl7cmV0dXJuIG1UKCQpfSxhc3luYyBybSgkLFEpe3JldHVybiBsVCgkLFEpfSxhc3luYyBta2RpcigkLFEpe3RyeXthd2FpdCB5VCgkLHtyZWN1cnNpdmU6ITAsLi4uUX0pfWNhdGNoKEope2lmKG8kKEopIT09XCJFRVhJU1RcIil0aHJvdyBKfX0sYXN5bmMgcmVhZEZpbGUoJCxRKXtyZXR1cm4gdE8oJCx7ZW5jb2Rpbmc6US5lbmNvZGluZ30pfSxhc3luYyByZW5hbWUoJCxRKXtyZXR1cm4gdVQoJCxRKX0sc3RhdFN5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy5zdGF0U3luYygkeyR9KWAsMCk7cmV0dXJuIHMuc3RhdFN5bmMoJCl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxsc3RhdFN5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy5sc3RhdFN5bmMoJHskfSlgLDApO3JldHVybiBzLmxzdGF0U3luYygkKX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LHJlYWRGaWxlU3luYygkLFEpe2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgZnMucmVhZEZpbGVTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5yZWFkRmlsZVN5bmMoJCx7ZW5jb2Rpbmc6US5lbmNvZGluZ30pfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX0scmVhZEZpbGVCeXRlc1N5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy5yZWFkRmlsZUJ5dGVzU3luYygkeyR9KWAsMCk7cmV0dXJuIHMucmVhZEZpbGVTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0scmVhZFN5bmMoJCxRKXtsZXQgWD1bXTt0cnl7Y29uc3QgSj1aJChYLEMkYGZzLnJlYWRTeW5jKCR7JH0sICR7US5sZW5ndGh9IGJ5dGVzKWAsMCk7bGV0IFk9dm9pZCAwO3RyeXtZPXMub3BlblN5bmMoJCxcInJcIik7bGV0IEg9QnVmZmVyLmFsbG9jKFEubGVuZ3RoKSxxPXMucmVhZFN5bmMoWSxILDAsUS5sZW5ndGgsMCk7cmV0dXJue2J1ZmZlcjpILGJ5dGVzUmVhZDpxfX1maW5hbGx5e2lmKFkpcy5jbG9zZVN5bmMoWSl9fWNhdGNoKFcpe3ZhciBHPVcsVT0xfWZpbmFsbHl7TSQoWCxHLFUpfX0sYXBwZW5kRmlsZVN5bmMoJCxRLEope2xldCBYPVtdO3RyeXtjb25zdCBZPVokKFgsQyRgZnMuYXBwZW5kRmlsZVN5bmMoJHskfSwgJHtRLmxlbmd0aH0gY2hhcnMpYCwwKTtpZihKPy5tb2RlIT09dm9pZCAwKXRyeXtsZXQgSD1zLm9wZW5TeW5jKCQsXCJheFwiLEoubW9kZSk7dHJ5e3MuYXBwZW5kRmlsZVN5bmMoSCxRKX1maW5hbGx5e3MuY2xvc2VTeW5jKEgpfXJldHVybn1jYXRjaChIKXtpZihvJChIKSE9PVwiRUVYSVNUXCIpdGhyb3cgSH1zLmFwcGVuZEZpbGVTeW5jKCQsUSl9Y2F0Y2goVyl7dmFyIEc9VyxVPTF9ZmluYWxseXtNJChYLEcsVSl9fSxjb3B5RmlsZVN5bmMoJCxRKXtsZXQgWT1bXTt0cnl7Y29uc3QgSj1aJChZLEMkYGZzLmNvcHlGaWxlU3luYygkeyR9IFx1MjE5MiAke1F9KWAsMCk7cy5jb3B5RmlsZVN5bmMoJCxRKX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LHVubGlua1N5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy51bmxpbmtTeW5jKCR7JH0pYCwwKTtzLnVubGlua1N5bmMoJCl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxyZW5hbWVTeW5jKCQsUSl7bGV0IFk9W107dHJ5e2NvbnN0IEo9WiQoWSxDJGBmcy5yZW5hbWVTeW5jKCR7JH0gXHUyMTkyICR7UX0pYCwwKTtzLnJlbmFtZVN5bmMoJCxRKX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LGxpbmtTeW5jKCQsUSl7bGV0IFk9W107dHJ5e2NvbnN0IEo9WiQoWSxDJGBmcy5saW5rU3luYygkeyR9IFx1MjE5MiAke1F9KWAsMCk7cy5saW5rU3luYygkLFEpfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX0sc3ltbGlua1N5bmMoJCxRLEope2xldCBYPVtdO3RyeXtjb25zdCBZPVokKFgsQyRgZnMuc3ltbGlua1N5bmMoJHskfSBcdTIxOTIgJHtRfSlgLDApO3Muc3ltbGlua1N5bmMoJCxRLEopfWNhdGNoKFcpe3ZhciBHPVcsVT0xfWZpbmFsbHl7TSQoWCxHLFUpfX0scmVhZGxpbmtTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucmVhZGxpbmtTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5yZWFkbGlua1N5bmMoJCl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxyZWFscGF0aFN5bmMoJCl7bGV0IEo9W107dHJ5e2NvbnN0IFE9WiQoSixDJGBmcy5yZWFscGF0aFN5bmMoJHskfSlgLDApO3JldHVybiBzLnJlYWxwYXRoU3luYygkKS5ub3JtYWxpemUoXCJORkNcIil9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxta2RpclN5bmMoJCxRKXtsZXQgWD1bXTt0cnl7Y29uc3QgSj1aJChYLEMkYGZzLm1rZGlyU3luYygkeyR9KWAsMCk7bGV0IFk9e3JlY3Vyc2l2ZTohMH07aWYoUT8ubW9kZSE9PXZvaWQgMClZLm1vZGU9US5tb2RlO3RyeXtzLm1rZGlyU3luYygkLFkpfWNhdGNoKEgpe2lmKG8kKEgpIT09XCJFRVhJU1RcIil0aHJvdyBIfX1jYXRjaChXKXt2YXIgRz1XLFU9MX1maW5hbGx5e00kKFgsRyxVKX19LHJlYWRkaXJTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucmVhZGRpclN5bmMoJHskfSlgLDApO3JldHVybiBzLnJlYWRkaXJTeW5jKCQse3dpdGhGaWxlVHlwZXM6ITB9KX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LHJlYWRkaXJTdHJpbmdTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucmVhZGRpclN0cmluZ1N5bmMoJHskfSlgLDApO3JldHVybiBzLnJlYWRkaXJTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0saXNEaXJFbXB0eVN5bmMoJCl7bGV0IFk9W107dHJ5e2NvbnN0IFE9WiQoWSxDJGBmcy5pc0RpckVtcHR5U3luYygkeyR9KWAsMCk7bGV0IEo9dGhpcy5yZWFkZGlyU3luYygkKTtyZXR1cm4gSi5sZW5ndGg9PT0wfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX0scm1kaXJTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucm1kaXJTeW5jKCR7JH0pYCwwKTtzLnJtZGlyU3luYygkKX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LHJtU3luYygkLFEpe2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgZnMucm1TeW5jKCR7JH0pYCwwKTtzLnJtU3luYygkLFEpfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX0sY3JlYXRlV3JpdGVTdHJlYW0oJCl7cmV0dXJuIHMuY3JlYXRlV3JpdGVTdHJlYW0oJCl9LGFzeW5jIHJlYWRGaWxlQnl0ZXMoJCxRKXtpZihRPT09dm9pZCAwKXJldHVybiB0TygkKTtsZXQgSj1hd2FpdCBnVCgkLFwiclwiKTt0cnl7bGV0e3NpemU6WX09YXdhaXQgSi5zdGF0KCksWD1NYXRoLm1pbihZLFEpLFc9QnVmZmVyLmFsbG9jVW5zYWZlKFgpLEc9MDt3aGlsZShHPFgpe2xldHtieXRlc1JlYWQ6VX09YXdhaXQgSi5yZWFkKFcsRyxYLUcsRyk7aWYoVT09PTApYnJlYWs7Rys9VX1yZXR1cm4gRzxYP1cuc3ViYXJyYXkoMCxHKTpXfWZpbmFsbHl7YXdhaXQgSi5jbG9zZSgpfX19LGlUPWRUO2Z1bmN0aW9uIG0kKCl7cmV0dXJuIGlUfWZ1bmN0aW9uIG5UKCQsUSl7aWYoJC5kZXN0cm95ZWQpcmV0dXJuOyQud3JpdGUoUSl9ZnVuY3Rpb24gYU8oJCl7blQocHJvY2Vzcy5zdGRlcnIsJCl9ZnVuY3Rpb24gQVUoJCl7cmV0dXJuICQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrJC5zbGljZSgxKX1mdW5jdGlvbiBzTygkLFEsSj1RK1wic1wiKXtyZXR1cm4gJD09PTE/UTpKfXZhciBuWSQ9dHlwZW9mIFN0cmluZy5wcm90b3R5cGUuaXNXZWxsRm9ybWVkPT09XCJmdW5jdGlvblwiP0Z1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5pc1dlbGxGb3JtZWQpOnZvaWQgMCxyWSQ9dHlwZW9mIFN0cmluZy5wcm90b3R5cGUudG9XZWxsRm9ybWVkPT09XCJmdW5jdGlvblwiP0Z1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS50b1dlbGxGb3JtZWQpOnZvaWQgMDt2YXIgclQ9L2FwaVtfLV0/a2V5fHNlY3JldHx0b2tlbnxwYXNzd29yZHxwYXNzd2R8Y3JlZGVudGlhbHxiZWFyZXJ8YXV0aG9yaXphdGlvbnxhdXRoW18tXT9oZWFkZXJ8Y29va2llfHNlc3Npb25bXy1dPyg/OmlkfGtleSl8Y29ubmVjdGlvbltfLV0/c3RyaW5nfCg/OnByaXZhdGV8c3NofGVuY3J5cHRpb258c2lnbmluZ3xhY2Nlc3N8ZGVwbG95fG1hc3RlcnxsaWNlbnNlKVtfLV0/a2V5fGNsaWVudFtfLV0/c2VjcmV0L2ksZU89XCJbXlxcXFxzLDsmfVxcXFxdKV0rXCIsJDI9YFxcXFxbUkVEQUNURURcXFxcXXxcIlteXCJdKlwifCdbXiddKid8KD86QmVhcmVyfEJhc2ljKVxcXFxzKyg/OlxcXFxbUkVEQUNURURcXFxcXXwke2VPfSl8JHtlT31gLG9UPVtcInNrXCIsXCJhbnRcIixcImFwaVwiXS5qb2luKFwiLVwiKSx0VD1be2lkOlwidXJsLXVzZXJpbmZvXCIsc291cmNlOlwiOlxcXFwvXFxcXC8oW14vQFxcXFxzXSspQFwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwiZ2NwLXNlcnZpY2UtYWNjb3VudFwiLHNvdXJjZTpcIlxcXFxiKFthLXowLTktXStAW2EtejAtOS1dK1xcXFwuaWFtXFxcXC5nc2VydmljZWFjY291bnRcXFxcLmNvbSlcXFxcYlwiLGZsYWdzOlwiaVwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwibG9vc2UtYW50aHJvcGljLWtleVwiLHNvdXJjZTpcIlxcXFxiKHNrLWFudC0/W1xcXFx3LV17MTAsfSlcIixjb25maWRlbmNlOlwibG93XCJ9LHtpZDpcImh0dHAtYXV0aC1zY2hlbWVcIixzb3VyY2U6XCJcXFxcYig/OkJlYXJlcnxCYXNpYylcXFxccysoW0EtWmEtejAtOSsvPS5ffi1dezIwLH0pXCIsZmxhZ3M6XCJpXCIsY29uZmlkZW5jZTpcImxvd1wifSx7aWQ6XCJsb29zZS1qd3RcIixzb3VyY2U6XCJcXFxcYihleUpbQS1aYS16MC05Xy1dezEwLH1cXFxcLltBLVphLXowLTlfLV17MTAsfVxcXFwuW0EtWmEtejAtOV8tXXsxMCx9KVwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwic2Vuc2l0aXZlLWFzc2lnblwiLHNvdXJjZTpgKD86JHtyVC5zb3VyY2V9KVtcXFxcdy4tXSpbXCInXT9cXFxccypbPTpdXFxcXHMqKCR7JDJ9KWAsZmxhZ3M6XCJpXCIsY29uZmlkZW5jZTpcImxvd1wifSx7aWQ6XCJjbG91ZC1lbnYtdmFyXCIsc291cmNlOmBcXFxcYig/OkFXU3xHT09HTEV8R0NQfEdDTE9VRHxBWlVSRSlfXFxcXHcrXFxcXHMqWz06XVxcXFxzKigkeyQyfSlgLGZsYWdzOlwiaVwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwiYXdzLWFjY2Vzcy10b2tlblwiLHNvdXJjZTpcIlxcXFxiKCg/OkEzVFtBLVowLTldfEFLSUF8QVNJQXxBQklBfEFDQ0EpW0EtWjItN117MTZ9KVxcXFxiXCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ2NwLWFwaS1rZXlcIixzb3VyY2U6YFxcXFxiKEFJemFbXFxcXHctXXszNX0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiYXp1cmUtYWQtY2xpZW50LXNlY3JldFwiLHNvdXJjZTpgKD86XnxbXFxcXFxcXFwnXCJcXFxceDYwXFxcXHM+PTooLCldKShbYS16QS1aMC05X34uXXszfVxcXFxkUX5bYS16QS1aMC05X34uLV17MzEsMzR9KSg/OiR8W1xcXFxcXFxcJ1wiXFxcXHg2MFxcXFxzPCksXSlgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImRpZ2l0YWxvY2Vhbi1wYXRcIixzb3VyY2U6YFxcXFxiKGRvcF92MV9bYS1mMC05XXs2NH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZGlnaXRhbG9jZWFuLWFjY2Vzcy10b2tlblwiLHNvdXJjZTpgXFxcXGIoZG9vX3YxX1thLWYwLTldezY0fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJhbnRocm9waWMtYXBpLWtleVwiLHNvdXJjZTpgXFxcXGIoJHtvVH0wMy1bYS16QS1aMC05X1xcXFwtXXs5M31BQSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJhbnRocm9waWMtYWRtaW4tYXBpLWtleVwiLHNvdXJjZTpgXFxcXGIoc2stYW50LWFkbWluMDEtW2EtekEtWjAtOV9cXFxcLV17OTN9QUEpKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwib3BlbmFpLWFwaS1rZXlcIixzb3VyY2U6YFxcXFxiKHNrLSg/OnByb2p8c3ZjYWNjdHxhZG1pbiktKD86W0EtWmEtejAtOV8tXXs3NH18W0EtWmEtejAtOV8tXXs1OH0pVDNCbGJrRkooPzpbQS1aYS16MC05Xy1dezc0fXxbQS1aYS16MC05Xy1dezU4fSlcXFxcYnxzay1bYS16QS1aMC05XXsyMH1UM0JsYmtGSlthLXpBLVowLTldezIwfSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJodWdnaW5nZmFjZS1hY2Nlc3MtdG9rZW5cIixzb3VyY2U6YFxcXFxiKGhmX1thLXpBLVpdezM0fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRodWItcGF0XCIsc291cmNlOlwiZ2hwX1swLTlhLXpBLVpdezM2fVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdpdGh1Yi1maW5lLWdyYWluZWQtcGF0XCIsc291cmNlOlwiZ2l0aHViX3BhdF9cXFxcd3s4Mn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRodWItYXBwLXRva2VuXCIsc291cmNlOlwiKD86Z2h1fGdocylfWzAtOWEtekEtWl17MzZ9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ2l0aHViLW9hdXRoXCIsc291cmNlOlwiZ2hvX1swLTlhLXpBLVpdezM2fVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdpdGh1Yi1yZWZyZXNoLXRva2VuXCIsc291cmNlOlwiZ2hyX1swLTlhLXpBLVpdezM2fVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdpdGxhYi1wYXRcIixzb3VyY2U6XCJnbHBhdC1bXFxcXHctXXsyMH1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRsYWItZGVwbG95LXRva2VuXCIsc291cmNlOlwiZ2xkdC1bMC05YS16QS1aX1xcXFwtXXsyMH1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJzbGFjay1ib3QtdG9rZW5cIixzb3VyY2U6XCJ4b3hiLVswLTldezEwLDEzfS1bMC05XXsxMCwxM31bYS16QS1aMC05LV0qXCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2xhY2stdXNlci10b2tlblwiLHNvdXJjZTpcInhveFtwZV0oPzotWzAtOV17MTAsMTN9KXszfS1bYS16QS1aMC05LV17MjgsMzR9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2xhY2stYXBwLXRva2VuXCIsc291cmNlOlwieGFwcC1cXFxcZC1bQS1aMC05XSstXFxcXGQrLVthLXowLTldK1wiLGZsYWdzOlwiaVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInR3aWxpby1hcGkta2V5XCIsc291cmNlOlwiU0tbMC05YS1mQS1GXXszMn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJzZW5kZ3JpZC1hcGktdG9rZW5cIixzb3VyY2U6YFxcXFxiKFNHXFxcXC5bYS16QS1aMC05PV9cXFxcLS5dezY2fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJucG0tYWNjZXNzLXRva2VuXCIsc291cmNlOmBcXFxcYihucG1fW2EtekEtWjAtOV17MzZ9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInB5cGktdXBsb2FkLXRva2VuXCIsc291cmNlOlwicHlwaS1BZ0VJY0hsd2FTNXZjbWNbXFxcXHctXXs1MCwxMDAwfVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImRhdGFicmlja3MtYXBpLXRva2VuXCIsc291cmNlOmBcXFxcYihkYXBpW2EtZjAtOV17MzJ9KD86LVxcXFxkKT8pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiaGFzaGljb3JwLXRmLWFwaS10b2tlblwiLHNvdXJjZTpcIlthLXpBLVowLTldezE0fVxcXFwuYXRsYXN2MVxcXFwuW2EtekEtWjAtOVxcXFwtXz1dezYwLDcwfVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInB1bHVtaS1hcGktdG9rZW5cIixzb3VyY2U6YFxcXFxiKHB1bC1bYS1mMC05XXs0MH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwicG9zdG1hbi1hcGktdG9rZW5cIixzb3VyY2U6YFxcXFxiKFBNQUstW2EtZkEtRjAtOV17MjR9LVthLWZBLUYwLTldezM0fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJncmFmYW5hLWFwaS1rZXlcIixzb3VyY2U6YFxcXFxiKGV5SnJJam9pW0EtWmEtejAtOSsvXXs3MCw0MDB9PXswLDN9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdyYWZhbmEtY2xvdWQtYXBpLXRva2VuXCIsc291cmNlOmBcXFxcYihnbGNfW0EtWmEtejAtOSsvXXszMiw0MDB9PXswLDN9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdyYWZhbmEtc2VydmljZS1hY2NvdW50LXRva2VuXCIsc291cmNlOmBcXFxcYihnbHNhX1tBLVphLXowLTldezMyfV9bQS1GYS1mMC05XXs4fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJzZW50cnktdXNlci10b2tlblwiLHNvdXJjZTpgXFxcXGIoc250cnl1X1thLWYwLTldezY0fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJzZW50cnktb3JnLXRva2VuXCIsc291cmNlOlwiXFxcXGJzbnRyeXNfZXlKcFlYUWlPW2EtekEtWjAtOSsvXXsxMCwyMDB9KD86TENKeVpXZHBiMjVmZFhKc3xJbkpsWjJsdmJsOTFjbXdpfGNtVm5hVzl1WDNWeWJDSTYpW2EtekEtWjAtOSsvXXsxMCwyMDB9PXswLDJ9X1thLXpBLVowLTkrL117NDN9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic3RyaXBlLWFjY2Vzcy10b2tlblwiLHNvdXJjZTpgXFxcXGIoKD86c2t8cmspXyg/OnRlc3R8bGl2ZXxwcm9kKV9bYS16QS1aMC05XXsxMCw5OX0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2hvcGlmeS1hY2Nlc3MtdG9rZW5cIixzb3VyY2U6XCJzaHBhdF9bYS1mQS1GMC05XXszMn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJzaG9waWZ5LXNoYXJlZC1zZWNyZXRcIixzb3VyY2U6XCJzaHBzc19bYS1mQS1GMC05XXszMn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJwcml2YXRlLWtleVwiLHNvdXJjZTpcIi0tLS0tQkVHSU5bIEEtWjAtOV8tXXswLDEwMH1QUklWQVRFIEtFWSg/OiBCTE9DSyk/LS0tLS1bXFxcXHNcXFxcUy1dezY0LH0/LS0tLS1FTkRbIEEtWjAtOV8tXXswLDEwMH1QUklWQVRFIEtFWSg/OiBCTE9DSyk/LS0tLS1cIixmbGFnczpcImlcIixjb25maWRlbmNlOlwiaGlnaFwifV07dmFyIFEyPW51bGw7ZnVuY3Rpb24gYVQoJCl7cmV0dXJuIHRULm1hcCgoUSk9Pih7aWQ6US5pZCxjb25maWRlbmNlOlEuY29uZmlkZW5jZSxyZTpuZXcgUmVnRXhwKFEuc291cmNlLCQ/KFEuZmxhZ3M/P1wiXCIpLnJlcGxhY2UoXCJnXCIsXCJcIikrXCJnXCI6US5mbGFncz8/XCJcIil9KSl9ZnVuY3Rpb24gSjIoJCl7UTI/Pz1hVCghMCk7Zm9yKGxldCBRIG9mIFEyKSQ9JC5yZXBsYWNlKFEucmUsKEosWSk9PntpZih0eXBlb2YgWSE9PVwic3RyaW5nXCIpcmV0dXJuXCJbUkVEQUNURURdXCI7bGV0IFg9WS5sZW5ndGg+PTImJihZWzBdPT09J1wiJ3x8WVswXT09PVwiJ1wiKSYmWS5hdCgtMSk9PT1ZWzBdP1lbMF06XCJcIixXPUoubGFzdEluZGV4T2YoWSk7cmV0dXJuYCR7Si5zbGljZSgwLFcpfSR7WH1bUkVEQUNURURdJHtYfSR7Si5zbGljZShXK1kubGVuZ3RoKX1gfSk7cmV0dXJuICR9dmFyIEVVPXt2ZXJib3NlOjAsZGVidWc6MSxpbmZvOjIsd2FybjozLGVycm9yOjR9LFF4PXYkKCgpPT57bGV0ICQ9cHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfREVCVUdfTE9HX0xFVkVMPy50b0xvd2VyQ2FzZSgpLnRyaW0oKTtpZigkJiZPYmplY3QuaGFzT3duKEVVLCQpKXJldHVybiAkO3JldHVyblwiZGVidWdcIn0pLEp4PSExO2Z1bmN0aW9uIE81KCl7cmV0dXJuIHR5cGVvZiBwcm9jZXNzPFwidVwiJiZBcnJheS5pc0FycmF5KHByb2Nlc3MuYXJndik/cHJvY2Vzcy5hcmd2OltdfXZhciBiVT12JCgoKT0+e2xldCAkPU81KCk7cmV0dXJuIEp4fHxSJChwcm9jZXNzLmVudi5ERUJVRyl8fFIkKHByb2Nlc3MuZW52LkRFQlVHX1NESyl8fCQuaW5jbHVkZXMoXCItLWRlYnVnXCIpfHwkLmluY2x1ZGVzKFwiLWRcIil8fEcyKCl8fCQuc29tZSgoUSk9PlEuc3RhcnRzV2l0aChcIi0tZGVidWc9XCIpKXx8VTIoKSE9PW51bGx9KTt2YXIgWHg9diQoKCk9PntsZXQgJD1PNSgpLmZpbmQoKEopPT5KLnN0YXJ0c1dpdGgoXCItLWRlYnVnPVwiKSk7aWYoISQpcmV0dXJuIG51bGw7bGV0IFE9JC5zdWJzdHJpbmcoOCk7cmV0dXJuIG5PKFEpfSksRzI9diQoKCk9PntsZXQgJD1PNSgpO3JldHVybiAkLmluY2x1ZGVzKFwiLS1kZWJ1Zy10by1zdGRlcnJcIil8fCQuaW5jbHVkZXMoXCItZDJlXCIpfSksVTI9diQoKCk9PntsZXQgJD1PNSgpO2ZvcihsZXQgUT0wO1E8JC5sZW5ndGg7USsrKXtsZXQgSj0kW1FdO2lmKEouc3RhcnRzV2l0aChcIi0tZGVidWctZmlsZT1cIikpcmV0dXJuIEouc3Vic3RyaW5nKDEzKTtpZihKPT09XCItLWRlYnVnLWZpbGVcIiYmUSsxPCQubGVuZ3RoKXJldHVybiAkW1ErMV19cmV0dXJuIG51bGx9KTtmdW5jdGlvbiBZeCgkKXtpZighYlUoKSlyZXR1cm4hMTtpZih0eXBlb2YgcHJvY2Vzcz5cInVcInx8dHlwZW9mIHByb2Nlc3MudmVyc2lvbnM+XCJ1XCJ8fHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU+XCJ1XCIpcmV0dXJuITE7bGV0IFE9WHgoKTtyZXR1cm4gck8oJCxRKX12YXIgV3g9ITE7dmFyIEd4PTEwNDg1NzYwLHc1PW51bGwsSVU9UHJvbWlzZS5yZXNvbHZlKCksZzc9LTEsUlU9ITEsX1U9bnVsbDthc3luYyBmdW5jdGlvbiBIMigkLFEsSj1HeCl7aWYoZzc8MClnNz1hd2FpdCBlVCgkKS50aGVuKChZKT0+WS5zaXplKS5jYXRjaCgoKT0+MCk7ZWxzZSBnNys9UTtpZihnNzw9Snx8UlUpcmV0dXJuO1JVPSEwO3RyeXtsZXQgWT0kLmVuZHNXaXRoKFwiLnR4dFwiKT9gJHskLnNsaWNlKDAsLTQpfS4xLnR4dGA6YCR7JH0uMWA7dHJ5e2F3YWl0IFkyKCQsWSl9Y2F0Y2goWCl7aWYoIUYxKFgpKWF3YWl0IFBVKFkpLmNhdGNoKCgpPT57fSksYXdhaXQgWTIoJCxZKS5jYXRjaCgoKT0+UFUoJCkuY2F0Y2goKCk9Pnt9KSl9Zzc9MH1maW5hbGx5e1JVPSExfX1mdW5jdGlvbiBLMigkKXtyZXR1cm4gX1U9a1UoJCxgJHtEVSgpfS50eHRgKSxfVX1hc3luYyBmdW5jdGlvbiBVeCgkLFEsSixZKXtpZigkKWF3YWl0IHNUKFEse3JlY3Vyc2l2ZTohMH0pLmNhdGNoKCgpPT57fSk7bGV0IFg9Sjt0cnl7YXdhaXQgWDIoSixZKX1jYXRjaChXKXtpZighcVUoVykpdGhyb3cgVztYPUsyKEopLGF3YWl0IFgyKFgsWSl9YXdhaXQgSDIoWCxCdWZmZXIuYnl0ZUxlbmd0aChZKSkuY2F0Y2goU1UpLFYyKCl9ZnVuY3Rpb24gU1UoKXt9ZnVuY3Rpb24gSHgoKXtpZighdzUpe2xldCAkPW51bGw7dzU9cE8oe3dyaXRlRm46KFEpPT57bGV0IEo9cTIoKSxZPVcyKEopLFg9JCE9PVk7aWYoJD1ZLGJVKCkpe2lmKFgpdHJ5e20kKCkubWtkaXJTeW5jKFkpfWNhdGNoe31sZXQgVz1KO3RyeXttJCgpLmFwcGVuZEZpbGVTeW5jKEosUSl9Y2F0Y2goRyl7aWYoIXFVKEcpKXRocm93IEc7Vz1LMihKKSxtJCgpLmFwcGVuZEZpbGVTeW5jKFcsUSl9SDIoVyxCdWZmZXIuYnl0ZUxlbmd0aChRKSkuY2F0Y2goU1UpLFYyKCk7cmV0dXJufUlVPUlVLnRoZW4oVXguYmluZChudWxsLFgsWSxKLFEpKS5jYXRjaChTVSl9LGZsdXNoSW50ZXJ2YWxNczoxMDAwLG1heEJ1ZmZlclNpemU6MTAwLGltbWVkaWF0ZU1vZGU6YlUoKX0pLGlPKGFzeW5jKCk9Pnt3NT8uZGlzcG9zZSgpLGF3YWl0IElVfSl9cmV0dXJuIHc1fWZ1bmN0aW9uIFgkKCQse2xldmVsOlF9PXtsZXZlbDpcImRlYnVnXCJ9KXtpZihFVVtRXTxFVVtReCgpXSlyZXR1cm47aWYoIVl4KCQpKXJldHVybjtpZihXeCYmJC5pbmNsdWRlcyhgXG5gKSkkPUIkKCQpO2xldCBZPWAke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0gWyR7US50b1VwcGVyQ2FzZSgpfV0gJHtKMigkLnRyaW0oKSl9XG5gO2lmKEcyKCkpe2FPKFkpO3JldHVybn1IeCgpLndyaXRlKFkpfWZ1bmN0aW9uIHEyKCl7cmV0dXJuIFUyKCk/P19VPz9wcm9jZXNzLmVudi5DTEFVREVfQ09ERV9ERUJVR19MT0dTX0RJUj8/a1UocDYoKSxcImRlYnVnXCIsYCR7RFUoKX0udHh0YCl9dmFyIFYyPXYkKGFzeW5jKCk9Pnt0cnl7bGV0ICQ9cTIoKSxRPVcyKCQpLEo9a1UoUSxcImxhdGVzdFwiKTthd2FpdCBQVShKKS5jYXRjaCgoKT0+e30pLGF3YWl0ICR4KCQsSil9Y2F0Y2h7fX0pO3ZhciBPMyQ9KCgpPT57bGV0ICQ9cHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfU0xPV19PUEVSQVRJT05fVEhSRVNIT0xEX01TO2lmKCQhPT12b2lkIDApe2xldCBRPU51bWJlcigkKTtpZighTnVtYmVyLmlzTmFOKFEpJiZRPj0wKXJldHVybiBRfXJldHVybiAxLzB9KSgpO3ZhciBLeD17W1N5bWJvbC5kaXNwb3NlXSgpe319O2Z1bmN0aW9uIHF4KCl7cmV0dXJuIEt4fXZhciBDJD1xeDtmdW5jdGlvbiBCJCgkLFEsSil7bGV0IFg9W107dHJ5e2NvbnN0IFk9WiQoWCxDJGBKU09OLnN0cmluZ2lmeSgkeyR9KWAsMCk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KCQsUSxKKX1jYXRjaChXKXt2YXIgRz1XLFU9MX1maW5hbGx5e00kKFgsRyxVKX19dmFyIGwkPSgkLFEpPT57bGV0IFk9W107dHJ5e2NvbnN0IEo9WiQoWSxDJGBKU09OLnBhcnNlKCR7JH0pYCwwKTtyZXR1cm4gdHlwZW9mIFE+XCJ1XCI/SlNPTi5wYXJzZSgkKTpKU09OLnBhcnNlKCQsUSl9Y2F0Y2goWCl7dmFyIFc9WCxHPTF9ZmluYWxseXtNJChZLFcsRyl9fTtmdW5jdGlvbiBSNCgkLFEpe2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgc3RydWN0dXJlZENsb25lKCR7JH0pYCwwKTtyZXR1cm4gc3RydWN0dXJlZENsb25lKCQsUSl9Y2F0Y2goWCl7dmFyIFc9WCxHPTF9ZmluYWxseXtNJChZLFcsRyl9fWZ1bmN0aW9uIFZ4KCQpe2xldCBRPSQudHJpbSgpO3JldHVybiBRLnN0YXJ0c1dpdGgoXCJ7XCIpJiZRLmVuZHNXaXRoKFwifVwiKX1mdW5jdGlvbiBCMigkLFEpe2xldCBKPXsuLi4kfTtpZihRKXtsZXQgWT1RLmVuYWJsZWQ9PT0hMCYmUS5mYWlsSWZVbmF2YWlsYWJsZT09PXZvaWQgMD97Li4uUSxmYWlsSWZVbmF2YWlsYWJsZTohMH06USxYPUouc2V0dGluZ3M7aWYoWCYmIVZ4KFgpKXRocm93IEVycm9yKFwiQ2Fubm90IHVzZSBib3RoIGEgc2V0dGluZ3MgZmlsZSBwYXRoIGFuZCB0aGUgc2FuZGJveCBvcHRpb24uIEluY2x1ZGUgdGhlIHNhbmRib3ggY29uZmlndXJhdGlvbiBpbiB5b3VyIHNldHRpbmdzIGZpbGUgaW5zdGVhZC5cIik7bGV0IFc9e3NhbmRib3g6WX07aWYoWCl0cnl7Vz17Li4ubCQoWCksc2FuZGJveDpZfX1jYXRjaHt9Si5zZXR0aW5ncz1CJChXKX1yZXR1cm4gSn12YXIgd3g9MjAwMCxENT1uZXcgU2V0LHoyPSExO2Z1bmN0aW9uIE94KCl7Zm9yKGxldCAkIG9mIEQ1KWlmKCEkLmtpbGxlZCkkLmtpbGwoXCJTSUdURVJNXCIpfWZ1bmN0aW9uIER4KCQpe2lmKEQ1LmFkZCgkKSwhejIpejI9ITAscHJvY2Vzcy5vbihcImV4aXRcIixPeCl9Y2xhc3MgaDd7b3B0aW9ucztwcm9jZXNzO3Byb2Nlc3NTdGRpbjtwcm9jZXNzU3Rkb3V0O3JlYWR5PSExO2Fib3J0Q29udHJvbGxlcjtleGl0RXJyb3I7ZXhpdExpc3RlbmVycz1bXTthYm9ydEhhbmRsZXI7cGVuZGluZ1dyaXRlcz1bXTtwZW5kaW5nRW5kSW5wdXQ9ITE7c3Bhd25SZXNvbHZlO3NwYXduUmVqZWN0O3NwYXduUHJvbWlzZTtjb25zdHJ1Y3RvcigkKXt0aGlzLm9wdGlvbnM9JDtpZih0aGlzLmFib3J0Q29udHJvbGxlcj0kLmFib3J0Q29udHJvbGxlcnx8YTAoKSwkLmRlZmVyU3Bhd24pdGhpcy5zcGF3blByb21pc2U9bmV3IFByb21pc2UoKFEsSik9Pnt0aGlzLnNwYXduUmVzb2x2ZT1RLHRoaXMuc3Bhd25SZWplY3Q9Sn0pLHRoaXMuc3Bhd25Qcm9taXNlLmNhdGNoKCgpPT57fSk7ZWxzZSB0aGlzLmluaXRpYWxpemUoKX1zcGF3bigpe3RyeXt0aGlzLmluaXRpYWxpemUoKX1jYXRjaChRKXt0aHJvdyB0aGlzLnNwYXduQWJvcnQoSTQoUSkpLFF9bGV0ICQ9dGhpcy5wZW5kaW5nV3JpdGVzO2lmKHRoaXMucGVuZGluZ1dyaXRlcz1bXSx0aGlzLnNwYXduUmVzb2x2ZSl0aGlzLnNwYXduUmVzb2x2ZSgpLHRoaXMuc3Bhd25SZXNvbHZlPXZvaWQgMCx0aGlzLnNwYXduUmVqZWN0PXZvaWQgMDtmb3IobGV0IFEgb2YgJCl0aGlzLndyaXRlKFEpO2lmKHRoaXMucGVuZGluZ0VuZElucHV0KXRoaXMucGVuZGluZ0VuZElucHV0PSExLHRoaXMucHJvY2Vzc1N0ZGluPy5lbmQoKX1zcGF3bkFib3J0KCQpe2lmKHRoaXMuc3Bhd25SZWplY3QpdGhpcy5zcGF3blJlamVjdCgkKSx0aGlzLnNwYXduUmVqZWN0PXZvaWQgMCx0aGlzLnNwYXduUmVzb2x2ZT12b2lkIDAsdGhpcy5wZW5kaW5nV3JpdGVzPVtdfXVwZGF0ZUVudigkKXtpZih0aGlzLm9wdGlvbnMuZW52KU9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLmVudiwkKTtlbHNlIHRoaXMub3B0aW9ucy5lbnY9ey4uLiR9fXVwZGF0ZVJlc3VtZSgkKXt0aGlzLm9wdGlvbnMucmVzdW1lPSR9Z2V0RGVmYXVsdEV4ZWN1dGFibGUoKXtyZXR1cm4gZTAoKT9cImJ1blwiOlwibm9kZVwifXNwYXduTG9jYWxQcm9jZXNzKCQpe2xldHtjb21tYW5kOlEsYXJnczpKLGN3ZDpZLGVudjpYLHNpZ25hbDpXfT0kLEc9UiQoWC5ERUJVR19DTEFVREVfQUdFTlRfU0RLKXx8dGhpcy5vcHRpb25zLnN0ZGVycj9cInBpcGVcIjpcImlnbm9yZVwiLFU9QngoUSxKLHtjd2Q6WSxzdGRpbzpbXCJwaXBlXCIsXCJwaXBlXCIsR10sc2lnbmFsOlcsZW52Olgsd2luZG93c0hpZGU6ITB9KTtpZihSJChYLkRFQlVHX0NMQVVERV9BR0VOVF9TREspfHx0aGlzLm9wdGlvbnMuc3RkZXJyKVUuc3RkZXJyLm9uKFwiZGF0YVwiLChxKT0+e2xldCBWPXEudG9TdHJpbmcoKTtpZihaNihWKSx0aGlzLm9wdGlvbnMuc3RkZXJyKXRoaXMub3B0aW9ucy5zdGRlcnIoVil9KTtyZXR1cm57c3RkaW46VS5zdGRpbixzdGRvdXQ6VS5zdGRvdXQsZ2V0IGtpbGxlZCgpe3JldHVybiBVLmtpbGxlZH0sZ2V0IGV4aXRDb2RlKCl7cmV0dXJuIFUuZXhpdENvZGV9LGtpbGw6VS5raWxsLmJpbmQoVSksb246VS5vbi5iaW5kKFUpLG9uY2U6VS5vbmNlLmJpbmQoVSksb2ZmOlUub2ZmLmJpbmQoVSl9fWluaXRpYWxpemUoKXt0cnl7bGV0e2FkZGl0aW9uYWxEaXJlY3RvcmllczokPVtdLGFnZW50OlEsYmV0YXM6Sixjd2Q6WSxleGVjdXRhYmxlOlg9dGhpcy5nZXREZWZhdWx0RXhlY3V0YWJsZSgpLGV4ZWN1dGFibGVBcmdzOlc9W10sZXh0cmFBcmdzOkc9e30scGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGU6VSxlbnY6SD17Li4ucHJvY2Vzcy5lbnZ9LHRoaW5raW5nQ29uZmlnOnEsbWF4VHVybnM6VixtYXhCdWRnZXRVc2Q6Qix0YXNrQnVkZ2V0OnosbW9kZWw6TixmYWxsYmFja01vZGVsOncsanNvblNjaGVtYTpPLHBlcm1pc3Npb25Nb2RlOkQsYWxsb3dEYW5nZXJvdXNseVNraXBQZXJtaXNzaW9uczpNLHBlcm1pc3Npb25Qcm9tcHRUb29sTmFtZTpqLGNvbnRpbnVlQ29udmVyc2F0aW9uOkEscmVzdW1lOmssc2V0dGluZ1NvdXJjZXM6dSxza2lsbHM6RyQsZGlzYWxsb3dlZFRvb2xzOmgkPVtdLHRvb2xzOnMkLG1jcFNlcnZlcnM6dTYsc3RyaWN0TWNwQ29uZmlnOkM0LGNhblVzZVRvb2w6TDQsaW5jbHVkZVBhcnRpYWxNZXNzYWdlczpuMCxwbHVnaW5zOlUxLHNhbmRib3g6cjB9PXRoaXMub3B0aW9ucyx7YWxsb3dlZFRvb2xzOmExPVtdfT10aGlzLm9wdGlvbnM7aWYoRyQhPT12b2lkIDApe2xldCBkJD1HJD09PVwiYWxsXCI/W1wiU2tpbGxcIl06RyQubWFwKChlJCk9PmBTa2lsbCgke2UkfSlgKSxYND1uZXcgU2V0KGExKTthMT1bLi4uYTEsLi4uZCQuZmlsdGVyKChlJCk9PiFYNC5oYXMoZSQpKV19bGV0IGk9W1wiLS1vdXRwdXQtZm9ybWF0XCIsXCJzdHJlYW0tanNvblwiLFwiLS12ZXJib3NlXCIsXCItLWlucHV0LWZvcm1hdFwiLFwic3RyZWFtLWpzb25cIl07aWYocSl7c3dpdGNoKHEudHlwZSl7Y2FzZVwiZW5hYmxlZFwiOmlmKHEuYnVkZ2V0VG9rZW5zPT09dm9pZCAwKWkucHVzaChcIi0tdGhpbmtpbmdcIixcImFkYXB0aXZlXCIpO2Vsc2UgaS5wdXNoKFwiLS1tYXgtdGhpbmtpbmctdG9rZW5zXCIscS5idWRnZXRUb2tlbnMudG9TdHJpbmcoKSk7YnJlYWs7Y2FzZVwiZGlzYWJsZWRcIjppLnB1c2goXCItLXRoaW5raW5nXCIsXCJkaXNhYmxlZFwiKTticmVhaztjYXNlXCJhZGFwdGl2ZVwiOmkucHVzaChcIi0tdGhpbmtpbmdcIixcImFkYXB0aXZlXCIpO2JyZWFrfWlmKHEudHlwZSE9PVwiZGlzYWJsZWRcIiYmcS5kaXNwbGF5KWkucHVzaChcIi0tdGhpbmtpbmctZGlzcGxheVwiLHEuZGlzcGxheSl9aWYodGhpcy5vcHRpb25zLmVmZm9ydClpLnB1c2goXCItLWVmZm9ydFwiLHRoaXMub3B0aW9ucy5lZmZvcnQpO2lmKFYpaS5wdXNoKFwiLS1tYXgtdHVybnNcIixWLnRvU3RyaW5nKCkpO2lmKEIhPT12b2lkIDApaS5wdXNoKFwiLS1tYXgtYnVkZ2V0LXVzZFwiLEIudG9TdHJpbmcoKSk7aWYoeilpLnB1c2goXCItLXRhc2stYnVkZ2V0XCIsei50b3RhbC50b1N0cmluZygpKTtpZihOKWkucHVzaChcIi0tbW9kZWxcIixOKTtpZihRKWkucHVzaChcIi0tYWdlbnRcIixRKTtpZihKJiZKLmxlbmd0aD4wKWkucHVzaChcIi0tYmV0YXNcIixKLmpvaW4oXCIsXCIpKTtpZihPKWkucHVzaChcIi0tanNvbi1zY2hlbWFcIixCJChPKSk7aWYodGhpcy5vcHRpb25zLmRlYnVnRmlsZSlpLnB1c2goXCItLWRlYnVnLWZpbGVcIix0aGlzLm9wdGlvbnMuZGVidWdGaWxlKTtlbHNlIGlmKHRoaXMub3B0aW9ucy5kZWJ1ZylpLnB1c2goXCItLWRlYnVnXCIpO2lmKCF0aGlzLm9wdGlvbnMuZGVidWdGaWxlJiYhdGhpcy5vcHRpb25zLnNwYXduQ2xhdWRlQ29kZVByb2Nlc3Mpe2xldCBkJD1tdygpO2lmKGQkKWkucHVzaChcIi0tZGVidWctZmlsZVwiLGQkKX1pZihMNCl7aWYoail0aHJvdyBFcnJvcihcImNhblVzZVRvb2wgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQgd2l0aCBwZXJtaXNzaW9uUHJvbXB0VG9vbE5hbWUuIFBsZWFzZSB1c2Ugb25lIG9yIHRoZSBvdGhlci5cIik7aS5wdXNoKFwiLS1wZXJtaXNzaW9uLXByb21wdC10b29sXCIsXCJzdGRpb1wiKX1lbHNlIGlmKGopaS5wdXNoKFwiLS1wZXJtaXNzaW9uLXByb21wdC10b29sXCIsaik7aWYoQSlpLnB1c2goXCItLWNvbnRpbnVlXCIpO2lmKGspaS5wdXNoKFwiLS1yZXN1bWVcIixrKTtpZih0aGlzLm9wdGlvbnMuYXNzaXN0YW50KWkucHVzaChcIi0tYXNzaXN0YW50XCIpO2lmKHRoaXMub3B0aW9ucy5jaGFubmVscyYmdGhpcy5vcHRpb25zLmNoYW5uZWxzLmxlbmd0aD4wKWkucHVzaChcIi0tY2hhbm5lbHNcIiwuLi50aGlzLm9wdGlvbnMuY2hhbm5lbHMpO2lmKGExLmxlbmd0aD4wKWkucHVzaChcIi0tYWxsb3dlZFRvb2xzXCIsYTEuam9pbihcIixcIikpO2lmKGgkLmxlbmd0aD4wKWkucHVzaChcIi0tZGlzYWxsb3dlZFRvb2xzXCIsaCQuam9pbihcIixcIikpO2lmKHMkIT09dm9pZCAwKWlmKEFycmF5LmlzQXJyYXkocyQpKWlmKHMkLmxlbmd0aD09PTApaS5wdXNoKFwiLS10b29sc1wiLFwiXCIpO2Vsc2UgaS5wdXNoKFwiLS10b29sc1wiLHMkLmpvaW4oXCIsXCIpKTtlbHNlIGkucHVzaChcIi0tdG9vbHNcIixcImRlZmF1bHRcIik7aWYodTYmJk9iamVjdC5rZXlzKHU2KS5sZW5ndGg+MClpLnB1c2goXCItLW1jcC1jb25maWdcIixCJCh7bWNwU2VydmVyczp1Nn0pKTtpZih1IT09dm9pZCAwKWkucHVzaChgLS1zZXR0aW5nLXNvdXJjZXM9JHt1LmpvaW4oXCIsXCIpfWApO2lmKEM0KWkucHVzaChcIi0tc3RyaWN0LW1jcC1jb25maWdcIik7aWYoRClpLnB1c2goXCItLXBlcm1pc3Npb24tbW9kZVwiLEQpO2lmKE0paS5wdXNoKFwiLS1hbGxvdy1kYW5nZXJvdXNseS1za2lwLXBlcm1pc3Npb25zXCIpO2lmKHcpe2lmKE4mJnc9PT1OKXRocm93IEVycm9yKFwiRmFsbGJhY2sgbW9kZWwgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBtYWluIG1vZGVsLiBQbGVhc2Ugc3BlY2lmeSBhIGRpZmZlcmVudCBtb2RlbCBmb3IgZmFsbGJhY2tNb2RlbCBvcHRpb24uXCIpO2kucHVzaChcIi0tZmFsbGJhY2stbW9kZWxcIix3KX1pZih0aGlzLm9wdGlvbnMuaW5jbHVkZUhvb2tFdmVudHMpaS5wdXNoKFwiLS1pbmNsdWRlLWhvb2stZXZlbnRzXCIpO2lmKG4wKWkucHVzaChcIi0taW5jbHVkZS1wYXJ0aWFsLW1lc3NhZ2VzXCIpO2lmKHRoaXMub3B0aW9ucy5zZXNzaW9uTWlycm9yKWkucHVzaChcIi0tc2Vzc2lvbi1taXJyb3JcIik7Zm9yKGxldCBkJCBvZiAkKWkucHVzaChcIi0tYWRkLWRpclwiLGQkKTtpZihVMSYmVTEubGVuZ3RoPjApZm9yKGxldCBkJCBvZiBVMSlpZihkJC50eXBlPT09XCJsb2NhbFwiKWkucHVzaChcIi0tcGx1Z2luLWRpclwiLGQkLnBhdGgpO2Vsc2UgdGhyb3cgRXJyb3IoYFVuc3VwcG9ydGVkIHBsdWdpbiB0eXBlOiAke2QkLnR5cGV9YCk7aWYodGhpcy5vcHRpb25zLmZvcmtTZXNzaW9uKWkucHVzaChcIi0tZm9yay1zZXNzaW9uXCIpO2lmKHRoaXMub3B0aW9ucy5yZXN1bWVTZXNzaW9uQXQpaS5wdXNoKFwiLS1yZXN1bWUtc2Vzc2lvbi1hdFwiLHRoaXMub3B0aW9ucy5yZXN1bWVTZXNzaW9uQXQpO2lmKHRoaXMub3B0aW9ucy5zZXNzaW9uSWQpaS5wdXNoKFwiLS1zZXNzaW9uLWlkXCIsdGhpcy5vcHRpb25zLnNlc3Npb25JZCk7aWYodGhpcy5vcHRpb25zLnBlcnNpc3RTZXNzaW9uPT09ITEpaS5wdXNoKFwiLS1uby1zZXNzaW9uLXBlcnNpc3RlbmNlXCIpO2lmKHRoaXMub3B0aW9ucy5tYW5hZ2VkU2V0dGluZ3MpaS5wdXNoKFwiLS1tYW5hZ2VkLXNldHRpbmdzXCIsdGhpcy5vcHRpb25zLm1hbmFnZWRTZXR0aW5ncyk7bGV0IGs5PXsuLi5HPz97fX07aWYodGhpcy5vcHRpb25zLnNldHRpbmdzKWs5LnNldHRpbmdzPXRoaXMub3B0aW9ucy5zZXR0aW5ncztsZXQgTUc9QjIoazkscjApO2ZvcihsZXRbZCQsWDRdb2YgT2JqZWN0LmVudHJpZXMoTUcpKWlmKFg0PT09bnVsbClpLnB1c2goYC0tJHtkJH1gKTtlbHNlIGkucHVzaChgLS0ke2QkfWAsWDQpO2lmKCFILkNMQVVERV9DT0RFX0VOVFJZUE9JTlQpSC5DTEFVREVfQ09ERV9FTlRSWVBPSU5UPVwic2RrLXRzXCI7aWYoZGVsZXRlIEguTk9ERV9PUFRJT05TLFIkKEguREVCVUdfQ0xBVURFX0FHRU5UX1NESykpSC5ERUJVRz1cIjFcIjtlbHNlIGRlbGV0ZSBILkRFQlVHO2xldCBvMD1GeChVKSx2OT1vMD9VOlgsQzk9bzA/Wy4uLlcsLi4uaV06Wy4uLlcsVSwuLi5pXSxWWD17Y29tbWFuZDp2OSxhcmdzOkM5LGN3ZDpZLGVudjpILHNpZ25hbDp0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWx9O2lmKHRoaXMub3B0aW9ucy5zcGF3bkNsYXVkZUNvZGVQcm9jZXNzKVo2KGBTcGF3bmluZyBDbGF1ZGUgQ29kZSAoY3VzdG9tKTogJHt2OX0gJHtDOS5qb2luKFwiIFwiKX1gKSx0aGlzLnByb2Nlc3M9dGhpcy5vcHRpb25zLnNwYXduQ2xhdWRlQ29kZVByb2Nlc3MoVlgpO2Vsc2UgWjYoYFNwYXduaW5nIENsYXVkZSBDb2RlOiAke3Y5fSAke0M5LmpvaW4oXCIgXCIpfWApLHRoaXMucHJvY2Vzcz10aGlzLnNwYXduTG9jYWxQcm9jZXNzKFZYKTt0aGlzLnByb2Nlc3NTdGRpbj10aGlzLnByb2Nlc3Muc3RkaW4sdGhpcy5wcm9jZXNzU3Rkb3V0PXRoaXMucHJvY2Vzcy5zdGRvdXQsRHgodGhpcy5wcm9jZXNzKSx0aGlzLmFib3J0SGFuZGxlcj0oKT0+e2lmKHRoaXMucHJvY2VzcyYmIXRoaXMucHJvY2Vzcy5raWxsZWQpdGhpcy5wcm9jZXNzLmtpbGwoXCJTSUdURVJNXCIpfSx0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsdGhpcy5hYm9ydEhhbmRsZXIpLHRoaXMucHJvY2Vzcy5vbihcImVycm9yXCIsKGQkKT0+e2lmKHRoaXMucmVhZHk9ITEsdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpdGhpcy5leGl0RXJyb3I9bmV3IHE2KFwiQ2xhdWRlIENvZGUgcHJvY2VzcyBhYm9ydGVkIGJ5IHVzZXJcIik7ZWxzZSBpZihndyhkJCkpe2xldCBYND1aeChVLG8wKTt0aGlzLmV4aXRFcnJvcj1SZWZlcmVuY2VFcnJvcihYNCksWjYodGhpcy5leGl0RXJyb3IubWVzc2FnZSl9ZWxzZSB0aGlzLmV4aXRFcnJvcj1FcnJvcihgRmFpbGVkIHRvIHNwYXduIENsYXVkZSBDb2RlIHByb2Nlc3M6ICR7ZCQubWVzc2FnZX1gKSxaNih0aGlzLmV4aXRFcnJvci5tZXNzYWdlKX0pLHRoaXMucHJvY2Vzcy5vbihcImV4aXRcIiwoZCQsWDQpPT57aWYodGhpcy5yZWFkeT0hMSx0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl0aGlzLmV4aXRFcnJvcj1uZXcgcTYoXCJDbGF1ZGUgQ29kZSBwcm9jZXNzIGFib3J0ZWQgYnkgdXNlclwiKTtlbHNle2xldCBlJD10aGlzLmdldFByb2Nlc3NFeGl0RXJyb3IoZCQsWDQpO2lmKGUkKXRoaXMuZXhpdEVycm9yPWUkLFo2KGUkLm1lc3NhZ2UpfX0pLHRoaXMucmVhZHk9ITB9Y2F0Y2goJCl7dGhyb3cgdGhpcy5yZWFkeT0hMSwkfX1nZXRQcm9jZXNzRXhpdEVycm9yKCQsUSl7aWYoJCE9PTAmJiQhPT1udWxsKXJldHVybiBFcnJvcihgQ2xhdWRlIENvZGUgcHJvY2VzcyBleGl0ZWQgd2l0aCBjb2RlICR7JH1gKTtlbHNlIGlmKFEpcmV0dXJuIEVycm9yKGBDbGF1ZGUgQ29kZSBwcm9jZXNzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICR7UX1gKTtyZXR1cm59d3JpdGUoJCl7aWYodGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IHE2KFwiT3BlcmF0aW9uIGFib3J0ZWRcIik7aWYodGhpcy5zcGF3blJlc29sdmUpe3RoaXMucGVuZGluZ1dyaXRlcy5wdXNoKCQpO3JldHVybn1pZighdGhpcy5yZWFkeXx8IXRoaXMucHJvY2Vzc1N0ZGluKXRocm93IEVycm9yKFwiUHJvY2Vzc1RyYW5zcG9ydCBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmdcIik7aWYodGhpcy5wcm9jZXNzU3RkaW4ud3JpdGFibGVFbmRlZCl7WjYoXCJbUHJvY2Vzc1RyYW5zcG9ydF0gRHJvcHBpbmcgd3JpdGUgdG8gZW5kZWQgc3RkaW4gc3RyZWFtXCIpO3JldHVybn1pZih0aGlzLnByb2Nlc3M/LmtpbGxlZHx8dGhpcy5wcm9jZXNzPy5leGl0Q29kZSE9PW51bGwpdGhyb3cgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgdG8gdGVybWluYXRlZCBwcm9jZXNzXCIpO2lmKHRoaXMuZXhpdEVycm9yKXRocm93IEVycm9yKGBDYW5ub3Qgd3JpdGUgdG8gcHJvY2VzcyB0aGF0IGV4aXRlZCB3aXRoIGVycm9yOiAke3RoaXMuZXhpdEVycm9yLm1lc3NhZ2V9YCk7WjYoYFtQcm9jZXNzVHJhbnNwb3J0XSBXcml0aW5nIHRvIHN0ZGluOiAkeyQuc3Vic3RyaW5nKDAsMTAwKX1gKTt0cnl7aWYoIXRoaXMucHJvY2Vzc1N0ZGluLndyaXRlKCQpKVo2KFwiW1Byb2Nlc3NUcmFuc3BvcnRdIFdyaXRlIGJ1ZmZlciBmdWxsLCBkYXRhIHF1ZXVlZFwiKX1jYXRjaChRKXt0aHJvdyB0aGlzLnJlYWR5PSExLEVycm9yKGBGYWlsZWQgdG8gd3JpdGUgdG8gcHJvY2VzcyBzdGRpbjogJHtaOChRKX1gKX19W1N5bWJvbC5kaXNwb3NlXSgpe3RoaXMuY2xvc2UoKX1jbG9zZSgpe2lmKHRoaXMuc3Bhd25BYm9ydChFcnJvcihcIlF1ZXJ5IGNsb3NlZCBiZWZvcmUgc3Bhd25cIikpLHRoaXMucHJvY2Vzc1N0ZGluKXRoaXMucHJvY2Vzc1N0ZGluLmVuZCgpLHRoaXMucHJvY2Vzc1N0ZGluPXZvaWQgMDtpZih0aGlzLmFib3J0SGFuZGxlcil0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsdGhpcy5hYm9ydEhhbmRsZXIpLHRoaXMuYWJvcnRIYW5kbGVyPXZvaWQgMDtmb3IobGV0e2hhbmRsZXI6UX1vZiB0aGlzLmV4aXRMaXN0ZW5lcnMpdGhpcy5wcm9jZXNzPy5vZmYoXCJleGl0XCIsUSk7dGhpcy5leGl0TGlzdGVuZXJzPVtdO2xldCAkPXRoaXMucHJvY2VzcztpZigkJiYhJC5raWxsZWQmJiQuZXhpdENvZGU9PT1udWxsKXNldFRpbWVvdXQoKFEpPT57aWYoUS5raWxsZWR8fFEuZXhpdENvZGUhPT1udWxsKXJldHVybjtRLmtpbGwoXCJTSUdURVJNXCIpLHNldFRpbWVvdXQoKEopPT57aWYoSi5leGl0Q29kZT09PW51bGwpSi5raWxsKFwiU0lHS0lMTFwiKX0sNTAwMCxRKS51bnJlZigpfSx3eCwkKS51bnJlZigpLCQub25jZShcImV4aXRcIiwoKT0+RDUuZGVsZXRlKCQpKTtlbHNlIGlmKCQpRDUuZGVsZXRlKCQpO3RoaXMucmVhZHk9ITF9aXNSZWFkeSgpe3JldHVybiB0aGlzLnJlYWR5fWFzeW5jKnJlYWRNZXNzYWdlcygpe2lmKHRoaXMuc3Bhd25Qcm9taXNlKWF3YWl0IHRoaXMuc3Bhd25Qcm9taXNlLHRoaXMuc3Bhd25Qcm9taXNlPXZvaWQgMDtpZighdGhpcy5wcm9jZXNzU3Rkb3V0KXRocm93IEVycm9yKFwiUHJvY2Vzc1RyYW5zcG9ydCBvdXRwdXQgc3RyZWFtIG5vdCBhdmFpbGFibGVcIik7aWYodGhpcy5leGl0RXJyb3IpdGhyb3cgdGhpcy5leGl0RXJyb3I7bGV0ICQ9Tngoe2lucHV0OnRoaXMucHJvY2Vzc1N0ZG91dH0pLFE9dGhpcy5wcm9jZXNzPygoKT0+e2xldCBKPXRoaXMucHJvY2VzcyxZPSgpPT4kLmNsb3NlKCk7cmV0dXJuIEoub24oXCJlcnJvclwiLFkpLCgpPT5KLm9mZihcImVycm9yXCIsWSl9KSgpOnZvaWQgMDtpZih0aGlzLmV4aXRFcnJvcikkLmNsb3NlKCk7dHJ5e2ZvciBhd2FpdChsZXQgSiBvZiAkKWlmKEoudHJpbSgpKXtsZXQgWTt0cnl7WT1sJChKKX1jYXRjaChYKXtaNihgTm9uLUpTT04gc3Rkb3V0OiAke0p9YCk7Y29udGludWV9eWllbGQgWX1pZih0aGlzLmV4aXRFcnJvcil0aHJvdyB0aGlzLmV4aXRFcnJvcjthd2FpdCB0aGlzLndhaXRGb3JFeGl0KCl9Y2F0Y2goSil7dGhyb3cgSn1maW5hbGx5e1E/LigpLCQuY2xvc2UoKX19ZW5kSW5wdXQoKXtpZih0aGlzLnNwYXduUmVzb2x2ZSl7dGhpcy5wZW5kaW5nRW5kSW5wdXQ9ITA7cmV0dXJufWlmKHRoaXMucHJvY2Vzc1N0ZGluKXRoaXMucHJvY2Vzc1N0ZGluLmVuZCgpfWdldElucHV0U3RyZWFtKCl7cmV0dXJuIHRoaXMucHJvY2Vzc1N0ZGlufW9uRXhpdCgkKXtpZighdGhpcy5wcm9jZXNzKXJldHVybigpPT57fTtsZXQgUT0oSixZKT0+e2xldCBYPXRoaXMuZ2V0UHJvY2Vzc0V4aXRFcnJvcihKLFkpOyQoWCl9O3JldHVybiB0aGlzLnByb2Nlc3Mub24oXCJleGl0XCIsUSksdGhpcy5leGl0TGlzdGVuZXJzLnB1c2goe2NhbGxiYWNrOiQsaGFuZGxlcjpRfSksKCk9PntpZih0aGlzLnByb2Nlc3MpdGhpcy5wcm9jZXNzLm9mZihcImV4aXRcIixRKTtsZXQgSj10aGlzLmV4aXRMaXN0ZW5lcnMuZmluZEluZGV4KChZKT0+WS5oYW5kbGVyPT09USk7aWYoSiE9PS0xKXRoaXMuZXhpdExpc3RlbmVycy5zcGxpY2UoSiwxKX19YXN5bmMgd2FpdEZvckV4aXQoKXtpZighdGhpcy5wcm9jZXNzKXtpZih0aGlzLmV4aXRFcnJvcil0aHJvdyB0aGlzLmV4aXRFcnJvcjtyZXR1cm59aWYodGhpcy5wcm9jZXNzLmV4aXRDb2RlIT09bnVsbHx8dGhpcy5wcm9jZXNzLmtpbGxlZHx8dGhpcy5leGl0RXJyb3Ipe2lmKHRoaXMuZXhpdEVycm9yKXRocm93IHRoaXMuZXhpdEVycm9yO3JldHVybn1yZXR1cm4gbmV3IFByb21pc2UoKCQsUSk9PntsZXQgSj0oWCxXKT0+e2lmKHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXtRKG5ldyBxNihcIk9wZXJhdGlvbiBhYm9ydGVkXCIpKTtyZXR1cm59bGV0IEc9dGhpcy5nZXRQcm9jZXNzRXhpdEVycm9yKFgsVyk7aWYoRylRKEcpO2Vsc2UgJCgpfTt0aGlzLnByb2Nlc3Mub25jZShcImV4aXRcIixKKTtsZXQgWT0oWCk9Pnt0aGlzLnByb2Nlc3Mub2ZmKFwiZXhpdFwiLEopLFEoWCl9O3RoaXMucHJvY2Vzcy5vbmNlKFwiZXJyb3JcIixZKSx0aGlzLnByb2Nlc3Mub25jZShcImV4aXRcIiwoKT0+e3RoaXMucHJvY2Vzcy5vZmYoXCJlcnJvclwiLFkpfSl9KX19ZnVuY3Rpb24gRngoJCl7cmV0dXJuIVtcIi5qc1wiLFwiLm1qc1wiLFwiLnRzeFwiLFwiLnRzXCIsXCIuanN4XCJdLnNvbWUoKEopPT4kLmVuZHNXaXRoKEopKX1mdW5jdGlvbiBaeCgkLFEpe2lmKHp4KCQpKXJldHVybiBRP2BDbGF1ZGUgQ29kZSBuYXRpdmUgYmluYXJ5IGF0ICR7JH0gZXhpc3RzIGJ1dCBmYWlsZWQgdG8gbGF1bmNoLmA6YENsYXVkZSBDb2RlIGV4ZWN1dGFibGUgYXQgJHskfSBleGlzdHMgYnV0IGZhaWxlZCB0byBsYXVuY2guYDtyZXR1cm4gUT9gQ2xhdWRlIENvZGUgbmF0aXZlIGJpbmFyeSBub3QgZm91bmQgYXQgJHskfS4gUGxlYXNlIGVuc3VyZSBDbGF1ZGUgQ29kZSBpcyBpbnN0YWxsZWQgdmlhIG5hdGl2ZSBpbnN0YWxsZXIgb3Igc3BlY2lmeSBhIHZhbGlkIHBhdGggd2l0aCBvcHRpb25zLnBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlLmA6YENsYXVkZSBDb2RlIGV4ZWN1dGFibGUgbm90IGZvdW5kIGF0ICR7JH0uIElzIG9wdGlvbnMucGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGUgc2V0P2B9aW1wb3J0e2V4aXN0c1N5bmMgYXMgTXh9ZnJvbVwiZnNcIjt2YXIgdTc9XCJAYW50aHJvcGljLWFpL2NsYXVkZS1hZ2VudC1zZGtcIjtmdW5jdGlvbiBMeCgpe2lmKHByb2Nlc3MucGxhdGZvcm0hPT1cImxpbnV4XCIpcmV0dXJuITE7bGV0ICQ9dHlwZW9mIHByb2Nlc3MucmVwb3J0Py5nZXRSZXBvcnQ9PT1cImZ1bmN0aW9uXCI/cHJvY2Vzcy5yZXBvcnQuZ2V0UmVwb3J0KCk6bnVsbDtyZXR1cm4gJCE9bnVsbCYmJC5oZWFkZXI/LmdsaWJjVmVyc2lvblJ1bnRpbWU9PT12b2lkIDB9ZnVuY3Rpb24gRjUoJCxRPXByb2Nlc3MucGxhdGZvcm0sSj1wcm9jZXNzLmFyY2gsWT1NeCxYPUx4KCkpe2xldCBHPVE9PT1cIndpbjMyXCI/XCIuZXhlXCI6XCJcIixIPShRPT09XCJsaW51eFwiP1g/W2Ake3U3fS1saW51eC0ke0p9LW11c2xgLGAke3U3fS1saW51eC0ke0p9YF06W2Ake3U3fS1saW51eC0ke0p9YCxgJHt1N30tbGludXgtJHtKfS1tdXNsYF06W2Ake3U3fS0ke1F9LSR7Sn1gXSkubWFwKChxKT0+YCR7cX0vY2xhdWRlJHtHfWApO2ZvcihsZXQgcSBvZiBIKXRyeXtsZXQgVj0kKHEpO2lmKFkoVikpcmV0dXJuIFZ9Y2F0Y2h7fXJldHVybiBudWxsfWNsYXNzIHowe3JldHVybmVkO3F1ZXVlPVtdO3JlYWRSZXNvbHZlO3JlYWRSZWplY3Q7aXNEb25lPSExO2hhc0Vycm9yO3N0YXJ0ZWQ9ITE7Y29uc3RydWN0b3IoJCl7dGhpcy5yZXR1cm5lZD0kfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtpZih0aGlzLnN0YXJ0ZWQpdGhyb3cgRXJyb3IoXCJTdHJlYW0gY2FuIG9ubHkgYmUgaXRlcmF0ZWQgb25jZVwiKTtyZXR1cm4gdGhpcy5zdGFydGVkPSEwLHRoaXN9bmV4dCgpe2lmKHRoaXMucXVldWUubGVuZ3RoPjApcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZG9uZTohMSx2YWx1ZTp0aGlzLnF1ZXVlLnNoaWZ0KCl9KTtpZih0aGlzLmlzRG9uZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtkb25lOiEwLHZhbHVlOnZvaWQgMH0pO2lmKHRoaXMuaGFzRXJyb3IpcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuaGFzRXJyb3IpO3JldHVybiBuZXcgUHJvbWlzZSgoJCxRKT0+e3RoaXMucmVhZFJlc29sdmU9JCx0aGlzLnJlYWRSZWplY3Q9UX0pfWVucXVldWUoJCl7aWYodGhpcy5yZWFkUmVzb2x2ZSl7bGV0IFE9dGhpcy5yZWFkUmVzb2x2ZTt0aGlzLnJlYWRSZXNvbHZlPXZvaWQgMCx0aGlzLnJlYWRSZWplY3Q9dm9pZCAwLFEoe2RvbmU6ITEsdmFsdWU6JH0pfWVsc2UgdGhpcy5xdWV1ZS5wdXNoKCQpfWRvbmUoKXtpZih0aGlzLmlzRG9uZT0hMCx0aGlzLnJlYWRSZXNvbHZlKXtsZXQgJD10aGlzLnJlYWRSZXNvbHZlO3RoaXMucmVhZFJlc29sdmU9dm9pZCAwLHRoaXMucmVhZFJlamVjdD12b2lkIDAsJCh7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9KX19ZXJyb3IoJCl7aWYodGhpcy5oYXNFcnJvcj0kLHRoaXMucmVhZFJlamVjdCl7bGV0IFE9dGhpcy5yZWFkUmVqZWN0O3RoaXMucmVhZFJlc29sdmU9dm9pZCAwLHRoaXMucmVhZFJlamVjdD12b2lkIDAsUSgkKX19cmV0dXJuKCl7aWYodGhpcy5pc0RvbmU9ITAsdGhpcy5yZXR1cm5lZCl0aGlzLnJldHVybmVkKCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9KX19ZnVuY3Rpb24gangoKXtyZXR1cm57ZXZlbnRRdWV1ZTpbXSxzaW5rOm51bGx9fXZhciBBeD1qeCgpO2Z1bmN0aW9uIFo1KCQsUSl7bGV0IEo9QXg7aWYoSi5zaW5rPT09bnVsbCl7Si5ldmVudFF1ZXVlLnB1c2goe2V2ZW50TmFtZTokLG1ldGFkYXRhOlEsYXN5bmM6ITF9KTtyZXR1cm59Si5zaW5rLmxvZ0V2ZW50KCQsUSl9ZnVuY3Rpb24gbTcoJCl7WjUoXCJ0ZW5ndV9mZWF0dXJlX29rXCIse2ZlYXR1cmVfbmFtZTokfSl9ZnVuY3Rpb24gbDcoJCxRLEope1o1KFwidGVuZ3VfZmVhdHVyZV9iYWRcIix7ZmVhdHVyZV9uYW1lOiQsZXJyb3JfY29kZTpRLC4uLkp9KX1mdW5jdGlvbiBOMigkLFEpe1o1KFwidGVuZ3VfZmVhdHVyZV9zYWRcIix7ZmVhdHVyZV9uYW1lOiQsZXJyb3JfY29kZTpRfSl9YXN5bmMgZnVuY3Rpb24gUDQoJCxRLEope3RyeXtsZXQgWT1hd2FpdCBRKCk7cmV0dXJuIG03KCQpLFl9Y2F0Y2goWSl7dGhyb3cgbDcoJCxKPy4oWSk/P1wiZXJyb3JcIiksWX19Y2xhc3MgdlV7c2VuZE1jcE1lc3NhZ2U7aXNDbG9zZWQ9ITE7Y29uc3RydWN0b3IoJCl7dGhpcy5zZW5kTWNwTWVzc2FnZT0kfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7YXN5bmMgc3RhcnQoKXt9YXN5bmMgc2VuZCgkKXtpZih0aGlzLmlzQ2xvc2VkKXRocm93IEVycm9yKFwiVHJhbnNwb3J0IGlzIGNsb3NlZFwiKTt0aGlzLnNlbmRNY3BNZXNzYWdlKCQpfWFzeW5jIGNsb3NlKCl7aWYodGhpcy5pc0Nsb3NlZClyZXR1cm47dGhpcy5pc0Nsb3NlZD0hMCx0aGlzLm9uY2xvc2U/LigpfX1jbGFzcyBjN3t0cmFuc3BvcnQ7aXNTaW5nbGVVc2VyVHVybjtjYW5Vc2VUb29sO2hvb2tzO2Fib3J0Q29udHJvbGxlcjtqc29uU2NoZW1hO2luaXRDb25maWc7b25FbGljaXRhdGlvbjtnZXRPQXV0aFRva2VuO3BlbmRpbmdDb250cm9sUmVzcG9uc2VzPW5ldyBNYXA7Y2xlYW51cFBlcmZvcm1lZD0hMTtzZGtNZXNzYWdlcztpbnB1dFN0cmVhbT1uZXcgejA7aW5pdGlhbGl6YXRpb247Y2FuY2VsQ29udHJvbGxlcnM9bmV3IE1hcDtob29rQ2FsbGJhY2tzPW5ldyBNYXA7bmV4dENhbGxiYWNrSWQ9MDtzZGtNY3BUcmFuc3BvcnRzPW5ldyBNYXA7c2RrTWNwU2VydmVySW5zdGFuY2VzPW5ldyBNYXA7cGVuZGluZ01jcFJlc3BvbnNlcz1uZXcgTWFwO2ZpcnN0UmVzdWx0UmVjZWl2ZWRSZXNvbHZlO2ZpcnN0UmVzdWx0UmVjZWl2ZWQ9ITE7bGFzdEVycm9yUmVzdWx0VGV4dDt0cmFuc2NyaXB0TWlycm9yQmF0Y2hlcjtjbGVhbnVwQ2FsbGJhY2tzPVtdO2NsZWFudXBQcm9taXNlO3NldElzU2luZ2xlVXNlclR1cm4oJCl7dGhpcy5pc1NpbmdsZVVzZXJUdXJuPSR9c2V0VHJhbnNjcmlwdE1pcnJvckJhdGNoZXIoJCl7dGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlcj0kfXJlcG9ydE1pcnJvckVycm9yKCQsUSl7bGV0IEo9e3R5cGU6XCJzeXN0ZW1cIixzdWJ0eXBlOlwibWlycm9yX2Vycm9yXCIsZXJyb3I6USxrZXk6JCx1dWlkOng3KCksc2Vzc2lvbl9pZDokLnNlc3Npb25JZH07dGhpcy5pbnB1dFN0cmVhbS5lbnF1ZXVlKEopfWFkZENsZWFudXBDYWxsYmFjaygkKXtpZih0aGlzLmNsZWFudXBQZXJmb3JtZWQpJCgpO2Vsc2UgdGhpcy5jbGVhbnVwQ2FsbGJhY2tzLnB1c2goJCl9aXNDbG9zZWQoKXtyZXR1cm4gdGhpcy5jbGVhbnVwUGVyZm9ybWVkfWhhc0JpZGlyZWN0aW9uYWxOZWVkcygpe3JldHVybiB0aGlzLnNka01jcFRyYW5zcG9ydHMuc2l6ZT4wfHx0aGlzLmhvb2tzIT09dm9pZCAwJiZPYmplY3Qua2V5cyh0aGlzLmhvb2tzKS5sZW5ndGg+MHx8dGhpcy5jYW5Vc2VUb29sIT09dm9pZCAwfHx0aGlzLm9uRWxpY2l0YXRpb24hPT12b2lkIDB8fHRoaXMuZ2V0T0F1dGhUb2tlbiE9PXZvaWQgMH1jb25zdHJ1Y3RvcigkLFEsSixZLFgsVz1uZXcgTWFwLEcsVSxILHEpe3RoaXMudHJhbnNwb3J0PSQ7dGhpcy5pc1NpbmdsZVVzZXJUdXJuPVE7dGhpcy5jYW5Vc2VUb29sPUo7dGhpcy5ob29rcz1ZO3RoaXMuYWJvcnRDb250cm9sbGVyPVg7dGhpcy5qc29uU2NoZW1hPUc7dGhpcy5pbml0Q29uZmlnPVU7dGhpcy5vbkVsaWNpdGF0aW9uPUg7dGhpcy5nZXRPQXV0aFRva2VuPXE7Zm9yKGxldFtWLEJdb2YgVyl0aGlzLmNvbm5lY3RTZGtNY3BTZXJ2ZXIoVixCKTt0aGlzLnNka01lc3NhZ2VzPXRoaXMucmVhZFNka01lc3NhZ2VzKCksdGhpcy5yZWFkTWVzc2FnZXMoKSx0aGlzLmluaXRpYWxpemF0aW9uPXRoaXMuaW5pdGlhbGl6ZSgpLHRoaXMuaW5pdGlhbGl6YXRpb24uY2F0Y2goKCk9Pnt9KX1zZXRFcnJvcigkKXt0aGlzLmlucHV0U3RyZWFtLmVycm9yKCQpfWFzeW5jIHN0b3BUYXNrKCQpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInN0b3BfdGFza1wiLHRhc2tfaWQ6JH0pfWFzeW5jIGJhY2tncm91bmRUYXNrcygkKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiYmFja2dyb3VuZF90YXNrc1wiLHRvb2xfdXNlX2lkOiR9KSkucmVzcG9uc2UuYmFja2dyb3VuZGVkPz8hMH1jbG9zZSgpe3RoaXMuY2xlYW51cCgpfWNsZWFudXAoJCl7aWYodGhpcy5jbGVhbnVwUHJvbWlzZSlyZXR1cm4gdGhpcy5jbGVhbnVwUHJvbWlzZTtyZXR1cm4gdGhpcy5jbGVhbnVwUGVyZm9ybWVkPSEwLHRoaXMuY2xlYW51cFByb21pc2U9dGhpcy5wZXJmb3JtQ2xlYW51cCgkKSx0aGlzLmNsZWFudXBQcm9taXNlfWFzeW5jIHBlcmZvcm1DbGVhbnVwKCQpe2ZvcihsZXQgUSBvZiB0aGlzLmNsZWFudXBDYWxsYmFja3MpdHJ5e1EoKX1jYXRjaHt9aWYodGhpcy5jbGVhbnVwQ2FsbGJhY2tzPVtdLHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIpdHJ5e2F3YWl0IHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIuZmx1c2goKX1jYXRjaHt9dHJ5e2ZvcihsZXQgSiBvZiB0aGlzLmNhbmNlbENvbnRyb2xsZXJzLnZhbHVlcygpKUouYWJvcnQoKTt0aGlzLmNhbmNlbENvbnRyb2xsZXJzLmNsZWFyKCksdGhpcy50cmFuc3BvcnQuY2xvc2UoKTtsZXQgUT0kPz9FcnJvcihcIlF1ZXJ5IGNsb3NlZCBiZWZvcmUgcmVzcG9uc2UgcmVjZWl2ZWRcIik7Zm9yKGxldHtyZWplY3Q6Sn1vZiB0aGlzLnBlbmRpbmdDb250cm9sUmVzcG9uc2VzLnZhbHVlcygpKUooUSk7dGhpcy5wZW5kaW5nQ29udHJvbFJlc3BvbnNlcy5jbGVhcigpO2ZvcihsZXR7cmVqZWN0Okp9b2YgdGhpcy5wZW5kaW5nTWNwUmVzcG9uc2VzLnZhbHVlcygpKUooUSk7dGhpcy5wZW5kaW5nTWNwUmVzcG9uc2VzLmNsZWFyKCksdGhpcy5ob29rQ2FsbGJhY2tzLmNsZWFyKCk7Zm9yKGxldCBKIG9mIHRoaXMuc2RrTWNwVHJhbnNwb3J0cy52YWx1ZXMoKSlKLmNsb3NlKCkuY2F0Y2goKCk9Pnt9KTtpZih0aGlzLnNka01jcFRyYW5zcG9ydHMuY2xlYXIoKSwkKXRoaXMuaW5wdXRTdHJlYW0uZXJyb3IoJCk7ZWxzZSB0aGlzLmlucHV0U3RyZWFtLmRvbmUoKX1jYXRjaChRKXt9fW5leHQoLi4uWyRdKXtyZXR1cm4gdGhpcy5zZGtNZXNzYWdlcy5uZXh0KC4uLlskXSl9YXN5bmMgcmV0dXJuKCQpe3JldHVybiBhd2FpdCB0aGlzLmNsZWFudXAoKSx0aGlzLnNka01lc3NhZ2VzLnJldHVybigkKX1hc3luYyB0aHJvdygkKXtyZXR1cm4gYXdhaXQgdGhpcy5jbGVhbnVwKCksdGhpcy5zZGtNZXNzYWdlcy50aHJvdygkKX1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuc2RrTWVzc2FnZXN9YXN5bmNbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKXthd2FpdCB0aGlzLmNsZWFudXAoKX1hc3luYyByZWFkTWVzc2FnZXMoKXt0cnl7Zm9yIGF3YWl0KGxldCAkIG9mIHRoaXMudHJhbnNwb3J0LnJlYWRNZXNzYWdlcygpKXtpZigkLnR5cGU9PT1cImNvbnRyb2xfcmVzcG9uc2VcIil7bGV0IFE9dGhpcy5wZW5kaW5nQ29udHJvbFJlc3BvbnNlcy5nZXQoJC5yZXNwb25zZS5yZXF1ZXN0X2lkKTtpZihRKVEuaGFuZGxlcigkLnJlc3BvbnNlKTtjb250aW51ZX1lbHNlIGlmKCQudHlwZT09PVwiY29udHJvbF9yZXF1ZXN0XCIpe3RoaXMuaGFuZGxlQ29udHJvbFJlcXVlc3QoJCk7Y29udGludWV9ZWxzZSBpZigkLnR5cGU9PT1cImNvbnRyb2xfY2FuY2VsX3JlcXVlc3RcIil7dGhpcy5oYW5kbGVDb250cm9sQ2FuY2VsUmVxdWVzdCgkKTtjb250aW51ZX1lbHNlIGlmKCQudHlwZT09PVwia2VlcF9hbGl2ZVwiKWNvbnRpbnVlO2Vsc2UgaWYoJC50eXBlPT09XCJ0cmFuc2NyaXB0X21pcnJvclwiKXt0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyPy5lbnF1ZXVlKCQuZmlsZVBhdGgsJC5lbnRyaWVzKTtjb250aW51ZX1pZigkLnR5cGU9PT1cInN5c3RlbVwiJiYoJC5zdWJ0eXBlPT09XCJwb3N0X3R1cm5fc3VtbWFyeVwifHwkLnN1YnR5cGU9PT1cInRhc2tfc3VtbWFyeVwiKSl7dGhpcy5pbnB1dFN0cmVhbS5lbnF1ZXVlKCQpO2NvbnRpbnVlfWlmKCQudHlwZT09PVwicmVzdWx0XCIpe2lmKHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIpYXdhaXQgdGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlci5mbHVzaCgpO2lmKHRoaXMubGFzdEVycm9yUmVzdWx0VGV4dD0kLmlzX2Vycm9yPyQuc3VidHlwZT09PVwic3VjY2Vzc1wiPyQucmVzdWx0OiQuZXJyb3JzLmpvaW4oXCI7IFwiKTp2b2lkIDAsdGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkPSEwLHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZFJlc29sdmUpdGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZSgpO2lmKHRoaXMuaXNTaW5nbGVVc2VyVHVybilYJChcIltRdWVyeS5yZWFkTWVzc2FnZXNdIEZpcnN0IHJlc3VsdCByZWNlaXZlZCBmb3Igc2luZ2xlLXR1cm4gcXVlcnksIGNsb3Npbmcgc3RkaW5cIiksdGhpcy50cmFuc3BvcnQuZW5kSW5wdXQoKX1lbHNlIGlmKCEoJC50eXBlPT09XCJzeXN0ZW1cIiYmJC5zdWJ0eXBlPT09XCJzZXNzaW9uX3N0YXRlX2NoYW5nZWRcIikpdGhpcy5sYXN0RXJyb3JSZXN1bHRUZXh0PXZvaWQgMDt0aGlzLmlucHV0U3RyZWFtLmVucXVldWUoJCl9aWYodGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlcilhd2FpdCB0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyLmZsdXNoKCk7aWYodGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZSl0aGlzLmZpcnN0UmVzdWx0UmVjZWl2ZWRSZXNvbHZlKCk7dGhpcy5pbnB1dFN0cmVhbS5kb25lKCksdGhpcy5jbGVhbnVwKCl9Y2F0Y2goJCl7aWYodGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlcilhd2FpdCB0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyLmZsdXNoKCk7aWYodGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZSl0aGlzLmZpcnN0UmVzdWx0UmVjZWl2ZWRSZXNvbHZlKCk7aWYodGhpcy5sYXN0RXJyb3JSZXN1bHRUZXh0IT09dm9pZCAwJiYhKCQgaW5zdGFuY2VvZiBxNikpe2xldCBRPUVycm9yKGBDbGF1ZGUgQ29kZSByZXR1cm5lZCBhbiBlcnJvciByZXN1bHQ6ICR7dGhpcy5sYXN0RXJyb3JSZXN1bHRUZXh0fWApO1gkKGBbUXVlcnkucmVhZE1lc3NhZ2VzXSBSZXBsYWNpbmcgZXhpdCBlcnJvciB3aXRoIHJlc3VsdCB0ZXh0LiBPcmlnaW5hbDogJHtaOCgkKX1gKSx0aGlzLmlucHV0U3RyZWFtLmVycm9yKFEpLHRoaXMuY2xlYW51cChRKTtyZXR1cm59dGhpcy5pbnB1dFN0cmVhbS5lcnJvcigkKSx0aGlzLmNsZWFudXAoJCl9fWFzeW5jIGhhbmRsZUNvbnRyb2xSZXF1ZXN0KCQpe2xldCBRPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5jYW5jZWxDb250cm9sbGVycy5zZXQoJC5yZXF1ZXN0X2lkLFEpO3RyeXtsZXQgSj1hd2FpdCB0aGlzLnByb2Nlc3NDb250cm9sUmVxdWVzdCgkLFEuc2lnbmFsKTtpZih0aGlzLmNsZWFudXBQZXJmb3JtZWQpcmV0dXJuO2xldCBZPXt0eXBlOlwiY29udHJvbF9yZXNwb25zZVwiLHJlc3BvbnNlOntzdWJ0eXBlOlwic3VjY2Vzc1wiLHJlcXVlc3RfaWQ6JC5yZXF1ZXN0X2lkLHJlc3BvbnNlOkp9fTthd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc3BvcnQud3JpdGUoQiQoWSkrYFxuYCkpfWNhdGNoKEope2lmKHRoaXMuY2xlYW51cFBlcmZvcm1lZClyZXR1cm47bGV0IFk9e3R5cGU6XCJjb250cm9sX3Jlc3BvbnNlXCIscmVzcG9uc2U6e3N1YnR5cGU6XCJlcnJvclwiLHJlcXVlc3RfaWQ6JC5yZXF1ZXN0X2lkLGVycm9yOlo4KEopfX07dHJ5e2F3YWl0IFByb21pc2UucmVzb2x2ZSh0aGlzLnRyYW5zcG9ydC53cml0ZShCJChZKStgXG5gKSl9Y2F0Y2goWCl7WCQoYFtRdWVyeS5oYW5kbGVDb250cm9sUmVxdWVzdF0gRXJyb3ItcmVzcG9uc2Ugd3JpdGUgZmFpbGVkOiAke1o4KFgpfWAse2xldmVsOlwiZXJyb3JcIn0pfX1maW5hbGx5e3RoaXMuY2FuY2VsQ29udHJvbGxlcnMuZGVsZXRlKCQucmVxdWVzdF9pZCl9fWhhbmRsZUNvbnRyb2xDYW5jZWxSZXF1ZXN0KCQpe2xldCBRPXRoaXMuY2FuY2VsQ29udHJvbGxlcnMuZ2V0KCQucmVxdWVzdF9pZCk7aWYoUSlRLmFib3J0KCksdGhpcy5jYW5jZWxDb250cm9sbGVycy5kZWxldGUoJC5yZXF1ZXN0X2lkKX1hc3luYyBwcm9jZXNzQ29udHJvbFJlcXVlc3QoJCxRKXtpZigkLnJlcXVlc3Quc3VidHlwZT09PVwiY2FuX3VzZV90b29sXCIpe2lmKCF0aGlzLmNhblVzZVRvb2wpdGhyb3cgRXJyb3IoXCJjYW5Vc2VUb29sIGNhbGxiYWNrIGlzIG5vdCBwcm92aWRlZC5cIik7cmV0dXJuey4uLmF3YWl0IHRoaXMuY2FuVXNlVG9vbCgkLnJlcXVlc3QudG9vbF9uYW1lLCQucmVxdWVzdC5pbnB1dCx7c2lnbmFsOlEsc3VnZ2VzdGlvbnM6JC5yZXF1ZXN0LnBlcm1pc3Npb25fc3VnZ2VzdGlvbnMsYmxvY2tlZFBhdGg6JC5yZXF1ZXN0LmJsb2NrZWRfcGF0aCxkZWNpc2lvblJlYXNvbjokLnJlcXVlc3QuZGVjaXNpb25fcmVhc29uLHRpdGxlOiQucmVxdWVzdC50aXRsZSxkaXNwbGF5TmFtZTokLnJlcXVlc3QuZGlzcGxheV9uYW1lLGRlc2NyaXB0aW9uOiQucmVxdWVzdC5kZXNjcmlwdGlvbix0b29sVXNlSUQ6JC5yZXF1ZXN0LnRvb2xfdXNlX2lkLGFnZW50SUQ6JC5yZXF1ZXN0LmFnZW50X2lkfSksdG9vbFVzZUlEOiQucmVxdWVzdC50b29sX3VzZV9pZH19ZWxzZSBpZigkLnJlcXVlc3Quc3VidHlwZT09PVwiaG9va19jYWxsYmFja1wiKXJldHVybiBhd2FpdCB0aGlzLmhhbmRsZUhvb2tDYWxsYmFja3MoJC5yZXF1ZXN0LmNhbGxiYWNrX2lkLCQucmVxdWVzdC5pbnB1dCwkLnJlcXVlc3QudG9vbF91c2VfaWQsUSk7ZWxzZSBpZigkLnJlcXVlc3Quc3VidHlwZT09PVwibWNwX21lc3NhZ2VcIil7bGV0IEo9JC5yZXF1ZXN0LFk9dGhpcy5zZGtNY3BUcmFuc3BvcnRzLmdldChKLnNlcnZlcl9uYW1lKTtpZighWSl0aHJvdyBFcnJvcihgU0RLIE1DUCBzZXJ2ZXIgbm90IGZvdW5kOiAke0ouc2VydmVyX25hbWV9YCk7aWYoXCJtZXRob2RcImluIEoubWVzc2FnZSYmXCJpZFwiaW4gSi5tZXNzYWdlJiZKLm1lc3NhZ2UuaWQhPT1udWxsKXJldHVybnttY3BfcmVzcG9uc2U6YXdhaXQgdGhpcy5oYW5kbGVNY3BDb250cm9sUmVxdWVzdChKLnNlcnZlcl9uYW1lLEosWSl9O2Vsc2V7aWYoWS5vbm1lc3NhZ2UpWS5vbm1lc3NhZ2UoSi5tZXNzYWdlKTtyZXR1cm57bWNwX3Jlc3BvbnNlOntqc29ucnBjOlwiMi4wXCIscmVzdWx0Ont9LGlkOjB9fX19ZWxzZSBpZigkLnJlcXVlc3Quc3VidHlwZT09PVwiZWxpY2l0YXRpb25cIil7bGV0IEo9JC5yZXF1ZXN0O2lmKHRoaXMub25FbGljaXRhdGlvbilyZXR1cm4gYXdhaXQgdGhpcy5vbkVsaWNpdGF0aW9uKHtzZXJ2ZXJOYW1lOkoubWNwX3NlcnZlcl9uYW1lLG1lc3NhZ2U6Si5tZXNzYWdlLG1vZGU6Si5tb2RlLHVybDpKLnVybCxlbGljaXRhdGlvbklkOkouZWxpY2l0YXRpb25faWQscmVxdWVzdGVkU2NoZW1hOkoucmVxdWVzdGVkX3NjaGVtYSx0aXRsZTpKLnRpdGxlLGRpc3BsYXlOYW1lOkouZGlzcGxheV9uYW1lLGRlc2NyaXB0aW9uOkouZGVzY3JpcHRpb259LHtzaWduYWw6UX0pO3JldHVybnthY3Rpb246XCJkZWNsaW5lXCJ9fWVsc2UgaWYoJC5yZXF1ZXN0LnN1YnR5cGU9PT1cIm9hdXRoX3Rva2VuX3JlZnJlc2hcIil7aWYoIXRoaXMuZ2V0T0F1dGhUb2tlbil0aHJvdyBFcnJvcihcImdldE9BdXRoVG9rZW4gY2FsbGJhY2sgaXMgbm90IHByb3ZpZGVkLlwiKTtyZXR1cm57YWNjZXNzVG9rZW46YXdhaXQgdGhpcy5nZXRPQXV0aFRva2VuKHtzaWduYWw6UX0pPz9udWxsfX10aHJvdyBFcnJvcihcIlVuc3VwcG9ydGVkIGNvbnRyb2wgcmVxdWVzdCBzdWJ0eXBlOiBcIiskLnJlcXVlc3Quc3VidHlwZSl9YXN5bmMqcmVhZFNka01lc3NhZ2VzKCl7dHJ5e2ZvciBhd2FpdChsZXQgJCBvZiB0aGlzLmlucHV0U3RyZWFtKXlpZWxkICR9ZmluYWxseXthd2FpdCB0aGlzLmNsZWFudXAoKX19YXN5bmMgaW5pdGlhbGl6ZSgpe2xldCAkO2lmKHRoaXMuaG9va3MpeyQ9e307Zm9yKGxldFtYLFddb2YgT2JqZWN0LmVudHJpZXModGhpcy5ob29rcykpaWYoVy5sZW5ndGg+MCkkW1hdPVcubWFwKChHKT0+e2xldCBVPVtdO2ZvcihsZXQgSCBvZiBHLmhvb2tzKXtsZXQgcT1gaG9va18ke3RoaXMubmV4dENhbGxiYWNrSWQrK31gO3RoaXMuaG9va0NhbGxiYWNrcy5zZXQocSxIKSxVLnB1c2gocSl9cmV0dXJue21hdGNoZXI6Ry5tYXRjaGVyLGhvb2tDYWxsYmFja0lkczpVLHRpbWVvdXQ6Ry50aW1lb3V0fX0pfWxldCBRPXRoaXMuc2RrTWNwVHJhbnNwb3J0cy5zaXplPjA/QXJyYXkuZnJvbSh0aGlzLnNka01jcFRyYW5zcG9ydHMua2V5cygpKTp2b2lkIDAsSj17c3VidHlwZTpcImluaXRpYWxpemVcIixob29rczokLHNka01jcFNlcnZlcnM6USxqc29uU2NoZW1hOnRoaXMuanNvblNjaGVtYSxzeXN0ZW1Qcm9tcHQ6dHlwZW9mIHRoaXMuaW5pdENvbmZpZz8uc3lzdGVtUHJvbXB0PT09XCJzdHJpbmdcIj9bdGhpcy5pbml0Q29uZmlnLnN5c3RlbVByb21wdF06dGhpcy5pbml0Q29uZmlnPy5zeXN0ZW1Qcm9tcHQsYXBwZW5kU3lzdGVtUHJvbXB0OnRoaXMuaW5pdENvbmZpZz8uYXBwZW5kU3lzdGVtUHJvbXB0LHBsYW5Nb2RlSW5zdHJ1Y3Rpb25zOnRoaXMuaW5pdENvbmZpZz8ucGxhbk1vZGVJbnN0cnVjdGlvbnMsYXBwZW5kU3ViYWdlbnRTeXN0ZW1Qcm9tcHQ6dGhpcy5pbml0Q29uZmlnPy5hcHBlbmRTdWJhZ2VudFN5c3RlbVByb21wdCxleGNsdWRlRHluYW1pY1NlY3Rpb25zOnRoaXMuaW5pdENvbmZpZz8uZXhjbHVkZUR5bmFtaWNTZWN0aW9ucyxhZ2VudHM6dGhpcy5pbml0Q29uZmlnPy5hZ2VudHMsdGl0bGU6dGhpcy5pbml0Q29uZmlnPy50aXRsZSxza2lsbHM6QXJyYXkuaXNBcnJheSh0aGlzLmluaXRDb25maWc/LnNraWxscyk/dGhpcy5pbml0Q29uZmlnLnNraWxsczp2b2lkIDAsd2ViU2VhcmNoSXNvbGF0aW9uRXhlbXB0TWNwU2VydmVyczp0aGlzLmluaXRDb25maWc/LndlYlNlYXJjaElzb2xhdGlvbkV4ZW1wdE1jcFNlcnZlcnMscHJvbXB0U3VnZ2VzdGlvbnM6dGhpcy5pbml0Q29uZmlnPy5wcm9tcHRTdWdnZXN0aW9ucyxhZ2VudFByb2dyZXNzU3VtbWFyaWVzOnRoaXMuaW5pdENvbmZpZz8uYWdlbnRQcm9ncmVzc1N1bW1hcmllcyxmb3J3YXJkU3ViYWdlbnRUZXh0OnRoaXMuaW5pdENvbmZpZz8uZm9yd2FyZFN1YmFnZW50VGV4dH07cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdChKKSkucmVzcG9uc2V9YXN5bmMgaW50ZXJydXB0KCl7cmV0dXJuIFA0KFwic2RrX2ludGVycnVwdFwiLGFzeW5jKCk9Pnthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJpbnRlcnJ1cHRcIn0pfSl9YXN5bmMgc2V0UGVybWlzc2lvbk1vZGUoJCl7YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwic2V0X3Blcm1pc3Npb25fbW9kZVwiLG1vZGU6JH0pfWFzeW5jIHNldE1vZGVsKCQpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInNldF9tb2RlbFwiLG1vZGVsOiR9KX1hc3luYyBzZXRNYXhUaGlua2luZ1Rva2VucygkKXthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJzZXRfbWF4X3RoaW5raW5nX3Rva2Vuc1wiLG1heF90aGlua2luZ190b2tlbnM6JH0pfWFzeW5jIGFwcGx5RmxhZ1NldHRpbmdzKCQpe3JldHVybiBQNChcInNka19hcHBseV9mbGFnX3NldHRpbmdzXCIsYXN5bmMoKT0+e2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcImFwcGx5X2ZsYWdfc2V0dGluZ3NcIixzZXR0aW5nczokfSl9KX1hc3luYyBnZXRTZXR0aW5ncygpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJnZXRfc2V0dGluZ3NcIn0pKS5yZXNwb25zZX1hc3luYyByZXdpbmRGaWxlcygkLFEpe3JldHVybiBQNChcInNka19yZXdpbmRfZmlsZXNcIixhc3luYygpPT57cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInJld2luZF9maWxlc1wiLHVzZXJfbWVzc2FnZV9pZDokLGRyeV9ydW46UT8uZHJ5UnVufSkpLnJlc3BvbnNlfSl9YXN5bmMgY2FuY2VsQXN5bmNNZXNzYWdlKCQpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJjYW5jZWxfYXN5bmNfbWVzc2FnZVwiLG1lc3NhZ2VfdXVpZDokfSkpLnJlc3BvbnNlLmNhbmNlbGxlZH1hc3luYyBzZWVkUmVhZFN0YXRlKCQsUSl7YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwic2VlZF9yZWFkX3N0YXRlXCIscGF0aDokLG10aW1lOlF9KX1hc3luYyBlbmFibGVSZW1vdGVDb250cm9sKCQsUSl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInJlbW90ZV9jb250cm9sXCIsZW5hYmxlZDokLC4uLlEhPT12b2lkIDAmJntuYW1lOlF9fSkpLnJlc3BvbnNlfWFzeW5jIHN1Ym1pdEZlZWRiYWNrKCQsUSl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInN1Ym1pdF9mZWVkYmFja1wiLGRlc2NyaXB0aW9uOiQsc3VyZmFjZTpRPy5zdXJmYWNlfSkpLnJlc3BvbnNlfWFzeW5jIGdlbmVyYXRlU2Vzc2lvblRpdGxlKCQsUSl7cmV0dXJuIFA0KFwic2RrX3Nlc3Npb25fdGl0bGVfZ2VuZXJhdGVcIixhc3luYygpPT57cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcImdlbmVyYXRlX3Nlc3Npb25fdGl0bGVcIixkZXNjcmlwdGlvbjokLHBlcnNpc3Q6UT8ucGVyc2lzdH0pKS5yZXNwb25zZS50aXRsZX0pfWFzeW5jIGFza1NpZGVRdWVzdGlvbigkKXtyZXR1cm4gUDQoXCJzZGtfc2lkZV9xdWVzdGlvblwiLGFzeW5jKCk9PntsZXQgSj0oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwic2lkZV9xdWVzdGlvblwiLHF1ZXN0aW9uOiR9KSkucmVzcG9uc2U7cmV0dXJuIEoucmVzcG9uc2U9PT1udWxsP251bGw6e3Jlc3BvbnNlOkoucmVzcG9uc2Usc3ludGhldGljOkouc3ludGhldGljPz8hMX19KX1hc3luYyBsYXVuY2hVbHRyYXJldmlldygkLFEpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJ1bHRyYXJldmlld19sYXVuY2hcIixhcmdzOiQsY29uZmlybTpRPy5jb25maXJtPz8hMX0pKS5yZXNwb25zZX1hc3luYyBtZXNzYWdlUmF0ZWQoJCl7YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwibWVzc2FnZV9yYXRlZFwiLG1lc3NhZ2VVdWlkOiQubWVzc2FnZVV1aWQsc2VudGltZW50OiQuc2VudGltZW50LHN1cmZhY2U6JC5zdXJmYWNlLGNsZWFyZWQ6JC5jbGVhcmVkPz8hMX0pfXByb2Nlc3NQZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKCQpe2ZvcihsZXQgUSBvZiAkKWlmKFEucmVxdWVzdC5zdWJ0eXBlPT09XCJjYW5fdXNlX3Rvb2xcIil0aGlzLmhhbmRsZUNvbnRyb2xSZXF1ZXN0KFEpLmNhdGNoKCgpPT57fSl9cmVxdWVzdCgkKXtsZXQgUT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwxNSksSj17cmVxdWVzdF9pZDpRLHR5cGU6XCJjb250cm9sX3JlcXVlc3RcIixyZXF1ZXN0OiR9O3JldHVybiBuZXcgUHJvbWlzZSgoWSxYKT0+e3RoaXMucGVuZGluZ0NvbnRyb2xSZXNwb25zZXMuc2V0KFEse2hhbmRsZXI6KFcpPT57aWYodGhpcy5wZW5kaW5nQ29udHJvbFJlc3BvbnNlcy5kZWxldGUoUSksVy5zdWJ0eXBlPT09XCJzdWNjZXNzXCIpWShXKTtlbHNlIGlmKFgoRXJyb3IoVy5lcnJvcikpLFcucGVuZGluZ19wZXJtaXNzaW9uX3JlcXVlc3RzKXRoaXMucHJvY2Vzc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoVy5wZW5kaW5nX3Blcm1pc3Npb25fcmVxdWVzdHMpfSxyZWplY3Q6WH0pLFByb21pc2UucmVzb2x2ZSh0aGlzLnRyYW5zcG9ydC53cml0ZShCJChKKStgXG5gKSkuY2F0Y2goKFcpPT57dGhpcy5wZW5kaW5nQ29udHJvbFJlc3BvbnNlcy5kZWxldGUoUSksWChXKX0pfSl9aW5pdGlhbGl6YXRpb25SZXN1bHQoKXtyZXR1cm4gdGhpcy5pbml0aWFsaXphdGlvbn1hc3luYyBzdXBwb3J0ZWRDb21tYW5kcygpe3JldHVybihhd2FpdCB0aGlzLmluaXRpYWxpemF0aW9uKS5jb21tYW5kc31hc3luYyBzdXBwb3J0ZWRNb2RlbHMoKXtyZXR1cm4oYXdhaXQgdGhpcy5pbml0aWFsaXphdGlvbikubW9kZWxzfWFzeW5jIHN1cHBvcnRlZEFnZW50cygpe3JldHVybihhd2FpdCB0aGlzLmluaXRpYWxpemF0aW9uKS5hZ2VudHN9YXN5bmMgcmVjb25uZWN0TWNwU2VydmVyKCQpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF9yZWNvbm5lY3RcIixzZXJ2ZXJOYW1lOiR9KX1hc3luYyB0b2dnbGVNY3BTZXJ2ZXIoJCxRKXtyZXR1cm4gUDQoXCJzZGtfbWNwX3RvZ2dsZV9zZXJ2ZXJcIixhc3luYygpPT57YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwibWNwX3RvZ2dsZVwiLHNlcnZlck5hbWU6JCxlbmFibGVkOlF9KX0pfWFzeW5jIGVuYWJsZUNoYW5uZWwoJCl7cmV0dXJuIFA0KFwic2RrX21jcF9lbmFibGVfY2hhbm5lbFwiLGFzeW5jKCk9Pnthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJjaGFubmVsX2VuYWJsZVwiLHNlcnZlck5hbWU6JH0pfSl9YXN5bmMgbWNwQXV0aGVudGljYXRlKCQsUSl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF9hdXRoZW50aWNhdGVcIixzZXJ2ZXJOYW1lOiQscmVkaXJlY3RVcmk6UX0pKS5yZXNwb25zZX1hc3luYyBtY3BDbGVhckF1dGgoJCl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF9jbGVhcl9hdXRoXCIsc2VydmVyTmFtZTokfSkpLnJlc3BvbnNlfWFzeW5jIG1jcFN1Ym1pdE9BdXRoQ2FsbGJhY2tVcmwoJCxRKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwibWNwX29hdXRoX2NhbGxiYWNrX3VybFwiLHNlcnZlck5hbWU6JCxjYWxsYmFja1VybDpRfSkpLnJlc3BvbnNlfWFzeW5jIGNsYXVkZUF1dGhlbnRpY2F0ZSgkKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiY2xhdWRlX2F1dGhlbnRpY2F0ZVwiLGxvZ2luV2l0aENsYXVkZUFpOiR9KSkucmVzcG9uc2V9YXN5bmMgY2xhdWRlT0F1dGhDYWxsYmFjaygkLFEpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJjbGF1ZGVfb2F1dGhfY2FsbGJhY2tcIixhdXRob3JpemF0aW9uQ29kZTokLHN0YXRlOlF9KSkucmVzcG9uc2V9YXN5bmMgY2xhdWRlT0F1dGhXYWl0Rm9yQ29tcGxldGlvbigpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJjbGF1ZGVfb2F1dGhfd2FpdF9mb3JfY29tcGxldGlvblwifSkpLnJlc3BvbnNlfWFzeW5jIG1jcFNlcnZlclN0YXR1cygpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJtY3Bfc3RhdHVzXCJ9KSkucmVzcG9uc2UubWNwU2VydmVyc31hc3luYyBnZXRDb250ZXh0VXNhZ2UoKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiZ2V0X2NvbnRleHRfdXNhZ2VcIn0pKS5yZXNwb25zZX1hc3luYyByZWFkRmlsZSgkLFEpe3RyeXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwicmVhZF9maWxlXCIscGF0aDokLG1heF9ieXRlczpRPy5tYXhCeXRlcyxlbmNvZGluZzpRPy5lbmNvZGluZ30pKS5yZXNwb25zZX1jYXRjaHtyZXR1cm4gbnVsbH19YXN5bmMgcmVsb2FkUGx1Z2lucygpe3JldHVybiBQNChcInNka19yZWxvYWRfcGx1Z2luc1wiLGFzeW5jKCk9PntyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwicmVsb2FkX3BsdWdpbnNcIn0pKS5yZXNwb25zZX0pfWFzeW5jIHNldE1jcFNlcnZlcnMoJCl7cmV0dXJuIFA0KFwic2RrX21jcF9zZXRfc2VydmVyc1wiLGFzeW5jKCk9PntsZXQgUT17fSxKPXt9O2ZvcihsZXRbVSxIXW9mIE9iamVjdC5lbnRyaWVzKCQpKWlmKEgudHlwZT09PVwic2RrXCImJlwiaW5zdGFuY2VcImluIEgpUVtVXT1ILmluc3RhbmNlO2Vsc2UgSltVXT1IO2xldCBZPW5ldyBTZXQodGhpcy5zZGtNY3BTZXJ2ZXJJbnN0YW5jZXMua2V5cygpKSxYPW5ldyBTZXQoT2JqZWN0LmtleXMoUSkpO2ZvcihsZXQgVSBvZiBZKWlmKCFYLmhhcyhVKSlhd2FpdCB0aGlzLmRpc2Nvbm5lY3RTZGtNY3BTZXJ2ZXIoVSk7Zm9yKGxldFtVLEhdb2YgT2JqZWN0LmVudHJpZXMoUSkpaWYoIVkuaGFzKFUpKXRoaXMuY29ubmVjdFNka01jcFNlcnZlcihVLEgpO2xldCBXPXt9O2ZvcihsZXQgVSBvZiBPYmplY3Qua2V5cyhRKSlXW1VdPXt0eXBlOlwic2RrXCIsbmFtZTpVfTtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwibWNwX3NldF9zZXJ2ZXJzXCIsc2VydmVyczp7Li4uSiwuLi5XfX0pKS5yZXNwb25zZX0pfWFzeW5jIGFjY291bnRJbmZvKCl7cmV0dXJuKGF3YWl0IHRoaXMuaW5pdGlhbGl6YXRpb24pLmFjY291bnR9YXN5bmMgc3RyZWFtSW5wdXQoJCl7WCQoXCJbUXVlcnkuc3RyZWFtSW5wdXRdIFN0YXJ0aW5nIHRvIHByb2Nlc3MgaW5wdXQgc3RyZWFtXCIpO3RyeXtsZXQgUT0wO2ZvciBhd2FpdChsZXQgSiBvZiAkKXtpZihRKyssWCQoYFtRdWVyeS5zdHJlYW1JbnB1dF0gUHJvY2Vzc2luZyBtZXNzYWdlICR7UX06ICR7Si50eXBlfWApLHRoaXMuYWJvcnRDb250cm9sbGVyPy5zaWduYWwuYWJvcnRlZClicmVhazthd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc3BvcnQud3JpdGUoQiQoSikrYFxuYCkpfWlmKFgkKGBbUXVlcnkuc3RyZWFtSW5wdXRdIEZpbmlzaGVkIHByb2Nlc3NpbmcgJHtRfSBtZXNzYWdlcyBmcm9tIGlucHV0IHN0cmVhbWApLFE+MCYmdGhpcy5oYXNCaWRpcmVjdGlvbmFsTmVlZHMoKSlYJChcIltRdWVyeS5zdHJlYW1JbnB1dF0gSGFzIGJpZGlyZWN0aW9uYWwgbmVlZHMsIHdhaXRpbmcgZm9yIGZpcnN0IHJlc3VsdFwiKSxhd2FpdCB0aGlzLndhaXRGb3JGaXJzdFJlc3VsdCgpO1gkKFwiW1F1ZXJ5XSBDYWxsaW5nIHRyYW5zcG9ydC5lbmRJbnB1dCgpIHRvIGNsb3NlIHN0ZGluIHRvIENMSSBwcm9jZXNzXCIpLHRoaXMudHJhbnNwb3J0LmVuZElucHV0KCl9Y2F0Y2goUSl7aWYoIShRIGluc3RhbmNlb2YgcTYpKXRocm93IFF9fXdhaXRGb3JGaXJzdFJlc3VsdCgpe2lmKHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZClyZXR1cm4gWCQoXCJbUXVlcnkud2FpdEZvckZpcnN0UmVzdWx0XSBSZXN1bHQgYWxyZWFkeSByZWNlaXZlZCwgcmV0dXJuaW5nIGltbWVkaWF0ZWx5XCIpLFByb21pc2UucmVzb2x2ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoJCk9PntpZih0aGlzLmFib3J0Q29udHJvbGxlcj8uc2lnbmFsLmFib3J0ZWQpeyQoKTtyZXR1cm59dGhpcy5hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+JCgpLHtvbmNlOiEwfSksdGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZT0kfSl9aGFuZGxlSG9va0NhbGxiYWNrcygkLFEsSixZKXtsZXQgWD10aGlzLmhvb2tDYWxsYmFja3MuZ2V0KCQpO2lmKCFYKXRocm93IEVycm9yKGBObyBob29rIGNhbGxiYWNrIGZvdW5kIGZvciBJRDogJHskfWApO3JldHVybiBYKFEsSix7c2lnbmFsOll9KX1jb25uZWN0U2RrTWNwU2VydmVyKCQsUSl7bGV0IEo9bmV3IHZVKChZKT0+dGhpcy5zZW5kTWNwU2VydmVyTWVzc2FnZVRvQ2xpKCQsWSkpO3RoaXMuc2RrTWNwVHJhbnNwb3J0cy5zZXQoJCxKKSx0aGlzLnNka01jcFNlcnZlckluc3RhbmNlcy5zZXQoJCxRKSxRLmNvbm5lY3QoSikuY2F0Y2goKFkpPT57aWYodGhpcy5zZGtNY3BUcmFuc3BvcnRzLmdldCgkKT09PUopdGhpcy5zZGtNY3BUcmFuc3BvcnRzLmRlbGV0ZSgkKTtpZih0aGlzLnNka01jcFNlcnZlckluc3RhbmNlcy5nZXQoJCk9PT1RKXRoaXMuc2RrTWNwU2VydmVySW5zdGFuY2VzLmRlbGV0ZSgkKTtYJChgW1F1ZXJ5LmNvbm5lY3RTZGtNY3BTZXJ2ZXJdIEZhaWxlZCB0byBjb25uZWN0IE1DUCBzZXJ2ZXIgJyR7JH0nOiAke1l9YCx7bGV2ZWw6XCJlcnJvclwifSl9KX1hc3luYyBkaXNjb25uZWN0U2RrTWNwU2VydmVyKCQpe2xldCBRPXRoaXMuc2RrTWNwVHJhbnNwb3J0cy5nZXQoJCk7aWYoUSlhd2FpdCBRLmNsb3NlKCksdGhpcy5zZGtNY3BUcmFuc3BvcnRzLmRlbGV0ZSgkKTt0aGlzLnNka01jcFNlcnZlckluc3RhbmNlcy5kZWxldGUoJCl9c2VuZE1jcFNlcnZlck1lc3NhZ2VUb0NsaSgkLFEpe2lmKFwiaWRcImluIFEmJlEuaWQhPT1udWxsJiZRLmlkIT09dm9pZCAwKXtsZXQgWT1gJHskfToke1EuaWR9YCxYPXRoaXMucGVuZGluZ01jcFJlc3BvbnNlcy5nZXQoWSk7aWYoWCl7WC5yZXNvbHZlKFEpLHRoaXMucGVuZGluZ01jcFJlc3BvbnNlcy5kZWxldGUoWSk7cmV0dXJufX1sZXQgSj17dHlwZTpcImNvbnRyb2xfcmVxdWVzdFwiLHJlcXVlc3RfaWQ6eDcoKSxyZXF1ZXN0OntzdWJ0eXBlOlwibWNwX21lc3NhZ2VcIixzZXJ2ZXJfbmFtZTokLG1lc3NhZ2U6UX19O1Byb21pc2UucmVzb2x2ZSh0aGlzLnRyYW5zcG9ydC53cml0ZShCJChKKStgXG5gKSkuY2F0Y2goKFkpPT57WCQoYFtRdWVyeS5zZW5kTWNwU2VydmVyTWVzc2FnZVRvQ2xpXSBUcmFuc3BvcnQgd3JpdGUgZmFpbGVkOiAke1l9YCx7bGV2ZWw6XCJlcnJvclwifSl9KX1oYW5kbGVNY3BDb250cm9sUmVxdWVzdCgkLFEsSil7bGV0IFk9XCJpZFwiaW4gUS5tZXNzYWdlP1EubWVzc2FnZS5pZDpudWxsLFg9YCR7JH06JHtZfWA7cmV0dXJuIG5ldyBQcm9taXNlKChXLEcpPT57bGV0IFU9KCk9Pnt0aGlzLnBlbmRpbmdNY3BSZXNwb25zZXMuZGVsZXRlKFgpfSxIPShWKT0+e1UoKSxXKFYpfSxxPShWKT0+e1UoKSxHKFYpfTtpZih0aGlzLnBlbmRpbmdNY3BSZXNwb25zZXMuc2V0KFgse3Jlc29sdmU6SCxyZWplY3Q6cX0pLEoub25tZXNzYWdlKUoub25tZXNzYWdlKFEubWVzc2FnZSk7ZWxzZXtVKCksRyhFcnJvcihcIk5vIG1lc3NhZ2UgaGFuZGxlciByZWdpc3RlcmVkXCIpKTtyZXR1cm59fSl9fXZhciBNNT01MDAsTDU9MTA0ODU3Njt2YXIgSXg9WzIwMCw4MDBdO2NsYXNzIENVe3NlbmQ7c2VuZFRpbWVvdXRNcztvbkVycm9yO21heFBlbmRpbmdFbnRyaWVzO21heFBlbmRpbmdCeXRlcztiYWNrb2ZmTXM7cGVuZGluZz1bXTtwZW5kaW5nRW50cmllcz0wO3BlbmRpbmdCeXRlcz0wO2ZsdXNoUHJvbWlzZT1udWxsO2NvbnN0cnVjdG9yKCQsUT02MDAwMCxKLFk9TTUsWD1MNSxXPUl4KXt0aGlzLnNlbmQ9JDt0aGlzLnNlbmRUaW1lb3V0TXM9UTt0aGlzLm9uRXJyb3I9Sjt0aGlzLm1heFBlbmRpbmdFbnRyaWVzPVk7dGhpcy5tYXhQZW5kaW5nQnl0ZXM9WDt0aGlzLmJhY2tvZmZNcz1XfWVucXVldWUoJCxRKXtsZXQgSj1CJChRKS5sZW5ndGg7aWYodGhpcy5wZW5kaW5nLnB1c2goe2ZpbGVQYXRoOiQsZW50cmllczpRLGJ5dGVzOkp9KSx0aGlzLnBlbmRpbmdFbnRyaWVzKz1RLmxlbmd0aCx0aGlzLnBlbmRpbmdCeXRlcys9Six0aGlzLnBlbmRpbmdFbnRyaWVzPnRoaXMubWF4UGVuZGluZ0VudHJpZXN8fHRoaXMucGVuZGluZ0J5dGVzPnRoaXMubWF4UGVuZGluZ0J5dGVzKXRoaXMuZmx1c2hQcm9taXNlPXRoaXMuZHJhaW4oKSx0aGlzLmZsdXNoUHJvbWlzZS5jYXRjaCgoKT0+e30pfWFzeW5jIGZsdXNoKCl7bGV0ICQ9dGhpcy5kcmFpbigpO2lmKHRoaXMuZmx1c2hQcm9taXNlPSQsYXdhaXQgJCx0aGlzLmZsdXNoUHJvbWlzZT09PSQpdGhpcy5mbHVzaFByb21pc2U9bnVsbH1hc3luYyBkcmFpbigpe2xldCAkPXRoaXMuZmx1c2hQcm9taXNlLFE9dGhpcy5wZW5kaW5nLnNwbGljZSgwKTtpZih0aGlzLnBlbmRpbmdFbnRyaWVzPTAsdGhpcy5wZW5kaW5nQnl0ZXM9MCwkKWF3YWl0ICQ7aWYoUS5sZW5ndGg9PT0wKXJldHVybjthd2FpdCB0aGlzLmRvRmx1c2goUSl9YXN5bmMgZG9GbHVzaCgkKXtsZXQgUT1uZXcgTWFwO2ZvcihsZXQgWSBvZiAkKXtsZXQgWD1RLmdldChZLmZpbGVQYXRoKTtpZihYKVgucHVzaCguLi5ZLmVudHJpZXMpO2Vsc2UgUS5zZXQoWS5maWxlUGF0aCxZLmVudHJpZXMuc2xpY2UoKSl9bGV0IEo9dGhpcy5iYWNrb2ZmTXMubGVuZ3RoKzE7Zm9yKGxldFtZLFhdb2YgUSl7bGV0IFc9YFNlc3Npb25TdG9yZS5hcHBlbmQoKSB0aW1lZCBvdXQgYWZ0ZXIgJHt0aGlzLnNlbmRUaW1lb3V0TXN9bXMgZm9yICR7WX1gLEcsVT0xO2Zvcig7VTw9SjtVKyspdHJ5e2F3YWl0IFQ0KHRoaXMuc2VuZChZLFgpLHRoaXMuc2VuZFRpbWVvdXRNcyxXKSxHPXZvaWQgMDticmVha31jYXRjaChIKXtpZihHPUk0KEgpLEcubWVzc2FnZT09PVcpYnJlYWs7bGV0IHE9dGhpcy5iYWNrb2ZmTXNbVS0xXTtpZihxPT09dm9pZCAwKWJyZWFrO2F3YWl0IHpYKHEpfWlmKEcpe1gkKGBbVHJhbnNjcmlwdE1pcnJvckJhdGNoZXJdIGZsdXNoIGZhaWxlZCBmb3IgJHtZfSBhZnRlciAke1V9IGF0dGVtcHQocyk6ICR7R31gLHtsZXZlbDpcImVycm9yXCJ9KTt0cnl7dGhpcy5vbkVycm9yPy4oWSxHKX1jYXRjaChIKXtYJChgW1RyYW5zY3JpcHRNaXJyb3JCYXRjaGVyXSBvbkVycm9yIGNhbGxiYWNrIHRocmV3OiAke0h9YCx7bGV2ZWw6XCJlcnJvclwifSl9fX19fXZhciBfNT1CWChFSCgpLDEpO2ltcG9ydHtjcmVhdGVSZXF1aXJlIGFzIGx5fWZyb21cIm1vZHVsZVwiO2ltcG9ydHtmaWxlVVJMVG9QYXRoIGFzIGN5fWZyb21cInVybFwiO3ZhciBweT01MDAwO2NsYXNzIGJIe2Nsb3NlZD0hMTtpbnB1dFN0cmVhbTtxdWVyeTtxdWVyeUl0ZXJhdG9yPW51bGw7YWJvcnRDb250cm9sbGVyO19zZXNzaW9uSWQ9bnVsbDtnZXQgc2Vzc2lvbklkKCl7aWYodGhpcy5fc2Vzc2lvbklkPT09bnVsbCl0aHJvdyBFcnJvcihcIlNlc3Npb24gSUQgbm90IGF2YWlsYWJsZSB1bnRpbCBhZnRlciByZWNlaXZpbmcgbWVzc2FnZXNcIik7cmV0dXJuIHRoaXMuX3Nlc3Npb25JZH1jb25zdHJ1Y3RvcigkKXtpZigkLnJlc3VtZSl0aGlzLl9zZXNzaW9uSWQ9JC5yZXN1bWU7dGhpcy5pbnB1dFN0cmVhbT1uZXcgejA7bGV0IFE9JC5wYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZTtpZighUSl7bGV0IFc9Y3koaW1wb3J0Lm1ldGEudXJsKSxHPWx5KFcpLFU9RjUoKEgpPT5HLnJlc29sdmUoSCkpO2lmKFUpUT1VO2Vsc2UgdHJ5e1E9Ry5yZXNvbHZlKFwiLi9jbGkuanNcIil9Y2F0Y2h7dGhyb3cgRXJyb3IoYE5hdGl2ZSBDTEkgYmluYXJ5IGZvciAke3Byb2Nlc3MucGxhdGZvcm19LSR7cHJvY2Vzcy5hcmNofSBub3QgZm91bmQuIFJlaW5zdGFsbCBAYW50aHJvcGljLWFpL2NsYXVkZS1hZ2VudC1zZGsgd2l0aG91dCAtLW9taXQ9b3B0aW9uYWwsIG9yIHNldCBvcHRpb25zLnBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlLmApfX1sZXQgSj17Li4uJC5lbnY/P3Byb2Nlc3MuZW52fTtpZighSi5DTEFVREVfQ09ERV9FTlRSWVBPSU5UKUouQ0xBVURFX0NPREVfRU5UUllQT0lOVD1cInNkay10c1wiO2xldCBZPXt9O2lmKF81LnByb3BhZ2F0aW9uLmluamVjdChfNS5jb250ZXh0LmFjdGl2ZSgpLFkpLFwidHJhY2VwYXJlbnRcImluIFkpe2ZvcihsZXQgVyBvZltcIlRSQUNFUEFSRU5UXCIsXCJUUkFDRVNUQVRFXCJdKWlmKCEoVyBpbigkLmVudj8/e30pKSlkZWxldGUgSltXXX1mb3IobGV0W1csR11vZiBPYmplY3QuZW50cmllcyhZKSl7bGV0IFU9Vy50b1VwcGVyQ2FzZSgpO2lmKCEoVSBpbigkLmVudj8/e30pKSlKW1VdPUd9dGhpcy5hYm9ydENvbnRyb2xsZXI9YTAoKTtsZXQgWD1uZXcgaDcoe2Fib3J0Q29udHJvbGxlcjp0aGlzLmFib3J0Q29udHJvbGxlcixwYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZTpRLGN3ZDokLmN3ZCxlbnY6SixleGVjdXRhYmxlOiQuZXhlY3V0YWJsZT8/KGUwKCk/XCJidW5cIjpcIm5vZGVcIiksZXhlY3V0YWJsZUFyZ3M6JC5leGVjdXRhYmxlQXJncz8/W10sZXh0cmFBcmdzOnt9LHRoaW5raW5nQ29uZmlnOnZvaWQgMCxtYXhUdXJuczp2b2lkIDAsbWF4QnVkZ2V0VXNkOnZvaWQgMCxtb2RlbDokLm1vZGVsLGZhbGxiYWNrTW9kZWw6dm9pZCAwLHBlcm1pc3Npb25Nb2RlOiQucGVybWlzc2lvbk1vZGU/P1wiZGVmYXVsdFwiLGFsbG93RGFuZ2Vyb3VzbHlTa2lwUGVybWlzc2lvbnM6JC5hbGxvd0Rhbmdlcm91c2x5U2tpcFBlcm1pc3Npb25zPz8hMSxjb250aW51ZUNvbnZlcnNhdGlvbjohMSxyZXN1bWU6JC5yZXN1bWUsc2V0dGluZ1NvdXJjZXM6JC5zZXR0aW5nU291cmNlcz8/W10sYWxsb3dlZFRvb2xzOiQuYWxsb3dlZFRvb2xzPz9bXSxkaXNhbGxvd2VkVG9vbHM6JC5kaXNhbGxvd2VkVG9vbHM/P1tdLG1jcFNlcnZlcnM6e30sc3RyaWN0TWNwQ29uZmlnOiExLGNhblVzZVRvb2w6ISEkLmNhblVzZVRvb2wsaG9va3M6ISEkLmhvb2tzLGluY2x1ZGVQYXJ0aWFsTWVzc2FnZXM6ITEsZm9ya1Nlc3Npb246ITEscmVzdW1lU2Vzc2lvbkF0OnZvaWQgMH0pO3RoaXMucXVlcnk9bmV3IGM3KFgsITEsJC5jYW5Vc2VUb29sLCQuaG9va3MsdGhpcy5hYm9ydENvbnRyb2xsZXIsbmV3IE1hcCx2b2lkIDAse3BsYW5Nb2RlSW5zdHJ1Y3Rpb25zOiQucGxhbk1vZGVJbnN0cnVjdGlvbnN9KSx0aGlzLnF1ZXJ5LnN0cmVhbUlucHV0KHRoaXMuaW5wdXRTdHJlYW0pLmNhdGNoKChXKT0+dGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQoVykpfWFzeW5jIHNlbmQoJCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgRXJyb3IoXCJDYW5ub3Qgc2VuZCB0byBjbG9zZWQgc2Vzc2lvblwiKTtsZXQgUT10eXBlb2YgJD09PVwic3RyaW5nXCI/e3R5cGU6XCJ1c2VyXCIsc2Vzc2lvbl9pZDpcIlwiLG1lc3NhZ2U6e3JvbGU6XCJ1c2VyXCIsY29udGVudDpbe3R5cGU6XCJ0ZXh0XCIsdGV4dDokfV19LHBhcmVudF90b29sX3VzZV9pZDpudWxsfTokO3RoaXMuaW5wdXRTdHJlYW0uZW5xdWV1ZShRKX1hc3luYypzdHJlYW0oKXtpZighdGhpcy5xdWVyeUl0ZXJhdG9yKXRoaXMucXVlcnlJdGVyYXRvcj10aGlzLnF1ZXJ5W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO3doaWxlKCEwKXtsZXR7dmFsdWU6JCxkb25lOlF9PWF3YWl0IHRoaXMucXVlcnlJdGVyYXRvci5uZXh0KCk7aWYoUSlyZXR1cm47aWYoJC50eXBlPT09XCJzeXN0ZW1cIiYmJC5zdWJ0eXBlPT09XCJpbml0XCIpdGhpcy5fc2Vzc2lvbklkPSQuc2Vzc2lvbl9pZDtpZih5aWVsZCAkLCQudHlwZT09PVwicmVzdWx0XCIpcmV0dXJufX1jbG9zZSgpe2lmKHRoaXMuY2xvc2VkKXJldHVybjt0aGlzLmNsb3NlZD0hMCx0aGlzLmlucHV0U3RyZWFtLmRvbmUoKSxzZXRUaW1lb3V0KCgpPT57aWYoIXRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCl9LHB5KS51bnJlZigpfWFzeW5jW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCl7dGhpcy5jbG9zZSgpfX1mdW5jdGlvbiBfSCgkKXt0cnl7bGV0IFE9bmV3IGJIKCQpO3JldHVybiBtNyhcInNka19zZXNzaW9uX2NyZWF0ZVwiKSxRfWNhdGNoKFEpe2xldCBKPVEgaW5zdGFuY2VvZiBFcnJvciYmUS5tZXNzYWdlLmluY2x1ZGVzKFwiTmF0aXZlIENMSSBiaW5hcnlcIik/XCJuYXRpdmVfY2xpX25vdF9mb3VuZFwiOlwiaW5pdF9mYWlsZWRcIjt0aHJvdyBsNyhcInNka19zZXNzaW9uX2NyZWF0ZVwiLEopLFF9fWZ1bmN0aW9uIHFaKCQsUSl7cmV0dXJuIG5ldyBiSCh7Li4uUSxyZXN1bWU6JH0pfXZhciBaRz1CWChFSCgpLDEpO2Z1bmN0aW9uIGR5KCQpe2xldCBRPSQsSj1cIlwiLFk9MCxYPTEwO3doaWxlKFEhPT1KJiZZPFgpSj1RLFE9US5ub3JtYWxpemUoXCJORktDXCIpLFE9US5yZXBsYWNlKC9bXFxwe0NmfVxccHtDb31cXHB7Q259XS9ndSxcIlwiKSxRPVEucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRl0vZyxcIlwiKS5yZXBsYWNlKC9bXFx1MjAyQS1cXHUyMDJFXS9nLFwiXCIpLnJlcGxhY2UoL1tcXHUyMDY2LVxcdTIwNjldL2csXCJcIikucmVwbGFjZSgvW1xcdUZFRkZdL2csXCJcIikucmVwbGFjZSgvW1xcdUUwMDAtXFx1RjhGRl0vZyxcIlwiKSxZKys7aWYoWT49WCl0aHJvdyBFcnJvcihgVW5pY29kZSBzYW5pdGl6YXRpb24gcmVhY2hlZCBtYXhpbXVtIGl0ZXJhdGlvbnMgKCR7WH0pIGZvciBpbnB1dDogJHskLnNsaWNlKDAsMTAwKX1gKTtyZXR1cm4gUX1mdW5jdGlvbiBGMCgkKXtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpcmV0dXJuIGR5KCQpO2lmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuICQubWFwKEYwKTtpZigkIT09bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiKXtsZXQgUT17fTtmb3IobGV0W0osWV1vZiBPYmplY3QuZW50cmllcygkKSlRW0YwKEopXT1GMChZKTtyZXR1cm4gUX1yZXR1cm4gJH1pbXBvcnR7cmVhZEZpbGUgYXMgQmd9ZnJvbVwiZnMvcHJvbWlzZXNcIjtpbXBvcnR7b25jZSBhcyBWWn1mcm9tXCJldmVudHNcIjtpbXBvcnR7Y3JlYXRlV3JpdGVTdHJlYW0gYXMgb3l9ZnJvbVwiZnNcIjtpbXBvcnR7b3BlbiBhcyBCWixyZWFkZGlyIGFzIGtILHJlYWxwYXRoIGFzIHR5LHN0YXQgYXMgYXl9ZnJvbVwiZnMvcHJvbWlzZXNcIjtpbXBvcnR7am9pbiBhcyB0N31mcm9tXCJwYXRoXCI7aW1wb3J0e2V4ZWNGaWxlIGFzIGl5fWZyb21cImNoaWxkX3Byb2Nlc3NcIjtpbXBvcnR7cHJvbWlzaWZ5IGFzIG55fWZyb21cInV0aWxcIjt2YXIgcnk9bnkoaXkpO2FzeW5jIGZ1bmN0aW9uIGM0KCQpe3RyeXtsZXR7c3Rkb3V0OlF9PWF3YWl0IHJ5KFwiZ2l0XCIsW1wid29ya3RyZWVcIixcImxpc3RcIixcIi0tcG9yY2VsYWluXCJdLHtjd2Q6JCx0aW1lb3V0OjUwMDB9KTtpZighUSlyZXR1cm5bXTtyZXR1cm4gUS5zcGxpdChgXG5gKS5maWx0ZXIoKEopPT5KLnN0YXJ0c1dpdGgoXCJ3b3JrdHJlZSBcIikpLm1hcCgoSik9Pkouc2xpY2UoOSkubm9ybWFsaXplKFwiTkZDXCIpKX1jYXRjaHtyZXR1cm5bXX19ZnVuY3Rpb24gU0goJCl7bGV0IFE9MDtmb3IobGV0IEo9MDtKPCQubGVuZ3RoO0orKylRPShRPDw1KS1RKyQuY2hhckNvZGVBdChKKXwwO3JldHVybiBRfXZhciBVND02NTUzNixzeT0vXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQvaTtmdW5jdGlvbiBMJCgkKXtpZih0eXBlb2YgJCE9PVwic3RyaW5nXCIpcmV0dXJuIG51bGw7cmV0dXJuIHN5LnRlc3QoJCk/JDpudWxsfWZ1bmN0aW9uIHpaKCQpe2lmKCEkLmluY2x1ZGVzKFwiXFxcXFwiKSlyZXR1cm4gJDt0cnl7cmV0dXJuIEpTT04ucGFyc2UoYFwiJHskfVwiYCl9Y2F0Y2h7cmV0dXJuICR9fWZ1bmN0aW9uIHY1KCQsUSl7bGV0IEo9W2BcIiR7UX1cIjpcImAsYFwiJHtRfVwiOiBcImBdO2ZvcihsZXQgWSBvZiBKKXtsZXQgWD0kLmluZGV4T2YoWSk7aWYoWDwwKWNvbnRpbnVlO2xldCBXPVgrWS5sZW5ndGgsRz1XO3doaWxlKEc8JC5sZW5ndGgpe2lmKCRbR109PT1cIlxcXFxcIil7Rys9Mjtjb250aW51ZX1pZigkW0ddPT09J1wiJylyZXR1cm4gelooJC5zbGljZShXLEcpKTtHKyt9fXJldHVybn1mdW5jdGlvbiBMNigkLFEpe2xldCBKPVtgXCIke1F9XCI6XCJgLGBcIiR7UX1cIjogXCJgXSxZLFg9LTE7Zm9yKGxldCBXIG9mIEope2xldCBHPTA7d2hpbGUoITApe2xldCBVPSQuaW5kZXhPZihXLEcpO2lmKFU8MClicmVhaztsZXQgSD1VK1cubGVuZ3RoLHE9SDt3aGlsZShxPCQubGVuZ3RoKXtpZigkW3FdPT09XCJcXFxcXCIpe3ErPTI7Y29udGludWV9aWYoJFtxXT09PSdcIicpe2lmKFU+WClZPXpaKCQuc2xpY2UoSCxxKSksWD1VO2JyZWFrfXErK31HPXErMX19cmV0dXJuIFl9YXN5bmMgZnVuY3Rpb24gczcoJCxRKXtsZXQgSj1veSgkLHttb2RlOjM4NH0pO3RyeXtmb3IobGV0IFkgb2YgUSlpZighSi53cml0ZShKU09OLnN0cmluZ2lmeShZKStgXG5gKSlhd2FpdCBWWihKLFwiZHJhaW5cIik7Si5lbmQoKSxhd2FpdCBWWihKLFwiZmluaXNoXCIpfWNhdGNoKFkpe3Rocm93IEouZGVzdHJveSgpLFl9fWZ1bmN0aW9uIEM1KCQpe2xldCBRPTAsSj17Y29tbWFuZEZhbGxiYWNrOlwiXCJ9O3doaWxlKFE8JC5sZW5ndGgpe2xldCBZPSQuaW5kZXhPZihgXG5gLFEpLFg9WT49MD8kLnNsaWNlKFEsWSk6JC5zbGljZShRKTtpZihRPVk+PTA/WSsxOiQubGVuZ3RoLCFYLmluY2x1ZGVzKCdcInR5cGVcIjpcInVzZXJcIicpJiYhWC5pbmNsdWRlcygnXCJ0eXBlXCI6IFwidXNlclwiJykpY29udGludWU7aWYoWC5pbmNsdWRlcygnXCJ0b29sX3Jlc3VsdFwiJykpY29udGludWU7aWYoWC5pbmNsdWRlcygnXCJpc01ldGFcIjp0cnVlJyl8fFguaW5jbHVkZXMoJ1wiaXNNZXRhXCI6IHRydWUnKSljb250aW51ZTtpZihYLmluY2x1ZGVzKCdcImlzQ29tcGFjdFN1bW1hcnlcIjp0cnVlJyl8fFguaW5jbHVkZXMoJ1wiaXNDb21wYWN0U3VtbWFyeVwiOiB0cnVlJykpY29udGludWU7dHJ5e2xldCBXPUpTT04ucGFyc2UoWCksRz15OShXLEopO2lmKEchPT12b2lkIDApcmV0dXJuIEd9Y2F0Y2h7Y29udGludWV9fXJldHVybiBKLmNvbW1hbmRGYWxsYmFja31mdW5jdGlvbiBOWigkKXtsZXQgUT17Y29tbWFuZEZhbGxiYWNrOlwiXCJ9O2ZvcihsZXQgSiBvZiAkKXtpZih0eXBlb2YgSiE9PVwib2JqZWN0XCJ8fEo9PT1udWxsKWNvbnRpbnVlO2xldCBZPXk5KEosUSk7aWYoWSE9PXZvaWQgMClyZXR1cm4gWX1yZXR1cm4gUS5jb21tYW5kRmFsbGJhY2t9YXN5bmMgZnVuY3Rpb24gVDUoJCl7dHJ5e2xldCBRPWF3YWl0IEJaKCQsXCJyXCIpO3RyeXtsZXQgSj1hd2FpdCBRLnN0YXQoKSxZPUJ1ZmZlci5hbGxvY1Vuc2FmZShVNCksWD1hd2FpdCBRLnJlYWQoWSwwLFU0LDApO2lmKFguYnl0ZXNSZWFkPT09MClyZXR1cm4gbnVsbDtsZXQgVz1ZLnRvU3RyaW5nKFwidXRmOFwiLDAsWC5ieXRlc1JlYWQpLEc9TWF0aC5tYXgoMCxKLnNpemUtVTQpLFU9VztpZihHPjApe2xldCBIPWF3YWl0IFEucmVhZChZLDAsVTQsRyk7VT1ZLnRvU3RyaW5nKFwidXRmOFwiLDAsSC5ieXRlc1JlYWQpfXJldHVybnttdGltZTpKLm10aW1lLmdldFRpbWUoKSxzaXplOkouc2l6ZSxoZWFkOlcsdGFpbDpVfX1maW5hbGx5e2F3YWl0IFEuY2xvc2UoKX19Y2F0Y2h7cmV0dXJuIG51bGx9fXZhciB2OD0yMDA7ZnVuY3Rpb24gZXkoJCl7cmV0dXJuIE1hdGguYWJzKFNIKCQpKS50b1N0cmluZygzNil9ZnVuY3Rpb24gTTAoJCl7bGV0IFE9JC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZyxcIi1cIik7aWYoUS5sZW5ndGg8PXY4KXJldHVybiBRO3JldHVybmAke1Euc2xpY2UoMCx2OCl9LSR7ZXkoJCl9YH1mdW5jdGlvbiBINCgpe3JldHVybiB0NyhwNigpLFwicHJvamVjdHNcIil9ZnVuY3Rpb24gJGcoJCl7cmV0dXJuIHQ3KEg0KCksTTAoJCkpfWFzeW5jIGZ1bmN0aW9uIEwxKCQpe3RyeXtyZXR1cm4oYXdhaXQgdHkoJCkpLm5vcm1hbGl6ZShcIk5GQ1wiKX1jYXRjaHtyZXR1cm4gJC5ub3JtYWxpemUoXCJORkNcIil9fWFzeW5jIGZ1bmN0aW9uIE02KCQpe2xldCBRPSRnKCQpLEo9W107dHJ5e2F3YWl0IGtIKFEpLEoucHVzaChRKX1jYXRjaHt9bGV0IFk9TTAoJCk7aWYoWS5sZW5ndGg8PXY4KXJldHVybiBKO2xldCBYPVkuc2xpY2UoMCx2OCkrXCItXCIsVz1INCgpO3RyeXtmb3IobGV0IEcgb2YgYXdhaXQga0goVyx7d2l0aEZpbGVUeXBlczohMH0pKXtpZighRy5pc0RpcmVjdG9yeSgpfHwhRy5uYW1lLnN0YXJ0c1dpdGgoWCkpY29udGludWU7bGV0IFU9dDcoVyxHLm5hbWUpO2lmKFUhPT1RKUoucHVzaChVKX19Y2F0Y2h7fXJldHVybiBKfWFzeW5jIGZ1bmN0aW9uIGoxKCQsUSl7bGV0IEo9YCR7JH0uanNvbmxgO2FzeW5jIGZ1bmN0aW9uIFkoRyxVKXtsZXQgSD10NyhHLEopO3RyeXtsZXQgcT1hd2FpdCBheShIKTtpZihxLnNpemU+MClyZXR1cm57ZmlsZVBhdGg6SCxwcm9qZWN0UGF0aDpVLGZpbGVTaXplOnEuc2l6ZX19Y2F0Y2h7fXJldHVybn1pZihRKXtsZXQgRz1hd2FpdCBMMShRKTtmb3IobGV0IEggb2YgYXdhaXQgTTYoRykpe2xldCBxPWF3YWl0IFkoSCxHKTtpZihxKXJldHVybiBxfWxldCBVO3RyeXtVPWF3YWl0IGM0KEcpfWNhdGNoe1U9W119Zm9yKGxldCBIIG9mIFUpe2lmKEg9PT1HKWNvbnRpbnVlO2ZvcihsZXQgcSBvZiBhd2FpdCBNNihIKSl7bGV0IFY9YXdhaXQgWShxLEgpO2lmKFYpcmV0dXJuIFZ9fXJldHVybn1sZXQgWD1INCgpLFc7dHJ5e1c9YXdhaXQga0goWCl9Y2F0Y2h7cmV0dXJufWZvcihsZXQgRyBvZiBXKXtsZXQgVT1hd2FpdCBZKHQ3KFgsRyksdm9pZCAwKTtpZihVKXJldHVybiBVfXJldHVybn12YXIgUWc9MTA0ODU3Nix3Wj01MjQyODgwLEpnO2Z1bmN0aW9uIFhnKCl7cmV0dXJuIEpnPz89QnVmZmVyLmZyb20oJ1wiY29tcGFjdF9ib3VuZGFyeVwiJyl9ZnVuY3Rpb24gT1ooJCl7dHJ5e2xldCBRPUpTT04ucGFyc2UoJCk7aWYoUS50eXBlIT09XCJzeXN0ZW1cInx8US5zdWJ0eXBlIT09XCJjb21wYWN0X2JvdW5kYXJ5XCIpcmV0dXJuIG51bGw7cmV0dXJue2hhc1ByZXNlcnZlZFNlZ21lbnQ6Qm9vbGVhbihRLmNvbXBhY3RNZXRhZGF0YT8ucHJlc2VydmVkU2VnbWVudHx8US5jb21wYWN0TWV0YWRhdGE/LnByZXNlcnZlZE1lc3NhZ2VzKX19Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFowKCQsUSxKLFkpe2xldCBYPVktSjtpZihYPD0wKXJldHVybjtpZigkLmxlbitYPiQuYnVmLmxlbmd0aCl7bGV0IFc9QnVmZmVyLmFsbG9jVW5zYWZlKE1hdGgubWluKE1hdGgubWF4KCQuYnVmLmxlbmd0aCoyLCQubGVuK1gpLCQuY2FwKSk7JC5idWYuY29weShXLDAsMCwkLmxlbiksJC5idWY9V31RLmNvcHkoJC5idWYsJC5sZW4sSixZKSwkLmxlbis9WH1mdW5jdGlvbiBTNSgkLFEsSixZKXtyZXR1cm4gWS1KPj1RLmxlbmd0aCYmJC5jb21wYXJlKFEsMCxRLmxlbmd0aCxKLEorUS5sZW5ndGgpPT09MH12YXIgazU9QnVmZmVyLmZyb20oJ3tcInR5cGVcIjpcImF0dHJpYnV0aW9uLXNuYXBzaG90XCInKSxZZz1CdWZmZXIuZnJvbSgne1widHlwZVwiOlwic3lzdGVtXCInKSxhNz0xMCxXZz1CdWZmZXIuZnJvbShbYTddKSxHZz0yNTY7ZnVuY3Rpb24gVWcoJCxRLEope2lmKCQuc3RyYWRkbGVTbmFwQ2FycnlMZW49MCwkLnN0cmFkZGxlU25hcFRhaWxFbmQ9MCwkLmNhcnJ5TGVuPT09MClyZXR1cm4gMDtsZXQgWT0kLmNhcnJ5QnVmLFg9US5pbmRleE9mKGE3KTtpZihYPT09LTF8fFg+PUopcmV0dXJuIDA7bGV0IFc9WCsxO2lmKFM1KFksazUsMCwkLmNhcnJ5TGVuKSkkLnN0cmFkZGxlU25hcENhcnJ5TGVuPSQuY2FycnlMZW4sJC5zdHJhZGRsZVNuYXBUYWlsRW5kPVcsJC5sYXN0U25hcFNyYz1udWxsO2Vsc2UgaWYoJC5jYXJyeUxlbjxrNS5sZW5ndGgpcmV0dXJuIDA7ZWxzZXtpZihTNShZLFlnLDAsJC5jYXJyeUxlbikpe2xldCBHPU9aKFkudG9TdHJpbmcoXCJ1dGYtOFwiLDAsJC5jYXJyeUxlbikrUS50b1N0cmluZyhcInV0Zi04XCIsMCxYKSk7aWYoRz8uaGFzUHJlc2VydmVkU2VnbWVudCkkLmhhc1ByZXNlcnZlZFNlZ21lbnQ9ITA7ZWxzZSBpZihHKSQub3V0Lmxlbj0wLCQuYm91bmRhcnlTdGFydE9mZnNldD0kLmJ1ZkZpbGVPZmYsJC5oYXNQcmVzZXJ2ZWRTZWdtZW50PSExLCQubGFzdFNuYXBTcmM9bnVsbH1aMCgkLm91dCxZLDAsJC5jYXJyeUxlbiksWjAoJC5vdXQsUSwwLFcpfXJldHVybiAkLmJ1ZkZpbGVPZmYrPSQuY2FycnlMZW4rVywkLmNhcnJ5TGVuPTAsV31mdW5jdGlvbiBIZygkLFEsSil7bGV0IFk9US5pbmRleE9mKEopLFg9MCxXPTAsRz0tMSxVPS0xLEg9US5pbmRleE9mKGE3KTt3aGlsZShIIT09LTEpe2xldCBxPUgrMTtpZihZIT09LTEmJlk8VylZPVEuaW5kZXhPZihKLFcpO2lmKFM1KFEsazUsVyxxKSlaMCgkLm91dCxRLFgsVyksRz1XLFU9cSxYPXE7ZWxzZSBpZihZPj1XJiZZPE1hdGgubWluKFcrR2cscSkpe2xldCBWPU9aKFEudG9TdHJpbmcoXCJ1dGYtOFwiLFcsSCkpO2lmKFY/Lmhhc1ByZXNlcnZlZFNlZ21lbnQpJC5oYXNQcmVzZXJ2ZWRTZWdtZW50PSEwO2Vsc2UgaWYoVikkLm91dC5sZW49MCwkLmJvdW5kYXJ5U3RhcnRPZmZzZXQ9JC5idWZGaWxlT2ZmK1csJC5oYXNQcmVzZXJ2ZWRTZWdtZW50PSExLCQubGFzdFNuYXBTcmM9bnVsbCxHPS0xLCQuc3RyYWRkbGVTbmFwQ2FycnlMZW49MCxYPVc7WT1RLmluZGV4T2YoSixZK0oubGVuZ3RoKX1XPXEsSD1RLmluZGV4T2YoYTcsVyl9cmV0dXJuIFowKCQub3V0LFEsWCxXKSx7bGFzdFNuYXBTdGFydDpHLGxhc3RTbmFwRW5kOlUsdHJhaWxTdGFydDpXfX1mdW5jdGlvbiBLZygkLFEsSixZLFgpe2lmKFkhPT0tMSl7aWYoJC5sYXN0U25hcExlbj1YLVksJC5sYXN0U25hcEJ1Zj09PXZvaWQgMHx8JC5sYXN0U25hcExlbj4kLmxhc3RTbmFwQnVmLmxlbmd0aCkkLmxhc3RTbmFwQnVmPUJ1ZmZlci5hbGxvY1Vuc2FmZSgkLmxhc3RTbmFwTGVuKTtRLmNvcHkoJC5sYXN0U25hcEJ1ZiwwLFksWCksJC5sYXN0U25hcFNyYz0kLmxhc3RTbmFwQnVmfWVsc2UgaWYoJC5zdHJhZGRsZVNuYXBDYXJyeUxlbj4wKXtpZigkLmxhc3RTbmFwTGVuPSQuc3RyYWRkbGVTbmFwQ2FycnlMZW4rJC5zdHJhZGRsZVNuYXBUYWlsRW5kLCQubGFzdFNuYXBCdWY9PT12b2lkIDB8fCQubGFzdFNuYXBMZW4+JC5sYXN0U25hcEJ1Zi5sZW5ndGgpJC5sYXN0U25hcEJ1Zj1CdWZmZXIuYWxsb2NVbnNhZmUoJC5sYXN0U25hcExlbik7JC5jYXJyeUJ1Zi5jb3B5KCQubGFzdFNuYXBCdWYsMCwwLCQuc3RyYWRkbGVTbmFwQ2FycnlMZW4pLEouY29weSgkLmxhc3RTbmFwQnVmLCQuc3RyYWRkbGVTbmFwQ2FycnlMZW4sMCwkLnN0cmFkZGxlU25hcFRhaWxFbmQpLCQubGFzdFNuYXBTcmM9JC5sYXN0U25hcEJ1Zn19ZnVuY3Rpb24gcWcoJCxRLEope2lmKCQuY2FycnlMZW49US5sZW5ndGgtSiwkLmNhcnJ5TGVuPjApe2lmKCQuY2FycnlCdWY9PT12b2lkIDB8fCQuY2FycnlMZW4+JC5jYXJyeUJ1Zi5sZW5ndGgpJC5jYXJyeUJ1Zj1CdWZmZXIuYWxsb2NVbnNhZmUoJC5jYXJyeUxlbik7US5jb3B5KCQuY2FycnlCdWYsMCxKLFEubGVuZ3RoKX19ZnVuY3Rpb24gVmcoJCl7aWYoJC5jYXJyeUxlbj4wKXtsZXQgUT0kLmNhcnJ5QnVmO2lmKFM1KFEsazUsMCwkLmNhcnJ5TGVuKSkkLmxhc3RTbmFwU3JjPVEsJC5sYXN0U25hcExlbj0kLmNhcnJ5TGVuO2Vsc2UgWjAoJC5vdXQsUSwwLCQuY2FycnlMZW4pfWlmKCQubGFzdFNuYXBTcmMpe2lmKCQub3V0Lmxlbj4wJiYkLm91dC5idWZbJC5vdXQubGVuLTFdIT09YTcpWjAoJC5vdXQsV2csMCwxKTtaMCgkLm91dCwkLmxhc3RTbmFwU3JjLDAsJC5sYXN0U25hcExlbil9fWFzeW5jIGZ1bmN0aW9uIERaKCQsUSl7bGV0IEo9WGcoKSxZPVFnLFg9e291dDp7YnVmOkJ1ZmZlci5hbGxvY1Vuc2FmZShNYXRoLm1pbihRLDgzODg2MDgpKSxsZW46MCxjYXA6USsxfSxib3VuZGFyeVN0YXJ0T2Zmc2V0OjAsaGFzUHJlc2VydmVkU2VnbWVudDohMSxsYXN0U25hcFNyYzpudWxsLGxhc3RTbmFwTGVuOjAsbGFzdFNuYXBCdWY6dm9pZCAwLGJ1ZkZpbGVPZmY6MCxjYXJyeUxlbjowLGNhcnJ5QnVmOnZvaWQgMCxzdHJhZGRsZVNuYXBDYXJyeUxlbjowLHN0cmFkZGxlU25hcFRhaWxFbmQ6MH0sVz1CdWZmZXIuYWxsb2NVbnNhZmUoWSksRz1hd2FpdCBCWigkLFwiclwiKTt0cnl7bGV0IFU9MDt3aGlsZShVPFEpe2xldHtieXRlc1JlYWQ6SH09YXdhaXQgRy5yZWFkKFcsMCxNYXRoLm1pbihZLFEtVSksVSk7aWYoSD09PTApYnJlYWs7VSs9SDtsZXQgcT1VZyhYLFcsSCksVjtpZihYLmNhcnJ5TGVuPjApe2xldCB6PVguY2FycnlMZW4rKEgtcSk7Vj1CdWZmZXIuYWxsb2NVbnNhZmUoeiksWC5jYXJyeUJ1Zi5jb3B5KFYsMCwwLFguY2FycnlMZW4pLFcuY29weShWLFguY2FycnlMZW4scSxIKX1lbHNlIFY9Vy5zdWJhcnJheShxLEgpO2xldCBCPUhnKFgsVixKKTtLZyhYLFYsVyxCLmxhc3RTbmFwU3RhcnQsQi5sYXN0U25hcEVuZCkscWcoWCxWLEIudHJhaWxTdGFydCksWC5idWZGaWxlT2ZmKz1CLnRyYWlsU3RhcnR9VmcoWCl9ZmluYWxseXthd2FpdCBHLmNsb3NlKCl9cmV0dXJue2JvdW5kYXJ5U3RhcnRPZmZzZXQ6WC5ib3VuZGFyeVN0YXJ0T2Zmc2V0LHBvc3RCb3VuZGFyeUJ1ZjpYLm91dC5idWYuc3ViYXJyYXkoMCxYLm91dC5sZW4pLGhhc1ByZXNlcnZlZFNlZ21lbnQ6WC5oYXNQcmVzZXJ2ZWRTZWdtZW50fX1hc3luYyBmdW5jdGlvbiB6ZygkLFEpe3RyeXtpZihRPndaJiYhUiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfRElTQUJMRV9QUkVDT01QQUNUX1NLSVApKXJldHVybihhd2FpdCBEWigkLFEpKS5wb3N0Qm91bmRhcnlCdWY7cmV0dXJuIGF3YWl0IEJnKCQpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBOZygkKXtsZXQgUT1bXSxKPTEwLFk9JC5sZW5ndGgsWD0wO3doaWxlKFg8WSl7bGV0IFc9JC5pbmRleE9mKDEwLFgpO2lmKFc9PT0tMSlXPVk7bGV0IEc9WDt3aGlsZShHPFcmJiRbR108PTMyKUcrKztpZihYPVcrMSxHPj1XKWNvbnRpbnVlO2xldCBVPSQudG9TdHJpbmcoXCJ1dGYtOFwiLEcsVyk7dHJ5e2xldCBIPWwkKFUpLHE9SC50eXBlO2lmKChxPT09XCJ1c2VyXCJ8fHE9PT1cImFzc2lzdGFudFwifHxxPT09XCJwcm9ncmVzc1wifHxxPT09XCJzeXN0ZW1cInx8cT09PVwiYXR0YWNobWVudFwiKSYmdHlwZW9mIEgudXVpZD09PVwic3RyaW5nXCIpUS5wdXNoKEgpfWNhdGNoe319cmV0dXJuIFF9ZnVuY3Rpb24gd2coJCl7bGV0IFE9bmV3IE1hcDtmb3IobGV0IHogb2YgJClRLnNldCh6LnV1aWQseik7Zm9yKGxldCB6IG9mIFEudmFsdWVzKCkpe2lmKHoudHlwZSE9PVwic3lzdGVtXCJ8fHouc3VidHlwZSE9PVwiY29tcGFjdF9ib3VuZGFyeVwiKWNvbnRpbnVlO2xldCBOPXouY29tcGFjdE1ldGFkYXRhPy5wcmVzZXJ2ZWRNZXNzYWdlcyx3PXouY29tcGFjdE1ldGFkYXRhPy5wcmVzZXJ2ZWRTZWdtZW50O2lmKE4pe2lmKE4udXVpZHMubGVuZ3RoPT09MHx8Ti51dWlkcy5zb21lKChqKT0+IVEuaGFzKGopKSljb250aW51ZTtsZXQgTz1OLmFuY2hvclV1aWQ7Zm9yKGxldCBqIG9mIE4udXVpZHMpe2xldCBBPVEuZ2V0KGopO1Euc2V0KGosey4uLkEscGFyZW50VXVpZDpPfSksTz1qfWxldCBEPU4udXVpZHNbMF0sTT1OLnV1aWRzLmF0KC0xKTtmb3IobGV0W2osQV1vZiBRKWlmKEEucGFyZW50VXVpZD09PU4uYW5jaG9yVXVpZCYmaiE9PUQpUS5zZXQoaix7Li4uQSxwYXJlbnRVdWlkOk19KX1lbHNlIGlmKHcpe2xldCBPPVEuZ2V0KHcuaGVhZFV1aWQpO2lmKE8pUS5zZXQody5oZWFkVXVpZCx7Li4uTyxwYXJlbnRVdWlkOncuYW5jaG9yVXVpZH0pO2ZvcihsZXRbRCxNXW9mIFEpaWYoTS5wYXJlbnRVdWlkPT09dy5hbmNob3JVdWlkJiZEIT09dy5oZWFkVXVpZClRLnNldChELHsuLi5NLHBhcmVudFV1aWQ6dy50YWlsVXVpZH0pfX1sZXQgSj1uZXcgTWFwO2ZvcihsZXQgej0wO3o8JC5sZW5ndGg7eisrKUouc2V0KCRbel0udXVpZCx6KTtsZXQgWT1uZXcgU2V0O2ZvcihsZXQgeiBvZiBRLnZhbHVlcygpKWlmKHoucGFyZW50VXVpZClZLmFkZCh6LnBhcmVudFV1aWQpO2xldCBYPVsuLi5RLnZhbHVlcygpXS5maWx0ZXIoKHopPT4hWS5oYXMoei51dWlkKSksVz1bXTtmb3IobGV0IHogb2YgWCl7bGV0IE49eix3PW5ldyBTZXQ7d2hpbGUoTil7aWYody5oYXMoTi51dWlkKSlicmVhaztpZih3LmFkZChOLnV1aWQpLE4udHlwZT09PVwidXNlclwifHxOLnR5cGU9PT1cImFzc2lzdGFudFwiKXtXLnB1c2goTik7YnJlYWt9Tj1OLnBhcmVudFV1aWQ/US5nZXQoTi5wYXJlbnRVdWlkKTp2b2lkIDB9fWlmKFcubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgRz1XLmZpbHRlcigoeik9PiF6LmlzU2lkZWNoYWluJiYhei50ZWFtTmFtZSYmIXouaXNNZXRhKSxVPSh6KT0+ei5yZWR1Y2UoKE4sdyk9PihKLmdldCh3LnV1aWQpPz8tMSk+KEouZ2V0KE4udXVpZCk/Py0xKT93Ok4pLEg9Ry5sZW5ndGg+MD9VKEcpOlUoVykscT1bXSxWPW5ldyBTZXQsQj1RLmdldChILnV1aWQpO3doaWxlKEIpe2lmKFYuaGFzKEIudXVpZCkpYnJlYWs7Vi5hZGQoQi51dWlkKSxxLnB1c2goQiksQj1CLnBhcmVudFV1aWQ/US5nZXQoQi5wYXJlbnRVdWlkKTp2b2lkIDB9cmV0dXJuIHEucmV2ZXJzZSgpLERnKFEscSxWKX1mdW5jdGlvbiB2SCgkKXtpZigkLnR5cGUhPT1cImFzc2lzdGFudFwiKXJldHVybjtsZXQgUT0kLm1lc3NhZ2U7aWYodHlwZW9mIFEhPT1cIm9iamVjdFwifHxRPT09bnVsbClyZXR1cm47bGV0IEo9US5pZDtyZXR1cm4gdHlwZW9mIEo9PT1cInN0cmluZ1wiP0o6dm9pZCAwfWZ1bmN0aW9uIE9nKCQpe2lmKCQudHlwZSE9PVwidXNlclwifHwhJC5wYXJlbnRVdWlkKXJldHVybiExO2xldCBRPSQubWVzc2FnZTtpZih0eXBlb2YgUSE9PVwib2JqZWN0XCJ8fFE9PT1udWxsKXJldHVybiExO2xldCBKPVEuY29udGVudDtpZighQXJyYXkuaXNBcnJheShKKSlyZXR1cm4hMTtyZXR1cm4gSi5zb21lKChZKT0+dHlwZW9mIFk9PT1cIm9iamVjdFwiJiZZIT09bnVsbCYmWS50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKX1mdW5jdGlvbiBEZygkLFEsSil7bGV0IFk9US5maWx0ZXIoKEIpPT5CLnR5cGU9PT1cImFzc2lzdGFudFwiKTtpZihZLmxlbmd0aD09PTApcmV0dXJuIFE7bGV0IFg9bmV3IE1hcDtmb3IobGV0IEIgb2YgWSl7bGV0IHo9dkgoQik7aWYoeilYLnNldCh6LEIpfWxldCBXPW5ldyBNYXAsRz1uZXcgTWFwO2ZvcihsZXQgQiBvZiAkLnZhbHVlcygpKXtsZXQgej12SChCKTtpZih6KXtsZXQgTj1XLmdldCh6KTtpZihOKU4ucHVzaChCKTtlbHNlIFcuc2V0KHosW0JdKX1lbHNlIGlmKE9nKEIpKXtsZXQgTj1CLnBhcmVudFV1aWQsdz1HLmdldChOKTtpZih3KXcucHVzaChCKTtlbHNlIEcuc2V0KE4sW0JdKX19bGV0IFU9bmV3IFNldCxIPW5ldyBNYXAscT0wO2ZvcihsZXQgQiBvZiBZKXtsZXQgej12SChCKTtpZighenx8VS5oYXMoeikpY29udGludWU7VS5hZGQoeik7bGV0IE49Vy5nZXQoeik/P1tCXSx3PU4uZmlsdGVyKChBKT0+IUouaGFzKEEudXVpZCkpLE89W107Zm9yKGxldCBBIG9mIE4pe2xldCBrPUcuZ2V0KEEudXVpZCk7aWYoIWspY29udGludWU7Zm9yKGxldCB1IG9mIGspaWYoIUouaGFzKHUudXVpZCkpTy5wdXNoKHUpfWlmKHcubGVuZ3RoPT09MCYmTy5sZW5ndGg9PT0wKWNvbnRpbnVlO2xldCBEPShBLGspPT4oQS50aW1lc3RhbXA/P1wiXCIpLmxvY2FsZUNvbXBhcmUoay50aW1lc3RhbXA/P1wiXCIpO3cuc29ydChEKSxPLnNvcnQoRCk7bGV0IE09WC5nZXQoeiksaj1bLi4udywuLi5PXTtmb3IobGV0IEEgb2YgailKLmFkZChBLnV1aWQpO3ErPWoubGVuZ3RoLEguc2V0KE0udXVpZCxqKX1pZihxPT09MClyZXR1cm4gUTtsZXQgVj1bXTtmb3IobGV0IEIgb2YgUSl7Vi5wdXNoKEIpO2xldCB6PUguZ2V0KEIudXVpZCk7aWYoeilWLnB1c2goLi4ueil9cmV0dXJuIFZ9ZnVuY3Rpb24gRmcoJCxRKXtpZigkLnR5cGU9PT1cInVzZXJcInx8JC50eXBlPT09XCJhc3Npc3RhbnRcIik7ZWxzZSBpZigkLnR5cGU9PT1cInN5c3RlbVwiJiZRKTtlbHNlIHJldHVybiExO2lmKCQuaXNNZXRhKXJldHVybiExO2lmKCQuaXNTaWRlY2hhaW4pcmV0dXJuITE7aWYoJC50ZWFtTmFtZSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBDSCgkKXtyZXR1cm57dHlwZTokLnR5cGUsdXVpZDokLnV1aWQsc2Vzc2lvbl9pZDokLnNlc3Npb25JZCxtZXNzYWdlOiQubWVzc2FnZSxwYXJlbnRfdG9vbF91c2VfaWQ6bnVsbCx0aW1lc3RhbXA6JC50aW1lc3RhbXB9fWZ1bmN0aW9uIFRIKCQsUSl7bGV0IEo9UT8ub2Zmc2V0Pz8wO2lmKFE/LmxpbWl0IT09dm9pZCAwJiZRLmxpbWl0PjApcmV0dXJuICQuc2xpY2UoSixKK1EubGltaXQpO2lmKEo+MClyZXR1cm4gJC5zbGljZShKKTtyZXR1cm4gJH1mdW5jdGlvbiBGWigkLFEpe2xldCBKPVtdO2ZvcihsZXQgWSBvZiAkKXtpZih0eXBlb2YgWSE9PVwib2JqZWN0XCJ8fFk9PT1udWxsKWNvbnRpbnVlO2xldCBYPVksVz1YLnR5cGU7aWYoKFc9PT1cInVzZXJcInx8Vz09PVwiYXNzaXN0YW50XCJ8fFc9PT1cInByb2dyZXNzXCJ8fFc9PT1cInN5c3RlbVwifHxXPT09XCJhdHRhY2htZW50XCIpJiZ0eXBlb2YgWC51dWlkPT09XCJzdHJpbmdcIilKLnB1c2goWCl9cmV0dXJuIFpaKEosUSl9ZnVuY3Rpb24gWlooJCxRKXtsZXQgSj13ZygkKSxZPVE/LmluY2x1ZGVTeXN0ZW1NZXNzYWdlcz8/ITEsVz1KLmZpbHRlcigoRyk9PkZnKEcsWSkpLm1hcChDSCk7cmV0dXJuIFRIKFcsUSl9YXN5bmMgZnVuY3Rpb24gTVooJCxRKXtpZighTCQoJCkpcmV0dXJuW107bGV0IEo9YXdhaXQgajEoJCxRPy5kaXIpO2lmKCFKKXJldHVybltdO2xldCBZPWF3YWl0IHpnKEouZmlsZVBhdGgsSi5maWxlU2l6ZSk7aWYoIVkpcmV0dXJuW107cmV0dXJuIFpaKE5nKFkpLFEpfWltcG9ydHtyZWFkZGlyIGFzIHhILHN0YXQgYXMgWmd9ZnJvbVwiZnMvcHJvbWlzZXNcIjtpbXBvcnR7YmFzZW5hbWUgYXMgTWcsam9pbiBhcyBmSH1mcm9tXCJwYXRoXCI7ZnVuY3Rpb24gQzgoJCxRLEope2xldHtoZWFkOlksdGFpbDpYLG10aW1lOlcsc2l6ZTpHfT1RLFU9WS5pbmRleE9mKGBcbmApLEg9VT49MD9ZLnNsaWNlKDAsVSk6WTtpZihILmluY2x1ZGVzKCdcImlzU2lkZWNoYWluXCI6dHJ1ZScpfHxILmluY2x1ZGVzKCdcImlzU2lkZWNoYWluXCI6IHRydWUnKSlyZXR1cm4gbnVsbDtsZXQgcT1MNihYLFwiY3VzdG9tVGl0bGVcIil8fEw2KFksXCJjdXN0b21UaXRsZVwiKXx8TDYoWCxcImFpVGl0bGVcIil8fEw2KFksXCJhaVRpdGxlXCIpfHx2b2lkIDAsVj1DNShZKXx8dm9pZCAwLEI9djUoWSxcInRpbWVzdGFtcFwiKSx6O2lmKEIpe2xldCBqPURhdGUucGFyc2UoQik7aWYoIU51bWJlci5pc05hTihqKSl6PWp9bGV0IE49cXx8TDYoWCxcImxhc3RQcm9tcHRcIil8fEw2KFgsXCJzdW1tYXJ5XCIpfHxWO2lmKCFOKXJldHVybiBudWxsO2xldCB3PUw2KFgsXCJnaXRCcmFuY2hcIil8fHY1KFksXCJnaXRCcmFuY2hcIil8fHZvaWQgMCxPPXY1KFksXCJjd2RcIil8fEp8fHZvaWQgMCxEPVguc3BsaXQoYFxuYCkuZmluZExhc3QoKGopPT5qLmluY2x1ZGVzKCdcInR5cGVcIjpcInRhZ1wiJykmJmouaW5jbHVkZXMoJ1widGFnXCI6XCInKSksTT1EP0w2KEQsXCJ0YWdcIil8fHZvaWQgMDp2b2lkIDA7cmV0dXJue3Nlc3Npb25JZDokLHN1bW1hcnk6TixsYXN0TW9kaWZpZWQ6VyxmaWxlU2l6ZTpHLGN1c3RvbVRpdGxlOnEsZmlyc3RQcm9tcHQ6VixnaXRCcmFuY2g6dyxjd2Q6Tyx0YWc6TSxjcmVhdGVkQXQ6en19YXN5bmMgZnVuY3Rpb24gZTcoJCxRLEope2xldCBZO3RyeXtZPWF3YWl0IHhIKCQpfWNhdGNoe3JldHVybltdfXJldHVybihhd2FpdCBQcm9taXNlLmFsbChZLm1hcChhc3luYyhXKT0+e2lmKCFXLmVuZHNXaXRoKFwiLmpzb25sXCIpKXJldHVybiBudWxsO2xldCBHPUwkKFcuc2xpY2UoMCwtNikpO2lmKCFHKXJldHVybiBudWxsO2xldCBVPWZIKCQsVyk7aWYoIVEpcmV0dXJue3Nlc3Npb25JZDpHLGZpbGVQYXRoOlUsbXRpbWU6MCxwcm9qZWN0UGF0aDpKfTt0cnl7bGV0IEg9YXdhaXQgWmcoVSk7cmV0dXJue3Nlc3Npb25JZDpHLGZpbGVQYXRoOlUsbXRpbWU6SC5tdGltZS5nZXRUaW1lKCkscHJvamVjdFBhdGg6Sn19Y2F0Y2h7cmV0dXJuIG51bGx9fSkpKS5maWx0ZXIoKFcpPT5XIT09bnVsbCl9YXN5bmMgZnVuY3Rpb24gTFooJCl7bGV0IFE9YXdhaXQgVDUoJC5maWxlUGF0aCk7aWYoIVEpcmV0dXJuIG51bGw7bGV0IEo9QzgoJC5zZXNzaW9uSWQsUSwkLnByb2plY3RQYXRoKTtpZighSilyZXR1cm4gbnVsbDtpZigkLm10aW1lKUoubGFzdE1vZGlmaWVkPSQubXRpbWU7cmV0dXJuIEp9dmFyIExnPTMyO2Z1bmN0aW9uIGpnKCQsUSl7aWYoUS5tdGltZSE9PSQubXRpbWUpcmV0dXJuIFEubXRpbWUtJC5tdGltZTtyZXR1cm4gUS5zZXNzaW9uSWQ8JC5zZXNzaW9uSWQ/LTE6US5zZXNzaW9uSWQ+JC5zZXNzaW9uSWQ/MTowfWFzeW5jIGZ1bmN0aW9uIEFnKCQsUSxKKXskLnNvcnQoamcpO2xldCBZPVtdLFg9USYmUT4wP1E6MS8wLFc9MCxHPW5ldyBTZXQ7Zm9yKGxldCBVPTA7VTwkLmxlbmd0aCYmWS5sZW5ndGg8WDspe2xldCBIPU1hdGgubWluKFUrTGcsJC5sZW5ndGgpLHE9JC5zbGljZShVLEgpLFY9YXdhaXQgUHJvbWlzZS5hbGwocS5tYXAoTFopKTtmb3IobGV0IEI9MDtCPFYubGVuZ3RoJiZZLmxlbmd0aDxYO0IrKyl7VSsrO2xldCB6PVZbQl07aWYoIXopY29udGludWU7aWYoRy5oYXMoei5zZXNzaW9uSWQpKWNvbnRpbnVlO2lmKEcuYWRkKHouc2Vzc2lvbklkKSxXPEope1crKztjb250aW51ZX1ZLnB1c2goeil9fXJldHVybiBZfWFzeW5jIGZ1bmN0aW9uIElnKCQpe2xldCBRPWF3YWl0IFByb21pc2UuYWxsKCQubWFwKExaKSksSj1uZXcgTWFwO2ZvcihsZXQgWCBvZiBRKXtpZighWCljb250aW51ZTtsZXQgVz1KLmdldChYLnNlc3Npb25JZCk7aWYoIVd8fFgubGFzdE1vZGlmaWVkPlcubGFzdE1vZGlmaWVkKUouc2V0KFguc2Vzc2lvbklkLFgpfWxldCBZPVsuLi5KLnZhbHVlcygpXTtyZXR1cm4gWS5zb3J0KChYLFcpPT5XLmxhc3RNb2RpZmllZCE9PVgubGFzdE1vZGlmaWVkP1cubGFzdE1vZGlmaWVkLVgubGFzdE1vZGlmaWVkOlcuc2Vzc2lvbklkPFguc2Vzc2lvbklkPy0xOlcuc2Vzc2lvbklkPlguc2Vzc2lvbklkPzE6MCksWX1hc3luYyBmdW5jdGlvbiBSZygkLFEsSil7bGV0IFk9YXdhaXQgTDEoJCksWDtpZihRKXRyeXtYPWF3YWl0IGM0KFkpfWNhdGNoe1g9W119ZWxzZSBYPVtdO2lmKFgubGVuZ3RoPD0xKXtsZXQgQj1bXTtmb3IobGV0IHogb2YgYXdhaXQgTTYoWSkpQi5wdXNoKC4uLmF3YWl0IGU3KHosSixZKSk7cmV0dXJuIEJ9bGV0IFc9SDQoKSxHPXByb2Nlc3MucGxhdGZvcm09PT1cIndpbjMyXCIsVT1YLm1hcCgoQik9PntsZXQgej1NMChCKTtyZXR1cm57cGF0aDpCLHByZWZpeDpHP3oudG9Mb3dlckNhc2UoKTp6fX0pO1Uuc29ydCgoQix6KT0+ei5wcmVmaXgubGVuZ3RoLUIucHJlZml4Lmxlbmd0aCk7bGV0IEg7dHJ5e0g9YXdhaXQgeEgoVyx7d2l0aEZpbGVUeXBlczohMH0pfWNhdGNoe2xldCBCPVtdO2ZvcihsZXQgeiBvZiBhd2FpdCBNNihZKSlCLnB1c2goLi4uYXdhaXQgZTcoeixKLFkpKTtyZXR1cm4gQn1sZXQgcT1bXSxWPW5ldyBTZXQ7Zm9yKGxldCBCIG9mIGF3YWl0IE02KFkpKXtsZXQgej1NZyhCKTtWLmFkZChHP3oudG9Mb3dlckNhc2UoKTp6KSxxLnB1c2goLi4uYXdhaXQgZTcoQixKLFkpKX1mb3IobGV0IEIgb2YgSCl7aWYoIUIuaXNEaXJlY3RvcnkoKSljb250aW51ZTtsZXQgej1HP0IubmFtZS50b0xvd2VyQ2FzZSgpOkIubmFtZTtpZihWLmhhcyh6KSljb250aW51ZTtmb3IobGV0e3BhdGg6TixwcmVmaXg6d31vZiBVKWlmKHo9PT13fHx3Lmxlbmd0aD49djgmJnouc3RhcnRzV2l0aCh3K1wiLVwiKSl7Vi5hZGQoeikscS5wdXNoKC4uLmF3YWl0IGU3KGZIKFcsQi5uYW1lKSxKLE4pKTticmVha319cmV0dXJuIHF9YXN5bmMgZnVuY3Rpb24gUGcoJCl7bGV0IFE9SDQoKSxKO3RyeXtKPWF3YWl0IHhIKFEse3dpdGhGaWxlVHlwZXM6ITB9KX1jYXRjaHtyZXR1cm5bXX1yZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwoSi5maWx0ZXIoKFgpPT5YLmlzRGlyZWN0b3J5KCkpLm1hcCgoWCk9PmU3KGZIKFEsWC5uYW1lKSwkKSkpKS5mbGF0KCl9YXN5bmMgZnVuY3Rpb24galooJCl7bGV0e2RpcjpRLGxpbWl0Okosb2Zmc2V0OlksaW5jbHVkZVdvcmt0cmVlczpYfT0kPz97fSxXPVk/PzAsRz1KIT09dm9pZCAwJiZKPjB8fFc+MCxVPVE/YXdhaXQgUmcoUSxYPz8hMCxHKTphd2FpdCBQZyhHKTtpZighRylyZXR1cm4gSWcoVSk7cmV0dXJuIEFnKFUsSixXKX1hc3luYyBmdW5jdGlvbiBBWigkLFE9e30pe2xldCBKPUwkKCQpO2lmKCFKKXJldHVybjtsZXQgWT1hd2FpdCBqMShKLFEuZGlyKTtpZighWSlyZXR1cm47bGV0IFg9YXdhaXQgVDUoWS5maWxlUGF0aCk7aWYoIVgpcmV0dXJuO3JldHVybiBDOChKLFgsWS5wcm9qZWN0UGF0aCk/P3ZvaWQgMH1pbXBvcnR7Y29uc3RhbnRzIGFzIElafWZyb21cImZzXCI7aW1wb3J0e29wZW4gYXMgRWcscmVhZGRpciBhcyBQWixybSBhcyBSWixzdGF0IGFzIGJnfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2pvaW4gYXMgVDh9ZnJvbVwicGF0aFwiO2FzeW5jIGZ1bmN0aW9uIEVaKCQsUSxKPXt9KXtpZighTCQoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAkeyR9YCk7aWYoIVEudHJpbSgpKXRocm93IEVycm9yKFwidGl0bGUgbXVzdCBiZSBub24tZW1wdHlcIik7bGV0IFk9QiQoe3R5cGU6XCJjdXN0b20tdGl0bGVcIixjdXN0b21UaXRsZTpRLnRyaW0oKSxzZXNzaW9uSWQ6JH0pK2BcbmA7YXdhaXQgU1ooJCxZLEopfWFzeW5jIGZ1bmN0aW9uIGJaKCQsUSxKPXt9KXtpZighTCQoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAkeyR9YCk7aWYoUSE9PW51bGwpe2xldCBYPUYwKFEpLnRyaW0oKTtpZighWCl0aHJvdyBFcnJvcihcInRhZyBtdXN0IGJlIG5vbi1lbXB0eSAodXNlIG51bGwgdG8gY2xlYXIpXCIpO1E9WH1sZXQgWT1CJCh7dHlwZTpcInRhZ1wiLHRhZzpRPz9cIlwiLHNlc3Npb25JZDokfSkrYFxuYDthd2FpdCBTWigkLFksSil9YXN5bmMgZnVuY3Rpb24gX1ooJCxRPXt9KXtpZighTCQoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAkeyR9YCk7Zm9yKGxldCBKIG9mIGF3YWl0IF9nKFEpKXtsZXQgWT1UOChKLGAkeyR9Lmpzb25sYCksWDt0cnl7KHtzaXplOlh9PWF3YWl0IGJnKFkpKX1jYXRjaChXKXtsZXQgRz1vJChXKTtpZihHPT09XCJFTk9FTlRcInx8Rz09PVwiRU5PVERJUlwiKWNvbnRpbnVlO3Rocm93IFd9aWYoWD09PTApY29udGludWU7YXdhaXQgUlooWSx7Zm9yY2U6ITB9KSxhd2FpdCBSWihUOChKLCQpLHtyZWN1cnNpdmU6ITAsZm9yY2U6ITB9KTtyZXR1cm59dGhyb3cgRXJyb3IoUS5kaXI/YFNlc3Npb24gJHskfSBub3QgZm91bmQgaW4gcHJvamVjdCBkaXJlY3RvcnkgZm9yICR7US5kaXJ9YDpgU2Vzc2lvbiAkeyR9IG5vdCBmb3VuZCBpbiBhbnkgcHJvamVjdCBkaXJlY3RvcnlgKX1hc3luYyBmdW5jdGlvbiBfZygkKXtpZigkLmRpcil7bGV0IEo9YXdhaXQgTDEoJC5kaXIpLFk9YXdhaXQgTTYoSiksWDt0cnl7WD1hd2FpdCBjNChKKX1jYXRjaHtYPVtdfWZvcihsZXQgVyBvZiBYKXtpZihXPT09Siljb250aW51ZTtZLnB1c2goLi4uYXdhaXQgTTYoVykpfXJldHVybiBZfWxldCBRPUg0KCk7dHJ5e3JldHVybihhd2FpdCBQWihRLHt3aXRoRmlsZVR5cGVzOiEwfSkpLmZpbHRlcigoWSk9PlkuaXNEaXJlY3RvcnkoKXx8WS5pc1N5bWJvbGljTGluaygpKS5tYXAoKFkpPT5UOChRLFkubmFtZSkpfWNhdGNoe3JldHVybltdfX1hc3luYyBmdW5jdGlvbiBTWigkLFEsSil7bGV0IFk9YCR7JH0uanNvbmxgO2lmKEouZGlyKXtsZXQgRz1hd2FpdCBMMShKLmRpcik7Zm9yKGxldCBIIG9mIGF3YWl0IE02KEcpKWlmKGF3YWl0IHlIKFQ4KEgsWSksUSkpcmV0dXJuO2xldCBVO3RyeXtVPWF3YWl0IGM0KEcpfWNhdGNoe1U9W119Zm9yKGxldCBIIG9mIFUpe2lmKEg9PT1HKWNvbnRpbnVlO2ZvcihsZXQgcSBvZiBhd2FpdCBNNihIKSlpZihhd2FpdCB5SChUOChxLFkpLFEpKXJldHVybn10aHJvdyBFcnJvcihgU2Vzc2lvbiAkeyR9IG5vdCBmb3VuZCBpbiBwcm9qZWN0IGRpcmVjdG9yeSBmb3IgJHtKLmRpcn1gKX1sZXQgWD1INCgpLFc7dHJ5e1c9YXdhaXQgUFooWCl9Y2F0Y2h7dGhyb3cgRXJyb3IoYFNlc3Npb24gJHskfSBub3QgZm91bmQgKG5vIHByb2plY3RzIGRpcmVjdG9yeSlgKX1mb3IobGV0IEcgb2YgVylpZihhd2FpdCB5SChUOChYLEcsWSksUSkpcmV0dXJuO3Rocm93IEVycm9yKGBTZXNzaW9uICR7JH0gbm90IGZvdW5kIGluIGFueSBwcm9qZWN0IGRpcmVjdG9yeWApfWFzeW5jIGZ1bmN0aW9uIHlIKCQsUSl7bGV0IEo7dHJ5e0o9YXdhaXQgRWcoJCxJWi5PX1dST05MWXxJWi5PX0FQUEVORCl9Y2F0Y2goWSl7bGV0IFg9byQoWSk7aWYoWD09PVwiRU5PRU5UXCJ8fFg9PT1cIkVOT1RESVJcIilyZXR1cm4hMTt0aHJvdyBZfXRyeXtsZXR7c2l6ZTpZfT1hd2FpdCBKLnN0YXQoKTtpZihZPT09MClyZXR1cm4hMTtsZXQgWD1wcm9jZXNzLnBsYXRmb3JtPT09XCJ3aW4zMlwiP1k6dm9pZCAwO3JldHVybiBhd2FpdCBKLndyaXRlKFEsWCxcInV0ZjhcIiksITB9ZmluYWxseXthd2FpdCBKLmNsb3NlKCl9fWltcG9ydHtyYW5kb21VVUlEIGFzIHg1fWZyb21cImNyeXB0b1wiO2ltcG9ydHtqb2luIGFzIHVIfWZyb21cInBhdGhcIjtpbXBvcnR7QXN5bmNMb2NhbFN0b3JhZ2UgYXMgZmd9ZnJvbVwiYXN5bmNfaG9va3NcIjtpbXBvcnR7bWtkaXIgYXMgeWcscmVhZGRpciBhcyBnZyxyZWFkRmlsZSBhcyB2Wix1bmxpbmsgYXMgaGcsd3JpdGVGaWxlIGFzIHVnfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e3JhbmRvbUJ5dGVzIGFzIFNnfWZyb21cImNyeXB0b1wiO2ltcG9ydHtjb3B5RmlsZSBhcyBrZyxyZW5hbWUgYXMgdmcsdW5saW5rIGFzIGdILHdyaXRlRmlsZSBhcyBDZ31mcm9tXCJmcy9wcm9taXNlc1wiO3ZhciBUZz1uZXcgU2V0KFtcIkVYREVWXCIsXCJFUEVSTVwiLFwiRUVYSVNUXCIsXCJFQlVTWVwiXSkseGc9bmV3IFNldChbXCJFTk9TUENcIixcIkVJT1wiLFwiRURRVU9UXCIsXCJFRkJJR1wiXSk7YXN5bmMgZnVuY3Rpb24ga1ooJCxRLEope2xldCBZPWAkeyR9LnRtcC4ke1NnKDQpLnRvU3RyaW5nKFwiaGV4XCIpfWA7dHJ5e2F3YWl0IENnKFksUSx7ZW5jb2Rpbmc6XCJ1dGY4XCIsbW9kZTpKfSk7dHJ5e2F3YWl0IHZnKFksJCl9Y2F0Y2goWCl7bGV0IFc9byQoWCk7aWYoVyE9PXZvaWQgMCYmVGcuaGFzKFcpKXt0cnl7YXdhaXQga2coWSwkKX1jYXRjaChHKXtpZih4Zy5oYXMobyQoRyk/P1wiXCIpKWF3YWl0IGdIKCQpLmNhdGNoKCgpPT57fSk7dGhyb3cgR31hd2FpdCBnSChZKS5jYXRjaCgoKT0+e30pfWVsc2UgdGhyb3cgWH19Y2F0Y2goWCl7dGhyb3cgYXdhaXQgZ0goWSkuY2F0Y2goKCk9Pnt9KSxYfX1jbGFzcyBDWntyZWFkKCQpe3JldHVybiB2WigkLFwidXRmOFwiKX1yZWFkQnl0ZXMoJCl7cmV0dXJuIHZaKCQpfXdyaXRlKCQsUSl7cmV0dXJuIHVnKCQsUSxcInV0ZjhcIil9YXN5bmMgbWtkaXIoJCl7dHJ5e2F3YWl0IHlnKCQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKFEpe2lmKG8kKFEpIT09XCJFRVhJU1RcIil0aHJvdyBRfX1hdG9taWNXcml0ZSgkLFEsSil7cmV0dXJuIGtaKCQsUSxKKX1kZWxldGUoJCl7cmV0dXJuIGhnKCQpfWxpc3QoJCl7cmV0dXJuIGdnKCQpfX12YXIgbWc9bmV3IGZnO2Z1bmN0aW9uIGhIKCl7cmV0dXJuIG1nLmdldFN0b3JlKCk/P25ldyBDWn1hc3luYyBmdW5jdGlvbiBsZygkLFEpe2xldCBKPWAkeyR9Lmpzb25sYDthc3luYyBmdW5jdGlvbiBZKEcpe3RyeXtsZXQgVT1hd2FpdCBoSCgpLnJlYWRCeXRlcyh1SChHLEopKTtpZihVLmxlbmd0aD09PTApcmV0dXJuIG51bGw7cmV0dXJue2J1ZjpVLHByb2plY3REaXI6R319Y2F0Y2h7cmV0dXJuIG51bGx9fWlmKFEpe2xldCBHPWF3YWl0IEwxKFEpO2ZvcihsZXQgSCBvZiBhd2FpdCBNNihHKSl7bGV0IHE9YXdhaXQgWShIKTtpZihxKXJldHVybiBxfWxldCBVO3RyeXtVPWF3YWl0IGM0KEcpfWNhdGNoe1U9W119Zm9yKGxldCBIIG9mIFUpe2lmKEg9PT1HKWNvbnRpbnVlO2ZvcihsZXQgcSBvZiBhd2FpdCBNNihIKSl7bGV0IFY9YXdhaXQgWShxKTtpZihWKXJldHVybiBWfX1yZXR1cm4gbnVsbH1sZXQgWD1INCgpLFc7dHJ5e1c9YXdhaXQgaEgoKS5saXN0KFgpfWNhdGNoe3JldHVybiBudWxsfWZvcihsZXQgRyBvZiBXKXtsZXQgVT1hd2FpdCBZKHVIKFgsRykpO2lmKFUpcmV0dXJuIFV9cmV0dXJuIG51bGx9dmFyIGNnPW5ldyBTZXQoW1widXNlclwiLFwiYXNzaXN0YW50XCIsXCJhdHRhY2htZW50XCIsXCJzeXN0ZW1cIixcInByb2dyZXNzXCJdKTtmdW5jdGlvbiBwZygkLFEpe2xldCBKPVtdLFk9W10sWD0xMCxXPSQubGVuZ3RoLEc9MDt3aGlsZShHPFcpe2xldCBVPSQuaW5kZXhPZigxMCxHKTtpZihVPT09LTEpVT1XO2xldCBIPUc7d2hpbGUoSDxVJiYkW0hdPD0zMilIKys7aWYoRz1VKzEsSD49VSljb250aW51ZTtsZXQgcT0kLnRvU3RyaW5nKFwidXRmLThcIixILFUpO3RyeXtUWihsJChxKSxRLEosWSl9Y2F0Y2h7fX1yZXR1cm57dHJhbnNjcmlwdDpKLGNvbnRlbnRSZXBsYWNlbWVudHM6WX19ZnVuY3Rpb24gZGcoJCxRKXtsZXQgSj1bXSxZPVtdO2ZvcihsZXQgWCBvZiAkKXtpZih0eXBlb2YgWCE9PVwib2JqZWN0XCJ8fFg9PT1udWxsKWNvbnRpbnVlO1RaKFgsUSxKLFkpfXJldHVybnt0cmFuc2NyaXB0OkosY29udGVudFJlcGxhY2VtZW50czpZfX1mdW5jdGlvbiBUWigkLFEsSixZKXtpZihjZy5oYXMoJC50eXBlKSYmdHlwZW9mICQudXVpZD09PVwic3RyaW5nXCIpSi5wdXNoKCQpO2Vsc2UgaWYoJC50eXBlPT09XCJjb250ZW50LXJlcGxhY2VtZW50XCImJiQuc2Vzc2lvbklkPT09USYmQXJyYXkuaXNBcnJheSgkLnJlcGxhY2VtZW50cykpWS5wdXNoKC4uLiQucmVwbGFjZW1lbnRzKX1hc3luYyBmdW5jdGlvbiB4WigkLFE9e30pe2lmKCFMJCgkKSl0aHJvdyBFcnJvcihgSW52YWxpZCBzZXNzaW9uSWQ6ICR7JH1gKTtpZihRLnVwVG9NZXNzYWdlSWQmJiFMJChRLnVwVG9NZXNzYWdlSWQpKXRocm93IEVycm9yKGBJbnZhbGlkIHVwVG9NZXNzYWdlSWQ6ICR7US51cFRvTWVzc2FnZUlkfWApO2xldCBKPWF3YWl0IGxnKCQsUS5kaXIpO2lmKCFKKXRocm93IEVycm9yKFEuZGlyP2BTZXNzaW9uICR7JH0gbm90IGZvdW5kIGluIHByb2plY3QgZGlyZWN0b3J5IGZvciAke1EuZGlyfWA6YFNlc3Npb24gJHskfSBub3QgZm91bmRgKTtsZXR7ZW50cmllczpZLGZvcmtlZFNlc3Npb25JZDpYfT1pZyhKLmJ1ZiwkLFEpO3JldHVybiBhd2FpdCBzNyh1SChKLnByb2plY3REaXIsYCR7WH0uanNvbmxgKSxZKSx7c2Vzc2lvbklkOlh9fWZ1bmN0aW9uIGlnKCQsUSxKKXtsZXQgWT1wZygkLFEpO3JldHVybiB5WihZLFEsSiwoKT0+e2xldCBXPSQubGVuZ3RoLEc9JC50b1N0cmluZyhcInV0Zi04XCIsMCxNYXRoLm1pbihXLFU0KSksVT0kLnRvU3RyaW5nKFwidXRmLThcIixNYXRoLm1heCgwLFctVTQpKTtyZXR1cm4gTDYoVSxcImN1c3RvbVRpdGxlXCIpfHxMNihHLFwiY3VzdG9tVGl0bGVcIil8fEw2KFUsXCJhaVRpdGxlXCIpfHxMNihHLFwiYWlUaXRsZVwiKXx8QzUoRyl9KX1mdW5jdGlvbiBmWigkLFEsSil7bGV0IFk9ZGcoJCxRKTtyZXR1cm4geVooWSxRLEosKCk9Pm5nKCQpKX1mdW5jdGlvbiBuZygkKXtsZXQgUSxKO2ZvcihsZXQgWSBvZiAkKXtpZih0eXBlb2YgWSE9PVwib2JqZWN0XCJ8fFk9PT1udWxsKWNvbnRpbnVlO2xldCBYPVk7aWYodHlwZW9mIFguY3VzdG9tVGl0bGU9PT1cInN0cmluZ1wiJiZYLmN1c3RvbVRpdGxlKVE9WC5jdXN0b21UaXRsZTtpZih0eXBlb2YgWC5haVRpdGxlPT09XCJzdHJpbmdcIiYmWC5haVRpdGxlKUo9WC5haVRpdGxlfXJldHVybiBRfHxKfHxOWigkKXx8dm9pZCAwfWZ1bmN0aW9uIHlaKCQsUSxKLFkpe2xldCBYPSQudHJhbnNjcmlwdC5maWx0ZXIoKHopPT4hei5pc1NpZGVjaGFpbik7aWYoWC5sZW5ndGg9PT0wKXRocm93IEVycm9yKGBTZXNzaW9uICR7UX0gaGFzIG5vIG1lc3NhZ2VzIHRvIGZvcmtgKTtpZihKLnVwVG9NZXNzYWdlSWQpe2xldCB6PVguZmluZEluZGV4KChOKT0+Ti51dWlkPT09Si51cFRvTWVzc2FnZUlkKTtpZih6PT09LTEpdGhyb3cgRXJyb3IoYE1lc3NhZ2UgJHtKLnVwVG9NZXNzYWdlSWR9IG5vdCBmb3VuZCBpbiBzZXNzaW9uICR7UX1gKTtYPVguc2xpY2UoMCx6KzEpfWxldCBXPW5ldyBNYXA7Zm9yKGxldCB6IG9mIFgpVy5zZXQoei51dWlkLHg1KCkpO2xldCBHPVguZmlsdGVyKCh6KT0+ei50eXBlIT09XCJwcm9ncmVzc1wiKTtpZihHLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoYFNlc3Npb24gJHtRfSBoYXMgbm8gbWVzc2FnZXMgdG8gZm9ya2ApO2xldCBVPW5ldyBNYXA7Zm9yKGxldCB6IG9mIFgpVS5zZXQoei51dWlkLHopO2xldCBIPXg1KCkscT1uZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksVj1bXTtmb3IobGV0IHo9MDt6PEcubGVuZ3RoO3orKyl7bGV0IE49R1t6XSx3PVcuZ2V0KE4udXVpZCksTz1udWxsLEQ9Ti5wYXJlbnRVdWlkO3doaWxlKEQpe2xldCBrPVUuZ2V0KEQpO2lmKCFrKWJyZWFrO2lmKGsudHlwZSE9PVwicHJvZ3Jlc3NcIil7Tz1XLmdldChEKT8/bnVsbDticmVha31EPWsucGFyZW50VXVpZH1sZXQgTT16PT09Ry5sZW5ndGgtMT9xOk4udGltZXN0YW1wLGo9Ti5sb2dpY2FsUGFyZW50VXVpZD09bnVsbD9OLmxvZ2ljYWxQYXJlbnRVdWlkOlcuZ2V0KE4ubG9naWNhbFBhcmVudFV1aWQpPz9udWxsLEE9ey4uLk4sdXVpZDp3LHBhcmVudFV1aWQ6Tyxsb2dpY2FsUGFyZW50VXVpZDpqLHNlc3Npb25JZDpILHRpbWVzdGFtcDpNLGlzU2lkZWNoYWluOiExLHRlYW1OYW1lOnZvaWQgMCxhZ2VudE5hbWU6dm9pZCAwLHNsdWc6dm9pZCAwLHNvdXJjZVRvb2xBc3Npc3RhbnRVVUlEOnZvaWQgMCxmb3JrZWRGcm9tOntzZXNzaW9uSWQ6USxtZXNzYWdlVXVpZDpOLnV1aWR9fTtWLnB1c2goQSl9aWYoJC5jb250ZW50UmVwbGFjZW1lbnRzLmxlbmd0aD4wKVYucHVzaCh7dHlwZTpcImNvbnRlbnQtcmVwbGFjZW1lbnRcIixzZXNzaW9uSWQ6SCxyZXBsYWNlbWVudHM6JC5jb250ZW50UmVwbGFjZW1lbnRzLHV1aWQ6eDUoKSx0aW1lc3RhbXA6cX0pO2xldCBCPUoudGl0bGU/LnRyaW0oKTtpZighQilCPWAke1koKXx8XCJGb3JrZWQgc2Vzc2lvblwifSAoZm9yaylgO3JldHVybiBWLnB1c2goe3R5cGU6XCJjdXN0b20tdGl0bGVcIixzZXNzaW9uSWQ6SCxjdXN0b21UaXRsZTpCLHV1aWQ6eDUoKSx0aW1lc3RhbXA6cX0pLHtlbnRyaWVzOlYsZm9ya2VkU2Vzc2lvbklkOkh9fWltcG9ydHtyZWFkZGlyIGFzIHJnLHJlYWRGaWxlIGFzIG9nfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2pvaW4gYXMgbUh9ZnJvbVwicGF0aFwiO2FzeW5jIGZ1bmN0aW9uIGdaKCQsUSl7bGV0IEo9YXdhaXQgajEoJCxRKTtpZighSilyZXR1cm4gbnVsbDtsZXQgWT1KLmZpbGVQYXRoLnJlcGxhY2UoL1xcLmpzb25sJC8sXCJcIik7cmV0dXJuIG1IKFksXCJzdWJhZ2VudHNcIil9YXN5bmMgZnVuY3Rpb24gaFooJCl7bGV0IFE9W107YXN5bmMgZnVuY3Rpb24gSihZKXtsZXQgWDt0cnl7WD1hd2FpdCByZyhZLHt3aXRoRmlsZVR5cGVzOiEwfSl9Y2F0Y2h7cmV0dXJufWZvcihsZXQgVyBvZiBYKWlmKFcuaXNGaWxlKCkmJlcubmFtZS5zdGFydHNXaXRoKFwiYWdlbnQtXCIpJiZXLm5hbWUuZW5kc1dpdGgoXCIuanNvbmxcIikpe2xldCBHPVcubmFtZS5zbGljZSg2LC02KTtRLnB1c2goe2FnZW50SWQ6RyxmaWxlUGF0aDptSChZLFcubmFtZSl9KX1lbHNlIGlmKFcuaXNEaXJlY3RvcnkoKSlhd2FpdCBKKG1IKFksVy5uYW1lKSl9cmV0dXJuIGF3YWl0IEooJCksUX1mdW5jdGlvbiB0ZygkKXtsZXQgUT1bXSxKPTEwLFk9JC5sZW5ndGgsWD0wO3doaWxlKFg8WSl7bGV0IFc9JC5pbmRleE9mKDEwLFgpO2lmKFc9PT0tMSlXPVk7bGV0IEc9WDt3aGlsZShHPFcmJiRbR108PTMyKUcrKztpZihYPVcrMSxHPj1XKWNvbnRpbnVlO2xldCBVPSQudG9TdHJpbmcoXCJ1dGYtOFwiLEcsVyk7dHJ5e2xldCBIPWwkKFUpLHE9SC50eXBlO2lmKChxPT09XCJ1c2VyXCJ8fHE9PT1cImFzc2lzdGFudFwiKSYmdHlwZW9mIEgudXVpZD09PVwic3RyaW5nXCIpUS5wdXNoKEgpfWNhdGNoe319cmV0dXJuIFF9ZnVuY3Rpb24gYWcoJCl7aWYoJC5sZW5ndGg9PT0wKXJldHVybltdO2xldCBRPW5ldyBNYXA7Zm9yKGxldCBHIG9mICQpUS5zZXQoRy51dWlkLEcpO2xldCBKPSQuZmluZExhc3QoKEcpPT5HLnR5cGU9PT1cInVzZXJcInx8Ry50eXBlPT09XCJhc3Npc3RhbnRcIik7aWYoIUopcmV0dXJuW107bGV0IFk9W10sWD1uZXcgU2V0LFc9Sjt3aGlsZShXKXtpZihYLmhhcyhXLnV1aWQpKWJyZWFrO1guYWRkKFcudXVpZCksWS5wdXNoKFcpLFc9Vy5wYXJlbnRVdWlkP1EuZ2V0KFcucGFyZW50VXVpZCk6dm9pZCAwfXJldHVybiBZLnJldmVyc2UoKSxZfWFzeW5jIGZ1bmN0aW9uIHVaKCQsUSl7aWYoIUwkKCQpKXJldHVybltdO2xldCBKPWF3YWl0IGdaKCQsUT8uZGlyKTtpZighSilyZXR1cm5bXTtyZXR1cm4oYXdhaXQgaFooSikpLm1hcCgoWCk9PlguYWdlbnRJZCl9YXN5bmMgZnVuY3Rpb24gbVooJCxRLEope2lmKCFMJCgkKSlyZXR1cm5bXTtpZighUSlyZXR1cm5bXTtsZXQgWT1hd2FpdCBnWigkLEo/LmRpcik7aWYoIVkpcmV0dXJuW107bGV0IFc9KGF3YWl0IGhaKFkpKS5maW5kKChVKT0+VS5hZ2VudElkPT09USk7aWYoIVcpcmV0dXJuW107bGV0IEc7dHJ5e0c9YXdhaXQgb2coVy5maWxlUGF0aCl9Y2F0Y2h7cmV0dXJuW119cmV0dXJuIGxIKEcsSil9ZnVuY3Rpb24gbEgoJCxRKXtpZigkLmxlbmd0aD09PTApcmV0dXJuW107bGV0IEo9dGcoJCksWD1hZyhKKS5maWx0ZXIoKFcpPT5XLnR5cGU9PT1cInVzZXJcInx8Vy50eXBlPT09XCJhc3Npc3RhbnRcIikubWFwKENIKTtyZXR1cm4gVEgoWCxRKX1pbXBvcnR7Y3JlYXRlSGFzaCBhcyBHaH1mcm9tXCJjcnlwdG9cIjtpbXBvcnR7dXNlckluZm8gYXMgVWh9ZnJvbVwib3NcIjtmdW5jdGlvbiBjSCgkLFEpe2xldCBKPTA7Zm9yKGxldCBZIG9mICQpSis9KyEhUShZKTtyZXR1cm4gSn1mdW5jdGlvbiBmNSgkKXtyZXR1cm5bLi4ubmV3IFNldCgkKV19ZnVuY3Rpb24gc2coKXtyZXR1cm5cInByb2RcIn12YXIgZWc9XCJ1c2VyOmluZmVyZW5jZVwiLGNaPVwidXNlcjpwcm9maWxlXCIsJGg9XCJvcmc6Y3JlYXRlX2FwaV9rZXlcIjt2YXIgUWg9WyRoLGNaXSxKaD1bY1osZWcsXCJ1c2VyOnNlc3Npb25zOmNsYXVkZV9jb2RlXCIsXCJ1c2VyOm1jcF9zZXJ2ZXJzXCIsXCJ1c2VyOmZpbGVfdXBsb2FkXCIsLi4uW11dLGdVJD1mNShbLi4uUWgsLi4uSmhdKSxsWj17QkFTRV9BUElfVVJMOlwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiLENPTlNPTEVfQVVUSE9SSVpFX1VSTDpcImh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9vYXV0aC9hdXRob3JpemVcIixDTEFVREVfQUlfQVVUSE9SSVpFX1VSTDpcImh0dHBzOi8vY2xhdWRlLmNvbS9jYWkvb2F1dGgvYXV0aG9yaXplXCIsQ0xBVURFX0FJX09SSUdJTjpcImh0dHBzOi8vY2xhdWRlLmFpXCIsVE9LRU5fVVJMOlwiaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL3YxL29hdXRoL3Rva2VuXCIsQVBJX0tFWV9VUkw6XCJodHRwczovL2FwaS5hbnRocm9waWMuY29tL2FwaS9vYXV0aC9jbGF1ZGVfY2xpL2NyZWF0ZV9hcGlfa2V5XCIsUk9MRVNfVVJMOlwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9yb2xlc1wiLENPTlNPTEVfU1VDQ0VTU19VUkw6XCJodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vYnV5X2NyZWRpdHM/cmV0dXJuVXJsPS9vYXV0aC9jb2RlL3N1Y2Nlc3MlM0ZhcHAlM0RjbGF1ZGUtY29kZVwiLENMQVVERUFJX1NVQ0NFU1NfVVJMOlwiaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL29hdXRoL2NvZGUvc3VjY2Vzcz9hcHA9Y2xhdWRlLWNvZGVcIixNQU5VQUxfUkVESVJFQ1RfVVJMOlwiaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL29hdXRoL2NvZGUvY2FsbGJhY2tcIixDTElFTlRfSUQ6XCI5ZDFjMjUwYS1lNjFiLTQ0ZDktODhlZC01OTQ0ZDE5NjJmNWVcIixPQVVUSF9GSUxFX1NVRkZJWDpcIlwiLE1DUF9QUk9YWV9VUkw6XCJodHRwczovL21jcC1wcm94eS5hbnRocm9waWMuY29tXCIsTUNQX1BST1hZX1BBVEg6XCIvdjEvbWNwL3tzZXJ2ZXJfaWR9XCJ9O3ZhciBYaD12b2lkIDA7ZnVuY3Rpb24gWWgoKXtsZXQgJD1wcm9jZXNzLmVudi5DTEFVREVfTE9DQUxfT0FVVEhfQVBJX0JBU0U/LnJlcGxhY2UoL1xcLyQvLFwiXCIpPz9cImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMFwiLFE9cHJvY2Vzcy5lbnYuQ0xBVURFX0xPQ0FMX09BVVRIX0FQUFNfQkFTRT8ucmVwbGFjZSgvXFwvJC8sXCJcIik/P1wiaHR0cDovL2xvY2FsaG9zdDo0MDAwXCIsSj1wcm9jZXNzLmVudi5DTEFVREVfTE9DQUxfT0FVVEhfQ09OU09MRV9CQVNFPy5yZXBsYWNlKC9cXC8kLyxcIlwiKT8/XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIjtyZXR1cm57QkFTRV9BUElfVVJMOiQsQ09OU09MRV9BVVRIT1JJWkVfVVJMOmAke0p9L29hdXRoL2F1dGhvcml6ZWAsQ0xBVURFX0FJX0FVVEhPUklaRV9VUkw6YCR7UX0vb2F1dGgvYXV0aG9yaXplYCxDTEFVREVfQUlfT1JJR0lOOlEsVE9LRU5fVVJMOmAkeyR9L3YxL29hdXRoL3Rva2VuYCxBUElfS0VZX1VSTDpgJHskfS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9jcmVhdGVfYXBpX2tleWAsUk9MRVNfVVJMOmAkeyR9L2FwaS9vYXV0aC9jbGF1ZGVfY2xpL3JvbGVzYCxDT05TT0xFX1NVQ0NFU1NfVVJMOmAke0p9L2J1eV9jcmVkaXRzP3JldHVyblVybD0vb2F1dGgvY29kZS9zdWNjZXNzJTNGYXBwJTNEY2xhdWRlLWNvZGVgLENMQVVERUFJX1NVQ0NFU1NfVVJMOmAke0p9L29hdXRoL2NvZGUvc3VjY2Vzcz9hcHA9Y2xhdWRlLWNvZGVgLE1BTlVBTF9SRURJUkVDVF9VUkw6YCR7Sn0vb2F1dGgvY29kZS9jYWxsYmFja2AsQ0xJRU5UX0lEOlwiMjI0MjI3NTYtNjBjOS00MDg0LThlYjctMjc3MDVmZDVjZjlhXCIsT0FVVEhfRklMRV9TVUZGSVg6XCItbG9jYWwtb2F1dGhcIixNQ1BfUFJPWFlfVVJMOlwiaHR0cDovL2xvY2FsaG9zdDo4MjA1XCIsTUNQX1BST1hZX1BBVEg6XCIvdjEvdG9vbGJveC9zaHR0cC9tY3Ave3NlcnZlcl9pZH1cIn19dmFyIFdoPVtcImh0dHBzOi8vYmVhY29uLmNsYXVkZS1haS5zdGFnaW5nLmFudC5kZXZcIixcImh0dHBzOi8vY2xhdWRlLmZlZHN0YXJ0LmNvbVwiLFwiaHR0cHM6Ly9jbGF1ZGUtc3RhZ2luZy5mZWRzdGFydC5jb21cIl07ZnVuY3Rpb24gcFooKXtsZXQgJD0oKCk9Pntzd2l0Y2goc2coKSl7Y2FzZVwibG9jYWxcIjpyZXR1cm4gWWgoKTtjYXNlXCJzdGFnaW5nXCI6cmV0dXJuIFhoPz9sWjtjYXNlXCJwcm9kXCI6cmV0dXJuIGxafX0pKCksUT1wcm9jZXNzLmVudi5DTEFVREVfQ09ERV9DVVNUT01fT0FVVEhfVVJMO2lmKFEpe2xldCBZPVEucmVwbGFjZSgvXFwvJC8sXCJcIik7aWYoIVdoLmluY2x1ZGVzKFkpKXRocm93IEVycm9yKFwiQ0xBVURFX0NPREVfQ1VTVE9NX09BVVRIX1VSTCBpcyBub3QgYW4gYXBwcm92ZWQgZW5kcG9pbnQuXCIpOyQ9ey4uLiQsQkFTRV9BUElfVVJMOlksQ09OU09MRV9BVVRIT1JJWkVfVVJMOmAke1l9L29hdXRoL2F1dGhvcml6ZWAsQ0xBVURFX0FJX0FVVEhPUklaRV9VUkw6YCR7WX0vb2F1dGgvYXV0aG9yaXplYCxDTEFVREVfQUlfT1JJR0lOOlksVE9LRU5fVVJMOmAke1l9L3YxL29hdXRoL3Rva2VuYCxBUElfS0VZX1VSTDpgJHtZfS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9jcmVhdGVfYXBpX2tleWAsUk9MRVNfVVJMOmAke1l9L2FwaS9vYXV0aC9jbGF1ZGVfY2xpL3JvbGVzYCxDT05TT0xFX1NVQ0NFU1NfVVJMOmAke1l9L29hdXRoL2NvZGUvc3VjY2Vzcz9hcHA9Y2xhdWRlLWNvZGVgLENMQVVERUFJX1NVQ0NFU1NfVVJMOmAke1l9L29hdXRoL2NvZGUvc3VjY2Vzcz9hcHA9Y2xhdWRlLWNvZGVgLE1BTlVBTF9SRURJUkVDVF9VUkw6YCR7WX0vb2F1dGgvY29kZS9jYWxsYmFja2AsT0FVVEhfRklMRV9TVUZGSVg6XCItY3VzdG9tLW9hdXRoXCJ9fWxldCBKPXByb2Nlc3MuZW52LkNMQVVERV9DT0RFX09BVVRIX0NMSUVOVF9JRDtpZihKKSQ9ey4uLiQsQ0xJRU5UX0lEOkp9O3JldHVybiAkfXZhciBkWj1cIi1jcmVkZW50aWFsc1wiO2Z1bmN0aW9uIGlaKCQ9XCJcIil7bGV0IFE9cDYoKSxZPSFwcm9jZXNzLmVudi5DTEFVREVfQ09ORklHX0RJUj9cIlwiOmAtJHtHaChcInNoYTI1NlwiKS51cGRhdGUoUSkuZGlnZXN0KFwiaGV4XCIpLnN1YnN0cmluZygwLDgpfWA7cmV0dXJuYENsYXVkZSBDb2RlJHtwWigpLk9BVVRIX0ZJTEVfU1VGRklYfSR7JH0ke1l9YH12YXIgSGg9L15bYS16QS1aMC05Ll8tXSskLztmdW5jdGlvbiBuWigpe2xldCAkO3RyeXskPXByb2Nlc3MuZW52LlVTRVJ8fFVoKCkudXNlcm5hbWV9Y2F0Y2h7JD1cImNsYXVkZS1jb2RlLXVzZXJcIn1pZighSGgudGVzdCgkKSlyZXR1cm5cImNsYXVkZS1jb2RlLXVzZXJcIjtyZXR1cm4gJH12YXIgVSQ7KGZ1bmN0aW9uKCQpeyQuYXNzZXJ0RXF1YWw9KFgpPT57fTtmdW5jdGlvbiBRKFgpe30kLmFzc2VydElzPVE7ZnVuY3Rpb24gSihYKXt0aHJvdyBFcnJvcigpfSQuYXNzZXJ0TmV2ZXI9SiwkLmFycmF5VG9FbnVtPShYKT0+e2xldCBXPXt9O2ZvcihsZXQgRyBvZiBYKVdbR109RztyZXR1cm4gV30sJC5nZXRWYWxpZEVudW1WYWx1ZXM9KFgpPT57bGV0IFc9JC5vYmplY3RLZXlzKFgpLmZpbHRlcigoVSk9PnR5cGVvZiBYW1hbVV1dIT09XCJudW1iZXJcIiksRz17fTtmb3IobGV0IFUgb2YgVylHW1VdPVhbVV07cmV0dXJuICQub2JqZWN0VmFsdWVzKEcpfSwkLm9iamVjdFZhbHVlcz0oWCk9PntyZXR1cm4gJC5vYmplY3RLZXlzKFgpLm1hcChmdW5jdGlvbihXKXtyZXR1cm4gWFtXXX0pfSwkLm9iamVjdEtleXM9dHlwZW9mIE9iamVjdC5rZXlzPT09XCJmdW5jdGlvblwiPyhYKT0+T2JqZWN0LmtleXMoWCk6KFgpPT57bGV0IFc9W107Zm9yKGxldCBHIGluIFgpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFgsRykpVy5wdXNoKEcpO3JldHVybiBXfSwkLmZpbmQ9KFgsVyk9Pntmb3IobGV0IEcgb2YgWClpZihXKEcpKXJldHVybiBHO3JldHVybn0sJC5pc0ludGVnZXI9dHlwZW9mIE51bWJlci5pc0ludGVnZXI9PT1cImZ1bmN0aW9uXCI/KFgpPT5OdW1iZXIuaXNJbnRlZ2VyKFgpOihYKT0+dHlwZW9mIFg9PT1cIm51bWJlclwiJiZOdW1iZXIuaXNGaW5pdGUoWCkmJk1hdGguZmxvb3IoWCk9PT1YO2Z1bmN0aW9uIFkoWCxXPVwiIHwgXCIpe3JldHVybiBYLm1hcCgoRyk9PnR5cGVvZiBHPT09XCJzdHJpbmdcIj9gJyR7R30nYDpHKS5qb2luKFcpfSQuam9pblZhbHVlcz1ZLCQuanNvblN0cmluZ2lmeVJlcGxhY2VyPShYLFcpPT57aWYodHlwZW9mIFc9PT1cImJpZ2ludFwiKXJldHVybiBXLnRvU3RyaW5nKCk7cmV0dXJuIFd9fSkoVSR8fChVJD17fSkpO3ZhciByWjsoZnVuY3Rpb24oJCl7JC5tZXJnZVNoYXBlcz0oUSxKKT0+e3JldHVybnsuLi5RLC4uLkp9fX0pKHJafHwoclo9e30pKTt2YXIgQz1VJC5hcnJheVRvRW51bShbXCJzdHJpbmdcIixcIm5hblwiLFwibnVtYmVyXCIsXCJpbnRlZ2VyXCIsXCJmbG9hdFwiLFwiYm9vbGVhblwiLFwiZGF0ZVwiLFwiYmlnaW50XCIsXCJzeW1ib2xcIixcImZ1bmN0aW9uXCIsXCJ1bmRlZmluZWRcIixcIm51bGxcIixcImFycmF5XCIsXCJvYmplY3RcIixcInVua25vd25cIixcInByb21pc2VcIixcInZvaWRcIixcIm5ldmVyXCIsXCJtYXBcIixcInNldFwiXSkscDQ9KCQpPT57c3dpdGNoKHR5cGVvZiAkKXtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gQy51bmRlZmluZWQ7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIEMuc3RyaW5nO2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oJCk/Qy5uYW46Qy5udW1iZXI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBDLmJvb2xlYW47Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm4gQy5mdW5jdGlvbjtjYXNlXCJiaWdpbnRcIjpyZXR1cm4gQy5iaWdpbnQ7Y2FzZVwic3ltYm9sXCI6cmV0dXJuIEMuc3ltYm9sO2Nhc2VcIm9iamVjdFwiOmlmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuIEMuYXJyYXk7aWYoJD09PW51bGwpcmV0dXJuIEMubnVsbDtpZigkLnRoZW4mJnR5cGVvZiAkLnRoZW49PT1cImZ1bmN0aW9uXCImJiQuY2F0Y2gmJnR5cGVvZiAkLmNhdGNoPT09XCJmdW5jdGlvblwiKXJldHVybiBDLnByb21pc2U7aWYodHlwZW9mIE1hcDxcInVcIiYmJCBpbnN0YW5jZW9mIE1hcClyZXR1cm4gQy5tYXA7aWYodHlwZW9mIFNldDxcInVcIiYmJCBpbnN0YW5jZW9mIFNldClyZXR1cm4gQy5zZXQ7aWYodHlwZW9mIERhdGU8XCJ1XCImJiQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBDLmRhdGU7cmV0dXJuIEMub2JqZWN0O2RlZmF1bHQ6cmV0dXJuIEMudW5rbm93bn19O3ZhciBFPVUkLmFycmF5VG9FbnVtKFtcImludmFsaWRfdHlwZVwiLFwiaW52YWxpZF9saXRlcmFsXCIsXCJjdXN0b21cIixcImludmFsaWRfdW5pb25cIixcImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvclwiLFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIsXCJ1bnJlY29nbml6ZWRfa2V5c1wiLFwiaW52YWxpZF9hcmd1bWVudHNcIixcImludmFsaWRfcmV0dXJuX3R5cGVcIixcImludmFsaWRfZGF0ZVwiLFwiaW52YWxpZF9zdHJpbmdcIixcInRvb19zbWFsbFwiLFwidG9vX2JpZ1wiLFwiaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXNcIixcIm5vdF9tdWx0aXBsZV9vZlwiLFwibm90X2Zpbml0ZVwiXSk7Y2xhc3MgZjYgZXh0ZW5kcyBFcnJvcntnZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuaXNzdWVzfWNvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5pc3N1ZXM9W10sdGhpcy5hZGRJc3N1ZT0oSik9Pnt0aGlzLmlzc3Vlcz1bLi4udGhpcy5pc3N1ZXMsSl19LHRoaXMuYWRkSXNzdWVzPShKPVtdKT0+e3RoaXMuaXNzdWVzPVsuLi50aGlzLmlzc3VlcywuLi5KXX07bGV0IFE9bmV3LnRhcmdldC5wcm90b3R5cGU7aWYoT2JqZWN0LnNldFByb3RvdHlwZU9mKU9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLFEpO2Vsc2UgdGhpcy5fX3Byb3RvX189UTt0aGlzLm5hbWU9XCJab2RFcnJvclwiLHRoaXMuaXNzdWVzPSR9Zm9ybWF0KCQpe2xldCBRPSR8fGZ1bmN0aW9uKFgpe3JldHVybiBYLm1lc3NhZ2V9LEo9e19lcnJvcnM6W119LFk9KFgpPT57Zm9yKGxldCBXIG9mIFguaXNzdWVzKWlmKFcuY29kZT09PVwiaW52YWxpZF91bmlvblwiKVcudW5pb25FcnJvcnMubWFwKFkpO2Vsc2UgaWYoVy5jb2RlPT09XCJpbnZhbGlkX3JldHVybl90eXBlXCIpWShXLnJldHVyblR5cGVFcnJvcik7ZWxzZSBpZihXLmNvZGU9PT1cImludmFsaWRfYXJndW1lbnRzXCIpWShXLmFyZ3VtZW50c0Vycm9yKTtlbHNlIGlmKFcucGF0aC5sZW5ndGg9PT0wKUouX2Vycm9ycy5wdXNoKFEoVykpO2Vsc2V7bGV0IEc9SixVPTA7d2hpbGUoVTxXLnBhdGgubGVuZ3RoKXtsZXQgSD1XLnBhdGhbVV07aWYoVSE9PVcucGF0aC5sZW5ndGgtMSlHW0hdPUdbSF18fHtfZXJyb3JzOltdfTtlbHNlIEdbSF09R1tIXXx8e19lcnJvcnM6W119LEdbSF0uX2Vycm9ycy5wdXNoKFEoVykpO0c9R1tIXSxVKyt9fX07cmV0dXJuIFkodGhpcyksSn1zdGF0aWMgYXNzZXJ0KCQpe2lmKCEoJCBpbnN0YW5jZW9mIGY2KSl0aHJvdyBFcnJvcihgTm90IGEgWm9kRXJyb3I6ICR7JH1gKX10b1N0cmluZygpe3JldHVybiB0aGlzLm1lc3NhZ2V9Z2V0IG1lc3NhZ2UoKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pc3N1ZXMsVSQuanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuaXNzdWVzLmxlbmd0aD09PTB9ZmxhdHRlbigkPShRKT0+US5tZXNzYWdlKXtsZXQgUT17fSxKPVtdO2ZvcihsZXQgWSBvZiB0aGlzLmlzc3VlcylpZihZLnBhdGgubGVuZ3RoPjApe2xldCBYPVkucGF0aFswXTtRW1hdPVFbWF18fFtdLFFbWF0ucHVzaCgkKFkpKX1lbHNlIEoucHVzaCgkKFkpKTtyZXR1cm57Zm9ybUVycm9yczpKLGZpZWxkRXJyb3JzOlF9fWdldCBmb3JtRXJyb3JzKCl7cmV0dXJuIHRoaXMuZmxhdHRlbigpfX1mNi5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBmNigkKX07dmFyIEtoPSgkLFEpPT57bGV0IEo7c3dpdGNoKCQuY29kZSl7Y2FzZSBFLmludmFsaWRfdHlwZTppZigkLnJlY2VpdmVkPT09Qy51bmRlZmluZWQpSj1cIlJlcXVpcmVkXCI7ZWxzZSBKPWBFeHBlY3RlZCAkeyQuZXhwZWN0ZWR9LCByZWNlaXZlZCAkeyQucmVjZWl2ZWR9YDticmVhaztjYXNlIEUuaW52YWxpZF9saXRlcmFsOko9YEludmFsaWQgbGl0ZXJhbCB2YWx1ZSwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeSgkLmV4cGVjdGVkLFUkLmpzb25TdHJpbmdpZnlSZXBsYWNlcil9YDticmVhaztjYXNlIEUudW5yZWNvZ25pemVkX2tleXM6Sj1gVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7VSQuam9pblZhbHVlcygkLmtleXMsXCIsIFwiKX1gO2JyZWFrO2Nhc2UgRS5pbnZhbGlkX3VuaW9uOko9XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSBFLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpKPWBJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7VSQuam9pblZhbHVlcygkLm9wdGlvbnMpfWA7YnJlYWs7Y2FzZSBFLmludmFsaWRfZW51bV92YWx1ZTpKPWBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7VSQuam9pblZhbHVlcygkLm9wdGlvbnMpfSwgcmVjZWl2ZWQgJyR7JC5yZWNlaXZlZH0nYDticmVhaztjYXNlIEUuaW52YWxpZF9hcmd1bWVudHM6Sj1cIkludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzXCI7YnJlYWs7Y2FzZSBFLmludmFsaWRfcmV0dXJuX3R5cGU6Sj1cIkludmFsaWQgZnVuY3Rpb24gcmV0dXJuIHR5cGVcIjticmVhaztjYXNlIEUuaW52YWxpZF9kYXRlOko9XCJJbnZhbGlkIGRhdGVcIjticmVhaztjYXNlIEUuaW52YWxpZF9zdHJpbmc6aWYodHlwZW9mICQudmFsaWRhdGlvbj09PVwib2JqZWN0XCIpaWYoXCJpbmNsdWRlc1wiaW4gJC52YWxpZGF0aW9uKXtpZihKPWBJbnZhbGlkIGlucHV0OiBtdXN0IGluY2x1ZGUgXCIkeyQudmFsaWRhdGlvbi5pbmNsdWRlc31cImAsdHlwZW9mICQudmFsaWRhdGlvbi5wb3NpdGlvbj09PVwibnVtYmVyXCIpSj1gJHtKfSBhdCBvbmUgb3IgbW9yZSBwb3NpdGlvbnMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7JC52YWxpZGF0aW9uLnBvc2l0aW9ufWB9ZWxzZSBpZihcInN0YXJ0c1dpdGhcImluICQudmFsaWRhdGlvbilKPWBJbnZhbGlkIGlucHV0OiBtdXN0IHN0YXJ0IHdpdGggXCIkeyQudmFsaWRhdGlvbi5zdGFydHNXaXRofVwiYDtlbHNlIGlmKFwiZW5kc1dpdGhcImluICQudmFsaWRhdGlvbilKPWBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHskLnZhbGlkYXRpb24uZW5kc1dpdGh9XCJgO2Vsc2UgVSQuYXNzZXJ0TmV2ZXIoJC52YWxpZGF0aW9uKTtlbHNlIGlmKCQudmFsaWRhdGlvbiE9PVwicmVnZXhcIilKPWBJbnZhbGlkICR7JC52YWxpZGF0aW9ufWA7ZWxzZSBKPVwiSW52YWxpZFwiO2JyZWFrO2Nhc2UgRS50b29fc21hbGw6aWYoJC50eXBlPT09XCJhcnJheVwiKUo9YEFycmF5IG11c3QgY29udGFpbiAkeyQuZXhhY3Q/XCJleGFjdGx5XCI6JC5pbmNsdXNpdmU/XCJhdCBsZWFzdFwiOlwibW9yZSB0aGFuXCJ9ICR7JC5taW5pbXVtfSBlbGVtZW50KHMpYDtlbHNlIGlmKCQudHlwZT09PVwic3RyaW5nXCIpSj1gU3RyaW5nIG11c3QgY29udGFpbiAkeyQuZXhhY3Q/XCJleGFjdGx5XCI6JC5pbmNsdXNpdmU/XCJhdCBsZWFzdFwiOlwib3ZlclwifSAkeyQubWluaW11bX0gY2hhcmFjdGVyKHMpYDtlbHNlIGlmKCQudHlwZT09PVwibnVtYmVyXCIpSj1gTnVtYmVyIG11c3QgYmUgJHskLmV4YWN0P1wiZXhhY3RseSBlcXVhbCB0byBcIjokLmluY2x1c2l2ZT9cImdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcIjpcImdyZWF0ZXIgdGhhbiBcIn0keyQubWluaW11bX1gO2Vsc2UgaWYoJC50eXBlPT09XCJiaWdpbnRcIilKPWBOdW1iZXIgbXVzdCBiZSAkeyQuZXhhY3Q/XCJleGFjdGx5IGVxdWFsIHRvIFwiOiQuaW5jbHVzaXZlP1wiZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFwiOlwiZ3JlYXRlciB0aGFuIFwifSR7JC5taW5pbXVtfWA7ZWxzZSBpZigkLnR5cGU9PT1cImRhdGVcIilKPWBEYXRlIG11c3QgYmUgJHskLmV4YWN0P1wiZXhhY3RseSBlcXVhbCB0byBcIjokLmluY2x1c2l2ZT9cImdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcIjpcImdyZWF0ZXIgdGhhbiBcIn0ke25ldyBEYXRlKE51bWJlcigkLm1pbmltdW0pKX1gO2Vsc2UgSj1cIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIEUudG9vX2JpZzppZigkLnR5cGU9PT1cImFycmF5XCIpSj1gQXJyYXkgbXVzdCBjb250YWluICR7JC5leGFjdD9cImV4YWN0bHlcIjokLmluY2x1c2l2ZT9cImF0IG1vc3RcIjpcImxlc3MgdGhhblwifSAkeyQubWF4aW11bX0gZWxlbWVudChzKWA7ZWxzZSBpZigkLnR5cGU9PT1cInN0cmluZ1wiKUo9YFN0cmluZyBtdXN0IGNvbnRhaW4gJHskLmV4YWN0P1wiZXhhY3RseVwiOiQuaW5jbHVzaXZlP1wiYXQgbW9zdFwiOlwidW5kZXJcIn0gJHskLm1heGltdW19IGNoYXJhY3RlcihzKWA7ZWxzZSBpZigkLnR5cGU9PT1cIm51bWJlclwiKUo9YE51bWJlciBtdXN0IGJlICR7JC5leGFjdD9cImV4YWN0bHlcIjokLmluY2x1c2l2ZT9cImxlc3MgdGhhbiBvciBlcXVhbCB0b1wiOlwibGVzcyB0aGFuXCJ9ICR7JC5tYXhpbXVtfWA7ZWxzZSBpZigkLnR5cGU9PT1cImJpZ2ludFwiKUo9YEJpZ0ludCBtdXN0IGJlICR7JC5leGFjdD9cImV4YWN0bHlcIjokLmluY2x1c2l2ZT9cImxlc3MgdGhhbiBvciBlcXVhbCB0b1wiOlwibGVzcyB0aGFuXCJ9ICR7JC5tYXhpbXVtfWA7ZWxzZSBpZigkLnR5cGU9PT1cImRhdGVcIilKPWBEYXRlIG11c3QgYmUgJHskLmV4YWN0P1wiZXhhY3RseVwiOiQuaW5jbHVzaXZlP1wic21hbGxlciB0aGFuIG9yIGVxdWFsIHRvXCI6XCJzbWFsbGVyIHRoYW5cIn0gJHtuZXcgRGF0ZShOdW1iZXIoJC5tYXhpbXVtKSl9YDtlbHNlIEo9XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSBFLmN1c3RvbTpKPVwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2UgRS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlczpKPVwiSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZFwiO2JyZWFrO2Nhc2UgRS5ub3RfbXVsdGlwbGVfb2Y6Sj1gTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAkeyQubXVsdGlwbGVPZn1gO2JyZWFrO2Nhc2UgRS5ub3RfZmluaXRlOko9XCJOdW1iZXIgbXVzdCBiZSBmaW5pdGVcIjticmVhaztkZWZhdWx0Oko9US5kZWZhdWx0RXJyb3IsVSQuYXNzZXJ0TmV2ZXIoJCl9cmV0dXJue21lc3NhZ2U6Sn19LEExPUtoO3ZhciBxaD1BMTtmdW5jdGlvbiAkUSgpe3JldHVybiBxaH12YXIgeTU9KCQpPT57bGV0e2RhdGE6USxwYXRoOkosZXJyb3JNYXBzOlksaXNzdWVEYXRhOlh9PSQsVz1bLi4uSiwuLi5YLnBhdGh8fFtdXSxHPXsuLi5YLHBhdGg6V307aWYoWC5tZXNzYWdlIT09dm9pZCAwKXJldHVybnsuLi5YLHBhdGg6VyxtZXNzYWdlOlgubWVzc2FnZX07bGV0IFU9XCJcIixIPVkuZmlsdGVyKChxKT0+ISFxKS5zbGljZSgpLnJldmVyc2UoKTtmb3IobGV0IHEgb2YgSClVPXEoRyx7ZGF0YTpRLGRlZmF1bHRFcnJvcjpVfSkubWVzc2FnZTtyZXR1cm57Li4uWCxwYXRoOlcsbWVzc2FnZTpVfX07ZnVuY3Rpb24geSgkLFEpe2xldCBKPSRRKCksWT15NSh7aXNzdWVEYXRhOlEsZGF0YTokLmRhdGEscGF0aDokLnBhdGgsZXJyb3JNYXBzOlskLmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsJC5zY2hlbWFFcnJvck1hcCxKLEo9PT1BMT92b2lkIDA6QTFdLmZpbHRlcigoWCk9PiEhWCl9KTskLmNvbW1vbi5pc3N1ZXMucHVzaChZKX1jbGFzcyBHNntjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9XCJ2YWxpZFwifWRpcnR5KCl7aWYodGhpcy52YWx1ZT09PVwidmFsaWRcIil0aGlzLnZhbHVlPVwiZGlydHlcIn1hYm9ydCgpe2lmKHRoaXMudmFsdWUhPT1cImFib3J0ZWRcIil0aGlzLnZhbHVlPVwiYWJvcnRlZFwifXN0YXRpYyBtZXJnZUFycmF5KCQsUSl7bGV0IEo9W107Zm9yKGxldCBZIG9mIFEpe2lmKFkuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoWS5zdGF0dXM9PT1cImRpcnR5XCIpJC5kaXJ0eSgpO0oucHVzaChZLnZhbHVlKX1yZXR1cm57c3RhdHVzOiQudmFsdWUsdmFsdWU6Sn19c3RhdGljIGFzeW5jIG1lcmdlT2JqZWN0QXN5bmMoJCxRKXtsZXQgSj1bXTtmb3IobGV0IFkgb2YgUSl7bGV0IFg9YXdhaXQgWS5rZXksVz1hd2FpdCBZLnZhbHVlO0oucHVzaCh7a2V5OlgsdmFsdWU6V30pfXJldHVybiBHNi5tZXJnZU9iamVjdFN5bmMoJCxKKX1zdGF0aWMgbWVyZ2VPYmplY3RTeW5jKCQsUSl7bGV0IEo9e307Zm9yKGxldCBZIG9mIFEpe2xldHtrZXk6WCx2YWx1ZTpXfT1ZO2lmKFguc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoVy5zdGF0dXM9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtpZihYLnN0YXR1cz09PVwiZGlydHlcIikkLmRpcnR5KCk7aWYoVy5zdGF0dXM9PT1cImRpcnR5XCIpJC5kaXJ0eSgpO2lmKFgudmFsdWUhPT1cIl9fcHJvdG9fX1wiJiYodHlwZW9mIFcudmFsdWU8XCJ1XCJ8fFkuYWx3YXlzU2V0KSlKW1gudmFsdWVdPVcudmFsdWV9cmV0dXJue3N0YXR1czokLnZhbHVlLHZhbHVlOkp9fX12YXIgbj1PYmplY3QuZnJlZXplKHtzdGF0dXM6XCJhYm9ydGVkXCJ9KSx4OD0oJCk9Pih7c3RhdHVzOlwiZGlydHlcIix2YWx1ZTokfSksQjY9KCQpPT4oe3N0YXR1czpcInZhbGlkXCIsdmFsdWU6JH0pLHBIPSgkKT0+JC5zdGF0dXM9PT1cImFib3J0ZWRcIixkSD0oJCk9PiQuc3RhdHVzPT09XCJkaXJ0eVwiLEwwPSgkKT0+JC5zdGF0dXM9PT1cInZhbGlkXCIsUVE9KCQpPT50eXBlb2YgUHJvbWlzZTxcInVcIiYmJCBpbnN0YW5jZW9mIFByb21pc2U7dmFyIG07KGZ1bmN0aW9uKCQpeyQuZXJyVG9PYmo9KFEpPT50eXBlb2YgUT09PVwic3RyaW5nXCI/e21lc3NhZ2U6UX06UXx8e30sJC50b1N0cmluZz0oUSk9PnR5cGVvZiBRPT09XCJzdHJpbmdcIj9ROlE/Lm1lc3NhZ2V9KShtfHwobT17fSkpO2NsYXNzIEs0e2NvbnN0cnVjdG9yKCQsUSxKLFkpe3RoaXMuX2NhY2hlZFBhdGg9W10sdGhpcy5wYXJlbnQ9JCx0aGlzLmRhdGE9USx0aGlzLl9wYXRoPUosdGhpcy5fa2V5PVl9Z2V0IHBhdGgoKXtpZighdGhpcy5fY2FjaGVkUGF0aC5sZW5ndGgpaWYoQXJyYXkuaXNBcnJheSh0aGlzLl9rZXkpKXRoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLC4uLnRoaXMuX2tleSk7ZWxzZSB0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCx0aGlzLl9rZXkpO3JldHVybiB0aGlzLl9jYWNoZWRQYXRofX12YXIgb1o9KCQsUSk9PntpZihMMChRKSlyZXR1cm57c3VjY2VzczohMCxkYXRhOlEudmFsdWV9O2Vsc2V7aWYoISQuY29tbW9uLmlzc3Vlcy5sZW5ndGgpdGhyb3cgRXJyb3IoXCJWYWxpZGF0aW9uIGZhaWxlZCBidXQgbm8gaXNzdWVzIGRldGVjdGVkLlwiKTtyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtpZih0aGlzLl9lcnJvcilyZXR1cm4gdGhpcy5fZXJyb3I7bGV0IEo9bmV3IGY2KCQuY29tbW9uLmlzc3Vlcyk7cmV0dXJuIHRoaXMuX2Vycm9yPUosdGhpcy5fZXJyb3J9fX19O2Z1bmN0aW9uIGUoJCl7aWYoISQpcmV0dXJue307bGV0e2Vycm9yTWFwOlEsaW52YWxpZF90eXBlX2Vycm9yOkoscmVxdWlyZWRfZXJyb3I6WSxkZXNjcmlwdGlvbjpYfT0kO2lmKFEmJihKfHxZKSl0aHJvdyBFcnJvcihgQ2FuJ3QgdXNlIFwiaW52YWxpZF90eXBlX2Vycm9yXCIgb3IgXCJyZXF1aXJlZF9lcnJvclwiIGluIGNvbmp1bmN0aW9uIHdpdGggY3VzdG9tIGVycm9yIG1hcC5gKTtpZihRKXJldHVybntlcnJvck1hcDpRLGRlc2NyaXB0aW9uOlh9O3JldHVybntlcnJvck1hcDooRyxVKT0+e2xldHttZXNzYWdlOkh9PSQ7aWYoRy5jb2RlPT09XCJpbnZhbGlkX2VudW1fdmFsdWVcIilyZXR1cm57bWVzc2FnZTpIPz9VLmRlZmF1bHRFcnJvcn07aWYodHlwZW9mIFUuZGF0YT5cInVcIilyZXR1cm57bWVzc2FnZTpIPz9ZPz9VLmRlZmF1bHRFcnJvcn07aWYoRy5jb2RlIT09XCJpbnZhbGlkX3R5cGVcIilyZXR1cm57bWVzc2FnZTpVLmRlZmF1bHRFcnJvcn07cmV0dXJue21lc3NhZ2U6SD8/Sj8/VS5kZWZhdWx0RXJyb3J9fSxkZXNjcmlwdGlvbjpYfX1jbGFzcyBZJHtnZXQgZGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5fZGVmLmRlc2NyaXB0aW9ufV9nZXRUeXBlKCQpe3JldHVybiBwNCgkLmRhdGEpfV9nZXRPclJldHVybkN0eCgkLFEpe3JldHVybiBRfHx7Y29tbW9uOiQucGFyZW50LmNvbW1vbixkYXRhOiQuZGF0YSxwYXJzZWRUeXBlOnA0KCQuZGF0YSksc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhdGg6JC5wYXRoLHBhcmVudDokLnBhcmVudH19X3Byb2Nlc3NJbnB1dFBhcmFtcygkKXtyZXR1cm57c3RhdHVzOm5ldyBHNixjdHg6e2NvbW1vbjokLnBhcmVudC5jb21tb24sZGF0YTokLmRhdGEscGFyc2VkVHlwZTpwNCgkLmRhdGEpLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXRoOiQucGF0aCxwYXJlbnQ6JC5wYXJlbnR9fX1fcGFyc2VTeW5jKCQpe2xldCBRPXRoaXMuX3BhcnNlKCQpO2lmKFFRKFEpKXRocm93IEVycm9yKFwiU3luY2hyb25vdXMgcGFyc2UgZW5jb3VudGVyZWQgcHJvbWlzZS5cIik7cmV0dXJuIFF9X3BhcnNlQXN5bmMoJCl7bGV0IFE9dGhpcy5fcGFyc2UoJCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShRKX1wYXJzZSgkLFEpe2xldCBKPXRoaXMuc2FmZVBhcnNlKCQsUSk7aWYoSi5zdWNjZXNzKXJldHVybiBKLmRhdGE7dGhyb3cgSi5lcnJvcn1zYWZlUGFyc2UoJCxRKXtsZXQgSj17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6UT8uYXN5bmM/PyExLGNvbnRleHR1YWxFcnJvck1hcDpRPy5lcnJvck1hcH0scGF0aDpRPy5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTokLHBhcnNlZFR5cGU6cDQoJCl9LFk9dGhpcy5fcGFyc2VTeW5jKHtkYXRhOiQscGF0aDpKLnBhdGgscGFyZW50Okp9KTtyZXR1cm4gb1ooSixZKX1cIn52YWxpZGF0ZVwiKCQpe2xldCBRPXtjb21tb246e2lzc3VlczpbXSxhc3luYzohIXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmN9LHBhdGg6W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6JCxwYXJzZWRUeXBlOnA0KCQpfTtpZighdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyl0cnl7bGV0IEo9dGhpcy5fcGFyc2VTeW5jKHtkYXRhOiQscGF0aDpbXSxwYXJlbnQ6UX0pO3JldHVybiBMMChKKT97dmFsdWU6Si52YWx1ZX06e2lzc3VlczpRLmNvbW1vbi5pc3N1ZXN9fWNhdGNoKEope2lmKEo/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKFwiZW5jb3VudGVyZWRcIikpdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYz0hMDtRLmNvbW1vbj17aXNzdWVzOltdLGFzeW5jOiEwfX1yZXR1cm4gdGhpcy5fcGFyc2VBc3luYyh7ZGF0YTokLHBhdGg6W10scGFyZW50OlF9KS50aGVuKChKKT0+TDAoSik/e3ZhbHVlOkoudmFsdWV9Ontpc3N1ZXM6US5jb21tb24uaXNzdWVzfSl9YXN5bmMgcGFyc2VBc3luYygkLFEpe2xldCBKPWF3YWl0IHRoaXMuc2FmZVBhcnNlQXN5bmMoJCxRKTtpZihKLnN1Y2Nlc3MpcmV0dXJuIEouZGF0YTt0aHJvdyBKLmVycm9yfWFzeW5jIHNhZmVQYXJzZUFzeW5jKCQsUSl7bGV0IEo9e2NvbW1vbjp7aXNzdWVzOltdLGNvbnRleHR1YWxFcnJvck1hcDpRPy5lcnJvck1hcCxhc3luYzohMH0scGF0aDpRPy5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTokLHBhcnNlZFR5cGU6cDQoJCl9LFk9dGhpcy5fcGFyc2Uoe2RhdGE6JCxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pLFg9YXdhaXQoUVEoWSk/WTpQcm9taXNlLnJlc29sdmUoWSkpO3JldHVybiBvWihKLFgpfXJlZmluZSgkLFEpe2xldCBKPShZKT0+e2lmKHR5cGVvZiBRPT09XCJzdHJpbmdcInx8dHlwZW9mIFE+XCJ1XCIpcmV0dXJue21lc3NhZ2U6UX07ZWxzZSBpZih0eXBlb2YgUT09PVwiZnVuY3Rpb25cIilyZXR1cm4gUShZKTtlbHNlIHJldHVybiBRfTtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgoWSxYKT0+e2xldCBXPSQoWSksRz0oKT0+WC5hZGRJc3N1ZSh7Y29kZTpFLmN1c3RvbSwuLi5KKFkpfSk7aWYodHlwZW9mIFByb21pc2U8XCJ1XCImJlcgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBXLnRoZW4oKFUpPT57aWYoIVUpcmV0dXJuIEcoKSwhMTtlbHNlIHJldHVybiEwfSk7aWYoIVcpcmV0dXJuIEcoKSwhMTtlbHNlIHJldHVybiEwfSl9cmVmaW5lbWVudCgkLFEpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KChKLFkpPT57aWYoISQoSikpcmV0dXJuIFkuYWRkSXNzdWUodHlwZW9mIFE9PT1cImZ1bmN0aW9uXCI/UShKLFkpOlEpLCExO2Vsc2UgcmV0dXJuITB9KX1fcmVmaW5lbWVudCgkKXtyZXR1cm4gbmV3IGI0KHtzY2hlbWE6dGhpcyx0eXBlTmFtZTpiLlpvZEVmZmVjdHMsZWZmZWN0Ont0eXBlOlwicmVmaW5lbWVudFwiLHJlZmluZW1lbnQ6JH19KX1zdXBlclJlZmluZSgkKXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgkKX1jb25zdHJ1Y3RvcigkKXt0aGlzLnNwYT10aGlzLnNhZmVQYXJzZUFzeW5jLHRoaXMuX2RlZj0kLHRoaXMucGFyc2U9dGhpcy5wYXJzZS5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlPXRoaXMuc2FmZVBhcnNlLmJpbmQodGhpcyksdGhpcy5wYXJzZUFzeW5jPXRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlQXN5bmM9dGhpcy5zYWZlUGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc3BhPXRoaXMuc3BhLmJpbmQodGhpcyksdGhpcy5yZWZpbmU9dGhpcy5yZWZpbmUuYmluZCh0aGlzKSx0aGlzLnJlZmluZW1lbnQ9dGhpcy5yZWZpbmVtZW50LmJpbmQodGhpcyksdGhpcy5zdXBlclJlZmluZT10aGlzLnN1cGVyUmVmaW5lLmJpbmQodGhpcyksdGhpcy5vcHRpb25hbD10aGlzLm9wdGlvbmFsLmJpbmQodGhpcyksdGhpcy5udWxsYWJsZT10aGlzLm51bGxhYmxlLmJpbmQodGhpcyksdGhpcy5udWxsaXNoPXRoaXMubnVsbGlzaC5iaW5kKHRoaXMpLHRoaXMuYXJyYXk9dGhpcy5hcnJheS5iaW5kKHRoaXMpLHRoaXMucHJvbWlzZT10aGlzLnByb21pc2UuYmluZCh0aGlzKSx0aGlzLm9yPXRoaXMub3IuYmluZCh0aGlzKSx0aGlzLmFuZD10aGlzLmFuZC5iaW5kKHRoaXMpLHRoaXMudHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtLmJpbmQodGhpcyksdGhpcy5icmFuZD10aGlzLmJyYW5kLmJpbmQodGhpcyksdGhpcy5kZWZhdWx0PXRoaXMuZGVmYXVsdC5iaW5kKHRoaXMpLHRoaXMuY2F0Y2g9dGhpcy5jYXRjaC5iaW5kKHRoaXMpLHRoaXMuZGVzY3JpYmU9dGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpLHRoaXMucGlwZT10aGlzLnBpcGUuYmluZCh0aGlzKSx0aGlzLnJlYWRvbmx5PXRoaXMucmVhZG9ubHkuYmluZCh0aGlzKSx0aGlzLmlzTnVsbGFibGU9dGhpcy5pc051bGxhYmxlLmJpbmQodGhpcyksdGhpcy5pc09wdGlvbmFsPXRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpLHRoaXNbXCJ+c3RhbmRhcmRcIl09e3ZlcnNpb246MSx2ZW5kb3I6XCJ6b2RcIix2YWxpZGF0ZTooUSk9PnRoaXNbXCJ+dmFsaWRhdGVcIl0oUSl9fW9wdGlvbmFsKCl7cmV0dXJuIG82LmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGFibGUoKXtyZXR1cm4gSTEuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1udWxsaXNoKCl7cmV0dXJuIHRoaXMubnVsbGFibGUoKS5vcHRpb25hbCgpfWFycmF5KCl7cmV0dXJuIEU0LmNyZWF0ZSh0aGlzKX1wcm9taXNlKCl7cmV0dXJuIHU4LmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9b3IoJCl7cmV0dXJuIEdRLmNyZWF0ZShbdGhpcywkXSx0aGlzLl9kZWYpfWFuZCgkKXtyZXR1cm4gVVEuY3JlYXRlKHRoaXMsJCx0aGlzLl9kZWYpfXRyYW5zZm9ybSgkKXtyZXR1cm4gbmV3IGI0KHsuLi5lKHRoaXMuX2RlZiksc2NoZW1hOnRoaXMsdHlwZU5hbWU6Yi5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZTpcInRyYW5zZm9ybVwiLHRyYW5zZm9ybTokfX0pfWRlZmF1bHQoJCl7bGV0IFE9dHlwZW9mICQ9PT1cImZ1bmN0aW9uXCI/JDooKT0+JDtyZXR1cm4gbmV3IFZRKHsuLi5lKHRoaXMuX2RlZiksaW5uZXJUeXBlOnRoaXMsZGVmYXVsdFZhbHVlOlEsdHlwZU5hbWU6Yi5ab2REZWZhdWx0fSl9YnJhbmQoKXtyZXR1cm4gbmV3IG9IKHt0eXBlTmFtZTpiLlpvZEJyYW5kZWQsdHlwZTp0aGlzLC4uLmUodGhpcy5fZGVmKX0pfWNhdGNoKCQpe2xldCBRPXR5cGVvZiAkPT09XCJmdW5jdGlvblwiPyQ6KCk9PiQ7cmV0dXJuIG5ldyBCUSh7Li4uZSh0aGlzLl9kZWYpLGlubmVyVHlwZTp0aGlzLGNhdGNoVmFsdWU6USx0eXBlTmFtZTpiLlpvZENhdGNofSl9ZGVzY3JpYmUoJCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHsuLi50aGlzLl9kZWYsZGVzY3JpcHRpb246JH0pfXBpcGUoJCl7cmV0dXJuIGQ1LmNyZWF0ZSh0aGlzLCQpfXJlYWRvbmx5KCl7cmV0dXJuIHpRLmNyZWF0ZSh0aGlzKX1pc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc31pc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9fXZhciBWaD0vXmNbXlxccy1dezgsfSQvaSxCaD0vXlswLTlhLXpdKyQvLHpoPS9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvaSxOaD0vXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvaSx3aD0vXlthLXowLTlfLV17MjF9JC9pLE9oPS9eW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10qJC8sRGg9L15bLStdP1AoPyEkKSg/Oig/OlstK10/XFxkK1kpfCg/OlstK10/XFxkK1suLF1cXGQrWSQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86KD86Wy0rXT9cXGQrVyl8KD86Wy0rXT9cXGQrWy4sXVxcZCtXJCkpPyg/Oig/OlstK10/XFxkK0QpfCg/OlstK10/XFxkK1suLF1cXGQrRCQpKT8oPzpUKD89W1xcZCstXSkoPzooPzpbLStdP1xcZCtIKXwoPzpbLStdP1xcZCtbLixdXFxkK0gkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/OlstK10/XFxkKyg/OlsuLF1cXGQrKT9TKT8pPz8kLyxGaD0vXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWjAtOV8nK1xcLVxcLl0qKVtBLVowLTlfKy1dQChbQS1aMC05XVtBLVowLTlcXC1dKlxcLikrW0EtWl17Mix9JC9pLFpoPVwiXihcXFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxcXFxwe0Vtb2ppX0NvbXBvbmVudH0pKyRcIixpSCxNaD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLExoPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKDNbMC0yXXxbMTJdP1swLTldKSQvLGpoPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKSQvLEFoPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sSWg9L14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvLFJoPS9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLyx0Wj1cIigoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKVwiLFBoPW5ldyBSZWdFeHAoYF4ke3RafSRgKTtmdW5jdGlvbiBhWigkKXtsZXQgUT1cIlswLTVdXFxcXGRcIjtpZigkLnByZWNpc2lvbilRPWAke1F9XFxcXC5cXFxcZHskeyQucHJlY2lzaW9ufX1gO2Vsc2UgaWYoJC5wcmVjaXNpb249PW51bGwpUT1gJHtRfShcXFxcLlxcXFxkKyk/YDtsZXQgSj0kLnByZWNpc2lvbj9cIitcIjpcIj9cIjtyZXR1cm5gKFswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGQoOiR7UX0pJHtKfWB9ZnVuY3Rpb24gRWgoJCl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2FaKCQpfSRgKX1mdW5jdGlvbiBiaCgkKXtsZXQgUT1gJHt0Wn1UJHthWigkKX1gLEo9W107aWYoSi5wdXNoKCQubG9jYWw/XCJaP1wiOlwiWlwiKSwkLm9mZnNldClKLnB1c2goXCIoWystXVxcXFxkezJ9Oj9cXFxcZHsyfSlcIik7cmV0dXJuIFE9YCR7UX0oJHtKLmpvaW4oXCJ8XCIpfSlgLG5ldyBSZWdFeHAoYF4ke1F9JGApfWZ1bmN0aW9uIF9oKCQsUSl7aWYoKFE9PT1cInY0XCJ8fCFRKSYmTWgudGVzdCgkKSlyZXR1cm4hMDtpZigoUT09PVwidjZcInx8IVEpJiZqaC50ZXN0KCQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFNoKCQsUSl7aWYoIU9oLnRlc3QoJCkpcmV0dXJuITE7dHJ5e2xldFtKXT0kLnNwbGl0KFwiLlwiKTtpZighSilyZXR1cm4hMTtsZXQgWT1KLnJlcGxhY2UoLy0vZyxcIitcIikucmVwbGFjZSgvXy9nLFwiL1wiKS5wYWRFbmQoSi5sZW5ndGgrKDQtSi5sZW5ndGglNCklNCxcIj1cIiksWD1KU09OLnBhcnNlKGF0b2IoWSkpO2lmKHR5cGVvZiBYIT09XCJvYmplY3RcInx8WD09PW51bGwpcmV0dXJuITE7aWYoXCJ0eXBcImluIFgmJlg/LnR5cCE9PVwiSldUXCIpcmV0dXJuITE7aWYoIVguYWxnKXJldHVybiExO2lmKFEmJlguYWxnIT09USlyZXR1cm4hMTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24ga2goJCxRKXtpZigoUT09PVwidjRcInx8IVEpJiZMaC50ZXN0KCQpKXJldHVybiEwO2lmKChRPT09XCJ2NlwifHwhUSkmJkFoLnRlc3QoJCkpcmV0dXJuITA7cmV0dXJuITF9Y2xhc3MgaTQgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZGVmLmNvZXJjZSkkLmRhdGE9U3RyaW5nKCQuZGF0YSk7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMuc3RyaW5nKXtsZXQgWD10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShYLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuc3RyaW5nLHJlY2VpdmVkOlgucGFyc2VkVHlwZX0pLG59bGV0IEo9bmV3IEc2LFk9dm9pZCAwO2ZvcihsZXQgWCBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFgua2luZD09PVwibWluXCIpe2lmKCQuZGF0YS5sZW5ndGg8WC52YWx1ZSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUudG9vX3NtYWxsLG1pbmltdW06WC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJtYXhcIil7aWYoJC5kYXRhLmxlbmd0aD5YLnZhbHVlKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse2NvZGU6RS50b29fYmlnLG1heGltdW06WC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJsZW5ndGhcIil7bGV0IFc9JC5kYXRhLmxlbmd0aD5YLnZhbHVlLEc9JC5kYXRhLmxlbmd0aDxYLnZhbHVlO2lmKFd8fEcpe2lmKFk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSxXKXkoWSx7Y29kZTpFLnRvb19iaWcsbWF4aW11bTpYLnZhbHVlLHR5cGU6XCJzdHJpbmdcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTpYLm1lc3NhZ2V9KTtlbHNlIGlmKEcpeShZLHtjb2RlOkUudG9vX3NtYWxsLG1pbmltdW06WC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6WC5tZXNzYWdlfSk7Si5kaXJ0eSgpfX1lbHNlIGlmKFgua2luZD09PVwiZW1haWxcIil7aWYoIUZoLnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiZW1haWxcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImVtb2ppXCIpe2lmKCFpSClpSD1uZXcgUmVnRXhwKFpoLFwidVwiKTtpZighaUgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJlbW9qaVwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwidXVpZFwiKXtpZighTmgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJ1dWlkXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJuYW5vaWRcIil7aWYoIXdoLnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwibmFub2lkXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJjdWlkXCIpe2lmKCFWaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImN1aWRcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImN1aWQyXCIpe2lmKCFCaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImN1aWQyXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJ1bGlkXCIpe2lmKCF6aC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcInVsaWRcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cInVybFwiKXRyeXtuZXcgVVJMKCQuZGF0YSl9Y2F0Y2h7WT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcInVybFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwicmVnZXhcIil7aWYoWC5yZWdleC5sYXN0SW5kZXg9MCwhWC5yZWdleC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcInJlZ2V4XCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJ0cmltXCIpJC5kYXRhPSQuZGF0YS50cmltKCk7ZWxzZSBpZihYLmtpbmQ9PT1cImluY2x1ZGVzXCIpe2lmKCEkLmRhdGEuaW5jbHVkZXMoWC52YWx1ZSxYLnBvc2l0aW9uKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7aW5jbHVkZXM6WC52YWx1ZSxwb3NpdGlvbjpYLnBvc2l0aW9ufSxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwidG9Mb3dlckNhc2VcIikkLmRhdGE9JC5kYXRhLnRvTG93ZXJDYXNlKCk7ZWxzZSBpZihYLmtpbmQ9PT1cInRvVXBwZXJDYXNlXCIpJC5kYXRhPSQuZGF0YS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYoWC5raW5kPT09XCJzdGFydHNXaXRoXCIpe2lmKCEkLmRhdGEuc3RhcnRzV2l0aChYLnZhbHVlKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7c3RhcnRzV2l0aDpYLnZhbHVlfSxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiZW5kc1dpdGhcIil7aWYoISQuZGF0YS5lbmRzV2l0aChYLnZhbHVlKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7ZW5kc1dpdGg6WC52YWx1ZX0sbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImRhdGV0aW1lXCIpe2lmKCFiaChYKS50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJkYXRldGltZVwiLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJkYXRlXCIpe2lmKCFQaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJkYXRlXCIsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cInRpbWVcIil7aWYoIUVoKFgpLnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjpcInRpbWVcIixtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiZHVyYXRpb25cIil7aWYoIURoLnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiZHVyYXRpb25cIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImlwXCIpe2lmKCFfaCgkLmRhdGEsWC52ZXJzaW9uKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiaXBcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImp3dFwiKXtpZighU2goJC5kYXRhLFguYWxnKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiand0XCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJjaWRyXCIpe2lmKCFraCgkLmRhdGEsWC52ZXJzaW9uKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiY2lkclwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiYmFzZTY0XCIpe2lmKCFJaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImJhc2U2NFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiYmFzZTY0dXJsXCIpe2lmKCFSaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImJhc2U2NHVybFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIFUkLmFzc2VydE5ldmVyKFgpO3JldHVybntzdGF0dXM6Si52YWx1ZSx2YWx1ZTokLmRhdGF9fV9yZWdleCgkLFEsSil7cmV0dXJuIHRoaXMucmVmaW5lbWVudCgoWSk9PiQudGVzdChZKSx7dmFsaWRhdGlvbjpRLGNvZGU6RS5pbnZhbGlkX3N0cmluZywuLi5tLmVyclRvT2JqKEopfSl9X2FkZENoZWNrKCQpe3JldHVybiBuZXcgaTQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsJF19KX1lbWFpbCgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJlbWFpbFwiLC4uLm0uZXJyVG9PYmooJCl9KX11cmwoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidXJsXCIsLi4ubS5lcnJUb09iaigkKX0pfWVtb2ppKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImVtb2ppXCIsLi4ubS5lcnJUb09iaigkKX0pfXV1aWQoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidXVpZFwiLC4uLm0uZXJyVG9PYmooJCl9KX1uYW5vaWQoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibmFub2lkXCIsLi4ubS5lcnJUb09iaigkKX0pfWN1aWQoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY3VpZFwiLC4uLm0uZXJyVG9PYmooJCl9KX1jdWlkMigkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJjdWlkMlwiLC4uLm0uZXJyVG9PYmooJCl9KX11bGlkKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInVsaWRcIiwuLi5tLmVyclRvT2JqKCQpfSl9YmFzZTY0KCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImJhc2U2NFwiLC4uLm0uZXJyVG9PYmooJCl9KX1iYXNlNjR1cmwoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiYmFzZTY0dXJsXCIsLi4ubS5lcnJUb09iaigkKX0pfWp3dCgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJqd3RcIiwuLi5tLmVyclRvT2JqKCQpfSl9aXAoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaXBcIiwuLi5tLmVyclRvT2JqKCQpfSl9Y2lkcigkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJjaWRyXCIsLi4ubS5lcnJUb09iaigkKX0pfWRhdGV0aW1lKCQpe2lmKHR5cGVvZiAkPT09XCJzdHJpbmdcIilyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRldGltZVwiLHByZWNpc2lvbjpudWxsLG9mZnNldDohMSxsb2NhbDohMSxtZXNzYWdlOiR9KTtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRldGltZVwiLHByZWNpc2lvbjp0eXBlb2YgJD8ucHJlY2lzaW9uPlwidVwiP251bGw6JD8ucHJlY2lzaW9uLG9mZnNldDokPy5vZmZzZXQ/PyExLGxvY2FsOiQ/LmxvY2FsPz8hMSwuLi5tLmVyclRvT2JqKCQ/Lm1lc3NhZ2UpfSl9ZGF0ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRlXCIsbWVzc2FnZTokfSl9dGltZSgkKXtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidGltZVwiLHByZWNpc2lvbjpudWxsLG1lc3NhZ2U6JH0pO3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInRpbWVcIixwcmVjaXNpb246dHlwZW9mICQ/LnByZWNpc2lvbj5cInVcIj9udWxsOiQ/LnByZWNpc2lvbiwuLi5tLmVyclRvT2JqKCQ/Lm1lc3NhZ2UpfSl9ZHVyYXRpb24oJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZHVyYXRpb25cIiwuLi5tLmVyclRvT2JqKCQpfSl9cmVnZXgoJCxRKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJyZWdleFwiLHJlZ2V4OiQsLi4ubS5lcnJUb09iaihRKX0pfWluY2x1ZGVzKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaW5jbHVkZXNcIix2YWx1ZTokLHBvc2l0aW9uOlE/LnBvc2l0aW9uLC4uLm0uZXJyVG9PYmooUT8ubWVzc2FnZSl9KX1zdGFydHNXaXRoKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwic3RhcnRzV2l0aFwiLHZhbHVlOiQsLi4ubS5lcnJUb09iaihRKX0pfWVuZHNXaXRoKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZW5kc1dpdGhcIix2YWx1ZTokLC4uLm0uZXJyVG9PYmooUSl9KX1taW4oJCxRKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTokLC4uLm0uZXJyVG9PYmooUSl9KX1tYXgoJCxRKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTokLC4uLm0uZXJyVG9PYmooUSl9KX1sZW5ndGgoJCxRKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJsZW5ndGhcIix2YWx1ZTokLC4uLm0uZXJyVG9PYmooUSl9KX1ub25lbXB0eSgkKXtyZXR1cm4gdGhpcy5taW4oMSxtLmVyclRvT2JqKCQpKX10cmltKCl7cmV0dXJuIG5ldyBpNCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRyaW1cIn1dfSl9dG9Mb3dlckNhc2UoKXtyZXR1cm4gbmV3IGk0KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOlwidG9Mb3dlckNhc2VcIn1dfSl9dG9VcHBlckNhc2UoKXtyZXR1cm4gbmV3IGk0KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOlwidG9VcHBlckNhc2VcIn1dfSl9Z2V0IGlzRGF0ZXRpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiZGF0ZXRpbWVcIil9Z2V0IGlzRGF0ZSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJkYXRlXCIpfWdldCBpc1RpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwidGltZVwiKX1nZXQgaXNEdXJhdGlvbigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJkdXJhdGlvblwiKX1nZXQgaXNFbWFpbCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJlbWFpbFwiKX1nZXQgaXNVUkwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwidXJsXCIpfWdldCBpc0Vtb2ppKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImVtb2ppXCIpfWdldCBpc1VVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwidXVpZFwiKX1nZXQgaXNOQU5PSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwibmFub2lkXCIpfWdldCBpc0NVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiY3VpZFwiKX1nZXQgaXNDVUlEMigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJjdWlkMlwiKX1nZXQgaXNVTElEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cInVsaWRcIil9Z2V0IGlzSVAoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiaXBcIil9Z2V0IGlzQ0lEUigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJjaWRyXCIpfWdldCBpc0Jhc2U2NCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJiYXNlNjRcIil9Z2V0IGlzQmFzZTY0dXJsKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImJhc2U2NHVybFwiKX1nZXQgbWluTGVuZ3RoKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1pblwiKXtpZigkPT09bnVsbHx8US52YWx1ZT4kKSQ9US52YWx1ZX1yZXR1cm4gJH1nZXQgbWF4TGVuZ3RoKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1heFwiKXtpZigkPT09bnVsbHx8US52YWx1ZTwkKSQ9US52YWx1ZX1yZXR1cm4gJH19aTQuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgaTQoe2NoZWNrczpbXSx0eXBlTmFtZTpiLlpvZFN0cmluZyxjb2VyY2U6JD8uY29lcmNlPz8hMSwuLi5lKCQpfSl9O2Z1bmN0aW9uIHZoKCQsUSl7bGV0IEo9KCQudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV18fFwiXCIpLmxlbmd0aCxZPShRLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgsWD1KPlk/SjpZLFc9TnVtYmVyLnBhcnNlSW50KCQudG9GaXhlZChYKS5yZXBsYWNlKFwiLlwiLFwiXCIpKSxHPU51bWJlci5wYXJzZUludChRLnRvRml4ZWQoWCkucmVwbGFjZShcIi5cIixcIlwiKSk7cmV0dXJuIFclRy8xMCoqWH1jbGFzcyB5OCBleHRlbmRzIFkke2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLm1pbj10aGlzLmd0ZSx0aGlzLm1heD10aGlzLmx0ZSx0aGlzLnN0ZXA9dGhpcy5tdWx0aXBsZU9mfV9wYXJzZSgkKXtpZih0aGlzLl9kZWYuY29lcmNlKSQuZGF0YT1OdW1iZXIoJC5kYXRhKTtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5udW1iZXIpe2xldCBYPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KFgse2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5udW1iZXIscmVjZWl2ZWQ6WC5wYXJzZWRUeXBlfSksbn1sZXQgSj12b2lkIDAsWT1uZXcgRzY7Zm9yKGxldCBYIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoWC5raW5kPT09XCJpbnRcIil7aWYoIVUkLmlzSW50ZWdlcigkLmRhdGEpKUo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxKKSx5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6XCJpbnRlZ2VyXCIscmVjZWl2ZWQ6XCJmbG9hdFwiLG1lc3NhZ2U6WC5tZXNzYWdlfSksWS5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJtaW5cIil7aWYoWC5pbmNsdXNpdmU/JC5kYXRhPFgudmFsdWU6JC5kYXRhPD1YLnZhbHVlKUo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxKKSx5KEose2NvZGU6RS50b29fc21hbGwsbWluaW11bTpYLnZhbHVlLHR5cGU6XCJudW1iZXJcIixpbmNsdXNpdmU6WC5pbmNsdXNpdmUsZXhhY3Q6ITEsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cIm1heFwiKXtpZihYLmluY2x1c2l2ZT8kLmRhdGE+WC52YWx1ZTokLmRhdGE+PVgudmFsdWUpSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLnRvb19iaWcsbWF4aW11bTpYLnZhbHVlLHR5cGU6XCJudW1iZXJcIixpbmNsdXNpdmU6WC5pbmNsdXNpdmUsZXhhY3Q6ITEsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cIm11bHRpcGxlT2ZcIil7aWYodmgoJC5kYXRhLFgudmFsdWUpIT09MClKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6WC52YWx1ZSxtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiZmluaXRlXCIpe2lmKCFOdW1iZXIuaXNGaW5pdGUoJC5kYXRhKSlKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUubm90X2Zpbml0ZSxtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIFUkLmFzc2VydE5ldmVyKFgpO3JldHVybntzdGF0dXM6WS52YWx1ZSx2YWx1ZTokLmRhdGF9fWd0ZSgkLFEpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsJCwhMCxtLnRvU3RyaW5nKFEpKX1ndCgkLFEpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsJCwhMSxtLnRvU3RyaW5nKFEpKX1sdGUoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCQsITAsbS50b1N0cmluZyhRKSl9bHQoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCQsITEsbS50b1N0cmluZyhRKSl9c2V0TGltaXQoJCxRLEosWSl7cmV0dXJuIG5ldyB5OCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDokLHZhbHVlOlEsaW5jbHVzaXZlOkosbWVzc2FnZTptLnRvU3RyaW5nKFkpfV19KX1fYWRkQ2hlY2soJCl7cmV0dXJuIG5ldyB5OCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcywkXX0pfWludCgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJpbnRcIixtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1wb3NpdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1uZWdhdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1ub25wb3NpdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTowLGluY2x1c2l2ZTohMCxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1ub25uZWdhdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTowLGluY2x1c2l2ZTohMCxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1tdWx0aXBsZU9mKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibXVsdGlwbGVPZlwiLHZhbHVlOiQsbWVzc2FnZTptLnRvU3RyaW5nKFEpfSl9ZmluaXRlKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImZpbml0ZVwiLG1lc3NhZ2U6bS50b1N0cmluZygkKX0pfXNhZmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsaW5jbHVzaXZlOiEwLHZhbHVlOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG1lc3NhZ2U6bS50b1N0cmluZygkKX0pLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1nZXQgbWluVmFsdWUoKXtsZXQgJD1udWxsO2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFEua2luZD09PVwibWluXCIpe2lmKCQ9PT1udWxsfHxRLnZhbHVlPiQpJD1RLnZhbHVlfXJldHVybiAkfWdldCBtYXhWYWx1ZSgpe2xldCAkPW51bGw7Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoUS5raW5kPT09XCJtYXhcIil7aWYoJD09PW51bGx8fFEudmFsdWU8JCkkPVEudmFsdWV9cmV0dXJuICR9Z2V0IGlzSW50KCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImludFwifHwkLmtpbmQ9PT1cIm11bHRpcGxlT2ZcIiYmVSQuaXNJbnRlZ2VyKCQudmFsdWUpKX1nZXQgaXNGaW5pdGUoKXtsZXQgJD1udWxsLFE9bnVsbDtmb3IobGV0IEogb2YgdGhpcy5fZGVmLmNoZWNrcylpZihKLmtpbmQ9PT1cImZpbml0ZVwifHxKLmtpbmQ9PT1cImludFwifHxKLmtpbmQ9PT1cIm11bHRpcGxlT2ZcIilyZXR1cm4hMDtlbHNlIGlmKEoua2luZD09PVwibWluXCIpe2lmKFE9PT1udWxsfHxKLnZhbHVlPlEpUT1KLnZhbHVlfWVsc2UgaWYoSi5raW5kPT09XCJtYXhcIil7aWYoJD09PW51bGx8fEoudmFsdWU8JCkkPUoudmFsdWV9cmV0dXJuIE51bWJlci5pc0Zpbml0ZShRKSYmTnVtYmVyLmlzRmluaXRlKCQpfX15OC5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyB5OCh7Y2hlY2tzOltdLHR5cGVOYW1lOmIuWm9kTnVtYmVyLGNvZXJjZTokPy5jb2VyY2V8fCExLC4uLmUoJCl9KX07Y2xhc3MgZzggZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGV9X3BhcnNlKCQpe2lmKHRoaXMuX2RlZi5jb2VyY2UpdHJ5eyQuZGF0YT1CaWdJbnQoJC5kYXRhKX1jYXRjaHtyZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KCQpfWlmKHRoaXMuX2dldFR5cGUoJCkhPT1DLmJpZ2ludClyZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KCQpO2xldCBKPXZvaWQgMCxZPW5ldyBHNjtmb3IobGV0IFggb2YgdGhpcy5fZGVmLmNoZWNrcylpZihYLmtpbmQ9PT1cIm1pblwiKXtpZihYLmluY2x1c2l2ZT8kLmRhdGE8WC52YWx1ZTokLmRhdGE8PVgudmFsdWUpSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLnRvb19zbWFsbCx0eXBlOlwiYmlnaW50XCIsbWluaW11bTpYLnZhbHVlLGluY2x1c2l2ZTpYLmluY2x1c2l2ZSxtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibWF4XCIpe2lmKFguaW5jbHVzaXZlPyQuZGF0YT5YLnZhbHVlOiQuZGF0YT49WC52YWx1ZSlKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUudG9vX2JpZyx0eXBlOlwiYmlnaW50XCIsbWF4aW11bTpYLnZhbHVlLGluY2x1c2l2ZTpYLmluY2x1c2l2ZSxtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibXVsdGlwbGVPZlwiKXtpZigkLmRhdGElWC52YWx1ZSE9PUJpZ0ludCgwKSlKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6WC52YWx1ZSxtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIFUkLmFzc2VydE5ldmVyKFgpO3JldHVybntzdGF0dXM6WS52YWx1ZSx2YWx1ZTokLmRhdGF9fV9nZXRJbnZhbGlkSW5wdXQoJCl7bGV0IFE9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLmJpZ2ludCxyZWNlaXZlZDpRLnBhcnNlZFR5cGV9KSxufWd0ZSgkLFEpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsJCwhMCxtLnRvU3RyaW5nKFEpKX1ndCgkLFEpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsJCwhMSxtLnRvU3RyaW5nKFEpKX1sdGUoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCQsITAsbS50b1N0cmluZyhRKSl9bHQoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCQsITEsbS50b1N0cmluZyhRKSl9c2V0TGltaXQoJCxRLEosWSl7cmV0dXJuIG5ldyBnOCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDokLHZhbHVlOlEsaW5jbHVzaXZlOkosbWVzc2FnZTptLnRvU3RyaW5nKFkpfV19KX1fYWRkQ2hlY2soJCl7cmV0dXJuIG5ldyBnOCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcywkXX0pfXBvc2l0aXZlKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bmVnYXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMSxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1ub25wb3NpdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiEwLG1lc3NhZ2U6bS50b1N0cmluZygkKX0pfW5vbm5lZ2F0aXZlKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITAsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bXVsdGlwbGVPZigkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm11bHRpcGxlT2ZcIix2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX0pfWdldCBtaW5WYWx1ZSgpe2xldCAkPW51bGw7Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoUS5raW5kPT09XCJtaW5cIil7aWYoJD09PW51bGx8fFEudmFsdWU+JCkkPVEudmFsdWV9cmV0dXJuICR9Z2V0IG1heFZhbHVlKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1heFwiKXtpZigkPT09bnVsbHx8US52YWx1ZTwkKSQ9US52YWx1ZX1yZXR1cm4gJH19ZzguY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgZzgoe2NoZWNrczpbXSx0eXBlTmFtZTpiLlpvZEJpZ0ludCxjb2VyY2U6JD8uY29lcmNlPz8hMSwuLi5lKCQpfSl9O2NsYXNzIGc1IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2RlZi5jb2VyY2UpJC5kYXRhPUJvb2xlYW4oJC5kYXRhKTtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5ib29sZWFuKXtsZXQgSj10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuYm9vbGVhbixyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxufXJldHVybiBCNigkLmRhdGEpfX1nNS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBnNSh7dHlwZU5hbWU6Yi5ab2RCb29sZWFuLGNvZXJjZTokPy5jb2VyY2V8fCExLC4uLmUoJCl9KX07Y2xhc3MgWFEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZGVmLmNvZXJjZSkkLmRhdGE9bmV3IERhdGUoJC5kYXRhKTtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5kYXRlKXtsZXQgWD10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShYLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuZGF0ZSxyZWNlaXZlZDpYLnBhcnNlZFR5cGV9KSxufWlmKE51bWJlci5pc05hTigkLmRhdGEuZ2V0VGltZSgpKSl7bGV0IFg9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoWCx7Y29kZTpFLmludmFsaWRfZGF0ZX0pLG59bGV0IEo9bmV3IEc2LFk9dm9pZCAwO2ZvcihsZXQgWCBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFgua2luZD09PVwibWluXCIpe2lmKCQuZGF0YS5nZXRUaW1lKCk8WC52YWx1ZSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUudG9vX3NtYWxsLG1lc3NhZ2U6WC5tZXNzYWdlLGluY2x1c2l2ZTohMCxleGFjdDohMSxtaW5pbXVtOlgudmFsdWUsdHlwZTpcImRhdGVcIn0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibWF4XCIpe2lmKCQuZGF0YS5nZXRUaW1lKCk+WC52YWx1ZSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUudG9vX2JpZyxtZXNzYWdlOlgubWVzc2FnZSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWF4aW11bTpYLnZhbHVlLHR5cGU6XCJkYXRlXCJ9KSxKLmRpcnR5KCl9ZWxzZSBVJC5hc3NlcnROZXZlcihYKTtyZXR1cm57c3RhdHVzOkoudmFsdWUsdmFsdWU6bmV3IERhdGUoJC5kYXRhLmdldFRpbWUoKSl9fV9hZGRDaGVjaygkKXtyZXR1cm4gbmV3IFhRKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLCRdfSl9bWluKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6JC5nZXRUaW1lKCksbWVzc2FnZTptLnRvU3RyaW5nKFEpfSl9bWF4KCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6JC5nZXRUaW1lKCksbWVzc2FnZTptLnRvU3RyaW5nKFEpfSl9Z2V0IG1pbkRhdGUoKXtsZXQgJD1udWxsO2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFEua2luZD09PVwibWluXCIpe2lmKCQ9PT1udWxsfHxRLnZhbHVlPiQpJD1RLnZhbHVlfXJldHVybiAkIT1udWxsP25ldyBEYXRlKCQpOm51bGx9Z2V0IG1heERhdGUoKXtsZXQgJD1udWxsO2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFEua2luZD09PVwibWF4XCIpe2lmKCQ9PT1udWxsfHxRLnZhbHVlPCQpJD1RLnZhbHVlfXJldHVybiAkIT1udWxsP25ldyBEYXRlKCQpOm51bGx9fVhRLmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IFhRKHtjaGVja3M6W10sY29lcmNlOiQ/LmNvZXJjZXx8ITEsdHlwZU5hbWU6Yi5ab2REYXRlLC4uLmUoJCl9KX07Y2xhc3MgaDUgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMuc3ltYm9sKXtsZXQgSj10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuc3ltYm9sLHJlY2VpdmVkOkoucGFyc2VkVHlwZX0pLG59cmV0dXJuIEI2KCQuZGF0YSl9fWg1LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IGg1KHt0eXBlTmFtZTpiLlpvZFN5bWJvbCwuLi5lKCQpfSl9O2NsYXNzIFlRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2dldFR5cGUoJCkhPT1DLnVuZGVmaW5lZCl7bGV0IEo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLnVuZGVmaW5lZCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxufXJldHVybiBCNigkLmRhdGEpfX1ZUS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBZUSh7dHlwZU5hbWU6Yi5ab2RVbmRlZmluZWQsLi4uZSgkKX0pfTtjbGFzcyBXUSBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5udWxsKXtsZXQgSj10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMubnVsbCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxufXJldHVybiBCNigkLmRhdGEpfX1XUS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBXUSh7dHlwZU5hbWU6Yi5ab2ROdWxsLC4uLmUoJCl9KX07Y2xhc3MgdTUgZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5fYW55PSEwfV9wYXJzZSgkKXtyZXR1cm4gQjYoJC5kYXRhKX19dTUuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgdTUoe3R5cGVOYW1lOmIuWm9kQW55LC4uLmUoJCl9KX07Y2xhc3MgajAgZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5fdW5rbm93bj0hMH1fcGFyc2UoJCl7cmV0dXJuIEI2KCQuZGF0YSl9fWowLmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IGowKHt0eXBlTmFtZTpiLlpvZFVua25vd24sLi4uZSgkKX0pfTtjbGFzcyBuNCBleHRlbmRzIFkke19wYXJzZSgkKXtsZXQgUT10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShRLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMubmV2ZXIscmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbn19bjQuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgbjQoe3R5cGVOYW1lOmIuWm9kTmV2ZXIsLi4uZSgkKX0pfTtjbGFzcyBtNSBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy51bmRlZmluZWQpe2xldCBKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy52b2lkLHJlY2VpdmVkOkoucGFyc2VkVHlwZX0pLG59cmV0dXJuIEI2KCQuZGF0YSl9fW01LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IG01KHt0eXBlTmFtZTpiLlpvZFZvaWQsLi4uZSgkKX0pfTtjbGFzcyBFNCBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7Y3R4OlEsc3RhdHVzOkp9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKSxZPXRoaXMuX2RlZjtpZihRLnBhcnNlZFR5cGUhPT1DLmFycmF5KXJldHVybiB5KFEse2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5hcnJheSxyZWNlaXZlZDpRLnBhcnNlZFR5cGV9KSxuO2lmKFkuZXhhY3RMZW5ndGghPT1udWxsKXtsZXQgVz1RLmRhdGEubGVuZ3RoPlkuZXhhY3RMZW5ndGgudmFsdWUsRz1RLmRhdGEubGVuZ3RoPFkuZXhhY3RMZW5ndGgudmFsdWU7aWYoV3x8Ryl5KFEse2NvZGU6Vz9FLnRvb19iaWc6RS50b29fc21hbGwsbWluaW11bTpHP1kuZXhhY3RMZW5ndGgudmFsdWU6dm9pZCAwLG1heGltdW06Vz9ZLmV4YWN0TGVuZ3RoLnZhbHVlOnZvaWQgMCx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTpZLmV4YWN0TGVuZ3RoLm1lc3NhZ2V9KSxKLmRpcnR5KCl9aWYoWS5taW5MZW5ndGghPT1udWxsKXtpZihRLmRhdGEubGVuZ3RoPFkubWluTGVuZ3RoLnZhbHVlKXkoUSx7Y29kZTpFLnRvb19zbWFsbCxtaW5pbXVtOlkubWluTGVuZ3RoLnZhbHVlLHR5cGU6XCJhcnJheVwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOlkubWluTGVuZ3RoLm1lc3NhZ2V9KSxKLmRpcnR5KCl9aWYoWS5tYXhMZW5ndGghPT1udWxsKXtpZihRLmRhdGEubGVuZ3RoPlkubWF4TGVuZ3RoLnZhbHVlKXkoUSx7Y29kZTpFLnRvb19iaWcsbWF4aW11bTpZLm1heExlbmd0aC52YWx1ZSx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpZLm1heExlbmd0aC5tZXNzYWdlfSksSi5kaXJ0eSgpfWlmKFEuY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChbLi4uUS5kYXRhXS5tYXAoKFcsRyk9PntyZXR1cm4gWS50eXBlLl9wYXJzZUFzeW5jKG5ldyBLNChRLFcsUS5wYXRoLEcpKX0pKS50aGVuKChXKT0+e3JldHVybiBHNi5tZXJnZUFycmF5KEosVyl9KTtsZXQgWD1bLi4uUS5kYXRhXS5tYXAoKFcsRyk9PntyZXR1cm4gWS50eXBlLl9wYXJzZVN5bmMobmV3IEs0KFEsVyxRLnBhdGgsRykpfSk7cmV0dXJuIEc2Lm1lcmdlQXJyYXkoSixYKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX1taW4oJCxRKXtyZXR1cm4gbmV3IEU0KHsuLi50aGlzLl9kZWYsbWluTGVuZ3RoOnt2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX19KX1tYXgoJCxRKXtyZXR1cm4gbmV3IEU0KHsuLi50aGlzLl9kZWYsbWF4TGVuZ3RoOnt2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX19KX1sZW5ndGgoJCxRKXtyZXR1cm4gbmV3IEU0KHsuLi50aGlzLl9kZWYsZXhhY3RMZW5ndGg6e3ZhbHVlOiQsbWVzc2FnZTptLnRvU3RyaW5nKFEpfX0pfW5vbmVtcHR5KCQpe3JldHVybiB0aGlzLm1pbigxLCQpfX1FNC5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IEU0KHt0eXBlOiQsbWluTGVuZ3RoOm51bGwsbWF4TGVuZ3RoOm51bGwsZXhhY3RMZW5ndGg6bnVsbCx0eXBlTmFtZTpiLlpvZEFycmF5LC4uLmUoUSl9KX07ZnVuY3Rpb24gZjgoJCl7aWYoJCBpbnN0YW5jZW9mIGckKXtsZXQgUT17fTtmb3IobGV0IEogaW4gJC5zaGFwZSl7bGV0IFk9JC5zaGFwZVtKXTtRW0pdPW82LmNyZWF0ZShmOChZKSl9cmV0dXJuIG5ldyBnJCh7Li4uJC5fZGVmLHNoYXBlOigpPT5RfSl9ZWxzZSBpZigkIGluc3RhbmNlb2YgRTQpcmV0dXJuIG5ldyBFNCh7Li4uJC5fZGVmLHR5cGU6ZjgoJC5lbGVtZW50KX0pO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIG82KXJldHVybiBvNi5jcmVhdGUoZjgoJC51bndyYXAoKSkpO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIEkxKXJldHVybiBJMS5jcmVhdGUoZjgoJC51bndyYXAoKSkpO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIHI0KXJldHVybiByNC5jcmVhdGUoJC5pdGVtcy5tYXAoKFEpPT5mOChRKSkpO2Vsc2UgcmV0dXJuICR9Y2xhc3MgZyQgZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5fY2FjaGVkPW51bGwsdGhpcy5ub25zdHJpY3Q9dGhpcy5wYXNzdGhyb3VnaCx0aGlzLmF1Z21lbnQ9dGhpcy5leHRlbmR9X2dldENhY2hlZCgpe2lmKHRoaXMuX2NhY2hlZCE9PW51bGwpcmV0dXJuIHRoaXMuX2NhY2hlZDtsZXQgJD10aGlzLl9kZWYuc2hhcGUoKSxRPVUkLm9iamVjdEtleXMoJCk7cmV0dXJuIHRoaXMuX2NhY2hlZD17c2hhcGU6JCxrZXlzOlF9LHRoaXMuX2NhY2hlZH1fcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMub2JqZWN0KXtsZXQgSD10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShILHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMub2JqZWN0LHJlY2VpdmVkOkgucGFyc2VkVHlwZX0pLG59bGV0e3N0YXR1czpKLGN0eDpZfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCkse3NoYXBlOlgsa2V5czpXfT10aGlzLl9nZXRDYWNoZWQoKSxHPVtdO2lmKCEodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2YgbjQmJnRoaXMuX2RlZi51bmtub3duS2V5cz09PVwic3RyaXBcIikpe2ZvcihsZXQgSCBpbiBZLmRhdGEpaWYoIVcuaW5jbHVkZXMoSCkpRy5wdXNoKEgpfWxldCBVPVtdO2ZvcihsZXQgSCBvZiBXKXtsZXQgcT1YW0hdLFY9WS5kYXRhW0hdO1UucHVzaCh7a2V5OntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOkh9LHZhbHVlOnEuX3BhcnNlKG5ldyBLNChZLFYsWS5wYXRoLEgpKSxhbHdheXNTZXQ6SCBpbiBZLmRhdGF9KX1pZih0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBuNCl7bGV0IEg9dGhpcy5fZGVmLnVua25vd25LZXlzO2lmKEg9PT1cInBhc3N0aHJvdWdoXCIpZm9yKGxldCBxIG9mIEcpVS5wdXNoKHtrZXk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6cX0sdmFsdWU6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6WS5kYXRhW3FdfX0pO2Vsc2UgaWYoSD09PVwic3RyaWN0XCIpe2lmKEcubGVuZ3RoPjApeShZLHtjb2RlOkUudW5yZWNvZ25pemVkX2tleXMsa2V5czpHfSksSi5kaXJ0eSgpfWVsc2UgaWYoSD09PVwic3RyaXBcIik7ZWxzZSB0aHJvdyBFcnJvcihcIkludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5cIil9ZWxzZXtsZXQgSD10aGlzLl9kZWYuY2F0Y2hhbGw7Zm9yKGxldCBxIG9mIEcpe2xldCBWPVkuZGF0YVtxXTtVLnB1c2goe2tleTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpxfSx2YWx1ZTpILl9wYXJzZShuZXcgSzQoWSxWLFkucGF0aCxxKSksYWx3YXlzU2V0OnEgaW4gWS5kYXRhfSl9fWlmKFkuY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jKCk9PntsZXQgSD1bXTtmb3IobGV0IHEgb2YgVSl7bGV0IFY9YXdhaXQgcS5rZXksQj1hd2FpdCBxLnZhbHVlO0gucHVzaCh7a2V5OlYsdmFsdWU6QixhbHdheXNTZXQ6cS5hbHdheXNTZXR9KX1yZXR1cm4gSH0pLnRoZW4oKEgpPT57cmV0dXJuIEc2Lm1lcmdlT2JqZWN0U3luYyhKLEgpfSk7ZWxzZSByZXR1cm4gRzYubWVyZ2VPYmplY3RTeW5jKEosVSl9Z2V0IHNoYXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zaGFwZSgpfXN0cmljdCgkKXtyZXR1cm4gbS5lcnJUb09iaixuZXcgZyQoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czpcInN0cmljdFwiLC4uLiQhPT12b2lkIDA/e2Vycm9yTWFwOihRLEopPT57bGV0IFk9dGhpcy5fZGVmLmVycm9yTWFwPy4oUSxKKS5tZXNzYWdlPz9KLmRlZmF1bHRFcnJvcjtpZihRLmNvZGU9PT1cInVucmVjb2duaXplZF9rZXlzXCIpcmV0dXJue21lc3NhZ2U6bS5lcnJUb09iaigkKS5tZXNzYWdlPz9ZfTtyZXR1cm57bWVzc2FnZTpZfX19Ont9fSl9c3RyaXAoKXtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJzdHJpcFwifSl9cGFzc3Rocm91Z2goKXtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJwYXNzdGhyb3VnaFwifSl9ZXh0ZW5kKCQpe3JldHVybiBuZXcgZyQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+KHsuLi50aGlzLl9kZWYuc2hhcGUoKSwuLi4kfSl9KX1tZXJnZSgkKXtyZXR1cm4gbmV3IGckKHt1bmtub3duS2V5czokLl9kZWYudW5rbm93bktleXMsY2F0Y2hhbGw6JC5fZGVmLmNhdGNoYWxsLHNoYXBlOigpPT4oey4uLnRoaXMuX2RlZi5zaGFwZSgpLC4uLiQuX2RlZi5zaGFwZSgpfSksdHlwZU5hbWU6Yi5ab2RPYmplY3R9KX1zZXRLZXkoJCxRKXtyZXR1cm4gdGhpcy5hdWdtZW50KHtbJF06UX0pfWNhdGNoYWxsKCQpe3JldHVybiBuZXcgZyQoey4uLnRoaXMuX2RlZixjYXRjaGFsbDokfSl9cGljaygkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgVSQub2JqZWN0S2V5cygkKSlpZigkW0pdJiZ0aGlzLnNoYXBlW0pdKVFbSl09dGhpcy5zaGFwZVtKXTtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PlF9KX1vbWl0KCQpe2xldCBRPXt9O2ZvcihsZXQgSiBvZiBVJC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKWlmKCEkW0pdKVFbSl09dGhpcy5zaGFwZVtKXTtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PlF9KX1kZWVwUGFydGlhbCgpe3JldHVybiBmOCh0aGlzKX1wYXJ0aWFsKCQpe2xldCBRPXt9O2ZvcihsZXQgSiBvZiBVJC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKXtsZXQgWT10aGlzLnNoYXBlW0pdO2lmKCQmJiEkW0pdKVFbSl09WTtlbHNlIFFbSl09WS5vcHRpb25hbCgpfXJldHVybiBuZXcgZyQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+UX0pfXJlcXVpcmVkKCQpe2xldCBRPXt9O2ZvcihsZXQgSiBvZiBVJC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKWlmKCQmJiEkW0pdKVFbSl09dGhpcy5zaGFwZVtKXTtlbHNle2xldCBYPXRoaXMuc2hhcGVbSl07d2hpbGUoWCBpbnN0YW5jZW9mIG82KVg9WC5fZGVmLmlubmVyVHlwZTtRW0pdPVh9cmV0dXJuIG5ldyBnJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5RfSl9a2V5b2YoKXtyZXR1cm4gc1ooVSQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSl9fWckLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgZyQoe3NoYXBlOigpPT4kLHVua25vd25LZXlzOlwic3RyaXBcIixjYXRjaGFsbDpuNC5jcmVhdGUoKSx0eXBlTmFtZTpiLlpvZE9iamVjdCwuLi5lKFEpfSl9O2ckLnN0cmljdENyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgZyQoe3NoYXBlOigpPT4kLHVua25vd25LZXlzOlwic3RyaWN0XCIsY2F0Y2hhbGw6bjQuY3JlYXRlKCksdHlwZU5hbWU6Yi5ab2RPYmplY3QsLi4uZShRKX0pfTtnJC5sYXp5Y3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBnJCh7c2hhcGU6JCx1bmtub3duS2V5czpcInN0cmlwXCIsY2F0Y2hhbGw6bjQuY3JlYXRlKCksdHlwZU5hbWU6Yi5ab2RPYmplY3QsLi4uZShRKX0pfTtjbGFzcyBHUSBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7Y3R4OlF9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKSxKPXRoaXMuX2RlZi5vcHRpb25zO2Z1bmN0aW9uIFkoWCl7Zm9yKGxldCBHIG9mIFgpaWYoRy5yZXN1bHQuc3RhdHVzPT09XCJ2YWxpZFwiKXJldHVybiBHLnJlc3VsdDtmb3IobGV0IEcgb2YgWClpZihHLnJlc3VsdC5zdGF0dXM9PT1cImRpcnR5XCIpcmV0dXJuIFEuY29tbW9uLmlzc3Vlcy5wdXNoKC4uLkcuY3R4LmNvbW1vbi5pc3N1ZXMpLEcucmVzdWx0O2xldCBXPVgubWFwKChHKT0+bmV3IGY2KEcuY3R4LmNvbW1vbi5pc3N1ZXMpKTtyZXR1cm4geShRLHtjb2RlOkUuaW52YWxpZF91bmlvbix1bmlvbkVycm9yczpXfSksbn1pZihRLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwoSi5tYXAoYXN5bmMoWCk9PntsZXQgVz17Li4uUSxjb21tb246ey4uLlEuY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9O3JldHVybntyZXN1bHQ6YXdhaXQgWC5fcGFyc2VBc3luYyh7ZGF0YTpRLmRhdGEscGF0aDpRLnBhdGgscGFyZW50Old9KSxjdHg6V319KSkudGhlbihZKTtlbHNle2xldCBYPXZvaWQgMCxXPVtdO2ZvcihsZXQgVSBvZiBKKXtsZXQgSD17Li4uUSxjb21tb246ey4uLlEuY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9LHE9VS5fcGFyc2VTeW5jKHtkYXRhOlEuZGF0YSxwYXRoOlEucGF0aCxwYXJlbnQ6SH0pO2lmKHEuc3RhdHVzPT09XCJ2YWxpZFwiKXJldHVybiBxO2Vsc2UgaWYocS5zdGF0dXM9PT1cImRpcnR5XCImJiFYKVg9e3Jlc3VsdDpxLGN0eDpIfTtpZihILmNvbW1vbi5pc3N1ZXMubGVuZ3RoKVcucHVzaChILmNvbW1vbi5pc3N1ZXMpfWlmKFgpcmV0dXJuIFEuY29tbW9uLmlzc3Vlcy5wdXNoKC4uLlguY3R4LmNvbW1vbi5pc3N1ZXMpLFgucmVzdWx0O2xldCBHPVcubWFwKChVKT0+bmV3IGY2KFUpKTtyZXR1cm4geShRLHtjb2RlOkUuaW52YWxpZF91bmlvbix1bmlvbkVycm9yczpHfSksbn19Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9fUdRLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgR1Eoe29wdGlvbnM6JCx0eXBlTmFtZTpiLlpvZFVuaW9uLC4uLmUoUSl9KX07dmFyIGQ0PSgkKT0+e2lmKCQgaW5zdGFuY2VvZiBIUSlyZXR1cm4gZDQoJC5zY2hlbWEpO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIGI0KXJldHVybiBkNCgkLmlubmVyVHlwZSgpKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBLUSlyZXR1cm5bJC52YWx1ZV07ZWxzZSBpZigkIGluc3RhbmNlb2YgQTApcmV0dXJuICQub3B0aW9ucztlbHNlIGlmKCQgaW5zdGFuY2VvZiBxUSlyZXR1cm4gVSQub2JqZWN0VmFsdWVzKCQuZW51bSk7ZWxzZSBpZigkIGluc3RhbmNlb2YgVlEpcmV0dXJuIGQ0KCQuX2RlZi5pbm5lclR5cGUpO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIFlRKXJldHVyblt2b2lkIDBdO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIFdRKXJldHVybltudWxsXTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBvNilyZXR1cm5bdm9pZCAwLC4uLmQ0KCQudW53cmFwKCkpXTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBJMSlyZXR1cm5bbnVsbCwuLi5kNCgkLnVud3JhcCgpKV07ZWxzZSBpZigkIGluc3RhbmNlb2Ygb0gpcmV0dXJuIGQ0KCQudW53cmFwKCkpO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIHpRKXJldHVybiBkNCgkLnVud3JhcCgpKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBCUSlyZXR1cm4gZDQoJC5fZGVmLmlubmVyVHlwZSk7ZWxzZSByZXR1cm5bXX07Y2xhc3MgckggZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCk7aWYoUS5wYXJzZWRUeXBlIT09Qy5vYmplY3QpcmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLm9iamVjdCxyZWNlaXZlZDpRLnBhcnNlZFR5cGV9KSxuO2xldCBKPXRoaXMuZGlzY3JpbWluYXRvcixZPVEuZGF0YVtKXSxYPXRoaXMub3B0aW9uc01hcC5nZXQoWSk7aWYoIVgpcmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSkscGF0aDpbSl19KSxuO2lmKFEuY29tbW9uLmFzeW5jKXJldHVybiBYLl9wYXJzZUFzeW5jKHtkYXRhOlEuZGF0YSxwYXRoOlEucGF0aCxwYXJlbnQ6UX0pO2Vsc2UgcmV0dXJuIFguX3BhcnNlU3luYyh7ZGF0YTpRLmRhdGEscGF0aDpRLnBhdGgscGFyZW50OlF9KX1nZXQgZGlzY3JpbWluYXRvcigpe3JldHVybiB0aGlzLl9kZWYuZGlzY3JpbWluYXRvcn1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9kZWYub3B0aW9uc31nZXQgb3B0aW9uc01hcCgpe3JldHVybiB0aGlzLl9kZWYub3B0aW9uc01hcH1zdGF0aWMgY3JlYXRlKCQsUSxKKXtsZXQgWT1uZXcgTWFwO2ZvcihsZXQgWCBvZiBRKXtsZXQgVz1kNChYLnNoYXBlWyRdKTtpZighVy5sZW5ndGgpdGhyb3cgRXJyb3IoYEEgZGlzY3JpbWluYXRvciB2YWx1ZSBmb3Iga2V5IFxcYCR7JH1cXGAgY291bGQgbm90IGJlIGV4dHJhY3RlZCBmcm9tIGFsbCBzY2hlbWEgb3B0aW9uc2ApO2ZvcihsZXQgRyBvZiBXKXtpZihZLmhhcyhHKSl0aHJvdyBFcnJvcihgRGlzY3JpbWluYXRvciBwcm9wZXJ0eSAke1N0cmluZygkKX0gaGFzIGR1cGxpY2F0ZSB2YWx1ZSAke1N0cmluZyhHKX1gKTtZLnNldChHLFgpfX1yZXR1cm4gbmV3IHJIKHt0eXBlTmFtZTpiLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixkaXNjcmltaW5hdG9yOiQsb3B0aW9uczpRLG9wdGlvbnNNYXA6WSwuLi5lKEopfSl9fWZ1bmN0aW9uIG5IKCQsUSl7bGV0IEo9cDQoJCksWT1wNChRKTtpZigkPT09USlyZXR1cm57dmFsaWQ6ITAsZGF0YTokfTtlbHNlIGlmKEo9PT1DLm9iamVjdCYmWT09PUMub2JqZWN0KXtsZXQgWD1VJC5vYmplY3RLZXlzKFEpLFc9VSQub2JqZWN0S2V5cygkKS5maWx0ZXIoKFUpPT5YLmluZGV4T2YoVSkhPT0tMSksRz17Li4uJCwuLi5RfTtmb3IobGV0IFUgb2YgVyl7bGV0IEg9bkgoJFtVXSxRW1VdKTtpZighSC52YWxpZClyZXR1cm57dmFsaWQ6ITF9O0dbVV09SC5kYXRhfXJldHVybnt2YWxpZDohMCxkYXRhOkd9fWVsc2UgaWYoSj09PUMuYXJyYXkmJlk9PT1DLmFycmF5KXtpZigkLmxlbmd0aCE9PVEubGVuZ3RoKXJldHVybnt2YWxpZDohMX07bGV0IFg9W107Zm9yKGxldCBXPTA7VzwkLmxlbmd0aDtXKyspe2xldCBHPSRbV10sVT1RW1ddLEg9bkgoRyxVKTtpZighSC52YWxpZClyZXR1cm57dmFsaWQ6ITF9O1gucHVzaChILmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOlh9fWVsc2UgaWYoSj09PUMuZGF0ZSYmWT09PUMuZGF0ZSYmKyQ9PT0rUSlyZXR1cm57dmFsaWQ6ITAsZGF0YTokfTtlbHNlIHJldHVybnt2YWxpZDohMX19Y2xhc3MgVVEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e3N0YXR1czpRLGN0eDpKfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCksWT0oWCxXKT0+e2lmKHBIKFgpfHxwSChXKSlyZXR1cm4gbjtsZXQgRz1uSChYLnZhbHVlLFcudmFsdWUpO2lmKCFHLnZhbGlkKXJldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc30pLG47aWYoZEgoWCl8fGRIKFcpKVEuZGlydHkoKTtyZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6Ry5kYXRhfX07aWYoSi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlQXN5bmMoe2RhdGE6Si5kYXRhLHBhdGg6Si5wYXRoLHBhcmVudDpKfSldKS50aGVuKChbWCxXXSk9PlkoWCxXKSk7ZWxzZSByZXR1cm4gWSh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pLHRoaXMuX2RlZi5yaWdodC5fcGFyc2VTeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pKX19VVEuY3JlYXRlPSgkLFEsSik9PntyZXR1cm4gbmV3IFVRKHtsZWZ0OiQscmlnaHQ6USx0eXBlTmFtZTpiLlpvZEludGVyc2VjdGlvbiwuLi5lKEopfSl9O2NsYXNzIHI0IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKEoucGFyc2VkVHlwZSE9PUMuYXJyYXkpcmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLmFycmF5LHJlY2VpdmVkOkoucGFyc2VkVHlwZX0pLG47aWYoSi5kYXRhLmxlbmd0aDx0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKXJldHVybiB5KEose2NvZGU6RS50b29fc21hbGwsbWluaW11bTp0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLGluY2x1c2l2ZTohMCxleGFjdDohMSx0eXBlOlwiYXJyYXlcIn0pLG47aWYoIXRoaXMuX2RlZi5yZXN0JiZKLmRhdGEubGVuZ3RoPnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgpeShKLHtjb2RlOkUudG9vX2JpZyxtYXhpbXVtOnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsaW5jbHVzaXZlOiEwLGV4YWN0OiExLHR5cGU6XCJhcnJheVwifSksUS5kaXJ0eSgpO2xldCBYPVsuLi5KLmRhdGFdLm1hcCgoVyxHKT0+e2xldCBVPXRoaXMuX2RlZi5pdGVtc1tHXXx8dGhpcy5fZGVmLnJlc3Q7aWYoIVUpcmV0dXJuIG51bGw7cmV0dXJuIFUuX3BhcnNlKG5ldyBLNChKLFcsSi5wYXRoLEcpKX0pLmZpbHRlcigoVyk9PiEhVyk7aWYoSi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKFgpLnRoZW4oKFcpPT57cmV0dXJuIEc2Lm1lcmdlQXJyYXkoUSxXKX0pO2Vsc2UgcmV0dXJuIEc2Lm1lcmdlQXJyYXkoUSxYKX1nZXQgaXRlbXMoKXtyZXR1cm4gdGhpcy5fZGVmLml0ZW1zfXJlc3QoJCl7cmV0dXJuIG5ldyByNCh7Li4udGhpcy5fZGVmLHJlc3Q6JH0pfX1yNC5jcmVhdGU9KCQsUSk9PntpZighQXJyYXkuaXNBcnJheSgkKSl0aHJvdyBFcnJvcihcIllvdSBtdXN0IHBhc3MgYW4gYXJyYXkgb2Ygc2NoZW1hcyB0byB6LnR1cGxlKFsgLi4uIF0pXCIpO3JldHVybiBuZXcgcjQoe2l0ZW1zOiQsdHlwZU5hbWU6Yi5ab2RUdXBsZSxyZXN0Om51bGwsLi4uZShRKX0pfTtjbGFzcyBsNSBleHRlbmRzIFkke2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKEoucGFyc2VkVHlwZSE9PUMub2JqZWN0KXJldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5vYmplY3QscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbjtsZXQgWT1bXSxYPXRoaXMuX2RlZi5rZXlUeXBlLFc9dGhpcy5fZGVmLnZhbHVlVHlwZTtmb3IobGV0IEcgaW4gSi5kYXRhKVkucHVzaCh7a2V5OlguX3BhcnNlKG5ldyBLNChKLEcsSi5wYXRoLEcpKSx2YWx1ZTpXLl9wYXJzZShuZXcgSzQoSixKLmRhdGFbR10sSi5wYXRoLEcpKSxhbHdheXNTZXQ6RyBpbiBKLmRhdGF9KTtpZihKLmNvbW1vbi5hc3luYylyZXR1cm4gRzYubWVyZ2VPYmplY3RBc3luYyhRLFkpO2Vsc2UgcmV0dXJuIEc2Lm1lcmdlT2JqZWN0U3luYyhRLFkpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9c3RhdGljIGNyZWF0ZSgkLFEsSil7aWYoUSBpbnN0YW5jZW9mIFkkKXJldHVybiBuZXcgbDUoe2tleVR5cGU6JCx2YWx1ZVR5cGU6USx0eXBlTmFtZTpiLlpvZFJlY29yZCwuLi5lKEopfSk7cmV0dXJuIG5ldyBsNSh7a2V5VHlwZTppNC5jcmVhdGUoKSx2YWx1ZVR5cGU6JCx0eXBlTmFtZTpiLlpvZFJlY29yZCwuLi5lKFEpfSl9fWNsYXNzIGM1IGV4dGVuZHMgWSR7Z2V0IGtleVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYua2V5VHlwZX1nZXQgdmFsdWVTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZX1fcGFyc2UoJCl7bGV0e3N0YXR1czpRLGN0eDpKfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCk7aWYoSi5wYXJzZWRUeXBlIT09Qy5tYXApcmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLm1hcCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxuO2xldCBZPXRoaXMuX2RlZi5rZXlUeXBlLFg9dGhpcy5fZGVmLnZhbHVlVHlwZSxXPVsuLi5KLmRhdGEuZW50cmllcygpXS5tYXAoKFtHLFVdLEgpPT57cmV0dXJue2tleTpZLl9wYXJzZShuZXcgSzQoSixHLEoucGF0aCxbSCxcImtleVwiXSkpLHZhbHVlOlguX3BhcnNlKG5ldyBLNChKLFUsSi5wYXRoLFtILFwidmFsdWVcIl0pKX19KTtpZihKLmNvbW1vbi5hc3luYyl7bGV0IEc9bmV3IE1hcDtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57Zm9yKGxldCBVIG9mIFcpe2xldCBIPWF3YWl0IFUua2V5LHE9YXdhaXQgVS52YWx1ZTtpZihILnN0YXR1cz09PVwiYWJvcnRlZFwifHxxLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKEguc3RhdHVzPT09XCJkaXJ0eVwifHxxLnN0YXR1cz09PVwiZGlydHlcIilRLmRpcnR5KCk7Ry5zZXQoSC52YWx1ZSxxLnZhbHVlKX1yZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6R319KX1lbHNle2xldCBHPW5ldyBNYXA7Zm9yKGxldCBVIG9mIFcpe2xldHtrZXk6SCx2YWx1ZTpxfT1VO2lmKEguc3RhdHVzPT09XCJhYm9ydGVkXCJ8fHEuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoSC5zdGF0dXM9PT1cImRpcnR5XCJ8fHEuc3RhdHVzPT09XCJkaXJ0eVwiKVEuZGlydHkoKTtHLnNldChILnZhbHVlLHEudmFsdWUpfXJldHVybntzdGF0dXM6US52YWx1ZSx2YWx1ZTpHfX19fWM1LmNyZWF0ZT0oJCxRLEopPT57cmV0dXJuIG5ldyBjNSh7dmFsdWVUeXBlOlEsa2V5VHlwZTokLHR5cGVOYW1lOmIuWm9kTWFwLC4uLmUoSil9KX07Y2xhc3MgaDggZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e3N0YXR1czpRLGN0eDpKfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCk7aWYoSi5wYXJzZWRUeXBlIT09Qy5zZXQpcmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLnNldCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxuO2xldCBZPXRoaXMuX2RlZjtpZihZLm1pblNpemUhPT1udWxsKXtpZihKLmRhdGEuc2l6ZTxZLm1pblNpemUudmFsdWUpeShKLHtjb2RlOkUudG9vX3NtYWxsLG1pbmltdW06WS5taW5TaXplLnZhbHVlLHR5cGU6XCJzZXRcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpZLm1pblNpemUubWVzc2FnZX0pLFEuZGlydHkoKX1pZihZLm1heFNpemUhPT1udWxsKXtpZihKLmRhdGEuc2l6ZT5ZLm1heFNpemUudmFsdWUpeShKLHtjb2RlOkUudG9vX2JpZyxtYXhpbXVtOlkubWF4U2l6ZS52YWx1ZSx0eXBlOlwic2V0XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6WS5tYXhTaXplLm1lc3NhZ2V9KSxRLmRpcnR5KCl9bGV0IFg9dGhpcy5fZGVmLnZhbHVlVHlwZTtmdW5jdGlvbiBXKFUpe2xldCBIPW5ldyBTZXQ7Zm9yKGxldCBxIG9mIFUpe2lmKHEuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYocS5zdGF0dXM9PT1cImRpcnR5XCIpUS5kaXJ0eSgpO0guYWRkKHEudmFsdWUpfXJldHVybntzdGF0dXM6US52YWx1ZSx2YWx1ZTpIfX1sZXQgRz1bLi4uSi5kYXRhLnZhbHVlcygpXS5tYXAoKFUsSCk9PlguX3BhcnNlKG5ldyBLNChKLFUsSi5wYXRoLEgpKSk7aWYoSi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKEcpLnRoZW4oKFUpPT5XKFUpKTtlbHNlIHJldHVybiBXKEcpfW1pbigkLFEpe3JldHVybiBuZXcgaDgoey4uLnRoaXMuX2RlZixtaW5TaXplOnt2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX19KX1tYXgoJCxRKXtyZXR1cm4gbmV3IGg4KHsuLi50aGlzLl9kZWYsbWF4U2l6ZTp7dmFsdWU6JCxtZXNzYWdlOm0udG9TdHJpbmcoUSl9fSl9c2l6ZSgkLFEpe3JldHVybiB0aGlzLm1pbigkLFEpLm1heCgkLFEpfW5vbmVtcHR5KCQpe3JldHVybiB0aGlzLm1pbigxLCQpfX1oOC5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IGg4KHt2YWx1ZVR5cGU6JCxtaW5TaXplOm51bGwsbWF4U2l6ZTpudWxsLHR5cGVOYW1lOmIuWm9kU2V0LC4uLmUoUSl9KX07Y2xhc3MgSlEgZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy52YWxpZGF0ZT10aGlzLmltcGxlbWVudH1fcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCk7aWYoUS5wYXJzZWRUeXBlIT09Qy5mdW5jdGlvbilyZXR1cm4geShRLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuZnVuY3Rpb24scmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbjtmdW5jdGlvbiBKKEcsVSl7cmV0dXJuIHk1KHtkYXRhOkcscGF0aDpRLnBhdGgsZXJyb3JNYXBzOltRLmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsUS5zY2hlbWFFcnJvck1hcCwkUSgpLEExXS5maWx0ZXIoKEgpPT4hIUgpLGlzc3VlRGF0YTp7Y29kZTpFLmludmFsaWRfYXJndW1lbnRzLGFyZ3VtZW50c0Vycm9yOlV9fSl9ZnVuY3Rpb24gWShHLFUpe3JldHVybiB5NSh7ZGF0YTpHLHBhdGg6US5wYXRoLGVycm9yTWFwczpbUS5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLFEuc2NoZW1hRXJyb3JNYXAsJFEoKSxBMV0uZmlsdGVyKChIKT0+ISFIKSxpc3N1ZURhdGE6e2NvZGU6RS5pbnZhbGlkX3JldHVybl90eXBlLHJldHVyblR5cGVFcnJvcjpVfX0pfWxldCBYPXtlcnJvck1hcDpRLmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXB9LFc9US5kYXRhO2lmKHRoaXMuX2RlZi5yZXR1cm5zIGluc3RhbmNlb2YgdTgpe2xldCBHPXRoaXM7cmV0dXJuIEI2KGFzeW5jIGZ1bmN0aW9uKC4uLlUpe2xldCBIPW5ldyBmNihbXSkscT1hd2FpdCBHLl9kZWYuYXJncy5wYXJzZUFzeW5jKFUsWCkuY2F0Y2goKHopPT57dGhyb3cgSC5hZGRJc3N1ZShKKFUseikpLEh9KSxWPWF3YWl0IFJlZmxlY3QuYXBwbHkoVyx0aGlzLHEpO3JldHVybiBhd2FpdCBHLl9kZWYucmV0dXJucy5fZGVmLnR5cGUucGFyc2VBc3luYyhWLFgpLmNhdGNoKCh6KT0+e3Rocm93IEguYWRkSXNzdWUoWShWLHopKSxIfSl9KX1lbHNle2xldCBHPXRoaXM7cmV0dXJuIEI2KGZ1bmN0aW9uKC4uLlUpe2xldCBIPUcuX2RlZi5hcmdzLnNhZmVQYXJzZShVLFgpO2lmKCFILnN1Y2Nlc3MpdGhyb3cgbmV3IGY2KFtKKFUsSC5lcnJvcildKTtsZXQgcT1SZWZsZWN0LmFwcGx5KFcsdGhpcyxILmRhdGEpLFY9Ry5fZGVmLnJldHVybnMuc2FmZVBhcnNlKHEsWCk7aWYoIVYuc3VjY2Vzcyl0aHJvdyBuZXcgZjYoW1kocSxWLmVycm9yKV0pO3JldHVybiBWLmRhdGF9KX19cGFyYW1ldGVycygpe3JldHVybiB0aGlzLl9kZWYuYXJnc31yZXR1cm5UeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5yZXR1cm5zfWFyZ3MoLi4uJCl7cmV0dXJuIG5ldyBKUSh7Li4udGhpcy5fZGVmLGFyZ3M6cjQuY3JlYXRlKCQpLnJlc3QoajAuY3JlYXRlKCkpfSl9cmV0dXJucygkKXtyZXR1cm4gbmV3IEpRKHsuLi50aGlzLl9kZWYscmV0dXJuczokfSl9aW1wbGVtZW50KCQpe3JldHVybiB0aGlzLnBhcnNlKCQpfXN0cmljdEltcGxlbWVudCgkKXtyZXR1cm4gdGhpcy5wYXJzZSgkKX1zdGF0aWMgY3JlYXRlKCQsUSxKKXtyZXR1cm4gbmV3IEpRKHthcmdzOiQ/JDpyNC5jcmVhdGUoW10pLnJlc3QoajAuY3JlYXRlKCkpLHJldHVybnM6UXx8ajAuY3JlYXRlKCksdHlwZU5hbWU6Yi5ab2RGdW5jdGlvbiwuLi5lKEopfSl9fWNsYXNzIEhRIGV4dGVuZHMgWSR7Z2V0IHNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYuZ2V0dGVyKCl9X3BhcnNlKCQpe2xldHtjdHg6UX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO3JldHVybiB0aGlzLl9kZWYuZ2V0dGVyKCkuX3BhcnNlKHtkYXRhOlEuZGF0YSxwYXRoOlEucGF0aCxwYXJlbnQ6UX0pfX1IUS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IEhRKHtnZXR0ZXI6JCx0eXBlTmFtZTpiLlpvZExhenksLi4uZShRKX0pfTtjbGFzcyBLUSBleHRlbmRzIFkke19wYXJzZSgkKXtpZigkLmRhdGEhPT10aGlzLl9kZWYudmFsdWUpe2xldCBRPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KFEse3JlY2VpdmVkOlEuZGF0YSxjb2RlOkUuaW52YWxpZF9saXRlcmFsLGV4cGVjdGVkOnRoaXMuX2RlZi52YWx1ZX0pLG59cmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6JC5kYXRhfX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlfX1LUS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IEtRKHt2YWx1ZTokLHR5cGVOYW1lOmIuWm9kTGl0ZXJhbCwuLi5lKFEpfSl9O2Z1bmN0aW9uIHNaKCQsUSl7cmV0dXJuIG5ldyBBMCh7dmFsdWVzOiQsdHlwZU5hbWU6Yi5ab2RFbnVtLC4uLmUoUSl9KX1jbGFzcyBBMCBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0eXBlb2YgJC5kYXRhIT09XCJzdHJpbmdcIil7bGV0IFE9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCksSj10aGlzLl9kZWYudmFsdWVzO3JldHVybiB5KFEse2V4cGVjdGVkOlUkLmpvaW5WYWx1ZXMoSikscmVjZWl2ZWQ6US5wYXJzZWRUeXBlLGNvZGU6RS5pbnZhbGlkX3R5cGV9KSxufWlmKCF0aGlzLl9jYWNoZSl0aGlzLl9jYWNoZT1uZXcgU2V0KHRoaXMuX2RlZi52YWx1ZXMpO2lmKCF0aGlzLl9jYWNoZS5oYXMoJC5kYXRhKSl7bGV0IFE9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCksSj10aGlzLl9kZWYudmFsdWVzO3JldHVybiB5KFEse3JlY2VpdmVkOlEuZGF0YSxjb2RlOkUuaW52YWxpZF9lbnVtX3ZhbHVlLG9wdGlvbnM6Sn0pLG59cmV0dXJuIEI2KCQuZGF0YSl9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlc31nZXQgZW51bSgpe2xldCAkPXt9O2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYudmFsdWVzKSRbUV09UTtyZXR1cm4gJH1nZXQgVmFsdWVzKCl7bGV0ICQ9e307Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi52YWx1ZXMpJFtRXT1RO3JldHVybiAkfWdldCBFbnVtKCl7bGV0ICQ9e307Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi52YWx1ZXMpJFtRXT1RO3JldHVybiAkfWV4dHJhY3QoJCxRPXRoaXMuX2RlZil7cmV0dXJuIEEwLmNyZWF0ZSgkLHsuLi50aGlzLl9kZWYsLi4uUX0pfWV4Y2x1ZGUoJCxRPXRoaXMuX2RlZil7cmV0dXJuIEEwLmNyZWF0ZSh0aGlzLm9wdGlvbnMuZmlsdGVyKChKKT0+ISQuaW5jbHVkZXMoSikpLHsuLi50aGlzLl9kZWYsLi4uUX0pfX1BMC5jcmVhdGU9c1o7Y2xhc3MgcVEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0IFE9VSQuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpLEo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7aWYoSi5wYXJzZWRUeXBlIT09Qy5zdHJpbmcmJkoucGFyc2VkVHlwZSE9PUMubnVtYmVyKXtsZXQgWT1VJC5vYmplY3RWYWx1ZXMoUSk7cmV0dXJuIHkoSix7ZXhwZWN0ZWQ6VSQuam9pblZhbHVlcyhZKSxyZWNlaXZlZDpKLnBhcnNlZFR5cGUsY29kZTpFLmludmFsaWRfdHlwZX0pLG59aWYoIXRoaXMuX2NhY2hlKXRoaXMuX2NhY2hlPW5ldyBTZXQoVSQuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpKTtpZighdGhpcy5fY2FjaGUuaGFzKCQuZGF0YSkpe2xldCBZPVUkLm9iamVjdFZhbHVlcyhRKTtyZXR1cm4geShKLHtyZWNlaXZlZDpKLmRhdGEsY29kZTpFLmludmFsaWRfZW51bV92YWx1ZSxvcHRpb25zOll9KSxufXJldHVybiBCNigkLmRhdGEpfWdldCBlbnVtKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9fXFRLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgcVEoe3ZhbHVlczokLHR5cGVOYW1lOmIuWm9kTmF0aXZlRW51bSwuLi5lKFEpfSl9O2NsYXNzIHU4IGV4dGVuZHMgWSR7dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfV9wYXJzZSgkKXtsZXR7Y3R4OlF9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKTtpZihRLnBhcnNlZFR5cGUhPT1DLnByb21pc2UmJlEuY29tbW9uLmFzeW5jPT09ITEpcmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLnByb21pc2UscmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbjtsZXQgSj1RLnBhcnNlZFR5cGU9PT1DLnByb21pc2U/US5kYXRhOlByb21pc2UucmVzb2x2ZShRLmRhdGEpO3JldHVybiBCNihKLnRoZW4oKFkpPT57cmV0dXJuIHRoaXMuX2RlZi50eXBlLnBhcnNlQXN5bmMoWSx7cGF0aDpRLnBhdGgsZXJyb3JNYXA6US5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSl9KSl9fXU4LmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgdTgoe3R5cGU6JCx0eXBlTmFtZTpiLlpvZFByb21pc2UsLi4uZShRKX0pfTtjbGFzcyBiNCBleHRlbmRzIFkke2lubmVyVHlwZSgpe3JldHVybiB0aGlzLl9kZWYuc2NoZW1hfXNvdXJjZVR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fZGVmLnR5cGVOYW1lPT09Yi5ab2RFZmZlY3RzP3RoaXMuX2RlZi5zY2hlbWEuc291cmNlVHlwZSgpOnRoaXMuX2RlZi5zY2hlbWF9X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpLFk9dGhpcy5fZGVmLmVmZmVjdHx8bnVsbCxYPXthZGRJc3N1ZTooVyk9PntpZih5KEosVyksVy5mYXRhbClRLmFib3J0KCk7ZWxzZSBRLmRpcnR5KCl9LGdldCBwYXRoKCl7cmV0dXJuIEoucGF0aH19O2lmKFguYWRkSXNzdWU9WC5hZGRJc3N1ZS5iaW5kKFgpLFkudHlwZT09PVwicHJlcHJvY2Vzc1wiKXtsZXQgVz1ZLnRyYW5zZm9ybShKLmRhdGEsWCk7aWYoSi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZShXKS50aGVuKGFzeW5jKEcpPT57aWYoUS52YWx1ZT09PVwiYWJvcnRlZFwiKXJldHVybiBuO2xldCBVPWF3YWl0IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6RyxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pO2lmKFUuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoVS5zdGF0dXM9PT1cImRpcnR5XCIpcmV0dXJuIHg4KFUudmFsdWUpO2lmKFEudmFsdWU9PT1cImRpcnR5XCIpcmV0dXJuIHg4KFUudmFsdWUpO3JldHVybiBVfSk7ZWxzZXtpZihRLnZhbHVlPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47bGV0IEc9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOlcscGF0aDpKLnBhdGgscGFyZW50Okp9KTtpZihHLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKEcuc3RhdHVzPT09XCJkaXJ0eVwiKXJldHVybiB4OChHLnZhbHVlKTtpZihRLnZhbHVlPT09XCJkaXJ0eVwiKXJldHVybiB4OChHLnZhbHVlKTtyZXR1cm4gR319aWYoWS50eXBlPT09XCJyZWZpbmVtZW50XCIpe2xldCBXPShHKT0+e2xldCBVPVkucmVmaW5lbWVudChHLFgpO2lmKEouY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoVSk7aWYoVSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgRXJyb3IoXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtyZXR1cm4gR307aWYoSi5jb21tb24uYXN5bmM9PT0hMSl7bGV0IEc9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pO2lmKEcuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoRy5zdGF0dXM9PT1cImRpcnR5XCIpUS5kaXJ0eSgpO3JldHVybiBXKEcudmFsdWUpLHtzdGF0dXM6US52YWx1ZSx2YWx1ZTpHLnZhbHVlfX1lbHNlIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pLnRoZW4oKEcpPT57aWYoRy5zdGF0dXM9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtpZihHLnN0YXR1cz09PVwiZGlydHlcIilRLmRpcnR5KCk7cmV0dXJuIFcoRy52YWx1ZSkudGhlbigoKT0+e3JldHVybntzdGF0dXM6US52YWx1ZSx2YWx1ZTpHLnZhbHVlfX0pfSl9aWYoWS50eXBlPT09XCJ0cmFuc2Zvcm1cIilpZihKLmNvbW1vbi5hc3luYz09PSExKXtsZXQgVz10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6Si5kYXRhLHBhdGg6Si5wYXRoLHBhcmVudDpKfSk7aWYoIUwwKFcpKXJldHVybiBuO2xldCBHPVkudHJhbnNmb3JtKFcudmFsdWUsWCk7aWYoRyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgRXJyb3IoXCJBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtyZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6R319ZWxzZSByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KS50aGVuKChXKT0+e2lmKCFMMChXKSlyZXR1cm4gbjtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFkudHJhbnNmb3JtKFcudmFsdWUsWCkpLnRoZW4oKEcpPT4oe3N0YXR1czpRLnZhbHVlLHZhbHVlOkd9KSl9KTtVJC5hc3NlcnROZXZlcihZKX19YjQuY3JlYXRlPSgkLFEsSik9PntyZXR1cm4gbmV3IGI0KHtzY2hlbWE6JCx0eXBlTmFtZTpiLlpvZEVmZmVjdHMsZWZmZWN0OlEsLi4uZShKKX0pfTtiNC5jcmVhdGVXaXRoUHJlcHJvY2Vzcz0oJCxRLEopPT57cmV0dXJuIG5ldyBiNCh7c2NoZW1hOlEsZWZmZWN0Ont0eXBlOlwicHJlcHJvY2Vzc1wiLHRyYW5zZm9ybTokfSx0eXBlTmFtZTpiLlpvZEVmZmVjdHMsLi4uZShKKX0pfTtjbGFzcyBvNiBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9nZXRUeXBlKCQpPT09Qy51bmRlZmluZWQpcmV0dXJuIEI2KHZvaWQgMCk7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKCQpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1vNi5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IG82KHtpbm5lclR5cGU6JCx0eXBlTmFtZTpiLlpvZE9wdGlvbmFsLC4uLmUoUSl9KX07Y2xhc3MgSTEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKT09PUMubnVsbClyZXR1cm4gQjYobnVsbCk7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKCQpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1JMS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IEkxKHtpbm5lclR5cGU6JCx0eXBlTmFtZTpiLlpvZE51bGxhYmxlLC4uLmUoUSl9KX07Y2xhc3MgVlEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCksSj1RLmRhdGE7aWYoUS5wYXJzZWRUeXBlPT09Qy51bmRlZmluZWQpSj10aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCk7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOkoscGF0aDpRLnBhdGgscGFyZW50OlF9KX1yZW1vdmVEZWZhdWx0KCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fVZRLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgVlEoe2lubmVyVHlwZTokLHR5cGVOYW1lOmIuWm9kRGVmYXVsdCxkZWZhdWx0VmFsdWU6dHlwZW9mIFEuZGVmYXVsdD09PVwiZnVuY3Rpb25cIj9RLmRlZmF1bHQ6KCk9PlEuZGVmYXVsdCwuLi5lKFEpfSl9O2NsYXNzIEJRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtjdHg6UX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpLEo9ey4uLlEsY29tbW9uOnsuLi5RLmNvbW1vbixpc3N1ZXM6W119fSxZPXRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6ey4uLkp9fSk7aWYoUVEoWSkpcmV0dXJuIFkudGhlbigoWCk9PntyZXR1cm57c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpYLnN0YXR1cz09PVwidmFsaWRcIj9YLnZhbHVlOnRoaXMuX2RlZi5jYXRjaFZhbHVlKHtnZXQgZXJyb3IoKXtyZXR1cm4gbmV3IGY2KEouY29tbW9uLmlzc3Vlcyl9LGlucHV0OkouZGF0YX0pfX0pO2Vsc2UgcmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6WS5zdGF0dXM9PT1cInZhbGlkXCI/WS52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBmNihKLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpKLmRhdGF9KX19cmVtb3ZlQ2F0Y2goKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19QlEuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBCUSh7aW5uZXJUeXBlOiQsdHlwZU5hbWU6Yi5ab2RDYXRjaCxjYXRjaFZhbHVlOnR5cGVvZiBRLmNhdGNoPT09XCJmdW5jdGlvblwiP1EuY2F0Y2g6KCk9PlEuY2F0Y2gsLi4uZShRKX0pfTtjbGFzcyBwNSBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5uYW4pe2xldCBKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5uYW4scmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbn1yZXR1cm57c3RhdHVzOlwidmFsaWRcIix2YWx1ZTokLmRhdGF9fX1wNS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBwNSh7dHlwZU5hbWU6Yi5ab2ROYU4sLi4uZSgkKX0pfTt2YXIgSEgkPVN5bWJvbChcInpvZF9icmFuZFwiKTtjbGFzcyBvSCBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7Y3R4OlF9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKSxKPVEuZGF0YTtyZXR1cm4gdGhpcy5fZGVmLnR5cGUuX3BhcnNlKHtkYXRhOkoscGF0aDpRLnBhdGgscGFyZW50OlF9KX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9fWNsYXNzIGQ1IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKEouY29tbW9uLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IFg9YXdhaXQgdGhpcy5fZGVmLmluLl9wYXJzZUFzeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pO2lmKFguc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoWC5zdGF0dXM9PT1cImRpcnR5XCIpcmV0dXJuIFEuZGlydHkoKSx4OChYLnZhbHVlKTtlbHNlIHJldHVybiB0aGlzLl9kZWYub3V0Ll9wYXJzZUFzeW5jKHtkYXRhOlgudmFsdWUscGF0aDpKLnBhdGgscGFyZW50Okp9KX0pKCk7ZWxzZXtsZXQgWT10aGlzLl9kZWYuaW4uX3BhcnNlU3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KTtpZihZLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKFkuc3RhdHVzPT09XCJkaXJ0eVwiKXJldHVybiBRLmRpcnR5KCkse3N0YXR1czpcImRpcnR5XCIsdmFsdWU6WS52YWx1ZX07ZWxzZSByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VTeW5jKHtkYXRhOlkudmFsdWUscGF0aDpKLnBhdGgscGFyZW50Okp9KX19c3RhdGljIGNyZWF0ZSgkLFEpe3JldHVybiBuZXcgZDUoe2luOiQsb3V0OlEsdHlwZU5hbWU6Yi5ab2RQaXBlbGluZX0pfX1jbGFzcyB6USBleHRlbmRzIFkke19wYXJzZSgkKXtsZXQgUT10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSgkKSxKPShZKT0+e2lmKEwwKFkpKVkudmFsdWU9T2JqZWN0LmZyZWV6ZShZLnZhbHVlKTtyZXR1cm4gWX07cmV0dXJuIFFRKFEpP1EudGhlbigoWSk9PkooWSkpOkooUSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fXpRLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgelEoe2lubmVyVHlwZTokLHR5cGVOYW1lOmIuWm9kUmVhZG9ubHksLi4uZShRKX0pfTt2YXIgS0gkPXtvYmplY3Q6ZyQubGF6eWNyZWF0ZX0sYjsoZnVuY3Rpb24oJCl7JC5ab2RTdHJpbmc9XCJab2RTdHJpbmdcIiwkLlpvZE51bWJlcj1cIlpvZE51bWJlclwiLCQuWm9kTmFOPVwiWm9kTmFOXCIsJC5ab2RCaWdJbnQ9XCJab2RCaWdJbnRcIiwkLlpvZEJvb2xlYW49XCJab2RCb29sZWFuXCIsJC5ab2REYXRlPVwiWm9kRGF0ZVwiLCQuWm9kU3ltYm9sPVwiWm9kU3ltYm9sXCIsJC5ab2RVbmRlZmluZWQ9XCJab2RVbmRlZmluZWRcIiwkLlpvZE51bGw9XCJab2ROdWxsXCIsJC5ab2RBbnk9XCJab2RBbnlcIiwkLlpvZFVua25vd249XCJab2RVbmtub3duXCIsJC5ab2ROZXZlcj1cIlpvZE5ldmVyXCIsJC5ab2RWb2lkPVwiWm9kVm9pZFwiLCQuWm9kQXJyYXk9XCJab2RBcnJheVwiLCQuWm9kT2JqZWN0PVwiWm9kT2JqZWN0XCIsJC5ab2RVbmlvbj1cIlpvZFVuaW9uXCIsJC5ab2REaXNjcmltaW5hdGVkVW5pb249XCJab2REaXNjcmltaW5hdGVkVW5pb25cIiwkLlpvZEludGVyc2VjdGlvbj1cIlpvZEludGVyc2VjdGlvblwiLCQuWm9kVHVwbGU9XCJab2RUdXBsZVwiLCQuWm9kUmVjb3JkPVwiWm9kUmVjb3JkXCIsJC5ab2RNYXA9XCJab2RNYXBcIiwkLlpvZFNldD1cIlpvZFNldFwiLCQuWm9kRnVuY3Rpb249XCJab2RGdW5jdGlvblwiLCQuWm9kTGF6eT1cIlpvZExhenlcIiwkLlpvZExpdGVyYWw9XCJab2RMaXRlcmFsXCIsJC5ab2RFbnVtPVwiWm9kRW51bVwiLCQuWm9kRWZmZWN0cz1cIlpvZEVmZmVjdHNcIiwkLlpvZE5hdGl2ZUVudW09XCJab2ROYXRpdmVFbnVtXCIsJC5ab2RPcHRpb25hbD1cIlpvZE9wdGlvbmFsXCIsJC5ab2ROdWxsYWJsZT1cIlpvZE51bGxhYmxlXCIsJC5ab2REZWZhdWx0PVwiWm9kRGVmYXVsdFwiLCQuWm9kQ2F0Y2g9XCJab2RDYXRjaFwiLCQuWm9kUHJvbWlzZT1cIlpvZFByb21pc2VcIiwkLlpvZEJyYW5kZWQ9XCJab2RCcmFuZGVkXCIsJC5ab2RQaXBlbGluZT1cIlpvZFBpcGVsaW5lXCIsJC5ab2RSZWFkb25seT1cIlpvZFJlYWRvbmx5XCJ9KShifHwoYj17fSkpO3ZhciBxSCQ9aTQuY3JlYXRlLFZIJD15OC5jcmVhdGUsQkgkPXA1LmNyZWF0ZSx6SCQ9ZzguY3JlYXRlLE5IJD1nNS5jcmVhdGUsd0gkPVhRLmNyZWF0ZSxPSCQ9aDUuY3JlYXRlLERIJD1ZUS5jcmVhdGUsRkgkPVdRLmNyZWF0ZSxaSCQ9dTUuY3JlYXRlLE1IJD1qMC5jcmVhdGUsTEgkPW40LmNyZWF0ZSxqSCQ9bTUuY3JlYXRlLEFIJD1FNC5jcmVhdGUsZVo9ZyQuY3JlYXRlLElIJD1nJC5zdHJpY3RDcmVhdGUsUkgkPUdRLmNyZWF0ZSxQSCQ9ckguY3JlYXRlLEVIJD1VUS5jcmVhdGUsYkgkPXI0LmNyZWF0ZSxfSCQ9bDUuY3JlYXRlLFNIJD1jNS5jcmVhdGUsa0gkPWg4LmNyZWF0ZSx2SCQ9SlEuY3JlYXRlLENIJD1IUS5jcmVhdGUsVEgkPUtRLmNyZWF0ZSx4SCQ9QTAuY3JlYXRlLGZIJD1xUS5jcmVhdGUseUgkPXU4LmNyZWF0ZSxnSCQ9YjQuY3JlYXRlLGhIJD1vNi5jcmVhdGUsdUgkPUkxLmNyZWF0ZSxtSCQ9YjQuY3JlYXRlV2l0aFByZXByb2Nlc3MsbEgkPWQ1LmNyZWF0ZTt2YXIgcTQ9e307ajQocTQse3ZlcnNpb246KCk9PmVLLHV0aWw6KCk9PnYsdHJlZWlmeUVycm9yOigpPT5vNSx0b0pTT05TY2hlbWE6KCk9Pko5LHRvRG90UGF0aDooKT0+Sk0sc2FmZVBhcnNlQXN5bmM6KCk9PkUxLHNhZmVQYXJzZTooKT0+UDEscmVnaXN0cnk6KCk9Pl9RLHJlZ2V4ZXM6KCk9PmIxLHByZXR0aWZ5RXJyb3I6KCk9PnQ1LHBhcnNlQXN5bmM6KCk9PkUwLHBhcnNlOigpPT5QMCxsb2NhbGVzOigpPT5hOCxpc1ZhbGlkSldUOigpPT5NTSxpc1ZhbGlkQmFzZTY0VVJMOigpPT5aTSxpc1ZhbGlkQmFzZTY0OigpPT5XcSxnbG9iYWxSZWdpc3RyeTooKT0+QTYsZ2xvYmFsQ29uZmlnOigpPT5OUSxmdW5jdGlvbjooKT0+UzMsZm9ybWF0RXJyb3I6KCk9PmQ4LGZsYXR0ZW5FcnJvcjooKT0+cDgsY29uZmlnOigpPT5jJCxjbG9uZTooKT0+VTYsX3hpZDooKT0+bVEsX3ZvaWQ6KCk9PmozLF91dWlkdjc6KCk9PlRRLF91dWlkdjY6KCk9PkNRLF91dWlkdjQ6KCk9PnZRLF91dWlkOigpPT5rUSxfdXJsOigpPT54USxfdXBwZXJjYXNlOigpPT4kSixfdW5rbm93bjooKT0+UzAsX3VuaW9uOigpPT50dSxfdW5kZWZpbmVkOigpPT5GMyxfdWxpZDooKT0+dVEsX3VpbnQ2NDooKT0+TzMsX3VpbnQzMjooKT0+QjMsX3R1cGxlOigpPT5ZVixfdHJpbTooKT0+R0osX3RyYW5zZm9ybTooKT0+V20sX3RvVXBwZXJDYXNlOigpPT5ISixfdG9Mb3dlckNhc2U6KCk9PlVKLF90ZW1wbGF0ZUxpdGVyYWw6KCk9Pk5tLF9zeW1ib2w6KCk9PkQzLF9zdWNjZXNzOigpPT5xbSxfc3RyaW5nYm9vbDooKT0+YjMsX3N0cmluZ0Zvcm1hdDooKT0+XzMsX3N0cmluZzooKT0+VzMsX3N0YXJ0c1dpdGg6KCk9PkpKLF9zaXplOigpPT5hUSxfc2V0OigpPT5RbSxfc2FmZVBhcnNlQXN5bmM6KCk9PiRZLF9zYWZlUGFyc2U6KCk9PmU1LF9yZWdleDooKT0+c1EsX3JlZmluZTooKT0+RTMsX3JlY29yZDooKT0+ZXUsX3JlYWRvbmx5OigpPT56bSxfcHJvcGVydHk6KCk9PlhWLF9wcm9taXNlOigpPT5PbSxfcG9zaXRpdmU6KCk9PmVxLF9waXBlOigpPT5CbSxfcGFyc2VBc3luYzooKT0+czUsX3BhcnNlOigpPT5hNSxfb3ZlcndyaXRlOigpPT5lNCxfb3B0aW9uYWw6KCk9PkdtLF9udW1iZXI6KCk9PlUzLF9udWxsYWJsZTooKT0+VW0sX251bGw6KCk9PlozLF9ub3JtYWxpemU6KCk9PldKLF9ub25wb3NpdGl2ZTooKT0+UVYsX25vbm9wdGlvbmFsOigpPT5LbSxfbm9ubmVnYXRpdmU6KCk9PkpWLF9uZXZlcjooKT0+TDMsX25lZ2F0aXZlOigpPT4kVixfbmF0aXZlRW51bTooKT0+WG0sX25hbm9pZDooKT0+eVEsX25hbjooKT0+STMsX211bHRpcGxlT2Y6KCk9PmswLF9taW5TaXplOigpPT52MCxfbWluTGVuZ3RoOigpPT5rMSxfbWluOigpPT5JNixfbWltZTooKT0+WUosX21heFNpemU6KCk9PmU4LF9tYXhMZW5ndGg6KCk9PiQ5LF9tYXg6KCk9PnQ2LF9tYXA6KCk9PiRtLF9sdGU6KCk9PnQ2LF9sdDooKT0+YTQsX2xvd2VyY2FzZTooKT0+ZVEsX2xpdGVyYWw6KCk9PlltLF9sZW5ndGg6KCk9PlE5LF9sYXp5OigpPT53bSxfa3N1aWQ6KCk9PmxRLF9qd3Q6KCk9PnRRLF9pc29UaW1lOigpPT5ucSxfaXNvRHVyYXRpb246KCk9PnJxLF9pc29EYXRlVGltZTooKT0+ZHEsX2lzb0RhdGU6KCk9PmlxLF9pcHY2OigpPT5wUSxfaXB2NDooKT0+Y1EsX2ludGVyc2VjdGlvbjooKT0+c3UsX2ludDY0OigpPT53MyxfaW50MzI6KCk9PlYzLF9pbnQ6KCk9PkgzLF9pbmNsdWRlczooKT0+UUosX2d1aWQ6KCk9PnM4LF9ndGU6KCk9Pkk2LF9ndDooKT0+czQsX2Zsb2F0NjQ6KCk9PnEzLF9mbG9hdDMyOigpPT5LMyxfZmlsZTooKT0+UjMsX2VudW06KCk9PkptLF9lbmRzV2l0aDooKT0+WEosX2Vtb2ppOigpPT5mUSxfZW1haWw6KCk9PlNRLF9lMTY0OigpPT5vUSxfZGlzY3JpbWluYXRlZFVuaW9uOigpPT5hdSxfZGVmYXVsdDooKT0+SG0sX2RhdGU6KCk9PkEzLF9jdXN0b206KCk9PlAzLF9jdWlkMjooKT0+aFEsX2N1aWQ6KCk9PmdRLF9jb2VyY2VkU3RyaW5nOigpPT5wcSxfY29lcmNlZE51bWJlcjooKT0+b3EsX2NvZXJjZWREYXRlOigpPT5zcSxfY29lcmNlZEJvb2xlYW46KCk9PnRxLF9jb2VyY2VkQmlnaW50OigpPT5hcSxfY2lkcnY2OigpPT5pUSxfY2lkcnY0OigpPT5kUSxfY2F0Y2g6KCk9PlZtLF9ib29sZWFuOigpPT56MyxfYmlnaW50OigpPT5OMyxfYmFzZTY0dXJsOigpPT5yUSxfYmFzZTY0OigpPT5uUSxfYXJyYXk6KCk9PktKLF9hbnk6KCk9Pk0zLFRpbWVQcmVjaXNpb246KCk9PkczLE5FVkVSOigpPT5pNSxKU09OU2NoZW1hR2VuZXJhdG9yOigpPT5rMyxKU09OU2NoZW1hOigpPT5JTSxEb2M6KCk9PllZLCRvdXRwdXQ6KCk9PlgzLCRpbnB1dDooKT0+WTMsJGNvbnN0cnVjdG9yOigpPT5GLCRicmFuZDooKT0+bjUsJFpvZFhJRDooKT0+T1ksJFpvZFZvaWQ6KCk9PlRZLCRab2RVbmtub3duOigpPT5fMCwkWm9kVW5pb246KCk9PlBRLCRab2RVbmRlZmluZWQ6KCk9PlNZLCRab2RVVUlEOigpPT5IWSwkWm9kVVJMOigpPT5xWSwkWm9kVUxJRDooKT0+d1ksJFpvZFR5cGU6KCk9Pm8sJFpvZFR1cGxlOigpPT5TMSwkWm9kVHJhbnNmb3JtOigpPT5vOCwkWm9kVGVtcGxhdGVMaXRlcmFsOigpPT5lWSwkWm9kU3ltYm9sOigpPT5fWSwkWm9kU3VjY2VzczooKT0+b1ksJFpvZFN0cmluZ0Zvcm1hdDooKT0+aiQsJFpvZFN0cmluZzooKT0+XzEsJFpvZFNldDooKT0+dVksJFpvZFJlZ2lzdHJ5OigpPT5iUSwkWm9kUmVjb3JkOigpPT5nWSwkWm9kUmVhbEVycm9yOigpPT5jOCwkWm9kUmVhZG9ubHk6KCk9PnNZLCRab2RQcm9taXNlOigpPT4kMywkWm9kUHJlZmF1bHQ6KCk9Pm5ZLCRab2RQaXBlOigpPT50OCwkWm9kT3B0aW9uYWw6KCk9PnBZLCRab2RPYmplY3Q6KCk9PlJRLCRab2ROdW1iZXJGb3JtYXQ6KCk9PkVZLCRab2ROdW1iZXI6KCk9PkFRLCRab2ROdWxsYWJsZTooKT0+ZFksJFpvZE51bGw6KCk9PmtZLCRab2ROb25PcHRpb25hbDooKT0+clksJFpvZE5ldmVyOigpPT5DWSwkWm9kTmFub0lEOigpPT5CWSwkWm9kTmFOOigpPT5hWSwkWm9kTWFwOigpPT5oWSwkWm9kTGl0ZXJhbDooKT0+bFksJFpvZExhenk6KCk9PlEzLCRab2RLU1VJRDooKT0+RFksJFpvZEpXVDooKT0+UlksJFpvZEludGVyc2VjdGlvbjooKT0+eVksJFpvZElTT1RpbWU6KCk9PlhxLCRab2RJU09EdXJhdGlvbjooKT0+WXEsJFpvZElTT0RhdGVUaW1lOigpPT5RcSwkWm9kSVNPRGF0ZTooKT0+SnEsJFpvZElQdjY6KCk9PlpZLCRab2RJUHY0OigpPT5GWSwkWm9kR1VJRDooKT0+VVksJFpvZEZ1bmN0aW9uOigpPT5XViwkWm9kRmlsZTooKT0+Y1ksJFpvZEVycm9yOigpPT5qUSwkWm9kRW51bTooKT0+bVksJFpvZEVtb2ppOigpPT5WWSwkWm9kRW1haWw6KCk9PktZLCRab2RFMTY0OigpPT5JWSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOigpPT5mWSwkWm9kRGVmYXVsdDooKT0+aVksJFpvZERhdGU6KCk9PnhZLCRab2RDdXN0b21TdHJpbmdGb3JtYXQ6KCk9PlBZLCRab2RDdXN0b206KCk9PkozLCRab2RDaGVja1VwcGVyQ2FzZTooKT0+aUssJFpvZENoZWNrU3RyaW5nRm9ybWF0OigpPT5pOCwkWm9kQ2hlY2tTdGFydHNXaXRoOigpPT5ySywkWm9kQ2hlY2tTaXplRXF1YWxzOigpPT51SywkWm9kQ2hlY2tSZWdleDooKT0+cEssJFpvZENoZWNrUHJvcGVydHk6KCk9PnRLLCRab2RDaGVja092ZXJ3cml0ZTooKT0+c0ssJFpvZENoZWNrTnVtYmVyRm9ybWF0OigpPT5mSywkWm9kQ2hlY2tNdWx0aXBsZU9mOigpPT54SywkWm9kQ2hlY2tNaW5TaXplOigpPT5oSywkWm9kQ2hlY2tNaW5MZW5ndGg6KCk9PmxLLCRab2RDaGVja01pbWVUeXBlOigpPT5hSywkWm9kQ2hlY2tNYXhTaXplOigpPT5nSywkWm9kQ2hlY2tNYXhMZW5ndGg6KCk9Pm1LLCRab2RDaGVja0xvd2VyQ2FzZTooKT0+ZEssJFpvZENoZWNrTGVzc1RoYW46KCk9PkpZLCRab2RDaGVja0xlbmd0aEVxdWFsczooKT0+Y0ssJFpvZENoZWNrSW5jbHVkZXM6KCk9Pm5LLCRab2RDaGVja0dyZWF0ZXJUaGFuOigpPT5YWSwkWm9kQ2hlY2tFbmRzV2l0aDooKT0+b0ssJFpvZENoZWNrQmlnSW50Rm9ybWF0OigpPT55SywkWm9kQ2hlY2s6KCk9PlQkLCRab2RDYXRjaDooKT0+dFksJFpvZENVSUQyOigpPT5OWSwkWm9kQ1VJRDooKT0+elksJFpvZENJRFJ2NjooKT0+TFksJFpvZENJRFJ2NDooKT0+TVksJFpvZEJvb2xlYW46KCk9Pm44LCRab2RCaWdJbnRGb3JtYXQ6KCk9PmJZLCRab2RCaWdJbnQ6KCk9PklRLCRab2RCYXNlNjRVUkw6KCk9PkFZLCRab2RCYXNlNjQ6KCk9PmpZLCRab2RBc3luY0Vycm9yOigpPT5vNCwkWm9kQXJyYXk6KCk9PnI4LCRab2RBbnk6KCk9PnZZfSk7dmFyIGk1PU9iamVjdC5mcmVlemUoe3N0YXR1czpcImFib3J0ZWRcIn0pO2Z1bmN0aW9uIEYoJCxRLEope2Z1bmN0aW9uIFkoVSxIKXt2YXIgcTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVSxcIl96b2RcIix7dmFsdWU6VS5fem9kPz97fSxlbnVtZXJhYmxlOiExfSksKHE9VS5fem9kKS50cmFpdHM/PyhxLnRyYWl0cz1uZXcgU2V0KSxVLl96b2QudHJhaXRzLmFkZCgkKSxRKFUsSCk7Zm9yKGxldCBWIGluIEcucHJvdG90eXBlKWlmKCEoViBpbiBVKSlPYmplY3QuZGVmaW5lUHJvcGVydHkoVSxWLHt2YWx1ZTpHLnByb3RvdHlwZVtWXS5iaW5kKFUpfSk7VS5fem9kLmNvbnN0cj1HLFUuX3pvZC5kZWY9SH1sZXQgWD1KPy5QYXJlbnQ/P09iamVjdDtjbGFzcyBXIGV4dGVuZHMgWHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KFcsXCJuYW1lXCIse3ZhbHVlOiR9KTtmdW5jdGlvbiBHKFUpe3ZhciBIO2xldCBxPUo/LlBhcmVudD9uZXcgVzp0aGlzO1kocSxVKSwoSD1xLl96b2QpLmRlZmVycmVkPz8oSC5kZWZlcnJlZD1bXSk7Zm9yKGxldCBWIG9mIHEuX3pvZC5kZWZlcnJlZClWKCk7cmV0dXJuIHF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLFwiaW5pdFwiLHt2YWx1ZTpZfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEcsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTooVSk9PntpZihKPy5QYXJlbnQmJlUgaW5zdGFuY2VvZiBKLlBhcmVudClyZXR1cm4hMDtyZXR1cm4gVT8uX3pvZD8udHJhaXRzPy5oYXMoJCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEcsXCJuYW1lXCIse3ZhbHVlOiR9KSxHfXZhciBuNT1TeW1ib2woXCJ6b2RfYnJhbmRcIik7Y2xhc3MgbzQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKFwiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuXCIpfX12YXIgTlE9e307ZnVuY3Rpb24gYyQoJCl7aWYoJClPYmplY3QuYXNzaWduKE5RLCQpO3JldHVybiBOUX12YXIgdj17fTtqNCh2LHt1bndyYXBNZXNzYWdlOigpPT53USxzdHJpbmdpZnlQcmltaXRpdmU6KCk9PngscmVxdWlyZWQ6KCk9Pm9oLHJhbmRvbVN0cmluZzooKT0+dWgscHJvcGVydHlLZXlUeXBlczooKT0+WlEscHJvbWlzZUFsbE9iamVjdDooKT0+aGgscHJpbWl0aXZlVHlwZXM6KCk9PlFLLHByZWZpeElzc3VlczooKT0+ajYscGljazooKT0+cGgscGFydGlhbDooKT0+cmgsb3B0aW9uYWxLZXlzOigpPT5KSyxvbWl0OigpPT5kaCxudW1LZXlzOigpPT5taCxudWxsaXNoOigpPT5SMSxub3JtYWxpemVQYXJhbXM6KCk9PlMsbWVyZ2U6KCk9Pm5oLGpzb25TdHJpbmdpZnlSZXBsYWNlcjooKT0+YUgsam9pblZhbHVlczooKT0+UCxpc3N1ZTooKT0+V0ssaXNQbGFpbk9iamVjdDooKT0+bDgsaXNPYmplY3Q6KCk9Pm04LGdldFNpemFibGVPcmlnaW46KCk9Pk1RLGdldFBhcnNlZFR5cGU6KCk9PmxoLGdldExlbmd0aGFibGVPcmlnaW46KCk9PkxRLGdldEVudW1WYWx1ZXM6KCk9Pk9RLGdldEVsZW1lbnRBdFBhdGg6KCk9PmdoLGZsb2F0U2FmZVJlbWFpbmRlcjooKT0+c0gsZmluYWxpemVJc3N1ZTooKT0+eTYsZXh0ZW5kOigpPT5paCxlc2NhcGVSZWdleDooKT0+dDQsZXNjOigpPT5JMCxkZWZpbmVMYXp5OigpPT5OJCxjcmVhdGVUcmFuc3BhcmVudFByb3h5OigpPT5jaCxjbG9uZTooKT0+VTYsY2xlYW5SZWdleDooKT0+RlEsY2xlYW5FbnVtOigpPT50aCxjYXB0dXJlU3RhY2tUcmFjZTooKT0+cjUsY2FjaGVkOigpPT5EUSxhc3NpZ25Qcm9wOigpPT5lSCxhc3NlcnROb3RFcXVhbDooKT0+VGgsYXNzZXJ0TmV2ZXI6KCk9PmZoLGFzc2VydElzOigpPT54aCxhc3NlcnRFcXVhbDooKT0+Q2gsYXNzZXJ0OigpPT55aCxhbGxvd3NFdmFsOigpPT4kSyxhYm9ydGVkOigpPT5SMCxOVU1CRVJfRk9STUFUX1JBTkdFUzooKT0+WEssQ2xhc3M6KCk9PiRNLEJJR0lOVF9GT1JNQVRfUkFOR0VTOigpPT5ZS30pO2Z1bmN0aW9uIENoKCQpe3JldHVybiAkfWZ1bmN0aW9uIFRoKCQpe3JldHVybiAkfWZ1bmN0aW9uIHhoKCQpe31mdW5jdGlvbiBmaCgkKXt0aHJvdyBFcnJvcigpfWZ1bmN0aW9uIHloKCQpe31mdW5jdGlvbiBPUSgkKXtsZXQgUT1PYmplY3QudmFsdWVzKCQpLmZpbHRlcigoWSk9PnR5cGVvZiBZPT09XCJudW1iZXJcIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKCQpLmZpbHRlcigoW1ksWF0pPT5RLmluZGV4T2YoK1kpPT09LTEpLm1hcCgoW1ksWF0pPT5YKX1mdW5jdGlvbiBQKCQsUT1cInxcIil7cmV0dXJuICQubWFwKChKKT0+eChKKSkuam9pbihRKX1mdW5jdGlvbiBhSCgkLFEpe2lmKHR5cGVvZiBRPT09XCJiaWdpbnRcIilyZXR1cm4gUS50b1N0cmluZygpO3JldHVybiBRfWZ1bmN0aW9uIERRKCQpe3JldHVybntnZXQgdmFsdWUoKXt7bGV0IEo9JCgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcInZhbHVlXCIse3ZhbHVlOkp9KSxKfXRocm93IEVycm9yKFwiY2FjaGVkIHZhbHVlIGFscmVhZHkgc2V0XCIpfX19ZnVuY3Rpb24gUjEoJCl7cmV0dXJuICQ9PT1udWxsfHwkPT09dm9pZCAwfWZ1bmN0aW9uIEZRKCQpe2xldCBRPSQuc3RhcnRzV2l0aChcIl5cIik/MTowLEo9JC5lbmRzV2l0aChcIiRcIik/JC5sZW5ndGgtMTokLmxlbmd0aDtyZXR1cm4gJC5zbGljZShRLEopfWZ1bmN0aW9uIHNIKCQsUSl7bGV0IEo9KCQudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV18fFwiXCIpLmxlbmd0aCxZPShRLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgsWD1KPlk/SjpZLFc9TnVtYmVyLnBhcnNlSW50KCQudG9GaXhlZChYKS5yZXBsYWNlKFwiLlwiLFwiXCIpKSxHPU51bWJlci5wYXJzZUludChRLnRvRml4ZWQoWCkucmVwbGFjZShcIi5cIixcIlwiKSk7cmV0dXJuIFclRy8xMCoqWH1mdW5jdGlvbiBOJCgkLFEsSil7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQsUSx7Z2V0KCl7e2xldCBYPUooKTtyZXR1cm4gJFtRXT1YLFh9dGhyb3cgRXJyb3IoXCJjYWNoZWQgdmFsdWUgYWxyZWFkeSBzZXRcIil9LHNldChYKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxRLHt2YWx1ZTpYfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGVIKCQsUSxKKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxRLHt2YWx1ZTpKLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gZ2goJCxRKXtpZighUSlyZXR1cm4gJDtyZXR1cm4gUS5yZWR1Y2UoKEosWSk9Pko/LltZXSwkKX1mdW5jdGlvbiBoaCgkKXtsZXQgUT1PYmplY3Qua2V5cygkKSxKPVEubWFwKChZKT0+JFtZXSk7cmV0dXJuIFByb21pc2UuYWxsKEopLnRoZW4oKFkpPT57bGV0IFg9e307Zm9yKGxldCBXPTA7VzxRLmxlbmd0aDtXKyspWFtRW1ddXT1ZW1ddO3JldHVybiBYfSl9ZnVuY3Rpb24gdWgoJD0xMCl7bGV0IEo9XCJcIjtmb3IobGV0IFk9MDtZPCQ7WSsrKUorPVwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjYpXTtyZXR1cm4gSn1mdW5jdGlvbiBJMCgkKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoJCl9dmFyIHI1PUVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi4kKT0+e307ZnVuY3Rpb24gbTgoJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJiFBcnJheS5pc0FycmF5KCQpfXZhciAkSz1EUSgoKT0+e2lmKHR5cGVvZiBuYXZpZ2F0b3I8XCJ1XCImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcyhcIkNsb3VkZmxhcmVcIikpcmV0dXJuITE7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oXCJcIiksITB9Y2F0Y2goJCl7cmV0dXJuITF9fSk7ZnVuY3Rpb24gbDgoJCl7aWYobTgoJCk9PT0hMSlyZXR1cm4hMTtsZXQgUT0kLmNvbnN0cnVjdG9yO2lmKFE9PT12b2lkIDApcmV0dXJuITA7bGV0IEo9US5wcm90b3R5cGU7aWYobTgoSik9PT0hMSlyZXR1cm4hMTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSixcImlzUHJvdG90eXBlT2ZcIik9PT0hMSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBtaCgkKXtsZXQgUT0wO2ZvcihsZXQgSiBpbiAkKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgkLEopKVErKztyZXR1cm4gUX12YXIgbGg9KCQpPT57bGV0IFE9dHlwZW9mICQ7c3dpdGNoKFEpe2Nhc2VcInVuZGVmaW5lZFwiOnJldHVyblwidW5kZWZpbmVkXCI7Y2FzZVwic3RyaW5nXCI6cmV0dXJuXCJzdHJpbmdcIjtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKCQpP1wibmFuXCI6XCJudW1iZXJcIjtjYXNlXCJib29sZWFuXCI6cmV0dXJuXCJib29sZWFuXCI7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm5cImZ1bmN0aW9uXCI7Y2FzZVwiYmlnaW50XCI6cmV0dXJuXCJiaWdpbnRcIjtjYXNlXCJzeW1ib2xcIjpyZXR1cm5cInN5bWJvbFwiO2Nhc2VcIm9iamVjdFwiOmlmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuXCJhcnJheVwiO2lmKCQ9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKCQudGhlbiYmdHlwZW9mICQudGhlbj09PVwiZnVuY3Rpb25cIiYmJC5jYXRjaCYmdHlwZW9mICQuY2F0Y2g9PT1cImZ1bmN0aW9uXCIpcmV0dXJuXCJwcm9taXNlXCI7aWYodHlwZW9mIE1hcDxcInVcIiYmJCBpbnN0YW5jZW9mIE1hcClyZXR1cm5cIm1hcFwiO2lmKHR5cGVvZiBTZXQ8XCJ1XCImJiQgaW5zdGFuY2VvZiBTZXQpcmV0dXJuXCJzZXRcIjtpZih0eXBlb2YgRGF0ZTxcInVcIiYmJCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuXCJkYXRlXCI7aWYodHlwZW9mIEZpbGU8XCJ1XCImJiQgaW5zdGFuY2VvZiBGaWxlKXJldHVyblwiZmlsZVwiO3JldHVyblwib2JqZWN0XCI7ZGVmYXVsdDp0aHJvdyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7UX1gKX19LFpRPW5ldyBTZXQoW1wic3RyaW5nXCIsXCJudW1iZXJcIixcInN5bWJvbFwiXSksUUs9bmV3IFNldChbXCJzdHJpbmdcIixcIm51bWJlclwiLFwiYmlnaW50XCIsXCJib29sZWFuXCIsXCJzeW1ib2xcIixcInVuZGVmaW5lZFwiXSk7ZnVuY3Rpb24gdDQoJCl7cmV0dXJuICQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csXCJcXFxcJCZcIil9ZnVuY3Rpb24gVTYoJCxRLEope2xldCBZPW5ldyAkLl96b2QuY29uc3RyKFE/PyQuX3pvZC5kZWYpO2lmKCFRfHxKPy5wYXJlbnQpWS5fem9kLnBhcmVudD0kO3JldHVybiBZfWZ1bmN0aW9uIFMoJCl7bGV0IFE9JDtpZighUSlyZXR1cm57fTtpZih0eXBlb2YgUT09PVwic3RyaW5nXCIpcmV0dXJue2Vycm9yOigpPT5RfTtpZihRPy5tZXNzYWdlIT09dm9pZCAwKXtpZihRPy5lcnJvciE9PXZvaWQgMCl0aHJvdyBFcnJvcihcIkNhbm5vdCBzcGVjaWZ5IGJvdGggYG1lc3NhZ2VgIGFuZCBgZXJyb3JgIHBhcmFtc1wiKTtRLmVycm9yPVEubWVzc2FnZX1pZihkZWxldGUgUS5tZXNzYWdlLHR5cGVvZiBRLmVycm9yPT09XCJzdHJpbmdcIilyZXR1cm57Li4uUSxlcnJvcjooKT0+US5lcnJvcn07cmV0dXJuIFF9ZnVuY3Rpb24gY2goJCl7bGV0IFE7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KEosWSxYKXtyZXR1cm4gUT8/KFE9JCgpKSxSZWZsZWN0LmdldChRLFksWCl9LHNldChKLFksWCxXKXtyZXR1cm4gUT8/KFE9JCgpKSxSZWZsZWN0LnNldChRLFksWCxXKX0saGFzKEosWSl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5oYXMoUSxZKX0sZGVsZXRlUHJvcGVydHkoSixZKXtyZXR1cm4gUT8/KFE9JCgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KFEsWSl9LG93bktleXMoSil7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5vd25LZXlzKFEpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSixZKXtyZXR1cm4gUT8/KFE9JCgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihRLFkpfSxkZWZpbmVQcm9wZXJ0eShKLFksWCl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShRLFksWCl9fSl9ZnVuY3Rpb24geCgkKXtpZih0eXBlb2YgJD09PVwiYmlnaW50XCIpcmV0dXJuICQudG9TdHJpbmcoKStcIm5cIjtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpcmV0dXJuYFwiJHskfVwiYDtyZXR1cm5gJHskfWB9ZnVuY3Rpb24gSksoJCl7cmV0dXJuIE9iamVjdC5rZXlzKCQpLmZpbHRlcigoUSk9PntyZXR1cm4gJFtRXS5fem9kLm9wdGluPT09XCJvcHRpb25hbFwiJiYkW1FdLl96b2Qub3B0b3V0PT09XCJvcHRpb25hbFwifSl9dmFyIFhLPXtzYWZlaW50OltOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl0saW50MzI6Wy0yMTQ3NDgzNjQ4LDIxNDc0ODM2NDddLHVpbnQzMjpbMCw0Mjk0OTY3Mjk1XSxmbG9hdDMyOlstMzQwMjgyMzQ2NjM4NTI4ODYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLDM0MDI4MjM0NjYzODUyODg2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMF0sZmxvYXQ2NDpbLU51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1BWF9WQUxVRV19LFlLPXtpbnQ2NDpbQmlnSW50KFwiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcIiksQmlnSW50KFwiOTIyMzM3MjAzNjg1NDc3NTgwN1wiKV0sdWludDY0OltCaWdJbnQoMCksQmlnSW50KFwiMTg0NDY3NDQwNzM3MDk1NTE2MTVcIildfTtmdW5jdGlvbiBwaCgkLFEpe2xldCBKPXt9LFk9JC5fem9kLmRlZjtmb3IobGV0IFggaW4gUSl7aWYoIShYIGluIFkuc2hhcGUpKXRocm93IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7WH1cImApO2lmKCFRW1hdKWNvbnRpbnVlO0pbWF09WS5zaGFwZVtYXX1yZXR1cm4gVTYoJCx7Li4uJC5fem9kLmRlZixzaGFwZTpKLGNoZWNrczpbXX0pfWZ1bmN0aW9uIGRoKCQsUSl7bGV0IEo9ey4uLiQuX3pvZC5kZWYuc2hhcGV9LFk9JC5fem9kLmRlZjtmb3IobGV0IFggaW4gUSl7aWYoIShYIGluIFkuc2hhcGUpKXRocm93IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7WH1cImApO2lmKCFRW1hdKWNvbnRpbnVlO2RlbGV0ZSBKW1hdfXJldHVybiBVNigkLHsuLi4kLl96b2QuZGVmLHNoYXBlOkosY2hlY2tzOltdfSl9ZnVuY3Rpb24gaWgoJCxRKXtpZighbDgoUSkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGlucHV0IHRvIGV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3RcIik7bGV0IEo9ey4uLiQuX3pvZC5kZWYsZ2V0IHNoYXBlKCl7bGV0IFk9ey4uLiQuX3pvZC5kZWYuc2hhcGUsLi4uUX07cmV0dXJuIGVIKHRoaXMsXCJzaGFwZVwiLFkpLFl9LGNoZWNrczpbXX07cmV0dXJuIFU2KCQsSil9ZnVuY3Rpb24gbmgoJCxRKXtyZXR1cm4gVTYoJCx7Li4uJC5fem9kLmRlZixnZXQgc2hhcGUoKXtsZXQgSj17Li4uJC5fem9kLmRlZi5zaGFwZSwuLi5RLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gZUgodGhpcyxcInNoYXBlXCIsSiksSn0sY2F0Y2hhbGw6US5fem9kLmRlZi5jYXRjaGFsbCxjaGVja3M6W119KX1mdW5jdGlvbiByaCgkLFEsSil7bGV0IFk9US5fem9kLmRlZi5zaGFwZSxYPXsuLi5ZfTtpZihKKWZvcihsZXQgVyBpbiBKKXtpZighKFcgaW4gWSkpdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtXfVwiYCk7aWYoIUpbV10pY29udGludWU7WFtXXT0kP25ldyAkKHt0eXBlOlwib3B0aW9uYWxcIixpbm5lclR5cGU6WVtXXX0pOllbV119ZWxzZSBmb3IobGV0IFcgaW4gWSlYW1ddPSQ/bmV3ICQoe3R5cGU6XCJvcHRpb25hbFwiLGlubmVyVHlwZTpZW1ddfSk6WVtXXTtyZXR1cm4gVTYoUSx7Li4uUS5fem9kLmRlZixzaGFwZTpYLGNoZWNrczpbXX0pfWZ1bmN0aW9uIG9oKCQsUSxKKXtsZXQgWT1RLl96b2QuZGVmLnNoYXBlLFg9ey4uLll9O2lmKEopZm9yKGxldCBXIGluIEope2lmKCEoVyBpbiBYKSl0aHJvdyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke1d9XCJgKTtpZighSltXXSljb250aW51ZTtYW1ddPW5ldyAkKHt0eXBlOlwibm9ub3B0aW9uYWxcIixpbm5lclR5cGU6WVtXXX0pfWVsc2UgZm9yKGxldCBXIGluIFkpWFtXXT1uZXcgJCh7dHlwZTpcIm5vbm9wdGlvbmFsXCIsaW5uZXJUeXBlOllbV119KTtyZXR1cm4gVTYoUSx7Li4uUS5fem9kLmRlZixzaGFwZTpYLGNoZWNrczpbXX0pfWZ1bmN0aW9uIFIwKCQsUT0wKXtmb3IobGV0IEo9UTtKPCQuaXNzdWVzLmxlbmd0aDtKKyspaWYoJC5pc3N1ZXNbSl0/LmNvbnRpbnVlIT09ITApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gajYoJCxRKXtyZXR1cm4gUS5tYXAoKEopPT57dmFyIFk7cmV0dXJuKFk9SikucGF0aD8/KFkucGF0aD1bXSksSi5wYXRoLnVuc2hpZnQoJCksSn0pfWZ1bmN0aW9uIHdRKCQpe3JldHVybiB0eXBlb2YgJD09PVwic3RyaW5nXCI/JDokPy5tZXNzYWdlfWZ1bmN0aW9uIHk2KCQsUSxKKXtsZXQgWT17Li4uJCxwYXRoOiQucGF0aD8/W119O2lmKCEkLm1lc3NhZ2Upe2xldCBYPXdRKCQuaW5zdD8uX3pvZC5kZWY/LmVycm9yPy4oJCkpPz93UShRPy5lcnJvcj8uKCQpKT8/d1EoSi5jdXN0b21FcnJvcj8uKCQpKT8/d1EoSi5sb2NhbGVFcnJvcj8uKCQpKT8/XCJJbnZhbGlkIGlucHV0XCI7WS5tZXNzYWdlPVh9aWYoZGVsZXRlIFkuaW5zdCxkZWxldGUgWS5jb250aW51ZSwhUT8ucmVwb3J0SW5wdXQpZGVsZXRlIFkuaW5wdXQ7cmV0dXJuIFl9ZnVuY3Rpb24gTVEoJCl7aWYoJCBpbnN0YW5jZW9mIFNldClyZXR1cm5cInNldFwiO2lmKCQgaW5zdGFuY2VvZiBNYXApcmV0dXJuXCJtYXBcIjtpZigkIGluc3RhbmNlb2YgRmlsZSlyZXR1cm5cImZpbGVcIjtyZXR1cm5cInVua25vd25cIn1mdW5jdGlvbiBMUSgkKXtpZihBcnJheS5pc0FycmF5KCQpKXJldHVyblwiYXJyYXlcIjtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpcmV0dXJuXCJzdHJpbmdcIjtyZXR1cm5cInVua25vd25cIn1mdW5jdGlvbiBXSyguLi4kKXtsZXRbUSxKLFldPSQ7aWYodHlwZW9mIFE9PT1cInN0cmluZ1wiKXJldHVybnttZXNzYWdlOlEsY29kZTpcImN1c3RvbVwiLGlucHV0OkosaW5zdDpZfTtyZXR1cm57Li4uUX19ZnVuY3Rpb24gdGgoJCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKCQpLmZpbHRlcigoW1EsSl0pPT57cmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIucGFyc2VJbnQoUSwxMCkpfSkubWFwKChRKT0+UVsxXSl9Y2xhc3MgJE17Y29uc3RydWN0b3IoLi4uJCl7fX12YXIgUU09KCQsUSk9PnskLm5hbWU9XCIkWm9kRXJyb3JcIixPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcIl96b2RcIix7dmFsdWU6JC5fem9kLGVudW1lcmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcImlzc3Vlc1wiLHt2YWx1ZTpRLGVudW1lcmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcIm1lc3NhZ2VcIix7Z2V0KCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFEsYUgsMil9LGVudW1lcmFibGU6ITB9KX0salE9RihcIiRab2RFcnJvclwiLFFNKSxjOD1GKFwiJFpvZEVycm9yXCIsUU0se1BhcmVudDpFcnJvcn0pO2Z1bmN0aW9uIHA4KCQsUT0oSik9PkoubWVzc2FnZSl7bGV0IEo9e30sWT1bXTtmb3IobGV0IFggb2YgJC5pc3N1ZXMpaWYoWC5wYXRoLmxlbmd0aD4wKUpbWC5wYXRoWzBdXT1KW1gucGF0aFswXV18fFtdLEpbWC5wYXRoWzBdXS5wdXNoKFEoWCkpO2Vsc2UgWS5wdXNoKFEoWCkpO3JldHVybntmb3JtRXJyb3JzOlksZmllbGRFcnJvcnM6Sn19ZnVuY3Rpb24gZDgoJCxRKXtsZXQgSj1RfHxmdW5jdGlvbihXKXtyZXR1cm4gVy5tZXNzYWdlfSxZPXtfZXJyb3JzOltdfSxYPShXKT0+e2ZvcihsZXQgRyBvZiBXLmlzc3VlcylpZihHLmNvZGU9PT1cImludmFsaWRfdW5pb25cIiYmRy5lcnJvcnMubGVuZ3RoKUcuZXJyb3JzLm1hcCgoVSk9Plgoe2lzc3VlczpVfSkpO2Vsc2UgaWYoRy5jb2RlPT09XCJpbnZhbGlkX2tleVwiKVgoe2lzc3VlczpHLmlzc3Vlc30pO2Vsc2UgaWYoRy5jb2RlPT09XCJpbnZhbGlkX2VsZW1lbnRcIilYKHtpc3N1ZXM6Ry5pc3N1ZXN9KTtlbHNlIGlmKEcucGF0aC5sZW5ndGg9PT0wKVkuX2Vycm9ycy5wdXNoKEooRykpO2Vsc2V7bGV0IFU9WSxIPTA7d2hpbGUoSDxHLnBhdGgubGVuZ3RoKXtsZXQgcT1HLnBhdGhbSF07aWYoSCE9PUcucGF0aC5sZW5ndGgtMSlVW3FdPVVbcV18fHtfZXJyb3JzOltdfTtlbHNlIFVbcV09VVtxXXx8e19lcnJvcnM6W119LFVbcV0uX2Vycm9ycy5wdXNoKEooRykpO1U9VVtxXSxIKyt9fX07cmV0dXJuIFgoJCksWX1mdW5jdGlvbiBvNSgkLFEpe2xldCBKPVF8fGZ1bmN0aW9uKFcpe3JldHVybiBXLm1lc3NhZ2V9LFk9e2Vycm9yczpbXX0sWD0oVyxHPVtdKT0+e3ZhciBVLEg7Zm9yKGxldCBxIG9mIFcuaXNzdWVzKWlmKHEuY29kZT09PVwiaW52YWxpZF91bmlvblwiJiZxLmVycm9ycy5sZW5ndGgpcS5lcnJvcnMubWFwKChWKT0+WCh7aXNzdWVzOlZ9LHEucGF0aCkpO2Vsc2UgaWYocS5jb2RlPT09XCJpbnZhbGlkX2tleVwiKVgoe2lzc3VlczpxLmlzc3Vlc30scS5wYXRoKTtlbHNlIGlmKHEuY29kZT09PVwiaW52YWxpZF9lbGVtZW50XCIpWCh7aXNzdWVzOnEuaXNzdWVzfSxxLnBhdGgpO2Vsc2V7bGV0IFY9Wy4uLkcsLi4ucS5wYXRoXTtpZihWLmxlbmd0aD09PTApe1kuZXJyb3JzLnB1c2goSihxKSk7Y29udGludWV9bGV0IEI9WSx6PTA7d2hpbGUoejxWLmxlbmd0aCl7bGV0IE49Vlt6XSx3PXo9PT1WLmxlbmd0aC0xO2lmKHR5cGVvZiBOPT09XCJzdHJpbmdcIilCLnByb3BlcnRpZXM/PyhCLnByb3BlcnRpZXM9e30pLChVPUIucHJvcGVydGllcylbTl0/PyhVW05dPXtlcnJvcnM6W119KSxCPUIucHJvcGVydGllc1tOXTtlbHNlIEIuaXRlbXM/PyhCLml0ZW1zPVtdKSwoSD1CLml0ZW1zKVtOXT8/KEhbTl09e2Vycm9yczpbXX0pLEI9Qi5pdGVtc1tOXTtpZih3KUIuZXJyb3JzLnB1c2goSihxKSk7eisrfX19O3JldHVybiBYKCQpLFl9ZnVuY3Rpb24gSk0oJCl7bGV0IFE9W107Zm9yKGxldCBKIG9mICQpaWYodHlwZW9mIEo9PT1cIm51bWJlclwiKVEucHVzaChgWyR7Sn1dYCk7ZWxzZSBpZih0eXBlb2YgSj09PVwic3ltYm9sXCIpUS5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcoSikpfV1gKTtlbHNlIGlmKC9bXlxcdyRdLy50ZXN0KEopKVEucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoSil9XWApO2Vsc2V7aWYoUS5sZW5ndGgpUS5wdXNoKFwiLlwiKTtRLnB1c2goSil9cmV0dXJuIFEuam9pbihcIlwiKX1mdW5jdGlvbiB0NSgkKXtsZXQgUT1bXSxKPVsuLi4kLmlzc3Vlc10uc29ydCgoWSxYKT0+WS5wYXRoLmxlbmd0aC1YLnBhdGgubGVuZ3RoKTtmb3IobGV0IFkgb2YgSilpZihRLnB1c2goYFx1MjcxNiAke1kubWVzc2FnZX1gKSxZLnBhdGg/Lmxlbmd0aClRLnB1c2goYCAgXHUyMTkyIGF0ICR7Sk0oWS5wYXRoKX1gKTtyZXR1cm4gUS5qb2luKGBcbmApfXZhciBhNT0oJCk9PihRLEosWSxYKT0+e2xldCBXPVk/T2JqZWN0LmFzc2lnbihZLHthc3luYzohMX0pOnthc3luYzohMX0sRz1RLl96b2QucnVuKHt2YWx1ZTpKLGlzc3VlczpbXX0sVyk7aWYoRyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IG80O2lmKEcuaXNzdWVzLmxlbmd0aCl7bGV0IFU9bmV3KFg/LkVycj8/JCkoRy5pc3N1ZXMubWFwKChIKT0+eTYoSCxXLGMkKCkpKSk7dGhyb3cgcjUoVSxYPy5jYWxsZWUpLFV9cmV0dXJuIEcudmFsdWV9LFAwPWE1KGM4KSxzNT0oJCk9PmFzeW5jKFEsSixZLFgpPT57bGV0IFc9WT9PYmplY3QuYXNzaWduKFkse2FzeW5jOiEwfSk6e2FzeW5jOiEwfSxHPVEuX3pvZC5ydW4oe3ZhbHVlOkosaXNzdWVzOltdfSxXKTtpZihHIGluc3RhbmNlb2YgUHJvbWlzZSlHPWF3YWl0IEc7aWYoRy5pc3N1ZXMubGVuZ3RoKXtsZXQgVT1uZXcoWD8uRXJyPz8kKShHLmlzc3Vlcy5tYXAoKEgpPT55NihILFcsYyQoKSkpKTt0aHJvdyByNShVLFg/LmNhbGxlZSksVX1yZXR1cm4gRy52YWx1ZX0sRTA9czUoYzgpLGU1PSgkKT0+KFEsSixZKT0+e2xldCBYPVk/ey4uLlksYXN5bmM6ITF9Onthc3luYzohMX0sVz1RLl96b2QucnVuKHt2YWx1ZTpKLGlzc3VlczpbXX0sWCk7aWYoVyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IG80O3JldHVybiBXLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3KCQ/P2pRKShXLmlzc3Vlcy5tYXAoKEcpPT55NihHLFgsYyQoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTpXLnZhbHVlfX0sUDE9ZTUoYzgpLCRZPSgkKT0+YXN5bmMoUSxKLFkpPT57bGV0IFg9WT9PYmplY3QuYXNzaWduKFkse2FzeW5jOiEwfSk6e2FzeW5jOiEwfSxXPVEuX3pvZC5ydW4oe3ZhbHVlOkosaXNzdWVzOltdfSxYKTtpZihXIGluc3RhbmNlb2YgUHJvbWlzZSlXPWF3YWl0IFc7cmV0dXJuIFcuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgJChXLmlzc3Vlcy5tYXAoKEcpPT55NihHLFgsYyQoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTpXLnZhbHVlfX0sRTE9JFkoYzgpO3ZhciBiMT17fTtqNChiMSx7eGlkOigpPT5LSyx1dWlkNzooKT0+UXUsdXVpZDY6KCk9PiR1LHV1aWQ0OigpPT5laCx1dWlkOigpPT5iMCx1cHBlcmNhc2U6KCk9PlRLLHVuaWNvZGVFbWFpbDooKT0+WXUsdW5kZWZpbmVkOigpPT52Syx1bGlkOigpPT5ISyx0aW1lOigpPT5JSyxzdHJpbmc6KCk9PlBLLHJmYzUzMjJFbWFpbDooKT0+WHUsbnVtYmVyOigpPT5fSyxudWxsOigpPT5rSyxuYW5vaWQ6KCk9PlZLLGxvd2VyY2FzZTooKT0+Q0ssa3N1aWQ6KCk9PnFLLGlwdjY6KCk9PkRLLGlwdjQ6KCk9Pk9LLGludGVnZXI6KCk9PmJLLGh0bWw1RW1haWw6KCk9Pkp1LGhvc3RuYW1lOigpPT5MSyxndWlkOigpPT56SyxleHRlbmRlZER1cmF0aW9uOigpPT5zaCxlbW9qaTooKT0+d0ssZW1haWw6KCk9Pk5LLGUxNjQ6KCk9PmpLLGR1cmF0aW9uOigpPT5CSyxkb21haW46KCk9PlV1LGRhdGV0aW1lOigpPT5SSyxkYXRlOigpPT5BSyxjdWlkMjooKT0+VUssY3VpZDooKT0+R0ssY2lkcnY2OigpPT5aSyxjaWRydjQ6KCk9PkZLLGJyb3dzZXJFbWFpbDooKT0+V3UsYm9vbGVhbjooKT0+U0ssYmlnaW50OigpPT5FSyxiYXNlNjR1cmw6KCk9PlFZLGJhc2U2NDooKT0+TUssX2Vtb2ppOigpPT5HdX0pO3ZhciBHSz0vXltjQ11bXlxccy1dezgsfSQvLFVLPS9eWzAtOWEtel0rJC8sSEs9L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLEtLPS9eWzAtOWEtdkEtVl17MjB9JC8scUs9L15bQS1aYS16MC05XXsyN30kLyxWSz0vXlthLXpBLVowLTlfLV17MjF9JC8sQks9L15QKD86KFxcZCtXKXwoPyEuKlcpKD89XFxkfFRcXGQpKFxcZCtZKT8oXFxkK00pPyhcXGQrRCk/KFQoPz1cXGQpKFxcZCtIKT8oXFxkK00pPyhcXGQrKFsuLF1cXGQrKT9TKT8pPykkLyxzaD0vXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvLHpLPS9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSkkLyxiMD0oJCk9PntpZighJClyZXR1cm4vXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkLztyZXR1cm4gbmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0keyR9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApfSxlaD1iMCg0KSwkdT1iMCg2KSxRdT1iMCg3KSxOSz0vXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWmEtejAtOV8nK1xcLVxcLl0qKVtBLVphLXowLTlfKy1dQChbQS1aYS16MC05XVtBLVphLXowLTlcXC1dKlxcLikrW0EtWmEtel17Mix9JC8sSnU9L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLFh1PS9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFl1PS9eW15cXHNAXCJdezEsNjR9QFteXFxzQF17MSwyNTV9JC91LFd1PS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxHdT1cIl4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskXCI7ZnVuY3Rpb24gd0soKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskXCIsXCJ1XCIpfXZhciBPSz0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLERLPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pJC8sRks9L14oKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8sWks9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLE1LPS9eJHxeKD86WzAtOWEtekEtWisvXXs0fSkqKD86KD86WzAtOWEtekEtWisvXXsyfT09KXwoPzpbMC05YS16QS1aKy9dezN9PSkpPyQvLFFZPS9eW0EtWmEtejAtOV8tXSokLyxMSz0vXihbYS16QS1aMC05LV0rXFwuKSpbYS16QS1aMC05LV0rJC8sVXU9L14oW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XFwuKStbYS16QS1aXXsyLH0kLyxqSz0vXlxcKyg/OlswLTldKXs2LDE0fVswLTldJC8sWE09XCIoPzooPzpcXFxcZFxcXFxkWzI0NjhdWzA0OF18XFxcXGRcXFxcZFsxMzU3OV1bMjZdfFxcXFxkXFxcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXFxcZHs0fS0oPzooPzowWzEzNTc4XXwxWzAyXSktKD86MFsxLTldfFsxMl1cXFxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXFxcZHwyWzAtOF0pKSlcIixBSz1uZXcgUmVnRXhwKGBeJHtYTX0kYCk7ZnVuY3Rpb24gWU0oJCl7cmV0dXJuIHR5cGVvZiAkLnByZWNpc2lvbj09PVwibnVtYmVyXCI/JC5wcmVjaXNpb249PT0tMT9cIig/OlswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGRcIjokLnByZWNpc2lvbj09PTA/XCIoPzpbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkOlswLTVdXFxcXGRcIjpgKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZDpbMC01XVxcXFxkXFxcXC5cXFxcZHskeyQucHJlY2lzaW9ufX1gOlwiKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZCg/OjpbMC01XVxcXFxkKD86XFxcXC5cXFxcZCspPyk/XCJ9ZnVuY3Rpb24gSUsoJCl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke1lNKCQpfSRgKX1mdW5jdGlvbiBSSygkKXtsZXQgUT1ZTSh7cHJlY2lzaW9uOiQucHJlY2lzaW9ufSksSj1bXCJaXCJdO2lmKCQubG9jYWwpSi5wdXNoKFwiXCIpO2lmKCQub2Zmc2V0KUoucHVzaChcIihbKy1dXFxcXGR7Mn06XFxcXGR7Mn0pXCIpO2xldCBZPWAke1F9KD86JHtKLmpvaW4oXCJ8XCIpfSlgO3JldHVybiBuZXcgUmVnRXhwKGBeJHtYTX1UKD86JHtZfSkkYCl9dmFyIFBLPSgkKT0+e2xldCBRPSQ/YFtcXFxcc1xcXFxTXXskeyQ/Lm1pbmltdW0/PzB9LCR7JD8ubWF4aW11bT8/XCJcIn19YDpcIltcXFxcc1xcXFxTXSpcIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7UX0kYCl9LEVLPS9eXFxkK24/JC8sYks9L15cXGQrJC8sX0s9L14tP1xcZCsoPzpcXC5cXGQrKT8vaSxTSz0vdHJ1ZXxmYWxzZS9pLGtLPS9udWxsL2k7dmFyIHZLPS91bmRlZmluZWQvaTt2YXIgQ0s9L15bXkEtWl0qJC8sVEs9L15bXmEtel0qJC87dmFyIFQkPUYoXCIkWm9kQ2hlY2tcIiwoJCxRKT0+e3ZhciBKOyQuX3pvZD8/KCQuX3pvZD17fSksJC5fem9kLmRlZj1RLChKPSQuX3pvZCkub25hdHRhY2g/PyhKLm9uYXR0YWNoPVtdKX0pLEdNPXtudW1iZXI6XCJudW1iZXJcIixiaWdpbnQ6XCJiaWdpbnRcIixvYmplY3Q6XCJkYXRlXCJ9LEpZPUYoXCIkWm9kQ2hlY2tMZXNzVGhhblwiLCgkLFEpPT57VCQuaW5pdCgkLFEpO2xldCBKPUdNW3R5cGVvZiBRLnZhbHVlXTskLl96b2Qub25hdHRhY2gucHVzaCgoWSk9PntsZXQgWD1ZLl96b2QuYmFnLFc9KFEuaW5jbHVzaXZlP1gubWF4aW11bTpYLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7aWYoUS52YWx1ZTxXKWlmKFEuaW5jbHVzaXZlKVgubWF4aW11bT1RLnZhbHVlO2Vsc2UgWC5leGNsdXNpdmVNYXhpbXVtPVEudmFsdWV9KSwkLl96b2QuY2hlY2s9KFkpPT57aWYoUS5pbmNsdXNpdmU/WS52YWx1ZTw9US52YWx1ZTpZLnZhbHVlPFEudmFsdWUpcmV0dXJuO1kuaXNzdWVzLnB1c2goe29yaWdpbjpKLGNvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpRLnZhbHVlLGlucHV0OlkudmFsdWUsaW5jbHVzaXZlOlEuaW5jbHVzaXZlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLFhZPUYoXCIkWm9kQ2hlY2tHcmVhdGVyVGhhblwiLCgkLFEpPT57VCQuaW5pdCgkLFEpO2xldCBKPUdNW3R5cGVvZiBRLnZhbHVlXTskLl96b2Qub25hdHRhY2gucHVzaCgoWSk9PntsZXQgWD1ZLl96b2QuYmFnLFc9KFEuaW5jbHVzaXZlP1gubWluaW11bTpYLmV4Y2x1c2l2ZU1pbmltdW0pPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7aWYoUS52YWx1ZT5XKWlmKFEuaW5jbHVzaXZlKVgubWluaW11bT1RLnZhbHVlO2Vsc2UgWC5leGNsdXNpdmVNaW5pbXVtPVEudmFsdWV9KSwkLl96b2QuY2hlY2s9KFkpPT57aWYoUS5pbmNsdXNpdmU/WS52YWx1ZT49US52YWx1ZTpZLnZhbHVlPlEudmFsdWUpcmV0dXJuO1kuaXNzdWVzLnB1c2goe29yaWdpbjpKLGNvZGU6XCJ0b29fc21hbGxcIixtaW5pbXVtOlEudmFsdWUsaW5wdXQ6WS52YWx1ZSxpbmNsdXNpdmU6US5pbmNsdXNpdmUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSkseEs9RihcIiRab2RDaGVja011bHRpcGxlT2ZcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9Pnt2YXIgWTsoWT1KLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oWS5tdWx0aXBsZU9mPVEudmFsdWUpfSksJC5fem9kLmNoZWNrPShKKT0+e2lmKHR5cGVvZiBKLnZhbHVlIT09dHlwZW9mIFEudmFsdWUpdGhyb3cgRXJyb3IoXCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLlwiKTtpZih0eXBlb2YgSi52YWx1ZT09PVwiYmlnaW50XCI/Si52YWx1ZSVRLnZhbHVlPT09QmlnSW50KDApOnNIKEoudmFsdWUsUS52YWx1ZSk9PT0wKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46dHlwZW9mIEoudmFsdWUsY29kZTpcIm5vdF9tdWx0aXBsZV9vZlwiLGRpdmlzb3I6US52YWx1ZSxpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGZLPUYoXCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXRcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSxRLmZvcm1hdD1RLmZvcm1hdHx8XCJmbG9hdDY0XCI7bGV0IEo9US5mb3JtYXQ/LmluY2x1ZGVzKFwiaW50XCIpLFk9Sj9cImludFwiOlwibnVtYmVyXCIsW1gsV109WEtbUS5mb3JtYXRdOyQuX3pvZC5vbmF0dGFjaC5wdXNoKChHKT0+e2xldCBVPUcuX3pvZC5iYWc7aWYoVS5mb3JtYXQ9US5mb3JtYXQsVS5taW5pbXVtPVgsVS5tYXhpbXVtPVcsSilVLnBhdHRlcm49Ykt9KSwkLl96b2QuY2hlY2s9KEcpPT57bGV0IFU9Ry52YWx1ZTtpZihKKXtpZighTnVtYmVyLmlzSW50ZWdlcihVKSl7Ry5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6WSxmb3JtYXQ6US5mb3JtYXQsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlUsaW5zdDokfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihVKSl7aWYoVT4wKUcuaXNzdWVzLnB1c2goe2lucHV0OlUsY29kZTpcInRvb19iaWdcIixtYXhpbXVtOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSLG5vdGU6XCJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLlwiLGluc3Q6JCxvcmlnaW46WSxjb250aW51ZTohUS5hYm9ydH0pO2Vsc2UgRy5pc3N1ZXMucHVzaCh7aW5wdXQ6VSxjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixub3RlOlwiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS5cIixpbnN0OiQsb3JpZ2luOlksY29udGludWU6IVEuYWJvcnR9KTtyZXR1cm59fWlmKFU8WClHLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJudW1iZXJcIixpbnB1dDpVLGNvZGU6XCJ0b29fc21hbGxcIixtaW5pbXVtOlgsaW5jbHVzaXZlOiEwLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pO2lmKFU+VylHLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJudW1iZXJcIixpbnB1dDpVLGNvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpXLGluc3Q6JH0pfX0pLHlLPUYoXCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXRcIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXRbSixZXT1ZS1tRLmZvcm1hdF07JC5fem9kLm9uYXR0YWNoLnB1c2goKFgpPT57bGV0IFc9WC5fem9kLmJhZztXLmZvcm1hdD1RLmZvcm1hdCxXLm1pbmltdW09SixXLm1heGltdW09WX0pLCQuX3pvZC5jaGVjaz0oWCk9PntsZXQgVz1YLnZhbHVlO2lmKFc8SilYLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJiaWdpbnRcIixpbnB1dDpXLGNvZGU6XCJ0b29fc21hbGxcIixtaW5pbXVtOkosaW5jbHVzaXZlOiEwLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pO2lmKFc+WSlYLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJiaWdpbnRcIixpbnB1dDpXLGNvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpZLGluc3Q6JH0pfX0pLGdLPUYoXCIkWm9kQ2hlY2tNYXhTaXplXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLndoZW49KEopPT57bGV0IFk9Si52YWx1ZTtyZXR1cm4hUjEoWSkmJlkuc2l6ZSE9PXZvaWQgMH0sJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7aWYoUS5tYXhpbXVtPFkpSi5fem9kLmJhZy5tYXhpbXVtPVEubWF4aW11bX0pLCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1KLnZhbHVlO2lmKFkuc2l6ZTw9US5tYXhpbXVtKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46TVEoWSksY29kZTpcInRvb19iaWdcIixtYXhpbXVtOlEubWF4aW11bSxpbnB1dDpZLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGhLPUYoXCIkWm9kQ2hlY2tNaW5TaXplXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLndoZW49KEopPT57bGV0IFk9Si52YWx1ZTtyZXR1cm4hUjEoWSkmJlkuc2l6ZSE9PXZvaWQgMH0sJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7aWYoUS5taW5pbXVtPlkpSi5fem9kLmJhZy5taW5pbXVtPVEubWluaW11bX0pLCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1KLnZhbHVlO2lmKFkuc2l6ZT49US5taW5pbXVtKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46TVEoWSksY29kZTpcInRvb19zbWFsbFwiLG1pbmltdW06US5taW5pbXVtLGlucHV0OlksaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksdUs9RihcIiRab2RDaGVja1NpemVFcXVhbHNcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2Qud2hlbj0oSik9PntsZXQgWT1KLnZhbHVlO3JldHVybiFSMShZKSYmWS5zaXplIT09dm9pZCAwfSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntsZXQgWT1KLl96b2QuYmFnO1kubWluaW11bT1RLnNpemUsWS5tYXhpbXVtPVEuc2l6ZSxZLnNpemU9US5zaXplfSksJC5fem9kLmNoZWNrPShKKT0+e2xldCBZPUoudmFsdWUsWD1ZLnNpemU7aWYoWD09PVEuc2l6ZSlyZXR1cm47bGV0IFc9WD5RLnNpemU7Si5pc3N1ZXMucHVzaCh7b3JpZ2luOk1RKFkpLC4uLlc/e2NvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpRLnNpemV9Ontjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpRLnNpemV9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLG1LPUYoXCIkWm9kQ2hlY2tNYXhMZW5ndGhcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2Qud2hlbj0oSik9PntsZXQgWT1KLnZhbHVlO3JldHVybiFSMShZKSYmWS5sZW5ndGghPT12b2lkIDB9LCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2lmKFEubWF4aW11bTxZKUouX3pvZC5iYWcubWF4aW11bT1RLm1heGltdW19KSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9Si52YWx1ZTtpZihZLmxlbmd0aDw9US5tYXhpbXVtKXJldHVybjtsZXQgVz1MUShZKTtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46Vyxjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06US5tYXhpbXVtLGluY2x1c2l2ZTohMCxpbnB1dDpZLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGxLPUYoXCIkWm9kQ2hlY2tNaW5MZW5ndGhcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2Qud2hlbj0oSik9PntsZXQgWT1KLnZhbHVlO3JldHVybiFSMShZKSYmWS5sZW5ndGghPT12b2lkIDB9LCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2lmKFEubWluaW11bT5ZKUouX3pvZC5iYWcubWluaW11bT1RLm1pbmltdW19KSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9Si52YWx1ZTtpZihZLmxlbmd0aD49US5taW5pbXVtKXJldHVybjtsZXQgVz1MUShZKTtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46Vyxjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpRLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OlksaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksY0s9RihcIiRab2RDaGVja0xlbmd0aEVxdWFsc1wiLCgkLFEpPT57VCQuaW5pdCgkLFEpLCQuX3pvZC53aGVuPShKKT0+e2xldCBZPUoudmFsdWU7cmV0dXJuIVIxKFkpJiZZLmxlbmd0aCE9PXZvaWQgMH0sJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZztZLm1pbmltdW09US5sZW5ndGgsWS5tYXhpbXVtPVEubGVuZ3RoLFkubGVuZ3RoPVEubGVuZ3RofSksJC5fem9kLmNoZWNrPShKKT0+e2xldCBZPUoudmFsdWUsWD1ZLmxlbmd0aDtpZihYPT09US5sZW5ndGgpcmV0dXJuO2xldCBXPUxRKFkpLEc9WD5RLmxlbmd0aDtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46VywuLi5HP3tjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06US5sZW5ndGh9Ontjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpRLmxlbmd0aH0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksaTg9RihcIiRab2RDaGVja1N0cmluZ0Zvcm1hdFwiLCgkLFEpPT57dmFyIEosWTtpZihUJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKFgpPT57bGV0IFc9WC5fem9kLmJhZztpZihXLmZvcm1hdD1RLmZvcm1hdCxRLnBhdHRlcm4pVy5wYXR0ZXJucz8/KFcucGF0dGVybnM9bmV3IFNldCksVy5wYXR0ZXJucy5hZGQoUS5wYXR0ZXJuKX0pLFEucGF0dGVybikoSj0kLl96b2QpLmNoZWNrPz8oSi5jaGVjaz0oWCk9PntpZihRLnBhdHRlcm4ubGFzdEluZGV4PTAsUS5wYXR0ZXJuLnRlc3QoWC52YWx1ZSkpcmV0dXJuO1guaXNzdWVzLnB1c2goe29yaWdpbjpcInN0cmluZ1wiLGNvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpRLmZvcm1hdCxpbnB1dDpYLnZhbHVlLC4uLlEucGF0dGVybj97cGF0dGVybjpRLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9KTtlbHNlKFk9JC5fem9kKS5jaGVjaz8/KFkuY2hlY2s9KCk9Pnt9KX0pLHBLPUYoXCIkWm9kQ2hlY2tSZWdleFwiLCgkLFEpPT57aTguaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9PntpZihRLnBhdHRlcm4ubGFzdEluZGV4PTAsUS5wYXR0ZXJuLnRlc3QoSi52YWx1ZSkpcmV0dXJuO0ouaXNzdWVzLnB1c2goe29yaWdpbjpcInN0cmluZ1wiLGNvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcInJlZ2V4XCIsaW5wdXQ6Si52YWx1ZSxwYXR0ZXJuOlEucGF0dGVybi50b1N0cmluZygpLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGRLPUYoXCIkWm9kQ2hlY2tMb3dlckNhc2VcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1DSyksaTguaW5pdCgkLFEpfSksaUs9RihcIiRab2RDaGVja1VwcGVyQ2FzZVwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPVRLKSxpOC5pbml0KCQsUSl9KSxuSz1GKFwiJFpvZENoZWNrSW5jbHVkZXNcIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXQgSj10NChRLmluY2x1ZGVzKSxZPW5ldyBSZWdFeHAodHlwZW9mIFEucG9zaXRpb249PT1cIm51bWJlclwiP2BeLnske1EucG9zaXRpb259fSR7Sn1gOkopO1EucGF0dGVybj1ZLCQuX3pvZC5vbmF0dGFjaC5wdXNoKChYKT0+e2xldCBXPVguX3pvZC5iYWc7Vy5wYXR0ZXJucz8/KFcucGF0dGVybnM9bmV3IFNldCksVy5wYXR0ZXJucy5hZGQoWSl9KSwkLl96b2QuY2hlY2s9KFgpPT57aWYoWC52YWx1ZS5pbmNsdWRlcyhRLmluY2x1ZGVzLFEucG9zaXRpb24pKXJldHVybjtYLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJzdHJpbmdcIixjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJpbmNsdWRlc1wiLGluY2x1ZGVzOlEuaW5jbHVkZXMsaW5wdXQ6WC52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxySz1GKFwiJFpvZENoZWNrU3RhcnRzV2l0aFwiLCgkLFEpPT57VCQuaW5pdCgkLFEpO2xldCBKPW5ldyBSZWdFeHAoYF4ke3Q0KFEucHJlZml4KX0uKmApO1EucGF0dGVybj8/KFEucGF0dGVybj1KKSwkLl96b2Qub25hdHRhY2gucHVzaCgoWSk9PntsZXQgWD1ZLl96b2QuYmFnO1gucGF0dGVybnM/PyhYLnBhdHRlcm5zPW5ldyBTZXQpLFgucGF0dGVybnMuYWRkKEopfSksJC5fem9kLmNoZWNrPShZKT0+e2lmKFkudmFsdWUuc3RhcnRzV2l0aChRLnByZWZpeCkpcmV0dXJuO1kuaXNzdWVzLnB1c2goe29yaWdpbjpcInN0cmluZ1wiLGNvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcInN0YXJ0c193aXRoXCIscHJlZml4OlEucHJlZml4LGlucHV0OlkudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksb0s9RihcIiRab2RDaGVja0VuZHNXaXRoXCIsKCQsUSk9PntUJC5pbml0KCQsUSk7bGV0IEo9bmV3IFJlZ0V4cChgLioke3Q0KFEuc3VmZml4KX0kYCk7US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUopLCQuX3pvZC5vbmF0dGFjaC5wdXNoKChZKT0+e2xldCBYPVkuX3pvZC5iYWc7WC5wYXR0ZXJucz8/KFgucGF0dGVybnM9bmV3IFNldCksWC5wYXR0ZXJucy5hZGQoSil9KSwkLl96b2QuY2hlY2s9KFkpPT57aWYoWS52YWx1ZS5lbmRzV2l0aChRLnN1ZmZpeCkpcmV0dXJuO1kuaXNzdWVzLnB1c2goe29yaWdpbjpcInN0cmluZ1wiLGNvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcImVuZHNfd2l0aFwiLHN1ZmZpeDpRLnN1ZmZpeCxpbnB1dDpZLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pO2Z1bmN0aW9uIFdNKCQsUSxKKXtpZigkLmlzc3Vlcy5sZW5ndGgpUS5pc3N1ZXMucHVzaCguLi5qNihKLCQuaXNzdWVzKSl9dmFyIHRLPUYoXCIkWm9kQ2hlY2tQcm9wZXJ0eVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1RLnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6Si52YWx1ZVtRLnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihZIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWS50aGVuKChYKT0+V00oWCxKLFEucHJvcGVydHkpKTtXTShZLEosUS5wcm9wZXJ0eSk7cmV0dXJufX0pLGFLPUYoXCIkWm9kQ2hlY2tNaW1lVHlwZVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpO2xldCBKPW5ldyBTZXQoUS5taW1lKTskLl96b2Qub25hdHRhY2gucHVzaCgoWSk9PntZLl96b2QuYmFnLm1pbWU9US5taW1lfSksJC5fem9kLmNoZWNrPShZKT0+e2lmKEouaGFzKFkudmFsdWUudHlwZSkpcmV0dXJuO1kuaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3ZhbHVlXCIsdmFsdWVzOlEubWltZSxpbnB1dDpZLnZhbHVlLnR5cGUsaW5zdDokfSl9fSksc0s9RihcIiRab2RDaGVja092ZXJ3cml0ZVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9PntKLnZhbHVlPVEudHgoSi52YWx1ZSl9fSk7Y2xhc3MgWVl7Y29uc3RydWN0b3IoJD1bXSl7aWYodGhpcy5jb250ZW50PVtdLHRoaXMuaW5kZW50PTAsdGhpcyl0aGlzLmFyZ3M9JH1pbmRlbnRlZCgkKXt0aGlzLmluZGVudCs9MSwkKHRoaXMpLHRoaXMuaW5kZW50LT0xfXdyaXRlKCQpe2lmKHR5cGVvZiAkPT09XCJmdW5jdGlvblwiKXskKHRoaXMse2V4ZWN1dGlvbjpcInN5bmNcIn0pLCQodGhpcyx7ZXhlY3V0aW9uOlwiYXN5bmNcIn0pO3JldHVybn1sZXQgSj0kLnNwbGl0KGBcbmApLmZpbHRlcigoVyk9PlcpLFk9TWF0aC5taW4oLi4uSi5tYXAoKFcpPT5XLmxlbmd0aC1XLnRyaW1TdGFydCgpLmxlbmd0aCkpLFg9Si5tYXAoKFcpPT5XLnNsaWNlKFkpKS5tYXAoKFcpPT5cIiBcIi5yZXBlYXQodGhpcy5pbmRlbnQqMikrVyk7Zm9yKGxldCBXIG9mIFgpdGhpcy5jb250ZW50LnB1c2goVyl9Y29tcGlsZSgpe2xldCAkPUZ1bmN0aW9uLFE9dGhpcz8uYXJncyxZPVsuLi4odGhpcz8uY29udGVudD8/W1wiXCJdKS5tYXAoKFgpPT5gICAke1h9YCldO3JldHVybiBuZXcgJCguLi5RLFkuam9pbihgXG5gKSl9fXZhciBlSz17bWFqb3I6NCxtaW5vcjowLHBhdGNoOjB9O3ZhciBvPUYoXCIkWm9kVHlwZVwiLCgkLFEpPT57dmFyIEo7JD8/KCQ9e30pLCQuX3pvZC5kZWY9USwkLl96b2QuYmFnPSQuX3pvZC5iYWd8fHt9LCQuX3pvZC52ZXJzaW9uPWVLO2xldCBZPVsuLi4kLl96b2QuZGVmLmNoZWNrcz8/W11dO2lmKCQuX3pvZC50cmFpdHMuaGFzKFwiJFpvZENoZWNrXCIpKVkudW5zaGlmdCgkKTtmb3IobGV0IFggb2YgWSlmb3IobGV0IFcgb2YgWC5fem9kLm9uYXR0YWNoKVcoJCk7aWYoWS5sZW5ndGg9PT0wKShKPSQuX3pvZCkuZGVmZXJyZWQ/PyhKLmRlZmVycmVkPVtdKSwkLl96b2QuZGVmZXJyZWQ/LnB1c2goKCk9PnskLl96b2QucnVuPSQuX3pvZC5wYXJzZX0pO2Vsc2V7bGV0IFg9KFcsRyxVKT0+e2xldCBIPVIwKFcpLHE7Zm9yKGxldCBWIG9mIEcpe2lmKFYuX3pvZC53aGVuKXtpZighVi5fem9kLndoZW4oVykpY29udGludWV9ZWxzZSBpZihIKWNvbnRpbnVlO2xldCBCPVcuaXNzdWVzLmxlbmd0aCx6PVYuX3pvZC5jaGVjayhXKTtpZih6IGluc3RhbmNlb2YgUHJvbWlzZSYmVT8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgbzQ7aWYocXx8eiBpbnN0YW5jZW9mIFByb21pc2UpcT0ocT8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2lmKGF3YWl0IHosVy5pc3N1ZXMubGVuZ3RoPT09QilyZXR1cm47aWYoIUgpSD1SMChXLEIpfSk7ZWxzZXtpZihXLmlzc3Vlcy5sZW5ndGg9PT1CKWNvbnRpbnVlO2lmKCFIKUg9UjAoVyxCKX19aWYocSlyZXR1cm4gcS50aGVuKCgpPT57cmV0dXJuIFd9KTtyZXR1cm4gV307JC5fem9kLnJ1bj0oVyxHKT0+e2xldCBVPSQuX3pvZC5wYXJzZShXLEcpO2lmKFUgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihHLmFzeW5jPT09ITEpdGhyb3cgbmV3IG80O3JldHVybiBVLnRoZW4oKEgpPT5YKEgsWSxHKSl9cmV0dXJuIFgoVSxZLEcpfX0kW1wifnN0YW5kYXJkXCJdPXt2YWxpZGF0ZTooWCk9Pnt0cnl7bGV0IFc9UDEoJCxYKTtyZXR1cm4gVy5zdWNjZXNzP3t2YWx1ZTpXLmRhdGF9Ontpc3N1ZXM6Vy5lcnJvcj8uaXNzdWVzfX1jYXRjaChXKXtyZXR1cm4gRTEoJCxYKS50aGVuKChHKT0+Ry5zdWNjZXNzP3t2YWx1ZTpHLmRhdGF9Ontpc3N1ZXM6Ry5lcnJvcj8uaXNzdWVzfSl9fSx2ZW5kb3I6XCJ6b2RcIix2ZXJzaW9uOjF9fSksXzE9RihcIiRab2RTdHJpbmdcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXR0ZXJuPVsuLi4kPy5fem9kLmJhZz8ucGF0dGVybnM/P1tdXS5wb3AoKT8/UEsoJC5fem9kLmJhZyksJC5fem9kLnBhcnNlPShKLFkpPT57aWYoUS5jb2VyY2UpdHJ5e0oudmFsdWU9U3RyaW5nKEoudmFsdWUpfWNhdGNoKFgpe31pZih0eXBlb2YgSi52YWx1ZT09PVwic3RyaW5nXCIpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwic3RyaW5nXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OkoudmFsdWUsaW5zdDokfSksSn19KSxqJD1GKFwiJFpvZFN0cmluZ0Zvcm1hdFwiLCgkLFEpPT57aTguaW5pdCgkLFEpLF8xLmluaXQoJCxRKX0pLFVZPUYoXCIkWm9kR1VJRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPXpLKSxqJC5pbml0KCQsUSl9KSxIWT1GKFwiJFpvZFVVSURcIiwoJCxRKT0+e2lmKFEudmVyc2lvbil7bGV0IFk9e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bUS52ZXJzaW9uXTtpZihZPT09dm9pZCAwKXRocm93IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogXCIke1EudmVyc2lvbn1cImApO1EucGF0dGVybj8/KFEucGF0dGVybj1iMChZKSl9ZWxzZSBRLnBhdHRlcm4/PyhRLnBhdHRlcm49YjAoKSk7aiQuaW5pdCgkLFEpfSksS1k9RihcIiRab2RFbWFpbFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPU5LKSxqJC5pbml0KCQsUSl9KSxxWT1GKFwiJFpvZFVSTFwiLCgkLFEpPT57aiQuaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9Pnt0cnl7bGV0IFk9Si52YWx1ZSxYPW5ldyBVUkwoWSksVz1YLmhyZWY7aWYoUS5ob3N0bmFtZSl7aWYoUS5ob3N0bmFtZS5sYXN0SW5kZXg9MCwhUS5ob3N0bmFtZS50ZXN0KFguaG9zdG5hbWUpKUouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcInVybFwiLG5vdGU6XCJJbnZhbGlkIGhvc3RuYW1lXCIscGF0dGVybjpMSy5zb3VyY2UsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX1pZihRLnByb3RvY29sKXtpZihRLnByb3RvY29sLmxhc3RJbmRleD0wLCFRLnByb3RvY29sLnRlc3QoWC5wcm90b2NvbC5lbmRzV2l0aChcIjpcIik/WC5wcm90b2NvbC5zbGljZSgwLC0xKTpYLnByb3RvY29sKSlKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJ1cmxcIixub3RlOlwiSW52YWxpZCBwcm90b2NvbFwiLHBhdHRlcm46US5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX1pZighWS5lbmRzV2l0aChcIi9cIikmJlcuZW5kc1dpdGgoXCIvXCIpKUoudmFsdWU9Vy5zbGljZSgwLC0xKTtlbHNlIEoudmFsdWU9VztyZXR1cm59Y2F0Y2goWSl7Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwidXJsXCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19fSksVlk9RihcIiRab2RFbW9qaVwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPXdLKCkpLGokLmluaXQoJCxRKX0pLEJZPUYoXCIkWm9kTmFub0lEXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49VkspLGokLmluaXQoJCxRKX0pLHpZPUYoXCIkWm9kQ1VJRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUdLKSxqJC5pbml0KCQsUSl9KSxOWT1GKFwiJFpvZENVSUQyXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49VUspLGokLmluaXQoJCxRKX0pLHdZPUYoXCIkWm9kVUxJRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUhLKSxqJC5pbml0KCQsUSl9KSxPWT1GKFwiJFpvZFhJRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUtLKSxqJC5pbml0KCQsUSl9KSxEWT1GKFwiJFpvZEtTVUlEXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49cUspLGokLmluaXQoJCxRKX0pLFFxPUYoXCIkWm9kSVNPRGF0ZVRpbWVcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1SSyhRKSksaiQuaW5pdCgkLFEpfSksSnE9RihcIiRab2RJU09EYXRlXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49QUspLGokLmluaXQoJCxRKX0pLFhxPUYoXCIkWm9kSVNPVGltZVwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUlLKFEpKSxqJC5pbml0KCQsUSl9KSxZcT1GKFwiJFpvZElTT0R1cmF0aW9uXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49QkspLGokLmluaXQoJCxRKX0pLEZZPUYoXCIkWm9kSVB2NFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPU9LKSxqJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZztZLmZvcm1hdD1cImlwdjRcIn0pfSksWlk9RihcIiRab2RJUHY2XCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49REspLGokLmluaXQoJCxRKSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntsZXQgWT1KLl96b2QuYmFnO1kuZm9ybWF0PVwiaXB2NlwifSksJC5fem9kLmNoZWNrPShKKT0+e3RyeXtuZXcgVVJMKGBodHRwOi8vWyR7Si52YWx1ZX1dYCl9Y2F0Y2h7Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwiaXB2NlwiLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fX0pLE1ZPUYoXCIkWm9kQ0lEUnY0XCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49RkspLGokLmluaXQoJCxRKX0pLExZPUYoXCIkWm9kQ0lEUnY2XCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49WkspLGokLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57bGV0W1ksWF09Si52YWx1ZS5zcGxpdChcIi9cIik7dHJ5e2lmKCFYKXRocm93IEVycm9yKCk7bGV0IFc9TnVtYmVyKFgpO2lmKGAke1d9YCE9PVgpdGhyb3cgRXJyb3IoKTtpZihXPDB8fFc+MTI4KXRocm93IEVycm9yKCk7bmV3IFVSTChgaHR0cDovL1ske1l9XWApfWNhdGNoe0ouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcImNpZHJ2NlwiLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fX0pO2Z1bmN0aW9uIFdxKCQpe2lmKCQ9PT1cIlwiKXJldHVybiEwO2lmKCQubGVuZ3RoJTQhPT0wKXJldHVybiExO3RyeXtyZXR1cm4gYXRvYigkKSwhMH1jYXRjaHtyZXR1cm4hMX19dmFyIGpZPUYoXCIkWm9kQmFzZTY0XCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49TUspLGokLmluaXQoJCxRKSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntKLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz1cImJhc2U2NFwifSksJC5fem9kLmNoZWNrPShKKT0+e2lmKFdxKEoudmFsdWUpKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJiYXNlNjRcIixpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pO2Z1bmN0aW9uIFpNKCQpe2lmKCFRWS50ZXN0KCQpKXJldHVybiExO2xldCBRPSQucmVwbGFjZSgvWy1fXS9nLChZKT0+WT09PVwiLVwiP1wiK1wiOlwiL1wiKSxKPVEucGFkRW5kKE1hdGguY2VpbChRLmxlbmd0aC80KSo0LFwiPVwiKTtyZXR1cm4gV3EoSil9dmFyIEFZPUYoXCIkWm9kQmFzZTY0VVJMXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49UVkpLGokLmluaXQoJCxRKSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntKLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz1cImJhc2U2NHVybFwifSksJC5fem9kLmNoZWNrPShKKT0+e2lmKFpNKEoudmFsdWUpKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJiYXNlNjR1cmxcIixpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLElZPUYoXCIkWm9kRTE2NFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPWpLKSxqJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBNTSgkLFE9bnVsbCl7dHJ5e2xldCBKPSQuc3BsaXQoXCIuXCIpO2lmKEoubGVuZ3RoIT09MylyZXR1cm4hMTtsZXRbWV09SjtpZighWSlyZXR1cm4hMTtsZXQgWD1KU09OLnBhcnNlKGF0b2IoWSkpO2lmKFwidHlwXCJpbiBYJiZYPy50eXAhPT1cIkpXVFwiKXJldHVybiExO2lmKCFYLmFsZylyZXR1cm4hMTtpZihRJiYoIShcImFsZ1wiaW4gWCl8fFguYWxnIT09USkpcmV0dXJuITE7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fXZhciBSWT1GKFwiJFpvZEpXVFwiLCgkLFEpPT57aiQuaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9PntpZihNTShKLnZhbHVlLFEuYWxnKSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0Olwiand0XCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxQWT1GKFwiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCgkLFEpPT57aiQuaW5pdCgkLFEpLCQuX3pvZC5jaGVjaz0oSik9PntpZihRLmZuKEoudmFsdWUpKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6US5mb3JtYXQsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxBUT1GKFwiJFpvZE51bWJlclwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhdHRlcm49JC5fem9kLmJhZy5wYXR0ZXJuPz9fSywkLl96b2QucGFyc2U9KEosWSk9PntpZihRLmNvZXJjZSl0cnl7Si52YWx1ZT1OdW1iZXIoSi52YWx1ZSl9Y2F0Y2goRyl7fWxldCBYPUoudmFsdWU7aWYodHlwZW9mIFg9PT1cIm51bWJlclwiJiYhTnVtYmVyLmlzTmFOKFgpJiZOdW1iZXIuaXNGaW5pdGUoWCkpcmV0dXJuIEo7bGV0IFc9dHlwZW9mIFg9PT1cIm51bWJlclwiP051bWJlci5pc05hTihYKT9cIk5hTlwiOiFOdW1iZXIuaXNGaW5pdGUoWCk/XCJJbmZpbml0eVwiOnZvaWQgMDp2b2lkIDA7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwibnVtYmVyXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokLC4uLlc/e3JlY2VpdmVkOld9Ont9fSksSn19KSxFWT1GKFwiJFpvZE51bWJlclwiLCgkLFEpPT57ZksuaW5pdCgkLFEpLEFRLmluaXQoJCxRKX0pLG44PUYoXCIkWm9kQm9vbGVhblwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhdHRlcm49U0ssJC5fem9kLnBhcnNlPShKLFkpPT57aWYoUS5jb2VyY2UpdHJ5e0oudmFsdWU9Qm9vbGVhbihKLnZhbHVlKX1jYXRjaChXKXt9bGV0IFg9Si52YWx1ZTtpZih0eXBlb2YgWD09PVwiYm9vbGVhblwiKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcImJvb2xlYW5cIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKfX0pLElRPUYoXCIkWm9kQmlnSW50XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGF0dGVybj1FSywkLl96b2QucGFyc2U9KEosWSk9PntpZihRLmNvZXJjZSl0cnl7Si52YWx1ZT1CaWdJbnQoSi52YWx1ZSl9Y2F0Y2goWCl7fWlmKHR5cGVvZiBKLnZhbHVlPT09XCJiaWdpbnRcIilyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJiaWdpbnRcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiR9KSxKfX0pLGJZPUYoXCIkWm9kQmlnSW50XCIsKCQsUSk9Pnt5Sy5pbml0KCQsUSksSVEuaW5pdCgkLFEpfSksX1k9RihcIiRab2RTeW1ib2xcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYodHlwZW9mIFg9PT1cInN5bWJvbFwiKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcInN5bWJvbFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JH0pLEp9fSksU1k9RihcIiRab2RVbmRlZmluZWRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXR0ZXJuPXZLLCQuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksJC5fem9kLm9wdGluPVwib3B0aW9uYWxcIiwkLl96b2Qub3B0b3V0PVwib3B0aW9uYWxcIiwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKHR5cGVvZiBYPlwidVwiKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcInVuZGVmaW5lZFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JH0pLEp9fSksa1k9RihcIiRab2ROdWxsXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGF0dGVybj1rSywkLl96b2QudmFsdWVzPW5ldyBTZXQoW251bGxdKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKFg9PT1udWxsKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcIm51bGxcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKfX0pLHZZPUYoXCIkWm9kQW55XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEopPT5KfSksXzA9RihcIiRab2RVbmtub3duXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEopPT5KfSksQ1k9RihcIiRab2ROZXZlclwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwibmV2ZXJcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiR9KSxKfX0pLFRZPUYoXCIkWm9kVm9pZFwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9Si52YWx1ZTtpZih0eXBlb2YgWD5cInVcIilyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJ2b2lkXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSn19KSx4WT1GKFwiJFpvZERhdGVcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2lmKFEuY29lcmNlKXRyeXtKLnZhbHVlPW5ldyBEYXRlKEoudmFsdWUpfWNhdGNoKFUpe31sZXQgWD1KLnZhbHVlLFc9WCBpbnN0YW5jZW9mIERhdGU7aWYoVyYmIU51bWJlci5pc05hTihYLmdldFRpbWUoKSkpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwiZGF0ZVwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLC4uLlc/e3JlY2VpdmVkOlwiSW52YWxpZCBEYXRlXCJ9Ont9LGluc3Q6JH0pLEp9fSk7ZnVuY3Rpb24gSE0oJCxRLEope2lmKCQuaXNzdWVzLmxlbmd0aClRLmlzc3Vlcy5wdXNoKC4uLmo2KEosJC5pc3N1ZXMpKTtRLnZhbHVlW0pdPSQudmFsdWV9dmFyIHI4PUYoXCIkWm9kQXJyYXlcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoWCkpcmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwiYXJyYXlcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKO0oudmFsdWU9QXJyYXkoWC5sZW5ndGgpO2xldCBXPVtdO2ZvcihsZXQgRz0wO0c8WC5sZW5ndGg7RysrKXtsZXQgVT1YW0ddLEg9US5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTpVLGlzc3VlczpbXX0sWSk7aWYoSCBpbnN0YW5jZW9mIFByb21pc2UpVy5wdXNoKEgudGhlbigocSk9PkhNKHEsSixHKSkpO2Vsc2UgSE0oSCxKLEcpfWlmKFcubGVuZ3RoKXJldHVybiBQcm9taXNlLmFsbChXKS50aGVuKCgpPT5KKTtyZXR1cm4gSn19KTtmdW5jdGlvbiBXWSgkLFEsSil7aWYoJC5pc3N1ZXMubGVuZ3RoKVEuaXNzdWVzLnB1c2goLi4uajYoSiwkLmlzc3VlcykpO1EudmFsdWVbSl09JC52YWx1ZX1mdW5jdGlvbiBLTSgkLFEsSixZKXtpZigkLmlzc3Vlcy5sZW5ndGgpaWYoWVtKXT09PXZvaWQgMClpZihKIGluIFkpUS52YWx1ZVtKXT12b2lkIDA7ZWxzZSBRLnZhbHVlW0pdPSQudmFsdWU7ZWxzZSBRLmlzc3Vlcy5wdXNoKC4uLmo2KEosJC5pc3N1ZXMpKTtlbHNlIGlmKCQudmFsdWU9PT12b2lkIDApe2lmKEogaW4gWSlRLnZhbHVlW0pdPXZvaWQgMH1lbHNlIFEudmFsdWVbSl09JC52YWx1ZX12YXIgUlE9RihcIiRab2RPYmplY3RcIiwoJCxRKT0+e28uaW5pdCgkLFEpO2xldCBKPURRKCgpPT57bGV0IEI9T2JqZWN0LmtleXMoUS5zaGFwZSk7Zm9yKGxldCBOIG9mIEIpaWYoIShRLnNoYXBlW05daW5zdGFuY2VvZiBvKSl0aHJvdyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSBcIiR7Tn1cIjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7bGV0IHo9SksoUS5zaGFwZSk7cmV0dXJue3NoYXBlOlEuc2hhcGUsa2V5czpCLGtleVNldDpuZXcgU2V0KEIpLG51bUtleXM6Qi5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQoeil9fSk7TiQoJC5fem9kLFwicHJvcFZhbHVlc1wiLCgpPT57bGV0IEI9US5zaGFwZSx6PXt9O2ZvcihsZXQgTiBpbiBCKXtsZXQgdz1CW05dLl96b2Q7aWYody52YWx1ZXMpe3pbTl0/Pyh6W05dPW5ldyBTZXQpO2ZvcihsZXQgTyBvZiB3LnZhbHVlcyl6W05dLmFkZChPKX19cmV0dXJuIHp9KTtsZXQgWT0oQik9PntsZXQgej1uZXcgWVkoW1wic2hhcGVcIixcInBheWxvYWRcIixcImN0eFwiXSksTj1KLnZhbHVlLHc9KGopPT57bGV0IEE9STAoaik7cmV0dXJuYHNoYXBlWyR7QX1dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7QX1dLCBpc3N1ZXM6IFtdIH0sIGN0eClgfTt6LndyaXRlKFwiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1wiKTtsZXQgTz1PYmplY3QuY3JlYXRlKG51bGwpLEQ9MDtmb3IobGV0IGogb2YgTi5rZXlzKU9bal09YGtleV8ke0QrK31gO3oud3JpdGUoXCJjb25zdCBuZXdSZXN1bHQgPSB7fVwiKTtmb3IobGV0IGogb2YgTi5rZXlzKWlmKE4ub3B0aW9uYWxLZXlzLmhhcyhqKSl7bGV0IEE9T1tqXTt6LndyaXRlKGBjb25zdCAke0F9ID0gJHt3KGopfTtgKTtsZXQgaz1JMChqKTt6LndyaXRlKGBcbiAgICAgICAgaWYgKCR7QX0uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChpbnB1dFske2t9XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoJHtrfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgICBuZXdSZXN1bHRbJHtrfV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KFxuICAgICAgICAgICAgICAke0F9Lmlzc3Vlcy5tYXAoKGlzcykgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtrfSwgLi4uaXNzLnBhdGhdIDogWyR7a31dLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCR7QX0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSBuZXdSZXN1bHRbJHtrfV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3UmVzdWx0WyR7a31dID0gJHtBfS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBgKX1lbHNle2xldCBBPU9bal07ei53cml0ZShgY29uc3QgJHtBfSA9ICR7dyhqKX07YCksei53cml0ZShgXG4gICAgICAgICAgaWYgKCR7QX0uaXNzdWVzLmxlbmd0aCkgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtBfS5pc3N1ZXMubWFwKGlzcyA9PiAoe1xuICAgICAgICAgICAgLi4uaXNzLFxuICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtJMChqKX0sIC4uLmlzcy5wYXRoXSA6IFske0kwKGopfV1cbiAgICAgICAgICB9KSkpO2ApLHoud3JpdGUoYG5ld1Jlc3VsdFske0kwKGopfV0gPSAke0F9LnZhbHVlYCl9ei53cml0ZShcInBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7XCIpLHoud3JpdGUoXCJyZXR1cm4gcGF5bG9hZDtcIik7bGV0IE09ei5jb21waWxlKCk7cmV0dXJuKGosQSk9Pk0oQixqLEEpfSxYLFc9bTgsRz0hTlEuaml0bGVzcyxIPUcmJiRLLnZhbHVlLHE9US5jYXRjaGFsbCxWOyQuX3pvZC5wYXJzZT0oQix6KT0+e1Y/PyhWPUoudmFsdWUpO2xldCBOPUIudmFsdWU7aWYoIVcoTikpcmV0dXJuIEIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwib2JqZWN0XCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0Ok4saW5zdDokfSksQjtsZXQgdz1bXTtpZihHJiZIJiZ6Py5hc3luYz09PSExJiZ6LmppdGxlc3MhPT0hMCl7aWYoIVgpWD1ZKFEuc2hhcGUpO0I9WChCLHopfWVsc2V7Qi52YWx1ZT17fTtsZXQgQT1WLnNoYXBlO2ZvcihsZXQgayBvZiBWLmtleXMpe2xldCB1PUFba10sRyQ9dS5fem9kLnJ1bih7dmFsdWU6TltrXSxpc3N1ZXM6W119LHopLGgkPXUuX3pvZC5vcHRpbj09PVwib3B0aW9uYWxcIiYmdS5fem9kLm9wdG91dD09PVwib3B0aW9uYWxcIjtpZihHJCBpbnN0YW5jZW9mIFByb21pc2Updy5wdXNoKEckLnRoZW4oKHMkKT0+aCQ/S00ocyQsQixrLE4pOldZKHMkLEIsaykpKTtlbHNlIGlmKGgkKUtNKEckLEIsayxOKTtlbHNlIFdZKEckLEIsayl9fWlmKCFxKXJldHVybiB3Lmxlbmd0aD9Qcm9taXNlLmFsbCh3KS50aGVuKCgpPT5CKTpCO2xldCBPPVtdLEQ9Vi5rZXlTZXQsTT1xLl96b2Qsaj1NLmRlZi50eXBlO2ZvcihsZXQgQSBvZiBPYmplY3Qua2V5cyhOKSl7aWYoRC5oYXMoQSkpY29udGludWU7aWYoaj09PVwibmV2ZXJcIil7Ty5wdXNoKEEpO2NvbnRpbnVlfWxldCBrPU0ucnVuKHt2YWx1ZTpOW0FdLGlzc3VlczpbXX0seik7aWYoayBpbnN0YW5jZW9mIFByb21pc2Updy5wdXNoKGsudGhlbigodSk9PldZKHUsQixBKSkpO2Vsc2UgV1koayxCLEEpfWlmKE8ubGVuZ3RoKUIuaXNzdWVzLnB1c2goe2NvZGU6XCJ1bnJlY29nbml6ZWRfa2V5c1wiLGtleXM6TyxpbnB1dDpOLGluc3Q6JH0pO2lmKCF3Lmxlbmd0aClyZXR1cm4gQjtyZXR1cm4gUHJvbWlzZS5hbGwodykudGhlbigoKT0+e3JldHVybiBCfSl9fSk7ZnVuY3Rpb24gcU0oJCxRLEosWSl7Zm9yKGxldCBYIG9mICQpaWYoWC5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gUS52YWx1ZT1YLnZhbHVlLFE7cmV0dXJuIFEuaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3VuaW9uXCIsaW5wdXQ6US52YWx1ZSxpbnN0OkosZXJyb3JzOiQubWFwKChYKT0+WC5pc3N1ZXMubWFwKChXKT0+eTYoVyxZLGMkKCkpKSl9KSxRfXZhciBQUT1GKFwiJFpvZFVuaW9uXCIsKCQsUSk9PntvLmluaXQoJCxRKSxOJCgkLl96b2QsXCJvcHRpblwiLCgpPT5RLm9wdGlvbnMuc29tZSgoSik9PkouX3pvZC5vcHRpbj09PVwib3B0aW9uYWxcIik/XCJvcHRpb25hbFwiOnZvaWQgMCksTiQoJC5fem9kLFwib3B0b3V0XCIsKCk9PlEub3B0aW9ucy5zb21lKChKKT0+Si5fem9kLm9wdG91dD09PVwib3B0aW9uYWxcIik/XCJvcHRpb25hbFwiOnZvaWQgMCksTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PntpZihRLm9wdGlvbnMuZXZlcnkoKEopPT5KLl96b2QudmFsdWVzKSlyZXR1cm4gbmV3IFNldChRLm9wdGlvbnMuZmxhdE1hcCgoSik9PkFycmF5LmZyb20oSi5fem9kLnZhbHVlcykpKTtyZXR1cm59KSxOJCgkLl96b2QsXCJwYXR0ZXJuXCIsKCk9PntpZihRLm9wdGlvbnMuZXZlcnkoKEopPT5KLl96b2QucGF0dGVybikpe2xldCBKPVEub3B0aW9ucy5tYXAoKFkpPT5ZLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtKLm1hcCgoWSk9PkZRKFkuc291cmNlKSkuam9pbihcInxcIil9KSRgKX1yZXR1cm59KSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD0hMSxXPVtdO2ZvcihsZXQgRyBvZiBRLm9wdGlvbnMpe2xldCBVPUcuX3pvZC5ydW4oe3ZhbHVlOkoudmFsdWUsaXNzdWVzOltdfSxZKTtpZihVIGluc3RhbmNlb2YgUHJvbWlzZSlXLnB1c2goVSksWD0hMDtlbHNle2lmKFUuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIFU7Vy5wdXNoKFUpfX1pZighWClyZXR1cm4gcU0oVyxKLCQsWSk7cmV0dXJuIFByb21pc2UuYWxsKFcpLnRoZW4oKEcpPT57cmV0dXJuIHFNKEcsSiwkLFkpfSl9fSksZlk9RihcIiRab2REaXNjcmltaW5hdGVkVW5pb25cIiwoJCxRKT0+e1BRLmluaXQoJCxRKTtsZXQgSj0kLl96b2QucGFyc2U7TiQoJC5fem9kLFwicHJvcFZhbHVlc1wiLCgpPT57bGV0IFg9e307Zm9yKGxldCBXIG9mIFEub3B0aW9ucyl7bGV0IEc9Vy5fem9kLnByb3BWYWx1ZXM7aWYoIUd8fE9iamVjdC5rZXlzKEcpLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggXCIke1Eub3B0aW9ucy5pbmRleE9mKFcpfVwiYCk7Zm9yKGxldFtVLEhdb2YgT2JqZWN0LmVudHJpZXMoRykpe2lmKCFYW1VdKVhbVV09bmV3IFNldDtmb3IobGV0IHEgb2YgSClYW1VdLmFkZChxKX19cmV0dXJuIFh9KTtsZXQgWT1EUSgoKT0+e2xldCBYPVEub3B0aW9ucyxXPW5ldyBNYXA7Zm9yKGxldCBHIG9mIFgpe2xldCBVPUcuX3pvZC5wcm9wVmFsdWVzW1EuZGlzY3JpbWluYXRvcl07aWYoIVV8fFUuc2l6ZT09PTApdGhyb3cgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggXCIke1Eub3B0aW9ucy5pbmRleE9mKEcpfVwiYCk7Zm9yKGxldCBIIG9mIFUpe2lmKFcuaGFzKEgpKXRocm93IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSBcIiR7U3RyaW5nKEgpfVwiYCk7Vy5zZXQoSCxHKX19cmV0dXJuIFd9KTskLl96b2QucGFyc2U9KFgsVyk9PntsZXQgRz1YLnZhbHVlO2lmKCFtOChHKSlyZXR1cm4gWC5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfdHlwZVwiLGV4cGVjdGVkOlwib2JqZWN0XCIsaW5wdXQ6RyxpbnN0OiR9KSxYO2xldCBVPVkudmFsdWUuZ2V0KEc/LltRLmRpc2NyaW1pbmF0b3JdKTtpZihVKXJldHVybiBVLl96b2QucnVuKFgsVyk7aWYoUS51bmlvbkZhbGxiYWNrKXJldHVybiBKKFgsVyk7cmV0dXJuIFguaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3VuaW9uXCIsZXJyb3JzOltdLG5vdGU6XCJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yXCIsaW5wdXQ6RyxwYXRoOltRLmRpc2NyaW1pbmF0b3JdLGluc3Q6JH0pLFh9fSkseVk9RihcIiRab2RJbnRlcnNlY3Rpb25cIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWUsVz1RLmxlZnQuX3pvZC5ydW4oe3ZhbHVlOlgsaXNzdWVzOltdfSxZKSxHPVEucmlnaHQuX3pvZC5ydW4oe3ZhbHVlOlgsaXNzdWVzOltdfSxZKTtpZihXIGluc3RhbmNlb2YgUHJvbWlzZXx8RyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFByb21pc2UuYWxsKFtXLEddKS50aGVuKChbSCxxXSk9PntyZXR1cm4gVk0oSixILHEpfSk7cmV0dXJuIFZNKEosVyxHKX19KTtmdW5jdGlvbiAkcSgkLFEpe2lmKCQ9PT1RKXJldHVybnt2YWxpZDohMCxkYXRhOiR9O2lmKCQgaW5zdGFuY2VvZiBEYXRlJiZRIGluc3RhbmNlb2YgRGF0ZSYmKyQ9PT0rUSlyZXR1cm57dmFsaWQ6ITAsZGF0YTokfTtpZihsOCgkKSYmbDgoUSkpe2xldCBKPU9iamVjdC5rZXlzKFEpLFk9T2JqZWN0LmtleXMoJCkuZmlsdGVyKChXKT0+Si5pbmRleE9mKFcpIT09LTEpLFg9ey4uLiQsLi4uUX07Zm9yKGxldCBXIG9mIFkpe2xldCBHPSRxKCRbV10sUVtXXSk7aWYoIUcudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltXLC4uLkcubWVyZ2VFcnJvclBhdGhdfTtYW1ddPUcuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpYfX1pZihBcnJheS5pc0FycmF5KCQpJiZBcnJheS5pc0FycmF5KFEpKXtpZigkLmxlbmd0aCE9PVEubGVuZ3RoKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX07bGV0IEo9W107Zm9yKGxldCBZPTA7WTwkLmxlbmd0aDtZKyspe2xldCBYPSRbWV0sVz1RW1ldLEc9JHEoWCxXKTtpZighRy52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W1ksLi4uRy5tZXJnZUVycm9yUGF0aF19O0oucHVzaChHLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOkp9fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gVk0oJCxRLEope2lmKFEuaXNzdWVzLmxlbmd0aCkkLmlzc3Vlcy5wdXNoKC4uLlEuaXNzdWVzKTtpZihKLmlzc3Vlcy5sZW5ndGgpJC5pc3N1ZXMucHVzaCguLi5KLmlzc3Vlcyk7aWYoUjAoJCkpcmV0dXJuICQ7bGV0IFk9JHEoUS52YWx1ZSxKLnZhbHVlKTtpZighWS52YWxpZCl0aHJvdyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoWS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuICQudmFsdWU9WS5kYXRhLCR9dmFyIFMxPUYoXCIkWm9kVHVwbGVcIiwoJCxRKT0+e28uaW5pdCgkLFEpO2xldCBKPVEuaXRlbXMsWT1KLmxlbmd0aC1bLi4uSl0ucmV2ZXJzZSgpLmZpbmRJbmRleCgoWCk9PlguX3pvZC5vcHRpbiE9PVwib3B0aW9uYWxcIik7JC5fem9kLnBhcnNlPShYLFcpPT57bGV0IEc9WC52YWx1ZTtpZighQXJyYXkuaXNBcnJheShHKSlyZXR1cm4gWC5pc3N1ZXMucHVzaCh7aW5wdXQ6RyxpbnN0OiQsZXhwZWN0ZWQ6XCJ0dXBsZVwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIn0pLFg7WC52YWx1ZT1bXTtsZXQgVT1bXTtpZighUS5yZXN0KXtsZXQgcT1HLmxlbmd0aD5KLmxlbmd0aCxWPUcubGVuZ3RoPFktMTtpZihxfHxWKXJldHVybiBYLmlzc3Vlcy5wdXNoKHtpbnB1dDpHLGluc3Q6JCxvcmlnaW46XCJhcnJheVwiLC4uLnE/e2NvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpKLmxlbmd0aH06e2NvZGU6XCJ0b29fc21hbGxcIixtaW5pbXVtOkoubGVuZ3RofX0pLFh9bGV0IEg9LTE7Zm9yKGxldCBxIG9mIEope2lmKEgrKyxIPj1HLmxlbmd0aCl7aWYoSD49WSljb250aW51ZX1sZXQgVj1xLl96b2QucnVuKHt2YWx1ZTpHW0hdLGlzc3VlczpbXX0sVyk7aWYoViBpbnN0YW5jZW9mIFByb21pc2UpVS5wdXNoKFYudGhlbigoQik9PkdZKEIsWCxIKSkpO2Vsc2UgR1koVixYLEgpfWlmKFEucmVzdCl7bGV0IHE9Ry5zbGljZShKLmxlbmd0aCk7Zm9yKGxldCBWIG9mIHEpe0grKztsZXQgQj1RLnJlc3QuX3pvZC5ydW4oe3ZhbHVlOlYsaXNzdWVzOltdfSxXKTtpZihCIGluc3RhbmNlb2YgUHJvbWlzZSlVLnB1c2goQi50aGVuKCh6KT0+R1koeixYLEgpKSk7ZWxzZSBHWShCLFgsSCl9fWlmKFUubGVuZ3RoKXJldHVybiBQcm9taXNlLmFsbChVKS50aGVuKCgpPT5YKTtyZXR1cm4gWH19KTtmdW5jdGlvbiBHWSgkLFEsSil7aWYoJC5pc3N1ZXMubGVuZ3RoKVEuaXNzdWVzLnB1c2goLi4uajYoSiwkLmlzc3VlcykpO1EudmFsdWVbSl09JC52YWx1ZX12YXIgZ1k9RihcIiRab2RSZWNvcmRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoIWw4KFgpKXJldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcInJlY29yZFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JH0pLEo7bGV0IFc9W107aWYoUS5rZXlUeXBlLl96b2QudmFsdWVzKXtsZXQgRz1RLmtleVR5cGUuX3pvZC52YWx1ZXM7Si52YWx1ZT17fTtmb3IobGV0IEggb2YgRylpZih0eXBlb2YgSD09PVwic3RyaW5nXCJ8fHR5cGVvZiBIPT09XCJudW1iZXJcInx8dHlwZW9mIEg9PT1cInN5bWJvbFwiKXtsZXQgcT1RLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6WFtIXSxpc3N1ZXM6W119LFkpO2lmKHEgaW5zdGFuY2VvZiBQcm9taXNlKVcucHVzaChxLnRoZW4oKFYpPT57aWYoVi5pc3N1ZXMubGVuZ3RoKUouaXNzdWVzLnB1c2goLi4uajYoSCxWLmlzc3VlcykpO0oudmFsdWVbSF09Vi52YWx1ZX0pKTtlbHNle2lmKHEuaXNzdWVzLmxlbmd0aClKLmlzc3Vlcy5wdXNoKC4uLmo2KEgscS5pc3N1ZXMpKTtKLnZhbHVlW0hdPXEudmFsdWV9fWxldCBVO2ZvcihsZXQgSCBpbiBYKWlmKCFHLmhhcyhIKSlVPVU/P1tdLFUucHVzaChIKTtpZihVJiZVLmxlbmd0aD4wKUouaXNzdWVzLnB1c2goe2NvZGU6XCJ1bnJlY29nbml6ZWRfa2V5c1wiLGlucHV0OlgsaW5zdDokLGtleXM6VX0pfWVsc2V7Si52YWx1ZT17fTtmb3IobGV0IEcgb2YgUmVmbGVjdC5vd25LZXlzKFgpKXtpZihHPT09XCJfX3Byb3RvX19cIiljb250aW51ZTtsZXQgVT1RLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOkcsaXNzdWVzOltdfSxZKTtpZihVIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBFcnJvcihcIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHlcIik7aWYoVS5pc3N1ZXMubGVuZ3RoKXtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJyZWNvcmRcIixjb2RlOlwiaW52YWxpZF9rZXlcIixpc3N1ZXM6VS5pc3N1ZXMubWFwKChxKT0+eTYocSxZLGMkKCkpKSxpbnB1dDpHLHBhdGg6W0ddLGluc3Q6JH0pLEoudmFsdWVbVS52YWx1ZV09VS52YWx1ZTtjb250aW51ZX1sZXQgSD1RLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6WFtHXSxpc3N1ZXM6W119LFkpO2lmKEggaW5zdGFuY2VvZiBQcm9taXNlKVcucHVzaChILnRoZW4oKHEpPT57aWYocS5pc3N1ZXMubGVuZ3RoKUouaXNzdWVzLnB1c2goLi4uajYoRyxxLmlzc3VlcykpO0oudmFsdWVbVS52YWx1ZV09cS52YWx1ZX0pKTtlbHNle2lmKEguaXNzdWVzLmxlbmd0aClKLmlzc3Vlcy5wdXNoKC4uLmo2KEcsSC5pc3N1ZXMpKTtKLnZhbHVlW1UudmFsdWVdPUgudmFsdWV9fX1pZihXLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwoVykudGhlbigoKT0+Sik7cmV0dXJuIEp9fSksaFk9RihcIiRab2RNYXBcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoIShYIGluc3RhbmNlb2YgTWFwKSlyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJtYXBcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKO2xldCBXPVtdO0oudmFsdWU9bmV3IE1hcDtmb3IobGV0W0csVV1vZiBYKXtsZXQgSD1RLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOkcsaXNzdWVzOltdfSxZKSxxPVEudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpVLGlzc3VlczpbXX0sWSk7aWYoSCBpbnN0YW5jZW9mIFByb21pc2V8fHEgaW5zdGFuY2VvZiBQcm9taXNlKVcucHVzaChQcm9taXNlLmFsbChbSCxxXSkudGhlbigoW1YsQl0pPT57Qk0oVixCLEosRyxYLCQsWSl9KSk7ZWxzZSBCTShILHEsSixHLFgsJCxZKX1pZihXLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwoVykudGhlbigoKT0+Sik7cmV0dXJuIEp9fSk7ZnVuY3Rpb24gQk0oJCxRLEosWSxYLFcsRyl7aWYoJC5pc3N1ZXMubGVuZ3RoKWlmKFpRLmhhcyh0eXBlb2YgWSkpSi5pc3N1ZXMucHVzaCguLi5qNihZLCQuaXNzdWVzKSk7ZWxzZSBKLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJtYXBcIixjb2RlOlwiaW52YWxpZF9rZXlcIixpbnB1dDpYLGluc3Q6Vyxpc3N1ZXM6JC5pc3N1ZXMubWFwKChVKT0+eTYoVSxHLGMkKCkpKX0pO2lmKFEuaXNzdWVzLmxlbmd0aClpZihaUS5oYXModHlwZW9mIFkpKUouaXNzdWVzLnB1c2goLi4uajYoWSxRLmlzc3VlcykpO2Vsc2UgSi5pc3N1ZXMucHVzaCh7b3JpZ2luOlwibWFwXCIsY29kZTpcImludmFsaWRfZWxlbWVudFwiLGlucHV0OlgsaW5zdDpXLGtleTpZLGlzc3VlczpRLmlzc3Vlcy5tYXAoKFUpPT55NihVLEcsYyQoKSkpfSk7Si52YWx1ZS5zZXQoJC52YWx1ZSxRLnZhbHVlKX12YXIgdVk9RihcIiRab2RTZXRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoIShYIGluc3RhbmNlb2YgU2V0KSlyZXR1cm4gSi5pc3N1ZXMucHVzaCh7aW5wdXQ6WCxpbnN0OiQsZXhwZWN0ZWQ6XCJzZXRcIixjb2RlOlwiaW52YWxpZF90eXBlXCJ9KSxKO2xldCBXPVtdO0oudmFsdWU9bmV3IFNldDtmb3IobGV0IEcgb2YgWCl7bGV0IFU9US52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOkcsaXNzdWVzOltdfSxZKTtpZihVIGluc3RhbmNlb2YgUHJvbWlzZSlXLnB1c2goVS50aGVuKChIKT0+ek0oSCxKKSkpO2Vsc2Ugek0oVSxKKX1pZihXLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwoVykudGhlbigoKT0+Sik7cmV0dXJuIEp9fSk7ZnVuY3Rpb24gek0oJCxRKXtpZigkLmlzc3Vlcy5sZW5ndGgpUS5pc3N1ZXMucHVzaCguLi4kLmlzc3Vlcyk7US52YWx1ZS5hZGQoJC52YWx1ZSl9dmFyIG1ZPUYoXCIkWm9kRW51bVwiLCgkLFEpPT57by5pbml0KCQsUSk7bGV0IEo9T1EoUS5lbnRyaWVzKTskLl96b2QudmFsdWVzPW5ldyBTZXQoSiksJC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke0ouZmlsdGVyKChZKT0+WlEuaGFzKHR5cGVvZiBZKSkubWFwKChZKT0+dHlwZW9mIFk9PT1cInN0cmluZ1wiP3Q0KFkpOlkudG9TdHJpbmcoKSkuam9pbihcInxcIil9KSRgKSwkLl96b2QucGFyc2U9KFksWCk9PntsZXQgVz1ZLnZhbHVlO2lmKCQuX3pvZC52YWx1ZXMuaGFzKFcpKXJldHVybiBZO3JldHVybiBZLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF92YWx1ZVwiLHZhbHVlczpKLGlucHV0OlcsaW5zdDokfSksWX19KSxsWT1GKFwiJFpvZExpdGVyYWxcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC52YWx1ZXM9bmV3IFNldChRLnZhbHVlcyksJC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke1EudmFsdWVzLm1hcCgoSik9PnR5cGVvZiBKPT09XCJzdHJpbmdcIj90NChKKTpKP0oudG9TdHJpbmcoKTpTdHJpbmcoSikpLmpvaW4oXCJ8XCIpfSkkYCksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9Si52YWx1ZTtpZigkLl96b2QudmFsdWVzLmhhcyhYKSlyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfdmFsdWVcIix2YWx1ZXM6US52YWx1ZXMsaW5wdXQ6WCxpbnN0OiR9KSxKfX0pLGNZPUYoXCIkWm9kRmlsZVwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9Si52YWx1ZTtpZihYIGluc3RhbmNlb2YgRmlsZSlyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJmaWxlXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSn19KSxvOD1GKFwiJFpvZFRyYW5zZm9ybVwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9US50cmFuc2Zvcm0oSi52YWx1ZSxKKTtpZihZLmFzeW5jKXJldHVybihYIGluc3RhbmNlb2YgUHJvbWlzZT9YOlByb21pc2UucmVzb2x2ZShYKSkudGhlbigoRyk9PntyZXR1cm4gSi52YWx1ZT1HLEp9KTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgbzQ7cmV0dXJuIEoudmFsdWU9WCxKfX0pLHBZPUYoXCIkWm9kT3B0aW9uYWxcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5vcHRpbj1cIm9wdGlvbmFsXCIsJC5fem9kLm9wdG91dD1cIm9wdGlvbmFsXCIsTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PntyZXR1cm4gUS5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4uUS5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwfSksTiQoJC5fem9kLFwicGF0dGVyblwiLCgpPT57bGV0IEo9US5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiBKP25ldyBSZWdFeHAoYF4oJHtGUShKLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksJC5fem9kLnBhcnNlPShKLFkpPT57aWYoUS5pbm5lclR5cGUuX3pvZC5vcHRpbj09PVwib3B0aW9uYWxcIilyZXR1cm4gUS5pbm5lclR5cGUuX3pvZC5ydW4oSixZKTtpZihKLnZhbHVlPT09dm9pZCAwKXJldHVybiBKO3JldHVybiBRLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpfX0pLGRZPUYoXCIkWm9kTnVsbGFibGVcIiwoJCxRKT0+e28uaW5pdCgkLFEpLE4kKCQuX3pvZCxcIm9wdGluXCIsKCk9PlEuaW5uZXJUeXBlLl96b2Qub3B0aW4pLE4kKCQuX3pvZCxcIm9wdG91dFwiLCgpPT5RLmlubmVyVHlwZS5fem9kLm9wdG91dCksTiQoJC5fem9kLFwicGF0dGVyblwiLCgpPT57bGV0IEo9US5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiBKP25ldyBSZWdFeHAoYF4oJHtGUShKLnNvdXJjZSl9fG51bGwpJGApOnZvaWQgMH0pLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT57cmV0dXJuIFEuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLlEuaW5uZXJUeXBlLl96b2QudmFsdWVzLG51bGxdKTp2b2lkIDB9KSwkLl96b2QucGFyc2U9KEosWSk9PntpZihKLnZhbHVlPT09bnVsbClyZXR1cm4gSjtyZXR1cm4gUS5pbm5lclR5cGUuX3pvZC5ydW4oSixZKX19KSxpWT1GKFwiJFpvZERlZmF1bHRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5vcHRpbj1cIm9wdGlvbmFsXCIsTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PlEuaW5uZXJUeXBlLl96b2QudmFsdWVzKSwkLl96b2QucGFyc2U9KEosWSk9PntpZihKLnZhbHVlPT09dm9pZCAwKXJldHVybiBKLnZhbHVlPVEuZGVmYXVsdFZhbHVlLEo7bGV0IFg9US5pbm5lclR5cGUuX3pvZC5ydW4oSixZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+Tk0oVyxRKSk7cmV0dXJuIE5NKFgsUSl9fSk7ZnVuY3Rpb24gTk0oJCxRKXtpZigkLnZhbHVlPT09dm9pZCAwKSQudmFsdWU9US5kZWZhdWx0VmFsdWU7cmV0dXJuICR9dmFyIG5ZPUYoXCIkWm9kUHJlZmF1bHRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5vcHRpbj1cIm9wdGlvbmFsXCIsTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PlEuaW5uZXJUeXBlLl96b2QudmFsdWVzKSwkLl96b2QucGFyc2U9KEosWSk9PntpZihKLnZhbHVlPT09dm9pZCAwKUoudmFsdWU9US5kZWZhdWx0VmFsdWU7cmV0dXJuIFEuaW5uZXJUeXBlLl96b2QucnVuKEosWSl9fSksclk9RihcIiRab2ROb25PcHRpb25hbFwiLCgkLFEpPT57by5pbml0KCQsUSksTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PntsZXQgSj1RLmlubmVyVHlwZS5fem9kLnZhbHVlcztyZXR1cm4gSj9uZXcgU2V0KFsuLi5KXS5maWx0ZXIoKFkpPT5ZIT09dm9pZCAwKSk6dm9pZCAwfSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9US5pbm5lclR5cGUuX3pvZC5ydW4oSixZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+d00oVywkKSk7cmV0dXJuIHdNKFgsJCl9fSk7ZnVuY3Rpb24gd00oJCxRKXtpZighJC5pc3N1ZXMubGVuZ3RoJiYkLnZhbHVlPT09dm9pZCAwKSQuaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3R5cGVcIixleHBlY3RlZDpcIm5vbm9wdGlvbmFsXCIsaW5wdXQ6JC52YWx1ZSxpbnN0OlF9KTtyZXR1cm4gJH12YXIgb1k9RihcIiRab2RTdWNjZXNzXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1RLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpO2lmKFggaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBYLnRoZW4oKFcpPT57cmV0dXJuIEoudmFsdWU9Vy5pc3N1ZXMubGVuZ3RoPT09MCxKfSk7cmV0dXJuIEoudmFsdWU9WC5pc3N1ZXMubGVuZ3RoPT09MCxKfX0pLHRZPUYoXCIkWm9kQ2F0Y2hcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5vcHRpbj1cIm9wdGlvbmFsXCIsTiQoJC5fem9kLFwib3B0b3V0XCIsKCk9PlEuaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxOJCgkLl96b2QsXCJ2YWx1ZXNcIiwoKT0+US5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPVEuaW5uZXJUeXBlLl96b2QucnVuKEosWSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9PntpZihKLnZhbHVlPVcudmFsdWUsVy5pc3N1ZXMubGVuZ3RoKUoudmFsdWU9US5jYXRjaFZhbHVlKHsuLi5KLGVycm9yOntpc3N1ZXM6Vy5pc3N1ZXMubWFwKChHKT0+eTYoRyxZLGMkKCkpKX0saW5wdXQ6Si52YWx1ZX0pLEouaXNzdWVzPVtdO3JldHVybiBKfSk7aWYoSi52YWx1ZT1YLnZhbHVlLFguaXNzdWVzLmxlbmd0aClKLnZhbHVlPVEuY2F0Y2hWYWx1ZSh7Li4uSixlcnJvcjp7aXNzdWVzOlguaXNzdWVzLm1hcCgoVyk9Pnk2KFcsWSxjJCgpKSl9LGlucHV0OkoudmFsdWV9KSxKLmlzc3Vlcz1bXTtyZXR1cm4gSn19KSxhWT1GKFwiJFpvZE5hTlwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57aWYodHlwZW9mIEoudmFsdWUhPT1cIm51bWJlclwifHwhTnVtYmVyLmlzTmFOKEoudmFsdWUpKXJldHVybiBKLmlzc3Vlcy5wdXNoKHtpbnB1dDpKLnZhbHVlLGluc3Q6JCxleHBlY3RlZDpcIm5hblwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIn0pLEo7cmV0dXJuIEp9fSksdDg9RihcIiRab2RQaXBlXCIsKCQsUSk9PntvLmluaXQoJCxRKSxOJCgkLl96b2QsXCJ2YWx1ZXNcIiwoKT0+US5pbi5fem9kLnZhbHVlcyksTiQoJC5fem9kLFwib3B0aW5cIiwoKT0+US5pbi5fem9kLm9wdGluKSxOJCgkLl96b2QsXCJvcHRvdXRcIiwoKT0+US5vdXQuX3pvZC5vcHRvdXQpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPVEuaW4uX3pvZC5ydW4oSixZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+T00oVyxRLFkpKTtyZXR1cm4gT00oWCxRLFkpfX0pO2Z1bmN0aW9uIE9NKCQsUSxKKXtpZihSMCgkKSlyZXR1cm4gJDtyZXR1cm4gUS5vdXQuX3pvZC5ydW4oe3ZhbHVlOiQudmFsdWUsaXNzdWVzOiQuaXNzdWVzfSxKKX12YXIgc1k9RihcIiRab2RSZWFkb25seVwiLCgkLFEpPT57by5pbml0KCQsUSksTiQoJC5fem9kLFwicHJvcFZhbHVlc1wiLCgpPT5RLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT5RLmlubmVyVHlwZS5fem9kLnZhbHVlcyksTiQoJC5fem9kLFwib3B0aW5cIiwoKT0+US5pbm5lclR5cGUuX3pvZC5vcHRpbiksTiQoJC5fem9kLFwib3B0b3V0XCIsKCk9PlEuaW5uZXJUeXBlLl96b2Qub3B0b3V0KSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1RLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpO2lmKFggaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBYLnRoZW4oRE0pO3JldHVybiBETShYKX19KTtmdW5jdGlvbiBETSgkKXtyZXR1cm4gJC52YWx1ZT1PYmplY3QuZnJlZXplKCQudmFsdWUpLCR9dmFyIGVZPUYoXCIkWm9kVGVtcGxhdGVMaXRlcmFsXCIsKCQsUSk9PntvLmluaXQoJCxRKTtsZXQgSj1bXTtmb3IobGV0IFkgb2YgUS5wYXJ0cylpZihZIGluc3RhbmNlb2Ygbyl7aWYoIVkuX3pvZC5wYXR0ZXJuKXRocm93IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uWS5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtsZXQgWD1ZLl96b2QucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cD9ZLl96b2QucGF0dGVybi5zb3VyY2U6WS5fem9kLnBhdHRlcm47aWYoIVgpdGhyb3cgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke1kuX3pvZC50cmFpdHN9YCk7bGV0IFc9WC5zdGFydHNXaXRoKFwiXlwiKT8xOjAsRz1YLmVuZHNXaXRoKFwiJFwiKT9YLmxlbmd0aC0xOlgubGVuZ3RoO0oucHVzaChYLnNsaWNlKFcsRykpfWVsc2UgaWYoWT09PW51bGx8fFFLLmhhcyh0eXBlb2YgWSkpSi5wdXNoKHQ0KGAke1l9YCkpO2Vsc2UgdGhyb3cgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke1l9YCk7JC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7Si5qb2luKFwiXCIpfSRgKSwkLl96b2QucGFyc2U9KFksWCk9PntpZih0eXBlb2YgWS52YWx1ZSE9PVwic3RyaW5nXCIpcmV0dXJuIFkuaXNzdWVzLnB1c2goe2lucHV0OlkudmFsdWUsaW5zdDokLGV4cGVjdGVkOlwidGVtcGxhdGVfbGl0ZXJhbFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIn0pLFk7aWYoJC5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsISQuX3pvZC5wYXR0ZXJuLnRlc3QoWS52YWx1ZSkpcmV0dXJuIFkuaXNzdWVzLnB1c2goe2lucHV0OlkudmFsdWUsaW5zdDokLGNvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcInRlbXBsYXRlX2xpdGVyYWxcIixwYXR0ZXJuOiQuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLFk7cmV0dXJuIFl9fSksJDM9RihcIiRab2RQcm9taXNlXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEoudmFsdWUpLnRoZW4oKFgpPT5RLmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6WCxpc3N1ZXM6W119LFkpKX19KSxRMz1GKFwiJFpvZExhenlcIiwoJCxRKT0+e28uaW5pdCgkLFEpLE4kKCQuX3pvZCxcImlubmVyVHlwZVwiLCgpPT5RLmdldHRlcigpKSxOJCgkLl96b2QsXCJwYXR0ZXJuXCIsKCk9PiQuX3pvZC5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxOJCgkLl96b2QsXCJwcm9wVmFsdWVzXCIsKCk9PiQuX3pvZC5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxOJCgkLl96b2QsXCJvcHRpblwiLCgpPT4kLl96b2QuaW5uZXJUeXBlLl96b2Qub3B0aW4pLE4kKCQuX3pvZCxcIm9wdG91dFwiLCgpPT4kLl96b2QuaW5uZXJUeXBlLl96b2Qub3B0b3V0KSwkLl96b2QucGFyc2U9KEosWSk9PntyZXR1cm4gJC5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpfX0pLEozPUYoXCIkWm9kQ3VzdG9tXCIsKCQsUSk9PntUJC5pbml0KCQsUSksby5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57cmV0dXJuIEp9LCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1KLnZhbHVlLFg9US5mbihZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+Rk0oVyxKLFksJCkpO0ZNKFgsSixZLCQpO3JldHVybn19KTtmdW5jdGlvbiBGTSgkLFEsSixZKXtpZighJCl7bGV0IFg9e2NvZGU6XCJjdXN0b21cIixpbnB1dDpKLGluc3Q6WSxwYXRoOlsuLi5ZLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohWS5fem9kLmRlZi5hYm9ydH07aWYoWS5fem9kLmRlZi5wYXJhbXMpWC5wYXJhbXM9WS5fem9kLmRlZi5wYXJhbXM7US5pc3N1ZXMucHVzaChXSyhYKSl9fXZhciBhOD17fTtqNChhOCx7emhUVzooKT0+Y3EsemhDTjooKT0+bHEsdmk6KCk9Pm1xLHVyOigpPT51cSx1YTooKT0+aHEsdHI6KCk9PmdxLHRoOigpPT55cSx0YTooKT0+ZnEsc3Y6KCk9PnhxLHNsOigpPT5UcSxydTooKT0+Q3EscHQ6KCk9PnZxLHBzOigpPT5TcSxwbDooKT0+a3Esb3RhOigpPT5fcSxubzooKT0+YnEsbmw6KCk9PkVxLG1zOigpPT5QcSxtazooKT0+UnEsa286KCk9PklxLGtoOigpPT5BcSxqYTooKT0+anEsaXQ6KCk9PkxxLGlkOigpPT5NcSxodTooKT0+WnEsaGU6KCk9PkZxLGZyQ0E6KCk9PkRxLGZyOigpPT5PcSxmaTooKT0+d3EsZmE6KCk9Pk5xLGVzOigpPT56cSxlbzooKT0+QnEsZW46KCk9PkVRLGRlOigpPT5WcSxjczooKT0+cXEsY2E6KCk9PktxLGJlOigpPT5IcSxhejooKT0+VXEsYXI6KCk9PkdxfSk7dmFyIEh1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MDYyRFx1MDYzMVx1MDY0MVwiLHZlcmI6XCJcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjJEXHUwNjQ4XHUwNjRBXCJ9LGZpbGU6e3VuaXQ6XCJcdTA2MjhcdTA2MjdcdTA2NEFcdTA2MkFcIix2ZXJiOlwiXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDYyRFx1MDY0OFx1MDY0QVwifSxhcnJheTp7dW5pdDpcIlx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMVwiLHZlcmI6XCJcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjJEXHUwNjQ4XHUwNjRBXCJ9LHNldDp7dW5pdDpcIlx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMVwiLHZlcmI6XCJcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjJEXHUwNjQ4XHUwNjRBXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA2NDVcdTA2MkZcdTA2MkVcdTA2NDRcIixlbWFpbDpcIlx1MDYyOFx1MDYzMVx1MDY0QVx1MDYyRiBcdTA2MjVcdTA2NDRcdTA2NDNcdTA2MkFcdTA2MzFcdTA2NDhcdTA2NDZcdTA2NEFcIix1cmw6XCJcdTA2MzFcdTA2MjdcdTA2MjhcdTA2MzdcIixlbW9qaTpcIlx1MDYyNVx1MDY0QVx1MDY0NVx1MDY0OFx1MDYyQ1x1MDY0QVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIlx1MDYyQVx1MDYyN1x1MDYzMVx1MDY0QVx1MDYyRSBcdTA2NDhcdTA2NDhcdTA2NDJcdTA2MkEgXHUwNjI4XHUwNjQ1XHUwNjM5XHUwNjRBXHUwNjI3XHUwNjMxIElTT1wiLGRhdGU6XCJcdTA2MkFcdTA2MjdcdTA2MzFcdTA2NEFcdTA2MkUgXHUwNjI4XHUwNjQ1XHUwNjM5XHUwNjRBXHUwNjI3XHUwNjMxIElTT1wiLHRpbWU6XCJcdTA2NDhcdTA2NDJcdTA2MkEgXHUwNjI4XHUwNjQ1XHUwNjM5XHUwNjRBXHUwNjI3XHUwNjMxIElTT1wiLGR1cmF0aW9uOlwiXHUwNjQ1XHUwNjJGXHUwNjI5IFx1MDYyOFx1MDY0NVx1MDYzOVx1MDY0QVx1MDYyN1x1MDYzMSBJU09cIixpcHY0OlwiXHUwNjM5XHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ2IElQdjRcIixpcHY2OlwiXHUwNjM5XHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ2IElQdjZcIixjaWRydjQ6XCJcdTA2NDVcdTA2MkZcdTA2NDkgXHUwNjM5XHUwNjQ2XHUwNjI3XHUwNjQ4XHUwNjRBXHUwNjQ2IFx1MDYyOFx1MDYzNVx1MDY0QVx1MDYzQVx1MDYyOSBJUHY0XCIsY2lkcnY2OlwiXHUwNjQ1XHUwNjJGXHUwNjQ5IFx1MDYzOVx1MDY0Nlx1MDYyN1x1MDY0OFx1MDY0QVx1MDY0NiBcdTA2MjhcdTA2MzVcdTA2NEFcdTA2M0FcdTA2MjkgSVB2NlwiLGJhc2U2NDpcIlx1MDY0Nlx1MDY0RVx1MDYzNSBcdTA2MjhcdTA2MkFcdTA2MzFcdTA2NDVcdTA2NEFcdTA2MzIgYmFzZTY0LWVuY29kZWRcIixiYXNlNjR1cmw6XCJcdTA2NDZcdTA2NEVcdTA2MzUgXHUwNjI4XHUwNjJBXHUwNjMxXHUwNjQ1XHUwNjRBXHUwNjMyIGJhc2U2NHVybC1lbmNvZGVkXCIsanNvbl9zdHJpbmc6XCJcdTA2NDZcdTA2NEVcdTA2MzUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDY0N1x1MDY0QVx1MDYyNlx1MDYyOSBKU09OXCIsZTE2NDpcIlx1MDYzMVx1MDY0Mlx1MDY0NSBcdTA2NDdcdTA2MjdcdTA2MkFcdTA2NDEgXHUwNjI4XHUwNjQ1XHUwNjM5XHUwNjRBXHUwNjI3XHUwNjMxIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDY0NVx1MDYyRlx1MDYyRVx1MDY0NFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0XHUwNjI3XHUwNjJBIFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDRcdTA2Mjk6IFx1MDY0QVx1MDY0MVx1MDYyQVx1MDYzMVx1MDYzNiBcdTA2MjVcdTA2MkZcdTA2MkVcdTA2MjdcdTA2NDQgJHtYLmV4cGVjdGVkfVx1MDYwQyBcdTA2NDhcdTA2NDRcdTA2NDNcdTA2NDYgXHUwNjJBXHUwNjQ1IFx1MDYyNVx1MDYyRlx1MDYyRVx1MDYyN1x1MDY0NCAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0XHUwNjI3XHUwNjJBIFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDRcdTA2Mjk6IFx1MDY0QVx1MDY0MVx1MDYyQVx1MDYzMVx1MDYzNiBcdTA2MjVcdTA2MkZcdTA2MkVcdTA2MjdcdTA2NDQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA2MjdcdTA2MkVcdTA2MkFcdTA2NEFcdTA2MjdcdTA2MzEgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NDogXHUwNjRBXHUwNjJBXHUwNjQ4XHUwNjQyXHUwNjM5IFx1MDYyN1x1MDY0Nlx1MDYyQVx1MDY0Mlx1MDYyN1x1MDYyMSBcdTA2MjNcdTA2MkRcdTA2MkYgXHUwNjQ3XHUwNjMwXHUwNjQ3IFx1MDYyN1x1MDY0NFx1MDYyRVx1MDY0QVx1MDYyN1x1MDYzMVx1MDYyN1x1MDYyQTogJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gIFx1MDYyM1x1MDY0M1x1MDYyOFx1MDYzMSBcdTA2NDVcdTA2NDYgXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjI3XHUwNjMyXHUwNjQ1OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjIzXHUwNjQ2IFx1MDYyQVx1MDY0M1x1MDY0OFx1MDY0NiAke1gub3JpZ2luPz9cIlx1MDYyN1x1MDY0NFx1MDY0Mlx1MDY0QVx1MDY0NVx1MDYyOVwifSAke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMVwifWA7cmV0dXJuYFx1MDYyM1x1MDY0M1x1MDYyOFx1MDYzMSBcdTA2NDVcdTA2NDYgXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjI3XHUwNjMyXHUwNjQ1OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjIzXHUwNjQ2IFx1MDYyQVx1MDY0M1x1MDY0OFx1MDY0NiAke1gub3JpZ2luPz9cIlx1MDYyN1x1MDY0NFx1MDY0Mlx1MDY0QVx1MDY0NVx1MDYyOVwifSAke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNjIzXHUwNjM1XHUwNjNBXHUwNjMxIFx1MDY0NVx1MDY0NiBcdTA2MjdcdTA2NDRcdTA2NDRcdTA2MjdcdTA2MzJcdTA2NDU6IFx1MDY0QVx1MDY0MVx1MDYyQVx1MDYzMVx1MDYzNiBcdTA2NDRcdTA2NDAgJHtYLm9yaWdpbn0gXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDY0M1x1MDY0OFx1MDY0NiAke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1MDYyM1x1MDYzNVx1MDYzQVx1MDYzMSBcdTA2NDVcdTA2NDYgXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjI3XHUwNjMyXHUwNjQ1OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjQ0XHUwNjQwICR7WC5vcmlnaW59IFx1MDYyM1x1MDY0NiBcdTA2NEFcdTA2NDNcdTA2NDhcdTA2NDYgJHtXfSAke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQ1x1MDYyOCBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjI4XHUwNjJGXHUwNjIzIFx1MDYyOFx1MDY0MCBcIiR7WC5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQ1x1MDYyOCBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjQ2XHUwNjJBXHUwNjQ3XHUwNjRBIFx1MDYyOFx1MDY0MCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA2NDZcdTA2NEVcdTA2MzUgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NDogXHUwNjRBXHUwNjJDXHUwNjI4IFx1MDYyM1x1MDY0NiBcdTA2NEFcdTA2MkFcdTA2MzZcdTA2NDVcdTA2NTFcdTA2NEVcdTA2NDYgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTA2NDZcdTA2NEVcdTA2MzUgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NDogXHUwNjRBXHUwNjJDXHUwNjI4IFx1MDYyM1x1MDY0NiBcdTA2NEFcdTA2MzdcdTA2MjdcdTA2MjhcdTA2NDIgXHUwNjI3XHUwNjQ0XHUwNjQ2XHUwNjQ1XHUwNjM3ICR7Vy5wYXR0ZXJufWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUwNjMxXHUwNjQyXHUwNjQ1IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQ1x1MDYyOCBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjQzXHUwNjQ4XHUwNjQ2IFx1MDY0NVx1MDY0NiBcdTA2NDVcdTA2MzZcdTA2MjdcdTA2MzlcdTA2NDFcdTA2MjdcdTA2MkEgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTA2NDVcdTA2MzlcdTA2MzFcdTA2NDEke1gua2V5cy5sZW5ndGg+MT9cIlx1MDYyN1x1MDYyQVwiOlwiXCJ9IFx1MDYzQVx1MDYzMVx1MDY0QVx1MDYyOCR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNjI5XCI6XCJcIn06ICR7UChYLmtleXMsXCJcdTA2MEMgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHUwNjQ1XHUwNjM5XHUwNjMxXHUwNjQxIFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQgXHUwNjQxXHUwNjRBICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA2NDVcdTA2MkZcdTA2MkVcdTA2NDQgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTA2NDVcdTA2MkZcdTA2MkVcdTA2NDQgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NCBcdTA2NDFcdTA2NEEgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTA2NDVcdTA2MkZcdTA2MkVcdTA2NDQgXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NFwifX19O2Z1bmN0aW9uIEdxKCl7cmV0dXJue2xvY2FsZUVycm9yOkh1KCl9fXZhciBLdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJzaW12b2xcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxmaWxlOnt1bml0OlwiYmF5dFwiLHZlcmI6XCJvbG1hbFx1MDEzMWRcdTAxMzFyXCJ9LGFycmF5Ont1bml0OlwiZWxlbWVudFwiLHZlcmI6XCJvbG1hbFx1MDEzMWRcdTAxMzFyXCJ9LHNldDp7dW5pdDpcImVsZW1lbnRcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiaW5wdXRcIixlbWFpbDpcImVtYWlsIGFkZHJlc3NcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIGRhdGV0aW1lXCIsZGF0ZTpcIklTTyBkYXRlXCIsdGltZTpcIklTTyB0aW1lXCIsZHVyYXRpb246XCJJU08gZHVyYXRpb25cIixpcHY0OlwiSVB2NCBhZGRyZXNzXCIsaXB2NjpcIklQdjYgYWRkcmVzc1wiLGNpZHJ2NDpcIklQdjQgcmFuZ2VcIixjaWRydjY6XCJJUHY2IHJhbmdlXCIsYmFzZTY0OlwiYmFzZTY0LWVuY29kZWQgc3RyaW5nXCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nXCIsanNvbl9zdHJpbmc6XCJKU09OIHN0cmluZ1wiLGUxNjQ6XCJFLjE2NCBudW1iZXJcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW5wdXRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgZFx1MDI1OXlcdTAyNTlyOiBnXHUwMEY2emxcdTAyNTluaWxcdTAyNTluICR7WC5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgZFx1MDI1OXlcdTAyNTlyOiBnXHUwMEY2emxcdTAyNTluaWxcdTAyNTluICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiBzZVx1MDBFN2ltOiBhXHUwMTVGYVx1MDExRlx1MDEzMWRha1x1MDEzMWxhcmRhbiBiaXJpIG9sbWFsXHUwMTMxZFx1MDEzMXI6ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDBDN294IGJcdTAwRjZ5XHUwMEZDazogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke1gub3JpZ2luPz9cImRcdTAyNTl5XHUwMjU5clwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudFwifWA7cmV0dXJuYFx1MDBDN294IGJcdTAwRjZ5XHUwMEZDazogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke1gub3JpZ2luPz9cImRcdTAyNTl5XHUwMjU5clwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTAwQzdveCBraVx1MDBFN2lrOiBnXHUwMEY2emxcdTAyNTluaWxcdTAyNTluICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTAwQzdveCBraVx1MDBFN2lrOiBnXHUwMEY2emxcdTAyNTluaWxcdTAyNTluICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiBtXHUwMjU5dG46IFwiJHtXLnByZWZpeH1cIiBpbFx1MDI1OSBiYVx1MDE1RmxhbWFsXHUwMTMxZFx1MDEzMXJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiBtXHUwMjU5dG46IFwiJHtXLnN1ZmZpeH1cIiBpbFx1MDI1OSBiaXRtXHUwMjU5bGlkaXJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBZYW5sXHUwMTMxXHUwMTVGIG1cdTAyNTl0bjogXCIke1cuaW5jbHVkZXN9XCIgZGF4aWwgb2xtYWxcdTAxMzFkXHUwMTMxcmA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgbVx1MDI1OXRuOiAke1cucGF0dGVybn0gXHUwMTVGYWJsb251bmEgdXlcdTAxMUZ1biBvbG1hbFx1MDEzMWRcdTAxMzFyYDtyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBZYW5sXHUwMTMxXHUwMTVGIFx1MDI1OWRcdTAyNTlkOiAke1guZGl2aXNvcn0gaWxcdTAyNTkgYlx1MDBGNmxcdTAwRkNuXHUwMjU5IGJpbFx1MDI1OW4gb2xtYWxcdTAxMzFkXHUwMTMxcmA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gVGFuXHUwMTMxbm1heWFuIGFcdTAwRTdhciR7WC5rZXlzLmxlbmd0aD4xP1wibGFyXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IGRheGlsaW5kXHUwMjU5IHlhbmxcdTAxMzFcdTAxNUYgYVx1MDBFN2FyYDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJZYW5sXHUwMTMxXHUwMTVGIGRcdTAyNTl5XHUwMjU5clwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmAke1gub3JpZ2lufSBkYXhpbGluZFx1MDI1OSB5YW5sXHUwMTMxXHUwMTVGIGRcdTAyNTl5XHUwMjU5cmA7ZGVmYXVsdDpyZXR1cm5cIllhbmxcdTAxMzFcdTAxNUYgZFx1MDI1OXlcdTAyNTlyXCJ9fX07ZnVuY3Rpb24gVXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6S3UoKX19ZnVuY3Rpb24gak0oJCxRLEosWSl7bGV0IFg9TWF0aC5hYnMoJCksVz1YJTEwLEc9WCUxMDA7aWYoRz49MTEmJkc8PTE5KXJldHVybiBZO2lmKFc9PT0xKXJldHVybiBRO2lmKFc+PTImJlc8PTQpcmV0dXJuIEo7cmV0dXJuIFl9dmFyIHF1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDp7b25lOlwiXHUwNDQxXHUwNDU2XHUwNDNDXHUwNDMyXHUwNDMwXHUwNDNCXCIsZmV3OlwiXHUwNDQxXHUwNDU2XHUwNDNDXHUwNDMyXHUwNDMwXHUwNDNCXHUwNDRCXCIsbWFueTpcIlx1MDQ0MVx1MDQ1Nlx1MDQzQ1x1MDQzMlx1MDQzMFx1MDQzQlx1MDQzMFx1MDQ1RVwifSx2ZXJiOlwiXHUwNDNDXHUwNDM1XHUwNDQ2XHUwNDRDXCJ9LGFycmF5Ont1bml0OntvbmU6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcIixmZXc6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0NEJcIixtYW55OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDMwXHUwNDVFXCJ9LHZlcmI6XCJcdTA0M0NcdTA0MzVcdTA0NDZcdTA0NENcIn0sc2V0Ont1bml0OntvbmU6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcIixmZXc6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0NEJcIixtYW55OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDMwXHUwNDVFXCJ9LHZlcmI6XCJcdTA0M0NcdTA0MzVcdTA0NDZcdTA0NENcIn0sZmlsZTp7dW5pdDp7b25lOlwiXHUwNDMxXHUwNDMwXHUwNDM5XHUwNDQyXCIsZmV3OlwiXHUwNDMxXHUwNDMwXHUwNDM5XHUwNDQyXHUwNDRCXCIsbWFueTpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0Mlx1MDQzMFx1MDQ1RVwifSx2ZXJiOlwiXHUwNDNDXHUwNDM1XHUwNDQ2XHUwNDRDXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA0M0JcdTA0NTZcdTA0M0FcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDQzQ1x1MDQzMFx1MDQ0MVx1MDQ1Nlx1MDQ1RVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNDQzXHUwNDMyXHUwNDNFXHUwNDM0XCIsZW1haWw6XCJlbWFpbCBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzBcdTA0NDFcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1MDQ0RFx1MDQzQ1x1MDQzRVx1MDQzNFx1MDQzN1x1MDQ1NlwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzAgXHUwNDU2IFx1MDQ0N1x1MDQzMFx1MDQ0MVwiLGRhdGU6XCJJU08gXHUwNDM0XHUwNDMwXHUwNDQyXHUwNDMwXCIsdGltZTpcIklTTyBcdTA0NDdcdTA0MzBcdTA0NDFcIixkdXJhdGlvbjpcIklTTyBcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0NDZcdTA0NEZcdTA0MzNcdTA0M0JcdTA0MzBcdTA0NDFcdTA0NDZcdTA0NENcIixpcHY0OlwiSVB2NCBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzBcdTA0NDFcIixpcHY2OlwiSVB2NiBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzBcdTA0NDFcIixjaWRydjQ6XCJJUHY0IFx1MDQzNFx1MDQ0Qlx1MDQ0Rlx1MDQzRlx1MDQzMFx1MDQzN1x1MDQzRVx1MDQzRFwiLGNpZHJ2NjpcIklQdjYgXHUwNDM0XHUwNDRCXHUwNDRGXHUwNDNGXHUwNDMwXHUwNDM3XHUwNDNFXHUwNDNEXCIsYmFzZTY0OlwiXHUwNDQwXHUwNDMwXHUwNDM0XHUwNDNFXHUwNDNBIFx1MDQ0MyBcdTA0NDRcdTA0MzBcdTA0NDBcdTA0M0NcdTA0MzBcdTA0NDZcdTA0MzUgYmFzZTY0XCIsYmFzZTY0dXJsOlwiXHUwNDQwXHUwNDMwXHUwNDM0XHUwNDNFXHUwNDNBIFx1MDQ0MyBcdTA0NDRcdTA0MzBcdTA0NDBcdTA0M0NcdTA0MzBcdTA0NDZcdTA0MzUgYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJKU09OIFx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQzRVx1MDQzQVwiLGUxNjQ6XCJcdTA0M0RcdTA0NDNcdTA0M0NcdTA0MzBcdTA0NDAgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNDQzXHUwNDMyXHUwNDNFXHUwNDM0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDVFXHUwNDMyXHUwNDNFXHUwNDM0OiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0NUVcdTA0NDFcdTA0NEYgJHtYLmV4cGVjdGVkfSwgXHUwNDMwXHUwNDQyXHUwNDQwXHUwNDRCXHUwNDNDXHUwNDMwXHUwNDNEXHUwNDMwICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDVFXHUwNDMyXHUwNDNFXHUwNDM0OiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0M0JcdTA0MzBcdTA0NDFcdTA0NEYgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRCXHUwNDRGXHUwNDNEXHUwNDQyOiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0NUVcdTA0NDFcdTA0NEYgXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNEIFx1MDQzNyAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXtsZXQgVT1OdW1iZXIoWC5tYXhpbXVtKSxIPWpNKFUsRy51bml0Lm9uZSxHLnVuaXQuZmV3LEcudW5pdC5tYW55KTtyZXR1cm5gXHUwNDE3XHUwNDMwXHUwNDNEXHUwNDMwXHUwNDM0XHUwNDQyXHUwNDMwIFx1MDQzMlx1MDQ0Rlx1MDQzQlx1MDQ1Nlx1MDQzQVx1MDQ1NjogXHUwNDQ3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDNCXHUwNDMwXHUwNDQxXHUwNDRGLCBcdTA0NDhcdTA0NDJcdTA0M0UgJHtYLm9yaWdpbj8/XCJcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0NERcdTA0M0RcdTA0M0RcdTA0MzVcIn0gXHUwNDNGXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNEXHUwNDNEXHUwNDMwICR7Ry52ZXJifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtIfWB9cmV0dXJuYFx1MDQxN1x1MDQzMFx1MDQzRFx1MDQzMFx1MDQzNFx1MDQ0Mlx1MDQzMCBcdTA0MzJcdTA0NEZcdTA0M0JcdTA0NTZcdTA0M0FcdTA0NTY6IFx1MDQ0N1x1MDQzMFx1MDQzQVx1MDQzMFx1MDQzQlx1MDQzMFx1MDQ0MVx1MDQ0RiwgXHUwNDQ4XHUwNDQyXHUwNDNFICR7WC5vcmlnaW4/P1wiXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDREXHUwNDNEXHUwNDNEXHUwNDM1XCJ9IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzRFx1MDQzMCBcdTA0MzFcdTA0NEJcdTA0NDZcdTA0NEMgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRyl7bGV0IFU9TnVtYmVyKFgubWluaW11bSksSD1qTShVLEcudW5pdC5vbmUsRy51bml0LmZldyxHLnVuaXQubWFueSk7cmV0dXJuYFx1MDQxN1x1MDQzMFx1MDQzRFx1MDQzMFx1MDQzNFx1MDQ0Mlx1MDQzMCBcdTA0M0NcdTA0MzBcdTA0M0JcdTA0NEI6IFx1MDQ0N1x1MDQzMFx1MDQzQVx1MDQzMFx1MDQzQlx1MDQzMFx1MDQ0MVx1MDQ0RiwgXHUwNDQ4XHUwNDQyXHUwNDNFICR7WC5vcmlnaW59IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzRFx1MDQzMCAke0cudmVyYn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7SH1gfXJldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0MzAgXHUwNDNDXHUwNDMwXHUwNDNCXHUwNDRCOiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0M0JcdTA0MzBcdTA0NDFcdTA0NEYsIFx1MDQ0OFx1MDQ0Mlx1MDQzRSAke1gub3JpZ2lufSBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0M0RcdTA0MzAgXHUwNDMxXHUwNDRCXHUwNDQ2XHUwNDRDICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQzRVx1MDQzQTogXHUwNDNGXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzRlx1MDQzMFx1MDQ0N1x1MDQ0Qlx1MDQzRFx1MDQzMFx1MDQ0Nlx1MDQ0Nlx1MDQzMCBcdTA0MzcgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0NDBcdTA0MzBcdTA0MzRcdTA0M0VcdTA0M0E6IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0MzdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0M0RcdTA0NDdcdTA0MzJcdTA0MzBcdTA0NDZcdTA0NDZcdTA0MzAgXHUwNDNEXHUwNDMwIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0NDBcdTA0MzBcdTA0MzRcdTA0M0VcdTA0M0E6IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0MzdcdTA0M0NcdTA0NEZcdTA0NDhcdTA0NDdcdTA0MzBcdTA0NDZcdTA0NEMgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDQwXHUwNDMwXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDMwXHUwNDM0XHUwNDNGXHUwNDMwXHUwNDMyXHUwNDRGXHUwNDM0XHUwNDMwXHUwNDQ2XHUwNDRDIFx1MDQ0OFx1MDQzMFx1MDQzMVx1MDQzQlx1MDQzRVx1MDQzRFx1MDQ0MyAke1cucGF0dGVybn1gO3JldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQzQlx1MDQ1Nlx1MDQzQTogXHUwNDNGXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzMVx1MDQ0Qlx1MDQ0Nlx1MDQ0QyBcdTA0M0FcdTA0NDBcdTA0MzBcdTA0NDJcdTA0M0RcdTA0NEJcdTA0M0MgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0NDBcdTA0MzBcdTA0NDFcdTA0M0ZcdTA0MzBcdTA0MzdcdTA0M0RcdTA0MzBcdTA0M0RcdTA0NEIgJHtYLmtleXMubGVuZ3RoPjE/XCJcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDdcdTA0NEJcIjpcIlx1MDQzQVx1MDQzQlx1MDQ0RVx1MDQ0N1wifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQzQVx1MDQzQlx1MDQ0RVx1MDQ0NyBcdTA0NDMgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0NUVcdTA0MzJcdTA0M0VcdTA0MzRcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDMwXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQ0RFx1MDQzRFx1MDQzRFx1MDQzNSBcdTA0NUUgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDVFXHUwNDMyXHUwNDNFXHUwNDM0XCJ9fX07ZnVuY3Rpb24gSHEoKXtyZXR1cm57bG9jYWxlRXJyb3I6cXUoKX19dmFyIFZ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImNhclx1MDBFMGN0ZXJzXCIsdmVyYjpcImNvbnRlbmlyXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wiLHZlcmI6XCJjb250ZW5pclwifSxhcnJheTp7dW5pdDpcImVsZW1lbnRzXCIsdmVyYjpcImNvbnRlbmlyXCJ9LHNldDp7dW5pdDpcImVsZW1lbnRzXCIsdmVyYjpcImNvbnRlbmlyXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJlbnRyYWRhXCIsZW1haWw6XCJhZHJlXHUwMEU3YSBlbGVjdHJcdTAwRjJuaWNhXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdGEgaSBob3JhIElTT1wiLGRhdGU6XCJkYXRhIElTT1wiLHRpbWU6XCJob3JhIElTT1wiLGR1cmF0aW9uOlwiZHVyYWRhIElTT1wiLGlwdjQ6XCJhZHJlXHUwMEU3YSBJUHY0XCIsaXB2NjpcImFkcmVcdTAwRTdhIElQdjZcIixjaWRydjQ6XCJyYW5nIElQdjRcIixjaWRydjY6XCJyYW5nIElQdjZcIixiYXNlNjQ6XCJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcImNhZGVuYSBKU09OXCIsZTE2NDpcIm5cdTAwRkFtZXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVudHJhZGFcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFRpcHVzIGludlx1MDBFMGxpZDogcydlc3BlcmF2YSAke1guZXhwZWN0ZWR9LCBzJ2hhIHJlYnV0ICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBWYWxvciBpbnZcdTAwRTBsaWQ6IHMnZXNwZXJhdmEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPcGNpXHUwMEYzIGludlx1MDBFMGxpZGE6IHMnZXNwZXJhdmEgdW5hIGRlICR7UChYLnZhbHVlcyxcIiBvIFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJjb20gYSBtXHUwMEUweGltXCI6XCJtZW55cyBkZVwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtYLm9yaWdpbj8/XCJlbCB2YWxvclwifSBjb250aW5ndVx1MDBFOXMgJHtXfSAke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50c1wifWA7cmV0dXJuYE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7WC5vcmlnaW4/P1wiZWwgdmFsb3JcIn0gZm9zICR7V30gJHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cImNvbSBhIG1cdTAwRURuaW1cIjpcIm1cdTAwRTlzIGRlXCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtYLm9yaWdpbn0gY29udGluZ3VcdTAwRTlzICR7V30gJHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7WC5vcmlnaW59IGZvcyAke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBGb3JtYXQgaW52XHUwMEUwbGlkOiBoYSBkZSBjb21lblx1MDBFN2FyIGFtYiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gRm9ybWF0IGludlx1MDBFMGxpZDogaGEgZCdhY2FiYXIgYW1iIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYEZvcm1hdCBpbnZcdTAwRTBsaWQ6IGhhIGQnaW5jbG91cmUgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBGb3JtYXQgaW52XHUwMEUwbGlkOiBoYSBkZSBjb2luY2lkaXIgYW1iIGVsIHBhdHJcdTAwRjMgJHtXLnBhdHRlcm59YDtyZXR1cm5gRm9ybWF0IGludlx1MDBFMGxpZCBwZXIgYSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOXHUwMEZBbWVybyBpbnZcdTAwRTBsaWQ6IGhhIGRlIHNlciBtXHUwMEZBbHRpcGxlIGRlICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gQ2xhdSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IG5vIHJlY29uZWd1ZGEke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gQ2xhdSBpbnZcdTAwRTBsaWRhIGEgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIkVudHJhZGEgaW52XHUwMEUwbGlkYVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBFbGVtZW50IGludlx1MDBFMGxpZCBhICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiRW50cmFkYSBpbnZcdTAwRTBsaWRhXCJ9fX07ZnVuY3Rpb24gS3EoKXtyZXR1cm57bG9jYWxlRXJyb3I6VnUoKX19dmFyIEJ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcInpuYWtcdTAxNkZcIix2ZXJiOlwibVx1MDBFRHRcIn0sZmlsZTp7dW5pdDpcImJhanRcdTAxNkZcIix2ZXJiOlwibVx1MDBFRHRcIn0sYXJyYXk6e3VuaXQ6XCJwcnZrXHUwMTZGXCIsdmVyYjpcIm1cdTAwRUR0XCJ9LHNldDp7dW5pdDpcInBydmtcdTAxNkZcIix2ZXJiOlwibVx1MDBFRHRcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDEwRFx1MDBFRHNsb1wiO2Nhc2VcInN0cmluZ1wiOnJldHVyblwiXHUwMTU5ZXRcdTAxMUJ6ZWNcIjtjYXNlXCJib29sZWFuXCI6cmV0dXJuXCJib29sZWFuXCI7Y2FzZVwiYmlnaW50XCI6cmV0dXJuXCJiaWdpbnRcIjtjYXNlXCJmdW5jdGlvblwiOnJldHVyblwiZnVua2NlXCI7Y2FzZVwic3ltYm9sXCI6cmV0dXJuXCJzeW1ib2xcIjtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm5cInVuZGVmaW5lZFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwicG9sZVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwicmVndWxcdTAwRTFyblx1MDBFRCB2XHUwMEZEcmF6XCIsZW1haWw6XCJlLW1haWxvdlx1MDBFMSBhZHJlc2FcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiZGF0dW0gYSBcdTAxMERhcyB2ZSBmb3JtXHUwMEUxdHUgSVNPXCIsZGF0ZTpcImRhdHVtIHZlIGZvcm1cdTAwRTF0dSBJU09cIix0aW1lOlwiXHUwMTBEYXMgdmUgZm9ybVx1MDBFMXR1IElTT1wiLGR1cmF0aW9uOlwiZG9iYSB0cnZcdTAwRTFuXHUwMEVEIElTT1wiLGlwdjQ6XCJJUHY0IGFkcmVzYVwiLGlwdjY6XCJJUHY2IGFkcmVzYVwiLGNpZHJ2NDpcInJvenNhaCBJUHY0XCIsY2lkcnY2Olwicm96c2FoIElQdjZcIixiYXNlNjQ6XCJcdTAxNTlldFx1MDExQnplYyB6YWtcdTAwRjNkb3Zhblx1MDBGRCB2ZSBmb3JtXHUwMEUxdHUgYmFzZTY0XCIsYmFzZTY0dXJsOlwiXHUwMTU5ZXRcdTAxMUJ6ZWMgemFrXHUwMEYzZG92YW5cdTAwRkQgdmUgZm9ybVx1MDBFMXR1IGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiXHUwMTU5ZXRcdTAxMUJ6ZWMgdmUgZm9ybVx1MDBFMXR1IEpTT05cIixlMTY0OlwiXHUwMTBEXHUwMEVEc2xvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcInZzdHVwXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBOZXBsYXRuXHUwMEZEIHZzdHVwOiBvXHUwMTBEZWtcdTAwRTF2XHUwMEUxbm8gJHtYLmV4cGVjdGVkfSwgb2Jkclx1MDE3RWVubyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gTmVwbGF0blx1MDBGRCB2c3R1cDogb1x1MDEwRGVrXHUwMEUxdlx1MDBFMW5vICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gTmVwbGF0blx1MDBFMSBtb1x1MDE3RW5vc3Q6IG9cdTAxMERla1x1MDBFMXZcdTAwRTFuYSBqZWRuYSB6IGhvZG5vdCAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBIb2Rub3RhIGplIHBcdTAxNTlcdTAwRURsaVx1MDE2MSB2ZWxrXHUwMEUxOiAke1gub3JpZ2luPz9cImhvZG5vdGFcIn0gbXVzXHUwMEVEIG1cdTAwRUR0ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJwcnZrXHUwMTZGXCJ9YDtyZXR1cm5gSG9kbm90YSBqZSBwXHUwMTU5XHUwMEVEbGlcdTAxNjEgdmVsa1x1MDBFMTogJHtYLm9yaWdpbj8/XCJob2Rub3RhXCJ9IG11c1x1MDBFRCBiXHUwMEZEdCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBIb2Rub3RhIGplIHBcdTAxNTlcdTAwRURsaVx1MDE2MSBtYWxcdTAwRTE6ICR7WC5vcmlnaW4/P1wiaG9kbm90YVwifSBtdXNcdTAwRUQgbVx1MDBFRHQgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cInBydmtcdTAxNkZcIn1gO3JldHVybmBIb2Rub3RhIGplIHBcdTAxNTlcdTAwRURsaVx1MDE2MSBtYWxcdTAwRTE6ICR7WC5vcmlnaW4/P1wiaG9kbm90YVwifSBtdXNcdTAwRUQgYlx1MDBGRHQgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBOZXBsYXRuXHUwMEZEIFx1MDE1OWV0XHUwMTFCemVjOiBtdXNcdTAwRUQgemFcdTAxMERcdTAwRURuYXQgbmEgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYE5lcGxhdG5cdTAwRkQgXHUwMTU5ZXRcdTAxMUJ6ZWM6IG11c1x1MDBFRCBrb25cdTAxMERpdCBuYSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBOZXBsYXRuXHUwMEZEIFx1MDE1OWV0XHUwMTFCemVjOiBtdXNcdTAwRUQgb2JzYWhvdmF0IFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gTmVwbGF0blx1MDBGRCBcdTAxNTlldFx1MDExQnplYzogbXVzXHUwMEVEIG9kcG92XHUwMEVEZGF0IHZ6b3J1ICR7Vy5wYXR0ZXJufWA7cmV0dXJuYE5lcGxhdG5cdTAwRkQgZm9ybVx1MDBFMXQgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTmVwbGF0blx1MDBFOSBcdTAxMERcdTAwRURzbG86IG11c1x1MDBFRCBiXHUwMEZEdCBuXHUwMEUxc29ia2VtICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gTmV6blx1MDBFMW1cdTAwRTkga2xcdTAwRURcdTAxMERlOiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBOZXBsYXRuXHUwMEZEIGtsXHUwMEVEXHUwMTBEIHYgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIk5lcGxhdG5cdTAwRkQgdnN0dXBcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gTmVwbGF0blx1MDBFMSBob2Rub3RhIHYgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJOZXBsYXRuXHUwMEZEIHZzdHVwXCJ9fX07ZnVuY3Rpb24gcXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6QnUoKX19dmFyIHp1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlplaWNoZW5cIix2ZXJiOlwienUgaGFiZW5cIn0sZmlsZTp7dW5pdDpcIkJ5dGVzXCIsdmVyYjpcInp1IGhhYmVuXCJ9LGFycmF5Ont1bml0OlwiRWxlbWVudGVcIix2ZXJiOlwienUgaGFiZW5cIn0sc2V0Ont1bml0OlwiRWxlbWVudGVcIix2ZXJiOlwienUgaGFiZW5cIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlphaGxcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIkFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJFaW5nYWJlXCIsZW1haWw6XCJFLU1haWwtQWRyZXNzZVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiRW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0XCIsZGF0ZTpcIklTTy1EYXR1bVwiLHRpbWU6XCJJU08tVWhyemVpdFwiLGR1cmF0aW9uOlwiSVNPLURhdWVyXCIsaXB2NDpcIklQdjQtQWRyZXNzZVwiLGlwdjY6XCJJUHY2LUFkcmVzc2VcIixjaWRydjQ6XCJJUHY0LUJlcmVpY2hcIixjaWRydjY6XCJJUHY2LUJlcmVpY2hcIixiYXNlNjQ6XCJCYXNlNjQtY29kaWVydGVyIFN0cmluZ1wiLGJhc2U2NHVybDpcIkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZ1wiLGpzb25fc3RyaW5nOlwiSlNPTi1TdHJpbmdcIixlMTY0OlwiRS4xNjQtTnVtbWVyXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIkVpbmdhYmVcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFVuZ1x1MDBGQ2x0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7WC5leHBlY3RlZH0sIGVyaGFsdGVuICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBVbmdcdTAwRkNsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFVuZ1x1MDBGQ2x0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gWnUgZ3JvXHUwMERGOiBlcndhcnRldCwgZGFzcyAke1gub3JpZ2luPz9cIldlcnRcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIkVsZW1lbnRlXCJ9IGhhdGA7cmV0dXJuYFp1IGdyb1x1MDBERjogZXJ3YXJ0ZXQsIGRhc3MgJHtYLm9yaWdpbj8/XCJXZXJ0XCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSBpc3RgfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fSBoYXRgO3JldHVybmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gVW5nXHUwMEZDbHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgXCIke1cucHJlZml4fVwiIGJlZ2lubmVuYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFVuZ1x1MDBGQ2x0aWdlciBTdHJpbmc6IG11c3MgbWl0IFwiJHtXLnN1ZmZpeH1cIiBlbmRlbmA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFVuZ1x1MDBGQ2x0aWdlciBTdHJpbmc6IG11c3MgXCIke1cuaW5jbHVkZXN9XCIgZW50aGFsdGVuYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gVW5nXHUwMEZDbHRpZ2VyIFN0cmluZzogbXVzcyBkZW0gTXVzdGVyICR7Vy5wYXR0ZXJufSBlbnRzcHJlY2hlbmA7cmV0dXJuYFVuZ1x1MDBGQ2x0aWc6ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFVuZ1x1MDBGQ2x0aWdlIFphaGw6IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uICR7WC5kaXZpc29yfSBzZWluYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmAke1gua2V5cy5sZW5ndGg+MT9cIlVuYmVrYW5udGUgU2NobFx1MDBGQ3NzZWxcIjpcIlVuYmVrYW5udGVyIFNjaGxcdTAwRkNzc2VsXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBVbmdcdTAwRkNsdGlnZXIgU2NobFx1MDBGQ3NzZWwgaW4gJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlVuZ1x1MDBGQ2x0aWdlIEVpbmdhYmVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVW5nXHUwMEZDbHRpZ2VyIFdlcnQgaW4gJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJVbmdcdTAwRkNsdGlnZSBFaW5nYWJlXCJ9fX07ZnVuY3Rpb24gVnEoKXtyZXR1cm57bG9jYWxlRXJyb3I6enUoKX19dmFyIE51PSgkKT0+e2xldCBRPXR5cGVvZiAkO3N3aXRjaChRKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKCQpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheSgkKSlyZXR1cm5cImFycmF5XCI7aWYoJD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKCQpIT09T2JqZWN0LnByb3RvdHlwZSYmJC5jb25zdHJ1Y3RvcilyZXR1cm4gJC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gUX0sd3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiY2hhcmFjdGVyc1wiLHZlcmI6XCJ0byBoYXZlXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wiLHZlcmI6XCJ0byBoYXZlXCJ9LGFycmF5Ont1bml0OlwiaXRlbXNcIix2ZXJiOlwidG8gaGF2ZVwifSxzZXQ6e3VuaXQ6XCJpdGVtc1wiLHZlcmI6XCJ0byBoYXZlXCJ9fTtmdW5jdGlvbiBRKFkpe3JldHVybiAkW1ldPz9udWxsfWxldCBKPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJlbWFpbCBhZGRyZXNzXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBkYXRldGltZVwiLGRhdGU6XCJJU08gZGF0ZVwiLHRpbWU6XCJJU08gdGltZVwiLGR1cmF0aW9uOlwiSVNPIGR1cmF0aW9uXCIsaXB2NDpcIklQdjQgYWRkcmVzc1wiLGlwdjY6XCJJUHY2IGFkZHJlc3NcIixjaWRydjQ6XCJJUHY0IHJhbmdlXCIsY2lkcnY2OlwiSVB2NiByYW5nZVwiLGJhc2U2NDpcImJhc2U2NC1lbmNvZGVkIHN0cmluZ1wiLGJhc2U2NHVybDpcImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZ1wiLGpzb25fc3RyaW5nOlwiSlNPTiBzdHJpbmdcIixlMTY0OlwiRS4xNjQgbnVtYmVyXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImlucHV0XCJ9O3JldHVybihZKT0+e3N3aXRjaChZLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke1kuZXhwZWN0ZWR9LCByZWNlaXZlZCAke051KFkuaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFkudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7eChZLnZhbHVlc1swXSl9YDtyZXR1cm5gSW52YWxpZCBvcHRpb246IGV4cGVjdGVkIG9uZSBvZiAke1AoWS52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgWD1ZLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsVz1RKFkub3JpZ2luKTtpZihXKXJldHVybmBUb28gYmlnOiBleHBlY3RlZCAke1kub3JpZ2luPz9cInZhbHVlXCJ9IHRvIGhhdmUgJHtYfSR7WS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Vy51bml0Pz9cImVsZW1lbnRzXCJ9YDtyZXR1cm5gVG9vIGJpZzogZXhwZWN0ZWQgJHtZLm9yaWdpbj8/XCJ2YWx1ZVwifSB0byBiZSAke1h9JHtZLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgWD1ZLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsVz1RKFkub3JpZ2luKTtpZihXKXJldHVybmBUb28gc21hbGw6IGV4cGVjdGVkICR7WS5vcmlnaW59IHRvIGhhdmUgJHtYfSR7WS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Vy51bml0fWA7cmV0dXJuYFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtZLm9yaWdpbn0gdG8gYmUgJHtYfSR7WS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgWD1ZO2lmKFguZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBJbnZhbGlkIHN0cmluZzogbXVzdCBzdGFydCB3aXRoIFwiJHtYLnByZWZpeH1cImA7aWYoWC5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCBcIiR7WC5zdWZmaXh9XCJgO2lmKFguZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlIFwiJHtYLmluY2x1ZGVzfVwiYDtpZihYLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gSW52YWxpZCBzdHJpbmc6IG11c3QgbWF0Y2ggcGF0dGVybiAke1gucGF0dGVybn1gO3JldHVybmBJbnZhbGlkICR7SltYLmZvcm1hdF0/P1kuZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtZLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtZLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChZLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYEludmFsaWQga2V5IGluICR7WS5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJJbnZhbGlkIGlucHV0XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtZLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJJbnZhbGlkIGlucHV0XCJ9fX07ZnVuY3Rpb24gRVEoKXtyZXR1cm57bG9jYWxlRXJyb3I6d3UoKX19dmFyIE91PSgkKT0+e2xldCBRPXR5cGVvZiAkO3N3aXRjaChRKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKCQpP1wiTmFOXCI6XCJub21icm9cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheSgkKSlyZXR1cm5cInRhYmVsb1wiO2lmKCQ9PT1udWxsKXJldHVyblwic2VudmFsb3JhXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKCQpIT09T2JqZWN0LnByb3RvdHlwZSYmJC5jb25zdHJ1Y3RvcilyZXR1cm4gJC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gUX0sRHU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwia2FyYWt0cm9qblwiLHZlcmI6XCJoYXZpXCJ9LGZpbGU6e3VuaXQ6XCJiYWp0b2puXCIsdmVyYjpcImhhdmlcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50b2puXCIsdmVyYjpcImhhdmlcIn0sc2V0Ont1bml0OlwiZWxlbWVudG9qblwiLHZlcmI6XCJoYXZpXCJ9fTtmdW5jdGlvbiBRKFkpe3JldHVybiAkW1ldPz9udWxsfWxldCBKPXtyZWdleDpcImVuaWdvXCIsZW1haWw6XCJyZXRhZHJlc29cIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb1x1MDExRGlvXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPLWRhdG90ZW1wb1wiLGRhdGU6XCJJU08tZGF0b1wiLHRpbWU6XCJJU08tdGVtcG9cIixkdXJhdGlvbjpcIklTTy1kYVx1MDE2RHJvXCIsaXB2NDpcIklQdjQtYWRyZXNvXCIsaXB2NjpcIklQdjYtYWRyZXNvXCIsY2lkcnY0OlwiSVB2NC1yYW5nb1wiLGNpZHJ2NjpcIklQdjYtcmFuZ29cIixiYXNlNjQ6XCI2NC11bWUga29kaXRhIGthcmFrdHJhcm9cIixiYXNlNjR1cmw6XCJVUkwtNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvXCIsanNvbl9zdHJpbmc6XCJKU09OLWthcmFrdHJhcm9cIixlMTY0OlwiRS4xNjQtbm9tYnJvXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVuaWdvXCJ9O3JldHVybihZKT0+e3N3aXRjaChZLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBOZXZhbGlkYSBlbmlnbzogYXRlbmRpXHUwMTFEaXMgJHtZLmV4cGVjdGVkfSwgcmljZXZpXHUwMTFEaXMgJHtPdShZLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihZLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBOZXZhbGlkYSBlbmlnbzogYXRlbmRpXHUwMTFEaXMgJHt4KFkudmFsdWVzWzBdKX1gO3JldHVybmBOZXZhbGlkYSBvcGNpbzogYXRlbmRpXHUwMTFEaXMgdW51IGVsICR7UChZLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBYPVkuaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixXPVEoWS5vcmlnaW4pO2lmKFcpcmV0dXJuYFRybyBncmFuZGE6IGF0ZW5kaVx1MDExRGlzIGtlICR7WS5vcmlnaW4/P1widmFsb3JvXCJ9IGhhdnUgJHtYfSR7WS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Vy51bml0Pz9cImVsZW1lbnRvam5cIn1gO3JldHVybmBUcm8gZ3JhbmRhOiBhdGVuZGlcdTAxMURpcyBrZSAke1kub3JpZ2luPz9cInZhbG9yb1wifSBoYXZ1ICR7WH0ke1kubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBYPVkuaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixXPVEoWS5vcmlnaW4pO2lmKFcpcmV0dXJuYFRybyBtYWxncmFuZGE6IGF0ZW5kaVx1MDExRGlzIGtlICR7WS5vcmlnaW59IGhhdnUgJHtYfSR7WS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Vy51bml0fWA7cmV0dXJuYFRybyBtYWxncmFuZGE6IGF0ZW5kaVx1MDExRGlzIGtlICR7WS5vcmlnaW59IGVzdHUgJHtYfSR7WS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgWD1ZO2lmKFguZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpXHUwMTFEaSBwZXIgXCIke1gucHJlZml4fVwiYDtpZihYLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGZpbmlcdTAxMURpIHBlciBcIiR7WC5zdWZmaXh9XCJgO2lmKFguZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBpbmtsdXppdmkgXCIke1guaW5jbHVkZXN9XCJgO2lmKFguZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb25ncnVpIGt1biBsYSBtb2RlbG8gJHtYLnBhdHRlcm59YDtyZXR1cm5gTmV2YWxpZGEgJHtKW1guZm9ybWF0XT8/WS5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTmV2YWxpZGEgbm9tYnJvOiBkZXZhcyBlc3RpIG9ibG8gZGUgJHtZLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBOZWtvbmF0YSR7WS5rZXlzLmxlbmd0aD4xP1wialwiOlwiXCJ9IFx1MDE1RGxvc2lsbyR7WS5rZXlzLmxlbmd0aD4xP1wialwiOlwiXCJ9OiAke1AoWS5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBOZXZhbGlkYSBcdTAxNURsb3NpbG8gZW4gJHtZLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIk5ldmFsaWRhIGVuaWdvXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE5ldmFsaWRhIHZhbG9ybyBlbiAke1kub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIk5ldmFsaWRhIGVuaWdvXCJ9fX07ZnVuY3Rpb24gQnEoKXtyZXR1cm57bG9jYWxlRXJyb3I6RHUoKX19dmFyIEZ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImNhcmFjdGVyZXNcIix2ZXJiOlwidGVuZXJcIn0sZmlsZTp7dW5pdDpcImJ5dGVzXCIsdmVyYjpcInRlbmVyXCJ9LGFycmF5Ont1bml0OlwiZWxlbWVudG9zXCIsdmVyYjpcInRlbmVyXCJ9LHNldDp7dW5pdDpcImVsZW1lbnRvc1wiLHZlcmI6XCJ0ZW5lclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwiblx1MDBGQW1lcm9cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmVnbG9cIjtpZihYPT09bnVsbClyZXR1cm5cIm51bG9cIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImVudHJhZGFcIixlbWFpbDpcImRpcmVjY2lcdTAwRjNuIGRlIGNvcnJlbyBlbGVjdHJcdTAwRjNuaWNvXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImZlY2hhIHkgaG9yYSBJU09cIixkYXRlOlwiZmVjaGEgSVNPXCIsdGltZTpcImhvcmEgSVNPXCIsZHVyYXRpb246XCJkdXJhY2lcdTAwRjNuIElTT1wiLGlwdjQ6XCJkaXJlY2NpXHUwMEYzbiBJUHY0XCIsaXB2NjpcImRpcmVjY2lcdTAwRjNuIElQdjZcIixjaWRydjQ6XCJyYW5nbyBJUHY0XCIsY2lkcnY2OlwicmFuZ28gSVB2NlwiLGJhc2U2NDpcImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NFwiLGJhc2U2NHVybDpcIlVSTCBjb2RpZmljYWRhIGVuIGJhc2U2NFwiLGpzb25fc3RyaW5nOlwiY2FkZW5hIEpTT05cIixlMTY0Olwiblx1MDBGQW1lcm8gRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiZW50cmFkYVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gRW50cmFkYSBpbnZcdTAwRTFsaWRhOiBzZSBlc3BlcmFiYSAke1guZXhwZWN0ZWR9LCByZWNpYmlkbyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gRW50cmFkYSBpbnZcdTAwRTFsaWRhOiBzZSBlc3BlcmFiYSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9wY2lcdTAwRjNuIGludlx1MDBFMWxpZGE6IHNlIGVzcGVyYWJhIHVuYSBkZSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtYLm9yaWdpbj8/XCJ2YWxvclwifSB0dXZpZXJhICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50b3NcIn1gO3JldHVybmBEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtYLm9yaWdpbj8/XCJ2YWxvclwifSBmdWVyYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBEZW1hc2lhZG8gcGVxdWVcdTAwRjFvOiBzZSBlc3BlcmFiYSBxdWUgJHtYLm9yaWdpbn0gdHV2aWVyYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gRGVtYXNpYWRvIHBlcXVlXHUwMEYxbzogc2UgZXNwZXJhYmEgcXVlICR7WC5vcmlnaW59IGZ1ZXJhICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gQ2FkZW5hIGludlx1MDBFMWxpZGE6IGRlYmUgY29tZW56YXIgY29uIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBDYWRlbmEgaW52XHUwMEUxbGlkYTogZGViZSB0ZXJtaW5hciBlbiBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBDYWRlbmEgaW52XHUwMEUxbGlkYTogZGViZSBpbmNsdWlyIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gQ2FkZW5hIGludlx1MDBFMWxpZGE6IGRlYmUgY29pbmNpZGlyIGNvbiBlbCBwYXRyXHUwMEYzbiAke1cucGF0dGVybn1gO3JldHVybmBJbnZcdTAwRTFsaWRvICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5cdTAwRkFtZXJvIGludlx1MDBFMWxpZG86IGRlYmUgc2VyIG1cdTAwRkFsdGlwbG8gZGUgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBMbGF2ZSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IGRlc2Nvbm9jaWRhJHtYLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYExsYXZlIGludlx1MDBFMWxpZGEgZW4gJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIkVudHJhZGEgaW52XHUwMEUxbGlkYVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBWYWxvciBpbnZcdTAwRTFsaWRvIGVuICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiRW50cmFkYSBpbnZcdTAwRTFsaWRhXCJ9fX07ZnVuY3Rpb24genEoKXtyZXR1cm57bG9jYWxlRXJyb3I6RnUoKX19dmFyIFp1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MDZBOVx1MDYyN1x1MDYzMVx1MDYyN1x1MDZBOVx1MDYyQVx1MDYzMVwiLHZlcmI6XCJcdTA2MkZcdTA2MjdcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGXCJ9LGZpbGU6e3VuaXQ6XCJcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkFcIix2ZXJiOlwiXHUwNjJGXHUwNjI3XHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRlwifSxhcnJheTp7dW5pdDpcIlx1MDYyMlx1MDZDQ1x1MDYyQVx1MDY0NVwiLHZlcmI6XCJcdTA2MkZcdTA2MjdcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGXCJ9LHNldDp7dW5pdDpcIlx1MDYyMlx1MDZDQ1x1MDYyQVx1MDY0NVwiLHZlcmI6XCJcdTA2MkZcdTA2MjdcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA2MzlcdTA2MkZcdTA2MkZcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDYyMlx1MDYzMVx1MDYyN1x1MDZDQ1x1MDY0N1wiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNkNDXCIsZW1haWw6XCJcdTA2MjJcdTA2MkZcdTA2MzFcdTA2MzMgXHUwNjI3XHUwNkNDXHUwNjQ1XHUwNkNDXHUwNjQ0XCIsdXJsOlwiVVJMXCIsZW1vamk6XCJcdTA2MjdcdTA2Q0NcdTA2NDVcdTA2NDhcdTA2MkNcdTA2Q0NcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJcdTA2MkFcdTA2MjdcdTA2MzFcdTA2Q0NcdTA2MkUgXHUwNjQ4IFx1MDYzMlx1MDY0NVx1MDYyN1x1MDY0NiBcdTA2MjdcdTA2Q0NcdTA2MzJcdTA2NDhcIixkYXRlOlwiXHUwNjJBXHUwNjI3XHUwNjMxXHUwNkNDXHUwNjJFIFx1MDYyN1x1MDZDQ1x1MDYzMlx1MDY0OFwiLHRpbWU6XCJcdTA2MzJcdTA2NDVcdTA2MjdcdTA2NDYgXHUwNjI3XHUwNkNDXHUwNjMyXHUwNjQ4XCIsZHVyYXRpb246XCJcdTA2NDVcdTA2MkZcdTA2MkEgXHUwNjMyXHUwNjQ1XHUwNjI3XHUwNjQ2IFx1MDYyN1x1MDZDQ1x1MDYzMlx1MDY0OFwiLGlwdjQ6XCJJUHY0IFx1MDYyMlx1MDYyRlx1MDYzMVx1MDYzM1wiLGlwdjY6XCJJUHY2IFx1MDYyMlx1MDYyRlx1MDYzMVx1MDYzM1wiLGNpZHJ2NDpcIklQdjQgXHUwNjJGXHUwNjI3XHUwNjQ1XHUwNjQ2XHUwNjQ3XCIsY2lkcnY2OlwiSVB2NiBcdTA2MkZcdTA2MjdcdTA2NDVcdTA2NDZcdTA2NDdcIixiYXNlNjQ6XCJiYXNlNjQtZW5jb2RlZCBcdTA2MzFcdTA2MzRcdTA2MkFcdTA2NDdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtZW5jb2RlZCBcdTA2MzFcdTA2MzRcdTA2MkFcdTA2NDdcIixqc29uX3N0cmluZzpcIkpTT04gXHUwNjMxXHUwNjM0XHUwNjJBXHUwNjQ3XCIsZTE2NDpcIkUuMTY0IFx1MDYzOVx1MDYyRlx1MDYyRlwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2Q0NcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDY0OFx1MDYzMVx1MDY0OFx1MDYyRlx1MDZDQyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDY0NVx1MDZDQ1x1MjAwQ1x1MDYyOFx1MDYyN1x1MDZDQ1x1MDYzM1x1MDYyQSAke1guZXhwZWN0ZWR9IFx1MDY0NVx1MDZDQ1x1MjAwQ1x1MDYyOFx1MDY0OFx1MDYyRlx1MDYwQyAke0ooWC5pbnB1dCl9IFx1MDYyRlx1MDYzMVx1MDZDQ1x1MDYyN1x1MDY0MVx1MDYyQSBcdTA2MzRcdTA2MkZgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2Q0MgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxOiBcdTA2NDVcdTA2Q0NcdTIwMENcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MzNcdTA2MkEgJHt4KFgudmFsdWVzWzBdKX0gXHUwNjQ1XHUwNkNDXHUyMDBDXHUwNjI4XHUwNjQ4XHUwNjJGYDtyZXR1cm5gXHUwNkFGXHUwNjMyXHUwNkNDXHUwNjQ2XHUwNjQ3IFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMTogXHUwNjQ1XHUwNkNDXHUyMDBDXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjMzXHUwNjJBIFx1MDZDQ1x1MDZBOVx1MDZDQyBcdTA2MjdcdTA2MzIgJHtQKFgudmFsdWVzLFwifFwiKX0gXHUwNjQ1XHUwNkNDXHUyMDBDXHUwNjI4XHUwNjQ4XHUwNjJGYDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDYyRVx1MDZDQ1x1MDY0NFx1MDZDQyBcdTA2MjhcdTA2MzJcdTA2MzFcdTA2QUY6ICR7WC5vcmlnaW4/P1wiXHUwNjQ1XHUwNjQyXHUwNjJGXHUwNjI3XHUwNjMxXCJ9IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUwNjM5XHUwNjQ2XHUwNjM1XHUwNjMxXCJ9IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmA7cmV0dXJuYFx1MDYyRVx1MDZDQ1x1MDY0NFx1MDZDQyBcdTA2MjhcdTA2MzJcdTA2MzFcdTA2QUY6ICR7WC5vcmlnaW4/P1wiXHUwNjQ1XHUwNjQyXHUwNjJGXHUwNjI3XHUwNjMxXCJ9IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGYH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNjJFXHUwNkNDXHUwNjQ0XHUwNkNDIFx1MDZBOVx1MDY0OFx1MDY4Nlx1MDZBOTogJHtYLm9yaWdpbn0gXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGYDtyZXR1cm5gXHUwNjJFXHUwNkNDXHUwNjQ0XHUwNkNDIFx1MDZBOVx1MDY0OFx1MDY4Nlx1MDZBOTogJHtYLm9yaWdpbn0gXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSBcdTA2MjhcdTA2MjdcdTA2MzRcdTA2MkZgfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDYzMVx1MDYzNFx1MDYyQVx1MDY0NyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MjhcdTA2MjcgXCIke1cucHJlZml4fVwiIFx1MDYzNFx1MDYzMVx1MDY0OFx1MDYzOSBcdTA2MzRcdTA2NDhcdTA2MkZgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwNjMxXHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMTogXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGIFx1MDYyOFx1MDYyNyBcIiR7Vy5zdWZmaXh9XCIgXHUwNjJBXHUwNjQ1XHUwNjI3XHUwNjQ1IFx1MDYzNFx1MDY0OFx1MDYyRmA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MDYzMVx1MDYzNFx1MDYyQVx1MDY0NyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MzRcdTA2MjdcdTA2NDVcdTA2NDQgXCIke1cuaW5jbHVkZXN9XCIgXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNjMxXHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMTogXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGIFx1MDYyOFx1MDYyNyBcdTA2MjdcdTA2NDRcdTA2QUZcdTA2NDhcdTA2Q0MgJHtXLnBhdHRlcm59IFx1MDY0NVx1MDYzN1x1MDYyN1x1MDYyOFx1MDY0Mlx1MDYyQSBcdTA2MkZcdTA2MjdcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGYDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDYzOVx1MDYyRlx1MDYyRiBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2NDVcdTA2MzZcdTA2MzFcdTA2MjggJHtYLmRpdmlzb3J9IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNkE5XHUwNjQ0XHUwNkNDXHUwNjJGJHtYLmtleXMubGVuZ3RoPjE/XCJcdTA2NDdcdTA2MjdcdTA2Q0NcIjpcIlwifSBcdTA2NDZcdTA2MjdcdTA2MzRcdTA2NDZcdTA2MjdcdTA2MzM6ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDZBOVx1MDY0NFx1MDZDQ1x1MDYyRiBcdTA2NDZcdTA2MjdcdTA2MzRcdTA2NDZcdTA2MjdcdTA2MzMgXHUwNjJGXHUwNjMxICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2Q0MgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDY0NVx1MDY0Mlx1MDYyRlx1MDYyN1x1MDYzMSBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzEgXHUwNjJGXHUwNjMxICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNkNDIFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMVwifX19O2Z1bmN0aW9uIE5xKCl7cmV0dXJue2xvY2FsZUVycm9yOlp1KCl9fXZhciBNdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJtZXJra2lcdTAwRTRcIixzdWJqZWN0OlwibWVya2tpam9ub25cIn0sZmlsZTp7dW5pdDpcInRhdnVhXCIsc3ViamVjdDpcInRpZWRvc3RvblwifSxhcnJheTp7dW5pdDpcImFsa2lvdGFcIixzdWJqZWN0OlwibGlzdGFuXCJ9LHNldDp7dW5pdDpcImFsa2lvdGFcIixzdWJqZWN0Olwiam91a29uXCJ9LG51bWJlcjp7dW5pdDpcIlwiLHN1YmplY3Q6XCJsdXZ1blwifSxiaWdpbnQ6e3VuaXQ6XCJcIixzdWJqZWN0Olwic3V1cmVuIGtva29uYWlzbHV2dW5cIn0saW50Ont1bml0OlwiXCIsc3ViamVjdDpcImtva29uYWlzbHV2dW5cIn0sZGF0ZTp7dW5pdDpcIlwiLHN1YmplY3Q6XCJwXHUwMEU0aXZcdTAwRTRtXHUwMEU0XHUwMEU0clx1MDBFNG5cIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcInNcdTAwRTRcdTAwRTRublx1MDBGNmxsaW5lbiBsYXVzZWtlXCIsZW1haWw6XCJzXHUwMEU0aGtcdTAwRjZwb3N0aW9zb2l0ZVwiLHVybDpcIlVSTC1vc29pdGVcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPLWFpa2FsZWltYVwiLGRhdGU6XCJJU08tcFx1MDBFNGl2XHUwMEU0bVx1MDBFNFx1MDBFNHJcdTAwRTRcIix0aW1lOlwiSVNPLWFpa2FcIixkdXJhdGlvbjpcIklTTy1rZXN0b1wiLGlwdjQ6XCJJUHY0LW9zb2l0ZVwiLGlwdjY6XCJJUHY2LW9zb2l0ZVwiLGNpZHJ2NDpcIklQdjQtYWx1ZVwiLGNpZHJ2NjpcIklQdjYtYWx1ZVwiLGJhc2U2NDpcImJhc2U2NC1rb29kYXR0dSBtZXJra2lqb25vXCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsLWtvb2RhdHR1IG1lcmtraWpvbm9cIixqc29uX3N0cmluZzpcIkpTT04tbWVya2tpam9ub1wiLGUxNjQ6XCJFLjE2NC1sdWt1XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcInRlbXBsYWF0dGltZXJra2lqb25vXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluICR7WC5leHBlY3RlZH0sIG9saSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gVmlyaGVlbGxpbmVuIHN5XHUwMEY2dGU6IHRcdTAwRTR5dHl5IG9sbGEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBWaXJoZWVsbGluZW4gdmFsaW50YTogdFx1MDBFNHl0eXkgb2xsYSB5a3NpIHNldXJhYXZpc3RhOiAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBMaWlhbiBzdXVyaTogJHtHLnN1YmplY3R9IHRcdTAwRTR5dHl5IG9sbGEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWAudHJpbSgpO3JldHVybmBMaWlhbiBzdXVyaTogYXJ2b24gdFx1MDBFNHl0eXkgb2xsYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBMaWlhbiBwaWVuaTogJHtHLnN1YmplY3R9IHRcdTAwRTR5dHl5IG9sbGEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWAudHJpbSgpO3JldHVybmBMaWlhbiBwaWVuaTogYXJ2b24gdFx1MDBFNHl0eXkgb2xsYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFZpcmhlZWxsaW5lbiBzeVx1MDBGNnRlOiB0XHUwMEU0eXR5eSBhbGthYSBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gVmlyaGVlbGxpbmVuIHN5XHUwMEY2dGU6IHRcdTAwRTR5dHl5IGxvcHB1YSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBWaXJoZWVsbGluZW4gc3lcdTAwRjZ0ZTogdFx1MDBFNHl0eXkgc2lzXHUwMEU0bHRcdTAwRTRcdTAwRTQgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBWaXJoZWVsbGluZW4gc3lcdTAwRjZ0ZTogdFx1MDBFNHl0eXkgdmFzdGF0YSBzXHUwMEU0XHUwMEU0bm5cdTAwRjZsbGlzdFx1MDBFNCBsYXVzZWtldHRhICR7Vy5wYXR0ZXJufWA7cmV0dXJuYFZpcmhlZWxsaW5lbiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBWaXJoZWVsbGluZW4gbHVrdTogdFx1MDBFNHl0eXkgb2xsYSBsdXZ1biAke1guZGl2aXNvcn0gbW9uaWtlcnRhYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmAke1gua2V5cy5sZW5ndGg+MT9cIlR1bnRlbWF0dG9tYXQgYXZhaW1ldFwiOlwiVHVudGVtYXRvbiBhdmFpblwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5cIlZpcmhlZWxsaW5lbiBhdmFpbiB0aWV0dWVlc3NhXCI7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiVmlyaGVlbGxpbmVuIHVuaW9uaVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVyblwiVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2FcIjtkZWZhdWx0OnJldHVyblwiVmlyaGVlbGxpbmVuIHN5XHUwMEY2dGVcIn19fTtmdW5jdGlvbiB3cSgpe3JldHVybntsb2NhbGVFcnJvcjpNdSgpfX12YXIgTHU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiY2FyYWN0XHUwMEU4cmVzXCIsdmVyYjpcImF2b2lyXCJ9LGZpbGU6e3VuaXQ6XCJvY3RldHNcIix2ZXJiOlwiYXZvaXJcIn0sYXJyYXk6e3VuaXQ6XCJcdTAwRTlsXHUwMEU5bWVudHNcIix2ZXJiOlwiYXZvaXJcIn0sc2V0Ont1bml0OlwiXHUwMEU5bFx1MDBFOW1lbnRzXCIsdmVyYjpcImF2b2lyXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJub21icmVcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInRhYmxlYXVcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImVudHJcdTAwRTllXCIsZW1haWw6XCJhZHJlc3NlIGUtbWFpbFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJkYXRlIGV0IGhldXJlIElTT1wiLGRhdGU6XCJkYXRlIElTT1wiLHRpbWU6XCJoZXVyZSBJU09cIixkdXJhdGlvbjpcImR1clx1MDBFOWUgSVNPXCIsaXB2NDpcImFkcmVzc2UgSVB2NFwiLGlwdjY6XCJhZHJlc3NlIElQdjZcIixjaWRydjQ6XCJwbGFnZSBJUHY0XCIsY2lkcnY2OlwicGxhZ2UgSVB2NlwiLGJhc2U2NDpcImNoYVx1MDBFRW5lIGVuY29kXHUwMEU5ZSBlbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJjaGFcdTAwRUVuZSBlbmNvZFx1MDBFOWUgZW4gYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJjaGFcdTAwRUVuZSBKU09OXCIsZTE2NDpcIm51bVx1MDBFOXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVudHJcdTAwRTllXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBFbnRyXHUwMEU5ZSBpbnZhbGlkZSA6ICR7WC5leHBlY3RlZH0gYXR0ZW5kdSwgJHtKKFguaW5wdXQpfSByZVx1MDBFN3VgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBFbnRyXHUwMEU5ZSBpbnZhbGlkZSA6ICR7eChYLnZhbHVlc1swXSl9IGF0dGVuZHVgO3JldHVybmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7UChYLnZhbHVlcyxcInxcIil9IGF0dGVuZHVlYDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRyb3AgZ3JhbmQgOiAke1gub3JpZ2luPz9cInZhbGV1clwifSBkb2l0ICR7Ry52ZXJifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUwMEU5bFx1MDBFOW1lbnQocylcIn1gO3JldHVybmBUcm9wIGdyYW5kIDogJHtYLm9yaWdpbj8/XCJ2YWxldXJcIn0gZG9pdCBcdTAwRUF0cmUgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVHJvcCBwZXRpdCA6ICR7WC5vcmlnaW59IGRvaXQgJHtHLnZlcmJ9ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBUcm9wIHBldGl0IDogJHtYLm9yaWdpbn0gZG9pdCBcdTAwRUF0cmUgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYENoYVx1MDBFRW5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW9kXHUwMEU4bGUgJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IGludmFsaWRlYH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCBcdTAwRUF0cmUgdW4gbXVsdGlwbGUgZGUgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBDbFx1MDBFOSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IG5vbiByZWNvbm51ZSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IDogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gQ2xcdTAwRTkgaW52YWxpZGUgZGFucyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiRW50clx1MDBFOWUgaW52YWxpZGVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJFbnRyXHUwMEU5ZSBpbnZhbGlkZVwifX19O2Z1bmN0aW9uIE9xKCl7cmV0dXJue2xvY2FsZUVycm9yOkx1KCl9fXZhciBqdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJjYXJhY3RcdTAwRThyZXNcIix2ZXJiOlwiYXZvaXJcIn0sZmlsZTp7dW5pdDpcIm9jdGV0c1wiLHZlcmI6XCJhdm9pclwifSxhcnJheTp7dW5pdDpcIlx1MDBFOWxcdTAwRTltZW50c1wiLHZlcmI6XCJhdm9pclwifSxzZXQ6e3VuaXQ6XCJcdTAwRTlsXHUwMEU5bWVudHNcIix2ZXJiOlwiYXZvaXJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImVudHJcdTAwRTllXCIsZW1haWw6XCJhZHJlc3NlIGNvdXJyaWVsXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdGUtaGV1cmUgSVNPXCIsZGF0ZTpcImRhdGUgSVNPXCIsdGltZTpcImhldXJlIElTT1wiLGR1cmF0aW9uOlwiZHVyXHUwMEU5ZSBJU09cIixpcHY0OlwiYWRyZXNzZSBJUHY0XCIsaXB2NjpcImFkcmVzc2UgSVB2NlwiLGNpZHJ2NDpcInBsYWdlIElQdjRcIixjaWRydjY6XCJwbGFnZSBJUHY2XCIsYmFzZTY0OlwiY2hhXHUwMEVFbmUgZW5jb2RcdTAwRTllIGVuIGJhc2U2NFwiLGJhc2U2NHVybDpcImNoYVx1MDBFRW5lIGVuY29kXHUwMEU5ZSBlbiBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcImNoYVx1MDBFRW5lIEpTT05cIixlMTY0OlwibnVtXHUwMEU5cm8gRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiZW50clx1MDBFOWVcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYEVudHJcdTAwRTllIGludmFsaWRlIDogYXR0ZW5kdSAke1guZXhwZWN0ZWR9LCByZVx1MDBFN3UgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEVudHJcdTAwRTllIGludmFsaWRlIDogYXR0ZW5kdSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9wdGlvbiBpbnZhbGlkZSA6IGF0dGVuZHUgbCd1bmUgZGVzIHZhbGV1cnMgc3VpdmFudGVzICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiXHUyMjY0XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtYLm9yaWdpbj8/XCJsYSB2YWxldXJcIn0gYWl0ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtYLm9yaWdpbj8/XCJsYSB2YWxldXJcIn0gc29pdCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIlx1MjI2NVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7WC5vcmlnaW59IGFpdCAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7WC5vcmlnaW59IHNvaXQgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYENoYVx1MDBFRW5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW90aWYgJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IGludmFsaWRlYH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCBcdTAwRUF0cmUgdW4gbXVsdGlwbGUgZGUgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBDbFx1MDBFOSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IG5vbiByZWNvbm51ZSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IDogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gQ2xcdTAwRTkgaW52YWxpZGUgZGFucyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiRW50clx1MDBFOWUgaW52YWxpZGVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJFbnRyXHUwMEU5ZSBpbnZhbGlkZVwifX19O2Z1bmN0aW9uIERxKCl7cmV0dXJue2xvY2FsZUVycm9yOmp1KCl9fXZhciBBdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA1RDBcdTA1RDVcdTA1RUFcdTA1RDlcdTA1RDVcdTA1RUFcIix2ZXJiOlwiXHUwNURDXHUwNURCXHUwNURDXHUwNUQ1XHUwNURDXCJ9LGZpbGU6e3VuaXQ6XCJcdTA1RDFcdTA1RDlcdTA1RDlcdTA1RDhcdTA1RDlcdTA1RERcIix2ZXJiOlwiXHUwNURDXHUwNURCXHUwNURDXHUwNUQ1XHUwNURDXCJ9LGFycmF5Ont1bml0OlwiXHUwNUU0XHUwNUU4XHUwNUQ5XHUwNUQ4XHUwNUQ5XHUwNUREXCIsdmVyYjpcIlx1MDVEQ1x1MDVEQlx1MDVEQ1x1MDVENVx1MDVEQ1wifSxzZXQ6e3VuaXQ6XCJcdTA1RTRcdTA1RThcdTA1RDlcdTA1RDhcdTA1RDlcdTA1RERcIix2ZXJiOlwiXHUwNURDXHUwNURCXHUwNURDXHUwNUQ1XHUwNURDXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA1RTdcdTA1RENcdTA1RDhcIixlbWFpbDpcIlx1MDVEQlx1MDVFQVx1MDVENVx1MDVEMVx1MDVFQSBcdTA1RDBcdTA1RDlcdTA1REVcdTA1RDlcdTA1RDlcdTA1RENcIix1cmw6XCJcdTA1REJcdTA1RUFcdTA1RDVcdTA1RDFcdTA1RUEgXHUwNUU4XHUwNUU5XHUwNUVBXCIsZW1vamk6XCJcdTA1RDBcdTA1RDlcdTA1REVcdTA1RDVcdTA1RDInXHUwNUQ5XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiXHUwNUVBXHUwNUQwXHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVENVx1MDVENlx1MDVERVx1MDVERiBJU09cIixkYXRlOlwiXHUwNUVBXHUwNUQwXHUwNUU4XHUwNUQ5XHUwNURBIElTT1wiLHRpbWU6XCJcdTA1RDZcdTA1REVcdTA1REYgSVNPXCIsZHVyYXRpb246XCJcdTA1REVcdTA1RTlcdTA1REEgXHUwNUQ2XHUwNURFXHUwNURGIElTT1wiLGlwdjQ6XCJcdTA1REJcdTA1RUFcdTA1RDVcdTA1RDFcdTA1RUEgSVB2NFwiLGlwdjY6XCJcdTA1REJcdTA1RUFcdTA1RDVcdTA1RDFcdTA1RUEgSVB2NlwiLGNpZHJ2NDpcIlx1MDVEOFx1MDVENVx1MDVENVx1MDVENyBJUHY0XCIsY2lkcnY2OlwiXHUwNUQ4XHUwNUQ1XHUwNUQ1XHUwNUQ3IElQdjZcIixiYXNlNjQ6XCJcdTA1REVcdTA1RDdcdTA1RThcdTA1RDVcdTA1RDZcdTA1RUEgXHUwNUQxXHUwNUQxXHUwNUUxXHUwNUQ5XHUwNUUxIDY0XCIsYmFzZTY0dXJsOlwiXHUwNURFXHUwNUQ3XHUwNUU4XHUwNUQ1XHUwNUQ2XHUwNUVBIFx1MDVEMVx1MDVEMVx1MDVFMVx1MDVEOVx1MDVFMSA2NCBcdTA1RENcdTA1REJcdTA1RUFcdTA1RDVcdTA1RDFcdTA1RDVcdTA1RUEgXHUwNUU4XHUwNUU5XHUwNUVBXCIsanNvbl9zdHJpbmc6XCJcdTA1REVcdTA1RDdcdTA1RThcdTA1RDVcdTA1RDZcdTA1RUEgSlNPTlwiLGUxNjQ6XCJcdTA1REVcdTA1RTFcdTA1RTRcdTA1RTggRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNUU3XHUwNURDXHUwNUQ4XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA1RTdcdTA1RENcdTA1RDggXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERjogXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBICR7WC5leHBlY3RlZH0sIFx1MDVENFx1MDVFQVx1MDVFN1x1MDVEMVx1MDVEQyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwNUU3XHUwNURDXHUwNUQ4IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REY6IFx1MDVFNlx1MDVFOFx1MDVEOVx1MDVEQSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFx1MDVFN1x1MDVEQ1x1MDVEOCBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNURGOiBcdTA1RTZcdTA1RThcdTA1RDlcdTA1REEgXHUwNUQwXHUwNUQ3XHUwNUVBIFx1MDVERVx1MDVENFx1MDVEMFx1MDVFNFx1MDVFOVx1MDVFOFx1MDVENVx1MDVEOVx1MDVENVx1MDVFQSAgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNUQyXHUwNUQzXHUwNUQ1XHUwNURDIFx1MDVERVx1MDVEM1x1MDVEOTogJHtYLm9yaWdpbj8/XCJ2YWx1ZVwifSBcdTA1RTZcdTA1RThcdTA1RDlcdTA1REEgXHUwNURDXHUwNUQ0XHUwNUQ5XHUwNUQ1XHUwNUVBICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50c1wifWA7cmV0dXJuYFx1MDVEMlx1MDVEM1x1MDVENVx1MDVEQyBcdTA1REVcdTA1RDNcdTA1RDk6ICR7WC5vcmlnaW4/P1widmFsdWVcIn0gXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVEQ1x1MDVENFx1MDVEOVx1MDVENVx1MDVFQSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA1RTdcdTA1RDhcdTA1REYgXHUwNURFXHUwNUQzXHUwNUQ5OiAke1gub3JpZ2lufSBcdTA1RTZcdTA1RThcdTA1RDlcdTA1REEgXHUwNURDXHUwNUQ0XHUwNUQ5XHUwNUQ1XHUwNUVBICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTA1RTdcdTA1RDhcdTA1REYgXHUwNURFXHUwNUQzXHUwNUQ5OiAke1gub3JpZ2lufSBcdTA1RTZcdTA1RThcdTA1RDlcdTA1REEgXHUwNURDXHUwNUQ0XHUwNUQ5XHUwNUQ1XHUwNUVBICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwNURFXHUwNUQ3XHUwNUU4XHUwNUQ1XHUwNUQ2XHUwNUVBIFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1RTBcdTA1RDQ6IFx1MDVEN1x1MDVEOVx1MDVEOVx1MDVEMVx1MDVFQSBcdTA1RENcdTA1RDRcdTA1RUFcdTA1RDdcdTA1RDlcdTA1REMgXHUwNUQxXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDVERVx1MDVEN1x1MDVFOFx1MDVENVx1MDVENlx1MDVFQSBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNUUwXHUwNUQ0OiBcdTA1RDdcdTA1RDlcdTA1RDlcdTA1RDFcdTA1RUEgXHUwNURDXHUwNUQ0XHUwNUUxXHUwNUVBXHUwNUQ5XHUwNUQ5XHUwNUREIFx1MDVEMSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA1REVcdTA1RDdcdTA1RThcdTA1RDVcdTA1RDZcdTA1RUEgXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVFMFx1MDVENDogXHUwNUQ3XHUwNUQ5XHUwNUQ5XHUwNUQxXHUwNUVBIFx1MDVEQ1x1MDVEQlx1MDVEQ1x1MDVENVx1MDVEQyBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDVERVx1MDVEN1x1MDVFOFx1MDVENVx1MDVENlx1MDVFQSBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNUUwXHUwNUQ0OiBcdTA1RDdcdTA1RDlcdTA1RDlcdTA1RDFcdTA1RUEgXHUwNURDXHUwNUQ0XHUwNUVBXHUwNUQwXHUwNUQ5XHUwNUREIFx1MDVEQ1x1MDVFQVx1MDVEMVx1MDVFMFx1MDVEOVx1MDVFQSAke1cucGF0dGVybn1gO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0gXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERmB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDVERVx1MDVFMVx1MDVFNFx1MDVFOCBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNURGOiBcdTA1RDdcdTA1RDlcdTA1RDlcdTA1RDEgXHUwNURDXHUwNUQ0XHUwNUQ5XHUwNUQ1XHUwNUVBIFx1MDVERVx1MDVEQlx1MDVFNFx1MDVEQ1x1MDVENCBcdTA1RTlcdTA1REMgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTA1REVcdTA1RTRcdTA1RUFcdTA1RDcke1gua2V5cy5sZW5ndGg+MT9cIlx1MDVENVx1MDVFQVwiOlwiXCJ9IFx1MDVEQ1x1MDVEMCBcdTA1REVcdTA1RDZcdTA1RDVcdTA1RDQke1gua2V5cy5sZW5ndGg+MT9cIlx1MDVEOVx1MDVERFwiOlwiXHUwNUQ0XCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA1REVcdTA1RTRcdTA1RUFcdTA1RDcgXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERiBcdTA1RDEke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNUU3XHUwNURDXHUwNUQ4IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REZcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNUUyXHUwNUU4XHUwNURBIFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REYgXHUwNUQxJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTA1RTdcdTA1RENcdTA1RDggXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERlwifX19O2Z1bmN0aW9uIEZxKCl7cmV0dXJue2xvY2FsZUVycm9yOkF1KCl9fXZhciBJdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJrYXJha3RlclwiLHZlcmI6XCJsZWd5ZW5cIn0sZmlsZTp7dW5pdDpcImJ5dGVcIix2ZXJiOlwibGVneWVuXCJ9LGFycmF5Ont1bml0OlwiZWxlbVwiLHZlcmI6XCJsZWd5ZW5cIn0sc2V0Ont1bml0OlwiZWxlbVwiLHZlcmI6XCJsZWd5ZW5cIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcInN6XHUwMEUxbVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwidFx1MDBGNm1iXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJiZW1lbmV0XCIsZW1haWw6XCJlbWFpbCBjXHUwMEVEbVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gaWRcdTAxNTFiXHUwMEU5bHllZ1wiLGRhdGU6XCJJU08gZFx1MDBFMXR1bVwiLHRpbWU6XCJJU08gaWRcdTAxNTFcIixkdXJhdGlvbjpcIklTTyBpZFx1MDE1MWludGVydmFsbHVtXCIsaXB2NDpcIklQdjQgY1x1MDBFRG1cIixpcHY2OlwiSVB2NiBjXHUwMEVEbVwiLGNpZHJ2NDpcIklQdjQgdGFydG9tXHUwMEUxbnlcIixjaWRydjY6XCJJUHY2IHRhcnRvbVx1MDBFMW55XCIsYmFzZTY0OlwiYmFzZTY0LWtcdTAwRjNkb2x0IHN0cmluZ1wiLGJhc2U2NHVybDpcImJhc2U2NHVybC1rXHUwMEYzZG9sdCBzdHJpbmdcIixqc29uX3N0cmluZzpcIkpTT04gc3RyaW5nXCIsZTE2NDpcIkUuMTY0IHN6XHUwMEUxbVwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJiZW1lbmV0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4gYmVtZW5ldDogYSB2XHUwMEUxcnQgXHUwMEU5cnRcdTAwRTlrICR7WC5leHBlY3RlZH0sIGEga2Fwb3R0IFx1MDBFOXJ0XHUwMEU5ayAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIGJlbWVuZXQ6IGEgdlx1MDBFMXJ0IFx1MDBFOXJ0XHUwMEU5ayAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBvcGNpXHUwMEYzOiB2YWxhbWVseWlrIFx1MDBFOXJ0XHUwMEU5ayB2XHUwMEUxcnQgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVFx1MDBGQWwgbmFneTogJHtYLm9yaWdpbj8/XCJcdTAwRTlydFx1MDBFOWtcIn0gbVx1MDBFOXJldGUgdFx1MDBGQWwgbmFneSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbVwifWA7cmV0dXJuYFRcdTAwRkFsIG5hZ3k6IGEgYmVtZW5ldGkgXHUwMEU5cnRcdTAwRTlrICR7WC5vcmlnaW4/P1wiXHUwMEU5cnRcdTAwRTlrXCJ9IHRcdTAwRkFsIG5hZ3k6ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRcdTAwRkFsIGtpY3NpOiBhIGJlbWVuZXRpIFx1MDBFOXJ0XHUwMEU5ayAke1gub3JpZ2lufSBtXHUwMEU5cmV0ZSB0XHUwMEZBbCBraWNzaSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVFx1MDBGQWwga2ljc2k6IGEgYmVtZW5ldGkgXHUwMEU5cnRcdTAwRTlrICR7WC5vcmlnaW59IHRcdTAwRkFsIGtpY3NpICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIHN0cmluZzogXCIke1cucHJlZml4fVwiIFx1MDBFOXJ0XHUwMEU5a2tlbCBrZWxsIGtlemRcdTAxNTFkbmllYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBzdHJpbmc6IFwiJHtXLnN1ZmZpeH1cIiBcdTAwRTlydFx1MDBFOWtrZWwga2VsbCB2XHUwMEU5Z3pcdTAxNTFkbmllYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIHN0cmluZzogXCIke1cuaW5jbHVkZXN9XCIgXHUwMEU5cnRcdTAwRTlrZXQga2VsbCB0YXJ0YWxtYXpuaWFgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4gc3RyaW5nOiAke1cucGF0dGVybn0gbWludFx1MDBFMW5hayBrZWxsIG1lZ2ZlbGVsbmllYDtyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBzelx1MDBFMW06ICR7WC5kaXZpc29yfSB0XHUwMEY2YmJzelx1MDBGNnJcdTAwRjZzXHUwMEU5bmVrIGtlbGwgbGVubmllYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBJc21lcmV0bGVuIGt1bGNzJHtYLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBrdWxjcyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwMEM5cnZcdTAwRTlueXRlbGVuIGJlbWVuZXRcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIFx1MDBFOXJ0XHUwMEU5azogJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTAwQzlydlx1MDBFOW55dGVsZW4gYmVtZW5ldFwifX19O2Z1bmN0aW9uIFpxKCl7cmV0dXJue2xvY2FsZUVycm9yOkl1KCl9fXZhciBSdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJrYXJha3RlclwiLHZlcmI6XCJtZW1pbGlraVwifSxmaWxlOnt1bml0OlwiYnl0ZVwiLHZlcmI6XCJtZW1pbGlraVwifSxhcnJheTp7dW5pdDpcIml0ZW1cIix2ZXJiOlwibWVtaWxpa2lcIn0sc2V0Ont1bml0OlwiaXRlbVwiLHZlcmI6XCJtZW1pbGlraVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiaW5wdXRcIixlbWFpbDpcImFsYW1hdCBlbWFpbFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJ0YW5nZ2FsIGRhbiB3YWt0dSBmb3JtYXQgSVNPXCIsZGF0ZTpcInRhbmdnYWwgZm9ybWF0IElTT1wiLHRpbWU6XCJqYW0gZm9ybWF0IElTT1wiLGR1cmF0aW9uOlwiZHVyYXNpIGZvcm1hdCBJU09cIixpcHY0OlwiYWxhbWF0IElQdjRcIixpcHY2OlwiYWxhbWF0IElQdjZcIixjaWRydjQ6XCJyZW50YW5nIGFsYW1hdCBJUHY0XCIsY2lkcnY2OlwicmVudGFuZyBhbGFtYXQgSVB2NlwiLGJhc2U2NDpcInN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NFwiLGJhc2U2NHVybDpcInN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwic3RyaW5nIEpTT05cIixlMTY0OlwiYW5na2EgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW5wdXRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7WC5leHBlY3RlZH0sIGRpdGVyaW1hICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFBpbGloYW4gdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gc2FsYWggc2F0dSBkYXJpICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtYLm9yaWdpbj8/XCJ2YWx1ZVwifSBtZW1pbGlraSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVuXCJ9YDtyZXR1cm5gVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke1gub3JpZ2luPz9cInZhbHVlXCJ9IG1lbmphZGkgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke1gub3JpZ2lufSBtZW1pbGlraSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke1gub3JpZ2lufSBtZW5qYWRpICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBkaW11bGFpIGRlbmdhbiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBtZW55ZXJ0YWthbiBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgc2VzdWFpIHBvbGEgJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IHRpZGFrIHZhbGlkYH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gQW5na2EgdGlkYWsgdmFsaWQ6IGhhcnVzIGtlbGlwYXRhbiBkYXJpICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGkgJHtYLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYEt1bmNpIHRpZGFrIHZhbGlkIGRpICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJJbnB1dCB0aWRhayB2YWxpZFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBOaWxhaSB0aWRhayB2YWxpZCBkaSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIklucHV0IHRpZGFrIHZhbGlkXCJ9fX07ZnVuY3Rpb24gTXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6UnUoKX19dmFyIFB1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImNhcmF0dGVyaVwiLHZlcmI6XCJhdmVyZVwifSxmaWxlOnt1bml0OlwiYnl0ZVwiLHZlcmI6XCJhdmVyZVwifSxhcnJheTp7dW5pdDpcImVsZW1lbnRpXCIsdmVyYjpcImF2ZXJlXCJ9LHNldDp7dW5pdDpcImVsZW1lbnRpXCIsdmVyYjpcImF2ZXJlXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1lcm9cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInZldHRvcmVcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJpbmRpcml6em8gZW1haWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiZGF0YSBlIG9yYSBJU09cIixkYXRlOlwiZGF0YSBJU09cIix0aW1lOlwib3JhIElTT1wiLGR1cmF0aW9uOlwiZHVyYXRhIElTT1wiLGlwdjQ6XCJpbmRpcml6em8gSVB2NFwiLGlwdjY6XCJpbmRpcml6em8gSVB2NlwiLGNpZHJ2NDpcImludGVydmFsbG8gSVB2NFwiLGNpZHJ2NjpcImludGVydmFsbG8gSVB2NlwiLGJhc2U2NDpcInN0cmluZ2EgY29kaWZpY2F0YSBpbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJVUkwgY29kaWZpY2F0YSBpbiBiYXNlNjRcIixqc29uX3N0cmluZzpcInN0cmluZ2EgSlNPTlwiLGUxNjQ6XCJudW1lcm8gRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW5wdXRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke1guZXhwZWN0ZWR9LCByaWNldnV0byAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gT3B6aW9uZSBub24gdmFsaWRhOiBhdHRlc28gdW5vIHRyYSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUcm9wcG8gZ3JhbmRlOiAke1gub3JpZ2luPz9cInZhbG9yZVwifSBkZXZlIGF2ZXJlICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50aVwifWA7cmV0dXJuYFRyb3BwbyBncmFuZGU6ICR7WC5vcmlnaW4/P1widmFsb3JlXCJ9IGRldmUgZXNzZXJlICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRyb3BwbyBwaWNjb2xvOiAke1gub3JpZ2lufSBkZXZlIGF2ZXJlICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBUcm9wcG8gcGljY29sbzogJHtYLm9yaWdpbn0gZGV2ZSBlc3NlcmUgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5pemlhcmUgY29uIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgdGVybWluYXJlIGNvbiBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5jbHVkZXJlIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGNvcnJpc3BvbmRlcmUgYWwgcGF0dGVybiAke1cucGF0dGVybn1gO3JldHVybmBJbnZhbGlkICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYENoaWF2JHtYLmtleXMubGVuZ3RoPjE/XCJpXCI6XCJlXCJ9IG5vbiByaWNvbm9zY2l1dCR7WC5rZXlzLmxlbmd0aD4xP1wiZVwiOlwiYVwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gQ2hpYXZlIG5vbiB2YWxpZGEgaW4gJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIklucHV0IG5vbiB2YWxpZG9cIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVmFsb3JlIG5vbiB2YWxpZG8gaW4gJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJJbnB1dCBub24gdmFsaWRvXCJ9fX07ZnVuY3Rpb24gTHEoKXtyZXR1cm57bG9jYWxlRXJyb3I6UHUoKX19dmFyIEV1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1NjU4N1x1NUI1N1wiLHZlcmI6XCJcdTMwNjdcdTMwNDJcdTMwOEJcIn0sZmlsZTp7dW5pdDpcIlx1MzBEMFx1MzBBNFx1MzBDOFwiLHZlcmI6XCJcdTMwNjdcdTMwNDJcdTMwOEJcIn0sYXJyYXk6e3VuaXQ6XCJcdTg5ODFcdTdEMjBcIix2ZXJiOlwiXHUzMDY3XHUzMDQyXHUzMDhCXCJ9LHNldDp7dW5pdDpcIlx1ODk4MVx1N0QyMFwiLHZlcmI6XCJcdTMwNjdcdTMwNDJcdTMwOEJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1NjU3MFx1NTAyNFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHU5MTREXHU1MjE3XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTUxNjVcdTUyOUJcdTUwMjRcIixlbWFpbDpcIlx1MzBFMVx1MzBGQ1x1MzBFQlx1MzBBMlx1MzBDOVx1MzBFQ1x1MzBCOVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHU3RDc1XHU2NTg3XHU1QjU3XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPXHU2NUU1XHU2NjQyXCIsZGF0ZTpcIklTT1x1NjVFNVx1NEVEOFwiLHRpbWU6XCJJU09cdTY2NDJcdTUyM0JcIixkdXJhdGlvbjpcIklTT1x1NjcxRlx1OTU5M1wiLGlwdjQ6XCJJUHY0XHUzMEEyXHUzMEM5XHUzMEVDXHUzMEI5XCIsaXB2NjpcIklQdjZcdTMwQTJcdTMwQzlcdTMwRUNcdTMwQjlcIixjaWRydjQ6XCJJUHY0XHU3QkM0XHU1NkYyXCIsY2lkcnY2OlwiSVB2Nlx1N0JDNFx1NTZGMlwiLGJhc2U2NDpcImJhc2U2NFx1MzBBOFx1MzBGM1x1MzBCM1x1MzBGQ1x1MzBDOVx1NjU4N1x1NUI1N1x1NTIxN1wiLGJhc2U2NHVybDpcImJhc2U2NHVybFx1MzBBOFx1MzBGM1x1MzBCM1x1MzBGQ1x1MzBDOVx1NjU4N1x1NUI1N1x1NTIxN1wiLGpzb25fc3RyaW5nOlwiSlNPTlx1NjU4N1x1NUI1N1x1NTIxN1wiLGUxNjQ6XCJFLjE2NFx1NzU2QVx1NTNGN1wiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTUxNjVcdTUyOUJcdTUwMjRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NTE2NVx1NTI5QjogJHtYLmV4cGVjdGVkfVx1MzA0Q1x1NjcxRlx1NUY4NVx1MzA1NVx1MzA4Q1x1MzA3RVx1MzA1N1x1MzA1Rlx1MzA0Q1x1MzAwMSR7SihYLmlucHV0KX1cdTMwNENcdTUxNjVcdTUyOUJcdTMwNTVcdTMwOENcdTMwN0VcdTMwNTdcdTMwNUZgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTcxMjFcdTUyQjlcdTMwNkFcdTUxNjVcdTUyOUI6ICR7eChYLnZhbHVlc1swXSl9XHUzMDRDXHU2NzFGXHU1Rjg1XHUzMDU1XHUzMDhDXHUzMDdFXHUzMDU3XHUzMDVGYDtyZXR1cm5gXHU3MTIxXHU1MkI5XHUzMDZBXHU5MDc4XHU2MjlFOiAke1AoWC52YWx1ZXMsXCJcdTMwMDFcIil9XHUzMDZFXHUzMDQ0XHUzMDVBXHUzMDhDXHUzMDRCXHUzMDY3XHUzMDQyXHUzMDhCXHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiXHU0RUU1XHU0RTBCXHUzMDY3XHUzMDQyXHUzMDhCXCI6XCJcdTMwODhcdTMwOEFcdTVDMEZcdTMwNTVcdTMwNDRcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1NTkyN1x1MzA0RFx1MzA1OVx1MzA0RVx1MzA4Qlx1NTAyNDogJHtYLm9yaWdpbj8/XCJcdTUwMjRcIn1cdTMwNkYke1gubWF4aW11bS50b1N0cmluZygpfSR7Ry51bml0Pz9cIlx1ODk4MVx1N0QyMFwifSR7V31cdTVGQzVcdTg5ODFcdTMwNENcdTMwNDJcdTMwOEFcdTMwN0VcdTMwNTlgO3JldHVybmBcdTU5MjdcdTMwNERcdTMwNTlcdTMwNEVcdTMwOEJcdTUwMjQ6ICR7WC5vcmlnaW4/P1wiXHU1MDI0XCJ9XHUzMDZGJHtYLm1heGltdW0udG9TdHJpbmcoKX0ke1d9XHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdTRFRTVcdTRFMEFcdTMwNjdcdTMwNDJcdTMwOEJcIjpcIlx1MzA4OFx1MzA4QVx1NTkyN1x1MzA0RFx1MzA0NFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHU1QzBGXHUzMDU1XHUzMDU5XHUzMDRFXHUzMDhCXHU1MDI0OiAke1gub3JpZ2lufVx1MzA2RiR7WC5taW5pbXVtLnRvU3RyaW5nKCl9JHtHLnVuaXR9JHtXfVx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7cmV0dXJuYFx1NUMwRlx1MzA1NVx1MzA1OVx1MzA0RVx1MzA4Qlx1NTAyNDogJHtYLm9yaWdpbn1cdTMwNkYke1gubWluaW11bS50b1N0cmluZygpfSR7V31cdTVGQzVcdTg5ODFcdTMwNENcdTMwNDJcdTMwOEFcdTMwN0VcdTMwNTlgfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NjU4N1x1NUI1N1x1NTIxNzogXCIke1cucHJlZml4fVwiXHUzMDY3XHU1OUNCXHUzMDdFXHUzMDhCXHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NjU4N1x1NUI1N1x1NTIxNzogXCIke1cuc3VmZml4fVwiXHUzMDY3XHU3RDQyXHUzMDhGXHUzMDhCXHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHU3MTIxXHU1MkI5XHUzMDZBXHU2NTg3XHU1QjU3XHU1MjE3OiBcIiR7Vy5pbmNsdWRlc31cIlx1MzA5Mlx1NTQyQlx1MzA4MFx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NjU4N1x1NUI1N1x1NTIxNzogXHUzMEQxXHUzMEJGXHUzMEZDXHUzMEYzJHtXLnBhdHRlcm59XHUzMDZCXHU0RTAwXHU4MUY0XHUzMDU5XHUzMDhCXHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtyZXR1cm5gXHU3MTIxXHU1MkI5XHUzMDZBJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHU3MTIxXHU1MkI5XHUzMDZBXHU2NTcwXHU1MDI0OiAke1guZGl2aXNvcn1cdTMwNkVcdTUwMERcdTY1NzBcdTMwNjdcdTMwNDJcdTMwOEJcdTVGQzVcdTg5ODFcdTMwNENcdTMwNDJcdTMwOEFcdTMwN0VcdTMwNTlgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1OEE4RFx1OEI1OFx1MzA1NVx1MzA4Q1x1MzA2Nlx1MzA0NFx1MzA2QVx1MzA0NFx1MzBBRFx1MzBGQyR7WC5rZXlzLmxlbmd0aD4xP1wiXHU3RkE0XCI6XCJcIn06ICR7UChYLmtleXMsXCJcdTMwMDFcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1gub3JpZ2lufVx1NTE4NVx1MzA2RVx1NzEyMVx1NTJCOVx1MzA2QVx1MzBBRFx1MzBGQ2A7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHU3MTIxXHU1MkI5XHUzMDZBXHU1MTY1XHU1MjlCXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59XHU1MTg1XHUzMDZFXHU3MTIxXHU1MkI5XHUzMDZBXHU1MDI0YDtkZWZhdWx0OnJldHVyblwiXHU3MTIxXHU1MkI5XHUzMDZBXHU1MTY1XHU1MjlCXCJ9fX07ZnVuY3Rpb24ganEoKXtyZXR1cm57bG9jYWxlRXJyb3I6RXUoKX19dmFyIGJ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MTc4Rlx1MTdCRFx1MTdBMlx1MTc4MFx1MTdEMlx1MTc5Rlx1MTc5QVwiLHZlcmI6XCJcdTE3ODJcdTE3QkRcdTE3OUFcdTE3OThcdTE3QjZcdTE3OTNcIn0sZmlsZTp7dW5pdDpcIlx1MTc5NFx1MTdDM1wiLHZlcmI6XCJcdTE3ODJcdTE3QkRcdTE3OUFcdTE3OThcdTE3QjZcdTE3OTNcIn0sYXJyYXk6e3VuaXQ6XCJcdTE3OTJcdTE3QjZcdTE3OEZcdTE3QkJcIix2ZXJiOlwiXHUxNzgyXHUxN0JEXHUxNzlBXHUxNzk4XHUxN0I2XHUxNzkzXCJ9LHNldDp7dW5pdDpcIlx1MTc5Mlx1MTdCNlx1MTc4Rlx1MTdCQlwiLHZlcmI6XCJcdTE3ODJcdTE3QkRcdTE3OUFcdTE3OThcdTE3QjZcdTE3OTNcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJcdTE3OThcdTE3QjdcdTE3OTNcdTE3OThcdTE3QzJcdTE3OTNcdTE3ODdcdTE3QjZcdTE3OUJcdTE3QzFcdTE3ODEgKE5hTilcIjpcIlx1MTc5Qlx1MTdDMVx1MTc4MVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUxN0EyXHUxN0I2XHUxNzlBXHUxN0MxIChBcnJheSlcIjtpZihYPT09bnVsbClyZXR1cm5cIlx1MTc4Mlx1MTdEMlx1MTc5OFx1MTdCNlx1MTc5M1x1MTc4Rlx1MTc5OFx1MTdEMlx1MTc5Qlx1MTdDMyAobnVsbClcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5NFx1MTc4OVx1MTdEMlx1MTc4NVx1MTdCQ1x1MTc5QlwiLGVtYWlsOlwiXHUxN0EyXHUxN0I2XHUxNzlGXHUxNzk5XHUxNzhBXHUxN0QyXHUxNzhCXHUxN0I2XHUxNzkzXHUxN0EyXHUxN0NBXHUxN0I4XHUxNzk4XHUxN0MyXHUxNzlCXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJcdTE3OUZcdTE3ODlcdTE3RDJcdTE3ODlcdTE3QjZcdTE3QTJcdTE3QjZcdTE3OUFcdTE3OThcdTE3RDJcdTE3OThcdTE3OEVcdTE3Q0RcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJcdTE3ODBcdTE3QjZcdTE3OUJcdTE3OTRcdTE3OUFcdTE3QjdcdTE3ODVcdTE3RDJcdTE3ODZcdTE3QzFcdTE3OTEgXHUxNzkzXHUxN0I3XHUxNzg0XHUxNzk4XHUxN0M5XHUxN0M0XHUxNzg0IElTT1wiLGRhdGU6XCJcdTE3ODBcdTE3QjZcdTE3OUJcdTE3OTRcdTE3OUFcdTE3QjdcdTE3ODVcdTE3RDJcdTE3ODZcdTE3QzFcdTE3OTEgSVNPXCIsdGltZTpcIlx1MTc5OFx1MTdDOVx1MTdDNFx1MTc4NCBJU09cIixkdXJhdGlvbjpcIlx1MTc5QVx1MTc5OVx1MTdDOFx1MTc5Nlx1MTdDMVx1MTc5QiBJU09cIixpcHY0OlwiXHUxN0EyXHUxN0I2XHUxNzlGXHUxNzk5XHUxNzhBXHUxN0QyXHUxNzhCXHUxN0I2XHUxNzkzIElQdjRcIixpcHY2OlwiXHUxN0EyXHUxN0I2XHUxNzlGXHUxNzk5XHUxNzhBXHUxN0QyXHUxNzhCXHUxN0I2XHUxNzkzIElQdjZcIixjaWRydjQ6XCJcdTE3OEFcdTE3QzJcdTE3OTNcdTE3QTJcdTE3QjZcdTE3OUZcdTE3OTlcdTE3OEFcdTE3RDJcdTE3OEJcdTE3QjZcdTE3OTMgSVB2NFwiLGNpZHJ2NjpcIlx1MTc4QVx1MTdDMlx1MTc5M1x1MTdBMlx1MTdCNlx1MTc5Rlx1MTc5OVx1MTc4QVx1MTdEMlx1MTc4Qlx1MTdCNlx1MTc5MyBJUHY2XCIsYmFzZTY0OlwiXHUxNzgxXHUxN0QyXHUxNzlGXHUxN0MyXHUxN0EyXHUxNzgwXHUxN0QyXHUxNzlGXHUxNzlBXHUxN0EyXHUxN0NBXHUxN0I3XHUxNzgwXHUxN0JDXHUxNzhBIGJhc2U2NFwiLGJhc2U2NHVybDpcIlx1MTc4MVx1MTdEMlx1MTc5Rlx1MTdDMlx1MTdBMlx1MTc4MFx1MTdEMlx1MTc5Rlx1MTc5QVx1MTdBMlx1MTdDQVx1MTdCN1x1MTc4MFx1MTdCQ1x1MTc4QSBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcIlx1MTc4MVx1MTdEMlx1MTc5Rlx1MTdDMlx1MTdBMlx1MTc4MFx1MTdEMlx1MTc5Rlx1MTc5QSBKU09OXCIsZTE2NDpcIlx1MTc5Qlx1MTdDMVx1MTc4MSBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OTRcdTE3ODlcdTE3RDJcdTE3ODVcdTE3QkNcdTE3OUJcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5NFx1MTc4OVx1MTdEMlx1MTc4NVx1MTdCQ1x1MTc5Qlx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTdENiBcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3ODBcdTE3QjZcdTE3OUEgJHtYLmV4cGVjdGVkfSBcdTE3OTRcdTE3QzlcdTE3QkJcdTE3OTNcdTE3RDJcdTE3OEZcdTE3QzJcdTE3OTFcdTE3OTFcdTE3QkRcdTE3OUJcdTE3OTRcdTE3QjZcdTE3OTMgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5NFx1MTc4OVx1MTdEMlx1MTc4NVx1MTdCQ1x1MTc5Qlx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTdENiBcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3ODBcdTE3QjZcdTE3OUEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTE3ODdcdTE3OThcdTE3RDJcdTE3OUFcdTE3QkVcdTE3OUZcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzg3XHUxN0I2XHUxNzk4XHUxN0JEXHUxNzk5XHUxNzgwXHUxN0QyXHUxNzkzXHUxN0JCXHUxNzg0XHUxNzg1XHUxN0M2XHUxNzhFXHUxN0M0XHUxNzk4ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MTc5Mlx1MTdDNlx1MTc5Nlx1MTdDMVx1MTc4MFx1MTdENiBcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3ODBcdTE3QjZcdTE3OUEgJHtYLm9yaWdpbj8/XCJcdTE3OEZcdTE3OThcdTE3RDJcdTE3OUJcdTE3QzNcIn0gJHtXfSAke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTE3OTJcdTE3QjZcdTE3OEZcdTE3QkJcIn1gO3JldHVybmBcdTE3OTJcdTE3QzZcdTE3OTZcdTE3QzFcdTE3ODBcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzgwXHUxN0I2XHUxNzlBICR7WC5vcmlnaW4/P1wiXHUxNzhGXHUxNzk4XHUxN0QyXHUxNzlCXHUxN0MzXCJ9ICR7V30gJHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTE3OEZcdTE3QkNcdTE3ODVcdTE3OTZcdTE3QzFcdTE3ODBcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzgwXHUxN0I2XHUxNzlBICR7WC5vcmlnaW59ICR7V30gJHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gXHUxNzhGXHUxN0JDXHUxNzg1XHUxNzk2XHUxN0MxXHUxNzgwXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4MFx1MTdCNlx1MTc5QSAke1gub3JpZ2lufSAke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzg1XHUxN0I2XHUxNzk0XHUxN0NCXHUxNzk1XHUxN0QyXHUxNzhGXHUxN0JFXHUxNzk4XHUxNzhBXHUxN0M0XHUxNzk5IFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzk0XHUxNzg5XHUxN0QyXHUxNzg1XHUxNzk0XHUxN0NCXHUxNzhBXHUxN0M0XHUxNzk5IFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MTc4MVx1MTdEMlx1MTc5Rlx1MTdDMlx1MTdBMlx1MTc4MFx1MTdEMlx1MTc5Rlx1MTc5QVx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTdENiBcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3OThcdTE3QjZcdTE3OTMgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzhGXHUxN0MyXHUxNzk1XHUxN0QyXHUxNzgyXHUxN0JDXHUxNzk1XHUxN0QyXHUxNzgyXHUxNzg0XHUxNzkzXHUxN0I5XHUxNzg0XHUxNzkxXHUxNzk4XHUxN0QyXHUxNzlBXHUxNzg0XHUxN0NCXHUxNzhBXHUxN0MyXHUxNzlCXHUxNzk0XHUxN0I2XHUxNzkzXHUxNzgwXHUxN0M2XHUxNzhFXHUxNzhGXHUxN0NCICR7Vy5wYXR0ZXJufWA7cmV0dXJuYFx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTdENiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTE3OUJcdTE3QzFcdTE3ODFcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzhGXHUxN0MyXHUxNzg3XHUxN0I2XHUxNzk2XHUxN0EwXHUxN0JCXHUxNzgyXHUxN0JCXHUxNzhFXHUxNzkzXHUxN0MzICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUxNzlBXHUxNzgwXHUxNzgzXHUxN0JFXHUxNzg5XHUxNzlGXHUxN0M0XHUxNzk4XHUxN0I3XHUxNzkzXHUxNzlGXHUxN0QyXHUxNzgyXHUxN0I2XHUxNzlCXHUxN0NCXHUxN0Q2ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MTc5Rlx1MTdDNFx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc5M1x1MTdDNVx1MTc4MFx1MTdEMlx1MTc5M1x1MTdCQlx1MTc4NCAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUxNzkxXHUxN0I3XHUxNzkzXHUxN0QyXHUxNzkzXHUxNzkzXHUxN0QwXHUxNzk5XHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc5M1x1MTdDNVx1MTc4MFx1MTdEMlx1MTc5M1x1MTdCQlx1MTc4NCAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1wifX19O2Z1bmN0aW9uIEFxKCl7cmV0dXJue2xvY2FsZUVycm9yOmJ1KCl9fXZhciBfdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdUJCMzhcdUM3OTBcIix2ZXJiOlwidG8gaGF2ZVwifSxmaWxlOnt1bml0OlwiXHVCQzE0XHVDNzc0XHVEMkI4XCIsdmVyYjpcInRvIGhhdmVcIn0sYXJyYXk6e3VuaXQ6XCJcdUFDMUNcIix2ZXJiOlwidG8gaGF2ZVwifSxzZXQ6e3VuaXQ6XCJcdUFDMUNcIix2ZXJiOlwidG8gaGF2ZVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHVDNzg1XHVCODI1XCIsZW1haWw6XCJcdUM3NzRcdUJBNTRcdUM3N0MgXHVDOEZDXHVDMThDXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJcdUM3NzRcdUJBQThcdUM5QzBcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gXHVCMEEwXHVDOURDXHVDMkRDXHVBQzA0XCIsZGF0ZTpcIklTTyBcdUIwQTBcdUM5RENcIix0aW1lOlwiSVNPIFx1QzJEQ1x1QUMwNFwiLGR1cmF0aW9uOlwiSVNPIFx1QUUzMFx1QUMwNFwiLGlwdjQ6XCJJUHY0IFx1QzhGQ1x1QzE4Q1wiLGlwdjY6XCJJUHY2IFx1QzhGQ1x1QzE4Q1wiLGNpZHJ2NDpcIklQdjQgXHVCQzk0XHVDNzA0XCIsY2lkcnY2OlwiSVB2NiBcdUJDOTRcdUM3MDRcIixiYXNlNjQ6XCJiYXNlNjQgXHVDNzc4XHVDRjU0XHVCNTI5IFx1QkIzOFx1Qzc5MFx1QzVGNFwiLGJhc2U2NHVybDpcImJhc2U2NHVybCBcdUM3NzhcdUNGNTRcdUI1MjkgXHVCQjM4XHVDNzkwXHVDNUY0XCIsanNvbl9zdHJpbmc6XCJKU09OIFx1QkIzOFx1Qzc5MFx1QzVGNFwiLGUxNjQ6XCJFLjE2NCBcdUJDODhcdUQ2MzhcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHVDNzg1XHVCODI1XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVDNzg1XHVCODI1OiBcdUM2MDhcdUMwQzEgXHVEMEMwXHVDNzg1XHVDNzQwICR7WC5leHBlY3RlZH0sIFx1QkMxQlx1Qzc0MCBcdUQwQzBcdUM3ODVcdUM3NDAgJHtKKFguaW5wdXQpfVx1Qzc4NVx1QjJDOFx1QjJFNGA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyBcdUM3ODVcdUI4MjU6IFx1QUMxMlx1Qzc0MCAke3goWC52YWx1ZXNbMF0pfSBcdUM3NzRcdUM1QjRcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0YDtyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QzYzNVx1QzE1ODogJHtQKFgudmFsdWVzLFwiXHVCNjEwXHVCMjk0IFwiKX0gXHVDOTExIFx1RDU1OFx1QjA5OFx1QzVFQ1x1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRgO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdUM3NzRcdUQ1NThcIjpcIlx1QkJGOFx1QjlDQ1wiLEc9Vz09PVwiXHVCQkY4XHVCOUNDXCI/XCJcdUM3NzRcdUM1QjRcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0XCI6XCJcdUM1RUNcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0XCIsVT1RKFgub3JpZ2luKSxIPVU/LnVuaXQ/P1wiXHVDNjk0XHVDMThDXCI7aWYoVSlyZXR1cm5gJHtYLm9yaWdpbj8/XCJcdUFDMTJcIn1cdUM3NzQgXHVCMTA4XHVCQjM0IFx1RDA3RFx1QjJDOFx1QjJFNDogJHtYLm1heGltdW0udG9TdHJpbmcoKX0ke0h9ICR7V30ke0d9YDtyZXR1cm5gJHtYLm9yaWdpbj8/XCJcdUFDMTJcIn1cdUM3NzQgXHVCMTA4XHVCQjM0IFx1RDA3RFx1QjJDOFx1QjJFNDogJHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtXfSR7R31gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIlx1Qzc3NFx1QzBDMVwiOlwiXHVDRDA4XHVBQ0ZDXCIsRz1XPT09XCJcdUM3NzRcdUMwQzFcIj9cIlx1Qzc3NFx1QzVCNFx1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRcIjpcIlx1QzVFQ1x1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRcIixVPVEoWC5vcmlnaW4pLEg9VT8udW5pdD8/XCJcdUM2OTRcdUMxOENcIjtpZihVKXJldHVybmAke1gub3JpZ2luPz9cIlx1QUMxMlwifVx1Qzc3NCBcdUIxMDhcdUJCMzQgXHVDNzkxXHVDMkI1XHVCMkM4XHVCMkU0OiAke1gubWluaW11bS50b1N0cmluZygpfSR7SH0gJHtXfSR7R31gO3JldHVybmAke1gub3JpZ2luPz9cIlx1QUMxMlwifVx1Qzc3NCBcdUIxMDhcdUJCMzQgXHVDNzkxXHVDMkI1XHVCMkM4XHVCMkU0OiAke1gubWluaW11bS50b1N0cmluZygpfSAke1d9JHtHfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QkIzOFx1Qzc5MFx1QzVGNDogXCIke1cucHJlZml4fVwiKFx1QzczQylcdUI4NUMgXHVDMkRDXHVDNzkxXHVENTc0XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVCQjM4XHVDNzkwXHVDNUY0OiBcIiR7Vy5zdWZmaXh9XCIoXHVDNzNDKVx1Qjg1QyBcdUIwNURcdUIwOThcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0YDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QkIzOFx1Qzc5MFx1QzVGNDogXCIke1cuaW5jbHVkZXN9XCJcdUM3NDQoXHVCOTdDKSBcdUQzRUNcdUQ1NjhcdUQ1NzRcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0YDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QkIzOFx1Qzc5MFx1QzVGNDogXHVDODE1XHVBRERDXHVDMkREICR7Vy5wYXR0ZXJufSBcdUQzMjhcdUQxMzRcdUFDRkMgXHVDNzdDXHVDRTU4XHVENTc0XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7cmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVDMjJCXHVDNzkwOiAke1guZGl2aXNvcn1cdUM3NTggXHVCQzMwXHVDMjE4XHVDNUVDXHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHVDNzc4XHVDMkREXHVENTYwIFx1QzIxOCBcdUM1QzZcdUIyOTQgXHVEMEE0OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVEMEE0OiAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHVDNzk4XHVCQUJCXHVCNDFDIFx1Qzc4NVx1QjgyNVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVBQzEyOiAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1Qzc5OFx1QkFCQlx1QjQxQyBcdUM3ODVcdUI4MjVcIn19fTtmdW5jdGlvbiBJcSgpe3JldHVybntsb2NhbGVFcnJvcjpfdSgpfX12YXIgU3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ2XHUwNDM4XCIsdmVyYjpcIlx1MDQzNFx1MDQzMCBcdTA0MzhcdTA0M0NcdTA0MzBcdTA0MzBcdTA0NDJcIn0sZmlsZTp7dW5pdDpcIlx1MDQzMVx1MDQzMFx1MDQ1OFx1MDQ0Mlx1MDQzOFwiLHZlcmI6XCJcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwXHUwNDMwXHUwNDQyXCJ9LGFycmF5Ont1bml0OlwiXHUwNDQxXHUwNDQyXHUwNDMwXHUwNDMyXHUwNDNBXHUwNDM4XCIsdmVyYjpcIlx1MDQzNFx1MDQzMCBcdTA0MzhcdTA0M0NcdTA0MzBcdTA0MzBcdTA0NDJcIn0sc2V0Ont1bml0OlwiXHUwNDQxXHUwNDQyXHUwNDMwXHUwNDMyXHUwNDNBXHUwNDM4XCIsdmVyYjpcIlx1MDQzNFx1MDQzMCBcdTA0MzhcdTA0M0NcdTA0MzBcdTA0MzBcdTA0NDJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDQzMVx1MDQ0MFx1MDQzRVx1MDQ1OFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUwNDNEXHUwNDM4XHUwNDM3XHUwNDMwXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA0MzJcdTA0M0RcdTA0MzVcdTA0NDFcIixlbWFpbDpcIlx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMCBcdTA0M0RcdTA0MzAgXHUwNDM1LVx1MDQzRlx1MDQzRVx1MDQ0OFx1MDQ0Mlx1MDQzMFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHUwNDM1XHUwNDNDXHUwNDNFXHUwNDVGXHUwNDM4XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIFx1MDQzNFx1MDQzMFx1MDQ0Mlx1MDQ0M1x1MDQzQyBcdTA0MzggXHUwNDMyXHUwNDQwXHUwNDM1XHUwNDNDXHUwNDM1XCIsZGF0ZTpcIklTTyBcdTA0MzRcdTA0MzBcdTA0NDJcdTA0NDNcdTA0M0NcIix0aW1lOlwiSVNPIFx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQzNVwiLGR1cmF0aW9uOlwiSVNPIFx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzNVx1MDQ1QVx1MDQzNVwiLGlwdjQ6XCJJUHY0IFx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMFwiLGlwdjY6XCJJUHY2IFx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMFwiLGNpZHJ2NDpcIklQdjQgXHUwNDNFXHUwNDNGXHUwNDQxXHUwNDM1XHUwNDMzXCIsY2lkcnY2OlwiSVB2NiBcdTA0M0VcdTA0M0ZcdTA0NDFcdTA0MzVcdTA0MzNcIixiYXNlNjQ6XCJiYXNlNjQtXHUwNDM1XHUwNDNEXHUwNDNBXHUwNDNFXHUwNDM0XHUwNDM4XHUwNDQwXHUwNDMwXHUwNDNEXHUwNDMwIFx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMFwiLGJhc2U2NHVybDpcImJhc2U2NHVybC1cdTA0MzVcdTA0M0RcdTA0M0FcdTA0M0VcdTA0MzRcdTA0MzhcdTA0NDBcdTA0MzBcdTA0M0RcdTA0MzAgXHUwNDNEXHUwNDM4XHUwNDM3XHUwNDMwXCIsanNvbl9zdHJpbmc6XCJKU09OIFx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMFwiLGUxNjQ6XCJFLjE2NCBcdTA0MzFcdTA0NDBcdTA0M0VcdTA0NThcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNDMyXHUwNDNEXHUwNDM1XHUwNDQxXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzVcdTA0M0QgXHUwNDMyXHUwNDNEXHUwNDM1XHUwNDQxOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwICR7WC5leHBlY3RlZH0sIFx1MDQzRlx1MDQ0MFx1MDQzOFx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQzRSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzBcdTA0M0RcdTA0MzAgXHUwNDNFXHUwNDNGXHUwNDQ2XHUwNDM4XHUwNDU4XHUwNDMwOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwIFx1MDQzNVx1MDQzNFx1MDQzRFx1MDQzMCAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA0MUZcdTA0NDBcdTA0MzVcdTA0M0NcdTA0M0RcdTA0M0VcdTA0MzNcdTA0NDMgXHUwNDMzXHUwNDNFXHUwNDNCXHUwNDM1XHUwNDNDOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwICR7WC5vcmlnaW4/P1wiXHUwNDMyXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDNEXHUwNDNFXHUwNDQxXHUwNDQyXHUwNDMwXCJ9IFx1MDQzNFx1MDQzMCBcdTA0MzhcdTA0M0NcdTA0MzAgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDQzNVx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQzOFwifWA7cmV0dXJuYFx1MDQxRlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQzRFx1MDQzRVx1MDQzM1x1MDQ0MyBcdTA0MzNcdTA0M0VcdTA0M0JcdTA0MzVcdTA0M0M6IFx1MDQ0MVx1MDQzNSBcdTA0M0VcdTA0NDdcdTA0MzVcdTA0M0FcdTA0NDNcdTA0MzJcdTA0MzAgJHtYLm9yaWdpbj8/XCJcdTA0MzJcdTA0NDBcdTA0MzVcdTA0MzRcdTA0M0RcdTA0M0VcdTA0NDFcdTA0NDJcdTA0MzBcIn0gXHUwNDM0XHUwNDMwIFx1MDQzMVx1MDQzOFx1MDQzNFx1MDQzNSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA0MUZcdTA0NDBcdTA0MzVcdTA0M0NcdTA0M0RcdTA0M0VcdTA0MzNcdTA0NDMgXHUwNDNDXHUwNDMwXHUwNDNCOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwICR7WC5vcmlnaW59IFx1MDQzNFx1MDQzMCBcdTA0MzhcdTA0M0NcdTA0MzAgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1MDQxRlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQzRFx1MDQzRVx1MDQzM1x1MDQ0MyBcdTA0M0NcdTA0MzBcdTA0M0I6IFx1MDQ0MVx1MDQzNSBcdTA0M0VcdTA0NDdcdTA0MzVcdTA0M0FcdTA0NDNcdTA0MzJcdTA0MzAgJHtYLm9yaWdpbn0gXHUwNDM0XHUwNDMwIFx1MDQzMVx1MDQzOFx1MDQzNFx1MDQzNSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzMFx1MDQzNlx1MDQzNVx1MDQ0N1x1MDQzQVx1MDQzMCBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzA6IFx1MDQzQ1x1MDQzRVx1MDQ0MFx1MDQzMCBcdTA0MzRcdTA0MzAgXHUwNDM3XHUwNDMwXHUwNDNGXHUwNDNFXHUwNDQ3XHUwNDNEXHUwNDQzXHUwNDMyXHUwNDMwIFx1MDQ0MVx1MDQzRSBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDMwXHUwNDM2XHUwNDM1XHUwNDQ3XHUwNDNBXHUwNDMwIFx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMDogXHUwNDNDXHUwNDNFXHUwNDQwXHUwNDMwIFx1MDQzNFx1MDQzMCBcdTA0MzdcdTA0MzBcdTA0MzJcdTA0NDBcdTA0NDhcdTA0NDNcdTA0MzJcdTA0MzAgXHUwNDQxXHUwNDNFIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzMFx1MDQzNlx1MDQzNVx1MDQ0N1x1MDQzQVx1MDQzMCBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzA6IFx1MDQzQ1x1MDQzRVx1MDQ0MFx1MDQzMCBcdTA0MzRcdTA0MzAgXHUwNDMyXHUwNDNBXHUwNDNCXHUwNDQzXHUwNDQ3XHUwNDQzXHUwNDMyXHUwNDMwIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDMwXHUwNDM2XHUwNDM1XHUwNDQ3XHUwNDNBXHUwNDMwIFx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMDogXHUwNDNDXHUwNDNFXHUwNDQwXHUwNDMwIFx1MDQzNFx1MDQzMCBcdTA0M0VcdTA0MzRcdTA0MzNcdTA0M0VcdTA0MzBcdTA0NDBcdTA0MzAgXHUwNDNEXHUwNDMwIFx1MDQzRlx1MDQzMFx1MDQ0Mlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQzRVx1MDQ0MiAke1cucGF0dGVybn1gO3JldHVybmBJbnZhbGlkICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDQxM1x1MDQ0MFx1MDQzNVx1MDQ0OFx1MDQzNVx1MDQzRCBcdTA0MzFcdTA0NDBcdTA0M0VcdTA0NTg6IFx1MDQzQ1x1MDQzRVx1MDQ0MFx1MDQzMCBcdTA0MzRcdTA0MzAgXHUwNDMxXHUwNDM4XHUwNDM0XHUwNDM1IFx1MDQzNFx1MDQzNVx1MDQzQlx1MDQzOFx1MDQzMiBcdTA0NDFcdTA0M0UgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmAke1gua2V5cy5sZW5ndGg+MT9cIlx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzNVx1MDQzRlx1MDQzRVx1MDQzN1x1MDQzRFx1MDQzMFx1MDQzNVx1MDQzRFx1MDQzOCBcdTA0M0FcdTA0M0JcdTA0NDNcdTA0NDdcdTA0MzVcdTA0MzJcdTA0MzhcIjpcIlx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzNVx1MDQzRlx1MDQzRVx1MDQzN1x1MDQzRFx1MDQzMFx1MDQzNVx1MDQzRCBcdTA0M0FcdTA0M0JcdTA0NDNcdTA0NDdcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDQxM1x1MDQ0MFx1MDQzNVx1MDQ0OFx1MDQzNVx1MDQzRCBcdTA0M0FcdTA0M0JcdTA0NDNcdTA0NDcgXHUwNDMyXHUwNDNFICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzVcdTA0M0QgXHUwNDMyXHUwNDNEXHUwNDM1XHUwNDQxXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDQxM1x1MDQ0MFx1MDQzNVx1MDQ0OFx1MDQzRFx1MDQzMCBcdTA0MzJcdTA0NDBcdTA0MzVcdTA0MzRcdTA0M0RcdTA0M0VcdTA0NDFcdTA0NDIgXHUwNDMyXHUwNDNFICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNDEzXHUwNDQwXHUwNDM1XHUwNDQ4XHUwNDM1XHUwNDNEIFx1MDQzMlx1MDQzRFx1MDQzNVx1MDQ0MVwifX19O2Z1bmN0aW9uIFJxKCl7cmV0dXJue2xvY2FsZUVycm9yOlN1KCl9fXZhciBrdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJha3NhcmFcIix2ZXJiOlwibWVtcHVueWFpXCJ9LGZpbGU6e3VuaXQ6XCJiYWl0XCIsdmVyYjpcIm1lbXB1bnlhaVwifSxhcnJheTp7dW5pdDpcImVsZW1lblwiLHZlcmI6XCJtZW1wdW55YWlcIn0sc2V0Ont1bml0OlwiZWxlbWVuXCIsdmVyYjpcIm1lbXB1bnlhaVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibm9tYm9yXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiaW5wdXRcIixlbWFpbDpcImFsYW1hdCBlLW1lbFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJ0YXJpa2ggbWFzYSBJU09cIixkYXRlOlwidGFyaWtoIElTT1wiLHRpbWU6XCJtYXNhIElTT1wiLGR1cmF0aW9uOlwidGVtcG9oIElTT1wiLGlwdjQ6XCJhbGFtYXQgSVB2NFwiLGlwdjY6XCJhbGFtYXQgSVB2NlwiLGNpZHJ2NDpcImp1bGF0IElQdjRcIixjaWRydjY6XCJqdWxhdCBJUHY2XCIsYmFzZTY0Olwic3RyaW5nIGRpa29ka2FuIGJhc2U2NFwiLGJhc2U2NHVybDpcInN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcInN0cmluZyBKU09OXCIsZTE2NDpcIm5vbWJvciBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJpbnB1dFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke1guZXhwZWN0ZWR9LCBkaXRlcmltYSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7WC5vcmlnaW4/P1wibmlsYWlcIn0gJHtHLnZlcmJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW5cIn1gO3JldHVybmBUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke1gub3JpZ2luPz9cIm5pbGFpXCJ9IGFkYWxhaCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke1gub3JpZ2lufSAke0cudmVyYn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7WC5vcmlnaW59IGFkYWxhaCAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJha2hpciBkZW5nYW4gXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgbWVuZ2FuZHVuZ2kgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke1cucGF0dGVybn1gO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0gdGlkYWsgc2FoYH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTm9tYm9yIHRpZGFrIHNhaDogcGVybHUgZ2FuZGFhbiAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpOiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBLdW5jaSB0aWRhayBzYWggZGFsYW0gJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIklucHV0IHRpZGFrIHNhaFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJJbnB1dCB0aWRhayBzYWhcIn19fTtmdW5jdGlvbiBQcSgpe3JldHVybntsb2NhbGVFcnJvcjprdSgpfX12YXIgdnU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwidGVrZW5zXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wifSxhcnJheTp7dW5pdDpcImVsZW1lbnRlblwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50ZW5cIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcImdldGFsXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiaW52b2VyXCIsZW1haWw6XCJlbWFpbGFkcmVzXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBkYXR1bSBlbiB0aWpkXCIsZGF0ZTpcIklTTyBkYXR1bVwiLHRpbWU6XCJJU08gdGlqZFwiLGR1cmF0aW9uOlwiSVNPIGR1dXJcIixpcHY0OlwiSVB2NC1hZHJlc1wiLGlwdjY6XCJJUHY2LWFkcmVzXCIsY2lkcnY0OlwiSVB2NC1iZXJlaWtcIixjaWRydjY6XCJJUHY2LWJlcmVpa1wiLGJhc2U2NDpcImJhc2U2NC1nZWNvZGVlcmRlIHRla3N0XCIsYmFzZTY0dXJsOlwiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0XCIsanNvbl9zdHJpbmc6XCJKU09OIHN0cmluZ1wiLGUxNjQ6XCJFLjE2NC1udW1tZXJcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW52b2VyXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke1guZXhwZWN0ZWR9LCBvbnR2aW5nICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9uZ2VsZGlnZSBvcHRpZTogdmVyd2FjaHQgXHUwMEU5XHUwMEU5biB2YW4gJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVGUgbGFuZzogdmVyd2FjaHQgZGF0ICR7WC5vcmlnaW4/P1wid2FhcmRlXCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50ZW5cIn0gYmV2YXRgO3JldHVybmBUZSBsYW5nOiB2ZXJ3YWNodCBkYXQgJHtYLm9yaWdpbj8/XCJ3YWFyZGVcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVGUga29ydDogdmVyd2FjaHQgZGF0ICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gYmV2YXRgO3JldHVybmBUZSBrb3J0OiB2ZXJ3YWNodCBkYXQgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgbWV0IFwiJHtXLnByZWZpeH1cIiBiZWdpbm5lbmA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3AgXCIke1cuc3VmZml4fVwiIGVpbmRpZ2VuYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gT25nZWxkaWdlIHRla3N0OiBtb2V0IFwiJHtXLmluY2x1ZGVzfVwiIGJldmF0dGVuYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gT25nZWxkaWdlIHRla3N0OiBtb2V0IG92ZXJlZW5rb21lbiBtZXQgcGF0cm9vbiAke1cucGF0dGVybn1gO3JldHVybmBPbmdlbGRpZzogJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gT25nZWxkaWcgZ2V0YWw6IG1vZXQgZWVuIHZlZWx2b3VkIHZhbiAke1guZGl2aXNvcn0gemlqbmA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gT25iZWtlbmRlIGtleSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBPbmdlbGRpZ2Uga2V5IGluICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJPbmdlbGRpZ2UgaW52b2VyXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJPbmdlbGRpZ2UgaW52b2VyXCJ9fX07ZnVuY3Rpb24gRXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6dnUoKX19dmFyIEN1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcInRlZ25cIix2ZXJiOlwiXHUwMEU1IGhhXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wiLHZlcmI6XCJcdTAwRTUgaGFcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50ZXJcIix2ZXJiOlwiXHUwMEU1IGlubmVob2xkZVwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50ZXJcIix2ZXJiOlwiXHUwMEU1IGlubmVob2xkZVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwidGFsbFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwibGlzdGVcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJlLXBvc3RhZHJlc3NlXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBkYXRvLSBvZyBrbG9ra2VzbGV0dFwiLGRhdGU6XCJJU08tZGF0b1wiLHRpbWU6XCJJU08ta2xva2tlc2xldHRcIixkdXJhdGlvbjpcIklTTy12YXJpZ2hldFwiLGlwdjQ6XCJJUHY0LW9tclx1MDBFNWRlXCIsaXB2NjpcIklQdjYtb21yXHUwMEU1ZGVcIixjaWRydjQ6XCJJUHY0LXNwZWt0ZXJcIixjaWRydjY6XCJJUHY2LXNwZWt0ZXJcIixiYXNlNjQ6XCJiYXNlNjQtZW5rb2RldCBzdHJlbmdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmdcIixqc29uX3N0cmluZzpcIkpTT04tc3RyZW5nXCIsZTE2NDpcIkUuMTY0LW51bW1lclwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJpbnB1dFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7WC5leHBlY3RlZH0sIGZpa2sgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFVneWxkaWcgdmVyZGk6IGZvcnZlbnRldCAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFVneWxkaWcgdmFsZzogZm9ydmVudGV0IGVuIGF2ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtYLm9yaWdpbj8/XCJ2YWx1ZVwifSB0aWwgXHUwMEU1IGhhICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50ZXJcIn1gO3JldHVybmBGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7WC5vcmlnaW4/P1widmFsdWVcIn0gdGlsIFx1MDBFNSBoYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7WC5vcmlnaW59IHRpbCBcdTAwRTUgaGEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtYLm9yaWdpbn0gdGlsIFx1MDBFNSBoYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFVneWxkaWcgc3RyZW5nOiBtXHUwMEU1IHN0YXJ0ZSBtZWQgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFVneWxkaWcgc3RyZW5nOiBtXHUwMEU1IGVuZGUgbWVkIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFVneWxkaWcgc3RyZW5nOiBtXHUwMEU1IGlubmVob2xkZSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFVneWxkaWcgc3RyZW5nOiBtXHUwMEU1IG1hdGNoZSBtXHUwMEY4bnN0ZXJldCAke1cucGF0dGVybn1gO3JldHVybmBVZ3lsZGlnICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFVneWxkaWcgdGFsbDogbVx1MDBFNSB2XHUwMEU2cmUgZXQgbXVsdGlwbHVtIGF2ICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gJHtYLmtleXMubGVuZ3RoPjE/XCJVa2plbnRlIG5cdTAwRjhrbGVyXCI6XCJVa2plbnQgblx1MDBGOGtrZWxcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFVneWxkaWcgblx1MDBGOGtrZWwgaSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiVWd5bGRpZyBpbnB1dFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBVZ3lsZGlnIHZlcmRpIGkgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJVZ3lsZGlnIGlucHV0XCJ9fX07ZnVuY3Rpb24gYnEoKXtyZXR1cm57bG9jYWxlRXJyb3I6Q3UoKX19dmFyIFR1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImhhcmZcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxmaWxlOnt1bml0OlwiYmF5dFwiLHZlcmI6XCJvbG1hbFx1MDEzMWRcdTAxMzFyXCJ9LGFycmF5Ont1bml0OlwidW5zdXJcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxzZXQ6e3VuaXQ6XCJ1bnN1clwiLHZlcmI6XCJvbG1hbFx1MDEzMWRcdTAxMzFyXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1hcmFcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInNhZlwiO2lmKFg9PT1udWxsKXJldHVyblwiZ2F5YlwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiZ2lyZW5cIixlbWFpbDpcImVwb3N0YWdcdTAwRTJoXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBoZW5nXHUwMEUybVx1MDEzMVwiLGRhdGU6XCJJU08gdGFyaWhpXCIsdGltZTpcIklTTyB6YW1hblx1MDEzMVwiLGR1cmF0aW9uOlwiSVNPIG1cdTAwRkNkZGV0aVwiLGlwdjQ6XCJJUHY0IG5pXHUwMTVGXHUwMEUyblx1MDEzMVwiLGlwdjY6XCJJUHY2IG5pXHUwMTVGXHUwMEUyblx1MDEzMVwiLGNpZHJ2NDpcIklQdjQgbWVuemlsaVwiLGNpZHJ2NjpcIklQdjYgbWVuemlsaVwiLGJhc2U2NDpcImJhc2U2NC1cdTAxNUZpZnJlbGkgbWV0aW5cIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtXHUwMTVGaWZyZWxpIG1ldGluXCIsanNvbl9zdHJpbmc6XCJKU09OIG1ldGluXCIsZTE2NDpcIkUuMTY0IHNheVx1MDEzMXNcdTAxMzFcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiZ2lyZW5cIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYEZcdTAwRTJzaXQgZ2lyZW46IHVtdWxhbiAke1guZXhwZWN0ZWR9LCBhbFx1MDEzMW5hbiAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gRlx1MDBFMnNpdCBnaXJlbjogdW11bGFuICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gRlx1MDBFMnNpdCB0ZXJjaWg6IG1cdTAwRkJ0ZWJlcmxlciAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBGYXpsYSBiXHUwMEZDeVx1MDBGQ2s6ICR7WC5vcmlnaW4/P1widmFsdWVcIn0sICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50c1wifSBzYWhpcCBvbG1hbFx1MDEzMXlkXHUwMTMxLmA7cmV0dXJuYEZhemxhIGJcdTAwRkN5XHUwMEZDazogJHtYLm9yaWdpbj8/XCJ2YWx1ZVwifSwgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IG9sbWFsXHUwMTMxeWRcdTAxMzEuYH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRmF6bGEga1x1MDBGQ1x1MDBFN1x1MDBGQ2s6ICR7WC5vcmlnaW59LCAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9IHNhaGlwIG9sbWFsXHUwMTMxeWRcdTAxMzEuYDtyZXR1cm5gRmF6bGEga1x1MDBGQ1x1MDBFN1x1MDBGQ2s6ICR7WC5vcmlnaW59LCAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gb2xtYWxcdTAxMzF5ZFx1MDEzMS5gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYEZcdTAwRTJzaXQgbWV0aW46IFwiJHtXLnByZWZpeH1cIiBpbGUgYmFcdTAxNUZsYW1hbFx1MDEzMS5gO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gRlx1MDBFMnNpdCBtZXRpbjogXCIke1cuc3VmZml4fVwiIGlsZSBiaXRtZWxpLmA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYEZcdTAwRTJzaXQgbWV0aW46IFwiJHtXLmluY2x1ZGVzfVwiIGlodGl2XHUwMEUyIGV0bWVsaS5gO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBGXHUwMEUyc2l0IG1ldGluOiAke1cucGF0dGVybn0gbmFrXHUwMTVGXHUwMTMxbmEgdXltYWxcdTAxMzEuYDtyZXR1cm5gRlx1MDBFMnNpdCAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBGXHUwMEUyc2l0IHNheVx1MDEzMTogJHtYLmRpdmlzb3J9IGthdFx1MDEzMSBvbG1hbFx1MDEzMXlkXHUwMTMxLmA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gVGFuXHUwMTMxbm1heWFuIGFuYWh0YXIgJHtYLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IGlcdTAwRTdpbiB0YW5cdTAxMzFubWF5YW4gYW5haHRhciB2YXIuYDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJHaXJlbiB0YW5cdTAxMzFuYW1hZFx1MDEzMS5cIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gJHtYLm9yaWdpbn0gaVx1MDBFN2luIHRhblx1MDEzMW5tYXlhbiBrXHUwMTMxeW1ldCB2YXIuYDtkZWZhdWx0OnJldHVyblwiS1x1MDEzMXltZXQgdGFuXHUwMTMxbmFtYWRcdTAxMzEuXCJ9fX07ZnVuY3Rpb24gX3EoKXtyZXR1cm57bG9jYWxlRXJyb3I6VHUoKX19dmFyIHh1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MDYyQVx1MDY0OFx1MDZBOVx1MDY0QVwiLHZlcmI6XCJcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFcIn0sZmlsZTp7dW5pdDpcIlx1MDYyOFx1MDYyN1x1MDZDQ1x1MDY3Q1x1MDYzM1wiLHZlcmI6XCJcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFcIn0sYXJyYXk6e3VuaXQ6XCJcdTA2MkFcdTA2NDhcdTA2QTlcdTA2NEFcIix2ZXJiOlwiXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBXCJ9LHNldDp7dW5pdDpcIlx1MDYyQVx1MDY0OFx1MDZBOVx1MDY0QVwiLHZlcmI6XCJcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDYzOVx1MDYyRlx1MDYyRlwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUwNjI3XHUwNjMxXHUwNkQwXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2NEFcIixlbWFpbDpcIlx1MDYyOFx1MDYzMVx1MDZDQ1x1MDY5QVx1MDY0Nlx1MDYyN1x1MDY0NFx1MDZDQ1x1MDZBOVwiLHVybDpcIlx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MzEgXHUwNjI3XHUwNjQ0XCIsZW1vamk6XCJcdTA2MjdcdTA2Q0NcdTA2NDVcdTA2NDhcdTA2MkNcdTA2NEFcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJcdTA2NDZcdTA2Q0NcdTA2N0NcdTA2NDcgXHUwNjI3XHUwNjQ4IFx1MDY0OFx1MDYyRVx1MDYyQVwiLGRhdGU6XCJcdTA2NDZcdTA2RDBcdTA2N0NcdTA2NDdcIix0aW1lOlwiXHUwNjQ4XHUwNjJFXHUwNjJBXCIsZHVyYXRpb246XCJcdTA2NDVcdTA2NDhcdTA2MkZcdTA2NDdcIixpcHY0OlwiXHUwNjJGIElQdjQgXHUwNjdFXHUwNjJBXHUwNjQ3XCIsaXB2NjpcIlx1MDYyRiBJUHY2IFx1MDY3RVx1MDYyQVx1MDY0N1wiLGNpZHJ2NDpcIlx1MDYyRiBJUHY0IFx1MDYzM1x1MDYyN1x1MDYyRFx1MDY0N1wiLGNpZHJ2NjpcIlx1MDYyRiBJUHY2IFx1MDYzM1x1MDYyN1x1MDYyRFx1MDY0N1wiLGJhc2U2NDpcImJhc2U2NC1lbmNvZGVkIFx1MDY0NVx1MDYyQVx1MDY0NlwiLGJhc2U2NHVybDpcImJhc2U2NHVybC1lbmNvZGVkIFx1MDY0NVx1MDYyQVx1MDY0NlwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdTA2NDVcdTA2MkFcdTA2NDZcIixlMTY0OlwiXHUwNjJGIEUuMTY0IFx1MDYzNFx1MDY0NVx1MDZEMFx1MDYzMVx1MDY0N1wiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2NEFcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2NEE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1guZXhwZWN0ZWR9IFx1MDY0OFx1MDYyN1x1MDZDQywgXHUwNjQ1XHUwNkFCXHUwNjMxICR7SihYLmlucHV0KX0gXHUwNjJBXHUwNjMxXHUwNjQ0XHUwNjI3XHUwNjMzXHUwNjQ3IFx1MDYzNFx1MDY0OGA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2NEE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke3goWC52YWx1ZXNbMF0pfSBcdTA2NDhcdTA2MjdcdTA2Q0NgO3JldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjI3XHUwNjQ2XHUwNjJBXHUwNjJFXHUwNjI3XHUwNjI4OiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNkNDXHUwNjQ4IFx1MDY0NFx1MDY0NyAke1AoWC52YWx1ZXMsXCJ8XCIpfSBcdTA2ODVcdTA2MkVcdTA2NDcgXHUwNjQ4XHUwNjI3XHUwNkNDYDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDY4OVx1MDZDQ1x1MDYzMSBcdTA2NDRcdTA2NDhcdTA2Q0M6ICR7WC5vcmlnaW4/P1wiXHUwNjI3XHUwNjMxXHUwNjMyXHUwNjlBXHUwNjJBXCJ9IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUwNjM5XHUwNjQ2XHUwNjM1XHUwNjMxXHUwNjQ4XHUwNjQ2XHUwNjQ3XCJ9IFx1MDY0OFx1MDY0NFx1MDYzMVx1MDY0QWA7cmV0dXJuYFx1MDY4OVx1MDZDQ1x1MDYzMSBcdTA2NDRcdTA2NDhcdTA2Q0M6ICR7WC5vcmlnaW4/P1wiXHUwNjI3XHUwNjMxXHUwNjMyXHUwNjlBXHUwNjJBXCJ9IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gXHUwNjQ4XHUwNjRBYH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNjg5XHUwNkNDXHUwNjMxIFx1MDZBOVx1MDY0OFx1MDY4Nlx1MDY0Nlx1MDZDQzogJHtYLm9yaWdpbn0gXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBYDtyZXR1cm5gXHUwNjg5XHUwNkNDXHUwNjMxIFx1MDZBOVx1MDY0OFx1MDY4Nlx1MDY0Nlx1MDZDQzogJHtYLm9yaWdpbn0gXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSBcdTA2NDhcdTA2NEFgfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2NDVcdTA2MkFcdTA2NDY6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MkYgXCIke1cucHJlZml4fVwiIFx1MDYzM1x1MDYzMVx1MDY0NyBcdTA2N0VcdTA2Q0NcdTA2NDQgXHUwNjM0XHUwNjRBYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2NDVcdTA2MkFcdTA2NDY6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MkYgXCIke1cuc3VmZml4fVwiIFx1MDYzM1x1MDYzMVx1MDY0NyBcdTA2N0VcdTA2MjdcdTA2Q0MgXHUwNjJBXHUwNjQ3IFx1MDY0OFx1MDYzMVx1MDYzM1x1MDY0QVx1MDY5Nlx1MDY0QWA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2NDVcdTA2MkFcdTA2NDY6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcIiR7Vy5pbmNsdWRlc31cIiBcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ1XHUwNjJBXHUwNjQ2OiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjJGICR7Vy5wYXR0ZXJufSBcdTA2MzNcdTA2MzFcdTA2NDcgXHUwNjQ1XHUwNjM3XHUwNjI3XHUwNjI4XHUwNjQyXHUwNjJBIFx1MDY0OFx1MDY0NFx1MDYzMVx1MDY0QWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjJGXHUwNkNDYH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1IFx1MDYzOVx1MDYyRlx1MDYyRjogXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGIFx1MDYyRiAke1guZGl2aXNvcn0gXHUwNjQ1XHUwNjM2XHUwNjMxXHUwNjI4IFx1MDY0OFx1MDY0QWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1ICR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNkE5XHUwNjQ0XHUwNkNDXHUwNjg5XHUwNjQ4XHUwNjQ2XHUwNjQ3XCI6XCJcdTA2QTlcdTA2NDRcdTA2Q0NcdTA2ODlcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2QTlcdTA2NDRcdTA2Q0NcdTA2ODkgXHUwNjdFXHUwNjQ3ICR7WC5vcmlnaW59IFx1MDZBOVx1MDZEMGA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1XHUwNjQ3IFx1MDY0OFx1MDYzMVx1MDY0OFx1MDYyRlx1MDY0QVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjM5XHUwNjQ2XHUwNjM1XHUwNjMxIFx1MDY3RVx1MDY0NyAke1gub3JpZ2lufSBcdTA2QTlcdTA2RDBgO2RlZmF1bHQ6cmV0dXJuXCJcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDVcdTA2NDcgXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNjRBXCJ9fX07ZnVuY3Rpb24gU3EoKXtyZXR1cm57bG9jYWxlRXJyb3I6eHUoKX19dmFyIGZ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcInpuYWtcdTAwRjN3XCIsdmVyYjpcIm1pZVx1MDEwN1wifSxmaWxlOnt1bml0OlwiYmFqdFx1MDBGM3dcIix2ZXJiOlwibWllXHUwMTA3XCJ9LGFycmF5Ont1bml0OlwiZWxlbWVudFx1MDBGM3dcIix2ZXJiOlwibWllXHUwMTA3XCJ9LHNldDp7dW5pdDpcImVsZW1lbnRcdTAwRjN3XCIsdmVyYjpcIm1pZVx1MDEwN1wifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibGljemJhXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJ0YWJsaWNhXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJ3eXJhXHUwMTdDZW5pZVwiLGVtYWlsOlwiYWRyZXMgZW1haWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiZGF0YSBpIGdvZHppbmEgdyBmb3JtYWNpZSBJU09cIixkYXRlOlwiZGF0YSB3IGZvcm1hY2llIElTT1wiLHRpbWU6XCJnb2R6aW5hIHcgZm9ybWFjaWUgSVNPXCIsZHVyYXRpb246XCJjemFzIHRyd2FuaWEgSVNPXCIsaXB2NDpcImFkcmVzIElQdjRcIixpcHY2OlwiYWRyZXMgSVB2NlwiLGNpZHJ2NDpcInpha3JlcyBJUHY0XCIsY2lkcnY2OlwiemFrcmVzIElQdjZcIixiYXNlNjQ6XCJjaVx1MDEwNWcgem5ha1x1MDBGM3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NFwiLGJhc2U2NHVybDpcImNpXHUwMTA1ZyB6bmFrXHUwMEYzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJjaVx1MDEwNWcgem5ha1x1MDBGM3cgdyBmb3JtYWNpZSBKU09OXCIsZTE2NDpcImxpY3piYSBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJ3ZWpcdTAxNUJjaWVcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93ZSBkYW5lIHdlalx1MDE1QmNpb3dlOiBvY3pla2l3YW5vICR7WC5leHBlY3RlZH0sIG90cnp5bWFubyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3dlIGRhbmUgd2VqXHUwMTVCY2lvd2U6IG9jemVraXdhbm8gJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBOaWVwcmF3aWRcdTAxNDJvd2Egb3BjamE6IG9jemVraXdhbm8gamVkbmVqIHogd2FydG9cdTAxNUJjaSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBaYSBkdVx1MDE3Q2Egd2FydG9cdTAxNUJcdTAxMDc6IG9jemVraXdhbm8sIFx1MDE3Q2UgJHtYLm9yaWdpbj8/XCJ3YXJ0b1x1MDE1Qlx1MDEwN1wifSBiXHUwMTE5ZHppZSBtaWVcdTAxMDcgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lbnRcdTAwRjN3XCJ9YDtyZXR1cm5gWmJ5dCBkdVx1MDE3Qyh5L2EvZSk6IG9jemVraXdhbm8sIFx1MDE3Q2UgJHtYLm9yaWdpbj8/XCJ3YXJ0b1x1MDE1Qlx1MDEwN1wifSBiXHUwMTE5ZHppZSB3eW5vc2lcdTAxMDcgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gWmEgbWFcdTAxNDJhIHdhcnRvXHUwMTVCXHUwMTA3OiBvY3pla2l3YW5vLCBcdTAxN0NlICR7WC5vcmlnaW4/P1wid2FydG9cdTAxNUJcdTAxMDdcIn0gYlx1MDExOWR6aWUgbWllXHUwMTA3ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50XHUwMEYzd1wifWA7cmV0dXJuYFpieXQgbWFcdTAxNDIoeS9hL2UpOiBvY3pla2l3YW5vLCBcdTAxN0NlICR7WC5vcmlnaW4/P1wid2FydG9cdTAxNUJcdTAxMDdcIn0gYlx1MDExOWR6aWUgd3lub3NpXHUwMTA3ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3d5IGNpXHUwMTA1ZyB6bmFrXHUwMEYzdzogbXVzaSB6YWN6eW5hXHUwMTA3IHNpXHUwMTE5IG9kIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBOaWVwcmF3aWRcdTAxNDJvd3kgY2lcdTAxMDVnIHpuYWtcdTAwRjN3OiBtdXNpIGtvXHUwMTQ0Y3p5XHUwMTA3IHNpXHUwMTE5IG5hIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93eSBjaVx1MDEwNWcgem5ha1x1MDBGM3c6IG11c2kgemF3aWVyYVx1MDEwNyBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93eSBjaVx1MDEwNWcgem5ha1x1MDBGM3c6IG11c2kgb2Rwb3dpYWRhXHUwMTA3IHd6b3Jjb3dpICR7Vy5wYXR0ZXJufWA7cmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93KHkvYS9lKSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOaWVwcmF3aWRcdTAxNDJvd2EgbGljemJhOiBtdXNpIGJ5XHUwMTA3IHdpZWxva3JvdG5vXHUwMTVCY2lcdTAxMDUgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBOaWVyb3pwb3puYW5lIGtsdWN6ZSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBOaWVwcmF3aWRcdTAxNDJvd3kga2x1Y3ogdyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiTmllcHJhd2lkXHUwMTQyb3dlIGRhbmUgd2VqXHUwMTVCY2lvd2VcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3dhIHdhcnRvXHUwMTVCXHUwMTA3IHcgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJOaWVwcmF3aWRcdTAxNDJvd2UgZGFuZSB3ZWpcdTAxNUJjaW93ZVwifX19O2Z1bmN0aW9uIGtxKCl7cmV0dXJue2xvY2FsZUVycm9yOmZ1KCl9fXZhciB5dT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJjYXJhY3RlcmVzXCIsdmVyYjpcInRlclwifSxmaWxlOnt1bml0OlwiYnl0ZXNcIix2ZXJiOlwidGVyXCJ9LGFycmF5Ont1bml0OlwiaXRlbnNcIix2ZXJiOlwidGVyXCJ9LHNldDp7dW5pdDpcIml0ZW5zXCIsdmVyYjpcInRlclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwiblx1MDBGQW1lcm9cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxvXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJwYWRyXHUwMEUzb1wiLGVtYWlsOlwiZW5kZXJlXHUwMEU3byBkZSBlLW1haWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiZGF0YSBlIGhvcmEgSVNPXCIsZGF0ZTpcImRhdGEgSVNPXCIsdGltZTpcImhvcmEgSVNPXCIsZHVyYXRpb246XCJkdXJhXHUwMEU3XHUwMEUzbyBJU09cIixpcHY0OlwiZW5kZXJlXHUwMEU3byBJUHY0XCIsaXB2NjpcImVuZGVyZVx1MDBFN28gSVB2NlwiLGNpZHJ2NDpcImZhaXhhIGRlIElQdjRcIixjaWRydjY6XCJmYWl4YSBkZSBJUHY2XCIsYmFzZTY0OlwidGV4dG8gY29kaWZpY2FkbyBlbSBiYXNlNjRcIixiYXNlNjR1cmw6XCJVUkwgY29kaWZpY2FkYSBlbSBiYXNlNjRcIixqc29uX3N0cmluZzpcInRleHRvIEpTT05cIixlMTY0Olwiblx1MDBGQW1lcm8gRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiZW50cmFkYVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gVGlwbyBpbnZcdTAwRTFsaWRvOiBlc3BlcmFkbyAke1guZXhwZWN0ZWR9LCByZWNlYmlkbyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gRW50cmFkYSBpbnZcdTAwRTFsaWRhOiBlc3BlcmFkbyAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9wXHUwMEU3XHUwMEUzbyBpbnZcdTAwRTFsaWRhOiBlc3BlcmFkYSB1bWEgZGFzICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7WC5vcmlnaW4/P1widmFsb3JcIn0gdGl2ZXNzZSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudG9zXCJ9YDtyZXR1cm5gTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtYLm9yaWdpbj8/XCJ2YWxvclwifSBmb3NzZSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBNdWl0byBwZXF1ZW5vOiBlc3BlcmFkbyBxdWUgJHtYLm9yaWdpbn0gdGl2ZXNzZSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7WC5vcmlnaW59IGZvc3NlICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gVGV4dG8gaW52XHUwMEUxbGlkbzogZGV2ZSBjb21lXHUwMEU3YXIgY29tIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBUZXh0byBpbnZcdTAwRTFsaWRvOiBkZXZlIHRlcm1pbmFyIGNvbSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBUZXh0byBpbnZcdTAwRTFsaWRvOiBkZXZlIGluY2x1aXIgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBUZXh0byBpbnZcdTAwRTFsaWRvOiBkZXZlIGNvcnJlc3BvbmRlciBhbyBwYWRyXHUwMEUzbyAke1cucGF0dGVybn1gO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0gaW52XHUwMEUxbGlkb2B9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5cdTAwRkFtZXJvIGludlx1MDBFMWxpZG86IGRldmUgc2VyIG1cdTAwRkFsdGlwbG8gZGUgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBDaGF2ZSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9IGRlc2NvbmhlY2lkYSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBDaGF2ZSBpbnZcdTAwRTFsaWRhIGVtICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJFbnRyYWRhIGludlx1MDBFMWxpZGFcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVmFsb3IgaW52XHUwMEUxbGlkbyBlbSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIkNhbXBvIGludlx1MDBFMWxpZG9cIn19fTtmdW5jdGlvbiB2cSgpe3JldHVybntsb2NhbGVFcnJvcjp5dSgpfX1mdW5jdGlvbiBBTSgkLFEsSixZKXtsZXQgWD1NYXRoLmFicygkKSxXPVglMTAsRz1YJTEwMDtpZihHPj0xMSYmRzw9MTkpcmV0dXJuIFk7aWYoVz09PTEpcmV0dXJuIFE7aWYoVz49MiYmVzw9NClyZXR1cm4gSjtyZXR1cm4gWX12YXIgZ3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OntvbmU6XCJcdTA0NDFcdTA0MzhcdTA0M0NcdTA0MzJcdTA0M0VcdTA0M0JcIixmZXc6XCJcdTA0NDFcdTA0MzhcdTA0M0NcdTA0MzJcdTA0M0VcdTA0M0JcdTA0MzBcIixtYW55OlwiXHUwNDQxXHUwNDM4XHUwNDNDXHUwNDMyXHUwNDNFXHUwNDNCXHUwNDNFXHUwNDMyXCJ9LHZlcmI6XCJcdTA0MzhcdTA0M0NcdTA0MzVcdTA0NDJcdTA0NENcIn0sZmlsZTp7dW5pdDp7b25lOlwiXHUwNDMxXHUwNDMwXHUwNDM5XHUwNDQyXCIsZmV3OlwiXHUwNDMxXHUwNDMwXHUwNDM5XHUwNDQyXHUwNDMwXCIsbWFueTpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0MlwifSx2ZXJiOlwiXHUwNDM4XHUwNDNDXHUwNDM1XHUwNDQyXHUwNDRDXCJ9LGFycmF5Ont1bml0OntvbmU6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcIixmZXc6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0MzBcIixtYW55OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDNFXHUwNDMyXCJ9LHZlcmI6XCJcdTA0MzhcdTA0M0NcdTA0MzVcdTA0NDJcdTA0NENcIn0sc2V0Ont1bml0OntvbmU6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcIixmZXc6XCJcdTA0NERcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0MzBcIixtYW55OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDNFXHUwNDMyXCJ9LHZlcmI6XCJcdTA0MzhcdTA0M0NcdTA0MzVcdTA0NDJcdTA0NENcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDQ0N1x1MDQzOFx1MDQ0MVx1MDQzQlx1MDQzRVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUwNDNDXHUwNDMwXHUwNDQxXHUwNDQxXHUwNDM4XHUwNDMyXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA0MzJcdTA0MzJcdTA0M0VcdTA0MzRcIixlbWFpbDpcImVtYWlsIFx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHUwNDREXHUwNDNDXHUwNDNFXHUwNDM0XHUwNDM3XHUwNDM4XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIFx1MDQzNFx1MDQzMFx1MDQ0Mlx1MDQzMCBcdTA0MzggXHUwNDMyXHUwNDQwXHUwNDM1XHUwNDNDXHUwNDRGXCIsZGF0ZTpcIklTTyBcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzBcIix0aW1lOlwiSVNPIFx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQ0RlwiLGR1cmF0aW9uOlwiSVNPIFx1MDQzNFx1MDQzQlx1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzRVx1MDQ0MVx1MDQ0Mlx1MDQ0Q1wiLGlwdjQ6XCJJUHY0IFx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVwiLGlwdjY6XCJJUHY2IFx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVwiLGNpZHJ2NDpcIklQdjQgXHUwNDM0XHUwNDM4XHUwNDMwXHUwNDNGXHUwNDMwXHUwNDM3XHUwNDNFXHUwNDNEXCIsY2lkcnY2OlwiSVB2NiBcdTA0MzRcdTA0MzhcdTA0MzBcdTA0M0ZcdTA0MzBcdTA0MzdcdTA0M0VcdTA0M0RcIixiYXNlNjQ6XCJcdTA0NDFcdTA0NDJcdTA0NDBcdTA0M0VcdTA0M0FcdTA0MzAgXHUwNDMyIFx1MDQ0NFx1MDQzRVx1MDQ0MFx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzNSBiYXNlNjRcIixiYXNlNjR1cmw6XCJcdTA0NDFcdTA0NDJcdTA0NDBcdTA0M0VcdTA0M0FcdTA0MzAgXHUwNDMyIFx1MDQ0NFx1MDQzRVx1MDQ0MFx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzNSBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcIkpTT04gXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwXCIsZTE2NDpcIlx1MDQzRFx1MDQzRVx1MDQzQ1x1MDQzNVx1MDQ0MCBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTA0MzJcdTA0MzJcdTA0M0VcdTA0MzRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQ0Qlx1MDQzOSBcdTA0MzJcdTA0MzJcdTA0M0VcdTA0MzQ6IFx1MDQzRVx1MDQzNlx1MDQzOFx1MDQzNFx1MDQzMFx1MDQzQlx1MDQzRVx1MDQ0MVx1MDQ0QyAke1guZXhwZWN0ZWR9LCBcdTA0M0ZcdTA0M0VcdTA0M0JcdTA0NDNcdTA0NDdcdTA0MzVcdTA0M0RcdTA0M0UgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQ0Qlx1MDQzOSBcdTA0MzJcdTA0MzJcdTA0M0VcdTA0MzQ6IFx1MDQzRVx1MDQzNlx1MDQzOFx1MDQzNFx1MDQzMFx1MDQzQlx1MDQzRVx1MDQ0MVx1MDQ0QyAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQ0Qlx1MDQzOSBcdTA0MzJcdTA0MzBcdTA0NDBcdTA0MzhcdTA0MzBcdTA0M0RcdTA0NDI6IFx1MDQzRVx1MDQzNlx1MDQzOFx1MDQzNFx1MDQzMFx1MDQzQlx1MDQzRVx1MDQ0MVx1MDQ0QyBcdTA0M0VcdTA0MzRcdTA0M0RcdTA0M0UgXHUwNDM4XHUwNDM3ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpe2xldCBVPU51bWJlcihYLm1heGltdW0pLEg9QU0oVSxHLnVuaXQub25lLEcudW5pdC5mZXcsRy51bml0Lm1hbnkpO3JldHVybmBcdTA0MjFcdTA0M0JcdTA0MzhcdTA0NDhcdTA0M0FcdTA0M0VcdTA0M0MgXHUwNDMxXHUwNDNFXHUwNDNCXHUwNDRDXHUwNDQ4XHUwNDNFXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQzNTogXHUwNDNFXHUwNDM2XHUwNDM4XHUwNDM0XHUwNDMwXHUwNDNCXHUwNDNFXHUwNDQxXHUwNDRDLCBcdTA0NDdcdTA0NDJcdTA0M0UgJHtYLm9yaWdpbj8/XCJcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzVcIn0gXHUwNDMxXHUwNDQzXHUwNDM0XHUwNDM1XHUwNDQyIFx1MDQzOFx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0QyAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtIfWB9cmV0dXJuYFx1MDQyMVx1MDQzQlx1MDQzOFx1MDQ0OFx1MDQzQVx1MDQzRVx1MDQzQyBcdTA0MzFcdTA0M0VcdTA0M0JcdTA0NENcdTA0NDhcdTA0M0VcdTA0MzUgXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDM4XHUwNDM1OiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMsIFx1MDQ0N1x1MDQ0Mlx1MDQzRSAke1gub3JpZ2luPz9cIlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQzNVwifSBcdTA0MzFcdTA0NDNcdTA0MzRcdTA0MzVcdTA0NDIgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRyl7bGV0IFU9TnVtYmVyKFgubWluaW11bSksSD1BTShVLEcudW5pdC5vbmUsRy51bml0LmZldyxHLnVuaXQubWFueSk7cmV0dXJuYFx1MDQyMVx1MDQzQlx1MDQzOFx1MDQ0OFx1MDQzQVx1MDQzRVx1MDQzQyBcdTA0M0NcdTA0MzBcdTA0M0JcdTA0MzVcdTA0M0RcdTA0NENcdTA0M0FcdTA0M0VcdTA0MzUgXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDM4XHUwNDM1OiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMsIFx1MDQ0N1x1MDQ0Mlx1MDQzRSAke1gub3JpZ2lufSBcdTA0MzFcdTA0NDNcdTA0MzRcdTA0MzVcdTA0NDIgXHUwNDM4XHUwNDNDXHUwNDM1XHUwNDQyXHUwNDRDICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0h9YH1yZXR1cm5gXHUwNDIxXHUwNDNCXHUwNDM4XHUwNDQ4XHUwNDNBXHUwNDNFXHUwNDNDIFx1MDQzQ1x1MDQzMFx1MDQzQlx1MDQzNVx1MDQzRFx1MDQ0Q1x1MDQzQVx1MDQzRVx1MDQzNSBcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzU6IFx1MDQzRVx1MDQzNlx1MDQzOFx1MDQzNFx1MDQzMFx1MDQzQlx1MDQzRVx1MDQ0MVx1MDQ0QywgXHUwNDQ3XHUwNDQyXHUwNDNFICR7WC5vcmlnaW59IFx1MDQzMVx1MDQ0M1x1MDQzNFx1MDQzNVx1MDQ0MiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQzMFx1MDQ0RiBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0M0VcdTA0M0FcdTA0MzA6IFx1MDQzNFx1MDQzRVx1MDQzQlx1MDQzNlx1MDQzRFx1MDQzMCBcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzhcdTA0M0RcdTA0MzBcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYgXHUwNDQxIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0MzBcdTA0NEYgXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwOiBcdTA0MzRcdTA0M0VcdTA0M0JcdTA0MzZcdTA0M0RcdTA0MzAgXHUwNDM3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDNEXHUwNDQ3XHUwNDM4XHUwNDMyXHUwNDMwXHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGIFx1MDQzRFx1MDQzMCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0MzBcdTA0NEYgXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwOiBcdTA0MzRcdTA0M0VcdTA0M0JcdTA0MzZcdTA0M0RcdTA0MzAgXHUwNDQxXHUwNDNFXHUwNDM0XHUwNDM1XHUwNDQwXHUwNDM2XHUwNDMwXHUwNDQyXHUwNDRDIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDMwXHUwNDRGIFx1MDQ0MVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzQVx1MDQzMDogXHUwNDM0XHUwNDNFXHUwNDNCXHUwNDM2XHUwNDNEXHUwNDMwIFx1MDQ0MVx1MDQzRVx1MDQzRVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0Mlx1MDQ0MVx1MDQ0Mlx1MDQzMlx1MDQzRVx1MDQzMlx1MDQzMFx1MDQ0Mlx1MDQ0QyBcdTA0NDhcdTA0MzBcdTA0MzFcdTA0M0JcdTA0M0VcdTA0M0RcdTA0NDMgJHtXLnBhdHRlcm59YDtyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDRCXHUwNDM5ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQzRVx1MDQzNSBcdTA0NDdcdTA0MzhcdTA0NDFcdTA0M0JcdTA0M0U6IFx1MDQzNFx1MDQzRVx1MDQzQlx1MDQzNlx1MDQzRFx1MDQzRSBcdTA0MzFcdTA0NEJcdTA0NDJcdTA0NEMgXHUwNDNBXHUwNDQwXHUwNDMwXHUwNDQyXHUwNDNEXHUwNDRCXHUwNDNDICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDQwXHUwNDMwXHUwNDQxXHUwNDNGXHUwNDNFXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDNEXHUwNDNEJHtYLmtleXMubGVuZ3RoPjE/XCJcdTA0NEJcdTA0MzVcIjpcIlx1MDQ0Qlx1MDQzOVwifSBcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDcke1gua2V5cy5sZW5ndGg+MT9cIlx1MDQzOFwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0NEJcdTA0MzkgXHUwNDNBXHUwNDNCXHUwNDRFXHUwNDQ3IFx1MDQzMiAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDRCXHUwNDM1IFx1MDQzMlx1MDQ0NVx1MDQzRVx1MDQzNFx1MDQzRFx1MDQ0Qlx1MDQzNSBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NEJcdTA0MzVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDNFXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQzNSBcdTA0MzIgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0NEJcdTA0MzUgXHUwNDMyXHUwNDQ1XHUwNDNFXHUwNDM0XHUwNDNEXHUwNDRCXHUwNDM1IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQzRFx1MDQ0Qlx1MDQzNVwifX19O2Z1bmN0aW9uIENxKCl7cmV0dXJue2xvY2FsZUVycm9yOmd1KCl9fXZhciBodT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJ6bmFrb3ZcIix2ZXJiOlwiaW1ldGlcIn0sZmlsZTp7dW5pdDpcImJhanRvdlwiLHZlcmI6XCJpbWV0aVwifSxhcnJheTp7dW5pdDpcImVsZW1lbnRvdlwiLHZlcmI6XCJpbWV0aVwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50b3ZcIix2ZXJiOlwiaW1ldGlcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDE2MXRldmlsb1wiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwidGFiZWxhXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJ2bm9zXCIsZW1haWw6XCJlLXBvXHUwMTYxdG5pIG5hc2xvdlwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gZGF0dW0gaW4gXHUwMTBEYXNcIixkYXRlOlwiSVNPIGRhdHVtXCIsdGltZTpcIklTTyBcdTAxMERhc1wiLGR1cmF0aW9uOlwiSVNPIHRyYWphbmplXCIsaXB2NDpcIklQdjQgbmFzbG92XCIsaXB2NjpcIklQdjYgbmFzbG92XCIsY2lkcnY0Olwib2JzZWcgSVB2NFwiLGNpZHJ2NjpcIm9ic2VnIElQdjZcIixiYXNlNjQ6XCJiYXNlNjQga29kaXJhbiBuaXpcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwga29kaXJhbiBuaXpcIixqc29uX3N0cmluZzpcIkpTT04gbml6XCIsZTE2NDpcIkUuMTY0IFx1MDE2MXRldmlsa2FcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwidm5vc1wifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gTmV2ZWxqYXZlbiB2bm9zOiBwcmlcdTAxMERha292YW5vICR7WC5leHBlY3RlZH0sIHByZWpldG8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYE5ldmVsamF2ZW4gdm5vczogcHJpXHUwMTBEYWtvdmFubyAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE5ldmVsamF2bmEgbW9cdTAxN0Vub3N0OiBwcmlcdTAxMERha292YW5vIGVubyBpem1lZCAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBQcmV2ZWxpa286IHByaVx1MDEwRGFrb3Zhbm8sIGRhIGJvICR7WC5vcmlnaW4/P1widnJlZG5vc3RcIn0gaW1lbG8gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lbnRvdlwifWA7cmV0dXJuYFByZXZlbGlrbzogcHJpXHUwMTBEYWtvdmFubywgZGEgYm8gJHtYLm9yaWdpbj8/XCJ2cmVkbm9zdFwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBQcmVtYWpobm86IHByaVx1MDEwRGFrb3Zhbm8sIGRhIGJvICR7WC5vcmlnaW59IGltZWxvICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBQcmVtYWpobm86IHByaVx1MDEwRGFrb3Zhbm8sIGRhIGJvICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2UgemFcdTAxMERldGkgeiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uXHUwMTBEYXRpIHogXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdnNlYm92YXRpIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke1cucGF0dGVybn1gO3JldHVybmBOZXZlbGphdmVuICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5ldmVsamF2bm8gXHUwMTYxdGV2aWxvOiBtb3JhIGJpdGkgdmVcdTAxMERrcmF0bmlrICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gTmVwcmVwb3puYW4ke1gua2V5cy5sZW5ndGg+MT9cImkga2xqdVx1MDEwRGlcIjpcIiBrbGp1XHUwMTBEXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBOZXZlbGphdmVuIGtsanVcdTAxMEQgdiAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiTmV2ZWxqYXZlbiB2bm9zXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE5ldmVsamF2bmEgdnJlZG5vc3QgdiAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIk5ldmVsamF2ZW4gdm5vc1wifX19O2Z1bmN0aW9uIFRxKCl7cmV0dXJue2xvY2FsZUVycm9yOmh1KCl9fXZhciB1dT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJ0ZWNrZW5cIix2ZXJiOlwiYXR0IGhhXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wiLHZlcmI6XCJhdHQgaGFcIn0sYXJyYXk6e3VuaXQ6XCJvYmpla3RcIix2ZXJiOlwiYXR0IGlubmVoXHUwMEU1bGxhXCJ9LHNldDp7dW5pdDpcIm9iamVrdFwiLHZlcmI6XCJhdHQgaW5uZWhcdTAwRTVsbGFcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcImFudGFsXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJsaXN0YVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwicmVndWxqXHUwMEU0cnQgdXR0cnlja1wiLGVtYWlsOlwiZS1wb3N0YWRyZXNzXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTy1kYXR1bSBvY2ggdGlkXCIsZGF0ZTpcIklTTy1kYXR1bVwiLHRpbWU6XCJJU08tdGlkXCIsZHVyYXRpb246XCJJU08tdmFyYWt0aWdoZXRcIixpcHY0OlwiSVB2NC1pbnRlcnZhbGxcIixpcHY2OlwiSVB2Ni1pbnRlcnZhbGxcIixjaWRydjQ6XCJJUHY0LXNwZWt0cnVtXCIsY2lkcnY2OlwiSVB2Ni1zcGVrdHJ1bVwiLGJhc2U2NDpcImJhc2U2NC1rb2RhZCBzdHJcdTAwRTRuZ1wiLGJhc2U2NHVybDpcImJhc2U2NHVybC1rb2RhZCBzdHJcdTAwRTRuZ1wiLGpzb25fc3RyaW5nOlwiSlNPTi1zdHJcdTAwRTRuZ1wiLGUxNjQ6XCJFLjE2NC1udW1tZXJcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwibWFsbC1saXRlcmFsXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBPZ2lsdGlnIGlubWF0bmluZzogZlx1MDBGNnJ2XHUwMEU0bnRhdCAke1guZXhwZWN0ZWR9LCBmaWNrICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBPZ2lsdGlnIGlubWF0bmluZzogZlx1MDBGNnJ2XHUwMEU0bnRhdCAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9naWx0aWd0IHZhbDogZlx1MDBGNnJ2XHUwMEU0bnRhZGUgZW4gYXYgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRlx1MDBGNnIgc3Rvcih0KTogZlx1MDBGNnJ2XHUwMEU0bnRhZGUgJHtYLm9yaWdpbj8/XCJ2XHUwMEU0cmRldFwifSBhdHQgaGEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lbnRcIn1gO3JldHVybmBGXHUwMEY2ciBzdG9yKHQpOiBmXHUwMEY2cnZcdTAwRTRudGF0ICR7WC5vcmlnaW4/P1widlx1MDBFNHJkZXRcIn0gYXR0IGhhICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYEZcdTAwRjZyIGxpdGUodCk6IGZcdTAwRjZydlx1MDBFNG50YWRlICR7WC5vcmlnaW4/P1widlx1MDBFNHJkZXRcIn0gYXR0IGhhICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBGXHUwMEY2ciBsaXRlKHQpOiBmXHUwMEY2cnZcdTAwRTRudGFkZSAke1gub3JpZ2luPz9cInZcdTAwRTRyZGV0XCJ9IGF0dCBoYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYE9naWx0aWcgc3RyXHUwMEU0bmc6IG1cdTAwRTVzdGUgYlx1MDBGNnJqYSBtZWQgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYE9naWx0aWcgc3RyXHUwMEU0bmc6IG1cdTAwRTVzdGUgc2x1dGEgbWVkIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYE9naWx0aWcgc3RyXHUwMEU0bmc6IG1cdTAwRTVzdGUgaW5uZWhcdTAwRTVsbGEgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBPZ2lsdGlnIHN0clx1MDBFNG5nOiBtXHUwMEU1c3RlIG1hdGNoYSBtXHUwMEY2bnN0cmV0IFwiJHtXLnBhdHRlcm59XCJgO3JldHVybmBPZ2lsdGlnKHQpICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE9naWx0aWd0IHRhbDogbVx1MDBFNXN0ZSB2YXJhIGVuIG11bHRpcGVsIGF2ICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gJHtYLmtleXMubGVuZ3RoPjE/XCJPa1x1MDBFNG5kYSBueWNrbGFyXCI6XCJPa1x1MDBFNG5kIG55Y2tlbFwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gT2dpbHRpZyBueWNrZWwgaSAke1gub3JpZ2luPz9cInZcdTAwRTRyZGV0XCJ9YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJPZ2lsdGlnIGlucHV0XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE9naWx0aWd0IHZcdTAwRTRyZGUgaSAke1gub3JpZ2luPz9cInZcdTAwRTRyZGV0XCJ9YDtkZWZhdWx0OnJldHVyblwiT2dpbHRpZyBpbnB1dFwifX19O2Z1bmN0aW9uIHhxKCl7cmV0dXJue2xvY2FsZUVycm9yOnV1KCl9fXZhciBtdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTBCOEVcdTBCQjRcdTBCQzFcdTBCQTRcdTBCQ0RcdTBCQTRcdTBCQzFcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQjNcdTBCQ0RcIix2ZXJiOlwiXHUwQjk1XHUwQkNBXHUwQkEzXHUwQkNEXHUwQjlGXHUwQkJGXHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRFwifSxmaWxlOnt1bml0OlwiXHUwQkFBXHUwQkM4XHUwQjlGXHUwQkNEXHUwQjlGXHUwQkMxXHUwQjk1XHUwQkIzXHUwQkNEXCIsdmVyYjpcIlx1MEI5NVx1MEJDQVx1MEJBM1x1MEJDRFx1MEI5Rlx1MEJCRlx1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RcIn0sYXJyYXk6e3VuaXQ6XCJcdTBCODlcdTBCQjFcdTBCQzFcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCQzFcdTBCOTVcdTBCQjNcdTBCQ0RcIix2ZXJiOlwiXHUwQjk1XHUwQkNBXHUwQkEzXHUwQkNEXHUwQjlGXHUwQkJGXHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRFwifSxzZXQ6e3VuaXQ6XCJcdTBCODlcdTBCQjFcdTBCQzFcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCQzFcdTBCOTVcdTBCQjNcdTBCQ0RcIix2ZXJiOlwiXHUwQjk1XHUwQkNBXHUwQkEzXHUwQkNEXHUwQjlGXHUwQkJGXHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRFwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIlx1MEI4RVx1MEJBM1x1MEJDRCBcdTBCODVcdTBCQjJcdTBCQ0RcdTBCQjJcdTBCQkVcdTBCQTRcdTBCQTRcdTBCQzFcIjpcIlx1MEI4RVx1MEJBM1x1MEJDRFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUwQjg1XHUwQkEzXHUwQkJGXCI7aWYoWD09PW51bGwpcmV0dXJuXCJcdTBCQjVcdTBCQzZcdTBCQjFcdTBCQzFcdTBCQUVcdTBCQzhcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEJDMFx1MEI5Rlx1MEJDMVwiLGVtYWlsOlwiXHUwQkFFXHUwQkJGXHUwQkE5XHUwQkNEXHUwQkE5XHUwQjlFXHUwQkNEXHUwQjlBXHUwQkIyXHUwQkNEIFx1MEJBRVx1MEJDMVx1MEI5NVx1MEJCNVx1MEJCMFx1MEJCRlwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gXHUwQkE0XHUwQkM3XHUwQkE0XHUwQkJGIFx1MEJBOFx1MEJDN1x1MEJCMFx1MEJBRVx1MEJDRFwiLGRhdGU6XCJJU08gXHUwQkE0XHUwQkM3XHUwQkE0XHUwQkJGXCIsdGltZTpcIklTTyBcdTBCQThcdTBCQzdcdTBCQjBcdTBCQUVcdTBCQ0RcIixkdXJhdGlvbjpcIklTTyBcdTBCOTVcdTBCQkVcdTBCQjIgXHUwQjg1XHUwQkIzXHUwQkI1XHUwQkMxXCIsaXB2NDpcIklQdjQgXHUwQkFFXHUwQkMxXHUwQjk1XHUwQkI1XHUwQkIwXHUwQkJGXCIsaXB2NjpcIklQdjYgXHUwQkFFXHUwQkMxXHUwQjk1XHUwQkI1XHUwQkIwXHUwQkJGXCIsY2lkcnY0OlwiSVB2NCBcdTBCQjVcdTBCQjBcdTBCQUVcdTBCQ0RcdTBCQUFcdTBCQzFcIixjaWRydjY6XCJJUHY2IFx1MEJCNVx1MEJCMFx1MEJBRVx1MEJDRFx1MEJBQVx1MEJDMVwiLGJhc2U2NDpcImJhc2U2NC1lbmNvZGVkIFx1MEI5QVx1MEJCMFx1MEJBRVx1MEJDRFwiLGJhc2U2NHVybDpcImJhc2U2NHVybC1lbmNvZGVkIFx1MEI5QVx1MEJCMFx1MEJBRVx1MEJDRFwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdTBCOUFcdTBCQjBcdTBCQUVcdTBCQ0RcIixlMTY0OlwiRS4xNjQgXHUwQjhFXHUwQkEzXHUwQkNEXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImlucHV0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjg5XHUwQkIzXHUwQkNEXHUwQkIzXHUwQkMwXHUwQjlGXHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtYLmV4cGVjdGVkfSwgXHUwQkFBXHUwQkM2XHUwQkIxXHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjg5XHUwQkIzXHUwQkNEXHUwQkIzXHUwQkMwXHUwQjlGXHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQkI1XHUwQkJGXHUwQkIwXHUwQkMxXHUwQkFBXHUwQkNEXHUwQkFBXHUwQkFFXHUwQkNEOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtQKFgudmFsdWVzLFwifFwiKX0gXHUwQjg3XHUwQkIyXHUwQkNEIFx1MEI5Mlx1MEJBOVx1MEJDRFx1MEJCMVx1MEJDMWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTBCQUVcdTBCQkZcdTBCOTUgXHUwQkFBXHUwQkM2XHUwQkIwXHUwQkJGXHUwQkFGXHUwQkE0XHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtYLm9yaWdpbj8/XCJcdTBCQUVcdTBCQTRcdTBCQkZcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCQzFcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MEI4OVx1MEJCMVx1MEJDMVx1MEJBQVx1MEJDRFx1MEJBQVx1MEJDMVx1MEI5NVx1MEJCM1x1MEJDRFwifSBcdTBCODZcdTBCOTUgXHUwQjg3XHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7cmV0dXJuYFx1MEJBRVx1MEJCRlx1MEI5NSBcdTBCQUFcdTBCQzZcdTBCQjBcdTBCQkZcdTBCQUZcdTBCQTRcdTBCQzE6IFx1MEI4RVx1MEJBNFx1MEJCRlx1MEJCMFx1MEJDRFx1MEJBQVx1MEJCRVx1MEJCMFx1MEJDRFx1MEI5NVx1MEJDRFx1MEI5NVx1MEJBQVx1MEJDRFx1MEJBQVx1MEI5Rlx1MEJDRFx1MEI5Rlx1MEJBNFx1MEJDMSAke1gub3JpZ2luPz9cIlx1MEJBRVx1MEJBNFx1MEJCRlx1MEJBQVx1MEJDRFx1MEJBQVx1MEJDMVwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gXHUwQjg2XHUwQjk1IFx1MEI4N1x1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTBCQUVcdTBCQkZcdTBCOTVcdTBCOUFcdTBCQ0QgXHUwQjlBXHUwQkJGXHUwQkIxXHUwQkJGXHUwQkFGXHUwQkE0XHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fSBcdTBCODZcdTBCOTUgXHUwQjg3XHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7cmV0dXJuYFx1MEJBRVx1MEJCRlx1MEI5NVx1MEI5QVx1MEJDRCBcdTBCOUFcdTBCQkZcdTBCQjFcdTBCQkZcdTBCQUZcdTBCQTRcdTBCQzE6IFx1MEI4RVx1MEJBNFx1MEJCRlx1MEJCMFx1MEJDRFx1MEJBQVx1MEJCRVx1MEJCMFx1MEJDRFx1MEI5NVx1MEJDRFx1MEI5NVx1MEJBQVx1MEJDRFx1MEJBQVx1MEI5Rlx1MEJDRFx1MEI5Rlx1MEJBNFx1MEJDMSAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gXHUwQjg2XHUwQjk1IFx1MEI4N1x1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MEJBNFx1MEJCNVx1MEJCMVx1MEJCRVx1MEJBOSBcdTBCOUFcdTBCQjBcdTBCQUVcdTBCQ0Q6IFwiJHtXLnByZWZpeH1cIiBcdTBCODdcdTBCQjJcdTBCQ0QgXHUwQkE0XHUwQkNBXHUwQjlGXHUwQjk5XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjlBXHUwQkIwXHUwQkFFXHUwQkNEOiBcIiR7Vy5zdWZmaXh9XCIgXHUwQjg3XHUwQkIyXHUwQkNEIFx1MEJBRVx1MEJDMVx1MEI5Rlx1MEJCRlx1MEJCNVx1MEI5Rlx1MEJDOFx1MEJBRiBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjlBXHUwQkIwXHUwQkFFXHUwQkNEOiBcIiR7Vy5pbmNsdWRlc31cIiBcdTBCOTAgXHUwQjg5XHUwQkIzXHUwQkNEXHUwQkIzXHUwQjlGXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MEJBNFx1MEJCNVx1MEJCMVx1MEJCRVx1MEJBOSBcdTBCOUFcdTBCQjBcdTBCQUVcdTBCQ0Q6ICR7Vy5wYXR0ZXJufSBcdTBCQUVcdTBCQzFcdTBCQjFcdTBCQzhcdTBCQUFcdTBCQkVcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCOUZcdTBCQTlcdTBCQ0QgXHUwQkFBXHUwQkNBXHUwQkIwXHUwQkMxXHUwQkE4XHUwQkNEXHUwQkE0IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7cmV0dXJuYFx1MEJBNFx1MEJCNVx1MEJCMVx1MEJCRVx1MEJBOSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjhFXHUwQkEzXHUwQkNEOiAke1guZGl2aXNvcn0gXHUwQjg3XHUwQkE5XHUwQkNEIFx1MEJBQVx1MEJCMlx1MEJBRVx1MEJCRVx1MEI5NSBcdTBCODdcdTBCQjBcdTBCQzFcdTBCOTVcdTBCQ0RcdTBCOTUgXHUwQkI1XHUwQkM3XHUwQkEzXHUwQkNEXHUwQjlGXHUwQkMxXHUwQkFFXHUwQkNEYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTBCODVcdTBCOUZcdTBCQzhcdTBCQUZcdTBCQkVcdTBCQjNcdTBCQUVcdTBCQ0QgXHUwQkE0XHUwQkM2XHUwQkIwXHUwQkJGXHUwQkFGXHUwQkJFXHUwQkE0IFx1MEJCNVx1MEJCRlx1MEI5QVx1MEJDOCR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwQjk1XHUwQkIzXHUwQkNEXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1MEI4N1x1MEJCMlx1MEJDRCBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQkI1XHUwQkJGXHUwQjlBXHUwQkM4YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjg5XHUwQkIzXHUwQkNEXHUwQkIzXHUwQkMwXHUwQjlGXHUwQkMxXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1MEI4N1x1MEJCMlx1MEJDRCBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQkFFXHUwQkE0XHUwQkJGXHUwQkFBXHUwQkNEXHUwQkFBXHUwQkMxYDtkZWZhdWx0OnJldHVyblwiXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEJDMFx1MEI5Rlx1MEJDMVwifX19O2Z1bmN0aW9uIGZxKCl7cmV0dXJue2xvY2FsZUVycm9yOm11KCl9fXZhciBsdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTBFMTVcdTBFMzFcdTBFMjdcdTBFMkRcdTBFMzFcdTBFMDFcdTBFMjlcdTBFMjNcIix2ZXJiOlwiXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1XCJ9LGZpbGU6e3VuaXQ6XCJcdTBFNDRcdTBFMUFcdTBFMTVcdTBFNENcIix2ZXJiOlwiXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1XCJ9LGFycmF5Ont1bml0OlwiXHUwRTIzXHUwRTMyXHUwRTIyXHUwRTAxXHUwRTMyXHUwRTIzXCIsdmVyYjpcIlx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNVwifSxzZXQ6e3VuaXQ6XCJcdTBFMjNcdTBFMzJcdTBFMjJcdTBFMDFcdTBFMzJcdTBFMjNcIix2ZXJiOlwiXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1XCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTQzXHUwRTBBXHUwRTQ4XHUwRTE1XHUwRTMxXHUwRTI3XHUwRTQwXHUwRTI1XHUwRTAyIChOYU4pXCI6XCJcdTBFMTVcdTBFMzFcdTBFMjdcdTBFNDBcdTBFMjVcdTBFMDJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MEUyRFx1MEUzMlx1MEUyM1x1MEU0Q1x1MEU0MFx1MEUyM1x1MEUyMlx1MEU0QyAoQXJyYXkpXCI7aWYoWD09PW51bGwpcmV0dXJuXCJcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMjFcdTBFMzVcdTBFMDRcdTBFNDhcdTBFMzIgKG51bGwpXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMjFcdTBFMzlcdTBFMjVcdTBFMTdcdTBFMzVcdTBFNDhcdTBFMUJcdTBFNDlcdTBFMkRcdTBFMTlcIixlbWFpbDpcIlx1MEUxN1x1MEUzNVx1MEU0OFx1MEUyRFx1MEUyMlx1MEUzOVx1MEU0OFx1MEUyRFx1MEUzNVx1MEU0MFx1MEUyMVx1MEUyNVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHUwRTJEXHUwRTM0XHUwRTQyXHUwRTIxXHUwRTA4XHUwRTM0XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiXHUwRTI3XHUwRTMxXHUwRTE5XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTQwXHUwRTI3XHUwRTI1XHUwRTMyXHUwRTQxXHUwRTFBXHUwRTFBIElTT1wiLGRhdGU6XCJcdTBFMjdcdTBFMzFcdTBFMTlcdTBFMTdcdTBFMzVcdTBFNDhcdTBFNDFcdTBFMUFcdTBFMUEgSVNPXCIsdGltZTpcIlx1MEU0MFx1MEUyN1x1MEUyNVx1MEUzMlx1MEU0MVx1MEUxQVx1MEUxQSBJU09cIixkdXJhdGlvbjpcIlx1MEUwQVx1MEU0OFx1MEUyN1x1MEUwN1x1MEU0MFx1MEUyN1x1MEUyNVx1MEUzMlx1MEU0MVx1MEUxQVx1MEUxQSBJU09cIixpcHY0OlwiXHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTJEXHUwRTIyXHUwRTM5XHUwRTQ4IElQdjRcIixpcHY2OlwiXHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTJEXHUwRTIyXHUwRTM5XHUwRTQ4IElQdjZcIixjaWRydjQ6XCJcdTBFMEFcdTBFNDhcdTBFMjdcdTBFMDcgSVAgXHUwRTQxXHUwRTFBXHUwRTFBIElQdjRcIixjaWRydjY6XCJcdTBFMEFcdTBFNDhcdTBFMjdcdTBFMDcgSVAgXHUwRTQxXHUwRTFBXHUwRTFBIElQdjZcIixiYXNlNjQ6XCJcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMDRcdTBFMjdcdTBFMzJcdTBFMjFcdTBFNDFcdTBFMUFcdTBFMUEgQmFzZTY0XCIsYmFzZTY0dXJsOlwiXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTQxXHUwRTFBXHUwRTFBIEJhc2U2NCBcdTBFMkFcdTBFMzNcdTBFMkJcdTBFMjNcdTBFMzFcdTBFMUEgVVJMXCIsanNvbl9zdHJpbmc6XCJcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMDRcdTBFMjdcdTBFMzJcdTBFMjFcdTBFNDFcdTBFMUFcdTBFMUEgSlNPTlwiLGUxNjQ6XCJcdTBFNDBcdTBFMUFcdTBFMkRcdTBFMjNcdTBFNENcdTBFNDJcdTBFMTdcdTBFMjNcdTBFMjhcdTBFMzFcdTBFMUVcdTBFMTdcdTBFNENcdTBFMjNcdTBFMzBcdTBFMkJcdTBFMjdcdTBFNDhcdTBFMzJcdTBFMDdcdTBFMUJcdTBFMjNcdTBFMzBcdTBFNDBcdTBFMTdcdTBFMjggKEUuMTY0KVwiLGp3dDpcIlx1MEU0Mlx1MEUxN1x1MEU0MFx1MEUwNFx1MEUxOSBKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTIxXHUwRTM5XHUwRTI1XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTFCXHUwRTQ5XHUwRTJEXHUwRTE5XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTBFMUJcdTBFMjNcdTBFMzBcdTBFNDBcdTBFMjBcdTBFMTdcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMjFcdTBFMzlcdTBFMjVcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEUwNFx1MEUyN1x1MEUyM1x1MEU0MFx1MEUxQlx1MEU0N1x1MEUxOSAke1guZXhwZWN0ZWR9IFx1MEU0MVx1MEUxNVx1MEU0OFx1MEU0NFx1MEUxNFx1MEU0OVx1MEUyM1x1MEUzMVx1MEUxQSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwRTA0XHUwRTQ4XHUwRTMyXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3OiBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFNDBcdTBFMUJcdTBFNDdcdTBFMTkgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTBFMTVcdTBFMzFcdTBFMjdcdTBFNDBcdTBFMjVcdTBFMzdcdTBFMkRcdTBFMDFcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEUwNFx1MEUyN1x1MEUyM1x1MEU0MFx1MEUxQlx1MEU0N1x1MEUxOVx1MEUyQlx1MEUxOVx1MEUzNlx1MEU0OFx1MEUwN1x1MEU0M1x1MEUxOSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIlx1MEU0NFx1MEUyMVx1MEU0OFx1MEU0MFx1MEUwMVx1MEUzNFx1MEUxOVwiOlwiXHUwRTE5XHUwRTQ5XHUwRTJEXHUwRTIyXHUwRTAxXHUwRTI3XHUwRTQ4XHUwRTMyXCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTBFNDBcdTBFMDFcdTBFMzRcdTBFMTlcdTBFMDFcdTBFMzNcdTBFMkJcdTBFMTlcdTBFMTQ6ICR7WC5vcmlnaW4/P1wiXHUwRTA0XHUwRTQ4XHUwRTMyXCJ9IFx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNSR7V30gJHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUwRTIzXHUwRTMyXHUwRTIyXHUwRTAxXHUwRTMyXHUwRTIzXCJ9YDtyZXR1cm5gXHUwRTQwXHUwRTAxXHUwRTM0XHUwRTE5XHUwRTAxXHUwRTMzXHUwRTJCXHUwRTE5XHUwRTE0OiAke1gub3JpZ2luPz9cIlx1MEUwNFx1MEU0OFx1MEUzMlwifSBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFMjFcdTBFMzUke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdTBFMkRcdTBFMjJcdTBFNDhcdTBFMzJcdTBFMDdcdTBFMTlcdTBFNDlcdTBFMkRcdTBFMjJcIjpcIlx1MEUyMVx1MEUzMlx1MEUwMVx1MEUwMVx1MEUyN1x1MEU0OFx1MEUzMlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwRTE5XHUwRTQ5XHUwRTJEXHUwRTIyXHUwRTAxXHUwRTI3XHUwRTQ4XHUwRTMyXHUwRTAxXHUwRTMzXHUwRTJCXHUwRTE5XHUwRTE0OiAke1gub3JpZ2lufSBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFMjFcdTBFMzUke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1MEUxOVx1MEU0OVx1MEUyRFx1MEUyMlx1MEUwMVx1MEUyN1x1MEU0OFx1MEUzMlx1MEUwMVx1MEUzM1x1MEUyQlx1MEUxOVx1MEUxNDogJHtYLm9yaWdpbn0gXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1JHtXfSAke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwRTIzXHUwRTM5XHUwRTFCXHUwRTQxXHUwRTFBXHUwRTFBXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3OiBcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMDRcdTBFMjdcdTBFMzJcdTBFMjFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDdcdTBFMDJcdTBFMzZcdTBFNDlcdTBFMTlcdTBFMTVcdTBFNDlcdTBFMTlcdTBFMTRcdTBFNDlcdTBFMjdcdTBFMjIgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTI1XHUwRTA3XHUwRTE3XHUwRTQ5XHUwRTMyXHUwRTIyXHUwRTE0XHUwRTQ5XHUwRTI3XHUwRTIyIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTIxXHUwRTM1IFwiJHtXLmluY2x1ZGVzfVwiIFx1MEUyRFx1MEUyMlx1MEUzOVx1MEU0OFx1MEU0M1x1MEUxOVx1MEUwMlx1MEU0OVx1MEUyRFx1MEUwNFx1MEUyN1x1MEUzMlx1MEUyMWA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTE1XHUwRTIzXHUwRTA3XHUwRTAxXHUwRTMxXHUwRTFBXHUwRTIzXHUwRTM5XHUwRTFCXHUwRTQxXHUwRTFBXHUwRTFBXHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTAxXHUwRTMzXHUwRTJCXHUwRTE5XHUwRTE0ICR7Vy5wYXR0ZXJufWA7cmV0dXJuYFx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUwRTE1XHUwRTMxXHUwRTI3XHUwRTQwXHUwRTI1XHUwRTAyXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3OiBcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDdcdTBFNDBcdTBFMUJcdTBFNDdcdTBFMTlcdTBFMDhcdTBFMzNcdTBFMTlcdTBFMjdcdTBFMTlcdTBFMTdcdTBFMzVcdTBFNDhcdTBFMkJcdTBFMzJcdTBFMjNcdTBFMTRcdTBFNDlcdTBFMjdcdTBFMjIgJHtYLmRpdmlzb3J9IFx1MEU0NFx1MEUxNFx1MEU0OVx1MEUyNVx1MEUwN1x1MEUxNVx1MEUzMVx1MEUyN2A7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwRTFFXHUwRTFBXHUwRTA0XHUwRTM1XHUwRTIyXHUwRTRDXHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTIzXHUwRTM5XHUwRTQ5XHUwRTA4XHUwRTMxXHUwRTAxOiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTBFMDRcdTBFMzVcdTBFMjJcdTBFNENcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDdcdTBFNDNcdTBFMTkgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MEUwMlx1MEU0OVx1MEUyRFx1MEUyMVx1MEUzOVx1MEUyNVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE1XHUwRTIzXHUwRTA3XHUwRTAxXHUwRTMxXHUwRTFBXHUwRTIzXHUwRTM5XHUwRTFCXHUwRTQxXHUwRTFBXHUwRTFBXHUwRTIyXHUwRTM5XHUwRTQwXHUwRTE5XHUwRTM1XHUwRTIyXHUwRTE5XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTAxXHUwRTMzXHUwRTJCXHUwRTE5XHUwRTE0XHUwRTQ0XHUwRTI3XHUwRTQ5XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MEUwMlx1MEU0OVx1MEUyRFx1MEUyMVx1MEUzOVx1MEUyNVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwN1x1MEU0M1x1MEUxOSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MEUwMlx1MEU0OVx1MEUyRFx1MEUyMVx1MEUzOVx1MEUyNVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwN1wifX19O2Z1bmN0aW9uIHlxKCl7cmV0dXJue2xvY2FsZUVycm9yOmx1KCl9fXZhciBjdT0oJCk9PntsZXQgUT10eXBlb2YgJDtzd2l0Y2goUSl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTigkKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuXCJhcnJheVwiO2lmKCQ9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZigkKSE9PU9iamVjdC5wcm90b3R5cGUmJiQuY29uc3RydWN0b3IpcmV0dXJuICQuY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFF9LHB1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImthcmFrdGVyXCIsdmVyYjpcIm9sbWFsXHUwMTMxXCJ9LGZpbGU6e3VuaXQ6XCJiYXl0XCIsdmVyYjpcIm9sbWFsXHUwMTMxXCJ9LGFycmF5Ont1bml0OlwiXHUwMEY2XHUwMTFGZVwiLHZlcmI6XCJvbG1hbFx1MDEzMVwifSxzZXQ6e3VuaXQ6XCJcdTAwRjZcdTAxMUZlXCIsdmVyYjpcIm9sbWFsXHUwMTMxXCJ9fTtmdW5jdGlvbiBRKFkpe3JldHVybiAkW1ldPz9udWxsfWxldCBKPXtyZWdleDpcImdpcmRpXCIsZW1haWw6XCJlLXBvc3RhIGFkcmVzaVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gdGFyaWggdmUgc2FhdFwiLGRhdGU6XCJJU08gdGFyaWhcIix0aW1lOlwiSVNPIHNhYXRcIixkdXJhdGlvbjpcIklTTyBzXHUwMEZDcmVcIixpcHY0OlwiSVB2NCBhZHJlc2lcIixpcHY2OlwiSVB2NiBhZHJlc2lcIixjaWRydjQ6XCJJUHY0IGFyYWxcdTAxMzFcdTAxMUZcdTAxMzFcIixjaWRydjY6XCJJUHY2IGFyYWxcdTAxMzFcdTAxMUZcdTAxMzFcIixiYXNlNjQ6XCJiYXNlNjQgaWxlIFx1MDE1RmlmcmVsZW5taVx1MDE1RiBtZXRpblwiLGJhc2U2NHVybDpcImJhc2U2NHVybCBpbGUgXHUwMTVGaWZyZWxlbm1pXHUwMTVGIG1ldGluXCIsanNvbl9zdHJpbmc6XCJKU09OIGRpemVzaVwiLGUxNjQ6XCJFLjE2NCBzYXlcdTAxMzFzXHUwMTMxXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDE1RWFibG9uIGRpemVzaVwifTtyZXR1cm4oWSk9Pntzd2l0Y2goWS5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gR2VcdTAwRTdlcnNpeiBkZVx1MDExRmVyOiBiZWtsZW5lbiAke1kuZXhwZWN0ZWR9LCBhbFx1MDEzMW5hbiAke2N1KFkuaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFkudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEdlXHUwMEU3ZXJzaXogZGVcdTAxMUZlcjogYmVrbGVuZW4gJHt4KFkudmFsdWVzWzBdKX1gO3JldHVybmBHZVx1MDBFN2Vyc2l6IHNlXHUwMEU3ZW5lazogYVx1MDE1RmFcdTAxMUZcdTAxMzFkYWtpbGVyZGVuIGJpcmkgb2xtYWxcdTAxMzE6ICR7UChZLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBYPVkuaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixXPVEoWS5vcmlnaW4pO2lmKFcpcmV0dXJuYFx1MDBDN29rIGJcdTAwRkN5XHUwMEZDazogYmVrbGVuZW4gJHtZLm9yaWdpbj8/XCJkZVx1MDExRmVyXCJ9ICR7WH0ke1kubWF4aW11bS50b1N0cmluZygpfSAke1cudW5pdD8/XCJcdTAwRjZcdTAxMUZlXCJ9YDtyZXR1cm5gXHUwMEM3b2sgYlx1MDBGQ3lcdTAwRkNrOiBiZWtsZW5lbiAke1kub3JpZ2luPz9cImRlXHUwMTFGZXJcIn0gJHtYfSR7WS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFg9WS5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLFc9UShZLm9yaWdpbik7aWYoVylyZXR1cm5gXHUwMEM3b2sga1x1MDBGQ1x1MDBFN1x1MDBGQ2s6IGJla2xlbmVuICR7WS5vcmlnaW59ICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfSAke1cudW5pdH1gO3JldHVybmBcdTAwQzdvayBrXHUwMEZDXHUwMEU3XHUwMEZDazogYmVrbGVuZW4gJHtZLm9yaWdpbn0gJHtYfSR7WS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgWD1ZO2lmKFguZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBHZVx1MDBFN2Vyc2l6IG1ldGluOiBcIiR7WC5wcmVmaXh9XCIgaWxlIGJhXHUwMTVGbGFtYWxcdTAxMzFgO2lmKFguZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gR2VcdTAwRTdlcnNpeiBtZXRpbjogXCIke1guc3VmZml4fVwiIGlsZSBiaXRtZWxpYDtpZihYLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gR2VcdTAwRTdlcnNpeiBtZXRpbjogXCIke1guaW5jbHVkZXN9XCIgaVx1MDBFN2VybWVsaWA7aWYoWC5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYEdlXHUwMEU3ZXJzaXogbWV0aW46ICR7WC5wYXR0ZXJufSBkZXNlbmluZSB1eW1hbFx1MDEzMWA7cmV0dXJuYEdlXHUwMEU3ZXJzaXogJHtKW1guZm9ybWF0XT8/WS5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gR2VcdTAwRTdlcnNpeiBzYXlcdTAxMzE6ICR7WS5kaXZpc29yfSBpbGUgdGFtIGJcdTAwRjZsXHUwMEZDbmViaWxtZWxpYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBUYW5cdTAxMzFubWF5YW4gYW5haHRhciR7WS5rZXlzLmxlbmd0aD4xP1wibGFyXCI6XCJcIn06ICR7UChZLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WS5vcmlnaW59IGlcdTAwRTdpbmRlIGdlXHUwMEU3ZXJzaXogYW5haHRhcmA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiR2VcdTAwRTdlcnNpeiBkZVx1MDExRmVyXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WS5vcmlnaW59IGlcdTAwRTdpbmRlIGdlXHUwMEU3ZXJzaXogZGVcdTAxMUZlcmA7ZGVmYXVsdDpyZXR1cm5cIkdlXHUwMEU3ZXJzaXogZGVcdTAxMUZlclwifX19O2Z1bmN0aW9uIGdxKCl7cmV0dXJue2xvY2FsZUVycm9yOnB1KCl9fXZhciBkdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA0NDFcdTA0MzhcdTA0M0NcdTA0MzJcdTA0M0VcdTA0M0JcdTA0NTZcdTA0MzJcIix2ZXJiOlwiXHUwNDNDXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDNDXHUwNDM1XCJ9LGZpbGU6e3VuaXQ6XCJcdTA0MzFcdTA0MzBcdTA0MzlcdTA0NDJcdTA0NTZcdTA0MzJcIix2ZXJiOlwiXHUwNDNDXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDNDXHUwNDM1XCJ9LGFycmF5Ont1bml0OlwiXHUwNDM1XHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDU2XHUwNDMyXCIsdmVyYjpcIlx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzQ1x1MDQzNVwifSxzZXQ6e3VuaXQ6XCJcdTA0MzVcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0NTZcdTA0MzJcIix2ZXJiOlwiXHUwNDNDXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDNDXHUwNDM1XCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA0NDdcdTA0MzhcdTA0NDFcdTA0M0JcdTA0M0VcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDQzQ1x1MDQzMFx1MDQ0MVx1MDQzOFx1MDQzMlwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNDMyXHUwNDQ1XHUwNDU2XHUwNDM0XHUwNDNEXHUwNDU2IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQ1NlwiLGVtYWlsOlwiXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDM1XHUwNDQxXHUwNDMwIFx1MDQzNVx1MDQzQlx1MDQzNVx1MDQzQVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzRFx1MDQzRFx1MDQzRVx1MDQ1NyBcdTA0M0ZcdTA0M0VcdTA0NDhcdTA0NDJcdTA0MzhcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1MDQzNVx1MDQzQ1x1MDQzRVx1MDQzNFx1MDQzN1x1MDQ1NlwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIlx1MDQzNFx1MDQzMFx1MDQ0Mlx1MDQzMCBcdTA0NDJcdTA0MzAgXHUwNDQ3XHUwNDMwXHUwNDQxIElTT1wiLGRhdGU6XCJcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzAgSVNPXCIsdGltZTpcIlx1MDQ0N1x1MDQzMFx1MDQ0MSBJU09cIixkdXJhdGlvbjpcIlx1MDQ0Mlx1MDQ0MFx1MDQzOFx1MDQzMlx1MDQzMFx1MDQzQlx1MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQ0QyBJU09cIixpcHY0OlwiXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDM1XHUwNDQxXHUwNDMwIElQdjRcIixpcHY2OlwiXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDM1XHUwNDQxXHUwNDMwIElQdjZcIixjaWRydjQ6XCJcdTA0MzRcdTA0NTZcdTA0MzBcdTA0M0ZcdTA0MzBcdTA0MzdcdTA0M0VcdTA0M0QgSVB2NFwiLGNpZHJ2NjpcIlx1MDQzNFx1MDQ1Nlx1MDQzMFx1MDQzRlx1MDQzMFx1MDQzN1x1MDQzRVx1MDQzRCBJUHY2XCIsYmFzZTY0OlwiXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBIFx1MDQ0MyBcdTA0M0FcdTA0M0VcdTA0MzRcdTA0NDNcdTA0MzJcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NTYgYmFzZTY0XCIsYmFzZTY0dXJsOlwiXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBIFx1MDQ0MyBcdTA0M0FcdTA0M0VcdTA0MzRcdTA0NDNcdTA0MzJcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NTYgYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJcdTA0NDBcdTA0NEZcdTA0MzRcdTA0M0VcdTA0M0EgSlNPTlwiLGUxNjQ6XCJcdTA0M0RcdTA0M0VcdTA0M0NcdTA0MzVcdTA0NDAgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNDMyXHUwNDQ1XHUwNDU2XHUwNDM0XHUwNDNEXHUwNDU2IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQ1NlwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDU2IFx1MDQzMlx1MDQ0NVx1MDQ1Nlx1MDQzNFx1MDQzRFx1MDQ1NiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0NTY6IFx1MDQzRVx1MDQ0N1x1MDQ1Nlx1MDQzQVx1MDQ0M1x1MDQ1NFx1MDQ0Mlx1MDQ0Q1x1MDQ0MVx1MDQ0RiAke1guZXhwZWN0ZWR9LCBcdTA0M0VcdTA0NDJcdTA0NDBcdTA0MzhcdTA0M0NcdTA0MzBcdTA0M0RcdTA0M0UgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ1NiBcdTA0MzJcdTA0NDVcdTA0NTZcdTA0MzRcdTA0M0RcdTA0NTYgXHUwNDM0XHUwNDMwXHUwNDNEXHUwNDU2OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzAgXHUwNDNFXHUwNDNGXHUwNDQ2XHUwNDU2XHUwNDRGOiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYgXHUwNDNFXHUwNDM0XHUwNDNEXHUwNDM1IFx1MDQzNyAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0M0UgXHUwNDMyXHUwNDM1XHUwNDNCXHUwNDM4XHUwNDNBXHUwNDM1OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYsIFx1MDQ0OVx1MDQzRSAke1gub3JpZ2luPz9cIlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzRFx1MDQ0RlwifSAke0cudmVyYn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDQzNVx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQ1Nlx1MDQzMlwifWA7cmV0dXJuYFx1MDQxN1x1MDQzMFx1MDQzRFx1MDQzMFx1MDQzNFx1MDQ0Mlx1MDQzRSBcdTA0MzJcdTA0MzVcdTA0M0JcdTA0MzhcdTA0M0FcdTA0MzU6IFx1MDQzRVx1MDQ0N1x1MDQ1Nlx1MDQzQVx1MDQ0M1x1MDQ1NFx1MDQ0Mlx1MDQ0Q1x1MDQ0MVx1MDQ0RiwgXHUwNDQ5XHUwNDNFICR7WC5vcmlnaW4/P1wiXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDNEXHUwNDRGXCJ9IFx1MDQzMVx1MDQ0M1x1MDQzNFx1MDQzNSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0M0UgXHUwNDNDXHUwNDMwXHUwNDNCXHUwNDM1OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYsIFx1MDQ0OVx1MDQzRSAke1gub3JpZ2lufSAke0cudmVyYn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1MDQxN1x1MDQzMFx1MDQzRFx1MDQzMFx1MDQzNFx1MDQ0Mlx1MDQzRSBcdTA0M0NcdTA0MzBcdTA0M0JcdTA0MzU6IFx1MDQzRVx1MDQ0N1x1MDQ1Nlx1MDQzQVx1MDQ0M1x1MDQ1NFx1MDQ0Mlx1MDQ0Q1x1MDQ0MVx1MDQ0RiwgXHUwNDQ5XHUwNDNFICR7WC5vcmlnaW59IFx1MDQzMVx1MDQ0M1x1MDQzNFx1MDQzNSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzOFx1MDQzOSBcdTA0NDBcdTA0NEZcdTA0MzRcdTA0M0VcdTA0M0E6IFx1MDQzRlx1MDQzRVx1MDQzMlx1MDQzOFx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0M0ZcdTA0M0VcdTA0NDdcdTA0MzhcdTA0M0RcdTA0MzBcdTA0NDJcdTA0MzhcdTA0NDFcdTA0NEYgXHUwNDM3IFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzhcdTA0MzkgXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0M0VcdTA0MzJcdTA0MzhcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDM3XHUwNDMwXHUwNDNBXHUwNDU2XHUwNDNEXHUwNDQ3XHUwNDQzXHUwNDMyXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDQxXHUwNDRGIFx1MDQzRFx1MDQzMCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzhcdTA0MzkgXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0M0VcdTA0MzJcdTA0MzhcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDNDXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDM4XHUwNDQyXHUwNDM4IFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDM4XHUwNDM5IFx1MDQ0MFx1MDQ0Rlx1MDQzNFx1MDQzRVx1MDQzQTogXHUwNDNGXHUwNDNFXHUwNDMyXHUwNDM4XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzMlx1MDQ1Nlx1MDQzNFx1MDQzRlx1MDQzRVx1MDQzMlx1MDQ1Nlx1MDQzNFx1MDQzMFx1MDQ0Mlx1MDQzOCBcdTA0NDhcdTA0MzBcdTA0MzFcdTA0M0JcdTA0M0VcdTA0M0RcdTA0NDMgJHtXLnBhdHRlcm59YDtyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDM4XHUwNDM5ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzNSBcdTA0NDdcdTA0MzhcdTA0NDFcdTA0M0JcdTA0M0U6IFx1MDQzRlx1MDQzRVx1MDQzMlx1MDQzOFx1MDQzRFx1MDQzRFx1MDQzRSBcdTA0MzFcdTA0NDNcdTA0NDJcdTA0MzggXHUwNDNBXHUwNDQwXHUwNDMwXHUwNDQyXHUwNDNEXHUwNDM4XHUwNDNDICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDQwXHUwNDNFXHUwNDM3XHUwNDNGXHUwNDU2XHUwNDM3XHUwNDNEXHUwNDMwXHUwNDNEXHUwNDM4XHUwNDM5IFx1MDQzQVx1MDQzQlx1MDQ0RVx1MDQ0NyR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNDU2XCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzOFx1MDQzOSBcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDcgXHUwNDQzICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0NTYgXHUwNDMyXHUwNDQ1XHUwNDU2XHUwNDM0XHUwNDNEXHUwNDU2IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQ1NlwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzUgXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDNEXHUwNDRGIFx1MDQ0MyAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ1NiBcdTA0MzJcdTA0NDVcdTA0NTZcdTA0MzRcdTA0M0RcdTA0NTYgXHUwNDM0XHUwNDMwXHUwNDNEXHUwNDU2XCJ9fX07ZnVuY3Rpb24gaHEoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZHUoKX19dmFyIGl1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MDYyRFx1MDYzMVx1MDY0OFx1MDY0MVwiLHZlcmI6XCJcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjdcIn0sZmlsZTp7dW5pdDpcIlx1MDYyOFx1MDYyN1x1MDYyNlx1MDY3OVx1MDYzM1wiLHZlcmI6XCJcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjdcIn0sYXJyYXk6e3VuaXQ6XCJcdTA2MjJcdTA2MjZcdTA2NzlcdTA2NDVcdTA2MzJcIix2ZXJiOlwiXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3XCJ9LHNldDp7dW5pdDpcIlx1MDYyMlx1MDYyNlx1MDY3OVx1MDY0NVx1MDYzMlwiLHZlcmI6XCJcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjdcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIlx1MDY0Nlx1MDY0NVx1MDYyOFx1MDYzMVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiXHUwNjIyXHUwNjMxXHUwNkQyXCI7aWYoWD09PW51bGwpcmV0dXJuXCJcdTA2NDZcdTA2NDRcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MDYyN1x1MDY0NiBcdTA2N0VcdTA2NzlcIixlbWFpbDpcIlx1MDYyN1x1MDZDQyBcdTA2NDVcdTA2Q0NcdTA2NDQgXHUwNjI3XHUwNkNDXHUwNjg4XHUwNjMxXHUwNkNDXHUwNjMzXCIsdXJsOlwiXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYzMSBcdTA2MjdcdTA2Q0NcdTA2NDRcIixlbW9qaTpcIlx1MDYyN1x1MDZDQ1x1MDY0NVx1MDY0OFx1MDYyQ1x1MDZDQ1wiLHV1aWQ6XCJcdTA2Q0NcdTA2NDggXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIix1dWlkdjQ6XCJcdTA2Q0NcdTA2NDggXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0MgXHUwNjQ4XHUwNkNDIDRcIix1dWlkdjY6XCJcdTA2Q0NcdTA2NDggXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0MgXHUwNjQ4XHUwNkNDIDZcIixuYW5vaWQ6XCJcdTA2NDZcdTA2Q0NcdTA2NDZcdTA2NDggXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY4OFx1MDZDQ1wiLGd1aWQ6XCJcdTA2MkNcdTA2Q0MgXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIixjdWlkOlwiXHUwNjMzXHUwNkNDIFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDXCIsY3VpZDI6XCJcdTA2MzNcdTA2Q0MgXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0MgMlwiLHVsaWQ6XCJcdTA2Q0NcdTA2NDggXHUwNjI3XHUwNkNDXHUwNjQ0IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIix4aWQ6XCJcdTA2MjdcdTA2Q0NcdTA2QTlcdTA2MzMgXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY4OFx1MDZDQ1wiLGtzdWlkOlwiXHUwNkE5XHUwNkQyIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2Q0NcdTA2NDggXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY4OFx1MDZDQ1wiLGRhdGV0aW1lOlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2MjdcdTA2NDggXHUwNjg4XHUwNkNDXHUwNjc5IFx1MDY3OVx1MDYyN1x1MDYyNlx1MDY0NVwiLGRhdGU6XCJcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjI3XHUwNkNDXHUwNjMzIFx1MDYyN1x1MDY0OCBcdTA2MkFcdTA2MjdcdTA2MzFcdTA2Q0NcdTA2MkVcIix0aW1lOlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2MjdcdTA2NDggXHUwNjQ4XHUwNjQyXHUwNjJBXCIsZHVyYXRpb246XCJcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjI3XHUwNkNDXHUwNjMzIFx1MDYyN1x1MDY0OCBcdTA2NDVcdTA2MkZcdTA2MkFcIixpcHY0OlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY3RVx1MDZDQyBcdTA2NDhcdTA2Q0MgNCBcdTA2MjdcdTA2Q0NcdTA2ODhcdTA2MzFcdTA2Q0NcdTA2MzNcIixpcHY2OlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY3RVx1MDZDQyBcdTA2NDhcdTA2Q0MgNiBcdTA2MjdcdTA2Q0NcdTA2ODhcdTA2MzFcdTA2Q0NcdTA2MzNcIixjaWRydjQ6XCJcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjdFXHUwNkNDIFx1MDY0OFx1MDZDQyA0IFx1MDYzMVx1MDZDQ1x1MDY0Nlx1MDYyQ1wiLGNpZHJ2NjpcIlx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2N0VcdTA2Q0MgXHUwNjQ4XHUwNkNDIDYgXHUwNjMxXHUwNkNDXHUwNjQ2XHUwNjJDXCIsYmFzZTY0OlwiXHUwNjI4XHUwNkNDXHUwNjMzIDY0IFx1MDYyN1x1MDY0NiBcdTA2QTlcdTA2NDhcdTA2ODhcdTA2ODggXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGXCIsYmFzZTY0dXJsOlwiXHUwNjI4XHUwNkNDXHUwNjMzIDY0IFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MzEgXHUwNjI3XHUwNkNDXHUwNjQ0IFx1MDYyN1x1MDY0NiBcdTA2QTlcdTA2NDhcdTA2ODhcdTA2ODggXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGXCIsanNvbl9zdHJpbmc6XCJcdTA2MkNcdTA2RDIgXHUwNjI3XHUwNkNDXHUwNjMzIFx1MDYyN1x1MDY0OCBcdTA2MjdcdTA2Q0NcdTA2NDYgXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGXCIsZTE2NDpcIlx1MDYyN1x1MDZDQyAxNjQgXHUwNjQ2XHUwNjQ1XHUwNjI4XHUwNjMxXCIsand0OlwiXHUwNjJDXHUwNkQyIFx1MDY4OFx1MDYyOFx1MDY0NFx1MDZDQ1x1MDY0OCBcdTA2NzlcdTA2Q0NcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNjI3XHUwNjQ2IFx1MDY3RVx1MDY3OVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDYyN1x1MDY0NiBcdTA2N0VcdTA2Nzk6ICR7WC5leHBlY3RlZH0gXHUwNjQ1XHUwNjJBXHUwNjQ4XHUwNjQyXHUwNjM5IFx1MDYyQVx1MDZCRVx1MDYyN1x1MDYwQyAke0ooWC5pbnB1dCl9IFx1MDY0NVx1MDY0OFx1MDYzNVx1MDY0OFx1MDY0NCBcdTA2QzFcdTA2NDhcdTA2MjdgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjI3XHUwNjQ2IFx1MDY3RVx1MDY3OTogJHt4KFgudmFsdWVzWzBdKX0gXHUwNjQ1XHUwNjJBXHUwNjQ4XHUwNjQyXHUwNjM5IFx1MDYyQVx1MDZCRVx1MDYyN2A7cmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MjJcdTA2N0VcdTA2MzRcdTA2NDY6ICR7UChYLnZhbHVlcyxcInxcIil9IFx1MDY0NVx1MDZDQ1x1MDZCQSBcdTA2MzNcdTA2RDIgXHUwNjI3XHUwNkNDXHUwNkE5IFx1MDY0NVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MkFcdTA2QkVcdTA2MjdgO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNjI4XHUwNkMxXHUwNjJBIFx1MDYyOFx1MDY5MVx1MDYyNzogJHtYLm9yaWdpbj8/XCJcdTA2NDhcdTA2Q0NcdTA2NDRcdTA2Q0NcdTA2NDhcIn0gXHUwNkE5XHUwNkQyICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTA2MzlcdTA2NDZcdTA2MjdcdTA2MzVcdTA2MzFcIn0gXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNkQyIFx1MDY0NVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MkFcdTA2QkVcdTA2RDJgO3JldHVybmBcdTA2MjhcdTA2QzFcdTA2MkEgXHUwNjI4XHUwNjkxXHUwNjI3OiAke1gub3JpZ2luPz9cIlx1MDY0OFx1MDZDQ1x1MDY0NFx1MDZDQ1x1MDY0OFwifSBcdTA2QTlcdTA2MjcgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyNyBcdTA2NDVcdTA2MkFcdTA2NDhcdTA2NDJcdTA2MzkgXHUwNjJBXHUwNkJFXHUwNjI3YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNjI4XHUwNkMxXHUwNjJBIFx1MDY4Nlx1MDZCRVx1MDY0OFx1MDY3OVx1MDYyNzogJHtYLm9yaWdpbn0gXHUwNkE5XHUwNkQyICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNkQyIFx1MDY0NVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MkFcdTA2QkVcdTA2RDJgO3JldHVybmBcdTA2MjhcdTA2QzFcdTA2MkEgXHUwNjg2XHUwNkJFXHUwNjQ4XHUwNjc5XHUwNjI3OiAke1gub3JpZ2lufSBcdTA2QTlcdTA2MjcgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyNyBcdTA2NDVcdTA2MkFcdTA2NDhcdTA2NDJcdTA2MzkgXHUwNjJBXHUwNkJFXHUwNjI3YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGOiBcIiR7Vy5wcmVmaXh9XCIgXHUwNjMzXHUwNkQyIFx1MDYzNFx1MDYzMVx1MDY0OFx1MDYzOSBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjg2XHUwNjI3XHUwNkMxXHUwNkNDXHUwNkQyYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MzNcdTA2NzlcdTA2MzFcdTA2NDZcdTA2QUY6IFwiJHtXLnN1ZmZpeH1cIiBcdTA2N0VcdTA2MzEgXHUwNjJFXHUwNjJBXHUwNjQ1IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyNyBcdTA2ODZcdTA2MjdcdTA2QzFcdTA2Q0NcdTA2RDJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGOiBcIiR7Vy5pbmNsdWRlc31cIiBcdTA2MzRcdTA2MjdcdTA2NDVcdTA2NDQgXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3IFx1MDY4Nlx1MDYyN1x1MDZDMVx1MDZDQ1x1MDZEMmA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MzNcdTA2NzlcdTA2MzFcdTA2NDZcdTA2QUY6IFx1MDY3RVx1MDZDQ1x1MDY3OVx1MDYzMVx1MDY0NiAke1cucGF0dGVybn0gXHUwNjMzXHUwNkQyIFx1MDY0NVx1MDZDQ1x1MDY4NiBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjg2XHUwNjI3XHUwNkMxXHUwNkNDXHUwNkQyYDtyZXR1cm5gXHUwNjNBXHUwNjQ0XHUwNjM3ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2NDZcdTA2NDVcdTA2MjhcdTA2MzE6ICR7WC5kaXZpc29yfSBcdTA2QTlcdTA2MjcgXHUwNjQ1XHUwNjM2XHUwNjI3XHUwNjM5XHUwNjQxIFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyNyBcdTA2ODZcdTA2MjdcdTA2QzFcdTA2Q0NcdTA2RDJgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MDYzQVx1MDZDQ1x1MDYzMSBcdTA2MkFcdTA2MzNcdTA2NDRcdTA2Q0NcdTA2NDUgXHUwNjM0XHUwNjJGXHUwNkMxIFx1MDZBOVx1MDZDQyR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNjMyXCI6XCJcIn06ICR7UChYLmtleXMsXCJcdTA2MEMgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gJHtYLm9yaWdpbn0gXHUwNjQ1XHUwNkNDXHUwNkJBIFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2QTlcdTA2Q0NgO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MjdcdTA2NDYgXHUwNjdFXHUwNjc5XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1MDY0NVx1MDZDQ1x1MDZCQSBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjQ4XHUwNkNDXHUwNjQ0XHUwNkNDXHUwNjQ4YDtkZWZhdWx0OnJldHVyblwiXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDYyN1x1MDY0NiBcdTA2N0VcdTA2NzlcIn19fTtmdW5jdGlvbiB1cSgpe3JldHVybntsb2NhbGVFcnJvcjppdSgpfX12YXIgbnU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwia1x1MDBGRCB0XHUxRUYxXCIsdmVyYjpcImNcdTAwRjNcIn0sZmlsZTp7dW5pdDpcImJ5dGVcIix2ZXJiOlwiY1x1MDBGM1wifSxhcnJheTp7dW5pdDpcInBoXHUxRUE3biB0XHUxRUVEXCIsdmVyYjpcImNcdTAwRjNcIn0sc2V0Ont1bml0OlwicGhcdTFFQTduIHRcdTFFRURcIix2ZXJiOlwiY1x1MDBGM1wifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwic1x1MUVEMVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwibVx1MUVBM25nXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTAxMTFcdTFFQTd1IHZcdTAwRTBvXCIsZW1haWw6XCJcdTAxMTFcdTFFQ0JhIGNoXHUxRUM5IGVtYWlsXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIm5nXHUwMEUweSBnaVx1MUVERCBJU09cIixkYXRlOlwibmdcdTAwRTB5IElTT1wiLHRpbWU6XCJnaVx1MUVERCBJU09cIixkdXJhdGlvbjpcImtob1x1MUVBM25nIHRoXHUxRUREaSBnaWFuIElTT1wiLGlwdjQ6XCJcdTAxMTFcdTFFQ0JhIGNoXHUxRUM5IElQdjRcIixpcHY2OlwiXHUwMTExXHUxRUNCYSBjaFx1MUVDOSBJUHY2XCIsY2lkcnY0OlwiZFx1MUVBM2kgSVB2NFwiLGNpZHJ2NjpcImRcdTFFQTNpIElQdjZcIixiYXNlNjQ6XCJjaHVcdTFFRDdpIG1cdTAwRTMgaFx1MDBGM2EgYmFzZTY0XCIsYmFzZTY0dXJsOlwiY2h1XHUxRUQ3aSBtXHUwMEUzIGhcdTAwRjNhIGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiY2h1XHUxRUQ3aSBKU09OXCIsZTE2NDpcInNcdTFFRDEgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwMTExXHUxRUE3dSB2XHUwMEUwb1wifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwMTEwXHUxRUE3dSB2XHUwMEUwbyBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzc6IG1vbmcgXHUwMTExXHUxRUUzaSAke1guZXhwZWN0ZWR9LCBuaFx1MUVBRG4gXHUwMTExXHUwMUIwXHUxRUUzYyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwMTEwXHUxRUE3dSB2XHUwMEUwbyBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzc6IG1vbmcgXHUwMTExXHUxRUUzaSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFRcdTAwRjl5IGNoXHUxRUNEbiBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzc6IG1vbmcgXHUwMTExXHUxRUUzaSBtXHUxRUQ5dCB0cm9uZyBjXHUwMEUxYyBnaVx1MDBFMSB0clx1MUVDQiAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBRdVx1MDBFMSBsXHUxRURCbjogbW9uZyBcdTAxMTFcdTFFRTNpICR7WC5vcmlnaW4/P1wiZ2lcdTAwRTEgdHJcdTFFQ0JcIn0gJHtHLnZlcmJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJwaFx1MUVBN24gdFx1MUVFRFwifWA7cmV0dXJuYFF1XHUwMEUxIGxcdTFFREJuOiBtb25nIFx1MDExMVx1MUVFM2kgJHtYLm9yaWdpbj8/XCJnaVx1MDBFMSB0clx1MUVDQlwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBRdVx1MDBFMSBuaFx1MUVDRjogbW9uZyBcdTAxMTFcdTFFRTNpICR7WC5vcmlnaW59ICR7Ry52ZXJifSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gUXVcdTAwRTEgbmhcdTFFQ0Y6IG1vbmcgXHUwMTExXHUxRUUzaSAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYENodVx1MUVEN2kga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBwaFx1MUVBM2kgYlx1MUVBRnQgXHUwMTExXHUxRUE3dSBiXHUxRUIxbmcgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYENodVx1MUVEN2kga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBwaFx1MUVBM2kga1x1MUVCRnQgdGhcdTAwRkFjIGJcdTFFQjFuZyBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBDaHVcdTFFRDdpIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNzogcGhcdTFFQTNpIGJhbyBnXHUxRUQzbSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYENodVx1MUVEN2kga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBwaFx1MUVBM2kga2hcdTFFREJwIHZcdTFFREJpIG1cdTFFQUJ1ICR7Vy5wYXR0ZXJufWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzdgfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBTXHUxRUQxIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNzogcGhcdTFFQTNpIGxcdTAwRTAgYlx1MUVEOWkgc1x1MUVEMSBjXHUxRUU3YSAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYEtoXHUwMEYzYSBraFx1MDBGNG5nIFx1MDExMVx1MDFCMFx1MUVFM2MgbmhcdTFFQURuIGRcdTFFQTFuZzogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gS2hcdTAwRjNhIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNyB0cm9uZyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwMTEwXHUxRUE3dSB2XHUwMEUwbyBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzdcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gR2lcdTAwRTEgdHJcdTFFQ0Iga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3IHRyb25nICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwMTEwXHUxRUE3dSB2XHUwMEUwbyBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzdcIn19fTtmdW5jdGlvbiBtcSgpe3JldHVybntsb2NhbGVFcnJvcjpudSgpfX12YXIgcnU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHU1QjU3XHU3QjI2XCIsdmVyYjpcIlx1NTMwNVx1NTQyQlwifSxmaWxlOnt1bml0OlwiXHU1QjU3XHU4MjgyXCIsdmVyYjpcIlx1NTMwNVx1NTQyQlwifSxhcnJheTp7dW5pdDpcIlx1OTg3OVwiLHZlcmI6XCJcdTUzMDVcdTU0MkJcIn0sc2V0Ont1bml0OlwiXHU5ODc5XCIsdmVyYjpcIlx1NTMwNVx1NTQyQlwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIlx1OTc1RVx1NjU3MFx1NUI1NyhOYU4pXCI6XCJcdTY1NzBcdTVCNTdcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1NjU3MFx1N0VDNFwiO2lmKFg9PT1udWxsKXJldHVyblwiXHU3QTdBXHU1MDNDKG51bGwpXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdThGOTNcdTUxNjVcIixlbWFpbDpcIlx1NzUzNVx1NUI1MFx1OTBBRVx1NEVGNlwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHU4ODY4XHU2MEM1XHU3QjI2XHU1M0Y3XCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPXHU2NUU1XHU2NzFGXHU2NUY2XHU5NUY0XCIsZGF0ZTpcIklTT1x1NjVFNVx1NjcxRlwiLHRpbWU6XCJJU09cdTY1RjZcdTk1RjRcIixkdXJhdGlvbjpcIklTT1x1NjVGNlx1OTU3RlwiLGlwdjQ6XCJJUHY0XHU1NzMwXHU1NzQwXCIsaXB2NjpcIklQdjZcdTU3MzBcdTU3NDBcIixjaWRydjQ6XCJJUHY0XHU3RjUxXHU2QkI1XCIsY2lkcnY2OlwiSVB2Nlx1N0Y1MVx1NkJCNVwiLGJhc2U2NDpcImJhc2U2NFx1N0YxNlx1NzgwMVx1NUI1N1x1N0IyNlx1NEUzMlwiLGJhc2U2NHVybDpcImJhc2U2NHVybFx1N0YxNlx1NzgwMVx1NUI1N1x1N0IyNlx1NEUzMlwiLGpzb25fc3RyaW5nOlwiSlNPTlx1NUI1N1x1N0IyNlx1NEUzMlwiLGUxNjQ6XCJFLjE2NFx1NTNGN1x1NzgwMVwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdThGOTNcdTUxNjVcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1NjVFMFx1NjU0OFx1OEY5M1x1NTE2NVx1RkYxQVx1NjcxRlx1NjcxQiAke1guZXhwZWN0ZWR9XHVGRjBDXHU1QjlFXHU5NjQ1XHU2M0E1XHU2NTM2ICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTY1RTBcdTY1NDhcdThGOTNcdTUxNjVcdUZGMUFcdTY3MUZcdTY3MUIgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTY1RTBcdTY1NDhcdTkwMDlcdTk4NzlcdUZGMUFcdTY3MUZcdTY3MUJcdTRFRTVcdTRFMEJcdTRFNEJcdTRFMDAgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHU2NTcwXHU1MDNDXHU4RkM3XHU1OTI3XHVGRjFBXHU2NzFGXHU2NzFCICR7WC5vcmlnaW4/P1wiXHU1MDNDXCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTRFMkFcdTUxNDNcdTdEMjBcIn1gO3JldHVybmBcdTY1NzBcdTUwM0NcdThGQzdcdTU5MjdcdUZGMUFcdTY3MUZcdTY3MUIgJHtYLm9yaWdpbj8/XCJcdTUwM0NcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHU2NTcwXHU1MDNDXHU4RkM3XHU1QzBGXHVGRjFBXHU2NzFGXHU2NzFCICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTY1NzBcdTUwM0NcdThGQzdcdTVDMEZcdUZGMUFcdTY3MUZcdTY3MUIgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTY1RTBcdTY1NDhcdTVCNTdcdTdCMjZcdTRFMzJcdUZGMUFcdTVGQzVcdTk4N0JcdTRFRTUgXCIke1cucHJlZml4fVwiIFx1NUYwMFx1NTkzNGA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTY1RTBcdTY1NDhcdTVCNTdcdTdCMjZcdTRFMzJcdUZGMUFcdTVGQzVcdTk4N0JcdTRFRTUgXCIke1cuc3VmZml4fVwiIFx1N0VEM1x1NUMzRWA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1NjVFMFx1NjU0OFx1NUI1N1x1N0IyNlx1NEUzMlx1RkYxQVx1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQiBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1NjVFMFx1NjU0OFx1NUI1N1x1N0IyNlx1NEUzMlx1RkYxQVx1NUZDNVx1OTg3Qlx1NkVFMVx1OERCM1x1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRiAke1cucGF0dGVybn1gO3JldHVybmBcdTY1RTBcdTY1NDgke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTY1RTBcdTY1NDhcdTY1NzBcdTVCNTdcdUZGMUFcdTVGQzVcdTk4N0JcdTY2MkYgJHtYLmRpdmlzb3J9IFx1NzY4NFx1NTAwRFx1NjU3MGA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHU1MUZBXHU3M0IwXHU2NzJBXHU3N0U1XHU3Njg0XHU5NTJFKGtleSk6ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1NEUyRFx1NzY4NFx1OTUyRShrZXkpXHU2NUUwXHU2NTQ4YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTY1RTBcdTY1NDhcdThGOTNcdTUxNjVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gJHtYLm9yaWdpbn0gXHU0RTJEXHU1MzA1XHU1NDJCXHU2NUUwXHU2NTQ4XHU1MDNDKHZhbHVlKWA7ZGVmYXVsdDpyZXR1cm5cIlx1NjVFMFx1NjU0OFx1OEY5M1x1NTE2NVwifX19O2Z1bmN0aW9uIGxxKCl7cmV0dXJue2xvY2FsZUVycm9yOnJ1KCl9fXZhciBvdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTVCNTdcdTUxNDNcIix2ZXJiOlwiXHU2NEMxXHU2NzA5XCJ9LGZpbGU6e3VuaXQ6XCJcdTRGNERcdTUxNDNcdTdENDRcIix2ZXJiOlwiXHU2NEMxXHU2NzA5XCJ9LGFycmF5Ont1bml0OlwiXHU5ODA1XHU3NkVFXCIsdmVyYjpcIlx1NjRDMVx1NjcwOVwifSxzZXQ6e3VuaXQ6XCJcdTk4MDVcdTc2RUVcIix2ZXJiOlwiXHU2NEMxXHU2NzA5XCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdThGMzhcdTUxNjVcIixlbWFpbDpcIlx1OTBGNVx1NEVGNlx1NTczMFx1NTc0MFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gXHU2NUU1XHU2NzFGXHU2NjQyXHU5NTkzXCIsZGF0ZTpcIklTTyBcdTY1RTVcdTY3MUZcIix0aW1lOlwiSVNPIFx1NjY0Mlx1OTU5M1wiLGR1cmF0aW9uOlwiSVNPIFx1NjcxRlx1OTU5M1wiLGlwdjQ6XCJJUHY0IFx1NEY0RFx1NTc0MFwiLGlwdjY6XCJJUHY2IFx1NEY0RFx1NTc0MFwiLGNpZHJ2NDpcIklQdjQgXHU3QkM0XHU1NzBEXCIsY2lkcnY2OlwiSVB2NiBcdTdCQzRcdTU3MERcIixiYXNlNjQ6XCJiYXNlNjQgXHU3REU4XHU3OEJDXHU1QjU3XHU0RTMyXCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsIFx1N0RFOFx1NzhCQ1x1NUI1N1x1NEUzMlwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdTVCNTdcdTRFMzJcIixlMTY0OlwiRS4xNjQgXHU2NTc4XHU1MDNDXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1OEYzOFx1NTE2NVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHU3MTIxXHU2NTQ4XHU3Njg0XHU4RjM4XHU1MTY1XHU1MDNDXHVGRjFBXHU5ODEwXHU2NzFGXHU3MEJBICR7WC5leHBlY3RlZH1cdUZGMENcdTRGNDZcdTY1MzZcdTUyMzAgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1OEYzOFx1NTE2NVx1NTAzQ1x1RkYxQVx1OTgxMFx1NjcxRlx1NzBCQSAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1OTA3OFx1OTgwNVx1RkYxQVx1OTgxMFx1NjcxRlx1NzBCQVx1NEVFNVx1NEUwQlx1NTE3Nlx1NEUyRFx1NEU0Qlx1NEUwMCAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTY1NzhcdTUwM0NcdTkwNEVcdTU5MjdcdUZGMUFcdTk4MTBcdTY3MUYgJHtYLm9yaWdpbj8/XCJcdTUwM0NcIn0gXHU2MUM5XHU3MEJBICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTUwMEJcdTUxNDNcdTdEMjBcIn1gO3JldHVybmBcdTY1NzhcdTUwM0NcdTkwNEVcdTU5MjdcdUZGMUFcdTk4MTBcdTY3MUYgJHtYLm9yaWdpbj8/XCJcdTUwM0NcIn0gXHU2MUM5XHU3MEJBICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1NjU3OFx1NTAzQ1x1OTA0RVx1NUMwRlx1RkYxQVx1OTgxMFx1NjcxRiAke1gub3JpZ2lufSBcdTYxQzlcdTcwQkEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1NjU3OFx1NTAzQ1x1OTA0RVx1NUMwRlx1RkYxQVx1OTgxMFx1NjcxRiAke1gub3JpZ2lufSBcdTYxQzlcdTcwQkEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdTVCNTdcdTRFMzJcdUZGMUFcdTVGQzVcdTk4MDhcdTRFRTUgXCIke1cucHJlZml4fVwiIFx1OTU4Qlx1OTgyRGA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdTVCNTdcdTRFMzJcdUZGMUFcdTVGQzVcdTk4MDhcdTRFRTUgXCIke1cuc3VmZml4fVwiIFx1N0Q1MFx1NUMzRWA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1NUI1N1x1NEUzMlx1RkYxQVx1NUZDNVx1OTgwOFx1NTMwNVx1NTQyQiBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1NUI1N1x1NEUzMlx1RkYxQVx1NUZDNVx1OTgwOFx1N0IyNlx1NTQwOFx1NjgzQ1x1NUYwRiAke1cucGF0dGVybn1gO3JldHVybmBcdTcxMjFcdTY1NDhcdTc2ODQgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHU3MTIxXHU2NTQ4XHU3Njg0XHU2NTc4XHU1QjU3XHVGRjFBXHU1RkM1XHU5ODA4XHU3MEJBICR7WC5kaXZpc29yfSBcdTc2ODRcdTUwMERcdTY1NzhgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1NzEyMVx1NkNENVx1OEI1OFx1NTIyNVx1NzY4NFx1OTM3NVx1NTAzQyR7WC5rZXlzLmxlbmd0aD4xP1wiXHU1MDExXCI6XCJcIn1cdUZGMUEke1AoWC5rZXlzLFwiXHUzMDAxXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gJHtYLm9yaWdpbn0gXHU0RTJEXHU2NzA5XHU3MTIxXHU2NTQ4XHU3Njg0XHU5Mzc1XHU1MDNDYDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTcxMjFcdTY1NDhcdTc2ODRcdThGMzhcdTUxNjVcdTUwM0NcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gJHtYLm9yaWdpbn0gXHU0RTJEXHU2NzA5XHU3MTIxXHU2NTQ4XHU3Njg0XHU1MDNDYDtkZWZhdWx0OnJldHVyblwiXHU3MTIxXHU2NTQ4XHU3Njg0XHU4RjM4XHU1MTY1XHU1MDNDXCJ9fX07ZnVuY3Rpb24gY3EoKXtyZXR1cm57bG9jYWxlRXJyb3I6b3UoKX19dmFyIFgzPVN5bWJvbChcIlpvZE91dHB1dFwiKSxZMz1TeW1ib2woXCJab2RJbnB1dFwiKTtjbGFzcyBiUXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwfWFkZCgkLC4uLlEpe2xldCBKPVFbMF07aWYodGhpcy5fbWFwLnNldCgkLEopLEomJnR5cGVvZiBKPT09XCJvYmplY3RcIiYmXCJpZFwiaW4gSil7aWYodGhpcy5faWRtYXAuaGFzKEouaWQpKXRocm93IEVycm9yKGBJRCAke0ouaWR9IGFscmVhZHkgZXhpc3RzIGluIHRoZSByZWdpc3RyeWApO3RoaXMuX2lkbWFwLnNldChKLmlkLCQpfXJldHVybiB0aGlzfXJlbW92ZSgkKXtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSgkKSx0aGlzfWdldCgkKXtsZXQgUT0kLl96b2QucGFyZW50O2lmKFEpe2xldCBKPXsuLi50aGlzLmdldChRKT8/e319O3JldHVybiBkZWxldGUgSi5pZCx7Li4uSiwuLi50aGlzLl9tYXAuZ2V0KCQpfX1yZXR1cm4gdGhpcy5fbWFwLmdldCgkKX1oYXMoJCl7cmV0dXJuIHRoaXMuX21hcC5oYXMoJCl9fWZ1bmN0aW9uIF9RKCl7cmV0dXJuIG5ldyBiUX12YXIgQTY9X1EoKTtmdW5jdGlvbiBXMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLC4uLlMoUSl9KX1mdW5jdGlvbiBwcSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGNvZXJjZTohMCwuLi5TKFEpfSl9ZnVuY3Rpb24gU1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJlbWFpbFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBzOCgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImd1aWRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24ga1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1dWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIHZRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXVpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLHZlcnNpb246XCJ2NFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBDUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInV1aWRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSx2ZXJzaW9uOlwidjZcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gVFEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1dWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsdmVyc2lvbjpcInY3XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIHhRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXJsXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGZRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiZW1vamlcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24geVEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJuYW5vaWRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gZ1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJjdWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGhRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiY3VpZDJcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gdVEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1bGlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIG1RKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwieGlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGxRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0Olwia3N1aWRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gY1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJpcHY0XCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIHBRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiaXB2NlwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBkUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImNpZHJ2NFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBpUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImNpZHJ2NlwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBuUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImJhc2U2NFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiByUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImJhc2U2NHVybFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBvUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImUxNjRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gdFEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJqd3RcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9dmFyIEczPXtBbnk6bnVsbCxNaW51dGU6LTEsU2Vjb25kOjAsTWlsbGlzZWNvbmQ6MyxNaWNyb3NlY29uZDo2fTtmdW5jdGlvbiBkcSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImRhdGV0aW1lXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLlMoUSl9KX1mdW5jdGlvbiBpcSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImRhdGVcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gbnEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ0aW1lXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIscHJlY2lzaW9uOm51bGwsLi4uUyhRKX0pfWZ1bmN0aW9uIHJxKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiZHVyYXRpb25cIixjaGVjazpcInN0cmluZ19mb3JtYXRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gVTMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudW1iZXJcIixjaGVja3M6W10sLi4uUyhRKX0pfWZ1bmN0aW9uIG9xKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVtYmVyXCIsY29lcmNlOiEwLGNoZWNrczpbXSwuLi5TKFEpfSl9ZnVuY3Rpb24gSDMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudW1iZXJcIixjaGVjazpcIm51bWJlcl9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJzYWZlaW50XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIEszKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVtYmVyXCIsY2hlY2s6XCJudW1iZXJfZm9ybWF0XCIsYWJvcnQ6ITEsZm9ybWF0OlwiZmxvYXQzMlwiLC4uLlMoUSl9KX1mdW5jdGlvbiBxMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bWJlclwiLGNoZWNrOlwibnVtYmVyX2Zvcm1hdFwiLGFib3J0OiExLGZvcm1hdDpcImZsb2F0NjRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gVjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudW1iZXJcIixjaGVjazpcIm51bWJlcl9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJpbnQzMlwiLC4uLlMoUSl9KX1mdW5jdGlvbiBCMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bWJlclwiLGNoZWNrOlwibnVtYmVyX2Zvcm1hdFwiLGFib3J0OiExLGZvcm1hdDpcInVpbnQzMlwiLC4uLlMoUSl9KX1mdW5jdGlvbiB6MygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImJvb2xlYW5cIiwuLi5TKFEpfSl9ZnVuY3Rpb24gdHEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJib29sZWFuXCIsY29lcmNlOiEwLC4uLlMoUSl9KX1mdW5jdGlvbiBOMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImJpZ2ludFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBhcSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImJpZ2ludFwiLGNvZXJjZTohMCwuLi5TKFEpfSl9ZnVuY3Rpb24gdzMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJiaWdpbnRcIixjaGVjazpcImJpZ2ludF9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJpbnQ2NFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBPMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImJpZ2ludFwiLGNoZWNrOlwiYmlnaW50X2Zvcm1hdFwiLGFib3J0OiExLGZvcm1hdDpcInVpbnQ2NFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBEMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN5bWJvbFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBGMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInVuZGVmaW5lZFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBaMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bGxcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gTTMoJCl7cmV0dXJuIG5ldyAkKHt0eXBlOlwiYW55XCJ9KX1mdW5jdGlvbiBTMCgkKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJ1bmtub3duXCJ9KX1mdW5jdGlvbiBMMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm5ldmVyXCIsLi4uUyhRKX0pfWZ1bmN0aW9uIGozKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwidm9pZFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBBMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImRhdGVcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gc3EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJkYXRlXCIsY29lcmNlOiEwLC4uLlMoUSl9KX1mdW5jdGlvbiBJMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm5hblwiLC4uLlMoUSl9KX1mdW5jdGlvbiBhNCgkLFEpe3JldHVybiBuZXcgSlkoe2NoZWNrOlwibGVzc190aGFuXCIsLi4uUyhRKSx2YWx1ZTokLGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIHQ2KCQsUSl7cmV0dXJuIG5ldyBKWSh7Y2hlY2s6XCJsZXNzX3RoYW5cIiwuLi5TKFEpLHZhbHVlOiQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gczQoJCxRKXtyZXR1cm4gbmV3IFhZKHtjaGVjazpcImdyZWF0ZXJfdGhhblwiLC4uLlMoUSksdmFsdWU6JCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBJNigkLFEpe3JldHVybiBuZXcgWFkoe2NoZWNrOlwiZ3JlYXRlcl90aGFuXCIsLi4uUyhRKSx2YWx1ZTokLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIGVxKCQpe3JldHVybiBzNCgwLCQpfWZ1bmN0aW9uICRWKCQpe3JldHVybiBhNCgwLCQpfWZ1bmN0aW9uIFFWKCQpe3JldHVybiB0NigwLCQpfWZ1bmN0aW9uIEpWKCQpe3JldHVybiBJNigwLCQpfWZ1bmN0aW9uIGswKCQsUSl7cmV0dXJuIG5ldyB4Syh7Y2hlY2s6XCJtdWx0aXBsZV9vZlwiLC4uLlMoUSksdmFsdWU6JH0pfWZ1bmN0aW9uIGU4KCQsUSl7cmV0dXJuIG5ldyBnSyh7Y2hlY2s6XCJtYXhfc2l6ZVwiLC4uLlMoUSksbWF4aW11bTokfSl9ZnVuY3Rpb24gdjAoJCxRKXtyZXR1cm4gbmV3IGhLKHtjaGVjazpcIm1pbl9zaXplXCIsLi4uUyhRKSxtaW5pbXVtOiR9KX1mdW5jdGlvbiBhUSgkLFEpe3JldHVybiBuZXcgdUsoe2NoZWNrOlwic2l6ZV9lcXVhbHNcIiwuLi5TKFEpLHNpemU6JH0pfWZ1bmN0aW9uICQ5KCQsUSl7cmV0dXJuIG5ldyBtSyh7Y2hlY2s6XCJtYXhfbGVuZ3RoXCIsLi4uUyhRKSxtYXhpbXVtOiR9KX1mdW5jdGlvbiBrMSgkLFEpe3JldHVybiBuZXcgbEsoe2NoZWNrOlwibWluX2xlbmd0aFwiLC4uLlMoUSksbWluaW11bTokfSl9ZnVuY3Rpb24gUTkoJCxRKXtyZXR1cm4gbmV3IGNLKHtjaGVjazpcImxlbmd0aF9lcXVhbHNcIiwuLi5TKFEpLGxlbmd0aDokfSl9ZnVuY3Rpb24gc1EoJCxRKXtyZXR1cm4gbmV3IHBLKHtjaGVjazpcInN0cmluZ19mb3JtYXRcIixmb3JtYXQ6XCJyZWdleFwiLC4uLlMoUSkscGF0dGVybjokfSl9ZnVuY3Rpb24gZVEoJCl7cmV0dXJuIG5ldyBkSyh7Y2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsZm9ybWF0OlwibG93ZXJjYXNlXCIsLi4uUygkKX0pfWZ1bmN0aW9uICRKKCQpe3JldHVybiBuZXcgaUsoe2NoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGZvcm1hdDpcInVwcGVyY2FzZVwiLC4uLlMoJCl9KX1mdW5jdGlvbiBRSigkLFEpe3JldHVybiBuZXcgbksoe2NoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGZvcm1hdDpcImluY2x1ZGVzXCIsLi4uUyhRKSxpbmNsdWRlczokfSl9ZnVuY3Rpb24gSkooJCxRKXtyZXR1cm4gbmV3IHJLKHtjaGVjazpcInN0cmluZ19mb3JtYXRcIixmb3JtYXQ6XCJzdGFydHNfd2l0aFwiLC4uLlMoUSkscHJlZml4OiR9KX1mdW5jdGlvbiBYSigkLFEpe3JldHVybiBuZXcgb0soe2NoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGZvcm1hdDpcImVuZHNfd2l0aFwiLC4uLlMoUSksc3VmZml4OiR9KX1mdW5jdGlvbiBYVigkLFEsSil7cmV0dXJuIG5ldyB0Syh7Y2hlY2s6XCJwcm9wZXJ0eVwiLHByb3BlcnR5OiQsc2NoZW1hOlEsLi4uUyhKKX0pfWZ1bmN0aW9uIFlKKCQsUSl7cmV0dXJuIG5ldyBhSyh7Y2hlY2s6XCJtaW1lX3R5cGVcIixtaW1lOiQsLi4uUyhRKX0pfWZ1bmN0aW9uIGU0KCQpe3JldHVybiBuZXcgc0soe2NoZWNrOlwib3ZlcndyaXRlXCIsdHg6JH0pfWZ1bmN0aW9uIFdKKCQpe3JldHVybiBlNCgoUSk9PlEubm9ybWFsaXplKCQpKX1mdW5jdGlvbiBHSigpe3JldHVybiBlNCgoJCk9PiQudHJpbSgpKX1mdW5jdGlvbiBVSigpe3JldHVybiBlNCgoJCk9PiQudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gSEooKXtyZXR1cm4gZTQoKCQpPT4kLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIEtKKCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJhcnJheVwiLGVsZW1lbnQ6USwuLi5TKEopfSl9ZnVuY3Rpb24gdHUoJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcInVuaW9uXCIsb3B0aW9uczpRLC4uLlMoSil9KX1mdW5jdGlvbiBhdSgkLFEsSixZKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJ1bmlvblwiLG9wdGlvbnM6SixkaXNjcmltaW5hdG9yOlEsLi4uUyhZKX0pfWZ1bmN0aW9uIHN1KCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJpbnRlcnNlY3Rpb25cIixsZWZ0OlEscmlnaHQ6Sn0pfWZ1bmN0aW9uIFlWKCQsUSxKLFkpe2xldCBYPUogaW5zdGFuY2VvZiBvO3JldHVybiBuZXcgJCh7dHlwZTpcInR1cGxlXCIsaXRlbXM6USxyZXN0Olg/SjpudWxsLC4uLlMoWD9ZOkopfSl9ZnVuY3Rpb24gZXUoJCxRLEosWSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwicmVjb3JkXCIsa2V5VHlwZTpRLHZhbHVlVHlwZTpKLC4uLlMoWSl9KX1mdW5jdGlvbiAkbSgkLFEsSixZKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJtYXBcIixrZXlUeXBlOlEsdmFsdWVUeXBlOkosLi4uUyhZKX0pfWZ1bmN0aW9uIFFtKCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzZXRcIix2YWx1ZVR5cGU6USwuLi5TKEopfSl9ZnVuY3Rpb24gSm0oJCxRLEope2xldCBZPUFycmF5LmlzQXJyYXkoUSk/T2JqZWN0LmZyb21FbnRyaWVzKFEubWFwKChYKT0+W1gsWF0pKTpRO3JldHVybiBuZXcgJCh7dHlwZTpcImVudW1cIixlbnRyaWVzOlksLi4uUyhKKX0pfWZ1bmN0aW9uIFhtKCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJlbnVtXCIsZW50cmllczpRLC4uLlMoSil9KX1mdW5jdGlvbiBZbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwibGl0ZXJhbFwiLHZhbHVlczpBcnJheS5pc0FycmF5KFEpP1E6W1FdLC4uLlMoSil9KX1mdW5jdGlvbiBSMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImZpbGVcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gV20oJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJ0cmFuc2Zvcm1cIix0cmFuc2Zvcm06UX0pfWZ1bmN0aW9uIEdtKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwib3B0aW9uYWxcIixpbm5lclR5cGU6UX0pfWZ1bmN0aW9uIFVtKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVsbGFibGVcIixpbm5lclR5cGU6UX0pfWZ1bmN0aW9uIEhtKCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJkZWZhdWx0XCIsaW5uZXJUeXBlOlEsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2YgSj09PVwiZnVuY3Rpb25cIj9KKCk6Sn19KX1mdW5jdGlvbiBLbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwibm9ub3B0aW9uYWxcIixpbm5lclR5cGU6USwuLi5TKEopfSl9ZnVuY3Rpb24gcW0oJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdWNjZXNzXCIsaW5uZXJUeXBlOlF9KX1mdW5jdGlvbiBWbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiY2F0Y2hcIixpbm5lclR5cGU6USxjYXRjaFZhbHVlOnR5cGVvZiBKPT09XCJmdW5jdGlvblwiP0o6KCk9Pkp9KX1mdW5jdGlvbiBCbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwicGlwZVwiLGluOlEsb3V0Okp9KX1mdW5jdGlvbiB6bSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInJlYWRvbmx5XCIsaW5uZXJUeXBlOlF9KX1mdW5jdGlvbiBObSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwidGVtcGxhdGVfbGl0ZXJhbFwiLHBhcnRzOlEsLi4uUyhKKX0pfWZ1bmN0aW9uIHdtKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibGF6eVwiLGdldHRlcjpRfSl9ZnVuY3Rpb24gT20oJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJwcm9taXNlXCIsaW5uZXJUeXBlOlF9KX1mdW5jdGlvbiBQMygkLFEsSil7bGV0IFk9UyhKKTtyZXR1cm4gWS5hYm9ydD8/KFkuYWJvcnQ9ITApLG5ldyAkKHt0eXBlOlwiY3VzdG9tXCIsY2hlY2s6XCJjdXN0b21cIixmbjpRLC4uLll9KX1mdW5jdGlvbiBFMygkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiY3VzdG9tXCIsY2hlY2s6XCJjdXN0b21cIixmbjpRLC4uLlMoSil9KX1mdW5jdGlvbiBiMygkLFEpe2xldCBKPVMoUSksWT1KLnRydXRoeT8/W1widHJ1ZVwiLFwiMVwiLFwieWVzXCIsXCJvblwiLFwieVwiLFwiZW5hYmxlZFwiXSxYPUouZmFsc3k/P1tcImZhbHNlXCIsXCIwXCIsXCJub1wiLFwib2ZmXCIsXCJuXCIsXCJkaXNhYmxlZFwiXTtpZihKLmNhc2UhPT1cInNlbnNpdGl2ZVwiKVk9WS5tYXAoKHcpPT50eXBlb2Ygdz09PVwic3RyaW5nXCI/dy50b0xvd2VyQ2FzZSgpOncpLFg9WC5tYXAoKHcpPT50eXBlb2Ygdz09PVwic3RyaW5nXCI/dy50b0xvd2VyQ2FzZSgpOncpO2xldCBXPW5ldyBTZXQoWSksRz1uZXcgU2V0KFgpLFU9JC5QaXBlPz90OCxIPSQuQm9vbGVhbj8/bjgscT0kLlN0cmluZz8/XzEsQj1uZXcoJC5UcmFuc2Zvcm0/P284KSh7dHlwZTpcInRyYW5zZm9ybVwiLHRyYW5zZm9ybToodyxPKT0+e2xldCBEPXc7aWYoSi5jYXNlIT09XCJzZW5zaXRpdmVcIilEPUQudG9Mb3dlckNhc2UoKTtpZihXLmhhcyhEKSlyZXR1cm4hMDtlbHNlIGlmKEcuaGFzKEQpKXJldHVybiExO2Vsc2UgcmV0dXJuIE8uaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3ZhbHVlXCIsZXhwZWN0ZWQ6XCJzdHJpbmdib29sXCIsdmFsdWVzOlsuLi5XLC4uLkddLGlucHV0Ok8udmFsdWUsaW5zdDpCfSkse319LGVycm9yOkouZXJyb3J9KSx6PW5ldyBVKHt0eXBlOlwicGlwZVwiLGluOm5ldyBxKHt0eXBlOlwic3RyaW5nXCIsZXJyb3I6Si5lcnJvcn0pLG91dDpCLGVycm9yOkouZXJyb3J9KTtyZXR1cm4gbmV3IFUoe3R5cGU6XCJwaXBlXCIsaW46eixvdXQ6bmV3IEgoe3R5cGU6XCJib29sZWFuXCIsZXJyb3I6Si5lcnJvcn0pLGVycm9yOkouZXJyb3J9KX1mdW5jdGlvbiBfMygkLFEsSixZPXt9KXtsZXQgWD1TKFkpLFc9ey4uLlMoWSksY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsdHlwZTpcInN0cmluZ1wiLGZvcm1hdDpRLGZuOnR5cGVvZiBKPT09XCJmdW5jdGlvblwiP0o6KFUpPT5KLnRlc3QoVSksLi4uWH07aWYoSiBpbnN0YW5jZW9mIFJlZ0V4cClXLnBhdHRlcm49SjtyZXR1cm4gbmV3ICQoVyl9Y2xhc3MgV1Z7Y29uc3RydWN0b3IoJCl7dGhpcy5fZGVmPSQsdGhpcy5kZWY9JH1pbXBsZW1lbnQoJCl7aWYodHlwZW9mICQhPT1cImZ1bmN0aW9uXCIpdGhyb3cgRXJyb3IoXCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb25cIik7bGV0IFE9KC4uLkopPT57bGV0IFk9dGhpcy5fZGVmLmlucHV0P1AwKHRoaXMuX2RlZi5pbnB1dCxKLHZvaWQgMCx7Y2FsbGVlOlF9KTpKO2lmKCFBcnJheS5pc0FycmF5KFkpKXRocm93IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgc2NoZW1hOiBub3QgYW4gYXJyYXkgb3IgdHVwbGUgc2NoZW1hLlwiKTtsZXQgWD0kKC4uLlkpO3JldHVybiB0aGlzLl9kZWYub3V0cHV0P1AwKHRoaXMuX2RlZi5vdXRwdXQsWCx2b2lkIDAse2NhbGxlZTpRfSk6WH07cmV0dXJuIFF9aW1wbGVtZW50QXN5bmMoJCl7aWYodHlwZW9mICQhPT1cImZ1bmN0aW9uXCIpdGhyb3cgRXJyb3IoXCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb25cIik7bGV0IFE9YXN5bmMoLi4uSik9PntsZXQgWT10aGlzLl9kZWYuaW5wdXQ/YXdhaXQgRTAodGhpcy5fZGVmLmlucHV0LEosdm9pZCAwLHtjYWxsZWU6UX0pOko7aWYoIUFycmF5LmlzQXJyYXkoWSkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50cyBzY2hlbWE6IG5vdCBhbiBhcnJheSBvciB0dXBsZSBzY2hlbWEuXCIpO2xldCBYPWF3YWl0ICQoLi4uWSk7cmV0dXJuIHRoaXMuX2RlZi5vdXRwdXQ/RTAodGhpcy5fZGVmLm91dHB1dCxYLHZvaWQgMCx7Y2FsbGVlOlF9KTpYfTtyZXR1cm4gUX1pbnB1dCguLi4kKXtsZXQgUT10aGlzLmNvbnN0cnVjdG9yO2lmKEFycmF5LmlzQXJyYXkoJFswXSkpcmV0dXJuIG5ldyBRKHt0eXBlOlwiZnVuY3Rpb25cIixpbnB1dDpuZXcgUzEoe3R5cGU6XCJ0dXBsZVwiLGl0ZW1zOiRbMF0scmVzdDokWzFdfSksb3V0cHV0OnRoaXMuX2RlZi5vdXRwdXR9KTtyZXR1cm4gbmV3IFEoe3R5cGU6XCJmdW5jdGlvblwiLGlucHV0OiRbMF0sb3V0cHV0OnRoaXMuX2RlZi5vdXRwdXR9KX1vdXRwdXQoJCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHt0eXBlOlwiZnVuY3Rpb25cIixpbnB1dDp0aGlzLl9kZWYuaW5wdXQsb3V0cHV0OiR9KX19ZnVuY3Rpb24gUzMoJCl7cmV0dXJuIG5ldyBXVih7dHlwZTpcImZ1bmN0aW9uXCIsaW5wdXQ6QXJyYXkuaXNBcnJheSgkPy5pbnB1dCk/WVYoUzEsJD8uaW5wdXQpOiQ/LmlucHV0Pz9LSihyOCxTMChfMCkpLG91dHB1dDokPy5vdXRwdXQ/P1MwKF8wKX0pfWNsYXNzIGsze2NvbnN0cnVjdG9yKCQpe3RoaXMuY291bnRlcj0wLHRoaXMubWV0YWRhdGFSZWdpc3RyeT0kPy5tZXRhZGF0YT8/QTYsdGhpcy50YXJnZXQ9JD8udGFyZ2V0Pz9cImRyYWZ0LTIwMjAtMTJcIix0aGlzLnVucmVwcmVzZW50YWJsZT0kPy51bnJlcHJlc2VudGFibGU/P1widGhyb3dcIix0aGlzLm92ZXJyaWRlPSQ/Lm92ZXJyaWRlPz8oKCk9Pnt9KSx0aGlzLmlvPSQ/LmlvPz9cIm91dHB1dFwiLHRoaXMuc2Vlbj1uZXcgTWFwfXByb2Nlc3MoJCxRPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgSjtsZXQgWT0kLl96b2QuZGVmLFg9e2d1aWQ6XCJ1dWlkXCIsdXJsOlwidXJpXCIsZGF0ZXRpbWU6XCJkYXRlLXRpbWVcIixqc29uX3N0cmluZzpcImpzb24tc3RyaW5nXCIscmVnZXg6XCJcIn0sVz10aGlzLnNlZW4uZ2V0KCQpO2lmKFcpe2lmKFcuY291bnQrKyxRLnNjaGVtYVBhdGguaW5jbHVkZXMoJCkpVy5jeWNsZT1RLnBhdGg7cmV0dXJuIFcuc2NoZW1hfWxldCBHPXtzY2hlbWE6e30sY291bnQ6MSxjeWNsZTp2b2lkIDAscGF0aDpRLnBhdGh9O3RoaXMuc2Vlbi5zZXQoJCxHKTtsZXQgVT0kLl96b2QudG9KU09OU2NoZW1hPy4oKTtpZihVKUcuc2NoZW1hPVU7ZWxzZXtsZXQgVj17Li4uUSxzY2hlbWFQYXRoOlsuLi5RLnNjaGVtYVBhdGgsJF0scGF0aDpRLnBhdGh9LEI9JC5fem9kLnBhcmVudDtpZihCKUcucmVmPUIsdGhpcy5wcm9jZXNzKEIsViksdGhpcy5zZWVuLmdldChCKS5pc1BhcmVudD0hMDtlbHNle2xldCB6PUcuc2NoZW1hO3N3aXRjaChZLnR5cGUpe2Nhc2VcInN0cmluZ1wiOntsZXQgTj16O04udHlwZT1cInN0cmluZ1wiO2xldHttaW5pbXVtOncsbWF4aW11bTpPLGZvcm1hdDpELHBhdHRlcm5zOk0sY29udGVudEVuY29kaW5nOmp9PSQuX3pvZC5iYWc7aWYodHlwZW9mIHc9PT1cIm51bWJlclwiKU4ubWluTGVuZ3RoPXc7aWYodHlwZW9mIE89PT1cIm51bWJlclwiKU4ubWF4TGVuZ3RoPU87aWYoRCl7aWYoTi5mb3JtYXQ9WFtEXT8/RCxOLmZvcm1hdD09PVwiXCIpZGVsZXRlIE4uZm9ybWF0fWlmKGopTi5jb250ZW50RW5jb2Rpbmc9ajtpZihNJiZNLnNpemU+MCl7bGV0IEE9Wy4uLk1dO2lmKEEubGVuZ3RoPT09MSlOLnBhdHRlcm49QVswXS5zb3VyY2U7ZWxzZSBpZihBLmxlbmd0aD4xKUcuc2NoZW1hLmFsbE9mPVsuLi5BLm1hcCgoayk9Pih7Li4udGhpcy50YXJnZXQ9PT1cImRyYWZ0LTdcIj97dHlwZTpcInN0cmluZ1wifTp7fSxwYXR0ZXJuOmsuc291cmNlfSkpXX1icmVha31jYXNlXCJudW1iZXJcIjp7bGV0IE49eix7bWluaW11bTp3LG1heGltdW06Tyxmb3JtYXQ6RCxtdWx0aXBsZU9mOk0sZXhjbHVzaXZlTWF4aW11bTpqLGV4Y2x1c2l2ZU1pbmltdW06QX09JC5fem9kLmJhZztpZih0eXBlb2YgRD09PVwic3RyaW5nXCImJkQuaW5jbHVkZXMoXCJpbnRcIikpTi50eXBlPVwiaW50ZWdlclwiO2Vsc2UgTi50eXBlPVwibnVtYmVyXCI7aWYodHlwZW9mIEE9PT1cIm51bWJlclwiKU4uZXhjbHVzaXZlTWluaW11bT1BO2lmKHR5cGVvZiB3PT09XCJudW1iZXJcIil7aWYoTi5taW5pbXVtPXcsdHlwZW9mIEE9PT1cIm51bWJlclwiKWlmKEE+PXcpZGVsZXRlIE4ubWluaW11bTtlbHNlIGRlbGV0ZSBOLmV4Y2x1c2l2ZU1pbmltdW19aWYodHlwZW9mIGo9PT1cIm51bWJlclwiKU4uZXhjbHVzaXZlTWF4aW11bT1qO2lmKHR5cGVvZiBPPT09XCJudW1iZXJcIil7aWYoTi5tYXhpbXVtPU8sdHlwZW9mIGo9PT1cIm51bWJlclwiKWlmKGo8PU8pZGVsZXRlIE4ubWF4aW11bTtlbHNlIGRlbGV0ZSBOLmV4Y2x1c2l2ZU1heGltdW19aWYodHlwZW9mIE09PT1cIm51bWJlclwiKU4ubXVsdGlwbGVPZj1NO2JyZWFrfWNhc2VcImJvb2xlYW5cIjp7bGV0IE49ejtOLnR5cGU9XCJib29sZWFuXCI7YnJlYWt9Y2FzZVwiYmlnaW50XCI6e2lmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJzeW1ib2xcIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJudWxsXCI6e3oudHlwZT1cIm51bGxcIjticmVha31jYXNlXCJhbnlcIjpicmVhaztjYXNlXCJ1bmtub3duXCI6YnJlYWs7Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwibmV2ZXJcIjp7ei5ub3Q9e307YnJlYWt9Y2FzZVwidm9pZFwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIlZvaWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO2JyZWFrfWNhc2VcImRhdGVcIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJhcnJheVwiOntsZXQgTj16LHttaW5pbXVtOncsbWF4aW11bTpPfT0kLl96b2QuYmFnO2lmKHR5cGVvZiB3PT09XCJudW1iZXJcIilOLm1pbkl0ZW1zPXc7aWYodHlwZW9mIE89PT1cIm51bWJlclwiKU4ubWF4SXRlbXM9TztOLnR5cGU9XCJhcnJheVwiLE4uaXRlbXM9dGhpcy5wcm9jZXNzKFkuZWxlbWVudCx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJpdGVtc1wiXX0pO2JyZWFrfWNhc2VcIm9iamVjdFwiOntsZXQgTj16O04udHlwZT1cIm9iamVjdFwiLE4ucHJvcGVydGllcz17fTtsZXQgdz1ZLnNoYXBlO2ZvcihsZXQgTSBpbiB3KU4ucHJvcGVydGllc1tNXT10aGlzLnByb2Nlc3Mod1tNXSx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJwcm9wZXJ0aWVzXCIsTV19KTtsZXQgTz1uZXcgU2V0KE9iamVjdC5rZXlzKHcpKSxEPW5ldyBTZXQoWy4uLk9dLmZpbHRlcigoTSk9PntsZXQgaj1ZLnNoYXBlW01dLl96b2Q7aWYodGhpcy5pbz09PVwiaW5wdXRcIilyZXR1cm4gai5vcHRpbj09PXZvaWQgMDtlbHNlIHJldHVybiBqLm9wdG91dD09PXZvaWQgMH0pKTtpZihELnNpemU+MClOLnJlcXVpcmVkPUFycmF5LmZyb20oRCk7aWYoWS5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZT09PVwibmV2ZXJcIilOLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExO2Vsc2UgaWYoIVkuY2F0Y2hhbGwpe2lmKHRoaXMuaW89PT1cIm91dHB1dFwiKU4uYWRkaXRpb25hbFByb3BlcnRpZXM9ITF9ZWxzZSBpZihZLmNhdGNoYWxsKU4uYWRkaXRpb25hbFByb3BlcnRpZXM9dGhpcy5wcm9jZXNzKFkuY2F0Y2hhbGwsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl19KTticmVha31jYXNlXCJ1bmlvblwiOntsZXQgTj16O04uYW55T2Y9WS5vcHRpb25zLm1hcCgodyxPKT0+dGhpcy5wcm9jZXNzKHcsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiYW55T2ZcIixPXX0pKTticmVha31jYXNlXCJpbnRlcnNlY3Rpb25cIjp7bGV0IE49eix3PXRoaXMucHJvY2VzcyhZLmxlZnQsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiYWxsT2ZcIiwwXX0pLE89dGhpcy5wcm9jZXNzKFkucmlnaHQsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiYWxsT2ZcIiwxXX0pLEQ9KGopPT4oXCJhbGxPZlwiaW4gaikmJk9iamVjdC5rZXlzKGopLmxlbmd0aD09PTEsTT1bLi4uRCh3KT93LmFsbE9mOlt3XSwuLi5EKE8pP08uYWxsT2Y6W09dXTtOLmFsbE9mPU07YnJlYWt9Y2FzZVwidHVwbGVcIjp7bGV0IE49ejtOLnR5cGU9XCJhcnJheVwiO2xldCB3PVkuaXRlbXMubWFwKChNLGopPT50aGlzLnByb2Nlc3MoTSx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJwcmVmaXhJdGVtc1wiLGpdfSkpO2lmKHRoaXMudGFyZ2V0PT09XCJkcmFmdC0yMDIwLTEyXCIpTi5wcmVmaXhJdGVtcz13O2Vsc2UgTi5pdGVtcz13O2lmKFkucmVzdCl7bGV0IE09dGhpcy5wcm9jZXNzKFkucmVzdCx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJpdGVtc1wiXX0pO2lmKHRoaXMudGFyZ2V0PT09XCJkcmFmdC0yMDIwLTEyXCIpTi5pdGVtcz1NO2Vsc2UgTi5hZGRpdGlvbmFsSXRlbXM9TX1pZihZLnJlc3QpTi5pdGVtcz10aGlzLnByb2Nlc3MoWS5yZXN0LHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcIml0ZW1zXCJdfSk7bGV0e21pbmltdW06TyxtYXhpbXVtOkR9PSQuX3pvZC5iYWc7aWYodHlwZW9mIE89PT1cIm51bWJlclwiKU4ubWluSXRlbXM9TztpZih0eXBlb2YgRD09PVwibnVtYmVyXCIpTi5tYXhJdGVtcz1EO2JyZWFrfWNhc2VcInJlY29yZFwiOntsZXQgTj16O04udHlwZT1cIm9iamVjdFwiLE4ucHJvcGVydHlOYW1lcz10aGlzLnByb2Nlc3MoWS5rZXlUeXBlLHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcInByb3BlcnR5TmFtZXNcIl19KSxOLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPXRoaXMucHJvY2VzcyhZLnZhbHVlVHlwZSx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXX0pO2JyZWFrfWNhc2VcIm1hcFwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIk1hcCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwic2V0XCI6e2lmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiU2V0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJlbnVtXCI6e2xldCBOPXosdz1PUShZLmVudHJpZXMpO2lmKHcuZXZlcnkoKE8pPT50eXBlb2YgTz09PVwibnVtYmVyXCIpKU4udHlwZT1cIm51bWJlclwiO2lmKHcuZXZlcnkoKE8pPT50eXBlb2YgTz09PVwic3RyaW5nXCIpKU4udHlwZT1cInN0cmluZ1wiO04uZW51bT13O2JyZWFrfWNhc2VcImxpdGVyYWxcIjp7bGV0IE49eix3PVtdO2ZvcihsZXQgTyBvZiBZLnZhbHVlcylpZihPPT09dm9pZCAwKXtpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIkxpdGVyYWwgYHVuZGVmaW5lZGAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpfWVsc2UgaWYodHlwZW9mIE89PT1cImJpZ2ludFwiKWlmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtlbHNlIHcucHVzaChOdW1iZXIoTykpO2Vsc2Ugdy5wdXNoKE8pO2lmKHcubGVuZ3RoPT09MCk7ZWxzZSBpZih3Lmxlbmd0aD09PTEpe2xldCBPPXdbMF07Ti50eXBlPU89PT1udWxsP1wibnVsbFwiOnR5cGVvZiBPLE4uY29uc3Q9T31lbHNle2lmKHcuZXZlcnkoKE8pPT50eXBlb2YgTz09PVwibnVtYmVyXCIpKU4udHlwZT1cIm51bWJlclwiO2lmKHcuZXZlcnkoKE8pPT50eXBlb2YgTz09PVwic3RyaW5nXCIpKU4udHlwZT1cInN0cmluZ1wiO2lmKHcuZXZlcnkoKE8pPT50eXBlb2YgTz09PVwiYm9vbGVhblwiKSlOLnR5cGU9XCJzdHJpbmdcIjtpZih3LmV2ZXJ5KChPKT0+Tz09PW51bGwpKU4udHlwZT1cIm51bGxcIjtOLmVudW09d31icmVha31jYXNlXCJmaWxlXCI6e2xldCBOPXosdz17dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImJpbmFyeVwiLGNvbnRlbnRFbmNvZGluZzpcImJpbmFyeVwifSx7bWluaW11bTpPLG1heGltdW06RCxtaW1lOk19PSQuX3pvZC5iYWc7aWYoTyE9PXZvaWQgMCl3Lm1pbkxlbmd0aD1PO2lmKEQhPT12b2lkIDApdy5tYXhMZW5ndGg9RDtpZihNKWlmKE0ubGVuZ3RoPT09MSl3LmNvbnRlbnRNZWRpYVR5cGU9TVswXSxPYmplY3QuYXNzaWduKE4sdyk7ZWxzZSBOLmFueU9mPU0ubWFwKChqKT0+e3JldHVybnsuLi53LGNvbnRlbnRNZWRpYVR5cGU6an19KTtlbHNlIE9iamVjdC5hc3NpZ24oTix3KTticmVha31jYXNlXCJ0cmFuc2Zvcm1cIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJudWxsYWJsZVwiOntsZXQgTj10aGlzLnByb2Nlc3MoWS5pbm5lclR5cGUsVik7ei5hbnlPZj1bTix7dHlwZTpcIm51bGxcIn1dO2JyZWFrfWNhc2VcIm5vbm9wdGlvbmFsXCI6e3RoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZTticmVha31jYXNlXCJzdWNjZXNzXCI6e2xldCBOPXo7Ti50eXBlPVwiYm9vbGVhblwiO2JyZWFrfWNhc2VcImRlZmF1bHRcIjp7dGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpLEcucmVmPVkuaW5uZXJUeXBlLHouZGVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFkuZGVmYXVsdFZhbHVlKSk7YnJlYWt9Y2FzZVwicHJlZmF1bHRcIjp7aWYodGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpLEcucmVmPVkuaW5uZXJUeXBlLHRoaXMuaW89PT1cImlucHV0XCIpei5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShZLmRlZmF1bHRWYWx1ZSkpO2JyZWFrfWNhc2VcImNhdGNoXCI6e3RoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZTtsZXQgTjt0cnl7Tj1ZLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBFcnJvcihcIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hXCIpfXouZGVmYXVsdD1OO2JyZWFrfWNhc2VcIm5hblwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIk5hTiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwidGVtcGxhdGVfbGl0ZXJhbFwiOntsZXQgTj16LHc9JC5fem9kLnBhdHRlcm47aWYoIXcpdGhyb3cgRXJyb3IoXCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsXCIpO04udHlwZT1cInN0cmluZ1wiLE4ucGF0dGVybj13LnNvdXJjZTticmVha31jYXNlXCJwaXBlXCI6e2xldCBOPXRoaXMuaW89PT1cImlucHV0XCI/WS5pbi5fem9kLmRlZi50eXBlPT09XCJ0cmFuc2Zvcm1cIj9ZLm91dDpZLmluOlkub3V0O3RoaXMucHJvY2VzcyhOLFYpLEcucmVmPU47YnJlYWt9Y2FzZVwicmVhZG9ubHlcIjp7dGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpLEcucmVmPVkuaW5uZXJUeXBlLHoucmVhZE9ubHk9ITA7YnJlYWt9Y2FzZVwicHJvbWlzZVwiOnt0aGlzLnByb2Nlc3MoWS5pbm5lclR5cGUsViksRy5yZWY9WS5pbm5lclR5cGU7YnJlYWt9Y2FzZVwib3B0aW9uYWxcIjp7dGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpLEcucmVmPVkuaW5uZXJUeXBlO2JyZWFrfWNhc2VcImxhenlcIjp7bGV0IE49JC5fem9kLmlubmVyVHlwZTt0aGlzLnByb2Nlc3MoTixWKSxHLnJlZj1OO2JyZWFrfWNhc2VcImN1c3RvbVwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIkN1c3RvbSB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9ZGVmYXVsdDp9fX1sZXQgSD10aGlzLm1ldGFkYXRhUmVnaXN0cnkuZ2V0KCQpO2lmKEgpT2JqZWN0LmFzc2lnbihHLnNjaGVtYSxIKTtpZih0aGlzLmlvPT09XCJpbnB1dFwiJiZ0JCgkKSlkZWxldGUgRy5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIEcuc2NoZW1hLmRlZmF1bHQ7aWYodGhpcy5pbz09PVwiaW5wdXRcIiYmRy5zY2hlbWEuX3ByZWZhdWx0KShKPUcuc2NoZW1hKS5kZWZhdWx0Pz8oSi5kZWZhdWx0PUcuc2NoZW1hLl9wcmVmYXVsdCk7cmV0dXJuIGRlbGV0ZSBHLnNjaGVtYS5fcHJlZmF1bHQsdGhpcy5zZWVuLmdldCgkKS5zY2hlbWF9ZW1pdCgkLFEpe2xldCBKPXtjeWNsZXM6UT8uY3ljbGVzPz9cInJlZlwiLHJldXNlZDpRPy5yZXVzZWQ/P1wiaW5saW5lXCIsZXh0ZXJuYWw6UT8uZXh0ZXJuYWw/P3ZvaWQgMH0sWT10aGlzLnNlZW4uZ2V0KCQpO2lmKCFZKXRocm93IEVycm9yKFwiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC5cIik7bGV0IFg9KHEpPT57bGV0IFY9dGhpcy50YXJnZXQ9PT1cImRyYWZ0LTIwMjAtMTJcIj9cIiRkZWZzXCI6XCJkZWZpbml0aW9uc1wiO2lmKEouZXh0ZXJuYWwpe2xldCB3PUouZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KHFbMF0pPy5pZDtpZih3KXJldHVybntyZWY6Si5leHRlcm5hbC51cmkodyl9O2xldCBPPXFbMV0uZGVmSWQ/P3FbMV0uc2NoZW1hLmlkPz9gc2NoZW1hJHt0aGlzLmNvdW50ZXIrK31gO3JldHVybiBxWzFdLmRlZklkPU8se2RlZklkOk8scmVmOmAke0ouZXh0ZXJuYWwudXJpKFwiX19zaGFyZWRcIil9Iy8ke1Z9LyR7T31gfX1pZihxWzFdPT09WSlyZXR1cm57cmVmOlwiI1wifTtsZXQgej1gJHtcIiNcIn0vJHtWfS9gLE49cVsxXS5zY2hlbWEuaWQ/P2BfX3NjaGVtYSR7dGhpcy5jb3VudGVyKyt9YDtyZXR1cm57ZGVmSWQ6TixyZWY6eitOfX0sVz0ocSk9PntpZihxWzFdLnNjaGVtYS4kcmVmKXJldHVybjtsZXQgVj1xWzFdLHtyZWY6QixkZWZJZDp6fT1YKHEpO2lmKFYuZGVmPXsuLi5WLnNjaGVtYX0seilWLmRlZklkPXo7bGV0IE49Vi5zY2hlbWE7Zm9yKGxldCB3IGluIE4pZGVsZXRlIE5bd107Ti4kcmVmPUJ9O2ZvcihsZXQgcSBvZiB0aGlzLnNlZW4uZW50cmllcygpKXtsZXQgVj1xWzFdO2lmKCQ9PT1xWzBdKXtXKHEpO2NvbnRpbnVlfWlmKEouZXh0ZXJuYWwpe2xldCB6PUouZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KHFbMF0pPy5pZDtpZigkIT09cVswXSYmeil7VyhxKTtjb250aW51ZX19aWYodGhpcy5tZXRhZGF0YVJlZ2lzdHJ5LmdldChxWzBdKT8uaWQpe1cocSk7Y29udGludWV9aWYoVi5jeWNsZSl7aWYoSi5jeWNsZXM9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoYEN5Y2xlIGRldGVjdGVkOiAjLyR7Vi5jeWNsZT8uam9pbihcIi9cIil9Lzxyb290PlxuXG5TZXQgdGhlIFxcYGN5Y2xlc1xcYCBwYXJhbWV0ZXIgdG8gXFxgXCJyZWZcIlxcYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLmApO2Vsc2UgaWYoSi5jeWNsZXM9PT1cInJlZlwiKVcocSk7Y29udGludWV9aWYoVi5jb3VudD4xKXtpZihKLnJldXNlZD09PVwicmVmXCIpe1cocSk7Y29udGludWV9fX1sZXQgRz0ocSxWKT0+e2xldCBCPXRoaXMuc2Vlbi5nZXQocSksej1CLmRlZj8/Qi5zY2hlbWEsTj17Li4uen07aWYoQi5yZWY9PT1udWxsKXJldHVybjtsZXQgdz1CLnJlZjtpZihCLnJlZj1udWxsLHcpe0codyxWKTtsZXQgTz10aGlzLnNlZW4uZ2V0KHcpLnNjaGVtYTtpZihPLiRyZWYmJlYudGFyZ2V0PT09XCJkcmFmdC03XCIpei5hbGxPZj16LmFsbE9mPz9bXSx6LmFsbE9mLnB1c2goTyk7ZWxzZSBPYmplY3QuYXNzaWduKHosTyksT2JqZWN0LmFzc2lnbih6LE4pfWlmKCFCLmlzUGFyZW50KXRoaXMub3ZlcnJpZGUoe3pvZFNjaGVtYTpxLGpzb25TY2hlbWE6eixwYXRoOkIucGF0aD8/W119KX07Zm9yKGxldCBxIG9mWy4uLnRoaXMuc2Vlbi5lbnRyaWVzKCldLnJldmVyc2UoKSlHKHFbMF0se3RhcmdldDp0aGlzLnRhcmdldH0pO2xldCBVPXt9O2lmKHRoaXMudGFyZ2V0PT09XCJkcmFmdC0yMDIwLTEyXCIpVS4kc2NoZW1hPVwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFcIjtlbHNlIGlmKHRoaXMudGFyZ2V0PT09XCJkcmFmdC03XCIpVS4kc2NoZW1hPVwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjXCI7ZWxzZSBjb25zb2xlLndhcm4oYEludmFsaWQgdGFyZ2V0OiAke3RoaXMudGFyZ2V0fWApO09iamVjdC5hc3NpZ24oVSxZLmRlZik7bGV0IEg9Si5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGxldCBxIG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpe2xldCBWPXFbMV07aWYoVi5kZWYmJlYuZGVmSWQpSFtWLmRlZklkXT1WLmRlZn1pZighSi5leHRlcm5hbCYmT2JqZWN0LmtleXMoSCkubGVuZ3RoPjApaWYodGhpcy50YXJnZXQ9PT1cImRyYWZ0LTIwMjAtMTJcIilVLiRkZWZzPUg7ZWxzZSBVLmRlZmluaXRpb25zPUg7dHJ5e3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFUpKX1jYXRjaChxKXt0aHJvdyBFcnJvcihcIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uXCIpfX19ZnVuY3Rpb24gSjkoJCxRKXtpZigkIGluc3RhbmNlb2YgYlEpe2xldCBZPW5ldyBrMyhRKSxYPXt9O2ZvcihsZXQgVSBvZiAkLl9pZG1hcC5lbnRyaWVzKCkpe2xldFtILHFdPVU7WS5wcm9jZXNzKHEpfWxldCBXPXt9LEc9e3JlZ2lzdHJ5OiQsdXJpOlE/LnVyaXx8KChVKT0+VSksZGVmczpYfTtmb3IobGV0IFUgb2YgJC5faWRtYXAuZW50cmllcygpKXtsZXRbSCxxXT1VO1dbSF09WS5lbWl0KHEsey4uLlEsZXh0ZXJuYWw6R30pfWlmKE9iamVjdC5rZXlzKFgpLmxlbmd0aD4wKXtsZXQgVT1ZLnRhcmdldD09PVwiZHJhZnQtMjAyMC0xMlwiP1wiJGRlZnNcIjpcImRlZmluaXRpb25zXCI7Vy5fX3NoYXJlZD17W1VdOlh9fXJldHVybntzY2hlbWFzOld9fWxldCBKPW5ldyBrMyhRKTtyZXR1cm4gSi5wcm9jZXNzKCQpLEouZW1pdCgkLFEpfWZ1bmN0aW9uIHQkKCQsUSl7bGV0IEo9UT8/e3NlZW46bmV3IFNldH07aWYoSi5zZWVuLmhhcygkKSlyZXR1cm4hMTtKLnNlZW4uYWRkKCQpO2xldCBYPSQuX3pvZC5kZWY7c3dpdGNoKFgudHlwZSl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6Y2FzZVwiYmlnaW50XCI6Y2FzZVwiYm9vbGVhblwiOmNhc2VcImRhdGVcIjpjYXNlXCJzeW1ib2xcIjpjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJudWxsXCI6Y2FzZVwiYW55XCI6Y2FzZVwidW5rbm93blwiOmNhc2VcIm5ldmVyXCI6Y2FzZVwidm9pZFwiOmNhc2VcImxpdGVyYWxcIjpjYXNlXCJlbnVtXCI6Y2FzZVwibmFuXCI6Y2FzZVwiZmlsZVwiOmNhc2VcInRlbXBsYXRlX2xpdGVyYWxcIjpyZXR1cm4hMTtjYXNlXCJhcnJheVwiOnJldHVybiB0JChYLmVsZW1lbnQsSik7Y2FzZVwib2JqZWN0XCI6e2ZvcihsZXQgVyBpbiBYLnNoYXBlKWlmKHQkKFguc2hhcGVbV10sSikpcmV0dXJuITA7cmV0dXJuITF9Y2FzZVwidW5pb25cIjp7Zm9yKGxldCBXIG9mIFgub3B0aW9ucylpZih0JChXLEopKXJldHVybiEwO3JldHVybiExfWNhc2VcImludGVyc2VjdGlvblwiOnJldHVybiB0JChYLmxlZnQsSil8fHQkKFgucmlnaHQsSik7Y2FzZVwidHVwbGVcIjp7Zm9yKGxldCBXIG9mIFguaXRlbXMpaWYodCQoVyxKKSlyZXR1cm4hMDtpZihYLnJlc3QmJnQkKFgucmVzdCxKKSlyZXR1cm4hMDtyZXR1cm4hMX1jYXNlXCJyZWNvcmRcIjpyZXR1cm4gdCQoWC5rZXlUeXBlLEopfHx0JChYLnZhbHVlVHlwZSxKKTtjYXNlXCJtYXBcIjpyZXR1cm4gdCQoWC5rZXlUeXBlLEopfHx0JChYLnZhbHVlVHlwZSxKKTtjYXNlXCJzZXRcIjpyZXR1cm4gdCQoWC52YWx1ZVR5cGUsSik7Y2FzZVwicHJvbWlzZVwiOmNhc2VcIm9wdGlvbmFsXCI6Y2FzZVwibm9ub3B0aW9uYWxcIjpjYXNlXCJudWxsYWJsZVwiOmNhc2VcInJlYWRvbmx5XCI6cmV0dXJuIHQkKFguaW5uZXJUeXBlLEopO2Nhc2VcImxhenlcIjpyZXR1cm4gdCQoWC5nZXR0ZXIoKSxKKTtjYXNlXCJkZWZhdWx0XCI6cmV0dXJuIHQkKFguaW5uZXJUeXBlLEopO2Nhc2VcInByZWZhdWx0XCI6cmV0dXJuIHQkKFguaW5uZXJUeXBlLEopO2Nhc2VcImN1c3RvbVwiOnJldHVybiExO2Nhc2VcInRyYW5zZm9ybVwiOnJldHVybiEwO2Nhc2VcInBpcGVcIjpyZXR1cm4gdCQoWC5pbixKKXx8dCQoWC5vdXQsSik7Y2FzZVwic3VjY2Vzc1wiOnJldHVybiExO2Nhc2VcImNhdGNoXCI6cmV0dXJuITE7ZGVmYXVsdDp9dGhyb3cgRXJyb3IoYFVua25vd24gc2NoZW1hIHR5cGU6ICR7WC50eXBlfWApfXZhciBJTT17fTt2YXIgRm09RihcIlpvZE1pbmlUeXBlXCIsKCQsUSk9PntpZighJC5fem9kKXRocm93IEVycm9yKFwiVW5pbml0aWFsaXplZCBzY2hlbWEgaW4gWm9kTWluaVR5cGUuXCIpO28uaW5pdCgkLFEpLCQuZGVmPVEsJC5wYXJzZT0oSixZKT0+UDAoJCxKLFkse2NhbGxlZTokLnBhcnNlfSksJC5zYWZlUGFyc2U9KEosWSk9PlAxKCQsSixZKSwkLnBhcnNlQXN5bmM9YXN5bmMoSixZKT0+RTAoJCxKLFkse2NhbGxlZTokLnBhcnNlQXN5bmN9KSwkLnNhZmVQYXJzZUFzeW5jPWFzeW5jKEosWSk9PkUxKCQsSixZKSwkLmNoZWNrPSguLi5KKT0+e3JldHVybiAkLmNsb25lKHsuLi5RLGNoZWNrczpbLi4uUS5jaGVja3M/P1tdLC4uLkoubWFwKChZKT0+dHlwZW9mIFk9PT1cImZ1bmN0aW9uXCI/e196b2Q6e2NoZWNrOlksZGVmOntjaGVjazpcImN1c3RvbVwifSxvbmF0dGFjaDpbXX19OlkpXX0pfSwkLmNsb25lPShKLFkpPT5VNigkLEosWSksJC5icmFuZD0oKT0+JCwkLnJlZ2lzdGVyPShKLFkpPT57cmV0dXJuIEouYWRkKCQsWSksJH19KTt2YXIgWm09RihcIlpvZE1pbmlPYmplY3RcIiwoJCxRKT0+e1JRLmluaXQoJCxRKSxGbS5pbml0KCQsUSksdi5kZWZpbmVMYXp5KCQsXCJzaGFwZVwiLCgpPT5RLnNoYXBlKX0pO2Z1bmN0aW9uIEdWKCQsUSl7bGV0IEo9e3R5cGU6XCJvYmplY3RcIixnZXQgc2hhcGUoKXtyZXR1cm4gdi5hc3NpZ25Qcm9wKHRoaXMsXCJzaGFwZVwiLHsuLi4kfSksdGhpcy5zaGFwZX0sLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9O3JldHVybiBuZXcgWm0oSil9ZnVuY3Rpb24gYTYoJCl7cmV0dXJuISEkLl96b2R9ZnVuY3Rpb24gQzAoJCl7bGV0IFE9T2JqZWN0LnZhbHVlcygkKTtpZihRLmxlbmd0aD09PTApcmV0dXJuIEdWKHt9KTtsZXQgSj1RLmV2ZXJ5KGE2KSxZPVEuZXZlcnkoKFgpPT4hYTYoWCkpO2lmKEopcmV0dXJuIEdWKCQpO2lmKFkpcmV0dXJuIGVaKCQpO3Rocm93IEVycm9yKFwiTWl4ZWQgWm9kIHZlcnNpb25zIGRldGVjdGVkIGluIG9iamVjdCBzaGFwZS5cIil9ZnVuY3Rpb24gdjEoJCxRKXtpZihhNigkKSlyZXR1cm4gUDEoJCxRKTtyZXR1cm4gJC5zYWZlUGFyc2UoUSl9YXN5bmMgZnVuY3Rpb24gdjMoJCxRKXtpZihhNigkKSlyZXR1cm4gYXdhaXQgRTEoJCxRKTtyZXR1cm4gYXdhaXQgJC5zYWZlUGFyc2VBc3luYyhRKX1mdW5jdGlvbiBDMSgkKXtpZighJClyZXR1cm47bGV0IFE7aWYoYTYoJCkpUT0kLl96b2Q/LmRlZj8uc2hhcGU7ZWxzZSBRPSQuc2hhcGU7aWYoIVEpcmV0dXJuO2lmKHR5cGVvZiBRPT09XCJmdW5jdGlvblwiKXRyeXtyZXR1cm4gUSgpfWNhdGNoe3JldHVybn1yZXR1cm4gUX1mdW5jdGlvbiBYOSgkKXtpZighJClyZXR1cm47aWYodHlwZW9mICQ9PT1cIm9iamVjdFwiKXtsZXQgUT0kLEo9JDtpZighUS5fZGVmJiYhSi5fem9kKXtsZXQgWT1PYmplY3QudmFsdWVzKCQpO2lmKFkubGVuZ3RoPjAmJlkuZXZlcnkoKFgpPT50eXBlb2YgWD09PVwib2JqZWN0XCImJlghPT1udWxsJiYoWC5fZGVmIT09dm9pZCAwfHxYLl96b2QhPT12b2lkIDB8fHR5cGVvZiBYLnBhcnNlPT09XCJmdW5jdGlvblwiKSkpcmV0dXJuIEMwKCQpfX1pZihhNigkKSl7bGV0IEo9JC5fem9kPy5kZWY7aWYoSiYmKEoudHlwZT09PVwib2JqZWN0XCJ8fEouc2hhcGUhPT12b2lkIDApKXJldHVybiAkfWVsc2UgaWYoJC5zaGFwZSE9PXZvaWQgMClyZXR1cm4gJDtyZXR1cm59ZnVuY3Rpb24gQzMoJCl7aWYoJCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiKXtpZihcIm1lc3NhZ2VcImluICQmJnR5cGVvZiAkLm1lc3NhZ2U9PT1cInN0cmluZ1wiKXJldHVybiAkLm1lc3NhZ2U7aWYoXCJpc3N1ZXNcImluICQmJkFycmF5LmlzQXJyYXkoJC5pc3N1ZXMpJiYkLmlzc3Vlcy5sZW5ndGg+MCl7bGV0IFE9JC5pc3N1ZXNbMF07aWYoUSYmdHlwZW9mIFE9PT1cIm9iamVjdFwiJiZcIm1lc3NhZ2VcImluIFEpcmV0dXJuIFN0cmluZyhRLm1lc3NhZ2UpfXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoJCl9Y2F0Y2h7cmV0dXJuIFN0cmluZygkKX19cmV0dXJuIFN0cmluZygkKX1mdW5jdGlvbiBSTSgkKXtyZXR1cm4gJC5kZXNjcmlwdGlvbn1mdW5jdGlvbiBQTSgkKXtpZihhNigkKSlyZXR1cm4gJC5fem9kPy5kZWY/LnR5cGU9PT1cIm9wdGlvbmFsXCI7bGV0IFE9JDtpZih0eXBlb2YgJC5pc09wdGlvbmFsPT09XCJmdW5jdGlvblwiKXJldHVybiAkLmlzT3B0aW9uYWwoKTtyZXR1cm4gUS5fZGVmPy50eXBlTmFtZT09PVwiWm9kT3B0aW9uYWxcIn1mdW5jdGlvbiBUMygkKXtpZihhNigkKSl7bGV0IFc9JC5fem9kPy5kZWY7aWYoVyl7aWYoVy52YWx1ZSE9PXZvaWQgMClyZXR1cm4gVy52YWx1ZTtpZihBcnJheS5pc0FycmF5KFcudmFsdWVzKSYmVy52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIFcudmFsdWVzWzBdfX1sZXQgSj0kLl9kZWY7aWYoSil7aWYoSi52YWx1ZSE9PXZvaWQgMClyZXR1cm4gSi52YWx1ZTtpZihBcnJheS5pc0FycmF5KEoudmFsdWVzKSYmSi52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIEoudmFsdWVzWzBdfWxldCBZPSQudmFsdWU7aWYoWSE9PXZvaWQgMClyZXR1cm4gWTtyZXR1cm59dmFyIEs9e307ajQoSyx7eGlkOigpPT5mbSx2b2lkOigpPT5YbCx1dWlkdjc6KCk9Pl9tLHV1aWR2NjooKT0+Ym0sdXVpZHY0OigpPT5FbSx1dWlkOigpPT5QbSx1cmw6KCk9PlNtLHVwcGVyY2FzZTooKT0+JEosdW5rbm93bjooKT0+UyQsdW5pb246KCk9PkEkLHVuZGVmaW5lZDooKT0+UWwsdWxpZDooKT0+eG0sdWludDY0OigpPT5lbSx1aW50MzI6KCk9PnRtLHR1cGxlOigpPT5VbCx0cmltOigpPT5HSix0cmVlaWZ5RXJyb3I6KCk9Pm81LHRyYW5zZm9ybTooKT0+Z1YsdG9VcHBlckNhc2U6KCk9PkhKLHRvTG93ZXJDYXNlOigpPT5VSix0b0pTT05TY2hlbWE6KCk9Pko5LHRlbXBsYXRlTGl0ZXJhbDooKT0+T2wsc3ltYm9sOigpPT4kbCxzdXBlclJlZmluZTooKT0+S0wsc3VjY2VzczooKT0+Tmwsc3RyaW5nYm9vbDooKT0+Wmwsc3RyaW5nRm9ybWF0OigpPT5pbSxzdHJpbmc6KCk9Pkwsc3RyaWN0T2JqZWN0OigpPT5HbCxzdGFydHNXaXRoOigpPT5KSixzaXplOigpPT5hUSxzZXRFcnJvck1hcDooKT0+amwsc2V0OigpPT5xbCxzYWZlUGFyc2VBc3luYzooKT0+TlYsc2FmZVBhcnNlOigpPT56VixyZWdpc3RyeTooKT0+X1EscmVnZXhlczooKT0+YjEscmVnZXg6KCk9PnNRLHJlZmluZTooKT0+SEwscmVjb3JkOigpPT5JJCxyZWFkb25seTooKT0+SkwscHJvcGVydHk6KCk9PlhWLHByb21pc2U6KCk9PkRsLHByZXR0aWZ5RXJyb3I6KCk9PnQ1LHByZXByb2Nlc3M6KCk9PnIzLHByZWZhdWx0OigpPT5vTSxwb3NpdGl2ZTooKT0+ZXEscGlwZTooKT0+bTMscGFydGlhbFJlY29yZDooKT0+SGwscGFyc2VBc3luYzooKT0+QlYscGFyc2U6KCk9PlZWLG92ZXJ3cml0ZTooKT0+ZTQsb3B0aW9uYWw6KCk9PmIkLG9iamVjdDooKT0+aCxudW1iZXI6KCk9PnokLG51bGxpc2g6KCk9PnpsLG51bGxhYmxlOigpPT51MyxudWxsOigpPT5sMyxub3JtYWxpemU6KCk9PldKLG5vbnBvc2l0aXZlOigpPT5RVixub25vcHRpb25hbDooKT0+dE0sbm9ubmVnYXRpdmU6KCk9PkpWLG5ldmVyOigpPT5jMyxuZWdhdGl2ZTooKT0+JFYsbmF0aXZlRW51bTooKT0+VmwsbmFub2lkOigpPT52bSxuYW46KCk9PndsLG11bHRpcGxlT2Y6KCk9PmswLG1pblNpemU6KCk9PnYwLG1pbkxlbmd0aDooKT0+azEsbWltZTooKT0+WUosbWF4U2l6ZTooKT0+ZTgsbWF4TGVuZ3RoOigpPT4kOSxtYXA6KCk9PktsLGx0ZTooKT0+dDYsbHQ6KCk9PmE0LGxvd2VyY2FzZTooKT0+ZVEsbG9vc2VPYmplY3Q6KCk9Pkg2LGxvY2FsZXM6KCk9PmE4LGxpdGVyYWw6KCk9PmwsbGVuZ3RoOigpPT5ROSxsYXp5OigpPT5XTCxrc3VpZDooKT0+eW0sa2V5b2Y6KCk9PldsLGp3dDooKT0+ZG0sanNvbjooKT0+TWwsaXNvOigpPT5ZOSxpcHY2OigpPT5obSxpcHY0OigpPT5nbSxpbnRlcnNlY3Rpb246KCk9PndKLGludDY0OigpPT5zbSxpbnQzMjooKT0+b20saW50OigpPT53VixpbnN0YW5jZW9mOigpPT5GbCxpbmNsdWRlczooKT0+UUosZ3VpZDooKT0+Um0sZ3RlOigpPT5JNixndDooKT0+czQsZ2xvYmFsUmVnaXN0cnk6KCk9PkE2LGdldEVycm9yTWFwOigpPT5BbCxmdW5jdGlvbjooKT0+UzMsZm9ybWF0RXJyb3I6KCk9PmQ4LGZsb2F0NjQ6KCk9PnJtLGZsb2F0MzI6KCk9Pm5tLGZsYXR0ZW5FcnJvcjooKT0+cDgsZmlsZTooKT0+QmwsZW51bTooKT0+ejYsZW5kc1dpdGg6KCk9PlhKLGVtb2ppOigpPT5rbSxlbWFpbDooKT0+SW0sZTE2NDooKT0+cG0sZGlzY3JpbWluYXRlZFVuaW9uOigpPT5pMyxkYXRlOigpPT5ZbCxjdXN0b206KCk9PmxWLGN1aWQyOigpPT5UbSxjdWlkOigpPT5DbSxjb3JlOigpPT5xNCxjb25maWc6KCk9PmMkLGNvZXJjZTooKT0+Y1YsY2xvbmU6KCk9PlU2LGNpZHJ2NjooKT0+bW0sY2lkcnY0OigpPT51bSxjaGVjazooKT0+VUwsY2F0Y2g6KCk9PmVNLGJvb2xlYW46KCk9PmkkLGJpZ2ludDooKT0+YW0sYmFzZTY0dXJsOigpPT5jbSxiYXNlNjQ6KCk9PmxtLGFycmF5OigpPT5XJCxhbnk6KCk9PkpsLF9kZWZhdWx0OigpPT5uTSxfWm9kU3RyaW5nOigpPT5PVixab2RYSUQ6KCk9PklWLFpvZFZvaWQ6KCk9PmZNLFpvZFVua25vd246KCk9PlRNLFpvZFVuaW9uOigpPT54Vixab2RVbmRlZmluZWQ6KCk9PmtNLFpvZFVVSUQ6KCk9PiQxLFpvZFVSTDooKT0+RlYsWm9kVUxJRDooKT0+QVYsWm9kVHlwZTooKT0+SiQsWm9kVHVwbGU6KCk9PnVNLFpvZFRyYW5zZm9ybTooKT0+eVYsWm9kVGVtcGxhdGVMaXRlcmFsOigpPT5YTCxab2RTeW1ib2w6KCk9PlNNLFpvZFN1Y2Nlc3M6KCk9PmFNLFpvZFN0cmluZ0Zvcm1hdDooKT0+RSQsWm9kU3RyaW5nOigpPT5WSixab2RTZXQ6KCk9PmxNLFpvZFJlY29yZDooKT0+ZlYsWm9kUmVhbEVycm9yOigpPT5XOSxab2RSZWFkb25seTooKT0+UUwsWm9kUHJvbWlzZTooKT0+R0wsWm9kUHJlZmF1bHQ6KCk9PnJNLFpvZFBpcGU6KCk9Pm1WLFpvZE9wdGlvbmFsOigpPT5oVixab2RPYmplY3Q6KCk9PmQzLFpvZE51bWJlckZvcm1hdDooKT0+RzksWm9kTnVtYmVyOigpPT5CSixab2ROdWxsYWJsZTooKT0+ZE0sWm9kTnVsbDooKT0+dk0sWm9kTm9uT3B0aW9uYWw6KCk9PnVWLFpvZE5ldmVyOigpPT54TSxab2ROYW5vSUQ6KCk9Pk1WLFpvZE5hTjooKT0+JEwsWm9kTWFwOigpPT5tTSxab2RMaXRlcmFsOigpPT5jTSxab2RMYXp5OigpPT5ZTCxab2RLU1VJRDooKT0+UlYsWm9kSldUOigpPT5DVixab2RJc3N1ZUNvZGU6KCk9PkxsLFpvZEludGVyc2VjdGlvbjooKT0+aE0sWm9kSVNPVGltZTooKT0+eTMsWm9kSVNPRHVyYXRpb246KCk9PmczLFpvZElTT0RhdGVUaW1lOigpPT54Myxab2RJU09EYXRlOigpPT5mMyxab2RJUHY2OigpPT5FVixab2RJUHY0OigpPT5QVixab2RHVUlEOigpPT5oMyxab2RGaWxlOigpPT5wTSxab2RFcnJvcjooKT0+am0sWm9kRW51bTooKT0+cUosWm9kRW1vamk6KCk9PlpWLFpvZEVtYWlsOigpPT5EVixab2RFMTY0OigpPT52Vixab2REaXNjcmltaW5hdGVkVW5pb246KCk9PmdNLFpvZERlZmF1bHQ6KCk9PmlNLFpvZERhdGU6KCk9PnAzLFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDooKT0+X00sWm9kQ3VzdG9tOigpPT5uMyxab2RDYXRjaDooKT0+c00sWm9kQ1VJRDI6KCk9PmpWLFpvZENVSUQ6KCk9PkxWLFpvZENJRFJ2NjooKT0+X1YsWm9kQ0lEUnY0OigpPT5iVixab2RCb29sZWFuOigpPT56Sixab2RCaWdJbnRGb3JtYXQ6KCk9PlRWLFpvZEJpZ0ludDooKT0+TkosWm9kQmFzZTY0VVJMOigpPT5rVixab2RCYXNlNjQ6KCk9PlNWLFpvZEFycmF5OigpPT55TSxab2RBbnk6KCk9PkNNLFRpbWVQcmVjaXNpb246KCk9PkczLE5FVkVSOigpPT5pNSwkb3V0cHV0OigpPT5YMywkaW5wdXQ6KCk9PlkzLCRicmFuZDooKT0+bjV9KTt2YXIgWTk9e307ajQoWTkse3RpbWU6KCk9PktWLGR1cmF0aW9uOigpPT5xVixkYXRldGltZTooKT0+VVYsZGF0ZTooKT0+SFYsWm9kSVNPVGltZTooKT0+eTMsWm9kSVNPRHVyYXRpb246KCk9PmczLFpvZElTT0RhdGVUaW1lOigpPT54Myxab2RJU09EYXRlOigpPT5mM30pO3ZhciB4Mz1GKFwiWm9kSVNPRGF0ZVRpbWVcIiwoJCxRKT0+e1FxLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBVVigkKXtyZXR1cm4gZHEoeDMsJCl9dmFyIGYzPUYoXCJab2RJU09EYXRlXCIsKCQsUSk9PntKcS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gSFYoJCl7cmV0dXJuIGlxKGYzLCQpfXZhciB5Mz1GKFwiWm9kSVNPVGltZVwiLCgkLFEpPT57WHEuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIEtWKCQpe3JldHVybiBucSh5MywkKX12YXIgZzM9RihcIlpvZElTT0R1cmF0aW9uXCIsKCQsUSk9PntZcS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gcVYoJCl7cmV0dXJuIHJxKGczLCQpfXZhciBiTT0oJCxRKT0+e2pRLmluaXQoJCxRKSwkLm5hbWU9XCJab2RFcnJvclwiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCQse2Zvcm1hdDp7dmFsdWU6KEopPT5kOCgkLEopfSxmbGF0dGVuOnt2YWx1ZTooSik9PnA4KCQsSil9LGFkZElzc3VlOnt2YWx1ZTooSik9PiQuaXNzdWVzLnB1c2goSil9LGFkZElzc3Vlczp7dmFsdWU6KEopPT4kLmlzc3Vlcy5wdXNoKC4uLkopfSxpc0VtcHR5OntnZXQoKXtyZXR1cm4gJC5pc3N1ZXMubGVuZ3RoPT09MH19fSl9LGptPUYoXCJab2RFcnJvclwiLGJNKSxXOT1GKFwiWm9kRXJyb3JcIixiTSx7UGFyZW50OkVycm9yfSk7dmFyIFZWPWE1KFc5KSxCVj1zNShXOSkselY9ZTUoVzkpLE5WPSRZKFc5KTt2YXIgSiQ9RihcIlpvZFR5cGVcIiwoJCxRKT0+e3JldHVybiBvLmluaXQoJCxRKSwkLmRlZj1RLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkLFwiX2RlZlwiLHt2YWx1ZTpRfSksJC5jaGVjaz0oLi4uSik9PntyZXR1cm4gJC5jbG9uZSh7Li4uUSxjaGVja3M6Wy4uLlEuY2hlY2tzPz9bXSwuLi5KLm1hcCgoWSk9PnR5cGVvZiBZPT09XCJmdW5jdGlvblwiP3tfem9kOntjaGVjazpZLGRlZjp7Y2hlY2s6XCJjdXN0b21cIn0sb25hdHRhY2g6W119fTpZKV19KX0sJC5jbG9uZT0oSixZKT0+VTYoJCxKLFkpLCQuYnJhbmQ9KCk9PiQsJC5yZWdpc3Rlcj0oSixZKT0+e3JldHVybiBKLmFkZCgkLFkpLCR9LCQucGFyc2U9KEosWSk9PlZWKCQsSixZLHtjYWxsZWU6JC5wYXJzZX0pLCQuc2FmZVBhcnNlPShKLFkpPT56VigkLEosWSksJC5wYXJzZUFzeW5jPWFzeW5jKEosWSk9PkJWKCQsSixZLHtjYWxsZWU6JC5wYXJzZUFzeW5jfSksJC5zYWZlUGFyc2VBc3luYz1hc3luYyhKLFkpPT5OVigkLEosWSksJC5zcGE9JC5zYWZlUGFyc2VBc3luYywkLnJlZmluZT0oSixZKT0+JC5jaGVjayhITChKLFkpKSwkLnN1cGVyUmVmaW5lPShKKT0+JC5jaGVjayhLTChKKSksJC5vdmVyd3JpdGU9KEopPT4kLmNoZWNrKGU0KEopKSwkLm9wdGlvbmFsPSgpPT5iJCgkKSwkLm51bGxhYmxlPSgpPT51MygkKSwkLm51bGxpc2g9KCk9PmIkKHUzKCQpKSwkLm5vbm9wdGlvbmFsPShKKT0+dE0oJCxKKSwkLmFycmF5PSgpPT5XJCgkKSwkLm9yPShKKT0+QSQoWyQsSl0pLCQuYW5kPShKKT0+d0ooJCxKKSwkLnRyYW5zZm9ybT0oSik9Pm0zKCQsZ1YoSikpLCQuZGVmYXVsdD0oSik9Pm5NKCQsSiksJC5wcmVmYXVsdD0oSik9Pm9NKCQsSiksJC5jYXRjaD0oSik9PmVNKCQsSiksJC5waXBlPShKKT0+bTMoJCxKKSwkLnJlYWRvbmx5PSgpPT5KTCgkKSwkLmRlc2NyaWJlPShKKT0+e2xldCBZPSQuY2xvbmUoKTtyZXR1cm4gQTYuYWRkKFkse2Rlc2NyaXB0aW9uOkp9KSxZfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcImRlc2NyaXB0aW9uXCIse2dldCgpe3JldHVybiBBNi5nZXQoJCk/LmRlc2NyaXB0aW9ufSxjb25maWd1cmFibGU6ITB9KSwkLm1ldGE9KC4uLkopPT57aWYoSi5sZW5ndGg9PT0wKXJldHVybiBBNi5nZXQoJCk7bGV0IFk9JC5jbG9uZSgpO3JldHVybiBBNi5hZGQoWSxKWzBdKSxZfSwkLmlzT3B0aW9uYWw9KCk9PiQuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2VzcywkLmlzTnVsbGFibGU9KCk9PiQuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3MsJH0pLE9WPUYoXCJfWm9kU3RyaW5nXCIsKCQsUSk9PntfMS5pbml0KCQsUSksSiQuaW5pdCgkLFEpO2xldCBKPSQuX3pvZC5iYWc7JC5mb3JtYXQ9Si5mb3JtYXQ/P251bGwsJC5taW5MZW5ndGg9Si5taW5pbXVtPz9udWxsLCQubWF4TGVuZ3RoPUoubWF4aW11bT8/bnVsbCwkLnJlZ2V4PSguLi5ZKT0+JC5jaGVjayhzUSguLi5ZKSksJC5pbmNsdWRlcz0oLi4uWSk9PiQuY2hlY2soUUooLi4uWSkpLCQuc3RhcnRzV2l0aD0oLi4uWSk9PiQuY2hlY2soSkooLi4uWSkpLCQuZW5kc1dpdGg9KC4uLlkpPT4kLmNoZWNrKFhKKC4uLlkpKSwkLm1pbj0oLi4uWSk9PiQuY2hlY2soazEoLi4uWSkpLCQubWF4PSguLi5ZKT0+JC5jaGVjaygkOSguLi5ZKSksJC5sZW5ndGg9KC4uLlkpPT4kLmNoZWNrKFE5KC4uLlkpKSwkLm5vbmVtcHR5PSguLi5ZKT0+JC5jaGVjayhrMSgxLC4uLlkpKSwkLmxvd2VyY2FzZT0oWSk9PiQuY2hlY2soZVEoWSkpLCQudXBwZXJjYXNlPShZKT0+JC5jaGVjaygkSihZKSksJC50cmltPSgpPT4kLmNoZWNrKEdKKCkpLCQubm9ybWFsaXplPSguLi5ZKT0+JC5jaGVjayhXSiguLi5ZKSksJC50b0xvd2VyQ2FzZT0oKT0+JC5jaGVjayhVSigpKSwkLnRvVXBwZXJDYXNlPSgpPT4kLmNoZWNrKEhKKCkpfSksVko9RihcIlpvZFN0cmluZ1wiLCgkLFEpPT57XzEuaW5pdCgkLFEpLE9WLmluaXQoJCxRKSwkLmVtYWlsPShKKT0+JC5jaGVjayhTUShEVixKKSksJC51cmw9KEopPT4kLmNoZWNrKHhRKEZWLEopKSwkLmp3dD0oSik9PiQuY2hlY2sodFEoQ1YsSikpLCQuZW1vamk9KEopPT4kLmNoZWNrKGZRKFpWLEopKSwkLmd1aWQ9KEopPT4kLmNoZWNrKHM4KGgzLEopKSwkLnV1aWQ9KEopPT4kLmNoZWNrKGtRKCQxLEopKSwkLnV1aWR2ND0oSik9PiQuY2hlY2sodlEoJDEsSikpLCQudXVpZHY2PShKKT0+JC5jaGVjayhDUSgkMSxKKSksJC51dWlkdjc9KEopPT4kLmNoZWNrKFRRKCQxLEopKSwkLm5hbm9pZD0oSik9PiQuY2hlY2soeVEoTVYsSikpLCQuZ3VpZD0oSik9PiQuY2hlY2soczgoaDMsSikpLCQuY3VpZD0oSik9PiQuY2hlY2soZ1EoTFYsSikpLCQuY3VpZDI9KEopPT4kLmNoZWNrKGhRKGpWLEopKSwkLnVsaWQ9KEopPT4kLmNoZWNrKHVRKEFWLEopKSwkLmJhc2U2ND0oSik9PiQuY2hlY2soblEoU1YsSikpLCQuYmFzZTY0dXJsPShKKT0+JC5jaGVjayhyUShrVixKKSksJC54aWQ9KEopPT4kLmNoZWNrKG1RKElWLEopKSwkLmtzdWlkPShKKT0+JC5jaGVjayhsUShSVixKKSksJC5pcHY0PShKKT0+JC5jaGVjayhjUShQVixKKSksJC5pcHY2PShKKT0+JC5jaGVjayhwUShFVixKKSksJC5jaWRydjQ9KEopPT4kLmNoZWNrKGRRKGJWLEopKSwkLmNpZHJ2Nj0oSik9PiQuY2hlY2soaVEoX1YsSikpLCQuZTE2ND0oSik9PiQuY2hlY2sob1EodlYsSikpLCQuZGF0ZXRpbWU9KEopPT4kLmNoZWNrKFVWKEopKSwkLmRhdGU9KEopPT4kLmNoZWNrKEhWKEopKSwkLnRpbWU9KEopPT4kLmNoZWNrKEtWKEopKSwkLmR1cmF0aW9uPShKKT0+JC5jaGVjayhxVihKKSl9KTtmdW5jdGlvbiBMKCQpe3JldHVybiBXMyhWSiwkKX12YXIgRSQ9RihcIlpvZFN0cmluZ0Zvcm1hdFwiLCgkLFEpPT57aiQuaW5pdCgkLFEpLE9WLmluaXQoJCxRKX0pLERWPUYoXCJab2RFbWFpbFwiLCgkLFEpPT57S1kuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIEltKCQpe3JldHVybiBTUShEViwkKX12YXIgaDM9RihcIlpvZEdVSURcIiwoJCxRKT0+e1VZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBSbSgkKXtyZXR1cm4gczgoaDMsJCl9dmFyICQxPUYoXCJab2RVVUlEXCIsKCQsUSk9PntIWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gUG0oJCl7cmV0dXJuIGtRKCQxLCQpfWZ1bmN0aW9uIEVtKCQpe3JldHVybiB2USgkMSwkKX1mdW5jdGlvbiBibSgkKXtyZXR1cm4gQ1EoJDEsJCl9ZnVuY3Rpb24gX20oJCl7cmV0dXJuIFRRKCQxLCQpfXZhciBGVj1GKFwiWm9kVVJMXCIsKCQsUSk9PntxWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gU20oJCl7cmV0dXJuIHhRKEZWLCQpfXZhciBaVj1GKFwiWm9kRW1vamlcIiwoJCxRKT0+e1ZZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBrbSgkKXtyZXR1cm4gZlEoWlYsJCl9dmFyIE1WPUYoXCJab2ROYW5vSURcIiwoJCxRKT0+e0JZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiB2bSgkKXtyZXR1cm4geVEoTVYsJCl9dmFyIExWPUYoXCJab2RDVUlEXCIsKCQsUSk9Pnt6WS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gQ20oJCl7cmV0dXJuIGdRKExWLCQpfXZhciBqVj1GKFwiWm9kQ1VJRDJcIiwoJCxRKT0+e05ZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBUbSgkKXtyZXR1cm4gaFEoalYsJCl9dmFyIEFWPUYoXCJab2RVTElEXCIsKCQsUSk9Pnt3WS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24geG0oJCl7cmV0dXJuIHVRKEFWLCQpfXZhciBJVj1GKFwiWm9kWElEXCIsKCQsUSk9PntPWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gZm0oJCl7cmV0dXJuIG1RKElWLCQpfXZhciBSVj1GKFwiWm9kS1NVSURcIiwoJCxRKT0+e0RZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiB5bSgkKXtyZXR1cm4gbFEoUlYsJCl9dmFyIFBWPUYoXCJab2RJUHY0XCIsKCQsUSk9PntGWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gZ20oJCl7cmV0dXJuIGNRKFBWLCQpfXZhciBFVj1GKFwiWm9kSVB2NlwiLCgkLFEpPT57WlkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGhtKCQpe3JldHVybiBwUShFViwkKX12YXIgYlY9RihcIlpvZENJRFJ2NFwiLCgkLFEpPT57TVkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHVtKCQpe3JldHVybiBkUShiViwkKX12YXIgX1Y9RihcIlpvZENJRFJ2NlwiLCgkLFEpPT57TFkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIG1tKCQpe3JldHVybiBpUShfViwkKX12YXIgU1Y9RihcIlpvZEJhc2U2NFwiLCgkLFEpPT57alkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGxtKCQpe3JldHVybiBuUShTViwkKX12YXIga1Y9RihcIlpvZEJhc2U2NFVSTFwiLCgkLFEpPT57QVkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGNtKCQpe3JldHVybiByUShrViwkKX12YXIgdlY9RihcIlpvZEUxNjRcIiwoJCxRKT0+e0lZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBwbSgkKXtyZXR1cm4gb1EodlYsJCl9dmFyIENWPUYoXCJab2RKV1RcIiwoJCxRKT0+e1JZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBkbSgkKXtyZXR1cm4gdFEoQ1YsJCl9dmFyIF9NPUYoXCJab2RDdXN0b21TdHJpbmdGb3JtYXRcIiwoJCxRKT0+e1BZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBpbSgkLFEsSj17fSl7cmV0dXJuIF8zKF9NLCQsUSxKKX12YXIgQko9RihcIlpvZE51bWJlclwiLCgkLFEpPT57QVEuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmd0PShZLFgpPT4kLmNoZWNrKHM0KFksWCkpLCQuZ3RlPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQubWluPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQubHQ9KFksWCk9PiQuY2hlY2soYTQoWSxYKSksJC5sdGU9KFksWCk9PiQuY2hlY2sodDYoWSxYKSksJC5tYXg9KFksWCk9PiQuY2hlY2sodDYoWSxYKSksJC5pbnQ9KFkpPT4kLmNoZWNrKHdWKFkpKSwkLnNhZmU9KFkpPT4kLmNoZWNrKHdWKFkpKSwkLnBvc2l0aXZlPShZKT0+JC5jaGVjayhzNCgwLFkpKSwkLm5vbm5lZ2F0aXZlPShZKT0+JC5jaGVjayhJNigwLFkpKSwkLm5lZ2F0aXZlPShZKT0+JC5jaGVjayhhNCgwLFkpKSwkLm5vbnBvc2l0aXZlPShZKT0+JC5jaGVjayh0NigwLFkpKSwkLm11bHRpcGxlT2Y9KFksWCk9PiQuY2hlY2soazAoWSxYKSksJC5zdGVwPShZLFgpPT4kLmNoZWNrKGswKFksWCkpLCQuZmluaXRlPSgpPT4kO2xldCBKPSQuX3pvZC5iYWc7JC5taW5WYWx1ZT1NYXRoLm1heChKLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSxKLmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsJC5tYXhWYWx1ZT1NYXRoLm1pbihKLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxKLmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsJC5pc0ludD0oSi5mb3JtYXQ/P1wiXCIpLmluY2x1ZGVzKFwiaW50XCIpfHxOdW1iZXIuaXNTYWZlSW50ZWdlcihKLm11bHRpcGxlT2Y/PzAuNSksJC5pc0Zpbml0ZT0hMCwkLmZvcm1hdD1KLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIHokKCQpe3JldHVybiBVMyhCSiwkKX12YXIgRzk9RihcIlpvZE51bWJlckZvcm1hdFwiLCgkLFEpPT57RVkuaW5pdCgkLFEpLEJKLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHdWKCQpe3JldHVybiBIMyhHOSwkKX1mdW5jdGlvbiBubSgkKXtyZXR1cm4gSzMoRzksJCl9ZnVuY3Rpb24gcm0oJCl7cmV0dXJuIHEzKEc5LCQpfWZ1bmN0aW9uIG9tKCQpe3JldHVybiBWMyhHOSwkKX1mdW5jdGlvbiB0bSgkKXtyZXR1cm4gQjMoRzksJCl9dmFyIHpKPUYoXCJab2RCb29sZWFuXCIsKCQsUSk9PntuOC5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gaSQoJCl7cmV0dXJuIHozKHpKLCQpfXZhciBOSj1GKFwiWm9kQmlnSW50XCIsKCQsUSk9PntJUS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQuZ3RlPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQubWluPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQuZ3Q9KFksWCk9PiQuY2hlY2soczQoWSxYKSksJC5ndGU9KFksWCk9PiQuY2hlY2soSTYoWSxYKSksJC5taW49KFksWCk9PiQuY2hlY2soSTYoWSxYKSksJC5sdD0oWSxYKT0+JC5jaGVjayhhNChZLFgpKSwkLmx0ZT0oWSxYKT0+JC5jaGVjayh0NihZLFgpKSwkLm1heD0oWSxYKT0+JC5jaGVjayh0NihZLFgpKSwkLnBvc2l0aXZlPShZKT0+JC5jaGVjayhzNChCaWdJbnQoMCksWSkpLCQubmVnYXRpdmU9KFkpPT4kLmNoZWNrKGE0KEJpZ0ludCgwKSxZKSksJC5ub25wb3NpdGl2ZT0oWSk9PiQuY2hlY2sodDYoQmlnSW50KDApLFkpKSwkLm5vbm5lZ2F0aXZlPShZKT0+JC5jaGVjayhJNihCaWdJbnQoMCksWSkpLCQubXVsdGlwbGVPZj0oWSxYKT0+JC5jaGVjayhrMChZLFgpKTtsZXQgSj0kLl96b2QuYmFnOyQubWluVmFsdWU9Si5taW5pbXVtPz9udWxsLCQubWF4VmFsdWU9Si5tYXhpbXVtPz9udWxsLCQuZm9ybWF0PUouZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24gYW0oJCl7cmV0dXJuIE4zKE5KLCQpfXZhciBUVj1GKFwiWm9kQmlnSW50Rm9ybWF0XCIsKCQsUSk9PntiWS5pbml0KCQsUSksTkouaW5pdCgkLFEpfSk7ZnVuY3Rpb24gc20oJCl7cmV0dXJuIHczKFRWLCQpfWZ1bmN0aW9uIGVtKCQpe3JldHVybiBPMyhUViwkKX12YXIgU009RihcIlpvZFN5bWJvbFwiLCgkLFEpPT57X1kuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uICRsKCQpe3JldHVybiBEMyhTTSwkKX12YXIga009RihcIlpvZFVuZGVmaW5lZFwiLCgkLFEpPT57U1kuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFFsKCQpe3JldHVybiBGMyhrTSwkKX12YXIgdk09RihcIlpvZE51bGxcIiwoJCxRKT0+e2tZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBsMygkKXtyZXR1cm4gWjModk0sJCl9dmFyIENNPUYoXCJab2RBbnlcIiwoJCxRKT0+e3ZZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBKbCgpe3JldHVybiBNMyhDTSl9dmFyIFRNPUYoXCJab2RVbmtub3duXCIsKCQsUSk9PntfMC5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gUyQoKXtyZXR1cm4gUzAoVE0pfXZhciB4TT1GKFwiWm9kTmV2ZXJcIiwoJCxRKT0+e0NZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBjMygkKXtyZXR1cm4gTDMoeE0sJCl9dmFyIGZNPUYoXCJab2RWb2lkXCIsKCQsUSk9PntUWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gWGwoJCl7cmV0dXJuIGozKGZNLCQpfXZhciBwMz1GKFwiWm9kRGF0ZVwiLCgkLFEpPT57eFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLm1pbj0oWSxYKT0+JC5jaGVjayhJNihZLFgpKSwkLm1heD0oWSxYKT0+JC5jaGVjayh0NihZLFgpKTtsZXQgSj0kLl96b2QuYmFnOyQubWluRGF0ZT1KLm1pbmltdW0/bmV3IERhdGUoSi5taW5pbXVtKTpudWxsLCQubWF4RGF0ZT1KLm1heGltdW0/bmV3IERhdGUoSi5tYXhpbXVtKTpudWxsfSk7ZnVuY3Rpb24gWWwoJCl7cmV0dXJuIEEzKHAzLCQpfXZhciB5TT1GKFwiWm9kQXJyYXlcIiwoJCxRKT0+e3I4LmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5lbGVtZW50PVEuZWxlbWVudCwkLm1pbj0oSixZKT0+JC5jaGVjayhrMShKLFkpKSwkLm5vbmVtcHR5PShKKT0+JC5jaGVjayhrMSgxLEopKSwkLm1heD0oSixZKT0+JC5jaGVjaygkOShKLFkpKSwkLmxlbmd0aD0oSixZKT0+JC5jaGVjayhROShKLFkpKSwkLnVud3JhcD0oKT0+JC5lbGVtZW50fSk7ZnVuY3Rpb24gVyQoJCxRKXtyZXR1cm4gS0ooeU0sJCxRKX1mdW5jdGlvbiBXbCgkKXtsZXQgUT0kLl96b2QuZGVmLnNoYXBlO3JldHVybiBsKE9iamVjdC5rZXlzKFEpKX12YXIgZDM9RihcIlpvZE9iamVjdFwiLCgkLFEpPT57UlEuaW5pdCgkLFEpLEokLmluaXQoJCxRKSx2LmRlZmluZUxhenkoJCxcInNoYXBlXCIsKCk9PlEuc2hhcGUpLCQua2V5b2Y9KCk9Pno2KE9iamVjdC5rZXlzKCQuX3pvZC5kZWYuc2hhcGUpKSwkLmNhdGNoYWxsPShKKT0+JC5jbG9uZSh7Li4uJC5fem9kLmRlZixjYXRjaGFsbDpKfSksJC5wYXNzdGhyb3VnaD0oKT0+JC5jbG9uZSh7Li4uJC5fem9kLmRlZixjYXRjaGFsbDpTJCgpfSksJC5sb29zZT0oKT0+JC5jbG9uZSh7Li4uJC5fem9kLmRlZixjYXRjaGFsbDpTJCgpfSksJC5zdHJpY3Q9KCk9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYsY2F0Y2hhbGw6YzMoKX0pLCQuc3RyaXA9KCk9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYsY2F0Y2hhbGw6dm9pZCAwfSksJC5leHRlbmQ9KEopPT57cmV0dXJuIHYuZXh0ZW5kKCQsSil9LCQubWVyZ2U9KEopPT52Lm1lcmdlKCQsSiksJC5waWNrPShKKT0+di5waWNrKCQsSiksJC5vbWl0PShKKT0+di5vbWl0KCQsSiksJC5wYXJ0aWFsPSguLi5KKT0+di5wYXJ0aWFsKGhWLCQsSlswXSksJC5yZXF1aXJlZD0oLi4uSik9PnYucmVxdWlyZWQodVYsJCxKWzBdKX0pO2Z1bmN0aW9uIGgoJCxRKXtsZXQgSj17dHlwZTpcIm9iamVjdFwiLGdldCBzaGFwZSgpe3JldHVybiB2LmFzc2lnblByb3AodGhpcyxcInNoYXBlXCIsey4uLiR9KSx0aGlzLnNoYXBlfSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX07cmV0dXJuIG5ldyBkMyhKKX1mdW5jdGlvbiBHbCgkLFEpe3JldHVybiBuZXcgZDMoe3R5cGU6XCJvYmplY3RcIixnZXQgc2hhcGUoKXtyZXR1cm4gdi5hc3NpZ25Qcm9wKHRoaXMsXCJzaGFwZVwiLHsuLi4kfSksdGhpcy5zaGFwZX0sY2F0Y2hhbGw6YzMoKSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pfWZ1bmN0aW9uIEg2KCQsUSl7cmV0dXJuIG5ldyBkMyh7dHlwZTpcIm9iamVjdFwiLGdldCBzaGFwZSgpe3JldHVybiB2LmFzc2lnblByb3AodGhpcyxcInNoYXBlXCIsey4uLiR9KSx0aGlzLnNoYXBlfSxjYXRjaGFsbDpTJCgpLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9dmFyIHhWPUYoXCJab2RVbmlvblwiLCgkLFEpPT57UFEuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLm9wdGlvbnM9US5vcHRpb25zfSk7ZnVuY3Rpb24gQSQoJCxRKXtyZXR1cm4gbmV3IHhWKHt0eXBlOlwidW5pb25cIixvcHRpb25zOiQsLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX12YXIgZ009RihcIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiLCgkLFEpPT57eFYuaW5pdCgkLFEpLGZZLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGkzKCQsUSxKKXtyZXR1cm4gbmV3IGdNKHt0eXBlOlwidW5pb25cIixvcHRpb25zOlEsZGlzY3JpbWluYXRvcjokLC4uLnYubm9ybWFsaXplUGFyYW1zKEopfSl9dmFyIGhNPUYoXCJab2RJbnRlcnNlY3Rpb25cIiwoJCxRKT0+e3lZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiB3SigkLFEpe3JldHVybiBuZXcgaE0oe3R5cGU6XCJpbnRlcnNlY3Rpb25cIixsZWZ0OiQscmlnaHQ6UX0pfXZhciB1TT1GKFwiWm9kVHVwbGVcIiwoJCxRKT0+e1MxLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5yZXN0PShKKT0+JC5jbG9uZSh7Li4uJC5fem9kLmRlZixyZXN0Okp9KX0pO2Z1bmN0aW9uIFVsKCQsUSxKKXtsZXQgWT1RIGluc3RhbmNlb2YgbyxYPVk/SjpRO3JldHVybiBuZXcgdU0oe3R5cGU6XCJ0dXBsZVwiLGl0ZW1zOiQscmVzdDpZP1E6bnVsbCwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhYKX0pfXZhciBmVj1GKFwiWm9kUmVjb3JkXCIsKCQsUSk9PntnWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQua2V5VHlwZT1RLmtleVR5cGUsJC52YWx1ZVR5cGU9US52YWx1ZVR5cGV9KTtmdW5jdGlvbiBJJCgkLFEsSil7cmV0dXJuIG5ldyBmVih7dHlwZTpcInJlY29yZFwiLGtleVR5cGU6JCx2YWx1ZVR5cGU6USwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhKKX0pfWZ1bmN0aW9uIEhsKCQsUSxKKXtyZXR1cm4gbmV3IGZWKHt0eXBlOlwicmVjb3JkXCIsa2V5VHlwZTpBJChbJCxjMygpXSksdmFsdWVUeXBlOlEsLi4udi5ub3JtYWxpemVQYXJhbXMoSil9KX12YXIgbU09RihcIlpvZE1hcFwiLCgkLFEpPT57aFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmtleVR5cGU9US5rZXlUeXBlLCQudmFsdWVUeXBlPVEudmFsdWVUeXBlfSk7ZnVuY3Rpb24gS2woJCxRLEope3JldHVybiBuZXcgbU0oe3R5cGU6XCJtYXBcIixrZXlUeXBlOiQsdmFsdWVUeXBlOlEsLi4udi5ub3JtYWxpemVQYXJhbXMoSil9KX12YXIgbE09RihcIlpvZFNldFwiLCgkLFEpPT57dVkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLm1pbj0oLi4uSik9PiQuY2hlY2sodjAoLi4uSikpLCQubm9uZW1wdHk9KEopPT4kLmNoZWNrKHYwKDEsSikpLCQubWF4PSguLi5KKT0+JC5jaGVjayhlOCguLi5KKSksJC5zaXplPSguLi5KKT0+JC5jaGVjayhhUSguLi5KKSl9KTtmdW5jdGlvbiBxbCgkLFEpe3JldHVybiBuZXcgbE0oe3R5cGU6XCJzZXRcIix2YWx1ZVR5cGU6JCwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pfXZhciBxSj1GKFwiWm9kRW51bVwiLCgkLFEpPT57bVkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmVudW09US5lbnRyaWVzLCQub3B0aW9ucz1PYmplY3QudmFsdWVzKFEuZW50cmllcyk7bGV0IEo9bmV3IFNldChPYmplY3Qua2V5cyhRLmVudHJpZXMpKTskLmV4dHJhY3Q9KFksWCk9PntsZXQgVz17fTtmb3IobGV0IEcgb2YgWSlpZihKLmhhcyhHKSlXW0ddPVEuZW50cmllc1tHXTtlbHNlIHRocm93IEVycm9yKGBLZXkgJHtHfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgcUooey4uLlEsY2hlY2tzOltdLC4uLnYubm9ybWFsaXplUGFyYW1zKFgpLGVudHJpZXM6V30pfSwkLmV4Y2x1ZGU9KFksWCk9PntsZXQgVz17Li4uUS5lbnRyaWVzfTtmb3IobGV0IEcgb2YgWSlpZihKLmhhcyhHKSlkZWxldGUgV1tHXTtlbHNlIHRocm93IEVycm9yKGBLZXkgJHtHfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgcUooey4uLlEsY2hlY2tzOltdLC4uLnYubm9ybWFsaXplUGFyYW1zKFgpLGVudHJpZXM6V30pfX0pO2Z1bmN0aW9uIHo2KCQsUSl7bGV0IEo9QXJyYXkuaXNBcnJheSgkKT9PYmplY3QuZnJvbUVudHJpZXMoJC5tYXAoKFkpPT5bWSxZXSkpOiQ7cmV0dXJuIG5ldyBxSih7dHlwZTpcImVudW1cIixlbnRyaWVzOkosLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX1mdW5jdGlvbiBWbCgkLFEpe3JldHVybiBuZXcgcUooe3R5cGU6XCJlbnVtXCIsZW50cmllczokLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9dmFyIGNNPUYoXCJab2RMaXRlcmFsXCIsKCQsUSk9PntsWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudmFsdWVzPW5ldyBTZXQoUS52YWx1ZXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkLFwidmFsdWVcIix7Z2V0KCl7aWYoUS52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgRXJyb3IoXCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLlwiKTtyZXR1cm4gUS52YWx1ZXNbMF19fSl9KTtmdW5jdGlvbiBsKCQsUSl7cmV0dXJuIG5ldyBjTSh7dHlwZTpcImxpdGVyYWxcIix2YWx1ZXM6QXJyYXkuaXNBcnJheSgkKT8kOlskXSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pfXZhciBwTT1GKFwiWm9kRmlsZVwiLCgkLFEpPT57Y1kuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLm1pbj0oSixZKT0+JC5jaGVjayh2MChKLFkpKSwkLm1heD0oSixZKT0+JC5jaGVjayhlOChKLFkpKSwkLm1pbWU9KEosWSk9PiQuY2hlY2soWUooQXJyYXkuaXNBcnJheShKKT9KOltKXSxZKSl9KTtmdW5jdGlvbiBCbCgkKXtyZXR1cm4gUjMocE0sJCl9dmFyIHlWPUYoXCJab2RUcmFuc2Zvcm1cIiwoJCxRKT0+e284LmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57Si5hZGRJc3N1ZT0oVyk9PntpZih0eXBlb2YgVz09PVwic3RyaW5nXCIpSi5pc3N1ZXMucHVzaCh2Lmlzc3VlKFcsSi52YWx1ZSxRKSk7ZWxzZXtsZXQgRz1XO2lmKEcuZmF0YWwpRy5jb250aW51ZT0hMTtHLmNvZGU/PyhHLmNvZGU9XCJjdXN0b21cIiksRy5pbnB1dD8/KEcuaW5wdXQ9Si52YWx1ZSksRy5pbnN0Pz8oRy5pbnN0PSQpLEcuY29udGludWU/PyhHLmNvbnRpbnVlPSEwKSxKLmlzc3Vlcy5wdXNoKHYuaXNzdWUoRykpfX07bGV0IFg9US50cmFuc2Zvcm0oSi52YWx1ZSxKKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+e3JldHVybiBKLnZhbHVlPVcsSn0pO3JldHVybiBKLnZhbHVlPVgsSn19KTtmdW5jdGlvbiBnVigkKXtyZXR1cm4gbmV3IHlWKHt0eXBlOlwidHJhbnNmb3JtXCIsdHJhbnNmb3JtOiR9KX12YXIgaFY9RihcIlpvZE9wdGlvbmFsXCIsKCQsUSk9PntwWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGIkKCQpe3JldHVybiBuZXcgaFYoe3R5cGU6XCJvcHRpb25hbFwiLGlubmVyVHlwZTokfSl9dmFyIGRNPUYoXCJab2ROdWxsYWJsZVwiLCgkLFEpPT57ZFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB1MygkKXtyZXR1cm4gbmV3IGRNKHt0eXBlOlwibnVsbGFibGVcIixpbm5lclR5cGU6JH0pfWZ1bmN0aW9uIHpsKCQpe3JldHVybiBiJCh1MygkKSl9dmFyIGlNPUYoXCJab2REZWZhdWx0XCIsKCQsUSk9PntpWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZSwkLnJlbW92ZURlZmF1bHQ9JC51bndyYXB9KTtmdW5jdGlvbiBuTSgkLFEpe3JldHVybiBuZXcgaU0oe3R5cGU6XCJkZWZhdWx0XCIsaW5uZXJUeXBlOiQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2YgUT09PVwiZnVuY3Rpb25cIj9RKCk6UX19KX12YXIgck09RihcIlpvZFByZWZhdWx0XCIsKCQsUSk9PntuWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIG9NKCQsUSl7cmV0dXJuIG5ldyByTSh7dHlwZTpcInByZWZhdWx0XCIsaW5uZXJUeXBlOiQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2YgUT09PVwiZnVuY3Rpb25cIj9RKCk6UX19KX12YXIgdVY9RihcIlpvZE5vbk9wdGlvbmFsXCIsKCQsUSk9PntyWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHRNKCQsUSl7cmV0dXJuIG5ldyB1Vih7dHlwZTpcIm5vbm9wdGlvbmFsXCIsaW5uZXJUeXBlOiQsLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX12YXIgYU09RihcIlpvZFN1Y2Nlc3NcIiwoJCxRKT0+e29ZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC51bndyYXA9KCk9PiQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gTmwoJCl7cmV0dXJuIG5ldyBhTSh7dHlwZTpcInN1Y2Nlc3NcIixpbm5lclR5cGU6JH0pfXZhciBzTT1GKFwiWm9kQ2F0Y2hcIiwoJCxRKT0+e3RZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC51bndyYXA9KCk9PiQuX3pvZC5kZWYuaW5uZXJUeXBlLCQucmVtb3ZlQ2F0Y2g9JC51bndyYXB9KTtmdW5jdGlvbiBlTSgkLFEpe3JldHVybiBuZXcgc00oe3R5cGU6XCJjYXRjaFwiLGlubmVyVHlwZTokLGNhdGNoVmFsdWU6dHlwZW9mIFE9PT1cImZ1bmN0aW9uXCI/UTooKT0+UX0pfXZhciAkTD1GKFwiWm9kTmFOXCIsKCQsUSk9PnthWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gd2woJCl7cmV0dXJuIEkzKCRMLCQpfXZhciBtVj1GKFwiWm9kUGlwZVwiLCgkLFEpPT57dDguaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmluPVEuaW4sJC5vdXQ9US5vdXR9KTtmdW5jdGlvbiBtMygkLFEpe3JldHVybiBuZXcgbVYoe3R5cGU6XCJwaXBlXCIsaW46JCxvdXQ6UX0pfXZhciBRTD1GKFwiWm9kUmVhZG9ubHlcIiwoJCxRKT0+e3NZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBKTCgkKXtyZXR1cm4gbmV3IFFMKHt0eXBlOlwicmVhZG9ubHlcIixpbm5lclR5cGU6JH0pfXZhciBYTD1GKFwiWm9kVGVtcGxhdGVMaXRlcmFsXCIsKCQsUSk9PntlWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gT2woJCxRKXtyZXR1cm4gbmV3IFhMKHt0eXBlOlwidGVtcGxhdGVfbGl0ZXJhbFwiLHBhcnRzOiQsLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX12YXIgWUw9RihcIlpvZExhenlcIiwoJCxRKT0+e1EzLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC51bndyYXA9KCk9PiQuX3pvZC5kZWYuZ2V0dGVyKCl9KTtmdW5jdGlvbiBXTCgkKXtyZXR1cm4gbmV3IFlMKHt0eXBlOlwibGF6eVwiLGdldHRlcjokfSl9dmFyIEdMPUYoXCJab2RQcm9taXNlXCIsKCQsUSk9PnskMy5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIERsKCQpe3JldHVybiBuZXcgR0woe3R5cGU6XCJwcm9taXNlXCIsaW5uZXJUeXBlOiR9KX12YXIgbjM9RihcIlpvZEN1c3RvbVwiLCgkLFEpPT57SjMuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFVMKCQsUSl7bGV0IEo9bmV3IFQkKHtjaGVjazpcImN1c3RvbVwiLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSk7cmV0dXJuIEouX3pvZC5jaGVjaz0kLEp9ZnVuY3Rpb24gbFYoJCxRKXtyZXR1cm4gUDMobjMsJD8/KCgpPT4hMCksUSl9ZnVuY3Rpb24gSEwoJCxRPXt9KXtyZXR1cm4gRTMobjMsJCxRKX1mdW5jdGlvbiBLTCgkLFEpe2xldCBKPVVMKChZKT0+e3JldHVybiBZLmFkZElzc3VlPShYKT0+e2lmKHR5cGVvZiBYPT09XCJzdHJpbmdcIilZLmlzc3Vlcy5wdXNoKHYuaXNzdWUoWCxZLnZhbHVlLEouX3pvZC5kZWYpKTtlbHNle2xldCBXPVg7aWYoVy5mYXRhbClXLmNvbnRpbnVlPSExO1cuY29kZT8/KFcuY29kZT1cImN1c3RvbVwiKSxXLmlucHV0Pz8oVy5pbnB1dD1ZLnZhbHVlKSxXLmluc3Q/PyhXLmluc3Q9SiksVy5jb250aW51ZT8/KFcuY29udGludWU9IUouX3pvZC5kZWYuYWJvcnQpLFkuaXNzdWVzLnB1c2godi5pc3N1ZShXKSl9fSwkKFkudmFsdWUsWSl9LFEpO3JldHVybiBKfWZ1bmN0aW9uIEZsKCQsUT17ZXJyb3I6YElucHV0IG5vdCBpbnN0YW5jZSBvZiAkeyQubmFtZX1gfSl7bGV0IEo9bmV3IG4zKHt0eXBlOlwiY3VzdG9tXCIsY2hlY2s6XCJjdXN0b21cIixmbjooWSk9PlkgaW5zdGFuY2VvZiAkLGFib3J0OiEwLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSk7cmV0dXJuIEouX3pvZC5iYWcuQ2xhc3M9JCxKfXZhciBabD0oLi4uJCk9PmIzKHtQaXBlOm1WLEJvb2xlYW46ekosU3RyaW5nOlZKLFRyYW5zZm9ybTp5Vn0sLi4uJCk7ZnVuY3Rpb24gTWwoJCl7bGV0IFE9V0woKCk9PntyZXR1cm4gQSQoW0woJCkseiQoKSxpJCgpLGwzKCksVyQoUSksSSQoTCgpLFEpXSl9KTtyZXR1cm4gUX1mdW5jdGlvbiByMygkLFEpe3JldHVybiBtMyhnVigkKSxRKX12YXIgTGw9e2ludmFsaWRfdHlwZTpcImludmFsaWRfdHlwZVwiLHRvb19iaWc6XCJ0b29fYmlnXCIsdG9vX3NtYWxsOlwidG9vX3NtYWxsXCIsaW52YWxpZF9mb3JtYXQ6XCJpbnZhbGlkX2Zvcm1hdFwiLG5vdF9tdWx0aXBsZV9vZjpcIm5vdF9tdWx0aXBsZV9vZlwiLHVucmVjb2duaXplZF9rZXlzOlwidW5yZWNvZ25pemVkX2tleXNcIixpbnZhbGlkX3VuaW9uOlwiaW52YWxpZF91bmlvblwiLGludmFsaWRfa2V5OlwiaW52YWxpZF9rZXlcIixpbnZhbGlkX2VsZW1lbnQ6XCJpbnZhbGlkX2VsZW1lbnRcIixpbnZhbGlkX3ZhbHVlOlwiaW52YWxpZF92YWx1ZVwiLGN1c3RvbTpcImN1c3RvbVwifTtmdW5jdGlvbiBqbCgkKXtjJCh7Y3VzdG9tRXJyb3I6JH0pfWZ1bmN0aW9uIEFsKCl7cmV0dXJuIGMkKCkuY3VzdG9tRXJyb3J9dmFyIGNWPXt9O2o0KGNWLHtzdHJpbmc6KCk9PklsLG51bWJlcjooKT0+UmwsZGF0ZTooKT0+YmwsYm9vbGVhbjooKT0+UGwsYmlnaW50OigpPT5FbH0pO2Z1bmN0aW9uIElsKCQpe3JldHVybiBwcShWSiwkKX1mdW5jdGlvbiBSbCgkKXtyZXR1cm4gb3EoQkosJCl9ZnVuY3Rpb24gUGwoJCl7cmV0dXJuIHRxKHpKLCQpfWZ1bmN0aW9uIEVsKCQpe3JldHVybiBhcShOSiwkKX1mdW5jdGlvbiBibCgkKXtyZXR1cm4gc3EocDMsJCl9YyQoRVEoKSk7dmFyIHFMPUs7dmFyIHBWPXFMO3ZhciBkVj1cIjIwMjUtMTEtMjVcIjt2YXIgVkw9W2RWLFwiMjAyNS0wNi0xOFwiLFwiMjAyNS0wMy0yNlwiLFwiMjAyNC0xMS0wNVwiLFwiMjAyNC0xMC0wN1wiXSxUMT1cImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFza1wiLHQzPVwiMi4wXCIsYSQ9bFYoKCQpPT4kIT09bnVsbCYmKHR5cGVvZiAkPT09XCJvYmplY3RcInx8dHlwZW9mICQ9PT1cImZ1bmN0aW9uXCIpKSxCTD1BJChbTCgpLHokKCkuaW50KCldKSx6TD1MKCksWlYkPUg2KHt0dGw6eiQoKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDp6JCgpLm9wdGlvbmFsKCl9KSxTbD1oKHt0dGw6eiQoKS5vcHRpb25hbCgpfSksa2w9aCh7dGFza0lkOkwoKX0pLGlWPUg2KHtwcm9ncmVzc1Rva2VuOkJMLm9wdGlvbmFsKCksW1QxXTprbC5vcHRpb25hbCgpfSksZzY9aCh7X21ldGE6aVYub3B0aW9uYWwoKX0pLE9KPWc2LmV4dGVuZCh7dGFzazpTbC5vcHRpb25hbCgpfSksTkw9KCQpPT5PSi5zYWZlUGFyc2UoJCkuc3VjY2VzcyxKNj1oKHttZXRob2Q6TCgpLHBhcmFtczpnNi5sb29zZSgpLm9wdGlvbmFsKCl9KSxzNj1oKHtfbWV0YTppVi5vcHRpb25hbCgpfSksZTY9aCh7bWV0aG9kOkwoKSxwYXJhbXM6czYubG9vc2UoKS5vcHRpb25hbCgpfSksWDY9SDYoe19tZXRhOmlWLm9wdGlvbmFsKCl9KSxhMz1BJChbTCgpLHokKCkuaW50KCldKSx3TD1oKHtqc29ucnBjOmwodDMpLGlkOmEzLC4uLko2LnNoYXBlfSkuc3RyaWN0KCksblY9KCQpPT53TC5zYWZlUGFyc2UoJCkuc3VjY2VzcyxPTD1oKHtqc29ucnBjOmwodDMpLC4uLmU2LnNoYXBlfSkuc3RyaWN0KCksREw9KCQpPT5PTC5zYWZlUGFyc2UoJCkuc3VjY2VzcyxyVj1oKHtqc29ucnBjOmwodDMpLGlkOmEzLHJlc3VsdDpYNn0pLnN0cmljdCgpLERKPSgkKT0+clYuc2FmZVBhcnNlKCQpLnN1Y2Nlc3M7dmFyIGQ7KGZ1bmN0aW9uKCQpeyRbJC5Db25uZWN0aW9uQ2xvc2VkPS0zMjAwMF09XCJDb25uZWN0aW9uQ2xvc2VkXCIsJFskLlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09XCJSZXF1ZXN0VGltZW91dFwiLCRbJC5QYXJzZUVycm9yPS0zMjcwMF09XCJQYXJzZUVycm9yXCIsJFskLkludmFsaWRSZXF1ZXN0PS0zMjYwMF09XCJJbnZhbGlkUmVxdWVzdFwiLCRbJC5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPVwiTWV0aG9kTm90Rm91bmRcIiwkWyQuSW52YWxpZFBhcmFtcz0tMzI2MDJdPVwiSW52YWxpZFBhcmFtc1wiLCRbJC5JbnRlcm5hbEVycm9yPS0zMjYwM109XCJJbnRlcm5hbEVycm9yXCIsJFskLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT1cIlVybEVsaWNpdGF0aW9uUmVxdWlyZWRcIn0pKGR8fChkPXt9KSk7dmFyIG9WPWgoe2pzb25ycGM6bCh0MyksaWQ6YTMub3B0aW9uYWwoKSxlcnJvcjpoKHtjb2RlOnokKCkuaW50KCksbWVzc2FnZTpMKCksZGF0YTpTJCgpLm9wdGlvbmFsKCl9KX0pLnN0cmljdCgpO3ZhciBGTD0oJCk9Pm9WLnNhZmVQYXJzZSgkKS5zdWNjZXNzO3ZhciBNViQ9QSQoW3dMLE9MLHJWLG9WXSksTFYkPUEkKFtyVixvVl0pLHMzPVg2LnN0cmljdCgpLHZsPXM2LmV4dGVuZCh7cmVxdWVzdElkOmEzLm9wdGlvbmFsKCkscmVhc29uOkwoKS5vcHRpb25hbCgpfSksZTM9ZTYuZXh0ZW5kKHttZXRob2Q6bChcIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkXCIpLHBhcmFtczp2bH0pLENsPWgoe3NyYzpMKCksbWltZVR5cGU6TCgpLm9wdGlvbmFsKCksc2l6ZXM6VyQoTCgpKS5vcHRpb25hbCgpLHRoZW1lOno2KFtcImxpZ2h0XCIsXCJkYXJrXCJdKS5vcHRpb25hbCgpfSksRko9aCh7aWNvbnM6VyQoQ2wpLm9wdGlvbmFsKCl9KSxVOT1oKHtuYW1lOkwoKSx0aXRsZTpMKCkub3B0aW9uYWwoKX0pLFpMPVU5LmV4dGVuZCh7Li4uVTkuc2hhcGUsLi4uRkouc2hhcGUsdmVyc2lvbjpMKCksd2Vic2l0ZVVybDpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKX0pLFRsPXdKKGgoe2FwcGx5RGVmYXVsdHM6aSQoKS5vcHRpb25hbCgpfSksSSQoTCgpLFMkKCkpKSx4bD1yMygoJCk9PntpZigkJiZ0eXBlb2YgJD09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KCQpKXtpZihPYmplY3Qua2V5cygkKS5sZW5ndGg9PT0wKXJldHVybntmb3JtOnt9fX1yZXR1cm4gJH0sd0ooaCh7Zm9ybTpUbC5vcHRpb25hbCgpLHVybDphJC5vcHRpb25hbCgpfSksSSQoTCgpLFMkKCkpLm9wdGlvbmFsKCkpKSxmbD1INih7bGlzdDphJC5vcHRpb25hbCgpLGNhbmNlbDphJC5vcHRpb25hbCgpLHJlcXVlc3RzOkg2KHtzYW1wbGluZzpINih7Y3JlYXRlTWVzc2FnZTphJC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpINih7Y3JlYXRlOmEkLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLHlsPUg2KHtsaXN0OmEkLm9wdGlvbmFsKCksY2FuY2VsOmEkLm9wdGlvbmFsKCkscmVxdWVzdHM6SDYoe3Rvb2xzOkg2KHtjYWxsOmEkLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLGdsPWgoe2V4cGVyaW1lbnRhbDpJJChMKCksYSQpLm9wdGlvbmFsKCksc2FtcGxpbmc6aCh7Y29udGV4dDphJC5vcHRpb25hbCgpLHRvb2xzOmEkLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOnhsLm9wdGlvbmFsKCkscm9vdHM6aCh7bGlzdENoYW5nZWQ6aSQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpmbC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SSQoTCgpLGEkKS5vcHRpb25hbCgpfSksaGw9ZzYuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246TCgpLGNhcGFiaWxpdGllczpnbCxjbGllbnRJbmZvOlpMfSksdFY9SjYuZXh0ZW5kKHttZXRob2Q6bChcImluaXRpYWxpemVcIikscGFyYW1zOmhsfSk7dmFyIHVsPWgoe2V4cGVyaW1lbnRhbDpJJChMKCksYSQpLm9wdGlvbmFsKCksbG9nZ2luZzphJC5vcHRpb25hbCgpLGNvbXBsZXRpb25zOmEkLm9wdGlvbmFsKCkscHJvbXB0czpoKHtsaXN0Q2hhbmdlZDppJCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczpoKHtzdWJzY3JpYmU6aSQoKS5vcHRpb25hbCgpLGxpc3RDaGFuZ2VkOmkkKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdG9vbHM6aCh7bGlzdENoYW5nZWQ6aSQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp5bC5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SSQoTCgpLGEkKS5vcHRpb25hbCgpfSksbWw9WDYuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246TCgpLGNhcGFiaWxpdGllczp1bCxzZXJ2ZXJJbmZvOlpMLGluc3RydWN0aW9uczpMKCkub3B0aW9uYWwoKX0pLGFWPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL2luaXRpYWxpemVkXCIpLHBhcmFtczpzNi5vcHRpb25hbCgpfSk7dmFyICRXPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJwaW5nXCIpLHBhcmFtczpnNi5vcHRpb25hbCgpfSksbGw9aCh7cHJvZ3Jlc3M6eiQoKSx0b3RhbDpiJCh6JCgpKSxtZXNzYWdlOmIkKEwoKSl9KSxjbD1oKHsuLi5zNi5zaGFwZSwuLi5sbC5zaGFwZSxwcm9ncmVzc1Rva2VuOkJMfSksUVc9ZTYuZXh0ZW5kKHttZXRob2Q6bChcIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3NcIikscGFyYW1zOmNsfSkscGw9ZzYuZXh0ZW5kKHtjdXJzb3I6ekwub3B0aW9uYWwoKX0pLFpKPUo2LmV4dGVuZCh7cGFyYW1zOnBsLm9wdGlvbmFsKCl9KSxNSj1YNi5leHRlbmQoe25leHRDdXJzb3I6ekwub3B0aW9uYWwoKX0pLGRsPXo2KFtcIndvcmtpbmdcIixcImlucHV0X3JlcXVpcmVkXCIsXCJjb21wbGV0ZWRcIixcImZhaWxlZFwiLFwiY2FuY2VsbGVkXCJdKSxMSj1oKHt0YXNrSWQ6TCgpLHN0YXR1czpkbCx0dGw6QSQoW3okKCksbDMoKV0pLGNyZWF0ZWRBdDpMKCksbGFzdFVwZGF0ZWRBdDpMKCkscG9sbEludGVydmFsOmIkKHokKCkpLHN0YXR1c01lc3NhZ2U6YiQoTCgpKX0pLEg5PVg2LmV4dGVuZCh7dGFzazpMSn0pLGlsPXM2Lm1lcmdlKExKKSxqSj1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXNcIikscGFyYW1zOmlsfSksSlc9SjYuZXh0ZW5kKHttZXRob2Q6bChcInRhc2tzL2dldFwiKSxwYXJhbXM6ZzYuZXh0ZW5kKHt0YXNrSWQ6TCgpfSl9KSxYVz1YNi5tZXJnZShMSiksWVc9SjYuZXh0ZW5kKHttZXRob2Q6bChcInRhc2tzL3Jlc3VsdFwiKSxwYXJhbXM6ZzYuZXh0ZW5kKHt0YXNrSWQ6TCgpfSl9KSxqViQ9WDYubG9vc2UoKSxXVz1aSi5leHRlbmQoe21ldGhvZDpsKFwidGFza3MvbGlzdFwiKX0pLEdXPU1KLmV4dGVuZCh7dGFza3M6VyQoTEopfSksVVc9SjYuZXh0ZW5kKHttZXRob2Q6bChcInRhc2tzL2NhbmNlbFwiKSxwYXJhbXM6ZzYuZXh0ZW5kKHt0YXNrSWQ6TCgpfSl9KSxNTD1YNi5tZXJnZShMSiksTEw9aCh7dXJpOkwoKSxtaW1lVHlwZTpiJChMKCkpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSksakw9TEwuZXh0ZW5kKHt0ZXh0OkwoKX0pLHNWPUwoKS5yZWZpbmUoKCQpPT57dHJ5e3JldHVybiBhdG9iKCQpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6XCJJbnZhbGlkIEJhc2U2NCBzdHJpbmdcIn0pLEFMPUxMLmV4dGVuZCh7YmxvYjpzVn0pLEFKPXo2KFtcInVzZXJcIixcImFzc2lzdGFudFwiXSksSzk9aCh7YXVkaWVuY2U6VyQoQUopLm9wdGlvbmFsKCkscHJpb3JpdHk6eiQoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksbGFzdE1vZGlmaWVkOlk5LmRhdGV0aW1lKHtvZmZzZXQ6ITB9KS5vcHRpb25hbCgpfSksSUw9aCh7Li4uVTkuc2hhcGUsLi4uRkouc2hhcGUsdXJpOkwoKSxkZXNjcmlwdGlvbjpiJChMKCkpLG1pbWVUeXBlOmIkKEwoKSksc2l6ZTpiJCh6JCgpKSxhbm5vdGF0aW9uczpLOS5vcHRpb25hbCgpLF9tZXRhOmIkKEg2KHt9KSl9KSxubD1oKHsuLi5VOS5zaGFwZSwuLi5GSi5zaGFwZSx1cmlUZW1wbGF0ZTpMKCksZGVzY3JpcHRpb246YiQoTCgpKSxtaW1lVHlwZTpiJChMKCkpLGFubm90YXRpb25zOks5Lm9wdGlvbmFsKCksX21ldGE6YiQoSDYoe30pKX0pLEhXPVpKLmV4dGVuZCh7bWV0aG9kOmwoXCJyZXNvdXJjZXMvbGlzdFwiKX0pLHJsPU1KLmV4dGVuZCh7cmVzb3VyY2VzOlckKElMKX0pLEtXPVpKLmV4dGVuZCh7bWV0aG9kOmwoXCJyZXNvdXJjZXMvdGVtcGxhdGVzL2xpc3RcIil9KSxvbD1NSi5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOlckKG5sKX0pLGVWPWc2LmV4dGVuZCh7dXJpOkwoKX0pLHRsPWVWLHFXPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJyZXNvdXJjZXMvcmVhZFwiKSxwYXJhbXM6dGx9KSxhbD1YNi5leHRlbmQoe2NvbnRlbnRzOlckKEEkKFtqTCxBTF0pKX0pLHNsPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWRcIikscGFyYW1zOnM2Lm9wdGlvbmFsKCl9KSxlbD1lViwkYz1KNi5leHRlbmQoe21ldGhvZDpsKFwicmVzb3VyY2VzL3N1YnNjcmliZVwiKSxwYXJhbXM6ZWx9KSxRYz1lVixKYz1KNi5leHRlbmQoe21ldGhvZDpsKFwicmVzb3VyY2VzL3Vuc3Vic2NyaWJlXCIpLHBhcmFtczpRY30pLFhjPXM2LmV4dGVuZCh7dXJpOkwoKX0pLFljPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL3Jlc291cmNlcy91cGRhdGVkXCIpLHBhcmFtczpYY30pLFdjPWgoe25hbWU6TCgpLGRlc2NyaXB0aW9uOmIkKEwoKSkscmVxdWlyZWQ6YiQoaSQoKSl9KSxHYz1oKHsuLi5VOS5zaGFwZSwuLi5GSi5zaGFwZSxkZXNjcmlwdGlvbjpiJChMKCkpLGFyZ3VtZW50czpiJChXJChXYykpLF9tZXRhOmIkKEg2KHt9KSl9KSxWVz1aSi5leHRlbmQoe21ldGhvZDpsKFwicHJvbXB0cy9saXN0XCIpfSksVWM9TUouZXh0ZW5kKHtwcm9tcHRzOlckKEdjKX0pLEhjPWc2LmV4dGVuZCh7bmFtZTpMKCksYXJndW1lbnRzOkkkKEwoKSxMKCkpLm9wdGlvbmFsKCl9KSxCVz1KNi5leHRlbmQoe21ldGhvZDpsKFwicHJvbXB0cy9nZXRcIikscGFyYW1zOkhjfSksJEI9aCh7dHlwZTpsKFwidGV4dFwiKSx0ZXh0OkwoKSxhbm5vdGF0aW9uczpLOS5vcHRpb25hbCgpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSksUUI9aCh7dHlwZTpsKFwiaW1hZ2VcIiksZGF0YTpzVixtaW1lVHlwZTpMKCksYW5ub3RhdGlvbnM6Szkub3B0aW9uYWwoKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLEpCPWgoe3R5cGU6bChcImF1ZGlvXCIpLGRhdGE6c1YsbWltZVR5cGU6TCgpLGFubm90YXRpb25zOks5Lm9wdGlvbmFsKCksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSxLYz1oKHt0eXBlOmwoXCJ0b29sX3VzZVwiKSxuYW1lOkwoKSxpZDpMKCksaW5wdXQ6SSQoTCgpLFMkKCkpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSkscWM9aCh7dHlwZTpsKFwicmVzb3VyY2VcIikscmVzb3VyY2U6QSQoW2pMLEFMXSksYW5ub3RhdGlvbnM6Szkub3B0aW9uYWwoKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLFZjPUlMLmV4dGVuZCh7dHlwZTpsKFwicmVzb3VyY2VfbGlua1wiKX0pLFhCPUEkKFskQixRQixKQixWYyxxY10pLEJjPWgoe3JvbGU6QUosY29udGVudDpYQn0pLHpjPVg2LmV4dGVuZCh7ZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksbWVzc2FnZXM6VyQoQmMpfSksTmM9ZTYuZXh0ZW5kKHttZXRob2Q6bChcIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWRcIikscGFyYW1zOnM2Lm9wdGlvbmFsKCl9KSx3Yz1oKHt0aXRsZTpMKCkub3B0aW9uYWwoKSxyZWFkT25seUhpbnQ6aSQoKS5vcHRpb25hbCgpLGRlc3RydWN0aXZlSGludDppJCgpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6aSQoKS5vcHRpb25hbCgpLG9wZW5Xb3JsZEhpbnQ6aSQoKS5vcHRpb25hbCgpfSksT2M9aCh7dGFza1N1cHBvcnQ6ejYoW1wicmVxdWlyZWRcIixcIm9wdGlvbmFsXCIsXCJmb3JiaWRkZW5cIl0pLm9wdGlvbmFsKCl9KSxSTD1oKHsuLi5VOS5zaGFwZSwuLi5GSi5zaGFwZSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxpbnB1dFNjaGVtYTpoKHt0eXBlOmwoXCJvYmplY3RcIikscHJvcGVydGllczpJJChMKCksYSQpLm9wdGlvbmFsKCkscmVxdWlyZWQ6VyQoTCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoUyQoKSksb3V0cHV0U2NoZW1hOmgoe3R5cGU6bChcIm9iamVjdFwiKSxwcm9wZXJ0aWVzOkkkKEwoKSxhJCkub3B0aW9uYWwoKSxyZXF1aXJlZDpXJChMKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChTJCgpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOndjLm9wdGlvbmFsKCksZXhlY3V0aW9uOk9jLm9wdGlvbmFsKCksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSx6Vz1aSi5leHRlbmQoe21ldGhvZDpsKFwidG9vbHMvbGlzdFwiKX0pLERjPU1KLmV4dGVuZCh7dG9vbHM6VyQoUkwpfSksTlc9WDYuZXh0ZW5kKHtjb250ZW50OlckKFhCKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpJJChMKCksUyQoKSkub3B0aW9uYWwoKSxpc0Vycm9yOmkkKCkub3B0aW9uYWwoKX0pLEFWJD1OVy5vcihYNi5leHRlbmQoe3Rvb2xSZXN1bHQ6UyQoKX0pKSxGYz1PSi5leHRlbmQoe25hbWU6TCgpLGFyZ3VtZW50czpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLHE5PUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJ0b29scy9jYWxsXCIpLHBhcmFtczpGY30pLFpjPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZFwiKSxwYXJhbXM6czYub3B0aW9uYWwoKX0pLElWJD1oKHthdXRvUmVmcmVzaDppJCgpLmRlZmF1bHQoITApLGRlYm91bmNlTXM6eiQoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pLElKPXo2KFtcImRlYnVnXCIsXCJpbmZvXCIsXCJub3RpY2VcIixcIndhcm5pbmdcIixcImVycm9yXCIsXCJjcml0aWNhbFwiLFwiYWxlcnRcIixcImVtZXJnZW5jeVwiXSksTWM9ZzYuZXh0ZW5kKHtsZXZlbDpJSn0pLFlCPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJsb2dnaW5nL3NldExldmVsXCIpLHBhcmFtczpNY30pLExjPXM2LmV4dGVuZCh7bGV2ZWw6SUosbG9nZ2VyOkwoKS5vcHRpb25hbCgpLGRhdGE6UyQoKX0pLGpjPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL21lc3NhZ2VcIikscGFyYW1zOkxjfSksQWM9aCh7bmFtZTpMKCkub3B0aW9uYWwoKX0pLEljPWgoe2hpbnRzOlckKEFjKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp6JCgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxzcGVlZFByaW9yaXR5OnokKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGludGVsbGlnZW5jZVByaW9yaXR5OnokKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksUmM9aCh7bW9kZTp6NihbXCJhdXRvXCIsXCJyZXF1aXJlZFwiLFwibm9uZVwiXSkub3B0aW9uYWwoKX0pLFBjPWgoe3R5cGU6bChcInRvb2xfcmVzdWx0XCIpLHRvb2xVc2VJZDpMKCkuZGVzY3JpYmUoXCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC5cIiksY29udGVudDpXJChYQikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6aCh7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6aSQoKS5vcHRpb25hbCgpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSksRWM9aTMoXCJ0eXBlXCIsWyRCLFFCLEpCXSksbzM9aTMoXCJ0eXBlXCIsWyRCLFFCLEpCLEtjLFBjXSksYmM9aCh7cm9sZTpBSixjb250ZW50OkEkKFtvMyxXJChvMyldKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLF9jPU9KLmV4dGVuZCh7bWVzc2FnZXM6VyQoYmMpLG1vZGVsUHJlZmVyZW5jZXM6SWMub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6TCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6ejYoW1wibm9uZVwiLFwidGhpc1NlcnZlclwiLFwiYWxsU2VydmVyc1wiXSkub3B0aW9uYWwoKSx0ZW1wZXJhdHVyZTp6JCgpLm9wdGlvbmFsKCksbWF4VG9rZW5zOnokKCkuaW50KCksc3RvcFNlcXVlbmNlczpXJChMKCkpLm9wdGlvbmFsKCksbWV0YWRhdGE6YSQub3B0aW9uYWwoKSx0b29sczpXJChSTCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOlJjLm9wdGlvbmFsKCl9KSxTYz1KNi5leHRlbmQoe21ldGhvZDpsKFwic2FtcGxpbmcvY3JlYXRlTWVzc2FnZVwiKSxwYXJhbXM6X2N9KSxSSj1YNi5leHRlbmQoe21vZGVsOkwoKSxzdG9wUmVhc29uOmIkKHo2KFtcImVuZFR1cm5cIixcInN0b3BTZXF1ZW5jZVwiLFwibWF4VG9rZW5zXCJdKS5vcihMKCkpKSxyb2xlOkFKLGNvbnRlbnQ6RWN9KSxXQj1YNi5leHRlbmQoe21vZGVsOkwoKSxzdG9wUmVhc29uOmIkKHo2KFtcImVuZFR1cm5cIixcInN0b3BTZXF1ZW5jZVwiLFwibWF4VG9rZW5zXCIsXCJ0b29sVXNlXCJdKS5vcihMKCkpKSxyb2xlOkFKLGNvbnRlbnQ6QSQoW28zLFckKG8zKV0pfSksa2M9aCh7dHlwZTpsKFwiYm9vbGVhblwiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxkZWZhdWx0OmkkKCkub3B0aW9uYWwoKX0pLHZjPWgoe3R5cGU6bChcInN0cmluZ1wiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxtaW5MZW5ndGg6eiQoKS5vcHRpb25hbCgpLG1heExlbmd0aDp6JCgpLm9wdGlvbmFsKCksZm9ybWF0Ono2KFtcImVtYWlsXCIsXCJ1cmlcIixcImRhdGVcIixcImRhdGUtdGltZVwiXSkub3B0aW9uYWwoKSxkZWZhdWx0OkwoKS5vcHRpb25hbCgpfSksQ2M9aCh7dHlwZTp6NihbXCJudW1iZXJcIixcImludGVnZXJcIl0pLHRpdGxlOkwoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOkwoKS5vcHRpb25hbCgpLG1pbmltdW06eiQoKS5vcHRpb25hbCgpLG1heGltdW06eiQoKS5vcHRpb25hbCgpLGRlZmF1bHQ6eiQoKS5vcHRpb25hbCgpfSksVGM9aCh7dHlwZTpsKFwic3RyaW5nXCIpLHRpdGxlOkwoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOkwoKS5vcHRpb25hbCgpLGVudW06VyQoTCgpKSxkZWZhdWx0OkwoKS5vcHRpb25hbCgpfSkseGM9aCh7dHlwZTpsKFwic3RyaW5nXCIpLHRpdGxlOkwoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOkwoKS5vcHRpb25hbCgpLG9uZU9mOlckKGgoe2NvbnN0OkwoKSx0aXRsZTpMKCl9KSksZGVmYXVsdDpMKCkub3B0aW9uYWwoKX0pLGZjPWgoe3R5cGU6bChcInN0cmluZ1wiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxlbnVtOlckKEwoKSksZW51bU5hbWVzOlckKEwoKSkub3B0aW9uYWwoKSxkZWZhdWx0OkwoKS5vcHRpb25hbCgpfSkseWM9QSQoW1RjLHhjXSksZ2M9aCh7dHlwZTpsKFwiYXJyYXlcIiksdGl0bGU6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eiQoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnokKCkub3B0aW9uYWwoKSxpdGVtczpoKHt0eXBlOmwoXCJzdHJpbmdcIiksZW51bTpXJChMKCkpfSksZGVmYXVsdDpXJChMKCkpLm9wdGlvbmFsKCl9KSxoYz1oKHt0eXBlOmwoXCJhcnJheVwiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxtaW5JdGVtczp6JCgpLm9wdGlvbmFsKCksbWF4SXRlbXM6eiQoKS5vcHRpb25hbCgpLGl0ZW1zOmgoe2FueU9mOlckKGgoe2NvbnN0OkwoKSx0aXRsZTpMKCl9KSl9KSxkZWZhdWx0OlckKEwoKSkub3B0aW9uYWwoKX0pLHVjPUEkKFtnYyxoY10pLG1jPUEkKFtmYyx5Yyx1Y10pLGxjPUEkKFttYyxrYyx2YyxDY10pLGNjPU9KLmV4dGVuZCh7bW9kZTpsKFwiZm9ybVwiKS5vcHRpb25hbCgpLG1lc3NhZ2U6TCgpLHJlcXVlc3RlZFNjaGVtYTpoKHt0eXBlOmwoXCJvYmplY3RcIikscHJvcGVydGllczpJJChMKCksbGMpLHJlcXVpcmVkOlckKEwoKSkub3B0aW9uYWwoKX0pfSkscGM9T0ouZXh0ZW5kKHttb2RlOmwoXCJ1cmxcIiksbWVzc2FnZTpMKCksZWxpY2l0YXRpb25JZDpMKCksdXJsOkwoKS51cmwoKX0pLGRjPUEkKFtjYyxwY10pLGljPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJlbGljaXRhdGlvbi9jcmVhdGVcIikscGFyYW1zOmRjfSksbmM9czYuZXh0ZW5kKHtlbGljaXRhdGlvbklkOkwoKX0pLHJjPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlXCIpLHBhcmFtczpuY30pLFY5PVg2LmV4dGVuZCh7YWN0aW9uOno2KFtcImFjY2VwdFwiLFwiZGVjbGluZVwiLFwiY2FuY2VsXCJdKSxjb250ZW50OnIzKCgkKT0+JD09PW51bGw/dm9pZCAwOiQsSSQoTCgpLEEkKFtMKCkseiQoKSxpJCgpLFckKEwoKSldKSkub3B0aW9uYWwoKSl9KSxvYz1oKHt0eXBlOmwoXCJyZWYvcmVzb3VyY2VcIiksdXJpOkwoKX0pO3ZhciB0Yz1oKHt0eXBlOmwoXCJyZWYvcHJvbXB0XCIpLG5hbWU6TCgpfSksYWM9ZzYuZXh0ZW5kKHtyZWY6QSQoW3RjLG9jXSksYXJndW1lbnQ6aCh7bmFtZTpMKCksdmFsdWU6TCgpfSksY29udGV4dDpoKHthcmd1bWVudHM6SSQoTCgpLEwoKSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSx3Vz1KNi5leHRlbmQoe21ldGhvZDpsKFwiY29tcGxldGlvbi9jb21wbGV0ZVwiKSxwYXJhbXM6YWN9KTtmdW5jdGlvbiBQTCgkKXtpZigkLnBhcmFtcy5yZWYudHlwZSE9PVwicmVmL3Byb21wdFwiKXRocm93IFR5cGVFcnJvcihgRXhwZWN0ZWQgQ29tcGxldGVSZXF1ZXN0UHJvbXB0LCBidXQgZ290ICR7JC5wYXJhbXMucmVmLnR5cGV9YCl9ZnVuY3Rpb24gRUwoJCl7aWYoJC5wYXJhbXMucmVmLnR5cGUhPT1cInJlZi9yZXNvdXJjZVwiKXRocm93IFR5cGVFcnJvcihgRXhwZWN0ZWQgQ29tcGxldGVSZXF1ZXN0UmVzb3VyY2VUZW1wbGF0ZSwgYnV0IGdvdCAkeyQucGFyYW1zLnJlZi50eXBlfWApfXZhciBzYz1YNi5leHRlbmQoe2NvbXBsZXRpb246SDYoe3ZhbHVlczpXJChMKCkpLm1heCgxMDApLHRvdGFsOmIkKHokKCkuaW50KCkpLGhhc01vcmU6YiQoaSQoKSl9KX0pLGVjPWgoe3VyaTpMKCkuc3RhcnRzV2l0aChcImZpbGU6Ly9cIiksbmFtZTpMKCkub3B0aW9uYWwoKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLCRwPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJyb290cy9saXN0XCIpLHBhcmFtczpnNi5vcHRpb25hbCgpfSksR0I9WDYuZXh0ZW5kKHtyb290czpXJChlYyl9KSxRcD1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWRcIikscGFyYW1zOnM2Lm9wdGlvbmFsKCl9KSxSViQ9QSQoWyRXLHRWLHdXLFlCLEJXLFZXLEhXLEtXLHFXLCRjLEpjLHE5LHpXLEpXLFlXLFdXLFVXXSksUFYkPUEkKFtlMyxRVyxhVixRcCxqSl0pLEVWJD1BJChbczMsUkosV0IsVjksR0IsWFcsR1csSDldKSxiViQ9QSQoWyRXLFNjLGljLCRwLEpXLFlXLFdXLFVXXSksX1YkPUEkKFtlMyxRVyxqYyxZYyxzbCxaYyxOYyxqSixyY10pLFNWJD1BJChbczMsbWwsc2MsemMsVWMscmwsb2wsYWwsTlcsRGMsWFcsR1csSDldKTtjbGFzcyBjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoJCxRLEope3N1cGVyKGBNQ1AgZXJyb3IgJHskfTogJHtRfWApO3RoaXMuY29kZT0kLHRoaXMuZGF0YT1KLHRoaXMubmFtZT1cIk1jcEVycm9yXCJ9c3RhdGljIGZyb21FcnJvcigkLFEsSil7aWYoJD09PWQuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCYmSil7bGV0IFk9SjtpZihZLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IGJMKFkuZWxpY2l0YXRpb25zLFEpfXJldHVybiBuZXcgYygkLFEsSil9fWNsYXNzIGJMIGV4dGVuZHMgY3tjb25zdHJ1Y3RvcigkLFE9YFVSTCBlbGljaXRhdGlvbiR7JC5sZW5ndGg+MT9cInNcIjpcIlwifSByZXF1aXJlZGApe3N1cGVyKGQuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxRLHtlbGljaXRhdGlvbnM6JH0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiB4MSgkKXtyZXR1cm4gJD09PVwiY29tcGxldGVkXCJ8fCQ9PT1cImZhaWxlZFwifHwkPT09XCJjYW5jZWxsZWRcIn12YXIgU0w9U3ltYm9sKFwiTGV0IHpvZFRvSnNvblNjaGVtYSBkZWNpZGUgb24gd2hpY2ggcGFyc2VyIHRvIHVzZVwiKTt2YXIgX0w9e25hbWU6dm9pZCAwLCRyZWZTdHJhdGVneTpcInJvb3RcIixiYXNlUGF0aDpbXCIjXCJdLGVmZmVjdFN0cmF0ZWd5OlwiaW5wdXRcIixwaXBlU3RyYXRlZ3k6XCJhbGxcIixkYXRlU3RyYXRlZ3k6XCJmb3JtYXQ6ZGF0ZS10aW1lXCIsbWFwU3RyYXRlZ3k6XCJlbnRyaWVzXCIscmVtb3ZlQWRkaXRpb25hbFN0cmF0ZWd5OlwicGFzc3Rocm91Z2hcIixhbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXM6ITAscmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllczohMSxkZWZpbml0aW9uUGF0aDpcImRlZmluaXRpb25zXCIsdGFyZ2V0OlwianNvblNjaGVtYTdcIixzdHJpY3RVbmlvbnM6ITEsZGVmaW5pdGlvbnM6e30sZXJyb3JNZXNzYWdlczohMSxtYXJrZG93bkRlc2NyaXB0aW9uOiExLHBhdHRlcm5TdHJhdGVneTpcImVzY2FwZVwiLGFwcGx5UmVnZXhGbGFnczohMSxlbWFpbFN0cmF0ZWd5OlwiZm9ybWF0OmVtYWlsXCIsYmFzZTY0U3RyYXRlZ3k6XCJjb250ZW50RW5jb2Rpbmc6YmFzZTY0XCIsbmFtZVN0cmF0ZWd5OlwicmVmXCIsb3BlbkFpQW55VHlwZU5hbWU6XCJPcGVuQWlBbnlUeXBlXCJ9LGtMPSgkKT0+dHlwZW9mICQ9PT1cInN0cmluZ1wiP3suLi5fTCxuYW1lOiR9OnsuLi5fTCwuLi4kfTt2YXIgdkw9KCQpPT57bGV0IFE9a0woJCksSj1RLm5hbWUhPT12b2lkIDA/Wy4uLlEuYmFzZVBhdGgsUS5kZWZpbml0aW9uUGF0aCxRLm5hbWVdOlEuYmFzZVBhdGg7cmV0dXJuey4uLlEsZmxhZ3M6e2hhc1JlZmVyZW5jZWRPcGVuQWlBbnlUeXBlOiExfSxjdXJyZW50UGF0aDpKLHByb3BlcnR5UGF0aDp2b2lkIDAsc2VlbjpuZXcgTWFwKE9iamVjdC5lbnRyaWVzKFEuZGVmaW5pdGlvbnMpLm1hcCgoW1ksWF0pPT5bWC5fZGVmLHtkZWY6WC5fZGVmLHBhdGg6Wy4uLlEuYmFzZVBhdGgsUS5kZWZpbml0aW9uUGF0aCxZXSxqc29uU2NoZW1hOnZvaWQgMH1dKSl9fTtmdW5jdGlvbiBVQigkLFEsSixZKXtpZighWT8uZXJyb3JNZXNzYWdlcylyZXR1cm47aWYoSikkLmVycm9yTWVzc2FnZT17Li4uJC5lcnJvck1lc3NhZ2UsW1FdOkp9fWZ1bmN0aW9uIEgkKCQsUSxKLFksWCl7JFtRXT1KLFVCKCQsUSxZLFgpfXZhciBPVz0oJCxRKT0+e2xldCBKPTA7Zm9yKDtKPCQubGVuZ3RoJiZKPFEubGVuZ3RoO0orKylpZigkW0pdIT09UVtKXSlicmVhaztyZXR1cm5bKCQubGVuZ3RoLUopLnRvU3RyaW5nKCksLi4uUS5zbGljZShKKV0uam9pbihcIi9cIil9O2Z1bmN0aW9uIHgkKCQpe2lmKCQudGFyZ2V0IT09XCJvcGVuQWlcIilyZXR1cm57fTtsZXQgUT1bLi4uJC5iYXNlUGF0aCwkLmRlZmluaXRpb25QYXRoLCQub3BlbkFpQW55VHlwZU5hbWVdO3JldHVybiAkLmZsYWdzLmhhc1JlZmVyZW5jZWRPcGVuQWlBbnlUeXBlPSEwLHskcmVmOiQuJHJlZlN0cmF0ZWd5PT09XCJyZWxhdGl2ZVwiP09XKFEsJC5jdXJyZW50UGF0aCk6US5qb2luKFwiL1wiKX19ZnVuY3Rpb24gQ0woJCxRKXtsZXQgSj17dHlwZTpcImFycmF5XCJ9O2lmKCQudHlwZT8uX2RlZiYmJC50eXBlPy5fZGVmPy50eXBlTmFtZSE9PWIuWm9kQW55KUouaXRlbXM9cigkLnR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcIml0ZW1zXCJdfSk7aWYoJC5taW5MZW5ndGgpSCQoSixcIm1pbkl0ZW1zXCIsJC5taW5MZW5ndGgudmFsdWUsJC5taW5MZW5ndGgubWVzc2FnZSxRKTtpZigkLm1heExlbmd0aClIJChKLFwibWF4SXRlbXNcIiwkLm1heExlbmd0aC52YWx1ZSwkLm1heExlbmd0aC5tZXNzYWdlLFEpO2lmKCQuZXhhY3RMZW5ndGgpSCQoSixcIm1pbkl0ZW1zXCIsJC5leGFjdExlbmd0aC52YWx1ZSwkLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsUSksSCQoSixcIm1heEl0ZW1zXCIsJC5leGFjdExlbmd0aC52YWx1ZSwkLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsUSk7cmV0dXJuIEp9ZnVuY3Rpb24gVEwoJCxRKXtsZXQgSj17dHlwZTpcImludGVnZXJcIixmb3JtYXQ6XCJpbnQ2NFwifTtpZighJC5jaGVja3MpcmV0dXJuIEo7Zm9yKGxldCBZIG9mICQuY2hlY2tzKXN3aXRjaChZLmtpbmQpe2Nhc2VcIm1pblwiOmlmKFEudGFyZ2V0PT09XCJqc29uU2NoZW1hN1wiKWlmKFkuaW5jbHVzaXZlKUgkKEosXCJtaW5pbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZSBIJChKLFwiZXhjbHVzaXZlTWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2V7aWYoIVkuaW5jbHVzaXZlKUouZXhjbHVzaXZlTWluaW11bT0hMDtIJChKLFwibWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpfWJyZWFrO2Nhc2VcIm1heFwiOmlmKFEudGFyZ2V0PT09XCJqc29uU2NoZW1hN1wiKWlmKFkuaW5jbHVzaXZlKUgkKEosXCJtYXhpbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZSBIJChKLFwiZXhjbHVzaXZlTWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2V7aWYoIVkuaW5jbHVzaXZlKUouZXhjbHVzaXZlTWF4aW11bT0hMDtIJChKLFwibWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpfWJyZWFrO2Nhc2VcIm11bHRpcGxlT2ZcIjpIJChKLFwibXVsdGlwbGVPZlwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2JyZWFrfXJldHVybiBKfWZ1bmN0aW9uIHhMKCl7cmV0dXJue3R5cGU6XCJib29sZWFuXCJ9fWZ1bmN0aW9uIERXKCQsUSl7cmV0dXJuIHIoJC50eXBlLl9kZWYsUSl9dmFyIGZMPSgkLFEpPT57cmV0dXJuIHIoJC5pbm5lclR5cGUuX2RlZixRKX07ZnVuY3Rpb24gSEIoJCxRLEope2xldCBZPUo/P1EuZGF0ZVN0cmF0ZWd5O2lmKEFycmF5LmlzQXJyYXkoWSkpcmV0dXJue2FueU9mOlkubWFwKChYLFcpPT5IQigkLFEsWCkpfTtzd2l0Y2goWSl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwiZm9ybWF0OmRhdGUtdGltZVwiOnJldHVybnt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiZGF0ZS10aW1lXCJ9O2Nhc2VcImZvcm1hdDpkYXRlXCI6cmV0dXJue3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJkYXRlXCJ9O2Nhc2VcImludGVnZXJcIjpyZXR1cm4gSnAoJCxRKX19dmFyIEpwPSgkLFEpPT57bGV0IEo9e3R5cGU6XCJpbnRlZ2VyXCIsZm9ybWF0OlwidW5peC10aW1lXCJ9O2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXJldHVybiBKO2ZvcihsZXQgWSBvZiAkLmNoZWNrcylzd2l0Y2goWS5raW5kKXtjYXNlXCJtaW5cIjpIJChKLFwibWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcIm1heFwiOkgkKEosXCJtYXhpbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7YnJlYWt9cmV0dXJuIEp9O2Z1bmN0aW9uIHlMKCQsUSl7cmV0dXJuey4uLnIoJC5pbm5lclR5cGUuX2RlZixRKSxkZWZhdWx0OiQuZGVmYXVsdFZhbHVlKCl9fWZ1bmN0aW9uIGdMKCQsUSl7cmV0dXJuIFEuZWZmZWN0U3RyYXRlZ3k9PT1cImlucHV0XCI/cigkLnNjaGVtYS5fZGVmLFEpOngkKFEpfWZ1bmN0aW9uIGhMKCQpe3JldHVybnt0eXBlOlwic3RyaW5nXCIsZW51bTpBcnJheS5mcm9tKCQudmFsdWVzKX19dmFyIFhwPSgkKT0+e2lmKFwidHlwZVwiaW4gJCYmJC50eXBlPT09XCJzdHJpbmdcIilyZXR1cm4hMTtyZXR1cm5cImFsbE9mXCJpbiAkfTtmdW5jdGlvbiB1TCgkLFEpe2xldCBKPVtyKCQubGVmdC5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiYWxsT2ZcIixcIjBcIl19KSxyKCQucmlnaHQuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFsbE9mXCIsXCIxXCJdfSldLmZpbHRlcigoVyk9PiEhVyksWT1RLnRhcmdldD09PVwianNvblNjaGVtYTIwMTktMDlcIj97dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiExfTp2b2lkIDAsWD1bXTtyZXR1cm4gSi5mb3JFYWNoKChXKT0+e2lmKFhwKFcpKXtpZihYLnB1c2goLi4uVy5hbGxPZiksVy51bmV2YWx1YXRlZFByb3BlcnRpZXM9PT12b2lkIDApWT12b2lkIDB9ZWxzZXtsZXQgRz1XO2lmKFwiYWRkaXRpb25hbFByb3BlcnRpZXNcImluIFcmJlcuYWRkaXRpb25hbFByb3BlcnRpZXM9PT0hMSl7bGV0e2FkZGl0aW9uYWxQcm9wZXJ0aWVzOlUsLi4uSH09VztHPUh9ZWxzZSBZPXZvaWQgMDtYLnB1c2goRyl9fSksWC5sZW5ndGg/e2FsbE9mOlgsLi4uWX06dm9pZCAwfWZ1bmN0aW9uIG1MKCQsUSl7bGV0IEo9dHlwZW9mICQudmFsdWU7aWYoSiE9PVwiYmlnaW50XCImJkohPT1cIm51bWJlclwiJiZKIT09XCJib29sZWFuXCImJkohPT1cInN0cmluZ1wiKXJldHVybnt0eXBlOkFycmF5LmlzQXJyYXkoJC52YWx1ZSk/XCJhcnJheVwiOlwib2JqZWN0XCJ9O2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXJldHVybnt0eXBlOko9PT1cImJpZ2ludFwiP1wiaW50ZWdlclwiOkosZW51bTpbJC52YWx1ZV19O3JldHVybnt0eXBlOko9PT1cImJpZ2ludFwiP1wiaW50ZWdlclwiOkosY29uc3Q6JC52YWx1ZX19dmFyIEtCPXZvaWQgMCxWND17Y3VpZDovXltjQ11bXlxccy1dezgsfSQvLGN1aWQyOi9eWzAtOWEtel0rJC8sdWxpZDovXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kLyxlbWFpbDovXig/IVxcLikoPyEuKlxcLlxcLikoW2EtekEtWjAtOV8nK1xcLVxcLl0qKVthLXpBLVowLTlfKy1dQChbYS16QS1aMC05XVthLXpBLVowLTlcXC1dKlxcLikrW2EtekEtWl17Mix9JC8sZW1vamk6KCk9PntpZihLQj09PXZvaWQgMClLQj1SZWdFeHAoXCJeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJFwiLFwidVwiKTtyZXR1cm4gS0J9LHV1aWQ6L15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kLyxpcHY0Oi9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8saXB2NENpZHI6L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oM1swLTJdfFsxMl0/WzAtOV0pJC8saXB2NjovXigoW2EtZjAtOV17MSw0fTopezd9fDo6KFthLWYwLTldezEsNH06KXswLDZ9fChbYS1mMC05XXsxLDR9Oil7MX06KFthLWYwLTldezEsNH06KXswLDV9fChbYS1mMC05XXsxLDR9Oil7Mn06KFthLWYwLTldezEsNH06KXswLDR9fChbYS1mMC05XXsxLDR9Oil7M306KFthLWYwLTldezEsNH06KXswLDN9fChbYS1mMC05XXsxLDR9Oil7NH06KFthLWYwLTldezEsNH06KXswLDJ9fChbYS1mMC05XXsxLDR9Oil7NX06KFthLWYwLTldezEsNH06KXswLDF9KShbYS1mMC05XXsxLDR9fCgoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKSkkLyxpcHY2Q2lkcjovXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLGJhc2U2NDovXihbMC05YS16QS1aKy9dezR9KSooKFswLTlhLXpBLVorL117Mn09PSl8KFswLTlhLXpBLVorL117M309KSk/JC8sYmFzZTY0dXJsOi9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLyxuYW5vaWQ6L15bYS16QS1aMC05Xy1dezIxfSQvLGp3dDovXltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dKiQvfTtmdW5jdGlvbiBGVygkLFEpe2xldCBKPXt0eXBlOlwic3RyaW5nXCJ9O2lmKCQuY2hlY2tzKWZvcihsZXQgWSBvZiAkLmNoZWNrcylzd2l0Y2goWS5raW5kKXtjYXNlXCJtaW5cIjpIJChKLFwibWluTGVuZ3RoXCIsdHlwZW9mIEoubWluTGVuZ3RoPT09XCJudW1iZXJcIj9NYXRoLm1heChKLm1pbkxlbmd0aCxZLnZhbHVlKTpZLnZhbHVlLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJtYXhcIjpIJChKLFwibWF4TGVuZ3RoXCIsdHlwZW9mIEoubWF4TGVuZ3RoPT09XCJudW1iZXJcIj9NYXRoLm1pbihKLm1heExlbmd0aCxZLnZhbHVlKTpZLnZhbHVlLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJlbWFpbFwiOnN3aXRjaChRLmVtYWlsU3RyYXRlZ3kpe2Nhc2VcImZvcm1hdDplbWFpbFwiOkI0KEosXCJlbWFpbFwiLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJmb3JtYXQ6aWRuLWVtYWlsXCI6QjQoSixcImlkbi1lbWFpbFwiLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJwYXR0ZXJuOnpvZFwiOk42KEosVjQuZW1haWwsWS5tZXNzYWdlLFEpO2JyZWFrfWJyZWFrO2Nhc2VcInVybFwiOkI0KEosXCJ1cmlcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwidXVpZFwiOkI0KEosXCJ1dWlkXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcInJlZ2V4XCI6TjYoSixZLnJlZ2V4LFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJjdWlkXCI6TjYoSixWNC5jdWlkLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJjdWlkMlwiOk42KEosVjQuY3VpZDIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcInN0YXJ0c1dpdGhcIjpONihKLFJlZ0V4cChgXiR7cUIoWS52YWx1ZSxRKX1gKSxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiZW5kc1dpdGhcIjpONihKLFJlZ0V4cChgJHtxQihZLnZhbHVlLFEpfSRgKSxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiZGF0ZXRpbWVcIjpCNChKLFwiZGF0ZS10aW1lXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImRhdGVcIjpCNChKLFwiZGF0ZVwiLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJ0aW1lXCI6QjQoSixcInRpbWVcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiZHVyYXRpb25cIjpCNChKLFwiZHVyYXRpb25cIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwibGVuZ3RoXCI6SCQoSixcIm1pbkxlbmd0aFwiLHR5cGVvZiBKLm1pbkxlbmd0aD09PVwibnVtYmVyXCI/TWF0aC5tYXgoSi5taW5MZW5ndGgsWS52YWx1ZSk6WS52YWx1ZSxZLm1lc3NhZ2UsUSksSCQoSixcIm1heExlbmd0aFwiLHR5cGVvZiBKLm1heExlbmd0aD09PVwibnVtYmVyXCI/TWF0aC5taW4oSi5tYXhMZW5ndGgsWS52YWx1ZSk6WS52YWx1ZSxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiaW5jbHVkZXNcIjp7TjYoSixSZWdFeHAocUIoWS52YWx1ZSxRKSksWS5tZXNzYWdlLFEpO2JyZWFrfWNhc2VcImlwXCI6e2lmKFkudmVyc2lvbiE9PVwidjZcIilCNChKLFwiaXB2NFwiLFkubWVzc2FnZSxRKTtpZihZLnZlcnNpb24hPT1cInY0XCIpQjQoSixcImlwdjZcIixZLm1lc3NhZ2UsUSk7YnJlYWt9Y2FzZVwiYmFzZTY0dXJsXCI6TjYoSixWNC5iYXNlNjR1cmwsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImp3dFwiOk42KEosVjQuand0LFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJjaWRyXCI6e2lmKFkudmVyc2lvbiE9PVwidjZcIilONihKLFY0LmlwdjRDaWRyLFkubWVzc2FnZSxRKTtpZihZLnZlcnNpb24hPT1cInY0XCIpTjYoSixWNC5pcHY2Q2lkcixZLm1lc3NhZ2UsUSk7YnJlYWt9Y2FzZVwiZW1vamlcIjpONihKLFY0LmVtb2ppKCksWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcInVsaWRcIjp7TjYoSixWNC51bGlkLFkubWVzc2FnZSxRKTticmVha31jYXNlXCJiYXNlNjRcIjp7c3dpdGNoKFEuYmFzZTY0U3RyYXRlZ3kpe2Nhc2VcImZvcm1hdDpiaW5hcnlcIjp7QjQoSixcImJpbmFyeVwiLFkubWVzc2FnZSxRKTticmVha31jYXNlXCJjb250ZW50RW5jb2Rpbmc6YmFzZTY0XCI6e0gkKEosXCJjb250ZW50RW5jb2RpbmdcIixcImJhc2U2NFwiLFkubWVzc2FnZSxRKTticmVha31jYXNlXCJwYXR0ZXJuOnpvZFwiOntONihKLFY0LmJhc2U2NCxZLm1lc3NhZ2UsUSk7YnJlYWt9fWJyZWFrfWNhc2VcIm5hbm9pZFwiOk42KEosVjQubmFub2lkLFkubWVzc2FnZSxRKTtjYXNlXCJ0b0xvd2VyQ2FzZVwiOmNhc2VcInRvVXBwZXJDYXNlXCI6Y2FzZVwidHJpbVwiOmJyZWFrO2RlZmF1bHQ6KChYKT0+e30pKFkpfXJldHVybiBKfWZ1bmN0aW9uIHFCKCQsUSl7cmV0dXJuIFEucGF0dGVyblN0cmF0ZWd5PT09XCJlc2NhcGVcIj9XcCgkKTokfXZhciBZcD1uZXcgU2V0KFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVlhZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4eXowMTIzNDU2Nzg5XCIpO2Z1bmN0aW9uIFdwKCQpe2xldCBRPVwiXCI7Zm9yKGxldCBKPTA7SjwkLmxlbmd0aDtKKyspe2lmKCFZcC5oYXMoJFtKXSkpUSs9XCJcXFxcXCI7USs9JFtKXX1yZXR1cm4gUX1mdW5jdGlvbiBCNCgkLFEsSixZKXtpZigkLmZvcm1hdHx8JC5hbnlPZj8uc29tZSgoWCk9PlguZm9ybWF0KSl7aWYoISQuYW55T2YpJC5hbnlPZj1bXTtpZigkLmZvcm1hdCl7aWYoJC5hbnlPZi5wdXNoKHtmb3JtYXQ6JC5mb3JtYXQsLi4uJC5lcnJvck1lc3NhZ2UmJlkuZXJyb3JNZXNzYWdlcyYme2Vycm9yTWVzc2FnZTp7Zm9ybWF0OiQuZXJyb3JNZXNzYWdlLmZvcm1hdH19fSksZGVsZXRlICQuZm9ybWF0LCQuZXJyb3JNZXNzYWdlKXtpZihkZWxldGUgJC5lcnJvck1lc3NhZ2UuZm9ybWF0LE9iamVjdC5rZXlzKCQuZXJyb3JNZXNzYWdlKS5sZW5ndGg9PT0wKWRlbGV0ZSAkLmVycm9yTWVzc2FnZX19JC5hbnlPZi5wdXNoKHtmb3JtYXQ6USwuLi5KJiZZLmVycm9yTWVzc2FnZXMmJntlcnJvck1lc3NhZ2U6e2Zvcm1hdDpKfX19KX1lbHNlIEgkKCQsXCJmb3JtYXRcIixRLEosWSl9ZnVuY3Rpb24gTjYoJCxRLEosWSl7aWYoJC5wYXR0ZXJufHwkLmFsbE9mPy5zb21lKChYKT0+WC5wYXR0ZXJuKSl7aWYoISQuYWxsT2YpJC5hbGxPZj1bXTtpZigkLnBhdHRlcm4pe2lmKCQuYWxsT2YucHVzaCh7cGF0dGVybjokLnBhdHRlcm4sLi4uJC5lcnJvck1lc3NhZ2UmJlkuZXJyb3JNZXNzYWdlcyYme2Vycm9yTWVzc2FnZTp7cGF0dGVybjokLmVycm9yTWVzc2FnZS5wYXR0ZXJufX19KSxkZWxldGUgJC5wYXR0ZXJuLCQuZXJyb3JNZXNzYWdlKXtpZihkZWxldGUgJC5lcnJvck1lc3NhZ2UucGF0dGVybixPYmplY3Qua2V5cygkLmVycm9yTWVzc2FnZSkubGVuZ3RoPT09MClkZWxldGUgJC5lcnJvck1lc3NhZ2V9fSQuYWxsT2YucHVzaCh7cGF0dGVybjpsTChRLFkpLC4uLkomJlkuZXJyb3JNZXNzYWdlcyYme2Vycm9yTWVzc2FnZTp7cGF0dGVybjpKfX19KX1lbHNlIEgkKCQsXCJwYXR0ZXJuXCIsbEwoUSxZKSxKLFkpfWZ1bmN0aW9uIGxMKCQsUSl7aWYoIVEuYXBwbHlSZWdleEZsYWdzfHwhJC5mbGFncylyZXR1cm4gJC5zb3VyY2U7bGV0IEo9e2k6JC5mbGFncy5pbmNsdWRlcyhcImlcIiksbTokLmZsYWdzLmluY2x1ZGVzKFwibVwiKSxzOiQuZmxhZ3MuaW5jbHVkZXMoXCJzXCIpfSxZPUouaT8kLnNvdXJjZS50b0xvd2VyQ2FzZSgpOiQuc291cmNlLFg9XCJcIixXPSExLEc9ITEsVT0hMTtmb3IobGV0IEg9MDtIPFkubGVuZ3RoO0grKyl7aWYoVyl7WCs9WVtIXSxXPSExO2NvbnRpbnVlfWlmKEouaSl7aWYoRyl7aWYoWVtIXS5tYXRjaCgvW2Etel0vKSl7aWYoVSlYKz1ZW0hdLFgrPWAke1lbSC0yXX0tJHtZW0hdfWAudG9VcHBlckNhc2UoKSxVPSExO2Vsc2UgaWYoWVtIKzFdPT09XCItXCImJllbSCsyXT8ubWF0Y2goL1thLXpdLykpWCs9WVtIXSxVPSEwO2Vsc2UgWCs9YCR7WVtIXX0ke1lbSF0udG9VcHBlckNhc2UoKX1gO2NvbnRpbnVlfX1lbHNlIGlmKFlbSF0ubWF0Y2goL1thLXpdLykpe1grPWBbJHtZW0hdfSR7WVtIXS50b1VwcGVyQ2FzZSgpfV1gO2NvbnRpbnVlfX1pZihKLm0pe2lmKFlbSF09PT1cIl5cIil7WCs9YChefCg/PD1bXFxyXG5dKSlgO2NvbnRpbnVlfWVsc2UgaWYoWVtIXT09PVwiJFwiKXtYKz1gKCR8KD89W1xcclxuXSkpYDtjb250aW51ZX19aWYoSi5zJiZZW0hdPT09XCIuXCIpe1grPUc/YCR7WVtIXX1cXHJcbmA6YFske1lbSF19XFxyXG5dYDtjb250aW51ZX1pZihYKz1ZW0hdLFlbSF09PT1cIlxcXFxcIilXPSEwO2Vsc2UgaWYoRyYmWVtIXT09PVwiXVwiKUc9ITE7ZWxzZSBpZighRyYmWVtIXT09PVwiW1wiKUc9ITB9dHJ5e25ldyBSZWdFeHAoWCl9Y2F0Y2h7cmV0dXJuIGNvbnNvbGUud2FybihgQ291bGQgbm90IGNvbnZlcnQgcmVnZXggcGF0dGVybiBhdCAke1EuY3VycmVudFBhdGguam9pbihcIi9cIil9IHRvIGEgZmxhZy1pbmRlcGVuZGVudCBmb3JtISBGYWxsaW5nIGJhY2sgdG8gdGhlIGZsYWctaWdub3JhbnQgc291cmNlYCksJC5zb3VyY2V9cmV0dXJuIFh9ZnVuY3Rpb24gWlcoJCxRKXtpZihRLnRhcmdldD09PVwib3BlbkFpXCIpY29uc29sZS53YXJuKFwiV2FybmluZzogT3BlbkFJIG1heSBub3Qgc3VwcG9ydCByZWNvcmRzIGluIHNjaGVtYXMhIFRyeSBhbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgaW5zdGVhZC5cIik7aWYoUS50YXJnZXQ9PT1cIm9wZW5BcGkzXCImJiQua2V5VHlwZT8uX2RlZi50eXBlTmFtZT09PWIuWm9kRW51bSlyZXR1cm57dHlwZTpcIm9iamVjdFwiLHJlcXVpcmVkOiQua2V5VHlwZS5fZGVmLnZhbHVlcyxwcm9wZXJ0aWVzOiQua2V5VHlwZS5fZGVmLnZhbHVlcy5yZWR1Y2UoKFksWCk9Pih7Li4uWSxbWF06cigkLnZhbHVlVHlwZS5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwicHJvcGVydGllc1wiLFhdfSk/P3gkKFEpfSkse30pLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOlEucmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllc307bGV0IEo9e3R5cGU6XCJvYmplY3RcIixhZGRpdGlvbmFsUHJvcGVydGllczpyKCQudmFsdWVUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXX0pPz9RLmFsbG93ZWRBZGRpdGlvbmFsUHJvcGVydGllc307aWYoUS50YXJnZXQ9PT1cIm9wZW5BcGkzXCIpcmV0dXJuIEo7aWYoJC5rZXlUeXBlPy5fZGVmLnR5cGVOYW1lPT09Yi5ab2RTdHJpbmcmJiQua2V5VHlwZS5fZGVmLmNoZWNrcz8ubGVuZ3RoKXtsZXR7dHlwZTpZLC4uLlh9PUZXKCQua2V5VHlwZS5fZGVmLFEpO3JldHVybnsuLi5KLHByb3BlcnR5TmFtZXM6WH19ZWxzZSBpZigkLmtleVR5cGU/Ll9kZWYudHlwZU5hbWU9PT1iLlpvZEVudW0pcmV0dXJuey4uLkoscHJvcGVydHlOYW1lczp7ZW51bTokLmtleVR5cGUuX2RlZi52YWx1ZXN9fTtlbHNlIGlmKCQua2V5VHlwZT8uX2RlZi50eXBlTmFtZT09PWIuWm9kQnJhbmRlZCYmJC5rZXlUeXBlLl9kZWYudHlwZS5fZGVmLnR5cGVOYW1lPT09Yi5ab2RTdHJpbmcmJiQua2V5VHlwZS5fZGVmLnR5cGUuX2RlZi5jaGVja3M/Lmxlbmd0aCl7bGV0e3R5cGU6WSwuLi5YfT1EVygkLmtleVR5cGUuX2RlZixRKTtyZXR1cm57Li4uSixwcm9wZXJ0eU5hbWVzOlh9fXJldHVybiBKfWZ1bmN0aW9uIGNMKCQsUSl7aWYoUS5tYXBTdHJhdGVneT09PVwicmVjb3JkXCIpcmV0dXJuIFpXKCQsUSk7bGV0IEo9cigkLmtleVR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcIml0ZW1zXCIsXCJpdGVtc1wiLFwiMFwiXX0pfHx4JChRKSxZPXIoJC52YWx1ZVR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcIml0ZW1zXCIsXCJpdGVtc1wiLFwiMVwiXX0pfHx4JChRKTtyZXR1cm57dHlwZTpcImFycmF5XCIsbWF4SXRlbXM6MTI1LGl0ZW1zOnt0eXBlOlwiYXJyYXlcIixpdGVtczpbSixZXSxtaW5JdGVtczoyLG1heEl0ZW1zOjJ9fX1mdW5jdGlvbiBwTCgkKXtsZXQgUT0kLnZhbHVlcyxZPU9iamVjdC5rZXlzKCQudmFsdWVzKS5maWx0ZXIoKFcpPT57cmV0dXJuIHR5cGVvZiBRW1FbV11dIT09XCJudW1iZXJcIn0pLm1hcCgoVyk9PlFbV10pLFg9QXJyYXkuZnJvbShuZXcgU2V0KFkubWFwKChXKT0+dHlwZW9mIFcpKSk7cmV0dXJue3R5cGU6WC5sZW5ndGg9PT0xP1hbMF09PT1cInN0cmluZ1wiP1wic3RyaW5nXCI6XCJudW1iZXJcIjpbXCJzdHJpbmdcIixcIm51bWJlclwiXSxlbnVtOll9fWZ1bmN0aW9uIGRMKCQpe3JldHVybiAkLnRhcmdldD09PVwib3BlbkFpXCI/dm9pZCAwOntub3Q6eCQoey4uLiQsY3VycmVudFBhdGg6Wy4uLiQuY3VycmVudFBhdGgsXCJub3RcIl19KX19ZnVuY3Rpb24gaUwoJCl7cmV0dXJuICQudGFyZ2V0PT09XCJvcGVuQXBpM1wiP3tlbnVtOltcIm51bGxcIl0sbnVsbGFibGU6ITB9Ont0eXBlOlwibnVsbFwifX12YXIgUEo9e1pvZFN0cmluZzpcInN0cmluZ1wiLFpvZE51bWJlcjpcIm51bWJlclwiLFpvZEJpZ0ludDpcImludGVnZXJcIixab2RCb29sZWFuOlwiYm9vbGVhblwiLFpvZE51bGw6XCJudWxsXCJ9O2Z1bmN0aW9uIHJMKCQsUSl7aWYoUS50YXJnZXQ9PT1cIm9wZW5BcGkzXCIpcmV0dXJuIG5MKCQsUSk7bGV0IEo9JC5vcHRpb25zIGluc3RhbmNlb2YgTWFwP0FycmF5LmZyb20oJC5vcHRpb25zLnZhbHVlcygpKTokLm9wdGlvbnM7aWYoSi5ldmVyeSgoWSk9PihZLl9kZWYudHlwZU5hbWUgaW4gUEopJiYoIVkuX2RlZi5jaGVja3N8fCFZLl9kZWYuY2hlY2tzLmxlbmd0aCkpKXtsZXQgWT1KLnJlZHVjZSgoWCxXKT0+e2xldCBHPVBKW1cuX2RlZi50eXBlTmFtZV07cmV0dXJuIEcmJiFYLmluY2x1ZGVzKEcpP1suLi5YLEddOlh9LFtdKTtyZXR1cm57dHlwZTpZLmxlbmd0aD4xP1k6WVswXX19ZWxzZSBpZihKLmV2ZXJ5KChZKT0+WS5fZGVmLnR5cGVOYW1lPT09XCJab2RMaXRlcmFsXCImJiFZLmRlc2NyaXB0aW9uKSl7bGV0IFk9Si5yZWR1Y2UoKFgsVyk9PntsZXQgRz10eXBlb2YgVy5fZGVmLnZhbHVlO3N3aXRjaChHKXtjYXNlXCJzdHJpbmdcIjpjYXNlXCJudW1iZXJcIjpjYXNlXCJib29sZWFuXCI6cmV0dXJuWy4uLlgsR107Y2FzZVwiYmlnaW50XCI6cmV0dXJuWy4uLlgsXCJpbnRlZ2VyXCJdO2Nhc2VcIm9iamVjdFwiOmlmKFcuX2RlZi52YWx1ZT09PW51bGwpcmV0dXJuWy4uLlgsXCJudWxsXCJdO2Nhc2VcInN5bWJvbFwiOmNhc2VcInVuZGVmaW5lZFwiOmNhc2VcImZ1bmN0aW9uXCI6ZGVmYXVsdDpyZXR1cm4gWH19LFtdKTtpZihZLmxlbmd0aD09PUoubGVuZ3RoKXtsZXQgWD1ZLmZpbHRlcigoVyxHLFUpPT5VLmluZGV4T2YoVyk9PT1HKTtyZXR1cm57dHlwZTpYLmxlbmd0aD4xP1g6WFswXSxlbnVtOkoucmVkdWNlKChXLEcpPT57cmV0dXJuIFcuaW5jbHVkZXMoRy5fZGVmLnZhbHVlKT9XOlsuLi5XLEcuX2RlZi52YWx1ZV19LFtdKX19fWVsc2UgaWYoSi5ldmVyeSgoWSk9PlkuX2RlZi50eXBlTmFtZT09PVwiWm9kRW51bVwiKSlyZXR1cm57dHlwZTpcInN0cmluZ1wiLGVudW06Si5yZWR1Y2UoKFksWCk9PlsuLi5ZLC4uLlguX2RlZi52YWx1ZXMuZmlsdGVyKChXKT0+IVkuaW5jbHVkZXMoVykpXSxbXSl9O3JldHVybiBuTCgkLFEpfXZhciBuTD0oJCxRKT0+e2xldCBKPSgkLm9wdGlvbnMgaW5zdGFuY2VvZiBNYXA/QXJyYXkuZnJvbSgkLm9wdGlvbnMudmFsdWVzKCkpOiQub3B0aW9ucykubWFwKChZLFgpPT5yKFkuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFueU9mXCIsYCR7WH1gXX0pKS5maWx0ZXIoKFkpPT4hIVkmJighUS5zdHJpY3RVbmlvbnN8fHR5cGVvZiBZPT09XCJvYmplY3RcIiYmT2JqZWN0LmtleXMoWSkubGVuZ3RoPjApKTtyZXR1cm4gSi5sZW5ndGg/e2FueU9mOkp9OnZvaWQgMH07ZnVuY3Rpb24gb0woJCxRKXtpZihbXCJab2RTdHJpbmdcIixcIlpvZE51bWJlclwiLFwiWm9kQmlnSW50XCIsXCJab2RCb29sZWFuXCIsXCJab2ROdWxsXCJdLmluY2x1ZGVzKCQuaW5uZXJUeXBlLl9kZWYudHlwZU5hbWUpJiYoISQuaW5uZXJUeXBlLl9kZWYuY2hlY2tzfHwhJC5pbm5lclR5cGUuX2RlZi5jaGVja3MubGVuZ3RoKSl7aWYoUS50YXJnZXQ9PT1cIm9wZW5BcGkzXCIpcmV0dXJue3R5cGU6UEpbJC5pbm5lclR5cGUuX2RlZi50eXBlTmFtZV0sbnVsbGFibGU6ITB9O3JldHVybnt0eXBlOltQSlskLmlubmVyVHlwZS5fZGVmLnR5cGVOYW1lXSxcIm51bGxcIl19fWlmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXtsZXQgWT1yKCQuaW5uZXJUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGhdfSk7aWYoWSYmXCIkcmVmXCJpbiBZKXJldHVybnthbGxPZjpbWV0sbnVsbGFibGU6ITB9O3JldHVybiBZJiZ7Li4uWSxudWxsYWJsZTohMH19bGV0IEo9cigkLmlubmVyVHlwZS5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiYW55T2ZcIixcIjBcIl19KTtyZXR1cm4gSiYme2FueU9mOltKLHt0eXBlOlwibnVsbFwifV19fWZ1bmN0aW9uIHRMKCQsUSl7bGV0IEo9e3R5cGU6XCJudW1iZXJcIn07aWYoISQuY2hlY2tzKXJldHVybiBKO2ZvcihsZXQgWSBvZiAkLmNoZWNrcylzd2l0Y2goWS5raW5kKXtjYXNlXCJpbnRcIjpKLnR5cGU9XCJpbnRlZ2VyXCIsVUIoSixcInR5cGVcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwibWluXCI6aWYoUS50YXJnZXQ9PT1cImpzb25TY2hlbWE3XCIpaWYoWS5pbmNsdXNpdmUpSCQoSixcIm1pbmltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKTtlbHNlIEgkKEosXCJleGNsdXNpdmVNaW5pbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZXtpZighWS5pbmNsdXNpdmUpSi5leGNsdXNpdmVNaW5pbXVtPSEwO0gkKEosXCJtaW5pbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSl9YnJlYWs7Y2FzZVwibWF4XCI6aWYoUS50YXJnZXQ9PT1cImpzb25TY2hlbWE3XCIpaWYoWS5pbmNsdXNpdmUpSCQoSixcIm1heGltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKTtlbHNlIEgkKEosXCJleGNsdXNpdmVNYXhpbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZXtpZighWS5pbmNsdXNpdmUpSi5leGNsdXNpdmVNYXhpbXVtPSEwO0gkKEosXCJtYXhpbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSl9YnJlYWs7Y2FzZVwibXVsdGlwbGVPZlwiOkgkKEosXCJtdWx0aXBsZU9mXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7YnJlYWt9cmV0dXJuIEp9ZnVuY3Rpb24gYUwoJCxRKXtsZXQgSj1RLnRhcmdldD09PVwib3BlbkFpXCIsWT17dHlwZTpcIm9iamVjdFwiLHByb3BlcnRpZXM6e319LFg9W10sVz0kLnNoYXBlKCk7Zm9yKGxldCBVIGluIFcpe2xldCBIPVdbVV07aWYoSD09PXZvaWQgMHx8SC5fZGVmPT09dm9pZCAwKWNvbnRpbnVlO2xldCBxPVVwKEgpO2lmKHEmJkope2lmKEguX2RlZi50eXBlTmFtZT09PVwiWm9kT3B0aW9uYWxcIilIPUguX2RlZi5pbm5lclR5cGU7aWYoIUguaXNOdWxsYWJsZSgpKUg9SC5udWxsYWJsZSgpO3E9ITF9bGV0IFY9cihILl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJwcm9wZXJ0aWVzXCIsVV0scHJvcGVydHlQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwicHJvcGVydGllc1wiLFVdfSk7aWYoVj09PXZvaWQgMCljb250aW51ZTtpZihZLnByb3BlcnRpZXNbVV09ViwhcSlYLnB1c2goVSl9aWYoWC5sZW5ndGgpWS5yZXF1aXJlZD1YO2xldCBHPUdwKCQsUSk7aWYoRyE9PXZvaWQgMClZLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUc7cmV0dXJuIFl9ZnVuY3Rpb24gR3AoJCxRKXtpZigkLmNhdGNoYWxsLl9kZWYudHlwZU5hbWUhPT1cIlpvZE5ldmVyXCIpcmV0dXJuIHIoJC5jYXRjaGFsbC5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl19KTtzd2l0Y2goJC51bmtub3duS2V5cyl7Y2FzZVwicGFzc3Rocm91Z2hcIjpyZXR1cm4gUS5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXM7Y2FzZVwic3RyaWN0XCI6cmV0dXJuIFEucmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllcztjYXNlXCJzdHJpcFwiOnJldHVybiBRLnJlbW92ZUFkZGl0aW9uYWxTdHJhdGVneT09PVwic3RyaWN0XCI/US5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXM6US5yZWplY3RlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzfX1mdW5jdGlvbiBVcCgkKXt0cnl7cmV0dXJuICQuaXNPcHRpb25hbCgpfWNhdGNoe3JldHVybiEwfX12YXIgc0w9KCQsUSk9PntpZihRLmN1cnJlbnRQYXRoLnRvU3RyaW5nKCk9PT1RLnByb3BlcnR5UGF0aD8udG9TdHJpbmcoKSlyZXR1cm4gcigkLmlubmVyVHlwZS5fZGVmLFEpO2xldCBKPXIoJC5pbm5lclR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFueU9mXCIsXCIxXCJdfSk7cmV0dXJuIEo/e2FueU9mOlt7bm90OngkKFEpfSxKXX06eCQoUSl9O3ZhciBlTD0oJCxRKT0+e2lmKFEucGlwZVN0cmF0ZWd5PT09XCJpbnB1dFwiKXJldHVybiByKCQuaW4uX2RlZixRKTtlbHNlIGlmKFEucGlwZVN0cmF0ZWd5PT09XCJvdXRwdXRcIilyZXR1cm4gcigkLm91dC5fZGVmLFEpO2xldCBKPXIoJC5pbi5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiYWxsT2ZcIixcIjBcIl19KSxZPXIoJC5vdXQuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFsbE9mXCIsSj9cIjFcIjpcIjBcIl19KTtyZXR1cm57YWxsT2Y6W0osWV0uZmlsdGVyKChYKT0+WCE9PXZvaWQgMCl9fTtmdW5jdGlvbiAkaigkLFEpe3JldHVybiByKCQudHlwZS5fZGVmLFEpfWZ1bmN0aW9uIFFqKCQsUSl7bGV0IFk9e3R5cGU6XCJhcnJheVwiLHVuaXF1ZUl0ZW1zOiEwLGl0ZW1zOnIoJC52YWx1ZVR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcIml0ZW1zXCJdfSl9O2lmKCQubWluU2l6ZSlIJChZLFwibWluSXRlbXNcIiwkLm1pblNpemUudmFsdWUsJC5taW5TaXplLm1lc3NhZ2UsUSk7aWYoJC5tYXhTaXplKUgkKFksXCJtYXhJdGVtc1wiLCQubWF4U2l6ZS52YWx1ZSwkLm1heFNpemUubWVzc2FnZSxRKTtyZXR1cm4gWX1mdW5jdGlvbiBKaigkLFEpe2lmKCQucmVzdClyZXR1cm57dHlwZTpcImFycmF5XCIsbWluSXRlbXM6JC5pdGVtcy5sZW5ndGgsaXRlbXM6JC5pdGVtcy5tYXAoKEosWSk9PnIoSi5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiaXRlbXNcIixgJHtZfWBdfSkpLnJlZHVjZSgoSixZKT0+WT09PXZvaWQgMD9KOlsuLi5KLFldLFtdKSxhZGRpdGlvbmFsSXRlbXM6cigkLnJlc3QuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFkZGl0aW9uYWxJdGVtc1wiXX0pfTtlbHNlIHJldHVybnt0eXBlOlwiYXJyYXlcIixtaW5JdGVtczokLml0ZW1zLmxlbmd0aCxtYXhJdGVtczokLml0ZW1zLmxlbmd0aCxpdGVtczokLml0ZW1zLm1hcCgoSixZKT0+cihKLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJpdGVtc1wiLGAke1l9YF19KSkucmVkdWNlKChKLFkpPT5ZPT09dm9pZCAwP0o6Wy4uLkosWV0sW10pfX1mdW5jdGlvbiBYaigkKXtyZXR1cm57bm90OngkKCQpfX1mdW5jdGlvbiBZaigkKXtyZXR1cm4geCQoJCl9dmFyIFdqPSgkLFEpPT57cmV0dXJuIHIoJC5pbm5lclR5cGUuX2RlZixRKX07dmFyIEdqPSgkLFEsSik9Pntzd2l0Y2goUSl7Y2FzZSBiLlpvZFN0cmluZzpyZXR1cm4gRlcoJCxKKTtjYXNlIGIuWm9kTnVtYmVyOnJldHVybiB0TCgkLEopO2Nhc2UgYi5ab2RPYmplY3Q6cmV0dXJuIGFMKCQsSik7Y2FzZSBiLlpvZEJpZ0ludDpyZXR1cm4gVEwoJCxKKTtjYXNlIGIuWm9kQm9vbGVhbjpyZXR1cm4geEwoKTtjYXNlIGIuWm9kRGF0ZTpyZXR1cm4gSEIoJCxKKTtjYXNlIGIuWm9kVW5kZWZpbmVkOnJldHVybiBYaihKKTtjYXNlIGIuWm9kTnVsbDpyZXR1cm4gaUwoSik7Y2FzZSBiLlpvZEFycmF5OnJldHVybiBDTCgkLEopO2Nhc2UgYi5ab2RVbmlvbjpjYXNlIGIuWm9kRGlzY3JpbWluYXRlZFVuaW9uOnJldHVybiByTCgkLEopO2Nhc2UgYi5ab2RJbnRlcnNlY3Rpb246cmV0dXJuIHVMKCQsSik7Y2FzZSBiLlpvZFR1cGxlOnJldHVybiBKaigkLEopO2Nhc2UgYi5ab2RSZWNvcmQ6cmV0dXJuIFpXKCQsSik7Y2FzZSBiLlpvZExpdGVyYWw6cmV0dXJuIG1MKCQsSik7Y2FzZSBiLlpvZEVudW06cmV0dXJuIGhMKCQpO2Nhc2UgYi5ab2ROYXRpdmVFbnVtOnJldHVybiBwTCgkKTtjYXNlIGIuWm9kTnVsbGFibGU6cmV0dXJuIG9MKCQsSik7Y2FzZSBiLlpvZE9wdGlvbmFsOnJldHVybiBzTCgkLEopO2Nhc2UgYi5ab2RNYXA6cmV0dXJuIGNMKCQsSik7Y2FzZSBiLlpvZFNldDpyZXR1cm4gUWooJCxKKTtjYXNlIGIuWm9kTGF6eTpyZXR1cm4oKT0+JC5nZXR0ZXIoKS5fZGVmO2Nhc2UgYi5ab2RQcm9taXNlOnJldHVybiAkaigkLEopO2Nhc2UgYi5ab2ROYU46Y2FzZSBiLlpvZE5ldmVyOnJldHVybiBkTChKKTtjYXNlIGIuWm9kRWZmZWN0czpyZXR1cm4gZ0woJCxKKTtjYXNlIGIuWm9kQW55OnJldHVybiB4JChKKTtjYXNlIGIuWm9kVW5rbm93bjpyZXR1cm4gWWooSik7Y2FzZSBiLlpvZERlZmF1bHQ6cmV0dXJuIHlMKCQsSik7Y2FzZSBiLlpvZEJyYW5kZWQ6cmV0dXJuIERXKCQsSik7Y2FzZSBiLlpvZFJlYWRvbmx5OnJldHVybiBXaigkLEopO2Nhc2UgYi5ab2RDYXRjaDpyZXR1cm4gZkwoJCxKKTtjYXNlIGIuWm9kUGlwZWxpbmU6cmV0dXJuIGVMKCQsSik7Y2FzZSBiLlpvZEZ1bmN0aW9uOmNhc2UgYi5ab2RWb2lkOmNhc2UgYi5ab2RTeW1ib2w6cmV0dXJuO2RlZmF1bHQ6cmV0dXJuKChZKT0+e3JldHVybn0pKFEpfX07ZnVuY3Rpb24gcigkLFEsSj0hMSl7bGV0IFk9US5zZWVuLmdldCgkKTtpZihRLm92ZXJyaWRlKXtsZXQgVT1RLm92ZXJyaWRlPy4oJCxRLFksSik7aWYoVSE9PVNMKXJldHVybiBVfWlmKFkmJiFKKXtsZXQgVT1IcChZLFEpO2lmKFUhPT12b2lkIDApcmV0dXJuIFV9bGV0IFg9e2RlZjokLHBhdGg6US5jdXJyZW50UGF0aCxqc29uU2NoZW1hOnZvaWQgMH07US5zZWVuLnNldCgkLFgpO2xldCBXPUdqKCQsJC50eXBlTmFtZSxRKSxHPXR5cGVvZiBXPT09XCJmdW5jdGlvblwiP3IoVygpLFEpOlc7aWYoRylLcCgkLFEsRyk7aWYoUS5wb3N0UHJvY2Vzcyl7bGV0IFU9US5wb3N0UHJvY2VzcyhHLCQsUSk7cmV0dXJuIFguanNvblNjaGVtYT1HLFV9cmV0dXJuIFguanNvblNjaGVtYT1HLEd9dmFyIEhwPSgkLFEpPT57c3dpdGNoKFEuJHJlZlN0cmF0ZWd5KXtjYXNlXCJyb290XCI6cmV0dXJueyRyZWY6JC5wYXRoLmpvaW4oXCIvXCIpfTtjYXNlXCJyZWxhdGl2ZVwiOnJldHVybnskcmVmOk9XKFEuY3VycmVudFBhdGgsJC5wYXRoKX07Y2FzZVwibm9uZVwiOmNhc2VcInNlZW5cIjp7aWYoJC5wYXRoLmxlbmd0aDxRLmN1cnJlbnRQYXRoLmxlbmd0aCYmJC5wYXRoLmV2ZXJ5KChKLFkpPT5RLmN1cnJlbnRQYXRoW1ldPT09SikpcmV0dXJuIGNvbnNvbGUud2FybihgUmVjdXJzaXZlIHJlZmVyZW5jZSBkZXRlY3RlZCBhdCAke1EuY3VycmVudFBhdGguam9pbihcIi9cIil9ISBEZWZhdWx0aW5nIHRvIGFueWApLHgkKFEpO3JldHVybiBRLiRyZWZTdHJhdGVneT09PVwic2VlblwiP3gkKFEpOnZvaWQgMH19fSxLcD0oJCxRLEopPT57aWYoJC5kZXNjcmlwdGlvbil7aWYoSi5kZXNjcmlwdGlvbj0kLmRlc2NyaXB0aW9uLFEubWFya2Rvd25EZXNjcmlwdGlvbilKLm1hcmtkb3duRGVzY3JpcHRpb249JC5kZXNjcmlwdGlvbn1yZXR1cm4gSn07dmFyIFZCPSgkLFEpPT57bGV0IEo9dkwoUSksWT10eXBlb2YgUT09PVwib2JqZWN0XCImJlEuZGVmaW5pdGlvbnM/T2JqZWN0LmVudHJpZXMoUS5kZWZpbml0aW9ucykucmVkdWNlKChILFtxLFZdKT0+KHsuLi5ILFtxXTpyKFYuX2RlZix7Li4uSixjdXJyZW50UGF0aDpbLi4uSi5iYXNlUGF0aCxKLmRlZmluaXRpb25QYXRoLHFdfSwhMCk/P3gkKEopfSkse30pOnZvaWQgMCxYPXR5cGVvZiBRPT09XCJzdHJpbmdcIj9ROlE/Lm5hbWVTdHJhdGVneT09PVwidGl0bGVcIj92b2lkIDA6UT8ubmFtZSxXPXIoJC5fZGVmLFg9PT12b2lkIDA/Sjp7Li4uSixjdXJyZW50UGF0aDpbLi4uSi5iYXNlUGF0aCxKLmRlZmluaXRpb25QYXRoLFhdfSwhMSk/P3gkKEopLEc9dHlwZW9mIFE9PT1cIm9iamVjdFwiJiZRLm5hbWUhPT12b2lkIDAmJlEubmFtZVN0cmF0ZWd5PT09XCJ0aXRsZVwiP1EubmFtZTp2b2lkIDA7aWYoRyE9PXZvaWQgMClXLnRpdGxlPUc7aWYoSi5mbGFncy5oYXNSZWZlcmVuY2VkT3BlbkFpQW55VHlwZSl7aWYoIVkpWT17fTtpZighWVtKLm9wZW5BaUFueVR5cGVOYW1lXSlZW0oub3BlbkFpQW55VHlwZU5hbWVdPXt0eXBlOltcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJpbnRlZ2VyXCIsXCJib29sZWFuXCIsXCJhcnJheVwiLFwibnVsbFwiXSxpdGVtczp7JHJlZjpKLiRyZWZTdHJhdGVneT09PVwicmVsYXRpdmVcIj9cIjFcIjpbLi4uSi5iYXNlUGF0aCxKLmRlZmluaXRpb25QYXRoLEoub3BlbkFpQW55VHlwZU5hbWVdLmpvaW4oXCIvXCIpfX19bGV0IFU9WD09PXZvaWQgMD9ZP3suLi5XLFtKLmRlZmluaXRpb25QYXRoXTpZfTpXOnskcmVmOlsuLi5KLiRyZWZTdHJhdGVneT09PVwicmVsYXRpdmVcIj9bXTpKLmJhc2VQYXRoLEouZGVmaW5pdGlvblBhdGgsWF0uam9pbihcIi9cIiksW0ouZGVmaW5pdGlvblBhdGhdOnsuLi5ZLFtYXTpXfX07aWYoSi50YXJnZXQ9PT1cImpzb25TY2hlbWE3XCIpVS4kc2NoZW1hPVwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjXCI7ZWxzZSBpZihKLnRhcmdldD09PVwianNvblNjaGVtYTIwMTktMDlcInx8Si50YXJnZXQ9PT1cIm9wZW5BaVwiKVUuJHNjaGVtYT1cImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvc2NoZW1hI1wiO2lmKEoudGFyZ2V0PT09XCJvcGVuQWlcIiYmKChcImFueU9mXCJpbiBVKXx8KFwib25lT2ZcImluIFUpfHwoXCJhbGxPZlwiaW4gVSl8fChcInR5cGVcImluIFUpJiZBcnJheS5pc0FycmF5KFUudHlwZSkpKWNvbnNvbGUud2FybihcIldhcm5pbmc6IE9wZW5BSSBtYXkgbm90IHN1cHBvcnQgc2NoZW1hcyB3aXRoIHVuaW9ucyBhcyByb290cyEgVHJ5IHdyYXBwaW5nIGl0IGluIGFuIG9iamVjdCBwcm9wZXJ0eS5cIik7cmV0dXJuIFV9O2Z1bmN0aW9uIHFwKCQpe2lmKCEkKXJldHVyblwiZHJhZnQtN1wiO2lmKCQ9PT1cImpzb25TY2hlbWE3XCJ8fCQ9PT1cImRyYWZ0LTdcIilyZXR1cm5cImRyYWZ0LTdcIjtpZigkPT09XCJqc29uU2NoZW1hMjAxOS0wOVwifHwkPT09XCJkcmFmdC0yMDIwLTEyXCIpcmV0dXJuXCJkcmFmdC0yMDIwLTEyXCI7cmV0dXJuXCJkcmFmdC03XCJ9ZnVuY3Rpb24gQkIoJCxRKXtpZihhNigkKSlyZXR1cm4gSjkoJCx7dGFyZ2V0OnFwKFE/LnRhcmdldCksaW86UT8ucGlwZVN0cmF0ZWd5Pz9cImlucHV0XCJ9KTtyZXR1cm4gVkIoJCx7c3RyaWN0VW5pb25zOlE/LnN0cmljdFVuaW9ucz8/ITAscGlwZVN0cmF0ZWd5OlE/LnBpcGVTdHJhdGVneT8/XCJpbnB1dFwifSl9ZnVuY3Rpb24gekIoJCl7bGV0IEo9QzEoJCk/Lm1ldGhvZDtpZighSil0aHJvdyBFcnJvcihcIlNjaGVtYSBpcyBtaXNzaW5nIGEgbWV0aG9kIGxpdGVyYWxcIik7bGV0IFk9VDMoSik7aWYodHlwZW9mIFkhPT1cInN0cmluZ1wiKXRocm93IEVycm9yKFwiU2NoZW1hIG1ldGhvZCBsaXRlcmFsIG11c3QgYmUgYSBzdHJpbmdcIik7cmV0dXJuIFl9ZnVuY3Rpb24gTkIoJCxRKXtsZXQgSj12MSgkLFEpO2lmKCFKLnN1Y2Nlc3MpdGhyb3cgSi5lcnJvcjtyZXR1cm4gSi5kYXRhfXZhciBWcD02MDAwMDtjbGFzcyB3Qntjb25zdHJ1Y3RvcigkKXtpZih0aGlzLl9vcHRpb25zPSQsdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihlMywoUSk9Pnt0aGlzLl9vbmNhbmNlbChRKX0pLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihRVywoUSk9Pnt0aGlzLl9vbnByb2dyZXNzKFEpfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcigkVywoUSk9Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT0kPy50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT0kPy50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSl0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEpXLGFzeW5jKFEsSik9PntsZXQgWT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhRLnBhcmFtcy50YXNrSWQsSi5zZXNzaW9uSWQpO2lmKCFZKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxcIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZFwiKTtyZXR1cm57Li4uWX19KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFlXLGFzeW5jKFEsSik9PntsZXQgWT1hc3luYygpPT57bGV0IFg9US5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBHO3doaWxlKEc9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKFgsSi5zZXNzaW9uSWQpKXtpZihHLnR5cGU9PT1cInJlc3BvbnNlXCJ8fEcudHlwZT09PVwiZXJyb3JcIil7bGV0IFU9Ry5tZXNzYWdlLEg9VS5pZCxxPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KEgpO2lmKHEpaWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoSCksRy50eXBlPT09XCJyZXNwb25zZVwiKXEoVSk7ZWxzZXtsZXQgVj1VLEI9bmV3IGMoVi5lcnJvci5jb2RlLFYuZXJyb3IubWVzc2FnZSxWLmVycm9yLmRhdGEpO3EoQil9ZWxzZXtsZXQgVj1HLnR5cGU9PT1cInJlc3BvbnNlXCI/XCJSZXNwb25zZVwiOlwiRXJyb3JcIjt0aGlzLl9vbmVycm9yKEVycm9yKGAke1Z9IGhhbmRsZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke0h9YCkpfWNvbnRpbnVlfWF3YWl0IHRoaXMuX3RyYW5zcG9ydD8uc2VuZChHLm1lc3NhZ2Use3JlbGF0ZWRSZXF1ZXN0SWQ6Si5yZXF1ZXN0SWR9KX19bGV0IFc9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soWCxKLnNlc3Npb25JZCk7aWYoIVcpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtYfWApO2lmKCF4MShXLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKFgsSi5zaWduYWwpLGF3YWl0IFkoKTtpZih4MShXLnN0YXR1cykpe2xldCBHPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrUmVzdWx0KFgsSi5zZXNzaW9uSWQpO3JldHVybiB0aGlzLl9jbGVhclRhc2tRdWV1ZShYKSx7Li4uRyxfbWV0YTp7Li4uRy5fbWV0YSxbVDFdOnt0YXNrSWQ6WH19fX1yZXR1cm4gYXdhaXQgWSgpfTtyZXR1cm4gYXdhaXQgWSgpfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihXVyxhc3luYyhRLEopPT57dHJ5e2xldHt0YXNrczpZLG5leHRDdXJzb3I6WH09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhRLnBhcmFtcz8uY3Vyc29yLEouc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6WSxuZXh0Q3Vyc29yOlgsX21ldGE6e319fWNhdGNoKFkpe3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgRmFpbGVkIHRvIGxpc3QgdGFza3M6ICR7WSBpbnN0YW5jZW9mIEVycm9yP1kubWVzc2FnZTpTdHJpbmcoWSl9YCl9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihVVyxhc3luYyhRLEopPT57dHJ5e2xldCBZPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKFEucGFyYW1zLnRhc2tJZCxKLnNlc3Npb25JZCk7aWYoIVkpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtRLnBhcmFtcy50YXNrSWR9YCk7aWYoeDEoWS5zdGF0dXMpKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtZLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhRLnBhcmFtcy50YXNrSWQsXCJjYW5jZWxsZWRcIixcIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uXCIsSi5zZXNzaW9uSWQpLHRoaXMuX2NsZWFyVGFza1F1ZXVlKFEucGFyYW1zLnRhc2tJZCk7bGV0IFg9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soUS5wYXJhbXMudGFza0lkLEouc2Vzc2lvbklkKTtpZighWCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kIGFmdGVyIGNhbmNlbGxhdGlvbjogJHtRLnBhcmFtcy50YXNrSWR9YCk7cmV0dXJue19tZXRhOnt9LC4uLlh9fWNhdGNoKFkpe2lmKFkgaW5zdGFuY2VvZiBjKXRocm93IFk7dGhyb3cgbmV3IGMoZC5JbnZhbGlkUmVxdWVzdCxgRmFpbGVkIHRvIGNhbmNlbCB0YXNrOiAke1kgaW5zdGFuY2VvZiBFcnJvcj9ZLm1lc3NhZ2U6U3RyaW5nKFkpfWApfX0pfWFzeW5jIF9vbmNhbmNlbCgkKXtpZighJC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KCQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KCQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCgkLFEsSixZLFg9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCgkLHt0aW1lb3V0SWQ6c2V0VGltZW91dChZLFEpLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6USxtYXhUb3RhbFRpbWVvdXQ6SixyZXNldFRpbWVvdXRPblByb2dyZXNzOlgsb25UaW1lb3V0Oll9KX1fcmVzZXRUaW1lb3V0KCQpe2xldCBRPXRoaXMuX3RpbWVvdXRJbmZvLmdldCgkKTtpZighUSlyZXR1cm4hMTtsZXQgSj1EYXRlLm5vdygpLVEuc3RhcnRUaW1lO2lmKFEubWF4VG90YWxUaW1lb3V0JiZKPj1RLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUoJCksYy5mcm9tRXJyb3IoZC5SZXF1ZXN0VGltZW91dCxcIk1heGltdW0gdG90YWwgdGltZW91dCBleGNlZWRlZFwiLHttYXhUb3RhbFRpbWVvdXQ6US5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOkp9KTtyZXR1cm4gY2xlYXJUaW1lb3V0KFEudGltZW91dElkKSxRLnRpbWVvdXRJZD1zZXRUaW1lb3V0KFEub25UaW1lb3V0LFEudGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KCQpe2xldCBRPXRoaXMuX3RpbWVvdXRJbmZvLmdldCgkKTtpZihRKWNsZWFyVGltZW91dChRLnRpbWVvdXRJZCksdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKCQpfWFzeW5jIGNvbm5lY3QoJCl7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IEVycm9yKFwiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLlwiKTt0aGlzLl90cmFuc3BvcnQ9JDtsZXQgUT10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e1E/LigpLHRoaXMuX29uY2xvc2UoKX07bGV0IEo9dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9KFgpPT57Sj8uKFgpLHRoaXMuX29uZXJyb3IoWCl9O2xldCBZPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KFgsVyk9PntpZihZPy4oWCxXKSxESihYKXx8RkwoWCkpdGhpcy5fb25yZXNwb25zZShYKTtlbHNlIGlmKG5WKFgpKXRoaXMuX29ucmVxdWVzdChYLFcpO2Vsc2UgaWYoREwoWCkpdGhpcy5fb25ub3RpZmljYXRpb24oWCk7ZWxzZSB0aGlzLl9vbmVycm9yKEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShYKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7bGV0ICQ9dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGxldCBKIG9mIHRoaXMuX3RpbWVvdXRJbmZvLnZhbHVlcygpKWNsZWFyVGltZW91dChKLnRpbWVvdXRJZCk7dGhpcy5fdGltZW91dEluZm8uY2xlYXIoKTtmb3IobGV0IEogb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKUouYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtsZXQgUT1jLmZyb21FcnJvcihkLkNvbm5lY3Rpb25DbG9zZWQsXCJDb25uZWN0aW9uIGNsb3NlZFwiKTt0aGlzLl90cmFuc3BvcnQ9dm9pZCAwLHRoaXMub25jbG9zZT8uKCk7Zm9yKGxldCBKIG9mICQudmFsdWVzKCkpSihRKX1fb25lcnJvcigkKXt0aGlzLm9uZXJyb3I/LigkKX1fb25ub3RpZmljYXRpb24oJCl7bGV0IFE9dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZ2V0KCQubWV0aG9kKT8/dGhpcy5mYWxsYmFja05vdGlmaWNhdGlvbkhhbmRsZXI7aWYoUT09PXZvaWQgMClyZXR1cm47UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+USgkKSkuY2F0Y2goKEopPT50aGlzLl9vbmVycm9yKEVycm9yKGBVbmNhdWdodCBlcnJvciBpbiBub3RpZmljYXRpb24gaGFuZGxlcjogJHtKfWApKSl9X29ucmVxdWVzdCgkLFEpe2xldCBKPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQoJC5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIsWT10aGlzLl90cmFuc3BvcnQsWD0kLnBhcmFtcz8uX21ldGE/LltUMV0/LnRhc2tJZDtpZihKPT09dm9pZCAwKXtsZXQgcT17anNvbnJwYzpcIjIuMFwiLGlkOiQuaWQsZXJyb3I6e2NvZGU6ZC5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOlwiTWV0aG9kIG5vdCBmb3VuZFwifX07aWYoWCYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoWCx7dHlwZTpcImVycm9yXCIsbWVzc2FnZTpxLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxZPy5zZXNzaW9uSWQpLmNhdGNoKChWKT0+dGhpcy5fb25lcnJvcihFcnJvcihgRmFpbGVkIHRvIGVucXVldWUgZXJyb3IgcmVzcG9uc2U6ICR7Vn1gKSkpO2Vsc2UgWT8uc2VuZChxKS5jYXRjaCgoVik9PnRoaXMuX29uZXJyb3IoRXJyb3IoYEZhaWxlZCB0byBzZW5kIGFuIGVycm9yIHJlc3BvbnNlOiAke1Z9YCkpKTtyZXR1cm59bGV0IFc9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KCQuaWQsVyk7bGV0IEc9TkwoJC5wYXJhbXMpPyQucGFyYW1zLnRhc2s6dm9pZCAwLFU9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSgkLFk/LnNlc3Npb25JZCk6dm9pZCAwLEg9e3NpZ25hbDpXLnNpZ25hbCxzZXNzaW9uSWQ6WT8uc2Vzc2lvbklkLF9tZXRhOiQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jKHEpPT57aWYoVy5zaWduYWwuYWJvcnRlZClyZXR1cm47bGV0IFY9e3JlbGF0ZWRSZXF1ZXN0SWQ6JC5pZH07aWYoWClWLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6WH07YXdhaXQgdGhpcy5ub3RpZmljYXRpb24ocSxWKX0sc2VuZFJlcXVlc3Q6YXN5bmMocSxWLEIpPT57aWYoVy5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgYyhkLkNvbm5lY3Rpb25DbG9zZWQsXCJSZXF1ZXN0IHdhcyBjYW5jZWxsZWRcIik7bGV0IHo9ey4uLkIscmVsYXRlZFJlcXVlc3RJZDokLmlkfTtpZihYJiYhei5yZWxhdGVkVGFzayl6LnJlbGF0ZWRUYXNrPXt0YXNrSWQ6WH07bGV0IE49ei5yZWxhdGVkVGFzaz8udGFza0lkPz9YO2lmKE4mJlUpYXdhaXQgVS51cGRhdGVUYXNrU3RhdHVzKE4sXCJpbnB1dF9yZXF1aXJlZFwiKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHEsVix6KX0sYXV0aEluZm86UT8uYXV0aEluZm8scmVxdWVzdElkOiQuaWQscmVxdWVzdEluZm86UT8ucmVxdWVzdEluZm8sdGFza0lkOlgsdGFza1N0b3JlOlUsdGFza1JlcXVlc3RlZFR0bDpHPy50dGwsY2xvc2VTU0VTdHJlYW06UT8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOlE/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKEcpdGhpcy5hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkoJC5tZXRob2QpfSkudGhlbigoKT0+SigkLEgpKS50aGVuKGFzeW5jKHEpPT57aWYoVy5zaWduYWwuYWJvcnRlZClyZXR1cm47bGV0IFY9e3Jlc3VsdDpxLGpzb25ycGM6XCIyLjBcIixpZDokLmlkfTtpZihYJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKWF3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShYLHt0eXBlOlwicmVzcG9uc2VcIixtZXNzYWdlOlYsdGltZXN0YW1wOkRhdGUubm93KCl9LFk/LnNlc3Npb25JZCk7ZWxzZSBhd2FpdCBZPy5zZW5kKFYpfSxhc3luYyhxKT0+e2lmKFcuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2xldCBWPXtqc29ucnBjOlwiMi4wXCIsaWQ6JC5pZCxlcnJvcjp7Y29kZTpOdW1iZXIuaXNTYWZlSW50ZWdlcihxLmNvZGUpP3EuY29kZTpkLkludGVybmFsRXJyb3IsbWVzc2FnZTpxLm1lc3NhZ2U/P1wiSW50ZXJuYWwgZXJyb3JcIiwuLi5xLmRhdGEhPT12b2lkIDAmJntkYXRhOnEuZGF0YX19fTtpZihYJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKWF3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShYLHt0eXBlOlwiZXJyb3JcIixtZXNzYWdlOlYsdGltZXN0YW1wOkRhdGUubm93KCl9LFk/LnNlc3Npb25JZCk7ZWxzZSBhd2FpdCBZPy5zZW5kKFYpfSkuY2F0Y2goKHEpPT50aGlzLl9vbmVycm9yKEVycm9yKGBGYWlsZWQgdG8gc2VuZCByZXNwb25zZTogJHtxfWApKSkuZmluYWxseSgoKT0+e2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQoJC5pZCk9PT1XKXRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5kZWxldGUoJC5pZCl9KX1fb25wcm9ncmVzcygkKXtsZXR7cHJvZ3Jlc3NUb2tlbjpRLC4uLkp9PSQucGFyYW1zLFk9TnVtYmVyKFEpLFg9dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5nZXQoWSk7aWYoIVgpe3RoaXMuX29uZXJyb3IoRXJyb3IoYFJlY2VpdmVkIGEgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uIGZvciBhbiB1bmtub3duIHRva2VuOiAke0pTT04uc3RyaW5naWZ5KCQpfWApKTtyZXR1cm59bGV0IFc9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQoWSksRz10aGlzLl90aW1lb3V0SW5mby5nZXQoWSk7aWYoRyYmVyYmRy5yZXNldFRpbWVvdXRPblByb2dyZXNzKXRyeXt0aGlzLl9yZXNldFRpbWVvdXQoWSl9Y2F0Y2goVSl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoWSksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoWSksdGhpcy5fY2xlYW51cFRpbWVvdXQoWSksVyhVKTtyZXR1cm59WChKKX1fb25yZXNwb25zZSgkKXtsZXQgUT1OdW1iZXIoJC5pZCksSj10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChRKTtpZihKKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShRKSxESigkKSlKKCQpO2Vsc2V7bGV0IFc9bmV3IGMoJC5lcnJvci5jb2RlLCQuZXJyb3IubWVzc2FnZSwkLmVycm9yLmRhdGEpO0ooVyl9cmV0dXJufWxldCBZPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KFEpO2lmKFk9PT12b2lkIDApe3RoaXMuX29uZXJyb3IoRXJyb3IoYFJlY2VpdmVkIGEgcmVzcG9uc2UgZm9yIGFuIHVua25vd24gbWVzc2FnZSBJRDogJHtKU09OLnN0cmluZ2lmeSgkKX1gKSk7cmV0dXJufXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKFEpLHRoaXMuX2NsZWFudXBUaW1lb3V0KFEpO2xldCBYPSExO2lmKERKKCQpJiYkLnJlc3VsdCYmdHlwZW9mICQucmVzdWx0PT09XCJvYmplY3RcIil7bGV0IFc9JC5yZXN1bHQ7aWYoVy50YXNrJiZ0eXBlb2YgVy50YXNrPT09XCJvYmplY3RcIil7bGV0IEc9Vy50YXNrO2lmKHR5cGVvZiBHLnRhc2tJZD09PVwic3RyaW5nXCIpWD0hMCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuc2V0KEcudGFza0lkLFEpfX1pZighWCl0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShRKTtpZihESigkKSlZKCQpO2Vsc2V7bGV0IFc9Yy5mcm9tRXJyb3IoJC5lcnJvci5jb2RlLCQuZXJyb3IubWVzc2FnZSwkLmVycm9yLmRhdGEpO1koVyl9fWdldCB0cmFuc3BvcnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0fWFzeW5jIGNsb3NlKCl7YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5jbG9zZSgpfWFzeW5jKnJlcXVlc3RTdHJlYW0oJCxRLEope2xldHt0YXNrOll9PUo/P3t9O2lmKCFZKXt0cnl7eWllbGR7dHlwZTpcInJlc3VsdFwiLHJlc3VsdDphd2FpdCB0aGlzLnJlcXVlc3QoJCxRLEopfX1jYXRjaChXKXt5aWVsZHt0eXBlOlwiZXJyb3JcIixlcnJvcjpXIGluc3RhbmNlb2YgYz9XOm5ldyBjKGQuSW50ZXJuYWxFcnJvcixTdHJpbmcoVykpfX1yZXR1cm59bGV0IFg7dHJ5e2xldCBXPWF3YWl0IHRoaXMucmVxdWVzdCgkLEg5LEopO2lmKFcudGFzaylYPVcudGFzay50YXNrSWQseWllbGR7dHlwZTpcInRhc2tDcmVhdGVkXCIsdGFzazpXLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IGMoZC5JbnRlcm5hbEVycm9yLFwiVGFzayBjcmVhdGlvbiBkaWQgbm90IHJldHVybiBhIHRhc2tcIik7d2hpbGUoITApe2xldCBHPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOlh9LEopO2lmKHlpZWxke3R5cGU6XCJ0YXNrU3RhdHVzXCIsdGFzazpHfSx4MShHLnN0YXR1cykpe2lmKEcuc3RhdHVzPT09XCJjb21wbGV0ZWRcIil5aWVsZHt0eXBlOlwicmVzdWx0XCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOlh9LFEsSil9O2Vsc2UgaWYoRy5zdGF0dXM9PT1cImZhaWxlZFwiKXlpZWxke3R5cGU6XCJlcnJvclwiLGVycm9yOm5ldyBjKGQuSW50ZXJuYWxFcnJvcixgVGFzayAke1h9IGZhaWxlZGApfTtlbHNlIGlmKEcuc3RhdHVzPT09XCJjYW5jZWxsZWRcIil5aWVsZHt0eXBlOlwiZXJyb3JcIixlcnJvcjpuZXcgYyhkLkludGVybmFsRXJyb3IsYFRhc2sgJHtYfSB3YXMgY2FuY2VsbGVkYCl9O3JldHVybn1pZihHLnN0YXR1cz09PVwiaW5wdXRfcmVxdWlyZWRcIil7eWllbGR7dHlwZTpcInJlc3VsdFwiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDpYfSxRLEopfTtyZXR1cm59bGV0IFU9Ry5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xMDAwO2F3YWl0IG5ldyBQcm9taXNlKChIKT0+c2V0VGltZW91dChILFUpKSxKPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKFcpe3lpZWxke3R5cGU6XCJlcnJvclwiLGVycm9yOlcgaW5zdGFuY2VvZiBjP1c6bmV3IGMoZC5JbnRlcm5hbEVycm9yLFN0cmluZyhXKSl9fX1yZXF1ZXN0KCQsUSxKKXtsZXR7cmVsYXRlZFJlcXVlc3RJZDpZLHJlc3VtcHRpb25Ub2tlbjpYLG9ucmVzdW1wdGlvbnRva2VuOlcsdGFzazpHLHJlbGF0ZWRUYXNrOlV9PUo/P3t9O3JldHVybiBuZXcgUHJvbWlzZSgoSCxxKT0+e2xldCBWPShNKT0+e3EoTSl9O2lmKCF0aGlzLl90cmFuc3BvcnQpe1YoRXJyb3IoXCJOb3QgY29ubmVjdGVkXCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXtpZih0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QoJC5tZXRob2QpLEcpdGhpcy5hc3NlcnRUYXNrQ2FwYWJpbGl0eSgkLm1ldGhvZCl9Y2F0Y2goTSl7VihNKTtyZXR1cm59Sj8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO2xldCBCPXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKyx6PXsuLi4kLGpzb25ycGM6XCIyLjBcIixpZDpCfTtpZihKPy5vbnByb2dyZXNzKXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KEIsSi5vbnByb2dyZXNzKSx6LnBhcmFtcz17Li4uJC5wYXJhbXMsX21ldGE6ey4uLiQucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjpCfX07aWYoRyl6LnBhcmFtcz17Li4uei5wYXJhbXMsdGFzazpHfTtpZihVKXoucGFyYW1zPXsuLi56LnBhcmFtcyxfbWV0YTp7Li4uei5wYXJhbXM/Ll9tZXRhfHx7fSxbVDFdOlV9fTtsZXQgTj0oTSk9Pnt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShCKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShCKSx0aGlzLl9jbGVhbnVwVGltZW91dChCKSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoe2pzb25ycGM6XCIyLjBcIixtZXRob2Q6XCJub3RpZmljYXRpb25zL2NhbmNlbGxlZFwiLHBhcmFtczp7cmVxdWVzdElkOkIscmVhc29uOlN0cmluZyhNKX19LHtyZWxhdGVkUmVxdWVzdElkOlkscmVzdW1wdGlvblRva2VuOlgsb25yZXN1bXB0aW9udG9rZW46V30pLmNhdGNoKChBKT0+dGhpcy5fb25lcnJvcihFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke0F9YCkpKTtsZXQgaj1NIGluc3RhbmNlb2YgYz9NOm5ldyBjKGQuUmVxdWVzdFRpbWVvdXQsU3RyaW5nKE0pKTtxKGopfTt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLnNldChCLChNKT0+e2lmKEo/LnNpZ25hbD8uYWJvcnRlZClyZXR1cm47aWYoTSBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBxKE0pO3RyeXtsZXQgaj12MShRLE0ucmVzdWx0KTtpZighai5zdWNjZXNzKXEoai5lcnJvcik7ZWxzZSBIKGouZGF0YSl9Y2F0Y2goail7cShqKX19KSxKPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCgpPT57TihKPy5zaWduYWw/LnJlYXNvbil9KTtsZXQgdz1KPy50aW1lb3V0Pz9WcCxPPSgpPT5OKGMuZnJvbUVycm9yKGQuUmVxdWVzdFRpbWVvdXQsXCJSZXF1ZXN0IHRpbWVkIG91dFwiLHt0aW1lb3V0Ond9KSk7dGhpcy5fc2V0dXBUaW1lb3V0KEIsdyxKPy5tYXhUb3RhbFRpbWVvdXQsTyxKPy5yZXNldFRpbWVvdXRPblByb2dyZXNzPz8hMSk7bGV0IEQ9VT8udGFza0lkO2lmKEQpe2xldCBNPShqKT0+e2xldCBBPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KEIpO2lmKEEpQShqKTtlbHNlIHRoaXMuX29uZXJyb3IoRXJyb3IoYFJlc3BvbnNlIGhhbmRsZXIgbWlzc2luZyBmb3Igc2lkZS1jaGFubmVsZWQgcmVxdWVzdCAke0J9YCkpfTt0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLnNldChCLE0pLHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShELHt0eXBlOlwicmVxdWVzdFwiLG1lc3NhZ2U6eix0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKChqKT0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KEIpLHEoail9KX1lbHNlIHRoaXMuX3RyYW5zcG9ydC5zZW5kKHose3JlbGF0ZWRSZXF1ZXN0SWQ6WSxyZXN1bXB0aW9uVG9rZW46WCxvbnJlc3VtcHRpb250b2tlbjpXfSkuY2F0Y2goKE0pPT57dGhpcy5fY2xlYW51cFRpbWVvdXQoQikscShNKX0pfSl9YXN5bmMgZ2V0VGFzaygkLFEpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDpcInRhc2tzL2dldFwiLHBhcmFtczokfSxYVyxRKX1hc3luYyBnZXRUYXNrUmVzdWx0KCQsUSxKKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJ0YXNrcy9yZXN1bHRcIixwYXJhbXM6JH0sUSxKKX1hc3luYyBsaXN0VGFza3MoJCxRKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJ0YXNrcy9saXN0XCIscGFyYW1zOiR9LEdXLFEpfWFzeW5jIGNhbmNlbFRhc2soJCxRKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJ0YXNrcy9jYW5jZWxcIixwYXJhbXM6JH0sTUwsUSl9YXN5bmMgbm90aWZpY2F0aW9uKCQsUSl7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBFcnJvcihcIk5vdCBjb25uZWN0ZWRcIik7dGhpcy5hc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5KCQubWV0aG9kKTtsZXQgSj1RPy5yZWxhdGVkVGFzaz8udGFza0lkO2lmKEope2xldCBHPXsuLi4kLGpzb25ycGM6XCIyLjBcIixwYXJhbXM6ey4uLiQucGFyYW1zLF9tZXRhOnsuLi4kLnBhcmFtcz8uX21ldGF8fHt9LFtUMV06US5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoSix7dHlwZTpcIm5vdGlmaWNhdGlvblwiLG1lc3NhZ2U6Ryx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pO3JldHVybn1pZigodGhpcy5fb3B0aW9ucz8uZGVib3VuY2VkTm90aWZpY2F0aW9uTWV0aG9kcz8/W10pLmluY2x1ZGVzKCQubWV0aG9kKSYmISQucGFyYW1zJiYhUT8ucmVsYXRlZFJlcXVlc3RJZCYmIVE/LnJlbGF0ZWRUYXNrKXtpZih0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5oYXMoJC5tZXRob2QpKXJldHVybjt0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5hZGQoJC5tZXRob2QpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntpZih0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5kZWxldGUoJC5tZXRob2QpLCF0aGlzLl90cmFuc3BvcnQpcmV0dXJuO2xldCBHPXsuLi4kLGpzb25ycGM6XCIyLjBcIn07aWYoUT8ucmVsYXRlZFRhc2spRz17Li4uRyxwYXJhbXM6ey4uLkcucGFyYW1zLF9tZXRhOnsuLi5HLnBhcmFtcz8uX21ldGF8fHt9LFtUMV06US5yZWxhdGVkVGFza319fTt0aGlzLl90cmFuc3BvcnQ/LnNlbmQoRyxRKS5jYXRjaCgoVSk9PnRoaXMuX29uZXJyb3IoVSkpfSk7cmV0dXJufWxldCBXPXsuLi4kLGpzb25ycGM6XCIyLjBcIn07aWYoUT8ucmVsYXRlZFRhc2spVz17Li4uVyxwYXJhbXM6ey4uLlcucGFyYW1zLF9tZXRhOnsuLi5XLnBhcmFtcz8uX21ldGF8fHt9LFtUMV06US5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl90cmFuc3BvcnQuc2VuZChXLFEpfXNldFJlcXVlc3RIYW5kbGVyKCQsUSl7bGV0IEo9ekIoJCk7dGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkoSiksdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChKLChZLFgpPT57bGV0IFc9TkIoJCxZKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFEoVyxYKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcigkKXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKCQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKCQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXMoJCkpdGhyb3cgRXJyb3IoYEEgcmVxdWVzdCBoYW5kbGVyIGZvciAkeyR9IGFscmVhZHkgZXhpc3RzLCB3aGljaCB3b3VsZCBiZSBvdmVycmlkZGVuYCl9c2V0Tm90aWZpY2F0aW9uSGFuZGxlcigkLFEpe2xldCBKPXpCKCQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChKLChZKT0+e2xldCBYPU5CKCQsWSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShRKFgpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIoJCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKCQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcigkKXtsZXQgUT10aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuZ2V0KCQpO2lmKFEhPT12b2lkIDApdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoUSksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmRlbGV0ZSgkKX1hc3luYyBfZW5xdWV1ZVRhc2tNZXNzYWdlKCQsUSxKKXtpZighdGhpcy5fdGFza1N0b3JlfHwhdGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl0aHJvdyBFcnJvcihcIkNhbm5vdCBlbnF1ZXVlIHRhc2sgbWVzc2FnZTogdGFza1N0b3JlIGFuZCB0YXNrTWVzc2FnZVF1ZXVlIGFyZSBub3QgY29uZmlndXJlZFwiKTtsZXQgWT10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSgkLFEsSixZKX1hc3luYyBfY2xlYXJUYXNrUXVldWUoJCxRKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgSj1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWVBbGwoJCxRKTtmb3IobGV0IFkgb2YgSilpZihZLnR5cGU9PT1cInJlcXVlc3RcIiYmblYoWS5tZXNzYWdlKSl7bGV0IFg9WS5tZXNzYWdlLmlkLFc9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoWCk7aWYoVylXKG5ldyBjKGQuSW50ZXJuYWxFcnJvcixcIlRhc2sgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZFwiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoWCk7ZWxzZSB0aGlzLl9vbmVycm9yKEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7WH0gZHVyaW5nIHRhc2sgJHskfSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKCQsUSl7bGV0IEo9dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzEwMDA7dHJ5e2xldCBZPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZT8uZ2V0VGFzaygkKTtpZihZPy5wb2xsSW50ZXJ2YWwpSj1ZLnBvbGxJbnRlcnZhbH1jYXRjaHt9cmV0dXJuIG5ldyBQcm9taXNlKChZLFgpPT57aWYoUS5hYm9ydGVkKXtYKG5ldyBjKGQuSW52YWxpZFJlcXVlc3QsXCJSZXF1ZXN0IGNhbmNlbGxlZFwiKSk7cmV0dXJufWxldCBXPXNldFRpbWVvdXQoWSxKKTtRLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCgpPT57Y2xlYXJUaW1lb3V0KFcpLFgobmV3IGMoZC5JbnZhbGlkUmVxdWVzdCxcIlJlcXVlc3QgY2FuY2VsbGVkXCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUoJCxRKXtsZXQgSj10aGlzLl90YXNrU3RvcmU7aWYoIUopdGhyb3cgRXJyb3IoXCJObyB0YXNrIHN0b3JlIGNvbmZpZ3VyZWRcIik7cmV0dXJue2NyZWF0ZVRhc2s6YXN5bmMoWSk9PntpZighJCl0aHJvdyBFcnJvcihcIk5vIHJlcXVlc3QgcHJvdmlkZWRcIik7cmV0dXJuIGF3YWl0IEouY3JlYXRlVGFzayhZLCQuaWQse21ldGhvZDokLm1ldGhvZCxwYXJhbXM6JC5wYXJhbXN9LFEpfSxnZXRUYXNrOmFzeW5jKFkpPT57bGV0IFg9YXdhaXQgSi5nZXRUYXNrKFksUSk7aWYoIVgpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLFwiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kXCIpO3JldHVybiBYfSxzdG9yZVRhc2tSZXN1bHQ6YXN5bmMoWSxYLFcpPT57YXdhaXQgSi5zdG9yZVRhc2tSZXN1bHQoWSxYLFcsUSk7bGV0IEc9YXdhaXQgSi5nZXRUYXNrKFksUSk7aWYoRyl7bGV0IFU9akoucGFyc2Uoe21ldGhvZDpcIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzXCIscGFyYW1zOkd9KTtpZihhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihVKSx4MShHLnN0YXR1cykpdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoWSl9fSxnZXRUYXNrUmVzdWx0OihZKT0+e3JldHVybiBKLmdldFRhc2tSZXN1bHQoWSxRKX0sdXBkYXRlVGFza1N0YXR1czphc3luYyhZLFgsVyk9PntsZXQgRz1hd2FpdCBKLmdldFRhc2soWSxRKTtpZighRyl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFRhc2sgXCIke1l9XCIgbm90IGZvdW5kIC0gaXQgbWF5IGhhdmUgYmVlbiBjbGVhbmVkIHVwYCk7aWYoeDEoRy5zdGF0dXMpKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgQ2Fubm90IHVwZGF0ZSB0YXNrIFwiJHtZfVwiIGZyb20gdGVybWluYWwgc3RhdHVzIFwiJHtHLnN0YXR1c31cIiB0byBcIiR7WH1cIi4gVGVybWluYWwgc3RhdGVzIChjb21wbGV0ZWQsIGZhaWxlZCwgY2FuY2VsbGVkKSBjYW5ub3QgdHJhbnNpdGlvbiB0byBvdGhlciBzdGF0ZXMuYCk7YXdhaXQgSi51cGRhdGVUYXNrU3RhdHVzKFksWCxXLFEpO2xldCBVPWF3YWl0IEouZ2V0VGFzayhZLFEpO2lmKFUpe2xldCBIPWpKLnBhcnNlKHttZXRob2Q6XCJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1c1wiLHBhcmFtczpVfSk7aWYoYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oSCkseDEoVS5zdGF0dXMpKXRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKFkpfX0sbGlzdFRhc2tzOihZKT0+e3JldHVybiBKLmxpc3RUYXNrcyhZLFEpfX19fWZ1bmN0aW9uIFVqKCQpe3JldHVybiAkIT09bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheSgkKX1mdW5jdGlvbiBIaigkLFEpe2xldCBKPXsuLi4kfTtmb3IobGV0IFkgaW4gUSl7bGV0IFg9WSxXPVFbWF07aWYoVz09PXZvaWQgMCljb250aW51ZTtsZXQgRz1KW1hdO2lmKFVqKEcpJiZVaihXKSlKW1hdPXsuLi5HLC4uLld9O2Vsc2UgSltYXT1XfXJldHVybiBKfXZhciBkUD1CWChIeigpLDEpLGlQPUJYKHBQKCksMSk7ZnVuY3Rpb24ganMoKXtsZXQgJD1uZXcgZFAuZGVmYXVsdCh7c3RyaWN0OiExLHZhbGlkYXRlRm9ybWF0czohMCx2YWxpZGF0ZVNjaGVtYTohMSxhbGxFcnJvcnM6ITB9KTtyZXR1cm4gaVAuZGVmYXVsdCgkKSwkfWNsYXNzIEZ6e2NvbnN0cnVjdG9yKCQpe3RoaXMuX2Fqdj0kPz9qcygpfWdldFZhbGlkYXRvcigkKXtsZXQgUT1cIiRpZFwiaW4gJCYmdHlwZW9mICQuJGlkPT09XCJzdHJpbmdcIj90aGlzLl9hanYuZ2V0U2NoZW1hKCQuJGlkKT8/dGhpcy5fYWp2LmNvbXBpbGUoJCk6dGhpcy5fYWp2LmNvbXBpbGUoJCk7cmV0dXJuKEopPT57aWYoUShKKSlyZXR1cm57dmFsaWQ6ITAsZGF0YTpKLGVycm9yTWVzc2FnZTp2b2lkIDB9O2Vsc2UgcmV0dXJue3ZhbGlkOiExLGRhdGE6dm9pZCAwLGVycm9yTWVzc2FnZTp0aGlzLl9hanYuZXJyb3JzVGV4dChRLmVycm9ycyl9fX19Y2xhc3MgWnp7Y29uc3RydWN0b3IoJCl7dGhpcy5fc2VydmVyPSR9cmVxdWVzdFN0cmVhbSgkLFEsSil7cmV0dXJuIHRoaXMuX3NlcnZlci5yZXF1ZXN0U3RyZWFtKCQsUSxKKX1jcmVhdGVNZXNzYWdlU3RyZWFtKCQsUSl7bGV0IEo9dGhpcy5fc2VydmVyLmdldENsaWVudENhcGFiaWxpdGllcygpO2lmKCgkLnRvb2xzfHwkLnRvb2xDaG9pY2UpJiYhSj8uc2FtcGxpbmc/LnRvb2xzKXRocm93IEVycm9yKFwiQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgdG9vbHMgY2FwYWJpbGl0eS5cIik7aWYoJC5tZXNzYWdlcy5sZW5ndGg+MCl7bGV0IFk9JC5tZXNzYWdlc1skLm1lc3NhZ2VzLmxlbmd0aC0xXSxYPUFycmF5LmlzQXJyYXkoWS5jb250ZW50KT9ZLmNvbnRlbnQ6W1kuY29udGVudF0sVz1YLnNvbWUoKHEpPT5xLnR5cGU9PT1cInRvb2xfcmVzdWx0XCIpLEc9JC5tZXNzYWdlcy5sZW5ndGg+MT8kLm1lc3NhZ2VzWyQubWVzc2FnZXMubGVuZ3RoLTJdOnZvaWQgMCxVPUc/QXJyYXkuaXNBcnJheShHLmNvbnRlbnQpP0cuY29udGVudDpbRy5jb250ZW50XTpbXSxIPVUuc29tZSgocSk9PnEudHlwZT09PVwidG9vbF91c2VcIik7aWYoVyl7aWYoWC5zb21lKChxKT0+cS50eXBlIT09XCJ0b29sX3Jlc3VsdFwiKSl0aHJvdyBFcnJvcihcIlRoZSBsYXN0IG1lc3NhZ2UgbXVzdCBjb250YWluIG9ubHkgdG9vbF9yZXN1bHQgY29udGVudCBpZiBhbnkgaXMgcHJlc2VudFwiKTtpZighSCl0aHJvdyBFcnJvcihcInRvb2xfcmVzdWx0IGJsb2NrcyBhcmUgbm90IG1hdGNoaW5nIGFueSB0b29sX3VzZSBmcm9tIHRoZSBwcmV2aW91cyBtZXNzYWdlXCIpfWlmKEgpe2xldCBxPW5ldyBTZXQoVS5maWx0ZXIoKEIpPT5CLnR5cGU9PT1cInRvb2xfdXNlXCIpLm1hcCgoQik9PkIuaWQpKSxWPW5ldyBTZXQoWC5maWx0ZXIoKEIpPT5CLnR5cGU9PT1cInRvb2xfcmVzdWx0XCIpLm1hcCgoQik9PkIudG9vbFVzZUlkKSk7aWYocS5zaXplIT09Vi5zaXplfHwhWy4uLnFdLmV2ZXJ5KChCKT0+Vi5oYXMoQikpKXRocm93IEVycm9yKFwiaWRzIG9mIHRvb2xfcmVzdWx0IGJsb2NrcyBhbmQgdG9vbF91c2UgYmxvY2tzIGZyb20gcHJldmlvdXMgbWVzc2FnZSBkbyBub3QgbWF0Y2hcIil9fXJldHVybiB0aGlzLnJlcXVlc3RTdHJlYW0oe21ldGhvZDpcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIixwYXJhbXM6JH0sUkosUSl9ZWxpY2l0SW5wdXRTdHJlYW0oJCxRKXtsZXQgSj10aGlzLl9zZXJ2ZXIuZ2V0Q2xpZW50Q2FwYWJpbGl0aWVzKCksWT0kLm1vZGU/P1wiZm9ybVwiO3N3aXRjaChZKXtjYXNlXCJ1cmxcIjp7aWYoIUo/LmVsaWNpdGF0aW9uPy51cmwpdGhyb3cgRXJyb3IoXCJDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB1cmwgZWxpY2l0YXRpb24uXCIpO2JyZWFrfWNhc2VcImZvcm1cIjp7aWYoIUo/LmVsaWNpdGF0aW9uPy5mb3JtKXRocm93IEVycm9yKFwiQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgZm9ybSBlbGljaXRhdGlvbi5cIik7YnJlYWt9fWxldCBYPVk9PT1cImZvcm1cIiYmJC5tb2RlPT09dm9pZCAwP3suLi4kLG1vZGU6XCJmb3JtXCJ9OiQ7cmV0dXJuIHRoaXMucmVxdWVzdFN0cmVhbSh7bWV0aG9kOlwiZWxpY2l0YXRpb24vY3JlYXRlXCIscGFyYW1zOlh9LFY5LFEpfWFzeW5jIGdldFRhc2soJCxRKXtyZXR1cm4gdGhpcy5fc2VydmVyLmdldFRhc2soe3Rhc2tJZDokfSxRKX1hc3luYyBnZXRUYXNrUmVzdWx0KCQsUSxKKXtyZXR1cm4gdGhpcy5fc2VydmVyLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDokfSxRLEopfWFzeW5jIGxpc3RUYXNrcygkLFEpe3JldHVybiB0aGlzLl9zZXJ2ZXIubGlzdFRhc2tzKCQ/e2N1cnNvcjokfTp2b2lkIDAsUSl9YXN5bmMgY2FuY2VsVGFzaygkLFEpe3JldHVybiB0aGlzLl9zZXJ2ZXIuY2FuY2VsVGFzayh7dGFza0lkOiR9LFEpfX1mdW5jdGlvbiBuUCgkLFEsSil7aWYoISQpdGhyb3cgRXJyb3IoYCR7Sn0gZG9lcyBub3Qgc3VwcG9ydCB0YXNrIGNyZWF0aW9uIChyZXF1aXJlZCBmb3IgJHtRfSlgKTtzd2l0Y2goUSl7Y2FzZVwidG9vbHMvY2FsbFwiOmlmKCEkLnRvb2xzPy5jYWxsKXRocm93IEVycm9yKGAke0p9IGRvZXMgbm90IHN1cHBvcnQgdGFzayBjcmVhdGlvbiBmb3IgdG9vbHMvY2FsbCAocmVxdWlyZWQgZm9yICR7UX0pYCk7YnJlYWs7ZGVmYXVsdDpicmVha319ZnVuY3Rpb24gclAoJCxRLEope2lmKCEkKXRocm93IEVycm9yKGAke0p9IGRvZXMgbm90IHN1cHBvcnQgdGFzayBjcmVhdGlvbiAocmVxdWlyZWQgZm9yICR7UX0pYCk7c3dpdGNoKFEpe2Nhc2VcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIjppZighJC5zYW1wbGluZz8uY3JlYXRlTWVzc2FnZSl0aHJvdyBFcnJvcihgJHtKfSBkb2VzIG5vdCBzdXBwb3J0IHRhc2sgY3JlYXRpb24gZm9yIHNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UgKHJlcXVpcmVkIGZvciAke1F9KWApO2JyZWFrO2Nhc2VcImVsaWNpdGF0aW9uL2NyZWF0ZVwiOmlmKCEkLmVsaWNpdGF0aW9uPy5jcmVhdGUpdGhyb3cgRXJyb3IoYCR7Sn0gZG9lcyBub3Qgc3VwcG9ydCB0YXNrIGNyZWF0aW9uIGZvciBlbGljaXRhdGlvbi9jcmVhdGUgKHJlcXVpcmVkIGZvciAke1F9KWApO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fWNsYXNzIE16IGV4dGVuZHMgd0J7Y29uc3RydWN0b3IoJCxRKXtzdXBlcihRKTtpZih0aGlzLl9zZXJ2ZXJJbmZvPSQsdGhpcy5fbG9nZ2luZ0xldmVscz1uZXcgTWFwLHRoaXMuTE9HX0xFVkVMX1NFVkVSSVRZPW5ldyBNYXAoSUoub3B0aW9ucy5tYXAoKEosWSk9PltKLFldKSksdGhpcy5pc01lc3NhZ2VJZ25vcmVkPShKLFkpPT57bGV0IFg9dGhpcy5fbG9nZ2luZ0xldmVscy5nZXQoWSk7cmV0dXJuIFg/dGhpcy5MT0dfTEVWRUxfU0VWRVJJVFkuZ2V0KEopPHRoaXMuTE9HX0xFVkVMX1NFVkVSSVRZLmdldChYKTohMX0sdGhpcy5fY2FwYWJpbGl0aWVzPVE/LmNhcGFiaWxpdGllcz8/e30sdGhpcy5faW5zdHJ1Y3Rpb25zPVE/Lmluc3RydWN0aW9ucyx0aGlzLl9qc29uU2NoZW1hVmFsaWRhdG9yPVE/Lmpzb25TY2hlbWFWYWxpZGF0b3I/P25ldyBGeix0aGlzLnNldFJlcXVlc3RIYW5kbGVyKHRWLChKKT0+dGhpcy5fb25pbml0aWFsaXplKEopKSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoYVYsKCk9PnRoaXMub25pbml0aWFsaXplZD8uKCkpLHRoaXMuX2NhcGFiaWxpdGllcy5sb2dnaW5nKXRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoWUIsYXN5bmMoSixZKT0+e2xldCBYPVkuc2Vzc2lvbklkfHxZLnJlcXVlc3RJbmZvPy5oZWFkZXJzW1wibWNwLXNlc3Npb24taWRcIl18fHZvaWQgMCx7bGV2ZWw6V309Si5wYXJhbXMsRz1JSi5zYWZlUGFyc2UoVyk7aWYoRy5zdWNjZXNzKXRoaXMuX2xvZ2dpbmdMZXZlbHMuc2V0KFgsRy5kYXRhKTtyZXR1cm57fX0pfWdldCBleHBlcmltZW50YWwoKXtpZighdGhpcy5fZXhwZXJpbWVudGFsKXRoaXMuX2V4cGVyaW1lbnRhbD17dGFza3M6bmV3IFp6KHRoaXMpfTtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudGFsfXJlZ2lzdGVyQ2FwYWJpbGl0aWVzKCQpe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciBjb25uZWN0aW5nIHRvIHRyYW5zcG9ydFwiKTt0aGlzLl9jYXBhYmlsaXRpZXM9SGoodGhpcy5fY2FwYWJpbGl0aWVzLCQpfXNldFJlcXVlc3RIYW5kbGVyKCQsUSl7bGV0IFk9QzEoJCk/Lm1ldGhvZDtpZighWSl0aHJvdyBFcnJvcihcIlNjaGVtYSBpcyBtaXNzaW5nIGEgbWV0aG9kIGxpdGVyYWxcIik7bGV0IFg7aWYoYTYoWSkpe2xldCBHPVk7WD1HLl96b2Q/LmRlZj8udmFsdWU/P0cudmFsdWV9ZWxzZXtsZXQgRz1ZO1g9Ry5fZGVmPy52YWx1ZT8/Ry52YWx1ZX1pZih0eXBlb2YgWCE9PVwic3RyaW5nXCIpdGhyb3cgRXJyb3IoXCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZ1wiKTtpZihYPT09XCJ0b29scy9jYWxsXCIpe2xldCBHPWFzeW5jKFUsSCk9PntsZXQgcT12MShxOSxVKTtpZighcS5zdWNjZXNzKXtsZXQgTj1xLmVycm9yIGluc3RhbmNlb2YgRXJyb3I/cS5lcnJvci5tZXNzYWdlOlN0cmluZyhxLmVycm9yKTt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYEludmFsaWQgdG9vbHMvY2FsbCByZXF1ZXN0OiAke059YCl9bGV0e3BhcmFtczpWfT1xLmRhdGEsQj1hd2FpdCBQcm9taXNlLnJlc29sdmUoUShVLEgpKTtpZihWLnRhc2spe2xldCBOPXYxKEg5LEIpO2lmKCFOLnN1Y2Nlc3Mpe2xldCB3PU4uZXJyb3IgaW5zdGFuY2VvZiBFcnJvcj9OLmVycm9yLm1lc3NhZ2U6U3RyaW5nKE4uZXJyb3IpO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgSW52YWxpZCB0YXNrIGNyZWF0aW9uIHJlc3VsdDogJHt3fWApfXJldHVybiBOLmRhdGF9bGV0IHo9djEoTlcsQik7aWYoIXouc3VjY2Vzcyl7bGV0IE49ei5lcnJvciBpbnN0YW5jZW9mIEVycm9yP3ouZXJyb3IubWVzc2FnZTpTdHJpbmcoei5lcnJvcik7dGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBJbnZhbGlkIHRvb2xzL2NhbGwgcmVzdWx0OiAke059YCl9cmV0dXJuIHouZGF0YX07cmV0dXJuIHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKCQsRyl9cmV0dXJuIHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKCQsUSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZCgkKXtzd2l0Y2goJCl7Y2FzZVwic2FtcGxpbmcvY3JlYXRlTWVzc2FnZVwiOmlmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwiZWxpY2l0YXRpb24vY3JlYXRlXCI6aWYoIXRoaXMuX2NsaWVudENhcGFiaWxpdGllcz8uZWxpY2l0YXRpb24pdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGVsaWNpdGF0aW9uIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJyb290cy9saXN0XCI6aWYoIXRoaXMuX2NsaWVudENhcGFiaWxpdGllcz8ucm9vdHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGxpc3Rpbmcgcm9vdHMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcInBpbmdcIjpicmVha319YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eSgkKXtzd2l0Y2goJCl7Y2FzZVwibm90aWZpY2F0aW9ucy9tZXNzYWdlXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy5sb2dnaW5nKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBsb2dnaW5nIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJub3RpZmljYXRpb25zL3Jlc291cmNlcy91cGRhdGVkXCI6Y2FzZVwibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy5yZXNvdXJjZXMpdGhyb3cgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IG5vdGlmeWluZyBhYm91dCByZXNvdXJjZXMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbm90aWZ5aW5nIG9mIHRvb2wgbGlzdCBjaGFuZ2VzIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJub3RpZmljYXRpb25zL3Byb21wdHMvbGlzdF9jaGFuZ2VkXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy5wcm9tcHRzKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBub3RpZnlpbmcgb2YgcHJvbXB0IGxpc3QgY2hhbmdlcyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZVwiOmlmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LmVsaWNpdGF0aW9uPy51cmwpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IFVSTCBlbGljaXRhdGlvbiAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwibm90aWZpY2F0aW9ucy9jYW5jZWxsZWRcIjpicmVhaztjYXNlXCJub3RpZmljYXRpb25zL3Byb2dyZXNzXCI6YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eSgkKXtpZighdGhpcy5fY2FwYWJpbGl0aWVzKXJldHVybjtzd2l0Y2goJCl7Y2FzZVwiY29tcGxldGlvbi9jb21wbGV0ZVwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMuY29tcGxldGlvbnMpdGhyb3cgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGNvbXBsZXRpb25zIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJsb2dnaW5nL3NldExldmVsXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy5sb2dnaW5nKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBsb2dnaW5nIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJwcm9tcHRzL2dldFwiOmNhc2VcInByb21wdHMvbGlzdFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMucHJvbXB0cyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcHJvbXB0cyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwicmVzb3VyY2VzL2xpc3RcIjpjYXNlXCJyZXNvdXJjZXMvdGVtcGxhdGVzL2xpc3RcIjpjYXNlXCJyZXNvdXJjZXMvcmVhZFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMucmVzb3VyY2VzKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCByZXNvdXJjZXMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcInRvb2xzL2NhbGxcIjpjYXNlXCJ0b29scy9saXN0XCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdG9vbHMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcInRhc2tzL2dldFwiOmNhc2VcInRhc2tzL2xpc3RcIjpjYXNlXCJ0YXNrcy9yZXN1bHRcIjpjYXNlXCJ0YXNrcy9jYW5jZWxcIjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRhc2tzKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0YXNrcyBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJwaW5nXCI6Y2FzZVwiaW5pdGlhbGl6ZVwiOmJyZWFrfX1hc3NlcnRUYXNrQ2FwYWJpbGl0eSgkKXtyUCh0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LnRhc2tzPy5yZXF1ZXN0cywkLFwiQ2xpZW50XCIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSgkKXtpZighdGhpcy5fY2FwYWJpbGl0aWVzKXJldHVybjtuUCh0aGlzLl9jYXBhYmlsaXRpZXMudGFza3M/LnJlcXVlc3RzLCQsXCJTZXJ2ZXJcIil9YXN5bmMgX29uaW5pdGlhbGl6ZSgkKXtsZXQgUT0kLnBhcmFtcy5wcm90b2NvbFZlcnNpb247cmV0dXJuIHRoaXMuX2NsaWVudENhcGFiaWxpdGllcz0kLnBhcmFtcy5jYXBhYmlsaXRpZXMsdGhpcy5fY2xpZW50VmVyc2lvbj0kLnBhcmFtcy5jbGllbnRJbmZvLHtwcm90b2NvbFZlcnNpb246VkwuaW5jbHVkZXMoUSk/UTpkVixjYXBhYmlsaXRpZXM6dGhpcy5nZXRDYXBhYmlsaXRpZXMoKSxzZXJ2ZXJJbmZvOnRoaXMuX3NlcnZlckluZm8sLi4udGhpcy5faW5zdHJ1Y3Rpb25zJiZ7aW5zdHJ1Y3Rpb25zOnRoaXMuX2luc3RydWN0aW9uc319fWdldENsaWVudENhcGFiaWxpdGllcygpe3JldHVybiB0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXN9Z2V0Q2xpZW50VmVyc2lvbigpe3JldHVybiB0aGlzLl9jbGllbnRWZXJzaW9ufWdldENhcGFiaWxpdGllcygpe3JldHVybiB0aGlzLl9jYXBhYmlsaXRpZXN9YXN5bmMgcGluZygpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDpcInBpbmdcIn0sczMpfWFzeW5jIGNyZWF0ZU1lc3NhZ2UoJCxRKXtpZigkLnRvb2xzfHwkLnRvb2xDaG9pY2Upe2lmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LnNhbXBsaW5nPy50b29scyl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHNhbXBsaW5nIHRvb2xzIGNhcGFiaWxpdHkuXCIpfWlmKCQubWVzc2FnZXMubGVuZ3RoPjApe2xldCBKPSQubWVzc2FnZXNbJC5tZXNzYWdlcy5sZW5ndGgtMV0sWT1BcnJheS5pc0FycmF5KEouY29udGVudCk/Si5jb250ZW50OltKLmNvbnRlbnRdLFg9WS5zb21lKChIKT0+SC50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKSxXPSQubWVzc2FnZXMubGVuZ3RoPjE/JC5tZXNzYWdlc1skLm1lc3NhZ2VzLmxlbmd0aC0yXTp2b2lkIDAsRz1XP0FycmF5LmlzQXJyYXkoVy5jb250ZW50KT9XLmNvbnRlbnQ6W1cuY29udGVudF06W10sVT1HLnNvbWUoKEgpPT5ILnR5cGU9PT1cInRvb2xfdXNlXCIpO2lmKFgpe2lmKFkuc29tZSgoSCk9PkgudHlwZSE9PVwidG9vbF9yZXN1bHRcIikpdGhyb3cgRXJyb3IoXCJUaGUgbGFzdCBtZXNzYWdlIG11c3QgY29udGFpbiBvbmx5IHRvb2xfcmVzdWx0IGNvbnRlbnQgaWYgYW55IGlzIHByZXNlbnRcIik7aWYoIVUpdGhyb3cgRXJyb3IoXCJ0b29sX3Jlc3VsdCBibG9ja3MgYXJlIG5vdCBtYXRjaGluZyBhbnkgdG9vbF91c2UgZnJvbSB0aGUgcHJldmlvdXMgbWVzc2FnZVwiKX1pZihVKXtsZXQgSD1uZXcgU2V0KEcuZmlsdGVyKChWKT0+Vi50eXBlPT09XCJ0b29sX3VzZVwiKS5tYXAoKFYpPT5WLmlkKSkscT1uZXcgU2V0KFkuZmlsdGVyKChWKT0+Vi50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKS5tYXAoKFYpPT5WLnRvb2xVc2VJZCkpO2lmKEguc2l6ZSE9PXEuc2l6ZXx8IVsuLi5IXS5ldmVyeSgoVik9PnEuaGFzKFYpKSl0aHJvdyBFcnJvcihcImlkcyBvZiB0b29sX3Jlc3VsdCBibG9ja3MgYW5kIHRvb2xfdXNlIGJsb2NrcyBmcm9tIHByZXZpb3VzIG1lc3NhZ2UgZG8gbm90IG1hdGNoXCIpfX1pZigkLnRvb2xzKXJldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDpcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIixwYXJhbXM6JH0sV0IsUSk7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwic2FtcGxpbmcvY3JlYXRlTWVzc2FnZVwiLHBhcmFtczokfSxSSixRKX1hc3luYyBlbGljaXRJbnB1dCgkLFEpe3N3aXRjaCgkLm1vZGU/P1wiZm9ybVwiKXtjYXNlXCJ1cmxcIjp7aWYoIXRoaXMuX2NsaWVudENhcGFiaWxpdGllcz8uZWxpY2l0YXRpb24/LnVybCl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHVybCBlbGljaXRhdGlvbi5cIik7bGV0IFk9JDtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJlbGljaXRhdGlvbi9jcmVhdGVcIixwYXJhbXM6WX0sVjksUSl9Y2FzZVwiZm9ybVwiOntpZighdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy5lbGljaXRhdGlvbj8uZm9ybSl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGZvcm0gZWxpY2l0YXRpb24uXCIpO2xldCBZPSQubW9kZT09PVwiZm9ybVwiPyQ6ey4uLiQsbW9kZTpcImZvcm1cIn0sWD1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDpcImVsaWNpdGF0aW9uL2NyZWF0ZVwiLHBhcmFtczpZfSxWOSxRKTtpZihYLmFjdGlvbj09PVwiYWNjZXB0XCImJlguY29udGVudCYmWS5yZXF1ZXN0ZWRTY2hlbWEpdHJ5e2xldCBHPXRoaXMuX2pzb25TY2hlbWFWYWxpZGF0b3IuZ2V0VmFsaWRhdG9yKFkucmVxdWVzdGVkU2NoZW1hKShYLmNvbnRlbnQpO2lmKCFHLnZhbGlkKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgRWxpY2l0YXRpb24gcmVzcG9uc2UgY29udGVudCBkb2VzIG5vdCBtYXRjaCByZXF1ZXN0ZWQgc2NoZW1hOiAke0cuZXJyb3JNZXNzYWdlfWApfWNhdGNoKFcpe2lmKFcgaW5zdGFuY2VvZiBjKXRocm93IFc7dGhyb3cgbmV3IGMoZC5JbnRlcm5hbEVycm9yLGBFcnJvciB2YWxpZGF0aW5nIGVsaWNpdGF0aW9uIHJlc3BvbnNlOiAke1cgaW5zdGFuY2VvZiBFcnJvcj9XLm1lc3NhZ2U6U3RyaW5nKFcpfWApfXJldHVybiBYfX19Y3JlYXRlRWxpY2l0YXRpb25Db21wbGV0aW9uTm90aWZpZXIoJCxRKXtpZighdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy5lbGljaXRhdGlvbj8udXJsKXRocm93IEVycm9yKFwiQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgVVJMIGVsaWNpdGF0aW9uIChyZXF1aXJlZCBmb3Igbm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSlcIik7cmV0dXJuKCk9PnRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6XCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlXCIscGFyYW1zOntlbGljaXRhdGlvbklkOiR9fSxRKX1hc3luYyBsaXN0Um9vdHMoJCxRKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJyb290cy9saXN0XCIscGFyYW1zOiR9LEdCLFEpfWFzeW5jIHNlbmRMb2dnaW5nTWVzc2FnZSgkLFEpe2lmKHRoaXMuX2NhcGFiaWxpdGllcy5sb2dnaW5nKXtpZighdGhpcy5pc01lc3NhZ2VJZ25vcmVkKCQubGV2ZWwsUSkpcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6XCJub3RpZmljYXRpb25zL21lc3NhZ2VcIixwYXJhbXM6JH0pfX1hc3luYyBzZW5kUmVzb3VyY2VVcGRhdGVkKCQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOlwibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZFwiLHBhcmFtczokfSl9YXN5bmMgc2VuZFJlc291cmNlTGlzdENoYW5nZWQoKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDpcIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL2xpc3RfY2hhbmdlZFwifSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZCgpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOlwibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWRcIn0pfWFzeW5jIHNlbmRQcm9tcHRMaXN0Q2hhbmdlZCgpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOlwibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZFwifSl9fXZhciB0UD1TeW1ib2wuZm9yKFwibWNwLmNvbXBsZXRhYmxlXCIpO2Z1bmN0aW9uIEx6KCQpe3JldHVybiEhJCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZ0UCBpbiAkfWZ1bmN0aW9uIGFQKCQpe3JldHVybiAkW3RQXT8uY29tcGxldGV9dmFyIG9QOyhmdW5jdGlvbigkKXskLkNvbXBsZXRhYmxlPVwiTWNwQ29tcGxldGFibGVcIn0pKG9QfHwob1A9e30pKTt2YXIgQXM9L15bQS1aYS16MC05Ll8tXXsxLDEyOH0kLztmdW5jdGlvbiBJcygkKXtsZXQgUT1bXTtpZigkLmxlbmd0aD09PTApcmV0dXJue2lzVmFsaWQ6ITEsd2FybmluZ3M6W1wiVG9vbCBuYW1lIGNhbm5vdCBiZSBlbXB0eVwiXX07aWYoJC5sZW5ndGg+MTI4KXJldHVybntpc1ZhbGlkOiExLHdhcm5pbmdzOltgVG9vbCBuYW1lIGV4Y2VlZHMgbWF4aW11bSBsZW5ndGggb2YgMTI4IGNoYXJhY3RlcnMgKGN1cnJlbnQ6ICR7JC5sZW5ndGh9KWBdfTtpZigkLmluY2x1ZGVzKFwiIFwiKSlRLnB1c2goXCJUb29sIG5hbWUgY29udGFpbnMgc3BhY2VzLCB3aGljaCBtYXkgY2F1c2UgcGFyc2luZyBpc3N1ZXNcIik7aWYoJC5pbmNsdWRlcyhcIixcIikpUS5wdXNoKFwiVG9vbCBuYW1lIGNvbnRhaW5zIGNvbW1hcywgd2hpY2ggbWF5IGNhdXNlIHBhcnNpbmcgaXNzdWVzXCIpO2lmKCQuc3RhcnRzV2l0aChcIi1cIil8fCQuZW5kc1dpdGgoXCItXCIpKVEucHVzaChcIlRvb2wgbmFtZSBzdGFydHMgb3IgZW5kcyB3aXRoIGEgZGFzaCwgd2hpY2ggbWF5IGNhdXNlIHBhcnNpbmcgaXNzdWVzIGluIHNvbWUgY29udGV4dHNcIik7aWYoJC5zdGFydHNXaXRoKFwiLlwiKXx8JC5lbmRzV2l0aChcIi5cIikpUS5wdXNoKFwiVG9vbCBuYW1lIHN0YXJ0cyBvciBlbmRzIHdpdGggYSBkb3QsIHdoaWNoIG1heSBjYXVzZSBwYXJzaW5nIGlzc3VlcyBpbiBzb21lIGNvbnRleHRzXCIpO2lmKCFBcy50ZXN0KCQpKXtsZXQgSj0kLnNwbGl0KFwiXCIpLmZpbHRlcigoWSk9PiEvW0EtWmEtejAtOS5fLV0vLnRlc3QoWSkpLmZpbHRlcigoWSxYLFcpPT5XLmluZGV4T2YoWSk9PT1YKTtyZXR1cm4gUS5wdXNoKGBUb29sIG5hbWUgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiAke0oubWFwKChZKT0+YFwiJHtZfVwiYCkuam9pbihcIiwgXCIpfWAsXCJBbGxvd2VkIGNoYXJhY3RlcnMgYXJlOiBBLVosIGEteiwgMC05LCB1bmRlcnNjb3JlIChfKSwgZGFzaCAoLSksIGFuZCBkb3QgKC4pXCIpLHtpc1ZhbGlkOiExLHdhcm5pbmdzOlF9fXJldHVybntpc1ZhbGlkOiEwLHdhcm5pbmdzOlF9fWZ1bmN0aW9uIFJzKCQsUSl7aWYoUS5sZW5ndGg+MCl7Y29uc29sZS53YXJuKGBUb29sIG5hbWUgdmFsaWRhdGlvbiB3YXJuaW5nIGZvciBcIiR7JH1cIjpgKTtmb3IobGV0IEogb2YgUSljb25zb2xlLndhcm4oYCAgLSAke0p9YCk7Y29uc29sZS53YXJuKFwiVG9vbCByZWdpc3RyYXRpb24gd2lsbCBwcm9jZWVkLCBidXQgdGhpcyBtYXkgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuXCIpLGNvbnNvbGUud2FybihcIkNvbnNpZGVyIHVwZGF0aW5nIHRoZSB0b29sIG5hbWUgdG8gY29uZm9ybSB0byB0aGUgTUNQIHRvb2wgbmFtaW5nIHN0YW5kYXJkLlwiKSxjb25zb2xlLndhcm4oXCJTZWUgU0VQOiBTcGVjaWZ5IEZvcm1hdCBmb3IgVG9vbCBOYW1lcyAoaHR0cHM6Ly9naXRodWIuY29tL21vZGVsY29udGV4dHByb3RvY29sL21vZGVsY29udGV4dHByb3RvY29sL2lzc3Vlcy85ODYpIGZvciBtb3JlIGRldGFpbHMuXCIpfX1mdW5jdGlvbiBqeigkKXtsZXQgUT1JcygkKTtyZXR1cm4gUnMoJCxRLndhcm5pbmdzKSxRLmlzVmFsaWR9Y2xhc3MgQXp7Y29uc3RydWN0b3IoJCl7dGhpcy5fbWNwU2VydmVyPSR9cmVnaXN0ZXJUb29sVGFzaygkLFEsSil7bGV0IFk9e3Rhc2tTdXBwb3J0OlwicmVxdWlyZWRcIiwuLi5RLmV4ZWN1dGlvbn07aWYoWS50YXNrU3VwcG9ydD09PVwiZm9yYmlkZGVuXCIpdGhyb3cgRXJyb3IoYENhbm5vdCByZWdpc3RlciB0YXNrLWJhc2VkIHRvb2wgJyR7JH0nIHdpdGggdGFza1N1cHBvcnQgJ2ZvcmJpZGRlbicuIFVzZSByZWdpc3RlclRvb2woKSBpbnN0ZWFkLmApO3JldHVybiB0aGlzLl9tY3BTZXJ2ZXIuX2NyZWF0ZVJlZ2lzdGVyZWRUb29sKCQsUS50aXRsZSxRLmRlc2NyaXB0aW9uLFEuaW5wdXRTY2hlbWEsUS5vdXRwdXRTY2hlbWEsUS5hbm5vdGF0aW9ucyxZLFEuX21ldGEsSil9fWNsYXNzIFJ6e2NvbnN0cnVjdG9yKCQsUSl7dGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlcz17fSx0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXM9e30sdGhpcy5fcmVnaXN0ZXJlZFRvb2xzPXt9LHRoaXMuX3JlZ2lzdGVyZWRQcm9tcHRzPXt9LHRoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExLHRoaXMuX2NvbXBsZXRpb25IYW5kbGVySW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcmVzb3VyY2VIYW5kbGVyc0luaXRpYWxpemVkPSExLHRoaXMuX3Byb21wdEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5zZXJ2ZXI9bmV3IE16KCQsUSl9Z2V0IGV4cGVyaW1lbnRhbCgpe2lmKCF0aGlzLl9leHBlcmltZW50YWwpdGhpcy5fZXhwZXJpbWVudGFsPXt0YXNrczpuZXcgQXoodGhpcyl9O3JldHVybiB0aGlzLl9leHBlcmltZW50YWx9YXN5bmMgY29ubmVjdCgkKXtyZXR1cm4gYXdhaXQgdGhpcy5zZXJ2ZXIuY29ubmVjdCgkKX1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuc2VydmVyLmNsb3NlKCl9c2V0VG9vbFJlcXVlc3RIYW5kbGVycygpe2lmKHRoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkKXJldHVybjt0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMSh6VykpLHRoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKHE5KSksdGhpcy5zZXJ2ZXIucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcih6VywoKT0+KHt0b29sczpPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkVG9vbHMpLmZpbHRlcigoWywkXSk9PiQuZW5hYmxlZCkubWFwKChbJCxRXSk9PntsZXQgSj17bmFtZTokLHRpdGxlOlEudGl0bGUsZGVzY3JpcHRpb246US5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTooKCk9PntsZXQgWT1YOShRLmlucHV0U2NoZW1hKTtyZXR1cm4gWT9CQihZLHtzdHJpY3RVbmlvbnM6ITAscGlwZVN0cmF0ZWd5OlwiaW5wdXRcIn0pOlBzfSkoKSxhbm5vdGF0aW9uczpRLmFubm90YXRpb25zLGV4ZWN1dGlvbjpRLmV4ZWN1dGlvbixfbWV0YTpRLl9tZXRhfTtpZihRLm91dHB1dFNjaGVtYSl7bGV0IFk9WDkoUS5vdXRwdXRTY2hlbWEpO2lmKFkpSi5vdXRwdXRTY2hlbWE9QkIoWSx7c3RyaWN0VW5pb25zOiEwLHBpcGVTdHJhdGVneTpcIm91dHB1dFwifSl9cmV0dXJuIEp9KX0pKSx0aGlzLnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihxOSxhc3luYygkLFEpPT57dHJ5e2xldCBKPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1skLnBhcmFtcy5uYW1lXTtpZighSil0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFRvb2wgJHskLnBhcmFtcy5uYW1lfSBub3QgZm91bmRgKTtpZighSi5lbmFibGVkKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgVG9vbCAkeyQucGFyYW1zLm5hbWV9IGRpc2FibGVkYCk7bGV0IFk9ISEkLnBhcmFtcy50YXNrLFg9Si5leGVjdXRpb24/LnRhc2tTdXBwb3J0LFc9XCJjcmVhdGVUYXNrXCJpbiBKLmhhbmRsZXI7aWYoKFg9PT1cInJlcXVpcmVkXCJ8fFg9PT1cIm9wdGlvbmFsXCIpJiYhVyl0aHJvdyBuZXcgYyhkLkludGVybmFsRXJyb3IsYFRvb2wgJHskLnBhcmFtcy5uYW1lfSBoYXMgdGFza1N1cHBvcnQgJyR7WH0nIGJ1dCB3YXMgbm90IHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclRvb2xUYXNrYCk7aWYoWD09PVwicmVxdWlyZWRcIiYmIVkpdGhyb3cgbmV3IGMoZC5NZXRob2ROb3RGb3VuZCxgVG9vbCAkeyQucGFyYW1zLm5hbWV9IHJlcXVpcmVzIHRhc2sgYXVnbWVudGF0aW9uICh0YXNrU3VwcG9ydDogJ3JlcXVpcmVkJylgKTtpZihYPT09XCJvcHRpb25hbFwiJiYhWSYmVylyZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVBdXRvbWF0aWNUYXNrUG9sbGluZyhKLCQsUSk7bGV0IEc9YXdhaXQgdGhpcy52YWxpZGF0ZVRvb2xJbnB1dChKLCQucGFyYW1zLmFyZ3VtZW50cywkLnBhcmFtcy5uYW1lKSxVPWF3YWl0IHRoaXMuZXhlY3V0ZVRvb2xIYW5kbGVyKEosRyxRKTtpZihZKXJldHVybiBVO3JldHVybiBhd2FpdCB0aGlzLnZhbGlkYXRlVG9vbE91dHB1dChKLFUsJC5wYXJhbXMubmFtZSksVX1jYXRjaChKKXtpZihKIGluc3RhbmNlb2YgYyl7aWYoSi5jb2RlPT09ZC5VcmxFbGljaXRhdGlvblJlcXVpcmVkKXRocm93IEp9cmV0dXJuIHRoaXMuY3JlYXRlVG9vbEVycm9yKEogaW5zdGFuY2VvZiBFcnJvcj9KLm1lc3NhZ2U6U3RyaW5nKEopKX19KSx0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMH1jcmVhdGVUb29sRXJyb3IoJCl7cmV0dXJue2NvbnRlbnQ6W3t0eXBlOlwidGV4dFwiLHRleHQ6JH1dLGlzRXJyb3I6ITB9fWFzeW5jIHZhbGlkYXRlVG9vbElucHV0KCQsUSxKKXtpZighJC5pbnB1dFNjaGVtYSlyZXR1cm47bGV0IFg9WDkoJC5pbnB1dFNjaGVtYSk/PyQuaW5wdXRTY2hlbWEsVz1hd2FpdCB2MyhYLFEpO2lmKCFXLnN1Y2Nlc3Mpe2xldCBHPVwiZXJyb3JcImluIFc/Vy5lcnJvcjpcIlVua25vd24gZXJyb3JcIixVPUMzKEcpO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgSW5wdXQgdmFsaWRhdGlvbiBlcnJvcjogSW52YWxpZCBhcmd1bWVudHMgZm9yIHRvb2wgJHtKfTogJHtVfWApfXJldHVybiBXLmRhdGF9YXN5bmMgdmFsaWRhdGVUb29sT3V0cHV0KCQsUSxKKXtpZighJC5vdXRwdXRTY2hlbWEpcmV0dXJuO2lmKCEoXCJjb250ZW50XCJpbiBRKSlyZXR1cm47aWYoUS5pc0Vycm9yKXJldHVybjtpZighUS5zdHJ1Y3R1cmVkQ29udGVudCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYE91dHB1dCB2YWxpZGF0aW9uIGVycm9yOiBUb29sICR7Sn0gaGFzIGFuIG91dHB1dCBzY2hlbWEgYnV0IG5vIHN0cnVjdHVyZWQgY29udGVudCB3YXMgcHJvdmlkZWRgKTtsZXQgWT1YOSgkLm91dHB1dFNjaGVtYSksWD1hd2FpdCB2MyhZLFEuc3RydWN0dXJlZENvbnRlbnQpO2lmKCFYLnN1Y2Nlc3Mpe2xldCBXPVwiZXJyb3JcImluIFg/WC5lcnJvcjpcIlVua25vd24gZXJyb3JcIixHPUMzKFcpO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgT3V0cHV0IHZhbGlkYXRpb24gZXJyb3I6IEludmFsaWQgc3RydWN0dXJlZCBjb250ZW50IGZvciB0b29sICR7Sn06ICR7R31gKX19YXN5bmMgZXhlY3V0ZVRvb2xIYW5kbGVyKCQsUSxKKXtsZXQgWT0kLmhhbmRsZXI7aWYoXCJjcmVhdGVUYXNrXCJpbiBZKXtpZighSi50YXNrU3RvcmUpdGhyb3cgRXJyb3IoXCJObyB0YXNrIHN0b3JlIHByb3ZpZGVkLlwiKTtsZXQgVz17Li4uSix0YXNrU3RvcmU6Si50YXNrU3RvcmV9O2lmKCQuaW5wdXRTY2hlbWEpcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShZLmNyZWF0ZVRhc2soUSxXKSk7ZWxzZSByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFkuY3JlYXRlVGFzayhXKSl9aWYoJC5pbnB1dFNjaGVtYSlyZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFkoUSxKKSk7ZWxzZSByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFkoSikpfWFzeW5jIGhhbmRsZUF1dG9tYXRpY1Rhc2tQb2xsaW5nKCQsUSxKKXtpZighSi50YXNrU3RvcmUpdGhyb3cgRXJyb3IoXCJObyB0YXNrIHN0b3JlIHByb3ZpZGVkIGZvciB0YXNrLWNhcGFibGUgdG9vbC5cIik7bGV0IFk9YXdhaXQgdGhpcy52YWxpZGF0ZVRvb2xJbnB1dCgkLFEucGFyYW1zLmFyZ3VtZW50cyxRLnBhcmFtcy5uYW1lKSxYPSQuaGFuZGxlcixXPXsuLi5KLHRhc2tTdG9yZTpKLnRhc2tTdG9yZX0sRz1ZP2F3YWl0IFByb21pc2UucmVzb2x2ZShYLmNyZWF0ZVRhc2soWSxXKSk6YXdhaXQgUHJvbWlzZS5yZXNvbHZlKFguY3JlYXRlVGFzayhXKSksVT1HLnRhc2sudGFza0lkLEg9Ry50YXNrLHE9SC5wb2xsSW50ZXJ2YWw/PzUwMDA7d2hpbGUoSC5zdGF0dXMhPT1cImNvbXBsZXRlZFwiJiZILnN0YXR1cyE9PVwiZmFpbGVkXCImJkguc3RhdHVzIT09XCJjYW5jZWxsZWRcIil7YXdhaXQgbmV3IFByb21pc2UoKEIpPT5zZXRUaW1lb3V0KEIscSkpO2xldCBWPWF3YWl0IEoudGFza1N0b3JlLmdldFRhc2soVSk7aWYoIVYpdGhyb3cgbmV3IGMoZC5JbnRlcm5hbEVycm9yLGBUYXNrICR7VX0gbm90IGZvdW5kIGR1cmluZyBwb2xsaW5nYCk7SD1WfXJldHVybiBhd2FpdCBKLnRhc2tTdG9yZS5nZXRUYXNrUmVzdWx0KFUpfXNldENvbXBsZXRpb25SZXF1ZXN0SGFuZGxlcigpe2lmKHRoaXMuX2NvbXBsZXRpb25IYW5kbGVySW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKHdXKSksdGhpcy5zZXJ2ZXIucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe2NvbXBsZXRpb25zOnt9fSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIod1csYXN5bmMoJCk9Pntzd2l0Y2goJC5wYXJhbXMucmVmLnR5cGUpe2Nhc2VcInJlZi9wcm9tcHRcIjpyZXR1cm4gUEwoJCksdGhpcy5oYW5kbGVQcm9tcHRDb21wbGV0aW9uKCQsJC5wYXJhbXMucmVmKTtjYXNlXCJyZWYvcmVzb3VyY2VcIjpyZXR1cm4gRUwoJCksdGhpcy5oYW5kbGVSZXNvdXJjZUNvbXBsZXRpb24oJCwkLnBhcmFtcy5yZWYpO2RlZmF1bHQ6dGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBJbnZhbGlkIGNvbXBsZXRpb24gcmVmZXJlbmNlOiAkeyQucGFyYW1zLnJlZn1gKX19KSx0aGlzLl9jb21wbGV0aW9uSGFuZGxlckluaXRpYWxpemVkPSEwfWFzeW5jIGhhbmRsZVByb21wdENvbXBsZXRpb24oJCxRKXtsZXQgSj10aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1tRLm5hbWVdO2lmKCFKKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgUHJvbXB0ICR7US5uYW1lfSBub3QgZm91bmRgKTtpZighSi5lbmFibGVkKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgUHJvbXB0ICR7US5uYW1lfSBkaXNhYmxlZGApO2lmKCFKLmFyZ3NTY2hlbWEpcmV0dXJuIHRKO2xldCBYPUMxKEouYXJnc1NjaGVtYSk/LlskLnBhcmFtcy5hcmd1bWVudC5uYW1lXTtpZighTHooWCkpcmV0dXJuIHRKO2xldCBXPWFQKFgpO2lmKCFXKXJldHVybiB0SjtsZXQgRz1hd2FpdCBXKCQucGFyYW1zLmFyZ3VtZW50LnZhbHVlLCQucGFyYW1zLmNvbnRleHQpO3JldHVybiBlUChHKX1hc3luYyBoYW5kbGVSZXNvdXJjZUNvbXBsZXRpb24oJCxRKXtsZXQgSj1PYmplY3QudmFsdWVzKHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlcykuZmluZCgoVyk9PlcucmVzb3VyY2VUZW1wbGF0ZS51cmlUZW1wbGF0ZS50b1N0cmluZygpPT09US51cmkpO2lmKCFKKXtpZih0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW1EudXJpXSlyZXR1cm4gdEo7dGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBSZXNvdXJjZSB0ZW1wbGF0ZSAkeyQucGFyYW1zLnJlZi51cml9IG5vdCBmb3VuZGApfWxldCBZPUoucmVzb3VyY2VUZW1wbGF0ZS5jb21wbGV0ZUNhbGxiYWNrKCQucGFyYW1zLmFyZ3VtZW50Lm5hbWUpO2lmKCFZKXJldHVybiB0SjtsZXQgWD1hd2FpdCBZKCQucGFyYW1zLmFyZ3VtZW50LnZhbHVlLCQucGFyYW1zLmNvbnRleHQpO3JldHVybiBlUChYKX1zZXRSZXNvdXJjZVJlcXVlc3RIYW5kbGVycygpe2lmKHRoaXMuX3Jlc291cmNlSGFuZGxlcnNJbml0aWFsaXplZClyZXR1cm47dGhpcy5zZXJ2ZXIuYXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIoYzEoSFcpKSx0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMShLVykpLHRoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKHFXKSksdGhpcy5zZXJ2ZXIucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Jlc291cmNlczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoSFcsYXN5bmMoJCxRKT0+e2xldCBKPU9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZXMpLmZpbHRlcigoW1gsV10pPT5XLmVuYWJsZWQpLm1hcCgoW1gsV10pPT4oe3VyaTpYLG5hbWU6Vy5uYW1lLC4uLlcubWV0YWRhdGF9KSksWT1bXTtmb3IobGV0IFggb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXMpKXtpZighWC5yZXNvdXJjZVRlbXBsYXRlLmxpc3RDYWxsYmFjayljb250aW51ZTtsZXQgVz1hd2FpdCBYLnJlc291cmNlVGVtcGxhdGUubGlzdENhbGxiYWNrKFEpO2ZvcihsZXQgRyBvZiBXLnJlc291cmNlcylZLnB1c2goey4uLlgubWV0YWRhdGEsLi4uR30pfXJldHVybntyZXNvdXJjZXM6Wy4uLkosLi4uWV19fSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoS1csYXN5bmMoKT0+e3JldHVybntyZXNvdXJjZVRlbXBsYXRlczpPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXMpLm1hcCgoW1EsSl0pPT4oe25hbWU6USx1cmlUZW1wbGF0ZTpKLnJlc291cmNlVGVtcGxhdGUudXJpVGVtcGxhdGUudG9TdHJpbmcoKSwuLi5KLm1ldGFkYXRhfSkpfX0pLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKHFXLGFzeW5jKCQsUSk9PntsZXQgSj1uZXcgVVJMKCQucGFyYW1zLnVyaSksWT10aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW0oudG9TdHJpbmcoKV07aWYoWSl7aWYoIVkuZW5hYmxlZCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFJlc291cmNlICR7Sn0gZGlzYWJsZWRgKTtyZXR1cm4gWS5yZWFkQ2FsbGJhY2soSixRKX1mb3IobGV0IFggb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXMpKXtsZXQgVz1YLnJlc291cmNlVGVtcGxhdGUudXJpVGVtcGxhdGUubWF0Y2goSi50b1N0cmluZygpKTtpZihXKXJldHVybiBYLnJlYWRDYWxsYmFjayhKLFcsUSl9dGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBSZXNvdXJjZSAke0p9IG5vdCBmb3VuZGApfSksdGhpcy5fcmVzb3VyY2VIYW5kbGVyc0luaXRpYWxpemVkPSEwfXNldFByb21wdFJlcXVlc3RIYW5kbGVycygpe2lmKHRoaXMuX3Byb21wdEhhbmRsZXJzSW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKFZXKSksdGhpcy5zZXJ2ZXIuYXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIoYzEoQlcpKSx0aGlzLnNlcnZlci5yZWdpc3RlckNhcGFiaWxpdGllcyh7cHJvbXB0czp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoVlcsKCk9Pih7cHJvbXB0czpPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkUHJvbXB0cykuZmlsdGVyKChbLCRdKT0+JC5lbmFibGVkKS5tYXAoKFskLFFdKT0+e3JldHVybntuYW1lOiQsdGl0bGU6US50aXRsZSxkZXNjcmlwdGlvbjpRLmRlc2NyaXB0aW9uLGFyZ3VtZW50czpRLmFyZ3NTY2hlbWE/RXMoUS5hcmdzU2NoZW1hKTp2b2lkIDB9fSl9KSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQlcsYXN5bmMoJCxRKT0+e2xldCBKPXRoaXMuX3JlZ2lzdGVyZWRQcm9tcHRzWyQucGFyYW1zLm5hbWVdO2lmKCFKKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgUHJvbXB0ICR7JC5wYXJhbXMubmFtZX0gbm90IGZvdW5kYCk7aWYoIUouZW5hYmxlZCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFByb21wdCAkeyQucGFyYW1zLm5hbWV9IGRpc2FibGVkYCk7aWYoSi5hcmdzU2NoZW1hKXtsZXQgWT1YOShKLmFyZ3NTY2hlbWEpLFg9YXdhaXQgdjMoWSwkLnBhcmFtcy5hcmd1bWVudHMpO2lmKCFYLnN1Y2Nlc3Mpe2xldCBVPVwiZXJyb3JcImluIFg/WC5lcnJvcjpcIlVua25vd24gZXJyb3JcIixIPUMzKFUpO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgSW52YWxpZCBhcmd1bWVudHMgZm9yIHByb21wdCAkeyQucGFyYW1zLm5hbWV9OiAke0h9YCl9bGV0IFc9WC5kYXRhLEc9Si5jYWxsYmFjaztyZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKEcoVyxRKSl9ZWxzZXtsZXQgWT1KLmNhbGxiYWNrO3JldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoWShRKSl9fSksdGhpcy5fcHJvbXB0SGFuZGxlcnNJbml0aWFsaXplZD0hMH1yZXNvdXJjZSgkLFEsLi4uSil7bGV0IFk7aWYodHlwZW9mIEpbMF09PT1cIm9iamVjdFwiKVk9Si5zaGlmdCgpO2xldCBYPUpbMF07aWYodHlwZW9mIFE9PT1cInN0cmluZ1wiKXtpZih0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW1FdKXRocm93IEVycm9yKGBSZXNvdXJjZSAke1F9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBXPXRoaXMuX2NyZWF0ZVJlZ2lzdGVyZWRSZXNvdXJjZSgkLHZvaWQgMCxRLFksWCk7cmV0dXJuIHRoaXMuc2V0UmVzb3VyY2VSZXF1ZXN0SGFuZGxlcnMoKSx0aGlzLnNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCksV31lbHNle2lmKHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlc1skXSl0aHJvdyBFcnJvcihgUmVzb3VyY2UgdGVtcGxhdGUgJHskfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgVz10aGlzLl9jcmVhdGVSZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZSgkLHZvaWQgMCxRLFksWCk7cmV0dXJuIHRoaXMuc2V0UmVzb3VyY2VSZXF1ZXN0SGFuZGxlcnMoKSx0aGlzLnNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCksV319cmVnaXN0ZXJSZXNvdXJjZSgkLFEsSixZKXtpZih0eXBlb2YgUT09PVwic3RyaW5nXCIpe2lmKHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZXNbUV0pdGhyb3cgRXJyb3IoYFJlc291cmNlICR7UX0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IFg9dGhpcy5fY3JlYXRlUmVnaXN0ZXJlZFJlc291cmNlKCQsSi50aXRsZSxRLEosWSk7cmV0dXJuIHRoaXMuc2V0UmVzb3VyY2VSZXF1ZXN0SGFuZGxlcnMoKSx0aGlzLnNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCksWH1lbHNle2lmKHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlc1skXSl0aHJvdyBFcnJvcihgUmVzb3VyY2UgdGVtcGxhdGUgJHskfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgWD10aGlzLl9jcmVhdGVSZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZSgkLEoudGl0bGUsUSxKLFkpO3JldHVybiB0aGlzLnNldFJlc291cmNlUmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUmVzb3VyY2VMaXN0Q2hhbmdlZCgpLFh9fV9jcmVhdGVSZWdpc3RlcmVkUmVzb3VyY2UoJCxRLEosWSxYKXtsZXQgVz17bmFtZTokLHRpdGxlOlEsbWV0YWRhdGE6WSxyZWFkQ2FsbGJhY2s6WCxlbmFibGVkOiEwLGRpc2FibGU6KCk9PlcudXBkYXRlKHtlbmFibGVkOiExfSksZW5hYmxlOigpPT5XLnVwZGF0ZSh7ZW5hYmxlZDohMH0pLHJlbW92ZTooKT0+Vy51cGRhdGUoe3VyaTpudWxsfSksdXBkYXRlOihHKT0+e2lmKHR5cGVvZiBHLnVyaTxcInVcIiYmRy51cmkhPT1KKXtpZihkZWxldGUgdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tKXSxHLnVyaSl0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW0cudXJpXT1XfWlmKHR5cGVvZiBHLm5hbWU8XCJ1XCIpVy5uYW1lPUcubmFtZTtpZih0eXBlb2YgRy50aXRsZTxcInVcIilXLnRpdGxlPUcudGl0bGU7aWYodHlwZW9mIEcubWV0YWRhdGE8XCJ1XCIpVy5tZXRhZGF0YT1HLm1ldGFkYXRhO2lmKHR5cGVvZiBHLmNhbGxiYWNrPFwidVwiKVcucmVhZENhbGxiYWNrPUcuY2FsbGJhY2s7aWYodHlwZW9mIEcuZW5hYmxlZDxcInVcIilXLmVuYWJsZWQ9Ry5lbmFibGVkO3RoaXMuc2VuZFJlc291cmNlTGlzdENoYW5nZWQoKX19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW0pdPVcsV31fY3JlYXRlUmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGUoJCxRLEosWSxYKXtsZXQgVz17cmVzb3VyY2VUZW1wbGF0ZTpKLHRpdGxlOlEsbWV0YWRhdGE6WSxyZWFkQ2FsbGJhY2s6WCxlbmFibGVkOiEwLGRpc2FibGU6KCk9PlcudXBkYXRlKHtlbmFibGVkOiExfSksZW5hYmxlOigpPT5XLnVwZGF0ZSh7ZW5hYmxlZDohMH0pLHJlbW92ZTooKT0+Vy51cGRhdGUoe25hbWU6bnVsbH0pLHVwZGF0ZTooSCk9PntpZih0eXBlb2YgSC5uYW1lPFwidVwiJiZILm5hbWUhPT0kKXtpZihkZWxldGUgdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzWyRdLEgubmFtZSl0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXNbSC5uYW1lXT1XfWlmKHR5cGVvZiBILnRpdGxlPFwidVwiKVcudGl0bGU9SC50aXRsZTtpZih0eXBlb2YgSC50ZW1wbGF0ZTxcInVcIilXLnJlc291cmNlVGVtcGxhdGU9SC50ZW1wbGF0ZTtpZih0eXBlb2YgSC5tZXRhZGF0YTxcInVcIilXLm1ldGFkYXRhPUgubWV0YWRhdGE7aWYodHlwZW9mIEguY2FsbGJhY2s8XCJ1XCIpVy5yZWFkQ2FsbGJhY2s9SC5jYWxsYmFjaztpZih0eXBlb2YgSC5lbmFibGVkPFwidVwiKVcuZW5hYmxlZD1ILmVuYWJsZWQ7dGhpcy5zZW5kUmVzb3VyY2VMaXN0Q2hhbmdlZCgpfX07dGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzWyRdPVc7bGV0IEc9Si51cmlUZW1wbGF0ZS52YXJpYWJsZU5hbWVzO2lmKEFycmF5LmlzQXJyYXkoRykmJkcuc29tZSgoSCk9PiEhSi5jb21wbGV0ZUNhbGxiYWNrKEgpKSl0aGlzLnNldENvbXBsZXRpb25SZXF1ZXN0SGFuZGxlcigpO3JldHVybiBXfV9jcmVhdGVSZWdpc3RlcmVkUHJvbXB0KCQsUSxKLFksWCl7bGV0IFc9e3RpdGxlOlEsZGVzY3JpcHRpb246SixhcmdzU2NoZW1hOlk9PT12b2lkIDA/dm9pZCAwOkMwKFkpLGNhbGxiYWNrOlgsZW5hYmxlZDohMCxkaXNhYmxlOigpPT5XLnVwZGF0ZSh7ZW5hYmxlZDohMX0pLGVuYWJsZTooKT0+Vy51cGRhdGUoe2VuYWJsZWQ6ITB9KSxyZW1vdmU6KCk9PlcudXBkYXRlKHtuYW1lOm51bGx9KSx1cGRhdGU6KEcpPT57aWYodHlwZW9mIEcubmFtZTxcInVcIiYmRy5uYW1lIT09JCl7aWYoZGVsZXRlIHRoaXMuX3JlZ2lzdGVyZWRQcm9tcHRzWyRdLEcubmFtZSl0aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1tHLm5hbWVdPVd9aWYodHlwZW9mIEcudGl0bGU8XCJ1XCIpVy50aXRsZT1HLnRpdGxlO2lmKHR5cGVvZiBHLmRlc2NyaXB0aW9uPFwidVwiKVcuZGVzY3JpcHRpb249Ry5kZXNjcmlwdGlvbjtpZih0eXBlb2YgRy5hcmdzU2NoZW1hPFwidVwiKVcuYXJnc1NjaGVtYT1DMChHLmFyZ3NTY2hlbWEpO2lmKHR5cGVvZiBHLmNhbGxiYWNrPFwidVwiKVcuY2FsbGJhY2s9Ry5jYWxsYmFjaztpZih0eXBlb2YgRy5lbmFibGVkPFwidVwiKVcuZW5hYmxlZD1HLmVuYWJsZWQ7dGhpcy5zZW5kUHJvbXB0TGlzdENoYW5nZWQoKX19O2lmKHRoaXMuX3JlZ2lzdGVyZWRQcm9tcHRzWyRdPVcsWSl7aWYoT2JqZWN0LnZhbHVlcyhZKS5zb21lKChVKT0+e2xldCBIPVUgaW5zdGFuY2VvZiBvNj9VLl9kZWY/LmlubmVyVHlwZTpVO3JldHVybiBMeihIKX0pKXRoaXMuc2V0Q29tcGxldGlvblJlcXVlc3RIYW5kbGVyKCl9cmV0dXJuIFd9X2NyZWF0ZVJlZ2lzdGVyZWRUb29sKCQsUSxKLFksWCxXLEcsVSxIKXtqeigkKTtsZXQgcT17dGl0bGU6USxkZXNjcmlwdGlvbjpKLGlucHV0U2NoZW1hOnNQKFkpLG91dHB1dFNjaGVtYTpzUChYKSxhbm5vdGF0aW9uczpXLGV4ZWN1dGlvbjpHLF9tZXRhOlUsaGFuZGxlcjpILGVuYWJsZWQ6ITAsZGlzYWJsZTooKT0+cS51cGRhdGUoe2VuYWJsZWQ6ITF9KSxlbmFibGU6KCk9PnEudXBkYXRlKHtlbmFibGVkOiEwfSkscmVtb3ZlOigpPT5xLnVwZGF0ZSh7bmFtZTpudWxsfSksdXBkYXRlOihWKT0+e2lmKHR5cGVvZiBWLm5hbWU8XCJ1XCImJlYubmFtZSE9PSQpe2lmKHR5cGVvZiBWLm5hbWU9PT1cInN0cmluZ1wiKWp6KFYubmFtZSk7aWYoZGVsZXRlIHRoaXMuX3JlZ2lzdGVyZWRUb29sc1skXSxWLm5hbWUpdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW1YubmFtZV09cX1pZih0eXBlb2YgVi50aXRsZTxcInVcIilxLnRpdGxlPVYudGl0bGU7aWYodHlwZW9mIFYuZGVzY3JpcHRpb248XCJ1XCIpcS5kZXNjcmlwdGlvbj1WLmRlc2NyaXB0aW9uO2lmKHR5cGVvZiBWLnBhcmFtc1NjaGVtYTxcInVcIilxLmlucHV0U2NoZW1hPUMwKFYucGFyYW1zU2NoZW1hKTtpZih0eXBlb2YgVi5vdXRwdXRTY2hlbWE8XCJ1XCIpcS5vdXRwdXRTY2hlbWE9QzAoVi5vdXRwdXRTY2hlbWEpO2lmKHR5cGVvZiBWLmNhbGxiYWNrPFwidVwiKXEuaGFuZGxlcj1WLmNhbGxiYWNrO2lmKHR5cGVvZiBWLmFubm90YXRpb25zPFwidVwiKXEuYW5ub3RhdGlvbnM9Vi5hbm5vdGF0aW9ucztpZih0eXBlb2YgVi5fbWV0YTxcInVcIilxLl9tZXRhPVYuX21ldGE7aWYodHlwZW9mIFYuZW5hYmxlZDxcInVcIilxLmVuYWJsZWQ9Vi5lbmFibGVkO3RoaXMuc2VuZFRvb2xMaXN0Q2hhbmdlZCgpfX07cmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWRUb29sc1skXT1xLHRoaXMuc2V0VG9vbFJlcXVlc3RIYW5kbGVycygpLHRoaXMuc2VuZFRvb2xMaXN0Q2hhbmdlZCgpLHF9dG9vbCgkLC4uLlEpe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1skXSl0aHJvdyBFcnJvcihgVG9vbCAkeyR9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBKLFksWCxXO2lmKHR5cGVvZiBRWzBdPT09XCJzdHJpbmdcIilKPVEuc2hpZnQoKTtpZihRLmxlbmd0aD4xKXtsZXQgVT1RWzBdO2lmKEl6KFUpKXtpZihZPVEuc2hpZnQoKSxRLmxlbmd0aD4xJiZ0eXBlb2YgUVswXT09PVwib2JqZWN0XCImJlFbMF0hPT1udWxsJiYhSXooUVswXSkpVz1RLnNoaWZ0KCl9ZWxzZSBpZih0eXBlb2YgVT09PVwib2JqZWN0XCImJlUhPT1udWxsKXtpZihPYmplY3QudmFsdWVzKFUpLnNvbWUoKEgpPT50eXBlb2YgSD09PVwib2JqZWN0XCImJkghPT1udWxsKSl0aHJvdyBFcnJvcihgVG9vbCAkeyR9IGV4cGVjdGVkIGEgWm9kIHNjaGVtYSBvciBUb29sQW5ub3RhdGlvbnMsIGJ1dCByZWNlaXZlZCBhbiB1bnJlY29nbml6ZWQgb2JqZWN0YCk7Vz1RLnNoaWZ0KCl9fWxldCBHPVFbMF07cmV0dXJuIHRoaXMuX2NyZWF0ZVJlZ2lzdGVyZWRUb29sKCQsdm9pZCAwLEosWSxYLFcse3Rhc2tTdXBwb3J0OlwiZm9yYmlkZGVuXCJ9LHZvaWQgMCxHKX1yZWdpc3RlclRvb2woJCxRLEope2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1skXSl0aHJvdyBFcnJvcihgVG9vbCAkeyR9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldHt0aXRsZTpZLGRlc2NyaXB0aW9uOlgsaW5wdXRTY2hlbWE6VyxvdXRwdXRTY2hlbWE6Ryxhbm5vdGF0aW9uczpVLF9tZXRhOkh9PVE7cmV0dXJuIHRoaXMuX2NyZWF0ZVJlZ2lzdGVyZWRUb29sKCQsWSxYLFcsRyxVLHt0YXNrU3VwcG9ydDpcImZvcmJpZGRlblwifSxILEopfXByb21wdCgkLC4uLlEpe2lmKHRoaXMuX3JlZ2lzdGVyZWRQcm9tcHRzWyRdKXRocm93IEVycm9yKGBQcm9tcHQgJHskfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgSjtpZih0eXBlb2YgUVswXT09PVwic3RyaW5nXCIpSj1RLnNoaWZ0KCk7bGV0IFk7aWYoUS5sZW5ndGg+MSlZPVEuc2hpZnQoKTtsZXQgWD1RWzBdLFc9dGhpcy5fY3JlYXRlUmVnaXN0ZXJlZFByb21wdCgkLHZvaWQgMCxKLFksWCk7cmV0dXJuIHRoaXMuc2V0UHJvbXB0UmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUHJvbXB0TGlzdENoYW5nZWQoKSxXfXJlZ2lzdGVyUHJvbXB0KCQsUSxKKXtpZih0aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1skXSl0aHJvdyBFcnJvcihgUHJvbXB0ICR7JH0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0e3RpdGxlOlksZGVzY3JpcHRpb246WCxhcmdzU2NoZW1hOld9PVEsRz10aGlzLl9jcmVhdGVSZWdpc3RlcmVkUHJvbXB0KCQsWSxYLFcsSik7cmV0dXJuIHRoaXMuc2V0UHJvbXB0UmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUHJvbXB0TGlzdENoYW5nZWQoKSxHfWlzQ29ubmVjdGVkKCl7cmV0dXJuIHRoaXMuc2VydmVyLnRyYW5zcG9ydCE9PXZvaWQgMH1hc3luYyBzZW5kTG9nZ2luZ01lc3NhZ2UoJCxRKXtyZXR1cm4gdGhpcy5zZXJ2ZXIuc2VuZExvZ2dpbmdNZXNzYWdlKCQsUSl9c2VuZFJlc291cmNlTGlzdENoYW5nZWQoKXtpZih0aGlzLmlzQ29ubmVjdGVkKCkpdGhpcy5zZXJ2ZXIuc2VuZFJlc291cmNlTGlzdENoYW5nZWQoKX1zZW5kVG9vbExpc3RDaGFuZ2VkKCl7aWYodGhpcy5pc0Nvbm5lY3RlZCgpKXRoaXMuc2VydmVyLnNlbmRUb29sTGlzdENoYW5nZWQoKX1zZW5kUHJvbXB0TGlzdENoYW5nZWQoKXtpZih0aGlzLmlzQ29ubmVjdGVkKCkpdGhpcy5zZXJ2ZXIuc2VuZFByb21wdExpc3RDaGFuZ2VkKCl9fXZhciBQcz17dHlwZTpcIm9iamVjdFwiLHByb3BlcnRpZXM6e319O2Z1bmN0aW9uICRFKCQpe3JldHVybiAkIT09bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiZcInBhcnNlXCJpbiAkJiZ0eXBlb2YgJC5wYXJzZT09PVwiZnVuY3Rpb25cIiYmXCJzYWZlUGFyc2VcImluICQmJnR5cGVvZiAkLnNhZmVQYXJzZT09PVwiZnVuY3Rpb25cIn1mdW5jdGlvbiBRRSgkKXtyZXR1cm5cIl9kZWZcImluICR8fFwiX3pvZFwiaW4gJHx8JEUoJCl9ZnVuY3Rpb24gSXooJCl7aWYodHlwZW9mICQhPT1cIm9iamVjdFwifHwkPT09bnVsbClyZXR1cm4hMTtpZihRRSgkKSlyZXR1cm4hMTtpZihPYmplY3Qua2V5cygkKS5sZW5ndGg9PT0wKXJldHVybiEwO3JldHVybiBPYmplY3QudmFsdWVzKCQpLnNvbWUoJEUpfWZ1bmN0aW9uIHNQKCQpe2lmKCEkKXJldHVybjtpZihJeigkKSlyZXR1cm4gQzAoJCk7aWYoIVFFKCQpKXRocm93IEVycm9yKFwiaW5wdXRTY2hlbWEgbXVzdCBiZSBhIFpvZCBzY2hlbWEgb3IgcmF3IHNoYXBlLCByZWNlaXZlZCBhbiB1bnJlY29nbml6ZWQgb2JqZWN0XCIpO3JldHVybiAkfWZ1bmN0aW9uIEVzKCQpe2xldCBRPUMxKCQpO2lmKCFRKXJldHVybltdO3JldHVybiBPYmplY3QuZW50cmllcyhRKS5tYXAoKFtKLFldKT0+e2xldCBYPVJNKFkpLFc9UE0oWSk7cmV0dXJue25hbWU6SixkZXNjcmlwdGlvbjpYLHJlcXVpcmVkOiFXfX0pfWZ1bmN0aW9uIGMxKCQpe2xldCBKPUMxKCQpPy5tZXRob2Q7aWYoIUopdGhyb3cgRXJyb3IoXCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsXCIpO2xldCBZPVQzKEopO2lmKHR5cGVvZiBZPT09XCJzdHJpbmdcIilyZXR1cm4gWTt0aHJvdyBFcnJvcihcIlNjaGVtYSBtZXRob2QgbGl0ZXJhbCBtdXN0IGJlIGEgc3RyaW5nXCIpfWZ1bmN0aW9uIGVQKCQpe3JldHVybntjb21wbGV0aW9uOnt2YWx1ZXM6JC5zbGljZSgwLDEwMCksdG90YWw6JC5sZW5ndGgsaGFzTW9yZTokLmxlbmd0aD4xMDB9fX12YXIgdEo9e2NvbXBsZXRpb246e3ZhbHVlczpbXSxoYXNNb3JlOiExfX07ZnVuY3Rpb24gYnMoJCxRLEosWSxYKXtsZXQgVz17fTtpZihYPy5zZWFyY2hIaW50KVdbXCJhbnRocm9waWMvc2VhcmNoSGludFwiXT1YLnNlYXJjaEhpbnQ7aWYoWD8uYWx3YXlzTG9hZClXW1wiYW50aHJvcGljL2Fsd2F5c0xvYWRcIl09ITA7cmV0dXJue25hbWU6JCxkZXNjcmlwdGlvbjpRLGlucHV0U2NoZW1hOkosaGFuZGxlcjpZLGFubm90YXRpb25zOlg/LmFubm90YXRpb25zLF9tZXRhOk9iamVjdC5rZXlzKFcpLmxlbmd0aD4wP1c6dm9pZCAwfX1mdW5jdGlvbiBfcygkKXtsZXQgUT1uZXcgUnooe25hbWU6JC5uYW1lLHZlcnNpb246JC52ZXJzaW9uPz9cIjEuMC4wXCJ9LHtjYXBhYmlsaXRpZXM6e3Rvb2xzOiQudG9vbHM/e306dm9pZCAwfX0pO2lmKCQudG9vbHMpJC50b29scy5mb3JFYWNoKChKKT0+e2ZvcihsZXQgWSBvZiBPYmplY3QudmFsdWVzKEouaW5wdXRTY2hlbWEpKXtpZighU3MoWSkpY29udGludWU7bGV0IFg9WS5kZXNjcmlwdGlvbjtpZihYJiYhQTYuaGFzKFkpKUE2LmFkZChZLHtkZXNjcmlwdGlvbjpYfSl9US5yZWdpc3RlclRvb2woSi5uYW1lLHtkZXNjcmlwdGlvbjpKLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOkouaW5wdXRTY2hlbWEsYW5ub3RhdGlvbnM6Si5hbm5vdGF0aW9ucyxfbWV0YTokLmFsd2F5c0xvYWQ/e1wiYW50aHJvcGljL2Fsd2F5c0xvYWRcIjohMCwuLi5KLl9tZXRhfTpKLl9tZXRhfSxKLmhhbmRsZXIpfSk7cmV0dXJue3R5cGU6XCJzZGtcIixuYW1lOiQubmFtZSxpbnN0YW5jZTpRfX1mdW5jdGlvbiBTcygkKXtyZXR1cm4gdHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCYmXCJfem9kXCJpbiAkfWZ1bmN0aW9uIF8oJCl7bGV0IFE7cmV0dXJuKCk9PlE/Pz0kKCl9dmFyIEpFPTE1MDAwLGtzPV8oKCk9Pksub2JqZWN0KHtzZXNzaW9uX2lkOksuc3RyaW5nKCksd3NfdXJsOksuc3RyaW5nKCksd29ya19kaXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLHNlc3Npb25fa2V5Oksuc3RyaW5nKCkub3B0aW9uYWwoKX0pKTtjbGFzcyBaNCBleHRlbmRzIEVycm9ye2NvZGU7Y29uc3RydWN0b3IoJCxRKXtzdXBlcigkKTt0aGlzLm5hbWU9XCJEaXJlY3RDb25uZWN0RXJyb3JcIix0aGlzLmNvZGU9UX19Y2xhc3MgWUV7b3B0aW9uczt3cztzZXNzaW9uSWQ7d29ya0RpcjthYm9ydENvbnRyb2xsZXI7cmVhZHlTdGF0ZT0hMTtjbG9zZWQ9ITE7ZXhpdEVycm9yO21lc3NhZ2VzPW5ldyB6MDtyZWFkeVByb21pc2U7cmVhZHlSZXNvbHZlO3JlYWR5UmVqZWN0O2Fib3J0SGFuZGxlcjtwYXJ0aWFsQ2h1bmtzPVtdO3RlbGVtZXRyeUVtaXR0ZWQ9ITE7Y29uc3RydWN0b3IoJCl7dGhpcy5vcHRpb25zPSQ7dGhpcy5hYm9ydENvbnRyb2xsZXI9JC5hYm9ydENvbnRyb2xsZXI/P25ldyBBYm9ydENvbnRyb2xsZXIsdGhpcy5yZWFkeVByb21pc2U9bmV3IFByb21pc2UoKFEsSik9Pnt0aGlzLnJlYWR5UmVzb2x2ZT1RLHRoaXMucmVhZHlSZWplY3Q9Sn0pLHRoaXMucmVhZHlQcm9taXNlLmNhdGNoKCgpPT57fSksdGhpcy5pbml0aWFsaXplKCl9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMucmVhZHlQcm9taXNlfWdldFNlc3Npb25JZCgpe3JldHVybiB0aGlzLnNlc3Npb25JZH1nZXRXb3JrRGlyKCl7cmV0dXJuIHRoaXMud29ya0Rpcn1hc3luYyBpbml0aWFsaXplKCl7aWYodGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpe3RoaXMuZmFpbEluaXQobmV3IHE2KFwiQ29ubmVjdGlvbiBhYm9ydGVkXCIpKTtyZXR1cm59dGhpcy5hYm9ydEhhbmRsZXI9KCk9Pnt0aGlzLmNsb3NlKCksdGhpcy5leGl0RXJyb3I9bmV3IHE2KFwiQ29ubmVjdGlvbiBhYm9ydGVkIGJ5IHVzZXJcIil9LHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIix0aGlzLmFib3J0SGFuZGxlcik7bGV0ICQ7dHJ5e2xldCBYPWF3YWl0IENzKHRoaXMub3B0aW9ucyk7dGhpcy5zZXNzaW9uSWQ9WC5zZXNzaW9uSWQsdGhpcy53b3JrRGlyPVgud29ya0RpciwkPVgud3NVcmx9Y2F0Y2goWCl7bGV0IFc9STQoWCk7aWYoIShXIGluc3RhbmNlb2YgcTYpKXtsZXQgRz1XIGluc3RhbmNlb2YgWjQmJlcuY29kZT9XLmNvZGU6XCJzZXNzaW9uX2NyZWF0ZV9mYWlsZWRcIjt0aGlzLmVtaXRUZWxlbWV0cnkoXCJiYWRcIixHKX10aGlzLmZhaWxJbml0KFcpO3JldHVybn1pZih0aGlzLmNsb3NlZCl7aWYodGhpcy5vcHRpb25zLmRlbGV0ZVNlc3Npb25PbkNsb3NlJiZ0aGlzLnNlc3Npb25JZClYRSh0aGlzLm9wdGlvbnMuc2VydmVyVXJsLHRoaXMuc2Vzc2lvbklkLHRoaXMub3B0aW9ucy5hdXRoVG9rZW4pO3JldHVybn1sZXQgUT17fTtpZih0aGlzLm9wdGlvbnMuYXV0aFRva2VuKVEuYXV0aG9yaXphdGlvbj1gQmVhcmVyICR7dGhpcy5vcHRpb25zLmF1dGhUb2tlbn1gO2xldCBKPW5ldyBXZWJTb2NrZXQoJCx7aGVhZGVyczpRfSk7dGhpcy53cz1KO2xldCBZPXNldFRpbWVvdXQoKFgsVyk9PntpZighWC5yZWFkeVN0YXRlKXtXLmNsb3NlKCk7bGV0IEc9bmV3IFo0KGBXZWJTb2NrZXQgY29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyICR7SkV9bXNgKTtYLmV4aXRFcnJvcj1HLFgucmVhZHlSZWplY3Q/LihHKSxYLmVtaXRUZWxlbWV0cnkoXCJiYWRcIixcImNvbm5lY3RfdGltZW91dFwiKX19LEpFLHRoaXMsSik7Si5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCgpPT57Y2xlYXJUaW1lb3V0KFkpLHRoaXMucmVhZHlTdGF0ZT0hMCxaNihgW0RpcmVjdENvbm5lY3RUcmFuc3BvcnRdIENvbm5lY3RlZCB0byAke3RoaXMub3B0aW9ucy5zZXJ2ZXJVcmx9LCBzZXNzaW9uPSR7dGhpcy5zZXNzaW9uSWR9YCksdGhpcy5yZWFkeVJlc29sdmU/LigpLHRoaXMuZW1pdFRlbGVtZXRyeShcIm9rXCIpfSksSi5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChYKT0+e2xldCBXPXR5cGVvZiBYLmRhdGE9PT1cInN0cmluZ1wiP1guZGF0YTpcIlwiO2lmKFcuaW5kZXhPZihgXG5gKT09PS0xKXtpZihXKXRoaXMucGFydGlhbENodW5rcy5wdXNoKFcpO3JldHVybn1sZXQgRz10aGlzLnBhcnRpYWxDaHVua3Muam9pbihcIlwiKStXO3RoaXMucGFydGlhbENodW5rcy5sZW5ndGg9MDtsZXQgVT1HLnNwbGl0KGBcbmApLEg9VS5wb3AoKT8/XCJcIjtpZihIKXRoaXMucGFydGlhbENodW5rcy5wdXNoKEgpO2ZvcihsZXQgcSBvZiBVKXtpZighcSljb250aW51ZTtsZXQgVjt0cnl7Vj1sJChxKX1jYXRjaChCKXtaNihgRGlyZWN0Q29ubmVjdDogZHJvcHBlZCBtYWxmb3JtZWQgSlNPTiBsaW5lICgke3EubGVuZ3RofSBieXRlcyk6ICR7Qn1gKTtjb250aW51ZX10aGlzLm1lc3NhZ2VzLmVucXVldWUoVil9fSksSi5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwoKT0+e2NsZWFyVGltZW91dChZKTtsZXQgWD1uZXcgWjQoXCJXZWJTb2NrZXQgY29ubmVjdGlvbiBlcnJvclwiKTtpZih0aGlzLmV4aXRFcnJvcj1YLHRoaXMucmVhZHlSZWplY3Q/LihYKSx0aGlzLm1lc3NhZ2VzLmRvbmUoKSwhdGhpcy5yZWFkeVN0YXRlKXRoaXMuZW1pdFRlbGVtZXRyeShcImJhZFwiLFwid3NfZXJyb3JcIil9KSxKLmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLChYKT0+e2xldCBXPXRoaXMucmVhZHlTdGF0ZTt0aGlzLnJlYWR5U3RhdGU9ITEsdGhpcy5jbG9zZWQ9ITA7bGV0IEc9WC5jb2RlIT09MTAwMCYmWC5jb2RlIT09MTAwMTtpZihHJiYhdGhpcy5leGl0RXJyb3IpdGhpcy5leGl0RXJyb3I9bmV3IFo0KGBXZWJTb2NrZXQgY2xvc2VkIGFibm9ybWFsbHk6ICR7WC5jb2RlfSAke1gucmVhc29ufWApO2lmKHRoaXMubWVzc2FnZXMuZG9uZSgpLFcmJkcmJiF0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl0aGlzLmVtaXRUZWxlbWV0cnkoXCJzYWRcIixcIndzX2Nsb3NlZF9hYm5vcm1hbGx5XCIpfSl9ZW1pdFRlbGVtZXRyeSgkLFEpe2lmKHRoaXMudGVsZW1ldHJ5RW1pdHRlZClyZXR1cm47aWYodGhpcy50ZWxlbWV0cnlFbWl0dGVkPSEwLCQ9PT1cIm9rXCIpbTcoXCJ0cmFuc3BvcnRfZGlyZWN0X2Nvbm5lY3RcIik7ZWxzZSBpZigkPT09XCJiYWRcIilsNyhcInRyYW5zcG9ydF9kaXJlY3RfY29ubmVjdFwiLFE/P1widW5rbm93blwiKTtlbHNlIE4yKFwidHJhbnNwb3J0X2RpcmVjdF9jb25uZWN0XCIsUT8/XCJ1bmtub3duXCIpfWZhaWxJbml0KCQpe3RoaXMuZXhpdEVycm9yPSQsdGhpcy5jbG9zZWQ9ITAsdGhpcy5yZWFkeVJlamVjdD8uKCQpLHRoaXMubWVzc2FnZXMuZG9uZSgpfWFzeW5jIHdyaXRlKCQpe2lmKHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBxNihcIk9wZXJhdGlvbiBhYm9ydGVkXCIpO2lmKCF0aGlzLnJlYWR5U3RhdGUpYXdhaXQgdGhpcy5yZWFkeVByb21pc2U7aWYoIXRoaXMud3N8fHRoaXMud3MucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXRocm93IG5ldyBaNChcIlRyYW5zcG9ydCBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmdcIik7dGhpcy53cy5zZW5kKCQpfWlzUmVhZHkoKXtyZXR1cm4gdGhpcy5yZWFkeVN0YXRlJiZ0aGlzLndzPy5yZWFkeVN0YXRlPT09V2ViU29ja2V0Lk9QRU59ZW5kSW5wdXQoKXt9W1N5bWJvbC5kaXNwb3NlXSgpe3RoaXMuY2xvc2UoKX1jbG9zZSgpe2lmKHRoaXMuY2xvc2VkKXJldHVybjtpZih0aGlzLmNsb3NlZD0hMCx0aGlzLnJlYWR5U3RhdGU9ITEsdGhpcy5hYm9ydEhhbmRsZXIpdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLHRoaXMuYWJvcnRIYW5kbGVyKSx0aGlzLmFib3J0SGFuZGxlcj12b2lkIDA7aWYoIXRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCk7aWYodGhpcy53cyYmdGhpcy53cy5yZWFkeVN0YXRlPT09V2ViU29ja2V0Lk9QRU4pdGhpcy53cy5jbG9zZSgxMDAwLFwiTm9ybWFsIGNsb3N1cmVcIik7aWYodGhpcy5tZXNzYWdlcy5kb25lKCksdGhpcy5vcHRpb25zLmRlbGV0ZVNlc3Npb25PbkNsb3NlJiZ0aGlzLnNlc3Npb25JZClYRSh0aGlzLm9wdGlvbnMuc2VydmVyVXJsLHRoaXMuc2Vzc2lvbklkLHRoaXMub3B0aW9ucy5hdXRoVG9rZW4pfWFzeW5jKnJlYWRNZXNzYWdlcygpe2lmKHlpZWxkKnRoaXMubWVzc2FnZXMsdGhpcy5leGl0RXJyb3IpdGhyb3cgdGhpcy5leGl0RXJyb3J9fWZ1bmN0aW9uIHZzKCQpe2lmKCQuc3RhcnRzV2l0aChcImNjOi8vXCIpKXtsZXQgWT0kLnNsaWNlKDUpLFg9bmV3IFVSTChgaHR0cDovLyR7WX1gKSxXPVgucGF0aG5hbWUuc2xpY2UoMSl8fHZvaWQgMDtyZXR1cm57c2VydmVyVXJsOmBodHRwOi8vJHtYLmhvc3R9YCxhdXRoVG9rZW46V319aWYoJC5zdGFydHNXaXRoKFwiY2MrdW5peDovL1wiKSl0aHJvdyBuZXcgWjQoXCJVbml4IHNvY2tldCBjb25uZWN0IChjYyt1bml4Oi8vKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBTREsgdHJhbnNwb3J0XCIpO2xldCBRPS9eaHR0cHM/OlxcL1xcLy9pLnRlc3QoJCk/JDpgaHR0cDovLyR7JH1gLEo9bmV3IFVSTChRKTtyZXR1cm57c2VydmVyVXJsOmAke0oucHJvdG9jb2x9Ly8ke0ouaG9zdH1gLGF1dGhUb2tlbjp2b2lkIDB9fWFzeW5jIGZ1bmN0aW9uIENzKCQpe2xldCBRPXtcImNvbnRlbnQtdHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifTtpZigkLmF1dGhUb2tlbilRLmF1dGhvcml6YXRpb249YEJlYXJlciAkeyQuYXV0aFRva2VufWA7bGV0IEo9e307aWYoJC5jd2QpSi5jd2Q9JC5jd2Q7aWYoJC5zZXNzaW9uS2V5KUouc2Vzc2lvbl9rZXk9JC5zZXNzaW9uS2V5O2lmKCQucGVybWlzc2lvbk1vZGUpSi5wZXJtaXNzaW9uX21vZGU9JC5wZXJtaXNzaW9uTW9kZTtsZXQgWTt0cnl7WT1hd2FpdCBmZXRjaChgJHskLnNlcnZlclVybH0vc2Vzc2lvbnNgLHttZXRob2Q6XCJQT1NUXCIsaGVhZGVyczpRLGJvZHk6QiQoSil9KX1jYXRjaChXKXt0aHJvdyBuZXcgWjQoYEZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlciBhdCAkeyQuc2VydmVyVXJsfTogJHtXIGluc3RhbmNlb2YgRXJyb3I/Vy5tZXNzYWdlOlN0cmluZyhXKX1gLFwic2Vzc2lvbl9jcmVhdGVfZmFpbGVkXCIpfWlmKCFZLm9rKXtsZXQgVz1hd2FpdCBZLnRleHQoKS5jYXRjaCgoKT0+XCJcIik7dGhyb3cgbmV3IFo0KGBGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb246ICR7WS5zdGF0dXN9ICR7WS5zdGF0dXNUZXh0fSR7Vz9gIFx1MjAxNCAke1d9YDpcIlwifWAsXCJzZXNzaW9uX2NyZWF0ZV9mYWlsZWRcIil9bGV0IFg9a3MoKS5zYWZlUGFyc2UoYXdhaXQgWS5qc29uKCkpO2lmKCFYLnN1Y2Nlc3MpdGhyb3cgbmV3IFo0KGBJbnZhbGlkIHNlc3Npb24gcmVzcG9uc2U6ICR7WC5lcnJvci5tZXNzYWdlfWAsXCJzZXNzaW9uX2NyZWF0ZV9pbnZhbGlkX3Jlc3BvbnNlXCIpO3JldHVybntzZXNzaW9uSWQ6WC5kYXRhLnNlc3Npb25faWQsd3NVcmw6WC5kYXRhLndzX3VybCx3b3JrRGlyOlguZGF0YS53b3JrX2Rpcn19YXN5bmMgZnVuY3Rpb24gWEUoJCxRLEope2xldCBZPXt9O2lmKEopWS5hdXRob3JpemF0aW9uPWBCZWFyZXIgJHtKfWA7dHJ5e2F3YWl0IGZldGNoKGAkeyR9L3Nlc3Npb25zLyR7UX1gLHttZXRob2Q6XCJERUxFVEVcIixoZWFkZXJzOll9KX1jYXRjaHt9fWltcG9ydHtyZXNvbHZlIGFzIEw2JH1mcm9tXCJwYXRoXCI7aW1wb3J0e2pvaW4gYXMgUzl9ZnJvbVwicGF0aFwiO2ltcG9ydHtkaXJuYW1lIGFzIFRzfWZyb21cInBhdGhcIjtmdW5jdGlvbiBhSigkLFEsSil7bGV0IFk9eHMoKTtpZighWSlyZXR1cm47bGV0IFg9e3RpbWVzdGFtcDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksbGV2ZWw6JCxldmVudDpRLGRhdGE6Sj8/e319LFc9bSQoKSxHPUIkKFgpK2BcbmA7dHJ5e1cuYXBwZW5kRmlsZVN5bmMoWSxHKX1jYXRjaHt0cnl7Vy5ta2RpclN5bmMoVHMoWSkpLFcuYXBwZW5kRmlsZVN5bmMoWSxHKX1jYXRjaHt9fX1mdW5jdGlvbiB4cygpe3JldHVybiBwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9ESUFHTk9TVElDU19GSUxFfWZ1bmN0aW9uIGZzKCQpe2xldHtidWZmZXI6USxieXRlc1JlYWQ6Sn09bSQoKS5yZWFkU3luYygkLHtsZW5ndGg6NDA5Nn0pO2lmKEo9PT0wKXJldHVyblwidXRmOFwiO2lmKEo+PTIpe2lmKFFbMF09PT0yNTUmJlFbMV09PT0yNTQpcmV0dXJuXCJ1dGYxNmxlXCJ9aWYoSj49MyYmUVswXT09PTIzOSYmUVsxXT09PTE4NyYmUVsyXT09PTE5MSlyZXR1cm5cInV0ZjhcIjtyZXR1cm5cInV0ZjhcIn1mdW5jdGlvbiB5cygkKXtsZXQgUT0wLEo9MDtmb3IobGV0IFk9MDtZPCQubGVuZ3RoO1krKylpZigkW1ldPT09YFxuYClpZihZPjAmJiRbWS0xXT09PVwiXFxyXCIpUSsrO2Vsc2UgSisrO3JldHVybiBRPko/XCJDUkxGXCI6XCJMRlwifWZ1bmN0aW9uIGdzKCQpe2xldCBRPW0kKCkse3Jlc29sdmVkUGF0aDpKLGlzU3ltbGluazpZfT1ONShRLCQpO2lmKFkpWCQoYFJlYWRpbmcgdGhyb3VnaCBzeW1saW5rOiAkeyR9IC0+ICR7Sn1gKTtsZXQgWD1mcyhKKSxXPVEucmVhZEZpbGVTeW5jKEose2VuY29kaW5nOlh9KSxHPXlzKFcuc2xpY2UoMCw0MDk2KSk7cmV0dXJue2NvbnRlbnQ6Vy5yZXBsYWNlQWxsKGBcXHJcbmAsYFxuYCksZW5jb2Rpbmc6WCxsaW5lRW5kaW5nczpHfX1mdW5jdGlvbiB1MCgkKXtyZXR1cm4gZ3MoJCkuY29udGVudH12YXIgV0U7KGZ1bmN0aW9uKCQpeyRbJC5saW5lRmVlZD0xMF09XCJsaW5lRmVlZFwiLCRbJC5jYXJyaWFnZVJldHVybj0xM109XCJjYXJyaWFnZVJldHVyblwiLCRbJC5zcGFjZT0zMl09XCJzcGFjZVwiLCRbJC5fMD00OF09XCJfMFwiLCRbJC5fMT00OV09XCJfMVwiLCRbJC5fMj01MF09XCJfMlwiLCRbJC5fMz01MV09XCJfM1wiLCRbJC5fND01Ml09XCJfNFwiLCRbJC5fNT01M109XCJfNVwiLCRbJC5fNj01NF09XCJfNlwiLCRbJC5fNz01NV09XCJfN1wiLCRbJC5fOD01Nl09XCJfOFwiLCRbJC5fOT01N109XCJfOVwiLCRbJC5hPTk3XT1cImFcIiwkWyQuYj05OF09XCJiXCIsJFskLmM9OTldPVwiY1wiLCRbJC5kPTEwMF09XCJkXCIsJFskLmU9MTAxXT1cImVcIiwkWyQuZj0xMDJdPVwiZlwiLCRbJC5nPTEwM109XCJnXCIsJFskLmg9MTA0XT1cImhcIiwkWyQuaT0xMDVdPVwiaVwiLCRbJC5qPTEwNl09XCJqXCIsJFskLms9MTA3XT1cImtcIiwkWyQubD0xMDhdPVwibFwiLCRbJC5tPTEwOV09XCJtXCIsJFskLm49MTEwXT1cIm5cIiwkWyQubz0xMTFdPVwib1wiLCRbJC5wPTExMl09XCJwXCIsJFskLnE9MTEzXT1cInFcIiwkWyQucj0xMTRdPVwiclwiLCRbJC5zPTExNV09XCJzXCIsJFskLnQ9MTE2XT1cInRcIiwkWyQudT0xMTddPVwidVwiLCRbJC52PTExOF09XCJ2XCIsJFskLnc9MTE5XT1cIndcIiwkWyQueD0xMjBdPVwieFwiLCRbJC55PTEyMV09XCJ5XCIsJFskLno9MTIyXT1cInpcIiwkWyQuQT02NV09XCJBXCIsJFskLkI9NjZdPVwiQlwiLCRbJC5DPTY3XT1cIkNcIiwkWyQuRD02OF09XCJEXCIsJFskLkU9NjldPVwiRVwiLCRbJC5GPTcwXT1cIkZcIiwkWyQuRz03MV09XCJHXCIsJFskLkg9NzJdPVwiSFwiLCRbJC5JPTczXT1cIklcIiwkWyQuSj03NF09XCJKXCIsJFskLks9NzVdPVwiS1wiLCRbJC5MPTc2XT1cIkxcIiwkWyQuTT03N109XCJNXCIsJFskLk49NzhdPVwiTlwiLCRbJC5PPTc5XT1cIk9cIiwkWyQuUD04MF09XCJQXCIsJFskLlE9ODFdPVwiUVwiLCRbJC5SPTgyXT1cIlJcIiwkWyQuUz04M109XCJTXCIsJFskLlQ9ODRdPVwiVFwiLCRbJC5VPTg1XT1cIlVcIiwkWyQuVj04Nl09XCJWXCIsJFskLlc9ODddPVwiV1wiLCRbJC5YPTg4XT1cIlhcIiwkWyQuWT04OV09XCJZXCIsJFskLlo9OTBdPVwiWlwiLCRbJC5hc3Rlcmlzaz00Ml09XCJhc3Rlcmlza1wiLCRbJC5iYWNrc2xhc2g9OTJdPVwiYmFja3NsYXNoXCIsJFskLmNsb3NlQnJhY2U9MTI1XT1cImNsb3NlQnJhY2VcIiwkWyQuY2xvc2VCcmFja2V0PTkzXT1cImNsb3NlQnJhY2tldFwiLCRbJC5jb2xvbj01OF09XCJjb2xvblwiLCRbJC5jb21tYT00NF09XCJjb21tYVwiLCRbJC5kb3Q9NDZdPVwiZG90XCIsJFskLmRvdWJsZVF1b3RlPTM0XT1cImRvdWJsZVF1b3RlXCIsJFskLm1pbnVzPTQ1XT1cIm1pbnVzXCIsJFskLm9wZW5CcmFjZT0xMjNdPVwib3BlbkJyYWNlXCIsJFskLm9wZW5CcmFja2V0PTkxXT1cIm9wZW5CcmFja2V0XCIsJFskLnBsdXM9NDNdPVwicGx1c1wiLCRbJC5zbGFzaD00N109XCJzbGFzaFwiLCRbJC5mb3JtRmVlZD0xMl09XCJmb3JtRmVlZFwiLCRbJC50YWI9OV09XCJ0YWJcIn0pKFdFfHwoV0U9e30pKTt2YXIgdXM9QXJyYXkoMjApLmZpbGwoMCkubWFwKCgkLFEpPT57cmV0dXJuXCIgXCIucmVwZWF0KFEpfSk7dmFyIG1zPXtcIiBcIjp7XCJcXG5cIjpBcnJheSgyMDApLmZpbGwoMCkubWFwKCgkLFEpPT57cmV0dXJuYFxuYCtcIiBcIi5yZXBlYXQoUSl9KSxcIlxcclwiOkFycmF5KDIwMCkuZmlsbCgwKS5tYXAoKCQsUSk9PntyZXR1cm5cIlxcclwiK1wiIFwiLnJlcGVhdChRKX0pLFwiXFxyXFxuXCI6QXJyYXkoMjAwKS5maWxsKDApLm1hcCgoJCxRKT0+e3JldHVybmBcXHJcbmArXCIgXCIucmVwZWF0KFEpfSl9LFwiXFx0XCI6e1wiXFxuXCI6QXJyYXkoMjAwKS5maWxsKDApLm1hcCgoJCxRKT0+e3JldHVybmBcbmArXCJcXHRcIi5yZXBlYXQoUSl9KSxcIlxcclwiOkFycmF5KDIwMCkuZmlsbCgwKS5tYXAoKCQsUSk9PntyZXR1cm5cIlxcclwiK1wiXFx0XCIucmVwZWF0KFEpfSksXCJcXHJcXG5cIjpBcnJheSgyMDApLmZpbGwoMCkubWFwKCgkLFEpPT57cmV0dXJuYFxcclxuYCtcIlxcdFwiLnJlcGVhdChRKX0pfX07dmFyIFVFOyhmdW5jdGlvbigkKXskLkRFRkFVTFQ9e2FsbG93VHJhaWxpbmdDb21tYTohMX19KShVRXx8KFVFPXt9KSk7dmFyIEhFOyhmdW5jdGlvbigkKXskWyQuTm9uZT0wXT1cIk5vbmVcIiwkWyQuVW5leHBlY3RlZEVuZE9mQ29tbWVudD0xXT1cIlVuZXhwZWN0ZWRFbmRPZkNvbW1lbnRcIiwkWyQuVW5leHBlY3RlZEVuZE9mU3RyaW5nPTJdPVwiVW5leHBlY3RlZEVuZE9mU3RyaW5nXCIsJFskLlVuZXhwZWN0ZWRFbmRPZk51bWJlcj0zXT1cIlVuZXhwZWN0ZWRFbmRPZk51bWJlclwiLCRbJC5JbnZhbGlkVW5pY29kZT00XT1cIkludmFsaWRVbmljb2RlXCIsJFskLkludmFsaWRFc2NhcGVDaGFyYWN0ZXI9NV09XCJJbnZhbGlkRXNjYXBlQ2hhcmFjdGVyXCIsJFskLkludmFsaWRDaGFyYWN0ZXI9Nl09XCJJbnZhbGlkQ2hhcmFjdGVyXCJ9KShIRXx8KEhFPXt9KSk7dmFyIEtFOyhmdW5jdGlvbigkKXskWyQuT3BlbkJyYWNlVG9rZW49MV09XCJPcGVuQnJhY2VUb2tlblwiLCRbJC5DbG9zZUJyYWNlVG9rZW49Ml09XCJDbG9zZUJyYWNlVG9rZW5cIiwkWyQuT3BlbkJyYWNrZXRUb2tlbj0zXT1cIk9wZW5CcmFja2V0VG9rZW5cIiwkWyQuQ2xvc2VCcmFja2V0VG9rZW49NF09XCJDbG9zZUJyYWNrZXRUb2tlblwiLCRbJC5Db21tYVRva2VuPTVdPVwiQ29tbWFUb2tlblwiLCRbJC5Db2xvblRva2VuPTZdPVwiQ29sb25Ub2tlblwiLCRbJC5OdWxsS2V5d29yZD03XT1cIk51bGxLZXl3b3JkXCIsJFskLlRydWVLZXl3b3JkPThdPVwiVHJ1ZUtleXdvcmRcIiwkWyQuRmFsc2VLZXl3b3JkPTldPVwiRmFsc2VLZXl3b3JkXCIsJFskLlN0cmluZ0xpdGVyYWw9MTBdPVwiU3RyaW5nTGl0ZXJhbFwiLCRbJC5OdW1lcmljTGl0ZXJhbD0xMV09XCJOdW1lcmljTGl0ZXJhbFwiLCRbJC5MaW5lQ29tbWVudFRyaXZpYT0xMl09XCJMaW5lQ29tbWVudFRyaXZpYVwiLCRbJC5CbG9ja0NvbW1lbnRUcml2aWE9MTNdPVwiQmxvY2tDb21tZW50VHJpdmlhXCIsJFskLkxpbmVCcmVha1RyaXZpYT0xNF09XCJMaW5lQnJlYWtUcml2aWFcIiwkWyQuVHJpdmlhPTE1XT1cIlRyaXZpYVwiLCRbJC5Vbmtub3duPTE2XT1cIlVua25vd25cIiwkWyQuRU9GPTE3XT1cIkVPRlwifSkoS0V8fChLRT17fSkpO3ZhciBxRTsoZnVuY3Rpb24oJCl7JFskLkludmFsaWRTeW1ib2w9MV09XCJJbnZhbGlkU3ltYm9sXCIsJFskLkludmFsaWROdW1iZXJGb3JtYXQ9Ml09XCJJbnZhbGlkTnVtYmVyRm9ybWF0XCIsJFskLlByb3BlcnR5TmFtZUV4cGVjdGVkPTNdPVwiUHJvcGVydHlOYW1lRXhwZWN0ZWRcIiwkWyQuVmFsdWVFeHBlY3RlZD00XT1cIlZhbHVlRXhwZWN0ZWRcIiwkWyQuQ29sb25FeHBlY3RlZD01XT1cIkNvbG9uRXhwZWN0ZWRcIiwkWyQuQ29tbWFFeHBlY3RlZD02XT1cIkNvbW1hRXhwZWN0ZWRcIiwkWyQuQ2xvc2VCcmFjZUV4cGVjdGVkPTddPVwiQ2xvc2VCcmFjZUV4cGVjdGVkXCIsJFskLkNsb3NlQnJhY2tldEV4cGVjdGVkPThdPVwiQ2xvc2VCcmFja2V0RXhwZWN0ZWRcIiwkWyQuRW5kT2ZGaWxlRXhwZWN0ZWQ9OV09XCJFbmRPZkZpbGVFeHBlY3RlZFwiLCRbJC5JbnZhbGlkQ29tbWVudFRva2VuPTEwXT1cIkludmFsaWRDb21tZW50VG9rZW5cIiwkWyQuVW5leHBlY3RlZEVuZE9mQ29tbWVudD0xMV09XCJVbmV4cGVjdGVkRW5kT2ZDb21tZW50XCIsJFskLlVuZXhwZWN0ZWRFbmRPZlN0cmluZz0xMl09XCJVbmV4cGVjdGVkRW5kT2ZTdHJpbmdcIiwkWyQuVW5leHBlY3RlZEVuZE9mTnVtYmVyPTEzXT1cIlVuZXhwZWN0ZWRFbmRPZk51bWJlclwiLCRbJC5JbnZhbGlkVW5pY29kZT0xNF09XCJJbnZhbGlkVW5pY29kZVwiLCRbJC5JbnZhbGlkRXNjYXBlQ2hhcmFjdGVyPTE1XT1cIkludmFsaWRFc2NhcGVDaGFyYWN0ZXJcIiwkWyQuSW52YWxpZENoYXJhY3Rlcj0xNl09XCJJbnZhbGlkQ2hhcmFjdGVyXCJ9KShxRXx8KHFFPXt9KSk7ZnVuY3Rpb24gSkcoJCl7cmV0dXJuICQuc3RhcnRzV2l0aChcIlxcdUZFRkZcIik/JC5zbGljZSgxKTokfWltcG9ydCBmJCBmcm9tXCJub2RlOnBhdGhcIjtpbXBvcnQgVkUgZnJvbVwibm9kZTpvc1wiO2ltcG9ydCBQeiBmcm9tXCJub2RlOnByb2Nlc3NcIjt2YXIgcDE9VkUuaG9tZWRpcigpLEV6PVZFLnRtcGRpcigpLHtlbnY6STl9PVB6LHJzPSgkKT0+e2xldCBRPWYkLmpvaW4ocDEsXCJMaWJyYXJ5XCIpO3JldHVybntkYXRhOmYkLmpvaW4oUSxcIkFwcGxpY2F0aW9uIFN1cHBvcnRcIiwkKSxjb25maWc6ZiQuam9pbihRLFwiUHJlZmVyZW5jZXNcIiwkKSxjYWNoZTpmJC5qb2luKFEsXCJDYWNoZXNcIiwkKSxsb2c6ZiQuam9pbihRLFwiTG9nc1wiLCQpLHRlbXA6ZiQuam9pbihFeiwkKX19LG9zPSgkKT0+e2xldCBRPUk5LkFQUERBVEF8fGYkLmpvaW4ocDEsXCJBcHBEYXRhXCIsXCJSb2FtaW5nXCIpLEo9STkuTE9DQUxBUFBEQVRBfHxmJC5qb2luKHAxLFwiQXBwRGF0YVwiLFwiTG9jYWxcIik7cmV0dXJue2RhdGE6ZiQuam9pbihKLCQsXCJEYXRhXCIpLGNvbmZpZzpmJC5qb2luKFEsJCxcIkNvbmZpZ1wiKSxjYWNoZTpmJC5qb2luKEosJCxcIkNhY2hlXCIpLGxvZzpmJC5qb2luKEosJCxcIkxvZ1wiKSx0ZW1wOmYkLmpvaW4oRXosJCl9fSx0cz0oJCk9PntsZXQgUT1mJC5iYXNlbmFtZShwMSk7cmV0dXJue2RhdGE6ZiQuam9pbihJOS5YREdfREFUQV9IT01FfHxmJC5qb2luKHAxLFwiLmxvY2FsXCIsXCJzaGFyZVwiKSwkKSxjb25maWc6ZiQuam9pbihJOS5YREdfQ09ORklHX0hPTUV8fGYkLmpvaW4ocDEsXCIuY29uZmlnXCIpLCQpLGNhY2hlOmYkLmpvaW4oSTkuWERHX0NBQ0hFX0hPTUV8fGYkLmpvaW4ocDEsXCIuY2FjaGVcIiksJCksbG9nOmYkLmpvaW4oSTkuWERHX1NUQVRFX0hPTUV8fGYkLmpvaW4ocDEsXCIubG9jYWxcIixcInN0YXRlXCIpLCQpLHRlbXA6ZiQuam9pbihFeixRLCQpfX07ZnVuY3Rpb24gYnooJCx7c3VmZml4OlE9XCJub2RlanNcIn09e30pe2lmKHR5cGVvZiAkIT09XCJzdHJpbmdcIil0aHJvdyBUeXBlRXJyb3IoYEV4cGVjdGVkIGEgc3RyaW5nLCBnb3QgJHt0eXBlb2YgJH1gKTtpZihRKSQrPWAtJHtRfWA7aWYoUHoucGxhdGZvcm09PT1cImRhcndpblwiKXJldHVybiBycygkKTtpZihQei5wbGF0Zm9ybT09PVwid2luMzJcIilyZXR1cm4gb3MoJCk7cmV0dXJuIHRzKCQpfXZhciB1MiQ9YnooXCJjbGF1ZGUtY2xpXCIpO2Z1bmN0aW9uIGFzKCl7aWYocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfRElTQUJMRV9OT05FU1NFTlRJQUxfVFJBRkZJQylyZXR1cm5cImVzc2VudGlhbC10cmFmZmljXCI7aWYocHJvY2Vzcy5lbnYuRElTQUJMRV9URUxFTUVUUlkpcmV0dXJuXCJuby10ZWxlbWV0cnlcIjtpZihSJChwcm9jZXNzLmVudi5ET19OT1RfVFJBQ0spKXJldHVyblwibm8tdGVsZW1ldHJ5XCI7cmV0dXJuXCJkZWZhdWx0XCJ9ZnVuY3Rpb24gQkUoKXtyZXR1cm4gYXMoKT09PVwiZXNzZW50aWFsLXRyYWZmaWNcIn12YXIgc3M9MTAwLF96PVtdO2Z1bmN0aW9uIGVzKCQpe2lmKF96Lmxlbmd0aD49c3MpX3ouc2hpZnQoKTtfei5wdXNoKCQpfXZhciAkZT1bXSx6RT1udWxsO3ZhciBWRCQ9diQoKCk9PntyZXR1cm4gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiLS1oYXJkLWZhaWxcIil9KTtmdW5jdGlvbiBYRygkKXtsZXQgUT1JNCgkKTt0cnl7aWYoUiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfVVNFX0JFRFJPQ0spfHxSJChwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9VU0VfVkVSVEVYKXx8UiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfVVNFX0ZPVU5EUlkpfHxSJChwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9VU0VfQU5USFJPUElDX0FXUyl8fFIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1VTRV9NQU5UTEUpfHxwcm9jZXNzLmVudi5ESVNBQkxFX0VSUk9SX1JFUE9SVElOR3x8QkUoKSlyZXR1cm47bGV0IFk9e2Vycm9yOlEuc3RhY2t8fFEubWVzc2FnZSx0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfTtpZihlcyhZKSx6RT09PW51bGwpeyRlLnB1c2goe3R5cGU6XCJlcnJvclwiLGVycm9yOlF9KTtyZXR1cm59ekUubG9nRXJyb3IoUSl9Y2F0Y2h7fX12YXIgUjk9dHlwZW9mIHBlcmZvcm1hbmNlPT09XCJvYmplY3RcIiYmcGVyZm9ybWFuY2UmJnR5cGVvZiBwZXJmb3JtYW5jZS5ub3c9PT1cImZ1bmN0aW9uXCI/cGVyZm9ybWFuY2U6RGF0ZSx3RT1uZXcgU2V0LFN6PXR5cGVvZiBwcm9jZXNzPT09XCJvYmplY3RcIiYmISFwcm9jZXNzP3Byb2Nlc3M6e30sT0U9KCQsUSxKLFkpPT57dHlwZW9mIFN6LmVtaXRXYXJuaW5nPT09XCJmdW5jdGlvblwiP1N6LmVtaXRXYXJuaW5nKCQsUSxKLFkpOmNvbnNvbGUuZXJyb3IoYFske0p9XSAke1F9OiAkeyR9YCl9LFlHPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyLE5FPWdsb2JhbFRoaXMuQWJvcnRTaWduYWw7aWYodHlwZW9mIFlHPlwidVwiKXtORT1jbGFzc3tvbmFib3J0O19vbmFib3J0PVtdO3JlYXNvbjthYm9ydGVkPSExO2FkZEV2ZW50TGlzdGVuZXIoWSxYKXt0aGlzLl9vbmFib3J0LnB1c2goWCl9fSxZRz1jbGFzc3tjb25zdHJ1Y3Rvcigpe1EoKX1zaWduYWw9bmV3IE5FO2Fib3J0KFkpe2lmKHRoaXMuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO3RoaXMuc2lnbmFsLnJlYXNvbj1ZLHRoaXMuc2lnbmFsLmFib3J0ZWQ9ITA7Zm9yKGxldCBYIG9mIHRoaXMuc2lnbmFsLl9vbmFib3J0KVgoWSk7dGhpcy5zaWduYWwub25hYm9ydD8uKFkpfX07bGV0ICQ9U3ouZW52Py5MUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkchPT1cIjFcIixRPSgpPT57aWYoISQpcmV0dXJuOyQ9ITEsT0UoXCJBYm9ydENvbnRyb2xsZXIgaXMgbm90IGRlZmluZWQuIElmIHVzaW5nIGxydS1jYWNoZSBpbiBub2RlIDE0LCBsb2FkIGFuIEFib3J0Q29udHJvbGxlciBwb2x5ZmlsbCBmcm9tIHRoZSBgbm9kZS1hYm9ydC1jb250cm9sbGVyYCBwYWNrYWdlLiBBIG1pbmltYWwgcG9seWZpbGwgaXMgcHJvdmlkZWQgZm9yIHVzZSBieSBMUlVDYWNoZS5mZXRjaCgpLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBpbiBvdGhlciBjb250ZXh0cyAoZWcsIHBhc3NpbmcgaXQgdG8gb3RoZXIgQVBJcyB0aGF0IHVzZSBBYm9ydENvbnRyb2xsZXIvQWJvcnRTaWduYWwgbWlnaHQgaGF2ZSB1bmRlc2lyYWJsZSBlZmZlY3RzKS4gWW91IG1heSBkaXNhYmxlIHRoaXMgd2l0aCBMUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkc9MSBpbiB0aGUgZW52LlwiLFwiTk9fQUJPUlRfQ09OVFJPTExFUlwiLFwiRU5PVFNVUFwiLFEpfX12YXIgUWU9KCQpPT4hd0UuaGFzKCQpLHpEJD1TeW1ib2woXCJ0eXBlXCIpLGQxPSgkKT0+JCYmJD09PU1hdGguZmxvb3IoJCkmJiQ+MCYmaXNGaW5pdGUoJCksREU9KCQpPT4hZDEoJCk/bnVsbDokPD1NYXRoLnBvdygyLDgpP1VpbnQ4QXJyYXk6JDw9TWF0aC5wb3coMiwxNik/VWludDE2QXJyYXk6JDw9TWF0aC5wb3coMiwzMik/VWludDMyQXJyYXk6JDw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/c0o6bnVsbDtjbGFzcyBzSiBleHRlbmRzIEFycmF5e2NvbnN0cnVjdG9yKCQpe3N1cGVyKCQpO3RoaXMuZmlsbCgwKX19Y2xhc3MgUDl7aGVhcDtsZW5ndGg7c3RhdGljI0g9ITE7c3RhdGljIGNyZWF0ZSgkKXtsZXQgUT1ERSgkKTtpZighUSlyZXR1cm5bXTtQOS4jSD0hMDtsZXQgSj1uZXcgUDkoJCxRKTtyZXR1cm4gUDkuI0g9ITEsSn1jb25zdHJ1Y3RvcigkLFEpe2lmKCFQOS4jSCl0aHJvdyBUeXBlRXJyb3IoXCJpbnN0YW50aWF0ZSBTdGFjayB1c2luZyBTdGFjay5jcmVhdGUobilcIik7dGhpcy5oZWFwPW5ldyBRKCQpLHRoaXMubGVuZ3RoPTB9cHVzaCgkKXt0aGlzLmhlYXBbdGhpcy5sZW5ndGgrK109JH1wb3AoKXtyZXR1cm4gdGhpcy5oZWFwWy0tdGhpcy5sZW5ndGhdfX1jbGFzcyBXR3sjSDsjVjsjdzsjTzsjUzsjazt0dGw7dHRsUmVzb2x1dGlvbjt0dGxBdXRvcHVyZ2U7dXBkYXRlQWdlT25HZXQ7dXBkYXRlQWdlT25IYXM7YWxsb3dTdGFsZTtub0Rpc3Bvc2VPblNldDtub1VwZGF0ZVRUTDttYXhFbnRyeVNpemU7c2l6ZUNhbGN1bGF0aW9uO25vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtub0RlbGV0ZU9uU3RhbGVHZXQ7YWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDthbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtpZ25vcmVGZXRjaEFib3J0OyNZOyNEOyNYOyNKOyMkOyNLOyNCOyNVOyNXOyNGOyNHOyNaOyNNOyN6OyNMOyNQOyNxO3N0YXRpYyB1bnNhZmVFeHBvc2VJbnRlcm5hbHMoJCl7cmV0dXJue3N0YXJ0czokLiNNLHR0bHM6JC4jeixzaXplczokLiNaLGtleU1hcDokLiNYLGtleUxpc3Q6JC4jSix2YWxMaXN0OiQuIyQsbmV4dDokLiNLLHByZXY6JC4jQixnZXQgaGVhZCgpe3JldHVybiAkLiNVfSxnZXQgdGFpbCgpe3JldHVybiAkLiNXfSxmcmVlOiQuI0YsaXNCYWNrZ3JvdW5kRmV0Y2g6KFEpPT4kLiNRKFEpLGJhY2tncm91bmRGZXRjaDooUSxKLFksWCk9PiQuI1QoUSxKLFksWCksbW92ZVRvVGFpbDooUSk9PiQuI18oUSksaW5kZXhlczooUSk9PiQuI2ooUSkscmluZGV4ZXM6KFEpPT4kLiNBKFEpLGlzU3RhbGU6KFEpPT4kLiNOKFEpfX1nZXQgbWF4KCl7cmV0dXJuIHRoaXMuI0h9Z2V0IG1heFNpemUoKXtyZXR1cm4gdGhpcy4jVn1nZXQgY2FsY3VsYXRlZFNpemUoKXtyZXR1cm4gdGhpcy4jRH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNZfWdldCBmZXRjaE1ldGhvZCgpe3JldHVybiB0aGlzLiNTfWdldCBtZW1vTWV0aG9kKCl7cmV0dXJuIHRoaXMuI2t9Z2V0IGRpc3Bvc2UoKXtyZXR1cm4gdGhpcy4jd31nZXQgZGlzcG9zZUFmdGVyKCl7cmV0dXJuIHRoaXMuI099Y29uc3RydWN0b3IoJCl7bGV0e21heDpRPTAsdHRsOkosdHRsUmVzb2x1dGlvbjpZPTEsdHRsQXV0b3B1cmdlOlgsdXBkYXRlQWdlT25HZXQ6Vyx1cGRhdGVBZ2VPbkhhczpHLGFsbG93U3RhbGU6VSxkaXNwb3NlOkgsZGlzcG9zZUFmdGVyOnEsbm9EaXNwb3NlT25TZXQ6Vixub1VwZGF0ZVRUTDpCLG1heFNpemU6ej0wLG1heEVudHJ5U2l6ZTpOPTAsc2l6ZUNhbGN1bGF0aW9uOncsZmV0Y2hNZXRob2Q6TyxtZW1vTWV0aG9kOkQsbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uOk0sbm9EZWxldGVPblN0YWxlR2V0OmosYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb246QSxhbGxvd1N0YWxlT25GZXRjaEFib3J0OmssaWdub3JlRmV0Y2hBYm9ydDp1fT0kO2lmKFEhPT0wJiYhZDEoUSkpdGhyb3cgVHlwZUVycm9yKFwibWF4IG9wdGlvbiBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlclwiKTtsZXQgRyQ9UT9ERShRKTpBcnJheTtpZighRyQpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIG1heCB2YWx1ZTogXCIrUSk7aWYodGhpcy4jSD1RLHRoaXMuI1Y9eix0aGlzLm1heEVudHJ5U2l6ZT1OfHx0aGlzLiNWLHRoaXMuc2l6ZUNhbGN1bGF0aW9uPXcsdGhpcy5zaXplQ2FsY3VsYXRpb24pe2lmKCF0aGlzLiNWJiYhdGhpcy5tYXhFbnRyeVNpemUpdGhyb3cgVHlwZUVycm9yKFwiY2Fubm90IHNldCBzaXplQ2FsY3VsYXRpb24gd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplXCIpO2lmKHR5cGVvZiB0aGlzLnNpemVDYWxjdWxhdGlvbiE9PVwiZnVuY3Rpb25cIil0aHJvdyBUeXBlRXJyb3IoXCJzaXplQ2FsY3VsYXRpb24gc2V0IHRvIG5vbi1mdW5jdGlvblwiKX1pZihEIT09dm9pZCAwJiZ0eXBlb2YgRCE9PVwiZnVuY3Rpb25cIil0aHJvdyBUeXBlRXJyb3IoXCJtZW1vTWV0aG9kIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBkZWZpbmVkXCIpO2lmKHRoaXMuI2s9RCxPIT09dm9pZCAwJiZ0eXBlb2YgTyE9PVwiZnVuY3Rpb25cIil0aHJvdyBUeXBlRXJyb3IoXCJmZXRjaE1ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgc3BlY2lmaWVkXCIpO2lmKHRoaXMuI1M9Tyx0aGlzLiNQPSEhTyx0aGlzLiNYPW5ldyBNYXAsdGhpcy4jSj1BcnJheShRKS5maWxsKHZvaWQgMCksdGhpcy4jJD1BcnJheShRKS5maWxsKHZvaWQgMCksdGhpcy4jSz1uZXcgRyQoUSksdGhpcy4jQj1uZXcgRyQoUSksdGhpcy4jVT0wLHRoaXMuI1c9MCx0aGlzLiNGPVA5LmNyZWF0ZShRKSx0aGlzLiNZPTAsdGhpcy4jRD0wLHR5cGVvZiBIPT09XCJmdW5jdGlvblwiKXRoaXMuI3c9SDtpZih0eXBlb2YgcT09PVwiZnVuY3Rpb25cIil0aGlzLiNPPXEsdGhpcy4jRz1bXTtlbHNlIHRoaXMuI089dm9pZCAwLHRoaXMuI0c9dm9pZCAwO2lmKHRoaXMuI0w9ISF0aGlzLiN3LHRoaXMuI3E9ISF0aGlzLiNPLHRoaXMubm9EaXNwb3NlT25TZXQ9ISFWLHRoaXMubm9VcGRhdGVUVEw9ISFCLHRoaXMubm9EZWxldGVPbkZldGNoUmVqZWN0aW9uPSEhTSx0aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uPSEhQSx0aGlzLmFsbG93U3RhbGVPbkZldGNoQWJvcnQ9ISFrLHRoaXMuaWdub3JlRmV0Y2hBYm9ydD0hIXUsdGhpcy5tYXhFbnRyeVNpemUhPT0wKXtpZih0aGlzLiNWIT09MCl7aWYoIWQxKHRoaXMuI1YpKXRocm93IFR5cGVFcnJvcihcIm1heFNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkXCIpfWlmKCFkMSh0aGlzLm1heEVudHJ5U2l6ZSkpdGhyb3cgVHlwZUVycm9yKFwibWF4RW50cnlTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZFwiKTt0aGlzLiNtKCl9aWYodGhpcy5hbGxvd1N0YWxlPSEhVSx0aGlzLm5vRGVsZXRlT25TdGFsZUdldD0hIWosdGhpcy51cGRhdGVBZ2VPbkdldD0hIVcsdGhpcy51cGRhdGVBZ2VPbkhhcz0hIUcsdGhpcy50dGxSZXNvbHV0aW9uPWQxKFkpfHxZPT09MD9ZOjEsdGhpcy50dGxBdXRvcHVyZ2U9ISFYLHRoaXMudHRsPUp8fDAsdGhpcy50dGwpe2lmKCFkMSh0aGlzLnR0bCkpdGhyb3cgVHlwZUVycm9yKFwidHRsIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZFwiKTt0aGlzLiN4KCl9aWYodGhpcy4jSD09PTAmJnRoaXMudHRsPT09MCYmdGhpcy4jVj09PTApdGhyb3cgVHlwZUVycm9yKFwiQXQgbGVhc3Qgb25lIG9mIG1heCwgbWF4U2l6ZSwgb3IgdHRsIGlzIHJlcXVpcmVkXCIpO2lmKCF0aGlzLnR0bEF1dG9wdXJnZSYmIXRoaXMuI0gmJiF0aGlzLiNWKXtpZihRZShcIkxSVV9DQUNIRV9VTkJPVU5ERURcIikpd0UuYWRkKFwiTFJVX0NBQ0hFX1VOQk9VTkRFRFwiKSxPRShcIlRUTCBjYWNoaW5nIHdpdGhvdXQgdHRsQXV0b3B1cmdlLCBtYXgsIG9yIG1heFNpemUgY2FuIHJlc3VsdCBpbiB1bmJvdW5kZWQgbWVtb3J5IGNvbnN1bXB0aW9uLlwiLFwiVW5ib3VuZGVkQ2FjaGVXYXJuaW5nXCIsXCJMUlVfQ0FDSEVfVU5CT1VOREVEXCIsV0cpfX1nZXRSZW1haW5pbmdUVEwoJCl7cmV0dXJuIHRoaXMuI1guaGFzKCQpPzEvMDowfSN4KCl7bGV0ICQ9bmV3IHNKKHRoaXMuI0gpLFE9bmV3IHNKKHRoaXMuI0gpO3RoaXMuI3o9JCx0aGlzLiNNPVEsdGhpcy4jZj0oWCxXLEc9Ujkubm93KCkpPT57aWYoUVtYXT1XIT09MD9HOjAsJFtYXT1XLFchPT0wJiZ0aGlzLnR0bEF1dG9wdXJnZSl7bGV0IFU9c2V0VGltZW91dCgoKT0+e2lmKHRoaXMuI04oWCkpdGhpcy4jSSh0aGlzLiNKW1hdLFwiZXhwaXJlXCIpfSxXKzEpO2lmKFUudW5yZWYpVS51bnJlZigpfX0sdGhpcy4jRT0oWCk9PntRW1hdPSRbWF0hPT0wP1I5Lm5vdygpOjB9LHRoaXMuI1I9KFgsVyk9PntpZigkW1ddKXtsZXQgRz0kW1ddLFU9UVtXXTtpZighR3x8IVUpcmV0dXJuO1gudHRsPUcsWC5zdGFydD1VLFgubm93PUp8fFkoKTtsZXQgSD1YLm5vdy1VO1gucmVtYWluaW5nVFRMPUctSH19O2xldCBKPTAsWT0oKT0+e2xldCBYPVI5Lm5vdygpO2lmKHRoaXMudHRsUmVzb2x1dGlvbj4wKXtKPVg7bGV0IFc9c2V0VGltZW91dCgoKT0+Sj0wLHRoaXMudHRsUmVzb2x1dGlvbik7aWYoVy51bnJlZilXLnVucmVmKCl9cmV0dXJuIFh9O3RoaXMuZ2V0UmVtYWluaW5nVFRMPShYKT0+e2xldCBXPXRoaXMuI1guZ2V0KFgpO2lmKFc9PT12b2lkIDApcmV0dXJuIDA7bGV0IEc9JFtXXSxVPVFbV107aWYoIUd8fCFVKXJldHVybiAxLzA7bGV0IEg9KEp8fFkoKSktVTtyZXR1cm4gRy1IfSx0aGlzLiNOPShYKT0+e2xldCBXPVFbWF0sRz0kW1hdO3JldHVybiEhRyYmISFXJiYoSnx8WSgpKS1XPkd9fSNFPSgpPT57fTsjUj0oKT0+e307I2Y9KCk9Pnt9OyNOPSgpPT4hMTsjbSgpe2xldCAkPW5ldyBzSih0aGlzLiNIKTt0aGlzLiNEPTAsdGhpcy4jWj0kLHRoaXMuI2I9KFEpPT57dGhpcy4jRC09JFtRXSwkW1FdPTB9LHRoaXMuI3k9KFEsSixZLFgpPT57aWYodGhpcy4jUShKKSlyZXR1cm4gMDtpZighZDEoWSkpaWYoWCl7aWYodHlwZW9mIFghPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKFwic2l6ZUNhbGN1bGF0aW9uIG11c3QgYmUgYSBmdW5jdGlvblwiKTtpZihZPVgoSixRKSwhZDEoWSkpdGhyb3cgVHlwZUVycm9yKFwic2l6ZUNhbGN1bGF0aW9uIHJldHVybiBpbnZhbGlkIChleHBlY3QgcG9zaXRpdmUgaW50ZWdlcilcIil9ZWxzZSB0aHJvdyBUeXBlRXJyb3IoXCJpbnZhbGlkIHNpemUgdmFsdWUgKG11c3QgYmUgcG9zaXRpdmUgaW50ZWdlcikuIFdoZW4gbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgaXMgdXNlZCwgc2l6ZUNhbGN1bGF0aW9uIG9yIHNpemUgbXVzdCBiZSBzZXQuXCIpO3JldHVybiBZfSx0aGlzLiN2PShRLEosWSk9PntpZigkW1FdPUosdGhpcy4jVil7bGV0IFg9dGhpcy4jVi0kW1FdO3doaWxlKHRoaXMuI0Q+WCl0aGlzLiNDKCEwKX1pZih0aGlzLiNEKz0kW1FdLFkpWS5lbnRyeVNpemU9SixZLnRvdGFsQ2FsY3VsYXRlZFNpemU9dGhpcy4jRH19I2I9KCQpPT57fTsjdj0oJCxRLEopPT57fTsjeT0oJCxRLEosWSk9PntpZihKfHxZKXRocm93IFR5cGVFcnJvcihcImNhbm5vdCBzZXQgc2l6ZSB3aXRob3V0IHNldHRpbmcgbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgb24gY2FjaGVcIik7cmV0dXJuIDB9Oyojaih7YWxsb3dTdGFsZTokPXRoaXMuYWxsb3dTdGFsZX09e30pe2lmKHRoaXMuI1kpZm9yKGxldCBRPXRoaXMuI1c7Oyl7aWYoIXRoaXMuI2coUSkpYnJlYWs7aWYoJHx8IXRoaXMuI04oUSkpeWllbGQgUTtpZihRPT09dGhpcy4jVSlicmVhaztlbHNlIFE9dGhpcy4jQltRXX19KiNBKHthbGxvd1N0YWxlOiQ9dGhpcy5hbGxvd1N0YWxlfT17fSl7aWYodGhpcy4jWSlmb3IobGV0IFE9dGhpcy4jVTs7KXtpZighdGhpcy4jZyhRKSlicmVhaztpZigkfHwhdGhpcy4jTihRKSl5aWVsZCBRO2lmKFE9PT10aGlzLiNXKWJyZWFrO2Vsc2UgUT10aGlzLiNLW1FdfX0jZygkKXtyZXR1cm4gJCE9PXZvaWQgMCYmdGhpcy4jWC5nZXQodGhpcy4jSlskXSk9PT0kfSplbnRyaWVzKCl7Zm9yKGxldCAkIG9mIHRoaXMuI2ooKSlpZih0aGlzLiMkWyRdIT09dm9pZCAwJiZ0aGlzLiNKWyRdIT09dm9pZCAwJiYhdGhpcy4jUSh0aGlzLiMkWyRdKSl5aWVsZFt0aGlzLiNKWyRdLHRoaXMuIyRbJF1dfSpyZW50cmllcygpe2ZvcihsZXQgJCBvZiB0aGlzLiNBKCkpaWYodGhpcy4jJFskXSE9PXZvaWQgMCYmdGhpcy4jSlskXSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGRbdGhpcy4jSlskXSx0aGlzLiMkWyRdXX0qa2V5cygpe2ZvcihsZXQgJCBvZiB0aGlzLiNqKCkpe2xldCBRPXRoaXMuI0pbJF07aWYoUSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGQgUX19KnJrZXlzKCl7Zm9yKGxldCAkIG9mIHRoaXMuI0EoKSl7bGV0IFE9dGhpcy4jSlskXTtpZihRIT09dm9pZCAwJiYhdGhpcy4jUSh0aGlzLiMkWyRdKSl5aWVsZCBRfX0qdmFsdWVzKCl7Zm9yKGxldCAkIG9mIHRoaXMuI2ooKSlpZih0aGlzLiMkWyRdIT09dm9pZCAwJiYhdGhpcy4jUSh0aGlzLiMkWyRdKSl5aWVsZCB0aGlzLiMkWyRdfSpydmFsdWVzKCl7Zm9yKGxldCAkIG9mIHRoaXMuI0EoKSlpZih0aGlzLiMkWyRdIT09dm9pZCAwJiYhdGhpcy4jUSh0aGlzLiMkWyRdKSl5aWVsZCB0aGlzLiMkWyRdfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfVtTeW1ib2wudG9TdHJpbmdUYWddPVwiTFJVQ2FjaGVcIjtmaW5kKCQsUT17fSl7Zm9yKGxldCBKIG9mIHRoaXMuI2ooKSl7bGV0IFk9dGhpcy4jJFtKXSxYPXRoaXMuI1EoWSk/WS5fX3N0YWxlV2hpbGVGZXRjaGluZzpZO2lmKFg9PT12b2lkIDApY29udGludWU7aWYoJChYLHRoaXMuI0pbSl0sdGhpcykpcmV0dXJuIHRoaXMuZ2V0KHRoaXMuI0pbSl0sUSl9fWZvckVhY2goJCxRPXRoaXMpe2ZvcihsZXQgSiBvZiB0aGlzLiNqKCkpe2xldCBZPXRoaXMuIyRbSl0sWD10aGlzLiNRKFkpP1kuX19zdGFsZVdoaWxlRmV0Y2hpbmc6WTtpZihYPT09dm9pZCAwKWNvbnRpbnVlOyQuY2FsbChRLFgsdGhpcy4jSltKXSx0aGlzKX19cmZvckVhY2goJCxRPXRoaXMpe2ZvcihsZXQgSiBvZiB0aGlzLiNBKCkpe2xldCBZPXRoaXMuIyRbSl0sWD10aGlzLiNRKFkpP1kuX19zdGFsZVdoaWxlRmV0Y2hpbmc6WTtpZihYPT09dm9pZCAwKWNvbnRpbnVlOyQuY2FsbChRLFgsdGhpcy4jSltKXSx0aGlzKX19cHVyZ2VTdGFsZSgpe2xldCAkPSExO2ZvcihsZXQgUSBvZiB0aGlzLiNBKHthbGxvd1N0YWxlOiEwfSkpaWYodGhpcy4jTihRKSl0aGlzLiNJKHRoaXMuI0pbUV0sXCJleHBpcmVcIiksJD0hMDtyZXR1cm4gJH1pbmZvKCQpe2xldCBRPXRoaXMuI1guZ2V0KCQpO2lmKFE9PT12b2lkIDApcmV0dXJuO2xldCBKPXRoaXMuIyRbUV0sWT10aGlzLiNRKEopP0ouX19zdGFsZVdoaWxlRmV0Y2hpbmc6SjtpZihZPT09dm9pZCAwKXJldHVybjtsZXQgWD17dmFsdWU6WX07aWYodGhpcy4jeiYmdGhpcy4jTSl7bGV0IFc9dGhpcy4jeltRXSxHPXRoaXMuI01bUV07aWYoVyYmRyl7bGV0IFU9Vy0oUjkubm93KCktRyk7WC50dGw9VSxYLnN0YXJ0PURhdGUubm93KCl9fWlmKHRoaXMuI1opWC5zaXplPXRoaXMuI1pbUV07cmV0dXJuIFh9ZHVtcCgpe2xldCAkPVtdO2ZvcihsZXQgUSBvZiB0aGlzLiNqKHthbGxvd1N0YWxlOiEwfSkpe2xldCBKPXRoaXMuI0pbUV0sWT10aGlzLiMkW1FdLFg9dGhpcy4jUShZKT9ZLl9fc3RhbGVXaGlsZUZldGNoaW5nOlk7aWYoWD09PXZvaWQgMHx8Sj09PXZvaWQgMCljb250aW51ZTtsZXQgVz17dmFsdWU6WH07aWYodGhpcy4jeiYmdGhpcy4jTSl7Vy50dGw9dGhpcy4jeltRXTtsZXQgRz1SOS5ub3coKS10aGlzLiNNW1FdO1cuc3RhcnQ9TWF0aC5mbG9vcihEYXRlLm5vdygpLUcpfWlmKHRoaXMuI1opVy5zaXplPXRoaXMuI1pbUV07JC51bnNoaWZ0KFtKLFddKX1yZXR1cm4gJH1sb2FkKCQpe3RoaXMuY2xlYXIoKTtmb3IobGV0W1EsSl1vZiAkKXtpZihKLnN0YXJ0KXtsZXQgWT1EYXRlLm5vdygpLUouc3RhcnQ7Si5zdGFydD1SOS5ub3coKS1ZfXRoaXMuc2V0KFEsSi52YWx1ZSxKKX19c2V0KCQsUSxKPXt9KXtpZihRPT09dm9pZCAwKXJldHVybiB0aGlzLmRlbGV0ZSgkKSx0aGlzO2xldHt0dGw6WT10aGlzLnR0bCxzdGFydDpYLG5vRGlzcG9zZU9uU2V0Olc9dGhpcy5ub0Rpc3Bvc2VPblNldCxzaXplQ2FsY3VsYXRpb246Rz10aGlzLnNpemVDYWxjdWxhdGlvbixzdGF0dXM6VX09Six7bm9VcGRhdGVUVEw6SD10aGlzLm5vVXBkYXRlVFRMfT1KLHE9dGhpcy4jeSgkLFEsSi5zaXplfHwwLEcpO2lmKHRoaXMubWF4RW50cnlTaXplJiZxPnRoaXMubWF4RW50cnlTaXplKXtpZihVKVUuc2V0PVwibWlzc1wiLFUubWF4RW50cnlTaXplRXhjZWVkZWQ9ITA7cmV0dXJuIHRoaXMuI0koJCxcInNldFwiKSx0aGlzfWxldCBWPXRoaXMuI1k9PT0wP3ZvaWQgMDp0aGlzLiNYLmdldCgkKTtpZihWPT09dm9pZCAwKXtpZihWPXRoaXMuI1k9PT0wP3RoaXMuI1c6dGhpcy4jRi5sZW5ndGghPT0wP3RoaXMuI0YucG9wKCk6dGhpcy4jWT09PXRoaXMuI0g/dGhpcy4jQyghMSk6dGhpcy4jWSx0aGlzLiNKW1ZdPSQsdGhpcy4jJFtWXT1RLHRoaXMuI1guc2V0KCQsViksdGhpcy4jS1t0aGlzLiNXXT1WLHRoaXMuI0JbVl09dGhpcy4jVyx0aGlzLiNXPVYsdGhpcy4jWSsrLHRoaXMuI3YoVixxLFUpLFUpVS5zZXQ9XCJhZGRcIjtIPSExfWVsc2V7dGhpcy4jXyhWKTtsZXQgQj10aGlzLiMkW1ZdO2lmKFEhPT1CKXtpZih0aGlzLiNQJiZ0aGlzLiNRKEIpKXtCLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KEVycm9yKFwicmVwbGFjZWRcIikpO2xldHtfX3N0YWxlV2hpbGVGZXRjaGluZzp6fT1CO2lmKHohPT12b2lkIDAmJiFXKXtpZih0aGlzLiNMKXRoaXMuI3c/Lih6LCQsXCJzZXRcIik7aWYodGhpcy4jcSl0aGlzLiNHPy5wdXNoKFt6LCQsXCJzZXRcIl0pfX1lbHNlIGlmKCFXKXtpZih0aGlzLiNMKXRoaXMuI3c/LihCLCQsXCJzZXRcIik7aWYodGhpcy4jcSl0aGlzLiNHPy5wdXNoKFtCLCQsXCJzZXRcIl0pfWlmKHRoaXMuI2IoViksdGhpcy4jdihWLHEsVSksdGhpcy4jJFtWXT1RLFUpe1Uuc2V0PVwicmVwbGFjZVwiO2xldCB6PUImJnRoaXMuI1EoQik/Qi5fX3N0YWxlV2hpbGVGZXRjaGluZzpCO2lmKHohPT12b2lkIDApVS5vbGRWYWx1ZT16fX1lbHNlIGlmKFUpVS5zZXQ9XCJ1cGRhdGVcIn1pZihZIT09MCYmIXRoaXMuI3opdGhpcy4jeCgpO2lmKHRoaXMuI3ope2lmKCFIKXRoaXMuI2YoVixZLFgpO2lmKFUpdGhpcy4jUihVLFYpfWlmKCFXJiZ0aGlzLiNxJiZ0aGlzLiNHKXtsZXQgQj10aGlzLiNHLHo7d2hpbGUoej1CPy5zaGlmdCgpKXRoaXMuI08/LiguLi56KX1yZXR1cm4gdGhpc31wb3AoKXt0cnl7d2hpbGUodGhpcy4jWSl7bGV0ICQ9dGhpcy4jJFt0aGlzLiNVXTtpZih0aGlzLiNDKCEwKSx0aGlzLiNRKCQpKXtpZigkLl9fc3RhbGVXaGlsZUZldGNoaW5nKXJldHVybiAkLl9fc3RhbGVXaGlsZUZldGNoaW5nfWVsc2UgaWYoJCE9PXZvaWQgMClyZXR1cm4gJH19ZmluYWxseXtpZih0aGlzLiNxJiZ0aGlzLiNHKXtsZXQgJD10aGlzLiNHLFE7d2hpbGUoUT0kPy5zaGlmdCgpKXRoaXMuI08/LiguLi5RKX19fSNDKCQpe2xldCBRPXRoaXMuI1UsSj10aGlzLiNKW1FdLFk9dGhpcy4jJFtRXTtpZih0aGlzLiNQJiZ0aGlzLiNRKFkpKVkuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQoRXJyb3IoXCJldmljdGVkXCIpKTtlbHNlIGlmKHRoaXMuI0x8fHRoaXMuI3Epe2lmKHRoaXMuI0wpdGhpcy4jdz8uKFksSixcImV2aWN0XCIpO2lmKHRoaXMuI3EpdGhpcy4jRz8ucHVzaChbWSxKLFwiZXZpY3RcIl0pfWlmKHRoaXMuI2IoUSksJCl0aGlzLiNKW1FdPXZvaWQgMCx0aGlzLiMkW1FdPXZvaWQgMCx0aGlzLiNGLnB1c2goUSk7aWYodGhpcy4jWT09PTEpdGhpcy4jVT10aGlzLiNXPTAsdGhpcy4jRi5sZW5ndGg9MDtlbHNlIHRoaXMuI1U9dGhpcy4jS1tRXTtyZXR1cm4gdGhpcy4jWC5kZWxldGUoSiksdGhpcy4jWS0tLFF9aGFzKCQsUT17fSl7bGV0e3VwZGF0ZUFnZU9uSGFzOko9dGhpcy51cGRhdGVBZ2VPbkhhcyxzdGF0dXM6WX09USxYPXRoaXMuI1guZ2V0KCQpO2lmKFghPT12b2lkIDApe2xldCBXPXRoaXMuIyRbWF07aWYodGhpcy4jUShXKSYmVy5fX3N0YWxlV2hpbGVGZXRjaGluZz09PXZvaWQgMClyZXR1cm4hMTtpZighdGhpcy4jTihYKSl7aWYoSil0aGlzLiNFKFgpO2lmKFkpWS5oYXM9XCJoaXRcIix0aGlzLiNSKFksWCk7cmV0dXJuITB9ZWxzZSBpZihZKVkuaGFzPVwic3RhbGVcIix0aGlzLiNSKFksWCl9ZWxzZSBpZihZKVkuaGFzPVwibWlzc1wiO3JldHVybiExfXBlZWsoJCxRPXt9KXtsZXR7YWxsb3dTdGFsZTpKPXRoaXMuYWxsb3dTdGFsZX09USxZPXRoaXMuI1guZ2V0KCQpO2lmKFk9PT12b2lkIDB8fCFKJiZ0aGlzLiNOKFkpKXJldHVybjtsZXQgWD10aGlzLiMkW1ldO3JldHVybiB0aGlzLiNRKFgpP1guX19zdGFsZVdoaWxlRmV0Y2hpbmc6WH0jVCgkLFEsSixZKXtsZXQgWD1RPT09dm9pZCAwP3ZvaWQgMDp0aGlzLiMkW1FdO2lmKHRoaXMuI1EoWCkpcmV0dXJuIFg7bGV0IFc9bmV3IFlHLHtzaWduYWw6R309SjtHPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+Vy5hYm9ydChHLnJlYXNvbikse3NpZ25hbDpXLnNpZ25hbH0pO2xldCBVPXtzaWduYWw6Vy5zaWduYWwsb3B0aW9uczpKLGNvbnRleHQ6WX0sSD0odyxPPSExKT0+e2xldHthYm9ydGVkOkR9PVcuc2lnbmFsLE09Si5pZ25vcmVGZXRjaEFib3J0JiZ3IT09dm9pZCAwO2lmKEouc3RhdHVzKWlmKEQmJiFPKXtpZihKLnN0YXR1cy5mZXRjaEFib3J0ZWQ9ITAsSi5zdGF0dXMuZmV0Y2hFcnJvcj1XLnNpZ25hbC5yZWFzb24sTSlKLnN0YXR1cy5mZXRjaEFib3J0SWdub3JlZD0hMH1lbHNlIEouc3RhdHVzLmZldGNoUmVzb2x2ZWQ9ITA7aWYoRCYmIU0mJiFPKXJldHVybiBWKFcuc2lnbmFsLnJlYXNvbik7bGV0IGo9ejtpZih0aGlzLiMkW1FdPT09eilpZih3PT09dm9pZCAwKWlmKGouX19zdGFsZVdoaWxlRmV0Y2hpbmcpdGhpcy4jJFtRXT1qLl9fc3RhbGVXaGlsZUZldGNoaW5nO2Vsc2UgdGhpcy4jSSgkLFwiZmV0Y2hcIik7ZWxzZXtpZihKLnN0YXR1cylKLnN0YXR1cy5mZXRjaFVwZGF0ZWQ9ITA7dGhpcy5zZXQoJCx3LFUub3B0aW9ucyl9cmV0dXJuIHd9LHE9KHcpPT57aWYoSi5zdGF0dXMpSi5zdGF0dXMuZmV0Y2hSZWplY3RlZD0hMCxKLnN0YXR1cy5mZXRjaEVycm9yPXc7cmV0dXJuIFYodyl9LFY9KHcpPT57bGV0e2Fib3J0ZWQ6T309Vy5zaWduYWwsRD1PJiZKLmFsbG93U3RhbGVPbkZldGNoQWJvcnQsTT1EfHxKLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLGo9TXx8Si5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sQT16O2lmKHRoaXMuIyRbUV09PT16KXtpZighanx8QS5fX3N0YWxlV2hpbGVGZXRjaGluZz09PXZvaWQgMCl0aGlzLiNJKCQsXCJmZXRjaFwiKTtlbHNlIGlmKCFEKXRoaXMuIyRbUV09QS5fX3N0YWxlV2hpbGVGZXRjaGluZ31pZihNKXtpZihKLnN0YXR1cyYmQS5fX3N0YWxlV2hpbGVGZXRjaGluZyE9PXZvaWQgMClKLnN0YXR1cy5yZXR1cm5lZFN0YWxlPSEwO3JldHVybiBBLl9fc3RhbGVXaGlsZUZldGNoaW5nfWVsc2UgaWYoQS5fX3JldHVybmVkPT09QSl0aHJvdyB3fSxCPSh3LE8pPT57bGV0IEQ9dGhpcy4jUz8uKCQsWCxVKTtpZihEJiZEIGluc3RhbmNlb2YgUHJvbWlzZSlELnRoZW4oKE0pPT53KE09PT12b2lkIDA/dm9pZCAwOk0pLE8pO1cuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCgpPT57aWYoIUouaWdub3JlRmV0Y2hBYm9ydHx8Si5hbGxvd1N0YWxlT25GZXRjaEFib3J0KXtpZih3KHZvaWQgMCksSi5hbGxvd1N0YWxlT25GZXRjaEFib3J0KXc9KE0pPT5IKE0sITApfX0pfTtpZihKLnN0YXR1cylKLnN0YXR1cy5mZXRjaERpc3BhdGNoZWQ9ITA7bGV0IHo9bmV3IFByb21pc2UoQikudGhlbihILHEpLE49T2JqZWN0LmFzc2lnbih6LHtfX2Fib3J0Q29udHJvbGxlcjpXLF9fc3RhbGVXaGlsZUZldGNoaW5nOlgsX19yZXR1cm5lZDp2b2lkIDB9KTtpZihRPT09dm9pZCAwKXRoaXMuc2V0KCQsTix7Li4uVS5vcHRpb25zLHN0YXR1czp2b2lkIDB9KSxRPXRoaXMuI1guZ2V0KCQpO2Vsc2UgdGhpcy4jJFtRXT1OO3JldHVybiBOfSNRKCQpe2lmKCF0aGlzLiNQKXJldHVybiExO2xldCBRPSQ7cmV0dXJuISFRJiZRIGluc3RhbmNlb2YgUHJvbWlzZSYmUS5oYXNPd25Qcm9wZXJ0eShcIl9fc3RhbGVXaGlsZUZldGNoaW5nXCIpJiZRLl9fYWJvcnRDb250cm9sbGVyIGluc3RhbmNlb2YgWUd9YXN5bmMgZmV0Y2goJCxRPXt9KXtsZXR7YWxsb3dTdGFsZTpKPXRoaXMuYWxsb3dTdGFsZSx1cGRhdGVBZ2VPbkdldDpZPXRoaXMudXBkYXRlQWdlT25HZXQsbm9EZWxldGVPblN0YWxlR2V0Olg9dGhpcy5ub0RlbGV0ZU9uU3RhbGVHZXQsdHRsOlc9dGhpcy50dGwsbm9EaXNwb3NlT25TZXQ6Rz10aGlzLm5vRGlzcG9zZU9uU2V0LHNpemU6VT0wLHNpemVDYWxjdWxhdGlvbjpIPXRoaXMuc2l6ZUNhbGN1bGF0aW9uLG5vVXBkYXRlVFRMOnE9dGhpcy5ub1VwZGF0ZVRUTCxub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb246Vj10aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbixhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjpCPXRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24saWdub3JlRmV0Y2hBYm9ydDp6PXRoaXMuaWdub3JlRmV0Y2hBYm9ydCxhbGxvd1N0YWxlT25GZXRjaEFib3J0Ok49dGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0LGNvbnRleHQ6dyxmb3JjZVJlZnJlc2g6Tz0hMSxzdGF0dXM6RCxzaWduYWw6TX09UTtpZighdGhpcy4jUCl7aWYoRClELmZldGNoPVwiZ2V0XCI7cmV0dXJuIHRoaXMuZ2V0KCQse2FsbG93U3RhbGU6Six1cGRhdGVBZ2VPbkdldDpZLG5vRGVsZXRlT25TdGFsZUdldDpYLHN0YXR1czpEfSl9bGV0IGo9e2FsbG93U3RhbGU6Six1cGRhdGVBZ2VPbkdldDpZLG5vRGVsZXRlT25TdGFsZUdldDpYLHR0bDpXLG5vRGlzcG9zZU9uU2V0Okcsc2l6ZTpVLHNpemVDYWxjdWxhdGlvbjpILG5vVXBkYXRlVFRMOnEsbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uOlYsYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb246QixhbGxvd1N0YWxlT25GZXRjaEFib3J0Ok4saWdub3JlRmV0Y2hBYm9ydDp6LHN0YXR1czpELHNpZ25hbDpNfSxBPXRoaXMuI1guZ2V0KCQpO2lmKEE9PT12b2lkIDApe2lmKEQpRC5mZXRjaD1cIm1pc3NcIjtsZXQgaz10aGlzLiNUKCQsQSxqLHcpO3JldHVybiBrLl9fcmV0dXJuZWQ9a31lbHNle2xldCBrPXRoaXMuIyRbQV07aWYodGhpcy4jUShrKSl7bGV0IHU2PUomJmsuX19zdGFsZVdoaWxlRmV0Y2hpbmchPT12b2lkIDA7aWYoRCl7aWYoRC5mZXRjaD1cImluZmxpZ2h0XCIsdTYpRC5yZXR1cm5lZFN0YWxlPSEwfXJldHVybiB1Nj9rLl9fc3RhbGVXaGlsZUZldGNoaW5nOmsuX19yZXR1cm5lZD1rfWxldCB1PXRoaXMuI04oQSk7aWYoIU8mJiF1KXtpZihEKUQuZmV0Y2g9XCJoaXRcIjtpZih0aGlzLiNfKEEpLFkpdGhpcy4jRShBKTtpZihEKXRoaXMuI1IoRCxBKTtyZXR1cm4ga31sZXQgRyQ9dGhpcy4jVCgkLEEsaix3KSxzJD1HJC5fX3N0YWxlV2hpbGVGZXRjaGluZyE9PXZvaWQgMCYmSjtpZihEKXtpZihELmZldGNoPXU/XCJzdGFsZVwiOlwicmVmcmVzaFwiLHMkJiZ1KUQucmV0dXJuZWRTdGFsZT0hMH1yZXR1cm4gcyQ/RyQuX19zdGFsZVdoaWxlRmV0Y2hpbmc6RyQuX19yZXR1cm5lZD1HJH19YXN5bmMgZm9yY2VGZXRjaCgkLFE9e30pe2xldCBKPWF3YWl0IHRoaXMuZmV0Y2goJCxRKTtpZihKPT09dm9pZCAwKXRocm93IEVycm9yKFwiZmV0Y2goKSByZXR1cm5lZCB1bmRlZmluZWRcIik7cmV0dXJuIEp9bWVtbygkLFE9e30pe2xldCBKPXRoaXMuI2s7aWYoIUopdGhyb3cgRXJyb3IoXCJubyBtZW1vTWV0aG9kIHByb3ZpZGVkIHRvIGNvbnN0cnVjdG9yXCIpO2xldHtjb250ZXh0OlksZm9yY2VSZWZyZXNoOlgsLi4uV309USxHPXRoaXMuZ2V0KCQsVyk7aWYoIVgmJkchPT12b2lkIDApcmV0dXJuIEc7bGV0IFU9SigkLEcse29wdGlvbnM6Vyxjb250ZXh0Oll9KTtyZXR1cm4gdGhpcy5zZXQoJCxVLFcpLFV9Z2V0KCQsUT17fSl7bGV0e2FsbG93U3RhbGU6Sj10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6WT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpYPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHN0YXR1czpXfT1RLEc9dGhpcy4jWC5nZXQoJCk7aWYoRyE9PXZvaWQgMCl7bGV0IFU9dGhpcy4jJFtHXSxIPXRoaXMuI1EoVSk7aWYoVyl0aGlzLiNSKFcsRyk7aWYodGhpcy4jTihHKSl7aWYoVylXLmdldD1cInN0YWxlXCI7aWYoIUgpe2lmKCFYKXRoaXMuI0koJCxcImV4cGlyZVwiKTtpZihXJiZKKVcucmV0dXJuZWRTdGFsZT0hMDtyZXR1cm4gSj9VOnZvaWQgMH1lbHNle2lmKFcmJkomJlUuX19zdGFsZVdoaWxlRmV0Y2hpbmchPT12b2lkIDApVy5yZXR1cm5lZFN0YWxlPSEwO3JldHVybiBKP1UuX19zdGFsZVdoaWxlRmV0Y2hpbmc6dm9pZCAwfX1lbHNle2lmKFcpVy5nZXQ9XCJoaXRcIjtpZihIKXJldHVybiBVLl9fc3RhbGVXaGlsZUZldGNoaW5nO2lmKHRoaXMuI18oRyksWSl0aGlzLiNFKEcpO3JldHVybiBVfX1lbHNlIGlmKFcpVy5nZXQ9XCJtaXNzXCJ9I2goJCxRKXt0aGlzLiNCW1FdPSQsdGhpcy4jS1skXT1RfSNfKCQpe2lmKCQhPT10aGlzLiNXKXtpZigkPT09dGhpcy4jVSl0aGlzLiNVPXRoaXMuI0tbJF07ZWxzZSB0aGlzLiNoKHRoaXMuI0JbJF0sdGhpcy4jS1skXSk7dGhpcy4jaCh0aGlzLiNXLCQpLHRoaXMuI1c9JH19ZGVsZXRlKCQpe3JldHVybiB0aGlzLiNJKCQsXCJkZWxldGVcIil9I0koJCxRKXtsZXQgSj0hMTtpZih0aGlzLiNZIT09MCl7bGV0IFk9dGhpcy4jWC5nZXQoJCk7aWYoWSE9PXZvaWQgMClpZihKPSEwLHRoaXMuI1k9PT0xKXRoaXMuI3UoUSk7ZWxzZXt0aGlzLiNiKFkpO2xldCBYPXRoaXMuIyRbWV07aWYodGhpcy4jUShYKSlYLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KEVycm9yKFwiZGVsZXRlZFwiKSk7ZWxzZSBpZih0aGlzLiNMfHx0aGlzLiNxKXtpZih0aGlzLiNMKXRoaXMuI3c/LihYLCQsUSk7aWYodGhpcy4jcSl0aGlzLiNHPy5wdXNoKFtYLCQsUV0pfWlmKHRoaXMuI1guZGVsZXRlKCQpLHRoaXMuI0pbWV09dm9pZCAwLHRoaXMuIyRbWV09dm9pZCAwLFk9PT10aGlzLiNXKXRoaXMuI1c9dGhpcy4jQltZXTtlbHNlIGlmKFk9PT10aGlzLiNVKXRoaXMuI1U9dGhpcy4jS1tZXTtlbHNle2xldCBXPXRoaXMuI0JbWV07dGhpcy4jS1tXXT10aGlzLiNLW1ldO2xldCBHPXRoaXMuI0tbWV07dGhpcy4jQltHXT10aGlzLiNCW1ldfXRoaXMuI1ktLSx0aGlzLiNGLnB1c2goWSl9fWlmKHRoaXMuI3EmJnRoaXMuI0c/Lmxlbmd0aCl7bGV0IFk9dGhpcy4jRyxYO3doaWxlKFg9WT8uc2hpZnQoKSl0aGlzLiNPPy4oLi4uWCl9cmV0dXJuIEp9Y2xlYXIoKXtyZXR1cm4gdGhpcy4jdShcImRlbGV0ZVwiKX0jdSgkKXtmb3IobGV0IFEgb2YgdGhpcy4jQSh7YWxsb3dTdGFsZTohMH0pKXtsZXQgSj10aGlzLiMkW1FdO2lmKHRoaXMuI1EoSikpSi5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChFcnJvcihcImRlbGV0ZWRcIikpO2Vsc2V7bGV0IFk9dGhpcy4jSltRXTtpZih0aGlzLiNMKXRoaXMuI3c/LihKLFksJCk7aWYodGhpcy4jcSl0aGlzLiNHPy5wdXNoKFtKLFksJF0pfX1pZih0aGlzLiNYLmNsZWFyKCksdGhpcy4jJC5maWxsKHZvaWQgMCksdGhpcy4jSi5maWxsKHZvaWQgMCksdGhpcy4jeiYmdGhpcy4jTSl0aGlzLiN6LmZpbGwoMCksdGhpcy4jTS5maWxsKDApO2lmKHRoaXMuI1opdGhpcy4jWi5maWxsKDApO2lmKHRoaXMuI1U9MCx0aGlzLiNXPTAsdGhpcy4jRi5sZW5ndGg9MCx0aGlzLiNEPTAsdGhpcy4jWT0wLHRoaXMuI3EmJnRoaXMuI0cpe2xldCBRPXRoaXMuI0csSjt3aGlsZShKPVE/LnNoaWZ0KCkpdGhpcy4jTz8uKC4uLkopfX19ZnVuY3Rpb24gRkUoJCxRLEo9MTAwKXtsZXQgWT1uZXcgV0coe21heDpKfSksWD0oLi4uVyk9PntsZXQgRz1RKC4uLlcpLFU9WS5nZXQoRyk7aWYoVSE9PXZvaWQgMClyZXR1cm4gVTtsZXQgSD0kKC4uLlcpO3JldHVybiBZLnNldChHLEgpLEh9O3JldHVybiBYLmNhY2hlPXtjbGVhcjooKT0+WS5jbGVhcigpLHNpemU6KCk9Plkuc2l6ZSxkZWxldGU6KFcpPT5ZLmRlbGV0ZShXKSxnZXQ6KFcpPT5ZLnBlZWsoVyksaGFzOihXKT0+WS5oYXMoVyl9LFh9dmFyIEplPTgxOTI7ZnVuY3Rpb24gTUUoJCxRKXt0cnl7cmV0dXJue29rOiEwLHZhbHVlOkpTT04ucGFyc2UoSkcoJCkpfX1jYXRjaChKKXtpZihRKVhHKEopO3JldHVybntvazohMX19fXZhciBaRT1GRShNRSwoJCk9PiQsNTApLEU5PU9iamVjdC5hc3NpZ24oZnVuY3Rpb24oUSxKPSEwKXtpZighUSlyZXR1cm4gbnVsbDtsZXQgWT1RLmxlbmd0aD5KZT9NRShRLEopOlpFKFEsSik7cmV0dXJuIFkub2s/WS52YWx1ZTpudWxsfSx7Y2FjaGU6WkUuY2FjaGV9KTtpbXBvcnR7am9pbiBhcyBZZX1mcm9tXCJwYXRoXCI7aW1wb3J0e3JlYWRkaXIgYXMga0QkLHJlYWRGaWxlIGFzIFhlfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e3JlbGVhc2UgYXMgTEV9ZnJvbVwib3NcIjt2YXIgbTA9diQoKCk9Pnt0cnl7aWYocHJvY2Vzcy5wbGF0Zm9ybT09PVwiZGFyd2luXCIpcmV0dXJuXCJtYWNvc1wiO2lmKHByb2Nlc3MucGxhdGZvcm09PT1cIndpbjMyXCIpcmV0dXJuXCJ3aW5kb3dzXCI7aWYocHJvY2Vzcy5wbGF0Zm9ybT09PVwibGludXhcIil7dHJ5e2xldCAkPW0kKCkucmVhZEZpbGVTeW5jKFwiL3Byb2MvdmVyc2lvblwiLHtlbmNvZGluZzpcInV0ZjhcIn0pO2lmKCQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm1pY3Jvc29mdFwiKXx8JC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwid3NsXCIpKXJldHVyblwid3NsXCJ9Y2F0Y2goJCl7WCQoYEZhaWxlZCB0byByZWFkIC9wcm9jL3ZlcnNpb24gZm9yIFdTTCBkZXRlY3Rpb246ICR7JH1gLHtsZXZlbDpcImVycm9yXCJ9KX1yZXR1cm5cImxpbnV4XCJ9cmV0dXJuXCJ1bmtub3duXCJ9Y2F0Y2goJCl7cmV0dXJuIFhHKCQpLFwidW5rbm93blwifX0pLHlEJD12JCgoKT0+e2lmKHByb2Nlc3MucGxhdGZvcm0hPT1cImxpbnV4XCIpcmV0dXJuO3RyeXtsZXQgJD1tJCgpLnJlYWRGaWxlU3luYyhcIi9wcm9jL3ZlcnNpb25cIix7ZW5jb2Rpbmc6XCJ1dGY4XCJ9KSxRPSQubWF0Y2goL1dTTChcXGQrKS9pKTtpZihRJiZRWzFdKXJldHVybiBRWzFdO2lmKCQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm1pY3Jvc29mdFwiKSlyZXR1cm5cIjFcIjtyZXR1cm59Y2F0Y2goJCl7WCQoYEZhaWxlZCB0byByZWFkIC9wcm9jL3ZlcnNpb24gZm9yIFdTTCBkZXRlY3Rpb246ICR7JH1gLHtsZXZlbDpcImVycm9yXCJ9KTtyZXR1cm59fSksZ0QkPXYkKGFzeW5jKCk9PntpZihwcm9jZXNzLnBsYXRmb3JtIT09XCJsaW51eFwiKXJldHVybjtsZXQgJD17bGludXhLZXJuZWw6TEUoKX07dHJ5e2xldCBRPWF3YWl0IFhlKFwiL2V0Yy9vcy1yZWxlYXNlXCIsXCJ1dGY4XCIpO2ZvcihsZXQgSiBvZiBRLnNwbGl0KGBcbmApKXtsZXQgWT1KLm1hdGNoKC9eKElEfFZFUlNJT05fSUQpPSguKikkLyk7aWYoWSYmWVsxXSYmWVsyXSl7bGV0IFg9WVsyXS5yZXBsYWNlKC9eXCJ8XCIkL2csXCJcIik7aWYoWVsxXT09PVwiSURcIikkLmxpbnV4RGlzdHJvSWQ9WDtlbHNlICQubGludXhEaXN0cm9WZXJzaW9uPVh9fX1jYXRjaHt9cmV0dXJuICR9KTt2YXIgaEQkPXYkKCgpPT57aWYocHJvY2Vzcy5wbGF0Zm9ybSE9PVwiZGFyd2luXCIpcmV0dXJuO2xldCBRPUxFKCkubWF0Y2goL14oXFxkKylcXC4vKTtpZighUXx8IVFbMV0pcmV0dXJuO3JldHVybiBwYXJzZUludChRWzFdLDEwKS05fSk7dmFyIGwwPXYkKGZ1bmN0aW9uKCl7c3dpdGNoKG0wKCkpe2Nhc2VcIm1hY29zXCI6cmV0dXJuXCIvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0NsYXVkZUNvZGVcIjtjYXNlXCJ3aW5kb3dzXCI6cmV0dXJuXCJDOlxcXFxQcm9ncmFtIEZpbGVzXFxcXENsYXVkZUNvZGVcIjtkZWZhdWx0OnJldHVyblwiL2V0Yy9jbGF1ZGUtY29kZVwifX0pLHBEJD12JChmdW5jdGlvbigpe3JldHVybiBZZShsMCgpLFwibWFuYWdlZC1zZXR0aW5ncy5kXCIpfSk7aW1wb3J0e2lzQWJzb2x1dGUgYXMgakV9ZnJvbVwicGF0aFwiO3ZhciBXZT1fKCgpPT5LLm9iamVjdCh7YWxsb3dlZERvbWFpbnM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLGRlbmllZERvbWFpbnM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRG9tYWlucyB0aGF0IGFyZSBhbHdheXMgYmxvY2tlZCwgZXZlbiBpZiBtYXRjaGVkIGJ5IGFsbG93ZWREb21haW5zLiBTdXBwb3J0cyB0aGUgc2FtZSB3aWxkY2FyZCBzeW50YXggYXMgYWxsb3dlZERvbWFpbnMuIE1lcmdlZCBmcm9tIGFsbCBzZXR0aW5ncyBzb3VyY2VzIHJlZ2FyZGxlc3Mgb2YgYWxsb3dNYW5hZ2VkRG9tYWluc09ubHkuXCIpLGFsbG93TWFuYWdlZERvbWFpbnNPbmx5OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUgKGFuZCBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncyksIG9ubHkgYWxsb3dlZERvbWFpbnMgYW5kIFdlYkZldGNoKGRvbWFpbjouLi4pIGFsbG93IHJ1bGVzIGZyb20gbWFuYWdlZCBzZXR0aW5ncyBhcmUgcmVzcGVjdGVkLiBVc2VyLCBwcm9qZWN0LCBsb2NhbCwgYW5kIGZsYWcgc2V0dGluZ3MgZG9tYWlucyBhcmUgaWdub3JlZC4gRGVuaWVkIGRvbWFpbnMgYXJlIHN0aWxsIHJlc3BlY3RlZCBmcm9tIGFsbCBzb3VyY2VzLlwiKSxhbGxvd1VuaXhTb2NrZXRzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIm1hY09TIG9ubHk6IFVuaXggc29ja2V0IHBhdGhzIHRvIGFsbG93LiBJZ25vcmVkIG9uIExpbnV4IChzZWNjb21wIGNhbm5vdCBmaWx0ZXIgYnkgcGF0aCkuXCIpLGFsbG93QWxsVW5peFNvY2tldHM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGFsbG93IGFsbCBVbml4IHNvY2tldHMgKGRpc2FibGVzIGJsb2NraW5nIG9uIGJvdGggcGxhdGZvcm1zKS5cIiksYWxsb3dMb2NhbEJpbmRpbmc6Sy5ib29sZWFuKCkub3B0aW9uYWwoKSxhbGxvd01hY2hMb29rdXA6Sy5hcnJheShLLnN0cmluZygpLnJlZmluZSgoJCk9PntyZXR1cm4hKCQuZW5kc1dpdGgoXCIqXCIpPyQuc2xpY2UoMCwtMSk6JCkuaW5jbHVkZXMoXCIqXCIpfSx7bWVzc2FnZTonV2lsZGNhcmRzIGFyZSBvbmx5IGFsbG93ZWQgYXMgYSBzaW5nbGUgdHJhaWxpbmcgXCIqXCIgKGUuZy4sIFwiY29tLmV4YW1wbGUuKlwiIG9yIFwiKlwiIGZvciBhbGwgc2VydmljZXMpLid9KSkub3B0aW9uYWwoKS5kZXNjcmliZSgnbWFjT1Mgb25seTogQWRkaXRpb25hbCBYUEMvTWFjaCBzZXJ2aWNlIG5hbWVzIHRvIGFsbG93IGxvb2tpbmcgdXAuIFN1cHBvcnRzIHRyYWlsaW5nLXdpbGRjYXJkIHByZWZpeCBtYXRjaGluZyAoZS5nLiwgXCJjb20uYXBwbGUuY29yZXNpbXVsYXRvci4qXCIpLiBOZWVkZWQgZm9yIHRvb2xzIHRoYXQgY29tbXVuaWNhdGUgdmlhIFhQQyBzdWNoIGFzIHRoZSBpT1MgU2ltdWxhdG9yIG9yIFBsYXl3cmlnaHQuJyksaHR0cFByb3h5UG9ydDpLLm51bWJlcigpLm9wdGlvbmFsKCksc29ja3NQcm94eVBvcnQ6Sy5udW1iZXIoKS5vcHRpb25hbCgpLHRsc1Rlcm1pbmF0ZTpLLm9iamVjdCh7Y2FDZXJ0UGF0aDpLLnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLGNhS2V5UGF0aDpLLnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIltFWFBFUklNRU5UQUxdIEVuYWJsZSBpbi1wcm9jZXNzIFRMUyB0ZXJtaW5hdGlvbiBzbyB0aGUgcGVyLXJlcXVlc3QgZmlsdGVyIGNhbiBzZWUgSFRUUFMgcmVxdWVzdCBib2RpZXMuIFByb3ZpZGUgYSBDQSBjZXJ0K2tleSwgb3Igb21pdCBib3RoIHRvIGhhdmUgc2FuZGJveC1ydW50aW1lIGdlbmVyYXRlIGFuIGVwaGVtZXJhbCBvbmUgZm9yIHRoZSBzZXNzaW9uLlwiKX0pLm9wdGlvbmFsKCkpLEdlPV8oKCk9Pksub2JqZWN0KHthbGxvd1dyaXRlOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFkZGl0aW9uYWwgcGF0aHMgdG8gYWxsb3cgd3JpdGluZyB3aXRoaW4gdGhlIHNhbmRib3guIE1lcmdlZCB3aXRoIHBhdGhzIGZyb20gRWRpdCguLi4pIGFsbG93IHBlcm1pc3Npb24gcnVsZXMuXCIpLGRlbnlXcml0ZTpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZGRpdGlvbmFsIHBhdGhzIHRvIGRlbnkgd3JpdGluZyB3aXRoaW4gdGhlIHNhbmRib3guIE1lcmdlZCB3aXRoIHBhdGhzIGZyb20gRWRpdCguLi4pIGRlbnkgcGVybWlzc2lvbiBydWxlcy5cIiksZGVueVJlYWQ6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWRkaXRpb25hbCBwYXRocyB0byBkZW55IHJlYWRpbmcgd2l0aGluIHRoZSBzYW5kYm94LiBNZXJnZWQgd2l0aCBwYXRocyBmcm9tIFJlYWQoLi4uKSBkZW55IHBlcm1pc3Npb24gcnVsZXMuXCIpLGFsbG93UmVhZDpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRocyB0byByZS1hbGxvdyByZWFkaW5nIHdpdGhpbiBkZW55UmVhZCByZWdpb25zLiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgZGVueVJlYWQgZm9yIG1hdGNoaW5nIHBhdGhzLlwiKSxhbGxvd01hbmFnZWRSZWFkUGF0aHNPbmx5OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUgKHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzKSwgb25seSBhbGxvd1JlYWQgcGF0aHMgZnJvbSBwb2xpY3lTZXR0aW5ncyBhcmUgdXNlZC5cIil9KS5vcHRpb25hbCgpKSxBRT1fKCgpPT5LLm9iamVjdCh7ZW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLGZhaWxJZlVuYXZhaWxhYmxlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFeGl0IHdpdGggYW4gZXJyb3IgYXQgc3RhcnR1cCBpZiBzYW5kYm94LmVuYWJsZWQgaXMgdHJ1ZSBidXQgdGhlIHNhbmRib3ggY2Fubm90IHN0YXJ0IChtaXNzaW5nIGRlcGVuZGVuY2llcyBvciB1bnN1cHBvcnRlZCBwbGF0Zm9ybSkuIFdoZW4gZmFsc2UgKGRlZmF1bHQpLCBhIHdhcm5pbmcgaXMgc2hvd24gYW5kIGNvbW1hbmRzIHJ1biB1bnNhbmRib3hlZC4gSW50ZW5kZWQgZm9yIG1hbmFnZWQtc2V0dGluZ3MgZGVwbG95bWVudHMgdGhhdCByZXF1aXJlIHNhbmRib3hpbmcgYXMgYSBoYXJkIGdhdGUuXCIpLGF1dG9BbGxvd0Jhc2hJZlNhbmRib3hlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLGFsbG93VW5zYW5kYm94ZWRDb21tYW5kczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWxsb3cgY29tbWFuZHMgdG8gcnVuIG91dHNpZGUgdGhlIHNhbmRib3ggdmlhIHRoZSBkYW5nZXJvdXNseURpc2FibGVTYW5kYm94IHBhcmFtZXRlci4gV2hlbiBmYWxzZSwgdGhlIGRhbmdlcm91c2x5RGlzYWJsZVNhbmRib3ggcGFyYW1ldGVyIGlzIGNvbXBsZXRlbHkgaWdub3JlZCBhbmQgYWxsIGNvbW1hbmRzIG11c3QgcnVuIHNhbmRib3hlZC4gRGVmYXVsdDogdHJ1ZS5cIiksbmV0d29yazpXZSgpLGZpbGVzeXN0ZW06R2UoKSxpZ25vcmVWaW9sYXRpb25zOksucmVjb3JkKEsuc3RyaW5nKCksSy5hcnJheShLLnN0cmluZygpKSkub3B0aW9uYWwoKSxlbmFibGVXZWFrZXJOZXN0ZWRTYW5kYm94OksuYm9vbGVhbigpLm9wdGlvbmFsKCksZW5hYmxlV2Vha2VyTmV0d29ya0lzb2xhdGlvbjpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwibWFjT1Mgb25seTogQWxsb3cgYWNjZXNzIHRvIGNvbS5hcHBsZS50cnVzdGQuYWdlbnQgaW4gdGhlIHNhbmRib3guIE5lZWRlZCBmb3IgR28tYmFzZWQgQ0xJIHRvb2xzIChnaCwgZ2Nsb3VkLCB0ZXJyYWZvcm0sIGV0Yy4pIHRvIHZlcmlmeSBUTFMgY2VydGlmaWNhdGVzIHdoZW4gdXNpbmcgaHR0cFByb3h5UG9ydCB3aXRoIGEgTUlUTSBwcm94eSBhbmQgY3VzdG9tIENBLiBcIitcIioqUmVkdWNlcyBzZWN1cml0eSoqIFx1MjAxNCBvcGVucyBhIHBvdGVudGlhbCBkYXRhIGV4ZmlsdHJhdGlvbiB2ZWN0b3IgdGhyb3VnaCB0aGUgdHJ1c3RkIHNlcnZpY2UuIERlZmF1bHQ6IGZhbHNlXCIpLGV4Y2x1ZGVkQ29tbWFuZHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLHJpcGdyZXA6Sy5vYmplY3Qoe2NvbW1hbmQ6Sy5zdHJpbmcoKSxhcmdzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gcmlwZ3JlcCBjb25maWd1cmF0aW9uIGZvciBidW5kbGVkIHJpcGdyZXAgc3VwcG9ydFwiKSxid3JhcFBhdGg6Sy5wcmVwcm9jZXNzKCgkKT0+dHlwZW9mICQ9PT1cInN0cmluZ1wiJiZqRSgkKT8kOnZvaWQgMCxLLnN0cmluZygpKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJMaW51eC9XU0wgb25seTogQWJzb2x1dGUgcGF0aCB0byB0aGUgYndyYXAgKGJ1YmJsZXdyYXApIGJpbmFyeS4gT3ZlcnJpZGVzIGF1dG8tZGV0ZWN0aW9uIHZpYSBQQVRILiBPbmx5IGhvbm9yZWQgZnJvbSBhZG1pbi1jb250cm9sbGVkIG1hbmFnZWQgc2V0dGluZ3MuXCIpLHNvY2F0UGF0aDpLLnByZXByb2Nlc3MoKCQpPT50eXBlb2YgJD09PVwic3RyaW5nXCImJmpFKCQpPyQ6dm9pZCAwLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIkxpbnV4L1dTTCBvbmx5OiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBzb2NhdCBiaW5hcnkgdXNlZCBmb3IgdGhlIHNhbmRib3ggbmV0d29yayBwcm94eS4gT3ZlcnJpZGVzIGF1dG8tZGV0ZWN0aW9uIHZpYSBQQVRILiBPbmx5IGhvbm9yZWQgZnJvbSBhZG1pbi1jb250cm9sbGVkIG1hbmFnZWQgc2V0dGluZ3MuXCIpfSkucGFzc3Rocm91Z2goKSk7dmFyIElFPVtcImF1dG9cIixcIml0ZXJtMlwiLFwiaXRlcm0yX3dpdGhfYmVsbFwiLFwidGVybWluYWxfYmVsbFwiLFwia2l0dHlcIixcImdob3N0dHlcIixcIm5vdGlmaWNhdGlvbnNfZGlzYWJsZWRcIl0sUkU9W1wibm9ybWFsXCIsXCJ2aW1cIl0sUEU9W1wiYXV0b1wiLFwidG11eFwiLFwiaW4tcHJvY2Vzc1wiXSxVZT1bXCJkYXJrXCIsXCJsaWdodFwiLFwibGlnaHQtZGFsdG9uaXplZFwiLFwiZGFyay1kYWx0b25pemVkXCIsXCJsaWdodC1hbnNpXCIsXCJkYXJrLWFuc2lcIl0sRUU9W1wiYXV0b1wiLC4uLlVlXTt2YXIgc0QkPW0wKCk9PT1cIm1hY29zXCI/XCJcdTIzRkFcIjpcIlx1MjVDRlwiO3ZhciBlSj1bXCJhY2NlcHRFZGl0c1wiLFwiYXV0b1wiLFwiYnlwYXNzUGVybWlzc2lvbnNcIixcImRlZmF1bHRcIixcImRvbnRBc2tcIixcInBsYW5cIl0sSGU9Wy4uLmVKLFwiYnViYmxlXCJdLGJFPUhlO3ZhciBHRiQ9XygoKT0+cFYuZW51bShiRSkpLFVGJD1fKCgpPT5wVi5lbnVtKGVKKSk7dmFyIF9FPVtcImJhc2hcIixcInBvd2Vyc2hlbGxcIl07dmFyICRYPV8oKCk9Pksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnUGVybWlzc2lvbiBydWxlIHN5bnRheCB0byBmaWx0ZXIgd2hlbiB0aGlzIGhvb2sgcnVucyAoZS5nLiwgXCJCYXNoKGdpdCAqKVwiKS4gT25seSBydW5zIGlmIHRoZSB0b29sIGNhbGwgbWF0Y2hlcyB0aGUgcGF0dGVybi4gQXZvaWRzIHNwYXduaW5nIGhvb2tzIGZvciBub24tbWF0Y2hpbmcgY29tbWFuZHMuJykpO2Z1bmN0aW9uIEtlKCl7bGV0ICQ9Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwiY29tbWFuZFwiKS5kZXNjcmliZShcIlNoZWxsIGNvbW1hbmQgaG9vayB0eXBlXCIpLGNvbW1hbmQ6Sy5zdHJpbmcoKS5kZXNjcmliZShcIlNoZWxsIGNvbW1hbmQgdG8gZXhlY3V0ZVwiKSxhcmdzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFyZ3VtZW50IGxpc3QgZm9yIGV4ZWMgZm9ybS4gV2hlbiBwcmVzZW50LCBgY29tbWFuZGAgaXMgcmVzb2x2ZWQgYXMgXCIrXCJhbiBleGVjdXRhYmxlIGFuZCBzcGF3bmVkIGRpcmVjdGx5IHdpdGggdGhlc2UgYXJndW1lbnRzIFx1MjAxNCBubyBzaGVsbC4gXCIrXCJQYXRoIHBsYWNlaG9sZGVycyBsaWtlICR7Q0xBVURFX1BMVUdJTl9ST09UfSBhcmUgc3Vic3RpdHV0ZWQgcGVyLWVsZW1lbnQgYXMgcGxhaW4gc3RyaW5ncywgc28gcGF0aHMgd2l0aCBxdW90ZXMsICQsIG9yIGJhY2t0aWNrcyBuZXZlciByZWFjaCBhIHNoZWxsIHBhcnNlci4gV2hlbiBhYnNlbnQsIGBjb21tYW5kYCBydW5zIHRocm91Z2ggYSBzaGVsbCAoYmFzaCBvbiBQT1NJWCwgUG93ZXJTaGVsbCBvbiBXaW5kb3dzIHdpdGhvdXQgR2l0IEJhc2gpLlwiKSxpZjokWCgpLHNoZWxsOksuZW51bShfRSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNoZWxsIGludGVycHJldGVyLiAnYmFzaCcgdXNlcyB5b3VyICRTSEVMTCAoYmFzaC96c2gvc2gpOyAncG93ZXJzaGVsbCcgdXNlcyBwd3NoLiBEZWZhdWx0cyB0byBiYXNoIChwb3dlcnNoZWxsIG9uIFdpbmRvd3Mgd2l0aG91dCBHaXQgQmFzaCkuXCIpLHRpbWVvdXQ6Sy5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaW1lb3V0IGluIHNlY29uZHMgZm9yIHRoaXMgc3BlY2lmaWMgY29tbWFuZFwiKSxzdGF0dXNNZXNzYWdlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBzdGF0dXMgbWVzc2FnZSB0byBkaXNwbGF5IGluIHNwaW5uZXIgd2hpbGUgaG9vayBydW5zXCIpLG9uY2U6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGhvb2sgcnVucyBvbmNlIGFuZCBpcyByZW1vdmVkIGFmdGVyIGV4ZWN1dGlvblwiKSxhc3luYzpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgdHJ1ZSwgaG9vayBydW5zIGluIGJhY2tncm91bmQgd2l0aG91dCBibG9ja2luZ1wiKSxhc3luY1Jld2FrZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgdHJ1ZSwgaG9vayBydW5zIGluIGJhY2tncm91bmQgYW5kIHdha2VzIHRoZSBtb2RlbCBvbiBleGl0IGNvZGUgMiAoYmxvY2tpbmcgZXJyb3IpLiBJbXBsaWVzIGFzeW5jLlwiKSxyZXdha2VNZXNzYWdlOksuc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJAaW50ZXJuYWwgQ3VzdG9tIHByZWZpeCBmb3IgdGhlIHN5c3RlbS1yZW1pbmRlciBzaG93biB0byB0aGUgbW9kZWwgd2hlbiBhbiBhc3luY1Jld2FrZSBob29rIGV4aXRzIHdpdGggY29kZSAyLiBUaGUgaG9vayBvdXRwdXQgaXMgYXBwZW5kZWQgYWZ0ZXIgdGhpcyBwcmVmaXguXCIpLHJld2FrZVN1bW1hcnk6Sy5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZSgnQGludGVybmFsIE9uZS1saW5lIHN1bW1hcnkgc2hvd24gdG8gdGhlIHVzZXIgaW4gdGhlIHRlcm1pbmFsIHdoZW4gYW4gYXN5bmNSZXdha2UgaG9vayBleGl0cyB3aXRoIGNvZGUgMi4gRGVmYXVsdHMgdG8gXCJTdG9wIGhvb2sgZmVlZGJhY2tcIi4nKX0pLFE9Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwicHJvbXB0XCIpLmRlc2NyaWJlKFwiTExNIHByb21wdCBob29rIHR5cGVcIikscHJvbXB0Oksuc3RyaW5nKCkuZGVzY3JpYmUoXCJQcm9tcHQgdG8gZXZhbHVhdGUgd2l0aCBMTE0uIFVzZSAkQVJHVU1FTlRTIHBsYWNlaG9sZGVyIGZvciBob29rIGlucHV0IEpTT04uXCIpLGlmOiRYKCksdGltZW91dDpLLm51bWJlcigpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhpcyBzcGVjaWZpYyBwcm9tcHQgZXZhbHVhdGlvblwiKSxtb2RlbDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ01vZGVsIHRvIHVzZSBmb3IgdGhpcyBwcm9tcHQgaG9vayAoZS5nLiwgXCJjbGF1ZGUtc29ubmV0LTQtNlwiKS4gSWYgbm90IHNwZWNpZmllZCwgdXNlcyB0aGUgZGVmYXVsdCBzbWFsbCBmYXN0IG1vZGVsLicpLGNvbnRpbnVlT25CbG9jazpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBTZXRzIHRoZSBjb250aW51ZSB2YWx1ZSBmb3IgdGhlIGRlY2lzaW9uOlwiYmxvY2tcIiBwcm9kdWNlZCB3aGVuIG9rIGlzIGZhbHNlLiBEZWZhdWx0IGZhbHNlICh0dXJuIGVuZHMpLiBXaGV0aGVyIGNvbnRpbnVlOnRydWUgbGV0cyB0aGUgdHVybiBwcm9jZWVkIGRlcGVuZHMgb24gdGhlIGV2ZW50J3MgZGVjaXNpb246XCJibG9ja1wiIHNlbWFudGljcy4gT24gUG9zdFRvb2xVc2UsIHRoZSByZWFzb24gaXMgZmVkIGJhY2sgdG8gQ2xhdWRlIGFuZCB0aGUgdHVybiBjb250aW51ZXMuYCksc3RhdHVzTWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiBzcGlubmVyIHdoaWxlIGhvb2sgcnVuc1wiKSxvbmNlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBob29rIHJ1bnMgb25jZSBhbmQgaXMgcmVtb3ZlZCBhZnRlciBleGVjdXRpb25cIil9KSxKPUsub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcIm1jcF90b29sXCIpLmRlc2NyaWJlKFwiTUNQIHRvb2wgaG9vayB0eXBlXCIpLHNlcnZlcjpLLnN0cmluZygpLmRlc2NyaWJlKFwiTmFtZSBvZiBhbiBhbHJlYWR5LWNvbmZpZ3VyZWQgTUNQIHNlcnZlciB0byBpbnZva2VcIiksdG9vbDpLLnN0cmluZygpLmRlc2NyaWJlKFwiTmFtZSBvZiB0aGUgdG9vbCBvbiB0aGF0IHNlcnZlciB0byBjYWxsXCIpLGlucHV0OksucmVjb3JkKEsuc3RyaW5nKCksSy51bmtub3duKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIE1DUCB0b29sLiBTdHJpbmcgdmFsdWVzIHN1cHBvcnQgJHtwYXRofSBpbnRlcnBvbGF0aW9uIGZyb20gdGhlIGhvb2sgaW5wdXQgSlNPTiAoZS5nLiBcIiR7dG9vbF9pbnB1dC5maWxlX3BhdGh9XCIpLicpLGlmOiRYKCksdGltZW91dDpLLm51bWJlcigpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhpcyBzcGVjaWZpYyB0b29sIGNhbGxcIiksc3RhdHVzTWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiBzcGlubmVyIHdoaWxlIGhvb2sgcnVuc1wiKSxvbmNlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBob29rIHJ1bnMgb25jZSBhbmQgaXMgcmVtb3ZlZCBhZnRlciBleGVjdXRpb25cIil9KSxZPUsub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcImh0dHBcIikuZGVzY3JpYmUoXCJIVFRQIGhvb2sgdHlwZVwiKSx1cmw6Sy5zdHJpbmcoKS51cmwoKS5kZXNjcmliZShcIlVSTCB0byBQT1NUIHRoZSBob29rIGlucHV0IEpTT04gdG9cIiksaWY6JFgoKSx0aW1lb3V0OksubnVtYmVyKCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZW91dCBpbiBzZWNvbmRzIGZvciB0aGlzIHNwZWNpZmljIHJlcXVlc3RcIiksaGVhZGVyczpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FkZGl0aW9uYWwgaGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LiBWYWx1ZXMgbWF5IHJlZmVyZW5jZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdXNpbmcgJFZBUl9OQU1FIG9yICR7VkFSX05BTUV9IHN5bnRheCAoZS5nLiwgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyICRNWV9UT0tFTlwiKS4gT25seSB2YXJpYWJsZXMgbGlzdGVkIGluIGFsbG93ZWRFbnZWYXJzIHdpbGwgYmUgaW50ZXJwb2xhdGVkLicpLGFsbG93ZWRFbnZWYXJzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkV4cGxpY2l0IGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgdGhhdCBtYXkgYmUgaW50ZXJwb2xhdGVkIGluIGhlYWRlciB2YWx1ZXMuIE9ubHkgdmFyaWFibGVzIGxpc3RlZCBoZXJlIHdpbGwgYmUgcmVzb2x2ZWQ7IGFsbCBvdGhlciAkVkFSIHJlZmVyZW5jZXMgYXJlIGxlZnQgYXMgZW1wdHkgc3RyaW5ncy4gUmVxdWlyZWQgZm9yIGVudiB2YXIgaW50ZXJwb2xhdGlvbiB0byB3b3JrLlwiKSxzdGF0dXNNZXNzYWdlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBzdGF0dXMgbWVzc2FnZSB0byBkaXNwbGF5IGluIHNwaW5uZXIgd2hpbGUgaG9vayBydW5zXCIpLG9uY2U6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGhvb2sgcnVucyBvbmNlIGFuZCBpcyByZW1vdmVkIGFmdGVyIGV4ZWN1dGlvblwiKX0pLFg9Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwiYWdlbnRcIikuZGVzY3JpYmUoXCJBZ2VudGljIHZlcmlmaWVyIGhvb2sgdHlwZVwiKSxwcm9tcHQ6Sy5zdHJpbmcoKS5kZXNjcmliZSgnUHJvbXB0IGRlc2NyaWJpbmcgd2hhdCB0byB2ZXJpZnkgKGUuZy4gXCJWZXJpZnkgdGhhdCB1bml0IHRlc3RzIHJhbiBhbmQgcGFzc2VkLlwiKS4gVXNlICRBUkdVTUVOVFMgcGxhY2Vob2xkZXIgZm9yIGhvb2sgaW5wdXQgSlNPTi4nKSxpZjokWCgpLHRpbWVvdXQ6Sy5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaW1lb3V0IGluIHNlY29uZHMgZm9yIGFnZW50IGV4ZWN1dGlvbiAoZGVmYXVsdCA2MClcIiksbW9kZWw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdNb2RlbCB0byB1c2UgZm9yIHRoaXMgYWdlbnQgaG9vayAoZS5nLiwgXCJjbGF1ZGUtc29ubmV0LTQtNlwiKS4gSWYgbm90IHNwZWNpZmllZCwgdXNlcyBIYWlrdS4nKSxzdGF0dXNNZXNzYWdlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBzdGF0dXMgbWVzc2FnZSB0byBkaXNwbGF5IGluIHNwaW5uZXIgd2hpbGUgaG9vayBydW5zXCIpLG9uY2U6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGhvb2sgcnVucyBvbmNlIGFuZCBpcyByZW1vdmVkIGFmdGVyIGV4ZWN1dGlvblwiKX0pO3JldHVybntCYXNoQ29tbWFuZEhvb2tTY2hlbWE6JCxQcm9tcHRIb29rU2NoZW1hOlEsSHR0cEhvb2tTY2hlbWE6WSxBZ2VudEhvb2tTY2hlbWE6WCxNY3BUb29sSG9va1NjaGVtYTpKfX12YXIgU0U9XygoKT0+e2xldHtCYXNoQ29tbWFuZEhvb2tTY2hlbWE6JCxQcm9tcHRIb29rU2NoZW1hOlEsQWdlbnRIb29rU2NoZW1hOkosSHR0cEhvb2tTY2hlbWE6WSxNY3BUb29sSG9va1NjaGVtYTpYfT1LZSgpO3JldHVybiBLLmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIixbJCxRLEosWSxYXSl9KSxrRT1fKCgpPT5LLm9iamVjdCh7bWF0Y2hlcjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1N0cmluZyBwYXR0ZXJuIHRvIG1hdGNoIChlLmcuIHRvb2wgbmFtZXMgbGlrZSBcIldyaXRlXCIpJyksaG9va3M6Sy5hcnJheShTRSgpKS5kZXNjcmliZShcIkxpc3Qgb2YgaG9va3MgdG8gZXhlY3V0ZSB3aGVuIHRoZSBtYXRjaGVyIG1hdGNoZXNcIil9KSksYzA9XygoKT0+Sy5wYXJ0aWFsUmVjb3JkKEsuZW51bShzMCksSy5hcnJheShrRSgpKSkpO3ZhciBERiQ9XygoKT0+Sy5lbnVtKFtcImxvY2FsXCIsXCJ1c2VyXCIsXCJwcm9qZWN0XCIsXCJkeW5hbWljXCIsXCJlbnRlcnByaXNlXCIsXCJjbGF1ZGVhaVwiLFwibWFuYWdlZFwiLFwiYWdlbnRcIl0pKSxGRiQ9XygoKT0+Sy5lbnVtKFtcInN0ZGlvXCIsXCJzc2VcIixcInNzZS1pZGVcIixcImh0dHBcIixcIndzXCIsXCJzZGtcIl0pKSxxZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJzdGRpb1wiKS5vcHRpb25hbCgpLGNvbW1hbmQ6Sy5zdHJpbmcoKS5taW4oMSxcIkNvbW1hbmQgY2Fubm90IGJlIGVtcHR5XCIpLGFyZ3M6Sy5hcnJheShLLnN0cmluZygpKS5kZWZhdWx0KFtdKSxlbnY6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSxWZT1fKCgpPT5LLmJvb2xlYW4oKSksdkU9XygoKT0+Sy5vYmplY3Qoe2NsaWVudElkOksuc3RyaW5nKCkub3B0aW9uYWwoKSxjYWxsYmFja1BvcnQ6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCksYXV0aFNlcnZlck1ldGFkYXRhVXJsOksuc3RyaW5nKCkudXJsKCkuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIse21lc3NhZ2U6XCJhdXRoU2VydmVyTWV0YWRhdGFVcmwgbXVzdCB1c2UgaHR0cHM6Ly9cIn0pLm9wdGlvbmFsKCksc2NvcGVzOksuc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCkseGFhOlZlKCkub3B0aW9uYWwoKX0pKSxCZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJzc2VcIiksdXJsOksuc3RyaW5nKCksaGVhZGVyczpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCksaGVhZGVyc0hlbHBlcjpLLnN0cmluZygpLm9wdGlvbmFsKCksb2F1dGg6dkUoKS5vcHRpb25hbCgpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSx6ZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJzc2UtaWRlXCIpLHVybDpLLnN0cmluZygpLGlkZU5hbWU6Sy5zdHJpbmcoKSxpZGVSdW5uaW5nSW5XaW5kb3dzOksuYm9vbGVhbigpLm9wdGlvbmFsKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkpLE5lPV8oKCk9Pksub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcIndzLWlkZVwiKSx1cmw6Sy5zdHJpbmcoKSxpZGVOYW1lOksuc3RyaW5nKCksYXV0aFRva2VuOksuc3RyaW5nKCkub3B0aW9uYWwoKSxpZGVSdW5uaW5nSW5XaW5kb3dzOksuYm9vbGVhbigpLm9wdGlvbmFsKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkpLHdlPV8oKCk9Pksub2JqZWN0KHt0eXBlOksuZW51bShbXCJodHRwXCIsXCJzdHJlYW1hYmxlLWh0dHBcIl0pLnRyYW5zZm9ybSgoKT0+XCJodHRwXCIpLHVybDpLLnN0cmluZygpLGhlYWRlcnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLGhlYWRlcnNIZWxwZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLG9hdXRoOnZFKCkub3B0aW9uYWwoKSxhbHdheXNMb2FkOksuYm9vbGVhbigpLm9wdGlvbmFsKCl9KSksT2U9XygoKT0+Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwid3NcIiksdXJsOksuc3RyaW5nKCksaGVhZGVyczpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCksaGVhZGVyc0hlbHBlcjpLLnN0cmluZygpLm9wdGlvbmFsKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkpLERlPV8oKCk9Pksub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcInNka1wiKSxuYW1lOksuc3RyaW5nKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkpLEZlPV8oKCk9PksuZW51bShbXCJhbGxvd1wiLFwiYXNrXCIsXCJibG9ja2VkXCJdKSksWmU9XygoKT0+Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwiY2xhdWRlYWktcHJveHlcIiksdXJsOksuc3RyaW5nKCksaWQ6Sy5zdHJpbmcoKSxhbHdheXNMb2FkOksuYm9vbGVhbigpLm9wdGlvbmFsKCksdG9vbFBlcm1pc3Npb25zOksucmVjb3JkKEsuc3RyaW5nKCksRmUoKSkub3B0aW9uYWwoKX0pKSxHRz1fKCgpPT5LLnVuaW9uKFtxZSgpLEJlKCksemUoKSxOZSgpLHdlKCksT2UoKSxEZSgpLFplKCldKSksWkYkPV8oKCk9Pksub2JqZWN0KHttY3BTZXJ2ZXJzOksucmVjb3JkKEsuc3RyaW5nKCksR0coKSl9KSk7dmFyIGZFPW5ldyBTZXQoW1wiY2xhdWRlLWNvZGUtbWFya2V0cGxhY2VcIixcImNsYXVkZS1jb2RlLXBsdWdpbnNcIixcImNsYXVkZS1wbHVnaW5zLW9mZmljaWFsXCIsXCJhbnRocm9waWMtbWFya2V0cGxhY2VcIixcImFudGhyb3BpYy1wbHVnaW5zXCIsXCJhZ2VudC1za2lsbHNcIixcImFudGhyb3BpYy1hZ2VudC1za2lsbHNcIixcImxpZmUtc2NpZW5jZXNcIixcImtub3dsZWRnZS13b3JrLXBsdWdpbnNcIl0pO3ZhciBNZT0vKD86b2ZmaWNpYWxbXmEtejAtOV0qKGFudGhyb3BpY3xjbGF1ZGUpfCg/OmFudGhyb3BpY3xjbGF1ZGUpW15hLXowLTldKm9mZmljaWFsfF4oPzphbnRocm9waWN8Y2xhdWRlKVteYS16MC05XSoobWFya2V0cGxhY2V8cGx1Z2luc3xvZmZpY2lhbCkpL2ksTGU9L1teXFx1MDAyMC1cXHUwMDdFXS87ZnVuY3Rpb24gamUoJCl7aWYoZkUuaGFzKCQudG9Mb3dlckNhc2UoKSkpcmV0dXJuITE7aWYoTGUudGVzdCgkKSlyZXR1cm4hMDtyZXR1cm4gTWUudGVzdCgkKX12YXIgTTQ9XygoKT0+Sy5zdHJpbmcoKS5zdGFydHNXaXRoKFwiLi9cIikpLHAwPV8oKCk9Pk00KCkuZW5kc1dpdGgoXCIuanNvblwiKSksQ0U9XygoKT0+Sy51bmlvbihbTTQoKS5yZWZpbmUoKCQpPT4kLmVuZHNXaXRoKFwiLm1jcGJcIil8fCQuZW5kc1dpdGgoXCIuZHh0XCIpLHttZXNzYWdlOlwiTUNQQiBmaWxlIHBhdGggbXVzdCBlbmQgd2l0aCAubWNwYiBvciAuZHh0XCJ9KS5kZXNjcmliZShcIlBhdGggdG8gTUNQQiBmaWxlIHJlbGF0aXZlIHRvIHBsdWdpbiByb290XCIpLEsuc3RyaW5nKCkudXJsKCkucmVmaW5lKCgkKT0+JC5lbmRzV2l0aChcIi5tY3BiXCIpfHwkLmVuZHNXaXRoKFwiLmR4dFwiKSx7bWVzc2FnZTpcIk1DUEIgVVJMIG11c3QgZW5kIHdpdGggLm1jcGIgb3IgLmR4dFwifSkuZGVzY3JpYmUoXCJVUkwgdG8gTUNQQiBmaWxlXCIpXSkpLHZ6PV8oKCk9Pk00KCkuZW5kc1dpdGgoXCIubWRcIikpLEN6PV8oKCk9PksudW5pb24oW3Z6KCksTTQoKV0pKSx5RT1fKCgpPT5LLnN0cmluZygpLm1pbigxLFwiTWFya2V0cGxhY2UgbXVzdCBoYXZlIGEgbmFtZVwiKS5yZWZpbmUoKCQpPT4hJC5pbmNsdWRlcyhcIiBcIikse21lc3NhZ2U6J01hcmtldHBsYWNlIG5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiBVc2Uga2ViYWItY2FzZSAoZS5nLiwgXCJteS1tYXJrZXRwbGFjZVwiKSd9KS5yZWZpbmUoKCQpPT4hJC5pbmNsdWRlcyhcIi9cIikmJiEkLmluY2x1ZGVzKFwiXFxcXFwiKSYmISQuaW5jbHVkZXMoXCIuLlwiKSYmJCE9PVwiLlwiLHttZXNzYWdlOidNYXJrZXRwbGFjZSBuYW1lIGNhbm5vdCBjb250YWluIHBhdGggc2VwYXJhdG9ycyAoLyBvciBcXFxcKSwgXCIuLlwiIHNlcXVlbmNlcywgb3IgYmUgXCIuXCInfSkucmVmaW5lKCgkKT0+IWplKCQpLHttZXNzYWdlOlwiTWFya2V0cGxhY2UgbmFtZSBpbXBlcnNvbmF0ZXMgYW4gb2ZmaWNpYWwgQW50aHJvcGljL0NsYXVkZSBtYXJrZXRwbGFjZVwifSkucmVmaW5lKCgkKT0+JC50b0xvd2VyQ2FzZSgpIT09XCJpbmxpbmVcIix7bWVzc2FnZTonTWFya2V0cGxhY2UgbmFtZSBcImlubGluZVwiIGlzIHJlc2VydmVkIGZvciAtLXBsdWdpbi1kaXIgc2Vzc2lvbiBwbHVnaW5zJ30pLnJlZmluZSgoJCk9PiQudG9Mb3dlckNhc2UoKSE9PVwiYnVpbHRpblwiLHttZXNzYWdlOidNYXJrZXRwbGFjZSBuYW1lIFwiYnVpbHRpblwiIGlzIHJlc2VydmVkIGZvciBidWlsdC1pbiBwbHVnaW5zJ30pLnJlZmluZSgoJCk9PiQudG9Mb3dlckNhc2UoKSE9PVwic2tpbGxzLWRpclwiLHttZXNzYWdlOidNYXJrZXRwbGFjZSBuYW1lIFwic2tpbGxzLWRpclwiIGlzIHJlc2VydmVkIGZvciBwbHVnaW5zIGF1dG8tbG9hZGVkIGZyb20gLmNsYXVkZS9za2lsbHMvJ30pKSxUej1fKCgpPT5LLm9iamVjdCh7bmFtZTpLLnN0cmluZygpLm1pbigxLFwiQXV0aG9yIG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLmRlc2NyaWJlKFwiRGlzcGxheSBuYW1lIG9mIHRoZSBwbHVnaW4gYXV0aG9yIG9yIG9yZ2FuaXphdGlvblwiKSxlbWFpbDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb250YWN0IGVtYWlsIGZvciBzdXBwb3J0IG9yIGZlZWRiYWNrXCIpLHVybDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXZWJzaXRlLCBHaXRIdWIgcHJvZmlsZSwgb3Igb3JnYW5pemF0aW9uIFVSTFwiKX0pKSxBZT1fKCgpPT5LLm9iamVjdCh7JHNjaGVtYTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJKU09OIFNjaGVtYSByZWZlcmVuY2UgZm9yIGVkaXRvciBhdXRvY29tcGxldGUvdmFsaWRhdGlvbjsgaWdub3JlZCBhdCBsb2FkIHRpbWVcIiksbmFtZTpLLnN0cmluZygpLm1pbigxLFwiUGx1Z2luIG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLnJlZmluZSgoJCk9PiEkLmluY2x1ZGVzKFwiIFwiKSx7bWVzc2FnZTonUGx1Z2luIG5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiBVc2Uga2ViYWItY2FzZSAoZS5nLiwgXCJteS1wbHVnaW5cIiknfSkuZGVzY3JpYmUoXCJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBsdWdpbiwgdXNlZCBmb3IgbmFtZXNwYWNpbmcgKHByZWZlciBrZWJhYi1jYXNlKVwiKSx2ZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNlbWFudGljIHZlcnNpb24gKGUuZy4sIDEuMi4zKSBmb2xsb3dpbmcgc2VtdmVyLm9yZyBzcGVjaWZpY2F0aW9uXCIpLGRlc2NyaXB0aW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkJyaWVmLCB1c2VyLWZhY2luZyBleHBsYW5hdGlvbiBvZiB3aGF0IHRoZSBwbHVnaW4gcHJvdmlkZXNcIiksYXV0aG9yOlR6KCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkluZm9ybWF0aW9uIGFib3V0IHRoZSBwbHVnaW4gY3JlYXRvciBvciBtYWludGFpbmVyXCIpLGhvbWVwYWdlOksuc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBsdWdpbiBob21lcGFnZSBvciBkb2N1bWVudGF0aW9uIFVSTFwiKSxyZXBvc2l0b3J5Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNvdXJjZSBjb2RlIHJlcG9zaXRvcnkgVVJMXCIpLGxpY2Vuc2U6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU1BEWCBsaWNlbnNlIGlkZW50aWZpZXIgKGUuZy4sIE1JVCwgQXBhY2hlLTIuMClcIiksa2V5d29yZHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGFncyBmb3IgcGx1Z2luIGRpc2NvdmVyeSBhbmQgY2F0ZWdvcml6YXRpb25cIiksZGVwZW5kZW5jaWVzOksuYXJyYXkoZGUoKSkub3B0aW9uYWwoKS5kZXNjcmliZShgUGx1Z2lucyB0aGF0IG11c3QgYmUgZW5hYmxlZCBmb3IgdGhpcyBwbHVnaW4gdG8gZnVuY3Rpb24uIEJhcmUgbmFtZXMgKG5vIFwiQG1hcmtldHBsYWNlXCIpIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBkZWNsYXJpbmcgcGx1Z2luJ3Mgb3duIG1hcmtldHBsYWNlLmApfSkpLEVGJD1fKCgpPT5LLm9iamVjdCh7ZGVzY3JpcHRpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQnJpZWYsIHVzZXItZmFjaW5nIGV4cGxhbmF0aW9uIG9mIHdoYXQgdGhlc2UgaG9va3MgcHJvdmlkZVwiKSxob29rczpLLmxhenkoKCk9PmMwKCkpLmRlc2NyaWJlKFwiVGhlIGhvb2tzIHByb3ZpZGVkIGJ5IHRoZSBwbHVnaW4sIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgb25lIHVzZWQgZm9yIHNldHRpbmdzXCIpfSkpLEllPV8oKCk9Pksub2JqZWN0KHtob29rczpLLnVuaW9uKFtwMCgpLmRlc2NyaWJlKFwiUGF0aCB0byBmaWxlIHdpdGggYWRkaXRpb25hbCBob29rcyAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gaG9va3MvaG9va3MuanNvbiwgaWYgaXQgZXhpc3RzKSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290XCIpLEsubGF6eSgoKT0+YzAoKSkuZGVzY3JpYmUoXCJBZGRpdGlvbmFsIGhvb2tzIChpbiBhZGRpdGlvbiB0byB0aG9zZSBpbiBob29rcy9ob29rcy5qc29uLCBpZiBpdCBleGlzdHMpXCIpLEsuYXJyYXkoSy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gZmlsZSB3aXRoIGFkZGl0aW9uYWwgaG9va3MgKGluIGFkZGl0aW9uIHRvIHRob3NlIGluIGhvb2tzL2hvb2tzLmpzb24sIGlmIGl0IGV4aXN0cyksIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdFwiKSxLLmxhenkoKCk9PmMwKCkpLmRlc2NyaWJlKFwiQWRkaXRpb25hbCBob29rcyAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gaG9va3MvaG9va3MuanNvbiwgaWYgaXQgZXhpc3RzKVwiKV0pKV0pfSkpLFJlPV8oKCk9Pksub2JqZWN0KHtzb3VyY2U6Q3ooKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBjb21tYW5kIG1hcmtkb3duIGZpbGUsIHJlbGF0aXZlIHRvIHBsdWdpbiByb290XCIpLGNvbnRlbnQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW5saW5lIG1hcmtkb3duIGNvbnRlbnQgZm9yIHRoZSBjb21tYW5kXCIpLGRlc2NyaXB0aW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbW1hbmQgZGVzY3JpcHRpb24gb3ZlcnJpZGVcIiksYXJndW1lbnRIaW50Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnSGludCBmb3IgY29tbWFuZCBhcmd1bWVudHMgKGUuZy4sIFwiW2ZpbGVdXCIpJyksbW9kZWw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGVmYXVsdCBtb2RlbCBmb3IgdGhpcyBjb21tYW5kXCIpLGFsbG93ZWRUb29sczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb29scyBhbGxvd2VkIHdoZW4gY29tbWFuZCBydW5zXCIpfSkucmVmaW5lKCgkKT0+JC5zb3VyY2UmJiEkLmNvbnRlbnR8fCEkLnNvdXJjZSYmJC5jb250ZW50LHttZXNzYWdlOidDb21tYW5kIG11c3QgaGF2ZSBlaXRoZXIgXCJzb3VyY2VcIiAoZmlsZSBwYXRoKSBvciBcImNvbnRlbnRcIiAoaW5saW5lIG1hcmtkb3duKSwgYnV0IG5vdCBib3RoJ30pKSxQZT1fKCgpPT5LLm9iamVjdCh7Y29tbWFuZHM6Sy51bmlvbihbQ3ooKS5kZXNjcmliZShcIlBhdGggdG8gYSBjb21tYW5kIGZpbGUgb3Igc2tpbGwgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgY29tbWFuZHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIiksSy5hcnJheShDeigpLmRlc2NyaWJlKFwiUGF0aCB0byBhIGNvbW1hbmQgZmlsZSBvciBza2lsbCBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gV2hlbiBzZXQsIHRoZSBjb21tYW5kcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSkuZGVzY3JpYmUoXCJMaXN0IG9mIGNvbW1hbmQgZmlsZSBvciBza2lsbCBkaXJlY3RvcnkgcGF0aHMuIFdoZW4gc2V0LCB0aGUgY29tbWFuZHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQuXCIpLEsucmVjb3JkKEsuc3RyaW5nKCksUmUoKSkuZGVzY3JpYmUoJ09iamVjdCBtYXBwaW5nIG9mIGNvbW1hbmQgbmFtZXMgdG8gdGhlaXIgbWV0YWRhdGEgYW5kIHNvdXJjZSBmaWxlcy4gQ29tbWFuZCBuYW1lIGJlY29tZXMgdGhlIHNsYXNoIGNvbW1hbmQgbmFtZSAoZS5nLiwgXCJhYm91dFwiIFx1MjE5MiBcIi9wbHVnaW46YWJvdXRcIiknKV0pfSkpLEVlPV8oKCk9Pksub2JqZWN0KHthZ2VudHM6Sy51bmlvbihbdnooKS5kZXNjcmliZShcIlBhdGggdG8gYW4gYWdlbnQgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBXaGVuIHNldCwgdGhlIGFnZW50cy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSxLLmFycmF5KHZ6KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGFuIGFnZW50IGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gV2hlbiBzZXQsIHRoZSBhZ2VudHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIikpLmRlc2NyaWJlKFwiTGlzdCBvZiBhZ2VudCBmaWxlIHBhdGhzLiBXaGVuIHNldCwgdGhlIGFnZW50cy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZC5cIildKX0pKSxiZT1fKCgpPT5LLm9iamVjdCh7c2tpbGxzOksudW5pb24oW000KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgc2tpbGwgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIExvYWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgc2tpbGxzLyBkaXJlY3RvcnkuXCIpLEsuYXJyYXkoTTQoKS5kZXNjcmliZShcIlBhdGggdG8gYSBza2lsbCBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gTG9hZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBza2lsbHMvIGRpcmVjdG9yeS5cIikpLmRlc2NyaWJlKFwiTGlzdCBvZiBza2lsbCBkaXJlY3RvcnkgcGF0aHMsIGxvYWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgc2tpbGxzLyBkaXJlY3RvcnkuXCIpXSl9KSksZ0U9XygoKT0+Sy5vYmplY3Qoe291dHB1dFN0eWxlczpLLnVuaW9uKFtNNCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhbiBvdXRwdXQtc3R5bGVzIGRpcmVjdG9yeSBvciBmaWxlLCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgb3V0cHV0LXN0eWxlcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSxLLmFycmF5KE00KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGFuIG91dHB1dC1zdHlsZXMgZGlyZWN0b3J5IG9yIGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gV2hlbiBzZXQsIHRoZSBvdXRwdXQtc3R5bGVzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkIFx1MjAxNCBsaXN0IGl0cyBmaWxlcyBoZXJlIGlmIHlvdSB3YW50IGJvdGguXCIpKS5kZXNjcmliZShcIkxpc3Qgb2Ygb3V0cHV0LXN0eWxlIGRpcmVjdG9yeSBvciBmaWxlIHBhdGhzLiBXaGVuIHNldCwgdGhlIG91dHB1dC1zdHlsZXMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQuXCIpXSl9KSksaEU9XygoKT0+Sy5vYmplY3Qoe3RoZW1lczpLLnVuaW9uKFtNNCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHRoZW1lcyBkaXJlY3Rvcnkgb3IgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBXaGVuIHNldCwgdGhlIHRoZW1lcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSxLLmFycmF5KE00KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgdGhlbWVzIGRpcmVjdG9yeSBvciBmaWxlLCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgdGhlbWVzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkIFx1MjAxNCBsaXN0IGl0cyBmaWxlcyBoZXJlIGlmIHlvdSB3YW50IGJvdGguXCIpKS5kZXNjcmliZShcIkxpc3Qgb2YgdGhlbWUgZGlyZWN0b3J5IG9yIGZpbGUgcGF0aHMuIFdoZW4gc2V0LCB0aGUgdGhlbWVzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkLlwiKV0pfSkpLF9lPV8oKCk9Pksub2JqZWN0KHt9KSksVEU9XygoKT0+Sy5zdHJpbmcoKS5taW4oMSkpLFNlPV8oKCk9Pksuc3RyaW5nKCkubWluKDIpLnJlZmluZSgoJCk9PiQuc3RhcnRzV2l0aChcIi5cIikse21lc3NhZ2U6J0ZpbGUgZXh0ZW5zaW9ucyBtdXN0IHN0YXJ0IHdpdGggZG90IChlLmcuLCBcIi50c1wiLCBub3QgXCJ0c1wiKSd9KSksa2U9XygoKT0+Sy5vYmplY3Qoe21jcFNlcnZlcnM6Sy51bmlvbihbcDAoKS5kZXNjcmliZShcIk1DUCBzZXJ2ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHBsdWdpbiAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gdGhlIC5tY3AuanNvbiBmaWxlLCBpZiBpdCBleGlzdHMpXCIpLENFKCkuZGVzY3JpYmUoXCJQYXRoIG9yIFVSTCB0byBNQ1BCIGZpbGUgY29udGFpbmluZyBNQ1Agc2VydmVyIGNvbmZpZ3VyYXRpb25cIiksSy5yZWNvcmQoSy5zdHJpbmcoKSxHRygpKS5kZXNjcmliZShcIk1DUCBzZXJ2ZXIgY29uZmlndXJhdGlvbnMga2V5ZWQgYnkgc2VydmVyIG5hbWVcIiksSy5hcnJheShLLnVuaW9uKFtwMCgpLmRlc2NyaWJlKFwiUGF0aCB0byBNQ1Agc2VydmVycyBjb25maWd1cmF0aW9uIGZpbGVcIiksQ0UoKS5kZXNjcmliZShcIlBhdGggb3IgVVJMIHRvIE1DUEIgZmlsZVwiKSxLLnJlY29yZChLLnN0cmluZygpLEdHKCkpLmRlc2NyaWJlKFwiSW5saW5lIE1DUCBzZXJ2ZXIgY29uZmlndXJhdGlvbnNcIildKSkuZGVzY3JpYmUoXCJBcnJheSBvZiBNQ1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zIChwYXRocywgTUNQQiBmaWxlcywgb3IgaW5saW5lIGRlZmluaXRpb25zKVwiKV0pfSkpLHVFPV8oKCk9Pksub2JqZWN0KHt0eXBlOksuZW51bShbXCJzdHJpbmdcIixcIm51bWJlclwiLFwiYm9vbGVhblwiLFwiZGlyZWN0b3J5XCIsXCJmaWxlXCJdKS5kZXNjcmliZShcIlR5cGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWVcIiksdGl0bGU6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkh1bWFuLXJlYWRhYmxlIGxhYmVsIHNob3duIGluIHRoZSBjb25maWcgZGlhbG9nXCIpLGRlc2NyaXB0aW9uOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJIZWxwIHRleHQgc2hvd24gYmVuZWF0aCB0aGUgZmllbGQgaW4gdGhlIGNvbmZpZyBkaWFsb2dcIikscmVxdWlyZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIHZhbGlkYXRpb24gZmFpbHMgd2hlbiB0aGlzIGZpZWxkIGlzIGVtcHR5XCIpLGRlZmF1bHQ6Sy51bmlvbihbSy5zdHJpbmcoKSxLLm51bWJlcigpLEsuYm9vbGVhbigpLEsuYXJyYXkoSy5zdHJpbmcoKSldKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGVmYXVsdCB2YWx1ZSB1c2VkIHdoZW4gdGhlIHVzZXIgcHJvdmlkZXMgbm90aGluZ1wiKSxtdWx0aXBsZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRm9yIHN0cmluZyB0eXBlOiBhbGxvdyBhbiBhcnJheSBvZiBzdHJpbmdzXCIpLHNlbnNpdGl2ZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgdHJ1ZSwgbWFza3MgZGlhbG9nIGlucHV0IGFuZCBzdG9yZXMgdmFsdWUgaW4gc2VjdXJlIHN0b3JhZ2UgKGtleWNoYWluL2NyZWRlbnRpYWxzIGZpbGUpIGluc3RlYWQgb2Ygc2V0dGluZ3MuanNvblwiKSxtaW46Sy5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWluaW11bSB2YWx1ZSAobnVtYmVyIHR5cGUgb25seSlcIiksbWF4OksubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1heGltdW0gdmFsdWUgKG51bWJlciB0eXBlIG9ubHkpXCIpfSkuc3RyaWN0KCkpLHZlPV8oKCk9Pksub2JqZWN0KHt1c2VyQ29uZmlnOksucmVjb3JkKEsuc3RyaW5nKCkucmVnZXgoL15bQS1aYS16X11cXHcqJC8sXCJPcHRpb24ga2V5cyBtdXN0IGJlIHZhbGlkIGlkZW50aWZpZXJzIChsZXR0ZXJzLCBkaWdpdHMsIHVuZGVyc2NvcmU7IG5vIGxlYWRpbmcgZGlnaXQpIFx1MjAxNCB0aGV5IGJlY29tZSBDTEFVREVfUExVR0lOX09QVElPTl88S0VZPiBlbnYgdmFycyBpbiBob29rc1wiKSx1RSgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVXNlci1jb25maWd1cmFibGUgdmFsdWVzIHRoaXMgcGx1Z2luIG5lZWRzLiBQcm9tcHRlZCBhdCBlbmFibGUgdGltZS4gTm9uLXNlbnNpdGl2ZSB2YWx1ZXMgc2F2ZWQgdG8gc2V0dGluZ3MuanNvbjsgc2Vuc2l0aXZlIHZhbHVlcyB0byBzZWN1cmUgc3RvcmFnZS4gQXZhaWxhYmxlIGFzICR7dXNlcl9jb25maWcuS0VZfSBpbiBNQ1AvTFNQIHNlcnZlciBjb25maWcsIGhvb2sgY29tbWFuZHMsIGFuZCAobm9uLXNlbnNpdGl2ZSBvbmx5KSBza2lsbC9hZ2VudCBjb250ZW50LiBLZWVwIHNlbnNpdGl2ZSB2YWx1ZSBjb3VudHMgc21hbGwuXCIpfSkpLENlPV8oKCk9Pksub2JqZWN0KHtjaGFubmVsczpLLmFycmF5KEsub2JqZWN0KHtzZXJ2ZXI6Sy5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJOYW1lIG9mIHRoZSBNQ1Agc2VydmVyIHRoaXMgY2hhbm5lbCBiaW5kcyB0by4gTXVzdCBtYXRjaCBhIGtleSBpbiB0aGlzIHBsdWdpbidzIG1jcFNlcnZlcnMuXCIpLGRpc3BsYXlOYW1lOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnSHVtYW4tcmVhZGFibGUgbmFtZSBzaG93biBpbiB0aGUgY29uZmlnIGRpYWxvZyB0aXRsZSAoZS5nLiwgXCJUZWxlZ3JhbVwiKS4gRGVmYXVsdHMgdG8gdGhlIHNlcnZlciBuYW1lLicpLHVzZXJDb25maWc6Sy5yZWNvcmQoSy5zdHJpbmcoKSx1RSgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRmllbGRzIHRvIHByb21wdCB0aGUgdXNlciBmb3Igd2hlbiBlbmFibGluZyB0aGlzIHBsdWdpbiBpbiBhc3Npc3RhbnQgbW9kZS4gU2F2ZWQgdmFsdWVzIGFyZSBzdWJzdGl0dXRlZCBpbnRvICR7dXNlcl9jb25maWcuS0VZfSByZWZlcmVuY2VzIGluIHRoZSBtY3BTZXJ2ZXJzIGVudi5cIil9KS5zdHJpY3QoKSkuZGVzY3JpYmUoXCJDaGFubmVscyB0aGlzIHBsdWdpbiBwcm92aWRlcy4gRWFjaCBlbnRyeSBkZWNsYXJlcyBhbiBNQ1Agc2VydmVyIGFzIGEgbWVzc2FnZSBjaGFubmVsIGFuZCBvcHRpb25hbGx5IHNwZWNpZmllcyB1c2VyIGNvbmZpZ3VyYXRpb24gdG8gcHJvbXB0IGZvciBhdCBlbmFibGUgdGltZS5cIil9KSkseEU9XygoKT0+Sy5zdHJpY3RPYmplY3Qoe2NvbW1hbmQ6Sy5zdHJpbmcoKS5taW4oMSkucmVmaW5lKCgkKT0+e2lmKCQuaW5jbHVkZXMoXCIgXCIpJiYhJC5zdGFydHNXaXRoKFwiL1wiKSlyZXR1cm4hMTtyZXR1cm4hMH0se21lc3NhZ2U6XCJDb21tYW5kIHNob3VsZCBub3QgY29udGFpbiBzcGFjZXMuIFVzZSBhcmdzIGFycmF5IGZvciBhcmd1bWVudHMuXCJ9KS5kZXNjcmliZSgnQ29tbWFuZCB0byBleGVjdXRlIHRoZSBMU1Agc2VydmVyIChlLmcuLCBcInR5cGVzY3JpcHQtbGFuZ3VhZ2Utc2VydmVyXCIpJyksYXJnczpLLmFycmF5KFRFKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHNlcnZlclwiKSxleHRlbnNpb25Ub0xhbmd1YWdlOksucmVjb3JkKFNlKCksVEUoKSkucmVmaW5lKCgkKT0+T2JqZWN0LmtleXMoJCkubGVuZ3RoPjAse21lc3NhZ2U6XCJleHRlbnNpb25Ub0xhbmd1YWdlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbWFwcGluZ1wifSkuZGVzY3JpYmUoXCJNYXBwaW5nIGZyb20gZmlsZSBleHRlbnNpb24gdG8gTFNQIGxhbmd1YWdlIElELiBGaWxlIGV4dGVuc2lvbnMgYW5kIGxhbmd1YWdlcyBhcmUgZGVyaXZlZCBmcm9tIHRoaXMgbWFwcGluZy5cIiksdHJhbnNwb3J0OksuZW51bShbXCJzdGRpb1wiLFwic29ja2V0XCJdKS5kZWZhdWx0KFwic3RkaW9cIikuZGVzY3JpYmUoXCJDb21tdW5pY2F0aW9uIHRyYW5zcG9ydCBtZWNoYW5pc21cIiksZW52OksucmVjb3JkKEsuc3RyaW5nKCksSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgd2hlbiBzdGFydGluZyB0aGUgc2VydmVyXCIpLGluaXRpYWxpemF0aW9uT3B0aW9uczpLLnVua25vd24oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBwYXNzZWQgdG8gdGhlIHNlcnZlciBkdXJpbmcgaW5pdGlhbGl6YXRpb25cIiksc2V0dGluZ3M6Sy51bmtub3duKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNldHRpbmdzIHBhc3NlZCB0byB0aGUgc2VydmVyIHZpYSB3b3Jrc3BhY2UvZGlkQ2hhbmdlQ29uZmlndXJhdGlvblwiKSx3b3Jrc3BhY2VGb2xkZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV29ya3NwYWNlIGZvbGRlciBwYXRoIHRvIHVzZSBmb3IgdGhlIHNlcnZlclwiKSxzdGFydHVwVGltZW91dDpLLm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1heGltdW0gdGltZSB0byB3YWl0IGZvciBzZXJ2ZXIgc3RhcnR1cCAobWlsbGlzZWNvbmRzKVwiKSxzaHV0ZG93blRpbWVvdXQ6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgZ3JhY2VmdWwgc2h1dGRvd24gKG1pbGxpc2Vjb25kcylcIikscmVzdGFydE9uQ3Jhc2g6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZXRoZXIgdG8gcmVzdGFydCB0aGUgc2VydmVyIGlmIGl0IGNyYXNoZXNcIiksbWF4UmVzdGFydHM6Sy5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIG51bWJlciBvZiByZXN0YXJ0IGF0dGVtcHRzIGJlZm9yZSBnaXZpbmcgdXBcIil9KSksVGU9XygoKT0+Sy5zdHJpY3RPYmplY3Qoe25hbWU6Sy5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJJZGVudGlmaWVyIGZvciB0aGlzIG1vbml0b3IsIHVuaXF1ZSB3aXRoaW4gdGhlIHBsdWdpbi4gVXNlZCB0byBkZWR1cGUgc28gcmUtYXJtaW5nIChwbHVnaW4gcmVsb2FkLCByZXBlYXQgc2tpbGwgaW52b2tlKSBkb2VzIG5vdCBzcGF3biBkdXBsaWNhdGVzLlwiKSxjb21tYW5kOksuc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKCdTaGVsbCBjb21tYW5kIHRvIHJ1biBhcyBhIHBlcnNpc3RlbnQgYmFja2dyb3VuZCBtb25pdG9yLiBFYWNoIHN0ZG91dCBsaW5lIGlzIGRlbGl2ZXJlZCB0byB0aGUgbW9kZWwgYXMgYSA8dGFza19ub3RpZmljYXRpb24+IGV2ZW50OyB0aGUgcHJvY2VzcyBydW5zIGZvciB0aGUgc2Vzc2lvbiBsaWZldGltZS4gJHtDTEFVREVfUExVR0lOX1JPT1R9LCAke0NMQVVERV9QTFVHSU5fREFUQX0sICR7Q0xBVURFX1BST0pFQ1RfRElSfSwgJHt1c2VyX2NvbmZpZy4qfSwgYW5kICR7RU5WX1ZBUn0gYXJlIHN1YnN0aXR1dGVkLiBSdW5zIGluIHRoZSBzZXNzaW9uIGN3ZCBcdTIwMTQgcHJlZml4IHdpdGggYGNkIFwiJHtDTEFVREVfUExVR0lOX1JPT1R9XCIgJiYgYCBpZiB0aGUgc2NyaXB0IG5lZWRzIGl0cyBvd24gZGlyZWN0b3J5LicpLGRlc2NyaXB0aW9uOksuc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiU2hvcnQgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBpcyBiZWluZyBtb25pdG9yZWQgKHNob3duIGluIHRhc2sgcGFuZWwgYW5kIG5vdGlmaWNhdGlvbiBzdW1tYXJ5KS5cIiksd2hlbjpLLnVuaW9uKFtLLmxpdGVyYWwoXCJhbHdheXNcIiksSy5zdHJpbmcoKS5zdGFydHNXaXRoKFwib24tc2tpbGwtaW52b2tlOlwiKS5yZWZpbmUoKCQpPT4kLmxlbmd0aD4xNix7bWVzc2FnZTpcIm9uLXNraWxsLWludm9rZTogbXVzdCBzcGVjaWZ5IGEgc2tpbGwgbmFtZVwifSldKS5kZWZhdWx0KFwiYWx3YXlzXCIpLmRlc2NyaWJlKCdBcm0gdHJpZ2dlci4gXCJhbHdheXNcIiBhcm1zIGF0IHNlc3Npb24gc3RhcnQgYW5kIG9uIHBsdWdpbiByZWxvYWQuIFwib24tc2tpbGwtaW52b2tlOjxza2lsbD5cIiBhcm1zIHRoZSBmaXJzdCB0aW1lIHRoYXQgc2tpbGwgaXMgZGlzcGF0Y2hlZCAodmlhIFNraWxsIHRvb2wgb3Igc2xhc2ggY29tbWFuZCkuJyl9KSkseGU9XygoKT0+Sy5hcnJheShUZSgpKS5yZWZpbmUoKCQpPT5uZXcgU2V0KCQubWFwKChRKT0+US5uYW1lKSkuc2l6ZT09PSQubGVuZ3RoLHttZXNzYWdlOlwiTW9uaXRvciBuYW1lcyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBwbHVnaW5cIn0pKSxtRT1fKCgpPT5LLm9iamVjdCh7bW9uaXRvcnM6Sy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gYSBKU09OIGZpbGUgY29udGFpbmluZyB0aGUgbW9uaXRvcnMgYXJyYXksIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdFwiKSx4ZSgpXSkuZGVzY3JpYmUoXCJCYWNrZ3JvdW5kIHdhdGNoIHNjcmlwdHMgdGhlIGhvc3QgYXJtcyBhcyBwZXJzaXN0ZW50IE1vbml0b3IgdGFza3MgKHVuc2FuZGJveGVkLCBzYW1lIHRydXN0IHRpZXIgYXMgaG9va3MpIHNvIHBsdWdpbnMgbmVlZCBub3QgaW5zdHJ1Y3QgdGhlIG1vZGVsIHRvIGFybSB0aGVtLiBXaGVuIG9taXR0ZWQsIG1vbml0b3JzL21vbml0b3JzLmpzb24gYXQgdGhlIHBsdWdpbiByb290IGlzIGxvYWRlZCBpZiBwcmVzZW50LlwiKX0pKSxmZT1fKCgpPT5LLm9iamVjdCh7bHNwU2VydmVyczpLLnVuaW9uKFtwMCgpLmRlc2NyaWJlKFwiUGF0aCB0byAubHNwLmpzb24gY29uZmlndXJhdGlvbiBmaWxlIHJlbGF0aXZlIHRvIHBsdWdpbiByb290XCIpLEsucmVjb3JkKEsuc3RyaW5nKCkseEUoKSkuZGVzY3JpYmUoXCJMU1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zIGtleWVkIGJ5IHNlcnZlciBuYW1lXCIpLEsuYXJyYXkoSy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gTFNQIGNvbmZpZ3VyYXRpb24gZmlsZVwiKSxLLnJlY29yZChLLnN0cmluZygpLHhFKCkpLmRlc2NyaWJlKFwiSW5saW5lIExTUCBzZXJ2ZXIgY29uZmlndXJhdGlvbnNcIildKSkuZGVzY3JpYmUoXCJBcnJheSBvZiBMU1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zIChwYXRocyBvciBpbmxpbmUgZGVmaW5pdGlvbnMpXCIpXSl9KSksbEU9XygoKT0+Sy5zdHJpbmcoKS5yZWZpbmUoKCQpPT4hJC5pbmNsdWRlcyhcIi4uXCIpJiYhJC5pbmNsdWRlcyhcIi8vXCIpLFwiUGFja2FnZSBuYW1lIGNhbm5vdCBjb250YWluIHBhdGggdHJhdmVyc2FsIHBhdHRlcm5zXCIpLnJlZmluZSgoJCk9PntsZXQgUT0vXkBbYS16MC05XVthLXowLTktLl9dKlxcL1thLXowLTldW2EtejAtOS0uX10qJC8sSj0vXlthLXowLTldW2EtejAtOS0uX10qJC87cmV0dXJuIFEudGVzdCgkKXx8Si50ZXN0KCQpfSxcIkludmFsaWQgbnBtIHBhY2thZ2UgbmFtZSBmb3JtYXRcIikpLHllPV8oKCk9Pksub2JqZWN0KHtzZXR0aW5nczpLLnJlY29yZChLLnN0cmluZygpLEsudW5rbm93bigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU2V0dGluZ3MgdG8gbWVyZ2UgaW50byB0aGUgdXNlciBzZXR0aW5ncyB3aGlsZSB0aGlzIHBsdWdpbiBpcyBlbmFibGVkLiBPbmx5IHRoZSBkb2N1bWVudGVkIGFsbG93bGlzdGVkIGtleXMgYXJlIGFwcGxpZWQuXCIpfSkpLGdlPV8oKCk9Pksub2JqZWN0KHtleHBlcmltZW50YWw6Sy5wcmVwcm9jZXNzKCgkKT0+dHlwZW9mICQ9PT1cIm9iamVjdFwiJiYkIT09bnVsbCYmIUFycmF5LmlzQXJyYXkoJCk/JDp2b2lkIDAsSy5vYmplY3Qoey4uLmhFKCkucGFydGlhbCgpLnNoYXBlLC4uLm1FKCkucGFydGlhbCgpLnNoYXBlLC4uLmdFKCkucGFydGlhbCgpLnNoYXBlLGV2YWxzOksudW5pb24oW0suc3RyaW5nKCksSy5hcnJheShLLnN0cmluZygpKV0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRoKHMpIHRvIGV2YWx1YXRpb24gcXVlcnkgZmlsZXMgZm9yIGBjbGF1ZGUgcGx1Z2luIGV2YWxgLiBEZWZhdWx0cyB0byBgZXZhbHMvYC5cIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29tcG9uZW50cyB3aG9zZSBtYW5pZmVzdCBzaGFwZSBtYXkgY2hhbmdlIHdpdGhvdXQgYSBkZXByZWNhdGlvbiBjeWNsZS4gTW92ZSBhIGtleSBvdXQgb2YgaGVyZSBvbmNlIGl0IGlzIHByb21vdGVkIHRvIHN0YWJsZS5cIikpfSkpLGhlPV8oKCk9Pksub2JqZWN0KHsuLi5BZSgpLnNoYXBlLC4uLkllKCkucGFydGlhbCgpLnNoYXBlLC4uLlBlKCkucGFydGlhbCgpLnNoYXBlLC4uLkVlKCkucGFydGlhbCgpLnNoYXBlLC4uLmJlKCkucGFydGlhbCgpLnNoYXBlLC4uLmdFKCkucGFydGlhbCgpLnNoYXBlLC4uLmhFKCkucGFydGlhbCgpLnNoYXBlLC4uLl9lKCkuc2hhcGUsLi4uQ2UoKS5wYXJ0aWFsKCkuc2hhcGUsLi4ua2UoKS5wYXJ0aWFsKCkuc2hhcGUsLi4uZmUoKS5wYXJ0aWFsKCkuc2hhcGUsLi4ubUUoKS5wYXJ0aWFsKCkuc2hhcGUsLi4ueWUoKS5wYXJ0aWFsKCkuc2hhcGUsLi4udmUoKS5wYXJ0aWFsKCkuc2hhcGUsLi4uZ2UoKS5wYXJ0aWFsKCkuc2hhcGV9KSksUVg9XygoKT0+Sy5kaXNjcmltaW5hdGVkVW5pb24oXCJzb3VyY2VcIixbSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJ1cmxcIiksdXJsOksuc3RyaW5nKCkudXJsKCkuZGVzY3JpYmUoXCJEaXJlY3QgVVJMIHRvIG1hcmtldHBsYWNlLmpzb24gZmlsZVwiKSxoZWFkZXJzOksucmVjb3JkKEsuc3RyaW5nKCksSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBIVFRQIGhlYWRlcnMgKGUuZy4sIGZvciBhdXRoZW50aWNhdGlvbilcIil9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcImdpdGh1YlwiKSxyZXBvOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJHaXRIdWIgcmVwb3NpdG9yeSBpbiBvd25lci9yZXBvIGZvcm1hdFwiKSxyZWY6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdHaXQgYnJhbmNoIG9yIHRhZyB0byB1c2UgKGUuZy4sIFwibWFpblwiLCBcInYxLjAuMFwiKS4gRGVmYXVsdHMgdG8gcmVwb3NpdG9yeSBkZWZhdWx0IGJyYW5jaC4nKSxwYXRoOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhdGggdG8gbWFya2V0cGxhY2UuanNvbiB3aXRoaW4gcmVwbyAoZGVmYXVsdHMgdG8gLmNsYXVkZS1wbHVnaW4vbWFya2V0cGxhY2UuanNvbilcIiksc3BhcnNlUGF0aHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdEaXJlY3RvcmllcyB0byBpbmNsdWRlIHZpYSBnaXQgc3BhcnNlLWNoZWNrb3V0IChjb25lIG1vZGUpLiBVc2UgZm9yIG1vbm9yZXBvcyB3aGVyZSB0aGUgbWFya2V0cGxhY2UgbGl2ZXMgaW4gYSBzdWJkaXJlY3RvcnkuIEV4YW1wbGU6IFtcIi5jbGF1ZGUtcGx1Z2luXCIsIFwicGx1Z2luc1wiXS4gSWYgb21pdHRlZCwgdGhlIGZ1bGwgcmVwb3NpdG9yeSBpcyBjbG9uZWQuJyl9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcImdpdFwiKSx1cmw6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkZ1bGwgZ2l0IHJlcG9zaXRvcnkgVVJMXCIpLHJlZjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0dpdCBicmFuY2ggb3IgdGFnIHRvIHVzZSAoZS5nLiwgXCJtYWluXCIsIFwidjEuMC4wXCIpLiBEZWZhdWx0cyB0byByZXBvc2l0b3J5IGRlZmF1bHQgYnJhbmNoLicpLHBhdGg6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBtYXJrZXRwbGFjZS5qc29uIHdpdGhpbiByZXBvIChkZWZhdWx0cyB0byAuY2xhdWRlLXBsdWdpbi9tYXJrZXRwbGFjZS5qc29uKVwiKSxzcGFyc2VQYXRoczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0RpcmVjdG9yaWVzIHRvIGluY2x1ZGUgdmlhIGdpdCBzcGFyc2UtY2hlY2tvdXQgKGNvbmUgbW9kZSkuIFVzZSBmb3IgbW9ub3JlcG9zIHdoZXJlIHRoZSBtYXJrZXRwbGFjZSBsaXZlcyBpbiBhIHN1YmRpcmVjdG9yeS4gRXhhbXBsZTogW1wiLmNsYXVkZS1wbHVnaW5cIiwgXCJwbHVnaW5zXCJdLiBJZiBvbWl0dGVkLCB0aGUgZnVsbCByZXBvc2l0b3J5IGlzIGNsb25lZC4nKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwibnBtXCIpLHBhY2thZ2U6bEUoKS5kZXNjcmliZShcIk5QTSBwYWNrYWdlIGNvbnRhaW5pbmcgbWFya2V0cGxhY2UuanNvblwiKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwiZmlsZVwiKSxwYXRoOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJMb2NhbCBmaWxlIHBhdGggdG8gbWFya2V0cGxhY2UuanNvblwiKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwiZGlyZWN0b3J5XCIpLHBhdGg6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkxvY2FsIGRpcmVjdG9yeSBjb250YWluaW5nIC5jbGF1ZGUtcGx1Z2luL21hcmtldHBsYWNlLmpzb25cIil9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcInNraWxscy1kaXJcIil9KS5kZXNjcmliZShcIlBvbGljeS1saXN0IHNlbnRpbmVsIGZvciB0aGUgfi8uY2xhdWRlL3NraWxscy8gYXV0by1sb2FkIChAc2tpbGxzLWRpciBwbHVnaW5zKS4gSW4gc3RyaWN0S25vd25NYXJrZXRwbGFjZXM6IG9wdCB0aGUgc2NhbiBiYWNrIElOIChieSBkZWZhdWx0IGFueSBhbGxvd2xpc3QgYmxvY2tzIGl0KS4gSW4gYmxvY2tlZE1hcmtldHBsYWNlczogdHVybiB0aGUgc2NhbiBPRkYgd2l0aG91dCBvdGhlcndpc2UgcmVzdHJpY3RpbmcgbWFya2V0cGxhY2VzLiBPbmx5IG1lYW5pbmdmdWwgaW4gdGhvc2UgdHdvIG1hbmFnZWQtc2V0dGluZ3MgbGlzdHMgKGFyZUxvY2FsUGx1Z2luRGlyc0FsbG93ZWRCeVBvbGljeSk7IGtub3duX21hcmtldHBsYWNlcy5qc29uIC8gbWFya2V0cGxhY2UgYWRkIGV0Yy4gaWdub3JlIGl0LlwiKSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcImhvc3RQYXR0ZXJuXCIpLGhvc3RQYXR0ZXJuOksuc3RyaW5nKCkuZGVzY3JpYmUoJ1JlZ2V4IHBhdHRlcm4gdG8gbWF0Y2ggdGhlIGhvc3QvZG9tYWluIGV4dHJhY3RlZCBmcm9tIGFueSBtYXJrZXRwbGFjZSBzb3VyY2UgdHlwZS4gRm9yIGdpdGh1YiBzb3VyY2VzLCBtYXRjaGVzIGFnYWluc3QgXCJnaXRodWIuY29tXCIuIEZvciBnaXQgc291cmNlcyAoU1NIIG9yIEhUVFBTKSwgZXh0cmFjdHMgdGhlIGhvc3RuYW1lIGZyb20gdGhlIFVSTC4gVXNlIGluIHN0cmljdEtub3duTWFya2V0cGxhY2VzIHRvIGFsbG93IGFsbCBtYXJrZXRwbGFjZXMgZnJvbSBhIHNwZWNpZmljIGhvc3QgKGUuZy4sIFwiXmdpdGh1YlxcXFwubXljb21wYW55XFxcXC5jb20kXCIpLicpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJwYXRoUGF0dGVyblwiKSxwYXRoUGF0dGVybjpLLnN0cmluZygpLmRlc2NyaWJlKCdSZWdleCBwYXR0ZXJuIG1hdGNoZWQgYWdhaW5zdCB0aGUgLnBhdGggZmllbGQgb2YgZmlsZSBhbmQgZGlyZWN0b3J5IHNvdXJjZXMuIFVzZSBpbiBzdHJpY3RLbm93bk1hcmtldHBsYWNlcyB0byBhbGxvdyBmaWxlc3lzdGVtLWJhc2VkIG1hcmtldHBsYWNlcyBhbG9uZ3NpZGUgaG9zdFBhdHRlcm4gcmVzdHJpY3Rpb25zIGZvciBuZXR3b3JrIHNvdXJjZXMuIFVzZSBcIi4qXCIgdG8gYWxsb3cgYWxsIGZpbGVzeXN0ZW0gcGF0aHMsIG9yIGEgbmFycm93ZXIgcGF0dGVybiAoZS5nLiwgXCJeL29wdC9hcHByb3ZlZC9cIikgdG8gcmVzdHJpY3QgdG8gc3BlY2lmaWMgZGlyZWN0b3JpZXMuJyl9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcInNldHRpbmdzXCIpLG5hbWU6eUUoKS5yZWZpbmUoKCQpPT4hZkUuaGFzKCQudG9Mb3dlckNhc2UoKSkse21lc3NhZ2U6XCJSZXNlcnZlZCBvZmZpY2lhbCBtYXJrZXRwbGFjZSBuYW1lcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHNldHRpbmdzIHNvdXJjZXMuIHZhbGlkYXRlT2ZmaWNpYWxOYW1lU291cmNlIG9ubHkgYWNjZXB0cyBnaXRodWIvZ2l0IHNvdXJjZXMgZnJvbSBhbnRocm9waWNzLyogZm9yIHRoZXNlIG5hbWVzOyBhIHNldHRpbmdzIHNvdXJjZSB3b3VsZCBiZSByZWplY3RlZCBhZnRlciBsb2FkQW5kQ2FjaGVNYXJrZXRwbGFjZSBoYXMgYWxyZWFkeSB3cml0dGVuIHRvIGRpc2sgd2l0aCBjbGVhbnVwTmVlZGVkPWZhbHNlLlwifSkuZGVzY3JpYmUoXCJNYXJrZXRwbGFjZSBuYW1lLiBNdXN0IG1hdGNoIHRoZSBleHRyYUtub3duTWFya2V0cGxhY2VzIGtleSAoZW5mb3JjZWQpOyB0aGUgc3ludGhldGljIG1hbmlmZXN0IGlzIHdyaXR0ZW4gdW5kZXIgdGhpcyBuYW1lLiBTYW1lIHZhbGlkYXRpb24gXCIrXCJhcyBQbHVnaW5NYXJrZXRwbGFjZVNjaGVtYSBwbHVzIHJlc2VydmVkLW5hbWUgcmVqZWN0aW9uIFx1MjAxNCBcIitcInZhbGlkYXRlT2ZmaWNpYWxOYW1lU291cmNlIHJ1bnMgYWZ0ZXIgdGhlIGRpc2sgd3JpdGUsIHRvbyBsYXRlIHRvIGNsZWFuIHVwLlwiKSxwbHVnaW5zOksuYXJyYXkodWUoKSkuZGVzY3JpYmUoXCJQbHVnaW4gZW50cmllcyBkZWNsYXJlZCBpbmxpbmUgaW4gc2V0dGluZ3MuanNvblwiKSxvd25lcjpUeigpLm9wdGlvbmFsKCl9KS5kZXNjcmliZShcIklubGluZSBtYXJrZXRwbGFjZSBtYW5pZmVzdCBkZWZpbmVkIGRpcmVjdGx5IGluIHNldHRpbmdzLmpzb24uIFRoZSByZWNvbmNpbGVyIHdyaXRlcyBhIHN5bnRoZXRpYyBtYXJrZXRwbGFjZS5qc29uIHRvIHRoZSBjYWNoZTsgZGlmZk1hcmtldHBsYWNlcyBkZXRlY3RzIGVkaXRzIHZpYSBpc0VxdWFsIG9uIHRoZSBzdG9yZWQgc291cmNlICh0aGUgcGx1Z2lucyBhcnJheSBpcyBpbnNpZGUgdGhpcyBvYmplY3QsIHNvIGVkaXRzIHN1cmZhY2UgYXMgc291cmNlQ2hhbmdlZCkuXCIpXSkpLGt6PV8oKCk9Pksuc3RyaW5nKCkubGVuZ3RoKDQwKS5yZWdleCgvXlthLWYwLTldezQwfSQvLFwiTXVzdCBiZSBhIGZ1bGwgNDAtY2hhcmFjdGVyIGxvd2VyY2FzZSBnaXQgY29tbWl0IFNIQVwiKSksY0U9XygoKT0+Sy51bmlvbihbTTQoKS5kZXNjcmliZShcIlBhdGggdG8gdGhlIHBsdWdpbiByb290LCByZWxhdGl2ZSB0byB0aGUgbWFya2V0cGxhY2Ugcm9vdCAodGhlIGRpcmVjdG9yeSBjb250YWluaW5nIC5jbGF1ZGUtcGx1Z2luLywgbm90IC5jbGF1ZGUtcGx1Z2luLyBpdHNlbGYpXCIpLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwibnBtXCIpLHBhY2thZ2U6bEUoKS5vcihLLnN0cmluZygpLnJlZmluZSgoJCk9Pi9eKD86ZmlsZXxodHRwcz98Z2l0KD86XFwraHR0cHM/fFxcK3NzaCk/fHNzaHxnaXRodWJ8Z2l0bGFifGJpdGJ1Y2tldCk6L2kudGVzdCgkKXx8ISQuaW5jbHVkZXMoXCIuLlwiKSwnUGFja2FnZSByZWZlcmVuY2UgY2Fubm90IGNvbnRhaW4gXCIuLlwiIHBhdGggc2VnbWVudHMnKSkuZGVzY3JpYmUoXCJQYWNrYWdlIG5hbWUgKG9yIHVybCwgb3IgbG9jYWwgcGF0aCwgb3IgYW55dGhpbmcgZWxzZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYG5wbWAgYXMgYSBwYWNrYWdlKVwiKSx2ZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNwZWNpZmljIHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSAoZS5nLiwgXjEuMC4wLCB+Mi4xLjApXCIpLHJlZ2lzdHJ5Oksuc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBOUE0gcmVnaXN0cnkgVVJMIChkZWZhdWx0cyB0byB1c2luZyBzeXN0ZW0gZGVmYXVsdCwgbGlrZWx5IG5wbWpzLm9yZylcIil9KS5kZXNjcmliZShcIk5QTSBwYWNrYWdlIGFzIHBsdWdpbiBzb3VyY2VcIiksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJ1cmxcIiksdXJsOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJGdWxsIGdpdCByZXBvc2l0b3J5IFVSTCAoaHR0cHM6Ly8gb3IgZ2l0QClcIikscmVmOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnR2l0IGJyYW5jaCBvciB0YWcgdG8gdXNlIChlLmcuLCBcIm1haW5cIiwgXCJ2MS4wLjBcIikuIERlZmF1bHRzIHRvIHJlcG9zaXRvcnkgZGVmYXVsdCBicmFuY2guJyksc2hhOmt6KCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNwZWNpZmljIGNvbW1pdCBTSEEgdG8gdXNlXCIpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJnaXRodWJcIikscmVwbzpLLnN0cmluZygpLmRlc2NyaWJlKFwiR2l0SHViIHJlcG9zaXRvcnkgaW4gb3duZXIvcmVwbyBmb3JtYXRcIikscmVmOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnR2l0IGJyYW5jaCBvciB0YWcgdG8gdXNlIChlLmcuLCBcIm1haW5cIiwgXCJ2MS4wLjBcIikuIERlZmF1bHRzIHRvIHJlcG9zaXRvcnkgZGVmYXVsdCBicmFuY2guJyksc2hhOmt6KCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNwZWNpZmljIGNvbW1pdCBTSEEgdG8gdXNlXCIpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJnaXQtc3ViZGlyXCIpLHVybDpLLnN0cmluZygpLmRlc2NyaWJlKFwiR2l0IHJlcG9zaXRvcnk6IEdpdEh1YiBvd25lci9yZXBvIHNob3J0aGFuZCwgaHR0cHM6Ly8sIG9yIGdpdEAgVVJMXCIpLHBhdGg6Sy5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoJ1N1YmRpcmVjdG9yeSB3aXRoaW4gdGhlIHJlcG8gY29udGFpbmluZyB0aGUgcGx1Z2luIChlLmcuLCBcInRvb2xzL2NsYXVkZS1wbHVnaW5cIikuIENsb25lZCBzcGFyc2VseSB1c2luZyBwYXJ0aWFsIGNsb25lICgtLWZpbHRlcj10cmVlOjApIHRvIG1pbmltaXplIGJhbmR3aWR0aCBmb3IgbW9ub3JlcG9zLicpLHJlZjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0dpdCBicmFuY2ggb3IgdGFnIHRvIHVzZSAoZS5nLiwgXCJtYWluXCIsIFwidjEuMC4wXCIpLiBEZWZhdWx0cyB0byByZXBvc2l0b3J5IGRlZmF1bHQgYnJhbmNoLicpLHNoYTpreigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTcGVjaWZpYyBjb21taXQgU0hBIHRvIHVzZVwiKX0pLmRlc2NyaWJlKFwiUGx1Z2luIGxvY2F0ZWQgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgYSBsYXJnZXIgcmVwb3NpdG9yeSAobW9ub3JlcG8pLiBPbmx5IHRoZSBzcGVjaWZpZWQgc3ViZGlyZWN0b3J5IGlzIG1hdGVyaWFsaXplZDsgdGhlIHJlc3Qgb2YgdGhlIHJlcG8gaXMgbm90IGRvd25sb2FkZWQuXCIpLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwidW5zdXBwb3J0ZWRcIil9KS5kZXNjcmliZShcIlBsYWNlaG9sZGVyIGZvciBzb3VyY2UgdHlwZXMgdGhpcyBDbGF1ZGUgQ29kZSB2ZXJzaW9uIGRvZXMgbm90IFwiK1wicmVjb2duaXplLiBOZXZlciBhdXRob3JlZCBieSBoYW5kIFx1MjAxNCBQbHVnaW5NYXJrZXRwbGFjZVNjaGVtYSByZXdyaXRlcyBcIisndW5wYXJzZWFibGUgc291cmNlcyB0byB0aGlzIHNvIHRoZSBlbnRyeSByZW1haW5zIGluIG1hcmtldHBsYWNlLnBsdWdpbnMgKGRldGVjdERlbGlzdGVkUGx1Z2lucyBtdXN0IG5vdCBzZWUgaXQgYXMgcmVtb3ZlZCkuIEluc3RhbGwgYXR0ZW1wdHMgZmFpbCBhdCBjYWNoZVBsdWdpbiB3aXRoIGEgY2xlYXIgXCJ1cGRhdGUgQ2xhdWRlIENvZGVcIiBtZXNzYWdlLicpXSkpLHVlPV8oKCk9Pksub2JqZWN0KHtuYW1lOksuc3RyaW5nKCkubWluKDEsXCJQbHVnaW4gbmFtZSBjYW5ub3QgYmUgZW1wdHlcIikucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIgXCIpLHttZXNzYWdlOidQbHVnaW4gbmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMuIFVzZSBrZWJhYi1jYXNlIChlLmcuLCBcIm15LXBsdWdpblwiKSd9KS5kZXNjcmliZShcIlBsdWdpbiBuYW1lIGFzIGl0IGFwcGVhcnMgaW4gdGhlIHRhcmdldCByZXBvc2l0b3J5XCIpLHNvdXJjZTpjRSgpLmRlc2NyaWJlKFwiV2hlcmUgdG8gZmV0Y2ggdGhlIHBsdWdpbiBmcm9tLiBNdXN0IGJlIGEgcmVtb3RlIHNvdXJjZSBcdTIwMTQgcmVsYXRpdmUgXCIrXCJwYXRocyBoYXZlIG5vIG1hcmtldHBsYWNlIHJlcG9zaXRvcnkgdG8gcmVzb2x2ZSBhZ2FpbnN0LlwiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCksdmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCksc3RyaWN0OksuYm9vbGVhbigpLm9wdGlvbmFsKCl9KS5yZWZpbmUoKCQpPT50eXBlb2YgJC5zb3VyY2UhPT1cInN0cmluZ1wiLHttZXNzYWdlOidQbHVnaW5zIGluIGEgc2V0dGluZ3Mtc291cmNlZCBtYXJrZXRwbGFjZSBtdXN0IHVzZSByZW1vdGUgc291cmNlcyAoZ2l0aHViLCBnaXQtc3ViZGlyLCBucG0sIHVybCkuIFJlbGF0aXZlLXBhdGggc291cmNlcyBsaWtlIFwiLi9mb29cIiBoYXZlIG5vIG1hcmtldHBsYWNlIHJlcG9zaXRvcnkgdG8gcmVzb2x2ZSBhZ2FpbnN0Lid9KS5yZWZpbmUoKCQpPT50eXBlb2YgJC5zb3VyY2U9PT1cInN0cmluZ1wifHwkLnNvdXJjZS5zb3VyY2UhPT1cInVuc3VwcG9ydGVkXCIse21lc3NhZ2U6XCJzb3VyY2Uuc291cmNlOiAndW5zdXBwb3J0ZWQnIGlzIGEgcGFyc2UtdGltZSBwbGFjZWhvbGRlciBhbmQgY2Fubm90IGJlIGF1dGhvcmVkLiBVc2UgYSByZW1vdGUgc291cmNlIChnaXRodWIsIGdpdC1zdWJkaXIsIG5wbSwgdXJsKS5cIn0pKTt2YXIgbWU9XygoKT0+aGUoKS5wYXJ0aWFsKCkuZXh0ZW5kKHtuYW1lOksuc3RyaW5nKCkubWluKDEsXCJQbHVnaW4gbmFtZSBjYW5ub3QgYmUgZW1wdHlcIikucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIgXCIpLHttZXNzYWdlOidQbHVnaW4gbmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMuIFVzZSBrZWJhYi1jYXNlIChlLmcuLCBcIm15LXBsdWdpblwiKSd9KS5kZXNjcmliZShcIlVuaXF1ZSBpZGVudGlmaWVyIG1hdGNoaW5nIHRoZSBwbHVnaW4gbmFtZVwiKSxzb3VyY2U6Y0UoKS5kZXNjcmliZShcIldoZXJlIHRvIGZldGNoIHRoZSBwbHVnaW4gZnJvbVwiKSxjYXRlZ29yeTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0NhdGVnb3J5IGZvciBvcmdhbml6aW5nIHBsdWdpbnMgKGUuZy4sIFwicHJvZHVjdGl2aXR5XCIsIFwiZGV2ZWxvcG1lbnRcIiknKSx0YWdzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRhZ3MgZm9yIHNlYXJjaGFiaWxpdHkgYW5kIGRpc2NvdmVyeVwiKSxzdHJpY3Q6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KCEwKS5kZXNjcmliZShcIlJlcXVpcmUgdGhlIHBsdWdpbiBtYW5pZmVzdCB0byBiZSBwcmVzZW50IGluIHRoZSBwbHVnaW4gZm9sZGVyLiBJZiBmYWxzZSwgdGhlIG1hcmtldHBsYWNlIGVudHJ5IHByb3ZpZGVzIHRoZSBtYW5pZmVzdC5cIil9KSksbGU9XygoKT0+Sy5vYmplY3Qoe25hbWU6Sy5zdHJpbmcoKS5taW4oMSkucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIgXCIpKX0pKTtmdW5jdGlvbiBjZSgkKXtsZXQgUT1tZSgpO3JldHVybiAkLmZsYXRNYXAoKEosWSk9PntsZXQgWD1RLnNhZmVQYXJzZShKKTtpZihYLnN1Y2Nlc3MpcmV0dXJuW1guZGF0YV07bGV0IFc9bGUoKS5zYWZlUGFyc2UoSikuZGF0YT8ubmFtZSxHPVguZXJyb3IuaXNzdWVzLm1hcCgoVSk9PmAke1UucGF0aC5qb2luKFwiLlwiKX06ICR7VS5tZXNzYWdlfWApLmpvaW4oXCIsIFwiKTtpZihXKXJldHVybiBYJChgU3R1YmJpbmcgdW5wYXJzZWFibGUgbWFya2V0cGxhY2UgcGx1Z2luIGVudHJ5ICgke1d9KTogJHtHfWAse2xldmVsOlwid2FyblwifSksW3tuYW1lOlcsc291cmNlOntzb3VyY2U6XCJ1bnN1cHBvcnRlZFwifSxzdHJpY3Q6ITB9XTtyZXR1cm4gWCQoYERyb3BwaW5nIHVucGFyc2VhYmxlIG1hcmtldHBsYWNlIHBsdWdpbiBlbnRyeSAoaW5kZXggJHtZfSk6ICR7R31gLHtsZXZlbDpcIndhcm5cIn0pLFtdfSl9dmFyIGJGJD1fKCgpPT5LLm9iamVjdCh7JHNjaGVtYTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJKU09OIFNjaGVtYSByZWZlcmVuY2UgZm9yIGVkaXRvciBhdXRvY29tcGxldGUvdmFsaWRhdGlvbjsgaWdub3JlZCBhdCBsb2FkIHRpbWVcIiksbmFtZTp5RSgpLHZlcnNpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWFya2V0cGxhY2UgbWFuaWZlc3QgdmVyc2lvblwiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGlzIG1hcmtldHBsYWNlXCIpLG93bmVyOlR6KCkuZGVzY3JpYmUoXCJNYXJrZXRwbGFjZSBtYWludGFpbmVyIG9yIGN1cmF0b3IgaW5mb3JtYXRpb25cIikscGx1Z2luczpLLmFycmF5KEsudW5rbm93bigpKS50cmFuc2Zvcm0oY2UpLmRlc2NyaWJlKFwiQ29sbGVjdGlvbiBvZiBhdmFpbGFibGUgcGx1Z2lucyBpbiB0aGlzIG1hcmtldHBsYWNlXCIpLGZvcmNlUmVtb3ZlRGVsZXRlZFBsdWdpbnM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gdHJ1ZSwgcGx1Z2lucyByZW1vdmVkIGZyb20gdGhpcyBtYXJrZXRwbGFjZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdW5pbnN0YWxsZWQgYW5kIGZsYWdnZWQgZm9yIHVzZXJzXCIpLG1ldGFkYXRhOksub2JqZWN0KHtwbHVnaW5Sb290Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkJhc2UgcGF0aCBmb3IgcmVsYXRpdmUgcGx1Z2luIHNvdXJjZXNcIiksdmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXJrZXRwbGFjZSB2ZXJzaW9uXCIpLGRlc2NyaXB0aW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1hcmtldHBsYWNlIGRlc2NyaXB0aW9uXCIpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk9wdGlvbmFsIG1hcmtldHBsYWNlIG1ldGFkYXRhXCIpLGFsbG93Q3Jvc3NNYXJrZXRwbGFjZURlcGVuZGVuY2llc09uOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1hcmtldHBsYWNlIG5hbWVzIHdob3NlIHBsdWdpbnMgbWF5IGJlIGF1dG8taW5zdGFsbGVkIGFzIGRlcGVuZGVuY2llcy4gT25seSB0aGUgcm9vdCBtYXJrZXRwbGFjZSdzIGFsbG93bGlzdCBhcHBsaWVzIFx1MjAxNCBubyB0cmFuc2l0aXZlIHRydXN0LlwiKX0pKSxwRT1fKCgpPT5LLnN0cmluZygpLnJlZ2V4KC9eW0EtWmEtejAtOV1bLUEtWmEtejAtOS5fXSpAW0EtWmEtejAtOV1bLUEtWmEtejAtOS5fXSokLyxcIlBsdWdpbiBJRCBtdXN0IGJlIGluIGZvcm1hdDogcGx1Z2luQG1hcmtldHBsYWNlXCIpKSxwZT0vXltBLVphLXowLTldWy1BLVphLXowLTkuX10qKEBbQS1aYS16MC05XVstQS1aYS16MC05Ll9dKik/KEBcXF5bXkBdKik/JC8sZGU9XygoKT0+Sy51bmlvbihbSy5zdHJpbmcoKS5yZWdleChwZSxcIkRlcGVuZGVuY3kgbXVzdCBiZSBhIHBsdWdpbiBuYW1lLCBvcHRpb25hbGx5IHF1YWxpZmllZCB3aXRoIEBtYXJrZXRwbGFjZVwiKS50cmFuc2Zvcm0oKCQpPT4kLnJlcGxhY2UoL0BcXF5bXkBdKiQvLFwiXCIpKSxLLm9iamVjdCh7bmFtZTpLLnN0cmluZygpLm1pbigxKS5yZWdleCgvXltBLVphLXowLTldWy1BLVphLXowLTkuX10qJC8pLG1hcmtldHBsYWNlOksuc3RyaW5nKCkubWluKDEpLnJlZ2V4KC9eW0EtWmEtejAtOV1bLUEtWmEtejAtOS5fXSokLykub3B0aW9uYWwoKX0pLmxvb3NlKCkudHJhbnNmb3JtKCgkKT0+JC5tYXJrZXRwbGFjZT9gJHskLm5hbWV9QCR7JC5tYXJrZXRwbGFjZX1gOiQubmFtZSldKSksaWU9XygoKT0+Sy5vYmplY3Qoe3ZlcnNpb246Sy5zdHJpbmcoKS5kZXNjcmliZShcIkN1cnJlbnRseSBpbnN0YWxsZWQgdmVyc2lvblwiKSxpbnN0YWxsZWRBdDpLLnN0cmluZygpLmRlc2NyaWJlKFwiSVNPIDg2MDEgdGltZXN0YW1wIG9mIGluc3RhbGxhdGlvblwiKSxsYXN0VXBkYXRlZDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJU08gODYwMSB0aW1lc3RhbXAgb2YgbGFzdCB1cGRhdGVcIiksaW5zdGFsbFBhdGg6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkFic29sdXRlIHBhdGggdG8gdGhlIGluc3RhbGxlZCBwbHVnaW4gZGlyZWN0b3J5XCIpLGdpdENvbW1pdFNoYTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHaXQgY29tbWl0IFNIQSBmb3IgZ2l0LWJhc2VkIHBsdWdpbnMgKGZvciB2ZXJzaW9uIHRyYWNraW5nKVwiKSxyZXNvbHZlZFZlcnNpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGFnLWRlcml2ZWQgc2VtdmVyIHRoaXMgaW5zdGFsbCByZXNvbHZlZCB0byAod2hlbiBmZXRjaGVkIHZpYSBhIHZlcnNpb24gY29uc3RyYWludCkuIFVzZWQgYnkgdmVyaWZ5QW5kRGVtb3RlIGluIHByZWZlcmVuY2UgdG8gbWFuaWZlc3QudmVyc2lvbiwgc2luY2UgdGhlIHVwc3RyZWFtIG1heSBoYXZlIGZvcmdvdHRlbiB0byBidW1wIHBsdWdpbi5qc29uLlwiKSxhdXRvOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhpcyBwbHVnaW4gd2FzIHB1bGxlZCBpbiBhcyBhIGRlcGVuZGVuY3kgcmF0aGVyIHRoYW4gaW5zdGFsbGVkIGV4cGxpY2l0bHkuIEF1dG8taW5zdGFsbGVkIHBsdWdpbnMgYXJlIGVsaWdpYmxlIGZvciByZW1vdmFsIGJ5IHRoZSBvcnBoYW4gc3dlZXAgd2hlbiBub3RoaW5nIGRlcGVuZHMgb24gdGhlbS4gQWJzZW50ID0gbWFudWFsIChwcmVzZXJ2ZXMgcHJlLWZsYWcgaW5zdGFsbHMpLlwiKX0pKSxuZT1fKCgpPT5LLm9iamVjdCh7dmVyc2lvbjpLLmxpdGVyYWwoMSkuZGVzY3JpYmUoXCJTY2hlbWEgdmVyc2lvbiAxXCIpLHBsdWdpbnM6Sy5yZWNvcmQocEUoKSxpZSgpKS5kZXNjcmliZShcIk1hcCBvZiBwbHVnaW4gSURzIHRvIHRoZWlyIGluc3RhbGxhdGlvbiBtZXRhZGF0YVwiKX0pKSxyZT1fKCgpPT5LLmVudW0oW1wibWFuYWdlZFwiLFwidXNlclwiLFwicHJvamVjdFwiLFwibG9jYWxcIl0pKSxvZT1fKCgpPT5LLm9iamVjdCh7c2NvcGU6cmUoKS5kZXNjcmliZShcIkluc3RhbGxhdGlvbiBzY29wZVwiKSxwcm9qZWN0UGF0aDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQcm9qZWN0IHBhdGggKHJlcXVpcmVkIGZvciBwcm9qZWN0L2xvY2FsIHNjb3BlcylcIiksaW5zdGFsbFBhdGg6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkFic29sdXRlIHBhdGggdG8gdGhlIHZlcnNpb25lZCBwbHVnaW4gZGlyZWN0b3J5XCIpLHZlcnNpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VycmVudGx5IGluc3RhbGxlZCB2ZXJzaW9uXCIpLGluc3RhbGxlZEF0Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklTTyA4NjAxIHRpbWVzdGFtcCBvZiBpbnN0YWxsYXRpb25cIiksbGFzdFVwZGF0ZWQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSVNPIDg2MDEgdGltZXN0YW1wIG9mIGxhc3QgdXBkYXRlXCIpLGdpdENvbW1pdFNoYTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHaXQgY29tbWl0IFNIQSBmb3IgZ2l0LWJhc2VkIHBsdWdpbnNcIikscmVzb2x2ZWRWZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRhZy1kZXJpdmVkIHNlbXZlciB0aGlzIGluc3RhbGwgcmVzb2x2ZWQgdG9cIiksYXV0bzpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHB1bGxlZCBpbiBhcyBhIGRlcGVuZGVuY3kuIEVsaWdpYmxlIGZvciBvcnBoYW4gc3dlZXAuXCIpfSkpLHRlPV8oKCk9Pksub2JqZWN0KHt2ZXJzaW9uOksubGl0ZXJhbCgyKS5kZXNjcmliZShcIlNjaGVtYSB2ZXJzaW9uIDJcIikscGx1Z2luczpLLnJlY29yZChwRSgpLEsuYXJyYXkob2UoKSkpLmRlc2NyaWJlKFwiTWFwIG9mIHBsdWdpbiBJRHMgdG8gYXJyYXlzIG9mIGluc3RhbGxhdGlvbiBlbnRyaWVzXCIpfSkpLF9GJD1fKCgpPT5LLnVuaW9uKFtuZSgpLHRlKCldKSksYWU9XygoKT0+Sy5vYmplY3Qoe3NvdXJjZTpRWCgpLmRlc2NyaWJlKFwiV2hlcmUgdG8gZmV0Y2ggdGhlIG1hcmtldHBsYWNlIGZyb21cIiksaW5zdGFsbExvY2F0aW9uOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJMb2NhbCBjYWNoZSBwYXRoIHdoZXJlIG1hcmtldHBsYWNlIG1hbmlmZXN0IGlzIHN0b3JlZFwiKSxsYXN0VXBkYXRlZDpLLnN0cmluZygpLmRlc2NyaWJlKFwiSVNPIDg2MDEgdGltZXN0YW1wIG9mIGxhc3QgbWFya2V0cGxhY2UgcmVmcmVzaFwiKSxhdXRvVXBkYXRlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoaXMgbWFya2V0cGxhY2UgYW5kIGl0cyBpbnN0YWxsZWQgcGx1Z2lucyBvbiBzdGFydHVwXCIpfSkpLFNGJD1fKCgpPT5LLnJlY29yZChLLnN0cmluZygpLGFlKCkpKTt2YXIgc2U9W1widXNlclNldHRpbmdzXCIsXCJwcm9qZWN0U2V0dGluZ3NcIixcImxvY2FsU2V0dGluZ3NcIixcImZsYWdTZXR0aW5nc1wiLFwicG9saWN5U2V0dGluZ3NcIl07dmFyIHh6O2Z1bmN0aW9uIFVHKCl7bGV0ICQ9ejUoKTtpZih4ej8uYWxsb3dlZD09PSQpcmV0dXJuIHh6LnJlc3VsdDtsZXQgUT1uZXcgU2V0KCQpO1EuYWRkKFwiZmxhZ1NldHRpbmdzXCIpLFEuYWRkKFwicG9saWN5U2V0dGluZ3NcIik7bGV0IEo9c2UuZmlsdGVyKChZKT0+US5oYXMoWSkpO3JldHVybiB4ej17YWxsb3dlZDokLHJlc3VsdDpKfSxKfXZhciBkRT1cImh0dHBzOi8vanNvbi5zY2hlbWFzdG9yZS5vcmcvY2xhdWRlLWNvZGUtc2V0dGluZ3MuanNvblwiO3ZhciBlZT1bXCJhdXRvTW9kZVwiLFwiZGVlcExpbmtcIixcInZvaWNlXCIsXCJhc3Npc3RhbnRcIixcImJyaWVmVmlld1wiXSxIRz17fSxLRz17YXV0b01vZGU6e2J1aWxkR2F0ZTooKT0+ITEsc2hhcGU6KCk9PkhHLHBlcm1pc3Npb25zU2hhcGU6KCk9PkhHLHBlcm1pc3Npb25Nb2RlczooKT0+W119LGRlZXBMaW5rOntidWlsZEdhdGU6KCk9PiEwLHNoYXBlOigpPT4oe2Rpc2FibGVEZWVwTGlua1JlZ2lzdHJhdGlvbjpLLmVudW0oW1wiZGlzYWJsZVwiXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlByZXZlbnQgY2xhdWRlLWNsaTovLyBwcm90b2NvbCBoYW5kbGVyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBPU1wiKX0pfSx2b2ljZTp7YnVpbGRHYXRlOigpPT4hMSxzaGFwZTooKT0+SEd9LGFzc2lzdGFudDp7YnVpbGRHYXRlOigpPT4hMSxzaGFwZTooKT0+SEd9LGJyaWVmVmlldzp7YnVpbGRHYXRlOigpPT4hMCxzaGFwZTooKT0+KHtkZWZhdWx0VmlldzpLLmVudW0oW1wiY2hhdFwiLFwidHJhbnNjcmlwdFwiXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgdHJhbnNjcmlwdCB2aWV3OiBjaGF0IChTZW5kVXNlck1lc3NhZ2UgY2hlY2twb2ludHMgb25seSkgb3IgdHJhbnNjcmlwdCAoZnVsbClcIil9KX19O2Z1bmN0aW9uIGZ6KCl7cmV0dXJuIGVlLmZpbHRlcigoJCk9PktHWyRdLmJ1aWxkR2F0ZSgpKX1mdW5jdGlvbiBpRSgkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgJClRPXsuLi5RLC4uLktHW0pdLnNoYXBlKCl9O3JldHVybiBRfWZ1bmN0aW9uIG5FKCQpe2xldCBRPXt9O2ZvcihsZXQgSiBvZiAkKVE9ey4uLlEsLi4uS0dbSl0ucGVybWlzc2lvbnNTaGFwZT8uKCl9O3JldHVybiBRfWZ1bmN0aW9uIHJFKCQpe2xldCBRPVtdO2ZvcihsZXQgSiBvZiAkKVEucHVzaCguLi5LR1tKXS5wZXJtaXNzaW9uTW9kZXM/LigpPz9bXSk7cmV0dXJuIFF9ZnVuY3Rpb24gb0UoJCl7bGV0IFE9JC5zcGxpdChcIl9fXCIpLFtKLFksLi4uWF09UTtpZihKIT09XCJtY3BcInx8IVkpcmV0dXJuIG51bGw7bGV0IFc9WC5sZW5ndGg+MD9YLmpvaW4oXCJfX1wiKTp2b2lkIDA7cmV0dXJue3NlcnZlck5hbWU6WSx0b29sTmFtZTpXfX12YXIgdEU9e1Rhc2s6XCJBZ2VudFwiLEtpbGxTaGVsbDpcIlRhc2tTdG9wXCIsQWdlbnRPdXRwdXRUb29sOlwiVGFza091dHB1dFwiLEJhc2hPdXRwdXRUb29sOlwiVGFza091dHB1dFwiLExpc3RQZWVyczpcIkxpc3RBZ2VudHNcIixCcmllZjpcIlNlbmRVc2VyTWVzc2FnZVwifTtmdW5jdGlvbiBiOSgkKXtyZXR1cm4gT2JqZWN0Lmhhc093bih0RSwkKT90RVskXTokfXZhciBhRT1cIndvcmtzcGFjZVwiLGNGJD1gbWNwX18ke2FFfV9fYmFzaGAscEYkPWBtY3BfXyR7YUV9X193ZWJfZmV0Y2hgO2Z1bmN0aW9uICQkJCgkKXtyZXR1cm4gJC5yZXBsYWNlQWxsKFwiXFxcXChcIixcIihcIikucmVwbGFjZUFsbChcIlxcXFwpXCIsXCIpXCIpLnJlcGxhY2VBbGwoXCJcXFxcXFxcXFwiLFwiXFxcXFwiKX1mdW5jdGlvbiBzRSgkKXtsZXQgUT1RJCQoJCxcIihcIik7aWYoUT09PS0xKXJldHVybnt0b29sTmFtZTpiOSgkKX07bGV0IEo9SiQkKCQsXCIpXCIpO2lmKEo9PT0tMXx8Sjw9USlyZXR1cm57dG9vbE5hbWU6YjkoJCl9O2lmKEohPT0kLmxlbmd0aC0xKXJldHVybnt0b29sTmFtZTpiOSgkKX07bGV0IFk9JC5zdWJzdHJpbmcoMCxRKSxYPSQuc3Vic3RyaW5nKFErMSxKKTtpZighWSlyZXR1cm57dG9vbE5hbWU6YjkoJCl9O2lmKFg9PT1cIlwifHxYPT09XCIqXCIpcmV0dXJue3Rvb2xOYW1lOmI5KFkpfTtsZXQgVz0kJCQoWCk7cmV0dXJue3Rvb2xOYW1lOmI5KFkpLHJ1bGVDb250ZW50Old9fWZ1bmN0aW9uIFEkJCgkLFEpe2ZvcihsZXQgSj0wO0o8JC5sZW5ndGg7SisrKWlmKCRbSl09PT1RKXtsZXQgWT0wLFg9Si0xO3doaWxlKFg+PTAmJiRbWF09PT1cIlxcXFxcIilZKyssWC0tO2lmKFklMj09PTApcmV0dXJuIEp9cmV0dXJuLTF9ZnVuY3Rpb24gSiQkKCQsUSl7Zm9yKGxldCBKPSQubGVuZ3RoLTE7Sj49MDtKLS0paWYoJFtKXT09PVEpe2xldCBZPTAsWD1KLTE7d2hpbGUoWD49MCYmJFtYXT09PVwiXFxcXFwiKVkrKyxYLS07aWYoWSUyPT09MClyZXR1cm4gSn1yZXR1cm4tMX12YXIgcUc9e2ZpbGVQYXR0ZXJuVG9vbHM6W1wiUmVhZFwiLFwiV3JpdGVcIixcIkVkaXRcIixcIkdsb2JcIixcIk5vdGVib29rUmVhZFwiLFwiTm90ZWJvb2tFZGl0XCJdLGJhc2hQcmVmaXhUb29sczpbXCJCYXNoXCJdLGN1c3RvbVZhbGlkYXRpb246e1dlYlNlYXJjaDooJCk9PntpZigkLmluY2x1ZGVzKFwiKlwiKXx8JC5pbmNsdWRlcyhcIj9cIikpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiV2ViU2VhcmNoIGRvZXMgbm90IHN1cHBvcnQgd2lsZGNhcmRzXCIsc3VnZ2VzdGlvbjpcIlVzZSBleGFjdCBzZWFyY2ggdGVybXMgd2l0aG91dCAqIG9yID9cIixleGFtcGxlczpbXCJXZWJTZWFyY2goY2xhdWRlIGFpKVwiLFwiV2ViU2VhcmNoKHR5cGVzY3JpcHQgdHV0b3JpYWwpXCJdfTtyZXR1cm57dmFsaWQ6ITB9fSxXZWJGZXRjaDooJCk9PntpZigkLmluY2x1ZGVzKFwiOi8vXCIpfHwkLnN0YXJ0c1dpdGgoXCJodHRwXCIpKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIldlYkZldGNoIHBlcm1pc3Npb25zIHVzZSBkb21haW4gZm9ybWF0LCBub3QgVVJMc1wiLHN1Z2dlc3Rpb246J1VzZSBcImRvbWFpbjpob3N0bmFtZVwiIGZvcm1hdCcsZXhhbXBsZXM6W1wiV2ViRmV0Y2goZG9tYWluOmV4YW1wbGUuY29tKVwiLFwiV2ViRmV0Y2goZG9tYWluOmdpdGh1Yi5jb20pXCJdfTtpZighJC5zdGFydHNXaXRoKFwiZG9tYWluOlwiKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6J1dlYkZldGNoIHBlcm1pc3Npb25zIG11c3QgdXNlIFwiZG9tYWluOlwiIHByZWZpeCcsc3VnZ2VzdGlvbjonVXNlIFwiZG9tYWluOmhvc3RuYW1lXCIgZm9ybWF0JyxleGFtcGxlczpbXCJXZWJGZXRjaChkb21haW46ZXhhbXBsZS5jb20pXCIsXCJXZWJGZXRjaChkb21haW46Ki5nb29nbGUuY29tKVwiXX07cmV0dXJue3ZhbGlkOiEwfX19fTtmdW5jdGlvbiBlRSgkKXtyZXR1cm4gcUcuZmlsZVBhdHRlcm5Ub29scy5pbmNsdWRlcygkKX1mdW5jdGlvbiAkYigkKXtyZXR1cm4gcUcuYmFzaFByZWZpeFRvb2xzLmluY2x1ZGVzKCQpfWZ1bmN0aW9uIFFiKCQpe3JldHVybiBPYmplY3QuaGFzT3duKHFHLmN1c3RvbVZhbGlkYXRpb24sJCk/cUcuY3VzdG9tVmFsaWRhdGlvblskXTp2b2lkIDB9ZnVuY3Rpb24gSmIoJCxRKXtsZXQgSj0wLFk9US0xO3doaWxlKFk+PTAmJiRbWV09PT1cIlxcXFxcIilKKyssWS0tO3JldHVybiBKJTIhPT0wfWZ1bmN0aW9uIHl6KCQsUSl7bGV0IEo9MDtmb3IobGV0IFk9MDtZPCQubGVuZ3RoO1krKylpZigkW1ldPT09USYmIUpiKCQsWSkpSisrO3JldHVybiBKfWZ1bmN0aW9uIFgkJCgkKXtmb3IobGV0IFE9MDtRPCQubGVuZ3RoLTE7USsrKWlmKCRbUV09PT1cIihcIiYmJFtRKzFdPT09XCIpXCIpe2lmKCFKYigkLFEpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGd6KCQpe2lmKCEkfHwkLnRyaW0oKT09PVwiXCIpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiUGVybWlzc2lvbiBydWxlIGNhbm5vdCBiZSBlbXB0eVwifTtsZXQgUT15eigkLFwiKFwiKSxKPXl6KCQsXCIpXCIpO2lmKFEhPT1KKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIk1pc21hdGNoZWQgcGFyZW50aGVzZXNcIixzdWdnZXN0aW9uOlwiRW5zdXJlIGFsbCBvcGVuaW5nIHBhcmVudGhlc2VzIGhhdmUgbWF0Y2hpbmcgY2xvc2luZyBwYXJlbnRoZXNlc1wifTtpZihYJCQoJCkpe2xldCBHPSQuc3Vic3RyaW5nKDAsJC5pbmRleE9mKFwiKFwiKSk7aWYoIUcpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiRW1wdHkgcGFyZW50aGVzZXMgd2l0aCBubyB0b29sIG5hbWVcIixzdWdnZXN0aW9uOlwiU3BlY2lmeSBhIHRvb2wgbmFtZSBiZWZvcmUgdGhlIHBhcmVudGhlc2VzXCJ9O3JldHVybnt2YWxpZDohMSxlcnJvcjpcIkVtcHR5IHBhcmVudGhlc2VzXCIsc3VnZ2VzdGlvbjpgRWl0aGVyIHNwZWNpZnkgYSBwYXR0ZXJuIG9yIHVzZSBqdXN0IFwiJHtHfVwiIHdpdGhvdXQgcGFyZW50aGVzZXNgLGV4YW1wbGVzOltgJHtHfWAsYCR7R30oc29tZS1wYXR0ZXJuKWBdfX1sZXQgWT1zRSgkKSxYPW9FKFkudG9vbE5hbWUpO2lmKFgpe2lmKFkucnVsZUNvbnRlbnQhPT12b2lkIDB8fHl6KCQsXCIoXCIpPjApcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiTUNQIHJ1bGVzIGRvIG5vdCBzdXBwb3J0IHBhdHRlcm5zIGluIHBhcmVudGhlc2VzXCIsc3VnZ2VzdGlvbjpgVXNlIFwiJHtZLnRvb2xOYW1lfVwiIHdpdGhvdXQgcGFyZW50aGVzZXMsIG9yIHVzZSBcIm1jcF9fJHtYLnNlcnZlck5hbWV9X18qXCIgZm9yIGFsbCB0b29sc2AsZXhhbXBsZXM6W2BtY3BfXyR7WC5zZXJ2ZXJOYW1lfWAsYG1jcF9fJHtYLnNlcnZlck5hbWV9X18qYCxYLnRvb2xOYW1lJiZYLnRvb2xOYW1lIT09XCIqXCI/YG1jcF9fJHtYLnNlcnZlck5hbWV9X18ke1gudG9vbE5hbWV9YDp2b2lkIDBdLmZpbHRlcihCb29sZWFuKX07cmV0dXJue3ZhbGlkOiEwfX1pZighWS50b29sTmFtZXx8WS50b29sTmFtZS5sZW5ndGg9PT0wKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIlRvb2wgbmFtZSBjYW5ub3QgYmUgZW1wdHlcIn07aWYoIVkudG9vbE5hbWUuaW5jbHVkZXMoXCJfXCIpJiZZLnRvb2xOYW1lWzBdIT09WS50b29sTmFtZVswXT8udG9VcHBlckNhc2UoKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJUb29sIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCB1cHBlcmNhc2VcIixzdWdnZXN0aW9uOmBVc2UgXCIke0FVKFN0cmluZyhZLnRvb2xOYW1lKSl9XCJgfTtsZXQgVz1RYihZLnRvb2xOYW1lKTtpZihXJiZZLnJ1bGVDb250ZW50IT09dm9pZCAwKXtsZXQgRz1XKFkucnVsZUNvbnRlbnQpO2lmKCFHLnZhbGlkKXJldHVybiBHfWlmKCRiKFkudG9vbE5hbWUpJiZZLnJ1bGVDb250ZW50IT09dm9pZCAwKXtsZXQgRz1ZLnJ1bGVDb250ZW50O2lmKEcuaW5jbHVkZXMoXCI6KlwiKSYmIUcuZW5kc1dpdGgoXCI6KlwiKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJUaGUgOiogcGF0dGVybiBtdXN0IGJlIGF0IHRoZSBlbmRcIixzdWdnZXN0aW9uOlwiTW92ZSA6KiB0byB0aGUgZW5kIGZvciBwcmVmaXggbWF0Y2hpbmcsIG9yIHVzZSAqIGZvciB3aWxkY2FyZCBtYXRjaGluZ1wiLGV4YW1wbGVzOltcIkJhc2gobnBtIHJ1bjoqKSAtIHByZWZpeCBtYXRjaGluZyAobGVnYWN5KVwiLFwiQmFzaChucG0gcnVuICopIC0gd2lsZGNhcmQgbWF0Y2hpbmdcIl19O2lmKEc9PT1cIjoqXCIpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiUHJlZml4IGNhbm5vdCBiZSBlbXB0eSBiZWZvcmUgOipcIixzdWdnZXN0aW9uOlwiU3BlY2lmeSBhIGNvbW1hbmQgcHJlZml4IGJlZm9yZSA6KlwiLGV4YW1wbGVzOltcIkJhc2gobnBtICopXCIsXCJCYXNoKGdpdCAqKVwiXX19aWYoZUUoWS50b29sTmFtZSkmJlkucnVsZUNvbnRlbnQhPT12b2lkIDApe2xldCBHPVkucnVsZUNvbnRlbnQ7aWYoRy5pbmNsdWRlcyhcIjoqXCIpKXJldHVybnt2YWxpZDohMSxlcnJvcjonVGhlIFwiOipcIiBzeW50YXggaXMgb25seSBmb3IgQmFzaCBwcmVmaXggcnVsZXMnLHN1Z2dlc3Rpb246J1VzZSBnbG9iIHBhdHRlcm5zIGxpa2UgXCIqXCIgb3IgXCIqKlwiIGZvciBmaWxlIG1hdGNoaW5nJyxleGFtcGxlczpbYCR7WS50b29sTmFtZX0oKi50cykgLSBtYXRjaGVzIC50cyBmaWxlc2AsYCR7WS50b29sTmFtZX0oc3JjLyoqKSAtIG1hdGNoZXMgYWxsIGZpbGVzIGluIHNyY2AsYCR7WS50b29sTmFtZX0oKiovKi50ZXN0LnRzKSAtIG1hdGNoZXMgdGVzdCBmaWxlc2BdfTtpZihHLmluY2x1ZGVzKFwiKlwiKSYmIUcubWF0Y2goL15cXCp8XFwqJHxcXCpcXCp8XFwvXFwqfFxcKlxcLnxcXCpcXCkvKSYmIUcuaW5jbHVkZXMoXCIqKlwiKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJXaWxkY2FyZCBwbGFjZW1lbnQgbWlnaHQgYmUgaW5jb3JyZWN0XCIsc3VnZ2VzdGlvbjpcIldpbGRjYXJkcyBhcmUgdHlwaWNhbGx5IHVzZWQgYXQgcGF0aCBib3VuZGFyaWVzXCIsZXhhbXBsZXM6W2Ake1kudG9vbE5hbWV9KCouanMpIC0gYWxsIC5qcyBmaWxlc2AsYCR7WS50b29sTmFtZX0oc3JjLyopIC0gYWxsIGZpbGVzIGRpcmVjdGx5IGluIHNyY2AsYCR7WS50b29sTmFtZX0oc3JjLyoqKSAtIGFsbCBmaWxlcyByZWN1cnNpdmVseSBpbiBzcmNgXX19cmV0dXJue3ZhbGlkOiEwfX12YXIgVkc9XygoKT0+Sy5zdHJpbmcoKS5zdXBlclJlZmluZSgoJCxRKT0+e2xldCBKPWd6KCQpO2lmKCFKLnZhbGlkKXtsZXQgWT1KLmVycm9yO2lmKEouc3VnZ2VzdGlvbilZKz1gLiAke0ouc3VnZ2VzdGlvbn1gO2lmKEouZXhhbXBsZXMmJkouZXhhbXBsZXMubGVuZ3RoPjApWSs9YC4gRXhhbXBsZXM6ICR7Si5leGFtcGxlcy5qb2luKFwiLCBcIil9YDtRLmFkZElzc3VlKHtjb2RlOksuWm9kSXNzdWVDb2RlLmN1c3RvbSxtZXNzYWdlOlkscGFyYW1zOntyZWNlaXZlZDokfX0pfX0pKTt2YXIgWSQkPV8oKCk9PksucmVjb3JkKEsuc3RyaW5nKCksSy5jb2VyY2Uuc3RyaW5nKCkpKTtmdW5jdGlvbiBZYigkKXtyZXR1cm4gSy5vYmplY3Qoe2FsbG93OksuYXJyYXkoVkcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgcGVybWlzc2lvbiBydWxlcyBmb3IgYWxsb3dlZCBvcGVyYXRpb25zXCIpLGRlbnk6Sy5hcnJheShWRygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTGlzdCBvZiBwZXJtaXNzaW9uIHJ1bGVzIGZvciBkZW5pZWQgb3BlcmF0aW9uc1wiKSxhc2s6Sy5hcnJheShWRygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTGlzdCBvZiBwZXJtaXNzaW9uIHJ1bGVzIHRoYXQgc2hvdWxkIGFsd2F5cyBwcm9tcHQgZm9yIGNvbmZpcm1hdGlvblwiKSxkZWZhdWx0TW9kZTpLLmVudW0oWy4uLmVKLC4uLnJFKCQpXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgcGVybWlzc2lvbiBtb2RlIHdoZW4gQ2xhdWRlIENvZGUgbmVlZHMgYWNjZXNzXCIpLGRpc2FibGVCeXBhc3NQZXJtaXNzaW9uc01vZGU6Sy5lbnVtKFtcImRpc2FibGVcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIHRoZSBhYmlsaXR5IHRvIGJ5cGFzcyBwZXJtaXNzaW9uIHByb21wdHNcIiksLi4ubkUoJCksYWRkaXRpb25hbERpcmVjdG9yaWVzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFkZGl0aW9uYWwgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSBpbiB0aGUgcGVybWlzc2lvbiBzY29wZVwiKX0pLnBhc3N0aHJvdWdoKCl9dmFyIEJaJD1fKCgpPT5ZYihmeigpKSksVyQkPV8oKCk9Pksub2JqZWN0KHtzb3VyY2U6UVgoKS5kZXNjcmliZShcIldoZXJlIHRvIGZldGNoIHRoZSBtYXJrZXRwbGFjZSBmcm9tXCIpLGluc3RhbGxMb2NhdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMb2NhbCBjYWNoZSBwYXRoIHdoZXJlIG1hcmtldHBsYWNlIG1hbmlmZXN0IGlzIHN0b3JlZCAoYXV0by1nZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkKVwiKSxhdXRvVXBkYXRlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoaXMgbWFya2V0cGxhY2UgYW5kIGl0cyBpbnN0YWxsZWQgcGx1Z2lucyBvbiBzdGFydHVwXCIpfSkpLEckJD1fKCgpPT5LLm9iamVjdCh7c2VydmVyTmFtZTpLLnN0cmluZygpLnJlZ2V4KC9eW2EtekEtWjAtOV8tXSskLyxcIlNlcnZlciBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzXCIpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJOYW1lIG9mIHRoZSBNQ1Agc2VydmVyIHRoYXQgdXNlcnMgYXJlIGFsbG93ZWQgdG8gY29uZmlndXJlXCIpLHNlcnZlckNvbW1hbmQ6Sy5hcnJheShLLnN0cmluZygpKS5taW4oMSxcIlNlcnZlciBjb21tYW5kIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCAodGhlIGNvbW1hbmQpXCIpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21tYW5kIGFycmF5IFtjb21tYW5kLCAuLi5hcmdzXSB0byBtYXRjaCBleGFjdGx5IGZvciBhbGxvd2VkIHN0ZGlvIHNlcnZlcnNcIiksc2VydmVyVXJsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnVVJMIHBhdHRlcm4gd2l0aCB3aWxkY2FyZCBzdXBwb3J0IChlLmcuLCBcImh0dHBzOi8vKi5leGFtcGxlLmNvbS8qXCIpIGZvciBhbGxvd2VkIHJlbW90ZSBNQ1Agc2VydmVycycpfSkucmVmaW5lKCgkKT0+e3JldHVybiBjSChbJC5zZXJ2ZXJOYW1lIT09dm9pZCAwLCQuc2VydmVyQ29tbWFuZCE9PXZvaWQgMCwkLnNlcnZlclVybCE9PXZvaWQgMF0sQm9vbGVhbik9PT0xfSx7bWVzc2FnZTonRW50cnkgbXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIFwic2VydmVyTmFtZVwiLCBcInNlcnZlckNvbW1hbmRcIiwgb3IgXCJzZXJ2ZXJVcmxcIid9KSksVSQkPV8oKCk9Pksub2JqZWN0KHtzZXJ2ZXJOYW1lOksuc3RyaW5nKCkucmVnZXgoL15bYS16QS1aMC05Xy1dKyQvLFwiU2VydmVyIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCBhbmQgdW5kZXJzY29yZXNcIikub3B0aW9uYWwoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIE1DUCBzZXJ2ZXIgdGhhdCBpcyBleHBsaWNpdGx5IGJsb2NrZWRcIiksc2VydmVyQ29tbWFuZDpLLmFycmF5KEsuc3RyaW5nKCkpLm1pbigxLFwiU2VydmVyIGNvbW1hbmQgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50ICh0aGUgY29tbWFuZClcIikub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbW1hbmQgYXJyYXkgW2NvbW1hbmQsIC4uLmFyZ3NdIHRvIG1hdGNoIGV4YWN0bHkgZm9yIGJsb2NrZWQgc3RkaW8gc2VydmVyc1wiKSxzZXJ2ZXJVcmw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdVUkwgcGF0dGVybiB3aXRoIHdpbGRjYXJkIHN1cHBvcnQgKGUuZy4sIFwiaHR0cHM6Ly8qLmV4YW1wbGUuY29tLypcIikgZm9yIGJsb2NrZWQgcmVtb3RlIE1DUCBzZXJ2ZXJzJyl9KS5yZWZpbmUoKCQpPT57cmV0dXJuIGNIKFskLnNlcnZlck5hbWUhPT12b2lkIDAsJC5zZXJ2ZXJDb21tYW5kIT09dm9pZCAwLCQuc2VydmVyVXJsIT09dm9pZCAwXSxCb29sZWFuKT09PTF9LHttZXNzYWdlOidFbnRyeSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgXCJzZXJ2ZXJOYW1lXCIsIFwic2VydmVyQ29tbWFuZFwiLCBvciBcInNlcnZlclVybFwiJ30pKSxIJCQ9XygoKT0+Sy5vYmplY3Qoe3BhdGg6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkFic29sdXRlIHBhdGggdG8gdGhlIGhlbHBlciBleGVjdXRhYmxlXCIpLHRpbWVvdXRNczpLLm51bWJlcigpLmludCgpLm1pbigxMDAwKS5vcHRpb25hbCgpLHJlZnJlc2hJbnRlcnZhbE1zOksudW5pb24oW0subGl0ZXJhbCgwKSxLLm51bWJlcigpLmludCgpLm1pbig2MDAwMCldKS5vcHRpb25hbCgpfSkpLFhiPVtcInNraWxsc1wiLFwiYWdlbnRzXCIsXCJob29rc1wiLFwibWNwXCJdO2Z1bmN0aW9uIFdiKCQpe3JldHVybiBLLm9iamVjdCh7JHNjaGVtYTpLLmxpdGVyYWwoZEUpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJKU09OIFNjaGVtYSByZWZlcmVuY2UgZm9yIENsYXVkZSBDb2RlIHNldHRpbmdzXCIpLGFwaUtleUhlbHBlcjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgc2NyaXB0IHRoYXQgb3V0cHV0cyBhdXRoZW50aWNhdGlvbiB2YWx1ZXNcIikscHJveHlBdXRoSGVscGVyOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNoZWxsIGNvbW1hbmQgdGhhdCBvdXRwdXRzIGEgUHJveHktQXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUgKEVBUClcIiksYXdzQ3JlZGVudGlhbEV4cG9ydDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgc2NyaXB0IHRoYXQgZXhwb3J0cyBBV1MgY3JlZGVudGlhbHNcIiksYXdzQXV0aFJlZnJlc2g6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHNjcmlwdCB0aGF0IHJlZnJlc2hlcyBBV1MgYXV0aGVudGljYXRpb25cIiksZ2NwQXV0aFJlZnJlc2g6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29tbWFuZCB0byByZWZyZXNoIEdDUCBhdXRoZW50aWNhdGlvbiAoZS5nLiwgZ2Nsb3VkIGF1dGggYXBwbGljYXRpb24tZGVmYXVsdCBsb2dpbilcIikscG9saWN5SGVscGVyOkgkJCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFeGVjdXRhYmxlIHRoYXQgY29tcHV0ZXMgbWFuYWdlZCBzZXR0aW5ncyBhdCBzdGFydHVwLiBIb25vcmVkIG9ubHkgZnJvbSBhZG1pbi1jb250cm9sbGVkIHBvbGljeSBzb3VyY2VzLlwiKSwuLi5SJChwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9FTkFCTEVfWEFBKSYme3hhYUlkcDpLLm9iamVjdCh7aXNzdWVyOksuc3RyaW5nKCkudXJsKCkuZGVzY3JpYmUoXCJJZFAgaXNzdWVyIFVSTCBmb3IgT0lEQyBkaXNjb3ZlcnlcIiksY2xpZW50SWQ6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkNsYXVkZSBDb2RlJ3MgY2xpZW50X2lkIHJlZ2lzdGVyZWQgYXQgdGhlIElkUFwiKSxjYWxsYmFja1BvcnQ6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJGaXhlZCBsb29wYmFjayBjYWxsYmFjayBwb3J0IGZvciB0aGUgSWRQIE9JREMgbG9naW4uIE9ubHkgbmVlZGVkIGlmIHRoZSBJZFAgZG9lcyBub3QgaG9ub3IgUkZDIDgyNTIgcG9ydC1hbnkgbWF0Y2hpbmcuXCIpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlhBQSAoU0VQLTk5MCkgSWRQIGNvbm5lY3Rpb24uIENvbmZpZ3VyZSBvbmNlOyBhbGwgWEFBLWVuYWJsZWQgTUNQIHNlcnZlcnMgcmV1c2UgdGhpcy5cIil9LGZpbGVTdWdnZXN0aW9uOksub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcImNvbW1hbmRcIiksY29tbWFuZDpLLnN0cmluZygpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBmaWxlIHN1Z2dlc3Rpb24gY29uZmlndXJhdGlvbiBmb3IgQCBtZW50aW9uc1wiKSxyZXNwZWN0R2l0aWdub3JlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIGZpbGUgcGlja2VyIHNob3VsZCByZXNwZWN0IC5naXRpZ25vcmUgZmlsZXMgKGRlZmF1bHQ6IHRydWUpLiBOb3RlOiAuaWdub3JlIGZpbGVzIGFyZSBhbHdheXMgcmVzcGVjdGVkLlwiKSxjbGVhbnVwUGVyaW9kRGF5czpLLm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk51bWJlciBvZiBkYXlzIHRvIHJldGFpbiBjaGF0IHRyYW5zY3JpcHRzIGJlZm9yZSBhdXRvbWF0aWMgY2xlYW51cCAoZGVmYXVsdDogMzApLiBNaW5pbXVtIDEuIFVzZSBhIGxhcmdlIHZhbHVlIGZvciBsb25nIHJldGVudGlvbjsgdXNlIC0tbm8tc2Vzc2lvbi1wZXJzaXN0ZW5jZSB0byBkaXNhYmxlIHRyYW5zY3JpcHQgd3JpdGVzIGVudGlyZWx5LlwiKSxza2lsbExpc3RpbmdNYXhEZXNjQ2hhcnM6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQZXItc2tpbGwgZGVzY3JpcHRpb24gY2hhcmFjdGVyIGNhcCBpbiB0aGUgc2tpbGwgbGlzdGluZyBzZW50IHRvIENsYXVkZSAoZGVmYXVsdDogMTUzNikuIERlc2NyaXB0aW9ucyBsb25nZXIgdGhhbiB0aGlzIGFyZSB0cnVuY2F0ZWQuIFJhaXNlIHRvIG9wdCBpbiB0byBoaWdoZXIgcGVyLXR1cm4gY29udGV4dCBjb3N0LlwiKSxza2lsbExpc3RpbmdCdWRnZXRGcmFjdGlvbjpLLm51bWJlcigpLmd0KDApLmx0ZSgxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRnJhY3Rpb24gb2YgdGhlIGNvbnRleHQgd2luZG93IChpbiBjaGFyYWN0ZXJzKSByZXNlcnZlZCBmb3IgdGhlIHNraWxsIGxpc3Rpbmcgc2VudCB0byBDbGF1ZGUgKGRlZmF1bHQ6IDAuMDEgPSAxJSkuIFdoZW4gdGhlIGxpc3RpbmcgZXhjZWVkcyB0aGlzLCBkZXNjcmlwdGlvbnMgYXJlIHNob3J0ZW5lZCB0byBmaXQuIFJhaXNlIHRvIG9wdCBpbiB0byBoaWdoZXIgcGVyLXR1cm4gY29udGV4dCBjb3N0LlwiKSx3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiBzZXQgdG8gdHJ1ZSBpbiBlaXRoZXIgYWRtaW4tb25seSBXaW5kb3dzIHNvdXJjZSBcdTIwMTQgdGhlIEhLTE0gU09GVFdBUkUvUG9saWNpZXMvQ2xhdWRlQ29kZSByZWdpc3RyeSBrZXkgb3IgQzovUHJvZ3JhbSBGaWxlcy9DbGF1ZGVDb2RlL21hbmFnZWQtc2V0dGluZ3MuanNvbiBcdTIwMTQgV1NMIHJlYWRzIG1hbmFnZWQgc2V0dGluZ3MgZnJvbSB0aGUgZnVsbCBXaW5kb3dzIHBvbGljeSBjaGFpbiAoSEtMTSwgQzovUHJvZ3JhbSBGaWxlcy9DbGF1ZGVDb2RlIHZpYSBEcnZGcywgSEtDVSkgaW4gYWRkaXRpb24gdG8gL2V0Yy9jbGF1ZGUtY29kZS4gV2luZG93cyBzb3VyY2VzIHRha2UgcHJpb3JpdHkuIFRoZSBmbGFnIGlzIGFsc28gcmVxdWlyZWQgaW4gSEtDVSBpdHNlbGYgZm9yIEhLQ1UgcG9saWN5IHRvIGFwcGx5IG9uIFdTTCAoZG91YmxlIG9wdC1pbjogYWRtaW4gZW5hYmxlcyB0aGUgY2hhaW4sIHVzZXIgY29uZmlybXMgSEtDVSkuIE9uIG5hdGl2ZSBXaW5kb3dzIHRoZSBmbGFnIGhhcyBubyBlZmZlY3QuXCIpLGVudjpZJCQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBmb3IgQ2xhdWRlIENvZGUgc2Vzc2lvbnNcIiksYXR0cmlidXRpb246Sy5vYmplY3Qoe2NvbW1pdDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBdHRyaWJ1dGlvbiB0ZXh0IGZvciBnaXQgY29tbWl0cywgaW5jbHVkaW5nIGFueSB0cmFpbGVycy4gRW1wdHkgc3RyaW5nIGhpZGVzIGF0dHJpYnV0aW9uLlwiKSxwcjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBdHRyaWJ1dGlvbiB0ZXh0IGZvciBwdWxsIHJlcXVlc3QgZGVzY3JpcHRpb25zLiBFbXB0eSBzdHJpbmcgaGlkZXMgYXR0cmlidXRpb24uXCIpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbWl6ZSBhdHRyaWJ1dGlvbiB0ZXh0IGZvciBjb21taXRzIGFuZCBQUnMuIEVhY2ggZmllbGQgZGVmYXVsdHMgdG8gdGhlIHN0YW5kYXJkIENsYXVkZSBDb2RlIGF0dHJpYnV0aW9uIGlmIG5vdCBzZXQuXCIpLGluY2x1ZGVDb0F1dGhvcmVkQnk6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlcHJlY2F0ZWQ6IFVzZSBhdHRyaWJ1dGlvbiBpbnN0ZWFkLiBXaGV0aGVyIHRvIGluY2x1ZGUgQ2xhdWRlJ3MgY28tYXV0aG9yZWQgYnkgYXR0cmlidXRpb24gaW4gY29tbWl0cyBhbmQgUFJzIChkZWZhdWx0cyB0byB0cnVlKVwiKSxpbmNsdWRlR2l0SW5zdHJ1Y3Rpb25zOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJbmNsdWRlIGJ1aWx0LWluIGNvbW1pdCBhbmQgUFIgd29ya2Zsb3cgaW5zdHJ1Y3Rpb25zIGluIENsYXVkZSdzIHN5c3RlbSBwcm9tcHQgKGRlZmF1bHQ6IHRydWUpXCIpLHBlcm1pc3Npb25zOlliKCQpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb29sIHVzYWdlIHBlcm1pc3Npb25zIGNvbmZpZ3VyYXRpb25cIiksbW9kZWw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiT3ZlcnJpZGUgdGhlIGRlZmF1bHQgbW9kZWwgdXNlZCBieSBDbGF1ZGUgQ29kZVwiKSxhdmFpbGFibGVNb2RlbHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBbGxvd2xpc3Qgb2YgbW9kZWxzIHRoYXQgdXNlcnMgY2FuIHNlbGVjdC4gQWNjZXB0cyBmYW1pbHkgYWxpYXNlcyAoXCJvcHVzXCIgYWxsb3dzIGFueSBvcHVzIHZlcnNpb24pLCB2ZXJzaW9uIHByZWZpeGVzIChcIm9wdXMtNC01XCIgYWxsb3dzIG9ubHkgdGhhdCB2ZXJzaW9uKSwgYW5kIGZ1bGwgbW9kZWwgSURzLiBJZiB1bmRlZmluZWQsIGFsbCBtb2RlbHMgYXJlIGF2YWlsYWJsZS4gSWYgZW1wdHkgYXJyYXksIG9ubHkgdGhlIGRlZmF1bHQgbW9kZWwgaXMgYXZhaWxhYmxlLiBUeXBpY2FsbHkgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MgYnkgZW50ZXJwcmlzZSBhZG1pbmlzdHJhdG9ycy4nKSxtb2RlbE92ZXJyaWRlczpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ092ZXJyaWRlIG1hcHBpbmcgZnJvbSBBbnRocm9waWMgbW9kZWwgSUQgKGUuZy4gXCJjbGF1ZGUtb3B1cy00LTZcIikgdG8gcHJvdmlkZXItc3BlY2lmaWMgbW9kZWwgSUQgKGUuZy4gYSBCZWRyb2NrIGluZmVyZW5jZSBwcm9maWxlIEFSTikuIFR5cGljYWxseSBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncyBieSBlbnRlcnByaXNlIGFkbWluaXN0cmF0b3JzLicpLGVuYWJsZUFsbFByb2plY3RNY3BTZXJ2ZXJzOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgYXBwcm92ZSBhbGwgTUNQIHNlcnZlcnMgaW4gdGhlIHByb2plY3RcIiksZW5hYmxlZE1jcGpzb25TZXJ2ZXJzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgYXBwcm92ZWQgTUNQIHNlcnZlcnMgZnJvbSAubWNwLmpzb25cIiksZGlzYWJsZWRNY3Bqc29uU2VydmVyczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIHJlamVjdGVkIE1DUCBzZXJ2ZXJzIGZyb20gLm1jcC5qc29uXCIpLHNraWxsT3ZlcnJpZGVzOksucmVjb3JkKEsuc3RyaW5nKCksSy5lbnVtKFtcIm9uXCIsXCJuYW1lLW9ubHlcIixcInVzZXItaW52b2NhYmxlLW9ubHlcIixcIm9mZlwiXSkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1Blci1za2lsbCBsaXN0aW5nIG92ZXJyaWRlcyBrZXllZCBieSBza2lsbCBuYW1lLiBcIm5hbWUtb25seVwiIGxpc3RzIHRoZSBza2lsbCB3aXRob3V0IGl0cyBkZXNjcmlwdGlvbjsgXCJ1c2VyLWludm9jYWJsZS1vbmx5XCIgaGlkZXMgaXQgZnJvbSB0aGUgbW9kZWwgYnV0IGtlZXBzIC9uYW1lOyBcIm9mZlwiIGhpZGVzIGl0IGZyb20gYm90aC4gQWJzZW50ID0gb24uJyksYWxsb3dlZE1jcFNlcnZlcnM6Sy5hcnJheShHJCQoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudGVycHJpc2UgYWxsb3dsaXN0IG9mIE1DUCBzZXJ2ZXJzIHRoYXQgY2FuIGJlIHVzZWQuIEFwcGxpZXMgdG8gYWxsIHNjb3BlcyBpbmNsdWRpbmcgZW50ZXJwcmlzZSBzZXJ2ZXJzIGZyb20gbWFuYWdlZC1tY3AuanNvbi4gSWYgdW5kZWZpbmVkLCBhbGwgc2VydmVycyBhcmUgYWxsb3dlZC4gSWYgZW1wdHkgYXJyYXksIG5vIHNlcnZlcnMgYXJlIGFsbG93ZWQuIERlbnlsaXN0IHRha2VzIHByZWNlZGVuY2UgLSBpZiBhIHNlcnZlciBpcyBvbiBib3RoIGxpc3RzLCBpdCBpcyBkZW5pZWQuXCIpLGRlbmllZE1jcFNlcnZlcnM6Sy5hcnJheShVJCQoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudGVycHJpc2UgZGVueWxpc3Qgb2YgTUNQIHNlcnZlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBibG9ja2VkLiBJZiBhIHNlcnZlciBpcyBvbiB0aGUgZGVueWxpc3QsIGl0IHdpbGwgYmUgYmxvY2tlZCBhY3Jvc3MgYWxsIHNjb3BlcyBpbmNsdWRpbmcgZW50ZXJwcmlzZS4gRGVueWxpc3QgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGFsbG93bGlzdCAtIGlmIGEgc2VydmVyIGlzIG9uIGJvdGggbGlzdHMsIGl0IGlzIGRlbmllZC5cIiksaG9va3M6YzAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIGNvbW1hbmRzIHRvIHJ1biBiZWZvcmUvYWZ0ZXIgdG9vbCBleGVjdXRpb25zXCIpLHdvcmt0cmVlOksub2JqZWN0KHtzeW1saW5rRGlyZWN0b3JpZXM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdEaXJlY3RvcmllcyB0byBzeW1saW5rIGZyb20gbWFpbiByZXBvc2l0b3J5IHRvIHdvcmt0cmVlcyB0byBhdm9pZCBkaXNrIGJsb2F0LiBNdXN0IGJlIGV4cGxpY2l0bHkgY29uZmlndXJlZCAtIG5vIGRpcmVjdG9yaWVzIGFyZSBzeW1saW5rZWQgYnkgZGVmYXVsdC4gQ29tbW9uIGV4YW1wbGVzOiBcIm5vZGVfbW9kdWxlc1wiLCBcIi5jYWNoZVwiLCBcIi5iaW5cIicpLHNwYXJzZVBhdGhzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRpcmVjdG9yaWVzIHRvIGluY2x1ZGUgd2hlbiBjcmVhdGluZyB3b3JrdHJlZXMsIHZpYSBnaXQgc3BhcnNlLWNoZWNrb3V0IChjb25lIG1vZGUpLiBcIitcIkRyYW1hdGljYWxseSBmYXN0ZXIgaW4gbGFyZ2UgbW9ub3JlcG9zIFx1MjAxNCBvbmx5IHRoZSBsaXN0ZWQgcGF0aHMgYXJlIHdyaXR0ZW4gdG8gZGlzay5cIiksYmFzZVJlZjpLLmVudW0oW1wiZnJlc2hcIixcImhlYWRcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGljaCByZWYgbmV3IHdvcmt0cmVlcyBicmFuY2ggZnJvbS4gJ2ZyZXNoJyAoZGVmYXVsdCkgYnJhbmNoZXMgZnJvbSBvcmlnaW4vPGRlZmF1bHQtYnJhbmNoPiBmb3IgYSBjbGVhbiB0cmVlLiAnaGVhZCcgYnJhbmNoZXMgZnJvbSB5b3VyIGN1cnJlbnQgbG9jYWwgSEVBRCBzbyB1bnB1c2hlZCBjb21taXRzIGFuZCBmZWF0dXJlLWJyYW5jaCBzdGF0ZSBhcmUgcHJlc2VudC4gQXBwbGllcyB0byAtLXdvcmt0cmVlLCBFbnRlcldvcmt0cmVlLCBhbmQgYWdlbnQgaXNvbGF0aW9uLlwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHaXQgd29ya3RyZWUgY29uZmlndXJhdGlvbiBmb3IgLS13b3JrdHJlZSBmbGFnLlwiKSxkaXNhYmxlQWxsSG9va3M6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRpc2FibGUgYWxsIGhvb2tzIGFuZCBzdGF0dXNMaW5lIGV4ZWN1dGlvblwiKSxkaXNhYmxlQWdlbnRWaWV3OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGFnZW50IHZpZXcgKGBjbGF1ZGUgYWdlbnRzYCwgYC0tYmdgLCAvYmFja2dyb3VuZCwgdGhlIG9uLWRlbWFuZCBkYWVtb24pLiBUeXBpY2FsbHkgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MuIEVxdWl2YWxlbnQgdG8gQ0xBVURFX0NPREVfRElTQUJMRV9BR0VOVF9WSUVXPTEuXCIpLGRpc2FibGVSZW1vdGVDb250cm9sOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIFJlbW90ZSBDb250cm9sIChjbGF1ZGUuYWkvY29kZSwgYGNsYXVkZSByZW1vdGUtY29udHJvbGAsIGAtLXJlbW90ZS1jb250cm9sYC9gLS1yY2AsIGF1dG8tc3RhcnQsIGFuZCB0aGUgaW4tc2Vzc2lvbiB0b2dnbGUpLiBUeXBpY2FsbHkgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MuXCIpLGRpc2FibGVTa2lsbFNoZWxsRXhlY3V0aW9uOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGlubGluZSBzaGVsbCBleGVjdXRpb24gaW4gc2tpbGxzIGFuZCBjdXN0b20gc2xhc2ggY29tbWFuZHMgZnJvbSB1c2VyLCBwcm9qZWN0LCBvciBwbHVnaW4gc291cmNlcy4gQ29tbWFuZHMgYXJlIHJlcGxhY2VkIHdpdGggYSBwbGFjZWhvbGRlciBpbnN0ZWFkIG9mIGJlaW5nIHJ1bi5cIiksZGVmYXVsdFNoZWxsOksuZW51bShbXCJiYXNoXCIsXCJwb3dlcnNoZWxsXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGVmYXVsdCBzaGVsbCBmb3IgaW5wdXQtYm94ICEgY29tbWFuZHMuIERlZmF1bHRzIHRvICdiYXNoJyBvbiBhbGwgcGxhdGZvcm1zIChubyBXaW5kb3dzIGF1dG8tZmxpcCkuXCIpLGFsbG93TWFuYWdlZEhvb2tzT25seTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlIChhbmQgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MpLCBvbmx5IGhvb2tzIGZyb20gbWFuYWdlZCBzZXR0aW5ncyBydW4uIFVzZXIsIHByb2plY3QsIGFuZCBsb2NhbCBob29rcyBhcmUgaWdub3JlZC5cIiksYWxsb3dlZEh0dHBIb29rVXJsczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FsbG93bGlzdCBvZiBVUkwgcGF0dGVybnMgdGhhdCBIVFRQIGhvb2tzIG1heSB0YXJnZXQuIFN1cHBvcnRzICogYXMgYSB3aWxkY2FyZCAoZS5nLiBcImh0dHBzOi8vaG9va3MuZXhhbXBsZS5jb20vKlwiKS4gV2hlbiBzZXQsIEhUVFAgaG9va3Mgd2l0aCBub24tbWF0Y2hpbmcgVVJMcyBhcmUgYmxvY2tlZC4gSWYgdW5kZWZpbmVkLCBhbGwgVVJMcyBhcmUgYWxsb3dlZC4gSWYgZW1wdHkgYXJyYXksIG5vIEhUVFAgaG9va3MgYXJlIGFsbG93ZWQuIEFycmF5cyBtZXJnZSBhY3Jvc3Mgc2V0dGluZ3Mgc291cmNlcyAoc2FtZSBzZW1hbnRpY3MgYXMgYWxsb3dlZE1jcFNlcnZlcnMpLicpLGh0dHBIb29rQWxsb3dlZEVudlZhcnM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWxsb3dsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIEhUVFAgaG9va3MgbWF5IGludGVycG9sYXRlIGludG8gaGVhZGVycy4gV2hlbiBzZXQsIGVhY2ggaG9vaydzIGVmZmVjdGl2ZSBhbGxvd2VkRW52VmFycyBpcyB0aGUgaW50ZXJzZWN0aW9uIHdpdGggdGhpcyBsaXN0LiBJZiB1bmRlZmluZWQsIG5vIHJlc3RyaWN0aW9uIGlzIGFwcGxpZWQuIEFycmF5cyBtZXJnZSBhY3Jvc3Mgc2V0dGluZ3Mgc291cmNlcyAoc2FtZSBzZW1hbnRpY3MgYXMgYWxsb3dlZE1jcFNlcnZlcnMpLlwiKSxhbGxvd01hbmFnZWRQZXJtaXNzaW9uUnVsZXNPbmx5OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUgKGFuZCBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncyksIG9ubHkgcGVybWlzc2lvbiBydWxlcyAoYWxsb3cvZGVueS9hc2spIGZyb20gbWFuYWdlZCBzZXR0aW5ncyBhcmUgcmVzcGVjdGVkLiBVc2VyLCBwcm9qZWN0LCBsb2NhbCwgYW5kIENMSSBhcmd1bWVudCBwZXJtaXNzaW9uIHJ1bGVzIGFyZSBpZ25vcmVkLlwiKSxhbGxvd01hbmFnZWRNY3BTZXJ2ZXJzT25seTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlIChhbmQgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MpLCBhbGxvd2VkTWNwU2VydmVycyBpcyBvbmx5IHJlYWQgZnJvbSBtYW5hZ2VkIHNldHRpbmdzLiBkZW5pZWRNY3BTZXJ2ZXJzIHN0aWxsIG1lcmdlcyBmcm9tIGFsbCBzb3VyY2VzLCBzbyB1c2VycyBjYW4gZGVueSBzZXJ2ZXJzIGZvciB0aGVtc2VsdmVzLiBVc2VycyBjYW4gc3RpbGwgYWRkIHRoZWlyIG93biBNQ1Agc2VydmVycywgYnV0IG9ubHkgdGhlIGFkbWluLWRlZmluZWQgYWxsb3dsaXN0IGFwcGxpZXMuXCIpLHN0cmljdFBsdWdpbk9ubHlDdXN0b21pemF0aW9uOksucHJlcHJvY2VzcygoUSk9PkFycmF5LmlzQXJyYXkoUSk/US5maWx0ZXIoKEopPT5YYi5pbmNsdWRlcyhKKSk6USxLLnVuaW9uKFtLLmJvb2xlYW4oKSxLLmFycmF5KEsuZW51bShYYikpXSkpLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZSgnV2hlbiBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncywgYmxvY2tzIG5vbi1wbHVnaW4gY3VzdG9taXphdGlvbiBzb3VyY2VzIGZvciB0aGUgbGlzdGVkIHN1cmZhY2VzLiBBcnJheSBmb3JtIGxvY2tzIHNwZWNpZmljIHN1cmZhY2VzIChlLmcuIFtcInNraWxsc1wiLCBcImhvb2tzXCJdKTsgYHRydWVgIGxvY2tzIGFsbCBmb3VyOyBgZmFsc2VgIGlzIGFuIGV4cGxpY2l0IG5vLW9wLiBCbG9ja2VkOiB+Ly5jbGF1ZGUve3N1cmZhY2V9LywgLmNsYXVkZS97c3VyZmFjZX0vIChwcm9qZWN0KSwgc2V0dGluZ3MuanNvbiBob29rcywgLm1jcC5qc29uLiBOT1QgYmxvY2tlZDogbWFuYWdlZCAocG9saWN5U2V0dGluZ3MpIHNvdXJjZXMsIHBsdWdpbi1wcm92aWRlZCBjdXN0b21pemF0aW9ucy4gJytcIkNvbXBvc2VzIHdpdGggc3RyaWN0S25vd25NYXJrZXRwbGFjZXMgZm9yIGVuZC10by1lbmQgYWRtaW4gY29udHJvbCBcdTIwMTQgcGx1Z2lucyBnYXRlZCBieSBcIitcIm1hcmtldHBsYWNlIGFsbG93bGlzdCwgZXZlcnl0aGluZyBlbHNlIGJsb2NrZWQgaGVyZS5cIiksc3RhdHVzTGluZTpLLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJjb21tYW5kXCIpLGNvbW1hbmQ6Sy5zdHJpbmcoKSxwYWRkaW5nOksubnVtYmVyKCkub3B0aW9uYWwoKSxyZWZyZXNoSW50ZXJ2YWw6Sy5udW1iZXIoKS5taW4oMSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiUmUtcnVuIHRoZSBzdGF0dXMgbGluZSBjb21tYW5kIGV2ZXJ5IE4gc2Vjb25kcyBpbiBhZGRpdGlvbiB0byBldmVudC1kcml2ZW4gdXBkYXRlc1wiKSxoaWRlVmltTW9kZUluZGljYXRvcjpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSGlkZSB0aGUgYnVpbHQtaW4gYC0tIElOU0VSVCAtLWAgLyBgLS0gVklTVUFMIC0tYCBpbmRpY2F0b3IgYmVsb3cgdGhlIHByb21wdC4gVXNlIHRoaXMgd2hlbiB5b3VyIHN0YXR1cyBsaW5lIHNjcmlwdCByZW5kZXJzIGB2aW0ubW9kZWAgaXRzZWxmLlwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIGxpbmUgZGlzcGxheSBjb25maWd1cmF0aW9uXCIpLHByVXJsVGVtcGxhdGU6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdVUkwgdGVtcGxhdGUgZm9yIFBSIGxpbmtzIGluIHRoZSBmb290ZXIgYmFkZ2UgYW5kIGlubGluZSBtZXNzYWdlcy4gUGxhY2Vob2xkZXJzOiB7aG9zdH0ge293bmVyfSB7cmVwb30ge251bWJlcn0ge3VybH0uIEV4YW1wbGU6IFwiaHR0cHM6Ly9yZXZpZXdzLmV4YW1wbGUuY29tL3tvd25lcn0ve3JlcG99L3B1bGwve251bWJlcn1cIicpLHN1YmFnZW50U3RhdHVzTGluZTpLLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJjb21tYW5kXCIpLGNvbW1hbmQ6Sy5zdHJpbmcoKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gcGVyLXN1YmFnZW50IHN0YXR1cyBsaW5lIHNob3duIGluIHRoZSBhZ2VudCBwYW5lbDsgcmVjZWl2ZXMgcm93IGNvbnRleHQgYXMgSlNPTiBvbiBzdGRpblwiKSxlbmFibGVkUGx1Z2luczpLLnJlY29yZChLLnN0cmluZygpLEsudW5pb24oW0suYXJyYXkoSy5zdHJpbmcoKSksSy5ib29sZWFuKCksSy51bmRlZmluZWQoKV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdFbmFibGVkIHBsdWdpbnMgdXNpbmcgcGx1Z2luLWlkQG1hcmtldHBsYWNlLWlkIGZvcm1hdC4gRXhhbXBsZTogeyBcImZvcm1hdHRlckBhbnRocm9waWMtdG9vbHNcIjogdHJ1ZSB9LiBBbHNvIHN1cHBvcnRzIGV4dGVuZGVkIGZvcm1hdCB3aXRoIHZlcnNpb24gY29uc3RyYWludHMuIFNldHRpbmdzIHByZWNlZGVuY2UgaXMgdXNlciA8IHByb2plY3QgPCBsb2NhbCA8IGZsYWcgPCBwb2xpY3ksIHNvIHRvIGRpc2FibGUgYSBwbHVnaW4gdGhhdCBwcm9qZWN0IHNldHRpbmdzIGVuYWJsZSwgc2V0IGl0IHRvIGZhbHNlIGluIC5jbGF1ZGUvc2V0dGluZ3MubG9jYWwuanNvbiBcdTIwMTQgc2V0dGluZyBmYWxzZSBpbiB+Ly5jbGF1ZGUvc2V0dGluZ3MuanNvbiBpcyBvdmVycmlkZGVuIGJ5IHRoZSBwcm9qZWN0LicpLGV4dHJhS25vd25NYXJrZXRwbGFjZXM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxXJCQoKSkuY2hlY2soKFEpPT57Zm9yKGxldFtKLFldb2YgT2JqZWN0LmVudHJpZXMoUS52YWx1ZSkpaWYoWS5zb3VyY2Uuc291cmNlPT09XCJzZXR0aW5nc1wiJiZZLnNvdXJjZS5uYW1lIT09SilRLmlzc3Vlcy5wdXNoKHtjb2RlOlwiY3VzdG9tXCIsaW5wdXQ6WS5zb3VyY2UubmFtZSxwYXRoOltKLFwic291cmNlXCIsXCJuYW1lXCJdLG1lc3NhZ2U6YFNldHRpbmdzLXNvdXJjZWQgbWFya2V0cGxhY2UgbmFtZSBtdXN0IG1hdGNoIGl0cyBleHRyYUtub3duTWFya2V0cGxhY2VzIGtleSAoZ290IGtleSBcIiR7Sn1cIiBidXQgc291cmNlLm5hbWUgXCIke1kuc291cmNlLm5hbWV9XCIpYH0pfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFkZGl0aW9uYWwgbWFya2V0cGxhY2VzIHRvIG1ha2UgYXZhaWxhYmxlIGZvciB0aGlzIHJlcG9zaXRvcnkuIFR5cGljYWxseSB1c2VkIGluIHJlcG9zaXRvcnkgLmNsYXVkZS9zZXR0aW5ncy5qc29uIHRvIGVuc3VyZSB0ZWFtIG1lbWJlcnMgaGF2ZSByZXF1aXJlZCBwbHVnaW4gc291cmNlcy5cIiksc3RyaWN0S25vd25NYXJrZXRwbGFjZXM6Sy5hcnJheShRWCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW50ZXJwcmlzZSBzdHJpY3QgbGlzdCBvZiBhbGxvd2VkIG1hcmtldHBsYWNlIHNvdXJjZXMuIFdoZW4gc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MsIE9OTFkgdGhlc2UgZXhhY3Qgc291cmNlcyBjYW4gYmUgYWRkZWQgYXMgbWFya2V0cGxhY2VzLiBUaGUgY2hlY2sgaGFwcGVucyBCRUZPUkUgZG93bmxvYWRpbmcsIHNvIGJsb2NrZWQgc291cmNlcyBuZXZlciB0b3VjaCB0aGUgZmlsZXN5c3RlbS4gXCIrXCJOb3RlOiB0aGlzIGlzIGEgcG9saWN5IGdhdGUgb25seSBcdTIwMTQgaXQgZG9lcyBOT1QgcmVnaXN0ZXIgbWFya2V0cGxhY2VzLiBcIitcIlRvIHByZS1yZWdpc3RlciBhbGxvd2VkIG1hcmtldHBsYWNlcyBmb3IgdXNlcnMsIGFsc28gc2V0IGV4dHJhS25vd25NYXJrZXRwbGFjZXMuXCIpLGJsb2NrZWRNYXJrZXRwbGFjZXM6Sy5hcnJheShRWCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW50ZXJwcmlzZSBibG9ja2xpc3Qgb2YgbWFya2V0cGxhY2Ugc291cmNlcy4gV2hlbiBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncywgdGhlc2UgZXhhY3Qgc291cmNlcyBhcmUgYmxvY2tlZCBmcm9tIGJlaW5nIGFkZGVkIGFzIG1hcmtldHBsYWNlcy4gVGhlIGNoZWNrIGhhcHBlbnMgQkVGT1JFIGRvd25sb2FkaW5nLCBzbyBibG9ja2VkIHNvdXJjZXMgbmV2ZXIgdG91Y2ggdGhlIGZpbGVzeXN0ZW0uXCIpLGZvcmNlTG9naW5NZXRob2Q6Sy5lbnVtKFtcImNsYXVkZWFpXCIsXCJjb25zb2xlXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdGb3JjZSBhIHNwZWNpZmljIGxvZ2luIG1ldGhvZDogXCJjbGF1ZGVhaVwiIGZvciBDbGF1ZGUgUHJvL01heCwgXCJjb25zb2xlXCIgZm9yIENvbnNvbGUgYmlsbGluZycpLHBhcmVudFNldHRpbmdzQmVoYXZpb3I6Sy5lbnVtKFtcImZpcnN0LXdpbnNcIixcIm1lcmdlXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdDb250cm9scyB3aGV0aGVyIHRoZSBTREsgcGFyZW50IHRpZXIgKE9wdGlvbnMubWFuYWdlZFNldHRpbmdzIC8gLS1tYW5hZ2VkLXNldHRpbmdzKSBsYXllcnMgdW5kZXIgdGhpcyBhZG1pbiB0aWVyLiBcImZpcnN0LXdpbnNcIiAnK1wiKGRlZmF1bHQpOiBwYXJlbnQgaXMgZHJvcHBlZCBcdTIwMTQgYWRtaW4gdGllcnMgYXJlIHRoZSBvbmx5IHBvbGljeSBcIitgc291cmNlLiBcIm1lcmdlXCI6IHBhcmVudCdzIHJlc3RyaWN0aXZlLW9ubHktZmlsdGVyZWQgc2V0dGluZ3MgdW5pb24gdW5kZXIgdGhlIGFkbWluIHdpbm5lci4gSGFzIG5vIGVmZmVjdCB3aGVuIG5vIGFkbWluIHRpZXIgZXhpc3RzIChwYXJlbnQgYXBwbGllcyBhcyB0aGUgc29sZSBwb2xpY3kgdGllciwgc3RpbGwgZmlsdGVyZWQgcmVzdHJpY3RpdmUtb25seSkuYCksZm9yY2VMb2dpbk9yZ1VVSUQ6Sy51bmlvbihbSy5zdHJpbmcoKSxLLmFycmF5KEsuc3RyaW5nKCkpXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk9yZ2FuaXphdGlvbiBVVUlEIHRvIHJlcXVpcmUgZm9yIE9BdXRoIGxvZ2luLiBBY2NlcHRzIGEgc2luZ2xlIFVVSUQgc3RyaW5nIG9yIGFuIGFycmF5IG9mIFVVSURzIChhbnkgb25lIGlzIHBlcm1pdHRlZCkuIFdoZW4gc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MsIGxvZ2luIGZhaWxzIGlmIHRoZSBhdXRoZW50aWNhdGVkIGFjY291bnQgZG9lcyBub3QgYmVsb25nIHRvIGEgbGlzdGVkIG9yZ2FuaXphdGlvbi5cIiksZm9yY2VSZW1vdGVTZXR0aW5nc1JlZnJlc2g6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MsIHRoZSBDTEkgYmxvY2tzIHN0YXJ0dXAgdW50aWwgcmVtb3RlIG1hbmFnZWQgc2V0dGluZ3MgYXJlIGZyZXNobHkgZmV0Y2hlZCwgYW5kIGV4aXRzIGlmIHRoZSBmZXRjaCBmYWlsc1wiKSxvdGVsSGVhZGVyc0hlbHBlcjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgc2NyaXB0IHRoYXQgb3V0cHV0cyBPcGVuVGVsZW1ldHJ5IGhlYWRlcnNcIiksb3V0cHV0U3R5bGU6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29udHJvbHMgdGhlIG91dHB1dCBzdHlsZSBmb3IgYXNzaXN0YW50IHJlc3BvbnNlc1wiKSx2aWV3TW9kZTpLLmVudW0oW1wiZGVmYXVsdFwiLFwidmVyYm9zZVwiLFwiZm9jdXNcIl0pLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIkRlZmF1bHQgdHJhbnNjcmlwdCB2aWV3IG1vZGUgb24gc3RhcnR1cFwiKSxsYW5ndWFnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1ByZWZlcnJlZCBsYW5ndWFnZSBmb3IgQ2xhdWRlIHJlc3BvbnNlcyBhbmQgdm9pY2UgZGljdGF0aW9uIChlLmcuLCBcImphcGFuZXNlXCIsIFwic3BhbmlzaFwiKScpLHNraXBXZWJGZXRjaFByZWZsaWdodDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU2tpcCB0aGUgV2ViRmV0Y2ggYmxvY2tsaXN0IGNoZWNrIGZvciBlbnRlcnByaXNlIGVudmlyb25tZW50cyB3aXRoIHJlc3RyaWN0aXZlIHNlY3VyaXR5IHBvbGljaWVzXCIpLHNhbmRib3g6QUUoKS5vcHRpb25hbCgpLGZlZWRiYWNrU3VydmV5UmF0ZTpLLm51bWJlcigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlByb2JhYmlsaXR5ICgwXHUyMDEzMSkgdGhhdCB0aGUgc2Vzc2lvbiBxdWFsaXR5IHN1cnZleSBhcHBlYXJzIHdoZW4gZWxpZ2libGUuIDAuMDUgaXMgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LlwiKSxzcGlubmVyVGlwc0VuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZXRoZXIgdG8gc2hvdyB0aXBzIGluIHRoZSBzcGlubmVyXCIpLHNwaW5uZXJWZXJiczpLLm9iamVjdCh7bW9kZTpLLmVudW0oW1wiYXBwZW5kXCIsXCJyZXBsYWNlXCJdKSx2ZXJiczpLLmFycmF5KEsuc3RyaW5nKCkpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgnQ3VzdG9taXplIHNwaW5uZXIgdmVyYnMuIG1vZGU6IFwiYXBwZW5kXCIgYWRkcyB2ZXJicyB0byBkZWZhdWx0cywgXCJyZXBsYWNlXCIgdXNlcyBvbmx5IHlvdXIgdmVyYnMuJyksc3Bpbm5lclRpcHNPdmVycmlkZTpLLm9iamVjdCh7ZXhjbHVkZURlZmF1bHQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKSx0aXBzOksuYXJyYXkoSy5zdHJpbmcoKSl9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiT3ZlcnJpZGUgc3Bpbm5lciB0aXBzLiB0aXBzOiBhcnJheSBvZiB0aXAgc3RyaW5ncy4gZXhjbHVkZURlZmF1bHQ6IGlmIHRydWUsIG9ubHkgc2hvdyBjdXN0b20gdGlwcyAoZGVmYXVsdDogZmFsc2UpLlwiKSxzeW50YXhIaWdobGlnaHRpbmdEaXNhYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciB0byBkaXNhYmxlIHN5bnRheCBoaWdobGlnaHRpbmcgaW4gZGlmZnNcIiksdGVybWluYWxUaXRsZUZyb21SZW5hbWU6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZXRoZXIgL3JlbmFtZSB1cGRhdGVzIHRoZSB0ZXJtaW5hbCB0YWIgdGl0bGUgKGRlZmF1bHRzIHRvIHRydWUpLiBTZXQgdG8gZmFsc2UgdG8ga2VlcCBhdXRvLWdlbmVyYXRlZCB0b3BpYyB0aXRsZXMuXCIpLGFsd2F5c1RoaW5raW5nRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiBmYWxzZSwgdGhpbmtpbmcgaXMgZGlzYWJsZWQuIFdoZW4gYWJzZW50IG9yIHRydWUsIHRoaW5raW5nIGlzIGVuYWJsZWQgYXV0b21hdGljYWxseSBmb3Igc3VwcG9ydGVkIG1vZGVscy5cIiksZWZmb3J0TGV2ZWw6Sy5lbnVtKFtcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiUGVyc2lzdGVkIGVmZm9ydCBsZXZlbCBmb3Igc3VwcG9ydGVkIG1vZGVscy5cIiksYXV0b0NvbXBhY3RXaW5kb3c6Sy5udW1iZXIoKS5pbnQoKS5taW4oMWU1KS5tYXgoMWU2KS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJBdXRvLWNvbXBhY3Qgd2luZG93IHNpemVcIiksYWR2aXNvck1vZGVsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFkdmlzb3IgbW9kZWwgZm9yIHRoZSBzZXJ2ZXItc2lkZSBhZHZpc29yIHRvb2wuXCIpLGZhc3RNb2RlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUsIGZhc3QgbW9kZSBpcyBlbmFibGVkLiBXaGVuIGFic2VudCBvciBmYWxzZSwgZmFzdCBtb2RlIGlzIG9mZi5cIiksZmFzdE1vZGVQZXJTZXNzaW9uT3B0SW46Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gdHJ1ZSwgZmFzdCBtb2RlIGRvZXMgbm90IHBlcnNpc3QgYWNyb3NzIHNlc3Npb25zLiBFYWNoIHNlc3Npb24gc3RhcnRzIHdpdGggZmFzdCBtb2RlIG9mZi5cIikscHJvbXB0U3VnZ2VzdGlvbkVuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gZmFsc2UsIHByb21wdCBzdWdnZXN0aW9ucyBhcmUgZGlzYWJsZWQuIFdoZW4gYWJzZW50IG9yIHRydWUsIHByb21wdCBzdWdnZXN0aW9ucyBhcmUgZW5hYmxlZC5cIiksYXdheVN1bW1hcnlFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJAaW50ZXJuYWwgV2hlbiBmYWxzZSwgdGhlIHNlc3Npb24gcmVjYXAgKHNob3duIHdoZW4geW91IHJldHVybiBhZnRlciBiZWluZyBhd2F5IGZvciA1KyBtaW51dGVzKSBpcyBkaXNhYmxlZC4gV2hlbiBhYnNlbnQgb3IgdHJ1ZSwgcmVjYXAgaXMgZW5hYmxlZC4gSGlkZGVuIGZyb20gcHVibGljIFNESyB0eXBlcyB1bnRpbCBleHRlcm5hbCBsYXVuY2guXCIpLHNob3dDbGVhckNvbnRleHRPblBsYW5BY2NlcHQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnV2hlbiB0cnVlLCB0aGUgcGxhbi1hcHByb3ZhbCBkaWFsb2cgb2ZmZXJzIGEgXCJjbGVhciBjb250ZXh0XCIgb3B0aW9uLiBEZWZhdWx0cyB0byBmYWxzZS4nKSxhZ2VudDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJOYW1lIG9mIGFuIGFnZW50IChidWlsdC1pbiBvciBjdXN0b20pIHRvIHVzZSBmb3IgdGhlIG1haW4gdGhyZWFkLiBBcHBsaWVzIHRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQsIHRvb2wgcmVzdHJpY3Rpb25zLCBhbmQgbW9kZWwuXCIpLGNvbXBhbnlBbm5vdW5jZW1lbnRzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbXBhbnkgYW5ub3VuY2VtZW50cyB0byBkaXNwbGF5IGF0IHN0YXJ0dXAgKG9uZSB3aWxsIGJlIHJhbmRvbWx5IHNlbGVjdGVkIGlmIG11bHRpcGxlIGFyZSBwcm92aWRlZClcIikscGx1Z2luQ29uZmlnczpLLnJlY29yZChLLnN0cmluZygpLEsub2JqZWN0KHttY3BTZXJ2ZXJzOksucmVjb3JkKEsuc3RyaW5nKCksSy5yZWNvcmQoSy5zdHJpbmcoKSxLLnVuaW9uKFtLLnN0cmluZygpLEsubnVtYmVyKCksSy5ib29sZWFuKCksSy5hcnJheShLLnN0cmluZygpKV0pKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVzZXIgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yIE1DUCBzZXJ2ZXJzIGtleWVkIGJ5IHNlcnZlciBuYW1lXCIpLG9wdGlvbnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnVuaW9uKFtLLnN0cmluZygpLEsubnVtYmVyKCksSy5ib29sZWFuKCksSy5hcnJheShLLnN0cmluZygpKV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTm9uLXNlbnNpdGl2ZSBvcHRpb24gdmFsdWVzIGZyb20gcGx1Z2luIG1hbmlmZXN0IHVzZXJDb25maWcsIGtleWVkIGJ5IG9wdGlvbiBuYW1lLiBTZW5zaXRpdmUgdmFsdWVzIGdvIHRvIHNlY3VyZSBzdG9yYWdlIGluc3RlYWQuXCIpfSkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQZXItcGx1Z2luIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIE1DUCBzZXJ2ZXIgdXNlciBjb25maWdzLCBrZXllZCBieSBwbHVnaW4gSUQgKHBsdWdpbkBtYXJrZXRwbGFjZSBmb3JtYXQpXCIpLHJlbW90ZTpLLm9iamVjdCh7ZGVmYXVsdEVudmlyb25tZW50SWQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGVmYXVsdCBlbnZpcm9ubWVudCBJRCB0byB1c2UgZm9yIHJlbW90ZSBzZXNzaW9uc1wiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZW1vdGUgc2Vzc2lvbiBjb25maWd1cmF0aW9uXCIpLGF1dG9VcGRhdGVzQ2hhbm5lbDpLLmVudW0oW1wibGF0ZXN0XCIsXCJzdGFibGVcIixcInJjXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVsZWFzZSBjaGFubmVsIGZvciBhdXRvLXVwZGF0ZXMgKGxhdGVzdCBvciBzdGFibGUpXCIpLG1pbmltdW1WZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1pbmltdW0gdmVyc2lvbiB0byBzdGF5IG9uIC0gcHJldmVudHMgZG93bmdyYWRlcyB3aGVuIHN3aXRjaGluZyB0byBzdGFibGUgY2hhbm5lbFwiKSxwbGFuc0RpcmVjdG9yeTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gZGlyZWN0b3J5IGZvciBwbGFuIGZpbGVzLCByZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIH4vLmNsYXVkZS9wbGFucy9cIiksdHVpOksuZW51bShbXCJkZWZhdWx0XCIsXCJmdWxsc2NyZWVuXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdUZXJtaW5hbCBVSSByZW5kZXJlci4gXCJmdWxsc2NyZWVuXCIgdXNlcyB0aGUgZmxpY2tlci1mcmVlIGFsdC1zY3JlZW4gcmVuZGVyZXIgd2l0aCB2aXJ0dWFsaXplZCBzY3JvbGxiYWNrIChlcXVpdmFsZW50IHRvIENMQVVERV9DT0RFX05PX0ZMSUNLRVI9MSkuIFwiZGVmYXVsdFwiIHVzZXMgdGhlIGNsYXNzaWMgbWFpbi1zY3JlZW4gcmVuZGVyZXIuJyksLi4uITEsdm9pY2U6Sy5vYmplY3Qoe2VuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKSxtb2RlOksuZW51bShbXCJob2xkXCIsXCJ0YXBcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCInaG9sZCcgKGRlZmF1bHQpOiBob2xkIHRvIHRhbGsuICd0YXAnOiB0YXAgdG8gc3RhcnQsIHRhcCB0byBzdG9wK3N1Ym1pdC5cIiksYXV0b1N1Ym1pdDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU3VibWl0IHRoZSBwcm9tcHQgd2hlbiBob2xkLXRvLXRhbGsgaXMgcmVsZWFzZWQgKGhvbGQgbW9kZSBvbmx5KVwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJWb2ljZSBtb2RlIHNldHRpbmdzIChob2xkLXRvLXRhbGsgLyB0YXAtdG8tdG9nZ2xlIGRpY3RhdGlvbilcIiksY2hhbm5lbHNFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYW5hZ2VkLW9yZyBvcHQtaW4gZm9yIGNoYW5uZWwgbm90aWZpY2F0aW9ucyAoTUNQIHNlcnZlcnMgd2l0aCB0aGUgY2xhdWRlL2NoYW5uZWwgY2FwYWJpbGl0eSBwdXNoaW5nIGluYm91bmQgbWVzc2FnZXMpLiBjbGF1ZGUuYWkgVGVhbXMvRW50ZXJwcmlzZTogZGVmYXVsdCBvZmYuIENvbnNvbGU6IGRlZmF1bHQgb24gdW5sZXNzIG1hbmFnZWQgc2V0dGluZ3MgZXhpc3QuIFNldCB0cnVlIHRvIGFsbG93OyB1c2VycyB0aGVuIHNlbGVjdCBzZXJ2ZXJzIHZpYSAtLWNoYW5uZWxzLlwiKSxhbGxvd2VkQ2hhbm5lbFBsdWdpbnM6Sy5hcnJheShLLm9iamVjdCh7bWFya2V0cGxhY2U6Sy5zdHJpbmcoKSxwbHVnaW46Sy5zdHJpbmcoKX0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWFuYWdlZC1vcmcgYWxsb3dsaXN0IG9mIGNoYW5uZWwgcGx1Z2lucy4gV2hlbiBzZXQsIFwiK1wicmVwbGFjZXMgdGhlIGRlZmF1bHQgQW50aHJvcGljIGFsbG93bGlzdCBcdTIwMTQgYWRtaW5zIGRlY2lkZSB3aGljaCBcIitcInBsdWdpbnMgbWF5IHB1c2ggaW5ib3VuZCBtZXNzYWdlcy4gVW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gdGhlIGRlZmF1bHQuIFJlcXVpcmVzIGNoYW5uZWxzRW5hYmxlZDogdHJ1ZS5cIikscHJlZmVyc1JlZHVjZWRNb3Rpb246Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlZHVjZSBvciBkaXNhYmxlIGFuaW1hdGlvbnMgZm9yIGFjY2Vzc2liaWxpdHkgKHNwaW5uZXIgc2hpbW1lciwgZmxhc2ggZWZmZWN0cywgZXRjLilcIiksZG9uZU1lYW5zTWVyZ2VkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJAaW50ZXJuYWwgV2hlbiB0cnVlLCBDbGF1ZGUga2VlcHMgd29ya2luZyB1bnRpbCB0aGUgUFIgaXMgcmVhZHkgZm9yIHlvdSB0byBtZXJnZSwgYSBjcm9uL01vbml0b3IgaXMgYXJtZWQgdG8gcmVzdW1lIGxhdGVyLCBvciBpdCBoYW5kcyB5b3UgYSBzZWxmLWNvbnRhaW5lZCBuZXh0IHN0ZXAuXCIpLGF1dG9NZW1vcnlFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbmFibGUgYXV0by1tZW1vcnkgZm9yIHRoaXMgcHJvamVjdC4gV2hlbiBmYWxzZSwgQ2xhdWRlIHdpbGwgbm90IHJlYWQgZnJvbSBvciB3cml0ZSB0byB0aGUgYXV0by1tZW1vcnkgZGlyZWN0b3J5LlwiKSxhdXRvTWVtb3J5RGlyZWN0b3J5Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBkaXJlY3RvcnkgcGF0aCBmb3IgYXV0by1tZW1vcnkgc3RvcmFnZS4gU3VwcG9ydHMgfi8gcHJlZml4IGZvciBob21lIGRpcmVjdG9yeSBleHBhbnNpb24uIElnbm9yZWQgaWYgc2V0IGluIHByb2plY3RTZXR0aW5ncyAoY2hlY2tlZC1pbiAuY2xhdWRlL3NldHRpbmdzLmpzb24pIGZvciBzZWN1cml0eS4gV2hlbiB1bnNldCwgZGVmYXVsdHMgdG8gfi8uY2xhdWRlL3Byb2plY3RzLzxzYW5pdGl6ZWQtY3dkPi9tZW1vcnkvLlwiKSxhdXRvRHJlYW1FbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbmFibGUgYmFja2dyb3VuZCBtZW1vcnkgY29uc29saWRhdGlvbiAoYXV0by1kcmVhbSkuIFdoZW4gc2V0LCBvdmVycmlkZXMgdGhlIHNlcnZlci1zaWRlIGRlZmF1bHQuXCIpLHNob3dUaGlua2luZ1N1bW1hcmllczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU2hvdyB0aGlua2luZyBzdW1tYXJpZXMgaW4gdGhlIHRyYW5zY3JpcHQgdmlldyAoY3RybCtvKS4gRGVmYXVsdDogZmFsc2UuXCIpLHNraXBEYW5nZXJvdXNNb2RlUGVybWlzc2lvblByb21wdDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciB0aGUgdXNlciBoYXMgYWNjZXB0ZWQgdGhlIGJ5cGFzcyBwZXJtaXNzaW9ucyBtb2RlIGRpYWxvZ1wiKSxkaXNhYmxlQXV0b01vZGU6Sy5lbnVtKFtcImRpc2FibGVcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGF1dG8gbW9kZVwiKSxzc2hDb25maWdzOksuYXJyYXkoSy5vYmplY3Qoe2lkOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBTU0ggY29uZmlnLiBVc2VkIHRvIG1hdGNoIGNvbmZpZ3MgYWNyb3NzIHNldHRpbmdzIHNvdXJjZXMuXCIpLG5hbWU6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkRpc3BsYXkgbmFtZSBmb3IgdGhlIFNTSCBjb25uZWN0aW9uXCIpLHNzaEhvc3Q6Sy5zdHJpbmcoKS5kZXNjcmliZSgnU1NIIGhvc3QgaW4gZm9ybWF0IFwidXNlckBob3N0bmFtZVwiIG9yIFwiaG9zdG5hbWVcIiwgb3IgYSBob3N0IGFsaWFzIGZyb20gfi8uc3NoL2NvbmZpZycpLHNzaFBvcnQ6Sy5udW1iZXIoKS5pbnQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU1NIIHBvcnQgKGRlZmF1bHQ6IDIyKVwiKSxzc2hJZGVudGl0eUZpbGU6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBTU0ggaWRlbnRpdHkgZmlsZSAocHJpdmF0ZSBrZXkpXCIpLHN0YXJ0RGlyZWN0b3J5Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgd29ya2luZyBkaXJlY3Rvcnkgb24gdGhlIHJlbW90ZSBob3N0LiBTdXBwb3J0cyB0aWxkZSBleHBhbnNpb24gKGUuZy4gfi9wcm9qZWN0cykuIElmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHRzIHRvIHRoZSByZW1vdGUgdXNlciBob21lIGRpcmVjdG9yeS4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIFtkaXJdIHBvc2l0aW9uYWwgYXJndW1lbnQgaW4gYGNsYXVkZSBzc2ggPGNvbmZpZz4gW2Rpcl1gLlwiKX0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU1NIIGNvbm5lY3Rpb24gY29uZmlndXJhdGlvbnMgZm9yIHJlbW90ZSBlbnZpcm9ubWVudHMuIFR5cGljYWxseSBzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncyBieSBlbnRlcnByaXNlIGFkbWluaXN0cmF0b3JzIHRvIHByZS1jb25maWd1cmUgU1NIIGNvbm5lY3Rpb25zIGZvciB0ZWFtIG1lbWJlcnMuXCIpLGNsYXVkZU1kOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNMQVVERS5tZC1zdHlsZSBpbnN0cnVjdGlvbnMgaW5qZWN0ZWQgYXMgb3JnYW5pemF0aW9uLW1hbmFnZWQgbWVtb3J5LiBPbmx5IGhvbm9yZWQgZnJvbSBtYW5hZ2VkL3BvbGljeSBzZXR0aW5ncy5cIiksY2xhdWRlTWRFeGNsdWRlczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0dsb2IgcGF0dGVybnMgb3IgYWJzb2x1dGUgcGF0aHMgb2YgQ0xBVURFLm1kIGZpbGVzIHRvIGV4Y2x1ZGUgZnJvbSBsb2FkaW5nLiBQYXR0ZXJucyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IGFic29sdXRlIGZpbGUgcGF0aHMgdXNpbmcgcGljb21hdGNoLiBPbmx5IGFwcGxpZXMgdG8gVXNlciwgUHJvamVjdCwgYW5kIExvY2FsIG1lbW9yeSB0eXBlcyAoTWFuYWdlZC9wb2xpY3kgZmlsZXMgY2Fubm90IGJlIGV4Y2x1ZGVkKS4gRXhhbXBsZXM6IFwiL2hvbWUvdXNlci9tb25vcmVwby9DTEFVREUubWRcIiwgXCIqKi9jb2RlL0NMQVVERS5tZFwiLCBcIioqL3NvbWUtZGlyLy5jbGF1ZGUvcnVsZXMvKipcIicpLHBsdWdpblRydXN0TWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0N1c3RvbSBtZXNzYWdlIHRvIGFwcGVuZCB0byB0aGUgcGx1Z2luIHRydXN0IHdhcm5pbmcgc2hvd24gYmVmb3JlIGluc3RhbGxhdGlvbi4gT25seSByZWFkIGZyb20gcG9saWN5IHNldHRpbmdzIChtYW5hZ2VkLXNldHRpbmdzLmpzb24gLyBNRE0pLiBVc2VmdWwgZm9yIGVudGVycHJpc2UgYWRtaW5pc3RyYXRvcnMgdG8gYWRkIG9yZ2FuaXphdGlvbi1zcGVjaWZpYyBjb250ZXh0IChlLmcuLCBcIkFsbCBwbHVnaW5zIGZyb20gb3VyIGludGVybmFsIG1hcmtldHBsYWNlIGFyZSB2ZXR0ZWQgYW5kIGFwcHJvdmVkLlwiKS4nKSx0aGVtZTpLLnVuaW9uKFtLLmVudW0oRUUpLEsuc3RyaW5nKCkuc3RhcnRzV2l0aChcImN1c3RvbTpcIikudHJhbnNmb3JtKChRKT0+USldKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJDb2xvciB0aGVtZSBmb3IgdGhlIFVJXCIpLGVkaXRvck1vZGU6Sy5lbnVtKFJFKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJLZXkgYmluZGluZyBtb2RlIGZvciB0aGUgcHJvbXB0IGlucHV0XCIpLHZlcmJvc2U6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNob3cgZnVsbCB0b29sIG91dHB1dCBpbnN0ZWFkIG9mIHRydW5jYXRlZCBzdW1tYXJpZXNcIikscHJlZmVycmVkTm90aWZDaGFubmVsOksuZW51bShJRSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiUHJlZmVycmVkIE9TIG5vdGlmaWNhdGlvbiBjaGFubmVsXCIpLGF1dG9Db21wYWN0RW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQXV0b21hdGljYWxseSBjb21wYWN0IGNvbnZlcnNhdGlvbiB3aGVuIGNvbnRleHQgZmlsbHNcIiksYXV0b1Njcm9sbEVuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkF1dG8tc2Nyb2xsIHRoZSBjb252ZXJzYXRpb24gdmlldyB0byBib3R0b20gKGZ1bGxzY3JlZW4gbW9kZSBvbmx5KVwiKSxmaWxlQ2hlY2twb2ludGluZ0VuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNuYXBzaG90IGZpbGVzIGJlZm9yZSBlZGl0cyBzbyAvcmV3aW5kIGNhbiByZXN0b3JlIHRoZW1cIiksc2hvd1R1cm5EdXJhdGlvbjpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdTaG93IFwiQ29va2VkIGZvciBObSBOc1wiIGFmdGVyIGVhY2ggYXNzaXN0YW50IHR1cm4nKSxzaG93TWVzc2FnZVRpbWVzdGFtcHM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlN0YW1wIGVhY2ggYXNzaXN0YW50IG1lc3NhZ2Ugd2l0aCBpdHMgYXJyaXZhbCB0aW1lXCIpLHRlcm1pbmFsUHJvZ3Jlc3NCYXJFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbWl0IE9TQyA5OzQgcHJvZ3Jlc3Mgc2VxdWVuY2VzIGR1cmluZyBsb25nIG9wZXJhdGlvbnNcIiksdG9kb0ZlYXR1cmVFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbmFibGUgdGhlIHRvZG8gLyB0YXNrIHRyYWNraW5nIHBhbmVsXCIpLHRlYW1tYXRlTW9kZTpLLmVudW0oUEUpLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIkhvdyBzcGF3bmVkIHRlYW1tYXRlcyBleGVjdXRlICh0bXV4LCBpbi1wcm9jZXNzLCBhdXRvKVwiKSxyZW1vdGVDb250cm9sQXRTdGFydHVwOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTdGFydCBSZW1vdGUgQ29udHJvbCBicmlkZ2UgYXV0b21hdGljYWxseSBlYWNoIHNlc3Npb25cIiksaXNvbGF0ZVBlZXJNYWNoaW5lczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVxdWlyZSBleHBsaWNpdCBhcHByb3ZhbCBiZWZvcmUgU2VuZE1lc3NhZ2UgY2FuIHJlYWNoIGEgcGVlciBzZXNzaW9uIG9uIGFub3RoZXIgbWFjaGluZSB2aWEgUmVtb3RlIENvbnRyb2xcIiksZGFlbW9uQ29sZFN0YXJ0OksuZW51bShbXCJ0cmFuc2llbnRcIixcImFza1wiXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gbm8gYmFja2dyb3VuZCBzZXJ2aWNlIGlzIHJ1bm5pbmc6ICd0cmFuc2llbnQnIHNwYXducyBvbmUgZm9yIHRoaXMgbG9naW4gc2Vzc2lvbjsgJ2Fzaycgb2ZmZXJzIHRvIGluc3RhbGwgaXQgcGVyc2lzdGVudGx5XCIpLGF1dG9VcGxvYWRTZXNzaW9uczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWlycm9yIGxvY2FsIHNlc3Npb25zIHRvIGNsYXVkZS5haSBhcyB2aWV3LW9ubHkgKG5vIHJlbW90ZSBjb250cm9sKVwiKSxpbnB1dE5lZWRlZE5vdGlmRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHVzaCB0byBtb2JpbGUgd2hlbiBhIHBlcm1pc3Npb24gcHJvbXB0IG9yIHF1ZXN0aW9uIGlzIHdhaXRpbmdcIiksYWdlbnRQdXNoTm90aWZFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBbGxvdyBDbGF1ZGUgdG8gcHVzaCBwcm9hY3RpdmUgbW9iaWxlIG5vdGlmaWNhdGlvbnNcIiksLi4uaUUoJCl9KS5wYXNzdGhyb3VnaCgpfXZhciB2ND1fKCgpPT5XYihmeigpKSk7dmFyIEskJD1be21hdGNoZXM6KCQpPT4kLnBhdGg9PT1cInBlcm1pc3Npb25zLmRlZmF1bHRNb2RlXCImJiQuY29kZT09PVwiaW52YWxpZF92YWx1ZVwiLHRpcDp7c3VnZ2VzdGlvbjonVmFsaWQgbW9kZXM6IFwiYWNjZXB0RWRpdHNcIiAoYXNrIGJlZm9yZSBmaWxlIGNoYW5nZXMpLCBcInBsYW5cIiAoYW5hbHlzaXMgb25seSksIFwiYnlwYXNzUGVybWlzc2lvbnNcIiAoYXV0by1hY2NlcHQgYWxsKSwgb3IgXCJkZWZhdWx0XCIgKHN0YW5kYXJkIGJlaGF2aW9yKScsZG9jTGluazpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaWFtI3Blcm1pc3Npb24tbW9kZXNcIn19LHttYXRjaGVzOigkKT0+JC5wYXRoPT09XCJhcGlLZXlIZWxwZXJcIiYmJC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIix0aXA6e3N1Z2dlc3Rpb246J1Byb3ZpZGUgYSBzaGVsbCBjb21tYW5kIHRoYXQgb3V0cHV0cyB5b3VyIEFQSSBrZXkgdG8gc3Rkb3V0LiBUaGUgc2NyaXB0IHNob3VsZCBvdXRwdXQgb25seSB0aGUgQVBJIGtleS4gRXhhbXBsZTogXCIvYmluL2dlbmVyYXRlX3RlbXBfYXBpX2tleS5zaFwiJ319LHttYXRjaGVzOigkKT0+JC5wYXRoPT09XCJjbGVhbnVwUGVyaW9kRGF5c1wiJiYkLmNvZGU9PT1cInRvb19zbWFsbFwiLHRpcDp7c3VnZ2VzdGlvbjonY2xlYW51cFBlcmlvZERheXMgbXVzdCBiZSBhdCBsZWFzdCAxLiBUbyBrZWVwIHRyYW5zY3JpcHRzIGZvciBhIGxvbmcgdGltZSwgc2V0IGEgbGFyZ2UgbnVtYmVyIChlLmcuIDM2NTAgZm9yIH4xMCB5ZWFycykuIFRvIGRpc2FibGUgdHJhbnNjcmlwdCB3cml0ZXMgZW50aXJlbHksIHJlbW92ZSB0aGlzIHNldHRpbmcgYW5kIHVzZSB0aGUgLS1uby1zZXNzaW9uLXBlcnNpc3RlbmNlIENMSSBmbGFnIG9yIHRoZSBTREsgcGVyc2lzdFNlc3Npb246ZmFsc2Ugb3B0aW9uIGluc3RlYWQuICgwIGlzIHJlamVjdGVkIGJlY2F1c2UgaXQgcHJldmlvdXNseSBzaWxlbnRseSBkaXNhYmxlZCBhbGwgdHJhbnNjcmlwdCB3cml0ZXMsIHdoaWNoIHVzZXJzIHNldHRpbmcgaXQgdG8gbWVhbiBcIm5ldmVyIGNsZWFuIHVwXCIgZGlkIG5vdCBleHBlY3QuKSd9fSx7bWF0Y2hlczooJCk9PiQucGF0aC5zdGFydHNXaXRoKFwiZW52LlwiKSYmJC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIix0aXA6e3N1Z2dlc3Rpb246J0Vudmlyb25tZW50IHZhcmlhYmxlcyBtdXN0IGJlIHN0cmluZ3MuIFdyYXAgbnVtYmVycyBhbmQgYm9vbGVhbnMgaW4gcXVvdGVzLiBFeGFtcGxlOiBcIkRFQlVHXCI6IFwidHJ1ZVwiLCBcIlBPUlRcIjogXCIzMDAwXCInLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL3NldHRpbmdzI2Vudmlyb25tZW50LXZhcmlhYmxlc1wifX0se21hdGNoZXM6KCQpPT4oJC5wYXRoPT09XCJwZXJtaXNzaW9ucy5hbGxvd1wifHwkLnBhdGg9PT1cInBlcm1pc3Npb25zLmRlbnlcIikmJiQuY29kZT09PVwiaW52YWxpZF90eXBlXCImJiQuZXhwZWN0ZWQ9PT1cImFycmF5XCIsdGlwOntzdWdnZXN0aW9uOidQZXJtaXNzaW9uIHJ1bGVzIG11c3QgYmUgaW4gYW4gYXJyYXkuIEZvcm1hdDogW1wiVG9vbChzcGVjaWZpZXIpXCJdLiBFeGFtcGxlczogW1wiQmFzaChucG0gcnVuIGJ1aWxkKVwiLCBcIkVkaXQoZG9jcy8qKilcIiwgXCJSZWFkKH4vLnpzaHJjKVwiXS4gVXNlICogZm9yIHdpbGRjYXJkcy4nfX0se21hdGNoZXM6KCQpPT4kLnBhdGguc3RhcnRzV2l0aChcImhvb2tzLlwiKSYmJC5jb2RlPT09XCJpbnZhbGlkX2tleVwiLHRpcDp7c3VnZ2VzdGlvbjpcIk5vdCBhIHJlY29nbml6ZWQgaG9vayBldmVudC4gQ29tbW9uIGV2ZW50czogUHJlVG9vbFVzZSwgUG9zdFRvb2xVc2UsIFVzZXJQcm9tcHRTdWJtaXQsIFNlc3Npb25TdGFydCwgU2Vzc2lvbkVuZCwgU3RvcC4gQ2hlY2sgc3BlbGxpbmcgYW5kIGNhcGl0YWxpemF0aW9uLlwiLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2hvb2tzXCJ9fSx7bWF0Y2hlczooJCk9PiQucGF0aC5pbmNsdWRlcyhcImhvb2tzXCIpJiYkLmNvZGU9PT1cImludmFsaWRfdHlwZVwiLHRpcDp7c3VnZ2VzdGlvbjonSG9va3MgdXNlIGEgbWF0Y2hlciArIGhvb2tzIGFycmF5LiBUaGUgbWF0Y2hlciBpcyBhIHN0cmluZzogYSB0b29sIG5hbWUgKFwiQmFzaFwiKSwgcGlwZS1zZXBhcmF0ZWQgbGlzdCAoXCJFZGl0fFdyaXRlXCIpLCBvciBlbXB0eSB0byBtYXRjaCBhbGwuIEV4YW1wbGU6IHtcIlBvc3RUb29sVXNlXCI6IFt7XCJtYXRjaGVyXCI6IFwiRWRpdHxXcml0ZVwiLCBcImhvb2tzXCI6IFt7XCJ0eXBlXCI6IFwiY29tbWFuZFwiLCBcImNvbW1hbmRcIjogXCJlY2hvIERvbmVcIn1dfV19J319LHttYXRjaGVzOigkKT0+JC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIiYmJC5leHBlY3RlZD09PVwiYm9vbGVhblwiLHRpcDp7c3VnZ2VzdGlvbjonVXNlIHRydWUgb3IgZmFsc2Ugd2l0aG91dCBxdW90ZXMuIEV4YW1wbGU6IFwiaW5jbHVkZUNvQXV0aG9yZWRCeVwiOiB0cnVlJ319LHttYXRjaGVzOigkKT0+JC5jb2RlPT09XCJ1bnJlY29nbml6ZWRfa2V5c1wiLHRpcDp7c3VnZ2VzdGlvbjpcIkNoZWNrIGZvciB0eXBvcyBvciByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdmFsaWQgZmllbGRzXCIsZG9jTGluazpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vc2V0dGluZ3NcIn19LHttYXRjaGVzOigkKT0+JC5jb2RlPT09XCJpbnZhbGlkX3ZhbHVlXCImJiQuZW51bVZhbHVlcyE9PXZvaWQgMCx0aXA6e3N1Z2dlc3Rpb246dm9pZCAwfX0se21hdGNoZXM6KCQpPT4kLmNvZGU9PT1cImludmFsaWRfdHlwZVwiJiYkLmV4cGVjdGVkPT09XCJvYmplY3RcIiYmJC5yZWNlaXZlZD09PW51bGwmJiQucGF0aD09PVwiXCIsdGlwOntzdWdnZXN0aW9uOlwiQ2hlY2sgZm9yIG1pc3NpbmcgY29tbWFzLCB1bm1hdGNoZWQgYnJhY2tldHMsIG9yIHRyYWlsaW5nIGNvbW1hcy4gVXNlIGEgSlNPTiB2YWxpZGF0b3IgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IHN5bnRheCBlcnJvci5cIn19LHttYXRjaGVzOigkKT0+JC5wYXRoPT09XCJwZXJtaXNzaW9ucy5hZGRpdGlvbmFsRGlyZWN0b3JpZXNcIiYmJC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIix0aXA6e3N1Z2dlc3Rpb246J011c3QgYmUgYW4gYXJyYXkgb2YgZGlyZWN0b3J5IHBhdGhzLiBFeGFtcGxlOiBbXCJ+L3Byb2plY3RzXCIsIFwiL3RtcC93b3Jrc3BhY2VcIl0uIFlvdSBjYW4gYWxzbyB1c2UgLS1hZGQtZGlyIGZsYWcgb3IgL2FkZC1kaXIgY29tbWFuZCcsZG9jTGluazpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaWFtI3dvcmtpbmctZGlyZWN0b3JpZXNcIn19XSxxJCQ9e3Blcm1pc3Npb25zOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9pYW0jY29uZmlndXJpbmctcGVybWlzc2lvbnNcIixlbnY6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL3NldHRpbmdzI2Vudmlyb25tZW50LXZhcmlhYmxlc1wiLGhvb2tzOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9ob29rc1wifTtmdW5jdGlvbiBHYigkKXtsZXQgUT1LJCQuZmluZCgoWSk9PlkubWF0Y2hlcygkKSk7aWYoIVEpcmV0dXJuIG51bGw7bGV0IEo9ey4uLlEudGlwfTtpZigkLmNvZGU9PT1cImludmFsaWRfdmFsdWVcIiYmJC5lbnVtVmFsdWVzJiYhSi5zdWdnZXN0aW9uKUouc3VnZ2VzdGlvbj1gVmFsaWQgdmFsdWVzOiAkeyQuZW51bVZhbHVlcy5tYXAoKFkpPT5gXCIke1l9XCJgKS5qb2luKFwiLCBcIil9YDtpZighSi5kb2NMaW5rJiYkLnBhdGgpe2xldCBZPSQucGF0aC5zcGxpdChcIi5cIilbMF07aWYoWSlKLmRvY0xpbms9cSQkW1ldfXJldHVybiBKfXZhciBiWiQ9XygoKT0+djQoKS5zdHJpY3QoKSk7ZnVuY3Rpb24gVWIoJCl7cmV0dXJuICQuY29kZT09PVwiaW52YWxpZF90eXBlXCJ9ZnVuY3Rpb24gSGIoJCl7cmV0dXJuICQuY29kZT09PVwiaW52YWxpZF92YWx1ZVwifWZ1bmN0aW9uIFYkJCgkKXtyZXR1cm4gJC5jb2RlPT09XCJ1bnJlY29nbml6ZWRfa2V5c1wifWZ1bmN0aW9uIEtiKCQpe3JldHVybiAkLmNvZGU9PT1cInRvb19zbWFsbFwifWZ1bmN0aW9uIEpYKCQpe2lmKCQ9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKCQ9PT12b2lkIDApcmV0dXJuXCJ1bmRlZmluZWRcIjtpZihBcnJheS5pc0FycmF5KCQpKXJldHVyblwiYXJyYXlcIjtyZXR1cm4gdHlwZW9mICR9ZnVuY3Rpb24gcWIoJCl7bGV0IFE9JC5tYXRjaCgvcmVjZWl2ZWQgKFxcdyspLyk7cmV0dXJuIFE/UVsxXTp2b2lkIDB9ZnVuY3Rpb24gaTAoJCxRKXtyZXR1cm4gJC5pc3N1ZXMubWFwKChKKT0+e2xldCBZPUoucGF0aC5tYXAoU3RyaW5nKS5qb2luKFwiLlwiKSxYPUoubWVzc2FnZSxXLEcsVSxILHE7aWYoSGIoSikpRz1KLnZhbHVlcy5tYXAoKEIpPT5TdHJpbmcoQikpLFU9Ry5qb2luKFwiIHwgXCIpLEg9dm9pZCAwLHE9dm9pZCAwO2Vsc2UgaWYoVWIoSikpe1U9Si5leHBlY3RlZDtsZXQgQj1xYihKLm1lc3NhZ2UpO0g9Qj8/SlgoSi5pbnB1dCkscT1CPz9KWChKLmlucHV0KX1lbHNlIGlmKEtiKEopKVU9U3RyaW5nKEoubWluaW11bSk7ZWxzZSBpZihKLmNvZGU9PT1cImN1c3RvbVwiJiZcInBhcmFtc1wiaW4gSilIPUoucGFyYW1zLnJlY2VpdmVkLHE9SDtsZXQgVj1HYih7cGF0aDpZLGNvZGU6Si5jb2RlLGV4cGVjdGVkOlUscmVjZWl2ZWQ6SCxlbnVtVmFsdWVzOkcsbWVzc2FnZTpKLm1lc3NhZ2UsdmFsdWU6SH0pO2lmKEhiKEopKVc9Rz8ubWFwKChCKT0+YFwiJHtCfVwiYCkuam9pbihcIiwgXCIpLFg9YEludmFsaWQgdmFsdWUuIEV4cGVjdGVkIG9uZSBvZjogJHtXfWA7ZWxzZSBpZihVYihKKSl7bGV0IEI9cWIoSi5tZXNzYWdlKT8/SlgoSi5pbnB1dCk7aWYoSi5leHBlY3RlZD09PVwib2JqZWN0XCImJkI9PT1cIm51bGxcIiYmWT09PVwiXCIpWD1cIkludmFsaWQgb3IgbWFsZm9ybWVkIEpTT05cIjtlbHNlIFg9YEV4cGVjdGVkICR7Si5leHBlY3RlZH0sIGJ1dCByZWNlaXZlZCAke0J9YH1lbHNlIGlmKFYkJChKKSl7bGV0IEI9Si5rZXlzLmpvaW4oXCIsIFwiKTtYPWBVbnJlY29nbml6ZWQgJHtzTyhKLmtleXMubGVuZ3RoLFwiZmllbGRcIil9OiAke0J9YH1lbHNlIGlmKEtiKEopKVg9YE51bWJlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke0oubWluaW11bX1gLFc9U3RyaW5nKEoubWluaW11bSk7cmV0dXJue2ZpbGU6USxwYXRoOlksbWVzc2FnZTpYLGV4cGVjdGVkOlcsaW52YWxpZFZhbHVlOnEsc3VnZ2VzdGlvbjpWPy5zdWdnZXN0aW9uLGRvY0xpbms6Vj8uZG9jTGlua319KX1mdW5jdGlvbiBCJCQoJCxRKXtpZighJHx8dHlwZW9mICQhPT1cIm9iamVjdFwiKXJldHVybltdO2xldCBKPSQ7aWYoIUoucGVybWlzc2lvbnN8fHR5cGVvZiBKLnBlcm1pc3Npb25zIT09XCJvYmplY3RcIilyZXR1cm5bXTtsZXQgWT1KLnBlcm1pc3Npb25zLFg9W107Zm9yKGxldCBXIG9mW1wiYWxsb3dcIixcImRlbnlcIixcImFza1wiXSl7bGV0IEc9WVtXXTtpZighQXJyYXkuaXNBcnJheShHKSljb250aW51ZTtZW1ddPUcuZmlsdGVyKChVKT0+e2lmKHR5cGVvZiBVIT09XCJzdHJpbmdcIilyZXR1cm4gWC5wdXNoKHtmaWxlOlEscGF0aDpgcGVybWlzc2lvbnMuJHtXfWAsbWVzc2FnZTpgTm9uLXN0cmluZyB2YWx1ZSBpbiAke1d9IGFycmF5IHdhcyByZW1vdmVkYCxzZXZlcml0eTpcIndhcm5pbmdcIixpbnZhbGlkVmFsdWU6VX0pLCExO2xldCBIPWd6KFUpO2lmKCFILnZhbGlkKXtsZXQgcT1gSW52YWxpZCBwZXJtaXNzaW9uIHJ1bGUgXCIke1V9XCIgd2FzIHNraXBwZWQ6ICR7SC5lcnJvcn1gO2lmKEguc3VnZ2VzdGlvbilxKz1gLiAke0guc3VnZ2VzdGlvbn1gO3JldHVybiBYLnB1c2goe2ZpbGU6USxwYXRoOmBwZXJtaXNzaW9ucy4ke1d9YCxtZXNzYWdlOnEsc2V2ZXJpdHk6XCJ3YXJuaW5nXCIsaW52YWxpZFZhbHVlOlV9KSwhMX1yZXR1cm4hMH0pfXJldHVybiBYfXZhciB6JCQ9bmV3IFNldChzMCk7ZnVuY3Rpb24gTiQkKCQsUSl7aWYoISR8fHR5cGVvZiAkIT09XCJvYmplY3RcIilyZXR1cm5bXTtsZXQgSj0kO2lmKCEoXCJob29rc1wiaW4gSikpcmV0dXJuW107aWYoSi5ob29rcz09PW51bGx8fHR5cGVvZiBKLmhvb2tzIT09XCJvYmplY3RcInx8QXJyYXkuaXNBcnJheShKLmhvb2tzKSl7bGV0IFc9SlgoSi5ob29rcyk7cmV0dXJuIGRlbGV0ZSBKLmhvb2tzLFt7ZmlsZTpRLHBhdGg6XCJob29rc1wiLG1lc3NhZ2U6YFwiaG9va3NcIiBtdXN0IGJlIGFuIG9iamVjdCBtYXBwaW5nIGV2ZW50IG5hbWVzIHRvIG1hdGNoZXIgYXJyYXlzOyByZWNlaXZlZCAke1d9LiBUaGlzIGZpZWxkIHdhcyBpZ25vcmVkLmAsc2V2ZXJpdHk6XCJ3YXJuaW5nXCIsaW52YWxpZFZhbHVlOlcsZG9jTGluazpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaG9va3NcIn1dfWxldCBZPUouaG9va3MsWD1bXTtmb3IobGV0IFcgb2YgT2JqZWN0LmtleXMoWSkpe2lmKCF6JCQuaGFzKFcpKXtkZWxldGUgWVtXXSxYLnB1c2goe2ZpbGU6USxwYXRoOmBob29rcy4ke1d9YCxtZXNzYWdlOmBVbmtub3duIGhvb2sgZXZlbnQgXCIke1d9XCIgd2FzIGlnbm9yZWQuIFZhbGlkIGV2ZW50czogJHtzMC5qb2luKFwiLCBcIil9YCxzZXZlcml0eTpcIndhcm5pbmdcIixpbnZhbGlkVmFsdWU6Vyxkb2NMaW5rOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9ob29rc1wifSk7Y29udGludWV9aWYoIUFycmF5LmlzQXJyYXkoWVtXXSkpe2xldCBHPUpYKFlbV10pO2RlbGV0ZSBZW1ddLFgucHVzaCh7ZmlsZTpRLHBhdGg6YGhvb2tzLiR7V31gLG1lc3NhZ2U6YEhvb2sgZXZlbnQgXCIke1d9XCIgbXVzdCBiZSBhbiBhcnJheSBvZiBtYXRjaGVyczsgcmVjZWl2ZWQgJHtHfS4gVGhpcyBlbnRyeSB3YXMgaWdub3JlZC5gLHNldmVyaXR5Olwid2FybmluZ1wiLGludmFsaWRWYWx1ZTpHLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2hvb2tzXCJ9KX19aWYoWC5sZW5ndGg+MCYmT2JqZWN0LmtleXMoWSkubGVuZ3RoPT09MClkZWxldGUgSi5ob29rcztyZXR1cm4gWH1mdW5jdGlvbiBpMSgkLFEpe3JldHVyblsuLi5CJCQoJCxRKSwuLi5OJCQoJCxRKV19aW1wb3J0e3VzZXJJbmZvIGFzIHckJH1mcm9tXCJvc1wiO3ZhciBWYj1cImNvbS5hbnRocm9waWMuY2xhdWRlY29kZVwiLFhYPVwiSEtMTVxcXFxTT0ZUV0FSRVxcXFxQb2xpY2llc1xcXFxDbGF1ZGVDb2RlXCIsWVg9XCJIS0NVXFxcXFNPRlRXQVJFXFxcXFBvbGljaWVzXFxcXENsYXVkZUNvZGVcIixuMT1cIlNldHRpbmdzXCIsQmI9XCIvdXNyL2Jpbi9wbHV0aWxcIix6Yj1bXCItY29udmVydFwiLFwianNvblwiLFwiLW9cIixcIi1cIixcIi0tXCJdLE5iPTUwMDAsaHo9XCIvbW50L2MvV2luZG93cy9TeXN0ZW0zMi9yZWcuZXhlXCIsXzk9XCIvbW50L2MvUHJvZ3JhbSBGaWxlcy9DbGF1ZGVDb2RlXCI7ZnVuY3Rpb24gQkcoKXtpZihwcm9jZXNzLnBsYXRmb3JtIT09XCJsaW51eFwiKXJldHVybiExO2lmKHByb2Nlc3MuZW52LldTTF9ESVNUUk9fTkFNRSlyZXR1cm4hMDt0cnl7bGV0ICQ9UzYoXCJmc1wiKS5yZWFkRmlsZVN5bmMoXCIvcHJvYy92ZXJzaW9uXCIsXCJ1dGY4XCIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuICQuaW5jbHVkZXMoXCJtaWNyb3NvZnRcIil8fCQuaW5jbHVkZXMoXCJ3c2xcIil9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHdiKCl7bGV0ICQ9XCJcIjt0cnl7JD13JCQoKS51c2VybmFtZX1jYXRjaHt9bGV0IFE9W107aWYoJClRLnB1c2goe3BhdGg6YC9MaWJyYXJ5L01hbmFnZWQgUHJlZmVyZW5jZXMvJHskfS8ke1ZifS5wbGlzdGAsbGFiZWw6XCJwZXItdXNlciBtYW5hZ2VkIHByZWZlcmVuY2VzXCJ9KTtyZXR1cm4gUS5wdXNoKHtwYXRoOmAvTGlicmFyeS9NYW5hZ2VkIFByZWZlcmVuY2VzLyR7VmJ9LnBsaXN0YCxsYWJlbDpcImRldmljZS1sZXZlbCBtYW5hZ2VkIHByZWZlcmVuY2VzXCJ9KSxRfWltcG9ydHtleGVjRmlsZSBhcyBPJCR9ZnJvbVwiY2hpbGRfcHJvY2Vzc1wiO2ltcG9ydHtleGlzdHNTeW5jIGFzIEQkJH1mcm9tXCJmc1wiO3ZhciBGJCQ9bnVsbDtmdW5jdGlvbiBXWCgkLFEpe3JldHVybiBuZXcgUHJvbWlzZSgoSik9Pnt0cnl7TyQkKCQsUSx7ZW5jb2Rpbmc6XCJ1dGYtOFwiLHRpbWVvdXQ6TmJ9LChZLFgpPT57Sih7c3Rkb3V0Olg/P1wiXCIsY29kZTpZPzE6MH0pfSl9Y2F0Y2h7Sih7c3Rkb3V0OlwiXCIsY29kZToxfSl9fSl9ZnVuY3Rpb24gT2IoKXtyZXR1cm4oYXN5bmMoKT0+e2lmKHByb2Nlc3MucGxhdGZvcm09PT1cImRhcndpblwiKXtsZXQgJD13YigpLEo9KGF3YWl0IFByb21pc2UuYWxsKCQubWFwKGFzeW5jKHtwYXRoOlksbGFiZWw6WH0pPT57aWYoIUQkJChZKSlyZXR1cm57c3Rkb3V0OlwiXCIsbGFiZWw6WCxvazohMX07bGV0e3N0ZG91dDpXLGNvZGU6R309YXdhaXQgV1goQmIsWy4uLnpiLFldKTtyZXR1cm57c3Rkb3V0OlcsbGFiZWw6WCxvazpHPT09MCYmISFXfX0pKSkuZmluZCgoWSk9Plkub2spO3JldHVybntwbGlzdFN0ZG91dHM6Sj9be3N0ZG91dDpKLnN0ZG91dCxsYWJlbDpKLmxhYmVsfV06W10saGtsbVN0ZG91dDpudWxsLGhrY3VTdGRvdXQ6bnVsbH19aWYocHJvY2Vzcy5wbGF0Zm9ybT09PVwid2luMzJcIil7bGV0IFE9YCR7cHJvY2Vzcy5lbnYuU1lTVEVNUk9PVHx8XCJDOlxcXFxXaW5kb3dzXCJ9XFxcXFN5c3RlbTMyXFxcXHJlZy5leGVgLFtKLFldPWF3YWl0IFByb21pc2UuYWxsKFtXWChRLFtcInF1ZXJ5XCIsWFgsXCIvdlwiLG4xXSksV1goUSxbXCJxdWVyeVwiLFlYLFwiL3ZcIixuMV0pXSk7cmV0dXJue3BsaXN0U3Rkb3V0czpudWxsLGhrbG1TdGRvdXQ6Si5jb2RlPT09MD9KLnN0ZG91dDpudWxsLGhrY3VTdGRvdXQ6WS5jb2RlPT09MD9ZLnN0ZG91dDpudWxsfX1pZihCRygpKXtsZXRbJCxRXT1hd2FpdCBQcm9taXNlLmFsbChbV1goaHosW1wicXVlcnlcIixYWCxcIi92XCIsbjFdKSxXWChoeixbXCJxdWVyeVwiLFlYLFwiL3ZcIixuMV0pXSk7cmV0dXJue3BsaXN0U3Rkb3V0czpudWxsLGhrbG1TdGRvdXQ6JC5jb2RlPT09MD8kLnN0ZG91dDpudWxsLGhrY3VTdGRvdXQ6US5jb2RlPT09MD9RLnN0ZG91dDpudWxsfX1yZXR1cm57cGxpc3RTdGRvdXRzOm51bGwsaGtsbVN0ZG91dDpudWxsLGhrY3VTdGRvdXQ6bnVsbH19KSgpfWZ1bmN0aW9uIERiKCl7cmV0dXJuIEYkJH12YXIgcjE9T2JqZWN0LmZyZWV6ZSh7c2V0dGluZ3M6e30sZXJyb3JzOltdfSksTGI9bnVsbCxqYj1udWxsLEFiPSExLHpHPW51bGw7ZnVuY3Rpb24gWiQkKCl7aWYoekcpcmV0dXJuO3pHPShhc3luYygpPT57bGV0ICQ9RGF0ZS5ub3coKSxRPURiKCk/P09iKCkse21kbTpKLGhrY3U6WSx3c2xJbmhlcml0czpYfT1NJCQoYXdhaXQgUSk7TGI9SixqYj1ZLEFiPVg7bGV0IFc9RGF0ZS5ub3coKS0kO2lmKFgkKGBNRE0gc2V0dGluZ3MgbG9hZCBjb21wbGV0ZWQgaW4gJHtXfW1zYCksT2JqZWN0LmtleXMoSi5zZXR0aW5ncykubGVuZ3RoPjApe1gkKGBNRE0gc2V0dGluZ3MgZm91bmQ6ICR7T2JqZWN0LmtleXMoSi5zZXR0aW5ncykuam9pbihcIiwgXCIpfWApO3RyeXthSihcImluZm9cIixcIm1kbV9zZXR0aW5nc19sb2FkZWRcIix7ZHVyYXRpb25fbXM6VyxrZXlfY291bnQ6T2JqZWN0LmtleXMoSi5zZXR0aW5ncykubGVuZ3RoLGVycm9yX2NvdW50OkouZXJyb3JzLmxlbmd0aH0pfWNhdGNoe319fSkoKX1hc3luYyBmdW5jdGlvbiBJYigpe2lmKCF6RylaJCQoKTthd2FpdCB6R31mdW5jdGlvbiBSYigpe3JldHVybiBMYj8/cjF9ZnVuY3Rpb24gUGIoKXtyZXR1cm4gamI/P3IxfWZ1bmN0aW9uIEViKCl7cmV0dXJuIEFifWZ1bmN0aW9uIHV6KCQsUSl7bGV0IEo9UjQoRTkoJCwhMSkpO2lmKCFKfHx0eXBlb2YgSiE9PVwib2JqZWN0XCIpcmV0dXJue3NldHRpbmdzOnt9LGVycm9yczpbXX07bGV0IFk9aTEoSixRKSxYPXY0KCkuc2FmZVBhcnNlKEopO2lmKCFYLnN1Y2Nlc3Mpe2xldCBXPWkwKFguZXJyb3IsUSk7cmV0dXJue3NldHRpbmdzOnt9LGVycm9yczpbLi4uWSwuLi5XXX19cmV0dXJue3NldHRpbmdzOlguZGF0YSxlcnJvcnM6WX19ZnVuY3Rpb24gRmIoJCxRPVwiU2V0dGluZ3NcIil7bGV0IEo9JC5zcGxpdCgvXFxyP1xcbi8pLFk9US5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZyxcIlxcXFwkJlwiKSxYPW5ldyBSZWdFeHAoYF5cXFxccyske1l9XFxcXHMrUkVHXyg/OkVYUEFORF8pP1NaXFxcXHMrKC4qKSRgLFwiaVwiKTtmb3IobGV0IFcgb2YgSil7bGV0IEc9Vy5tYXRjaChYKTtpZihHJiZHWzFdKXJldHVybiBHWzFdLnRyaW1FbmQoKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBNJCQoJCl7bGV0IFE9W107aWYoJC5wbGlzdFN0ZG91dHMmJiQucGxpc3RTdGRvdXRzLmxlbmd0aD4wKXtsZXR7c3Rkb3V0OkcsbGFiZWw6VX09JC5wbGlzdFN0ZG91dHNbMF0sSD11eihHLFUpLHt3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpxLC4uLlZ9PUguc2V0dGluZ3M7aWYoT2JqZWN0LmtleXMoVikubGVuZ3RoPjApcmV0dXJue21kbTpILGhrY3U6cjEsd3NsSW5oZXJpdHM6ITF9O1EucHVzaCguLi5ILmVycm9ycyl9bGV0IEo9bnVsbDtpZigkLmhrbG1TdGRvdXQpe2xldCBHPUZiKCQuaGtsbVN0ZG91dCk7aWYoRylKPXV6KEcsYFJlZ2lzdHJ5OiAke1hYfVxcXFwke24xfWApfWlmKEopUS5wdXNoKC4uLkouZXJyb3JzKTtsZXQgWT1RLmxlbmd0aD4wP3tzZXR0aW5nczp7fSxlcnJvcnM6UX06cjEsWD1CRygpLFc9ITE7aWYoWCl7aWYoVz1KPy5zZXR0aW5ncy53c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5ncz09PSEwfHxqJCQoKSwhVylyZXR1cm57bWRtOlksaGtjdTpyMSx3c2xJbmhlcml0czohMX19aWYoSil7bGV0e3dzbEluaGVyaXRzV2luZG93c1NldHRpbmdzOkcsLi4uVX09Si5zZXR0aW5ncztpZihPYmplY3Qua2V5cyhVKS5sZW5ndGg+MClyZXR1cm57bWRtOkosaGtjdTpyMSx3c2xJbmhlcml0czpXfX1pZihMJCQoVykpcmV0dXJue21kbTpZLGhrY3U6cjEsd3NsSW5oZXJpdHM6V307aWYoJC5oa2N1U3Rkb3V0KXtsZXQgRz1GYigkLmhrY3VTdGRvdXQpO2lmKEcpe2xldCBVPXV6KEcsYFJlZ2lzdHJ5OiAke1lYfVxcXFwke24xfWApO2lmKCFYfHxVLnNldHRpbmdzLndzbEluaGVyaXRzV2luZG93c1NldHRpbmdzPT09ITApe2xldHt3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpILC4uLnF9PVUuc2V0dGluZ3M7cmV0dXJue21kbTpZLGhrY3U6e3NldHRpbmdzOnEsZXJyb3JzOlUuZXJyb3JzfSx3c2xJbmhlcml0czpXfX1pZihVLmVycm9ycy5sZW5ndGg+MClyZXR1cm57bWRtOlksaGtjdTp7c2V0dGluZ3M6e30sZXJyb3JzOlUuZXJyb3JzfSx3c2xJbmhlcml0czpXfX19cmV0dXJue21kbTpZLGhrY3U6cjEsd3NsSW5oZXJpdHM6V319ZnVuY3Rpb24gTCQkKCQpe2lmKCQmJk1iKF85KSlyZXR1cm4hMDtyZXR1cm4gTWIobDAoKSl9ZnVuY3Rpb24gWmIoJCl7bGV0IFE9UjQoRTkodTAoJCksITEpKTtpZighUXx8dHlwZW9mIFEhPT1cIm9iamVjdFwiKXJldHVybiExO2kxKFEsJCk7bGV0e3dzbEluaGVyaXRzV2luZG93c1NldHRpbmdzOkosLi4uWX09UTtyZXR1cm4gT2JqZWN0LmtleXMoWSkubGVuZ3RoPjB9ZnVuY3Rpb24gaiQkKCl7ZnVuY3Rpb24gJChRKXt0cnl7bGV0IEo9RTkodTAoUSksITEpO3JldHVybiEhSiYmdHlwZW9mIEo9PT1cIm9iamVjdFwiJiZcIndzbEluaGVyaXRzV2luZG93c1NldHRpbmdzXCJpbiBKJiZKLndzbEluaGVyaXRzV2luZG93c1NldHRpbmdzPT09ITB9Y2F0Y2h7cmV0dXJuITF9fWlmKCQoUzkoXzksXCJtYW5hZ2VkLXNldHRpbmdzLmpzb25cIikpKXJldHVybiEwO3RyeXtsZXQgUT1TOShfOSxcIm1hbmFnZWQtc2V0dGluZ3MuZFwiKTtmb3IobGV0IEogb2YgbSQoKS5yZWFkZGlyU3luYyhRKSlpZigoSi5pc0ZpbGUoKXx8Si5pc1N5bWJvbGljTGluaygpKSYmSi5uYW1lLmVuZHNXaXRoKFwiLmpzb25cIikmJiFKLm5hbWUuc3RhcnRzV2l0aChcIi5cIikmJiQoUzkoUSxKLm5hbWUpKSlyZXR1cm4hMH1jYXRjaHt9cmV0dXJuITF9ZnVuY3Rpb24gTWIoJCl7dHJ5e2lmKFpiKFM5KCQsXCJtYW5hZ2VkLXNldHRpbmdzLmpzb25cIikpKXJldHVybiEwfWNhdGNoe310cnl7bGV0IFE9UzkoJCxcIm1hbmFnZWQtc2V0dGluZ3MuZFwiKSxKPW0kKCkucmVhZGRpclN5bmMoUSk7Zm9yKGxldCBZIG9mIEope2lmKCEoWS5pc0ZpbGUoKXx8WS5pc1N5bWJvbGljTGluaygpKXx8IVkubmFtZS5lbmRzV2l0aChcIi5qc29uXCIpfHxZLm5hbWUuc3RhcnRzV2l0aChcIi5cIikpY29udGludWU7dHJ5e2lmKFpiKFM5KFEsWS5uYW1lKSkpcmV0dXJuITB9Y2F0Y2h7fX19Y2F0Y2h7fXJldHVybiExfWZ1bmN0aW9uIEEkJCgkLFEsSil7aWYoSiE9PXZvaWQgMCYmIUsxKCRbUV0sSil8fEo9PT12b2lkIDAmJiEoUSBpbiAkKSlBOCgkLFEsSil9dmFyIEdYPUEkJDtmdW5jdGlvbiBJJCQoJCl7cmV0dXJuIGZ1bmN0aW9uKFEsSixZKXt2YXIgWD0tMSxXPU9iamVjdChRKSxHPVkoUSksVT1HLmxlbmd0aDt3aGlsZShVLS0pe3ZhciBIPUdbJD9VOisrWF07aWYoSihXW0hdLEgsVyk9PT0hMSlicmVha31yZXR1cm4gUX19dmFyIGJiPUkkJDt2YXIgUiQkPWJiKCksX2I9UiQkO2Z1bmN0aW9uIFAkJCgkKXtyZXR1cm4gcjYoJCkmJlI4KCQpfXZhciBTYj1QJCQ7dmFyIEUkJD1cIltvYmplY3QgT2JqZWN0XVwiLGIkJD1GdW5jdGlvbi5wcm90b3R5cGUsXyQkPU9iamVjdC5wcm90b3R5cGUsa2I9YiQkLnRvU3RyaW5nLFMkJD1fJCQuaGFzT3duUHJvcGVydHksayQkPWtiLmNhbGwoT2JqZWN0KTtmdW5jdGlvbiB2JCQoJCl7aWYoIXI2KCQpfHxBNCgkKSE9RSQkKXJldHVybiExO3ZhciBRPUg1KCQpO2lmKFE9PT1udWxsKXJldHVybiEwO3ZhciBKPVMkJC5jYWxsKFEsXCJjb25zdHJ1Y3RvclwiKSYmUS5jb25zdHJ1Y3RvcjtyZXR1cm4gdHlwZW9mIEo9PVwiZnVuY3Rpb25cIiYmSiBpbnN0YW5jZW9mIEomJmtiLmNhbGwoSik9PWskJH12YXIgdmI9diQkO2Z1bmN0aW9uIEMkJCgkLFEpe2lmKFE9PT1cImNvbnN0cnVjdG9yXCImJnR5cGVvZiAkW1FdPT09XCJmdW5jdGlvblwiKXJldHVybjtpZihRPT1cIl9fcHJvdG9fX1wiKXJldHVybjtyZXR1cm4gJFtRXX12YXIgVVg9QyQkO2Z1bmN0aW9uIFQkJCgkKXtyZXR1cm4gcncoJCxXNSgkKSl9dmFyIENiPVQkJDtmdW5jdGlvbiB4JCQoJCxRLEosWSxYLFcsRyl7dmFyIFU9VVgoJCxKKSxIPVVYKFEsSikscT1HLmdldChIKTtpZihxKXtHWCgkLEoscSk7cmV0dXJufXZhciBWPVc/VyhVLEgsSitcIlwiLCQsUSxHKTp2b2lkIDAsQj1WPT09dm9pZCAwO2lmKEIpe3ZhciB6PVY2KEgpLE49IXomJkM3KEgpLHc9IXomJiFOJiZYNShIKTtpZihWPUgsenx8Tnx8dylpZihWNihVKSlWPVU7ZWxzZSBpZihTYihVKSlWPXpPKFUpO2Vsc2UgaWYoTilCPSExLFY9elUoSCwhMCk7ZWxzZSBpZih3KUI9ITEsVj1PTyhILCEwKTtlbHNlIFY9W107ZWxzZSBpZih2YihIKXx8bTQoSCkpe2lmKFY9VSxtNChVKSlWPUNiKFUpO2Vsc2UgaWYoISQ2KFUpfHwkOChVKSlWPVpPKEgpfWVsc2UgQj0hMX1pZihCKUcuc2V0KEgsViksWChWLEgsWSxXLEcpLEcuZGVsZXRlKEgpO0dYKCQsSixWKX12YXIgVGI9eCQkO2Z1bmN0aW9uIHhiKCQsUSxKLFksWCl7aWYoJD09PVEpcmV0dXJuO19iKFEsZnVuY3Rpb24oVyxHKXtpZihYfHwoWD1uZXcgbncpLCQ2KFcpKVRiKCQsUSxHLEoseGIsWSxYKTtlbHNle3ZhciBVPVk/WShVWCgkLEcpLFcsRytcIlwiLCQsUSxYKTp2b2lkIDA7aWYoVT09PXZvaWQgMClVPVc7R1goJCxHLFUpfX0sVzUpfXZhciBmYj14YjtmdW5jdGlvbiBmJCQoJCxRLEope3N3aXRjaChKLmxlbmd0aCl7Y2FzZSAwOnJldHVybiAkLmNhbGwoUSk7Y2FzZSAxOnJldHVybiAkLmNhbGwoUSxKWzBdKTtjYXNlIDI6cmV0dXJuICQuY2FsbChRLEpbMF0sSlsxXSk7Y2FzZSAzOnJldHVybiAkLmNhbGwoUSxKWzBdLEpbMV0sSlsyXSl9cmV0dXJuICQuYXBwbHkoUSxKKX12YXIgeWI9ZiQkO3ZhciBnYj1NYXRoLm1heDtmdW5jdGlvbiB5JCQoJCxRLEope3JldHVybiBRPWdiKFE9PT12b2lkIDA/JC5sZW5ndGgtMTpRLDApLGZ1bmN0aW9uKCl7dmFyIFk9YXJndW1lbnRzLFg9LTEsVz1nYihZLmxlbmd0aC1RLDApLEc9QXJyYXkoVyk7d2hpbGUoKytYPFcpR1tYXT1ZW1ErWF07WD0tMTt2YXIgVT1BcnJheShRKzEpO3doaWxlKCsrWDxRKVVbWF09WVtYXTtyZXR1cm4gVVtRXT1KKEcpLHliKCQsdGhpcyxVKX19dmFyIE5HPXkkJDtmdW5jdGlvbiBnJCQoJCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuICR9fXZhciBoYj1nJCQ7dmFyIGgkJD0hajg/SzU6ZnVuY3Rpb24oJCxRKXtyZXR1cm4gajgoJCxcInRvU3RyaW5nXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOmhiKFEpLHdyaXRhYmxlOiEwfSl9LHViPWgkJDt2YXIgdSQkPTgwMCxtJCQ9MTYsbCQkPURhdGUubm93O2Z1bmN0aW9uIGMkJCgkKXt2YXIgUT0wLEo9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgWT1sJCQoKSxYPW0kJC0oWS1KKTtpZihKPVksWD4wKXtpZigrK1E+PXUkJClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgUT0wO3JldHVybiAkLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX12YXIgbWI9YyQkO3ZhciBwJCQ9bWIodWIpLHdHPXAkJDtmdW5jdGlvbiBkJCQoJCxRKXtyZXR1cm4gd0coTkcoJCxRLEs1KSwkK1wiXCIpfXZhciBsYj1kJCQ7ZnVuY3Rpb24gaSQkKCQsUSxKKXtpZighJDYoSikpcmV0dXJuITE7dmFyIFk9dHlwZW9mIFE7aWYoWT09XCJudW1iZXJcIj9SOChKKSYmWjEoUSxKLmxlbmd0aCk6WT09XCJzdHJpbmdcIiYmKFEgaW4gSikpcmV0dXJuIEsxKEpbUV0sJCk7cmV0dXJuITF9dmFyIGNiPWkkJDtmdW5jdGlvbiBuJCQoJCl7cmV0dXJuIGxiKGZ1bmN0aW9uKFEsSil7dmFyIFk9LTEsWD1KLmxlbmd0aCxXPVg+MT9KW1gtMV06dm9pZCAwLEc9WD4yP0pbMl06dm9pZCAwO2lmKFc9JC5sZW5ndGg+MyYmdHlwZW9mIFc9PVwiZnVuY3Rpb25cIj8oWC0tLFcpOnZvaWQgMCxHJiZjYihKWzBdLEpbMV0sRykpVz1YPDM/dm9pZCAwOlcsWD0xO1E9T2JqZWN0KFEpO3doaWxlKCsrWTxYKXt2YXIgVT1KW1ldO2lmKFUpJChRLFUsWSxXKX1yZXR1cm4gUX0pfXZhciBwYj1uJCQ7dmFyIHIkJD1wYihmdW5jdGlvbigkLFEsSixZKXtmYigkLFEsSixZKX0pLEcxPXIkJDtmdW5jdGlvbiBvJCQoJCxRLEosWSl7aWYoISQ2KCQpKXJldHVybiAkO1E9TTEoUSwkKTt2YXIgWD0tMSxXPVEubGVuZ3RoLEc9Vy0xLFU9JDt3aGlsZShVIT1udWxsJiYrK1g8Vyl7dmFyIEg9RTgoUVtYXSkscT1KO2lmKEg9PT1cIl9fcHJvdG9fX1wifHxIPT09XCJjb25zdHJ1Y3RvclwifHxIPT09XCJwcm90b3R5cGVcIilyZXR1cm4gJDtpZihYIT1HKXt2YXIgVj1VW0hdO2lmKHE9WT9ZKFYsSCxVKTp2b2lkIDAscT09PXZvaWQgMClxPSQ2KFYpP1Y6WjEoUVtYKzFdKT9bXTp7fX1hWChVLEgscSksVT1VW0hdfXJldHVybiAkfXZhciBkYj1vJCQ7ZnVuY3Rpb24gdCQkKCQsUSxKKXt2YXIgWT0tMSxYPVEubGVuZ3RoLFc9e307d2hpbGUoKytZPFgpe3ZhciBHPVFbWV0sVT1fTygkLEcpO2lmKEooVSxHKSlkYihXLE0xKEcsJCksVSl9cmV0dXJuIFd9dmFyIGliPXQkJDtmdW5jdGlvbiBhJCQoJCxRKXtyZXR1cm4gaWIoJCxRLGZ1bmN0aW9uKEosWSl7cmV0dXJuIHZPKCQsWSl9KX12YXIgbmI9YSQkO3ZhciByYj1jNj9jNi5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO2Z1bmN0aW9uIHMkJCgkKXtyZXR1cm4gVjYoJCl8fG00KCQpfHwhIShyYiYmJCYmJFtyYl0pfXZhciBvYj1zJCQ7ZnVuY3Rpb24gdGIoJCxRLEosWSxYKXt2YXIgVz0tMSxHPSQubGVuZ3RoO0p8fChKPW9iKSxYfHwoWD1bXSk7d2hpbGUoKytXPEcpe3ZhciBVPSRbV107aWYoUT4wJiZKKFUpKWlmKFE+MSl0YihVLFEtMSxKLFksWCk7ZWxzZSBOTyhYLFUpO2Vsc2UgaWYoIVkpWFtYLmxlbmd0aF09VX1yZXR1cm4gWH12YXIgYWI9dGI7ZnVuY3Rpb24gZSQkKCQpe3ZhciBRPSQ9PW51bGw/MDokLmxlbmd0aDtyZXR1cm4gUT9hYigkLDEpOltdfXZhciBzYj1lJCQ7ZnVuY3Rpb24gJDYkKCQpe3JldHVybiB3RyhORygkLHZvaWQgMCxzYiksJCtcIlwiKX12YXIgZWI9JDYkO3ZhciBRNiQ9ZWIoZnVuY3Rpb24oJCxRKXtyZXR1cm4gJD09bnVsbD97fTpuYigkLFEpfSksT0c9UTYkO2ltcG9ydHtkaXJuYW1lIGFzIFU2JCxqb2luIGFzIHQxLHJlc29sdmUgYXMgSFh9ZnJvbVwicGF0aFwiO2ltcG9ydHtqb2luIGFzIEo2JH1mcm9tXCJwYXRoXCI7dmFyIFg2JD1cInJlbW90ZS1zZXR0aW5ncy5qc29uXCIsbXo9bnVsbCxZNiQ7ZnVuY3Rpb24gJF8oKXtyZXR1cm59ZnVuY3Rpb24gVzYkKCl7cmV0dXJuICRfKCk/P0o2JChwNigpLFg2JCl9ZnVuY3Rpb24gRzYkKCl7dHJ5e2xldCAkPXUwKFc2JCgpKSxRPWwkKEpHKCQpKTtpZighUXx8dHlwZW9mIFEhPT1cIm9iamVjdFwifHxBcnJheS5pc0FycmF5KFEpKXJldHVybiBudWxsO3JldHVybiBRfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBRXygpe2lmKCEkXygpJiZZNiQhPT0hMClyZXR1cm4gbnVsbDtpZihteilyZXR1cm4gbXo7bGV0ICQ9RzYkKCk7aWYoJClyZXR1cm4gbXo9JCxCMCgpLCQ7cmV0dXJuIG51bGx9ZnVuY3Rpb24gSDYkKCl7cmV0dXJuIHQxKGwwKCksXCJtYW5hZ2VkLXNldHRpbmdzLmpzb25cIil9ZnVuY3Rpb24gWF8oJCl7aWYobTAoKT09PVwid3NsXCImJiQud3NsSW5oZXJpdHM/LigpKXtsZXQgUT1seihfOSwkKTtpZihRLnNldHRpbmdzKXJldHVybiBRO2xldCBKPWx6KGwwKCksJCk7cmV0dXJue3NldHRpbmdzOkouc2V0dGluZ3MsZXJyb3JzOlsuLi5RLmVycm9ycywuLi5KLmVycm9yc119fXJldHVybiBseihsMCgpLCQpfWZ1bmN0aW9uIGx6KCQsUSl7bGV0IEo9W10sWT17fSxYPSExLHtzZXR0aW5nczpXLGVycm9yczpHfT1ERyh0MSgkLFwibWFuYWdlZC1zZXR0aW5ncy5qc29uXCIpLFEpO2lmKEoucHVzaCguLi5HKSxXJiZPYmplY3Qua2V5cyhXKS5sZW5ndGg+MClZPUcxKFksVyxvMSksWD0hMDtsZXQgVT10MSgkLFwibWFuYWdlZC1zZXR0aW5ncy5kXCIpO3RyeXtsZXQgVj1tJCgpLnJlYWRkaXJTeW5jKFUpLmZpbHRlcigoQik9PihCLmlzRmlsZSgpfHxCLmlzU3ltYm9saWNMaW5rKCkpJiZCLm5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSYmIUIubmFtZS5zdGFydHNXaXRoKFwiLlwiKSkubWFwKChCKT0+Qi5uYW1lKS5zb3J0KCk7Zm9yKGxldCBCIG9mIFYpe2xldHtzZXR0aW5nczp6LGVycm9yczpOfT1ERyh0MShVLEIpLFEpO2lmKEoucHVzaCguLi5OKSx6JiZPYmplY3Qua2V5cyh6KS5sZW5ndGg+MClZPUcxKFkseixvMSksWD0hMH19Y2F0Y2goVil7bGV0IEI9byQoVik7aWYoQiE9PVwiRU5PRU5UXCImJkIhPT1cIkVOT1RESVJcIilpZihRPy5vbkZzRXJyb3IpUS5vbkZzRXJyb3IoVik7ZWxzZSBYJChgbWFuYWdlZC1zZXR0aW5ncy5kIHJlYWQgZmFpbGVkOiAke1Z9YCx7bGV2ZWw6XCJlcnJvclwifSl9bGV0e3dzbEluaGVyaXRzV2luZG93c1NldHRpbmdzOkgsLi4ucX09WTtyZXR1cm57c2V0dGluZ3M6WCYmT2JqZWN0LmtleXMocSkubGVuZ3RoPjA/WTpudWxsLGVycm9yczpKfX1mdW5jdGlvbiBLNiQoJCxRLEope2lmKEYxKCQpKVgkKGBCcm9rZW4gc3ltbGluayBvciBtaXNzaW5nIGZpbGUgZW5jb3VudGVyZWQgZm9yIHNldHRpbmdzLmpzb24gYXQgcGF0aDogJHtRfWApO2Vsc2UgaWYoSj8ub25Gc0Vycm9yKUoub25Gc0Vycm9yKCQpO2Vsc2UgWCQoYHNldHRpbmdzIGZpbGUgcmVhZCBmYWlsZWQgYXQgJHtRfTogJHskfWAse2xldmVsOlwiZXJyb3JcIn0pfWZ1bmN0aW9uIERHKCQsUSl7bGV0IEo9eU8oJCk7aWYoSilyZXR1cm57c2V0dGluZ3M6Si5zZXR0aW5ncz9SNChKLnNldHRpbmdzKTpudWxsLGVycm9yczpKLmVycm9yc307bGV0IFk9cTYkKCQsUSk7cmV0dXJuIGdPKCQsWSkse3NldHRpbmdzOlkuc2V0dGluZ3M/UjQoWS5zZXR0aW5ncyk6bnVsbCxlcnJvcnM6WS5lcnJvcnN9fWZ1bmN0aW9uIFlfKCQpe2lmKCEkLm1kbSlyZXR1cm57c2V0dGluZ3M6bnVsbCxlcnJvcnM6W119O2xldCBRPSQubWRtKCk7cmV0dXJue3NldHRpbmdzOk9iamVjdC5rZXlzKFEuc2V0dGluZ3MpLmxlbmd0aD4wP1Euc2V0dGluZ3M6bnVsbCxlcnJvcnM6US5lcnJvcnN9fWZ1bmN0aW9uIFdfKCQpe2xldCBRPSQ/LnJlbW90ZT8kLnJlbW90ZSgpOlFfKCk7aWYoIVF8fE9iamVjdC5rZXlzKFEpLmxlbmd0aD09PTApcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOltdfTtsZXQgSj1SNChRKSxZPWkxKEosXCJyZW1vdGUgbWFuYWdlZCBzZXR0aW5nc1wiKSxYPXY0KCkuc2FmZVBhcnNlKEopO2lmKCFYLnN1Y2Nlc3MpcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOlsuLi5ZLC4uLmkwKFguZXJyb3IsXCJyZW1vdGUgbWFuYWdlZCBzZXR0aW5nc1wiKV19O3JldHVybntzZXR0aW5nczpPYmplY3Qua2V5cyhYLmRhdGEpLmxlbmd0aD4wP1guZGF0YTpudWxsLGVycm9yczpZfX1mdW5jdGlvbiBHXygpe2xldCAkPUI1KCk7aWYoISR8fE9iamVjdC5rZXlzKCQpLmxlbmd0aD09PTApcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOltdfTtsZXQgUT1SNCgkKSxKPWkxKFEsXCJwYXJlbnQgbWFuYWdlZCBzZXR0aW5nc1wiKSxZPXY0KCkuc2FmZVBhcnNlKFEpO2lmKCFZLnN1Y2Nlc3MpcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOlsuLi5KLC4uLmkwKFkuZXJyb3IsXCJwYXJlbnQgbWFuYWdlZCBzZXR0aW5nc1wiKV19O3JldHVybiBPYmplY3Qua2V5cyhZLmRhdGEpLmxlbmd0aD4wP3tzZXR0aW5nczpZLmRhdGEsZXJyb3JzOkp9OntzZXR0aW5nczpudWxsLGVycm9yczpKfX1mdW5jdGlvbiBVXygpe2xldCAkPVY1KCk7aWYoISQpcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOltdfTtsZXQgUT1SNCgkKSxKPWkxKFEsXCJTREsgaW5saW5lIHNldHRpbmdzXCIpLFk9djQoKS5zYWZlUGFyc2UoUSk7aWYoIVkuc3VjY2VzcylyZXR1cm57c2V0dGluZ3M6bnVsbCxlcnJvcnM6Wy4uLkosLi4uaTAoWS5lcnJvcixcIlNESyBpbmxpbmUgc2V0dGluZ3NcIildfTtyZXR1cm57c2V0dGluZ3M6WS5kYXRhLGVycm9yczpKfX1mdW5jdGlvbiBxNiQoJCxRKXt0cnl7bGV0e3Jlc29sdmVkUGF0aDpKfT1ONShtJCgpLCQpLFk9dTAoSik7aWYoWS50cmltKCk9PT1cIlwiKXJldHVybntzZXR0aW5nczp7fSxlcnJvcnM6W119O2xldCBYPVI0KEU5KFksITEpKSxXPWkxKFgsJCksRz12NCgpLnNhZmVQYXJzZShYKTtpZighRy5zdWNjZXNzKXtsZXQgVT1pMChHLmVycm9yLCQpO3JldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbLi4uVywuLi5VXX19cmV0dXJue3NldHRpbmdzOkcuZGF0YSxlcnJvcnM6V319Y2F0Y2goSil7cmV0dXJuIEs2JChKLCQsUSkse3NldHRpbmdzOm51bGwsZXJyb3JzOltdfX19ZnVuY3Rpb24gSl8oJCl7c3dpdGNoKCQpe2Nhc2VcInVzZXJTZXR0aW5nc1wiOnJldHVybiBIWChwNigpKTtjYXNlXCJwb2xpY3lTZXR0aW5nc1wiOmNhc2VcInByb2plY3RTZXR0aW5nc1wiOmNhc2VcImxvY2FsU2V0dGluZ3NcIjpyZXR1cm4gSFgoZjcoKSk7Y2FzZVwiZmxhZ1NldHRpbmdzXCI6e2xldCBRPXk3KCk7cmV0dXJuIFE/VTYkKEhYKFEpKTpIWChmNygpKX19fWZ1bmN0aW9uIFY2JCgpe2lmKGNPKCl8fFIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1VTRV9DT1dPUktfUExVR0lOUykpcmV0dXJuXCJjb3dvcmtfc2V0dGluZ3MuanNvblwiO3JldHVyblwic2V0dGluZ3MuanNvblwifWZ1bmN0aW9uIEtYKCQpe3N3aXRjaCgkKXtjYXNlXCJ1c2VyU2V0dGluZ3NcIjpyZXR1cm4gdDEoSl8oJCksVjYkKCkpO2Nhc2VcInByb2plY3RTZXR0aW5nc1wiOmNhc2VcImxvY2FsU2V0dGluZ3NcIjpyZXR1cm4gdDEoSl8oJCksQjYkKCQpKTtjYXNlXCJwb2xpY3lTZXR0aW5nc1wiOnJldHVybiBINiQoKTtjYXNlXCJmbGFnU2V0dGluZ3NcIjpyZXR1cm4geTcoKX19ZnVuY3Rpb24gQjYkKCQpe3N3aXRjaCgkKXtjYXNlXCJwcm9qZWN0U2V0dGluZ3NcIjpyZXR1cm4gdDEoXCIuY2xhdWRlXCIsXCJzZXR0aW5ncy5qc29uXCIpO2Nhc2VcImxvY2FsU2V0dGluZ3NcIjpyZXR1cm4gdDEoXCIuY2xhdWRlXCIsXCJzZXR0aW5ncy5sb2NhbC5qc29uXCIpfX1mdW5jdGlvbiBIXygkLFEpe2xldCBKPXhPKCQpO2lmKEohPT12b2lkIDApcmV0dXJuIEo7bGV0IFk9TzYkKCQsUSk7cmV0dXJuIGZPKCQsWSksWX1mdW5jdGlvbiB6NiQoJCl7cmV0dXJuISR8fCQucGFyZW50U2V0dGluZ3NCZWhhdmlvcj09PVwibWVyZ2VcIn1mdW5jdGlvbiBONiQoJCxRKXtsZXQgSj17fTtpZigkLmFsbG93TWFuYWdlZEhvb2tzT25seT09PSEwKUouYWxsb3dNYW5hZ2VkSG9va3NPbmx5PSEwO2lmKCQuYWxsb3dNYW5hZ2VkTWNwU2VydmVyc09ubHk9PT0hMClKLmFsbG93TWFuYWdlZE1jcFNlcnZlcnNPbmx5PSEwO2lmKCQuYWxsb3dNYW5hZ2VkUGVybWlzc2lvblJ1bGVzT25seT09PSEwKUouYWxsb3dNYW5hZ2VkUGVybWlzc2lvblJ1bGVzT25seT0hMDtsZXQgWT0kLnN0cmljdFBsdWdpbk9ubHlDdXN0b21pemF0aW9uO2lmKFk9PT0hMHx8QXJyYXkuaXNBcnJheShZKSYmWS5sZW5ndGg+MClKLnN0cmljdFBsdWdpbk9ubHlDdXN0b21pemF0aW9uPVk7aWYoJC5kZW5pZWRNY3BTZXJ2ZXJzKUouZGVuaWVkTWNwU2VydmVycz0kLmRlbmllZE1jcFNlcnZlcnM7aWYoUS5mb3JjZUxvZ2luT3JnVVVJRD09PXZvaWQgMCYmJC5mb3JjZUxvZ2luT3JnVVVJRClKLmZvcmNlTG9naW5PcmdVVUlEPSQuZm9yY2VMb2dpbk9yZ1VVSUQ7aWYoUS5hbGxvd2VkTWNwU2VydmVycz09PXZvaWQgMCYmJC5hbGxvd2VkTWNwU2VydmVycylKLmFsbG93ZWRNY3BTZXJ2ZXJzPSQuYWxsb3dlZE1jcFNlcnZlcnM7aWYoJC5wZXJtaXNzaW9ucyl7bGV0IFg9T0coJC5wZXJtaXNzaW9ucyxbXCJkZW55XCIsXCJhc2tcIl0pO2lmKCQucGVybWlzc2lvbnMuZGlzYWJsZUJ5cGFzc1Blcm1pc3Npb25zTW9kZT09PVwiZGlzYWJsZVwiKVguZGlzYWJsZUJ5cGFzc1Blcm1pc3Npb25zTW9kZT1cImRpc2FibGVcIjtpZihRLmFsbG93TWFuYWdlZFBlcm1pc3Npb25SdWxlc09ubHkhPT0hMCl7bGV0e2FsbG93OlcsYWRkaXRpb25hbERpcmVjdG9yaWVzOkd9PSQucGVybWlzc2lvbnM7aWYoVyYmUS5zYW5kYm94Py5uZXR3b3JrPy5hbGxvd01hbmFnZWREb21haW5zT25seSE9PSEwKVguYWxsb3c9VztpZihHKVguYWRkaXRpb25hbERpcmVjdG9yaWVzPUd9aWYoT2JqZWN0LmtleXMoWCkubGVuZ3RoPjApSi5wZXJtaXNzaW9ucz1YfWlmKCQuc2FuZGJveCl7bGV0e25ldHdvcms6WCxmaWxlc3lzdGVtOld9PSQuc2FuZGJveCxHPXt9O2lmKCQuc2FuZGJveC5lbmFibGVkPT09ITApRy5lbmFibGVkPSEwO2lmKCQuc2FuZGJveC5mYWlsSWZVbmF2YWlsYWJsZT09PSEwKUcuZmFpbElmVW5hdmFpbGFibGU9ITA7aWYoJC5zYW5kYm94LmFsbG93VW5zYW5kYm94ZWRDb21tYW5kcz09PSExKUcuYWxsb3dVbnNhbmRib3hlZENvbW1hbmRzPSExO2lmKCQuc2FuZGJveC5hdXRvQWxsb3dCYXNoSWZTYW5kYm94ZWQ9PT0hMSlHLmF1dG9BbGxvd0Jhc2hJZlNhbmRib3hlZD0hMTtpZihYKXtsZXQgVT1PRyhYLFtcImRlbmllZERvbWFpbnNcIl0pO2lmKFguYWxsb3dNYW5hZ2VkRG9tYWluc09ubHk9PT0hMClVLmFsbG93TWFuYWdlZERvbWFpbnNPbmx5PSEwO2lmKFEuc2FuZGJveD8ubmV0d29yaz8uYWxsb3dNYW5hZ2VkRG9tYWluc09ubHkhPT0hMCYmWC5hbGxvd2VkRG9tYWlucylVLmFsbG93ZWREb21haW5zPVguYWxsb3dlZERvbWFpbnM7aWYoT2JqZWN0LmtleXMoVSkubGVuZ3RoPjApRy5uZXR3b3JrPVV9aWYoVyl7bGV0IFU9T0coVyxbXCJkZW55UmVhZFwiLFwiZGVueVdyaXRlXCJdKTtpZihXLmFsbG93TWFuYWdlZFJlYWRQYXRoc09ubHk9PT0hMClVLmFsbG93TWFuYWdlZFJlYWRQYXRoc09ubHk9ITA7aWYoUS5zYW5kYm94Py5maWxlc3lzdGVtPy5hbGxvd01hbmFnZWRSZWFkUGF0aHNPbmx5IT09ITAmJlcuYWxsb3dSZWFkKVUuYWxsb3dSZWFkPVcuYWxsb3dSZWFkO2lmKE9iamVjdC5rZXlzKFUpLmxlbmd0aD4wKUcuZmlsZXN5c3RlbT1VfWlmKE9iamVjdC5rZXlzKEcpLmxlbmd0aD4wKUouc2FuZGJveD1HfXJldHVybiBKfWZ1bmN0aW9uIEtfKCQpe2lmKCQuaGVscGVyPy4oKSlyZXR1cm5cImhlbHBlclwiO2lmKFdfKCQpLnNldHRpbmdzKXJldHVyblwicmVtb3RlXCI7aWYoWV8oJCkuc2V0dGluZ3MpcmV0dXJuIG0wKCk9PT1cIm1hY29zXCI/XCJwbGlzdFwiOlwiaGtsbVwiO2lmKCgkLmZpbGU/LigpPz9YXygkKSkuc2V0dGluZ3MpcmV0dXJuXCJmaWxlXCI7aWYoR18oKS5zZXR0aW5ncylyZXR1cm5cInBhcmVudFwiO2xldCBRPSQuaGtjdT8uKCk7cmV0dXJuIFEmJk9iamVjdC5rZXlzKFEuc2V0dGluZ3MpLmxlbmd0aD4wP1wiaGtjdVwiOm51bGx9ZnVuY3Rpb24gdzYkKCQpe2xldCBRPVtdLHtzZXR0aW5nczpKLGVycm9yczpZfT1XXygkKTtRLnB1c2goLi4uWSk7bGV0e3NldHRpbmdzOlgsZXJyb3JzOld9PVlfKCQpO1EucHVzaCguLi5XKTtsZXR7c2V0dGluZ3M6RyxlcnJvcnM6VX09JC5maWxlPy4oKT8/WF8oJCk7US5wdXNoKC4uLlUpO2xldHtzZXR0aW5nczpILGVycm9yczpxfT1HXygpO1EucHVzaCguLi5xKTtsZXQgVj1bSixYLEddLmZpbHRlcigodyk9PnchPT1udWxsKSxCPVZbMF0/P251bGwsej17YWxsb3dNYW5hZ2VkUGVybWlzc2lvblJ1bGVzT25seTpWLnNvbWUoKHcpPT53LmFsbG93TWFuYWdlZFBlcm1pc3Npb25SdWxlc09ubHk9PT0hMCl8fHZvaWQgMCxmb3JjZUxvZ2luT3JnVVVJRDpWLmZpbmQoKHcpPT53LmZvcmNlTG9naW5PcmdVVUlEIT09dm9pZCAwKT8uZm9yY2VMb2dpbk9yZ1VVSUQsYWxsb3dlZE1jcFNlcnZlcnM6Vi5maW5kKCh3KT0+dy5hbGxvd2VkTWNwU2VydmVycyE9PXZvaWQgMCk/LmFsbG93ZWRNY3BTZXJ2ZXJzLHNhbmRib3g6e25ldHdvcms6e2FsbG93TWFuYWdlZERvbWFpbnNPbmx5OlYuc29tZSgodyk9Pncuc2FuZGJveD8ubmV0d29yaz8uYWxsb3dNYW5hZ2VkRG9tYWluc09ubHk9PT0hMCl8fHZvaWQgMH0sZmlsZXN5c3RlbTp7YWxsb3dNYW5hZ2VkUmVhZFBhdGhzT25seTpWLnNvbWUoKHcpPT53LnNhbmRib3g/LmZpbGVzeXN0ZW0/LmFsbG93TWFuYWdlZFJlYWRQYXRoc09ubHk9PT0hMCl8fHZvaWQgMH19fSxOPUgmJno2JChCKT9ONiQoSCx6KTpudWxsO3JldHVybnt0aWVyczpWLGFkbWluOkIscGFyZW50U2xpY2U6TixlcnJvcnM6UX19ZnVuY3Rpb24gcV8oJCl7bGV0IFE9JC5oZWxwZXI/LigpO2lmKFEpcmV0dXJue3NldHRpbmdzOlEsZXJyb3JzOiQuaGVscGVyV2FybmluZ3M/LigpPz9bXX07bGV0e2FkbWluOkoscGFyZW50U2xpY2U6WSxlcnJvcnM6WH09dzYkKCQpO2lmKCFKJiYhWSl7bGV0IFc9JC5oa2N1Py4oKTtpZihXJiZPYmplY3Qua2V5cyhXLnNldHRpbmdzKS5sZW5ndGg+MClyZXR1cm57c2V0dGluZ3M6Vy5zZXR0aW5ncyxlcnJvcnM6Wy4uLlgsLi4uVy5lcnJvcnNdfTtyZXR1cm57c2V0dGluZ3M6bnVsbCxlcnJvcnM6Wy4uLlgsLi4uVz8uZXJyb3JzPz9bXV19fXJldHVybntzZXR0aW5nczpHMSh7fSxZPz97fSxKPz97fSxvMSksZXJyb3JzOlh9fWZ1bmN0aW9uIE82JCgkLFEpe2lmKCQ9PT1cInBvbGljeVNldHRpbmdzXCIpcmV0dXJuIHFfKFEpLnNldHRpbmdzO2xldCBKPUtYKCQpLHtzZXR0aW5nczpZfT1KP0RHKEosUSk6e3NldHRpbmdzOm51bGx9O2lmKCQ9PT1cImZsYWdTZXR0aW5nc1wiKXtsZXR7c2V0dGluZ3M6WH09VV8oKTtpZihYKXJldHVybiBHMShZfHx7fSxYLG8xKX1yZXR1cm4gWX1mdW5jdGlvbiBENiQoJCxRKXtyZXR1cm4gZjUoWy4uLiQsLi4uUV0pfWZ1bmN0aW9uIG8xKCQsUSl7aWYoQXJyYXkuaXNBcnJheSgkKSYmQXJyYXkuaXNBcnJheShRKSlyZXR1cm4gRDYkKCQsUSk7cmV0dXJufXZhciBjej0hMTtmdW5jdGlvbiBGNiQoJCl7aWYoY3opcmV0dXJue3NldHRpbmdzOnt9LGVycm9yczpbXX07bGV0IFE9RGF0ZS5ub3coKTthSihcImluZm9cIixcInNldHRpbmdzX2xvYWRfc3RhcnRlZFwiKSxjej0hMDt0cnl7bGV0IEo9aE8oKSxZPXt9O2lmKEopWT1HMShZLEosbzEpO2xldCBYPVtdLFc9bmV3IFNldCxHPW5ldyBTZXQ7Zm9yKGxldCBVIG9mIFVHKCkpe2lmKFU9PT1cInBvbGljeVNldHRpbmdzXCIpe2xldHtzZXR0aW5nczpxLGVycm9yczpWfT1xXygkKTtpZihxKVk9RzEoWSxxLG8xKTtmb3IobGV0IEIgb2YgVil7bGV0IHo9YCR7Qi5maWxlfToke0IucGF0aH06JHtCLm1lc3NhZ2V9YDtpZighVy5oYXMoeikpVy5hZGQoeiksWC5wdXNoKEIpfWNvbnRpbnVlfWxldCBIPUtYKFUpO2lmKEgpe2xldCBxPUhYKEgpO2lmKCFHLmhhcyhxKSl7Ry5hZGQocSk7bGV0e3NldHRpbmdzOlYsZXJyb3JzOkJ9PURHKEgsJCk7Zm9yKGxldCB6IG9mIEIpe2xldCBOPWAke3ouZmlsZX06JHt6LnBhdGh9OiR7ei5tZXNzYWdlfWA7aWYoIVcuaGFzKE4pKVcuYWRkKE4pLFgucHVzaCh6KX1pZihWKVk9RzEoWSxWLG8xKX19aWYoVT09PVwiZmxhZ1NldHRpbmdzXCIpe2xldHtzZXR0aW5nczpxLGVycm9yczpWfT1VXygpO2ZvcihsZXQgQiBvZiBWKXtsZXQgej1gJHtCLmZpbGV9OiR7Qi5wYXRofToke0IubWVzc2FnZX1gO2lmKCFXLmhhcyh6KSlXLmFkZCh6KSxYLnB1c2goQil9aWYocSlZPUcxKFkscSxvMSl9fXJldHVybiBhSihcImluZm9cIixcInNldHRpbmdzX2xvYWRfY29tcGxldGVkXCIse2R1cmF0aW9uX21zOkRhdGUubm93KCktUSxzb3VyY2VfY291bnQ6Ry5zaXplLGVycm9yX2NvdW50OlgubGVuZ3RofSkse3NldHRpbmdzOlksZXJyb3JzOlh9fWZpbmFsbHl7Y3o9ITF9fWZ1bmN0aW9uIFo2JCgkKXtsZXQgUT1DTygpO2lmKFEhPT1udWxsKXJldHVybiBRO2xldCBKPUY2JCgkKTtyZXR1cm4gVE8oSiksSn1mdW5jdGlvbiBNNiQoJCl7bGV0e3NldHRpbmdzOlF9PVo2JCgkKTtyZXR1cm4gUXx8e319ZnVuY3Rpb24gVl8oJCl7QjAoKTtsZXQgUT1bXTtmb3IobGV0IEogb2YgVUcoKSl7bGV0IFk9SF8oSiwkKTtpZihZJiZPYmplY3Qua2V5cyhZKS5sZW5ndGg+MClRLnB1c2goe3NvdXJjZTpKLHNldHRpbmdzOll9KX1yZXR1cm57ZWZmZWN0aXZlOk02JCgkKSxzb3VyY2VzOlF9fWZ1bmN0aW9uIEJfKCQsUSl7bGV0IEo9VUcoKTtmb3IobGV0IFk9Si5sZW5ndGgtMTtZPj0wO1ktLSl7bGV0IFg9SltZXTtpZihIXyhYLFEpPy5bJF0hPT12b2lkIDApcmV0dXJuIFh9cmV0dXJuIG51bGx9dmFyIGo2JD17dXNlcjpcInVzZXJTZXR0aW5nc1wiLHByb2plY3Q6XCJwcm9qZWN0U2V0dGluZ3NcIixsb2NhbDpcImxvY2FsU2V0dGluZ3NcIn0sel89e3VzZXJTZXR0aW5nczpcInVzZXJcIixwcm9qZWN0U2V0dGluZ3M6XCJwcm9qZWN0XCIsbG9jYWxTZXR0aW5nczpcImxvY2FsXCIsZmxhZ1NldHRpbmdzOlwiZmxhZ1wiLHBvbGljeVNldHRpbmdzOlwibWFuYWdlZFwifSxBNiQ9W1widXNlclwiLFwicHJvamVjdFwiLFwibG9jYWxcIl0sSTYkPW5ldyBTZXQoW1wiYnlwYXNzUGVybWlzc2lvbnNcIixcImF1dG9cIixcImFjY2VwdEVkaXRzXCJdKSxSNiQ9bmV3IFNldChbXCJwcm9qZWN0XCJdKTtmdW5jdGlvbiBQNiQoJCl7bGV0IFE9JC5lZmZlY3RpdmUucGVybWlzc2lvbnM/LmRlZmF1bHRNb2RlO2lmKCFRfHwhSTYkLmhhcyhRKSlyZXR1cm4gJC5lZmZlY3RpdmU7Zm9yKGxldCBKPSQuc291cmNlcy5sZW5ndGgtMTtKPj0wO0otLSl7bGV0IFk9JC5zb3VyY2VzW0pdO2lmKFkuc2V0dGluZ3MucGVybWlzc2lvbnM/LmRlZmF1bHRNb2RlIT09dm9pZCAwKXtpZihSNiQuaGFzKFkuc291cmNlKSl7bGV0e2RlZmF1bHRNb2RlOlgsLi4uV309JC5lZmZlY3RpdmUucGVybWlzc2lvbnM/P3t9O3JldHVybnsuLi4kLmVmZmVjdGl2ZSxwZXJtaXNzaW9uczpXfX1yZXR1cm4gJC5lZmZlY3RpdmV9fXJldHVybiAkLmVmZmVjdGl2ZX1hc3luYyBmdW5jdGlvbiBOXygkPXt9KXthd2FpdCBJYigpO2xldCBRPWY3KCksSj16NSgpLFk9QjUoKSxYPVY1KCksVz15NygpO3RyeXtGVShMNiQoJC5jd2Q/P20kKCkuY3dkKCkpKSxqVSgoJC5zZXR0aW5nU291cmNlcz8/QTYkKS5tYXAoKHopPT5qNiRbel0pKSxMVSgkLm1hbmFnZWRTZXR0aW5ncz8/bnVsbCksTVUobnVsbCksWlUodm9pZCAwKTtsZXQgRz17bWRtOlJiLGhrY3U6UGIsd3NsSW5oZXJpdHM6RWIsLi4uJC5zZXJ2ZXJNYW5hZ2VkU2V0dGluZ3MhPT12b2lkIDAmJntyZW1vdGU6KCk9PiQuc2VydmVyTWFuYWdlZFNldHRpbmdzfX0se2VmZmVjdGl2ZTpVLHNvdXJjZXM6SH09Vl8oRykscT1LXyhHKT8/dm9pZCAwLFY9SC5tYXAoKHtzb3VyY2U6eixzZXR0aW5nczpOfSk9Pih7c291cmNlOnpfW3pdLHNldHRpbmdzOk4scGF0aDp6PT09XCJwb2xpY3lTZXR0aW5nc1wiP3ZvaWQgMDpLWCh6KSwuLi56PT09XCJwb2xpY3lTZXR0aW5nc1wiJiZ7cG9saWN5T3JpZ2luOnF9fSkpLEI9e307Zm9yKGxldCB6IG9mIE9iamVjdC5rZXlzKFUpKXtsZXQgTj1CXyh6LEcpO2lmKE4pQlt6XT17c291cmNlOnpfW05dLHBhdGg6Tj09PVwicG9saWN5U2V0dGluZ3NcIj92b2lkIDA6S1goTiksLi4uTj09PVwicG9saWN5U2V0dGluZ3NcIiYme3BvbGljeU9yaWdpbjpxfX19cmV0dXJue2VmZmVjdGl2ZTpVLHByb3ZlbmFuY2U6Qixzb3VyY2VzOlZ9fWZpbmFsbHl7RlUoUSksalUoSiksTFUoWSksTVUoWCksWlUoVyksQjAoKX19YXN5bmMgZnVuY3Rpb24gJEEkKCQpe3JldHVybiBOXygkKX1hc3luYyBmdW5jdGlvbiB5NiQoJCxRKXt0cnl7YXdhaXQgUzYkKCQsUSl9Y2F0Y2goSil7aWYoIUYxKEopKXRocm93IEp9fWFzeW5jIGZ1bmN0aW9uIGc2JCgkLFEpe2lmKCEkKXJldHVybjtsZXQgSj0kO3RyeXtsZXQgWT1sJCgkKTtpZihZPy5jbGF1ZGVBaU9hdXRoPy5yZWZyZXNoVG9rZW4pZGVsZXRlIFkuY2xhdWRlQWlPYXV0aC5yZWZyZXNoVG9rZW4sSj1CJChZKX1jYXRjaHt9YXdhaXQgTF8oUSxKLHttb2RlOjM4NH0pfWZ1bmN0aW9uIGg2JCgpe2lmKHByb2Nlc3MucGxhdGZvcm0hPT1cImRhcndpblwiKXJldHVybiBQcm9taXNlLnJlc29sdmUodm9pZCAwKTtsZXQgJD1pWihkWik7cmV0dXJuIG5ldyBQcm9taXNlKChRKT0+e0U2JChcInNlY3VyaXR5XCIsW1wiZmluZC1nZW5lcmljLXBhc3N3b3JkXCIsXCItYVwiLG5aKCksXCItd1wiLFwiLXNcIiwkXSx7ZW5jb2Rpbmc6XCJ1dGYtOFwiLHRpbWVvdXQ6NTAwMH0sKEosWSk9PlEoSj92b2lkIDA6WS50cmltKCl8fHZvaWQgMCkpfSl9YXN5bmMgZnVuY3Rpb24gSV8oJCxRLEosWSxYPTYwMDAwKXtpZighTCQoUSkpcmV0dXJuO2xldCBXPUo0KEopLEc9YXdhaXQgVDQoJC5sb2FkKHtwcm9qZWN0S2V5Olcsc2Vzc2lvbklkOlF9KSxYLGBTZXNzaW9uU3RvcmUubG9hZCgpIHRpbWVkIG91dCBhZnRlciAke1h9bXMgZm9yIHNlc3Npb24gJHtRfWApO2lmKCFHfHxHLmxlbmd0aD09PTApcmV0dXJuO2xldCBVPWg2KFQ2JCgpLGBjbGF1ZGUtcmVzdW1lLSR7cnooKX1gKTt0cnl7bGV0IEg9aDYoVSxcInByb2plY3RzXCIsVyk7YXdhaXQgcHooSCx7cmVjdXJzaXZlOiEwfSk7bGV0IHE9aDYoSCxgJHtRfS5qc29ubGApO2F3YWl0IHM3KHEsRyk7bGV0IFY9WT8uQ0xBVURFX0NPTkZJR19ESVI/P3Byb2Nlc3MuZW52LkNMQVVERV9DT05GSUdfRElSLEI9Vj8/aDYoZHooKSxcIi5jbGF1ZGVcIiksejt0cnl7ej1hd2FpdCBNXyhoNihCLFwiLmNyZWRlbnRpYWxzLmpzb25cIiksXCJ1dGYtOFwiKX1jYXRjaChOKXtpZighRjEoTikpdGhyb3cgTn1pZighViYmIShZPz9wcm9jZXNzLmVudikuQU5USFJPUElDX0FQSV9LRVkmJiEoWT8/cHJvY2Vzcy5lbnYpLkNMQVVERV9DT0RFX09BVVRIX1RPS0VOKXo9YXdhaXQgaDYkKCk/P3o7aWYoYXdhaXQgZzYkKHosaDYoVSxcIi5jcmVkZW50aWFscy5qc29uXCIpKSxhd2FpdCB5NiQoaDYoVj8/ZHooKSxcIi5jbGF1ZGUuanNvblwiKSxoNihVLFwiLmNsYXVkZS5qc29uXCIpKSwkLmxpc3RTdWJrZXlzKXtsZXQgTj1oNihILFEpLHc9YXdhaXQgVDQoJC5saXN0U3Via2V5cyh7cHJvamVjdEtleTpXLHNlc3Npb25JZDpRfSksWCxgU2Vzc2lvblN0b3JlLmxpc3RTdWJrZXlzKCkgdGltZWQgb3V0IGFmdGVyICR7WH1tcyBmb3Igc2Vzc2lvbiAke1F9YCk7Zm9yKGxldCBPIG9mIHcpe2xldCBEPXFYKE4sTytcIi5qc29ubFwiKTtpZighT3x8al8oTyl8fE8uc3BsaXQoL1tcXFxcL10vKS5pbmNsdWRlcyhcIi4uXCIpfHwhRC5zdGFydHNXaXRoKE4rb3opKXtYJChgW1Nlc3Npb25TdG9yZV0gc2tpcHBpbmcgdW5zYWZlIHN1YnBhdGggZnJvbSBsaXN0U3Via2V5czogJHtPfWAse2xldmVsOlwid2FyblwifSk7Y29udGludWV9bGV0IE09YXdhaXQgVDQoJC5sb2FkKHtwcm9qZWN0S2V5Olcsc2Vzc2lvbklkOlEsc3VicGF0aDpPfSksWCxgU2Vzc2lvblN0b3JlLmxvYWQoKSB0aW1lZCBvdXQgYWZ0ZXIgJHtYfW1zIGZvciBzZXNzaW9uICR7UX0gc3VicGF0aCAke099YCk7aWYoIU18fE0ubGVuZ3RoPT09MCljb250aW51ZTtsZXQgaj1bXSxBPVtdO2ZvcihsZXQgayBvZiBNKWlmKEVfKGspKWoucHVzaChrKTtlbHNlIEEucHVzaChrKTtpZihBLmxlbmd0aD4wKWF3YWl0IHB6KHdfKEQpLHtyZWN1cnNpdmU6ITB9KSxhd2FpdCBzNyhELEEpO2lmKGoubGVuZ3RoPjApe2xldCBrPWouYXQoLTEpLHU9cVgoTixPK1wiLm1ldGEuanNvblwiKTthd2FpdCBweih3Xyh1KSx7cmVjdXJzaXZlOiEwfSk7bGV0e3R5cGU6RyQsLi4uaCR9PWs7YXdhaXQgTF8odSxCJChoJCkse21vZGU6Mzg0fSl9fX1yZXR1cm4gVX1jYXRjaChIKXt0aHJvdyBhd2FpdCBGRyhVKSxIfX1mdW5jdGlvbiBpeigkLFEsSixZKXtsZXR7c3lzdGVtUHJvbXB0Olgsc2V0dGluZ3M6VyxtYW5hZ2VkU2V0dGluZ3M6RyxzZXR0aW5nU291cmNlczpVLHNhbmRib3g6SCwuLi5xfT0kPz97fSxWLEIsejtpZihYPT09dm9pZCAwKVY9XCJcIjtlbHNlIGlmKHR5cGVvZiBYPT09XCJzdHJpbmdcIilWPVg7ZWxzZSBpZihBcnJheS5pc0FycmF5KFgpKVY9WDtlbHNlIGlmKFgudHlwZT09PVwicHJlc2V0XCIpQj1YLmFwcGVuZCx6PVguZXhjbHVkZUR5bmFtaWNTZWN0aW9ucztsZXQgTj1xLnBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlO2lmKCFOKXtsZXQgXzY9ZjYkKGltcG9ydC5tZXRhLnVybCksbTY9QzYkKF82KSxzMT1GNSgodDApPT5tNi5yZXNvbHZlKHQwKSk7aWYoczEpTj1zMTtlbHNlIHRyeXtOPW02LnJlc29sdmUoXCIuL2NsaS5qc1wiKX1jYXRjaHt0aHJvdyBFcnJvcihgTmF0aXZlIENMSSBiaW5hcnkgZm9yICR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9IG5vdCBmb3VuZC4gUmVpbnN0YWxsIEBhbnRocm9waWMtYWkvY2xhdWRlLWFnZW50LXNkayB3aXRob3V0IC0tb21pdD1vcHRpb25hbCwgb3Igc2V0IG9wdGlvbnMucGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGUuYCl9fXByb2Nlc3MuZW52LkNMQVVERV9BR0VOVF9TREtfVkVSU0lPTj1cIjAuMi4xNDFcIjtsZXR7YWJvcnRDb250cm9sbGVyOnc9YTAoKSxhZGRpdGlvbmFsRGlyZWN0b3JpZXM6Tz1bXSxhZ2VudDpELGFnZW50czpNLGFsbG93ZWRUb29sczpqPVtdLGJldGFzOkEsY2FuVXNlVG9vbDprLGNvbnRpbnVlOnUsY3dkOkckLGRlYnVnOmgkLGRlYnVnRmlsZTpzJCxkaXNhbGxvd2VkVG9vbHM6dTY9W10sdG9vbHM6QzQsZW52Okw0LGV4ZWN1dGFibGU6bjA9ZTAoKT9cImJ1blwiOlwibm9kZVwiLGV4ZWN1dGFibGVBcmdzOlUxPVtdLGV4dHJhQXJnczpyMD17fSxmYWxsYmFja01vZGVsOmExLGVuYWJsZUZpbGVDaGVja3BvaW50aW5nOmksdG9vbENvbmZpZzprOSxmb3JrU2Vzc2lvbjpNRyxob29rczpvMCxpbmNsdWRlSG9va0V2ZW50czp2OSxpbmNsdWRlUGFydGlhbE1lc3NhZ2VzOkM5LGZvcndhcmRTdWJhZ2VudFRleHQ6Vlgsb25FbGljaXRhdGlvbjpkJCxwZXJzaXN0U2Vzc2lvbjpYNCxzZXNzaW9uU3RvcmU6ZSQsc2Vzc2lvblN0b3JlRmx1c2g6U18sdGhpbmtpbmc6VDksZWZmb3J0OmtfLG1heFRoaW5raW5nVG9rZW5zOkxHLG1heFR1cm5zOnZfLG1heEJ1ZGdldFVzZDpDXyx0YXNrQnVkZ2V0OlRfLG1jcFNlcnZlcnM6dHosbW9kZWw6eF8sb3V0cHV0Rm9ybWF0OmF6LHBlcm1pc3Npb25Nb2RlOmZfPVwiZGVmYXVsdFwiLGFsbG93RGFuZ2Vyb3VzbHlTa2lwUGVybWlzc2lvbnM6eV89ITEscGVybWlzc2lvblByb21wdFRvb2xOYW1lOmdfLHBsdWdpbnM6aF8sZ2V0T0F1dGhUb2tlbjpzeix3b3JrbG9hZDpleixyZXN1bWU6JE4scmVzdW1lU2Vzc2lvbkF0OnVfLHNlc3Npb25JZDptXyxza2lsbHM6UU4sc3RkZXJyOmxfLHN0cmljdE1jcENvbmZpZzpjX309cTtpZihlJCYmWDQ9PT0hMSl0aHJvdyBFcnJvcihcInNlc3Npb25TdG9yZSBjYW5ub3QgYmUgdXNlZCB3aXRoIHBlcnNpc3RTZXNzaW9uOiBmYWxzZSAtLSB0aGUgc3RvcmFnZSBhZGFwdGVyIHJlcXVpcmVzIGxvY2FsIHdyaXRlcyB0byBtaXJyb3IgZnJvbS4gVXNlIENMQVVERV9DT05GSUdfRElSPS90bXAgZm9yIGVwaGVtZXJhbCBsb2NhbCB3cml0ZXMgd2l0aCBleHRlcm5hbCBtaXJyb3JpbmcuXCIpO2lmKGUkJiZ1JiYhJE4mJiFlJC5saXN0U2Vzc2lvbnMpdGhyb3cgRXJyb3IoXCJPcHRpb25zLmNvbnRpbnVlIHdpdGggc2Vzc2lvblN0b3JlIHJlcXVpcmVzIHN0b3JlLmxpc3RTZXNzaW9ucyB0byBiZSBpbXBsZW1lbnRlZFwiKTtpZihlJCYmaSl0aHJvdyBFcnJvcihcImVuYWJsZUZpbGVDaGVja3BvaW50aW5nIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggc2Vzc2lvblN0b3JlIChiYWNrdXAgYmxvYnMgYXJlIG5vdCBtaXJyb3JlZCwgc28gcmV3aW5kRmlsZXMoKSBmYWlscyBhZnRlciBhIHN0b3JlLWJhY2tlZCByZXN1bWUpLlwiKTtpZihlJCYmcS5zcGF3bkNsYXVkZUNvZGVQcm9jZXNzKVgkKFwic2Vzc2lvblN0b3JlIHdpdGggY3VzdG9tIHNwYXduQ2xhdWRlQ29kZVByb2Nlc3M6IGVuc3VyZSB0aGUgc3VicHJvY2VzcyBDTEFVREVfQ09ORklHX0RJUiBtYXRjaGVzIHRoZSBwYXJlbnQgKHNhbWUgcGF0aCwgc2FtZSBzZXBhcmF0b3JzKSBvciB0cmFuc2NyaXB0X21pcnJvciBmcmFtZXMgd2lsbCBiZSBkcm9wcGVkLlwiLHtsZXZlbDpcIndhcm5cIn0pO2xldCBKTj1hej8udHlwZT09PVwianNvbl9zY2hlbWFcIj9hei5zY2hlbWE6dm9pZCAwLFk0PUw0P3suLi5MNH06ey4uLnByb2Nlc3MuZW52fTtpZighWTQuQ0xBVURFX0NPREVfRU5UUllQT0lOVClZNC5DTEFVREVfQ09ERV9FTlRSWVBPSU5UPVwic2RrLXRzXCI7aWYoaSlZNC5DTEFVREVfQ09ERV9FTkFCTEVfU0RLX0ZJTEVfQ0hFQ0tQT0lOVElORz1cInRydWVcIjtpZihzeilZNC5DTEFVREVfQ09ERV9TREtfSEFTX09BVVRIX1JFRlJFU0g9XCIxXCI7aWYoazk/LmFza1VzZXJRdWVzdGlvbj8ucHJldmlld0Zvcm1hdClZNC5DTEFVREVfQ09ERV9RVUVTVElPTl9QUkVWSUVXX0ZPUk1BVD1rOS5hc2tVc2VyUXVlc3Rpb24ucHJldmlld0Zvcm1hdDtsZXQgakc9e307aWYoWkcucHJvcGFnYXRpb24uaW5qZWN0KFpHLmNvbnRleHQuYWN0aXZlKCksakcpLFwidHJhY2VwYXJlbnRcImluIGpHKXtmb3IobGV0IF82IG9mW1wiVFJBQ0VQQVJFTlRcIixcIlRSQUNFU1RBVEVcIl0paWYoIShfNiBpbihMND8/e30pKSlkZWxldGUgWTRbXzZdfWZvcihsZXRbXzYsbTZdb2YgT2JqZWN0LmVudHJpZXMoakcpKXtsZXQgczE9XzYudG9VcHBlckNhc2UoKTtpZighKHMxIGluKEw0Pz97fSkpKVk0W3MxXT1tNn1sZXQgWE49e30sWU49bmV3IE1hcDtpZih0eilmb3IobGV0W182LG02XW9mIE9iamVjdC5lbnRyaWVzKHR6KSlpZihtNi50eXBlPT09XCJzZGtcIiYmbTYuaW5zdGFuY2UpWU4uc2V0KF82LG02Lmluc3RhbmNlKTtlbHNlIFhOW182XT1tNjtsZXQgeDk7aWYoVDkpc3dpdGNoKFQ5LnR5cGUpe2Nhc2VcImFkYXB0aXZlXCI6eDk9e3R5cGU6XCJhZGFwdGl2ZVwiLGRpc3BsYXk6VDkuZGlzcGxheX07YnJlYWs7Y2FzZVwiZW5hYmxlZFwiOng5PXt0eXBlOlwiZW5hYmxlZFwiLGJ1ZGdldFRva2VuczpUOS5idWRnZXRUb2tlbnMsZGlzcGxheTpUOS5kaXNwbGF5fTticmVhaztjYXNlXCJkaXNhYmxlZFwiOng5PXt0eXBlOlwiZGlzYWJsZWRcIn07YnJlYWt9ZWxzZSBpZihMRyE9PXZvaWQgMCl4OT1MRz09PTA/e3R5cGU6XCJkaXNhYmxlZFwifTp7dHlwZTpcImVuYWJsZWRcIixidWRnZXRUb2tlbnM6TEd9O2lmKEopWTQuQ0xBVURFX0NPTkZJR19ESVI9SjtsZXQgV049bmV3IGg3KHthYm9ydENvbnRyb2xsZXI6dyxhZGRpdGlvbmFsRGlyZWN0b3JpZXM6TyxhZ2VudDpELGJldGFzOkEsY3dkOkckLGRlYnVnOmgkLGRlYnVnRmlsZTpzJCxleGVjdXRhYmxlOm4wLGV4ZWN1dGFibGVBcmdzOlUxLGV4dHJhQXJnczplej97Li4ucjAsd29ya2xvYWQ6ZXp9OnIwLHBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlOk4sZW52Olk0LGZvcmtTZXNzaW9uOk1HLHN0ZGVycjpsXyx0aGlua2luZ0NvbmZpZzp4OSxlZmZvcnQ6a18sbWF4VHVybnM6dl8sbWF4QnVkZ2V0VXNkOkNfLHRhc2tCdWRnZXQ6VF8sbW9kZWw6eF8sZmFsbGJhY2tNb2RlbDphMSxqc29uU2NoZW1hOkpOLHBlcm1pc3Npb25Nb2RlOmZfLGFsbG93RGFuZ2Vyb3VzbHlTa2lwUGVybWlzc2lvbnM6eV8scGVybWlzc2lvblByb21wdFRvb2xOYW1lOmdfLGNvbnRpbnVlQ29udmVyc2F0aW9uOmUkP3ZvaWQgMDp1LHJlc3VtZTokTixyZXN1bWVTZXNzaW9uQXQ6dV8sc2Vzc2lvbklkOm1fLHNldHRpbmdzOnR5cGVvZiBXPT09XCJvYmplY3RcIj9CJChXKTpXLG1hbmFnZWRTZXR0aW5nczpHP0IkKEcpOnZvaWQgMCxzZXR0aW5nU291cmNlczpVLHNraWxsczpRTixhbGxvd2VkVG9vbHM6aixkaXNhbGxvd2VkVG9vbHM6dTYsdG9vbHM6QzQsbWNwU2VydmVyczpYTixzdHJpY3RNY3BDb25maWc6Y18sY2FuVXNlVG9vbDohIWssaG9va3M6ISFvMCxpbmNsdWRlSG9va0V2ZW50czp2OSxpbmNsdWRlUGFydGlhbE1lc3NhZ2VzOkM5LHBlcnNpc3RTZXNzaW9uOlg0LHNlc3Npb25NaXJyb3I6ISFlJCxwbHVnaW5zOmhfLHNhbmRib3g6SCxzcGF3bkNsYXVkZUNvZGVQcm9jZXNzOnEuc3Bhd25DbGF1ZGVDb2RlUHJvY2VzcyxkZWZlclNwYXduOll9KSxwXz17c3lzdGVtUHJvbXB0OlYsYXBwZW5kU3lzdGVtUHJvbXB0OkIscGxhbk1vZGVJbnN0cnVjdGlvbnM6cS5wbGFuTW9kZUluc3RydWN0aW9ucyxhcHBlbmRTdWJhZ2VudFN5c3RlbVByb21wdDpxLmFwcGVuZFN1YmFnZW50U3lzdGVtUHJvbXB0LGV4Y2x1ZGVEeW5hbWljU2VjdGlvbnM6eixhZ2VudHM6TSx0aXRsZTpxLnRpdGxlLHNraWxsczpRTix3ZWJTZWFyY2hJc29sYXRpb25FeGVtcHRNY3BTZXJ2ZXJzOnEud2ViU2VhcmNoSXNvbGF0aW9uRXhlbXB0TWNwU2VydmVycyxwcm9tcHRTdWdnZXN0aW9uczpxLnByb21wdFN1Z2dlc3Rpb25zLGFnZW50UHJvZ3Jlc3NTdW1tYXJpZXM6cS5hZ2VudFByb2dyZXNzU3VtbWFyaWVzLGZvcndhcmRTdWJhZ2VudFRleHQ6Vlh9LEFHPW5ldyBjNyhXTixRLGssbzAsdyxZTixKTixwXyxkJCxzeik7aWYoZSQpe2xldCBfNj0oKT0+aDYoWTQuQ0xBVURFX0NPTkZJR19ESVI/P2g2KGR6KCksXCIuY2xhdWRlXCIpLFwicHJvamVjdHNcIiksbTY9U189PT1cImVhZ2VyXCIsczE9bmV3IENVKGFzeW5jKHQwLElHKT0+e2xldCBmOT1aXyh0MCxfNigpKTtpZihmOSlhd2FpdCBlJC5hcHBlbmQoZjksSUcpO2Vsc2UgWCQoYFtTZXNzaW9uU3RvcmVdIGRyb3BwaW5nIG1pcnJvciBmcmFtZTogZmlsZVBhdGggJHt0MH0gaXMgbm90IHVuZGVyICR7XzYoKX0gLS0gc3VicHJvY2VzcyBDTEFVREVfQ09ORklHX0RJUiBsaWtlbHkgZGlmZmVycyBmcm9tIHBhcmVudCAoY3VzdG9tIHNwYXduQ2xhdWRlQ29kZVByb2Nlc3MgLyBjb250YWluZXI/KWAse2xldmVsOlwid2FyblwifSl9LHZvaWQgMCwodDAsSUcpPT57bGV0IGY5PVpfKHQwLF82KCkpO2lmKGY5KUFHLnJlcG9ydE1pcnJvckVycm9yKGY5LElHLm1lc3NhZ2UpfSxtNj8wOk01LG02PzA6TDUpO0FHLnNldFRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyKHMxKX1yZXR1cm57cXVlcnlJbnN0YW5jZTpBRyx0cmFuc3BvcnQ6V04sYWJvcnRDb250cm9sbGVyOncscHJvY2Vzc0VudjpZNH19ZnVuY3Rpb24gbnooJCxRLEosWSl7aWYodHlwZW9mIEo9PT1cInN0cmluZ1wiKVEud3JpdGUoQiQoe3R5cGU6XCJ1c2VyXCIsc2Vzc2lvbl9pZDpcIlwiLG1lc3NhZ2U6e3JvbGU6XCJ1c2VyXCIsY29udGVudDpbe3R5cGU6XCJ0ZXh0XCIsdGV4dDpKfV19LHBhcmVudF90b29sX3VzZV9pZDpudWxsfSkrYFxuYCk7ZWxzZSAkLnN0cmVhbUlucHV0KEopLmNhdGNoKChYKT0+WS5hYm9ydChYKSl9dmFyIHU2JD1uZXcgU2V0KFtcIkVCVVNZXCIsXCJFTUZJTEVcIixcIkVORklMRVwiLFwiRU5PVEVNUFRZXCIsXCJFUEVSTVwiXSk7YXN5bmMgZnVuY3Rpb24gRkcoJCl7Zm9yKGxldCBRPTA7O1ErKyl0cnl7cmV0dXJuIGF3YWl0IHY2JCgkLHtyZWN1cnNpdmU6ITAsZm9yY2U6ITB9KX1jYXRjaChKKXtpZihRPj00fHwhdTYkLmhhcyhvJChKKT8/XCJcIikpcmV0dXJuO2F3YWl0IHpYKChRKzEpKjEwMCl9fWZ1bmN0aW9uIG02JCgkLFEpeyQud2FpdEZvckV4aXQoKS5jYXRjaCgoKT0+e30pLmZpbmFsbHkoKCk9PkZHKFEpKX1mdW5jdGlvbiBRQSQoe3Byb21wdDokLG9wdGlvbnM6UX0pe2lmKChRPy5yZXN1bWV8fFE/LmNvbnRpbnVlKSYmUT8uc2Vzc2lvblN0b3JlKXtsZXR7cXVlcnlJbnN0YW5jZTpXLHRyYW5zcG9ydDpHLGFib3J0Q29udHJvbGxlcjpVLHByb2Nlc3NFbnY6SH09aXooey4uLlF9LHR5cGVvZiAkPT09XCJzdHJpbmdcIix2b2lkIDAsITApLHE9cVgoUS5jd2Q/P1wiLlwiKSxWPVEuc2Vzc2lvblN0b3JlLEI9US5sb2FkVGltZW91dE1zPz82MDAwMCx6PVEucmVzdW1lO3JldHVybihhc3luYygpPT57aWYoIXopej0oYXdhaXQgVDQoVi5saXN0U2Vzc2lvbnMoSjQocSkpLEIsYFNlc3Npb25TdG9yZS5saXN0U2Vzc2lvbnMoKSB0aW1lZCBvdXQgYWZ0ZXIgJHtCfW1zYCkpLnNsaWNlKCkuc29ydCgoTyxEKT0+RC5tdGltZS1PLm10aW1lKVswXT8uc2Vzc2lvbklkO2lmKCF6KXJldHVybjtyZXR1cm4gSV8oVix6LHEsUS5lbnYsUS5sb2FkVGltZW91dE1zKX0pKCkudGhlbigodyk9PntpZih3KUcudXBkYXRlUmVzdW1lKHopLEcudXBkYXRlRW52KHtDTEFVREVfQ09ORklHX0RJUjp3fSksSC5DTEFVREVfQ09ORklHX0RJUj13LFcuYWRkQ2xlYW51cENhbGxiYWNrKCgpPT5tNiQoRyx3KSk7aWYoIVcuaXNDbG9zZWQoKSlHLnNwYXduKCl9KS5jYXRjaCgodyk9PntsZXQgTz1JNCh3KTtHLnNwYXduQWJvcnQoTyksVy5zZXRFcnJvcihPKX0pLG56KFcsRywkLFUpLFd9bGV0e3F1ZXJ5SW5zdGFuY2U6Six0cmFuc3BvcnQ6WSxhYm9ydENvbnRyb2xsZXI6WH09aXooUSx0eXBlb2YgJD09PVwic3RyaW5nXCIpO3JldHVybiBueihKLFksJCxYKSxKfWFzeW5jIGZ1bmN0aW9uIEpBJCh7b3B0aW9uczokLGluaXRpYWxpemVUaW1lb3V0TXM6UT02MDAwMH09e30pe2xldCBKLFk9JD8ucmVzdW1lO2lmKChZfHwkPy5jb250aW51ZSkmJiQ/LnNlc3Npb25TdG9yZSl7bGV0IFU9cVgoJC5jd2Q/P1wiLlwiKTtpZighWSl7aWYoISQuc2Vzc2lvblN0b3JlLmxpc3RTZXNzaW9ucyl0aHJvdyBFcnJvcihcIk9wdGlvbnMuY29udGludWUgd2l0aCBzZXNzaW9uU3RvcmUgcmVxdWlyZXMgc3RvcmUubGlzdFNlc3Npb25zIHRvIGJlIGltcGxlbWVudGVkXCIpO2xldCBIPSQubG9hZFRpbWVvdXRNcz8/NjAwMDA7WT0oYXdhaXQgVDQoJC5zZXNzaW9uU3RvcmUubGlzdFNlc3Npb25zKEo0KFUpKSxILGBTZXNzaW9uU3RvcmUubGlzdFNlc3Npb25zKCkgdGltZWQgb3V0IGFmdGVyICR7SH1tc2ApKS5zbGljZSgpLnNvcnQoKFYsQik9PkIubXRpbWUtVi5tdGltZSlbMF0/LnNlc3Npb25JZH1pZihZKUo9YXdhaXQgSV8oJC5zZXNzaW9uU3RvcmUsWSxVLCQuZW52LCQubG9hZFRpbWVvdXRNcyl9bGV0IFgsVyxHO3RyeXtsZXQgej1mdW5jdGlvbigpe2lmKEIpcmV0dXJuO0I9ITAsVi5jbG9zZSgpfSxVPWl6KEomJlkmJlkhPT0kPy5yZXN1bWU/ey4uLiQscmVzdW1lOll9OiQsITEsSik7WD1VLnF1ZXJ5SW5zdGFuY2U7bGV0e3RyYW5zcG9ydDpILGFib3J0Q29udHJvbGxlcjpxfT1VO1c9SDtsZXQgVj1VLnF1ZXJ5SW5zdGFuY2U7aWYoSil7bGV0IE49SjtWLmFkZENsZWFudXBDYWxsYmFjaygoKT0+e0c9SC53YWl0Rm9yRXhpdCgpLmNhdGNoKCgpPT57fSkudGhlbigoKT0+RkcoTikpfSl9YXdhaXQgVDQoVi5pbml0aWFsaXphdGlvblJlc3VsdCgpLFEsYFN1YnByb2Nlc3MgaW5pdGlhbGl6YXRpb24gZGlkIG5vdCBjb21wbGV0ZSB3aXRoaW4gJHtRfW1zIFx1MjAxNCBjaGVjayBhdXRoZW50aWNhdGlvbiBhbmQgbmV0d29yayBjb25uZWN0aXZpdHlgKTtsZXQgQj0hMTtyZXR1cm57cXVlcnkoTil7aWYoQil0aHJvdyBFcnJvcihcIldhcm1RdWVyeS5xdWVyeSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlXCIpO0I9ITA7dHJ5e256KFYsSCxOLHEpfWNhdGNoKHcpe3Rocm93IFYuY2xvc2UoKSx3fWlmKHR5cGVvZiBOPT09XCJzdHJpbmdcIilWLnNldElzU2luZ2xlVXNlclR1cm4oITApO3JldHVybiBWfSxjbG9zZTp6LGFzeW5jW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCl7Qj0hMCxWLmNsb3NlKCksYXdhaXQgR319fWNhdGNoKFUpe2lmKFg/LmNsb3NlKCksSiYmIUcpe2xldCBIPVc7Rz0oSD9ILndhaXRGb3JFeGl0KCkuY2F0Y2goKCk9Pnt9KTpQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKT0+RkcoSikpfXRocm93IGF3YWl0IEcsVX19ZnVuY3Rpb24gWEEkKCQpe3JldHVybiBfSCgkKX1mdW5jdGlvbiBZQSQoJCxRKXtyZXR1cm4gcVooJCxRKX1hc3luYyBmdW5jdGlvbiBXQSQoJCxRKXtsZXQgWT1bXTt0cnl7Y29uc3QgSj1aJChZLF9IKFEpLDEpO2F3YWl0IEouc2VuZCgkKTtmb3IgYXdhaXQobGV0IEggb2YgSi5zdHJlYW0oKSlpZihILnR5cGU9PT1cInJlc3VsdFwiKXJldHVybiBIO3Rocm93IEVycm9yKFwiU2Vzc2lvbiBlbmRlZCB3aXRob3V0IHJlc3VsdCBtZXNzYWdlXCIpfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7dmFyIFU9TSQoWSxXLEcpO1UmJmF3YWl0IFV9fWFzeW5jIGZ1bmN0aW9uIEdBJCgkLFEpe2lmKFE/LnNlc3Npb25TdG9yZSlyZXR1cm4gZDYkKFEuc2Vzc2lvblN0b3JlLCQsUSk7cmV0dXJuIE1aKCQsUSl9YXN5bmMgZnVuY3Rpb24gVUEkKCQpe2lmKCQ/LnNlc3Npb25TdG9yZSlyZXR1cm4gYzYkKCQuc2Vzc2lvblN0b3JlLCQpO3JldHVybiBqWigkKX1hc3luYyBmdW5jdGlvbiBIQSQoJCxRKXtpZihRPy5zZXNzaW9uU3RvcmUpcmV0dXJuIGk2JChRLnNlc3Npb25TdG9yZSwkLFEpO3JldHVybiBBWigkLFEpfWFzeW5jIGZ1bmN0aW9uIEtBJCgkLFEsSil7aWYoSj8uc2Vzc2lvblN0b3JlKXJldHVybiBuNiQoSi5zZXNzaW9uU3RvcmUsJCxRLEouZGlyKTtyZXR1cm4gRVooJCxRLEopfWFzeW5jIGZ1bmN0aW9uIHFBJCgkLFEsSil7aWYoSj8uc2Vzc2lvblN0b3JlKXJldHVybiByNiQoSi5zZXNzaW9uU3RvcmUsJCxRLEouZGlyKTtyZXR1cm4gYlooJCxRLEopfWFzeW5jIGZ1bmN0aW9uIFZBJCgkLFEpe2lmKCFMJCgkKSl0aHJvdyBFcnJvcihgSW52YWxpZCBzZXNzaW9uSWQ6ICR7JH1gKTtpZihRPy5zZXNzaW9uU3RvcmUpe2lmKCFRLnNlc3Npb25TdG9yZS5kZWxldGUpcmV0dXJuO2xldCBKPUo0KFEuZGlyKTthd2FpdCBRLnNlc3Npb25TdG9yZS5kZWxldGUoe3Byb2plY3RLZXk6SixzZXNzaW9uSWQ6JH0pO3JldHVybn1yZXR1cm4gX1ooJCxRKX1hc3luYyBmdW5jdGlvbiBCQSQoJCxRKXtpZihRPy5zZXNzaW9uU3RvcmUpcmV0dXJuIG82JChRLnNlc3Npb25TdG9yZSwkLFEpO3JldHVybiB4WigkLFEpfWFzeW5jIGZ1bmN0aW9uIHpBJCgkLFEsSil7aWYoIUwkKCQpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHskfWApO2xldCBZPWF3YWl0IGoxKCQsSj8uZGlyKTtpZighWSl0aHJvdyBFcnJvcihgU2Vzc2lvbiAkeyR9IG5vdCBmb3VuZGApO2xldCBYPUo0KEo/LmRpciksVz1KPy5iYXRjaFNpemUmJkouYmF0Y2hTaXplPjA/Si5iYXRjaFNpemU6TTU7aWYoYXdhaXQgT18oWS5maWxlUGF0aCx7cHJvamVjdEtleTpYLHNlc3Npb25JZDokfSxRLFcpLEo/LmluY2x1ZGVTdWJhZ2VudHM9PT0hMSlyZXR1cm47bGV0IEc9WS5maWxlUGF0aC5yZXBsYWNlKC9cXC5qc29ubCQvLFwiXCIpLFU9aDYoRyxcInN1YmFnZW50c1wiKTtmb3IobGV0IEggb2YgYXdhaXQgbDYkKFUpKXtsZXQgcT1BXyhHLEgpLnNwbGl0KG96KTtxW3EubGVuZ3RoLTFdPXEuYXQoLTEpLnJlcGxhY2UoL1xcLmpzb25sJC8sXCJcIik7bGV0IFY9e3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6JCxzdWJwYXRoOnEuam9pbihcIi9cIil9O2F3YWl0IE9fKEgsVixRLFcpO2xldCBCPUgucmVwbGFjZSgvXFwuanNvbmwkLyxcIi5tZXRhLmpzb25cIik7dHJ5e2xldCB6PWwkKGF3YWl0IE1fKEIsXCJ1dGY4XCIpKTthd2FpdCBRLmFwcGVuZChWLFt7dHlwZTpcImFnZW50X21ldGFkYXRhXCIsLi4uen1dKX1jYXRjaCh6KXtpZighRjEoeikpdGhyb3cgen19fWFzeW5jIGZ1bmN0aW9uIE9fKCQsUSxKLFkpe2xldCBYPXg2JCh7aW5wdXQ6YjYkKCQse2VuY29kaW5nOlwidXRmOFwifSksY3JsZkRlbGF5OjEvMH0pLFc9W10sRz0wO2ZvciBhd2FpdChsZXQgVSBvZiBYKXtpZighVSljb250aW51ZTtpZihXLnB1c2gobCQoVSkpLEcrPVUubGVuZ3RoLFcubGVuZ3RoPj1ZfHxHPj1MNSlhd2FpdCBKLmFwcGVuZChRLFcpLFc9W10sRz0wfWlmKFcubGVuZ3RoPjApYXdhaXQgSi5hcHBlbmQoUSxXKX1hc3luYyBmdW5jdGlvbiBsNiQoJCl7bGV0IFE9W107YXN5bmMgZnVuY3Rpb24gSihZKXtsZXQgWDt0cnl7WD1hd2FpdCBrNiQoWSx7d2l0aEZpbGVUeXBlczohMH0pfWNhdGNoe3JldHVybn1mb3IobGV0IFcgb2YgWCl7bGV0IEc9aDYoWSxXLm5hbWUpO2lmKFcuaXNEaXJlY3RvcnkoKSlhd2FpdCBKKEcpO2Vsc2UgaWYoVy5pc0ZpbGUoKSYmVy5uYW1lLmVuZHNXaXRoKFwiLmpzb25sXCIpKVEucHVzaChHKX19cmV0dXJuIGF3YWl0IEooJCksUX1hc3luYyBmdW5jdGlvbiBOQSQoJCxRKXtpZihRPy5zZXNzaW9uU3RvcmUpcmV0dXJuIHQ2JChRLnNlc3Npb25TdG9yZSwkLFEuZGlyKTtyZXR1cm4gdVooJCxRKX1hc3luYyBmdW5jdGlvbiB3QSQoJCxRLEope2lmKEo/LnNlc3Npb25TdG9yZSlyZXR1cm4gYTYkKEouc2Vzc2lvblN0b3JlLCQsUSxKKTtyZXR1cm4gbVooJCxRLEopfWZ1bmN0aW9uIFJfKCQpe2xldCBRPXFYKCQ/P1wiLlwiKSxKO3RyeXtKPV82JChRKX1jYXRjaHtKPVF9cmV0dXJuIEoubm9ybWFsaXplKFwiTkZDXCIpfWZ1bmN0aW9uIEo0KCQpe3JldHVybiBNMChSXygkKSl9ZnVuY3Rpb24gUF8oJCl7cmV0dXJuICQubWFwKChRKT0+QiQoUSkpLmpvaW4oYFxuYCkrYFxuYH1mdW5jdGlvbiBEXygkLFEsSil7aWYoUSE9PXZvaWQgMCYmUT4wKXJldHVybiAkLnNsaWNlKEosSitRKTtpZihKPjApcmV0dXJuICQuc2xpY2UoSik7cmV0dXJuICR9ZnVuY3Rpb24gRV8oJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJlwidHlwZVwiaW4gJCYmJC50eXBlPT09XCJhZ2VudF9tZXRhZGF0YVwifWFzeW5jIGZ1bmN0aW9uIGM2JCgkLFEpe2xldCBKPVJfKFEuZGlyKSxZPU0wKEopLFg9US5vZmZzZXQ/PzAsVz1RLmxpbWl0O2lmKCQubGlzdFNlc3Npb25TdW1tYXJpZXMpe2xldCBxPWF3YWl0ICQubGlzdFNlc3Npb25TdW1tYXJpZXMoWSksVj0kLmxpc3RTZXNzaW9ucz9uZXcgTWFwKChhd2FpdCAkLmxpc3RTZXNzaW9ucyhZKSkubWFwKCh3KT0+W3cuc2Vzc2lvbklkLHddKSk6dm9pZCAwLEI9W107Zm9yKGxldCB3IG9mIHEpe2xldCBPPVY/LmdldCh3LnNlc3Npb25JZCk7aWYoViYmIU8pY29udGludWU7bGV0IEQ9TyE9PXZvaWQgMCYmdy5tdGltZTxPLm10aW1lO0IucHVzaCh7c2Vzc2lvbklkOncuc2Vzc2lvbklkLG10aW1lOkQ/Ty5tdGltZTp3Lm10aW1lLGluZm86RD92b2lkIDA6R04odyxKKX0pfWlmKFYpe2xldCB3PW5ldyBTZXQocS5tYXAoKE8pPT5PLnNlc3Npb25JZCkpO2ZvcihsZXRbTyxEXW9mIFYpaWYoIXcuaGFzKE8pKUIucHVzaCh7c2Vzc2lvbklkOk8sbXRpbWU6RC5tdGltZX0pfWVsc2UgWCQoXCJsaXN0U2Vzc2lvblN1bW1hcmllcyB3aXRob3V0IGxpc3RTZXNzaW9uczogZ2FwLWZpbGwgc2tpcHBlZDsgc2Vzc2lvbnMgbGFja2luZyBhIHNpZGVjYXIgd2lsbCBiZSBvbWl0dGVkXCIpO0Iuc29ydCgodyxPKT0+Ty5tdGltZS13Lm10aW1lKTtsZXQgej1EXyhCLFcsWCksTj16LmZpbHRlcigodyk9PncuaW5mbz09PXZvaWQgMCk7aWYoTi5sZW5ndGg+MCl7bGV0IHc9YXdhaXQgRl8oJCxOLFEuZGlyLEopLE89bmV3IE1hcCh3Lm1hcCgoRCk9PltELnNlc3Npb25JZCxEXSkpO2ZvcihsZXQgRCBvZiB6KWlmKEQuaW5mbz09PXZvaWQgMClELmluZm89Ty5nZXQoRC5zZXNzaW9uSWQpPz9udWxsfXJldHVybiB6LmZsYXRNYXAoKHcpPT53LmluZm8/W3cuaW5mb106W10pfWlmKCEkLmxpc3RTZXNzaW9ucyl0aHJvdyBFcnJvcihcInNlc3Npb25TdG9yZS5saXN0U2Vzc2lvbnMgaXMgbm90IGltcGxlbWVudGVkIC0tIGNhbm5vdCBsaXN0IHNlc3Npb25zLiBQcm92aWRlIGEgc3RvcmUgd2l0aCBhIGxpc3RTZXNzaW9ucygpIG1ldGhvZC5cIik7bGV0IFU9KGF3YWl0ICQubGlzdFNlc3Npb25zKFkpKS5zbGljZSgpLnNvcnQoKHEsVik9PlYubXRpbWUtcS5tdGltZSksSD1EXyhVLFcsWCk7cmV0dXJuIEZfKCQsSCxRLmRpcixKKX1hc3luYyBmdW5jdGlvbiBGXygkLFEsSixZKXtyZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFEubWFwKGFzeW5jKFcpPT57bGV0IEc9YXdhaXQgX18oJCxXLnNlc3Npb25JZCxKKTtpZighRylyZXR1cm4gbnVsbDtsZXQgVT1DOChXLnNlc3Npb25JZCxiXyhHLFcubXRpbWUpLFkpO3JldHVybiBVP3suLi5VLGxhc3RNb2RpZmllZDpXLm10aW1lfTpudWxsfSkpKS5mbGF0TWFwKChXLEcpPT57bGV0IFU9UVtHXTtpZihXLnN0YXR1cz09PVwiZnVsZmlsbGVkXCIpcmV0dXJuIFcudmFsdWU/W1cudmFsdWVdOltdO3JldHVyblt7c2Vzc2lvbklkOlUuc2Vzc2lvbklkLHN1bW1hcnk6XCJcIixsYXN0TW9kaWZpZWQ6VS5tdGltZX1dfSl9ZnVuY3Rpb24gYl8oJCxRKXtsZXQgSj1CdWZmZXIuZnJvbSgkLFwidXRmLThcIiksWT1KLmxlbmd0aCxYPUouc3ViYXJyYXkoMCxVNCkudG9TdHJpbmcoXCJ1dGYtOFwiKSxXPVk+VTQ/Si5zdWJhcnJheShZLVU0KS50b1N0cmluZyhcInV0Zi04XCIpOlg7cmV0dXJue210aW1lOlEsc2l6ZTpZLGhlYWQ6WCx0YWlsOld9fWZ1bmN0aW9uIHA2JCgkKXtsZXQgUT0kLnRyaW1FbmQoKSxKPVEuc2xpY2UoUS5sYXN0SW5kZXhPZihgXG5gKSsxKTt0cnl7bGV0IFk9bCQoSik7aWYodHlwZW9mIFk9PT1cIm9iamVjdFwiJiZZIT09bnVsbCYmXCJ0aW1lc3RhbXBcImluIFkmJnR5cGVvZiBZLnRpbWVzdGFtcD09PVwic3RyaW5nXCIpe2xldCBYPURhdGUucGFyc2UoWS50aW1lc3RhbXApO2lmKCFOdW1iZXIuaXNOYU4oWCkpcmV0dXJuIFh9fWNhdGNoe31yZXR1cm4gRGF0ZS5ub3coKX1hc3luYyBmdW5jdGlvbiBfXygkLFEsSil7bGV0IFk9SjQoSiksWD1hd2FpdCAkLmxvYWQoe3Byb2plY3RLZXk6WSxzZXNzaW9uSWQ6UX0pO2lmKCFYfHxYLmxlbmd0aD09PTApcmV0dXJuIG51bGw7cmV0dXJuIFBfKFgpfWFzeW5jIGZ1bmN0aW9uIGQ2JCgkLFEsSil7aWYoIUwkKFEpKXJldHVybltdO2xldCBZPUo0KEouZGlyKSxYPWF3YWl0ICQubG9hZCh7cHJvamVjdEtleTpZLHNlc3Npb25JZDpRfSk7aWYoIVh8fFgubGVuZ3RoPT09MClyZXR1cm5bXTtyZXR1cm4gRlooWCx7bGltaXQ6Si5saW1pdCxvZmZzZXQ6Si5vZmZzZXQsaW5jbHVkZVN5c3RlbU1lc3NhZ2VzOkouaW5jbHVkZVN5c3RlbU1lc3NhZ2VzfSl9YXN5bmMgZnVuY3Rpb24gaTYkKCQsUSxKKXtpZighTCQoUSkpcmV0dXJuO2xldCBZPWF3YWl0IF9fKCQsUSxKLmRpcik7aWYoIVkpcmV0dXJuO2xldCBYPWJfKFkscDYkKFkpKTtyZXR1cm4gQzgoUSxYKT8/dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIG42JCgkLFEsSixZKXtpZighTCQoUSkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAke1F9YCk7aWYoIUoudHJpbSgpKXRocm93IEVycm9yKFwidGl0bGUgbXVzdCBiZSBub24tZW1wdHlcIik7bGV0IFg9SjQoWSk7YXdhaXQgJC5hcHBlbmQoe3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6UX0sW3t0eXBlOlwiY3VzdG9tLXRpdGxlXCIsY3VzdG9tVGl0bGU6Si50cmltKCksc2Vzc2lvbklkOlEsdXVpZDpyeigpLHRpbWVzdGFtcDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9XSl9YXN5bmMgZnVuY3Rpb24gcjYkKCQsUSxKLFkpe2lmKCFMJChRKSl0aHJvdyBFcnJvcihgSW52YWxpZCBzZXNzaW9uSWQ6ICR7UX1gKTtpZihKIT09bnVsbCl7bGV0IFc9RjAoSikudHJpbSgpO2lmKCFXKXRocm93IEVycm9yKFwidGFnIG11c3QgYmUgbm9uLWVtcHR5ICh1c2UgbnVsbCB0byBjbGVhcilcIik7Sj1XfWxldCBYPUo0KFkpO2F3YWl0ICQuYXBwZW5kKHtwcm9qZWN0S2V5Olgsc2Vzc2lvbklkOlF9LFt7dHlwZTpcInRhZ1wiLHRhZzpKPz9cIlwiLHNlc3Npb25JZDpRLHV1aWQ6cnooKSx0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfV0pfWFzeW5jIGZ1bmN0aW9uIG82JCgkLFEsSil7aWYoIUwkKFEpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHtRfWApO2lmKEoudXBUb01lc3NhZ2VJZCYmIUwkKEoudXBUb01lc3NhZ2VJZCkpdGhyb3cgRXJyb3IoYEludmFsaWQgdXBUb01lc3NhZ2VJZDogJHtKLnVwVG9NZXNzYWdlSWR9YCk7bGV0IFk9SjQoSi5kaXIpLFg9YXdhaXQgJC5sb2FkKHtwcm9qZWN0S2V5Olksc2Vzc2lvbklkOlF9KTtpZighWHx8WC5sZW5ndGg9PT0wKXRocm93IEVycm9yKGBTZXNzaW9uICR7UX0gbm90IGZvdW5kYCk7bGV0e2VudHJpZXM6Vyxmb3JrZWRTZXNzaW9uSWQ6R309ZlooWCxRLEopO3JldHVybiBhd2FpdCAkLmFwcGVuZCh7cHJvamVjdEtleTpZLHNlc3Npb25JZDpHfSxXKSx7c2Vzc2lvbklkOkd9fWFzeW5jIGZ1bmN0aW9uIHQ2JCgkLFEsSil7aWYoIUwkKFEpKXJldHVybltdO2lmKCEkLmxpc3RTdWJrZXlzKXRocm93IEVycm9yKFwic2Vzc2lvblN0b3JlLmxpc3RTdWJrZXlzIGlzIG5vdCBpbXBsZW1lbnRlZCAtLSBjYW5ub3QgbGlzdCBzdWJhZ2VudHMuIFByb3ZpZGUgYSBzdG9yZSB3aXRoIGEgbGlzdFN1YmtleXMoKSBtZXRob2QuXCIpO2xldCBZPUo0KEopLFg9YXdhaXQgJC5saXN0U3Via2V5cyh7cHJvamVjdEtleTpZLHNlc3Npb25JZDpRfSksVz1uZXcgU2V0O2ZvcihsZXQgRyBvZiBYKXtpZighRy5zdGFydHNXaXRoKFwic3ViYWdlbnRzL1wiKSljb250aW51ZTtsZXQgVT1HLnNwbGl0KFwiL1wiKS5hdCgtMSk7aWYoVS5zdGFydHNXaXRoKFwiYWdlbnQtXCIpKVcuYWRkKFUuc2xpY2UoNikpfXJldHVyblsuLi5XXX1hc3luYyBmdW5jdGlvbiBhNiQoJCxRLEosWSl7aWYoIUwkKFEpKXJldHVybltdO2lmKCFKKXJldHVybltdO2xldCBYPUo0KFkuZGlyKSxXPWBzdWJhZ2VudHMvYWdlbnQtJHtKfWA7aWYoJC5saXN0U3Via2V5cyl7bGV0IEg9YXdhaXQgJC5saXN0U3Via2V5cyh7cHJvamVjdEtleTpYLHNlc3Npb25JZDpRfSkscT1gYWdlbnQtJHtKfWAsVj1ILmZpbmQoKEIpPT5CLnN0YXJ0c1dpdGgoXCJzdWJhZ2VudHMvXCIpJiZCLnNwbGl0KFwiL1wiKS5hdCgtMSk9PT1xKTtpZighVilyZXR1cm5bXTtXPVZ9bGV0IEc9YXdhaXQgJC5sb2FkKHtwcm9qZWN0S2V5Olgsc2Vzc2lvbklkOlEsc3VicGF0aDpXfSk7aWYoIUd8fEcubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgVT1HLmZpbHRlcigoSCk9PiFFXyhIKSk7aWYoVS5sZW5ndGg9PT0wKXJldHVybltdO3JldHVybiBsSChCdWZmZXIuZnJvbShQXyhVKSkse2xpbWl0OlkubGltaXQsb2Zmc2V0Olkub2Zmc2V0fSl9ZnVuY3Rpb24gWl8oJCxRKXtsZXQgSj1BXyhRLCQpLFk9Si5zcGxpdChveik7aWYoWVswXT09PVwiLi5cInx8al8oSikpcmV0dXJuIG51bGw7aWYoWS5sZW5ndGg8MilyZXR1cm4gbnVsbDtsZXQgWD1ZWzBdLFc9WVsxXTtpZihZLmxlbmd0aD09PTImJlcuZW5kc1dpdGgoXCIuanNvbmxcIikpcmV0dXJue3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6Vy5yZXBsYWNlKC9cXC5qc29ubCQvLFwiXCIpfTtpZihZLmxlbmd0aD49NCl7bGV0IEc9WS5zbGljZSgyKSxVPUcubGVuZ3RoLTE7cmV0dXJuIEdbVV09Ry5hdCgtMSkucmVwbGFjZSgvXFwuanNvbmwkLyxcIlwiKSx7cHJvamVjdEtleTpYLHNlc3Npb25JZDpXLHN1YnBhdGg6Ry5qb2luKFwiL1wiKX19cmV0dXJuIG51bGx9ZXhwb3J0e1lBJCBhcyB1bnN0YWJsZV92Ml9yZXN1bWVTZXNzaW9uLFdBJCBhcyB1bnN0YWJsZV92Ml9wcm9tcHQsWEEkIGFzIHVuc3RhYmxlX3YyX2NyZWF0ZVNlc3Npb24sYnMgYXMgdG9vbCxxQSQgYXMgdGFnU2Vzc2lvbixKQSQgYXMgc3RhcnR1cCwkQSQgYXMgcmVzb2x2ZVNldHRpbmdzLEtBJCBhcyByZW5hbWVTZXNzaW9uLFFBJCBhcyBxdWVyeSx2cyBhcyBwYXJzZURpcmVjdENvbm5lY3RVcmwsTkEkIGFzIGxpc3RTdWJhZ2VudHMsVUEkIGFzIGxpc3RTZXNzaW9ucyx6QSQgYXMgaW1wb3J0U2Vzc2lvblRvU3RvcmUsd0EkIGFzIGdldFN1YmFnZW50TWVzc2FnZXMsR0EkIGFzIGdldFNlc3Npb25NZXNzYWdlcyxIQSQgYXMgZ2V0U2Vzc2lvbkluZm8sQkEkIGFzIGZvcmtTZXNzaW9uLE5YIGFzIGZvbGRTZXNzaW9uU3VtbWFyeSxQNiQgYXMgZmlsdGVyRXNjYWxhdGluZ0RlZmF1bHRNb2RlLFZBJCBhcyBkZWxldGVTZXNzaW9uLF9zIGFzIGNyZWF0ZVNka01jcFNlcnZlcixVUyBhcyBTWVNURU1fUFJPTVBUX0RZTkFNSUNfQk9VTkRBUlksUEcgYXMgSW5NZW1vcnlTZXNzaW9uU3RvcmUsczAgYXMgSE9PS19FVkVOVFMsR1MgYXMgRVhJVF9SRUFTT05TLFlFIGFzIERpcmVjdENvbm5lY3RUcmFuc3BvcnQsWjQgYXMgRGlyZWN0Q29ubmVjdEVycm9yLHE2IGFzIEFib3J0RXJyb3J9O1xuIiwgImV4cG9ydCBjb25zdCBpZ25vcmVPdmVycmlkZSA9IFN5bWJvbChcIkxldCB6b2RUb0pzb25TY2hlbWEgZGVjaWRlIG9uIHdoaWNoIHBhcnNlciB0byB1c2VcIik7XG5leHBvcnQgY29uc3QganNvbkRlc2NyaXB0aW9uID0gKGpzb25TY2hlbWEsIGRlZikgPT4ge1xuICAgIGlmIChkZWYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uanNvblNjaGVtYSxcbiAgICAgICAgICAgICAgICAuLi5KU09OLnBhcnNlKGRlZi5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHsgfVxuICAgIH1cbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn07XG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICRyZWZTdHJhdGVneTogXCJyb290XCIsXG4gICAgYmFzZVBhdGg6IFtcIiNcIl0sXG4gICAgZWZmZWN0U3RyYXRlZ3k6IFwiaW5wdXRcIixcbiAgICBwaXBlU3RyYXRlZ3k6IFwiYWxsXCIsXG4gICAgZGF0ZVN0cmF0ZWd5OiBcImZvcm1hdDpkYXRlLXRpbWVcIixcbiAgICBtYXBTdHJhdGVneTogXCJlbnRyaWVzXCIsXG4gICAgcmVtb3ZlQWRkaXRpb25hbFN0cmF0ZWd5OiBcInBhc3N0aHJvdWdoXCIsXG4gICAgYWxsb3dlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB0cnVlLFxuICAgIHJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIGRlZmluaXRpb25QYXRoOiBcImRlZmluaXRpb25zXCIsXG4gICAgdGFyZ2V0OiBcImpzb25TY2hlbWE3XCIsXG4gICAgc3RyaWN0VW5pb25zOiBmYWxzZSxcbiAgICBkZWZpbml0aW9uczoge30sXG4gICAgZXJyb3JNZXNzYWdlczogZmFsc2UsXG4gICAgbWFya2Rvd25EZXNjcmlwdGlvbjogZmFsc2UsXG4gICAgcGF0dGVyblN0cmF0ZWd5OiBcImVzY2FwZVwiLFxuICAgIGFwcGx5UmVnZXhGbGFnczogZmFsc2UsXG4gICAgZW1haWxTdHJhdGVneTogXCJmb3JtYXQ6ZW1haWxcIixcbiAgICBiYXNlNjRTdHJhdGVneTogXCJjb250ZW50RW5jb2Rpbmc6YmFzZTY0XCIsXG4gICAgbmFtZVN0cmF0ZWd5OiBcInJlZlwiLFxuICAgIG9wZW5BaUFueVR5cGVOYW1lOiBcIk9wZW5BaUFueVR5cGVcIlxufTtcbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0T3B0aW9ucyA9IChvcHRpb25zKSA9PiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCJcbiAgICA/IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMsXG4gICAgfVxuICAgIDoge1xuICAgICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiIsICJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL09wdGlvbnMuanNcIjtcbmV4cG9ydCBjb25zdCBnZXRSZWZzID0gKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gX29wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gWy4uLl9vcHRpb25zLmJhc2VQYXRoLCBfb3B0aW9ucy5kZWZpbml0aW9uUGF0aCwgX29wdGlvbnMubmFtZV1cbiAgICAgICAgOiBfb3B0aW9ucy5iYXNlUGF0aDtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5fb3B0aW9ucyxcbiAgICAgICAgZmxhZ3M6IHsgaGFzUmVmZXJlbmNlZE9wZW5BaUFueVR5cGU6IGZhbHNlIH0sXG4gICAgICAgIGN1cnJlbnRQYXRoOiBjdXJyZW50UGF0aCxcbiAgICAgICAgcHJvcGVydHlQYXRoOiB1bmRlZmluZWQsXG4gICAgICAgIHNlZW46IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoX29wdGlvbnMuZGVmaW5pdGlvbnMpLm1hcCgoW25hbWUsIGRlZl0pID0+IFtcbiAgICAgICAgICAgIGRlZi5fZGVmLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRlZjogZGVmLl9kZWYsXG4gICAgICAgICAgICAgICAgcGF0aDogWy4uLl9vcHRpb25zLmJhc2VQYXRoLCBfb3B0aW9ucy5kZWZpbml0aW9uUGF0aCwgbmFtZV0sXG4gICAgICAgICAgICAgICAgLy8gUmVzb2x1dGlvbiBvZiByZWZlcmVuY2VzIHdpbGwgYmUgZm9yY2VkIGV2ZW4gdGhvdWdoIHNlZW4sIHNvIGl0J3Mgb2sgdGhhdCB0aGUgc2NoZW1hIGlzIHVuZGVmaW5lZCBoZXJlIGZvciBub3cuXG4gICAgICAgICAgICAgICAganNvblNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSkpLFxuICAgIH07XG59O1xuIiwgImV4cG9ydCBmdW5jdGlvbiBhZGRFcnJvck1lc3NhZ2UocmVzLCBrZXksIGVycm9yTWVzc2FnZSwgcmVmcykge1xuICAgIGlmICghcmVmcz8uZXJyb3JNZXNzYWdlcylcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgcmVzLmVycm9yTWVzc2FnZSA9IHtcbiAgICAgICAgICAgIC4uLnJlcy5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBba2V5XTogZXJyb3JNZXNzYWdlLFxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywga2V5LCB2YWx1ZSwgZXJyb3JNZXNzYWdlLCByZWZzKSB7XG4gICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICBhZGRFcnJvck1lc3NhZ2UocmVzLCBrZXksIGVycm9yTWVzc2FnZSwgcmVmcyk7XG59XG4iLCAiZXhwb3J0IGNvbnN0IGdldFJlbGF0aXZlUGF0aCA9IChwYXRoQSwgcGF0aEIpID0+IHtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yICg7IGkgPCBwYXRoQS5sZW5ndGggJiYgaSA8IHBhdGhCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChwYXRoQVtpXSAhPT0gcGF0aEJbaV0pXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFsocGF0aEEubGVuZ3RoIC0gaSkudG9TdHJpbmcoKSwgLi4ucGF0aEIuc2xpY2UoaSldLmpvaW4oXCIvXCIpO1xufTtcbiIsICJleHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2hlbHBlcnMvcGFyc2VVdGlsLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzL3R5cGVBbGlhc2VzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzL3V0aWwuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ab2RFcnJvci5qc1wiO1xuIiwgImV4cG9ydCB2YXIgdXRpbDtcbihmdW5jdGlvbiAodXRpbCkge1xuICAgIHV0aWwuYXNzZXJ0RXF1YWwgPSAoXykgPT4geyB9O1xuICAgIGZ1bmN0aW9uIGFzc2VydElzKF9hcmcpIHsgfVxuICAgIHV0aWwuYXNzZXJ0SXMgPSBhc3NlcnRJcztcbiAgICBmdW5jdGlvbiBhc3NlcnROZXZlcihfeCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gICAgdXRpbC5hc3NlcnROZXZlciA9IGFzc2VydE5ldmVyO1xuICAgIHV0aWwuYXJyYXlUb0VudW0gPSAoaXRlbXMpID0+IHtcbiAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgb2JqW2l0ZW1dID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH07XG4gICAgdXRpbC5nZXRWYWxpZEVudW1WYWx1ZXMgPSAob2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhvYmopLmZpbHRlcigoaykgPT4gdHlwZW9mIG9ialtvYmpba11dICE9PSBcIm51bWJlclwiKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIHZhbGlkS2V5cykge1xuICAgICAgICAgICAgZmlsdGVyZWRba10gPSBvYmpba107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHV0aWwub2JqZWN0VmFsdWVzKGZpbHRlcmVkKTtcbiAgICB9O1xuICAgIHV0aWwub2JqZWN0VmFsdWVzID0gKG9iaikgPT4ge1xuICAgICAgICByZXR1cm4gdXRpbC5vYmplY3RLZXlzKG9iaikubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqW2VdO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHV0aWwub2JqZWN0S2V5cyA9IHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gXCJmdW5jdGlvblwiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgICA/IChvYmopID0+IE9iamVjdC5rZXlzKG9iaikgLy8gZXNsaW50LWRpc2FibGUtbGluZSBiYW4vYmFuXG4gICAgICAgIDogKG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH07XG4gICAgdXRpbC5maW5kID0gKGFyciwgY2hlY2tlcikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2tlcihpdGVtKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgdXRpbC5pc0ludGVnZXIgPSB0eXBlb2YgTnVtYmVyLmlzSW50ZWdlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgID8gKHZhbCkgPT4gTnVtYmVyLmlzSW50ZWdlcih2YWwpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgICA6ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKHZhbCkgJiYgTWF0aC5mbG9vcih2YWwpID09PSB2YWw7XG4gICAgZnVuY3Rpb24gam9pblZhbHVlcyhhcnJheSwgc2VwYXJhdG9yID0gXCIgfCBcIikge1xuICAgICAgICByZXR1cm4gYXJyYXkubWFwKCh2YWwpID0+ICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiID8gYCcke3ZhbH0nYCA6IHZhbCkpLmpvaW4oc2VwYXJhdG9yKTtcbiAgICB9XG4gICAgdXRpbC5qb2luVmFsdWVzID0gam9pblZhbHVlcztcbiAgICB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlciA9IChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbn0pKHV0aWwgfHwgKHV0aWwgPSB7fSkpO1xuZXhwb3J0IHZhciBvYmplY3RVdGlsO1xuKGZ1bmN0aW9uIChvYmplY3RVdGlsKSB7XG4gICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyA9IChmaXJzdCwgc2Vjb25kKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5maXJzdCxcbiAgICAgICAgICAgIC4uLnNlY29uZCwgLy8gc2Vjb25kIG92ZXJ3cml0ZXMgZmlyc3RcbiAgICAgICAgfTtcbiAgICB9O1xufSkob2JqZWN0VXRpbCB8fCAob2JqZWN0VXRpbCA9IHt9KSk7XG5leHBvcnQgY29uc3QgWm9kUGFyc2VkVHlwZSA9IHV0aWwuYXJyYXlUb0VudW0oW1xuICAgIFwic3RyaW5nXCIsXG4gICAgXCJuYW5cIixcbiAgICBcIm51bWJlclwiLFxuICAgIFwiaW50ZWdlclwiLFxuICAgIFwiZmxvYXRcIixcbiAgICBcImJvb2xlYW5cIixcbiAgICBcImRhdGVcIixcbiAgICBcImJpZ2ludFwiLFxuICAgIFwic3ltYm9sXCIsXG4gICAgXCJmdW5jdGlvblwiLFxuICAgIFwidW5kZWZpbmVkXCIsXG4gICAgXCJudWxsXCIsXG4gICAgXCJhcnJheVwiLFxuICAgIFwib2JqZWN0XCIsXG4gICAgXCJ1bmtub3duXCIsXG4gICAgXCJwcm9taXNlXCIsXG4gICAgXCJ2b2lkXCIsXG4gICAgXCJuZXZlclwiLFxuICAgIFwibWFwXCIsXG4gICAgXCJzZXRcIixcbl0pO1xuZXhwb3J0IGNvbnN0IGdldFBhcnNlZFR5cGUgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHQgPSB0eXBlb2YgZGF0YTtcbiAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkO1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5zdHJpbmc7XG4gICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0YSkgPyBab2RQYXJzZWRUeXBlLm5hbiA6IFpvZFBhcnNlZFR5cGUubnVtYmVyO1xuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuYm9vbGVhbjtcbiAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5mdW5jdGlvbjtcbiAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuYmlnaW50O1xuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5zeW1ib2w7XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuYXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLm51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS50aGVuICYmIHR5cGVvZiBkYXRhLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJiBkYXRhLmNhdGNoICYmIHR5cGVvZiBkYXRhLmNhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5wcm9taXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLm1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgU2V0ICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5zZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIERhdGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5kYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUub2JqZWN0O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUudW5rbm93bjtcbiAgICB9XG59O1xuIiwgImltcG9ydCB7IHV0aWwgfSBmcm9tIFwiLi9oZWxwZXJzL3V0aWwuanNcIjtcbmV4cG9ydCBjb25zdCBab2RJc3N1ZUNvZGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgICBcImludmFsaWRfdHlwZVwiLFxuICAgIFwiaW52YWxpZF9saXRlcmFsXCIsXG4gICAgXCJjdXN0b21cIixcbiAgICBcImludmFsaWRfdW5pb25cIixcbiAgICBcImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvclwiLFxuICAgIFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIsXG4gICAgXCJ1bnJlY29nbml6ZWRfa2V5c1wiLFxuICAgIFwiaW52YWxpZF9hcmd1bWVudHNcIixcbiAgICBcImludmFsaWRfcmV0dXJuX3R5cGVcIixcbiAgICBcImludmFsaWRfZGF0ZVwiLFxuICAgIFwiaW52YWxpZF9zdHJpbmdcIixcbiAgICBcInRvb19zbWFsbFwiLFxuICAgIFwidG9vX2JpZ1wiLFxuICAgIFwiaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXNcIixcbiAgICBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuICAgIFwibm90X2Zpbml0ZVwiLFxuXSk7XG5leHBvcnQgY29uc3QgcXVvdGVsZXNzSnNvbiA9IChvYmopID0+IHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcbiAgICByZXR1cm4ganNvbi5yZXBsYWNlKC9cIihbXlwiXSspXCI6L2csIFwiJDE6XCIpO1xufTtcbmV4cG9ydCBjbGFzcyBab2RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBnZXQgZXJyb3JzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc3N1ZXM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGlzc3Vlcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmlzc3VlcyA9IFtdO1xuICAgICAgICB0aGlzLmFkZElzc3VlID0gKHN1YikgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc3N1ZXMgPSBbLi4udGhpcy5pc3N1ZXMsIHN1Yl07XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkSXNzdWVzID0gKHN1YnMgPSBbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc3N1ZXMgPSBbLi4udGhpcy5pc3N1ZXMsIC4uLnN1YnNdO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBhY3R1YWxQcm90byA9IG5ldy50YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIGFjdHVhbFByb3RvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX19wcm90b19fID0gYWN0dWFsUHJvdG87XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uYW1lID0gXCJab2RFcnJvclwiO1xuICAgICAgICB0aGlzLmlzc3VlcyA9IGlzc3VlcztcbiAgICB9XG4gICAgZm9ybWF0KF9tYXBwZXIpIHtcbiAgICAgICAgY29uc3QgbWFwcGVyID0gX21hcHBlciB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGlzc3VlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzc3VlLm1lc3NhZ2U7XG4gICAgICAgICAgICB9O1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgY29uc3QgcHJvY2Vzc0Vycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfdW5pb25cIikge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZS51bmlvbkVycm9ycy5tYXAocHJvY2Vzc0Vycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3JldHVybl90eXBlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKGlzc3VlLnJldHVyblR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9hcmd1bWVudHNcIikge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoaXNzdWUuYXJndW1lbnRzRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5wYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZEVycm9ycy5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VyciA9IGZpZWxkRXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgaXNzdWUucGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gaXNzdWUucGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1pbmFsID0gaSA9PT0gaXNzdWUucGF0aC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0eXBlb2YgZWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodHlwZW9mIGVsID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdCBlcnJvckFycmF5OiBhbnkgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGVycm9yQXJyYXkuX2Vycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCBlcnJvckFycmF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0Vycm9yKHRoaXMpO1xuICAgICAgICByZXR1cm4gZmllbGRFcnJvcnM7XG4gICAgfVxuICAgIHN0YXRpYyBhc3NlcnQodmFsdWUpIHtcbiAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBab2RFcnJvcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm90IGEgWm9kRXJyb3I6ICR7dmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7XG4gICAgfVxuICAgIGdldCBtZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pc3N1ZXMsIHV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgICB9XG4gICAgZ2V0IGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gICAgfVxuICAgIGZsYXR0ZW4obWFwcGVyID0gKGlzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1FcnJvcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgdGhpcy5pc3N1ZXMpIHtcbiAgICAgICAgICAgIGlmIChzdWIucGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RFbCA9IHN1Yi5wYXRoWzBdO1xuICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW2ZpcnN0RWxdID0gZmllbGRFcnJvcnNbZmlyc3RFbF0gfHwgW107XG4gICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbZmlyc3RFbF0ucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JzLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGZvcm1FcnJvcnMsIGZpZWxkRXJyb3JzIH07XG4gICAgfVxuICAgIGdldCBmb3JtRXJyb3JzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGF0dGVuKCk7XG4gICAgfVxufVxuWm9kRXJyb3IuY3JlYXRlID0gKGlzc3VlcykgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IFpvZEVycm9yKGlzc3Vlcyk7XG4gICAgcmV0dXJuIGVycm9yO1xufTtcbiIsICJpbXBvcnQgeyBab2RJc3N1ZUNvZGUgfSBmcm9tIFwiLi4vWm9kRXJyb3IuanNcIjtcbmltcG9ydCB7IHV0aWwsIFpvZFBhcnNlZFR5cGUgfSBmcm9tIFwiLi4vaGVscGVycy91dGlsLmpzXCI7XG5jb25zdCBlcnJvck1hcCA9IChpc3N1ZSwgX2N0eCkgPT4ge1xuICAgIGxldCBtZXNzYWdlO1xuICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGU6XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiUmVxdWlyZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgRXhwZWN0ZWQgJHtpc3N1ZS5leHBlY3RlZH0sIHJlY2VpdmVkICR7aXNzdWUucmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWw6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgbGl0ZXJhbCB2YWx1ZSwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCwgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIpfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXM6XG4gICAgICAgICAgICBtZXNzYWdlID0gYFVucmVjb2duaXplZCBrZXkocykgaW4gb2JqZWN0OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dGA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLm9wdGlvbnMpfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLm9wdGlvbnMpfSwgcmVjZWl2ZWQgJyR7aXNzdWUucmVjZWl2ZWR9J2A7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHM6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGZ1bmN0aW9uIHJldHVybiB0eXBlYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZGF0ZWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmc6XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlzc3VlLnZhbGlkYXRpb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoXCJpbmNsdWRlc1wiIGluIGlzc3VlLnZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGluY2x1ZGUgXCIke2lzc3VlLnZhbGlkYXRpb24uaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlzc3VlLnZhbGlkYXRpb24ucG9zaXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgJHttZXNzYWdlfSBhdCBvbmUgb3IgbW9yZSBwb3NpdGlvbnMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7aXNzdWUudmFsaWRhdGlvbi5wb3NpdGlvbn1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFwic3RhcnRzV2l0aFwiIGluIGlzc3VlLnZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IHN0YXJ0IHdpdGggXCIke2lzc3VlLnZhbGlkYXRpb24uc3RhcnRzV2l0aH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFwiZW5kc1dpdGhcIiBpbiBpc3N1ZS52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dDogbXVzdCBlbmQgd2l0aCBcIiR7aXNzdWUudmFsaWRhdGlvbi5lbmRzV2l0aH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlLnZhbGlkYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnZhbGlkYXRpb24gIT09IFwicmVnZXhcIikge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCAke2lzc3VlLnZhbGlkYXRpb259YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkludmFsaWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS50b29fc21hbGw6XG4gICAgICAgICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgQXJyYXkgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBcImV4YWN0bHlcIiA6IGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBsZWFzdGAgOiBgbW9yZSB0aGFuYH0gJHtpc3N1ZS5taW5pbXVtfSBlbGVtZW50KHMpYDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBTdHJpbmcgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBcImV4YWN0bHlcIiA6IGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBsZWFzdGAgOiBgb3ZlcmB9ICR7aXNzdWUubWluaW11bX0gY2hhcmFjdGVyKHMpYDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHkgZXF1YWwgdG8gYCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYCA6IGBncmVhdGVyIHRoYW4gYH0ke2lzc3VlLm1pbmltdW19YDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHkgZXF1YWwgdG8gYCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYCA6IGBncmVhdGVyIHRoYW4gYH0ke2lzc3VlLm1pbmltdW19YDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiZGF0ZVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgRGF0ZSBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseSBlcXVhbCB0byBgIDogaXNzdWUuaW5jbHVzaXZlID8gYGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgIDogYGdyZWF0ZXIgdGhhbiBgfSR7bmV3IERhdGUoTnVtYmVyKGlzc3VlLm1pbmltdW0pKX1gO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkludmFsaWQgaW5wdXRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS50b29fYmlnOlxuICAgICAgICAgICAgaWYgKGlzc3VlLnR5cGUgPT09IFwiYXJyYXlcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHlgIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IG1vc3RgIDogYGxlc3MgdGhhbmB9ICR7aXNzdWUubWF4aW11bX0gZWxlbWVudChzKWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgU3RyaW5nIG11c3QgY29udGFpbiAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHlgIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IG1vc3RgIDogYHVuZGVyYH0gJHtpc3N1ZS5tYXhpbXVtfSBjaGFyYWN0ZXIocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgbGVzcyB0aGFuIG9yIGVxdWFsIHRvYCA6IGBsZXNzIHRoYW5gfSAke2lzc3VlLm1heGltdW19YDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBCaWdJbnQgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHlgIDogaXNzdWUuaW5jbHVzaXZlID8gYGxlc3MgdGhhbiBvciBlcXVhbCB0b2AgOiBgbGVzcyB0aGFuYH0gJHtpc3N1ZS5tYXhpbXVtfWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcImRhdGVcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYERhdGUgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHlgIDogaXNzdWUuaW5jbHVzaXZlID8gYHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0b2AgOiBgc21hbGxlciB0aGFuYH0gJHtuZXcgRGF0ZShOdW1iZXIoaXNzdWUubWF4aW11bSkpfWA7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmN1c3RvbTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dGA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludGVyc2VjdGlvbiByZXN1bHRzIGNvdWxkIG5vdCBiZSBtZXJnZWRgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2lzc3VlLm11bHRpcGxlT2Z9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5ub3RfZmluaXRlOlxuICAgICAgICAgICAgbWVzc2FnZSA9IFwiTnVtYmVyIG11c3QgYmUgZmluaXRlXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBfY3R4LmRlZmF1bHRFcnJvcjtcbiAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoaXNzdWUpO1xuICAgIH1cbiAgICByZXR1cm4geyBtZXNzYWdlIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZXJyb3JNYXA7XG4iLCAiaW1wb3J0IGRlZmF1bHRFcnJvck1hcCBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzXCI7XG5sZXQgb3ZlcnJpZGVFcnJvck1hcCA9IGRlZmF1bHRFcnJvck1hcDtcbmV4cG9ydCB7IGRlZmF1bHRFcnJvck1hcCB9O1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWFwKG1hcCkge1xuICAgIG92ZXJyaWRlRXJyb3JNYXAgPSBtYXA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNYXAoKSB7XG4gICAgcmV0dXJuIG92ZXJyaWRlRXJyb3JNYXA7XG59XG4iLCAiaW1wb3J0IHsgZ2V0RXJyb3JNYXAgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgZGVmYXVsdEVycm9yTWFwIGZyb20gXCIuLi9sb2NhbGVzL2VuLmpzXCI7XG5leHBvcnQgY29uc3QgbWFrZUlzc3VlID0gKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgcGF0aCwgZXJyb3JNYXBzLCBpc3N1ZURhdGEgfSA9IHBhcmFtcztcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi5wYXRoLCAuLi4oaXNzdWVEYXRhLnBhdGggfHwgW10pXTtcbiAgICBjb25zdCBmdWxsSXNzdWUgPSB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgfTtcbiAgICBpZiAoaXNzdWVEYXRhLm1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaXNzdWVEYXRhLFxuICAgICAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc3N1ZURhdGEubWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgY29uc3QgbWFwcyA9IGVycm9yTWFwc1xuICAgICAgICAuZmlsdGVyKChtKSA9PiAhIW0pXG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5yZXZlcnNlKCk7XG4gICAgZm9yIChjb25zdCBtYXAgb2YgbWFwcykge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXAoZnVsbElzc3VlLCB7IGRhdGEsIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlIH0pLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBFTVBUWV9QQVRIID0gW107XG5leHBvcnQgZnVuY3Rpb24gYWRkSXNzdWVUb0NvbnRleHQoY3R4LCBpc3N1ZURhdGEpIHtcbiAgICBjb25zdCBvdmVycmlkZU1hcCA9IGdldEVycm9yTWFwKCk7XG4gICAgY29uc3QgaXNzdWUgPSBtYWtlSXNzdWUoe1xuICAgICAgICBpc3N1ZURhdGE6IGlzc3VlRGF0YSxcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICBlcnJvck1hcHM6IFtcbiAgICAgICAgICAgIGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLCAvLyBjb250ZXh0dWFsIGVycm9yIG1hcCBpcyBmaXJzdCBwcmlvcml0eVxuICAgICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLCAvLyB0aGVuIHNjaGVtYS1ib3VuZCBtYXAgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgICBvdmVycmlkZU1hcCwgLy8gdGhlbiBnbG9iYWwgb3ZlcnJpZGUgbWFwXG4gICAgICAgICAgICBvdmVycmlkZU1hcCA9PT0gZGVmYXVsdEVycm9yTWFwID8gdW5kZWZpbmVkIDogZGVmYXVsdEVycm9yTWFwLCAvLyB0aGVuIGdsb2JhbCBkZWZhdWx0IG1hcFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICB9KTtcbiAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcbn1cbmV4cG9ydCBjbGFzcyBQYXJzZVN0YXR1cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBcInZhbGlkXCI7XG4gICAgfVxuICAgIGRpcnR5KCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gXCJ2YWxpZFwiKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFwiZGlydHlcIjtcbiAgICB9XG4gICAgYWJvcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBcImFib3J0ZWRcIjtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHRzKSB7XG4gICAgICAgIGNvbnN0IGFycmF5VmFsdWUgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAocy5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIGFycmF5VmFsdWUucHVzaChzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGFycmF5VmFsdWUgfTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIG1lcmdlT2JqZWN0QXN5bmMoc3RhdHVzLCBwYWlycykge1xuICAgICAgICBjb25zdCBzeW5jUGFpcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgIHN5bmNQYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgc3luY1BhaXJzKTtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsT2JqZWN0ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwYWlyO1xuICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKGtleS52YWx1ZSAhPT0gXCJfX3Byb3RvX19cIiAmJiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSBcInVuZGVmaW5lZFwiIHx8IHBhaXIuYWx3YXlzU2V0KSkge1xuICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGZpbmFsT2JqZWN0IH07XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IElOVkFMSUQgPSBPYmplY3QuZnJlZXplKHtcbiAgICBzdGF0dXM6IFwiYWJvcnRlZFwiLFxufSk7XG5leHBvcnQgY29uc3QgRElSVFkgPSAodmFsdWUpID0+ICh7IHN0YXR1czogXCJkaXJ0eVwiLCB2YWx1ZSB9KTtcbmV4cG9ydCBjb25zdCBPSyA9ICh2YWx1ZSkgPT4gKHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlIH0pO1xuZXhwb3J0IGNvbnN0IGlzQWJvcnRlZCA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCI7XG5leHBvcnQgY29uc3QgaXNEaXJ0eSA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJkaXJ0eVwiO1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoeCkgPT4geC5zdGF0dXMgPT09IFwidmFsaWRcIjtcbmV4cG9ydCBjb25zdCBpc0FzeW5jID0gKHgpID0+IHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHggaW5zdGFuY2VvZiBQcm9taXNlO1xuIiwgImV4cG9ydCB2YXIgZXJyb3JVdGlsO1xuKGZ1bmN0aW9uIChlcnJvclV0aWwpIHtcbiAgICBlcnJvclV0aWwuZXJyVG9PYmogPSAobWVzc2FnZSkgPT4gdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2UgfSA6IG1lc3NhZ2UgfHwge307XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQ6XG4gICAgZXJyb3JVdGlsLnRvU3RyaW5nID0gKG1lc3NhZ2UpID0+IHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59KShlcnJvclV0aWwgfHwgKGVycm9yVXRpbCA9IHt9KSk7XG4iLCAiaW1wb3J0IHsgWm9kRXJyb3IsIFpvZElzc3VlQ29kZSwgfSBmcm9tIFwiLi9ab2RFcnJvci5qc1wiO1xuaW1wb3J0IHsgZGVmYXVsdEVycm9yTWFwLCBnZXRFcnJvck1hcCB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgZXJyb3JVdGlsIH0gZnJvbSBcIi4vaGVscGVycy9lcnJvclV0aWwuanNcIjtcbmltcG9ydCB7IERJUlRZLCBJTlZBTElELCBPSywgUGFyc2VTdGF0dXMsIGFkZElzc3VlVG9Db250ZXh0LCBpc0Fib3J0ZWQsIGlzQXN5bmMsIGlzRGlydHksIGlzVmFsaWQsIG1ha2VJc3N1ZSwgfSBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC5qc1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSwgZ2V0UGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC5qc1wiO1xuY2xhc3MgUGFyc2VJbnB1dExhenlQYXRoIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHZhbHVlLCBwYXRoLCBrZXkpIHtcbiAgICAgICAgdGhpcy5fY2FjaGVkUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5kYXRhID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgfVxuICAgIGdldCBwYXRoKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9rZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsIC4uLnRoaXMuX2tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwgdGhpcy5fa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkUGF0aDtcbiAgICB9XG59XG5jb25zdCBoYW5kbGVSZXN1bHQgPSAoY3R4LCByZXN1bHQpID0+IHtcbiAgICBpZiAoaXNWYWxpZChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFjdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihjdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3I7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn07XG5mdW5jdGlvbiBwcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICghcGFyYW1zKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgeyBlcnJvck1hcCwgaW52YWxpZF90eXBlX2Vycm9yLCByZXF1aXJlZF9lcnJvciwgZGVzY3JpcHRpb24gfSA9IHBhcmFtcztcbiAgICBpZiAoZXJyb3JNYXAgJiYgKGludmFsaWRfdHlwZV9lcnJvciB8fCByZXF1aXJlZF9lcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCB1c2UgXCJpbnZhbGlkX3R5cGVfZXJyb3JcIiBvciBcInJlcXVpcmVkX2Vycm9yXCIgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gZXJyb3IgbWFwLmApO1xuICAgIH1cbiAgICBpZiAoZXJyb3JNYXApXG4gICAgICAgIHJldHVybiB7IGVycm9yTWFwOiBlcnJvck1hcCwgZGVzY3JpcHRpb24gfTtcbiAgICBjb25zdCBjdXN0b21NYXAgPSAoaXNzLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgeyBtZXNzYWdlIH0gPSBwYXJhbXM7XG4gICAgICAgIGlmIChpc3MuY29kZSA9PT0gXCJpbnZhbGlkX2VudW1fdmFsdWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzcy5jb2RlICE9PSBcImludmFsaWRfdHlwZVwiKVxuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgICAgICByZXR1cm4geyBtZXNzYWdlOiBtZXNzYWdlID8/IGludmFsaWRfdHlwZV9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgfTtcbiAgICByZXR1cm4geyBlcnJvck1hcDogY3VzdG9tTWFwLCBkZXNjcmlwdGlvbiB9O1xufVxuZXhwb3J0IGNsYXNzIFpvZFR5cGUge1xuICAgIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgX2dldFR5cGUoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNlZFR5cGUoaW5wdXQuZGF0YSk7XG4gICAgfVxuICAgIF9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KSB7XG4gICAgICAgIHJldHVybiAoY3R4IHx8IHtcbiAgICAgICAgICAgIGNvbW1vbjogaW5wdXQucGFyZW50LmNvbW1vbixcbiAgICAgICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG4gICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcbiAgICAgICAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogbmV3IFBhcnNlU3RhdHVzKCksXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgICAgICAgICAgZGF0YTogaW5wdXQuZGF0YSxcbiAgICAgICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICAgICAgcGF0aDogaW5wdXQucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9wYXJzZVN5bmMoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfcGFyc2VBc3luYyhpbnB1dCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZShpbnB1dCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG4gICAgcGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2FmZVBhcnNlKGRhdGEsIHBhcmFtcyk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICAgICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICAgIH1cbiAgICBzYWZlUGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6IHBhcmFtcz8uYXN5bmMgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2VTeW5jKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgXCJ+dmFsaWRhdGVcIihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6ICEhdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlU3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZChyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoXCJlbmNvdW50ZXJlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3R4LmNvbW1vbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VBc3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KS50aGVuKChyZXN1bHQpID0+IGlzVmFsaWQocmVzdWx0KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zYWZlUGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICB9XG4gICAgYXN5bmMgc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWF5YmVBc3luY1Jlc3VsdCA9IHRoaXMuX3BhcnNlKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoaXNBc3luYyhtYXliZUFzeW5jUmVzdWx0KSA/IG1heWJlQXN5bmNSZXN1bHQgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgcmVmaW5lKGNoZWNrLCBtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IGdldElzc3VlUHJvcGVydGllcyA9ICh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgbWVzc2FnZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KCh2YWwsIGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2sodmFsKTtcbiAgICAgICAgICAgIGNvbnN0IHNldEVycm9yID0gKCkgPT4gY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICAgICAgICAgIC4uLmdldElzc3VlUHJvcGVydGllcyh2YWwpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVmaW5lbWVudChjaGVjaywgcmVmaW5lbWVudERhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKHZhbCwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoZWNrKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjdHguYWRkSXNzdWUodHlwZW9mIHJlZmluZW1lbnREYXRhID09PSBcImZ1bmN0aW9uXCIgPyByZWZpbmVtZW50RGF0YSh2YWwsIGN0eCkgOiByZWZpbmVtZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfcmVmaW5lbWVudChyZWZpbmVtZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMsXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgICAgICBlZmZlY3Q6IHsgdHlwZTogXCJyZWZpbmVtZW50XCIsIHJlZmluZW1lbnQgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN1cGVyUmVmaW5lKHJlZmluZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQocmVmaW5lbWVudCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRlZikge1xuICAgICAgICAvKiogQWxpYXMgb2Ygc2FmZVBhcnNlQXN5bmMgKi9cbiAgICAgICAgdGhpcy5zcGEgPSB0aGlzLnNhZmVQYXJzZUFzeW5jO1xuICAgICAgICB0aGlzLl9kZWYgPSBkZWY7XG4gICAgICAgIHRoaXMucGFyc2UgPSB0aGlzLnBhcnNlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlID0gdGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5wYXJzZUFzeW5jID0gdGhpcy5wYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlQXN5bmMgPSB0aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc3BhID0gdGhpcy5zcGEuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZWZpbmUgPSB0aGlzLnJlZmluZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlZmluZW1lbnQgPSB0aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zdXBlclJlZmluZSA9IHRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vcHRpb25hbCA9IHRoaXMub3B0aW9uYWwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsYWJsZSA9IHRoaXMubnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsaXNoID0gdGhpcy5udWxsaXNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuYXJyYXkgPSB0aGlzLmFycmF5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IHRoaXMucHJvbWlzZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9yID0gdGhpcy5vci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmFuZCA9IHRoaXMuYW5kLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5icmFuZCA9IHRoaXMuYnJhbmQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0ID0gdGhpcy5kZWZhdWx0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuY2F0Y2ggPSB0aGlzLmNhdGNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVzY3JpYmUgPSB0aGlzLmRlc2NyaWJlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucGlwZSA9IHRoaXMucGlwZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmlzTnVsbGFibGUgPSB0aGlzLmlzTnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pc09wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXNbXCJ+c3RhbmRhcmRcIl0gPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICAgICAgdmVuZG9yOiBcInpvZFwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChkYXRhKSA9PiB0aGlzW1wifnZhbGlkYXRlXCJdKGRhdGEpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBvcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE51bGxhYmxlLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsaXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5udWxsYWJsZSgpLm9wdGlvbmFsKCk7XG4gICAgfVxuICAgIGFycmF5KCkge1xuICAgICAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xuICAgIH1cbiAgICBwcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gWm9kUHJvbWlzZS5jcmVhdGUodGhpcywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgb3Iob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBab2RVbmlvbi5jcmVhdGUoW3RoaXMsIG9wdGlvbl0sIHRoaXMuX2RlZik7XG4gICAgfVxuICAgIGFuZChpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZSh0aGlzLCBpbmNvbWluZywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlzLl9kZWYpLFxuICAgICAgICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgICAgICAgZWZmZWN0OiB7IHR5cGU6IFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVmYXVsdChkZWYpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgICAgIGlubmVyVHlwZTogdGhpcyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJyYW5kKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJyYW5kZWQoe1xuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCcmFuZGVkLFxuICAgICAgICAgICAgdHlwZTogdGhpcyxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhdGNoKGRlZikge1xuICAgICAgICBjb25zdCBjYXRjaFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RDYXRjaCh7XG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHRoaXMuX2RlZiksXG4gICAgICAgICAgICBpbm5lclR5cGU6IHRoaXMsXG4gICAgICAgICAgICBjYXRjaFZhbHVlOiBjYXRjaFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXNjcmliZShkZXNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCBUaGlzID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIG5ldyBUaGlzKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcGlwZSh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIFpvZFBpcGVsaW5lLmNyZWF0ZSh0aGlzLCB0YXJnZXQpO1xuICAgIH1cbiAgICByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZFJlYWRvbmx5LmNyZWF0ZSh0aGlzKTtcbiAgICB9XG4gICAgaXNPcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKHVuZGVmaW5lZCkuc3VjY2VzcztcbiAgICB9XG4gICAgaXNOdWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3M7XG4gICAgfVxufVxuY29uc3QgY3VpZFJlZ2V4ID0gL15jW15cXHMtXXs4LH0kL2k7XG5jb25zdCBjdWlkMlJlZ2V4ID0gL15bMC05YS16XSskLztcbmNvbnN0IHVsaWRSZWdleCA9IC9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvaTtcbi8vIGNvbnN0IHV1aWRSZWdleCA9XG4vLyAgIC9eKFthLWYwLTldezh9LVthLWYwLTldezR9LVsxLTVdW2EtZjAtOV17M30tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG5jb25zdCB1dWlkUmVnZXggPSAvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvaTtcbmNvbnN0IG5hbm9pZFJlZ2V4ID0gL15bYS16MC05Xy1dezIxfSQvaTtcbmNvbnN0IGp3dFJlZ2V4ID0gL15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokLztcbmNvbnN0IGR1cmF0aW9uUmVnZXggPSAvXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvO1xuLy8gZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDYxODEvMTU1MDE1NVxuLy8gb2xkIHZlcnNpb246IHRvbyBzbG93LCBkaWRuJ3Qgc3VwcG9ydCB1bmljb2RlXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID0gL14oKChbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKFxcLihbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKSopfCgoXFx4MjIpKCgoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oKFtcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXXxcXHgyMXxbXFx4MjMtXFx4NWJdfFtcXHg1ZC1cXHg3ZV18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfChcXFxcKFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkpKigoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oXFx4MjIpKSlAKCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpJC9pO1xuLy9vbGQgZW1haWwgcmVnZXhcbi8vIGNvbnN0IGVtYWlsUmVnZXggPSAvXigoW148PigpW1xcXS4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKD8hLSkoW148PigpW1xcXS4sOzpcXHNAXCJdK1xcLikrW148PigpW1xcXS4sOzpcXHNAXCJdezEsfSlbXi08PigpW1xcXS4sOzpcXHNAXCJdJC9pO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFxcXCJdKykqKXwoXFxcIi4rXFxcIikpQCgoXFxbKCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFxdKXwoXFxbSVB2NjooKFthLWYwLTldezEsNH06KXs3fXw6OihbYS1mMC05XXsxLDR9Oil7MCw2fXwoW2EtZjAtOV17MSw0fTopezF9OihbYS1mMC05XXsxLDR9Oil7MCw1fXwoW2EtZjAtOV17MSw0fTopezJ9OihbYS1mMC05XXsxLDR9Oil7MCw0fXwoW2EtZjAtOV17MSw0fTopezN9OihbYS1mMC05XXsxLDR9Oil7MCwzfXwoW2EtZjAtOV17MSw0fTopezR9OihbYS1mMC05XXsxLDR9Oil7MCwyfXwoW2EtZjAtOV17MSw0fTopezV9OihbYS1mMC05XXsxLDR9Oil7MCwxfSkoW2EtZjAtOV17MSw0fXwoKCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSlcXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpXFxdKXwoW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKSooXFwuW0EtWmEtel17Mix9KSspKSQvO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtekEtWjAtOVxcLlxcIVxcI1xcJFxcJVxcJlxcJ1xcKlxcK1xcL1xcPVxcP1xcXlxcX1xcYFxce1xcfFxcfVxcflxcLV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87XG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oPzpbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkqXCIpQCg/Oig/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKSQvaTtcbmNvbnN0IGVtYWlsUmVnZXggPSAvXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWjAtOV8nK1xcLVxcLl0qKVtBLVowLTlfKy1dQChbQS1aMC05XVtBLVowLTlcXC1dKlxcLikrW0EtWl17Mix9JC9pO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtejAtOS4hIyQlJlx1MjAxOSorLz0/Xl9ge3x9fi1dK0BbYS16MC05LV0rKD86XFwuW2EtejAtOVxcLV0rKSokL2k7XG4vLyBmcm9tIGh0dHBzOi8vdGhla2V2aW5zY290dC5jb20vZW1vamlzLWluLWphdmFzY3JpcHQvI3dyaXRpbmctYS1yZWd1bGFyLWV4cHJlc3Npb25cbmNvbnN0IF9lbW9qaVJlZ2V4ID0gYF4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskYDtcbmxldCBlbW9qaVJlZ2V4O1xuLy8gZmFzdGVyLCBzaW1wbGVyLCBzYWZlclxuY29uc3QgaXB2NFJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLztcbmNvbnN0IGlwdjRDaWRyUmVnZXggPSAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLztcbi8vIGNvbnN0IGlwdjZSZWdleCA9XG4vLyAvXigoW2EtZjAtOV17MSw0fTopezd9fDo6KFthLWYwLTldezEsNH06KXswLDZ9fChbYS1mMC05XXsxLDR9Oil7MX06KFthLWYwLTldezEsNH06KXswLDV9fChbYS1mMC05XXsxLDR9Oil7Mn06KFthLWYwLTldezEsNH06KXswLDR9fChbYS1mMC05XXsxLDR9Oil7M306KFthLWYwLTldezEsNH06KXswLDN9fChbYS1mMC05XXsxLDR9Oil7NH06KFthLWYwLTldezEsNH06KXswLDJ9fChbYS1mMC05XXsxLDR9Oil7NX06KFthLWYwLTldezEsNH06KXswLDF9KShbYS1mMC05XXsxLDR9fCgoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKSkkLztcbmNvbnN0IGlwdjZSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKSQvO1xuY29uc3QgaXB2NkNpZHJSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC87XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83ODYwMzkyL2RldGVybWluZS1pZi1zdHJpbmctaXMtaW4tYmFzZTY0LXVzaW5nLWphdmFzY3JpcHRcbmNvbnN0IGJhc2U2NFJlZ2V4ID0gL14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvO1xuLy8gaHR0cHM6Ly9iYXNlNjQuZ3VydS9zdGFuZGFyZHMvYmFzZTY0dXJsXG5jb25zdCBiYXNlNjR1cmxSZWdleCA9IC9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLztcbi8vIHNpbXBsZVxuLy8gY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYFxcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9YDtcbi8vIG5vIGxlYXAgeWVhciB2YWxpZGF0aW9uXG4vLyBjb25zdCBkYXRlUmVnZXhTb3VyY2UgPSBgXFxcXGR7NH0tKCgwWzEzNTc4XXwxMHwxMiktMzF8KDBbMTMtOV18MVswLTJdKS0zMHwoMFsxLTldfDFbMC0yXSktKDBbMS05XXwxXFxcXGR8MlxcXFxkKSlgO1xuLy8gd2l0aCBsZWFwIHllYXIgdmFsaWRhdGlvblxuY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYCgoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKWA7XG5jb25zdCBkYXRlUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkYXRlUmVnZXhTb3VyY2V9JGApO1xuZnVuY3Rpb24gdGltZVJlZ2V4U291cmNlKGFyZ3MpIHtcbiAgICBsZXQgc2Vjb25kc1JlZ2V4U291cmNlID0gYFswLTVdXFxcXGRgO1xuICAgIGlmIChhcmdzLnByZWNpc2lvbikge1xuICAgICAgICBzZWNvbmRzUmVnZXhTb3VyY2UgPSBgJHtzZWNvbmRzUmVnZXhTb3VyY2V9XFxcXC5cXFxcZHske2FyZ3MucHJlY2lzaW9ufX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChhcmdzLnByZWNpc2lvbiA9PSBudWxsKSB7XG4gICAgICAgIHNlY29uZHNSZWdleFNvdXJjZSA9IGAke3NlY29uZHNSZWdleFNvdXJjZX0oXFxcXC5cXFxcZCspP2A7XG4gICAgfVxuICAgIGNvbnN0IHNlY29uZHNRdWFudGlmaWVyID0gYXJncy5wcmVjaXNpb24gPyBcIitcIiA6IFwiP1wiOyAvLyByZXF1aXJlIHNlY29uZHMgaWYgcHJlY2lzaW9uIGlzIG5vbnplcm9cbiAgICByZXR1cm4gYChbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkKDoke3NlY29uZHNSZWdleFNvdXJjZX0pJHtzZWNvbmRzUXVhbnRpZmllcn1gO1xufVxuZnVuY3Rpb24gdGltZVJlZ2V4KGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVJlZ2V4U291cmNlKGFyZ3MpfSRgKTtcbn1cbi8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzE0MzIzMVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lUmVnZXgoYXJncykge1xuICAgIGxldCByZWdleCA9IGAke2RhdGVSZWdleFNvdXJjZX1UJHt0aW1lUmVnZXhTb3VyY2UoYXJncyl9YDtcbiAgICBjb25zdCBvcHRzID0gW107XG4gICAgb3B0cy5wdXNoKGFyZ3MubG9jYWwgPyBgWj9gIDogYFpgKTtcbiAgICBpZiAoYXJncy5vZmZzZXQpXG4gICAgICAgIG9wdHMucHVzaChgKFsrLV1cXFxcZHsyfTo/XFxcXGR7Mn0pYCk7XG4gICAgcmVnZXggPSBgJHtyZWdleH0oJHtvcHRzLmpvaW4oXCJ8XCIpfSlgO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtyZWdleH0kYCk7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSVAoaXAsIHZlcnNpb24pIHtcbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjRcIiB8fCAhdmVyc2lvbikgJiYgaXB2NFJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjZcIiB8fCAhdmVyc2lvbikgJiYgaXB2NlJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSldUKGp3dCwgYWxnKSB7XG4gICAgaWYgKCFqd3RSZWdleC50ZXN0KGp3dCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbaGVhZGVyXSA9IGp3dC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghaGVhZGVyKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBDb252ZXJ0IGJhc2U2NHVybCB0byBiYXNlNjRcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gaGVhZGVyXG4gICAgICAgICAgICAucmVwbGFjZSgvLS9nLCBcIitcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fL2csIFwiL1wiKVxuICAgICAgICAgICAgLnBhZEVuZChoZWFkZXIubGVuZ3RoICsgKCg0IC0gKGhlYWRlci5sZW5ndGggJSA0KSkgJSA0KSwgXCI9XCIpO1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gSlNPTi5wYXJzZShhdG9iKGJhc2U2NCkpO1xuICAgICAgICBpZiAodHlwZW9mIGRlY29kZWQgIT09IFwib2JqZWN0XCIgfHwgZGVjb2RlZCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKFwidHlwXCIgaW4gZGVjb2RlZCAmJiBkZWNvZGVkPy50eXAgIT09IFwiSldUXCIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVjb2RlZC5hbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhbGcgJiYgZGVjb2RlZC5hbGcgIT09IGFsZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzVmFsaWRDaWRyKGlwLCB2ZXJzaW9uKSB7XG4gICAgaWYgKCh2ZXJzaW9uID09PSBcInY0XCIgfHwgIXZlcnNpb24pICYmIGlwdjRDaWRyUmVnZXgudGVzdChpcCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodmVyc2lvbiA9PT0gXCJ2NlwiIHx8ICF2ZXJzaW9uKSAmJiBpcHY2Q2lkclJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgY2xhc3MgWm9kU3RyaW5nIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gU3RyaW5nKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN0cmluZyxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBsZXQgY3R4ID0gdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoIDwgY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJsZW5ndGhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29CaWcgfHwgdG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbWFpbFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlbWFpbFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZW1vamlcIikge1xuICAgICAgICAgICAgICAgIGlmICghZW1vamlSZWdleCkge1xuICAgICAgICAgICAgICAgICAgICBlbW9qaVJlZ2V4ID0gbmV3IFJlZ0V4cChfZW1vamlSZWdleCwgXCJ1XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWVtb2ppUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImVtb2ppXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1dWlkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXV1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwidXVpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibmFub2lkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbm9pZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJuYW5vaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImN1aWRcIikge1xuICAgICAgICAgICAgICAgIGlmICghY3VpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJjdWlkMlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjdWlkMlJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidWxpZFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1bGlkUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInVybFwiKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbnB1dC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwicmVnZXhcIikge1xuICAgICAgICAgICAgICAgIGNoZWNrLnJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdFJlc3VsdCA9IGNoZWNrLnJlZ2V4LnRlc3QoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwicmVnZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRyaW1cIikge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBpbnB1dC5kYXRhLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiaW5jbHVkZXNcIikge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGF0YS5pbmNsdWRlcyhjaGVjay52YWx1ZSwgY2hlY2sucG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgaW5jbHVkZXM6IGNoZWNrLnZhbHVlLCBwb3NpdGlvbjogY2hlY2sucG9zaXRpb24gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRvTG93ZXJDYXNlXCIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5kYXRhID0gaW5wdXQuZGF0YS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0b1VwcGVyQ2FzZVwiKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwic3RhcnRzV2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dC5kYXRhLnN0YXJ0c1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgc3RhcnRzV2l0aDogY2hlY2sudmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImVuZHNXaXRoXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRhdGEuZW5kc1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgZW5kc1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRldGltZVJlZ2V4KGNoZWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJkYXRldGltZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRlUmVnZXg7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSB0aW1lUmVnZXgoY2hlY2spO1xuICAgICAgICAgICAgICAgIGlmICghcmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInRpbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImR1cmF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWR1cmF0aW9uUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImR1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJpcFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSVAoaW5wdXQuZGF0YSwgY2hlY2sudmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiand0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRKV1QoaW5wdXQuZGF0YSwgY2hlY2suYWxnKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImp3dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiY2lkclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ2lkcihpbnB1dC5kYXRhLCBjaGVjay52ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImNpZHJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImJhc2U2NFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFiYXNlNjRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJiYXNlNjR1cmxcIikge1xuICAgICAgICAgICAgICAgIGlmICghYmFzZTY0dXJsUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImJhc2U2NHVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICAgIH1cbiAgICBfcmVnZXgocmVnZXgsIHZhbGlkYXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmaW5lbWVudCgoZGF0YSkgPT4gcmVnZXgudGVzdChkYXRhKSwge1xuICAgICAgICAgICAgdmFsaWRhdGlvbixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbWFpbChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiZW1haWxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1cmwobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInVybFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGVtb2ppKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJlbW9qaVwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIHV1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInV1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBuYW5vaWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcIm5hbm9pZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGN1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImN1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBjdWlkMihtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY3VpZDJcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1bGlkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1bGlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgYmFzZTY0KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJiYXNlNjRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBiYXNlNjR1cmwobWVzc2FnZSkge1xuICAgICAgICAvLyBiYXNlNjR1cmwgZW5jb2RpbmcgaXMgYSBtb2RpZmljYXRpb24gb2YgYmFzZTY0IHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGluIFVSTHMgYW5kIGZpbGVuYW1lc1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGp3dChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiand0XCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgaXAob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImlwXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgY2lkcihvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY2lkclwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucykgfSk7XG4gICAgfVxuICAgIGRhdGV0aW1lKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAgICAgIGtpbmQ6IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImRhdGV0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgb2Zmc2V0OiBvcHRpb25zPy5vZmZzZXQgPz8gZmFsc2UsXG4gICAgICAgICAgICBsb2NhbDogb3B0aW9ucz8ubG9jYWwgPz8gZmFsc2UsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkYXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJkYXRlXCIsIG1lc3NhZ2UgfSk7XG4gICAgfVxuICAgIHRpbWUob3B0aW9ucykge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnM/Lm1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZHVyYXRpb24obWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImR1cmF0aW9uXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgcmVnZXgocmVnZXgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwicmVnZXhcIixcbiAgICAgICAgICAgIHJlZ2V4OiByZWdleCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluY2x1ZGVzKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImluY2x1ZGVzXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucz8ucG9zaXRpb24sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGFydHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcInN0YXJ0c1dpdGhcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVuZHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImVuZHNXaXRoXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluTGVuZ3RoLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IG1pbkxlbmd0aCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogbWF4TGVuZ3RoLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGVuZ3RoKGxlbiwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJsZW5ndGhcIixcbiAgICAgICAgICAgIHZhbHVlOiBsZW4sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFcXVpdmFsZW50IHRvIGAubWluKDEpYFxuICAgICAqL1xuICAgIG5vbmVtcHR5KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKDEsIGVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSk7XG4gICAgfVxuICAgIHRyaW0oKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIHsga2luZDogXCJ0cmltXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b0xvd2VyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvTG93ZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b1VwcGVyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvVXBwZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgaXNEYXRldGltZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRldGltZVwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRlXCIpO1xuICAgIH1cbiAgICBnZXQgaXNUaW1lKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInRpbWVcIik7XG4gICAgfVxuICAgIGdldCBpc0R1cmF0aW9uKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImR1cmF0aW9uXCIpO1xuICAgIH1cbiAgICBnZXQgaXNFbWFpbCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJlbWFpbFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVVJMKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInVybFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRW1vamkoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1vamlcIik7XG4gICAgfVxuICAgIGdldCBpc1VVSUQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidXVpZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzTkFOT0lEKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcIm5hbm9pZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ1VJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNDVUlEMigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkMlwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVUxJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1bGlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNJUCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJpcFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ0lEUigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjaWRyXCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0XCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjR1cmwoKSB7XG4gICAgICAgIC8vIGJhc2U2NHVybCBlbmNvZGluZyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBiYXNlNjQgdGhhdCBjYW4gc2FmZWx5IGJlIHVzZWQgaW4gVVJMcyBhbmQgZmlsZW5hbWVzXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0dXJsXCIpO1xuICAgIH1cbiAgICBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhMZW5ndGgoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RTdHJpbmcuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmcsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTY2NDg0L3doeS1kb2VzLW1vZHVsdXMtb3BlcmF0b3ItcmV0dXJuLWZyYWN0aW9uYWwtbnVtYmVyLWluLWphdmFzY3JpcHQvMzE3MTEwMzQjMzE3MTEwMzRcbmZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBEZWNDb3VudCA9IChzdGVwLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5leHBvcnQgY2xhc3MgWm9kTnVtYmVyIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubWluID0gdGhpcy5ndGU7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5sdGU7XG4gICAgICAgIHRoaXMuc3RlcCA9IHRoaXMubXVsdGlwbGVPZjtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gTnVtYmVyKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVtYmVyKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm51bWJlcixcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcImludFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1dGlsLmlzSW50ZWdlcihpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IFwiZmxvYXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZsb2F0U2FmZVJlbWFpbmRlcihpbnB1dC5kYXRhLCBjaGVjay52YWx1ZSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZixcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlT2Y6IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZmluaXRlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUubm90X2Zpbml0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgZ3RlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBndCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGx0ZSh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHQodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBzZXRMaW1pdChraW5kLCB2YWx1ZSwgaW5jbHVzaXZlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW50KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiaW50XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmVnYXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbnBvc2l0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG11bHRpcGxlT2YodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibXVsdGlwbGVPZlwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmluaXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiZmluaXRlXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzYWZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pblZhbHVlKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhWYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1heCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KVxuICAgICAgICAgICAgICAgICAgICBtYXggPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgIH1cbiAgICBnZXQgaXNJbnQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiaW50XCIgfHwgKGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiICYmIHV0aWwuaXNJbnRlZ2VyKGNoLnZhbHVlKSkpO1xuICAgIH1cbiAgICBnZXQgaXNGaW5pdGUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJmaW5pdGVcIiB8fCBjaC5raW5kID09PSBcImludFwiIHx8IGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShtaW4pICYmIE51bWJlci5pc0Zpbml0ZShtYXgpO1xuICAgIH1cbn1cblpvZE51bWJlci5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcbiAgICAgICAgY29lcmNlOiBwYXJhbXM/LmNvZXJjZSB8fCBmYWxzZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RCaWdJbnQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5taW4gPSB0aGlzLmd0ZTtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmx0ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBCaWdJbnQoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dChpbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5iaWdpbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEgJSBjaGVjay52YWx1ZSAhPT0gQmlnSW50KDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgX2dldEludmFsaWRJbnB1dChpbnB1dCkge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJpZ2ludCxcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICBndGUodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGd0KHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHRlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBsdCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIHNldExpbWl0KGtpbmQsIHZhbHVlLCBpbmNsdXNpdmUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RCaWdJbnQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLmNoZWNrcyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZWdhdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25wb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogQmlnSW50KDApLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbXVsdGlwbGVPZih2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtdWx0aXBsZU9mXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBtaW5WYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RCaWdJbnQuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQmlnSW50KHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCaWdJbnQsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kQm9vbGVhbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgaW5wdXQuZGF0YSA9IEJvb2xlYW4oaW5wdXQuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kQm9vbGVhbi5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RCb29sZWFuKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuLFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlIHx8IGZhbHNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERhdGUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIGlucHV0LmRhdGEgPSBuZXcgRGF0ZShpbnB1dC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oaW5wdXQuZGF0YS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgbGV0IGN0eCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhLmdldFRpbWUoKSA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5nZXRUaW1lKCkgPiBjaGVjay52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKGlucHV0LmRhdGEuZ2V0VGltZSgpKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2FkZENoZWNrKGNoZWNrKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluRGF0ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBtaW5EYXRlLmdldFRpbWUoKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhEYXRlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgICAgIGxldCBtaW4gPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbiAhPSBudWxsID8gbmV3IERhdGUobWluKSA6IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXhEYXRlKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXggIT0gbnVsbCA/IG5ldyBEYXRlKG1heCkgOiBudWxsO1xuICAgIH1cbn1cblpvZERhdGUuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgfHwgZmFsc2UsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTeW1ib2wgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zeW1ib2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc3ltYm9sLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFN5bWJvbC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RTeW1ib2woe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN5bWJvbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmRlZmluZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFVuZGVmaW5lZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmRlZmluZWQoe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuZGVmaW5lZCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udWxsLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZE51bGwuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVsbCh7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RBbnkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgLy8gdG8gcHJldmVudCBpbnN0YW5jZXMgb2Ygb3RoZXIgY2xhc3NlcyBmcm9tIGV4dGVuZGluZyBab2RBbnkuIHRoaXMgY2F1c2VzIGlzc3VlcyB3aXRoIGNhdGNoYWxsIGluIFpvZE9iamVjdC5cbiAgICAgICAgdGhpcy5fYW55ID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RBbnkuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQW55KHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBbnksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVW5rbm93biBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAvLyByZXF1aXJlZFxuICAgICAgICB0aGlzLl91bmtub3duID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RVbmtub3duLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFVua25vd24oe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTmV2ZXIgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5uZXZlcixcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbn1cblpvZE5ldmVyLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5ldmVyKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROZXZlcixcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnZvaWQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kVm9pZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RWb2lkKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RWb2lkLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEFycmF5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4LCBzdGF0dXMgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuX2RlZjtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5leGFjdExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9vQmlnID0gY3R4LmRhdGEubGVuZ3RoID4gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjdHguZGF0YS5sZW5ndGggPCBkZWYuZXhhY3RMZW5ndGgudmFsdWU7XG4gICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHRvb0JpZyA/IFpvZElzc3VlQ29kZS50b29fYmlnIDogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogKHRvb1NtYWxsID8gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogKHRvb0JpZyA/IGRlZi5leGFjdExlbmd0aC52YWx1ZSA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5taW5MZW5ndGggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPCBkZWYubWluTGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGRlZi5taW5MZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5MZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLm1heExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA+IGRlZi5tYXhMZW5ndGgudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhMZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZi50eXBlLl9wYXJzZUFzeW5jKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpO1xuICAgICAgICAgICAgfSkpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVmLnR5cGUuX3BhcnNlU3luYyhuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZTtcbiAgICB9XG4gICAgbWluKG1pbkxlbmd0aCwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pbkxlbmd0aDogeyB2YWx1ZTogbWluTGVuZ3RoLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBtYXhMZW5ndGg6IHsgdmFsdWU6IG1heExlbmd0aCwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZW5ndGgobGVuLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgZXhhY3RMZW5ndGg6IHsgdmFsdWU6IGxlbiwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25lbXB0eShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbigxLCBtZXNzYWdlKTtcbiAgICB9XG59XG5ab2RBcnJheS5jcmVhdGUgPSAoc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICAgIG1heExlbmd0aDogbnVsbCxcbiAgICAgICAgZXhhY3RMZW5ndGg6IG51bGwsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBkZWVwUGFydGlhbGlmeShzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5zaGFwZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBzY2hlbWEuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi5zY2hlbWEuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZEFycmF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICAgICAgICB0eXBlOiBkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gWm9kT3B0aW9uYWwuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2ROdWxsYWJsZSkge1xuICAgICAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RUdXBsZSkge1xuICAgICAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKHNjaGVtYS5pdGVtcy5tYXAoKGl0ZW0pID0+IGRlZXBQYXJ0aWFsaWZ5KGl0ZW0pKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RPYmplY3QgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIEluIG1vc3QgY2FzZXMsIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCAtIHVua25vd24gcHJvcGVydGllcyBhcmUgbm93IHNpbGVudGx5IHN0cmlwcGVkLlxuICAgICAgICAgKiBJZiB5b3Ugd2FudCB0byBwYXNzIHRocm91Z2ggdW5rbm93biBwcm9wZXJ0aWVzLCB1c2UgYC5wYXNzdGhyb3VnaCgpYCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xuICAgICAgICAvLyBleHRlbmQ8XG4gICAgICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGUsXG4gICAgICAgIC8vICAgTmV3T3V0cHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIE91dHB1dF06IGsgZXh0ZW5kcyBrZXlvZiBBdWdtZW50YXRpb25cbiAgICAgICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfb3V0cHV0XCJdXG4gICAgICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgICAgICAvLyAgICAgICA/IE91dHB1dFtrXVxuICAgICAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgICAgICAvLyAgIH0+LFxuICAgICAgICAvLyAgIE5ld0lucHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIElucHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgICAgICAvLyAgICAgICA/IEF1Z21lbnRhdGlvbltrXVtcIl9pbnB1dFwiXVxuICAgICAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgICAgICAvLyAgICAgICA/IElucHV0W2tdXG4gICAgICAgIC8vICAgICAgIDogbmV2ZXI7XG4gICAgICAgIC8vICAgfT5cbiAgICAgICAgLy8gPihcbiAgICAgICAgLy8gICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgICAgICAvLyApOiBab2RPYmplY3Q8XG4gICAgICAgIC8vICAgZXh0ZW5kU2hhcGU8VCwgQXVnbWVudGF0aW9uPixcbiAgICAgICAgLy8gICBVbmtub3duS2V5cyxcbiAgICAgICAgLy8gICBDYXRjaGFsbCxcbiAgICAgICAgLy8gICBOZXdPdXRwdXQsXG4gICAgICAgIC8vICAgTmV3SW5wdXRcbiAgICAgICAgLy8gPiB7XG4gICAgICAgIC8vICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAvLyAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAvLyAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgIC8vICAgICAgIC4uLnRoaXMuX2RlZi5zaGFwZSgpLFxuICAgICAgICAvLyAgICAgICAuLi5hdWdtZW50YXRpb24sXG4gICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgLy8gICB9KSBhcyBhbnk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBgLmV4dGVuZGAgaW5zdGVhZFxuICAgICAgICAgKiAgKi9cbiAgICAgICAgdGhpcy5hdWdtZW50ID0gdGhpcy5leHRlbmQ7XG4gICAgfVxuICAgIF9nZXRDYWNoZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYWNoZWQgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHRoaXMuX2RlZi5zaGFwZSgpO1xuICAgICAgICBjb25zdCBrZXlzID0gdXRpbC5vYmplY3RLZXlzKHNoYXBlKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0geyBzaGFwZSwga2V5cyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3QgeyBzaGFwZSwga2V5czogc2hhcGVLZXlzIH0gPSB0aGlzLl9nZXRDYWNoZWQoKTtcbiAgICAgICAgY29uc3QgZXh0cmFLZXlzID0gW107XG4gICAgICAgIGlmICghKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyICYmIHRoaXMuX2RlZi51bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHNoYXBlS2V5cykge1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsaWRhdG9yID0gc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBrZXlWYWxpZGF0b3IuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICAgICAgICAgIGFsd2F5c1NldDoga2V5IGluIGN0eC5kYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XG4gICAgICAgICAgICBjb25zdCB1bmtub3duS2V5cyA9IHRoaXMuX2RlZi51bmtub3duS2V5cztcbiAgICAgICAgICAgIGlmICh1bmtub3duS2V5cyA9PT0gXCJwYXNzdGhyb3VnaFwiKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGN0eC5kYXRhW2tleV0gfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodW5rbm93bktleXMgPT09IFwic3RyaWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzOiBleHRyYUtleXMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh1bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJ1biBjYXRjaGFsbCB2YWxpZGF0aW9uXG4gICAgICAgICAgICBjb25zdCBjYXRjaGFsbCA9IHRoaXMuX2RlZi5jYXRjaGFsbDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRjaGFsbC5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIHZhbHVlLCBjdHgucGF0aCwga2V5KSAvLywgY3R4LmNoaWxkKGtleSksIHZhbHVlLCBnZXRQYXJzZWRUeXBlKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN5bmNQYWlycyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwYWlyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3luY1BhaXJzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoc3luY1BhaXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHN5bmNQYWlycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCk7XG4gICAgfVxuICAgIHN0cmljdChtZXNzYWdlKSB7XG4gICAgICAgIGVycm9yVXRpbC5lcnJUb09iajtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWFwOiAoaXNzdWUsIGN0eCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVycm9yID0gdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwidW5yZWNvZ25pemVkX2tleXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkubWVzc2FnZSA/PyBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdHJpcCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBhc3N0aHJvdWdoKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICB1bmtub3duS2V5czogXCJwYXNzdGhyb3VnaFwiLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gY29uc3QgQXVnbWVudEZhY3RvcnkgPVxuICAgIC8vICAgPERlZiBleHRlbmRzIFpvZE9iamVjdERlZj4oZGVmOiBEZWYpID0+XG4gICAgLy8gICA8QXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIC8vICAgICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgIC8vICAgKTogWm9kT2JqZWN0PFxuICAgIC8vICAgICBleHRlbmRTaGFwZTxSZXR1cm5UeXBlPERlZltcInNoYXBlXCJdPiwgQXVnbWVudGF0aW9uPixcbiAgICAvLyAgICAgRGVmW1widW5rbm93bktleXNcIl0sXG4gICAgLy8gICAgIERlZltcImNhdGNoYWxsXCJdXG4gICAgLy8gICA+ID0+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgIC8vICAgICAgIC4uLmRlZixcbiAgICAvLyAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAvLyAgICAgICAgIC4uLmRlZi5zaGFwZSgpLFxuICAgIC8vICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICB9KSBhcyBhbnk7XG4gICAgLy8gICB9O1xuICAgIGV4dGVuZChhdWdtZW50YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLnNoYXBlKCksXG4gICAgICAgICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmlvciB0byB6b2RAMS4wLjEyIHRoZXJlIHdhcyBhIGJ1ZyBpbiB0aGVcbiAgICAgKiBpbmZlcnJlZCB0eXBlIG9mIG1lcmdlZCBvYmplY3RzLiBQbGVhc2VcbiAgICAgKiB1cGdyYWRlIGlmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGlzc3Vlcy5cbiAgICAgKi9cbiAgICBtZXJnZShtZXJnaW5nKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAgICAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgICAgICAuLi5tZXJnaW5nLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH1cbiAgICAvLyBtZXJnZTxcbiAgICAvLyAgIEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0LFxuICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgSW5jb21pbmdbXCJzaGFwZVwiXSxcbiAgICAvLyAgIE5ld091dHB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgT3V0cHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgIC8vICAgICAgID8gQXVnbWVudGF0aW9uW2tdW1wiX291dHB1dFwiXVxuICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgIC8vICAgICAgID8gT3V0cHV0W2tdXG4gICAgLy8gICAgICAgOiBuZXZlcjtcbiAgICAvLyAgIH0sXG4gICAgLy8gICBOZXdJbnB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgSW5wdXRdOiBrIGV4dGVuZHMga2V5b2YgQXVnbWVudGF0aW9uXG4gICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfaW5wdXRcIl1cbiAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgIC8vICAgICAgID8gSW5wdXRba11cbiAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgIC8vICAgfVxuICAgIC8vID4oXG4gICAgLy8gICBtZXJnaW5nOiBJbmNvbWluZ1xuICAgIC8vICk6IFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl0sXG4gICAgLy8gICBOZXdPdXRwdXQsXG4gICAgLy8gICBOZXdJbnB1dFxuICAgIC8vID4ge1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIHNldEtleShrZXksIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdWdtZW50KHsgW2tleV06IHNjaGVtYSB9KTtcbiAgICB9XG4gICAgLy8gbWVyZ2U8SW5jb21pbmcgZXh0ZW5kcyBBbnlab2RPYmplY3Q+KFxuICAgIC8vICAgbWVyZ2luZzogSW5jb21pbmdcbiAgICAvLyApOiAvL1pvZE9iamVjdDxUICYgSW5jb21pbmdbXCJfc2hhcGVcIl0sIFVua25vd25LZXlzLCBDYXRjaGFsbD4gPSAobWVyZ2luZykgPT4ge1xuICAgIC8vIFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl1cbiAgICAvLyA+IHtcbiAgICAvLyAgIC8vIGNvbnN0IG1lcmdlZFNoYXBlID0gb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyhcbiAgICAvLyAgIC8vICAgdGhpcy5fZGVmLnNoYXBlKCksXG4gICAgLy8gICAvLyAgIG1lcmdpbmcuX2RlZi5zaGFwZSgpXG4gICAgLy8gICAvLyApO1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIGNhdGNoYWxsKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNhdGNoYWxsOiBpbmRleCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBpY2sobWFzaykge1xuICAgICAgICBjb25zdCBzaGFwZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB1dGlsLm9iamVjdEtleXMobWFzaykpIHtcbiAgICAgICAgICAgIGlmIChtYXNrW2tleV0gJiYgdGhpcy5zaGFwZVtrZXldKSB7XG4gICAgICAgICAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbWl0KG1hc2spIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBpZiAoIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IHNoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBkZWVwUGFydGlhbCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZXBQYXJ0aWFsaWZ5KHRoaXMpO1xuICAgIH1cbiAgICBwYXJ0aWFsKG1hc2spIHtcbiAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGlmIChtYXNrICYmICFtYXNrW2tleV0pIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWEub3B0aW9uYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXF1aXJlZChtYXNrKSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSkge1xuICAgICAgICAgICAgaWYgKG1hc2sgJiYgIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RmllbGQgPSBmaWVsZFNjaGVtYTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZCA9IG5ld0ZpZWxkLl9kZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gbmV3RmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAga2V5b2YoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVab2RFbnVtKHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSk7XG4gICAgfVxufVxuWm9kT2JqZWN0LmNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIHVua25vd25LZXlzOiBcInN0cmlwXCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3Quc3RyaWN0Q3JlYXRlID0gKHNoYXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3QubGF6eWNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2RlZi5vcHRpb25zO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXN1bHRzKHJlc3VsdHMpIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBmaXJzdCBpc3N1ZS1mcmVlIHZhbGlkYXRpb24gaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBpc3N1ZXMgZnJvbSBkaXJ0eSBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5yZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXR1cm4gaW52YWxpZFxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiBuZXcgWm9kRXJyb3IocmVzdWx0LmN0eC5jb21tb24uaXNzdWVzKSk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbixcbiAgICAgICAgICAgICAgICB1bmlvbkVycm9ycyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRDdHggPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBhd2FpdCBvcHRpb24uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2hpbGRDdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjdHg6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSkudGhlbihoYW5kbGVSZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBkaXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3R4ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiICYmICFkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBkaXJ0eSA9IHsgcmVzdWx0LCBjdHg6IGNoaWxkQ3R4IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEN0eC5jb21tb24uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLmRpcnR5LmN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlydHkucmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSBpc3N1ZXMubWFwKChpc3N1ZXMpID0+IG5ldyBab2RFcnJvcihpc3N1ZXMpKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uLFxuICAgICAgICAgICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbn1cblpvZFVuaW9uLmNyZWF0ZSA9ICh0eXBlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICAgIG9wdGlvbnM6IHR5cGVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmNvbnN0IGdldERpc2NyaW1pbmF0b3IgPSAodHlwZSkgPT4ge1xuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGF6eSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnNjaGVtYSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RFZmZlY3RzKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuaW5uZXJUeXBlKCkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGl0ZXJhbCkge1xuICAgICAgICByZXR1cm4gW3R5cGUudmFsdWVdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kRW51bSkge1xuICAgICAgICByZXR1cm4gdHlwZS5vcHRpb25zO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTmF0aXZlRW51bSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgICByZXR1cm4gdXRpbC5vYmplY3RWYWx1ZXModHlwZS5lbnVtKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZERlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS5fZGVmLmlubmVyVHlwZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RVbmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbCkge1xuICAgICAgICByZXR1cm4gW251bGxdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kT3B0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWQsIC4uLmdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSldO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbGFibGUpIHtcbiAgICAgICAgcmV0dXJuIFtudWxsLCAuLi5nZXREaXNjcmltaW5hdG9yKHR5cGUudW53cmFwKCkpXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZEJyYW5kZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RSZWFkb25seSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnVud3JhcCgpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZENhdGNoKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuX2RlZi5pbm5lclR5cGUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn07XG5leHBvcnQgY2xhc3MgWm9kRGlzY3JpbWluYXRlZFVuaW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSB0aGlzLmRpc2NyaW1pbmF0b3I7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZSA9IGN0eC5kYXRhW2Rpc2NyaW1pbmF0b3JdO1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnNNYXAuZ2V0KGRpc2NyaW1pbmF0b3JWYWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IEFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSksXG4gICAgICAgICAgICAgICAgcGF0aDogW2Rpc2NyaW1pbmF0b3JdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGlzY3JpbWluYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kaXNjcmltaW5hdG9yO1xuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbiAgICBnZXQgb3B0aW9uc01hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zTWFwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY29uc3RydWN0b3Igb2YgdGhlIGRpc2NyaW1pbmF0ZWQgdW5pb24gc2NoZW1hLiBJdHMgYmVoYXZpb3VyIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSBub3JtYWwgei51bmlvbigpIGNvbnN0cnVjdG9yLlxuICAgICAqIEhvd2V2ZXIsIGl0IG9ubHkgYWxsb3dzIGEgdW5pb24gb2Ygb2JqZWN0cywgYWxsIG9mIHdoaWNoIG5lZWQgdG8gc2hhcmUgYSBkaXNjcmltaW5hdG9yIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IG11c3RcbiAgICAgKiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIG9iamVjdCBpbiB0aGUgdW5pb24uXG4gICAgICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgdGhlIG5hbWUgb2YgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdHlwZXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHNjaGVtYXNcbiAgICAgKiBAcGFyYW0gcGFyYW1zXG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShkaXNjcmltaW5hdG9yLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICAgICAgLy8gR2V0IGFsbCB0aGUgdmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3B0aW9uc01hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgLy8gdHJ5IHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZXMgPSBnZXREaXNjcmltaW5hdG9yKHR5cGUuc2hhcGVbZGlzY3JpbWluYXRvcl0pO1xuICAgICAgICAgICAgaWYgKCFkaXNjcmltaW5hdG9yVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQSBkaXNjcmltaW5hdG9yIHZhbHVlIGZvciBrZXkgXFxgJHtkaXNjcmltaW5hdG9yfVxcYCBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHNjaGVtYSBvcHRpb25zYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRpc2NyaW1pbmF0b3JWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc01hcC5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY3JpbWluYXRvciBwcm9wZXJ0eSAke1N0cmluZyhkaXNjcmltaW5hdG9yKX0gaGFzIGR1cGxpY2F0ZSB2YWx1ZSAke1N0cmluZyh2YWx1ZSl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAuc2V0KHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9uc01hcCxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIGNvbnN0IGFUeXBlID0gZ2V0UGFyc2VkVHlwZShhKTtcbiAgICBjb25zdCBiVHlwZSA9IGdldFBhcnNlZFR5cGUoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYVR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhiKTtcbiAgICAgICAgY29uc3Qgc2hhcmVkS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhhKS5maWx0ZXIoKGtleSkgPT4gYktleXMuaW5kZXhPZihrZXkpICE9PSAtMSk7XG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHsgLi4uYSwgLi4uYiB9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld09ialtrZXldID0gc2hhcmVkVmFsdWUuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3T2JqIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gW107XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUEgPSBhW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CID0gYltpbmRleF07XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGl0ZW1BLCBpdGVtQik7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiYgK2EgPT09ICtiKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kSW50ZXJzZWN0aW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGhhbmRsZVBhcnNlZCA9IChwYXJzZWRMZWZ0LCBwYXJzZWRSaWdodCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIW1lcmdlZC52YWxpZCkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBtZXJnZWQuZGF0YSB9O1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IGhhbmRsZVBhcnNlZChsZWZ0LCByaWdodCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZCh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgIH0pLCB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5ab2RJbnRlcnNlY3Rpb24uY3JlYXRlID0gKGxlZnQsIHJpZ2h0LCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEludGVyc2VjdGlvbih7XG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RJbnRlcnNlY3Rpb24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyB0eXBlIFpvZFR1cGxlSXRlbXMgPSBbWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXTtcbmV4cG9ydCBjbGFzcyBab2RUdXBsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYXJyYXksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICBtaW5pbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN0ID0gdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgIGlmICghcmVzdCAmJiBjdHguZGF0YS5sZW5ndGggPiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi5jdHguZGF0YV1cbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5fZGVmLml0ZW1zW2l0ZW1JbmRleF0gfHwgdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWEuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaXRlbUluZGV4KSk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAhIXgpOyAvLyBmaWx0ZXIgbnVsbHNcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBpdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcbiAgICB9XG4gICAgcmVzdChyZXN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgcmVzdCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuWm9kVHVwbGUuY3JlYXRlID0gKHNjaGVtYXMsIHBhcmFtcykgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWFzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYXMgdG8gei50dXBsZShbIC4uLiBdKVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBab2RUdXBsZSh7XG4gICAgICAgIGl0ZW1zOiBzY2hlbWFzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlLFxuICAgICAgICByZXN0OiBudWxsLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZFJlY29yZCBleHRlbmRzIFpvZFR5cGUge1xuICAgIGdldCBrZXlTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFpcnMgPSBbXTtcbiAgICAgICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdHguZGF0YSkge1xuICAgICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwga2V5KSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGN0eC5kYXRhW2tleV0sIGN0eC5wYXRoLCBrZXkpKSxcbiAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyhzdGF0dXMsIHBhaXJzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgIH1cbiAgICBzdGF0aWMgY3JlYXRlKGZpcnN0LCBzZWNvbmQsIHRoaXJkKSB7XG4gICAgICAgIGlmIChzZWNvbmQgaW5zdGFuY2VvZiBab2RUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICAgICAga2V5VHlwZTogZmlyc3QsXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlOiBzZWNvbmQsXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlyZCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICBrZXlUeXBlOiBab2RTdHJpbmcuY3JlYXRlKCksXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IGZpcnN0LFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHNlY29uZCksXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RNYXAgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQga2V5U2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmtleVR5cGU7XG4gICAgfVxuICAgIGdldCB2YWx1ZVNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubWFwKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm1hcCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleVR5cGUgPSB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSBbLi4uY3R4LmRhdGEuZW50cmllcygpXS5tYXAoKFtrZXksIHZhbHVlXSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwgW2luZGV4LCBcImtleVwiXSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIFtpbmRleCwgXCJ2YWx1ZVwiXSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxNYXAuc2V0KGtleS52YWx1ZSwgdmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICB9XG4gICAgfVxufVxuWm9kTWFwLmNyZWF0ZSA9IChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTWFwKHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTZXQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnNldCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zZXQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG4gICAgICAgIGlmIChkZWYubWluU2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPCBkZWYubWluU2l6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluU2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5TaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5tYXhTaXplICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoY3R4LmRhdGEuc2l6ZSA+IGRlZi5tYXhTaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4U2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhTaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemVTZXQoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXQuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBwYXJzZWRTZXQgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFsuLi5jdHguZGF0YS52YWx1ZXMoKV0ubWFwKChpdGVtLCBpKSA9PiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpKTtcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChlbGVtZW50cykudGhlbigoZWxlbWVudHMpID0+IGZpbmFsaXplU2V0KGVsZW1lbnRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmluYWxpemVTZXQoZWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1pbihtaW5TaXplLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pblNpemU6IHsgdmFsdWU6IG1pblNpemUsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWF4KG1heFNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTZXQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgbWF4U2l6ZTogeyB2YWx1ZTogbWF4U2l6ZSwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaXplKHNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKHNpemUsIG1lc3NhZ2UpLm1heChzaXplLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgbm9uZW1wdHkobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSk7XG4gICAgfVxufVxuWm9kU2V0LmNyZWF0ZSA9ICh2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBtaW5TaXplOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBudWxsLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFNldCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RGdW5jdGlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlID0gdGhpcy5pbXBsZW1lbnQ7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzLCBlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VJc3N1ZSh7XG4gICAgICAgICAgICAgICAgZGF0YTogYXJncyxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcHM6IFtjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCwgY3R4LnNjaGVtYUVycm9yTWFwLCBnZXRFcnJvck1hcCgpLCBkZWZhdWx0RXJyb3JNYXBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICAgICAgICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNFcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VSZXR1cm5zSXNzdWUocmV0dXJucywgZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHJldHVybnMsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgZXJyb3JNYXBzOiBbY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIGN0eC5zY2hlbWFFcnJvck1hcCwgZ2V0RXJyb3JNYXAoKSwgZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoKHgpID0+ICEheCksXG4gICAgICAgICAgICAgICAgaXNzdWVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlLFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlRXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IGVycm9yTWFwOiBjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCB9O1xuICAgICAgICBjb25zdCBmbiA9IGN0eC5kYXRhO1xuICAgICAgICBpZiAodGhpcy5fZGVmLnJldHVybnMgaW5zdGFuY2VvZiBab2RQcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBXb3VsZCBsb3ZlIGEgd2F5IHRvIGF2b2lkIGRpc2FibGluZyB0aGlzIHJ1bGUsIGJ1dCB3ZSBuZWVkXG4gICAgICAgICAgICAvLyBhbiBhbGlhcyAodXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gd2FzIHdoYXQgY2F1c2VkIDI2NTEpLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICAgICAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gT0soYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihbXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IGF3YWl0IG1lLl9kZWYuYXJncy5wYXJzZUFzeW5jKGFyZ3MsIHBhcmFtcykuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZUFyZ3NJc3N1ZShhcmdzLCBlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJldHVybnMgPSBhd2FpdCBtZS5fZGVmLnJldHVybnMuX2RlZi50eXBlXG4gICAgICAgICAgICAgICAgICAgIC5wYXJzZUFzeW5jKHJlc3VsdCwgcGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIGUpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdvdWxkIGxvdmUgYSB3YXkgdG8gYXZvaWQgZGlzYWJsaW5nIHRoaXMgcnVsZSwgYnV0IHdlIG5lZWRcbiAgICAgICAgICAgIC8vIGFuIGFsaWFzICh1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB3YXMgd2hhdCBjYXVzZWQgMjY1MSkuXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICAgICAgICAgIGNvbnN0IG1lID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPSyhmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBtZS5fZGVmLmFyZ3Muc2FmZVBhcnNlKGFyZ3MsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlQXJnc0lzc3VlKGFyZ3MsIHBhcnNlZEFyZ3MuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MuZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IG1lLl9kZWYucmV0dXJucy5zYWZlUGFyc2UocmVzdWx0LCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBab2RFcnJvcihbbWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIHBhcnNlZFJldHVybnMuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRSZXR1cm5zLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJhbWV0ZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmFyZ3M7XG4gICAgfVxuICAgIHJldHVyblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYucmV0dXJucztcbiAgICB9XG4gICAgYXJncyguLi5pdGVtcykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGFyZ3M6IFpvZFR1cGxlLmNyZWF0ZShpdGVtcykucmVzdChab2RVbmtub3duLmNyZWF0ZSgpKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybnMocmV0dXJuVHlwZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHJldHVybnM6IHJldHVyblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbXBsZW1lbnQoZnVuYykge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XG4gICAgfVxuICAgIHN0cmljdEltcGxlbWVudChmdW5jKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZ1bmMgPSB0aGlzLnBhcnNlKGZ1bmMpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVkRnVuYztcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShhcmdzLCByZXR1cm5zLCBwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgICAgICBhcmdzOiAoYXJncyA/IGFyZ3MgOiBab2RUdXBsZS5jcmVhdGUoW10pLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkpLFxuICAgICAgICAgICAgcmV0dXJuczogcmV0dXJucyB8fCBab2RVbmtub3duLmNyZWF0ZSgpLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbixcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZExhenkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQgc2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGxhenlTY2hlbWEgPSB0aGlzLl9kZWYuZ2V0dGVyKCk7XG4gICAgICAgIHJldHVybiBsYXp5U2NoZW1hLl9wYXJzZSh7IGRhdGE6IGN0eC5kYXRhLCBwYXRoOiBjdHgucGF0aCwgcGFyZW50OiBjdHggfSk7XG4gICAgfVxufVxuWm9kTGF6eS5jcmVhdGUgPSAoZ2V0dGVyLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgICBnZXR0ZXI6IGdldHRlcixcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZExpdGVyYWwgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0LmRhdGEgIT09IHRoaXMuX2RlZi52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWwsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHRoaXMuX2RlZi52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZTtcbiAgICB9XG59XG5ab2RMaXRlcmFsLmNyZWF0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWwsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtKHZhbHVlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW0sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjbGFzcyBab2RFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQuZGF0YSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0gbmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyhpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbiAgICBnZXQgZW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGdldCBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcykge1xuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVmFsdWVzO1xuICAgIH1cbiAgICBnZXQgRW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGV4dHJhY3QodmFsdWVzLCBuZXdEZWYgPSB0aGlzLl9kZWYpIHtcbiAgICAgICAgcmV0dXJuIFpvZEVudW0uY3JlYXRlKHZhbHVlcywge1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgLi4ubmV3RGVmLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXhjbHVkZSh2YWx1ZXMsIG5ld0RlZiA9IHRoaXMuX2RlZikge1xuICAgICAgICByZXR1cm4gWm9kRW51bS5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhdmFsdWVzLmluY2x1ZGVzKG9wdCkpLCB7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICAuLi5uZXdEZWYsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblpvZEVudW0uY3JlYXRlID0gY3JlYXRlWm9kRW51bTtcbmV4cG9ydCBjbGFzcyBab2ROYXRpdmVFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVudW1WYWx1ZXMgPSB1dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nICYmIGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiB1dGlsLmpvaW5WYWx1ZXMoZXhwZWN0ZWRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IG5ldyBTZXQodXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUuaGFzKGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IHV0aWwub2JqZWN0VmFsdWVzKG5hdGl2ZUVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IGVudW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbn1cblpvZE5hdGl2ZUVudW0uY3JlYXRlID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROYXRpdmVFbnVtKHtcbiAgICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmF0aXZlRW51bSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RQcm9taXNlIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiYgY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2lmaWVkID0gY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUucHJvbWlzZSA/IGN0eC5kYXRhIDogUHJvbWlzZS5yZXNvbHZlKGN0eC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIE9LKHByb21pc2lmaWVkLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGRhdGEsIHtcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblpvZFByb21pc2UuY3JlYXRlID0gKHNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFByb21pc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kRWZmZWN0cyBleHRlbmRzIFpvZFR5cGUge1xuICAgIGlubmVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIHNvdXJjZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzXG4gICAgICAgICAgICA/IHRoaXMuX2RlZi5zY2hlbWEuc291cmNlVHlwZSgpXG4gICAgICAgICAgICA6IHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBlZmZlY3QgPSB0aGlzLl9kZWYuZWZmZWN0IHx8IG51bGw7XG4gICAgICAgIGNvbnN0IGNoZWNrQ3R4ID0ge1xuICAgICAgICAgICAgYWRkSXNzdWU6IChhcmcpID0+IHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZy5mYXRhbCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcGF0aCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhdGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBjaGVja0N0eC5hZGRJc3N1ZSA9IGNoZWNrQ3R4LmFkZElzc3VlLmJpbmQoY2hlY2tDdHgpO1xuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwicHJlcHJvY2Vzc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBlZmZlY3QudHJhbnNmb3JtKGN0eC5kYXRhLCBjaGVja0N0eCk7XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKGFzeW5jIChwcm9jZXNzZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERJUlRZKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShyZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcInJlZmluZW1lbnRcIikge1xuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVJlZmluZW1lbnQgPSAoYWNjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnJlZmluZW1lbnQoYWNjLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWRcbiAgICAgICAgICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGlubmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZVJlZmluZW1lbnQoaW5uZXIudmFsdWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwidHJhbnNmb3JtXCIpIHtcbiAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IHJlc3VsdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGJhc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGJhc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCkpLnRoZW4oKHJlc3VsdCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoZWZmZWN0KTtcbiAgICB9XG59XG5ab2RFZmZlY3RzLmNyZWF0ZSA9IChzY2hlbWEsIGVmZmVjdCwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgIGVmZmVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcblpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3MgPSAocHJlcHJvY2Vzcywgc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGVmZmVjdDogeyB0eXBlOiBcInByZXByb2Nlc3NcIiwgdHJhbnNmb3JtOiBwcmVwcm9jZXNzIH0sXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCB7IFpvZEVmZmVjdHMgYXMgWm9kVHJhbnNmb3JtZXIgfTtcbmV4cG9ydCBjbGFzcyBab2RPcHRpb25hbCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE9LKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICB9XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgICB9XG59XG5ab2RPcHRpb25hbC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsYWJsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPSyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoaW5wdXQpO1xuICAgIH1cbiAgICB1bndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZE51bGxhYmxlLmNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGxhYmxlKHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERlZmF1bHQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGxldCBkYXRhID0gY3R4LmRhdGE7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlRGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kRGVmYXVsdC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHlwZW9mIHBhcmFtcy5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgPyBwYXJhbXMuZGVmYXVsdCA6ICgpID0+IHBhcmFtcy5kZWZhdWx0LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZENhdGNoIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICAvLyBuZXdDdHggaXMgdXNlZCB0byBub3QgY29sbGVjdCBpc3N1ZXMgZnJvbSBpbm5lciB0eXBlcyBpbiBjdHhcbiAgICAgICAgY29uc3QgbmV3Q3R4ID0ge1xuICAgICAgICAgICAgLi4uY3R4LFxuICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe1xuICAgICAgICAgICAgZGF0YTogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICBwYXRoOiBuZXdDdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDoge1xuICAgICAgICAgICAgICAgIC4uLm5ld0N0eCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJ2YWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVzdWx0LnN0YXR1cyA9PT0gXCJ2YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGVycm9yKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBuZXdDdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBcInZhbGlkXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2RlZi5jYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW1vdmVDYXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kQ2F0Y2guY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQ2F0Y2goe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIGNhdGNoVmFsdWU6IHR5cGVvZiBwYXJhbXMuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IHBhcmFtcy5jYXRjaCA6ICgpID0+IHBhcmFtcy5jYXRjaCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROYU4gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5uYW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmFuLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxufVxuWm9kTmFOLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hTih7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IEJSQU5EID0gU3ltYm9sKFwiem9kX2JyYW5kXCIpO1xuZXhwb3J0IGNsYXNzIFpvZEJyYW5kZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjdHguZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RQaXBlbGluZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQXN5bmMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5SZXN1bHQgPSBhd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShpblJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluUmVzdWx0ID0gdGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJkaXJ0eVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5SZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYub3V0Ll9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYSwgYikge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFBpcGVsaW5lKHtcbiAgICAgICAgICAgIGluOiBhLFxuICAgICAgICAgICAgb3V0OiBiLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQaXBlbGluZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZFJlYWRvbmx5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICAgICAgY29uc3QgZnJlZXplID0gKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZSA9IE9iamVjdC5mcmVlemUoZGF0YS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzQXN5bmMocmVzdWx0KSA/IHJlc3VsdC50aGVuKChkYXRhKSA9PiBmcmVlemUoZGF0YSkpIDogZnJlZXplKHJlc3VsdCk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kUmVhZG9ubHkuY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kUmVhZG9ubHkoe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgei5jdXN0b20gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBjbGVhblBhcmFtcyhwYXJhbXMsIGRhdGEpIHtcbiAgICBjb25zdCBwID0gdHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGRhdGEpIDogdHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcGFyYW1zIH0gOiBwYXJhbXM7XG4gICAgY29uc3QgcDIgPSB0eXBlb2YgcCA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcCB9IDogcDtcbiAgICByZXR1cm4gcDI7XG59XG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKGNoZWNrLCBfcGFyYW1zID0ge30sIFxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICpcbiAqIFBhc3MgYGZhdGFsYCBpbnRvIHRoZSBwYXJhbXMgb2JqZWN0IGluc3RlYWQ6XG4gKlxuICogYGBgdHNcbiAqIHouc3RyaW5nKCkuY3VzdG9tKCh2YWwpID0+IHZhbC5sZW5ndGggPiA1LCB7IGZhdGFsOiBmYWxzZSB9KVxuICogYGBgXG4gKlxuICovXG5mYXRhbCkge1xuICAgIGlmIChjaGVjaylcbiAgICAgICAgcmV0dXJuIFpvZEFueS5jcmVhdGUoKS5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gY2hlY2soZGF0YSk7XG4gICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gci50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZmF0YWwgPSBwYXJhbXMuZmF0YWwgPz8gZmF0YWwgPz8gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIC4uLnBhcmFtcywgZmF0YWw6IF9mYXRhbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX2ZhdGFsID0gcGFyYW1zLmZhdGFsID8/IGZhdGFsID8/IHRydWU7XG4gICAgICAgICAgICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogXCJjdXN0b21cIiwgLi4ucGFyYW1zLCBmYXRhbDogX2ZhdGFsIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICByZXR1cm4gWm9kQW55LmNyZWF0ZSgpO1xufVxuZXhwb3J0IHsgWm9kVHlwZSBhcyBTY2hlbWEsIFpvZFR5cGUgYXMgWm9kU2NoZW1hIH07XG5leHBvcnQgY29uc3QgbGF0ZSA9IHtcbiAgICBvYmplY3Q6IFpvZE9iamVjdC5sYXp5Y3JlYXRlLFxufTtcbmV4cG9ydCB2YXIgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kO1xuKGZ1bmN0aW9uIChab2RGaXJzdFBhcnR5VHlwZUtpbmQpIHtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RTdHJpbmdcIl0gPSBcIlpvZFN0cmluZ1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bWJlclwiXSA9IFwiWm9kTnVtYmVyXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTmFOXCJdID0gXCJab2ROYU5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RCaWdJbnRcIl0gPSBcIlpvZEJpZ0ludFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJvb2xlYW5cIl0gPSBcIlpvZEJvb2xlYW5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REYXRlXCJdID0gXCJab2REYXRlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kU3ltYm9sXCJdID0gXCJab2RTeW1ib2xcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmRlZmluZWRcIl0gPSBcIlpvZFVuZGVmaW5lZFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bGxcIl0gPSBcIlpvZE51bGxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RBbnlcIl0gPSBcIlpvZEFueVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFVua25vd25cIl0gPSBcIlpvZFVua25vd25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROZXZlclwiXSA9IFwiWm9kTmV2ZXJcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RWb2lkXCJdID0gXCJab2RWb2lkXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQXJyYXlcIl0gPSBcIlpvZEFycmF5XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kT2JqZWN0XCJdID0gXCJab2RPYmplY3RcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmlvblwiXSA9IFwiWm9kVW5pb25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REaXNjcmltaW5hdGVkVW5pb25cIl0gPSBcIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEludGVyc2VjdGlvblwiXSA9IFwiWm9kSW50ZXJzZWN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVHVwbGVcIl0gPSBcIlpvZFR1cGxlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUmVjb3JkXCJdID0gXCJab2RSZWNvcmRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RNYXBcIl0gPSBcIlpvZE1hcFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFNldFwiXSA9IFwiWm9kU2V0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRnVuY3Rpb25cIl0gPSBcIlpvZEZ1bmN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTGF6eVwiXSA9IFwiWm9kTGF6eVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZExpdGVyYWxcIl0gPSBcIlpvZExpdGVyYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RFbnVtXCJdID0gXCJab2RFbnVtXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRWZmZWN0c1wiXSA9IFwiWm9kRWZmZWN0c1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE5hdGl2ZUVudW1cIl0gPSBcIlpvZE5hdGl2ZUVudW1cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RPcHRpb25hbFwiXSA9IFwiWm9kT3B0aW9uYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROdWxsYWJsZVwiXSA9IFwiWm9kTnVsbGFibGVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REZWZhdWx0XCJdID0gXCJab2REZWZhdWx0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQ2F0Y2hcIl0gPSBcIlpvZENhdGNoXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUHJvbWlzZVwiXSA9IFwiWm9kUHJvbWlzZVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJyYW5kZWRcIl0gPSBcIlpvZEJyYW5kZWRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RQaXBlbGluZVwiXSA9IFwiWm9kUGlwZWxpbmVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RSZWFkb25seVwiXSA9IFwiWm9kUmVhZG9ubHlcIjtcbn0pKFpvZEZpcnN0UGFydHlUeXBlS2luZCB8fCAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kID0ge30pKTtcbi8vIHJlcXVpcmVzIFRTIDQuNCtcbmNsYXNzIENsYXNzIHtcbiAgICBjb25zdHJ1Y3RvciguLi5fKSB7IH1cbn1cbmNvbnN0IGluc3RhbmNlT2ZUeXBlID0gKFxuLy8gY29uc3QgaW5zdGFuY2VPZlR5cGUgPSA8VCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG5jbHMsIHBhcmFtcyA9IHtcbiAgICBtZXNzYWdlOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pID0+IGN1c3RvbSgoZGF0YSkgPT4gZGF0YSBpbnN0YW5jZW9mIGNscywgcGFyYW1zKTtcbmNvbnN0IHN0cmluZ1R5cGUgPSBab2RTdHJpbmcuY3JlYXRlO1xuY29uc3QgbnVtYmVyVHlwZSA9IFpvZE51bWJlci5jcmVhdGU7XG5jb25zdCBuYW5UeXBlID0gWm9kTmFOLmNyZWF0ZTtcbmNvbnN0IGJpZ0ludFR5cGUgPSBab2RCaWdJbnQuY3JlYXRlO1xuY29uc3QgYm9vbGVhblR5cGUgPSBab2RCb29sZWFuLmNyZWF0ZTtcbmNvbnN0IGRhdGVUeXBlID0gWm9kRGF0ZS5jcmVhdGU7XG5jb25zdCBzeW1ib2xUeXBlID0gWm9kU3ltYm9sLmNyZWF0ZTtcbmNvbnN0IHVuZGVmaW5lZFR5cGUgPSBab2RVbmRlZmluZWQuY3JlYXRlO1xuY29uc3QgbnVsbFR5cGUgPSBab2ROdWxsLmNyZWF0ZTtcbmNvbnN0IGFueVR5cGUgPSBab2RBbnkuY3JlYXRlO1xuY29uc3QgdW5rbm93blR5cGUgPSBab2RVbmtub3duLmNyZWF0ZTtcbmNvbnN0IG5ldmVyVHlwZSA9IFpvZE5ldmVyLmNyZWF0ZTtcbmNvbnN0IHZvaWRUeXBlID0gWm9kVm9pZC5jcmVhdGU7XG5jb25zdCBhcnJheVR5cGUgPSBab2RBcnJheS5jcmVhdGU7XG5jb25zdCBvYmplY3RUeXBlID0gWm9kT2JqZWN0LmNyZWF0ZTtcbmNvbnN0IHN0cmljdE9iamVjdFR5cGUgPSBab2RPYmplY3Quc3RyaWN0Q3JlYXRlO1xuY29uc3QgdW5pb25UeXBlID0gWm9kVW5pb24uY3JlYXRlO1xuY29uc3QgZGlzY3JpbWluYXRlZFVuaW9uVHlwZSA9IFpvZERpc2NyaW1pbmF0ZWRVbmlvbi5jcmVhdGU7XG5jb25zdCBpbnRlcnNlY3Rpb25UeXBlID0gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZTtcbmNvbnN0IHR1cGxlVHlwZSA9IFpvZFR1cGxlLmNyZWF0ZTtcbmNvbnN0IHJlY29yZFR5cGUgPSBab2RSZWNvcmQuY3JlYXRlO1xuY29uc3QgbWFwVHlwZSA9IFpvZE1hcC5jcmVhdGU7XG5jb25zdCBzZXRUeXBlID0gWm9kU2V0LmNyZWF0ZTtcbmNvbnN0IGZ1bmN0aW9uVHlwZSA9IFpvZEZ1bmN0aW9uLmNyZWF0ZTtcbmNvbnN0IGxhenlUeXBlID0gWm9kTGF6eS5jcmVhdGU7XG5jb25zdCBsaXRlcmFsVHlwZSA9IFpvZExpdGVyYWwuY3JlYXRlO1xuY29uc3QgZW51bVR5cGUgPSBab2RFbnVtLmNyZWF0ZTtcbmNvbnN0IG5hdGl2ZUVudW1UeXBlID0gWm9kTmF0aXZlRW51bS5jcmVhdGU7XG5jb25zdCBwcm9taXNlVHlwZSA9IFpvZFByb21pc2UuY3JlYXRlO1xuY29uc3QgZWZmZWN0c1R5cGUgPSBab2RFZmZlY3RzLmNyZWF0ZTtcbmNvbnN0IG9wdGlvbmFsVHlwZSA9IFpvZE9wdGlvbmFsLmNyZWF0ZTtcbmNvbnN0IG51bGxhYmxlVHlwZSA9IFpvZE51bGxhYmxlLmNyZWF0ZTtcbmNvbnN0IHByZXByb2Nlc3NUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGVXaXRoUHJlcHJvY2VzcztcbmNvbnN0IHBpcGVsaW5lVHlwZSA9IFpvZFBpcGVsaW5lLmNyZWF0ZTtcbmNvbnN0IG9zdHJpbmcgPSAoKSA9PiBzdHJpbmdUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9udW1iZXIgPSAoKSA9PiBudW1iZXJUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9ib29sZWFuID0gKCkgPT4gYm9vbGVhblR5cGUoKS5vcHRpb25hbCgpO1xuZXhwb3J0IGNvbnN0IGNvZXJjZSA9IHtcbiAgICBzdHJpbmc6ICgoYXJnKSA9PiBab2RTdHJpbmcuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxuICAgIG51bWJlcjogKChhcmcpID0+IFpvZE51bWJlci5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgYm9vbGVhbjogKChhcmcpID0+IFpvZEJvb2xlYW4uY3JlYXRlKHtcbiAgICAgICAgLi4uYXJnLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgfSkpLFxuICAgIGJpZ2ludDogKChhcmcpID0+IFpvZEJpZ0ludC5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgZGF0ZTogKChhcmcpID0+IFpvZERhdGUuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxufTtcbmV4cG9ydCB7IGFueVR5cGUgYXMgYW55LCBhcnJheVR5cGUgYXMgYXJyYXksIGJpZ0ludFR5cGUgYXMgYmlnaW50LCBib29sZWFuVHlwZSBhcyBib29sZWFuLCBkYXRlVHlwZSBhcyBkYXRlLCBkaXNjcmltaW5hdGVkVW5pb25UeXBlIGFzIGRpc2NyaW1pbmF0ZWRVbmlvbiwgZWZmZWN0c1R5cGUgYXMgZWZmZWN0LCBlbnVtVHlwZSBhcyBlbnVtLCBmdW5jdGlvblR5cGUgYXMgZnVuY3Rpb24sIGluc3RhbmNlT2ZUeXBlIGFzIGluc3RhbmNlb2YsIGludGVyc2VjdGlvblR5cGUgYXMgaW50ZXJzZWN0aW9uLCBsYXp5VHlwZSBhcyBsYXp5LCBsaXRlcmFsVHlwZSBhcyBsaXRlcmFsLCBtYXBUeXBlIGFzIG1hcCwgbmFuVHlwZSBhcyBuYW4sIG5hdGl2ZUVudW1UeXBlIGFzIG5hdGl2ZUVudW0sIG5ldmVyVHlwZSBhcyBuZXZlciwgbnVsbFR5cGUgYXMgbnVsbCwgbnVsbGFibGVUeXBlIGFzIG51bGxhYmxlLCBudW1iZXJUeXBlIGFzIG51bWJlciwgb2JqZWN0VHlwZSBhcyBvYmplY3QsIG9ib29sZWFuLCBvbnVtYmVyLCBvcHRpb25hbFR5cGUgYXMgb3B0aW9uYWwsIG9zdHJpbmcsIHBpcGVsaW5lVHlwZSBhcyBwaXBlbGluZSwgcHJlcHJvY2Vzc1R5cGUgYXMgcHJlcHJvY2VzcywgcHJvbWlzZVR5cGUgYXMgcHJvbWlzZSwgcmVjb3JkVHlwZSBhcyByZWNvcmQsIHNldFR5cGUgYXMgc2V0LCBzdHJpY3RPYmplY3RUeXBlIGFzIHN0cmljdE9iamVjdCwgc3RyaW5nVHlwZSBhcyBzdHJpbmcsIHN5bWJvbFR5cGUgYXMgc3ltYm9sLCBlZmZlY3RzVHlwZSBhcyB0cmFuc2Zvcm1lciwgdHVwbGVUeXBlIGFzIHR1cGxlLCB1bmRlZmluZWRUeXBlIGFzIHVuZGVmaW5lZCwgdW5pb25UeXBlIGFzIHVuaW9uLCB1bmtub3duVHlwZSBhcyB1bmtub3duLCB2b2lkVHlwZSBhcyB2b2lkLCB9O1xuZXhwb3J0IGNvbnN0IE5FVkVSID0gSU5WQUxJRDtcbiIsICJpbXBvcnQgeyBnZXRSZWxhdGl2ZVBhdGggfSBmcm9tIFwiLi4vZ2V0UmVsYXRpdmVQYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbnlEZWYocmVmcykge1xuICAgIGlmIChyZWZzLnRhcmdldCAhPT0gXCJvcGVuQWlcIikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGFueURlZmluaXRpb25QYXRoID0gW1xuICAgICAgICAuLi5yZWZzLmJhc2VQYXRoLFxuICAgICAgICByZWZzLmRlZmluaXRpb25QYXRoLFxuICAgICAgICByZWZzLm9wZW5BaUFueVR5cGVOYW1lLFxuICAgIF07XG4gICAgcmVmcy5mbGFncy5oYXNSZWZlcmVuY2VkT3BlbkFpQW55VHlwZSA9IHRydWU7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJHJlZjogcmVmcy4kcmVmU3RyYXRlZ3kgPT09IFwicmVsYXRpdmVcIlxuICAgICAgICAgICAgPyBnZXRSZWxhdGl2ZVBhdGgoYW55RGVmaW5pdGlvblBhdGgsIHJlZnMuY3VycmVudFBhdGgpXG4gICAgICAgICAgICA6IGFueURlZmluaXRpb25QYXRoLmpvaW4oXCIvXCIpLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIH0gZnJvbSBcInpvZC92M1wiO1xuaW1wb3J0IHsgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJyYXlEZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgfTtcbiAgICBpZiAoZGVmLnR5cGU/Ll9kZWYgJiZcbiAgICAgICAgZGVmLnR5cGU/Ll9kZWY/LnR5cGVOYW1lICE9PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQW55KSB7XG4gICAgICAgIHJlcy5pdGVtcyA9IHBhcnNlRGVmKGRlZi50eXBlLl9kZWYsIHtcbiAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiaXRlbXNcIl0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGVmLm1pbkxlbmd0aCkge1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5JdGVtc1wiLCBkZWYubWluTGVuZ3RoLnZhbHVlLCBkZWYubWluTGVuZ3RoLm1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbiAgICBpZiAoZGVmLm1heExlbmd0aCkge1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhJdGVtc1wiLCBkZWYubWF4TGVuZ3RoLnZhbHVlLCBkZWYubWF4TGVuZ3RoLm1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbiAgICBpZiAoZGVmLmV4YWN0TGVuZ3RoKSB7XG4gICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1pbkl0ZW1zXCIsIGRlZi5leGFjdExlbmd0aC52YWx1ZSwgZGVmLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhJdGVtc1wiLCBkZWYuZXhhY3RMZW5ndGgudmFsdWUsIGRlZi5leGFjdExlbmd0aC5tZXNzYWdlLCByZWZzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsICJpbXBvcnQgeyBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzIH0gZnJvbSBcIi4uL2Vycm9yTWVzc2FnZXMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJpZ2ludERlZihkZWYsIHJlZnMpIHtcbiAgICBjb25zdCByZXMgPSB7XG4gICAgICAgIHR5cGU6IFwiaW50ZWdlclwiLFxuICAgICAgICBmb3JtYXQ6IFwiaW50NjRcIixcbiAgICB9O1xuICAgIGlmICghZGVmLmNoZWNrcylcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIGRlZi5jaGVja3MpIHtcbiAgICAgICAgc3dpdGNoIChjaGVjay5raW5kKSB7XG4gICAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWE3XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWluaW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJleGNsdXNpdmVNaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5leGNsdXNpdmVNaW5pbXVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibWF4XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWE3XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4aW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJleGNsdXNpdmVNYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5leGNsdXNpdmVNYXhpbXVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibXVsdGlwbGVPZlwiOlxuICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm11bHRpcGxlT2ZcIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQm9vbGVhbkRlZigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICB9O1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCcmFuZGVkRGVmKF9kZWYsIHJlZnMpIHtcbiAgICByZXR1cm4gcGFyc2VEZWYoX2RlZi50eXBlLl9kZWYsIHJlZnMpO1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2VDYXRjaERlZiA9IChkZWYsIHJlZnMpID0+IHtcbiAgICByZXR1cm4gcGFyc2VEZWYoZGVmLmlubmVyVHlwZS5fZGVmLCByZWZzKTtcbn07XG4iLCAiaW1wb3J0IHsgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEYXRlRGVmKGRlZiwgcmVmcywgb3ZlcnJpZGVEYXRlU3RyYXRlZ3kpIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IG92ZXJyaWRlRGF0ZVN0cmF0ZWd5ID8/IHJlZnMuZGF0ZVN0cmF0ZWd5O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0cmF0ZWd5KSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYW55T2Y6IHN0cmF0ZWd5Lm1hcCgoaXRlbSwgaSkgPT4gcGFyc2VEYXRlRGVmKGRlZiwgcmVmcywgaXRlbSkpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgY2FzZSBcImZvcm1hdDpkYXRlLXRpbWVcIjpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwiZGF0ZS10aW1lXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlIFwiZm9ybWF0OmRhdGVcIjpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwiZGF0ZVwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyRGF0ZVBhcnNlcihkZWYsIHJlZnMpO1xuICAgIH1cbn1cbmNvbnN0IGludGVnZXJEYXRlUGFyc2VyID0gKGRlZiwgcmVmcykgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1bml4LXRpbWVcIixcbiAgICB9O1xuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2hlY2sgb2YgZGVmLmNoZWNrcykge1xuICAgICAgICBzd2l0Y2ggKGNoZWNrLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJtaW5cIjpcbiAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCAvLyBUaGlzIGlzIGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgICAgIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1heGltdW1cIiwgY2hlY2sudmFsdWUsIC8vIFRoaXMgaXMgaW4gbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICAgICAgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURlZmF1bHREZWYoX2RlZiwgcmVmcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBhcnNlRGVmKF9kZWYuaW5uZXJUeXBlLl9kZWYsIHJlZnMpLFxuICAgICAgICBkZWZhdWx0OiBfZGVmLmRlZmF1bHRWYWx1ZSgpLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vYW55LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFZmZlY3RzRGVmKF9kZWYsIHJlZnMpIHtcbiAgICByZXR1cm4gcmVmcy5lZmZlY3RTdHJhdGVneSA9PT0gXCJpbnB1dFwiXG4gICAgICAgID8gcGFyc2VEZWYoX2RlZi5zY2hlbWEuX2RlZiwgcmVmcylcbiAgICAgICAgOiBwYXJzZUFueURlZihyZWZzKTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VFbnVtRGVmKGRlZikge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGVudW06IEFycmF5LmZyb20oZGVmLnZhbHVlcyksXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuY29uc3QgaXNKc29uU2NoZW1hN0FsbE9mVHlwZSA9ICh0eXBlKSA9PiB7XG4gICAgaWYgKFwidHlwZVwiIGluIHR5cGUgJiYgdHlwZS50eXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIFwiYWxsT2ZcIiBpbiB0eXBlO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUludGVyc2VjdGlvbkRlZihkZWYsIHJlZnMpIHtcbiAgICBjb25zdCBhbGxPZiA9IFtcbiAgICAgICAgcGFyc2VEZWYoZGVmLmxlZnQuX2RlZiwge1xuICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhbGxPZlwiLCBcIjBcIl0sXG4gICAgICAgIH0pLFxuICAgICAgICBwYXJzZURlZihkZWYucmlnaHQuX2RlZiwge1xuICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhbGxPZlwiLCBcIjFcIl0sXG4gICAgICAgIH0pLFxuICAgIF0uZmlsdGVyKCh4KSA9PiAhIXgpO1xuICAgIGxldCB1bmV2YWx1YXRlZFByb3BlcnRpZXMgPSByZWZzLnRhcmdldCA9PT0gXCJqc29uU2NoZW1hMjAxOS0wOVwiXG4gICAgICAgID8geyB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWVyZ2VkQWxsT2YgPSBbXTtcbiAgICAvLyBJZiBlaXRoZXIgb2YgdGhlIHNjaGVtYXMgaXMgYW4gYWxsT2YsIG1lcmdlIHRoZW0gaW50byBhIHNpbmdsZSBhbGxPZlxuICAgIGFsbE9mLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBpZiAoaXNKc29uU2NoZW1hN0FsbE9mVHlwZShzY2hlbWEpKSB7XG4gICAgICAgICAgICBtZXJnZWRBbGxPZi5wdXNoKC4uLnNjaGVtYS5hbGxPZik7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLnVuZXZhbHVhdGVkUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgb25lIG9mIHRoZSBzY2hlbWFzIGhhcyBubyB1bmV2YWx1YXRlZFByb3BlcnRpZXMgc2V0LFxuICAgICAgICAgICAgICAgIC8vIHRoZSBtZXJnZWQgc2NoZW1hIHNob3VsZCBhbHNvIGhhdmUgbm8gdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIHNldFxuICAgICAgICAgICAgICAgIHVuZXZhbHVhdGVkUHJvcGVydGllcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXN0ZWRTY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgICAgICBpZiAoXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiIGluIHNjaGVtYSAmJlxuICAgICAgICAgICAgICAgIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCAuLi5yZXN0IH0gPSBzY2hlbWE7XG4gICAgICAgICAgICAgICAgbmVzdGVkU2NoZW1hID0gcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEFzIHNvb24gYXMgb25lIG9mIHRoZSBzY2hlbWFzIGhhcyBhZGRpdGlvbmFsUHJvcGVydGllcyBzZXQgbm90IHRvIGZhbHNlLCB3ZSBhbGxvdyB1bmV2YWx1YXRlZFByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZXJnZWRBbGxPZi5wdXNoKG5lc3RlZFNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWVyZ2VkQWxsT2YubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgYWxsT2Y6IG1lcmdlZEFsbE9mLFxuICAgICAgICAgICAgLi4udW5ldmFsdWF0ZWRQcm9wZXJ0aWVzLFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpdGVyYWxEZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHR5cGVvZiBkZWYudmFsdWU7XG4gICAgaWYgKHBhcnNlZFR5cGUgIT09IFwiYmlnaW50XCIgJiZcbiAgICAgICAgcGFyc2VkVHlwZSAhPT0gXCJudW1iZXJcIiAmJlxuICAgICAgICBwYXJzZWRUeXBlICE9PSBcImJvb2xlYW5cIiAmJlxuICAgICAgICBwYXJzZWRUeXBlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheS5pc0FycmF5KGRlZi52YWx1ZSkgPyBcImFycmF5XCIgOiBcIm9iamVjdFwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogcGFyc2VkVHlwZSA9PT0gXCJiaWdpbnRcIiA/IFwiaW50ZWdlclwiIDogcGFyc2VkVHlwZSxcbiAgICAgICAgICAgIGVudW06IFtkZWYudmFsdWVdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBwYXJzZWRUeXBlID09PSBcImJpZ2ludFwiID8gXCJpbnRlZ2VyXCIgOiBwYXJzZWRUeXBlLFxuICAgICAgICBjb25zdDogZGVmLnZhbHVlLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5sZXQgZW1vamlSZWdleCA9IHVuZGVmaW5lZDtcbi8qKlxuICogR2VuZXJhdGVkIGZyb20gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm91bmQgaGVyZSBhcyBvZiAyMDI0LTA1LTIyOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kL2Jsb2IvbWFzdGVyL3NyYy90eXBlcy50cy5cbiAqXG4gKiBFeHByZXNzaW9ucyB3aXRoIC9pIGZsYWcgaGF2ZSBiZWVuIGNoYW5nZWQgYWNjb3JkaW5nbHkuXG4gKi9cbmV4cG9ydCBjb25zdCB6b2RQYXR0ZXJucyA9IHtcbiAgICAvKipcbiAgICAgKiBgY2Agd2FzIGNoYW5nZWQgdG8gYFtjQ11gIHRvIHJlcGxpY2F0ZSAvaSBmbGFnXG4gICAgICovXG4gICAgY3VpZDogL15bY0NdW15cXHMtXXs4LH0kLyxcbiAgICBjdWlkMjogL15bMC05YS16XSskLyxcbiAgICB1bGlkOiAvXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kLyxcbiAgICAvKipcbiAgICAgKiBgYS16YCB3YXMgYWRkZWQgdG8gcmVwbGljYXRlIC9pIGZsYWdcbiAgICAgKi9cbiAgICBlbWFpbDogL14oPyFcXC4pKD8hLipcXC5cXC4pKFthLXpBLVowLTlfJytcXC1cXC5dKilbYS16QS1aMC05XystXUAoW2EtekEtWjAtOV1bYS16QS1aMC05XFwtXSpcXC4pK1thLXpBLVpdezIsfSQvLFxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdGVkIGEgdmFsaWQgVW5pY29kZSBSZWdFeHBcbiAgICAgKlxuICAgICAqIExhemlseSBpbnN0YW50aWF0ZSBzaW5jZSB0aGlzIHR5cGUgb2YgcmVnZXggaXNuJ3Qgc3VwcG9ydGVkXG4gICAgICogaW4gYWxsIGVudnMgKGUuZy4gUmVhY3QgTmF0aXZlKS5cbiAgICAgKlxuICAgICAqIFNlZTpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvaXNzdWVzLzI0MzNcbiAgICAgKiBGaXggaW4gWm9kOlxuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9jb21taXQvOTM0MGZkNTFlNDg1NzZhNzVhZGM5MTliZmY2NWRiYzRhNWQ0Yzk5YlxuICAgICAqL1xuICAgIGVtb2ppOiAoKSA9PiB7XG4gICAgICAgIGlmIChlbW9qaVJlZ2V4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVtb2ppUmVnZXggPSBSZWdFeHAoXCJeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJFwiLCBcInVcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtb2ppUmVnZXg7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbnVzZWRcbiAgICAgKi9cbiAgICB1dWlkOiAvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvLFxuICAgIC8qKlxuICAgICAqIFVudXNlZFxuICAgICAqL1xuICAgIGlwdjQ6IC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sXG4gICAgaXB2NENpZHI6IC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKDNbMC0yXXxbMTJdP1swLTldKSQvLFxuICAgIC8qKlxuICAgICAqIFVudXNlZFxuICAgICAqL1xuICAgIGlwdjY6IC9eKChbYS1mMC05XXsxLDR9Oil7N318OjooW2EtZjAtOV17MSw0fTopezAsNn18KFthLWYwLTldezEsNH06KXsxfTooW2EtZjAtOV17MSw0fTopezAsNX18KFthLWYwLTldezEsNH06KXsyfTooW2EtZjAtOV17MSw0fTopezAsNH18KFthLWYwLTldezEsNH06KXszfTooW2EtZjAtOV17MSw0fTopezAsM318KFthLWYwLTldezEsNH06KXs0fTooW2EtZjAtOV17MSw0fTopezAsMn18KFthLWYwLTldezEsNH06KXs1fTooW2EtZjAtOV17MSw0fTopezAsMX0pKFthLWYwLTldezEsNH18KCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpKSQvLFxuICAgIGlwdjZDaWRyOiAvXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLFxuICAgIGJhc2U2NDogL14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvLFxuICAgIGJhc2U2NHVybDogL14oWzAtOWEtekEtWi1fXXs0fSkqKChbMC05YS16QS1aLV9dezJ9KD09KT8pfChbMC05YS16QS1aLV9dezN9KD0pPykpPyQvLFxuICAgIG5hbm9pZDogL15bYS16QS1aMC05Xy1dezIxfSQvLFxuICAgIGp3dDogL15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokLyxcbn07XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdHJpbmdEZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIH07XG4gICAgaWYgKGRlZi5jaGVja3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiBkZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNoZWNrLmtpbmQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1pbkxlbmd0aFwiLCB0eXBlb2YgcmVzLm1pbkxlbmd0aCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBNYXRoLm1heChyZXMubWluTGVuZ3RoLCBjaGVjay52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwibWF4XCI6XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1heExlbmd0aFwiLCB0eXBlb2YgcmVzLm1heExlbmd0aCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBNYXRoLm1pbihyZXMubWF4TGVuZ3RoLCBjaGVjay52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWZzLmVtYWlsU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtYXQ6ZW1haWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImVtYWlsXCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcm1hdDppZG4tZW1haWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImlkbi1lbWFpbFwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJwYXR0ZXJuOnpvZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5lbWFpbCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcInVyaVwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInV1aWRcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJ1dWlkXCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwicmVnZXhcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIGNoZWNrLnJlZ2V4LCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImN1aWRcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmN1aWQsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiY3VpZDJcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmN1aWQyLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0c1dpdGhcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIFJlZ0V4cChgXiR7ZXNjYXBlTGl0ZXJhbENoZWNrVmFsdWUoY2hlY2sudmFsdWUsIHJlZnMpfWApLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVuZHNXaXRoXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCBSZWdFeHAoYCR7ZXNjYXBlTGl0ZXJhbENoZWNrVmFsdWUoY2hlY2sudmFsdWUsIHJlZnMpfSRgKSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRldGltZVwiOlxuICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImRhdGUtdGltZVwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJkYXRlXCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcInRpbWVcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImR1cmF0aW9uXCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwibGVuZ3RoXCI6XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1pbkxlbmd0aFwiLCB0eXBlb2YgcmVzLm1pbkxlbmd0aCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBNYXRoLm1heChyZXMubWluTGVuZ3RoLCBjaGVjay52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhMZW5ndGhcIiwgdHlwZW9mIHJlcy5tYXhMZW5ndGggPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5taW4ocmVzLm1heExlbmd0aCwgY2hlY2sudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIFJlZ0V4cChlc2NhcGVMaXRlcmFsQ2hlY2tWYWx1ZShjaGVjay52YWx1ZSwgcmVmcykpLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJpcFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVjay52ZXJzaW9uICE9PSBcInY2XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZvcm1hdChyZXMsIFwiaXB2NFwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2sudmVyc2lvbiAhPT0gXCJ2NFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImlwdjZcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJiYXNlNjR1cmxcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmJhc2U2NHVybCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJqd3RcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmp3dCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjaWRyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLnZlcnNpb24gIT09IFwidjZcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmlwdjRDaWRyLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2sudmVyc2lvbiAhPT0gXCJ2NFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRQYXR0ZXJuKHJlcywgem9kUGF0dGVybnMuaXB2NkNpZHIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiZW1vamlcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmVtb2ppKCksIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwidWxpZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy51bGlkLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJiYXNlNjRcIjoge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlZnMuYmFzZTY0U3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtYXQ6YmluYXJ5XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImJpbmFyeVwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjb250ZW50RW5jb2Rpbmc6YmFzZTY0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJjb250ZW50RW5jb2RpbmdcIiwgXCJiYXNlNjRcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicGF0dGVybjp6b2RcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5iYXNlNjQsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwibmFub2lkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLm5hbm9pZCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0b0xvd2VyQ2FzZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0b1VwcGVyQ2FzZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmltXCI6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICgoXykgPT4geyB9KShjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbmZ1bmN0aW9uIGVzY2FwZUxpdGVyYWxDaGVja1ZhbHVlKGxpdGVyYWwsIHJlZnMpIHtcbiAgICByZXR1cm4gcmVmcy5wYXR0ZXJuU3RyYXRlZ3kgPT09IFwiZXNjYXBlXCJcbiAgICAgICAgPyBlc2NhcGVOb25BbHBoYU51bWVyaWMobGl0ZXJhbClcbiAgICAgICAgOiBsaXRlcmFsO1xufVxuY29uc3QgQUxQSEFfTlVNRVJJQyA9IG5ldyBTZXQoXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODlcIik7XG5mdW5jdGlvbiBlc2NhcGVOb25BbHBoYU51bWVyaWMoc291cmNlKSB7XG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFBTFBIQV9OVU1FUklDLmhhcyhzb3VyY2VbaV0pKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gXCJcXFxcXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8vIEFkZHMgYSBcImZvcm1hdFwiIGtleXdvcmQgdG8gdGhlIHNjaGVtYS4gSWYgYSBmb3JtYXQgZXhpc3RzLCBib3RoIGZvcm1hdHMgd2lsbCBiZSBqb2luZWQgaW4gYW4gYWxsT2Ytbm9kZSwgYWxvbmcgd2l0aCBzdWJzZXF1ZW50IG9uZXMuXG5mdW5jdGlvbiBhZGRGb3JtYXQoc2NoZW1hLCB2YWx1ZSwgbWVzc2FnZSwgcmVmcykge1xuICAgIGlmIChzY2hlbWEuZm9ybWF0IHx8IHNjaGVtYS5hbnlPZj8uc29tZSgoeCkgPT4geC5mb3JtYXQpKSB7XG4gICAgICAgIGlmICghc2NoZW1hLmFueU9mKSB7XG4gICAgICAgICAgICBzY2hlbWEuYW55T2YgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmZvcm1hdCkge1xuICAgICAgICAgICAgc2NoZW1hLmFueU9mLnB1c2goe1xuICAgICAgICAgICAgICAgIGZvcm1hdDogc2NoZW1hLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAuLi4oc2NoZW1hLmVycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgICAgICByZWZzLmVycm9yTWVzc2FnZXMgJiYge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHsgZm9ybWF0OiBzY2hlbWEuZXJyb3JNZXNzYWdlLmZvcm1hdCB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWxldGUgc2NoZW1hLmZvcm1hdDtcbiAgICAgICAgICAgIGlmIChzY2hlbWEuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS5lcnJvck1lc3NhZ2UuZm9ybWF0O1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWEuZXJyb3JNZXNzYWdlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS5lcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNjaGVtYS5hbnlPZi5wdXNoKHtcbiAgICAgICAgICAgIGZvcm1hdDogdmFsdWUsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgIHJlZnMuZXJyb3JNZXNzYWdlcyAmJiB7IGVycm9yTWVzc2FnZTogeyBmb3JtYXQ6IG1lc3NhZ2UgfSB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHNjaGVtYSwgXCJmb3JtYXRcIiwgdmFsdWUsIG1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbn1cbi8vIEFkZHMgYSBcInBhdHRlcm5cIiBrZXl3b3JkIHRvIHRoZSBzY2hlbWEuIElmIGEgcGF0dGVybiBleGlzdHMsIGJvdGggcGF0dGVybnMgd2lsbCBiZSBqb2luZWQgaW4gYW4gYWxsT2Ytbm9kZSwgYWxvbmcgd2l0aCBzdWJzZXF1ZW50IG9uZXMuXG5mdW5jdGlvbiBhZGRQYXR0ZXJuKHNjaGVtYSwgcmVnZXgsIG1lc3NhZ2UsIHJlZnMpIHtcbiAgICBpZiAoc2NoZW1hLnBhdHRlcm4gfHwgc2NoZW1hLmFsbE9mPy5zb21lKCh4KSA9PiB4LnBhdHRlcm4pKSB7XG4gICAgICAgIGlmICghc2NoZW1hLmFsbE9mKSB7XG4gICAgICAgICAgICBzY2hlbWEuYWxsT2YgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLnBhdHRlcm4pIHtcbiAgICAgICAgICAgIHNjaGVtYS5hbGxPZi5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBzY2hlbWEucGF0dGVybixcbiAgICAgICAgICAgICAgICAuLi4oc2NoZW1hLmVycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgICAgICByZWZzLmVycm9yTWVzc2FnZXMgJiYge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHsgcGF0dGVybjogc2NoZW1hLmVycm9yTWVzc2FnZS5wYXR0ZXJuIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWEucGF0dGVybjtcbiAgICAgICAgICAgIGlmIChzY2hlbWEuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS5lcnJvck1lc3NhZ2UucGF0dGVybjtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hLmVycm9yTWVzc2FnZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWEuZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzY2hlbWEuYWxsT2YucHVzaCh7XG4gICAgICAgICAgICBwYXR0ZXJuOiBzdHJpbmdpZnlSZWdFeHBXaXRoRmxhZ3MocmVnZXgsIHJlZnMpLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICByZWZzLmVycm9yTWVzc2FnZXMgJiYgeyBlcnJvck1lc3NhZ2U6IHsgcGF0dGVybjogbWVzc2FnZSB9IH0pLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMoc2NoZW1hLCBcInBhdHRlcm5cIiwgc3RyaW5naWZ5UmVnRXhwV2l0aEZsYWdzKHJlZ2V4LCByZWZzKSwgbWVzc2FnZSwgcmVmcyk7XG4gICAgfVxufVxuLy8gTXV0YXRlIHouc3RyaW5nLnJlZ2V4KCkgaW4gYSBiZXN0IGF0dGVtcHQgdG8gYWNjb21tb2RhdGUgZm9yIHJlZ2V4IGZsYWdzIHdoZW4gYXBwbHlSZWdleEZsYWdzIGlzIHRydWVcbmZ1bmN0aW9uIHN0cmluZ2lmeVJlZ0V4cFdpdGhGbGFncyhyZWdleCwgcmVmcykge1xuICAgIGlmICghcmVmcy5hcHBseVJlZ2V4RmxhZ3MgfHwgIXJlZ2V4LmZsYWdzKSB7XG4gICAgICAgIHJldHVybiByZWdleC5zb3VyY2U7XG4gICAgfVxuICAgIC8vIEN1cnJlbnRseSBoYW5kbGVkIGZsYWdzXG4gICAgY29uc3QgZmxhZ3MgPSB7XG4gICAgICAgIGk6IHJlZ2V4LmZsYWdzLmluY2x1ZGVzKFwiaVwiKSxcbiAgICAgICAgbTogcmVnZXguZmxhZ3MuaW5jbHVkZXMoXCJtXCIpLFxuICAgICAgICBzOiByZWdleC5mbGFncy5pbmNsdWRlcyhcInNcIiksIC8vIGAuYCBtYXRjaGVzIG5ld2xpbmVzXG4gICAgfTtcbiAgICAvLyBUaGUgZ2VuZXJhbCBwcmluY2lwbGUgaGVyZSBpcyB0byBzdGVwIHRocm91Z2ggZWFjaCBjaGFyYWN0ZXIsIG9uZSBhdCBhIHRpbWUsIGFwcGx5aW5nIG11dGF0aW9ucyBhcyBmbGFncyByZXF1aXJlLiBXZSBrZWVwIHRyYWNrIHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGVzY2FwZWQsIGFuZCB3aGVuIGl0J3MgaW5zaWRlIGEgZ3JvdXAgL2xpa2UgW3RoaXNdLyBvciAoYWxzbykgYSByYW5nZSBsaWtlIC9bYS16XS8uIFRoZSBmb2xsb3dpbmcgaXMgZmFpcmx5IGJyaXR0bGUgaW1wZXJhdGl2ZSBjb2RlOyBlZGl0IGF0IHlvdXIgcGVyaWwhXG4gICAgY29uc3Qgc291cmNlID0gZmxhZ3MuaSA/IHJlZ2V4LnNvdXJjZS50b0xvd2VyQ2FzZSgpIDogcmVnZXguc291cmNlO1xuICAgIGxldCBwYXR0ZXJuID0gXCJcIjtcbiAgICBsZXQgaXNFc2NhcGVkID0gZmFsc2U7XG4gICAgbGV0IGluQ2hhckdyb3VwID0gZmFsc2U7XG4gICAgbGV0IGluQ2hhclJhbmdlID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzRXNjYXBlZCkge1xuICAgICAgICAgICAgcGF0dGVybiArPSBzb3VyY2VbaV07XG4gICAgICAgICAgICBpc0VzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmbGFncy5pKSB7XG4gICAgICAgICAgICBpZiAoaW5DaGFyR3JvdXApIHtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlW2ldLm1hdGNoKC9bYS16XS8pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbkNoYXJSYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArPSBzb3VyY2VbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IGAke3NvdXJjZVtpIC0gMl19LSR7c291cmNlW2ldfWAudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluQ2hhclJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlW2kgKyAxXSA9PT0gXCItXCIgJiYgc291cmNlW2kgKyAyXT8ubWF0Y2goL1thLXpdLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gc291cmNlW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5DaGFyUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArPSBgJHtzb3VyY2VbaV19JHtzb3VyY2VbaV0udG9VcHBlckNhc2UoKX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZVtpXS5tYXRjaCgvW2Etel0vKSkge1xuICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gYFske3NvdXJjZVtpXX0ke3NvdXJjZVtpXS50b1VwcGVyQ2FzZSgpfV1gO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmbGFncy5tKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlW2ldID09PSBcIl5cIikge1xuICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gYChefCg/PD1bXFxyXFxuXSkpYDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZVtpXSA9PT0gXCIkXCIpIHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IGAoJHwoPz1bXFxyXFxuXSkpYDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmxhZ3MucyAmJiBzb3VyY2VbaV0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgICBwYXR0ZXJuICs9IGluQ2hhckdyb3VwID8gYCR7c291cmNlW2ldfVxcclxcbmAgOiBgWyR7c291cmNlW2ldfVxcclxcbl1gO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVybiArPSBzb3VyY2VbaV07XG4gICAgICAgIGlmIChzb3VyY2VbaV0gPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICBpc0VzY2FwZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluQ2hhckdyb3VwICYmIHNvdXJjZVtpXSA9PT0gXCJdXCIpIHtcbiAgICAgICAgICAgIGluQ2hhckdyb3VwID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluQ2hhckdyb3VwICYmIHNvdXJjZVtpXSA9PT0gXCJbXCIpIHtcbiAgICAgICAgICAgIGluQ2hhckdyb3VwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ291bGQgbm90IGNvbnZlcnQgcmVnZXggcGF0dGVybiBhdCAke3JlZnMuY3VycmVudFBhdGguam9pbihcIi9cIil9IHRvIGEgZmxhZy1pbmRlcGVuZGVudCBmb3JtISBGYWxsaW5nIGJhY2sgdG8gdGhlIGZsYWctaWdub3JhbnQgc291cmNlYCk7XG4gICAgICAgIHJldHVybiByZWdleC5zb3VyY2U7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuO1xufVxuIiwgImltcG9ydCB7IFpvZEZpcnN0UGFydHlUeXBlS2luZCwgfSBmcm9tIFwiem9kL3YzXCI7XG5pbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VTdHJpbmdEZWYgfSBmcm9tIFwiLi9zdHJpbmcuanNcIjtcbmltcG9ydCB7IHBhcnNlQnJhbmRlZERlZiB9IGZyb20gXCIuL2JyYW5kZWQuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vYW55LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWNvcmREZWYoZGVmLCByZWZzKSB7XG4gICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcIm9wZW5BaVwiKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IE9wZW5BSSBtYXkgbm90IHN1cHBvcnQgcmVjb3JkcyBpbiBzY2hlbWFzISBUcnkgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIiAmJlxuICAgICAgICBkZWYua2V5VHlwZT8uX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICByZXF1aXJlZDogZGVmLmtleVR5cGUuX2RlZi52YWx1ZXMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBkZWYua2V5VHlwZS5fZGVmLnZhbHVlcy5yZWR1Y2UoKGFjYywga2V5KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBba2V5XTogcGFyc2VEZWYoZGVmLnZhbHVlVHlwZS5fZGVmLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJwcm9wZXJ0aWVzXCIsIGtleV0sXG4gICAgICAgICAgICAgICAgfSkgPz8gcGFyc2VBbnlEZWYocmVmcyksXG4gICAgICAgICAgICB9KSwge30pLFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHJlZnMucmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogcGFyc2VEZWYoZGVmLnZhbHVlVHlwZS5fZGVmLCB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICB9KSA/PyByZWZzLmFsbG93ZWRBZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICB9O1xuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuICAgIGlmIChkZWYua2V5VHlwZT8uX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN0cmluZyAmJlxuICAgICAgICBkZWYua2V5VHlwZS5fZGVmLmNoZWNrcz8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgLi4ua2V5VHlwZSB9ID0gcGFyc2VTdHJpbmdEZWYoZGVmLmtleVR5cGUuX2RlZiwgcmVmcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zY2hlbWEsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzOiBrZXlUeXBlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWYua2V5VHlwZT8uX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnNjaGVtYSxcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZXM6IHtcbiAgICAgICAgICAgICAgICBlbnVtOiBkZWYua2V5VHlwZS5fZGVmLnZhbHVlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGRlZi5rZXlUeXBlPy5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQnJhbmRlZCAmJlxuICAgICAgICBkZWYua2V5VHlwZS5fZGVmLnR5cGUuX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN0cmluZyAmJlxuICAgICAgICBkZWYua2V5VHlwZS5fZGVmLnR5cGUuX2RlZi5jaGVja3M/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIC4uLmtleVR5cGUgfSA9IHBhcnNlQnJhbmRlZERlZihkZWYua2V5VHlwZS5fZGVmLCByZWZzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnNjaGVtYSxcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZXM6IGtleVR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWE7XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmltcG9ydCB7IHBhcnNlUmVjb3JkRGVmIH0gZnJvbSBcIi4vcmVjb3JkLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWFwRGVmKGRlZiwgcmVmcykge1xuICAgIGlmIChyZWZzLm1hcFN0cmF0ZWd5ID09PSBcInJlY29yZFwiKSB7XG4gICAgICAgIHJldHVybiBwYXJzZVJlY29yZERlZihkZWYsIHJlZnMpO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gcGFyc2VEZWYoZGVmLmtleVR5cGUuX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiaXRlbXNcIiwgXCJpdGVtc1wiLCBcIjBcIl0sXG4gICAgfSkgfHwgcGFyc2VBbnlEZWYocmVmcyk7XG4gICAgY29uc3QgdmFsdWVzID0gcGFyc2VEZWYoZGVmLnZhbHVlVHlwZS5fZGVmLCB7XG4gICAgICAgIC4uLnJlZnMsXG4gICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJpdGVtc1wiLCBcIml0ZW1zXCIsIFwiMVwiXSxcbiAgICB9KSB8fCBwYXJzZUFueURlZihyZWZzKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgIG1heEl0ZW1zOiAxMjUsXG4gICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBpdGVtczogW2tleXMsIHZhbHVlc10sXG4gICAgICAgICAgICBtaW5JdGVtczogMixcbiAgICAgICAgICAgIG1heEl0ZW1zOiAyLFxuICAgICAgICB9LFxuICAgIH07XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTmF0aXZlRW51bURlZihkZWYpIHtcbiAgICBjb25zdCBvYmplY3QgPSBkZWYudmFsdWVzO1xuICAgIGNvbnN0IGFjdHVhbEtleXMgPSBPYmplY3Qua2V5cyhkZWYudmFsdWVzKS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9iamVjdFtvYmplY3Rba2V5XV0gIT09IFwibnVtYmVyXCI7XG4gICAgfSk7XG4gICAgY29uc3QgYWN0dWFsVmFsdWVzID0gYWN0dWFsS2V5cy5tYXAoKGtleSkgPT4gb2JqZWN0W2tleV0pO1xuICAgIGNvbnN0IHBhcnNlZFR5cGVzID0gQXJyYXkuZnJvbShuZXcgU2V0KGFjdHVhbFZhbHVlcy5tYXAoKHZhbHVlcykgPT4gdHlwZW9mIHZhbHVlcykpKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBwYXJzZWRUeXBlcy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gcGFyc2VkVHlwZXNbMF0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA/IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA6IFwibnVtYmVyXCJcbiAgICAgICAgICAgIDogW1wic3RyaW5nXCIsIFwibnVtYmVyXCJdLFxuICAgICAgICBlbnVtOiBhY3R1YWxWYWx1ZXMsXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTmV2ZXJEZWYocmVmcykge1xuICAgIHJldHVybiByZWZzLnRhcmdldCA9PT0gXCJvcGVuQWlcIlxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG5vdDogcGFyc2VBbnlEZWYoe1xuICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIm5vdFwiXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9O1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bGxEZWYocmVmcykge1xuICAgIHJldHVybiByZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZW51bTogW1wibnVsbFwiXSxcbiAgICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgdHlwZTogXCJudWxsXCIsXG4gICAgICAgIH07XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmV4cG9ydCBjb25zdCBwcmltaXRpdmVNYXBwaW5ncyA9IHtcbiAgICBab2RTdHJpbmc6IFwic3RyaW5nXCIsXG4gICAgWm9kTnVtYmVyOiBcIm51bWJlclwiLFxuICAgIFpvZEJpZ0ludDogXCJpbnRlZ2VyXCIsXG4gICAgWm9kQm9vbGVhbjogXCJib29sZWFuXCIsXG4gICAgWm9kTnVsbDogXCJudWxsXCIsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVW5pb25EZWYoZGVmLCByZWZzKSB7XG4gICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcIm9wZW5BcGkzXCIpXG4gICAgICAgIHJldHVybiBhc0FueU9mKGRlZiwgcmVmcyk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGRlZi5vcHRpb25zIGluc3RhbmNlb2YgTWFwID8gQXJyYXkuZnJvbShkZWYub3B0aW9ucy52YWx1ZXMoKSkgOiBkZWYub3B0aW9ucztcbiAgICAvLyBUaGlzIGJsb2NrcyB0cmllcyB0byBsb29rIGFoZWFkIGEgYml0IHRvIHByb2R1Y2UgbmljZXIgbG9va2luZyBzY2hlbWFzIHdpdGggdHlwZSBhcnJheSBpbnN0ZWFkIG9mIGFueU9mLlxuICAgIGlmIChvcHRpb25zLmV2ZXJ5KCh4KSA9PiB4Ll9kZWYudHlwZU5hbWUgaW4gcHJpbWl0aXZlTWFwcGluZ3MgJiZcbiAgICAgICAgKCF4Ll9kZWYuY2hlY2tzIHx8ICF4Ll9kZWYuY2hlY2tzLmxlbmd0aCkpKSB7XG4gICAgICAgIC8vIGFsbCB0eXBlcyBpbiB1bmlvbiBhcmUgcHJpbWl0aXZlIGFuZCBsYWNrIGNoZWNrcywgc28gbWlnaHQgYXMgd2VsbCBzcXVhc2ggaW50byB7dHlwZTogWy4uLl19XG4gICAgICAgIGNvbnN0IHR5cGVzID0gb3B0aW9ucy5yZWR1Y2UoKHR5cGVzLCB4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gcHJpbWl0aXZlTWFwcGluZ3NbeC5fZGVmLnR5cGVOYW1lXTsgLy9DYW4gYmUgc2FmZWx5IGNhc3RlZCBkdWUgdG8gcm93IDQzXG4gICAgICAgICAgICByZXR1cm4gdHlwZSAmJiAhdHlwZXMuaW5jbHVkZXModHlwZSkgPyBbLi4udHlwZXMsIHR5cGVdIDogdHlwZXM7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVzLmxlbmd0aCA+IDEgPyB0eXBlcyA6IHR5cGVzWzBdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChvcHRpb25zLmV2ZXJ5KCh4KSA9PiB4Ll9kZWYudHlwZU5hbWUgPT09IFwiWm9kTGl0ZXJhbFwiICYmICF4LmRlc2NyaXB0aW9uKSkge1xuICAgICAgICAvLyBhbGwgb3B0aW9ucyBsaXRlcmFsc1xuICAgICAgICBjb25zdCB0eXBlcyA9IG9wdGlvbnMucmVkdWNlKChhY2MsIHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgeC5fZGVmLnZhbHVlO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFjYywgdHlwZV07XG4gICAgICAgICAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFjYywgXCJpbnRlZ2VyXCJdO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHguX2RlZi52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWNjLCBcIm51bGxcIl07XG4gICAgICAgICAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG4gICAgICAgIGlmICh0eXBlcy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBhbGwgdGhlIGxpdGVyYWxzIGFyZSBwcmltaXRpdmUsIGFzIGZhciBhcyBudWxsIGNhbiBiZSBjb25zaWRlcmVkIHByaW1pdGl2ZVxuICAgICAgICAgICAgY29uc3QgdW5pcXVlVHlwZXMgPSB0eXBlcy5maWx0ZXIoKHgsIGksIGEpID0+IGEuaW5kZXhPZih4KSA9PT0gaSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHVuaXF1ZVR5cGVzLmxlbmd0aCA+IDEgPyB1bmlxdWVUeXBlcyA6IHVuaXF1ZVR5cGVzWzBdLFxuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbnMucmVkdWNlKChhY2MsIHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYy5pbmNsdWRlcyh4Ll9kZWYudmFsdWUpID8gYWNjIDogWy4uLmFjYywgeC5fZGVmLnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9LCBbXSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMuZXZlcnkoKHgpID0+IHguX2RlZi50eXBlTmFtZSA9PT0gXCJab2RFbnVtXCIpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZW51bTogb3B0aW9ucy5yZWR1Y2UoKGFjYywgeCkgPT4gW1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICAuLi54Ll9kZWYudmFsdWVzLmZpbHRlcigoeCkgPT4gIWFjYy5pbmNsdWRlcyh4KSksXG4gICAgICAgICAgICBdLCBbXSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBhc0FueU9mKGRlZiwgcmVmcyk7XG59XG5jb25zdCBhc0FueU9mID0gKGRlZiwgcmVmcykgPT4ge1xuICAgIGNvbnN0IGFueU9mID0gKGRlZi5vcHRpb25zIGluc3RhbmNlb2YgTWFwXG4gICAgICAgID8gQXJyYXkuZnJvbShkZWYub3B0aW9ucy52YWx1ZXMoKSlcbiAgICAgICAgOiBkZWYub3B0aW9ucylcbiAgICAgICAgLm1hcCgoeCwgaSkgPT4gcGFyc2VEZWYoeC5fZGVmLCB7XG4gICAgICAgIC4uLnJlZnMsXG4gICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhbnlPZlwiLCBgJHtpfWBdLFxuICAgIH0pKVxuICAgICAgICAuZmlsdGVyKCh4KSA9PiAhIXggJiZcbiAgICAgICAgKCFyZWZzLnN0cmljdFVuaW9ucyB8fFxuICAgICAgICAgICAgKHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHgpLmxlbmd0aCA+IDApKSk7XG4gICAgcmV0dXJuIGFueU9mLmxlbmd0aCA/IHsgYW55T2YgfSA6IHVuZGVmaW5lZDtcbn07XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmltcG9ydCB7IHByaW1pdGl2ZU1hcHBpbmdzIH0gZnJvbSBcIi4vdW5pb24uanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bGxhYmxlRGVmKGRlZiwgcmVmcykge1xuICAgIGlmIChbXCJab2RTdHJpbmdcIiwgXCJab2ROdW1iZXJcIiwgXCJab2RCaWdJbnRcIiwgXCJab2RCb29sZWFuXCIsIFwiWm9kTnVsbFwiXS5pbmNsdWRlcyhkZWYuaW5uZXJUeXBlLl9kZWYudHlwZU5hbWUpICYmXG4gICAgICAgICghZGVmLmlubmVyVHlwZS5fZGVmLmNoZWNrcyB8fCAhZGVmLmlubmVyVHlwZS5fZGVmLmNoZWNrcy5sZW5ndGgpKSB7XG4gICAgICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHByaW1pdGl2ZU1hcHBpbmdzW2RlZi5pbm5lclR5cGUuX2RlZi50eXBlTmFtZV0sXG4gICAgICAgICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBbXG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlTWFwcGluZ3NbZGVmLmlubmVyVHlwZS5fZGVmLnR5cGVOYW1lXSxcbiAgICAgICAgICAgICAgICBcIm51bGxcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiKSB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBwYXJzZURlZihkZWYuaW5uZXJUeXBlLl9kZWYsIHtcbiAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGhdLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJhc2UgJiYgXCIkcmVmXCIgaW4gYmFzZSlcbiAgICAgICAgICAgIHJldHVybiB7IGFsbE9mOiBbYmFzZV0sIG51bGxhYmxlOiB0cnVlIH07XG4gICAgICAgIHJldHVybiBiYXNlICYmIHsgLi4uYmFzZSwgbnVsbGFibGU6IHRydWUgfTtcbiAgICB9XG4gICAgY29uc3QgYmFzZSA9IHBhcnNlRGVmKGRlZi5pbm5lclR5cGUuX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYW55T2ZcIiwgXCIwXCJdLFxuICAgIH0pO1xuICAgIHJldHVybiBiYXNlICYmIHsgYW55T2Y6IFtiYXNlLCB7IHR5cGU6IFwibnVsbFwiIH1dIH07XG59XG4iLCAiaW1wb3J0IHsgYWRkRXJyb3JNZXNzYWdlLCBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzLCB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXJEZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgIH07XG4gICAgaWYgKCFkZWYuY2hlY2tzKVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIGZvciAoY29uc3QgY2hlY2sgb2YgZGVmLmNoZWNrcykge1xuICAgICAgICBzd2l0Y2ggKGNoZWNrLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnRcIjpcbiAgICAgICAgICAgICAgICByZXMudHlwZSA9IFwiaW50ZWdlclwiO1xuICAgICAgICAgICAgICAgIGFkZEVycm9yTWVzc2FnZShyZXMsIFwidHlwZVwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJtaW5cIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmcy50YXJnZXQgPT09IFwianNvblNjaGVtYTdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2suaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcImV4Y2x1c2l2ZU1pbmltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmV4Y2x1c2l2ZU1pbmltdW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1pbmltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJtYXhcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmcy50YXJnZXQgPT09IFwianNvblNjaGVtYTdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2suaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcImV4Y2x1c2l2ZU1heGltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmV4Y2x1c2l2ZU1heGltdW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1heGltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJtdWx0aXBsZU9mXCI6XG4gICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibXVsdGlwbGVPZlwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT2JqZWN0RGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IGZvcmNlT3B0aW9uYWxJbnRvTnVsbGFibGUgPSByZWZzLnRhcmdldCA9PT0gXCJvcGVuQWlcIjtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgIH07XG4gICAgY29uc3QgcmVxdWlyZWQgPSBbXTtcbiAgICBjb25zdCBzaGFwZSA9IGRlZi5zaGFwZSgpO1xuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gc2hhcGUpIHtcbiAgICAgICAgbGV0IHByb3BEZWYgPSBzaGFwZVtwcm9wTmFtZV07XG4gICAgICAgIGlmIChwcm9wRGVmID09PSB1bmRlZmluZWQgfHwgcHJvcERlZi5fZGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9wT3B0aW9uYWwgPSBzYWZlSXNPcHRpb25hbChwcm9wRGVmKTtcbiAgICAgICAgaWYgKHByb3BPcHRpb25hbCAmJiBmb3JjZU9wdGlvbmFsSW50b051bGxhYmxlKSB7XG4gICAgICAgICAgICBpZiAocHJvcERlZi5fZGVmLnR5cGVOYW1lID09PSBcIlpvZE9wdGlvbmFsXCIpIHtcbiAgICAgICAgICAgICAgICBwcm9wRGVmID0gcHJvcERlZi5fZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcHJvcERlZi5pc051bGxhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICBwcm9wRGVmID0gcHJvcERlZi5udWxsYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcE9wdGlvbmFsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkRGVmID0gcGFyc2VEZWYocHJvcERlZi5fZGVmLCB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcInByb3BlcnRpZXNcIiwgcHJvcE5hbWVdLFxuICAgICAgICAgICAgcHJvcGVydHlQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJwcm9wZXJ0aWVzXCIsIHByb3BOYW1lXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJzZWREZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcGFyc2VkRGVmO1xuICAgICAgICBpZiAoIXByb3BPcHRpb25hbCkge1xuICAgICAgICAgICAgcmVxdWlyZWQucHVzaChwcm9wTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlcXVpcmVkLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQucmVxdWlyZWQgPSByZXF1aXJlZDtcbiAgICB9XG4gICAgY29uc3QgYWRkaXRpb25hbFByb3BlcnRpZXMgPSBkZWNpZGVBZGRpdGlvbmFsUHJvcGVydGllcyhkZWYsIHJlZnMpO1xuICAgIGlmIChhZGRpdGlvbmFsUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc3VsdC5hZGRpdGlvbmFsUHJvcGVydGllcyA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZGVjaWRlQWRkaXRpb25hbFByb3BlcnRpZXMoZGVmLCByZWZzKSB7XG4gICAgaWYgKGRlZi5jYXRjaGFsbC5fZGVmLnR5cGVOYW1lICE9PSBcIlpvZE5ldmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRGVmKGRlZi5jYXRjaGFsbC5fZGVmLCB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3dpdGNoIChkZWYudW5rbm93bktleXMpIHtcbiAgICAgICAgY2FzZSBcInBhc3N0aHJvdWdoXCI6XG4gICAgICAgICAgICByZXR1cm4gcmVmcy5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgIGNhc2UgXCJzdHJpY3RcIjpcbiAgICAgICAgICAgIHJldHVybiByZWZzLnJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgIGNhc2UgXCJzdHJpcFwiOlxuICAgICAgICAgICAgcmV0dXJuIHJlZnMucmVtb3ZlQWRkaXRpb25hbFN0cmF0ZWd5ID09PSBcInN0cmljdFwiXG4gICAgICAgICAgICAgICAgPyByZWZzLmFsbG93ZWRBZGRpdGlvbmFsUHJvcGVydGllc1xuICAgICAgICAgICAgICAgIDogcmVmcy5yZWplY3RlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNhZmVJc09wdGlvbmFsKHNjaGVtYSkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuaXNPcHRpb25hbCgpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9hbnkuanNcIjtcbmV4cG9ydCBjb25zdCBwYXJzZU9wdGlvbmFsRGVmID0gKGRlZiwgcmVmcykgPT4ge1xuICAgIGlmIChyZWZzLmN1cnJlbnRQYXRoLnRvU3RyaW5nKCkgPT09IHJlZnMucHJvcGVydHlQYXRoPy50b1N0cmluZygpKSB7XG4gICAgICAgIHJldHVybiBwYXJzZURlZihkZWYuaW5uZXJUeXBlLl9kZWYsIHJlZnMpO1xuICAgIH1cbiAgICBjb25zdCBpbm5lclNjaGVtYSA9IHBhcnNlRGVmKGRlZi5pbm5lclR5cGUuX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYW55T2ZcIiwgXCIxXCJdLFxuICAgIH0pO1xuICAgIHJldHVybiBpbm5lclNjaGVtYVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGFueU9mOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBub3Q6IHBhcnNlQW55RGVmKHJlZnMpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5uZXJTY2hlbWEsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICAgIDogcGFyc2VBbnlEZWYocmVmcyk7XG59O1xuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2VQaXBlbGluZURlZiA9IChkZWYsIHJlZnMpID0+IHtcbiAgICBpZiAocmVmcy5waXBlU3RyYXRlZ3kgPT09IFwiaW5wdXRcIikge1xuICAgICAgICByZXR1cm4gcGFyc2VEZWYoZGVmLmluLl9kZWYsIHJlZnMpO1xuICAgIH1cbiAgICBlbHNlIGlmIChyZWZzLnBpcGVTdHJhdGVneSA9PT0gXCJvdXRwdXRcIikge1xuICAgICAgICByZXR1cm4gcGFyc2VEZWYoZGVmLm91dC5fZGVmLCByZWZzKTtcbiAgICB9XG4gICAgY29uc3QgYSA9IHBhcnNlRGVmKGRlZi5pbi5fZGVmLCB7XG4gICAgICAgIC4uLnJlZnMsXG4gICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhbGxPZlwiLCBcIjBcIl0sXG4gICAgfSk7XG4gICAgY29uc3QgYiA9IHBhcnNlRGVmKGRlZi5vdXQuX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYWxsT2ZcIiwgYSA/IFwiMVwiIDogXCIwXCJdLFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFsbE9mOiBbYSwgYl0uZmlsdGVyKCh4KSA9PiB4ICE9PSB1bmRlZmluZWQpLFxuICAgIH07XG59O1xuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9taXNlRGVmKGRlZiwgcmVmcykge1xuICAgIHJldHVybiBwYXJzZURlZihkZWYudHlwZS5fZGVmLCByZWZzKTtcbn1cbiIsICJpbXBvcnQgeyBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzIH0gZnJvbSBcIi4uL2Vycm9yTWVzc2FnZXMuanNcIjtcbmltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZXREZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgaXRlbXMgPSBwYXJzZURlZihkZWYudmFsdWVUeXBlLl9kZWYsIHtcbiAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIml0ZW1zXCJdLFxuICAgIH0pO1xuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgaXRlbXMsXG4gICAgfTtcbiAgICBpZiAoZGVmLm1pblNpemUpIHtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhzY2hlbWEsIFwibWluSXRlbXNcIiwgZGVmLm1pblNpemUudmFsdWUsIGRlZi5taW5TaXplLm1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbiAgICBpZiAoZGVmLm1heFNpemUpIHtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhzY2hlbWEsIFwibWF4SXRlbXNcIiwgZGVmLm1heFNpemUudmFsdWUsIGRlZi5tYXhTaXplLm1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUdXBsZURlZihkZWYsIHJlZnMpIHtcbiAgICBpZiAoZGVmLnJlc3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIG1pbkl0ZW1zOiBkZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgaXRlbXM6IGRlZi5pdGVtc1xuICAgICAgICAgICAgICAgIC5tYXAoKHgsIGkpID0+IHBhcnNlRGVmKHguX2RlZiwge1xuICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIml0ZW1zXCIsIGAke2l9YF0sXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChhY2MsIHgpID0+ICh4ID09PSB1bmRlZmluZWQgPyBhY2MgOiBbLi4uYWNjLCB4XSksIFtdKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxJdGVtczogcGFyc2VEZWYoZGVmLnJlc3QuX2RlZiwge1xuICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFkZGl0aW9uYWxJdGVtc1wiXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIG1pbkl0ZW1zOiBkZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgbWF4SXRlbXM6IGRlZi5pdGVtcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtczogZGVmLml0ZW1zXG4gICAgICAgICAgICAgICAgLm1hcCgoeCwgaSkgPT4gcGFyc2VEZWYoeC5fZGVmLCB7XG4gICAgICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiaXRlbXNcIiwgYCR7aX1gXSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgeCkgPT4gKHggPT09IHVuZGVmaW5lZCA/IGFjYyA6IFsuLi5hY2MsIHhdKSwgW10pLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVW5kZWZpbmVkRGVmKHJlZnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub3Q6IHBhcnNlQW55RGVmKHJlZnMpLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9hbnkuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVua25vd25EZWYocmVmcykge1xuICAgIHJldHVybiBwYXJzZUFueURlZihyZWZzKTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlUmVhZG9ubHlEZWYgPSAoZGVmLCByZWZzKSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlRGVmKGRlZi5pbm5lclR5cGUuX2RlZiwgcmVmcyk7XG59O1xuIiwgImltcG9ydCB7IFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2QvdjNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9hbnkuanNcIjtcbmltcG9ydCB7IHBhcnNlQXJyYXlEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2FycmF5LmpzXCI7XG5pbXBvcnQgeyBwYXJzZUJpZ2ludERlZiB9IGZyb20gXCIuL3BhcnNlcnMvYmlnaW50LmpzXCI7XG5pbXBvcnQgeyBwYXJzZUJvb2xlYW5EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2Jvb2xlYW4uanNcIjtcbmltcG9ydCB7IHBhcnNlQnJhbmRlZERlZiB9IGZyb20gXCIuL3BhcnNlcnMvYnJhbmRlZC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VDYXRjaERlZiB9IGZyb20gXCIuL3BhcnNlcnMvY2F0Y2guanNcIjtcbmltcG9ydCB7IHBhcnNlRGF0ZURlZiB9IGZyb20gXCIuL3BhcnNlcnMvZGF0ZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VEZWZhdWx0RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9kZWZhdWx0LmpzXCI7XG5pbXBvcnQgeyBwYXJzZUVmZmVjdHNEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2VmZmVjdHMuanNcIjtcbmltcG9ydCB7IHBhcnNlRW51bURlZiB9IGZyb20gXCIuL3BhcnNlcnMvZW51bS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJbnRlcnNlY3Rpb25EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2ludGVyc2VjdGlvbi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VMaXRlcmFsRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9saXRlcmFsLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU1hcERlZiB9IGZyb20gXCIuL3BhcnNlcnMvbWFwLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5hdGl2ZUVudW1EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL25hdGl2ZUVudW0uanNcIjtcbmltcG9ydCB7IHBhcnNlTmV2ZXJEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL25ldmVyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bGxEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL251bGwuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVsbGFibGVEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL251bGxhYmxlLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlckRlZiB9IGZyb20gXCIuL3BhcnNlcnMvbnVtYmVyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU9iamVjdERlZiB9IGZyb20gXCIuL3BhcnNlcnMvb2JqZWN0LmpzXCI7XG5pbXBvcnQgeyBwYXJzZU9wdGlvbmFsRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9vcHRpb25hbC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VQaXBlbGluZURlZiB9IGZyb20gXCIuL3BhcnNlcnMvcGlwZWxpbmUuanNcIjtcbmltcG9ydCB7IHBhcnNlUHJvbWlzZURlZiB9IGZyb20gXCIuL3BhcnNlcnMvcHJvbWlzZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSZWNvcmREZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3JlY29yZC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VTZXREZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3NldC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VTdHJpbmdEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3N0cmluZy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VUdXBsZURlZiB9IGZyb20gXCIuL3BhcnNlcnMvdHVwbGUuanNcIjtcbmltcG9ydCB7IHBhcnNlVW5kZWZpbmVkRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy91bmRlZmluZWQuanNcIjtcbmltcG9ydCB7IHBhcnNlVW5pb25EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3VuaW9uLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVVua25vd25EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3Vua25vd24uanNcIjtcbmltcG9ydCB7IHBhcnNlUmVhZG9ubHlEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3JlYWRvbmx5LmpzXCI7XG5leHBvcnQgY29uc3Qgc2VsZWN0UGFyc2VyID0gKGRlZiwgdHlwZU5hbWUsIHJlZnMpID0+IHtcbiAgICBzd2l0Y2ggKHR5cGVOYW1lKSB7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN0cmluZzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmluZ0RlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROdW1iZXI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0RGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJpZ2ludERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQm9vbGVhbkRlZigpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REYXRlOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRGF0ZURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmRlZmluZWQ6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VVbmRlZmluZWREZWYocmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGw6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdWxsRGVmKHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBcnJheTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUFycmF5RGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uOlxuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REaXNjcmltaW5hdGVkVW5pb246XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VVbmlvbkRlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RJbnRlcnNlY3Rpb246XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlcnNlY3Rpb25EZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVHVwbGU6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VUdXBsZURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQ6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmREZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTGl0ZXJhbDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUxpdGVyYWxEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRW51bTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUVudW1EZWYoZGVmKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmF0aXZlRW51bTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU5hdGl2ZUVudW1EZWYoZGVmKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbGFibGU6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdWxsYWJsZURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU9wdGlvbmFsRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU1hcERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTZXQ6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTZXREZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTGF6eTpcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBkZWYuZ2V0dGVyKCkuX2RlZjtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUHJvbWlzZTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVByb21pc2VEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOOlxuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROZXZlcjpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU5ldmVyRGVmKHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRWZmZWN0c0RlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBbnk6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VBbnlEZWYocmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd246XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VVbmtub3duRGVmKHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRGVmYXVsdERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCcmFuZGVkOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQnJhbmRlZERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWFkb25seTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVJlYWRvbmx5RGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZENhdGNoOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2F0Y2hEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUGlwZWxpbmU6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VQaXBlbGluZURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbjpcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVm9pZDpcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3ltYm9sOlxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAoKF8pID0+IHVuZGVmaW5lZCkodHlwZU5hbWUpO1xuICAgIH1cbn07XG4iLCAiaW1wb3J0IHsgaWdub3JlT3ZlcnJpZGUgfSBmcm9tIFwiLi9PcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3RQYXJzZXIgfSBmcm9tIFwiLi9zZWxlY3RQYXJzZXIuanNcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuL2dldFJlbGF0aXZlUGF0aC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVmKGRlZiwgcmVmcywgZm9yY2VSZXNvbHV0aW9uID0gZmFsc2UpIHtcbiAgICBjb25zdCBzZWVuSXRlbSA9IHJlZnMuc2Vlbi5nZXQoZGVmKTtcbiAgICBpZiAocmVmcy5vdmVycmlkZSkge1xuICAgICAgICBjb25zdCBvdmVycmlkZVJlc3VsdCA9IHJlZnMub3ZlcnJpZGU/LihkZWYsIHJlZnMsIHNlZW5JdGVtLCBmb3JjZVJlc29sdXRpb24pO1xuICAgICAgICBpZiAob3ZlcnJpZGVSZXN1bHQgIT09IGlnbm9yZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVSZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlZW5JdGVtICYmICFmb3JjZVJlc29sdXRpb24pIHtcbiAgICAgICAgY29uc3Qgc2VlblNjaGVtYSA9IGdldCRyZWYoc2Vlbkl0ZW0sIHJlZnMpO1xuICAgICAgICBpZiAoc2VlblNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VlblNjaGVtYTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBuZXdJdGVtID0geyBkZWYsIHBhdGg6IHJlZnMuY3VycmVudFBhdGgsIGpzb25TY2hlbWE6IHVuZGVmaW5lZCB9O1xuICAgIHJlZnMuc2Vlbi5zZXQoZGVmLCBuZXdJdGVtKTtcbiAgICBjb25zdCBqc29uU2NoZW1hT3JHZXR0ZXIgPSBzZWxlY3RQYXJzZXIoZGVmLCBkZWYudHlwZU5hbWUsIHJlZnMpO1xuICAgIC8vIElmIHRoZSByZXR1cm4gd2FzIGEgZnVuY3Rpb24sIHRoZW4gdGhlIGlubmVyIGRlZmluaXRpb24gbmVlZHMgdG8gYmUgZXh0cmFjdGVkIGJlZm9yZSBhIGNhbGwgdG8gcGFyc2VEZWYgKHJlY3Vyc2l2ZSlcbiAgICBjb25zdCBqc29uU2NoZW1hID0gdHlwZW9mIGpzb25TY2hlbWFPckdldHRlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgID8gcGFyc2VEZWYoanNvblNjaGVtYU9yR2V0dGVyKCksIHJlZnMpXG4gICAgICAgIDoganNvblNjaGVtYU9yR2V0dGVyO1xuICAgIGlmIChqc29uU2NoZW1hKSB7XG4gICAgICAgIGFkZE1ldGEoZGVmLCByZWZzLCBqc29uU2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKHJlZnMucG9zdFByb2Nlc3MpIHtcbiAgICAgICAgY29uc3QgcG9zdFByb2Nlc3NSZXN1bHQgPSByZWZzLnBvc3RQcm9jZXNzKGpzb25TY2hlbWEsIGRlZiwgcmVmcyk7XG4gICAgICAgIG5ld0l0ZW0uanNvblNjaGVtYSA9IGpzb25TY2hlbWE7XG4gICAgICAgIHJldHVybiBwb3N0UHJvY2Vzc1Jlc3VsdDtcbiAgICB9XG4gICAgbmV3SXRlbS5qc29uU2NoZW1hID0ganNvblNjaGVtYTtcbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn1cbmNvbnN0IGdldCRyZWYgPSAoaXRlbSwgcmVmcykgPT4ge1xuICAgIHN3aXRjaCAocmVmcy4kcmVmU3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBcInJvb3RcIjpcbiAgICAgICAgICAgIHJldHVybiB7ICRyZWY6IGl0ZW0ucGF0aC5qb2luKFwiL1wiKSB9O1xuICAgICAgICBjYXNlIFwicmVsYXRpdmVcIjpcbiAgICAgICAgICAgIHJldHVybiB7ICRyZWY6IGdldFJlbGF0aXZlUGF0aChyZWZzLmN1cnJlbnRQYXRoLCBpdGVtLnBhdGgpIH07XG4gICAgICAgIGNhc2UgXCJub25lXCI6XG4gICAgICAgIGNhc2UgXCJzZWVuXCI6IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnBhdGgubGVuZ3RoIDwgcmVmcy5jdXJyZW50UGF0aC5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBpdGVtLnBhdGguZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gcmVmcy5jdXJyZW50UGF0aFtpbmRleF0gPT09IHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVjdXJzaXZlIHJlZmVyZW5jZSBkZXRlY3RlZCBhdCAke3JlZnMuY3VycmVudFBhdGguam9pbihcIi9cIil9ISBEZWZhdWx0aW5nIHRvIGFueWApO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUFueURlZihyZWZzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWZzLiRyZWZTdHJhdGVneSA9PT0gXCJzZWVuXCIgPyBwYXJzZUFueURlZihyZWZzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn07XG5jb25zdCBhZGRNZXRhID0gKGRlZiwgcmVmcywganNvblNjaGVtYSkgPT4ge1xuICAgIGlmIChkZWYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAganNvblNjaGVtYS5kZXNjcmlwdGlvbiA9IGRlZi5kZXNjcmlwdGlvbjtcbiAgICAgICAgaWYgKHJlZnMubWFya2Rvd25EZXNjcmlwdGlvbikge1xuICAgICAgICAgICAganNvblNjaGVtYS5tYXJrZG93bkRlc2NyaXB0aW9uID0gZGVmLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqc29uU2NoZW1hO1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuL3BhcnNlRGVmLmpzXCI7XG5pbXBvcnQgeyBnZXRSZWZzIH0gZnJvbSBcIi4vUmVmcy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2FueS5qc1wiO1xuY29uc3Qgem9kVG9Kc29uU2NoZW1hID0gKHNjaGVtYSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHJlZnMgPSBnZXRSZWZzKG9wdGlvbnMpO1xuICAgIGxldCBkZWZpbml0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcIm9iamVjdFwiICYmIG9wdGlvbnMuZGVmaW5pdGlvbnNcbiAgICAgICAgPyBPYmplY3QuZW50cmllcyhvcHRpb25zLmRlZmluaXRpb25zKS5yZWR1Y2UoKGFjYywgW25hbWUsIHNjaGVtYV0pID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBbbmFtZV06IHBhcnNlRGVmKHNjaGVtYS5fZGVmLCB7XG4gICAgICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuYmFzZVBhdGgsIHJlZnMuZGVmaW5pdGlvblBhdGgsIG5hbWVdLFxuICAgICAgICAgICAgfSwgdHJ1ZSkgPz8gcGFyc2VBbnlEZWYocmVmcyksXG4gICAgICAgIH0pLCB7fSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gb3B0aW9uc1xuICAgICAgICA6IG9wdGlvbnM/Lm5hbWVTdHJhdGVneSA9PT0gXCJ0aXRsZVwiXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBvcHRpb25zPy5uYW1lO1xuICAgIGNvbnN0IG1haW4gPSBwYXJzZURlZihzY2hlbWEuX2RlZiwgbmFtZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVmc1xuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuYmFzZVBhdGgsIHJlZnMuZGVmaW5pdGlvblBhdGgsIG5hbWVdLFxuICAgICAgICB9LCBmYWxzZSkgPz8gcGFyc2VBbnlEZWYocmVmcyk7XG4gICAgY29uc3QgdGl0bGUgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBvcHRpb25zLm5hbWVTdHJhdGVneSA9PT0gXCJ0aXRsZVwiXG4gICAgICAgID8gb3B0aW9ucy5uYW1lXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1haW4udGl0bGUgPSB0aXRsZTtcbiAgICB9XG4gICAgaWYgKHJlZnMuZmxhZ3MuaGFzUmVmZXJlbmNlZE9wZW5BaUFueVR5cGUpIHtcbiAgICAgICAgaWYgKCFkZWZpbml0aW9ucykge1xuICAgICAgICAgICAgZGVmaW5pdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlZmluaXRpb25zW3JlZnMub3BlbkFpQW55VHlwZU5hbWVdKSB7XG4gICAgICAgICAgICBkZWZpbml0aW9uc1tyZWZzLm9wZW5BaUFueVR5cGVOYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwcGluZyBcIm9iamVjdFwiIGFzIG5vIHByb3BlcnRpZXMgY2FuIGJlIGRlZmluZWQgYW5kIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIG11c3QgYmUgXCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiaW50ZWdlclwiLCBcImJvb2xlYW5cIiwgXCJhcnJheVwiLCBcIm51bGxcIl0sXG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgJHJlZjogcmVmcy4kcmVmU3RyYXRlZ3kgPT09IFwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVmcy5iYXNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzLmRlZmluaXRpb25QYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnMub3BlbkFpQW55VHlwZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBdLmpvaW4oXCIvXCIpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbWJpbmVkID0gbmFtZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGVmaW5pdGlvbnNcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLm1haW4sXG4gICAgICAgICAgICAgICAgW3JlZnMuZGVmaW5pdGlvblBhdGhdOiBkZWZpbml0aW9ucyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogbWFpblxuICAgICAgICA6IHtcbiAgICAgICAgICAgICRyZWY6IFtcbiAgICAgICAgICAgICAgICAuLi4ocmVmcy4kcmVmU3RyYXRlZ3kgPT09IFwicmVsYXRpdmVcIiA/IFtdIDogcmVmcy5iYXNlUGF0aCksXG4gICAgICAgICAgICAgICAgcmVmcy5kZWZpbml0aW9uUGF0aCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgXS5qb2luKFwiL1wiKSxcbiAgICAgICAgICAgIFtyZWZzLmRlZmluaXRpb25QYXRoXToge1xuICAgICAgICAgICAgICAgIC4uLmRlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgIFtuYW1lXTogbWFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWE3XCIpIHtcbiAgICAgICAgY29tYmluZWQuJHNjaGVtYSA9IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjXCI7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWEyMDE5LTA5XCIgfHwgcmVmcy50YXJnZXQgPT09IFwib3BlbkFpXCIpIHtcbiAgICAgICAgY29tYmluZWQuJHNjaGVtYSA9IFwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAxOS0wOS9zY2hlbWEjXCI7XG4gICAgfVxuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQWlcIiAmJlxuICAgICAgICAoXCJhbnlPZlwiIGluIGNvbWJpbmVkIHx8XG4gICAgICAgICAgICBcIm9uZU9mXCIgaW4gY29tYmluZWQgfHxcbiAgICAgICAgICAgIFwiYWxsT2ZcIiBpbiBjb21iaW5lZCB8fFxuICAgICAgICAgICAgKFwidHlwZVwiIGluIGNvbWJpbmVkICYmIEFycmF5LmlzQXJyYXkoY29tYmluZWQudHlwZSkpKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBPcGVuQUkgbWF5IG5vdCBzdXBwb3J0IHNjaGVtYXMgd2l0aCB1bmlvbnMgYXMgcm9vdHMhIFRyeSB3cmFwcGluZyBpdCBpbiBhbiBvYmplY3QgcHJvcGVydHkuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gY29tYmluZWQ7XG59O1xuZXhwb3J0IHsgem9kVG9Kc29uU2NoZW1hIH07XG4iLCAiaW1wb3J0IHsgc3Bhd24sIHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiQGFjdGlvbnMvY29yZVwiO1xuXG4vLyBQaW5uZWQgdG8gbWF0Y2ggQGFudGhyb3BpYy1haS9jbGF1ZGUtYWdlbnQtc2RrQDAuMi4xNDEgaW4gcGFja2FnZS5qc29uLlxuLy8gQnVtcCBpbiBsb2Nrc3RlcCB3aXRoIHRoZSBTREsgZGVwZW5kZW5jeS5cbmNvbnN0IENMSV9WRVJTSU9OID0gXCIyLjEuMTQxXCI7XG5cbmxldCBjYWNoZWQ6IFByb21pc2U8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmICghY2FjaGVkKSBjYWNoZWQgPSByZXNvbHZlQ2xhdWRlQ2xpKCk7XG4gIHJldHVybiBjYWNoZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldENsYXVkZUNsaUNhY2hlKCk6IHZvaWQge1xuICBjYWNoZWQgPSBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvY2Vzcy5lbnYuU0hPUEZMT09SX0NMQVVERV9DTElfUEFUSDtcbiAgaWYgKG92ZXJyaWRlKSB7XG4gICAgaWYgKCFleGlzdHNTeW5jKG92ZXJyaWRlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTSE9QRkxPT1JfQ0xBVURFX0NMSV9QQVRIPSR7b3ZlcnJpZGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ2xhdWRlIENMSSBmcm9tIFNIT1BGTE9PUl9DTEFVREVfQ0xJX1BBVEg6ICR7b3ZlcnJpZGV9YCk7XG4gICAgcmV0dXJuIG92ZXJyaWRlO1xuICB9XG5cbiAgY29uc3Qgb25QYXRoID0gd2hpY2hDbGF1ZGUoKTtcbiAgaWYgKG9uUGF0aCkge1xuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ2xhdWRlIENMSSBvbiBQQVRIOiAke29uUGF0aH1gKTtcbiAgICByZXR1cm4gb25QYXRoO1xuICB9XG5cbiAgcmV0dXJuIGluc3RhbGxDbGF1ZGVDbGkoKTtcbn1cblxuZnVuY3Rpb24gd2hpY2hDbGF1ZGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcInNoXCIsIFtcIi1jXCIsIFwiY29tbWFuZCAtdiBjbGF1ZGVcIl0sIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pO1xuICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHBhdGggPSByZXN1bHQuc3Rkb3V0LnNwbGl0KC9cXHI/XFxuLylbMF0/LnRyaW0oKTtcbiAgcmV0dXJuIHBhdGggJiYgZXhpc3RzU3luYyhwYXRoKSA/IHBhdGggOiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvcmUuaW5mbyhcbiAgICBgQ2xhdWRlIENMSSBub3QgZm91bmQgb24gUEFUSC4gSW5zdGFsbGluZyB2JHtDTElfVkVSU0lPTn0gdmlhIGNsYXVkZS5haS9pbnN0YWxsLnNoYCxcbiAgKTtcbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHByb2MgPSBzcGF3bihcbiAgICAgIFwic2hcIixcbiAgICAgIFtcbiAgICAgICAgXCItY1wiLFxuICAgICAgICBgY3VybCAtZnNTTCBodHRwczovL2NsYXVkZS5haS9pbnN0YWxsLnNoIHwgYmFzaCAtcyAtLSAke0NMSV9WRVJTSU9OfWAsXG4gICAgICBdLFxuICAgICAgeyBzdGRpbzogW1wiaWdub3JlXCIsIFwiaW5oZXJpdFwiLCBcImluaGVyaXRcIl0gfSxcbiAgICApO1xuICAgIHByb2Mub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIHByb2Mub24oXCJjbG9zZVwiLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHJlc29sdmUoKTtcbiAgICAgIGVsc2UgcmVqZWN0KG5ldyBFcnJvcihgQ2xhdWRlIENMSSBpbnN0YWxsZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBpbnN0YWxsLnNoIGRlZmF1bHRzIHRvIH4vLmxvY2FsL2Jpbi9jbGF1ZGUuXG4gIGNvbnN0IGRlZmF1bHRQYXRoID0gam9pbihob21lZGlyKCksIFwiLmxvY2FsXCIsIFwiYmluXCIsIFwiY2xhdWRlXCIpO1xuICBpZiAoZXhpc3RzU3luYyhkZWZhdWx0UGF0aCkpIHtcbiAgICBjb3JlLmluZm8oYEluc3RhbGxlZCBDbGF1ZGUgQ0xJIGF0ICR7ZGVmYXVsdFBhdGh9YCk7XG4gICAgcmV0dXJuIGRlZmF1bHRQYXRoO1xuICB9XG5cbiAgY29uc3Qgb25QYXRoID0gd2hpY2hDbGF1ZGUoKTtcbiAgaWYgKG9uUGF0aCkge1xuICAgIGNvcmUuaW5mbyhgSW5zdGFsbGVkIENsYXVkZSBDTEkgcmVzb2x2ZWQgdmlhIFBBVEg6ICR7b25QYXRofWApO1xuICAgIHJldHVybiBvblBhdGg7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENsYXVkZSBDTEkgaW5zdGFsbGVyIHN1Y2NlZWRlZCBidXQgbm8gYmluYXJ5IGZvdW5kIGF0ICR7ZGVmYXVsdFBhdGh9IG9yIG9uIFBBVEhgLFxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgRWZmb3J0IH0gZnJvbSBcIi4uL2NvbmZpZy9pbnB1dHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi90b29scy90eXBlcy5qc1wiO1xuXG5leHBvcnQgdHlwZSBBZ2VudEVycm9yS2luZCA9XG4gIHwgXCJhZ2VudF90aW1lb3V0XCJcbiAgfCBcImFnZW50X2J1ZGdldFwiXG4gIHwgXCJhZ2VudF9tYXhfdHVybnNcIlxuICB8IFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIlxuICB8IFwiYWdlbnRfZXhlY3V0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBBZ2VudEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkga2luZDogQWdlbnRFcnJvcktpbmQsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBzdWJ0eXBlPzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSBcIkFnZW50RXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blN0YWdlQXJnczxUPiB7XG4gIHN5c3RlbVByb21wdDogc3RyaW5nO1xuICB1c2VyUHJvbXB0OiBzdHJpbmc7XG4gIHRvb2xzOiBTZGtUb29sW107XG4gIC8vIExvb3NlbmVkIGlucHV0IHR5cGUgdG8gYHVua25vd25gIHNvIHNjaGVtYXMgd2l0aCBgLmRlZmF1bHQoKWAgKHdob3NlIGlucHV0XG4gIC8vIGlzIGEgcGFydGlhbCBvZiB0aGUgb3V0cHV0KSBzdGlsbCBzYXRpc2Z5IHRoZSBjb25zdHJhaW50LlxuICBkZWNpc2lvblNjaGVtYTogei5ab2RUeXBlPFQsIHouWm9kVHlwZURlZiwgdW5rbm93bj47XG4gIG1vZGVsOiBzdHJpbmc7XG4gIGVmZm9ydD86IEVmZm9ydDtcbiAgYnVkZ2V0VXNkPzogbnVtYmVyO1xuICBtYXhUdXJucz86IG51bWJlcjtcbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICBhYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRBZGFwdGVyIHtcbiAgcnVuU3RhZ2U8VD4oYXJnczogUnVuU3RhZ2VBcmdzPFQ+KTogUHJvbWlzZTxUPjtcbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQge1xuICB0eXBlIEFwcHJvdmFsTW9kZSxcbiAgQ29kZXgsXG4gIHR5cGUgQ29kZXhPcHRpb25zLFxuICB0eXBlIE1vZGVsUmVhc29uaW5nRWZmb3J0LFxuICB0eXBlIFNhbmRib3hNb2RlLFxuICB0eXBlIFRocmVhZE9wdGlvbnMsXG59IGZyb20gXCJAb3BlbmFpL2NvZGV4LXNka1wiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSBcInpvZC10by1qc29uLXNjaGVtYVwiO1xuaW1wb3J0IHsgZW5zdXJlQ29kZXhDbGkgfSBmcm9tIFwiLi4vc2V0dXAvZW5zdXJlLWNvZGV4LWNsaS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBZ2VudEFkYXB0ZXIsIFJ1blN0YWdlQXJncyB9IGZyb20gXCIuL2FkYXB0ZXIuanNcIjtcbmltcG9ydCB7IEFnZW50RXJyb3IgfSBmcm9tIFwiLi9hZGFwdGVyLmpzXCI7XG5pbXBvcnQgeyBzdGFydFRvb2xCcmlkZ2UsIHR5cGUgVG9vbEJyaWRnZSB9IGZyb20gXCIuL21jcC1odHRwLWJyaWRnZS5qc1wiO1xuXG4vLyBSZXNvbHZlZCBDb2RleCBjb25maWd1cmF0aW9uIHRoZSBhZGFwdGVyIGhvbGRzLiBCdWlsdCBvbmNlIGF0IHN0YXJ0dXAgYnlcbi8vIGJ1aWxkQ29kZXhPcHRpb25zKCkgaW4gc3JjL2NvbmZpZy9jb2RleC1vcHRpb25zLnRzIChhdXRoIGJyYW5jaCwgdGVtcFxuLy8gQ09ERVhfSE9NRSB3cml0ZSwgc2FuZGJveCBkZWZhdWx0cykgXHUyMDE0IHRoZSBhZGFwdGVyIG93bnMgdGhlIGNvbnRyYWN0LCB0aGVcbi8vIGNvbmZpZyBsYXllciBwcm9kdWNlcyBpdCwgbWlycm9yaW5nIGhvdyBDbGF1ZGVBZ2VudEFkYXB0ZXIgdGFrZXMgYW4gYGVudmAuXG5leHBvcnQgaW50ZXJmYWNlIENvZGV4QWRhcHRlck9wdGlvbnMge1xuICAvLyBPcGVuQUkgQVBJIGtleSBwYXRoLiBGb3J3YXJkZWQgdG8gdGhlIENMSSBhcyBDT0RFWF9BUElfS0VZIGJ5IHRoZSBTREsuXG4gIGFwaUtleT86IHN0cmluZztcbiAgLy8gRW52aXJvbm1lbnQgZm9yIHRoZSBDb2RleCBDTEkgcHJvY2Vzcy4gVGhlIFNESyBkb2VzIE5PVCBpbmhlcml0XG4gIC8vIHByb2Nlc3MuZW52IHdoZW4gZW52IGlzIHNldCwgc28gdGhpcyBtdXN0IGNhcnJ5IFBBVEgvSE9NRS9ldGMuIHBsdXMgYW55XG4gIC8vIGF1dGggdmFycyAoZS5nLiBDT0RFWF9IT01FIGZvciB0aGUgQ2hhdEdQVCBhdXRoLmpzb24gcGF0aCkuXG4gIGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLy8gQWRkaXRpb25hbCBgLS1jb25maWcga2V5PXZhbHVlYCBvdmVycmlkZXMgZmxhdHRlbmVkIGJ5IHRoZSBTREsgKGUuZy5cbiAgLy8gY2xpX2F1dGhfY3JlZGVudGlhbHNfc3RvcmUsIHNhbmRib3ggdHdlYWtzKS5cbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgc2FuZGJveE1vZGU6IFNhbmRib3hNb2RlO1xuICBhcHByb3ZhbFBvbGljeTogQXBwcm92YWxNb2RlO1xuICBuZXR3b3JrQWNjZXNzRW5hYmxlZDogYm9vbGVhbjtcbiAgc2tpcEdpdFJlcG9DaGVjazogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29kZXhDbGlSZXNvbHZlciA9ICgpID0+IFByb21pc2U8c3RyaW5nPjtcblxuZXhwb3J0IGNsYXNzIENvZGV4QWdlbnRBZGFwdGVyIGltcGxlbWVudHMgQWdlbnRBZGFwdGVyIHtcbiAgLy8gTGF0Y2hlcyB0aGUgb25lLXRpbWUgXCJjYXBzIGFyZSBpZ25vcmVkXCIgd2FybmluZyBzbyBpdCBmaXJlcyBvbmNlIHBlclxuICAvLyBhZGFwdGVyIGluc3RhbmNlIGluc3RlYWQgb2Ygb24gZXZlcnkgc3RhZ2UgKGJ1ZGdldFVzZCBhbHdheXMgY2FycmllcyBhXG4gIC8vIG51bWVyaWMgZGVmYXVsdCwgc28gYW4gdW5jb25kaXRpb25hbCB3YXJuIHdvdWxkIHNwYW0gZXZlcnkgcnVuKS5cbiAgcHJpdmF0ZSBjYXBzV2FybmVkID0gZmFsc2U7XG5cbiAgLy8gcmVzb2x2ZUNsaSBpcyBpbnZva2VkIGxhemlseSBvbiB0aGUgZmlyc3QgcnVuU3RhZ2UgY2FsbC4gTGlrZSB0aGUgQ2xhdWRlXG4gIC8vIGFkYXB0ZXIsIGl0IGxvY2F0ZXMgKG9yIGluc3RhbGxzKSB0aGUgbmF0aXZlIGBjb2RleGAgYmluYXJ5LCB3aGljaCBzaGlwc1xuICAvLyBhcyBwbGF0Zm9ybS1zcGVjaWZpYyBhcnRpZmFjdHMgdGhhdCB3b24ndCBiZSBwcmVzZW50IGluIHRoZSBjb21taXR0ZWRcbiAgLy8gZGlzdC8gYnVuZGxlIG9uIGEgcnVubmVyIHdob3NlIGFyY2ggZGlmZmVycyBmcm9tIHRoZSBidWlsZCBob3N0LlxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdHM6IENvZGV4QWRhcHRlck9wdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlQ2xpOiBDb2RleENsaVJlc29sdmVyID0gZW5zdXJlQ29kZXhDbGksXG4gICkge31cblxuICBhc3luYyBydW5TdGFnZTxUPihhcmdzOiBSdW5TdGFnZUFyZ3M8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAvLyBDcmVkZW50aWFscyBhcmUgdmFsaWRhdGVkIGhlcmUsIG9uIGZpcnN0IHVzZSwgcmF0aGVyIHRoYW4gYXQgY29uc3RydWN0aW9uXG4gICAgLy8gdGltZS4gQ29uc3RydWN0aW5nIHRoZSBhZGFwdGVyIG11c3Qgbm90IHRocm93OiBlbnRyeS50cyBidWlsZHMgaXRcbiAgICAvLyB1bmNvbmRpdGlvbmFsbHksIGluY2x1ZGluZyBmb3IgYG1vZGU6IHJlc29sdmVgIHJvdXRlciBqb2JzIHRoYXQgbmV2ZXIgcnVuXG4gICAgLy8gYW4gYWdlbnQuIEEgc3BsaXQtcnVubmVyIHNldHVwIG1heSBsZWdpdGltYXRlbHkgc2NvcGUgQ29kZXggY3JlZHMgdG8gdGhlXG4gICAgLy8gZXhlY3V0ZSBqb2Igb25seSwgc28gYSBjb25zdHJ1Y3Rpb24tdGltZSB0aHJvdyB3b3VsZCBkZWFkbG9jayB0aGUgcm91dGVyLlxuICAgIC8vIFRoaXMgbWlycm9ycyB0aGUgQ2xhdWRlIHBhdGgsIHdob3NlIGVudiBidWlsZGVyIG5ldmVyIHRocm93cyBlaXRoZXIuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRzLmFwaUtleSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLm9wdHMuZW52LkNPREVYX0hPTUUgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgIFwiYWdlbnRfZXhlY3V0aW9uXCIsXG4gICAgICAgIFwiYWdlbnRfcHJvdmlkZXI9Y29kZXggcmVxdWlyZXMgb25lIG9mIG9wZW5haV9hcGlfa2V5IG9yIGNvZGV4X2F1dGhfanNvbi5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IGFyZ3MuYWJvcnRDb250cm9sbGVyID8/IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyBEaXN0aW5ndWlzaCBvdXIgb3duIHRpbWVvdXQgZnJvbSBhIGNhbGxlci1pbml0aWF0ZWQgYWJvcnQgc28gdGhlIGNhdGNoXG4gICAgLy8gY2FuIG1hcCB0aGVtIHRvIGRpZmZlcmVudCBBZ2VudEVycm9yIGtpbmRzLlxuICAgIGxldCB0aW1lZE91dCA9IGZhbHNlO1xuICAgIGNvbnN0IHRpbWVyID1cbiAgICAgIGFyZ3MudGltZW91dE1zICE9IG51bGxcbiAgICAgICAgPyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRpbWVkT3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgICB9LCBhcmdzLnRpbWVvdXRNcylcbiAgICAgICAgOiBudWxsO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuY2Fwc1dhcm5lZCAmJlxuICAgICAgKGFyZ3MuYnVkZ2V0VXNkICE9PSB1bmRlZmluZWQgfHwgYXJncy5tYXhUdXJucyAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgdGhpcy5jYXBzV2FybmVkID0gdHJ1ZTtcbiAgICAgIGNvcmUud2FybmluZyhcbiAgICAgICAgXCJDb2RleCBkb2VzIG5vdCBlbmZvcmNlIGJ1ZGdldFVzZCBvciBtYXhUdXJuczsgdGhlc2UgY2FwcyBhcmUgaWdub3JlZCB1bmRlciBhZ2VudF9wcm92aWRlcj1jb2RleC5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGJyaWRnZTogVG9vbEJyaWRnZSB8IG51bGwgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvZGV4UGF0aE92ZXJyaWRlID0gYXdhaXQgdGhpcy5yZXNvbHZlQ2xpKCk7XG5cbiAgICAgIGNvbnN0IGVudiA9IHsgLi4udGhpcy5vcHRzLmVudiB9O1xuICAgICAgY29uc3QgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4udGhpcy5vcHRzLmNvbmZpZyB9O1xuXG4gICAgICBpZiAoYXJncy50b29scy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGJyaWRnZSA9IGF3YWl0IHN0YXJ0VG9vbEJyaWRnZShhcmdzLnRvb2xzKTtcbiAgICAgICAgZW52LlNIT1BGTE9PUl9NQ1BfVE9LRU4gPSBicmlkZ2UudG9rZW47XG4gICAgICAgIGNvbmZpZy5tY3Bfc2VydmVycyA9IHtcbiAgICAgICAgICAuLi4oY29uZmlnLm1jcF9zZXJ2ZXJzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKSxcbiAgICAgICAgICBzaG9wZmxvb3I6IHtcbiAgICAgICAgICAgIHVybDogYnJpZGdlLnVybCxcbiAgICAgICAgICAgIGJlYXJlcl90b2tlbl9lbnZfdmFyOiBcIlNIT1BGTE9PUl9NQ1BfVE9LRU5cIixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBsb2dBZ2VudElucHV0KGFyZ3MpO1xuXG4gICAgICBjb25zdCBjb2RleCA9IG5ldyBDb2RleCh7XG4gICAgICAgIC4uLih0aGlzLm9wdHMuYXBpS2V5ICE9PSB1bmRlZmluZWQgPyB7IGFwaUtleTogdGhpcy5vcHRzLmFwaUtleSB9IDoge30pLFxuICAgICAgICBlbnYsXG4gICAgICAgIC8vIFRoZSBTREsgZmxhdHRlbnMgY29uZmlnIHRvIGRvdHRlZCBgLS1jb25maWcga2V5PXZhbHVlYCBvdmVycmlkZXMgYW5kXG4gICAgICAgIC8vIHNlcmlhbGl6ZXMgdmFsdWVzIGFzIFRPTUwgbGl0ZXJhbHMuIFRoZSBuZXN0ZWQgb2JqZWN0cyB3ZSBidWlsZCBoZXJlXG4gICAgICAgIC8vIChlLmcuIG1jcF9zZXJ2ZXJzLnNob3BmbG9vcikgYXJlIHZhbGlkIGNvbmZpZyB2YWx1ZXMgYXQgcnVudGltZTsgdGhlXG4gICAgICAgIC8vIGNhc3QgYnJpZGdlcyBvdXIgbmV1dHJhbCBSZWNvcmQgdG8gdGhlIFNESydzIHJlY3Vyc2l2ZSBjb25maWcgdHlwZS5cbiAgICAgICAgY29uZmlnOiBjb25maWcgYXMgTm9uTnVsbGFibGU8Q29kZXhPcHRpb25zW1wiY29uZmlnXCJdPixcbiAgICAgICAgY29kZXhQYXRoT3ZlcnJpZGUsXG4gICAgICB9KTtcblxuICAgICAgLy8gQ29kZXggaGFzIG5vIHNlcGFyYXRlIHN5c3RlbS1wcm9tcHQgZmllbGQ7IGl0IGNvbmNhdGVuYXRlcyB0ZXh0IGlucHV0LlxuICAgICAgY29uc3QgaW5wdXQgPSBgJHthcmdzLnN5c3RlbVByb21wdH1cXG5cXG4ke2FyZ3MudXNlclByb21wdH1gO1xuXG4gICAgICBjb25zdCB0aHJlYWRPcHRpb25zOiBUaHJlYWRPcHRpb25zID0ge1xuICAgICAgICBtb2RlbDogYXJncy5tb2RlbCxcbiAgICAgICAgc2FuZGJveE1vZGU6IHRoaXMub3B0cy5zYW5kYm94TW9kZSxcbiAgICAgICAgYXBwcm92YWxQb2xpY3k6IHRoaXMub3B0cy5hcHByb3ZhbFBvbGljeSxcbiAgICAgICAgbmV0d29ya0FjY2Vzc0VuYWJsZWQ6IHRoaXMub3B0cy5uZXR3b3JrQWNjZXNzRW5hYmxlZCxcbiAgICAgICAgc2tpcEdpdFJlcG9DaGVjazogdGhpcy5vcHRzLnNraXBHaXRSZXBvQ2hlY2ssXG4gICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgIC4uLihhcmdzLmVmZm9ydCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB7IG1vZGVsUmVhc29uaW5nRWZmb3J0OiBhcmdzLmVmZm9ydCBhcyBNb2RlbFJlYXNvbmluZ0VmZm9ydCB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0aHJlYWQgPSBjb2RleC5zdGFydFRocmVhZCh0aHJlYWRPcHRpb25zKTtcblxuICAgICAgY29yZS5zdGFydEdyb3VwKFwiQ29kZXggYWdlbnQgcnVuXCIpO1xuICAgICAgbGV0IHR1cm46IHsgZmluYWxSZXNwb25zZTogc3RyaW5nIH07XG4gICAgICB0cnkge1xuICAgICAgICB0dXJuID0gYXdhaXQgdGhyZWFkLnJ1bihpbnB1dCwge1xuICAgICAgICAgIG91dHB1dFNjaGVtYTogem9kVG9Kc29uU2NoZW1hKGFyZ3MuZGVjaXNpb25TY2hlbWEgYXMgei5ab2RUeXBlQW55LCB7XG4gICAgICAgICAgICB0YXJnZXQ6IFwib3BlbkFpXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZ1R1cm4odHVybik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjb3JlLmVuZEdyb3VwKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJhdyA9IHR1cm4uZmluYWxSZXNwb25zZTtcbiAgICAgIGlmICh0eXBlb2YgcmF3ICE9PSBcInN0cmluZ1wiIHx8IHJhdy50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgXCJhZ2VudF9pbnZhbGlkX291dHB1dFwiLFxuICAgICAgICAgIFwiY29kZXggdHVybiByZXR1cm5lZCBhbiBlbXB0eSBmaW5hbFJlc3BvbnNlXCIsXG4gICAgICAgICAgXCJlbXB0eV9maW5hbF9yZXNwb25zZVwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2VkSnNvbjogdW5rbm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZEpzb24gPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgXCJhZ2VudF9pbnZhbGlkX291dHB1dFwiLFxuICAgICAgICAgIGBjb2RleCBmaW5hbFJlc3BvbnNlIHdhcyBub3QgdmFsaWQgSlNPTjogJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycil9YCxcbiAgICAgICAgICBcImpzb25fcGFyc2VfZXJyb3JcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGFyZ3MuZGVjaXNpb25TY2hlbWEucGFyc2Uoc3RyaXBOdWxsUHJvcGVydGllcyhwYXJzZWRKc29uKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgXCJhZ2VudF9pbnZhbGlkX291dHB1dFwiLFxuICAgICAgICAgIGBjb2RleCBmaW5hbFJlc3BvbnNlIGZhaWxlZCBzY2hlbWEgdmFsaWRhdGlvbjogJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycil9YCxcbiAgICAgICAgICBcInNjaGVtYV92YWxpZGF0aW9uX2Vycm9yXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgQWdlbnRFcnJvcikgdGhyb3cgZXJyO1xuICAgICAgaWYgKHRpbWVkT3V0KSB7XG4gICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgIFwiYWdlbnRfdGltZW91dFwiLFxuICAgICAgICAgIGBjb2RleCBydW4gZXhjZWVkZWQgJHthcmdzLnRpbWVvdXRNc31tc2AsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICB0aHJvdyBuZXcgQWdlbnRFcnJvcihcImFnZW50X2V4ZWN1dGlvblwiLCBcImNvZGV4IHJ1biB3YXMgYWJvcnRlZFwiKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICBcImFnZW50X2V4ZWN1dGlvblwiLFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVyciksXG4gICAgICApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICBpZiAoYnJpZGdlKSBhd2FpdCBicmlkZ2UuY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICB9XG59XG5cbi8vIE9wZW5BSSBzdHJpY3Qgc3RydWN0dXJlZCBvdXRwdXRzIGNhbm5vdCBleHByZXNzIGFuIG9wdGlvbmFsIHByb3BlcnR5OiBldmVyeVxuLy8gZmllbGQgaXMgcmVxdWlyZWQgYW5kIGFuIGFic2VudCB2YWx1ZSBpcyByZXR1cm5lZCBhcyBleHBsaWNpdCBgbnVsbGAuXG4vLyB6b2RUb0pzb25TY2hlbWEodGFyZ2V0OiBcIm9wZW5BaVwiKSB0aGVyZWZvcmUgcmVuZGVycyBvdXIgYC5vcHRpb25hbCgpYCBmaWVsZHNcbi8vIGFzIG51bGxhYmxlLCBhbmQgQ29kZXggZW1pdHMgYG51bGxgIGZvciB0aGUgb25lcyBpdCBjaG9zZSB0byBvbWl0IChlLmcuIGFcbi8vIHJldmlldyBjb21tZW50J3Mgc3RhcnRfbGluZS9zdGFydF9zaWRlKS4gWm9kIGAub3B0aW9uYWwoKWAgYWNjZXB0c1xuLy8gYHVuZGVmaW5lZGAsIG5vdCBgbnVsbGAsIHNvIHRob3NlIGRlY2lzaW9ucyB3b3VsZCBmYWlsIHNjaGVtYSB2YWxpZGF0aW9uLlxuLy8gUmVjdXJzaXZlbHkgZHJvcCBudWxsLXZhbHVlZCBwcm9wZXJ0aWVzIGJlZm9yZSBwYXJzaW5nIHNvIHRoZXkgcmVhZCBhc1xuLy8gXCJhYnNlbnRcIi4gRmllbGRzIHRoYXQgYXJlIGdlbnVpbmVseSBgLm51bGxhYmxlKClgIGluIG91ciBzY2hlbWFzIHBhaXIgaXRcbi8vIHdpdGggYC5kZWZhdWx0KG51bGwpYCwgc28gYSBzdHJpcHBlZCBudWxsIHJvdW5kLXRyaXBzIGJhY2sgdG8gbnVsbCB2aWEgdGhlXG4vLyBkZWZhdWx0IGFuZCBubyBpbmZvcm1hdGlvbiBpcyBsb3N0LlxuZnVuY3Rpb24gc3RyaXBOdWxsUHJvcGVydGllcyh2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHN0cmlwTnVsbFByb3BlcnRpZXMpO1xuICB9XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgY29udGludWU7XG4gICAgICBvdXRba2V5XSA9IHN0cmlwTnVsbFByb3BlcnRpZXModmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ0FnZW50SW5wdXQ8VD4oYXJnczogUnVuU3RhZ2VBcmdzPFQ+KTogdm9pZCB7XG4gIGNvcmUuc3RhcnRHcm91cChgQ29kZXggYWdlbnQgaW5wdXQgKCR7YXJncy5tb2RlbH0pYCk7XG4gIHRyeSB7XG4gICAgY29yZS5pbmZvKGBtb2RlbDogJHthcmdzLm1vZGVsfWApO1xuICAgIGlmIChhcmdzLmVmZm9ydCAhPT0gdW5kZWZpbmVkKSBjb3JlLmluZm8oYGVmZm9ydDogJHthcmdzLmVmZm9ydH1gKTtcbiAgICBpZiAoYXJncy50aW1lb3V0TXMgIT09IHVuZGVmaW5lZCkgY29yZS5pbmZvKGB0aW1lb3V0TXM6ICR7YXJncy50aW1lb3V0TXN9YCk7XG4gICAgY29uc3QgdG9vbExpc3QgPSBhcmdzLnRvb2xzLmxlbmd0aFxuICAgICAgPyBhcmdzLnRvb2xzLm1hcCgodCkgPT4gYC0gJHt0Lm5hbWV9OiAke3QuZGVzY3JpcHRpb24gPz8gXCJcIn1gKS5qb2luKFwiXFxuXCIpXG4gICAgICA6IFwiKG5vbmUpXCI7XG4gICAgY29yZS5pbmZvKGB0b29sczpcXG4ke3Rvb2xMaXN0fWApO1xuICAgIGNvcmUuaW5mbyhgc3lzdGVtUHJvbXB0OlxcbiR7YXJncy5zeXN0ZW1Qcm9tcHR9YCk7XG4gICAgY29yZS5pbmZvKGB1c2VyUHJvbXB0OlxcbiR7YXJncy51c2VyUHJvbXB0fWApO1xuICB9IGZpbmFsbHkge1xuICAgIGNvcmUuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dUdXJuKHR1cm46IHsgZmluYWxSZXNwb25zZTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgY29uc3QgcHJldmlldyA9XG4gICAgdHVybi5maW5hbFJlc3BvbnNlLmxlbmd0aCA+IDYwMFxuICAgICAgPyBgJHt0dXJuLmZpbmFsUmVzcG9uc2Uuc2xpY2UoMCwgNjAwKX0uLi4gW3RydW5jYXRlZCwgJHt0dXJuLmZpbmFsUmVzcG9uc2UubGVuZ3RofSBjaGFyc11gXG4gICAgICA6IHR1cm4uZmluYWxSZXNwb25zZTtcbiAgY29yZS5pbmZvKGBbZmluYWxdICR7cHJldmlld31gKTtcbn1cbiIsICJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgb3MgZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuZXhwb3J0IHR5cGUgT3V0cHV0U2NoZW1hRmlsZSA9IHtcbiAgc2NoZW1hUGF0aD86IHN0cmluZztcbiAgY2xlYW51cDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVPdXRwdXRTY2hlbWFGaWxlKHNjaGVtYTogdW5rbm93bik6IFByb21pc2U8T3V0cHV0U2NoZW1hRmlsZT4ge1xuICBpZiAoc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyBjbGVhbnVwOiBhc3luYyAoKSA9PiB7fSB9O1xuICB9XG5cbiAgaWYgKCFpc0pzb25PYmplY3Qoc2NoZW1hKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm91dHB1dFNjaGVtYSBtdXN0IGJlIGEgcGxhaW4gSlNPTiBvYmplY3RcIik7XG4gIH1cblxuICBjb25zdCBzY2hlbWFEaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjb2RleC1vdXRwdXQtc2NoZW1hLVwiKSk7XG4gIGNvbnN0IHNjaGVtYVBhdGggPSBwYXRoLmpvaW4oc2NoZW1hRGlyLCBcInNjaGVtYS5qc29uXCIpO1xuICBjb25zdCBjbGVhbnVwID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5ybShzY2hlbWFEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHN1cHByZXNzXG4gICAgfVxuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHNjaGVtYVBhdGgsIEpTT04uc3RyaW5naWZ5KHNjaGVtYSksIFwidXRmOFwiKTtcbiAgICByZXR1cm4geyBzY2hlbWFQYXRoLCBjbGVhbnVwIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgYXdhaXQgY2xlYW51cCgpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSnNvbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG4iLCAiaW1wb3J0IHsgQ29kZXhPcHRpb25zIH0gZnJvbSBcIi4vY29kZXhPcHRpb25zXCI7XG5pbXBvcnQgeyBUaHJlYWRFdmVudCwgVGhyZWFkRXJyb3IsIFVzYWdlIH0gZnJvbSBcIi4vZXZlbnRzXCI7XG5pbXBvcnQgeyBDb2RleEV4ZWMgfSBmcm9tIFwiLi9leGVjXCI7XG5pbXBvcnQgeyBUaHJlYWRJdGVtIH0gZnJvbSBcIi4vaXRlbXNcIjtcbmltcG9ydCB7IFRocmVhZE9wdGlvbnMgfSBmcm9tIFwiLi90aHJlYWRPcHRpb25zXCI7XG5pbXBvcnQgeyBUdXJuT3B0aW9ucyB9IGZyb20gXCIuL3R1cm5PcHRpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY2hlbWFGaWxlIH0gZnJvbSBcIi4vb3V0cHV0U2NoZW1hRmlsZVwiO1xuXG4vKiogQ29tcGxldGVkIHR1cm4uICovXG5leHBvcnQgdHlwZSBUdXJuID0ge1xuICBpdGVtczogVGhyZWFkSXRlbVtdO1xuICBmaW5hbFJlc3BvbnNlOiBzdHJpbmc7XG4gIHVzYWdlOiBVc2FnZSB8IG51bGw7XG59O1xuXG4vKiogQWxpYXMgZm9yIGBUdXJuYCB0byBkZXNjcmliZSB0aGUgcmVzdWx0IG9mIGBydW4oKWAuICovXG5leHBvcnQgdHlwZSBSdW5SZXN1bHQgPSBUdXJuO1xuXG4vKiogVGhlIHJlc3VsdCBvZiB0aGUgYHJ1blN0cmVhbWVkYCBtZXRob2QuICovXG5leHBvcnQgdHlwZSBTdHJlYW1lZFR1cm4gPSB7XG4gIGV2ZW50czogQXN5bmNHZW5lcmF0b3I8VGhyZWFkRXZlbnQ+O1xufTtcblxuLyoqIEFsaWFzIGZvciBgU3RyZWFtZWRUdXJuYCB0byBkZXNjcmliZSB0aGUgcmVzdWx0IG9mIGBydW5TdHJlYW1lZCgpYC4gKi9cbmV4cG9ydCB0eXBlIFJ1blN0cmVhbWVkUmVzdWx0ID0gU3RyZWFtZWRUdXJuO1xuXG4vKiogQW4gaW5wdXQgdG8gc2VuZCB0byB0aGUgYWdlbnQuICovXG5leHBvcnQgdHlwZSBVc2VySW5wdXQgPVxuICB8IHtcbiAgICAgIHR5cGU6IFwidGV4dFwiO1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImxvY2FsX2ltYWdlXCI7XG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgSW5wdXQgPSBzdHJpbmcgfCBVc2VySW5wdXRbXTtcblxuLyoqIFJlcHJlc2VudCBhIHRocmVhZCBvZiBjb252ZXJzYXRpb24gd2l0aCB0aGUgYWdlbnQuIE9uZSB0aHJlYWQgY2FuIGhhdmUgbXVsdGlwbGUgY29uc2VjdXRpdmUgdHVybnMuICovXG5leHBvcnQgY2xhc3MgVGhyZWFkIHtcbiAgcHJpdmF0ZSBfZXhlYzogQ29kZXhFeGVjO1xuICBwcml2YXRlIF9vcHRpb25zOiBDb2RleE9wdGlvbnM7XG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIF90aHJlYWRPcHRpb25zOiBUaHJlYWRPcHRpb25zO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGhyZWFkLiBQb3B1bGF0ZWQgYWZ0ZXIgdGhlIGZpcnN0IHR1cm4gc3RhcnRzLiAqL1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBleGVjOiBDb2RleEV4ZWMsXG4gICAgb3B0aW9uczogQ29kZXhPcHRpb25zLFxuICAgIHRocmVhZE9wdGlvbnM6IFRocmVhZE9wdGlvbnMsXG4gICAgaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICB0aGlzLl9leGVjID0gZXhlYztcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLl9pZCA9IGlkO1xuICAgIHRoaXMuX3RocmVhZE9wdGlvbnMgPSB0aHJlYWRPcHRpb25zO1xuICB9XG5cbiAgLyoqIFByb3ZpZGVzIHRoZSBpbnB1dCB0byB0aGUgYWdlbnQgYW5kIHN0cmVhbXMgZXZlbnRzIGFzIHRoZXkgYXJlIHByb2R1Y2VkIGR1cmluZyB0aGUgdHVybi4gKi9cbiAgYXN5bmMgcnVuU3RyZWFtZWQoaW5wdXQ6IElucHV0LCB0dXJuT3B0aW9uczogVHVybk9wdGlvbnMgPSB7fSk6IFByb21pc2U8U3RyZWFtZWRUdXJuPiB7XG4gICAgcmV0dXJuIHsgZXZlbnRzOiB0aGlzLnJ1blN0cmVhbWVkSW50ZXJuYWwoaW5wdXQsIHR1cm5PcHRpb25zKSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyAqcnVuU3RyZWFtZWRJbnRlcm5hbChcbiAgICBpbnB1dDogSW5wdXQsXG4gICAgdHVybk9wdGlvbnM6IFR1cm5PcHRpb25zID0ge30sXG4gICk6IEFzeW5jR2VuZXJhdG9yPFRocmVhZEV2ZW50PiB7XG4gICAgY29uc3QgeyBzY2hlbWFQYXRoLCBjbGVhbnVwIH0gPSBhd2FpdCBjcmVhdGVPdXRwdXRTY2hlbWFGaWxlKHR1cm5PcHRpb25zLm91dHB1dFNjaGVtYSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX3RocmVhZE9wdGlvbnM7XG4gICAgY29uc3QgeyBwcm9tcHQsIGltYWdlcyB9ID0gbm9ybWFsaXplSW5wdXQoaW5wdXQpO1xuICAgIGNvbnN0IGdlbmVyYXRvciA9IHRoaXMuX2V4ZWMucnVuKHtcbiAgICAgIGlucHV0OiBwcm9tcHQsXG4gICAgICBiYXNlVXJsOiB0aGlzLl9vcHRpb25zLmJhc2VVcmwsXG4gICAgICBhcGlLZXk6IHRoaXMuX29wdGlvbnMuYXBpS2V5LFxuICAgICAgdGhyZWFkSWQ6IHRoaXMuX2lkLFxuICAgICAgaW1hZ2VzLFxuICAgICAgbW9kZWw6IG9wdGlvbnM/Lm1vZGVsLFxuICAgICAgc2FuZGJveE1vZGU6IG9wdGlvbnM/LnNhbmRib3hNb2RlLFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTogb3B0aW9ucz8ud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgIHNraXBHaXRSZXBvQ2hlY2s6IG9wdGlvbnM/LnNraXBHaXRSZXBvQ2hlY2ssXG4gICAgICBvdXRwdXRTY2hlbWFGaWxlOiBzY2hlbWFQYXRoLFxuICAgICAgbW9kZWxSZWFzb25pbmdFZmZvcnQ6IG9wdGlvbnM/Lm1vZGVsUmVhc29uaW5nRWZmb3J0LFxuICAgICAgc2lnbmFsOiB0dXJuT3B0aW9ucy5zaWduYWwsXG4gICAgICBuZXR3b3JrQWNjZXNzRW5hYmxlZDogb3B0aW9ucz8ubmV0d29ya0FjY2Vzc0VuYWJsZWQsXG4gICAgICB3ZWJTZWFyY2hNb2RlOiBvcHRpb25zPy53ZWJTZWFyY2hNb2RlLFxuICAgICAgd2ViU2VhcmNoRW5hYmxlZDogb3B0aW9ucz8ud2ViU2VhcmNoRW5hYmxlZCxcbiAgICAgIGFwcHJvdmFsUG9saWN5OiBvcHRpb25zPy5hcHByb3ZhbFBvbGljeSxcbiAgICAgIGFkZGl0aW9uYWxEaXJlY3Rvcmllczogb3B0aW9ucz8uYWRkaXRpb25hbERpcmVjdG9yaWVzLFxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgZ2VuZXJhdG9yKSB7XG4gICAgICAgIGxldCBwYXJzZWQ6IFRocmVhZEV2ZW50O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoaXRlbSkgYXMgVGhyZWFkRXZlbnQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgaXRlbTogJHtpdGVtfWAsIHsgY2F1c2U6IGVycm9yIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZWQudHlwZSA9PT0gXCJ0aHJlYWQuc3RhcnRlZFwiKSB7XG4gICAgICAgICAgdGhpcy5faWQgPSBwYXJzZWQudGhyZWFkX2lkO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIHBhcnNlZDtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQcm92aWRlcyB0aGUgaW5wdXQgdG8gdGhlIGFnZW50IGFuZCByZXR1cm5zIHRoZSBjb21wbGV0ZWQgdHVybi4gKi9cbiAgYXN5bmMgcnVuKGlucHV0OiBJbnB1dCwgdHVybk9wdGlvbnM6IFR1cm5PcHRpb25zID0ge30pOiBQcm9taXNlPFR1cm4+IHtcbiAgICBjb25zdCBnZW5lcmF0b3IgPSB0aGlzLnJ1blN0cmVhbWVkSW50ZXJuYWwoaW5wdXQsIHR1cm5PcHRpb25zKTtcbiAgICBjb25zdCBpdGVtczogVGhyZWFkSXRlbVtdID0gW107XG4gICAgbGV0IGZpbmFsUmVzcG9uc2U6IHN0cmluZyA9IFwiXCI7XG4gICAgbGV0IHVzYWdlOiBVc2FnZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCB0dXJuRmFpbHVyZTogVGhyZWFkRXJyb3IgfCBudWxsID0gbnVsbDtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmVyYXRvcikge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFwiaXRlbS5jb21wbGV0ZWRcIikge1xuICAgICAgICBpZiAoZXZlbnQuaXRlbS50eXBlID09PSBcImFnZW50X21lc3NhZ2VcIikge1xuICAgICAgICAgIGZpbmFsUmVzcG9uc2UgPSBldmVudC5pdGVtLnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbXMucHVzaChldmVudC5pdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gXCJ0dXJuLmNvbXBsZXRlZFwiKSB7XG4gICAgICAgIHVzYWdlID0gZXZlbnQudXNhZ2U7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IFwidHVybi5mYWlsZWRcIikge1xuICAgICAgICB0dXJuRmFpbHVyZSA9IGV2ZW50LmVycm9yO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR1cm5GYWlsdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodHVybkZhaWx1cmUubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGl0ZW1zLCBmaW5hbFJlc3BvbnNlLCB1c2FnZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlucHV0KGlucHV0OiBJbnB1dCk6IHsgcHJvbXB0OiBzdHJpbmc7IGltYWdlczogc3RyaW5nW10gfSB7XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4geyBwcm9tcHQ6IGlucHV0LCBpbWFnZXM6IFtdIH07XG4gIH1cbiAgY29uc3QgcHJvbXB0UGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGltYWdlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGlucHV0KSB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgIHByb21wdFBhcnRzLnB1c2goaXRlbS50ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJsb2NhbF9pbWFnZVwiKSB7XG4gICAgICBpbWFnZXMucHVzaChpdGVtLnBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBwcm9tcHQ6IHByb21wdFBhcnRzLmpvaW4oXCJcXG5cXG5cIiksIGltYWdlcyB9O1xufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgc3RhdFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHJlYWRsaW5lIGZyb20gXCJub2RlOnJlYWRsaW5lXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29kZXhDb25maWdPYmplY3QsIENvZGV4Q29uZmlnVmFsdWUgfSBmcm9tIFwiLi9jb2RleE9wdGlvbnNcIjtcbmltcG9ydCB7IFNhbmRib3hNb2RlLCBNb2RlbFJlYXNvbmluZ0VmZm9ydCwgQXBwcm92YWxNb2RlLCBXZWJTZWFyY2hNb2RlIH0gZnJvbSBcIi4vdGhyZWFkT3B0aW9uc1wiO1xuXG5leHBvcnQgdHlwZSBDb2RleEV4ZWNBcmdzID0ge1xuICBpbnB1dDogc3RyaW5nO1xuXG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGFwaUtleT86IHN0cmluZztcbiAgdGhyZWFkSWQ/OiBzdHJpbmcgfCBudWxsO1xuICBpbWFnZXM/OiBzdHJpbmdbXTtcbiAgLy8gLS1tb2RlbFxuICBtb2RlbD86IHN0cmluZztcbiAgLy8gLS1zYW5kYm94XG4gIHNhbmRib3hNb2RlPzogU2FuZGJveE1vZGU7XG4gIC8vIC0tY2RcbiAgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcbiAgLy8gLS1hZGQtZGlyXG4gIGFkZGl0aW9uYWxEaXJlY3Rvcmllcz86IHN0cmluZ1tdO1xuICAvLyAtLXNraXAtZ2l0LXJlcG8tY2hlY2tcbiAgc2tpcEdpdFJlcG9DaGVjaz86IGJvb2xlYW47XG4gIC8vIC0tb3V0cHV0LXNjaGVtYVxuICBvdXRwdXRTY2hlbWFGaWxlPzogc3RyaW5nO1xuICAvLyAtLWNvbmZpZyBtb2RlbF9yZWFzb25pbmdfZWZmb3J0XG4gIG1vZGVsUmVhc29uaW5nRWZmb3J0PzogTW9kZWxSZWFzb25pbmdFZmZvcnQ7XG4gIC8vIEFib3J0U2lnbmFsIHRvIGNhbmNlbCB0aGUgZXhlY3V0aW9uXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvLyAtLWNvbmZpZyBzYW5kYm94X3dvcmtzcGFjZV93cml0ZS5uZXR3b3JrX2FjY2Vzc1xuICBuZXR3b3JrQWNjZXNzRW5hYmxlZD86IGJvb2xlYW47XG4gIC8vIC0tY29uZmlnIHdlYl9zZWFyY2hcbiAgd2ViU2VhcmNoTW9kZT86IFdlYlNlYXJjaE1vZGU7XG4gIC8vIGxlZ2FjeSAtLWNvbmZpZyBmZWF0dXJlcy53ZWJfc2VhcmNoX3JlcXVlc3RcbiAgd2ViU2VhcmNoRW5hYmxlZD86IGJvb2xlYW47XG4gIC8vIC0tY29uZmlnIGFwcHJvdmFsX3BvbGljeVxuICBhcHByb3ZhbFBvbGljeT86IEFwcHJvdmFsTW9kZTtcbn07XG5cbmNvbnN0IElOVEVSTkFMX09SSUdJTkFUT1JfRU5WID0gXCJDT0RFWF9JTlRFUk5BTF9PUklHSU5BVE9SX09WRVJSSURFXCI7XG5jb25zdCBUWVBFU0NSSVBUX1NES19PUklHSU5BVE9SID0gXCJjb2RleF9zZGtfdHNcIjtcbmNvbnN0IENPREVYX05QTV9OQU1FID0gXCJAb3BlbmFpL2NvZGV4XCI7XG5cbmNvbnN0IFBMQVRGT1JNX1BBQ0tBR0VfQllfVEFSR0VUOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIng4Nl82NC11bmtub3duLWxpbnV4LW11c2xcIjogXCJAb3BlbmFpL2NvZGV4LWxpbnV4LXg2NFwiLFxuICBcImFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsXCI6IFwiQG9wZW5haS9jb2RleC1saW51eC1hcm02NFwiLFxuICBcIng4Nl82NC1hcHBsZS1kYXJ3aW5cIjogXCJAb3BlbmFpL2NvZGV4LWRhcndpbi14NjRcIixcbiAgXCJhYXJjaDY0LWFwcGxlLWRhcndpblwiOiBcIkBvcGVuYWkvY29kZXgtZGFyd2luLWFybTY0XCIsXG4gIFwieDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1wiOiBcIkBvcGVuYWkvY29kZXgtd2luMzIteDY0XCIsXG4gIFwiYWFyY2g2NC1wYy13aW5kb3dzLW1zdmNcIjogXCJAb3BlbmFpL2NvZGV4LXdpbjMyLWFybTY0XCIsXG59O1xuXG5jb25zdCBtb2R1bGVSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG50eXBlIENvZGV4UGF0aFJlc29sdXRpb24gPSB7XG4gIGV4ZWN1dGFibGVQYXRoOiBzdHJpbmc7XG4gIHBhdGhEaXJzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2RleEV4ZWMge1xuICBwcml2YXRlIGV4ZWN1dGFibGVQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcGF0aERpcnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIGVudk92ZXJyaWRlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpdmF0ZSBjb25maWdPdmVycmlkZXM/OiBDb2RleENvbmZpZ09iamVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBleGVjdXRhYmxlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBjb25maWdPdmVycmlkZXM/OiBDb2RleENvbmZpZ09iamVjdCxcbiAgKSB7XG4gICAgaWYgKGV4ZWN1dGFibGVQYXRoKSB7XG4gICAgICB0aGlzLmV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGg7XG4gICAgICB0aGlzLnBhdGhEaXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gZmluZENvZGV4UGF0aCgpO1xuICAgICAgdGhpcy5leGVjdXRhYmxlUGF0aCA9IHJlc29sdmVkLmV4ZWN1dGFibGVQYXRoO1xuICAgICAgdGhpcy5wYXRoRGlycyA9IHJlc29sdmVkLnBhdGhEaXJzO1xuICAgIH1cbiAgICB0aGlzLmVudk92ZXJyaWRlID0gZW52O1xuICAgIHRoaXMuY29uZmlnT3ZlcnJpZGVzID0gY29uZmlnT3ZlcnJpZGVzO1xuICB9XG5cbiAgYXN5bmMgKnJ1bihhcmdzOiBDb2RleEV4ZWNBcmdzKTogQXN5bmNHZW5lcmF0b3I8c3RyaW5nPiB7XG4gICAgY29uc3QgY29tbWFuZEFyZ3M6IHN0cmluZ1tdID0gW1wiZXhlY1wiLCBcIi0tZXhwZXJpbWVudGFsLWpzb25cIl07XG5cbiAgICBpZiAodGhpcy5jb25maWdPdmVycmlkZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgb3ZlcnJpZGUgb2Ygc2VyaWFsaXplQ29uZmlnT3ZlcnJpZGVzKHRoaXMuY29uZmlnT3ZlcnJpZGVzKSkge1xuICAgICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1jb25maWdcIiwgb3ZlcnJpZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmJhc2VVcmwpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXG4gICAgICAgIFwiLS1jb25maWdcIixcbiAgICAgICAgYG9wZW5haV9iYXNlX3VybD0ke3RvVG9tbFZhbHVlKGFyZ3MuYmFzZVVybCwgXCJvcGVuYWlfYmFzZV91cmxcIil9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubW9kZWwpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLW1vZGVsXCIsIGFyZ3MubW9kZWwpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLnNhbmRib3hNb2RlKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1zYW5kYm94XCIsIGFyZ3Muc2FuZGJveE1vZGUpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLndvcmtpbmdEaXJlY3RvcnkpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWNkXCIsIGFyZ3Mud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MuYWRkaXRpb25hbERpcmVjdG9yaWVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgZGlyIG9mIGFyZ3MuYWRkaXRpb25hbERpcmVjdG9yaWVzKSB7XG4gICAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWFkZC1kaXJcIiwgZGlyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5za2lwR2l0UmVwb0NoZWNrKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1za2lwLWdpdC1yZXBvLWNoZWNrXCIpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLm91dHB1dFNjaGVtYUZpbGUpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLW91dHB1dC1zY2hlbWFcIiwgYXJncy5vdXRwdXRTY2hlbWFGaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5tb2RlbFJlYXNvbmluZ0VmZm9ydCkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tY29uZmlnXCIsIGBtb2RlbF9yZWFzb25pbmdfZWZmb3J0PVwiJHthcmdzLm1vZGVsUmVhc29uaW5nRWZmb3J0fVwiYCk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubmV0d29ya0FjY2Vzc0VuYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcbiAgICAgICAgXCItLWNvbmZpZ1wiLFxuICAgICAgICBgc2FuZGJveF93b3Jrc3BhY2Vfd3JpdGUubmV0d29ya19hY2Nlc3M9JHthcmdzLm5ldHdvcmtBY2Nlc3NFbmFibGVkfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLndlYlNlYXJjaE1vZGUpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWNvbmZpZ1wiLCBgd2ViX3NlYXJjaD1cIiR7YXJncy53ZWJTZWFyY2hNb2RlfVwiYCk7XG4gICAgfSBlbHNlIGlmIChhcmdzLndlYlNlYXJjaEVuYWJsZWQgPT09IHRydWUpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWNvbmZpZ1wiLCBgd2ViX3NlYXJjaD1cImxpdmVcImApO1xuICAgIH0gZWxzZSBpZiAoYXJncy53ZWJTZWFyY2hFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tY29uZmlnXCIsIGB3ZWJfc2VhcmNoPVwiZGlzYWJsZWRcImApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmFwcHJvdmFsUG9saWN5KSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1jb25maWdcIiwgYGFwcHJvdmFsX3BvbGljeT1cIiR7YXJncy5hcHByb3ZhbFBvbGljeX1cImApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLnRocmVhZElkKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwicmVzdW1lXCIsIGFyZ3MudGhyZWFkSWQpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGFyZ3MuaW1hZ2VzKSB7XG4gICAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWltYWdlXCIsIGltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAodGhpcy5lbnZPdmVycmlkZSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihlbnYsIHRoaXMuZW52T3ZlcnJpZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudikpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbnZba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZW52W0lOVEVSTkFMX09SSUdJTkFUT1JfRU5WXSkge1xuICAgICAgZW52W0lOVEVSTkFMX09SSUdJTkFUT1JfRU5WXSA9IFRZUEVTQ1JJUFRfU0RLX09SSUdJTkFUT1I7XG4gICAgfVxuICAgIGlmIChhcmdzLmFwaUtleSkge1xuICAgICAgZW52LkNPREVYX0FQSV9LRVkgPSBhcmdzLmFwaUtleTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF0aERpcnMubGVuZ3RoID4gMCkge1xuICAgICAgcHJlcGVuZFBhdGhEaXJzKGVudiwgdGhpcy5wYXRoRGlycyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bih0aGlzLmV4ZWN1dGFibGVQYXRoLCBjb21tYW5kQXJncywge1xuICAgICAgZW52LFxuICAgICAgc2lnbmFsOiBhcmdzLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGxldCBzcGF3bkVycm9yOiB1bmtub3duIHwgbnVsbCA9IG51bGw7XG4gICAgY2hpbGQub25jZShcImVycm9yXCIsIChlcnIpID0+IChzcGF3bkVycm9yID0gZXJyKSk7XG5cbiAgICBpZiAoIWNoaWxkLnN0ZGluKSB7XG4gICAgICBjaGlsZC5raWxsKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDaGlsZCBwcm9jZXNzIGhhcyBubyBzdGRpblwiKTtcbiAgICB9XG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoYXJncy5pbnB1dCk7XG4gICAgY2hpbGQuc3RkaW4uZW5kKCk7XG5cbiAgICBpZiAoIWNoaWxkLnN0ZG91dCkge1xuICAgICAgY2hpbGQua2lsbCgpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hpbGQgcHJvY2VzcyBoYXMgbm8gc3Rkb3V0XCIpO1xuICAgIH1cbiAgICBjb25zdCBzdGRlcnJDaHVua3M6IEJ1ZmZlcltdID0gW107XG5cbiAgICBpZiAoY2hpbGQuc3RkZXJyKSB7XG4gICAgICBjaGlsZC5zdGRlcnIub24oXCJkYXRhXCIsIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZGVyckNodW5rcy5wdXNoKGRhdGEpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpdFByb21pc2UgPSBuZXcgUHJvbWlzZTx7IGNvZGU6IG51bWJlciB8IG51bGw7IHNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsIH0+KFxuICAgICAgKHJlc29sdmUpID0+IHtcbiAgICAgICAgY2hpbGQub25jZShcImV4aXRcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoeyBjb2RlLCBzaWduYWwgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgaW5wdXQ6IGNoaWxkLnN0ZG91dCxcbiAgICAgIGNybGZEZWxheTogSW5maW5pdHksXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIHJsKSB7XG4gICAgICAgIC8vIGBsaW5lYCBpcyBhIHN0cmluZyAoTm9kZSBzZXRzIGRlZmF1bHQgZW5jb2RpbmcgdG8gdXRmOCBmb3IgcmVhZGxpbmUpXG4gICAgICAgIHlpZWxkIGxpbmUgYXMgc3RyaW5nO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3Bhd25FcnJvcikgdGhyb3cgc3Bhd25FcnJvcjtcbiAgICAgIGNvbnN0IHsgY29kZSwgc2lnbmFsIH0gPSBhd2FpdCBleGl0UHJvbWlzZTtcbiAgICAgIGlmIChjb2RlICE9PSAwIHx8IHNpZ25hbCkge1xuICAgICAgICBjb25zdCBzdGRlcnJCdWZmZXIgPSBCdWZmZXIuY29uY2F0KHN0ZGVyckNodW5rcyk7XG4gICAgICAgIGNvbnN0IGRldGFpbCA9IHNpZ25hbCA/IGBzaWduYWwgJHtzaWduYWx9YCA6IGBjb2RlICR7Y29kZSA/PyAxfWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29kZXggRXhlYyBleGl0ZWQgd2l0aCAke2RldGFpbH06ICR7c3RkZXJyQnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiKX1gKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIGNoaWxkLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFjaGlsZC5raWxsZWQpIGNoaWxkLmtpbGwoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplQ29uZmlnT3ZlcnJpZGVzKGNvbmZpZ092ZXJyaWRlczogQ29kZXhDb25maWdPYmplY3QpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG92ZXJyaWRlczogc3RyaW5nW10gPSBbXTtcbiAgZmxhdHRlbkNvbmZpZ092ZXJyaWRlcyhjb25maWdPdmVycmlkZXMsIFwiXCIsIG92ZXJyaWRlcyk7XG4gIHJldHVybiBvdmVycmlkZXM7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5Db25maWdPdmVycmlkZXMoXG4gIHZhbHVlOiBDb2RleENvbmZpZ1ZhbHVlLFxuICBwcmVmaXg6IHN0cmluZyxcbiAgb3ZlcnJpZGVzOiBzdHJpbmdbXSxcbik6IHZvaWQge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgb3ZlcnJpZGVzLnB1c2goYCR7cHJlZml4fT0ke3RvVG9tbFZhbHVlKHZhbHVlLCBwcmVmaXgpfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2RleCBjb25maWcgb3ZlcnJpZGVzIG11c3QgYmUgYSBwbGFpbiBvYmplY3RcIik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKTtcbiAgaWYgKCFwcmVmaXggJiYgZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJlZml4ICYmIGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgb3ZlcnJpZGVzLnB1c2goYCR7cHJlZml4fT17fWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgY2hpbGRdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29kZXggY29uZmlnIG92ZXJyaWRlIGtleXMgbXVzdCBiZSBub24tZW1wdHkgc3RyaW5nc1wiKTtcbiAgICB9XG4gICAgaWYgKGNoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGNoaWxkKSkge1xuICAgICAgZmxhdHRlbkNvbmZpZ092ZXJyaWRlcyhjaGlsZCwgcGF0aCwgb3ZlcnJpZGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3ZlcnJpZGVzLnB1c2goYCR7cGF0aH09JHt0b1RvbWxWYWx1ZShjaGlsZCwgcGF0aCl9YCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvVG9tbFZhbHVlKHZhbHVlOiBDb2RleENvbmZpZ1ZhbHVlLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29kZXggY29uZmlnIG92ZXJyaWRlIGF0ICR7cGF0aH0gbXVzdCBiZSBhIGZpbml0ZSBudW1iZXJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiB2YWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgcmVuZGVyZWQgPSB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1RvbWxWYWx1ZShpdGVtLCBgJHtwYXRofVske2luZGV4fV1gKSk7XG4gICAgcmV0dXJuIGBbJHtyZW5kZXJlZC5qb2luKFwiLCBcIil9XWA7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGNoaWxkXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgIGlmICgha2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvZGV4IGNvbmZpZyBvdmVycmlkZSBrZXlzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3NcIik7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goYCR7Zm9ybWF0VG9tbEtleShrZXkpfSA9ICR7dG9Ub21sVmFsdWUoY2hpbGQsIGAke3BhdGh9LiR7a2V5fWApfWApO1xuICAgIH1cbiAgICByZXR1cm4gYHske3BhcnRzLmpvaW4oXCIsIFwiKX19YDtcbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ29kZXggY29uZmlnIG92ZXJyaWRlIGF0ICR7cGF0aH0gY2Fubm90IGJlIG51bGxgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIENvZGV4IGNvbmZpZyBvdmVycmlkZSB2YWx1ZSBhdCAke3BhdGh9OiAke3R5cGVOYW1lfWApO1xuICB9XG59XG5cbmNvbnN0IFRPTUxfQkFSRV9LRVkgPSAvXltBLVphLXowLTlfLV0rJC87XG5mdW5jdGlvbiBmb3JtYXRUb21sS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFRPTUxfQkFSRV9LRVkudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcbn1cblxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIENvZGV4Q29uZmlnT2JqZWN0IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRDb2RleFBhdGgoKTogQ29kZXhQYXRoUmVzb2x1dGlvbiB7XG4gIGNvbnN0IHsgcGxhdGZvcm0sIGFyY2ggfSA9IHByb2Nlc3M7XG5cbiAgbGV0IHRhcmdldFRyaXBsZSA9IG51bGw7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlIFwibGludXhcIjpcbiAgICBjYXNlIFwiYW5kcm9pZFwiOlxuICAgICAgc3dpdGNoIChhcmNoKSB7XG4gICAgICAgIGNhc2UgXCJ4NjRcIjpcbiAgICAgICAgICB0YXJnZXRUcmlwbGUgPSBcIng4Nl82NC11bmtub3duLWxpbnV4LW11c2xcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFybTY0XCI6XG4gICAgICAgICAgdGFyZ2V0VHJpcGxlID0gXCJhYXJjaDY0LXVua25vd24tbGludXgtbXVzbFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImRhcndpblwiOlxuICAgICAgc3dpdGNoIChhcmNoKSB7XG4gICAgICAgIGNhc2UgXCJ4NjRcIjpcbiAgICAgICAgICB0YXJnZXRUcmlwbGUgPSBcIng4Nl82NC1hcHBsZS1kYXJ3aW5cIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFybTY0XCI6XG4gICAgICAgICAgdGFyZ2V0VHJpcGxlID0gXCJhYXJjaDY0LWFwcGxlLWRhcndpblwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIndpbjMyXCI6XG4gICAgICBzd2l0Y2ggKGFyY2gpIHtcbiAgICAgICAgY2FzZSBcIng2NFwiOlxuICAgICAgICAgIHRhcmdldFRyaXBsZSA9IFwieDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXJtNjRcIjpcbiAgICAgICAgICB0YXJnZXRUcmlwbGUgPSBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoIXRhcmdldFRyaXBsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcGxhdGZvcm06ICR7cGxhdGZvcm19ICgke2FyY2h9KWApO1xuICB9XG5cbiAgY29uc3QgcGxhdGZvcm1QYWNrYWdlID0gUExBVEZPUk1fUEFDS0FHRV9CWV9UQVJHRVRbdGFyZ2V0VHJpcGxlXTtcbiAgaWYgKCFwbGF0Zm9ybVBhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHRhcmdldCB0cmlwbGU6ICR7dGFyZ2V0VHJpcGxlfWApO1xuICB9XG5cbiAgbGV0IHZlbmRvclJvb3Q6IHN0cmluZztcbiAgdHJ5IHtcbiAgICBjb25zdCBjb2RleFBhY2thZ2VKc29uUGF0aCA9IG1vZHVsZVJlcXVpcmUucmVzb2x2ZShgJHtDT0RFWF9OUE1fTkFNRX0vcGFja2FnZS5qc29uYCk7XG4gICAgY29uc3QgY29kZXhSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShjb2RleFBhY2thZ2VKc29uUGF0aCk7XG4gICAgY29uc3QgcGxhdGZvcm1QYWNrYWdlSnNvblBhdGggPSBjb2RleFJlcXVpcmUucmVzb2x2ZShgJHtwbGF0Zm9ybVBhY2thZ2V9L3BhY2thZ2UuanNvbmApO1xuICAgIHZlbmRvclJvb3QgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHBsYXRmb3JtUGFja2FnZUpzb25QYXRoKSwgXCJ2ZW5kb3JcIik7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbmFibGUgdG8gbG9jYXRlIENvZGV4IENMSSBiaW5hcmllcy4gRW5zdXJlICR7Q09ERVhfTlBNX05BTUV9IGlzIGluc3RhbGxlZCB3aXRoIG9wdGlvbmFsIGRlcGVuZGVuY2llcy5gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjb2RleEJpbmFyeU5hbWUgPSBwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcImNvZGV4LmV4ZVwiIDogXCJjb2RleFwiO1xuICBjb25zdCBuYXRpdmVQYWNrYWdlID0gcmVzb2x2ZU5hdGl2ZVBhY2thZ2UodmVuZG9yUm9vdCwgdGFyZ2V0VHJpcGxlLCBjb2RleEJpbmFyeU5hbWUpO1xuICBpZiAoIW5hdGl2ZVBhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIGxvY2F0ZSBDb2RleCBDTEkgYmluYXJpZXMgZm9yICR7dGFyZ2V0VHJpcGxlfS4gRW5zdXJlICR7Q09ERVhfTlBNX05BTUV9IGlzIGluc3RhbGxlZCB3aXRoIG9wdGlvbmFsIGRlcGVuZGVuY2llcy5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbmF0aXZlUGFja2FnZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVOYXRpdmVQYWNrYWdlKFxuICB2ZW5kb3JSb290OiBzdHJpbmcsXG4gIHRhcmdldFRyaXBsZTogc3RyaW5nLFxuICBjb2RleEJpbmFyeU5hbWU6IHN0cmluZyxcbik6IENvZGV4UGF0aFJlc29sdXRpb24gfCBudWxsIHtcbiAgY29uc3QgcGFja2FnZVJvb3QgPSBwYXRoLmpvaW4odmVuZG9yUm9vdCwgdGFyZ2V0VHJpcGxlKTtcbiAgY29uc3QgcGFja2FnZUJpbmFyeVBhdGggPSBwYXRoLmpvaW4ocGFja2FnZVJvb3QsIFwiYmluXCIsIGNvZGV4QmluYXJ5TmFtZSk7XG4gIGlmIChpc0ZpbGUocGFja2FnZUJpbmFyeVBhdGgpICYmIGlzRmlsZShwYXRoLmpvaW4ocGFja2FnZVJvb3QsIFwiY29kZXgtcGFja2FnZS5qc29uXCIpKSkge1xuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRhYmxlUGF0aDogcGFja2FnZUJpbmFyeVBhdGgsXG4gICAgICBwYXRoRGlyczogZXhpc3RpbmdEaXJzKHBhdGguam9pbihwYWNrYWdlUm9vdCwgXCJjb2RleC1wYXRoXCIpKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbGVnYWN5QmluYXJ5UGF0aCA9IHBhdGguam9pbihwYWNrYWdlUm9vdCwgXCJjb2RleFwiLCBjb2RleEJpbmFyeU5hbWUpO1xuICBpZiAoaXNGaWxlKGxlZ2FjeUJpbmFyeVBhdGgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGV4ZWN1dGFibGVQYXRoOiBsZWdhY3lCaW5hcnlQYXRoLFxuICAgICAgcGF0aERpcnM6IGV4aXN0aW5nRGlycyhwYXRoLmpvaW4ocGFja2FnZVJvb3QsIFwicGF0aFwiKSksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBleGlzdGluZ0RpcnMoLi4uZGlyczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBkaXJzLmZpbHRlcihpc0RpcmVjdG9yeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwZW5kUGF0aERpcnMoXG4gIGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgcGF0aERpcnM6IHN0cmluZ1tdLFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbik6IHZvaWQge1xuICBjb25zdCBwYXRoS2V5ID0gcGF0aEVudktleShlbnYsIHBsYXRmb3JtKTtcbiAgaWYgKHBsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlbnYpKSB7XG4gICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkgPT09IFwicGF0aFwiICYmIGtleSAhPT0gcGF0aEtleSkge1xuICAgICAgICBkZWxldGUgZW52W2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdFbnRyaWVzID0gKGVudltwYXRoS2V5XSA/PyBcIlwiKVxuICAgIC5zcGxpdChwYXRoLmRlbGltaXRlcilcbiAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubGVuZ3RoID4gMCAmJiAhcGF0aERpcnMuaW5jbHVkZXMoZW50cnkpKTtcbiAgZW52W3BhdGhLZXldID0gWy4uLnBhdGhEaXJzLCAuLi5leGlzdGluZ0VudHJpZXNdLmpvaW4ocGF0aC5kZWxpbWl0ZXIpO1xufVxuXG5mdW5jdGlvbiBwYXRoRW52S2V5KGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSk6IHN0cmluZyB7XG4gIGlmIChwbGF0Zm9ybSAhPT0gXCJ3aW4zMlwiKSB7XG4gICAgcmV0dXJuIFwiUEFUSFwiO1xuICB9XG5cbiAgY29uc3QgbWF0Y2hpbmdLZXlzID0gT2JqZWN0LmtleXMoZW52KS5maWx0ZXIoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IFwicGF0aFwiKTtcbiAgcmV0dXJuIG1hdGNoaW5nS2V5cy5pbmNsdWRlcyhcIlBhdGhcIikgPyBcIlBhdGhcIiA6IChtYXRjaGluZ0tleXMuYXQoLTEpID8/IFwiUEFUSFwiKTtcbn1cblxuZnVuY3Rpb24gaXNGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RhdFN5bmMoZmlsZVBhdGgpLmlzRmlsZSgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RvcnkoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBzdGF0U3luYyhmaWxlUGF0aCkuaXNEaXJlY3RvcnkoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgQ29kZXhPcHRpb25zIH0gZnJvbSBcIi4vY29kZXhPcHRpb25zXCI7XG5pbXBvcnQgeyBDb2RleEV4ZWMgfSBmcm9tIFwiLi9leGVjXCI7XG5pbXBvcnQgeyBUaHJlYWQgfSBmcm9tIFwiLi90aHJlYWRcIjtcbmltcG9ydCB7IFRocmVhZE9wdGlvbnMgfSBmcm9tIFwiLi90aHJlYWRPcHRpb25zXCI7XG5cbi8qKlxuICogQ29kZXggaXMgdGhlIG1haW4gY2xhc3MgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIENvZGV4IGFnZW50LlxuICpcbiAqIFVzZSB0aGUgYHN0YXJ0VGhyZWFkKClgIG1ldGhvZCB0byBzdGFydCBhIG5ldyB0aHJlYWQgb3IgYHJlc3VtZVRocmVhZCgpYCB0byByZXN1bWUgYSBwcmV2aW91c2x5IHN0YXJ0ZWQgdGhyZWFkLlxuICovXG5leHBvcnQgY2xhc3MgQ29kZXgge1xuICBwcml2YXRlIGV4ZWM6IENvZGV4RXhlYztcbiAgcHJpdmF0ZSBvcHRpb25zOiBDb2RleE9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29kZXhPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGNvZGV4UGF0aE92ZXJyaWRlLCBlbnYsIGNvbmZpZyB9ID0gb3B0aW9ucztcbiAgICB0aGlzLmV4ZWMgPSBuZXcgQ29kZXhFeGVjKGNvZGV4UGF0aE92ZXJyaWRlLCBlbnYsIGNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBuZXcgY29udmVyc2F0aW9uIHdpdGggYW4gYWdlbnQuXG4gICAqIEByZXR1cm5zIEEgbmV3IHRocmVhZCBpbnN0YW5jZS5cbiAgICovXG4gIHN0YXJ0VGhyZWFkKG9wdGlvbnM6IFRocmVhZE9wdGlvbnMgPSB7fSk6IFRocmVhZCB7XG4gICAgcmV0dXJuIG5ldyBUaHJlYWQodGhpcy5leGVjLCB0aGlzLm9wdGlvbnMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZXMgYSBjb252ZXJzYXRpb24gd2l0aCBhbiBhZ2VudCBiYXNlZCBvbiB0aGUgdGhyZWFkIGlkLlxuICAgKiBUaHJlYWRzIGFyZSBwZXJzaXN0ZWQgaW4gfi8uY29kZXgvc2Vzc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIHRocmVhZCB0byByZXN1bWUuXG4gICAqIEByZXR1cm5zIEEgbmV3IHRocmVhZCBpbnN0YW5jZS5cbiAgICovXG4gIHJlc3VtZVRocmVhZChpZDogc3RyaW5nLCBvcHRpb25zOiBUaHJlYWRPcHRpb25zID0ge30pOiBUaHJlYWQge1xuICAgIHJldHVybiBuZXcgVGhyZWFkKHRoaXMuZXhlYywgdGhpcy5vcHRpb25zLCBvcHRpb25zLCBpZCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBzcGF3biwgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5cbi8vIFBpbm5lZCB0byBtYXRjaCBAb3BlbmFpL2NvZGV4LXNkayAvIEBvcGVuYWkvY29kZXggaW4gcGFja2FnZS5qc29uLlxuLy8gQnVtcCBpbiBsb2Nrc3RlcCB3aXRoIHRob3NlIGRlcGVuZGVuY2llcy5cbmNvbnN0IENMSV9WRVJTSU9OID0gXCIwLjEzOS4wXCI7XG5cbmxldCBjYWNoZWQ6IFByb21pc2U8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQ29kZXhDbGkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKCFjYWNoZWQpIGNhY2hlZCA9IHJlc29sdmVDb2RleENsaSgpO1xuICByZXR1cm4gY2FjaGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDb2RleENsaUNhY2hlKCk6IHZvaWQge1xuICBjYWNoZWQgPSBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ29kZXhDbGkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3ZlcnJpZGUgPSBwcm9jZXNzLmVudi5TSE9QRkxPT1JfQ09ERVhfQ0xJX1BBVEg7XG4gIGlmIChvdmVycmlkZSkge1xuICAgIGlmICghZXhpc3RzU3luYyhvdmVycmlkZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU0hPUEZMT09SX0NPREVYX0NMSV9QQVRIPSR7b3ZlcnJpZGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ29kZXggQ0xJIGZyb20gU0hPUEZMT09SX0NPREVYX0NMSV9QQVRIOiAke292ZXJyaWRlfWApO1xuICAgIHJldHVybiBvdmVycmlkZTtcbiAgfVxuXG4gIGNvbnN0IG9uUGF0aCA9IHdoaWNoQ29kZXgoKTtcbiAgaWYgKG9uUGF0aCkge1xuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ29kZXggQ0xJIG9uIFBBVEg6ICR7b25QYXRofWApO1xuICAgIHJldHVybiBvblBhdGg7XG4gIH1cblxuICByZXR1cm4gaW5zdGFsbENvZGV4Q2xpKCk7XG59XG5cbmZ1bmN0aW9uIHdoaWNoQ29kZXgoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcInNoXCIsIFtcIi1jXCIsIFwiY29tbWFuZCAtdiBjb2RleFwiXSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSk7XG4gIGlmIChyZXN1bHQuc3RhdHVzICE9PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcGF0aCA9IHJlc3VsdC5zdGRvdXQuc3BsaXQoL1xccj9cXG4vKVswXT8udHJpbSgpO1xuICByZXR1cm4gcGF0aCAmJiBleGlzdHNTeW5jKHBhdGgpID8gcGF0aCA6IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxDb2RleENsaSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb3JlLmluZm8oXG4gICAgYENvZGV4IENMSSBub3QgZm91bmQgb24gUEFUSC4gSW5zdGFsbGluZyBAb3BlbmFpL2NvZGV4QCR7Q0xJX1ZFUlNJT059IGdsb2JhbGx5IHZpYSBucG0uYCxcbiAgKTtcbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHByb2MgPSBzcGF3bihcbiAgICAgIFwibnBtXCIsXG4gICAgICBbXCJpbnN0YWxsXCIsIFwiLWdcIiwgYEBvcGVuYWkvY29kZXhAJHtDTElfVkVSU0lPTn1gXSxcbiAgICAgIHsgc3RkaW86IFtcImlnbm9yZVwiLCBcImluaGVyaXRcIiwgXCJpbmhlcml0XCJdIH0sXG4gICAgKTtcbiAgICBwcm9jLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBwcm9jLm9uKFwiY2xvc2VcIiwgKGNvZGUpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSByZXNvbHZlKCk7XG4gICAgICBlbHNlIHJlamVjdChuZXcgRXJyb3IoYENvZGV4IENMSSBpbnN0YWxsZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBvblBhdGggPSB3aGljaENvZGV4KCk7XG4gIGlmIChvblBhdGgpIHtcbiAgICBjb3JlLmluZm8oYEluc3RhbGxlZCBDb2RleCBDTEkgcmVzb2x2ZWQgdmlhIFBBVEg6ICR7b25QYXRofWApO1xuICAgIHJldHVybiBvblBhdGg7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgXCJDb2RleCBDTEkgaW5zdGFsbGVyIHN1Y2NlZWRlZCBidXQgbm8gYGNvZGV4YCBiaW5hcnkgd2FzIGZvdW5kIG9uIFBBVEhcIixcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyByYW5kb21CeXRlcywgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VydmVyLFxuICB0eXBlIEluY29taW5nTWVzc2FnZSxcbiAgdHlwZSBTZXJ2ZXIsXG4gIHR5cGUgU2VydmVyUmVzcG9uc2UsXG59IGZyb20gXCJub2RlOmh0dHBcIjtcbmltcG9ydCB0eXBlIHsgQWRkcmVzc0luZm8gfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB7IE1jcFNlcnZlciB9IGZyb20gXCJAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9tY3AuanNcIjtcbmltcG9ydCB7IFN0cmVhbWFibGVIVFRQU2VydmVyVHJhbnNwb3J0IH0gZnJvbSBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL3N0cmVhbWFibGVIdHRwLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vdG9vbHMvdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUb29sQnJpZGdlIHtcbiAgLyoqIEZ1bGwgTUNQIGVuZHBvaW50IFVSTCwgZS5nLiBodHRwOi8vMTI3LjAuMC4xOjxwb3J0Pi9tY3AgKi9cbiAgdXJsOiBzdHJpbmc7XG4gIC8qKiBSYW5kb20gcGVyLXJ1biBiZWFyZXIgdG9rZW4gZ3VhcmRpbmcgdGhlIGVuZHBvaW50LiAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogU2h1dCB0aGUgbGlzdGVuZXIgYW5kIE1DUCB0cmFuc3BvcnQgZG93bi4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuY29uc3QgRU5EUE9JTlRfUEFUSCA9IFwiL21jcFwiO1xuXG4vLyBFeHBvc2VzIFNob3BmbG9vcidzIG5ldXRyYWwgU2RrVG9vbFtdIHRvIHRoZSBDb2RleCBDTEkgc3VicHJvY2VzcyBhcyBhIHJlYWxcbi8vIE1DUCBzZXJ2ZXIgb3ZlciBTdHJlYW1hYmxlIEhUVFAsIGJvdW5kIHRvIGxvb3BiYWNrIG9uIGFuIGVwaGVtZXJhbCBwb3J0IGFuZFxuLy8gZ3VhcmRlZCBieSBhIHJhbmRvbSBiZWFyZXIgdG9rZW4uIFRoZSB0b29sIGhhbmRsZXJzIHJ1biBpbi1wcm9jZXNzIGFnYWluc3Rcbi8vIHRoZSBzYW1lIGxpdmUgT2N0b2tpdCB0aGUgcmVzdCBvZiB0aGUgYWN0aW9uIHVzZXMgXHUyMDE0IG5vIHNlY29uZCBHaXRIdWJcbi8vIGNyZWRlbnRpYWwgYW5kIG5vIHNlcGFyYXRlIHN1YnByb2Nlc3MgZW50cnkgbW9kZS5cbi8vXG4vLyBBIHNpbmdsZSBsb25nLWxpdmVkIHNlcnZlcit0cmFuc3BvcnQgcGFpciBpbiBzdGF0ZWZ1bCBtb2RlOiB0aGUgdHJhbnNwb3J0XG4vLyBpc3N1ZXMgYW4gTWNwLVNlc3Npb24tSWQgb24gdGhlIGluaXRpYWxpemUgcmVzcG9uc2UgYW5kIHRoZSBjbGllbnQgZWNob2VzIGl0XG4vLyBvbiBldmVyeSBzdWJzZXF1ZW50IHJlcXVlc3QsIHNvIHRoZSBpbml0aWFsaXplIGhhbmRzaGFrZSBwZXJzaXN0cyBhY3Jvc3MgdGhlXG4vLyBpbXBsZW1lbnQtc3RhZ2UgQ29kZXggcnVuLiAoU3RhdGVsZXNzIG1vZGUgaXMgbm90IGFuIG9wdGlvbiBoZXJlIFx1MjAxNCB0aGVcbi8vIHRyYW5zcG9ydCByZWZ1c2VzIG1vcmUgdGhhbiBvbmUgcmVxdWVzdCBwZXIgaW5zdGFuY2UsIGV4cGVjdGluZyBhIGZyZXNoXG4vLyB0cmFuc3BvcnQgcGVyIGNhbGwsIHdoaWNoIHdvdWxkIGxvc2UgdGhlIGhhbmRzaGFrZSBhIHBlcnNpc3RlbnQgY2xpZW50XG4vLyByZWxpZXMgb24uKSBlbmFibGVKc29uUmVzcG9uc2Uga2VlcHMgZWFjaCB0b29sIGNhbGwgYSBwbGFpbiByZXF1ZXN0L3Jlc3BvbnNlXG4vLyByYXRoZXIgdGhhbiBhbiBTU0Ugc3RyZWFtLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0VG9vbEJyaWRnZSh0b29sczogU2RrVG9vbFtdKTogUHJvbWlzZTxUb29sQnJpZGdlPiB7XG4gIGNvbnN0IHRva2VuID0gcmFuZG9tQnl0ZXMoMzIpLnRvU3RyaW5nKFwiaGV4XCIpO1xuXG4gIGNvbnN0IG1jcFNlcnZlciA9IG5ldyBNY3BTZXJ2ZXIoeyBuYW1lOiBcInNob3BmbG9vclwiLCB2ZXJzaW9uOiBcIjIuMC4wXCIgfSk7XG4gIGZvciAoY29uc3QgdCBvZiB0b29scykge1xuICAgIG1jcFNlcnZlci5yZWdpc3RlclRvb2woXG4gICAgICB0Lm5hbWUsXG4gICAgICB7IGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uLCBpbnB1dFNjaGVtYTogdC5pbnB1dFNjaGVtYSB9LFxuICAgICAgLy8gcmVnaXN0ZXJUb29sIHBhc3NlcyB2YWxpZGF0ZWQgYXJncyAobWF0Y2hpbmcgaW5wdXRTY2hlbWEpIHBsdXMgYW5cbiAgICAgIC8vIGBleHRyYWAgYXJnIHdlIGlnbm9yZS4gVGhlIG5ldXRyYWwgaGFuZGxlciByZXR1cm5zIHRoZSBzYW1lXG4gICAgICAvLyB7IGNvbnRlbnQsIGlzRXJyb3IgfSBzaGFwZSBNQ1AgZXhwZWN0cyBmb3IgYSB0b29sIHJlc3VsdC5cbiAgICAgIChhc3luYyAoYXJnczogdW5rbm93bikgPT4gdC5oYW5kbGVyKGFyZ3MpKSBhcyBuZXZlcixcbiAgICApO1xuICB9XG5cbiAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFN0cmVhbWFibGVIVFRQU2VydmVyVHJhbnNwb3J0KHtcbiAgICBzZXNzaW9uSWRHZW5lcmF0b3I6ICgpID0+IHJhbmRvbVVVSUQoKSxcbiAgICBlbmFibGVKc29uUmVzcG9uc2U6IHRydWUsXG4gIH0pO1xuICAvLyBUaGUgU0RLJ3MgdHJhbnNwb3J0IGNsYXNzIHR5cGVzIGBvbmNsb3NlYCBhcyBub24tb3B0aW9uYWwgd2hpbGUgdGhlXG4gIC8vIFRyYW5zcG9ydCBpbnRlcmZhY2UgbWFya3MgaXQgb3B0aW9uYWw7IHVuZGVyIGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzXG4gIC8vIHRoYXQgcmVhZCBhcyBpbmNvbXBhdGlibGUuIFRoZSBpbnN0YW5jZSBpcyBhIHZhbGlkIFRyYW5zcG9ydCBhdCBydW50aW1lLlxuICBhd2FpdCBtY3BTZXJ2ZXIuY29ubmVjdChcbiAgICB0cmFuc3BvcnQgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBtY3BTZXJ2ZXIuY29ubmVjdD5bMF0sXG4gICk7XG5cbiAgY29uc3QgaHR0cFNlcnZlcjogU2VydmVyID0gY3JlYXRlU2VydmVyKFxuICAgIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCBoYW5kbGUocmVxLCByZXMsIHRyYW5zcG9ydCwgdG9rZW4pO1xuICAgIH0sXG4gICk7XG5cbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGh0dHBTZXJ2ZXIub25jZShcImVycm9yXCIsIHJlamVjdCk7XG4gICAgaHR0cFNlcnZlci5saXN0ZW4oMCwgXCIxMjcuMC4wLjFcIiwgKCkgPT4ge1xuICAgICAgaHR0cFNlcnZlci5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGFkZHIgPSBodHRwU2VydmVyLmFkZHJlc3MoKSBhcyBBZGRyZXNzSW5mbztcbiAgY29uc3QgdXJsID0gYGh0dHA6Ly8xMjcuMC4wLjE6JHthZGRyLnBvcnR9JHtFTkRQT0lOVF9QQVRIfWA7XG5cbiAgcmV0dXJuIHtcbiAgICB1cmwsXG4gICAgdG9rZW4sXG4gICAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICBhd2FpdCB0cmFuc3BvcnQuY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICBhd2FpdCBtY3BTZXJ2ZXIuY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICAvLyBodHRwU2VydmVyLmNsb3NlKCkncyBjYWxsYmFjayBvbmx5IGZpcmVzIG9uY2UgZXZlcnkgY29ubmVjdGlvbiBoYXNcbiAgICAgIC8vIGRyYWluZWQsIGFuZCBTZXJ2ZXIuY2xvc2UoKSBkb2VzIG5vdCB0ZXJtaW5hdGUgaWRsZSBrZWVwLWFsaXZlXG4gICAgICAvLyBzb2NrZXRzLiBUaGUgQ29kZXggTUNQIGNsaWVudCBob2xkcyBhIHBlcnNpc3RlbnQga2VlcC1hbGl2ZSBzb2NrZXQgZm9yXG4gICAgICAvLyB0aGUgc3RhdGVmdWwgc2Vzc2lvbiwgc28gd2l0aG91dCBmb3JjaWJseSBkZXN0cm95aW5nIGxpdmUgY29ubmVjdGlvbnNcbiAgICAgIC8vIHRoaXMgYXdhaXQgd291bGQgaGFuZyBpbmRlZmluaXRlbHkgKHdlZGdpbmcgdGhlIHN0YWdlIGluIGl0cyBmaW5hbGx5KS5cbiAgICAgIGh0dHBTZXJ2ZXIuY2xvc2VBbGxDb25uZWN0aW9ucygpO1xuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IGh0dHBTZXJ2ZXIuY2xvc2UoKCkgPT4gcmVzb2x2ZSgpKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlKFxuICByZXE6IEluY29taW5nTWVzc2FnZSxcbiAgcmVzOiBTZXJ2ZXJSZXNwb25zZSxcbiAgdHJhbnNwb3J0OiBTdHJlYW1hYmxlSFRUUFNlcnZlclRyYW5zcG9ydCxcbiAgdG9rZW46IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWhhc1ZhbGlkQmVhcmVyKHJlcSwgdG9rZW4pKSB7XG4gICAgcmVzLndyaXRlSGVhZCg0MDEsIHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSk7XG4gICAgcmVzLmVuZChcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAganNvbnJwYzogXCIyLjBcIixcbiAgICAgICAgZXJyb3I6IHsgY29kZTogLTMyMDAxLCBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0sXG4gICAgICAgIGlkOiBudWxsLFxuICAgICAgfSksXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZWFkSnNvbkJvZHkocmVxKTtcbiAgICBhd2FpdCB0cmFuc3BvcnQuaGFuZGxlUmVxdWVzdChyZXEsIHJlcywgYm9keSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICByZXMud3JpdGVIZWFkKDUwMCwgeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KTtcbiAgICAgIHJlcy5lbmQoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxuICAgICAgICAgIGVycm9yOiB7IGNvZGU6IC0zMjYwMywgbWVzc2FnZTogU3RyaW5nKGVycikgfSxcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEJlYXJlcihyZXE6IEluY29taW5nTWVzc2FnZSwgdG9rZW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBoZWFkZXIgPSByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICBpZiAoIWhlYWRlcikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcmVmaXggPSBcIkJlYXJlciBcIjtcbiAgaWYgKCFoZWFkZXIuc3RhcnRzV2l0aChwcmVmaXgpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBoZWFkZXIuc2xpY2UocHJlZml4Lmxlbmd0aCkgPT09IHRva2VuO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSnNvbkJvZHkocmVxOiBJbmNvbWluZ01lc3NhZ2UpOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlcSkge1xuICAgIGNodW5rcy5wdXNoKGNodW5rIGFzIEJ1ZmZlcik7XG4gIH1cbiAgaWYgKGNodW5rcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJhdyA9IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZyhcInV0ZjhcIik7XG4gIGlmICghcmF3KSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gSlNPTi5wYXJzZShyYXcpO1xufVxuIiwgIi8qKiBBIHNwZWNpYWwgY29uc3RhbnQgd2l0aCB0eXBlIGBuZXZlcmAgKi9cbmV4cG9ydCBjb25zdCBORVZFUiA9IE9iamVjdC5mcmVlemUoe1xuICAgIHN0YXR1czogXCJhYm9ydGVkXCIsXG59KTtcbmV4cG9ydCAvKkBfX05PX1NJREVfRUZGRUNUU19fKi8gZnVuY3Rpb24gJGNvbnN0cnVjdG9yKG5hbWUsIGluaXRpYWxpemVyLCBwYXJhbXMpIHtcbiAgICBmdW5jdGlvbiBpbml0KGluc3QsIGRlZikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIl96b2RcIiwge1xuICAgICAgICAgICAgdmFsdWU6IGluc3QuX3pvZCA/PyB7fSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgKF9hID0gaW5zdC5fem9kKS50cmFpdHMgPz8gKF9hLnRyYWl0cyA9IG5ldyBTZXQoKSk7XG4gICAgICAgIGluc3QuX3pvZC50cmFpdHMuYWRkKG5hbWUpO1xuICAgICAgICBpbml0aWFsaXplcihpbnN0LCBkZWYpO1xuICAgICAgICAvLyBzdXBwb3J0IHByb3RvdHlwZSBtb2RpZmljYXRpb25zXG4gICAgICAgIGZvciAoY29uc3QgayBpbiBfLnByb3RvdHlwZSkge1xuICAgICAgICAgICAgaWYgKCEoayBpbiBpbnN0KSlcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgaywgeyB2YWx1ZTogXy5wcm90b3R5cGVba10uYmluZChpbnN0KSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpbnN0Ll96b2QuY29uc3RyID0gXztcbiAgICAgICAgaW5zdC5fem9kLmRlZiA9IGRlZjtcbiAgICB9XG4gICAgLy8gZG9lc24ndCB3b3JrIGlmIFBhcmVudCBoYXMgYSBjb25zdHJ1Y3RvciB3aXRoIGFyZ3VtZW50c1xuICAgIGNvbnN0IFBhcmVudCA9IHBhcmFtcz8uUGFyZW50ID8/IE9iamVjdDtcbiAgICBjbGFzcyBEZWZpbml0aW9uIGV4dGVuZHMgUGFyZW50IHtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERlZmluaXRpb24sIFwibmFtZVwiLCB7IHZhbHVlOiBuYW1lIH0pO1xuICAgIGZ1bmN0aW9uIF8oZGVmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5zdCA9IHBhcmFtcz8uUGFyZW50ID8gbmV3IERlZmluaXRpb24oKSA6IHRoaXM7XG4gICAgICAgIGluaXQoaW5zdCwgZGVmKTtcbiAgICAgICAgKF9hID0gaW5zdC5fem9kKS5kZWZlcnJlZCA/PyAoX2EuZGVmZXJyZWQgPSBbXSk7XG4gICAgICAgIGZvciAoY29uc3QgZm4gb2YgaW5zdC5fem9kLmRlZmVycmVkKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXywgXCJpbml0XCIsIHsgdmFsdWU6IGluaXQgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF8sIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgICAgICB2YWx1ZTogKGluc3QpID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbXM/LlBhcmVudCAmJiBpbnN0IGluc3RhbmNlb2YgcGFyYW1zLlBhcmVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0Py5fem9kPy50cmFpdHM/LmhhcyhuYW1lKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXywgXCJuYW1lXCIsIHsgdmFsdWU6IG5hbWUgfSk7XG4gICAgcmV0dXJuIF87XG59XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gICBVVElMSVRJRVMgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBjb25zdCAkYnJhbmQgPSBTeW1ib2woXCJ6b2RfYnJhbmRcIik7XG5leHBvcnQgY2xhc3MgJFpvZEFzeW5jRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKGBFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC5gKTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgZ2xvYmFsQ29uZmlnID0ge307XG5leHBvcnQgZnVuY3Rpb24gY29uZmlnKG5ld0NvbmZpZykge1xuICAgIGlmIChuZXdDb25maWcpXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZ2xvYmFsQ29uZmlnLCBuZXdDb25maWcpO1xuICAgIHJldHVybiBnbG9iYWxDb25maWc7XG59XG4iLCAiLy8gZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWwodmFsKSB7XG4gICAgcmV0dXJuIHZhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbCh2YWwpIHtcbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzKF9hcmcpIHsgfVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5ldmVyKF94KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KF8pIHsgfVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1WYWx1ZXMoZW50cmllcykge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZXMgPSBPYmplY3QudmFsdWVzKGVudHJpZXMpLmZpbHRlcigodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpO1xuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGVudHJpZXMpXG4gICAgICAgIC5maWx0ZXIoKFtrLCBfXSkgPT4gbnVtZXJpY1ZhbHVlcy5pbmRleE9mKCtrKSA9PT0gLTEpXG4gICAgICAgIC5tYXAoKFtfLCB2XSkgPT4gdik7XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBqb2luVmFsdWVzKGFycmF5LCBzZXBhcmF0b3IgPSBcInxcIikge1xuICAgIHJldHVybiBhcnJheS5tYXAoKHZhbCkgPT4gc3RyaW5naWZ5UHJpbWl0aXZlKHZhbCkpLmpvaW4oc2VwYXJhdG9yKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBqc29uU3RyaW5naWZ5UmVwbGFjZXIoXywgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gY2FjaGVkKGdldHRlcikge1xuICAgIGNvbnN0IHNldCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgIGlmICghc2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJ2YWx1ZVwiLCB7IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpc2goaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblJlZ2V4KHNvdXJjZSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgY29uc3QgZW5kID0gc291cmNlLmVuZHNXaXRoKFwiJFwiKSA/IHNvdXJjZS5sZW5ndGggLSAxIDogc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4gc291cmNlLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBEZWNDb3VudCA9IChzdGVwLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTGF6eShvYmplY3QsIGtleSwgZ2V0dGVyKSB7XG4gICAgY29uc3Qgc2V0ID0gZmFsc2U7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmICghc2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHYpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gb2JqZWN0W2tleV0gPSB2O1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduUHJvcCh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcCwge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50QXRQYXRoKG9iaiwgcGF0aCkge1xuICAgIGlmICghcGF0aClcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gcGF0aC5yZWR1Y2UoKGFjYywga2V5KSA9PiBhY2M/LltrZXldLCBvYmopO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VBbGxPYmplY3QocHJvbWlzZXNPYmopIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvbWlzZXNPYmopO1xuICAgIGNvbnN0IHByb21pc2VzID0ga2V5cy5tYXAoKGtleSkgPT4gcHJvbWlzZXNPYmpba2V5XSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkT2JqID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzb2x2ZWRPYmpba2V5c1tpXV0gPSByZXN1bHRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZE9iajtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoID0gMTApIHtcbiAgICBjb25zdCBjaGFycyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcbiAgICBsZXQgc3RyID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN0ciArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlc2Moc3RyKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0cik7XG59XG5leHBvcnQgY29uc3QgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICAgID8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VcbiAgICA6ICguLi5fYXJncykgPT4geyB9O1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KGRhdGEpIHtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgZGF0YSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShkYXRhKTtcbn1cbmV4cG9ydCBjb25zdCBhbGxvd3NFdmFsID0gY2FjaGVkKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoXCJDbG91ZGZsYXJlXCIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBuZXcgRihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChfKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG8pIHtcbiAgICBpZiAoaXNPYmplY3QobykgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gbW9kaWZpZWQgY29uc3RydWN0b3JcbiAgICBjb25zdCBjdG9yID0gby5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoY3RvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyBtb2RpZmllZCBwcm90b3R5cGVcbiAgICBjb25zdCBwcm90ID0gY3Rvci5wcm90b3R5cGU7XG4gICAgaWYgKGlzT2JqZWN0KHByb3QpID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGN0b3IgZG9lc24ndCBoYXZlIHN0YXRpYyBgaXNQcm90b3R5cGVPZmBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3QsIFwiaXNQcm90b3R5cGVPZlwiKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1LZXlzKGRhdGEpIHtcbiAgICBsZXQga2V5Q291bnQgPSAwO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICBrZXlDb3VudCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXlDb3VudDtcbn1cbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihkYXRhKSA/IFwibmFuXCIgOiBcIm51bWJlclwiO1xuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgIHJldHVybiBcImZ1bmN0aW9uXCI7XG4gICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBcImJpZ2ludFwiO1xuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzeW1ib2xcIjtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS50aGVuICYmIHR5cGVvZiBkYXRhLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJiBkYXRhLmNhdGNoICYmIHR5cGVvZiBkYXRhLmNhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJwcm9taXNlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibWFwXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwic2V0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIERhdGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkYXRlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIEZpbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJmaWxlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCJvYmplY3RcIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHByb3BlcnR5S2V5VHlwZXMgPSBuZXcgU2V0KFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcInN5bWJvbFwiXSk7XG5leHBvcnQgY29uc3QgcHJpbWl0aXZlVHlwZXMgPSBuZXcgU2V0KFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJpZ2ludFwiLCBcImJvb2xlYW5cIiwgXCJzeW1ib2xcIiwgXCJ1bmRlZmluZWRcIl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ2V4KHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xufVxuLy8gem9kLXNwZWNpZmljIHV0aWxzXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoaW5zdCwgZGVmLCBwYXJhbXMpIHtcbiAgICBjb25zdCBjbCA9IG5ldyBpbnN0Ll96b2QuY29uc3RyKGRlZiA/PyBpbnN0Ll96b2QuZGVmKTtcbiAgICBpZiAoIWRlZiB8fCBwYXJhbXM/LnBhcmVudClcbiAgICAgICAgY2wuX3pvZC5wYXJlbnQgPSBpbnN0O1xuICAgIHJldHVybiBjbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQYXJhbXMoX3BhcmFtcykge1xuICAgIGNvbnN0IHBhcmFtcyA9IF9wYXJhbXM7XG4gICAgaWYgKCFwYXJhbXMpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6ICgpID0+IHBhcmFtcyB9O1xuICAgIGlmIChwYXJhbXM/Lm1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGFyYW1zPy5lcnJvciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zXCIpO1xuICAgICAgICBwYXJhbXMuZXJyb3IgPSBwYXJhbXMubWVzc2FnZTtcbiAgICB9XG4gICAgZGVsZXRlIHBhcmFtcy5tZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLmVycm9yID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4geyAuLi5wYXJhbXMsIGVycm9yOiAoKSA9PiBwYXJhbXMuZXJyb3IgfTtcbiAgICByZXR1cm4gcGFyYW1zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcGFyZW50UHJveHkoZ2V0dGVyKSB7XG4gICAgbGV0IHRhcmdldDtcbiAgICByZXR1cm4gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgIGdldChfLCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHNldChfLCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzKF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZVByb3BlcnR5KF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyhfKSB7XG4gICAgICAgICAgICB0YXJnZXQgPz8gKHRhcmdldCA9IGdldHRlcigpKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmluZVByb3BlcnR5KF8sIHByb3AsIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlQcmltaXRpdmUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKSArIFwiblwiO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbEtleXMoc2hhcGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc2hhcGUpLmZpbHRlcigoaykgPT4ge1xuICAgICAgICByZXR1cm4gc2hhcGVba10uX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiICYmIHNoYXBlW2tdLl96b2Qub3B0b3V0ID09PSBcIm9wdGlvbmFsXCI7XG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgTlVNQkVSX0ZPUk1BVF9SQU5HRVMgPSB7XG4gICAgc2FmZWludDogW051bWJlci5NSU5fU0FGRV9JTlRFR0VSLCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl0sXG4gICAgaW50MzI6IFstMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0N10sXG4gICAgdWludDMyOiBbMCwgNDI5NDk2NzI5NV0sXG4gICAgZmxvYXQzMjogWy0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgsIDMuNDAyODIzNDY2Mzg1Mjg4NmUzOF0sXG4gICAgZmxvYXQ2NDogWy1OdW1iZXIuTUFYX1ZBTFVFLCBOdW1iZXIuTUFYX1ZBTFVFXSxcbn07XG5leHBvcnQgY29uc3QgQklHSU5UX0ZPUk1BVF9SQU5HRVMgPSB7XG4gICAgaW50NjQ6IFsvKiBAX19QVVJFX18qLyBCaWdJbnQoXCItOTIyMzM3MjAzNjg1NDc3NTgwOFwiKSwgLyogQF9fUFVSRV9fKi8gQmlnSW50KFwiOTIyMzM3MjAzNjg1NDc3NTgwN1wiKV0sXG4gICAgdWludDY0OiBbLyogQF9fUFVSRV9fKi8gQmlnSW50KDApLCAvKiBAX19QVVJFX18qLyBCaWdJbnQoXCIxODQ0Njc0NDA3MzcwOTU1MTYxNVwiKV0sXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmOyAvLy5zaGFwZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7a2V5fVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgLy8gcGljayBrZXlcbiAgICAgICAgbmV3U2hhcGVba2V5XSA9IGN1cnJEZWYuc2hhcGVba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIHNoYXBlOiBuZXdTaGFwZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvbWl0KHNjaGVtYSwgbWFzaykge1xuICAgIGNvbnN0IG5ld1NoYXBlID0geyAuLi5zY2hlbWEuX3pvZC5kZWYuc2hhcGUgfTtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmOyAvLy5zaGFwZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7a2V5fVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgZGVsZXRlIG5ld1NoYXBlW2tleV07XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZTogbmV3U2hhcGUsXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHNjaGVtYSwgc2hhcGUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3Qoc2hhcGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IF9zaGFwZSA9IHsgLi4uc2NoZW1hLl96b2QuZGVmLnNoYXBlLCAuLi5zaGFwZSB9O1xuICAgICAgICAgICAgYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIF9zaGFwZSk7IC8vIHNlbGYtY2FjaGluZ1xuICAgICAgICAgICAgcmV0dXJuIF9zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2tzOiBbXSwgLy8gZGVsZXRlIGV4aXN0aW5nIGNoZWNrc1xuICAgIH07XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gICAgcmV0dXJuIGNsb25lKGEsIHtcbiAgICAgICAgLi4uYS5fem9kLmRlZixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NoYXBlID0geyAuLi5hLl96b2QuZGVmLnNoYXBlLCAuLi5iLl96b2QuZGVmLnNoYXBlIH07XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgX3NoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gX3NoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogYi5fem9kLmRlZi5jYXRjaGFsbCxcbiAgICAgICAgY2hlY2tzOiBbXSwgLy8gZGVsZXRlIGV4aXN0aW5nIGNoZWNrc1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWwoQ2xhc3MsIHNjaGVtYSwgbWFzaykge1xuICAgIGNvbnN0IG9sZFNoYXBlID0gc2NoZW1hLl96b2QuZGVmLnNoYXBlO1xuICAgIGNvbnN0IHNoYXBlID0geyAuLi5vbGRTaGFwZSB9O1xuICAgIGlmIChtYXNrKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1hc2spIHtcbiAgICAgICAgICAgIGlmICghKGtleSBpbiBvbGRTaGFwZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbWFza1trZXldKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgLy8gaWYgKG9sZFNoYXBlW2tleV0hLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikgY29udGludWU7XG4gICAgICAgICAgICBzaGFwZVtrZXldID0gQ2xhc3NcbiAgICAgICAgICAgICAgICA/IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBvbGRTaGFwZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRTaGFwZSkge1xuICAgICAgICAgICAgLy8gaWYgKG9sZFNoYXBlW2tleV0hLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikgY29udGludWU7XG4gICAgICAgICAgICBzaGFwZVtrZXldID0gQ2xhc3NcbiAgICAgICAgICAgICAgICA/IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBvbGRTaGFwZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChDbGFzcywgc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3Qgb2xkU2hhcGUgPSBzY2hlbWEuX3pvZC5kZWYuc2hhcGU7XG4gICAgY29uc3Qgc2hhcGUgPSB7IC4uLm9sZFNoYXBlIH07XG4gICAgaWYgKG1hc2spIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFzaykge1xuICAgICAgICAgICAgaWYgKCEoa2V5IGluIHNoYXBlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke2tleX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBvdmVyd3JpdGUgd2l0aCBub24tb3B0aW9uYWxcbiAgICAgICAgICAgIHNoYXBlW2tleV0gPSBuZXcgQ2xhc3Moe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBpbm5lclR5cGU6IG9sZFNoYXBlW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIG92ZXJ3cml0ZSB3aXRoIG5vbi1vcHRpb25hbFxuICAgICAgICAgICAgc2hhcGVba2V5XSA9IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIGlubmVyVHlwZTogb2xkU2hhcGVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgLy8gb3B0aW9uYWw6IFtdLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFib3J0ZWQoeCwgc3RhcnRJbmRleCA9IDApIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IHguaXNzdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh4Lmlzc3Vlc1tpXT8uY29udGludWUgIT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeElzc3VlcyhwYXRoLCBpc3N1ZXMpIHtcbiAgICByZXR1cm4gaXNzdWVzLm1hcCgoaXNzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gaXNzKS5wYXRoID8/IChfYS5wYXRoID0gW10pO1xuICAgICAgICBpc3MucGF0aC51bnNoaWZ0KHBhdGgpO1xuICAgICAgICByZXR1cm4gaXNzO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UgOiBtZXNzYWdlPy5tZXNzYWdlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvbmZpZykge1xuICAgIGNvbnN0IGZ1bGwgPSB7IC4uLmlzcywgcGF0aDogaXNzLnBhdGggPz8gW10gfTtcbiAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBpZiAoIWlzcy5tZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB1bndyYXBNZXNzYWdlKGlzcy5pbnN0Py5fem9kLmRlZj8uZXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgdW53cmFwTWVzc2FnZShjdHg/LmVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmN1c3RvbUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmxvY2FsZUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICBmdWxsLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cbiAgICAvLyBkZWxldGUgKGZ1bGwgYXMgYW55KS5kZWY7XG4gICAgZGVsZXRlIGZ1bGwuaW5zdDtcbiAgICBkZWxldGUgZnVsbC5jb250aW51ZTtcbiAgICBpZiAoIWN0eD8ucmVwb3J0SW5wdXQpIHtcbiAgICAgICAgZGVsZXRlIGZ1bGwuaW5wdXQ7XG4gICAgfVxuICAgIHJldHVybiBmdWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpemFibGVPcmlnaW4oaW5wdXQpIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBTZXQpXG4gICAgICAgIHJldHVybiBcInNldFwiO1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgcmV0dXJuIFwibWFwXCI7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRmlsZSlcbiAgICAgICAgcmV0dXJuIFwiZmlsZVwiO1xuICAgIHJldHVybiBcInVua25vd25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKVxuICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIHJldHVybiBcInVua25vd25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc3N1ZSguLi5hcmdzKSB7XG4gICAgY29uc3QgW2lzcywgaW5wdXQsIGluc3RdID0gYXJncztcbiAgICBpZiAodHlwZW9mIGlzcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVzc2FnZTogaXNzLFxuICAgICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uaXNzIH07XG59XG5leHBvcnQgZnVuY3Rpb24gY2xlYW5FbnVtKG9iaikge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXG4gICAgICAgIC5maWx0ZXIoKFtrLCBfXSkgPT4ge1xuICAgICAgICAvLyByZXR1cm4gdHJ1ZSBpZiBOYU4sIG1lYW5pbmcgaXQncyBub3QgYSBudW1iZXIsIHRodXMgYSBzdHJpbmcga2V5XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KGssIDEwKSk7XG4gICAgfSlcbiAgICAgICAgLm1hcCgoZWwpID0+IGVsWzFdKTtcbn1cbi8vIGluc3RhbmNlb2ZcbmV4cG9ydCBjbGFzcyBDbGFzcyB7XG4gICAgY29uc3RydWN0b3IoLi4uX2FyZ3MpIHsgfVxufVxuIiwgImltcG9ydCB7ICRjb25zdHJ1Y3RvciB9IGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuY29uc3QgaW5pdGlhbGl6ZXIgPSAoaW5zdCwgZGVmKSA9PiB7XG4gICAgaW5zdC5uYW1lID0gXCIkWm9kRXJyb3JcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJfem9kXCIsIHtcbiAgICAgICAgdmFsdWU6IGluc3QuX3pvZCxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiaXNzdWVzXCIsIHtcbiAgICAgICAgdmFsdWU6IGRlZixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwibWVzc2FnZVwiLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkZWYsIHV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgLy8gY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJ0b1N0cmluZ1wiLCB7XG4gICAgICAgIHZhbHVlOiAoKSA9PiBpbnN0Lm1lc3NhZ2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjb25zdCAkWm9kRXJyb3IgPSAkY29uc3RydWN0b3IoXCIkWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIpO1xuZXhwb3J0IGNvbnN0ICRab2RSZWFsRXJyb3IgPSAkY29uc3RydWN0b3IoXCIkWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIsIHsgUGFyZW50OiBFcnJvciB9KTtcbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuRXJyb3IoZXJyb3IsIG1hcHBlciA9IChpc3N1ZSkgPT4gaXNzdWUubWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgY29uc3QgZm9ybUVycm9ycyA9IFtdO1xuICAgIGZvciAoY29uc3Qgc3ViIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICBpZiAoc3ViLnBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dID0gZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dIHx8IFtdO1xuICAgICAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9ybUVycm9ycy5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmb3JtRXJyb3JzLCBmaWVsZEVycm9ycyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yLCBfbWFwcGVyKSB7XG4gICAgY29uc3QgbWFwcGVyID0gX21hcHBlciB8fFxuICAgICAgICBmdW5jdGlvbiAoaXNzdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlO1xuICAgICAgICB9O1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzID0geyBfZXJyb3JzOiBbXSB9O1xuICAgIGNvbnN0IHByb2Nlc3NFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF91bmlvblwiICYmIGlzc3VlLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpc3N1ZS5lcnJvcnMubWFwKChpc3N1ZXMpID0+IHByb2Nlc3NFcnJvcih7IGlzc3VlcyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfa2V5XCIpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoeyBpc3N1ZXM6IGlzc3VlLmlzc3VlcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9lbGVtZW50XCIpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoeyBpc3N1ZXM6IGlzc3VlLmlzc3VlcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZmllbGRFcnJvcnMuX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnIgPSBmaWVsZEVycm9ycztcbiAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBpc3N1ZS5wYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGlzc3VlLnBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1pbmFsID0gaSA9PT0gaXNzdWUucGF0aC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm1pbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0uX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcHJvY2Vzc0Vycm9yKGVycm9yKTtcbiAgICByZXR1cm4gZmllbGRFcnJvcnM7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZWlmeUVycm9yKGVycm9yLCBfbWFwcGVyKSB7XG4gICAgY29uc3QgbWFwcGVyID0gX21hcHBlciB8fFxuICAgICAgICBmdW5jdGlvbiAoaXNzdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlO1xuICAgICAgICB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZXJyb3JzOiBbXSB9O1xuICAgIGNvbnN0IHByb2Nlc3NFcnJvciA9IChlcnJvciwgcGF0aCA9IFtdKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGZvciAoY29uc3QgaXNzdWUgb2YgZXJyb3IuaXNzdWVzKSB7XG4gICAgICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3VuaW9uXCIgJiYgaXNzdWUuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIHJlZ3VsYXIgdW5pb24gZXJyb3JcbiAgICAgICAgICAgICAgICBpc3N1ZS5lcnJvcnMubWFwKChpc3N1ZXMpID0+IHByb2Nlc3NFcnJvcih7IGlzc3VlcyB9LCBpc3N1ZS5wYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfa2V5XCIpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoeyBpc3N1ZXM6IGlzc3VlLmlzc3VlcyB9LCBpc3N1ZS5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9lbGVtZW50XCIpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoeyBpc3N1ZXM6IGlzc3VlLmlzc3VlcyB9LCBpc3N1ZS5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gWy4uLnBhdGgsIC4uLmlzc3VlLnBhdGhdO1xuICAgICAgICAgICAgICAgIGlmIChmdWxscGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGN1cnIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgZnVsbHBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZnVsbHBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1pbmFsID0gaSA9PT0gZnVsbHBhdGgubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyci5wcm9wZXJ0aWVzID8/IChjdXJyLnByb3BlcnRpZXMgPSB7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBjdXJyLnByb3BlcnRpZXMpW2VsXSA/PyAoX2FbZWxdID0geyBlcnJvcnM6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyciA9IGN1cnIucHJvcGVydGllc1tlbF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyLml0ZW1zID8/IChjdXJyLml0ZW1zID0gW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgKF9iID0gY3Vyci5pdGVtcylbZWxdID8/IChfYltlbF0gPSB7IGVycm9yczogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci5pdGVtc1tlbF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyLmVycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHByb2Nlc3NFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKiBGb3JtYXQgYSBab2RFcnJvciBhcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyBpbiB0aGUgZm9sbG93aW5nIGZvcm0uXG4gKlxuICogRnJvbVxuICpcbiAqIGBgYHRzXG4gKiBab2RFcnJvciB7XG4gKiAgIGlzc3VlczogW1xuICogICAgIHtcbiAqICAgICAgIGV4cGVjdGVkOiAnc3RyaW5nJyxcbiAqICAgICAgIGNvZGU6ICdpbnZhbGlkX3R5cGUnLFxuICogICAgICAgcGF0aDogWyAndXNlcm5hbWUnIF0sXG4gKiAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgc3RyaW5nJ1xuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgZXhwZWN0ZWQ6ICdudW1iZXInLFxuICogICAgICAgY29kZTogJ2ludmFsaWRfdHlwZScsXG4gKiAgICAgICBwYXRoOiBbICdmYXZvcml0ZU51bWJlcnMnLCAxIF0sXG4gKiAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgbnVtYmVyJ1xuICogICAgIH1cbiAqICAgXTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIHRvXG4gKlxuICogYGBgXG4gKiB1c2VybmFtZVxuICogICBcdTI3MTYgRXhwZWN0ZWQgbnVtYmVyLCByZWNlaXZlZCBzdHJpbmcgYXQgXCJ1c2VybmFtZVxuICogZmF2b3JpdGVOdW1iZXJzWzBdXG4gKiAgIFx1MjcxNiBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCBudW1iZXJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Eb3RQYXRoKHBhdGgpIHtcbiAgICBjb25zdCBzZWdzID0gW107XG4gICAgZm9yIChjb25zdCBzZWcgb2YgcGF0aCkge1xuICAgICAgICBpZiAodHlwZW9mIHNlZyA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHNlZ3MucHVzaChgWyR7c2VnfV1gKTtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHNlZyA9PT0gXCJzeW1ib2xcIilcbiAgICAgICAgICAgIHNlZ3MucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKHNlZykpfV1gKTtcbiAgICAgICAgZWxzZSBpZiAoL1teXFx3JF0vLnRlc3Qoc2VnKSlcbiAgICAgICAgICAgIHNlZ3MucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoc2VnKX1dYCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlZ3MubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHNlZ3MucHVzaChcIi5cIik7XG4gICAgICAgICAgICBzZWdzLnB1c2goc2VnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2Vncy5qb2luKFwiXCIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByZXR0aWZ5RXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIC8vIHNvcnQgYnkgcGF0aCBsZW5ndGhcbiAgICBjb25zdCBpc3N1ZXMgPSBbLi4uZXJyb3IuaXNzdWVzXS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubGVuZ3RoIC0gYi5wYXRoLmxlbmd0aCk7XG4gICAgLy8gUHJvY2VzcyBlYWNoIGlzc3VlXG4gICAgZm9yIChjb25zdCBpc3N1ZSBvZiBpc3N1ZXMpIHtcbiAgICAgICAgbGluZXMucHVzaChgXHUyNzE2ICR7aXNzdWUubWVzc2FnZX1gKTtcbiAgICAgICAgaWYgKGlzc3VlLnBhdGg/Lmxlbmd0aClcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgXHUyMTkyIGF0ICR7dG9Eb3RQYXRoKGlzc3VlLnBhdGgpfWApO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IE1hcCB0byBmb3JtYXR0ZWQgc3RyaW5nXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG59XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi9jb3JlLmpzXCI7XG5pbXBvcnQgKiBhcyBlcnJvcnMgZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuL3V0aWwuanNcIjtcbmV4cG9ydCBjb25zdCBfcGFyc2UgPSAoX0VycikgPT4gKHNjaGVtYSwgdmFsdWUsIF9jdHgsIF9wYXJhbXMpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGFzeW5jOiBmYWxzZSB9KSA6IHsgYXN5bmM6IGZhbHNlIH07XG4gICAgY29uc3QgcmVzdWx0ID0gc2NoZW1hLl96b2QucnVuKHsgdmFsdWUsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZSA9IG5ldyAoX3BhcmFtcz8uRXJyID8/IF9FcnIpKHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKTtcbiAgICAgICAgdXRpbC5jYXB0dXJlU3RhY2tUcmFjZShlLCBfcGFyYW1zPy5jYWxsZWUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xufTtcbmV4cG9ydCBjb25zdCBwYXJzZSA9IC8qIEBfX1BVUkVfXyovIF9wYXJzZShlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX3BhcnNlQXN5bmMgPSAoX0VycikgPT4gYXN5bmMgKHNjaGVtYSwgdmFsdWUsIF9jdHgsIHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyBPYmplY3QuYXNzaWduKF9jdHgsIHsgYXN5bmM6IHRydWUgfSkgOiB7IGFzeW5jOiB0cnVlIH07XG4gICAgbGV0IHJlc3VsdCA9IHNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlc3VsdDtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZSA9IG5ldyAocGFyYW1zPy5FcnIgPz8gX0VycikocmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSkpO1xuICAgICAgICB1dGlsLmNhcHR1cmVTdGFja1RyYWNlKGUsIHBhcmFtcz8uY2FsbGVlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn07XG5leHBvcnQgY29uc3QgcGFyc2VBc3luYyA9IC8qIEBfX1BVUkVfXyovIF9wYXJzZUFzeW5jKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfc2FmZVBhcnNlID0gKF9FcnIpID0+IChzY2hlbWEsIHZhbHVlLCBfY3R4KSA9PiB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/IHsgLi4uX2N0eCwgYXN5bmM6IGZhbHNlIH0gOiB7IGFzeW5jOiBmYWxzZSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5pc3N1ZXMubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbmV3IChfRXJyID8/IGVycm9ycy4kWm9kRXJyb3IpKHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKSxcbiAgICAgICAgfVxuICAgICAgICA6IHsgc3VjY2VzczogdHJ1ZSwgZGF0YTogcmVzdWx0LnZhbHVlIH07XG59O1xuZXhwb3J0IGNvbnN0IHNhZmVQYXJzZSA9IC8qIEBfX1BVUkVfXyovIF9zYWZlUGFyc2UoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9zYWZlUGFyc2VBc3luYyA9IChfRXJyKSA9PiBhc3luYyAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyBPYmplY3QuYXNzaWduKF9jdHgsIHsgYXN5bmM6IHRydWUgfSkgOiB7IGFzeW5jOiB0cnVlIH07XG4gICAgbGV0IHJlc3VsdCA9IHNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlc3VsdDtcbiAgICByZXR1cm4gcmVzdWx0Lmlzc3Vlcy5sZW5ndGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBuZXcgX0VycihyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgICAgIH1cbiAgICAgICAgOiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xufTtcbmV4cG9ydCBjb25zdCBzYWZlUGFyc2VBc3luYyA9IC8qIEBfX1BVUkVfXyovIF9zYWZlUGFyc2VBc3luYyhlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG4iLCAiZXhwb3J0IGNvbnN0IGN1aWQgPSAvXltjQ11bXlxccy1dezgsfSQvO1xuZXhwb3J0IGNvbnN0IGN1aWQyID0gL15bMC05YS16XSskLztcbmV4cG9ydCBjb25zdCB1bGlkID0gL15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvO1xuZXhwb3J0IGNvbnN0IHhpZCA9IC9eWzAtOWEtdkEtVl17MjB9JC87XG5leHBvcnQgY29uc3Qga3N1aWQgPSAvXltBLVphLXowLTldezI3fSQvO1xuZXhwb3J0IGNvbnN0IG5hbm9pZCA9IC9eW2EtekEtWjAtOV8tXXsyMX0kLztcbi8qKiBJU08gODYwMS0xIGR1cmF0aW9uIHJlZ2V4LiBEb2VzIG5vdCBzdXBwb3J0IHRoZSA4NjAxLTIgZXh0ZW5zaW9ucyBsaWtlIG5lZ2F0aXZlIGR1cmF0aW9ucyBvciBmcmFjdGlvbmFsL25lZ2F0aXZlIGNvbXBvbmVudHMuICovXG5leHBvcnQgY29uc3QgZHVyYXRpb24gPSAvXlAoPzooXFxkK1cpfCg/IS4qVykoPz1cXGR8VFxcZCkoXFxkK1kpPyhcXGQrTSk/KFxcZCtEKT8oVCg/PVxcZCkoXFxkK0gpPyhcXGQrTSk/KFxcZCsoWy4sXVxcZCspP1MpPyk/KSQvO1xuLyoqIEltcGxlbWVudHMgSVNPIDg2MDEtMiBleHRlbnNpb25zIGxpa2UgZXhwbGljaXQgKy0gcHJlZml4ZXMsIG1peGluZyB3ZWVrcyB3aXRoIG90aGVyIHVuaXRzLCBhbmQgZnJhY3Rpb25hbC9uZWdhdGl2ZSBjb21wb25lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IGV4dGVuZGVkRHVyYXRpb24gPSAvXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvO1xuLyoqIEEgcmVnZXggZm9yIGFueSBVVUlELWxpa2UgaWRlbnRpZmllcjogOC00LTQtNC0xMiBoZXggcGF0dGVybiAqL1xuZXhwb3J0IGNvbnN0IGd1aWQgPSAvXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0pJC87XG4vKiogUmV0dXJucyBhIHJlZ2V4IGZvciB2YWxpZGF0aW5nIGFuIFJGQyA0MTIyIFVVSUQuXG4gKlxuICogQHBhcmFtIHZlcnNpb24gT3B0aW9uYWxseSBzcGVjaWZ5IGEgdmVyc2lvbiAxLTguIElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBhbGwgdmVyc2lvbnMgYXJlIHN1cHBvcnRlZC4gKi9cbmV4cG9ydCBjb25zdCB1dWlkID0gKHZlcnNpb24pID0+IHtcbiAgICBpZiAoIXZlcnNpb24pXG4gICAgICAgIHJldHVybiAvXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkLztcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke3ZlcnNpb259WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApO1xufTtcbmV4cG9ydCBjb25zdCB1dWlkNCA9IC8qQF9fUFVSRV9fKi8gdXVpZCg0KTtcbmV4cG9ydCBjb25zdCB1dWlkNiA9IC8qQF9fUFVSRV9fKi8gdXVpZCg2KTtcbmV4cG9ydCBjb25zdCB1dWlkNyA9IC8qQF9fUFVSRV9fKi8gdXVpZCg3KTtcbi8qKiBQcmFjdGljYWwgZW1haWwgdmFsaWRhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IGVtYWlsID0gL14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVphLXowLTlfJytcXC1cXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XFwtXSpcXC4pK1tBLVphLXpdezIsfSQvO1xuLyoqIEVxdWl2YWxlbnQgdG8gdGhlIEhUTUw1IGlucHV0W3R5cGU9ZW1haWxdIHZhbGlkYXRpb24gaW1wbGVtZW50ZWQgYnkgYnJvd3NlcnMuIFNvdXJjZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2VtYWlsICovXG5leHBvcnQgY29uc3QgaHRtbDVFbWFpbCA9IC9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztcbi8qKiBUaGUgY2xhc3NpYyBlbWFpbHJlZ2V4LmNvbSByZWdleCBmb3IgUkZDIDUzMjItY29tcGxpYW50IGVtYWlscyAqL1xuZXhwb3J0IGNvbnN0IHJmYzUzMjJFbWFpbCA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xuLyoqIEEgbG9vc2UgcmVnZXggdGhhdCBhbGxvd3MgVW5pY29kZSBjaGFyYWN0ZXJzLCBlbmZvcmNlcyBsZW5ndGggbGltaXRzLCBhbmQgdGhhdCdzIGFib3V0IGl0LiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVFbWFpbCA9IC9eW15cXHNAXCJdezEsNjR9QFteXFxzQF17MSwyNTV9JC91O1xuZXhwb3J0IGNvbnN0IGJyb3dzZXJFbWFpbCA9IC9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztcbi8vIGZyb20gaHR0cHM6Ly90aGVrZXZpbnNjb3R0LmNvbS9lbW9qaXMtaW4tamF2YXNjcmlwdC8jd3JpdGluZy1hLXJlZ3VsYXItZXhwcmVzc2lvblxuZXhwb3J0IGNvbnN0IF9lbW9qaSA9IGBeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJGA7XG5leHBvcnQgZnVuY3Rpb24gZW1vamkoKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoX2Vtb2ppLCBcInVcIik7XG59XG5leHBvcnQgY29uc3QgaXB2NCA9IC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC87XG5leHBvcnQgY29uc3QgaXB2NiA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pJC87XG5leHBvcnQgY29uc3QgY2lkcnY0ID0gL14oKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC87XG5leHBvcnQgY29uc3QgY2lkcnY2ID0gL14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvO1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzg2MDM5Mi9kZXRlcm1pbmUtaWYtc3RyaW5nLWlzLWluLWJhc2U2NC11c2luZy1qYXZhc2NyaXB0XG5leHBvcnQgY29uc3QgYmFzZTY0ID0gL14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC87XG5leHBvcnQgY29uc3QgYmFzZTY0dXJsID0gL15bQS1aYS16MC05Xy1dKiQvO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTA2MTc5L3JlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC1kbnMtaG9zdG5hbWUtb3ItaXAtYWRkcmVzc1xuLy8gZXhwb3J0IGNvbnN0IGhvc3RuYW1lOiBSZWdFeHAgPVxuLy8gICAvXigoW2EtekEtWjAtOV18W2EtekEtWjAtOV1bYS16QS1aMC05XFwtXSpbYS16QS1aMC05XSlcXC4pKyhbQS1aYS16MC05XXxbQS1aYS16MC05XVtBLVphLXowLTlcXC1dKltBLVphLXowLTldKSQvO1xuZXhwb3J0IGNvbnN0IGhvc3RuYW1lID0gL14oW2EtekEtWjAtOS1dK1xcLikqW2EtekEtWjAtOS1dKyQvO1xuZXhwb3J0IGNvbnN0IGRvbWFpbiA9IC9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1xcLikrW2EtekEtWl17Mix9JC87XG4vLyBodHRwczovL2Jsb2cuc3RldmVubGV2aXRoYW4uY29tL2FyY2hpdmVzL3ZhbGlkYXRlLXBob25lLW51bWJlciNyNC0zIChyZWdleCBzYW5zIHNwYWNlcylcbmV4cG9ydCBjb25zdCBlMTY0ID0gL15cXCsoPzpbMC05XSl7NiwxNH1bMC05XSQvO1xuLy8gY29uc3QgZGF0ZVNvdXJjZSA9IGAoKFxcXFxkXFxcXGRbMjQ2OF1bMDQ4XXxcXFxcZFxcXFxkWzEzNTc5XVsyNl18XFxcXGRcXFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcXFxkezR9LSgoMFsxMzU3OF18MVswMl0pLSgwWzEtOV18WzEyXVxcXFxkfDNbMDFdKXwoMFs0NjldfDExKS0oMFsxLTldfFsxMl1cXFxcZHwzMCl8KDAyKS0oMFsxLTldfDFcXFxcZHwyWzAtOF0pKSlgO1xuY29uc3QgZGF0ZVNvdXJjZSA9IGAoPzooPzpcXFxcZFxcXFxkWzI0NjhdWzA0OF18XFxcXGRcXFxcZFsxMzU3OV1bMjZdfFxcXFxkXFxcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXFxcZHs0fS0oPzooPzowWzEzNTc4XXwxWzAyXSktKD86MFsxLTldfFsxMl1cXFxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXFxcZHwyWzAtOF0pKSlgO1xuZXhwb3J0IGNvbnN0IGRhdGUgPSAvKkBfX1BVUkVfXyovIG5ldyBSZWdFeHAoYF4ke2RhdGVTb3VyY2V9JGApO1xuZnVuY3Rpb24gdGltZVNvdXJjZShhcmdzKSB7XG4gICAgY29uc3QgaGhtbSA9IGAoPzpbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkYDtcbiAgICBjb25zdCByZWdleCA9IHR5cGVvZiBhcmdzLnByZWNpc2lvbiA9PT0gXCJudW1iZXJcIlxuICAgICAgICA/IGFyZ3MucHJlY2lzaW9uID09PSAtMVxuICAgICAgICAgICAgPyBgJHtoaG1tfWBcbiAgICAgICAgICAgIDogYXJncy5wcmVjaXNpb24gPT09IDBcbiAgICAgICAgICAgICAgICA/IGAke2hobW19OlswLTVdXFxcXGRgXG4gICAgICAgICAgICAgICAgOiBgJHtoaG1tfTpbMC01XVxcXFxkXFxcXC5cXFxcZHske2FyZ3MucHJlY2lzaW9ufX1gXG4gICAgICAgIDogYCR7aGhtbX0oPzo6WzAtNV1cXFxcZCg/OlxcXFwuXFxcXGQrKT8pP2A7XG4gICAgcmV0dXJuIHJlZ2V4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRpbWUoYXJncykge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHt0aW1lU291cmNlKGFyZ3MpfSRgKTtcbn1cbi8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzE0MzIzMVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lKGFyZ3MpIHtcbiAgICBjb25zdCB0aW1lID0gdGltZVNvdXJjZSh7IHByZWNpc2lvbjogYXJncy5wcmVjaXNpb24gfSk7XG4gICAgY29uc3Qgb3B0cyA9IFtcIlpcIl07XG4gICAgaWYgKGFyZ3MubG9jYWwpXG4gICAgICAgIG9wdHMucHVzaChcIlwiKTtcbiAgICBpZiAoYXJncy5vZmZzZXQpXG4gICAgICAgIG9wdHMucHVzaChgKFsrLV1cXFxcZHsyfTpcXFxcZHsyfSlgKTtcbiAgICBjb25zdCB0aW1lUmVnZXggPSBgJHt0aW1lfSg/OiR7b3B0cy5qb2luKFwifFwiKX0pYDtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7ZGF0ZVNvdXJjZX1UKD86JHt0aW1lUmVnZXh9KSRgKTtcbn1cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBwYXJhbXMgPyBgW1xcXFxzXFxcXFNdeyR7cGFyYW1zPy5taW5pbXVtID8/IDB9LCR7cGFyYW1zPy5tYXhpbXVtID8/IFwiXCJ9fWAgOiBgW1xcXFxzXFxcXFNdKmA7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4ke3JlZ2V4fSRgKTtcbn07XG5leHBvcnQgY29uc3QgYmlnaW50ID0gL15cXGQrbj8kLztcbmV4cG9ydCBjb25zdCBpbnRlZ2VyID0gL15cXGQrJC87XG5leHBvcnQgY29uc3QgbnVtYmVyID0gL14tP1xcZCsoPzpcXC5cXGQrKT8vaTtcbmV4cG9ydCBjb25zdCBib29sZWFuID0gL3RydWV8ZmFsc2UvaTtcbmNvbnN0IF9udWxsID0gL251bGwvaTtcbmV4cG9ydCB7IF9udWxsIGFzIG51bGwgfTtcbmNvbnN0IF91bmRlZmluZWQgPSAvdW5kZWZpbmVkL2k7XG5leHBvcnQgeyBfdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB9O1xuLy8gcmVnZXggZm9yIHN0cmluZyB3aXRoIG5vIHVwcGVyY2FzZSBsZXR0ZXJzXG5leHBvcnQgY29uc3QgbG93ZXJjYXNlID0gL15bXkEtWl0qJC87XG4vLyByZWdleCBmb3Igc3RyaW5nIHdpdGggbm8gbG93ZXJjYXNlIGxldHRlcnNcbmV4cG9ydCBjb25zdCB1cHBlcmNhc2UgPSAvXlteYS16XSokLztcbiIsICIvLyBpbXBvcnQgeyAkWm9kVHlwZSB9IGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgcmVnZXhlcyBmcm9tIFwiLi9yZWdleGVzLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuL3V0aWwuanNcIjtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2sgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaW5zdC5fem9kID8/IChpbnN0Ll96b2QgPSB7fSk7XG4gICAgaW5zdC5fem9kLmRlZiA9IGRlZjtcbiAgICAoX2EgPSBpbnN0Ll96b2QpLm9uYXR0YWNoID8/IChfYS5vbmF0dGFjaCA9IFtdKTtcbn0pO1xuY29uc3QgbnVtZXJpY09yaWdpbk1hcCA9IHtcbiAgICBudW1iZXI6IFwibnVtYmVyXCIsXG4gICAgYmlnaW50OiBcImJpZ2ludFwiLFxuICAgIG9iamVjdDogXCJkYXRlXCIsXG59O1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0xlc3NUaGFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0xlc3NUaGFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IG9yaWdpbiA9IG51bWVyaWNPcmlnaW5NYXBbdHlwZW9mIGRlZi52YWx1ZV07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgY29uc3QgY3VyciA9IChkZWYuaW5jbHVzaXZlID8gYmFnLm1heGltdW0gOiBiYWcuZXhjbHVzaXZlTWF4aW11bSkgPz8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICBpZiAoZGVmLnZhbHVlIDwgY3Vycikge1xuICAgICAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUpXG4gICAgICAgICAgICAgICAgYmFnLm1heGltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYmFnLmV4Y2x1c2l2ZU1heGltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmluY2x1c2l2ZSA/IHBheWxvYWQudmFsdWUgPD0gZGVmLnZhbHVlIDogcGF5bG9hZC52YWx1ZSA8IGRlZi52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICBtYXhpbXVtOiBkZWYudmFsdWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZGVmLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0dyZWF0ZXJUaGFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0dyZWF0ZXJUaGFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IG9yaWdpbiA9IG51bWVyaWNPcmlnaW5NYXBbdHlwZW9mIGRlZi52YWx1ZV07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgY29uc3QgY3VyciA9IChkZWYuaW5jbHVzaXZlID8gYmFnLm1pbmltdW0gOiBiYWcuZXhjbHVzaXZlTWluaW11bSkgPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgICAgICBpZiAoZGVmLnZhbHVlID4gY3Vycikge1xuICAgICAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUpXG4gICAgICAgICAgICAgICAgYmFnLm1pbmltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYmFnLmV4Y2x1c2l2ZU1pbmltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmluY2x1c2l2ZSA/IHBheWxvYWQudmFsdWUgPj0gZGVmLnZhbHVlIDogcGF5bG9hZC52YWx1ZSA+IGRlZi52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgIG1pbmltdW06IGRlZi52YWx1ZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBkZWYuaW5jbHVzaXZlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTXVsdGlwbGVPZiA9IFxuLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja011bHRpcGxlT2ZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBpbnN0Ll96b2QuYmFnKS5tdWx0aXBsZU9mID8/IChfYS5tdWx0aXBsZU9mID0gZGVmLnZhbHVlKTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgIT09IHR5cGVvZiBkZWYudmFsdWUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLlwiKTtcbiAgICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IHR5cGVvZiBwYXlsb2FkLnZhbHVlID09PSBcImJpZ2ludFwiXG4gICAgICAgICAgICA/IHBheWxvYWQudmFsdWUgJSBkZWYudmFsdWUgPT09IEJpZ0ludCgwKVxuICAgICAgICAgICAgOiB1dGlsLmZsb2F0U2FmZVJlbWFpbmRlcihwYXlsb2FkLnZhbHVlLCBkZWYudmFsdWUpID09PSAwO1xuICAgICAgICBpZiAoaXNNdWx0aXBsZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IHR5cGVvZiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgY29kZTogXCJub3RfbXVsdGlwbGVfb2ZcIixcbiAgICAgICAgICAgIGRpdmlzb3I6IGRlZi52YWx1ZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTnVtYmVyRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja051bWJlckZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTsgLy8gbm8gZm9ybWF0IGNoZWNrc1xuICAgIGRlZi5mb3JtYXQgPSBkZWYuZm9ybWF0IHx8IFwiZmxvYXQ2NFwiO1xuICAgIGNvbnN0IGlzSW50ID0gZGVmLmZvcm1hdD8uaW5jbHVkZXMoXCJpbnRcIik7XG4gICAgY29uc3Qgb3JpZ2luID0gaXNJbnQgPyBcImludFwiIDogXCJudW1iZXJcIjtcbiAgICBjb25zdCBbbWluaW11bSwgbWF4aW11bV0gPSB1dGlsLk5VTUJFUl9GT1JNQVRfUkFOR0VTW2RlZi5mb3JtYXRdO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5mb3JtYXQgPSBkZWYuZm9ybWF0O1xuICAgICAgICBiYWcubWluaW11bSA9IG1pbmltdW07XG4gICAgICAgIGJhZy5tYXhpbXVtID0gbWF4aW11bTtcbiAgICAgICAgaWYgKGlzSW50KVxuICAgICAgICAgICAgYmFnLnBhdHRlcm4gPSByZWdleGVzLmludGVnZXI7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaXNJbnQpIHtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpbnZhbGlkX2Zvcm1hdCBpc3N1ZVxuICAgICAgICAgICAgICAgIC8vIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC8vICAgZXhwZWN0ZWQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICAgICAgLy8gICBmb3JtYXQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICAgICAgLy8gICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgLy8gICBpbnB1dCxcbiAgICAgICAgICAgICAgICAvLyAgIGluc3QsXG4gICAgICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICAgICAgLy8gaW52YWxpZF90eXBlIGlzc3VlXG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIG5vdF9tdWx0aXBsZV9vZiBpc3N1ZVxuICAgICAgICAgICAgICAgIC8vIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC8vICAgY29kZTogXCJub3RfbXVsdGlwbGVfb2ZcIixcbiAgICAgICAgICAgICAgICAvLyAgIG9yaWdpbjogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAvLyAgIGlucHV0LFxuICAgICAgICAgICAgICAgIC8vICAgaW5zdCxcbiAgICAgICAgICAgICAgICAvLyAgIGRpdmlzb3I6IDEsXG4gICAgICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9vX2JpZ1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyB0b29fc21hbGxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgPCBtaW5pbXVtKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgICAgICBtaW5pbXVtLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ID4gbWF4aW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgICAgIG1heGltdW0sXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0JpZ0ludEZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7IC8vIG5vIGZvcm1hdCBjaGVja3NcbiAgICBjb25zdCBbbWluaW11bSwgbWF4aW11bV0gPSB1dGlsLkJJR0lOVF9GT1JNQVRfUkFOR0VTW2RlZi5mb3JtYXRdO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5mb3JtYXQgPSBkZWYuZm9ybWF0O1xuICAgICAgICBiYWcubWluaW11bSA9IG1pbmltdW07XG4gICAgICAgIGJhZy5tYXhpbXVtID0gbWF4aW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpbnB1dCA8IG1pbmltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgICAgIG1pbmltdW06IG1pbmltdW0sXG4gICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgPiBtYXhpbXVtKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICAgICAgbWF4aW11bSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWF4U2l6ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNYXhTaXplXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwuc2l6ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5tYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWF4aW11bSA8IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1heGltdW0gPSBkZWYubWF4aW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNpemUgPSBpbnB1dC5zaXplO1xuICAgICAgICBpZiAoc2l6ZSA8PSBkZWYubWF4aW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IHV0aWwuZ2V0U2l6YWJsZU9yaWdpbihpbnB1dCksXG4gICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhpbXVtLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNaW5TaXplID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pblNpemVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5zaXplICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgY3VyciA9IChpbnN0Ll96b2QuYmFnLm1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgaWYgKGRlZi5taW5pbXVtID4gY3VycilcbiAgICAgICAgICAgIGluc3QuX3pvZC5iYWcubWluaW11bSA9IGRlZi5taW5pbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGlucHV0LnNpemU7XG4gICAgICAgIGlmIChzaXplID49IGRlZi5taW5pbXVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdXRpbC5nZXRTaXphYmxlT3JpZ2luKGlucHV0KSxcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluaW11bSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrU2l6ZUVxdWFscyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tTaXplRXF1YWxzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwuc2l6ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5taW5pbXVtID0gZGVmLnNpemU7XG4gICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLnNpemU7XG4gICAgICAgIGJhZy5zaXplID0gZGVmLnNpemU7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBzaXplID0gaW5wdXQuc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgPT09IGRlZi5zaXplKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB0b29CaWcgPSBzaXplID4gZGVmLnNpemU7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiB1dGlsLmdldFNpemFibGVPcmlnaW4oaW5wdXQpLFxuICAgICAgICAgICAgLi4uKHRvb0JpZyA/IHsgY29kZTogXCJ0b29fYmlnXCIsIG1heGltdW06IGRlZi5zaXplIH0gOiB7IGNvZGU6IFwidG9vX3NtYWxsXCIsIG1pbmltdW06IGRlZi5zaXplIH0pLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgZXhhY3Q6IHRydWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01heExlbmd0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNYXhMZW5ndGhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyID0gKGluc3QuX3pvZC5iYWcubWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBpZiAoZGVmLm1heGltdW0gPCBjdXJyKVxuICAgICAgICAgICAgaW5zdC5fem9kLmJhZy5tYXhpbXVtID0gZGVmLm1heGltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPD0gZGVmLm1heGltdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHV0aWwuZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCk7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4aW11bSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWluTGVuZ3RoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pbkxlbmd0aFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5taW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWluaW11bSA+IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1pbmltdW0gPSBkZWYubWluaW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA+PSBkZWYubWluaW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdXRpbC5nZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KTtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgbWluaW11bTogZGVmLm1pbmltdW0sXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0xlbmd0aEVxdWFscyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcubWluaW11bSA9IGRlZi5sZW5ndGg7XG4gICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLmxlbmd0aDtcbiAgICAgICAgYmFnLmxlbmd0aCA9IGRlZi5sZW5ndGg7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IGRlZi5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHV0aWwuZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCk7XG4gICAgICAgIGNvbnN0IHRvb0JpZyA9IGxlbmd0aCA+IGRlZi5sZW5ndGg7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgLi4uKHRvb0JpZyA/IHsgY29kZTogXCJ0b29fYmlnXCIsIG1heGltdW06IGRlZi5sZW5ndGggfSA6IHsgY29kZTogXCJ0b29fc21hbGxcIiwgbWluaW11bTogZGVmLmxlbmd0aCB9KSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGlmIChkZWYucGF0dGVybikge1xuICAgICAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgYmFnLnBhdHRlcm5zLmFkZChkZWYucGF0dGVybik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoZGVmLnBhdHRlcm4pXG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuY2hlY2sgPz8gKF9hLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIGRlZi5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICBpZiAoZGVmLnBhdHRlcm4udGVzdChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAuLi4oZGVmLnBhdHRlcm4gPyB7IHBhdHRlcm46IGRlZi5wYXR0ZXJuLnRvU3RyaW5nKCkgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIGVsc2VcbiAgICAgICAgKF9iID0gaW5zdC5fem9kKS5jaGVjayA/PyAoX2IuY2hlY2sgPSAoKSA9PiB7IH0pO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrUmVnZXggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrUmVnZXhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVja1N0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGVmLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKGRlZi5wYXR0ZXJuLnRlc3QocGF5bG9hZC52YWx1ZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcInJlZ2V4XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIHBhdHRlcm46IGRlZi5wYXR0ZXJuLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tMb3dlckNhc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTG93ZXJDYXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmxvd2VyY2FzZSk7XG4gICAgJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1VwcGVyQ2FzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tVcHBlckNhc2VcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudXBwZXJjYXNlKTtcbiAgICAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrSW5jbHVkZXMgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrSW5jbHVkZXNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgZXNjYXBlZFJlZ2V4ID0gdXRpbC5lc2NhcGVSZWdleChkZWYuaW5jbHVkZXMpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKHR5cGVvZiBkZWYucG9zaXRpb24gPT09IFwibnVtYmVyXCIgPyBgXi57JHtkZWYucG9zaXRpb259fSR7ZXNjYXBlZFJlZ2V4fWAgOiBlc2NhcGVkUmVnZXgpO1xuICAgIGRlZi5wYXR0ZXJuID0gcGF0dGVybjtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcucGF0dGVybnMgPz8gKGJhZy5wYXR0ZXJucyA9IG5ldyBTZXQoKSk7XG4gICAgICAgIGJhZy5wYXR0ZXJucy5hZGQocGF0dGVybik7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUuaW5jbHVkZXMoZGVmLmluY2x1ZGVzLCBkZWYucG9zaXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJpbmNsdWRlc1wiLFxuICAgICAgICAgICAgaW5jbHVkZXM6IGRlZi5pbmNsdWRlcyxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrU3RhcnRzV2l0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tTdGFydHNXaXRoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeJHt1dGlsLmVzY2FwZVJlZ2V4KGRlZi5wcmVmaXgpfS4qYCk7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcGF0dGVybik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBiYWcucGF0dGVybnMuYWRkKHBhdHRlcm4pO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlLnN0YXJ0c1dpdGgoZGVmLnByZWZpeCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcInN0YXJ0c193aXRoXCIsXG4gICAgICAgICAgICBwcmVmaXg6IGRlZi5wcmVmaXgsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0VuZHNXaXRoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0VuZHNXaXRoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGAuKiR7dXRpbC5lc2NhcGVSZWdleChkZWYuc3VmZml4KX0kYCk7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcGF0dGVybik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBiYWcucGF0dGVybnMuYWRkKHBhdHRlcm4pO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlLmVuZHNXaXRoKGRlZi5zdWZmaXgpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJlbmRzX3dpdGhcIixcbiAgICAgICAgICAgIHN1ZmZpeDogZGVmLnN1ZmZpeCxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8gICAgJFpvZENoZWNrUHJvcGVydHkgICAgLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBoYW5kbGVDaGVja1Byb3BlcnR5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgcHJvcGVydHkpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3Vlcyhwcm9wZXJ0eSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tQcm9wZXJ0eSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tQcm9wZXJ0eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuc2NoZW1hLl96b2QucnVuKHtcbiAgICAgICAgICAgIHZhbHVlOiBwYXlsb2FkLnZhbHVlW2RlZi5wcm9wZXJ0eV0sXG4gICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGRlZi5wcm9wZXJ0eSkpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBkZWYucHJvcGVydHkpO1xuICAgICAgICByZXR1cm47XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01pbWVUeXBlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pbWVUeXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IG1pbWVTZXQgPSBuZXcgU2V0KGRlZi5taW1lKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBpbnN0Ll96b2QuYmFnLm1pbWUgPSBkZWYubWltZTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAobWltZVNldC5oYXMocGF5bG9hZC52YWx1ZS50eXBlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgIHZhbHVlczogZGVmLm1pbWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZS50eXBlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja092ZXJ3cml0ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tPdmVyd3JpdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi50eChwYXlsb2FkLnZhbHVlKTtcbiAgICB9O1xufSk7XG4iLCAiZXhwb3J0IGNsYXNzIERvYyB7XG4gICAgY29uc3RydWN0b3IoYXJncyA9IFtdKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IFtdO1xuICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgIGlmICh0aGlzKVxuICAgICAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB9XG4gICAgaW5kZW50ZWQoZm4pIHtcbiAgICAgICAgdGhpcy5pbmRlbnQgKz0gMTtcbiAgICAgICAgZm4odGhpcyk7XG4gICAgICAgIHRoaXMuaW5kZW50IC09IDE7XG4gICAgfVxuICAgIHdyaXRlKGFyZykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBhcmcodGhpcywgeyBleGVjdXRpb246IFwic3luY1wiIH0pO1xuICAgICAgICAgICAgYXJnKHRoaXMsIHsgZXhlY3V0aW9uOiBcImFzeW5jXCIgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudCA9IGFyZztcbiAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gICAgICAgIGNvbnN0IG1pbkluZGVudCA9IE1hdGgubWluKC4uLmxpbmVzLm1hcCgoeCkgPT4geC5sZW5ndGggLSB4LnRyaW1TdGFydCgpLmxlbmd0aCkpO1xuICAgICAgICBjb25zdCBkZWRlbnRlZCA9IGxpbmVzLm1hcCgoeCkgPT4geC5zbGljZShtaW5JbmRlbnQpKS5tYXAoKHgpID0+IFwiIFwiLnJlcGVhdCh0aGlzLmluZGVudCAqIDIpICsgeCk7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBkZWRlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50LnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBjb25zdCBhcmdzID0gdGhpcz8uYXJncztcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXM/LmNvbnRlbnQgPz8gW2BgXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbLi4uY29udGVudC5tYXAoKHgpID0+IGAgICR7eH1gKV07XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICByZXR1cm4gbmV3IEYoLi4uYXJncywgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgfVxufVxuIiwgImV4cG9ydCBjb25zdCB2ZXJzaW9uID0ge1xuICAgIG1ham9yOiA0LFxuICAgIG1pbm9yOiAwLFxuICAgIHBhdGNoOiAwLFxufTtcbiIsICJpbXBvcnQgKiBhcyBjaGVja3MgZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCB7IERvYyB9IGZyb20gXCIuL2RvYy5qc1wiO1xuaW1wb3J0IHsgc2FmZVBhcnNlLCBzYWZlUGFyc2VBc3luYyB9IGZyb20gXCIuL3BhcnNlLmpzXCI7XG5pbXBvcnQgKiBhcyByZWdleGVzIGZyb20gXCIuL3JlZ2V4ZXMuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuL3ZlcnNpb25zLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZFR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFR5cGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpbnN0ID8/IChpbnN0ID0ge30pO1xuICAgIGluc3QuX3pvZC5kZWYgPSBkZWY7IC8vIHNldCBfZGVmIHByb3BlcnR5XG4gICAgaW5zdC5fem9kLmJhZyA9IGluc3QuX3pvZC5iYWcgfHwge307IC8vIGluaXRpYWxpemUgX2JhZyBvYmplY3RcbiAgICBpbnN0Ll96b2QudmVyc2lvbiA9IHZlcnNpb247XG4gICAgY29uc3QgY2hlY2tzID0gWy4uLihpbnN0Ll96b2QuZGVmLmNoZWNrcyA/PyBbXSldO1xuICAgIC8vIGlmIGluc3QgaXMgaXRzZWxmIGEgY2hlY2tzLiRab2RDaGVjaywgcnVuIGl0IGFzIGEgY2hlY2tcbiAgICBpZiAoaW5zdC5fem9kLnRyYWl0cy5oYXMoXCIkWm9kQ2hlY2tcIikpIHtcbiAgICAgICAgY2hlY2tzLnVuc2hpZnQoaW5zdCk7XG4gICAgfVxuICAgIC8vXG4gICAgZm9yIChjb25zdCBjaCBvZiBjaGVja3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBjaC5fem9kLm9uYXR0YWNoKSB7XG4gICAgICAgICAgICBmbihpbnN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hlY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBkZWZlcnJlZCBpbml0aWFsaXplclxuICAgICAgICAvLyBpbnN0Ll96b2QucGFyc2UgaXMgbm90IHlldCBkZWZpbmVkXG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuZGVmZXJyZWQgPz8gKF9hLmRlZmVycmVkID0gW10pO1xuICAgICAgICBpbnN0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgaW5zdC5fem9kLnJ1biA9IGluc3QuX3pvZC5wYXJzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBydW5DaGVja3MgPSAocGF5bG9hZCwgY2hlY2tzLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Fib3J0ZWQgPSB1dGlsLmFib3J0ZWQocGF5bG9hZCk7XG4gICAgICAgICAgICBsZXQgYXN5bmNSZXN1bHQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIGNoZWNrcykge1xuICAgICAgICAgICAgICAgIGlmIChjaC5fem9kLmRlZi53aGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJ1biA9IGNoLl96b2QuZGVmLndoZW4ocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkUnVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY3VyckxlbiA9IHBheWxvYWQuaXNzdWVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBfID0gY2guX3pvZC5jaGVjayhwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBpZiAoXyBpbnN0YW5jZW9mIFByb21pc2UgJiYgY3R4Py5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFzeW5jUmVzdWx0IHx8IF8gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jUmVzdWx0ID0gKGFzeW5jUmVzdWx0ID8/IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IF87XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGVuID0gcGF5bG9hZC5pc3N1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRMZW4gPT09IGN1cnJMZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Fib3J0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMZW4gPSBwYXlsb2FkLmlzc3Vlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TGVuID09PSBjdXJyTGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNBYm9ydGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhc3luY1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3luY1Jlc3VsdC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdC5fem9kLnJ1biA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3QuX3pvZC5wYXJzZShwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmFzeW5jID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gcnVuQ2hlY2tzKHJlc3VsdCwgY2hlY2tzLCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5DaGVja3MocmVzdWx0LCBjaGVja3MsIGN0eCk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGluc3RbXCJ+c3RhbmRhcmRcIl0gPSB7XG4gICAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHNhZmVQYXJzZShpbnN0LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHIuc3VjY2VzcyA/IHsgdmFsdWU6IHIuZGF0YSB9IDogeyBpc3N1ZXM6IHIuZXJyb3I/Lmlzc3VlcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2FmZVBhcnNlQXN5bmMoaW5zdCwgdmFsdWUpLnRoZW4oKHIpID0+IChyLnN1Y2Nlc3MgPyB7IHZhbHVlOiByLmRhdGEgfSA6IHsgaXNzdWVzOiByLmVycm9yPy5pc3N1ZXMgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2ZW5kb3I6IFwiem9kXCIsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgfTtcbn0pO1xuZXhwb3J0IHsgY2xvbmUgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU3RyaW5nXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBbLi4uKGluc3Q/Ll96b2QuYmFnPy5wYXR0ZXJucyA/PyBbXSldLnBvcCgpID8/IHJlZ2V4ZXMuc3RyaW5nKGluc3QuX3pvZC5iYWcpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfKSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gU3RyaW5nKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBjaGVjayBpbml0aWFsaXphdGlvbiBtdXN0IGNvbWUgZmlyc3RcbiAgICBjaGVja3MuJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICAkWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RHVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmd1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGlmIChkZWYudmVyc2lvbikge1xuICAgICAgICBjb25zdCB2ZXJzaW9uTWFwID0ge1xuICAgICAgICAgICAgdjE6IDEsXG4gICAgICAgICAgICB2MjogMixcbiAgICAgICAgICAgIHYzOiAzLFxuICAgICAgICAgICAgdjQ6IDQsXG4gICAgICAgICAgICB2NTogNSxcbiAgICAgICAgICAgIHY2OiA2LFxuICAgICAgICAgICAgdjc6IDcsXG4gICAgICAgICAgICB2ODogOCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdiA9IHZlcnNpb25NYXBbZGVmLnZlcnNpb25dO1xuICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogXCIke2RlZi52ZXJzaW9ufVwiYCk7XG4gICAgICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudXVpZCh2KSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51dWlkKCkpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEVtYWlsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RFbWFpbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5lbWFpbCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwob3JpZyk7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gdXJsLmhyZWY7XG4gICAgICAgICAgICBpZiAoZGVmLmhvc3RuYW1lKSB7XG4gICAgICAgICAgICAgICAgZGVmLmhvc3RuYW1lLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWYuaG9zdG5hbWUudGVzdCh1cmwuaG9zdG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbnZhbGlkIGhvc3RuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiByZWdleGVzLmhvc3RuYW1lLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGVmLnByb3RvY29sKSB7XG4gICAgICAgICAgICAgICAgZGVmLnByb3RvY29sLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWYucHJvdG9jb2wudGVzdCh1cmwucHJvdG9jb2wuZW5kc1dpdGgoXCI6XCIpID8gdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKSA6IHVybC5wcm90b2NvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludmFsaWQgcHJvdG9jb2xcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGRlZi5wcm90b2NvbC5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcGF5bG9hZC52YWx1ZSA9IHVybC5ocmVmO1xuICAgICAgICAgICAgaWYgKCFvcmlnLmVuZHNXaXRoKFwiL1wiKSAmJiBocmVmLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBocmVmLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBocmVmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRW1vamkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmVtb2ppKCkpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTmFub0lEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLm5hbm9pZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jdWlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDVUlEMiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ1VJRDJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY3VpZDIpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVMSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudWxpZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kWElEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMueGlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RLU1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kS1NVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMua3N1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0RhdGVUaW1lID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EYXRlVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5kYXRldGltZShkZWYpKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJU09EYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmRhdGUpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT1RpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT1RpbWVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudGltZShkZWYpKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJU09EdXJhdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVNPRHVyYXRpb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZHVyYXRpb24pO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElQdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuaXB2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGBpcHY0YDtcbiAgICB9KTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJUHY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJUHY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmlwdjYpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5mb3JtYXQgPSBgaXB2NmA7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBVUkwoYGh0dHA6Ly9bJHtwYXlsb2FkLnZhbHVlfV1gKTtcbiAgICAgICAgICAgIC8vIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcImlwdjZcIixcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ0lEUnY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmNpZHJ2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ0lEUnY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDSURSdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY2lkcnY2KTsgLy8gbm90IHVzZWQgZm9yIHZhbGlkYXRpb25cbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBbYWRkcmVzcywgcHJlZml4XSA9IHBheWxvYWQudmFsdWUuc3BsaXQoXCIvXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFwcmVmaXgpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXhOdW0gPSBOdW1iZXIocHJlZml4KTtcbiAgICAgICAgICAgIGlmIChgJHtwcmVmaXhOdW19YCAhPT0gcHJlZml4KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgaWYgKHByZWZpeE51bSA8IDAgfHwgcHJlZml4TnVtID4gMTI4KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgbmV3IFVSTChgaHR0cDovL1ske2FkZHJlc3N9XWApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwiY2lkcnY2XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kQmFzZTY0ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJhc2U2NChkYXRhKSB7XG4gICAgaWYgKGRhdGEgPT09IFwiXCIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChkYXRhLmxlbmd0aCAlIDQgIT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBhdG9iKGRhdGEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0ICRab2RCYXNlNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5iYXNlNjQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGluc3QuX3pvZC5iYWcuY29udGVudEVuY29kaW5nID0gXCJiYXNlNjRcIjtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoaXNWYWxpZEJhc2U2NChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kQmFzZTY0ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJhc2U2NFVSTChkYXRhKSB7XG4gICAgaWYgKCFyZWdleGVzLmJhc2U2NHVybC50ZXN0KGRhdGEpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYmFzZTY0ID0gZGF0YS5yZXBsYWNlKC9bLV9dL2csIChjKSA9PiAoYyA9PT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSk7XG4gICAgY29uc3QgcGFkZGVkID0gYmFzZTY0LnBhZEVuZChNYXRoLmNlaWwoYmFzZTY0Lmxlbmd0aCAvIDQpICogNCwgXCI9XCIpO1xuICAgIHJldHVybiBpc1ZhbGlkQmFzZTY0KHBhZGRlZCk7XG59XG5leHBvcnQgY29uc3QgJFpvZEJhc2U2NFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmFzZTY0VVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmJhc2U2NHVybCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgaW5zdC5fem9kLmJhZy5jb250ZW50RW5jb2RpbmcgPSBcImJhc2U2NHVybFwiO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkQmFzZTY0VVJMKHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEUxNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEUxNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZTE2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgIFpvZEpXVCAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRKV1QodG9rZW4sIGFsZ29yaXRobSA9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB0b2tlbnNQYXJ0cyA9IHRva2VuLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHRva2Vuc1BhcnRzLmxlbmd0aCAhPT0gMylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW2hlYWRlcl0gPSB0b2tlbnNQYXJ0cztcbiAgICAgICAgaWYgKCFoZWFkZXIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEhlYWRlciA9IEpTT04ucGFyc2UoYXRvYihoZWFkZXIpKTtcbiAgICAgICAgaWYgKFwidHlwXCIgaW4gcGFyc2VkSGVhZGVyICYmIHBhcnNlZEhlYWRlcj8udHlwICE9PSBcIkpXVFwiKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIXBhcnNlZEhlYWRlci5hbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhbGdvcml0aG0gJiYgKCEoXCJhbGdcIiBpbiBwYXJzZWRIZWFkZXIpIHx8IHBhcnNlZEhlYWRlci5hbGcgIT09IGFsZ29yaXRobSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgJFpvZEpXVCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSldUXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoaXNWYWxpZEpXVChwYXlsb2FkLnZhbHVlLCBkZWYuYWxnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiand0XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDdXN0b21TdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGRlZi5mbihwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdW1iZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gaW5zdC5fem9kLmJhZy5wYXR0ZXJuID8/IHJlZ2V4ZXMubnVtYmVyO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gTnVtYmVyKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwibnVtYmVyXCIgJiYgIU51bWJlci5pc05hTihpbnB1dCkgJiYgTnVtYmVyLmlzRmluaXRlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSB0eXBlb2YgaW5wdXQgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgID8gTnVtYmVyLmlzTmFOKGlucHV0KVxuICAgICAgICAgICAgICAgID8gXCJOYU5cIlxuICAgICAgICAgICAgICAgIDogIU51bWJlci5pc0Zpbml0ZShpbnB1dClcbiAgICAgICAgICAgICAgICAgICAgPyBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIC4uLihyZWNlaXZlZCA/IHsgcmVjZWl2ZWQgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTnVtYmVyRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROdW1iZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2tOdW1iZXJGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2ROdW1iZXIuaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzcFxufSk7XG5leHBvcnQgY29uc3QgJFpvZEJvb2xlYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJvb2xlYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IHJlZ2V4ZXMuYm9vbGVhbjtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmNvZXJjZSlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IEJvb2xlYW4ocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJib29sZWFuXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RCaWdJbnQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJpZ0ludFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gcmVnZXhlcy5iaWdpbnQ7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBCaWdJbnQocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2tCaWdJbnRGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzXG59KTtcbmV4cG9ydCBjb25zdCAkWm9kU3ltYm9sID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTeW1ib2xcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3ltYm9sXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJzeW1ib2xcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVuZGVmaW5lZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5kZWZpbmVkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLnVuZGVmaW5lZDtcbiAgICBpbnN0Ll96b2QudmFsdWVzID0gbmV3IFNldChbdW5kZWZpbmVkXSk7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5vcHRvdXQgPSBcIm9wdGlvbmFsXCI7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidW5kZWZpbmVkXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdWxsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROdWxsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLm51bGw7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQoW251bGxdKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcIm51bGxcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQW55XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQpID0+IHBheWxvYWQ7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVW5rbm93biA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkKSA9PiBwYXlsb2FkO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE5ldmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROZXZlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibmV2ZXJcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFZvaWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFZvaWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJ2b2lkXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ldyBEYXRlKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9lcnIpIHsgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgaXNEYXRlID0gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IGlzRGF0ZSAmJiAhTnVtYmVyLmlzTmFOKGlucHV0LmdldFRpbWUoKSk7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZSlcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImRhdGVcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIC4uLihpc0RhdGUgPyB7IHJlY2VpdmVkOiBcIkludmFsaWQgRGF0ZVwiIH0gOiB7fSksXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBmaW5hbCwgaW5kZXgpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoaW5kZXgsIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICB9XG4gICAgZmluYWwudmFsdWVbaW5kZXhdID0gcmVzdWx0LnZhbHVlO1xufVxuZXhwb3J0IGNvbnN0ICRab2RBcnJheSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQXJyYXlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBBcnJheShpbnB1dC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaW5wdXRbaV07XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuZWxlbWVudC5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0sXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7IC8vaGFuZGxlQXJyYXlSZXN1bHRzQXN5bmMocGFyc2VSZXN1bHRzLCBmaW5hbCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlT2JqZWN0UmVzdWx0KHJlc3VsdCwgZmluYWwsIGtleSkge1xuICAgIC8vIGlmKGlzT3B0aW9uYWwpXG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbiAgICBmaW5hbC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xufVxuZnVuY3Rpb24gaGFuZGxlT3B0aW9uYWxPYmplY3RSZXN1bHQocmVzdWx0LCBmaW5hbCwga2V5LCBpbnB1dCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIGZhaWxlZCBhZ2FpbnN0IHZhbHVlIHNjaGVtYVxuICAgICAgICBpZiAoaW5wdXRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBpZiBpbnB1dCB3YXMgdW5kZWZpbmVkLCBpZ25vcmUgdGhlIGVycm9yXG4gICAgICAgICAgICBpZiAoa2V5IGluIGlucHV0KSB7XG4gICAgICAgICAgICAgICAgZmluYWwudmFsdWVba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmFsLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChyZXN1bHQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIHJldHVybmVkIGB1bmRlZmluZWRgXG4gICAgICAgIGlmIChrZXkgaW4gaW5wdXQpXG4gICAgICAgICAgICBmaW5hbC52YWx1ZVtrZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gbm9uLXVuZGVmaW5lZCB2YWx1ZVxuICAgICAgICBmaW5hbC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIHJlcXVpcmVzIGNhc3QgYmVjYXVzZSB0ZWNobmljYWxseSAkWm9kT2JqZWN0IGRvZXNuJ3QgZXh0ZW5kXG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IF9ub3JtYWxpemVkID0gdXRpbC5jYWNoZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGVmLnNoYXBlKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICAgIGlmICghKGRlZi5zaGFwZVtrXSBpbnN0YW5jZW9mICRab2RUeXBlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSBcIiR7a31cIjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2tleXMgPSB1dGlsLm9wdGlvbmFsS2V5cyhkZWYuc2hhcGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hhcGU6IGRlZi5zaGFwZSxcbiAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICBrZXlTZXQ6IG5ldyBTZXQoa2V5cyksXG4gICAgICAgICAgICBudW1LZXlzOiBrZXlzLmxlbmd0aCxcbiAgICAgICAgICAgIG9wdGlvbmFsS2V5czogbmV3IFNldChva2V5cyksXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwcm9wVmFsdWVzXCIsICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBkZWYuc2hhcGU7XG4gICAgICAgIGNvbnN0IHByb3BWYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2hhcGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc2hhcGVba2V5XS5fem9kO1xuICAgICAgICAgICAgaWYgKGZpZWxkLnZhbHVlcykge1xuICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba2V5XSA/PyAocHJvcFZhbHVlc1trZXldID0gbmV3IFNldCgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgZmllbGQudmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWVzW2tleV0uYWRkKHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wVmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGdlbmVyYXRlRmFzdHBhc3MgPSAoc2hhcGUpID0+IHtcbiAgICAgICAgY29uc3QgZG9jID0gbmV3IERvYyhbXCJzaGFwZVwiLCBcInBheWxvYWRcIiwgXCJjdHhcIl0pO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gX25vcm1hbGl6ZWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcnNlU3RyID0gKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IHV0aWwuZXNjKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gYHNoYXBlWyR7a31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7a31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgO1xuICAgICAgICB9O1xuICAgICAgICBkb2Mud3JpdGUoYGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtgKTtcbiAgICAgICAgY29uc3QgaWRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBub3JtYWxpemVkLmtleXMpIHtcbiAgICAgICAgICAgIGlkc1trZXldID0gYGtleV8ke2NvdW50ZXIrK31gO1xuICAgICAgICB9XG4gICAgICAgIC8vIEE6IHByZXNlcnZlIGtleSBvcmRlciB7XG4gICAgICAgIGRvYy53cml0ZShgY29uc3QgbmV3UmVzdWx0ID0ge31gKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygbm9ybWFsaXplZC5rZXlzKSB7XG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZC5vcHRpb25hbEtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGlkc1trZXldO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgY29uc3QgJHtpZH0gPSAke3BhcnNlU3RyKGtleSl9O2ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGsgPSB1dGlsLmVzYyhrZXkpO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgXG4gICAgICAgIGlmICgke2lkfS5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGlucHV0WyR7a31dID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSB7XG4gICAgICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoXG4gICAgICAgICAgICAgICR7aWR9Lmlzc3Vlcy5tYXAoKGlzcykgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtrfSwgLi4uaXNzLnBhdGhdIDogWyR7a31dLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCR7aWR9LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoJHtrfSBpbiBpbnB1dCkgbmV3UmVzdWx0WyR7a31dID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9ICR7aWR9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBpZHNba2V5XTtcbiAgICAgICAgICAgICAgICAvLyAgY29uc3QgaWQgPSBpZHNba2V5XTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYGNvbnN0ICR7aWR9ID0gJHtwYXJzZVN0cihrZXkpfTtgKTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYFxuICAgICAgICAgIGlmICgke2lkfS5pc3N1ZXMubGVuZ3RoKSBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke2lkfS5pc3N1ZXMubWFwKGlzcyA9PiAoe1xuICAgICAgICAgICAgLi4uaXNzLFxuICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHt1dGlsLmVzYyhrZXkpfSwgLi4uaXNzLnBhdGhdIDogWyR7dXRpbC5lc2Moa2V5KX1dXG4gICAgICAgICAgfSkpKTtgKTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYG5ld1Jlc3VsdFske3V0aWwuZXNjKGtleSl9XSA9ICR7aWR9LnZhbHVlYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG9jLndyaXRlKGBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0O2ApO1xuICAgICAgICBkb2Mud3JpdGUoYHJldHVybiBwYXlsb2FkO2ApO1xuICAgICAgICBjb25zdCBmbiA9IGRvYy5jb21waWxlKCk7XG4gICAgICAgIHJldHVybiAocGF5bG9hZCwgY3R4KSA9PiBmbihzaGFwZSwgcGF5bG9hZCwgY3R4KTtcbiAgICB9O1xuICAgIGxldCBmYXN0cGFzcztcbiAgICBjb25zdCBpc09iamVjdCA9IHV0aWwuaXNPYmplY3Q7XG4gICAgY29uc3Qgaml0ID0gIWNvcmUuZ2xvYmFsQ29uZmlnLmppdGxlc3M7XG4gICAgY29uc3QgYWxsb3dzRXZhbCA9IHV0aWwuYWxsb3dzRXZhbDtcbiAgICBjb25zdCBmYXN0RW5hYmxlZCA9IGppdCAmJiBhbGxvd3NFdmFsLnZhbHVlOyAvLyAmJiAhZGVmLmNhdGNoYWxsO1xuICAgIGNvbnN0IGNhdGNoYWxsID0gZGVmLmNhdGNoYWxsO1xuICAgIGxldCB2YWx1ZTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHZhbHVlID8/ICh2YWx1ZSA9IF9ub3JtYWxpemVkLnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBpZiAoaml0ICYmIGZhc3RFbmFibGVkICYmIGN0eD8uYXN5bmMgPT09IGZhbHNlICYmIGN0eC5qaXRsZXNzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAvLyBhbHdheXMgc3luY2hyb25vdXNcbiAgICAgICAgICAgIGlmICghZmFzdHBhc3MpXG4gICAgICAgICAgICAgICAgZmFzdHBhc3MgPSBnZW5lcmF0ZUZhc3RwYXNzKGRlZi5zaGFwZSk7XG4gICAgICAgICAgICBwYXlsb2FkID0gZmFzdHBhc3MocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gdmFsdWUuc2hhcGU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZS5rZXlzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSBzaGFwZVtrZXldO1xuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgb21pdHRlZCBvcHRpb25hbCBrZXlzXG4gICAgICAgICAgICAgICAgLy8gaWYgKCEoa2V5IGluIGlucHV0KSkge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKG9wdGlvbmFsS2V5cy5oYXMoa2V5KSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICAvLyAgICAgcGF0aDogW2tleV0sXG4gICAgICAgICAgICAgICAgLy8gICAgIGV4cGVjdGVkOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgLy8gICAgIG5vdGU6IGBNaXNzaW5nIHJlcXVpcmVkIGtleTogXCIke2tleX1cImAsXG4gICAgICAgICAgICAgICAgLy8gICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIC8vICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBlbC5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPcHRpb25hbCA9IGVsLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIiAmJiBlbC5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiO1xuICAgICAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHIudGhlbigocikgPT4gaXNPcHRpb25hbCA/IGhhbmRsZU9wdGlvbmFsT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSwgaW5wdXQpIDogaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcHRpb25hbE9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXksIGlucHV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhdGNoYWxsKSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIHJldHVybiBwcm9tcy5sZW5ndGggPyBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKSA6IHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdW5yZWNvZ25pemVkID0gW107XG4gICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBpbnB1dCBrZXlzXG4gICAgICAgIGNvbnN0IGtleVNldCA9IHZhbHVlLmtleVNldDtcbiAgICAgICAgY29uc3QgX2NhdGNoYWxsID0gY2F0Y2hhbGwuX3pvZDtcbiAgICAgICAgY29uc3QgdCA9IF9jYXRjaGFsbC5kZWYudHlwZTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5wdXQpKSB7XG4gICAgICAgICAgICBpZiAoa2V5U2V0LmhhcyhrZXkpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHQgPT09IFwibmV2ZXJcIikge1xuICAgICAgICAgICAgICAgIHVucmVjb2duaXplZC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByID0gX2NhdGNoYWxsLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHIudGhlbigocikgPT4gaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh1bnJlY29nbml6ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcInVucmVjb2duaXplZF9rZXlzXCIsXG4gICAgICAgICAgICAgICAga2V5czogdW5yZWNvZ25pemVkLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXByb21zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBmaW5hbCwgaW5zdCwgY3R4KSB7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZpbmFsLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgIGlucHV0OiBmaW5hbC52YWx1ZSxcbiAgICAgICAgaW5zdCxcbiAgICAgICAgZXJyb3JzOiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbmFsO1xufVxuZXhwb3J0IGNvbnN0ICRab2RVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5vcHRpb25zLnNvbWUoKG8pID0+IG8uX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLm9wdGlvbnMuc29tZSgobykgPT4gby5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoZGVmLm9wdGlvbnMuZXZlcnkoKG8pID0+IG8uX3pvZC52YWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNldChkZWYub3B0aW9ucy5mbGF0TWFwKChvcHRpb24pID0+IEFycmF5LmZyb20ob3B0aW9uLl96b2QudmFsdWVzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5vcHRpb25zLmV2ZXJ5KChvKSA9PiBvLl96b2QucGF0dGVybikpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5zID0gZGVmLm9wdGlvbnMubWFwKChvKSA9PiBvLl96b2QucGF0dGVybik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXigke3BhdHRlcm5zLm1hcCgocCkgPT4gdXRpbC5jbGVhblJlZ2V4KHAuc291cmNlKSkuam9pbihcInxcIil9KSRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgbGV0IGFzeW5jID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgICAgIGFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFzeW5jKVxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9IFxuLypAX19QVVJFX18qL1xuY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVW5pb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IF9zdXBlciA9IGluc3QuX3pvZC5wYXJzZTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWVzID0ge307XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGRlZi5vcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBwdiA9IG9wdGlvbi5fem9kLnByb3BWYWx1ZXM7XG4gICAgICAgICAgICBpZiAoIXB2IHx8IE9iamVjdC5rZXlzKHB2KS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtkZWYub3B0aW9ucy5pbmRleE9mKG9wdGlvbil9XCJgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHB2KSkge1xuICAgICAgICAgICAgICAgIGlmICghcHJvcFZhbHVlc1trXSlcbiAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trXSA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB2KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba10uYWRkKHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wVmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGRpc2MgPSB1dGlsLmNhY2hlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBkZWYub3B0aW9ucztcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG8gb2Ygb3B0cykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gby5fem9kLnByb3BWYWx1ZXNbZGVmLmRpc2NyaW1pbmF0b3JdO1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLnNpemUgPT09IDApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtkZWYub3B0aW9ucy5pbmRleE9mKG8pfVwiYCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcC5oYXModikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSBcIiR7U3RyaW5nKHYpfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcC5zZXQodiwgbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCF1dGlsLmlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHQgPSBkaXNjLnZhbHVlLmdldChpbnB1dD8uW2RlZi5kaXNjcmltaW5hdG9yXSk7XG4gICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHQuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLnVuaW9uRmFsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBfc3VwZXIocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBubyBtYXRjaGluZyBkaXNjcmltaW5hdG9yXG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgbm90ZTogXCJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHBhdGg6IFtkZWYuZGlzY3JpbWluYXRvcl0sXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEludGVyc2VjdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmxlZnQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBkZWYucmlnaHQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgYXN5bmMgPSBsZWZ0IGluc3RhbmNlb2YgUHJvbWlzZSB8fCByaWdodCBpbnN0YW5jZW9mIFByb21pc2U7XG4gICAgICAgIGlmIChhc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtsZWZ0LCByaWdodF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIC8vIGNvbnN0IGFUeXBlID0gcGFyc2UudChhKTtcbiAgICAvLyBjb25zdCBiVHlwZSA9IHBhcnNlLnQoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlICYmICthID09PSArYikge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogYSB9O1xuICAgIH1cbiAgICBpZiAodXRpbC5pc1BsYWluT2JqZWN0KGEpICYmIHV0aWwuaXNQbGFpbk9iamVjdChiKSkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICBjb25zdCBzaGFyZWRLZXlzID0gT2JqZWN0LmtleXMoYSkuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLmEsIC4uLmIgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcmVkS2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhhW2tleV0sIGJba2V5XSk7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXJnZUVycm9yUGF0aDogW2tleSwgLi4uc2hhcmVkVmFsdWUubWVyZ2VFcnJvclBhdGhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgbWVyZ2VFcnJvclBhdGg6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtQSA9IGFbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaXRlbUIgPSBiW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZFZhbHVlID0gbWVyZ2VWYWx1ZXMoaXRlbUEsIGl0ZW1CKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlRXJyb3JQYXRoOiBbaW5kZXgsIC4uLnNoYXJlZFZhbHVlLm1lcmdlRXJyb3JQYXRoXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3QXJyYXkucHVzaChzaGFyZWRWYWx1ZS5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3QXJyYXkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBtZXJnZUVycm9yUGF0aDogW10gfTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMocmVzdWx0LCBsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lmlzc3Vlcy5wdXNoKC4uLmxlZnQuaXNzdWVzKTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lmlzc3Vlcy5wdXNoKC4uLnJpZ2h0Lmlzc3Vlcyk7XG4gICAgfVxuICAgIGlmICh1dGlsLmFib3J0ZWQocmVzdWx0KSlcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSk7XG4gICAgaWYgKCFtZXJnZWQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogYCArIGAke0pTT04uc3RyaW5naWZ5KG1lcmdlZC5tZXJnZUVycm9yUGF0aCl9YCk7XG4gICAgfVxuICAgIHJlc3VsdC52YWx1ZSA9IG1lcmdlZC5kYXRhO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFR1cGxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RUdXBsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IGl0ZW1zID0gZGVmLml0ZW1zO1xuICAgIGNvbnN0IG9wdFN0YXJ0ID0gaXRlbXMubGVuZ3RoIC0gWy4uLml0ZW1zXS5yZXZlcnNlKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl96b2Qub3B0aW4gIT09IFwib3B0aW9uYWxcIik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidHVwbGVcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gW107XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGlmICghZGVmLnJlc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGlucHV0Lmxlbmd0aCA+IGl0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gaW5wdXQubGVuZ3RoIDwgb3B0U3RhcnQgLSAxO1xuICAgICAgICAgICAgaWYgKHRvb0JpZyB8fCB0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLih0b29CaWcgPyB7IGNvZGU6IFwidG9vX2JpZ1wiLCBtYXhpbXVtOiBpdGVtcy5sZW5ndGggfSA6IHsgY29kZTogXCJ0b29fc21hbGxcIiwgbWluaW11bTogaXRlbXMubGVuZ3RoIH0pLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBpID0gLTE7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgaWYgKGkgPj0gaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGlmIChpID49IG9wdFN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGl0ZW0uX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpbnB1dFtpXSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdCA9IGlucHV0LnNsaWNlKGl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHJlc3QpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnJlc3QuX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwsXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgZmluYWwsIGluZGV4KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGluZGV4LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlW2luZGV4XSA9IHJlc3VsdC52YWx1ZTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RSZWNvcmRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCF1dGlsLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJyZWNvcmRcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGlmIChkZWYua2V5VHlwZS5fem9kLnZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZGVmLmtleVR5cGUuX3pvZC52YWx1ZXM7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Yga2V5ID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB1bnJlY29nbml6ZWQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVucmVjb2duaXplZCA9IHVucmVjb2duaXplZCA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWNvZ25pemVkLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5yZWNvZ25pemVkICYmIHVucmVjb2duaXplZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgIGtleXM6IHVucmVjb2duaXplZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlSZXN1bHQgPSBkZWYua2V5VHlwZS5fem9kLnJ1bih7IHZhbHVlOiBrZXksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5UmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoa2V5UmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFwicmVjb3JkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfa2V5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IGtleVJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFtrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IGtleVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi52YWx1ZVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRba2V5XSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTWFwID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RNYXBcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJtYXBcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGlucHV0KSB7XG4gICAgICAgICAgICBjb25zdCBrZXlSZXN1bHQgPSBkZWYua2V5VHlwZS5fem9kLnJ1bih7IHZhbHVlOiBrZXksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgaWYgKGtleVJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgfHwgdmFsdWVSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChQcm9taXNlLmFsbChba2V5UmVzdWx0LCB2YWx1ZVJlc3VsdF0pLnRoZW4oKFtrZXlSZXN1bHQsIHZhbHVlUmVzdWx0XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgcGF5bG9hZCwga2V5LCBpbnB1dCwgaW5zdCwgY3R4KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgcGF5bG9hZCwga2V5LCBpbnB1dCwgaW5zdCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgZmluYWwsIGtleSwgaW5wdXQsIGluc3QsIGN0eCkge1xuICAgIGlmIChrZXlSZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2Yga2V5KSkge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCBrZXlSZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm1hcFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9rZXlcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGlzc3Vlczoga2V5UmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWVSZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2Yga2V5KSkge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCB2YWx1ZVJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2VsZW1lbnRcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIGlzc3VlczogdmFsdWVSZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlLnNldChrZXlSZXN1bHQudmFsdWUsIHZhbHVlUmVzdWx0LnZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kU2V0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTZXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcInNldFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpbnB1dCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpdGVtLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlU2V0UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBoYW5kbGVTZXRSZXN1bHQocmVzdWx0LCBwYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVTZXRSZXN1bHQocmVzdWx0LCBmaW5hbCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi5yZXN1bHQuaXNzdWVzKTtcbiAgICB9XG4gICAgZmluYWwudmFsdWUuYWRkKHJlc3VsdC52YWx1ZSk7XG59XG5leHBvcnQgY29uc3QgJFpvZEVudW0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEVudW1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB1dGlsLmdldEVudW1WYWx1ZXMoZGVmLmVudHJpZXMpO1xuICAgIGluc3QuX3pvZC52YWx1ZXMgPSBuZXcgU2V0KHZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeKCR7dmFsdWVzXG4gICAgICAgIC5maWx0ZXIoKGspID0+IHV0aWwucHJvcGVydHlLZXlUeXBlcy5oYXModHlwZW9mIGspKVxuICAgICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB1dGlsLmVzY2FwZVJlZ2V4KG8pIDogby50b1N0cmluZygpKSlcbiAgICAgICAgLmpvaW4oXCJ8XCIpfSkkYCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5zdC5fem9kLnZhbHVlcy5oYXMoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQoZGVmLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeKCR7ZGVmLnZhbHVlc1xuICAgICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB1dGlsLmVzY2FwZVJlZ2V4KG8pIDogbyA/IG8udG9TdHJpbmcoKSA6IFN0cmluZyhvKSkpXG4gICAgICAgIC5qb2luKFwifFwiKX0pJGApO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGluc3QuX3pvZC52YWx1ZXMuaGFzKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgIHZhbHVlczogZGVmLnZhbHVlcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRmlsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRmlsZSlcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImZpbGVcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFRyYW5zZm9ybSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVHJhbnNmb3JtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgX291dCA9IGRlZi50cmFuc2Zvcm0ocGF5bG9hZC52YWx1ZSwgcGF5bG9hZCk7XG4gICAgICAgIGlmIChfY3R4LmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBfb3V0IGluc3RhbmNlb2YgUHJvbWlzZSA/IF9vdXQgOiBQcm9taXNlLnJlc29sdmUoX291dCk7XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0LnRoZW4oKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX291dCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RBc3luY0Vycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IF9vdXQ7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5vcHRvdXQgPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyA/IG5ldyBTZXQoWy4uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsIHVuZGVmaW5lZF0pIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBkZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPyBuZXcgUmVnRXhwKGBeKCR7dXRpbC5jbGVhblJlZ2V4KHBhdHRlcm4uc291cmNlKX0pPyRgKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bGxhYmxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBkZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPyBuZXcgUmVnRXhwKGBeKCR7dXRpbC5jbGVhblJlZ2V4KHBhdHRlcm4uc291cmNlKX18bnVsbCkkYCkgOiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyA/IG5ldyBTZXQoWy4uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsIG51bGxdKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgLy8gaW5zdC5fem9kLnFpbiA9IFwidHJ1ZVwiO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiAkWm9kRGVmYXVsdCBhbHdheXMgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAgICAgICAgICAqIEl0IGRvZXNuJ3QgcGFzcyB0aGUgZGVmYXVsdCB2YWx1ZSBpbnRvIHRoZSB2YWxpZGF0b3IgKFwicHJlZmF1bHRcIikuIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIHBhc3MgdGhlIGRlZmF1bHQgdmFsdWUgdGhyb3VnaCB2YWxpZGF0aW9uLiBUaGUgdmFsaWRpdHkgb2YgdGhlIGRlZmF1bHQgaXMgZW5mb3JjZWQgYnkgVHlwZVNjcmlwdCBzdGF0aWNhbGx5LiBPdGhlcndpc2UsIGl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1c2VyIHRvIGVuc3VyZSB0aGUgZGVmYXVsdCBpcyB2YWxpZC4gSW4gdGhlIGNhc2Ugb2YgcGlwZXMgd2l0aCBkaXZlcmdlbnQgaW4vb3V0IHR5cGVzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGRlZmF1bHQgb24gdGhlIGBpbmAgc2NoZW1hIG9mIHlvdXIgWm9kUGlwZSB0byBzZXQgYSBcInByZWZhdWx0XCIgZm9yIHRoZSBwaXBlLiAgICovXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlRGVmYXVsdFJlc3VsdChyZXN1bHQsIGRlZikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVEZWZhdWx0UmVzdWx0KHJlc3VsdCwgZGVmKTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVEZWZhdWx0UmVzdWx0KHBheWxvYWQsIGRlZikge1xuICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RQcmVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTm9uT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE5vbk9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCB2ID0gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcztcbiAgICAgICAgcmV0dXJuIHYgPyBuZXcgU2V0KFsuLi52XS5maWx0ZXIoKHgpID0+IHggIT09IHVuZGVmaW5lZCkpIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHJlc3VsdCwgaW5zdCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVOb25PcHRpb25hbFJlc3VsdChyZXN1bHQsIGluc3QpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHBheWxvYWQsIGluc3QpIHtcbiAgICBpZiAoIXBheWxvYWQuaXNzdWVzLmxlbmd0aCAmJiBwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RTdWNjZXNzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTdWNjZXNzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDYXRjaCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2F0Y2hcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE5hTlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzTmFOKHBheWxvYWQudmFsdWUpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcIm5hblwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kUGlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbi5fem9kLnZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW4uX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLm91dC5fem9kLm9wdG91dCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmluLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQudGhlbigobGVmdCkgPT4gaGFuZGxlUGlwZVJlc3VsdChsZWZ0LCBkZWYsIGN0eCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIGRlZiwgY3R4KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIGRlZiwgY3R4KSB7XG4gICAgaWYgKHV0aWwuYWJvcnRlZChsZWZ0KSkge1xuICAgICAgICByZXR1cm4gbGVmdDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZi5vdXQuX3pvZC5ydW4oeyB2YWx1ZTogbGVmdC52YWx1ZSwgaXNzdWVzOiBsZWZ0Lmlzc3VlcyB9LCBjdHgpO1xufVxuZXhwb3J0IGNvbnN0ICRab2RSZWFkb25seSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUmVhZG9ubHlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdGluKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0b3V0KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbihoYW5kbGVSZWFkb25seVJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZVJlYWRvbmx5UmVzdWx0KHJlc3VsdCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlUmVhZG9ubHlSZXN1bHQocGF5bG9hZCkge1xuICAgIHBheWxvYWQudmFsdWUgPSBPYmplY3QuZnJlZXplKHBheWxvYWQudmFsdWUpO1xuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RUZW1wbGF0ZUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFRlbXBsYXRlTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHJlZ2V4UGFydHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgZGVmLnBhcnRzKSB7XG4gICAgICAgIGlmIChwYXJ0IGluc3RhbmNlb2YgJFpvZFR5cGUpIHtcbiAgICAgICAgICAgIGlmICghcGFydC5fem9kLnBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXNvdXJjZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5wYXJ0Ll96b2QudHJhaXRzXS5zaGlmdCgpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcGFydC5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgPyBwYXJ0Ll96b2QucGF0dGVybi5zb3VyY2UgOiBwYXJ0Ll96b2QucGF0dGVybjtcbiAgICAgICAgICAgIGlmICghc291cmNlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7cGFydC5fem9kLnRyYWl0c31gKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzb3VyY2UuZW5kc1dpdGgoXCIkXCIpID8gc291cmNlLmxlbmd0aCAtIDEgOiBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgcmVnZXhQYXJ0cy5wdXNoKHNvdXJjZS5zbGljZShzdGFydCwgZW5kKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFydCA9PT0gbnVsbCB8fCB1dGlsLnByaW1pdGl2ZVR5cGVzLmhhcyh0eXBlb2YgcGFydCkpIHtcbiAgICAgICAgICAgIHJlZ2V4UGFydHMucHVzaCh1dGlsLmVzY2FwZVJlZ2V4KGAke3BhcnR9YCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtwYXJ0fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXJ0cy5qb2luKFwiXCIpfSRgKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGluc3QuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghaW5zdC5fem9kLnBhdHRlcm4udGVzdChwYXlsb2FkLnZhbHVlKSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcInRlbXBsYXRlX2xpdGVyYWxcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBpbnN0Ll96b2QucGF0dGVybi5zb3VyY2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kUHJvbWlzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwYXlsb2FkLnZhbHVlKS50aGVuKChpbm5lcikgPT4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpbm5lciwgaXNzdWVzOiBbXSB9LCBjdHgpKTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZExhenkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZExhenlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcImlubmVyVHlwZVwiLCAoKSA9PiBkZWYuZ2V0dGVyKCkpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiBpbnN0Ll96b2QuaW5uZXJUeXBlLl96b2QucGF0dGVybik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwcm9wVmFsdWVzXCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGUuX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gaW5zdC5fem9kLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbm5lciA9IGluc3QuX3pvZC5pbm5lclR5cGU7XG4gICAgICAgIHJldHVybiBpbm5lci5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ3VzdG9tID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgXykgPT4ge1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgciA9IGRlZi5mbihpbnB1dCk7XG4gICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHIudGhlbigocikgPT4gaGFuZGxlUmVmaW5lUmVzdWx0KHIsIHBheWxvYWQsIGlucHV0LCBpbnN0KSk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlUmVmaW5lUmVzdWx0KHIsIHBheWxvYWQsIGlucHV0LCBpbnN0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVJlZmluZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGlucHV0LCBpbnN0KSB7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgX2lzcyA9IHtcbiAgICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsIC8vIGluY29ycG9yYXRlcyBwYXJhbXMuZXJyb3IgaW50byBpc3N1ZSByZXBvcnRpbmdcbiAgICAgICAgICAgIHBhdGg6IFsuLi4oaW5zdC5fem9kLmRlZi5wYXRoID8/IFtdKV0sIC8vIGluY29ycG9yYXRlcyBwYXJhbXMuZXJyb3IgaW50byBpc3N1ZSByZXBvcnRpbmdcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhaW5zdC5fem9kLmRlZi5hYm9ydCxcbiAgICAgICAgICAgIC8vIHBhcmFtczogaW5zdC5fem9kLmRlZi5wYXJhbXMsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChpbnN0Ll96b2QuZGVmLnBhcmFtcylcbiAgICAgICAgICAgIF9pc3MucGFyYW1zID0gaW5zdC5fem9kLmRlZi5wYXJhbXM7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzKSk7XG4gICAgfVxufVxuIiwgImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlZFR5cGUgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHQgPSB0eXBlb2YgZGF0YTtcbiAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOiB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gXCJOYU5cIiA6IFwibnVtYmVyXCI7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImFycmF5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGF0YSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgZGF0YS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwiY2hhcmFjdGVyc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZXNcIiwgdmVyYjogXCJ0byBoYXZlXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJpdGVtc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJpdGVtc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IE5vdW5zID0ge1xuICAgICAgICByZWdleDogXCJpbnB1dFwiLFxuICAgICAgICBlbWFpbDogXCJlbWFpbCBhZGRyZXNzXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIGRhdGV0aW1lXCIsXG4gICAgICAgIGRhdGU6IFwiSVNPIGRhdGVcIixcbiAgICAgICAgdGltZTogXCJJU08gdGltZVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08gZHVyYXRpb25cIixcbiAgICAgICAgaXB2NDogXCJJUHY0IGFkZHJlc3NcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IGFkZHJlc3NcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQgcmFuZ2VcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYgcmFuZ2VcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NC1lbmNvZGVkIHN0cmluZ1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gc3RyaW5nXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgbnVtYmVyXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJpbnB1dFwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aXNzdWUuZXhwZWN0ZWR9LCByZWNlaXZlZCAke3BhcnNlZFR5cGUoaXNzdWUuaW5wdXQpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBvcHRpb246IGV4cGVjdGVkIG9uZSBvZiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVG9vIGJpZzogZXhwZWN0ZWQgJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWx1ZVwifSB0byBoYXZlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudHNcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVG9vIGJpZzogZXhwZWN0ZWQgJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWx1ZVwifSB0byBiZSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtpc3N1ZS5vcmlnaW59IHRvIGhhdmUgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUb28gc21hbGw6IGV4cGVjdGVkICR7aXNzdWUub3JpZ2lufSB0byBiZSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgc3RyaW5nOiBtdXN0IGVuZCB3aXRoIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgJHtOb3Vuc1tfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFVucmVjb2duaXplZCBrZXkke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBrZXkgaW4gJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCB2YWx1ZSBpbiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgaW5wdXRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiIsICJleHBvcnQgY29uc3QgJG91dHB1dCA9IFN5bWJvbChcIlpvZE91dHB1dFwiKTtcbmV4cG9ydCBjb25zdCAkaW5wdXQgPSBTeW1ib2woXCJab2RJbnB1dFwiKTtcbmV4cG9ydCBjbGFzcyAkWm9kUmVnaXN0cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX2lkbWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBhZGQoc2NoZW1hLCAuLi5fbWV0YSkge1xuICAgICAgICBjb25zdCBtZXRhID0gX21ldGFbMF07XG4gICAgICAgIHRoaXMuX21hcC5zZXQoc2NoZW1hLCBtZXRhKTtcbiAgICAgICAgaWYgKG1ldGEgJiYgdHlwZW9mIG1ldGEgPT09IFwib2JqZWN0XCIgJiYgXCJpZFwiIGluIG1ldGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pZG1hcC5oYXMobWV0YS5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYElEICR7bWV0YS5pZH0gYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlZ2lzdHJ5YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pZG1hcC5zZXQobWV0YS5pZCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5faWRtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZW1vdmUoc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLl9tYXAuZ2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChtZXRhICYmIHR5cGVvZiBtZXRhID09PSBcIm9iamVjdFwiICYmIFwiaWRcIiBpbiBtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pZG1hcC5kZWxldGUobWV0YS5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWFwLmRlbGV0ZShzY2hlbWEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0KHNjaGVtYSkge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5fbWFwLmdldChzY2hlbWEpIGFzIGFueTtcbiAgICAgICAgLy8gaW5oZXJpdCBtZXRhZGF0YVxuICAgICAgICBjb25zdCBwID0gc2NoZW1hLl96b2QucGFyZW50O1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgY29uc3QgcG0gPSB7IC4uLih0aGlzLmdldChwKSA/PyB7fSkgfTtcbiAgICAgICAgICAgIGRlbGV0ZSBwbS5pZDsgLy8gZG8gbm90IGluaGVyaXQgaWRcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnBtLCAuLi50aGlzLl9tYXAuZ2V0KHNjaGVtYSkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmdldChzY2hlbWEpO1xuICAgIH1cbiAgICBoYXMoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAuaGFzKHNjaGVtYSk7XG4gICAgfVxufVxuLy8gcmVnaXN0cmllc1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiBuZXcgJFpvZFJlZ2lzdHJ5KCk7XG59XG5leHBvcnQgY29uc3QgZ2xvYmFsUmVnaXN0cnkgPSAvKkBfX1BVUkVfXyovIHJlZ2lzdHJ5KCk7XG4iLCAiaW1wb3J0ICogYXMgY2hlY2tzIGZyb20gXCIuL2NoZWNrcy5qc1wiO1xuaW1wb3J0ICogYXMgc2NoZW1hcyBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuL3V0aWwuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBfc3RyaW5nKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZFN0cmluZyhDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZW1haWwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZW1haWxcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2d1aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZ3VpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXVpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1dWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91dWlkdjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXVpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogXCJ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91dWlkdjYoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXVpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogXCJ2NlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91dWlkdjcoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXVpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogXCJ2N1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91cmwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9lbW9qaShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJlbW9qaVwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbmFub2lkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcIm5hbm9pZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY3VpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjdWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jdWlkMihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjdWlkMlwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdWxpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1bGlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF94aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwieGlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9rc3VpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJrc3VpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaXB2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJpcHY0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pcHY2KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImlwdjZcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NpZHJ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjaWRydjRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NpZHJ2NihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjaWRydjZcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Jhc2U2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJiYXNlNjRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Jhc2U2NHVybChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2UxNjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZTE2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfand0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImp3dFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBUaW1lUHJlY2lzaW9uID0ge1xuICAgIEFueTogbnVsbCxcbiAgICBNaW51dGU6IC0xLFxuICAgIFNlY29uZDogMCxcbiAgICBNaWxsaXNlY29uZDogMyxcbiAgICBNaWNyb3NlY29uZDogNixcbn07XG5leHBvcnQgZnVuY3Rpb24gX2lzb0RhdGVUaW1lKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImRhdGV0aW1lXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgb2Zmc2V0OiBmYWxzZSxcbiAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2lzb0RhdGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZGF0ZVwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2lzb1RpbWUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidGltZVwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIHByZWNpc2lvbjogbnVsbCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaXNvRHVyYXRpb24oQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZHVyYXRpb25cIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9udW1iZXIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkTnVtYmVyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbnQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcInNhZmVpbnRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZmxvYXQzMihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiZmxvYXQzMlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9mbG9hdDY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2s6IFwibnVtYmVyX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJmbG9hdDY0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ludDMyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2s6IFwibnVtYmVyX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJpbnQzMlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91aW50MzIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcInVpbnQzMlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9ib29sZWFuKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWRCb29sZWFuKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYmlnaW50KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZEJpZ2ludChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaW50NjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICBjaGVjazogXCJiaWdpbnRfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcImludDY0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VpbnQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIGNoZWNrOiBcImJpZ2ludF9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwidWludDY0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3N5bWJvbChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3ltYm9sXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VuZGVmaW5lZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5kZWZpbmVkXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX251bGwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bGxcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYW55KENsYXNzKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYW55XCIsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3Vua25vd24oQ2xhc3MpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ1bmtub3duXCIsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX25ldmVyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJuZXZlclwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF92b2lkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ2b2lkXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2RhdGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZERhdGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9uYW4oQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm5hblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9sdCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTGVzc1RoYW4oe1xuICAgICAgICBjaGVjazogXCJsZXNzX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2x0ZSh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTGVzc1RoYW4oe1xuICAgICAgICBjaGVjazogXCJsZXNzX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IFxuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5sdGUoKWAgaW5zdGVhZC4gKi9cbl9sdGUgYXMgX21heCwgfTtcbmV4cG9ydCBmdW5jdGlvbiBfZ3QodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0dyZWF0ZXJUaGFuKHtcbiAgICAgICAgY2hlY2s6IFwiZ3JlYXRlcl90aGFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9ndGUodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0dyZWF0ZXJUaGFuKHtcbiAgICAgICAgY2hlY2s6IFwiZ3JlYXRlcl90aGFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgeyBcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYHouZ3RlKClgIGluc3RlYWQuICovXG5fZ3RlIGFzIF9taW4sIH07XG5leHBvcnQgZnVuY3Rpb24gX3Bvc2l0aXZlKHBhcmFtcykge1xuICAgIHJldHVybiBfZ3QoMCwgcGFyYW1zKTtcbn1cbi8vIG5lZ2F0aXZlXG5leHBvcnQgZnVuY3Rpb24gX25lZ2F0aXZlKHBhcmFtcykge1xuICAgIHJldHVybiBfbHQoMCwgcGFyYW1zKTtcbn1cbi8vIG5vbnBvc2l0aXZlXG5leHBvcnQgZnVuY3Rpb24gX25vbnBvc2l0aXZlKHBhcmFtcykge1xuICAgIHJldHVybiBfbHRlKDAsIHBhcmFtcyk7XG59XG4vLyBub25uZWdhdGl2ZVxuZXhwb3J0IGZ1bmN0aW9uIF9ub25uZWdhdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2d0ZSgwLCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9tdWx0aXBsZU9mKHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNdWx0aXBsZU9mKHtcbiAgICAgICAgY2hlY2s6IFwibXVsdGlwbGVfb2ZcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX21heFNpemUobWF4aW11bSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWF4U2l6ZSh7XG4gICAgICAgIGNoZWNrOiBcIm1heF9zaXplXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1heGltdW0sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX21pblNpemUobWluaW11bSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWluU2l6ZSh7XG4gICAgICAgIGNoZWNrOiBcIm1pbl9zaXplXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1pbmltdW0sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3NpemUoc2l6ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrU2l6ZUVxdWFscyh7XG4gICAgICAgIGNoZWNrOiBcInNpemVfZXF1YWxzXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHNpemUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX21heExlbmd0aChtYXhpbXVtLCBwYXJhbXMpIHtcbiAgICBjb25zdCBjaCA9IG5ldyBjaGVja3MuJFpvZENoZWNrTWF4TGVuZ3RoKHtcbiAgICAgICAgY2hlY2s6IFwibWF4X2xlbmd0aFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBtYXhpbXVtLFxuICAgIH0pO1xuICAgIHJldHVybiBjaDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWluTGVuZ3RoKG1pbmltdW0sIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja01pbkxlbmd0aCh7XG4gICAgICAgIGNoZWNrOiBcIm1pbl9sZW5ndGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWluaW11bSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbGVuZ3RoKGxlbmd0aCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTGVuZ3RoRXF1YWxzKHtcbiAgICAgICAgY2hlY2s6IFwibGVuZ3RoX2VxdWFsc1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBsZW5ndGgsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3JlZ2V4KHBhdHRlcm4sIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1JlZ2V4KHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwicmVnZXhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgcGF0dGVybixcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbG93ZXJjYXNlKHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xvd2VyQ2FzZSh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcImxvd2VyY2FzZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91cHBlcmNhc2UocGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrVXBwZXJDYXNlKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwidXBwZXJjYXNlXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2luY2x1ZGVzKGluY2x1ZGVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tJbmNsdWRlcyh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcImluY2x1ZGVzXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIGluY2x1ZGVzLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zdGFydHNXaXRoKHByZWZpeCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrU3RhcnRzV2l0aCh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcInN0YXJ0c193aXRoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHByZWZpeCxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZW5kc1dpdGgoc3VmZml4LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tFbmRzV2l0aCh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcImVuZHNfd2l0aFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBzdWZmaXgsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3Byb3BlcnR5KHByb3BlcnR5LCBzY2hlbWEsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1Byb3BlcnR5KHtcbiAgICAgICAgY2hlY2s6IFwicHJvcGVydHlcIixcbiAgICAgICAgcHJvcGVydHksXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWltZSh0eXBlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWltZVR5cGUoe1xuICAgICAgICBjaGVjazogXCJtaW1lX3R5cGVcIixcbiAgICAgICAgbWltZTogdHlwZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX292ZXJ3cml0ZSh0eCkge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja092ZXJ3cml0ZSh7XG4gICAgICAgIGNoZWNrOiBcIm92ZXJ3cml0ZVwiLFxuICAgICAgICB0eCxcbiAgICB9KTtcbn1cbi8vIG5vcm1hbGl6ZVxuZXhwb3J0IGZ1bmN0aW9uIF9ub3JtYWxpemUoZm9ybSkge1xuICAgIHJldHVybiBfb3ZlcndyaXRlKChpbnB1dCkgPT4gaW5wdXQubm9ybWFsaXplKGZvcm0pKTtcbn1cbi8vIHRyaW1cbmV4cG9ydCBmdW5jdGlvbiBfdHJpbSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0LnRyaW0oKSk7XG59XG4vLyB0b0xvd2VyQ2FzZVxuZXhwb3J0IGZ1bmN0aW9uIF90b0xvd2VyQ2FzZSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0LnRvTG93ZXJDYXNlKCkpO1xufVxuLy8gdG9VcHBlckNhc2VcbmV4cG9ydCBmdW5jdGlvbiBfdG9VcHBlckNhc2UoKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC50b1VwcGVyQ2FzZSgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYXJyYXkoQ2xhc3MsIGVsZW1lbnQsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIC8vIGdldCBlbGVtZW50KCkge1xuICAgICAgICAvLyAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAvLyB9LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91bmlvbihDbGFzcywgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZGlzY3JpbWluYXRlZFVuaW9uKENsYXNzLCBkaXNjcmltaW5hdG9yLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkaXNjcmltaW5hdG9yLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbnRlcnNlY3Rpb24oQ2xhc3MsIGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiaW50ZXJzZWN0aW9uXCIsXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0LFxuICAgIH0pO1xufVxuLy8gZXhwb3J0IGZ1bmN0aW9uIF90dXBsZShcbi8vICAgQ2xhc3M6IHV0aWwuU2NoZW1hQ2xhc3M8c2NoZW1hcy4kWm9kVHVwbGU+LFxuLy8gICBpdGVtczogW10sXG4vLyAgIHBhcmFtcz86IHN0cmluZyB8ICRab2RUdXBsZVBhcmFtc1xuLy8gKTogc2NoZW1hcy4kWm9kVHVwbGU8W10sIG51bGw+O1xuZXhwb3J0IGZ1bmN0aW9uIF90dXBsZShDbGFzcywgaXRlbXMsIF9wYXJhbXNPclJlc3QsIF9wYXJhbXMpIHtcbiAgICBjb25zdCBoYXNSZXN0ID0gX3BhcmFtc09yUmVzdCBpbnN0YW5jZW9mIHNjaGVtYXMuJFpvZFR5cGU7XG4gICAgY29uc3QgcGFyYW1zID0gaGFzUmVzdCA/IF9wYXJhbXMgOiBfcGFyYW1zT3JSZXN0O1xuICAgIGNvbnN0IHJlc3QgPSBoYXNSZXN0ID8gX3BhcmFtc09yUmVzdCA6IG51bGw7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidHVwbGVcIixcbiAgICAgICAgaXRlbXMsXG4gICAgICAgIHJlc3QsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3JlY29yZChDbGFzcywga2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9tYXAoQ2xhc3MsIGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc2V0KENsYXNzLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2VudW0oQ2xhc3MsIHZhbHVlcywgcGFyYW1zKSB7XG4gICAgY29uc3QgZW50cmllcyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZXMubWFwKCh2KSA9PiBbdiwgdl0pKSA6IHZhbHVlcztcbiAgICAvLyBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgLy8gICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIC8vICAgICBlbnRyaWVzW3ZhbHVlXSA9IHZhbHVlO1xuICAgIC8vICAgfVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBPYmplY3QuYXNzaWduKGVudHJpZXMsIHZhbHVlcyk7XG4gICAgLy8gfVxuICAgIC8vIGNvbnN0IGVudHJpZXM6IHV0aWwuRW51bUxpa2UgPSB7fTtcbiAgICAvLyBmb3IgKGNvbnN0IHZhbCBvZiB2YWx1ZXMpIHtcbiAgICAvLyAgIGVudHJpZXNbdmFsXSA9IHZhbDtcbiAgICAvLyB9XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLyoqIEBkZXByZWNhdGVkIFRoaXMgQVBJIGhhcyBiZWVuIG1lcmdlZCBpbnRvIGB6LmVudW0oKWAuIFVzZSBgei5lbnVtKClgIGluc3RlYWQuXG4gKlxuICogYGBgdHNcbiAqIGVudW0gQ29sb3JzIHsgcmVkLCBncmVlbiwgYmx1ZSB9XG4gKiB6LmVudW0oQ29sb3JzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gX25hdGl2ZUVudW0oQ2xhc3MsIGVudHJpZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbGl0ZXJhbChDbGFzcywgdmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImxpdGVyYWxcIixcbiAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZmlsZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF90cmFuc2Zvcm0oQ2xhc3MsIGZuKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybTogZm4sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX29wdGlvbmFsKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX251bGxhYmxlKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudWxsYWJsZVwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2RlZmF1bHQoQ2xhc3MsIGlubmVyVHlwZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX25vbm9wdGlvbmFsKENsYXNzLCBpbm5lclR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc3VjY2VzcyhDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NhdGNoKENsYXNzLCBpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgICAgIGNhdGNoVmFsdWU6ICh0eXBlb2YgY2F0Y2hWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gY2F0Y2hWYWx1ZSA6ICgpID0+IGNhdGNoVmFsdWUpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9waXBlKENsYXNzLCBpbl8sIG91dCkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IGluXyxcbiAgICAgICAgb3V0LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9yZWFkb25seShDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwicmVhZG9ubHlcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF90ZW1wbGF0ZUxpdGVyYWwoQ2xhc3MsIHBhcnRzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgIHBhcnRzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9sYXp5KENsYXNzLCBnZXR0ZXIpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJsYXp5XCIsXG4gICAgICAgIGdldHRlcixcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcHJvbWlzZShDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwicHJvbWlzZVwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2N1c3RvbShDbGFzcywgZm4sIF9wYXJhbXMpIHtcbiAgICBjb25zdCBub3JtID0gdXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyk7XG4gICAgbm9ybS5hYm9ydCA/PyAobm9ybS5hYm9ydCA9IHRydWUpOyAvLyBkZWZhdWx0IHRvIGFib3J0OmZhbHNlXG4gICAgY29uc3Qgc2NoZW1hID0gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIGZuOiBmbixcbiAgICAgICAgLi4ubm9ybSxcbiAgICB9KTtcbiAgICByZXR1cm4gc2NoZW1hO1xufVxuLy8gZXhwb3J0IGZ1bmN0aW9uIF9yZWZpbmU8VD4oXG4vLyAgIENsYXNzOiB1dGlsLlNjaGVtYUNsYXNzPHNjaGVtYXMuJFpvZEN1c3RvbT4sXG4vLyAgIGZuOiAoYXJnOiBOb0luZmVyPFQ+KSA9PiB1dGlsLk1heWJlQXN5bmM8dW5rbm93bj4sXG4vLyAgIF9wYXJhbXM6IHN0cmluZyB8ICRab2RDdXN0b21QYXJhbXMgPSB7fVxuLy8gKTogY2hlY2tzLiRab2RDaGVjazxUPiB7XG4vLyAgIHJldHVybiBfY3VzdG9tKENsYXNzLCBmbiwgX3BhcmFtcyk7XG4vLyB9XG4vLyBzYW1lIGFzIF9jdXN0b20gYnV0IGRlZmF1bHRzIHRvIGFib3J0OmZhbHNlXG5leHBvcnQgZnVuY3Rpb24gX3JlZmluZShDbGFzcywgZm4sIF9wYXJhbXMpIHtcbiAgICBjb25zdCBzY2hlbWEgPSBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgICBjaGVjazogXCJjdXN0b21cIixcbiAgICAgICAgZm46IGZuLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKSxcbiAgICB9KTtcbiAgICByZXR1cm4gc2NoZW1hO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zdHJpbmdib29sKENsYXNzZXMsIF9wYXJhbXMpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB1dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKTtcbiAgICBsZXQgdHJ1dGh5QXJyYXkgPSBwYXJhbXMudHJ1dGh5ID8/IFtcInRydWVcIiwgXCIxXCIsIFwieWVzXCIsIFwib25cIiwgXCJ5XCIsIFwiZW5hYmxlZFwiXTtcbiAgICBsZXQgZmFsc3lBcnJheSA9IHBhcmFtcy5mYWxzeSA/PyBbXCJmYWxzZVwiLCBcIjBcIiwgXCJub1wiLCBcIm9mZlwiLCBcIm5cIiwgXCJkaXNhYmxlZFwiXTtcbiAgICBpZiAocGFyYW1zLmNhc2UgIT09IFwic2Vuc2l0aXZlXCIpIHtcbiAgICAgICAgdHJ1dGh5QXJyYXkgPSB0cnV0aHlBcnJheS5tYXAoKHYpID0+ICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHYudG9Mb3dlckNhc2UoKSA6IHYpKTtcbiAgICAgICAgZmFsc3lBcnJheSA9IGZhbHN5QXJyYXkubWFwKCh2KSA9PiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyB2LnRvTG93ZXJDYXNlKCkgOiB2KSk7XG4gICAgfVxuICAgIGNvbnN0IHRydXRoeVNldCA9IG5ldyBTZXQodHJ1dGh5QXJyYXkpO1xuICAgIGNvbnN0IGZhbHN5U2V0ID0gbmV3IFNldChmYWxzeUFycmF5KTtcbiAgICBjb25zdCBfUGlwZSA9IENsYXNzZXMuUGlwZSA/PyBzY2hlbWFzLiRab2RQaXBlO1xuICAgIGNvbnN0IF9Cb29sZWFuID0gQ2xhc3Nlcy5Cb29sZWFuID8/IHNjaGVtYXMuJFpvZEJvb2xlYW47XG4gICAgY29uc3QgX1N0cmluZyA9IENsYXNzZXMuU3RyaW5nID8/IHNjaGVtYXMuJFpvZFN0cmluZztcbiAgICBjb25zdCBfVHJhbnNmb3JtID0gQ2xhc3Nlcy5UcmFuc2Zvcm0gPz8gc2NoZW1hcy4kWm9kVHJhbnNmb3JtO1xuICAgIGNvbnN0IHR4ID0gbmV3IF9UcmFuc2Zvcm0oe1xuICAgICAgICB0eXBlOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICB0cmFuc2Zvcm06IChpbnB1dCwgcGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSBpbnB1dDtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY2FzZSAhPT0gXCJzZW5zaXRpdmVcIilcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHRydXRoeVNldC5oYXMoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGZhbHN5U2V0LmhhcyhkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic3RyaW5nYm9vbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsuLi50cnV0aHlTZXQsIC4uLmZhbHN5U2V0XSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGluc3Q6IHR4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHBhcmFtcy5lcnJvcixcbiAgICB9KTtcbiAgICAvLyBwYXJhbXMuZXJyb3I7XG4gICAgY29uc3QgaW5uZXJQaXBlID0gbmV3IF9QaXBlKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBuZXcgX1N0cmluZyh7IHR5cGU6IFwic3RyaW5nXCIsIGVycm9yOiBwYXJhbXMuZXJyb3IgfSksXG4gICAgICAgIG91dDogdHgsXG4gICAgICAgIGVycm9yOiBwYXJhbXMuZXJyb3IsXG4gICAgfSk7XG4gICAgY29uc3Qgb3V0ZXJQaXBlID0gbmV3IF9QaXBlKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbm5lclBpcGUsXG4gICAgICAgIG91dDogbmV3IF9Cb29sZWFuKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZXJyb3I6IHBhcmFtcy5lcnJvcixcbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBwYXJhbXMuZXJyb3IsXG4gICAgfSk7XG4gICAgcmV0dXJuIG91dGVyUGlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc3RyaW5nRm9ybWF0KENsYXNzLCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zID0gdXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyk7XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKSxcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQsXG4gICAgICAgIGZuOiB0eXBlb2YgZm5PclJlZ2V4ID09PSBcImZ1bmN0aW9uXCIgPyBmbk9yUmVnZXggOiAodmFsKSA9PiBmbk9yUmVnZXgudGVzdCh2YWwpLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfTtcbiAgICBpZiAoZm5PclJlZ2V4IGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIGRlZi5wYXR0ZXJuID0gZm5PclJlZ2V4O1xuICAgIH1cbiAgICBjb25zdCBpbnN0ID0gbmV3IENsYXNzKGRlZik7XG4gICAgcmV0dXJuIGluc3Q7XG59XG4iLCAiaW1wb3J0IHsgJFpvZFJlZ2lzdHJ5LCBnbG9iYWxSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJpZXMuanNcIjtcbmltcG9ydCB7IGdldEVudW1WYWx1ZXMgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY2xhc3MgSlNPTlNjaGVtYUdlbmVyYXRvciB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgICAgIHRoaXMubWV0YWRhdGFSZWdpc3RyeSA9IHBhcmFtcz8ubWV0YWRhdGEgPz8gZ2xvYmFsUmVnaXN0cnk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gcGFyYW1zPy50YXJnZXQgPz8gXCJkcmFmdC0yMDIwLTEyXCI7XG4gICAgICAgIHRoaXMudW5yZXByZXNlbnRhYmxlID0gcGFyYW1zPy51bnJlcHJlc2VudGFibGUgPz8gXCJ0aHJvd1wiO1xuICAgICAgICB0aGlzLm92ZXJyaWRlID0gcGFyYW1zPy5vdmVycmlkZSA/PyAoKCkgPT4geyB9KTtcbiAgICAgICAgdGhpcy5pbyA9IHBhcmFtcz8uaW8gPz8gXCJvdXRwdXRcIjtcbiAgICAgICAgdGhpcy5zZWVuID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBwcm9jZXNzKHNjaGVtYSwgX3BhcmFtcyA9IHsgcGF0aDogW10sIHNjaGVtYVBhdGg6IFtdIH0pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgICAgIGNvbnN0IGZvcm1hdE1hcCA9IHtcbiAgICAgICAgICAgIGd1aWQ6IFwidXVpZFwiLFxuICAgICAgICAgICAgdXJsOiBcInVyaVwiLFxuICAgICAgICAgICAgZGF0ZXRpbWU6IFwiZGF0ZS10aW1lXCIsXG4gICAgICAgICAgICBqc29uX3N0cmluZzogXCJqc29uLXN0cmluZ1wiLFxuICAgICAgICAgICAgcmVnZXg6IFwiXCIsIC8vIGRvIG5vdCBzZXRcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY2hlY2sgZm9yIHNjaGVtYSBpbiBzZWVuc1xuICAgICAgICBjb25zdCBzZWVuID0gdGhpcy5zZWVuLmdldChzY2hlbWEpO1xuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5jb3VudCsrO1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgY3ljbGVcbiAgICAgICAgICAgIGNvbnN0IGlzQ3ljbGUgPSBfcGFyYW1zLnNjaGVtYVBhdGguaW5jbHVkZXMoc2NoZW1hKTtcbiAgICAgICAgICAgIGlmIChpc0N5Y2xlKSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5jeWNsZSA9IF9wYXJhbXMucGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWVuLnNjaGVtYTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgc2NoZW1hOiB7fSwgY291bnQ6IDEsIGN5Y2xlOiB1bmRlZmluZWQsIHBhdGg6IF9wYXJhbXMucGF0aCB9O1xuICAgICAgICB0aGlzLnNlZW4uc2V0KHNjaGVtYSwgcmVzdWx0KTtcbiAgICAgICAgLy8gY3VzdG9tIG1ldGhvZCBvdmVycmlkZXMgZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICBjb25zdCBvdmVycmlkZVNjaGVtYSA9IHNjaGVtYS5fem9kLnRvSlNPTlNjaGVtYT8uKCk7XG4gICAgICAgIGlmIChvdmVycmlkZVNjaGVtYSkge1xuICAgICAgICAgICAgcmVzdWx0LnNjaGVtYSA9IG92ZXJyaWRlU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLl9wYXJhbXMsXG4gICAgICAgICAgICAgICAgc2NoZW1hUGF0aDogWy4uLl9wYXJhbXMuc2NoZW1hUGF0aCwgc2NoZW1hXSxcbiAgICAgICAgICAgICAgICBwYXRoOiBfcGFyYW1zLnBhdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gc2NoZW1hLl96b2QucGFyZW50O1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIHNjaGVtYSB3YXMgY2xvbmVkIGZyb20gYW5vdGhlciBzY2hlbWFcbiAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhwYXJlbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWVuLmdldChwYXJlbnQpLmlzUGFyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9qc29uID0gcmVzdWx0LnNjaGVtYTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgZm9ybWF0LCBwYXR0ZXJucywgY29udGVudEVuY29kaW5nIH0gPSBzY2hlbWEuX3pvZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5MZW5ndGggPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWF4TGVuZ3RoID0gbWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBwYXR0ZXJuIG92ZXJyaWRlcyBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmZvcm1hdCA9IGZvcm1hdE1hcFtmb3JtYXRdID8/IGZvcm1hdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5mb3JtYXQgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLmZvcm1hdDsgLy8gZW1wdHkgZm9ybWF0IGlzIG5vdCB2YWxpZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRFbmNvZGluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmNvbnRlbnRFbmNvZGluZyA9IGNvbnRlbnRFbmNvZGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJucyAmJiBwYXR0ZXJucy5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ZXMgPSBbLi4ucGF0dGVybnNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdleGVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wYXR0ZXJuID0gcmVnZXhlc1swXS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnZXhlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zY2hlbWEuYWxsT2YgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZWdleGVzLm1hcCgocmVnZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTdcIiA/IHsgdHlwZTogXCJzdHJpbmdcIiB9IDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHJlZ2V4LnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgZm9ybWF0LCBtdWx0aXBsZU9mLCBleGNsdXNpdmVNYXhpbXVtLCBleGNsdXNpdmVNaW5pbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gXCJzdHJpbmdcIiAmJiBmb3JtYXQuaW5jbHVkZXMoXCJpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJpbnRlZ2VyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJudW1iZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWluaW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmV4Y2x1c2l2ZU1pbmltdW0gPSBleGNsdXNpdmVNaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV4Y2x1c2l2ZU1pbmltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2l2ZU1pbmltdW0gPj0gbWluaW11bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLm1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLmV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleGNsdXNpdmVNYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZXhjbHVzaXZlTWF4aW11bSA9IGV4Y2x1c2l2ZU1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1heGltdW0gPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWF4aW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhjbHVzaXZlTWF4aW11bSA8PSBtYXhpbXVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ubWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24uZXhjbHVzaXZlTWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG11bHRpcGxlT2YgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tdWx0aXBsZU9mID0gbXVsdGlwbGVPZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYm9vbGVhblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJpZ2ludFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJpZ0ludCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3ltYm9sXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3ltYm9scyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVsbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi50eXBlID0gXCJudWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYW55XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmtub3duXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmRlZmluZWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInZvaWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJuZXZlclwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5ub3QgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5JdGVtcyA9IG1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXhJdGVtcyA9IG1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcImFycmF5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLml0ZW1zID0gdGhpcy5wcm9jZXNzKGRlZi5lbGVtZW50LCB7IC4uLnBhcmFtcywgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcIml0ZW1zXCJdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wcm9wZXJ0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFwZSA9IGRlZi5zaGFwZTsgLy8gcGFyYW1zLnNoYXBlQ2FjaGUuZ2V0KHNjaGVtYSkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnByb3BlcnRpZXNba2V5XSA9IHRoaXMucHJvY2VzcyhzaGFwZVtrZXldLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnRpZXNcIiwga2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVkIGtleXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHNoYXBlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBuZXcgU2V0KGRlZi5vcHRpb25hbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBuZXcgU2V0KFsuLi5hbGxLZXlzXS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBkZWYuc2hhcGVba2V5XS5fem9kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlvID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYub3B0aW4gPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Lm9wdG91dCA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZEtleXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnJlcXVpcmVkID0gQXJyYXkuZnJvbShyZXF1aXJlZEtleXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F0Y2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYuY2F0Y2hhbGw/Ll96b2QuZGVmLnR5cGUgPT09IFwibmV2ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFkZWYuY2F0Y2hhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWd1bGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW8gPT09IFwib3V0cHV0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlZi5jYXRjaGFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSB0aGlzLnByb2Nlc3MoZGVmLmNhdGNoYWxsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVuaW9uXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYW55T2YgPSBkZWYub3B0aW9ucy5tYXAoKHgsIGkpID0+IHRoaXMucHJvY2Vzcyh4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhbnlPZlwiLCBpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRlcnNlY3Rpb25cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoaXMucHJvY2VzcyhkZWYubGVmdCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWxsT2ZcIiwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSB0aGlzLnByb2Nlc3MoZGVmLnJpZ2h0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhbGxPZlwiLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNTaW1wbGVJbnRlcnNlY3Rpb24gPSAodmFsKSA9PiBcImFsbE9mXCIgaW4gdmFsICYmIE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsT2YgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzU2ltcGxlSW50ZXJzZWN0aW9uKGEpID8gYS5hbGxPZiA6IFthXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzU2ltcGxlSW50ZXJzZWN0aW9uKGIpID8gYi5hbGxPZiA6IFtiXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hbGxPZiA9IGFsbE9mO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInR1cGxlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYXJyYXlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeEl0ZW1zID0gZGVmLml0ZW1zLm1hcCgoeCwgaSkgPT4gdGhpcy5wcm9jZXNzKHgsIHsgLi4ucGFyYW1zLCBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwicHJlZml4SXRlbXNcIiwgaV0gfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucHJlZml4SXRlbXMgPSBwcmVmaXhJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSBwcmVmaXhJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3QgPSB0aGlzLnByb2Nlc3MoZGVmLnJlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiaXRlbXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLml0ZW1zID0gcmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbEl0ZW1zID0gcmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbmFsSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSB0aGlzLnByb2Nlc3MoZGVmLnJlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiaXRlbXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSB9ID0gc2NoZW1hLl96b2QuYmFnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWluSXRlbXMgPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWF4SXRlbXMgPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY29yZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wcm9wZXJ0eU5hbWVzID0gdGhpcy5wcm9jZXNzKGRlZi5rZXlUeXBlLCB7IC4uLnBhcmFtcywgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnR5TmFtZXNcIl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gdGhpcy5wcm9jZXNzKGRlZi52YWx1ZVR5cGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWFwXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWFwIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZXRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVudW1cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZ2V0RW51bVZhbHVlcyhkZWYuZW50cmllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgZW51bXMgY2FuIGhhdmUgYm90aCBzdHJpbmcgYW5kIG51bWJlciB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmVudW0gPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGl0ZXJhbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiBkZWYudmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgdG8gdmFsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJpZ0ludCBsaXRlcmFscyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goTnVtYmVyKHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nIChhbiB1bmRlZmluZWQgbGl0ZXJhbCB3YXMgc3RyaXBwZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWxzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHZhbHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gdmFsID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2YgdmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uY29uc3QgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHYgPT09IG51bGwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmVudW0gPSB2YWxzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZpbGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogXCJiaW5hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50RW5jb2Rpbmc6IFwiYmluYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtLCBtaW1lIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluaW11bSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWluTGVuZ3RoID0gbWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXhpbXVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tYXhMZW5ndGggPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWltZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5jb250ZW50TWVkaWFUeXBlID0gbWltZVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYW55T2YgPSBtaW1lLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbUZpbGUgPSB7IC4uLmZpbGUsIGNvbnRlbnRNZWRpYVR5cGU6IG0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtRmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRyYW5zZm9ybVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bGxhYmxlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5hbnlPZiA9IFtpbm5lciwgeyB0eXBlOiBcIm51bGxcIiB9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJub25vcHRpb25hbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJib29sZWFuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2pzb24uZGVmYXVsdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInByZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLl9wcmVmYXVsdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNhdGNoXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBjb25kaXRpb25hbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2F0Y2hWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hWYWx1ZSA9IGRlZi5jYXRjaFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBjYXRjaCB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5kZWZhdWx0ID0gY2F0Y2hWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJuYW5cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRlbXBsYXRlX2xpdGVyYWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IHNjaGVtYS5fem9kLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhdHRlcm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnBhdHRlcm4gPSBwYXR0ZXJuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJwaXBlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyVHlwZSA9IHRoaXMuaW8gPT09IFwiaW5wdXRcIiA/IChkZWYuaW4uX3pvZC5kZWYudHlwZSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGRlZi5vdXQgOiBkZWYuaW4pIDogZGVmLm91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzcyhpbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlYWRvbmx5XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5yZWFkT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzdGhyb3VnaCB0eXBlc1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicHJvbWlzZVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm9wdGlvbmFsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGF6eVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclR5cGUgPSBzY2hlbWEuX3pvZC5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjdXN0b21cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLm1ldGFkYXRhUmVnaXN0cnkuZ2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChtZXRhKVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQuc2NoZW1hLCBtZXRhKTtcbiAgICAgICAgaWYgKHRoaXMuaW8gPT09IFwiaW5wdXRcIiAmJiBpc1RyYW5zZm9ybWluZyhzY2hlbWEpKSB7XG4gICAgICAgICAgICAvLyBleGFtcGxlcy9kZWZhdWx0cyBvbmx5IGFwcGx5IHRvIG91dHB1dCB0eXBlIG9mIHBpcGVcbiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQuc2NoZW1hLmV4YW1wbGVzO1xuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC5zY2hlbWEuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgcHJlZmF1bHQgYXMgZGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJpbnB1dFwiICYmIHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0KVxuICAgICAgICAgICAgKF9hID0gcmVzdWx0LnNjaGVtYSkuZGVmYXVsdCA/PyAoX2EuZGVmYXVsdCA9IHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0KTtcbiAgICAgICAgZGVsZXRlIHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0O1xuICAgICAgICAvLyBwdWxsaW5nIGZyZXNoIGZyb20gdGhpcy5zZWVuIGluIGNhc2UgaXQgd2FzIG92ZXJ3cml0dGVuXG4gICAgICAgIGNvbnN0IF9yZXN1bHQgPSB0aGlzLnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBfcmVzdWx0LnNjaGVtYTtcbiAgICB9XG4gICAgZW1pdChzY2hlbWEsIF9wYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY3ljbGVzOiBfcGFyYW1zPy5jeWNsZXMgPz8gXCJyZWZcIixcbiAgICAgICAgICAgIHJldXNlZDogX3BhcmFtcz8ucmV1c2VkID8/IFwiaW5saW5lXCIsXG4gICAgICAgICAgICAvLyB1bnJlcHJlc2VudGFibGU6IF9wYXJhbXM/LnVucmVwcmVzZW50YWJsZSA/PyBcInRocm93XCIsXG4gICAgICAgICAgICAvLyB1cmk6IF9wYXJhbXM/LnVyaSA/PyAoKGlkKSA9PiBgJHtpZH1gKSxcbiAgICAgICAgICAgIGV4dGVybmFsOiBfcGFyYW1zPy5leHRlcm5hbCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBzZWVuIG1hcDtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICAgICAgaWYgKCFyb290KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC5cIik7XG4gICAgICAgIC8vIGluaXRpYWxpemUgcmVzdWx0IHdpdGggcm9vdCBzY2hlbWEgZmllbGRzXG4gICAgICAgIC8vIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBzZWVuLmNhY2hlZCk7XG4gICAgICAgIC8vIHJldHVybnMgYSByZWYgdG8gdGhlIHNjaGVtYVxuICAgICAgICAvLyBkZWZJZCB3aWxsIGJlIGVtcHR5IGlmIHRoZSByZWYgcG9pbnRzIHRvIGFuIGV4dGVybmFsIHNjaGVtYSAob3IgIylcbiAgICAgICAgY29uc3QgbWFrZVVSSSA9IChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgLy8gY29tcGFyaW5nIHRoZSBzZWVuIG9iamVjdHMgYmVjYXVzZSBzb21ldGltZXNcbiAgICAgICAgICAgIC8vIG11bHRpcGxlIHNjaGVtYXMgbWFwIHRvIHRoZSBzYW1lIHNlZW4gb2JqZWN0LlxuICAgICAgICAgICAgLy8gZS5nLiBsYXp5XG4gICAgICAgICAgICAvLyBleHRlcm5hbCBpcyBjb25maWd1cmVkXG4gICAgICAgICAgICBjb25zdCBkZWZzU2VnbWVudCA9IHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIiA/IFwiJGRlZnNcIiA6IFwiZGVmaW5pdGlvbnNcIjtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuZXh0ZXJuYWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRlcm5hbElkID0gcGFyYW1zLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkOyAvLyA/PyBcIl9fc2hhcmVkXCI7Ly8gYF9fc2NoZW1hJHt0aGlzLmNvdW50ZXIrK31gO1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHNjaGVtYSBpcyBpbiB0aGUgZXh0ZXJuYWwgcmVnaXN0cnlcbiAgICAgICAgICAgICAgICBjb25zdCB1cmlHZW5lcmF0b3IgPSBwYXJhbXMuZXh0ZXJuYWwudXJpID8/ICgoaWQpID0+IGlkKTtcbiAgICAgICAgICAgICAgICBpZiAoZXh0ZXJuYWxJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IHVyaUdlbmVyYXRvcihleHRlcm5hbElkKSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGFkZCB0byBfX3NoYXJlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZW50cnlbMV0uZGVmSWQgPz8gZW50cnlbMV0uc2NoZW1hLmlkID8/IGBzY2hlbWEke3RoaXMuY291bnRlcisrfWA7XG4gICAgICAgICAgICAgICAgZW50cnlbMV0uZGVmSWQgPSBpZDsgLy8gc2V0IGRlZklkIHNvIGl0IHdpbGwgYmUgcmV1c2VkIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiB7IGRlZklkOiBpZCwgcmVmOiBgJHt1cmlHZW5lcmF0b3IoXCJfX3NoYXJlZFwiKX0jLyR7ZGVmc1NlZ21lbnR9LyR7aWR9YCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVudHJ5WzFdID09PSByb290KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiBcIiNcIiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gc2VsZi1jb250YWluZWQgc2NoZW1hXG4gICAgICAgICAgICBjb25zdCB1cmlQcmVmaXggPSBgI2A7XG4gICAgICAgICAgICBjb25zdCBkZWZVcmlQcmVmaXggPSBgJHt1cmlQcmVmaXh9LyR7ZGVmc1NlZ21lbnR9L2A7XG4gICAgICAgICAgICBjb25zdCBkZWZJZCA9IGVudHJ5WzFdLnNjaGVtYS5pZCA/PyBgX19zY2hlbWEke3RoaXMuY291bnRlcisrfWA7XG4gICAgICAgICAgICByZXR1cm4geyBkZWZJZCwgcmVmOiBkZWZVcmlQcmVmaXggKyBkZWZJZCB9O1xuICAgICAgICB9O1xuICAgICAgICAvLyBzdG9yZWQgY2FjaGVkIHZlcnNpb24gaW4gYGRlZmAgcHJvcGVydHlcbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBwcm9wZXJ0aWVzLCBzZXQgJHJlZlxuICAgICAgICBjb25zdCBleHRyYWN0VG9EZWYgPSAoZW50cnkpID0+IHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzY2hlbWEgaXMgYWxyZWFkeSBhIHJlZmVyZW5jZSwgZG8gbm90IGV4dHJhY3QgaXRcbiAgICAgICAgICAgIGlmIChlbnRyeVsxXS5zY2hlbWEuJHJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVmLCBkZWZJZCB9ID0gbWFrZVVSSShlbnRyeSk7XG4gICAgICAgICAgICBzZWVuLmRlZiA9IHsgLi4uc2Vlbi5zY2hlbWEgfTtcbiAgICAgICAgICAgIC8vIGRlZklkIHdvbid0IGJlIHNldCBpZiB0aGUgc2NoZW1hIGlzIGEgcmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNjaGVtYVxuICAgICAgICAgICAgaWYgKGRlZklkKVxuICAgICAgICAgICAgICAgIHNlZW4uZGVmSWQgPSBkZWZJZDtcbiAgICAgICAgICAgIC8vIHdpcGUgYXdheSBhbGwgcHJvcGVydGllcyBleGNlcHQgJHJlZlxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gc2Vlbi5zY2hlbWE7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc2NoZW1hW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2hlbWEuJHJlZiA9IHJlZjtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gdGhyb3cgb24gY3ljbGVzXG4gICAgICAgIC8vIGJyZWFrIGN5Y2xlc1xuICAgICAgICBpZiAocGFyYW1zLmN5Y2xlcyA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4uY3ljbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3ljbGUgZGV0ZWN0ZWQ6IFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAjLyR7c2Vlbi5jeWNsZT8uam9pbihcIi9cIil9Lzxyb290PmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcblxcblNldCB0aGUgYGN5Y2xlc2AgcGFyYW1ldGVyIHRvIGBcInJlZlwiYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBleHRyYWN0IHNjaGVtYXMgaW50byAkZGVmc1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIC8vIGNvbnZlcnQgcm9vdCBzY2hlbWEgdG8gIyAkcmVmXG4gICAgICAgICAgICBpZiAoc2NoZW1hID09PSBlbnRyeVswXSkge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7IC8vIHRoaXMgaGFzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSByb290IHNjaGVtYVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXh0cmFjdCBzY2hlbWFzIHRoYXQgYXJlIGluIHRoZSBleHRlcm5hbCByZWdpc3RyeVxuICAgICAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dCA9IHBhcmFtcy5leHRlcm5hbC5yZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hICE9PSBlbnRyeVswXSAmJiBleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXh0cmFjdCBzY2hlbWFzIHdpdGggYGlkYCBtZXRhXG4gICAgICAgICAgICBjb25zdCBpZCA9IHRoaXMubWV0YWRhdGFSZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBicmVhayBjeWNsZXNcbiAgICAgICAgICAgIGlmIChzZWVuLmN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgLy8gYW55XG4gICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGV4dHJhY3QgcmV1c2VkIHNjaGVtYXNcbiAgICAgICAgICAgIGlmIChzZWVuLmNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmV1c2VkID09PSBcInJlZlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50OlxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmxhdHRlbiBfcmVmc1xuICAgICAgICBjb25zdCBmbGF0dGVuUmVmID0gKHpvZFNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gdGhpcy5zZWVuLmdldCh6b2RTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gc2Vlbi5kZWYgPz8gc2Vlbi5zY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBfY2FjaGVkID0geyAuLi5zY2hlbWEgfTtcbiAgICAgICAgICAgIC8vIGFscmVhZHkgc2VlblxuICAgICAgICAgICAgaWYgKHNlZW4ucmVmID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZmxhdHRlbiByZWYgaWYgZGVmaW5lZFxuICAgICAgICAgICAgY29uc3QgcmVmID0gc2Vlbi5yZWY7XG4gICAgICAgICAgICBzZWVuLnJlZiA9IG51bGw7IC8vIHByZXZlbnQgcmVjdXJzaW9uXG4gICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgZmxhdHRlblJlZihyZWYsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgLy8gbWVyZ2UgcmVmZXJlbmNlZCBzY2hlbWEgaW50byBjdXJyZW50XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmU2NoZW1hID0gdGhpcy5zZWVuLmdldChyZWYpLnNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAocmVmU2NoZW1hLiRyZWYgJiYgcGFyYW1zLnRhcmdldCA9PT0gXCJkcmFmdC03XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmFsbE9mID0gc2NoZW1hLmFsbE9mID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuYWxsT2YucHVzaChyZWZTY2hlbWEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzY2hlbWEsIHJlZlNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2NoZW1hLCBfY2FjaGVkKTsgLy8gcHJldmVudCBvdmVyd3JpdGluZyBhbnkgZmllbGRzIGluIHRoZSBvcmlnaW5hbCBzY2hlbWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBleGVjdXRlIG92ZXJyaWRlc1xuICAgICAgICAgICAgaWYgKCFzZWVuLmlzUGFyZW50KVxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGUoe1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWE6IHpvZFNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAganNvblNjaGVtYTogc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBzZWVuLnBhdGggPz8gW10sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgWy4uLnRoaXMuc2Vlbi5lbnRyaWVzKCldLnJldmVyc2UoKSkge1xuICAgICAgICAgICAgZmxhdHRlblJlZihlbnRyeVswXSwgeyB0YXJnZXQ6IHRoaXMudGFyZ2V0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBpZiAodGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICByZXN1bHQuJHNjaGVtYSA9IFwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRhcmdldCA9PT0gXCJkcmFmdC03XCIpIHtcbiAgICAgICAgICAgIHJlc3VsdC4kc2NoZW1hID0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCB0YXJnZXQ6ICR7dGhpcy50YXJnZXR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbD8udXJpKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtcy5leHRlcm5hbC5yZWdpc3RyeS5nZXQoc2NoZW1hKT8uaWQ7XG4gICAgICAgICAgICBpZiAoIWlkKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBpcyBtaXNzaW5nIGFuIGBpZGAgcHJvcGVydHlcIik7XG4gICAgICAgICAgICByZXN1bHQuJGlkID0gcGFyYW1zLmV4dGVybmFsLnVyaShpZCk7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHJvb3QuZGVmKTtcbiAgICAgICAgLy8gYnVpbGQgZGVmcyBvYmplY3RcbiAgICAgICAgY29uc3QgZGVmcyA9IHBhcmFtcy5leHRlcm5hbD8uZGVmcyA/PyB7fTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLnNlZW4uZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgICAgICBpZiAoc2Vlbi5kZWYgJiYgc2Vlbi5kZWZJZCkge1xuICAgICAgICAgICAgICAgIGRlZnNbc2Vlbi5kZWZJZF0gPSBzZWVuLmRlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgZGVmaW5pdGlvbnMgaW4gcmVzdWx0XG4gICAgICAgIGlmIChwYXJhbXMuZXh0ZXJuYWwpIHtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkZWZzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuJGRlZnMgPSBkZWZzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRlZmluaXRpb25zID0gZGVmcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHRoaXMgXCJmaW5hbGl6ZXNcIiB0aGlzIHNjaGVtYSBhbmQgZW5zdXJlcyBhbGwgY3ljbGVzIGFyZSByZW1vdmVkXG4gICAgICAgICAgICAvLyBlYWNoIGNhbGwgdG8gLmVtaXQoKSBpcyBmdW5jdGlvbmFsbHkgaW5kZXBlbmRlbnRcbiAgICAgICAgICAgIC8vIHRob3VnaCB0aGUgc2VlbiBtYXAgaXMgc2hhcmVkXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2Vycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgY29udmVydGluZyBzY2hlbWEgdG8gSlNPTi5cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdG9KU09OU2NoZW1hKGlucHV0LCBfcGFyYW1zKSB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgJFpvZFJlZ2lzdHJ5KSB7XG4gICAgICAgIGNvbnN0IGdlbiA9IG5ldyBKU09OU2NoZW1hR2VuZXJhdG9yKF9wYXJhbXMpO1xuICAgICAgICBjb25zdCBkZWZzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgaW5wdXQuX2lkbWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgW18sIHNjaGVtYV0gPSBlbnRyeTtcbiAgICAgICAgICAgIGdlbi5wcm9jZXNzKHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NoZW1hcyA9IHt9O1xuICAgICAgICBjb25zdCBleHRlcm5hbCA9IHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5OiBpbnB1dCxcbiAgICAgICAgICAgIHVyaTogX3BhcmFtcz8udXJpLFxuICAgICAgICAgICAgZGVmcyxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBpbnB1dC5faWRtYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBzY2hlbWFdID0gZW50cnk7XG4gICAgICAgICAgICBzY2hlbWFzW2tleV0gPSBnZW4uZW1pdChzY2hlbWEsIHtcbiAgICAgICAgICAgICAgICAuLi5fcGFyYW1zLFxuICAgICAgICAgICAgICAgIGV4dGVybmFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRlZnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZnNTZWdtZW50ID0gZ2VuLnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIgPyBcIiRkZWZzXCIgOiBcImRlZmluaXRpb25zXCI7XG4gICAgICAgICAgICBzY2hlbWFzLl9fc2hhcmVkID0ge1xuICAgICAgICAgICAgICAgIFtkZWZzU2VnbWVudF06IGRlZnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHNjaGVtYXMgfTtcbiAgICB9XG4gICAgY29uc3QgZ2VuID0gbmV3IEpTT05TY2hlbWFHZW5lcmF0b3IoX3BhcmFtcyk7XG4gICAgZ2VuLnByb2Nlc3MoaW5wdXQpO1xuICAgIHJldHVybiBnZW4uZW1pdChpbnB1dCwgX3BhcmFtcyk7XG59XG5mdW5jdGlvbiBpc1RyYW5zZm9ybWluZyhfc2NoZW1hLCBfY3R4KSB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/PyB7IHNlZW46IG5ldyBTZXQoKSB9O1xuICAgIGlmIChjdHguc2Vlbi5oYXMoX3NjaGVtYSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjdHguc2Vlbi5hZGQoX3NjaGVtYSk7XG4gICAgY29uc3Qgc2NoZW1hID0gX3NjaGVtYTtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgc3dpdGNoIChkZWYudHlwZSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgY2FzZSBcImFueVwiOlxuICAgICAgICBjYXNlIFwidW5rbm93blwiOlxuICAgICAgICBjYXNlIFwibmV2ZXJcIjpcbiAgICAgICAgY2FzZSBcInZvaWRcIjpcbiAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgY2FzZSBcImVudW1cIjpcbiAgICAgICAgY2FzZSBcIm5hblwiOlxuICAgICAgICBjYXNlIFwiZmlsZVwiOlxuICAgICAgICBjYXNlIFwidGVtcGxhdGVfbGl0ZXJhbFwiOlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5lbGVtZW50LCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGVmLnNoYXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtaW5nKGRlZi5zaGFwZVtrZXldLCBjdHgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidW5pb25cIjoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcob3B0aW9uLCBjdHgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiaW50ZXJzZWN0aW9uXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYubGVmdCwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYucmlnaHQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInR1cGxlXCI6IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkZWYuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcoaXRlbSwgY3R4KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGVmLnJlc3QgJiYgaXNUcmFuc2Zvcm1pbmcoZGVmLnJlc3QsIGN0eCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJlY29yZFwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmtleVR5cGUsIGN0eCkgfHwgaXNUcmFuc2Zvcm1pbmcoZGVmLnZhbHVlVHlwZSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWFwXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYua2V5VHlwZSwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYudmFsdWVUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZXRcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi52YWx1ZVR5cGUsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW5uZXIgdHlwZXNcbiAgICAgICAgY2FzZSBcInByb21pc2VcIjpcbiAgICAgICAgY2FzZSBcIm9wdGlvbmFsXCI6XG4gICAgICAgIGNhc2UgXCJub25vcHRpb25hbFwiOlxuICAgICAgICBjYXNlIFwibnVsbGFibGVcIjpcbiAgICAgICAgY2FzZSBcInJlYWRvbmx5XCI6XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmlubmVyVHlwZSwgY3R4KTtcbiAgICAgICAgY2FzZSBcImxhenlcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuZ2V0dGVyKCksIGN0eCk7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW5uZXJUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJwcmVmYXVsdFwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmlubmVyVHlwZSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY3VzdG9tXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidHJhbnNmb3JtXCI6IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJwaXBlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW4sIGN0eCkgfHwgaXNUcmFuc2Zvcm1pbmcoZGVmLm91dCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOiB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhdGNoXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGVmO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIHR5cGU6ICR7ZGVmLnR5cGV9YCk7XG59XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBwYXJzZSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlUeXBlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlUeXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBpZiAoIWluc3QuX3pvZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5pbml0aWFsaXplZCBzY2hlbWEgaW4gWm9kTWluaVR5cGUuXCIpO1xuICAgIGNvcmUuJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZGVmID0gZGVmO1xuICAgIGluc3QucGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZShpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlIH0pO1xuICAgIGluc3Quc2FmZVBhcnNlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5wYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2UucGFyc2VBc3luYyhpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlQXN5bmMgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2VBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVQYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5jaGVjayA9ICguLi5jaGVja3MpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc3QuY2xvbmUoe1xuICAgICAgICAgICAgLi4uZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4uKGRlZi5jaGVja3MgPz8gW10pLFxuICAgICAgICAgICAgICAgIC4uLmNoZWNrcy5tYXAoKGNoKSA9PiB0eXBlb2YgY2ggPT09IFwiZnVuY3Rpb25cIiA/IHsgX3pvZDogeyBjaGVjazogY2gsIGRlZjogeyBjaGVjazogXCJjdXN0b21cIiB9LCBvbmF0dGFjaDogW10gfSB9IDogY2gpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgICAvLyB7IHBhcmVudDogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfTtcbiAgICBpbnN0LmNsb25lID0gKF9kZWYsIHBhcmFtcykgPT4gY29yZS5jbG9uZShpbnN0LCBfZGVmLCBwYXJhbXMpO1xuICAgIGluc3QuYnJhbmQgPSAoKSA9PiBpbnN0O1xuICAgIGluc3QucmVnaXN0ZXIgPSAoKHJlZywgbWV0YSkgPT4ge1xuICAgICAgICByZWcuYWRkKGluc3QsIG1ldGEpO1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9KTtcbn0pO1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlTdHJpbmcgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVN0cmluZ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3N0cmluZyhab2RNaW5pU3RyaW5nLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlFbWFpbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRW1haWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEVtYWlsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lbWFpbChab2RNaW5pRW1haWwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUdVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUdVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEdVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZ3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZ3VpZChab2RNaW5pR1VJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVVVJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVVVJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVVVJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkKFpvZE1pbmlVVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY0KFpvZE1pbmlVVUlELCBwYXJhbXMpO1xufVxuLy8gWm9kTWluaVVVSUR2NlxuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY2KFpvZE1pbmlVVUlELCBwYXJhbXMpO1xufVxuLy8gWm9kTWluaVVVSUR2N1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY3KFpvZE1pbmlVVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVUkwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVVJMLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVybChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXJsKFpvZE1pbmlVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUVtb2ppID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlFbW9qaVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRW1vamkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZW1vamkocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Vtb2ppKFpvZE1pbmlFbW9qaSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTmFub0lEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5hbm9JRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuYW5vaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX25hbm9pZChab2RNaW5pTmFub0lELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGN1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1aWQoWm9kTWluaUNVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUNVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDVUlEMlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ1VJRDIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZDIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1aWQyKFpvZE1pbmlDVUlEMiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVUxJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVUxJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91bGlkKFpvZE1pbmlVTElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlYSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVhJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kWElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHhpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5feGlkKFpvZE1pbmlYSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlLU1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kS1NVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24ga3N1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2tzdWlkKFpvZE1pbmlLU1VJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pSVB2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVB2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpcHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pcHY0KFpvZE1pbmlJUHY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlJUHY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlJUHY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJUHY2LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlwdjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lwdjYoWm9kTWluaUlQdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUNJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ0lEUnY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDSURSdjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY2lkcnY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jaWRydjQoWm9kTWluaUNJRFJ2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ0lEUnY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDSURSdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2Ni5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjaWRydjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NpZHJ2Nihab2RNaW5pQ0lEUnY2LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlCYXNlNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmFzZTY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmFzZTY0KFpvZE1pbmlCYXNlNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUJhc2U2NFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQmFzZTY0VVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCYXNlNjRVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0dXJsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9iYXNlNjR1cmwoWm9kTWluaUJhc2U2NFVSTCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRTE2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRTE2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRTE2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlMTY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lMTY0KFpvZE1pbmlFMTY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlKV1QgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUpXVFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSldULmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGp3dChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fand0KFpvZE1pbmlKV1QsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUN1c3RvbVN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ3VzdG9tU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDdXN0b21TdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRm9ybWF0KGZvcm1hdCwgZm5PclJlZ2V4LCBfcGFyYW1zID0ge30pIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nRm9ybWF0KFpvZE1pbmlDdXN0b21TdHJpbmdGb3JtYXQsIGZvcm1hdCwgZm5PclJlZ2V4LCBfcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTnVtYmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOdW1iZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9udW1iZXIoWm9kTWluaU51bWJlciwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTnVtYmVyRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOdW1iZXJGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bWJlckZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaU51bWJlci5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGludFxuZXhwb3J0IGZ1bmN0aW9uIGludChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faW50KFpvZE1pbmlOdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyBmbG9hdDMyXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQzMihab2RNaW5pTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuLy8gZmxvYXQ2NFxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Zsb2F0NjQoWm9kTWluaU51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIGludDMyXG5leHBvcnQgZnVuY3Rpb24gaW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDMyKFpvZE1pbmlOdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyB1aW50MzJcbmV4cG9ydCBmdW5jdGlvbiB1aW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQzMihab2RNaW5pTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlCb29sZWFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlCb29sZWFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCb29sZWFuLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9ib29sZWFuKFpvZE1pbmlCb29sZWFuLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlCaWdJbnQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUJpZ0ludFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmlnSW50LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2JpZ2ludChab2RNaW5pQmlnSW50LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlCaWdJbnRGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUJpZ0ludEZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmlnSW50Rm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pQmlnSW50LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8gaW50NjRcbmV4cG9ydCBmdW5jdGlvbiBpbnQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faW50NjQoWm9kTWluaUJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIHVpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWludDY0KFpvZE1pbmlCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVN5bWJvbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pU3ltYm9sXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTeW1ib2wuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN5bWJvbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3ltYm9sKFpvZE1pbmlTeW1ib2wsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVuZGVmaW5lZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVW5kZWZpbmVkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmRlZmluZWQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX3VuZGVmaW5lZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdW5kZWZpbmVkKFpvZE1pbmlVbmRlZmluZWQsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB9O1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlOdWxsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOdWxsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdWxsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF9udWxsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9udWxsKFpvZE1pbmlOdWxsLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX251bGwgYXMgbnVsbCB9O1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlBbnkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUFueVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQW55LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhbnkoKSB7XG4gICAgcmV0dXJuIGNvcmUuX2FueShab2RNaW5pQW55KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVW5rbm93biA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5rbm93bi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdW5rbm93bigpIHtcbiAgICByZXR1cm4gY29yZS5fdW5rbm93bihab2RNaW5pVW5rbm93bik7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU5ldmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOZXZlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTmV2ZXIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5ldmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uZXZlcihab2RNaW5pTmV2ZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVZvaWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVZvaWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFZvaWQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX3ZvaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3ZvaWQoWm9kTWluaVZvaWQsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfdm9pZCBhcyB2b2lkIH07XG5leHBvcnQgY29uc3QgWm9kTWluaURhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaURhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERhdGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2RhdGUoWm9kTWluaURhdGUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUFycmF5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlBcnJheVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQXJyYXkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5KGVsZW1lbnQsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUFycmF5KHtcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gLmtleW9mXG5leHBvcnQgZnVuY3Rpb24ga2V5b2Yoc2NoZW1hKSB7XG4gICAgY29uc3Qgc2hhcGUgPSBzY2hlbWEuX3pvZC5kZWYuc2hhcGU7XG4gICAgcmV0dXJuIGxpdGVyYWwoT2JqZWN0LmtleXMoc2hhcGUpKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9iamVjdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0LCBcInNoYXBlXCIsICgpID0+IGRlZi5zaGFwZSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIGNvbnN0IGRlZiA9IHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pT2JqZWN0KGRlZik7XG59XG4vLyBzdHJpY3RPYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU9iamVjdCh7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIC8vIHNoYXBlOiBzaGFwZSBhcyBjb3JlLiRab2RMb29zZVNoYXBlLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICB1dGlsLmFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCB7IC4uLnNoYXBlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNhdGNoYWxsOiBuZXZlcigpLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gbG9vc2VPYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBsb29zZU9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgLy8gc2hhcGU6IHNoYXBlIGFzIGNvcmUuJFpvZExvb3NlU2hhcGUsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIHV0aWwuYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHsgLi4uc2hhcGUgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZ2V0IG9wdGlvbmFsKCkge1xuICAgICAgICAvLyAgIHJldHVybiB1dGlsLm9wdGlvbmFsS2V5cyhzaGFwZSk7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIGNhdGNoYWxsOiB1bmtub3duKCksXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBvYmplY3QgbWV0aG9kc1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChzY2hlbWEsIHNoYXBlKSB7XG4gICAgcmV0dXJuIHV0aWwuZXh0ZW5kKHNjaGVtYSwgc2hhcGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKHNjaGVtYSwgc2hhcGUpIHtcbiAgICByZXR1cm4gdXRpbC5leHRlbmQoc2NoZW1hLCBzaGFwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGljayhzY2hlbWEsIG1hc2spIHtcbiAgICByZXR1cm4gdXRpbC5waWNrKHNjaGVtYSwgbWFzayk7XG59XG4vLyAub21pdFxuZXhwb3J0IGZ1bmN0aW9uIG9taXQoc2NoZW1hLCBtYXNrKSB7XG4gICAgcmV0dXJuIHV0aWwub21pdChzY2hlbWEsIG1hc2spO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWwoc2NoZW1hLCBtYXNrKSB7XG4gICAgcmV0dXJuIHV0aWwucGFydGlhbChab2RNaW5pT3B0aW9uYWwsIHNjaGVtYSwgbWFzayk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQoc2NoZW1hLCBtYXNrKSB7XG4gICAgcmV0dXJuIHV0aWwucmVxdWlyZWQoWm9kTWluaU5vbk9wdGlvbmFsLCBzY2hlbWEsIG1hc2spO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNhdGNoYWxsKGluc3QsIGNhdGNoYWxsKSB7XG4gICAgcmV0dXJuIGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogY2F0Y2hhbGwgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVbmlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5pb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uKG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVVuaW9uKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlEaXNjcmltaW5hdGVkVW5pb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaURpc2NyaW1pbmF0ZWRVbmlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRGlzY3JpbWluYXRlZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkaXNjcmltaW5hdGVkVW5pb24oZGlzY3JpbWluYXRvciwgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pRGlzY3JpbWluYXRlZFVuaW9uKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkaXNjcmltaW5hdG9yLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUludGVyc2VjdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSW50ZXJzZWN0aW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlJbnRlcnNlY3Rpb24oe1xuICAgICAgICB0eXBlOiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVR1cGxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlUdXBsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHVwbGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHR1cGxlKGl0ZW1zLCBfcGFyYW1zT3JSZXN0LCBfcGFyYW1zKSB7XG4gICAgY29uc3QgaGFzUmVzdCA9IF9wYXJhbXNPclJlc3QgaW5zdGFuY2VvZiBjb3JlLiRab2RUeXBlO1xuICAgIGNvbnN0IHBhcmFtcyA9IGhhc1Jlc3QgPyBfcGFyYW1zIDogX3BhcmFtc09yUmVzdDtcbiAgICBjb25zdCByZXN0ID0gaGFzUmVzdCA/IF9wYXJhbXNPclJlc3QgOiBudWxsO1xuICAgIHJldHVybiBuZXcgWm9kTWluaVR1cGxlKHtcbiAgICAgICAgdHlwZTogXCJ0dXBsZVwiLFxuICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIHJlc3QsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVJlY29yZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pUmVjb3JkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWNvcmQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWxSZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlSZWNvcmQoe1xuICAgICAgICB0eXBlOiBcInJlY29yZFwiLFxuICAgICAgICBrZXlUeXBlOiB1bmlvbihba2V5VHlwZSwgbmV2ZXIoKV0pLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTWFwID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlNYXBcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE1hcC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbWFwKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pTWFwKHtcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAga2V5VHlwZToga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVNldCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pU2V0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTZXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHNldCh2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVNldCh7XG4gICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlFbnVtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlFbnVtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFbnVtLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF9lbnVtKHZhbHVlcywgcGFyYW1zKSB7XG4gICAgY29uc3QgZW50cmllcyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZXMubWFwKCh2KSA9PiBbdiwgdl0pKSA6IHZhbHVlcztcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlFbnVtKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfZW51bSBhcyBlbnVtIH07XG4vKiogQGRlcHJlY2F0ZWQgVGhpcyBBUEkgaGFzIGJlZW4gbWVyZ2VkIGludG8gYHouZW51bSgpYC4gVXNlIGB6LmVudW0oKWAgaW5zdGVhZC5cbiAqXG4gKiBgYGB0c1xuICogZW51bSBDb2xvcnMgeyByZWQsIGdyZWVuLCBibHVlIH1cbiAqIHouZW51bShDb2xvcnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXRpdmVFbnVtKGVudHJpZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUVudW0oe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pTGl0ZXJhbCh7XG4gICAgICAgIHR5cGU6IFwibGl0ZXJhbFwiLFxuICAgICAgICB2YWx1ZXM6IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlGaWxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RGaWxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBmaWxlKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9maWxlKFpvZE1pbmlGaWxlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlUcmFuc2Zvcm0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVRyYW5zZm9ybVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHJhbnNmb3JtLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlUcmFuc2Zvcm0oe1xuICAgICAgICB0eXBlOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICB0cmFuc2Zvcm06IGZuLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlPcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbChpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlPcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU51bGxhYmxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOdWxsYWJsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVsbGFibGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU51bGxhYmxlKHtcbiAgICAgICAgdHlwZTogXCJudWxsYWJsZVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbi8vIG51bGxpc2hcbmV4cG9ydCBmdW5jdGlvbiBudWxsaXNoKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBvcHRpb25hbChudWxsYWJsZShpbm5lclR5cGUpKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRGVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRGVmYXVsdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRGVmYXVsdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gX2RlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlEZWZhdWx0KHtcbiAgICAgICAgdHlwZTogXCJkZWZhdWx0XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlQcmVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFByZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcmVmYXVsdChpbm5lclR5cGUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVByZWZhdWx0KHtcbiAgICAgICAgdHlwZTogXCJwcmVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTm9uT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU5vbk9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROb25PcHRpb25hbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbm9ub3B0aW9uYWwoaW5uZXJUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlOb25PcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVN1Y2Nlc3NcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN1Y2Nlc3MuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3MoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pU3VjY2Vzcyh7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ2F0Y2ggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUNhdGNoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDYXRjaC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfY2F0Y2goaW5uZXJUeXBlLCBjYXRjaFZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pQ2F0Y2goe1xuICAgICAgICB0eXBlOiBcImNhdGNoXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICBjYXRjaFZhbHVlOiAodHlwZW9mIGNhdGNoVmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGNhdGNoVmFsdWUgOiAoKSA9PiBjYXRjaFZhbHVlKSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IF9jYXRjaCBhcyBjYXRjaCB9O1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlOYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU5hTlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTmFOLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX25hbihab2RNaW5pTmFOLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlQaXBlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlQaXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQaXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwaXBlKGluXywgb3V0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUGlwZSh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogaW5fLFxuICAgICAgICBvdXQ6IG91dCxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pUmVhZG9ubHkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVJlYWRvbmx5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWFkb25seS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcmVhZG9ubHkoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUmVhZG9ubHkoe1xuICAgICAgICB0eXBlOiBcInJlYWRvbmx5XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlUZW1wbGF0ZUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVRlbXBsYXRlTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVGVtcGxhdGVMaXRlcmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZUxpdGVyYWwocGFydHMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVRlbXBsYXRlTGl0ZXJhbCh7XG4gICAgICAgIHR5cGU6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICBwYXJ0cyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTGF6eSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTGF6eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGF6eS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBleHBvcnQgZnVuY3Rpb24gbGF6eTxUIGV4dGVuZHMgb2JqZWN0PihnZXR0ZXI6ICgpID0+IFQpOiBUIHtcbi8vICAgcmV0dXJuIHV0aWwuY3JlYXRlVHJhbnNwYXJlbnRQcm94eTxUPihnZXR0ZXIpO1xuLy8gfVxuZnVuY3Rpb24gX2xhenkoZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pTGF6eSh7XG4gICAgICAgIHR5cGU6IFwibGF6eVwiLFxuICAgICAgICBnZXR0ZXI6IGdldHRlcixcbiAgICB9KTtcbn1cbmV4cG9ydCB7IF9sYXp5IGFzIGxhenkgfTtcbmV4cG9ydCBjb25zdCBab2RNaW5pUHJvbWlzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJvbWlzZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlQcm9taXNlKHtcbiAgICAgICAgdHlwZTogXCJwcm9taXNlXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDdXN0b20gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUN1c3RvbVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ3VzdG9tLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhmbiwgcGFyYW1zKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY29yZS4kWm9kQ2hlY2soe1xuICAgICAgICBjaGVjazogXCJjdXN0b21cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgICBjaC5fem9kLmNoZWNrID0gZm47XG4gICAgcmV0dXJuIGNoO1xufVxuLy8gWm9kQ3VzdG9tXG4vLyBjdXN0b20gc2NoZW1hXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKGZuLCBfcGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1c3RvbShab2RNaW5pQ3VzdG9tLCBmbiA/PyAoKCkgPT4gdHJ1ZSksIF9wYXJhbXMpO1xufVxuLy8gcmVmaW5lXG5leHBvcnQgZnVuY3Rpb24gcmVmaW5lKGZuLCBfcGFyYW1zID0ge30pIHtcbiAgICByZXR1cm4gY29yZS5fcmVmaW5lKFpvZE1pbmlDdXN0b20sIGZuLCBfcGFyYW1zKTtcbn1cbi8vIGluc3RhbmNlb2ZcbmNsYXNzIENsYXNzIHtcbiAgICBjb25zdHJ1Y3RvciguLi5fYXJncykgeyB9XG59XG5mdW5jdGlvbiBfaW5zdGFuY2VvZihjbHMsIHBhcmFtcyA9IHtcbiAgICBlcnJvcjogYElucHV0IG5vdCBpbnN0YW5jZSBvZiAke2Nscy5uYW1lfWAsXG59KSB7XG4gICAgY29uc3QgaW5zdCA9IGN1c3RvbSgoZGF0YSkgPT4gZGF0YSBpbnN0YW5jZW9mIGNscywgcGFyYW1zKTtcbiAgICBpbnN0Ll96b2QuYmFnLkNsYXNzID0gY2xzO1xuICAgIHJldHVybiBpbnN0O1xufVxuZXhwb3J0IHsgX2luc3RhbmNlb2YgYXMgaW5zdGFuY2VvZiB9O1xuLy8gc3RyaW5nYm9vbFxuZXhwb3J0IGNvbnN0IHN0cmluZ2Jvb2wgPSAoLi4uYXJncykgPT4gY29yZS5fc3RyaW5nYm9vbCh7XG4gICAgUGlwZTogWm9kTWluaVBpcGUsXG4gICAgQm9vbGVhbjogWm9kTWluaUJvb2xlYW4sXG4gICAgU3RyaW5nOiBab2RNaW5pU3RyaW5nLFxuICAgIFRyYW5zZm9ybTogWm9kTWluaVRyYW5zZm9ybSxcbn0sIC4uLmFyZ3MpO1xuZXhwb3J0IGZ1bmN0aW9uIGpzb24oKSB7XG4gICAgY29uc3QganNvblNjaGVtYSA9IF9sYXp5KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaW9uKFtzdHJpbmcoKSwgbnVtYmVyKCksIGJvb2xlYW4oKSwgX251bGwoKSwgYXJyYXkoanNvblNjaGVtYSksIHJlY29yZChzdHJpbmcoKSwganNvblNjaGVtYSldKTtcbiAgICB9KTtcbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn1cbiIsIG51bGwsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBzY2hlbWFzIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmV4cG9ydCBjb25zdCBab2RJU09EYXRlVGltZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJU09EYXRlVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPRGF0ZVRpbWUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHNjaGVtYXMuWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pc29EYXRlVGltZShab2RJU09EYXRlVGltZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RJU09EYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT0RhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElTT0RhdGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHNjaGVtYXMuWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb0RhdGUoWm9kSVNPRGF0ZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RJU09UaW1lID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT1RpbWVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElTT1RpbWUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHNjaGVtYXMuWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb1RpbWUoWm9kSVNPVGltZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RJU09EdXJhdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJU09EdXJhdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPRHVyYXRpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIHNjaGVtYXMuWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGR1cmF0aW9uKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pc29EdXJhdGlvbihab2RJU09EdXJhdGlvbiwgcGFyYW1zKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyAkWm9kRXJyb3IgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuY29uc3QgaW5pdGlhbGl6ZXIgPSAoaW5zdCwgaXNzdWVzKSA9PiB7XG4gICAgJFpvZEVycm9yLmluaXQoaW5zdCwgaXNzdWVzKTtcbiAgICBpbnN0Lm5hbWUgPSBcIlpvZEVycm9yXCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaW5zdCwge1xuICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgIHZhbHVlOiAobWFwcGVyKSA9PiBjb3JlLmZvcm1hdEVycm9yKGluc3QsIG1hcHBlciksXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmxhdHRlbjoge1xuICAgICAgICAgICAgdmFsdWU6IChtYXBwZXIpID0+IGNvcmUuZmxhdHRlbkVycm9yKGluc3QsIG1hcHBlciksXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWRkSXNzdWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiAoaXNzdWUpID0+IGluc3QuaXNzdWVzLnB1c2goaXNzdWUpLFxuICAgICAgICAgICAgLy8gZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGFkZElzc3Vlczoge1xuICAgICAgICAgICAgdmFsdWU6IChpc3N1ZXMpID0+IGluc3QuaXNzdWVzLnB1c2goLi4uaXNzdWVzKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpc0VtcHR5OiB7XG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc3QuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJpc0VtcHR5XCIsIHtcbiAgICAvLyAgIGdldCgpIHtcbiAgICAvLyAgICAgcmV0dXJuIGluc3QuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAvLyAgIH0sXG4gICAgLy8gfSk7XG59O1xuZXhwb3J0IGNvbnN0IFpvZEVycm9yID0gY29yZS4kY29uc3RydWN0b3IoXCJab2RFcnJvclwiLCBpbml0aWFsaXplcik7XG5leHBvcnQgY29uc3QgWm9kUmVhbEVycm9yID0gY29yZS4kY29uc3RydWN0b3IoXCJab2RFcnJvclwiLCBpbml0aWFsaXplciwge1xuICAgIFBhcmVudDogRXJyb3IsXG59KTtcbi8vIC8qKiBAZGVwcmVjYXRlZCBVc2UgYHouY29yZS4kWm9kRXJyb3JNYXBDdHhgIGluc3RlYWQuICovXG4vLyBleHBvcnQgdHlwZSBFcnJvck1hcEN0eCA9IGNvcmUuJFpvZEVycm9yTWFwQ3R4O1xuIiwgImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IFpvZFJlYWxFcnJvciB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3BhcnNlKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgcGFyc2VBc3luYyA9IC8qIEBfX1BVUkVfXyAqLyBjb3JlLl9wYXJzZUFzeW5jKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3NhZmVQYXJzZShab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IHNhZmVQYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3NhZmVQYXJzZUFzeW5jKFpvZFJlYWxFcnJvcik7XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBjaGVja3MgZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5pbXBvcnQgKiBhcyBpc28gZnJvbSBcIi4vaXNvLmpzXCI7XG5pbXBvcnQgKiBhcyBwYXJzZSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZFR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5kZWYgPSBkZWY7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiX2RlZlwiLCB7IHZhbHVlOiBkZWYgfSk7XG4gICAgLy8gYmFzZSBtZXRob2RzXG4gICAgaW5zdC5jaGVjayA9ICguLi5jaGVja3MpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc3QuY2xvbmUoe1xuICAgICAgICAgICAgLi4uZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4uKGRlZi5jaGVja3MgPz8gW10pLFxuICAgICAgICAgICAgICAgIC4uLmNoZWNrcy5tYXAoKGNoKSA9PiB0eXBlb2YgY2ggPT09IFwiZnVuY3Rpb25cIiA/IHsgX3pvZDogeyBjaGVjazogY2gsIGRlZjogeyBjaGVjazogXCJjdXN0b21cIiB9LCBvbmF0dGFjaDogW10gfSB9IDogY2gpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgICAvLyB7IHBhcmVudDogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfTtcbiAgICBpbnN0LmNsb25lID0gKGRlZiwgcGFyYW1zKSA9PiBjb3JlLmNsb25lKGluc3QsIGRlZiwgcGFyYW1zKTtcbiAgICBpbnN0LmJyYW5kID0gKCkgPT4gaW5zdDtcbiAgICBpbnN0LnJlZ2lzdGVyID0gKChyZWcsIG1ldGEpID0+IHtcbiAgICAgICAgcmVnLmFkZChpbnN0LCBtZXRhKTtcbiAgICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfSk7XG4gICAgLy8gcGFyc2luZ1xuICAgIGluc3QucGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZShpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlIH0pO1xuICAgIGluc3Quc2FmZVBhcnNlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5wYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2UucGFyc2VBc3luYyhpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlQXN5bmMgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2VBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVQYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5zcGEgPSBpbnN0LnNhZmVQYXJzZUFzeW5jO1xuICAgIC8vIHJlZmluZW1lbnRzXG4gICAgaW5zdC5yZWZpbmUgPSAoY2hlY2ssIHBhcmFtcykgPT4gaW5zdC5jaGVjayhyZWZpbmUoY2hlY2ssIHBhcmFtcykpO1xuICAgIGluc3Quc3VwZXJSZWZpbmUgPSAocmVmaW5lbWVudCkgPT4gaW5zdC5jaGVjayhzdXBlclJlZmluZShyZWZpbmVtZW50KSk7XG4gICAgaW5zdC5vdmVyd3JpdGUgPSAoZm4pID0+IGluc3QuY2hlY2soY2hlY2tzLm92ZXJ3cml0ZShmbikpO1xuICAgIC8vIHdyYXBwZXJzXG4gICAgaW5zdC5vcHRpb25hbCA9ICgpID0+IG9wdGlvbmFsKGluc3QpO1xuICAgIGluc3QubnVsbGFibGUgPSAoKSA9PiBudWxsYWJsZShpbnN0KTtcbiAgICBpbnN0Lm51bGxpc2ggPSAoKSA9PiBvcHRpb25hbChudWxsYWJsZShpbnN0KSk7XG4gICAgaW5zdC5ub25vcHRpb25hbCA9IChwYXJhbXMpID0+IG5vbm9wdGlvbmFsKGluc3QsIHBhcmFtcyk7XG4gICAgaW5zdC5hcnJheSA9ICgpID0+IGFycmF5KGluc3QpO1xuICAgIGluc3Qub3IgPSAoYXJnKSA9PiB1bmlvbihbaW5zdCwgYXJnXSk7XG4gICAgaW5zdC5hbmQgPSAoYXJnKSA9PiBpbnRlcnNlY3Rpb24oaW5zdCwgYXJnKTtcbiAgICBpbnN0LnRyYW5zZm9ybSA9ICh0eCkgPT4gcGlwZShpbnN0LCB0cmFuc2Zvcm0odHgpKTtcbiAgICBpbnN0LmRlZmF1bHQgPSAoZGVmKSA9PiBfZGVmYXVsdChpbnN0LCBkZWYpO1xuICAgIGluc3QucHJlZmF1bHQgPSAoZGVmKSA9PiBwcmVmYXVsdChpbnN0LCBkZWYpO1xuICAgIC8vIGluc3QuY29hbGVzY2UgPSAoZGVmLCBwYXJhbXMpID0+IGNvYWxlc2NlKGluc3QsIGRlZiwgcGFyYW1zKTtcbiAgICBpbnN0LmNhdGNoID0gKHBhcmFtcykgPT4gX2NhdGNoKGluc3QsIHBhcmFtcyk7XG4gICAgaW5zdC5waXBlID0gKHRhcmdldCkgPT4gcGlwZShpbnN0LCB0YXJnZXQpO1xuICAgIGluc3QucmVhZG9ubHkgPSAoKSA9PiByZWFkb25seShpbnN0KTtcbiAgICAvLyBtZXRhXG4gICAgaW5zdC5kZXNjcmliZSA9IChkZXNjcmlwdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBjbCA9IGluc3QuY2xvbmUoKTtcbiAgICAgICAgY29yZS5nbG9iYWxSZWdpc3RyeS5hZGQoY2wsIHsgZGVzY3JpcHRpb24gfSk7XG4gICAgICAgIHJldHVybiBjbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcImRlc2NyaXB0aW9uXCIsIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvcmUuZ2xvYmFsUmVnaXN0cnkuZ2V0KGluc3QpPy5kZXNjcmlwdGlvbjtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIGluc3QubWV0YSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvcmUuZ2xvYmFsUmVnaXN0cnkuZ2V0KGluc3QpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsID0gaW5zdC5jbG9uZSgpO1xuICAgICAgICBjb3JlLmdsb2JhbFJlZ2lzdHJ5LmFkZChjbCwgYXJnc1swXSk7XG4gICAgICAgIHJldHVybiBjbDtcbiAgICB9O1xuICAgIC8vIGhlbHBlcnNcbiAgICBpbnN0LmlzT3B0aW9uYWwgPSAoKSA9PiBpbnN0LnNhZmVQYXJzZSh1bmRlZmluZWQpLnN1Y2Nlc3M7XG4gICAgaW5zdC5pc051bGxhYmxlID0gKCkgPT4gaW5zdC5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcztcbiAgICByZXR1cm4gaW5zdDtcbn0pO1xuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9ab2RTdHJpbmcgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiX1pvZFN0cmluZ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgIGluc3QuZm9ybWF0ID0gYmFnLmZvcm1hdCA/PyBudWxsO1xuICAgIGluc3QubWluTGVuZ3RoID0gYmFnLm1pbmltdW0gPz8gbnVsbDtcbiAgICBpbnN0Lm1heExlbmd0aCA9IGJhZy5tYXhpbXVtID8/IG51bGw7XG4gICAgLy8gdmFsaWRhdGlvbnNcbiAgICBpbnN0LnJlZ2V4ID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLnJlZ2V4KC4uLmFyZ3MpKTtcbiAgICBpbnN0LmluY2x1ZGVzID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLmluY2x1ZGVzKC4uLmFyZ3MpKTtcbiAgICBpbnN0LnN0YXJ0c1dpdGggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3Muc3RhcnRzV2l0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5lbmRzV2l0aCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5lbmRzV2l0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5taW4gPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lm1heCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tYXhMZW5ndGgoLi4uYXJncykpO1xuICAgIGluc3QubGVuZ3RoID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLmxlbmd0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5ub25lbXB0eSA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgoMSwgLi4uYXJncykpO1xuICAgIGluc3QubG93ZXJjYXNlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubG93ZXJjYXNlKHBhcmFtcykpO1xuICAgIGluc3QudXBwZXJjYXNlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MudXBwZXJjYXNlKHBhcmFtcykpO1xuICAgIC8vIHRyYW5zZm9ybXNcbiAgICBpbnN0LnRyaW0gPSAoKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy50cmltKCkpO1xuICAgIGluc3Qubm9ybWFsaXplID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLm5vcm1hbGl6ZSguLi5hcmdzKSk7XG4gICAgaW5zdC50b0xvd2VyQ2FzZSA9ICgpID0+IGluc3QuY2hlY2soY2hlY2tzLnRvTG93ZXJDYXNlKCkpO1xuICAgIGluc3QudG9VcHBlckNhc2UgPSAoKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy50b1VwcGVyQ2FzZSgpKTtcbn0pO1xuZXhwb3J0IGNvbnN0IFpvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgX1pvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5lbWFpbCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcykpO1xuICAgIGluc3QudXJsID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmp3dCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fand0KFpvZEpXVCwgcGFyYW1zKSk7XG4gICAgaW5zdC5lbW9qaSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1vamkoWm9kRW1vamksIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWQoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC51dWlkdjQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWR2NChab2RVVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWR2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcykpO1xuICAgIGluc3QudXVpZHY3ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91dWlkdjcoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5uYW5vaWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX25hbm9pZChab2ROYW5vSUQsIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LmN1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2N1aWQoWm9kQ1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jdWlkMiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY3VpZDIoWm9kQ1VJRDIsIHBhcmFtcykpO1xuICAgIGluc3QudWxpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmJhc2U2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fYmFzZTY0KFpvZEJhc2U2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5iYXNlNjR1cmwgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcykpO1xuICAgIGluc3QueGlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmtzdWlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9rc3VpZChab2RLU1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5pcHY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9pcHY0KFpvZElQdjQsIHBhcmFtcykpO1xuICAgIGluc3QuaXB2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpKTtcbiAgICBpbnN0LmNpZHJ2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jaWRydjYgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcykpO1xuICAgIGluc3QuZTE2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZTE2NChab2RFMTY0LCBwYXJhbXMpKTtcbiAgICAvLyBpc29cbiAgICBpbnN0LmRhdGV0aW1lID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZXRpbWUocGFyYW1zKSk7XG4gICAgaW5zdC5kYXRlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZShwYXJhbXMpKTtcbiAgICBpbnN0LnRpbWUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby50aW1lKHBhcmFtcykpO1xuICAgIGluc3QuZHVyYXRpb24gPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby5kdXJhdGlvbihwYXJhbXMpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nKFpvZFN0cmluZywgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIF9ab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgWm9kRW1haWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRW1haWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kRW1haWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kR1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEdVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBndWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9ndWlkKFpvZEdVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVVVJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZFVVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkKFpvZFVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjQoWm9kVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZFVVSUR2NlxuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcyk7XG59XG4vLyBab2RVVUlEdjdcbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2Nyhab2RVVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kVVJMLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdXJsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEVtb2ppID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEVtb2ppLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZW1vamkocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Vtb2ppKFpvZEVtb2ppLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kTmFub0lELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW5vaWQoWm9kTmFub0lELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZChab2RDVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENVSUQyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZENVSUQyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZDIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1aWQyKFpvZENVSUQyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RVTElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdWxpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFhJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kWElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24geGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEtTVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEtTVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24ga3N1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2tzdWlkKFpvZEtTVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2NChab2RJUHY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY2LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ0lEUnY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDSURSdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjaWRydjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NChab2RCYXNlNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0VVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjRVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjR1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kRTE2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFMTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEUxNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlMTY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lMTY0KFpvZEUxNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEpXVFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RKV1QuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBqd3QocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2p3dChab2RKV1QsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ3VzdG9tU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDdXN0b21TdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVtYmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVtYmVyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Lmd0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdCh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuaW50ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpbnQocGFyYW1zKSk7XG4gICAgaW5zdC5zYWZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpbnQocGFyYW1zKSk7XG4gICAgaW5zdC5wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KDAsIHBhcmFtcykpO1xuICAgIGluc3Qubm9ubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5uZWdhdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KDAsIHBhcmFtcykpO1xuICAgIGluc3Qubm9ucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5tdWx0aXBsZU9mID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm11bHRpcGxlT2YodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3Quc3RlcCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tdWx0aXBsZU9mKHZhbHVlLCBwYXJhbXMpKTtcbiAgICAvLyBpbnN0LmZpbml0ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5maW5pdGUocGFyYW1zKSk7XG4gICAgaW5zdC5maW5pdGUgPSAoKSA9PiBpbnN0O1xuICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgaW5zdC5taW5WYWx1ZSA9XG4gICAgICAgIE1hdGgubWF4KGJhZy5taW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSwgYmFnLmV4Y2x1c2l2ZU1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSA/PyBudWxsO1xuICAgIGluc3QubWF4VmFsdWUgPVxuICAgICAgICBNYXRoLm1pbihiYWcubWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIGJhZy5leGNsdXNpdmVNYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgPz8gbnVsbDtcbiAgICBpbnN0LmlzSW50ID0gKGJhZy5mb3JtYXQgPz8gXCJcIikuaW5jbHVkZXMoXCJpbnRcIikgfHwgTnVtYmVyLmlzU2FmZUludGVnZXIoYmFnLm11bHRpcGxlT2YgPz8gMC41KTtcbiAgICBpbnN0LmlzRmluaXRlID0gdHJ1ZTtcbiAgICBpbnN0LmZvcm1hdCA9IGJhZy5mb3JtYXQgPz8gbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVtYmVyKFpvZE51bWJlciwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2ROdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVtYmVyRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdW1iZXJGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludChab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQzMihab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQ2NChab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDMyKFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1aW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQzMihab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQm9vbGVhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RCb29sZWFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCb29sZWFuLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jvb2xlYW4oWm9kQm9vbGVhbiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCaWdJbnQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmlnSW50XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZ3RlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdCh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndChCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3QubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdChCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3Qubm9ucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUoQmlnSW50KDApLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbm5lZ2F0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tdWx0aXBsZU9mID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm11bHRpcGxlT2YodmFsdWUsIHBhcmFtcykpO1xuICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgaW5zdC5taW5WYWx1ZSA9IGJhZy5taW5pbXVtID8/IG51bGw7XG4gICAgaW5zdC5tYXhWYWx1ZSA9IGJhZy5tYXhpbXVtID8/IG51bGw7XG4gICAgaW5zdC5mb3JtYXQgPSBiYWcuZm9ybWF0ID8/IG51bGw7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2JpZ2ludChab2RCaWdJbnQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJpZ0ludEZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmlnSW50Rm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIGludDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQ2NChab2RCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyB1aW50NjRcbmV4cG9ydCBmdW5jdGlvbiB1aW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQ2NChab2RCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kU3ltYm9sID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFN5bWJvbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3ltYm9sLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN5bWJvbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3ltYm9sKFpvZFN5bWJvbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RVbmRlZmluZWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5kZWZpbmVkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmRlZmluZWQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfdW5kZWZpbmVkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91bmRlZmluZWQoWm9kVW5kZWZpbmVkLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX3VuZGVmaW5lZCBhcyB1bmRlZmluZWQgfTtcbmV4cG9ydCBjb25zdCBab2ROdWxsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE51bGxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfbnVsbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVsbChab2ROdWxsLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX251bGwgYXMgbnVsbCB9O1xuZXhwb3J0IGNvbnN0IFpvZEFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RBbnlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEFueS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhbnkoKSB7XG4gICAgcmV0dXJuIGNvcmUuX2FueShab2RBbnkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVua25vd24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5rbm93bi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmtub3duKCkge1xuICAgIHJldHVybiBjb3JlLl91bmtub3duKFpvZFVua25vd24pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5ldmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE5ldmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROZXZlci5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuZXZlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmV2ZXIoWm9kTmV2ZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVm9pZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RWb2lkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RWb2lkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX3ZvaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3ZvaWQoWm9kVm9pZCwgcGFyYW1zKTtcbn1cbmV4cG9ydCB7IF92b2lkIGFzIHZvaWQgfTtcbmV4cG9ydCBjb25zdCBab2REYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZERhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERhdGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBjb25zdCBjID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0Lm1pbkRhdGUgPSBjLm1pbmltdW0gPyBuZXcgRGF0ZShjLm1pbmltdW0pIDogbnVsbDtcbiAgICBpbnN0Lm1heERhdGUgPSBjLm1heGltdW0gPyBuZXcgRGF0ZShjLm1heGltdW0pIDogbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2RhdGUoWm9kRGF0ZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RBcnJheSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RBcnJheVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQXJyYXkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZWxlbWVudCA9IGRlZi5lbGVtZW50O1xuICAgIGluc3QubWluID0gKG1pbkxlbmd0aCwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgobWluTGVuZ3RoLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbmVtcHR5ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKDEsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKG1heExlbmd0aCwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tYXhMZW5ndGgobWF4TGVuZ3RoLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmxlbmd0aCA9IChsZW4sIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubGVuZ3RoKGxlbiwgcGFyYW1zKSk7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0LmVsZW1lbnQ7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhcnJheShlbGVtZW50LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYXJyYXkoWm9kQXJyYXksIGVsZW1lbnQsIHBhcmFtcyk7XG59XG4vLyAua2V5b2ZcbmV4cG9ydCBmdW5jdGlvbiBrZXlvZihzY2hlbWEpIHtcbiAgICBjb25zdCBzaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICByZXR1cm4gbGl0ZXJhbChPYmplY3Qua2V5cyhzaGFwZSkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE9iamVjdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9iamVjdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QsIFwic2hhcGVcIiwgKCkgPT4gZGVmLnNoYXBlKTtcbiAgICBpbnN0LmtleW9mID0gKCkgPT4gX2VudW0oT2JqZWN0LmtleXMoaW5zdC5fem9kLmRlZi5zaGFwZSkpO1xuICAgIGluc3QuY2F0Y2hhbGwgPSAoY2F0Y2hhbGwpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogY2F0Y2hhbGwgfSk7XG4gICAgaW5zdC5wYXNzdGhyb3VnaCA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogdW5rbm93bigpIH0pO1xuICAgIC8vIGluc3Qubm9uc3RyaWN0ID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiBhcGkudW5rbm93bigpIH0pO1xuICAgIGluc3QubG9vc2UgPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IHVua25vd24oKSB9KTtcbiAgICBpbnN0LnN0cmljdCA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogbmV2ZXIoKSB9KTtcbiAgICBpbnN0LnN0cmlwID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiB1bmRlZmluZWQgfSk7XG4gICAgaW5zdC5leHRlbmQgPSAoaW5jb21pbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwuZXh0ZW5kKGluc3QsIGluY29taW5nKTtcbiAgICB9O1xuICAgIGluc3QubWVyZ2UgPSAob3RoZXIpID0+IHV0aWwubWVyZ2UoaW5zdCwgb3RoZXIpO1xuICAgIGluc3QucGljayA9IChtYXNrKSA9PiB1dGlsLnBpY2soaW5zdCwgbWFzayk7XG4gICAgaW5zdC5vbWl0ID0gKG1hc2spID0+IHV0aWwub21pdChpbnN0LCBtYXNrKTtcbiAgICBpbnN0LnBhcnRpYWwgPSAoLi4uYXJncykgPT4gdXRpbC5wYXJ0aWFsKFpvZE9wdGlvbmFsLCBpbnN0LCBhcmdzWzBdKTtcbiAgICBpbnN0LnJlcXVpcmVkID0gKC4uLmFyZ3MpID0+IHV0aWwucmVxdWlyZWQoWm9kTm9uT3B0aW9uYWwsIGluc3QsIGFyZ3NbMF0pO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIHV0aWwuYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHsgLi4uc2hhcGUgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KGRlZik7XG59XG4vLyBzdHJpY3RPYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogbmV2ZXIoKSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIGxvb3NlT2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gbG9vc2VPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogdW5rbm93bigpLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5vcHRpb25zID0gZGVmLm9wdGlvbnM7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmlvbihvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFVuaW9uKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REaXNjcmltaW5hdGVkVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2REaXNjcmltaW5hdGVkVW5pb24uaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGlzY3JpbWluYXRlZFVuaW9uKGRpc2NyaW1pbmF0b3IsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIC8vIGNvbnN0IFtvcHRpb25zLCBwYXJhbXNdID0gYXJncztcbiAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSW50ZXJzZWN0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJbnRlcnNlY3Rpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RJbnRlcnNlY3Rpb24oe1xuICAgICAgICB0eXBlOiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kVHVwbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHVwbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFR1cGxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnJlc3QgPSAocmVzdCkgPT4gaW5zdC5jbG9uZSh7XG4gICAgICAgIC4uLmluc3QuX3pvZC5kZWYsXG4gICAgICAgIHJlc3Q6IHJlc3QsXG4gICAgfSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0dXBsZShpdGVtcywgX3BhcmFtc09yUmVzdCwgX3BhcmFtcykge1xuICAgIGNvbnN0IGhhc1Jlc3QgPSBfcGFyYW1zT3JSZXN0IGluc3RhbmNlb2YgY29yZS4kWm9kVHlwZTtcbiAgICBjb25zdCBwYXJhbXMgPSBoYXNSZXN0ID8gX3BhcmFtcyA6IF9wYXJhbXNPclJlc3Q7XG4gICAgY29uc3QgcmVzdCA9IGhhc1Jlc3QgPyBfcGFyYW1zT3JSZXN0IDogbnVsbDtcbiAgICByZXR1cm4gbmV3IFpvZFR1cGxlKHtcbiAgICAgICAgdHlwZTogXCJ0dXBsZVwiLFxuICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIHJlc3QsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFJlY29yZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUmVjb3JkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmtleVR5cGUgPSBkZWYua2V5VHlwZTtcbiAgICBpbnN0LnZhbHVlVHlwZSA9IGRlZi52YWx1ZVR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gdHlwZSBhbGtzamYgPSBjb3JlLm91dHB1dDxjb3JlLiRab2RSZWNvcmRLZXk+O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWxSZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGU6IHVuaW9uKFtrZXlUeXBlLCBuZXZlcigpXSksXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1hcCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNYXBcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE1hcC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5rZXlUeXBlID0gZGVmLmtleVR5cGU7XG4gICAgaW5zdC52YWx1ZVR5cGUgPSBkZWYudmFsdWVUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbWFwKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNYXAoe1xuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBrZXlUeXBlOiBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RTZXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU2V0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTZXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QubWluID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZSguLi5hcmdzKSk7XG4gICAgaW5zdC5ub25lbXB0eSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZSgxLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21heFNpemUoLi4uYXJncykpO1xuICAgIGluc3Quc2l6ZSA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3NpemUoLi4uYXJncykpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc2V0KHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RTZXQoe1xuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RFbnVtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVudW1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEVudW0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZW51bSA9IGRlZi5lbnRyaWVzO1xuICAgIGluc3Qub3B0aW9ucyA9IE9iamVjdC52YWx1ZXMoZGVmLmVudHJpZXMpO1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGRlZi5lbnRyaWVzKSk7XG4gICAgaW5zdC5leHRyYWN0ID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGlmIChrZXlzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdFbnRyaWVzW3ZhbHVlXSA9IGRlZi5lbnRyaWVzW3ZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSAke3ZhbHVlfSBub3QgZm91bmQgaW4gZW51bWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgICAgICAuLi5kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgICAgIGVudHJpZXM6IG5ld0VudHJpZXMsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgaW5zdC5leGNsdWRlID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSB7IC4uLmRlZi5lbnRyaWVzIH07XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBpZiAoa2V5cy5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0VudHJpZXNbdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5ICR7dmFsdWV9IG5vdCBmb3VuZCBpbiBlbnVtYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgICAgIC4uLmRlZixcbiAgICAgICAgICAgIGNoZWNrczogW10sXG4gICAgICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICAgICAgZW50cmllczogbmV3RW50cmllcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gX2VudW0odmFsdWVzLCBwYXJhbXMpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlcy5tYXAoKHYpID0+IFt2LCB2XSkpIDogdmFsdWVzO1xuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgX2VudW0gYXMgZW51bSB9O1xuLyoqIEBkZXByZWNhdGVkIFRoaXMgQVBJIGhhcyBiZWVuIG1lcmdlZCBpbnRvIGB6LmVudW0oKWAuIFVzZSBgei5lbnVtKClgIGluc3RlYWQuXG4gKlxuICogYGBgdHNcbiAqIGVudW0gQ29sb3JzIHsgcmVkLCBncmVlbiwgYmx1ZSB9XG4gKiB6LmVudW0oQ29sb3JzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF0aXZlRW51bShlbnRyaWVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZEVudW0oe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZExpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudmFsdWVzID0gbmV3IFNldChkZWYudmFsdWVzKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmIChkZWYudmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWYudmFsdWVzWzBdO1xuICAgICAgICB9LFxuICAgIH0pO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJsaXRlcmFsXCIsXG4gICAgICAgIHZhbHVlczogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RGaWxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Lm1pbiA9IChzaXplLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZShzaXplLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9IChzaXplLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWF4U2l6ZShzaXplLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1pbWUgPSAodHlwZXMsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9taW1lKEFycmF5LmlzQXJyYXkodHlwZXMpID8gdHlwZXMgOiBbdHlwZXNdLCBwYXJhbXMpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ZpbGUoWm9kRmlsZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RUcmFuc2Zvcm0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHJhbnNmb3JtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUcmFuc2Zvcm0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIHBheWxvYWQuYWRkSXNzdWUgPSAoaXNzdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoaXNzdWUsIHBheWxvYWQudmFsdWUsIGRlZikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIFpvZCAzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mYXRhbClcbiAgICAgICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvZGUgPz8gKF9pc3N1ZS5jb2RlID0gXCJjdXN0b21cIik7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmlucHV0ID8/IChfaXNzdWUuaW5wdXQgPSBwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5zdCA/PyAoX2lzc3VlLmluc3QgPSBpbnN0KTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPz8gKF9pc3N1ZS5jb250aW51ZSA9IHRydWUpO1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZGVmLnRyYW5zZm9ybShwYXlsb2FkLnZhbHVlLCBwYXlsb2FkKTtcbiAgICAgICAgaWYgKG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQudGhlbigob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBvdXRwdXQ7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICByZXR1cm4gbmV3IFpvZFRyYW5zZm9ybSh7XG4gICAgICAgIHR5cGU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybTogZm4sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGxhYmxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGUoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XG4gICAgICAgIHR5cGU6IFwibnVsbGFibGVcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG4vLyBudWxsaXNoXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlzaChpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gb3B0aW9uYWwobnVsbGFibGUoaW5uZXJUeXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kRGVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xuICAgIGluc3QucmVtb3ZlRGVmYXVsdCA9IGluc3QudW53cmFwO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gX2RlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZERlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcImRlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUHJlZmF1bHQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFByZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFByZWZhdWx0KHtcbiAgICAgICAgdHlwZTogXCJwcmVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2ROb25PcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROb25PcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTm9uT3B0aW9uYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBub25vcHRpb25hbChpbm5lclR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTm9uT3B0aW9uYWwoe1xuICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3VjY2Vzc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3VjY2Vzcy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3MoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RTdWNjZXNzKHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZENhdGNoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENhdGNoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDYXRjaC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbiAgICBpbnN0LnJlbW92ZUNhdGNoID0gaW5zdC51bndyYXA7XG59KTtcbmZ1bmN0aW9uIF9jYXRjaChpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZENhdGNoKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgY2F0Y2hWYWx1ZTogKHR5cGVvZiBjYXRjaFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBjYXRjaFZhbHVlIDogKCkgPT4gY2F0Y2hWYWx1ZSksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfY2F0Y2ggYXMgY2F0Y2ggfTtcbmV4cG9ydCBjb25zdCBab2ROYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTmFOXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROYU4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW4oWm9kTmFOLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFBpcGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUGlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5pbiA9IGRlZi5pbjtcbiAgICBpbnN0Lm91dCA9IGRlZi5vdXQ7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwaXBlKGluXywgb3V0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RQaXBlKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbl8sXG4gICAgICAgIG91dDogb3V0LFxuICAgICAgICAvLyAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFJlYWRvbmx5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFJlYWRvbmx5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWFkb25seS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWFkb25seShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlYWRvbmx5KHtcbiAgICAgICAgdHlwZTogXCJyZWFkb25seVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RUZW1wbGF0ZUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVGVtcGxhdGVMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUZW1wbGF0ZUxpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVMaXRlcmFsKHBhcnRzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFRlbXBsYXRlTGl0ZXJhbCh7XG4gICAgICAgIHR5cGU6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICBwYXJ0cyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RMYXp5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZExhenlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExhenkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5nZXR0ZXIoKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGxhenkoZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMYXp5KHtcbiAgICAgICAgdHlwZTogXCJsYXp5XCIsXG4gICAgICAgIGdldHRlcjogZ2V0dGVyLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFByb21pc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJvbWlzZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2UoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcbiAgICAgICAgdHlwZTogXCJwcm9taXNlXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZEN1c3RvbSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEN1c3RvbS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhmbikge1xuICAgIGNvbnN0IGNoID0gbmV3IGNvcmUuJFpvZENoZWNrKHtcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIC8vIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gICAgY2guX3pvZC5jaGVjayA9IGZuO1xuICAgIHJldHVybiBjaDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b20oZm4sIF9wYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VzdG9tKFpvZEN1c3RvbSwgZm4gPz8gKCgpID0+IHRydWUpLCBfcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWZpbmUoZm4sIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9yZWZpbmUoWm9kQ3VzdG9tLCBmbiwgX3BhcmFtcyk7XG59XG4vLyBzdXBlclJlZmluZVxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyUmVmaW5lKGZuKSB7XG4gICAgY29uc3QgY2ggPSBjaGVjaygocGF5bG9hZCkgPT4ge1xuICAgICAgICBwYXlsb2FkLmFkZElzc3VlID0gKGlzc3VlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlzc3VlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh1dGlsLmlzc3VlKGlzc3VlLCBwYXlsb2FkLnZhbHVlLCBjaC5fem9kLmRlZikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIFpvZCAzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mYXRhbClcbiAgICAgICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvZGUgPz8gKF9pc3N1ZS5jb2RlID0gXCJjdXN0b21cIik7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmlucHV0ID8/IChfaXNzdWUuaW5wdXQgPSBwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5zdCA/PyAoX2lzc3VlLmluc3QgPSBjaCk7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID8/IChfaXNzdWUuY29udGludWUgPSAhY2guX3pvZC5kZWYuYWJvcnQpO1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZuKHBheWxvYWQudmFsdWUsIHBheWxvYWQpO1xuICAgIH0pO1xuICAgIHJldHVybiBjaDtcbn1cbmZ1bmN0aW9uIF9pbnN0YW5jZW9mKGNscywgcGFyYW1zID0ge1xuICAgIGVycm9yOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pIHtcbiAgICBjb25zdCBpbnN0ID0gbmV3IFpvZEN1c3RvbSh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsXG4gICAgICAgIGFib3J0OiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICAgIGluc3QuX3pvZC5iYWcuQ2xhc3MgPSBjbHM7XG4gICAgcmV0dXJuIGluc3Q7XG59XG5leHBvcnQgeyBfaW5zdGFuY2VvZiBhcyBpbnN0YW5jZW9mIH07XG4vLyBzdHJpbmdib29sXG5leHBvcnQgY29uc3Qgc3RyaW5nYm9vbCA9ICguLi5hcmdzKSA9PiBjb3JlLl9zdHJpbmdib29sKHtcbiAgICBQaXBlOiBab2RQaXBlLFxuICAgIEJvb2xlYW46IFpvZEJvb2xlYW4sXG4gICAgU3RyaW5nOiBab2RTdHJpbmcsXG4gICAgVHJhbnNmb3JtOiBab2RUcmFuc2Zvcm0sXG59LCAuLi5hcmdzKTtcbmV4cG9ydCBmdW5jdGlvbiBqc29uKHBhcmFtcykge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSBsYXp5KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaW9uKFtzdHJpbmcocGFyYW1zKSwgbnVtYmVyKCksIGJvb2xlYW4oKSwgX251bGwoKSwgYXJyYXkoanNvblNjaGVtYSksIHJlY29yZChzdHJpbmcoKSwganNvblNjaGVtYSldKTtcbiAgICB9KTtcbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn1cbi8vIHByZXByb2Nlc3Ncbi8vIC8qKiBAZGVwcmVjYXRlZCBVc2UgYHoucGlwZSgpYCBhbmQgYHoudHJhbnNmb3JtKClgIGluc3RlYWQuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzcyhmbiwgc2NoZW1hKSB7XG4gICAgcmV0dXJuIHBpcGUodHJhbnNmb3JtKGZuKSwgc2NoZW1hKTtcbn1cbiIsICJleHBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBhdC5qc1wiO1xuLy8gem9kLXNwZWNpZmllZFxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi4vbG9jYWxlcy9lbi5qc1wiO1xuY29uZmlnKGVuKCkpO1xuZXhwb3J0IHsgZ2xvYmFsUmVnaXN0cnksIHJlZ2lzdHJ5LCBjb25maWcsIGZ1bmN0aW9uLCAkb3V0cHV0LCAkaW5wdXQsICRicmFuZCwgY2xvbmUsIHJlZ2V4ZXMsIHRyZWVpZnlFcnJvciwgcHJldHRpZnlFcnJvciwgZm9ybWF0RXJyb3IsIGZsYXR0ZW5FcnJvciwgdG9KU09OU2NoZW1hLCBUaW1lUHJlY2lzaW9uLCBORVZFUiwgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuZXhwb3J0ICogYXMgbG9jYWxlcyBmcm9tIFwiLi4vbG9jYWxlcy9pbmRleC5qc1wiO1xuLy8gaXNvXG4vLyBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdG9wLWxldmVsXG4vLyBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvaXNzdWVzLzQ0OTFcbmV4cG9ydCB7IFpvZElTT0RhdGVUaW1lLCBab2RJU09EYXRlLCBab2RJU09UaW1lLCBab2RJU09EdXJhdGlvbiB9IGZyb20gXCIuL2lzby5qc1wiO1xuZXhwb3J0ICogYXMgaXNvIGZyb20gXCIuL2lzby5qc1wiO1xuZXhwb3J0ICogYXMgY29lcmNlIGZyb20gXCIuL2NvZXJjZS5qc1wiO1xuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIi8vIHNyYy9zZXJ2ZXIudHNcbmltcG9ydCB7IGNyZWF0ZVNlcnZlciBhcyBjcmVhdGVTZXJ2ZXJIVFRQIH0gZnJvbSBcImh0dHBcIjtcblxuLy8gc3JjL2xpc3RlbmVyLnRzXG5pbXBvcnQgeyBIdHRwMlNlcnZlclJlcXVlc3QgYXMgSHR0cDJTZXJ2ZXJSZXF1ZXN0MiwgY29uc3RhbnRzIGFzIGgyY29uc3RhbnRzIH0gZnJvbSBcImh0dHAyXCI7XG5cbi8vIHNyYy9yZXF1ZXN0LnRzXG5pbXBvcnQgeyBIdHRwMlNlcnZlclJlcXVlc3QgfSBmcm9tIFwiaHR0cDJcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xudmFyIFJlcXVlc3RFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgdGhpcy5uYW1lID0gXCJSZXF1ZXN0RXJyb3JcIjtcbiAgfVxufTtcbnZhciB0b1JlcXVlc3RFcnJvciA9IChlKSA9PiB7XG4gIGlmIChlIGluc3RhbmNlb2YgUmVxdWVzdEVycm9yKSB7XG4gICAgcmV0dXJuIGU7XG4gIH1cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0RXJyb3IoZS5tZXNzYWdlLCB7IGNhdXNlOiBlIH0pO1xufTtcbnZhciBHbG9iYWxSZXF1ZXN0ID0gZ2xvYmFsLlJlcXVlc3Q7XG52YXIgUmVxdWVzdCA9IGNsYXNzIGV4dGVuZHMgR2xvYmFsUmVxdWVzdCB7XG4gIGNvbnN0cnVjdG9yKGlucHV0LCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBnZXRSZXF1ZXN0Q2FjaGUgaW4gaW5wdXQpIHtcbiAgICAgIGlucHV0ID0gaW5wdXRbZ2V0UmVxdWVzdENhY2hlXSgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnM/LmJvZHk/LmdldFJlYWRlciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgO1xuICAgICAgb3B0aW9ucy5kdXBsZXggPz89IFwiaGFsZlwiO1xuICAgIH1cbiAgICBzdXBlcihpbnB1dCwgb3B0aW9ucyk7XG4gIH1cbn07XG52YXIgbmV3SGVhZGVyc0Zyb21JbmNvbWluZyA9IChpbmNvbWluZykgPT4ge1xuICBjb25zdCBoZWFkZXJSZWNvcmQgPSBbXTtcbiAgY29uc3QgcmF3SGVhZGVycyA9IGluY29taW5nLnJhd0hlYWRlcnM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3SGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IHsgW2ldOiBrZXksIFtpICsgMV06IHZhbHVlIH0gPSByYXdIZWFkZXJzO1xuICAgIGlmIChrZXkuY2hhckNvZGVBdCgwKSAhPT0gLyo6Ki9cbiAgICA1OCkge1xuICAgICAgaGVhZGVyUmVjb3JkLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBIZWFkZXJzKGhlYWRlclJlY29yZCk7XG59O1xudmFyIHdyYXBCb2R5U3RyZWFtID0gU3ltYm9sKFwid3JhcEJvZHlTdHJlYW1cIik7XG52YXIgbmV3UmVxdWVzdEZyb21JbmNvbWluZyA9IChtZXRob2QsIHVybCwgaGVhZGVycywgaW5jb21pbmcsIGFib3J0Q29udHJvbGxlcikgPT4ge1xuICBjb25zdCBpbml0ID0ge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbFxuICB9O1xuICBpZiAobWV0aG9kID09PSBcIlRSQUNFXCIpIHtcbiAgICBpbml0Lm1ldGhvZCA9IFwiR0VUXCI7XG4gICAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QodXJsLCBpbml0KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxLCBcIm1ldGhvZFwiLCB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBcIlRSQUNFXCI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcTtcbiAgfVxuICBpZiAoIShtZXRob2QgPT09IFwiR0VUXCIgfHwgbWV0aG9kID09PSBcIkhFQURcIikpIHtcbiAgICBpZiAoXCJyYXdCb2R5XCIgaW4gaW5jb21pbmcgJiYgaW5jb21pbmcucmF3Qm9keSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgaW5pdC5ib2R5ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShpbmNvbWluZy5yYXdCb2R5KTtcbiAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaW5jb21pbmdbd3JhcEJvZHlTdHJlYW1dKSB7XG4gICAgICBsZXQgcmVhZGVyO1xuICAgICAgaW5pdC5ib2R5ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgYXN5bmMgcHVsbChjb250cm9sbGVyKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlYWRlciB8fD0gUmVhZGFibGUudG9XZWIoaW5jb21pbmcpLmdldFJlYWRlcigpO1xuICAgICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IFJlYWRhYmxlLnRvV2ViKGluY29taW5nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybCwgaW5pdCk7XG59O1xudmFyIGdldFJlcXVlc3RDYWNoZSA9IFN5bWJvbChcImdldFJlcXVlc3RDYWNoZVwiKTtcbnZhciByZXF1ZXN0Q2FjaGUgPSBTeW1ib2woXCJyZXF1ZXN0Q2FjaGVcIik7XG52YXIgaW5jb21pbmdLZXkgPSBTeW1ib2woXCJpbmNvbWluZ0tleVwiKTtcbnZhciB1cmxLZXkgPSBTeW1ib2woXCJ1cmxLZXlcIik7XG52YXIgaGVhZGVyc0tleSA9IFN5bWJvbChcImhlYWRlcnNLZXlcIik7XG52YXIgYWJvcnRDb250cm9sbGVyS2V5ID0gU3ltYm9sKFwiYWJvcnRDb250cm9sbGVyS2V5XCIpO1xudmFyIGdldEFib3J0Q29udHJvbGxlciA9IFN5bWJvbChcImdldEFib3J0Q29udHJvbGxlclwiKTtcbnZhciByZXF1ZXN0UHJvdG90eXBlID0ge1xuICBnZXQgbWV0aG9kKCkge1xuICAgIHJldHVybiB0aGlzW2luY29taW5nS2V5XS5tZXRob2QgfHwgXCJHRVRcIjtcbiAgfSxcbiAgZ2V0IHVybCgpIHtcbiAgICByZXR1cm4gdGhpc1t1cmxLZXldO1xuICB9LFxuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpc1toZWFkZXJzS2V5XSB8fD0gbmV3SGVhZGVyc0Zyb21JbmNvbWluZyh0aGlzW2luY29taW5nS2V5XSk7XG4gIH0sXG4gIFtnZXRBYm9ydENvbnRyb2xsZXJdKCkge1xuICAgIHRoaXNbZ2V0UmVxdWVzdENhY2hlXSgpO1xuICAgIHJldHVybiB0aGlzW2Fib3J0Q29udHJvbGxlcktleV07XG4gIH0sXG4gIFtnZXRSZXF1ZXN0Q2FjaGVdKCkge1xuICAgIHRoaXNbYWJvcnRDb250cm9sbGVyS2V5XSB8fD0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHJldHVybiB0aGlzW3JlcXVlc3RDYWNoZV0gfHw9IG5ld1JlcXVlc3RGcm9tSW5jb21pbmcoXG4gICAgICB0aGlzLm1ldGhvZCxcbiAgICAgIHRoaXNbdXJsS2V5XSxcbiAgICAgIHRoaXMuaGVhZGVycyxcbiAgICAgIHRoaXNbaW5jb21pbmdLZXldLFxuICAgICAgdGhpc1thYm9ydENvbnRyb2xsZXJLZXldXG4gICAgKTtcbiAgfVxufTtcbltcbiAgXCJib2R5XCIsXG4gIFwiYm9keVVzZWRcIixcbiAgXCJjYWNoZVwiLFxuICBcImNyZWRlbnRpYWxzXCIsXG4gIFwiZGVzdGluYXRpb25cIixcbiAgXCJpbnRlZ3JpdHlcIixcbiAgXCJtb2RlXCIsXG4gIFwicmVkaXJlY3RcIixcbiAgXCJyZWZlcnJlclwiLFxuICBcInJlZmVycmVyUG9saWN5XCIsXG4gIFwic2lnbmFsXCIsXG4gIFwia2VlcGFsaXZlXCJcbl0uZm9yRWFjaCgoaykgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWVzdFByb3RvdHlwZSwgaywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzW2dldFJlcXVlc3RDYWNoZV0oKVtrXTtcbiAgICB9XG4gIH0pO1xufSk7XG5bXCJhcnJheUJ1ZmZlclwiLCBcImJsb2JcIiwgXCJjbG9uZVwiLCBcImZvcm1EYXRhXCIsIFwianNvblwiLCBcInRleHRcIl0uZm9yRWFjaCgoaykgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWVzdFByb3RvdHlwZSwgaywge1xuICAgIHZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzW2dldFJlcXVlc3RDYWNoZV0oKVtrXSgpO1xuICAgIH1cbiAgfSk7XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1ZXN0UHJvdG90eXBlLCBTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIiksIHtcbiAgdmFsdWU6IGZ1bmN0aW9uKGRlcHRoLCBvcHRpb25zLCBpbnNwZWN0Rm4pIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIG1ldGhvZDogdGhpcy5tZXRob2QsXG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgbmF0aXZlUmVxdWVzdDogdGhpc1tyZXF1ZXN0Q2FjaGVdXG4gICAgfTtcbiAgICByZXR1cm4gYFJlcXVlc3QgKGxpZ2h0d2VpZ2h0KSAke2luc3BlY3RGbihwcm9wcywgeyAuLi5vcHRpb25zLCBkZXB0aDogZGVwdGggPT0gbnVsbCA/IG51bGwgOiBkZXB0aCAtIDEgfSl9YDtcbiAgfVxufSk7XG5PYmplY3Quc2V0UHJvdG90eXBlT2YocmVxdWVzdFByb3RvdHlwZSwgUmVxdWVzdC5wcm90b3R5cGUpO1xudmFyIG5ld1JlcXVlc3QgPSAoaW5jb21pbmcsIGRlZmF1bHRIb3N0bmFtZSkgPT4ge1xuICBjb25zdCByZXEgPSBPYmplY3QuY3JlYXRlKHJlcXVlc3RQcm90b3R5cGUpO1xuICByZXFbaW5jb21pbmdLZXldID0gaW5jb21pbmc7XG4gIGNvbnN0IGluY29taW5nVXJsID0gaW5jb21pbmcudXJsIHx8IFwiXCI7XG4gIGlmIChpbmNvbWluZ1VybFswXSAhPT0gXCIvXCIgJiYgLy8gc2hvcnQtY2lyY3VpdCBmb3IgcGVyZm9ybWFuY2UuIG1vc3QgcmVxdWVzdHMgYXJlIHJlbGF0aXZlIFVSTC5cbiAgKGluY29taW5nVXJsLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpIHx8IGluY29taW5nVXJsLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkpIHtcbiAgICBpZiAoaW5jb21pbmcgaW5zdGFuY2VvZiBIdHRwMlNlcnZlclJlcXVlc3QpIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoXCJBYnNvbHV0ZSBVUkwgZm9yIDpwYXRoIGlzIG5vdCBhbGxvd2VkIGluIEhUVFAvMlwiKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybDIgPSBuZXcgVVJMKGluY29taW5nVXJsKTtcbiAgICAgIHJlcVt1cmxLZXldID0gdXJsMi5ocmVmO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoXCJJbnZhbGlkIGFic29sdXRlIFVSTFwiLCB7IGNhdXNlOiBlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG4gIGNvbnN0IGhvc3QgPSAoaW5jb21pbmcgaW5zdGFuY2VvZiBIdHRwMlNlcnZlclJlcXVlc3QgPyBpbmNvbWluZy5hdXRob3JpdHkgOiBpbmNvbWluZy5oZWFkZXJzLmhvc3QpIHx8IGRlZmF1bHRIb3N0bmFtZTtcbiAgaWYgKCFob3N0KSB7XG4gICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihcIk1pc3NpbmcgaG9zdCBoZWFkZXJcIik7XG4gIH1cbiAgbGV0IHNjaGVtZTtcbiAgaWYgKGluY29taW5nIGluc3RhbmNlb2YgSHR0cDJTZXJ2ZXJSZXF1ZXN0KSB7XG4gICAgc2NoZW1lID0gaW5jb21pbmcuc2NoZW1lO1xuICAgIGlmICghKHNjaGVtZSA9PT0gXCJodHRwXCIgfHwgc2NoZW1lID09PSBcImh0dHBzXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKFwiVW5zdXBwb3J0ZWQgc2NoZW1lXCIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzY2hlbWUgPSBpbmNvbWluZy5zb2NrZXQgJiYgaW5jb21pbmcuc29ja2V0LmVuY3J5cHRlZCA/IFwiaHR0cHNcIiA6IFwiaHR0cFwiO1xuICB9XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYCR7c2NoZW1lfTovLyR7aG9zdH0ke2luY29taW5nVXJsfWApO1xuICBpZiAodXJsLmhvc3RuYW1lLmxlbmd0aCAhPT0gaG9zdC5sZW5ndGggJiYgdXJsLmhvc3RuYW1lICE9PSBob3N0LnJlcGxhY2UoLzpcXGQrJC8sIFwiXCIpKSB7XG4gICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihcIkludmFsaWQgaG9zdCBoZWFkZXJcIik7XG4gIH1cbiAgcmVxW3VybEtleV0gPSB1cmwuaHJlZjtcbiAgcmV0dXJuIHJlcTtcbn07XG5cbi8vIHNyYy9yZXNwb25zZS50c1xudmFyIHJlc3BvbnNlQ2FjaGUgPSBTeW1ib2woXCJyZXNwb25zZUNhY2hlXCIpO1xudmFyIGdldFJlc3BvbnNlQ2FjaGUgPSBTeW1ib2woXCJnZXRSZXNwb25zZUNhY2hlXCIpO1xudmFyIGNhY2hlS2V5ID0gU3ltYm9sKFwiY2FjaGVcIik7XG52YXIgR2xvYmFsUmVzcG9uc2UgPSBnbG9iYWwuUmVzcG9uc2U7XG52YXIgUmVzcG9uc2UyID0gY2xhc3MgX1Jlc3BvbnNlIHtcbiAgI2JvZHk7XG4gICNpbml0O1xuICBbZ2V0UmVzcG9uc2VDYWNoZV0oKSB7XG4gICAgZGVsZXRlIHRoaXNbY2FjaGVLZXldO1xuICAgIHJldHVybiB0aGlzW3Jlc3BvbnNlQ2FjaGVdIHx8PSBuZXcgR2xvYmFsUmVzcG9uc2UodGhpcy4jYm9keSwgdGhpcy4jaW5pdCk7XG4gIH1cbiAgY29uc3RydWN0b3IoYm9keSwgaW5pdCkge1xuICAgIGxldCBoZWFkZXJzO1xuICAgIHRoaXMuI2JvZHkgPSBib2R5O1xuICAgIGlmIChpbml0IGluc3RhbmNlb2YgX1Jlc3BvbnNlKSB7XG4gICAgICBjb25zdCBjYWNoZWRHbG9iYWxSZXNwb25zZSA9IGluaXRbcmVzcG9uc2VDYWNoZV07XG4gICAgICBpZiAoY2FjaGVkR2xvYmFsUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy4jaW5pdCA9IGNhY2hlZEdsb2JhbFJlc3BvbnNlO1xuICAgICAgICB0aGlzW2dldFJlc3BvbnNlQ2FjaGVdKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2luaXQgPSBpbml0LiNpbml0O1xuICAgICAgICBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5pdC4jaW5pdC5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jaW5pdCA9IGluaXQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgYm9keT8uZ2V0UmVhZGVyICE9PSBcInVuZGVmaW5lZFwiIHx8IGJvZHkgaW5zdGFuY2VvZiBCbG9iIHx8IGJvZHkgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICA7XG4gICAgICB0aGlzW2NhY2hlS2V5XSA9IFtpbml0Py5zdGF0dXMgfHwgMjAwLCBib2R5LCBoZWFkZXJzIHx8IGluaXQ/LmhlYWRlcnNdO1xuICAgIH1cbiAgfVxuICBnZXQgaGVhZGVycygpIHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXNbY2FjaGVLZXldO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgaWYgKCEoY2FjaGVbMl0gaW5zdGFuY2VvZiBIZWFkZXJzKSkge1xuICAgICAgICBjYWNoZVsyXSA9IG5ldyBIZWFkZXJzKFxuICAgICAgICAgIGNhY2hlWzJdIHx8IHsgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XCIgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhY2hlWzJdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpc1tnZXRSZXNwb25zZUNhY2hlXSgpLmhlYWRlcnM7XG4gIH1cbiAgZ2V0IHN0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpc1tjYWNoZUtleV0/LlswXSA/PyB0aGlzW2dldFJlc3BvbnNlQ2FjaGVdKCkuc3RhdHVzO1xuICB9XG4gIGdldCBvaygpIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH1cbn07XG5bXCJib2R5XCIsIFwiYm9keVVzZWRcIiwgXCJyZWRpcmVjdGVkXCIsIFwic3RhdHVzVGV4dFwiLCBcInRyYWlsZXJzXCIsIFwidHlwZVwiLCBcInVybFwiXS5mb3JFYWNoKChrKSA9PiB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNwb25zZTIucHJvdG90eXBlLCBrLCB7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXNbZ2V0UmVzcG9uc2VDYWNoZV0oKVtrXTtcbiAgICB9XG4gIH0pO1xufSk7XG5bXCJhcnJheUJ1ZmZlclwiLCBcImJsb2JcIiwgXCJjbG9uZVwiLCBcImZvcm1EYXRhXCIsIFwianNvblwiLCBcInRleHRcIl0uZm9yRWFjaCgoaykgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzcG9uc2UyLnByb3RvdHlwZSwgaywge1xuICAgIHZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzW2dldFJlc3BvbnNlQ2FjaGVdKClba10oKTtcbiAgICB9XG4gIH0pO1xufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzcG9uc2UyLnByb3RvdHlwZSwgU3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpLCB7XG4gIHZhbHVlOiBmdW5jdGlvbihkZXB0aCwgb3B0aW9ucywgaW5zcGVjdEZuKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgb2s6IHRoaXMub2ssXG4gICAgICBuYXRpdmVSZXNwb25zZTogdGhpc1tyZXNwb25zZUNhY2hlXVxuICAgIH07XG4gICAgcmV0dXJuIGBSZXNwb25zZSAobGlnaHR3ZWlnaHQpICR7aW5zcGVjdEZuKHByb3BzLCB7IC4uLm9wdGlvbnMsIGRlcHRoOiBkZXB0aCA9PSBudWxsID8gbnVsbCA6IGRlcHRoIC0gMSB9KX1gO1xuICB9XG59KTtcbk9iamVjdC5zZXRQcm90b3R5cGVPZihSZXNwb25zZTIsIEdsb2JhbFJlc3BvbnNlKTtcbk9iamVjdC5zZXRQcm90b3R5cGVPZihSZXNwb25zZTIucHJvdG90eXBlLCBHbG9iYWxSZXNwb25zZS5wcm90b3R5cGUpO1xuXG4vLyBzcmMvdXRpbHMudHNcbmFzeW5jIGZ1bmN0aW9uIHJlYWRXaXRob3V0QmxvY2tpbmcocmVhZFByb21pc2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbcmVhZFByb21pc2UsIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZvaWQgMCkpXSk7XG59XG5mdW5jdGlvbiB3cml0ZUZyb21SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocmVhZGVyLCB3cml0YWJsZSwgY3VycmVudFJlYWRQcm9taXNlKSB7XG4gIGNvbnN0IGNhbmNlbCA9IChlcnJvcikgPT4ge1xuICAgIHJlYWRlci5jYW5jZWwoZXJyb3IpLmNhdGNoKCgpID0+IHtcbiAgICB9KTtcbiAgfTtcbiAgd3JpdGFibGUub24oXCJjbG9zZVwiLCBjYW5jZWwpO1xuICB3cml0YWJsZS5vbihcImVycm9yXCIsIGNhbmNlbCk7XG4gIChjdXJyZW50UmVhZFByb21pc2UgPz8gcmVhZGVyLnJlYWQoKSkudGhlbihmbG93LCBoYW5kbGVTdHJlYW1FcnJvcik7XG4gIHJldHVybiByZWFkZXIuY2xvc2VkLmZpbmFsbHkoKCkgPT4ge1xuICAgIHdyaXRhYmxlLm9mZihcImNsb3NlXCIsIGNhbmNlbCk7XG4gICAgd3JpdGFibGUub2ZmKFwiZXJyb3JcIiwgY2FuY2VsKTtcbiAgfSk7XG4gIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbUVycm9yKGVycm9yKSB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB3cml0YWJsZS5kZXN0cm95KGVycm9yKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gb25EcmFpbigpIHtcbiAgICByZWFkZXIucmVhZCgpLnRoZW4oZmxvdywgaGFuZGxlU3RyZWFtRXJyb3IpO1xuICB9XG4gIGZ1bmN0aW9uIGZsb3coeyBkb25lLCB2YWx1ZSB9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHdyaXRhYmxlLmVuZCgpO1xuICAgICAgfSBlbHNlIGlmICghd3JpdGFibGUud3JpdGUodmFsdWUpKSB7XG4gICAgICAgIHdyaXRhYmxlLm9uY2UoXCJkcmFpblwiLCBvbkRyYWluKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oZmxvdywgaGFuZGxlU3RyZWFtRXJyb3IpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZVN0cmVhbUVycm9yKGUpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gd3JpdGVGcm9tUmVhZGFibGVTdHJlYW0oc3RyZWFtLCB3cml0YWJsZSkge1xuICBpZiAoc3RyZWFtLmxvY2tlZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQuXCIpO1xuICB9IGVsc2UgaWYgKHdyaXRhYmxlLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4gd3JpdGVGcm9tUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHN0cmVhbS5nZXRSZWFkZXIoKSwgd3JpdGFibGUpO1xufVxudmFyIGJ1aWxkT3V0Z29pbmdIdHRwSGVhZGVycyA9IChoZWFkZXJzKSA9PiB7XG4gIGNvbnN0IHJlcyA9IHt9O1xuICBpZiAoIShoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVycyA/PyB2b2lkIDApO1xuICB9XG4gIGNvbnN0IGNvb2tpZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgaGVhZGVycykge1xuICAgIGlmIChrID09PSBcInNldC1jb29raWVcIikge1xuICAgICAgY29va2llcy5wdXNoKHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNba10gPSB2O1xuICAgIH1cbiAgfVxuICBpZiAoY29va2llcy5sZW5ndGggPiAwKSB7XG4gICAgcmVzW1wic2V0LWNvb2tpZVwiXSA9IGNvb2tpZXM7XG4gIH1cbiAgcmVzW1wiY29udGVudC10eXBlXCJdID8/PSBcInRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIjtcbiAgcmV0dXJuIHJlcztcbn07XG5cbi8vIHNyYy91dGlscy9yZXNwb25zZS9jb25zdGFudHMudHNcbnZhciBYX0FMUkVBRFlfU0VOVCA9IFwieC1ob25vLWFscmVhZHktc2VudFwiO1xuXG4vLyBzcmMvZ2xvYmFscy50c1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5pZiAodHlwZW9mIGdsb2JhbC5jcnlwdG8gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgZ2xvYmFsLmNyeXB0byA9IGNyeXB0bztcbn1cblxuLy8gc3JjL2xpc3RlbmVyLnRzXG52YXIgb3V0Z29pbmdFbmRlZCA9IFN5bWJvbChcIm91dGdvaW5nRW5kZWRcIik7XG52YXIgaW5jb21pbmdEcmFpbmluZyA9IFN5bWJvbChcImluY29taW5nRHJhaW5pbmdcIik7XG52YXIgRFJBSU5fVElNRU9VVF9NUyA9IDUwMDtcbnZhciBNQVhfRFJBSU5fQllURVMgPSA2NCAqIDEwMjQgKiAxMDI0O1xudmFyIGRyYWluSW5jb21pbmcgPSAoaW5jb21pbmcpID0+IHtcbiAgY29uc3QgaW5jb21pbmdXaXRoRHJhaW5TdGF0ZSA9IGluY29taW5nO1xuICBpZiAoaW5jb21pbmcuZGVzdHJveWVkIHx8IGluY29taW5nV2l0aERyYWluU3RhdGVbaW5jb21pbmdEcmFpbmluZ10pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaW5jb21pbmdXaXRoRHJhaW5TdGF0ZVtpbmNvbWluZ0RyYWluaW5nXSA9IHRydWU7XG4gIGlmIChpbmNvbWluZyBpbnN0YW5jZW9mIEh0dHAyU2VydmVyUmVxdWVzdDIpIHtcbiAgICB0cnkge1xuICAgICAgO1xuICAgICAgaW5jb21pbmcuc3RyZWFtPy5jbG9zZT8uKGgyY29uc3RhbnRzLk5HSFRUUDJfTk9fRVJST1IpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGJ5dGVzUmVhZCA9IDA7XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICBpbmNvbWluZy5vZmYoXCJkYXRhXCIsIG9uRGF0YSk7XG4gICAgaW5jb21pbmcub2ZmKFwiZW5kXCIsIGNsZWFudXApO1xuICAgIGluY29taW5nLm9mZihcImVycm9yXCIsIGNsZWFudXApO1xuICB9O1xuICBjb25zdCBmb3JjZUNsb3NlID0gKCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBzb2NrZXQgPSBpbmNvbWluZy5zb2NrZXQ7XG4gICAgaWYgKHNvY2tldCAmJiAhc29ja2V0LmRlc3Ryb3llZCkge1xuICAgICAgc29ja2V0LmRlc3Ryb3lTb29uKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoZm9yY2VDbG9zZSwgRFJBSU5fVElNRU9VVF9NUyk7XG4gIHRpbWVyLnVucmVmPy4oKTtcbiAgY29uc3Qgb25EYXRhID0gKGNodW5rKSA9PiB7XG4gICAgYnl0ZXNSZWFkICs9IGNodW5rLmxlbmd0aDtcbiAgICBpZiAoYnl0ZXNSZWFkID4gTUFYX0RSQUlOX0JZVEVTKSB7XG4gICAgICBmb3JjZUNsb3NlKCk7XG4gICAgfVxuICB9O1xuICBpbmNvbWluZy5vbihcImRhdGFcIiwgb25EYXRhKTtcbiAgaW5jb21pbmcub24oXCJlbmRcIiwgY2xlYW51cCk7XG4gIGluY29taW5nLm9uKFwiZXJyb3JcIiwgY2xlYW51cCk7XG4gIGluY29taW5nLnJlc3VtZSgpO1xufTtcbnZhciBoYW5kbGVSZXF1ZXN0RXJyb3IgPSAoKSA9PiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICBzdGF0dXM6IDQwMFxufSk7XG52YXIgaGFuZGxlRmV0Y2hFcnJvciA9IChlKSA9PiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICBzdGF0dXM6IGUgaW5zdGFuY2VvZiBFcnJvciAmJiAoZS5uYW1lID09PSBcIlRpbWVvdXRFcnJvclwiIHx8IGUuY29uc3RydWN0b3IubmFtZSA9PT0gXCJUaW1lb3V0RXJyb3JcIikgPyA1MDQgOiA1MDBcbn0pO1xudmFyIGhhbmRsZVJlc3BvbnNlRXJyb3IgPSAoZSwgb3V0Z29pbmcpID0+IHtcbiAgY29uc3QgZXJyID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihcInVua25vd24gZXJyb3JcIiwgeyBjYXVzZTogZSB9KTtcbiAgaWYgKGVyci5jb2RlID09PSBcIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIpIHtcbiAgICBjb25zb2xlLmluZm8oXCJUaGUgdXNlciBhYm9ydGVkIGEgcmVxdWVzdC5cIik7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICBpZiAoIW91dGdvaW5nLmhlYWRlcnNTZW50KSB7XG4gICAgICBvdXRnb2luZy53cml0ZUhlYWQoNTAwLCB7IFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiIH0pO1xuICAgIH1cbiAgICBvdXRnb2luZy5lbmQoYEVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIG91dGdvaW5nLmRlc3Ryb3koZXJyKTtcbiAgfVxufTtcbnZhciBmbHVzaEhlYWRlcnMgPSAob3V0Z29pbmcpID0+IHtcbiAgaWYgKFwiZmx1c2hIZWFkZXJzXCIgaW4gb3V0Z29pbmcgJiYgb3V0Z29pbmcud3JpdGFibGUpIHtcbiAgICBvdXRnb2luZy5mbHVzaEhlYWRlcnMoKTtcbiAgfVxufTtcbnZhciByZXNwb25zZVZpYUNhY2hlID0gYXN5bmMgKHJlcywgb3V0Z29pbmcpID0+IHtcbiAgbGV0IFtzdGF0dXMsIGJvZHksIGhlYWRlcl0gPSByZXNbY2FjaGVLZXldO1xuICBsZXQgaGFzQ29udGVudExlbmd0aCA9IGZhbHNlO1xuICBpZiAoIWhlYWRlcikge1xuICAgIGhlYWRlciA9IHsgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XCIgfTtcbiAgfSBlbHNlIGlmIChoZWFkZXIgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGFzQ29udGVudExlbmd0aCA9IGhlYWRlci5oYXMoXCJjb250ZW50LWxlbmd0aFwiKTtcbiAgICBoZWFkZXIgPSBidWlsZE91dGdvaW5nSHR0cEhlYWRlcnMoaGVhZGVyKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcikpIHtcbiAgICBjb25zdCBoZWFkZXJPYmogPSBuZXcgSGVhZGVycyhoZWFkZXIpO1xuICAgIGhhc0NvbnRlbnRMZW5ndGggPSBoZWFkZXJPYmouaGFzKFwiY29udGVudC1sZW5ndGhcIik7XG4gICAgaGVhZGVyID0gYnVpbGRPdXRnb2luZ0h0dHBIZWFkZXJzKGhlYWRlck9iaik7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGVhZGVyKSB7XG4gICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMTQgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09IFwiY29udGVudC1sZW5ndGhcIikge1xuICAgICAgICBoYXNDb250ZW50TGVuZ3RoID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaGFzQ29udGVudExlbmd0aCkge1xuICAgIGlmICh0eXBlb2YgYm9keSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaGVhZGVyW1wiQ29udGVudC1MZW5ndGhcIl0gPSBCdWZmZXIuYnl0ZUxlbmd0aChib2R5KTtcbiAgICB9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICBoZWFkZXJbXCJDb250ZW50LUxlbmd0aFwiXSA9IGJvZHkuYnl0ZUxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICBoZWFkZXJbXCJDb250ZW50LUxlbmd0aFwiXSA9IGJvZHkuc2l6ZTtcbiAgICB9XG4gIH1cbiAgb3V0Z29pbmcud3JpdGVIZWFkKHN0YXR1cywgaGVhZGVyKTtcbiAgaWYgKHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiIHx8IGJvZHkgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgb3V0Z29pbmcuZW5kKGJvZHkpO1xuICB9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgb3V0Z29pbmcuZW5kKG5ldyBVaW50OEFycmF5KGF3YWl0IGJvZHkuYXJyYXlCdWZmZXIoKSkpO1xuICB9IGVsc2Uge1xuICAgIGZsdXNoSGVhZGVycyhvdXRnb2luZyk7XG4gICAgYXdhaXQgd3JpdGVGcm9tUmVhZGFibGVTdHJlYW0oYm9keSwgb3V0Z29pbmcpPy5jYXRjaChcbiAgICAgIChlKSA9PiBoYW5kbGVSZXNwb25zZUVycm9yKGUsIG91dGdvaW5nKVxuICAgICk7XG4gIH1cbiAgO1xuICBvdXRnb2luZ1tvdXRnb2luZ0VuZGVkXT8uKCk7XG59O1xudmFyIGlzUHJvbWlzZSA9IChyZXMpID0+IHR5cGVvZiByZXMudGhlbiA9PT0gXCJmdW5jdGlvblwiO1xudmFyIHJlc3BvbnNlVmlhUmVzcG9uc2VPYmplY3QgPSBhc3luYyAocmVzLCBvdXRnb2luZywgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmIChpc1Byb21pc2UocmVzKSkge1xuICAgIGlmIChvcHRpb25zLmVycm9ySGFuZGxlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gYXdhaXQgcmVzO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnN0IGVyclJlcyA9IGF3YWl0IG9wdGlvbnMuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgIGlmICghZXJyUmVzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcyA9IGVyclJlcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gYXdhaXQgcmVzLmNhdGNoKGhhbmRsZUZldGNoRXJyb3IpO1xuICAgIH1cbiAgfVxuICBpZiAoY2FjaGVLZXkgaW4gcmVzKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlVmlhQ2FjaGUocmVzLCBvdXRnb2luZyk7XG4gIH1cbiAgY29uc3QgcmVzSGVhZGVyUmVjb3JkID0gYnVpbGRPdXRnb2luZ0h0dHBIZWFkZXJzKHJlcy5oZWFkZXJzKTtcbiAgaWYgKHJlcy5ib2R5KSB7XG4gICAgY29uc3QgcmVhZGVyID0gcmVzLmJvZHkuZ2V0UmVhZGVyKCk7XG4gICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICBsZXQgY3VycmVudFJlYWRQcm9taXNlID0gdm9pZCAwO1xuICAgIGlmIChyZXNIZWFkZXJSZWNvcmRbXCJ0cmFuc2Zlci1lbmNvZGluZ1wiXSAhPT0gXCJjaHVua2VkXCIpIHtcbiAgICAgIGxldCBtYXhSZWFkQ291bnQgPSAyO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhSZWFkQ291bnQ7IGkrKykge1xuICAgICAgICBjdXJyZW50UmVhZFByb21pc2UgfHw9IHJlYWRlci5yZWFkKCk7XG4gICAgICAgIGNvbnN0IGNodW5rID0gYXdhaXQgcmVhZFdpdGhvdXRCbG9ja2luZyhjdXJyZW50UmVhZFByb21pc2UpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghY2h1bmspIHtcbiAgICAgICAgICBpZiAoaSA9PT0gMSkge1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSkpO1xuICAgICAgICAgICAgbWF4UmVhZENvdW50ID0gMztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50UmVhZFByb21pc2UgPSB2b2lkIDA7XG4gICAgICAgIGlmIChjaHVuay52YWx1ZSkge1xuICAgICAgICAgIHZhbHVlcy5wdXNoKGNodW5rLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2h1bmsuZG9uZSkge1xuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZG9uZSAmJiAhKFwiY29udGVudC1sZW5ndGhcIiBpbiByZXNIZWFkZXJSZWNvcmQpKSB7XG4gICAgICAgIHJlc0hlYWRlclJlY29yZFtcImNvbnRlbnQtbGVuZ3RoXCJdID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gYWNjICsgdmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0Z29pbmcud3JpdGVIZWFkKHJlcy5zdGF0dXMsIHJlc0hlYWRlclJlY29yZCk7XG4gICAgdmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICA7XG4gICAgICBvdXRnb2luZy53cml0ZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIG91dGdvaW5nLmVuZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBmbHVzaEhlYWRlcnMob3V0Z29pbmcpO1xuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGcm9tUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJlYWRlciwgb3V0Z29pbmcsIGN1cnJlbnRSZWFkUHJvbWlzZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJlc0hlYWRlclJlY29yZFtYX0FMUkVBRFlfU0VOVF0pIHtcbiAgfSBlbHNlIHtcbiAgICBvdXRnb2luZy53cml0ZUhlYWQocmVzLnN0YXR1cywgcmVzSGVhZGVyUmVjb3JkKTtcbiAgICBvdXRnb2luZy5lbmQoKTtcbiAgfVxuICA7XG4gIG91dGdvaW5nW291dGdvaW5nRW5kZWRdPy4oKTtcbn07XG52YXIgZ2V0UmVxdWVzdExpc3RlbmVyID0gKGZldGNoQ2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBhdXRvQ2xlYW51cEluY29taW5nID0gb3B0aW9ucy5hdXRvQ2xlYW51cEluY29taW5nID8/IHRydWU7XG4gIGlmIChvcHRpb25zLm92ZXJyaWRlR2xvYmFsT2JqZWN0cyAhPT0gZmFsc2UgJiYgZ2xvYmFsLlJlcXVlc3QgIT09IFJlcXVlc3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBcIlJlcXVlc3RcIiwge1xuICAgICAgdmFsdWU6IFJlcXVlc3RcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBcIlJlc3BvbnNlXCIsIHtcbiAgICAgIHZhbHVlOiBSZXNwb25zZTJcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYXN5bmMgKGluY29taW5nLCBvdXRnb2luZykgPT4ge1xuICAgIGxldCByZXMsIHJlcTtcbiAgICB0cnkge1xuICAgICAgcmVxID0gbmV3UmVxdWVzdChpbmNvbWluZywgb3B0aW9ucy5ob3N0bmFtZSk7XG4gICAgICBsZXQgaW5jb21pbmdFbmRlZCA9ICFhdXRvQ2xlYW51cEluY29taW5nIHx8IGluY29taW5nLm1ldGhvZCA9PT0gXCJHRVRcIiB8fCBpbmNvbWluZy5tZXRob2QgPT09IFwiSEVBRFwiO1xuICAgICAgaWYgKCFpbmNvbWluZ0VuZGVkKSB7XG4gICAgICAgIDtcbiAgICAgICAgaW5jb21pbmdbd3JhcEJvZHlTdHJlYW1dID0gdHJ1ZTtcbiAgICAgICAgaW5jb21pbmcub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICAgIGluY29taW5nRW5kZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGluY29taW5nIGluc3RhbmNlb2YgSHR0cDJTZXJ2ZXJSZXF1ZXN0Mikge1xuICAgICAgICAgIDtcbiAgICAgICAgICBvdXRnb2luZ1tvdXRnb2luZ0VuZGVkXSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghaW5jb21pbmdFbmRlZCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWluY29taW5nRW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkcmFpbkluY29taW5nKGluY29taW5nKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBvdXRnb2luZy5vbihcImZpbmlzaFwiLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFpbmNvbWluZ0VuZGVkKSB7XG4gICAgICAgICAgICBkcmFpbkluY29taW5nKGluY29taW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgb3V0Z29pbmcub24oXCJjbG9zZVwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IHJlcVthYm9ydENvbnRyb2xsZXJLZXldO1xuICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICAgICAgaWYgKGluY29taW5nLmVycm9yZWQpIHtcbiAgICAgICAgICAgIHJlcVthYm9ydENvbnRyb2xsZXJLZXldLmFib3J0KGluY29taW5nLmVycm9yZWQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICghb3V0Z29pbmcud3JpdGFibGVGaW5pc2hlZCkge1xuICAgICAgICAgICAgcmVxW2Fib3J0Q29udHJvbGxlcktleV0uYWJvcnQoXCJDbGllbnQgY29ubmVjdGlvbiBwcmVtYXR1cmVseSBjbG9zZWQuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluY29taW5nRW5kZWQpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghaW5jb21pbmdFbmRlZCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBkcmFpbkluY29taW5nKGluY29taW5nKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmVzID0gZmV0Y2hDYWxsYmFjayhyZXEsIHsgaW5jb21pbmcsIG91dGdvaW5nIH0pO1xuICAgICAgaWYgKGNhY2hlS2V5IGluIHJlcykge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VWaWFDYWNoZShyZXMsIG91dGdvaW5nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIXJlcykge1xuICAgICAgICBpZiAob3B0aW9ucy5lcnJvckhhbmRsZXIpIHtcbiAgICAgICAgICByZXMgPSBhd2FpdCBvcHRpb25zLmVycm9ySGFuZGxlcihyZXEgPyBlIDogdG9SZXF1ZXN0RXJyb3IoZSkpO1xuICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFyZXEpIHtcbiAgICAgICAgICByZXMgPSBoYW5kbGVSZXF1ZXN0RXJyb3IoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXMgPSBoYW5kbGVGZXRjaEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzcG9uc2VFcnJvcihlLCBvdXRnb2luZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2VWaWFSZXNwb25zZU9iamVjdChyZXMsIG91dGdvaW5nLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gaGFuZGxlUmVzcG9uc2VFcnJvcihlLCBvdXRnb2luZyk7XG4gICAgfVxuICB9O1xufTtcblxuLy8gc3JjL3NlcnZlci50c1xudmFyIGNyZWF0ZUFkYXB0b3JTZXJ2ZXIgPSAob3B0aW9ucykgPT4ge1xuICBjb25zdCBmZXRjaENhbGxiYWNrID0gb3B0aW9ucy5mZXRjaDtcbiAgY29uc3QgcmVxdWVzdExpc3RlbmVyID0gZ2V0UmVxdWVzdExpc3RlbmVyKGZldGNoQ2FsbGJhY2ssIHtcbiAgICBob3N0bmFtZTogb3B0aW9ucy5ob3N0bmFtZSxcbiAgICBvdmVycmlkZUdsb2JhbE9iamVjdHM6IG9wdGlvbnMub3ZlcnJpZGVHbG9iYWxPYmplY3RzLFxuICAgIGF1dG9DbGVhbnVwSW5jb21pbmc6IG9wdGlvbnMuYXV0b0NsZWFudXBJbmNvbWluZ1xuICB9KTtcbiAgY29uc3QgY3JlYXRlU2VydmVyID0gb3B0aW9ucy5jcmVhdGVTZXJ2ZXIgfHwgY3JlYXRlU2VydmVySFRUUDtcbiAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKG9wdGlvbnMuc2VydmVyT3B0aW9ucyB8fCB7fSwgcmVxdWVzdExpc3RlbmVyKTtcbiAgcmV0dXJuIHNlcnZlcjtcbn07XG52YXIgc2VydmUgPSAob3B0aW9ucywgbGlzdGVuaW5nTGlzdGVuZXIpID0+IHtcbiAgY29uc3Qgc2VydmVyID0gY3JlYXRlQWRhcHRvclNlcnZlcihvcHRpb25zKTtcbiAgc2VydmVyLmxpc3RlbihvcHRpb25zPy5wb3J0ID8/IDNlMywgb3B0aW9ucy5ob3N0bmFtZSwgKCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlckluZm8gPSBzZXJ2ZXIuYWRkcmVzcygpO1xuICAgIGxpc3RlbmluZ0xpc3RlbmVyICYmIGxpc3RlbmluZ0xpc3RlbmVyKHNlcnZlckluZm8pO1xuICB9KTtcbiAgcmV0dXJuIHNlcnZlcjtcbn07XG5leHBvcnQge1xuICBSZXF1ZXN0RXJyb3IsXG4gIGNyZWF0ZUFkYXB0b3JTZXJ2ZXIsXG4gIGdldFJlcXVlc3RMaXN0ZW5lcixcbiAgc2VydmVcbn07XG4iLCBudWxsLCBudWxsLCAiaW1wb3J0IHR5cGUgeyBTdGFnZSB9IGZyb20gXCIuLi9zdGF0ZS9sYWJlbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgQXVkaXRFdmVudCA9XG4gIHwge1xuICAgICAgdHlwZTogXCJzdGFnZV9yZXNvbHZlZFwiO1xuICAgICAgc3RhZ2U6IFN0YWdlIHwgXCJub25lXCI7XG4gICAgICByZWFzb246IHN0cmluZztcbiAgICAgIGlzc3VlTnVtYmVyPzogbnVtYmVyO1xuICAgICAgLy8gRXZlbnQgY29udGV4dCBjYXB0dXJlZCBhdCByb3V0aW5nIHRpbWUuIExldHMgYSBzaW5nbGUgbG9nIGxpbmUgYW5zd2VyXG4gICAgICAvLyBcIndoaWNoIHdlYmhvb2sgZGVsaXZlcnkgZGlkIHRoZSByb3V0ZXIgc2VlLCBhbmQgd2hpY2ggbGFiZWxzIGRpZCBpdFxuICAgICAgLy8gcmVzb2x2ZSBhZ2FpbnN0XCIgd2l0aG91dCB0cmF3bGluZyB0aGUgd29ya2Zsb3cgZXZlbnQgcGF5bG9hZC5cbiAgICAgIGV2ZW50TmFtZT86IHN0cmluZztcbiAgICAgIGFjdGlvbj86IHN0cmluZztcbiAgICAgIGxhYmVsTmFtZT86IHN0cmluZztcbiAgICAgIHBheWxvYWRMYWJlbHM/OiBzdHJpbmdbXTtcbiAgICAgIGxpdmVMYWJlbHM/OiBzdHJpbmdbXTtcbiAgICB9XG4gIHwgeyB0eXBlOiBcInByZWNoZWNrX2ZhaWxlZFwiOyBzdGFnZTogU3RhZ2U7IHJlYXNvbjogc3RyaW5nIH1cbiAgfCB7IHR5cGU6IFwic3RhZ2Vfc3RhcnRlZFwiOyBzdGFnZTogU3RhZ2U7IG1vZGVsOiBzdHJpbmc7IHJ1bklkOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJhZ2VudF90b29sX2NhbGxcIjsgc3RhZ2U6IFN0YWdlOyB0b29sOiBzdHJpbmc7IGFyZ3NQcmV2aWV3OiBzdHJpbmcgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwic3RhZ2VfZGVjaWRlZFwiO1xuICAgICAgc3RhZ2U6IFN0YWdlO1xuICAgICAgZGVjaXNpb246IHVua25vd247XG4gICAgICB0b2tlbnNVc2VkOiBudW1iZXI7XG4gICAgICBjb3N0VXNkOiBudW1iZXI7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwibGFiZWxfYXBwbGllZFwiO1xuICAgICAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgICAgIGFkZDogc3RyaW5nW107XG4gICAgICByZW1vdmU6IHN0cmluZ1tdO1xuICAgIH1cbiAgfCB7XG4gICAgICAvLyBMb3ctbGV2ZWwgbXV0YXRpb24gcmVjb3JkIGVtaXR0ZWQgYnkgdGhlIEdpdEh1YiBhZGFwdGVyIGZvciBldmVyeVxuICAgICAgLy8gc2luZ2xlIGFkZExhYmVsIC8gcmVtb3ZlTGFiZWwgQVBJIGNhbGwuIGxhYmVsX2FwcGxpZWQgKGFib3ZlKSBjYXJyaWVzXG4gICAgICAvLyB0aGUgb3JjaGVzdHJhdG9yJ3MgSU5URU5UIGZvciBhIHRyYW5zaXRpb247IGxhYmVsX211dGF0ZWQgaXMgdGhlXG4gICAgICAvLyBncm91bmQtdHJ1dGggQVBJIHdyaXRlLiBCb3RoIGFyZSBlbWl0dGVkOiB0aGUgaGlnaC1sZXZlbCBldmVudCB0ZWxsc1xuICAgICAgLy8geW91IHdoYXQgdGhlIHN0YWdlIHdhbnRlZDsgdGhlIGxvdy1sZXZlbCBldmVudHMgdGVsbCB5b3Ugd2hhdFxuICAgICAgLy8gYWN0dWFsbHkgaGl0IEdpdEh1YiAoaW5jbHVkaW5nIG11dGV4IGFjcXVpcmUvcmVsZWFzZSBhbmQgYW55IHJldHJpZXMpLlxuICAgICAgdHlwZTogXCJsYWJlbF9tdXRhdGVkXCI7XG4gICAgICBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICAgICAgb3A6IFwiYWRkXCIgfCBcInJlbW92ZVwiO1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9XG4gIHwgeyB0eXBlOiBcInByX29wZW5lZFwiOyBzdGFnZTogU3RhZ2U7IHByTnVtYmVyOiBudW1iZXIgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwicmV2aWV3X3Bvc3RlZFwiO1xuICAgICAgcHJOdW1iZXI6IG51bWJlcjtcbiAgICAgIHZlcmRpY3Q6IFwiYXBwcm92ZVwiIHwgXCJyZXF1ZXN0X2NoYW5nZXNcIjtcbiAgICAgIGl0ZXJhdGlvbjogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInN0YWdlX2ZhaWxlZFwiO1xuICAgICAgc3RhZ2U6IFN0YWdlO1xuICAgICAgZXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBraW5kOiBzdHJpbmcgfTtcbiAgICB9XG4gIHwgeyB0eXBlOiBcImJ1ZGdldF9leGNlZWRlZFwiOyBzdGFnZTogU3RhZ2U7IHNwZW50VXNkOiBudW1iZXI7IGNhcFVzZDogbnVtYmVyIH1cbiAgfCB7IHR5cGU6IFwibGFiZWxzX2Jvb3RzdHJhcHBlZFwiOyBjcmVhdGVkOiBzdHJpbmdbXSB9O1xuXG5leHBvcnQgdHlwZSBBdWRpdEVtaXR0ZXIgPSAoZXZlbnQ6IEF1ZGl0RXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXVkaXRFbWl0dGVyQXJncyB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHNpbms/OiAobGluZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXVkaXRFbWl0dGVyKGFyZ3M6IENyZWF0ZUF1ZGl0RW1pdHRlckFyZ3MpOiBBdWRpdEVtaXR0ZXIge1xuICBjb25zdCBzaW5rID0gYXJncy5zaW5rID8/ICgobGluZSkgPT4gcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7bGluZX1cXG5gKSk7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgdHM6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHJ1bklkOiBhcmdzLnJ1bklkLFxuICAgICAgLi4uZXZlbnQsXG4gICAgfTtcbiAgICBzaW5rKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgfTtcbn1cblxuLy8gQ29tYmluZSBtdWx0aXBsZSBlbWl0dGVycyBpbnRvIG9uZSAtLSB1c2VmdWwgZm9yIGZhbm5pbmcgYSBzaW5nbGUgc3RyZWFtIG91dFxuLy8gdG8gSlNPTkwgc3Rkb3V0IGFuZCBhIHN0ZXAtc3VtbWFyeSBtYXJrZG93biBtaXJyb3IuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUVtaXR0ZXJzKC4uLmVtaXR0ZXJzOiBBdWRpdEVtaXR0ZXJbXSk6IEF1ZGl0RW1pdHRlciB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBmb3IgKGNvbnN0IGUgb2YgZW1pdHRlcnMpIGUoZXZlbnQpO1xuICB9O1xufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB0eXBlIHsgQXVkaXRFbWl0dGVyLCBBdWRpdEV2ZW50IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5cbmNvbnN0IE1JUlJPUkVEID0gbmV3IFNldDxBdWRpdEV2ZW50W1widHlwZVwiXT4oW1xuICBcInN0YWdlX3N0YXJ0ZWRcIixcbiAgXCJzdGFnZV9kZWNpZGVkXCIsXG4gIFwic3RhZ2VfZmFpbGVkXCIsXG4gIFwibGFiZWxfYXBwbGllZFwiLFxuICBcInByX29wZW5lZFwiLFxuICBcInJldmlld19wb3N0ZWRcIixcbiAgXCJidWRnZXRfZXhjZWVkZWRcIixcbl0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU1pcnJvckFyZ3Mge1xuICBwYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RlcFN1bW1hcnlNaXJyb3IoXG4gIGFyZ3M6IENyZWF0ZU1pcnJvckFyZ3MgPSB7fSxcbik6IEF1ZGl0RW1pdHRlciB7XG4gIGNvbnN0IHBhdGggPSBhcmdzLnBhdGggPz8gcHJvY2Vzcy5lbnYuR0lUSFVCX1NURVBfU1VNTUFSWTtcbiAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgIGlmICghcGF0aCkgcmV0dXJuO1xuICAgIGlmICghTUlSUk9SRUQuaGFzKGV2ZW50LnR5cGUpKSByZXR1cm47XG4gICAgYXBwZW5kRmlsZVN5bmMocGF0aCwgYCR7cmVuZGVyUm93KGV2ZW50KX1cXG5gKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyUm93KGU6IEF1ZGl0RXZlbnQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGUudHlwZSkge1xuICAgIGNhc2UgXCJzdGFnZV9zdGFydGVkXCI6XG4gICAgICByZXR1cm4gYC0gKioke2Uuc3RhZ2V9Kiogc3RhcnRlZCB3aXRoIG1vZGVsIFxcYCR7ZS5tb2RlbH1cXGBgO1xuICAgIGNhc2UgXCJzdGFnZV9kZWNpZGVkXCI6XG4gICAgICByZXR1cm4gYC0gKioke2Uuc3RhZ2V9KiogZGVjaWRlZCAodG9rZW5zOiAke2UudG9rZW5zVXNlZH0sIGNvc3Q6ICQke2UuY29zdFVzZC50b0ZpeGVkKDQpfSlgO1xuICAgIGNhc2UgXCJzdGFnZV9mYWlsZWRcIjpcbiAgICAgIHJldHVybiBgLSAqKiR7ZS5zdGFnZX0qKiBmYWlsZWQ6IFxcYCR7ZS5lcnJvci5raW5kfVxcYDogJHtlLmVycm9yLm1lc3NhZ2V9YDtcbiAgICBjYXNlIFwibGFiZWxfYXBwbGllZFwiOlxuICAgICAgcmV0dXJuIGAtIGxhYmVscyBvbiAjJHtlLmlzc3VlTnVtYmVyfTogK1ske2UuYWRkLmpvaW4oXCIsIFwiKX1dIC1bJHtlLnJlbW92ZS5qb2luKFwiLCBcIil9XWA7XG4gICAgY2FzZSBcInByX29wZW5lZFwiOlxuICAgICAgcmV0dXJuIGAtIFBSIG9wZW5lZCBmb3IgKioke2Uuc3RhZ2V9Kiogc3RhZ2U6ICMke2UucHJOdW1iZXJ9YDtcbiAgICBjYXNlIFwicmV2aWV3X3Bvc3RlZFwiOlxuICAgICAgcmV0dXJuIGAtIHJldmlldyAjJHtlLml0ZXJhdGlvbn0gb24gUFIgIyR7ZS5wck51bWJlcn06ICoqJHtlLnZlcmRpY3R9KipgO1xuICAgIGNhc2UgXCJidWRnZXRfZXhjZWVkZWRcIjpcbiAgICAgIHJldHVybiBgLSBidWRnZXQgZXhjZWVkZWQgaW4gKioke2Uuc3RhZ2V9Kio6ICQke2Uuc3BlbnRVc2QudG9GaXhlZCgyKX0gLyAkJHtlLmNhcFVzZC50b0ZpeGVkKDIpfWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBgLSAkeyhlIGFzIHsgdHlwZTogc3RyaW5nIH0pLnR5cGV9YDtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSBcIi4vaW5wdXRzLmpzXCI7XG5cbi8vIEFsbG93bGlzdCBvZiBob3N0IGVudiB2YXJzIHRvIGZvcndhcmQgdG8gdGhlIENsYXVkZSBBZ2VudCBTREsuIFRoZSBTREsgdXNlc1xuLy8gdGhpcyBlbnYgd2hlbiBzaGVsbGluZyBvdXQgdG8gdG9vbHMgKGdpdCwgYmFzaCkgZHVyaW5nIHRoZSBpbXBsZW1lbnQgc3RhZ2U7XG4vLyBvdGhlciBzdGFnZXMgcnVuIHRoZWlyIHRvb2xzIGluLXByb2Nlc3MgdmlhIHRoZSBzaG9wZmxvb3IgTUNQIHNlcnZlciBhbmRcbi8vIHRvdWNoIHRoZSBob3N0IGVudiBtaW5pbWFsbHkuIFNwcmVhZGluZyB0aGUgZnVsbCBHaXRIdWIgQWN0aW9ucyBlbnZpcm9ubWVudFxuLy8gd291bGQgbGVhayBJTlBVVF8qIHNlY3JldHMsIEFDVElPTlNfUlVOVElNRV9UT0tFTiwgYW5kIEdJVEhVQl9UT0tFTiBpbnRvXG4vLyBldmVyeSBzdWJwcm9jZXNzIHRoZSBTREsgc3Bhd25zIFx1MjAxNCBrZWVwIHRoaXMgbGlzdCB0aWdodCBhbmQgZ3JvdyBpdCBvblxuLy8gZGVtYW5kIHdoZW4gYSBzdGFnZSBhY3R1YWxseSBuZWVkcyBzb21ldGhpbmcuXG5leHBvcnQgY29uc3QgUEFTU1RIUk9VR0hfS0VZUyA9IFtcbiAgXCJQQVRIXCIsXG4gIFwiSE9NRVwiLFxuICBcIkJBU0hcIixcbiAgXCJUTVBESVJcIixcbiAgXCJVU0VSXCIsXG4gIFwiVEVSTVwiLFxuICBcIkVESVRPUlwiLFxuICBcIkxBTkdcIixcbiAgXCJQQUdFUlwiLFxuICBcIkxFU1NcIixcbiAgXCJNQU5QQVRIXCIsXG5dIGFzIGNvbnN0O1xuXG4vLyBDb3B5IHRoZSBhbGxvd2xpc3RlZCBob3N0IHZhcnMgKHRob3NlIHRoYXQgYXJlIHNldCBhbmQgbm9uLWVtcHR5KSBpbnRvIGFcbi8vIGZyZXNoIHJlY29yZC4gU2hhcmVkIGJ5IGJvdGggYWdlbnQgYWRhcHRlcnMnIGVudiBidWlsZGVycyBzbyB0aGUgYWxsb3dsaXN0XG4vLyBoYXMgYSBzaW5nbGUgc291cmNlIG9mIHRydXRoIFx1MjAxNCB0aGUgQ2xhdWRlIGFuZCBDb2RleCBzdWJwcm9jZXNzIGVudmlyb25tZW50c1xuLy8gbXVzdCBub3Qgc2lsZW50bHkgZGl2ZXJnZSB3aGVuIGEga2V5IGlzIGFkZGVkIG9yIHJlbW92ZWQuXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFBhc3N0aHJvdWdoRW52KFxuICBob3N0RW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52LFxuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IGsgb2YgUEFTU1RIUk9VR0hfS0VZUykge1xuICAgIGNvbnN0IHYgPSBob3N0RW52W2tdO1xuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiAmJiB2Lmxlbmd0aCA+IDApIGVudltrXSA9IHY7XG4gIH1cbiAgcmV0dXJuIGVudjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEFnZW50RW52T3B0aW9ucyB7XG4gIGFudGhyb3BpY0FwaUtleTogc3RyaW5nO1xuICBjbGF1ZGVDb2RlT0F1dGhUb2tlbjogc3RyaW5nO1xuICBob3N0RW52PzogTm9kZUpTLlByb2Nlc3NFbnY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFnZW50RW52KFxuICBvcHRzOiBCdWlsZEFnZW50RW52T3B0aW9ucyxcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnYgPSBjb2xsZWN0UGFzc3Rocm91Z2hFbnYob3B0cy5ob3N0RW52ID8/IHByb2Nlc3MuZW52KTtcbiAgLy8gT0F1dGggdG9rZW4gd2lucyB3aGVuIGJvdGggYXJlIHNldC4gU2V0dGluZyBib3RoIGNvbmZ1c2VzIHRoZSBTREsncyBhdXRoXG4gIC8vIHJlc29sdXRpb247IHRoZSBab2QgcmVmaW5lbWVudCB1cHN0cmVhbSBvbmx5IGVuZm9yY2VzIFwiYXQgbGVhc3Qgb25lLlwiXG4gIGlmIChvcHRzLmNsYXVkZUNvZGVPQXV0aFRva2VuKSB7XG4gICAgZW52LkNMQVVERV9DT0RFX09BVVRIX1RPS0VOID0gb3B0cy5jbGF1ZGVDb2RlT0F1dGhUb2tlbjtcbiAgfSBlbHNlIGlmIChvcHRzLmFudGhyb3BpY0FwaUtleSkge1xuICAgIGVudi5BTlRIUk9QSUNfQVBJX0tFWSA9IG9wdHMuYW50aHJvcGljQXBpS2V5O1xuICB9XG4gIHJldHVybiBlbnY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFnZW50RW52RnJvbUNvbmZpZyhcbiAgY29uZmlnOiBDb25maWcsXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIGJ1aWxkQWdlbnRFbnYoe1xuICAgIGFudGhyb3BpY0FwaUtleTogY29uZmlnLmFudGhyb3BpY0FwaUtleSxcbiAgICBjbGF1ZGVDb2RlT0F1dGhUb2tlbjogY29uZmlnLmNsYXVkZUNvZGVPQXV0aFRva2VuLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBta2R0ZW1wU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ29kZXhBZGFwdGVyT3B0aW9ucyB9IGZyb20gXCIuLi9hZ2VudHMvY29kZXguanNcIjtcbmltcG9ydCB7IGNvbGxlY3RQYXNzdGhyb3VnaEVudiB9IGZyb20gXCIuL2FnZW50LWVudi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi9pbnB1dHMuanNcIjtcblxuLy8gUmVzb2x2ZXMgQ29kZXggYXV0aCArIGVudiArIHNhbmRib3ggZGVmYXVsdHMgb25jZSBhdCBzdGFydHVwLCBtaXJyb3Jpbmdcbi8vIGJ1aWxkQWdlbnRFbnZGcm9tQ29uZmlnIGZvciB0aGUgQ2xhdWRlIGFkYXB0ZXIuIEF1dGggcmVzb2x1dGlvbiBvcmRlclxuLy8gKHNyYy9hZ2VudHMvY29kZXgudHMgZGVzaWduIHNlY3Rpb24gNik6XG4vLyAgIDEuIG9wZW5haV9hcGlfa2V5ICAtPiBhcGlLZXkgKGZvcndhcmRlZCBhcyBDT0RFWF9BUElfS0VZIGJ5IHRoZSBTREspLlxuLy8gICAyLiBjb2RleF9hdXRoX2pzb24gLT4gdmVyYmF0aW0gY29udGVudHMgd3JpdHRlbiB0byBhIHJ1bi1zY29wZWQgdGVtcFxuLy8gICAgICBDT0RFWF9IT01FL2F1dGguanNvbiAoY2htb2QgNjAwKSwgY2xpX2F1dGhfY3JlZGVudGlhbHNfc3RvcmU9XCJmaWxlXCIuXG4vLyAgICAgIFN0YXRlbGVzczogcmVzZWVkZWQgZWFjaCBydW4sIGFueSBpbi1ydW4gcmVmcmVzaCBkaXNjYXJkZWQuXG4vLyAgIDMuIG5laXRoZXIgICAgICAgICAtPiByZXR1cm4gb3B0aW9ucyB3aXRob3V0IGF1dGg7IHRoZSBhZGFwdGVyIHJhaXNlcyBhXG4vLyAgICAgIGNsZWFyIGVycm9yIG9uIGZpcnN0IHJ1blN0YWdlIChjb25zdHJ1Y3Rpb24gbXVzdCBub3QgdGhyb3cgXHUyMDE0IHNlZSBiZWxvdykuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb2RleE9wdGlvbnMoY29uZmlnOiBDb25maWcpOiBDb2RleEFkYXB0ZXJPcHRpb25zIHtcbiAgY29uc3QgZW52ID0gY29sbGVjdFBhc3N0aHJvdWdoRW52KCk7XG4gIGNvbnN0IGNvZGV4Q29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBsZXQgYXBpS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGNvbmZpZy5vcGVuYWlBcGlLZXkpIHtcbiAgICBhcGlLZXkgPSBjb25maWcub3BlbmFpQXBpS2V5O1xuICB9IGVsc2UgaWYgKGNvbmZpZy5jb2RleEF1dGhKc29uKSB7XG4gICAgY29uc3QgY29kZXhIb21lID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgXCJjb2RleC1ob21lLVwiKSk7XG4gICAgY29uc3QgYXV0aFBhdGggPSBqb2luKGNvZGV4SG9tZSwgXCJhdXRoLmpzb25cIik7XG4gICAgLy8gbWtkdGVtcFN5bmMgbWFrZXMgYSBmcmVzaCBkaXIsIHNvIGF1dGhQYXRoIG5ldmVyIHByZS1leGlzdHMgYW5kIHRoZVxuICAgIC8vIGNyZWF0ZS10aW1lIG1vZGUgaXMgaG9ub3JlZCBhdG9taWNhbGx5IChubyB3b3JsZC1yZWFkYWJsZSB3aW5kb3cpLiAwbzYwMFxuICAgIC8vIHN1cnZpdmVzIGFueSBzYW5lIHVtYXNrIHNpbmNlIHVtYXNrIG9ubHkgY2xlYXJzIGJpdHMgYW5kIDBvNjAwIGhhcyBub25lXG4gICAgLy8gdG8gY2xlYXIsIHNvIGEgZm9sbG93LXVwIGNobW9kIHdvdWxkIGJlIHJlZHVuZGFudC5cbiAgICB3cml0ZUZpbGVTeW5jKGF1dGhQYXRoLCBjb25maWcuY29kZXhBdXRoSnNvbiwgeyBtb2RlOiAwbzYwMCB9KTtcbiAgICBlbnYuQ09ERVhfSE9NRSA9IGNvZGV4SG9tZTtcbiAgICBjb2RleENvbmZpZy5jbGlfYXV0aF9jcmVkZW50aWFsc19zdG9yZSA9IFwiZmlsZVwiO1xuICB9XG4gIC8vIFdoZW4gbmVpdGhlciBjcmVkZW50aWFsIGlzIHNldCwgcmV0dXJuIG9wdGlvbnMgd2l0aG91dCBhdXRoLiBUaGUgbWlzc2luZy1cbiAgLy8gY3JlZGVudGlhbCBmYWlsdXJlIGlzIHJhaXNlZCBieSB0aGUgYWRhcHRlciBvbiBmaXJzdCBydW5TdGFnZSAoc2VlXG4gIC8vIENvZGV4QWdlbnRBZGFwdGVyKSwgbm90IGhlcmU6IGNvbnN0cnVjdGlvbiBtdXN0IG5vdCB0aHJvdyBiZWNhdXNlIGVudHJ5LnRzXG4gIC8vIGJ1aWxkcyB0aGUgYWRhcHRlciB1bmNvbmRpdGlvbmFsbHksIGluY2x1ZGluZyBmb3IgYG1vZGU6IHJlc29sdmVgIGpvYnMgdGhhdFxuICAvLyBuZXZlciBydW4gYW4gYWdlbnQuXG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oYXBpS2V5ICE9PSB1bmRlZmluZWQgPyB7IGFwaUtleSB9IDoge30pLFxuICAgIGVudixcbiAgICBjb25maWc6IGNvZGV4Q29uZmlnLFxuICAgIHNhbmRib3hNb2RlOiBjb25maWcuY29kZXhTYW5kYm94TW9kZSxcbiAgICBhcHByb3ZhbFBvbGljeTogY29uZmlnLmNvZGV4QXBwcm92YWxQb2xpY3ksXG4gICAgbmV0d29ya0FjY2Vzc0VuYWJsZWQ6IGNvbmZpZy5jb2RleE5ldHdvcmtBY2Nlc3MsXG4gICAgc2tpcEdpdFJlcG9DaGVjazogY29uZmlnLmNvZGV4U2tpcEdpdFJlcG9DaGVjayxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBudW0gPSAobWluID0gMCkgPT5cbiAgei5zdHJpbmcoKS50cmFuc2Zvcm0oKHMsIGN0eCkgPT4ge1xuICAgIGNvbnN0IG4gPSBOdW1iZXIocyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobikgfHwgbiA8IG1pbikge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgbWVzc2FnZTogYGV4cGVjdGVkIG51bWJlciA+PSAke21pbn0sIGdvdCAke3N9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHouTkVWRVI7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9KTtcblxuY29uc3QgU1RBR0VfTkFNRVMgPSBbXCJ0cmlhZ2VcIiwgXCJzcGVjXCIsIFwicGxhblwiLCBcImltcGxlbWVudFwiLCBcInJldmlld1wiXSBhcyBjb25zdDtcbnR5cGUgU3RhZ2VOYW1lID0gKHR5cGVvZiBTVEFHRV9OQU1FUylbbnVtYmVyXTtcblxuLy8gUHJvdmlkZXItYXdhcmUgZGVmYXVsdCBtb2RlbCBpZHMuIEFjdGlvbiBpbnB1dHMgbGVmdCB1bnNldCBhcnJpdmUgYXMgXCJcIiAodGhlXG4vLyBhY3Rpb24ueW1sIG1vZGVsIGRlZmF1bHRzIGFyZSBibGFuayksIHNvIHBhcnNlQ29uZmlnIHN1YnN0aXR1dGVzIHRoZSBkZWZhdWx0XG4vLyBmb3IgdGhlIHNlbGVjdGVkIGFnZW50X3Byb3ZpZGVyLiBDbGF1ZGUga2VlcHMgdGhlIGNoZWFwZXIgdHJpYWdlIHRpZXI7IENvZGV4XG4vLyB1c2VzIG9uZSBtb2RlbCBhY3Jvc3MgZXZlcnkgc3RhZ2UuXG50eXBlIE1vZGVsS2V5ID0gXCJ0cmlhZ2VcIiB8IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBcImltcGxcIiB8IFwicmV2aWV3XCI7XG5jb25zdCBERUZBVUxUX01PREVMUzogUmVjb3JkPFwiY2xhdWRlXCIgfCBcImNvZGV4XCIsIFJlY29yZDxNb2RlbEtleSwgc3RyaW5nPj4gPSB7XG4gIGNsYXVkZToge1xuICAgIHRyaWFnZTogXCJjbGF1ZGUtc29ubmV0LTQtNlwiLFxuICAgIHNwZWM6IFwiY2xhdWRlLW9wdXMtNC04WzFtXVwiLFxuICAgIHBsYW46IFwiY2xhdWRlLW9wdXMtNC04WzFtXVwiLFxuICAgIGltcGw6IFwiY2xhdWRlLW9wdXMtNC04WzFtXVwiLFxuICAgIHJldmlldzogXCJjbGF1ZGUtb3B1cy00LThbMW1dXCIsXG4gIH0sXG4gIGNvZGV4OiB7XG4gICAgdHJpYWdlOiBcImdwdC01LjVcIixcbiAgICBzcGVjOiBcImdwdC01LjVcIixcbiAgICBwbGFuOiBcImdwdC01LjVcIixcbiAgICBpbXBsOiBcImdwdC01LjVcIixcbiAgICByZXZpZXc6IFwiZ3B0LTUuNVwiLFxuICB9LFxufTtcblxuY29uc3QgRUZGT1JUX0xFVkVMUyA9IFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIiwgXCJ4aGlnaFwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9ICh0eXBlb2YgRUZGT1JUX0xFVkVMUylbbnVtYmVyXTtcbmNvbnN0IGVmZm9ydCA9ICgpID0+IHouZW51bShFRkZPUlRfTEVWRUxTKS5kZWZhdWx0KFwiaGlnaFwiKTtcblxuY29uc3QgU0FOREJPWF9NT0RFUyA9IFtcbiAgXCJyZWFkLW9ubHlcIixcbiAgXCJ3b3Jrc3BhY2Utd3JpdGVcIixcbiAgXCJkYW5nZXItZnVsbC1hY2Nlc3NcIixcbl0gYXMgY29uc3Q7XG5jb25zdCBBUFBST1ZBTF9QT0xJQ0lFUyA9IFtcbiAgXCJuZXZlclwiLFxuICBcIm9uLXJlcXVlc3RcIixcbiAgXCJvbi1mYWlsdXJlXCIsXG4gIFwidW50cnVzdGVkXCIsXG5dIGFzIGNvbnN0O1xuXG4vLyBBY3Rpb24gaW5wdXRzIGFycml2ZSBhcyBzdHJpbmdzLiBWYWxpZGF0ZSBib29sZWFuIHRvZ2dsZXMgc3RyaWN0bHkgYWdhaW5zdFxuLy8gZXhhY3RseSBcInRydWVcIi9cImZhbHNlXCIgKGxpa2UgdGhlIGVudW0gaW5wdXRzKSBzbyBhIHR5cG8gb24gYSBzZWN1cml0eS1cbi8vIHJlbGV2YW50IHN3aXRjaCBzdWNoIGFzIGNvZGV4X25ldHdvcmtfYWNjZXNzIGlzIHJlamVjdGVkIGxvdWRseSByYXRoZXIgdGhhblxuLy8gc2lsZW50bHkgY29lcmNlZCB0byBhIGZhaWwtb3BlbiBkZWZhdWx0LlxuY29uc3Qgc3RyaWN0Qm9vbCA9IChkZWY6IFwidHJ1ZVwiIHwgXCJmYWxzZVwiKSA9PlxuICB6XG4gICAgLmVudW0oW1widHJ1ZVwiLCBcImZhbHNlXCJdKVxuICAgIC5kZWZhdWx0KGRlZilcbiAgICAudHJhbnNmb3JtKChzKSA9PiBzID09PSBcInRydWVcIik7XG5cbi8vIE9wdGlvbmFsIHBvc2l0aXZlLWludGVnZXIgaW5wdXQuIEVtcHR5IHN0cmluZyBtZWFucyB1bnNldCAobm8gY2FwKS5cbmNvbnN0IG9wdGlvbmFsVHVybnMgPSAoKSA9PlxuICB6XG4gICAgLnN0cmluZygpXG4gICAgLmRlZmF1bHQoXCJcIilcbiAgICAudHJhbnNmb3JtKChzLCBjdHgpID0+IHtcbiAgICAgIGlmIChzID09PSBcIlwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgbiA9IE51bWJlcihzKTtcbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihuKSB8fCBuIDwgMSkge1xuICAgICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgbWVzc2FnZTogYGV4cGVjdGVkIHBvc2l0aXZlIGludGVnZXIsIGdvdCAke3N9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB6Lk5FVkVSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG47XG4gICAgfSk7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhZ2VzTGlzdChyYXc6IHN0cmluZyk6IFN0YWdlTmFtZVtdIHtcbiAgaWYgKCFyYXcudHJpbSgpKSByZXR1cm4gW107XG4gIGNvbnN0IHBhcnRzID0gcmF3XG4gICAgLnNwbGl0KFwiLFwiKVxuICAgIC5tYXAoKHMpID0+IHMudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcCBvZiBwYXJ0cykge1xuICAgIGlmICghKFNUQUdFX05BTUVTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgaW52YWxpZCBzdGFnZSBuYW1lIGluIHN0YWdlczogJHtwfSAodmFsaWQ6ICR7U1RBR0VfTkFNRVMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnRzIGFzIFN0YWdlTmFtZVtdO1xufVxuXG5jb25zdCBSYXdJbnB1dHMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGFudGhyb3BpY19hcGlfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBjbGF1ZGVfY29kZV9vYXV0aF90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgYWdlbnRfcHJvdmlkZXI6IHouZW51bShbXCJjbGF1ZGVcIiwgXCJjb2RleFwiXSkuZGVmYXVsdChcImNsYXVkZVwiKSxcbiAgICBvcGVuYWlfYXBpX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgY29kZXhfYXV0aF9qc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBjb2RleF9zYW5kYm94X21vZGU6IHouZW51bShTQU5EQk9YX01PREVTKS5kZWZhdWx0KFwid29ya3NwYWNlLXdyaXRlXCIpLFxuICAgIGNvZGV4X2FwcHJvdmFsX3BvbGljeTogei5lbnVtKEFQUFJPVkFMX1BPTElDSUVTKS5kZWZhdWx0KFwibmV2ZXJcIiksXG4gICAgY29kZXhfbmV0d29ya19hY2Nlc3M6IHN0cmljdEJvb2woXCJ0cnVlXCIpLFxuICAgIGNvZGV4X3NraXBfZ2l0X3JlcG9fY2hlY2s6IHN0cmljdEJvb2woXCJ0cnVlXCIpLFxuICAgIGdpdGh1Yl9hcHBfY2xpZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBnaXRodWJfYXBwX3ByaXZhdGVfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBnaXRodWJfYXBwX3Jldmlld19jbGllbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZWZhdWx0KFwiXCIpLFxuICAgIGdpdGh1Yl9hcHBfcmV2aWV3X3ByaXZhdGVfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBzc2hfc2lnbmluZ19rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZWZhdWx0KFwiXCIpLFxuICAgIHRyaWdnZXJfbGFiZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICBtYXhfcmV2aWV3X2l0ZXJhdGlvbnM6IG51bSgxKS5kZWZhdWx0KFwiM1wiKSxcbiAgICAvLyBCbGFuayBieSBkZWZhdWx0OyBwYXJzZUNvbmZpZyBmaWxscyBpbiB0aGUgcHJvdmlkZXItYXdhcmUgZGVmYXVsdFxuICAgIC8vIChERUZBVUxUX01PREVMUykgd2hlbiB0aGUgaW5wdXQgaXMgZW1wdHkuIEFuIGV4cGxpY2l0IHZhbHVlIGFsd2F5cyB3aW5zLlxuICAgIHRyaWFnZV9tb2RlbDogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICAgIHNwZWNfbW9kZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICBwbGFuX21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgaW1wbF9tb2RlbDogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICAgIHJldmlld19jb21wbGlhbmNlX21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgcmV2aWV3X2J1Z3NfbW9kZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICByZXZpZXdfc2VjdXJpdHlfbW9kZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICByZXZpZXdfc21lbGxzX21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgdHJpYWdlX2VmZm9ydDogZWZmb3J0KCksXG4gICAgc3BlY19lZmZvcnQ6IGVmZm9ydCgpLFxuICAgIHBsYW5fZWZmb3J0OiBlZmZvcnQoKSxcbiAgICBpbXBsX2VmZm9ydDogZWZmb3J0KCksXG4gICAgcmV2aWV3X2NvbXBsaWFuY2VfZWZmb3J0OiBlZmZvcnQoKSxcbiAgICByZXZpZXdfYnVnc19lZmZvcnQ6IGVmZm9ydCgpLFxuICAgIHJldmlld19zZWN1cml0eV9lZmZvcnQ6IGVmZm9ydCgpLFxuICAgIHJldmlld19zbWVsbHNfZWZmb3J0OiBlZmZvcnQoKSxcbiAgICB0cmlhZ2VfbWF4X2J1ZGdldF91c2Q6IG51bSgwKS5kZWZhdWx0KFwiMC4yNVwiKSxcbiAgICBzcGVjX21heF9idWRnZXRfdXNkOiBudW0oMCkuZGVmYXVsdChcIjEuNTBcIiksXG4gICAgcGxhbl9tYXhfYnVkZ2V0X3VzZDogbnVtKDApLmRlZmF1bHQoXCIxLjUwXCIpLFxuICAgIGltcGxfbWF4X2J1ZGdldF91c2Q6IG51bSgwKS5kZWZhdWx0KFwiMi41MFwiKSxcbiAgICByZXZpZXdfbWF4X2J1ZGdldF91c2RfcGVyX2xlbnM6IG51bSgwKS5kZWZhdWx0KFwiMi4wMFwiKSxcbiAgICB0cmlhZ2VfbWF4X3R1cm5zOiBvcHRpb25hbFR1cm5zKCksXG4gICAgc3BlY19tYXhfdHVybnM6IG9wdGlvbmFsVHVybnMoKSxcbiAgICBwbGFuX21heF90dXJuczogb3B0aW9uYWxUdXJucygpLFxuICAgIGltcGxfbWF4X3R1cm5zOiBvcHRpb25hbFR1cm5zKCksXG4gICAgcmV2aWV3X21heF90dXJuc19wZXJfbGVuczogb3B0aW9uYWxUdXJucygpLFxuICAgIHRyaWFnZV90aW1lb3V0X21zOiBudW0oMTAwMCkuZGVmYXVsdChcIjMwMDAwMFwiKSxcbiAgICBzcGVjX3RpbWVvdXRfbXM6IG51bSgxMDAwKS5kZWZhdWx0KFwiMTIwMDAwMFwiKSxcbiAgICBwbGFuX3RpbWVvdXRfbXM6IG51bSgxMDAwKS5kZWZhdWx0KFwiMTIwMDAwMFwiKSxcbiAgICBpbXBsX3RpbWVvdXRfbXM6IG51bSgxMDAwKS5kZWZhdWx0KFwiMzYwMDAwMFwiKSxcbiAgICByZXZpZXdfdGltZW91dF9tc19wZXJfbGVuczogbnVtKDEwMDApLmRlZmF1bHQoXCI5MDAwMDBcIiksXG4gICAgbW9kZTogei5lbnVtKFtcImF1dG9cIiwgXCJyZXNvbHZlXCIsIFwiZXhlY3V0ZVwiXSkuZGVmYXVsdChcImF1dG9cIiksXG4gICAgc3RhZ2VzOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gIH0pXG4gIC5yZWZpbmUoXG4gICAgKHYpID0+XG4gICAgICB2LmFnZW50X3Byb3ZpZGVyID09PSBcImNvZGV4XCIgfHxcbiAgICAgIHYuYW50aHJvcGljX2FwaV9rZXkgfHxcbiAgICAgIHYuY2xhdWRlX2NvZGVfb2F1dGhfdG9rZW4sXG4gICAge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJvbmUgb2YgYW50aHJvcGljX2FwaV9rZXkgb3IgY2xhdWRlX2NvZGVfb2F1dGhfdG9rZW4gaXMgcmVxdWlyZWQgd2hlbiBhZ2VudF9wcm92aWRlcj1jbGF1ZGVcIixcbiAgICB9LFxuICApO1xuXG5leHBvcnQgdHlwZSBDb25maWcgPSBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUNvbmZpZz47XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbmZpZyhyYXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4pIHtcbiAgY29uc3QgY2xlYW5lZCA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhyYXcpLm1hcCgoW2ssIHZdKSA9PiBbaywgdiA/PyBcIlwiXSksXG4gICk7XG4gIGNvbnN0IHBhcnNlZCA9IFJhd0lucHV0cy5wYXJzZShjbGVhbmVkKTtcbiAgY29uc3QgbW9kZWxEZWZhdWx0cyA9IERFRkFVTFRfTU9ERUxTW3BhcnNlZC5hZ2VudF9wcm92aWRlcl07XG4gIGNvbnN0IG1vZGVsID0gKHZhbHVlOiBzdHJpbmcsIGtleTogTW9kZWxLZXkpID0+IHZhbHVlIHx8IG1vZGVsRGVmYXVsdHNba2V5XTtcbiAgcmV0dXJuIHtcbiAgICBhbnRocm9waWNBcGlLZXk6IHBhcnNlZC5hbnRocm9waWNfYXBpX2tleSxcbiAgICBjbGF1ZGVDb2RlT0F1dGhUb2tlbjogcGFyc2VkLmNsYXVkZV9jb2RlX29hdXRoX3Rva2VuLFxuICAgIGFnZW50UHJvdmlkZXI6IHBhcnNlZC5hZ2VudF9wcm92aWRlcixcbiAgICBvcGVuYWlBcGlLZXk6IHBhcnNlZC5vcGVuYWlfYXBpX2tleSxcbiAgICBjb2RleEF1dGhKc29uOiBwYXJzZWQuY29kZXhfYXV0aF9qc29uLFxuICAgIGNvZGV4U2FuZGJveE1vZGU6IHBhcnNlZC5jb2RleF9zYW5kYm94X21vZGUsXG4gICAgY29kZXhBcHByb3ZhbFBvbGljeTogcGFyc2VkLmNvZGV4X2FwcHJvdmFsX3BvbGljeSxcbiAgICBjb2RleE5ldHdvcmtBY2Nlc3M6IHBhcnNlZC5jb2RleF9uZXR3b3JrX2FjY2VzcyxcbiAgICBjb2RleFNraXBHaXRSZXBvQ2hlY2s6IHBhcnNlZC5jb2RleF9za2lwX2dpdF9yZXBvX2NoZWNrLFxuICAgIGdpdGh1YkFwcDpcbiAgICAgIHBhcnNlZC5naXRodWJfYXBwX2NsaWVudF9pZCAmJiBwYXJzZWQuZ2l0aHViX2FwcF9wcml2YXRlX2tleVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGNsaWVudElkOiBwYXJzZWQuZ2l0aHViX2FwcF9jbGllbnRfaWQsXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBwYXJzZWQuZ2l0aHViX2FwcF9wcml2YXRlX2tleSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICByZXZpZXdHaXRodWJBcHA6IHBhcnNlZC5naXRodWJfYXBwX3Jldmlld19jbGllbnRfaWRcbiAgICAgID8ge1xuICAgICAgICAgIGNsaWVudElkOiBwYXJzZWQuZ2l0aHViX2FwcF9yZXZpZXdfY2xpZW50X2lkLFxuICAgICAgICAgIHByaXZhdGVLZXk6IHBhcnNlZC5naXRodWJfYXBwX3Jldmlld19wcml2YXRlX2tleSxcbiAgICAgICAgfVxuICAgICAgOiBudWxsLFxuICAgIHNzaFNpZ25pbmdLZXk6IHBhcnNlZC5zc2hfc2lnbmluZ19rZXkgfHwgbnVsbCxcbiAgICB0cmlnZ2VyTGFiZWw6IHBhcnNlZC50cmlnZ2VyX2xhYmVsIHx8IG51bGwsXG4gICAgbWF4UmV2aWV3SXRlcmF0aW9uczogcGFyc2VkLm1heF9yZXZpZXdfaXRlcmF0aW9ucyxcbiAgICB0cmlhZ2VNb2RlbDogbW9kZWwocGFyc2VkLnRyaWFnZV9tb2RlbCwgXCJ0cmlhZ2VcIiksXG4gICAgc3BlY01vZGVsOiBtb2RlbChwYXJzZWQuc3BlY19tb2RlbCwgXCJzcGVjXCIpLFxuICAgIHBsYW5Nb2RlbDogbW9kZWwocGFyc2VkLnBsYW5fbW9kZWwsIFwicGxhblwiKSxcbiAgICBpbXBsTW9kZWw6IG1vZGVsKHBhcnNlZC5pbXBsX21vZGVsLCBcImltcGxcIiksXG4gICAgcmV2aWV3TW9kZWxzOiB7XG4gICAgICBjb21wbGlhbmNlOiBtb2RlbChwYXJzZWQucmV2aWV3X2NvbXBsaWFuY2VfbW9kZWwsIFwicmV2aWV3XCIpLFxuICAgICAgYnVnczogbW9kZWwocGFyc2VkLnJldmlld19idWdzX21vZGVsLCBcInJldmlld1wiKSxcbiAgICAgIHNlY3VyaXR5OiBtb2RlbChwYXJzZWQucmV2aWV3X3NlY3VyaXR5X21vZGVsLCBcInJldmlld1wiKSxcbiAgICAgIHNtZWxsczogbW9kZWwocGFyc2VkLnJldmlld19zbWVsbHNfbW9kZWwsIFwicmV2aWV3XCIpLFxuICAgIH0sXG4gICAgdHJpYWdlRWZmb3J0OiBwYXJzZWQudHJpYWdlX2VmZm9ydCxcbiAgICBzcGVjRWZmb3J0OiBwYXJzZWQuc3BlY19lZmZvcnQsXG4gICAgcGxhbkVmZm9ydDogcGFyc2VkLnBsYW5fZWZmb3J0LFxuICAgIGltcGxFZmZvcnQ6IHBhcnNlZC5pbXBsX2VmZm9ydCxcbiAgICByZXZpZXdFZmZvcnRzOiB7XG4gICAgICBjb21wbGlhbmNlOiBwYXJzZWQucmV2aWV3X2NvbXBsaWFuY2VfZWZmb3J0LFxuICAgICAgYnVnczogcGFyc2VkLnJldmlld19idWdzX2VmZm9ydCxcbiAgICAgIHNlY3VyaXR5OiBwYXJzZWQucmV2aWV3X3NlY3VyaXR5X2VmZm9ydCxcbiAgICAgIHNtZWxsczogcGFyc2VkLnJldmlld19zbWVsbHNfZWZmb3J0LFxuICAgIH0sXG4gICAgdHJpYWdlTWF4QnVkZ2V0VXNkOiBwYXJzZWQudHJpYWdlX21heF9idWRnZXRfdXNkLFxuICAgIHNwZWNNYXhCdWRnZXRVc2Q6IHBhcnNlZC5zcGVjX21heF9idWRnZXRfdXNkLFxuICAgIHBsYW5NYXhCdWRnZXRVc2Q6IHBhcnNlZC5wbGFuX21heF9idWRnZXRfdXNkLFxuICAgIGltcGxNYXhCdWRnZXRVc2Q6IHBhcnNlZC5pbXBsX21heF9idWRnZXRfdXNkLFxuICAgIHJldmlld01heEJ1ZGdldFVzZFBlckxlbnM6IHBhcnNlZC5yZXZpZXdfbWF4X2J1ZGdldF91c2RfcGVyX2xlbnMsXG4gICAgdHJpYWdlTWF4VHVybnM6IHBhcnNlZC50cmlhZ2VfbWF4X3R1cm5zLFxuICAgIHNwZWNNYXhUdXJuczogcGFyc2VkLnNwZWNfbWF4X3R1cm5zLFxuICAgIHBsYW5NYXhUdXJuczogcGFyc2VkLnBsYW5fbWF4X3R1cm5zLFxuICAgIGltcGxNYXhUdXJuczogcGFyc2VkLmltcGxfbWF4X3R1cm5zLFxuICAgIHJldmlld01heFR1cm5zUGVyTGVuczogcGFyc2VkLnJldmlld19tYXhfdHVybnNfcGVyX2xlbnMsXG4gICAgdHJpYWdlVGltZW91dE1zOiBwYXJzZWQudHJpYWdlX3RpbWVvdXRfbXMsXG4gICAgc3BlY1RpbWVvdXRNczogcGFyc2VkLnNwZWNfdGltZW91dF9tcyxcbiAgICBwbGFuVGltZW91dE1zOiBwYXJzZWQucGxhbl90aW1lb3V0X21zLFxuICAgIGltcGxUaW1lb3V0TXM6IHBhcnNlZC5pbXBsX3RpbWVvdXRfbXMsXG4gICAgcmV2aWV3VGltZW91dE1zUGVyTGVuczogcGFyc2VkLnJldmlld190aW1lb3V0X21zX3Blcl9sZW5zLFxuICAgIG1vZGU6IHBhcnNlZC5tb2RlLFxuICAgIHN0YWdlczogcGFyc2VTdGFnZXNMaXN0KHBhcnNlZC5zdGFnZXMpLFxuICB9IGFzIGNvbnN0O1xufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgY2htb2RTeW5jLCBta2R0ZW1wU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUFwcEF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1hcHBcIjtcbmltcG9ydCB7IE9jdG9raXQgfSBmcm9tIFwiQG9jdG9raXQvcmVzdFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRoU3BlYyB9IGZyb20gXCIuLi9naXRodWIvYXBwLXRva2VuLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2l0SWRlbnRpdHkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG59XG5cbmNvbnN0IEZBTExCQUNLX0lERU5USVRZOiBHaXRJZGVudGl0eSA9IHtcbiAgbmFtZTogXCJzaG9wZmxvb3JbYm90XVwiLFxuICBlbWFpbDogXCJzaG9wZmxvb3JAdXNlcnMubm9yZXBseS5naXRodWIuY29tXCIsXG59O1xuXG4vLyBHaXRIdWIgcHVibGlzaGVzIDQxODk4MjgyIGFzIHRoZSBjYW5vbmljYWwgdXNlciBpZCBmb3IgdGhlIGdpdGh1Yi1hY3Rpb25zXG4vLyBib3QgYWNjb3VudC4gVXNlZCBpbiB0aGUgZGVmYXVsdCBlbWFpbCBmb3JtYXQgZm9yIGNvbW1pdHMgYXV0aG9yZWQgdmlhIHRoZVxuLy8gd29ya2Zsb3cncyBidWlsdC1pbiBHSVRIVUJfVE9LRU4uXG5jb25zdCBHSVRIVUJfQUNUSU9OU19JREVOVElUWTogR2l0SWRlbnRpdHkgPSB7XG4gIG5hbWU6IFwiZ2l0aHViLWFjdGlvbnNbYm90XVwiLFxuICBlbWFpbDogXCI0MTg5ODI4MitnaXRodWItYWN0aW9uc1tib3RdQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbVwiLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlQm90SWRlbnRpdHlEZXBzIHtcbiAgYXBwQXV0aEZhY3Rvcnk/OiB0eXBlb2YgY3JlYXRlQXBwQXV0aDtcbiAgZmV0Y2hBcHBTbHVnPzogKGp3dDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGZldGNoQm90VXNlcklkPzogKHNsdWc6IHN0cmluZykgPT4gUHJvbWlzZTxudW1iZXI+O1xufVxuXG4vLyBSZXNvbHZlcyB0aGUgY29tbWl0IGlkZW50aXR5IFNob3BmbG9vciBzaG91bGQgdXNlIGdpdmVuIHRoZSByZXNvbHZlZCBhdXRoXG4vLyBzdXJmYWNlLiBUaGUgXCJhcHBcIiBwYXRoIG1ha2VzIHR3byBjaGVhcCBBUEkgY2FsbHM6IG9uZSB0byAvYXBwIHRvIGxlYXJuIHRoZVxuLy8gQXBwIHNsdWcsIG9uZSB0byAvdXNlcnMvPHNsdWc+W2JvdF0gZm9yIHRoZSBib3QgdXNlciBpZC4gVG9nZXRoZXIgdGhleVxuLy8gcHJvZHVjZSB0aGUgY2Fub25pY2FsIGA8aWQ+KzxzbHVnPltib3RdQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbWAgZW1haWxcbi8vIHRoYXQgYXR0cmlidXRlcyBjb21taXRzIHRvIHRoZSBBcHAncyBib3QgYWNjb3VudCBpbiB0aGUgR2l0SHViIFVJLiBUaGVcbi8vIG90aGVyIGF1dGggc3VyZmFjZXMgKGdpdGh1Yl90b2tlbiwgcHJlbWludGVkKSBmYWxsIGJhY2sgdG8gaWRlbnRpdGllcyB0aGF0XG4vLyBhdCBsZWFzdCBsZXQgYGdpdCBjb21taXRgIHN1Y2NlZWQuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUJvdElkZW50aXR5KFxuICBhdXRoOiBBdXRoU3BlYyxcbiAgZGVwczogUmVzb2x2ZUJvdElkZW50aXR5RGVwcyA9IHt9LFxuKTogUHJvbWlzZTxHaXRJZGVudGl0eT4ge1xuICBpZiAoYXV0aC5raW5kID09PSBcInRva2VuXCIgJiYgYXV0aC5zb3VyY2UgPT09IFwiZ2l0aHViX3Rva2VuXCIpIHtcbiAgICByZXR1cm4gR0lUSFVCX0FDVElPTlNfSURFTlRJVFk7XG4gIH1cbiAgaWYgKGF1dGgua2luZCAhPT0gXCJhcHBcIikge1xuICAgIGNvcmUud2FybmluZyhcbiAgICAgIFwiU2hvcGZsb29yIGlzIHJ1bm5pbmcgd2l0aCBhIHByZW1pbnRlZCBpbnN0YWxsYXRpb24gdG9rZW47IGNhbm5vdCByZXNvbHZlIHRoZSBBcHAncyBib3QgaWRlbnRpdHkuIENvbW1pdHMgd2lsbCB1c2UgYSBnZW5lcmljIGlkZW50aXR5LiBTd2l0Y2ggdG8gZ2l0aHViX2FwcF9jbGllbnRfaWQgKyBnaXRodWJfYXBwX3ByaXZhdGVfa2V5IGZvciBwcm9wZXIgYXR0cmlidXRpb24uXCIsXG4gICAgKTtcbiAgICByZXR1cm4gRkFMTEJBQ0tfSURFTlRJVFk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGFwcEF1dGhGYWN0b3J5ID0gZGVwcy5hcHBBdXRoRmFjdG9yeSA/PyBjcmVhdGVBcHBBdXRoO1xuICAgIGNvbnN0IGZldGNoQXBwU2x1ZyA9IGRlcHMuZmV0Y2hBcHBTbHVnID8/IGRlZmF1bHRGZXRjaEFwcFNsdWc7XG4gICAgY29uc3QgZmV0Y2hCb3RVc2VySWQgPSBkZXBzLmZldGNoQm90VXNlcklkID8/IGRlZmF1bHRGZXRjaEJvdFVzZXJJZDtcblxuICAgIGNvbnN0IGF1dGhGbiA9IGFwcEF1dGhGYWN0b3J5KHtcbiAgICAgIGFwcElkOiBhdXRoLmNsaWVudElkLFxuICAgICAgcHJpdmF0ZUtleTogYXV0aC5wcml2YXRlS2V5LFxuICAgIH0pO1xuICAgIGNvbnN0IHsgdG9rZW46IGp3dCB9ID0gYXdhaXQgYXV0aEZuKHsgdHlwZTogXCJhcHBcIiB9KTtcbiAgICBjb25zdCBzbHVnID0gYXdhaXQgZmV0Y2hBcHBTbHVnKGp3dCk7XG4gICAgY29uc3QgdXNlcklkID0gYXdhaXQgZmV0Y2hCb3RVc2VySWQoc2x1Zyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGAke3NsdWd9W2JvdF1gLFxuICAgICAgZW1haWw6IGAke3VzZXJJZH0rJHtzbHVnfVtib3RdQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbWAsXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29yZS53YXJuaW5nKFxuICAgICAgYENvdWxkIG5vdCByZXNvbHZlIEFwcCBib3QgaWRlbnRpdHkgKCR7KGVyciBhcyBFcnJvcikubWVzc2FnZX0pOyBmYWxsaW5nIGJhY2sgdG8gYSBnZW5lcmljIGlkZW50aXR5LmAsXG4gICAgKTtcbiAgICByZXR1cm4gRkFMTEJBQ0tfSURFTlRJVFk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdEZldGNoQXBwU2x1Zyhqd3Q6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG9jdG9raXQgPSBuZXcgT2N0b2tpdCh7IGF1dGg6IGp3dCB9KTtcbiAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBvY3Rva2l0LnJlc3QuYXBwcy5nZXRBdXRoZW50aWNhdGVkKCk7XG4gIGNvbnN0IHNsdWcgPSBkYXRhPy5zbHVnO1xuICBpZiAoIXNsdWcpIHRocm93IG5ldyBFcnJvcihcIkdFVCAvYXBwIGRpZCBub3QgcmV0dXJuIGEgc2x1Z1wiKTtcbiAgcmV0dXJuIHNsdWc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRGZXRjaEJvdFVzZXJJZChzbHVnOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAvLyBUaGUgYm90IHVzZXIgKGUuZy4gYHNob3BmbG9vcltib3RdYCkgaXMgYSBwdWJsaWMgYWNjb3VudDsgbm8gYXV0aCBuZWVkZWQuXG4gIGNvbnN0IG9jdG9raXQgPSBuZXcgT2N0b2tpdCgpO1xuICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IG9jdG9raXQucmVzdC51c2Vycy5nZXRCeVVzZXJuYW1lKHtcbiAgICB1c2VybmFtZTogYCR7c2x1Z31bYm90XWAsXG4gIH0pO1xuICByZXR1cm4gZGF0YS5pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUdpdElkZW50aXR5T3B0cyB7XG4gIGN3ZDogc3RyaW5nO1xuICBpZGVudGl0eTogR2l0SWRlbnRpdHk7XG4gIHNzaFNpZ25pbmdLZXk/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBXcml0ZXMgdGhlIHJlc29sdmVkIGlkZW50aXR5IHRvIHRoZSByZXBvLWxvY2FsIGdpdCBjb25maWcgKE5PVCAtLWdsb2JhbCkuXG4vLyBSZXBvLWxvY2FsIG1hdHRlcnMgYmVjYXVzZSB0aGUgYWN0aW9uJ3MgTm9kZSBwcm9jZXNzIHJ1bnMgaW4gdGhlIHNhbWVcbi8vIGNoZWNrb3V0IHRoZSBDbGF1ZGUgYWdlbnQgbGF0ZXIgaW5oZXJpdHM7IHRoZSBhZ2VudCdzIGBnaXQgY29tbWl0YCByZWFkc1xuLy8gLmdpdC9jb25maWcgYW5kIGdldHMgdGhlIGlkZW50aXR5IGZvciBmcmVlLiBSZXBvLWxvY2FsIGFsc28gYXZvaWRzXG4vLyBjbG9iYmVyaW5nIGEgZGV2ZWxvcGVyJ3Mgfi8uZ2l0Y29uZmlnIGlmIHRoZSBhY3Rpb24gaXMgZXZlciBleGVyY2lzZWRcbi8vIGxvY2FsbHkgdmlhIGBhY3RgIG9yIGEgc2ltaWxhciBoYXJuZXNzLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5R2l0SWRlbnRpdHkoXG4gIG9wdHM6IEFwcGx5R2l0SWRlbnRpdHlPcHRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY29uZmlnXCIsIFwidXNlci5uYW1lXCIsIG9wdHMuaWRlbnRpdHkubmFtZV0pO1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImNvbmZpZ1wiLCBcInVzZXIuZW1haWxcIiwgb3B0cy5pZGVudGl0eS5lbWFpbF0pO1xuXG4gIGNvbnN0IGtleSA9IG9wdHMuc3NoU2lnbmluZ0tleT8udHJpbSgpO1xuICBpZiAoIWtleSkgcmV0dXJuO1xuXG4gIC8vIE1hdGVyaWFsaXNlIHRoZSBzaWduaW5nIGtleSB0byBhIDA2MDAtbW9kZSBmaWxlLiBQYXRoIGlzIGluIGEgZnJlc2hseVxuICAvLyBtaW50ZWQgdGVtcCBkaXIgc28gd2UgZG9uJ3QgZmlnaHQgYW4gZXhpc3Rpbmcgfi8uc3NoIG9uIHRoZSBydW5uZXIuXG4gIGNvbnN0IGRpciA9IG1rZHRlbXBTeW5jKGpvaW4odG1wZGlyKCksIFwic2hvcGZsb29yLXNzaC1cIikpO1xuICBjb25zdCBrZXlQYXRoID0gam9pbihkaXIsIFwic2lnbmluZ19rZXlcIik7XG4gIHdyaXRlRmlsZVN5bmMoa2V5UGF0aCwga2V5LmVuZHNXaXRoKFwiXFxuXCIpID8ga2V5IDogYCR7a2V5fVxcbmApO1xuICBjaG1vZFN5bmMoa2V5UGF0aCwgMG82MDApO1xuXG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY29uZmlnXCIsIFwiZ3BnLmZvcm1hdFwiLCBcInNzaFwiXSk7XG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY29uZmlnXCIsIFwidXNlci5zaWduaW5na2V5XCIsIGtleVBhdGhdKTtcbiAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJjb25maWdcIiwgXCJjb21taXQuZ3Bnc2lnblwiLCBcInRydWVcIl0pO1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImNvbmZpZ1wiLCBcInRhZy5ncGdzaWduXCIsIFwidHJ1ZVwiXSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkdpdChjd2Q6IHN0cmluZywgYXJnczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKFwiZ2l0XCIsIGFyZ3MsIHtcbiAgICAgIGN3ZCxcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICB9KTtcbiAgICBsZXQgc3RkZXJyID0gXCJcIjtcbiAgICBjaGlsZC5zdGRlcnIub24oXCJkYXRhXCIsIChkOiBCdWZmZXIpID0+IHtcbiAgICAgIHN0ZGVyciArPSBkLnRvU3RyaW5nKCk7XG4gICAgfSk7XG4gICAgY2hpbGQub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihgZ2l0ICR7YXJncy5qb2luKFwiIFwiKX0gZmFpbGVkICgke2NvZGV9KTogJHtzdGRlcnIudHJpbSgpfWApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcbmltcG9ydCB7IHR5cGUgQXV0aFNwZWMsIG1pbnRJbnN0YWxsYXRpb25Ub2tlbiB9IGZyb20gXCIuLi9naXRodWIvYXBwLXRva2VuLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZUltcGxDaGVja291dE9wdHMge1xuICBjd2Q6IHN0cmluZztcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG4gIHJldmlzaW9uTW9kZTogYm9vbGVhbjtcbiAgb3duZXI6IHN0cmluZztcbiAgcmVwbzogc3RyaW5nO1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogT3ZlcnJpZGUgdGhlIHJlbW90ZSBuYW1lLiBEZWZhdWx0cyB0byBcIm9yaWdpblwiLiAqL1xuICByZW1vdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaEltcGxDb21taXRzT3B0cyB7XG4gIGN3ZDogc3RyaW5nO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHJlcG86IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgcmVtb3RlPzogc3RyaW5nO1xufVxuXG4vLyBDb25maWd1cmVzIHRoZSBsb2NhbCB3b3JraW5nIHRyZWUgc28gdGhlIGltcGwgYWdlbnQncyBjb21taXRzIGxhbmQgb24gdGhlXG4vLyByaWdodCBicmFuY2guIEZvciBmaXJzdCBydW5zIHdlIGNyZWF0ZSB0aGUgYnJhbmNoIGZyb20gdGhlIGRlZmF1bHQtYnJhbmNoXG4vLyBIRUFEIHRoYXQgYWN0aW9ucy9jaGVja291dCBhbHJlYWR5IHByb3Zpc2lvbmVkLiBGb3IgcmV2aXNpb24gcnVucyB3ZSBmZXRjaFxuLy8gdGhlIHByaW9yIGl0ZXJhdGlvbidzIGJyYW5jaCBmcm9tIHRoZSByZW1vdGUgYW5kIHJlc2V0IHRoZSB3b3JraW5nIHRyZWVcbi8vIG9udG8gaXQsIHNvIHRoZSBhZ2VudCBzZWVzIHRoZSBwcmV2aW91cyByb3VuZCdzIGhpc3RvcnkgYmVmb3JlIG1ha2luZyBuZXdcbi8vIGNvbW1pdHMuIEluIGV2ZXJ5IGNhc2Ugd2UgcmV3cml0ZSBvcmlnaW4ncyBVUkwgdG8gZW1iZWQgdGhlIEFwcFxuLy8gaW5zdGFsbGF0aW9uIHRva2VuIHNvIHRoZSBwb3N0LWFnZW50IHB1c2ggY2FuIGF1dGhlbnRpY2F0ZSB3aXRob3V0XG4vLyByZWx5aW5nIG9uIGEgY3JlZGVudGlhbCBoZWxwZXIuIGFjdGlvbnMvY2hlY2tvdXQgaW4gdGhlIGNvbnN1bWVyIHdvcmtmbG93XG4vLyBtdXN0IHJ1biB3aXRoIGBwZXJzaXN0LWNyZWRlbnRpYWxzOiBmYWxzZWA7IG90aGVyd2lzZSBpdHMgR0lUSFVCX1RPS0VOXG4vLyBodHRwIGV4dHJhaGVhZGVyIHNoYWRvd3MgdGhlIGVtYmVkZGVkIHgtYWNjZXNzLXRva2VuIGNyZWRlbnRpYWwgaGVyZS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlSW1wbENoZWNrb3V0KFxuICBvcHRzOiBQcmVwYXJlSW1wbENoZWNrb3V0T3B0cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZW1vdGUgPSBvcHRzLnJlbW90ZSA/PyBcIm9yaWdpblwiO1xuICBhd2FpdCBzZXRSZW1vdGVXaXRoVG9rZW4ob3B0cy5jd2QsIHJlbW90ZSwgb3B0cy5vd25lciwgb3B0cy5yZXBvLCBvcHRzLnRva2VuKTtcbiAgYXdhaXQgY2hlY2tvdXRJbXBsQnJhbmNoKHtcbiAgICBjd2Q6IG9wdHMuY3dkLFxuICAgIGJyYW5jaE5hbWU6IG9wdHMuYnJhbmNoTmFtZSxcbiAgICByZXZpc2lvbk1vZGU6IG9wdHMucmV2aXNpb25Nb2RlLFxuICAgIHJlbW90ZSxcbiAgfSk7XG59XG5cbi8vIFB1c2hlcyB3aGF0ZXZlciBjb21taXRzIHRoZSBhZ2VudCBsYW5kZWQgb24gYGJyYW5jaE5hbWVgIHRvIG9yaWdpbi4gVGhpcyBpc1xuLy8gdGhlIG1vbWVudCB0aGUgaW1wbCBicmFuY2ggZmlyc3QgYXBwZWFycyBvbiB0aGUgcmVtb3RlIChmb3IgZmlyc3QgcnVucykgb3Jcbi8vIGdhaW5zIGl0cyBuZXcgaXRlcmF0aW9uIChmb3IgcmV2aXNpb24gcnVucykuIFRoZSBwdXNoIGlzIHBlcmZvcm1lZCBBRlRFUlxuLy8gdGhlIGFnZW50IGZpbmlzaGVzIHNvIHRoZSByZXN1bHRpbmcgYHB1c2hgIGV2ZW50IChvclxuLy8gYHB1bGxfcmVxdWVzdC5zeW5jaHJvbml6ZWAgd2hlbiBhIFBSIGFscmVhZHkgZXhpc3RzKSBpcyBhdHRyaWJ1dGVkIHRvIHRoZVxuLy8gQXBwIGlkZW50aXR5LCB3aGljaCBsZXRzIGRvd25zdHJlYW0gcmV2aWV3IHdvcmtmbG93cyB0cmlnZ2VyLiBBIHB1c2hcbi8vIGF1dGhlbnRpY2F0ZWQgYnkgdGhlIHdvcmtmbG93J3MgR0lUSFVCX1RPS0VOIHdvdWxkIE5PVCB0cmlnZ2VyIGRvd25zdHJlYW1cbi8vIHdvcmtmbG93czsgdGhpcyBpcyB3aHkgdGhlIEFwcCBjcmVkZW50aWFscyBhcmUgc3Ryb25nbHkgcHJlZmVycmVkLlxuLy9cbi8vIFdlIGFsd2F5cyByZS1zZXQgdGhlIHJlbW90ZSBVUkwgd2l0aCBhIGZyZXNobHkgcmVzb2x2ZWQgdG9rZW4gaW4gY2FzZSB0aGVcbi8vIHByZS1hZ2VudCB0b2tlbiBoYXMgYWdlZCBwYXN0IGl0cyBpbnN0YWxsYXRpb24tdG9rZW4gVFRMIGR1cmluZyBhIGxvbmdcbi8vIHJ1bi5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXNoSW1wbENvbW1pdHMoXG4gIG9wdHM6IFB1c2hJbXBsQ29tbWl0c09wdHMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVtb3RlID0gb3B0cy5yZW1vdGUgPz8gXCJvcmlnaW5cIjtcbiAgYXdhaXQgc2V0UmVtb3RlV2l0aFRva2VuKG9wdHMuY3dkLCByZW1vdGUsIG9wdHMub3duZXIsIG9wdHMucmVwbywgb3B0cy50b2tlbik7XG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wicHVzaFwiLCByZW1vdGUsIG9wdHMuYnJhbmNoTmFtZV0pO1xufVxuXG4vLyBSZXR1cm5zIGEgY2xvc3VyZSB0aGF0IHlpZWxkcyBhIHVzYWJsZSBnaXQgdG9rZW4gZm9yIHRoZSBnaXZlbiBhdXRoXG4vLyBzdXJmYWNlLiBGb3IgcHJlbWludGVkIG9yIEdJVEhVQl9UT0tFTiBhdXRoIHRoZSBjbG9zdXJlIHJldHVybnMgdGhlIHN0YXRpY1xuLy8gdG9rZW4gb24gZXZlcnkgY2FsbC4gRm9yIEFwcCBhdXRoIGl0IG1pbnRzIChvciByZXR1cm5zIGEgY2FjaGVkLCBpbi1tYXJnaW4pXG4vLyBpbnN0YWxsYXRpb24gdG9rZW4gdmlhIEBvY3Rva2l0L2F1dGgtYXBwLCBzbyBhIGxvbmctcnVubmluZyBpbXBsIGFnZW50J3Ncbi8vIHBvc3QtYWdlbnQgcHVzaCBhbHdheXMgdXNlcyBhIGZyZXNoIHRva2VuLlxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuUmVzb2x2ZXJGb3IoXG4gIGF1dGg6IEF1dGhTcGVjLFxuICBvd25lcjogc3RyaW5nLFxuICByZXBvOiBzdHJpbmcsXG4pOiAoKSA9PiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoYXV0aC5raW5kID09PSBcInRva2VuXCIpIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXV0aC50b2tlbjtcbiAgfVxuICByZXR1cm4gKCkgPT5cbiAgICBtaW50SW5zdGFsbGF0aW9uVG9rZW4oe1xuICAgICAgY2xpZW50SWQ6IGF1dGguY2xpZW50SWQsXG4gICAgICBwcml2YXRlS2V5OiBhdXRoLnByaXZhdGVLZXksXG4gICAgICBvd25lcixcbiAgICAgIHJlcG8sXG4gICAgICBpbnN0YWxsYXRpb25JZDogYXV0aC5pbnN0YWxsYXRpb25JZCxcbiAgICB9KTtcbn1cblxuLy8gUmV3cml0ZXMgYDxyZW1vdGU+YCdzIFVSTCB0byBodHRwczovL3gtYWNjZXNzLXRva2VuOjx0b2tlbj5AZ2l0aHViLmNvbS88b3duZXI+LzxyZXBvPi5naXQuXG4vLyBFeHBvcnRlZCBzbyB0ZXN0cyBjYW4gZXhlcmNpc2UgVVJMIGZvcm1hdHRpbmcgd2l0aG91dCBleGVyY2lzaW5nIHRoZSBmdWxsXG4vLyBwcmVwYXJlL3B1c2ggZmxvdy5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRSZW1vdGVXaXRoVG9rZW4oXG4gIGN3ZDogc3RyaW5nLFxuICByZW1vdGU6IHN0cmluZyxcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuICB0b2tlbjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHVybCA9IGBodHRwczovL3gtYWNjZXNzLXRva2VuOiR7dG9rZW59QGdpdGh1Yi5jb20vJHtvd25lcn0vJHtyZXBvfS5naXRgO1xuICAvLyBNYXNrIHRoZSB0b2tlbiBpbiBjYXNlIGl0IGVuZHMgdXAgaW4gYW55IGVycm9yIG91dHB1dC4gVGhlIHRva2VuIGlzIGFsc29cbiAgLy8gYWxyZWFkeSBtYXNrZWQgYnkgZW50cnkudHMgdmlhIHRoZSBBcHAgYXV0aCBtYWNoaW5lcnk7IHRoaXMgaXMgYmVsdC1hbmQtXG4gIC8vIGJyYWNlcyBmb3IgY2FsbGVycyB0aGF0IHdpcmUgaGVscGVycyBkaXJlY3RseS5cbiAgY29yZS5zZXRTZWNyZXQodG9rZW4pO1xuICBhd2FpdCBydW5HaXQoY3dkLCBbXCJyZW1vdGVcIiwgXCJzZXQtdXJsXCIsIHJlbW90ZSwgdXJsXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hSZXZpZXdCYXNlT3B0cyB7XG4gIGN3ZDogc3RyaW5nO1xuICBiYXNlUmVmOiBzdHJpbmc7XG4gIC8qKiBPdmVycmlkZSB0aGUgcmVtb3RlIG5hbWUuIERlZmF1bHRzIHRvIFwib3JpZ2luXCIuICovXG4gIHJlbW90ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlUmV2aWV3QmFzZU9wdHMgZXh0ZW5kcyBGZXRjaFJldmlld0Jhc2VPcHRzIHtcbiAgb3duZXI6IHN0cmluZztcbiAgcmVwbzogc3RyaW5nO1xuICB0b2tlbjogc3RyaW5nO1xufVxuXG4vLyBQcm92aXNpb25zIHRoZSBiYXNlIGJyYW5jaCBhcyBhIGxvY2FsIGByZWZzL3JlbW90ZXMvPHJlbW90ZT4vPGJhc2U+YCByZWYgc29cbi8vIHRoZSByZXZpZXcgbGVuc2VzIGNhbiBkaWZmIHRoZSBQUiBhZ2FpbnN0IGl0LiBBIGBwdWxsL04vbWVyZ2VgIGNoZWNrb3V0IGlzIGFcbi8vIHNoYWxsb3cgbWVyZ2UgY29tbWl0IHdob3NlIHBhcmVudHMgYXJlIG5vdCBwcmVzZW50IGFzIG9iamVjdHMgYW5kIHdob3NlXG4vLyBiYXNlLWJyYW5jaCB0cmFja2luZyByZWYgZG9lcyBub3QgZXhpc3QsIHNvIGFueSBgb3JpZ2luLzxiYXNlPi4uLkhFQURgIHRoZVxuLy8gbGVucyBhZ2VudCB0cmllcyBmYWlscyBvdXRyaWdodC4gV2UgZmV0Y2ggdGhlIGJhc2UgdGlwIGF0IGRlcHRoIDEgKGVub3VnaCxcbi8vIGJlY2F1c2UgdGhlIGxlbnNlcyB1c2UgYSB0d28tZG90IGBnaXQgZGlmZiBvcmlnaW4vPGJhc2U+IEhFQURgLCB3aGljaFxuLy8gY29tcGFyZXMgdHJlZSBzbmFwc2hvdHMgYW5kIG5lZWRzIG5vIHNoYXJlZCBhbmNlc3RyeSkuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hSZXZpZXdCYXNlKFxuICBvcHRzOiBGZXRjaFJldmlld0Jhc2VPcHRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlbW90ZSA9IG9wdHMucmVtb3RlID8/IFwib3JpZ2luXCI7XG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1xuICAgIFwiZmV0Y2hcIixcbiAgICBcIi0tbm8tdGFnc1wiLFxuICAgIFwiLS1kZXB0aD0xXCIsXG4gICAgcmVtb3RlLFxuICAgIGArcmVmcy9oZWFkcy8ke29wdHMuYmFzZVJlZn06cmVmcy9yZW1vdGVzLyR7cmVtb3RlfS8ke29wdHMuYmFzZVJlZn1gLFxuICBdKTtcbn1cblxuLy8gRW1iZWRzIHRoZSBBcHAgaW5zdGFsbGF0aW9uIHRva2VuIGluIHRoZSByZW1vdGUgVVJMICh0aGUgcmV2aWV3IGNoZWNrb3V0XG4vLyBydW5zIHdpdGggYHBlcnNpc3QtY3JlZGVudGlhbHM6IGZhbHNlYCwgc28gdGhlIGFnZW50IGhhcyBubyB1c2FibGUgZ2l0XG4vLyBjcmVkZW50aWFsKSBhbmQgdGhlbiBmZXRjaGVzIHRoZSBiYXNlIHJlZi4gTWlycm9ycyBwcmVwYXJlSW1wbENoZWNrb3V0J3Ncbi8vIHNldC11cmwtdGhlbi1mZXRjaCBzaGFwZS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlUmV2aWV3QmFzZShcbiAgb3B0czogUHJlcGFyZVJldmlld0Jhc2VPcHRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlbW90ZSA9IG9wdHMucmVtb3RlID8/IFwib3JpZ2luXCI7XG4gIGF3YWl0IHNldFJlbW90ZVdpdGhUb2tlbihvcHRzLmN3ZCwgcmVtb3RlLCBvcHRzLm93bmVyLCBvcHRzLnJlcG8sIG9wdHMudG9rZW4pO1xuICBhd2FpdCBmZXRjaFJldmlld0Jhc2UoeyBjd2Q6IG9wdHMuY3dkLCBiYXNlUmVmOiBvcHRzLmJhc2VSZWYsIHJlbW90ZSB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVja291dEltcGxCcmFuY2hPcHRzIHtcbiAgY3dkOiBzdHJpbmc7XG4gIGJyYW5jaE5hbWU6IHN0cmluZztcbiAgcmV2aXNpb25Nb2RlOiBib29sZWFuO1xuICByZW1vdGU/OiBzdHJpbmc7XG59XG5cbi8vIFRoZSBicmFuY2gtY3JlYXRpb24gaGFsZiBvZiBwcmVwYXJlSW1wbENoZWNrb3V0LiBTZXBhcmF0ZWQgZnJvbSB0aGUgVVJMXG4vLyByZXdyaXRpbmcgc28gdGVzdHMgY2FuIGRyaXZlIGl0IGFnYWluc3QgYSBsb2NhbCBmaWxlLXN5c3RlbSByZW1vdGVcbi8vIHdpdGhvdXQgZnVubmVsaW5nIHRocm91Z2ggaHR0cHM6Ly94LWFjY2Vzcy10b2tlbiBVUkxzLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrb3V0SW1wbEJyYW5jaChcbiAgb3B0czogQ2hlY2tvdXRJbXBsQnJhbmNoT3B0cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZW1vdGUgPSBvcHRzLnJlbW90ZSA/PyBcIm9yaWdpblwiO1xuICBpZiAob3B0cy5yZXZpc2lvbk1vZGUpIHtcbiAgICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImZldGNoXCIsIHJlbW90ZSwgb3B0cy5icmFuY2hOYW1lXSk7XG4gICAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJjaGVja291dFwiLCBcIi1CXCIsIG9wdHMuYnJhbmNoTmFtZSwgXCJGRVRDSF9IRUFEXCJdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gRmlyc3QgcnVuLiBhY3Rpb25zL2NoZWNrb3V0IGxlZnQgSEVBRCBhdCB0aGUgZGVmYXVsdCBicmFuY2ggdGlwLCB3aGljaCBpc1xuICAvLyBleGFjdGx5IHdoZXJlIHRoZSBpbXBsIGJyYW5jaCBzaG91bGQgZGl2ZXJnZSBmcm9tLiBgY2hlY2tvdXQgLUJgIHJldXNlc1xuICAvLyB0aGUgYnJhbmNoIGlmIGEgcHJpb3IgZmFpbGVkIHJ1biBsZWZ0IG9uZSBiZWhpbmQgbG9jYWxseSwgc28gcmUtcnVucyBhcmVcbiAgLy8gaWRlbXBvdGVudC5cbiAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJjaGVja291dFwiLCBcIi1CXCIsIG9wdHMuYnJhbmNoTmFtZV0pO1xufVxuXG5mdW5jdGlvbiBydW5HaXQoY3dkOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihcImdpdFwiLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gICAgfSk7XG4gICAgbGV0IHN0ZGVyciA9IFwiXCI7XG4gICAgY2hpbGQuc3RkZXJyLm9uKFwiZGF0YVwiLCAoZDogQnVmZmVyKSA9PiB7XG4gICAgICBzdGRlcnIgKz0gZC50b1N0cmluZygpO1xuICAgIH0pO1xuICAgIGNoaWxkLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBjaGlsZC5vbihcImV4aXRcIiwgKGNvZGUpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFN0cmlwIGFueSBsZWFrZWQgdG9rZW4gZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBiZWZvcmUgYnViYmxpbmcuXG4gICAgICAgIGNvbnN0IGNsZWFuZWQgPSBzdGRlcnIucmVwbGFjZShcbiAgICAgICAgICAveC1hY2Nlc3MtdG9rZW46W15AXStAL2csXG4gICAgICAgICAgXCJ4LWFjY2Vzcy10b2tlbjoqKipAXCIsXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgZ2l0ICR7YXJncy5qb2luKFwiIFwiKX0gZmFpbGVkICgke2NvZGV9KTogJHtjbGVhbmVkLnRyaW0oKX1gLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUFwcEF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1hcHBcIjtcbmltcG9ydCB7IE9jdG9raXQgfSBmcm9tIFwiQG9jdG9raXQvcmVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pbnRBcmdzIHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBpbnN0YWxsYXRpb24gaWQuIFdoZW4gb21pdHRlZCBhbmQgYXV0aEZhY3RvcnkgaXMgcHJvdmlkZWQsIGFcbiAgICogIHNlbnRpbmVsIHZhbHVlIG9mIDAgaXMgdXNlZCAodGhlIG1vY2sgaWdub3JlcyBpdCkuIEZvciByZWFsIGNhbGxlcnMsXG4gICAqICBzdXBwbHkgdGhpcyBleHBsaWNpdGx5OyByZXNvbHZlSW5zdGFsbGF0aW9uSWQgd2lsbCB0aHJvdyBvdGhlcndpc2UuICovXG4gIGluc3RhbGxhdGlvbklkPzogbnVtYmVyO1xuICAvKiogSW5qZWN0IGZvciB0ZXN0cyAqL1xuICBhdXRoRmFjdG9yeT86IChvcHRzOiB7XG4gICAgYXBwSWQ6IHN0cmluZztcbiAgICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gIH0pID0+IChyZXE6IHtcbiAgICB0eXBlOiBcImluc3RhbGxhdGlvblwiO1xuICAgIGluc3RhbGxhdGlvbklkOiBudW1iZXI7XG4gIH0pID0+IFByb21pc2U8eyB0b2tlbjogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZyB9PjtcbiAgLyoqIFJlZnJlc2ggdG9rZW5zIHRoYXQgZXhwaXJlIHdpdGhpbiB0aGlzIG1hcmdpbi4gRGVmYXVsdCA1IG1pbnV0ZXMuICovXG4gIGV4cGlyeU1hcmdpbk1zPzogbnVtYmVyO1xufVxuXG50eXBlIENhY2hlRW50cnkgPSB7IHRva2VuOiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyIH07XG5jb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUVudHJ5PigpO1xuXG5leHBvcnQgZnVuY3Rpb24gX19yZXNldFRva2VuQ2FjaGUoKTogdm9pZCB7XG4gIGNhY2hlLmNsZWFyKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaW50SW5zdGFsbGF0aW9uVG9rZW4oYXJnczogTWludEFyZ3MpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBtYXJnaW4gPSBhcmdzLmV4cGlyeU1hcmdpbk1zID8/IDUgKiA2MF8wMDA7XG4gIGNvbnN0IGtleSA9IGAke2FyZ3MuY2xpZW50SWR9fCR7YXJncy5vd25lcn0vJHthcmdzLnJlcG99YDtcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGtleSk7XG4gIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCAtIERhdGUubm93KCkgPiBtYXJnaW4pIHJldHVybiBjYWNoZWQudG9rZW47XG5cbiAgY29uc3QgYXV0aEZuID0gYXJncy5hdXRoRmFjdG9yeVxuICAgID8gYXJncy5hdXRoRmFjdG9yeSh7IGFwcElkOiBhcmdzLmNsaWVudElkLCBwcml2YXRlS2V5OiBhcmdzLnByaXZhdGVLZXkgfSlcbiAgICA6IGNyZWF0ZUFwcEF1dGgoeyBhcHBJZDogYXJncy5jbGllbnRJZCwgcHJpdmF0ZUtleTogYXJncy5wcml2YXRlS2V5IH0pO1xuXG4gIC8vIFdoZW4gYXV0aEZhY3RvcnkgaXMgaW5qZWN0ZWQgKHRlc3RzKSwgdGhlIG1vY2sgZG9lcyBub3QgdmFsaWRhdGVcbiAgLy8gaW5zdGFsbGF0aW9uSWQsIHNvIHdlIGZhbGwgYmFjayB0byAwIHJhdGhlciB0aGFuIGNhbGxpbmcgdGhlIHRocm93aW5nXG4gIC8vIHN0dWIuIFJlYWwgY2FsbGVycyBtdXN0IHN1cHBseSBpbnN0YWxsYXRpb25JZCBleHBsaWNpdGx5IHVudGlsIFBsYW4gM1xuICAvLyB3aXJlcyByZXNvbHZlSW5zdGFsbGF0aW9uSWQgZnJvbSB0aGUgQWN0aW9ucyBldmVudCBwYXlsb2FkLlxuICBjb25zdCBpbnN0YWxsYXRpb25JZCA9XG4gICAgYXJncy5pbnN0YWxsYXRpb25JZCA/P1xuICAgIChhcmdzLmF1dGhGYWN0b3J5ID8gMCA6IGF3YWl0IHJlc29sdmVJbnN0YWxsYXRpb25JZChhcmdzKSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXV0aEZuKHsgdHlwZTogXCJpbnN0YWxsYXRpb25cIiwgaW5zdGFsbGF0aW9uSWQgfSk7XG4gIGNhY2hlLnNldChrZXksIHtcbiAgICB0b2tlbjogcmVzdWx0LnRva2VuLFxuICAgIGV4cGlyZXNBdDogbmV3IERhdGUocmVzdWx0LmV4cGlyZXNBdCkuZ2V0VGltZSgpLFxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdC50b2tlbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUluc3RhbGxhdGlvbklkKGFyZ3M6IE1pbnRBcmdzKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIGRpc2NvdmVySW5zdGFsbGF0aW9uSWQoe1xuICAgIGNsaWVudElkOiBhcmdzLmNsaWVudElkLFxuICAgIHByaXZhdGVLZXk6IGFyZ3MucHJpdmF0ZUtleSxcbiAgICBvd25lcjogYXJncy5vd25lcixcbiAgICByZXBvOiBhcmdzLnJlcG8sXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc2NvdmVySW5zdGFsbGF0aW9uSWRBcmdzIHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG59XG5cbi8vIE1pbnRzIGEgc2hvcnQtbGl2ZWQgSldUIGZvciB0aGUgQXBwLCB0aGVuIHF1ZXJpZXMgdGhlIGluc3RhbGxhdGlvbiB0aGF0XG4vLyBjb3ZlcnMgb3duZXIvcmVwby4gQ2FsbGVkIG9uY2UgcGVyIHByb2Nlc3MgYXQgc3RhcnR1cDsgdGhlIHJlc3VsdGluZyBpZCBpc1xuLy8gaGFuZGVkIHRvIE9jdG9raXQncyBhdXRoLWFwcCBzdHJhdGVneSwgd2hpY2gga2VlcHMgcmVmcmVzaGluZyB0aGVcbi8vIGluc3RhbGxhdGlvbiB0b2tlbiB0cmFuc3BhcmVudGx5IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHJ1bi5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkaXNjb3Zlckluc3RhbGxhdGlvbklkKFxuICBhcmdzOiBEaXNjb3Zlckluc3RhbGxhdGlvbklkQXJncyxcbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGF1dGhGbiA9IGNyZWF0ZUFwcEF1dGgoe1xuICAgIGFwcElkOiBhcmdzLmNsaWVudElkLFxuICAgIHByaXZhdGVLZXk6IGFyZ3MucHJpdmF0ZUtleSxcbiAgfSk7XG4gIGNvbnN0IHsgdG9rZW46IGp3dCB9ID0gYXdhaXQgYXV0aEZuKHsgdHlwZTogXCJhcHBcIiB9KTtcbiAgY29uc3QgcHJvYmUgPSBuZXcgT2N0b2tpdCh7IGF1dGg6IGp3dCB9KTtcbiAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBwcm9iZS5yZXN0LmFwcHMuZ2V0UmVwb0luc3RhbGxhdGlvbih7XG4gICAgb3duZXI6IGFyZ3Mub3duZXIsXG4gICAgcmVwbzogYXJncy5yZXBvLFxuICB9KTtcbiAgcmV0dXJuIGRhdGEuaWQ7XG59XG5cbi8vIEF1dGhTcGVjIGRlc2NyaWJlcyB0aGUgcmVzb2x2ZWQgYXV0aGVudGljYXRpb24gc3RyYXRlZ3kgaGFuZGVkIHRvIE9jdG9raXQuXG4vLyBgYXBwYCBsZXRzIE9jdG9raXQncyBhdXRoLWFwcCBzdHJhdGVneSBtaW50IGluc3RhbGxhdGlvbiB0b2tlbnMgb24gZGVtYW5kXG4vLyBhbmQgcmVmcmVzaCB0aGVtIGJlZm9yZSBleHBpcnkgXHUyMDE0IHJlcXVpcmVkIGZvciBzdGFnZXMgdGhhdCBtYXkgb3V0cnVuIHRoZVxuLy8gb25lLWhvdXIgaW5zdGFsbGF0aW9uIHRva2VuIFRUTC4gYHRva2VuYCBpcyBhIHN0YXRpYyBiZWFyZXIgKGEgcHJlbWludGVkXG4vLyBpbnN0YWxsYXRpb24gdG9rZW4gb3IgdGhlIHdvcmtmbG93J3MgR0lUSFVCX1RPS0VOIGZhbGxiYWNrKS5cbmV4cG9ydCB0eXBlIEF1dGhTcGVjID1cbiAgfCB7IGtpbmQ6IFwidG9rZW5cIjsgdG9rZW46IHN0cmluZzsgc291cmNlOiBcInByZW1pbnRlZFwiIHwgXCJnaXRodWJfdG9rZW5cIiB9XG4gIHwge1xuICAgICAga2luZDogXCJhcHBcIjtcbiAgICAgIGNsaWVudElkOiBzdHJpbmc7XG4gICAgICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gICAgICBpbnN0YWxsYXRpb25JZDogbnVtYmVyO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUF1dGhJbnB1dHMge1xuICBwcmVtaW50ZWQ/OiBzdHJpbmcgfCBudWxsO1xuICBhcHA/OiB7IGNsaWVudElkOiBzdHJpbmc7IHByaXZhdGVLZXk6IHN0cmluZyB9IHwgbnVsbDtcbiAgZmFsbGJhY2tUb2tlbj86IHN0cmluZyB8IG51bGw7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHJlcG86IHN0cmluZztcbn1cblxuLy8gUGlja3MgdGhlIHN0cm9uZ2VzdCBhdXRoIGF2YWlsYWJsZS4gT3JkZXI6IHByZW1pbnRlZCB0b2tlbiwgQXBwIGNyZWRlbnRpYWxzXG4vLyAoaW4tcHJvY2VzcyBtaW50aW5nIHdpdGggcmVmcmVzaCksIEdJVEhVQl9UT0tFTiBmYWxsYmFjay4gUmV0dXJucyBudWxsIHdoZW5cbi8vIG5vIHNvdXJjZSBpcyBjb25maWd1cmVkOyBjYWxsZXJzIGRlY2lkZSB3aGV0aGVyIHRoYXQncyBmYXRhbC5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlQXV0aChcbiAgaW5wdXQ6IFJlc29sdmVBdXRoSW5wdXRzLFxuKTogUHJvbWlzZTxBdXRoU3BlYyB8IG51bGw+IHtcbiAgaWYgKGlucHV0LnByZW1pbnRlZCkge1xuICAgIHJldHVybiB7IGtpbmQ6IFwidG9rZW5cIiwgdG9rZW46IGlucHV0LnByZW1pbnRlZCwgc291cmNlOiBcInByZW1pbnRlZFwiIH07XG4gIH1cbiAgaWYgKGlucHV0LmFwcCkge1xuICAgIGNvbnN0IGluc3RhbGxhdGlvbklkID0gYXdhaXQgZGlzY292ZXJJbnN0YWxsYXRpb25JZCh7XG4gICAgICBjbGllbnRJZDogaW5wdXQuYXBwLmNsaWVudElkLFxuICAgICAgcHJpdmF0ZUtleTogaW5wdXQuYXBwLnByaXZhdGVLZXksXG4gICAgICBvd25lcjogaW5wdXQub3duZXIsXG4gICAgICByZXBvOiBpbnB1dC5yZXBvLFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBcImFwcFwiLFxuICAgICAgY2xpZW50SWQ6IGlucHV0LmFwcC5jbGllbnRJZCxcbiAgICAgIHByaXZhdGVLZXk6IGlucHV0LmFwcC5wcml2YXRlS2V5LFxuICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgfTtcbiAgfVxuICBpZiAoaW5wdXQuZmFsbGJhY2tUb2tlbikge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBcInRva2VuXCIsXG4gICAgICB0b2tlbjogaW5wdXQuZmFsbGJhY2tUb2tlbixcbiAgICAgIHNvdXJjZTogXCJnaXRodWJfdG9rZW5cIixcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2UgfSBmcm9tIFwiLi9sYWJlbHMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQck1ldGFkYXRhIHtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgc3RhZ2U6IFN0YWdlO1xuICByZXZpZXdJdGVyYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJc3N1ZU1ldGFkYXRhIHtcbiAgc2x1Zz86IHN0cmluZztcbiAgc3BlY1BhdGg/OiBzdHJpbmc7XG4gIHBsYW5QYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQnJhbmNoUmVmIHtcbiAgc3RhZ2U6IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBcImltcGxcIjtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgc2x1Zzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQck1ldGFkYXRhKFxuICBib2R5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUHJNZXRhZGF0YSB8IG51bGwge1xuICBpZiAoIWJvZHkpIHJldHVybiBudWxsO1xuICBjb25zdCBpc3N1ZU1hdGNoID0gYm9keS5tYXRjaCgvU2hvcGZsb29yLUlzc3VlOlxccyojKFxcZCspLyk7XG4gIGNvbnN0IHN0YWdlTWF0Y2ggPSBib2R5Lm1hdGNoKFxuICAgIC9TaG9wZmxvb3ItU3RhZ2U6XFxzKihzcGVjfHBsYW58aW1wbGVtZW50fHJldmlldykvLFxuICApO1xuICBjb25zdCBpdGVyTWF0Y2ggPSBib2R5Lm1hdGNoKC9TaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjpcXHMqKFxcZCspLyk7XG4gIGlmICghaXNzdWVNYXRjaCB8fCAhc3RhZ2VNYXRjaCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7XG4gICAgaXNzdWVOdW1iZXI6IE51bWJlcihpc3N1ZU1hdGNoWzFdKSxcbiAgICBzdGFnZTogc3RhZ2VNYXRjaFsxXSBhcyBFeGNsdWRlPFN0YWdlLCBcInRyaWFnZVwiPixcbiAgICByZXZpZXdJdGVyYXRpb246IGl0ZXJNYXRjaCA/IE51bWJlcihpdGVyTWF0Y2hbMV0pIDogMCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYW5jaFNsdWcodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNsdWcgPSB0aXRsZVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgXCIgXCIpXG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgLmZpbHRlcigodykgPT4gdy5sZW5ndGggPiAwKVxuICAgIC5zbGljZSgwLCA1KVxuICAgIC5qb2luKFwiLVwiKVxuICAgIC5zbGljZSgwLCA0MClcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCBcIlwiKTtcbiAgcmV0dXJuIHNsdWcubGVuZ3RoID4gMCA/IHNsdWcgOiBcImlzc3VlXCI7XG59XG5cbi8vIENhbm9uaWNhbCBzdGFnZS1icmFuY2ggc2hhcGUgZm9yIHNwZWMsIHBsYW4sIGFuZCBpbXBsIGJyYW5jaGVzOlxuLy8gYHNob3BmbG9vci88c3RhZ2U+Lzxpc3N1ZU51bWJlcj4tPHNsdWc+YC4gUmV0dXJucyBudWxsIGZvciBtYWxmb3JtZWQgcmVmcyBzb1xuLy8gcmV2aXNpb24tbW9kZSBjYWxsZXJzIGNhbiBmYWlsIGNsb3NlZC4gVGhlIHN0YWdlIGlzIGF1dG8tZGV0ZWN0ZWQgZnJvbSB0aGVcbi8vIGJyYW5jaCBwcmVmaXgsIHNvIGNhbGxlcnMgc3dpdGNoIG9uIHRoZSByZXR1cm5lZCBgLnN0YWdlYCBmaWVsZCByYXRoZXIgdGhhblxuLy8gcGFzc2luZyBhIGtpbmQgYXJndW1lbnQuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGFnZUJyYW5jaFJlZihyZWY6IHN0cmluZyk6IFN0YWdlQnJhbmNoUmVmIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcmVmLm1hdGNoKC9ec2hvcGZsb29yXFwvKHNwZWN8cGxhbnxpbXBsKVxcLyhcXGQrKS0oLispJC8pO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhZ2VSYXcgPSBtYXRjaFsxXTtcbiAgY29uc3QgaXNzdWVSYXcgPSBtYXRjaFsyXTtcbiAgY29uc3Qgc2x1ZyA9IG1hdGNoWzNdO1xuICBpZiAoIXN0YWdlUmF3IHx8ICFpc3N1ZVJhdyB8fCAhc2x1ZykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YWdlID0gc3RhZ2VSYXcgYXMgU3RhZ2VCcmFuY2hSZWZbXCJzdGFnZVwiXTtcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBOdW1iZXIoaXNzdWVSYXcpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShpc3N1ZU51bWJlcikgfHwgc2x1Zy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICByZXR1cm4geyBzdGFnZSwgaXNzdWVOdW1iZXIsIHNsdWcgfTtcbn1cblxuLy8gVGhlIG1ldGFkYXRhIGJsb2NrIGlzIGEgc2luZ2xlIEhUTUwgY29tbWVudCBhcHBlbmRlZCBieSB0aGUgdHJpYWdlIGhlbHBlci5cbi8vIEhUTUwgY29tbWVudHMgZG9uJ3QgcmVuZGVyIGluIEdpdEh1YidzIHdlYiBVSSwgc28gdXNlcnMgc2VlIHRoZSBibG9jayBvbmx5XG4vLyBpZiB0aGV5IGVkaXQgdGhlIGlzc3VlLiBUaGUgYmxvY2sncyBzY2hlbWEgaXMgb3BlbjogZXh0cmEga2V5cyBhcmUgaWdub3JlZFxuLy8gc28gbmV3IG1ldGFkYXRhIGNhbiBiZSBhZGRlZCBsYXRlciB3aXRob3V0IGJyZWFraW5nIHRoaXMgcGFyc2VyLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSXNzdWVNZXRhZGF0YShcbiAgYm9keTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IElzc3VlTWV0YWRhdGEgfCBudWxsIHtcbiAgaWYgKCFib2R5KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgYmxvY2tNYXRjaCA9IGJvZHkubWF0Y2goLzwhLS1cXHMqc2hvcGZsb29yOm1ldGFkYXRhXFxzKihbXFxzXFxTXSo/KS0tPi8pO1xuICBpZiAoIWJsb2NrTWF0Y2gpIHJldHVybiBudWxsO1xuICBjb25zdCBibG9jayA9IGJsb2NrTWF0Y2hbMV07XG4gIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICBjb25zdCBtZXRhZGF0YTogSXNzdWVNZXRhZGF0YSA9IHt9O1xuICBjb25zdCBzbHVnTWF0Y2ggPSBibG9jay5tYXRjaCgvXlxccypTaG9wZmxvb3ItU2x1ZzpcXHMqKFxcUyspXFxzKiQvbSk7XG4gIGNvbnN0IHNsdWdWYWwgPSBzbHVnTWF0Y2g/LlsxXTtcbiAgaWYgKHNsdWdWYWwpIG1ldGFkYXRhLnNsdWcgPSBzbHVnVmFsO1xuICBjb25zdCBzcGVjUGF0aE1hdGNoID0gYmxvY2subWF0Y2goL15cXHMqU2hvcGZsb29yLVNwZWMtUGF0aDpcXHMqKFxcUyspXFxzKiQvbSk7XG4gIGNvbnN0IHNwZWNQYXRoVmFsID0gc3BlY1BhdGhNYXRjaD8uWzFdO1xuICBpZiAoc3BlY1BhdGhWYWwpIG1ldGFkYXRhLnNwZWNQYXRoID0gc3BlY1BhdGhWYWw7XG4gIGNvbnN0IHBsYW5QYXRoTWF0Y2ggPSBibG9jay5tYXRjaCgvXlxccypTaG9wZmxvb3ItUGxhbi1QYXRoOlxccyooXFxTKylcXHMqJC9tKTtcbiAgY29uc3QgcGxhblBhdGhWYWwgPSBwbGFuUGF0aE1hdGNoPy5bMV07XG4gIGlmIChwbGFuUGF0aFZhbCkgbWV0YWRhdGEucGxhblBhdGggPSBwbGFuUGF0aFZhbDtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXVkaXRFbWl0dGVyIH0gZnJvbSBcIi4uL2F1ZGl0L2V2ZW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJc3N1ZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3N0YXRlL21ldGFkYXRhLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2N0b2tpdExpa2Uge1xuICByZXN0OiB7XG4gICAgaXNzdWVzOiB7XG4gICAgICBhZGRMYWJlbHMocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIGxhYmVsczogc3RyaW5nW107XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIHJlbW92ZUxhYmVsKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIGlzc3VlX251bWJlcjogbnVtYmVyO1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGNyZWF0ZUNvbW1lbnQocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIGJvZHk6IHN0cmluZztcbiAgICAgIH0pOiBQcm9taXNlPHsgZGF0YTogeyBpZDogbnVtYmVyIH0gfT47XG4gICAgICB1cGRhdGVDb21tZW50KHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIGNvbW1lbnRfaWQ6IG51bWJlcjtcbiAgICAgICAgYm9keTogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBjcmVhdGVMYWJlbChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBsaXN0TGFiZWxzRm9yUmVwbyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwZXJfcGFnZT86IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHsgZGF0YTogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT4gfT47XG4gICAgICB1cGRhdGUocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIHN0YXRlPzogXCJvcGVuXCIgfCBcImNsb3NlZFwiO1xuICAgICAgICBib2R5Pzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBnZXQocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICB9KTogUHJvbWlzZTx7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsYWJlbHM6IHVua25vd247XG4gICAgICAgICAgc3RhdGU6IHN0cmluZztcbiAgICAgICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgICAgICBib2R5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH0+O1xuICAgICAgbGlzdENvbW1lbnRzKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIGlzc3VlX251bWJlcjogbnVtYmVyO1xuICAgICAgICBwZXJfcGFnZT86IG51bWJlcjtcbiAgICAgICAgcGFnZT86IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHtcbiAgICAgICAgZGF0YTogQXJyYXk8e1xuICAgICAgICAgIHVzZXI6IHVua25vd247XG4gICAgICAgICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgICAgICAgIGJvZHk6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH0+O1xuICAgICAgfT47XG4gICAgfTtcbiAgICBwdWxsczoge1xuICAgICAgY3JlYXRlKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIGJhc2U6IHN0cmluZztcbiAgICAgICAgaGVhZDogc3RyaW5nO1xuICAgICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgICBib2R5OiBzdHJpbmc7XG4gICAgICAgIGRyYWZ0PzogYm9vbGVhbjtcbiAgICAgIH0pOiBQcm9taXNlPHsgZGF0YTogeyBudW1iZXI6IG51bWJlcjsgaHRtbF91cmw6IHN0cmluZyB9IH0+O1xuICAgICAgbGlzdChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBoZWFkPzogc3RyaW5nO1xuICAgICAgICBzdGF0ZT86IFwib3BlblwiIHwgXCJjbG9zZWRcIiB8IFwiYWxsXCI7XG4gICAgICAgIHBlcl9wYWdlPzogbnVtYmVyO1xuICAgICAgICBwYWdlPzogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICBkYXRhOiBBcnJheTx7XG4gICAgICAgICAgbnVtYmVyOiBudW1iZXI7XG4gICAgICAgICAgaHRtbF91cmw6IHN0cmluZztcbiAgICAgICAgICBib2R5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBoZWFkPzogeyByZWY6IHN0cmluZyB9O1xuICAgICAgICB9PjtcbiAgICAgIH0+O1xuICAgICAgdXBkYXRlKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHB1bGxfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIGJvZHk/OiBzdHJpbmc7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBnZXQocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcHVsbF9udW1iZXI6IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHsgZGF0YTogeyBub2RlX2lkPzogc3RyaW5nIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PjtcbiAgICAgIGxpc3RGaWxlcyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwdWxsX251bWJlcjogbnVtYmVyO1xuICAgICAgICBwZXJfcGFnZT86IG51bWJlcjtcbiAgICAgICAgcGFnZT86IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHtcbiAgICAgICAgZGF0YTogQXJyYXk8e1xuICAgICAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgcGF0Y2g/OiBzdHJpbmc7XG4gICAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIH0+O1xuICAgICAgfT47XG4gICAgICBjcmVhdGVSZXZpZXcocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcHVsbF9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgY29tbWl0X2lkPzogc3RyaW5nO1xuICAgICAgICBldmVudDogXCJBUFBST1ZFXCIgfCBcIlJFUVVFU1RfQ0hBTkdFU1wiIHwgXCJDT01NRU5UXCI7XG4gICAgICAgIGJvZHk6IHN0cmluZztcbiAgICAgICAgY29tbWVudHM/OiBBcnJheTx1bmtub3duPjtcbiAgICAgIH0pOiBQcm9taXNlPHVua25vd24+O1xuICAgICAgbGlzdFJldmlld3MocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcHVsbF9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgcGVyX3BhZ2U/OiBudW1iZXI7XG4gICAgICB9KTogUHJvbWlzZTx7XG4gICAgICAgIGRhdGE6IEFycmF5PHtcbiAgICAgICAgICBpZDogbnVtYmVyO1xuICAgICAgICAgIHVzZXI6IHVua25vd247XG4gICAgICAgICAgYm9keTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBjb21taXRfaWQ6IHN0cmluZztcbiAgICAgICAgICBzdGF0ZTogc3RyaW5nO1xuICAgICAgICAgIHN1Ym1pdHRlZF9hdDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfT47XG4gICAgICB9PjtcbiAgICAgIGxpc3RSZXZpZXdDb21tZW50cyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwdWxsX251bWJlcjogbnVtYmVyO1xuICAgICAgICBwZXJfcGFnZT86IG51bWJlcjtcbiAgICAgICAgcGFnZT86IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHtcbiAgICAgICAgZGF0YTogQXJyYXk8e1xuICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgcHVsbF9yZXF1ZXN0X3Jldmlld19pZDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAgICAgbGluZTogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICBzaWRlOiBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IG51bGw7XG4gICAgICAgICAgc3RhcnRfbGluZTogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICBzdGFydF9zaWRlOiBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IG51bGw7XG4gICAgICAgICAgYm9keTogc3RyaW5nO1xuICAgICAgICB9PjtcbiAgICAgIH0+O1xuICAgIH07XG4gICAgcmVwb3M6IHtcbiAgICAgIGdldChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiB7IGRlZmF1bHRfYnJhbmNoOiBzdHJpbmcgfSB9PjtcbiAgICAgIGNyZWF0ZUNvbW1pdFN0YXR1cyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBzaGE6IHN0cmluZztcbiAgICAgICAgc3RhdGU6IFwicGVuZGluZ1wiIHwgXCJzdWNjZXNzXCIgfCBcImZhaWx1cmVcIiB8IFwiZXJyb3JcIjtcbiAgICAgICAgY29udGV4dDogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgICB0YXJnZXRfdXJsPzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBnZXRDb250ZW50KHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgcmVmPzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICBkYXRhOiB7IHNoYTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfSB8IEFycmF5PHVua25vd24+O1xuICAgICAgfT47XG4gICAgICBjcmVhdGVPclVwZGF0ZUZpbGVDb250ZW50cyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAgIGJyYW5jaDogc3RyaW5nO1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICAgICAgc2hhPzogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgfTtcbiAgICBnaXQ6IHtcbiAgICAgIGdldFJlZihwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICByZWY6IHN0cmluZztcbiAgICAgIH0pOiBQcm9taXNlPHsgZGF0YTogeyBvYmplY3Q6IHsgc2hhOiBzdHJpbmcgfSB9IH0+O1xuICAgICAgY3JlYXRlUmVmKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHJlZjogc3RyaW5nO1xuICAgICAgICBzaGE6IHN0cmluZztcbiAgICAgIH0pOiBQcm9taXNlPHVua25vd24+O1xuICAgIH07XG4gIH07XG4gIGdyYXBocWw8VCA9IHVua25vd24+KFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFByb21pc2U8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb0NvbnRleHQge1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlblN0YWdlUHJJbnB1dCB7XG4gIGJhc2U6IHN0cmluZztcbiAgaGVhZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIHN0YWdlOiBcInNwZWNcIiB8IFwicGxhblwiIHwgXCJpbXBsZW1lbnRcIjtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgcmV2aWV3SXRlcmF0aW9uPzogbnVtYmVyO1xuICBkcmFmdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGVuIHRydWUgYW5kIGFuIG9wZW4gUFIgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgaGVhZCBicmFuY2gsIHJldHVybiB0aGVcbiAgICogZXhpc3RpbmcgUFIgd2l0aG91dCBvdmVyd3JpdGluZyBpdHMgdGl0bGUgb3IgYm9keS4gVXNlZCBmb3IgdGhlIGltcGxlbWVudFxuICAgKiBzdGFnZSB3aGVyZSB0aGUgYm9keSBtYXkgYWxyZWFkeSBjb250YWluIGEgU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb25cbiAgICogbWFya2VyIGZyb20gYSBydW5uaW5nIHJldmlldyBsb29wIHRoYXQgbXVzdCBub3QgYmUgY2xvYmJlcmVkLlxuICAgKi9cbiAgcHJlc2VydmVCb2R5SWZFeGlzdHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldmlld0NvbW1lbnQge1xuICBwYXRoOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgbGluZTogbnVtYmVyO1xuICBzaWRlOiBcIkxFRlRcIiB8IFwiUklHSFRcIjtcbiAgc3RhcnRfbGluZT86IG51bWJlcjtcbiAgc3RhcnRfc2lkZT86IFwiTEVGVFwiIHwgXCJSSUdIVFwiO1xufVxuXG50eXBlIFByUmV2aWV3Um93ID0ge1xuICBpZDogbnVtYmVyO1xuICB1c2VyOiB7IGxvZ2luOiBzdHJpbmcgfSB8IG51bGw7XG4gIGJvZHk6IHN0cmluZztcbiAgY29tbWl0X2lkOiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHN1Ym1pdHRlZF9hdDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbnR5cGUgUHJSZXZpZXdDb21tZW50Um93ID0ge1xuICBpZDogbnVtYmVyO1xuICBwdWxsX3JlcXVlc3RfcmV2aWV3X2lkOiBudW1iZXIgfCBudWxsO1xuICBwYXRoOiBzdHJpbmc7XG4gIGxpbmU6IG51bWJlciB8IG51bGw7XG4gIHNpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiIHwgbnVsbDtcbiAgc3RhcnRfbGluZTogbnVtYmVyIHwgbnVsbDtcbiAgc3RhcnRfc2lkZTogXCJMRUZUXCIgfCBcIlJJR0hUXCIgfCBudWxsO1xuICBib2R5OiBzdHJpbmc7XG59O1xuXG50eXBlIElzc3VlQ29tbWVudFJvdyA9IHtcbiAgdXNlcjogeyBsb2dpbjogc3RyaW5nIH0gfCBudWxsO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5jb25zdCBNRVRBREFUQV9PUEVORVIgPSBcIjwhLS0gc2hvcGZsb29yOm1ldGFkYXRhXCI7XG5jb25zdCBNRVRBREFUQV9DTE9TRVIgPSBcIi0tPlwiO1xuY29uc3QgTUVUQURBVEFfV0VMTF9GT1JNRUQgPSAvPCEtLVxccypzaG9wZmxvb3I6bWV0YWRhdGFbXFxzXFxTXSo/LS0+LztcbmNvbnN0IE1FVEFEQVRBX01BTEZPUk1FRF9UQUlMID0gLzwhLS1cXHMqc2hvcGZsb29yOm1ldGFkYXRhW1xcc1xcU10qJC87XG5cbmZ1bmN0aW9uIHJlbmRlcklzc3VlTWV0YWRhdGFCbG9jayhmaWVsZHM6IHtcbiAgc2x1Zz86IHN0cmluZztcbiAgc3BlY1BhdGg/OiBzdHJpbmc7XG4gIHBsYW5QYXRoPzogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gW01FVEFEQVRBX09QRU5FUl07XG4gIGlmIChmaWVsZHMuc2x1ZyAhPT0gdW5kZWZpbmVkKSBsaW5lcy5wdXNoKGBTaG9wZmxvb3ItU2x1ZzogJHtmaWVsZHMuc2x1Z31gKTtcbiAgaWYgKGZpZWxkcy5zcGVjUGF0aCAhPT0gdW5kZWZpbmVkKVxuICAgIGxpbmVzLnB1c2goYFNob3BmbG9vci1TcGVjLVBhdGg6ICR7ZmllbGRzLnNwZWNQYXRofWApO1xuICBpZiAoZmllbGRzLnBsYW5QYXRoICE9PSB1bmRlZmluZWQpXG4gICAgbGluZXMucHVzaChgU2hvcGZsb29yLVBsYW4tUGF0aDogJHtmaWVsZHMucGxhblBhdGh9YCk7XG4gIGxpbmVzLnB1c2goTUVUQURBVEFfQ0xPU0VSKTtcbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG59XG5cbmZ1bmN0aW9uIGFwcGx5TWV0YWRhdGFCbG9jayhib2R5OiBzdHJpbmcgfCBudWxsLCBibG9jazogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keS5sZW5ndGggPT09IDApIHJldHVybiBibG9jaztcbiAgaWYgKE1FVEFEQVRBX1dFTExfRk9STUVELnRlc3QoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5yZXBsYWNlKE1FVEFEQVRBX1dFTExfRk9STUVELCBibG9jayk7XG4gIH1cbiAgaWYgKE1FVEFEQVRBX01BTEZPUk1FRF9UQUlMLnRlc3QoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5yZXBsYWNlKE1FVEFEQVRBX01BTEZPUk1FRF9UQUlMLCBibG9jayk7XG4gIH1cbiAgY29uc3Qgc2VwID0gYm9keS5lbmRzV2l0aChcIlxcblwiKSA/IFwiXFxuXCIgOiBcIlxcblxcblwiO1xuICByZXR1cm4gYCR7Ym9keX0ke3NlcH0ke2Jsb2NrfWA7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvY3Rva2l0OiBPY3Rva2l0TGlrZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcG86IFJlcG9Db250ZXh0LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXVkaXQ/OiBBdWRpdEVtaXR0ZXIsXG4gICkge31cblxuICBhc3luYyBhZGRMYWJlbChpc3N1ZU51bWJlcjogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmFkZExhYmVscyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IGlzc3VlTnVtYmVyLFxuICAgICAgbGFiZWxzOiBbbGFiZWxdLFxuICAgIH0pO1xuICAgIHRoaXMuYXVkaXQ/Lih7IHR5cGU6IFwibGFiZWxfbXV0YXRlZFwiLCBpc3N1ZU51bWJlciwgb3A6IFwiYWRkXCIsIGxhYmVsIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXI6IG51bWJlciwgbGFiZWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMucmVtb3ZlTGFiZWwoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICAgIG5hbWU6IGxhYmVsLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICAvLyBUaGUgbGFiZWwgd2FzIGFscmVhZHkgYWJzZW50LiBTa2lwIHRoZSBhdWRpdCBlbnRyeTogbm8gbXV0YXRpb25cbiAgICAgIC8vIGFjdHVhbGx5IGhhcHBlbmVkLCBhbmQgZW1pdHRpbmcgb25lIHdvdWxkIGZhbHNlbHkgaW1wbHkgYSB3cml0ZS5cbiAgICAgIGlmICgoZXJyIGFzIHsgc3RhdHVzPzogbnVtYmVyIH0pLnN0YXR1cyA9PT0gNDA0KSByZXR1cm47XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIHRoaXMuYXVkaXQ/Lih7IHR5cGU6IFwibGFiZWxfbXV0YXRlZFwiLCBpc3N1ZU51bWJlciwgb3A6IFwicmVtb3ZlXCIsIGxhYmVsIH0pO1xuICB9XG5cbiAgLy8gQmF0Y2hlcyBhIGxhYmVsIHRyYW5zaXRpb246IHJlbW92ZSB0aGUgbGlzdGVkIGxhYmVscyAoNDA0LXRvbGVyYW50IHZpYVxuICAvLyByZW1vdmVMYWJlbCkgYW5kIHRoZW4gYWRkIHRoZSBsaXN0ZWQgbGFiZWxzLiBUaGUgb3JjaGVzdHJhdG9yIHVzZXMgdGhpcyBzb1xuICAvLyBlYWNoIHN0YWdlIHRyYW5zaXRpb24gaXMgYSBzaW5nbGUgY2FsbCBzaXRlIHRoYXQgbWlycm9ycyBhIHNpbmdsZVxuICAvLyBsYWJlbF9hcHBsaWVkIGF1ZGl0IGV2ZW50LlxuICBhc3luYyByZXBsYWNlTGFiZWxzKFxuICAgIGlzc3VlTnVtYmVyOiBudW1iZXIsXG4gICAgY2hhbmdlOiB7IGFkZDogc3RyaW5nW107IHJlbW92ZTogc3RyaW5nW10gfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBsYWJlbCBvZiBjaGFuZ2UucmVtb3ZlKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBsYWJlbCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2UuYWRkLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5hZGRMYWJlbHMoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICAgIGxhYmVsczogY2hhbmdlLmFkZCxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBsYWJlbCBvZiBjaGFuZ2UuYWRkKSB7XG4gICAgICAgIHRoaXMuYXVkaXQ/Lih7IHR5cGU6IFwibGFiZWxfbXV0YXRlZFwiLCBpc3N1ZU51bWJlciwgb3A6IFwiYWRkXCIsIGxhYmVsIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBvc3RJc3N1ZUNvbW1lbnQoaXNzdWVOdW1iZXI6IG51bWJlciwgYm9keTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMuY3JlYXRlQ29tbWVudCh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IGlzc3VlTnVtYmVyLFxuICAgICAgYm9keSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzLmRhdGEuaWQ7XG4gIH1cblxuICBhc3luYyB1cGRhdGVDb21tZW50KGNvbW1lbnRJZDogbnVtYmVyLCBib2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMudXBkYXRlQ29tbWVudCh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBjb21tZW50X2lkOiBjb21tZW50SWQsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmluZE9wZW5QckJ5SGVhZChcbiAgICBoZWFkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyBudW1iZXI6IG51bWJlcjsgdXJsOiBzdHJpbmcgfSB8IG51bGw+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGhlYWQ6IGAke3RoaXMucmVwby5vd25lcn06JHtoZWFkfWAsXG4gICAgICBzdGF0ZTogXCJvcGVuXCIsXG4gICAgICBwZXJfcGFnZTogMSxcbiAgICB9KTtcbiAgICBpZiAoIXJlcy5kYXRhIHx8IHJlcy5kYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcHIgPSByZXMuZGF0YVswXTtcbiAgICBpZiAoIXByKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4geyBudW1iZXI6IHByLm51bWJlciwgdXJsOiBwci5odG1sX3VybCB9O1xuICB9XG5cbiAgLy8gR2l0SHViJ3MgcHVsbHMubGlzdCBgaGVhZGAgZmlsdGVyIHJlcXVpcmVzIGFuIGV4YWN0IGA8b3duZXI+OjxicmFuY2g+YFxuICAvLyBtYXRjaCAtLSBubyBwcmVmaXggb3Igd2lsZGNhcmQgc3VwcG9ydCAtLSBhbmQgdGhlIGlzc3VlLXVubGFiZWwgcGF5bG9hZFxuICAvLyBvbmx5IGNhcnJpZXMgdGhlIGlzc3VlIG51bWJlciwgbm90IHRoZSBzbHVnLiBTbyB3ZSBwYWdlIHRocm91Z2ggb3BlbiBQUnNcbiAgLy8gYW5kIGZpbHRlciBjbGllbnQtc2lkZSBvbiB0aGUgY2Fub25pY2FsIGltcGwgYnJhbmNoIHByZWZpeC5cbiAgYXN5bmMgZmluZE9wZW5JbXBsUHJGb3JJc3N1ZShcbiAgICBpc3N1ZU51bWJlcjogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgbnVtYmVyOiBudW1iZXI7IGJvZHk6IHN0cmluZyB8IG51bGwgfSB8IG51bGw+IHtcbiAgICBjb25zdCBwcmVmaXggPSBgc2hvcGZsb29yL2ltcGwvJHtpc3N1ZU51bWJlcn0tYDtcbiAgICBsZXQgcGFnZSA9IDE7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMubGlzdCh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgc3RhdGU6IFwib3BlblwiLFxuICAgICAgICBwZXJfcGFnZTogMTAwLFxuICAgICAgICBwYWdlLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHByIG9mIHJlcy5kYXRhKSB7XG4gICAgICAgIGlmIChwci5oZWFkPy5yZWY/LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgIHJldHVybiB7IG51bWJlcjogcHIubnVtYmVyLCBib2R5OiBwci5ib2R5ID8/IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA8IDEwMCkgcmV0dXJuIG51bGw7XG4gICAgICBwYWdlKys7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3BlblN0YWdlUHIoXG4gICAgaW5wdXQ6IE9wZW5TdGFnZVBySW5wdXQsXG4gICk6IFByb21pc2U8eyBudW1iZXI6IG51bWJlcjsgdXJsOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IG1ldGFkYXRhTGluZXM6IHN0cmluZ1tdID0gW1xuICAgICAgXCJcIixcbiAgICAgIFwiLS0tXCIsXG4gICAgICBgU2hvcGZsb29yLUlzc3VlOiAjJHtpbnB1dC5pc3N1ZU51bWJlcn1gLFxuICAgICAgYFNob3BmbG9vci1TdGFnZTogJHtpbnB1dC5zdGFnZX1gLFxuICAgIF07XG4gICAgaWYgKGlucHV0LnN0YWdlID09PSBcImltcGxlbWVudFwiKSB7XG4gICAgICBtZXRhZGF0YUxpbmVzLnB1c2goXG4gICAgICAgIGBTaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjogJHtpbnB1dC5yZXZpZXdJdGVyYXRpb24gPz8gMH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IGAke2lucHV0LmJvZHl9XFxuJHttZXRhZGF0YUxpbmVzLmpvaW4oXCJcXG5cIil9XFxuYDtcblxuICAgIC8vIFVwc2VydDogaWYgYSBwcmV2aW91cyBydW4gKG9yIGFuIG9wZW4gcmV2aWV3IGxvb3ApIGFscmVhZHkgbGVmdCBhbiBvcGVuXG4gICAgLy8gUFIgZm9yIHRoaXMgaGVhZCBicmFuY2gsIHJldXNlIGl0IGluc3RlYWQgb2YgZmFpbGluZyB3aXRoIFwiQSBwdWxsXG4gICAgLy8gcmVxdWVzdCBhbHJlYWR5IGV4aXN0c1wiLiBGb3Igc3BlYy9wbGFuIHdlIGFsc28gcmVmcmVzaCB0aGUgdGl0bGUvYm9keVxuICAgIC8vIHNvIHRoZSBQUiByZWZsZWN0cyB0aGUgbGF0ZXN0IHN0YWdlIG91dHB1dC4gRm9yIGltcGxlbWVudCB3ZSBwcmVzZXJ2ZVxuICAgIC8vIHdoYXRldmVyJ3Mgb24gdGhlIFBSIChwZXIgcHJlc2VydmVCb2R5SWZFeGlzdHMpIGJlY2F1c2UgdGhlIGJvZHkgbWF5XG4gICAgLy8gY2FycnkgYSBTaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbiBtYXJrZXIgZnJvbSB0aGUgcmV2aWV3IGZsb3cuXG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmZpbmRPcGVuUHJCeUhlYWQoaW5wdXQuaGVhZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAoIWlucHV0LnByZXNlcnZlQm9keUlmRXhpc3RzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLnVwZGF0ZSh7XG4gICAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICAgIHB1bGxfbnVtYmVyOiBleGlzdGluZy5udW1iZXIsXG4gICAgICAgICAgdGl0bGU6IGlucHV0LnRpdGxlLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmNyZWF0ZSh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBiYXNlOiBpbnB1dC5iYXNlLFxuICAgICAgaGVhZDogaW5wdXQuaGVhZCxcbiAgICAgIHRpdGxlOiBpbnB1dC50aXRsZSxcbiAgICAgIGJvZHksXG4gICAgICBkcmFmdDogaW5wdXQuZHJhZnQgPz8gZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbnVtYmVyOiByZXMuZGF0YS5udW1iZXIsIHVybDogcmVzLmRhdGEuaHRtbF91cmwgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByQm9keShwck51bWJlcjogbnVtYmVyLCBib2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy51cGRhdGUoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgcHVsbF9udW1iZXI6IHByTnVtYmVyLFxuICAgICAgYm9keSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByKFxuICAgIHByTnVtYmVyOiBudW1iZXIsXG4gICAgZmllbGRzOiB7IHRpdGxlPzogc3RyaW5nOyBib2R5Pzogc3RyaW5nIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLnVwZGF0ZSh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICAuLi5maWVsZHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwb3N0UmV2aWV3KHBhcmFtczoge1xuICAgIHByTnVtYmVyOiBudW1iZXI7XG4gICAgY29tbWl0U2hhOiBzdHJpbmc7XG4gICAgZXZlbnQ6IFwiQVBQUk9WRVwiIHwgXCJSRVFVRVNUX0NIQU5HRVNcIiB8IFwiQ09NTUVOVFwiO1xuICAgIGJvZHk6IHN0cmluZztcbiAgICBjb21tZW50czogUmV2aWV3Q29tbWVudFtdO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMuY3JlYXRlUmV2aWV3KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHB1bGxfbnVtYmVyOiBwYXJhbXMucHJOdW1iZXIsXG4gICAgICBjb21taXRfaWQ6IHBhcmFtcy5jb21taXRTaGEsXG4gICAgICBldmVudDogcGFyYW1zLmV2ZW50LFxuICAgICAgYm9keTogcGFyYW1zLmJvZHksXG4gICAgICBjb21tZW50czogcGFyYW1zLmNvbW1lbnRzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmV2aWV3U3RhdHVzKFxuICAgIHNoYTogc3RyaW5nLFxuICAgIHN0YXRlOiBcInBlbmRpbmdcIiB8IFwic3VjY2Vzc1wiIHwgXCJmYWlsdXJlXCIgfCBcImVycm9yXCIsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICB0YXJnZXRVcmw/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnJlcG9zLmNyZWF0ZUNvbW1pdFN0YXR1cyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBzaGEsXG4gICAgICBzdGF0ZSxcbiAgICAgIGNvbnRleHQ6IFwic2hvcGZsb29yL3Jldmlld1wiLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDE0MCksXG4gICAgICAuLi4odGFyZ2V0VXJsICE9PSB1bmRlZmluZWQgPyB7IHRhcmdldF91cmw6IHRhcmdldFVybCB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdFJlcG9MYWJlbHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0TGFiZWxzRm9yUmVwbyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwZXJfcGFnZTogMTAwLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGF0YS5tYXAoKGwpID0+IGwubmFtZSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVMYWJlbChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY29sb3I6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5jcmVhdGVMYWJlbCh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8geyBkZXNjcmlwdGlvbiB9IDoge30pLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBpZiAoKGVyciBhcyB7IHN0YXR1cz86IG51bWJlciB9KS5zdGF0dXMgPT09IDQyMikgcmV0dXJuO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8vIExpc3QgdGhlIHJlcG8ncyBleGlzdGluZyBsYWJlbHMgb25jZSBhbmQgY3JlYXRlIGFueSBmcm9tIGBkZWZzYCB0aGF0IGFyZVxuICAvLyBtaXNzaW5nLiBJZGVtcG90ZW50OiBleGlzdGluZyBsYWJlbHMgYXJlIGxlZnQgYWxvbmUgKGNvbG9ycyAvIGRlc2NyaXB0aW9uc1xuICAvLyBvbiBhIGxhYmVsIGFscmVhZHkgcHJvdmlzaW9uZWQgYnkgYW4gZWFybGllciBydW4gLS0gb3IgaGFuZC1lZGl0ZWQgYnkgYVxuICAvLyBtYWludGFpbmVyIC0tIGFyZSBub3Qgb3ZlcndyaXR0ZW4pLlxuICBhc3luYyBib290c3RyYXBMYWJlbHMoXG4gICAgZGVmczogUmVhZG9ubHlBcnJheTx7IG5hbWU6IHN0cmluZzsgY29sb3I6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9PixcbiAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbmV3IFNldChhd2FpdCB0aGlzLmxpc3RSZXBvTGFiZWxzKCkpO1xuICAgIGNvbnN0IGNyZWF0ZWQ6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBkZWYgb2YgZGVmcykge1xuICAgICAgaWYgKGV4aXN0aW5nLmhhcyhkZWYubmFtZSkpIGNvbnRpbnVlO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVMYWJlbChkZWYubmFtZSwgZGVmLmNvbG9yLCBkZWYuZGVzY3JpcHRpb24pO1xuICAgICAgY3JlYXRlZC5wdXNoKGRlZi5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZWQ7XG4gIH1cblxuICBhc3luYyBjbG9zZUlzc3VlKGlzc3VlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMudXBkYXRlKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICBzdGF0ZTogXCJjbG9zZWRcIixcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFByKHByTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHtcbiAgICBzdGF0ZTogXCJvcGVuXCIgfCBcImNsb3NlZFwiO1xuICAgIGRyYWZ0OiBib29sZWFuO1xuICAgIG1lcmdlZDogYm9vbGVhbjtcbiAgICBsYWJlbHM6IEFycmF5PHsgbmFtZTogc3RyaW5nIH0+O1xuICAgIGhlYWQ6IHsgc2hhOiBzdHJpbmcgfTtcbiAgICBiYXNlOiB7IHJlZjogc3RyaW5nIH07XG4gICAgYm9keTogc3RyaW5nIHwgbnVsbDtcbiAgfT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmdldCh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy5kYXRhIGFzIG5ldmVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGVmYXVsdEJyYW5jaCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnJlcG9zLmdldCh7IC4uLnRoaXMucmVwbyB9KTtcbiAgICByZXR1cm4gcmVzLmRhdGEuZGVmYXVsdF9icmFuY2g7XG4gIH1cblxuICBhc3luYyBsaXN0Q2hhbmdlZEZpbGVzKHByTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHBhZ2UgPSAxO1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmxpc3RGaWxlcyh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgcHVsbF9udW1iZXI6IHByTnVtYmVyLFxuICAgICAgICBwZXJfcGFnZTogMTAwLFxuICAgICAgICBwYWdlLFxuICAgICAgfSk7XG4gICAgICBmaWxlcy5wdXNoKC4uLnJlcy5kYXRhLm1hcCgoZikgPT4gZi5maWxlbmFtZSkpO1xuICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA8IDEwMCkgYnJlYWs7XG4gICAgICBwYWdlKys7XG4gICAgfVxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIGFzeW5jIGxpc3RDaGFuZ2VkRmlsZVBhdGNoZXMocHJOdW1iZXI6IG51bWJlcik6IFByb21pc2U8XG4gICAgQXJyYXk8e1xuICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgIHBhdGNoPzogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfT5cbiAgPiB7XG4gICAgY29uc3Qgb3V0OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IHBhdGNoPzogc3RyaW5nOyBzdGF0dXM6IHN0cmluZyB9PiA9IFtdO1xuICAgIGxldCBwYWdlID0gMTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0RmlsZXMoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICAgICAgcGVyX3BhZ2U6IDEwMCxcbiAgICAgICAgcGFnZSxcbiAgICAgIH0pO1xuICAgICAgb3V0LnB1c2goXG4gICAgICAgIC4uLnJlcy5kYXRhLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICBmaWxlbmFtZTogZi5maWxlbmFtZSxcbiAgICAgICAgICAuLi4oZi5wYXRjaCAhPT0gdW5kZWZpbmVkID8geyBwYXRjaDogZi5wYXRjaCB9IDoge30pLFxuICAgICAgICAgIHN0YXR1czogZi5zdGF0dXMsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgICBpZiAocmVzLmRhdGEubGVuZ3RoIDwgMTAwKSBicmVhaztcbiAgICAgIHBhZ2UrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGFzeW5jIGdldElzc3VlKGlzc3VlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHtcbiAgICBsYWJlbHM6IEFycmF5PHsgbmFtZTogc3RyaW5nIH0+O1xuICAgIHN0YXRlOiBcIm9wZW5cIiB8IFwiY2xvc2VkXCI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBib2R5OiBzdHJpbmcgfCBudWxsO1xuICB9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmdldCh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IGlzc3VlTnVtYmVyLFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbHM6IHJlcy5kYXRhLmxhYmVscyBhcyBBcnJheTx7IG5hbWU6IHN0cmluZyB9PixcbiAgICAgIHN0YXRlOiByZXMuZGF0YS5zdGF0ZSBhcyBcIm9wZW5cIiB8IFwiY2xvc2VkXCIsXG4gICAgICB0aXRsZTogKHJlcy5kYXRhLnRpdGxlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gXCJcIixcbiAgICAgIGJvZHk6IChyZXMuZGF0YS5ib2R5IGFzIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpID8/IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUlzc3VlQm9keShpc3N1ZU51bWJlcjogbnVtYmVyLCBib2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMudXBkYXRlKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhZCB0aGUgY3VycmVudCBzaG9wZmxvb3I6bWV0YWRhdGEgYmxvY2sgZnJvbSB0aGUgaXNzdWUgYm9keSwgbWVyZ2UgdGhlXG4gIC8vIHN1cHBsaWVkIGZpZWxkcyBvbiB0b3AsIGFuZCB3cml0ZSB0aGUgcmVzdWx0aW5nIGJvZHkgYmFjay4gTWVyZ2luZyBtZWFuc1xuICAvLyBhIGNhbGxlciBjYW4gdXBzZXJ0IG9uZSBmaWVsZCBhdCBhIHRpbWUgKGUuZy4gdHJpYWdlIHdyaXRlcyBzbHVnLCBwbGFuXG4gIC8vIGxhdGVyIHdyaXRlcyBwbGFuUGF0aCkgd2l0aG91dCBjbG9iYmVyaW5nIGVhcmxpZXIgZmllbGRzLiBUaGUgYmxvY2sgbGl2ZXNcbiAgLy8gaW4gYW4gSFRNTCBjb21tZW50IHNvIGl0IGRvZXMgbm90IHJlbmRlciBpbiBHaXRIdWIncyB3ZWIgVUkuXG4gIGFzeW5jIHVwc2VydElzc3VlTWV0YWRhdGEoXG4gICAgaXNzdWVOdW1iZXI6IG51bWJlcixcbiAgICBmaWVsZHM6IHsgc2x1Zz86IHN0cmluZzsgc3BlY1BhdGg/OiBzdHJpbmc7IHBsYW5QYXRoPzogc3RyaW5nIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmdldElzc3VlKGlzc3VlTnVtYmVyKTtcbiAgICBjb25zdCBleGlzdGluZyA9IHBhcnNlSXNzdWVNZXRhZGF0YShjdXJyZW50LmJvZHkpO1xuICAgIGNvbnN0IG1lcmdlZCA9IHsgLi4uKGV4aXN0aW5nID8/IHt9KSwgLi4uZmllbGRzIH07XG4gICAgY29uc3QgYmxvY2sgPSByZW5kZXJJc3N1ZU1ldGFkYXRhQmxvY2sobWVyZ2VkKTtcbiAgICBjb25zdCBuZXh0Qm9keSA9IGFwcGx5TWV0YWRhdGFCbG9jayhjdXJyZW50LmJvZHksIGJsb2NrKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUlzc3VlQm9keShpc3N1ZU51bWJlciwgbmV4dEJvZHkpO1xuICB9XG5cbiAgLy8gVGhlIEdpdEh1YiBSRVNUIEFQSSBkb2VzIG5vdCBleHBvc2UgYSB3YXkgdG8gZmxpcCBhIFBSIGZyb20gZHJhZnQgdG9cbiAgLy8gcmVhZHktZm9yLXJldmlldy4gVGhlIEdyYXBoUUwgbXV0YXRpb24gbWFya1B1bGxSZXF1ZXN0UmVhZHlGb3JSZXZpZXcgaXNcbiAgLy8gdGhlIG9ubHkgcGF0aC4gV2UgZmlyc3QgZmV0Y2ggdGhlIFBSJ3Mgbm9kZV9pZCB2aWEgUkVTVCB0byBhdm9pZCBhIHNlY29uZFxuICAvLyBHcmFwaFFMIGxvb2t1cC5cbiAgYXN5bmMgbWFya1B1bGxSZXF1ZXN0UmVhZHlGb3JSZXZpZXcocHJOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmdldCh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgfSk7XG4gICAgY29uc3Qgbm9kZUlkID0gcmVzLmRhdGEubm9kZV9pZDtcbiAgICBpZiAoIW5vZGVJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWFya1B1bGxSZXF1ZXN0UmVhZHlGb3JSZXZpZXc6IFBSICMke3ByTnVtYmVyfSBoYXMgbm8gbm9kZV9pZGAsXG4gICAgICApO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm9jdG9raXQuZ3JhcGhxbChcbiAgICAgIGBtdXRhdGlvbigkaWQ6IElEISkge1xuICAgICAgICAgbWFya1B1bGxSZXF1ZXN0UmVhZHlGb3JSZXZpZXcoaW5wdXQ6IHsgcHVsbFJlcXVlc3RJZDogJGlkIH0pIHtcbiAgICAgICAgICAgcHVsbFJlcXVlc3QgeyBpZCBpc0RyYWZ0IH1cbiAgICAgICAgIH1cbiAgICAgICB9YCxcbiAgICAgIHsgaWQ6IG5vZGVJZCB9LFxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRQclJldmlld3NBdFNoYShcbiAgICBwck51bWJlcjogbnVtYmVyLFxuICAgIHNoYTogc3RyaW5nLFxuICApOiBQcm9taXNlPFxuICAgIEFycmF5PHsgaWQ6IG51bWJlcjsgdXNlcjogeyBsb2dpbjogc3RyaW5nIH0gfCBudWxsOyBib2R5OiBzdHJpbmcgfT5cbiAgPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMubGlzdFJldmlld3Moe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgcHVsbF9udW1iZXI6IHByTnVtYmVyLFxuICAgICAgcGVyX3BhZ2U6IDEwMCxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzLmRhdGFcbiAgICAgIC5maWx0ZXIoKHIpID0+IHIuY29tbWl0X2lkID09PSBzaGEpXG4gICAgICAubWFwKChyKSA9PiAoe1xuICAgICAgICBpZDogci5pZCxcbiAgICAgICAgdXNlcjogci51c2VyIGFzIHsgbG9naW46IHN0cmluZyB9IHwgbnVsbCxcbiAgICAgICAgYm9keTogci5ib2R5ID8/IFwiXCIsXG4gICAgICB9KSk7XG4gIH1cblxuICBhc3luYyBsaXN0UHJSZXZpZXdzKHByTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFByUmV2aWV3Um93W10+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0UmV2aWV3cyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICBwZXJfcGFnZTogMTAwLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGF0YS5tYXAoKHIpID0+ICh7XG4gICAgICBpZDogci5pZCxcbiAgICAgIHVzZXI6IHIudXNlciBhcyB7IGxvZ2luOiBzdHJpbmcgfSB8IG51bGwsXG4gICAgICBib2R5OiByLmJvZHkgPz8gXCJcIixcbiAgICAgIGNvbW1pdF9pZDogci5jb21taXRfaWQsXG4gICAgICBzdGF0ZTogci5zdGF0ZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgc3VibWl0dGVkX2F0OiByLnN1Ym1pdHRlZF9hdCxcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBsaXN0UHJSZXZpZXdDb21tZW50cyhwck51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxQclJldmlld0NvbW1lbnRSb3dbXT4ge1xuICAgIGNvbnN0IGFsbDogUHJSZXZpZXdDb21tZW50Um93W10gPSBbXTtcbiAgICBsZXQgcGFnZSA9IDE7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMubGlzdFJldmlld0NvbW1lbnRzKHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgICAgIHBhZ2UsXG4gICAgICB9KTtcbiAgICAgIGFsbC5wdXNoKFxuICAgICAgICAuLi5yZXMuZGF0YS5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgaWQ6IGMuaWQsXG4gICAgICAgICAgcHVsbF9yZXF1ZXN0X3Jldmlld19pZDogYy5wdWxsX3JlcXVlc3RfcmV2aWV3X2lkLFxuICAgICAgICAgIHBhdGg6IGMucGF0aCxcbiAgICAgICAgICBsaW5lOiBjLmxpbmUsXG4gICAgICAgICAgc2lkZTogYy5zaWRlLFxuICAgICAgICAgIHN0YXJ0X2xpbmU6IGMuc3RhcnRfbGluZSxcbiAgICAgICAgICBzdGFydF9zaWRlOiBjLnN0YXJ0X3NpZGUsXG4gICAgICAgICAgYm9keTogYy5ib2R5LFxuICAgICAgICB9KSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA8IDEwMCkgYnJlYWs7XG4gICAgICBwYWdlKys7XG4gICAgfVxuICAgIHJldHVybiBhbGw7XG4gIH1cblxuICBhc3luYyBnZXRSZWZTaGEoYnJhbmNoTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5naXQuZ2V0UmVmKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHJlZjogYGhlYWRzLyR7YnJhbmNoTmFtZX1gLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGF0YS5vYmplY3Quc2hhO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUmVmKGJyYW5jaE5hbWU6IHN0cmluZywgc2hhOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuZ2l0LmNyZWF0ZVJlZih7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgcmVmOiBgcmVmcy9oZWFkcy8ke2JyYW5jaE5hbWV9YCxcbiAgICAgICAgc2hhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmICgoZXJyIGFzIHsgc3RhdHVzPzogbnVtYmVyIH0pLnN0YXR1cyA9PT0gNDIyKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RmlsZVNoYShwYXRoOiBzdHJpbmcsIGJyYW5jaDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnJlcG9zLmdldENvbnRlbnQoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgfSk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMuZGF0YSkpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHJlcy5kYXRhLnNoYTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmICgoZXJyIGFzIHsgc3RhdHVzPzogbnVtYmVyIH0pLnN0YXR1cyA9PT0gNDA0KSByZXR1cm4gbnVsbDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwdXRGaWxlQ29udGVudHMoaW5wdXQ6IHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgYnJhbmNoOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBzaGE/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5yZXBvcy5jcmVhdGVPclVwZGF0ZUZpbGVDb250ZW50cyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgYnJhbmNoOiBpbnB1dC5icmFuY2gsXG4gICAgICBtZXNzYWdlOiBpbnB1dC5tZXNzYWdlLFxuICAgICAgY29udGVudDogQnVmZmVyLmZyb20oaW5wdXQuY29udGVudCwgXCJ1dGY4XCIpLnRvU3RyaW5nKFwiYmFzZTY0XCIpLFxuICAgICAgLi4uKGlucHV0LnNoYSA/IHsgc2hhOiBpbnB1dC5zaGEgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RJc3N1ZUNvbW1lbnRzKGlzc3VlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPElzc3VlQ29tbWVudFJvd1tdPiB7XG4gICAgY29uc3QgYWxsOiBJc3N1ZUNvbW1lbnRSb3dbXSA9IFtdO1xuICAgIGxldCBwYWdlID0gMTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMubGlzdENvbW1lbnRzKHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICBpc3N1ZV9udW1iZXI6IGlzc3VlTnVtYmVyLFxuICAgICAgICBwZXJfcGFnZTogMTAwLFxuICAgICAgICBwYWdlLFxuICAgICAgfSk7XG4gICAgICBhbGwucHVzaChcbiAgICAgICAgLi4ucmVzLmRhdGEubWFwKChjKSA9PiAoe1xuICAgICAgICAgIHVzZXI6IGMudXNlciBhcyB7IGxvZ2luOiBzdHJpbmcgfSB8IG51bGwsXG4gICAgICAgICAgY3JlYXRlZF9hdDogYy5jcmVhdGVkX2F0LFxuICAgICAgICAgIGJvZHk6IGMuYm9keSxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcbiAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGggPCAxMDApIGJyZWFrO1xuICAgICAgcGFnZSsrO1xuICAgIH1cbiAgICByZXR1cm4gYWxsO1xuICB9XG59XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiQGFjdGlvbnMvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi9zdGFnZXMvX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVQcm9ncmVzc0NvbW1lbnQgfSBmcm9tIFwiLi9zdGFnZXMvX3NoYXJlZC9wcm9ncmVzcy1jb21tZW50LmpzXCI7XG5pbXBvcnQgeyBhcHBseUltcGxlbWVudCB9IGZyb20gXCIuL3N0YWdlcy9pbXBsZW1lbnQvYXBwbHkuanNcIjtcbmltcG9ydCB7IHJ1bkltcGxlbWVudCB9IGZyb20gXCIuL3N0YWdlcy9pbXBsZW1lbnQvcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBhcHBseVBsYW4gfSBmcm9tIFwiLi9zdGFnZXMvcGxhbi9hcHBseS5qc1wiO1xuaW1wb3J0IHsgcnVuUGxhbiB9IGZyb20gXCIuL3N0YWdlcy9wbGFuL3J1bm5lci5qc1wiO1xuaW1wb3J0IHsgYWdncmVnYXRlRmluZGluZ3MgfSBmcm9tIFwiLi9zdGFnZXMvcmV2aWV3L2FnZ3JlZ2F0ZS5qc1wiO1xuaW1wb3J0IHsgYXBwbHlSZXZpZXcgfSBmcm9tIFwiLi9zdGFnZXMvcmV2aWV3L2FwcGx5LmpzXCI7XG5pbXBvcnQgeyBydW5SZXZpZXcgfSBmcm9tIFwiLi9zdGFnZXMvcmV2aWV3L3J1bm5lci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlTcGVjIH0gZnJvbSBcIi4vc3RhZ2VzL3NwZWMvYXBwbHkuanNcIjtcbmltcG9ydCB7IHJ1blNwZWMgfSBmcm9tIFwiLi9zdGFnZXMvc3BlYy9ydW5uZXIuanNcIjtcbmltcG9ydCB7IGFwcGx5VHJpYWdlIH0gZnJvbSBcIi4vc3RhZ2VzL3RyaWFnZS9hcHBseS5qc1wiO1xuaW1wb3J0IHsgcnVuVHJpYWdlIH0gZnJvbSBcIi4vc3RhZ2VzL3RyaWFnZS9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2UgfSBmcm9tIFwiLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB7IHBhcnNlSXNzdWVNZXRhZGF0YSB9IGZyb20gXCIuL3N0YXRlL21ldGFkYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJvdXRlckRlY2lzaW9uIH0gZnJvbSBcIi4vc3RhdGUvdHlwZXMuanNcIjtcblxuY29uc3QgQ09ORklERU5DRV9USFJFU0hPTEQgPSA2MDtcblxuLy8gRWFjaCBzdGFnZSBoYW5kbGVyIGFzc2VtYmxlcyBpdHMgb3duIGV4dHJhcyAocmV2aXNpb24gY29udGV4dCwgcHJvZ3Jlc3Ncbi8vIGNvbW1lbnQsIFBSL2ZpbGUgbG9va3Vwcykgc28gdGhlIG9yY2hlc3RyYXRvciBzdGF5cyBnZW5lcmljLiBSZXR1cm5pbmcgdGhlXG4vLyBzdGFnZSBuYW1lIGlzIHB1cmVseSBpbmZvcm1hdGlvbmFsIGZvciBhdWRpdCBsb2dzLlxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUhhbmRsZXIge1xuICBleGVjdXRlKGN0eDogU3RhZ2VDb250ZXh0LCBkZWNpc2lvbjogUm91dGVyRGVjaXNpb24pOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZFNwZWNSZXZpc2lvbkJsb2NrKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYnJhbmNoTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHJldHVybiBcIlwiO1xuICBjb25zdCBvcGVuID0gYXdhaXQgY3R4LmdpdGh1Yi5maW5kT3BlblByQnlIZWFkKGJyYW5jaE5hbWUpO1xuICBpZiAoIW9wZW4pIHJldHVybiBcIlwiO1xuICBjb25zdCByZXZpZXdzID0gYXdhaXQgY3R4LmdpdGh1Yi5saXN0UHJSZXZpZXdzKG9wZW4ubnVtYmVyKTtcbiAgY29uc3QgcmVxdWVzdENoYW5nZXMgPSByZXZpZXdzXG4gICAgLmZpbHRlcigocikgPT4gci5zdGF0ZSA9PT0gXCJjaGFuZ2VzX3JlcXVlc3RlZFwiKVxuICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBhVCA9IGEuc3VibWl0dGVkX2F0ID8/IFwiXCI7XG4gICAgICBjb25zdCBiVCA9IGIuc3VibWl0dGVkX2F0ID8/IFwiXCI7XG4gICAgICBjb25zdCBjbXAgPSBiVC5sb2NhbGVDb21wYXJlKGFUKTtcbiAgICAgIHJldHVybiBjbXAgIT09IDAgPyBjbXAgOiBiLmlkIC0gYS5pZDtcbiAgICB9KTtcbiAgaWYgKHJlcXVlc3RDaGFuZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCI7XG4gIGNvbnN0IGxhdGVzdCA9IHJlcXVlc3RDaGFuZ2VzWzBdITtcbiAgcmV0dXJuIFtcbiAgICBcIiMjIFJldmlzaW9uIGZlZWRiYWNrXCIsXG4gICAgXCJcIixcbiAgICBcIlRoZSBwcmV2aW91cyBQUiBmb3IgdGhpcyBzdGFnZSB3YXMgcmV2aWV3ZWQgYW5kIHRoZSByZXZpZXdlciByZXF1ZXN0ZWRcIixcbiAgICBcImNoYW5nZXMuIEFkZHJlc3MgdGhlIGZvbGxvd2luZyBiZWZvcmUgcmVzdWJtaXR0aW5nOlwiLFxuICAgIFwiXCIsXG4gICAgbGF0ZXN0LmJvZHkgfHwgXCIobm8gc3VtbWFyeSlcIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmb3JtYXRJc3N1ZUNvbW1lbnRzKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgaXNzdWVOdW1iZXI6IG51bWJlcixcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNvbW1lbnRzID0gYXdhaXQgY3R4LmdpdGh1Yi5saXN0SXNzdWVDb21tZW50cyhpc3N1ZU51bWJlcik7XG4gIGlmIChjb21tZW50cy5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuICByZXR1cm4gY29tbWVudHNcbiAgICAubWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgIGAqKkAke2MudXNlcj8ubG9naW4gPz8gXCJ1bmtub3duXCJ9KiogKCR7Yy5jcmVhdGVkX2F0fSk6XFxuJHtjLmJvZHkgPz8gXCJcIn1gLFxuICAgIClcbiAgICAuam9pbihcIlxcblxcbi0tLVxcblxcblwiKTtcbn1cblxuZXhwb3J0IGNvbnN0IFJVTk5FUlM6IFJlY29yZDxTdGFnZSwgU3RhZ2VIYW5kbGVyPiA9IHtcbiAgdHJpYWdlOiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjdHgpIHtcbiAgICAgIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJ0cmlhZ2Ugc3RhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICAgICAgY29uc3QgaXNzdWVDb21tZW50cyA9IGF3YWl0IGZvcm1hdElzc3VlQ29tbWVudHMoY3R4LCBjdHguaXNzdWUubnVtYmVyKTtcbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gYXdhaXQgcnVuVHJpYWdlKGN0eCwgeyBpc3N1ZUNvbW1lbnRzIH0pO1xuICAgICAgYXdhaXQgYXBwbHlUcmlhZ2UoY3R4LCB7IGRlY2lzaW9uLCBiYXNlQnJhbmNoOiBjdHguZGVmYXVsdEJyYW5jaCB9KTtcbiAgICB9LFxuICB9LFxuXG4gIHNwZWM6IHtcbiAgICBhc3luYyBleGVjdXRlKGN0eCwgcm91dGVkKSB7XG4gICAgICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwic3BlYyBzdGFnZSByZXF1aXJlcyBjdHguaXNzdWVcIik7XG4gICAgICBjb25zdCBicmFuY2hOYW1lID0gcm91dGVkLmJyYW5jaE5hbWU7XG4gICAgICBjb25zdCBzcGVjRmlsZVBhdGggPSByb3V0ZWQuc3BlY0ZpbGVQYXRoO1xuICAgICAgaWYgKCFicmFuY2hOYW1lIHx8ICFzcGVjRmlsZVBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3BlYyBzdGFnZSByZXF1aXJlcyBicmFuY2hOYW1lIGFuZCBzcGVjRmlsZVBhdGhcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlSXNzdWVNZXRhZGF0YShjdHguaXNzdWUuYm9keSk7XG4gICAgICBjb25zdCB0cmlhZ2VSYXRpb25hbGUgPSBtZXRhZGF0YT8uc2x1ZyA/PyBcIlwiO1xuICAgICAgY29uc3QgaXNzdWVDb21tZW50cyA9IGF3YWl0IGZvcm1hdElzc3VlQ29tbWVudHMoY3R4LCBjdHguaXNzdWUubnVtYmVyKTtcbiAgICAgIGNvbnN0IHJldmlzaW9uQmxvY2sgPSByb3V0ZWQucmV2aXNpb25Nb2RlXG4gICAgICAgID8gYXdhaXQgYnVpbGRTcGVjUmV2aXNpb25CbG9jayhjdHgsIGJyYW5jaE5hbWUpXG4gICAgICAgIDogXCJcIjtcbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gYXdhaXQgcnVuU3BlYyhjdHgsIHtcbiAgICAgICAgYnJhbmNoTmFtZSxcbiAgICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgICAgICByZXZpc2lvbkJsb2NrLFxuICAgICAgICBpc3N1ZUNvbW1lbnRzLFxuICAgICAgICB0cmlhZ2VSYXRpb25hbGUsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFwcGx5U3BlYyhjdHgsIHtcbiAgICAgICAgZGVjaXNpb24sXG4gICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgIGJhc2VCcmFuY2g6IGN0eC5kZWZhdWx0QnJhbmNoLFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcblxuICBwbGFuOiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjdHgsIHJvdXRlZCkge1xuICAgICAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcInBsYW4gc3RhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICAgICAgY29uc3QgYnJhbmNoTmFtZSA9IHJvdXRlZC5icmFuY2hOYW1lO1xuICAgICAgY29uc3Qgc3BlY0ZpbGVQYXRoID0gcm91dGVkLnNwZWNGaWxlUGF0aCA/PyBcIlwiO1xuICAgICAgY29uc3QgcGxhbkZpbGVQYXRoID0gcm91dGVkLnBsYW5GaWxlUGF0aDtcbiAgICAgIGlmICghYnJhbmNoTmFtZSB8fCAhcGxhbkZpbGVQYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInBsYW4gc3RhZ2UgcmVxdWlyZXMgYnJhbmNoTmFtZSBhbmQgcGxhbkZpbGVQYXRoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNzdWVDb21tZW50cyA9IGF3YWl0IGZvcm1hdElzc3VlQ29tbWVudHMoY3R4LCBjdHguaXNzdWUubnVtYmVyKTtcbiAgICAgIGNvbnN0IHJldmlzaW9uQmxvY2sgPSByb3V0ZWQucmV2aXNpb25Nb2RlXG4gICAgICAgID8gYXdhaXQgYnVpbGRTcGVjUmV2aXNpb25CbG9jayhjdHgsIGJyYW5jaE5hbWUpXG4gICAgICAgIDogXCJcIjtcbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gYXdhaXQgcnVuUGxhbihjdHgsIHtcbiAgICAgICAgYnJhbmNoTmFtZSxcbiAgICAgICAgcGxhbkZpbGVQYXRoLFxuICAgICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICAgIHJldmlzaW9uQmxvY2ssXG4gICAgICAgIGlzc3VlQ29tbWVudHMsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFwcGx5UGxhbihjdHgsIHtcbiAgICAgICAgZGVjaXNpb24sXG4gICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgIGJhc2VCcmFuY2g6IGN0eC5kZWZhdWx0QnJhbmNoLFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcblxuICBpbXBsZW1lbnQ6IHtcbiAgICBhc3luYyBleGVjdXRlKGN0eCwgcm91dGVkKSB7XG4gICAgICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiaW1wbGVtZW50IHN0YWdlIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgICAgIGNvbnN0IGJyYW5jaE5hbWUgPSByb3V0ZWQuYnJhbmNoTmFtZTtcbiAgICAgIGNvbnN0IHNwZWNGaWxlUGF0aCA9IHJvdXRlZC5zcGVjRmlsZVBhdGggPz8gXCJcIjtcbiAgICAgIGNvbnN0IHBsYW5GaWxlUGF0aCA9IHJvdXRlZC5wbGFuRmlsZVBhdGggPz8gXCJcIjtcbiAgICAgIGlmICghYnJhbmNoTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbXBsZW1lbnQgc3RhZ2UgcmVxdWlyZXMgYnJhbmNoTmFtZVwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gRmluZCBvciBjcmVhdGUgdGhlIGltcGwgUFIgc2hlbGwgc28gd2UgY2FuIHBpbiB0aGUgcHJvZ3Jlc3MgY29tbWVudCB0b1xuICAgICAgLy8gaXQuIFRoZSBQUiBpcyBjcmVhdGVkIGJ5IGFwcGx5SW1wbGVtZW50IGF0IHRoZSBlbmQ7IHdlIHVzZSBhIHBsYWNlaG9sZGVyXG4gICAgICAvLyBQUiBudW1iZXIgc291cmNlZCBmcm9tIGFuIGV4aXN0aW5nIG9wZW4gaW1wbCBQUiAocmV2aXNpb24gbW9kZSkgb3IgdGhlXG4gICAgICAvLyBpc3N1ZSBudW1iZXIgKGZpcnN0IHJ1bikgc28gdGhlIGNvbW1lbnQgaGFzIGEgdGFyZ2V0LlxuICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBjdHguZ2l0aHViLmZpbmRPcGVuSW1wbFByRm9ySXNzdWUoXG4gICAgICAgIGN0eC5pc3N1ZS5udW1iZXIsXG4gICAgICApO1xuICAgICAgY29uc3QgY29tbWVudFRhcmdldCA9IGV4aXN0aW5nPy5udW1iZXIgPz8gY3R4Lmlzc3VlLm51bWJlcjtcbiAgICAgIGNvbnN0IHByb2dyZXNzQ29tbWVudElkID0gYXdhaXQgY3JlYXRlUHJvZ3Jlc3NDb21tZW50KFxuICAgICAgICBjdHguZ2l0aHViLFxuICAgICAgICBjb21tZW50VGFyZ2V0LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgcmV2aXNpb25CbG9jayA9XG4gICAgICAgIHJvdXRlZC5yZXZpc2lvbk1vZGUgJiYgcm91dGVkLmltcGxQck51bWJlclxuICAgICAgICAgID8gYXdhaXQgYnVpbGRTcGVjUmV2aXNpb25CbG9jayhjdHgsIGJyYW5jaE5hbWUpXG4gICAgICAgICAgOiBcIlwiO1xuICAgICAgY29uc3QgaXNzdWVDb21tZW50cyA9IGF3YWl0IGZvcm1hdElzc3VlQ29tbWVudHMoY3R4LCBjdHguaXNzdWUubnVtYmVyKTtcblxuICAgICAgLy8gQ29uZmlndXJlIHRoZSBsb2NhbCB3b3JraW5nIHRyZWUgYmVmb3JlIHRoZSBhZ2VudCBydW5zLiBGaXJzdCBydW5zIGdldFxuICAgICAgLy8gYSBmcmVzaCBicmFuY2ggb2ZmIHRoZSBkZWZhdWx0LWJyYW5jaCBIRUFEIHRoYXQgYWN0aW9ucy9jaGVja291dCBsZWZ0XG4gICAgICAvLyBpbiBwbGFjZTsgcmV2aXNpb24gcnVucyBmZXRjaCB0aGUgcHJpb3IgaXRlcmF0aW9uJ3MgYnJhbmNoIHNvIHRoZVxuICAgICAgLy8gYWdlbnQgaW5oZXJpdHMgdGhlIHByZXZpb3VzIHJvdW5kJ3Mgd29ya2luZyB0cmVlLiBEb25lIGFmdGVyIHRoZVxuICAgICAgLy8gcHJvZ3Jlc3MgY29tbWVudCBpcyBjcmVhdGVkIHNvIHdlIGRvbid0IHN0cmFuZCB0aGUgb3JjaGVzdHJhdG9yIHdpdGhcbiAgICAgIC8vIGEgaGFsZi13cml0dGVuIGNvbW1lbnQgd2hlbiBnaXQgZmFpbHMuXG4gICAgICBpZiAoY3R4LmdpdE9wcykge1xuICAgICAgICBhd2FpdCBjdHguZ2l0T3BzLnByZXBhcmVJbXBsQ2hlY2tvdXQoe1xuICAgICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgICAgYmFzZUJyYW5jaDogY3R4LmRlZmF1bHRCcmFuY2gsXG4gICAgICAgICAgcmV2aXNpb25Nb2RlOiByb3V0ZWQucmV2aXNpb25Nb2RlID09PSB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvcmUud2FybmluZyhcbiAgICAgICAgICBcIlNob3BmbG9vciBpbXBsZW1lbnQgc3RhZ2UgcmFuIHdpdGhvdXQgZ2l0T3BzIGNvbmZpZ3VyZWQ7IHRoZSBhZ2VudCdzIGNvbW1pdHMgd2lsbCBub3QgYmUgcHVzaGVkIGFuZCBvcGVuU3RhZ2VQciB3aWxsIGZhaWwgYmVjYXVzZSB0aGUgYnJhbmNoIGRvZXMgbm90IGV4aXN0IG9uIG9yaWdpbi4gV2lyZSBPcmNoZXN0cmF0b3JBcmdzLmdpdE9wcyBpbiBwcm9kdWN0aW9uIGNhbGxlcnMuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gYXdhaXQgcnVuSW1wbGVtZW50KGN0eCwge1xuICAgICAgICBwcm9ncmVzc0NvbW1lbnRJZCxcbiAgICAgICAgYnJhbmNoTmFtZSxcbiAgICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgICAgICBwbGFuRmlsZVBhdGgsXG4gICAgICAgIGJhc2hBbGxvd2xpc3Q6IFwiXCIsXG4gICAgICAgIHJldmlzaW9uQmxvY2ssXG4gICAgICAgIGlzc3VlQ29tbWVudHMsXG4gICAgICB9KTtcblxuICAgICAgLy8gUHVzaCB0aGUgYWdlbnQncyBjb21taXRzIHRvIG9yaWdpbiBiZWZvcmUgb3BlbmluZyB0aGUgUFIuIFRoZSByb3V0ZXJcbiAgICAgIC8vIChub3QgdGhlIGFnZW50KSBvd25zIHRoZSBuZXR3b3JrIHBhdGg7IHRoZSBhZ2VudCBpcyBleHBsaWNpdGx5IGRlbmllZFxuICAgICAgLy8gYGdpdCBwdXNoYCBpbiBzcmMvYWdlbnRzL2NsYXVkZS50cyBzbyBhIG1hbGZvcm1lZCBydW4gY2Fubm90IHB1Ymxpc2hcbiAgICAgIC8vIHRvIHRoZSByZW1vdGUuIFBlcmZvcm1pbmcgdGhlIHB1c2ggaGVyZSwgYWZ0ZXIgdGhlIGFnZW50IGZpbmlzaGVzXG4gICAgICAvLyBjbGVhbmx5LCBhbHNvIG1lYW5zIHRoZSByZXN1bHRpbmcgcHVzaCBldmVudCBpcyBhdHRyaWJ1dGVkIHRvIHRoZVxuICAgICAgLy8gQXBwIGlkZW50aXR5IHNvIGRvd25zdHJlYW0gcmV2aWV3IHdvcmtmbG93cyB0cmlnZ2VyLlxuICAgICAgaWYgKGN0eC5naXRPcHMpIHtcbiAgICAgICAgYXdhaXQgY3R4LmdpdE9wcy5wdXNoSW1wbENvbW1pdHMoeyBicmFuY2hOYW1lIH0pO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBhcHBseUltcGxlbWVudChjdHgsIHtcbiAgICAgICAgZGVjaXNpb24sXG4gICAgICAgIHByb2dyZXNzQ29tbWVudElkLFxuICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICBiYXNlQnJhbmNoOiBjdHguZGVmYXVsdEJyYW5jaCxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG5cbiAgcmV2aWV3OiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjdHgsIHJvdXRlZCkge1xuICAgICAgaWYgKCFjdHgucHIpIHRocm93IG5ldyBFcnJvcihcInJldmlldyBzdGFnZSByZXF1aXJlcyBjdHgucHJcIik7XG4gICAgICAvLyBJbiByZXZpZXdPbmx5IG1vZGUgdGhlIFBSIGlzIGh1bWFuLWF1dGhvcmVkIGFuZCBTaG9wZmxvb3IgYWN0cyBhcyBhXG4gICAgICAvLyBzdGF0ZWxlc3MgcmV2aWV3ZXI6IG5vIGl0ZXJhdGlvbiBjb3VudGVyIGlzIHBlcnNpc3RlZCwgZXZlcnkgcHVzaFxuICAgICAgLy8gZ2V0cyBhIGZyZXNoIHJldmlldywgYW5kIHRoZSBpdGVyYXRpb24gY2FwIG5ldmVyIGZpcmVzLlxuICAgICAgY29uc3QgaXRlcmF0aW9uID0gY3R4LnJldmlld09ubHkgPyAwIDogKHJvdXRlZC5yZXZpZXdJdGVyYXRpb24gPz8gMCk7XG4gICAgICBjb25zdCBtYXhJdGVyYXRpb25zID0gY3R4LnJldmlld09ubHlcbiAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgOiBjdHguY29uZmlnLm1heFJldmlld0l0ZXJhdGlvbnM7XG4gICAgICAvLyBQcm92aXNpb24gb3JpZ2luLzxiYXNlPiBzbyB0aGUgbGVuc2VzIGNhbiBydW4gYGdpdCBkaWZmIG9yaWdpbi88YmFzZT5cbiAgICAgIC8vIEhFQURgLiBUaGUgcmV2aWV3IGNoZWNrb3V0IGlzIGEgc2hhbGxvdyBgcHVsbC9OL21lcmdlYCBjb21taXQgd2l0aCBub1xuICAgICAgLy8gYmFzZSB0cmFja2luZyByZWYgYW5kIGBwZXJzaXN0LWNyZWRlbnRpYWxzOiBmYWxzZWAsIHNvIHdpdGhvdXQgdGhpc1xuICAgICAgLy8gdGhlIGFnZW50cyBjYW5ub3QgZmV0Y2ggb3IgbmFtZSB0aGUgYmFzZSBhbmQgYnVybiB0dXJucyBmbGFpbGluZ1xuICAgICAgLy8gdGhyb3VnaCBmYWlsaW5nIGdpdCBjb21tYW5kcy4gQSBmZXRjaCBoaWNjdXAgZGVncmFkZXMgdGhlIGRpZmYgYnV0XG4gICAgICAvLyBzaG91bGQgbm90IGZhaWwgYW4gZW50aXJlIFBSIGNoZWNrLCBzbyB3ZSB3YXJuIGFuZCBjb250aW51ZS5cbiAgICAgIGlmIChjdHguZ2l0T3BzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgY3R4LmdpdE9wcy5wcmVwYXJlUmV2aWV3QmFzZSh7IGJhc2VSZWY6IGN0eC5wci5iYXNlUmVmIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb3JlLndhcm5pbmcoXG4gICAgICAgICAgICBgU2hvcGZsb29yIHJldmlldyBjb3VsZCBub3QgZmV0Y2ggYmFzZSByZWYgJyR7Y3R4LnByLmJhc2VSZWZ9JzsgbGVuc2VzIG1heSBiZSB1bmFibGUgdG8gZGlmZi4gJHtcbiAgICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdGNoZXMgPSBhd2FpdCBjdHguZ2l0aHViLmxpc3RDaGFuZ2VkRmlsZVBhdGNoZXMoY3R4LnByLm51bWJlcik7XG4gICAgICBjb25zdCBjaGFuZ2VkRmlsZXMgPSBwYXRjaGVzLm1hcCgocCkgPT4gcC5maWxlbmFtZSk7XG5cbiAgICAgIGNvbnN0IHBsYW5GaWxlQ29udGVudHMgPSByb3V0ZWQucGxhbkZpbGVQYXRoXG4gICAgICAgID8gYXdhaXQgcmVhZEZpbGVTYWZlKGN0eCwgcm91dGVkLnBsYW5GaWxlUGF0aCwgY3R4LnByLmJhc2VSZWYpXG4gICAgICAgIDogXCJcIjtcbiAgICAgIGNvbnN0IGlzc3VlQm9keSA9IGN0eC5pc3N1ZT8uYm9keSA/PyBcIlwiO1xuXG4gICAgICBjb25zdCBwcmV2aW91c1Jldmlld0NvbW1lbnRzID0gYXdhaXQgY3R4LmdpdGh1Yi5saXN0UHJSZXZpZXdDb21tZW50cyhcbiAgICAgICAgY3R4LnByLm51bWJlcixcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbiA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBwcmV2aW91c1Jldmlld0NvbW1lbnRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICBwYXRoOiBjLnBhdGgsXG4gICAgICAgICAgbGluZTogYy5saW5lLFxuICAgICAgICAgIHNpZGU6IGMuc2lkZSxcbiAgICAgICAgICBib2R5OiBjLmJvZHksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG91dGNvbWVzID0gYXdhaXQgcnVuUmV2aWV3KGN0eCwge1xuICAgICAgICBpdGVyYXRpb24sXG4gICAgICAgIGJhc2VSZWY6IGN0eC5wci5iYXNlUmVmLFxuICAgICAgICBjaGFuZ2VkRmlsZXMsXG4gICAgICAgIHBsYW5GaWxlQ29udGVudHMsXG4gICAgICAgIGlzc3VlQm9keSxcbiAgICAgICAgcHJldmlvdXNSZXZpZXdDb21tZW50c0pzb24sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYWdncmVnYXRlID0gYWdncmVnYXRlRmluZGluZ3Moe1xuICAgICAgICBvdXRjb21lcyxcbiAgICAgICAgcGF0Y2hlczogcGF0Y2hlcy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgZmlsZW5hbWU6IHAuZmlsZW5hbWUsXG4gICAgICAgICAgLi4uKHAucGF0Y2ggIT09IHVuZGVmaW5lZCA/IHsgcGF0Y2g6IHAucGF0Y2ggfSA6IHt9KSxcbiAgICAgICAgICBzdGF0dXM6IHAuc3RhdHVzLFxuICAgICAgICB9KSksXG4gICAgICAgIGN1cnJlbnRJdGVyYXRpb246IGl0ZXJhdGlvbixcbiAgICAgICAgbWF4SXRlcmF0aW9ucyxcbiAgICAgICAgY29uZmlkZW5jZVRocmVzaG9sZDogQ09ORklERU5DRV9USFJFU0hPTEQsXG4gICAgICB9KTtcblxuICAgICAgLy8gUGlwZWxpbmUgbW9kZSAoU2hvcGZsb29yLWF1dGhvcmVkIGltcGwgUFJzKSB3cml0ZXMgcGlwZWxpbmUtc3RhdGVcbiAgICAgIC8vIGxhYmVscyBvbnRvIHRoZSBpc3N1ZSwgbm90IHRoZSBQUi4gVGhlIG9yY2hlc3RyYXRvciBoeWRyYXRlcyBjdHguaXNzdWVcbiAgICAgIC8vIGZyb20gdGhlIFBSIGZvb3RlcidzIFNob3BmbG9vci1Jc3N1ZTogI04gYmVmb3JlIGRpc3BhdGNoaW5nOyBpZiBpdCBpc1xuICAgICAgLy8gc3RpbGwgbnVsbCBoZXJlLCBzb21ldGhpbmcgdXBzdHJlYW0gaXMgYnJva2VuIGFuZCB3ZSB3YW50IHRvIGZhaWxcbiAgICAgIC8vIGxvdWQgcmF0aGVyIHRoYW4gc2lsZW50bHkgcmV0YXJnZXQgdGhlIFBSLiByZXZpZXdPbmx5IG1vZGUgKGh1bWFuLVxuICAgICAgLy8gYXV0aG9yZWQgUFJzIHRocm91Z2ggZG9nZm9vZC1yZXZpZXcueW1sKSB3cml0ZXMgbm8gbGFiZWxzIGF0IGFsbCwgc29cbiAgICAgIC8vIGxhYmVsVGFyZ2V0IGlzIG5ldmVyIHJlYWQgaW4gdGhhdCBwYXRoOyB3ZSBwYXNzIHRoZSBQUiBudW1iZXIgYXMgYW5cbiAgICAgIC8vIHVudXNlZCBwbGFjZWhvbGRlciB0byBzYXRpc2Z5IHRoZSBBcHBseVJldmlld0FyZ3MgY29udHJhY3QuXG4gICAgICBsZXQgbGFiZWxUYXJnZXQ6IG51bWJlcjtcbiAgICAgIGlmIChjdHgucmV2aWV3T25seSkge1xuICAgICAgICBsYWJlbFRhcmdldCA9IGN0eC5wci5udW1iZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWN0eC5pc3N1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwicmV2aWV3IHN0YWdlIHJlcXVpcmVzIGN0eC5pc3N1ZSBpbiBwaXBlbGluZSBtb2RlOyBvcmNoZXN0cmF0b3IgaHlkcmF0aW9uIG11c3QgcG9wdWxhdGUgaXQgZnJvbSB0aGUgUFIgZm9vdGVyJ3MgU2hvcGZsb29yLUlzc3VlOiAjTlwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWxUYXJnZXQgPSBjdHguaXNzdWUubnVtYmVyO1xuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHlSZXZpZXcoY3R4LCB7IG91dGNvbWU6IGFnZ3JlZ2F0ZSwgbGFiZWxUYXJnZXQgfSk7XG4gICAgfSxcbiAgfSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlU2FmZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIHBhdGg6IHN0cmluZyxcbiAgYnJhbmNoOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNoYSA9IGF3YWl0IGN0eC5naXRodWIuZ2V0RmlsZVNoYShwYXRoLCBicmFuY2gpO1xuICAgIGlmICghc2hhKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gXCJcIjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEdpdEh1YkFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZ2l0aHViL2FkYXB0ZXIuanNcIjtcblxuLy8gT3BlbiB0aGUgcGlubmVkIGltcGxlbWVudGF0aW9uLXByb2dyZXNzIGNvbW1lbnQgYmVmb3JlIHRoZSBhZ2VudCBydW5zLiBUaGVcbi8vIGNvbW1lbnQgaWQgaXMgcGFzc2VkIHRvIHRoZSBhZ2VudCBzbyBpdCBjYW4gY2FsbCBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzXG4vLyB0byBmbGlwIGNoZWNrYm94ZXMgYXMgaXQgZmluaXNoZXMgcGxhbiB0YXNrcy5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVQcm9ncmVzc0NvbW1lbnQoXG4gIGFkYXB0ZXI6IEdpdEh1YkFkYXB0ZXIsXG4gIHByTnVtYmVyOiBudW1iZXIsXG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gYWRhcHRlci5wb3N0SXNzdWVDb21tZW50KFxuICAgIHByTnVtYmVyLFxuICAgIFwiKipTaG9wZmxvb3IgaW1wbGVtZW50YXRpb24gaW4gcHJvZ3Jlc3MuKipcXG5cXG5JIHdpbGwgdXBkYXRlIHRoaXMgY29tbWVudCB3aXRoIHByb2dyZXNzIGFzIEkgd29yay4gU3RhbmQgYnkuXCIsXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5hbGl6ZVByb2dyZXNzQ29tbWVudChcbiAgYWRhcHRlcjogR2l0SHViQWRhcHRlcixcbiAgY29tbWVudElkOiBudW1iZXIsXG4gIHRlcm1pbmFsU3RhdGU6IFwic3VjY2Vzc1wiIHwgXCJmYWlsdXJlXCIsXG4gIGZpbmFsQm9keTogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGhlYWRlciA9XG4gICAgdGVybWluYWxTdGF0ZSA9PT0gXCJzdWNjZXNzXCJcbiAgICAgID8gXCIqKlNob3BmbG9vciBpbXBsZW1lbnRhdGlvbiBjb21wbGV0ZS4qKlwiXG4gICAgICA6IFwiKipTaG9wZmxvb3IgaW1wbGVtZW50YXRpb24gZW5kZWQgd2l0aCBlcnJvcnMuKipcIjtcbiAgYXdhaXQgYWRhcHRlci51cGRhdGVDb21tZW50KGNvbW1lbnRJZCwgYCR7aGVhZGVyfVxcblxcbiR7ZmluYWxCb2R5fWApO1xufVxuIiwgImV4cG9ydCBjb25zdCBTVEFHRVMgPSBbXG4gIFwidHJpYWdlXCIsXG4gIFwic3BlY1wiLFxuICBcInBsYW5cIixcbiAgXCJpbXBsZW1lbnRcIixcbiAgXCJyZXZpZXdcIixcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdGFnZSA9ICh0eXBlb2YgU1RBR0VTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQ09NUExFWElUSUVTID0gW1wicXVpY2tcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENvbXBsZXhpdHkgPSAodHlwZW9mIENPTVBMRVhJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IExBQkVMUyA9IHtcbiAgLy8gc3RhdGUgbGFiZWxzXG4gIHRyaWFnaW5nOiBcInNob3BmbG9vcjp0cmlhZ2luZ1wiLFxuICBhd2FpdGluZ0luZm86IFwic2hvcGZsb29yOmF3YWl0aW5nLWluZm9cIixcbiAgbmVlZHNTcGVjOiBcInNob3BmbG9vcjpuZWVkcy1zcGVjXCIsXG4gIHNwZWNJblJldmlldzogXCJzaG9wZmxvb3I6c3BlYy1pbi1yZXZpZXdcIixcbiAgbmVlZHNQbGFuOiBcInNob3BmbG9vcjpuZWVkcy1wbGFuXCIsXG4gIHBsYW5JblJldmlldzogXCJzaG9wZmxvb3I6cGxhbi1pbi1yZXZpZXdcIixcbiAgbmVlZHNJbXBsOiBcInNob3BmbG9vcjpuZWVkcy1pbXBsXCIsXG4gIGltcGxJblJldmlldzogXCJzaG9wZmxvb3I6aW1wbC1pbi1yZXZpZXdcIixcbiAgbmVlZHNSZXZpZXc6IFwic2hvcGZsb29yOm5lZWRzLXJldmlld1wiLFxuICByZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzOiBcInNob3BmbG9vcjpyZXZpZXctcmVxdWVzdGVkLWNoYW5nZXNcIixcbiAgcmV2aWV3QXBwcm92ZWQ6IFwic2hvcGZsb29yOnJldmlldy1hcHByb3ZlZFwiLFxuICByZXZpZXdTdHVjazogXCJzaG9wZmxvb3I6cmV2aWV3LXN0dWNrXCIsXG4gIGRvbmU6IFwic2hvcGZsb29yOmRvbmVcIixcbiAgcmV2aXNlOiBcInNob3BmbG9vcjpyZXZpc2VcIixcbiAgLy8gbXV0ZXggbWFya2Vyc1xuICBzcGVjUnVubmluZzogXCJzaG9wZmxvb3I6c3BlYy1ydW5uaW5nXCIsXG4gIHBsYW5SdW5uaW5nOiBcInNob3BmbG9vcjpwbGFuLXJ1bm5pbmdcIixcbiAgaW1wbGVtZW50aW5nOiBcInNob3BmbG9vcjppbXBsZW1lbnRpbmdcIixcbiAgcmV2aWV3UnVubmluZzogXCJzaG9wZmxvb3I6cmV2aWV3LXJ1bm5pbmdcIixcbiAgLy8gY29tcGxleGl0eVxuICBjb21wbGV4aXR5UXVpY2s6IFwic2hvcGZsb29yOnF1aWNrXCIsXG4gIGNvbXBsZXhpdHlNZWRpdW06IFwic2hvcGZsb29yOm1lZGl1bVwiLFxuICBjb21wbGV4aXR5TGFyZ2U6IFwic2hvcGZsb29yOmxhcmdlXCIsXG4gIC8vIHVzZXItc2V0IGJlaGF2aW9yIG1vZGlmaWVyc1xuICBza2lwUmV2aWV3OiBcInNob3BmbG9vcjpza2lwLXJldmlld1wiLFxuICB3aXA6IFwic2hvcGZsb29yOndpcFwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgUlVOTklOR19MQUJFTFMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBMQUJFTFMudHJpYWdpbmcsXG4gIExBQkVMUy5zcGVjUnVubmluZyxcbiAgTEFCRUxTLnBsYW5SdW5uaW5nLFxuICBMQUJFTFMuaW1wbGVtZW50aW5nLFxuICBMQUJFTFMucmV2aWV3UnVubmluZyxcbl0pO1xuXG5jb25zdCBSVU5OSU5HX0xBQkVMX0ZPUjogUmVjb3JkPFN0YWdlLCBzdHJpbmc+ID0ge1xuICB0cmlhZ2U6IExBQkVMUy50cmlhZ2luZyxcbiAgc3BlYzogTEFCRUxTLnNwZWNSdW5uaW5nLFxuICBwbGFuOiBMQUJFTFMucGxhblJ1bm5pbmcsXG4gIGltcGxlbWVudDogTEFCRUxTLmltcGxlbWVudGluZyxcbiAgcmV2aWV3OiBMQUJFTFMucmV2aWV3UnVubmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Nob3BmbG9vckxhYmVsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbmFtZS5zdGFydHNXaXRoKFwic2hvcGZsb29yOlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUnVubmluZ0xhYmVsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gUlVOTklOR19MQUJFTFMuaGFzKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGYWlsZWRMYWJlbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5hbWUuc3RhcnRzV2l0aChcInNob3BmbG9vcjpmYWlsZWQ6XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmFpbGVkTGFiZWxGb3Ioc3RhZ2U6IFN0YWdlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBzaG9wZmxvb3I6ZmFpbGVkOiR7c3RhZ2V9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bm5pbmdMYWJlbEZvcihzdGFnZTogU3RhZ2UpOiBzdHJpbmcge1xuICByZXR1cm4gUlVOTklOR19MQUJFTF9GT1Jbc3RhZ2VdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxleGl0eUxhYmVsKGM6IENvbXBsZXhpdHkpOiBzdHJpbmcge1xuICByZXR1cm4gYHNob3BmbG9vcjoke2N9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzTGFiZWxGb3IoXG4gIHN0YWdlOiBFeGNsdWRlPFN0YWdlLCBcInRyaWFnZVwiIHwgXCJyZXZpZXdcIj4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXA6IFJlY29yZDxFeGNsdWRlPFN0YWdlLCBcInRyaWFnZVwiIHwgXCJyZXZpZXdcIj4sIHN0cmluZz4gPSB7XG4gICAgc3BlYzogTEFCRUxTLm5lZWRzU3BlYyxcbiAgICBwbGFuOiBMQUJFTFMubmVlZHNQbGFuLFxuICAgIGltcGxlbWVudDogTEFCRUxTLm5lZWRzSW1wbCxcbiAgfTtcbiAgcmV0dXJuIG1hcFtzdGFnZV07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIENhbm9uaWNhbCBjb2xvciBwYWxldHRlLiBTdGF0ZSBsYWJlbHMgc2hhcmUgYSBjb29sIGJsdWUsIGNvbXBsZXhpdHkgbGFiZWxzXG4vLyBzaGFyZSBhIHBlci1idWNrZXQgY29sb3IsIHRyYW5zaWVudCBtYXJrZXJzIGFyZSBhbWJlciwgdGVybWluYWwgZmFpbHVyZXMgYW5kXG4vLyBzdHVjayBzdGF0ZXMgYXJlIHJlZCwgc3VjY2VzcyBpcyBncmVlbi4gQm9vdHN0cmFwLWxhYmVscyByZWFkcyB0aGlzIGxpc3QgYW5kXG4vLyBjcmVhdGVzIGFueSB0aGF0IGRvbid0IGFscmVhZHkgZXhpc3Qgb24gdGhlIHJlcG8uXG5leHBvcnQgY29uc3QgTEFCRUxfREVGUzogTGFiZWxEZWZbXSA9IFtcbiAge1xuICAgIG5hbWU6IExBQkVMUy50cmlhZ2luZyxcbiAgICBjb2xvcjogXCJmYmNhMDRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTaG9wZmxvb3IgdHJpYWdlIGFnZW50IGlzIGV2YWx1YXRpbmcgdGhpcyBpc3N1ZS5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5hd2FpdGluZ0luZm8sXG4gICAgY29sb3I6IFwiZDkzZjBiXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlNob3BmbG9vciBpcyB3YWl0aW5nIGZvciB0aGUgaXNzdWUgYXV0aG9yIHRvIGFuc3dlciBjbGFyaWZ5aW5nIHF1ZXN0aW9ucy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5jb21wbGV4aXR5UXVpY2ssXG4gICAgY29sb3I6IFwiMGU4YTE2XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ2xhc3NpZmllZCBhcyBhIHF1aWNrIGZpeCAoc3RyYWlnaHQgdG8gaW1wbGVtZW50YXRpb24pLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLmNvbXBsZXhpdHlNZWRpdW0sXG4gICAgY29sb3I6IFwiMWQ3NmRiXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ2xhc3NpZmllZCBhcyBtZWRpdW0gKHNraXAgc3BlYywgZ28gdG8gcGxhbikuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuY29tcGxleGl0eUxhcmdlLFxuICAgIGNvbG9yOiBcIjUzMTllN1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNsYXNzaWZpZWQgYXMgbGFyZ2UgKGZ1bGwgc3BlYywgcGxhbiwgaW1wbCBmbG93KS5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5uZWVkc1NwZWMsXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmVhZHkgZm9yIHRoZSBzcGVjIGFnZW50LlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnNwZWNJblJldmlldyxcbiAgICBjb2xvcjogXCJhMmVlZWZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTcGVjIFBSIGF3YWl0aW5nIGh1bWFuIHJldmlldy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5uZWVkc1BsYW4sXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmVhZHkgZm9yIHRoZSBwbGFuIGFnZW50LlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnBsYW5JblJldmlldyxcbiAgICBjb2xvcjogXCJhMmVlZWZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQbGFuIFBSIGF3YWl0aW5nIGh1bWFuIHJldmlldy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5uZWVkc0ltcGwsXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmVhZHkgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBhZ2VudC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5uZWVkc1JldmlldyxcbiAgICBjb2xvcjogXCJhMmVlZWZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJJbXBsZW1lbnRhdGlvbiBjb21wbGV0ZSwgYWdlbnQgcmV2aWV3IHF1ZXVlZC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzLFxuICAgIGNvbG9yOiBcImU5OTY5NVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFnZW50IHJldmlldyByZXF1ZXN0ZWQgY2hhbmdlczsgaW1wbCB3aWxsIHJlLXJ1bi5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5yZXZpZXdBcHByb3ZlZCxcbiAgICBjb2xvcjogXCIwZThhMTZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBZ2VudCByZXZpZXcgcGFzc2VkOyByZWFkeSBmb3IgaHVtYW4gbWVyZ2UuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMucmV2aWV3U3R1Y2ssXG4gICAgY29sb3I6IFwiYjYwMjA1XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmV2aWV3IGxvb3AgZXhjZWVkZWQgaXRlcmF0aW9uIGNhcDsgbmVlZHMgaHVtYW4uXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuaW1wbEluUmV2aWV3LFxuICAgIGNvbG9yOiBcImEyZWVlZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkltcGwgUFIgYXdhaXRpbmcgaHVtYW4gcmV2aWV3IChza2lwLXJldmlldyBjYXNlKS5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5za2lwUmV2aWV3LFxuICAgIGNvbG9yOiBcImVkZWRlZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkJ5cGFzcyB0aGUgYWdlbnQgcmV2aWV3IHN0YWdlIGZvciB0aGlzIHRpY2tldC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5kb25lLFxuICAgIGNvbG9yOiBcIjBlOGExNlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkltcGxlbWVudGF0aW9uIG1lcmdlZC4gUGlwZWxpbmUgY29tcGxldGUuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMucmV2aXNlLFxuICAgIGNvbG9yOiBcImVkZWRlZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1hbnVhbCB0cmlnZ2VyIHRvIHJlLXJ1biB0aGUgY3VycmVudCBzdGFnZS5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IGZhaWxlZExhYmVsRm9yKFwidHJpYWdlXCIpLFxuICAgIGNvbG9yOiBcImI2MDIwNVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRyaWFnZSBzdGFnZSBmYWlsZWQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBmYWlsZWRMYWJlbEZvcihcInNwZWNcIiksXG4gICAgY29sb3I6IFwiYjYwMjA1XCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3BlYyBzdGFnZSBmYWlsZWQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBmYWlsZWRMYWJlbEZvcihcInBsYW5cIiksXG4gICAgY29sb3I6IFwiYjYwMjA1XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUGxhbiBzdGFnZSBmYWlsZWQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBmYWlsZWRMYWJlbEZvcihcImltcGxlbWVudFwiKSxcbiAgICBjb2xvcjogXCJiNjAyMDVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJJbXBsZW1lbnRhdGlvbiBzdGFnZSBmYWlsZWQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBmYWlsZWRMYWJlbEZvcihcInJldmlld1wiKSxcbiAgICBjb2xvcjogXCJiNjAyMDVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSZXZpZXcgc3RhZ2UgZmFpbGVkLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnNwZWNSdW5uaW5nLFxuICAgIGNvbG9yOiBcImZiY2EwNFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUcmFuc2llbnQgbWFya2VyOiBhIHNwZWMgc3RhZ2Ugam9iIGlzIGFjdGl2ZWx5IHJ1bm5pbmcgZm9yIHRoaXMgaXNzdWUuIFJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzdGFnZSBjb21wbGV0ZXMuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMucGxhblJ1bm5pbmcsXG4gICAgY29sb3I6IFwiZmJjYTA0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRyYW5zaWVudCBtYXJrZXI6IGEgcGxhbiBzdGFnZSBqb2IgaXMgYWN0aXZlbHkgcnVubmluZyBmb3IgdGhpcyBpc3N1ZS4gUmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHN0YWdlIGNvbXBsZXRlcy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5pbXBsZW1lbnRpbmcsXG4gICAgY29sb3I6IFwiZmJjYTA0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRyYW5zaWVudCBtYXJrZXI6IGFuIGltcGxlbWVudCBzdGFnZSBqb2IgaXMgYWN0aXZlbHkgcnVubmluZyBmb3IgdGhpcyBpc3N1ZS4gUmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHN0YWdlIGNvbXBsZXRlcy4gSWYgdGhpcyBsYWJlbCBpcyBzdHVjayBhZnRlciBhIGNyYXNoLCByZW1vdmUgaXQgbWFudWFsbHkgdG8gdW5ibG9jayByZXRyaWVzLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnJldmlld1J1bm5pbmcsXG4gICAgY29sb3I6IFwiZmJjYTA0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRyYW5zaWVudCBtYXJrZXI6IGEgcmV2aWV3IHN0YWdlIGpvYiBpcyBhY3RpdmVseSBydW5uaW5nIGZvciB0aGlzIGlzc3VlLiBSZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc3RhZ2UgY29tcGxldGVzLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLndpcCxcbiAgICBjb2xvcjogXCJmYmNhMDRcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiSW1wbGVtZW50YXRpb24gaW4gcHJvZ3Jlc3MuIFN1cHByZXNzZXMgcmV2aWV3IHRyaWdnZXJzIHVudGlsIHJlbW92ZWQuXCIsXG4gIH0sXG5dO1xuIiwgImltcG9ydCB0eXBlIHsgR2l0SHViQWRhcHRlciB9IGZyb20gXCIuLi8uLi9naXRodWIvYWRhcHRlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrUmV2aWV3U2tpcFJlc3VsdCB7XG4gIHNraXA6IGJvb2xlYW47XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGFyc2VJc3N1ZU51bWJlckZyb21Cb2R5KGJvZHk6IHN0cmluZyB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKCFib2R5KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgbSA9IGJvZHkubWF0Y2goL1Nob3BmbG9vci1Jc3N1ZTpcXHMqIyhcXGQrKS8pO1xuICByZXR1cm4gbSA/IE51bWJlcihtWzFdKSA6IG51bGw7XG59XG5cbi8vIERlY2lkZSB3aGV0aGVyIHRvIHNraXAgdGhlIHJldmlldyBzdGFnZSBmb3IgYSBnaXZlbiBQUi4gUmV0dXJucyBhIHJlYXNvblxuLy8gc3RyaW5nIHNvIGF1ZGl0IGVtaXR0ZXJzIGNhbiBzdXJmYWNlIHdoeSByZXZpZXcgd2FzIHNraXBwZWQuIFBvcnQgb2YgdjEnc1xuLy8gcm91dGVyL3NyYy9oZWxwZXJzL2NoZWNrLXJldmlldy1za2lwLnRzLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrUmV2aWV3U2tpcChcbiAgYWRhcHRlcjogR2l0SHViQWRhcHRlcixcbiAgcHJOdW1iZXI6IG51bWJlcixcbik6IFByb21pc2U8Q2hlY2tSZXZpZXdTa2lwUmVzdWx0PiB7XG4gIGNvbnN0IHByID0gYXdhaXQgYWRhcHRlci5nZXRQcihwck51bWJlcik7XG4gIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikgcmV0dXJuIHsgc2tpcDogdHJ1ZSwgcmVhc29uOiBcInByX2Nsb3NlZFwiIH07XG4gIGlmIChwci5kcmFmdCkgcmV0dXJuIHsgc2tpcDogdHJ1ZSwgcmVhc29uOiBcInByX2RyYWZ0XCIgfTtcbiAgaWYgKHByLmxhYmVscy5zb21lKChsKSA9PiBsLm5hbWUgPT09IFwic2hvcGZsb29yOndpcFwiKSkge1xuICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJwcl93aXBfbGFiZWxcIiB9O1xuICB9XG4gIGlmIChwci5sYWJlbHMuc29tZSgobCkgPT4gbC5uYW1lID09PSBcInNob3BmbG9vcjpza2lwLXJldmlld1wiKSkge1xuICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJza2lwX3Jldmlld19sYWJlbF9wclwiIH07XG4gIH1cblxuICBjb25zdCBvcmlnaW5Jc3N1ZU51bWJlciA9IHBhcnNlSXNzdWVOdW1iZXJGcm9tQm9keShwci5ib2R5ID8/IG51bGwpO1xuICBpZiAob3JpZ2luSXNzdWVOdW1iZXIgIT09IG51bGwpIHtcbiAgICBjb25zdCBpc3N1ZSA9IGF3YWl0IGFkYXB0ZXIuZ2V0SXNzdWUob3JpZ2luSXNzdWVOdW1iZXIpO1xuICAgIGlmIChpc3N1ZS5zdGF0ZSA9PT0gXCJjbG9zZWRcIilcbiAgICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJvcmlnaW5faXNzdWVfY2xvc2VkXCIgfTtcbiAgICBpZiAoaXNzdWUubGFiZWxzLnNvbWUoKGwpID0+IGwubmFtZSA9PT0gXCJzaG9wZmxvb3I6c2tpcC1yZXZpZXdcIikpIHtcbiAgICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJza2lwX3Jldmlld19sYWJlbF9pc3N1ZVwiIH07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBhZGFwdGVyLmxpc3RDaGFuZ2VkRmlsZXMocHJOdW1iZXIpO1xuICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwibm9fY2hhbmdlZF9maWxlc1wiIH07XG4gIGlmIChmaWxlcy5ldmVyeSgoZikgPT4gZi5zdGFydHNXaXRoKFwiZG9jcy9zaG9wZmxvb3IvXCIpKSkge1xuICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJvbmx5X3Nob3BmbG9vcl9kb2NzXCIgfTtcbiAgfVxuXG4gIGNvbnN0IHJldmlld3MgPSBhd2FpdCBhZGFwdGVyLmdldFByUmV2aWV3c0F0U2hhKHByTnVtYmVyLCBwci5oZWFkLnNoYSk7XG4gIGNvbnN0IGhhc1Nob3BmbG9vclJldmlldyA9IHJldmlld3Muc29tZSgocikgPT5cbiAgICByLmJvZHkuc3RhcnRzV2l0aChcIjwhLS0gc2hvcGZsb29yLXJldmlldyAtLT5cIiksXG4gICk7XG4gIGlmIChoYXNTaG9wZmxvb3JSZXZpZXcpXG4gICAgcmV0dXJuIHsgc2tpcDogdHJ1ZSwgcmVhc29uOiBcImFscmVhZHlfcmV2aWV3ZWRfYXRfc2hhXCIgfTtcblxuICByZXR1cm4geyBza2lwOiBmYWxzZSB9O1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB7IGNoZWNrUmV2aWV3U2tpcCB9IGZyb20gXCIuLi9fc2hhcmVkL2NoZWNrLXJldmlldy1za2lwLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IGZpbmFsaXplUHJvZ3Jlc3NDb21tZW50IH0gZnJvbSBcIi4uL19zaGFyZWQvcHJvZ3Jlc3MtY29tbWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJbXBsZW1lbnREZWNpc2lvbiB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlJbXBsZW1lbnRBcmdzIHtcbiAgZGVjaXNpb246IEltcGxlbWVudERlY2lzaW9uO1xuICBwcm9ncmVzc0NvbW1lbnRJZDogbnVtYmVyO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIGJhc2VCcmFuY2g6IHN0cmluZztcbn1cblxuY29uc3QgSVRFUkFUSU9OX0xJTkUgPSAvU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb246XFxzKihcXGQrKS87XG5cbmZ1bmN0aW9uIHBhcnNlSXRlcmF0aW9uRnJvbUJvZHkoYm9keTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gIGlmICghYm9keSkgcmV0dXJuIDA7XG4gIGNvbnN0IG0gPSBib2R5Lm1hdGNoKElURVJBVElPTl9MSU5FKTtcbiAgaWYgKCFtPy5bMV0pIHJldHVybiAwO1xuICByZXR1cm4gTnVtYmVyKG1bMV0pO1xufVxuXG5mdW5jdGlvbiBidWlsZEltcGxQckJvZHkoXG4gIGFnZW50Qm9keTogc3RyaW5nLFxuICBpc3N1ZU51bWJlcjogbnVtYmVyLFxuICByZXZpZXdJdGVyYXRpb246IG51bWJlcixcbik6IHN0cmluZyB7XG4gIHJldHVybiBgJHthZ2VudEJvZHkudHJpbUVuZCgpfVxcblxcbi0tLVxcblNob3BmbG9vci1Jc3N1ZTogIyR7aXNzdWVOdW1iZXJ9XFxuU2hvcGZsb29yLVN0YWdlOiBpbXBsZW1lbnRcXG5TaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjogJHtyZXZpZXdJdGVyYXRpb259XFxuYDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUltcGxlbWVudFJlc3VsdCB7XG4gIHByTnVtYmVyOiBudW1iZXI7XG4gIHVybDogc3RyaW5nO1xuICBuZXh0TGFiZWw6IHR5cGVvZiBMQUJFTFMubmVlZHNSZXZpZXcgfCB0eXBlb2YgTEFCRUxTLmltcGxJblJldmlldztcbiAgc2tpcFJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5SW1wbGVtZW50KFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogQXBwbHlJbXBsZW1lbnRBcmdzLFxuKTogUHJvbWlzZTxBcHBseUltcGxlbWVudFJlc3VsdD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlJbXBsZW1lbnQgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB7IGRlY2lzaW9uLCBwcm9ncmVzc0NvbW1lbnRJZCwgYnJhbmNoTmFtZSwgYmFzZUJyYW5jaCB9ID0gYXJncztcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBjdHguaXNzdWUubnVtYmVyO1xuXG4gIC8vIFByZS1jb25kaXRpb246IHRoZSBvcmNoZXN0cmF0b3Igc2V0IHNob3BmbG9vcjppbXBsZW1lbnRpbmcgYmVmb3JlXG4gIC8vIGludm9raW5nIHRoZSBpbXBsIGFnZW50LiBSZWZ1c2UgdG8gZmluYWxpemUgaWYgdGhlIG1hcmtlciBpcyBtaXNzaW5nLlxuICBpZiAoIWN0eC5pc3N1ZS5sYWJlbHMuaW5jbHVkZXMoTEFCRUxTLmltcGxlbWVudGluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgYXBwbHlJbXBsZW1lbnQ6IHJlZnVzaW5nIHRvIGZpbmFsaXplIGltcGxlbWVudCBmb3IgaXNzdWUgIyR7aXNzdWVOdW1iZXJ9OiBzaG9wZmxvb3I6aW1wbGVtZW50aW5nIG1hcmtlciBpcyBub3QgcHJlc2VudC5gLFxuICAgICk7XG4gIH1cblxuICAvLyBPcGVuIChvciB1cHNlcnQpIHRoZSBpbXBsIFBSIGFzIGEgZHJhZnQuIFRoZSByb3V0ZXIgcHVzaGVkIHRoZSBhZ2VudCdzXG4gIC8vIGNvbW1pdHMgdG8gYnJhbmNoTmFtZSB1cHN0cmVhbSBvZiB0aGlzIGNhbGwgKHNlZSBzcmMvcnVubmVycy50cyBhbmRcbiAgLy8gc3JjL2dpdC9pbXBsLWNoZWNrb3V0LnRzKTsgdGhlIGJyYW5jaCBpcyBvbiBvcmlnaW4gYnkgdGhlIHRpbWUgd2UgZ2V0XG4gIC8vIGhlcmUuIHByZXNlcnZlQm9keUlmRXhpc3RzIGlzIHRydWUgb24gdGhlIG9wZW5TdGFnZVByIGFkYXB0ZXIgY2FsbCBzbyBhblxuICAvLyBpbi1mbGlnaHQgcmV2aWV3LWl0ZXJhdGlvbiBmb290ZXIgaXMgbm90IGNsb2JiZXJlZDsgd2UgdGhlbiB1cGRhdGVcbiAgLy8gdGl0bGUrYm9keSBleHBsaWNpdGx5IGhlcmUuXG4gIGNvbnN0IG9wZW5lZCA9IGF3YWl0IGN0eC5naXRodWIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogZGVjaXNpb24ucHJfdGl0bGUsXG4gICAgYm9keTogZGVjaXNpb24ucHJfYm9keSxcbiAgICBzdGFnZTogXCJpbXBsZW1lbnRcIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBkcmFmdDogdHJ1ZSxcbiAgICBwcmVzZXJ2ZUJvZHlJZkV4aXN0czogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gUmUtcmVhZCBzbyB3ZSBjYW4gcHJlc2VydmUgdGhlIHJldmlldyBpdGVyYXRpb24gY291bnRlci5cbiAgY29uc3QgZXhpc3RpbmdQciA9IGF3YWl0IGN0eC5naXRodWIuZ2V0UHIob3BlbmVkLm51bWJlcik7XG4gIGNvbnN0IHJldmlld0l0ZXJhdGlvbiA9IHBhcnNlSXRlcmF0aW9uRnJvbUJvZHkoZXhpc3RpbmdQci5ib2R5KTtcbiAgY29uc3QgYm9keVdpdGhGb290ZXIgPSBidWlsZEltcGxQckJvZHkoXG4gICAgZGVjaXNpb24ucHJfYm9keSxcbiAgICBpc3N1ZU51bWJlcixcbiAgICByZXZpZXdJdGVyYXRpb24sXG4gICk7XG4gIGF3YWl0IGN0eC5naXRodWIudXBkYXRlUHIob3BlbmVkLm51bWJlciwge1xuICAgIHRpdGxlOiBkZWNpc2lvbi5wcl90aXRsZSxcbiAgICBib2R5OiBib2R5V2l0aEZvb3RlcixcbiAgfSk7XG5cbiAgLy8gRmluYWxpemUgdGhlIHByb2dyZXNzIGNvbW1lbnQgd2l0aCB0aGUgYWdlbnQncyBzdHJ1Y3R1cmVkIHN1bW1hcnkuXG4gIGNvbnN0IGZpbmFsQm9keSA9IHJlbmRlckZpbmFsUHJvZ3Jlc3MoZGVjaXNpb24pO1xuICBhd2FpdCBmaW5hbGl6ZVByb2dyZXNzQ29tbWVudChcbiAgICBjdHguZ2l0aHViLFxuICAgIHByb2dyZXNzQ29tbWVudElkLFxuICAgIFwic3VjY2Vzc1wiLFxuICAgIGZpbmFsQm9keSxcbiAgKTtcblxuICAvLyBGbGlwIHRoZSBkcmFmdCB0byByZWFkeSBzbyB0aGUgcmV2aWV3IHN0YWdlIGNhbiBmaXJlLlxuICBhd2FpdCBjdHguZ2l0aHViLm1hcmtQdWxsUmVxdWVzdFJlYWR5Rm9yUmV2aWV3KG9wZW5lZC5udW1iZXIpO1xuXG4gIC8vIERlY2lkZSBuZXh0IGxhYmVsOiByZXZpZXctc2tpcCBjaGVja3MgKGRyYWZ0LCB3aXAsIHNraXAtcmV2aWV3LCBkb2Mtb25seSxcbiAgLy8gYWxyZWFkeS1yZXZpZXdlZCkgc2hvcnQtY2lyY3VpdCB0byBpbXBsLWluLXJldmlldy4gQWxzbyBzaG9ydC1jaXJjdWl0XG4gIC8vIHdoZW4gbm8gc2VwYXJhdGUgcmV2aWV3IEFwcCBpcyBjb25maWd1cmVkIC0tIHJvdXRpbmcgdG8gbmVlZHMtcmV2aWV3XG4gIC8vIHdvdWxkIHN0cmFuZCB0aGUgaXNzdWUgYmVjYXVzZSB0aGUgcmV2aWV3IHN0YWdlIGNhbm5vdCBwb3N0LlxuICBjb25zdCBoYXNSZXZpZXdBcHAgPSBjdHgucmV2aWV3R2l0aHViICE9PSBudWxsO1xuICBjb25zdCBza2lwID0gaGFzUmV2aWV3QXBwXG4gICAgPyBhd2FpdCBjaGVja1Jldmlld1NraXAoY3R4LmdpdGh1Yiwgb3BlbmVkLm51bWJlcilcbiAgICA6IHsgc2tpcDogdHJ1ZSwgcmVhc29uOiBcIm5vX3Jldmlld19hcHBfY29uZmlndXJlZFwiIH07XG4gIGNvbnN0IG5leHRMYWJlbCA9IHNraXAuc2tpcCA/IExBQkVMUy5pbXBsSW5SZXZpZXcgOiBMQUJFTFMubmVlZHNSZXZpZXc7XG5cbiAgYXdhaXQgY3R4LmdpdGh1Yi5hZGRMYWJlbChpc3N1ZU51bWJlciwgbmV4dExhYmVsKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLm5lZWRzSW1wbCk7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5pbXBsZW1lbnRpbmcpO1xuICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyk7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpc2UpO1xuICAvLyBBIG5ldyBpbXBsIHJ1biBwcm9kdWNlcyBhIG5ldyBoZWFkIFNIQSwgc28gYW55IHByaW9yIHJldmlldy1hcHByb3ZlZFxuICAvLyBsYWJlbCBpcyBzdGFsZS4gU3RyaXAgaXQgc28gZG93bnN0cmVhbSBjb25zdW1lcnMgc2VlIHRoZSBjb3JyZWN0IHN0YXRlLlxuICBpZiAobmV4dExhYmVsID09PSBMQUJFTFMubmVlZHNSZXZpZXcpIHtcbiAgICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMucmV2aWV3QXBwcm92ZWQpO1xuICB9XG5cbiAgY3R4LmF1ZGl0KHsgdHlwZTogXCJwcl9vcGVuZWRcIiwgc3RhZ2U6IFwiaW1wbGVtZW50XCIsIHByTnVtYmVyOiBvcGVuZWQubnVtYmVyIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwibGFiZWxfYXBwbGllZFwiLFxuICAgIGlzc3VlTnVtYmVyLFxuICAgIGFkZDogW25leHRMYWJlbF0sXG4gICAgcmVtb3ZlOiBbXG4gICAgICBMQUJFTFMubmVlZHNJbXBsLFxuICAgICAgTEFCRUxTLmltcGxlbWVudGluZyxcbiAgICAgIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzLFxuICAgICAgLi4uKG5leHRMYWJlbCA9PT0gTEFCRUxTLm5lZWRzUmV2aWV3ID8gW0xBQkVMUy5yZXZpZXdBcHByb3ZlZF0gOiBbXSksXG4gICAgXSxcbiAgfSk7XG4gIGN0eC5hdWRpdCh7XG4gICAgdHlwZTogXCJzdGFnZV9kZWNpZGVkXCIsXG4gICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgZGVjaXNpb24sXG4gICAgdG9rZW5zVXNlZDogMCxcbiAgICBjb3N0VXNkOiAwLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHByTnVtYmVyOiBvcGVuZWQubnVtYmVyLFxuICAgIHVybDogb3BlbmVkLnVybCxcbiAgICBuZXh0TGFiZWwsXG4gICAgLi4uKHNraXAucmVhc29uID8geyBza2lwUmVhc29uOiBza2lwLnJlYXNvbiB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiByZW5kZXJGaW5hbFByb2dyZXNzKGQ6IEltcGxlbWVudERlY2lzaW9uKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBbXG4gICAgZC5zdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50LFxuICAgIFwiXCIsXG4gICAgXCIjIyMgRmlsZXMgY2hhbmdlZFwiLFxuICAgIC4uLmQuY2hhbmdlZF9maWxlcy5tYXAoKGYpID0+IGAtIFxcYCR7Zn1cXGBgKSxcbiAgXTtcbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG59XG4iLCAiPHRkZF9hbmRfdGVzdGluZ19kaXNjaXBsaW5lPlxuVGhlIHJ1bGVzIGJlbG93IGdvdmVybiBldmVyeSBpbXBsZW1lbnRlciBzdWJhZ2VudCB5b3UgZGlzcGF0Y2ggYW5kIGV2ZXJ5IGNvbW1pdCB5b3UgbWFrZS4gVGhleSBhcHBseSBvbiB0b3Agb2YgdGhlIHBsYW4sIHRoZSBpc3N1ZSwgb3IgeW91ciBvd24gcmVhc29uaW5nLlxuXG4qKlRERCBpcm9uIHJ1bGVzLioqIFVzZSB0aGlzIGxvb3AgZm9yIGV2ZXJ5IHRhc2sgdGhhdCBjaGFuZ2VzIHByb2R1Y3Rpb24gYmVoYXZpb3IuXG5cbjEuICoqUkVELioqIFdyaXRlIG9uZSBmYWlsaW5nIHRlc3QgdGhhdCBuYW1lcyB0aGUgYmVoYXZpb3IgeW91IGludGVuZCB0byBhZGQgb3IgZml4LlxuMi4gKipWZXJpZnkgdGhlIGZhaWx1cmUuKiogUnVuIHRoZSB0ZXN0LiBXYXRjaGluZyB0aGUgZmFpbHVyZSBpcyBtYW5kYXRvcnk7IGEgdGVzdCB0aGF0IGhhcyBuZXZlciBmYWlsZWQgaXMgbm90IGEgcmVncmVzc2lvbiBndWFyZC5cbjMuICoqR1JFRU4uKiogV3JpdGUgdGhlIG1pbmltdW0gcHJvZHVjdGlvbiBjb2RlIHRoYXQgbWFrZXMgdGhlIHRlc3QgcGFzcy4gTm8gZXh0cmEgZmllbGRzLCBubyBleHRyYSBicmFuY2hlcywgbm8gYW50aWNpcGF0aW5nIHRoZSBuZXh0IHRlc3QuXG40LiAqKlZlcmlmeSB0aGUgcGFzcy4qKiBSZS1ydW4gdGhlIGZhaWxpbmcgdGVzdCwgdGhlbiByZS1ydW4gdGhlIGJyb2FkZXIgc3VpdGUgYXQgdGhlIGxheWVyIHRoZSBwbGFuIG5hbWVkIGZvciB0aGlzIHRhc2suXG41LiAqKlJFRkFDVE9SKiogb25seSB3aGVuIHRoZSByZWZhY3RvciBpcyBqdXN0aWZpZWQgYnkgdGhlIGNoYW5nZSB5b3UganVzdCBtYWRlLiBUZXN0cyBzdGF5IGdyZWVuIHRocm91Z2hvdXQuXG5cbkFkZGl0aW9uYWwgcnVsZXM6XG5cbi0gVGVzdCBuYW1lcyBkZXNjcmliZSBiZWhhdmlvciAoYHJldHVybnNfNDA0X3doZW5fdXNlcl9pc19taXNzaW5nYCksIG5vdCBpbXBsZW1lbnRhdGlvbiAoYGNhbGxzX2xvb2t1cF90aGVuX3JldHVybnNgKS5cbi0gT25lIGFzc2VydGlvbiBwZXIgYmVoYXZpb3IuIERpZmZlcmVudCBiZWhhdmlvcnMgZ2V0IGRpZmZlcmVudCB0ZXN0cywgbm90IHN0YWNrZWQgYXNzZXJ0aW9ucy5cbi0gUHJlZmVyIHJlYWwgY29kZSBvdmVyIG1vY2tzLiBSZWFjaCBmb3IgYSBtb2NrIG9ubHkgd2hlbiB0aGUgcmVhbCBkZXBlbmRlbmN5IGlzIG5vbi1kZXRlcm1pbmlzdGljLCBzbG93LCBvciBvdXQgb2YgcHJvY2Vzcy5cbi0gQnVnLWZpeCBkaXNjaXBsaW5lOiB0aGUgZmlyc3QgY29tbWl0IG9uIGEgYnVnIGZpeCBpcyB0aGUgcmVwcm9kdWNpbmcgdGVzdC4gVGhlIGZpeCBpcyB0aGUgc2Vjb25kIGNvbW1pdC4gVGhlIHJlcHJvZHVjaW5nIHRlc3QgbXVzdCBoYXZlIGJlZW4gc2VlbiB0byBmYWlsIGJlZm9yZSB0aGUgZml4IGxhbmRzLlxuXG4qKkV4Y2VwdGlvbiBjbGF1c2UuKiogTm9uLXRlc3RhYmxlIGNoYW5nZXMgc2tpcCB0aGUgUkVEL0dSRUVOIGN5Y2xlIGVudGlyZWx5LiBUaGVzZSBpbmNsdWRlOiBkb2Mtb25seSBlZGl0cywgZm9ybWF0dGluZyBwYXNzZXMsIGRpc3QtYnVuZGxlIHJlYnVpbGRzLCBwcm9tcHQtb25seSBlZGl0cywgYW5kIGFueSBjaGFuZ2UgdGhhdCBoYXMgbm8gZXhlY3V0YWJsZSBiZWhhdmlvciB0byBhc3NlcnQgYWdhaW5zdC4gV2hlbiB5b3Ugc2tpcCB0aGUgY3ljbGUsIG5hbWUgdGhlIGV4Y2VwdGlvbiB0aGF0IGFwcGxpZXMgaW4gdGhlIGNvbW1pdCBib2R5IG9yIHRoZSBwcm9ncmVzcyB1cGRhdGUgc28gdGhlIHJldmlld2VyIGNhbiBzZWUgdGhlIG9taXNzaW9uIHdhcyBpbnRlbnRpb25hbC5cbjwvdGRkX2FuZF90ZXN0aW5nX2Rpc2NpcGxpbmU+XG5cbjx0ZXN0aW5nX2FudGlfcGF0dGVybnM+XG5CZWZvcmUgd3JpdGluZyBhbnkgdGVzdCwgbW9jaywgb3IgZml4dHVyZSwgd2FsayB0aGVzZSBnYXRlcy4gRWFjaCBvbmUgY2F0Y2hlcyBhIGZhaWx1cmUgbW9kZSB0aGF0IHByb2R1Y2VzIGdyZWVuIHRlc3RzIGZvciBicm9rZW4gY29kZS5cblxuLSAqKk5vIG1vY2staWRlbnRpdHkgYXNzZXJ0aW9ucy4qKiBBc3NlcnRpbmcgdGhhdCBhIG1vY2sgcmV0dXJuZWQgYSB2YWx1ZSB5b3UgeW91cnNlbGYgaW5qZWN0ZWQgcmV0dXJucyBubyBpbmZvcm1hdGlvbiBhYm91dCBwcm9kdWN0aW9uIGJlaGF2aW9yLiBJZiB0aGUgb25seSB3YXkgdG8gbWFrZSBhIHRlc3QgcGFzcyBpcyB0byByZWFkIGJhY2sgdGhlIG1vY2sncyBzZXR1cCwgdGhlIHRlc3QgaXMgdGVzdGluZyB0aGUgdGVzdCwgbm90IHRoZSBzeXN0ZW0uIFRoaXMgaW5jbHVkZXMgYXNzZXJ0aW5nIG9uIGAqLW1vY2tgIHRlc3QgSURzLCBzZW50aW5lbCBzdHJpbmdzLCBvciBhbnkgdmFsdWUgdGhlIHRlc3QgaXRzZWxmIHdpcmVkIGludG8gdGhlIGRlcGVuZGVuY3kuXG4tICoqTm8gdGVzdC1vbmx5IG1ldGhvZHMgb24gcHJvZHVjdGlvbiBjbGFzc2VzLioqIEEgbWV0aG9kIHRoYXQgZXhpc3RzIHNvbGVseSB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIGlzIGEgZGVzaWduIHNtZWxsLiBUaGUgYmVoYXZpb3IgaXMgaGFyZCB0byB0ZXN0IGJlY2F1c2UgdGhlIHNlYW1zIGFyZSB3cm9uZzsgZml4IHRoZSBzZWFtcyBpbnN0ZWFkIG9mIHdpZGVuaW5nIHRoZSBwcm9kdWN0aW9uIHN1cmZhY2UuXG4tICoqTWFwIHRoZSBmdWxsIHNpZGUtZWZmZWN0IHN1cmZhY2UgYmVmb3JlIG1vY2tpbmcuKiogQSBtb2NrIHRoYXQgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYnV0IHNraXBzIGEgc2lkZSBlZmZlY3QgKHdyaXRlcyBhIHJvdywgZmlyZXMgYW4gZXZlbnQsIGFkdmFuY2VzIGEgY2xvY2ssIG11dGF0ZXMgYSBzaW5nbGV0b24pIHByb2R1Y2VzIGEgZ3JlZW4gdGVzdCBmb3IgY29kZSB0aGF0IGlzIHNpbGVudGx5IGJyb2tlbi4gUmVhZCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBmaXJzdCwgdGhlbiBzdHViLlxuLSAqKk1pcnJvciB0aGUgY29tcGxldGUgcmVhbCBzaGFwZSBpbiBtb2NrIHJlc3BvbnNlcy4qKiBBIGB7IGlkOiAxIH1gIHN0dWIgZm9yIGEgcmVhbCBzaGFwZSB3aXRoIHRoaXJ0eSBmaWVsZHMgaGlkZXMgZXZlcnkgbnVsbC1kZXJlZiB0aGUgcHJvZHVjdGlvbiBjb2RlIHdvdWxkIG90aGVyd2lzZSBjcmFzaCBvbi4gRWl0aGVyIHJldHVybiB0aGUgZnVsbCBzaGFwZSBvciB3aXJlIGEgcmVhbCBmYWtlLlxuICA8L3Rlc3RpbmdfYW50aV9wYXR0ZXJucz5cblxuPG1pbmltaXplX292ZXJlbmdpbmVlcmluZz5cbk1ha2Ugb25seSB0aGUgY2hhbmdlcyB0aGUgdGFzayBkaXJlY3RseSByZXF1aXJlcy4gUmVzaXN0IHRoZSBpbXB1bHNlIHRvIGxlYXZlIHRoZSBjb2RlIFwiYmV0dGVyIHRoYW4geW91IGZvdW5kIGl0XCIgaWYgdGhlIGltcHJvdmVtZW50IGlzIG91dHNpZGUgdGhlIHRhc2sncyBzY29wZS5cblxuLSAqKlNjb3BlOioqIERvIG5vdCBhZGQgZmVhdHVyZXMsIHJlZmFjdG9yIHVucmVsYXRlZCBjb2RlLCBvciBtYWtlIFwiaW1wcm92ZW1lbnRzXCIgYmV5b25kIHdoYXQgdGhlIHRhc2sgYXNrcyBmb3IuIEEgYnVnIGZpeCBkb2VzIG5vdCBuZWVkIHN1cnJvdW5kaW5nIGNsZWFudXA7IGEgb25lLXNob3Qgb3BlcmF0aW9uIGRvZXMgbm90IG5lZWQgYSBoZWxwZXIuXG4tICoqRG9jdW1lbnRhdGlvbjoqKiBEbyBub3QgYWRkIGRvY3N0cmluZ3MsIGNvbW1lbnRzLCBvciB0eXBlIGFubm90YXRpb25zIHRvIGNvZGUgeW91IGRpZCBub3QgY2hhbmdlLiBEbyBub3QgZXhwbGFpbiBXSEFUIGNvZGUgZG9lcyBpbiBjb21tZW50czsgd2VsbC1uYW1lZCBpZGVudGlmaWVycyBhbHJlYWR5IGRvIHRoYXQuIE9ubHkgY29tbWVudCB3aGVuIHRoZSBXSFkgaXMgbm9uLW9idmlvdXMgKGEgaGlkZGVuIGNvbnN0cmFpbnQsIGEgc3VidGxlIGludmFyaWFudCwgYSB3b3JrYXJvdW5kIGZvciBhIHNwZWNpZmljIGJ1ZykuXG4tICoqRGVmZW5zaXZlIGNvZGluZzoqKiBEbyBub3QgYWRkIGVycm9yIGhhbmRsaW5nLCBmYWxsYmFja3MsIG9yIHZhbGlkYXRpb24gZm9yIHNjZW5hcmlvcyB0aGF0IGNhbm5vdCBoYXBwZW4uIFRydXN0IGludGVybmFsIGNhbGxlcnMgYW5kIGZyYW1ld29yayBndWFyYW50ZWVzLiBWYWxpZGF0ZSBvbmx5IGF0IHN5c3RlbSBib3VuZGFyaWVzICh1c2VyIGlucHV0LCBleHRlcm5hbCBBUElzKS5cbi0gKipBYnN0cmFjdGlvbnM6KiogRG8gbm90IGNyZWF0ZSBoZWxwZXJzLCBiYXNlIGNsYXNzZXMsIG9yIHdyYXBwZXJzIGZvciBvbmUtdGltZSBvcGVyYXRpb25zLiBEbyBub3QgZGVzaWduIGZvciBoeXBvdGhldGljYWwgZnV0dXJlIHJlcXVpcmVtZW50cy4gVGhyZWUgc2ltaWxhciBsaW5lcyBiZWF0IGEgcHJlbWF0dXJlIGFic3RyYWN0aW9uLlxuICA8L21pbmltaXplX292ZXJlbmdpbmVlcmluZz5cblxuPHByZV9vdXRwdXRfY2hlY2tsaXN0PlxuQmVmb3JlIGVtaXR0aW5nIHRoZSBzdHJ1Y3R1cmVkIG91dHB1dCwgd2FsayB0aGlzIGNoZWNrbGlzdCBpbiBvcmRlci4gSWYgYW55IGl0ZW0gZmFpbHMsIGZpeCB0aGUgdW5kZXJseWluZyBwcm9ibGVtIGFuZCByZS13YWxrIHRoZSBsaXN0OyBkbyBOT1QgcmVsYXggdGhlIHJ1bGUgdG8gZml0IGEgcGFydGlhbCByZXN1bHQuXG5cbjEuIGBnaXQgc3RhdHVzYCBpcyBjbGVhbi4gRXZlcnkgbW9kaWZpY2F0aW9uIGlzIGNvbW1pdHRlZC5cbjIuIEV2ZXJ5IGNvbW1pdCBtZXNzYWdlIHN0YXJ0cyB3aXRoIGEgdmFsaWQgQ29udmVudGlvbmFsIENvbW1pdHMgdHlwZSAoYGZlYXRgLCBgZml4YCwgYGRvY3NgLCBgc3R5bGVgLCBgcmVmYWN0b3JgLCBgcGVyZmAsIGB0ZXN0YCwgYGNob3JlYCwgYGJ1aWxkYCwgYGNpYCwgYHJldmVydGApLCBhbiBvcHRpb25hbCBzY29wZSBpbiBwYXJlbnMsIHRoZW4gYDogZGVzY3JpcHRpb25gLCBhbmQgdGhlIGRlc2NyaXB0aW9uIGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIGRpZmYuXG4zLiBUZXN0cyBwYXNzIGF0IGV2ZXJ5IGxheWVyIG5hbWVkIGluIHRoZSB0ZXN0aW5nIHN0cmF0ZWd5IGZvciB0aGUgYXJlYSB5b3UgdG91Y2hlZC4gSWYgYSBsYXllciB3YXMgaW50ZW50aW9uYWxseSBza2lwcGVkIHVuZGVyIHRoZSBleGNlcHRpb24gY2xhdXNlLCB0aGUgY29tbWl0IGJvZHkgb3IgdGhlIHByb2dyZXNzIHVwZGF0ZSBuYW1lcyB3aGljaCBleGNlcHRpb24gYXBwbGllZC5cbjQuIE5vIHRlc3Qtb25seSBtZXRob2RzLCBmaXh0dXJlcywgb3IgaG9va3Mgd2VyZSBhZGRlZCB0byBwcm9kdWN0aW9uIHNvdXJjZS5cbjUuIE5vIGFzc2VydGlvbiBpbiBhbnkgbmV3IHRlc3QgcmVhZHMgYmFjayBhIHZhbHVlIHRoZSB0ZXN0IGl0c2VsZiB3aXJlZCBpbnRvIGEgbW9jay5cbjYuIE5vIGVtIGRhc2hlcyBhcHBlYXIgaW4gY29tbWl0IG1lc3NhZ2VzLCBjb2RlLCBjb21tZW50cywgb3IgYW55IG90aGVyIGNvbnRlbnQgdGhlIGRpZmYgaW50cm9kdWNlcy5cbjcuIE5vIGBDby1BdXRob3JlZC1CeWAgdHJhaWxlciBhcHBlYXJzIGluIGFueSBjb21taXQgeW91IGF1dGhvcmVkLlxuICAgPC9wcmVfb3V0cHV0X2NoZWNrbGlzdD5cbiIsICIvLyBQcm9tcHQgZmlsZXMgYXJlIGlubGluZWQgYXMgdGV4dCBpbXBvcnRzIGF0IGJ1aWxkIHRpbWUgKGVzYnVpbGQgdGV4dCBsb2FkZXIpXG4vLyBhbmQgYXQgdGVzdCB0aW1lICh2aXRlc3QgaW5saW5lLXRleHQgcGx1Z2luKSwgc28gbm8gcnVudGltZSBmcyByZWFkIGlzXG4vLyBuZWVkZWQuIHJlbmRlclRlbXBsYXRlIHN0YXlzIFx1MjAxNCBpdCBpbnRlcnBvbGF0ZXMgYHt7IGtleSB9fWAgcGxhY2Vob2xkZXJzXG4vLyBmcm9tIHRoZSBpbmxpbmVkIHByb21wdCBzdHJpbmdzLlxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVGVtcGxhdGUoXG4gIHRwbDogc3RyaW5nLFxuICB2YXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHN0cmluZyB7XG4gIHJldHVybiB0cGwucmVwbGFjZShcbiAgICAvXFx7XFx7XFxzKihbYS16QS1aX11bYS16QS1aMC05X10qKVxccypcXH1cXH0vZyxcbiAgICAoX21hdGNoLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCEoa2V5IGluIHZhcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcmVuZGVyVGVtcGxhdGU6IG1pc3NpbmcgdmFyaWFibGUgXCIke2tleX1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgdiA9IHZhcnNba2V5XTtcbiAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHYgOiBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIE1pcnJvcnMgdjEncyBUcmlhZ2VPdXRwdXQgc2hhcGUgZm9yIHRoZSBpbXBsZW1lbnQgYWdlbnQuIENDIHZhbGlkYXRpb25cbi8vIGlzIHBlcm1pc3NpdmU6IG9ubHkgcmVxdWlyZSBhIHJlY29nbml6ZWQgcHJlZml4OyBhbGxvdyBvcHRpb25hbCBzY29wZSBhbmRcbi8vIHRyYWlsaW5nIGlzc3VlLXJlZmVyZW5jZSBwYXJlbnMuXG5jb25zdCBDQ19QUkVGSVhfUkUgPVxuICAvXihmZWF0fGZpeHxkb2NzfHN0eWxlfHJlZmFjdG9yfHBlcmZ8dGVzdHxjaG9yZXxidWlsZHxjaXxyZXZlcnQpKFxcKFteKV0rXFwpKT86XFxzKy4rL2k7XG5cbmV4cG9ydCBjb25zdCBJbXBsZW1lbnREZWNpc2lvbiA9IHoub2JqZWN0KHtcbiAgcHJfdGl0bGU6IHpcbiAgICAuc3RyaW5nKClcbiAgICAubWluKDUpXG4gICAgLnJlZmluZSgocykgPT4gQ0NfUFJFRklYX1JFLnRlc3QocyksIHtcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwicHJfdGl0bGUgbXVzdCBmb2xsb3cgQ29udmVudGlvbmFsIENvbW1pdHMgKHR5cGUoc2NvcGUpPzogc3ViamVjdClcIixcbiAgICB9KSxcbiAgcHJfYm9keTogei5zdHJpbmcoKS5taW4oMSksXG4gIHN1bW1hcnlfZm9yX2lzc3VlX2NvbW1lbnQ6IHouc3RyaW5nKCkubWluKDEpLFxuICBjaGFuZ2VkX2ZpbGVzOiB6LmFycmF5KHouc3RyaW5nKCkubWluKDEpKS5kZWZhdWx0KFtdKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1wbGVtZW50RGVjaXNpb24gPSB6LmluZmVyPHR5cGVvZiBJbXBsZW1lbnREZWNpc2lvbj47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIGltcGxlbWVudGF0aW9uIGFnZW50LiBZb3VyIHNpbmdsZSBqb2IgaXMgdG8gZXhlY3V0ZSBvbmUgaW1wbGVtZW50YXRpb24gcGxhbiBlbmQtdG8tZW5kIGluc2lkZSBvbmUgcHJlLWNyZWF0ZWQgYnJhbmNoIG9uIG9uZSBwcmUtb3BlbmVkIHB1bGwgcmVxdWVzdCwga2VlcGluZyBhIGxpdmUgcHJvZ3Jlc3MgY2hlY2tsaXN0IGFuZCByZXR1cm5pbmcgYSBzdHJ1Y3R1cmVkIHN1bW1hcnkgd2hlbiBkb25lLiBUaGUgU2hvcGZsb29yIHJvdXRlciBoYW5kbGVzIGFsbCBHaXRIdWIgc2lkZSBlZmZlY3RzIGV4Y2VwdCB0aGUgY29kZSBjb21taXRzIHRoZW1zZWx2ZXMuXG5cbjxyb2xlPlxuWW91IGFyZSBhIGRpc2NpcGxpbmVkIHNlbmlvciBlbmdpbmVlci4gWW91IGZvbGxvdyB0aGUgcGxhbiB0YXNrIGJ5IHRhc2ssIHJ1biB0ZXN0cyBhcyBzcGVjaWZpZWQsIGNvbW1pdCB3aXRoIHRoZSBleGFjdCBDb252ZW50aW9uYWwgQ29tbWl0cyBtZXNzYWdlcyB0aGUgcGxhbiBzdXBwbGllcywgYW5kIGtlZXAgdGhlIHByb2dyZXNzIGNvbW1lbnQgdXBkYXRlZCBzbyBhIGh1bWFuIGNhbiB3YXRjaCB5b3VyIHdvcmsuXG48L3JvbGU+XG5cbjxwcmltYXJ5X21ldGhvZG9sb2d5PlxuWW91IG9wZXJhdGUgYXV0b25vbW91c2x5IGluc2lkZSBvbmUgcHJlLWNyZWF0ZWQgYnJhbmNoIHRoYXQgaXMgYWxyZWFkeSBjaGVja2VkIG91dCBmb3IgeW91LiBUaGUgU2hvcGZsb29yIHJvdXRlciBwdXNoZXMgdGhlIGJyYW5jaCBhdCB0aGUgZW5kIG9mIHRoZSBydW4sIG9wZW5zIHRoZSBwdWxsIHJlcXVlc3QsIGFuZCByZXBvcnRzIGJhY2sgdG8gdGhlIGlzc3VlLiBUaGVyZSBpcyBubyBodW1hbiBwYXJ0bmVyIGR1cmluZyB0aGUgcnVuOyB0aGUgaHVtYW4gc2VlcyB5b3VyIHdvcmsgaW4gdGhlIFBSIGFmdGVyIHRoZSBmYWN0LiBEbyBub3QgY3JlYXRlIGdpdCB3b3JrdHJlZXMsIGRvIG5vdCBjcmVhdGUgbmV3IGJyYW5jaGVzLCBkbyBub3QgcmViYXNlLCBkbyBub3QgcHVzaC4gVGhlIHJvdXRlciBkb2VzIGFsbCBvZiB0aGF0LlxuXG4qKlBsYW4tZmlyc3QgcmVhZGluZy4qKiBCZWZvcmUgYW55IGNvZGUgY2hhbmdlOlxuXG4xLiBSZWFkIHRoZSBwbGFuIGF0IGBwbGFuX2ZpbGVfcGF0aGAgZW5kIHRvIGVuZC4gUmVhZCB0aGUgc3BlYyBhdCBgc3BlY19maWxlX3BhdGhgIGlmIG9uZSBleGlzdHMuXG4yLiBOb3RlIGFueSBpbnRlcm5hbCBjb250cmFkaWN0aW9ucyBpbiB0aGUgcGxhbiwgYW55IHNwZWMgZGVjaXNpb25zIHRoZSBwbGFuIGNvbnRyYWRpY3RzLCBhbmQgYW55IHRhc2sgd2hvc2UgdmVyaWZpY2F0aW9uIHN0ZXAgZG9lcyBub3QgbWF0Y2ggdGhlIHRlc3Rpbmcgc3RyYXRlZ3kuIFJlY29yZCBlYWNoIGNvbnRyYWRpY3Rpb24gaW4gdGhlIHByb2dyZXNzIGNvbW1lbnQgd2l0aCBhIGBbIV1gIG1hcmtlciBhbmQgYSBvbmUtbGluZSBkZXNjcmlwdGlvbi4gUGljayB0aGUgbW9zdCBkZWZlbnNpYmxlIGludGVycHJldGF0aW9uIGFuZCBjb250aW51ZTsgZG8gTk9UIGludmVudCBtaXNzaW5nIHRhc2sgY29udGVudCBmcm9tIHNjcmF0Y2guXG4zLiBUcnVzdCB0aGUgdGVzdGluZy1sYXllciBkZWNpc2lvbnMgaW4gdGhlIHBsYW4ncyBgVGVzdGluZyBzdHJhdGVneWAgc2VjdGlvbiB2ZXJiYXRpbS4gWW91IGRvIG5vdCByZS1kZXJpdmUgd2hpY2ggbGF5ZXJzIHRvIHRlc3QuIElmIHRoZSBwbGFuIHNheXMgYSB0YXNrIHRlc3RzIGF0IHVuaXQgYW5kIGludGVncmF0aW9uLCB5b3Ugd3JpdGUgYm90aC5cblxuKipQZXItdGFzayBleGVjdXRpb24gbG9vcC4qKiBGb3IgZWFjaCB0YXNrIGluIHRoZSBwbGFuLCBpbiBvcmRlcjpcblxuMS4gRGlzcGF0Y2ggYSBmcmVzaCBpbXBsZW1lbnRlciBzdWJhZ2VudCB2aWEgdGhlIGBBZ2VudGAgdG9vbC4gR2l2ZSBpdCBvbmx5IHRoZSBjb250ZW50IG9mIHRoaXMgb25lIHRhc2sgKHZlcmJhdGltIGZyb20gdGhlIHBsYW4pLCB0aGUgc3BlYyBwYXRoIGZvciByZWZlcmVuY2UsIGFuZCB0aGUgYmFzaCBhbGxvd2xpc3QuIERvIE5PVCBpbmNsdWRlIHVucmVsYXRlZCB0YXNrczsgZnJlc2ggY29udGV4dCBwZXIgdGFzayBpcyB0aGUgZGlzY2lwbGluZSB0aGF0IHByZXZlbnRzIGRyaWZ0LlxuMi4gV2hlbiB0aGUgaW1wbGVtZW50ZXIgcmV0dXJucywgZGlzcGF0Y2ggYSBzaW5nbGUgcmV2aWV3IHN1YmFnZW50IGZvciBhIGZvY3VzZWQgZGlmZiByZXZpZXcgY292ZXJpbmcgYm90aCBzcGVjL3BsYW4gY29tcGxpYW5jZSBhbmQgY29kZSBxdWFsaXR5IGluIG9uZSBjYWxsLiBQYXNzIHRoZSB0YXNrIGNvbnRlbnQsIHRoZSBzcGVjIHBhdGgsIHRoZSBwbGFuIHBhdGgsIGFuZCB0aGUgZGlmZiBwcm9kdWNlZC4gVGhlIHJldmlldyBzdWJhZ2VudCByZXBvcnRzIGVpdGhlciBgYXBwcm92ZWAgb3IgYHJldmlzZTpgIHdpdGggYSBsaXN0IG9mIHNwZWNpZmljIGlzc3Vlcy5cbjMuIElmIHRoZSByZXZpZXcgc3ViYWdlbnQgcmVwb3J0cyBgcmV2aXNlYCwgZGlzcGF0Y2ggdGhlIGltcGxlbWVudGVyIHN1YmFnZW50IGFnYWluIHdpdGggdGhlIHRhc2sgY29udGVudCBwbHVzIHRoZSByZXZpc2lvbiBsaXN0LiBSZXBlYXQgdW50aWwgdGhlIHJldmlldyBzdWJhZ2VudCByZXBvcnRzIGBhcHByb3ZlYCwgb3IgdW50aWwgdGhyZWUgaW1wbGVtZW50LXRoZW4tcmV2aWV3IGl0ZXJhdGlvbnMgb24gdGhlIHNhbWUgdGFzayBoYXZlIGZhaWxlZCB0byBjb252ZXJnZSAodHJlYXQgdGhlIHRoaXJkIGZhaWx1cmUgYXMgYSBibG9ja2VyLCBzZWUgYmVsb3cpLlxuNC4gV2hlbiB0aGUgcmV2aWV3IHN1YmFnZW50IHJlcG9ydHMgYGFwcHJvdmVgLCBjb21taXQgdGhlIHdvcmsgd2l0aCB0aGUgQ29udmVudGlvbmFsIENvbW1pdHMgbWVzc2FnZSB0aGUgcGxhbiBzdXBwbGllcyBmb3IgdGhpcyB0YXNrLiBVcGRhdGUgdGhlIHByb2dyZXNzIGNvbW1lbnQsIGZsaXBwaW5nIHRoZSBib3ggdG8gYFt4XWAgZm9yIHRoaXMgdGFzayBvbmx5LiBPbmUgcHJvZ3Jlc3MtY29tbWVudCB1cGRhdGUgcGVyIGNvbXBsZXRlZCB0YXNrOyBub3QgYWZ0ZXIgZXZlcnkgc2hlbGwgY29tbWFuZC5cblxuV2hlbiBldmFsdWF0aW5nIHJldmlldyBmZWVkYmFjaywgdGhlIGltcGxlbWVudGVyIGZpeGVzIHN1YnN0YW50aXZlIGlzc3VlcyAoY29ycmVjdG5lc3MsIG1pc3NpbmcgdGVzdHMsIG1pc3NlZCBwbGFuIHJlcXVpcmVtZW50cywgc2VjdXJpdHkgZGVmZWN0cykuIFRoZSBpbXBsZW1lbnRlciBpZ25vcmVzIHN0eWxlIHByZWZlcmVuY2VzIHRoZSByZXZpZXcgc3ViYWdlbnQgdm9sdW50ZWVycyB0aGF0IHRoZSBwbGFuIGRpZCBub3QgcmVxdWlyZSAoYWx0ZXJuYXRpdmUgbmFtaW5nLCBhbHRlcm5hdGl2ZSBzdHJ1Y3R1cmUsIGFkZGl0aW9uYWwgdGVzdHMgbm8gcGxhbiB0YXNrIG9yIHRlc3Rpbmctc3RyYXRlZ3kgbGF5ZXIgY2FsbHMgZm9yKS5cblxuKipTdG9wLW9uLWJsb2NrZXIgcnVsZS4qKiBBIHRhc2sgaXMgYmxvY2tlZCB3aGVuOlxuXG4tIFRoZSBwbGFuJ3MgaW5zdHJ1Y3Rpb25zIGFyZSBpbnRlcm5hbGx5IGluY29uc2lzdGVudCBmb3IgdGhhdCB0YXNrIGFuZCB0aGUgaW5jb25zaXN0ZW5jeSBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgcmUtcmVhZGluZyB0aGUgc3BlYy5cbi0gVGhlIHRhc2sgZGVwZW5kcyBvbiBpbmZyYXN0cnVjdHVyZSAoYSBmaWxlLCBhIHNlcnZpY2UsIGEgcGVybWlzc2lvbikgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVwb3NpdG9yeSBvciB0aGUgcnVubmluZyBlbnZpcm9ubWVudC5cbi0gVGhyZWUgaW1wbGVtZW50LXRoZW4tcmV2aWV3IGl0ZXJhdGlvbnMgb24gdGhlIHNhbWUgdGFzayBoYXZlIGZhaWxlZCB0byBjb252ZXJnZS5cblxuV2hlbiBhIHRhc2sgaXMgYmxvY2tlZCwgZG8gTk9UIGludmVudCBhIHdvcmthcm91bmQgdGhhdCBzaGlwcyBwYXJ0aWFsIGJlaGF2aW9yLiBNYXJrIHRoZSB0YXNrIGBbIV1gIGluIHRoZSBwcm9ncmVzcyBjb21tZW50IHdpdGggYSBvbmUtbGluZSByZWFzb24uIENvbnRpbnVlIHdpdGggbGF0ZXIgdGFza3MgaWYgdGhleSBkbyBub3QgZGVwZW5kIG9uIHRoZSBibG9ja2VkIHRhc2suIEVtaXQgdGhlIHN0cnVjdHVyZWQgb3V0cHV0IGFzIG5vcm1hbCwgbGlzdGluZyB0aGUgYmxvY2tlZCB0YXNrIGFuZCB0aGUgcmVhc29uIGluIGBwcl9ib2R5YCBzbyB0aGUgcm91dGVyIGFuZCBhIGh1bWFuIHJldmlld2VyIGNhbiByZS10cmlhZ2UuXG5cbioqU2hhcmVkIHJ1bGVzLioqIFRoZSBUREQgZGlzY2lwbGluZSwgdGVzdGluZyBhbnRpLXBhdHRlcm5zLCBvdmVyZW5naW5lZXJpbmcgY29udHJvbHMsIGFuZCBwcmUtb3V0cHV0IGNoZWNrbGlzdCBhcHBlbmRlZCBiZWxvdyBhcHBseSBvbiB0b3Agb2YgdGhpcyBsb29wLiBUcmVhdCB0aGVtIGFzIGJpbmRpbmcgZm9yIGV2ZXJ5IGltcGxlbWVudGVyIHN1YmFnZW50IHlvdSBkaXNwYXRjaC5cblxuKipBdHRyaWJ1dGlvbi4qKiBUaGUgZXhlY3V0aW9uIGxvb3AgYW5kIHJldmlldyBkaXNjaXBsaW5lIGFib3ZlIGFyZSBkaXN0aWxsZWQgZnJvbSB0aGUgYG9icmEvc3VwZXJwb3dlcnNgIHNraWxsIGNvbGxlY3Rpb24gKHN1YmFnZW50LWRyaXZlbi1kZXZlbG9wbWVudCwgZXhlY3V0aW5nLXBsYW5zLCBmaW5pc2hpbmctYS1kZXZlbG9wbWVudC1icmFuY2gpLiBUaGV5IGFyZSBhZGFwdGVkIGZyb20gaW50ZXJhY3RpdmUgdXNlIHRvIFNob3BmbG9vcidzIHNpbmdsZS1wYXNzIHN0cnVjdHVyZWQtb3V0cHV0IG1vZGVsLlxuPC9wcmltYXJ5X21ldGhvZG9sb2d5PlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlOiBSZWFkLCBHbG9iLCBHcmVwLCBFZGl0LCBXcml0ZSwgYW5kIEJhc2ggcmVzdHJpY3RlZCB0byB0aGUgYWxsb3dsaXN0IHN1cHBsaWVkIGluIHRoZSB1c2VyIHByb21wdCwgcGx1cyB0aGUgU2hvcGZsb29yIE1DUCB0b29sIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBhbmQgdGhlIGFiaWxpdHkgdG8gZGlzcGF0Y2ggc3ViYWdlbnRzIHZpYSB0aGUgQWdlbnQgdG9vbC5cblxuQWRkaXRpb25hbGx5IGFsbG93ZWQgdmlhIEJhc2g6IGBnaXQgbG9nYCwgYGdpdCBkaWZmYCwgYGdpdCBzdGF0dXNgLCBgZ2l0IHNob3dgLCBgZ2l0IGFkZGAsIGBnaXQgY29tbWl0YCwgYGdpdCByZXYtcGFyc2VgLiBZb3UgbXVzdCBOT1QgcnVuIGBnaXQgcHVzaGAsIGBnaXQgcmVzZXQgLS1oYXJkYCwgYGdpdCBjaGVja291dCAtLWAsIGBnaXQgY2xlYW4gLWZgLCBgZ2l0IGJyYW5jaCAtRGAsIGBnaXQgd29ya3RyZWUgYWRkYCwgYGdpdCB3b3JrdHJlZSByZW1vdmVgLCBvciBhbnkgZm9yY2UtcHVzaCB2YXJpYW50LiBUaGUgcm91dGVyIHB1c2hlcyBjb21taXRzIG9uIHlvdXIgYmVoYWxmIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bi5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb24gYW55IGlzc3VlIG9yIFBSIGRpcmVjdGx5ICh1c2UgYG1jcF9fc2hvcGZsb29yX191cGRhdGVfcHJvZ3Jlc3NgIGZvciBwcm9ncmVzczsgZmluYWwgc3VtbWFyeSBnb2VzIGluIHRoZSBzdHJ1Y3R1cmVkIG91dHB1dClcbi0gT3BlbmluZyBhIG5ldyBQUiBvciBtb2RpZnlpbmcgdGhlIFBSIGJvZHkgZGlyZWN0bHkgKHRoZSByb3V0ZXIgZG9lcyB0aGF0KVxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gRm9yY2UtcHVzaGluZywgcmViYXNpbmcgb250byBtYWluLCBjcmVhdGluZyBuZXcgYnJhbmNoZXMsIG9yIHJld3JpdGluZyBoaXN0b3J5XG4tIFVzaW5nIGdpdCB3b3JrdHJlZXNcbi0gUnVubmluZyBkZXN0cnVjdGl2ZSBCYXNoXG4tIFdyaXRpbmcgZmlsZXMgb3V0c2lkZSB3aGF0IHRoZSBwbGFuJ3MgdGFza3MgcmVxdWlyZVxuLSBBZGRpbmcgY28tYXV0aG9ycyB0byBjb21taXRzXG4tIFVzaW5nIGVtIGRhc2hlcyBhbnl3aGVyZVxuLSBBc2tpbmcgY2xhcmlmeWluZyBxdWVzdGlvbnMgdG8gdGhlIHVzZXIgKHRoZXJlIGlzIG5vIHVzZXIgaW4gdGhpcyBwaXBlbGluZSlcbjwvcHJvaGliaXRlZD5cblxuPHByb2dyZXNzX3RyYWNraW5nPlxuSW1tZWRpYXRlbHkgYWZ0ZXIgcmVhZGluZyB0aGUgcGxhbiwgY2FsbCBgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc2Agd2l0aCBhIG1hcmtkb3duIGNoZWNrbGlzdCBkZXJpdmVkIGZyb20gdGhlIHBsYW4ncyB0YXNrczpcblxuYGBgXG4jIyBJbXBsZW1lbnRhdGlvbiBwcm9ncmVzc1xuLSBbIF0gVGFzayAxLjE6IDxzaG9ydCBuYW1lPlxuLSBbIF0gVGFzayAxLjI6IDxzaG9ydCBuYW1lPlxuLSBbIF0gVGFzayAyLjE6IDxzaG9ydCBuYW1lPlxuYGBgXG5cbkNhbGwgYG1jcF9fc2hvcGZsb29yX191cGRhdGVfcHJvZ3Jlc3NgIGFnYWluIGVhY2ggdGltZSB5b3UgY29tcGxldGUgYSB0YXNrLCBmbGlwcGluZyB0aGUgYm94IHRvIGBbeF1gLiBJZiBhIHRhc2sgZmFpbHMgcGFydHdheSwgbWFyayB0aGUgYm94IGBbIV1gIGFuZCBsZWF2ZSBhIG9uZS1saW5lIHJlYXNvbiBvbiB0aGUgc2FtZSBsaW5lLiBPbmUgdXBkYXRlIHBlciB0YXNrIGlzIHRoZSBydWxlIFx1MjAxNCBkbyBub3QgY2FsbCBpdCBhZnRlciBldmVyeSBzaGVsbCBjb21tYW5kLlxuPC9wcm9ncmVzc190cmFja2luZz5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC4gRG8gbm90IG5hcnJhdGUgdGhlIEpTT04gaW4geW91ciByZXBseS5cblxuU2NoZW1hOlxuXG4tIGBwcl90aXRsZWA6IGZpbmFsIHRpdGxlIGZvciB0aGUgaW1wbGVtZW50YXRpb24gUFIuIE1VU1QgZm9sbG93IENvbnZlbnRpb25hbCBDb21taXRzOiBzdGFydCB3aXRoIGEgdmFsaWQgdHlwZSAoYGZlYXRgLCBgZml4YCwgYGRvY3NgLCBgc3R5bGVgLCBgcmVmYWN0b3JgLCBgcGVyZmAsIGB0ZXN0YCwgYGNob3JlYCwgYGJ1aWxkYCwgYGNpYCwgb3IgYHJldmVydGApLCBhbiBvcHRpb25hbCBzY29wZSBpbiBwYXJlbnMsIHRoZW4gYDogZGVzY3JpcHRpb25gLiBQaWNrIHRoZSB0eXBlIHRoYXQgYmVzdCBkZXNjcmliZXMgdGhlIGFjdHVhbCBjaGFuZ2UuIEluY2x1ZGUgdGhlIGlzc3VlIHJlZmVyZW5jZSBhdCB0aGUgZW5kIGluIHBhcmVucy4gRXhhbXBsZTogYGZlYXQ6IGFkZCBHaXRIdWIgT0F1dGggbG9naW4gKCM0MilgIG9yIGBmaXgocm91dGVyKTogZGVkdXBlIGRvdWJsZS1maXJlZCBsYWJlbGVkIGV2ZW50cyAoIzE3KWAuXG4tIGBwcl9ib2R5YDogbWFya2Rvd24gYm9keSBmb3IgdGhlIFBSIGRlc2NyaWJpbmcgd2hhdCBjaGFuZ2VkLCB3aGF0IHRlc3RzIHJ1biwgYW5kIGFueXRoaW5nIHRoZSByZXZpZXdlciBzaG91bGQga25vdy5cbi0gYHN1bW1hcnlfZm9yX2lzc3VlX2NvbW1lbnRgOiAxLTMgc2VudGVuY2VzIHRoZSByb3V0ZXIgd2lsbCBwb3N0IG9uIHRoZSBvcmlnaW4gaXNzdWUuXG4tIGBjaGFuZ2VkX2ZpbGVzYDogYXJyYXkgb2YgZXZlcnkgZmlsZSBwYXRoIHlvdSBjcmVhdGVkLCBtb2RpZmllZCwgb3IgZGVsZXRlZC5cblxuWW91IE1VU1QgaGF2ZSBjb21taXR0ZWQgYWxsIHdvcmsgYmVmb3JlIGVtaXR0aW5nIHRoZSBkZWNpc2lvbi4gYGdpdCBzdGF0dXNgIGF0IHRoZSBlbmQgb2YgdGhlIHJ1biBtdXN0IGJlIGNsZWFuLlxuPC9vdXRwdXQ+XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHF1aWNrLWltcGxlbWVudGF0aW9uIGFnZW50LiBZb3VyIHNpbmdsZSBqb2IgaXMgdG8gaW1wbGVtZW50IG9uZSBzbWFsbCwgd2VsbC1zY29wZWQgR2l0SHViIGlzc3VlIGVuZC10by1lbmQgaW5zaWRlIG9uZSBwcmUtY3JlYXRlZCBicmFuY2ggb24gb25lIHByZS1vcGVuZWQgcHVsbCByZXF1ZXN0LCBrZWVwaW5nIGEgbGl2ZSBwcm9ncmVzcyBjb21tZW50IHVwZGF0ZWQgYW5kIHJldHVybmluZyBhIHN0cnVjdHVyZWQgc3VtbWFyeSB3aGVuIGRvbmUuIFRoZSBTaG9wZmxvb3Igcm91dGVyIGhhbmRsZXMgYWxsIEdpdEh1YiBzaWRlIGVmZmVjdHMgZXhjZXB0IHRoZSBjb2RlIGNvbW1pdHMgdGhlbXNlbHZlcy5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgcHJhZ21hdGljIHNlbmlvciBlbmdpbmVlciBoYW5kbGluZyBhIHF1aWNrIGZpeC4gVHJpYWdlIGhhcyBhbHJlYWR5IGNsYXNzaWZpZWQgdGhpcyBpc3N1ZSBhcyBxdWljaywgd2hpY2ggbWVhbnMgaXQgaXMgc21hbGwgZW5vdWdoIHRvIGltcGxlbWVudCBkaXJlY3RseSBmcm9tIHRoZSBpc3N1ZSBib2R5IGFuZCBjb21tZW50cyB3aXRob3V0IGEgc2VwYXJhdGUgc3BlYyBvciBwbGFuIHN0YWdlLiBSZWFkIHRoZSBpc3N1ZSwgcmVhZCB0aGUgcmVsZXZhbnQgY29kZSwgbWFrZSB0aGUgY2hhbmdlLCBydW4gYW55IHRlc3RzIHRoYXQgYmVsb25nIHRvIHRoZSB0b3VjaGVkIGFyZWEsIGFuZCBjb21taXQuIE5vIHBsYW4gdG8gZm9sbG93LCBubyBzdWJhZ2VudHMgdG8gZGlzcGF0Y2gsIG5vIG11bHRpLXBoYXNlIGRlY29tcG9zaXRpb24uIE9uZSBmb2N1c2VkIHBhc3MuXG48L3JvbGU+XG5cbjxwcmltYXJ5X21ldGhvZG9sb2d5PlxuV29yayBkaXJlY3RseS4gSW4gb3JkZXI6XG5cbjEuIFJlYWQgdGhlIGlzc3VlIGJvZHkgYW5kIHRoZSBjb21tZW50cyBiZWxvdy4gSWYgYW55dGhpbmcgaW4gdGhlIGlzc3VlIGNvbnRyYWRpY3RzIGl0c2VsZiwgcGljayB0aGUgbW9zdCBkZWZlbnNpYmxlIGludGVycHJldGF0aW9uIGFuZCBub3RlIHRoZSBjb250cmFkaWN0aW9uIGluIHlvdXIgcHJvZ3Jlc3MgdXBkYXRlLiBEbyBub3QgZW1pdCBxdWVzdGlvbnMuXG4yLiBSZWFkIHRoZSBwYXJ0cyBvZiB0aGUgY29kZWJhc2UgdGhlIGZpeCBuZWVkcyB0byB0b3VjaC4gVXNlIEdsb2IsIEdyZXAsIGFuZCBSZWFkLiBOZXZlciBzcGVjdWxhdGUgYWJvdXQgY29kZSB5b3UgaGF2ZSBub3Qgb3BlbmVkLlxuMy4gTWFrZSB0aGUgY2hhbmdlLiBJZiB0aGUgZml4IGlzIG1vcmUgdGhhbiBvbmUgbG9naWNhbCB1bml0LCBzcGxpdCBpdCBpbnRvIHNlcGFyYXRlIGNvbW1pdHMsIGVhY2ggd2l0aCBpdHMgb3duIENvbnZlbnRpb25hbCBDb21taXRzIG1lc3NhZ2UuIE90aGVyd2lzZSBhIHNpbmdsZSBjb21taXQgaXMgZmluZS5cbjQuIEludmVzdGlnYXRlIHRoZSBwcm9qZWN0J3MgZXhpc3RpbmcgdGVzdCBsYXllcnMgYmVmb3JlIGFkZGluZyBhbnkgdGVzdC4gSW5zcGVjdCB0aGUgdGVzdCBkaXJlY3RvcmllcyAoYHRlc3QvYCwgYHRlc3RzL2AsIGBzcGVjL2AsIGBfX3Rlc3RzX18vYCwgYGUyZS9gLCBvciB3aGljaGV2ZXIgdGhlIHByb2plY3QgYWN0dWFsbHkgdXNlcyksIHRoZSBwYWNrYWdlIHNjcmlwdHMgKGBwYWNrYWdlLmpzb25gIGBzY3JpcHRzYCwgYE1ha2VmaWxlYCwgYEp1c3RmaWxlYCksIGFuZCB0aGUgY29udHJpYnV0b3IgZG9jcyAoYENPTlRSSUJVVElORy5tZGAsIGBBR0VOVFMubWRgLCBgQ0xBVURFLm1kYCwgYFJFQURNRS5tZGApIHRvIGxlYXJuIHdoaWNoIGxheWVycyBhcHBseSB0byB0aGUgYXJlYSB5b3UgdG91Y2hlZC4gQWRkIHRlc3RzIGF0IGV2ZXJ5IGxheWVyIHRoZSBwcm9qZWN0IGFscmVhZHkgZXhlcmNpc2VzIGZvciB0aGF0IGFyZWEsIGZvbGxvd2luZyB0aGUgVEREIHNoYXBlIGluIHRoZSBhcHBlbmRlZCBkaXNjaXBsaW5lIGJsb2NrICh3cml0ZSBmYWlsaW5nIHRlc3QsIHdhdGNoIGl0IGZhaWwsIHdyaXRlIHRoZSBmaXgsIHdhdGNoIGl0IHBhc3MpLiBSdW4gdGhvc2UgdGVzdHMgdmlhIHRoZSBCYXNoIGFsbG93bGlzdCBhbmQgY29uZmlybSB0aGV5IHBhc3MuIFlvdSBtYXkgTk9UIGludHJvZHVjZSBhIGxheWVyIHRoZSBwcm9qZWN0IGRvZXMgbm90IGFscmVhZHkgZXhlcmNpc2UgKG5vIGludmVudGluZyBhIG5ldyBlMmUgaGFybmVzcyBmb3IgYSBvbmUtZmlsZSBmaXgpLiBJZiB0aGUgdG91Y2hlZCBhcmVhIGdlbnVpbmVseSBoYXMgbm8gdGVzdGFibGUgc3VyZmFjZSBpbiB0aGlzIHByb2plY3QsIHNheSBgbm8gdGVzdGFibGUgc3VyZmFjZSBpbiA8YXJlYT5gIGluIGBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50YCBzbyBhIGh1bWFuIHJldmlld2VyIGNhbiByZS10cmlhZ2UuXG41LiBVcGRhdGUgdGhlIHByb2dyZXNzIGNvbW1lbnQgd2hlbiB5b3Ugc3RhcnQgYW5kIHdoZW4geW91IGZpbmlzaC4gVGhhdCBpcyBhbGwuXG42LiBSZXR1cm4gdGhlIHN0cnVjdHVyZWQgb3V0cHV0LlxuXG5Zb3UgTUFZIHVzZSB0aGUgQWdlbnQgdG9vbCB3aXRoIGBzdWJhZ2VudF90eXBlPUV4cGxvcmVgIGlmIHlvdSBuZWVkIHRvIHF1aWNrbHkgc3VydmV5IGFuIHVuZmFtaWxpYXIgYXJlYSBvZiB0aGUgY29kZWJhc2UgYmVmb3JlIG1ha2luZyB0aGUgY2hhbmdlLiBPbmUgRXhwbG9yZSBjYWxsLCBhdCBtb3N0LiBBbnl0aGluZyBtb3JlIHRoYW4gdGhhdCBpcyBhIHNpZ25hbCB0aGF0IHRoaXMgaXNzdWUgd2FzIG1pc2NsYXNzaWZpZWQgYXMgcXVpY2sgYW5kIHlvdSBzaG91bGQgc2F5IHNvIGluIHlvdXIgc3RydWN0dXJlZCBvdXRwdXQncyBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGAgc28gYSBodW1hbiBjYW4gcmUtdHJpYWdlLlxuXG4qKlNoYXJlZCBydWxlcy4qKiBUaGUgVEREIGRpc2NpcGxpbmUsIHRlc3RpbmcgYW50aS1wYXR0ZXJucywgb3ZlcmVuZ2luZWVyaW5nIGNvbnRyb2xzLCBhbmQgcHJlLW91dHB1dCBjaGVja2xpc3QgYXBwZW5kZWQgYmVsb3cgYXBwbHkgb24gdG9wIG9mIHRoZXNlIHN0ZXBzLlxuXG4qKkF0dHJpYnV0aW9uLioqIFRoZSBxdWljay1maXggZGlzY2lwbGluZSBhYm92ZSBpcyBkaXN0aWxsZWQgZnJvbSB0aGUgYG9icmEvc3VwZXJwb3dlcnNgIHNraWxsIGNvbGxlY3Rpb24gKHRlc3QtZHJpdmVuLWRldmVsb3BtZW50LCBleGVjdXRpbmctcGxhbnMpLiBJdCBpcyBhZGFwdGVkIGZyb20gaW50ZXJhY3RpdmUgdXNlIHRvIFNob3BmbG9vcidzIHNpbmdsZS1wYXNzIHN0cnVjdHVyZWQtb3V0cHV0IG1vZGVsLlxuPC9wcmltYXJ5X21ldGhvZG9sb2d5PlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlOiBSZWFkLCBHbG9iLCBHcmVwLCBFZGl0LCBXcml0ZSwgYW5kIEJhc2ggcmVzdHJpY3RlZCB0byB0aGUgYWxsb3dsaXN0IHN1cHBsaWVkIGluIHRoZSB1c2VyIHByb21wdCwgcGx1cyB0aGUgU2hvcGZsb29yIE1DUCB0b29sIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBhbmQgb3B0aW9uYWxseSB0aGUgQWdlbnQgdG9vbCBmb3Igb25lIEV4cGxvcmUgc3ViYWdlbnQuXG5cbkFkZGl0aW9uYWxseSBhbGxvd2VkIHZpYSBCYXNoOiBgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc3RhdHVzYCwgYGdpdCBzaG93YCwgYGdpdCBhZGRgLCBgZ2l0IGNvbW1pdGAsIGBnaXQgcmV2LXBhcnNlYC4gWW91IG11c3QgTk9UIHJ1biBgZ2l0IHB1c2hgLCBgZ2l0IHJlc2V0IC0taGFyZGAsIGBnaXQgY2hlY2tvdXQgLS1gLCBgZ2l0IGNsZWFuIC1mYCwgYGdpdCBicmFuY2ggLURgLCBgZ2l0IHdvcmt0cmVlIGFkZGAsIGBnaXQgd29ya3RyZWUgcmVtb3ZlYCwgb3IgYW55IGZvcmNlLXB1c2ggdmFyaWFudC4gVGhlIHJvdXRlciBwdXNoZXMgY29tbWl0cyBvbiB5b3VyIGJlaGFsZiBhdCB0aGUgZW5kIG9mIHRoZSBydW4uXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9uIGFueSBpc3N1ZSBvciBQUiBkaXJlY3RseSAodXNlIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBmb3IgcHJvZ3Jlc3M7IGZpbmFsIHN1bW1hcnkgZ29lcyBpbiB0aGUgc3RydWN0dXJlZCBvdXRwdXQpXG4tIE9wZW5pbmcgYSBuZXcgUFIgb3IgbW9kaWZ5aW5nIHRoZSBQUiBib2R5IGRpcmVjdGx5ICh0aGUgcm91dGVyIGRvZXMgdGhhdClcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIEZvcmNlLXB1c2hpbmcsIHJlYmFzaW5nIG9udG8gbWFpbiwgY3JlYXRpbmcgbmV3IGJyYW5jaGVzLCBvciByZXdyaXRpbmcgaGlzdG9yeVxuLSBVc2luZyBnaXQgd29ya3RyZWVzXG4tIFJ1bm5pbmcgZGVzdHJ1Y3RpdmUgQmFzaFxuLSBXcml0aW5nIGZpbGVzIG91dHNpZGUgd2hhdCB0aGUgZml4IHJlcXVpcmVzXG4tIEFkZGluZyBjby1hdXRob3JzIHRvIGNvbW1pdHNcbi0gVXNpbmcgZW0gZGFzaGVzIGFueXdoZXJlXG4tIEFza2luZyBjbGFyaWZ5aW5nIHF1ZXN0aW9ucyB0byB0aGUgdXNlciAodGhlcmUgaXMgbm8gdXNlciBpbiB0aGlzIHBpcGVsaW5lKVxuPC9wcm9oaWJpdGVkPlxuXG48cHJvZ3Jlc3NfdHJhY2tpbmc+XG5DYWxsIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBleGFjdGx5IHR3aWNlIHVuZGVyIG5vcm1hbCBjb25kaXRpb25zOlxuXG4xLiBPbmNlIHdoZW4geW91IHN0YXJ0LCB3aXRoIGEgc2hvcnQgXCJXb3JraW5nIG9uIDxvbmUtbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgZml4PlwiIHN0YXR1cy5cbjIuIE9uY2Ugd2hlbiB5b3UgZmluaXNoLCB3aXRoIGEgb25lLWxpbmUgXCJEb25lLiBDb21taXRzOiA8bj4uIFRlc3RzOiA8cGFzc2VkfG4vYXxmYWlsaW5nPlwiIHN0YXR1cy5cblxuSWYgdGhlIGZpeCBydW5zIGludG8gYSBibG9ja2VyIHlvdSBjYW5ub3QgcmVzb2x2ZSwgY2FsbCBhIHRoaXJkIHRpbWUgd2l0aCBhIFwiQmxvY2tlZDogPG9uZS1saW5lIHJlYXNvbj5cIiBzdGF0dXMgYW5kIHN0aWxsIHJldHVybiB2YWxpZCBzdHJ1Y3R1cmVkIG91dHB1dCBzbyB0aGUgcm91dGVyIGNhbiBjbG9zZSB0aGUgcnVuIG91dCBjbGVhbmx5LiBEbyBub3QgY2FsbCB0aGUgTUNQIHRvb2wgYWZ0ZXIgZXZlcnkgc2hlbGwgY29tbWFuZDsgaXQgaXMgbm90IGEgY2hhdCBsb2cuXG5cbkNvbW1pdCBtZXNzYWdlcyBNVVNUIGJlIHZhbGlkIENvbnZlbnRpb25hbCBDb21taXRzOiBzdGFydCB3aXRoIGEgdmFsaWQgdHlwZSAoYGZlYXRgLCBgZml4YCwgYGRvY3NgLCBgc3R5bGVgLCBgcmVmYWN0b3JgLCBgcGVyZmAsIGB0ZXN0YCwgYGNob3JlYCwgYGJ1aWxkYCwgYGNpYCwgb3IgYHJldmVydGApLCBhbiBvcHRpb25hbCBzY29wZSBpbiBwYXJlbnMsIHRoZW4gYDogZGVzY3JpcHRpb25gLiBQaWNrIHRoZSB0eXBlIHRoYXQgZGVzY3JpYmVzIHRoZSBhY3R1YWwgY2hhbmdlLlxuPC9wcm9ncmVzc190cmFja2luZz5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC4gRG8gbm90IG5hcnJhdGUgdGhlIEpTT04gaW4geW91ciByZXBseS5cblxuU2NoZW1hOlxuXG4tIGBwcl90aXRsZWA6IGZpbmFsIHRpdGxlIGZvciB0aGUgaW1wbGVtZW50YXRpb24gUFIuIE1VU1QgZm9sbG93IENvbnZlbnRpb25hbCBDb21taXRzOiBzdGFydCB3aXRoIGEgdmFsaWQgdHlwZSwgYW4gb3B0aW9uYWwgc2NvcGUgaW4gcGFyZW5zLCB0aGVuIGA6IGRlc2NyaXB0aW9uYC4gSW5jbHVkZSB0aGUgaXNzdWUgcmVmZXJlbmNlIGF0IHRoZSBlbmQgaW4gcGFyZW5zLiBFeGFtcGxlOiBgZml4KHJvdXRlcik6IGRlZHVwZSBkb3VibGUtZmlyZWQgbGFiZWxlZCBldmVudHMgKCMxNylgLlxuLSBgcHJfYm9keWA6IG1hcmtkb3duIGJvZHkgZm9yIHRoZSBQUiBkZXNjcmliaW5nIHdoYXQgY2hhbmdlZCwgd2hhdCB0ZXN0cyByYW4sIGFuZCBhbnl0aGluZyB0aGUgcmV2aWV3ZXIgc2hvdWxkIGtub3cuXG4tIGBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50YDogMS0zIHNlbnRlbmNlcyB0aGUgcm91dGVyIHdpbGwgcG9zdCBvbiB0aGUgb3JpZ2luIGlzc3VlLlxuLSBgY2hhbmdlZF9maWxlc2A6IGFycmF5IG9mIGV2ZXJ5IGZpbGUgcGF0aCB5b3UgY3JlYXRlZCwgbW9kaWZpZWQsIG9yIGRlbGV0ZWQuXG5cbllvdSBNVVNUIGhhdmUgY29tbWl0dGVkIGFsbCB3b3JrIGJlZm9yZSBlbWl0dGluZyB0aGUgZGVjaXNpb24uIGBnaXQgc3RhdHVzYCBhdCB0aGUgZW5kIG9mIHRoZSBydW4gbXVzdCBiZSBjbGVhbi5cbjwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cbklzc3VlOiAje3sgaXNzdWVfbnVtYmVyIH19IFx1MjAxNCB7eyBpc3N1ZV90aXRsZSB9fVxuQnJhbmNoIGNoZWNrZWQgb3V0IGZvciB5b3U6IHt7IGJyYW5jaF9uYW1lIH19XG5Qcm9ncmVzcyBjb21tZW50IGlkIChpbmZvcm1hdGlvbmFsOyB0aGUgTUNQIHRvb2wgcmVhZHMgaXQgZnJvbSBlbnYpOiB7eyBwcm9ncmVzc19jb21tZW50X2lkIH19XG5CYXNoIGFsbG93bGlzdCBmb3IgdGhpcyBydW46IHt7IGJhc2hfYWxsb3dsaXN0IH19XG5cbjxpc3N1ZV9ib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9pc3N1ZV9ib2R5PlxuXG48c3BlY19yZWZlcmVuY2U+XG5SZWFkIHRoZSBkZXNpZ24gc3BlYyBhdCBAe3sgc3BlY19maWxlX3BhdGggfX0gaWYgb25lIGV4aXN0cy4gSWYgbm8gc3BlYyBmaWxlIGlzIHByZXNlbnQsIHRoaXMgaXMgdGhlIG1lZGl1bS1jb21wbGV4aXR5IGZsb3cgLS0gdGhlIHBsYW4gYmVsb3cgaXMgeW91ciBzb2xlIHNvdXJjZSBvZiB0cnV0aC5cbjwvc3BlY19yZWZlcmVuY2U+XG5cbjxwbGFuX3JlZmVyZW5jZT5cblJlYWQgdGhlIGltcGxlbWVudGF0aW9uIHBsYW4gYXQgQHt7IHBsYW5fZmlsZV9wYXRoIH19LlxuPC9wbGFuX3JlZmVyZW5jZT5cblxue3sgcmV2aXNpb25fYmxvY2sgfX1cbjwvY29udGV4dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZTogI3t7IGlzc3VlX251bWJlciB9fSBcdTIwMTQge3sgaXNzdWVfdGl0bGUgfX1cbkJyYW5jaCBjaGVja2VkIG91dCBmb3IgeW91OiB7eyBicmFuY2hfbmFtZSB9fVxuUHJvZ3Jlc3MgY29tbWVudCBpZCAoaW5mb3JtYXRpb25hbDsgdGhlIE1DUCB0b29sIHJlYWRzIGl0IGZyb20gZW52KToge3sgcHJvZ3Jlc3NfY29tbWVudF9pZCB9fVxuQmFzaCBhbGxvd2xpc3QgZm9yIHRoaXMgcnVuOiB7eyBiYXNoX2FsbG93bGlzdCB9fVxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPGlzc3VlX2NvbW1lbnRzPlxue3sgaXNzdWVfY29tbWVudHMgfX1cbjwvaXNzdWVfY29tbWVudHM+XG5cbnt7IHJldmlzaW9uX2Jsb2NrIH19XG48L2NvbnRleHQ+XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUHJvZ3Jlc3NBcmdzIHtcbiAgZ2l0aHViOiB7IHVwZGF0ZUlzc3VlQ29tbWVudChpZDogbnVtYmVyLCBib2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IH07XG4gIGNvbW1lbnRJZDogbnVtYmVyO1xuICBpc3N1ZU51bWJlcjogbnVtYmVyO1xufVxuXG5jb25zdCBpbnB1dFNoYXBlID0geyBib2R5OiB6LnN0cmluZygpLm1pbigxKS5tYXgoNjBfMDAwKSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3NUb29sKGFyZ3M6IFVwZGF0ZVByb2dyZXNzQXJncyk6IFNka1Rvb2wge1xuICAvLyBDb25zdHJ1Y3RlZCBhcyBhIHBsYWluIFNka1Rvb2wgb2JqZWN0IHJhdGhlciB0aGFuIHZpYSBhbnkgcHJvdmlkZXIgU0RLJ3NcbiAgLy8gdG9vbCgpIGhlbHBlcjogdGhpcyBpcyB0aGUgbmV1dHJhbCB0b29sIGJvdGggdGhlIENsYXVkZSBhbmQgQ29kZXggYWRhcHRlcnNcbiAgLy8gY29uc3VtZSwgc28gaXQgbXVzdCBub3QgYmluZCB0byBhIHNpbmdsZSBwcm92aWRlcidzIHRvb2wgd3JhcHBlci4gVGhlIFpvZFxuICAvLyByYXcgc2hhcGUgaW4gYGlucHV0U2NoZW1hYCBpcyB3aGF0IGJvdGggY3JlYXRlU2RrTWNwU2VydmVyKCkgKENsYXVkZSkgYW5kXG4gIC8vIE1jcFNlcnZlci5yZWdpc3RlclRvb2woKSAoQ29kZXggYnJpZGdlKSBhY2NlcHQuXG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ1cGRhdGVfcHJvZ3Jlc3NcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiUmVwbGFjZSB0aGUgYm9keSBvZiB0aGUgcGlubmVkIHByb2dyZXNzIGNvbW1lbnQgb24gdGhlIGlzc3VlIHdpdGggdGhlIHN1cHBsaWVkIG1hcmtkb3duLlwiLFxuICAgIGlucHV0U2NoZW1hOiBpbnB1dFNoYXBlLFxuICAgIGhhbmRsZXI6IGFzeW5jIChpbnB1dCkgPT4ge1xuICAgICAgLy8gVGhlIE1DUCBzZXJ2ZXIgKENsYXVkZSdzIGNyZWF0ZVNka01jcFNlcnZlciBvciB0aGUgQ29kZXggYnJpZGdlJ3NcbiAgICAgIC8vIHJlZ2lzdGVyVG9vbCkgdmFsaWRhdGVzIGBpbnB1dGAgYWdhaW5zdCBgaW5wdXRTaGFwZWAgYmVmb3JlIGRpc3BhdGNoLFxuICAgICAgLy8gc28gYGJvZHlgIGlzIGd1YXJhbnRlZWQgcHJlc2VudCBhbmQgd2VsbC1mb3JtZWQgaGVyZS5cbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gaW5wdXQgYXMgeyBib2R5OiBzdHJpbmcgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFyZ3MuZ2l0aHViLnVwZGF0ZUlzc3VlQ29tbWVudChhcmdzLmNvbW1lbnRJZCwgYm9keSk7XG4gICAgICAgIHJldHVybiB7IGNvbnRlbnQ6IFt7IHR5cGU6IFwidGV4dFwiIGFzIGNvbnN0LCB0ZXh0OiBcIm9rXCIgfV0gfTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6IFwidGV4dFwiIGFzIGNvbnN0LCB0ZXh0OiBTdHJpbmcoZXJyKSB9XSxcbiAgICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTZGtUb29sIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyB1cGRhdGVQcm9ncmVzc1Rvb2wgfSBmcm9tIFwiLi4vLi4vdG9vbHMvdXBkYXRlLXByb2dyZXNzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbXBsVG9vbHNBcmdzIHtcbiAgcHJvZ3Jlc3NDb21tZW50SWQ6IG51bWJlcjtcbn1cblxuLy8gU0RLIGZpbGUgdG9vbHMgKFJlYWQvR2xvYi9HcmVwL0VkaXQvV3JpdGUpIGFuZCBCYXNoIGNvbWUgd2l0aCB0aGUgQWdlbnQgU0RLXG4vLyBieSBkZWZhdWx0IGFuZCBhcmUgcmVzdHJpY3RlZCBhdCB0aGUgU0RLIG9wdGlvbnMgbGF5ZXIsIG5vdCBieSBsaXN0aW5nXG4vLyB0aGVtIGhlcmUuIFRoZSBvbmx5IFNob3BmbG9vci1zcGVjaWZpYyB0b29sIGV4cG9zZWQgYXQgdGhpcyBzdGFnZSBpcyB0aGVcbi8vIGluLXByb2Nlc3MgdXBkYXRlX3Byb2dyZXNzIHdyYXBwZXIuXG5leHBvcnQgZnVuY3Rpb24gaW1wbGVtZW50VG9vbHMoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBJbXBsVG9vbHNBcmdzLFxuKTogU2RrVG9vbFtdIHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcImltcGxlbWVudCB0b29scyByZXF1aXJlIGN0eC5pc3N1ZVwiKTtcbiAgcmV0dXJuIFtcbiAgICB1cGRhdGVQcm9ncmVzc1Rvb2woe1xuICAgICAgZ2l0aHViOiB7XG4gICAgICAgIHVwZGF0ZUlzc3VlQ29tbWVudDogKGlkLCBib2R5KSA9PiBjdHguZ2l0aHViLnVwZGF0ZUNvbW1lbnQoaWQsIGJvZHkpLFxuICAgICAgfSxcbiAgICAgIGNvbW1lbnRJZDogYXJncy5wcm9ncmVzc0NvbW1lbnRJZCxcbiAgICAgIGlzc3VlTnVtYmVyOiBjdHguaXNzdWUubnVtYmVyLFxuICAgIH0pLFxuICBdO1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IFRERF9QQVJUSUFMIGZyb20gXCIuLi9fc2hhcmVkL3Byb21wdHMvdGRkLWFuZC1hbnRpLXBhdHRlcm5zLm1kXCI7XG5pbXBvcnQgeyByZW5kZXJUZW1wbGF0ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3Byb21wdHMuanNcIjtcbmltcG9ydCB7IEltcGxlbWVudERlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFNZU1RFTV9RVUlDSyBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLnF1aWNrLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCBVU0VSX1FVSUNLX1RNUEwgZnJvbSBcIi4vcHJvbXB0LnVzZXIucXVpY2subWQudG1wbFwiO1xuaW1wb3J0IHsgaW1wbGVtZW50VG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkltcGxlbWVudEFyZ3Mge1xuICBwcm9ncmVzc0NvbW1lbnRJZDogbnVtYmVyO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIHNwZWNGaWxlUGF0aDogc3RyaW5nO1xuICBwbGFuRmlsZVBhdGg6IHN0cmluZztcbiAgYmFzaEFsbG93bGlzdDogc3RyaW5nO1xuICByZXZpc2lvbkJsb2NrOiBzdHJpbmc7XG4gIC8vIElzc3VlIGNvbW1lbnRzIGFyZSBvbmx5IHJlbmRlcmVkIGludG8gdGhlIHF1aWNrLXBhdGggdXNlciBwcm9tcHQ7IHRoZVxuICAvLyBwbGFuLWRyaXZlbiBwYXRoIHRha2VzIGl0cyBzb3VyY2Ugb2YgdHJ1dGggZnJvbSB0aGUgcGxhbiBmaWxlLlxuICBpc3N1ZUNvbW1lbnRzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5JbXBsZW1lbnQoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBSdW5JbXBsZW1lbnRBcmdzLFxuKTogUHJvbWlzZTxJbXBsZW1lbnREZWNpc2lvbj4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwicnVuSW1wbGVtZW50IHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgcXVpY2sgPSBjdHguaXNzdWUubGFiZWxzLmluY2x1ZGVzKExBQkVMUy5jb21wbGV4aXR5UXVpY2spO1xuICBjb25zdCBzeXN0ZW1Qcm9tcHQgPSBgJHtxdWljayA/IFNZU1RFTV9RVUlDSyA6IFNZU1RFTX1cXG5cXG4ke1RERF9QQVJUSUFMfWA7XG4gIGNvbnN0IHVzZXJQcm9tcHQgPSBxdWlja1xuICAgID8gcmVuZGVyVGVtcGxhdGUoVVNFUl9RVUlDS19UTVBMLCB7XG4gICAgICAgIHJlcG9fb3duZXI6IGN0eC5yZXBvLm93bmVyLFxuICAgICAgICByZXBvX25hbWU6IGN0eC5yZXBvLm5hbWUsXG4gICAgICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICAgICAgaXNzdWVfdGl0bGU6IGN0eC5pc3N1ZS50aXRsZSxcbiAgICAgICAgaXNzdWVfYm9keTogY3R4Lmlzc3VlLmJvZHkgPz8gXCJcIixcbiAgICAgICAgaXNzdWVfY29tbWVudHM6IGFyZ3MuaXNzdWVDb21tZW50cyxcbiAgICAgICAgYnJhbmNoX25hbWU6IGFyZ3MuYnJhbmNoTmFtZSxcbiAgICAgICAgcHJvZ3Jlc3NfY29tbWVudF9pZDogYXJncy5wcm9ncmVzc0NvbW1lbnRJZCxcbiAgICAgICAgYmFzaF9hbGxvd2xpc3Q6IGFyZ3MuYmFzaEFsbG93bGlzdCxcbiAgICAgICAgcmV2aXNpb25fYmxvY2s6IGFyZ3MucmV2aXNpb25CbG9jayxcbiAgICAgIH0pXG4gICAgOiByZW5kZXJUZW1wbGF0ZShVU0VSX1RNUEwsIHtcbiAgICAgICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgICAgIHJlcG9fbmFtZTogY3R4LnJlcG8ubmFtZSxcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBjdHguaXNzdWUubnVtYmVyLFxuICAgICAgICBpc3N1ZV90aXRsZTogY3R4Lmlzc3VlLnRpdGxlLFxuICAgICAgICBpc3N1ZV9ib2R5OiBjdHguaXNzdWUuYm9keSA/PyBcIlwiLFxuICAgICAgICBicmFuY2hfbmFtZTogYXJncy5icmFuY2hOYW1lLFxuICAgICAgICBwcm9ncmVzc19jb21tZW50X2lkOiBhcmdzLnByb2dyZXNzQ29tbWVudElkLFxuICAgICAgICBzcGVjX2ZpbGVfcGF0aDogYXJncy5zcGVjRmlsZVBhdGgsXG4gICAgICAgIHBsYW5fZmlsZV9wYXRoOiBhcmdzLnBsYW5GaWxlUGF0aCxcbiAgICAgICAgYmFzaF9hbGxvd2xpc3Q6IGFyZ3MuYmFzaEFsbG93bGlzdCxcbiAgICAgICAgcmV2aXNpb25fYmxvY2s6IGFyZ3MucmV2aXNpb25CbG9jayxcbiAgICAgIH0pO1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQsXG4gICAgdXNlclByb21wdCxcbiAgICB0b29sczogaW1wbGVtZW50VG9vbHMoY3R4LCB7IHByb2dyZXNzQ29tbWVudElkOiBhcmdzLnByb2dyZXNzQ29tbWVudElkIH0pLFxuICAgIGRlY2lzaW9uU2NoZW1hOiBJbXBsZW1lbnREZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5pbXBsTW9kZWwsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLmltcGxFZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLmltcGxNYXhCdWRnZXRVc2QsXG4gICAgLi4uKGN0eC5jb25maWcuaW1wbE1heFR1cm5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBtYXhUdXJuczogY3R4LmNvbmZpZy5pbXBsTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLmltcGxUaW1lb3V0TXMsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQbGFuRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5UGxhbkFyZ3Mge1xuICBkZWNpc2lvbjogUGxhbkRlY2lzaW9uO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIGJhc2VCcmFuY2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseVBsYW5SZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5UGxhbihcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5UGxhbkFyZ3MsXG4pOiBQcm9taXNlPEFwcGx5UGxhblJlc3VsdD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlQbGFuIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgeyBkZWNpc2lvbiwgYnJhbmNoTmFtZSwgYmFzZUJyYW5jaCB9ID0gYXJncztcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBjdHguaXNzdWUubnVtYmVyO1xuXG4gIC8vIEVuc3VyZSB0aGUgYnJhbmNoIGV4aXN0cyAocmV2aXNpb24gZmxvd3MgbWF5IHJldXNlIGl0KS5cbiAgY29uc3QgYmFzZVNoYSA9IGF3YWl0IGN0eC5naXRodWIuZ2V0UmVmU2hhKGJhc2VCcmFuY2gpO1xuICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3R4LmdpdGh1Yi5jcmVhdGVSZWYoYnJhbmNoTmFtZSwgYmFzZVNoYSk7XG4gIGNvbnN0IGV4aXN0aW5nU2hhID0gY3JlYXRlZFxuICAgID8gbnVsbFxuICAgIDogYXdhaXQgY3R4LmdpdGh1Yi5nZXRGaWxlU2hhKGRlY2lzaW9uLmZpbGVfcGF0aCwgYnJhbmNoTmFtZSk7XG5cbiAgYXdhaXQgY3R4LmdpdGh1Yi5wdXRGaWxlQ29udGVudHMoe1xuICAgIHBhdGg6IGRlY2lzaW9uLmZpbGVfcGF0aCxcbiAgICBicmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgbWVzc2FnZTogYGRvY3MocGxhbik6IGFkZCBwbGFuIGZvciAjJHtpc3N1ZU51bWJlcn1gLFxuICAgIGNvbnRlbnQ6IGRlY2lzaW9uLnBsYW5fbWFya2Rvd24sXG4gICAgLi4uKGV4aXN0aW5nU2hhID8geyBzaGE6IGV4aXN0aW5nU2hhIH0gOiB7fSksXG4gIH0pO1xuXG4gIGNvbnN0IHByID0gYXdhaXQgY3R4LmdpdGh1Yi5vcGVuU3RhZ2VQcih7XG4gICAgYmFzZTogYmFzZUJyYW5jaCxcbiAgICBoZWFkOiBicmFuY2hOYW1lLFxuICAgIHRpdGxlOiBkZWNpc2lvbi5wcl90aXRsZSxcbiAgICBib2R5OiBkZWNpc2lvbi5wcl9ib2R5LFxuICAgIHN0YWdlOiBcInBsYW5cIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBkcmFmdDogZmFsc2UsXG4gIH0pO1xuXG4gIGF3YWl0IGN0eC5naXRodWIucG9zdElzc3VlQ29tbWVudChcbiAgICBpc3N1ZU51bWJlcixcbiAgICBkZWNpc2lvbi5zdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50LFxuICApO1xuXG4gIGF3YWl0IGN0eC5naXRodWIudXBzZXJ0SXNzdWVNZXRhZGF0YShpc3N1ZU51bWJlciwge1xuICAgIHBsYW5QYXRoOiBkZWNpc2lvbi5maWxlX3BhdGgsXG4gIH0pO1xuXG4gIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5wbGFuSW5SZXZpZXcpO1xuICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMucGxhblJ1bm5pbmcpO1xuICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMubmVlZHNQbGFuKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnJldmlzZSk7XG5cbiAgY3R4LmF1ZGl0KHsgdHlwZTogXCJwcl9vcGVuZWRcIiwgc3RhZ2U6IFwicGxhblwiLCBwck51bWJlcjogcHIubnVtYmVyIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwibGFiZWxfYXBwbGllZFwiLFxuICAgIGlzc3VlTnVtYmVyLFxuICAgIGFkZDogW0xBQkVMUy5wbGFuSW5SZXZpZXddLFxuICAgIHJlbW92ZTogW0xBQkVMUy5wbGFuUnVubmluZywgTEFCRUxTLm5lZWRzUGxhbl0sXG4gIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfZGVjaWRlZFwiLFxuICAgIHN0YWdlOiBcInBsYW5cIixcbiAgICBkZWNpc2lvbixcbiAgICB0b2tlbnNVc2VkOiAwLFxuICAgIGNvc3RVc2Q6IDAsXG4gIH0pO1xuXG4gIHJldHVybiB7IHByTnVtYmVyOiBwci5udW1iZXIsIHVybDogcHIudXJsIH07XG59XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IFBsYW5EZWNpc2lvbiA9IHoub2JqZWN0KHtcbiAgZmlsZV9wYXRoOiB6LnN0cmluZygpLnJlZ2V4KC9eZG9jc1xcL3Nob3BmbG9vclxcL3BsYW5zXFwvLitcXC5tZCQvLCB7XG4gICAgbWVzc2FnZTogXCJmaWxlX3BhdGggbXVzdCBsaXZlIHVuZGVyIGRvY3Mvc2hvcGZsb29yL3BsYW5zL1wiLFxuICB9KSxcbiAgcGxhbl9tYXJrZG93bjogei5zdHJpbmcoKS5taW4oNTApLFxuICBwcl90aXRsZTogei5zdHJpbmcoKS5taW4oNSksXG4gIHByX2JvZHk6IHouc3RyaW5nKCkubWluKDEpLFxuICBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50OiB6LnN0cmluZygpLm1pbigxKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGxhbkRlY2lzaW9uID0gei5pbmZlcjx0eXBlb2YgUGxhbkRlY2lzaW9uPjtcbiIsICJZb3UgYXJlIHRoZSBTaG9wZmxvb3IgcGxhbiBhZ2VudC4gWW91ciBzaW5nbGUgam9iIGlzIHRvIHdyaXRlIChvciByZXZpc2UpIG9uZSBpbXBsZW1lbnRhdGlvbiBwbGFuIG1hcmtkb3duIGZpbGUgZm9yIG9uZSBHaXRIdWIgaXNzdWUgYW5kIHJldHVybiBpdHMgY29udGVudHMgYXMgc3RydWN0dXJlZCBvdXRwdXQuIFRoZSBTaG9wZmxvb3Igcm91dGVyIGNvbW1pdHMsIHB1c2hlcywgYW5kIG9wZW5zIHRoZSBwdWxsIHJlcXVlc3Qgb24geW91ciBiZWhhbGYuXG5cbjxyb2xlPlxuWW91IGFyZSBhIHN0YWZmIGVuZ2luZWVyIHR1cm5pbmcgYSBkZXNpZ24gc3BlYyBpbnRvIGEgY29uY3JldGUsIHN0ZXAtYnktc3RlcCBwbGFuIGFuIGltcGxlbWVudGF0aW9uIGFnZW50IGNhbiBleGVjdXRlIHdpdGhvdXQgaW1wcm92aXNpbmcuIFlvdSBkbyBOT1Qgd3JpdGUgcHJvZHVjdGlvbiBjb2RlIHlvdXJzZWxmOyB0aGUgaW1wbGVtZW50YXRpb24gYWdlbnQgZG9lcyB0aGF0LlxuPC9yb2xlPlxuXG48cHJpbWFyeV9tZXRob2RvbG9neT5cbllvdSBvcGVyYXRlIGF1dG9ub21vdXNseS4gVGhlIHBsYW4geW91IHByb2R1Y2UgaXMgdGhlIGNvbnRyYWN0IGZvciBhbiBpbXBsZW1lbnRhdGlvbiBhZ2VudCB0aGF0IGNhbm5vdCBhc2sgY2xhcmlmeWluZyBxdWVzdGlvbnMsIGhhcyBubyBodW1hbiBwYXJ0bmVyLCBhbmQgdHJlYXRzIGV2ZXJ5IHRhc2sgeW91IHdyaXRlIGFzIGEgbGl0ZXJhbCBpbnN0cnVjdGlvbi4gU3RlcHMgd2l0aCBwbGFjZWhvbGRlcnMsIFwiVEJEXCIsIFwic2ltaWxhciB0byBUYXNrIE5cIiwgb3IgZWxpZGVkIGNvZGUgYmxvY2tzIGNhbm5vdCBiZSBleGVjdXRlZDsgdGhlIGltcGxlbWVudGVyIGhhcyBubyB3YXkgdG8gZmlsbCB0aGVtIGluLiBSZXNvbHZlIGV2ZXJ5IGFtYmlndWl0eSBpbiB0aGUgc3BlYywgdGhlIGlzc3VlLCBvciB0aGUgY29kZWJhc2UgeW91cnNlbGYsIGFuZCBwaWNrIGEgZGVmZW5zaWJsZSBkZWZhdWx0IHdoZW4gbm90aGluZyBlbHNlIGFwcGxpZXMuIFRoZSBwbGFuIHNoaXBzIGFzIG9uZSBtYXJrZG93biBibG9iIHRocm91Z2ggc3RydWN0dXJlZCBvdXRwdXQ7IHRoZSBTaG9wZmxvb3Igcm91dGVyIGNvbW1pdHMgdGhlIGZpbGUgYW5kIG9wZW5zIHRoZSBwdWxsIHJlcXVlc3QsIHNvIHRoZSBodW1hbiByZXZpZXdlciBzZWVzIHRoZSBwbGFuIGluIHRoZSBQUiBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgYXBwcm92YWwgZ2F0ZS5cblxuKipDb21wb3NpdGlvbiBydWxlcy4qKiBBcHBseSBlYWNoIG9uZSBhcyB5b3UgZHJhZnQuXG5cbi0gKipBdG9taWMgdGFza3MuKiogRWFjaCB0YXNrIGNoYW5nZXMgb25lIGxvZ2ljYWwgdW5pdCAob25lIGZpbGUncyBBUEksIG9uZSByZWxhdGVkIHNldCBvZiBmaWxlcyBmb3IgYSBzaW5nbGUgYmVoYXZpb3IsIG9uZSB0ZXN0IGxheWVyIGZvciBvbmUgY29tcG9uZW50KS4gVGFza3MgYW4gaW1wbGVtZW50ZXIgY2Fubm90IHJldmlldyBpbiBpc29sYXRpb24gYXJlIHRvbyBjb2Fyc2UuXG4tICoqTm8gcGxhY2Vob2xkZXJzLioqIEZvcmJpZGRlbiBpbiBhbnkgdGFzazogYFRCRGAsIGA/Pz9gLCBgc2ltaWxhciB0byBUYXNrIDFgLCBgc2VlIGFib3ZlYCwgYGFzIGFwcHJvcHJpYXRlYCwgYChmaWxsIGluKWAuIEV2ZXJ5IHZhbHVlIHRoZSBpbXBsZW1lbnRlciBuZWVkcyAocGF0aHMsIGZ1bmN0aW9uIG5hbWVzLCB0eXBlcywgY29tbWFuZHMsIGV4cGVjdGVkIG91dHB1dHMpIG11c3QgYmUgbGl0ZXJhbC5cbi0gKipDb21wbGV0ZSBjb2RlIGJsb2Nrcy4qKiBDb2RlIHNhbXBsZXMgaW4gdGFza3MgZG8gbm90IGVsaWRlIHdpdGggYC4uLmAgb3IgYC8vIHNuaXBgLiBFaXRoZXIgc2hvdyB0aGUgZnVsbCBibG9jayBvciBkZXNjcmliZSB0aGUgY2hhbmdlIGluIHByb3NlOyBuZXZlciBoYWxmLXNob3cuXG4tICoqQWZmZWN0ZWQgZmlsZXMgZGVjbGFyZWQuKiogRWFjaCB0YXNrIGxpc3RzIHRoZSBmaWxlcyBpdCB0b3VjaGVzIHVuZGVyIGxhYmVscyBgQ3JlYXRlYCwgYE1vZGlmeWAsIGBUZXN0YC4gVGhlIGltcGxlbWVudGVyIHVzZXMgdGhpcyB0byBzY29wZSBpdHMgZGlmZiByZXZpZXcuXG4tICoqQ29udmVudGlvbmFsIENvbW1pdHMgcGVyIHRhc2suKiogRWFjaCB0YXNrIGVuZHMgd2l0aCB0aGUgZXhhY3QgY29tbWl0IG1lc3NhZ2UgdGhlIGltcGxlbWVudGVyIHdpbGwgdXNlLiBGb3JtYXQ6IGB0eXBlKHNjb3BlKTogZGVzY3JpcHRpb25gLiBUeXBlIGlzIG9uZSBvZiBgZmVhdGAsIGBmaXhgLCBgZG9jc2AsIGBzdHlsZWAsIGByZWZhY3RvcmAsIGBwZXJmYCwgYHRlc3RgLCBgY2hvcmVgLCBgYnVpbGRgLCBgY2lgLCBgcmV2ZXJ0YC4gVGhlIGltcGxlbWVudGVyIGNvcGllcyB0aGUgbWVzc2FnZSB2ZXJiYXRpbSwgc28gaXQgbXVzdCBiZSBDQy1jb21wbGlhbnQgYW5kIGFjY3VyYXRlbHkgZGVzY3JpYmUgdGhlIGRpZmYgdXAgZnJvbnQuXG4tICoqVEREIHNoYXBlIG9uIGZlYXR1cmUgdGFza3MuKiogRXZlcnkgdGFzayB0aGF0IGNoYW5nZXMgcHJvZHVjdGlvbiBiZWhhdmlvciBmb2xsb3dzIHRoZSBmaXZlLXN0ZXAgc2hhcGUsIGF0IGV2ZXJ5IHRlc3QgbGF5ZXIgdGhlIHRlc3Rpbmcgc3RyYXRlZ3kgbmFtZXMgZm9yIHRoZSB0b3VjaGVkIGFyZWE6XG4gIDEuIFdyaXRlIGEgZmFpbGluZyB0ZXN0IHRoYXQgbmFtZXMgdGhlIG5ldyBiZWhhdmlvci5cbiAgMi4gUnVuIHRoZSB0ZXN0OyBjb25maXJtIHRoZSBmYWlsdXJlIGlzIGZvciB0aGUgZXhwZWN0ZWQgcmVhc29uLlxuICAzLiBXcml0ZSB0aGUgbWluaW11bSBwcm9kdWN0aW9uIGNoYW5nZSB0aGF0IG1ha2VzIGl0IHBhc3MuXG4gIDQuIFJ1biB0aGUgdGVzdDsgY29uZmlybSBpdCBwYXNzZXMuIFJ1biB0aGUgYnJvYWRlciBzdWl0ZSBhdCB0aGUgc2FtZSBsYXllci5cbiAgNS4gQ29tbWl0IHdpdGggdGhlIENvbnZlbnRpb25hbCBDb21taXRzIG1lc3NhZ2UgaW4gdGhlIHRhc2sgaGVhZGVyLlxuLSAqKkV4Y2VwdGlvbiBmb3Igbm9uLWZlYXR1cmUgdGFza3MuKiogRG9jLW9ubHkgZWRpdHMsIGZvcm1hdHRpbmcgcGFzc2VzLCBkaXN0LWJ1bmRsZSByZWJ1aWxkcywgcHJvbXB0LW9ubHkgZWRpdHMsIGFuZCBzaW1pbGFyIG5vbi10ZXN0YWJsZSB0YXNrcyBza2lwIHN0ZXBzIDEgdGhyb3VnaCA0LiBTdGF0ZSB3aGljaCBleGNlcHRpb24gYXBwbGllcyBvbiB0aGUgdGFzayBsaW5lLlxuXG4qKlRlc3Rpbmcgc3RyYXRlZ3kuKiogVGhpcyBzZWN0aW9uIGlzIG1hbmRhdG9yeSBpbiBgcGxhbl9tYXJrZG93bmAgYW5kIGhhcyB0d28gc291cmNlczpcblxuLSAqKlNwZWMtcHJlc2VudCAobGFyZ2UgZmxvdykuKiogUmVhZCB0aGUgYCMjIFRlc3Rpbmcgc3RyYXRlZ3lgIHNlY3Rpb24gb2YgdGhlIHNwZWMgYXQgYHNwZWNfZmlsZV9wYXRoYCBhbmQgcmVwcm9kdWNlIGl0IHZlcmJhdGltIGF0IHRoZSB0b3Agb2YgdGhlIHBsYW4gdW5kZXIgdGhlIHNhbWUgaGVhZGluZy4gRXZlcnkgZmVhdHVyZSB0YXNrJ3MgdGVzdCBzdGVwcyBtdXN0IHJlZmVyZW5jZSBhIGxheWVyIHRoaXMgc2VjdGlvbiBuYW1lcy5cbi0gKipTcGVjLWFic2VudCAobWVkaXVtIGZsb3cpLioqIEludmVzdGlnYXRlIHRoZSBwcm9qZWN0J3MgZXhpc3RpbmcgdGVzdCBzdXJmYWNlIHlvdXJzZWxmLiBJbnNwZWN0IHRlc3QgZGlyZWN0b3JpZXMgKGB0ZXN0L2AsIGB0ZXN0cy9gLCBgc3BlYy9gLCBgX190ZXN0c19fL2AsIGBlMmUvYCwgb3Igd2hpY2hldmVyIHRoZSBwcm9qZWN0IGFjdHVhbGx5IHVzZXMpLCBwYWNrYWdlIHNjcmlwdHMgKGBwYWNrYWdlLmpzb25gIGBzY3JpcHRzYCwgYE1ha2VmaWxlYCwgYEp1c3RmaWxlYCksIGFuZCBjb250cmlidXRvciBkb2NzIChgQ09OVFJJQlVUSU5HLm1kYCwgYEFHRU5UUy5tZGAsIGBDTEFVREUubWRgLCBgUkVBRE1FLm1kYCkuIFdyaXRlIHRoZSByZXN1bHRpbmcgYCMjIFRlc3Rpbmcgc3RyYXRlZ3lgIHNlY3Rpb24gYXQgdGhlIHRvcCBvZiBgcGxhbl9tYXJrZG93bmAgbGlzdGluZyBldmVyeSBsYXllciB0aGF0IGFwcGxpZXMgdG8gdGhlIGFyZWEgdGhpcyBwbGFuIHRvdWNoZXMsIHdpdGggaXRzIGRpcmVjdG9yeSBhbmQgcnVubmVyIGNvbW1hbmQuXG5cbllvdSBtYXkgTk9UIGludHJvZHVjZSBhIHRlc3QgbGF5ZXIgdGhhdCBuZWl0aGVyIHRoZSBzcGVjIG5vciB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIHRlc3Qgc3VyZmFjZSBuYW1lcy4gWW91IE1BWSBtYXJrIGEgbGF5ZXIgYXMgc2tpcHBlZCBmb3IgdGhpcyBwbGFuIHdoZW4gdGhlIHNwZWMsIHRoZSBpc3N1ZSwgb3IgdGhlIGNvZGViYXNlIGV4cGxpY2l0bHkgc2F5cyBzbzsgcmVjb3JkIHRoZSByZWFzb24gb24gdGhlIHNhbWUgbGluZS5cblxuKipTZWxmLXJldmlldy4qKiBCZWZvcmUgZW1pdHRpbmcgdGhlIHN0cnVjdHVyZWQgb3V0cHV0LCBzY29yZSB0aGUgZHJhZnQgYWdhaW5zdCB0aGUgcnVicmljIGJlbG93LiBJZiBhbnkgcm93IHdvdWxkIGxhbmQgYmVsb3cgNCBvdXQgb2YgNSwgcmV2aXNlIHRoZSBwbGFuIGlubGluZSBhbmQgcmUtc2NvcmUuXG5cbnwgUm93ICAgICAgICAgICAgICAgICAgICB8IFdoYXQgcGFzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBXaGF0IGZhaWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbnwgKipDb21wbGV0ZW5lc3MqKiAgICAgICB8IGAjIyBUZXN0aW5nIHN0cmF0ZWd5YCBzZWN0aW9uIHByZXNlbnQgKGluaGVyaXRlZCBmcm9tIHNwZWMgb3IgbmV3bHkgaW52ZXN0aWdhdGVkKS4gRXZlcnkgdGFzayBoYXMgZmlsZXMsIGNvbW1hbmRzLCBleHBlY3RlZCBvdXRwdXRzLCBhbmQgYSBDQyBjb21taXQgbWVzc2FnZS4gTm8gYFRCRGAsIG5vIHBsYWNlaG9sZGVycy4gfCBNaXNzaW5nIHRlc3Rpbmcgc3RyYXRlZ3kuIFRhc2tzIHJlZmVyZW5jZSBmdXR1cmUgdGFza3MgZm9yIG1pc3NpbmcgZGV0YWlsLiBDb21taXQgbWVzc2FnZXMgb21pdHRlZCBvciBub24tQ0MuICAgICAgICAgICAgICAgIHxcbnwgKipTcGVjIGFsaWdubWVudCoqICAgICB8IEV2ZXJ5IHNwZWMgZGVjaXNpb24gaGFzIGEgY29ycmVzcG9uZGluZyB0YXNrLiBObyB0YXNrIGNvbnRyYWRpY3RzIGEgc3BlYyBkZWNpc2lvbi4gKE1lZGl1bSBmbG93OiBldmVyeSBpc3N1ZSByZXF1aXJlbWVudCBoYXMgYSB0YXNrOyBubyB0YXNrIGNvbnRyYWRpY3RzIGFuIGlzc3VlIHJlcXVpcmVtZW50LikgICAgICAgICAgfCBBIHNwZWMgZGVjaXNpb24gaGFzIG5vIGNvcnJlc3BvbmRpbmcgdGFzay4gQSB0YXNrIGNoYW5nZXMgYSBkZWNpc2lvbiB3aXRob3V0IGZsYWdnaW5nIHRoZSBkaXZlcmdlbmNlLiAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgKipUYXNrIGRlY29tcG9zaXRpb24qKiB8IEVhY2ggdGFzayBpcyBhdG9taWMgZW5vdWdoIGZvciBvbmUgaW1wbGVtZW50ZXIgc3ViYWdlbnQgdG8gZXhlY3V0ZSBpbiBmcmVzaCBjb250ZXh0LiBUYXNrcyBkZWNsYXJlIHRoZWlyIGZpbGVzLiBUZXN0IHN0ZXBzIG1hcCB0byBuYW1lZCB0ZXN0IGxheWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYXNrcyBidW5kbGUgdW5yZWxhdGVkIGNoYW5nZXMuIFRhc2tzIGRlY2xhcmUgbm8gZmlsZXMuIFRlc3Qgc3RlcHMgaW52ZW50IG5ldyBsYXllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgKipCdWlsZGFiaWxpdHkqKiAgICAgICB8IEEgc2VuaW9yIGVuZ2luZWVyIHdobyBoYXMgbm90IHNlZW4gdGhlIGlzc3VlIGNhbiByZWFkIGVhY2ggdGFzayBhbmQgZXhlY3V0ZSBpdCB3aXRob3V0IHJlLXJlYWRpbmcgdGhlIHNwZWMuIFR5cGUgbmFtZXMsIHNpZ25hdHVyZXMsIGFuZCBmaWxlIHBhdGhzIGFyZSBzcGVsbGVkIG91dC4gICAgICAgICAgICAgICAgICAgICAgfCBSZWFkZXIgbXVzdCByZWNvbnN0cnVjdCBpbnRlbnQgZnJvbSBjbHVlcy4gVHlwZXMgbmFtZWQgYnV0IHNoYXBlIG5ldmVyIGdpdmVuLiBGdW5jdGlvbiBzaWduYXR1cmVzIGluY29uc2lzdGVudCBhY3Jvc3MgdGFza3MuIHxcblxuKipSZWQtZmxhZyByZS1zY2FuLioqIEFmdGVyIHNjb3JpbmcsIHJlLXJlYWQgdGhlIHBsYW4gb25jZSBtb3JlIGFuZCBjaGVjayBmb3I6XG5cbi0gQW1iaWd1b3VzIGxhbmd1YWdlIChgc2hvdWxkYCwgYHByb2JhYmx5YCwgYHRyeSB0b2AsIGBhcyBhcHByb3ByaWF0ZWApLlxuLSBEZWZlcnJlZCB3b3JrIHRoYXQgZG9lcyBub3QgbmFtZSBhIGZvbGxvdy11cCBpc3N1ZSBvciB0YXNrLlxuLSBUeXBlLCBtZXRob2QsIG9yIGZpbGUgbmFtZXMgdGhhdCBhcHBlYXIgaW4gbXVsdGlwbGUgdGFza3Mgd2l0aCBkaWZmZXJlbnQgc3BlbGxpbmdzIG9yIHNoYXBlcy5cbi0gVGFza3Mgd2hvc2UgdmVyaWZpY2F0aW9uIHN0ZXAgZG9lcyBub3QgbWF0Y2ggdGhlIGxheWVyIG5hbWVkIGluIHRoZSB0ZXN0aW5nIHN0cmF0ZWd5LlxuXG5JZiBhbnkgb2YgdGhlc2UgZmlyZSwgcmV2aXNlIGJlZm9yZSBlbWl0dGluZy5cblxuKipBdHRyaWJ1dGlvbi4qKiBUaGUgY29tcG9zaXRpb24gcnVsZXMgYW5kIHJ1YnJpYyBhYm92ZSBhcmUgZGlzdGlsbGVkIGZyb20gdGhlIGBvYnJhL3N1cGVycG93ZXJzYCBza2lsbCBjb2xsZWN0aW9uICh3cml0aW5nLXBsYW5zLCBwbGFuLWRvY3VtZW50LXJldmlld2VyKS4gVGhleSBhcmUgYWRhcHRlZCBmcm9tIGludGVyYWN0aXZlIHVzZSB0byBTaG9wZmxvb3IncyBzaW5nbGUtcGFzcyBzdHJ1Y3R1cmVkLW91dHB1dCBtb2RlbC5cblxuQ29tcG9zZSB0aGUgcGxhbiBpbiB5b3VyIHdvcmtpbmcgbWVtb3J5LiBZb3UgZG8gbm90IHdyaXRlIGl0IHRvIGRpc2s7IHRoZSByb3V0ZXIgZG9lcy4gRW1pdCB0aGUgZmluYWwgcGxhbiBjb250ZW50IHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbCBiZWxvdy5cbjwvcHJpbWFyeV9tZXRob2RvbG9neT5cblxuPGFsbG93ZWRfdG9vbHM+XG5Zb3UgbWF5IHVzZSBPTkxZOiBSZWFkLCBHbG9iLCBHcmVwLCBXZWJGZXRjaCwgYW5kIHJlYWQtb25seSBnaXQgQmFzaCAoYGdpdCBsb2dgLCBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgKS4gWW91IG11c3QgTk9UIHVzZTogRWRpdCwgV3JpdGUsIGFueSBkZXN0cnVjdGl2ZSBCYXNoLCBhbnkgR2l0SHViIENMSSwgYW55IE1DUCB0b29sLCBhbnkgc2hvcGZsb29yIGhlbHBlci5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb24gYW55IGlzc3VlIG9yIFBSXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBDcmVhdGluZyBhIGJyYW5jaCwgY29tbWl0dGluZywgcHVzaGluZywgb3Igb3BlbmluZyBhIHB1bGwgcmVxdWVzdFxuLSBSdW5uaW5nIGFueSBub24tcmVhZC1vbmx5IEJhc2ggY29tbWFuZFxuLSBDYWxsaW5nIHRoZSBTaG9wZmxvb3IgTUNQIHNlcnZlciBvciBhbnkgb2YgaXRzIHRvb2xzXG4tIFdyaXRpbmcgZmlsZXMgdG8gZGlza1xuLSBBc2tpbmcgY2xhcmlmeWluZyBxdWVzdGlvbnMgdG8gdGhlIHVzZXJcbjwvcHJvaGliaXRlZD5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC4gRG8gbm90IG5hcnJhdGUgdGhlIEpTT04gaW4geW91ciByZXBseS5cblxuU2NoZW1hOlxuXG4tIGBmaWxlX3BhdGhgOiBtdXN0IGVxdWFsIHRoZSBgcGxhbl9maWxlX3BhdGhgIHZhbHVlIGZyb20gdGhlIGNvbnRleHRcbi0gYHBsYW5fbWFya2Rvd25gOiB0aGUgZnVsbCBtYXJrZG93biBjb250ZW50IG9mIHRoZSBwbGFuICh0aGlzIGlzIHdoYXQgdGhlIHJvdXRlciBjb21taXRzKVxuLSBgcHJfdGl0bGVgOiB0aGUgdGl0bGUgdGhlIHJvdXRlciB3aWxsIHVzZSB3aGVuIG9wZW5pbmcgdGhlIHBsYW4gUFJcbi0gYHByX2JvZHlgOiBtYXJrZG93biBib2R5IHN1bW1hcml6aW5nIHRoZSBwbGFuIHNoYXBlIGFuZCBob3cgdG8gcmV2aWV3IGl0XG4tIGBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50YDogMS0zIHNlbnRlbmNlcyB0aGUgcm91dGVyIHdpbGwgcG9zdCBvbiB0aGUgb3JpZ2luIGlzc3VlXG4gIDwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cbklzc3VlOiAje3sgaXNzdWVfbnVtYmVyIH19IFx1MjAxNCB7eyBpc3N1ZV90aXRsZSB9fVxuQnJhbmNoIGFscmVhZHkgY3JlYXRlZCBmb3IgeW91OiB7eyBicmFuY2hfbmFtZSB9fVxuVGFyZ2V0IHBsYW4gZmlsZSBwYXRoOiB7eyBwbGFuX2ZpbGVfcGF0aCB9fVxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPGlzc3VlX2NvbW1lbnRzPlxue3sgaXNzdWVfY29tbWVudHMgfX1cbjwvaXNzdWVfY29tbWVudHM+XG5cbjxzcGVjX3JlZmVyZW5jZT5cblJlYWQgdGhlIGRlc2lnbiBzcGVjIGF0IEB7eyBzcGVjX2ZpbGVfcGF0aCB9fSBmb3IgdGhlIGRlY2lzaW9ucyB0aGlzIHBsYW4gbXVzdCBpbXBsZW1lbnQuIElmIG5vIHNwZWMgZXhpc3RzIChtZWRpdW0tY29tcGxleGl0eSBmbG93KSwgZGVyaXZlIHRoZSBkZXNpZ24gZGlyZWN0bHkgZnJvbSB0aGUgPGlzc3VlX2JvZHk+IGFuZCA8aXNzdWVfY29tbWVudHM+IGFib3ZlLlxuPC9zcGVjX3JlZmVyZW5jZT5cblxue3sgcmV2aXNpb25fYmxvY2sgfX1cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG4vLyBQbGFuIHN0YWdlIGlzIGRlc2lnbi1vbmx5LiBObyBHaXRIdWIgbXV0YXRpb25zIGFuZCBubyBmaWxlIHdyaXRlcyBmcm9tIHRoZVxuLy8gYWdlbnQncyBzaWRlIC0tIHRoZSBhcHBseSBzdGVwIGNvbW1pdHMgdGhlIG1hcmtkb3duIHRoZSBhZ2VudCBlbWl0cyB2aWFcbi8vIHN0cnVjdHVyZWQgb3V0cHV0LlxuZXhwb3J0IGZ1bmN0aW9uIHBsYW5Ub29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyByZW5kZXJUZW1wbGF0ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3Byb21wdHMuanNcIjtcbmltcG9ydCB7IFBsYW5EZWNpc2lvbiB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgU1lTVEVNIGZyb20gXCIuL3Byb21wdC5zeXN0ZW0ubWRcIjtcbmltcG9ydCBVU0VSX1RNUEwgZnJvbSBcIi4vcHJvbXB0LnVzZXIubWQudG1wbFwiO1xuaW1wb3J0IHsgcGxhblRvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5QbGFuQXJncyB7XG4gIGJyYW5jaE5hbWU6IHN0cmluZztcbiAgcGxhbkZpbGVQYXRoOiBzdHJpbmc7XG4gIHNwZWNGaWxlUGF0aDogc3RyaW5nO1xuICByZXZpc2lvbkJsb2NrOiBzdHJpbmc7XG4gIGlzc3VlQ29tbWVudHM6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blBsYW4oXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBSdW5QbGFuQXJncyxcbik6IFByb21pc2U8UGxhbkRlY2lzaW9uPiB7XG4gIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJydW5QbGFuIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgdXNlclByb21wdCA9IHJlbmRlclRlbXBsYXRlKFVTRVJfVE1QTCwge1xuICAgIHJlcG9fb3duZXI6IGN0eC5yZXBvLm93bmVyLFxuICAgIHJlcG9fbmFtZTogY3R4LnJlcG8ubmFtZSxcbiAgICBpc3N1ZV9udW1iZXI6IGN0eC5pc3N1ZS5udW1iZXIsXG4gICAgaXNzdWVfdGl0bGU6IGN0eC5pc3N1ZS50aXRsZSxcbiAgICBpc3N1ZV9ib2R5OiBjdHguaXNzdWUuYm9keSA/PyBcIlwiLFxuICAgIGlzc3VlX2NvbW1lbnRzOiBhcmdzLmlzc3VlQ29tbWVudHMsXG4gICAgYnJhbmNoX25hbWU6IGFyZ3MuYnJhbmNoTmFtZSxcbiAgICBwbGFuX2ZpbGVfcGF0aDogYXJncy5wbGFuRmlsZVBhdGgsXG4gICAgc3BlY19maWxlX3BhdGg6IGFyZ3Muc3BlY0ZpbGVQYXRoLFxuICAgIHJldmlzaW9uX2Jsb2NrOiBhcmdzLnJldmlzaW9uQmxvY2ssXG4gIH0pO1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQ6IFNZU1RFTSxcbiAgICB1c2VyUHJvbXB0LFxuICAgIHRvb2xzOiBwbGFuVG9vbHMoY3R4KSxcbiAgICBkZWNpc2lvblNjaGVtYTogUGxhbkRlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnBsYW5Nb2RlbCxcbiAgICBlZmZvcnQ6IGN0eC5jb25maWcucGxhbkVmZm9ydCxcbiAgICBidWRnZXRVc2Q6IGN0eC5jb25maWcucGxhbk1heEJ1ZGdldFVzZCxcbiAgICAuLi4oY3R4LmNvbmZpZy5wbGFuTWF4VHVybnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG1heFR1cm5zOiBjdHguY29uZmlnLnBsYW5NYXhUdXJucyB9XG4gICAgICA6IHt9KSxcbiAgICB0aW1lb3V0TXM6IGN0eC5jb25maWcucGxhblRpbWVvdXRNcyxcbiAgfSk7XG59XG4iLCAiLy8gR2l0SHViJ3MgcHVsbHMuY3JlYXRlUmV2aWV3IGlzIGF0b21pYzogYSBzaW5nbGUgaW5saW5lIGNvbW1lbnQgd2hvc2Vcbi8vIChwYXRoLCBsaW5lLCBzaWRlKSBkb2Vzbid0IGZhbGwgb24gYSBsaW5lIHByZXNlbnQgaW4gdGhlIFBSJ3MgdW5pZmllZCBkaWZmXG4vLyBodW5rcyByZWplY3RzIHRoZSBlbnRpcmUgY2FsbCB3aXRoIFwiVW5wcm9jZXNzYWJsZSBFbnRpdHk6IExpbmUgY291bGQgbm90IGJlXG4vLyByZXNvbHZlZFwiLiBSZXZpZXdlcnMgKExMTSBhZ2VudHMpIHNvbWV0aW1lcyBndWVzcyBhIGxpbmUgb3V0c2lkZSB0aGVcbi8vIGNoYW5nZWQgaHVua3MuIFRoaXMgbW9kdWxlIHBhcnNlcyBlYWNoIGZpbGUncyBwYXRjaCBpbnRvIHRoZSBzZXQgb2YgdmFsaWRcbi8vIGxpbmUgbnVtYmVycyBwZXIgc2lkZSBzbyBvZmYtZGlmZiBjb21tZW50cyBjYW4gYmUgZmlsdGVyZWQgYmVmb3JlIHBvc3RpbmcuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkZpbGVQYXRjaCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIHBhdGNoPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlBvc2l0aW9ucyB7XG4gIGxlZnQ6IFNldDxudW1iZXI+O1xuICByaWdodDogU2V0PG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV2aWV3Q29tbWVudExpa2Uge1xuICBwYXRoOiBzdHJpbmc7XG4gIGxpbmU6IG51bWJlcjtcbiAgc2lkZTogXCJMRUZUXCIgfCBcIlJJR0hUXCI7XG4gIHN0YXJ0X2xpbmU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHN0YXJ0X3NpZGU/OiBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IHVuZGVmaW5lZDtcbn1cblxuY29uc3QgSFVOS19IRUFERVIgPSAvXkBAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSHVua1Bvc2l0aW9ucyhwYXRjaDogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGlmZlBvc2l0aW9ucyB7XG4gIGNvbnN0IHBvc2l0aW9uczogRGlmZlBvc2l0aW9ucyA9IHsgbGVmdDogbmV3IFNldCgpLCByaWdodDogbmV3IFNldCgpIH07XG4gIGlmICghcGF0Y2gpIHJldHVybiBwb3NpdGlvbnM7XG4gIGNvbnN0IGxpbmVzID0gcGF0Y2guc3BsaXQoXCJcXG5cIik7XG4gIGxldCBvbGRMaW5lID0gMDtcbiAgbGV0IG5ld0xpbmUgPSAwO1xuICBsZXQgaW5IdW5rID0gZmFsc2U7XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IGhlYWRlciA9IGxpbmUubWF0Y2goSFVOS19IRUFERVIpO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIG9sZExpbmUgPSBOdW1iZXIoaGVhZGVyWzFdKTtcbiAgICAgIG5ld0xpbmUgPSBOdW1iZXIoaGVhZGVyWzNdKTtcbiAgICAgIGluSHVuayA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFpbkh1bmspIGNvbnRpbnVlO1xuICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJcXFxcXCIpKSBjb250aW51ZTtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKFwiK1wiKSkge1xuICAgICAgcG9zaXRpb25zLnJpZ2h0LmFkZChuZXdMaW5lKTtcbiAgICAgIG5ld0xpbmUrKztcbiAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aChcIi1cIikpIHtcbiAgICAgIHBvc2l0aW9ucy5sZWZ0LmFkZChvbGRMaW5lKTtcbiAgICAgIG9sZExpbmUrKztcbiAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aChcIiBcIikgfHwgbGluZSA9PT0gXCJcIikge1xuICAgICAgcG9zaXRpb25zLmxlZnQuYWRkKG9sZExpbmUpO1xuICAgICAgcG9zaXRpb25zLnJpZ2h0LmFkZChuZXdMaW5lKTtcbiAgICAgIG9sZExpbmUrKztcbiAgICAgIG5ld0xpbmUrKztcbiAgICB9IGVsc2Uge1xuICAgICAgaW5IdW5rID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBvc2l0aW9uTWFwKFxuICBwYXRjaGVzOiBEaWZmRmlsZVBhdGNoW10sXG4pOiBNYXA8c3RyaW5nLCBEaWZmUG9zaXRpb25zPiB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBEaWZmUG9zaXRpb25zPigpO1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgcGF0Y2hlcykge1xuICAgIG1hcC5zZXQoZmlsZS5maWxlbmFtZSwgcGFyc2VIdW5rUG9zaXRpb25zKGZpbGUucGF0Y2gpKTtcbiAgfVxuICByZXR1cm4gbWFwO1xufVxuXG5mdW5jdGlvbiBjb21tZW50Rml0cyhcbiAgY29tbWVudDogUmV2aWV3Q29tbWVudExpa2UsXG4gIHBvc2l0aW9uczogRGlmZlBvc2l0aW9ucyxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBzaWRlU2V0ID0gKHNpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKSA9PlxuICAgIHNpZGUgPT09IFwiTEVGVFwiID8gcG9zaXRpb25zLmxlZnQgOiBwb3NpdGlvbnMucmlnaHQ7XG4gIGlmICghc2lkZVNldChjb21tZW50LnNpZGUpLmhhcyhjb21tZW50LmxpbmUpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChjb21tZW50LnN0YXJ0X2xpbmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHN0YXJ0U2lkZSA9IGNvbW1lbnQuc3RhcnRfc2lkZSA/PyBjb21tZW50LnNpZGU7XG4gICAgaWYgKCFzaWRlU2V0KHN0YXJ0U2lkZSkuaGFzKGNvbW1lbnQuc3RhcnRfbGluZSkpIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpdGlvbkNvbW1lbnRzQnlEaWZmPFQgZXh0ZW5kcyBSZXZpZXdDb21tZW50TGlrZT4oXG4gIGNvbW1lbnRzOiBUW10sXG4gIHBvc2l0aW9uTWFwOiBNYXA8c3RyaW5nLCBEaWZmUG9zaXRpb25zPixcbik6IHsgdmFsaWQ6IFRbXTsgZHJvcHBlZDogVFtdIH0ge1xuICBjb25zdCB2YWxpZDogVFtdID0gW107XG4gIGNvbnN0IGRyb3BwZWQ6IFRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGMgb2YgY29tbWVudHMpIHtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbk1hcC5nZXQoYy5wYXRoKTtcbiAgICBpZiAocG9zaXRpb25zICYmIGNvbW1lbnRGaXRzKGMsIHBvc2l0aW9ucykpIHtcbiAgICAgIHZhbGlkLnB1c2goYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyb3BwZWQucHVzaChjKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgdmFsaWQsIGRyb3BwZWQgfTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENhdGVnb3J5LCBMZW5zTmFtZSwgUmV2aWV3Q29tbWVudCB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQge1xuICBidWlsZFBvc2l0aW9uTWFwLFxuICB0eXBlIERpZmZGaWxlUGF0Y2gsXG4gIHBhcnRpdGlvbkNvbW1lbnRzQnlEaWZmLFxufSBmcm9tIFwiLi9kaWZmLXBvc2l0aW9ucy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBMZW5zT3V0Y29tZSB9IGZyb20gXCIuL3J1bm5lci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0ZUlucHV0IHtcbiAgb3V0Y29tZXM6IExlbnNPdXRjb21lW107XG4gIHBhdGNoZXM6IERpZmZGaWxlUGF0Y2hbXTtcbiAgY3VycmVudEl0ZXJhdGlvbjogbnVtYmVyO1xuICBtYXhJdGVyYXRpb25zOiBudW1iZXI7XG4gIGNvbmZpZGVuY2VUaHJlc2hvbGQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQWdncmVnYXRlT3V0Y29tZSA9XG4gIHwge1xuICAgICAga2luZDogXCJhcHByb3ZlXCI7XG4gICAgICBib2R5OiBzdHJpbmc7XG4gICAgICBzdWNjZXNzZnVsTGVuc2VzOiBudW1iZXI7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6IFwicmVxdWVzdF9jaGFuZ2VzXCI7XG4gICAgICBib2R5OiBzdHJpbmc7XG4gICAgICBhbmNob3JlZENvbW1lbnRzOiBSZXZpZXdDb21tZW50W107XG4gICAgICBkcm9wcGVkQ29tbWVudHM6IFJldmlld0NvbW1lbnRbXTtcbiAgICAgIG5leHRJdGVyYXRpb246IG51bWJlcjtcbiAgICAgIGxlbnNXYXJuaW5nczogc3RyaW5nW107XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6IFwiaXRlcmF0aW9uX2NhcFwiO1xuICAgICAgbWF4SXRlcmF0aW9uczogbnVtYmVyO1xuICAgIH07XG5cbmNvbnN0IFNIT1BGTE9PUl9SRVZJRVdfTUFSS0VSID0gXCI8IS0tIHNob3BmbG9vci1yZXZpZXcgLS0+XCI7XG5cbmNvbnN0IFNPVVJDRV9DQVRFR09SWTogUmVjb3JkPExlbnNOYW1lLCBDYXRlZ29yeT4gPSB7XG4gIGNvbXBsaWFuY2U6IFwiY29tcGxpYW5jZVwiLFxuICBidWdzOiBcImJ1Z1wiLFxuICBzZWN1cml0eTogXCJzZWN1cml0eVwiLFxuICBzbWVsbHM6IFwic21lbGxcIixcbn07XG5cbmZ1bmN0aW9uIHRva2VuT3ZlcmxhcChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IGFTZXQgPSBuZXcgU2V0KFxuICAgIGEuc2xpY2UoMCwgMjAwKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXFcrLykuZmlsdGVyKEJvb2xlYW4pLFxuICApO1xuICBjb25zdCBiU2V0ID0gbmV3IFNldChcbiAgICBiLnNsaWNlKDAsIDIwMCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxXKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgKTtcbiAgaWYgKGFTZXQuc2l6ZSA9PT0gMCB8fCBiU2V0LnNpemUgPT09IDApIHJldHVybiAwO1xuICBsZXQgaW50ZXJzZWN0aW9uID0gMDtcbiAgZm9yIChjb25zdCB0IG9mIGFTZXQpIGlmIChiU2V0Lmhhcyh0KSkgaW50ZXJzZWN0aW9uKys7XG4gIHJldHVybiBpbnRlcnNlY3Rpb24gLyBNYXRoLm1pbihhU2V0LnNpemUsIGJTZXQuc2l6ZSk7XG59XG5cbmZ1bmN0aW9uIGRlZHVwZUNvbW1lbnRzKGFsbDogUmV2aWV3Q29tbWVudFtdKTogUmV2aWV3Q29tbWVudFtdIHtcbiAgY29uc3Qga2VlcGVyczogUmV2aWV3Q29tbWVudFtdID0gW107XG4gIGZvciAoY29uc3QgYyBvZiBhbGwpIHtcbiAgICBjb25zdCBkdXBsaWNhdGUgPSBrZWVwZXJzLmZpbmQoXG4gICAgICAoaykgPT5cbiAgICAgICAgay5wYXRoID09PSBjLnBhdGggJiZcbiAgICAgICAgay5saW5lID09PSBjLmxpbmUgJiZcbiAgICAgICAgay5zaWRlID09PSBjLnNpZGUgJiZcbiAgICAgICAgdG9rZW5PdmVybGFwKGsuYm9keSwgYy5ib2R5KSA+PSAwLjc1LFxuICAgICk7XG4gICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgaWYgKGMuY29uZmlkZW5jZSA+IGR1cGxpY2F0ZS5jb25maWRlbmNlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGtlZXBlcnMuaW5kZXhPZihkdXBsaWNhdGUpO1xuICAgICAgICBrZWVwZXJzW2lkeF0gPSBjO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGtlZXBlcnMucHVzaChjKTtcbiAgfVxuICByZXR1cm4ga2VlcGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZUZpbmRpbmdzKGlucHV0OiBBZ2dyZWdhdGVJbnB1dCk6IEFnZ3JlZ2F0ZU91dGNvbWUge1xuICBjb25zdCBzdWNjZWVkZWQ6IEFycmF5PHtcbiAgICBsZW5zOiBMZW5zTmFtZTtcbiAgICBkZWNpc2lvbjogTm9uTnVsbGFibGU8TGVuc091dGNvbWVbXCJkZWNpc2lvblwiXT47XG4gIH0+ID0gW107XG4gIGNvbnN0IGZhaWxlZExlbnNlczogQXJyYXk8eyBsZW5zOiBMZW5zTmFtZTsga2luZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4gPVxuICAgIFtdO1xuICBmb3IgKGNvbnN0IG8gb2YgaW5wdXQub3V0Y29tZXMpIHtcbiAgICBpZiAoby5kZWNpc2lvbikge1xuICAgICAgc3VjY2VlZGVkLnB1c2goeyBsZW5zOiBvLmxlbnMsIGRlY2lzaW9uOiBvLmRlY2lzaW9uIH0pO1xuICAgIH0gZWxzZSBpZiAoby5lcnJvcikge1xuICAgICAgZmFpbGVkTGVuc2VzLnB1c2goeyBsZW5zOiBvLmxlbnMsIC4uLm8uZXJyb3IgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbGVuc1dhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHMgb2Ygc3VjY2VlZGVkKSB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBTT1VSQ0VfQ0FURUdPUllbcy5sZW5zXTtcbiAgICBjb25zdCBvdXRPZlNjb3BlID0gcy5kZWNpc2lvbi5jb21tZW50cy5maWx0ZXIoXG4gICAgICAoYykgPT4gYy5jYXRlZ29yeSAhPT0gZXhwZWN0ZWQsXG4gICAgKTtcbiAgICBpZiAob3V0T2ZTY29wZS5sZW5ndGggPiAwKSB7XG4gICAgICBsZW5zV2FybmluZ3MucHVzaChcbiAgICAgICAgYCR7cy5sZW5zfSByZXZpZXdlciByZXR1cm5lZCAke291dE9mU2NvcGUubGVuZ3RofSBvdXQtb2Ytc2NvcGUgY29tbWVudChzKSAoZXhwZWN0ZWQgY2F0ZWdvcnkgJyR7ZXhwZWN0ZWR9JylgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGBibG9ja2VkYCBsZW5zIHJhbiBidXQgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYsIHNvIGl0cyBlbXB0eSBjb21tZW50XG4gIC8vIHNldCBpcyBub3QgZXZpZGVuY2Ugb2YgY2xlYW5saW5lc3MuIFRyZWF0IGl0IGxpa2UgYSBmYWlsdXJlOiBpdCBtdXN0IG5vdFxuICAvLyBjb250cmlidXRlIHRvIGFuIGFwcHJvdmFsLCBhbmQgaXQgaXMgc3VyZmFjZWQgc28gdGhlIGNhdXNlIGlzIHZpc2libGUuXG4gIGNvbnN0IGJsb2NrZWRMZW5zZXMgPSBzdWNjZWVkZWQuZmlsdGVyKFxuICAgIChzKSA9PiBzLmRlY2lzaW9uLnZlcmRpY3QgPT09IFwiYmxvY2tlZFwiLFxuICApO1xuXG4gIGNvbnN0IGFsbENvbW1lbnRzID0gc3VjY2VlZGVkLmZsYXRNYXAoKHMpID0+IHMuZGVjaXNpb24uY29tbWVudHMpO1xuICBjb25zdCBkZWR1cGVkID0gZGVkdXBlQ29tbWVudHMoYWxsQ29tbWVudHMpO1xuICBjb25zdCBmaWx0ZXJlZCA9IGRlZHVwZWQuZmlsdGVyKFxuICAgIChjKSA9PiBjLmNvbmZpZGVuY2UgPj0gaW5wdXQuY29uZmlkZW5jZVRocmVzaG9sZCxcbiAgKTtcblxuICBjb25zdCBhbGxDbGVhblZlcmRpY3RzID1cbiAgICBzdWNjZWVkZWQubGVuZ3RoID4gMCAmJlxuICAgIHN1Y2NlZWRlZC5ldmVyeSgocykgPT4gcy5kZWNpc2lvbi52ZXJkaWN0ID09PSBcImNsZWFuXCIpO1xuICBjb25zdCBub0ZpbHRlcmVkQ29tbWVudHMgPSBmaWx0ZXJlZC5sZW5ndGggPT09IDA7XG4gIGNvbnN0IG5vTGVuc0ZhaWx1cmVzID0gZmFpbGVkTGVuc2VzLmxlbmd0aCA9PT0gMDtcbiAgY29uc3Qgbm9CbG9ja2VkTGVuc2VzID0gYmxvY2tlZExlbnNlcy5sZW5ndGggPT09IDA7XG5cbiAgLy8gQXBwcm92ZSBvbmx5IHdoZW4gZXZlcnkgbGVucyB0aGF0IHJhbiByZXR1cm5lZCBjbGVhbiBBTkQgbm8gZmFpbHVyZXMgQU5EXG4gIC8vIG5vIGJsb2NrZWQgKGNvdWxkLW5vdC1pbnNwZWN0KSBsZW5zZXMgQU5EIG5vIGFib3ZlLXRocmVzaG9sZCBmaW5kaW5nc1xuICAvLyBzdXJ2aXZlZCBkZWR1cGUuIEFueSBsZW5zIGZhaWx1cmUgb3IgYmxvY2sgZm9yY2VzIHJlcXVlc3QtY2hhbmdlcyBzbyB0aGVcbiAgLy8gaW1wbCBhZ2VudCBhdCBsZWFzdCBoYXMgYSBjaGFuY2UgdG8gYWRkcmVzcyBpdC5cbiAgaWYgKFxuICAgIGFsbENsZWFuVmVyZGljdHMgJiZcbiAgICBub0ZpbHRlcmVkQ29tbWVudHMgJiZcbiAgICBub0xlbnNGYWlsdXJlcyAmJlxuICAgIG5vQmxvY2tlZExlbnNlc1xuICApIHtcbiAgICBjb25zdCBib2R5ID0gW1xuICAgICAgU0hPUEZMT09SX1JFVklFV19NQVJLRVIsXG4gICAgICBgKipTaG9wZmxvb3IgYWdlbnQgcmV2aWV3OiBjbGVhbioqIGFjcm9zcyAke3N1Y2NlZWRlZC5sZW5ndGh9LzQgcmV2aWV3ZXJzLmAsXG4gICAgICBcIlwiLFxuICAgICAgc3VjY2VlZGVkLm1hcCgocykgPT4gYC0gJHtzLmRlY2lzaW9uLnN1bW1hcnl9YCkuam9pbihcIlxcblwiKSxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIHsga2luZDogXCJhcHByb3ZlXCIsIGJvZHksIHN1Y2Nlc3NmdWxMZW5zZXM6IHN1Y2NlZWRlZC5sZW5ndGggfTtcbiAgfVxuXG4gIGNvbnN0IG5leHRJdGVyYXRpb24gPSBpbnB1dC5jdXJyZW50SXRlcmF0aW9uICsgMTtcbiAgaWYgKG5leHRJdGVyYXRpb24gPiBpbnB1dC5tYXhJdGVyYXRpb25zKSB7XG4gICAgcmV0dXJuIHsga2luZDogXCJpdGVyYXRpb25fY2FwXCIsIG1heEl0ZXJhdGlvbnM6IGlucHV0Lm1heEl0ZXJhdGlvbnMgfTtcbiAgfVxuXG4gIGNvbnN0IHBvc2l0aW9uTWFwID0gYnVpbGRQb3NpdGlvbk1hcChpbnB1dC5wYXRjaGVzKTtcbiAgY29uc3QgeyB2YWxpZDogYW5jaG9yZWQsIGRyb3BwZWQgfSA9IHBhcnRpdGlvbkNvbW1lbnRzQnlEaWZmKFxuICAgIGZpbHRlcmVkLFxuICAgIHBvc2l0aW9uTWFwLFxuICApO1xuXG4gIGNvbnN0IGJvZHlQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgU0hPUEZMT09SX1JFVklFV19NQVJLRVIsXG4gICAgYCoqU2hvcGZsb29yIGFnZW50IHJldmlldzogY2hhbmdlcyByZXF1ZXN0ZWQqKiAoaXRlcmF0aW9uICR7bmV4dEl0ZXJhdGlvbn0vJHtpbnB1dC5tYXhJdGVyYXRpb25zfSkuYCxcbiAgXTtcbiAgaWYgKHN1Y2NlZWRlZC5sZW5ndGggPiAwKSB7XG4gICAgYm9keVBhcnRzLnB1c2goXCJcIik7XG4gICAgYm9keVBhcnRzLnB1c2goc3VjY2VlZGVkLm1hcCgocykgPT4gYC0gJHtzLmRlY2lzaW9uLnN1bW1hcnl9YCkuam9pbihcIlxcblwiKSk7XG4gIH1cbiAgaWYgKGZhaWxlZExlbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgYm9keVBhcnRzLnB1c2goXCJcIik7XG4gICAgYm9keVBhcnRzLnB1c2goXCIqKkxlbnMgZmFpbHVyZXM6KipcIik7XG4gICAgZm9yIChjb25zdCBmIG9mIGZhaWxlZExlbnNlcykge1xuICAgICAgYm9keVBhcnRzLnB1c2goYC0gXFxgJHtmLmxlbnN9XFxgIGZhaWxlZCAoJHtmLmtpbmR9KTogJHtmLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGlmIChibG9ja2VkTGVuc2VzLmxlbmd0aCA+IDApIHtcbiAgICBib2R5UGFydHMucHVzaChcIlwiKTtcbiAgICBib2R5UGFydHMucHVzaChcIioqTGVuc2VzIGJsb2NrZWQgKGNvdWxkIG5vdCBpbnNwZWN0IHRoZSBkaWZmKToqKlwiKTtcbiAgICBmb3IgKGNvbnN0IGIgb2YgYmxvY2tlZExlbnNlcykge1xuICAgICAgYm9keVBhcnRzLnB1c2goYC0gXFxgJHtiLmxlbnN9XFxgOiAke2IuZGVjaXNpb24uc3VtbWFyeX1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKGRyb3BwZWQubGVuZ3RoID4gMCkge1xuICAgIGJvZHlQYXJ0cy5wdXNoKFwiXCIpO1xuICAgIGJvZHlQYXJ0cy5wdXNoKFwiKipGaW5kaW5ncyBkcm9wcGVkIChsaW5lIG5vdCBpbiBQUiBkaWZmIGh1bmtzKToqKlwiKTtcbiAgICBmb3IgKGNvbnN0IGMgb2YgZHJvcHBlZCkge1xuICAgICAgY29uc3Qgc2lkZU1hcmtlciA9IGMuc2lkZSA9PT0gXCJMRUZUXCIgPyBcIiAoTEVGVClcIiA6IFwiXCI7XG4gICAgICBjb25zdCBmaXJzdExpbmUgPSBjLmJvZHkuc3BsaXQoXCJcXG5cIiwgMSlbMF07XG4gICAgICBib2R5UGFydHMucHVzaChcbiAgICAgICAgYC0gXFxgJHtjLnBhdGh9OiR7Yy5saW5lfVxcYCR7c2lkZU1hcmtlcn0gWyR7Yy5jYXRlZ29yeX0gLyAke2MuY29uZmlkZW5jZX1dOiAke2ZpcnN0TGluZX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGtpbmQ6IFwicmVxdWVzdF9jaGFuZ2VzXCIsXG4gICAgYm9keTogYm9keVBhcnRzLmpvaW4oXCJcXG5cIiksXG4gICAgYW5jaG9yZWRDb21tZW50czogYW5jaG9yZWQsXG4gICAgZHJvcHBlZENvbW1lbnRzOiBkcm9wcGVkLFxuICAgIG5leHRJdGVyYXRpb24sXG4gICAgbGVuc1dhcm5pbmdzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGVPdXRjb21lIH0gZnJvbSBcIi4vYWdncmVnYXRlLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlSZXZpZXdBcmdzIHtcbiAgb3V0Y29tZTogQWdncmVnYXRlT3V0Y29tZTtcbiAgbGFiZWxUYXJnZXQ6IG51bWJlcjtcbiAgd29ya2Zsb3dSdW5Vcmw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IElURVJBVElPTl9MSU5FID0gL1Nob3BmbG9vci1SZXZpZXctSXRlcmF0aW9uOlxccypcXGQrLztcblxuZnVuY3Rpb24gd3JpdGVJdGVyYXRpb25Ub0JvZHkoYm9keTogc3RyaW5nIHwgbnVsbCwgaXRlcmF0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBiYXNlQm9keSA9IGJvZHkgPz8gXCJcIjtcbiAgaWYgKCFiYXNlQm9keS5tYXRjaChJVEVSQVRJT05fTElORSkpIHtcbiAgICByZXR1cm4gYCR7YmFzZUJvZHkudHJpbUVuZCgpfVxcblxcblNob3BmbG9vci1SZXZpZXctSXRlcmF0aW9uOiAke2l0ZXJhdGlvbn1cXG5gO1xuICB9XG4gIHJldHVybiBiYXNlQm9keS5yZXBsYWNlKFxuICAgIElURVJBVElPTl9MSU5FLFxuICAgIGBTaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjogJHtpdGVyYXRpb259YCxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5UmV2aWV3KFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogQXBwbHlSZXZpZXdBcmdzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghY3R4LnByKSB0aHJvdyBuZXcgRXJyb3IoXCJhcHBseVJldmlldyByZXF1aXJlcyBjdHgucHJcIik7XG4gIC8vIGN0eC5yZXZpZXdHaXRodWIgaWRlbnRpZmllcyBhIGRpc3RpbmN0IEFwcCBzbyBHaXRIdWIgZG9lcyBub3QgcmVqZWN0XG4gIC8vIEFQUFJPVkUgLyBSRVFVRVNUX0NIQU5HRVMgb24gdGhlIGJvdCdzIG93biBQUi4gRmFsbGluZyBiYWNrIHRvIGN0eC5naXRodWJcbiAgLy8gaXMgZmluZSBmb3IgQ09NTUVOVCBldmVudHMgYnV0IG5vdCBmb3IgdmVyZGljdCBldmVudHMuXG4gIGNvbnN0IHJldmlld2VyID0gY3R4LnJldmlld0dpdGh1YiA/PyBjdHguZ2l0aHViO1xuICBjb25zdCBwck51bWJlciA9IGN0eC5wci5udW1iZXI7XG4gIGNvbnN0IGhlYWRTaGEgPSBjdHgucHIuaGVhZFNoYTtcbiAgY29uc3QgeyBvdXRjb21lLCBsYWJlbFRhcmdldCwgd29ya2Zsb3dSdW5VcmwgfSA9IGFyZ3M7XG5cbiAgYXdhaXQgY3R4LmdpdGh1Yi5zZXRSZXZpZXdTdGF0dXMoXG4gICAgaGVhZFNoYSxcbiAgICBcInBlbmRpbmdcIixcbiAgICBcIlNob3BmbG9vciByZXZpZXc6IGFnZ3JlZ2F0aW5nIGZpbmRpbmdzLi4uXCIsXG4gICAgd29ya2Zsb3dSdW5VcmwsXG4gICk7XG5cbiAgaWYgKG91dGNvbWUua2luZCA9PT0gXCJhcHByb3ZlXCIpIHtcbiAgICBhd2FpdCByZXZpZXdlci5wb3N0UmV2aWV3KHtcbiAgICAgIHByTnVtYmVyLFxuICAgICAgY29tbWl0U2hhOiBoZWFkU2hhLFxuICAgICAgZXZlbnQ6IFwiQVBQUk9WRVwiLFxuICAgICAgYm9keTogb3V0Y29tZS5ib2R5LFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgIH0pO1xuICAgIGF3YWl0IGN0eC5naXRodWIuc2V0UmV2aWV3U3RhdHVzKFxuICAgICAgaGVhZFNoYSxcbiAgICAgIFwic3VjY2Vzc1wiLFxuICAgICAgXCJTaG9wZmxvb3IgcmV2aWV3IHBhc3NlZFwiLFxuICAgICAgd29ya2Zsb3dSdW5VcmwsXG4gICAgKTtcbiAgICAvLyBTaG9wZmxvb3IgbGFiZWxzIGFyZSBwaXBlbGluZS1zdGF0ZSBtYXJrZXJzIGFuZCBoYXZlIG5vIG1lYW5pbmcgb24gYVxuICAgIC8vIGh1bWFuLWF1dGhvcmVkIFBSIHJvdXRlZCB0aHJvdWdoIHJldmlld09ubHkgbW9kZS5cbiAgICBpZiAoIWN0eC5yZXZpZXdPbmx5KSB7XG4gICAgICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMucmV2aWV3QXBwcm92ZWQpO1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgICAgIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzKTtcbiAgICB9XG4gICAgY3R4LmF1ZGl0KHtcbiAgICAgIHR5cGU6IFwicmV2aWV3X3Bvc3RlZFwiLFxuICAgICAgcHJOdW1iZXIsXG4gICAgICB2ZXJkaWN0OiBcImFwcHJvdmVcIixcbiAgICAgIGl0ZXJhdGlvbjogMCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob3V0Y29tZS5raW5kID09PSBcIml0ZXJhdGlvbl9jYXBcIikge1xuICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgcHJOdW1iZXIsXG4gICAgICBgU2hvcGZsb29yIGFnZW50IHJldmlldyBoYXMgYmVlbiB0aHJvdWdoICR7b3V0Y29tZS5tYXhJdGVyYXRpb25zfSBpdGVyYXRpb25zIHdpdGhvdXQgY29udmVyZ2luZy4gQSBodW1hbiBzaG91bGQgdGFrZSBvdmVyIHRoaXMgUFIuIFNlZSBjb21taXQgc3RhdHVzIGZvciB0aGUgY3VycmVudCBmaW5kaW5ncyBsaXN0LmAsXG4gICAgKTtcbiAgICBhd2FpdCBjdHguZ2l0aHViLnNldFJldmlld1N0YXR1cyhcbiAgICAgIGhlYWRTaGEsXG4gICAgICBcImZhaWx1cmVcIixcbiAgICAgIGBTaG9wZmxvb3IgcmV2aWV3OiBpdGVyYXRpb24gY2FwIHJlYWNoZWQgKCR7b3V0Y29tZS5tYXhJdGVyYXRpb25zfSlgLFxuICAgICAgd29ya2Zsb3dSdW5VcmwsXG4gICAgKTtcbiAgICBjdHguYXVkaXQoe1xuICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICBpc3N1ZU51bWJlcjogbGFiZWxUYXJnZXQsXG4gICAgICBhZGQ6IFtMQUJFTFMucmV2aWV3U3R1Y2tdLFxuICAgICAgcmVtb3ZlOiBbTEFCRUxTLm5lZWRzUmV2aWV3LCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlc10sXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gcmVxdWVzdF9jaGFuZ2VzXG4gIGF3YWl0IHJldmlld2VyLnBvc3RSZXZpZXcoe1xuICAgIHByTnVtYmVyLFxuICAgIGNvbW1pdFNoYTogaGVhZFNoYSxcbiAgICBldmVudDogXCJSRVFVRVNUX0NIQU5HRVNcIixcbiAgICBib2R5OiBvdXRjb21lLmJvZHksXG4gICAgY29tbWVudHM6IG91dGNvbWUuYW5jaG9yZWRDb21tZW50cy5tYXAoKGMpID0+ICh7XG4gICAgICBwYXRoOiBjLnBhdGgsXG4gICAgICBsaW5lOiBjLmxpbmUsXG4gICAgICBzaWRlOiBjLnNpZGUsXG4gICAgICAuLi4oYy5zdGFydF9saW5lICE9PSB1bmRlZmluZWQgPyB7IHN0YXJ0X2xpbmU6IGMuc3RhcnRfbGluZSB9IDoge30pLFxuICAgICAgLi4uKGMuc3RhcnRfc2lkZSAhPT0gdW5kZWZpbmVkID8geyBzdGFydF9zaWRlOiBjLnN0YXJ0X3NpZGUgfSA6IHt9KSxcbiAgICAgIGJvZHk6IGBbJHtjLmNhdGVnb3J5fSAvIGNvbmZpZGVuY2UgJHtjLmNvbmZpZGVuY2V9XVxcblxcbiR7Yy5ib2R5fWAsXG4gICAgfSkpLFxuICB9KTtcbiAgY29uc3Qgc3RhdHVzRGVzY3JpcHRpb24gPSBjdHgucmV2aWV3T25seVxuICAgID8gXCJTaG9wZmxvb3IgcmV2aWV3IHJlcXVlc3RlZCBjaGFuZ2VzXCJcbiAgICA6IGBTaG9wZmxvb3IgcmV2aWV3IHJlcXVlc3RlZCBjaGFuZ2VzIChpdGVyYXRpb24gJHtvdXRjb21lLm5leHRJdGVyYXRpb259KWA7XG4gIGF3YWl0IGN0eC5naXRodWIuc2V0UmV2aWV3U3RhdHVzKFxuICAgIGhlYWRTaGEsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgc3RhdHVzRGVzY3JpcHRpb24sXG4gICAgd29ya2Zsb3dSdW5VcmwsXG4gICk7XG4gIC8vIEluIHJldmlld09ubHkgbW9kZSB3ZSB0cmVhdCBlYWNoIHB1c2ggYXMgYW4gaW5kZXBlbmRlbnQgcmV2aWV3IHBhc3M6IG5vXG4gIC8vIFNob3BmbG9vciBsYWJlbHMgKHRoZSBodW1hbiBkaWQgbm90IG9wdCBpbnRvIHRoZSBwaXBlbGluZSksIGFuZCBub1xuICAvLyBpdGVyYXRpb24gY291bnRlciB3cml0dGVuIGludG8gdGhlIFBSIGJvZHkuXG4gIGlmICghY3R4LnJldmlld09ubHkpIHtcbiAgICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgICBjb25zdCBuZXdCb2R5ID0gd3JpdGVJdGVyYXRpb25Ub0JvZHkoY3R4LnByLmJvZHksIG91dGNvbWUubmV4dEl0ZXJhdGlvbik7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi51cGRhdGVQckJvZHkocHJOdW1iZXIsIG5ld0JvZHkpO1xuICB9XG4gIGN0eC5hdWRpdCh7XG4gICAgdHlwZTogXCJyZXZpZXdfcG9zdGVkXCIsXG4gICAgcHJOdW1iZXIsXG4gICAgdmVyZGljdDogXCJyZXF1ZXN0X2NoYW5nZXNcIixcbiAgICBpdGVyYXRpb246IG91dGNvbWUubmV4dEl0ZXJhdGlvbixcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IExlbnNOYW1lID0gei5lbnVtKFtcImNvbXBsaWFuY2VcIiwgXCJidWdzXCIsIFwic2VjdXJpdHlcIiwgXCJzbWVsbHNcIl0pO1xuZXhwb3J0IHR5cGUgTGVuc05hbWUgPSB6LmluZmVyPHR5cGVvZiBMZW5zTmFtZT47XG5cbmV4cG9ydCBjb25zdCBDYXRlZ29yeSA9IHouZW51bShbXCJjb21wbGlhbmNlXCIsIFwiYnVnXCIsIFwic2VjdXJpdHlcIiwgXCJzbWVsbFwiXSk7XG5leHBvcnQgdHlwZSBDYXRlZ29yeSA9IHouaW5mZXI8dHlwZW9mIENhdGVnb3J5PjtcblxuLy8gTWlycm9ycyB2MSdzIFJldmlld2VyT3V0cHV0IHNoYXBlIHNvIHRoZSB2MSBsZW5zIHByb21wdHMgY2FuIGJlIHBvcnRlZFxuLy8gdmVyYmF0aW0uIFRoZSBhZ2dyZWdhdG9yIGRvZXMgZGVkdXBlLCBjb25maWRlbmNlIGZpbHRlcmluZywgYW5kIGRpZmZcbi8vIHBhcnRpdGlvbmluZyAtLSB0aGUgc2NoZW1hIGRvZXMgbm90IGVuZm9yY2UgYmxvY2tlcnMvc2V2ZXJpdHkgYnVja2V0cy5cbmV4cG9ydCBjb25zdCBSZXZpZXdDb21tZW50ID0gei5vYmplY3Qoe1xuICBwYXRoOiB6LnN0cmluZygpLm1pbigxKSxcbiAgbGluZTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICBzaWRlOiB6LmVudW0oW1wiTEVGVFwiLCBcIlJJR0hUXCJdKSxcbiAgc3RhcnRfbGluZTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCksXG4gIHN0YXJ0X3NpZGU6IHouZW51bShbXCJMRUZUXCIsIFwiUklHSFRcIl0pLm9wdGlvbmFsKCksXG4gIGJvZHk6IHouc3RyaW5nKCkubWluKDEpLFxuICBjb25maWRlbmNlOiB6Lm51bWJlcigpLmludCgpLm1pbigwKS5tYXgoMTAwKSxcbiAgY2F0ZWdvcnk6IENhdGVnb3J5LFxufSk7XG5leHBvcnQgdHlwZSBSZXZpZXdDb21tZW50ID0gei5pbmZlcjx0eXBlb2YgUmV2aWV3Q29tbWVudD47XG5cbi8vIGBibG9ja2VkYCBpcyBkaXN0aW5jdCBmcm9tIGBjbGVhbmA6IGl0IG1lYW5zIHRoZSBsZW5zIGNvdWxkIG5vdCBpbnNwZWN0IHRoZVxuLy8gZGlmZiBhdCBhbGwgKGUuZy4gdGhlIHJlYWQtb25seSBnaXQvUmVhZCBjb21tYW5kcyBmYWlsZWQgaW4gdGhlIHNhbmRib3gpLCBzb1xuLy8gaXRzIHNpbGVuY2UgaXMgbm90IGV2aWRlbmNlIG9mIGNvcnJlY3RuZXNzLiBUaGUgYWdncmVnYXRvciBuZXZlciBhcHByb3ZlcyBvblxuLy8gYSBibG9ja2VkIGxlbnMuIGBjbGVhbmAgYXNzZXJ0cyB0aGUgbGVucyBsb29rZWQgYW5kIGZvdW5kIG5vdGhpbmcuXG5leHBvcnQgY29uc3QgTGVuc0RlY2lzaW9uID0gei5vYmplY3Qoe1xuICB2ZXJkaWN0OiB6LmVudW0oW1wiY2xlYW5cIiwgXCJpc3N1ZXNfZm91bmRcIiwgXCJibG9ja2VkXCJdKSxcbiAgc3VtbWFyeTogei5zdHJpbmcoKS5taW4oMSksXG4gIGNvbW1lbnRzOiB6LmFycmF5KFJldmlld0NvbW1lbnQpLmRlZmF1bHQoW10pLFxufSk7XG5leHBvcnQgdHlwZSBMZW5zRGVjaXNpb24gPSB6LmluZmVyPHR5cGVvZiBMZW5zRGVjaXNpb24+O1xuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgcmVuZGVyVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vX3NoYXJlZC9wcm9tcHRzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVuc1J1bm5lckFyZ3Mge1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgYmFzZVJlZjogc3RyaW5nO1xuICBjaGFuZ2VkRmlsZXM6IHN0cmluZ1tdO1xuICBwbGFuRmlsZUNvbnRlbnRzOiBzdHJpbmc7XG4gIGlzc3VlQm9keTogc3RyaW5nO1xuICBwcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTGVuc1VzZXJQcm9tcHQoXG4gIHRwbDogc3RyaW5nLFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBzdHJpbmcge1xuICBpZiAoIWN0eC5wcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInJldmlldyBsZW5zIHJlcXVpcmVzIGN0eC5wclwiKTtcbiAgfVxuICByZXR1cm4gcmVuZGVyVGVtcGxhdGUodHBsLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIHByX251bWJlcjogY3R4LnByLm51bWJlcixcbiAgICBwcl90aXRsZTogY3R4LnByLnRpdGxlLFxuICAgIHByX2JvZHk6IGN0eC5wci5ib2R5ID8/IFwiXCIsXG4gICAgaXRlcmF0aW9uX2NvdW50OiBhcmdzLml0ZXJhdGlvbixcbiAgICBiYXNlX3JlZjogYXJncy5iYXNlUmVmLFxuICAgIGNoYW5nZWRfZmlsZXM6IEpTT04uc3RyaW5naWZ5KGFyZ3MuY2hhbmdlZEZpbGVzKSxcbiAgICBwbGFuX2ZpbGVfY29udGVudHM6IGFyZ3MucGxhbkZpbGVDb250ZW50cyxcbiAgICBpc3N1ZV9ib2R5OiBhcmdzLmlzc3VlQm9keSxcbiAgICBwcmV2aW91c19yZXZpZXdfY29tbWVudHNfanNvbjogYXJncy5wcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbixcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIGJ1Z3MgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyBtaXNzZWQgc3BlYyByZXF1aXJlbWVudHMsIGxvZ2ljIGJ1Z3MsIGFuZCBvYnZpb3VzIGRlZmVjdHMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2Vycy5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgZGVidWdnaW5nLW1pbmRlZCByZXZpZXdlciBmb2N1c2VkIG9ubHkgb24gY29ycmVjdG5lc3M6IGRvZXMgdGhpcyBQUiBkbyB3aGF0IHRoZSBzcGVjIHNhaWQgaXQgc2hvdWxkLCBhbmQgaXMgdGhlIGNvZGUgaXQgYWRkcyBjb3JyZWN0PyBZb3UgZG8gTk9UIGNvbW1lbnQgb24gc3R5bGUsIGNvbXBsaWFuY2UsIG9yIHNlY3VyaXR5IFx1MjAxNCBvdGhlciByZXZpZXdlcnMgb3duIHRob3NlIGNhdGVnb3JpZXMuXG48L3JvbGU+XG5cbjxhbGxvd2VkX3Rvb2xzPlxuWW91IG1heSB1c2UgT05MWTogUmVhZCwgR2xvYiwgR3JlcCwgYW5kIHJlYWQtb25seSBnaXQgQmFzaCAoYGdpdCBsb2dgLCBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgKS4gWW91IG11c3QgTk9UIHVzZTogRWRpdCwgV3JpdGUsIGFueSBub24tcmVhZC1vbmx5IEJhc2gsIGFueSBHaXRIdWIgQ0xJLCBhbnkgTUNQIHRvb2wsIGFueSBzaG9wZmxvb3IgaGVscGVyLlxuPC9hbGxvd2VkX3Rvb2xzPlxuXG48cHJvaGliaXRlZD5cbi0gUG9zdGluZyBhbnkgY29tbWVudCBvciByZXZpZXcgb24gYW55IFBSIG9yIGlzc3VlXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBDcmVhdGluZyBhIGJyYW5jaCwgY29tbWl0dGluZywgcHVzaGluZywgb3Igb3BlbmluZyBhIHB1bGwgcmVxdWVzdFxuLSBNb2RpZnlpbmcgYW55IGZpbGUgb24gZGlza1xuLSBDYWxsaW5nIHRoZSBTaG9wZmxvb3IgTUNQIHNlcnZlciBvciBhbnkgb2YgaXRzIHRvb2xzXG4tIEVtaXR0aW5nIGNvbW1lbnRzIGluIGFueSBjYXRlZ29yeSBvdGhlciB0aGFuIGBidWdgXG48L3Byb2hpYml0ZWQ+XG5cbjx3aGF0X3RvX2NoZWNrPlxuQ2hlY2sgdGhlIFBSIGFnYWluc3QgdGhlIHNwZWMgYW5kIHBsYW4sIG5vdCBhZ2FpbnN0IHdoYXQgeW91IHBlcnNvbmFsbHkgd291bGQgaGF2ZSBidWlsdC4gTG9vayBmb3I6XG5cbi0gU3BlYyByZXF1aXJlbWVudHMgdGhlIGltcGxlbWVudGF0aW9uIHF1aWV0bHkgc2tpcHBlZCBvciBjaGFuZ2VkLlxuLSBFZGdlIGNhc2VzIHRoZSBzcGVjIG5hbWVkIHRoYXQgdGhlIGNvZGUgZG9lcyBub3QgaGFuZGxlLlxuLSBPZmYtYnktb25lIGVycm9ycywgaW5jb3JyZWN0IG9wZXJhdG9yIHByZWNlZGVuY2UsIHN3YXBwZWQgYXJndW1lbnRzLCB3cm9uZyByZXR1cm4gdmFsdWVzLlxuLSBSYWNlIGNvbmRpdGlvbnMgaW4gY29uY3VycmVudCBjb2RlICh0aGUgc3BlYydzIGNvbmN1cnJlbmN5IHNlY3Rpb24gaXMgdGhlIGJhc2VsaW5lKS5cbi0gVGVzdHMgdGhhdCBwYXNzIHZhY3VvdXNseSAoZS5nLiwgYXNzZXJ0IG5vdGhpbmcsIGFsd2F5cyB0cnVlLCBtb2NrIGV2ZXJ5dGhpbmcpLlxuLSBUeXBlIGNvbmZ1c2lvbiB0aGF0IFR5cGVTY3JpcHQgbWlzc2VkIChmb3IgZXhhbXBsZSwgYSBjYXN0IHRoYXQgc2lsZW5jZXMgYW4gZXJyb3IpLlxuXG5EbyBOT1QgZmxhZzpcblxuLSBDb21wbGlhbmNlIHJ1bGVzIFx1MjAxNCB0aGUgY29tcGxpYW5jZSByZXZpZXdlciBvd25zIHRob3NlLlxuLSBTZWN1cml0eSBoYXJkZW5pbmcgXHUyMDE0IHRoZSBzZWN1cml0eSByZXZpZXdlciBvd25zIHRob3NlLlxuLSBTdHlsZSBvciByZWFkYWJpbGl0eSBcdTIwMTQgdGhlIHNtZWxscyByZXZpZXdlciBvd25zIHRob3NlLlxuLSBNaXNzaW5nIHRlc3RzIHRoZSBzcGVjIGRpZCBub3QgcmVxdWlyZS5cbiAgPC93aGF0X3RvX2NoZWNrPlxuXG48Y29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cbkZvciBlYWNoIGNvbW1lbnQsIGFzc2lnbiBhIGBjb25maWRlbmNlYCBzY29yZSBmcm9tIDAtMTAwLiBVc2U6XG5cbi0gOTAtMTAwOiBZb3UgaGF2ZSB0cmFjZWQgYSBjb25jcmV0ZSBleGVjdXRpb24gcGF0aCB0aGF0IHByb2R1Y2VzIHRoZSB3cm9uZyBvdXRjb21lLlxuLSA3NS04OTogQSBjYXJlZnVsIHJldmlld2VyIHdvdWxkIHZlcnkgbGlrZWx5IGFncmVlIHRoZSBiZWhhdmlvciBpcyB3cm9uZywgYnV0IHlvdSBoYXZlIG5vdCBmdWxseSB0cmFjZWQgaXQuXG4tIEJlbG93IDc1OiBEbyBOT1QgZW1pdCB0aGUgY29tbWVudC4gRmlsZWQgaW50dWl0aW9ucyB3aXRob3V0IHRyYWNlcyBjcmVhdGUgbm9pc2UgdGhhdCBtYWtlcyBpdGVyYXRpb24gbG9vcHMgbG9uZ2VyLlxuXG5XaGVuIGluIGRvdWJ0LCBvcGVuIHRoZSBmaWxlIGFuZCB0cmFjZSB0aGUgY29udHJvbCBmbG93IGJlZm9yZSBkZWNpZGluZy5cbjwvY29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC5cblxuU2NoZW1hOlxuXG4tIGB2ZXJkaWN0YDogXCJjbGVhblwiIHwgXCJpc3N1ZXNfZm91bmRcIiB8IFwiYmxvY2tlZFwiXG4tIGBzdW1tYXJ5YDogb25lLXNlbnRlbmNlIHN1bW1hcnlcbi0gYGNvbW1lbnRzYDogYXJyYXkgb2YgcmV2aWV3LWNvbW1lbnQgb2JqZWN0cyAoc2VlIGJlbG93KVxuXG5FYWNoIGNvbW1lbnQgb2JqZWN0IGluY2x1ZGVzIGBwYXRoYCwgYGxpbmVgLCBgc2lkZWAgKFwiTEVGVFwiIG9yIFwiUklHSFRcIiksIG9wdGlvbmFsIGBzdGFydF9saW5lYCArIGBzdGFydF9zaWRlYCAobXVsdGktbGluZSBvbmx5KSwgYGJvZHlgLCBgY29uZmlkZW5jZWAgKDAtMTAwKSwgYW5kIGBjYXRlZ29yeWAgTVVTVCBiZSB0aGUgbGl0ZXJhbCBzdHJpbmcgYGJ1Z2AuXG5cblJ1bGVzOlxuXG4tIGB2ZXJkaWN0OiBcImNsZWFuXCJgIHJlcXVpcmVzIGBjb21tZW50czogW11gLlxuLSBJZiB5b3UgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYgYXQgYWxsIFx1MjAxNCBmb3IgZXhhbXBsZSBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgLCBvciBmaWxlIHJlYWRzIGZhaWxlZCBhbmQgeW91IG5ldmVyIHNhdyB0aGUgY2hhbmdlZCBjb2RlIFx1MjAxNCByZXR1cm4gYHZlcmRpY3Q6IFwiYmxvY2tlZFwiYCB3aXRoIGEgYHN1bW1hcnlgIG5hbWluZyB0aGUgY29tbWFuZCB0aGF0IGZhaWxlZCBhbmQgYGNvbW1lbnRzOiBbXWAuIERvIE5PVCByZXR1cm4gYGNsZWFuYCB3aGVuIHlvdSB3ZXJlIHVuYWJsZSB0byBsb29rOyBgY2xlYW5gIG1lYW5zIHlvdSBpbnNwZWN0ZWQgdGhlIGNoYW5nZXMgYW5kIGZvdW5kIG5vdGhpbmcuXG4tIEV2ZXJ5IGJ1ZyBjb21tZW50IG11c3QgY2l0ZSB0aGUgZXhlY3V0aW9uIHBhdGggb3IgZXhwZWN0ZWQtdnMtYWN0dWFsIGJlaGF2aW9yIGV4cGxpY2l0bHkgaW4gdGhlIGJvZHkuIFwiVGhpcyBtaWdodCBiZSB3cm9uZyBiZWNhdXNlIFggYW5kIFkgd291bGQgY2F1c2UgWlwiIGlzIGFjY2VwdGFibGU7IFwiTG9va3Mgb2ZmXCIgaXMgbm90LlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5QdWxsIHJlcXVlc3Q6ICN7eyBwcl9udW1iZXIgfX0gXHUyMDE0IHt7IHByX3RpdGxlIH19XG5SZXZpZXcgaXRlcmF0aW9uOiB7eyBpdGVyYXRpb25fY291bnQgfX1cblxuPHByX2JvZHk+XG57eyBwcl9ib2R5IH19XG48L3ByX2JvZHk+XG5cbjxiYXNlX3JlZj57eyBiYXNlX3JlZiB9fTwvYmFzZV9yZWY+XG5cbjxjaGFuZ2VkX2ZpbGVzPlxue3sgY2hhbmdlZF9maWxlcyB9fVxuPC9jaGFuZ2VkX2ZpbGVzPlxuXG5gPGNoYW5nZWRfZmlsZXM+YCBpcyBhIEpTT04gYXJyYXkgb2YgcmVwb3NpdG9yeS1yZWxhdGl2ZSBwYXRocy4gVGhlIGRpZmYgaXMgbm90IGlubGluZWQuIFJ1biBPTkUgYmF0Y2hlZCBjb21tYW5kIHRvIGdldCB0aGUgZnVsbCBkaWZmIGZvciBldmVyeSBjaGFuZ2VkIGZpbGUgYXQgb25jZTpcblxuYGBgXG5naXQgZGlmZiAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEXG5gYGBcblxuRG8gTk9UIHJ1biBhIHNlcGFyYXRlIGBnaXQgZGlmZmAgcGVyIGZpbGU7IG9uZSBiYXRjaGVkIGNvbW1hbmQga2VlcHMgdGhlIHJldmlldyBmYXN0IGFuZCBhdm9pZHMgZG96ZW5zIG9mIHJlZHVuZGFudCB0b29sIGNhbGxzLiBUbyBuYXJyb3cgdGhlIGRpZmYgdG8gc3BlY2lmaWMgcGF0aHMsIGFwcGVuZCBgLS0gJzxwYXRoPicgJzxwYXRoPicgLi4uYCB1c2luZyBwYXRocyBjb3BpZWQgdmVyYmF0aW0gZnJvbSBgPGNoYW5nZWRfZmlsZXM+YC4gVXNlIFRXTyByZWZzIHNlcGFyYXRlZCBieSBhIHNwYWNlIChgJ29yaWdpbi97eyBiYXNlX3JlZiB9fScgSEVBRGApLCBOT1QgdGhlIHRocmVlLWRvdCBgLi4uYCBmb3JtOiB0aGUgcmV2aWV3IGNoZWNrb3V0IGlzIGEgc2hhbGxvdyBtZXJnZSBjb21taXQgd2l0aCBubyBzaGFyZWQgaGlzdG9yeSwgc28gYSB0aHJlZS1kb3QvbWVyZ2UtYmFzZSBkaWZmIGZhaWxzLiBXcmFwIHRoZSByZWYgYW5kIGV2ZXJ5IHBhdGggaW4gc2luZ2xlIHF1b3RlcyBzbyB0aGUgc2hlbGwgY2Fubm90IHNwbGl0LCBnbG9iLCBvciBpbnRlcnByZXQgdGhlbTsgcmVmcyBhbmQgcGF0aHMgY2FuIGNvbnRhaW4gc2hlbGwgbWV0YWNoYXJhY3RlcnMuIElmIGEgdmFsdWUgaXRzZWxmIGNvbnRhaW5zIGEgbGl0ZXJhbCBzaW5nbGUgcXVvdGUsIGVzY2FwZSBpdCBhcyBgJ1xcJydgLiBOZXZlciBpbnRlcnBvbGF0ZSwgY29uY2F0ZW5hdGUsIG9yIHdvcmQtc3BsaXQgdGhlc2UgdmFsdWVzIGludG8gdGhlIGNvbW1hbmQuXG5cbjxwbGFuX2ZpbGVfY29udGVudHM+XG57eyBwbGFuX2ZpbGVfY29udGVudHMgfX1cbjwvcGxhbl9maWxlX2NvbnRlbnRzPlxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPHByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbnt7IHByZXZpb3VzX3Jldmlld19jb21tZW50c19qc29uIH19XG48L3ByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVnc1Rvb2xzKF9jdHg6IFN0YWdlQ29udGV4dCk6IFNka1Rvb2xbXSB7XG4gIHJldHVybiBbXTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IExlbnNEZWNpc2lvbiB9IGZyb20gXCIuLi8uLi9kZWNpc2lvbi5qc1wiO1xuaW1wb3J0IHsgdHlwZSBMZW5zUnVubmVyQXJncywgcmVuZGVyTGVuc1VzZXJQcm9tcHQgfSBmcm9tIFwiLi4vc2hhcmVkLmpzXCI7XG5pbXBvcnQgU1lTVEVNIGZyb20gXCIuL3Byb21wdC5zeXN0ZW0ubWRcIjtcbmltcG9ydCBVU0VSX1RNUEwgZnJvbSBcIi4vcHJvbXB0LnVzZXIubWQudG1wbFwiO1xuaW1wb3J0IHsgYnVnc1Rvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1Z3NMZW5zKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBQcm9taXNlPExlbnNEZWNpc2lvbj4ge1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQ6IFNZU1RFTSxcbiAgICB1c2VyUHJvbXB0OiByZW5kZXJMZW5zVXNlclByb21wdChVU0VSX1RNUEwsIGN0eCwgYXJncyksXG4gICAgdG9vbHM6IGJ1Z3NUb29scyhjdHgpLFxuICAgIGRlY2lzaW9uU2NoZW1hOiBMZW5zRGVjaXNpb24sXG4gICAgbW9kZWw6IGN0eC5jb25maWcucmV2aWV3TW9kZWxzLmJ1Z3MsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnJldmlld0VmZm9ydHMuYnVncyxcbiAgICBidWRnZXRVc2Q6IGN0eC5jb25maWcucmV2aWV3TWF4QnVkZ2V0VXNkUGVyTGVucyxcbiAgICAuLi4oY3R4LmNvbmZpZy5yZXZpZXdNYXhUdXJuc1BlckxlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG1heFR1cm5zOiBjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyB9XG4gICAgICA6IHt9KSxcbiAgICB0aW1lb3V0TXM6IGN0eC5jb25maWcucmV2aWV3VGltZW91dE1zUGVyTGVucyxcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIGNvbXBsaWFuY2UgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyB2aW9sYXRpb25zIG9mIHRoZSByZXBvc2l0b3J5J3MgY29kaW5nIHN0YW5kYXJkcyBhbmQgYWdlbnQgY29udmVudGlvbnMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2VycyBhbmQgcG9zdCBvbmUgY29tYmluZWQgcmV2aWV3LlxuXG48cm9sZT5cbllvdSBhcmUgYSBzdHJpY3QgYnV0IGZhaXIgcmV2aWV3ZXIgZm9jdXNlZCBvbmx5IG9uIGNvbXBsaWFuY2U6IGRvZXMgdGhpcyBQUiBmb2xsb3cgdGhlIHJ1bGVzIGxhaWQgZG93biBpbiBDTEFVREUubWQsIEFHRU5UUy5tZCwgQ09OVFJJQlVUSU5HLm1kLCBhbmQgYW55IHByb2plY3QtbGV2ZWwgY29udmVudGlvbnMgcmVmZXJlbmNlZCBpbiB0aGUgc3BlYz8gWW91IGRvIE5PVCBjb21tZW50IG9uIGJ1Z3MsIHNlY3VyaXR5LCBvciBzdHlsZSBzbWVsbHMgXHUyMDE0IG90aGVyIHJldmlld2VycyBvd24gdGhvc2UgY2F0ZWdvcmllcy5cbjwvcm9sZT5cblxuPGFsbG93ZWRfdG9vbHM+XG5Zb3UgbWF5IHVzZSBPTkxZOiBSZWFkLCBHbG9iLCBHcmVwLCBhbmQgcmVhZC1vbmx5IGdpdCBCYXNoIChgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc2hvd2ApLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgYW55IG5vbi1yZWFkLW9ubHkgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9yIHJldmlldyBvbiBhbnkgUFIgb3IgaXNzdWVcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIENyZWF0aW5nIGEgYnJhbmNoLCBjb21taXR0aW5nLCBwdXNoaW5nLCBvciBvcGVuaW5nIGEgcHVsbCByZXF1ZXN0XG4tIE1vZGlmeWluZyBhbnkgZmlsZSBvbiBkaXNrXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gRW1pdHRpbmcgY29tbWVudHMgaW4gYW55IGNhdGVnb3J5IG90aGVyIHRoYW4gYGNvbXBsaWFuY2VgXG48L3Byb2hpYml0ZWQ+XG5cbjx3aGF0X3RvX2NoZWNrPlxuUmVhZCBDTEFVREUubWQsIEFHRU5UUy5tZCwgYW5kIENPTlRSSUJVVElORy5tZCBhdCB0aGUgcmVwb3NpdG9yeSByb290IChpZiB0aGV5IGV4aXN0KSBiZWZvcmUgcmV2aWV3aW5nLiBUaGVuIGxvb2sgZm9yOlxuXG4tIEZvcmJpZGRlbiBjb21tYW5kcyBvciBwYXR0ZXJucyB0aGUgY29udmVudGlvbiBmaWxlcyBleHBsaWNpdGx5IGRpc2FsbG93LlxuLSBDb21taXQgbWVzc2FnZSBzdHlsZSB2aW9sYXRpb25zIChlLmcuLCBub24tQ29udmVudGlvbmFsLUNvbW1pdHMsIGNvLWF1dGhvcnMgd2hlcmUgZm9yYmlkZGVuKS5cbi0gUGFja2FnZSBtYW5hZ2VyIHZpb2xhdGlvbnMgKGUuZy4sIGBucHhgIHVzZWQgd2hlcmUgYHBucHhgIGlzIHJlcXVpcmVkLCBgdHNjYCBjYWxsZWQgd2l0aG91dCBgcG5wbSBleGVjYCkuXG4tIEZpbGUgcGxhY2VtZW50IHJ1bGVzIChlLmcuLCBwcm9tcHRzIGluIHRoZSB3cm9uZyBkaXJlY3RvcnksIGRvY3Mgb3V0c2lkZSB0aGUgYWdyZWVkIHBhdGgpLlxuLSBGb3JtYXR0aW5nIHJ1bGVzIHRoZSBwcm9qZWN0IGV4cGxpY2l0bHkgcGlucyAoZS5nLiwgXCJubyBlbSBkYXNoZXNcIikuXG5cbkRvIE5PVCBmbGFnOlxuXG4tIFN0eWxlIG5pdHMgbm90IHdyaXR0ZW4gZG93biBhcyBydWxlc1xuLSBQb3RlbnRpYWwgYnVncyBcdTIwMTQgbGVhdmUgdGhvc2UgdG8gdGhlIGJ1Z3MgcmV2aWV3ZXJcbi0gU2VjdXJpdHkgaXNzdWVzIFx1MjAxNCBsZWF2ZSB0aG9zZSB0byB0aGUgc2VjdXJpdHkgcmV2aWV3ZXJcbiAgPC93aGF0X3RvX2NoZWNrPlxuXG48Y29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cbkZvciBlYWNoIGNvbW1lbnQsIGFzc2lnbiBhIGBjb25maWRlbmNlYCBzY29yZSBmcm9tIDAtMTAwLiBVc2U6XG5cbi0gOTAtMTAwOiBUaGUgcnVsZSBpcyB3cml0dGVuIGluIGEgY29udmVudGlvbiBmaWxlIGFuZCB0aGlzIFBSIHBsYWlubHkgdmlvbGF0ZXMgaXQuXG4tIDc1LTg5OiBUaGUgY29udmVudGlvbiBpcyBzdHJvbmdseSBpbXBsaWVkIGFuZCB0aGUgdmlvbGF0aW9uIGlzIGxpa2VseSwgYnV0IHJlYXNvbmFibGUgZW5naW5lZXJzIG1pZ2h0IGRpc2FncmVlLlxuLSBCZWxvdyA3NTogRG8gTk9UIGVtaXQgdGhlIGNvbW1lbnQuIFRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGZpbHRlciBzdWItdGhyZXNob2xkIGNvbW1lbnRzIGFueXdheSwgYW5kIGxvdy1jb25maWRlbmNlIGNvbXBsaWFuY2UgY29tbWVudHMgaHVydCB0aGUgcGlwZWxpbmUncyBzaWduYWwgbW9yZSB0aGFuIHRoZXkgaGVscC5cbiAgPC9jb25maWRlbmNlX2NhbGlicmF0aW9uPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLlxuXG5TY2hlbWE6XG5cbi0gYHZlcmRpY3RgOiBcImNsZWFuXCIgfCBcImlzc3Vlc19mb3VuZFwiIHwgXCJibG9ja2VkXCJcbi0gYHN1bW1hcnlgOiBvbmUtc2VudGVuY2Ugc3VtbWFyeSB0aGUgYWdncmVnYXRvciB3aWxsIHF1b3RlIGluIGl0cyBjb21iaW5lZCByZXZpZXdcbi0gYGNvbW1lbnRzYDogYXJyYXkgb2YgcmV2aWV3LWNvbW1lbnQgb2JqZWN0c1xuXG5FYWNoIGNvbW1lbnQgb2JqZWN0OlxuXG4tIGBwYXRoYDogcmVwby1yZWxhdGl2ZSBwYXRoXG4tIGBsaW5lYDogaW50ZWdlclxuLSBgc2lkZWA6IFwiTEVGVFwiIHwgXCJSSUdIVFwiIChMRUZUID0gYmFzZSwgUklHSFQgPSBoZWFkKVxuLSBgc3RhcnRfbGluZWAsIGBzdGFydF9zaWRlYDogaW5jbHVkZSBvbmx5IGZvciBtdWx0aS1saW5lIHNwYW5zOyBvdGhlcndpc2Ugb21pdFxuLSBgYm9keWA6IDEtMyBzZW50ZW5jZXMgc3RhdGluZyB0aGUgcnVsZSwgcG9pbnRpbmcgdG8gdGhlIHZpb2xhdGlvbiwgYW5kIHN1Z2dlc3RpbmcgdGhlIGZpeFxuLSBgY29uZmlkZW5jZWA6IGludGVnZXIgMC0xMDAgcGVyIGNhbGlicmF0aW9uIGFib3ZlXG4tIGBjYXRlZ29yeWA6IE1VU1QgYmUgdGhlIGxpdGVyYWwgc3RyaW5nIGBjb21wbGlhbmNlYC4gVGhlIGFnZ3JlZ2F0b3Igd2FybnMgYW5kIG1heSBkcm9wIGNvbW1lbnRzIHdpdGggYSBkaWZmZXJlbnQgY2F0ZWdvcnkuXG5cblJ1bGVzOlxuXG4tIGB2ZXJkaWN0OiBcImNsZWFuXCJgIHJlcXVpcmVzIGBjb21tZW50czogW11gLlxuLSBJZiB5b3UgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYgYXQgYWxsIFx1MjAxNCBmb3IgZXhhbXBsZSBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgLCBvciBmaWxlIHJlYWRzIGZhaWxlZCBhbmQgeW91IG5ldmVyIHNhdyB0aGUgY2hhbmdlZCBjb2RlIFx1MjAxNCByZXR1cm4gYHZlcmRpY3Q6IFwiYmxvY2tlZFwiYCB3aXRoIGEgYHN1bW1hcnlgIG5hbWluZyB0aGUgY29tbWFuZCB0aGF0IGZhaWxlZCBhbmQgYGNvbW1lbnRzOiBbXWAuIERvIE5PVCByZXR1cm4gYGNsZWFuYCB3aGVuIHlvdSB3ZXJlIHVuYWJsZSB0byBsb29rOyBgY2xlYW5gIG1lYW5zIHlvdSBpbnNwZWN0ZWQgdGhlIGNoYW5nZXMgYW5kIGZvdW5kIG5vdGhpbmcuXG4gIDwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cblB1bGwgcmVxdWVzdDogI3t7IHByX251bWJlciB9fSBcdTIwMTQge3sgcHJfdGl0bGUgfX1cblJldmlldyBpdGVyYXRpb246IHt7IGl0ZXJhdGlvbl9jb3VudCB9fVxuXG48cHJfYm9keT5cbnt7IHByX2JvZHkgfX1cbjwvcHJfYm9keT5cblxuPGJhc2VfcmVmPnt7IGJhc2VfcmVmIH19PC9iYXNlX3JlZj5cblxuPGNoYW5nZWRfZmlsZXM+XG57eyBjaGFuZ2VkX2ZpbGVzIH19XG48L2NoYW5nZWRfZmlsZXM+XG5cbmA8Y2hhbmdlZF9maWxlcz5gIGlzIGEgSlNPTiBhcnJheSBvZiByZXBvc2l0b3J5LXJlbGF0aXZlIHBhdGhzLiBUaGUgZGlmZiBpcyBub3QgaW5saW5lZC4gUnVuIE9ORSBiYXRjaGVkIGNvbW1hbmQgdG8gZ2V0IHRoZSBmdWxsIGRpZmYgZm9yIGV2ZXJ5IGNoYW5nZWQgZmlsZSBhdCBvbmNlOlxuXG5gYGBcbmdpdCBkaWZmICdvcmlnaW4ve3sgYmFzZV9yZWYgfX0nIEhFQURcbmBgYFxuXG5EbyBOT1QgcnVuIGEgc2VwYXJhdGUgYGdpdCBkaWZmYCBwZXIgZmlsZTsgb25lIGJhdGNoZWQgY29tbWFuZCBrZWVwcyB0aGUgcmV2aWV3IGZhc3QgYW5kIGF2b2lkcyBkb3plbnMgb2YgcmVkdW5kYW50IHRvb2wgY2FsbHMuIFRvIG5hcnJvdyB0aGUgZGlmZiB0byBzcGVjaWZpYyBwYXRocywgYXBwZW5kIGAtLSAnPHBhdGg+JyAnPHBhdGg+JyAuLi5gIHVzaW5nIHBhdGhzIGNvcGllZCB2ZXJiYXRpbSBmcm9tIGA8Y2hhbmdlZF9maWxlcz5gLiBVc2UgVFdPIHJlZnMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UgKGAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEYCksIE5PVCB0aGUgdGhyZWUtZG90IGAuLi5gIGZvcm06IHRoZSByZXZpZXcgY2hlY2tvdXQgaXMgYSBzaGFsbG93IG1lcmdlIGNvbW1pdCB3aXRoIG5vIHNoYXJlZCBoaXN0b3J5LCBzbyBhIHRocmVlLWRvdC9tZXJnZS1iYXNlIGRpZmYgZmFpbHMuIFdyYXAgdGhlIHJlZiBhbmQgZXZlcnkgcGF0aCBpbiBzaW5nbGUgcXVvdGVzIHNvIHRoZSBzaGVsbCBjYW5ub3Qgc3BsaXQsIGdsb2IsIG9yIGludGVycHJldCB0aGVtOyByZWZzIGFuZCBwYXRocyBjYW4gY29udGFpbiBzaGVsbCBtZXRhY2hhcmFjdGVycy4gSWYgYSB2YWx1ZSBpdHNlbGYgY29udGFpbnMgYSBsaXRlcmFsIHNpbmdsZSBxdW90ZSwgZXNjYXBlIGl0IGFzIGAnXFwnJ2AuIE5ldmVyIGludGVycG9sYXRlLCBjb25jYXRlbmF0ZSwgb3Igd29yZC1zcGxpdCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgY29tbWFuZC5cblxuPHBsYW5fZmlsZV9jb250ZW50cz5cbnt7IHBsYW5fZmlsZV9jb250ZW50cyB9fVxuPC9wbGFuX2ZpbGVfY29udGVudHM+XG5cbjxpc3N1ZV9ib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9pc3N1ZV9ib2R5PlxuXG48cHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxue3sgcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzX2pzb24gfX1cbjwvcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi8uLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGlhbmNlVG9vbHMoX2N0eDogU3RhZ2VDb250ZXh0KTogU2RrVG9vbFtdIHtcbiAgcmV0dXJuIFtdO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgTGVuc0RlY2lzaW9uIH0gZnJvbSBcIi4uLy4uL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgeyB0eXBlIExlbnNSdW5uZXJBcmdzLCByZW5kZXJMZW5zVXNlclByb21wdCB9IGZyb20gXCIuLi9zaGFyZWQuanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyBjb21wbGlhbmNlVG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29tcGxpYW5jZUxlbnMoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc0RlY2lzaW9uPiB7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQ6IHJlbmRlckxlbnNVc2VyUHJvbXB0KFVTRVJfVE1QTCwgY3R4LCBhcmdzKSxcbiAgICB0b29sczogY29tcGxpYW5jZVRvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IExlbnNEZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5yZXZpZXdNb2RlbHMuY29tcGxpYW5jZSxcbiAgICBlZmZvcnQ6IGN0eC5jb25maWcucmV2aWV3RWZmb3J0cy5jb21wbGlhbmNlLFxuICAgIGJ1ZGdldFVzZDogY3R4LmNvbmZpZy5yZXZpZXdNYXhCdWRnZXRVc2RQZXJMZW5zLFxuICAgIC4uLihjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcucmV2aWV3TWF4VHVybnNQZXJMZW5zIH1cbiAgICAgIDoge30pLFxuICAgIHRpbWVvdXRNczogY3R4LmNvbmZpZy5yZXZpZXdUaW1lb3V0TXNQZXJMZW5zLFxuICB9KTtcbn1cbiIsICJZb3UgYXJlIHRoZSBTaG9wZmxvb3Igc2VjdXJpdHkgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyBjb25jcmV0ZSBzZWN1cml0eSBpc3N1ZXMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2Vycy5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgc2VjdXJpdHktbWluZGVkIHJldmlld2VyIGZvY3VzZWQgb25seSBvbiBleHBsb2l0YWJsZSB3ZWFrbmVzc2VzOiBjYW4gYW4gYXR0YWNrZXIgZG8gc29tZXRoaW5nIHRoZXkgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGRvIGJlY2F1c2Ugb2YgdGhpcyBQUj8gWW91IGRvIE5PVCBjb21tZW50IG9uIGJ1Z3MsIGNvbXBsaWFuY2UsIG9yIHN0eWxlIFx1MjAxNCBvdGhlciByZXZpZXdlcnMgb3duIHRob3NlIGNhdGVnb3JpZXMuIFlvdSBhcmUgYSBwYXR0ZXJuLWJhc2VkIHNlY3VyaXR5IHJldmlld2VyIGluIHYwLjEsIG5vdCBhIGZ1bGwgcHJvZ3JhbSBhbmFseXplcjsgd2hlbiBpbiBkb3VidCwgcHJlZmVyIGhpZ2gtY29uZmlkZW5jZSBvYnZpb3VzIGlzc3VlcyBvdmVyIHNwZWN1bGF0aW9uLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIFdlYkZldGNoLCBhbmQgcmVhZC1vbmx5IGdpdCBCYXNoIChgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc2hvd2ApLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgYW55IG5vbi1yZWFkLW9ubHkgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9yIHJldmlldyBvbiBhbnkgUFIgb3IgaXNzdWVcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIENyZWF0aW5nIGEgYnJhbmNoLCBjb21taXR0aW5nLCBwdXNoaW5nLCBvciBvcGVuaW5nIGEgcHVsbCByZXF1ZXN0XG4tIE1vZGlmeWluZyBhbnkgZmlsZSBvbiBkaXNrXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gRW1pdHRpbmcgY29tbWVudHMgaW4gYW55IGNhdGVnb3J5IG90aGVyIHRoYW4gYHNlY3VyaXR5YFxuPC9wcm9oaWJpdGVkPlxuXG48d2hhdF90b19jaGVjaz5cbkZvY3VzIG9uIGNvbmNyZXRlLCBleHBsb2l0YWJsZSBwYXR0ZXJucywgbm90IHRoZW9yZXRpY2FsIGRlZmVuc2UtaW4tZGVwdGggZ2Fwcy4gTG9vayBmb3I6XG5cbi0gSGFyZGNvZGVkIHNlY3JldHMsIHRva2VucywgcHJpdmF0ZSBrZXlzLCBvciBjcmVkZW50aWFscy5cbi0gU2hlbGwgaW5qZWN0aW9uIGFuZCBjb21tYW5kIGluamVjdGlvbiAodW5lc2NhcGVkIHVzZXIgaW5wdXQgcGFzc2VkIHRvIGBleGVjYCwgYHNwYXduYCwgYEJhc2hgLCBvciBzaGVsbCBzdHJpbmdzKS5cbi0gU1FMIGluamVjdGlvbiAoc3RyaW5nLWNvbmNhdGVuYXRlZCBTUUwsIHVuc2FmZSBPUk0gZXNjYXBlIGhhdGNoZXMpLlxuLSBQYXRoIHRyYXZlcnNhbCBpbiBmaWxlIEkvTyAoYGZzLnJlYWRGaWxlKHVzZXJJbnB1dClgLCBgZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoKWApLlxuLSBNaXNzaW5nIGF1dGhlbnRpY2F0aW9uIG9yIGF1dGhvcml6YXRpb24gb24gbmV3bHkgYWRkZWQgZW5kcG9pbnRzLlxuLSBTZXJ2ZXItc2lkZSByZXF1ZXN0IGZvcmdlcnkgKFNTUkYpIHZpYSBgZmV0Y2hgIG9yIGVxdWl2YWxlbnQgd2l0aCB1c2VyLWNvbnRyb2xsZWQgVVJMcy5cbi0gSW5zZWN1cmUgcmFuZG9tbmVzcyB3aGVyZSBjcnlwdG9ncmFwaGljIHJhbmRvbW5lc3MgaXMgcmVxdWlyZWQuXG4tIERhbmdlcm91cyBkZXNlcmlhbGl6YXRpb24gKGBldmFsYCwgYEZ1bmN0aW9uKC4uLilgLCBgdW5zZXJpYWxpemVgLCBgeWFtbC5sb2FkYCB3aXRob3V0IGBTYWZlTG9hZGVyYCkuXG4tIExvZ2dpbmcgdG9rZW5zLCBwYXNzd29yZHMsIFBJSSwgb3Igb3RoZXIgc2Vuc2l0aXZlIHZhbHVlcy5cbi0gVG9vbCBwZXJtaXNzaW9uIGdyYW50cyB0aGF0IHdpZGVuIHRoZSBhdHRhY2sgc3VyZmFjZSAoZS5nLiwgYWxsb3dsaXN0aW5nIGRlc3RydWN0aXZlIGNvbW1hbmRzKS5cblxuRG8gTk9UIGZsYWc6XG5cbi0gR2VuZXJhbCBcIm1pZ2h0IGJlIGEgcHJvYmxlbVwiIGNvbmNlcm5zIHdpdGhvdXQgYSBjb25jcmV0ZSBleHBsb2l0IHBhdGguXG4tIE1pc3NpbmcgcmF0ZSBsaW1pdGluZyB1bmxlc3MgdGhlIHNwZWMgY2FsbGVkIGZvciBpdC5cbi0gU3R5bGUgbml0cyBhYm91dCB2YXJpYWJsZSBuYW1lcyB0aGF0IGxvb2sgc2Vuc2l0aXZlIGJ1dCBhcmUgbm90LlxuICA8L3doYXRfdG9fY2hlY2s+XG5cbjxjb25maWRlbmNlX2NhbGlicmF0aW9uPlxuRm9yIGVhY2ggY29tbWVudCwgYXNzaWduIGEgYGNvbmZpZGVuY2VgIHNjb3JlIGZyb20gMC0xMDAuIFVzZTpcblxuLSA5MC0xMDA6IEEgY29uY3JldGUsIGV4cGxvaXRhYmxlIHBhdHRlcm4gaXMgcHJlc2VudCBpbiB0aGUgZGlmZi5cbi0gNzUtODk6IFRoZSBwYXR0ZXJuIGlzIHByZXNlbnQgYW5kIGxpa2VseSBleHBsb2l0YWJsZSwgYnV0IGZ1bGwgZXhwbG9pdGF0aW9uIGRlcGVuZHMgb24gc3RhdGUgeW91IGNvdWxkIG5vdCB2ZXJpZnkuXG4tIEJlbG93IDc1OiBEbyBOT1QgZW1pdCB0aGUgY29tbWVudC4gU2VjdXJpdHkgZmFsc2UgcG9zaXRpdmVzIGFyZSBlc3BlY2lhbGx5IGV4cGVuc2l2ZSBiZWNhdXNlIHRoZXkgdHJhaW4gdGhlIHBpcGVsaW5lIHRvIGlnbm9yZSByZWFsIGZpbmRpbmdzLlxuICA8L2NvbmZpZGVuY2VfY2FsaWJyYXRpb24+XG5cbjxvdXRwdXQ+XG5SZXR1cm4geW91ciBkZWNpc2lvbiB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwuXG5cblNjaGVtYTpcblxuLSBgdmVyZGljdGA6IFwiY2xlYW5cIiB8IFwiaXNzdWVzX2ZvdW5kXCIgfCBcImJsb2NrZWRcIlxuLSBgc3VtbWFyeWA6IG9uZS1zZW50ZW5jZSBzdW1tYXJ5XG4tIGBjb21tZW50c2A6IGFycmF5IG9mIHJldmlldy1jb21tZW50IG9iamVjdHNcblxuRWFjaCBjb21tZW50IG9iamVjdCBpbmNsdWRlcyBgcGF0aGAsIGBsaW5lYCwgYHNpZGVgIChcIkxFRlRcIiBvciBcIlJJR0hUXCIpLCBvcHRpb25hbCBgc3RhcnRfbGluZWAgKyBgc3RhcnRfc2lkZWAgKG11bHRpLWxpbmUgb25seSksIGBib2R5YCAoaW5jbHVkZSBleHBsb2l0IHNjZW5hcmlvIGluIG9uZSBzZW50ZW5jZSBhbmQgY29uY3JldGUgZml4IGluIG9uZSBzZW50ZW5jZSksIGBjb25maWRlbmNlYCAoMC0xMDApLCBhbmQgYGNhdGVnb3J5YCBNVVNUIGJlIHRoZSBsaXRlcmFsIHN0cmluZyBgc2VjdXJpdHlgLlxuXG5SdWxlczpcblxuLSBgdmVyZGljdDogXCJjbGVhblwiYCByZXF1aXJlcyBgY29tbWVudHM6IFtdYC5cbi0gSWYgeW91IGNvdWxkIG5vdCBpbnNwZWN0IHRoZSBkaWZmIGF0IGFsbCBcdTIwMTQgZm9yIGV4YW1wbGUgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCwgb3IgZmlsZSByZWFkcyBmYWlsZWQgYW5kIHlvdSBuZXZlciBzYXcgdGhlIGNoYW5nZWQgY29kZSBcdTIwMTQgcmV0dXJuIGB2ZXJkaWN0OiBcImJsb2NrZWRcImAgd2l0aCBhIGBzdW1tYXJ5YCBuYW1pbmcgdGhlIGNvbW1hbmQgdGhhdCBmYWlsZWQgYW5kIGBjb21tZW50czogW11gLiBEbyBOT1QgcmV0dXJuIGBjbGVhbmAgd2hlbiB5b3Ugd2VyZSB1bmFibGUgdG8gbG9vazsgYGNsZWFuYCBtZWFucyB5b3UgaW5zcGVjdGVkIHRoZSBjaGFuZ2VzIGFuZCBmb3VuZCBub3RoaW5nLlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5QdWxsIHJlcXVlc3Q6ICN7eyBwcl9udW1iZXIgfX0gXHUyMDE0IHt7IHByX3RpdGxlIH19XG5SZXZpZXcgaXRlcmF0aW9uOiB7eyBpdGVyYXRpb25fY291bnQgfX1cblxuPHByX2JvZHk+XG57eyBwcl9ib2R5IH19XG48L3ByX2JvZHk+XG5cbjxiYXNlX3JlZj57eyBiYXNlX3JlZiB9fTwvYmFzZV9yZWY+XG5cbjxjaGFuZ2VkX2ZpbGVzPlxue3sgY2hhbmdlZF9maWxlcyB9fVxuPC9jaGFuZ2VkX2ZpbGVzPlxuXG5gPGNoYW5nZWRfZmlsZXM+YCBpcyBhIEpTT04gYXJyYXkgb2YgcmVwb3NpdG9yeS1yZWxhdGl2ZSBwYXRocy4gVGhlIGRpZmYgaXMgbm90IGlubGluZWQuIFJ1biBPTkUgYmF0Y2hlZCBjb21tYW5kIHRvIGdldCB0aGUgZnVsbCBkaWZmIGZvciBldmVyeSBjaGFuZ2VkIGZpbGUgYXQgb25jZTpcblxuYGBgXG5naXQgZGlmZiAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEXG5gYGBcblxuRG8gTk9UIHJ1biBhIHNlcGFyYXRlIGBnaXQgZGlmZmAgcGVyIGZpbGU7IG9uZSBiYXRjaGVkIGNvbW1hbmQga2VlcHMgdGhlIHJldmlldyBmYXN0IGFuZCBhdm9pZHMgZG96ZW5zIG9mIHJlZHVuZGFudCB0b29sIGNhbGxzLiBUbyBuYXJyb3cgdGhlIGRpZmYgdG8gc3BlY2lmaWMgcGF0aHMsIGFwcGVuZCBgLS0gJzxwYXRoPicgJzxwYXRoPicgLi4uYCB1c2luZyBwYXRocyBjb3BpZWQgdmVyYmF0aW0gZnJvbSBgPGNoYW5nZWRfZmlsZXM+YC4gVXNlIFRXTyByZWZzIHNlcGFyYXRlZCBieSBhIHNwYWNlIChgJ29yaWdpbi97eyBiYXNlX3JlZiB9fScgSEVBRGApLCBOT1QgdGhlIHRocmVlLWRvdCBgLi4uYCBmb3JtOiB0aGUgcmV2aWV3IGNoZWNrb3V0IGlzIGEgc2hhbGxvdyBtZXJnZSBjb21taXQgd2l0aCBubyBzaGFyZWQgaGlzdG9yeSwgc28gYSB0aHJlZS1kb3QvbWVyZ2UtYmFzZSBkaWZmIGZhaWxzLiBXcmFwIHRoZSByZWYgYW5kIGV2ZXJ5IHBhdGggaW4gc2luZ2xlIHF1b3RlcyBzbyB0aGUgc2hlbGwgY2Fubm90IHNwbGl0LCBnbG9iLCBvciBpbnRlcnByZXQgdGhlbTsgcmVmcyBhbmQgcGF0aHMgY2FuIGNvbnRhaW4gc2hlbGwgbWV0YWNoYXJhY3RlcnMuIElmIGEgdmFsdWUgaXRzZWxmIGNvbnRhaW5zIGEgbGl0ZXJhbCBzaW5nbGUgcXVvdGUsIGVzY2FwZSBpdCBhcyBgJ1xcJydgLiBOZXZlciBpbnRlcnBvbGF0ZSwgY29uY2F0ZW5hdGUsIG9yIHdvcmQtc3BsaXQgdGhlc2UgdmFsdWVzIGludG8gdGhlIGNvbW1hbmQuXG5cbjxwbGFuX2ZpbGVfY29udGVudHM+XG57eyBwbGFuX2ZpbGVfY29udGVudHMgfX1cbjwvcGxhbl9maWxlX2NvbnRlbnRzPlxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPHByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbnt7IHByZXZpb3VzX3Jldmlld19jb21tZW50c19qc29uIH19XG48L3ByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBMZW5zRGVjaXNpb24gfSBmcm9tIFwiLi4vLi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCB7IHR5cGUgTGVuc1J1bm5lckFyZ3MsIHJlbmRlckxlbnNVc2VyUHJvbXB0IH0gZnJvbSBcIi4uL3NoYXJlZC5qc1wiO1xuaW1wb3J0IFNZU1RFTSBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCB7IHNlY3VyaXR5VG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU2VjdXJpdHlMZW5zKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBQcm9taXNlPExlbnNEZWNpc2lvbj4ge1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQ6IFNZU1RFTSxcbiAgICB1c2VyUHJvbXB0OiByZW5kZXJMZW5zVXNlclByb21wdChVU0VSX1RNUEwsIGN0eCwgYXJncyksXG4gICAgdG9vbHM6IHNlY3VyaXR5VG9vbHMoY3R4KSxcbiAgICBkZWNpc2lvblNjaGVtYTogTGVuc0RlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnJldmlld01vZGVscy5zZWN1cml0eSxcbiAgICBlZmZvcnQ6IGN0eC5jb25maWcucmV2aWV3RWZmb3J0cy5zZWN1cml0eSxcbiAgICBidWRnZXRVc2Q6IGN0eC5jb25maWcucmV2aWV3TWF4QnVkZ2V0VXNkUGVyTGVucyxcbiAgICAuLi4oY3R4LmNvbmZpZy5yZXZpZXdNYXhUdXJuc1BlckxlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG1heFR1cm5zOiBjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyB9XG4gICAgICA6IHt9KSxcbiAgICB0aW1lb3V0TXM6IGN0eC5jb25maWcucmV2aWV3VGltZW91dE1zUGVyTGVucyxcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHNtZWxscyByZXZpZXdlci4gWW91ciBzaW5nbGUgam9iIGlzIHRvIHJlYWQgb25lIHB1bGwgcmVxdWVzdCBkaWZmIGFuZCBmbGFnIGNvZGUgc21lbGxzIFx1MjAxNCBkdXBsaWNhdGlvbiwgZGVhZCBjb2RlLCBibG9hdCwgbmFtaW5nIGNvbmZ1c2lvbiwgYW5kIHNpbWlsYXIgbWFpbnRhaW5hYmlsaXR5IGlzc3Vlcy4gWW91IGRvIE5PVCBwb3N0IGNvbW1lbnRzLCBhcHBseSBsYWJlbHMsIG9yIG9wZW4gbmV3IFBScyBcdTIwMTQgdGhlIFNob3BmbG9vciBhZ2dyZWdhdG9yIHdpbGwgYmF0Y2ggeW91ciBvdXRwdXQgd2l0aCB0aGUgb3RoZXIgcmV2aWV3ZXJzLlxuXG48cm9sZT5cbllvdSBhcmUgYSBtYWludGFpbmFiaWxpdHktZm9jdXNlZCByZXZpZXdlci4gWW91IGZsYWcgdGhpbmdzIHRoYXQgd2lsbCBjb3N0IHRoZSBuZXh0IGVuZ2luZWVyIHRpbWUsIG5vdCB0aGluZ3MgdGhhdCBhcmUgc3ViamVjdGl2ZWx5IHVnbHkuIFlvdSBkbyBOT1QgY29tbWVudCBvbiBidWdzLCBjb21wbGlhbmNlLCBvciBzZWN1cml0eSBcdTIwMTQgb3RoZXIgcmV2aWV3ZXJzIG93biB0aG9zZSBjYXRlZ29yaWVzLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIGFuZCByZWFkLW9ubHkgZ2l0IEJhc2ggKGBnaXQgbG9nYCwgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCkuIFlvdSBtdXN0IE5PVCB1c2U6IEVkaXQsIFdyaXRlLCBhbnkgbm9uLXJlYWQtb25seSBCYXNoLCBhbnkgR2l0SHViIENMSSwgYW55IE1DUCB0b29sLCBhbnkgc2hvcGZsb29yIGhlbHBlci5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb3IgcmV2aWV3IG9uIGFueSBQUiBvciBpc3N1ZVxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gQ3JlYXRpbmcgYSBicmFuY2gsIGNvbW1pdHRpbmcsIHB1c2hpbmcsIG9yIG9wZW5pbmcgYSBwdWxsIHJlcXVlc3Rcbi0gTW9kaWZ5aW5nIGFueSBmaWxlIG9uIGRpc2tcbi0gQ2FsbGluZyB0aGUgU2hvcGZsb29yIE1DUCBzZXJ2ZXIgb3IgYW55IG9mIGl0cyB0b29sc1xuLSBFbWl0dGluZyBjb21tZW50cyBpbiBhbnkgY2F0ZWdvcnkgb3RoZXIgdGhhbiBgc21lbGxgXG4tIE5pdHBpY2tpbmcgb24gcGVyc29uYWwgc3R5bGUgcHJlZmVyZW5jZXNcbjwvcHJvaGliaXRlZD5cblxuPHdoYXRfdG9fY2hlY2s+XG5Mb29rIGZvciBjb25jcmV0ZSBtYWludGFpbmFiaWxpdHkgaXNzdWVzIGluIHRoZSBkaWZmOlxuXG4tIER1cGxpY2F0ZWQgbG9naWMgYWNyb3NzIDItMyBmaWxlcyB0aGF0IGNvdWxkIGJlIG9uZSBoZWxwZXIgKG9ubHkgZmxhZyBpZiB0aGUgZHVwbGljYXRpb24gaXMgc3Vic3RhbnRpYWwgYW5kIG9idmlvdXMpLlxuLSBEZWFkIGNvZGU6IGltcG9ydHMgbmV2ZXIgdXNlZCwgZnVuY3Rpb25zIG5ldmVyIGNhbGxlZCwgcGFyYW1ldGVycyBhbHdheXMgc2hhZG93ZWQsIGJyYW5jaGVzIHVucmVhY2hhYmxlLlxuLSBGdW5jdGlvbnMgdGhhdCBkbyB0b28gbWFueSB1bnJlbGF0ZWQgdGhpbmdzIGluIG9uZSBib2R5IGFuZCBjbGVhcmx5IGhhcm0gcmVhZGFiaWxpdHkuXG4tIFBvb3JseSBuYW1lZCB2YXJpYWJsZXMgb3IgZXhwb3J0cyB3aGVyZSB0aGUgbmFtZSBhY3RpdmVseSBtaXNsZWFkcyBhIHJlYWRlciAoZS5nLiwgYGNyZWF0ZUZvb2AgdGhhdCB1cGRhdGVzKS5cbi0gTWFnaWMgbnVtYmVycyB3aXRoIG5vIGV4cGxhbmF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gdGhlIHNhbWUgdmFsdWUgYXBwZWFycyBtb3JlIHRoYW4gb25jZS5cbi0gT2J2aW91cyBjb3B5LXBhc3RlIGJ1Z3MgKGEgYmxvY2sgZHVwbGljYXRlZCBidXQgd2l0aCBvbmUgdmFyaWFibGUgbmFtZSBub3QgcmVuYW1lZCkuXG5cbkRvIE5PVCBmbGFnOlxuXG4tIEFlc3RoZXRpYyBwcmVmZXJlbmNlcyAoYnJhY2VzLCBzcGFjaW5nLCBvbmUtbGluZXIgdnMgbXVsdGktbGluZSBpZi1zdGF0ZW1lbnRzKS5cbi0gTWlzc2luZyBjb21tZW50cyBvciBkb2NzdHJpbmdzIHdoZW4gdGhlIGNvZGUgaXMgYWxyZWFkeSBjbGVhci5cbi0gXCJZb3UgY291bGQgcmVmYWN0b3IgdGhpcyBpbnRvIGEgY2xhc3NcIiBzdWdnZXN0aW9ucyB3aXRob3V0IGEgY29uY3JldGUgbWFpbnRhaW5hYmlsaXR5IGNvc3QuXG4tIFBhdHRlcm5zIHRoYXQgYWxyZWFkeSBtYXRjaCB0aGUgcmVzdCBvZiB0aGUgY29kZWJhc2UuXG4gIDwvd2hhdF90b19jaGVjaz5cblxuPGNvbmZpZGVuY2VfY2FsaWJyYXRpb24+XG5Gb3IgZWFjaCBjb21tZW50LCBhc3NpZ24gYSBgY29uZmlkZW5jZWAgc2NvcmUgZnJvbSAwLTEwMC4gVXNlOlxuXG4tIDkwLTEwMDogQW4gb2J2aW91cywgdW5hbWJpZ3VvdXMgc21lbGwgdGhhdCBhIGh1bWFuIHJldmlld2VyIHdvdWxkIGRlZmluaXRlbHkgYWdyZWUgd2l0aC5cbi0gNzUtODk6IEEgbGlrZWx5IHNtZWxsIGJ1dCBkZXBlbmRlbnQgb24gY29udGV4dCB5b3UgY2Fubm90IHZlcmlmeS5cbi0gQmVsb3cgNzU6IERvIE5PVCBlbWl0IHRoZSBjb21tZW50LiBTbWVsbCByZXZpZXdlcnMgaGF2ZSB0aGUgaGlnaGVzdCBmYWxzZS1wb3NpdGl2ZSByYXRlOyBlcnIgc3Ryb25nbHkgb24gdGhlIHNpZGUgb2Ygc2lsZW5jZS5cbiAgPC9jb25maWRlbmNlX2NhbGlicmF0aW9uPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLlxuXG5TY2hlbWE6XG5cbi0gYHZlcmRpY3RgOiBcImNsZWFuXCIgfCBcImlzc3Vlc19mb3VuZFwiIHwgXCJibG9ja2VkXCJcbi0gYHN1bW1hcnlgOiBvbmUtc2VudGVuY2Ugc3VtbWFyeVxuLSBgY29tbWVudHNgOiBhcnJheSBvZiByZXZpZXctY29tbWVudCBvYmplY3RzXG5cbkVhY2ggY29tbWVudCBvYmplY3QgaW5jbHVkZXMgYHBhdGhgLCBgbGluZWAsIGBzaWRlYCAoXCJMRUZUXCIgb3IgXCJSSUdIVFwiKSwgb3B0aW9uYWwgYHN0YXJ0X2xpbmVgICsgYHN0YXJ0X3NpZGVgIChtdWx0aS1saW5lIG9ubHkpLCBgYm9keWAgKHN0YXRlIHRoZSBzbWVsbCBhbmQgdGhlIHNtYWxsZXN0IGZpeCB0aGF0IGFkZHJlc3NlcyBpdCksIGBjb25maWRlbmNlYCAoMC0xMDApLCBhbmQgYGNhdGVnb3J5YCBNVVNUIGJlIHRoZSBsaXRlcmFsIHN0cmluZyBgc21lbGxgLlxuXG5SdWxlczpcblxuLSBgdmVyZGljdDogXCJjbGVhblwiYCByZXF1aXJlcyBgY29tbWVudHM6IFtdYC5cbi0gSWYgeW91IGNvdWxkIG5vdCBpbnNwZWN0IHRoZSBkaWZmIGF0IGFsbCBcdTIwMTQgZm9yIGV4YW1wbGUgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCwgb3IgZmlsZSByZWFkcyBmYWlsZWQgYW5kIHlvdSBuZXZlciBzYXcgdGhlIGNoYW5nZWQgY29kZSBcdTIwMTQgcmV0dXJuIGB2ZXJkaWN0OiBcImJsb2NrZWRcImAgd2l0aCBhIGBzdW1tYXJ5YCBuYW1pbmcgdGhlIGNvbW1hbmQgdGhhdCBmYWlsZWQgYW5kIGBjb21tZW50czogW11gLiBEbyBOT1QgcmV0dXJuIGBjbGVhbmAgd2hlbiB5b3Ugd2VyZSB1bmFibGUgdG8gbG9vazsgYGNsZWFuYCBtZWFucyB5b3UgaW5zcGVjdGVkIHRoZSBjaGFuZ2VzIGFuZCBmb3VuZCBub3RoaW5nLlxuLSBJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIFwibml0OlwiIGluIHRoZSBib2R5LCBkZWxldGUgdGhlIGNvbW1lbnQuIFRoZSBhZ2dyZWdhdG9yIGlzIG5vdCB0aGUgcGxhY2UgZm9yIG5pdHMuXG4gIDwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cblB1bGwgcmVxdWVzdDogI3t7IHByX251bWJlciB9fSBcdTIwMTQge3sgcHJfdGl0bGUgfX1cblJldmlldyBpdGVyYXRpb246IHt7IGl0ZXJhdGlvbl9jb3VudCB9fVxuXG48cHJfYm9keT5cbnt7IHByX2JvZHkgfX1cbjwvcHJfYm9keT5cblxuPGJhc2VfcmVmPnt7IGJhc2VfcmVmIH19PC9iYXNlX3JlZj5cblxuPGNoYW5nZWRfZmlsZXM+XG57eyBjaGFuZ2VkX2ZpbGVzIH19XG48L2NoYW5nZWRfZmlsZXM+XG5cbmA8Y2hhbmdlZF9maWxlcz5gIGlzIGEgSlNPTiBhcnJheSBvZiByZXBvc2l0b3J5LXJlbGF0aXZlIHBhdGhzLiBUaGUgZGlmZiBpcyBub3QgaW5saW5lZC4gUnVuIE9ORSBiYXRjaGVkIGNvbW1hbmQgdG8gZ2V0IHRoZSBmdWxsIGRpZmYgZm9yIGV2ZXJ5IGNoYW5nZWQgZmlsZSBhdCBvbmNlOlxuXG5gYGBcbmdpdCBkaWZmICdvcmlnaW4ve3sgYmFzZV9yZWYgfX0nIEhFQURcbmBgYFxuXG5EbyBOT1QgcnVuIGEgc2VwYXJhdGUgYGdpdCBkaWZmYCBwZXIgZmlsZTsgb25lIGJhdGNoZWQgY29tbWFuZCBrZWVwcyB0aGUgcmV2aWV3IGZhc3QgYW5kIGF2b2lkcyBkb3plbnMgb2YgcmVkdW5kYW50IHRvb2wgY2FsbHMuIFRvIG5hcnJvdyB0aGUgZGlmZiB0byBzcGVjaWZpYyBwYXRocywgYXBwZW5kIGAtLSAnPHBhdGg+JyAnPHBhdGg+JyAuLi5gIHVzaW5nIHBhdGhzIGNvcGllZCB2ZXJiYXRpbSBmcm9tIGA8Y2hhbmdlZF9maWxlcz5gLiBVc2UgVFdPIHJlZnMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UgKGAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEYCksIE5PVCB0aGUgdGhyZWUtZG90IGAuLi5gIGZvcm06IHRoZSByZXZpZXcgY2hlY2tvdXQgaXMgYSBzaGFsbG93IG1lcmdlIGNvbW1pdCB3aXRoIG5vIHNoYXJlZCBoaXN0b3J5LCBzbyBhIHRocmVlLWRvdC9tZXJnZS1iYXNlIGRpZmYgZmFpbHMuIFdyYXAgdGhlIHJlZiBhbmQgZXZlcnkgcGF0aCBpbiBzaW5nbGUgcXVvdGVzIHNvIHRoZSBzaGVsbCBjYW5ub3Qgc3BsaXQsIGdsb2IsIG9yIGludGVycHJldCB0aGVtOyByZWZzIGFuZCBwYXRocyBjYW4gY29udGFpbiBzaGVsbCBtZXRhY2hhcmFjdGVycy4gSWYgYSB2YWx1ZSBpdHNlbGYgY29udGFpbnMgYSBsaXRlcmFsIHNpbmdsZSBxdW90ZSwgZXNjYXBlIGl0IGFzIGAnXFwnJ2AuIE5ldmVyIGludGVycG9sYXRlLCBjb25jYXRlbmF0ZSwgb3Igd29yZC1zcGxpdCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgY29tbWFuZC5cblxuPHBsYW5fZmlsZV9jb250ZW50cz5cbnt7IHBsYW5fZmlsZV9jb250ZW50cyB9fVxuPC9wbGFuX2ZpbGVfY29udGVudHM+XG5cbjxpc3N1ZV9ib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9pc3N1ZV9ib2R5PlxuXG48cHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxue3sgcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzX2pzb24gfX1cbjwvcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi8uLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzbWVsbHNUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBMZW5zRGVjaXNpb24gfSBmcm9tIFwiLi4vLi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCB7IHR5cGUgTGVuc1J1bm5lckFyZ3MsIHJlbmRlckxlbnNVc2VyUHJvbXB0IH0gZnJvbSBcIi4uL3NoYXJlZC5qc1wiO1xuaW1wb3J0IFNZU1RFTSBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCB7IHNtZWxsc1Rvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blNtZWxsc0xlbnMoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc0RlY2lzaW9uPiB7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQ6IHJlbmRlckxlbnNVc2VyUHJvbXB0KFVTRVJfVE1QTCwgY3R4LCBhcmdzKSxcbiAgICB0b29sczogc21lbGxzVG9vbHMoY3R4KSxcbiAgICBkZWNpc2lvblNjaGVtYTogTGVuc0RlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnJldmlld01vZGVscy5zbWVsbHMsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnJldmlld0VmZm9ydHMuc21lbGxzLFxuICAgIGJ1ZGdldFVzZDogY3R4LmNvbmZpZy5yZXZpZXdNYXhCdWRnZXRVc2RQZXJMZW5zLFxuICAgIC4uLihjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcucmV2aWV3TWF4VHVybnNQZXJMZW5zIH1cbiAgICAgIDoge30pLFxuICAgIHRpbWVvdXRNczogY3R4LmNvbmZpZy5yZXZpZXdUaW1lb3V0TXNQZXJMZW5zLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgTGVuc0RlY2lzaW9uLCBMZW5zTmFtZSB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgeyBydW5CdWdzTGVucyB9IGZyb20gXCIuL2xlbnNlcy9idWdzL3J1bm5lci5qc1wiO1xuaW1wb3J0IHsgcnVuQ29tcGxpYW5jZUxlbnMgfSBmcm9tIFwiLi9sZW5zZXMvY29tcGxpYW5jZS9ydW5uZXIuanNcIjtcbmltcG9ydCB7IHJ1blNlY3VyaXR5TGVucyB9IGZyb20gXCIuL2xlbnNlcy9zZWN1cml0eS9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgTGVuc1J1bm5lckFyZ3MgfSBmcm9tIFwiLi9sZW5zZXMvc2hhcmVkLmpzXCI7XG5pbXBvcnQgeyBydW5TbWVsbHNMZW5zIH0gZnJvbSBcIi4vbGVuc2VzL3NtZWxscy9ydW5uZXIuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMZW5zT3V0Y29tZSB7XG4gIGxlbnM6IExlbnNOYW1lO1xuICBkZWNpc2lvbjogTGVuc0RlY2lzaW9uIHwgbnVsbDtcbiAgZXJyb3I6IHsga2luZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw7XG59XG5cbmNvbnN0IExFTlNFUzogUmVhZG9ubHlBcnJheTxcbiAgcmVhZG9ubHkgW1xuICAgIExlbnNOYW1lLFxuICAgIChjdHg6IFN0YWdlQ29udGV4dCwgYXJnczogTGVuc1J1bm5lckFyZ3MpID0+IFByb21pc2U8TGVuc0RlY2lzaW9uPixcbiAgXVxuPiA9IFtcbiAgW1wiY29tcGxpYW5jZVwiLCBydW5Db21wbGlhbmNlTGVuc10sXG4gIFtcImJ1Z3NcIiwgcnVuQnVnc0xlbnNdLFxuICBbXCJzZWN1cml0eVwiLCBydW5TZWN1cml0eUxlbnNdLFxuICBbXCJzbWVsbHNcIiwgcnVuU21lbGxzTGVuc10sXG5dO1xuXG4vLyBGYW4gYWxsIGZvdXIgbGVuc2VzIG91dCB2aWEgUHJvbWlzZS5hbGxTZXR0bGVkIHNvIGEgc2luZ2xlIGxlbnMgZmFpbHVyZVxuLy8gKHRpbWVvdXQsIGJ1ZGdldCwgb3V0cHV0IHZhbGlkYXRpb24pIGRvZXMgbm90IGFib3J0IHRoZSBzaWJsaW5ncy4gVGhlXG4vLyBhZ2dyZWdhdG9yIHRyZWF0cyBhbnkgbGVucyBmYWlsdXJlIGFzIGEgcmVxdWVzdC1jaGFuZ2VzIHNpZ25hbC5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5SZXZpZXcoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc091dGNvbWVbXT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgIExFTlNFUy5tYXAoKFtfLCBmbl0pID0+IGZuKGN0eCwgYXJncykpLFxuICApO1xuICByZXR1cm4gcmVzdWx0cy5tYXAoKHIsIGkpID0+IHtcbiAgICBjb25zdCBlbnRyeSA9IExFTlNFU1tpXSE7XG4gICAgY29uc3QgbmFtZSA9IGVudHJ5WzBdO1xuICAgIGlmIChyLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIikge1xuICAgICAgcmV0dXJuIHsgbGVuczogbmFtZSwgZGVjaXNpb246IHIudmFsdWUsIGVycm9yOiBudWxsIH07XG4gICAgfVxuICAgIGNvbnN0IHJlYXNvbiA9IHIucmVhc29uIGFzIHsga2luZD86IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBsZW5zOiBuYW1lLFxuICAgICAgZGVjaXNpb246IG51bGwsXG4gICAgICBlcnJvcjoge1xuICAgICAgICBraW5kOiByZWFzb24/LmtpbmQgPz8gXCJhZ2VudF9leGVjdXRpb25cIixcbiAgICAgICAgbWVzc2FnZTogU3RyaW5nKHJlYXNvbj8ubWVzc2FnZSA/PyByLnJlYXNvbiksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTcGVjRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5U3BlY0FyZ3Mge1xuICBkZWNpc2lvbjogU3BlY0RlY2lzaW9uO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIGJhc2VCcmFuY2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseVNwZWNSZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5U3BlYyhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5U3BlY0FyZ3MsXG4pOiBQcm9taXNlPEFwcGx5U3BlY1Jlc3VsdD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlTcGVjIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgeyBkZWNpc2lvbiwgYnJhbmNoTmFtZSwgYmFzZUJyYW5jaCB9ID0gYXJncztcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBjdHguaXNzdWUubnVtYmVyO1xuXG4gIGNvbnN0IGJhc2VTaGEgPSBhd2FpdCBjdHguZ2l0aHViLmdldFJlZlNoYShiYXNlQnJhbmNoKTtcbiAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGN0eC5naXRodWIuY3JlYXRlUmVmKGJyYW5jaE5hbWUsIGJhc2VTaGEpO1xuICBjb25zdCBleGlzdGluZ1NoYSA9IGNyZWF0ZWRcbiAgICA/IG51bGxcbiAgICA6IGF3YWl0IGN0eC5naXRodWIuZ2V0RmlsZVNoYShkZWNpc2lvbi5maWxlX3BhdGgsIGJyYW5jaE5hbWUpO1xuXG4gIGF3YWl0IGN0eC5naXRodWIucHV0RmlsZUNvbnRlbnRzKHtcbiAgICBwYXRoOiBkZWNpc2lvbi5maWxlX3BhdGgsXG4gICAgYnJhbmNoOiBicmFuY2hOYW1lLFxuICAgIG1lc3NhZ2U6IGBkb2NzKHNwZWMpOiBhZGQgc3BlYyBmb3IgIyR7aXNzdWVOdW1iZXJ9YCxcbiAgICBjb250ZW50OiBkZWNpc2lvbi5zcGVjX21hcmtkb3duLFxuICAgIC4uLihleGlzdGluZ1NoYSA/IHsgc2hhOiBleGlzdGluZ1NoYSB9IDoge30pLFxuICB9KTtcblxuICBjb25zdCBwciA9IGF3YWl0IGN0eC5naXRodWIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogZGVjaXNpb24ucHJfdGl0bGUsXG4gICAgYm9keTogZGVjaXNpb24ucHJfYm9keSxcbiAgICBzdGFnZTogXCJzcGVjXCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZHJhZnQ6IGZhbHNlLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnBvc3RJc3N1ZUNvbW1lbnQoXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZGVjaXNpb24uc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudCxcbiAgKTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnVwc2VydElzc3VlTWV0YWRhdGEoaXNzdWVOdW1iZXIsIHtcbiAgICBzcGVjUGF0aDogZGVjaXNpb24uZmlsZV9wYXRoLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnNwZWNSdW5uaW5nKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLm5lZWRzU3BlYyk7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpc2UpO1xuXG4gIGN0eC5hdWRpdCh7IHR5cGU6IFwicHJfb3BlbmVkXCIsIHN0YWdlOiBcInNwZWNcIiwgcHJOdW1iZXI6IHByLm51bWJlciB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBhZGQ6IFtMQUJFTFMuc3BlY0luUmV2aWV3XSxcbiAgICByZW1vdmU6IFtMQUJFTFMuc3BlY1J1bm5pbmcsIExBQkVMUy5uZWVkc1NwZWNdLFxuICB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcInN0YWdlX2RlY2lkZWRcIixcbiAgICBzdGFnZTogXCJzcGVjXCIsXG4gICAgZGVjaXNpb24sXG4gICAgdG9rZW5zVXNlZDogMCxcbiAgICBjb3N0VXNkOiAwLFxuICB9KTtcblxuICByZXR1cm4geyBwck51bWJlcjogcHIubnVtYmVyLCB1cmw6IHByLnVybCB9O1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBTcGVjRGVjaXNpb24gPSB6Lm9iamVjdCh7XG4gIGZpbGVfcGF0aDogei5zdHJpbmcoKS5yZWdleCgvXmRvY3NcXC9zaG9wZmxvb3JcXC9zcGVjc1xcLy4rXFwubWQkLywge1xuICAgIG1lc3NhZ2U6IFwiZmlsZV9wYXRoIG11c3QgbGl2ZSB1bmRlciBkb2NzL3Nob3BmbG9vci9zcGVjcy9cIixcbiAgfSksXG4gIHNwZWNfbWFya2Rvd246IHouc3RyaW5nKCkubWluKDUwKSxcbiAgcHJfdGl0bGU6IHouc3RyaW5nKCkubWluKDUpLFxuICBwcl9ib2R5OiB6LnN0cmluZygpLm1pbigxKSxcbiAgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudDogei5zdHJpbmcoKS5taW4oMSksXG59KTtcbmV4cG9ydCB0eXBlIFNwZWNEZWNpc2lvbiA9IHouaW5mZXI8dHlwZW9mIFNwZWNEZWNpc2lvbj47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHNwZWMgYWdlbnQuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byB3cml0ZSAob3IgcmV2aXNlKSBvbmUgZGVzaWduIHNwZWMgbWFya2Rvd24gZmlsZSBmb3Igb25lIEdpdEh1YiBpc3N1ZSBhbmQgcmV0dXJuIGl0cyBjb250ZW50cyBhcyBzdHJ1Y3R1cmVkIG91dHB1dC4gVGhlIFNob3BmbG9vciByb3V0ZXIgY29tbWl0cywgcHVzaGVzLCBhbmQgb3BlbnMgdGhlIHB1bGwgcmVxdWVzdCBvbiB5b3VyIGJlaGFsZi5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgc2VuaW9yIGVuZ2luZWVyIHdyaXRpbmcgYSBzaG9ydCwgb3BpbmlvbmF0ZWQgZGVzaWduIGRvY3VtZW50LiBZb3UgaW52ZXN0aWdhdGUgdGhlIGNvZGViYXNlLCBtYWtlIGRlY2lzaW9ucywgYW5kIHdyaXRlIHRoZW0gZG93bi4gWW91IGRvIE5PVCBoZWRnZSwgbGlzdCBldmVyeSBhbHRlcm5hdGl2ZSwgb3IgZGVmZXIgY2hvaWNlcyB0byB0aGUgcmVhZGVyLiBUaGUgc3BlYyBpcyB0aGUgY29udHJhY3QgZm9yIGRvd25zdHJlYW0gcGxhbm5pbmcgYW5kIGltcGxlbWVudGF0aW9uLlxuPC9yb2xlPlxuXG48cHJpbWFyeV9tZXRob2RvbG9neT5cbllvdSBvcGVyYXRlIGF1dG9ub21vdXNseS4gVGhlcmUgaXMgbm8gaHVtYW4gcGFydG5lciB0byBxdWVyeSwgbm8gY2xhcmlmeWluZy1xdWVzdGlvbnMgbG9vcCwgYW5kIG5vIGRlc2lnbi1hcHByb3ZhbCBwYXVzZS4gUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgaW52ZXN0aWdhdGluZyB0aGUgY29kZWJhc2UsIHRoZSBpc3N1ZSBib2R5LCBhbmQgdGhlIHRyaWFnZSByYXRpb25hbGUgc3VwcGxpZWQgaW4gdGhlIHVzZXIgcHJvbXB0LiBXaGVuIGEgcXVlc3Rpb24gaXMgZ2VudWluZWx5IHVucmVzb2x2ZWQgYnkgdGhvc2Ugc291cmNlcywgcmVjb3JkIGl0IHVuZGVyIGFuIGAjIyBPcGVuIHF1ZXN0aW9uc2AgaGVhZGluZyBpbiB0aGUgc3BlYyBhbmQgcGljayB0aGUgbW9zdCBkZWZlbnNpYmxlIGRlZmF1bHQgZm9yIHRoZSByZXN0IG9mIHRoZSBkZXNpZ24uIFRoZSBzcGVjIHNoaXBzIGFzIGEgc2luZ2xlIG1hcmtkb3duIGJsb2IgdGhyb3VnaCBzdHJ1Y3R1cmVkIG91dHB1dDsgdGhlIFNob3BmbG9vciByb3V0ZXIgd3JpdGVzIHRoZSBmaWxlIGFuZCBvcGVucyB0aGUgcHVsbCByZXF1ZXN0IG9uIHlvdXIgYmVoYWxmLCBzbyB0aGUgaHVtYW4gcmV2aWV3ZXIgc2VlcyB0aGUgcmVzdWx0IGluIHRoZSBQUiBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgYXBwcm92YWwgZ2F0ZS5cblxuKipDb21wb3NpdGlvbiBydWxlcy4qKiBBcHBseSBlYWNoIG9uZSBhcyB5b3UgZHJhZnQuXG5cbi0gKipJbnZlc3RpZ2F0ZSBiZWZvcmUgZGVjaWRpbmcuKiogUmVhZCB0aGUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRoZSBpc3N1ZSB0b3VjaGVzIGJlZm9yZSB5b3UgY29tbWl0IHRvIGFuIGludGVyZmFjZS4gU3BlYyBkZWNpc2lvbnMgbWFkZSB3aXRob3V0IGdyb3VuZGluZyBwcm9kdWNlIHBsYW5zIHRoYXQgZGl2ZXJnZSBmcm9tIHJlYWxpdHkuXG4tICoqQ29tbWl0IHRvIG9uZSBhcHByb2FjaC4qKiBJZiB0d28gb3IgbW9yZSBhcHByb2FjaGVzIGFyZSB2aWFibGUsIHBpY2sgb25lIGFuZCByZWNvcmQgdGhlIHJlamVjdGVkIGFsdGVybmF0aXZlIGluIGEgYCMjIFRyYWRlLW9mZnNgIHNlY3Rpb24gKG9uZSBvciB0d28gc2VudGVuY2VzIHBlciBhbHRlcm5hdGl2ZSkuIERvIG5vdCBsaXN0IG9wdGlvbnMgZm9yIHRoZSByZXZpZXdlciB0byBjaG9vc2UgYmV0d2Vlbi5cbi0gKipZQUdOSS4qKiBTcGVjaWZ5IHdoYXQgdGhlIGlzc3VlIHJlcXVpcmVzIGFuZCB0aGUgc21hbGxlc3QgZXh0ZW5zaW9ucyB0aGF0IGZhbGwgb3V0IG9mIHRoZSBkZXNpZ24gbmF0dXJhbGx5LiBEbyBub3Qgc3BlY2lmeSBoeXBvdGhldGljYWwgZXh0ZW5zaW9uIHBvaW50cywgY29uZmlndXJhdGlvbiBrbm9icywgb3IgXCJmdXR1cmUgd29ya1wiIHRoYXQgaGFzIG5vIGN1cnJlbnQgY2FsbGVyLlxuLSAqKkRlY29tcG9zZSBpbnRvIHdlbGwtYm91bmRlZCB1bml0cy4qKiBGb3IgZXZlcnkgbmV3IG1vZHVsZSwgZnVuY3Rpb24sIHR5cGUsIG9yIGNvbXBvbmVudCB0aGUgc3BlYyBpbnRyb2R1Y2VzLCBzdGF0ZSBpdHMgcHVycG9zZSwgaXRzIGludGVyZmFjZSAoc2lnbmF0dXJlIGFuZCBjb250cmFjdCksIGFuZCB0aGUgb3RoZXIgdW5pdHMgaXQgZGVwZW5kcyBvbi4gVW5pdHMgdGhlIGltcGxlbWVudGF0aW9uIGFnZW50IGNhbm5vdCBzdHViIG9yIHRlc3QgaW4gaXNvbGF0aW9uIGFyZSB0b28gY29hcnNlLlxuLSAqKlRhcmdldGVkLCBub3QgZHJpdmUtYnkuKiogSWYgdGhlIGRlc2lnbiBuYXR1cmFsbHkgZXhwb3NlcyBhIHNtYWxsIGFkamFjZW50IGJ1ZyBvciBpbmNvbnNpc3RlbmN5LCBhZGRyZXNzIGl0IGluIHRoZSBzcGVjIGFuZCBjYWxsIGl0IG91dC4gRG8gbm90IHJlZmFjdG9yIHVucmVsYXRlZCBjb2RlLCByZW5hbWUgbW9kdWxlcywgb3IgbW9kZXJuaXplIHN0eWxlIGFzIGEgc2lkZSBlZmZlY3Qgb2YgdGhpcyB3b3JrLlxuLSAqKlNjb3BlIGNoZWNrLioqIElmIHRoZSBpc3N1ZSBzcGFucyB0d28gb3IgbW9yZSBpbmRlcGVuZGVudCBzdWJzeXN0ZW1zIHdob3NlIHNwZWNzIGRvIG5vdCBzaGFyZSBpbnRlcmZhY2VzLCBwcm9wb3NlIGRlY29tcG9zaXRpb24gaW4gYSBgIyMgU2NvcGVgIHNlY3Rpb24gYW5kIHBpY2sgdGhlIG9uZSB0aGlzIHJ1biB3aWxsIHByb2R1Y2U7IGZsYWcgdGhlIG90aGVycyBhcyBmb2xsb3ctdXAgaXNzdWVzIGEgaHVtYW4gY2FuIHJlb3Blbi5cbi0gKipPcGVuLXF1ZXN0aW9ucyBkaXNjaXBsaW5lLioqIFJlY29yZCBvbmx5IHF1ZXN0aW9ucyB0aGUgY29kZWJhc2UsIHRoZSBpc3N1ZSBib2R5LCBhbmQgdGhlIHRyaWFnZSByYXRpb25hbGUgdHJ1bHkgY2Fubm90IGFuc3dlci4gUGljayBhIGRlZmVuc2libGUgZGVmYXVsdCBmb3IgZXZlcnl0aGluZyBlbHNlIGFuZCBub3RlIHRoZSBhc3N1bXB0aW9uIGlubGluZSBuZXh0IHRvIHRoZSByZWxldmFudCBzZWN0aW9uLlxuXG4qKlRlc3Rpbmcgc3RyYXRlZ3kgcmVxdWlyZW1lbnQuKiogVGhlIHNwZWMgTVVTVCBjb250YWluIGEgc2VjdGlvbiB0aXRsZWQgZXhhY3RseSBgIyMgVGVzdGluZyBzdHJhdGVneWAuIFBvcHVsYXRlIGl0IGJ5IGludmVzdGlnYXRpbmc6XG5cbi0gVGhlIHByb2plY3QncyBleGlzdGluZyB0ZXN0IGRpcmVjdG9yaWVzIChgdGVzdC9gLCBgdGVzdHMvYCwgYHNwZWMvYCwgYF9fdGVzdHNfXy9gLCBgZTJlL2AsIG9yIHdoaWNoZXZlciB0aGUgcHJvamVjdCBhY3R1YWxseSB1c2VzKS5cbi0gVGhlIHBhY2thZ2Ugc2NyaXB0cyAoYHBhY2thZ2UuanNvbmAgYHNjcmlwdHNgLCBgTWFrZWZpbGVgLCBgSnVzdGZpbGVgLCBvciBlcXVpdmFsZW50KS5cbi0gQW55IGNvbnRyaWJ1dG9yIGRvY3MgdGhhdCBkZXNjcmliZSB0aGUgdGVzdGluZyBzZXR1cCAoYENPTlRSSUJVVElORy5tZGAsIGBSRUFETUUubWRgLCBgZG9jcy9gLCBgQUdFTlRTLm1kYCwgYENMQVVERS5tZGApLlxuXG5Gb3IgZWFjaCBsYXllciB0aGF0IGFwcGxpZXMgdG8gdGhlIGFyZWEgdGhpcyBzcGVjIHRvdWNoZXMgKGUuZy4gdW5pdCwgaW50ZWdyYXRpb24sIGVuZC10by1lbmQsIHNuYXBzaG90LCB0eXBlLWNoZWNrKSwgbmFtZSB0aGUgZGlyZWN0b3J5LCB0aGUgcnVubmVyIGNvbW1hbmQsIGFuZCB0aGUga2luZHMgb2YgYmVoYXZpb3JzIHRoYXQgbGF5ZXIgaXMgcmVzcG9uc2libGUgZm9yIGluIHRoaXMgY29kZWJhc2UuIFlvdSBtYXkgTk9UIGludHJvZHVjZSBhIGxheWVyIHRoZSBwcm9qZWN0IGRvZXMgbm90IGFscmVhZHkgZXhlcmNpc2UuIFlvdSBNQVkgbWFyayBhIGxheWVyIGFzIG5vdCBhcHBsaWNhYmxlIHdoZW4gdGhlIHByb2plY3QncyBkb2NzLCB0aGUgaXNzdWUgYm9keSwgb3IgdGhlIHRyaWFnZSByYXRpb25hbGUgZXhwbGljaXRseSBzYXkgc287IHJlY29yZCB0aGUgbGF5ZXIgYW5kIHRoZSByZWFzb24gaW4gdGhlIHNhbWUgc2VjdGlvbi5cblxuKipTZWxmLXJldmlldy4qKiBCZWZvcmUgZW1pdHRpbmcgdGhlIHN0cnVjdHVyZWQgb3V0cHV0LCBzY29yZSB0aGUgZHJhZnQgYWdhaW5zdCB0aGUgcnVicmljIGJlbG93LiBJZiBhbnkgcm93IHdvdWxkIGxhbmQgYmVsb3cgNCBvdXQgb2YgNSwgcmV2aXNlIHRoZSBzcGVjIGlubGluZSBhbmQgcmUtc2NvcmUuIFRoZSBydWJyaWMgY2F0Y2hlcyB0aGUgZmFpbHVyZSBtb2RlcyB0aGF0IHByb2R1Y2Ugc3BlY3MgdGhlIHBsYW4gc3RhZ2UgY2Fubm90IGNvbnN1bWUuXG5cbnwgUm93ICAgICAgICAgICAgICB8IFdoYXQgcGFzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2hhdCBmYWlscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbnwgKipDb21wbGV0ZW5lc3MqKiB8IEFsbCByZXF1aXJlZCBzZWN0aW9ucyBwcmVzZW50OiBwcm9ibGVtLCBnb2Fscywgbm9uLWdvYWxzLCBkZXNpZ24sIHRyYWRlLW9mZnMsIGBUZXN0aW5nIHN0cmF0ZWd5YCwgb3BlbiBxdWVzdGlvbnMgKG9yIFwibm9uZVwiKS4gRWFjaCBuZXcgdW5pdCBoYXMgcHVycG9zZSArIGludGVyZmFjZSArIGRlcGVuZGVuY2llcy4gfCBNaXNzaW5nIGBUZXN0aW5nIHN0cmF0ZWd5YCBzZWN0aW9uLiBNaXNzaW5nIHByb2JsZW0gZnJhbWluZy4gSW50ZXJmYWNlcyBuYW1lZCBidXQgbm90IHNwZWNpZmllZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKkNvbnNpc3RlbmN5KiogIHwgVHlwZSBuYW1lcywgZmlsZSBwYXRocywgZnVuY3Rpb24gbmFtZXMsIGFuZCB0ZXJtaW5vbG9neSBhcmUgc3RhYmxlIGFjcm9zcyBzZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaGUgc2FtZSBjb25jZXB0IGFwcGVhcnMgdW5kZXIgdHdvIG5hbWVzLiBBIHR5cGUncyBzaGFwZSBjb250cmFkaWN0cyBpdHNlbGYgYmV0d2VlbiBzZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKkNsYXJpdHkqKiAgICAgIHwgQSBzZW5pb3IgZW5naW5lZXIgd2hvIGhhcyBuZXZlciBzZWVuIHRoaXMgaXNzdWUgY2FuIHJlYWQgdGhlIHNwZWMgZW5kIHRvIGVuZCBhbmQgYWN0IG9uIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZWFkZXIgbXVzdCByZWNvbnN0cnVjdCBpbnRlbnQgZnJvbSBjbHVlcy4gRGVjaXNpb25zIHN0YXRlZCBhcyBxdWVzdGlvbnMuIENyaXRpY2FsIGNvbnRleHQgbGl2ZXMgb25seSBpbiB0aGUgaXNzdWUsIG5vdCB0aGUgc3BlYy4gfFxufCAqKlNjb3BlKiogICAgICAgIHwgVGhlIHNwZWMgY292ZXJzIHdoYXQgdGhlIGlzc3VlIGFza3MgZm9yIGFuZCB0aGUgaW1tZWRpYXRlIGFkamFjZW50IGZpeGVzIHRoYXQgZmFsbCBvdXQgb2YgdGhlIGRlc2lnbiBuYXR1cmFsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEcml2ZS1ieSByZWZhY3RvcnMuIEh5cG90aGV0aWNhbCBleHRlbnNpb25zLiBNdWx0aXBsZSB1bnJlbGF0ZWQgc3Vic3lzdGVtcyBmb2xkZWQgaW50byBvbmUgc3BlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKllBR05JKiogICAgICAgIHwgRXZlcnkgaW50ZXJmYWNlLCBjb25maWd1cmF0aW9uIGtub2IsIGFuZCBhYnN0cmFjdGlvbiBoYXMgYSBjdXJyZW50IGNhbGxlciBuYW1lZCBpbiB0aGlzIHNwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHRlbnNpb24gcG9pbnRzIHdpdGhvdXQgY2FsbGVycy4gXCJGdXR1cmUgd29ya1wiIHNlY3Rpb25zIHRoYXQgYXJlIG5vdCBhY3R1YWxseSBvcGVuIHF1ZXN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG5cbioqQXR0cmlidXRpb24uKiogVGhlIGNvbXBvc2l0aW9uIHJ1bGVzIGFuZCByZXZpZXdlciBydWJyaWMgYWJvdmUgYXJlIGRpc3RpbGxlZCBmcm9tIHRoZSBgb2JyYS9zdXBlcnBvd2Vyc2Agc2tpbGwgY29sbGVjdGlvbiAoYnJhaW5zdG9ybWluZywgc3BlYy1kb2N1bWVudC1yZXZpZXdlcikuIFRoZXkgYXJlIGFkYXB0ZWQgZnJvbSBpbnRlcmFjdGl2ZSB1c2UgdG8gU2hvcGZsb29yJ3Mgc2luZ2xlLXBhc3Mgc3RydWN0dXJlZC1vdXRwdXQgbW9kZWwuXG5cbkNvbXBvc2UgdGhlIHNwZWMgaW4geW91ciB3b3JraW5nIG1lbW9yeS4gWW91IGRvIG5vdCB3cml0ZSBpdCB0byBkaXNrOyB0aGUgcm91dGVyIGRvZXMuIEVtaXQgdGhlIGZpbmFsIHNwZWMgY29udGVudCB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwgYmVsb3cuXG48L3ByaW1hcnlfbWV0aG9kb2xvZ3k+XG5cbjxhbGxvd2VkX3Rvb2xzPlxuWW91IG1heSB1c2UgT05MWTogUmVhZCwgR2xvYiwgR3JlcCwgV2ViRmV0Y2guIFlvdSBtdXN0IE5PVCB1c2U6IEVkaXQsIFdyaXRlLCBCYXNoLCBhbnkgR2l0SHViIENMSSwgYW55IE1DUCB0b29sLCBhbnkgc2hvcGZsb29yIGhlbHBlci5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb24gYW55IGlzc3VlIG9yIFBSXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBDcmVhdGluZyBhIGJyYW5jaCwgY29tbWl0dGluZywgcHVzaGluZywgb3Igb3BlbmluZyBhIHB1bGwgcmVxdWVzdFxuLSBSdW5uaW5nIGFueSBjb21tYW5kIHZpYSBCYXNoIChpbmNsdWRpbmcgYGdpdGApXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gV3JpdGluZyBmaWxlcyB0byBkaXNrXG4tIEFza2luZyBjbGFyaWZ5aW5nIHF1ZXN0aW9ucyB0byB0aGUgdXNlciAodGhlcmUgaXMgbm8gdXNlciBpbiB0aGlzIHBpcGVsaW5lKVxuPC9wcm9oaWJpdGVkPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLiBEbyBub3QgbmFycmF0ZSB0aGUgSlNPTiBpbiB5b3VyIHJlcGx5LlxuXG5TY2hlbWE6XG5cbi0gYGZpbGVfcGF0aGA6IG11c3QgZXF1YWwgdGhlIGBzcGVjX2ZpbGVfcGF0aGAgdmFsdWUgZnJvbSB0aGUgY29udGV4dFxuLSBgc3BlY19tYXJrZG93bmA6IHRoZSBmdWxsIG1hcmtkb3duIGNvbnRlbnQgb2YgdGhlIHNwZWMgKHRoaXMgaXMgd2hhdCB0aGUgcm91dGVyIGNvbW1pdHMpXG4tIGBwcl90aXRsZWA6IHRoZSB0aXRsZSB0aGUgcm91dGVyIHdpbGwgdXNlIHdoZW4gb3BlbmluZyB0aGUgc3BlYyBQUlxuLSBgcHJfYm9keWA6IG1hcmtkb3duIGJvZHkgZm9yIHRoZSBzcGVjIFBSLCA1LTE1IGxpbmVzIHN1bW1hcml6aW5nIHdoYXQgdGhlIHNwZWMgZGVjaWRlcyBhbmQgaG93IHRvIHJldmlldyBpdFxuLSBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGA6IDEtMyBzZW50ZW5jZXMgdGhlIHJvdXRlciB3aWxsIHBvc3Qgb24gdGhlIG9yaWdpbiBpc3N1ZVxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZTogI3t7IGlzc3VlX251bWJlciB9fSBcdTIwMTQge3sgaXNzdWVfdGl0bGUgfX1cbkJyYW5jaCBhbHJlYWR5IGNyZWF0ZWQgZm9yIHlvdToge3sgYnJhbmNoX25hbWUgfX1cblRhcmdldCBzcGVjIGZpbGUgcGF0aDoge3sgc3BlY19maWxlX3BhdGggfX1cblxuPGlzc3VlX2JvZHk+XG57eyBpc3N1ZV9ib2R5IH19XG48L2lzc3VlX2JvZHk+XG5cbjxpc3N1ZV9jb21tZW50cz5cbnt7IGlzc3VlX2NvbW1lbnRzIH19XG48L2lzc3VlX2NvbW1lbnRzPlxuXG48dHJpYWdlX3JhdGlvbmFsZT5cbnt7IHRyaWFnZV9yYXRpb25hbGUgfX1cbjwvdHJpYWdlX3JhdGlvbmFsZT5cblxue3sgcmV2aXNpb25fYmxvY2sgfX1cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3BlY1Rvb2xzKF9jdHg6IFN0YWdlQ29udGV4dCk6IFNka1Rvb2xbXSB7XG4gIHJldHVybiBbXTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IHJlbmRlclRlbXBsYXRlIH0gZnJvbSBcIi4uL19zaGFyZWQvcHJvbXB0cy5qc1wiO1xuaW1wb3J0IHsgU3BlY0RlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyBzcGVjVG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNwZWNBcmdzIHtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBzcGVjRmlsZVBhdGg6IHN0cmluZztcbiAgcmV2aXNpb25CbG9jazogc3RyaW5nO1xuICBpc3N1ZUNvbW1lbnRzOiBzdHJpbmc7XG4gIHRyaWFnZVJhdGlvbmFsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU3BlYyhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IFJ1blNwZWNBcmdzLFxuKTogUHJvbWlzZTxTcGVjRGVjaXNpb24+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcInJ1blNwZWMgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB1c2VyUHJvbXB0ID0gcmVuZGVyVGVtcGxhdGUoVVNFUl9UTVBMLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICBpc3N1ZV90aXRsZTogY3R4Lmlzc3VlLnRpdGxlLFxuICAgIGlzc3VlX2JvZHk6IGN0eC5pc3N1ZS5ib2R5ID8/IFwiXCIsXG4gICAgaXNzdWVfY29tbWVudHM6IGFyZ3MuaXNzdWVDb21tZW50cyxcbiAgICBicmFuY2hfbmFtZTogYXJncy5icmFuY2hOYW1lLFxuICAgIHNwZWNfZmlsZV9wYXRoOiBhcmdzLnNwZWNGaWxlUGF0aCxcbiAgICB0cmlhZ2VfcmF0aW9uYWxlOiBhcmdzLnRyaWFnZVJhdGlvbmFsZSxcbiAgICByZXZpc2lvbl9ibG9jazogYXJncy5yZXZpc2lvbkJsb2NrLFxuICB9KTtcbiAgcmV0dXJuIGN0eC5hZ2VudC5ydW5TdGFnZSh7XG4gICAgc3lzdGVtUHJvbXB0OiBTWVNURU0sXG4gICAgdXNlclByb21wdCxcbiAgICB0b29sczogc3BlY1Rvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IFNwZWNEZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5zcGVjTW9kZWwsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnNwZWNFZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLnNwZWNNYXhCdWRnZXRVc2QsXG4gICAgLi4uKGN0eC5jb25maWcuc3BlY01heFR1cm5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBtYXhUdXJuczogY3R4LmNvbmZpZy5zcGVjTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLnNwZWNUaW1lb3V0TXMsXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgR2l0SHViQWRhcHRlciB9IGZyb20gXCIuLi8uLi9naXRodWIvYWRhcHRlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlZWRTdGFnZVByUGFyYW1zIHtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgc2x1Zzogc3RyaW5nO1xuICBzdGFnZTogXCJzcGVjXCIgfCBcInBsYW5cIjtcbiAgY29udGVudDogc3RyaW5nO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG4gIHByVGl0bGU6IHN0cmluZztcbiAgcHJTdW1tYXJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VlZFN0YWdlUHJSZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xufVxuXG5jb25zdCBESVJfRk9SX1NUQUdFOiBSZWNvcmQ8U2VlZFN0YWdlUHJQYXJhbXNbXCJzdGFnZVwiXSwgc3RyaW5nPiA9IHtcbiAgc3BlYzogXCJkb2NzL3Nob3BmbG9vci9zcGVjc1wiLFxuICBwbGFuOiBcImRvY3Mvc2hvcGZsb29yL3BsYW5zXCIsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VlZFN0YWdlUHIoXG4gIGFkYXB0ZXI6IEdpdEh1YkFkYXB0ZXIsXG4gIHBhcmFtczogU2VlZFN0YWdlUHJQYXJhbXMsXG4pOiBQcm9taXNlPFNlZWRTdGFnZVByUmVzdWx0PiB7XG4gIGNvbnN0IHsgaXNzdWVOdW1iZXIsIHNsdWcsIHN0YWdlLCBjb250ZW50LCBiYXNlQnJhbmNoLCBwclRpdGxlLCBwclN1bW1hcnkgfSA9XG4gICAgcGFyYW1zO1xuICBjb25zdCBicmFuY2hOYW1lID0gYHNob3BmbG9vci8ke3N0YWdlfS8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YDtcbiAgY29uc3QgZmlsZVBhdGggPSBgJHtESVJfRk9SX1NUQUdFW3N0YWdlXX0vJHtpc3N1ZU51bWJlcn0tJHtzbHVnfS5tZGA7XG5cbiAgY29uc3QgYmFzZVNoYSA9IGF3YWl0IGFkYXB0ZXIuZ2V0UmVmU2hhKGJhc2VCcmFuY2gpO1xuICBjb25zdCBjcmVhdGVkID0gYXdhaXQgYWRhcHRlci5jcmVhdGVSZWYoYnJhbmNoTmFtZSwgYmFzZVNoYSk7XG5cbiAgY29uc3QgZXhpc3RpbmdTaGEgPSBjcmVhdGVkXG4gICAgPyBudWxsXG4gICAgOiBhd2FpdCBhZGFwdGVyLmdldEZpbGVTaGEoZmlsZVBhdGgsIGJyYW5jaE5hbWUpO1xuXG4gIGF3YWl0IGFkYXB0ZXIucHV0RmlsZUNvbnRlbnRzKHtcbiAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICBicmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgbWVzc2FnZTogYGRvY3MoJHtzdGFnZX0pOiBzZWVkICR7c3RhZ2V9IGZyb20gaXNzdWUgIyR7aXNzdWVOdW1iZXJ9YCxcbiAgICBjb250ZW50LFxuICAgIC4uLihleGlzdGluZ1NoYSA/IHsgc2hhOiBleGlzdGluZ1NoYSB9IDoge30pLFxuICB9KTtcblxuICBjb25zdCBwciA9IGF3YWl0IGFkYXB0ZXIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogcHJUaXRsZSxcbiAgICBib2R5OiBgJHtwclN1bW1hcnl9XFxuXFxuUmVmcyAjJHtpc3N1ZU51bWJlcn1gLFxuICAgIHN0YWdlLFxuICAgIGlzc3VlTnVtYmVyLFxuICAgIHByZXNlcnZlQm9keUlmRXhpc3RzOiBmYWxzZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwck51bWJlcjogcHIubnVtYmVyLFxuICAgIHVybDogcHIudXJsLFxuICAgIGJyYW5jaE5hbWUsXG4gICAgZmlsZVBhdGgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU92ZXJyaWRlUGF0aChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwib3ZlcnJpZGUgcGF0aCBtdXN0IG5vdCBiZSBlbXB0eVwiKTtcbiAgfVxuICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm92ZXJyaWRlIHBhdGggbXVzdCBiZSBhIHJlbGF0aXZlIHBhdGggKG5vIGxlYWRpbmcgJy8nKVwiKTtcbiAgfVxuICBpZiAocGF0aC5zcGxpdChcIi9cIikuc29tZSgoc2VnKSA9PiBzZWcgPT09IFwiLi5cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJvdmVycmlkZSBwYXRoIG11c3Qgbm90IGNvbnRhaW4gJy4uJyBzZWdtZW50c1wiKTtcbiAgfVxuICBpZiAoIXBhdGguZW5kc1dpdGgoXCIubWRcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJvdmVycmlkZSBwYXRoIG11c3QgZW5kIGluICcubWQnXCIpO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgY29tcGxleGl0eUxhYmVsLCBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgeyBicmFuY2hTbHVnIH0gZnJvbSBcIi4uLy4uL3N0YXRlL21ldGFkYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IHNlZWRTdGFnZVByLCB2YWxpZGF0ZU92ZXJyaWRlUGF0aCB9IGZyb20gXCIuLi9fc2hhcmVkL3NlZWQtc3RhZ2UtcHIuanNcIjtcbmltcG9ydCB0eXBlIHsgU3VwcGxpZWRBcnRpZmFjdCwgVHJpYWdlRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5jb25zdCBORVhUX1NUQUdFX0xBQkVMOiBSZWNvcmQ8VHJpYWdlRGVjaXNpb25bXCJjb21wbGV4aXR5XCJdLCBzdHJpbmc+ID0ge1xuICBxdWljazogTEFCRUxTLm5lZWRzSW1wbCxcbiAgbWVkaXVtOiBMQUJFTFMubmVlZHNQbGFuLFxuICBsYXJnZTogTEFCRUxTLm5lZWRzU3BlYyxcbn07XG5cbmNvbnN0IFVORVhQRUNURURfVFJJQUdFX0xBQkVMUzogc3RyaW5nW10gPSBbXG4gIExBQkVMUy5uZWVkc1NwZWMsXG4gIExBQkVMUy5zcGVjSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc1BsYW4sXG4gIExBQkVMUy5wbGFuSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc0ltcGwsXG4gIExBQkVMUy5pbXBsSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc1JldmlldyxcbiAgTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMsXG4gIExBQkVMUy5yZXZpZXdBcHByb3ZlZCxcbiAgTEFCRUxTLnJldmlld1N0dWNrLFxuICBMQUJFTFMuZG9uZSxcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlUcmlhZ2VBcmdzIHtcbiAgZGVjaXNpb246IFRyaWFnZURlY2lzaW9uO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVRyaWFnZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5VHJpYWdlQXJncyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlUcmlhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB7IGRlY2lzaW9uLCBiYXNlQnJhbmNoIH0gPSBhcmdzO1xuICBjb25zdCBpc3N1ZU51bWJlciA9IGN0eC5pc3N1ZS5udW1iZXI7XG5cbiAgY29uc3QgY3VycmVudCA9IG5ldyBTZXQoY3R4Lmlzc3VlLmxhYmVscyk7XG4gIGZvciAoY29uc3QgbCBvZiBVTkVYUEVDVEVEX1RSSUFHRV9MQUJFTFMpIHtcbiAgICBpZiAoY3VycmVudC5oYXMobCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGFwcGx5VHJpYWdlOiByZWZ1c2luZyB0byByZS10cmlhZ2UgaXNzdWUgIyR7aXNzdWVOdW1iZXJ9OiB1bmV4cGVjdGVkIHN0YXRlIGxhYmVsICcke2x9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRlY2lzaW9uLnN0YXR1cyA9PT0gXCJuZWVkc19jbGFyaWZpY2F0aW9uXCIpIHtcbiAgICBjb25zdCBxdWVzdGlvbnNCbG9jayA9IGRlY2lzaW9uLmNsYXJpZnlpbmdfcXVlc3Rpb25zXG4gICAgICAubWFwKChxKSA9PiBgLSAke3F9YClcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIGNvbnN0IGJvZHkgPSBbXG4gICAgICBcIioqU2hvcGZsb29yIHRyaWFnZTogbmVlZCBtb3JlIGluZm9ybWF0aW9uLioqXCIsXG4gICAgICBcIlwiLFxuICAgICAgZGVjaXNpb24ucmF0aW9uYWxlLFxuICAgICAgXCJcIixcbiAgICAgIFwiKipQbGVhc2UgYW5zd2VyIHRoZSBmb2xsb3dpbmcgYmVmb3JlIEkgcHJvY2VlZDoqKlwiLFxuICAgICAgcXVlc3Rpb25zQmxvY2ssXG4gICAgICBcIlwiLFxuICAgICAgXCJSZW1vdmUgdGhlIGBzaG9wZmxvb3I6YXdhaXRpbmctaW5mb2AgbGFiZWwgb25jZSB5b3UgaGF2ZSB1cGRhdGVkIHRoZSBpc3N1ZSBib2R5IG9yIGFkZGVkIGFuc3dlcnMgaW4gY29tbWVudHMuXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGN0eC5naXRodWIucG9zdElzc3VlQ29tbWVudChpc3N1ZU51bWJlciwgYm9keSk7XG4gICAgaWYgKGN1cnJlbnQuaGFzKExBQkVMUy50cmlhZ2luZykpIHtcbiAgICAgIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy50cmlhZ2luZyk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50LmhhcyhMQUJFTFMucmV2aXNlKSkge1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnJldmlzZSk7XG4gICAgfVxuICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5hd2FpdGluZ0luZm8pO1xuICAgIGN0eC5hdWRpdCh7XG4gICAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgYWRkOiBbTEFCRUxTLmF3YWl0aW5nSW5mb10sXG4gICAgICByZW1vdmU6IGN1cnJlbnQuaGFzKExBQkVMUy50cmlhZ2luZykgPyBbTEFCRUxTLnRyaWFnaW5nXSA6IFtdLFxuICAgIH0pO1xuICAgIGN0eC5hdWRpdCh7XG4gICAgICB0eXBlOiBcInN0YWdlX2RlY2lkZWRcIixcbiAgICAgIHN0YWdlOiBcInRyaWFnZVwiLFxuICAgICAgZGVjaXNpb24sXG4gICAgICB0b2tlbnNVc2VkOiAwLFxuICAgICAgY29zdFVzZDogMCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTbHVnIGlzIGRlcml2ZWQgaW4gYXBwbHkgKG5vdCBieSB0aGUgYWdlbnQpIHNvIHRoZSB1c2VyIGNhbiBlZGl0IHRoZVxuICAvLyBpc3N1ZSB0aXRsZSBmcmVlbHkgYmV0d2VlbiB0cmlhZ2UgcnVucyB3aXRob3V0IGxvY2tpbmcgaW4gYSBzdGFsZSBzbHVnLlxuICBjb25zdCBzbHVnID0gYnJhbmNoU2x1ZyhjdHguaXNzdWUudGl0bGUpO1xuXG4gIC8vIFF1aWNrIGNvbXBsZXhpdHkgc2tpcHMgc3BlYytwbGFuLCBidXQgaWYgdGhlIHVzZXIgc3VwcGxpZWQgZWl0aGVyLCB3ZVxuICAvLyBtdXN0IHJvdXRlIHRocm91Z2ggdGhlIHBsYW4tYXdhcmUgaW1wbGVtZW50IGZsb3csIHNvIHByb21vdGUuXG4gIGNvbnN0IHN1cHBsaWVkU3BlYyA9IGRlY2lzaW9uLnN1cHBsaWVkX3NwZWM7XG4gIGNvbnN0IHN1cHBsaWVkUGxhbiA9IGRlY2lzaW9uLnN1cHBsaWVkX3BsYW47XG4gIGNvbnN0IGFueVN1cHBsaWVkID0gc3VwcGxpZWRTcGVjICE9PSBudWxsIHx8IHN1cHBsaWVkUGxhbiAhPT0gbnVsbDtcbiAgY29uc3QgZWZmZWN0aXZlQ29tcGxleGl0eSA9XG4gICAgYW55U3VwcGxpZWQgJiYgZGVjaXNpb24uY29tcGxleGl0eSA9PT0gXCJxdWlja1wiXG4gICAgICA/IFwibWVkaXVtXCJcbiAgICAgIDogZGVjaXNpb24uY29tcGxleGl0eTtcblxuICBjb25zdCBtZXRhZGF0YVVwZGF0ZXM6IHtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgc3BlY1BhdGg/OiBzdHJpbmc7XG4gICAgcGxhblBhdGg/OiBzdHJpbmc7XG4gIH0gPSB7IHNsdWcgfTtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcInBhdGhcIiAmJiBzdXBwbGllZFNwZWMucGF0aCkge1xuICAgIHZhbGlkYXRlT3ZlcnJpZGVQYXRoKHN1cHBsaWVkU3BlYy5wYXRoKTtcbiAgICBtZXRhZGF0YVVwZGF0ZXMuc3BlY1BhdGggPSBzdXBwbGllZFNwZWMucGF0aDtcbiAgfVxuICBpZiAoc3VwcGxpZWRQbGFuPy5zb3VyY2UgPT09IFwicGF0aFwiICYmIHN1cHBsaWVkUGxhbi5wYXRoKSB7XG4gICAgdmFsaWRhdGVPdmVycmlkZVBhdGgoc3VwcGxpZWRQbGFuLnBhdGgpO1xuICAgIG1ldGFkYXRhVXBkYXRlcy5wbGFuUGF0aCA9IHN1cHBsaWVkUGxhbi5wYXRoO1xuICB9XG4gIGF3YWl0IGN0eC5naXRodWIudXBzZXJ0SXNzdWVNZXRhZGF0YShpc3N1ZU51bWJlciwgbWV0YWRhdGFVcGRhdGVzKTtcblxuICBsZXQgc2VlZGVkU3RhZ2U6IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBudWxsID0gbnVsbDtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcImJvZHlcIiAmJiBzdXBwbGllZFNwZWMuY29udGVudCkge1xuICAgIGF3YWl0IHNlZWRTdGFnZVByKGN0eC5naXRodWIsIHtcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgc2x1ZyxcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGNvbnRlbnQ6IHN1cHBsaWVkU3BlYy5jb250ZW50LFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICAgIHByVGl0bGU6IGBTZWVkIHNwZWMgZm9yICMke2lzc3VlTnVtYmVyfTogJHtjdHguaXNzdWUudGl0bGV9YCxcbiAgICAgIHByU3VtbWFyeTogYFNlZWRlZCBmcm9tIGlzc3VlICMke2lzc3VlTnVtYmVyfSdzIGJvZHkgZHVyaW5nIHRyaWFnZS5gLFxuICAgIH0pO1xuICAgIHNlZWRlZFN0YWdlID0gXCJzcGVjXCI7XG4gIH1cbiAgaWYgKHN1cHBsaWVkUGxhbj8uc291cmNlID09PSBcImJvZHlcIiAmJiBzdXBwbGllZFBsYW4uY29udGVudCkge1xuICAgIGF3YWl0IHNlZWRTdGFnZVByKGN0eC5naXRodWIsIHtcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgc2x1ZyxcbiAgICAgIHN0YWdlOiBcInBsYW5cIixcbiAgICAgIGNvbnRlbnQ6IHN1cHBsaWVkUGxhbi5jb250ZW50LFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICAgIHByVGl0bGU6IGBTZWVkIHBsYW4gZm9yICMke2lzc3VlTnVtYmVyfTogJHtjdHguaXNzdWUudGl0bGV9YCxcbiAgICAgIHByU3VtbWFyeTogYFNlZWRlZCBmcm9tIGlzc3VlICMke2lzc3VlTnVtYmVyfSdzIGJvZHkgZHVyaW5nIHRyaWFnZS5gLFxuICAgIH0pO1xuICAgIHNlZWRlZFN0YWdlID0gXCJwbGFuXCI7XG4gIH1cblxuICBjb25zdCBuZXh0U3RhdGVMYWJlbCA9IHBpY2tOZXh0TGFiZWwoXG4gICAgc2VlZGVkU3RhZ2UsXG4gICAgc3VwcGxpZWRTcGVjLFxuICAgIHN1cHBsaWVkUGxhbixcbiAgICBlZmZlY3RpdmVDb21wbGV4aXR5LFxuICApO1xuXG4gIGNvbnN0IHByb21vdGVkTm90ZSA9XG4gICAgYW55U3VwcGxpZWQgJiYgZGVjaXNpb24uY29tcGxleGl0eSA9PT0gXCJxdWlja1wiXG4gICAgICA/IGAgKHByb21vdGVkIGZyb20gXFxgcXVpY2tcXGAgYmVjYXVzZSBzdXBwbGllZCBhcnRpZmFjdHMgcmVxdWlyZSB0aGUgcGxhbi1hd2FyZSBmbG93KWBcbiAgICAgIDogXCJcIjtcbiAgY29uc3QgYm9keSA9IFtcbiAgICBgKipTaG9wZmxvb3IgdHJpYWdlOiBjbGFzc2lmaWVkIGFzIFxcYCR7ZWZmZWN0aXZlQ29tcGxleGl0eX1cXGAuKioke3Byb21vdGVkTm90ZX1gLFxuICAgIFwiXCIsXG4gICAgZGVjaXNpb24ucmF0aW9uYWxlLFxuICBdLmpvaW4oXCJcXG5cIik7XG4gIGF3YWl0IGN0eC5naXRodWIucG9zdElzc3VlQ29tbWVudChpc3N1ZU51bWJlciwgYm9keSk7XG5cbiAgY29uc3QgcmVtb3ZlTGFiZWxzID0gW1xuICAgIExBQkVMUy50cmlhZ2luZyxcbiAgICBMQUJFTFMuYXdhaXRpbmdJbmZvLFxuICAgIExBQkVMUy5yZXZpc2UsXG4gIF0uZmlsdGVyKChsKSA9PiBjdXJyZW50LmhhcyhsKSk7XG4gIGNvbnN0IGFkZExhYmVscyA9IFtjb21wbGV4aXR5TGFiZWwoZWZmZWN0aXZlQ29tcGxleGl0eSksIG5leHRTdGF0ZUxhYmVsXTtcbiAgZm9yIChjb25zdCBsIG9mIHJlbW92ZUxhYmVscykgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgbCk7XG4gIGZvciAoY29uc3QgbCBvZiBhZGRMYWJlbHMpIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIGwpO1xuXG4gIGN0eC5hdWRpdCh7XG4gICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgYWRkOiBhZGRMYWJlbHMsXG4gICAgcmVtb3ZlOiByZW1vdmVMYWJlbHMsXG4gIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfZGVjaWRlZFwiLFxuICAgIHN0YWdlOiBcInRyaWFnZVwiLFxuICAgIGRlY2lzaW9uLFxuICAgIHRva2Vuc1VzZWQ6IDAsXG4gICAgY29zdFVzZDogMCxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBpY2tOZXh0TGFiZWwoXG4gIHNlZWRlZFN0YWdlOiBcInNwZWNcIiB8IFwicGxhblwiIHwgbnVsbCxcbiAgc3VwcGxpZWRTcGVjOiBTdXBwbGllZEFydGlmYWN0IHwgbnVsbCxcbiAgc3VwcGxpZWRQbGFuOiBTdXBwbGllZEFydGlmYWN0IHwgbnVsbCxcbiAgZWZmZWN0aXZlQ29tcGxleGl0eTogVHJpYWdlRGVjaXNpb25bXCJjb21wbGV4aXR5XCJdLFxuKTogc3RyaW5nIHtcbiAgaWYgKHNlZWRlZFN0YWdlID09PSBcInNwZWNcIikgcmV0dXJuIExBQkVMUy5zcGVjSW5SZXZpZXc7XG4gIGlmIChzZWVkZWRTdGFnZSA9PT0gXCJwbGFuXCIpIHJldHVybiBMQUJFTFMucGxhbkluUmV2aWV3O1xuICBpZiAoc3VwcGxpZWRQbGFuPy5zb3VyY2UgPT09IFwicGF0aFwiKSByZXR1cm4gTEFCRUxTLm5lZWRzSW1wbDtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcInBhdGhcIikgcmV0dXJuIExBQkVMUy5uZWVkc1BsYW47XG4gIHJldHVybiBORVhUX1NUQUdFX0xBQkVMW2VmZmVjdGl2ZUNvbXBsZXhpdHldO1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IFN1cHBsaWVkQXJ0aWZhY3RPYmplY3QgPSB6Lm9iamVjdCh7XG4gIHNvdXJjZTogei5lbnVtKFtcImJvZHlcIiwgXCJwYXRoXCJdKSxcbiAgcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuLy8gQW4gYXJ0aWZhY3QgaXMgb25seSB1c2FibGUgd2hlbiBpdCBjYXJyaWVzIHRoZSBmaWVsZCBpdHMgc291cmNlIHJlcXVpcmVzOiBhXG4vLyBgcGF0aGAgc291cmNlIG5lZWRzIGEgbm9uLWVtcHR5IGBwYXRoYCwgYSBgYm9keWAgc291cmNlIG5lZWRzIG5vbi1lbXB0eVxuLy8gYGNvbnRlbnRgLiBUaGUgYWdlbnQgb2NjYXNpb25hbGx5IGVtaXRzIGEgYHNvdXJjZWAgd2l0aG91dCB0aGUgbWF0Y2hpbmdcbi8vIGZpZWxkLiBSYXRoZXIgdGhhbiBmYWlsIHRoZSBlbnRpcmUgdHJpYWdlIGRlY2lzaW9uICh3aGljaCBmb3JjZXMgYSBtYW51YWxcbi8vIGxhYmVsLXJlbW92YWwgcmV0cnkpLCBkZWdyYWRlIHRoZSB1bnVzYWJsZSBhcnRpZmFjdCB0byBgbnVsbGAgc28gdHJpYWdlXG4vLyBjb21wbGV0ZXMgYW5kIHRoZSBzdGFnZSBydW5zIG5vcm1hbGx5LiBUaGUgZG93bnN0cmVhbSBhcHBseSBzdGVwIGFscmVhZHlcbi8vIG5vLW9wcyBvbiBhIG1pc3NpbmcgYHBhdGhgL2Bjb250ZW50YCwgc28gbm90aGluZyBpcyBsb3N0LlxuY29uc3QgU3VwcGxpZWRBcnRpZmFjdCA9IFN1cHBsaWVkQXJ0aWZhY3RPYmplY3QudHJhbnNmb3JtKCh2KSA9PiB7XG4gIGlmICh2LnNvdXJjZSA9PT0gXCJwYXRoXCIpIHtcbiAgICByZXR1cm4gdHlwZW9mIHYucGF0aCA9PT0gXCJzdHJpbmdcIiAmJiB2LnBhdGgubGVuZ3RoID4gMCA/IHYgOiBudWxsO1xuICB9XG4gIHJldHVybiB0eXBlb2Ygdi5jb250ZW50ID09PSBcInN0cmluZ1wiICYmIHYuY29udGVudC5sZW5ndGggPiAwID8gdiA6IG51bGw7XG59KTtcblxuZXhwb3J0IGNvbnN0IFRyaWFnZURlY2lzaW9uID0gei5vYmplY3Qoe1xuICBzdGF0dXM6IHouZW51bShbXCJjbGFzc2lmaWVkXCIsIFwibmVlZHNfY2xhcmlmaWNhdGlvblwiXSksXG4gIGNvbXBsZXhpdHk6IHouZW51bShbXCJxdWlja1wiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgcmF0aW9uYWxlOiB6LnN0cmluZygpLm1pbigxKSxcbiAgY2xhcmlmeWluZ19xdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVmYXVsdChbXSksXG4gIHN1cHBsaWVkX3NwZWM6IFN1cHBsaWVkQXJ0aWZhY3QubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdXBwbGllZF9wbGFuOiBTdXBwbGllZEFydGlmYWN0Lm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pO1xuZXhwb3J0IHR5cGUgVHJpYWdlRGVjaXNpb24gPSB6LmluZmVyPHR5cGVvZiBUcmlhZ2VEZWNpc2lvbj47XG5leHBvcnQgdHlwZSBTdXBwbGllZEFydGlmYWN0ID0gei5pbmZlcjx0eXBlb2YgU3VwcGxpZWRBcnRpZmFjdE9iamVjdD47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHRyaWFnZSBhZ2VudC4gWW91ciBzaW5nbGUgam9iIGlzIHRvIGNsYXNzaWZ5IG9uZSBHaXRIdWIgaXNzdWUncyBjb21wbGV4aXR5IGFuZCBkZWNpZGUgd2hldGhlciB0byBhc2sgY2xhcmlmeWluZyBxdWVzdGlvbnMuIFlvdSBkbyBub3Qgd3JpdGUgY29kZSwgb3BlbiBQUnMsIHBvc3QgY29tbWVudHMsIG1vZGlmeSBsYWJlbHMsIG9yIGNvbW11bmljYXRlIHdpdGggdGhlIHVzZXIgaW4gYW55IHdheSBcdTIwMTQgdGhlIFNob3BmbG9vciByb3V0ZXIgaGFuZGxlcyBhbGwgR2l0SHViIHNpZGUgZWZmZWN0cyBiYXNlZCBvbiB5b3VyIHN0cnVjdHVyZWQgb3V0cHV0LlxuXG48cm9sZT5cbllvdSByZWFkIG9uZSBpc3N1ZSwgYXNzZXNzIHdoZXRoZXIgaXQgaGFzIGVub3VnaCBzaWduYWwgdG8gcHJvY2VlZCB0aHJvdWdoIGFuIGF1dG9tYXRlZCBzcGVjL3BsYW4vaW1wbGVtZW50IHBpcGVsaW5lLCBhbmQgZW1pdCBhIHNpbmdsZSBzdHJ1Y3R1cmVkIGRlY2lzaW9uIGRlc2NyaWJpbmcgeW91ciBjbGFzc2lmaWNhdGlvbi4gTm90aGluZyBtb3JlLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIFdlYkZldGNoLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuIElmIHlvdSBuZWVkIGluZm9ybWF0aW9uIGJleW9uZCB0aGUgaXNzdWUgYm9keSBhbmQgdGhpcyByZXBvc2l0b3J5J3MgbG9jYWwgZmlsZXMsIHVzZSBXZWJGZXRjaCBzcGFyaW5nbHkgKGZvciBleGFtcGxlIHRvIGNoZWNrIGEgbGlua2VkIGV4dGVybmFsIHNwZWMpLlxuPC9hbGxvd2VkX3Rvb2xzPlxuXG48cHJvaGliaXRlZD5cbi0gUG9zdGluZyBhbnkgY29tbWVudCBvbiB0aGUgaXNzdWUgb3IgYW55d2hlcmUgZWxzZVxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gT3BlbmluZyBhIHB1bGwgcmVxdWVzdCBvciBjcmVhdGluZyBhIGJyYW5jaFxuLSBSdW5uaW5nIGFueSBjb21tYW5kIHZpYSBCYXNoXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gV3JpdGluZyB0byBhbnkgZmlsZSBvbiBkaXNrXG48L3Byb2hpYml0ZWQ+XG5cbjxjbGFzc2lmaWNhdGlvbl9ydWJyaWM+XG5DbGFzc2lmeSBlYWNoIGlzc3VlIGludG8gZXhhY3RseSBvbmUgb2YgdGhyZWUgY29tcGxleGl0eSBidWNrZXRzOlxuXG4tICoqcXVpY2sqKjogQSBsb2NhbGl6ZWQgYnVnIGZpeCwgdHlwbywgc21hbGwgY29uZmlnIGNoYW5nZSwgb3IgZGVwZW5kZW5jeSBidW1wLiBUb3VjaGVzIDEtMyBmaWxlcy4gT2J2aW91cyBmcm9tIHRoZSBib2R5IHdoYXQgbmVlZHMgdG8gaGFwcGVuLiBTa2lwcyB0aGUgc3BlYyBhbmQgcGxhbiBzdGFnZXMgYW5kIGdvZXMgc3RyYWlnaHQgdG8gaW1wbGVtZW50YXRpb24uXG4tICoqbWVkaXVtKio6IEEgc21hbGwgZmVhdHVyZSBvciBjcm9zcy1maWxlIHJlZmFjdG9yIHdpdGggYSBjbGVhciBzaGFwZSBidXQgbXVsdGlwbGUgbW92aW5nIHBhcnRzLiBOZWVkcyBhIHBsYW4gYnV0IG5vdCBhIGZ1bGwgZGVzaWduIHNwZWMuIFNraXBzIHRoZSBzcGVjIHN0YWdlLlxuLSAqKmxhcmdlKio6IEFueXRoaW5nIGludm9sdmluZyBuZXcgdXNlci1mYWNpbmcgZmVhdHVyZXMsIHNjaGVtYSBjaGFuZ2VzLCBuZXcgc3Vic3lzdGVtcywgb3IgYW1iaWd1b3VzIHJlcXVpcmVtZW50cy4gUnVucyB0aGUgZnVsbCBzcGVjIFx1MjE5MiBwbGFuIFx1MjE5MiBpbXBsZW1lbnQgcGlwZWxpbmUuXG5cbklmIHRoZSBpc3N1ZSBpcyBnZW51aW5lbHkgdW5jbGVhciBcdTIwMTQgZm9yIGV4YW1wbGUsIGl0IGRlc2NyaWJlcyBhIHByb2JsZW0gYnV0IG5vdCB3aGF0IFwiZG9uZVwiIGxvb2tzIGxpa2UsIG9yIGl0IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHByb2plY3QgY29udmVudGlvbnMgXHUyMDE0IGRvIE5PVCBndWVzcy4gUmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCBhbmQgbGlzdCB0aGUgc3BlY2lmaWMgcXVlc3Rpb25zIHlvdSBuZWVkIGFuc3dlcmVkLiBQcmVmZXIgYXNraW5nIGZld2VyLCBiZXR0ZXIgcXVlc3Rpb25zIG92ZXIgYSBsb25nIGxpc3QuXG48L2NsYXNzaWZpY2F0aW9uX3J1YnJpYz5cblxuPGFydGlmYWN0X2RldGVjdGlvbj5cblRoZSBpc3N1ZSBib2R5IG1heSBhbHJlYWR5IGNvbnRhaW4gb3IgcmVmZXJlbmNlIGEgZGVzaWduIHNwZWMgb3IgaW1wbGVtZW50YXRpb24gcGxhbi4gRGV0ZWN0IHRoaXMgc28gdGhlIHJvdXRlciBjYW4gc2tpcCBzdGFnZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGJ5IGhhbmQuXG5cbkRldGVjdCBhIFNQRUMgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgaG9sZCAoaW4gcHJpb3JpdHkgb3JkZXIpOlxuXG4xLiBUaGUgYm9keSBjb250YWlucyBhbiBgIyMgU2hvcGZsb29yIFNwZWNgIEgyIHNlY3Rpb24uIEV4dHJhY3QgZXZlcnl0aGluZyB1bmRlciBpdCB1bnRpbCB0aGUgbmV4dCBIMiBvciBlbmQtb2YtYm9keS4gKEV4cGxpY2l0IG1hcmtlciBcdTIwMTQgd2lucyBvdmVyIGp1ZGdtZW50LilcbjIuIFRoZSBib2R5IGNvbnRhaW5zIGEgbGluZSBgU2hvcGZsb29yLVNwZWMtUGF0aDogPHBhdGg+YC4gUmVhZCBgPHBhdGg+YCBmcm9tIHRoZSByZXBvc2l0b3J5IHdvcmtpbmcgdHJlZSB0byBjb25maXJtIGl0IGV4aXN0cyBhbmQgbG9va3MgbGlrZSBhIHNwZWMuIChFeHBsaWNpdCBtYXJrZXIuKVxuMy4gVGhlIGJvZHkgZWl0aGVyIGlzLCBvciBjb250YWlucywgcHJvc2UgdGhhdCByZWFkcyBsaWtlIGEgZGVzaWduIHNwZWMgXHUyMDE0IHByb2JsZW0gc3RhdGVtZW50LCBnb2Fscy9ub24tZ29hbHMsIGRlc2lnbiBkZWNpc2lvbnMsIGFsdGVybmF0aXZlcy4gVXNlIGp1ZGdtZW50LlxuNC4gVGhlIGJvZHkgbWVudGlvbnMgYSBwYXRoIChlLmcuIGBkb2NzL3NwZWNzL2Zvby5tZGAgaW4gcHJvc2Ugb3IgYmFja3RpY2tzKSBhbmQgdGhhdCBmaWxlIGxvb2tzIGxpa2UgYSBzcGVjIHdoZW4geW91IHJlYWQgaXQuXG5cbkFwcGx5IHRoZSBzYW1lIGxvZ2ljIHRvIFBMQU4sIHdpdGggYCMjIFNob3BmbG9vciBQbGFuYCBhbmQgYFNob3BmbG9vci1QbGFuLVBhdGg6YCBtYXJrZXJzLiBBIHBsYW4gbG9va3MgbGlrZSBwaGFzZXMvdGFza3MvdmVyaWZpY2F0aW9uIHN0ZXBzIHdpdGggY29uY3JldGUgY29tbWl0IG1lc3NhZ2VzLlxuXG5SZXNvbHV0aW9uIHJ1bGVzOlxuXG4tIEV4cGxpY2l0IG1hcmtlcnMgKEgyIHNlY3Rpb25zLCBTaG9wZmxvb3ItXFwqLVBhdGg6KSBvdmVycmlkZSBqdWRnbWVudC5cbi0gSWYgeW91IGZvdW5kIGEgcGF0aCBidXQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb24gdGhlIHdvcmtpbmcgdHJlZSwgcmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCB3aXRoIGEgc2luZ2xlIHF1ZXN0aW9uIG5hbWluZyB0aGUgbWlzc2luZyBwYXRoLiBEbyBub3QgYWxzbyByZXBvcnQgaW5saW5lIGNvbnRlbnQgZnJvbSB0aGUgYm9keSBpbiB0aGF0IGNhc2UuXG4tIElmIGJvdGggYCMjIFNob3BmbG9vciBTcGVjYCBhbmQgYCMjIFNob3BmbG9vciBQbGFuYCBhcmUgaW5saW5lIGluIHRoZSBzYW1lIGJvZHksIHJldHVybiBgc3RhdHVzOiBcIm5lZWRzX2NsYXJpZmljYXRpb25cImAgYXNraW5nIHRoZSB1c2VyIHRvIHBpY2sgb25lICh3ZSBkbyBub3QgeWV0IHN1cHBvcnQgc3RhZ2VkIHNlZWQgUFJzIGFjcm9zcyBib3RoIHN0YWdlcykuXG4tIElmIGJvdGggYW4gSDIgbWFya2VyIEFORCBhIHBhdGggbWFya2VyIGFyZSBwcmVzZW50IGZvciB0aGUgc2FtZSBzdGFnZSwgcmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCBhc2tpbmcgdGhlIHVzZXIgd2hpY2ggb25lIHRvIGhvbm9yLlxuLSBJZiBib3RoIGBTaG9wZmxvb3ItU3BlYy1QYXRoOmAgYW5kIGBTaG9wZmxvb3ItUGxhbi1QYXRoOmAgYXJlIHByZXNlbnQsIHRoYXQgaXMgYWxsb3dlZCBhbmQgcm91dGVzIHRoZSBpc3N1ZSBkaXJlY3RseSB0byBpbXBsZW1lbnRhdGlvbi5cbi0gQmUgY29uc2VydmF0aXZlOiBpZiB0aGUgYm9keSBkaXNjdXNzZXMgYSBzcGVjIHdpdGhvdXQgY29udGFpbmluZyBvbmUgKFwid2UgbmVlZCBhIHNwZWMgZm9yIFhcIiksIGRvIE5PVCByZXBvcnQgYSBzcGVjLlxuICA8L2FydGlmYWN0X2RldGVjdGlvbj5cblxuPGludmVzdGlnYXRpb24+XG5CZWZvcmUgY2xhc3NpZnlpbmcsIHJlYWQgZW5vdWdoIG9mIHRoZSByZXBvc2l0b3J5IHRvIGdyb3VuZCB5b3VyIGRlY2lzaW9uLiBHcmVwIGZvciByZWxldmFudCBmaWxlIHBhdGhzIGFuZCBtb2R1bGUgbmFtZXMgbWVudGlvbmVkIGluIHRoZSBpc3N1ZS4gT3BlbiBhbnkgZmlsZSB0aGUgaXNzdWUgZXhwbGljaXRseSByZWZlcmVuY2VzLiBEbyBub3QgZXhoYXVzdGl2ZWx5IHJlYWQgdGhlIGNvZGViYXNlIFx1MjAxNCByZWFkIG9ubHkgd2hhdCBpcyBuZWNlc3NhcnkgdG8gZGVjaWRlIGNvbXBsZXhpdHkgYW5kIHNwb3QgY29uZmxpY3RzIHdpdGggZXhpc3RpbmcgY29udmVudGlvbnMuXG48L2ludmVzdGlnYXRpb24+XG5cbjxyb290X2NhdXNlX2FuYWx5c2lzPlxuRm9yIGJ1Zy1zaGFwZWQgaXNzdWVzIG9ubHksIGF0dGVtcHQgYSBzdGF0aWMtYW5hbHlzaXMgcm9vdCBjYXVzZSBoeXBvdGhlc2lzIGdyb3VuZGVkIGluIGNvZGUgeW91IGFjdHVhbGx5IHJlYWQgZHVyaW5nIGA8aW52ZXN0aWdhdGlvbj5gLiBTdXJmYWNlIGl0IGFzIGEgdHJhaWxpbmcgYCMjIyBTdXNwZWN0ZWQgcm9vdCBjYXVzZWAgc3Vic2VjdGlvbiBhcHBlbmRlZCB0byB5b3VyIGByYXRpb25hbGVgIHN0cmluZy5cblxuQW4gaXNzdWUgaXMgKipidWctc2hhcGVkKiogd2hlbiBpdHMgdGl0bGUgb3IgYm9keSBkZXNjcmliZXMgYW55IG9mOlxuXG4tIEFuIG9ic2VydmVkIGRlZmVjdCwgcmVncmVzc2lvbiwgY3Jhc2gsIGhhbmcsIG9yIGZyZWV6ZS5cbi0gQW4gZXJyb3IgbWVzc2FnZSwgc3RhY2sgdHJhY2UsIG9yIGZhaWxpbmcgdGVzdCBvdXRwdXQuXG4tIEJlaGF2aW9yIHRoYXQgZGl2ZXJnZXMgZnJvbSBkb2N1bWVudGVkIG9yIGV4cGVjdGVkIGJlaGF2aW9yLlxuLSBBIHNlY3VyaXR5IG9yIGRhdGEtaW50ZWdyaXR5IGRlZmVjdCAoZGF0YSBsb3NzLCBsZWFrLCByYWNlLCBkZWFkbG9jaykuXG5cbkl0IGlzICoqbm90IGJ1Zy1zaGFwZWQqKiB3aGVuIHRoZSBpc3N1ZSBkZXNjcmliZXMgYSBuZXcgZmVhdHVyZSwgYSByZWZhY3RvciB3aXRob3V0IGEgZGVmZWN0LCBhIGRlcGVuZGVuY3kgYnVtcCwgYSBkb2N1bWVudGF0aW9uIG9yIGNvbW1lbnQgdXBkYXRlLCBvciBhIHB1cmUgY29uZmlndXJhdGlvbiBjaGFuZ2UuIEZvciBtaXhlZCBpc3N1ZXMgdGhhdCBtZW50aW9uIGEgZGVmZWN0IGFsb25nc2lkZSBhIHByaW1hcnkgZmVhdHVyZSBhc2ssIHRyZWF0IHRoZSBwcmltYXJ5IGZyYW1pbmcgYXMgZGVjaXNpdmUgYW5kIHNraXAgUkNBIHdoZW4gZmVhdHVyZS1maXJzdC5cblxuU2tpcCB0aGUgUkNBIHN1YnNlY3Rpb24gZW50aXJlbHkgKGRvIG5vdCBlbWl0IHRoZSBoZWFkaW5nIGF0IGFsbCkgd2hlbiBBTlkgb2YgdGhlIGZvbGxvd2luZyBhcHBseTpcblxuLSBUaGUgaXNzdWUgaXMgbm90IGJ1Zy1zaGFwZWQgcGVyIHRoZSBhYm92ZS5cbi0gYHN0YXR1c2AgaXMgYG5lZWRzX2NsYXJpZmljYXRpb25gLlxuLSBBIHN1cHBsaWVkIHNwZWMgb3Igc3VwcGxpZWQgcGxhbiBpcyBkZXRlY3RlZCBwZXIgYDxhcnRpZmFjdF9kZXRlY3Rpb24+YC5cblxuV2hlbiB5b3UgZG8gZW1pdCBSQ0EsIHBpY2sgYSBjb25maWRlbmNlIGxldmVsOlxuXG4tICoqaGlnaCoqOiBjbGVhciBjaGFpbiBmcm9tIHRoZSByZXBvcnRlZCBzeW1wdG9tIHRvIHNwZWNpZmljIGNvZGUgbGluZXMgeW91IHJlYWQuIFRoZSBmaXggaXMgZXNzZW50aWFsbHkgb2J2aW91cyBmcm9tIHRoZSBldmlkZW5jZS5cbi0gKiptZWRpdW0qKjogcGxhdXNpYmxlIGNvZGUgcGF0aCBpZGVudGlmaWVkOyBvbmUgb3IgdHdvIGp1ZGdtZW50IGNhbGxzIGJyaWRnZSBzeW1wdG9tIHRvIGNvZGUuXG4tICoqbG93Kio6IHlvdSByZWFkIHRoZSByZWxldmFudCBhcmVhIGJ1dCBjYW5ub3QgZm9ybSBhIGRlZmVuc2libGUgaHlwb3RoZXNpcy5cblxuRm9ybWF0IGZvciBgbWVkaXVtYCBhbmQgYGhpZ2hgIGNvbmZpZGVuY2UgKGNhcCB0aGUgZW50aXJlIHN1YnNlY3Rpb24gYXQgfjE1MCB3b3JkcyBpbmNsdWRpbmcgYnVsbGV0cyk6XG5cbmBgYFxuIyMjIFN1c3BlY3RlZCByb290IGNhdXNlXG4qKkNvbmZpZGVuY2U6KiogbWVkaXVtXG4qKkh5cG90aGVzaXM6KiogPDEtMiBzZW50ZW5jZXM+XG4qKkV2aWRlbmNlOioqXG4tIGBwYXRoL3RvL2ZpbGUuZXh0Ok5OYCAtIDx3aGF0IHlvdSBvYnNlcnZlZCBhdCB0aGF0IGxvY2F0aW9uPlxuLSBgcGF0aC90by9vdGhlci5leHQ6Tk5gIC0gPHdoYXQgeW91IG9ic2VydmVkIGF0IHRoYXQgbG9jYXRpb24+XG4qKlN1c3BlY3RlZCBmaXggYXJlYToqKiBgcGF0aC90by9maWxlLmV4dGAgKGZ1bmN0aW9uIG9yIHJlZ2lvbiBuYW1lKS5cbmBgYFxuXG5Gb3JtYXQgZm9yIGBsb3dgIGNvbmZpZGVuY2UgKHNpbmdsZSBsaW5lLCBubyBidWxsZXRzKTpcblxuYGBgXG4jIyMgU3VzcGVjdGVkIHJvb3QgY2F1c2VcbkNvdWxkbid0IHBpbiBkb3duIGEgbGlrZWx5IGNhdXNlIGZyb20gc3RhdGljIHJlYWRpbmcuXG5gYGBcblxuSGFyZCBydWxlczpcblxuLSBFdmVyeSBgKipFdmlkZW5jZToqKmAgYnVsbGV0IE1VU1QgY2l0ZSBhIHJlYWwgYHBhdGg6bGluZWAgcmVmZXJlbmNlIHlvdSBvYnNlcnZlZCB2aWEgUmVhZCBvciBHcmVwLiBEbyBOT1QgaW52ZW50IGxpbmUgbnVtYmVycy4gSWYgeW91IGNhbm5vdCBncm91bmQgYSBidWxsZXQgaW4gYSByZWFsIHJlZmVyZW5jZSwgZHJvcCBpdCAob3IgZG93bmdyYWRlIHRvIGBsb3dgIGNvbmZpZGVuY2UgaWYgbm8gYnVsbGV0cyByZW1haW4pLlxuLSBVc2UgcGxhaW4gQVNDSUkgaHlwaGVuLW1pbnVzIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdC4gRG8gbm90IHVzZSBlbS1kYXNoZXMgYW55d2hlcmUgaW4gdGhlIHN1YnNlY3Rpb24uXG4tIFRoZSBIMyBoZWFkaW5nIHRleHQgaXMgZXhhY3RseSBgIyMjIFN1c3BlY3RlZCByb290IGNhdXNlYC4gRG8gbm90IGxvY2FsaXplLCBhYmJyZXZpYXRlLCBvciBjaGFuZ2UgY2FwaXRhbGl6YXRpb24uXG4tIFRoZSBzdWJzZWN0aW9uIGFwcGVhcnMgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBgcmF0aW9uYWxlYCBzdHJpbmcsIHNlcGFyYXRlZCBmcm9tIHRoZSBwcmVjZWRpbmcgc2VudGVuY2VzIGJ5IGV4YWN0bHkgb25lIGJsYW5rIGxpbmUuXG4gIDwvcm9vdF9jYXVzZV9hbmFseXNpcz5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC4gRG8gbm90IG5hcnJhdGUgdGhlIEpTT04gaW4geW91ciByZXBseS5cblxuU2NoZW1hOlxuXG4tIGBzdGF0dXNgOiBcImNsYXNzaWZpZWRcIiB8IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiXG4tIGBjb21wbGV4aXR5YDogXCJxdWlja1wiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIiAoeW91ciBiZXN0IGd1ZXNzIGV2ZW4gd2hlbiBuZWVkc19jbGFyaWZpY2F0aW9uKVxuLSBgcmF0aW9uYWxlYDogMS0zIHNlbnRlbmNlcyBleHBsYWluaW5nIHRoZSBjbGFzc2lmaWNhdGlvbiBhbmQgd2hhdCB0aGUgbmV4dCBzdGFnZSBzaG91bGQgZm9jdXMgb25cbi0gYGNsYXJpZnlpbmdfcXVlc3Rpb25zYDogYXJyYXkgb2Ygc2luZ2xlLXF1ZXN0aW9uIHN0cmluZ3MgKGVtcHR5IHdoZW4gY2xhc3NpZmllZClcbi0gYHN1cHBsaWVkX3NwZWNgOiB7IHNvdXJjZTogXCJib2R5XCIgfCBcInBhdGhcIiwgcGF0aD8sIGNvbnRlbnQ/IH0gfCBudWxsLiBXaGVuIGBzb3VyY2VgIGlzIGBcImJvZHlcImAsIGBjb250ZW50YCBpcyBSRVFVSVJFRCBhbmQgbXVzdCBob2xkIHRoZSBmdWxsIGV4dHJhY3RlZCBhcnRpZmFjdCB0ZXh0OyB3aGVuIGBzb3VyY2VgIGlzIGBcInBhdGhcImAsIGBwYXRoYCBpcyBSRVFVSVJFRC5cbi0gYHN1cHBsaWVkX3BsYW5gOiBzYW1lIHNoYXBlIHwgbnVsbFxuXG5SdWxlczpcblxuLSBgc3RhdHVzOiBcImNsYXNzaWZpZWRcImAgcmVxdWlyZXMgbm9uLWVtcHR5IGBjb21wbGV4aXR5YCBhbmQgYHJhdGlvbmFsZWAuIGBjbGFyaWZ5aW5nX3F1ZXN0aW9uc2AgTVVTVCBiZSBlbXB0eS5cbi0gYHN0YXR1czogXCJuZWVkc19jbGFyaWZpY2F0aW9uXCJgIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGBjbGFyaWZ5aW5nX3F1ZXN0aW9uc2AgYXJyYXkuXG4tIEV2ZXJ5IHN0cmluZyBpbiBgY2xhcmlmeWluZ19xdWVzdGlvbnNgIG11c3QgYmUgYSBzaW5nbGUsIHNwZWNpZmljLCBhbnN3ZXJhYmxlIHF1ZXN0aW9uLiBObyBtdWx0aS1wYXJ0IHF1ZXN0aW9ucy5cbi0gSWYgdGhlIGlzc3VlIGlzIGJ1Zy1zaGFwZWQgcGVyIGA8cm9vdF9jYXVzZV9hbmFseXNpcz5gIGFuZCBgc3RhdHVzYCBpcyBgY2xhc3NpZmllZGAgYW5kIG5vIGBzdXBwbGllZF9zcGVjYCBvciBgc3VwcGxpZWRfcGxhbmAgaXMgZGV0ZWN0ZWQsIHRoZSBgcmF0aW9uYWxlYCBzdHJpbmcgTVVTVCBlbmQgd2l0aCBhIGAjIyMgU3VzcGVjdGVkIHJvb3QgY2F1c2VgIHN1YnNlY3Rpb24uIE90aGVyd2lzZSB0aGUgYHJhdGlvbmFsZWAgTVVTVCBOT1QgY29udGFpbiBzdWNoIGEgc3Vic2VjdGlvbi5cbi0gYHN1cHBsaWVkX3NwZWNgIGFuZCBgc3VwcGxpZWRfcGxhbmAgZGVmYXVsdCB0byBgbnVsbGAuIFNldCB0aGVtIG9ubHkgd2hlbiB5b3UgZGV0ZWN0IGEgc3VwcGxpZWQgYXJ0aWZhY3QgcGVyIGA8YXJ0aWZhY3RfZGV0ZWN0aW9uPmAuIFdoZW4gYHNvdXJjZWAgaXMgYHBhdGhgLCBzZXQgYHBhdGhgIGFuZCBvbWl0IGBjb250ZW50YDsgd2hlbiBgc291cmNlYCBpcyBgYm9keWAsIHB1dCB0aGUgZnVsbCBleHRyYWN0ZWQgYXJ0aWZhY3QgdGV4dCBpbiBgY29udGVudGAgYW5kIG9taXQgYHBhdGhgLiBBbiBhcnRpZmFjdCBtaXNzaW5nIGl0cyByZXF1aXJlZCBmaWVsZCAoYSBgYm9keWAgYXJ0aWZhY3Qgd2l0aCBubyBgY29udGVudGAsIG9yIGEgYHBhdGhgIGFydGlmYWN0IHdpdGggbm8gYHBhdGhgKSBpcyB1bnVzYWJsZSBhbmQgd2lsbCBiZSBkaXNjYXJkZWQgYXMgaWYgbm8gYXJ0aWZhY3Qgd2FzIGRldGVjdGVkLCBzbyBhbHdheXMgcG9wdWxhdGUgdGhlIHJlcXVpcmVkIGZpZWxkLlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZSBudW1iZXI6ICN7eyBpc3N1ZV9udW1iZXIgfX1cblxuPGlzc3VlPlxuPHRpdGxlPnt7IGlzc3VlX3RpdGxlIH19PC90aXRsZT5cbjxib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9ib2R5PlxuPGV4aXN0aW5nX2NvbW1lbnRzPlxue3sgaXNzdWVfY29tbWVudHMgfX1cbjwvZXhpc3RpbmdfY29tbWVudHM+XG48L2lzc3VlPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbi8vIFRyaWFnZSBpcyByZWFkLW9ubHkuIFRoZSBDbGF1ZGUgU0RLIHByb3ZpZGVzIFJlYWQvR2xvYi9HcmVwL1dlYkZldGNoIGJ5XG4vLyBkZWZhdWx0OyB3ZSBhZGQgbm8gR2l0SHViLW11dGF0aW9uIHRvb2xzIGhlcmUuIFByb2dyZXNzIHVwZGF0ZXMgZG8gbm90XG4vLyBhcHBseSBiZWNhdXNlIG5vIHBpbm5lZCBjb21tZW50IGV4aXN0cyBhdCB0cmlhZ2UgdGltZS5cbmV4cG9ydCBmdW5jdGlvbiB0cmlhZ2VUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyByZW5kZXJUZW1wbGF0ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3Byb21wdHMuanNcIjtcbmltcG9ydCB7IFRyaWFnZURlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyB0cmlhZ2VUb29scyB9IGZyb20gXCIuL3Rvb2xzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVHJpYWdlQXJncyB7XG4gIGlzc3VlQ29tbWVudHM6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blRyaWFnZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IFJ1blRyaWFnZUFyZ3MsXG4pOiBQcm9taXNlPFRyaWFnZURlY2lzaW9uPiB7XG4gIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJydW5UcmlhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB1c2VyUHJvbXB0ID0gcmVuZGVyVGVtcGxhdGUoVVNFUl9UTVBMLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICBpc3N1ZV90aXRsZTogY3R4Lmlzc3VlLnRpdGxlLFxuICAgIGlzc3VlX2JvZHk6IGN0eC5pc3N1ZS5ib2R5ID8/IFwiXCIsXG4gICAgaXNzdWVfY29tbWVudHM6IGFyZ3MuaXNzdWVDb21tZW50cyxcbiAgfSk7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQsXG4gICAgdG9vbHM6IHRyaWFnZVRvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IFRyaWFnZURlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnRyaWFnZU1vZGVsLFxuICAgIGVmZm9ydDogY3R4LmNvbmZpZy50cmlhZ2VFZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLnRyaWFnZU1heEJ1ZGdldFVzZCxcbiAgICAuLi4oY3R4LmNvbmZpZy50cmlhZ2VNYXhUdXJucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcudHJpYWdlTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLnRyaWFnZVRpbWVvdXRNcyxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb21wbGV4aXR5IH0gZnJvbSBcIi4vbGFiZWxzLmpzXCI7XG5pbXBvcnQge1xuICBicmFuY2hTbHVnLFxuICBwYXJzZUlzc3VlTWV0YWRhdGEsXG4gIHBhcnNlUHJNZXRhZGF0YSxcbiAgcGFyc2VTdGFnZUJyYW5jaFJlZixcbn0gZnJvbSBcIi4vbWV0YWRhdGEuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgSXNzdWVQYXlsb2FkLFxuICBQdWxsUmVxdWVzdFBheWxvYWQsXG4gIFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZCxcbiAgUm91dGVyRGVjaXNpb24sXG4gIFN0YXRlQ29udGV4dCxcbn0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuY29uc3QgU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJzaG9wZmxvb3I6dHJpYWdpbmdcIixcbiAgXCJzaG9wZmxvb3I6YXdhaXRpbmctaW5mb1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1zcGVjXCIsXG4gIFwic2hvcGZsb29yOnNwZWMtaW4tcmV2aWV3XCIsXG4gIFwic2hvcGZsb29yOm5lZWRzLXBsYW5cIixcbiAgXCJzaG9wZmxvb3I6cGxhbi1pbi1yZXZpZXdcIixcbiAgXCJzaG9wZmxvb3I6bmVlZHMtaW1wbFwiLFxuICBcInNob3BmbG9vcjppbXBsLWluLXJldmlld1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1yZXZpZXdcIixcbiAgXCJzaG9wZmxvb3I6cmV2aWV3LXJlcXVlc3RlZC1jaGFuZ2VzXCIsXG4gIFwic2hvcGZsb29yOnJldmlldy1hcHByb3ZlZFwiLFxuICBcInNob3BmbG9vcjpyZXZpZXctc3R1Y2tcIixcbiAgXCJzaG9wZmxvb3I6ZG9uZVwiLFxuICAvLyB0cmFuc2llbnQgbXV0ZXggbWFya2VycyAoc3BlYyA1LjQpXG4gIFwic2hvcGZsb29yOnNwZWMtcnVubmluZ1wiLFxuICBcInNob3BmbG9vcjpwbGFuLXJ1bm5pbmdcIixcbiAgXCJzaG9wZmxvb3I6aW1wbGVtZW50aW5nXCIsXG4gIFwic2hvcGZsb29yOnJldmlldy1ydW5uaW5nXCIsXG5dKTtcblxuY29uc3QgQ09NUExFWElUWV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIENvbXBsZXhpdHk+ID0ge1xuICBcInNob3BmbG9vcjpxdWlja1wiOiBcInF1aWNrXCIsXG4gIFwic2hvcGZsb29yOm1lZGl1bVwiOiBcIm1lZGl1bVwiLFxuICBcInNob3BmbG9vcjpsYXJnZVwiOiBcImxhcmdlXCIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlKGN0eDogU3RhdGVDb250ZXh0KTogUm91dGVyRGVjaXNpb24ge1xuICBzd2l0Y2ggKGN0eC5ldmVudE5hbWUpIHtcbiAgICBjYXNlIFwiaXNzdWVzXCI6XG4gICAgICByZXR1cm4gcmVzb2x2ZUlzc3VlRXZlbnQoXG4gICAgICAgIGN0eC5wYXlsb2FkIGFzIElzc3VlUGF5bG9hZCxcbiAgICAgICAgY3R4LnRyaWdnZXJMYWJlbCxcbiAgICAgICAgY3R4LmxpdmVMYWJlbHMsXG4gICAgICApO1xuICAgIGNhc2UgXCJpc3N1ZV9jb21tZW50XCI6XG4gICAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJpc3N1ZV9jb21tZW50X25vX2FjdGlvbl92MF8xXCIgfTtcbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0XCI6XG4gICAgICByZXR1cm4gcmVzb2x2ZVB1bGxSZXF1ZXN0RXZlbnQoY3R4LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RQYXlsb2FkKTtcbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0X3Jldmlld1wiOlxuICAgICAgcmV0dXJuIHJlc29sdmVQdWxsUmVxdWVzdFJldmlld0V2ZW50KFxuICAgICAgICBjdHgucGF5bG9hZCBhcyBQdWxsUmVxdWVzdFJldmlld1BheWxvYWQsXG4gICAgICAgIGN0eC5zaG9wZmxvb3JCb3RMb2dpbixcbiAgICAgICk7XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdF9yZXZpZXdfY29tbWVudFwiOlxuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicmV2aWV3X2NvbW1lbnRfbm90X2FfdHJpZ2dlcl92MF8xXCIgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IGB1bmhhbmRsZWRfZXZlbnQ6JHtjdHguZXZlbnROYW1lfWAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc3N1ZUxhYmVsU2V0KGlzc3VlOiB7XG4gIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG59KTogU2V0PHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFNldChpc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcbn1cblxuZnVuY3Rpb24gcHJMYWJlbFNldChwcjogeyBsYWJlbHM6IEFycmF5PHsgbmFtZTogc3RyaW5nIH0+IH0pOiBTZXQ8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgU2V0KHByLmxhYmVscy5tYXAoKGwpID0+IGwubmFtZSkpO1xufVxuXG5mdW5jdGlvbiBzdGF0ZUxhYmVsKGxhYmVsczogU2V0PHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBsIG9mIGxhYmVscykgaWYgKFNUQVRFX0xBQkVMUy5oYXMobCkpIHJldHVybiBsO1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gY29tcGxleGl0eU9mKGxhYmVsczogU2V0PHN0cmluZz4pOiBDb21wbGV4aXR5IHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBbbCwgY10gb2YgT2JqZWN0LmVudHJpZXMoQ09NUExFWElUWV9MQUJFTFMpKVxuICAgIGlmIChsYWJlbHMuaGFzKGwpKSByZXR1cm4gYztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuY29uc3QgQURWQU5DRU1FTlRfU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJzaG9wZmxvb3I6bmVlZHMtc3BlY1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1wbGFuXCIsXG4gIFwic2hvcGZsb29yOm5lZWRzLWltcGxcIixcbl0pO1xuXG5jb25zdCBGQUlMRURfTEFCRUxfUFJFRklYID0gXCJzaG9wZmxvb3I6ZmFpbGVkOlwiO1xuXG5mdW5jdGlvbiBmYWlsZWRMYWJlbChsYWJlbHM6IFNldDxzdHJpbmc+KTogc3RyaW5nIHwgbnVsbCB7XG4gIGZvciAoY29uc3QgbCBvZiBsYWJlbHMpIGlmIChsLnN0YXJ0c1dpdGgoRkFJTEVEX0xBQkVMX1BSRUZJWCkpIHJldHVybiBsO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gSW5saW5lZCBmcm9tIHJvdXRlci9zcmMvaGVscGVycy9yZXNvbHZlLWFydGlmYWN0LXBhdGhzLnRzICgyMiBsaW5lcykuXG4vLyBPbmx5IHVzZWQgYnkgY29tcHV0ZVN0YWdlRnJvbUxhYmVscyBhbmQgbm90IHNoYXJlZCBlbHNld2hlcmUgaW4gdjIuXG5jb25zdCBDQU5PTklDQUxfU1BFQ19ESVIgPSBcImRvY3Mvc2hvcGZsb29yL3NwZWNzXCI7XG5jb25zdCBDQU5PTklDQUxfUExBTl9ESVIgPSBcImRvY3Mvc2hvcGZsb29yL3BsYW5zXCI7XG5cbmZ1bmN0aW9uIHJlc29sdmVBcnRpZmFjdFBhdGhzKFxuICBpc3N1ZU51bWJlcjogbnVtYmVyLFxuICBzbHVnOiBzdHJpbmcsXG4gIG1ldGFkYXRhOiB7IHNwZWNQYXRoPzogc3RyaW5nOyBwbGFuUGF0aD86IHN0cmluZyB9IHwgbnVsbCxcbik6IHsgc3BlY0ZpbGVQYXRoOiBzdHJpbmc7IHBsYW5GaWxlUGF0aDogc3RyaW5nIH0ge1xuICByZXR1cm4ge1xuICAgIHNwZWNGaWxlUGF0aDpcbiAgICAgIG1ldGFkYXRhPy5zcGVjUGF0aCA/PyBgJHtDQU5PTklDQUxfU1BFQ19ESVJ9LyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z30ubWRgLFxuICAgIHBsYW5GaWxlUGF0aDpcbiAgICAgIG1ldGFkYXRhPy5wbGFuUGF0aCA/PyBgJHtDQU5PTklDQUxfUExBTl9ESVJ9LyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z30ubWRgLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVJldmlzZVN0YWdlRnJvbUxhYmVscyhcbiAgbGFiZWxzOiBTZXQ8c3RyaW5nPixcbiAgaXNzdWU6IHsgbnVtYmVyOiBudW1iZXI7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB8IG51bGwgfSxcbik6IFJvdXRlckRlY2lzaW9uIHwgbnVsbCB7XG4gIGNvbnN0IGlzc3VlTnVtYmVyID0gaXNzdWUubnVtYmVyO1xuICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlSXNzdWVNZXRhZGF0YShpc3N1ZS5ib2R5KTtcbiAgY29uc3Qgc2x1ZyA9IG1ldGFkYXRhPy5zbHVnID8/IGJyYW5jaFNsdWcoaXNzdWUudGl0bGUpO1xuICBjb25zdCB7IHNwZWNGaWxlUGF0aCwgcGxhbkZpbGVQYXRoIH0gPSByZXNvbHZlQXJ0aWZhY3RQYXRocyhcbiAgICBpc3N1ZU51bWJlcixcbiAgICBzbHVnLFxuICAgIG1ldGFkYXRhLFxuICApO1xuICBjb25zdCBjb21wbGV4aXR5ID0gY29tcGxleGl0eU9mKGxhYmVscyk7XG4gIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOnNwZWMtaW4tcmV2aWV3XCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgLi4uKGNvbXBsZXhpdHkgIT09IHVuZGVmaW5lZCA/IHsgY29tcGxleGl0eSB9IDoge30pLFxuICAgICAgYnJhbmNoTmFtZTogYHNob3BmbG9vci9zcGVjLyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z31gLFxuICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgIH07XG4gIH1cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6cGxhbi1pbi1yZXZpZXdcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicGxhblwiLFxuICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAuLi4oY29tcGxleGl0eSAhPT0gdW5kZWZpbmVkID8geyBjb21wbGV4aXR5IH0gOiB7fSksXG4gICAgICBicmFuY2hOYW1lOiBgc2hvcGZsb29yL3BsYW4vJHtpc3N1ZU51bWJlcn0tJHtzbHVnfWAsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICBwbGFuRmlsZVBhdGgsXG4gICAgfTtcbiAgfVxuICBpZiAoXG4gICAgbGFiZWxzLmhhcyhcInNob3BmbG9vcjppbXBsLWluLXJldmlld1wiKSB8fFxuICAgIGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6bmVlZHMtcmV2aWV3XCIpIHx8XG4gICAgbGFiZWxzLmhhcyhcInNob3BmbG9vcjpyZXZpZXctcmVxdWVzdGVkLWNoYW5nZXNcIilcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcImltcGxlbWVudFwiLFxuICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAuLi4oY29tcGxleGl0eSAhPT0gdW5kZWZpbmVkID8geyBjb21wbGV4aXR5IH0gOiB7fSksXG4gICAgICBicmFuY2hOYW1lOiBgc2hvcGZsb29yL2ltcGwvJHtpc3N1ZU51bWJlcn0tJHtzbHVnfWAsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICBwbGFuRmlsZVBhdGgsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGFnZUZyb21MYWJlbHMoXG4gIGxhYmVsczogU2V0PHN0cmluZz4sXG4gIGlzc3VlOiB7IG51bWJlcjogbnVtYmVyOyB0aXRsZTogc3RyaW5nOyBib2R5OiBzdHJpbmcgfCBudWxsIH0sXG4pOiBSb3V0ZXJEZWNpc2lvbiB8IG51bGwge1xuICBjb25zdCBpc3N1ZU51bWJlciA9IGlzc3VlLm51bWJlcjtcbiAgLy8gUHJlZmVyIHRoZSBzbHVnIHBlcnNpc3RlZCBpbiB0aGUgaXNzdWUgYm9keSBtZXRhZGF0YSBibG9jayBzbyB0aXRsZVxuICAvLyByZW5hbWVzIGFmdGVyIHRyaWFnZSBkb24ndCBzdHJhbmQgbGF0ZXIgc3RhZ2VzIGFnYWluc3QgZmlsZSBwYXRocyB0aGF0XG4gIC8vIG5vIGxvbmdlciBleGlzdC4gRmFsbCBiYWNrIHRvIGRlcml2aW5nIGZyb20gdGhlIHRpdGxlIGZvciBsZWdhY3kgaXNzdWVzXG4gIC8vIHdob3NlIG1ldGFkYXRhIGJsb2NrIGhhcyBub3QgeWV0IGJlZW4gd3JpdHRlbi5cbiAgY29uc3QgbWV0YWRhdGEgPSBwYXJzZUlzc3VlTWV0YWRhdGEoaXNzdWUuYm9keSk7XG4gIGNvbnN0IHNsdWcgPSBtZXRhZGF0YT8uc2x1ZyA/PyBicmFuY2hTbHVnKGlzc3VlLnRpdGxlKTtcbiAgY29uc3QgeyBzcGVjRmlsZVBhdGgsIHBsYW5GaWxlUGF0aCB9ID0gcmVzb2x2ZUFydGlmYWN0UGF0aHMoXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgc2x1ZyxcbiAgICBtZXRhZGF0YSxcbiAgKTtcbiAgY29uc3QgY29tcGxleGl0eSA9IGNvbXBsZXhpdHlPZihsYWJlbHMpO1xuICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpuZWVkcy1zcGVjXCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgLi4uKGNvbXBsZXhpdHkgIT09IHVuZGVmaW5lZCA/IHsgY29tcGxleGl0eSB9IDoge30pLFxuICAgICAgYnJhbmNoTmFtZTogYHNob3BmbG9vci9zcGVjLyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z31gLFxuICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgIH07XG4gIH1cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6bmVlZHMtcGxhblwiKSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJwbGFuXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIC4uLihjb21wbGV4aXR5ICE9PSB1bmRlZmluZWQgPyB7IGNvbXBsZXhpdHkgfSA6IHt9KSxcbiAgICAgIGJyYW5jaE5hbWU6IGBzaG9wZmxvb3IvcGxhbi8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YCxcbiAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgIHBsYW5GaWxlUGF0aCxcbiAgICB9O1xuICB9XG4gIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOm5lZWRzLWltcGxcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIC4uLihjb21wbGV4aXR5ICE9PSB1bmRlZmluZWQgPyB7IGNvbXBsZXhpdHkgfSA6IHt9KSxcbiAgICAgIGJyYW5jaE5hbWU6IGBzaG9wZmxvb3IvaW1wbC8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YCxcbiAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgIHBsYW5GaWxlUGF0aCxcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlSXNzdWVFdmVudChcbiAgcGF5bG9hZDogSXNzdWVQYXlsb2FkLFxuICB0cmlnZ2VyTGFiZWw/OiBzdHJpbmcsXG4gIGxpdmVMYWJlbHM/OiBzdHJpbmdbXSxcbik6IFJvdXRlckRlY2lzaW9uIHtcbiAgY29uc3QgbGFiZWxzID0gbGl2ZUxhYmVsc1xuICAgID8gbmV3IFNldChsaXZlTGFiZWxzKVxuICAgIDogaXNzdWVMYWJlbFNldChwYXlsb2FkLmlzc3VlKTtcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBwYXlsb2FkLmlzc3VlLm51bWJlcjtcbiAgY29uc3QgaGFzU3RhdGVMYWJlbCA9IHN0YXRlTGFiZWwobGFiZWxzKSAhPT0gbnVsbDtcblxuICBpZiAocGF5bG9hZC5pc3N1ZS5zdGF0ZSA9PT0gXCJjbG9zZWRcIikge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgaXNzdWVOdW1iZXIsIHJlYXNvbjogXCJpc3N1ZV9jbG9zZWRfYWJvcnRlZFwiIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5pc3N1ZS5wdWxsX3JlcXVlc3QpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJpc3N1ZV9ldmVudF9pc19hY3R1YWxseV9hX3ByXCIgfTtcbiAgfVxuXG4gIC8vIFJldHJ5LWZyb20tZmFpbHVyZTogcmVtb3ZpbmcgYSBzaG9wZmxvb3I6ZmFpbGVkOjxzdGFnZT4gbGFiZWwgaXMgdGhlIGV4cGxpY2l0XG4gIC8vIGh1bWFuIHNpZ25hbCB0byByZXRyeSB0aGF0IHN0YWdlLiBUaGlzIG11c3QgcnVuIEJFRk9SRSB0aGUgZmFpbGVkLWxhYmVsIGdhdGVcbiAgLy8gYmVsb3csIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhpcyBldmVudCBmaXJlcywgdGhlIGZhaWxlZCBsYWJlbCBpcyBhbHJlYWR5IGdvbmVcbiAgLy8gZnJvbSBpc3N1ZS5sYWJlbHMgYW5kIHdlIG5lZWQgdGhlIHBheWxvYWQubGFiZWwubmFtZSB0byBrbm93IHdoaWNoIHN0YWdlIHRvIHJldHJ5LlxuICBpZiAoXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwidW5sYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lPy5zdGFydHNXaXRoKEZBSUxFRF9MQUJFTF9QUkVGSVgpXG4gICkge1xuICAgIGNvbnN0IGZhaWxlZFN0YWdlID0gcGF5bG9hZC5sYWJlbC5uYW1lLnNsaWNlKEZBSUxFRF9MQUJFTF9QUkVGSVgubGVuZ3RoKTtcbiAgICBjb25zdCByZXRyeVJlYXNvbiA9IGByZXRyeV9hZnRlcl8ke3BheWxvYWQubGFiZWwubmFtZX1fcmVtb3ZlZGA7XG4gICAgLy8gSWYgdGhlIHBpcGVsaW5lIGhhZCBhbHJlYWR5IHByb2dyZXNzZWQgcGFzdCB0cmlhZ2UgYmVmb3JlIHRoZSBmYWlsdXJlLCByZW1haW5pbmdcbiAgICAvLyBzdGF0ZSBsYWJlbHMgKG5lZWRzLXNwZWMvcGxhbi9pbXBsKSB0ZWxsIHVzIHdoZXJlIHRvIHJlc3VtZS5cbiAgICBjb25zdCBkZXJpdmVkID0gY29tcHV0ZVN0YWdlRnJvbUxhYmVscyhsYWJlbHMsIHBheWxvYWQuaXNzdWUpO1xuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm4geyAuLi5kZXJpdmVkLCByZWFzb246IHJldHJ5UmVhc29uIH07XG4gICAgfVxuICAgIGlmIChmYWlsZWRTdGFnZSA9PT0gXCJ0cmlhZ2VcIikge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwidHJpYWdlXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IHJldHJ5UmVhc29uIH07XG4gICAgfVxuICAgIC8vIFJldmlldyBpcyBkcml2ZW4gYnkgaW1wbC1QUiBldmVudHMgKHN5bmNocm9uaXplIC8gcmVhZHlfZm9yX3JldmlldyksXG4gICAgLy8gbm90IGlzc3VlIGV2ZW50cy4gUmVtb3Zpbmcgc2hvcGZsb29yOmZhaWxlZDpyZXZpZXcgY2xlYXJzIHRoZVxuICAgIC8vIGZhaWxlZC1sYWJlbCBnYXRlIHNvIHRoZSBuZXh0IHB1c2ggdG8gdGhlIGltcGwgUFIgY2FuIHJldHJpZ2dlclxuICAgIC8vIHJldmlldyBuYXR1cmFsbHk7IHRoZXJlIGlzIG5vIGlzc3VlLXNpZGUgYWN0aW9uIHRvIHRha2UgaGVyZS4gVGhlXG4gICAgLy8gZGVzY3JpcHRpdmUgcmVhc29uIG1ha2VzIHRoaXMgdmlzaWJsZSBpbiByb3V0ZXIgbG9ncyBhbmQgbWF0Y2hlcyB0aGVcbiAgICAvLyByZXRyeSBpbnN0cnVjdGlvbnMgc3VyZmFjZWQgYnkgcmVwb3J0LWZhaWx1cmUgZm9yIHN0YWdlPXJldmlldy5cbiAgICBpZiAoZmFpbGVkU3RhZ2UgPT09IFwicmV2aWV3XCIgJiYgbGFiZWxzLmhhcyhcInNob3BmbG9vcjpuZWVkcy1yZXZpZXdcIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAgIHJlYXNvbjogXCJyZXRyeV9yZXZpZXdfY2xlYXJlZF9hd2FpdGluZ19uZXh0X3B1c2hcIixcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYHJldHJ5XyR7ZmFpbGVkU3RhZ2V9X25vX3N0YXRlX2xhYmVsX3ByZXNlbnRgLFxuICAgIH07XG4gIH1cblxuICAvLyBGYWlsZWQtbGFiZWwgZ2F0ZTogYW55IGlzc3VlIGNhcnJ5aW5nIHNob3BmbG9vcjpmYWlsZWQ6KiBpcyBwYXJrZWQgdW50aWwgYVxuICAvLyBodW1hbiByZW1vdmVzIHRoYXQgbGFiZWwuIFRoaXMgcHJldmVudHMgdGhlIHNlY29uZCBydW4gb2YgYSBkb3VibGUtZmlyZWQgZXZlbnRcbiAgLy8gKG9wZW5lZCArIGxhYmVsZWQgb24gdGhlIHNhbWUgb3BlbikgZnJvbSByZS10cmlnZ2VyaW5nIHRyaWFnZSBhZnRlciB0aGUgZmlyc3RcbiAgLy8gcnVuIGFscmVhZHkgcmVjb3JkZWQgYSBmYWlsdXJlLlxuICBjb25zdCBibG9ja2luZ0ZhaWxlZCA9IGZhaWxlZExhYmVsKGxhYmVscyk7XG4gIGlmIChibG9ja2luZ0ZhaWxlZCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYGJsb2NrZWRfYnlfJHtibG9ja2luZ0ZhaWxlZH1gLFxuICAgIH07XG4gIH1cblxuICBpZiAoXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwidW5sYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lID09PSBcInNob3BmbG9vcjpyZXZpZXctc3R1Y2tcIlxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogXCJyZXZpZXdfc3R1Y2tfcmVtb3ZlZF9mb3JjZV9yZXZpZXdcIixcbiAgICB9O1xuICB9XG5cbiAgLy8gVHJpZ2dlci1sYWJlbCBnYXRpbmc6IHdoZW4gYSB0cmlnZ2VyIGxhYmVsIGlzIGNvbmZpZ3VyZWQsIHdlIG9ubHkgbGV0IGlzc3Vlc1xuICAvLyBlbnRlciB0aGUgcGlwZWxpbmUgaWYgdGhleSBjYXJyeSBpdC4gSXNzdWVzIGFscmVhZHkgbWlkLXBpcGVsaW5lIChpZGVudGlmaWVkIGJ5XG4gIC8vIGFueSBzaG9wZmxvb3I6KiBzdGF0ZSBsYWJlbCkgYXJlIGdyYW5kZmF0aGVyZWQgaW4gc28gcmVtb3ZpbmcgdGhlIHRyaWdnZXIgbGFiZWxcbiAgLy8gbGF0ZXIgZG9lcyBub3Qgc3RyYW5kIGluLWZsaWdodCB3b3JrLlxuICBpZiAoXG4gICAgdHJpZ2dlckxhYmVsICYmXG4gICAgdHJpZ2dlckxhYmVsLmxlbmd0aCA+IDAgJiZcbiAgICAhbGFiZWxzLmhhcyh0cmlnZ2VyTGFiZWwpICYmXG4gICAgIWhhc1N0YXRlTGFiZWxcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCBpc3N1ZU51bWJlciwgcmVhc29uOiBcInRyaWdnZXJfbGFiZWxfYWJzZW50XCIgfTtcbiAgfVxuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJ1bmxhYmVsZWRcIiAmJlxuICAgIHBheWxvYWQubGFiZWw/Lm5hbWUgPT09IFwic2hvcGZsb29yOmF3YWl0aW5nLWluZm9cIlxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwidHJpYWdlXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogXCJyZV90cmlhZ2VfYWZ0ZXJfY2xhcmlmaWNhdGlvblwiLFxuICAgIH07XG4gIH1cblxuICAvLyBNYW51YWwgc3RhZ2UgcmUtcnVuOiBhZGRpbmcgc2hvcGZsb29yOnJldmlzZSB0ZWxscyBTaG9wZmxvb3IgdG8gcmUtcnVuXG4gIC8vIHdoYXRldmVyIHN0YWdlIHRoZSBpc3N1ZSBpcyBjdXJyZW50bHkgcGFya2VkIGluICgqLWluLXJldmlldykuIFRoZSBzdGFnZSdzXG4gIC8vIGFwcGx5IHN0ZXAgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSByZXZpc2UgbGFiZWwgc28gdGhlIHRyaWdnZXJcbiAgLy8gZG9lcyBub3QgZG91YmxlLWZpcmUuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJsYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lID09PSBcInNob3BmbG9vcjpyZXZpc2VcIlxuICApIHtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjphd2FpdGluZy1pbmZvXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFnZTogXCJ0cmlhZ2VcIixcbiAgICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAgIHJlYXNvbjogXCJyZXZpc2VfbGFiZWxfYWRkZWRfcmVfdHJpYWdlXCIsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkZXJpdmVkID0gY29tcHV0ZVJldmlzZVN0YWdlRnJvbUxhYmVscyhsYWJlbHMsIHBheWxvYWQuaXNzdWUpO1xuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm4geyAuLi5kZXJpdmVkLCByZWFzb246IFwicmV2aXNlX2xhYmVsX2FkZGVkXCIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgcmVhc29uOiBcInJldmlzZV9sYWJlbF9hZGRlZF9ub19pbl9yZXZpZXdfc3RhdGVcIixcbiAgICB9O1xuICB9XG5cbiAgLy8gV2hlbiBhIHRyaWdnZXIgbGFiZWwgaXMgY29uZmlndXJlZCwgb3BlbmluZyBhbiBpc3N1ZSB3aXRoIHRoYXQgbGFiZWwgYWxyZWFkeVxuICAvLyBwcmVzZW50IGZpcmVzIEJPVEggYW4gJ29wZW5lZCcgZXZlbnQgYW5kIGEgJ2xhYmVsZWQnIGV2ZW50LiBXZSB0cmVhdCB0aGVcbiAgLy8gJ2xhYmVsZWQnIGV2ZW50IGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBlbnRyeSBhbmQgc3VwcHJlc3MgJ29wZW5lZCdcbiAgLy8gdG8gYXZvaWQgZG91YmxlLXRyaWdnZXJpbmcgdHJpYWdlLiBJZiB0aGUgdHJpZ2dlciBsYWJlbCBpcyBhYnNlbnQsIHRoZSBnYXRlXG4gIC8vIGFib3ZlIGFscmVhZHkgcmV0dXJuZWQ7IHRoaXMgYnJhbmNoIG9ubHkgcnVucyB3aGVuIHRoZSBsYWJlbCBJUyBwcmVzZW50LlxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwib3BlbmVkXCIgJiYgdHJpZ2dlckxhYmVsICYmIHRyaWdnZXJMYWJlbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgcmVhc29uOiBcIm9wZW5lZF9kZWZlcnJlZF90b19sYWJlbGVkX2V2ZW50XCIsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gXCJvcGVuZWRcIiAmJiAhaGFzU3RhdGVMYWJlbCkge1xuICAgIHJldHVybiB7IHN0YWdlOiBcInRyaWFnZVwiLCBpc3N1ZU51bWJlciB9O1xuICB9XG5cbiAgLy8gV2hlbiBhIHRyaWdnZXIgbGFiZWwgaXMgY29uZmlndXJlZCwgYWRkaW5nIGl0IHRvIGEgcHJldmlvdXNseS1pZ25vcmVkIGlzc3VlXG4gIC8vIChvciBvcGVuaW5nIGFuIGlzc3VlIHdpdGggaXQgYWxyZWFkeSBwcmVzZW50KSBlbnRlcnMgdGhlIHBpcGVsaW5lIGF0IHRyaWFnZS5cbiAgaWYgKFxuICAgIHRyaWdnZXJMYWJlbCAmJlxuICAgIHRyaWdnZXJMYWJlbC5sZW5ndGggPiAwICYmXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwibGFiZWxlZFwiICYmXG4gICAgcGF5bG9hZC5sYWJlbD8ubmFtZSA9PT0gdHJpZ2dlckxhYmVsICYmXG4gICAgIWhhc1N0YXRlTGFiZWxcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwidHJpYWdlXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IFwidHJpZ2dlcl9sYWJlbF9hZGRlZFwiIH07XG4gIH1cblxuICAvLyBTdGF0ZS1sYWJlbCBhZHZhbmNlbWVudDogb25seSBmaXJlIHdoZW4gdGhlIGV2ZW50IGlzIGEgJ2xhYmVsZWQnIGFjdGlvbiBBTkQgdGhlXG4gIC8vIGxhYmVsIHRoYXQgd2FzIGp1c3QgYWRkZWQgaXMgb25lIG9mIHRoZSBhZHZhbmNlbWVudCBzdGF0ZSBsYWJlbHMuIFRoaXMgcHJldmVudHNcbiAgLy8gaW5jaWRlbnRhbCBldmVudHMgKGVkaXRlZCwgYXNzaWduZWQsIHVucmVsYXRlZCBsYWJlbHMsIHF1ZXVlZCByZS1ydW5zIG9mIGVhcmxpZXJcbiAgLy8gZXZlbnRzKSBmcm9tIHJlLWVudGVyaW5nIHNwZWMvcGxhbi9pbXBsZW1lbnQgZm9yIGFuIGFscmVhZHktYWR2YW5jZWQgaXNzdWUuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJsYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lICYmXG4gICAgQURWQU5DRU1FTlRfU1RBVEVfTEFCRUxTLmhhcyhwYXlsb2FkLmxhYmVsLm5hbWUpXG4gICkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBjb21wdXRlU3RhZ2VGcm9tTGFiZWxzKGxhYmVscywgcGF5bG9hZC5pc3N1ZSk7XG4gICAgaWYgKGRlcml2ZWQpIHJldHVybiBkZXJpdmVkO1xuICB9XG5cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6YXdhaXRpbmctaW5mb1wiKSkge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgaXNzdWVOdW1iZXIsIHJlYXNvbjogXCJhd2FpdGluZ19pbmZvX3BhdXNlZFwiIH07XG4gIH1cblxuICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IFwibm9fbWF0Y2hpbmdfbGFiZWxfcnVsZVwiIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQdWxsUmVxdWVzdEV2ZW50KHBheWxvYWQ6IFB1bGxSZXF1ZXN0UGF5bG9hZCk6IFJvdXRlckRlY2lzaW9uIHtcbiAgY29uc3QgcHIgPSBwYXlsb2FkLnB1bGxfcmVxdWVzdDtcbiAgY29uc3QgbWV0YSA9IHBhcnNlUHJNZXRhZGF0YShwci5ib2R5KTtcbiAgaWYgKCFtZXRhKSByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJwcl9oYXNfbm9fc2hvcGZsb29yX21ldGFkYXRhXCIgfTtcblxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwiY2xvc2VkXCIgJiYgcHIubWVyZ2VkKSB7XG4gICAgLy8gUmV2aWV3IFBScyBkb24ndCBoYXZlIGEgbWVyZ2UtZHJpdmVuIHRyYW5zaXRpb246IHRoZSByZXZpZXcgc3RhZ2Unc1xuICAgIC8vIHZlcmRpY3QgYWxyZWFkeSBhZHZhbmNlZCBzdGF0ZS4gT25seSB0aGUgdGhyZWUgYXJ0aWZhY3QtcHJvZHVjaW5nIHN0YWdlc1xuICAgIC8vIG5lZWQgdGhlIG1lcmdlLXRpbWUgbGFiZWwgZmxpcC5cbiAgICBpZiAoXG4gICAgICBtZXRhLnN0YWdlID09PSBcInNwZWNcIiB8fFxuICAgICAgbWV0YS5zdGFnZSA9PT0gXCJwbGFuXCIgfHxcbiAgICAgIG1ldGEuc3RhZ2UgPT09IFwiaW1wbGVtZW50XCJcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgICAgaXNzdWVOdW1iZXI6IG1ldGEuaXNzdWVOdW1iZXIsXG4gICAgICAgIGFkdmFuY2VPbk1lcmdlOiB7IG1lcmdlZFN0YWdlOiBtZXRhLnN0YWdlLCBwck51bWJlcjogcHIubnVtYmVyIH0sXG4gICAgICAgIHJlYXNvbjogYHByX21lcmdlZF8ke21ldGEuc3RhZ2V9X3RyaWdnZXJlZF9sYWJlbF9mbGlwYCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYHByX21lcmdlZF8ke21ldGEuc3RhZ2V9X25vX3RyYW5zaXRpb25gLFxuICAgIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwiY2xvc2VkXCIpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJwcl9jbG9zZWRfbm90X21lcmdlZF9pZ25vcmVkXCIgfTtcbiAgfVxuXG4gIC8vIFdJUCBsYWJlbCByZW1vdmFsIG9uIGFuIGltcGwgUFIgdHJpZ2dlcnMgcmV2aWV3IC0tIHRoZSBub24tZHJhZnRcbiAgLy8gZXF1aXZhbGVudCBvZiByZWFkeV9mb3JfcmV2aWV3LiBOb24tV0lQIHVubGFiZWxlZCBldmVudHMgZmFsbFxuICAvLyB0aHJvdWdoIHRvIHRoZSBjYXRjaC1hbGwgYW5kIHJldHVybiBzdGFnZTogXCJub25lXCIuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJ1bmxhYmVsZWRcIiAmJlxuICAgIHBheWxvYWQubGFiZWw/Lm5hbWUgPT09IFwic2hvcGZsb29yOndpcFwiICYmXG4gICAgbWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIlxuICApIHtcbiAgICBjb25zdCBsYWJlbHMgPSBwckxhYmVsU2V0KHByKTtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpza2lwLXJldmlld1wiKSkge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfcHJlc2VudFwiIH07XG4gICAgfVxuICAgIGlmIChwci5kcmFmdCkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICAgIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfY2xvc2VkXCIgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgcmV2aWV3SXRlcmF0aW9uOiBtZXRhLnJldmlld0l0ZXJhdGlvbixcbiAgICB9O1xuICB9XG5cbiAgLy8gYHN5bmNocm9uaXplYCBmaXJlcyBvbiBldmVyeSBwdXNoIHRvIHRoZSBpbXBsIGJyYW5jaCAoZmlyc3QgaW1wbCBydW4gYW5kXG4gIC8vIGV2ZXJ5IHN1YnNlcXVlbnQgcmV2aXNpb24pLiBgcmVhZHlfZm9yX3Jldmlld2AgZmlyZXMgb25jZSB3aGVuIHRoZSBpbXBsXG4gIC8vIGpvYiB1bi1kcmFmdHMgdGhlIFBSIGFmdGVyIGl0cyBmaW5hbCBwb3N0LWFnZW50IHB1c2g6IHRoZSBpbml0aWFsXG4gIC8vIHN5bmNocm9uaXplIGFycml2ZXMgd2hpbGUgdGhlIFBSIGlzIHN0aWxsIGEgZHJhZnQgKGFuZCBpcyBjb3JyZWN0bHlcbiAgLy8gaWdub3JlZCBiZWxvdyksIHNvIHJlYWR5X2Zvcl9yZXZpZXcgaXMgdGhlIGV2ZW50IHRoYXQgYWN0dWFsbHkgcHJvbW90ZXNcbiAgLy8gdGhlIGZpcnN0LWl0ZXJhdGlvbiBpbXBsIHJ1biBpbnRvIHJldmlldy5cbiAgaWYgKFxuICAgIChwYXlsb2FkLmFjdGlvbiA9PT0gXCJzeW5jaHJvbml6ZVwiIHx8XG4gICAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJyZWFkeV9mb3JfcmV2aWV3XCIpICYmXG4gICAgbWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIlxuICApIHtcbiAgICBjb25zdCBsYWJlbHMgPSBwckxhYmVsU2V0KHByKTtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpza2lwLXJldmlld1wiKSkge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfcHJlc2VudFwiIH07XG4gICAgfVxuICAgIGlmIChwci5kcmFmdCkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICAgIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOndpcFwiKSlcbiAgICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgcmVhc29uOiBcInByX2hhc193aXBfbGFiZWxcIiB9O1xuICAgIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfY2xvc2VkXCIgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgcmV2aWV3SXRlcmF0aW9uOiBtZXRhLnJldmlld0l0ZXJhdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogXCJub25lXCIsXG4gICAgcmVhc29uOiBgcHJfYWN0aW9uXyR7cGF5bG9hZC5hY3Rpb259X29uXyR7bWV0YS5zdGFnZX1fbm9fYWN0aW9uYCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVB1bGxSZXF1ZXN0UmV2aWV3RXZlbnQoXG4gIHBheWxvYWQ6IFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZCxcbiAgc2hvcGZsb29yQm90TG9naW4/OiBzdHJpbmcsXG4pOiBSb3V0ZXJEZWNpc2lvbiB7XG4gIGNvbnN0IHByID0gcGF5bG9hZC5wdWxsX3JlcXVlc3Q7XG4gIGNvbnN0IG1ldGEgPSBwYXJzZVByTWV0YWRhdGEocHIuYm9keSk7XG4gIGlmICghbWV0YSkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaGFzX25vX3Nob3BmbG9vcl9tZXRhZGF0YVwiIH07XG5cbiAgaWYgKHBheWxvYWQuYWN0aW9uICE9PSBcInN1Ym1pdHRlZFwiKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IGByZXZpZXdfYWN0aW9uXyR7cGF5bG9hZC5hY3Rpb259X2lnbm9yZWRgIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5yZXZpZXcuc3RhdGUgIT09IFwiY2hhbmdlc19yZXF1ZXN0ZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICByZWFzb246IGByZXZpZXdfc3RhdGVfJHtwYXlsb2FkLnJldmlldy5zdGF0ZX1fbm9fYWN0aW9uYCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaXNTaG9wZmxvb3JSZXZpZXcgPVxuICAgIHNob3BmbG9vckJvdExvZ2luICE9PSB1bmRlZmluZWQgJiZcbiAgICBwYXlsb2FkLnJldmlldy51c2VyLmxvZ2luID09PSBzaG9wZmxvb3JCb3RMb2dpbjtcblxuICBpZiAobWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIikge1xuICAgIC8vIHYyOiBwYXJzZVN0YWdlQnJhbmNoUmVmIGlzIHNpbmdsZS1hcmc7IGNoZWNrIHBhcnNlZC5zdGFnZSA9PT0gXCJpbXBsXCJcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVN0YWdlQnJhbmNoUmVmKHByLmhlYWQucmVmKTtcbiAgICBpZiAoIXBhcnNlZCB8fCBwYXJzZWQuc3RhZ2UgIT09IFwiaW1wbFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBtZXRhLmlzc3VlTnVtYmVyLFxuICAgICAgICByZWFzb246IFwiaW1wbF9yZXZpc2lvbl91bnBhcnNlYWJsZV9icmFuY2hfcmVmXCIsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIHJldmlzaW9uTW9kZTogdHJ1ZSxcbiAgICAgIHJldmlld0l0ZXJhdGlvbjogbWV0YS5yZXZpZXdJdGVyYXRpb24sXG4gICAgICBicmFuY2hOYW1lOiBwci5oZWFkLnJlZixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgc3BlY0ZpbGVQYXRoOiBgZG9jcy9zaG9wZmxvb3Ivc3BlY3MvJHtwYXJzZWQuaXNzdWVOdW1iZXJ9LSR7cGFyc2VkLnNsdWd9Lm1kYCxcbiAgICAgIHBsYW5GaWxlUGF0aDogYGRvY3Mvc2hvcGZsb29yL3BsYW5zLyR7cGFyc2VkLmlzc3VlTnVtYmVyfS0ke3BhcnNlZC5zbHVnfS5tZGAsXG4gICAgICByZWFzb246IGlzU2hvcGZsb29yUmV2aWV3XG4gICAgICAgID8gXCJhZ2VudF9yZXF1ZXN0ZWRfY2hhbmdlc1wiXG4gICAgICAgIDogXCJodW1hbl9yZXF1ZXN0ZWRfY2hhbmdlc1wiLFxuICAgIH07XG4gIH1cblxuICAvLyBTcGVjIGFuZCBwbGFuIFBScyBnbyB0aHJvdWdoIGh1bWFuIHJldmlldy4gQSBSRVFVRVNUX0NIQU5HRVMgaGVyZSBtZWFuc1xuICAvLyB0aGUgaHVtYW4gd2FudHMgdGhlIGFnZW50IHRvIHJld3JpdGUgdGhlIGRlc2lnbiBhcnRpZmFjdC4gUmVjb3ZlciB0aGVcbiAgLy8gYnJhbmNoIG5hbWUgYW5kIHRoZSBjYW5vbmljYWwgc3BlYy9wbGFuIGZpbGUgcGF0aCBmcm9tIHRoZSBQUidzIGhlYWRcbiAgLy8gcmVmIHNvIHRoZSBkb3duc3RyZWFtIHN0YWdlIGhhcyBldmVyeXRoaW5nIGl0IG5lZWRzIHRvIHVwc2VydCB0aGVcbiAgLy8gZXhpc3RpbmcgUFIgaW5zdGVhZCBvZiBvcGVuaW5nIGEgbmV3IG9uZS4gRmFpbCBjbG9zZWQgb24gdW5wYXJzZWFibGVcbiAgLy8gcmVmcyB0aGUgc2FtZSB3YXkgdGhlIGltcGxlbWVudCBicmFuY2ggZG9lcy5cbiAgaWYgKG1ldGEuc3RhZ2UgPT09IFwic3BlY1wiIHx8IG1ldGEuc3RhZ2UgPT09IFwicGxhblwiKSB7XG4gICAgLy8gdjI6IHBhcnNlU3RhZ2VCcmFuY2hSZWYgaXMgc2luZ2xlLWFyZzsgY2hlY2sgcGFyc2VkLnN0YWdlIG1hdGNoZXMgbWV0YS5zdGFnZVxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3RhZ2VCcmFuY2hSZWYocHIuaGVhZC5yZWYpO1xuICAgIGlmICghcGFyc2VkIHx8IHBhcnNlZC5zdGFnZSAhPT0gbWV0YS5zdGFnZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhZ2U6IFwibm9uZVwiLFxuICAgICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgICAgcmVhc29uOiBgJHttZXRhLnN0YWdlfV9yZXZpc2lvbl91bnBhcnNlYWJsZV9icmFuY2hfcmVmYCxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNwZWNGaWxlUGF0aCA9IGBkb2NzL3Nob3BmbG9vci9zcGVjcy8ke3BhcnNlZC5pc3N1ZU51bWJlcn0tJHtwYXJzZWQuc2x1Z30ubWRgO1xuICAgIGNvbnN0IHBsYW5GaWxlUGF0aCA9IGBkb2NzL3Nob3BmbG9vci9wbGFucy8ke3BhcnNlZC5pc3N1ZU51bWJlcn0tJHtwYXJzZWQuc2x1Z30ubWRgO1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogbWV0YS5zdGFnZSxcbiAgICAgIGlzc3VlTnVtYmVyOiBtZXRhLmlzc3VlTnVtYmVyLFxuICAgICAgcmV2aXNpb25Nb2RlOiB0cnVlLFxuICAgICAgYnJhbmNoTmFtZTogcHIuaGVhZC5yZWYsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICAuLi4obWV0YS5zdGFnZSA9PT0gXCJwbGFuXCIgPyB7IHBsYW5GaWxlUGF0aCB9IDoge30pLFxuICAgICAgcmVhc29uOiBpc1Nob3BmbG9vclJldmlld1xuICAgICAgICA/IFwiYWdlbnRfcmVxdWVzdGVkX2NoYW5nZXNcIlxuICAgICAgICA6IFwiaHVtYW5fcmVxdWVzdGVkX2NoYW5nZXNcIixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogbWV0YS5zdGFnZSxcbiAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICByZXZpc2lvbk1vZGU6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmV2aWV3T25seShwYXlsb2FkOiBQdWxsUmVxdWVzdFBheWxvYWQpOiBSb3V0ZXJEZWNpc2lvbiB7XG4gIGNvbnN0IHByID0gcGF5bG9hZC5wdWxsX3JlcXVlc3Q7XG5cbiAgLy8gUFJzIGF1dGhvcmVkIGJ5IHRoZSBmdWxsIFNob3BmbG9vciBwaXBlbGluZSBjYXJyeSBtZXRhZGF0YS4gTGV0IHRoZVxuICAvLyBmdWxsIHBpcGVsaW5lIGhhbmRsZSB0aGVtOyB0aGlzIHdvcmtmbG93IGlzIGZvciBodW1hbi1hdXRob3IgUFJzIG9ubHkuXG4gIGNvbnN0IG1ldGEgPSBwYXJzZVByTWV0YWRhdGEocHIuYm9keSk7XG4gIGlmIChtZXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIHJlYXNvbjogXCJwcl9oYXNfc2hvcGZsb29yX21ldGFkYXRhX3VzZV9mdWxsX3BpcGVsaW5lXCIsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgcmVhc29uOiBcInByX2lzX2Nsb3NlZFwiIH07XG4gIH1cbiAgaWYgKHByLmRyYWZ0KSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICB9XG4gIGlmIChwckxhYmVsU2V0KHByKS5oYXMoXCJzaG9wZmxvb3I6c2tpcC1yZXZpZXdcIikpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJza2lwX3Jldmlld19sYWJlbF9wcmVzZW50XCIgfTtcbiAgfVxuXG4gIC8vIEZpcnN0IHJldmlldyBjeWNsZSBzdGFydHMgYXQgMDsgc3Vic2VxdWVudCBydW5zIHJlYWQgdGhlIGZvb3RlciB0aGF0XG4gIC8vIGFnZ3JlZ2F0ZS1yZXZpZXcgYXBwZW5kcyBvbiB0aGUgZmlyc3QgUkVRVUVTVF9DSEFOR0VTLlxuICBjb25zdCBpdGVyTWF0Y2ggPSBwci5ib2R5Py5tYXRjaCgvU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb246XFxzKihcXGQrKS8pO1xuICBjb25zdCByZXZpZXdJdGVyYXRpb24gPSBpdGVyTWF0Y2ggPyBOdW1iZXIoaXRlck1hdGNoWzFdKSA6IDA7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogXCJyZXZpZXdcIixcbiAgICBpbXBsUHJOdW1iZXI6IHByLm51bWJlcixcbiAgICByZXZpZXdJdGVyYXRpb24sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBZ2VudEFkYXB0ZXIgfSBmcm9tIFwiLi9hZ2VudHMvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgQWdlbnRFcnJvciB9IGZyb20gXCIuL2FnZW50cy9hZGFwdGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEF1ZGl0RW1pdHRlciB9IGZyb20gXCIuL2F1ZGl0L2V2ZW50cy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi9jb25maWcvaW5wdXRzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdpdEh1YkFkYXB0ZXIgfSBmcm9tIFwiLi9naXRodWIvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgUlVOTkVSUyB9IGZyb20gXCIuL3J1bm5lcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgR2l0T3BzLCBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi9zdGFnZXMvX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQge1xuICBmYWlsZWRMYWJlbEZvcixcbiAgTEFCRUxfREVGUyxcbiAgTEFCRUxTLFxuICBydW5uaW5nTGFiZWxGb3IsXG4gIHR5cGUgU3RhZ2UsXG59IGZyb20gXCIuL3N0YXRlL2xhYmVscy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVJldmlld09ubHksIHJlc29sdmVTdGFnZSB9IGZyb20gXCIuL3N0YXRlL21hY2hpbmUuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnRQYXlsb2FkLFxuICBJc3N1ZVBheWxvYWQsXG4gIFB1bGxSZXF1ZXN0UGF5bG9hZCxcbiAgUHVsbFJlcXVlc3RSZXZpZXdQYXlsb2FkLFxuICBSb3V0ZXJEZWNpc2lvbixcbn0gZnJvbSBcIi4vc3RhdGUvdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcmNoZXN0cmF0b3JSZXN1bHQge1xuICBzdGFnZTogU3RhZ2UgfCBcIm5vbmVcIjtcbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JjaGVzdHJhdG9yQXJncyB7XG4gIGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcGF5bG9hZDogRXZlbnRQYXlsb2FkIH07XG4gIHJlcG86IHsgb3duZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG4gIGdpdGh1YjogR2l0SHViQWRhcHRlcjtcbiAgcmV2aWV3R2l0aHViOiBHaXRIdWJBZGFwdGVyIHwgbnVsbDtcbiAgYWdlbnQ6IEFnZW50QWRhcHRlcjtcbiAgYXVkaXQ6IEF1ZGl0RW1pdHRlcjtcbiAgY29uZmlnOiBDb25maWc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHNob3BmbG9vckJvdExvZ2luPzogc3RyaW5nO1xuICAvLyBXaGVuIHRydWUsIHJvdXRlIHB1bGxfcmVxdWVzdCBldmVudHMgdmlhIHJlc29sdmVSZXZpZXdPbmx5KCkgaW5zdGVhZCBvZlxuICAvLyByZXNvbHZlU3RhZ2UoKS4gVXNlZCBieSB0aGUgcmV2aWV3LW9ubHkgY2FsbGVyIHdvcmtmbG93IChlLmcuXG4gIC8vIGRvZ2Zvb2QtcmV2aWV3LnltbCkgdG8gYWRkIGFnZW50IHJldmlldyBvbiBodW1hbi1hdXRob3JlZCBQUnMgdGhhdFxuICAvLyBjYXJyeSBubyBTaG9wZmxvb3IgbWV0YWRhdGEuIE5vLW9wIGZvciBub24tcHVsbF9yZXF1ZXN0IGV2ZW50cy5cbiAgcmV2aWV3T25seT86IGJvb2xlYW47XG4gIC8vIEdpdCBoZWxwZXJzIHNlZWRlZCB3aXRoIHRoZSByZXNvbHZlZCBBdXRoU3BlYyBieSBlbnRyeS50cy4gUGx1bWJlZCBpbnRvXG4gIC8vIFN0YWdlQ29udGV4dCBzbyB0aGUgaW1wbGVtZW50IHJ1bm5lciBjYW4gY29uZmlndXJlIHRoZSB3b3JraW5nIHRyZWUgYW5kXG4gIC8vIHB1c2ggdGhlIGFnZW50J3MgY29tbWl0cy4gT3B0aW9uYWwgZm9yIHVuaXQvZTJlIHRlc3RzIHRoYXQgZHJpdmUgdGhlXG4gIC8vIG9yY2hlc3RyYXRvciB3aXRob3V0IGEgcmVhbCBjaGVja291dC5cbiAgZ2l0T3BzPzogR2l0T3BzO1xufVxuXG5jb25zdCBUUklBR0VfQkxPQ0tJTkdfU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgTEFCRUxTLnRyaWFnaW5nLFxuICBMQUJFTFMubmVlZHNTcGVjLFxuICBMQUJFTFMubmVlZHNQbGFuLFxuICBMQUJFTFMubmVlZHNJbXBsLFxuICBMQUJFTFMuaW1wbEluUmV2aWV3LFxuICBMQUJFTFMubmVlZHNSZXZpZXcsXG4gIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzLFxuICBMQUJFTFMucmV2aWV3QXBwcm92ZWQsXG4gIExBQkVMUy5yZXZpZXdTdHVjayxcbiAgTEFCRUxTLmRvbmUsXG4gIExBQkVMUy5jb21wbGV4aXR5UXVpY2ssXG4gIExBQkVMUy5jb21wbGV4aXR5TWVkaXVtLFxuICBMQUJFTFMuY29tcGxleGl0eUxhcmdlLFxuXSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5PcmNoZXN0cmF0b3IoXG4gIGFyZ3M6IE9yY2hlc3RyYXRvckFyZ3MsXG4pOiBQcm9taXNlPE9yY2hlc3RyYXRvclJlc3VsdD4ge1xuICBjb25zdCBsaXZlTGFiZWxzID0gZXh0cmFjdEV2ZW50TGFiZWxzKGFyZ3MuZXZlbnQpO1xuICBjb25zdCB0cmlnZ2VyTGFiZWwgPSBhcmdzLmNvbmZpZy50cmlnZ2VyTGFiZWwgPz8gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGRlY2lzaW9uID1cbiAgICBhcmdzLnJldmlld09ubHkgJiYgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdFwiXG4gICAgICA/IHJlc29sdmVSZXZpZXdPbmx5KGFyZ3MuZXZlbnQucGF5bG9hZCBhcyBQdWxsUmVxdWVzdFBheWxvYWQpXG4gICAgICA6IHJlc29sdmVTdGFnZSh7XG4gICAgICAgICAgZXZlbnROYW1lOiBhcmdzLmV2ZW50Lm5hbWUsXG4gICAgICAgICAgcGF5bG9hZDogYXJncy5ldmVudC5wYXlsb2FkLFxuICAgICAgICAgIC4uLih0cmlnZ2VyTGFiZWwgIT09IHVuZGVmaW5lZCA/IHsgdHJpZ2dlckxhYmVsIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxpdmVMYWJlbHMgIT09IHVuZGVmaW5lZCA/IHsgbGl2ZUxhYmVscyB9IDoge30pLFxuICAgICAgICAgIC4uLihhcmdzLnNob3BmbG9vckJvdExvZ2luICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8geyBzaG9wZmxvb3JCb3RMb2dpbjogYXJncy5zaG9wZmxvb3JCb3RMb2dpbiB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG5cbiAgY29uc3Qgcm91dGluZ0NvbnRleHQgPSBleHRyYWN0Um91dGluZ0NvbnRleHQoYXJncy5ldmVudCwgbGl2ZUxhYmVscyk7XG4gIGFyZ3MuYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfcmVzb2x2ZWRcIixcbiAgICBzdGFnZTogZGVjaXNpb24uc3RhZ2UsXG4gICAgcmVhc29uOiBkZWNpc2lvbi5yZWFzb24gPz8gXCJcIixcbiAgICAuLi4oZGVjaXNpb24uaXNzdWVOdW1iZXIgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IGlzc3VlTnVtYmVyOiBkZWNpc2lvbi5pc3N1ZU51bWJlciB9XG4gICAgICA6IHt9KSxcbiAgICBldmVudE5hbWU6IGFyZ3MuZXZlbnQubmFtZSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQuYWN0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBhY3Rpb246IHJvdXRpbmdDb250ZXh0LmFjdGlvbiB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQubGFiZWxOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBsYWJlbE5hbWU6IHJvdXRpbmdDb250ZXh0LmxhYmVsTmFtZSB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQucGF5bG9hZExhYmVscyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgcGF5bG9hZExhYmVsczogcm91dGluZ0NvbnRleHQucGF5bG9hZExhYmVscyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4obGl2ZUxhYmVscyAhPT0gdW5kZWZpbmVkID8geyBsaXZlTGFiZWxzIH0gOiB7fSksXG4gIH0pO1xuXG4gIC8vIGFkdmFuY2VPbk1lcmdlIGlzIGEgcHVyZSBsYWJlbC1mbGlwIHRyYW5zaXRpb24gdGhhdCB0aGUgc3RhdGUgbWFjaGluZVxuICAvLyBhdHRhY2hlcyB0byBhIHN0YWdlPVwibm9uZVwiIGRlY2lzaW9uIHdoZW4gYSBTaG9wZmxvb3Igc3RhZ2UgUFIgbWVyZ2VzLlxuICAvLyBJdCBpcyBvd25lZCBieSB0aGUgcm91dGVyLXNpZGUgcHJpbWFyeSBBcHAgdG9rZW4sIHJlcXVpcmVzIG5vIGFnZW50XG4gIC8vIGludm9jYXRpb24sIG11dGV4LCBvciBwcmVjaGVjay4gSW4gc3BsaXQtcnVubmVyIHdvcmtmbG93cyB0aGUgcmVzb2x2ZVxuICAvLyBqb2IgaXMgdGhlIG9ubHkgam9iIHRoYXQgcnVucyBmb3IgbWVyZ2UgZXZlbnRzICh0aGUgZXhlY3V0ZSBqb2JzIGdhdGVcbiAgLy8gb24gc3RhZ2UgIT0gXCJub25lXCIpLCBzbyB0aGUgZmxpcCBtdXN0IGhhcHBlbiBoZXJlIG9yIGl0IGlzIGRyb3BwZWQgb25cbiAgLy8gdGhlIGZsb29yIGFuZCB0aGUgaXNzdWUgc3RyYW5kcyBhdCA8c3RhZ2U+LWluLXJldmlldy5cbiAgaWYgKFxuICAgIGRlY2lzaW9uLnN0YWdlID09PSBcIm5vbmVcIiAmJlxuICAgIGRlY2lzaW9uLmFkdmFuY2VPbk1lcmdlICE9PSB1bmRlZmluZWQgJiZcbiAgICBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGNvbnN0IGFkdmFuY2VkID0gYXdhaXQgYWR2YW5jZU9uTWVyZ2UoYXJncy5naXRodWIsIGFyZ3MuYXVkaXQsIHtcbiAgICAgIGlzc3VlTnVtYmVyOiBkZWNpc2lvbi5pc3N1ZU51bWJlcixcbiAgICAgIG1lcmdlZFN0YWdlOiBkZWNpc2lvbi5hZHZhbmNlT25NZXJnZS5tZXJnZWRTdGFnZSxcbiAgICAgIHByTnVtYmVyOiBkZWNpc2lvbi5hZHZhbmNlT25NZXJnZS5wck51bWJlcixcbiAgICB9KTtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGV4ZWN1dGVkOiBhZHZhbmNlZCB9O1xuICB9XG5cbiAgaWYgKGFyZ3MuY29uZmlnLm1vZGUgPT09IFwicmVzb2x2ZVwiKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IGRlY2lzaW9uLnN0YWdlLCBleGVjdXRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGlmIChcbiAgICBhcmdzLmNvbmZpZy5tb2RlID09PSBcImV4ZWN1dGVcIiAmJlxuICAgIGFyZ3MuY29uZmlnLnN0YWdlcy5sZW5ndGggPiAwICYmXG4gICAgZGVjaXNpb24uc3RhZ2UgIT09IFwibm9uZVwiICYmXG4gICAgIWFyZ3MuY29uZmlnLnN0YWdlcy5pbmNsdWRlcyhkZWNpc2lvbi5zdGFnZSBhcyBTdGFnZSlcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IGRlY2lzaW9uLnN0YWdlLCBleGVjdXRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGlmIChkZWNpc2lvbi5zdGFnZSA9PT0gXCJub25lXCIpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGV4ZWN1dGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3Qgc3RhZ2UgPSBkZWNpc2lvbi5zdGFnZSBhcyBTdGFnZTtcbiAgbGV0IGlzc3VlID0gbG9hZElzc3VlRnJvbUV2ZW50KGFyZ3MuZXZlbnQsIGxpdmVMYWJlbHMpO1xuICBjb25zdCBwciA9IGF3YWl0IGxvYWRQckZvclN0YWdlKGFyZ3MsIGRlY2lzaW9uKTtcbiAgLy8gUmVzb2x2ZSB0aGUgcmVwbydzIGRlZmF1bHQgYnJhbmNoIGxhemlseSwgb25seSBvbmNlIHBlciBleGVjdXRlIHBhdGguXG4gIC8vIFN0YWdlIFBScyB0YXJnZXQgdGhpcyBicmFuY2g7IGFzc3VtaW5nIFwibWFpblwiIHNpbGVudGx5IGJyZWFrcyByZXBvcyB0aGF0XG4gIC8vIHNoaXAgZnJvbSBhbnkgb3RoZXIgdHJ1bmsuXG4gIGNvbnN0IGRlZmF1bHRCcmFuY2ggPSBhd2FpdCBhcmdzLmdpdGh1Yi5nZXREZWZhdWx0QnJhbmNoKCk7XG4gIC8vIFByb3Zpc2lvbiBhbnkgbWlzc2luZyBzaG9wZmxvb3I6KiBsYWJlbHMgd2l0aCB0aGVpciBjYW5vbmljYWwgY29sb3JzIGFuZFxuICAvLyBkZXNjcmlwdGlvbnMuIElkZW1wb3RlbnQ6IG9ubHkgY3JlYXRlcyBsYWJlbHMgdGhhdCBkb24ndCBhbHJlYWR5IGV4aXN0LCBzb1xuICAvLyBoYW5kLWVkaXRzIGFuZCByZS1ydW5zIGFyZSBib3RoIHNhZmUuXG4gIGNvbnN0IGNyZWF0ZWRMYWJlbHMgPSBhd2FpdCBhcmdzLmdpdGh1Yi5ib290c3RyYXBMYWJlbHMoTEFCRUxfREVGUyk7XG4gIGlmIChjcmVhdGVkTGFiZWxzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzLmF1ZGl0KHsgdHlwZTogXCJsYWJlbHNfYm9vdHN0cmFwcGVkXCIsIGNyZWF0ZWQ6IGNyZWF0ZWRMYWJlbHMgfSk7XG4gIH1cblxuICAvLyBIeWRyYXRlIHRoZSBpc3N1ZSBmcm9tIHRoZSBBUEkgd2hlbiB0aGUgZXZlbnQgcGF5bG9hZCBkb2Vzbid0IGNhcnJ5IG9uZVxuICAvLyAocHVsbF9yZXF1ZXN0LCBwdWxsX3JlcXVlc3RfcmV2aWV3KS4gQWxsIHN0YWdlcyB0aGF0IHJvdXRlIGZyb20gYSBQUiBldmVudFxuICAvLyBuZWVkIGN0eC5pc3N1ZTogaW1wbGVtZW50IHJlLWVudGVycyB3aGVuIGEgcmV2aWV3ZXIgcmVxdWVzdHMgY2hhbmdlcywgYW5kXG4gIC8vIHJldmlldyB3cml0ZXMgcGlwZWxpbmUtc3RhdGUgbGFiZWxzIChuZWVkcy1yZXZpZXcgXHUyMTkyIHJldmlldy1hcHByb3ZlZCkgb250b1xuICAvLyB0aGUgaXNzdWUsIG5vdCB0aGUgUFIuIFdpdGhvdXQgaHlkcmF0aW9uLCBhcHBseVJldmlldydzIGxhYmVsVGFyZ2V0IGZhbGxzXG4gIC8vIGJhY2sgdG8gdGhlIFBSIG51bWJlciBhbmQgdGhlIGlzc3VlIHN0cmFuZHMgd2l0aCBzdGFsZSBuZWVkcy1yZXZpZXcgd2hpbGVcbiAgLy8gcmV2aWV3LWFwcHJvdmVkIGxhbmRzIG9uIHRoZSB3cm9uZyBvYmplY3QuXG4gIGlmIChpc3N1ZSA9PT0gbnVsbCAmJiBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGl2ZSA9IGF3YWl0IGFyZ3MuZ2l0aHViLmdldElzc3VlKGRlY2lzaW9uLmlzc3VlTnVtYmVyKTtcbiAgICBpc3N1ZSA9IHtcbiAgICAgIG51bWJlcjogZGVjaXNpb24uaXNzdWVOdW1iZXIsXG4gICAgICB0aXRsZTogbGl2ZS50aXRsZSxcbiAgICAgIGJvZHk6IGxpdmUuYm9keSxcbiAgICAgIGxhYmVsczogbGl2ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBjdHg6IFN0YWdlQ29udGV4dCA9IHtcbiAgICBldmVudDogYXJncy5ldmVudC5wYXlsb2FkLFxuICAgIHJlcG86IGFyZ3MucmVwbyxcbiAgICBkZWZhdWx0QnJhbmNoLFxuICAgIGRlY2lzaW9uLFxuICAgIGdpdGh1YjogYXJncy5naXRodWIsXG4gICAgcmV2aWV3R2l0aHViOiBhcmdzLnJldmlld0dpdGh1YixcbiAgICBhZ2VudDogYXJncy5hZ2VudCxcbiAgICBhdWRpdDogYXJncy5hdWRpdCxcbiAgICBjb25maWc6IGFyZ3MuY29uZmlnLFxuICAgIHJ1bklkOiBhcmdzLnJ1bklkLFxuICB9O1xuICBpZiAoaXNzdWUgIT09IG51bGwpIGN0eC5pc3N1ZSA9IGlzc3VlO1xuICBpZiAocHIgIT09IG51bGwpIGN0eC5wciA9IHByO1xuICBpZiAoYXJncy5yZXZpZXdPbmx5ID09PSB0cnVlKSBjdHgucmV2aWV3T25seSA9IHRydWU7XG4gIGlmIChhcmdzLmdpdE9wcyAhPT0gdW5kZWZpbmVkKSBjdHguZ2l0T3BzID0gYXJncy5naXRPcHM7XG5cbiAgLy8gSW4gZXhlY3V0ZSBtb2RlLCB0aGUgcmVzb2x2ZS0+ZXhlY3V0ZSBnYXAgY2FuIGJlIDMwLTYwcywgbG9uZyBlbm91Z2ggZm9yXG4gIC8vIGxhYmVscyB0byBmbGlwIGFmdGVyIHRoZSBldmVudCBmaXJlZC4gRmV0Y2ggbGl2ZSBsYWJlbHMgZnJvbSB0aGUgQVBJIHNvXG4gIC8vIHByZWNoZWNrIHNlZXMgY3VycmVudCBzdGF0ZS4gdjEgY29tbWl0IGFhZWY5NWYuXG4gIGxldCBwcmVjaGVja0xhYmVsczogU2V0PHN0cmluZz47XG4gIGlmIChhcmdzLmNvbmZpZy5tb2RlID09PSBcImV4ZWN1dGVcIiAmJiBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGl2ZSA9IGF3YWl0IGFyZ3MuZ2l0aHViLmdldElzc3VlKGRlY2lzaW9uLmlzc3VlTnVtYmVyKTtcbiAgICBwcmVjaGVja0xhYmVscyA9IG5ldyBTZXQobGl2ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICBwcmVjaGVja0xhYmVscyA9IG5ldyBTZXQoaXNzdWU/LmxhYmVscyA/PyBbXSk7XG4gIH1cblxuICAvLyBBIGh1bWFuIFJFUVVFU1RfQ0hBTkdFUyBvbiBhbiBpbXBsIFBSIHJvdXRlcyB0aGUgc3RhdGUgbWFjaGluZSB0b1xuICAvLyBpbXBsZW1lbnQrcmV2aXNpb25Nb2RlLCBidXQgdGhlIGlzc3VlIHN0aWxsIGNhcnJpZXMgc2hvcGZsb29yOm5lZWRzLXJldmlld1xuICAvLyAoYW5kIHBvc3NpYmx5IHNob3BmbG9vcjpyZXZpZXctc3R1Y2spLiBBcHBseSB0aGUgdjEgYXBwbHktcmV2aWV3LXJldmlzaW9uXG4gIC8vIGZsaXAgYmVmb3JlIHByZWNoZWNrIHNvIHRoZSBpbXBsZW1lbnQgcHJlY29uZGl0aW9ucyBob2xkIGFuZCB0aGUgbG9vcFxuICAvLyB1bnN0aWNrcy4gVGhlIGFnZW50IHBhdGggKGFnZ3JlZ2F0ZS1yZXZpZXcgdmVyZGljdD1SRVFVRVNUX0NIQU5HRVMpIHdyaXRlc1xuICAvLyB0aGVzZSBsYWJlbHMgaXRzZWxmIGluIHJldmlldy9hcHBseS50czsgb25seSB0aGUgaHVtYW4gcGF0aCBuZWVkcyBoZWxwLlxuICBpZiAoXG4gICAgc3RhZ2UgPT09IFwiaW1wbGVtZW50XCIgJiZcbiAgICBkZWNpc2lvbi5yZXZpc2lvbk1vZGUgPT09IHRydWUgJiZcbiAgICBkZWNpc2lvbi5yZWFzb24gPT09IFwiaHVtYW5fcmVxdWVzdGVkX2NoYW5nZXNcIiAmJlxuICAgIGRlY2lzaW9uLmlzc3VlTnVtYmVyICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgYXdhaXQgYXBwbHlIdW1hblJldmlld1JldmlzaW9uKFxuICAgICAgYXJncy5naXRodWIsXG4gICAgICBhcmdzLmF1ZGl0LFxuICAgICAgZGVjaXNpb24uaXNzdWVOdW1iZXIsXG4gICAgICBwcmVjaGVja0xhYmVscyxcbiAgICApO1xuICAgIGlmIChjdHguaXNzdWUpIGN0eC5pc3N1ZS5sYWJlbHMgPSBBcnJheS5mcm9tKHByZWNoZWNrTGFiZWxzKTtcbiAgfVxuXG4gIGNvbnN0IHByZWNoZWNrID0gcHJlY2hlY2tTdGFnZShzdGFnZSwgcHJlY2hlY2tMYWJlbHMpO1xuICBpZiAoIXByZWNoZWNrLm9rKSB7XG4gICAgYXJncy5hdWRpdCh7IHR5cGU6IFwicHJlY2hlY2tfZmFpbGVkXCIsIHN0YWdlLCByZWFzb246IHByZWNoZWNrLnJlYXNvbiB9KTtcbiAgICByZXR1cm4geyBzdGFnZSwgZXhlY3V0ZWQ6IGZhbHNlIH07XG4gIH1cblxuICBhcmdzLmF1ZGl0KHtcbiAgICB0eXBlOiBcInN0YWdlX3N0YXJ0ZWRcIixcbiAgICBzdGFnZSxcbiAgICBtb2RlbDogbW9kZWxGb3JTdGFnZShzdGFnZSwgYXJncy5jb25maWcpLFxuICAgIHJ1bklkOiBhcmdzLnJ1bklkLFxuICB9KTtcblxuICAvLyBBY3F1aXJlIHRoZSBtdXRleCBtYXJrZXIgYmVmb3JlIHRoZSBzdGFnZSBydW5zLiBFdmVyeSBzdGFnZSBoYXMgYSBtdXRleFxuICAvLyBsYWJlbCAodHJpYWdpbmcgLyBzcGVjLXJ1bm5pbmcgLyBwbGFuLXJ1bm5pbmcgLyBpbXBsZW1lbnRpbmcgLyByZXZpZXctXG4gIC8vIHJ1bm5pbmcpLiBVcGRhdGUgdGhlIGluLW1lbW9yeSBpc3N1ZSBsYWJlbCBzbmFwc2hvdCB0b28gc28gYXBwbHkoKSBndWFyZHNcbiAgLy8gdGhhdCByZWFkIGN0eC5pc3N1ZS5sYWJlbHMgY2FuIG9ic2VydmUgaXQuXG4gIGNvbnN0IG11dGV4ID0gcnVubmluZ0xhYmVsRm9yKHN0YWdlKTtcbiAgaWYgKGRlY2lzaW9uLmlzc3VlTnVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICBhd2FpdCBhcmdzLmdpdGh1Yi5hZGRMYWJlbChkZWNpc2lvbi5pc3N1ZU51bWJlciwgbXV0ZXgpO1xuICAgIGlmIChjdHguaXNzdWUgJiYgIWN0eC5pc3N1ZS5sYWJlbHMuaW5jbHVkZXMobXV0ZXgpKSB7XG4gICAgICBjdHguaXNzdWUubGFiZWxzLnB1c2gobXV0ZXgpO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgUlVOTkVSU1tzdGFnZV0uZXhlY3V0ZShjdHgsIGRlY2lzaW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYXdhaXQgcmVwb3J0RmFpbHVyZShjdHgsIHN0YWdlLCBlcnIpO1xuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBSZWxlYXNlIHRoZSBtdXRleCBldmVuIG9uIGZhaWx1cmUuIFRoZSBzdGFnZSdzIG93biBhcHBseSgpIG1heSBoYXZlXG4gICAgLy8gYWxyZWFkeSByZW1vdmVkIGl0OyByZW1vdmVMYWJlbCB0b2xlcmF0ZXMgNDA0LlxuICAgIGlmIChkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCBhcmdzLmdpdGh1Yi5yZW1vdmVMYWJlbChkZWNpc2lvbi5pc3N1ZU51bWJlciwgbXV0ZXgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBzdGFnZSwgZXhlY3V0ZWQ6IHRydWUgfTtcbn1cblxuLy8gUGVyZm9ybXMgdGhlIHYxIGhhbmRsZS1tZXJnZSB0cmFuc2l0aW9uIGZvciB0aGUgdGhyZWUgYXJ0aWZhY3QtcHJvZHVjaW5nXG4vLyBzdGFnZXMuIElkZW1wb3RlbnQ6IGlmIHRoZSBkb3duc3RyZWFtIGxhYmVsIGlzIGFscmVhZHkgcHJlc2VudCwgc2tpcHMgd2l0aFxuLy8gbm8gQVBJIHdyaXRlcyAoaGFuZGxlcyBkb3VibGUtZmlyZWQgY2xvc2UgZXZlbnRzIGFuZCB3b3JrZmxvdyByYWNlcykuXG4vLyBSZXR1cm5zIHRydWUgd2hlbiBhbnkgbXV0YXRpb24gd2FzIHBlcmZvcm1lZC5cbmFzeW5jIGZ1bmN0aW9uIGFkdmFuY2VPbk1lcmdlKFxuICBnaXRodWI6IEdpdEh1YkFkYXB0ZXIsXG4gIGF1ZGl0OiBBdWRpdEVtaXR0ZXIsXG4gIGFyZ3M6IHtcbiAgICBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICAgIG1lcmdlZFN0YWdlOiBcInNwZWNcIiB8IFwicGxhblwiIHwgXCJpbXBsZW1lbnRcIjtcbiAgICBwck51bWJlcjogbnVtYmVyO1xuICB9LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGlzc3VlID0gYXdhaXQgZ2l0aHViLmdldElzc3VlKGFyZ3MuaXNzdWVOdW1iZXIpO1xuICBjb25zdCBjdXJyZW50ID0gbmV3IFNldChpc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcblxuICBzd2l0Y2ggKGFyZ3MubWVyZ2VkU3RhZ2UpIHtcbiAgICBjYXNlIFwic3BlY1wiOiB7XG4gICAgICBpZiAoY3VycmVudC5oYXMoTEFCRUxTLm5lZWRzUGxhbikpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5hZGRMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMubmVlZHNQbGFuKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgU3BlYyBtZXJnZWQgaW4gIyR7YXJncy5wck51bWJlcn0uIE1vdmluZyB0byBwbGFubmluZyBzdGFnZS5gLFxuICAgICAgKTtcbiAgICAgIGF1ZGl0KHtcbiAgICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBhZGQ6IFtMQUJFTFMubmVlZHNQbGFuXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLnNwZWNJblJldmlld10sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXNlIFwicGxhblwiOiB7XG4gICAgICBpZiAoY3VycmVudC5oYXMoTEFCRUxTLm5lZWRzSW1wbCkpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMucGxhbkluUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5hZGRMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMubmVlZHNJbXBsKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgUGxhbiBtZXJnZWQgaW4gIyR7YXJncy5wck51bWJlcn0uIE1vdmluZyB0byBpbXBsZW1lbnRhdGlvbiBzdGFnZS5gLFxuICAgICAgKTtcbiAgICAgIGF1ZGl0KHtcbiAgICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBhZGQ6IFtMQUJFTFMubmVlZHNJbXBsXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLnBsYW5JblJldmlld10sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXNlIFwiaW1wbGVtZW50XCI6IHtcbiAgICAgIGlmIChjdXJyZW50LmhhcyhMQUJFTFMuZG9uZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMuaW1wbEluUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMucmV2aWV3QXBwcm92ZWQpO1xuICAgICAgYXdhaXQgZ2l0aHViLmFkZExhYmVsKGFyZ3MuaXNzdWVOdW1iZXIsIExBQkVMUy5kb25lKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgSW1wbGVtZW50YXRpb24gbWVyZ2VkIGluICMke2FyZ3MucHJOdW1iZXJ9LiBQaXBlbGluZSBjb21wbGV0ZS5gLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5jbG9zZUlzc3VlKGFyZ3MuaXNzdWVOdW1iZXIpO1xuICAgICAgYXVkaXQoe1xuICAgICAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICAgICAgaXNzdWVOdW1iZXI6IGFyZ3MuaXNzdWVOdW1iZXIsXG4gICAgICAgIGFkZDogW0xBQkVMUy5kb25lXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLmltcGxJblJldmlldywgTEFCRUxTLnJldmlld0FwcHJvdmVkXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8vIE1pcnJvcnMgdjEncyBhcHBseS1yZXZpZXctcmV2aXNpb24gaGVscGVyLiBSdW4gYmVmb3JlIHRoZSBpbXBsZW1lbnQgc3RhZ2Vcbi8vIHdoZW4gYSBodW1hbiByZXZpZXdlciBzdWJtaXRzIFJFUVVFU1RfQ0hBTkdFUyBvbiBhbiBpbXBsIFBSOiB0aGUgc3RhdGVcbi8vIG1hY2hpbmUgaGFzIGFscmVhZHkgcm91dGVkIHRvIGltcGxlbWVudCtyZXZpc2lvbk1vZGUsIGJ1dCB0aGUgaXNzdWUgc3RpbGxcbi8vIGhhcyBzaG9wZmxvb3I6bmVlZHMtcmV2aWV3IChhbmQgcG9zc2libHkgc2hvcGZsb29yOnJldmlldy1zdHVjayksIHNvIHRoZVxuLy8gaW1wbGVtZW50IHByZWNoZWNrIHdvdWxkIHJlZnVzZS4gTXV0YXRlcyBgcHJlY2hlY2tMYWJlbHNgIHNvIHRoZSBwcmVjaGVja1xuLy8gcnVuIHRoYXQgZm9sbG93cyBzZWVzIHRoZSBwb3N0LWZsaXAgc3RhdGUuXG5hc3luYyBmdW5jdGlvbiBhcHBseUh1bWFuUmV2aWV3UmV2aXNpb24oXG4gIGdpdGh1YjogR2l0SHViQWRhcHRlcixcbiAgYXVkaXQ6IEF1ZGl0RW1pdHRlcixcbiAgaXNzdWVOdW1iZXI6IG51bWJlcixcbiAgcHJlY2hlY2tMYWJlbHM6IFNldDxzdHJpbmc+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFkZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgcmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoIXByZWNoZWNrTGFiZWxzLmhhcyhMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcykpIHtcbiAgICBhd2FpdCBnaXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzKTtcbiAgICBwcmVjaGVja0xhYmVscy5hZGQoTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgIGFkZC5wdXNoKExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzKTtcbiAgfVxuICBpZiAocHJlY2hlY2tMYWJlbHMuaGFzKExBQkVMUy5uZWVkc1JldmlldykpIHtcbiAgICBhd2FpdCBnaXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5uZWVkc1Jldmlldyk7XG4gICAgcHJlY2hlY2tMYWJlbHMuZGVsZXRlKExBQkVMUy5uZWVkc1Jldmlldyk7XG4gICAgcmVtb3ZlLnB1c2goTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgfVxuICBpZiAocHJlY2hlY2tMYWJlbHMuaGFzKExBQkVMUy5yZXZpZXdTdHVjaykpIHtcbiAgICBhd2FpdCBnaXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgcHJlY2hlY2tMYWJlbHMuZGVsZXRlKExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgcmVtb3ZlLnB1c2goTEFCRUxTLnJldmlld1N0dWNrKTtcbiAgfVxuICBpZiAoYWRkLmxlbmd0aCA+IDAgfHwgcmVtb3ZlLmxlbmd0aCA+IDApIHtcbiAgICBhdWRpdCh7IHR5cGU6IFwibGFiZWxfYXBwbGllZFwiLCBpc3N1ZU51bWJlciwgYWRkLCByZW1vdmUgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbW9kZWxGb3JTdGFnZShzdGFnZTogU3RhZ2UsIGNmZzogQ29uZmlnKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGFnZSkge1xuICAgIGNhc2UgXCJ0cmlhZ2VcIjpcbiAgICAgIHJldHVybiBjZmcudHJpYWdlTW9kZWw7XG4gICAgY2FzZSBcInNwZWNcIjpcbiAgICAgIHJldHVybiBjZmcuc3BlY01vZGVsO1xuICAgIGNhc2UgXCJwbGFuXCI6XG4gICAgICByZXR1cm4gY2ZnLnBsYW5Nb2RlbDtcbiAgICBjYXNlIFwiaW1wbGVtZW50XCI6XG4gICAgICByZXR1cm4gY2ZnLmltcGxNb2RlbDtcbiAgICBjYXNlIFwicmV2aWV3XCI6XG4gICAgICByZXR1cm4gY2ZnLnJldmlld01vZGVscy5jb21wbGlhbmNlO1xuICB9XG59XG5cbmludGVyZmFjZSBSb3V0aW5nQ29udGV4dCB7XG4gIGFjdGlvbj86IHN0cmluZztcbiAgbGFiZWxOYW1lPzogc3RyaW5nO1xuICBwYXlsb2FkTGFiZWxzPzogc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RSb3V0aW5nQ29udGV4dChcbiAgZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBFdmVudFBheWxvYWQgfSxcbiAgbGl2ZUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4pOiBSb3V0aW5nQ29udGV4dCB7XG4gIHN3aXRjaCAoZXZlbnQubmFtZSkge1xuICAgIGNhc2UgXCJpc3N1ZXNcIjoge1xuICAgICAgY29uc3QgcCA9IGV2ZW50LnBheWxvYWQgYXMgSXNzdWVQYXlsb2FkO1xuICAgICAgY29uc3QgY3R4OiBSb3V0aW5nQ29udGV4dCA9IHt9O1xuICAgICAgaWYgKHAuYWN0aW9uICE9PSB1bmRlZmluZWQpIGN0eC5hY3Rpb24gPSBwLmFjdGlvbjtcbiAgICAgIGlmIChwLmxhYmVsPy5uYW1lICE9PSB1bmRlZmluZWQpIGN0eC5sYWJlbE5hbWUgPSBwLmxhYmVsLm5hbWU7XG4gICAgICBpZiAocC5pc3N1ZSkge1xuICAgICAgICBjb25zdCBwYXlsb2FkTGFiZWxzID0gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgICAgICAvLyBPbmx5IGF0dGFjaCBwYXlsb2FkTGFiZWxzIHdoZW4gaXQgZGlmZmVycyBmcm9tIGxpdmVMYWJlbHMgLS0gaWYgYVxuICAgICAgICAvLyByb3V0ZSBjYWxsZXIgYWxyZWFkeSByZWZldGNoZWQsIHRoZSB0d28gYXJyYXlzIGNhcnJ5IHRoZSBzYW1lXG4gICAgICAgIC8vIGluZm9ybWF0aW9uIGFuZCBkdXBsaWNhdGluZyB0aGVtIGNvc3RzIGxvZyBieXRlcyBmb3Igbm8gc2lnbmFsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgbGl2ZUxhYmVscyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgIWFycmF5c0VxdWFsKHBheWxvYWRMYWJlbHMsIGxpdmVMYWJlbHMpXG4gICAgICAgICkge1xuICAgICAgICAgIGN0eC5wYXlsb2FkTGFiZWxzID0gcGF5bG9hZExhYmVscztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eDtcbiAgICB9XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdFwiOlxuICAgIGNhc2UgXCJwdWxsX3JlcXVlc3RfcmV2aWV3XCI6IHtcbiAgICAgIGNvbnN0IHAgPSBldmVudC5wYXlsb2FkIGFzIFB1bGxSZXF1ZXN0UGF5bG9hZCB8IFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZDtcbiAgICAgIGNvbnN0IGN0eDogUm91dGluZ0NvbnRleHQgPSB7fTtcbiAgICAgIGlmIChcImFjdGlvblwiIGluIHAgJiYgdHlwZW9mIHAuYWN0aW9uID09PSBcInN0cmluZ1wiKSBjdHguYWN0aW9uID0gcC5hY3Rpb247XG4gICAgICBpZiAoXCJsYWJlbFwiIGluIHAgJiYgcC5sYWJlbD8ubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGN0eC5sYWJlbE5hbWUgPSBwLmxhYmVsLm5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH1cbiAgICBjYXNlIFwiaXNzdWVfY29tbWVudFwiOiB7XG4gICAgICBjb25zdCBwID0gZXZlbnQucGF5bG9hZCBhcyB7IGFjdGlvbj86IHN0cmluZyB9O1xuICAgICAgcmV0dXJuIHAuYWN0aW9uICE9PSB1bmRlZmluZWQgPyB7IGFjdGlvbjogcC5hY3Rpb24gfSA6IHt9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsKGE6IHN0cmluZ1tdLCBiOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHNvcnRlZEEgPSBbLi4uYV0uc29ydCgpO1xuICBjb25zdCBzb3J0ZWRCID0gWy4uLmJdLnNvcnQoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNvcnRlZEFbaV0gIT09IHNvcnRlZEJbaV0pIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEV2ZW50TGFiZWxzKGV2ZW50OiB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF5bG9hZDogRXZlbnRQYXlsb2FkO1xufSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XG4gICAgY2FzZSBcImlzc3Vlc1wiOiB7XG4gICAgICBjb25zdCBwID0gZXZlbnQucGF5bG9hZCBhcyBJc3N1ZVBheWxvYWQ7XG4gICAgICBpZiAoIXAuaXNzdWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgIH1cbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0XCI6XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdF9yZXZpZXdcIjoge1xuICAgICAgY29uc3QgcCA9IGV2ZW50LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RQYXlsb2FkIHwgUHVsbFJlcXVlc3RSZXZpZXdQYXlsb2FkO1xuICAgICAgaWYgKCFwLnB1bGxfcmVxdWVzdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBwLnB1bGxfcmVxdWVzdC5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSXNzdWVDb250ZXh0IHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZyB8IG51bGw7XG4gIGxhYmVsczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQckNvbnRleHQge1xuICBudW1iZXI6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nIHwgbnVsbDtcbiAgaGVhZFJlZjogc3RyaW5nO1xuICBoZWFkU2hhOiBzdHJpbmc7XG4gIGJhc2VSZWY6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gbG9hZElzc3VlRnJvbUV2ZW50KFxuICBldmVudDogeyBuYW1lOiBzdHJpbmc7IHBheWxvYWQ6IEV2ZW50UGF5bG9hZCB9LFxuICBsaXZlTGFiZWxzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbik6IElzc3VlQ29udGV4dCB8IG51bGwge1xuICBpZiAoZXZlbnQubmFtZSAhPT0gXCJpc3N1ZXNcIikgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHAgPSBldmVudC5wYXlsb2FkIGFzIElzc3VlUGF5bG9hZDtcbiAgaWYgKCFwLmlzc3VlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHAuaXNzdWUubnVtYmVyLFxuICAgIHRpdGxlOiBwLmlzc3VlLnRpdGxlLFxuICAgIGJvZHk6IHAuaXNzdWUuYm9keSxcbiAgICBsYWJlbHM6IGxpdmVMYWJlbHMgPz8gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkUHJGb3JTdGFnZShcbiAgYXJnczogT3JjaGVzdHJhdG9yQXJncyxcbiAgZGVjaXNpb246IFJvdXRlckRlY2lzaW9uLFxuKTogUHJvbWlzZTxQckNvbnRleHQgfCBudWxsPiB7XG4gIC8vIFByZWZlciB0aGUgZXZlbnQgcGF5bG9hZCB3aGVuIGF2YWlsYWJsZSAtLSBpdCBjYXJyaWVzIGhlYWQvYmFzZSBTSEFzIGF0XG4gIC8vIHRoZSBtb21lbnQgdGhlIGV2ZW50IGZpcmVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgcmV2aWV3IG5lZWRzIHRvIGFuY2hvclxuICAvLyBhZ2FpbnN0LlxuICBpZiAoXG4gICAgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdFwiIHx8XG4gICAgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdF9yZXZpZXdcIlxuICApIHtcbiAgICBjb25zdCBwID0gYXJncy5ldmVudC5wYXlsb2FkIGFzXG4gICAgICB8IFB1bGxSZXF1ZXN0UGF5bG9hZFxuICAgICAgfCBQdWxsUmVxdWVzdFJldmlld1BheWxvYWQ7XG4gICAgaWYgKHAucHVsbF9yZXF1ZXN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBudW1iZXI6IHAucHVsbF9yZXF1ZXN0Lm51bWJlcixcbiAgICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICAgIGJvZHk6IHAucHVsbF9yZXF1ZXN0LmJvZHksXG4gICAgICAgIGhlYWRSZWY6IHAucHVsbF9yZXF1ZXN0LmhlYWQucmVmLFxuICAgICAgICBoZWFkU2hhOiBwLnB1bGxfcmVxdWVzdC5oZWFkLnNoYSxcbiAgICAgICAgYmFzZVJlZjogcC5wdWxsX3JlcXVlc3QuYmFzZS5yZWYsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICAvLyBJc3N1ZS1zaWRlIGV2ZW50cyB0aGF0IHJvdXRlIHRvIHJldmlldyAoZS5nLiB1bmxhYmVsKHJldmlldy1zdHVjaykpXG4gIC8vIGlkZW50aWZ5IHRoZSBpbXBsIFBSIHZpYSBkZWNpc2lvbi5pbXBsUHJOdW1iZXI7IHB1bGwgaXQgdmlhIHRoZSBBUEkuXG4gIGlmIChkZWNpc2lvbi5zdGFnZSA9PT0gXCJyZXZpZXdcIiAmJiBkZWNpc2lvbi5pbXBsUHJOdW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhcmdzLmdpdGh1Yi5nZXRQcihkZWNpc2lvbi5pbXBsUHJOdW1iZXIpO1xuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6IGRlY2lzaW9uLmltcGxQck51bWJlcixcbiAgICAgIHRpdGxlOiBcIlwiLFxuICAgICAgYm9keTogZGF0YS5ib2R5LFxuICAgICAgaGVhZFJlZjogXCJcIixcbiAgICAgIGhlYWRTaGE6IGRhdGEuaGVhZC5zaGEsXG4gICAgICBiYXNlUmVmOiBkYXRhLmJhc2UucmVmLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmludGVyZmFjZSBQcmVjaGVja1Jlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICByZWFzb246IHN0cmluZztcbn1cblxuLy8gUG9ydGVkIGZyb20gcm91dGVyL3NyYy9oZWxwZXJzL3ByZWNoZWNrLXN0YWdlLnRzLiBDYXRjaGVzIHN0YWxlIGV2ZW50cyB0aGF0XG4vLyB0aGUgc3RhdGUgbWFjaGluZSB3b3VsZCBvdGhlcndpc2Ugcm91dGUgdG8gYSBzdGFnZSB3aG9zZSBwcmVjb25kaXRpb25zIGhhdmVcbi8vIGFscmVhZHkgYmVlbiBjbGVhcmVkIGJ5IGFuIGVhcmxpZXIgcnVuLlxuZnVuY3Rpb24gcHJlY2hlY2tTdGFnZShzdGFnZTogU3RhZ2UsIGxhYmVsczogU2V0PHN0cmluZz4pOiBQcmVjaGVja1Jlc3VsdCB7XG4gIHN3aXRjaCAoc3RhZ2UpIHtcbiAgICBjYXNlIFwidHJpYWdlXCI6IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBUUklBR0VfQkxPQ0tJTkdfU1RBVEVfTEFCRUxTKSB7XG4gICAgICAgIGlmIChsYWJlbHMuaGFzKGwpKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYXNvbjogYHRyaWFnZV9hbHJlYWR5X2NvbXBsZXRlZF9zdGF0ZV9sYWJlbF8ke2x9X3ByZXNlbnRgLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwidHJpYWdlX3ByZWNvbmRpdGlvbnNfaG9sZFwiIH07XG4gICAgfVxuICAgIGNhc2UgXCJzcGVjXCI6IHtcbiAgICAgIGNvbnN0IG5lZWRzID0gbGFiZWxzLmhhcyhMQUJFTFMubmVlZHNTcGVjKTtcbiAgICAgIGNvbnN0IGluUmV2aWV3ID0gbGFiZWxzLmhhcyhMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgICAgIGlmICghbmVlZHMgJiYgIWluUmV2aWV3KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHJlYXNvbjogXCJzcGVjX25laXRoZXJfbmVlZHNfc3BlY19ub3JfaW5fcmV2aWV3X2xhYmVsX3ByZXNlbnRcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsYWJlbHMuaGFzKExBQkVMUy5zcGVjUnVubmluZykpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246IFwic3BlY19hbHJlYWR5X2luX3Byb2dyZXNzXCIgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwic3BlY19wcmVjb25kaXRpb25zX2hvbGRcIiB9O1xuICAgIH1cbiAgICBjYXNlIFwicGxhblwiOiB7XG4gICAgICBjb25zdCBuZWVkcyA9IGxhYmVscy5oYXMoTEFCRUxTLm5lZWRzUGxhbik7XG4gICAgICBjb25zdCBpblJldmlldyA9IGxhYmVscy5oYXMoTEFCRUxTLnBsYW5JblJldmlldyk7XG4gICAgICBpZiAoIW5lZWRzICYmICFpblJldmlldykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICByZWFzb246IFwicGxhbl9uZWl0aGVyX25lZWRzX3BsYW5fbm9yX2luX3Jldmlld19sYWJlbF9wcmVzZW50XCIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAobGFiZWxzLmhhcyhMQUJFTFMucGxhblJ1bm5pbmcpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiBcInBsYW5fYWxyZWFkeV9pbl9wcm9ncmVzc1wiIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgcmVhc29uOiBcInBsYW5fcHJlY29uZGl0aW9uc19ob2xkXCIgfTtcbiAgICB9XG4gICAgY2FzZSBcImltcGxlbWVudFwiOiB7XG4gICAgICBjb25zdCBuZWVkcyA9IGxhYmVscy5oYXMoTEFCRUxTLm5lZWRzSW1wbCk7XG4gICAgICBjb25zdCByZXZpc2lvbiA9IGxhYmVscy5oYXMoTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgICAgY29uc3QgcmV2aXNlID0gbGFiZWxzLmhhcyhMQUJFTFMucmV2aXNlKTtcbiAgICAgIGlmICghbmVlZHMgJiYgIXJldmlzaW9uICYmICFyZXZpc2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgcmVhc29uOiBcImltcGxlbWVudF9uZWl0aGVyX25lZWRzX2ltcGxfbm9yX3JldmlzaW9uX2xhYmVsX3ByZXNlbnRcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsYWJlbHMuaGFzKExBQkVMUy5pbXBsZW1lbnRpbmcpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiBcImltcGxlbWVudF9hbHJlYWR5X2luX3Byb2dyZXNzXCIgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwiaW1wbGVtZW50X3ByZWNvbmRpdGlvbnNfaG9sZFwiIH07XG4gICAgfVxuICAgIGNhc2UgXCJyZXZpZXdcIjoge1xuICAgICAgLy8gUmV2aWV3IHByZWNvbmRpdGlvbnMgYXJlIHZhbGlkYXRlZCBieSB0aGUgc3RhdGUgbWFjaGluZSBvbiBldmVyeVxuICAgICAgLy8gc3luY2hyb25pemUvcmVhZHlfZm9yX3JldmlldyBldmVudDsgdGhlIG9yY2hlc3RyYXRvciBkb2VzIG5vdCBnYXRlLlxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHJlYXNvbjogXCJyZXZpZXdfcHJlY29uZGl0aW9uc19ob2xkXCIgfTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVwb3J0RmFpbHVyZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIHN0YWdlOiBTdGFnZSxcbiAgZXJyOiB1bmtub3duLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGtpbmQgPSBlcnIgaW5zdGFuY2VvZiBBZ2VudEVycm9yID8gZXJyLmtpbmQgOiBcImludGVybmFsXCI7XG4gIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG4gIGlmIChjdHguaXNzdWUpIHtcbiAgICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGN0eC5pc3N1ZS5udW1iZXIsIGZhaWxlZExhYmVsRm9yKHN0YWdlKSk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgY3R4Lmlzc3VlLm51bWJlcixcbiAgICAgIGZvcm1hdEZhaWx1cmVDb21tZW50KHN0YWdlLCBraW5kLCBtZXNzYWdlLCBjdHgucnVuSWQpLFxuICAgICk7XG4gIH1cbiAgY3R4LmF1ZGl0KHsgdHlwZTogXCJzdGFnZV9mYWlsZWRcIiwgc3RhZ2UsIGVycm9yOiB7IGtpbmQsIG1lc3NhZ2UgfSB9KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmFpbHVyZUNvbW1lbnQoXG4gIHN0YWdlOiBTdGFnZSxcbiAga2luZDogc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHJ1bklkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gW1xuICAgIGAjIyBTaG9wZmxvb3IgJHtzdGFnZX0gZmFpbHVyZWAsXG4gICAgXCJcIixcbiAgICBgKipLaW5kOioqIFxcYCR7a2luZH1cXGBgLFxuICAgIGAqKlJ1bjoqKiBcXGAke3J1bklkfVxcYGAsXG4gICAgXCJcIixcbiAgICBcImBgYFwiLFxuICAgIG1lc3NhZ2Uuc2xpY2UoMCwgNDAwMCksXG4gICAgXCJgYGBcIixcbiAgICBcIlwiLFxuICAgIGBSZW1vdmUgdGhlIFxcYHNob3BmbG9vcjpmYWlsZWQ6JHtzdGFnZX1cXGAgbGFiZWwgdG8gcmV0cnkuYCxcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsYUFBZ0IsZUFBZSxPQUFVO0FBQ3ZDLFVBQUksVUFBVSxRQUFRLFVBQVUsUUFBVztBQUN6QyxlQUFPO2lCQUNFLE9BQU8sVUFBVSxZQUFZLGlCQUFpQixRQUFRO0FBQy9ELGVBQU87O0FBRVQsYUFBTyxLQUFLLFVBQVUsS0FBSztJQUM3QjtBQVBBLElBQUFBLFNBQUEsaUJBQUE7QUFlQSxhQUFnQixvQkFDZCxzQkFBMEM7QUFFMUMsVUFBSSxDQUFDLE9BQU8sS0FBSyxvQkFBb0IsRUFBRSxRQUFRO0FBQzdDLGVBQU8sQ0FBQTs7QUFHVCxhQUFPO1FBQ0wsT0FBTyxxQkFBcUI7UUFDNUIsTUFBTSxxQkFBcUI7UUFDM0IsTUFBTSxxQkFBcUI7UUFDM0IsU0FBUyxxQkFBcUI7UUFDOUIsS0FBSyxxQkFBcUI7UUFDMUIsV0FBVyxxQkFBcUI7O0lBRXBDO0FBZkEsSUFBQUEsU0FBQSxzQkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCQSxRQUFBQyxNQUFBLGFBQUEsUUFBQSxJQUFBLENBQUE7QUFDQSxRQUFBLFVBQUE7QUFxQkEsYUFBZ0IsYUFDZCxTQUNBLFlBQ0EsU0FBWTtBQUVaLFlBQU0sTUFBTSxJQUFJLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFDcEQsY0FBUSxPQUFPLE1BQU0sSUFBSSxTQUFRLElBQUtBLElBQUcsR0FBRztJQUM5QztBQVBBLElBQUFDLFNBQUEsZUFBQTtBQVNBLGFBQWdCQyxPQUFNLE1BQWMsVUFBVSxJQUFFO0FBQzlDLG1CQUFhLE1BQU0sQ0FBQSxHQUFJLE9BQU87SUFDaEM7QUFGQSxJQUFBRCxTQUFBLFFBQUFDO0FBSUEsUUFBTSxhQUFhO0FBRW5CLFFBQU0sVUFBTixNQUFhO01BS1gsWUFB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QSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUs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TUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUM3QztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQzdDO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUM3QztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQzdDO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxJQUMvQztBQUVBLGFBQVMsVUFBVztBQUNsQixXQUFLLFNBQVM7QUFBQSxJQUNoQjtBQUNBLFlBQVEsVUFBVSxRQUFRLFNBQVUsS0FBSztBQUV2QyxZQUFNLElBQUksUUFBUSxTQUFTLEdBQUc7QUFDOUIsVUFBSSxNQUFNO0FBQ1YsVUFBSSxJQUFJO0FBQUcsVUFBSSxJQUFJO0FBQUcsWUFBTSxNQUFNLElBQUk7QUFDdEMsYUFBTyxJQUFJLEtBQUssRUFBRSxHQUFHO0FBQ25CLFlBQUksS0FBSyxXQUFXLFFBQVc7QUFDN0IsY0FBSSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsQ0FBQyxHQUFHO0FBQzNCLG1CQUFPLE1BQU0sS0FBSztBQUNsQixpQkFBSyxTQUFTO0FBQ2QsY0FBRTtBQUFBLFVBQ0osT0FBTztBQUNMLGlCQUFLLFVBQVUsSUFBSSxDQUFDO0FBQ3BCLGNBQUU7QUFDRixnQkFBSSxLQUFLLE9BQU8sV0FBVyxHQUFHO0FBQzVCLHFCQUFPLE9BQU8sYUFBYSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7QUFDcEQsbUJBQUssU0FBUztBQUFBLFlBQ2hCO0FBQUEsVUFDRjtBQUFBLFFBQ0YsV0FBVyxJQUFJLENBQUMsTUFBTSxLQUFLO0FBQ3pCLGNBQUksSUFBSSxHQUFHO0FBQ1QsbUJBQU8sSUFBSSxVQUFVLEdBQUcsQ0FBQztBQUN6QixnQkFBSTtBQUFBLFVBQ047QUFDQSxlQUFLLFNBQVM7QUFDZCxZQUFFO0FBQUEsUUFDSjtBQUFBLE1BQ0Y7QUFDQSxVQUFJLElBQUksT0FBTyxLQUFLLFdBQVcsUUFBVztBQUFFLGVBQU8sSUFBSSxVQUFVLENBQUM7QUFBQSxNQUFFO0FBQ3BFLGFBQU87QUFBQSxJQUNUO0FBQ0EsWUFBUSxVQUFVLFFBQVEsV0FBWTtBQUNwQyxXQUFLLFNBQVM7QUFBQSxJQUNoQjtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3JEakI7QUFBQSxrR0FBQUMsVUFBQUMsU0FBQTtBQUFBO0FBRUEsUUFBTSxVQUFVO0FBQ2hCLFFBQU0sYUFBYTtBQUNuQixRQUFNLFdBQVc7QUFFakIsUUFBTSxhQUFhO0FBRW5CLGVBQVcsU0FBUztBQUNwQixhQUFTLFdBQVksS0FBSyxLQUFLO0FBQzdCLFlBQU0sU0FBUyxJQUFJO0FBQ25CLFlBQU0sZ0JBQWdCLElBQUk7QUFDMUIsV0FBSyxNQUFNO0FBRVgsV0FBSyxpQkFBaUIsU0FBUyxRQUFRLGFBQWEsSUFBSSxPQUFPLElBQUk7QUFDbkUsV0FBSyxxQkFBcUIsU0FBUyxRQUFRLGlCQUFpQixHQUFHO0FBQy9ELFdBQUssY0FBYyxTQUFTLFFBQVEsVUFBVSxRQUFRO0FBRXRELFVBQUk7QUFDSixlQUFTLElBQUksR0FBRyxNQUFNLGNBQWMsUUFBUSxJQUFJLEtBQUssRUFBRSxHQUFHO0FBQ3hELFlBQUksTUFBTSxRQUFRLGNBQWMsQ0FBQyxDQUFDLEtBQzlCLFdBQVcsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRztBQUN4QyxvQkFBVSxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWTtBQUMxQztBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBRUEsVUFBSSxZQUFZLFFBQVc7QUFBRSxrQkFBVSxJQUFJLGNBQWM7QUFBQSxNQUFPO0FBRWhFLFdBQUssVUFBVSxJQUFJLFFBQVE7QUFDM0IsV0FBSyxVQUFVO0FBQ2YsV0FBSyxVQUFVO0FBQ2YsV0FBSyxTQUFTO0FBQ2QsV0FBSyxpQkFBaUI7QUFDdEIsV0FBSyxZQUFZO0FBQ2pCLFdBQUssWUFBWTtBQUNqQixXQUFLLE9BQU87QUFDWixXQUFLLE9BQU87QUFDWixXQUFLLFlBQVk7QUFDakIsV0FBSyxZQUFZO0FBQ2pCLFdBQUssWUFBWTtBQUFBLElBQ25CO0FBRUEsZUFBVyxVQUFVLFFBQVEsU0FBVSxNQUFNQyxLQUFJO0FBQy9DLFVBQUksS0FBSyxZQUFZLEtBQUssYUFBYTtBQUNyQyxZQUFJLENBQUMsS0FBSyxJQUFJLGdCQUFnQjtBQUM1QixlQUFLLElBQUksaUJBQWlCO0FBQzFCLGVBQUssSUFBSSxLQUFLLGFBQWE7QUFBQSxRQUM3QjtBQUNBLGVBQU9BLElBQUc7QUFBQSxNQUNaO0FBRUEsVUFBSTtBQUFPLFVBQUk7QUFBUSxVQUFJO0FBQUcsVUFBSSxJQUFJO0FBQUcsWUFBTSxNQUFNLEtBQUs7QUFFMUQsYUFBTyxJQUFJLEtBQUs7QUFDZCxZQUFJLEtBQUssV0FBVyxPQUFPO0FBQ3pCLGtCQUFRLFNBQVM7QUFDakIsZUFBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsR0FBRztBQUN4QixnQkFBSSxDQUFDLEtBQUssZ0JBQWdCO0FBQUUsZ0JBQUU7QUFBQSxZQUFFO0FBQ2hDLGdCQUFJLEtBQUssQ0FBQyxNQUFNLElBQWE7QUFDM0Isc0JBQVE7QUFDUjtBQUFBLFlBQ0YsV0FBVyxLQUFLLENBQUMsTUFBTSxJQUFhO0FBQ2xDLHVCQUFTO0FBQ1Q7QUFBQSxZQUNGO0FBQ0EsZ0JBQUksS0FBSyxrQkFBa0IsS0FBSyxjQUFjLEtBQUssb0JBQW9CO0FBQ3JFLG1CQUFLLFlBQVk7QUFDakI7QUFBQSxZQUNGLFdBQVcsS0FBSyxnQkFBZ0I7QUFBRSxnQkFBRSxLQUFLO0FBQUEsWUFBVTtBQUFBLFVBQ3JEO0FBRUEsY0FBSSxVQUFVLFFBQVc7QUFFdkIsZ0JBQUksUUFBUSxHQUFHO0FBQUUsbUJBQUssUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUFBLFlBQUU7QUFDcEYsaUJBQUssU0FBUztBQUVkLGlCQUFLLFlBQVk7QUFDakIsaUJBQUssaUJBQWlCO0FBQ3RCLGlCQUFLLE9BQU87QUFDWixpQkFBSyxZQUFZO0FBQ2pCLGlCQUFLLFlBQVk7QUFDakIsaUJBQUssUUFBUSxNQUFNO0FBRW5CLGdCQUFJLFFBQVE7QUFBQSxVQUNkLFdBQVcsV0FBVyxRQUFXO0FBRS9CLGNBQUUsS0FBSztBQUNQLGdCQUFJO0FBQUssa0JBQU0sV0FBVyxLQUFLO0FBQy9CLGdCQUFJLFNBQVMsR0FBRztBQUFFLG9CQUFPLEtBQUssUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVMsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUFBLFlBQUcsT0FBTztBQUFFLG9CQUFNLEtBQUs7QUFBQSxZQUFLO0FBRXZILGlCQUFLLFlBQVk7QUFDakIsaUJBQUssaUJBQWlCO0FBQ3RCLGlCQUFLLE9BQU87QUFDWixpQkFBSyxZQUFZO0FBQ2pCLGlCQUFLLFlBQVk7QUFDakIsaUJBQUssUUFBUSxNQUFNO0FBRW5CLGdCQUFJLElBQUksUUFBUTtBQUNkLG1CQUFLLElBQUk7QUFBQSxnQkFBSztBQUFBLGdCQUFTLFdBQVcsS0FBSyxVQUFVLEtBQUssT0FBTztBQUFBLGdCQUMzRDtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxjQUFLO0FBQUEsWUFDVDtBQUVBLGdCQUFJLFNBQVM7QUFDYixnQkFBSSxLQUFLLFlBQVksS0FBSyxhQUFhO0FBQUUscUJBQU9BLElBQUc7QUFBQSxZQUFFO0FBQUEsVUFDdkQsV0FBVyxLQUFLLFdBQVc7QUFFekIsZ0JBQUksSUFBSSxHQUFHO0FBQUUsbUJBQUssUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUFBLFlBQUU7QUFDNUUsZ0JBQUk7QUFDSixpQkFBSyxLQUFLLFlBQVksS0FBSyxLQUFLLFlBQVksS0FBSyxvQkFBb0I7QUFFbkUsbUJBQUssaUJBQWlCO0FBQ3RCLG1CQUFLLFlBQVk7QUFBQSxZQUNuQjtBQUFBLFVBQ0YsT0FBTztBQUNMLGdCQUFJLElBQUksS0FBSztBQUFFLG1CQUFLLFFBQVEsS0FBSyxRQUFRLE1BQU0sS0FBSyxTQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQUEsWUFBRTtBQUMzRSxnQkFBSTtBQUFBLFVBQ047QUFBQSxRQUNGLE9BQU87QUFDTCxtQkFBUztBQUNULGVBQUssSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLEdBQUc7QUFDeEIsZ0JBQUksQ0FBQyxLQUFLLGdCQUFnQjtBQUFFLGdCQUFFO0FBQUEsWUFBRTtBQUNoQyxnQkFBSSxLQUFLLENBQUMsTUFBTSxJQUFhO0FBQzNCLHVCQUFTO0FBQ1Q7QUFBQSxZQUNGO0FBQ0EsZ0JBQUksS0FBSyxrQkFBa0IsS0FBSyxjQUFjLEtBQUssZ0JBQWdCO0FBQ2pFLG1CQUFLLFlBQVk7QUFDakI7QUFBQSxZQUNGLFdBQVcsS0FBSyxnQkFBZ0I7QUFBRSxnQkFBRSxLQUFLO0FBQUEsWUFBVTtBQUFBLFVBQ3JEO0FBRUEsY0FBSSxXQUFXLFFBQVc7QUFDeEIsY0FBRSxLQUFLO0FBQ1AsZ0JBQUksU0FBUyxHQUFHO0FBQUUsbUJBQUssUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVMsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUFBLFlBQUU7QUFDdEYsaUJBQUssSUFBSTtBQUFBLGNBQUs7QUFBQSxjQUFTLFdBQVcsS0FBSyxNQUFNLFVBQVUsS0FBSyxPQUFPO0FBQUEsY0FDakUsV0FBVyxLQUFLLE1BQU0sVUFBVSxLQUFLLE9BQU87QUFBQSxjQUM1QyxLQUFLO0FBQUEsY0FDTCxLQUFLO0FBQUEsWUFBUztBQUNoQixpQkFBSyxTQUFTO0FBRWQsaUJBQUssWUFBWTtBQUNqQixpQkFBSyxpQkFBaUI7QUFDdEIsaUJBQUssT0FBTztBQUNaLGlCQUFLLFlBQVk7QUFDakIsaUJBQUssWUFBWTtBQUNqQixpQkFBSyxRQUFRLE1BQU07QUFFbkIsZ0JBQUksU0FBUztBQUNiLGdCQUFJLEtBQUssWUFBWSxLQUFLLGFBQWE7QUFBRSxxQkFBT0EsSUFBRztBQUFBLFlBQUU7QUFBQSxVQUN2RCxXQUFXLEtBQUssV0FBVztBQUV6QixnQkFBSSxJQUFJLEdBQUc7QUFBRSxtQkFBSyxRQUFRLEtBQUssUUFBUSxNQUFNLEtBQUssU0FBUyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBRTtBQUM1RSxnQkFBSTtBQUNKLGdCQUFLLEtBQUssU0FBUyxNQUFNLEtBQUssbUJBQW1CLE1BQzVDLEtBQUssWUFBWSxLQUFLLEtBQUssWUFBWSxLQUFLLGdCQUFnQjtBQUUvRCxtQkFBSyxpQkFBaUI7QUFDdEIsbUJBQUssWUFBWTtBQUFBLFlBQ25CO0FBQUEsVUFDRixPQUFPO0FBQ0wsZ0JBQUksSUFBSSxLQUFLO0FBQUUsbUJBQUssUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVMsVUFBVSxDQUFDLENBQUM7QUFBQSxZQUFFO0FBQzNFLGdCQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsTUFBQUEsSUFBRztBQUFBLElBQ0w7QUFFQSxlQUFXLFVBQVUsTUFBTSxXQUFZO0FBQ3JDLFVBQUksS0FBSyxJQUFJLE9BQU87QUFBRTtBQUFBLE1BQU87QUFFN0IsVUFBSSxLQUFLLFdBQVcsU0FBUyxLQUFLLEtBQUssU0FBUyxHQUFHO0FBQ2pELGFBQUssSUFBSTtBQUFBLFVBQUs7QUFBQSxVQUFTLFdBQVcsS0FBSyxNQUFNLFVBQVUsS0FBSyxPQUFPO0FBQUEsVUFDakU7QUFBQSxVQUNBLEtBQUs7QUFBQSxVQUNMO0FBQUEsUUFBSztBQUFBLE1BQ1QsV0FBVyxLQUFLLFdBQVcsT0FBTztBQUNoQyxhQUFLLElBQUk7QUFBQSxVQUFLO0FBQUEsVUFBUyxXQUFXLEtBQUssTUFBTSxVQUFVLEtBQUssT0FBTztBQUFBLFVBQ2pFLFdBQVcsS0FBSyxNQUFNLFVBQVUsS0FBSyxPQUFPO0FBQUEsVUFDNUMsS0FBSztBQUFBLFVBQ0wsS0FBSztBQUFBLFFBQVM7QUFBQSxNQUNsQjtBQUNBLFdBQUssSUFBSSxRQUFRO0FBQ2pCLFdBQUssSUFBSSxLQUFLLFFBQVE7QUFBQSxJQUN4QjtBQUVBLElBQUFELFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzdMakI7QUFBQSxzRkFBQUUsVUFBQUMsU0FBQTtBQUFBO0FBRUEsUUFBTSxpQkFBaUIsUUFBUSxhQUFhLEVBQUU7QUFDOUMsUUFBTSxFQUFFLFNBQVMsSUFBSSxRQUFRLFdBQVc7QUFDeEMsUUFBTSxRQUFRO0FBRWQsUUFBTSxrQkFBa0I7QUFDeEIsUUFBTSxtQkFBbUI7QUFDekIsUUFBTSxjQUFjO0FBRXBCLGFBQVMsT0FBUSxNQUFNO0FBQ3JCLFVBQUksRUFBRSxnQkFBZ0IsU0FBUztBQUFFLGVBQU8sSUFBSSxPQUFPLElBQUk7QUFBQSxNQUFFO0FBRXpELFVBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsY0FBTSxJQUFJLFVBQVUsb0NBQW9DO0FBQUEsTUFDMUQ7QUFDQSxVQUFJLE9BQU8sS0FBSyxZQUFZLFVBQVU7QUFDcEMsY0FBTSxJQUFJLFVBQVUsMkRBQTJEO0FBQUEsTUFDakY7QUFDQSxVQUFJLE9BQU8sS0FBSyxRQUFRLGNBQWMsTUFBTSxVQUFVO0FBQ3BELGNBQU0sSUFBSSxVQUFVLDhCQUE4QjtBQUFBLE1BQ3BEO0FBRUEsWUFBTTtBQUFBLFFBQ0o7QUFBQSxRQUNBLEdBQUc7QUFBQSxNQUNMLElBQUk7QUFFSixXQUFLLE9BQU87QUFBQSxRQUNWLGFBQWE7QUFBQSxRQUNiLEdBQUc7QUFBQSxNQUNMO0FBQ0EscUJBQWUsS0FBSyxNQUFNLEtBQUssSUFBSTtBQUVuQyxXQUFLLFFBQVE7QUFDYixXQUFLLFVBQVUsS0FBSyxtQkFBbUIsT0FBTztBQUM5QyxXQUFLLFlBQVk7QUFBQSxJQUNuQjtBQUNBLGFBQVMsUUFBUSxjQUFjO0FBRS9CLFdBQU8sVUFBVSxPQUFPLFNBQVVDLEtBQUk7QUFDcEMsVUFBSUEsUUFBTyxVQUFVO0FBQ25CLFlBQUksQ0FBQyxLQUFLLE9BQU87QUFDZixlQUFLLFNBQVMsSUFBSTtBQUNsQjtBQUFBLFFBQ0YsV0FBVyxLQUFLLFdBQVc7QUFDekI7QUFBQSxRQUNGO0FBQ0EsYUFBSyxZQUFZO0FBQUEsTUFDbkI7QUFDQSxxQkFBZSxVQUFVLEtBQUssTUFBTSxNQUFNLFNBQVM7QUFBQSxJQUNyRDtBQUVBLFdBQU8sVUFBVSxxQkFBcUIsU0FBVSxTQUFTO0FBQ3ZELFlBQU0sU0FBUyxZQUFZLFFBQVEsY0FBYyxDQUFDO0FBRWxELFlBQU0sTUFBTTtBQUFBLFFBQ1YsWUFBWSxLQUFLLEtBQUs7QUFBQSxRQUN0QixTQUFTLEtBQUssS0FBSztBQUFBLFFBQ25CO0FBQUEsUUFDQSxlQUFlLEtBQUssS0FBSztBQUFBLFFBQ3pCLGFBQWEsS0FBSyxLQUFLO0FBQUEsUUFDdkIsUUFBUSxLQUFLLEtBQUs7QUFBQSxRQUNsQixlQUFlO0FBQUEsUUFDZixjQUFjLEtBQUssS0FBSztBQUFBLE1BQzFCO0FBRUEsVUFBSSxnQkFBZ0IsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEdBQUc7QUFDMUMsZUFBTyxJQUFJLGdCQUFnQixNQUFNLEdBQUc7QUFBQSxNQUN0QztBQUNBLFVBQUksaUJBQWlCLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQyxHQUFHO0FBQzNDLGVBQU8sSUFBSSxpQkFBaUIsTUFBTSxHQUFHO0FBQUEsTUFDdkM7QUFDQSxZQUFNLElBQUksTUFBTSwyQkFBMkI7QUFBQSxJQUM3QztBQUVBLFdBQU8sVUFBVSxTQUFTLFNBQVUsT0FBTyxVQUFVQyxLQUFJO0FBQ3ZELFdBQUssUUFBUSxNQUFNLE9BQU9BLEdBQUU7QUFBQSxJQUM5QjtBQUVBLElBQUFGLFFBQU8sVUFBVTtBQUNqQixJQUFBQSxRQUFPLFFBQVEsVUFBVTtBQUN6QixJQUFBQSxRQUFPLFFBQVEsU0FBUztBQUV4QixJQUFBQSxRQUFPLFFBQVEsUUFBUTtBQUFBO0FBQUE7OztBQ3BGdkIsSUFBQUcscUJBQUE7QUFBQSxnRkFBQUMsVUFBQUMsU0FBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLGdCQUFnQixxQkFBcUIsSUFBSSxRQUFRLGdCQUFnQjtBQUV6RSxRQUFNLHdCQUF3QixDQUFDLE9BQU8sUUFBUSxNQUFNO0FBQ3BELFFBQU0sMkJBQTJCLElBQUksSUFBSSxxQkFBcUI7QUFFOUQsUUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHO0FBRTFDLFFBQU0saUJBQWlCLENBQUMsS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHO0FBQy9DLFFBQU0sb0JBQW9CLElBQUksSUFBSSxjQUFjO0FBR2hELFFBQU0sV0FBVztBQUFBLE1BQ2Y7QUFBQSxNQUFLO0FBQUEsTUFBSztBQUFBLE1BQUs7QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFDL0c7QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUN2RztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFDbEc7QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFRO0FBQUEsTUFBUTtBQUFBLE1BQ3BHO0FBQUEsTUFBUTtBQUFBLE1BQVE7QUFBQSxNQUFRO0FBQUEsTUFBUTtBQUFBLE1BQVE7QUFBQSxNQUFRO0FBQUEsTUFBUTtBQUFBLE1BQVE7QUFBQSxNQUFRO0FBQUEsTUFBUTtBQUFBLE1BQVE7QUFBQSxNQUFRO0FBQUEsTUFDaEc7QUFBQSxJQUNGO0FBRUEsUUFBTSxjQUFjLElBQUksSUFBSSxR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O0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxLQUFBLElBQUEsQ0FBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxTQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxTQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsQ0FBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxXQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxLQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxZQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxXQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxhQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxZQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxLQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxlQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxlQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0lBQ0YsR0ExRFksVUFBQUosU0FBQSxZQUFBQSxTQUFBLFVB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QUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVDtBQUFTLGlCQUFPO0FBQUEsTUFDbEI7QUFBQSxJ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QUEsUUFBQSxNQUFBLENBQUE7QUFDQSxRQUFBLFFBQUEsYUFBQSxRQUFBLE9BQUEsQ0FBQTtBQUdBLFFBQUFNLE1BQUEsYUFBQSxlQUFBO0FBQ0EsUUFBQSxTQUFBLGFBQUEsaUJBQUE7QUFDQSxRQUFBLFdBQUE7QUFFQSxRQUFZO0FBQVosS0FBQSxTQUFZQyxZQUFTO0FBQ25CLE1BQUFBLFdBQUFBLFdBQUEsSUFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsaUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGtCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxlQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxtQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsbUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFlBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGNBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxXQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxrQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZUFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsNkJBQUEs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QUFJLEdBQUcsb0JBQWtCLE9BQU8sU0FBTyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLE1BQUksT0FBTyxLQUFFO0FBQUUsV0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxhQUFPLEVBQUUsQ0FBQztBQUFBLElBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQyxJQUFFLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsTUFBSSxPQUFPLEtBQUU7QUFBRSxNQUFFLENBQUMsSUFBRSxFQUFFLENBQUM7QUFBQSxFQUFDLElBQUcsS0FBRyxNQUFJLEdBQUcsZ0JBQWMsU0FBUyxHQUFFLEdBQUU7QUFBQyxhQUFRLEtBQUssRUFBRSxLQUFHLE1BQUksYUFBVyxDQUFDLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxDQUFDLEVBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLE1BQUksS0FBRyxNQUFJLEdBQUcsb0JBQWtCLE9BQU8sU0FBTyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLE1BQUksT0FBTyxLQUFFO0FBQUUsV0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxhQUFPLEVBQUUsQ0FBQztBQUFBLElBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQyxJQUFFLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsTUFBSSxPQUFPLEtBQUU7QUFBRSxNQUFFLENBQUMsSUFBRSxFQUFFLENBQUM7QUFBQSxFQUFDLElBQUcsS0FBRyxNQUFJLEdBQUcsZ0JBQWMsU0FBUyxHQUFFLEdBQUU7QUFBQyxhQUFRLEtBQUssRUFBRSxLQUFHLE1BQUksYUFBVyxDQUFDLE9BQU8s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QixDQUFDO0FBQUEsTUFBQyxHQUFFLEVBQUUsVUFBUSxFQUFFLFNBQVMsR0FBRSxFQUFFLFFBQU0sRUFBRSxPQUFPLEdBQUUsRUFBRSxPQUFLLEVBQUUsTUFBTSxHQUFFLEVBQUUsT0FBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLFFBQU0sRUFBRSxPQUFPO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxXQUFVO0FBQUMsVUFBRyxDQUFDLEtBQUssVUFBVSxNQUFLLFlBQVUsSUFBSTtBQUFHLGFBQU8sS0FBSztBQUFBLElBQVM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsY0FBWTtBQUFBLEVBQU8sTUFBTSxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFLLFdBQVMsSUFBRSxJQUFJLElBQUksQ0FBQyxJQUFFLG9CQUFJO0FBQUEsSUFBRztBQUFBLElBQUMsU0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssU0FBUyxJQUFJLENBQUM7QUFBRSxVQUFHLENBQUMsRUFBRTtBQUFPLGFBQU8sT0FBTyxPQUFPLENBQUMsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxhQUFPLE1BQU0sS0FBSyxLQUFLLFNBQVMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRSxDQUFDLE1BQUksQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFNBQVMsR0FBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLElBQUksR0FBRyxLQUFLLFFBQVE7QUFBRSxhQUFPLEVBQUUsU0FBUyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsVUFBSSxJQUFFLElBQUksR0FBRyxLQUFLLFFBQVE7QUFBRSxhQUFPLEVBQUUsU0FBUyxPQUFPLENBQUMsR0FBRTtB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O0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQUcsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFNBQU8sT0FBTyxNQUFJLFdBQVMsQ0FBQyxDQUFDLElBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxXQUFVO0FBQUMsYUFBTyxLQUFLO0FBQUEsSUFBRztBQUFBLElBQUMsV0FBVTtBQUFDLFVBQUcsS0FBSyxPQUFPLFNBQU8sRUFBRSxRQUFNO0FBQUcsVUFBSSxJQUFFLEtBQUssT0FBTyxDQUFDO0FBQUUsYUFBTyxNQUFJLE1BQUksTUFBSTtBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksTUFBSztBQUFDLFVBQUk7QUFBRSxjQUFPLElBQUUsS0FBSyxVQUFRLFFBQU0sTUFBSSxTQUFPLElBQUUsS0FBSyxPQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRSxNQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsVUFBSTtBQUFFLGNBQU8sSUFBRSxLQUFLLFlBQVUsUUFBTSxNQUFJLFNBQU8sSUFBRSxLQUFLLFNBQU8sS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxZQUFHLGFBQWEsR0FBRyxHQUFFLEVBQUUsR0FBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUcsS0FBRztBQUFFLGVBQU87QUFBQSxNQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLFFBQU07QUFBRyxLQUFHLE1BQUksSUFBSSxHQUFHLEVBQUU7QUFBRSxXQUFTLEdBQUcsTUFBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUUsV0FBTSxJQUFFLEVBQUUsT0FBTyxJQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUFFLFdBQU8sSUFBSSxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxJQUFFO0FBQUcsTUFBSSxLQUFHLElBQUksR0FBRyxHQUFHO0FBQUUsV0FBUyxHQUFHLE1BQUssR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRSxXQUFNLElBQUUsRUFBRSxPQUFPLEdBQUUsS0FBSyxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsQ0FBQyxHQUFFLElBQUksR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsTUFBSTtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLGFBQWEsR0FBRyxHQUFFLEtBQUssR0FBRyxFQUFFLE1BQU07QUFBQSxhQUFVLGFBQWEsR0FBRyxHQUFFLEtBQUssQ0FBQztBQUFBLFFBQU8sR0FBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsYUFBVztBQUFHLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFO0FBQUUsV0FBTSxJQUFFLEVBQUUsU0FBTyxHQUFFO0FBQUMsVUFBRyxFQUFFLENBQUMsTUFBSSxJQUFHO0FBQUMsWUFBSSxJQUFFLEdBQUcsRUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUUsQ0FBQyxDQUFDO0FBQUUsWUFBRyxNQUFJLFFBQU87QUFBQyxZQUFFLE9BQU8sSUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsUUFBUTtBQUFDLFVBQUUsR0FBRyxJQUFFO0FBQUEsTUFBRztBQUFDO0FBQUEsSUFBRztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxNQUFJLEtBQUssUUFBTztBQUFFLFFBQUcsTUFBSSxLQUFLLFFBQU87QUFBRSxRQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsVUFBRyxhQUFhLE1BQUksRUFBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJLElBQUk7QUFBTyxVQUFHLE9BQU8sS0FBRyxTQUFTLFFBQU0sR0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQUksVUFBRyxFQUFFLENBQUMsTUFBSSxJQUFJLFFBQU8sRUFBRSxNQUFNLEdBQUUsRUFBRSxJQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUU7QUFBQSxJQUFNO0FBQUMsUUFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLENBQUMsTUFBSSxPQUFLLEVBQUUsYUFBYSxJQUFJLFFBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUFHO0FBQUEsRUFBTTtBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsU0FBUyxJQUFFLElBQUUsRUFBRSxTQUFTLElBQUUsSUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQUEsRUFBRTtBQUFDLEtBQUcsWUFBVTtBQUFHLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxPQUFPLEtBQUcsWUFBVSxPQUFPLEtBQUcsYUFBVyxNQUFJLE9BQUssSUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUcsSUFBRSxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxZQUFVO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxDQUFDLEVBQUUsUUFBUSxXQUFVLFNBQVMsRUFBRSxRQUFRLFdBQVUsU0FBUztBQUFBLEVBQUM7QUFBQyxLQUFHLGdCQUFjO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLE9BQU8sS0FBRyxZQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsSUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBRSxNQUFNLENBQUM7QUFBQSxFQUFHO0FBQUMsS0FBRyxjQUFZO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE9BQU8sS0FBRyxZQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsRUFBRSxRQUFPLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtBQUFFLFVBQU0sTUFBTSxpQ0FBaUMsQ0FBQyxpQ0FBaUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxtQkFBaUI7QUFBRyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sSUFBSSxHQUFHLEVBQUUsU0FBUyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsYUFBVztBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLGFBQVcsR0FBRyxpQkFBZSxHQUFHLFFBQU0sR0FBRyxXQUFTLEdBQUcsaUJBQWU7QUFBTyxNQUFJLEtBQUcsR0FBRztBQUFBLEVBQUUsTUFBTSxXQUFXLE1BQUs7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU0sdUJBQXVCLENBQUMsY0FBYztBQUFFLFdBQUssUUFBTSxFQUFFO0FBQUEsSUFBSztBQUFBLEVBQUM7QUFBQyxNQUFJO0FBQUcsR0FBQyxTQUFTLEdBQUU7QUFBQyxNQUFFLEVBQUUsVUFBUSxDQUFDLElBQUUsV0FBVSxFQUFFLEVBQUUsWUFBVSxDQUFDLElBQUU7QUFBQSxFQUFXLEdBQUcsT0FBSyxHQUFHLGlCQUFlLEtBQUcsQ0FBQyxFQUFFO0FBQUUsS0FBRyxXQUFTLEVBQUMsT0FBTSxJQUFJLEdBQUcsS0FBSyxPQUFPLEdBQUUsS0FBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUM7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsWUFBWSxFQUFDLFVBQVMsR0FBRSxRQUFPLEVBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQyxXQUFLLFNBQU8sQ0FBQyxHQUFFLEtBQUssWUFBVSxHQUFFLEtBQUssVUFBUTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU8sYUFBYSxHQUFHLE9BQUssSUFBRSxLQUFLLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLEtBQUssR0FBRTtBQUFDLGFBQU8sSUFBSSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFNBQVMsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU8sQ0FBQyxLQUFHLEtBQUssV0FBVyxDQUFDO0FBQUUsYUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU87QUFBQSxJQUFFO0FBQUEsSUFBQyxXQUFXLEdBQUU7QUFBQyxVQUFJLEdBQUU7QUFBRSxZQUFLLEtBQUcsSUFBRSxLQUFLLGFBQVcsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLGVBQWEsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLElBQUksQ0FBQyxNQUFJLEtBQUssYUFBVyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsRUFBRSxPQUFNLE1BQU0sb0JBQW9CLENBQUMsZ0NBQWdDO0FBQUUsYUFBTyxLQUFLLE9BQU8sQ0FBQyxJQUFFLEVBQUMsUUFBTyxHQUFFLE9BQU0sRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxRQUFNO0FBQUEsRUFBRyxNQUFNLFdBQVcsR0FBRyxLQUFJO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLFlBQU0sQ0FBQztBQUFFLFdBQUssU0FBTztBQUFBLElBQUM7QUFBQSxJQUFDLFNBQVMsR0FBRSxFQUFDLFVBQVMsR0FBRSxXQUFVLEVBQUMsR0FBRTtBQUFDLFdBQUssUUFBTSxHQUFFLEtBQUssWUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztBQUFBLElBQUc7QUFBQSxFQUFDO0FBQUMsS0FBRyxpQkFBZTtBQUFHLE1BQUksS0FBRyxHQUFHO0FBQUEsRUFBTSxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsWUFBTSxDQUFDO0FBQUUsV0FBSyxVQUFRLENBQUMsR0FBRSxLQUFLLFNBQU8sRUFBRSxPQUFNLEtBQUssT0FBSyxFQUFDLEdBQUcsR0FBRSxJQUFHLEVBQUUsUUFBTSxLQUFHLEdBQUcsSUFBRztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQUs7QUFBQyxhQUFPLEtBQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxLQUFLLEdBQUU7QUFBQyxhQUFPLElBQUksR0FBRyxHQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUUsR0FBRTtBQUFDLFVBQUk7QUFBRSxVQUFHLEVBQUUsUUFBTSxPQUFPLE9BQU0sTUFBTSxzQ0FBc0M7QUFBRSxVQUFJLElBQUUsS0FBSyxPQUFPLENBQUMsR0FBRSxFQUFDLFFBQU8sRUFBQyxJQUFFLEdBQUUsS0FBRyxJQUFFLEVBQUUsU0FBTyxRQUFNLE1BQUksU0FBTyxJQUFFLEVBQUUsS0FBSSxJQUFFLEtBQUssUUFBUSxDQUFDO0FBQUUsVUFBRyxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUUsWUFBRyxFQUFFLFFBQU87QUFBQSxNQUFDLE1BQU0sS0FBRSxLQUFLLFFBQVEsQ0FBQyxJQUFFLG9CQUFJO0FBQUksUUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFFLFVBQUksSUFBRSxLQUFLLE9BQU8sQ0FBQyxNQUFJLEtBQUssT0FBTyxDQUFDLElBQUUsQ0FBQyxJQUFHLElBQUUsRUFBRTtBQUFPLGFBQU8sRUFBRSxDQUFDLElBQUUsRUFBRSxLQUFJLEVBQUUsU0FBUyxHQUFFLEVBQUMsVUFBUyxHQUFFLFdBQVUsRUFBQyxDQUFDLEdBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxTQUFTLEdBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLFFBQVEsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFO0FBQU8sYUFBTyxFQUFFLElBQUksQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsR0FBRSxJQUFFLEtBQUssU0FBUTtBQUFDLGFBQU8sS0FBSyxjQUFjLEdBQUUsQ0FBQyxNQUFJO0FBQUMsWUFBRyxFQUFFLGNBQVksT0FBTyxPQUFNLE1BQU0sa0JBQWtCLENBQUMsZ0JBQWdCO0FBQUUsZUFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUztBQUFBLE1BQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsSUFBRSxLQUFLLFNBQVEsR0FBRSxHQUFFO0FBQUMsYUFBTyxLQUFLLGNBQWMsR0FBRSxDQUFDLE1BQUk7QUFBQyxZQUFHLEVBQUUsVUFBUSxPQUFPLE9BQU0sTUFBTSxrQkFBa0IsQ0FBQyxnQkFBZ0I7QUFBRSxlQUFPLEVBQUUsTUFBTTtBQUFBLE1BQUksR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLEdBQUc7QUFBSSxlQUFRLEtBQUssR0FBRTtBQUFDLFlBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxZQUFHLENBQUMsRUFBRTtBQUFTLFlBQUksSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsS0FBRyxvQkFBSTtBQUFJLFVBQUUsUUFBUSxDQUFDLE1BQUk7QUFBQyxjQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFBTyxZQUFFLElBQUksR0FBRSxHQUFHLE9BQU87QUFBRSxjQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsY0FBRyxHQUFFO0FBQUMsZ0JBQUksSUFBRSxLQUFLLEtBQUssTUFBSSxHQUFHLFNBQVMsTUFBSSxHQUFHLFNBQVM7QUFBTSxnQkFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO0FBQUEsVUFBRSxXQUFTLElBQUUsTUFBSSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7QUFBQSxjQUFRLE9BQU0sSUFBSSxHQUFHLENBQUM7QUFBRSxZQUFFLElBQUksR0FBRSxHQUFHLFNBQVM7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxhQUFXO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsS0FBRyxHQUFHLE1BQUksR0FBRyxNQUFJLEdBQUcsVUFBUSxHQUFHLFlBQVUsR0FBRyxXQUFTLEdBQUcsaUJBQWUsR0FBRyxhQUFXLEdBQUcsUUFBTSxHQUFHLE9BQUssR0FBRyxhQUFXLEdBQUcsWUFBVSxHQUFHLGNBQVksR0FBRyxNQUFJLEdBQUcsWUFBVSxHQUFHLE1BQUksR0FBRyxJQUFFO0FBQU8sTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxTQUFPLGVBQWUsSUFBRyxLQUFJLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsT0FBTSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFHLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGFBQVksRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBUyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxPQUFNLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQUcsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsZUFBYyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFXLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGFBQVksRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBUyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQVUsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsUUFBTyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFJLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsU0FBUSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFLLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBVSxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxrQkFBaUIsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBYyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxZQUFXLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQVEsRUFBQyxDQUFDO0FBQUUsS0FBRyxZQUFVLEVBQUMsSUFBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEVBQUM7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsZ0JBQWU7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssVUFBUSxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxLQUFJLEdBQUUsSUFBRyxFQUFDLEdBQUU7QUFBQyxVQUFJLElBQUUsSUFBRSxHQUFHLFNBQVMsTUFBSSxLQUFLLFNBQVEsSUFBRSxLQUFLLFFBQU0sU0FBTyxLQUFHLE1BQU0sS0FBSyxHQUFHO0FBQUcsYUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQUk7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFBTyxVQUFHLEtBQUssSUFBSSxNQUFLLE1BQUksR0FBRyxLQUFLLEtBQUksR0FBRSxDQUFDO0FBQUUsYUFBTztBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksUUFBTztBQUFDLGFBQU8sS0FBSyxlQUFlLEdBQUcsY0FBWSxLQUFLLElBQUksUUFBTSxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssTUFBSSxHQUFFLEtBQUssTUFBSSxHQUFFLEtBQUssY0FBWTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLEdBQUcsTUFBTSxLQUFLLEdBQUcsTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLGNBQWMsR0FBRSxHQUFFO0FBQUMsVUFBRyxLQUFLLGVBQWUsR0FBRyxRQUFNLENBQUMsRUFBRSxLQUFLLElBQUksR0FBRyxLQUFHLENBQUMsS0FBSyxZQUFZO0FBQU8sYUFBTyxLQUFLLE1BQUksR0FBRyxLQUFLLEtBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxlQUFlLEdBQUcsT0FBSyxDQUFDLElBQUUsRUFBQyxHQUFHLEtBQUssSUFBSSxNQUFLO0FBQUUsYUFBTyxHQUFHLEdBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFNLEdBQUUsR0FBRSxDQUFDO0FBQUUsV0FBSyxLQUFHO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxFQUFDLElBQUcsRUFBQyxHQUFFO0FBQUMsYUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxLQUFLLEtBQUssR0FBRyxNQUFJO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxRQUFNLEdBQUUsS0FBSyxRQUFNLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEVBQUMsSUFBRyxFQUFDLEdBQUU7QUFBQyxhQUFNLEdBQUcsS0FBSyxLQUFLLE1BQUk7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sUUFBUSxLQUFLLFFBQU0sSUFBSSxLQUFLLEtBQUssS0FBRyxFQUFFLE1BQUk7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU07QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEVBQUMsSUFBRyxFQUFDLEdBQUU7QUFBQyxhQUFNLFNBQVMsS0FBSyxLQUFLLE1BQUk7QUFBQSxJQUFDO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEtBQUssTUFBTTtBQUFBLElBQUs7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssT0FBSztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLElBQUksTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLGdCQUFlO0FBQUMsYUFBTSxHQUFHLEtBQUssSUFBSSxLQUFHLE9BQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLGFBQU8sS0FBSyxPQUFLLEdBQUcsS0FBSyxNQUFLLEdBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsYUFBTyxLQUFLLGdCQUFnQixHQUFHLGNBQVksS0FBSyxLQUFLLFFBQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxJQUFFLENBQUMsR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU07QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLENBQUMsR0FBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxVQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsTUFBSyxJQUFFLEVBQUU7QUFBTyxhQUFNLEtBQUk7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDLEVBQUUsY0FBYztBQUFFLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxHQUFFLE9BQU8sR0FBRSxHQUFFLEdBQUcsQ0FBQztBQUFBLGlCQUFVLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxZQUFPLEdBQUUsT0FBTyxHQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFLFNBQU8sSUFBRSxPQUFLO0FBQUEsSUFBTTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsTUFBSyxJQUFFLEVBQUU7QUFBTyxhQUFNLEtBQUk7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLGNBQWMsR0FBRSxDQUFDLEVBQUU7QUFBUyxXQUFHLEdBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxPQUFPLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUUsU0FBTyxJQUFFLE9BQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLENBQUMsR0FBRSxNQUFJLEdBQUcsR0FBRSxFQUFFLEtBQUssR0FBRSxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sTUFBSSxFQUFFLEtBQUcsTUFBTSxPQUFPLENBQUMsSUFBRSxNQUFJLEVBQUU7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFPLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLFlBQU0sQ0FBQztBQUFFLFdBQUssWUFBVTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxNQUFNLEtBQUssU0FBUyxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUUsVUFBRyxLQUFLLEtBQUssTUFBRyxVQUFRLEtBQUssS0FBSyxPQUFPLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxZQUFNLGNBQWM7QUFBRSxVQUFJLElBQUUsS0FBSztBQUFVLFVBQUcsTUFBSSxLQUFHLFFBQU8sS0FBSztBQUFNLFVBQUksSUFBRSxLQUFLO0FBQUssVUFBRyxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUUsY0FBYztBQUFFLFlBQUUsS0FBSyxPQUFLLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBSSxHQUFHLENBQUMsSUFBRTtBQUFBLE1BQUM7QUFBQyxVQUFHLEdBQUU7QUFBQyxZQUFHLE1BQUksTUFBRyxRQUFPLGFBQWEsS0FBRyxJQUFFLEVBQUU7QUFBTSxZQUFHLEtBQUssTUFBTSxPQUFPLFFBQU87QUFBSyxlQUFPLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRSxhQUFhLEtBQUcsQ0FBQyxDQUFDLElBQUUsRUFBRSxLQUFLO0FBQUEsTUFBQztBQUFDLFVBQUcsTUFBSSxTQUFJLENBQUMsS0FBSyxNQUFNLE9BQU87QUFBTyxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFJO0FBQUUsVUFBRyxLQUFLLFFBQU0sSUFBRSxLQUFLLFVBQVEsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFNLGNBQWMsR0FBRSxDQUFDLEtBQUcsS0FBSyxNQUFNO0FBQU8sYUFBTyxLQUFLLFlBQVUsR0FBRyxLQUFLLFdBQVUsR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsTUFBTTtBQUFNLFVBQUcsR0FBRyxHQUFFLEtBQUssU0FBUyxHQUFFLEtBQUssS0FBSyxJQUFHLEdBQUUsS0FBSyxLQUFLLEtBQUs7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFLLE1BQU0sV0FBVyxHQUFFO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQU0sTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFlBQVU7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFNLE9BQU8sS0FBSyxTQUFTLE1BQUksTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUcsQ0FBQyxNQUFNLGNBQWMsR0FBRSxDQUFDLEVBQUU7QUFBTyxhQUFPLEtBQUssWUFBVSxHQUFHLEtBQUssV0FBVSxHQUFFLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksUUFBTztBQUFDLGFBQU8sR0FBRyxNQUFNLE9BQU0sS0FBSyxVQUFVLEtBQUs7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFVBQVEsR0FBRSxLQUFLLE9BQUssR0FBRSxLQUFLLE9BQUssR0FBRSxLQUFLLEtBQUc7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFJLEdBQUcsU0FBUyxNQUFJLEtBQUssU0FBUSxFQUFDLE1BQUssR0FBRSxNQUFLLEdBQUUsSUFBRyxFQUFDLElBQUU7QUFBSyxhQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQU0sTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsR0FBRyxNQUFNLE9BQU0sS0FBSyxJQUFJO0FBQUUsYUFBTyxHQUFHLEdBQUUsS0FBSyxFQUFFO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxPQUFLLEdBQUUsS0FBSyxVQUFRLEdBQUUsS0FBSyxPQUFLLEdBQUUsS0FBSyxXQUFTO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTSxPQUFPLEtBQUssT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssUUFBUSxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFHLENBQUMsTUFBTSxjQUFjLEdBQUUsQ0FBQyxFQUFFO0FBQU8sYUFBTyxLQUFLLFdBQVMsR0FBRyxLQUFLLFVBQVMsR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEdBQUcsTUFBTSxPQUFNLEtBQUssU0FBUyxLQUFLO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssT0FBSyxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssUUFBTTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLFFBQU0sV0FBUyxFQUFFLFlBQVksS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLE1BQUksTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQU8sTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sWUFBVSxNQUFNLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxPQUFLO0FBQUEsRUFBUyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsVUFBSSxJQUFFLFFBQU0sTUFBTSxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssTUFBTSxNQUFHLEtBQUssTUFBTSxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssUUFBUSxNQUFHLEtBQUssUUFBUSxPQUFPLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxVQUFJLEdBQUU7QUFBRSxhQUFPLE1BQU0sY0FBYyxJQUFHLElBQUUsS0FBSyxXQUFTLFFBQU0sTUFBSSxVQUFRLEVBQUUsY0FBYyxJQUFHLElBQUUsS0FBSyxhQUFXLFFBQU0sTUFBSSxVQUFRLEVBQUUsY0FBYyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFJLEdBQUU7QUFBRSxhQUFPLE1BQU0sY0FBYyxHQUFFLENBQUMsSUFBRyxJQUFFLEtBQUssV0FBUyxRQUFNLE1BQUksVUFBUSxFQUFFLGNBQWMsR0FBRSxDQUFDLElBQUcsSUFBRSxLQUFLLGFBQVcsUUFBTSxNQUFJLFVBQVEsRUFBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsVUFBSSxJQUFFLE1BQU07QUFBTSxVQUFHLEtBQUssTUFBTSxJQUFHLEdBQUUsS0FBSyxNQUFNLEtBQUs7QUFBRSxVQUFHLEtBQUssUUFBUSxJQUFHLEdBQUUsS0FBSyxRQUFRLEtBQUs7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxRQUFNO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTSxTQUFTLEtBQUssS0FBSyxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFRLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFNLFlBQVUsTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQVUsTUFBTSxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxXQUFLLFVBQVEsQ0FBQyxHQUFFLEtBQUssZUFBYSxDQUFDLEdBQUUsS0FBSyxhQUFXLENBQUMsR0FBRSxLQUFLLE9BQUssRUFBQyxHQUFHLEdBQUUsSUFBRyxFQUFFLFFBQU07QUFBQSxJQUMxMHNDLEdBQUUsR0FBRSxLQUFLLFlBQVUsR0FBRSxLQUFLLFNBQU8sSUFBSSxHQUFHLE1BQU0sRUFBQyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUssU0FBTyxDQUFDLElBQUksSUFBRTtBQUFBLElBQUM7QUFBQSxJQUFDLFdBQVU7QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLEtBQUssSUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLEtBQUssR0FBRTtBQUFDLGFBQU8sS0FBSyxPQUFPLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsR0FBRTtBQUFDLGFBQU8sS0FBSyxVQUFVLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssVUFBVSxNQUFNLEdBQUUsQ0FBQztBQUFFLGNBQU8sS0FBSyxRQUFRLEVBQUUsTUFBTSxNQUFJLEtBQUssUUFBUSxFQUFFLE1BQU0sSUFBRSxvQkFBSSxRQUFNLElBQUksQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxTQUFTLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsR0FBRTtBQUFDLGFBQU8sS0FBSyxVQUFVLFVBQVUsR0FBRSxLQUFLLE9BQU87QUFBQSxJQUFDO0FBQUEsSUFBQyxZQUFXO0FBQUMsYUFBTyxLQUFLLFVBQVUsVUFBVSxLQUFLLE9BQU87QUFBQSxJQUFDO0FBQUEsSUFBQyxLQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxPQUFPLE9BQU8sQ0FBQztBQUFFLFVBQUcsTUFBSSxVQUFRLEVBQUUsTUFBSyxXQUFXLEVBQUUsR0FBRyxJQUFFO0FBQUUsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsT0FBTSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLEdBQUUsR0FBRyxVQUFVLEtBQUksQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsS0FBSyxHQUFFO0FBQUMsVUFBRyxPQUFPLEtBQUcsV0FBVyxHQUFFO0FBQUEsZUFBVSxNQUFJLEdBQUcsSUFBSSxNQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFJO0FBQUEsSUFBQyxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsQ0FBQyxHQUFHO0FBQUUsZUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxZQUFHLEVBQUUsU0FBTyxFQUFFLEdBQUUsS0FBSyxHQUFHO0FBQUUsWUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLE1BQUksS0FBRyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssR0FBRyxJQUFHLEdBQUUsR0FBRyxZQUFZLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUUsS0FBSyxHQUFHLEdBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLE1BQUssS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU07QUFBQSxlQUFVLEVBQUUsTUFBSyxLQUFLLENBQUMsRUFBRSxNQUFNO0FBQUEsZUFBVSxFQUFFLE9BQU0sTUFBTSwwQ0FBMEM7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU07QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLElBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxRQUFPO0FBQUMsYUFBTyxLQUFLLGNBQWMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsS0FBSyxHQUFFLEdBQUU7QUFBQyxVQUFHLEtBQUssV0FBVyxDQUFDLEdBQUUsRUFBRSxNQUFLLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssTUFBSSxHQUFHLFNBQVMsTUFBSSxHQUFHLFNBQVMsS0FBSTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDO0FBQUUsYUFBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUcsU0FBUyxPQUFNO0FBQUMsVUFBSSxJQUFFLEtBQUssT0FBTyxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssS0FBSyxLQUFJO0FBQUMsWUFBSSxJQUFFLGFBQWEsR0FBRyxPQUFLLElBQUUsS0FBSyxJQUFJLFFBQU8sQ0FBQztBQUFFLGVBQU8sS0FBSyxTQUFTLE1BQUssR0FBRSxHQUFHLElBQUksQ0FBQyxXQUFVLENBQUMsTUFBSTtBQUFDLGVBQUssSUFBSSxHQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUUsRUFBRSxDQUFDO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sS0FBSyxLQUFLLElBQUksR0FBRyxNQUFLLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssTUFBSSxHQUFHLFNBQVMsTUFBSSxHQUFHLFNBQVMsT0FBTTtBQUFDLFVBQUcsS0FBSyxLQUFLLGNBQWMsUUFBTyxLQUFLLE1BQU0sR0FBRSxHQUFHLGdCQUFnQixDQUFDLEtBQUksQ0FBQztBQUFFLFVBQUksSUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDO0FBQUUsYUFBTyxLQUFLLEtBQUssSUFBSSxHQUFHLE1BQUssR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsU0FBUTtBQUFDLGFBQU8sS0FBSyxjQUFjLEVBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxJQUFJO0FBQUcsVUFBRyxLQUFLLFdBQVcsQ0FBQyxHQUFFLEtBQUssS0FBSyxDQUFDLEdBQUUsRUFBRSxNQUFNLFdBQVMsRUFBRSxPQUFNLE1BQU0sd0NBQXdDO0FBQUUsYUFBTyxLQUFLLGNBQWMsRUFBRTtBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFHLENBQUMsS0FBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLDhDQUE4QztBQUFFLFVBQUksSUFBRSxJQUFJO0FBQUcsVUFBRyxLQUFLLFdBQVcsQ0FBQyxHQUFFLEtBQUssS0FBSyxDQUFDLEdBQUUsR0FBRTtBQUFDLFlBQUksSUFBRSxLQUFLLEtBQUssR0FBRztBQUFFLGFBQUssWUFBVSxFQUFFLFFBQU0sSUFBSSxHQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsVUFBRyxFQUFFLE1BQUssWUFBVSxFQUFFLFVBQVEsSUFBSSxNQUFHLEtBQUssS0FBSyxDQUFDO0FBQUUsYUFBTyxLQUFLLGNBQWMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFO0FBQUMsVUFBRyxLQUFLLGFBQWEsS0FBSyxLQUFLLE9BQU8sTUFBTSxHQUFFLEVBQUUsTUFBSyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsU0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssYUFBYSxJQUFJO0FBQUUsVUFBRyxNQUFJLE9BQU8sT0FBTSxNQUFNLHNDQUFzQztBQUFFLFVBQUksSUFBRSxLQUFLLE9BQU8sU0FBTztBQUFFLFVBQUcsSUFBRSxLQUFHLE1BQUksVUFBUSxNQUFJLEVBQUUsT0FBTSxNQUFNLG1DQUFtQyxDQUFDLE9BQU8sQ0FBQyxXQUFXO0FBQUUsYUFBTyxLQUFLLE9BQU8sU0FBTyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsS0FBSyxHQUFFLElBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRTtBQUFDLFVBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLEtBQUssQ0FBQyxFQUFFLFFBQVE7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsVUFBUztBQUFDLGFBQU8sS0FBSyxjQUFjLEVBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxTQUFTLElBQUUsR0FBRTtBQUFDLGFBQU0sTUFBSyxFQUFFLE1BQUssTUFBTSxjQUFjLEdBQUUsS0FBSyxNQUFNLGNBQWMsS0FBSyxNQUFNLE9BQU0sS0FBSyxVQUFVO0FBQUEsSUFBQztBQUFBLElBQUMsVUFBVSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsTUFBTSxLQUFLLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLFdBQVcsR0FBRTtBQUFDLFdBQUssVUFBVSxNQUFNLEtBQUssQ0FBQyxHQUFFLEtBQUssT0FBTyxLQUFLLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLO0FBQVUsVUFBRyxhQUFhLEtBQUcsS0FBRyxhQUFhLEVBQUUsUUFBTyxLQUFLLE9BQU8sSUFBSSxHQUFFO0FBQUssWUFBTSxNQUFNLDBCQUEwQixJQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUcsRUFBRSxJQUFJLEdBQUc7QUFBQSxJQUFDO0FBQUEsSUFBQyxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFVLFVBQUcsRUFBRSxhQUFhLElBQUksT0FBTSxNQUFNLDhCQUE4QjtBQUFFLGFBQU8sS0FBSyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsYUFBTyxLQUFLLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksWUFBVztBQUFDLFVBQUksSUFBRSxLQUFLO0FBQU8sYUFBTyxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBSSxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFPLFFBQUUsRUFBRSxTQUFPLENBQUMsSUFBRTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGFBQVEsS0FBSyxFQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxLQUFHLE1BQUksRUFBRSxDQUFDLEtBQUc7QUFBRyxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLGFBQWEsR0FBRyxjQUFZLEdBQUcsR0FBRSxFQUFFLEtBQUssSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLGFBQWEsR0FBRyxLQUFLLFFBQU8sRUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQU87QUFBRSxXQUFPLElBQUksR0FBRyxNQUFNLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBRyxhQUFhLEdBQUcsS0FBSyxLQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsYUFBYSxHQUFHLE1BQU0sR0FBRSxLQUFLLEdBQUcsRUFBRSxNQUFNO0FBQUEsVUFBTyxHQUFFLEtBQUssQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxhQUFTLEVBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLEVBQUUsR0FBRztBQUFFLFVBQUcsTUFBSSxVQUFRLEVBQUUsRUFBRSxHQUFHLE1BQUksRUFBRSxRQUFPO0FBQUUsYUFBTyxPQUFPLEVBQUUsRUFBRSxHQUFHLEdBQUU7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxhQUFPLGFBQWEsR0FBRyxTQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsTUFBSSxhQUFhLEdBQUcsUUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFJLEtBQUcsRUFBRSxFQUFFLEdBQUcsTUFBSSxNQUFNO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsYUFBUSxLQUFLLEVBQUUsR0FBRSxDQUFDLEtBQUcsRUFBRSxDQUFDLEtBQUcsTUFBSSxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sT0FBTyxLQUFHLGFBQVcsT0FBTyxLQUFHLFlBQVUsTUFBSSxPQUFLLENBQUMsSUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFFO0FBQUMsS0FBRyxNQUFJO0FBQUcsTUFBSSxLQUFHLEdBQUcsR0FBRyxVQUFVLEdBQUc7QUFBRSxXQUFTLE1BQU0sR0FBRTtBQUFDLFdBQU8sRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUFDO0FBQUMsS0FBRyxNQUFJO0FBQUcsTUFBSSxLQUFHLEdBQUcsR0FBRyxVQUFVLEVBQUU7QUFBRSxXQUFTLE1BQU0sR0FBRTtBQUFDLFdBQU8sRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUFDO0FBQUMsS0FBRyxLQUFHO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFNLENBQUMsR0FBRSxNQUFJLE1BQUksR0FBRyxNQUFJLElBQUUsTUFBSSxHQUFHLE1BQUksSUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLGFBQWEsR0FBRyxPQUFLLElBQUUsR0FBRyxLQUFLLENBQUM7QUFBQSxFQUFHO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsa0JBQWdCLEdBQUcsZUFBYSxHQUFHLE9BQUssR0FBRyxVQUFRLEdBQUcsZUFBYSxHQUFHLHVCQUFxQixHQUFHLGlCQUFlLEdBQUcsV0FBUyxHQUFHLHNCQUFvQixHQUFHLG9CQUFrQixHQUFHLGlCQUFlLEdBQUcsbUJBQWlCLEdBQUcsaUJBQWUsR0FBRyx1QkFBcUIsR0FBRyxpQkFBZSxHQUFHLG9CQUFrQixHQUFHLG9CQUFrQixHQUFHLFNBQU87QUFBTyxNQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUM7QUFBRSxhQUFRLEtBQUssRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFHLFdBQU87QUFBQSxFQUFDO0FBQUMsS0FBRyxTQUFPO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsT0FBTyxLQUFHLFVBQVUsUUFBTztBQUFFLFFBQUcsT0FBTyxLQUFLLENBQUMsRUFBRSxXQUFTLEVBQUUsUUFBTTtBQUFHLFdBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUcsR0FBRSxFQUFFLEtBQUssTUFBTSxHQUFHO0FBQUEsRUFBQztBQUFDLEtBQUcsb0JBQWtCO0FBQUcsV0FBUyxHQUFHLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBQyxRQUFHLEVBQUMsTUFBSyxHQUFFLE1BQUssRUFBQyxJQUFFO0FBQUUsUUFBRyxDQUFDLEVBQUUsYUFBYTtBQUFPLFFBQUcsT0FBTyxNQUFJLFVBQVU7QUFBTyxRQUFJLElBQUUsRUFBRSxNQUFNO0FBQVMsYUFBUSxLQUFLLEVBQUUsS0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUcsR0FBRSxxQkFBcUIsQ0FBQyxHQUFHO0FBQUEsRUFBQztBQUFDLEtBQUcsb0JBQWtCO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsT0FBTyxLQUFHLFVBQVUsUUFBTSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsS0FBRyxFQUFFLENBQUMsRUFBRSxRQUFNO0FBQUcsV0FBTTtBQUFBLEVBQUU7QUFBQyxLQUFHLGlCQUFlO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsT0FBTyxLQUFHLFVBQVUsUUFBTSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsS0FBRyxNQUFJLFVBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFNO0FBQUcsV0FBTTtBQUFBLEVBQUU7QUFBQyxLQUFHLHVCQUFxQjtBQUFHLFdBQVMsR0FBRyxFQUFDLGNBQWEsR0FB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QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLGFBQVksQ0FBQyxHQUFFLEdBQUUsTUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBWSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksT0FBRyxPQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUksTUFBSSxPQUFHLE9BQUcsS0FBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLGNBQWEsQ0FBQyxHQUFFLE1BQUksRUFBRSxJQUFJLFNBQVEsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLE1BQUksS0FBRyxRQUFPLEVBQUUsSUFBSSxTQUFRLElBQUU7QUFBRSxRQUFJLElBQUUsRUFBRSxJQUFJLFNBQVEsR0FBRyxLQUFLO0FBQUUsUUFBRyxNQUFJLE9BQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsS0FBRyx1QkFBcUI7QUFBRyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFJLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFHLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGVBQWE7QUFBRyxNQUFJLEtBQUcsQ0FBQztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsV0FBVyxRQUFPLEVBQUMsS0FBSSxHQUFFLE1BQUssR0FBRyxFQUFFLElBQUksTUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFFLElBQUksR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUcsTUFBSTtBQUFHLEdBQUMsU0FBUyxHQUFFO0FBQUMsTUFBRSxF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VyxHQUFHLFFBQVEsY0FBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWMsR0FBRyxNQUFNLEVBQUUsYUFBYSxJQUFJLENBQUMsRUFBRSxHQUFFLEVBQUUsS0FBSyxRQUFRLEdBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFVLENBQUMsR0FBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsZUFBYTtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFNLE9BQU0sQ0FBQztBQUFFLE1BQUUsR0FBRyxHQUFHLElBQUksR0FBRyxRQUFRLE9BQU8sYUFBWSxNQUFJLEVBQUUsT0FBTyxHQUFHLFFBQVEsU0FBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUUsR0FBRyxJQUFJLEdBQUcsUUFBUSxPQUFPLFNBQVMsQ0FBQyxHQUFHLEdBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLFFBQVEsTUFBTSxJQUFJO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLGNBQWEsR0FBRSxXQUFVLEVBQUMsSUFBRTtBQUFFLFFBQUcsRUFBRSxPQUFPLEdBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxlQUFlLElBQUksQ0FBQyxHQUFHO0FBQUEsUUFBTyxHQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVSxDQUFDLEdBQUUsRUFBRSxPQUFPLEtBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsU0FBUSxJQUFJLEdBQUcsS0FBSyxTQUFTLEdBQUUsWUFBVyxJQUFJLEdBQUcsS0FBSyxZQUFZLEdBQUUsUUFBTyxJQUFJLEdBQUcsS0FBSyxRQUFRLEdBQUUsY0FBYSxJQUFJLEdBQUcsS0FBSyxjQUFjLEdBQUUsU0FBUSxJQUFJLEdBQUcsS0FBSyxTQUFTLEdBQUUsUUFBTyxJQUFJLEdBQUcsS0FBSyxRQUFRLEdBQUUsY0FBYSxJQUFJLEdBQUcsS0FBSyxjQUFjLEVBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsY0FBYSxFQUFDLElBQUUsRUFBRTtBQUFHLFFBQUcsTUFBSSxNQUFHLFFBQU8sR0FBRztBQUFNLFdBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksR0FBRSxJQUFHLEVBQUMsSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxFQUFDLFdBQVUsRUFBQyxHQUFFLEVBQUMsY0FBYSxFQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUUsR0FBRyxjQUFjLEdBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFHO0FBQUUsV0FBTSxDQUFDLEdBQUcsUUFBUSxlQUFjLEdBQUUsR0FBRyxXQUFXLEdBQUcsUUFBUSxjQUFhLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsRUFBQyxTQUFRLEdBQUUsSUFBRyxFQUFDLGVBQWMsRUFBQyxFQUFDLEdBQUUsRUFBQyxZQUFXLEdBQUUsY0FBYSxFQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRSxJQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUFHLFFBQUcsRUFBRSxLQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRSxHQUFHLGNBQWMsR0FBRSxHQUFHLEtBQUssR0FBRyxDQUFDO0FBQUcsV0FBTSxDQUFDLEdBQUcsWUFBVyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEVBQUMsUUFBTyxHQUFFLFNBQVEsRUFBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsU0FBUSxHQUFFLE1BQUssR0FBRSxhQUFZLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxFQUFDLE1BQUssR0FBRSxjQUFhLEdBQUUsY0FBYSxHQUFFLFlBQVcsRUFBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRyxRQUFPLE9BQU8sS0FBRyxhQUFXLEVBQUUsQ0FBQyxJQUFFLEtBQUcsR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLFNBQVMsR0FBRSxLQUFLLENBQUMsR0FBRyxTQUFRLE9BQU8sS0FBRyxhQUFXLEVBQUUsQ0FBQyxJQUFFLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxRQUFRLEdBQUUsS0FBSyxDQUFDLEdBQUcsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFHLGNBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUcsUUFBUSxNQUFLLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxHQUFFLEtBQUssQ0FBQyxHQUFHLGNBQWEsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLG9CQUFrQixHQUFHLHVCQUFxQjtBQUFPLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsMEJBQXlCO0FBQUUsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxjQUFhLEVBQUMsSUFBRTtBQUFFLFFBQUcsTUFBSSxNQUFHLElBQUcsR0FBRSxLQUFFO0FBQUEsYUFBVSxPQUFPLEtBQUcsWUFBVSxFQUFFLFdBQVMsS0FBRyxHQUFFLE9BQU8sR0FBRyxRQUFRLElBQUk7QUFBQSxRQUFPLEdBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFVLElBQUksR0FBRSxFQUFFLE9BQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLHVCQUFxQjtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsUUFBRyxNQUFJLE1BQUcsR0FBRSxJQUFJLEdBQUUsS0FBRSxHQUFFLEdBQUcsQ0FBQztBQUFBLFFBQU8sR0FBRSxJQUFJLEdBQUUsSUFBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLG9CQUFrQjtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLE1BQUssRUFBQyxJQUFFLEdBQUUsSUFBRSxFQUFDLEtBQUksR0FBRSxTQUFRLGdCQUFlLE1BQUssR0FBRSxRQUFPLE9BQUcsWUFBVyxPQUFHLGFBQVksT0FBRyxRQUFPLENBQUMsR0FBRSxJQUFHLEVBQUM7QUFBRSxLQUFDLEdBQUUsR0FBRyxhQUFhLEdBQUUsSUFBRyxRQUFPLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsV0FBUyxHQUFHLGFBQVc7QUFBTyxNQUFJLEtBQUcsQ0FBQyxVQUFTLFVBQVMsV0FBVSxXQUFVLFFBQU8sVUFBUyxPQUFPLEdBQUUsS0FBRyxJQUFJLElBQUksRUFBRTtBQUFFLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxPQUFPLEtBQUcsWUFBVSxHQUFHLElBQUksQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGFBQVc7QUFBRyxXQUFTLEtBQUk7QUFBQyxRQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxVQUFTLE9BQU0sQ0FBQyxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssVUFBUyxPQUFNLENBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFNBQVEsT0FBTSxDQUFDLEVBQUMsR0FBRSxRQUFPLEVB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QUksSUFBRyxFQUFDLFFBQU8sRUFBQyxJQUFFLEVBQUUsTUFBSyxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsV0FBTyxFQUFFLFdBQVcsV0FBVSxFQUFDLEtBQUksRUFBRSxTQUFTLEdBQUUsS0FBSSxHQUFFLE1BQUssR0FBRyxJQUFJLEVBQUUsU0FBTyxlQUFhLE1BQUksR0FBRSxHQUFHLFNBQVMsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxhQUFXO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLE1BQUssR0FBRSxTQUFRLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxPQUFPO0FBQUUsUUFBRyxFQUFFLFdBQVU7QUFBQyxVQUFJLElBQUUsRUFBRSxJQUFJLFNBQVEsSUFBRTtBQUFFLGFBQU8sRUFBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLEtBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFDLFdBQU8sRUFBRSxJQUFJLEdBQUUsSUFBRSxHQUFFLEVBQUUsTUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFFO0FBQUUsYUFBUyxFQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFNLE9BQU0sR0FBRyxJQUFJLENBQUMsU0FBUztBQUFFLFFBQUUsU0FBUyxLQUFJLEdBQUUsR0FBRSxDQUFDLE1BQUk7QUFBQyxVQUFFLFVBQVUsRUFBQyxTQUFRLEdBQUUsVUFBUyxHQUFFLGNBQWEsR0FBRyxLQUFLLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFJLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGdCQUFjO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxTQUFRLEdBQUUsSUFBRyxFQUFDLElBQUU7QUFBRSxRQUFHLENBQUMsTUFBTSxR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LFlBQVksUUFBTTtBQUFHLFVBQUksR0FBRSxHQUFFO0FBQUUsVUFBRyxNQUFNLFFBQVEsQ0FBQyxHQUFFO0FBQUMsWUFBRyxJQUFFLEVBQUUsUUFBTyxLQUFHLEVBQUUsT0FBTyxRQUFNO0FBQUcsYUFBSSxJQUFFLEdBQUUsUUFBTSxJQUFHLEtBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBTTtBQUFHLGVBQU07QUFBQSxNQUFFO0FBQUMsVUFBRyxFQUFFLGdCQUFjLE9BQU8sUUFBTyxFQUFFLFdBQVMsRUFBRSxVQUFRLEVBQUUsVUFBUSxFQUFFO0FBQU0sVUFBRyxFQUFFLFlBQVUsT0FBTyxVQUFVLFFBQVEsUUFBTyxFQUFFLFFBQVEsTUFBSSxFQUFFLFFBQVE7QUFBRSxVQUFHLEVBQUUsYUFBVyxPQUFPLFVBQVUsU0FBUyxRQUFPLEVBQUUsU0FBUyxNQUFJLEVBQUUsU0FBUztBQUFFLFVBQUcsSUFBRSxPQUFPLEtBQUssQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFPLE1BQUksT0FBTyxLQUFLLENBQUMsRUFBRSxPQUFPLFFBQU07QUFBRyxXQUFJLElBQUUsR0FBRSxRQUFNLElBQUcsS0FBRyxDQUFDLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQU07QUFBRyxXQUFJLElBQUUsR0FBRSxRQUFNLEtBQUc7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsWUFBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFNO0FBQUEsTUFBRTtBQUFDLGFBQU07QUFBQSxJQUFFO0FBQUMsV0FBTyxNQUFJLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsQ0FBQyxLQUFJLE9BQUs7QUFBQyxNQUFJLEtBQUcsR0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLE9BQU8sS0FBRyxXQUFXLEtBQUUsR0FBRSxJQUFFLENBQUM7QUFB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RyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRTtBQUFDLFdBQUcsQ0FBQztBQUFFO0FBQUEsTUFBTTtBQUFBLElBQUM7QUFBQyxPQUFHLEdBQUUsT0FBSyxHQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLHVCQUFxQjtBQUFHLFdBQVMsR0FBRyxFQUFDLEtBQUksR0FBRSxjQUFhLEdBQUUsUUFBTyxHQUFFLFdBQVUsR0FBRSxNQUFLLEVBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssR0FBRSxFQUFFLElBQUksRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLFFBQVEsTUFBTSxJQUFHLEVBQUUsUUFBTyxNQUFJO0FBQUMsUUFBRSxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsR0FBRSxDQUFDLENBQUMsRUFBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBQSxRQUFPLEdBQUUsS0FBSyxHQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUcsRUFBRSxRQUFPLE1BQUksRUFBRSxLQUFLLEdBQUcsR0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxZQUFZLFFBQVEsRUFBRSxRQUFRLFVBQVUsS0FBSyxFQUFFLFFBQVEsa0JBQWtCLEtBQUssRUFBRSxRQUFRLFFBQVEsSUFBSSxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUUs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QUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxNQUFNLFVBQVMsTUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksR0FBRSxNQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUFBLFNBQU07QUFBQyxVQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFVLEVBQUUsUUFBUSxPQUFPLEdBQUUsRUFBRSxZQUFZLElBQUcsQ0FBQztBQUFFLFFBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLE1BQU0sUUFBUTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEVBQUMsS0FBSSxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsT0FBTSxFQUFDLEdBQUU7QUFBQyxRQUFHLGFBQWEsRUFBRSxLQUFLLEdBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFTLENBQUM7QUFBRSxRQUFHLGFBQWEsRUFBRSxLQUFLLEdBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFTLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsV0FBVSxHQUFFLE1BQUssR0FBRSxNQUFLLEVBQUMsSUFBRSxHQUFFLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBRSxRQUFHLEVBQUUsU0FBTyxFQUFFLHlCQUF1QixFQUFFLEdBQUUsR0FBRyxzQkFBc0IsR0FBRSxDQUFDLElBQUc7QUFBQyxRQUFFLE1BQU0sTUFBSSxHQUFHLEdBQUUsUUFBTyxFQUFFLElBQUksS0FBSyxVQUFVLENBQUM7QUFBRTtBQUFBLElBQU07QUFBQyxRQUFHLENBQUMsRUFBRSxJQUFJLElBQUcsR0FBRSxDQUFDO0FBQUUsTUFBRSxNQUFNLE1BQUk7QUFBQyxlQUFRLEtBQUssRUFBRSxNQUFNLEdBQUUsQ0FBQztBQUFFLFFBQUUsRUFBRSxJQUFJO0FBQUEsSUFBQyxDQUFDO0FBQUUsYUFB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VUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQUUsVUFBRyxVQUFTLElBQUUsRUFBRSxjQUFZLEVBQUUsV0FBUyxNQUFHLE1BQUssWUFBVSxFQUFFLElBQUksTUFBTSxTQUFRLEVBQUUsUUFBUSxNQUFNO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQUssWUFBWSxHQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsV0FBVyxHQUFFLEdBQUUsR0FBRTtBQUFDLFVBQUcsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRTtBQUFBLFVBQU8sTUFBSyxNQUFNO0FBQUUsVUFBRyxHQUFFO0FBQUMsWUFBRyxLQUFLLElBQUksS0FBSyxHQUFFLEVBQUUsR0FBRSxLQUFLLFVBQVUsTUFBSyxJQUFJLE1BQU07QUFBQSxNQUFDLFdBQVMsS0FBSyxVQUFVLE1BQUssSUFBSSxNQUFNO0FBQUEsVUFBTyxNQUFLLElBQUksS0FBSztBQUFBLElBQUM7QUFBQSxJQUFDLEtBQUssR0FBRSxHQUFFO0FBQUMsV0FBSyxZQUFZLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxRQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxLQUFLLEdBQUU7QUFBQyxVQUFHLE1BQUksUUFBTztBQUFDLFlBQUcsS0FBSyxNQUFNLEdBQUUsQ0FBQyxLQUFLLFVBQVUsTUFBSyxJQUFJLEdBQUcsS0FBRTtBQUFFO0FBQUEsTUFBTTtBQUFDLFVBQUcsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFFLEtBQUssTUFBTSxHQUFFLEtBQUssVUFBVSxNQUFLLElBQUksTUFBTTtBQUFBLFVBQU8sTUFBSyxJQUFJLEtBQUs7QUFBQSxJQUFDO0FBQUEsSUFBQyxVQUFVLEdBQUU7QUFBQyxVQUFHLENBQUMsS0FBSyxNQUFNLFFBQU8sS0FBSyxLQUFLLENBQUM7QUFBRSxVQUFHLEVBQUMsWUFBVyxFQUFDLElBQUU7QUFBSyxXQUFLLEtBQUssRUFBRSxJQUFJLENBQUMs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QUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsVUFBSTtBQUFFLFdBQUssT0FBSyxDQUFDLEdBQUUsS0FBSyxpQkFBZSxDQUFDO0FBQUUsVUFBSTtBQUFFLFVBQUcsT0FBTyxFQUFFLFVBQVEsU0FBUyxLQUFFLEVBQUU7QUFBTyxXQUFLLFNBQU8sRUFBRSxRQUFPLEtBQUssV0FBUyxFQUFFLFVBQVMsS0FBSyxPQUFLLEVBQUUsUUFBTSxNQUFLLEtBQUssVUFBUSxJQUFFLEVBQUUsWUFBVSxRQUFNLE1BQUksU0FBTyxLQUFHLEdBQUUsR0FBRyxhQUFhLE1BQUksUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLEVBQUUsWUFBVSxLQUFLLENBQUMsR0FBRSxLQUFLLGFBQVcsRUFBRSxZQUFXLEtBQUssWUFBVSxFQUFFLFdBQVUsS0FBSyxPQUFLLEVBQUUsTUFBSyxLQUFLLFNBQU8sTUFBSSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsUUFBTyxLQUFLLE9BQUssQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxZQUFVO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFJLElBQUUsR0FBRyxLQUFLLE1BQUssQ0FBQztBQUFFLFFBQUcsRUFBRSxRQUFPO0FBQUUsUUFBSSxLQUFHLEdBQUUsR0FBRyxhQUFhLEtBQUssS0FBSyxhQUFZLEVBQUUsS0FBSyxNQUFNLEdBQUUsRUFBQyxLQUFJLEdBQUUsT0FBTSxFQUFDLElBQUUsS0FBSyxLQUFLLE1BQUssRUFBQyxlQUFjLEVBQUMsSUFBRSxLQUFLLE1BQUssSUFBRSxJQUFJLEdBQUcsUUFBUSxLQUFLLE9BQU0sRUFBQyxLQUFJLEdBQUUsT0FBTSxHQUFFLGVBQWMsRUFBQyxDQUFDLEdBQUU7QUFBRSxRQUFHLEVBQUUsT0FBTyxLQUFFLEVBQUUsV0FBVyxTQUFRLEVBQUMsS0FBSSxHQUFHLFNBQVEsTUFBSyxHQUFHLHdEQUF1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LEtBQUcsSUFBRSxFQUFFLGVBQWEsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLENBQUMsR0FBRSxFQUFDLFVBQVMsRUFBQyxJQUFFLEtBQUs7QUFBSyxVQUFHLEVBQUUsS0FBRSxJQUFJLEdBQUcsRUFBQyxRQUFPLEdBQUUsVUFBUyxHQUFFLE1BQUssR0FBRSxRQUFPLEVBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLE1BQUksT0FBTztBQUFPLFdBQU8sRUFBRSxLQUFLLENBQUMsSUFBRSxHQUFHLEtBQUssTUFBSyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsYUFBVztBQUFHLFdBQVMsR0FBRyxHQUFFO0FBQUMsU0FBSSxHQUFFLEdBQUcsV0FBVyxFQUFFLFFBQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxRQUFPLEVBQUU7QUFBTyxXQUFPLEVBQUUsV0FBUyxJQUFFLEdBQUcsS0FBSyxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxhQUFRLEtBQUssS0FBSyxjQUFjLEtBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxRQUFPO0FBQUEsRUFBQztBQUFDLEtBQUcscUJBQW1CO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxXQUFTLEVBQUUsVUFBUSxFQUFFLFNBQU8sRUFBRSxRQUFNLEVBQUUsV0FBUyxFQUFFO0FBQUEsRUFBTTtBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJO0FBQUUsV0FBTSxRQUFPLElBQUUsS0FBSyxLQUFLLENBQUMsTUFBSSxTQUFTLEtBQUU7QUFBRSxXQUFPLEtBQUcsS0FBSyxRQUFRLENBQUMsS0FBRyxHQUFHLEtBQUssTUFBSyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLEtBQUssWUFBWSxNQUFNLENBQUMsR0FBRSxLQUFHLEdBQUUsR0FBRyxjQUFjLEtBQUssS0FBSyxhQUFZLENBQUMsR0FBRSxLQUFHLEdBQUUsR0FBRyxhQUFhLEtB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LFFBQU8sd0JBQXVCLEdBQUUsRUFBQyxRQUFPLGVBQWMsQ0FBQyxFQUFDLEVBQUMsR0FBRSxzQkFBcUIsTUFBRTtBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLEtBQUksT0FBSztBQUFDLE1BQUksS0FBRyxFQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRTtBQUFFLEtBQUcsVUFBUSxFQUFDLEtBQUksR0FBRTtBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLEtBQUksT0FBSztBQUFDLE1BQUcsRUFBQyxLQUFJLEdBQUUsSUFBRSxHQUFHLEdBQUUsS0FBRztBQUEyRixXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsR0FBRyxHQUFFLEdBQUcsSUFBRSxFQUFFLFFBQU0sRUFBQyxNQUFLLEdBQUUsUUFBTyxNQUFFO0FBQUUsUUFBSSxJQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLFFBQU0sRUFBQyxNQUFLLEdBQUcsR0FBRSxHQUFHLEdBQUUsUUFBTyxLQUFFO0FBQUEsUUFBTyxRQUFNLEVBQUMsTUFBSyxHQUFFLFFBQU8sTUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxJQUFFLE9BQUc7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFO0FBQUcsYUFBUSxLQUFLLEdBQUU7QUFBQyxVQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU87QUFBTyxVQUFHLE1BQUksT0FBSyxNQUFJLEtBQUcsS0FBRTtBQUFHLFVBQUcsQ0FBQyxFQUFFLE1BQUc7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFHLEVBQUUsV0FBUyxFQUFFLEtBQUU7QUFBSSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFDLE9BQU0sT0FBRyxTQUFRLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFHLElBQUUsT0FBRyxJQUFFO0FBQUcsYUFBUyxJQUFHO0FBQUMsVUFBRyxFQUFFLFFBQU87QUFBQyxZQUFHLE1BQUksT0FBRztBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxjQUFHLE1BQUksT0FBTyxHQUFFLEtBQUssQ0FBQztBQUFBLGNBQU8sUUFBTyxFQUFFLFFBQU0sTUFBRztBQUFBLFFBQUU7QUFBQyxVQUFFLFNBQU87QUFBQSxNQUFDO0FBQUMsYUFBTTtBQUFBLElBQUU7QUFBQyxhQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFLLE1BQUksSUFBSTtBQUFTLFVBQUcsTUFBSSxLQUFJO0FBQUMsWUFBRyxNQUFJLEtBQUcsS0FBRTtBQUFHLFlBQUcsQ0FBQyxFQUFFLEVBQUU7QUFBTSxZQUFHLEtBQUksRUFBRSxLQUFLLEdBQUcsR0FBRSxJQUFFLEdBQUU7QUFBQyxZQUFFLFFBQU07QUFBRztBQUFBLFFBQUs7QUFBQyxZQUFHLElBQUUsS0FBRyxLQUFHLEVBQUUsSUFBRSxDQUFDLE1BQUksSUFBSSxLQUFFO0FBQUc7QUFBQSxNQUFRLFdBQVMsTUFBSSxLQUFJO0FBQUMsWUFBRyxDQUFDLEVBQUUsRUFBRTtBQUFNLFlBQUU7QUFBQSxNQUFFLE9BQUs7QUFBQyxVQUFFLEtBQUssQ0FBQztBQUFFO0FBQUEsTUFBUTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxLQUFHLEVBQUUsR0FBRSxPQUFLLEVBQUUsS0FBSyxFQUFFO0FBQUEsYUFBVSxFQUFFLEdBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQUEsUUFBTyxHQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsVUFBUSxFQUFFLEtBQUssRUFBRSxHQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBRyxHQUFHLEdBQUUsR0FBRyxJQUFFLEVBQUUsUUFBTSxFQUFDLE1BQUssR0FBRSxRQUFPLE1BQUU7QUFBRSxRQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTTtBQUFDLFVBQUcsRUFBQyxTQUFRLEdBQUUsU0FBUSxFQUFDLElBQUU7QUFBRSxVQUFHLEVBQUUsS0FBSyxNQUFHLE1BQUksRUFBRSxNQUFLLEtBQUcsUUFBTSxFQUFFO0FBQUssYUFBTSxFQUFDLE1BQUssR0FBRSxhQUFZLEdBQUUsUUFBTyxLQUFFO0FBQUEsSUFBQyxNQUFNLFFBQU0sRUFBQyxNQUFLLEdBQUUsUUFBTyxNQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFLE1BQUcsSUFBRSxFQUFFO0FBQU8sYUFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUk7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxNQUFJLE9BQUssR0FBRTtBQUFDLFlBQUcsSUFBRSxLQUFHLEtBQUcsRUFBRSxJQUFFLENBQUMsTUFBSSxLQUFHLElBQUUsTUFBSSxFQUFFLE1BQUcsR0FBRSxJQUFFO0FBQUEsTUFBRSxPQUFLO0FBQUMsWUFBRyxNQUFJLEVBQUUsS0FBRTtBQUFBLFlBQVEsS0FBRTtBQUFHLGFBQUc7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUksS0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFO0FBQUksV0FBTztBQUFBLEVBQUM7QUFBQyxNQUFJ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QUM7QUFBRSxVQUFHLEVBQUUsT0FBSyxRQUFPLEVBQUUsS0FBRSxFQUFFLE1BQU0sR0FBRSxDQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUUsUUFBTSxFQUFFLFNBQU87QUFBeUIsV0FBTztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsVUFBUSxFQUFFLFVBQVEsT0FBTSxJQUFFLEVBQUUsSUFBSSxZQUFZLEdBQUUsSUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQUssQ0FBQyxJQUFHLElBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxFQUFFLEtBQUUsRUFBRSxVQUFVLEdBQUUsQ0FBQztBQUFFLFFBQUksSUFBRSxHQUFFLElBQUUsRUFBRTtBQUFJLFdBQU8sRUFBRSxPQUFLLEdBQUcsS0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUcsRUFBRSxhQUFXLE1BQUc7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLFFBQUcsRUFBRSxPQUFLLEVBQUUsS0FBSSxFQUFFLE1BQUksUUFBTyxDQUFDLEVBQUUsYUFBVyxDQUFDLEVBQUUsUUFBTSxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxHQUFFLFFBQU0sRUFBRSxTQUFPO0FBQXFCLFdBQU87QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFJLElBQUU7QUFBRSxXQUFPLEVBQUUsT0FBSyxFQUFFLFFBQU0sSUFBSSxZQUFZLEdBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsUUFBTyxRQUFPLFlBQVcsTUFBRyxPQUFNLElBQUcsV0FBVSxHQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sU0FBUSxZQUFXLEdBQUcsWUFBVyxPQUFNLElBQUcsV0FBVSxHQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sTUFBSyxZQUFXLE1BQUcsT0FBTSxJQUFHLFdBQVUsR0FBRSxHQUFFLEtBQUcsRUFBQyxRQUFPLE9BQU0sWUFBVyxHQUFHLFlBQVcsT0FBTSxHQUFHLE9BQU0sV0FBVSxHQUFHLFVBQVMsR0FBRSxLQUFHLEVBQUMsUUFBTyxPQUFNLE9BQU0sSUFBRyxXQUFVLElBQUcsZUFBYyxLQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sWUFBVyxPQUFNLElBQUcsV0FBVSxJQUFHLGVBQWMsS0FBRSxHQUFFLEtBQUcsRUFBQyxNQUFLLElBQUcsT0FBTSxJQUFHLElBQUcsSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFlBQVcsR0FBRTtBQUFFLEtBQUcsVUFBUTtBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLEtBQUksT0FBSztBQUFDLE1BQUcsRUFBQyxlQUFjLElBQUcsZUFBYyxJQUFHLG1CQUFrQixJQUFHLG9CQUFtQixJQUFHLDRCQUEyQixHQUFFLElBQUUsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxhQUFVLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxPQUFPLE9BQU8sRUFBQyxRQUFPLE9BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUU7QUFBRSxXQUFPLEdBQUcsR0FBRSxFQUFDLEdBQUcsR0FBRSxZQUFXLEtBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxRQUFHLElBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxFQUFFLFlBQVUsRUFBRSxPQUFPLEdBQUUsU0FBTyxFQUFFLFFBQU8sRUFBRSxXQUFTLEVBQUUsVUFBUyxFQUFFLE9BQUssRUFBRSxNQUFLLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxPQUFLLEdBQUcsRUFBRSxRQUFNLEVBQUUsR0FBRSxFQUFFLFFBQU0sRUFBRTtBQUFBLFNBQVU7QUFBQyxVQUFHLEVBQUUsYUFBVyxVQUFRLEVBQUUsU0FBTyxVQUFRLEVBQUUsU0FBTyxPQUFPLEdBQUUsV0FBUyxFQUFFLFVBQVMsRUFBRSxPQUFLLEVBQUUsTUFBSyxFQUFFLE9BQUssRUFBRSxNQUFLLEVBQUUsT0FBSyxHQUFHLEVBQUUsUUFBTSxFQUFFLEdBQUUsRUFBRSxRQUFNLEVBQUU7QUFBQSxXQUFVO0FBQUMsWUFBRyxDQUFDLEVBQUUsS0FBSyxLQUFHLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEVBQUU7QUFBQSxZQUFXLEdBQUUsUUFBTSxFQUFFO0FBQUEsYUFBVTtBQUFDLGNBQUcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxNQUFJLElBQUksR0FBRSxPQUFLLEdBQUcsRUFBRSxJQUFJO0FBQUEsZUFBTTtBQUFDLGlCQUFJLEVBQUUsYUFBVyxVQUFRLEVBQUUsU0FBTyxVQUFRLEVBQUUsU0FBTyxXQUFTLENBQUMsRUFBRSxLQUFLLEdBQUUsT0FBSyxNQUFJLEVBQUU7QUFBQSxxQkFBYSxDQUFDLEVBQUUsS0FBSyxHQUFFLE9BQUssRUFBRTtBQUFBLGdCQUFVLEdBQUUsT0FBSyxFQUFFLEtBQUssTUFBTSxHQUFFLEVBQUUsS0FBSyxZQUFZLEdBQUcsSUFBRSxDQUFDLElBQUUsRUFBRTtBQUFLLGNBQUUsT0FBSyxHQUFHLEVBQUUsSUFBSTtBQUFBLFVBQUM7QUFBQyxZQUFFLFFBQU0sRUFBRTtBQUFBLFFBQUs7QUFBQyxVQUFFLFdBQVMsRUFBRSxVQUFTLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxPQUFLLEVBQUU7QUFBQSxNQUFJO0FBQUMsUUFBRSxTQUFPLEVBQUU7QUFBQSxJQUFNO0FBQUMsV0FBTyxFQUFFLFdBQVMsRUFBRSxVQUFTO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsT0FBTyxNQUFJLFNBQVMsS0FBRSxTQUFTLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxFQUFDLEdBQUcsR0FBRSxZQUFXLEtBQUUsQ0FBQztBQUFBLGFBQVUsT0FBTyxNQUFJLFNBQVMsS0FBRSxHQUFHLEdBQUcsR0FBRSxJQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsWUFBVyxLQUFFLENBQUM7QUFBRSxRQUFHLE9BQU8sTUFBSSxTQUFTLEtBQUUsU0FBUyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsWUFBVyxLQUFFLENBQUM7QUFBQSxhQUFVLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRSxHQUFFLEVBQUMsR0FBRyxHQUFFLFlBQVcsS0FBRSxDQUFDO0FBQUUsV0FBTyxFQUFFLFlBQVksTUFBSSxFQUFFLFlBQVk7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFDLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBRSxRQUFPLFVBQVMsRUFBRSxVQUFTLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLE9BQU0sRUFBRSxPQUFNLEtBQUksRUFBRSxLQUFJLEtBQUksRUFBRSxLQUFJLE1BQUssRUFBRSxNQUFLLFVBQVMsRUFBRSxVQUFTLFdBQVUsRUFBRSxXQUFVLGNBQWEsRUFBRSxjQUFhLFFBQU8sRUFBRSxRQUFPLE9BQU0sR0FBRSxHQUFFLElBQUUsT0FBTyxPQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxJQUFJLEVBQUUsVUFBUSxFQUFFLFVBQVEsSUFBSSxZQUFZLENBQUM7QUFBRSxRQUFHLEtBQUcsRUFBRSxVQUFVLEdBQUUsVUFBVSxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsU0FBTyxPQUFPLEtBQUcsQ0FBQyxFQUFFLFlBQVc7QUFBQyxVQUFHLEVBQUUsT0FBSyxPQUFPLEVBQUUsSUFBSSxHQUFFLEVBQUUsV0FBUyxPQUFPLEdBQUUsT0FBSyxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQyxNQUFNLEdBQUUsT0FBSyxTQUFTLEVBQUUsSUFBSTtBQUFFLFFBQUcsRUFBRSxjQUFZLFlBQVUsRUFBRSxPQUFPLEdBQUUsS0FBSyxFQUFFLFFBQU8sR0FBRztBQUFFLFFBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxRQUFHLE1BQUksUUFBTztBQUFDLFVBQUcsRUFBRSxjQUFZLFNBQVMsR0FBRSxLQUFLLElBQUk7QUFBRSxVQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxRQUFNLEVBQUUsS0FBSyxPQUFPLENBQUMsTUFBSSxJQUFJLEdBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFJLElBQUUsRUFBRTtBQUFLLFVBQUcsQ0FBQyxFQUFFLGlCQUFlLENBQUMsS0FBRyxDQUFDLEVBQUUsY0FBYyxLQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFPLEtBQUUsRUFBRSxRQUFRLFVBQVMsTUFBTTtBQUFFLFFBQUUsS0FBSyxDQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxLQUFLLEtBQUksRUFBRSxLQUFLO0FBQUUsUUFBRyxFQUFFLGFBQVcsT0FBTyxHQUFFLEtBQUssS0FBSSxFQUFFLFFBQVE7QUFBRSxXQUFPLEVBQUUsS0FBSyxFQUFFO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxNQUFNLEtBQUssRUFBQyxRQUFPLElBQUcsR0FBRSxDQUFDLEdBQUUsTUFBSSw4QkFBOEIsS0FBSyxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRSxFQUFFLEVBQUUsS0FBRyxJQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsSUFBRSxPQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFBRTtBQUFDLE1BQUksS0FBRztBQUE4SCxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBQyxRQUFPLFFBQU8sVUFBUyxRQUFPLE1BQUssSUFBRyxNQUFLLFFBQU8sTUFBSyxJQUFHLE9BQU0sUUFBTyxVQUFTLE9BQU0sR0FBRSxJQUFFLEVBQUUsUUFBUSxHQUFHLE1BQUksSUFBRyxJQUFFO0FBQUcsUUFBRyxFQUFFLGNBQVksU0FBUyxNQUFHLEVBQUUsU0FBTyxFQUFFLFNBQU8sTUFBSSxNQUFJLE9BQUs7QUFBRSxRQUFJLElBQUUsRUFBRSxNQUFNLEVBQUU7QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsU0FBTyxFQUFFLENBQUMsR0FBRSxFQUFFLFdBQVMsRUFBRSxDQUFDLEdBQUUsRUFBRSxPQUFLLEVBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxTQUFTLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLE9BQUssRUFBRSxDQUFDLEtBQUcsSUFBRyxFQUFFLFFBQU0sRUFBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsQ0FBQyxHQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRSxPQUFLLEVBQUUsQ0FBQztBQUFFLFVBQUcsRUFBRSxNQUFLO0FBQUMsWUFBSSxJQUFFLEdBQUcsRUFBRSxJQUFJO0FBQUUsWUFBRyxFQUFFLFdBQVMsT0FBRztBQUFDLGNBQUksSUFBRSxHQUFHLEVBQUUsSUFBSTtBQUFFLFlBQUUsT0FBSyxFQUFFLEtBQUssWUFBWSxHQUFFLElBQUUsRUFBRTtBQUFBLFFBQU0sTUFBTSxHQUFFLE9B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LFdBQVMsT0FBTyxLQUFHLFlBQVUsTUFBSSxRQUFPO0FBQUMsWUFBRyxJQUFFLEdBQUUsSUFBRSxFQUFFLFNBQVEsTUFBTSxRQUFRLENBQUMsS0FBRyxDQUFDLEVBQUUsT0FBTyxPQUFNLE1BQU0sd0RBQXdEO0FBQUEsTUFBQyxNQUFNLE9BQU0sTUFBTSxnQ0FBZ0M7QUFBRSxVQUFHLEdBQUcsS0FBSyxNQUFLLEdBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxTQUFPLEdBQUUsR0FBRyxVQUFVLEdBQUUsQ0FBQyxNQUFJLEdBQUcsS0FBSyxNQUFLLENBQUMsQ0FBQyxHQUFFO0FBQUssU0FBRyxLQUFLLE1BQUssQ0FBQztBQUFFLFVBQUksSUFBRSxFQUFDLEdBQUcsR0FBRSxPQUFNLEdBQUUsR0FBRyxjQUFjLEVBQUUsSUFBSSxHQUFFLGFBQVksR0FBRSxHQUFHLGNBQWMsRUFBRSxVQUFVLEVBQUM7QUFBRSxjQUFPLEdBQUUsR0FBRyxVQUFVLEdBQUUsRUFBRSxLQUFLLFdBQVMsSUFBRSxDQUFDLE1BQUksR0FBRyxLQUFLLE1BQUssR0FBRSxDQUFDLElBQUUsQ0FBQyxNQUFJLEVBQUUsS0FBSyxRQUFRLENBQUMsTUFBSSxHQUFHLEtBQUssTUFBSyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLFdBQVcsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDO0FBQUUsYUFBTyxPQUFPLEtBQUcsV0FBUyxFQUFFLGFBQVcsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFO0FBQUMsVUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQUssYUFBTyxFQUFFLFNBQVMsQ0FBQyxHQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFBRSxlQUFRLEtBQUssRUFBRSxPQUFNO0FBQUMsWUFBSSxJQUFFLEVBQUUsTUFBTSxVQUFVLENBQUMsTUFBSSxFQUFFLFlBQVUsQ0FBQztBQUFFLFlBQUcsS0FBRyxFQUFFLEdBQUUsTUFBTSxPQUFPLEdBQUUs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QUssS0FBSyxTQUFRO0FBQUMsVUFBSSxJQUFFLEtBQUssS0FBSyxRQUFRLENBQUM7QUFBRSxVQUFHLEVBQUUsTUFBSyxVQUFVLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxXQUFLLGNBQWMsQ0FBQztBQUFFO0FBQUEsSUFBTTtBQUFDLFNBQUssT0FBTyxLQUFLLGtEQUFrRDtBQUFFLGFBQVEsS0FBSyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRSxVQUFRO0FBQUUsV0FBSyxXQUFXLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFFBQUksSUFBRSxFQUFDLEdBQUcsS0FBSyxLQUFJO0FBQUUsYUFBUSxLQUFLLEdBQUcsUUFBTyxFQUFFLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxFQUFDLE1BQUs7QUFBQSxFQUFDLEdBQUUsT0FBTTtBQUFBLEVBQUMsR0FBRSxRQUFPO0FBQUEsRUFBQyxFQUFDO0FBQUUsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE1BQUksTUFBRyxRQUFPO0FBQUcsUUFBRyxNQUFJLE9BQU8sUUFBTztBQUFRLFFBQUcsRUFBRSxPQUFLLEVBQUUsUUFBTSxFQUFFLE1BQU0sUUFBTztBQUFFLFVBQU0sTUFBTSxtREFBbUQ7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQTBCLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBSyxTQUFJLEdBQUUsR0FBRyxVQUFVLEdBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLE9BQU0sTUFBTSxXQUFXLENBQUMscUJBQXFCO0FBQUUsVUFBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsT0FBTSxNQUFNLFdBQVcsQ0FBQyxtQkFBbUI7QUFBQSxJQUFDLENBQUMsR0FBRSxDQUFDLEVBQUU7QUFBTyxRQUFHLEVBQUUsU0FBTyxFQUFHLFVBQVMsS0FBSyxjQUFhLEdBQUksT0FBTSxNQUFNLHVEQUF1RDtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFJO0FBQUUsUUFBSSxJQUFFLE1BQUksUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUssUUFBRyxLQUFHLEVBQUUsT0FBTSxNQUFNLDZDQUE2QztBQUFFLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxNQUFLLElBQUUsSUFBRSxFQUFFLE9BQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFDLE1BQUssRUFBQyxNQUFJLE1BQUksQ0FBQztBQUFFLFFBQUcsQ0FBQyxFQUFFLEtBQUUsRUFBQyxNQUFLLEdBQUUsT0FBTSxDQUFDLEVBQUMsR0FBRSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUUsUUFBRyxFQUFFLFNBQVMsQ0FBQyxJQUFFLE1BQUcsQ0FBQyxFQUFFO0FBQU8sUUFBSSxJQUFFLEVBQUMsU0FBUSxHQUFFLFlBQVcsRUFBQyxHQUFHLEdBQUUsT0FBTSxHQUFFLEdBQUcsY0FBYyxFQUFFLElBQUksR0FBRSxhQUFZLEdBQUUsR0FBRyxjQUFjLEVBQUUsVUFBVSxFQUFDLEVBQUM7QUFBRSxRQUFHLEVBQUUsT0FBTyxJQUFHLEtBQUssTUFBSyxHQUFFLEdBQUUsRUFBRSxNQUFNO0FBQUEsUUFBTyxHQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUUsTUFBRSxJQUFJLENBQUMsSUFBRSxJQUFHLElBQUUsRUFBRSxnQkFBYyxRQUFNLE1BQUksVUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFJLEtBQUssV0FBVyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBTSxVQUFVLENBQUMsTUFBSSxFQUFFLFlBQVUsQ0FBQztBQUFFLFFBQUcsS0FBRyxFQUFFLEdBQUUsTUFBTSxPQUFPLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBTyxHQUFFLE1BQU0sS0FBSyxDQUFDLEdBQUUsS0FBSyxPQUFPLEtBQUssUUFBUSxDQUFDLGlCQUFpQjtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsRUFBQyxZQUFXLEVBQUMsSUFBRTtBQUFFLFFBQUcsTUFBSSxPQUFPO0FBQU8sUUFBRyxFQUFFLFNBQU8sS0FBSyxLQUFLLE1BQU0sS0FBRSxHQUFHLENBQUM7QUFBRSxNQUFFLGlCQUFlLEtBQUssUUFBUSxHQUFFLElBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsTUFBSyxpRkFBZ0Y7QUFBRSxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU0sRUFBQyxPQUFNLENBQUMsR0FBRSxFQUFFLEVBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxFQUFDLFNBQVEsTUFBSyxPQUFNO0FBQUMsVUFBTSxNQUFNLHNEQUFzRDtBQUFBLEVBQUMsRUFBQztBQUFFLEtBQUcsVUFBUTtBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLFVBQVEsR0FBRyxjQUFZO0FBQU8sTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxRQUFPLFlBQVcsVUFBUyxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxJQUFHLEVBQUMsSUFBRSxHQUFFLEVBQUMsUUFBTyxHQUFFLFdBQVUsR0FBRSxjQUFhLEdBQUUsTUFBSyxHQUFFLE1BQUssRUFBQyxJQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLFNBQUksTUFBSSxPQUFLLE1BQUksU0FBTyxNQUFJLEVBQUUsT0FBTyxRQUFPLEVBQUU7QUFBRSxRQUFJLElBQUUsR0FBRyxXQUFXLEtBQUssR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLFFBQUcsTUFBSSxPQUFPLE9BQU0sSUFBSSxHQUFHLFFBQVEsRUFBRSxLQUFLLGFBQVksR0FBRSxDQUFDO0FBQUUsUUFBRyxhQUFhLEdBQUcsVUFBVSxRQUFPLEVBQUUsQ0FBQztBQUFFLFdBQU8sRUFBRSxDQUFDO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBRyxNQUFJLEVBQUUsUUFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsTUFBTTtBQUFFLFVBQUksSUFBRSxFQUFFLFdBQVcsUUFBTyxFQUFDLEtBQUksRUFBQyxDQUFDO0FBQUUsYUFBTyxHQUFHLEdBQUUsR0FBRyxJQUFJLENBQUMsYUFBWSxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxhQUFTLEVBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsV0FBVyxVQUFTLEVBQUUsS0FBSyxXQUFTLE9BQUcsRUFBQyxLQUFJLEdBQUUsT0FBTSxHQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUMsSUFBRSxFQUFDLEtBQUksRUFBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEtBQUssT0FBTyxHQUFFLElBQUUsRUFBRSxVQUFVLEVBQUMsUUFBTyxHQUFFLFdBQVUsQ0FBQyxHQUFFLFlBQVcsR0FBRyxLQUFJLGNBQWEsR0FBRSxlQUFjLEVBQUMsR0FBRSxDQUFDO0FBQUUsUUFBRSxlQUFlLENBQUMsR0FBRSxFQUFFLEdBQUcsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDLEVBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksRUFBQyxJQUFFO0FBQUUsV0FBTyxFQUFFLFdBQVMsRUFBRSxXQUFXLFlBQVcsRUFBQyxLQUFJLEVBQUUsU0FBUSxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUUsV0FBVyxXQUFVLEVBQUMsS0FBSSxFQUFDLENBQUMsQ0FBQztBQUFBLEVBQVc7QUFBQyxLQUFHLGNBQVk7QUFBRyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxLQUFJLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxFQUFDLFdBQVUsR0FBRSxXQUFVLEdBQUUsTUFBSyxFQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsY0FBWSxHQUFHLFFBQVEsT0FBSyxHQUFHO0FBQUksUUFBRyxFQUFFLEdBQUU7QUFBQSxRQUFPLEdBQUU7QUFBRSxhQUFTLElBQUc7QUFBQyxVQUFHLENBQUMsRUFBRSxPQUFPLE9BQU0sTUFBTSx3Q0FBd0M7QUFBRSxVQUFJLElBQUUsRUFBRSxJQUFJLE9BQU87QUFBRSxRQUFFLElBQUksTUFBSTtBQUFDLFlBQUcsRUFBRSxLQUFLLEdBQUcsV0FBVyxHQUFFLEdBQUcsa0JBQWtCLEdBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxHQUFFLE9BQU8sR0FBRSxJQUFFO0FBQUEsTUFBQyxHQUFFLENBQUMsTUFBSTtBQUFDLFlBQUcsRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxlQUFlLEtBQUksTUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxFQUFFLEdBQUUsT0FBTyxHQUFFLEtBQUU7QUFBQSxNQUFDLENBQUMsR0FBRSxFQUFFLEdBQUcsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLElBQUc7QUFBQyxRQUFFLFFBQVEsR0FBRSxHQUFHLGtCQUFrQixHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLEVBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxHQUFHLElBQUksQ0FBQztBQUFVLFFBQUUsT0FBTyxHQUFHLFFBQVEsU0FBUSxHQUFHLElBQUksR0FBRyxRQUFRLE9BQU8sZUFBZSxDQUFDLE1BQU0sR0FBRyxRQUFRLE9BQU8sV0FBVyxDQUFDLEdBQUcsR0FBRSxFQUFFLE9BQU8sR0FBRyxRQUFRLFFBQU8sR0FBRyxJQUFJLEdBQUcsUUFBUSxPQUFPLFNBQVM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxVQUFJO0FBQUUsVUFBRyxDQUFDLEVBQUUsS0FBSyxZQUFZO0FBQU8sVUFBSSxLQUFHLElBQUUsTUFBSSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsY0FBWSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUU7QUFBVSxVQUFHLEVBQUUsVUFBUSxLQUFHLEtBQUcsS0FBRyxDQUFDLEVBQUUsY0FBYTtBQUFDLFlBQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEdBQUcsZUFBZSxNQUFNLEdBQUUsRUFBRSxPQUFNLEVBQUUsS0FBSztBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUksSUFBRSxFQUFFLElBQUksU0FBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0I7QUFBRSxVQUFFLFFBQU0sR0FBRyxlQUFlLE1BQU0sR0FBRSxHQUFFLEVBQUUsT0FBTSxHQUFHLElBQUk7QUFBQSxNQUFDO0FBQUMsVUFBRyxFQUFFLFVBQVEsS0FBRyxLQUFHLEtBQUcsQ0FBQyxFQUFFLGNBQWE7QUFBQyxZQUFHLEVBQUUsVUFBUSxPQUFPLEdBQUUsUUFBTSxHQUFHLGVBQWUsTUFBTSxHQUFFLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQSxNQUFDLE9BQUs7QUFBQyxZQUFJLElBQUUsRUFBRSxJQUFJLFNBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCO0FBQUUsVUFBRSxRQUFNLEdBQUcsZUFBZSxNQUFNLEdBQUUsR0FBRSxFQUFFLE9BQU0sR0FBRyxJQUFJO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxV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LEdBQUUsR0FBRyxnQkFBZ0IsRUFBRSxLQUFLLElBQUUsQ0FBQztBQUFFLE1BQUUsV0FBVyxHQUFFLEdBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBSSxJQUFFLEVBQUUsSUFBSSxLQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRSxJQUFFLEVBQUUsSUFBSSxHQUFHO0FBQUUsUUFBRSxVQUFVLEVBQUMsR0FBRSxHQUFFLEdBQUUsRUFBQyxDQUFDLEdBQUUsRUFBRSxPQUFPLEdBQUUsSUFBRSxHQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFPLE9BQUssRUFBRSxJQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLElBQUc7QUFBQyxhQUFPLEVBQUUsU0FBTyxLQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSSxNQUFJLFlBQVUsTUFBSSxPQUFPO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxLQUFLLE1BQU0sR0FBRSxLQUFHLEdBQUUsR0FBRyxnQkFBZ0IsR0FBRSxHQUFFLEVBQUUsS0FBSyxlQUFjLEdBQUcsU0FBUyxLQUFLLEdBQUUsSUFBRSxFQUFFLE1BQU0sV0FBVSxHQUFHLEtBQUs7QUFBRSxRQUFFLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTSxNQUFJO0FBQUMsWUFBRyxFQUFFLElBQUksR0FBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFFLEVBQUUsR0FBRyxHQUFFLEdBQUcsV0FBVyxHQUFFLEVBQUUsU0FBTyxFQUFFLEdBQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTO0FBQUUsVUFBRSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBZ0IsTUFBSTtBQUFDLFlBQUUsT0FBTyxHQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBRSxFQUFFLE1BQU07QUFBQSxRQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsVUFBSSxLQUFHLEdBQUUsR0FBRyxTQUFTLEdBQUUsR0FBRyxPQUFPLEdBQUUsSUFBRSxFQUFFLEtBQUssT0FBTztBQUFFLFFBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFNLE1BQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTSxNQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBSyxNQUFJO0FBQUMsVUFBRSxNQUFNLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxFQUFDO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsNkJBQTRCLFFBQU8sQ0FBQyxFQUFDLFlBQVcsRUFBQyxNQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBRyxHQUFFLEtBQUcsRUFBQyxTQUFRLFNBQVEsT0FBTSxNQUFHLE9BQU0sSUFBRyxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLE1BQUssR0FBRSxPQUFNLEdBQUUsWUFBVyxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsUUFBRyxLQUFHLEtBQUcsT0FBTyxLQUFHLFNBQVMsR0FBRSxVQUFVLEdBQUcsTUFBTSxHQUFFLEdBQUcsU0FBUyxHQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztBQUFBLFFBQU8sR0FBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQUEsRUFBQyxFQUFDO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsOENBQTZDLFFBQU8sQ0FBQyxFQUFDLFlBQVcsRUFBQyxNQUFJLEdBQUcsb0JBQW9CLENBQUMsSUFBRyxHQUFFLEtBQUcsRUFBQyxTQUFRLFFBQU8sWUFBVyxTQUFRLE9BQU0sTUFBRyxPQUFNLElBQUcsS0FBSyxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksR0FBRSxNQUFLLEdBQUUsT0FBTSxHQUFFLFFBQU8sR0FBRSxZQUFXLEdBQUUsSUFBRyxFQUFDLElBQUU7QUFBRSxRQUFHLENBQUMsS0FBRyxFQUFFLFdBQVMsRUFBRSxPQUFNLE1BQU0sZ0NBQWdDO0FBQUUsUUFBSSxJQUFFLEVBQUUsVUFBUSxFQUFFLEtBQUssVUFBUyxHQUFFLElBQUUsTUFBSSxNQUFJLFFBQU0sTUFBSSxTQUFPLElBQUUsS0FBRyxHQUFFLEdBQUcsU0FBUyxHQUFFLEdBQUcsT0FBTyxHQUFFO0FBQUUsUUFBRyxLQUFHLEVBQUUsS0FBRSxFQUFFLElBQUksT0FBTyxHQUFFLEVBQUUsV0FBVyxHQUFFLENBQUM7QUFBQSxTQUFNO0FBQUMsVUFBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEVBQUUsT0FBTSxNQUFNLDBCQUEwQjtBQUFFLFVBQUksSUFBRSxFQUFFLE1BQU0sV0FBVSxDQUFDO0FBQUUsV0FBRyxHQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsTUFBRSxLQUFLLENBQUM7QUFBRSxhQUFTLElBQUc7QUFBQyxRQUFFLE9BQU8sR0FBRSxLQUFFLEdBQUUsRUFBRSxNQUFNLEtBQUksR0FBRSxDQUFDLE1BQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFJLE1BQUksRUFBRSxPQUFPLEdBQUUsSUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsYUFBTyxPQUFPLE1BQUksWUFBVSxNQUFJLE9BQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUFBLElBQUU7QUFBQSxFQUFDLEVBQUM7QUFBRSxLQUFHLFVBQVE7QUFBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsQ0FBQyxPQUFLO0FBQUMsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLENBQUMsR0FBRyxTQUFRLEdBQUcsU0FBUSxHQUFHLFNBQVEsR0FBRyxTQUFRLEdBQUcsU0FBUSxHQUFHLFNBQVEsR0FBRyxTQUFRLEdBQUcsU0FBUSxFQUFDLFNBQVEsUUFBTyxZQUFXLENBQUMsVUFBUyxPQUFPLEVBQUMsR0FBRSxFQUFDLFNBQVEsWUFBVyxZQUFXLFVBQVMsR0FBRSxHQUFHLFNBQVEsR0FBRyxPQUFPO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsMEJBQXdCO0FBQU8sTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxDQUFDLEVBQUMsUUFBTyxFQUFDLEtBQUksRUFBQyxFQUFDLE1BQUksR0FBRyw4QkFBOEIsQ0FBQyxVQUFTLFFBQU8sQ0FBQyxFQUFDLFFBQU8sRUFBQyxLQUFJLEVBQUMsRUFBQyxNQUFJLEdBQUcsWUFBWSxDQUFDLElBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxtQkFBa0IsTUFBSyxTQUFRLFlBQVcsQ0FBQyxXQUFVLFFBQVEsR0FBRSxRQUFPLGVBQWMsT0FBTSxJQUFHLEtBQUssR0FBRTtBQUFDLFFBQUcsRUFBQyxjQUFhLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQUUsUUFBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxPQUFDLEdBQUUsR0FBRyxpQkFBaUIsR0FBRSxzRUFBc0U7QUFBRTtBQUFBLElBQU07QUFBQyxPQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUMsRUFBQztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxHQUFFLElBQUcsRUFBQyxJQUFFO0FBQUUsTUFBRSxRQUFNO0FBQUcsUUFBSSxJQUFFLEVBQUUsTUFBTSxPQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVM7QUFBRSxRQUFHLE1BQUksTUFBRyxHQUFFLFVBQVUsRUFBQyxLQUFJLEVBQUUsT0FBTSxDQUFDLEdBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFBQSxhQUFVLE9BQU8sS0FBRyxZQUFVLEVBQUUsR0FBRSxHQUFHLG1CQUFtQixHQUFFLENBQUMsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLElBQUksU0FBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQUUsUUFBRSxJQUFJLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxRQUFFLFNBQVMsS0FBSSxFQUFFLFFBQU8sR0FBRSxDQUFDLE1BQUk7QUFBQyxZQUFHLEVBQUUsVUFBVSxFQUFDLFNBQVEsR0FBRSxVQUFTLEdBQUUsY0FBYSxHQUFHLEtBQUssSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEVBQUUsVUFBVSxHQUFFLElBQUksR0FBRSxHQUFHLEtBQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsMEJBQXdCO0FBQUcsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsZ0JBQWM7QUFBTyxNQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsRUFBQyxTQUFRLFNBQVEsTUFBSyxTQUFRLFlBQVcsQ0FBQyxVQUFTLFNBQVEsU0FBUyxHQUFFLFFBQU8sZUFBYyxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUMsUUFBTyxHQUFFLElBQUcsRUFBQyxJQUFFO0FBQUUsUUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU8sR0FBRyxHQUFFLG1CQUFrQixDQUFDO0FBQUUsUUFBRyxFQUFFLFFBQU0sT0FBSSxHQUFFLEdBQUcsbUJBQW1CLEdBQUUsQ0FBQyxFQUFFO0FBQU8sTUFBRSxJQUFJLEdBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQztBQUFBLEVBQUMsRUFBQztBQUFFLFdBQVMsR0FBRyxH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LEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUFHLFVBQUcsTUFBSSxPQUFPLEtBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUFHLFFBQUUsS0FBSyxDQUFDO0FBQUU7QUFBQSxJQUFNO0FBQUMsTUFBRSxRQUFNO0FBQUcsUUFBSSxJQUFFLEVBQUUsS0FBSyxPQUFPO0FBQUUsUUFBRyxNQUFJLFVBQVEsTUFBSSxFQUFFLEdBQUUsR0FBRSxNQUFJLEVBQUUsR0FBRyxHQUFFLE1BQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUFBLGFBQVUsTUFBSSxHQUFFO0FBQUMsVUFBRyxFQUFFLElBQUksR0FBRSxJQUFFLEdBQUUsTUFBSSxPQUFPLEdBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFjLENBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxJQUFJLEdBQUUsS0FBRSxHQUFFLEVBQUU7QUFBRSxNQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxDQUFDO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBSSxJQUFFLEVBQUUsS0FBSyxRQUFRLEdBQUUsSUFBRSxFQUFFLElBQUksU0FBUSxDQUFDO0FBQUUsUUFBRSxHQUFFLE1BQUksRUFBRSxHQUFHLEdBQUUsTUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxRQUFFLFNBQVMsS0FBSSxHQUFFLEdBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRSxVQUFVLEVBQUMsU0FBUSxZQUFXLFVBQVMsR0FBRSxjQUFhLEdBQUcsS0FBSyxLQUFJLGVBQWMsS0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFO0FBQUMsVUFBRyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFFLE1BQUksT0FBTyxHQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUcsTUFBSSxFQUFFLE9BQU8sR0FBRSxJQUFF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QUUsR0FBRyxHQUFFLE1BQU0sR0FBRSxJQUFFLEdBQUcsR0FBRSxNQUFNO0FBQUUsUUFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFO0FBQU8sUUFBSSxJQUFFLEVBQUUsSUFBSSxTQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFRO0FBQUUsUUFBRyxFQUFFLEdBQUUsRUFBRSxNQUFNLEdBQUUsS0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsSUFBSSxVQUFVO0FBQUUsUUFBRSxVQUFVLEVBQUMsVUFBUyxFQUFDLENBQUMsR0FBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsUUFBTyxDQUFDLENBQUM7QUFBQSxJQUFDLFdBQVMsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFBLFFBQU8sR0FBRSxJQUFJLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLE1BQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLElBQUUsQ0FBQztBQUFFLGFBQVMsSUFBRztBQUFDLFVBQUksSUFBRSxFQUFFLFVBQVUsRUFBQyxTQUFRLE1BQUssZUFBYyxNQUFHLGNBQWEsT0FBRyxXQUFVLE1BQUUsR0FBRSxDQUFDO0FBQUUsUUFBRSxlQUFlLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGFBQU0sTUFBSTtBQUFDLFlBQUksSUFBRSxFQUFFLFVBQVUsRUFBQyxTQUFRLEVBQUMsR0FBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLE9BQU8sR0FBRSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQUEsWUFBTyxHQUFFLFVBQVUsRUFBQyxVQUFTLEVBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxFQUFDO0FBQUUsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE9BQU8s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LENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxRQUFNO0FBQUcsUUFBSSxJQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxFQUFFLENBQUM7QUFBRSxXQUFPLEtBQUcsS0FBRyxLQUFHLE1BQUksS0FBRyxLQUFHLE1BQUksTUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBRyxHQUFHO0FBQU8sUUFBRyxJQUFFLEVBQUUsUUFBTztBQUFFLFFBQUcsSUFBRSxFQUFFLFFBQU07QUFBRyxXQUFPO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRztBQUFrRSxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sU0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLEdBQUcsS0FBSyxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsUUFBTTtBQUFHLFVBQUksSUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxNQUFJLE1BQUksS0FBRyxHQUFFLElBQUUsRUFBRSxFQUFFLENBQUMsS0FBRyxJQUFHLElBQUUsRUFBRSxFQUFFLENBQUMsS0FBRztBQUFHLFVBQUcsSUFBRSxNQUFJLElBQUUsTUFBSSxLQUFHLENBQUMsRUFBRSxRQUFNO0FBQUcsVUFBRyxLQUFHLE1BQUksS0FBRyxNQUFJLElBQUUsR0FBRyxRQUFNO0FBQUcsVUFBSSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUU7QUFBRyxjQUFPLE1BQUksTUFBSSxNQUFJLFFBQU0sTUFBSSxNQUFJLE1BQUksT0FBSyxJQUFFO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUksS0FBRSxvQkFBSSxLQUFLLGdCQUFjLENBQUMsR0FBRSxRQUFRLEdBQUUsS0FBRSxvQkFBSSxLQUFLLGdCQUFjLENBQUMsR0FBRSxRQUFRO0FBQUUsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFdBQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUksSUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFFLElBQUUsR0FBRyxLQUFLLENBQUM7QUFBRSxRQUFHLEVBQUUsS0FBRyxHQUFHO0FBQU8sUUFBRyxJQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBRSxRQUFHLElBQUUsRUFBRSxRQUFNO0FBQUcsV0FBTztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUc7QUFBUSxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxXQUFPLFNBQVMsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU0sRUFBRTtBQUFFLGFBQU8sRUFBRSxXQUFTLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBRyxHQUFHO0FBQU8sUUFBSSxJQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsUUFBUSxHQUFFLElBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxRQUFRO0FBQUUsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFdBQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUcsQ0FBQyxHQUFF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RyxTQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sS0FBRyxPQUFLLFNBQU8sRUFBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsU0FBTyxHQUFHLENBQUMsSUFBRSxJQUFFO0FBQU07QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsR0FBRyxRQUFPLFFBQVE7QUFBekIsSUFBMkIsS0FBRztBQUFHLFNBQVMsS0FBSTtBQUFDLE9BQUssV0FBUyxLQUFHLEdBQUcsSUFBSSxJQUFFLENBQUMsR0FBRSxLQUFLLE9BQUs7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUssSUFBSSxDQUFDLEtBQUcsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUFFLFNBQU8sS0FBSyxRQUFNLElBQUUsSUFBRSxHQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBUCxJQUFtQyxLQUFHLE9BQU87QUFBN0MsSUFBdUQsS0FBRyxHQUFHO0FBQWUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBSztBQUFTLE1BQUcsSUFBRztBQUFDLFFBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxXQUFPLE1BQUksS0FBRyxTQUFPO0FBQUEsRUFBQztBQUFDLFNBQU8sR0FBRyxLQUFLLEdBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFO0FBQU07QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsT0FBTztBQUFkLElBQXdCLEtBQUcsR0FBRztBQUFlLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUs7QUFBUyxTQUFPLEtBQUcsRUFBRSxDQUFDLE1BQUksU0FBTyxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBNEIsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLO0FBQVMsU0FBTyxLQUFLLFFBQU0sS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLEdBQUUsRUFBRSxDQUFDLElBQUUsTUFBSSxNQUFJLFNBQU8sS0FBRyxHQUFFO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFBRSxJQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxVQUFVLFFBQU07QUFBRyxHQUFHLFVBQVUsU0FBTztBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLElBQUksS0FBRztBQUFHLFNBQVMsS0FBSTtBQUFDLE9BQUssV0FBUyxDQUFDLEdBQUUsS0FBSyxPQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUk7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRTtBQUFPLFNBQU0sSUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxRQUFPO0FBQUUsU0FBTTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHLE1BQU07QUFBYixJQUF1QixLQUFHLEdBQUc7QUFBTyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUcsSUFBRSxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsRUFBRSxTQUFPO0FBQUUsTUFBRyxLQUFHLEVBQUUsR0FBRSxJQUFJO0FBQUEsTUFBTyxJQUFHLEtBQUssR0FBRSxHQUFFLENBQUM7QUFBRSxTQUFNLEVBQUUsS0FBSyxNQUFLO0FBQUU7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sSUFBRSxJQUFFLFNBQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsS0FBSyxVQUFTLENBQUMsSUFBRTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUcsSUFBRSxFQUFFLEdBQUUsS0FBSyxNQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBTyxHQUFFLENBQUMsRUFBRSxDQUFDLElBQUU7QUFBRSxTQUFPO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFBRSxJQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxVQUFVLFFBQU07QUFBRyxHQUFHLFVBQVUsU0FBTztBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLElBQUksS0FBRztBQUFHLElBQUksS0FBRyxHQUFHLElBQUcsS0FBSztBQUFsQixJQUFvQixLQUFHO0FBQUcsU0FBUyxLQUFJO0FBQUMsT0FBSyxPQUFLLEdBQUUsS0FBSyxXQUFTLEVBQUMsTUFBSyxJQUFJLE1BQUcsS0FBSSxLQUFJLE1BQUksT0FBSSxRQUFPLElBQUksS0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTztBQUFFLFNBQU8sS0FBRyxZQUFVLEtBQUcsWUFBVSxLQUFHLFlBQVUsS0FBRyxZQUFVLE1BQUksY0FBWSxNQUFJO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUU7QUFBUyxTQUFPLEdBQUcsQ0FBQyxJQUFFLEVBQUUsT0FBTyxLQUFHLFdBQVMsV0FBUyxNQUFNLElBQUUsRUFBRTtBQUFHO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxNQUFLLENBQUMsRUFBRSxPQUFPLENBQUM7QUFBRSxTQUFPLEtBQUssUUFBTSxJQUFFLElBQUUsR0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsTUFBSyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxNQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxNQUFLLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBSyxTQUFPLEVBQUUsSUFBSSxHQUFFLENBQUMsR0FBRSxLQUFLLFFBQU0sRUFBRSxRQUFNLElBQUUsSUFBRSxHQUFFO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFB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QUMsV0FBVSxNQUFHLE1BQUssSUFBRyxDQUFDO0FBQUUsTUFBSSxJQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBRyxJQUFJLEtBQUssT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQU8sTUFBRztBQUFDLFFBQUksSUFBRSxNQUFNLEVBQUUsU0FBUyxLQUFLLEdBQUUsS0FBSSxHQUFHO0FBQUUsUUFBRztBQUFDLFlBQU0sRUFBRSxVQUFVLEtBQUssVUFBVSxHQUFFLE1BQUssQ0FBQyxDQUFDLEdBQUUsTUFBTSxFQUFFLEtBQUs7QUFBQSxJQUFDLFVBQUM7QUFBUSxZQUFNLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxVQUFNLEVBQUUsU0FBUyxPQUFPLEdBQUUsQ0FBQztBQUFBLEVBQUMsU0FBTyxHQUFFO0FBQUMsVUFBTSxNQUFNLEVBQUUsU0FBUyxPQUFPLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQyxNQUFHO0FBQUMsUUFBSSxJQUFFLE1BQU0sRUFBRSxTQUFTLEtBQUssR0FBRSxHQUFHO0FBQUUsUUFBRztBQUFDLFlBQU0sRUFBRSxLQUFLO0FBQUEsSUFBQyxVQUFDO0FBQVEsWUFBTSxFQUFFLE1BQU07QUFBQSxJQUFDO0FBQUEsRUFBQyxRQUFNO0FBQUEsRUFBQztBQUFDO0FBQUMsZUFBZSxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRSxLQUFLLFFBQU07QUFBRyxNQUFJLElBQUUsRUFBRSxLQUFLLFVBQVUsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFO0FBQUUsYUFBTztBQUFDLFFBQUcsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLElBQUUsTUFBTSxFQUFFLEtBQUs7QUFBRSxRQUFHLEVBQUU7QUFBTSxRQUFHLElBQUUsRUFBRSxTQUFPLElBQUc7QUFBQyxVQUFJLElBQUUsS0FBRztBQUFFLFVBQUcsSUFBRSxFQUFFLEdBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRSxDQUFDLENBQUM7QUFBRSxZQUFNLEVB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QUFFLE1BQUcsRUFBRTtBQUFPLE1BQUksSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUU7QUFBRSxXQUFRLEtBQUssRUFBRSxHQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFO0FBQU8sU0FBTztBQUFDO0FBQUMsSUFBSTtBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSTtBQUFFLFVBQU8sT0FBSyxJQUFFLElBQUksV0FBVyxlQUFZLEtBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFBQztBQUFDLElBQUk7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUk7QUFBRSxVQUFPLE9BQUssSUFBRSxJQUFJLFdBQVcsZUFBWSxLQUFHLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxLQUFJLEdBQUUsT0FBTSxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksT0FBTSxJQUFHO0FBQW5ELElBQXFELEtBQUcsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLE1BQUcsQ0FBQyxFQUFFO0FBQU8sTUFBRyxHQUFHLElBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxLQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxDQUFDLENBQUMscUJBQXFCLEtBQUssVUFBVSxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtBQUFFO0FBQU07QUFBRSxTQUFTLEtBQUk7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBQSxNQUFRLFFBQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxPQUFNLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxPQUFNLEdBQUU7QUFBekMsSUFBMkMsS0FBRyxvQkFBSTtBQUFRLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFF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QUFLLElBQUcsRUFBRSxPQUFNLEdBQUc7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxTQUFPLEVBQUUsVUFBUSxFQUFFLE1BQUssSUFBRyxHQUFHLElBQUUsS0FBRyxFQUFFLFdBQVU7QUFBQyxVQUFFLEtBQUssR0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsSUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxNQUFLLEdBQUc7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxNQUFJLE9BQUssRUFBRSxZQUFVLElBQUUsRUFBRSxXQUFVLElBQUUsR0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUyxHQUFFLENBQUMsQ0FBQztBQUFFLFFBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLE1BQUssR0FBRztBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsUUFBTztBQUFDLFFBQUcsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxRQUFNLENBQUM7QUFBRSxXQUFPLEtBQUssT0FBTztBQUFBLENBQzF3Z0M7QUFBQSxFQUFDO0FBQUM7QUFBQyxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSTtBQUFRLEdBQUcsZ0JBQWMsb0JBQUksSUFBSSxDQUFDO0FBQUEsR0FDMUQsSUFBSSxDQUFDO0FBQUUsR0FBRyxpQkFBZTtBQUFlLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFRLElBQUUsS0FBRyxHQUFFLElB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LGFBQWEsVUFBUztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQVEsSUFBSSxjQUFjO0FBQUUsUUFBRyxFQUFFLEtBQUUsRUFBQyxNQUFLLEVBQUM7QUFBRSxNQUFFLE9BQU8sR0FBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQyxXQUFTLEdBQUcsQ0FBQyxFQUFFLEdBQUUsT0FBTyxHQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFdBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRSxPQUFPLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUMsTUFBSyxFQUFFLEtBQUksQ0FBQyxDQUFDO0FBQUEsV0FBVSxNQUFNLFFBQVEsQ0FBQyxFQUFFLE9BQU0sUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLElBQUUsTUFBSyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsV0FBVSxPQUFPLE1BQUksU0FBUyxPQUFNLFFBQVEsSUFBSSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUUsQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUksR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQU8sT0FBTSxVQUFVLHdHQUF3RyxDQUFDLFVBQVU7QUFBQztBQUFFLElBQUksS0FBRyxDQUFDLE1BQUksS0FBRyxRQUFNLE9BQU8sTUFBSSxZQUFVLE9BQU8sRUFBRSxTQUFPLFlBQVUsT0FBTyxFQUFFLFNBQU8sWUFBVSxPQUFPLEVBQUUsU0FBTyxjQUFZLE9BQU8sRUFBRSxVQUFRLGNBQVksT0FBTyxFQUFFLGdCQUFjO0FBQTlLLElBQXlMLEtBQUcsQ0FBQyxNQUFJLEtBQUcsUUFBTSxPQUFPLE1BQUksWUFBVSxPQUFPLEVBQUUsU0FBTyxZQUFVLE9BQU8sRUFBRSxpQkFBZSxZQUFVLEdBQUcsQ0FBQztBQUEvUixJQUFpUyxLQUFHLENBQUMsTUFBSSxLQUFHLFFBQU0sT0FBTyxNQUFJLFlBQVUsT0FBTyxFQUFFLFFBQU0sWUFBVSxPQUFPLEVBQUUsU0FBTztBQUFXLGVBQWUsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxHQUFFLElBQUUsTUFBTSxHQUFFLE1BQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBRyxhQUFhLFFBQU0sS0FBRyxRQUFNLEtBQUcsS0FBSyxRQUFPO0FBQUUsV0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFFLEtBQUcsRUFBRSxNQUFLLEVBQUMsTUFBSyxFQUFFLE1BQUssY0FBYSxFQUFFLGNBQWEsR0FBRyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEVBQUUsS0FBSztBQUFFLFdBQU8sTUFBSSxJQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLE1BQU0sT0FBTyxFQUFFLElBQUksSUFBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksSUFBRSxNQUFNLEdBQUcsQ0FBQztBQUFFLE1BQUcsQ0FBQyxHQUFHLE1BQUs7QUFBQyxRQUFJLElBQUUsRUFBRSxLQUFLLENBQUMsTUFBSSxPQUFPLE1BQUksWUFBVyxVQUFTLEtBQUksRUFBRSxJQUFJO0FBQUUsUUFBRyxPQUFPLE1BQUksU0FBUyxLQUFFLEVBQUMsR0FBRyxHQUFFLE1BQUssRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQztBQUFDLGVBQWUsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLENBQUM7QUFBRSxNQUFHLE9BQU8sTUFBSSxZQUFVLFlBQVksT0FBTyxDQUFDLEtBQUcsYUFBYSxZQUFZLEdBQUUsS0FBSyxDQUFDO0FBQUEsV0FBVSxHQUFHLENBQUMsRUFBRSxHQUFFLEtBQUssYUFBYSxPQUFLLElBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQztBQUFBLFdBQVUsR0FBRyxDQUFDLEVBQUUsZ0JBQWMsS0FBSyxFQUFFLEdBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQSxPQUFNO0FBQUMsUUFBSSxJQUFFLEdBQUcsYUFBYTtBQUFLLFVBQU0sTUFBTSx5QkFBeUIsT0FBTyxDQUFDLEdBQUcsSUFBRSxrQkFBa0IsQ0FBQyxLQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLE1BQUksWUFBVSxNQUFJLEtBQUssUUFBTTtBQUFHLFNBQU0sYUFBYSxPQUFPLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFHO0FBQUMsSUFBTSxJQUFOLE1BQU87QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFNBQUssVUFBUTtBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxPQUFPLElBQUksOEJBQThCO0FBQUUsVUFBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUcsTUFBTSxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLFdBQU0sRUFBRSxRQUFRO0FBQUUsYUFBUSxLQUFLLEVBQUUsT0FBSyxDQUFDLEdBQUUsSUFBSTtBQUFFO0FBQUEsRUFBTTtBQUFDLE1BQUksSUFBRSxPQUFHO0FBQUUsTUFBRyxhQUFhLFFBQVEsS0FBRSxFQUFFLFFBQVE7QUFBQSxXQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUU7QUFBQSxNQUFPLEtBQUUsTUFBRyxJQUFFLE9BQU8sUUFBUSxLQUFHLENBQUMsQ0FBQztBQUFFLFdBQVEsS0FBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsT0FBTyxNQUFJLFNBQVMsT0FBTSxVQUFVLHFDQUFxQztBQUFFLFFBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRyxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUcsTUFBSSxPQUFPO0FBQVMsVUFBRyxLQUFHLENBQUMsRUFBRSxLQUFFLE1BQUcsTUFBSyxDQUFDLEdBQUUsSUFBSTtBQUFFLFlBQUssQ0FBQyxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLE1BQUksSUFBRSxJQUFJLFdBQVEsSUFBRSxvQkFBSTtBQUFJLFdBQVEsS0FBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLG9CQUFJO0FBQUksYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsWUFBWTtBQUFFLFVBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxJQUFJLENBQUM7QUFBRSxVQUFHLE1BQUksS0FBSyxHQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUEsVUFBTyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU0sRUFBQyxDQUFDLEVBQUUsR0FBRSxNQUFHLFFBQU8sR0FBRSxPQUFNLEVBQUM7QUFBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxFQUFFLFFBQVEsb0NBQW1DLGtCQUFrQjtBQUFDO0FBQUMsSUFBSSxLQUFHLE9BQU8sT0FBTyx1QkFBTyxPQUFPLElBQUksQ0FBQztBQUF4QyxJQUEwQyxLQUFHLENBQUMsSUFBRSxPQUFLLFNBQVMsTUFBSyxHQUFFO0FBQUMsTUFBRyxFQUFFLFdBQVMsRUFBRSxRQUFPLEVBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxPQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQyxRQUFHLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBRTtBQUFHLFFBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLElBQUUscUJBQW1CLEdBQUcsS0FBRyxDQUFDO0FBQUUsUUFBRyxNQUFJLEVBQUUsV0FBUyxLQUFHLFFBQU0sT0FBTyxNQUFJLFlBQVUsRUFBRSxhQUFXLE9BQU8sZUFBZSxPQUFPLGVBQWUsRUFBRSxrQkFBZ0IsRUFBRSxLQUFHLEVBQUUsR0FBRyxVQUFVLEtBQUUsSUFBRSxJQUFHLEVBQUUsS0FBSyxFQUFDLE9BQU0sRUFBRSxTQUFPLEVBQUUsUUFBTyxRQUFPLEVBQUUsUUFBTyxPQUFNLGlCQUFpQixPQUFPLFVBQVUsU0FBUyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUUsRUFBRSxDQUFDLGlDQUFnQyxDQUFDO0FBQUUsV0FBTyxJQUFFLEtBQUcsTUFBSSxFQUFFLFNBQU8sS0FBRztBQUFBLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLE1BQU0sUUFBTyxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUUsc0NBQXFDO0FBQUUsVUFBTyxJQUFFLEVBQUUsS0FBSyxDQUFDLE9BQUssS0FBSyxHQUFFLEtBQUssRUFBQyxPQUFNLEVBQUUsT0FBTSxRQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQU8sT0FBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDLCtDQUE4QyxDQUFDO0FBQUUsTUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxRQUFNLEVBQUUsS0FBSyxHQUFFLEVBQUUsU0FBTyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsSUFBSSxPQUFPLEVBQUUsUUFBTSxDQUFDLEdBQUUsSUFBRSxJQUFJLE9BQU8sRUFBRSxNQUFNO0FBQUUsYUFBTyxJQUFFLEVBQUUsUUFBTSxFQUFFLFFBQU8sSUFBRSxJQUFFO0FBQUEsSUFBQyxHQUFFLEVBQUU7QUFBRSxVQUFNLElBQUksRUFBRTtBQUFBLEVBQ3oyUixFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7QUFBQSxDQUMxQixDQUFDO0FBQUEsRUFDQSxDQUFDO0FBQUEsRUFDRCxDQUFDLEVBQUU7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBSjY4UCxJQUkzOFAsSUFBRSxHQUFHLEVBQUU7QUFBRSxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyw4QkFBNkIsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLHFCQUFxQixDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxjQUFhLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLDhCQUE2QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsT0FBTyxxQkFBcUIsQ0FBQyxjQUFhLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHFCQUFxQixDQUFDLHNCQUFxQixFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE9BQU8sK0JBQStCO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE9BQU8sTUFBSSxZQUFVLE1BQUksUUFBTSxNQUFNO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLG9CQUFJO0FBQUksTUFBRyxHQUFFO0FBQUMsYUFBUSxLQUFLLEVBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxFQUFFLFVBQVEsS0FBSyxHQUFFO0FBQUMsUUFBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBRSxRQUFHLE1BQU0sUUFBUSxFQUFFLE9BQU8sR0FBRTtBQUFDLGVBQVEsS0FBSyxFQUFFLFFBQVEsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU8sTUFBTSxLQUFLLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU0sQ0FBQztBQUFFLFNBQU0sRUFBQyxzQkFBcUIsRUFBRSxLQUFLLElBQUksRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU0sRUFBQyxzQkFBcUIsRUFBRSxFQUFFLEVBQUM7QUFBRSxTQUFNLENBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsdUJBQXNCLElBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxPQUFPLGNBQWMsQ0FBQyxjQUFhLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxzQkFBcUIsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLHNCQUFzQixFQUFFLFNBQVMsR0FBRSxRQUFPLHFCQUFvQixHQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUUsa0JBQWlCLEtBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGlCQUFpQixHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUMsY0FBYSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyx1QkFBc0IsR0FBRyxFQUFDLE1BQUssR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxHQUFFLEtBQUssT0FBTyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksZUFBZSxDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUcsU0FBUyxLQUFHLE9BQUssRUFBQyxrQkFBaUIsR0FBRyxTQUFTLEVBQUMsSUFBRSxPQUFNLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLHdCQUF1QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBRyxTQUFTLEtBQUcsT0FBSyxFQUFDLGtCQUFpQixHQUFHLFNBQVMsRUFBQyxJQUFFLE9BQU0sR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSywrQkFBOEIsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLHNCQUFzQixDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDBCQUEwQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyxzQkFBc0IsQ0FBQyxjQUFhLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLCtCQUE4QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsb0JBQW9CLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHNCQUFzQixDQUFDLDZCQUE0QixFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLGVBQWUsQ0FBQyx1QkFBc0IsSUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsVUFBTSxHQUFHLFNBQVM7QUFBRSxTQUFLLFdBQVMsSUFBSSxHQUFHLEtBQUssT0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssd0JBQXVCLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksZUFBZSxDQUFDLGNBQWEsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssZUFBZSxDQUFDLGNBQWEsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsd0JBQXVCLElBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLGVBQWUsQ0FB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SyxTQUFRLE9BQU0sSUFBRyxDQUFDLEdBQUU7QUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBSTtBQUFDLFFBQUUsS0FBSyxFQUFDLE1BQUssU0FBUSxPQUFNLElBQUcsQ0FBQyxHQUFFO0FBQUk7QUFBQSxJQUFRO0FBQUMsUUFBRyxNQUFJLEtBQUk7QUFBQyxRQUFFLEtBQUssRUFBQyxNQUFLLGFBQVksT0FBTSxJQUFHLENBQUMsR0FBRTtBQUFJO0FBQUEsSUFBUTtBQUFDLFFBQUcsTUFBSSxLQUFJO0FBQUMsUUFBRSxLQUFLLEVBQUMsTUFBSyxhQUFZLE9BQU0sSUFBRyxDQUFDLEdBQUU7QUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBSTtBQUFDLFVBQUksSUFBRSxJQUFHLElBQUU7QUFBRyxVQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUUsYUFBTSxNQUFJLEtBQUk7QUFBQyxZQUFHLE1BQUksRUFBRSxRQUFPO0FBQUMsY0FBRTtBQUFHO0FBQUEsUUFBSztBQUFDLFlBQUcsTUFBSSxNQUFLO0FBQUMsY0FBRyxLQUFJLE1BQUksRUFBRSxRQUFPO0FBQUMsZ0JBQUU7QUFBRztBQUFBLFVBQUs7QUFBQyxlQUFHLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLFFBQUMsTUFBTSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxVQUFHLElBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEVBQUUsR0FBRSxLQUFLLEVBQUMsTUFBSyxVQUFTLE9BQU0sRUFBQyxDQUFDO0FBQUU7QUFBQSxJQUFRO0FBQUMsUUFBRyxLQUFHLEtBQUssS0FBSyxDQUFDLEdBQUU7QUFBQztBQUFJO0FBQUEsSUFBUTtBQUFDLFFBQUksSUFBRTtBQUFRLFFBQUcsS0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFHLE1BQUksT0FBSyxNQUFJLEtBQUk7QUFBQyxVQUFJLElBQUU7QUFBRyxVQUFHLE1BQUksSUFBSSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLGFBQU0sS0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFHLE1BQUksSUFBSSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUUsS0FBSyxFQUFDLE1BQUssVUFBUyxPQUFNLEVBQUMsQ0FBQztBQUFFO0FBQUEsSUFBUTtBQUFDLFFBQUksSUFBRTtBQUFTLFFBQUcsS0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFO0FBQUcsYUFBTSxLQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUU7QUFBQyxZQUFHLE1BQUksRUFBRSxPQUFPO0FBQU0sYUFBRyxHQUFFLElBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsVUFBRyxLQUFHLFVBQVEsS0FBRyxXQUFTLE1BQUksT0FBTyxHQUFFLEtBQUssRUFBQyxNQUFLLFFBQU8sT0FBTSxFQUFDLENBQUM7QUFBQSxXQUFNO0FBQUM7QUFBSTtBQUFBLE1BQVE7QUFBQztBQUFBLElBQVE7QUFBQztBQUFBLEVBQUc7QUFBQyxTQUFPO0FBQUM7QUFBaGlDLElBQWtpQyxLQUFHLENBQUMsTUFBSTtBQUFDLE1BQUcsRUFBRSxXQUFTLEVBQUUsUUFBTztBQUFFLE1BQUksSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUUsVUFBTyxFQUFFLE1BQUs7QUFBQSxJQUFDLEtBQUk7QUFBWSxhQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFTLFVBQUksSUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQU8sQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFLLE1BQUksSUFBSSxRQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxJQUFFLEtBQUk7QUFBUyxVQUFJLElBQUUsRUFBRSxFQUFFLFNBQU8sQ0FBQztBQUFFLFVBQUcsR0FBRyxTQUFPLFlBQVksUUFBTyxJQUFFLEVBQUUsTUFBTSxHQUFFLEVBQUUsU0FBTyxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUEsZUFBVSxHQUFHLFNBQU8sV0FBUyxFQUFFLFVBQVEsSUFBSSxRQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFZLGFBQU8sSUFBRSxFQUFFLE1BQU0sR0FBRSxFQUFFLFNBQU8sQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUEsRUFBSztBQUFDLFNBQU87QUFBQztBQUE5L0MsSUFBZ2dELEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBSSxJQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsSUFBSSxDQUFDLE1BQUk7QUFBQyxRQUFHLEVBQUUsU0FBTyxRQUFRLEtBQUcsRUFBRSxVQUFRLElBQUksR0FBRSxLQUFLLEdBQUc7QUFBQSxRQUFPLEdBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsU0FBTyxRQUFRLEtBQUcsRUFBRSxVQUFRLElBQUksR0FBRSxLQUFLLEdBQUc7QUFBQSxRQUFPLEdBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxHQUFFLENBQUM7QUFBQSxFQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sRUFBRSxHQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBSTtBQUFDLFFBQUcsTUFBSSxJQUFJLEdBQUUsS0FBSyxFQUFDLE1BQUssU0FBUSxPQUFNLElBQUcsQ0FBQztBQUFBLGFBQVUsTUFBSSxJQUFJLEdBQUUsS0FBSyxFQUFDLE1BQUssU0FBUSxPQUFNLElBQUcsQ0FBQztBQUFBLEVBQUMsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFyMUQsSUFBdTFELEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBSSxJQUFFO0FBQUcsU0FBTyxFQUFFLElBQUksQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBUyxhQUFHLE1BQUksRUFBRSxRQUFNO0FBQUk7QUFBQSxNQUFNO0FBQVEsYUFBRyxFQUFFO0FBQU07QUFBQSxJQUFLO0FBQUEsRUFBQyxDQUFDLEdBQUU7QUFBQztBQUE5OEQsSUFBZzlELEtBQUcsQ0FBQyxNQUFJLEtBQUssTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFFLElBQUk7QUFBSixJQUFPO0FBQVAsSUFBVTtBQUFWLElBQWE7QUFBYixJQUFnQjtBQUFoQixJQUFtQjtBQUFuQixJQUFzQjtBQUF0QixJQUF5QjtBQUF6QixJQUE0QjtBQUE1QixJQUErQjtBQUEvQixJQUFrQztBQUFsQyxJQUFxQztBQUFyQyxJQUF3QztBQUF4QyxJQUEyQztBQUEzQyxJQUE4QztBQUE5QyxJQUFpRDtBQUFqRCxJQUFvRDtBQUFwRCxJQUF1RDtBQUF2RCxJQUEwRDtBQUExRCxJQUE2RDtBQUE3RCxJQUFnRTtBQUFoRSxJQUFtRTtBQUFuRSxJQUFzRTtBQUF0RSxJQUF5RTtBQUF6RSxJQUE0RSxLQUFHO0FBQWEsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEVBQUUsU0FBTyxjQUFZLEVBQUUsU0FBTyxxQkFBbUIsRUFBRSxTQUFPO0FBQWM7QUFBQyxJQUFNLEtBQU4sTUFBTSxJQUFFO0FBQUEsRUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLE9BQUcsSUFBSSxJQUFJLEdBQUUsS0FBSyxXQUFTLENBQUMsR0FBRSxLQUFLLG1CQUFpQixDQUFDLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLElBQUksR0FBRSxLQUFLLGFBQVcsSUFBSSxtQkFBZ0IsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRSxHQUFHLElBQUksTUFBSyxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRSxHQUFHLElBQUksTUFBSyxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxJQUFJLE1BQUssQ0FBQyxDQUFDLEdBQUUsR0FBRyxJQUFJLE1BQUssS0FBRSxHQUFFLEdBQUcsSUFBSSxNQUFLLEtBQUUsR0FBRSxHQUFHLElBQUksTUFBSyxLQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssS0FBRSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxNQUFNLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLENBQUMsTUFBSTtBQUFDLFVBQUcsRUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsR0FBRyxDQUFDLEVBQUUsS0FBRSxJQUFJO0FBQUcsVUFBRyxhQUFhLEdBQUcsUUFBTyxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUUsVUFBRyxhQUFhLEVBQUUsUUFBTyxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUUsVUFBRyxhQUFhLE9BQU07QUFBQyxZQUFJLElBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTztBQUFFLGVBQU8sRUFBRSxRQUFNLEdBQUUsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEtBQUssTUFBTSxTQUFRLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRztBQUFBLElBQUMsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsTUFBTSxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU0sTUFBSTtBQUFBLElBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsVUFBUSxTQUFRLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLGFBQVk7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLGVBQWM7QUFBQyxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUc7QUFBRSxRQUFJLElBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLHVDQUF1QztBQUFFLFdBQU0sRUFBQyxNQUFLLE1BQUssVUFBUyxHQUFFLFlBQVcsRUFBRSxRQUFRLElBQUksWUFBWSxFQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxtQkFBbUIsR0FBRTtBQUFDLFFBQUksSUFBRSxJQUFJLElBQUcsSUFBSTtBQUFFLFdBQU8sRUFBRSxLQUFLLE1BQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLGNBQWMsR0FBRSxHQUFFLEdBQUUsRUFBQyxRQUFPLEVBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBSSxJQUFHLEdBQUUsRUFBQyxRQUFPLEVBQUMsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLFNBQVMsR0FBRSxpQkFBaUIsQ0FBQztBQUFFLFdBQU8sRUFBRSxHQUFFLElBQUcsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsS0FBSyxNQUFJLEVBQUUsZUFBZSxHQUFFLEVBQUMsR0FBRyxHQUFFLFFBQU8sS0FBRSxHQUFFLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBQyxHQUFHLEdBQUcsU0FBUSw2QkFBNEIsU0FBUSxFQUFDLENBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsTUFBRSxFQUFFLEtBQUssTUFBSTtBQUFDLFdBQUssV0FBVyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUEsSUFBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGlCQUFpQixHQUFFO0FBQUMsU0FBSyxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRSxJQUFFLE1BQUc7QUFBQyxRQUFHLEtBQUssaUJBQWlCLEtBQUssQ0FBQyxHQUFFLEVBQUUsTUFBSyxNQUFNLFdBQVUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBZSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLFFBQU87QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsUUFBUSxNQUFLLFdBQVcsTUFBTTtBQUFFLFVBQUUsS0FBSyxXQUFXLE1BQU0sS0FBSyxLQUFLLFVBQVUsR0FBRSxFQUFFLGlCQUFpQixTQUFRLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRztBQUFDLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFFLFVBQUcsRUFBQyxVQUFTLEdBQUUsTUFBSyxFQUFDLElBQUUsTUFBTSxFQUFFLE9BQU8sRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFLLFdBQVcsT0FBTSxDQUFDLEVBQUUsYUFBYTtBQUFFLFdBQUssV0FBVyxDQUFDO0FBQUUscUJBQWMsS0FBSyxFQUFFLEdBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssTUFBSyxDQUFDO0FBQUUsVUFBRyxFQUFFLFdBQVcsUUFBUSxRQUFRLE9BQU0sSUFBSTtBQUFHLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFBLElBQUMsVUFBQztBQUFRLFVBQUcsS0FBRyxFQUFFLEdBQUUsb0JBQW9CLFNBQVEsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFXLEdBQUU7QUFBQyxRQUFHLEtBQUssTUFBTTtBQUFPLE1BQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsUUFBUSxJQUFJLFlBQVksR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLEtBQUssTUFBSyxDQUFDLEdBQUUsS0FBSyxNQUFNLFNBQVM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFPO0FBQUMsU0FBSyxXQUFXLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUUsR0FBRTtBQUFDLFlBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFFLENBQUMsSUFBSSxLQUFLLEVBQUMsVUFBUyxFQUFDLENBQUMsR0FBRTtBQUFBLEVBQUk7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsUUFBTztBQUFLLFFBQUksSUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFJLEVBQUUsYUFBVyxDQUFDO0FBQUUsUUFBRyxLQUFHLEVBQUUsR0FBRSxPQUFPLEdBQUUsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFJO0FBQUEsRUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLFlBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFFLENBQUMsSUFBSSxLQUFLLEVBQUMsVUFBUyxHQUFFLE1BQUssS0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFJO0FBQUEsRUFBQyxRQUFRLEdBQUU7QUFBQyxXQUFPLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUcsRUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsTUFBSSxRQUFRLE1BQUssS0FBSyxTQUFRLENBQUM7QUFBRSxXQUFLLEtBQUssR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxPQUFNO0FBQUMsTUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxpQkFBZ0I7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLGVBQWM7QUFBQyxXQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUUsRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxZQUFXO0FBQUMsV0FBTyxNQUFNLEtBQUssS0FBSyxHQUFFLEVBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sTUFBSyxHQUFFO0FBQUMsUUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUU7QUFBTyxRQUFHLE1BQUksTUFBTSxHQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxJQUFJO0FBQUUsUUFBSSxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLEdBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxPQUFPLENBQUMsTUFB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QUUsRUFBQyxHQUFHLEdBQUUsVUFBUyxFQUFFLFdBQVMsTUFBSSxFQUFFLE1BQU0sUUFBTztBQUFFO0FBQUEsVUFBSztBQUFBLFVBQUM7QUFBUSxlQUFHLEVBQUUsS0FBSztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBQztBQUFBLE1BQUMsS0FBSTtBQUFxQixlQUFPO0FBQUEsSUFBQztBQUFBLEVBQUMsR0FBRSxPQUFPLGNBQWMsSUFBRztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRTtBQUFHLFdBQU8sS0FBSyxHQUFHLGVBQWMsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsTUFBTTtBQUFFLFVBQUcsRUFBRSxHQUFFLFFBQVEsQ0FBQztBQUFBLFVBQU8sR0FBRSxLQUFLLENBQUM7QUFBQSxJQUFDLENBQUMsR0FBRSxLQUFLLEdBQUcsT0FBTSxNQUFJO0FBQUMsVUFBRTtBQUFHLGVBQVEsS0FBSyxFQUFFLEdBQUUsUUFBUSxNQUFNO0FBQUUsUUFBRSxTQUFPO0FBQUEsSUFBQyxDQUFDLEdBQUUsS0FBSyxHQUFHLFNBQVEsQ0FBQyxNQUFJO0FBQUMsVUFBRTtBQUFHLGVBQVEsS0FBSyxFQUFFLEdBQUUsT0FBTyxDQUFDO0FBQUUsUUFBRSxTQUFPO0FBQUEsSUFBQyxDQUFDLEdBQUUsS0FBSyxHQUFHLFNBQVEsQ0FBQyxNQUFJO0FBQUMsVUFBRTtBQUFHLGVBQVEsS0FBSyxFQUFFLEdBQUUsT0FBTyxDQUFDO0FBQUUsUUFBRSxTQUFPO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBQyxNQUFLLFlBQVM7QUFBQyxVQUFHLENBQUMsRUFBRSxRQUFPO0FBQUMsWUFBRyxFQUFFLFFBQU0sRUFBQyxPQUFNLFFBQU8sTUFBSyxLQUFFO0FBQUUsZUFBTyxJQUFJLFFBQVEsQ0FBQyxHQUFFLE1BQUksRUFBRSxLQUFLLEVBQUMsU0FBUSxHQUFFLFFBQU8sRUFBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSSxJQUFFLEVBQUMsT0FBTSxHQUFFLE1BQUssTUFBRSxJQUFFLEVBQUMsT0FBTSxRQUFPLE1BQUssS0FBRSxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU0sRUFBQyxPQUFNLEVBQUUsTUFBTSxHQUFFLE1BQUssTUFBRTtBQUFBLElBQUMsR0FBRSxRQUFPLFlBQVM7QUFBQyxhQUFPLEtBQUssTUFBTSxHQUFFLEVBQUMsT0FBTSxRQUFPLE1BQUssS0FBRTtBQUFBLElBQUMsRUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLG1CQUFrQjtBQUFDLFdBQU8sSUFBSSxHQUFHLEtBQUssT0FBTyxhQUFhLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxVQUFVLEVBQUUsaUJBQWlCO0FBQUEsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixNQUFLO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxRQUFJLElBQUUsT0FBTyxNQUFJLFdBQVMsSUFBRSxFQUFFLElBQUksQ0FBQyxNQUFJO0FBQUMsVUFBRyxFQUFFLFNBQU8sT0FBTyxRQUFPLEVBQUU7QUFBSyxhQUFNLElBQUksRUFBRSxJQUFJO0FBQUEsSUFBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQUUsVUFBTSxDQUFDO0FBQUUsU0FBSyxPQUFLLGFBQVksS0FBSyxVQUFRO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQVAsSUFBVyxLQUFHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQnRrdkIsSUFBSTtBQUFKLElBQU87QUFBUCxJQUFVO0FBQVYsSUFBYTtBQUFiLElBQWdCO0FBQWhCLElBQW1CO0FBQW5CLElBQXNCO0FBQXRCLElBQXlCO0FBQXpCLElBQTRCO0FBQTVCLElBQStCO0FBQS9CLElBQWtDO0FBQUcsU0FBUyxLQUFJO0FBQUMsTUFBSSxHQUFFO0FBQUUsU0FBTSxFQUFDLFNBQVEsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRSxHQUFFLElBQUU7QUFBQSxFQUFDLENBQUMsR0FBRSxTQUFRLEdBQUUsUUFBTyxFQUFDO0FBQUM7QUFBQyxJQUFNLEtBQU4sTUFBUTtBQUFBLEVBQUMsWUFBWSxHQUFFLEdBQUUsR0FBRTtBQUFDLE9BQUcsSUFBSSxJQUFJLEdBQUUsS0FBSyxTQUFPLEdBQUUsR0FBRyxJQUFJLE1BQUssS0FBRSxHQUFFLEdBQUcsSUFBSSxNQUFLLEtBQUUsR0FBRSxHQUFHLElBQUksTUFBSyxNQUFNLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxNQUFNLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxFQUFDLFFBQU8sRUFBQyxHQUFHLEdBQUUsVUFBUyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUMsRUFBQyxHQUFFLEdBQUc7QUFBRSxRQUFJLElBQUUsQ0FBQyxrQkFBaUIsR0FBRyxHQUFHLEVBQUUsT0FBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSTtBQUFFLFFBQUcsRUFBRSxNQUFLLElBQUcsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxzQkFBcUIsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLG1CQUFtQixRQUFRLFNBQVEsS0FBSyx3U0FBd1M7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsaUJBQWdCO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPO0FBQWtCLFFBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxRQUFRLFFBQU07QUFBRyxRQUFJLElBQUU7QUFBRSxRQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsTUFBSSxPQUFPLEtBQUc7QUFBQyxVQUFJLElBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsVUFBRSxFQUFFLE1BQU0sZ0JBQWMsRUFBRSxNQUFNLCtCQUE2QixNQUFJLEVBQUUsTUFBTSwyQkFBeUIsS0FBRyxFQUFFLE1BQU07QUFBQSxJQUFhLFFBQU07QUFBQyxhQUFNO0FBQUEsSUFBRTtBQUFDLFFBQUksSUFBRSxFQUFFLHlCQUF1QjtBQUFHLFFBQUcsSUFBRSxFQUFFLFFBQU07QUFBRyxRQUFJLElBQUUsRUFBRSxTQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPLE9BQU0sSUFBRSxFQUFFLGlCQUFlLElBQUcsSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTztBQUFTLFFBQUcsRUFBRSxFQUFFLFNBQU8sQ0FBQyxFQUFFLFNBQU8sYUFBWTtBQUFDLFVBQUksSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUUsVUFBRyxNQUFNLFFBQVEsRUFBRSxPQUFPLEdBQUU7QUFBQyxZQUFJLElBQUUsRUFBRSxRQUFRLE9BQU8sQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUUsWUFBRyxFQUFFLFdBQVMsRUFBRSxHQUFFLElBQUk7QUFBQSxZQUFPLEdBQUUsVUFBUTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLE1BQU0sS0FBSyxPQUFPLEtBQUssU0FBUyxPQUFPLEVBQUMsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFHLEdBQUUsRUFBQyxNQUFLLFFBQU8sU0FBUSxDQUFDLEVBQUMsTUFBSyxRQUFPLE1BQUssRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLFlBQVcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sV0FBVSxHQUFFLEVBQUMsUUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsUUFBTyxTQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUSxFQUFDLHNCQUFxQixhQUFZLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsU0FBTyxPQUFPLE9BQU0sSUFBSSxFQUFFLHVDQUF1QztBQUFFLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sV0FBUyxDQUFDLEVBQUMsTUFBSyxRQUFPLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRTtBQUFBLEVBQUUsR0FBRSxPQUFPLGNBQWMsSUFBRztBQUFDLFFBQUk7QUFBRSxRQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFNLElBQUksRUFBRSx1Q0FBdUM7QUFBRSxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxRQUFPLEdBQUc7QUFBRSxRQUFHO0FBQUMsYUFBTSxNQUFHO0FBQUMsWUFBSTtBQUFFLFlBQUc7QUFBQyxjQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPLGtCQUFnQixFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sZUFBZTtBQUFNLFlBQUUsTUFBSyxJQUFHLE9BQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLFFBQU8sR0FBRyxHQUFFLEVBQUUsTUFBSyxLQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEtBQUksSUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsUUFBTyxHQUFHO0FBQUUsY0FBRyxFQUFDLGdCQUFlLEdBQUUsbUJBQWtCLEdBQUUsR0FBRyxFQUFDLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFO0FBQU8sY0FBRyxFQUFFLE9BQU8sS0FBRSxLQUFLLE9BQU8sS0FBSyxTQUFTLE9BQU8sRUFBQyxHQUFHLEVBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxFQUFFLGFBQWEsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU0sTUFBSTtBQUFBLFVBQUMsQ0FBQyxHQUFFLE1BQU07QUFBQSxjQUFPLEdBQUUsTUFBSyxJQUFHLEtBQUssT0FBTyxLQUFLLFNBQVMsT0FBTyxFQUFDLEdBQUcsR0FBRSxRQUFPLE1BQUUsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsY0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLEdBQUU7QUFBQyxnQkFBRyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRTtBQUFDLGtCQUFHLEVBQUMsTUFBSyxHQUFFLFNBQVEsRUFBQyxJQUFFLE1BQU0sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFFLGdCQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEtBQUssRUFBQyxNQUFLLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksSUFBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssTUFBSyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBRSxHQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEtBQUssQ0FBQztBQUFBLHFCQUFVLENBQUMsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFO0FBQUEsVUFBSztBQUFBLFFBQUMsVUFBQztBQUFRLGNBQUcsRUFBRSxHQUFFLE1BQU07QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFDLFVBQUcsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTSxJQUFJLEVBQUUsd0RBQXdEO0FBQUUsUUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFFBQVEsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUM7QUFBQSxJQUFDLFNBQU8sR0FBRTtBQUFDLFlBQU0sRUFBRSxNQUFLLElBQUcsT0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFFBQVEsTUFBTSxNQUFJO0FBQUEsTUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUU7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsa0JBQWtCLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxXQUFXLEdBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFPLEVBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU07QUFBQSxRQUFPLEdBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFPO0FBQUUsTUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsUUFBTyxHQUFHO0FBQUEsRUFBQztBQUFBLEVBQUMsa0JBQWtCLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxXQUFXLEdBQUUsTUFBSyxJQUFHLEVBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRztBQUFBLFFBQU8sR0FBRSxNQUFLLElBQUcsRUFBQyxHQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUMsR0FBRSxHQUFHO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxxQkFBcUIsSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsUUFBTztBQUFDLFFBQUksSUFBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxLQUFLLE9BQU8sU0FBUyxHQUFHLEVBQUU7QUFBRSxRQUFHLENBQUMsRUFBRSxRQUFPO0FBQUssV0FBTyxFQUFFLE1BQUssSUFBRyxLQUFJLEVBQUUsRUFBRSxLQUFLLE1BQUssR0FBRSxDQUFD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QW1CLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLHdCQUF1QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsT0FBTyxlQUFlLENBQUMsY0FBYSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxXQUFTO0FBQUcsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyxlQUFlLENBQUMsMEJBQXlCLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFD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LE1BQUssTUFBSTtBQUFBLElBQUMsQ0FBQyxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRSxHQUFHLElBQUksTUFBSyxDQUFDLENBQUMsR0FBRSxHQUFHLElBQUksTUFBSyxLQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssS0FBRSxHQUFFLEdBQUcsSUFBSSxNQUFLLEtBQUUsR0FBRSxHQUFHLElBQUksTUFBSyxLQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxNQUFNLEdBQUUsR0FBRyxJQUFJLE1BQUssQ0FBQyxNQUFJO0FBQUMsVUFBRyxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxHQUFHLENBQUMsRUFBRSxLQUFFLElBQUk7QUFBRyxVQUFHLGFBQWEsR0FBRyxRQUFPLEVBQUUsTUFBSyxJQUFHLE1BQUcsR0FBRyxHQUFFLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxVQUFHLGFBQWEsRUFBRSxRQUFPLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxVQUFHLGFBQWEsT0FBTTtBQUFDLFlBQUksSUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPO0FBQUUsZUFBTyxFQUFFLFFBQU0sR0FBRSxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sS0FBSyxNQUFNLFNBQVEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxJQUFJLFFBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFFLE1BQUssSUFBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFFLEdBQUc7QUFBQSxJQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsTUFBTSxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxVQUFRLFNBQVEsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBYztBQUFDLE1BQUUsTUFBSyxJQUFHLE1BQUcsR0FBRztBQUFFLFFBQUksSUFBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBRSxRQUFHLENBQUMsRUFBRSxPQUFNLE1BQU0sdUNBQXVDO0FBQUUsV0FBTSxFQUFDLE1BQUssTUFBSyxVQUFTLEdBQUUsWUFBVyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLG1CQUFtQixHQUFFO0FBQUMsUUFBSSxJQUFFLElBQUksSUFBRyxJQUFJO0FBQUUsV0FBTyxFQUFFLEtBQUssTUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sY0FBYyxHQUFFLEdBQUUsR0FBRSxFQUFDLFFBQU8sRUFBQyxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxJQUFJLElBQUcsR0FBRSxFQUFDLFFBQU8sRUFBQyxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsU0FBUyxHQUFFLGlCQUFpQixDQUFDO0FBQUUsV0FBTyxFQUFFLEdBQUUsSUFBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLE1BQUksRUFBRSxlQUFlLEdBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFDLEdBQUcsR0FBRyxTQUFRLDZCQUE0QixTQUFRLEVBQUMsQ0FBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxNQUFFLEVBQUUsS0FBSyxNQUFJO0FBQUMsV0FBSyxXQUFXLEdBQUUsS0FBSyxNQUFNLEtBQUs7QUFBQSxJQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsaUJBQWlCLEdBQUU7QUFBQyxTQUFLLFNBQVMsS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFLElBQUUsTUFBRztBQUFDLFFBQUcsS0FBSyxpQkFBaUIsS0FBSyxDQUFDLEdBQUUsRUFBRSxNQUFLLE1BQU0sV0FBVSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxlQUFlLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsUUFBTztBQUFFLFFBQUcsR0FBRTtBQUFDLFVBQUcsRUFBRSxRQUFRLE1BQUssV0FBVyxNQUFNO0FBQUUsVUFBRSxLQUFLLFdBQVcsTUFBTSxLQUFLLEtBQUssVUFBVSxHQUFFLEVBQUUsaUJBQWlCLFNBQVEsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHO0FBQUMsUUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUUsVUFBRyxFQUFDLFVBQVMsR0FBRSxNQUFLLEVBQUMsSUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUUsR0FBRSxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUssV0FBVyxPQUFNLENBQUMsRUFBRSxhQUFhO0FBQUUsV0FBSyxXQUFXLENBQUM7QUFBRSxxQkFBYyxLQUFLLEVBQUUsR0FBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxNQUFLLENBQUM7QUFBRSxVQUFHLEVBQUUsV0FBVyxRQUFRLFFBQVEsT0FBTSxJQUFJO0FBQUcsUUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFBQyxVQUFDO0FBQVEsVUFBRyxLQUFHLEVBQUUsR0FBRSxvQkFBb0IsU0FBUSxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRTtBQUFDLFFBQUcsS0FBSyxNQUFNO0FBQU8sTUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxRQUFRLElBQUksWUFBWSxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxNQUFLLENBQUMsR0FBRSxLQUFLLE1BQU0sU0FBUztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxTQUFLLFdBQVcsTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLEdBQUcsR0FBRSxHQUFFO0FBQUMsWUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxNQUFJLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsQ0FBQyxJQUFJLEtBQUssRUFBQyxVQUFTLEVBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBSTtBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxRQUFPO0FBQUssUUFBSSxJQUFFLEVBQUUsVUFBVSxDQUFDLE1BQUksRUFBRSxhQUFXLENBQUM7QUFBRSxRQUFHLEtBQUcsRUFBRSxHQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUk7QUFBQSxFQUFDLEtBQUssR0FBRSxHQUFFO0FBQUMsWUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxNQUFJLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsQ0FBQyxJQUFJLEtBQUssRUFBQyxVQUFTLEdBQUUsTUFBSyxLQUFFLENBQUMsR0FBRTtBQUFBLEVBQUk7QUFBQSxFQUFDLFFBQVEsR0FBRTtBQUFDLFdBQU8sSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBRyxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxNQUFJLFFBQVEsTUFBSyxLQUFLLFNBQVEsQ0FBQztBQUFFLFdBQUssS0FBSyxHQUFFLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLE9BQU07QUFBQyxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLGlCQUFnQjtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBYztBQUFDLFdBQU8sTUFBTSxLQUFLLEtBQUssR0FBRSxFQUFFLE1BQUssSUFBRyxLQUFJLEVBQUUsRUFBRSxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFlBQVc7QUFBQyxXQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUUsRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxNQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRTtBQUFPLFFBQUcsTUFBSSxNQUFNLEdBQUUsTUFBSyxJQUFHLE1BQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLElBQUk7QUFBRSxRQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsR0FBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFJLENBQUMsRUFBRSxJQUFJLEdBQUUsRUFBRSxRQUFRLENBQUMsRUFBQyxVQUFTLEVBQUMsTUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsUUFBRyxNQUFJLFNBQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxDQUFDLEdBQUcsT0FBTyxTQUFRLE9BQU8sQ0FBQztBQUFFLFFBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUU7QUFBQSxJQUFNO0FBQUMsUUFBRyxNQUFJLFNBQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxDQUFDLEdBQUcsT0FBTyxTQUFRLE9BQU8sQ0FBQztBQUFFLFFBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGFBQVk7QUFBQyxRQUFHLEtBQUssaUJBQWlCLEdBQUcsRUFBRSxFQUFFLE1BQUssTUFBTSxnQkFBZSxFQUFFLE1BQUssSUFBRyxLQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sb0JBQW9CLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLFFBQU87QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsUUFBUSxNQUFLLFdBQVcsTUFBTTtBQUFFLFVBQUUsS0FBSyxXQUFXLE1BQU0sS0FBSyxLQUFLLFVBQVUsR0FBRSxFQUFFLGlCQUFpQixTQUFRLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRztBQUFDLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBVyxJQUFJO0FBQUUsVUFBSSxJQUFFLEdBQUcsbUJBQW1CLEdBQUUsS0FBSyxVQUFVO0FBQUUscUJBQWMsS0FBSyxFQUFFLEdBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssTUFBSyxDQUFDO0FBQUUsVUFBRyxFQUFFLFdBQVcsUUFBUSxRQUFRLE9BQU0sSUFBSTtBQUFHLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFBLElBQUMsVUFBQztBQUFRLFVBQUcsS0FBRyxFQUFFLEdBQUUsb0JBQW9CLFNBQVEsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxFQUFFLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsV0FBVTtBQUFDLFFBQUcsS0FBSyxpQkFBaUIsV0FBUyxFQUFFLE9BQU0sSUFBSSxFQUFFLDhEQUE4RDtBQUFFLFdBQU8sS0FBSyxpQkFBaUIsR0FBRyxFQUFFO0FBQUEsRUFBQyxHQUFFLEtBQUcsV0FBVTtBQUFDLFFBQUcsS0FBSyxpQkFBaUIsV0FBUyxFQUFFLE9BQU0sSUFBSSxFQUFFLDhEQUE4RDtBQUFFLFFBQUksSUFBRSxLQUFLLGlCQUFpQixHQUFHLEVBQUUsRUFBRSxRQUFRLE9BQU8sQ0FBQyxNQUFJLEVBQUUsU0FBTyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxJQUFJO0FBQUUsUUFBRyxFQUFFLFdBQVMsRUFBRSxPQUFNLElBQUksRUFBRSwrREFBK0Q7QUFBRSxXQUFPLEVBQUUsS0FBSyxHQUFHO0FBQUEsRUFBQyxHQUFFLEtBQUcsV0FBVTtBQUFDLFFBQUcsS0FBSyxNQUFNO0FBQU8sTUFBRSxNQUFLLElBQUcsUUFBTyxHQUFHO0FBQUEsRUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsUUFBRyxLQUFLLE1BQU07QUFBTyxRQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxNQUFLLENBQUM7QUFBRSxZQUFPLEtBQUssTUFBTSxlQUFjLEdBQUUsQ0FBQyxHQUFFLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSSx1QkFBc0I7QUFBQyxZQUFJLElBQUUsRUFBRSxRQUFRLEdBQUcsRUFBRTtBQUFFLGdCQUFPLEVBQUUsTUFBTSxNQUFLO0FBQUEsVUFBQyxLQUFJLGNBQWE7QUFBQyxnQkFBRyxFQUFFLFNBQU8sT0FBTyxNQUFLLE1BQU0sUUFBTyxFQUFFLE1BQU0sTUFBSyxFQUFFLFFBQU0sRUFBRTtBQUFFO0FBQUEsVUFBSztBQUFBLFVBQUMsS0FBSSxtQkFBa0I7QUFBQyxnQkFBRyxFQUFFLFNBQU8sT0FBTyxNQUFLLE1BQU0sWUFBVyxFQUFFLE1BQU0sVUFBUyxFQUFFLGFBQVcsQ0FBQyxDQUFDO0FBQUU7QUFBQSxVQUFLO0FBQUEsVUFBQyxLQUFJLG9CQUFtQjtBQUFDLGdCQUFHLEdBQUcsQ0FBQyxLQUFHLEVBQUUsTUFBTSxNQUFLLE1BQU0sYUFBWSxFQUFFLE1BQU0sY0FBYSxFQUFFLEtBQUs7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDLEtBQUksa0JBQWlCO0FBQUMsZ0JBQUcsRUFBRSxTQUFPLFdBQVcsTUFBSyxNQUFNLFlBQVcsRUFBRSxNQUFNLFVBQVMsRUFBRSxRQUFRO0FBQUU7QUFBQSxVQUFLO0FBQUEsVUFBQyxLQUFJLG1CQUFrQjtBQUFDLGdCQUFHLEVBQUUsU0FBTyxXQUFXLE1BQUssTUFBTSxhQUFZLEVBQUUsU0FBUztBQUFFO0FBQUEsVUFBSztBQUFBLFVBQUM7QUFBUSxlQUFHLEVBQUUsS0FBSztBQUFBLFFBQUM7QUFBQztBQUFBLE1BQUs7QUFBQSxNQUFDLEtBQUksZ0JBQWU7QUFBQyxhQUFLLGlCQUFpQixDQUFDLEdBQUUsS0FBSyxZQUFZLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsRUFBQyxRQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBQyxDQUFDLEdBQUUsSUFBRTtBQUFFO0FBQUEsTUFBSztBQUFBLE1BQUMsS0FBSSxzQkFBcUI7QUFBQyxhQUFLLE1BQU0sZ0JBQWUsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSxNQUFLO0FBQUEsTUFBQyxLQUFJLGlCQUFnQjtBQUFDLFVBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRztBQUFFO0FBQUEsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFBLE1BQXNCLEtBQUk7QUFBZ0I7QUFBQSxJQUFLO0FBQUEsRUFBQyxHQUFFLEtBQUcsV0FBVTtBQUFDLFFBQUcsS0FBSyxNQUFNLE9BQU0sSUFBSSxFQUFFLHlDQUF5QztBQUFFLFFBQUksSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTSxJQUFJLEVBQUUsMENBQTBDO0FBQUUsV0FBTyxFQUFFLE1BQUssSUFBRyxRQUFPLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEVBQUMsUUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsUUFBRyxFQUFFLFNBQU8saUJBQWdCO0FBQUMsVUFBRyxFQUFFLE9BQU0sSUFBSSxFQUFFLCtCQUErQixFQUFFLElBQUksa0NBQWtDO0FBQUUsYUFBTyxFQUFFO0FBQUEsSUFBTztBQUFDLFFBQUcsQ0FBQyxFQUFFLE9BQU0sSUFBSSxFQUFFLCtCQUErQixFQUFFLElBQUkseUJBQXlCO0FBQUUsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFPO0FBQUEsTUFBRSxLQUFJO0FBQWdCLFlBQUcsRUFBRSxjQUFZLEVBQUUsTUFBTSxhQUFZLEVBQUUsZ0JBQWMsRUFBRSxNQUFNLGVBQWMsRUFBRSxNQUFNLGdCQUFjLEVBQUUsTUFBTSxlQUFjLEVBQUUsTUFBTSxnQkFBYyxLQUFLLEdBQUUsTUFBTSxlQUFhLEVBQUUsTUFBTTtBQUFhLFlBQUcsRUFBRSxNQUFNLCtCQUE2QixLQUFLLEdBQUUsTUFBTSw4QkFBNEIsRUFBRSxNQUFNO0FBQTRCLFlBQUcsRUFBRSxNQUFNLDJCQUF5QixLQUFLLEdBQUUsTUFBTSwwQkFBd0IsRUFBRSxNQUFNO0FBQXdCLFlBQUcsRUFBRSxNQUFNLG1CQUFpQixLQUFLLEdBQUUsTUFBTSxrQkFBZ0IsRUFBRSxNQUFNO0FBQWdCLGVBQU87QUFBQSxNQUFFLEtBQUk7QUFBc0IsZUFBTyxFQUFFLFFBQVEsS0FBSyxFQUFDLEdBQUcsRUFBRSxjQUFhLENBQUMsR0FBRTtBQUFBLE1BQUUsS0FBSSx1QkFBc0I7QUFBQyxZQUFJLElBQUUsRUFBRSxRQUFRLEdBQUcsRUFBRSxLQUFLO0FBQUUsZ0JBQU8sRUFBRSxNQUFNLE1BQUs7QUFBQSxVQUFDLEtBQUksY0FBYTtBQUFDLGdCQUFHLEdBQUcsU0FBTyxPQUFPLEdBQUUsUUFBUSxFQUFFLEtBQUssSUFBRSxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUUsUUFBTSxNQUFJLEVBQUUsTUFBTSxLQUFJO0FBQUU7QUFBQSxVQUFLO0FBQUEsVUFBQyxLQUFJLG1CQUFrQjtBQUFDLGdCQUFHLEdBQUcsU0FBTyxPQUFPLEdBQUUsUUFBUSxFQUFFLEtBQUssSUFBRSxFQUFDLEdBQUcsR0FBRSxXQUFVLENBQUMsR0FBRyxFQUFFLGFBQVcsQ0FBQyxHQUFFLEVBQUUsTUFBTSxRQUFRLEVBQUM7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDLEtBQUksb0JBQW1CO0FBQUMsZ0JBQUcsS0FBRyxHQUFHLENBQUMsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxFQUFFLEtBQUc7QUFBRyxtQkFBRyxFQUFFLE1BQU07QUFBYSxrQkFBSSxJQUFFLEVBQUMsR0FBRyxFQUFDO0FBQUUsa0JBQUcsT0FBTyxlQUFlLEdBQUUsSUFBRyxFQUFDLE9BQU0sR0FBRSxZQUFXLE9BQUcsVUFBUyxLQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTSxHQUFHLENBQUM7QUFBRSxnQkFBRSxRQUFRLEVBQUUsS0FBSyxJQUFFO0FBQUEsWUFBQztBQUFDO0FBQUEsVUFBSztBQUFBLFVBQUMsS0FBSSxrQkFBaUI7QUFBQyxnQkFBRyxHQUFHLFNBQU8sV0FBVyxHQUFFLFFBQVEsRUFBRSxLQUFLLElBQUUsRUFBQyxHQUFHLEdBQUUsVUFBUyxFQUFFLFdBQVMsRUFBRSxNQUFNLFNBQVE7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDLEtBQUksbUJBQWtCO0FBQUMsZ0JBQUcsR0FBRyxTQUFPLFdBQVcsR0FBRSxRQUFRLEVBQUUsS0FBSyxJQUFFLEVBQUMsR0FBRyxHQUFFLFdBQVUsRUFBRSxNQUFNLFVBQVM7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDO0FBQVEsZUFBRyxFQUFFLEtBQUs7QUFBQSxRQUFDO0FBQUMsZUFBTztBQUFBLE1BQUM7QUFBQSxNQUFDLEtBQUk7QUFBcUIsZUFBTztBQUFBLElBQUM7QUFBQSxFQUFDLEdBQUUsT0FBTyxjQUFjLElBQUc7QUFBQyxRQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRyxXQUFPLEtBQUssR0FBRyxlQUFjLENBQUMsTUFBSTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU07QUFBRSxVQUFHLEVBQUUsR0FBRSxRQUFRLENBQUM7QUFBQSxVQUFPLEdBQUUsS0FBSyxDQUFDO0FBQUEsSUFBQyxDQUFDLEdBQUUsS0FBSyxHQUFHLE9BQU0sTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLFFBQVEsTUFBTTtBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEtBQUssR0FBRyxTQUFRLENBQUMsTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLE9BQU8sQ0FBQztBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEtBQUssR0FBRyxTQUFRLENBQUMsTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLE9BQU8sQ0FBQztBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEVBQUMsTUFBSyxZQUFTO0FBQUMsVUFBRyxDQUFDLEVBQUUsUUFBTztBQUFDLFlBQUcsRUFBRSxRQUFNLEVBQUMsT0FBTSxRQUFPLE1BQUssS0FBRTtBQUFFLGVBQU8sSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJLEVBQUUsS0FBSyxFQUFDLFNBQVEsR0FBRSxRQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksSUFBRSxFQUFDLE9BQU0sR0FBRSxNQUFLLE1BQUUsSUFBRSxFQUFDLE9BQU0sUUFBTyxNQUFLLEtBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFNLEVBQUMsT0FBTSxFQUFFLE1BQU0sR0FBRSxNQUFLLE1BQUU7QUFBQSxJQUFDLEdBQUUsUUFBTyxZQUFTO0FBQUMsYUFBTyxLQUFLLE1BQU0sR0FBRSxFQUFDLE9BQU0sUUFBTyxNQUFLLEtBQUU7QUFBQSxJQUFDLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxtQkFBa0I7QUFBQyxXQUFPLElBQUksR0FBRyxLQUFLLE9BQU8sYUFBYSxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssVUFBVSxFQUFFLGlCQUFpQjtBQUFBLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxLQUFLLHdCQUF1QixFQUFDLE1BQUssR0FBRSxHQUFHLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQyxJQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxXQUFXLHdCQUF1QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxPQUFPLHlCQUF5QixDQUFDLElBQUcsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxXQUFVLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFFBQVEsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxZQUFZLE9BQU0sSUFBSSxFQUFFLHlEQUF5RCxFQUFFLGlCQUFpQixNQUFNLEVBQUUsRUFBRSxFQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsSUFBSSxFQUFFLGFBQVksRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxRQUFPLHFCQUFvQixHQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUUsUUFBTyxNQUFHLGtCQUFpQixLQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRSxNQUFJLEdBQUcsYUFBYSxFQUFFLFVBQVMsRUFBRSxVQUFVLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsY0FBYTtBQUFDLFVBQU0sR0FBRyxTQUFTO0FBQUUsU0FBSyxVQUFRLElBQUksR0FBRyxLQUFLLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBRSxTQUFTLEdBQUcsU0FBUSxLQUFLLGNBQWMsRUFBRSxLQUFLLGlEQUFpRCxHQUFHLEVBQUUsS0FBSyxDQUFDO0FBQUEsNkhBQ3g2bkI7QUFBRSxRQUFHLEdBQUcsU0FBUyxFQUFFLEtBQUssS0FBRyxFQUFFLFlBQVUsRUFBRSxTQUFTLFNBQU8sVUFBVSxTQUFRLEtBQUsscUJBQXFCLEVBQUUsS0FBSyxvTkFBb047QUFBRSxRQUFJLElBQUUsS0FBSyxRQUFRLFNBQVM7QUFBUSxRQUFHLENBQUMsRUFBRSxVQUFRLEtBQUcsTUFBSztBQUFDLFVBQUksSUFBRSxHQUFHLEVBQUUsS0FBSyxLQUFHO0FBQU8sVUFBRSxLQUFLLFFBQVEsNkJBQTZCLEVBQUUsWUFBVyxDQUFDO0FBQUEsSUFBQztBQUFDLFFBQUksSUFBRSxHQUFHLEVBQUUsT0FBTSxFQUFFLFFBQVE7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLGdCQUFlLEVBQUMsTUFBSyxHQUFFLFNBQVEsS0FBRyxLQUFPLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUUsUUFBTyxFQUFFLFVBQVEsTUFBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssT0FBTyxHQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxFQUFDLFFBQU8sS0FBSyxRQUFRLFVBQVEsUUFBTyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFdBQU8sR0FBRyxjQUFjLE1BQUssR0FBRSxHQUFFLEVBQUMsUUFBTyxLQUFLLFFBQVEsVUFBUSxRQUFPLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxRQUFRLEtBQUssNkJBQTRCLEVBQUMsTUFBSyxHQUFFLEdBQUcsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUMsY0FBYSxzQkFBcUIsbUJBQWtCLHNCQUFxQixzQkFBcUIsc0JBQXFCLDJCQUEwQixzQkFBcUIsc0JBQXFCLHNCQUFxQiw0QkFBMkIsbUJBQWtCLDBCQUF5QixxQkFBb0IsY0FBYSxtQkFBa0IsY0FBYSxtQkFBa0IsNEJBQTJCLHVCQUFzQiw4QkFBNkIsdUJBQXNCLDJCQUEwQix1QkFBc0IsNkJBQTRCLHVCQUFzQixtQkFBa0IsbUJBQWtCLDBCQUF5QixtQkFBa0IscUJBQW9CLG1CQUFrQiw0QkFBMkIsa0JBQWlCO0FBQW50QixJQUFxdEIsS0FBRyxDQUFDLHlCQUF3QixpQkFBaUI7QUFBRSxHQUFHLFVBQVE7QUFBRyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBRyxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBRyxTQUFTLEtBQUcsT0FBSyxFQUFDLGtCQUFpQixHQUFHLFNBQVMsRUFBQyxJQUFFLE9BQU0sR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsY0FBYSxJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBRyxTQUFTLEtBQUcsT0FBSyxFQUFDLGtCQUFpQixHQUFHLFNBQVMsRUFBQyxJQUFFLE9BQU0sR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJO0FBQUosSUFBTztBQUFQLElBQVU7QUFBVixJQUFhO0FBQWIsSUFBZ0IsS0FBRztBQUFuQixJQUFrQyxLQUFHO0FBQW1CLElBQU0sS0FBTixNQUFRO0FBQUEsRUFBQyxJQUFJLGNBQWE7QUFBQyxXQUFPLEtBQUssV0FBVztBQUFBLEVBQVE7QUFBQSxFQUFDLFlBQVksRUFBQyxTQUFRLElBQUUsR0FBRyxvQkFBb0IsR0FBRSxRQUFPLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBQyxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUcsR0FBRyxJQUFJLElBQUksR0FBRSxLQUFLLG9CQUFrQixvQkFBSSxXQUFRLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxNQUFJLE9BQU8sS0FBRSxFQUFFLFdBQVMsT0FBSyxPQUFLLEdBQUcsbUJBQW1CLEtBQUc7QUFBSyxRQUFHLE1BQUksT0FBTyxLQUFFLEVBQUUsV0FBUyxPQUFLLE9BQUssR0FBRyxzQkFBc0IsS0FBRztBQUFLLFFBQUcsRUFBRSxXQUFTLFNBQU8sRUFBRSxlQUFhLFFBQU0sRUFBRSxVQUFRLE1BQU0sT0FBTSxVQUFVLDREQUE0RDtBQUFFLFFBQUksSUFBRSxFQUFDLFFBQU8sR0FBRSxXQUFVLEdBQUUsR0FBRyxHQUFFLFNBQVEsS0FBRyw0QkFBMkI7QUFBRSxRQUFHLENBQUMsRUFBRSwyQkFBeUIsR0FBRyxFQUFFLE9BQU0sSUFBSSxFQUFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FPOXdGO0FBQUUsU0FBSyxVQUFRLEVBQUUsU0FBUSxLQUFLLHFCQUFtQixFQUFFLHVCQUFxQixDQUFDLENBQUMsR0FBRSxLQUFLLFVBQVEsRUFBRSxXQUFTLEdBQUcsaUJBQWdCLEtBQUssU0FBTyxFQUFFLFVBQVE7QUFBUSxRQUFJLElBQUU7QUFBTyxTQUFLLFdBQVMsR0FBRSxLQUFLLFdBQVMsR0FBRyxFQUFFLFVBQVMsMEJBQXlCLElBQUksS0FBRyxHQUFHLEdBQUcsZUFBZSxHQUFFLGdDQUErQixJQUFJLEtBQUcsR0FBRSxLQUFLLGVBQWEsRUFBRSxjQUFhLEtBQUssYUFBVyxFQUFFLGNBQVksR0FBRSxLQUFLLFFBQU0sRUFBRSxTQUFPLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxJQUFHLEdBQUc7QUFBRSxRQUFJLElBQUUsR0FBRywwQkFBMEI7QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsQ0FBQztBQUFFLGVBQVEsS0FBSyxFQUFFLE1BQU07QUFBQSxDQUNsZSxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUUsUUFBUSxHQUFHO0FBQUUsWUFBRyxLQUFHLEVBQUUsR0FBRSxFQUFFLFVBQVUsR0FBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUUsRUFBRSxVQUFVLElBQUUsQ0FBQyxFQUFFLEtBQUs7QUFBQSxNQUFDO0FBQUMsUUFBRSxpQkFBZSxFQUFDLEdBQUcsR0FBRSxHQUFHLEVBQUUsZUFBYztBQUFBLElBQUM7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFPLFFBQUcsT0FBTyxFQUFFLFFBQU8sT0FBTyxFQUFFLHFCQUFvQixLQUFLLFdBQVMsR0FBRSxLQUFLLFNBQU8sT0FBTyxNQUFJLFdBQVMsSUFBRSxNQUFLLEtBQUssWUFBVSxHQUFFLEdBQUU7QUFBQyxVQUFHLEtBQUssYUFBVyxHQUFFLENBQUMsS0FBSyxzQkFBb0IsRUFBRSxRQUFRLE1BQUssVUFBUSxFQUFFO0FBQUEsSUFBTyxXQUFTLEtBQUssYUFBVyxFQUFDLFVBQVMsTUFBSyxZQUFXLE1BQUssWUFBVyxNQUFLLE9BQU0sTUFBSyxjQUFhLENBQUMsRUFBQyxHQUFFLEtBQUssVUFBUSxRQUFNLEtBQUssYUFBVyxNQUFLO0FBQUMsVUFBSSxJQUFFLEVBQUUsZUFBYTtBQUFLLFVBQUcsRUFBRSxNQUFLLFdBQVcsV0FBUyxHQUFFLEtBQUssV0FBVyxhQUFXLEtBQUssZ0JBQWdCLENBQUM7QUFBQSxlQUFVLEVBQUUsVUFBUSxNQUFLO0FBQUMsWUFBSSxJQUFFLEdBQUcsRUFBRSxRQUFPLEtBQUssMkJBQTJCLENBQUM7QUFBRSxhQUFLLFdBQVcsV0FBUyxFQUFFLFVBQVMsS0FBSyxXQUFXLGFBQVcsS0FBSyxnQkFBZ0IsRUFBRSxRQUFRLEdBQUUsS0FBSyxXQUFXLGVBQWEsRUFBRSxjQUFhLEtBQUssd0JBQXdCLEVBQUUsT0FBTztBQUFBLE1BQUMsV0FBUyxFQUFFLFdBQVMsS0FBSyxNQUFLLFdBQVcsYUFBVyxLQUFLLDJCQUEyQixFQUFFLE9BQU87QUFBQSxVQUFPLE1BQUssV0FBVyxhQUFXLEtBQUssMkJBQTJCO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLHdCQUF3QixHQUFFO0FBQUMsUUFBRyxDQUFDLEVBQUU7QUFBTyxRQUFJLElBQUUsRUFBRSxRQUFRLFFBQU8sRUFBRTtBQUFFLFFBQUcsS0FBSyxXQUFXLFVBQVEsR0FBRSxDQUFDLEtBQUssbUJBQW1CLE1BQUssVUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLDZCQUE0QjtBQUFDLFdBQU0sRUFBQyxTQUFRLEtBQUssU0FBUSxPQUFNLEtBQUssT0FBTSxXQUFVLEtBQUssYUFBYSxHQUFFLG1CQUFrQixDQUFDLE1BQUk7QUFBQyxTQUFHLElBQUksRUFBRSxNQUFNLCtDQUE4QyxDQUFDO0FBQUEsSUFBQyxHQUFFLGlCQUFnQixDQUFDLE1BQUk7QUFBQyxTQUFHLElBQUksRUFBRSxLQUFLLENBQUM7QUFBQSxJQUFDLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxnQkFBZ0IsR0FBRTtBQUFDLFdBQU8sSUFBSSxHQUFHLEdBQUUsQ0FBQyxNQUFJO0FBQUMsU0FBRyxJQUFJLEVBQUUsTUFBTSx1REFBc0QsQ0FBQztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFFBQUksSUFBRSxpQkFBZ0IsS0FBRyxZQUFXLEtBQUcsYUFBWSxHQUFFLElBQUUsWUFBVyxLQUFHLGVBQWMsS0FBRyxHQUFFLElBQUUsRUFBQyxHQUFHLEtBQUssVUFBUyxHQUFHLEtBQUsscUJBQW1CLEVBQUMsU0FBUSxLQUFLLFFBQU8sSUFBRSxDQUFDLEdBQUUsWUFBVyxLQUFLLFlBQVcsU0FBUSxLQUFLLFNBQVEsUUFBTyxLQUFLLFFBQU8sVUFBUyxLQUFLLFVBQVMsT0FBTSxLQUFLLE9BQU0sY0FBYSxLQUFLLGNBQWEsUUFBTyxLQUFLLFFBQU8sV0FBVSxLQUFLLFdBQVUsYUFBWSxLQUFLLGFBQVksR0FBRyxJQUFFLEVBQUMsYUFBWSxRQUFPLFFBQU8sUUFBTyxTQUFRLE9BQU0sSUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLFFBQU8sSUFBRSxTQUFPLEtBQUssWUFBVyxxQkFBb0IsYUFBWSxJQUFFLE9BQUcsS0FBSyxtQkFBa0I7QUFBRSxXQUFPLElBQUksS0FBSyxZQUFZLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLDJCQUEyQixHQUFFO0FBQUMsUUFBRztBQUFDLFVBQUksSUFBRSxNQUFNLEdBQUcsS0FBSywyQkFBMkIsR0FBRSxDQUFDO0FBQUUsVUFBRyxFQUFFLE1BQUssV0FBVyxXQUFTLEVBQUUsVUFBUyxLQUFLLFdBQVcsYUFBVyxLQUFLLGdCQUFnQixFQUFFLFFBQVEsR0FBRSxLQUFLLFdBQVcsZUFBYSxFQUFFLGNBQWEsS0FBSyx3QkFBd0IsRUFBRSxPQUFPO0FBQUEsZUFBVSxLQUFHLEtBQUssT0FBTSxJQUFJLEVBQUUsWUFBWSxDQUFDLG9EQUFvRCxDQUFDLGVBQWU7QUFBQSxJQUFDLFNBQU8sR0FBRTtBQUFDLFdBQUssV0FBVyxRQUFNO0FBQUEsSUFBQyxVQUFDO0FBQVEsV0FBSyxXQUFXLGFBQVc7QUFBQSxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsZUFBYztBQUFDLFdBQU8sS0FBSyxTQUFTO0FBQUEsRUFBWTtBQUFBLEVBQUMsZ0JBQWdCLEVBQUMsUUFBTyxHQUFFLE9BQU0sRUFBQyxHQUFFO0FBQUMsUUFBRyxFQUFFLElBQUksV0FBVyxLQUFHLEVBQUUsSUFBSSxlQUFlLEVBQUU7QUFBTyxRQUFHLEtBQUssV0FBVyxNQUFNLE9BQU0sS0FBSyxXQUFXO0FBQU0sUUFBRyxLQUFLLFdBQVcsY0FBWSxLQUFLLFdBQVcsV0FBVztBQUFPLFFBQUcsS0FBSyxVQUFRLEVBQUUsSUFBSSxXQUFXLEVBQUU7QUFBTyxRQUFHLEVBQUUsSUFBSSxXQUFXLEVBQUU7QUFBTyxRQUFHLEtBQUssYUFBVyxFQUFFLElBQUksZUFBZSxFQUFFO0FBQU8sUUFBRyxFQUFFLElBQUksZUFBZSxFQUFFO0FBQU8sVUFBTSxNQUFNLDBNQUEwTTtBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLGtCQUFrQixJQUFJLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxLQUFFLEVBQUMsZ0JBQWUsT0FBRyxrQkFBaUIsTUFBRSxHQUFFLEtBQUssa0JBQWtCLElBQUksR0FBRSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sWUFBWSxHQUFFO0FBQUMsUUFBRyxLQUFLLFdBQVcsV0FBVyxPQUFNLEtBQUssV0FBVztBQUFXLFFBQUcsS0FBSyxXQUFXLE1BQU07QUFBTyxRQUFHLEtBQUssV0FBVyxjQUFZLEtBQUssVUFBUSxNQUFLO0FBQUMsVUFBSSxJQUFFLE1BQU0sS0FBSyxXQUFXLFdBQVcsU0FBUztBQUFFLGFBQU8sS0FBSyxXQUFXLENBQUMsRUFBRSxpQkFBZSxNQUFHLEVBQUUsQ0FBQyxFQUFDLGVBQWMsVUFBVSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFDLFdBQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsR0FBRSxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUMsUUFBRyxLQUFLLFVBQVEsS0FBSztBQUFPLFdBQU8sRUFBRSxDQUFDLEVBQUMsYUFBWSxLQUFLLE9BQU0sQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQyxRQUFHLEtBQUssYUFBVyxLQUFLO0FBQU8sV0FBTyxFQUFFLENBQUMsRUFBQyxlQUFjLFVBQVUsS0FBSyxTQUFTLEdBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsZUFBZSxHQUFFO0FBQUMsV0FBTyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxlQUFjO0FBQUMsV0FBTSxHQUFHLEtBQUssWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUFBLEVBQUU7QUFBQSxFQUFDLHdCQUF1QjtBQUFDLFdBQU0sd0JBQXdCLEdBQUcsQ0FBQztBQUFBLEVBQUU7QUFBQSxFQUFDLGdCQUFnQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxHQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQyxFQUFFLE1BQUssSUFBRyxLQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksS0FBRyxLQUFHLEtBQUssU0FBUSxJQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUksSUFBSSxDQUFDLElBQUUsSUFBSSxJQUFJLEtBQUcsRUFBRSxTQUFTLEdBQUcsS0FBRyxFQUFFLFdBQVcsR0FBRyxJQUFFLEVBQUUsTUFBTSxDQUFDLElBQUUsRUFBRSxHQUFFLElBQUUsS0FBSyxhQUFhLEdBQUUsSUFBRSxPQUFPLFlBQVksRUFBRSxZQUFZO0FBQUUsUUFBRyxDQUFDLEdBQUcsQ0FBQyxLQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBRSxFQUFDLEdBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFDO0FBQUUsUUFBRyxPQUFPLE1BQUksWUFBVSxLQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxHQUFFLFNBQU8sS0FBSyxlQUFlLENBQUM7QUFBRSxXQUFPLEVBQUUsU0FBUztBQUFBLEVBQUM7QUFBQSxFQUFDLDhCQUE4QixHQUFFO0FBQUMsUUFBRyxPQUFLLElBQUUsUUFBTyxJQUFJLE9BQU0sSUFBSSxFQUFFLDRLQUE0SztBQUFFLFdBQU87QUFBQSxFQUFNO0FBQUEsRUFBQyxNQUFNLGVBQWUsR0FBRTtBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBZSxHQUFFLEVBQUMsS0FBSSxHQUFFLFNBQVEsRUFBQyxHQUFFO0FBQUMsUUFBRyxLQUFLLFdBQVcsY0FBWSxLQUFLLFVBQVEsTUFBSztBQUFDLFVBQUksSUFBRSxFQUFFLG1CQUFtQixVQUFRLEVBQUUsVUFBUSxJQUFJLFFBQVEsRUFBRSxPQUFPO0FBQUUsZUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsWUFBWSxFQUFFLEtBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUUsSUFBSSxHQUFFLENBQUM7QUFBRSxVQUFHLENBQUMsRUFBRSxJQUFJLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsU0FBUyxFQUFFLEVBQUUsR0FBRSxPQUFPLGtCQUFpQixFQUFFO0FBQUUsUUFBRSxVQUFRO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLGNBQWMsT0FBTSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxjQUFjLFFBQU8sR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssY0FBYyxTQUFRLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLGNBQWMsT0FBTSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxjQUFjLFVBQVMsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsY0FBYyxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxRQUFRLFFBQVEsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUk7QUFBQyxhQUFNLEVBQUMsUUFBTyxHQUFFLE1BQUssR0FBRSxHQUFHLEVBQUM7QUFBQSxJQUFDLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQVEsR0FBRSxJQUFFLE1BQUs7QUFBQyxXQUFPLElBQUksR0FBRyxNQUFLLEtBQUssWUFBWSxHQUFFLEdBQUUsTUFBTSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLE1BQU0sR0FBRSxJQUFFLEVBQUUsY0FBWSxLQUFLO0FBQVcsUUFBRyxLQUFHLEtBQUssS0FBRSxHQUFFLEtBQUssa0JBQWtCLE9BQU8sQ0FBQztBQUFFLFVBQU0sS0FBSyxlQUFlLENBQUM7QUFBRSxRQUFHLEVBQUMsS0FBSSxHQUFFLEtBQUksR0FBRSxTQUFRLEVBQUMsSUFBRSxNQUFNLEtBQUssYUFBYSxHQUFFLEVBQUMsWUFBVyxJQUFFLEVBQUMsQ0FBQztBQUFFLFVBQU0sS0FBSyxlQUFlLEdBQUUsRUFBQyxLQUFJLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBRSxRQUFJLElBQUUsVUFBUSxLQUFLLE9BQU8sSUFBRSxXQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsU0FBUyxHQUFFLEdBQUcsR0FBRSxJQUFFLE1BQUksU0FBTyxLQUFHLGNBQWMsQ0FBQyxJQUFHLElBQUUsS0FBSyxJQUFJO0FBQUUsUUFBRyxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBb0IsR0FBRyxFQUFDLHFCQUFvQixHQUFFLFFBQU8sRUFBRSxRQUFPLEtBQUksR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFRLFFBQVEsT0FBTSxJQUFJO0FBQUcsUUFBSSxJQUFFLElBQUksbUJBQWdCLElBQUUsTUFBTSxLQUFLLGlCQUFpQixHQUFFLEdBQUUsR0FBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUUsSUFBRSxLQUFLLElBQUk7QUFBRSxRQUFHLGFBQWEsV0FBVyxPQUFNO0FBQUMsVUFBSSxJQUFFLGFBQWEsQ0FBQztBQUFzQixVQUFHLEVBQUUsUUFBUSxRQUFRLE9BQU0sSUFBSTtBQUFHLFVBQUksSUFBRSxHQUFHLENBQUMsS0FBRyxlQUFlLEtBQUssT0FBTyxDQUFDLEtBQUcsV0FBVSxJQUFFLE9BQU8sRUFBRSxLQUFLLElBQUUsR0FBRztBQUFFLFVBQUcsRUFBRSxRQUFPLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDLGdCQUFnQixJQUFFLGNBQVksUUFBUSxNQUFNLENBQUMsRUFBRSxHQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixJQUFFLGNBQVksUUFBUSxLQUFLLENBQUMsS0FBSSxHQUFHLEVBQUMscUJBQW9CLEdBQUUsS0FBSSxHQUFFLFlBQVcsSUFBRSxHQUFFLFNBQVEsRUFBRSxRQUFPLENBQUMsQ0FBQyxHQUFFLEtBQUssYUFBYSxHQUFFLEdBQUUsS0FBRyxDQUFDO0FBQUUsVUFBRyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsSUFBRSxjQUFZLFFBQVEsZ0NBQWdDLEdBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLElBQUUsY0FBWSxRQUFRLGtDQUFpQyxHQUFHLEVBQUMscUJBQW9CLEdBQUUsS0FBSSxHQUFFLFlBQVcsSUFBRSxHQUFFLFNBQVEsRUFBRSxRQUFPLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBTSxJQUFJO0FBQUcsWUFBTSxJQUFJLEdBQUcsRUFBQyxPQUFNLEVBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQUksTUFBSSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRSxDQUFDLE1BQUksT0FBSyxJQUFFLE9BQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFFLElBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFHLGNBQVksUUFBUSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sSUFBRSxDQUFDO0FBQUssUUFBRyxDQUFDLEVBQUUsSUFBRztBQUFDLFVBQUksSUFBRSxNQUFNLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxVQUFHLEtBQUcsR0FBRTtBQUFDLFlBQUksS0FBRyxhQUFhLENBQUM7QUFBc0IsZUFBTyxNQUFNLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRSxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFJLEdBQUcsRUFBQyxxQkFBb0IsR0FBRSxLQUFJLEVBQUUsS0FBSSxRQUFPLEVBQUUsUUFBTyxTQUFRLEVBQUUsU0FBUSxZQUFXLElBQUUsRUFBQyxDQUFDLENBQUMsR0FBRSxLQUFLLGFBQWEsR0FBRSxHQUFFLEtBQUcsR0FBRSxFQUFFLE9BQU87QUFBQSxNQUFDO0FBQUMsVUFBSSxJQUFFLElBQUUsZ0NBQThCO0FBQXVCLFNBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQUUsVUFBSSxJQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQUssR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxJQUFFLFNBQU87QUFBRSxZQUFNLEdBQUcsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUksR0FBRyxFQUFDLHFCQUFvQixHQUFFLEtBQUksRUFBRSxLQUFJLFFBQU8sRUFBRSxRQUFPLFNBQVEsRUFBRSxTQUFRLFNBQVEsR0FBRSxZQUFXLEtBQUssSUFBSSxJQUFFLEVBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBSyxnQkFBZ0IsRUFBRSxRQUFPLEdBQUUsR0FBRSxFQUFFLE9BQU87QUFBQSxJQUFDO0FBQUMsV0FBTyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRSxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxvQkFBbUIsR0FBRyxFQUFDLHFCQUFvQixHQUFFLEtBQUksRUFBRSxLQUFJLFFBQU8sRUFBRSxRQUFPLFNBQVEsRUFBRSxTQUFRLFlBQVcsSUFBRSxFQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxZQUFXLEdBQUUsY0FBYSxHQUFFLHFCQUFvQixHQUFFLFdBQVUsRUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssZUFBZSxHQUFFLEtBQUcsVUFBUyxJQUFFLEVBQUUsS0FBSyxDQUFDLE9BQUssRUFBQyxRQUFPLE9BQU0sTUFBSyxHQUFFLEdBQUcsRUFBQyxFQUFFLElBQUUsRUFBQyxRQUFPLE9BQU0sTUFBSyxHQUFFLEdBQUcsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsZUFBZSxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsTUFBSyxNQUFNO0FBQUUsV0FBTyxJQUFJLEdBQUcsTUFBSyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLGlCQUFpQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxRQUFPLEdBQUUsR0FBRyxFQUFDLElBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLFdBQVcsQ0FBQztBQUFFLFFBQUcsRUFBRSxHQUFFLGlCQUFpQixTQUFRLEdBQUUsRUFBQyxNQUFLLEtBQUUsQ0FBQztBQUFFLFFBQUksSUFBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLElBQUUsV0FBVyxrQkFBZ0IsRUFBRSxnQkFBZ0IsV0FBVyxrQkFBZ0IsT0FBTyxFQUFFLFNBQU8sWUFBVSxFQUFFLFNBQU8sUUFBTSxPQUFPLGlCQUFpQixFQUFFLE1BQUssSUFBRSxFQUFDLFFBQU8sRUFBRSxRQUFPLEdBQUcsSUFBRSxFQUFDLFFBQU8sT0FBTSxJQUFFLENBQUMsR0FBRSxRQUFPLE9BQU0sR0FBRyxFQUFDO0FBQUUsUUFBRyxFQUFFLEdBQUUsU0FBTyxFQUFFLFlBQVk7QUFBRSxRQUFHO0FBQUMsYUFBTyxNQUFNLEtBQUssTUFBTSxLQUFLLFFBQU8sR0FBRSxDQUFDO0FBQUEsSUFBQyxVQUFDO0FBQVEsbUJBQWEsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFlBQVksR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUUsUUFBRyxFQUFFLFdBQVMsT0FBSyxLQUFLLFdBQVcsY0FBWSxFQUFFLGtCQUFnQixDQUFDLEVBQUUsaUJBQWlCLFFBQU8sRUFBRSxtQkFBaUIsTUFBRyxLQUFLLFdBQVcsV0FBVyxXQUFXLEdBQUU7QUFBRyxRQUFJLElBQUUsRUFBRSxRQUFRLElBQUksZ0JBQWdCO0FBQUUsUUFBRyxNQUFJLE9BQU8sUUFBTTtBQUFHLFFBQUcsTUFBSSxRQUFRLFFBQU07QUFBRyxRQUFHLEVBQUUsV0FBUyxJQUFJLFFBQU07QUFBRyxRQUFHLEVBQUUsV0FBUyxJQUFJLFFBQU07QUFBRyxRQUFHLEVBQUUsV0FBUyxJQUFJLFFBQU07QUFBRyxRQUFHLEVBQUUsVUFBUSxJQUFJLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFBRTtBQUFBLEVBQUMsTUFBTSxhQUFhLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFJLEdBQUUsSUFBRSxHQUFHLElBQUksZ0JBQWdCO0FBQUUsUUFBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLFdBQVcsQ0FBQztBQUFFLFVBQUcsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUU7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLEdBQUcsSUFBSSxhQUFhO0FBQUUsUUFBRyxLQUFHLENBQUMsR0FBRTtBQUFDLFVBQUksSUFBRSxXQUFXLENBQUM7QUFBRSxVQUFHLENBQUMsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFFLElBQUU7QUFBQSxVQUFVLEtBQUUsS0FBSyxNQUFNLENBQUMsSUFBRSxLQUFLLElBQUk7QUFBQSxJQUFDO0FBQUMsUUFBRyxNQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsRUFBRSxjQUFZLEtBQUs7QUFBVyxVQUFFLEtBQUssbUNBQW1DLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPLE1BQU0sR0FBRyxDQUFDLEdBQUUsS0FBSyxZQUFZLEdBQUUsSUFBRSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxtQ0FBbUMsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUssSUFBSSxNQUFJLEtBQUssSUFBSSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFFLEtBQUssT0FBTyxJQUFFO0FBQUssV0FBTyxJQUFFLElBQUU7QUFBQSxFQUFJO0FBQUEsRUFBQyw2QkFBNkIsR0FBRSxHQUFFO0FBQUMsUUFBRyxPQUFRLElBQUUsUUFBTyxPQUFRLEtBQUcsUUFBTSxJQUFFLEVBQUUsT0FBTSxJQUFJLEVBQUUsc0tBQXNLO0FBQUUsV0FBTztBQUFBLEVBQU07QUFBQSxFQUFDLE1BQU0sYUFBYSxHQUFFLEVBQUMsWUFBVyxJQUFFLEVBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBQyxHQUFHLEVBQUMsR0FBRSxFQUFDLFFBQU8sR0FBRSxNQUFLLEdBQUUsT0FBTSxHQUFFLGdCQUFlLEVBQUMsSUFBRTtBQUFFLFFBQUcsS0FBSyxXQUFXLFdBQVcsT0FBTSxLQUFLLFdBQVc7QUFBVyxRQUFHLENBQUMsS0FBSyxzQkFBb0IsS0FBSyxXQUFXLFdBQVMsS0FBSyxZQUFVLEtBQUssV0FBVyxRQUFRLE1BQUssVUFBUSxLQUFLLFdBQVc7QUFBUSxRQUFJLElBQUUsS0FBSyxTQUFTLEdBQUUsR0FBRSxDQUFDO0FBQUUsUUFBRyxhQUFZLEVBQUUsSUFBRyxXQUFVLEVBQUUsT0FBTztBQUFFLE1BQUUsVUFBUSxFQUFFLFdBQVMsS0FBSztBQUFRLFFBQUcsRUFBQyxhQUFZLEdBQUUsTUFBSyxFQUFDLElBQUUsS0FBSyxVQUFVLEVBQUMsU0FBUSxFQUFDLENBQUMsR0FBRSxJQUFFLE1BQU0sS0FBSyxhQUFhLEVBQUMsU0FBUSxHQUFFLFFBQU8sR0FBRSxhQUFZLEdBQUUsWUFBVyxFQUFDLENBQUM7QUFBRSxXQUFNLEVBQUMsS0FBSSxFQUFDLFFBQU8sR0FBRSxTQUFRLEdBQUUsR0FBRyxFQUFFLFVBQVEsRUFBQyxRQUFPLEVBQUUsT0FBTSxHQUFFLEdBQUcsV0FBVyxrQkFBZ0IsYUFBYSxXQUFXLGtCQUFnQixFQUFDLFFBQU8sT0FBTSxHQUFFLEdBQUcsS0FBRyxFQUFDLE1BQUssRUFBQyxHQUFFLEdBQUcsS0FBSyxnQkFBYyxDQUFDLEdBQUUsR0FBRyxFQUFFLGdCQUFjLENBQUMsRUFBQyxHQUFFLEtBQUksR0FBRSxTQUFRLEVBQUUsUUFBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sYUFBYSxFQUFDLFNBQVEsR0FBRSxRQUFPLEdBQUUsYUFBWSxHQUFFLFlBQVcsRUFBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUM7QUFBRSxRQUFHLEtBQUsscUJBQW1CLE1BQUksT0FBTTtBQUFDLFVBQUcsQ0FBQyxFQUFFLGVBQWUsR0FBRSxpQkFBZSxLQUFLLHNCQUFzQjtBQUFFLFFBQUUsS0FBSyxpQkFBaUIsSUFBRSxFQUFFO0FBQUEsSUFBYztBQUFDLFFBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxFQUFDLFFBQU8sb0JBQW1CLGNBQWEsS0FBSyxhQUFhLEdBQUUsMkJBQTBCLE9BQU8sQ0FBQyxHQUFFLEdBQUcsRUFBRSxVQUFRLEVBQUMsdUJBQXNCLE9BQU8sS0FBSyxNQUFNLEVBQUUsVUFBUSxHQUFJLENBQUMsRUFBQyxJQUFFLENBQUMsR0FBRSxHQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUssU0FBUywwQkFBd0IsRUFBQyw2Q0FBNEMsT0FBTSxJQUFFLFFBQU8scUJBQW9CLGFBQVksR0FBRSxNQUFNLEtBQUssWUFBWSxDQUFDLEdBQUUsS0FBSyxTQUFTLGdCQUFlLEdBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxXQUFPLEtBQUssZ0JBQWdCLENBQUMsR0FBRSxFQUFFO0FBQUEsRUFBTTtBQUFBLEVBQUMsV0FBVyxHQUFFO0FBQUMsV0FBTSxNQUFJLEVBQUUsTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsRUFBQyxTQUFRLEVBQUMsTUFBSyxHQUFFLFNBQVEsRUFBQyxFQUFDLEdBQUU7QUFBQyxRQUFHLENBQUMsRUFBRSxRQUFNLEVBQUMsYUFBWSxRQUFPLE1BQUssT0FBTTtBQUFFLFFBQUksSUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUUsUUFBRyxZQUFZLE9BQU8sQ0FBQyxLQUFHLGFBQWEsZUFBYSxhQUFhLFlBQVUsT0FBTyxNQUFJLFlBQVUsRUFBRSxPQUFPLElBQUksY0FBYyxLQUFHLFdBQVcsUUFBTSxhQUFhLFdBQVcsUUFBTSxhQUFhLFlBQVUsYUFBYSxtQkFBaUIsV0FBVyxrQkFBZ0IsYUFBYSxXQUFXLGVBQWUsUUFBTSxFQUFDLGFBQVksUUFBTyxNQUFLLEVBQUM7QUFBQSxhQUFVLE9BQU8sTUFBSSxhQUFZLE9BQU8saUJBQWlCLEtBQUssT0FBTyxZQUFZLEtBQUssVUFBUyxLQUFJLE9BQU8sRUFBRSxTQUFPLFlBQVksUUFBTSxFQUFDLGFBQVksUUFBTyxNQUFLLEdBQUcsQ0FBQyxFQUFDO0FBQUEsYUFBVSxPQUFPLE1BQUksWUFBVSxFQUFFLE9BQU8sSUFBSSxjQUFjLE1BQUksb0NBQW9DLFFBQU0sRUFBQyxhQUFZLEVBQUMsZ0JBQWUsb0NBQW1DLEdBQUUsTUFBSyxLQUFLLGVBQWUsQ0FBQyxFQUFDO0FBQUEsUUFBTyxRQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssRUFBQyxNQUFLLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxLQUFHLElBQUcsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLFdBQVU7QUFBQyxTQUFPLEtBQUssWUFBVTtBQUEyQjtBQUFFLEdBQUcsWUFBVTtBQUFHLEdBQUcsZUFBYTtBQUFHLEdBQUcsWUFBVTtBQUFHLEdBQUcsa0JBQWdCO0FBQU8sR0FBRyxpQkFBZTtBQUFFLEdBQUcsV0FBUztBQUFHLEdBQUcscUJBQW1CO0FBQUcsR0FBRyw0QkFBMEI7QUFBRyxHQUFHLG9CQUFrQjtBQUFHLEdBQUcsZ0JBQWM7QUFBRyxHQUFHLGdCQUFjO0FBQUcsR0FBRyxpQkFBZTtBQUFHLEdBQUcsa0JBQWdCO0FBQUcsR0FBRyxzQkFBb0I7QUFBRyxHQUFHLHNCQUFvQjtBQUFHLEdBQUcsd0JBQXNCO0FBQUcsR0FBRywyQkFBeUI7QUFBRyxHQUFHLFNBQU87QUFBRyxJQUFNLEtBQU4sY0FBaUIsR0FBRTtBQUFBLEVBQUMsY0FBYTtBQUFDLFVBQU0sR0FBRyxTQUFTO0FBQUUsU0FBSyxjQUFZLElBQUksR0FBRyxJQUFJLEdBQUUsS0FBSyxXQUFTLElBQUksR0FBRyxJQUFJLEdBQUUsS0FBSyxTQUFPLElBQUksR0FBRyxJQUFJLEdBQUUsS0FBSyxPQUFLLElBQUksR0FBRyxJQUFJO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxjQUFZO0FBQUcsR0FBRyxXQUFTO0FBQUcsR0FBRyxTQUFPO0FBQUcsR0FBRyxPQUFLO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLGFBQWEsUUFBTSxJQUFFLE1BQU0sT0FBTyxDQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxhQUFhLFFBQU0sRUFBRSxVQUFRLE9BQU8sQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEtBQUcsT0FBTyxNQUFJLFlBQVUsVUFBUyxLQUFHLE9BQU8sRUFBRSxTQUFPLFNBQVMsUUFBTyxFQUFFO0FBQUs7QUFBTTtBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLENBQUMsTUFBSTtBQUFRO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQyxNQUFJO0FBQVE7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxHQUFHLENBQUM7QUFBRSxTQUFPLE1BQUksWUFBVSxNQUFJLFlBQVUsTUFBSSxXQUFTLE1BQUksYUFBVyxNQUFJO0FBQU87QUFBeUgsSUFBSTtBQUFKLElBQU8sS0FBRztBQUFLLFNBQVMsS0FBSTtBQUFDLE1BQUcsR0FBRyxRQUFPO0FBQUcsTUFBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLHNCQUFzQixFQUFFLFFBQU8sS0FBRyxNQUFLLEtBQUcsUUFBUSxRQUFRLEdBQUU7QUFBRyxNQUFJLFFBQUUsYUFBQUMsTUFBRyxHQUFHLEdBQUUsT0FBTztBQUFFLFNBQU8sU0FBRyxhQUFBQSxNQUFHLEdBQUUsV0FBTyxlQUFBQyxZQUFHLENBQUMsTUFBTSxHQUFFLFFBQVEsT0FBTyxNQUFNLG1CQUFtQixFQUFFO0FBQUEsQ0FDNXRhLEdBQUUsU0FBRyxpQkFBQUMsT0FBRyxHQUFFLEVBQUMsV0FBVSxLQUFFLENBQUMsRUFBRSxLQUFLLE1BQUk7QUFBQSxFQUFDLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxFQUFDLENBQUMsR0FBRTtBQUFFO0FBQUMsU0FBUyxLQUFJO0FBQUMsU0FBTyxHQUFHLEdBQUUsTUFBSTtBQUFJO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLE9BQUssS0FBSztBQUFPLE1BQUksSUFBRSxJQUFHLG9CQUFJLEtBQUssR0FBRSxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQUE7QUFDbkssS0FBRyxFQUFFLEtBQUssTUFBSTtBQUFDLFFBQUcsR0FBRyxzQkFBQUMsWUFBRyxJQUFHLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsS0FBSTtBQUFDLE9BQUssV0FBUyxJQUFJLE1BQUcsS0FBSyxPQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxFQUFFLE9BQU8sQ0FBQztBQUFFLFNBQU8sS0FBSyxPQUFLLEVBQUUsTUFBSztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEtBQUssU0FBUyxJQUFJLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUs7QUFBUyxNQUFHLGFBQWEsSUFBRztBQUFDLFFBQUksSUFBRSxFQUFFO0FBQVMsUUFBRyxDQUFDLE1BQUksRUFBRSxTQUFPLEtBQUcsRUFBRSxRQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFLLEVBQUUsRUFBRSxNQUFLO0FBQUssUUFBRSxLQUFLLFdBQVMsSUFBSSxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsU0FBTyxFQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBSyxPQUFLLEVBQUUsTUFBSztBQUFJO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBSyxXQUFTLElBQUksR0FBRyxDQUFDO0FBQUUsT0FBSyxPQUFLLEVBQUU7QUFBSTtBQUFDLEdBQUcsVUFBVSxRQUFNO0FBQUcsR0FBRyxVQUFVLFNBQU87QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsV0FBVTtBQUFDLE1BQUc7QUFBQyxRQUFJLElBQUUsR0FBRyxRQUFPLGdCQUFnQjtBQUFFLFdBQU8sRUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRTtBQUFBLEVBQUMsU0FBTyxHQUFFO0FBQUEsRUFBQztBQUFDLEVBQUU7QUFBekYsSUFBMkYsS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsS0FBRyxlQUFhLEdBQUcsSUFBRyxHQUFFLEdBQUUsRUFBQyxjQUFhLE1BQUcsWUFBVyxNQUFHLE9BQU0sR0FBRSxVQUFTLEtBQUUsQ0FBQztBQUFBLE1BQU8sR0FBRSxDQUFDLElBQUU7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLElBQUksS0FBRyxPQUFPO0FBQWQsSUFBd0IsS0FBRyxHQUFHO0FBQWUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLE1BQUcsRUFBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsTUFBSSxNQUFJLFVBQVEsRUFBRSxLQUFLLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsQ0FBQztBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUcsTUFBSSxJQUFFLElBQUcsSUFBRSxFQUFFO0FBQU8sU0FBTSxFQUFFLElBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLElBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQU8sUUFBRyxNQUFJLE9BQU8sS0FBRSxFQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFFBQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLElBQUcsSUFBRSxNQUFNLENBQUM7QUFBRSxTQUFNLEVBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxLQUFHLFFBQU0sT0FBTyxLQUFHO0FBQVE7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBcUIsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHO0FBQUU7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsT0FBTztBQUFkLElBQXdCLEtBQUcsR0FBRztBQUE5QixJQUE2QyxLQUFHLEdBQUc7QUFBbkQsSUFBd0UsS0FBRyxHQUFHLDJCQUFVO0FBQUMsU0FBTztBQUFT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QUFWLElBQXFCLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVU7QUFBRSxTQUFPLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFFLEVBQUU7QUFBTyxTQUFPLElBQUksRUFBRSxZQUFZLEdBQUUsRUFBRSxZQUFXLEVBQUUsTUFBTTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHLE9BQU87QUFBZCxJQUFxQixLQUFHLDJCQUFVO0FBQUMsV0FBUyxJQUFHO0FBQUEsRUFBQztBQUFDLFNBQU8sU0FBUyxHQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU0sQ0FBQztBQUFFLFFBQUcsR0FBRyxRQUFPLEdBQUcsQ0FBQztBQUFFLE1BQUUsWUFBVTtBQUFFLFFBQUksSUFBRSxJQUFJO0FBQUUsV0FBTyxFQUFFLFlBQVUsUUFBTztBQUFBLEVBQUM7QUFBQyxFQUFFO0FBQWxLLElBQW9LLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sT0FBTyxFQUFFLGVBQWEsY0FBWSxDQUFDLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBc0MsSUFBSSxLQUFHO0FBQWtCLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxPQUFPLEtBQUcsWUFBVSxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsS0FBRztBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHO0FBQVAsSUFBMEQsS0FBRztBQUFRLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsT0FBTztBQUFFLE1BQUcsS0FBRyxZQUFVLEtBQUcsWUFBVSxLQUFHLGFBQVcsS0FBRyxRQUFNLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxTQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFHLEtBQUcsUUFBTSxLQUFLLE9BQU8sQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHO0FBQUksU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxHQUFFLFNBQVMsR0FBRTtBQUFDLFFBQUcsRUFBRSxTQUFPLEdBQUcsR0FBRSxNQUFNO0FBQUUsV0FBTztBQUFBLEVBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFNLFNBQU87QUFBQztBQUFDLElBQUksS0FBRztBQUFHLElBQUksS0FBRztBQUFQLElBQTBHLEtBQUc7QUFBN0csSUFBd0gsS0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDO0FBQUUsTUFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJLEdBQUcsR0FBRSxLQUFLLEVBQUU7QUFBRSxTQUFPLEVBQUUsUUFBUSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUUsS0FBSyxJQUFFLEVBQUUsUUFBUSxJQUFHLElBQUksSUFBRSxLQUFHLENBQUM7QUFBQSxFQUFDLENBQUMsR0FBRTtBQUFDLENBQUM7QUFBbFEsSUFBb1EsS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRyxJQUFFLEtBQUcsT0FBSyxJQUFFLEVBQUUsUUFBTyxJQUFFLE1BQU0sQ0FBQztBQUFFLFNBQU0sRUFBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsSUFBRTtBQUFULElBQVcsS0FBRyxLQUFHLEdBQUcsWUFBVTtBQUE5QixJQUFxQyxLQUFHLEtBQUcsR0FBRyxXQUFTO0FBQU8sU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLE9BQU8sS0FBRyxTQUFTLFFBQU87QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRTtBQUFHLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTyxLQUFHLEdBQUcsS0FBSyxDQUFDLElBQUU7QUFBRyxNQUFJLElBQUUsSUFBRTtBQUFHLFNBQU8sS0FBRyxPQUFLLElBQUUsS0FBRyxDQUFDLEtBQUcsT0FBSztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEtBQUcsT0FBSyxLQUFHLEdBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTztBQUFFLFNBQU8sR0FBRyxHQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsSUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsSUFBRTtBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLEtBQUcsWUFBVSxHQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsTUFBSSxJQUFFLElBQUU7QUFBRyxTQUFPLEtBQUcsT0FBSyxJQUFFLEtBQUcsQ0FBQyxLQUFHLE9BQUs7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQU8sU0FBTSxLQUFHLFFBQU0sSUFBRSxFQUFFLEtBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSxTQUFPLEtBQUcsS0FBRyxJQUFFLElBQUU7QUFBTTtBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLEtBQUcsUUFBTSxLQUFLLE9BQU8sQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxH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QUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLE1BQUssSUFBRTtBQUFLLFdBQVMsSUFBRztBQUFDLFFBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxJQUFFO0FBQUEsRUFBSTtBQUFDLFdBQVMsRUFBRSxHQUFFO0FBQUMsUUFBRztBQUFDLFFBQUUsQ0FBQztBQUFBLElBQUMsUUFBTTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxJQUFHO0FBQUMsUUFBRyxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBSyxRQUFHLEVBQUUsV0FBUyxFQUFFO0FBQU8sTUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLEVBQUU7QUFBQSxFQUFDO0FBQUMsV0FBUyxJQUFHO0FBQUMsUUFBRyxDQUFDLEVBQUUsS0FBRSxXQUFXLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLElBQUc7QUFBQyxRQUFHLEdBQUU7QUFBQyxRQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLEVBQUU7QUFBRTtBQUFBLElBQU07QUFBQyxRQUFJLElBQUU7QUFBRSxRQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRSxhQUFhLE1BQUk7QUFBQyxVQUFJLElBQUU7QUFBRSxVQUFHLElBQUUsTUFBSyxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxHQUFFO0FBQUMsUUFBRSxDQUFDO0FBQUU7QUFBQSxJQUFNO0FBQUMsUUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLEtBQUcsRUFBRSxRQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVEsS0FBRyxLQUFHLEVBQUUsR0FBRTtBQUFBLEVBQUMsR0FBRSxPQUFNLEdBQUUsVUFBUztBQUFDLE1BQUU7QUFBQSxFQUFDLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxvQkFBSTtBQUFJLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLE1BQUksV0FBVyxRQUFPO0FBQUUsTUFBRyxPQUFPLGdCQUFnQixFQUFFLFFBQU0sTUFBSSxFQUFFLE9BQU8sWUFBWSxFQUFFO0FBQUUsU0FBTSxNQUFJLEVBQUUsT0FBTyxPQUFPLEVBQUU7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLEtBQUcsSUFBSSxDQUFDO0FBQUUsTUFBSSxJQUFFLE1BQUk7QUFBQyxPQUFHLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBRSxTQUFPLE9BQU8sT0FBTyxHQUFFLEVBQUMsQ0FBQyxPQUFPLE9BQU8sR0FBRSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxHQUFHLENBQUMsTUFBSTtBQUFDLE1BQUcsQ0FBQyxLQUFHLEVBQUUsS0FBSyxNQUFJLEdBQUcsUUFBTztBQUFLLE1BQUksSUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxPQUFPO0FBQUUsTUFBRyxFQUFFLFdBQVMsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxXQUFXLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxLQUFLLENBQUMsTUFBSSxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUM7QUFBRSxNQUFHLEtBQUcsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxRQUFRLE1BQUssRUFBRSxFQUFFLFlBQVksQ0FBQztBQUFFLFNBQU0sRUFBQyxTQUFRLElBQUUsQ0FBQyxJQUFFLEdBQUUsU0FBUSxJQUFFLElBQUUsQ0FBQyxHQUFFLGFBQVksRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU0sOEJBQThCO0FBQUUsTUFBRyxLQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxLQUFLLEdBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztBQUFBLE9BQU07QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFNLFlBQVk7QUFBRSxRQUFHLEtBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUUsTUFBTSxjQUFjO0FBQUUsTUFBRyxLQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDO0FBQUUsTUFBRyxFQUFFLFlBQVksRUFBRSxTQUFTLFdBQVcsRUFBRSxHQUFFLEtBQUssSUFBSTtBQUFFLE1BQUksSUFBRSxFQUFFLE1BQU0saURBQWlEO0FBQUUsTUFBRyxLQUFHLEVBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZO0FBQUUsUUFBRyxFQUFFLFNBQU8sTUFBSSxDQUFDLEVBQUUsU0FBUyxHQUFHLEVBQUUsR0FBRSxLQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsU0FBTyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU07QUFBRyxNQUFHLEVBQUUsWUFBWSxRQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDLENBQUM7QUFBQSxNQUFPLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRSxRQUFNO0FBQUcsTUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFF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QUFFO0FBQUMsU0FBSyxHQUFHLElBQUU7QUFBRSxXQUFRLEtBQUssR0FBRyxLQUFFLEVBQUUsUUFBUSxFQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU07QUFBYSxRQUFJLElBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxDQUFDLE1BQUksT0FBSyxFQUFFLENBQUMsTUFBSSxRQUFNLEVBQUUsR0FBRyxFQUFFLE1BQUksRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUUsSUFBRyxJQUFFLEVBQUUsWUFBWSxDQUFDO0FBQUUsV0FBTSxHQUFHLEVBQUUsTUFBTSxHQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLElBQUUsRUFBRSxNQUFNLENBQUM7QUFBQSxFQUFFLENBQUM7QUFBRSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxTQUFRLEdBQUUsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLEdBQUUsT0FBTSxFQUFDO0FBQS9DLElBQWlELEtBQUcsR0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLFFBQVEsSUFBSSw2QkFBNkIsWUFBWSxFQUFFLEtBQUs7QUFBRSxNQUFHLEtBQUcsT0FBTyxPQUFPLElBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxTQUFNO0FBQU8sQ0FBQztBQUFqTCxJQUFtTCxLQUFHO0FBQUcsU0FBUyxLQUFJO0FBQUMsU0FBTyxPQUFPLFVBQVEsT0FBSyxNQUFNLFFBQVEsUUFBUSxJQUFJLElBQUUsUUFBUSxPQUFLLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRztBQUFFLFNBQU8sTUFBSSxHQUFHLFFBQVEsSUFBSSxLQUFLLEtBQUcsR0FBRyxRQUFRLElBQUksU0FBUyxLQUFHLEVBQUUsU0FBUyxTQUFTLEtBQUcsRUFBRSxTQUFTLElBQUksS0FBRyxHQUFHLEtBQUcsRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFdBQVcsVUFBVSxDQUFDLEtBQUcsR0FBRyxNQUFJO0FBQUksQ0FBQztBQUFFLElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFJLEVBQUUsV0FBVyxVQUFVLENBQUM7QUFBRSxNQUFHLENBQUMsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsVUFBVSxDQUFDO0FBQUUsU0FBTyxHQUFHLENBQUM7QUFBQyxDQUFDO0FBQWxILElBQW9ILEtBQUcsR0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEdBQUc7QUFBRSxTQUFPLEVBQUUsU0FBUyxtQkFBbUIsS0FBRyxFQUFFLFNBQVMsTUFBTTtBQUFDLENBQUM7QUFBck0sSUFBdU0sS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRztBQUFFLFdBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLFdBQVcsZUFBZSxFQUFFLFFBQU8sRUFBRSxVQUFVLEVBQUU7QUFBRSxRQUFHLE1BQUksa0JBQWdCLElBQUUsSUFBRSxFQUFFLE9BQU8sUUFBTyxFQUFFLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUksQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUcsRUFBRSxRQUFNO0FBQUcsTUFBRyxPQUFPLFVBQVEsT0FBSyxPQUFPLFFBQVEsV0FBUyxPQUFLLE9BQU8sUUFBUSxTQUFTLE9BQUssSUFBSSxRQUFNO0FBQUcsTUFBSSxJQUFFLEdBQUc7QUFBRSxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBUCxJQUFnQixLQUFHO0FBQW5CLElBQXdCLEtBQUcsUUFBUSxRQUFRO0FBQTNDLElBQTZDLEtBQUc7QUFBaEQsSUFBbUQsS0FBRztBQUF0RCxJQUF5RCxLQUFHO0FBQUssZUFBZSxHQUFHLEdBQUUsR0FBRSxJQUFFLElBQUc7QUFBQyxNQUFHLEtBQUcsRUFBRSxNQUFHLFVBQU0saUJBQUFDLE1BQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBSSxDQUFDO0FBQUEsTUFBTyxPQUFJO0FBQUUsTUFBRyxNQUFJLEtBQUcsR0FBRztBQUFPLE9BQUc7QUFBRyxNQUFHO0FBQUMsUUFBSSxJQUFFLEVBQUUsU0FBUyxNQUFNLElBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLENBQUMsV0FBUyxHQUFHLENBQUM7QUFBSyxRQUFHO0FBQUMsZ0JBQU0saUJBQUFDLFFBQUcsR0FBRSxDQUFDO0FBQUEsSUFBQyxTQUFPLEdBQUU7QUFBQyxVQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBTSxpQkFBQUMsUUFBRyxDQUFDLEVBQUUsTUFBTSxNQUFJO0FBQUEsTUFBQyxDQUFDLEdBQUUsVUFBTSxpQkFBQUQsUUFBRyxHQUFFLENBQUMsRUFBRSxNQUFNLFVBQUksaUJBQUFDLFFBQUcsQ0FBQyxFQUFFLE1BQU0sTUFBSTtBQUFBLE1BQUMsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFDLFNBQUc7QUFBQSxFQUFDLFVBQUM7QUFBUSxTQUFHO0FBQUEsRUFBRTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLFNBQUcsYUFBQUMsTUFBRyxHQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRTtBQUFFO0FBQUMsZUFBZSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsV0FBTSxpQkFBQUMsT0FBRyxHQUFFLEVBQUMsV0FBVSxLQUFFLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxFQUFDLENBQUM7QUFBRSxNQUFJLElBQUU7QUFBRSxNQUFHO0FBQUMsY0FBTSxpQkFBQUMsWUFBRyxHQUFFLENBQUM7QUFBQSxFQUFDLFNBQU8sR0FBRTtBQUFDLFFBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFNO0FBQUUsUUFBRSxHQUFHLENBQUMsR0FBRSxVQUFNLGlCQUFBQSxZQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxRQUFNLEdBQUcsR0FBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUUsR0FBRztBQUFDO0FBQUMsU0FBUyxLQUFJO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxNQUFHLENBQUMsSUFBRztBQUFDLFFBQUksSUFBRTtBQUFLLFNBQUcsR0FBRyxFQUFDLFNBQVEsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEdBQUcsR0FBRSxRQUFFLGFBQUFDLFNBQUcsQ0FBQyxHQUFFLElBQUUsTUFBSTtBQUFFLFVBQUcsSUFBRSxHQUFFLEdBQUcsR0FBRTtBQUFDLFlBQUcsRUFBRSxLQUFHO0FBQUMsYUFBRyxFQUFFLFVBQVUsQ0FBQztBQUFBLFFBQUMsUUFBTTtBQUFBLFFBQUM7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHO0FBQUMsYUFBRyxFQUFFLGVBQWUsR0FBRSxDQUFDO0FBQUEsUUFBQyxTQUFPLEdBQUU7QUFBQyxjQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFFLGNBQUUsR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLGVBQWUsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFDLFdBQUcsR0FBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUUsR0FBRztBQUFFO0FBQUEsTUFBTTtBQUFDLFdBQUcsR0FBRyxLQUFLLEdBQUcsS0FBSyxNQUFLLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtBQUFBLElBQUMsR0FBRSxpQkFBZ0IsS0FBSyxlQUFjLEtBQUksZUFBYyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEdBQUcsWUFBUztBQUFDLFVBQUksUUFBUSxHQUFFLE1BQU07QUFBQSxJQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUUsRUFBQyxPQUFNLEVBQUMsSUFBRSxFQUFDLE9BQU0sUUFBTyxHQUFFO0FBQUMsTUFBRyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FB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RSxJQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFHLEdBQUcsRUFBRSxVQUFVLENBQUMsT0FBTyxJQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUFFLFdBQVEsS0FBSyxFQUFFLEtBQUc7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLENBQUMsRUFBRSxRQUFPO0FBQUEsRUFBQyxRQUFNO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBSTtBQUFDLElBQU0sS0FBTixNQUFRO0FBQUEsRUFBQztBQUFBLEVBQVMsUUFBTSxDQUFDO0FBQUEsRUFBRTtBQUFBLEVBQVk7QUFBQSxFQUFXLFNBQU87QUFBQSxFQUFHO0FBQUEsRUFBUyxVQUFRO0FBQUEsRUFBRyxZQUFZLEdBQUU7QUFBQyxTQUFLLFdBQVM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sYUFBYSxJQUFHO0FBQUMsUUFBRyxLQUFLLFFBQVEsT0FBTSxNQUFNLGtDQUFrQztBQUFFLFdBQU8sS0FBSyxVQUFRLE1BQUc7QUFBQSxFQUFJO0FBQUEsRUFBQyxPQUFNO0FBQUMsUUFBRyxLQUFLLE1BQU0sU0FBTyxFQUFFLFFBQU8sUUFBUSxRQUFRLEVBQUMsTUFBSyxPQUFHLE9BQU0sS0FBSyxNQUFNLE1BQU0sRUFBQyxDQUFDO0FBQUUsUUFBRyxLQUFLLE9BQU8sUUFBTyxRQUFRLFFBQVEsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBRSxRQUFHLEtBQUssU0FBUyxRQUFPLFFBQVEsT0FBTyxLQUFLLFFBQVE7QUFBRSxXQUFPLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQUssY0FBWSxHQUFFLEtBQUssYUFBVztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQVEsR0FBRTtBQUFDLFFBQUcsS0FBSyxhQUFZO0FBQUMsVUFBSSxJQUFFLEtBQUs7QUFBWSxXQUFLLGNBQVksUUFBTyxLQUFLLGFBQVcsUUFBTyxFQUFFLEVBQUMsTUFBSyxPQUFHLE9BQU0sRUFBQyxDQUFDO0FBQUEsSUFBQyxNQUFNLE1BQUssTUFBTSxLQUFLLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFNO0FBQUMsUUFBRyxLQUFLLFNBQU8sTUFBRyxLQUFLLGFBQVk7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFZLFdBQUssY0FBWSxRQUFPLEtBQUssYUFBVyxRQUFPLEVBQUUsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxLQUFLLFdBQVMsR0FBRSxLQUFLLFlBQVc7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFXLFdBQUssY0FBWSxRQUFPLEtBQUssYUFBVyxRQUFPLEVBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFRO0FBQUMsUUFBRyxLQUFLLFNBQU8sTUFBRyxLQUFLLFNBQVMsTUFBSyxTQUFTO0FBQUUsV0FBTyxRQUFRLFFBQVEsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsWUFBVyxDQUFDLEdBQUUsTUFBSyxLQUFJO0FBQUM7QUFBQyxJQUFJLEtBQUcsR0FBRztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUU7QUFBRyxNQUFHLEVBQUUsU0FBTyxNQUFLO0FBQUMsTUFBRSxXQUFXLEtBQUssRUFBQyxXQUFVLEdBQUUsVUFBUyxHQUFFLE9BQU0sTUFBRSxDQUFDO0FBQUU7QUFBQSxFQUFNO0FBQUMsSUFBRSxLQUFLLFNBQVMsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLEtBQUcsb0JBQW1CLEVBQUMsY0FBYSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLEtBQUcscUJBQW9CLEVB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LEVBQUUsYUFBYSxDQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUUsZUFBYSxDQUFDLE1BQUk7QUFBQyxXQUFPLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxTQUFTLEdBQUU7QUFBQyxhQUFPLEVBQUUsQ0FBQztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxFQUFFLGFBQVcsT0FBTyxPQUFPLFNBQU8sYUFBVyxDQUFDLE1BQUksT0FBTyxLQUFLLENBQUMsSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLEtBQUcsT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFFLENBQUMsRUFBRSxHQUFFLEtBQUssQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsR0FBRSxNQUFJO0FBQUMsYUFBUSxLQUFLLEVBQUUsS0FBRyxFQUFFLENBQUMsRUFBRSxRQUFPO0FBQUU7QUFBQSxFQUFNLEdBQUUsRUFBRSxZQUFVLE9BQU8sT0FBTyxjQUFZLGFBQVcsQ0FBQyxNQUFJLE9BQU8sVUFBVSxDQUFDLElBQUUsQ0FBQyxNQUFJLE9BQU8sTUFBSSxZQUFVLE9BQU8sU0FBUyxDQUFDLEtBQUcsS0FBSyxNQUFNLENBQUMsTUFBSTtBQUFFLFdBQVMsRUFBRSxHQUFFLElBQUUsT0FBTTtBQUFDLFdBQU8sRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLE1BQUksV0FBUyxJQUFJLENBQUMsTUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFDLElBQUUsYUFBVyxHQUFFLEVBQUUsd0JBQXNCLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRyxPQUFPLE1BQUksU0FBUyxRQUFPLEVBQUUsU0FBUztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFO0FBQUUsSUFBSTtBQUFBLENBQUksU0FBUyxHQUFFO0FBQUMsSUFBRSxjQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsV0FBTSxFQUFDLEdBQUcsR0FBRSxHQUFHLEVB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QUFPLE9BQU07QUFBQSxJQUFDLFNBQU8sR0FBRTtBQUFDLFVBQUcsR0FBRyxTQUFTLFlBQVksR0FBRyxTQUFTLGFBQWEsRUFBRSxNQUFLLFdBQVcsRUFBRSxRQUFNO0FBQUcsUUFBRSxTQUFPLEVBQUMsUUFBTyxDQUFDLEdBQUUsT0FBTSxLQUFFO0FBQUEsSUFBQztBQUFDLFdBQU8sS0FBSyxZQUFZLEVBQUMsTUFBSyxHQUFFLE1BQUssQ0FBQyxHQUFFLFFBQU8sRUFBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxDQUFDLElBQUUsRUFBQyxPQUFNLEVBQUUsTUFBSyxJQUFFLEVBQUMsUUFBTyxFQUFFLE9BQU8sT0FBTSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEtBQUssZUFBZSxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBUSxRQUFPLEVBQUU7QUFBSyxVQUFNLEVBQUU7QUFBQSxFQUFLO0FBQUEsRUFBQyxNQUFNLGVBQWUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLFFBQU8sQ0FBQyxHQUFFLG9CQUFtQixHQUFHLFVBQVMsT0FBTSxLQUFFLEdBQUUsTUFBSyxHQUFHLFFBQU0sQ0FBQyxHQUFFLGdCQUFlLEtBQUssS0FBSyxVQUFTLFFBQU8sTUFBSyxNQUFLLEdBQUUsWUFBVyxHQUFHLENBQUMsRUFBQyxHQUFFLElBQUUsS0FBSyxPQUFPLEVBQUMsTUFBSyxHQUFFLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLEdBQUUsSUFBRSxPQUFNLEdBQUcsQ0FBQyxJQUFFLElBQUUsUUFBUSxRQUFRLENBQUM7QUFBRyxXQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRyxPQUFPLE1BQUksWUFBVSxPQUFPLElBQUUsSUFBSSxRQUFNLEVBQUMsU0FBUSxFQUFDO0FBQUEsZUFBVSxPQUFPLE1BQUksV0FBVyxRQUFPLEVBQUUsQ0FBQztBQUFBLFVBQU8sUUFBTztBQUFBLElBQUM7QUFBRSxXQUFPLEtBQUssWUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksRUFBRSxTQUFTLEVBQUMsTUFBSyxFQUFFLFFBQU8sR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUUsVUFBRyxPQUFPLFVBQVEsT0FBSyxhQUFhLFFBQVEsUUFBTyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsWUFBRyxDQUFDLEVBQUUsUUFBTyxFQUFFLEdBQUU7QUFBQSxZQUFRLFFBQU07QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFHLENBQUMsRUFBRSxRQUFPLEVBQUUsR0FBRTtBQUFBLFVBQVEsUUFBTTtBQUFBLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBTyxFQUFFLFNBQVMsT0FBTyxNQUFJLGFBQVcsRUFBRSxHQUFFLENBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQSxVQUFRLFFBQU07QUFBQSxJQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sTUFBSyxVQUFTLEVBQUUsWUFBVyxRQUFPLEVBQUMsTUFBSyxjQUFhLFlBQVcsRUFBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLEtBQUssWUFBWSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFO0FBQUMsU0FBSyxNQUFJLEtBQUssZ0JBQWUsS0FBSyxPQUFLLEdBQUUsS0FBSyxRQUFNLEtBQUssTUFBTSxLQUFLLElBQUksR0FBRSxLQUFLLFlBQVUsS0FBSyxVQUFVLEtBQUssSUFBSSxHQUFFLEtBQUssYUFBVyxLQUFLLFdBQVcsS0FBSyxJQUFJLEdBQUUsS0FBSyxpQkFBZSxLQUFLLGVBQWUsS0FBSyxJQUFJLEdBQUUsS0FBSyxNQUFJLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxLQUFLLFNBQU8sS0FBSyxPQUFPLEtBQUssSUFBSSxHQUFFLEtBQUssYUFBVyxLQUFLLFdBQVcsS0FBSyxJQUFJLEdBQUUsS0FBSyxjQUFZLEtBQUssWUFBWSxLQUFLLElBQUksR0FBRSxLQUFLLFdBQVMsS0FBSyxTQUFTLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBUyxLQUFLLFNBQVMsS0FBSyxJQUFJLEdBQUUsS0FBSyxVQUFRLEtBQUssUUFBUSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQU0sS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFFLEtBQUssVUFBUSxLQUFLLFFBQVEsS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFHLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRSxLQUFLLE1BQUksS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLEtBQUssWUFBVSxLQUFLLFVBQVUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFNLEtBQUssTUFBTSxLQUFLLElBQUksR0FBRSxLQUFLLFVBQVEsS0FBSyxRQUFRLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBTSxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUUsS0FBSyxXQUFTLEtBQUssU0FBUyxLQUFLLElBQUksR0FBRSxLQUFLLE9BQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBUyxLQUFLLFNBQVMsS0FBSyxJQUFJLEdBQUUsS0FBSyxhQUFXLEtBQUssV0FBVyxLQUFLLElBQUksR0FBRSxLQUFLLGFBQVcsS0FBSyxXQUFXLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBVyxJQUFFLEVBQUMsU0FBUSxHQUFFLFFBQU8sT0FBTSxVQUFTLENBQUMsTUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFTO0FBQUMsV0FBTyxLQUFLLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFBQztBQUFBLEVBQUMsUUFBTztBQUFDLFdBQU8sR0FBRyxPQUFPLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFTO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUU7QUFBQyxXQUFPLEdBQUcsT0FBTyxDQUFDLE1BQUssQ0FBQyxHQUFFLEtBQUssSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRTtBQUFDLFdBQU8sR0FBRyxPQUFPLE1BQUssR0FBRSxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFVLEdBQUU7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRSxRQUFPLE1BQUssVUFBUyxFQUFFLFlBQVcsUUFBTyxFQUFDLE1BQUssYUFBWSxXQUFVLEVBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsUUFBUSxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sTUFBSSxhQUFXLElBQUUsTUFBSTtBQUFFLFdBQU8sSUFBSSxHQUFHLEVBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFFLFdBQVUsTUFBSyxjQUFhLEdBQUUsVUFBUyxFQUFFLFdBQVUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLFVBQVMsRUFBRSxZQUFXLE1BQUssTUFBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFFBQUksSUFBRSxPQUFPLE1BQUksYUFBVyxJQUFFLE1BQUk7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRSxXQUFVLE1BQUssWUFBVyxHQUFFLFVBQVMsRUFBRSxTQUFRLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUU7QUFBQyxXQUFPLElBQUksS0FBSyxZQUFZLEVBQUMsR0FBRyxLQUFLLE1BQUssYUFBWSxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxXQUFPLEdBQUcsT0FBTyxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLGFBQVk7QUFBQyxXQUFPLEtBQUssVUFBVSxNQUFNLEVBQUU7QUFBQSxFQUFPO0FBQUEsRUFBQyxhQUFZO0FBQUMsV0FBTyxLQUFLLFVBQVUsSUFBSSxFQUFFO0FBQUEsRUFBTztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQVAsSUFBd0IsS0FBRztBQUEzQixJQUF5QyxLQUFHO0FBQTVDLElBQXdFLEtBQUc7QUFBM0UsSUFBb0ssS0FBRztBQUF2SyxJQUEyTCxLQUFHO0FBQTlMLElBQWlQLEtBQUc7QUFBcFAsSUFBK2hCLEtBQUc7QUFBbGlCLElBQXVuQixLQUFHO0FBQTFuQixJQUFpckI7QUFBanJCLElBQW9yQixLQUFHO0FBQXZyQixJQUE2eUIsS0FBRztBQUFoekIsSUFBMjdCLEtBQUc7QUFBOTdCLElBQXNsRCxLQUFHO0FBQXpsRCxJQUFteEUsS0FBRztBQUF0eEUsSUFBeTFFLEtBQUc7QUFBNTFFLElBQXE2RSxLQUFHO0FBQXg2RSxJQUE0bUYsS0FBRyxJQUFJLE9BQU8sSUFBSSxFQUFFLEdBQUc7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRTtBQUFXLE1BQUcsRUFBRSxVQUFVLEtBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTO0FBQUEsV0FBWSxFQUFFLGFBQVcsS0FBSyxLQUFFLEdBQUcsQ0FBQztBQUFhLE1BQUksSUFBRSxFQUFFLFlBQVUsTUFBSTtBQUFJLFNBQU0sOEJBQThCLENBQUMsSUFBSSxDQUFDO0FBQUU7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBRyxJQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsS0FBSyxFQUFFLFFBQU0sT0FBSyxHQUFHLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBSyxzQkFBc0I7QUFBRSxTQUFPLElBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFJLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE9BQUksTUFBSSxRQUFNLENBQUMsTUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLFFBQU07QUFBRyxPQUFJLE1BQUksUUFBTSxDQUFDLE1BQUksR0FBRyxLQUFLLENBQUMsRUFBRSxRQUFNO0FBQUcsU0FBTTtBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFHO0FBQUMsUUFBRyxDQUFDLENBQUMsSUFBRSxFQUFFLE1BQU0sR0FBRztBQUFFLFFBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxRQUFJLElBQUUsRUFBRSxRQUFRLE1BQUssR0FBRyxFQUFFLFFBQVEsTUFBSyxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVEsSUFBRSxFQUFFLFNBQU8sS0FBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLEtBQUssTUFBTSxLQUFLLENBQUMsQ0FBQztBQUFFLFFBQUcsT0FBTyxNQUFJLFlBQVUsTUFBSSxLQUFLLFFBQU07QUFBRyxRQUFHLFNBQVEsS0FBRyxHQUFHLFFBQU0sTUFBTSxRQUFNO0FBQUcsUUFBRyxDQUFDLEVBQUUsSUFBSSxRQUFNO0FBQUcsUUFBRyxLQUFHLEVBQUUsUUFBTSxFQUFFLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFB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QUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsUUFBTyxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sVUFBUztBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLFVBQVMsTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxRQUFPLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxTQUFRO0FBQUMsVUFBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsU0FBUSxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sUUFBTztBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLFFBQU8sTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLE1BQU0sS0FBRztBQUFDLFVBQUksSUFBSSxFQUFFLElBQUk7QUFBQSxJQUFDLFFBQU07QUFBQyxVQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsT0FBTSxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQSxhQUFTLEVBQUUsU0FBTyxTQUFRO0FBQUMsVUFBRyxFQUFFLE1BQU0sWUFBVSxHQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLFNBQVEsTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLE9BQU8sR0FBRSxPQUFLLEVBQUUsS0FBSyxLQUFLO0FBQUEsYUFBVSxFQUFFLFNBQU8sWUFBVztBQUFDLFVBQUcsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLE9BQU0sRUFBRSxRQUFRLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsZ0JBQWUsWUFBVyxFQUFDLFVBQVMsRUFBRSxPQUFNLFVBQVMsRUFBRSxTQUFRLEdBQUUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sY0FBYyxHQUFFLE9BQUssRUFBRSxLQUFLLFlBQVk7QUFBQSxhQUFVLEVBQUUsU0FBTyxjQUFjLEdBQUUsT0FBSyxFQUFFLEtBQUssWUFBWTtBQUFBLGFBQVUsRUFBRSxTQUFPLGNBQWE7QUFBQyxVQUFHLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsZ0JBQWUsWUFBVyxFQUFDLFlBQVcsRUFBRSxNQUFLLEdBQUUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sWUFBVztBQUFDLFVBQUcsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxnQkFBZSxZQUFXLEVBQUMsVUFBUyxFQUFFLE1BQUssR0FBRSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxZQUFXO0FBQUMsVUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsZ0JBQWUsWUFBVyxZQUFXLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGdCQUFlLFlBQVcsUUFBTyxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsZ0JBQWUsWUFBVyxRQUFPLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFlBQVc7QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxZQUFXLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxNQUFLO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxNQUFLLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxPQUFNLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxRQUFPLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxVQUFTO0FBQUMsVUFBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsVUFBUyxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sYUFBWTtBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLGFBQVksTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLE1BQU0sSUFBRyxZQUFZLENBQUM7QUFBRSxXQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLEtBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFdBQVcsQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBQyxZQUFXLEdBQUUsTUFBSyxFQUFFLGdCQUFlLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsVUFBVSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxTQUFRLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssU0FBUSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLFVBQVMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxTQUFRLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLFFBQU8sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssVUFBUyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxhQUFZLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssTUFBSyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksU0FBUyxRQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssWUFBVyxXQUFVLE1BQUssUUFBTyxPQUFHLE9BQU0sT0FBRyxTQUFRLEVBQUMsQ0FBQztBQUFFLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLFdBQVUsT0FBTyxHQUFHLFlBQVUsTUFBSSxPQUFLLEdBQUcsV0FBVSxRQUFPLEdBQUcsVUFBUSxPQUFHLE9BQU0sR0FBRyxTQUFPLE9BQUcsR0FBRyxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLFNBQVEsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksU0FBUyxRQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxXQUFVLE1BQUssU0FBUSxFQUFDLENBQUM7QUFBRSxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxXQUFVLE9BQU8sR0FBRyxZQUFVLE1BQUksT0FBSyxHQUFHLFdBQVUsR0FBRyxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssU0FBUSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLE9BQU0sR0FBRSxVQUFTLEdBQUcsVUFBUyxHQUFHLEVBQUUsU0FBUyxHQUFHLE9BQU8sRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsV0FBVyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssY0FBYSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLE9BQU0sR0FBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxHQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxVQUFTLE9BQU0sR0FBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLEdBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU07QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFFBQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxRQUFPLEVBQUMsTUFBSyxPQUFNLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsY0FBYTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssUUFBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLFFBQU8sRUFBQyxNQUFLLGNBQWEsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxFQUFDLE1BQUssY0FBYSxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFNBQVE7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxVQUFTO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sS0FBSztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxPQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sUUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksU0FBUTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxNQUFNO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxVQUFTO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFNBQVE7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksT0FBTTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sUUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksY0FBYTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxXQUFXO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxZQUFXO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLE1BQUksUUFBTSxFQUFFLFFBQU0sRUFBRSxLQUFFLEVBQUU7QUFBQSxJQUFLO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksWUFBVztBQUFDLFFBQUksSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxNQUFJO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLEVBQUUsV0FBVSxRQUFPLEdBQUcsVUFBUSxPQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUcsSUFBSSxRQUFPLEtBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFHLElBQUksUUFBTyxJQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDO0FBQUUsU0FBTyxJQUFFLElBQUUsTUFBSTtBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxjQUFhO0FBQUMsVUFBTSxHQUFHLFNBQVM7QUFBRSxTQUFLLE1BQUksS0FBSyxLQUFJLEtBQUssTUFBSSxLQUFLLEtBQUksS0FBSyxPQUFLLEtBQUs7QUFBQSxFQUFVO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEtBQUssS0FBSyxPQUFPLEdBQUUsT0FBSyxPQUFPLEVBQUUsSUFBSTtBQUFFLFFBQUcsS0FBSyxTQUFTLENBQUMsTUFBSSxFQUFFLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLGFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGNBQWEsVUFBUyxFQUFFLFFBQU8sVUFBUyxFQUFFLFdBQVUsQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFDLFFBQUksSUFBRSxRQUFPLElBQUUsSUFBSTtBQUFHLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxjQUFhLFVBQVMsV0FBVSxVQUFTLFNBQVEsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxZQUFVLEVBQUUsT0FBSyxFQUFFLFFBQU0sRUFBRSxRQUFNLEVBQUUsTUFBTSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxXQUFVLFNBQVEsRUFBRSxPQUFNLE1BQUssVUFBUyxXQUFVLEVBQUUsV0FBVSxPQUFNLE9BQUcsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxZQUFVLEVBQUUsT0FBSyxFQUFFLFFBQU0sRUFBRSxRQUFNLEVBQUUsTUFBTSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxTQUFRLFNBQVEsRUFBRSxPQUFNLE1BQUssVUFBUyxXQUFVLEVBQUUsV0FBVSxPQUFNLE9BQUcsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sY0FBYTtBQUFDLFVBQUcsR0FBRyxFQUFFLE1BQUssRUFBRSxLQUFLLE1BQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxpQkFBZ0IsWUFBVyxFQUFFLE9BQU0sU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sVUFBUztBQUFDLFVBQUcsQ0FBQyxPQUFPLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsWUFBVyxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxNQUFNLElBQUcsWUFBWSxDQUFDO0FBQUUsV0FBTSxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sRUFBRSxLQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssU0FBUyxPQUFNLEdBQUUsTUFBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssU0FBUyxPQUFNLEdBQUUsT0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssU0FBUyxPQUFNLEdBQUUsTUFBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssU0FBUyxPQUFNLEdBQUUsT0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxFQUFDLE1BQUssR0FBRSxPQUFNLEdBQUUsV0FBVSxHQUFFLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssUUFBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sR0FBRSxXQUFVLE9BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLEdBQUUsV0FBVSxPQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxHQUFFLFdBQVUsTUFBRyxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sR0FBRSxXQUFVLE1BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFXLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxjQUFhLE9BQU0sR0FBRSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxVQUFTLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sV0FBVSxNQUFHLE9BQU0sT0FBTyxrQkFBaUIsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBRSxVQUFVLEVBQUMsTUFBSyxPQUFNLFdBQVUsTUFBRyxPQUFNLE9BQU8sa0JBQWlCLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLE1BQUksUUFBTSxFQUFFLFFBQU0sRUFBRSxLQUFFLEVBQUU7QUFBQSxJQUFLO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksV0FBVTtBQUFDLFFBQUksSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sU0FBTyxFQUFFLFNBQU8sZ0JBQWMsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFLE1BQUssSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxZQUFVLEVBQUUsU0FBTyxTQUFPLEVBQUUsU0FBTyxhQUFhLFFBQU07QUFBQSxhQUFXLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSyxXQUFTLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU8sT0FBTyxTQUFTLENBQUMsS0FBRyxPQUFPLFNBQVMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sQ0FBQyxHQUFFLFVBQVMsRUFBRSxXQUFVLFFBQU8sR0FBRyxVQUFRLE9BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBRSxJQUFNLEtBQU4sTUFBTSxZ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RUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sT0FBTyxDQUFDLEdBQUUsV0FBVSxPQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxPQUFPLENBQUMsR0FBRSxXQUFVLE9BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLE9BQU8sQ0FBQyxHQUFFLFdBQVUsTUFBRyxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sT0FBTyxDQUFDLEdBQUUsV0FBVSxNQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsV0FBVyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssY0FBYSxPQUFNLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxRQUFJLElBQUU7QUFBSyxhQUFRLEtBQUssS0FBSyxLQUFLLE9BQU8sS0FBRyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsTUFBSSxRQUFNLEVBQUUsUUFBTSxFQUFFLEtBQUUsRUFBRTtBQUFBLElBQUs7QUFBQyxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUss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QUMsV0FBTyxHQUFHLEVBQUUsSUFBSTtBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFVBQVMsRUFBRSxTQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sRUFBQyxJQUFFLEtBQUssb0JBQW9CLENBQUMsR0FBRSxJQUFFLEtBQUs7QUFBSyxRQUFHLEVBQUUsZUFBYSxFQUFFLE1BQU0sUUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsY0FBYSxVQUFTLEVBQUUsT0FBTSxVQUFTLEVBQUUsV0FBVSxDQUFDLEdBQUU7QUFBRSxRQUFHLEVBQUUsZ0JBQWMsTUFBSztBQUFDLFVBQUksSUFBRSxFQUFFLEtBQUssU0FBTyxFQUFFLFlBQVksT0FBTSxJQUFFLEVBQUUsS0FBSyxTQUFPLEVBQUUsWUFBWTtBQUFNLFVBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssSUFBRSxFQUFFLFVBQVEsRUFBRSxXQUFVLFNBQVEsSUFBRSxFQUFFLFlBQVksUUFBTSxRQUFPLFNBQVEsSUFBRSxFQUFFLFlBQVksUUFBTSxRQUFPLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxNQUFHLFNBQVEsRUFBRSxZQUFZLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsY0FBWSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssU0FBTyxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEVBQUUsVUFBVSxPQUFNLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxVQUFVLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsY0FBWSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssU0FBTyxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsVUFBVSxPQUFNLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxVQUFVLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxNQUFNLFFBQU8sUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsYUFBTyxFQUFFLEtBQUssWUFBWSxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsYUFBTyxHQUFHLFdBQVcsR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUUsUUFBSSxJQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsYUFBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsV0FBVyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQUk7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxXQUFVLEVBQUMsT0FBTSxHQUFFLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssV0FBVSxFQUFDLE9BQU0sR0FBRSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLGFBQVksRUFBQyxPQUFNLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxHQUFFLFdBQVUsTUFBSyxXQUFVLE1BQUssYUFBWSxNQUFLLFVBQVMsRUFBRSxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLGFBQWEsSUFBRztBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsT0FBTTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLFFBQUUsQ0FBQyxJQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxNQUFLLE9BQU0sTUFBSSxFQUFDLENBQUM7QUFBQSxFQUFDLFdBQVMsYUFBYSxHQUFHLFFBQU8sSUFBSSxHQUFHLEVBQUMsR0FBRyxFQUFFLE1BQUssTUFBSyxHQUFHLEVBQUUsT0FBTyxFQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQU8sUUFBTztBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxjQUFh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SUFBRyxVQUFTLEVBQUUsVUFBUyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxFQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssVUFBUyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxHQUFHLFdBQVcsQ0FBQyxFQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsS0FBSyxNQUFNLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFFLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUcsV0FBVyxLQUFLLEtBQUssRUFBRSxLQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLE9BQU0sTUFBSSxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsV0FBTyxHQUFHLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxHQUFHLFdBQVcsS0FBSyxLQUFLLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxVQUFHLEtBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLFVBQU8sR0FBRSxDQUFDLElBQUUsRUFBRSxTQUFTO0FBQUEsSUFBQztBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUcsV0FBVyxLQUFLLEtBQUssRUFBRSxLQUFHLEtBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFBLFNBQU07QUFBQyxVQUFJLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxhQUFNLGFBQWEsR0FBRyxLQUFFLEVBQUUsS0FBSztBQUFVLFFBQUUsQ0FBQyxJQUFFO0FBQUEsSUFBQztBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxXQUFPLEdBQUcsR0FBRyxXQUFXLEtBQUssS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxTQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLE1BQUksR0FBRSxhQUFZLFNBQVEsVUFBUyxHQUFHLE9BQU8sR0FBRSxVQUFTLEVBQUUsV0FBVSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLEdBQUcsZUFBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxNQUFJLEdBQUUsYUFBWSxVQUFTLFVBQVMsR0FBRyxPQUFPLEdBQUUsVUFBUyxFQUFFLFdBQVUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBRSxHQUFHLGFBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sR0FBRSxhQUFZLFNBQVEsVUFBUyxHQUFHLE9BQU8sR0FBRSxVQUFTLEVBQUUsV0FBVSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixjQUFpQixHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxFQUFDLElBQUUsS0FBSyxvQkFBb0IsQ0FBQyxHQUFFLElBQUUsS0FBSyxLQUFLO0FBQVEsYUFBUyxFQUFFLEdBQUU7QUFBQyxlQUFRLEtBQUssRUFBRSxLQUFHLEVBQUUsT0FBTyxXQUFTLFFBQVEsUUFBTyxFQUFFO0FBQU8sZUFBUSxLQUFLLEVBQUUsS0FBRyxFQUFFLE9BQU8sV0FBUyxRQUFRLFFBQU8sRUFBRSxPQUFPLE9BQU8sS0FBSyxHQUFHLEVBQUUsSUFBSSxPQUFPLE1BQU0sR0FBRSxFQUFFO0FBQU8sVUFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUFFLGFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGVBQWMsYUFBWSxFQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxNQUFNLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSSxPQUFNLE1BQUk7QUFBQyxVQUFJLElBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxFQUFDLEdBQUcsRUFBRSxRQUFPLFFBQU8sQ0FBQyxFQUFDLEdBQUUsUUFBTyxLQUFJO0FBQUUsYUFBTSxFQUFDLFFBQU8sTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUksRUFBQztBQUFBLElBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxRQUFPLElBQUUsQ0FBQztBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUMsR0FBRyxHQUFFLFFBQU8sRUFBQyxHQUFHLEVBQUUsUUFBTyxRQUFPLENBQUMsRUFBQyxHQUFFLFFBQU8sS0FBSSxHQUFFLElBQUUsRUFBRSxXQUFXLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxZQUFHLEVB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LE1BQU07QUFBRSxhQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLEtBQUk7QUFBQSxJQUFDO0FBQUUsUUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUssS0FBSyxNQUFNLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFFLENBQUMsTUFBSSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBTyxRQUFPLEVBQUUsS0FBSyxLQUFLLEtBQUssV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLEdBQUUsS0FBSyxLQUFLLE1BQU0sV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxVQUFTLEVBQUUsaUJBQWdCLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsUUFBTyxHQUFFLEtBQUksRUFBQyxJQUFFLEtBQUssb0JBQW9CLENBQUM7QUFBRSxRQUFHLEVBQUUsZUFBYSxFQUFFLE1BQU0sUUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsY0FBYSxVQUFTLEVBQUUsT0FBTSxVQUFTLEVBQUUsV0FBVSxDQUFDLEdBQUU7QUFBRSxRQUFHLEVBQUUsS0FBSyxTQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sUUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEtBQUssS0FBSyxNQUFNLFFBQU8sV0FBVSxNQUFHLE9BQU0sT0FBRyxNQUFLLFFBQU8sQ0FBQyxHQUFFO0FBQUUsUUFBRyxDQUFDLEtBQUssS0FBSyxRQUFNLEVBQUUsS0FBSyxTQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sR0FBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFNBQVEsU0FBUSxLQUFLLEtBQUssTUFBTSxRQUFPLFdBQVUsTUFBRyxPQUFNLE9BQUcsTUFBSyxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBRSxRQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFHLEtBQUssS0FBSztBQUFLLFVBQUcsQ0FBQyxFQUFFLFFBQU87QUFBSyxhQUFPLEVBQUUsT0FBTyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxDQUFDLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxPQUFPLE1BQU0sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsYUFBTyxHQUFHLFdBQVcsR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsUUFBTyxRQUFPLEdBQUcsV0FBVyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQUs7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssTUFBSyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxNQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxPQUFNLE1BQU0sdURBQXVEO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFB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QUcsRUFBRSxXQUFTLGFBQVcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLGNBQUcsRUFBRSxXQUFTLFdBQVMsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsWUFBRSxJQUFJLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQSxRQUFDO0FBQUMsZUFBTSxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFBLElBQUMsT0FBSztBQUFDLFVBQUksSUFBRSxvQkFBSTtBQUFJLGVBQVEsS0FBSyxHQUFFO0FBQUMsWUFBRyxFQUFDLEtBQUksR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGFBQVcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFdBQVMsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsVUFBRSxJQUFJLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQSxNQUFDO0FBQUMsYUFBTSxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsV0FBVSxHQUFFLFNBQVEsR0FBRSxVQUFTLEVBQUUsUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxLQUFJLEVBQUMsSUFBRSxLQUFLLG9CQUFvQixDQUFDO0FBQUUsUUFBRyxFQUFFLGVBQWEsRUFBRSxJQUFJLFFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGNBQWEsVUFBUyxFQUFFLEtBQUksVUFBUyxFQUFFLFdBQVUsQ0FBQyxHQUFFO0FBQUUsUUFBSSxJQUFFLEtBQUs7QUFBSyxRQUFHLEVBQUUsWUFBVSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssT0FBSyxFQUFFLFFBQVEsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEVBQUUsUUFBUSxPQUFNLE1BQUssT0FBTSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxRQUFRLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsWUFBVSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssT0FBSyxFQUFFLFFBQVEsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsUUFBUSxPQUFNLE1BQUssT0FBTSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxRQUFRLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFJLElBQUUsS0FBSyxLQUFLO0FBQVUsYUFBUyxFQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsb0JBQUk7QUFBSSxlQUFRLEtBQUssR0FBRTtBQUFDLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsVUFBRSxJQUFJLEVBQUUsS0FBSztBQUFBLE1BQUM7QUFBQyxhQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFDO0FBQUEsSUFBQztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxPQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsRUFBRSxNQUFLLENBQUMsQ0FBQyxDQUFDO0FBQUUsUUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUM7QUFBQSxRQUFPLFFBQU8sRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFNBQVEsRUFBQyxPQUFNLEdBQUUsU0FB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RUFBRSxLQUFLLENBQUMsQ0FBQztBQUFFLFlBQUksSUFBRSxRQUFRLE1BQU0sR0FBRSxNQUFLLEVBQUUsSUFBSSxHQUFFLElBQUUsRUFBRSxLQUFLLFFBQVEsVUFBVSxHQUFFLENBQUM7QUFBRSxZQUFHLENBQUMsRUFBRSxRQUFRLE9BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFBRSxlQUFPLEVBQUU7QUFBQSxNQUFJLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsYUFBWTtBQUFDLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBSTtBQUFBLEVBQUMsYUFBWTtBQUFDLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBTztBQUFBLEVBQUMsUUFBUSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxNQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFNBQVEsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsVUFBVSxHQUFFO0FBQUMsV0FBTyxLQUFLLE1BQU0sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGdCQUFnQixHQUFFO0FBQUMsV0FBTyxLQUFLLE1BQU0sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sT0FBTyxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsTUFBSyxJQUFFLElBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRSxTQUFRLEtBQUcsR0FBRyxPQUFPLEdBQUUsVUFBUyxFQUFFLGFBQVksR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEdBQUU7QUFBQSxFQUFDLElBQUksU0FBUTtBQUFDLFdB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QUUsRUFBQyxVQUFTLENBQUMsTUFBSTtBQUFDLFVBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQU0sR0FBRSxNQUFNO0FBQUEsVUFBTyxHQUFFLE1BQU07QUFBQSxJQUFDLEdBQUUsSUFBSSxPQUFNO0FBQUMsYUFBTyxFQUFFO0FBQUEsSUFBSSxFQUFDO0FBQUUsUUFBRyxFQUFFLFdBQVMsRUFBRSxTQUFTLEtBQUssQ0FBQyxHQUFFLEVBQUUsU0FBTyxjQUFhO0FBQUMsVUFBSSxJQUFFLEVBQUUsVUFBVSxFQUFFLE1BQUssQ0FBQztBQUFFLFVBQUcsRUFBRSxPQUFPLE1BQU0sUUFBTyxRQUFRLFFBQVEsQ0FBQyxFQUFFLEtBQUssT0FBTSxNQUFJO0FBQUMsWUFBRyxFQUFFLFVBQVEsVUFBVSxRQUFPO0FBQUUsWUFBSSxJQUFFLE1BQU0sS0FBSyxLQUFLLE9BQU8sWUFBWSxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQztBQUFFLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTyxHQUFHLEVBQUUsS0FBSztBQUFFLFlBQUcsRUFBRSxVQUFRLFFBQVEsUUFBTyxHQUFHLEVBQUUsS0FBSztBQUFFLGVBQU87QUFBQSxNQUFDLENBQUM7QUFBQSxXQUFNO0FBQUMsWUFBRyxFQUFFLFVBQVEsVUFBVSxRQUFPO0FBQUUsWUFBSSxJQUFFLEtBQUssS0FBSyxPQUFPLFdBQVcsRUFBQyxNQUFLLEdBQUUsTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxZQUFHLEVBQUUsV0FBUyxVQUFVLFFBQU87QUFBRSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU8sR0FBRyxFQUFFLEtBQUs7QUFBRSxZQUFHLEVBQUUsVUFBUSxRQUFRLFFBQU8sR0FBRyxFQUFFLEtBQUs7QUFBRSxlQUFPO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsU0FBTyxjQUFhO0FBQUMsVUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFlBQUksSUFBRSxFQUFFLFdBQVcsR0FBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsUUFBUSxDQUFDO0FBQUUsWUFBRyxhQUFhLFFBQVEsT0FBTSxNQUFNLDJGQUEyRjtBQUFFLGVBQU87QUFBQSxNQUFDO0FBQUUsVUFBRyxFQUFFLE9BQU8sVUFBUSxPQUFHO0FBQUMsWUFBSSxJQUFFLEtBQUssS0FBSyxPQUFPLFdBQVcsRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQztBQUFFLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsZUFBTyxFQUFFLEVBQUUsS0FBSyxHQUFFLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLE1BQUs7QUFBQSxNQUFDLE1BQU0sUUFBTyxLQUFLLEtBQUssT0FBTyxZQUFZLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsZUFBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssTUFBSTtBQUFDLGlCQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLE1BQUs7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFHLEVBQUUsT0FBTyxVQUFRLE9BQUc7QUFBQyxVQUFJLElBQUUsS0FBSyxLQUFLLE9BQU8sV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUUsVUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxVQUFJLElBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTSxDQUFDO0FBQUUsVUFBRyxhQUFh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QyxDQUFDO0FBQUEsSUFBQyxHQUFHO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxLQUFLLEtBQUssR0FBRyxXQUFXLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxVQUFHLEVBQUUsV0FBUyxVQUFVLFFBQU87QUFBRSxVQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU8sRUFBRSxNQUFNLEdBQUUsRUFBQyxRQUFPLFNBQVEsT0FBTSxFQUFFLE1BQUs7QUFBQSxVQUFPLFFBQU8sS0FBSyxLQUFLLElBQUksV0FBVyxFQUFDLE1BQUssRUFBRSxPQUFNLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLElBQUcsR0FBRSxLQUFJLEdBQUUsVUFBUyxFQUFFLFlBQVcsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFJLElBQUUsS0FBSyxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQUUsSUFBRSxDQUFDLE1BQUk7QUFBQyxVQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUUsUUFBTSxPQUFPLE9BQU8sRUFBRSxLQUFLO0FBQUUsYUFBTztBQUFBLElBQUM7QUFBRSxXQUFPLEdBQUcsQ0FBQyxJQUFFLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUMsSUFBRSxFQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFRO0FBQUMsV0FBTyxLQUFLLEtBQUs7QUFBQSxFQUFTO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFdBQVUsR0FBRSxVQUFTLEVBQUUsYUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQUksTUFBSSxFQUFDLFFBQU8sR0FBRyxXQUFVO0FB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LElBQUcsU0FBUSxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLHFCQUFvQixNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsZ0JBQWUsTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxxQkFBb0IsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLGNBQWEsTUFBSSxHQUFFLFFBQU8sTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxHQUFFLFdBQVUsTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLHFCQUFvQixNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxrQkFBaUIsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLGlCQUFnQixNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLGlCQUFnQixNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsd0JBQXVCLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyx3QkFBdUIsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLG9CQUFtQixNQUFJLElBQUcsdUJBQXNCLE1BQUksSUFBRyxxQkFBb0IsTUFBSSxJQUFHLHFCQUFvQixNQUFJLElBQUcsZ0JBQWUsTUFBSSxJQUFHLG1CQUFrQixNQUFJLElBQUcsb0JBQW1CLE1BQUksSUFBRyx1QkFBc0IsTUFBSSxJQUFHLHFCQUFvQixNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxvQkFBbUIsTUFBSSxJQUFHLG1CQUFrQixNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxvQkFBbUIsTUFBSSxJQUFHLG9CQUFtQixNQUFJLElBQUcsbUJBQWtCLE1BQUksSUFBRyx1QkFBc0IsTUFBSSxJQUFHLG1CQUFrQixNQUFJLElBQUcsc0JBQXFCLE1BQUksSUFBRyxtQkFBa0IsTUFBSSxJQUFHLHVCQUFzQixNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsU0FBUSxNQUFJLEdBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxPQUFPLE9BQU8sRUFBQyxRQUFPLFVBQVMsQ0FBQztBQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxRQUFJO0FBQUUsV0FBTyxlQUFlLEdBQUUsUUFBTyxFQUFDLE9BQU0sRUFBRSxRQUFNLENBQUMsR0FBRSxZQUFXLE1BQUUsQ0FBQyxJQUFHLElBQUUsRUFBRSxNQUFNLFdBQVMsRUFBRSxTQUFPLG9CQUFJLFFBQUssRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUM7QUFBRSxhQUFRLEtBQUssRUFBRSxVQUFVLEtBQUcsRUFBRSxLQUFLLEdBQUcsUUFBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE9BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBQyxDQUFDO0FBQUUsTUFBRSxLQUFLLFNBQU8sR0FBRSxFQUFFLEtBQUssTUFBSTtBQUFBLEVBQUM7QUFBQyxNQUFJLElBQUUsR0FBRyxVQUFRO0FBQUEsRUFBTyxNQUFNLFVBQVUsRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFPLGVBQWUsR0FBRSxRQUFPLEVBQUMsT0FBTSxFQUFDLENBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFFBQUk7QUFBRSxRQUFJLElBQUUsR0FBRyxTQUFPLElBQUksTUFBRTtBQUFLLE1BQUUsR0FBRSxDQUFDLElBQUcsSUFBRSxFQUFFLE1BQU0sYUFBVyxFQUFFLFdBQVMsQ0FBQztBQUFHLGFBQVEsS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFFO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQyxTQUFPLE9BQU8sZUFBZSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsQ0FBQyxHQUFFLE9BQU8sZUFBZSxHQUFFLE9BQU8sYUFBWSxFQUFDLE9BQU0sQ0FBQyxNQUFJO0FBQUMsUUFBRyxHQUFHLFVBQVEsYUFBYSxFQUFFLE9BQU8sUUFBTTtBQUFHLFdBQU8sR0FBRyxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFBQyxFQUFDLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxRQUFPLEVBQUMsT0FBTSxFQUFDLENBQUMsR0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLE9BQU8sV0FBVztBQUFFLElBQU0sS0FBTixjQUFpQixNQUFLO0FBQUEsRUFBQyxjQUFhO0FBQUMsVUFBTSwwRUFBMEU7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxFQUFFLFFBQU8sT0FBTyxJQUFHLENBQUM7QUFBRSxTQUFPO0FBQUU7QUFBQyxJQUFJLElBQUUsQ0FBQztBQUFFLEdBQUcsR0FBRSxFQUFDLGVBQWMsTUFBSSxJQUFHLG9CQUFtQixNQUFJLEdBQUUsVUFBUyxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxrQkFBaUIsTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxHQUFFLE9BQU0sTUFBSSxJQUFHLHVCQUFzQixNQUFJLElBQUcsWUFBVyxNQUFJLEdBQUUsT0FBTSxNQUFJLElBQUcsZUFBYyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsa0JBQWlCLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxxQkFBb0IsTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLGtCQUFpQixNQUFJLElBQUcsb0JBQW1CLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyx3QkFBdUIsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLG1CQUFrQixNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsZ0JBQWUsTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLHNCQUFxQixNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsc0JBQXFCLE1BQUksR0FBRSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFFBQU0sTUFBTTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLE9BQU8sT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQUksT0FBTyxNQUFJLFFBQVE7QUFBRSxTQUFPLE9BQU8sUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRSxDQUFDLE1BQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxNQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFFLENBQUMsTUFBSSxDQUFDO0FBQUM7QUFBQyxTQUFTLEVBQUUsR0FBRSxJQUFFLEtBQUk7QUFBQyxTQUFPLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU8sRUFBRSxTQUFTO0FBQUUsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLEVBQUMsSUFBSSxRQUFPO0FBQUM7QUFBQyxVQUFJLElBQUUsRUFBRTtBQUFFLGFBQU8sT0FBTyxlQUFlLE1BQUssU0FBUSxFQUFDLE9BQU0sRUFBQyxDQUFDLEdBQUU7QUFBQSxJQUFDO0FBQUMsVUFBTSxNQUFNLDBCQUEwQjtBQUFBLEVBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE1BQUksUUFBTSxNQUFJO0FBQU07QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsU0FBUyxHQUFHLElBQUUsRUFBRSxTQUFPLElBQUUsRUFBRTtBQUFPLFNBQU8sRUFBRSxNQUFNLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUcsSUFBSSxRQUFPLEtBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFHLElBQUksUUFBTyxJQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDO0FBQUUsU0FBTyxJQUFFLElBQUUsTUFBSTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE1BQUs7QUFBQztBQUFDLFVBQUksSUFBRSxFQUFFO0FBQUUsYUFBTyxFQUFFLENBQUMsSUFBRSxHQUFFO0FBQUEsSUFBQztBQUFDLFVBQU0sTUFBTSwwQkFBMEI7QUFBQSxFQUFDLEdBQUUsSUFBSSxHQUFFO0FBQUMsV0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE9BQU0sRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLGNBQWEsS0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsT0FBTSxHQUFFLFVBQVMsTUFBRyxZQUFXLE1BQUcsY0FBYSxLQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsU0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksSUFBSSxDQUFDLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTyxLQUFLLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUM7QUFBRSxTQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUksR0FBRSxFQUFFLENBQUMsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFFLFdBQU87QUFB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TztBQUFDO0FBQUMsU0FBUyxFQUFFLEdBQUU7QUFBQyxNQUFJLElBQUU7QUFBRSxNQUFHLENBQUMsRUFBRSxRQUFNLENBQUM7QUFBRSxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU0sRUFBQyxPQUFNLE1BQUksRUFBQztBQUFFLE1BQUcsR0FBRyxZQUFVLFFBQU87QUFBQyxRQUFHLEdBQUcsVUFBUSxPQUFPLE9BQU0sTUFBTSxrREFBa0Q7QUFBRSxNQUFFLFFBQU0sRUFBRTtBQUFBLEVBQU87QUFBQyxNQUFHLE9BQU8sRUFBRSxTQUFRLE9BQU8sRUFBRSxVQUFRLFNBQVMsUUFBTSxFQUFDLEdBQUcsR0FBRSxPQUFNLE1BQUksRUFBRSxNQUFLO0FBQUUsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJO0FBQUUsU0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFFLEVBQUMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQU8sTUFBSSxJQUFFLEVBQUUsSUFBRyxRQUFRLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxFQUFDLEdBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxNQUFJLElBQUUsRUFBRSxJQUFHLFFBQVEsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsRUFBQyxHQUFFLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxNQUFJLElBQUUsRUFBRSxJQUFHLFFBQVEsSUFBSSxHQUFFLENBQUM7QUFBQSxFQUFDLEdBQUUsZUFBZSxHQUFFLEdBQUU7QUFBQyxXQUFPLE1BQUksSUFBRSxFQUFFLElBQUcsUUFBUSxlQUFlLEdBQUUsQ0FBQztBQUFBLEVBQUMsR0FBRSxRQUFRLEdBQUU7QUFBQyxXQUFPLE1BQUksSUFBRSxFQUFFLElBQUcsUUFBUSxRQUFRLENBQUM7QUFBQSxFQUFDLEdBQUUseUJBQXlCLEdBQUUsR0FBRTtBQUFDLFdBQU8sTUFBSSxJQUFFLEVBQUUsSUFBRyxRQUFRLHlCQUF5QixHQUFFLENBQUM7QUFBQSxFQUFDLEdBQUUsZUFBZSxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQU8sTUFBSSxJQUFFLEVBQUUsSUFBRyxRQUFRLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQSxFQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxFQUFFLEdBQUU7QUFBQyxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU8sRUFBRSxTQUFTLElBQUU7QUFBSSxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU0sSUFBSSxDQUFDO0FBQUksU0FBTSxHQUFHLENBQUM7QUFBRTtBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxPQUFPLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFJO0FBQUMsV0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVEsY0FBWSxFQUFFLENBQUMsRUFBRSxLQUFLLFdBQVM7QUFBQSxFQUFVLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFDLFNBQVEsQ0FBQyxPQUFPLGtCQUFpQixPQUFPLGdCQUFnQixHQUFFLE9BQU0sQ0FBQyxhQUFZLFVBQVUsR0FBRSxRQUFPLENBQUMsR0FBRSxVQUFVLEdBQUUsU0FBUSxDQUFDLHVCQUF5QyxvQkFBdUMsR0FBRSxTQUFRLENBQUMsQ0FBQyxPQUFPLFdBQVUsT0FBTyxTQUFTLEVBQUM7QUFBOVAsSUFBZ1EsS0FBRyxFQUFDLE9BQU0sQ0FBQyxPQUFPLHNCQUFzQixHQUFFLE9BQU8scUJBQXFCLENBQUMsR0FBRSxRQUFPLENBQUMsT0FBTyxDQUFDLEdBQUUsT0FBTyxzQkFBc0IsQ0FBQyxFQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEtBQUs7QUFBSSxXQUFRLEtBQUssR0FBRTtBQUFDLFFBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxPQUFNLE1BQU0sc0JBQXNCLENBQUMsR0FBRztBQUFFLFFBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUFTLE1BQUUsQ0FBQyxJQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFBQztBQUFDLFNBQU8sR0FBRyxHQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksTUFBSyxHQUFFLElBQUUsRUFBRSxLQUFLO0FBQUksV0FBUSxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sT0FBTSxNQUFNLHNCQUFzQixDQUFDLEdBQUc7QUFBRSxRQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFBUyxXQUFPLEVBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEdBQUcsR0FBRSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksT0FBTSxHQUFFLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLGtEQUFrRDtBQUFFLE1BQUksSUFBRSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksSUFBSSxRQUFPO0FBQUMsUUFBSSxJQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxPQUFNLEdBQUcsRUFBQztBQUFFLFdBQU8sR0FBRyxNQUFLLFNBQVEsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLFFBQU8sQ0FBQyxFQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxJQUFJLFFBQU87QUFBQyxRQUFJLElBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLE9BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxNQUFLO0FBQUUsV0FBTyxHQUFHLE1BQUssU0FBUSxDQUFDLEdBQUU7QUFBQSxFQUFDLEdBQUUsVUFBUyxFQUFFLEtBQUssSUFBSSxVQUFTLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLEtBQUssSUFBSSxPQUFNLElBQUUsRUFBQyxHQUFHLEVBQUM7QUFBRSxNQUFHLEVBQUUsVUFBUSxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU0sTUFBTSxzQkFBc0IsQ0FBQyxHQUFHO0FBQUUsUUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQVMsTUFBRSxDQUFDLElBQUUsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFBLE1BQU0sVUFBUSxLQUFLLEVBQUUsR0FBRSxDQUFDLElBQUUsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxLQUFJLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUksT0FBTSxJQUFFLEVBQUMsR0FBRyxFQUFDO0FBQUUsTUFBRyxFQUFFLFVBQVEsS0FBSyxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUssR0FBRyxPQUFNLE1BQU0sc0JBQXNCLENBQUMsR0FBRztBQUFFLFFBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUFTLE1BQUUsQ0FBQyxJQUFFLElBQUksRUFBRSxFQUFDLE1BQUssZUFBYyxXQUFVLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsTUFBTSxVQUFRLEtBQUssRUFBRSxHQUFFLENBQUMsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLGVBQWMsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxLQUFJLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxJQUFFLEdBQUU7QUFBQyxXQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTyxRQUFPLElBQUksS0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQVcsS0FBRyxRQUFNO0FBQUcsU0FBTTtBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sRUFBRSxJQUFJLENBQUMsTUFBSTtBQUFDLFFBQUk7QUFBRSxZQUFPLElBQUUsR0FBRyxTQUFPLEVBQUUsT0FBSyxDQUFDLElBQUcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxHQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sT0FBTyxNQUFJLFdBQVMsSUFBRSxHQUFHO0FBQU87QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxHQUFHLEdBQUUsTUFBSyxFQUFFLFFBQU0sQ0FBQyxFQUFDO0FBQUUsTUFBRyxDQUFDLEVBQUUsU0FBUTtBQUFDLFFBQUksSUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsS0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsS0FBRyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsS0FBRyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsS0FBRztBQUFnQixNQUFFLFVBQVE7QUFBQSxFQUFDO0FBQUMsTUFBRyxPQUFPLEVBQUUsTUFBSyxPQUFPLEVBQUUsVUFBUyxDQUFDLEdBQUcsWUFBWSxRQUFPLEVBQUU7QUFBTSxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUcsYUFBYSxJQUFJLFFBQU07QUFBTSxNQUFHLGFBQWEsSUFBSSxRQUFNO0FBQU0sTUFBRyxhQUFhLEtBQUssUUFBTTtBQUFPLFNBQU07QUFBUztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU07QUFBUyxTQUFNO0FBQVM7QUFBQyxTQUFTLE1BQU0sR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUUsTUFBRyxPQUFPLE1BQUksU0FBUyxRQUFNLEVBQUMsU0FBUSxHQUFFLE1BQUssVUFBUyxPQUFNLEdBQUUsTUFBSyxFQUFDO0FBQUUsU0FBTSxFQUFDLEdBQUcsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE9BQU8sUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRSxDQUFDLE1BQUk7QUFBQyxXQUFPLE9BQU8sTUFBTSxPQUFPLFNBQVMsR0FBRSxFQUFFLENBQUM7QUFBQSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBSSxFQUFFLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQVE7QUFBQSxFQUFDLGVBQWUsR0FBRTtBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsT0FBSyxhQUFZLE9BQU8sZUFBZSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUUsTUFBSyxZQUFXLE1BQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZSxHQUFFLFVBQVMsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxXQUFVLEVBQUMsTUFBSztBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsSUFBRyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsS0FBRSxDQUFDO0FBQUM7QUFBaFAsSUFBa1AsS0FBRyxFQUFFLGFBQVksRUFBRTtBQUFyUSxJQUF1USxLQUFHLEVBQUUsYUFBWSxJQUFHLEVBQUMsUUFBTyxNQUFLLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxJQUFFLENBQUMsTUFBSSxFQUFFLFNBQVE7QUFBQyxNQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFLFdBQVEsS0FBSyxFQUFFLE9BQU8sS0FBRyxF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TyxHQUFFLFVBQVEsRUFBRSxRQUFNLENBQUMsS0FBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLE1BQUksRUFBRSxDQUFDLElBQUUsRUFBQyxRQUFPLENBQUMsRUFBQyxJQUFHLElBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFHLEVBQUUsR0FBRSxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7QUFBRTtBQUFBLE1BQUc7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFFLFNBQU8sRUFBRSxDQUFDLEdBQUU7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLENBQUM7QUFBRSxXQUFRLEtBQUssRUFBRSxLQUFHLE9BQU8sTUFBSSxTQUFTLEdBQUUsS0FBSyxJQUFJLENBQUMsR0FBRztBQUFBLFdBQVUsT0FBTyxNQUFJLFNBQVMsR0FBRSxLQUFLLElBQUksS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRztBQUFBLFdBQVUsU0FBUyxLQUFLLENBQUMsRUFBRSxHQUFFLEtBQUssSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLEdBQUc7QUFBQSxPQUFNO0FBQUMsUUFBRyxFQUFFLE9BQU8sR0FBRSxLQUFLLEdBQUc7QUFBRSxNQUFFLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEVBQUUsS0FBSyxFQUFFO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUUsTUFBSSxFQUFFLEtBQUssU0FBTyxFQUFFLEtBQUssTUFBTTtBQUFFLFdBQVEsS0FBSyxFQUFFLEtBQUcsRUFBRSxLQUFLLFVBQUssRUFBRSxPQUFPLEVBQUUsR0FBRSxFQUFFLE1BQU0sT0FBTyxHQUFFLEtBQUssZUFBVSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFBRSxTQUFPLEVBQUUsS0FBSztBQUFBLENBQ3prbkY7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLE1BQUksQ0FBQyxHQUFFLEdBQUUs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QUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssT0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFdBQU0sQ0FBQyxHQUFHLENBQUMsS0FBRyxFQUFFLFNBQU87QUFBQSxFQUFNLEdBQUUsRUFBRSxLQUFLLFNBQVMsS0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxLQUFLLElBQUksV0FBUyxPQUFPO0FBQWtCLFFBQUcsRUFBRSxVQUFRLEVBQUUsR0FBRSxLQUFLLElBQUksVUFBUSxFQUFFO0FBQUEsRUFBTyxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLEVBQUUsUUFBTSxFQUFFLFFBQVE7QUFBTyxNQUFFLE9BQU8sS0FBSyxFQUFDLFFBQU8sR0FBRyxDQUFDLEdBQUUsTUFBSyxXQUFVLFNBQVEsRUFBRSxTQUFRLE9BQU0sR0FBRSxNQUFLLEdBQUUsVUFBUyxDQUFDLEVBQUUsTUFBSyxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBbnVHLElBQXF1RyxLQUFHLEVBQUUsb0JBQW1CLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxPQUFLLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sV0FBTSxDQUFDLEdBQUcsQ0FBQyxLQUFHLEVBQUUsU0FBTztBQUFBLEVBQU0sR0FBRSxFQUFFLEtBQUssU0FBUyxLQUFLLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLEtBQUssSUFBSSxXQUFTLE9BQU87QUFBa0IsUUFBRyxFQUFFLFVBQVEsRUFBRSxHQUFFLEtBQUssSUFBSSxVQUFRLEVBQUU7QUFBQSxFQUFPLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxRQUFNLEVBQUUsUUFBUTtBQUFPLE1BQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxHQUFHLENBQUMsR0FBRSxNQUFLLGFBQVksU0FBUSxFQUFFLFNBQVEsT0FBTSxHQUFFLE1BQUssR0FBRSxVQUFTLENBQUMsRUFBRSxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUE3bUgsSUFBK21ILEtBQUcsRUFBRSx1QkFBc0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLE9BQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxXQUFNLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxTQUFPO0FBQUEsRUFBTSxHQUFFLEVBQUUsS0FBSyxTQUFTLEtBQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsS0FBSztBQUFJLE1BQUUsVUFBUSxFQUFFLE1BQUssRUFBRSxVQUFRLEVBQUUsTUFBSyxFQUFFLE9BQUssRUFBRTtBQUFBLEVBQUksQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLE9BQU0sSUFBRSxFQUFFO0FBQUssUUFBRyxNQUFJLEVBQUUsS0FBSztBQUFPLFFBQUksSUFBRSxJQUFFLEVBQUU7QUFBSyxNQUFFLE9BQU8sS0FBSyxFQUFDLFFBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFFLEVBQUMsTUFBSyxXQUFVLFNBQVEsRUFBRSxLQUFJLElBQUUsRUFBQyxNQUFLLGFBQVksU0FBUSxFQUFFLEtBQUksR0FBRSxXQUFVLE1BQUcsT0FBTSxNQUFHLE9BQU0sRUFBRSxPQUFNLE1BQUssR0FBRSxVQUFTLENBQUMsRUFBRSxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUE3aUksSUFBK2lJLEtBQUcsRUFBRSxzQkFBcUIsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLE9BQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxXQUFNLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxXQUFTO0FBQUEsRUFBTSxHQUFFLEVBQUUsS0FBSyxTQUFTLEtBQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsS0FBSyxJQUFJLFdBQVMsT0FBTztBQUFrQixRQUFHLEVBQUUsVUFBUSxFQUFFLEdBQUUsS0FBSyxJQUFJLFVBQVEsRUFBRTtBQUFBLEVBQU8sQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sUUFBRyxFQUFFLFVBQVEsRUFBRSxRQUFRO0FBQU8sUUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLE1BQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxHQUFFLE1BQUssV0FBVSxTQUFRLEVBQUUsU0FBUSxXQUFVLE1BQUcsT0FBTSxHQUFFLE1BQUssR0FBRSxVQUFTLENBQUMsRUFBRSxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFoOUksSUFBazlJLEtBQUcsRUFBRSxzQkFBcUIsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLE9BQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxXQUFNLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxXQUFTO0FBQUEsRUFBTSxHQUFFLEVBQUUsS0FBSyxTQUFTLEtBQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsS0FBSyxJQUFJLFdBQVMsT0FBTztBQUFrQixRQUFHLEVBQUUsVUFBUSxFQUFFLEdBQUUsS0FBSyxJQUFJLFVBQVEsRUFBRTtBQUFBLEVBQU8sQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sUUFBRyxFQUFFLFVBQVEsRUFBRSxRQUFRO0FBQU8sUUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLE1BQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxHQUFFLE1BQUssYUFBWSxTQUFRLEVBQUUsU0FBUSxXQUFVLE1BQUcsT0FB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LEdBQUUsRUFBRSxJQUFJLEdBQUUsS0FBSyxVQUFRO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksWUFBVztBQUFDLFFBQUUsTUFBSyxFQUFDLFdBQVUsT0FBTSxDQUFDLEdBQUUsRUFBRSxNQUFLLEVBQUMsV0FBVSxRQUFPLENBQUM7QUFBRTtBQUFBLElBQU07QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDdHRhLEVBQUUsT0FBTyxDQUFDLE1BQUksQ0FBQyxHQUFFLElBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBSSxFQUFFLFNBQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFPLENBQUMsSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsTUFBSyxRQUFRLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVM7QUFBQyxRQUFJLElBQUUsVUFBUyxJQUFFLE1BQU0sTUFBSyxJQUFFLENBQUMsSUFBSSxNQUFNLFdBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUFFLFdBQU8sSUFBSSxFQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUs7QUFBQSxDQUM1UixDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUMsT0FBTSxHQUFFLE9BQU0sR0FBRSxPQUFNLEVBQUM7QUFBRSxJQUFJLElBQUUsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsTUFBSTtBQUFFLFFBQUksSUFBRSxDQUFDLElBQUcsRUFBRSxLQUFLLE1BQUksR0FBRSxFQUFFLEtBQUssTUFBSSxFQUFFLEtBQUssT0FBSyxDQUFDLEdBQUUsRUFBRSxLQUFLLFVBQVE7QUFBRyxNQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLFVBQVEsQ0FBQyxDQUFDO0FBQUUsTUFBRyxFQUFFLEtBQUssT0FBTyxJQUFJLFdBQVcsRUFBRSxHQUFFLFFBQVEsQ0FBQztBQUFFLFdBQVEsS0FBSyxFQUFFLFVBQVEsS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsV0FBUyxFQUFFLEVBQUMsSUFBRSxFQUFFLE1BQU0sYUFBVyxFQUFFLFdBQVMsQ0FBQyxJQUFHLEVBQUUsS0FBSyxVQUFVLEtBQUssTUFBSTtBQUFDLE1BQUUsS0FBSyxNQUFJLEVBQUUsS0FBSztBQUFBLEVBQUssQ0FBQztBQUFBLE9BQU07QUFBQyxRQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFVBQUksSUFBRSxHQUFHLENBQUMsR0FBRTtBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUMsWUFBRyxFQUFFLEtBQUssTUFBSztBQUFDLGNBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFBQSxRQUFRLFdBQVMsRUFBRTtBQUFTLFlBQUksSUFBRSxFQUFFLE9BQU8sUUFBTyxJQUFFLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxZQUFHLGFBQWEsV0FBUyxHQUFHLFVBQVEsTUFBRyxPQUFNLElBQUk7QUFBRyxZQUFHLEtBQUcsYUFBYSxRQUFRLE1BQUcsS0FBRyxRQUFRLFFBQVEsR0FBRyxLQUFLLFlBQVM7QUFBQyxjQUFHLE1BQU0sR0FBRSxFQUFFLE9BQU8sV0FBUyxFQUFFO0FBQU8sY0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLFFBQUMsQ0FBQztBQUFBLGFBQU07QUFBQyxjQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUU7QUFBUyxjQUFHLENBQUMsRUFBRSxLQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxVQUFHLEVBQUUsUUFBTyxFQUFFLEtBQUssTUFBSTtBQUFDLGVBQU87QUFBQSxNQUFDLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFFLE1BQUUsS0FBSyxNQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsS0FBSyxNQUFNLEdBQUUsQ0FBQztBQUFFLFVBQUcsYUFBYSxTQUFRO0FBQUMsWUFBRyxFQUFFLFVBQVEsTUFBRyxPQUFNLElBQUk7QUFBRyxlQUFPLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsSUFBRSxXQUFXLElBQUUsRUFBQyxVQUFTLENBQUMsTUFBSTtBQUFDLFFBQUc7QUFBQyxVQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxhQUFPLEVBQUUsVUFBUSxFQUFDLE9BQU0sRUFBRSxLQUFJLElBQUUsRUFBQyxRQUFPLEVBQUUsT0FBTyxPQUFNO0FBQUEsSUFBQyxTQUFPLEdBQUU7QUFBQyxhQUFPLEdBQUcsR0FBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxVQUFRLEVBQUMsT0FBTSxFQUFFLEtBQUksSUFBRSxFQUFDLFFBQU8sRUFBRSxPQUFPLE9BQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDLEdBQUUsUUFBTyxPQUFNLFNBQVEsRUFBQztBQUFDLENBQUM7QUFBbm1DLElBQXFtQyxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssVUFBUSxDQUFDLEdBQUcsR0FBRyxLQUFLLEtBQUssWUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRyxFQUFFLE9BQU8sS0FBRztBQUFDLFFBQUUsUUFBTSxPQUFPLEVBQUUsS0FBSztBQUFBLElBQUMsU0FBTyxHQUFFO0FBQUEsSUFBQztBQUFDLFFBQUcsT0FBTyxFQUFFLFVBQVEsU0FBUyxRQUFPO0FBQUUsV0FBTyxFQUFFLE9B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TUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLE1BQUUsUUFBTSxNQUFNLEVBQUUsTUFBTTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE9BQU8sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBSSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLElBQUUsTUFBTSxDQUFDLElBQUUsRUFBRTtBQUFLO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsT0FBTyxPQUFPLEtBQUcsRUFBRSxDQUFDLE1BQUksT0FBTyxLQUFHLEtBQUssRUFBRSxHQUFFLE1BQU0sQ0FBQyxJQUFFO0FBQUEsTUFBWSxHQUFFLE1BQU0sQ0FBQyxJQUFFLEVBQUU7QUFBQSxNQUFXLEdBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUEsV0FBVSxFQUFFLFVBQVEsUUFBTztBQUFDLFFBQUcsS0FBSyxFQUFFLEdBQUUsTUFBTSxDQUFDLElBQUU7QUFBQSxFQUFNLE1BQU0sR0FBRSxNQUFNLENBQUMsSUFBRSxFQUFFO0FBQUs7QUFBQyxJQUFJLEtBQUcsRUFBRSxjQUFhLENBQUMs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LENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUU7QUFBTyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFPLEVBQUUsT0FBTyxLQUFLLEVBQUMsVUFBUyxVQUFTLE1BQUssZ0JBQWUsT0FBTSxHQUFFLE1BQUssRUFBQyxDQUFDLEdBQUU7QUFBRSxRQUFJLElBQUUsQ0FBQztBQUFFLFFBQUcsS0FBRyxLQUFHLEdBQUcsVUFBUSxTQUFJLEVBQUUsWUFBVSxNQUFHO0FBQUMsVUFBRyxDQUFDLEVBQUUsS0FBRSxFQUFFLEVBQUUsS0FBSztBQUFFLFVBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxJQUFDLE9BQUs7QUFBQyxRQUFFLFFBQU0sQ0FBQztBQUFFLFVBQUksSUFBRSxFQUFFO0FBQU0sZUFBUSxLQUFLLEVBQUUsTUFBSztBQUFDLFlBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsS0FBSyxVQUFRLGNBQVksRUFBRSxLQUFLLFdBQVM7QUFBVyxZQUFHLGNBQWMsUUFBUSxHQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBSyxLQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsaUJBQVUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFPLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxTQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUMsSUFBRTtBQUFFLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLE1BQUssSUFBRSxFQUFFLElBQUk7QUFBSyxhQUFRLEtBQUssT0FBTyxLQUFLLENBQUMsR0FBRTtBQUFDLFVBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtBQUFTLFVBQUcsTUFBSSxTQUFRO0FBQUMsVUFBRSxLQUFLLENBQUM7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxVQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFVBQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxHQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUsscUJBQW9CLE1BQUssR0FBRSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxPQUFPLFFBQU87QUFBRSxXQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJO0FBQUMsYUFBTztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFRLEtBQUssRUFBRSxLQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTyxFQUFFLFFBQU0sRUFBRSxPQUFNO0FBQUUsU0FBTyxFQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUssaUJBQWdCLE9BQU0sRUFBRSxPQUFNLE1BQUssR0FBRSxRQUFPLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssU0FBUSxNQUFJLEVBQUUsUUFBUSxLQUFLLENBQUMsTUFBSSxFQUFFLEtBQUssVUFBUSxVQUFVLElBQUUsYUFBVyxNQUFNLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJLEVBQUUsUUFBUSxLQUFLLENBQUMsTUFBSSxFQUFFLEtBQUssV0FBUyxVQUFVLElBQUUsYUFBVyxNQUFNLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJO0FBQUMsUUFBRyxFQUFFLFFBQVEsTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxRQUFPLElBQUksSUFBSSxFQUFFLFFBQVEsUUFBUSxDQUFDLE1BQUksTUFBTSxLQUFLLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUFFO0FBQUEsRUFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssV0FBVSxNQUFJO0FBQUMsUUFBRyxFQUFFLFFBQVEsTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFLLE9BQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLFFBQVEsSUFBSSxDQUFDLE1BQUksRUFBRSxLQUFLLE9BQU87QUFBRSxhQUFPLElBQUksT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQUksR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUk7QUFBQSxJQUFDO0FBQUM7QUFBQSxFQUFNLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFHLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLFNBQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxLQUFLLElBQUksRUFBQyxPQUFNLEVBQUUsT0FBTSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxVQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssQ0FBQyxHQUFFLElBQUU7QUFBQSxXQUFPO0FBQUMsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU87QUFBRSxVQUFFLEtBQUssQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxDQUFDLEVBQUUsUUFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFB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QUMsQ0FBQztBQUFFLFdBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsTUFBSSxFQUFFLFFBQU0sRUFBQyxPQUFNLE1BQUcsTUFBSyxFQUFDO0FBQUUsTUFBRyxhQUFhLFFBQU0sYUFBYSxRQUFNLENBQUMsTUFBSSxDQUFDLEVBQUUsUUFBTSxFQUFDLE9BQU0sTUFBRyxNQUFLLEVBQUM7QUFBRSxNQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUUsSUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFJLEVBQUUsUUFBUSxDQUFDLE1BQUksRUFBRSxHQUFFLElBQUUsRUFBQyxHQUFHLEdBQUUsR0FBRyxFQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUU7QUFBQyxVQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLE1BQU0sUUFBTSxFQUFDLE9BQU0sT0FBRyxnQkFBZSxDQUFDLEdBQUUsR0FBRyxFQUFFLGNBQWMsRUFBQztBQUFFLFFBQUUsQ0FBQyxJQUFFLEVBQUU7QUFBQSxJQUFJO0FBQUMsV0FBTSxFQUFDLE9BQU0sTUFBRyxNQUFLLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxNQUFNLFFBQVEsQ0FBQyxLQUFHLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxRQUFHLEVBQUUsV0FBUyxFQUFFLE9BQU8sUUFBTSxFQUFDLE9BQU0sT0FBRyxnQkFBZSxDQUFDLEVBQUM7QUFBRSxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBTSxRQUFNLEVBQUMsT0FBTSxPQUFHLGdCQUFlLENBQUMsR0FBRSxHQUFHLEVBQUUsY0FBYyxFQUFDO0FBQUUsUUFBRSxLQUFLLEVBQUUsSUFBSTtBQUFBLElBQUM7QUFBQyxXQUFNLEVBQUMsT0FBTSxNQUFHLE1BQUssRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsT0FBTSxPQUFHLGdCQUFlLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUFFLE1BQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxFQUFFLE1BQU07QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxNQUFJLElBQUUsR0FBRyxFQUFFLE9BQU0sRUFBRSxLQUFLO0FBQUUsTUFBRyxDQUFDLEVBQUUsTUFBTSxPQUFNLE1BQU0sd0NBQXdDLEtBQUssVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUFFO0FBQUUsU0FBTyxFQUFFLFFBQU0sRUFBRSxNQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxhQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLE9BQU0sSUFBRSxFQUFFLFNBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLE1BQUksRUFBRSxLQUFLLFVBQVEsVUFBVTtBQUFFLElBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFPLEVBQUUsT0FBTyxLQUFLLEVBQUMsT0FBTSxHQUFFLE1BQUssR0FBRSxVQUFTLFNBQVEsTUFBSyxlQUFjLENBQUMsR0FBRTtBQUFFLE1BQUUsUUFBTSxDQUFDO0FBQUUsUUFBSSxJQUFFLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxNQUFLO0FBQUMsVUFBSSxJQUFFLEVBQUUsU0FBTyxFQUFFLFFBQU8sSUFBRSxFQUFFLFNBQU8sSUFBRTtBQUFFLFVBQUcsS0FBRyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxPQUFNLEdBQUUsTUFBSyxHQUFFLFFBQU8sU0FBUSxHQUFHLElBQUUsRUFBQyxNQUFLLFdBQVUsU0FBUSxFQUFFLE9BQU0sSUFBRSxFQUFDLE1BQUssYUFBWSxTQUFRLEVBQUUsT0FBTSxFQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxRQUFJLElBQUU7QUFBRyxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUcsS0FBSSxLQUFHLEVBQUUsUUFBTztBQUFDLFlBQUcsS0FBRyxFQUFFO0FBQUEsTUFBUTtBQUFDLFVBQUksSUFBRSxFQUFFLEtBQUssSUFBSSxFQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE1BQUs7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTTtBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUM7QUFBSSxZQUFJLElBQUUsRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFDLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxZQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFlBQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE9BQU8sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBSSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLElBQUUsTUFBTSxDQUFDLElBQUUsRUFBRTtBQUFLO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sUUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLFVBQVMsTUFBSyxnQkFBZSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLFFBQVEsS0FBSyxRQUFPO0FBQUMsVUFBSSxJQUFFLEVBQUUsUUFBUSxLQUFLO0FBQU8sUUFBRSxRQUFNLENBQUM7QUFBRSxlQUFRLEtBQUssRUFBRSxLQUFHLE9BQU8sTUFBSSxZQUFVLE9BQU8sTUFBSSxZQUFVLE9BQU8sTUFBSSxVQUFTO0FBQUMsWUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEVBQUUsQ0FBQyxHQUFFLFFBQU8sQ0FBQyxFQUFDLEdBQUUsQ0FBQztBQUFFLFlBQUcsYUFBYSxRQUFRLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsY0FBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLFlBQUUsTUFBTSxDQUFDLElBQUUsRUFBRTtBQUFBLFFBQUssQ0FBQyxDQUFDO0FBQUEsYUFBTTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sQ0FBQyxJQUFFLEVBQUU7QUFBQSxRQUFLO0FBQUEsTUFBQztBQUFDLFVBQUk7QUFBRSxlQUFRLEtBQUssRUFBRSxLQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUUsVUFBRyxLQUFHLEVBQUUsU0FBTyxFQUFFLEdBQUUsT0FBTyxLQUFLLEVBQUMsTUFBSyxxQkFBb0IsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLEVBQUMsQ0FBQztBQUFBLElBQUMsT0FBSztBQUFDLFFBQUUsUUFBTSxDQUFDO0FBQUUsZUFBUSxLQUFLLFFBQVEsUUFBUSxDQUFDLEdBQUU7QUFBQyxZQUFHLE1BQUksWUFBWTtBQUFTLFlBQUksSUFBRSxFQUFFLFFBQVEsS0FBSyxJQUFJLEVBQUMsT0FBTSxHQUFFLFFBQU8sQ0FBQyxFQUFDLEdBQUUsQ0FBQztBQUFFLFlBQUcsYUFBYSxRQUFRLE9BQU0sTUFBTSxzREFBc0Q7QUFBRSxZQUFHLEVBQUUsT0FBTyxRQUFPO0FBQUMsWUFBRSxPQUFPLEtBQUssRUFBQyxRQUFPLFVBQVMsTUFBSyxlQUFjLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsT0FBTSxHQUFFLE1BQUssQ0FBQyxDQUFDLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFNO0FBQUEsUUFBUTtBQUFDLFlBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxZQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFBLFFBQUssQ0FBQyxDQUFDO0FBQUEsYUFBTTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFBLFFBQUs7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxPQUFPLFFBQU8sUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQUksQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUE3M0MsSUFBKzNDLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLEVBQUUsYUFBYSxLQUFLLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLE9BQU0sTUFBSyxnQkFBZSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsTUFBRSxRQUFNLG9CQUFJO0FBQUksYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFDLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFdBQVMsYUFBYSxRQUFRLEdBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUUsQ0FBQyxNQUFJO0FBQUMsV0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxPQUFPLE9BQU8sS0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUFPLEdBQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxPQUFNLE1BQUssZUFBYyxPQUFNLEdBQUUsTUFBSyxHQUFFLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztBQUFFLE1BQUcsRUFBRSxPQUFPLE9BQU8sS0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUFPLEdBQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxPQUFNLE1BQUssbUJBQWtCLE9BQU0sR0FBRSxNQUFLLEdBQUUsS0FBSSxHQUFFLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztBQUFFLElBQUUsTUFBTSxJQUFJLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxhQUFhLEtBQUssUUFBTyxFQUFFLE9BQU8sS0FBSyxFQUFDLE9BQU0sR0FBRSxNQUFLLEdBQUUsVUFBUyxPQUFNLE1BQUssZUFBYyxDQUFDLEdBQUU7QUFBRSxRQUFJLElBQUUsQ0FBQztBQUFFLE1BQUUsUUFBTSxvQkFBSTtBQUFJLGFBQVEsS0FBSyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsVUFBTyxJQUFHLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUFFLElBQUUsTUFBTSxJQUFJLEVBQUUsS0FBSztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUM7QUFBRSxNQUFJLElBQUUsR0FBRyxFQUFFLE9BQU87QUFBRSxJQUFFLEtBQUssU0FBTyxJQUFJLElBQUksQ0FBQyxHQUFFLEVBQUUsS0FBSyxVQUFRLElBQUksT0FBTyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksT0FBTyxNQUFJLFdBQVMsR0FBRyxDQUFDLElBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQUUsUUFBTztBQUFFLFdBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGlCQUFnQixRQUFPLEdBQUUs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LEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxVQUFVLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFdBQVUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSztBQUFRLFdBQU8sSUFBRSxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBRTtBQUFBLEVBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSTtBQUFDLFdBQU8sRUFBRSxVQUFVLEtBQUssU0FBTyxvQkFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsS0FBSyxRQUFPLElBQUksQ0FBQyxJQUFFO0FBQUEsRUFBTSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxLQUFLLFFBQU87QUFBRSxXQUFPLEVBQUUsVUFBVSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBLzlELElBQWkrRCxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxZQUFXLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRSxRQUFNLEVBQUUsY0FBYTtBQUFFLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEVBQUU7QUFBYSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxnQkFBZSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxZQUFXLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLEdBQUUsUUFBTSxFQUFFO0FBQWEsV0FBTyxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQXROLElBQXdOLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLO0FBQU8sV0FBTyxJQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFJLE1BQUksTUFBTSxDQUFDLElBQUU7QUFBQSxFQUFNLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxFQUFFLE9BQU8sVUFBUSxFQUFFLFVBQVEsT0FBTyxHQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUssZ0JBQWUsVUFBUyxlQUFjLE9BQU0sRUFBRSxPQUFNLE1BQUssRUFBQyxDQUFDO0FBQUUsU0FBTztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGFBQU8sRUFBRSxRQUFNLEVBQUUsT0FBTyxXQUFTLEdBQUU7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsUUFBTSxFQUFFLE9BQU8sV0FBUyxHQUFFO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBek4sSUFBMk4sS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sWUFBVyxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxVQUFVLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxVQUFVLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBRSxRQUFHLGFBQWEsUUFBUSxRQUFPLEVBQUUsS0FBSyxDQUFDLE1BQUk7QUFBQyxVQUFHLEVBQUUsUUFBTSxFQUFFLE9BQU0sRUFBRSxPQUFPLE9BQU8sR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLENBQUMsRUFBQyxHQUFFLE9BQU0sRUFBRSxNQUFLLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFDLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBTSxFQUFFLE9BQU0sRUFBRSxPQUFPLE9BQU8sR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQUksR0FBRyxH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QyxLQUFHLEVBQUUsWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsTUFBSyxhQUFZLE1BQUksRUFBRSxPQUFPLENBQUMsR0FBRSxHQUFHLEVBQUUsTUFBSyxXQUFVLE1BQUksRUFBRSxLQUFLLFVBQVUsS0FBSyxPQUFPLEdBQUUsR0FBRyxFQUFFLE1BQUssY0FBYSxNQUFJLEVBQUUsS0FBSyxVQUFVLEtBQUssVUFBVSxHQUFFLEdBQUcsRUFBRSxNQUFLLFNBQVEsTUFBSSxFQUFFLEtBQUssVUFBVSxLQUFLLEtBQUssR0FBRSxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxLQUFLLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxXQUFPLEVBQUUsS0FBSyxVQUFVLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUF0NkMsSUFBdzZDLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsT0FBTSxJQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxhQUFhLFFBQVEsUUFBTyxFQUFFLEtBQUssQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsT0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSxFQUFNO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBQyxNQUFLLFVBQVMsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxRQUFNLENBQUMsQ0FBQyxHQUFFLFVBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxNQUFLO0FBQUUsUUFBRyxFQUFFLEtBQUssSUFBSSxPQUFPLEdBQUUsU0FBTyxFQUFFLEtBQUssSUFBSTtBQUFPLE1BQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUM7QUFBRSxHQUFHLElBQUcsRUFBQyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksR0FBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxzQkFBTSxNQUFLLHdDQUFTLEdBQUUsTUFBSyxFQUFDLE1BQUssNEJBQU8sTUFBSyx3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RUFBRSxFQUFDLE1BQUssVUFBUyxRQUFPLE1BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFVBQVMsT0FBTSxpQkFBZ0IsT0FBTSxPQUFHLFFBQU8sU0FBUSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxPQUFNLGlCQUFnQixPQUFNLE9BQUcsUUFBTyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxhQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssTUFBSyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxRQUFPLE1BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGFBQVksR0FBRyxFQUFFLENBQUMsR0FBRSxPQUFNLEdBQUUsV0FBVSxNQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sYUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLEtBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxnQkFBZSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLE1BQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxnQkFBZSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLEtBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxDQUFD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Q0FBQyxNQUFJLEVBQUUsWUFBWSxDQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsQ0FBQyxNQUFJLEVBQUUsWUFBWSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxTQUFRLFNBQVEsR0FBRSxlQUFjLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssZ0JBQWUsTUFBSyxHQUFFLE9BQU0sRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxhQUFhO0FBQUUsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFNBQVEsT0FBTSxHQUFFLE1BQUssSUFBRSxJQUFFLE1BQUssR0FBRyxFQUFFLElBQUUsSUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssT0FBTSxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLE9BQU0sV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLE1BQU0sUUFBUSxDQUFDLElBQUUsT0FBTyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUU7QUFBRSxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssV0FBVSxRQUFPLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssYUFBWSxXQUFVLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLFdBQVUsR0FBRSxJQUFJLGVBQWM7QUFBQyxXQUFPLE9BQU8sTUFBSSxhQUFXLEVBQUUsSUFBRTtBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssZUFBYyxXQUFVLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFdBQVUsV0FBVSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxTQUFRLFdBQVUsR0FBRSxZQUFXLE9BQU8sTUFBSSxhQUFXLElBQUUsTUFBSSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsR0FBRSxLQUFJLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssb0JBQW1CLE9BQU0sR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxRQUFPLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTyxFQUFFLFVBQVEsRUFBRSxRQUFNLE9BQUksSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLEdBQUUsR0FBRyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFRLENBQUMsUUFBTyxLQUFJLE9BQU0sTUFBSyxLQUFJLFNBQVMsR0FBRSxJQUFFLEVBQUUsU0FBTyxDQUFDLFNBQVEsS0FBSSxNQUFLLE9BQU0sS0FBSSxVQUFVO0FBQUUsTUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksT0FBTyxNQUFJLFdBQVMsRUFBRSxZQUFZLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLE1BQUksV0FBUyxFQUFFLFlBQVksSUFBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLElBQUksSUFBSSxDQUFDLEdBQUUsSUFBRSxJQUFJLElBQUksQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFNLElBQUcsSUFBRSxFQUFFLFdBQVMsSUFBRyxJQUFFLEVBQUUsVUFBUSxJQUFHLElBQUUsS0FBSSxFQUFFLGFBQVcsSUFBSSxFQUFDLE1BQUssYUFBWSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFO0FBQUUsUUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFFLEVBQUUsWUFBWTtBQUFFLFFBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFNO0FBQUEsYUFBVyxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQU07QUFBQSxRQUFRLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGlCQUFnQixVQUFTLGNBQWEsUUFBTyxDQUFDLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxPQUFNLEVBQUUsT0FBTSxNQUFLLEVBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxFQUFDLEdBQUUsT0FBTSxFQUFFLE1BQUssQ0FBQyxHQUFFLElBQUUsSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sRUFBRSxNQUFLLENBQUMsR0FBRSxLQUFJLEdBQUUsT0FBTSxFQUFFLE1BQUssQ0FBQztBQUFFLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsR0FBRSxLQUFJLElBQUksRUFBRSxFQUFDLE1BQUssV0FBVSxPQUFNLEVBQUUsTUFBSyxDQUFDLEdBQUUsT0FBTSxFQUFFLE1BQUssQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0saUJBQWdCLE1BQUssVUFBUyxRQUFPLEdBQUUsSUFBRyxPQUFPLE1BQUksYUFBVyxJQUFFLENBQUMsTUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFFLEdBQUcsRUFBQztBQUFFLE1BQUcsYUFBYSxPQUFPLEdBQUUsVUFBUTtBQUFFLFNBQU8sSUFBSSxFQUFFLENBQUM7QUFBQztBQUFDLElBQU0sS0FBTixNQUFRO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxTQUFLLE9BQUssR0FBRSxLQUFLLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFVLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxXQUFXLE9BQU0sTUFBTSw0Q0FBNEM7QUFBRSxRQUFJLElBQUUsSUFBSSxNQUFJO0FBQUMsVUFBSSxJQUFFLEtBQUssS0FBSyxRQUFNLEdBQUcsS0FBSyxLQUFLLE9BQU0sR0FBRSxRQUFPLEVBQUMsUUFBTyxFQUFDLENBQUMsSUFBRTtBQUFFLFVBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLE9BQU0sTUFBTSx5REFBeUQ7QUFBRSxVQUFJLElBQUUsRUFBRSxHQUFHLENBQUM7QUFBRSxhQUFPLEtBQUssS0FBSyxTQUFPLEdBQUcsS0FBSyxLQUFLLFFBQU8sR0FBRSxRQUFPLEVBQUMsUUFBTyxFQUFDLENBQUMsSUFBRTtBQUFBLElBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsZUFBZSxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksV0FBVyxPQUFNLE1BQU0sNENBQTRDO0FBQUUsUUFBSSxJQUFFLFVBQVMsTUFBSTtBQUFDLFVBQUksSUFBRSxLQUFLLEtBQUssUUFBTSxNQUFNLEdBQUcsS0FBSyxLQUFLLE9BQU0sR0FBRSxRQUFPLEVBQUMsUUFBTyxFQUFDLENBQUMsSUFBRTtBQUFFLFVBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLE9BQU0sTUFBTSx5REFBeUQ7QUFBRSxVQUFJLElBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUFFLGFBQU8sS0FBSyxLQUFLLFNBQU8sR0FBRyxLQUFLLEtBQUssUUFBTyxHQUFFLFFBQU8sRUFBQyxRQUFPLEVBQUMsQ0FBQyxJQUFFO0FBQUEsSUFBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUU7QUFBQyxRQUFJLElBQUUsS0FBSztBQUFZLFFBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsT0FBTSxJQUFJLEdBQUcsRUFBQyxNQUFLLFNBQVEsT0FBTSxFQUFFLENBQUMsR0FBRSxNQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRSxRQUFPLEtBQUssS0FBSyxPQUFNLENBQUM7QUFBRSxXQUFPLElBQUksRUFBRSxFQUFDLE1BQUssWUFBVyxPQUFNLEVBQUUsQ0FBQyxHQUFFLFFBQU8sS0FBSyxLQUFLLE9BQU0sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFdBQU8s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RSxVQUFRO0FBQUEsa0JBQVksUUFBTyxFQUFFLFdBQVM7QUFBQSxZQUFNLENBQUMsQ0FBQztBQUFFLGdCQUFHLEVBQUUsT0FBSyxFQUFFLEdBQUUsV0FBUyxNQUFNLEtBQUssQ0FBQztBQUFFLGdCQUFHLEVBQUUsVUFBVSxLQUFLLElBQUksU0FBTyxRQUFRLEdBQUUsdUJBQXFCO0FBQUEscUJBQVcsQ0FBQyxFQUFFLFVBQVM7QUFBQyxrQkFBRyxLQUFLLE9BQUssU0FBUyxHQUFFLHVCQUFxQjtBQUFBLFlBQUUsV0FBUyxFQUFFLFNBQVMsR0FBRSx1QkFBcUIsS0FBSyxRQUFRLEVBQUUsVUFBUyxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssc0JBQXNCLEVBQUMsQ0FBQztBQUFFO0FBQUEsVUFBSztBQUFBLFVBQUMsS0FBSSxTQUFRO0FBQUMsZ0JBQUksSUFBRTtBQUFFLGNBQUUsUUFBTSxFQUFFLFFBQVEsSUFBSSxDQUFDLEdBQUUsTUFBSSxLQUFLLFFBQVEsR0FBRSxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUU7QUFBQSxVQUFLO0FBQUEsVUFBQyxLQUFJLGdCQUFlO0FBQUMsZ0JBQUksSUFBRSxHQUFFLElBQUUsS0FBSyxRQUFRLEVBQUUsTUFBSyxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUUsS0FBSyxRQUFRLEVBQUUsT0FBTSxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUUsQ0FBQyxNQUFLLFdBQVUsS0FBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLFdBQVMsR0FBRSxJQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLFFBQU0sQ0FBQyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLFFBQU0sQ0FBQyxDQUFDLENB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RSxFQUFDLFFBQU8sR0FBRyxVQUFRLE9BQU0sUUFBTyxHQUFHLFVBQVEsVUFBUyxVQUFTLEdBQUcsWUFBVSxPQUFNLEdBQUUsSUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLDJDQUEyQztBQUFFLFFBQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxVQUFJLElBQUUsS0FBSyxXQUFTLGtCQUFnQixVQUFRO0FBQWMsVUFBRyxFQUFFLFVBQVM7QUFBQyxZQUFJLElBQUUsRUFBRSxTQUFTLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHO0FBQUcsWUFBRyxFQUFFLFFBQU0sRUFBQyxLQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsRUFBQztBQUFFLFlBQUksSUFBRSxFQUFFLENBQUMsRUFBRSxTQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sTUFBSSxTQUFTLEtBQUssU0FBUztBQUFHLGVBQU8sRUFBRSxDQUFDLEVBQUUsUUFBTSxHQUFFLEVBQUMsT0FBTSxHQUFFLEtBQUksR0FBRyxFQUFFLFNBQVMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFFO0FBQUEsTUFBQztBQUFDLFVBQUcsRUFBRSxDQUFDLE1BQUksRUFBRSxRQUFNLEVBQUMsS0FBSSxJQUFHO0FBQUUsVUFBSSxJQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSSxJQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sTUFBSSxXQUFXLEtBQUssU0FBUztBQUFHLGFBQU0sRUFBQyxPQUFNLEdBQUUsS0FBSSxJQUFFLEVBQUM7QUFBQSxJQUFDLEdBQUUsSUFBRSxDQUFDLE1BQUk7QUFBQyxVQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sS0FBSztBQUFPLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxFQUFDLEtBQUksR0FBRSxPQUFNLEVBQUMsSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLEVBQUUsTUFBSSxFQUFDLEdBQUcsRUFBRSxPQUFNLEdBQUUsRUFBRSxHQUFFLFFBQU07QUFBRSxVQUFJ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QU0sa0NBQWtDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLGFBQWEsSUFBRztBQUFDLFFBQUksSUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLE9BQU8sUUFBUSxHQUFFO0FBQUMsVUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUUsUUFBRSxRQUFRLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUMsVUFBUyxHQUFFLEtBQUksR0FBRyxRQUFNLENBQUMsTUFBSSxJQUFHLE1BQUssRUFBQztBQUFFLGFBQVEsS0FBSyxFQUFFLE9BQU8sUUFBUSxHQUFFO0FBQUMsVUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUUsUUFBRSxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUUsRUFBQyxHQUFHLEdBQUUsVUFBUyxFQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxPQUFPLEtBQUssQ0FBQyxFQUFFLFNBQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLFdBQVMsa0JBQWdCLFVBQVE7QUFBYyxRQUFFLFdBQVMsRUFBQyxDQUFDLENBQUMsR0FBRSxFQUFDO0FBQUEsSUFBQztBQUFDLFdBQU0sRUFBQyxTQUFRLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLElBQUksR0FBRyxDQUFDO0FBQUUsU0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFFLEVBQUUsS0FBSyxHQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBRyxFQUFDLE1BQUssb0JBQUksTUFBRztBQUFFLE1BQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLFFBQU07QUFBRyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsS0FBSztBQUFJLFVBQU8sRUFBRSxNQUFLO0FBQUEsSUFBQyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBWSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBTSxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBUSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBTSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQW1CLGFBQU07QUFBQSxJQUFHLEtBQUk7QUFBUSxhQUFPLEdBQUcsRUFBRSxTQUFRLENBQUM7QUFBQSxJQUFFLEtBQUksVUFBUztBQUFDLGVBQVEsS0FBSyxFQUFFLE1BQU0sS0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUUsQ0FBQyxFQUFFLFFBQU07QUFBRyxhQUFNO0FBQUEsSUFBRTtBQUFBLElBQUMsS0FBSSxTQUFRO0FBQUMsZUFBUSxLQUFLLEVBQUUsUUFBUSxLQUFHLEdBQUcsR0FBRSxDQUFDLEVBQUUsUUFBTTtBQUFHLGFBQU07QUFBQSxJQUFFO0FBQUEsSUFBQyxLQUFJO0FBQWUsYUFBTyxHQUFHLEVBQUUsTUFBSyxDQUFDLEtBQUcsR0FBRyxFQUFFLE9BQU0sQ0FBQztBQUFBLElBQUUsS0FBSSxTQUFRO0FBQUMsZUFBUSxLQUFLLEVBQUUsTUFBTSxLQUFHLEdBQUcsR0FBRSxDQUFDLEVBQUUsUUFBTTtBQUFHLFVBQUcsRUFBRSxRQUFNLEdBQUcsRUFBRSxNQUFLLENBQUMsRUFBRSxRQUFNO0FBQUcsYUFBTTtBQUFBLElBQUU7QUFBQSxJQUFDLEtBQUk7QUFBUyxhQUFPLEdBQUcsRUFBRSxTQUFRLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQU0sYUFBTyxHQUFHLEVBQUUsU0FBUSxDQUFDLEtBQUcsR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFNLGFBQU8sR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFBLElBQVUsS0FBSTtBQUFBLElBQVcsS0FBSTtBQUFBLElBQWMsS0FBSTtBQUFBLElBQVcsS0FBSTtBQUFXLGFBQU8sR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFPLGFBQU8sR0FBRyxFQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVUsYUFBTyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVcsYUFBTyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVMsYUFBTTtBQUFBLElBQUcsS0FBSTtBQUFZLGFBQU07QUFBQSxJQUFHLEtBQUk7QUFBTyxhQUFPLEdBQUcsRUFBRSxJQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsS0FBSSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVUsYUFBTTtBQUFBLElBQUcsS0FBSTtBQUFRLGFBQU07QUFBQSxJQUFHO0FBQUEsRUFBUTtBQUFDLFFBQU0sTUFBTSx3QkFBd0IsRUFBRSxJQUFJLEVBQUU7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUcsQ0FBQyxFQUFFLEtBQUssT0FBTSxNQUFNLHNDQUFzQztBQUFFLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksR0FBRSxFQUFFLFFBQU0sQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRSxFQUFDLFFBQU8sRUFBRSxNQUFLLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsYUFBVyxPQUFNLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUMsUUFBTyxFQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsaUJBQWUsT0FBTSxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxJQUFJLE1BQUk7QUFBQyxXQUFPLEVBQUUsTUFBTSxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRyxFQUFFLFVBQVEsQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLE1BQUksYUFBVyxFQUFDLE1BQUssRUFBQyxPQUFNLEdBQUUsS0FBSSxFQUFDLE9BQU0sU0FBUSxHQUFFLFVBQVMsQ0FBQyxFQUFDLEVBQUMsSUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxRQUFNLE1BQUksR0FBRSxFQUFFLFdBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxXQUFPLEVBQUUsSUFBSSxHQUFFLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsaUJBQWdCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFdBQVcsR0FBRSxTQUFRLE1BQUksRUFBRSxLQUFLO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxNQUFLLFVBQVMsSUFBSSxRQUFPO0FBQUMsV0FBTyxFQUFFLFdBQVcsTUFBSyxTQUFRLEVBQUMsR0FBRyxFQUFDLENBQUMsR0FBRSxLQUFLO0FBQUEsRUFBSyxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDO0FBQUUsU0FBTyxJQUFJLEdBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLENBQUMsQ0FBQyxFQUFFO0FBQUk7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxPQUFPLE9BQU8sQ0FBQztBQUFFLE1BQUcsRUFBRSxXQUFTLEVBQUUsUUFBTyxHQUFHLENBQUMsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFFLElBQUUsRUFBRSxNQUFNLENBQUMsTUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUUsUUFBTSxNQUFNLDhDQUE4QztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sRUFBRSxVQUFVLENBQUM7QUFBQztBQUFDLGVBQWUsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sTUFBTSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sTUFBTSxFQUFFLGVBQWUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUk7QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUUsRUFBRSxNQUFNLEtBQUs7QUFBQSxNQUFXLEtBQUUsRUFBRTtBQUFNLE1BQUcsQ0FBQyxFQUFFO0FBQU8sTUFBRyxPQUFPLE1BQUksV0FBVyxLQUFHO0FBQUMsV0FBTyxFQUFFO0FBQUEsRUFBQyxRQUFNO0FBQUM7QUFBQSxFQUFNO0FBQUMsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxRQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsUUFBRyxDQUFDLEVBQUUsUUFBTSxDQUFDLEVBQUUsTUFBSztBQUFDLFVBQUksSUFBRSxPQUFPLE9BQU8sQ0FBQztBQUFFLFVBQUcsRUFBRSxTQUFPLEtBQUcsRUFBRSxNQUFNLENBQUMsTUFBSSxPQUFPLE1BQUksWUFBVSxNQUFJLFNBQU8sRUFBRSxTQUFPLFVBQVEsRUFBRSxTQUFPLFVBQVEsT0FBTyxFQUFFLFVBQVEsV0FBVyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxNQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBTTtBQUFJLFFBQUcsTUFBSSxFQUFFLFNBQU8sWUFBVSxFQUFFLFVBQVEsUUFBUSxRQUFPO0FBQUEsRUFBQyxXQUFTLEVBQUUsVUFBUSxPQUFPLFFBQU87QUFBRTtBQUFNO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEtBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxRQUFHLGFBQVksS0FBRyxPQUFPLEVBQUUsWUFBVSxTQUFTLFFBQU8sRUFBRTtBQUFRLFFBQUcsWUFBVyxLQUFHLE1BQU0sUUFBUSxFQUFFLE1BQU0sS0FBRyxFQUFFLE9BQU8sU0FBTyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUUsVUFBRyxLQUFHLE9BQU8sTUFBSSxZQUFVLGFBQVksRUFBRSxRQUFPLE9BQU8sRUFBRSxPQUFPO0FBQUEsSUFBQztBQUFDLFFBQUc7QUFBQyxhQUFPLEtBQUssVUFBVSxDQUFDO0FBQUEsSUFBQyxRQUFNO0FBQUMsYUFBTyxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU8sT0FBTyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sRUFBRTtBQUFXO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxNQUFNLEtBQUssU0FBTztBQUFXLE1BQUksSUFBRTtBQUFFLE1BQUcsT0FBTyxFQUFFLGVBQWEsV0FBVyxRQUFPLEVBQUUsV0FBVztBQUFFLFNBQU8sRUFBRSxNQUFNLGFBQVc7QUFBYTtBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE1BQU07QUFBSSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRTtBQUFNLFVBQUcsTUFBTSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLEVBQUUsUUFBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUU7QUFBSyxNQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRTtBQUFNLFFBQUcsTUFBTSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLEVBQUUsUUFBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBQyxNQUFJLElBQUUsRUFBRTtBQUFNLE1BQUcsTUFBSSxPQUFPLFFBQU87QUFBRTtBQUFNO0FBQUMsSUFBSSxJQUFFLENBQUM7QUFBRSxHQUFHLEdBQUUsRUFBQyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFFBQU8sTUFBSSxHQUFFLGNBQWEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxRQUFPLE1BQUksR0FBRSxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksR0FBRSxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsb0JBQW1CLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxvQkFBbUIsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGlCQUFnQixNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsaUJBQWdCLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsaUJBQWdCLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsZ0JBQWUsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLHVCQUFzQixNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsdUJBQXNCLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFFBQU8sTUFBSSxHQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsQ0FBQztBQUFFLEdBQUcsSUFBRyxFQUFDLE1BQUssTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsWUFBVyxNQUFJLEdBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLGtCQUFpQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsa0JBQWlCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFLLFlBQVcsT0FBTyxpQkFBaUIsR0FBRSxFQUFDLFFBQU8sRUFBQyxPQUFNLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE9BQU0sQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEVBQUMsR0FBRSxVQUFTLEVBQUMsT0FBTSxDQUFDLE1BQUksRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLE9BQU0sQ0FBQyxNQUFJLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE1BQUs7QUFBQyxXQUFPLEVBQUUsT0FBTyxXQUFTO0FBQUEsRUFBQyxFQUFDLEVBQUMsQ0FBQztBQUFDO0FBQWpRLElBQW1RLEtBQUcsRUFBRSxZQUFXLEVBQUU7QUFBclIsSUFBdVIsS0FBRyxFQUFFLFlBQVcsSUFBRyxFQUFDLFFBQU8sTUFBSyxDQUFDO0FBQUUsSUFBSSxLQUFHLEdBQUcsRUFBRTtBQUFaLElBQWMsS0FBRyxHQUFHLEVBQUU7QUFBdEIsSUFBd0IsS0FBRyxHQUFHLEVBQUU7QUFBaEMsSUFBa0MsS0FBRyxHQUFHLEVBQUU7QUFBRSxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxFQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFJLEdBQUUsT0FBTyxlQUFlLEdBQUUsUUFBTyxFQUFDLE9BQU0sRUFBQyxDQUFDLEdBQUUsRUFBRSxRQUFNLElBQUksTUFBSTtBQUFDLFdBQU8sRUFBRSxNQUFNLEVBQUMsR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFHLEVBQUUsVUFBUSxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLE9BQU8sTUFBSSxhQUFXLEVBQUMsTUFBSyxFQUFDLE9BQU0sR0FBRSxLQUFJLEVBQUMsT0FBTSxTQUFRLEdBQUUsVUFBUyxDQUFDLEVBQUMsRUFBQyxJQUFFLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsRUFBRSxRQUFNLENBQUMsR0FBRSxNQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFFBQU0sTUFBSSxHQUFFLEVBQUUsV0FBUyxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUMsUUFBTyxFQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsWUFBVSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLE9BQU0sR0FBRSxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBQyxRQUFPLEVBQUUsV0FBVSxDQUFDLEdBQUUsRUFBRSxpQkFBZSxPQUFNLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFJLEVBQUUsZ0JBQWUsRUFBRSxTQUFPLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxNQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsV0FBUyxNQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsVUFBUSxNQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLGNBQVksQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxRQUFNLE1BQUksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFHLENBQUMsTUFBSSxHQUFHLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxZQUFVLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFVBQVEsQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLE1BQUksR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLE1BQU07QUFBRSxXQUFPLEdBQUcsSUFBSSxHQUFFLEVBQUMsYUFBWSxFQUFDLENBQUMsR0FBRTtBQUFBLEVBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxlQUFjLEVBQUMsTUFBSztBQUFDLFdBQU8sR0FBRyxJQUFJLENBQUMsR0FBRztBQUFBLEVBQVcsR0FBRSxjQUFhLEtBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxJQUFJLE1BQUk7QUFBQyxRQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU8sR0FBRyxJQUFJLENBQUM7QUFBRSxRQUFJLElBQUUsRUFBRSxNQUFNO0FBQUUsV0FBTyxHQUFHLElBQUksR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLEVBQUUsYUFBVyxNQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUSxFQUFFLGFBQVcsTUFBSSxFQUFFLFVBQVUsSUFBSSxFQUFFLFNBQVE7QUFBQyxDQUFDO0FBQWx1QyxJQUFvdUMsS0FBRyxFQUFFLGNBQWEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLEtBQUs7QUFBSSxJQUFFLFNBQU8sRUFBRSxVQUFRLE1BQUssRUFBRSxZQUFVLEVBQUUsV0FBUyxNQUFLLEVBQUUsWUFBVSxFQUFFLFdBQVMsTUFBSyxFQUFFLFFBQU0sSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsYUFBVyxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxZQUFVLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRSxFQUFFLFlBQVUsSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLE1BQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFFLEVBQUUsY0FBWSxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFBQyxDQUFDO0FBQXIxRCxJQUF1MUQsS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsWUFBVSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFNLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBN0QsSUFBK0QsS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGdCQUFlLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxVQUFTLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSx5QkFBd0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBRyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFF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R0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLGNBQVksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsYUFBVyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLEtBQUs7QUFBSSxJQUFFLFdBQVMsRUFBRSxXQUFTLE1BQUssRUFBRSxXQUFTLEVBQUUsV0FBUyxNQUFLLEVBQUUsU0FBTyxFQUFFLFVBQVE7QUFBSSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsZ0JBQWUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU8sR0FBRyxFQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxNQUFJLElBQUUsRUFBRSxLQUFLO0FBQUksSUFBRSxVQUFRLEVBQUUsVUFBUSxJQUFJLEtBQUssRUFBRSxPQUFPLElBQUUsTUFBSyxFQUFFLFVBQVEsRUFBRSxVQUFRLElBQUksS0FBSyxFQUFFLE9BQU8sSUFBRTtBQUFJLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxFQUFFLFNBQVEsRUFBRSxNQUFJLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUU7QUFBTyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUk7QUFBTSxTQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFXLEdBQUUsU0FBUSxNQUFJLEVBQUUsS0FBSyxHQUFFLEVBQUUsUUFBTSxNQUFJLEdBQUcsT0FBTyxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFFLEVBQUUsV0FBUyxDQUFDLE1BQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxVQUFTLEVBQUMsQ0FBQyxHQUFFLEVBQUUsY0FBWSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxPQUFNLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJO0FBQUMsV0FBTyxFQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxJQUFJLE1BQUksRUFBRSxRQUFRLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxJQUFJLE1BQUksRUFBRSxTQUFTLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUMsTUFBSyxVQUFTLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxXQUFXLE1BQUssU0FBUSxFQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSztBQUFBLEVBQUssR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQztBQUFFLFNBQU8sSUFBSSxHQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssVUFBUyxJQUFJLFFBQU87QUFBQyxXQUFPLEVBQUUsV0FBVyxNQUFLLFNBQVEsRUFBQyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUs7QUFBQSxFQUFLLEdBQUUsVUFBUyxHQUFHLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxVQUFTLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxXQUFXLE1BQUssU0FBUSxFQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSztBQUFBLEVBQUssR0FBRSxVQUFTLEdBQUcsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsRUFBRTtBQUFPLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFNBQVEsU0FBUSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLHlCQUF3QixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxTQUFRLFNBQVEsR0FBRSxlQUFjLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsbUJBQWtCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxnQkFBZSxNQUFLLEdBQUUsT0FBTSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxNQUFLLEVBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsYUFBYSxHQUFFLElBQUUsSUFBRSxJQUFFO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFNBQVEsT0FBTSxHQUFFLE1BQUssSUFBRSxJQUFFLE1BQUssR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLEVBQUUsU0FBUSxFQUFFLFlBQVUsRUFBRTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssVUFBUyxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxVQUFTLFNBQVEsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxXQUFVLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsVUFBUyxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLEVBQUUsU0FBUSxFQUFFLFlBQVUsRUFBRTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssT0FBTSxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsTUFBSSxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxPQUFNLFdBQVUsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQUssRUFBRSxTQUFRLEVBQUUsVUFBUSxPQUFPLE9BQU8sRUFBRSxPQUFPO0FBQUUsTUFBSSxJQUFFLElBQUksSUFBSSxPQUFPLEtBQUssRUFBRSxPQUFPLENBQUM7QUFBRSxJQUFFLFVBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLEtBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxFQUFFLFFBQVEsQ0FBQztBQUFBLFFBQU8sT0FBTSxNQUFNLE9BQU8sQ0FBQyxvQkFBb0I7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRSxTQUFRLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxFQUFFLFVBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBQyxHQUFHLEVBQUUsUUFBTztBQUFFLGFBQVEsS0FBSyxFQUFFLEtBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFPLEVBQUUsQ0FBQztBQUFBLFFBQU8sT0FBTSxNQUFNLE9BQU8sQ0FBQyxvQkFBb0I7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRSxTQUFRLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxNQUFNLFFBQVEsQ0FBQyxJQUFFLE9BQU8sWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFJLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFFO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFFBQU8sU0FBUSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sR0FBRSxPQUFPLGVBQWUsR0FBRSxTQUFRLEVBQUMsTUFBSztBQUFDLFFBQUcsRUFBRSxPQUFPLFNBQU8sRUFBRSxPQUFNLE1BQU0sNEVBQTRFO0FBQUUsV0FBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssV0FBVSxRQUFPLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBRSxJQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGdCQUFlLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUUsV0FBUyxDQUFDLE1BQUk7QUFBQyxVQUFHLE9BQU8sTUFBSSxTQUFTLEdBQUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxHQUFFLEVBQUUsT0FBTSxDQUFDLENBQUM7QUFBQSxXQUFNO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLE1BQU0sR0FBRSxXQUFTO0FBQUcsVUFBRSxTQUFPLEVBQUUsT0FBSyxXQUFVLEVBQUUsVUFBUSxFQUFFLFFBQU0sRUFBRSxRQUFPLEVBQUUsU0FBTyxFQUFFLE9BQUssSUFBRyxFQUFFLGFBQVcsRUFBRSxXQUFTLE9BQUksRUFBRSxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUUsUUFBSSxJQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU0sQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGFBQU8sRUFBRSxRQUFNLEdBQUU7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsUUFBTSxHQUFFO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxhQUFZLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLElBQUksV0FBVSxFQUFFLGdCQUFjLEVBQUU7QUFBTSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxXQUFVLFdBQVUsR0FBRSxJQUFJLGVBQWM7QUFBQyxXQUFPLE9BQU8sTUFBSSxhQUFXLEVBQUUsSUFBRTtBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJ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LEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLElBQUksT0FBTztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxRQUFPLFFBQU8sRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxXQUFVLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxhQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFJLEdBQUcsRUFBQyxPQUFNLFVBQVMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFFLFNBQU8sRUFBRSxLQUFLLFFBQU0sR0FBRTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLE1BQUksTUFBSSxPQUFJLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJO0FBQUMsV0FBTyxFQUFFLFdBQVMsQ0FBQyxNQUFJO0FBQUMsVUFBRyxPQUFPLE1BQUksU0FBUyxHQUFFLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLE9BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLFdB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LFNBQU0sRUFBQyxNQUFLLFVBQVM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLEVBQUUsRUFBRSxLQUFLLE1BQUssQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxFQUFFLEVBQUUsVUFBVSxNQUFLLENBQUM7QUFBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFHLEVBQUU7QUFBYSxNQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTSxFQUFDLE9BQU0sRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsQ0FBQyxFQUFDO0FBQUUsVUFBTyxHQUFFO0FBQUEsSUFBQyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQW1CLGFBQU0sRUFBQyxNQUFLLFVBQVMsUUFBTyxZQUFXO0FBQUEsSUFBRSxLQUFJO0FBQWMsYUFBTSxFQUFDLE1BQUssVUFBUyxRQUFPLE9BQU07QUFBQSxJQUFFLEtBQUk7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsTUFBSyxXQUFVLFFBQU8sWUFBVztBQUFFLE1BQUcsRUFBRSxXQUFTLFdBQVcsUUFBTztBQUFFLFdBQVEsS0FBSyxFQUFFLE9BQU8sU0FBTyxFQUFFLE1BQUs7QUFBQSxJQUFDLEtBQUk7QUFBTSxTQUFHLEdBQUUsV0FBVSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFNLFNBQUcsR0FBRSxXQUFVLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsRUFBSztBQUFDLFNBQU87QUFBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFNLEVBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxNQUFLLENBQUMsR0FBRSxTQUFRLEVBQUUsYUFBYSxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxFQUFFLG1CQUFpQixVQUFRLEVBQUUsRUFBRSxPQUFPLE1BQUssQ0FBQyxJQUFFLEdBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLEVBQUMsTUFBSyxVQUFTLE1BQUssTUFBTSxLQUFLLEVBQUUsTUFBTSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBRyxVQUFTLEtBQUcsRUFBRSxTQUFPLFNBQVMsUUFBTTtBQUFHLFNBQU0sV0FBVTtBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsTUFBTSxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxTQUFRLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxXQUFTLHNCQUFvQixFQUFDLHVCQUFzQixNQUFFLElBQUUsUUFBTyxJQUFFLENBQUM7QUFBRSxTQUFPLEVBQUUsUUFBUSxDQUFDLE1BQUk7QUFBQyxRQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRSxFQUFFLDBCQUF3QixPQUFPLEtBQUU7QUFBQSxJQUFNLE9BQUs7QUFBQyxVQUFJLElBQUU7QUFBRSxVQUFHLDBCQUF5QixLQUFHLEVBQUUseUJBQXVCLE9BQUc7QUFBQyxZQUFHLEVBQUMsc0JBQXFCLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxZQUFFO0FBQUEsTUFBQyxNQUFNLEtBQUU7QUFBTyxRQUFFLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sRUFBQyxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBTTtBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTyxFQUFFO0FBQU0sTUFBRyxNQUFJLFlBQVUsTUFBSSxZQUFVLE1BQUksYUFBVyxNQUFJLFNBQVMsUUFBTSxFQUFDLE1BQUssTUFBTSxRQUFRLEVBQUUsS0FBSyxJQUFFLFVBQVEsU0FBUTtBQUFFLE1BQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxFQUFDLE1BQUssTUFBSSxXQUFTLFlBQVUsR0FBRSxNQUFLLENBQUMsRUFBRSxLQUFLLEVBQUM7QUFBRSxTQUFNLEVBQUMsTUFBSyxNQUFJLFdBQVMsWUFBVSxHQUFFLE9BQU0sRUFBRSxNQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBUCxJQUFjLEtBQUcsRUFBQyxNQUFLLG9CQUFtQixPQUFNLGVBQWMsTUFBSyw0QkFBMkIsT0FBTSxvR0FBbUcsT0FBTSxNQUFJO0FBQUMsTUFBRyxPQUFLLE9BQU8sTUFBRyxPQUFPLHdEQUF1RCxHQUFHO0FBQUUsU0FBTztBQUFFLEdBQUUsTUFBSyx5RkFBd0YsTUFBSyx1SEFBc0gsVUFBUyw0SUFBMkksTUFBSyxnWUFBK1gsVUFBUywyckJBQTByQixRQUFPLG9FQUFtRSxXQUFVLDBFQUF5RSxRQUFPLHVCQUFzQixLQUFJLG1EQUFrRDtBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxNQUFLLFNBQVE7QUFBRSxNQUFHLEVBQUUsT0FBTyxVQUFRLEtBQUssRUFBRSxPQUFPLFNBQU8sRUFBRSxNQUFLO0FBQUEsSUFBQyxLQUFJO0FBQU0sU0FBRyxHQUFFLGFBQVksT0FBTyxFQUFFLGNBQVksV0FBUyxLQUFLLElBQUksRUFBRSxXQUFVLEVBQUUsS0FBSyxJQUFFLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQU0sU0FBRyxHQUFFLGFBQVksT0FBTyxFQUFFLGNBQVksV0FBUyxLQUFLLElBQUksRUFBRSxXQUFVLEVBQUUsS0FBSyxJQUFFLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQVEsY0FBTyxFQUFFLGVBQWM7QUFBQSxRQUFDLEtBQUk7QUFBZSxhQUFHLEdBQUUsU0FBUSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsUUFBTSxLQUFJO0FBQW1CLGFBQUcsR0FBRSxhQUFZLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxRQUFNLEtBQUk7QUFBYyxhQUFHLEdBQUUsR0FBRyxPQUFNLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxNQUFLO0FBQUM7QUFBQSxJQUFNLEtBQUk7QUFBTSxTQUFHLEdBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQU8sU0FBRyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFRLFNBQUcsR0FBRSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFPLFNBQUcsR0FBRSxHQUFHLE1BQUssRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFRLFNBQUcsR0FBRSxHQUFHLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFhLFNBQUcsR0FBRSxPQUFPLElBQUksR0FBRyxFQUFFLE9BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQVcsU0FBRyxHQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTSxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxJQUFNLEtBQUk7QUFBVyxTQUFHLEdBQUUsYUFBWSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQU8sU0FBRyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFPLFNBQUcsR0FBRSxRQUFPLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxJQUFNLEtBQUk7QUFBVyxTQUFHLEdBQUUsWUFBVyxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQVMsU0FBRyxHQUFFLGFBQVksT0FBTyxFQUFFLGNBQVksV0FBUyxLQUFLLElBQUksRUFBRSxXQUFVLEVBQUUsS0FBSyxJQUFFLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQyxHQUFFLEdBQUcsR0FBRSxhQUFZLE9BQU8sRUFBRSxjQUFZLFdBQVMsS0FBSyxJQUFJLEVBQUUsV0FBVSxFQUFFLEtBQUssSUFBRSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSSxZQUFXO0FBQUMsU0FBRyxHQUFFLE9BQU8sR0FBRyxFQUFFLE9BQU0sQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQUs7QUFBQSxJQUFDLEtBQUksTUFBSztBQUFDLFVBQUcsRUFBRSxZQUFVLEtBQUssSUFBRyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUM7QUFBRSxVQUFHLEVBQUUsWUFBVSxLQUFLLElBQUcsR0FBRSxRQUFPLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxJQUFLO0FBQUEsSUFBQyxLQUFJO0FBQVksU0FBRyxHQUFFLEdBQUcsV0FBVSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQU0sU0FBRyxHQUFFLEdBQUcsS0FBSSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJLFFBQU87QUFBQyxVQUFHLEVBQUUsWUFBVSxLQUFLLElBQUcsR0FBRSxHQUFHLFVBQVMsRUFBRSxTQUFRLENBQUM7QUFBRSxVQUFHLEVBQUUsWUFBVSxLQUFLLElBQUcsR0FBRSxHQUFHLFVBQVMsRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQUs7QUFBQSxJQUFDLEtBQUk7QUFBUSxTQUFHLEdBQUUsR0FBRyxNQUFNLEdBQUUsRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSSxRQUFPO0FBQUMsU0FBRyxHQUFFLEdBQUcsTUFBSyxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBSztBQUFBLElBQUMsS0FBSSxVQUFTO0FBQUMsY0FBTyxFQUFFLGdCQUFlO0FBQUEsUUFBQyxLQUFJLGlCQUFnQjtBQUFDLGFBQUcsR0FBRSxVQUFTLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxRQUFLO0FBQUEsUUFBQyxLQUFJLDBCQUF5QjtBQUFDLGFBQUcsR0FBRSxtQkFBa0IsVUFBUyxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsUUFBSztBQUFBLFFBQUMsS0FBSSxlQUFjO0FBQUMsYUFBRyxHQUFFLEdBQUcsUUFBTyxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsUUFBSztBQUFBLE1BQUM7QUFBQztBQUFBLElBQUs7QUFBQSxJQUFDLEtBQUk7QUFBUyxTQUFHLEdBQUUsR0FBRyxRQUFPLEVBQUUsU0FBUSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQUEsSUFBYyxLQUFJO0FBQUEsSUFBYyxLQUFJO0FBQU87QUFBQSxJQUFNO0FBQVEsTUFBQyxrQkFBQyxNQUFJO0FBQUEsTUFBQyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sRUFBRSxvQkFBa0IsV0FBUyxHQUFHLENBQUMsSUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLElBQUksSUFBSSw4REFBOEQ7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRTtBQUFHLFdBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxRQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBRztBQUFLLFNBQUcsRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLFVBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFFO0FBQUMsUUFBRyxDQUFDLEVBQUUsTUFBTSxHQUFFLFFBQU0sQ0FBQztBQUFFLFFBQUcsRUFBRSxRQUFPO0FBQUMsVUFBRyxFQUFFLE1BQU0sS0FBSyxFQUFDLFFBQU8sRUFBRSxRQUFPLEdBQUcsRUFBRSxnQkFBYyxFQUFFLGlCQUFlLEVBQUMsY0FBYSxFQUFDLFFBQU8sRUFBRSxhQUFhLE9BQU0sRUFBQyxFQUFDLENBQUMsR0FBRSxPQUFPLEVBQUUsUUFBTyxFQUFFLGNBQWE7QUFBQyxZQUFHLE9BQU8sRUFBRSxhQUFhLFFBQU8sT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVMsRUFBRSxRQUFPLEVBQUU7QUFBQSxNQUFZO0FBQUEsSUFBQztBQUFDLE1BQUUsTUFBTSxLQUFLLEVBQUMsUUFBTyxHQUFFLEdBQUcsS0FBRyxFQUFFLGlCQUFlLEVBQUMsY0FBYSxFQUFDLFFBQU8sRUFBQyxFQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUMsTUFBTSxJQUFHLEdBQUUsVUFBUyxHQUFFLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsV0FBUyxFQUFFLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxPQUFPLEdBQUU7QUFBQyxRQUFHLENBQUMsRUFBRSxNQUFNLEdBQUUsUUFBTSxDQUFDO0FBQUUsUUFBRyxFQUFFLFNBQVE7QUFBQyxVQUFHLEVBQUUsTUFBTSxLQUFLLEVBQUMsU0FBUSxFQUFFLFNBQVEsR0FBRyxFQUFFLGdCQUFjLEVBQUUsaUJBQWUsRUFBQyxjQUFhLEVBQUMsU0FBUSxFQUFFLGFBQWEsUUFBTyxFQUFDLEVBQUMsQ0FBQyxHQUFFLE9BQU8sRUFBRSxTQUFRLEVBQUUsY0FBYTtBQUFDLFlBQUcsT0FBTyxFQUFFLGFBQWEsU0FBUSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBUyxFQUFFLFFBQU8sRUFBRTtBQUFBLE1BQVk7QUFBQSxJQUFDO0FBQUMsTUFBRSxNQUFNLEtBQUssRUFBQyxTQUFRLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFHLEVBQUUsaUJBQWUsRUFBQyxjQUFhLEVBQUMsU0FBUSxFQUFDLEVBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQyxNQUFNLElBQUcsR0FBRSxXQUFVLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEVBQUUsbUJBQWlCLENBQUMsRUFBRSxNQUFNLFFBQU8sRUFBRTtBQUFPLE1BQUksSUFBRSxFQUFDLEdBQUUsRUFBRSxNQUFNLFNBQVMsR0FBRyxHQUFFLEdBQUUsRUFBRSxNQUFNLFNBQVMsR0FBRyxHQUFFLEdBQUUsRUFBRSxNQUFNLFNBQVMsR0FBRyxFQUFDLEdBQUUsSUFBRSxFQUFFLElBQUUsRUFBRSxPQUFPLFlBQVksSUFBRSxFQUFFLFFBQU8sSUFBRSxJQUFHLElBQUUsT0FBRyxJQUFFLE9BQUcsSUFBRTtBQUFHLFdBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxRQUFHLEdBQUU7QUFBQyxXQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRztBQUFBLElBQVE7QUFBQyxRQUFHLEVBQUUsR0FBRTtBQUFDLFVBQUcsR0FBRTtBQUFDLFlBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPLEdBQUU7QUFBQyxjQUFHLEVBQUUsTUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxJQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFFLElBQUU7QUFBQSxtQkFBVyxFQUFFLElBQUUsQ0FBQyxNQUFJLE9BQUssRUFBRSxJQUFFLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFBRSxNQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBQSxjQUFRLE1BQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztBQUFHO0FBQUEsUUFBUTtBQUFBLE1BQUMsV0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLE9BQU8sR0FBRTtBQUFDLGFBQUcsSUFBSSxFQUFF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QUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsU0FBUSxHQUFHLEVBQUMsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLFVBQVUsTUFBSyxFQUFDLEdBQUcsR0FBRSxhQUFZLENBQUMsR0FBRyxFQUFFLGFBQVksU0FBUSxTQUFRLEdBQUcsRUFBQyxDQUFDLEtBQUcsR0FBRyxDQUFDO0FBQUUsU0FBTSxFQUFDLE1BQUssU0FBUSxVQUFTLEtBQUksT0FBTSxFQUFDLE1BQUssU0FBUSxPQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBUyxHQUFFLFVBQVMsRUFBQyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQUk7QUFBQyxXQUFPLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFJO0FBQUEsRUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUUsU0FBTSxFQUFDLE1BQUssRUFBRSxXQUFTLElBQUUsRUFBRSxDQUFDLE1BQUksV0FBUyxXQUFTLFdBQVMsQ0FBQyxVQUFTLFFBQVEsR0FBRSxNQUFLLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxFQUFFLFdBQVMsV0FBUyxTQUFPLEVBQUMsS0FBSSxHQUFHLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxLQUFLLEVBQUMsQ0FBQyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sRUFBRSxXQUFTLGFBQVcsRUFBQyxNQUFLLENBQUMsTUFBTSxHQUFFLFVBQVMsS0FBRSxJQUFFLEVBQUMsTUFBSyxPQUFNO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxXQUFVLFVB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RSxTQUFPLEVBQUU7QUFBRSxTQUFPLEVBQUUsU0FBTyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQU07QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLGFBQVksYUFBWSxhQUFZLGNBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEtBQUssUUFBUSxNQUFJLENBQUMsRUFBRSxVQUFVLEtBQUssVUFBUSxDQUFDLEVBQUUsVUFBVSxLQUFLLE9BQU8sU0FBUTtBQUFDLFFBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxFQUFDLE1BQUssR0FBRyxFQUFFLFVBQVUsS0FBSyxRQUFRLEdBQUUsVUFBUyxLQUFFO0FBQUUsV0FBTSxFQUFDLE1BQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxLQUFLLFFBQVEsR0FBRSxNQUFNLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxFQUFFLFdBQVMsWUFBVztBQUFDLFFBQUksSUFBRSxFQUFFLEVBQUUsVUFBVSxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLENBQUM7QUFBRSxRQUFHLEtBQUcsVUFBUyxFQUFFLFFBQU0sRUFBQyxPQUFNLENBQUMsQ0FBQyxHQUFFLFVBQVMsS0FBRTtBQUFFLFdBQU8sS0FBRyxFQUFDLEdBQUcsR0FBRSxVQUFTLEtBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUM7QUFBRSxTQUFPLEtBQUcsRUFBQyxPQUFNLENBQUMsR0FBRSxFQUFDLE1BQUssT0FBTSxDQUFDLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxNQUFLLFNBQVE7QUFBRSxNQUFHLENBQUMsRUFBRSxPQUFPLFFBQU87QUFBRSxXQUFRLEtBQUssRUFBRSxPQUFPLFNBQU8sRUFBRSxNQUFLO0FBQUEsSUFBQyxLQUFJO0FBQU0sUUFB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LFFBQU8sRUFBRSxFQUFFLFVBQVUsTUFBSyxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUM7QUFBRSxTQUFPLElBQUUsRUFBQyxPQUFNLENBQUMsRUFBQyxLQUFJLEdBQUcsQ0FBQyxFQUFDLEdBQUUsQ0FBQyxFQUFDLElBQUUsR0FBRyxDQUFDO0FBQUM7QUFBRSxJQUFJLEtBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxNQUFHLEVBQUUsaUJBQWUsUUFBUSxRQUFPLEVBQUUsRUFBRSxHQUFHLE1BQUssQ0FBQztBQUFBLFdBQVUsRUFBRSxpQkFBZSxTQUFTLFFBQU8sRUFBRSxFQUFFLElBQUksTUFBSyxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsRUFBRSxHQUFHLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxJQUFJLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsSUFBRSxNQUFJLEdBQUcsRUFBQyxDQUFDO0FBQUUsU0FBTSxFQUFDLE9BQU0sQ0FBQyxHQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxNQUFJLE1BQU0sRUFBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sRUFBRSxFQUFFLEtBQUssTUFBSyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUMsTUFBSyxTQUFRLGFBQVksTUFBRyxPQUFNLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLE9BQU8sRUFBQyxDQUFDLEVBQUM7QUFBRSxNQUFHLEVBQUUsUUFBUSxJQUFHLEdBQUUsWUFBVyxFQUFFLFFBQVEsT0FBTSxFQUFFLFFBQVEsU0FBUSxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQVEsSUFBRyxHQUFFLFlBQVcsRUFBRSxRQUFRLE9BQU0sRUFBRSxRQUFRLFNBQVEsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsS0FBSyxRQUFNLEVBQUMsTUFBSyxTQUFRLFVBQVMsRUFBRSxNQUFNLFFBQU8sT0FBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsTUFBSyxFQUFDLEdBQUcsR0FBRSxhQUFZLENBQUMsR0FBRyxFQUFFLGFBQVksU0FBUSxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksTUFBSSxTQUFPLElBQUUsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLGlCQUFnQixFQUFFLEVBQUUsS0FBSyxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxpQkFBaUIsRUFBQyxDQUFDLEVBQUM7QUFBQSxNQUFPLFFBQU0sRUFBQyxNQUFLLFNBQVEsVUFBUyxFQUFFLE1BQU0sUUFBTyxVQUFTLEVBQUUsTUFBTSxRQUFPLE9BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLE1BQUksU0FBTyxJQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLEVBQUMsS0FBSSxHQUFHLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxFQUFFLEVBQUUsVUFBVSxNQUFLLENBQUM7QUFBQztBQUFFLElBQUksS0FBRyxDQUFDLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBTyxHQUFFO0FBQUEsSUFBQyxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUc7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFRLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFhLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBUSxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVMsYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUEsSUFBUyxLQUFLLEVBQUU7QUFBc0IsYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQWdCLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFVLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFRLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBYyxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVksYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVksYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQU8sYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQU8sYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVEsYUFBTSxNQUFJLEVBQUUsT0FBTyxFQUFFO0FBQUEsSUFBSyxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBQSxJQUFPLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBTyxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVcsYUFBTyxHQUFHLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFZLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFZLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFBLElBQVksS0FBSyxFQUFFO0FBQUEsSUFBUSxLQUFLLEVBQUU7QUFBVTtBQUFBLElBQU87QUFBUSxhQUFPLGtCQUFDLE1BQUk7QUFBQztBQUFBLE1BQU0sR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRSxJQUFFLE9BQUc7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFFLE1BQUcsRUFBRSxVQUFTO0FBQUMsUUFBSSxJQUFFLEVBQUUsV0FBVyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsUUFBRyxNQUFJLEdBQUcsUUFBTztBQUFBLEVBQUM7QUFBQyxNQUFHLEtBQUcs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QUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFFLE1BQUssRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtB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UTtBQUFBLFFBQUMsR0FBRSxJQUFFLENBQUM7QUFBRSxZQUFHLEVBQUUsTUFBTSxHQUFFLE1BQU07QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLE1BQUk7QUFBQyxRQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsTUFBSSxJQUFFLEdBQUcsSUFBSSxJQUFFO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSxZQUFHLENBQUMsS0FBRyxDQUFDLEVBQUU7QUFBTyxVQUFFLE1BQUksR0FBRSxFQUFFLFFBQU0sR0FBRSxFQUFFLE1BQUksS0FBRyxFQUFFO0FBQUUsWUFBSSxJQUFFLEVBQUUsTUFBSTtBQUFFLFVBQUUsZUFBYSxJQUFFO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBRSxRQUFJLElBQUUsR0FBRSxJQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsR0FBRyxJQUFJO0FBQUUsVUFBRyxLQUFLLGdCQUFjLEdBQUU7QUFBQyxZQUFFO0FBQUUsWUFBSSxJQUFFLFdBQVcsTUFBSSxJQUFFLEdBQUUsS0FBSyxhQUFhO0FBQUUsWUFBRyxFQUFFLE1BQU0sR0FBRSxNQUFNO0FBQUEsTUFBQztBQUFDLGFBQU87QUFBQSxJQUFDO0FBQUUsU0FBSyxrQkFBZ0IsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxJQUFJLENBQUM7QUFBRSxVQUFHLE1BQUksT0FBTyxRQUFPO0FBQUUsVUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLFFBQU8sSUFBRTtBQUFFLFVBQUksS0FBRyxLQUFHLEVBQUUsS0FBRztBQUFFLGFBQU8sSUFBRTtBQUFBLElBQUMsR0FBRSxLQUFLLEtBQUcsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsYUFBTSxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsTUFBSSxLQUFHLEVBQUUsS0FBRyxJQUFFO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUcsS0FBSTtBQUFDLFFBQUksSUFBRSxJQUFJLEdBQUcsS0FBSyxFQUFFO0FBQUUsU0FBSyxLQUFHLEdBQUUsS0FBSyxLQUFHLEdBQUUsS0FBSyxLQUFHLENBQUMsTUFBSTtBQUFDLFdBQUssTUFBSSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsSUFBRTtBQUFBLElBQUMsR0FBRSxLQUFLLEtBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxVQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBRyxHQUFFO0FBQUMsWUFBRyxPQUFPLE1BQUksV0FBVyxPQUFNLFVBQVUsb0NBQW9DO0FBQUUsWUFBRyxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFNLFVBQVUsMERBQTBEO0FBQUEsTUFBQyxNQUFNLE9BQU0sVUFBVSwySEFBMkg7QUFBRSxhQUFPO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBRyxFQUFFLENBQUMsSUFBRSxHQUFFLEtBQUssSUFBRztBQUFDLFlBQUksSUFBRSxLQUFLLEtBQUcsRUFBRSxDQUFDO0FBQUUsZUFBTSxLQUFLLEtBQUcsRUFBRSxNQUFLLEdBQUcsSUFBRTtBQUFBLE1BQUM7QUFBQyxVQUFHLEtBQUssTUFBSSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsWUFBVSxHQUFFLEVBQUUsc0JBQW9CLEtBQUs7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBRyxDQUFDLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsTUFBSTtBQUFDLFFBQUcsS0FBRyxFQUFFLE9BQU0sVUFBVSxrRUFBa0U7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUUsQ0FBQyxHQUFHLEVBQUMsWUFBVyxJQUFFLEtBQUssV0FBVSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUcsS0FBSyxHQUFHLFVBQVEsSUFBRSxLQUFLLFFBQUs7QUFBQyxVQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtBQUFNLFVBQUcsS0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFFLFVBQUcsTUFBSSxLQUFLLEdBQUc7QUFBQSxVQUFXLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsQ0FBQyxHQUFHLEVBQUMsWUFBVyxJQUFFLEtBQUssV0FBVSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUcsS0FBSyxHQUFHLFVBQVEsSUFBRSxLQUFLLFFBQUs7QUFBQyxVQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtBQUFNLFVBQUcsS0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFFLFVBQUcsTUFBSSxLQUFLLEdBQUc7QUFBQSxVQUFXLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFO0FBQUMsV0FBTyxNQUFJLFVBQVEsS0FBSyxHQUFHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsQ0FBQyxVQUFTO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUcsS0FBSyxHQUFHLENBQUMsTUFBSSxVQUFRLEtBQUssR0FBRyxDQUFDLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLENBQUMsV0FBVTtBQUFDLGFBQVEsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFHLEtBQUssR0FBRyxDQUFDLE1BQUksVUFBUSxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU07QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFFBQU87QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFNBQVE7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU0sS0FBSyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFVBQVM7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU0sS0FBSyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sUUFBUSxJQUFHO0FBQUMsV0FBTyxLQUFLLFFBQVE7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sV0FBVyxJQUFFO0FBQUEsRUFBVyxLQUFLLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSx1QkFBcUI7QUFBRSxVQUFHLE1BQUksT0FBTztBQUFTLFVBQUcsRUFBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSSxFQUFFLFFBQU8sS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxNQUFLO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLEVBQUUsdUJBQXFCO0FBQUUsVUFBRyxNQUFJLE9BQU87QUFBUyxRQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxNQUFLO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLEVBQUUsdUJBQXFCO0FBQUUsVUFBRyxNQUFJLE9BQU87QUFBUyxRQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxhQUFZO0FBQUMsUUFBSSxJQUFFO0FBQUcsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFDLFlBQVcsS0FBRSxDQUFDLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFFLFFBQVEsR0FBRSxJQUFFO0FBQUcsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLE9BQU87QUFBTyxRQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSx1QkFBcUI7QUFBRSxRQUFHLE1BQUksT0FBTztBQUFPLFFBQUksSUFBRSxFQUFDLE9BQU0sRUFBQztBQUFFLFFBQUcsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLFVBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLEtBQUcsR0FBRTtBQUFDLFlBQUksSUFBRSxLQUFHLEdBQUcsSUFBSSxJQUFFO0FBQUcsVUFBRSxNQUFJLEdBQUUsRUFBRSxRQUFNLEtBQUssSUFBSTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFLLEdBQUcsR0FBRSxPQUFLLEtBQUssR0FBRyxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU07QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxLQUFLLEdBQUcsRUFBQyxZQUFXLEtBQUUsQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBSyxHQUFHLENBQUMsSUFBRSxFQUFFLHVCQUFxQjtBQUFFLFVBQUcsTUFBSSxVQUFRLE1BQUksT0FBTztBQUFTLFVBQUksSUFBRSxFQUFDLE9BQU0sRUFBQztBQUFFLFVBQUcsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLFVBQUUsTUFBSSxLQUFLLEdBQUcsQ0FBQztBQUFFLFlBQUksSUFBRSxHQUFHLElBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFFLFVBQUUsUUFBTSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxVQUFHLEtBQUssR0FBRyxHQUFFLE9BQUssS0FBSyxHQUFHLENBQUM7QUFBRSxRQUFFLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsU0FBSyxNQUFNO0FBQUUsYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxVQUFHLEVBQUUsT0FBTTtBQUFDLFlBQUksSUFBRSxLQUFLLElBQUksSUFBRSxFQUFFO0FBQU0sVUFBRSxRQUFNLEdBQUcsSUFBSSxJQUFFO0FBQUEsTUFBQztBQUFDLFdBQUssSUFBSSxHQUFFLEVBQUUsT0FBTSxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxNQUFJLE9BQU8sUUFBTyxLQUFLLE9BQU8sQ0FBQyxHQUFFO0FBQUssUUFBRyxFQUFDLEtBQUksSUFBRSxLQUFLLEtBQUksT0FBTSxHQUFFLGdCQUFlLElBQUUsS0FBSyxnQkFBZSxpQkFBZ0IsSUFBRSxLQUFLLGlCQUFnQixRQUFPLEVBQUMsSUFBRSxHQUFFLEVBQUMsYUFBWSxJQUFFLEtBQUssWUFBVyxJQUFFLEdBQUUsSUFBRSxLQUFLLEdBQUcsR0FBRSxHQUFFLEVBQUUsUUFBTSxHQUFFLENBQUM7QUFBRSxRQUFHLEtBQUssZ0JBQWMsSUFBRSxLQUFLLGNBQWE7QUFBQyxVQUFHLEVBQUUsR0FBRSxNQUFJLFFBQU8sRUFBRSx1QkFBcUI7QUFBRyxhQUFPLEtBQUssR0FBRyxHQUFFLEtBQUssR0FBRTtBQUFBLElBQUk7QUFBQyxRQUFJLElBQUUsS0FBSyxPQUFLLElBQUUsU0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLFFBQU87QUFBQyxVQUFHLElBQUUsS0FBSyxPQUFLLElBQUUsS0FBSyxLQUFHLEtBQUssR0FBRyxXQUFTLElBQUUsS0FBSyxHQUFHLElBQUksSUFBRSxLQUFLLE9BQUssS0FBSyxLQUFHLEtBQUssR0FBRyxLQUFFLElBQUUsS0FBSyxJQUFHLEtBQUssR0FBRyxDQUFDLElBQUUsR0FBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLEdBQUUsS0FBSyxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxJQUFFLEdBQUUsS0FBSyxHQUFHLENBQUMsSUFBRSxLQUFLLElBQUcsS0FBSyxLQUFHLEdBQUUsS0FBSyxNQUFLLEtBQUssR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJO0FBQU0sVUFBRTtBQUFBLElBQUUsT0FBSztBQUFDLFdBQUssR0FBRyxDQUFDO0FBQUUsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsVUFBRyxNQUFJLEdBQUU7QUFBQyxZQUFHLEtBQUssTUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFFO0FBQUMsWUFBRSxrQkFBa0IsTUFBTSxNQUFNLFVBQVUsQ0FBQztBQUFFLGNBQUcsRUFBQyxzQkFBcUIsRUFBQyxJQUFFO0FBQUUsY0FBRyxNQUFJLFVBQVEsQ0FBQyxHQUFFO0FBQUMsZ0JBQUcsS0FBSyxHQUFHLE1BQUssS0FBSyxHQUFFLEdBQUUsS0FBSztBQUFFLGdCQUFHLEtBQUssR0FBRyxNQUFLLElBQUksS0FBSyxDQUFDLEdBQUUsR0FBRSxLQUFLLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQyxXQUFTLENBQUMsR0FBRTtBQUFDLGNBQUcsS0FBSyxHQUFHLE1BQUssS0FBSyxHQUFFLEdBQUUsS0FBSztBQUFFLGNBQUcsS0FBSyxHQUFHLE1BQUssSUFBSSxLQUFLLENBQUMsR0FBRSxHQUFFLEtBQUssQ0FBQztBQUFBLFFBQUM7QUFBQyxZQUFHLEtBQUssR0FBRyxDQUFDLEdBQUUsS0FBSyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLENBQUMsSUFBRSxHQUFFLEdBQUU7QUFBQyxZQUFFLE1BQUk7QUFBVSxjQUFJLElBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFFLEVBQUUsdUJBQXFCO0FBQUUsY0FBRyxNQUFJLE9BQU8sR0FBRSxXQUFTO0FBQUEsUUFBQztBQUFBLE1BQUMsV0FBUyxFQUFFLEdBQUUsTUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBRyxDQUFDLEtBQUssR0FBRyxNQUFLLEdBQUc7QUFBRSxRQUFHLEtBQUssSUFBRztBQUFDLFVBQUcsQ0FBQyxFQUFFLE1BQUssR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLFVBQUcsRUFBRSxNQUFLLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsQ0FBQyxLQUFHLEtBQUssTUFBSSxLQUFLLElBQUc7QUFBQyxVQUFJLElBQUUsS0FBSyxJQUFHO0FBQUUsYUFBTSxJQUFFLEdBQUcsTUFBTSxFQUFFLE1BQUssS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUk7QUFBQSxFQUFDLE1BQUs7QUFBQyxRQUFHO0FBQUMsYUFBTSxLQUFLLElBQUc7QUFBQyxZQUFJLElBQUUsS0FBSyxHQUFHLEtBQUssRUFBRTtBQUFFLFlBQUcsS0FBSyxHQUFHLElBQUUsR0FBRSxLQUFLLEdBQUcsQ0FBQyxHQUFFO0FBQUMsY0FBRyxFQUFFLHFCQUFxQixRQUFPLEVBQUU7QUFBQSxRQUFvQixXQUFTLE1BQUksT0FBTyxRQUFPO0FBQUEsTUFBQztBQUFBLElBQUMsVUFBQztBQUFRLFVBQUcsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLFlBQUksSUFBRSxLQUFLLElBQUc7QUFBRSxlQUFNLElBQUUsR0FBRyxNQUFNLEVBQUUsTUFBSyxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLEtBQUssSUFBRyxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFFLFFBQUcsS0FBSyxNQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUs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LEtBQUssR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLHlCQUF1QixVQUFRO0FBQUUsVUFBRyxHQUFFO0FBQUMsWUFBRyxFQUFFLFFBQU0sSUFBRSxVQUFRLFdBQVUsTUFBSSxFQUFFLEdBQUUsZ0JBQWM7QUFBQSxNQUFFO0FBQUMsYUFBTyxLQUFHLEdBQUcsdUJBQXFCLEdBQUcsYUFBVztBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEtBQUssTUFBTSxHQUFFLENBQUM7QUFBRSxRQUFHLE1BQUksT0FBTyxPQUFNLE1BQU0sNEJBQTRCO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLO0FBQUcsUUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLHVDQUF1QztBQUFFLFFBQUcsRUFBQyxTQUFRLEdBQUUsY0FBYSxHQUFFLEdBQUcsRUFBQyxJQUFFLEdBQUUsSUFBRSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEtBQUcsTUFBSSxPQUFPLFFBQU87QUFBRSxRQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxTQUFRLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBRSxXQUFPLEtBQUssSUFBSSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxFQUFDLFlBQVcsSUFBRSxLQUFLLFlBQVcsZ0JBQWUsSUFBRSxLQUFLLGdCQUFlLG9CQUFtQixJQUFFLEtBQUssb0JBQW1CLFFBQU8sRUFBQyxJQUFFLEdBQUUsSUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsVUFBRyxFQUFF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QUFDLFFBQU87QUFBQyxXQUFPLEtBQUssR0FBRyxRQUFRO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFDLFlBQVcsS0FBRSxDQUFDLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRSxrQkFBa0IsTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLFdBQU07QUFBQyxZQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxZQUFHLEtBQUssR0FBRyxNQUFLLEtBQUssR0FBRSxHQUFFLENBQUM7QUFBRSxZQUFHLEtBQUssR0FBRyxNQUFLLElBQUksS0FBSyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRSxLQUFLLEdBQUcsS0FBSyxNQUFNLEdBQUUsS0FBSyxHQUFHLEtBQUssTUFBTSxHQUFFLEtBQUssTUFBSSxLQUFLLEdBQUcsTUFBSyxHQUFHLEtBQUssQ0FBQyxHQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7QUFBRSxRQUFHLEtBQUssR0FBRyxNQUFLLEdBQUcsS0FBSyxDQUFDO0FBQUUsUUFBRyxLQUFLLEtBQUcsR0FBRSxLQUFLLEtBQUcsR0FBRSxLQUFLLEdBQUcsU0FBTyxHQUFFLEtBQUssS0FBRyxHQUFFLEtBQUssS0FBRyxHQUFFLEtBQUssTUFBSSxLQUFLLElBQUc7QUFBQyxVQUFJLElBQUUsS0FBSyxJQUFHO0FBQUUsYUFBTSxJQUFFLEdBQUcsTUFBTSxFQUFFLE1BQUssS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxJQUFFLEtBQUk7QUFBQyxNQUFJLElBQUUsSUFBSSxHQUFHLEVBQUMsS0FBSSxFQUFDLENBQUMsR0FBRSxJQUFFLElBQUksTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFJLENBQUM7QUFBRSxRQUFHLE1BQUksT0FBTyxRQUFPO0FBQUUsUUFBSSxJQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsV0FBTyxFQUFFLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUUsU0FBTyxFQUFFLFFBQU0sRUFBQyxPQUFNLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSyxNQUFJLEVBQUUsTUFBSyxRQUFPLENBQUMsTUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEtBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUUsS0FBSSxDQUFDLE1BQUksRUFBRSxJQUFJLENBQUMsRUFBQyxHQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRztBQUFDLFdBQU0sRUFBQyxJQUFHLE1BQUcsT0FBTSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBQztBQUFBLEVBQUMsU0FBTyxHQUFFO0FBQUMsUUFBRyxFQUFFLElBQUcsQ0FBQztBQUFFLFdBQU0sRUFBQyxJQUFHLE1BQUU7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsR0FBRyxJQUFHLENBQUMsTUFBSSxHQUFFLEVBQUU7QUFBdEIsSUFBd0IsS0FBRyxPQUFPLE9BQU8sU0FBUyxHQUFFLElBQUUsTUFBRztBQUFDLE1BQUcsQ0FBQyxFQUFFLFFBQU87QUFBSyxNQUFJLElBQUUsRUFBRSxTQUFPLEtBQUcsR0FBRyxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sRUFBRSxLQUFHLEVBQUUsUUFBTTtBQUFJLEdBQUUsRUFBQyxPQUFNLEdBQUcsTUFBSyxDQUFDO0FBQW9ILElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFHO0FBQUMsUUFBRyxRQUFRLGFBQVcsU0FBUyxRQUFNO0FBQVEsUUFBRyxRQUFRLGFBQVcsUUFBUSxRQUFNO0FBQVUsUUFBRyxRQUFRLGFBQVcsU0FBUTtBQUFDLFVBQUc7QUFBQyxZQUFJLElBQUUsR0FBRyxF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SSxHQUFFLEdBQUc7QUFBRSxNQUFHLE1BQUksR0FBRyxRQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsRUFBQztBQUFFLE1BQUksSUFBRSxJQUFJLEdBQUUsR0FBRztBQUFFLE1BQUcsTUFBSSxNQUFJLEtBQUcsRUFBRSxRQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsRUFBQztBQUFFLE1BQUcsTUFBSSxFQUFFLFNBQU8sRUFBRSxRQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsRUFBQztBQUFFLE1BQUksSUFBRSxFQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFVBQVUsSUFBRSxHQUFFLENBQUM7QUFBRSxNQUFHLENBQUMsRUFBRSxRQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsRUFBQztBQUFFLE1BQUcsTUFBSSxNQUFJLE1BQUksSUFBSSxRQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsRUFBQztBQUFFLE1BQUksSUFBRSxJQUFJLENBQUM7QUFBRSxTQUFNLEVBQUMsVUFBUyxHQUFHLENBQUMsR0FBRSxhQUFZLEVBQUM7QUFBQztBQUFDLFNBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxJQUFJLEtBQUcsRUFBRSxDQUFDLE1BQUksR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFFLElBQUUsSUFBRTtBQUFFLFdBQU0sS0FBRyxLQUFHLEVBQUUsQ0FBQyxNQUFJLEtBQUssTUFBSTtBQUFJLFFBQUcsSUFBRSxNQUFJLEVBQUUsUUFBTztBQUFBLEVBQUM7QUFBQyxTQUFNO0FBQUU7QUFBQyxTQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBUSxJQUFFLEVBQUUsU0FBTyxHQUFFLEtBQUcsR0FBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE1BQUksR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFFLElBQUUsSUFBRTtBQUFFLFdBQU0sS0FBRyxLQUFHLEVBQUUsQ0FBQyxNQUFJLEtBQUssTUFBSTtBQUFJLFFBQUcsSUFBRSxNQUFJLEVBQUUsUUFBTztBQUFBLEVBQUM7QUFB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QUcsTUFBSSxJQUFFLElBQUksS0FBSyxHQUFFLGFBQWEsS0FBRyxFQUFFO0FBQVksU0FBTyxPQUFPLEtBQUcsY0FBWSxhQUFhLEtBQUcsR0FBRyxLQUFLLENBQUMsS0FBRztBQUFHO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLE1BQUcsTUFBSSxpQkFBZSxPQUFPLEVBQUUsQ0FBQyxNQUFJLFdBQVc7QUFBTyxNQUFHLEtBQUcsWUFBWTtBQUFPLFNBQU8sRUFBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUUsTUFBRyxHQUFFO0FBQUMsT0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsRUFBTTtBQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFLFFBQU8sSUFBRSxNQUFJO0FBQU8sTUFBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxLQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSxRQUFHLElBQUUsR0FBRSxLQUFHLEtBQUcsRUFBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUU7QUFBQSxhQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUUsR0FBRyxDQUFDO0FBQUEsYUFBVSxFQUFFLEtBQUUsT0FBRyxJQUFFLEdBQUcsR0FBRSxJQUFFO0FBQUEsYUFBVSxFQUFFLEtBQUUsT0FBRyxJQUFFLEdBQUcsR0FBRSxJQUFFO0FBQUEsUUFBTyxLQUFFLENBQUM7QUFBQSxhQUFVLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBRyxJQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLENBQUM7QUFBQSxlQUFVLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLENBQUM7QUFBQSxJQUFDLE1BQU0sS0FBRTtBQUFBLEVBQUU7QUFBQyxNQUFHLEVBQUUsR0FBRSxJQUFJLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxLQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxNQUFJLEVBQUU7QUFBTyxLQUFHLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxRQUFHLE1BQUksSUFBRSxJQUFJLE9BQUksR0FBRyxDQUFDLEVBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxJQUFFLEVBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQU8sVUFBRyxNQUFJLE9BQU8sS0FBRTtBQUFFLFNBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUU7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLFVBQU8sRUFBRSxRQUFPO0FBQUEsSUFBQyxLQUFLO0FBQUUsYUFBTyxFQUFFLEtBQUssQ0FBQztBQUFBLElBQUUsS0FBSztBQUFFLGFBQU8sRUFBRSxLQUFLLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUFFLEtBQUs7QUFBRSxhQUFPLEVBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBRSxLQUFLO0FBQUUsYUFBTyxFQUFFLEtBQUssR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksS0FBRyxLQUFLO0FBQUksU0FBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFFLEdBQUcsTUFBSSxTQUFPLEVBQUUsU0FBTyxJQUFFLEdBQUUsQ0FBQyxHQUFFLFdBQVU7QUFBQyxRQUFJLElBQUUsV0FBVSxJQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsU0FBTyxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQU0sQ0FBQztBQUFFLFdBQU0sRUFBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxJQUFFLENBQUM7QUFBRSxRQUFFO0FBQUcsUUFBSSxJQUFFLE1BQU0sSUFBRSxDQUFDO0FBQUUsV0FBTSxFQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsSUFBRSxFQUFFLENBQUM7QUFBRSxXQUFPLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRTtBQUFDLFNBQU8sV0FBVTtBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxJQUFJLE1BQUksQ0FBQyxLQUFHLEtBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxZQUFXLEVBQUMsY0FBYSxNQUFHLFlBQVcsT0FBRyxPQUFNLEdBQUcsQ0FBQyxHQUFFLFVBQVMsS0FBRSxDQUFDO0FBQUM7QUFBNUcsSUFBOEcsS0FBRztBQUFJLElBQUksTUFBSTtBQUFSLElBQVksTUFBSTtBQUFoQixJQUFtQixNQUFJLEtBQUs7QUFBSSxTQUFTLElBQUksR0FBRTtBQUFDLE1BQUksSUFBRSxHQUFFLElBQUU7QUFBRSxTQUFPLFdBQVU7QUFBQyxRQUFJLElBQUUsSUFBSSxHQUFFLElBQUUsT0FBSyxJQUFFO0FBQUcsUUFBRyxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUMsVUFBRyxFQUFFLEtBQUcsSUFBSSxRQUFPLFVBQVUsQ0FBQztBQUFBLElBQUMsTUFBTSxLQUFFO0FBQUUsV0FBTyxFQUFFLE1BQU0sUUFBTyxTQUFTO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksSUFBSSxNQUFJLEdBQUcsRUFBRTtBQUFiLElBQWUsS0FBRztBQUFJLFNBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsT0FBTztBQUFFLE1BQUcsS0FBRyxXQUFTLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sSUFBRSxLQUFHLFlBQVcsS0FBSyxFQUFHLFFBQU8sR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsU0FBTTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxJQUFFLElBQUUsSUFBRSxFQUFFLElBQUUsQ0FBQyxJQUFFLFFBQU8sSUFBRSxJQUFFLElBQUUsRUFBRSxDQUFDLElBQUU7QUFBTyxRQUFHLElBQUUsRUFBRSxTQUFPLEtBQUcsT0FBTyxLQUFHLGNBQVksS0FBSSxLQUFHLFFBQU8sS0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxLQUFFLElBQUUsSUFBRSxTQUFPLEdBQUUsSUFBRTtBQUFFLFFBQUUsT0FBTyxDQUFDO0FBQUUsV0FBTSxFQUFFLElBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksTUFBSSxHQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLEtBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBUyxTQUFTLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsTUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxJQUFHLElBQUUsRUFBRSxRQUFPLElBQUUsSUFBRSxHQUFFLElBQUU7QUFBRSxTQUFNLEtBQUcsUUFBTSxFQUFFLElBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFFLFFBQUcsTUFBSSxlQUFhLE1BQUksaUJBQWUsTUFBSSxZQUFZLFFBQU87QUFBRSxRQUFHLEtBQUcsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLElBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsUUFBTyxNQUFJLE9BQU8sS0FBRSxHQUFHLENBQUMsSUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLENBQUMsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDO0FBQUEsSUFBQztBQUFDLE9BQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxJQUFFLENBQUM7QUFBRSxTQUFNLEVBQUUsSUFBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsU0FBTyxHQUFHLEdBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksS0FBRyxLQUFHLEdBQUcscUJBQW1CO0FBQU8sU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxNQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUU7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLElBQUcsSUFBRSxFQUFFO0FBQU8sUUFBSSxJQUFFLEtBQUksTUFBSSxJQUFFLENBQUM7QUFBRyxTQUFNLEVBQUUsSUFBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsSUFBRSxLQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUcsSUFBRSxFQUFFLElBQUcsR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFPLElBQUcsR0FBRSxDQUFDO0FBQUEsYUFBVSxDQUFDLEVBQUUsR0FBRSxFQUFFLE1BQU0sSUFBRTtBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLElBQUksR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFHLE9BQUssSUFBRSxFQUFFO0FBQU8sU0FBTyxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRyxHQUFFLFFBQU8sRUFBRSxHQUFF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QTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQSxFQUdBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUEsRUFFQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUEsRUFFQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUEsRUFFQTtBQUFBLEVBQ0E7QUFDRjtBQUlPLElBQU0scUJBQXdDO0FBQUE7QUFBQSxFQUVuRDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBLEVBR0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUEsRUFHQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUlPLElBQU0scUJBQU4sTUFBaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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TTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsT0FBT0EsUUFBTyxRQUFRO0FBQ2xDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsS0FBS0EsUUFBTyxRQUFRO0FBQ2hDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsT0FBT0EsUUFBTyxRQUFRO0FBQ2xDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsV0FBV0EsUUFBTyxRQUFRO0FBQ3RDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsS0FBS0EsUUFBTyxRQUFRO0FBQ2hDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQVFPLFNBQVMsYUFBYUUsUUFBTyxRQUFRO0FBQ3hDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsV0FBVztBQUFBLElBQ1gsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsU0FBU0EsUUFBTyxRQUFRO0FBQ3BDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsU0FBU0EsUUFBTyxRQUFRO0FBQ3BDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsV0FBVztBQUFBLElBQ1gsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsYUFBYUEsUUFBTyxRQUFRO0FBQ3hDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUSxDQUFDO0FBQUEsSUFDVCxH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QUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztB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S0FBSyxJQUFJLENBQUM7QUFBQSxJQUMzQyxDQUFDO0FBQ0QsSUFBSyxnQkFBVSxTQUFTLE9BQU8sS0FBSztBQUNwQyxJQUFLLGdCQUFVLFlBQVksT0FBTyxXQUFXLFNBQVMsT0FBTztBQUFBLEVBQy9ELFNBQVMsS0FBSztBQUNaLElBQUssZ0JBQVUsZUFBZSxRQUFRLElBQUksVUFBVSxPQUFPLEdBQUcsQ0FBQztBQUMvRCxRQUFJLGVBQWUsU0FBUyxJQUFJLE1BQU8sQ0FBSyxZQUFNLElBQUksS0FBSztBQUFBLEVBQzdEO0FBQ0Y7QUFFQSxTQUFTLHNCQUFzQkMsT0FBNkI7QUFDMUQsTUFBSUEsTUFBSyxTQUFTLFNBQVM7QUFDekIsV0FBTyxJQUFJQyxTQUFRLEVBQUUsTUFBTUQsTUFBSyxNQUFNLENBQUM7QUFBQSxFQUN6QztBQUtBLFNBQU8sSUFBSUMsU0FBUTtBQUFBLElBQ2pCLGNBQWM7QUFBQSxJQUNkLE1BQU07QUFBQSxNQUNKLE9BQU9ELE1BQUs7QUFBQSxNQUNaLFlBQVlBLE1BQUs7QUFBQSxNQUNqQixnQkFBZ0JBLE1BQUs7QUFBQSxJQUN2QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBUyxtQkFBMkM7QUFJbEQsUUFBTSxNQUE4QixDQUFDO0FBQ3JDLGFBQVcsS0FBSyxZQUFZO0FBQzFCLFVBQU1FLEtBQVMsZUFBUyxDQUFDO0FBQ3pCLFFBQUlBLEdBQUcsS0FBSSxDQUFDLElBQUlBO0FBQUEsRUFDbEI7QUFDQSxTQUFPO0FBQ1Q7QUFJQSxJQUFJLFFBQVEsSUFBSSwyQkFBMkIsS0FBSztBQUM5QyxXQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7QUFDeEIsSUFBSyxnQkFBVSxlQUFlLFFBQVEsSUFBSSxVQUFVLE9BQU8sR0FBRyxDQUFDO0FBQy9ELFlBQVEsS0FBSyxDQUFDO0FBQUEsRUFDaEIsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJleHBvcnRzIiwgIm9zIiwgImV4cG9ydHMiLCAiaXNzdWUiLCAicyIsICJjcnlwdG8iLCAiZnMiLCAib3MiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIngiLCAiZXhwb3J0cyIsICJhc3NlcnQiLCAidXRpbCIsICJzZWxmIiwgIm9wdGlvbnMiLCAiY2IiLCAiZXJyb3IiLCAic29ja2V0IiwgInJlcXVpcmVfdHVubmVsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc2VydCIsICJCbG9iIiwgInYiLCAib2JqZWN0IiwgInBhdGgiLCAiaWR4IiwgInN0cmVhbSIsICJlcnIiLCAibSIsICJ4IiwgIm4iLCAiaGFuZGxlciIsICJSZWFkYWJsZVN0cmVhbSIsICJpdGVyYXRvciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyIiwgImNoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlYWRhYmxlU3RyZWFtIiwgIm4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic2VsZiIsICJyIiwgIm0iLCAiaCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzZWxmIiwgImV2IiwgImNiIiwgInIiLCAibiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJsYyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwYXRoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlYWRhYmxlIiwgInNlbGYiLCAiY2IiLCAibiIsICJyIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNiIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV2IiwgImNiIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVlc3RDYWNoZSIsICJET01FeGNlcHRpb24iLCAic3RydWN0dXJlZENsb25lIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfdXRpbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwZXJmb3JtYW5jZSIsICJhc3NlcnQiLCAiY3J5cHRvIiwgInJlcXVlc3QiLCAib2JqZWN0IiwgImMiLCAiaXNBYm9ydGVkIiwgIml0ZXJhdG9yIiwgImtpbmQiLCAiZSIsICJSZWFkYWJsZVN0cmVhbSIsICJyZXF1aXJlX3N5bWJvbHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSSIsICJ4IiwgIm4iLCAiciIsICJrZXlzIiwgInJlcXVpcmVkIiwgIlQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgImF0b2IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiQmxvYiIsICJGaWxlIiwgIm4iLCAidCIsICJkIiwgInMiLCAib2JqZWN0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkJsb2IiLCAiRmlsZSIsICJGb3JtRGF0YSIsICJlbnRyeSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgIkZvcm1EYXRhIiwgIkRPTUV4Y2VwdGlvbiIsICJzdHJ1Y3R1cmVkQ2xvbmUiLCAiQmxvYiIsICJhc3NlcnQiLCAiY3J5cHRvIiwgIlJlYWRhYmxlU3RyZWFtIiwgIkZpbGUiLCAib2JqZWN0IiwgImVzY2FwZSIsICJjaHVuayIsICJpdGVyYXRvciIsICJlcnJvciIsICJlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc2VydCIsICJ1dGlsIiwgIlJlcXVlc3QiLCAicGF0aCIsICJoYW5kbGVyIiwgImVycm9yIiwgInJlcXVlc3QiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXJyIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgInV0aWwiLCAiaG9zdG5hbWUiLCAic2Vzc2lvbiIsICJjYiIsICJvbkNvbm5lY3RUaW1lb3V0IiwgImV4cG9ydHMiLCAiRVJST1IiLCAiZXhwb3J0cyIsICJUWVBFIiwgIkZMQUdTIiwgIkxFTklFTlRfRkxBR1MiLCAiTUVUSE9EUyIsICJGSU5JU0giLCAiYyIsICJIRUFERVJfU1RBVEUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJhc3NlcnQiLCAiRUUiLCAiaGFuZGxlciIsICJlcnJvciIsICJwYXRoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgInV0aWwiLCAiUmVxdWVzdCIsICJjb25uZWN0IiwgImNiIiwgImhhbmRsZXIiLCAicmVxdWVzdCIsICJlIiwgImhvc3RuYW1lIiwgInNvY2tldCIsICJwYXRoIiwgImhlYWRlcnMiLCAicGlwZSIsICJlcnIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYyIsICJoYW5kbGVyIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWwiLCAib3JpZ2luIiwgImVycm9yIiwgImRpc3BhdGNoZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYiIsICJwb29sIiwgImRpc3BhdGNoZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJXZWFrUmVmIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgIlJlYWRhYmxlIiwgInV0aWwiLCAiQmxvYiIsICJub29wIiwgImV2IiwgInNlbGYiLCAiY29uc3VtZSIsICJyZXF1aXJlX3V0aWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInNlbGYiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVhZGFibGUiLCAidXRpbCIsICJyZXF1ZXN0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWwiLCAiY2FsbGJhY2siLCAicmVzIiwgIm9wYXF1ZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJSZWFkYWJsZSIsICJ1dGlsIiwgImFzc2VydCIsICJoYW5kbGVyIiwgImJvZHkiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJhc3NlcnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc1Byb21pc2UiLCAiY2xvbmUiLCAibW9ja0Rpc3BhdGNoIiwgInBhdGgiLCAicXAiLCAiZ2V0UmVzcG9uc2VEYXRhIiwgIngiLCAiaGFuZGxlciIsICJlcnJvciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXRSZXNwb25zZURhdGEiLCAic3RhdHVzQ29kZSIsICJkYXRhIiwgInJlc3BvbnNlT3B0aW9ucyIsICJuZXdNb2NrRGlzcGF0Y2giLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2IiLCAicGF0aCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJoYW5kbGVyIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlVSTCIsICJvcHRzIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgImNiIiwgImVyciIsICJyZXF1aXJlX2dsb2JhbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJoYW5kbGVyIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWwiLCAiYXNzZXJ0IiwgIm9iamVjdCIsICJIZWFkZXJzIiwgImIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSGVhZGVycyIsICJ1dGlsIiwgImlzQWJvcnRlZCIsICJET01FeGNlcHRpb24iLCAiRm9ybURhdGEiLCAiYXNzZXJ0IiwgIlJlYWRhYmxlU3RyZWFtIiwgIlJlc3BvbnNlIiwgIl9SZXNwb25zZSIsICJyZXF1aXJlX3JlcXVlc3QiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSGVhZGVycyIsICJ1dGlsIiwgInJlcXVlc3RDYWNoZSIsICJhc3NlcnQiLCAiUmVxdWVzdCIsICJyZXF1ZXN0IiwgIndpbmRvdyIsICJhYyIsICJuZXdSZXF1ZXN0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlc3BvbnNlIiwgIkhlYWRlcnMiLCAiUmVxdWVzdCIsICJpc0Fib3J0ZWQiLCAiYXNzZXJ0IiwgIkRPTUV4Y2VwdGlvbiIsICJFRSIsICJSZWFkYWJsZSIsICJSZWFkYWJsZVN0cmVhbSIsICJlcnJvciIsICJmZXRjaCIsICJlIiwgInJlcXVlc3QiLCAiZ2xvYmFsVGhpcyIsICJpdGVyYXRvciIsICJuIiwgIngiLCAicmVxdWlyZV9zeW1ib2xzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfdXRpbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJET01FeGNlcHRpb24iLCAiYnRvYSIsICJlcnJvciIsICJlIiwgInR5cGUiLCAiYiIsICJjIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfc3ltYm9scyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX3V0aWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlc3BvbnNlIiwgIlJlcXVlc3QiLCAiYXNzZXJ0IiwgInJlcXVlc3QiLCAiciIsICJlIiwgImNhY2hlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVlc3QiLCAiY2FjaGUiLCAicmVxdWlyZV9jb25zdGFudHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV91dGlsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAiZGF0ZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSGVhZGVycyIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX3N5bWJvbHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV91dGlsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSGVhZGVycyIsICJjcnlwdG8iLCAicmVxdWVzdCIsICJlcnJvciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjcnlwdG8iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiXyIsICJib2R5IiwgIm4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiRE9NRXhjZXB0aW9uIiwgIldlYlNvY2tldCIsICJlIiwgImFiIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWwiLCAiaGFuZGxlciIsICJwYXRoIiwgImZldGNoIiwgIldlYlNvY2tldCIsICJwbSIsICJIdHRwQ29kZXMiLCAiZXhwb3J0cyIsICJIZWFkZXJzIiwgIk1lZGlhVHlwZXMiLCAidXNlckFnZW50IiwgImluZm8iLCAiaGFuZGxlciIsICJoYW5kbGVSZXN1bHQiLCAibG93ZXJjYXNlS2V5cyIsICJfZGVmYXVsdCIsICJtcyIsICJjIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgInBhdGgiLCAiZXhwb3J0cyIsICJmcyIsICJwYXRoIiwgImV4cG9ydHMiLCAiaXNEaXJlY3RvcnkiLCAiX2EiLCAicGF0aCIsICJleHBvcnRzIiwgIm12IiwgImNoZWNrIiwgImUiLCAib3MiLCAicGF0aCIsICJzIiwgIm4iLCAieCIsICJlcnJvciIsICJleHBvcnRzIiwgImMiLCAiZXhwb3J0cyIsICJfYiIsICJ2ZXJzaW9uIiwgIl9iIiwgIl9jIiwgImV4cG9ydHMiLCAib3MiLCAicGF0aCIsICJFeGl0Q29kZSIsICJleHBvcnRzIiwgInNldFNlY3JldCIsICJnZXRJbnB1dCIsICJ4IiwgInNldE91dHB1dCIsICJzZXRGYWlsZWQiLCAiZXJyb3IiLCAid2FybmluZyIsICJpbmZvIiwgInN0YXJ0R3JvdXAiLCAiZW5kR3JvdXAiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiTnVsbE9iamVjdCIsICJwYXJzZSIsICJzYWZlUGFyc2UiLCAiZXhwb3J0cyIsICJzIiwgImMiLCAiXyIsICJzYWZlU3RyaW5naWZ5IiwgImIiLCAiYzEiLCAieCIsICJVc2VkVmFsdWVTdGF0ZSIsICJleHBvcnRzIiwgIl9iIiwgInMiLCAiYyIsICJleHBvcnRzIiwgImVycm9yIiwgIm4iLCAiZSIsICJfYiIsICJjIiwgIk4xIiwgIngiLCAieSIsICJleHBvcnRzIiwgInNlbGYiLCAiZiIsICJ4IiwgIm1lcmdlVmFsdWVzIiwgIlR5cGUiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgIkUiLCAiZXhwb3J0cyIsICJ4IiwgImV4cG9ydHMiLCAic2VsZiIsICJleHBvcnRzIiwgIkRhdGFUeXBlIiwgImV4cG9ydHMiLCAidHMiLCAidCIsICJFUSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlIiwgIl9hIiwgInNlbGYiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNiIiwgImV4cG9ydHMiLCAiXyIsICJleHBvcnRzIiwgInNlbGYiLCAidCIsICJ0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfdXRpbHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXB2NiIsICJwYXRoIiwgImVzYyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwYXRoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhcnNlIiwgInMiLCAiZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibyIsICJzIiwgIl9jIiwgIl9iIiwgIl9lIiwgIl9oIiwgIl9rIiwgIl9tIiwgIl9xIiwgIl9zIiwgIl91IiwgIl93IiwgIl96IiwgIl8wIiwgIkFqdiIsICJ2IiwgImUiLCAiY2FjaGVLZXkiLCAidCIsICJleHBvcnRzIiwgInNlbGYiLCAidiIsICJleHBvcnRzIiwgImUiLCAiY29yZSIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgInQiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImVycm9yIiwgInYiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAibCIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImVycm9yIiwgInNlbGYiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJEaXNjckVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAicmVxdWlyZWQiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJBanYiLCAidiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImRhdGUiLCAiZDEiLCAiZDIiLCAidGltZSIsICJlIiwgImVycm9yIiwgImV4cG9ydHMiLCAic2VsZiIsICJmIiwgImZzIiwgIl9iIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImltcG9ydF9ub2RlX2ZzIiwgImNvcmUiLCAib2JqZWN0IiwgImIiLCAiYyIsICJfIiwgImxpdGVyYWwiLCAiVkVSU0lPTiIsICJpc1BsYWluT2JqZWN0IiwgImZldGNoIiwgImVycm9yIiwgInYiLCAid2l0aERlZmF1bHRzIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJyZXF1ZXN0IiwgImF1dGgiLCAiYXV0aDIiLCAicmVxdWVzdCIsICJlcnJvciIsICJlbmRwb2ludCIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiYXV0aCIsICJlcnJvciIsICJob29rIiwgInJlcXVlc3QiLCAiZW5kcG9pbnQiLCAiYXV0aCIsICJob29rIiwgImVuZHBvaW50IiwgImVycm9yIiwgIlZFUlNJT04iLCAiYmFzZTY0IiwgImltcG9ydF9ub2RlX2NyeXB0byIsICJpdGVtIiwgImVycm9yIiwgImNhY2hlIiwgImNhY2hlS2V5IiwgInN0cmluZyIsICJyZXF1ZXN0IiwgInIiLCAiYXV0aCIsICJjIiwgImhvb2siLCAiZW5kcG9pbnQiLCAiVkVSU0lPTiIsICJuYW1lIiwgIm1ldGhvZCIsICJob29rIiwgImVycm9yIiwgImhvb2siLCAiVkVSU0lPTiIsICJlIiwgIndpdGhEZWZhdWx0cyIsICJuZXdSZXF1ZXN0IiwgImF1dGgiLCAiaG9vayIsICJyZXF1ZXN0IiwgImVuZHBvaW50IiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJob29rIiwgImF1dGgiLCAiVkVSU0lPTiIsICJyZXF1ZXN0IiwgInBhdGgiLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgImVycm9yIiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJlbmRwb2ludCIsICJjYWNoZSIsICJvcHRpb25zIiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJPY3Rva2l0IiwgIlZFUlNJT04iLCAiY29yZSIsICJpbXBvcnRfY3J5cHRvIiwgImltcG9ydF9jaGlsZF9wcm9jZXNzIiwgImltcG9ydF9mcyIsICJpbXBvcnRfb3MiLCAiaW1wb3J0X3BhdGgiLCAiaW1wb3J0X2NyeXB0byIsICJpbXBvcnRfcHJvbWlzZXMiLCAiaW1wb3J0X2V2ZW50cyIsICJpbXBvcnRfZnMiLCAiaW1wb3J0X2NoaWxkX3Byb2Nlc3MiLCAiaW1wb3J0X2NyeXB0byIsICJpbXBvcnRfb3MiLCAiaW1wb3J0X3BhdGgiLCAiaW1wb3J0X3Byb21pc2VzIiwgImltcG9ydF9vcyIsICIkUyIsICJYUyIsICJQayIsICJSayIsICJodyIsICJTdiIsICJ2diIsICJrdiIsICJtTyIsICJiVCIsICJ4NyIsICJjVCIsICJoVCIsICJwVCIsICJtVCIsICJsVCIsICJ5VCIsICJ0TyIsICJ1VCIsICJnVCIsICJlVCIsICJZMiIsICJQVSIsICJrVSIsICJzVCIsICJYMiIsICJXMiIsICIkeCIsICJCeCIsICJOeCIsICJ6eCIsICJNeCIsICJ4NyIsICJueSIsICJpeSIsICJveSIsICJWWiIsICJmZyIsICJHaCIsICJVaCIsICJfYyIsICJWRSIsICJQeiIsICJmJCIsICJMRSIsICJYZSIsICJZZSIsICJqRSIsICJTNiQiLCAiTF8iLCAiRTYkIiwgImg2IiwgIlQ2JCIsICJyeiIsICJweiIsICJkeiIsICJNXyIsICJxWCIsICJqXyIsICJveiIsICJ3XyIsICJmNiQiLCAiQzYkIiwgInY2JCIsICJxWCIsICJfNiQiLCAiQV8iLCAib3oiLCAial8iLCAiT0siLCAidXRpbCIsICJfIiwgImFzc2VydElzIiwgImFzc2VydE5ldmVyIiwgImUiLCAib2JqZWN0IiwgImpvaW5WYWx1ZXMiLCAiYXJyYXkiLCAib2JqZWN0VXRpbCIsICJ0IiwgImlzc3VlIiwgImVycm9yIiwgImVsIiwgImlzc3VlIiwgInBhdGgiLCAibSIsICJpc3N1ZSIsICJ4IiwgInMiLCAiT0siLCAiZXJyb3JVdGlsIiwgInBhdGgiLCAiZXJyb3IiLCAiZXJyb3JNYXAiLCAiY2hlY2siLCAidHJhbnNmb3JtIiwgInZlcnNpb24iLCAiYmFzZTY0IiwgIl9ab2RTdHJpbmciLCAicGFyc2VkVHlwZSIsICJjdHgiLCAiY2giLCAiT0siLCAicmVzdWx0IiwgImlzc3VlIiwgImlzc3VlcyIsICJiIiwgIngiLCAiZWxlbWVudHMiLCAibWUiLCAiZSIsICJwcm9jZXNzZWQiLCAicHJlcHJvY2VzcyIsICJwYXJzZWRUeXBlIiwgIk9LIiwgInJlc3VsdCIsICJiIiwgImNoZWNrIiwgInIiLCAiWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIiwgImNoZWNrIiwgImNoZWNrIiwgIngiLCAicGFyc2VkVHlwZSIsICJlbW9qaVJlZ2V4IiwgImNoZWNrIiwgIl8iLCAibGl0ZXJhbCIsICJ4IiwgIm9iamVjdCIsICJ4IiwgInR5cGVzIiwgImJhc2UiLCAiY2hlY2siLCAicmVxdWlyZWQiLCAiYiIsICJ4IiwgIngiLCAiXyIsICJuYW1lIiwgInNjaGVtYSIsICJpbXBvcnRfbm9kZV9vcyIsICJpbXBvcnRfbm9kZV9wYXRoIiwgInBhdGgiLCAidCIsICJzIiwgImIiLCAiY29yZSIsICJpbXBvcnRfZnMiLCAiaW1wb3J0X29zIiwgImltcG9ydF9wYXRoIiwgImltcG9ydF9jaGlsZF9wcm9jZXNzIiwgImltcG9ydF9yZWFkbGluZSIsICJpbXBvcnRfbW9kdWxlIiwgImZzIiwgInBhdGgiLCAib3MiLCAiZXJyb3IiLCAicmwiLCAicmVhZGxpbmUiLCAiaXNQbGFpbk9iamVjdCIsICJjb25maWciLCAiaW1wb3J0X25vZGVfY2hpbGRfcHJvY2VzcyIsICJpbXBvcnRfbm9kZV9mcyIsICJjb3JlIiwgIkNMSV9WRVJTSU9OIiwgImNhY2hlZCIsICJwYXRoIiwgIkNMSV9WRVJTSU9OIiwgImltcG9ydF9ub2RlX2NyeXB0byIsICJORVZFUiIsICJpbml0aWFsaXplciIsICJfIiwgImNhY2hlZCIsICJmbG9hdFNhZmVSZW1haW5kZXIiLCAiZ2V0UGFyc2VkVHlwZSIsICJpc1BsYWluT2JqZWN0IiwgIm1lcmdlIiwgIm9taXQiLCAiXyIsICJ2IiwgImFycmF5IiwgInNldCIsICJvYmplY3QiLCAicGF0aCIsICJGIiwgIm8iLCAidCIsICJjbCIsICJiIiwgIkNsYXNzIiwgIngiLCAiY29uZmlnIiwgImVsIiwgImVycm9yIiwgImlzc3VlIiwgImVsIiwgImUiLCAicGFyc2UiLCAic2FmZVBhcnNlIiwgInZlcnNpb24iLCAidGltZSIsICJ0aW1lUmVnZXgiLCAiaW5zdCIsICJmbG9hdFNhZmVSZW1haW5kZXIiLCAiaW5zdCIsICJfYiIsICJ4IiwgIkYiLCAiY2giLCAiY2hlY2tzIiwgImlzQWJvcnRlZCIsICJfIiwgInJlc3VsdCIsICJyIiwgInNhZmVQYXJzZSIsICJ2IiwgImluc3QiLCAiYmFzZTY0IiwgImMiLCAiaXNWYWxpZEpXVCIsICJfIiwgInJlc3VsdCIsICJjYWNoZWQiLCAidiIsICJpc09iamVjdCIsICJhbGxvd3NFdmFsIiwgImVsIiwgInIiLCAidCIsICJvIiwgInJlc3VsdHMiLCAicHYiLCAibGVmdCIsICJyaWdodCIsICJtZXJnZVZhbHVlcyIsICJiIiwgImlzUGxhaW5PYmplY3QiLCAiaXNQbGFpbk9iamVjdCIsICJyZXN1bHQiLCAibyIsICJvdXRwdXQiLCAicmVzdWx0IiwgInYiLCAieCIsICJyZXN1bHQiLCAibGVmdCIsICJfIiwgInIiLCAidCIsICJpc3N1ZSIsICJlbl9kZWZhdWx0IiwgInBtIiwgIkNsYXNzIiwgIkNsYXNzIiwgIl9lbW9qaSIsICJDbGFzcyIsICJDbGFzcyIsICJDbGFzcyIsICJfbnVsbCIsICJDbGFzcyIsICJDbGFzcyIsICJjaCIsICJDbGFzcyIsICJDbGFzcyIsICJ2IiwgIngiLCAiYiIsICJtIiwgImlkIiwgInNjaGVtYSIsICJwYXJhbXMiLCAiZ2VuIiwgIl8iLCAicGFyc2UiLCAic2FmZVBhcnNlIiwgImNoIiwgInMiLCAic2FmZVBhcnNlIiwgInJlc3VsdCIsICJzYWZlUGFyc2VBc3luYyIsICJ2IiwgImVycm9yIiwgImRlZiIsICJpc29fZXhwb3J0cyIsICJkYXRlIiwgImRhdGV0aW1lIiwgImR1cmF0aW9uIiwgInRpbWUiLCAiZGF0ZXRpbWUiLCAiZGF0ZSIsICJ0aW1lIiwgImR1cmF0aW9uIiwgImluaXRpYWxpemVyIiwgImlzc3VlIiwgImlzc3VlcyIsICJab2RFcnJvciIsICJwYXJzZSIsICJwYXJzZUFzeW5jIiwgInNhZmVQYXJzZSIsICJzYWZlUGFyc2VBc3luYyIsICJab2RUeXBlIiwgImNoIiwgImRlZiIsICJwYXJzZSIsICJzYWZlUGFyc2UiLCAicGFyc2VBc3luYyIsICJzYWZlUGFyc2VBc3luYyIsICJjaGVjayIsICJjbCIsICJab2RTdHJpbmciLCAiX2Vtb2ppIiwgImRhdGV0aW1lIiwgImRhdGUiLCAidGltZSIsICJkdXJhdGlvbiIsICJzdHJpbmciLCAiWm9kTnVtYmVyIiwgIlpvZFR5cGUiLCAibnVtYmVyIiwgIlpvZEJvb2xlYW4iLCAiWm9kVHlwZSIsICJib29sZWFuIiwgIlpvZE51bGwiLCAiWm9kVHlwZSIsICJfbnVsbCIsICJab2RVbmtub3duIiwgIlpvZFR5cGUiLCAiWm9kTmV2ZXIiLCAiWm9kQXJyYXkiLCAiWm9kVHlwZSIsICJab2RPYmplY3QiLCAiWm9kVHlwZSIsICJab2RPcHRpb25hbCIsICJvYmplY3QiLCAiWm9kT2JqZWN0IiwgIlpvZFVuaW9uIiwgIlpvZFR5cGUiLCAiWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwgIlpvZEludGVyc2VjdGlvbiIsICJab2RSZWNvcmQiLCAiWm9kVHlwZSIsICJab2RFbnVtIiwgIlpvZFR5cGUiLCAidiIsICJab2RMaXRlcmFsIiwgIlpvZFR5cGUiLCAiWm9kVHlwZSIsICJpc3N1ZSIsICJvdXRwdXQiLCAiWm9kT3B0aW9uYWwiLCAiWm9kTnVsbGFibGUiLCAiWm9kRGVmYXVsdCIsICJab2RUeXBlIiwgIlpvZENhdGNoIiwgIlpvZFR5cGUiLCAiWm9kVHlwZSIsICJab2RSZWFkb25seSIsICJab2RUeXBlIiwgImNoIiwgImN1c3RvbSIsICJpc3N1ZSIsICJlbl9kZWZhdWx0IiwgImN1c3RvbSIsICJ2IiwgInN0cmluZyIsICJudW1iZXIiLCAib2JqZWN0IiwgIkVycm9yQ29kZSIsICJvYmplY3QiLCAibnVtYmVyIiwgInN0cmluZyIsICJzdHJpbmciLCAib2JqZWN0IiwgImJvb2xlYW4iLCAib2JqZWN0IiwgIm51bWJlciIsICJzdHJpbmciLCAiX251bGwiLCAiaXNvX2V4cG9ydHMiLCAiYm9vbGVhbiIsICJvYmplY3QiLCAic3RyaW5nIiwgInJlcXVlc3QiLCAibnVtYmVyIiwgImJvb2xlYW4iLCAidCIsICJzYWZlUGFyc2UiLCAicmVxdWVzdCIsICJlcnJvciIsICJpbmZvIiwgImhhbmRsZXIiLCAiciIsICJ0YXNrIiwgImUiLCAic2FmZVBhcnNlIiwgImpzb25ycGNOb3RpZmljYXRpb24iLCAiaXNQbGFpbk9iamVjdCIsICJBanYiLCAiX2FkZEZvcm1hdHMiLCAicmVxdWVzdCIsICJjIiwgInJlcXVlc3QiLCAiaGFuZGxlciIsICJzYWZlUGFyc2UiLCAiYyIsICJlcnJvciIsICJNY3Bab2RUeXBlS2luZCIsICJjIiwgIndhcm5pbmciLCAiY29uZmlnIiwgImhhbmRsZXIiLCAicmVxdWVzdCIsICJlcnJvciIsICJzYWZlUGFyc2VBc3luYyIsICJoYW5kbGVyIiwgInQiLCAiXyIsICJjYiIsICJjb25maWciLCAidiIsICJpbXBvcnRfaHR0cDIiLCAiaW1wb3J0X2NyeXB0byIsICJSZXF1ZXN0RXJyb3IiLCAiZSIsICJlcnJvciIsICJjYWNoZSIsICJ2IiwgImNyeXB0byIsICJIdHRwMlNlcnZlclJlcXVlc3QyIiwgImgyY29uc3RhbnRzIiwgImVycm9yIiwgIm0iLCAiXyIsICJoYW5kbGVyIiwgInQiLCAiY29uZmlnIiwgImxvZ0FnZW50SW5wdXQiLCAidCIsICJlIiwgImltcG9ydF9ub2RlX2ZzIiwgInBhdGgiLCAiZSIsICJ2IiwgImNvbmZpZyIsICJpbXBvcnRfbm9kZV9mcyIsICJpbXBvcnRfbm9kZV9vcyIsICJpbXBvcnRfbm9kZV9wYXRoIiwgImNvbmZpZyIsICJzIiwgIm4iLCAidiIsICJpbXBvcnRfbm9kZV9jaGlsZF9wcm9jZXNzIiwgImltcG9ydF9ub2RlX2ZzIiwgImltcG9ydF9ub2RlX29zIiwgImltcG9ydF9ub2RlX3BhdGgiLCAiY29yZSIsICJhdXRoIiwgIk9jdG9raXQiLCAiZCIsICJpbXBvcnRfbm9kZV9jaGlsZF9wcm9jZXNzIiwgImNvcmUiLCAiY2FjaGVkIiwgIk9jdG9raXQiLCAicnVuR2l0IiwgImF1dGgiLCAiZCIsICJzZXAiLCAibCIsICJmIiwgInIiLCAiYyIsICJwYXRoIiwgImNvcmUiLCAiYyIsICJtIiwgImwiLCAiaXNzdWUiLCAiZiIsICJyIiwgIm0iLCAiZCIsICJmIiwgInYiLCAicyIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJjIiwgImIiLCAiaW50ZXJzZWN0aW9uIiwgInQiLCAiYyIsICJvIiwgInMiLCAiZiIsICJJVEVSQVRJT05fTElORSIsICJjIiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgIl8iLCAiciIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwYXRoIiwgImwiLCAiYm9keSIsICJ2IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF91c2VyX21kX2RlZmF1bHQiLCAicHJvbXB0X3N5c3RlbV9kZWZhdWx0IiwgInIiLCAiYiIsICJhVCIsICJiVCIsICJjIiwgInBhdGgiLCAiaXNzdWUiLCAibCIsICJjIiwgImlzc3VlIiwgImwiLCAiYiIsICJjb25maWciLCAiYXV0aCIsICJPY3Rva2l0IiwgInYiXQp9Cg== +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy91dGlscy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMrY29yZUAxLjExLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvbW1hbmQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9maWxlLWNvbW1hbmQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvcHJveHkudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3R1bm5lbEAwLjAuNi9ub2RlX21vZHVsZXMvdHVubmVsL2xpYi90dW5uZWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3R1bm5lbEAwLjAuNi9ub2RlX21vZHVsZXMvdHVubmVsL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2Vycm9ycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2NvbnN0YW50cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvdGltZXJzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9kZXBzL3N0cmVhbXNlYXJjaC9zYm1oLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9kZXBzL2RpY2VyL2xpYi9QYXJ0U3RyZWFtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvdXRpbHMvZ2V0TGltaXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2RlcHMvZGljZXIvbGliL0hlYWRlclBhcnNlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvZGVwcy9kaWNlci9saWIvRGljZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi91dGlscy9kZWNvZGVUZXh0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvdXRpbHMvcGFyc2VQYXJhbXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi91dGlscy9iYXNlbmFtZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvbGliL3R5cGVzL211bHRpcGFydC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGZhc3RpZnkrYnVzYm95QDIuMS4xL25vZGVfbW9kdWxlcy9AZmFzdGlmeS9idXNib3kvbGliL3V0aWxzL0RlY29kZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmYXN0aWZ5K2J1c2JveUAyLjEuMS9ub2RlX21vZHVsZXMvQGZhc3RpZnkvYnVzYm95L2xpYi90eXBlcy91cmxlbmNvZGVkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmFzdGlmeStidXNib3lAMi4xLjEvbm9kZV9tb2R1bGVzL0BmYXN0aWZ5L2J1c2JveS9saWIvbWFpbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvZ2xvYmFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC93ZWJpZGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvZGF0YVVSTC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9maWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2Zvcm1kYXRhLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2JvZHkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9yZXF1ZXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci1iYXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvY29ubmVjdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL3NyYy9sbGh0dHAvdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9zcmMvbGxodHRwL2NvbnN0YW50cy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL1JlZGlyZWN0SGFuZGxlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9yZWRpcmVjdEludGVyY2VwdG9yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC9sbGh0dHAtd2FzbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jbGllbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbm9kZS9maXhlZC1xdWV1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9wb29sLXN0YXRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3Bvb2wtYmFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9wb29sLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2JhbGFuY2VkLXBvb2wuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29tcGF0L2Rpc3BhdGNoZXItd2Vha3JlZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hZ2VudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvcmVhZGFibGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2Fib3J0LXNpZ25hbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvYXBpLXJlcXVlc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1zdHJlYW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1waXBlbGluZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9hcGkvYXBpLXVwZ3JhZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1jb25uZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1zeW1ib2xzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay11dGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2staW50ZXJjZXB0b3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWNsaWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stcG9vbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL3BsdXJhbGl6ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9wZW5kaW5nLWludGVyY2VwdG9ycy1mb3JtYXR0ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWFnZW50LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3Byb3h5LWFnZW50LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2hhbmRsZXIvUmV0cnlIYW5kbGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2dsb2JhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL0RlY29yYXRvckhhbmRsZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmV0Y2gvaGVhZGVycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9yZXNwb25zZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9mZXRjaC9yZXF1ZXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZldGNoL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ZpbGVhcGkvc3ltYm9scy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9maWxlYXBpL3Byb2dyZXNzZXZlbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmlsZWFwaS9lbmNvZGluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9maWxlYXBpL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZmlsZWFwaS9maWxlcmVhZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NhY2hlL3N5bWJvbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY2FjaGUvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jYWNoZS9jYWNoZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jYWNoZS9jYWNoZXN0b3JhZ2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy91dGlsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Nvb2tpZXMvcGFyc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29va2llcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWJzb2NrZXQvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9zeW1ib2xzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9ldmVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L2Nvbm5lY3Rpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuZGljaUA1LjI5LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2Vic29ja2V0L2ZyYW1lLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYnNvY2tldC9yZWNlaXZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5kaWNpQDUuMjkuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWJzb2NrZXQvd2Vic29ja2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bmRpY2lANS4yOS4wL25vZGVfbW9kdWxlcy91bmRpY2kvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2h0dHAtY2xpZW50QDIuMi4zL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvYXV0aC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMrY29yZUAxLjExLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL29pZGMtdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9zdW1tYXJ5LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytjb3JlQDEuMTEuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGF0aC11dGlscy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQGFjdGlvbnMraW9AMS4xLjMvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2lvL3NyYy9pby11dGlsLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytpb0AxLjEuMy9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaW8vc3JjL2lvLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytleGVjQDEuMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy90b29scnVubmVyLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytleGVjQDEuMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy9leGVjLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AYWN0aW9ucytjb3JlQDEuMTEuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGxhdGZvcm0udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhY3Rpb25zK2NvcmVAMS4xMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9jb3JlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWNvbnRlbnQtdHlwZS1wYXJzZUAyLjAuMS9ub2RlX21vZHVsZXMvZmFzdC1jb250ZW50LXR5cGUtcGFyc2UvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9jb2RlZ2VuL2NvZGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9jb2RlZ2VuL3Njb3BlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvY29kZWdlbi9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3V0aWwudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9uYW1lcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2Vycm9ycy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2Jvb2xTY2hlbWEudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9ydWxlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2FwcGxpY2FiaWxpdHkudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS92YWxpZGF0ZS9kYXRhVHlwZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL2RlZmF1bHRzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9jb2RlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvdmFsaWRhdGUva2V5d29yZC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3ZhbGlkYXRlL3N1YnNjaGVtYS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1kZWVwLWVxdWFsQDMuMS4zL25vZGVfbW9kdWxlcy9mYXN0LWRlZXAtZXF1YWwvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzb24tc2NoZW1hLXRyYXZlcnNlQDEuMC4wL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS10cmF2ZXJzZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3Jlc29sdmUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS92YWxpZGF0ZS9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9yZWZfZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvcmVmcy9kYXRhLmpzb24iLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtdXJpQDMuMS4wL25vZGVfbW9kdWxlcy9mYXN0LXVyaS9saWIvdXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtdXJpQDMuMS4wL25vZGVfbW9kdWxlcy9mYXN0LXVyaS9saWIvc2NoZW1lcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC11cmlAMy4xLjAvbm9kZV9tb2R1bGVzL2Zhc3QtdXJpL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3J1bnRpbWUvdXJpLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2NvcmUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2NvcmUvaWQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2NvcmUvcmVmLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9jb3JlL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0TnVtYmVyLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL211bHRpcGxlT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvcnVudGltZS91Y3MybGVuZ3RoLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0TGVuZ3RoLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL3BhdHRlcm4udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL3ZhbGlkYXRpb24vbGltaXRQcm9wZXJ0aWVzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL3JlcXVpcmVkLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2xpbWl0SXRlbXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvcnVudGltZS9lcXVhbC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi91bmlxdWVJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi9jb25zdC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvdmFsaWRhdGlvbi9lbnVtLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy92YWxpZGF0aW9uL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9hcHBsaWNhdG9yL2FkZGl0aW9uYWxJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9pdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9wcmVmaXhJdGVtcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9pdGVtczIwMjAudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvY29udGFpbnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvZGVwZW5kZW5jaWVzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL3ZvY2FidWxhcmllcy9hcHBsaWNhdG9yL3Byb3BlcnR5TmFtZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYWRkaXRpb25hbFByb3BlcnRpZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvcHJvcGVydGllcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9wYXR0ZXJuUHJvcGVydGllcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvYXBwbGljYXRvci9ub3QudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYW55T2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3Ivb25lT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvYWxsT2YudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvaWYudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvdGhlbkVsc2UudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2FwcGxpY2F0b3IvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2Zvcm1hdC9mb3JtYXQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2Zvcm1hdC9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvbWV0YWRhdGEudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi9saWIvdm9jYWJ1bGFyaWVzL2RyYWZ0Ny50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvZGlzY3JpbWluYXRvci90eXBlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2xpYi92b2NhYnVsYXJpZXMvZGlzY3JpbWluYXRvci9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4xOC4wL25vZGVfbW9kdWxlcy9hanYvbGliL2Fqdi50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2LWZvcm1hdHNAMy4wLjFfYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2LWZvcm1hdHMvc3JjL2Zvcm1hdHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Fqdi1mb3JtYXRzQDMuMC4xX2FqdkA4LjE4LjAvbm9kZV9tb2R1bGVzL2Fqdi1mb3JtYXRzL3NyYy9saW1pdC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2LWZvcm1hdHNAMy4wLjFfYWp2QDguMTguMC9ub2RlX21vZHVsZXMvYWp2LWZvcm1hdHMvc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9lbnRyeS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5pdmVyc2FsLXVzZXItYWdlbnRANy4wLjMvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC11c2VyLWFnZW50L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtlbmRwb2ludEAxMC4xLjQvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2VuZHBvaW50L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtyZXF1ZXN0QDkuMi40L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtyZXF1ZXN0LWVycm9yQDYuMS44L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0LWVycm9yL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtvYXV0aC1tZXRob2RzQDUuMS41L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9vYXV0aC1tZXRob2RzL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLW9hdXRoLWRldmljZUA3LjEuNS9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2UvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K2F1dGgtb2F1dGgtdXNlckA1LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLW9hdXRoLWFwcEA4LjEuNC9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1hcHAvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2xpYi91dGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvbGliL2NyeXB0by1ub2RlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9saWIvZ2V0LXRva2VuLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdG9hZC1jYWNoZUAzLjcuMC9ub2RlX21vZHVsZXMvdG9hZC1jYWNoZS9kaXN0L3RvYWQtY2FjaGUubWpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCthdXRoLWFwcEA3LjIuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1hcHAvZGlzdC1ub2RlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9iZWZvcmUtYWZ0ZXItaG9va0AzLjAuMi9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL3JlZ2lzdGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9iZWZvcmUtYWZ0ZXItaG9va0AzLjAuMi9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL2FkZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYmVmb3JlLWFmdGVyLWhvb2tAMy4wLjIvbm9kZV9tb2R1bGVzL2JlZm9yZS1hZnRlci1ob29rL2xpYi9yZW1vdmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JlZm9yZS1hZnRlci1ob29rQDMuMC4yL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrZ3JhcGhxbEA4LjIuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvZ3JhcGhxbC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrYXV0aC10b2tlbkA1LjEuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC10b2tlbi9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvY29yZS9kaXN0LXNyYy92ZXJzaW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9jb3JlL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtwbHVnaW4tcmVxdWVzdC1sb2dANS4zLjFfQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXJlcXVlc3QtbG9nL2Rpc3Qtc3JjL3ZlcnNpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXF1ZXN0LWxvZ0A1LjMuMV9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2cvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1wYWdpbmF0ZS1yZXN0QDExLjYuMF9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcGFnaW5hdGUtcmVzdC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxMy41LjBfQG9jdG9raXQrY29yZUA2LjEuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvc3JjL3ZlcnNpb24udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTMuNS4wX0BvY3Rva2l0K2NvcmVANi4xLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy9nZW5lcmF0ZWQvZW5kcG9pbnRzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDEzLjUuMF9Ab2N0b2tpdCtjb3JlQDYuMS42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZW5kcG9pbnRzLXRvLW1ldGhvZHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTMuNS4wX0BvY3Rva2l0K2NvcmVANi4xLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy9pbmRleC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcmVzdEAyMS4xLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9jdG9raXQrcmVzdEAyMS4xLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vc3JjL2FnZW50cy9jbGF1ZGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BhbnRocm9waWMtYWkrY2xhdWRlLWFnZW50LXNka0AwLjIuMTQxX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AYW50aHJvcGljLWFpL2NsYXVkZS1hZ2VudC1zZGsvc2RrLm1qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL09wdGlvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9SZWZzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vZXJyb3JNZXNzYWdlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL2dldFJlbGF0aXZlUGF0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9leHRlcm5hbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvWm9kRXJyb3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvbG9jYWxlcy9lbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9wYXJzZVV0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9lcnJvclV0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvdHlwZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2FueS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2JpZ2ludC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYm9vbGVhbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvYnJhbmRlZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvY2F0Y2guanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2RhdGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2RlZmF1bHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2VmZmVjdHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2VudW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL2ludGVyc2VjdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbGl0ZXJhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvc3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9yZWNvcmQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL21hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbmF0aXZlRW51bS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbmV2ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL251bGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL3VuaW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9udWxsYWJsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvbnVtYmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9vYmplY3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZC10by1qc29uLXNjaGVtYUAzLjI1LjJfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC10by1qc29uLXNjaGVtYS9kaXN0L2VzbS9wYXJzZXJzL29wdGlvbmFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9waXBlbGluZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvcHJvbWlzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvc2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy90dXBsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlcnMvdW5kZWZpbmVkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy91bmtub3duLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vcGFyc2Vycy9yZWFkb25seS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3NlbGVjdFBhcnNlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kLXRvLWpzb24tc2NoZW1hQDMuMjUuMl96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kLXRvLWpzb24tc2NoZW1hL2Rpc3QvZXNtL3BhcnNlRGVmLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2QtdG8tanNvbi1zY2hlbWFAMy4yNS4yX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QtdG8tanNvbi1zY2hlbWEvZGlzdC9lc20vem9kVG9Kc29uU2NoZW1hLmpzIiwgIi4uL3NyYy9zZXR1cC9lbnN1cmUtY2xhdWRlLWNsaS50cyIsICIuLi9zcmMvc2V0dXAvaW5zdGFsbGVyLXN1cHBvcnQudHMiLCAiLi4vc3JjL2FnZW50cy9hZGFwdGVyLnRzIiwgIi4uL3NyYy9hZ2VudHMvY29kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVuYWkrY29kZXgtc2RrQDAuMTM5LjAvbm9kZV9tb2R1bGVzL0BvcGVuYWkvY29kZXgtc2RrL3NyYy9vdXRwdXRTY2hlbWFGaWxlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbmFpK2NvZGV4LXNka0AwLjEzOS4wL25vZGVfbW9kdWxlcy9Ab3BlbmFpL2NvZGV4LXNkay9zcmMvdGhyZWFkLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbmFpK2NvZGV4LXNka0AwLjEzOS4wL25vZGVfbW9kdWxlcy9Ab3BlbmFpL2NvZGV4LXNkay9zcmMvZXhlYy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW5haStjb2RleC1zZGtAMC4xMzkuMC9ub2RlX21vZHVsZXMvQG9wZW5haS9jb2RleC1zZGsvc3JjL2NvZGV4LnRzIiwgIi4uL3NyYy9zZXR1cC9lbnN1cmUtY29kZXgtY2xpLnRzIiwgIi4uL3NyYy9hZ2VudHMvbWNwLWh0dHAtYnJpZGdlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvY29yZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9lcnJvcnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9wYXJzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3JlZ2V4ZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9jaGVja3MuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9kb2MuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS92ZXJzaW9ucy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3NjaGVtYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9lbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3JlZ2lzdHJpZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9hcGkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS90by1qc29uLXNjaGVtYS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9taW5pL3NjaGVtYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zZXJ2ZXIvem9kLWNvbXBhdC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2lzby5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2Vycm9ycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvc2NoZW1hcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2V4dGVybmFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvdHlwZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9leHBlcmltZW50YWwvdGFza3MvaW50ZXJmYWNlcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci96b2QtanNvbi1zY2hlbWEtY29tcGF0LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvc2hhcmVkL3Byb3RvY29sLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvdmFsaWRhdGlvbi9hanYtcHJvdmlkZXIudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9leHBlcmltZW50YWwvdGFza3Mvc2VydmVyLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvZXhwZXJpbWVudGFsL3Rhc2tzL2hlbHBlcnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zZXJ2ZXIvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zZXJ2ZXIvY29tcGxldGFibGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zaGFyZWQvdG9vbE5hbWVWYWxpZGF0aW9uLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbW9kZWxjb250ZXh0cHJvdG9jb2wrc2RrQDEuMjkuMF96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zcmMvZXhwZXJpbWVudGFsL3Rhc2tzL21jcC1zZXJ2ZXIudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zZXJ2ZXIvbWNwLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AaG9ubytub2RlLXNlcnZlckAxLjE5LjE0X2hvbm9ANC4xMi4xMi9ub2RlX21vZHVsZXMvQGhvbm8vbm9kZS1zZXJ2ZXIvZGlzdC9pbmRleC5tanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Btb2RlbGNvbnRleHRwcm90b2NvbCtzZGtAMS4yOS4wX3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NyYy9zZXJ2ZXIvd2ViU3RhbmRhcmRTdHJlYW1hYmxlSHR0cC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG1vZGVsY29udGV4dHByb3RvY29sK3Nka0AxLjI5LjBfem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc3JjL3NlcnZlci9zdHJlYW1hYmxlSHR0cC50cyIsICIuLi9zcmMvYXVkaXQvZXZlbnRzLnRzIiwgIi4uL3NyYy9hdWRpdC9zdGVwLXN1bW1hcnkudHMiLCAiLi4vc3JjL2NvbmZpZy9hZ2VudC1lbnYudHMiLCAiLi4vc3JjL2NvbmZpZy9jb2RleC1vcHRpb25zLnRzIiwgIi4uL3NyYy9jb25maWcvaW5wdXRzLnRzIiwgIi4uL3NyYy9naXQvaWRlbnRpdHkudHMiLCAiLi4vc3JjL2dpdC9pbXBsLWNoZWNrb3V0LnRzIiwgIi4uL3NyYy9naXRodWIvYXBwLXRva2VuLnRzIiwgIi4uL3NyYy9zdGF0ZS9tZXRhZGF0YS50cyIsICIuLi9zcmMvZ2l0aHViL2FkYXB0ZXIudHMiLCAiLi4vc3JjL3J1bm5lcnMudHMiLCAiLi4vc3JjL3N0YWdlcy9fc2hhcmVkL3Byb2dyZXNzLWNvbW1lbnQudHMiLCAiLi4vc3JjL3N0YXRlL2xhYmVscy50cyIsICIuLi9zcmMvc3RhZ2VzL19zaGFyZWQvY2hlY2stcmV2aWV3LXNraXAudHMiLCAiLi4vc3JjL3N0YWdlcy9pbXBsZW1lbnQvYXBwbHkudHMiLCAiLi4vc3JjL3N0YWdlcy9fc2hhcmVkL3Byb21wdHMvdGRkLWFuZC1hbnRpLXBhdHRlcm5zLm1kIiwgIi4uL3NyYy9zdGFnZXMvX3NoYXJlZC9wcm9tcHRzLnRzIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L2RlY2lzaW9uLnRzIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9pbXBsZW1lbnQvcHJvbXB0LnN5c3RlbS5xdWljay5tZCIsICIuLi9zcmMvc3RhZ2VzL2ltcGxlbWVudC9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvaW1wbGVtZW50L3Byb21wdC51c2VyLnF1aWNrLm1kLnRtcGwiLCAiLi4vc3JjL3Rvb2xzL3VwZGF0ZS1wcm9ncmVzcy50cyIsICIuLi9zcmMvc3RhZ2VzL2ltcGxlbWVudC90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL2ltcGxlbWVudC9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9wbGFuL2FwcGx5LnRzIiwgIi4uL3NyYy9zdGFnZXMvcGxhbi9kZWNpc2lvbi50cyIsICIuLi9zcmMvc3RhZ2VzL3BsYW4vcHJvbXB0LnN5c3RlbS5tZCIsICIuLi9zcmMvc3RhZ2VzL3BsYW4vcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3BsYW4vdG9vbHMudHMiLCAiLi4vc3JjL3N0YWdlcy9wbGFuL3J1bm5lci50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9kaWZmLXBvc2l0aW9ucy50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9hZ2dyZWdhdGUudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvYXBwbHkudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvZGVjaXNpb24udHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NoYXJlZC50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvYnVncy9wcm9tcHQuc3lzdGVtLm1kIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9idWdzL3Byb21wdC51c2VyLm1kLnRtcGwiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL2J1Z3MvdG9vbHMudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL2J1Z3MvcnVubmVyLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9jb21wbGlhbmNlL3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL2NvbXBsaWFuY2UvcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvY29tcGxpYW5jZS90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvY29tcGxpYW5jZS9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NlY3VyaXR5L3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NlY3VyaXR5L3Byb21wdC51c2VyLm1kLnRtcGwiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NlY3VyaXR5L3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9zZWN1cml0eS9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YWdlcy9yZXZpZXcvbGVuc2VzL3NtZWxscy9wcm9tcHQuc3lzdGVtLm1kIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9zbWVsbHMvcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3Jldmlldy9sZW5zZXMvc21lbGxzL3Rvb2xzLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L2xlbnNlcy9zbWVsbHMvcnVubmVyLnRzIiwgIi4uL3NyYy9zdGFnZXMvcmV2aWV3L3J1bm5lci50cyIsICIuLi9zcmMvc3RhZ2VzL3NwZWMvYXBwbHkudHMiLCAiLi4vc3JjL3N0YWdlcy9zcGVjL2RlY2lzaW9uLnRzIiwgIi4uL3NyYy9zdGFnZXMvc3BlYy9wcm9tcHQuc3lzdGVtLm1kIiwgIi4uL3NyYy9zdGFnZXMvc3BlYy9wcm9tcHQudXNlci5tZC50bXBsIiwgIi4uL3NyYy9zdGFnZXMvc3BlYy90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL3NwZWMvcnVubmVyLnRzIiwgIi4uL3NyYy9zdGFnZXMvX3NoYXJlZC9zZWVkLXN0YWdlLXByLnRzIiwgIi4uL3NyYy9zdGFnZXMvdHJpYWdlL2FwcGx5LnRzIiwgIi4uL3NyYy9zdGFnZXMvdHJpYWdlL2RlY2lzaW9uLnRzIiwgIi4uL3NyYy9zdGFnZXMvdHJpYWdlL3Byb21wdC5zeXN0ZW0ubWQiLCAiLi4vc3JjL3N0YWdlcy90cmlhZ2UvcHJvbXB0LnVzZXIubWQudG1wbCIsICIuLi9zcmMvc3RhZ2VzL3RyaWFnZS90b29scy50cyIsICIuLi9zcmMvc3RhZ2VzL3RyaWFnZS9ydW5uZXIudHMiLCAiLi4vc3JjL3N0YXRlL21hY2hpbmUudHMiLCAiLi4vc3JjL29yY2hlc3RyYXRvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbmV0ID0gcmVxdWlyZSgnbmV0Jyk7XG52YXIgdGxzID0gcmVxdWlyZSgndGxzJyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7XG52YXIgZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuXG5leHBvcnRzLmh0dHBPdmVySHR0cCA9IGh0dHBPdmVySHR0cDtcbmV4cG9ydHMuaHR0cHNPdmVySHR0cCA9IGh0dHBzT3Zlckh0dHA7XG5leHBvcnRzLmh0dHBPdmVySHR0cHMgPSBodHRwT3Zlckh0dHBzO1xuZXhwb3J0cy5odHRwc092ZXJIdHRwcyA9IGh0dHBzT3Zlckh0dHBzO1xuXG5cbmZ1bmN0aW9uIGh0dHBPdmVySHR0cChvcHRpb25zKSB7XG4gIHZhciBhZ2VudCA9IG5ldyBUdW5uZWxpbmdBZ2VudChvcHRpb25zKTtcbiAgYWdlbnQucmVxdWVzdCA9IGh0dHAucmVxdWVzdDtcbiAgcmV0dXJuIGFnZW50O1xufVxuXG5mdW5jdGlvbiBodHRwc092ZXJIdHRwKG9wdGlvbnMpIHtcbiAgdmFyIGFnZW50ID0gbmV3IFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpO1xuICBhZ2VudC5yZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0O1xuICBhZ2VudC5jcmVhdGVTb2NrZXQgPSBjcmVhdGVTZWN1cmVTb2NrZXQ7XG4gIGFnZW50LmRlZmF1bHRQb3J0ID0gNDQzO1xuICByZXR1cm4gYWdlbnQ7XG59XG5cbmZ1bmN0aW9uIGh0dHBPdmVySHR0cHMob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwcy5yZXF1ZXN0O1xuICByZXR1cm4gYWdlbnQ7XG59XG5cbmZ1bmN0aW9uIGh0dHBzT3Zlckh0dHBzKG9wdGlvbnMpIHtcbiAgdmFyIGFnZW50ID0gbmV3IFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpO1xuICBhZ2VudC5yZXF1ZXN0ID0gaHR0cHMucmVxdWVzdDtcbiAgYWdlbnQuY3JlYXRlU29ja2V0ID0gY3JlYXRlU2VjdXJlU29ja2V0O1xuICBhZ2VudC5kZWZhdWx0UG9ydCA9IDQ0MztcbiAgcmV0dXJuIGFnZW50O1xufVxuXG5cbmZ1bmN0aW9uIFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBzZWxmLnByb3h5T3B0aW9ucyA9IHNlbGYub3B0aW9ucy5wcm94eSB8fCB7fTtcbiAgc2VsZi5tYXhTb2NrZXRzID0gc2VsZi5vcHRpb25zLm1heFNvY2tldHMgfHwgaHR0cC5BZ2VudC5kZWZhdWx0TWF4U29ja2V0cztcbiAgc2VsZi5yZXF1ZXN0cyA9IFtdO1xuICBzZWxmLnNvY2tldHMgPSBbXTtcblxuICBzZWxmLm9uKCdmcmVlJywgZnVuY3Rpb24gb25GcmVlKHNvY2tldCwgaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0b09wdGlvbnMoaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc2VsZi5yZXF1ZXN0cy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLnJlcXVlc3RzW2ldO1xuICAgICAgaWYgKHBlbmRpbmcuaG9zdCA9PT0gb3B0aW9ucy5ob3N0ICYmIHBlbmRpbmcucG9ydCA9PT0gb3B0aW9ucy5wb3J0KSB7XG4gICAgICAgIC8vIERldGVjdCB0aGUgcmVxdWVzdCB0byBjb25uZWN0IHNhbWUgb3JpZ2luIHNlcnZlcixcbiAgICAgICAgLy8gcmV1c2UgdGhlIGNvbm5lY3Rpb24uXG4gICAgICAgIHNlbGYucmVxdWVzdHMuc3BsaWNlKGksIDEpO1xuICAgICAgICBwZW5kaW5nLnJlcXVlc3Qub25Tb2NrZXQoc29ja2V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgIHNlbGYucmVtb3ZlU29ja2V0KHNvY2tldCk7XG4gIH0pO1xufVxudXRpbC5pbmhlcml0cyhUdW5uZWxpbmdBZ2VudCwgZXZlbnRzLkV2ZW50RW1pdHRlcik7XG5cblR1bm5lbGluZ0FnZW50LnByb3RvdHlwZS5hZGRSZXF1ZXN0ID0gZnVuY3Rpb24gYWRkUmVxdWVzdChyZXEsIGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBvcHRpb25zID0gbWVyZ2VPcHRpb25zKHtyZXF1ZXN0OiByZXF9LCBzZWxmLm9wdGlvbnMsIHRvT3B0aW9ucyhob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpKTtcblxuICBpZiAoc2VsZi5zb2NrZXRzLmxlbmd0aCA+PSB0aGlzLm1heFNvY2tldHMpIHtcbiAgICAvLyBXZSBhcmUgb3ZlciBsaW1pdCBzbyB3ZSdsbCBhZGQgaXQgdG8gdGhlIHF1ZXVlLlxuICAgIHNlbGYucmVxdWVzdHMucHVzaChvcHRpb25zKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBJZiB3ZSBhcmUgdW5kZXIgbWF4U29ja2V0cyBjcmVhdGUgYSBuZXcgb25lLlxuICBzZWxmLmNyZWF0ZVNvY2tldChvcHRpb25zLCBmdW5jdGlvbihzb2NrZXQpIHtcbiAgICBzb2NrZXQub24oJ2ZyZWUnLCBvbkZyZWUpO1xuICAgIHNvY2tldC5vbignY2xvc2UnLCBvbkNsb3NlT3JSZW1vdmUpO1xuICAgIHNvY2tldC5vbignYWdlbnRSZW1vdmUnLCBvbkNsb3NlT3JSZW1vdmUpO1xuICAgIHJlcS5vblNvY2tldChzb2NrZXQpO1xuXG4gICAgZnVuY3Rpb24gb25GcmVlKCkge1xuICAgICAgc2VsZi5lbWl0KCdmcmVlJywgc29ja2V0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkNsb3NlT3JSZW1vdmUoZXJyKSB7XG4gICAgICBzZWxmLnJlbW92ZVNvY2tldChzb2NrZXQpO1xuICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdmcmVlJywgb25GcmVlKTtcbiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbkNsb3NlT3JSZW1vdmUpO1xuICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdhZ2VudFJlbW92ZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgfVxuICB9KTtcbn07XG5cblR1bm5lbGluZ0FnZW50LnByb3RvdHlwZS5jcmVhdGVTb2NrZXQgPSBmdW5jdGlvbiBjcmVhdGVTb2NrZXQob3B0aW9ucywgY2IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcGxhY2Vob2xkZXIgPSB7fTtcbiAgc2VsZi5zb2NrZXRzLnB1c2gocGxhY2Vob2xkZXIpO1xuXG4gIHZhciBjb25uZWN0T3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh7fSwgc2VsZi5wcm94eU9wdGlvbnMsIHtcbiAgICBtZXRob2Q6ICdDT05ORUNUJyxcbiAgICBwYXRoOiBvcHRpb25zLmhvc3QgKyAnOicgKyBvcHRpb25zLnBvcnQsXG4gICAgYWdlbnQ6IGZhbHNlLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCArICc6JyArIG9wdGlvbnMucG9ydFxuICAgIH1cbiAgfSk7XG4gIGlmIChvcHRpb25zLmxvY2FsQWRkcmVzcykge1xuICAgIGNvbm5lY3RPcHRpb25zLmxvY2FsQWRkcmVzcyA9IG9wdGlvbnMubG9jYWxBZGRyZXNzO1xuICB9XG4gIGlmIChjb25uZWN0T3B0aW9ucy5wcm94eUF1dGgpIHtcbiAgICBjb25uZWN0T3B0aW9ucy5oZWFkZXJzID0gY29ubmVjdE9wdGlvbnMuaGVhZGVycyB8fCB7fTtcbiAgICBjb25uZWN0T3B0aW9ucy5oZWFkZXJzWydQcm94eS1BdXRob3JpemF0aW9uJ10gPSAnQmFzaWMgJyArXG4gICAgICAgIG5ldyBCdWZmZXIoY29ubmVjdE9wdGlvbnMucHJveHlBdXRoKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICBkZWJ1ZygnbWFraW5nIENPTk5FQ1QgcmVxdWVzdCcpO1xuICB2YXIgY29ubmVjdFJlcSA9IHNlbGYucmVxdWVzdChjb25uZWN0T3B0aW9ucyk7XG4gIGNvbm5lY3RSZXEudXNlQ2h1bmtlZEVuY29kaW5nQnlEZWZhdWx0ID0gZmFsc2U7IC8vIGZvciB2MC42XG4gIGNvbm5lY3RSZXEub25jZSgncmVzcG9uc2UnLCBvblJlc3BvbnNlKTsgLy8gZm9yIHYwLjZcbiAgY29ubmVjdFJlcS5vbmNlKCd1cGdyYWRlJywgb25VcGdyYWRlKTsgICAvLyBmb3IgdjAuNlxuICBjb25uZWN0UmVxLm9uY2UoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpOyAgIC8vIGZvciB2MC43IG9yIGxhdGVyXG4gIGNvbm5lY3RSZXEub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgY29ubmVjdFJlcS5lbmQoKTtcblxuICBmdW5jdGlvbiBvblJlc3BvbnNlKHJlcykge1xuICAgIC8vIFZlcnkgaGFja3kuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGh0dHAtcGFyc2VyIGxlYWtzLlxuICAgIHJlcy51cGdyYWRlID0gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVXBncmFkZShyZXMsIHNvY2tldCwgaGVhZCkge1xuICAgIC8vIEhhY2t5LlxuICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gICAgICBvbkNvbm5lY3QocmVzLCBzb2NrZXQsIGhlYWQpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Db25uZWN0KHJlcywgc29ja2V0LCBoZWFkKSB7XG4gICAgY29ubmVjdFJlcS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICBzb2NrZXQucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG5cbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgZGVidWcoJ3R1bm5lbGluZyBzb2NrZXQgY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCBzdGF0dXNDb2RlPSVkJyxcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsICcgK1xuICAgICAgICAnc3RhdHVzQ29kZT0nICsgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgZXJyb3IuY29kZSA9ICdFQ09OTlJFU0VUJztcbiAgICAgIG9wdGlvbnMucmVxdWVzdC5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgICAgIHNlbGYucmVtb3ZlU29ja2V0KHBsYWNlaG9sZGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGhlYWQubGVuZ3RoID4gMCkge1xuICAgICAgZGVidWcoJ2dvdCBpbGxlZ2FsIHJlc3BvbnNlIGJvZHkgZnJvbSBwcm94eScpO1xuICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignZ290IGlsbGVnYWwgcmVzcG9uc2UgYm9keSBmcm9tIHByb3h5Jyk7XG4gICAgICBlcnJvci5jb2RlID0gJ0VDT05OUkVTRVQnO1xuICAgICAgb3B0aW9ucy5yZXF1ZXN0LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgc2VsZi5yZW1vdmVTb2NrZXQocGxhY2Vob2xkZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkZWJ1ZygndHVubmVsaW5nIGNvbm5lY3Rpb24gaGFzIGVzdGFibGlzaGVkJyk7XG4gICAgc2VsZi5zb2NrZXRzW3NlbGYuc29ja2V0cy5pbmRleE9mKHBsYWNlaG9sZGVyKV0gPSBzb2NrZXQ7XG4gICAgcmV0dXJuIGNiKHNvY2tldCk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkVycm9yKGNhdXNlKSB7XG4gICAgY29ubmVjdFJlcS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblxuICAgIGRlYnVnKCd0dW5uZWxpbmcgc29ja2V0IGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgY2F1c2U9JXNcXG4nLFxuICAgICAgICAgIGNhdXNlLm1lc3NhZ2UsIGNhdXNlLnN0YWNrKTtcbiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3R1bm5lbGluZyBzb2NrZXQgY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhdXNlPScgKyBjYXVzZS5tZXNzYWdlKTtcbiAgICBlcnJvci5jb2RlID0gJ0VDT05OUkVTRVQnO1xuICAgIG9wdGlvbnMucmVxdWVzdC5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgICBzZWxmLnJlbW92ZVNvY2tldChwbGFjZWhvbGRlcik7XG4gIH1cbn07XG5cblR1bm5lbGluZ0FnZW50LnByb3RvdHlwZS5yZW1vdmVTb2NrZXQgPSBmdW5jdGlvbiByZW1vdmVTb2NrZXQoc29ja2V0KSB7XG4gIHZhciBwb3MgPSB0aGlzLnNvY2tldHMuaW5kZXhPZihzb2NrZXQpXG4gIGlmIChwb3MgPT09IC0xKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMuc29ja2V0cy5zcGxpY2UocG9zLCAxKTtcblxuICB2YXIgcGVuZGluZyA9IHRoaXMucmVxdWVzdHMuc2hpZnQoKTtcbiAgaWYgKHBlbmRpbmcpIHtcbiAgICAvLyBJZiB3ZSBoYXZlIHBlbmRpbmcgcmVxdWVzdHMgYW5kIGEgc29ja2V0IGdldHMgY2xvc2VkIGEgbmV3IG9uZVxuICAgIC8vIG5lZWRzIHRvIGJlIGNyZWF0ZWQgdG8gdGFrZSBvdmVyIGluIHRoZSBwb29sIGZvciB0aGUgb25lIHRoYXQgY2xvc2VkLlxuICAgIHRoaXMuY3JlYXRlU29ja2V0KHBlbmRpbmcsIGZ1bmN0aW9uKHNvY2tldCkge1xuICAgICAgcGVuZGluZy5yZXF1ZXN0Lm9uU29ja2V0KHNvY2tldCk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlY3VyZVNvY2tldChvcHRpb25zLCBjYikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIFR1bm5lbGluZ0FnZW50LnByb3RvdHlwZS5jcmVhdGVTb2NrZXQuY2FsbChzZWxmLCBvcHRpb25zLCBmdW5jdGlvbihzb2NrZXQpIHtcbiAgICB2YXIgaG9zdEhlYWRlciA9IG9wdGlvbnMucmVxdWVzdC5nZXRIZWFkZXIoJ2hvc3QnKTtcbiAgICB2YXIgdGxzT3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh7fSwgc2VsZi5vcHRpb25zLCB7XG4gICAgICBzb2NrZXQ6IHNvY2tldCxcbiAgICAgIHNlcnZlcm5hbWU6IGhvc3RIZWFkZXIgPyBob3N0SGVhZGVyLnJlcGxhY2UoLzouKiQvLCAnJykgOiBvcHRpb25zLmhvc3RcbiAgICB9KTtcblxuICAgIC8vIDAgaXMgZHVtbXkgcG9ydCBmb3IgdjAuNlxuICAgIHZhciBzZWN1cmVTb2NrZXQgPSB0bHMuY29ubmVjdCgwLCB0bHNPcHRpb25zKTtcbiAgICBzZWxmLnNvY2tldHNbc2VsZi5zb2NrZXRzLmluZGV4T2Yoc29ja2V0KV0gPSBzZWN1cmVTb2NrZXQ7XG4gICAgY2Ioc2VjdXJlU29ja2V0KTtcbiAgfSk7XG59XG5cblxuZnVuY3Rpb24gdG9PcHRpb25zKGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcykge1xuICBpZiAodHlwZW9mIGhvc3QgPT09ICdzdHJpbmcnKSB7IC8vIHNpbmNlIHYwLjEwXG4gICAgcmV0dXJuIHtcbiAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICBwb3J0OiBwb3J0LFxuICAgICAgbG9jYWxBZGRyZXNzOiBsb2NhbEFkZHJlc3NcbiAgICB9O1xuICB9XG4gIHJldHVybiBob3N0OyAvLyBmb3IgdjAuMTEgb3IgbGF0ZXJcbn1cblxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFyIG92ZXJyaWRlcyA9IGFyZ3VtZW50c1tpXTtcbiAgICBpZiAodHlwZW9mIG92ZXJyaWRlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3ZlcnJpZGVzKTtcbiAgICAgIGZvciAodmFyIGogPSAwLCBrZXlMZW4gPSBrZXlzLmxlbmd0aDsgaiA8IGtleUxlbjsgKytqKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1tqXTtcbiAgICAgICAgaWYgKG92ZXJyaWRlc1trXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGFyZ2V0W2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cblxudmFyIGRlYnVnO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfREVCVUcgJiYgL1xcYnR1bm5lbFxcYi8udGVzdChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKSkge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBhcmdzWzBdID0gJ1RVTk5FTDogJyArIGFyZ3NbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MudW5zaGlmdCgnVFVOTkVMOicpO1xuICAgIH1cbiAgICBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIGFyZ3MpO1xuICB9XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uKCkge307XG59XG5leHBvcnRzLmRlYnVnID0gZGVidWc7IC8vIGZvciB0ZXN0XG4iLCAibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi90dW5uZWwnKTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHtcbiAga0Nsb3NlOiBTeW1ib2woJ2Nsb3NlJyksXG4gIGtEZXN0cm95OiBTeW1ib2woJ2Rlc3Ryb3knKSxcbiAga0Rpc3BhdGNoOiBTeW1ib2woJ2Rpc3BhdGNoJyksXG4gIGtVcmw6IFN5bWJvbCgndXJsJyksXG4gIGtXcml0aW5nOiBTeW1ib2woJ3dyaXRpbmcnKSxcbiAga1Jlc3VtaW5nOiBTeW1ib2woJ3Jlc3VtaW5nJyksXG4gIGtRdWV1ZTogU3ltYm9sKCdxdWV1ZScpLFxuICBrQ29ubmVjdDogU3ltYm9sKCdjb25uZWN0JyksXG4gIGtDb25uZWN0aW5nOiBTeW1ib2woJ2Nvbm5lY3RpbmcnKSxcbiAga0hlYWRlcnNMaXN0OiBTeW1ib2woJ2hlYWRlcnMgbGlzdCcpLFxuICBrS2VlcEFsaXZlRGVmYXVsdFRpbWVvdXQ6IFN5bWJvbCgnZGVmYXVsdCBrZWVwIGFsaXZlIHRpbWVvdXQnKSxcbiAga0tlZXBBbGl2ZU1heFRpbWVvdXQ6IFN5bWJvbCgnbWF4IGtlZXAgYWxpdmUgdGltZW91dCcpLFxuICBrS2VlcEFsaXZlVGltZW91dFRocmVzaG9sZDogU3ltYm9sKCdrZWVwIGFsaXZlIHRpbWVvdXQgdGhyZXNob2xkJyksXG4gIGtLZWVwQWxpdmVUaW1lb3V0VmFsdWU6IFN5bWJvbCgna2VlcCBhbGl2ZSB0aW1lb3V0JyksXG4gIGtLZWVwQWxpdmU6IFN5bWJvbCgna2VlcCBhbGl2ZScpLFxuICBrSGVhZGVyc1RpbWVvdXQ6IFN5bWJvbCgnaGVhZGVycyB0aW1lb3V0JyksXG4gIGtCb2R5VGltZW91dDogU3ltYm9sKCdib2R5IHRpbWVvdXQnKSxcbiAga1NlcnZlck5hbWU6IFN5bWJvbCgnc2VydmVyIG5hbWUnKSxcbiAga0xvY2FsQWRkcmVzczogU3ltYm9sKCdsb2NhbCBhZGRyZXNzJyksXG4gIGtIb3N0OiBTeW1ib2woJ2hvc3QnKSxcbiAga05vUmVmOiBTeW1ib2woJ25vIHJlZicpLFxuICBrQm9keVVzZWQ6IFN5bWJvbCgndXNlZCcpLFxuICBrUnVubmluZzogU3ltYm9sKCdydW5uaW5nJyksXG4gIGtCbG9ja2luZzogU3ltYm9sKCdibG9ja2luZycpLFxuICBrUGVuZGluZzogU3ltYm9sKCdwZW5kaW5nJyksXG4gIGtTaXplOiBTeW1ib2woJ3NpemUnKSxcbiAga0J1c3k6IFN5bWJvbCgnYnVzeScpLFxuICBrUXVldWVkOiBTeW1ib2woJ3F1ZXVlZCcpLFxuICBrRnJlZTogU3ltYm9sKCdmcmVlJyksXG4gIGtDb25uZWN0ZWQ6IFN5bWJvbCgnY29ubmVjdGVkJyksXG4gIGtDbG9zZWQ6IFN5bWJvbCgnY2xvc2VkJyksXG4gIGtOZWVkRHJhaW46IFN5bWJvbCgnbmVlZCBkcmFpbicpLFxuICBrUmVzZXQ6IFN5bWJvbCgncmVzZXQnKSxcbiAga0Rlc3Ryb3llZDogU3ltYm9sLmZvcignbm9kZWpzLnN0cmVhbS5kZXN0cm95ZWQnKSxcbiAga01heEhlYWRlcnNTaXplOiBTeW1ib2woJ21heCBoZWFkZXJzIHNpemUnKSxcbiAga1J1bm5pbmdJZHg6IFN5bWJvbCgncnVubmluZyBpbmRleCcpLFxuICBrUGVuZGluZ0lkeDogU3ltYm9sKCdwZW5kaW5nIGluZGV4JyksXG4gIGtFcnJvcjogU3ltYm9sKCdlcnJvcicpLFxuICBrQ2xpZW50czogU3ltYm9sKCdjbGllbnRzJyksXG4gIGtDbGllbnQ6IFN5bWJvbCgnY2xpZW50JyksXG4gIGtQYXJzZXI6IFN5bWJvbCgncGFyc2VyJyksXG4gIGtPbkRlc3Ryb3llZDogU3ltYm9sKCdkZXN0cm95IGNhbGxiYWNrcycpLFxuICBrUGlwZWxpbmluZzogU3ltYm9sKCdwaXBlbGluaW5nJyksXG4gIGtTb2NrZXQ6IFN5bWJvbCgnc29ja2V0JyksXG4gIGtIb3N0SGVhZGVyOiBTeW1ib2woJ2hvc3QgaGVhZGVyJyksXG4gIGtDb25uZWN0b3I6IFN5bWJvbCgnY29ubmVjdG9yJyksXG4gIGtTdHJpY3RDb250ZW50TGVuZ3RoOiBTeW1ib2woJ3N0cmljdCBjb250ZW50IGxlbmd0aCcpLFxuICBrTWF4UmVkaXJlY3Rpb25zOiBTeW1ib2woJ21heFJlZGlyZWN0aW9ucycpLFxuICBrTWF4UmVxdWVzdHM6IFN5bWJvbCgnbWF4UmVxdWVzdHNQZXJDbGllbnQnKSxcbiAga1Byb3h5OiBTeW1ib2woJ3Byb3h5IGFnZW50IG9wdGlvbnMnKSxcbiAga0NvdW50ZXI6IFN5bWJvbCgnc29ja2V0IHJlcXVlc3QgY291bnRlcicpLFxuICBrSW50ZXJjZXB0b3JzOiBTeW1ib2woJ2Rpc3BhdGNoIGludGVyY2VwdG9ycycpLFxuICBrTWF4UmVzcG9uc2VTaXplOiBTeW1ib2woJ21heCByZXNwb25zZSBzaXplJyksXG4gIGtIVFRQMlNlc3Npb246IFN5bWJvbCgnaHR0cDJTZXNzaW9uJyksXG4gIGtIVFRQMlNlc3Npb25TdGF0ZTogU3ltYm9sKCdodHRwMlNlc3Npb24gc3RhdGUnKSxcbiAga0hUVFAyQnVpbGRSZXF1ZXN0OiBTeW1ib2woJ2h0dHAyIGJ1aWxkIHJlcXVlc3QnKSxcbiAga0hUVFAxQnVpbGRSZXF1ZXN0OiBTeW1ib2woJ2h0dHAxIGJ1aWxkIHJlcXVlc3QnKSxcbiAga0hUVFAyQ29weUhlYWRlcnM6IFN5bWJvbCgnaHR0cDIgY29weSBoZWFkZXJzJyksXG4gIGtIVFRQQ29ublZlcnNpb246IFN5bWJvbCgnaHR0cCBjb25uZWN0aW9uIHZlcnNpb24nKSxcbiAga1JldHJ5SGFuZGxlckRlZmF1bHRSZXRyeTogU3ltYm9sKCdyZXRyeSBhZ2VudCBkZWZhdWx0IHJldHJ5JyksXG4gIGtDb25zdHJ1Y3Q6IFN5bWJvbCgnY29uc3RydWN0YWJsZScpXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNsYXNzIFVuZGljaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgdGhpcy5uYW1lID0gJ1VuZGljaUVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSJ1xuICB9XG59XG5cbmNsYXNzIENvbm5lY3RUaW1lb3V0RXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBDb25uZWN0VGltZW91dEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdDb25uZWN0VGltZW91dEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ0Nvbm5lY3QgVGltZW91dCBFcnJvcidcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9DT05ORUNUX1RJTUVPVVQnXG4gIH1cbn1cblxuY2xhc3MgSGVhZGVyc1RpbWVvdXRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEhlYWRlcnNUaW1lb3V0RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0hlYWRlcnNUaW1lb3V0RXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnSGVhZGVycyBUaW1lb3V0IEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0hFQURFUlNfVElNRU9VVCdcbiAgfVxufVxuXG5jbGFzcyBIZWFkZXJzT3ZlcmZsb3dFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEhlYWRlcnNPdmVyZmxvd0Vycm9yKVxuICAgIHRoaXMubmFtZSA9ICdIZWFkZXJzT3ZlcmZsb3dFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdIZWFkZXJzIE92ZXJmbG93IEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0hFQURFUlNfT1ZFUkZMT1cnXG4gIH1cbn1cblxuY2xhc3MgQm9keVRpbWVvdXRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEJvZHlUaW1lb3V0RXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0JvZHlUaW1lb3V0RXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnQm9keSBUaW1lb3V0IEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0JPRFlfVElNRU9VVCdcbiAgfVxufVxuXG5jbGFzcyBSZXNwb25zZVN0YXR1c0NvZGVFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIHN0YXR1c0NvZGUsIGhlYWRlcnMsIGJvZHkpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdSZXNwb25zZVN0YXR1c0NvZGVFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdSZXNwb25zZSBTdGF0dXMgQ29kZSBFcnJvcidcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9SRVNQT05TRV9TVEFUVVNfQ09ERSdcbiAgICB0aGlzLmJvZHkgPSBib2R5XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXNDb2RlXG4gICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZVxuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnNcbiAgfVxufVxuXG5jbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEludmFsaWRBcmd1bWVudEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdJbnZhbGlkQXJndW1lbnRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdJbnZhbGlkIEFyZ3VtZW50IEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0lOVkFMSURfQVJHJ1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRSZXR1cm5WYWx1ZUVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSW52YWxpZFJldHVyblZhbHVlRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ0ludmFsaWRSZXR1cm5WYWx1ZUVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ0ludmFsaWQgUmV0dXJuIFZhbHVlIEVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFJ1xuICB9XG59XG5cbmNsYXNzIFJlcXVlc3RBYm9ydGVkRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXF1ZXN0QWJvcnRlZEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdBYm9ydEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1JlcXVlc3QgYWJvcnRlZCdcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9BQk9SVEVEJ1xuICB9XG59XG5cbmNsYXNzIEluZm9ybWF0aW9uYWxFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEluZm9ybWF0aW9uYWxFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnSW5mb3JtYXRpb25hbEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1JlcXVlc3QgaW5mb3JtYXRpb24nXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfSU5GTydcbiAgfVxufVxuXG5jbGFzcyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ1JlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdSZXF1ZXN0IGJvZHkgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoIGhlYWRlcidcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9SRVFfQ09OVEVOVF9MRU5HVEhfTUlTTUFUQ0gnXG4gIH1cbn1cblxuY2xhc3MgUmVzcG9uc2VDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlc3BvbnNlQ29udGVudExlbmd0aE1pc21hdGNoRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ1Jlc3BvbnNlQ29udGVudExlbmd0aE1pc21hdGNoRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnUmVzcG9uc2UgYm9keSBsZW5ndGggZG9lcyBub3QgbWF0Y2ggY29udGVudC1sZW5ndGggaGVhZGVyJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX1JFU19DT05URU5UX0xFTkdUSF9NSVNNQVRDSCdcbiAgfVxufVxuXG5jbGFzcyBDbGllbnREZXN0cm95ZWRFcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENsaWVudERlc3Ryb3llZEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdDbGllbnREZXN0cm95ZWRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdUaGUgY2xpZW50IGlzIGRlc3Ryb3llZCdcbiAgICB0aGlzLmNvZGUgPSAnVU5EX0VSUl9ERVNUUk9ZRUQnXG4gIH1cbn1cblxuY2xhc3MgQ2xpZW50Q2xvc2VkRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBDbGllbnRDbG9zZWRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnQ2xpZW50Q2xvc2VkRXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnVGhlIGNsaWVudCBpcyBjbG9zZWQnXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfQ0xPU0VEJ1xuICB9XG59XG5cbmNsYXNzIFNvY2tldEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgc29ja2V0KSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBTb2NrZXRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnU29ja2V0RXJyb3InXG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnU29ja2V0IGVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX1NPQ0tFVCdcbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldFxuICB9XG59XG5cbmNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgTm90U3VwcG9ydGVkRXJyb3IpXG4gICAgdGhpcy5uYW1lID0gJ05vdFN1cHBvcnRlZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ05vdCBzdXBwb3J0ZWQgZXJyb3InXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfTk9UX1NVUFBPUlRFRCdcbiAgfVxufVxuXG5jbGFzcyBCYWxhbmNlZFBvb2xNaXNzaW5nVXBzdHJlYW1FcnJvciBleHRlbmRzIFVuZGljaUVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIE5vdFN1cHBvcnRlZEVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdNaXNzaW5nVXBzdHJlYW1FcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdObyB1cHN0cmVhbSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgQmFsYW5jZWRQb29sJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX0JQTF9NSVNTSU5HX1VQU1RSRUFNJ1xuICB9XG59XG5cbmNsYXNzIEhUVFBQYXJzZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIGNvZGUsIGRhdGEpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEhUVFBQYXJzZXJFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnSFRUUFBhcnNlckVycm9yJ1xuICAgIHRoaXMuY29kZSA9IGNvZGUgPyBgSFBFXyR7Y29kZX1gIDogdW5kZWZpbmVkXG4gICAgdGhpcy5kYXRhID0gZGF0YSA/IGRhdGEudG9TdHJpbmcoKSA6IHVuZGVmaW5lZFxuICB9XG59XG5cbmNsYXNzIFJlc3BvbnNlRXhjZWVkZWRNYXhTaXplRXJyb3IgZXh0ZW5kcyBVbmRpY2lFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXNwb25zZUV4Y2VlZGVkTWF4U2l6ZUVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdSZXNwb25zZUV4Y2VlZGVkTWF4U2l6ZUVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJ1Jlc3BvbnNlIGNvbnRlbnQgZXhjZWVkZWQgbWF4IHNpemUnXG4gICAgdGhpcy5jb2RlID0gJ1VORF9FUlJfUkVTX0VYQ0VFREVEX01BWF9TSVpFJ1xuICB9XG59XG5cbmNsYXNzIFJlcXVlc3RSZXRyeUVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgY29kZSwgeyBoZWFkZXJzLCBkYXRhIH0pIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcXVlc3RSZXRyeUVycm9yKVxuICAgIHRoaXMubmFtZSA9ICdSZXF1ZXN0UmV0cnlFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdSZXF1ZXN0IHJldHJ5IGVycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdVTkRfRVJSX1JFUV9SRVRSWSdcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBjb2RlXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnNcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSFRUUFBhcnNlckVycm9yLFxuICBVbmRpY2lFcnJvcixcbiAgSGVhZGVyc1RpbWVvdXRFcnJvcixcbiAgSGVhZGVyc092ZXJmbG93RXJyb3IsXG4gIEJvZHlUaW1lb3V0RXJyb3IsXG4gIFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcixcbiAgQ29ubmVjdFRpbWVvdXRFcnJvcixcbiAgUmVzcG9uc2VTdGF0dXNDb2RlRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBJbnZhbGlkUmV0dXJuVmFsdWVFcnJvcixcbiAgUmVxdWVzdEFib3J0ZWRFcnJvcixcbiAgQ2xpZW50RGVzdHJveWVkRXJyb3IsXG4gIENsaWVudENsb3NlZEVycm9yLFxuICBJbmZvcm1hdGlvbmFsRXJyb3IsXG4gIFNvY2tldEVycm9yLFxuICBOb3RTdXBwb3J0ZWRFcnJvcixcbiAgUmVzcG9uc2VDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcixcbiAgQmFsYW5jZWRQb29sTWlzc2luZ1Vwc3RyZWFtRXJyb3IsXG4gIFJlc3BvbnNlRXhjZWVkZWRNYXhTaXplRXJyb3IsXG4gIFJlcXVlc3RSZXRyeUVycm9yXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPn0gKi9cbmNvbnN0IGhlYWRlck5hbWVMb3dlckNhc2VkUmVjb3JkID0ge31cblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRUUC9IZWFkZXJzXG5jb25zdCB3ZWxsa25vd25IZWFkZXJOYW1lcyA9IFtcbiAgJ0FjY2VwdCcsXG4gICdBY2NlcHQtRW5jb2RpbmcnLFxuICAnQWNjZXB0LUxhbmd1YWdlJyxcbiAgJ0FjY2VwdC1SYW5nZXMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gICdBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1NYXgtQWdlJyxcbiAgJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LU1ldGhvZCcsXG4gICdBZ2UnLFxuICAnQWxsb3cnLFxuICAnQWx0LVN2YycsXG4gICdBbHQtVXNlZCcsXG4gICdBdXRob3JpemF0aW9uJyxcbiAgJ0NhY2hlLUNvbnRyb2wnLFxuICAnQ2xlYXItU2l0ZS1EYXRhJyxcbiAgJ0Nvbm5lY3Rpb24nLFxuICAnQ29udGVudC1EaXNwb3NpdGlvbicsXG4gICdDb250ZW50LUVuY29kaW5nJyxcbiAgJ0NvbnRlbnQtTGFuZ3VhZ2UnLFxuICAnQ29udGVudC1MZW5ndGgnLFxuICAnQ29udGVudC1Mb2NhdGlvbicsXG4gICdDb250ZW50LVJhbmdlJyxcbiAgJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JyxcbiAgJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5LVJlcG9ydC1Pbmx5JyxcbiAgJ0NvbnRlbnQtVHlwZScsXG4gICdDb29raWUnLFxuICAnQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeScsXG4gICdDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsXG4gICdDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5JyxcbiAgJ0RhdGUnLFxuICAnRGV2aWNlLU1lbW9yeScsXG4gICdEb3dubGluaycsXG4gICdFQ1QnLFxuICAnRVRhZycsXG4gICdFeHBlY3QnLFxuICAnRXhwZWN0LUNUJyxcbiAgJ0V4cGlyZXMnLFxuICAnRm9yd2FyZGVkJyxcbiAgJ0Zyb20nLFxuICAnSG9zdCcsXG4gICdJZi1NYXRjaCcsXG4gICdJZi1Nb2RpZmllZC1TaW5jZScsXG4gICdJZi1Ob25lLU1hdGNoJyxcbiAgJ0lmLVJhbmdlJyxcbiAgJ0lmLVVubW9kaWZpZWQtU2luY2UnLFxuICAnS2VlcC1BbGl2ZScsXG4gICdMYXN0LU1vZGlmaWVkJyxcbiAgJ0xpbmsnLFxuICAnTG9jYXRpb24nLFxuICAnTWF4LUZvcndhcmRzJyxcbiAgJ09yaWdpbicsXG4gICdQZXJtaXNzaW9ucy1Qb2xpY3knLFxuICAnUHJhZ21hJyxcbiAgJ1Byb3h5LUF1dGhlbnRpY2F0ZScsXG4gICdQcm94eS1BdXRob3JpemF0aW9uJyxcbiAgJ1JUVCcsXG4gICdSYW5nZScsXG4gICdSZWZlcmVyJyxcbiAgJ1JlZmVycmVyLVBvbGljeScsXG4gICdSZWZyZXNoJyxcbiAgJ1JldHJ5LUFmdGVyJyxcbiAgJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JyxcbiAgJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucycsXG4gICdTZWMtV2ViU29ja2V0LUtleScsXG4gICdTZWMtV2ViU29ja2V0LVByb3RvY29sJyxcbiAgJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbicsXG4gICdTZXJ2ZXInLFxuICAnU2VydmVyLVRpbWluZycsXG4gICdTZXJ2aWNlLVdvcmtlci1BbGxvd2VkJyxcbiAgJ1NlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9hZCcsXG4gICdTZXQtQ29va2llJyxcbiAgJ1NvdXJjZU1hcCcsXG4gICdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JyxcbiAgJ1N1cHBvcnRzLUxvYWRpbmctTW9kZScsXG4gICdURScsXG4gICdUaW1pbmctQWxsb3ctT3JpZ2luJyxcbiAgJ1RyYWlsZXInLFxuICAnVHJhbnNmZXItRW5jb2RpbmcnLFxuICAnVXBncmFkZScsXG4gICdVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzJyxcbiAgJ1VzZXItQWdlbnQnLFxuICAnVmFyeScsXG4gICdWaWEnLFxuICAnV1dXLUF1dGhlbnRpY2F0ZScsXG4gICdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJyxcbiAgJ1gtRE5TLVByZWZldGNoLUNvbnRyb2wnLFxuICAnWC1GcmFtZS1PcHRpb25zJyxcbiAgJ1gtUGVybWl0dGVkLUNyb3NzLURvbWFpbi1Qb2xpY2llcycsXG4gICdYLVBvd2VyZWQtQnknLFxuICAnWC1SZXF1ZXN0ZWQtV2l0aCcsXG4gICdYLVhTUy1Qcm90ZWN0aW9uJ1xuXVxuXG5mb3IgKGxldCBpID0gMDsgaSA8IHdlbGxrbm93bkhlYWRlck5hbWVzLmxlbmd0aDsgKytpKSB7XG4gIGNvbnN0IGtleSA9IHdlbGxrbm93bkhlYWRlck5hbWVzW2ldXG4gIGNvbnN0IGxvd2VyQ2FzZWRLZXkgPSBrZXkudG9Mb3dlckNhc2UoKVxuICBoZWFkZXJOYW1lTG93ZXJDYXNlZFJlY29yZFtrZXldID0gaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmRbbG93ZXJDYXNlZEtleV0gPVxuICAgIGxvd2VyQ2FzZWRLZXlcbn1cblxuLy8gTm90ZTogb2JqZWN0IHByb3RvdHlwZXMgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGJlIHJlZmVyZW5jZWQuIGUuZy4gYE9iamVjdCNoYXNPd25Qcm9wZXJ0eWAuXG5PYmplY3Quc2V0UHJvdG90eXBlT2YoaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmQsIG51bGwpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3ZWxsa25vd25IZWFkZXJOYW1lcyxcbiAgaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsga0Rlc3Ryb3llZCwga0JvZHlVc2VkIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBJbmNvbWluZ01lc3NhZ2UgfSA9IHJlcXVpcmUoJ2h0dHAnKVxuY29uc3Qgc3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcbmNvbnN0IG5ldCA9IHJlcXVpcmUoJ25ldCcpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuL2Vycm9ycycpXG5jb25zdCB7IEJsb2IgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCBub2RlVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxuY29uc3QgeyBzdHJpbmdpZnkgfSA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJylcbmNvbnN0IHsgaGVhZGVyTmFtZUxvd2VyQ2FzZWRSZWNvcmQgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcblxuY29uc3QgW25vZGVNYWpvciwgbm9kZU1pbm9yXSA9IHByb2Nlc3MudmVyc2lvbnMubm9kZS5zcGxpdCgnLicpLm1hcCh2ID0+IE51bWJlcih2KSlcblxuZnVuY3Rpb24gbm9wICgpIHt9XG5cbmZ1bmN0aW9uIGlzU3RyZWFtIChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLnBpcGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbm9kZS1mZXRjaC9mZXRjaC1ibG9iL2Jsb2IvOGFiNTg3ZDM0MDgwZGU5NDE0MGI1NGYwNzE2ODQ1MWU3ZDBiNjU1ZS9pbmRleC5qcyNMMjI5LUwyNDEgKE1JVCBMaWNlbnNlKVxuZnVuY3Rpb24gaXNCbG9iTGlrZSAob2JqZWN0KSB7XG4gIHJldHVybiAoQmxvYiAmJiBvYmplY3QgaW5zdGFuY2VvZiBCbG9iKSB8fCAoXG4gICAgb2JqZWN0ICYmXG4gICAgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiZcbiAgICAodHlwZW9mIG9iamVjdC5zdHJlYW0gPT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBvYmplY3QuYXJyYXlCdWZmZXIgPT09ICdmdW5jdGlvbicpICYmXG4gICAgL14oQmxvYnxGaWxlKSQvLnRlc3Qob2JqZWN0W1N5bWJvbC50b1N0cmluZ1RhZ10pXG4gIClcbn1cblxuZnVuY3Rpb24gYnVpbGRVUkwgKHVybCwgcXVlcnlQYXJhbXMpIHtcbiAgaWYgKHVybC5pbmNsdWRlcygnPycpIHx8IHVybC5pbmNsdWRlcygnIycpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdRdWVyeSBwYXJhbXMgY2Fubm90IGJlIHBhc3NlZCB3aGVuIHVybCBhbHJlYWR5IGNvbnRhaW5zIFwiP1wiIG9yIFwiI1wiLicpXG4gIH1cblxuICBjb25zdCBzdHJpbmdpZmllZCA9IHN0cmluZ2lmeShxdWVyeVBhcmFtcylcblxuICBpZiAoc3RyaW5naWZpZWQpIHtcbiAgICB1cmwgKz0gJz8nICsgc3RyaW5naWZpZWRcbiAgfVxuXG4gIHJldHVybiB1cmxcbn1cblxuZnVuY3Rpb24gcGFyc2VVUkwgKHVybCkge1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmwgPSBuZXcgVVJMKHVybClcblxuICAgIGlmICghL15odHRwcz86Ly50ZXN0KHVybC5vcmlnaW4gfHwgdXJsLnByb3RvY29sKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTCBwcm90b2NvbDogdGhlIFVSTCBtdXN0IHN0YXJ0IHdpdGggYGh0dHA6YCBvciBgaHR0cHM6YC4nKVxuICAgIH1cblxuICAgIHJldHVybiB1cmxcbiAgfVxuXG4gIGlmICghdXJsIHx8IHR5cGVvZiB1cmwgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTDogVGhlIFVSTCBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLW51bGwgb2JqZWN0LicpXG4gIH1cblxuICBpZiAoIS9eaHR0cHM/Oi8udGVzdCh1cmwub3JpZ2luIHx8IHVybC5wcm90b2NvbCkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIHByb3RvY29sOiB0aGUgVVJMIG11c3Qgc3RhcnQgd2l0aCBgaHR0cDpgIG9yIGBodHRwczpgLicpXG4gIH1cblxuICBpZiAoISh1cmwgaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgaWYgKHVybC5wb3J0ICE9IG51bGwgJiYgdXJsLnBvcnQgIT09ICcnICYmICFOdW1iZXIuaXNGaW5pdGUocGFyc2VJbnQodXJsLnBvcnQpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTDogcG9ydCBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLicpXG4gICAgfVxuXG4gICAgaWYgKHVybC5wYXRoICE9IG51bGwgJiYgdHlwZW9mIHVybC5wYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTCBwYXRoOiB0aGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIG51bGwvdW5kZWZpbmVkLicpXG4gICAgfVxuXG4gICAgaWYgKHVybC5wYXRobmFtZSAhPSBudWxsICYmIHR5cGVvZiB1cmwucGF0aG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgVVJMIHBhdGhuYW1lOiB0aGUgcGF0aG5hbWUgbXVzdCBiZSBhIHN0cmluZyBvciBudWxsL3VuZGVmaW5lZC4nKVxuICAgIH1cblxuICAgIGlmICh1cmwuaG9zdG5hbWUgIT0gbnVsbCAmJiB0eXBlb2YgdXJsLmhvc3RuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTCBob3N0bmFtZTogdGhlIGhvc3RuYW1lIG11c3QgYmUgYSBzdHJpbmcgb3IgbnVsbC91bmRlZmluZWQuJylcbiAgICB9XG5cbiAgICBpZiAodXJsLm9yaWdpbiAhPSBudWxsICYmIHR5cGVvZiB1cmwub3JpZ2luICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdJbnZhbGlkIFVSTCBvcmlnaW46IHRoZSBvcmlnaW4gbXVzdCBiZSBhIHN0cmluZyBvciBudWxsL3VuZGVmaW5lZC4nKVxuICAgIH1cblxuICAgIGNvbnN0IHBvcnQgPSB1cmwucG9ydCAhPSBudWxsXG4gICAgICA/IHVybC5wb3J0XG4gICAgICA6ICh1cmwucHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODApXG4gICAgbGV0IG9yaWdpbiA9IHVybC5vcmlnaW4gIT0gbnVsbFxuICAgICAgPyB1cmwub3JpZ2luXG4gICAgICA6IGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3RuYW1lfToke3BvcnR9YFxuICAgIGxldCBwYXRoID0gdXJsLnBhdGggIT0gbnVsbFxuICAgICAgPyB1cmwucGF0aFxuICAgICAgOiBgJHt1cmwucGF0aG5hbWUgfHwgJyd9JHt1cmwuc2VhcmNoIHx8ICcnfWBcblxuICAgIGlmIChvcmlnaW4uZW5kc1dpdGgoJy8nKSkge1xuICAgICAgb3JpZ2luID0gb3JpZ2luLnN1YnN0cmluZygwLCBvcmlnaW4ubGVuZ3RoIC0gMSlcbiAgICB9XG5cbiAgICBpZiAocGF0aCAmJiAhcGF0aC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHBhdGggPSBgLyR7cGF0aH1gXG4gICAgfVxuICAgIC8vIG5ldyBVUkwocGF0aCwgb3JpZ2luKSBpcyB1bnNhZmUgd2hlbiBgcGF0aGAgY29udGFpbnMgYW4gYWJzb2x1dGUgVVJMXG4gICAgLy8gRnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML1VSTDpcbiAgICAvLyBJZiBmaXJzdCBwYXJhbWV0ZXIgaXMgYSByZWxhdGl2ZSBVUkwsIHNlY29uZCBwYXJhbSBpcyByZXF1aXJlZCwgYW5kIHdpbGwgYmUgdXNlZCBhcyB0aGUgYmFzZSBVUkwuXG4gICAgLy8gSWYgZmlyc3QgcGFyYW1ldGVyIGlzIGFuIGFic29sdXRlIFVSTCwgYSBnaXZlbiBzZWNvbmQgcGFyYW0gd2lsbCBiZSBpZ25vcmVkLlxuICAgIHVybCA9IG5ldyBVUkwob3JpZ2luICsgcGF0aClcbiAgfVxuXG4gIHJldHVybiB1cmxcbn1cblxuZnVuY3Rpb24gcGFyc2VPcmlnaW4gKHVybCkge1xuICB1cmwgPSBwYXJzZVVSTCh1cmwpXG5cbiAgaWYgKHVybC5wYXRobmFtZSAhPT0gJy8nIHx8IHVybC5zZWFyY2ggfHwgdXJsLmhhc2gpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgdXJsJylcbiAgfVxuXG4gIHJldHVybiB1cmxcbn1cblxuZnVuY3Rpb24gZ2V0SG9zdG5hbWUgKGhvc3QpIHtcbiAgaWYgKGhvc3RbMF0gPT09ICdbJykge1xuICAgIGNvbnN0IGlkeCA9IGhvc3QuaW5kZXhPZignXScpXG5cbiAgICBhc3NlcnQoaWR4ICE9PSAtMSlcbiAgICByZXR1cm4gaG9zdC5zdWJzdHJpbmcoMSwgaWR4KVxuICB9XG5cbiAgY29uc3QgaWR4ID0gaG9zdC5pbmRleE9mKCc6JylcbiAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBob3N0XG5cbiAgcmV0dXJuIGhvc3Quc3Vic3RyaW5nKDAsIGlkeClcbn1cblxuLy8gSVAgYWRkcmVzc2VzIGFyZSBub3QgdmFsaWQgc2VydmVyIG5hbWVzIHBlciBSRkM2MDY2XG4vLyA+IEN1cnJlbnRseSwgdGhlIG9ubHkgc2VydmVyIG5hbWVzIHN1cHBvcnRlZCBhcmUgRE5TIGhvc3RuYW1lc1xuZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSAoaG9zdCkge1xuICBpZiAoIWhvc3QpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBob3N0LCAnc3RyaW5nJylcblxuICBjb25zdCBzZXJ2ZXJuYW1lID0gZ2V0SG9zdG5hbWUoaG9zdClcbiAgaWYgKG5ldC5pc0lQKHNlcnZlcm5hbWUpKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICByZXR1cm4gc2VydmVybmFtZVxufVxuXG5mdW5jdGlvbiBkZWVwQ2xvbmUgKG9iaikge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKVxufVxuXG5mdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUgKG9iaikge1xuICByZXR1cm4gISEob2JqICE9IG51bGwgJiYgdHlwZW9mIG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpXG59XG5cbmZ1bmN0aW9uIGlzSXRlcmFibGUgKG9iaikge1xuICByZXR1cm4gISEob2JqICE9IG51bGwgJiYgKHR5cGVvZiBvYmpbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykpXG59XG5cbmZ1bmN0aW9uIGJvZHlMZW5ndGggKGJvZHkpIHtcbiAgaWYgKGJvZHkgPT0gbnVsbCkge1xuICAgIHJldHVybiAwXG4gIH0gZWxzZSBpZiAoaXNTdHJlYW0oYm9keSkpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGJvZHkuX3JlYWRhYmxlU3RhdGVcbiAgICByZXR1cm4gc3RhdGUgJiYgc3RhdGUub2JqZWN0TW9kZSA9PT0gZmFsc2UgJiYgc3RhdGUuZW5kZWQgPT09IHRydWUgJiYgTnVtYmVyLmlzRmluaXRlKHN0YXRlLmxlbmd0aClcbiAgICAgID8gc3RhdGUubGVuZ3RoXG4gICAgICA6IG51bGxcbiAgfSBlbHNlIGlmIChpc0Jsb2JMaWtlKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHkuc2l6ZSAhPSBudWxsID8gYm9keS5zaXplIDogbnVsbFxuICB9IGVsc2UgaWYgKGlzQnVmZmVyKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHkuYnl0ZUxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZXN0cm95ZWQgKHN0cmVhbSkge1xuICByZXR1cm4gIXN0cmVhbSB8fCAhIShzdHJlYW0uZGVzdHJveWVkIHx8IHN0cmVhbVtrRGVzdHJveWVkXSlcbn1cblxuZnVuY3Rpb24gaXNSZWFkYWJsZUFib3J0ZWQgKHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbSAmJiBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgcmV0dXJuIGlzRGVzdHJveWVkKHN0cmVhbSkgJiYgc3RhdGUgJiYgIXN0YXRlLmVuZEVtaXR0ZWRcbn1cblxuZnVuY3Rpb24gZGVzdHJveSAoc3RyZWFtLCBlcnIpIHtcbiAgaWYgKHN0cmVhbSA9PSBudWxsIHx8ICFpc1N0cmVhbShzdHJlYW0pIHx8IGlzRGVzdHJveWVkKHN0cmVhbSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RyZWFtLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHN0cmVhbSkuY29uc3RydWN0b3IgPT09IEluY29taW5nTWVzc2FnZSkge1xuICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC8zODUwNS9maWxlc1xuICAgICAgc3RyZWFtLnNvY2tldCA9IG51bGxcbiAgICB9XG5cbiAgICBzdHJlYW0uZGVzdHJveShlcnIpXG4gIH0gZWxzZSBpZiAoZXJyKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljaygoc3RyZWFtLCBlcnIpID0+IHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9LCBzdHJlYW0sIGVycilcbiAgfVxuXG4gIGlmIChzdHJlYW0uZGVzdHJveWVkICE9PSB0cnVlKSB7XG4gICAgc3RyZWFtW2tEZXN0cm95ZWRdID0gdHJ1ZVxuICB9XG59XG5cbmNvbnN0IEtFRVBBTElWRV9USU1FT1VUX0VYUFIgPSAvdGltZW91dD0oXFxkKykvXG5mdW5jdGlvbiBwYXJzZUtlZXBBbGl2ZVRpbWVvdXQgKHZhbCkge1xuICBjb25zdCBtID0gdmFsLnRvU3RyaW5nKCkubWF0Y2goS0VFUEFMSVZFX1RJTUVPVVRfRVhQUilcbiAgcmV0dXJuIG0gPyBwYXJzZUludChtWzFdLCAxMCkgKiAxMDAwIDogbnVsbFxufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGhlYWRlciBuYW1lIGFuZCByZXR1cm5zIGl0cyBsb3dlcmNhc2UgdmFsdWUuXG4gKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlcn0gdmFsdWUgSGVhZGVyIG5hbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGhlYWRlck5hbWVUb1N0cmluZyAodmFsdWUpIHtcbiAgcmV0dXJuIGhlYWRlck5hbWVMb3dlckNhc2VkUmVjb3JkW3ZhbHVlXSB8fCB2YWx1ZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyAoaGVhZGVycywgb2JqID0ge30pIHtcbiAgLy8gRm9yIEgyIHN1cHBvcnRcbiAgaWYgKCFBcnJheS5pc0FycmF5KGhlYWRlcnMpKSByZXR1cm4gaGVhZGVyc1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IGtleSA9IGhlYWRlcnNbaV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgbGV0IHZhbCA9IG9ialtrZXldXG5cbiAgICBpZiAoIXZhbCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tpICsgMV0pKSB7XG4gICAgICAgIG9ialtrZXldID0gaGVhZGVyc1tpICsgMV0ubWFwKHggPT4geC50b1N0cmluZygndXRmOCcpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqW2tleV0gPSBoZWFkZXJzW2kgKyAxXS50b1N0cmluZygndXRmOCcpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIHZhbCA9IFt2YWxdXG4gICAgICAgIG9ialtrZXldID0gdmFsXG4gICAgICB9XG4gICAgICB2YWwucHVzaChoZWFkZXJzW2kgKyAxXS50b1N0cmluZygndXRmOCcpKVxuICAgIH1cbiAgfVxuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC80NjUyOFxuICBpZiAoJ2NvbnRlbnQtbGVuZ3RoJyBpbiBvYmogJiYgJ2NvbnRlbnQtZGlzcG9zaXRpb24nIGluIG9iaikge1xuICAgIG9ialsnY29udGVudC1kaXNwb3NpdGlvbiddID0gQnVmZmVyLmZyb20ob2JqWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pLnRvU3RyaW5nKCdsYXRpbjEnKVxuICB9XG5cbiAgcmV0dXJuIG9ialxufVxuXG5mdW5jdGlvbiBwYXJzZVJhd0hlYWRlcnMgKGhlYWRlcnMpIHtcbiAgY29uc3QgcmV0ID0gW11cbiAgbGV0IGhhc0NvbnRlbnRMZW5ndGggPSBmYWxzZVxuICBsZXQgY29udGVudERpc3Bvc2l0aW9uSWR4ID0gLTFcblxuICBmb3IgKGxldCBuID0gMDsgbiA8IGhlYWRlcnMubGVuZ3RoOyBuICs9IDIpIHtcbiAgICBjb25zdCBrZXkgPSBoZWFkZXJzW24gKyAwXS50b1N0cmluZygpXG4gICAgY29uc3QgdmFsID0gaGVhZGVyc1tuICsgMV0udG9TdHJpbmcoJ3V0ZjgnKVxuXG4gICAgaWYgKGtleS5sZW5ndGggPT09IDE0ICYmIChrZXkgPT09ICdjb250ZW50LWxlbmd0aCcgfHwga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LWxlbmd0aCcpKSB7XG4gICAgICByZXQucHVzaChrZXksIHZhbClcbiAgICAgIGhhc0NvbnRlbnRMZW5ndGggPSB0cnVlXG4gICAgfSBlbHNlIGlmIChrZXkubGVuZ3RoID09PSAxOSAmJiAoa2V5ID09PSAnY29udGVudC1kaXNwb3NpdGlvbicgfHwga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LWRpc3Bvc2l0aW9uJykpIHtcbiAgICAgIGNvbnRlbnREaXNwb3NpdGlvbklkeCA9IHJldC5wdXNoKGtleSwgdmFsKSAtIDFcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0LnB1c2goa2V5LCB2YWwpXG4gICAgfVxuICB9XG5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzQ2NTI4XG4gIGlmIChoYXNDb250ZW50TGVuZ3RoICYmIGNvbnRlbnREaXNwb3NpdGlvbklkeCAhPT0gLTEpIHtcbiAgICByZXRbY29udGVudERpc3Bvc2l0aW9uSWR4XSA9IEJ1ZmZlci5mcm9tKHJldFtjb250ZW50RGlzcG9zaXRpb25JZHhdKS50b1N0cmluZygnbGF0aW4xJylcbiAgfVxuXG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIgKGJ1ZmZlcikge1xuICAvLyBTZWUsIGh0dHBzOi8vZ2l0aHViLmNvbS9tY29sbGluYS91bmRpY2kvcHVsbC8zMTlcbiAgcmV0dXJuIGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcilcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVIYW5kbGVyIChoYW5kbGVyLCBtZXRob2QsIHVwZ3JhZGUpIHtcbiAgaWYgKCFoYW5kbGVyIHx8IHR5cGVvZiBoYW5kbGVyICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaGFuZGxlciBtdXN0IGJlIGFuIG9iamVjdCcpXG4gIH1cblxuICBpZiAodHlwZW9mIGhhbmRsZXIub25Db25uZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9uQ29ubmVjdCBtZXRob2QnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyLm9uRXJyb3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25FcnJvciBtZXRob2QnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyLm9uQm9keVNlbnQgIT09ICdmdW5jdGlvbicgJiYgaGFuZGxlci5vbkJvZHlTZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25Cb2R5U2VudCBtZXRob2QnKVxuICB9XG5cbiAgaWYgKHVwZ3JhZGUgfHwgbWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICBpZiAodHlwZW9mIGhhbmRsZXIub25VcGdyYWRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25VcGdyYWRlIG1ldGhvZCcpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgaGFuZGxlci5vbkhlYWRlcnMgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkhlYWRlcnMgbWV0aG9kJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhbmRsZXIub25EYXRhICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25EYXRhIG1ldGhvZCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyLm9uQ29tcGxldGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkNvbXBsZXRlIG1ldGhvZCcpXG4gICAgfVxuICB9XG59XG5cbi8vIEEgYm9keSBpcyBkaXN0dXJiZWQgaWYgaXQgaGFzIGJlZW4gcmVhZCBmcm9tIGFuZCBpdCBjYW5ub3Rcbi8vIGJlIHJlLXVzZWQgd2l0aG91dCBsb3Npbmcgc3RhdGUgb3IgZGF0YS5cbmZ1bmN0aW9uIGlzRGlzdHVyYmVkIChib2R5KSB7XG4gIHJldHVybiAhIShib2R5ICYmIChcbiAgICBzdHJlYW0uaXNEaXN0dXJiZWRcbiAgICAgID8gc3RyZWFtLmlzRGlzdHVyYmVkKGJvZHkpIHx8IGJvZHlba0JvZHlVc2VkXSAvLyBUT0RPIChmaXgpOiBXaHkgaXMgYm9keVtrQm9keVVzZWRdIG5lZWRlZD9cbiAgICAgIDogYm9keVtrQm9keVVzZWRdIHx8XG4gICAgICAgIGJvZHkucmVhZGFibGVEaWRSZWFkIHx8XG4gICAgICAgIChib2R5Ll9yZWFkYWJsZVN0YXRlICYmIGJvZHkuX3JlYWRhYmxlU3RhdGUuZGF0YUVtaXR0ZWQpIHx8XG4gICAgICAgIGlzUmVhZGFibGVBYm9ydGVkKGJvZHkpXG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzRXJyb3JlZCAoYm9keSkge1xuICByZXR1cm4gISEoYm9keSAmJiAoXG4gICAgc3RyZWFtLmlzRXJyb3JlZFxuICAgICAgPyBzdHJlYW0uaXNFcnJvcmVkKGJvZHkpXG4gICAgICA6IC9zdGF0ZTogJ2Vycm9yZWQnLy50ZXN0KG5vZGVVdGlsLmluc3BlY3QoYm9keSlcbiAgICAgICkpKVxufVxuXG5mdW5jdGlvbiBpc1JlYWRhYmxlIChib2R5KSB7XG4gIHJldHVybiAhIShib2R5ICYmIChcbiAgICBzdHJlYW0uaXNSZWFkYWJsZVxuICAgICAgPyBzdHJlYW0uaXNSZWFkYWJsZShib2R5KVxuICAgICAgOiAvc3RhdGU6ICdyZWFkYWJsZScvLnRlc3Qobm9kZVV0aWwuaW5zcGVjdChib2R5KVxuICAgICAgKSkpXG59XG5cbmZ1bmN0aW9uIGdldFNvY2tldEluZm8gKHNvY2tldCkge1xuICByZXR1cm4ge1xuICAgIGxvY2FsQWRkcmVzczogc29ja2V0LmxvY2FsQWRkcmVzcyxcbiAgICBsb2NhbFBvcnQ6IHNvY2tldC5sb2NhbFBvcnQsXG4gICAgcmVtb3RlQWRkcmVzczogc29ja2V0LnJlbW90ZUFkZHJlc3MsXG4gICAgcmVtb3RlUG9ydDogc29ja2V0LnJlbW90ZVBvcnQsXG4gICAgcmVtb3RlRmFtaWx5OiBzb2NrZXQucmVtb3RlRmFtaWx5LFxuICAgIHRpbWVvdXQ6IHNvY2tldC50aW1lb3V0LFxuICAgIGJ5dGVzV3JpdHRlbjogc29ja2V0LmJ5dGVzV3JpdHRlbixcbiAgICBieXRlc1JlYWQ6IHNvY2tldC5ieXRlc1JlYWRcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiAqIGNvbnZlcnRJdGVyYWJsZVRvQnVmZmVyIChpdGVyYWJsZSkge1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGl0ZXJhYmxlKSB7XG4gICAgeWllbGQgQnVmZmVyLmlzQnVmZmVyKGNodW5rKSA/IGNodW5rIDogQnVmZmVyLmZyb20oY2h1bmspXG4gIH1cbn1cblxubGV0IFJlYWRhYmxlU3RyZWFtXG5mdW5jdGlvbiBSZWFkYWJsZVN0cmVhbUZyb20gKGl0ZXJhYmxlKSB7XG4gIGlmICghUmVhZGFibGVTdHJlYW0pIHtcbiAgICBSZWFkYWJsZVN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbVxuICB9XG5cbiAgaWYgKFJlYWRhYmxlU3RyZWFtLmZyb20pIHtcbiAgICByZXR1cm4gUmVhZGFibGVTdHJlYW0uZnJvbShjb252ZXJ0SXRlcmFibGVUb0J1ZmZlcihpdGVyYWJsZSkpXG4gIH1cblxuICBsZXQgaXRlcmF0b3JcbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbShcbiAgICB7XG4gICAgICBhc3luYyBzdGFydCAoKSB7XG4gICAgICAgIGl0ZXJhdG9yID0gaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKClcbiAgICAgIH0sXG4gICAgICBhc3luYyBwdWxsIChjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKVxuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSA/IHZhbHVlIDogQnVmZmVyLmZyb20odmFsdWUpXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZGVzaXJlZFNpemUgPiAwXG4gICAgICB9LFxuICAgICAgYXN5bmMgY2FuY2VsIChyZWFzb24pIHtcbiAgICAgICAgYXdhaXQgaXRlcmF0b3IucmV0dXJuKClcbiAgICAgIH1cbiAgICB9LFxuICAgIDBcbiAgKVxufVxuXG4vLyBUaGUgY2h1bmsgc2hvdWxkIGJlIGEgRm9ybURhdGEgaW5zdGFuY2UgYW5kIGNvbnRhaW5zXG4vLyBhbGwgdGhlIHJlcXVpcmVkIG1ldGhvZHMuXG5mdW5jdGlvbiBpc0Zvcm1EYXRhTGlrZSAob2JqZWN0KSB7XG4gIHJldHVybiAoXG4gICAgb2JqZWN0ICYmXG4gICAgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2Ygb2JqZWN0LmFwcGVuZCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmplY3QuZGVsZXRlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iamVjdC5nZXQgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygb2JqZWN0LmdldEFsbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmplY3QuaGFzID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iamVjdC5zZXQgPT09ICdmdW5jdGlvbicgJiZcbiAgICBvYmplY3RbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0Zvcm1EYXRhJ1xuICApXG59XG5cbmZ1bmN0aW9uIHRocm93SWZBYm9ydGVkIChzaWduYWwpIHtcbiAgaWYgKCFzaWduYWwpIHsgcmV0dXJuIH1cbiAgaWYgKHR5cGVvZiBzaWduYWwudGhyb3dJZkFib3J0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaWduYWwudGhyb3dJZkFib3J0ZWQoKVxuICB9IGVsc2Uge1xuICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgLy8gRE9NRXhjZXB0aW9uIG5vdCBhdmFpbGFibGUgPCB2MTcuMC4wXG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQnKVxuICAgICAgZXJyLm5hbWUgPSAnQWJvcnRFcnJvcidcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRBYm9ydExpc3RlbmVyIChzaWduYWwsIGxpc3RlbmVyKSB7XG4gIGlmICgnYWRkRXZlbnRMaXN0ZW5lcicgaW4gc2lnbmFsKSB7XG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIsIHsgb25jZTogdHJ1ZSB9KVxuICAgIHJldHVybiAoKSA9PiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcilcbiAgfVxuICBzaWduYWwuYWRkTGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpXG4gIHJldHVybiAoKSA9PiBzaWduYWwucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpXG59XG5cbmNvbnN0IGhhc1RvV2VsbEZvcm1lZCA9ICEhU3RyaW5nLnByb3RvdHlwZS50b1dlbGxGb3JtZWRcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKi9cbmZ1bmN0aW9uIHRvVVNWU3RyaW5nICh2YWwpIHtcbiAgaWYgKGhhc1RvV2VsbEZvcm1lZCkge1xuICAgIHJldHVybiBgJHt2YWx9YC50b1dlbGxGb3JtZWQoKVxuICB9IGVsc2UgaWYgKG5vZGVVdGlsLnRvVVNWU3RyaW5nKSB7XG4gICAgcmV0dXJuIG5vZGVVdGlsLnRvVVNWU3RyaW5nKHZhbClcbiAgfVxuXG4gIHJldHVybiBgJHt2YWx9YFxufVxuXG4vLyBQYXJzZWQgYWNjb3JkaW5nbHkgdG8gUkZDIDkxMTBcbi8vIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5MTEwI2ZpZWxkLmNvbnRlbnQtcmFuZ2VcbmZ1bmN0aW9uIHBhcnNlUmFuZ2VIZWFkZXIgKHJhbmdlKSB7XG4gIGlmIChyYW5nZSA9PSBudWxsIHx8IHJhbmdlID09PSAnJykgcmV0dXJuIHsgc3RhcnQ6IDAsIGVuZDogbnVsbCwgc2l6ZTogbnVsbCB9XG5cbiAgY29uc3QgbSA9IHJhbmdlID8gcmFuZ2UubWF0Y2goL15ieXRlcyAoXFxkKyktKFxcZCspXFwvKFxcZCspPyQvKSA6IG51bGxcbiAgcmV0dXJuIG1cbiAgICA/IHtcbiAgICAgICAgc3RhcnQ6IHBhcnNlSW50KG1bMV0pLFxuICAgICAgICBlbmQ6IG1bMl0gPyBwYXJzZUludChtWzJdKSA6IG51bGwsXG4gICAgICAgIHNpemU6IG1bM10gPyBwYXJzZUludChtWzNdKSA6IG51bGxcbiAgICAgIH1cbiAgICA6IG51bGxcbn1cblxuY29uc3Qga0VudW1lcmFibGVQcm9wZXJ0eSA9IE9iamVjdC5jcmVhdGUobnVsbClcbmtFbnVtZXJhYmxlUHJvcGVydHkuZW51bWVyYWJsZSA9IHRydWVcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG5vcCxcbiAgaXNEaXN0dXJiZWQsXG4gIGlzRXJyb3JlZCxcbiAgaXNSZWFkYWJsZSxcbiAgdG9VU1ZTdHJpbmcsXG4gIGlzUmVhZGFibGVBYm9ydGVkLFxuICBpc0Jsb2JMaWtlLFxuICBwYXJzZU9yaWdpbixcbiAgcGFyc2VVUkwsXG4gIGdldFNlcnZlck5hbWUsXG4gIGlzU3RyZWFtLFxuICBpc0l0ZXJhYmxlLFxuICBpc0FzeW5jSXRlcmFibGUsXG4gIGlzRGVzdHJveWVkLFxuICBoZWFkZXJOYW1lVG9TdHJpbmcsXG4gIHBhcnNlUmF3SGVhZGVycyxcbiAgcGFyc2VIZWFkZXJzLFxuICBwYXJzZUtlZXBBbGl2ZVRpbWVvdXQsXG4gIGRlc3Ryb3ksXG4gIGJvZHlMZW5ndGgsXG4gIGRlZXBDbG9uZSxcbiAgUmVhZGFibGVTdHJlYW1Gcm9tLFxuICBpc0J1ZmZlcixcbiAgdmFsaWRhdGVIYW5kbGVyLFxuICBnZXRTb2NrZXRJbmZvLFxuICBpc0Zvcm1EYXRhTGlrZSxcbiAgYnVpbGRVUkwsXG4gIHRocm93SWZBYm9ydGVkLFxuICBhZGRBYm9ydExpc3RlbmVyLFxuICBwYXJzZVJhbmdlSGVhZGVyLFxuICBub2RlTWFqb3IsXG4gIG5vZGVNaW5vcixcbiAgbm9kZUhhc0F1dG9TZWxlY3RGYW1pbHk6IG5vZGVNYWpvciA+IDE4IHx8IChub2RlTWFqb3IgPT09IDE4ICYmIG5vZGVNaW5vciA+PSAxMyksXG4gIHNhZmVIVFRQTWV0aG9kczogWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1RSQUNFJ11cbn1cbiIsICIndXNlIHN0cmljdCdcblxubGV0IGZhc3ROb3cgPSBEYXRlLm5vdygpXG5sZXQgZmFzdE5vd1RpbWVvdXRcblxuY29uc3QgZmFzdFRpbWVycyA9IFtdXG5cbmZ1bmN0aW9uIG9uVGltZW91dCAoKSB7XG4gIGZhc3ROb3cgPSBEYXRlLm5vdygpXG5cbiAgbGV0IGxlbiA9IGZhc3RUaW1lcnMubGVuZ3RoXG4gIGxldCBpZHggPSAwXG4gIHdoaWxlIChpZHggPCBsZW4pIHtcbiAgICBjb25zdCB0aW1lciA9IGZhc3RUaW1lcnNbaWR4XVxuXG4gICAgaWYgKHRpbWVyLnN0YXRlID09PSAwKSB7XG4gICAgICB0aW1lci5zdGF0ZSA9IGZhc3ROb3cgKyB0aW1lci5kZWxheVxuICAgIH0gZWxzZSBpZiAodGltZXIuc3RhdGUgPiAwICYmIGZhc3ROb3cgPj0gdGltZXIuc3RhdGUpIHtcbiAgICAgIHRpbWVyLnN0YXRlID0gLTFcbiAgICAgIHRpbWVyLmNhbGxiYWNrKHRpbWVyLm9wYXF1ZSlcbiAgICB9XG5cbiAgICBpZiAodGltZXIuc3RhdGUgPT09IC0xKSB7XG4gICAgICB0aW1lci5zdGF0ZSA9IC0yXG4gICAgICBpZiAoaWR4ICE9PSBsZW4gLSAxKSB7XG4gICAgICAgIGZhc3RUaW1lcnNbaWR4XSA9IGZhc3RUaW1lcnMucG9wKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhc3RUaW1lcnMucG9wKClcbiAgICAgIH1cbiAgICAgIGxlbiAtPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIGlkeCArPSAxXG4gICAgfVxuICB9XG5cbiAgaWYgKGZhc3RUaW1lcnMubGVuZ3RoID4gMCkge1xuICAgIHJlZnJlc2hUaW1lb3V0KClcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoVGltZW91dCAoKSB7XG4gIGlmIChmYXN0Tm93VGltZW91dCAmJiBmYXN0Tm93VGltZW91dC5yZWZyZXNoKSB7XG4gICAgZmFzdE5vd1RpbWVvdXQucmVmcmVzaCgpXG4gIH0gZWxzZSB7XG4gICAgY2xlYXJUaW1lb3V0KGZhc3ROb3dUaW1lb3V0KVxuICAgIGZhc3ROb3dUaW1lb3V0ID0gc2V0VGltZW91dChvblRpbWVvdXQsIDFlMylcbiAgICBpZiAoZmFzdE5vd1RpbWVvdXQudW5yZWYpIHtcbiAgICAgIGZhc3ROb3dUaW1lb3V0LnVucmVmKClcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgVGltZW91dCB7XG4gIGNvbnN0cnVjdG9yIChjYWxsYmFjaywgZGVsYXksIG9wYXF1ZSkge1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheVxuICAgIHRoaXMub3BhcXVlID0gb3BhcXVlXG5cbiAgICAvLyAgLTIgbm90IGluIHRpbWVyIGxpc3RcbiAgICAvLyAgLTEgaW4gdGltZXIgbGlzdCBidXQgaW5hY3RpdmVcbiAgICAvLyAgIDAgaW4gdGltZXIgbGlzdCB3YWl0aW5nIGZvciB0aW1lXG4gICAgLy8gPiAwIGluIHRpbWVyIGxpc3Qgd2FpdGluZyBmb3IgdGltZSB0byBleHBpcmVcbiAgICB0aGlzLnN0YXRlID0gLTJcblxuICAgIHRoaXMucmVmcmVzaCgpXG4gIH1cblxuICByZWZyZXNoICgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gLTIpIHtcbiAgICAgIGZhc3RUaW1lcnMucHVzaCh0aGlzKVxuICAgICAgaWYgKCFmYXN0Tm93VGltZW91dCB8fCBmYXN0VGltZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZWZyZXNoVGltZW91dCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IDBcbiAgfVxuXG4gIGNsZWFyICgpIHtcbiAgICB0aGlzLnN0YXRlID0gLTFcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0VGltZW91dCAoY2FsbGJhY2ssIGRlbGF5LCBvcGFxdWUpIHtcbiAgICByZXR1cm4gZGVsYXkgPCAxZTNcbiAgICAgID8gc2V0VGltZW91dChjYWxsYmFjaywgZGVsYXksIG9wYXF1ZSlcbiAgICAgIDogbmV3IFRpbWVvdXQoY2FsbGJhY2ssIGRlbGF5LCBvcGFxdWUpXG4gIH0sXG4gIGNsZWFyVGltZW91dCAodGltZW91dCkge1xuICAgIGlmICh0aW1lb3V0IGluc3RhbmNlb2YgVGltZW91dCkge1xuICAgICAgdGltZW91dC5jbGVhcigpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIH1cbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIENvcHlyaWdodCBCcmlhbiBXaGl0ZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tc2NkZXgvc3RyZWFtc2VhcmNoXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbiAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3JcbiAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbiAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1NcbiAqIElOIFRIRSBTT0ZUV0FSRS5cbiAqXG4gKiBCYXNlZCBoZWF2aWx5IG9uIHRoZSBTdHJlYW1pbmcgQm95ZXItTW9vcmUtSG9yc3Bvb2wgQysrIGltcGxlbWVudGF0aW9uXG4gKiBieSBIb25nbGkgTGFpIGF0OiBodHRwczovL2dpdGh1Yi5jb20vRm9vQmFyV2lkZ2V0L2JveWVyLW1vb3JlLWhvcnNwb29sXG4gKi9cbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ25vZGU6ZXZlbnRzJykuRXZlbnRFbWl0dGVyXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ25vZGU6dXRpbCcpLmluaGVyaXRzXG5cbmZ1bmN0aW9uIFNCTUggKG5lZWRsZSkge1xuICBpZiAodHlwZW9mIG5lZWRsZSA9PT0gJ3N0cmluZycpIHtcbiAgICBuZWVkbGUgPSBCdWZmZXIuZnJvbShuZWVkbGUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihuZWVkbGUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIG5lZWRsZSBoYXMgdG8gYmUgYSBTdHJpbmcgb3IgYSBCdWZmZXIuJylcbiAgfVxuXG4gIGNvbnN0IG5lZWRsZUxlbmd0aCA9IG5lZWRsZS5sZW5ndGhcblxuICBpZiAobmVlZGxlTGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbmVlZGxlIGNhbm5vdCBiZSBhbiBlbXB0eSBTdHJpbmcvQnVmZmVyLicpXG4gIH1cblxuICBpZiAobmVlZGxlTGVuZ3RoID4gMjU2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbmVlZGxlIGNhbm5vdCBoYXZlIGEgbGVuZ3RoIGJpZ2dlciB0aGFuIDI1Ni4nKVxuICB9XG5cbiAgdGhpcy5tYXhNYXRjaGVzID0gSW5maW5pdHlcbiAgdGhpcy5tYXRjaGVzID0gMFxuXG4gIHRoaXMuX29jYyA9IG5ldyBBcnJheSgyNTYpXG4gICAgLmZpbGwobmVlZGxlTGVuZ3RoKSAvLyBJbml0aWFsaXplIG9jY3VycmVuY2UgdGFibGUuXG4gIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSA9IDBcbiAgdGhpcy5fbmVlZGxlID0gbmVlZGxlXG4gIHRoaXMuX2J1ZnBvcyA9IDBcblxuICB0aGlzLl9sb29rYmVoaW5kID0gQnVmZmVyLmFsbG9jKG5lZWRsZUxlbmd0aClcblxuICAvLyBQb3B1bGF0ZSBvY2N1cnJlbmNlIHRhYmxlIHdpdGggYW5hbHlzaXMgb2YgdGhlIG5lZWRsZSxcbiAgLy8gaWdub3JpbmcgbGFzdCBsZXR0ZXIuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmVlZGxlTGVuZ3RoIC0gMTsgKytpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdmFyXG4gICAgdGhpcy5fb2NjW25lZWRsZVtpXV0gPSBuZWVkbGVMZW5ndGggLSAxIC0gaVxuICB9XG59XG5pbmhlcml0cyhTQk1ILCBFdmVudEVtaXR0ZXIpXG5cblNCTUgucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9sb29rYmVoaW5kX3NpemUgPSAwXG4gIHRoaXMubWF0Y2hlcyA9IDBcbiAgdGhpcy5fYnVmcG9zID0gMFxufVxuXG5TQk1ILnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBwb3MpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7XG4gICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgJ2JpbmFyeScpXG4gIH1cbiAgY29uc3QgY2hsZW4gPSBjaHVuay5sZW5ndGhcbiAgdGhpcy5fYnVmcG9zID0gcG9zIHx8IDBcbiAgbGV0IHJcbiAgd2hpbGUgKHIgIT09IGNobGVuICYmIHRoaXMubWF0Y2hlcyA8IHRoaXMubWF4TWF0Y2hlcykgeyByID0gdGhpcy5fc2JtaF9mZWVkKGNodW5rKSB9XG4gIHJldHVybiByXG59XG5cblNCTUgucHJvdG90eXBlLl9zYm1oX2ZlZWQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aFxuICBjb25zdCBuZWVkbGUgPSB0aGlzLl9uZWVkbGVcbiAgY29uc3QgbmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aFxuICBjb25zdCBsYXN0TmVlZGxlQ2hhciA9IG5lZWRsZVtuZWVkbGVMZW5ndGggLSAxXVxuXG4gIC8vIFBvc2l0aXZlOiBwb2ludHMgdG8gYSBwb3NpdGlvbiBpbiBgZGF0YWBcbiAgLy8gICAgICAgICAgIHBvcyA9PSAzIHBvaW50cyB0byBkYXRhWzNdXG4gIC8vIE5lZ2F0aXZlOiBwb2ludHMgdG8gYSBwb3NpdGlvbiBpbiB0aGUgbG9va2JlaGluZCBidWZmZXJcbiAgLy8gICAgICAgICAgIHBvcyA9PSAtMiBwb2ludHMgdG8gbG9va2JlaGluZFtsb29rYmVoaW5kX3NpemUgLSAyXVxuICBsZXQgcG9zID0gLXRoaXMuX2xvb2tiZWhpbmRfc2l6ZVxuICBsZXQgY2hcblxuICBpZiAocG9zIDwgMCkge1xuICAgIC8vIExvb2tiZWhpbmQgYnVmZmVyIGlzIG5vdCBlbXB0eS4gUGVyZm9ybSBCb3llci1Nb29yZS1Ib3JzcG9vbFxuICAgIC8vIHNlYXJjaCB3aXRoIGNoYXJhY3RlciBsb29rdXAgY29kZSB0aGF0IGNvbnNpZGVycyBib3RoIHRoZVxuICAgIC8vIGxvb2tiZWhpbmQgYnVmZmVyIGFuZCB0aGUgY3VycmVudCByb3VuZCdzIGhheXN0YWNrIGRhdGEuXG4gICAgLy9cbiAgICAvLyBMb29wIHVudGlsXG4gICAgLy8gICB0aGVyZSBpcyBhIG1hdGNoLlxuICAgIC8vIG9yIHVudGlsXG4gICAgLy8gICB3ZSd2ZSBtb3ZlZCBwYXN0IHRoZSBwb3NpdGlvbiB0aGF0IHJlcXVpcmVzIHRoZVxuICAgIC8vICAgbG9va2JlaGluZCBidWZmZXIuIEluIHRoaXMgY2FzZSB3ZSBzd2l0Y2ggdG8gdGhlXG4gICAgLy8gICBvcHRpbWl6ZWQgbG9vcC5cbiAgICAvLyBvciB1bnRpbFxuICAgIC8vICAgdGhlIGNoYXJhY3RlciB0byBsb29rIGF0IGxpZXMgb3V0c2lkZSB0aGUgaGF5c3RhY2suXG4gICAgd2hpbGUgKHBvcyA8IDAgJiYgcG9zIDw9IGxlbiAtIG5lZWRsZUxlbmd0aCkge1xuICAgICAgY2ggPSB0aGlzLl9zYm1oX2xvb2t1cF9jaGFyKGRhdGEsIHBvcyArIG5lZWRsZUxlbmd0aCAtIDEpXG5cbiAgICAgIGlmIChcbiAgICAgICAgY2ggPT09IGxhc3ROZWVkbGVDaGFyICYmXG4gICAgICAgIHRoaXMuX3NibWhfbWVtY21wKGRhdGEsIHBvcywgbmVlZGxlTGVuZ3RoIC0gMSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9sb29rYmVoaW5kX3NpemUgPSAwXG4gICAgICAgICsrdGhpcy5tYXRjaGVzXG4gICAgICAgIHRoaXMuZW1pdCgnaW5mbycsIHRydWUpXG5cbiAgICAgICAgcmV0dXJuICh0aGlzLl9idWZwb3MgPSBwb3MgKyBuZWVkbGVMZW5ndGgpXG4gICAgICB9XG4gICAgICBwb3MgKz0gdGhpcy5fb2NjW2NoXVxuICAgIH1cblxuICAgIC8vIE5vIG1hdGNoLlxuXG4gICAgaWYgKHBvcyA8IDApIHtcbiAgICAgIC8vIFRoZXJlJ3MgdG9vIGZldyBkYXRhIGZvciBCb3llci1Nb29yZS1Ib3JzcG9vbCB0byBydW4sXG4gICAgICAvLyBzbyBsZXQncyB1c2UgYSBkaWZmZXJlbnQgYWxnb3JpdGhtIHRvIHNraXAgYXMgbXVjaCBhc1xuICAgICAgLy8gd2UgY2FuLlxuICAgICAgLy8gRm9yd2FyZCBwb3MgdW50aWxcbiAgICAgIC8vICAgdGhlIHRyYWlsaW5nIHBhcnQgb2YgbG9va2JlaGluZCArIGRhdGFcbiAgICAgIC8vICAgbG9va3MgbGlrZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZWVkbGVcbiAgICAgIC8vIG9yIHVudGlsXG4gICAgICAvLyAgIHBvcyA9PSAwXG4gICAgICB3aGlsZSAocG9zIDwgMCAmJiAhdGhpcy5fc2JtaF9tZW1jbXAoZGF0YSwgcG9zLCBsZW4gLSBwb3MpKSB7ICsrcG9zIH1cbiAgICB9XG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIC8vIERpc2NhcmQgbG9va2JlaGluZCBidWZmZXIuXG4gICAgICB0aGlzLmVtaXQoJ2luZm8nLCBmYWxzZSwgdGhpcy5fbG9va2JlaGluZCwgMCwgdGhpcy5fbG9va2JlaGluZF9zaXplKVxuICAgICAgdGhpcy5fbG9va2JlaGluZF9zaXplID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDdXQgb2ZmIHBhcnQgb2YgdGhlIGxvb2tiZWhpbmQgYnVmZmVyIHRoYXQgaGFzXG4gICAgICAvLyBiZWVuIHByb2Nlc3NlZCBhbmQgYXBwZW5kIHRoZSBlbnRpcmUgaGF5c3RhY2tcbiAgICAgIC8vIGludG8gaXQuXG4gICAgICBjb25zdCBieXRlc1RvQ3V0T2ZmID0gdGhpcy5fbG9va2JlaGluZF9zaXplICsgcG9zXG4gICAgICBpZiAoYnl0ZXNUb0N1dE9mZiA+IDApIHtcbiAgICAgICAgLy8gVGhlIGN1dCBvZmYgZGF0YSBpcyBndWFyYW50ZWVkIG5vdCB0byBjb250YWluIHRoZSBuZWVkbGUuXG4gICAgICAgIHRoaXMuZW1pdCgnaW5mbycsIGZhbHNlLCB0aGlzLl9sb29rYmVoaW5kLCAwLCBieXRlc1RvQ3V0T2ZmKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb29rYmVoaW5kLmNvcHkodGhpcy5fbG9va2JlaGluZCwgMCwgYnl0ZXNUb0N1dE9mZixcbiAgICAgICAgdGhpcy5fbG9va2JlaGluZF9zaXplIC0gYnl0ZXNUb0N1dE9mZilcbiAgICAgIHRoaXMuX2xvb2tiZWhpbmRfc2l6ZSAtPSBieXRlc1RvQ3V0T2ZmXG5cbiAgICAgIGRhdGEuY29weSh0aGlzLl9sb29rYmVoaW5kLCB0aGlzLl9sb29rYmVoaW5kX3NpemUpXG4gICAgICB0aGlzLl9sb29rYmVoaW5kX3NpemUgKz0gbGVuXG5cbiAgICAgIHRoaXMuX2J1ZnBvcyA9IGxlblxuICAgICAgcmV0dXJuIGxlblxuICAgIH1cbiAgfVxuXG4gIHBvcyArPSAocG9zID49IDApICogdGhpcy5fYnVmcG9zXG5cbiAgLy8gTG9va2JlaGluZCBidWZmZXIgaXMgbm93IGVtcHR5LiBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgaWYgdGhlXG4gIC8vIG5lZWRsZSBpcyBpbiB0aGUgaGF5c3RhY2suXG4gIGlmIChkYXRhLmluZGV4T2YobmVlZGxlLCBwb3MpICE9PSAtMSkge1xuICAgIHBvcyA9IGRhdGEuaW5kZXhPZihuZWVkbGUsIHBvcylcbiAgICArK3RoaXMubWF0Y2hlc1xuICAgIGlmIChwb3MgPiAwKSB7IHRoaXMuZW1pdCgnaW5mbycsIHRydWUsIGRhdGEsIHRoaXMuX2J1ZnBvcywgcG9zKSB9IGVsc2UgeyB0aGlzLmVtaXQoJ2luZm8nLCB0cnVlKSB9XG5cbiAgICByZXR1cm4gKHRoaXMuX2J1ZnBvcyA9IHBvcyArIG5lZWRsZUxlbmd0aClcbiAgfSBlbHNlIHtcbiAgICBwb3MgPSBsZW4gLSBuZWVkbGVMZW5ndGhcbiAgfVxuXG4gIC8vIFRoZXJlIHdhcyBubyBtYXRjaC4gSWYgdGhlcmUncyB0cmFpbGluZyBoYXlzdGFjayBkYXRhIHRoYXQgd2UgY2Fubm90XG4gIC8vIG1hdGNoIHlldCB1c2luZyB0aGUgQm95ZXItTW9vcmUtSG9yc3Bvb2wgYWxnb3JpdGhtIChiZWNhdXNlIHRoZSB0cmFpbGluZ1xuICAvLyBkYXRhIGlzIGxlc3MgdGhhbiB0aGUgbmVlZGxlIHNpemUpIHRoZW4gbWF0Y2ggdXNpbmcgYSBtb2RpZmllZFxuICAvLyBhbGdvcml0aG0gdGhhdCBzdGFydHMgbWF0Y2hpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIGluc3RlYWQgb2YgdGhlIGVuZC5cbiAgLy8gV2hhdGV2ZXIgdHJhaWxpbmcgZGF0YSBpcyBsZWZ0IGFmdGVyIHJ1bm5pbmcgdGhpcyBhbGdvcml0aG0gaXMgYWRkZWQgdG9cbiAgLy8gdGhlIGxvb2tiZWhpbmQgYnVmZmVyLlxuICB3aGlsZSAoXG4gICAgcG9zIDwgbGVuICYmXG4gICAgKFxuICAgICAgZGF0YVtwb3NdICE9PSBuZWVkbGVbMF0gfHxcbiAgICAgIChcbiAgICAgICAgKEJ1ZmZlci5jb21wYXJlKFxuICAgICAgICAgIGRhdGEuc3ViYXJyYXkocG9zLCBwb3MgKyBsZW4gLSBwb3MpLFxuICAgICAgICAgIG5lZWRsZS5zdWJhcnJheSgwLCBsZW4gLSBwb3MpXG4gICAgICAgICkgIT09IDApXG4gICAgICApXG4gICAgKVxuICApIHtcbiAgICArK3Bvc1xuICB9XG4gIGlmIChwb3MgPCBsZW4pIHtcbiAgICBkYXRhLmNvcHkodGhpcy5fbG9va2JlaGluZCwgMCwgcG9zLCBwb3MgKyAobGVuIC0gcG9zKSlcbiAgICB0aGlzLl9sb29rYmVoaW5kX3NpemUgPSBsZW4gLSBwb3NcbiAgfVxuXG4gIC8vIEV2ZXJ5dGhpbmcgdW50aWwgcG9zIGlzIGd1YXJhbnRlZWQgbm90IHRvIGNvbnRhaW4gbmVlZGxlIGRhdGEuXG4gIGlmIChwb3MgPiAwKSB7IHRoaXMuZW1pdCgnaW5mbycsIGZhbHNlLCBkYXRhLCB0aGlzLl9idWZwb3MsIHBvcyA8IGxlbiA/IHBvcyA6IGxlbikgfVxuXG4gIHRoaXMuX2J1ZnBvcyA9IGxlblxuICByZXR1cm4gbGVuXG59XG5cblNCTUgucHJvdG90eXBlLl9zYm1oX2xvb2t1cF9jaGFyID0gZnVuY3Rpb24gKGRhdGEsIHBvcykge1xuICByZXR1cm4gKHBvcyA8IDApXG4gICAgPyB0aGlzLl9sb29rYmVoaW5kW3RoaXMuX2xvb2tiZWhpbmRfc2l6ZSArIHBvc11cbiAgICA6IGRhdGFbcG9zXVxufVxuXG5TQk1ILnByb3RvdHlwZS5fc2JtaF9tZW1jbXAgPSBmdW5jdGlvbiAoZGF0YSwgcG9zLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXZhclxuICAgIGlmICh0aGlzLl9zYm1oX2xvb2t1cF9jaGFyKGRhdGEsIHBvcyArIGkpICE9PSB0aGlzLl9uZWVkbGVbaV0pIHsgcmV0dXJuIGZhbHNlIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNCTUhcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdub2RlOnV0aWwnKS5pbmhlcml0c1xuY29uc3QgUmVhZGFibGVTdHJlYW0gPSByZXF1aXJlKCdub2RlOnN0cmVhbScpLlJlYWRhYmxlXG5cbmZ1bmN0aW9uIFBhcnRTdHJlYW0gKG9wdHMpIHtcbiAgUmVhZGFibGVTdHJlYW0uY2FsbCh0aGlzLCBvcHRzKVxufVxuaW5oZXJpdHMoUGFydFN0cmVhbSwgUmVhZGFibGVTdHJlYW0pXG5cblBhcnRTdHJlYW0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHt9XG5cbm1vZHVsZS5leHBvcnRzID0gUGFydFN0cmVhbVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldExpbWl0IChsaW1pdHMsIG5hbWUsIGRlZmF1bHRMaW1pdCkge1xuICBpZiAoXG4gICAgIWxpbWl0cyB8fFxuICAgIGxpbWl0c1tuYW1lXSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgbGltaXRzW25hbWVdID09PSBudWxsXG4gICkgeyByZXR1cm4gZGVmYXVsdExpbWl0IH1cblxuICBpZiAoXG4gICAgdHlwZW9mIGxpbWl0c1tuYW1lXSAhPT0gJ251bWJlcicgfHxcbiAgICBpc05hTihsaW1pdHNbbmFtZV0pXG4gICkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW1pdCAnICsgbmFtZSArICcgaXMgbm90IGEgdmFsaWQgbnVtYmVyJykgfVxuXG4gIHJldHVybiBsaW1pdHNbbmFtZV1cbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnbm9kZTpldmVudHMnKS5FdmVudEVtaXR0ZXJcbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnbm9kZTp1dGlsJykuaW5oZXJpdHNcbmNvbnN0IGdldExpbWl0ID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL3V0aWxzL2dldExpbWl0JylcblxuY29uc3QgU3RyZWFtU2VhcmNoID0gcmVxdWlyZSgnLi4vLi4vc3RyZWFtc2VhcmNoL3NibWgnKVxuXG5jb25zdCBCX0RDUkxGID0gQnVmZmVyLmZyb20oJ1xcclxcblxcclxcbicpXG5jb25zdCBSRV9DUkxGID0gL1xcclxcbi9nXG5jb25zdCBSRV9IRFIgPSAvXihbXjpdKyk6WyBcXHRdPyhbXFx4MDAtXFx4RkZdKyk/JC8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cbmZ1bmN0aW9uIEhlYWRlclBhcnNlciAoY2ZnKSB7XG4gIEV2ZW50RW1pdHRlci5jYWxsKHRoaXMpXG5cbiAgY2ZnID0gY2ZnIHx8IHt9XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHRoaXMubnJlYWQgPSAwXG4gIHRoaXMubWF4ZWQgPSBmYWxzZVxuICB0aGlzLm5wYWlycyA9IDBcbiAgdGhpcy5tYXhIZWFkZXJQYWlycyA9IGdldExpbWl0KGNmZywgJ21heEhlYWRlclBhaXJzJywgMjAwMClcbiAgdGhpcy5tYXhIZWFkZXJTaXplID0gZ2V0TGltaXQoY2ZnLCAnbWF4SGVhZGVyU2l6ZScsIDgwICogMTAyNClcbiAgdGhpcy5idWZmZXIgPSAnJ1xuICB0aGlzLmhlYWRlciA9IHt9XG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZVxuICB0aGlzLnNzID0gbmV3IFN0cmVhbVNlYXJjaChCX0RDUkxGKVxuICB0aGlzLnNzLm9uKCdpbmZvJywgZnVuY3Rpb24gKGlzTWF0Y2gsIGRhdGEsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoZGF0YSAmJiAhc2VsZi5tYXhlZCkge1xuICAgICAgaWYgKHNlbGYubnJlYWQgKyBlbmQgLSBzdGFydCA+PSBzZWxmLm1heEhlYWRlclNpemUpIHtcbiAgICAgICAgZW5kID0gc2VsZi5tYXhIZWFkZXJTaXplIC0gc2VsZi5ucmVhZCArIHN0YXJ0XG4gICAgICAgIHNlbGYubnJlYWQgPSBzZWxmLm1heEhlYWRlclNpemVcbiAgICAgICAgc2VsZi5tYXhlZCA9IHRydWVcbiAgICAgIH0gZWxzZSB7IHNlbGYubnJlYWQgKz0gKGVuZCAtIHN0YXJ0KSB9XG5cbiAgICAgIHNlbGYuYnVmZmVyICs9IGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHN0YXJ0LCBlbmQpXG4gICAgfVxuICAgIGlmIChpc01hdGNoKSB7IHNlbGYuX2ZpbmlzaCgpIH1cbiAgfSlcbn1cbmluaGVyaXRzKEhlYWRlclBhcnNlciwgRXZlbnRFbWl0dGVyKVxuXG5IZWFkZXJQYXJzZXIucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCByID0gdGhpcy5zcy5wdXNoKGRhdGEpXG4gIGlmICh0aGlzLmZpbmlzaGVkKSB7IHJldHVybiByIH1cbn1cblxuSGVhZGVyUGFyc2VyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlXG4gIHRoaXMuYnVmZmVyID0gJydcbiAgdGhpcy5oZWFkZXIgPSB7fVxuICB0aGlzLnNzLnJlc2V0KClcbn1cblxuSGVhZGVyUGFyc2VyLnByb3RvdHlwZS5fZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5idWZmZXIpIHsgdGhpcy5fcGFyc2VIZWFkZXIoKSB9XG4gIHRoaXMuc3MubWF0Y2hlcyA9IHRoaXMuc3MubWF4TWF0Y2hlc1xuICBjb25zdCBoZWFkZXIgPSB0aGlzLmhlYWRlclxuICB0aGlzLmhlYWRlciA9IHt9XG4gIHRoaXMuYnVmZmVyID0gJydcbiAgdGhpcy5maW5pc2hlZCA9IHRydWVcbiAgdGhpcy5ucmVhZCA9IHRoaXMubnBhaXJzID0gMFxuICB0aGlzLm1heGVkID0gZmFsc2VcbiAgdGhpcy5lbWl0KCdoZWFkZXInLCBoZWFkZXIpXG59XG5cbkhlYWRlclBhcnNlci5wcm90b3R5cGUuX3BhcnNlSGVhZGVyID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5ucGFpcnMgPT09IHRoaXMubWF4SGVhZGVyUGFpcnMpIHsgcmV0dXJuIH1cblxuICBjb25zdCBsaW5lcyA9IHRoaXMuYnVmZmVyLnNwbGl0KFJFX0NSTEYpXG4gIGNvbnN0IGxlbiA9IGxpbmVzLmxlbmd0aFxuICBsZXQgbSwgaFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby12YXJcbiAgICBpZiAobGluZXNbaV0ubGVuZ3RoID09PSAwKSB7IGNvbnRpbnVlIH1cbiAgICBpZiAobGluZXNbaV1bMF0gPT09ICdcXHQnIHx8IGxpbmVzW2ldWzBdID09PSAnICcpIHtcbiAgICAgIC8vIGZvbGRlZCBoZWFkZXIgY29udGVudFxuICAgICAgLy8gUkZDMjgyMiBzYXlzIHRvIGp1c3QgcmVtb3ZlIHRoZSBDUkxGIGFuZCBub3QgdGhlIHdoaXRlc3BhY2UgZm9sbG93aW5nXG4gICAgICAvLyBpdCwgc28gd2UgZm9sbG93IHRoZSBSRkMgYW5kIGluY2x1ZGUgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSAuLi5cbiAgICAgIGlmIChoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyW2hdW3RoaXMuaGVhZGVyW2hdLmxlbmd0aCAtIDFdICs9IGxpbmVzW2ldXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcG9zQ29sb24gPSBsaW5lc1tpXS5pbmRleE9mKCc6JylcbiAgICBpZiAoXG4gICAgICBwb3NDb2xvbiA9PT0gLTEgfHxcbiAgICAgIHBvc0NvbG9uID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgbSA9IFJFX0hEUi5leGVjKGxpbmVzW2ldKVxuICAgIGggPSBtWzFdLnRvTG93ZXJDYXNlKClcbiAgICB0aGlzLmhlYWRlcltoXSA9IHRoaXMuaGVhZGVyW2hdIHx8IFtdXG4gICAgdGhpcy5oZWFkZXJbaF0ucHVzaCgobVsyXSB8fCAnJykpXG4gICAgaWYgKCsrdGhpcy5ucGFpcnMgPT09IHRoaXMubWF4SGVhZGVyUGFpcnMpIHsgYnJlYWsgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGVhZGVyUGFyc2VyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IFdyaXRhYmxlU3RyZWFtID0gcmVxdWlyZSgnbm9kZTpzdHJlYW0nKS5Xcml0YWJsZVxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdub2RlOnV0aWwnKS5pbmhlcml0c1xuXG5jb25zdCBTdHJlYW1TZWFyY2ggPSByZXF1aXJlKCcuLi8uLi9zdHJlYW1zZWFyY2gvc2JtaCcpXG5cbmNvbnN0IFBhcnRTdHJlYW0gPSByZXF1aXJlKCcuL1BhcnRTdHJlYW0nKVxuY29uc3QgSGVhZGVyUGFyc2VyID0gcmVxdWlyZSgnLi9IZWFkZXJQYXJzZXInKVxuXG5jb25zdCBEQVNIID0gNDVcbmNvbnN0IEJfT05FREFTSCA9IEJ1ZmZlci5mcm9tKCctJylcbmNvbnN0IEJfQ1JMRiA9IEJ1ZmZlci5mcm9tKCdcXHJcXG4nKVxuY29uc3QgRU1QVFlfRk4gPSBmdW5jdGlvbiAoKSB7fVxuXG5mdW5jdGlvbiBEaWNlciAoY2ZnKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEaWNlcikpIHsgcmV0dXJuIG5ldyBEaWNlcihjZmcpIH1cbiAgV3JpdGFibGVTdHJlYW0uY2FsbCh0aGlzLCBjZmcpXG5cbiAgaWYgKCFjZmcgfHwgKCFjZmcuaGVhZGVyRmlyc3QgJiYgdHlwZW9mIGNmZy5ib3VuZGFyeSAhPT0gJ3N0cmluZycpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvdW5kYXJ5IHJlcXVpcmVkJykgfVxuXG4gIGlmICh0eXBlb2YgY2ZnLmJvdW5kYXJ5ID09PSAnc3RyaW5nJykgeyB0aGlzLnNldEJvdW5kYXJ5KGNmZy5ib3VuZGFyeSkgfSBlbHNlIHsgdGhpcy5fYnBhcnNlciA9IHVuZGVmaW5lZCB9XG5cbiAgdGhpcy5faGVhZGVyRmlyc3QgPSBjZmcuaGVhZGVyRmlyc3RcblxuICB0aGlzLl9kYXNoZXMgPSAwXG4gIHRoaXMuX3BhcnRzID0gMFxuICB0aGlzLl9maW5pc2hlZCA9IGZhbHNlXG4gIHRoaXMuX3JlYWxGaW5pc2ggPSBmYWxzZVxuICB0aGlzLl9pc1ByZWFtYmxlID0gdHJ1ZVxuICB0aGlzLl9qdXN0TWF0Y2hlZCA9IGZhbHNlXG4gIHRoaXMuX2ZpcnN0V3JpdGUgPSB0cnVlXG4gIHRoaXMuX2luSGVhZGVyID0gdHJ1ZVxuICB0aGlzLl9wYXJ0ID0gdW5kZWZpbmVkXG4gIHRoaXMuX2NiID0gdW5kZWZpbmVkXG4gIHRoaXMuX2lnbm9yZURhdGEgPSBmYWxzZVxuICB0aGlzLl9wYXJ0T3B0cyA9IHsgaGlnaFdhdGVyTWFyazogY2ZnLnBhcnRId20gfVxuICB0aGlzLl9wYXVzZSA9IGZhbHNlXG5cbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgdGhpcy5faHBhcnNlciA9IG5ldyBIZWFkZXJQYXJzZXIoY2ZnKVxuICB0aGlzLl9ocGFyc2VyLm9uKCdoZWFkZXInLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4gICAgc2VsZi5faW5IZWFkZXIgPSBmYWxzZVxuICAgIHNlbGYuX3BhcnQuZW1pdCgnaGVhZGVyJywgaGVhZGVyKVxuICB9KVxufVxuaW5oZXJpdHMoRGljZXIsIFdyaXRhYmxlU3RyZWFtKVxuXG5EaWNlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIChldikge1xuICBpZiAoZXYgPT09ICdmaW5pc2gnICYmICF0aGlzLl9yZWFsRmluaXNoKSB7XG4gICAgaWYgKCF0aGlzLl9maW5pc2hlZCkge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVuZCBvZiBtdWx0aXBhcnQgZGF0YScpKVxuICAgICAgICBpZiAoc2VsZi5fcGFydCAmJiAhc2VsZi5faWdub3JlRGF0YSkge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSAoc2VsZi5faXNQcmVhbWJsZSA/ICdQcmVhbWJsZScgOiAnUGFydCcpXG4gICAgICAgICAgc2VsZi5fcGFydC5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcih0eXBlICsgJyB0ZXJtaW5hdGVkIGVhcmx5IGR1ZSB0byB1bmV4cGVjdGVkIGVuZCBvZiBtdWx0aXBhcnQgZGF0YScpKVxuICAgICAgICAgIHNlbGYuX3BhcnQucHVzaChudWxsKVxuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IHRydWVcbiAgICAgICAgICAgIHNlbGYuZW1pdCgnZmluaXNoJylcbiAgICAgICAgICAgIHNlbGYuX3JlYWxGaW5pc2ggPSBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IHRydWVcbiAgICAgICAgc2VsZi5lbWl0KCdmaW5pc2gnKVxuICAgICAgICBzZWxmLl9yZWFsRmluaXNoID0gZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuICB9IGVsc2UgeyBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuZW1pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIH1cbn1cblxuRGljZXIucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2IpIHtcbiAgLy8gaWdub3JlIHVuZXhwZWN0ZWQgZGF0YSAoZS5nLiBleHRyYSB0cmFpbGVyIGRhdGEgYWZ0ZXIgZmluaXNoZWQpXG4gIGlmICghdGhpcy5faHBhcnNlciAmJiAhdGhpcy5fYnBhcnNlcikgeyByZXR1cm4gY2IoKSB9XG5cbiAgaWYgKHRoaXMuX2hlYWRlckZpcnN0ICYmIHRoaXMuX2lzUHJlYW1ibGUpIHtcbiAgICBpZiAoIXRoaXMuX3BhcnQpIHtcbiAgICAgIHRoaXMuX3BhcnQgPSBuZXcgUGFydFN0cmVhbSh0aGlzLl9wYXJ0T3B0cylcbiAgICAgIGlmICh0aGlzLmxpc3RlbmVyQ291bnQoJ3ByZWFtYmxlJykgIT09IDApIHsgdGhpcy5lbWl0KCdwcmVhbWJsZScsIHRoaXMuX3BhcnQpIH0gZWxzZSB7IHRoaXMuX2lnbm9yZSgpIH1cbiAgICB9XG4gICAgY29uc3QgciA9IHRoaXMuX2hwYXJzZXIucHVzaChkYXRhKVxuICAgIGlmICghdGhpcy5faW5IZWFkZXIgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIgPCBkYXRhLmxlbmd0aCkgeyBkYXRhID0gZGF0YS5zbGljZShyKSB9IGVsc2UgeyByZXR1cm4gY2IoKSB9XG4gIH1cblxuICAvLyBhbGxvd3MgZm9yIFwiZWFzaWVyXCIgdGVzdGluZ1xuICBpZiAodGhpcy5fZmlyc3RXcml0ZSkge1xuICAgIHRoaXMuX2JwYXJzZXIucHVzaChCX0NSTEYpXG4gICAgdGhpcy5fZmlyc3RXcml0ZSA9IGZhbHNlXG4gIH1cblxuICB0aGlzLl9icGFyc2VyLnB1c2goZGF0YSlcblxuICBpZiAodGhpcy5fcGF1c2UpIHsgdGhpcy5fY2IgPSBjYiB9IGVsc2UgeyBjYigpIH1cbn1cblxuRGljZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9wYXJ0ID0gdW5kZWZpbmVkXG4gIHRoaXMuX2JwYXJzZXIgPSB1bmRlZmluZWRcbiAgdGhpcy5faHBhcnNlciA9IHVuZGVmaW5lZFxufVxuXG5EaWNlci5wcm90b3R5cGUuc2V0Qm91bmRhcnkgPSBmdW5jdGlvbiAoYm91bmRhcnkpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgdGhpcy5fYnBhcnNlciA9IG5ldyBTdHJlYW1TZWFyY2goJ1xcclxcbi0tJyArIGJvdW5kYXJ5KVxuICB0aGlzLl9icGFyc2VyLm9uKCdpbmZvJywgZnVuY3Rpb24gKGlzTWF0Y2gsIGRhdGEsIHN0YXJ0LCBlbmQpIHtcbiAgICBzZWxmLl9vbmluZm8oaXNNYXRjaCwgZGF0YSwgc3RhcnQsIGVuZClcbiAgfSlcbn1cblxuRGljZXIucHJvdG90eXBlLl9pZ25vcmUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9wYXJ0ICYmICF0aGlzLl9pZ25vcmVEYXRhKSB7XG4gICAgdGhpcy5faWdub3JlRGF0YSA9IHRydWVcbiAgICB0aGlzLl9wYXJ0Lm9uKCdlcnJvcicsIEVNUFRZX0ZOKVxuICAgIC8vIHdlIG11c3QgcGVyZm9ybSBzb21lIGtpbmQgb2YgcmVhZCBvbiB0aGUgc3RyZWFtIGV2ZW4gdGhvdWdoIHdlIGFyZVxuICAgIC8vIGlnbm9yaW5nIHRoZSBkYXRhLCBvdGhlcndpc2Ugbm9kZSdzIFJlYWRhYmxlIHN0cmVhbSB3aWxsIG5vdCBlbWl0ICdlbmQnXG4gICAgLy8gYWZ0ZXIgcHVzaGluZyBudWxsIHRvIHRoZSBzdHJlYW1cbiAgICB0aGlzLl9wYXJ0LnJlc3VtZSgpXG4gIH1cbn1cblxuRGljZXIucHJvdG90eXBlLl9vbmluZm8gPSBmdW5jdGlvbiAoaXNNYXRjaCwgZGF0YSwgc3RhcnQsIGVuZCkge1xuICBsZXQgYnVmOyBjb25zdCBzZWxmID0gdGhpczsgbGV0IGkgPSAwOyBsZXQgcjsgbGV0IHNob3VsZFdyaXRlTW9yZSA9IHRydWVcblxuICBpZiAoIXRoaXMuX3BhcnQgJiYgdGhpcy5fanVzdE1hdGNoZWQgJiYgZGF0YSkge1xuICAgIHdoaWxlICh0aGlzLl9kYXNoZXMgPCAyICYmIChzdGFydCArIGkpIDwgZW5kKSB7XG4gICAgICBpZiAoZGF0YVtzdGFydCArIGldID09PSBEQVNIKSB7XG4gICAgICAgICsraVxuICAgICAgICArK3RoaXMuX2Rhc2hlc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2Rhc2hlcykgeyBidWYgPSBCX09ORURBU0ggfVxuICAgICAgICB0aGlzLl9kYXNoZXMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9kYXNoZXMgPT09IDIpIHtcbiAgICAgIGlmICgoc3RhcnQgKyBpKSA8IGVuZCAmJiB0aGlzLmxpc3RlbmVyQ291bnQoJ3RyYWlsZXInKSAhPT0gMCkgeyB0aGlzLmVtaXQoJ3RyYWlsZXInLCBkYXRhLnNsaWNlKHN0YXJ0ICsgaSwgZW5kKSkgfVxuICAgICAgdGhpcy5yZXNldCgpXG4gICAgICB0aGlzLl9maW5pc2hlZCA9IHRydWVcbiAgICAgIC8vIG5vIG1vcmUgcGFydHMgd2lsbCBiZSBhZGRlZFxuICAgICAgaWYgKHNlbGYuX3BhcnRzID09PSAwKSB7XG4gICAgICAgIHNlbGYuX3JlYWxGaW5pc2ggPSB0cnVlXG4gICAgICAgIHNlbGYuZW1pdCgnZmluaXNoJylcbiAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9kYXNoZXMpIHsgcmV0dXJuIH1cbiAgfVxuICBpZiAodGhpcy5fanVzdE1hdGNoZWQpIHsgdGhpcy5fanVzdE1hdGNoZWQgPSBmYWxzZSB9XG4gIGlmICghdGhpcy5fcGFydCkge1xuICAgIHRoaXMuX3BhcnQgPSBuZXcgUGFydFN0cmVhbSh0aGlzLl9wYXJ0T3B0cylcbiAgICB0aGlzLl9wYXJ0Ll9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgIHNlbGYuX3VucGF1c2UoKVxuICAgIH1cbiAgICBpZiAodGhpcy5faXNQcmVhbWJsZSAmJiB0aGlzLmxpc3RlbmVyQ291bnQoJ3ByZWFtYmxlJykgIT09IDApIHtcbiAgICAgIHRoaXMuZW1pdCgncHJlYW1ibGUnLCB0aGlzLl9wYXJ0KVxuICAgIH0gZWxzZSBpZiAodGhpcy5faXNQcmVhbWJsZSAhPT0gdHJ1ZSAmJiB0aGlzLmxpc3RlbmVyQ291bnQoJ3BhcnQnKSAhPT0gMCkge1xuICAgICAgdGhpcy5lbWl0KCdwYXJ0JywgdGhpcy5fcGFydClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faWdub3JlKClcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9pc1ByZWFtYmxlKSB7IHRoaXMuX2luSGVhZGVyID0gdHJ1ZSB9XG4gIH1cbiAgaWYgKGRhdGEgJiYgc3RhcnQgPCBlbmQgJiYgIXRoaXMuX2lnbm9yZURhdGEpIHtcbiAgICBpZiAodGhpcy5faXNQcmVhbWJsZSB8fCAhdGhpcy5faW5IZWFkZXIpIHtcbiAgICAgIGlmIChidWYpIHsgc2hvdWxkV3JpdGVNb3JlID0gdGhpcy5fcGFydC5wdXNoKGJ1ZikgfVxuICAgICAgc2hvdWxkV3JpdGVNb3JlID0gdGhpcy5fcGFydC5wdXNoKGRhdGEuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gICAgICBpZiAoIXNob3VsZFdyaXRlTW9yZSkgeyB0aGlzLl9wYXVzZSA9IHRydWUgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzUHJlYW1ibGUgJiYgdGhpcy5faW5IZWFkZXIpIHtcbiAgICAgIGlmIChidWYpIHsgdGhpcy5faHBhcnNlci5wdXNoKGJ1ZikgfVxuICAgICAgciA9IHRoaXMuX2hwYXJzZXIucHVzaChkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICAgICAgaWYgKCF0aGlzLl9pbkhlYWRlciAmJiByICE9PSB1bmRlZmluZWQgJiYgciA8IGVuZCkgeyB0aGlzLl9vbmluZm8oZmFsc2UsIGRhdGEsIHN0YXJ0ICsgciwgZW5kKSB9XG4gICAgfVxuICB9XG4gIGlmIChpc01hdGNoKSB7XG4gICAgdGhpcy5faHBhcnNlci5yZXNldCgpXG4gICAgaWYgKHRoaXMuX2lzUHJlYW1ibGUpIHsgdGhpcy5faXNQcmVhbWJsZSA9IGZhbHNlIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhcnQgIT09IGVuZCkge1xuICAgICAgICArK3RoaXMuX3BhcnRzXG4gICAgICAgIHRoaXMuX3BhcnQub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoLS1zZWxmLl9wYXJ0cyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuX2ZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgIHNlbGYuX3JlYWxGaW5pc2ggPSB0cnVlXG4gICAgICAgICAgICAgIHNlbGYuZW1pdCgnZmluaXNoJylcbiAgICAgICAgICAgICAgc2VsZi5fcmVhbEZpbmlzaCA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZWxmLl91bnBhdXNlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3BhcnQucHVzaChudWxsKVxuICAgIHRoaXMuX3BhcnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLl9pZ25vcmVEYXRhID0gZmFsc2VcbiAgICB0aGlzLl9qdXN0TWF0Y2hlZCA9IHRydWVcbiAgICB0aGlzLl9kYXNoZXMgPSAwXG4gIH1cbn1cblxuRGljZXIucHJvdG90eXBlLl91bnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3BhdXNlKSB7IHJldHVybiB9XG5cbiAgdGhpcy5fcGF1c2UgPSBmYWxzZVxuICBpZiAodGhpcy5fY2IpIHtcbiAgICBjb25zdCBjYiA9IHRoaXMuX2NiXG4gICAgdGhpcy5fY2IgPSB1bmRlZmluZWRcbiAgICBjYigpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEaWNlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBOb2RlIGhhcyBhbHdheXMgdXRmLThcbmNvbnN0IHV0ZjhEZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpXG5jb25zdCB0ZXh0RGVjb2RlcnMgPSBuZXcgTWFwKFtcbiAgWyd1dGYtOCcsIHV0ZjhEZWNvZGVyXSxcbiAgWyd1dGY4JywgdXRmOERlY29kZXJdXG5dKVxuXG5mdW5jdGlvbiBnZXREZWNvZGVyIChjaGFyc2V0KSB7XG4gIGxldCBsY1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoY2hhcnNldCkge1xuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICAgIHJldHVybiBkZWNvZGVycy51dGY4XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYXNjaWknOiAvLyBUT0RPOiBNYWtlIHRoZXNlIGEgc2VwYXJhdGUsIHN0cmljdCBkZWNvZGVyP1xuICAgICAgY2FzZSAndXMtYXNjaWknOlxuICAgICAgY2FzZSAnaXNvLTg4NTktMSc6XG4gICAgICBjYXNlICdpc284ODU5LTEnOlxuICAgICAgY2FzZSAnaXNvODg1OTEnOlxuICAgICAgY2FzZSAnaXNvXzg4NTktMSc6XG4gICAgICBjYXNlICd3aW5kb3dzLTEyNTInOlxuICAgICAgY2FzZSAnaXNvXzg4NTktMToxOTg3JzpcbiAgICAgIGNhc2UgJ2NwMTI1Mic6XG4gICAgICBjYXNlICd4LWNwMTI1Mic6XG4gICAgICAgIHJldHVybiBkZWNvZGVycy5sYXRpbjFcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICAgIHJldHVybiBkZWNvZGVycy51dGYxNmxlXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gZGVjb2RlcnMuYmFzZTY0XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobGMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxjID0gdHJ1ZVxuICAgICAgICAgIGNoYXJzZXQgPSBjaGFyc2V0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvZGVycy5vdGhlci5iaW5kKGNoYXJzZXQpXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGRlY29kZXJzID0ge1xuICB1dGY4OiAoZGF0YSwgc291cmNlRW5jb2RpbmcpID0+IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgc291cmNlRW5jb2RpbmcpXG4gICAgfVxuICAgIHJldHVybiBkYXRhLnV0ZjhTbGljZSgwLCBkYXRhLmxlbmd0aClcbiAgfSxcblxuICBsYXRpbjE6IChkYXRhLCBzb3VyY2VFbmNvZGluZykgPT4ge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuICAgIHJldHVybiBkYXRhLmxhdGluMVNsaWNlKDAsIGRhdGEubGVuZ3RoKVxuICB9LFxuXG4gIHV0ZjE2bGU6IChkYXRhLCBzb3VyY2VFbmNvZGluZykgPT4ge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBzb3VyY2VFbmNvZGluZylcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEudWNzMlNsaWNlKDAsIGRhdGEubGVuZ3RoKVxuICB9LFxuXG4gIGJhc2U2NDogKGRhdGEsIHNvdXJjZUVuY29kaW5nKSA9PiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIHNvdXJjZUVuY29kaW5nKVxuICAgIH1cbiAgICByZXR1cm4gZGF0YS5iYXNlNjRTbGljZSgwLCBkYXRhLmxlbmd0aClcbiAgfSxcblxuICBvdGhlcjogKGRhdGEsIHNvdXJjZUVuY29kaW5nKSA9PiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIHNvdXJjZUVuY29kaW5nKVxuICAgIH1cblxuICAgIGlmICh0ZXh0RGVjb2RlcnMuaGFzKHRoaXMudG9TdHJpbmcoKSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0ZXh0RGVjb2RlcnMuZ2V0KHRoaXMpLmRlY29kZShkYXRhKVxuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnXG4gICAgICA/IGRhdGFcbiAgICAgIDogZGF0YS50b1N0cmluZygpXG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjb2RlVGV4dCAodGV4dCwgc291cmNlRW5jb2RpbmcsIGRlc3RFbmNvZGluZykge1xuICBpZiAodGV4dCkge1xuICAgIHJldHVybiBnZXREZWNvZGVyKGRlc3RFbmNvZGluZykodGV4dCwgc291cmNlRW5jb2RpbmcpXG4gIH1cbiAgcmV0dXJuIHRleHRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWNvZGVUZXh0XG4iLCAiLyogZXNsaW50LWRpc2FibGUgb2JqZWN0LXByb3BlcnR5LW5ld2xpbmUgKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBkZWNvZGVUZXh0ID0gcmVxdWlyZSgnLi9kZWNvZGVUZXh0JylcblxuY29uc3QgUkVfRU5DT0RFRCA9IC8lW2EtZkEtRjAtOV1bYS1mQS1GMC05XS9nXG5cbmNvbnN0IEVuY29kZWRMb29rdXAgPSB7XG4gICclMDAnOiAnXFx4MDAnLCAnJTAxJzogJ1xceDAxJywgJyUwMic6ICdcXHgwMicsICclMDMnOiAnXFx4MDMnLCAnJTA0JzogJ1xceDA0JyxcbiAgJyUwNSc6ICdcXHgwNScsICclMDYnOiAnXFx4MDYnLCAnJTA3JzogJ1xceDA3JywgJyUwOCc6ICdcXHgwOCcsICclMDknOiAnXFx4MDknLFxuICAnJTBhJzogJ1xceDBhJywgJyUwQSc6ICdcXHgwYScsICclMGInOiAnXFx4MGInLCAnJTBCJzogJ1xceDBiJywgJyUwYyc6ICdcXHgwYycsXG4gICclMEMnOiAnXFx4MGMnLCAnJTBkJzogJ1xceDBkJywgJyUwRCc6ICdcXHgwZCcsICclMGUnOiAnXFx4MGUnLCAnJTBFJzogJ1xceDBlJyxcbiAgJyUwZic6ICdcXHgwZicsICclMEYnOiAnXFx4MGYnLCAnJTEwJzogJ1xceDEwJywgJyUxMSc6ICdcXHgxMScsICclMTInOiAnXFx4MTInLFxuICAnJTEzJzogJ1xceDEzJywgJyUxNCc6ICdcXHgxNCcsICclMTUnOiAnXFx4MTUnLCAnJTE2JzogJ1xceDE2JywgJyUxNyc6ICdcXHgxNycsXG4gICclMTgnOiAnXFx4MTgnLCAnJTE5JzogJ1xceDE5JywgJyUxYSc6ICdcXHgxYScsICclMUEnOiAnXFx4MWEnLCAnJTFiJzogJ1xceDFiJyxcbiAgJyUxQic6ICdcXHgxYicsICclMWMnOiAnXFx4MWMnLCAnJTFDJzogJ1xceDFjJywgJyUxZCc6ICdcXHgxZCcsICclMUQnOiAnXFx4MWQnLFxuICAnJTFlJzogJ1xceDFlJywgJyUxRSc6ICdcXHgxZScsICclMWYnOiAnXFx4MWYnLCAnJTFGJzogJ1xceDFmJywgJyUyMCc6ICdcXHgyMCcsXG4gICclMjEnOiAnXFx4MjEnLCAnJTIyJzogJ1xceDIyJywgJyUyMyc6ICdcXHgyMycsICclMjQnOiAnXFx4MjQnLCAnJTI1JzogJ1xceDI1JyxcbiAgJyUyNic6ICdcXHgyNicsICclMjcnOiAnXFx4MjcnLCAnJTI4JzogJ1xceDI4JywgJyUyOSc6ICdcXHgyOScsICclMmEnOiAnXFx4MmEnLFxuICAnJTJBJzogJ1xceDJhJywgJyUyYic6ICdcXHgyYicsICclMkInOiAnXFx4MmInLCAnJTJjJzogJ1xceDJjJywgJyUyQyc6ICdcXHgyYycsXG4gICclMmQnOiAnXFx4MmQnLCAnJTJEJzogJ1xceDJkJywgJyUyZSc6ICdcXHgyZScsICclMkUnOiAnXFx4MmUnLCAnJTJmJzogJ1xceDJmJyxcbiAgJyUyRic6ICdcXHgyZicsICclMzAnOiAnXFx4MzAnLCAnJTMxJzogJ1xceDMxJywgJyUzMic6ICdcXHgzMicsICclMzMnOiAnXFx4MzMnLFxuICAnJTM0JzogJ1xceDM0JywgJyUzNSc6ICdcXHgzNScsICclMzYnOiAnXFx4MzYnLCAnJTM3JzogJ1xceDM3JywgJyUzOCc6ICdcXHgzOCcsXG4gICclMzknOiAnXFx4MzknLCAnJTNhJzogJ1xceDNhJywgJyUzQSc6ICdcXHgzYScsICclM2InOiAnXFx4M2InLCAnJTNCJzogJ1xceDNiJyxcbiAgJyUzYyc6ICdcXHgzYycsICclM0MnOiAnXFx4M2MnLCAnJTNkJzogJ1xceDNkJywgJyUzRCc6ICdcXHgzZCcsICclM2UnOiAnXFx4M2UnLFxuICAnJTNFJzogJ1xceDNlJywgJyUzZic6ICdcXHgzZicsICclM0YnOiAnXFx4M2YnLCAnJTQwJzogJ1xceDQwJywgJyU0MSc6ICdcXHg0MScsXG4gICclNDInOiAnXFx4NDInLCAnJTQzJzogJ1xceDQzJywgJyU0NCc6ICdcXHg0NCcsICclNDUnOiAnXFx4NDUnLCAnJTQ2JzogJ1xceDQ2JyxcbiAgJyU0Nyc6ICdcXHg0NycsICclNDgnOiAnXFx4NDgnLCAnJTQ5JzogJ1xceDQ5JywgJyU0YSc6ICdcXHg0YScsICclNEEnOiAnXFx4NGEnLFxuICAnJTRiJzogJ1xceDRiJywgJyU0Qic6ICdcXHg0YicsICclNGMnOiAnXFx4NGMnLCAnJTRDJzogJ1xceDRjJywgJyU0ZCc6ICdcXHg0ZCcsXG4gICclNEQnOiAnXFx4NGQnLCAnJTRlJzogJ1xceDRlJywgJyU0RSc6ICdcXHg0ZScsICclNGYnOiAnXFx4NGYnLCAnJTRGJzogJ1xceDRmJyxcbiAgJyU1MCc6ICdcXHg1MCcsICclNTEnOiAnXFx4NTEnLCAnJTUyJzogJ1xceDUyJywgJyU1Myc6ICdcXHg1MycsICclNTQnOiAnXFx4NTQnLFxuICAnJTU1JzogJ1xceDU1JywgJyU1Nic6ICdcXHg1NicsICclNTcnOiAnXFx4NTcnLCAnJTU4JzogJ1xceDU4JywgJyU1OSc6ICdcXHg1OScsXG4gICclNWEnOiAnXFx4NWEnLCAnJTVBJzogJ1xceDVhJywgJyU1Yic6ICdcXHg1YicsICclNUInOiAnXFx4NWInLCAnJTVjJzogJ1xceDVjJyxcbiAgJyU1Qyc6ICdcXHg1YycsICclNWQnOiAnXFx4NWQnLCAnJTVEJzogJ1xceDVkJywgJyU1ZSc6ICdcXHg1ZScsICclNUUnOiAnXFx4NWUnLFxuICAnJTVmJzogJ1xceDVmJywgJyU1Ric6ICdcXHg1ZicsICclNjAnOiAnXFx4NjAnLCAnJTYxJzogJ1xceDYxJywgJyU2Mic6ICdcXHg2MicsXG4gICclNjMnOiAnXFx4NjMnLCAnJTY0JzogJ1xceDY0JywgJyU2NSc6ICdcXHg2NScsICclNjYnOiAnXFx4NjYnLCAnJTY3JzogJ1xceDY3JyxcbiAgJyU2OCc6ICdcXHg2OCcsICclNjknOiAnXFx4NjknLCAnJTZhJzogJ1xceDZhJywgJyU2QSc6ICdcXHg2YScsICclNmInOiAnXFx4NmInLFxuICAnJTZCJzogJ1xceDZiJywgJyU2Yyc6ICdcXHg2YycsICclNkMnOiAnXFx4NmMnLCAnJTZkJzogJ1xceDZkJywgJyU2RCc6ICdcXHg2ZCcsXG4gICclNmUnOiAnXFx4NmUnLCAnJTZFJzogJ1xceDZlJywgJyU2Zic6ICdcXHg2ZicsICclNkYnOiAnXFx4NmYnLCAnJTcwJzogJ1xceDcwJyxcbiAgJyU3MSc6ICdcXHg3MScsICclNzInOiAnXFx4NzInLCAnJTczJzogJ1xceDczJywgJyU3NCc6ICdcXHg3NCcsICclNzUnOiAnXFx4NzUnLFxuICAnJTc2JzogJ1xceDc2JywgJyU3Nyc6ICdcXHg3NycsICclNzgnOiAnXFx4NzgnLCAnJTc5JzogJ1xceDc5JywgJyU3YSc6ICdcXHg3YScsXG4gICclN0EnOiAnXFx4N2EnLCAnJTdiJzogJ1xceDdiJywgJyU3Qic6ICdcXHg3YicsICclN2MnOiAnXFx4N2MnLCAnJTdDJzogJ1xceDdjJyxcbiAgJyU3ZCc6ICdcXHg3ZCcsICclN0QnOiAnXFx4N2QnLCAnJTdlJzogJ1xceDdlJywgJyU3RSc6ICdcXHg3ZScsICclN2YnOiAnXFx4N2YnLFxuICAnJTdGJzogJ1xceDdmJywgJyU4MCc6ICdcXHg4MCcsICclODEnOiAnXFx4ODEnLCAnJTgyJzogJ1xceDgyJywgJyU4Myc6ICdcXHg4MycsXG4gICclODQnOiAnXFx4ODQnLCAnJTg1JzogJ1xceDg1JywgJyU4Nic6ICdcXHg4NicsICclODcnOiAnXFx4ODcnLCAnJTg4JzogJ1xceDg4JyxcbiAgJyU4OSc6ICdcXHg4OScsICclOGEnOiAnXFx4OGEnLCAnJThBJzogJ1xceDhhJywgJyU4Yic6ICdcXHg4YicsICclOEInOiAnXFx4OGInLFxuICAnJThjJzogJ1xceDhjJywgJyU4Qyc6ICdcXHg4YycsICclOGQnOiAnXFx4OGQnLCAnJThEJzogJ1xceDhkJywgJyU4ZSc6ICdcXHg4ZScsXG4gICclOEUnOiAnXFx4OGUnLCAnJThmJzogJ1xceDhmJywgJyU4Ric6ICdcXHg4ZicsICclOTAnOiAnXFx4OTAnLCAnJTkxJzogJ1xceDkxJyxcbiAgJyU5Mic6ICdcXHg5MicsICclOTMnOiAnXFx4OTMnLCAnJTk0JzogJ1xceDk0JywgJyU5NSc6ICdcXHg5NScsICclOTYnOiAnXFx4OTYnLFxuICAnJTk3JzogJ1xceDk3JywgJyU5OCc6ICdcXHg5OCcsICclOTknOiAnXFx4OTknLCAnJTlhJzogJ1xceDlhJywgJyU5QSc6ICdcXHg5YScsXG4gICclOWInOiAnXFx4OWInLCAnJTlCJzogJ1xceDliJywgJyU5Yyc6ICdcXHg5YycsICclOUMnOiAnXFx4OWMnLCAnJTlkJzogJ1xceDlkJyxcbiAgJyU5RCc6ICdcXHg5ZCcsICclOWUnOiAnXFx4OWUnLCAnJTlFJzogJ1xceDllJywgJyU5Zic6ICdcXHg5ZicsICclOUYnOiAnXFx4OWYnLFxuICAnJWEwJzogJ1xceGEwJywgJyVBMCc6ICdcXHhhMCcsICclYTEnOiAnXFx4YTEnLCAnJUExJzogJ1xceGExJywgJyVhMic6ICdcXHhhMicsXG4gICclQTInOiAnXFx4YTInLCAnJWEzJzogJ1xceGEzJywgJyVBMyc6ICdcXHhhMycsICclYTQnOiAnXFx4YTQnLCAnJUE0JzogJ1xceGE0JyxcbiAgJyVhNSc6ICdcXHhhNScsICclQTUnOiAnXFx4YTUnLCAnJWE2JzogJ1xceGE2JywgJyVBNic6ICdcXHhhNicsICclYTcnOiAnXFx4YTcnLFxuICAnJUE3JzogJ1xceGE3JywgJyVhOCc6ICdcXHhhOCcsICclQTgnOiAnXFx4YTgnLCAnJWE5JzogJ1xceGE5JywgJyVBOSc6ICdcXHhhOScsXG4gICclYWEnOiAnXFx4YWEnLCAnJUFhJzogJ1xceGFhJywgJyVhQSc6ICdcXHhhYScsICclQUEnOiAnXFx4YWEnLCAnJWFiJzogJ1xceGFiJyxcbiAgJyVBYic6ICdcXHhhYicsICclYUInOiAnXFx4YWInLCAnJUFCJzogJ1xceGFiJywgJyVhYyc6ICdcXHhhYycsICclQWMnOiAnXFx4YWMnLFxuICAnJWFDJzogJ1xceGFjJywgJyVBQyc6ICdcXHhhYycsICclYWQnOiAnXFx4YWQnLCAnJUFkJzogJ1xceGFkJywgJyVhRCc6ICdcXHhhZCcsXG4gICclQUQnOiAnXFx4YWQnLCAnJWFlJzogJ1xceGFlJywgJyVBZSc6ICdcXHhhZScsICclYUUnOiAnXFx4YWUnLCAnJUFFJzogJ1xceGFlJyxcbiAgJyVhZic6ICdcXHhhZicsICclQWYnOiAnXFx4YWYnLCAnJWFGJzogJ1xceGFmJywgJyVBRic6ICdcXHhhZicsICclYjAnOiAnXFx4YjAnLFxuICAnJUIwJzogJ1xceGIwJywgJyViMSc6ICdcXHhiMScsICclQjEnOiAnXFx4YjEnLCAnJWIyJzogJ1xceGIyJywgJyVCMic6ICdcXHhiMicsXG4gICclYjMnOiAnXFx4YjMnLCAnJUIzJzogJ1xceGIzJywgJyViNCc6ICdcXHhiNCcsICclQjQnOiAnXFx4YjQnLCAnJWI1JzogJ1xceGI1JyxcbiAgJyVCNSc6ICdcXHhiNScsICclYjYnOiAnXFx4YjYnLCAnJUI2JzogJ1xceGI2JywgJyViNyc6ICdcXHhiNycsICclQjcnOiAnXFx4YjcnLFxuICAnJWI4JzogJ1xceGI4JywgJyVCOCc6ICdcXHhiOCcsICclYjknOiAnXFx4YjknLCAnJUI5JzogJ1xceGI5JywgJyViYSc6ICdcXHhiYScsXG4gICclQmEnOiAnXFx4YmEnLCAnJWJBJzogJ1xceGJhJywgJyVCQSc6ICdcXHhiYScsICclYmInOiAnXFx4YmInLCAnJUJiJzogJ1xceGJiJyxcbiAgJyViQic6ICdcXHhiYicsICclQkInOiAnXFx4YmInLCAnJWJjJzogJ1xceGJjJywgJyVCYyc6ICdcXHhiYycsICclYkMnOiAnXFx4YmMnLFxuICAnJUJDJzogJ1xceGJjJywgJyViZCc6ICdcXHhiZCcsICclQmQnOiAnXFx4YmQnLCAnJWJEJzogJ1xceGJkJywgJyVCRCc6ICdcXHhiZCcsXG4gICclYmUnOiAnXFx4YmUnLCAnJUJlJzogJ1xceGJlJywgJyViRSc6ICdcXHhiZScsICclQkUnOiAnXFx4YmUnLCAnJWJmJzogJ1xceGJmJyxcbiAgJyVCZic6ICdcXHhiZicsICclYkYnOiAnXFx4YmYnLCAnJUJGJzogJ1xceGJmJywgJyVjMCc6ICdcXHhjMCcsICclQzAnOiAnXFx4YzAnLFxuICAnJWMxJzogJ1xceGMxJywgJyVDMSc6ICdcXHhjMScsICclYzInOiAnXFx4YzInLCAnJUMyJzogJ1xceGMyJywgJyVjMyc6ICdcXHhjMycsXG4gICclQzMnOiAnXFx4YzMnLCAnJWM0JzogJ1xceGM0JywgJyVDNCc6ICdcXHhjNCcsICclYzUnOiAnXFx4YzUnLCAnJUM1JzogJ1xceGM1JyxcbiAgJyVjNic6ICdcXHhjNicsICclQzYnOiAnXFx4YzYnLCAnJWM3JzogJ1xceGM3JywgJyVDNyc6ICdcXHhjNycsICclYzgnOiAnXFx4YzgnLFxuICAnJUM4JzogJ1xceGM4JywgJyVjOSc6ICdcXHhjOScsICclQzknOiAnXFx4YzknLCAnJWNhJzogJ1xceGNhJywgJyVDYSc6ICdcXHhjYScsXG4gICclY0EnOiAnXFx4Y2EnLCAnJUNBJzogJ1xceGNhJywgJyVjYic6ICdcXHhjYicsICclQ2InOiAnXFx4Y2InLCAnJWNCJzogJ1xceGNiJyxcbiAgJyVDQic6ICdcXHhjYicsICclY2MnOiAnXFx4Y2MnLCAnJUNjJzogJ1xceGNjJywgJyVjQyc6ICdcXHhjYycsICclQ0MnOiAnXFx4Y2MnLFxuICAnJWNkJzogJ1xceGNkJywgJyVDZCc6ICdcXHhjZCcsICclY0QnOiAnXFx4Y2QnLCAnJUNEJzogJ1xceGNkJywgJyVjZSc6ICdcXHhjZScsXG4gICclQ2UnOiAnXFx4Y2UnLCAnJWNFJzogJ1xceGNlJywgJyVDRSc6ICdcXHhjZScsICclY2YnOiAnXFx4Y2YnLCAnJUNmJzogJ1xceGNmJyxcbiAgJyVjRic6ICdcXHhjZicsICclQ0YnOiAnXFx4Y2YnLCAnJWQwJzogJ1xceGQwJywgJyVEMCc6ICdcXHhkMCcsICclZDEnOiAnXFx4ZDEnLFxuICAnJUQxJzogJ1xceGQxJywgJyVkMic6ICdcXHhkMicsICclRDInOiAnXFx4ZDInLCAnJWQzJzogJ1xceGQzJywgJyVEMyc6ICdcXHhkMycsXG4gICclZDQnOiAnXFx4ZDQnLCAnJUQ0JzogJ1xceGQ0JywgJyVkNSc6ICdcXHhkNScsICclRDUnOiAnXFx4ZDUnLCAnJWQ2JzogJ1xceGQ2JyxcbiAgJyVENic6ICdcXHhkNicsICclZDcnOiAnXFx4ZDcnLCAnJUQ3JzogJ1xceGQ3JywgJyVkOCc6ICdcXHhkOCcsICclRDgnOiAnXFx4ZDgnLFxuICAnJWQ5JzogJ1xceGQ5JywgJyVEOSc6ICdcXHhkOScsICclZGEnOiAnXFx4ZGEnLCAnJURhJzogJ1xceGRhJywgJyVkQSc6ICdcXHhkYScsXG4gICclREEnOiAnXFx4ZGEnLCAnJWRiJzogJ1xceGRiJywgJyVEYic6ICdcXHhkYicsICclZEInOiAnXFx4ZGInLCAnJURCJzogJ1xceGRiJyxcbiAgJyVkYyc6ICdcXHhkYycsICclRGMnOiAnXFx4ZGMnLCAnJWRDJzogJ1xceGRjJywgJyVEQyc6ICdcXHhkYycsICclZGQnOiAnXFx4ZGQnLFxuICAnJURkJzogJ1xceGRkJywgJyVkRCc6ICdcXHhkZCcsICclREQnOiAnXFx4ZGQnLCAnJWRlJzogJ1xceGRlJywgJyVEZSc6ICdcXHhkZScsXG4gICclZEUnOiAnXFx4ZGUnLCAnJURFJzogJ1xceGRlJywgJyVkZic6ICdcXHhkZicsICclRGYnOiAnXFx4ZGYnLCAnJWRGJzogJ1xceGRmJyxcbiAgJyVERic6ICdcXHhkZicsICclZTAnOiAnXFx4ZTAnLCAnJUUwJzogJ1xceGUwJywgJyVlMSc6ICdcXHhlMScsICclRTEnOiAnXFx4ZTEnLFxuICAnJWUyJzogJ1xceGUyJywgJyVFMic6ICdcXHhlMicsICclZTMnOiAnXFx4ZTMnLCAnJUUzJzogJ1xceGUzJywgJyVlNCc6ICdcXHhlNCcsXG4gICclRTQnOiAnXFx4ZTQnLCAnJWU1JzogJ1xceGU1JywgJyVFNSc6ICdcXHhlNScsICclZTYnOiAnXFx4ZTYnLCAnJUU2JzogJ1xceGU2JyxcbiAgJyVlNyc6ICdcXHhlNycsICclRTcnOiAnXFx4ZTcnLCAnJWU4JzogJ1xceGU4JywgJyVFOCc6ICdcXHhlOCcsICclZTknOiAnXFx4ZTknLFxuICAnJUU5JzogJ1xceGU5JywgJyVlYSc6ICdcXHhlYScsICclRWEnOiAnXFx4ZWEnLCAnJWVBJzogJ1xceGVhJywgJyVFQSc6ICdcXHhlYScsXG4gICclZWInOiAnXFx4ZWInLCAnJUViJzogJ1xceGViJywgJyVlQic6ICdcXHhlYicsICclRUInOiAnXFx4ZWInLCAnJWVjJzogJ1xceGVjJyxcbiAgJyVFYyc6ICdcXHhlYycsICclZUMnOiAnXFx4ZWMnLCAnJUVDJzogJ1xceGVjJywgJyVlZCc6ICdcXHhlZCcsICclRWQnOiAnXFx4ZWQnLFxuICAnJWVEJzogJ1xceGVkJywgJyVFRCc6ICdcXHhlZCcsICclZWUnOiAnXFx4ZWUnLCAnJUVlJzogJ1xceGVlJywgJyVlRSc6ICdcXHhlZScsXG4gICclRUUnOiAnXFx4ZWUnLCAnJWVmJzogJ1xceGVmJywgJyVFZic6ICdcXHhlZicsICclZUYnOiAnXFx4ZWYnLCAnJUVGJzogJ1xceGVmJyxcbiAgJyVmMCc6ICdcXHhmMCcsICclRjAnOiAnXFx4ZjAnLCAnJWYxJzogJ1xceGYxJywgJyVGMSc6ICdcXHhmMScsICclZjInOiAnXFx4ZjInLFxuICAnJUYyJzogJ1xceGYyJywgJyVmMyc6ICdcXHhmMycsICclRjMnOiAnXFx4ZjMnLCAnJWY0JzogJ1xceGY0JywgJyVGNCc6ICdcXHhmNCcsXG4gICclZjUnOiAnXFx4ZjUnLCAnJUY1JzogJ1xceGY1JywgJyVmNic6ICdcXHhmNicsICclRjYnOiAnXFx4ZjYnLCAnJWY3JzogJ1xceGY3JyxcbiAgJyVGNyc6ICdcXHhmNycsICclZjgnOiAnXFx4ZjgnLCAnJUY4JzogJ1xceGY4JywgJyVmOSc6ICdcXHhmOScsICclRjknOiAnXFx4ZjknLFxuICAnJWZhJzogJ1xceGZhJywgJyVGYSc6ICdcXHhmYScsICclZkEnOiAnXFx4ZmEnLCAnJUZBJzogJ1xceGZhJywgJyVmYic6ICdcXHhmYicsXG4gICclRmInOiAnXFx4ZmInLCAnJWZCJzogJ1xceGZiJywgJyVGQic6ICdcXHhmYicsICclZmMnOiAnXFx4ZmMnLCAnJUZjJzogJ1xceGZjJyxcbiAgJyVmQyc6ICdcXHhmYycsICclRkMnOiAnXFx4ZmMnLCAnJWZkJzogJ1xceGZkJywgJyVGZCc6ICdcXHhmZCcsICclZkQnOiAnXFx4ZmQnLFxuICAnJUZEJzogJ1xceGZkJywgJyVmZSc6ICdcXHhmZScsICclRmUnOiAnXFx4ZmUnLCAnJWZFJzogJ1xceGZlJywgJyVGRSc6ICdcXHhmZScsXG4gICclZmYnOiAnXFx4ZmYnLCAnJUZmJzogJ1xceGZmJywgJyVmRic6ICdcXHhmZicsICclRkYnOiAnXFx4ZmYnXG59XG5cbmZ1bmN0aW9uIGVuY29kZWRSZXBsYWNlciAobWF0Y2gpIHtcbiAgcmV0dXJuIEVuY29kZWRMb29rdXBbbWF0Y2hdXG59XG5cbmNvbnN0IFNUQVRFX0tFWSA9IDBcbmNvbnN0IFNUQVRFX1ZBTFVFID0gMVxuY29uc3QgU1RBVEVfQ0hBUlNFVCA9IDJcbmNvbnN0IFNUQVRFX0xBTkcgPSAzXG5cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zIChzdHIpIHtcbiAgY29uc3QgcmVzID0gW11cbiAgbGV0IHN0YXRlID0gU1RBVEVfS0VZXG4gIGxldCBjaGFyc2V0ID0gJydcbiAgbGV0IGlucXVvdGUgPSBmYWxzZVxuICBsZXQgZXNjYXBpbmcgPSBmYWxzZVxuICBsZXQgcCA9IDBcbiAgbGV0IHRtcCA9ICcnXG4gIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdmFyXG4gICAgY29uc3QgY2hhciA9IHN0cltpXVxuICAgIGlmIChjaGFyID09PSAnXFxcXCcgJiYgaW5xdW90ZSkge1xuICAgICAgaWYgKGVzY2FwaW5nKSB7IGVzY2FwaW5nID0gZmFsc2UgfSBlbHNlIHtcbiAgICAgICAgZXNjYXBpbmcgPSB0cnVlXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpZiAoIWVzY2FwaW5nKSB7XG4gICAgICAgIGlmIChpbnF1b3RlKSB7XG4gICAgICAgICAgaW5xdW90ZSA9IGZhbHNlXG4gICAgICAgICAgc3RhdGUgPSBTVEFURV9LRVlcbiAgICAgICAgfSBlbHNlIHsgaW5xdW90ZSA9IHRydWUgfVxuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIHsgZXNjYXBpbmcgPSBmYWxzZSB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlc2NhcGluZyAmJiBpbnF1b3RlKSB7IHRtcCArPSAnXFxcXCcgfVxuICAgICAgZXNjYXBpbmcgPSBmYWxzZVxuICAgICAgaWYgKChzdGF0ZSA9PT0gU1RBVEVfQ0hBUlNFVCB8fCBzdGF0ZSA9PT0gU1RBVEVfTEFORykgJiYgY2hhciA9PT0gXCInXCIpIHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBTVEFURV9DSEFSU0VUKSB7XG4gICAgICAgICAgc3RhdGUgPSBTVEFURV9MQU5HXG4gICAgICAgICAgY2hhcnNldCA9IHRtcC5zdWJzdHJpbmcoMSlcbiAgICAgICAgfSBlbHNlIHsgc3RhdGUgPSBTVEFURV9WQUxVRSB9XG4gICAgICAgIHRtcCA9ICcnXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBTVEFURV9LRVkgJiZcbiAgICAgICAgKGNoYXIgPT09ICcqJyB8fCBjaGFyID09PSAnPScpICYmXG4gICAgICAgIHJlcy5sZW5ndGgpIHtcbiAgICAgICAgc3RhdGUgPSBjaGFyID09PSAnKidcbiAgICAgICAgICA/IFNUQVRFX0NIQVJTRVRcbiAgICAgICAgICA6IFNUQVRFX1ZBTFVFXG4gICAgICAgIHJlc1twXSA9IFt0bXAsIHVuZGVmaW5lZF1cbiAgICAgICAgdG1wID0gJydcbiAgICAgICAgY29udGludWVcbiAgICAgIH0gZWxzZSBpZiAoIWlucXVvdGUgJiYgY2hhciA9PT0gJzsnKSB7XG4gICAgICAgIHN0YXRlID0gU1RBVEVfS0VZXG4gICAgICAgIGlmIChjaGFyc2V0KSB7XG4gICAgICAgICAgaWYgKHRtcC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRtcCA9IGRlY29kZVRleHQodG1wLnJlcGxhY2UoUkVfRU5DT0RFRCwgZW5jb2RlZFJlcGxhY2VyKSxcbiAgICAgICAgICAgICAgJ2JpbmFyeScsXG4gICAgICAgICAgICAgIGNoYXJzZXQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNoYXJzZXQgPSAnJ1xuICAgICAgICB9IGVsc2UgaWYgKHRtcC5sZW5ndGgpIHtcbiAgICAgICAgICB0bXAgPSBkZWNvZGVUZXh0KHRtcCwgJ2JpbmFyeScsICd1dGY4JylcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzW3BdID09PSB1bmRlZmluZWQpIHsgcmVzW3BdID0gdG1wIH0gZWxzZSB7IHJlc1twXVsxXSA9IHRtcCB9XG4gICAgICAgIHRtcCA9ICcnXG4gICAgICAgICsrcFxuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIGlmICghaW5xdW90ZSAmJiAoY2hhciA9PT0gJyAnIHx8IGNoYXIgPT09ICdcXHQnKSkgeyBjb250aW51ZSB9XG4gICAgfVxuICAgIHRtcCArPSBjaGFyXG4gIH1cbiAgaWYgKGNoYXJzZXQgJiYgdG1wLmxlbmd0aCkge1xuICAgIHRtcCA9IGRlY29kZVRleHQodG1wLnJlcGxhY2UoUkVfRU5DT0RFRCwgZW5jb2RlZFJlcGxhY2VyKSxcbiAgICAgICdiaW5hcnknLFxuICAgICAgY2hhcnNldClcbiAgfSBlbHNlIGlmICh0bXApIHtcbiAgICB0bXAgPSBkZWNvZGVUZXh0KHRtcCwgJ2JpbmFyeScsICd1dGY4JylcbiAgfVxuXG4gIGlmIChyZXNbcF0gPT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0bXApIHsgcmVzW3BdID0gdG1wIH1cbiAgfSBlbHNlIHsgcmVzW3BdWzFdID0gdG1wIH1cblxuICByZXR1cm4gcmVzXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VQYXJhbXNcbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlbmFtZSAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7IHJldHVybiAnJyB9XG4gIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdmFyXG4gICAgc3dpdGNoIChwYXRoLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIGNhc2UgMHgyRjogLy8gJy8nXG4gICAgICBjYXNlIDB4NUM6IC8vICdcXCdcbiAgICAgICAgcGF0aCA9IHBhdGguc2xpY2UoaSArIDEpXG4gICAgICAgIHJldHVybiAocGF0aCA9PT0gJy4uJyB8fCBwYXRoID09PSAnLicgPyAnJyA6IHBhdGgpXG4gICAgfVxuICB9XG4gIHJldHVybiAocGF0aCA9PT0gJy4uJyB8fCBwYXRoID09PSAnLicgPyAnJyA6IHBhdGgpXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIFRPRE86XG4vLyAgKiBzdXBwb3J0IDEgbmVzdGVkIG11bHRpcGFydCBsZXZlbFxuLy8gICAgKHNlZSBzZWNvbmQgbXVsdGlwYXJ0IGV4YW1wbGUgaGVyZTpcbi8vICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2ludGVyYWN0L2Zvcm1zLmh0bWwjZGlkeC1tdWx0aXBhcnRmb3JtLWRhdGEpXG4vLyAgKiBzdXBwb3J0IGxpbWl0cy5maWVsZE5hbWVTaXplXG4vLyAgICAgLS0gdGhpcyB3aWxsIHJlcXVpcmUgbW9kaWZpY2F0aW9ucyB0byB1dGlscy5wYXJzZVBhcmFtc1xuXG5jb25zdCB7IFJlYWRhYmxlIH0gPSByZXF1aXJlKCdub2RlOnN0cmVhbScpXG5jb25zdCB7IGluaGVyaXRzIH0gPSByZXF1aXJlKCdub2RlOnV0aWwnKVxuXG5jb25zdCBEaWNlciA9IHJlcXVpcmUoJy4uLy4uL2RlcHMvZGljZXIvbGliL0RpY2VyJylcblxuY29uc3QgcGFyc2VQYXJhbXMgPSByZXF1aXJlKCcuLi91dGlscy9wYXJzZVBhcmFtcycpXG5jb25zdCBkZWNvZGVUZXh0ID0gcmVxdWlyZSgnLi4vdXRpbHMvZGVjb2RlVGV4dCcpXG5jb25zdCBiYXNlbmFtZSA9IHJlcXVpcmUoJy4uL3V0aWxzL2Jhc2VuYW1lJylcbmNvbnN0IGdldExpbWl0ID0gcmVxdWlyZSgnLi4vdXRpbHMvZ2V0TGltaXQnKVxuXG5jb25zdCBSRV9CT1VOREFSWSA9IC9eYm91bmRhcnkkL2lcbmNvbnN0IFJFX0ZJRUxEID0gL15mb3JtLWRhdGEkL2lcbmNvbnN0IFJFX0NIQVJTRVQgPSAvXmNoYXJzZXQkL2lcbmNvbnN0IFJFX0ZJTEVOQU1FID0gL15maWxlbmFtZSQvaVxuY29uc3QgUkVfTkFNRSA9IC9ebmFtZSQvaVxuXG5NdWx0aXBhcnQuZGV0ZWN0ID0gL15tdWx0aXBhcnRcXC9mb3JtLWRhdGEvaVxuZnVuY3Rpb24gTXVsdGlwYXJ0IChib3ksIGNmZykge1xuICBsZXQgaVxuICBsZXQgbGVuXG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBib3VuZGFyeVxuICBjb25zdCBsaW1pdHMgPSBjZmcubGltaXRzXG4gIGNvbnN0IGlzUGFydEFGaWxlID0gY2ZnLmlzUGFydEFGaWxlIHx8ICgoZmllbGROYW1lLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpID0+IChjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfHwgZmlsZU5hbWUgIT09IHVuZGVmaW5lZCkpXG4gIGNvbnN0IHBhcnNlZENvblR5cGUgPSBjZmcucGFyc2VkQ29uVHlwZSB8fCBbXVxuICBjb25zdCBkZWZDaGFyc2V0ID0gY2ZnLmRlZkNoYXJzZXQgfHwgJ3V0ZjgnXG4gIGNvbnN0IHByZXNlcnZlUGF0aCA9IGNmZy5wcmVzZXJ2ZVBhdGhcbiAgY29uc3QgZmlsZU9wdHMgPSB7IGhpZ2hXYXRlck1hcms6IGNmZy5maWxlSHdtIH1cblxuICBmb3IgKGkgPSAwLCBsZW4gPSBwYXJzZWRDb25UeXBlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkQ29uVHlwZVtpXSkgJiZcbiAgICAgIFJFX0JPVU5EQVJZLnRlc3QocGFyc2VkQ29uVHlwZVtpXVswXSkpIHtcbiAgICAgIGJvdW5kYXJ5ID0gcGFyc2VkQ29uVHlwZVtpXVsxXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja0ZpbmlzaGVkICgpIHtcbiAgICBpZiAobmVuZHMgPT09IDAgJiYgZmluaXNoZWQgJiYgIWJveS5fZG9uZSkge1xuICAgICAgZmluaXNoZWQgPSBmYWxzZVxuICAgICAgc2VsZi5lbmQoKVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgYm91bmRhcnkgIT09ICdzdHJpbmcnKSB7IHRocm93IG5ldyBFcnJvcignTXVsdGlwYXJ0OiBCb3VuZGFyeSBub3QgZm91bmQnKSB9XG5cbiAgY29uc3QgZmllbGRTaXplTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWVsZFNpemUnLCAxICogMTAyNCAqIDEwMjQpXG4gIGNvbnN0IGZpbGVTaXplTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWxlU2l6ZScsIEluZmluaXR5KVxuICBjb25zdCBmaWxlc0xpbWl0ID0gZ2V0TGltaXQobGltaXRzLCAnZmlsZXMnLCBJbmZpbml0eSlcbiAgY29uc3QgZmllbGRzTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWVsZHMnLCBJbmZpbml0eSlcbiAgY29uc3QgcGFydHNMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ3BhcnRzJywgSW5maW5pdHkpXG4gIGNvbnN0IGhlYWRlclBhaXJzTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdoZWFkZXJQYWlycycsIDIwMDApXG4gIGNvbnN0IGhlYWRlclNpemVMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2hlYWRlclNpemUnLCA4MCAqIDEwMjQpXG5cbiAgbGV0IG5maWxlcyA9IDBcbiAgbGV0IG5maWVsZHMgPSAwXG4gIGxldCBuZW5kcyA9IDBcbiAgbGV0IGN1ckZpbGVcbiAgbGV0IGN1ckZpZWxkXG4gIGxldCBmaW5pc2hlZCA9IGZhbHNlXG5cbiAgdGhpcy5fbmVlZERyYWluID0gZmFsc2VcbiAgdGhpcy5fcGF1c2UgPSBmYWxzZVxuICB0aGlzLl9jYiA9IHVuZGVmaW5lZFxuICB0aGlzLl9ucGFydHMgPSAwXG4gIHRoaXMuX2JveSA9IGJveVxuXG4gIGNvbnN0IHBhcnNlckNmZyA9IHtcbiAgICBib3VuZGFyeSxcbiAgICBtYXhIZWFkZXJQYWlyczogaGVhZGVyUGFpcnNMaW1pdCxcbiAgICBtYXhIZWFkZXJTaXplOiBoZWFkZXJTaXplTGltaXQsXG4gICAgcGFydEh3bTogZmlsZU9wdHMuaGlnaFdhdGVyTWFyayxcbiAgICBoaWdoV2F0ZXJNYXJrOiBjZmcuaGlnaFdhdGVyTWFya1xuICB9XG5cbiAgdGhpcy5wYXJzZXIgPSBuZXcgRGljZXIocGFyc2VyQ2ZnKVxuICB0aGlzLnBhcnNlci5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5fbmVlZERyYWluID0gZmFsc2VcbiAgICBpZiAoc2VsZi5fY2IgJiYgIXNlbGYuX3BhdXNlKSB7XG4gICAgICBjb25zdCBjYiA9IHNlbGYuX2NiXG4gICAgICBzZWxmLl9jYiA9IHVuZGVmaW5lZFxuICAgICAgY2IoKVxuICAgIH1cbiAgfSkub24oJ3BhcnQnLCBmdW5jdGlvbiBvblBhcnQgKHBhcnQpIHtcbiAgICBpZiAoKytzZWxmLl9ucGFydHMgPiBwYXJ0c0xpbWl0KSB7XG4gICAgICBzZWxmLnBhcnNlci5yZW1vdmVMaXN0ZW5lcigncGFydCcsIG9uUGFydClcbiAgICAgIHNlbGYucGFyc2VyLm9uKCdwYXJ0Jywgc2tpcFBhcnQpXG4gICAgICBib3kuaGl0UGFydHNMaW1pdCA9IHRydWVcbiAgICAgIGJveS5lbWl0KCdwYXJ0c0xpbWl0JylcbiAgICAgIHJldHVybiBza2lwUGFydChwYXJ0KVxuICAgIH1cblxuICAgIC8vIGhhY2sgYmVjYXVzZSBzdHJlYW1zMiBfYWx3YXlzXyBkb2Vzbid0IGVtaXQgJ2VuZCcgdW50aWwgbmV4dFRpY2ssIHNvIGxldFxuICAgIC8vIHVzIGVtaXQgJ2VuZCcgZWFybHkgc2luY2Ugd2Uga25vdyB0aGUgcGFydCBoYXMgZW5kZWQgaWYgd2UgYXJlIGFscmVhZHlcbiAgICAvLyBzZWVpbmcgdGhlIG5leHQgcGFydFxuICAgIGlmIChjdXJGaWVsZCkge1xuICAgICAgY29uc3QgZmllbGQgPSBjdXJGaWVsZFxuICAgICAgZmllbGQuZW1pdCgnZW5kJylcbiAgICAgIGZpZWxkLnJlbW92ZUFsbExpc3RlbmVycygnZW5kJylcbiAgICB9XG5cbiAgICBwYXJ0Lm9uKCdoZWFkZXInLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4gICAgICBsZXQgY29udHlwZVxuICAgICAgbGV0IGZpZWxkbmFtZVxuICAgICAgbGV0IHBhcnNlZFxuICAgICAgbGV0IGNoYXJzZXRcbiAgICAgIGxldCBlbmNvZGluZ1xuICAgICAgbGV0IGZpbGVuYW1lXG4gICAgICBsZXQgbnNpemUgPSAwXG5cbiAgICAgIGlmIChoZWFkZXJbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICAgIHBhcnNlZCA9IHBhcnNlUGFyYW1zKGhlYWRlclsnY29udGVudC10eXBlJ11bMF0pXG4gICAgICAgIGlmIChwYXJzZWRbMF0pIHtcbiAgICAgICAgICBjb250eXBlID0gcGFyc2VkWzBdLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBwYXJzZWQubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChSRV9DSEFSU0VULnRlc3QocGFyc2VkW2ldWzBdKSkge1xuICAgICAgICAgICAgICBjaGFyc2V0ID0gcGFyc2VkW2ldWzFdLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnR5cGUgPT09IHVuZGVmaW5lZCkgeyBjb250eXBlID0gJ3RleHQvcGxhaW4nIH1cbiAgICAgIGlmIChjaGFyc2V0ID09PSB1bmRlZmluZWQpIHsgY2hhcnNldCA9IGRlZkNoYXJzZXQgfVxuXG4gICAgICBpZiAoaGVhZGVyWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pIHtcbiAgICAgICAgcGFyc2VkID0gcGFyc2VQYXJhbXMoaGVhZGVyWydjb250ZW50LWRpc3Bvc2l0aW9uJ11bMF0pXG4gICAgICAgIGlmICghUkVfRklFTEQudGVzdChwYXJzZWRbMF0pKSB7IHJldHVybiBza2lwUGFydChwYXJ0KSB9XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHBhcnNlZC5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgIGlmIChSRV9OQU1FLnRlc3QocGFyc2VkW2ldWzBdKSkge1xuICAgICAgICAgICAgZmllbGRuYW1lID0gcGFyc2VkW2ldWzFdXG4gICAgICAgICAgfSBlbHNlIGlmIChSRV9GSUxFTkFNRS50ZXN0KHBhcnNlZFtpXVswXSkpIHtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gcGFyc2VkW2ldWzFdXG4gICAgICAgICAgICBpZiAoIXByZXNlcnZlUGF0aCkgeyBmaWxlbmFtZSA9IGJhc2VuYW1lKGZpbGVuYW1lKSB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgeyByZXR1cm4gc2tpcFBhcnQocGFydCkgfVxuXG4gICAgICBpZiAoaGVhZGVyWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10pIHsgZW5jb2RpbmcgPSBoZWFkZXJbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXVswXS50b0xvd2VyQ2FzZSgpIH0gZWxzZSB7IGVuY29kaW5nID0gJzdiaXQnIH1cblxuICAgICAgbGV0IG9uRGF0YSxcbiAgICAgICAgb25FbmRcblxuICAgICAgaWYgKGlzUGFydEFGaWxlKGZpZWxkbmFtZSwgY29udHlwZSwgZmlsZW5hbWUpKSB7XG4gICAgICAgIC8vIGZpbGUvYmluYXJ5IGZpZWxkXG4gICAgICAgIGlmIChuZmlsZXMgPT09IGZpbGVzTGltaXQpIHtcbiAgICAgICAgICBpZiAoIWJveS5oaXRGaWxlc0xpbWl0KSB7XG4gICAgICAgICAgICBib3kuaGl0RmlsZXNMaW1pdCA9IHRydWVcbiAgICAgICAgICAgIGJveS5lbWl0KCdmaWxlc0xpbWl0JylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNraXBQYXJ0KHBhcnQpXG4gICAgICAgIH1cblxuICAgICAgICArK25maWxlc1xuXG4gICAgICAgIGlmIChib3kubGlzdGVuZXJDb3VudCgnZmlsZScpID09PSAwKSB7XG4gICAgICAgICAgc2VsZi5wYXJzZXIuX2lnbm9yZSgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICArK25lbmRzXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZVN0cmVhbShmaWxlT3B0cylcbiAgICAgICAgY3VyRmlsZSA9IGZpbGVcbiAgICAgICAgZmlsZS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC0tbmVuZHNcbiAgICAgICAgICBzZWxmLl9wYXVzZSA9IGZhbHNlXG4gICAgICAgICAgY2hlY2tGaW5pc2hlZCgpXG4gICAgICAgICAgaWYgKHNlbGYuX2NiICYmICFzZWxmLl9uZWVkRHJhaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gc2VsZi5fY2JcbiAgICAgICAgICAgIHNlbGYuX2NiID0gdW5kZWZpbmVkXG4gICAgICAgICAgICBjYigpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBmaWxlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICBpZiAoIXNlbGYuX3BhdXNlKSB7IHJldHVybiB9XG4gICAgICAgICAgc2VsZi5fcGF1c2UgPSBmYWxzZVxuICAgICAgICAgIGlmIChzZWxmLl9jYiAmJiAhc2VsZi5fbmVlZERyYWluKSB7XG4gICAgICAgICAgICBjb25zdCBjYiA9IHNlbGYuX2NiXG4gICAgICAgICAgICBzZWxmLl9jYiA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgY2IoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBib3kuZW1pdCgnZmlsZScsIGZpZWxkbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGVuY29kaW5nLCBjb250eXBlKVxuXG4gICAgICAgIG9uRGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgaWYgKChuc2l6ZSArPSBkYXRhLmxlbmd0aCkgPiBmaWxlU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgICBjb25zdCBleHRyYWxlbiA9IGZpbGVTaXplTGltaXQgLSBuc2l6ZSArIGRhdGEubGVuZ3RoXG4gICAgICAgICAgICBpZiAoZXh0cmFsZW4gPiAwKSB7IGZpbGUucHVzaChkYXRhLnNsaWNlKDAsIGV4dHJhbGVuKSkgfVxuICAgICAgICAgICAgZmlsZS50cnVuY2F0ZWQgPSB0cnVlXG4gICAgICAgICAgICBmaWxlLmJ5dGVzUmVhZCA9IGZpbGVTaXplTGltaXRcbiAgICAgICAgICAgIHBhcnQucmVtb3ZlQWxsTGlzdGVuZXJzKCdkYXRhJylcbiAgICAgICAgICAgIGZpbGUuZW1pdCgnbGltaXQnKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfSBlbHNlIGlmICghZmlsZS5wdXNoKGRhdGEpKSB7IHNlbGYuX3BhdXNlID0gdHJ1ZSB9XG5cbiAgICAgICAgICBmaWxlLmJ5dGVzUmVhZCA9IG5zaXplXG4gICAgICAgIH1cblxuICAgICAgICBvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjdXJGaWxlID0gdW5kZWZpbmVkXG4gICAgICAgICAgZmlsZS5wdXNoKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG5vbi1maWxlIGZpZWxkXG4gICAgICAgIGlmIChuZmllbGRzID09PSBmaWVsZHNMaW1pdCkge1xuICAgICAgICAgIGlmICghYm95LmhpdEZpZWxkc0xpbWl0KSB7XG4gICAgICAgICAgICBib3kuaGl0RmllbGRzTGltaXQgPSB0cnVlXG4gICAgICAgICAgICBib3kuZW1pdCgnZmllbGRzTGltaXQnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc2tpcFBhcnQocGFydClcbiAgICAgICAgfVxuXG4gICAgICAgICsrbmZpZWxkc1xuICAgICAgICArK25lbmRzXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgdHJ1bmNhdGVkID0gZmFsc2VcbiAgICAgICAgY3VyRmllbGQgPSBwYXJ0XG5cbiAgICAgICAgb25EYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICBpZiAoKG5zaXplICs9IGRhdGEubGVuZ3RoKSA+IGZpZWxkU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgICBjb25zdCBleHRyYWxlbiA9IChmaWVsZFNpemVMaW1pdCAtIChuc2l6ZSAtIGRhdGEubGVuZ3RoKSlcbiAgICAgICAgICAgIGJ1ZmZlciArPSBkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCAwLCBleHRyYWxlbilcbiAgICAgICAgICAgIHRydW5jYXRlZCA9IHRydWVcbiAgICAgICAgICAgIHBhcnQucmVtb3ZlQWxsTGlzdGVuZXJzKCdkYXRhJylcbiAgICAgICAgICB9IGVsc2UgeyBidWZmZXIgKz0gZGF0YS50b1N0cmluZygnYmluYXJ5JykgfVxuICAgICAgICB9XG5cbiAgICAgICAgb25FbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY3VyRmllbGQgPSB1bmRlZmluZWRcbiAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkgeyBidWZmZXIgPSBkZWNvZGVUZXh0KGJ1ZmZlciwgJ2JpbmFyeScsIGNoYXJzZXQpIH1cbiAgICAgICAgICBib3kuZW1pdCgnZmllbGQnLCBmaWVsZG5hbWUsIGJ1ZmZlciwgZmFsc2UsIHRydW5jYXRlZCwgZW5jb2RpbmcsIGNvbnR5cGUpXG4gICAgICAgICAgLS1uZW5kc1xuICAgICAgICAgIGNoZWNrRmluaXNoZWQoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIEFzIG9mIG5vZGVAMmVmZTRhYjc2MTY2NiAodjAuMTAuMjkrL3YwLjExLjE0KyksIGJ1c2JveSBoYWQgYmVjb21lXG4gICAgICAgICBicm9rZW4uIFN0cmVhbXMyL3N0cmVhbXMzIGlzIGEgaHVnZSBibGFjayBib3ggb2YgY29uZnVzaW9uLCBidXRcbiAgICAgICAgIHNvbWVob3cgb3ZlcnJpZGluZyB0aGUgc3luYyBzdGF0ZSBzZWVtcyB0byBmaXggdGhpbmdzIGFnYWluIChhbmQgc3RpbGxcbiAgICAgICAgIHNlZW1zIHRvIHdvcmsgZm9yIHByZXZpb3VzIG5vZGUgdmVyc2lvbnMpLlxuICAgICAgKi9cbiAgICAgIHBhcnQuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlXG5cbiAgICAgIHBhcnQub24oJ2RhdGEnLCBvbkRhdGEpXG4gICAgICBwYXJ0Lm9uKCdlbmQnLCBvbkVuZClcbiAgICB9KS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoY3VyRmlsZSkgeyBjdXJGaWxlLmVtaXQoJ2Vycm9yJywgZXJyKSB9XG4gICAgfSlcbiAgfSkub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgIGJveS5lbWl0KCdlcnJvcicsIGVycilcbiAgfSkub24oJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICBmaW5pc2hlZCA9IHRydWVcbiAgICBjaGVja0ZpbmlzaGVkKClcbiAgfSlcbn1cblxuTXVsdGlwYXJ0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgY2IpIHtcbiAgY29uc3QgciA9IHRoaXMucGFyc2VyLndyaXRlKGNodW5rKVxuICBpZiAociAmJiAhdGhpcy5fcGF1c2UpIHtcbiAgICBjYigpXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbmVlZERyYWluID0gIXJcbiAgICB0aGlzLl9jYiA9IGNiXG4gIH1cbn1cblxuTXVsdGlwYXJ0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgaWYgKHNlbGYucGFyc2VyLndyaXRhYmxlKSB7XG4gICAgc2VsZi5wYXJzZXIuZW5kKClcbiAgfSBlbHNlIGlmICghc2VsZi5fYm95Ll9kb25lKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9ib3kuX2RvbmUgPSB0cnVlXG4gICAgICBzZWxmLl9ib3kuZW1pdCgnZmluaXNoJylcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIHNraXBQYXJ0IChwYXJ0KSB7XG4gIHBhcnQucmVzdW1lKClcbn1cblxuZnVuY3Rpb24gRmlsZVN0cmVhbSAob3B0cykge1xuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdHMpXG5cbiAgdGhpcy5ieXRlc1JlYWQgPSAwXG5cbiAgdGhpcy50cnVuY2F0ZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhGaWxlU3RyZWFtLCBSZWFkYWJsZSlcblxuRmlsZVN0cmVhbS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge31cblxubW9kdWxlLmV4cG9ydHMgPSBNdWx0aXBhcnRcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgUkVfUExVUyA9IC9cXCsvZ1xuXG5jb25zdCBIRVggPSBbXG4gIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsXG4gIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBcbl1cblxuZnVuY3Rpb24gRGVjb2RlciAoKSB7XG4gIHRoaXMuYnVmZmVyID0gdW5kZWZpbmVkXG59XG5EZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgLy8gUmVwbGFjZSAnKycgd2l0aCAnICcgYmVmb3JlIGRlY29kaW5nXG4gIHN0ciA9IHN0ci5yZXBsYWNlKFJFX1BMVVMsICcgJylcbiAgbGV0IHJlcyA9ICcnXG4gIGxldCBpID0gMDsgbGV0IHAgPSAwOyBjb25zdCBsZW4gPSBzdHIubGVuZ3RoXG4gIGZvciAoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpcy5idWZmZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCFIRVhbc3RyLmNoYXJDb2RlQXQoaSldKSB7XG4gICAgICAgIHJlcyArPSAnJScgKyB0aGlzLmJ1ZmZlclxuICAgICAgICB0aGlzLmJ1ZmZlciA9IHVuZGVmaW5lZFxuICAgICAgICAtLWkgLy8gcmV0cnkgY2hhcmFjdGVyXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBzdHJbaV1cbiAgICAgICAgKytwXG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0aGlzLmJ1ZmZlciwgMTYpKVxuICAgICAgICAgIHRoaXMuYnVmZmVyID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0cltpXSA9PT0gJyUnKSB7XG4gICAgICBpZiAoaSA+IHApIHtcbiAgICAgICAgcmVzICs9IHN0ci5zdWJzdHJpbmcocCwgaSlcbiAgICAgICAgcCA9IGlcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyID0gJydcbiAgICAgICsrcFxuICAgIH1cbiAgfVxuICBpZiAocCA8IGxlbiAmJiB0aGlzLmJ1ZmZlciA9PT0gdW5kZWZpbmVkKSB7IHJlcyArPSBzdHIuc3Vic3RyaW5nKHApIH1cbiAgcmV0dXJuIHJlc1xufVxuRGVjb2Rlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYnVmZmVyID0gdW5kZWZpbmVkXG59XG5cbm1vZHVsZS5leHBvcnRzID0gRGVjb2RlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBEZWNvZGVyID0gcmVxdWlyZSgnLi4vdXRpbHMvRGVjb2RlcicpXG5jb25zdCBkZWNvZGVUZXh0ID0gcmVxdWlyZSgnLi4vdXRpbHMvZGVjb2RlVGV4dCcpXG5jb25zdCBnZXRMaW1pdCA9IHJlcXVpcmUoJy4uL3V0aWxzL2dldExpbWl0JylcblxuY29uc3QgUkVfQ0hBUlNFVCA9IC9eY2hhcnNldCQvaVxuXG5VcmxFbmNvZGVkLmRldGVjdCA9IC9eYXBwbGljYXRpb25cXC94LXd3dy1mb3JtLXVybGVuY29kZWQvaVxuZnVuY3Rpb24gVXJsRW5jb2RlZCAoYm95LCBjZmcpIHtcbiAgY29uc3QgbGltaXRzID0gY2ZnLmxpbWl0c1xuICBjb25zdCBwYXJzZWRDb25UeXBlID0gY2ZnLnBhcnNlZENvblR5cGVcbiAgdGhpcy5ib3kgPSBib3lcblxuICB0aGlzLmZpZWxkU2l6ZUxpbWl0ID0gZ2V0TGltaXQobGltaXRzLCAnZmllbGRTaXplJywgMSAqIDEwMjQgKiAxMDI0KVxuICB0aGlzLmZpZWxkTmFtZVNpemVMaW1pdCA9IGdldExpbWl0KGxpbWl0cywgJ2ZpZWxkTmFtZVNpemUnLCAxMDApXG4gIHRoaXMuZmllbGRzTGltaXQgPSBnZXRMaW1pdChsaW1pdHMsICdmaWVsZHMnLCBJbmZpbml0eSlcblxuICBsZXQgY2hhcnNldFxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gcGFyc2VkQ29uVHlwZS5sZW5ndGg7IGkgPCBsZW47ICsraSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXZhclxuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZENvblR5cGVbaV0pICYmXG4gICAgICAgIFJFX0NIQVJTRVQudGVzdChwYXJzZWRDb25UeXBlW2ldWzBdKSkge1xuICAgICAgY2hhcnNldCA9IHBhcnNlZENvblR5cGVbaV1bMV0udG9Mb3dlckNhc2UoKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoY2hhcnNldCA9PT0gdW5kZWZpbmVkKSB7IGNoYXJzZXQgPSBjZmcuZGVmQ2hhcnNldCB8fCAndXRmOCcgfVxuXG4gIHRoaXMuZGVjb2RlciA9IG5ldyBEZWNvZGVyKClcbiAgdGhpcy5jaGFyc2V0ID0gY2hhcnNldFxuICB0aGlzLl9maWVsZHMgPSAwXG4gIHRoaXMuX3N0YXRlID0gJ2tleSdcbiAgdGhpcy5fY2hlY2tpbmdCeXRlcyA9IHRydWVcbiAgdGhpcy5fYnl0ZXNLZXkgPSAwXG4gIHRoaXMuX2J5dGVzVmFsID0gMFxuICB0aGlzLl9rZXkgPSAnJ1xuICB0aGlzLl92YWwgPSAnJ1xuICB0aGlzLl9rZXlUcnVuYyA9IGZhbHNlXG4gIHRoaXMuX3ZhbFRydW5jID0gZmFsc2VcbiAgdGhpcy5faGl0TGltaXQgPSBmYWxzZVxufVxuXG5VcmxFbmNvZGVkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhLCBjYikge1xuICBpZiAodGhpcy5fZmllbGRzID09PSB0aGlzLmZpZWxkc0xpbWl0KSB7XG4gICAgaWYgKCF0aGlzLmJveS5oaXRGaWVsZHNMaW1pdCkge1xuICAgICAgdGhpcy5ib3kuaGl0RmllbGRzTGltaXQgPSB0cnVlXG4gICAgICB0aGlzLmJveS5lbWl0KCdmaWVsZHNMaW1pdCcpXG4gICAgfVxuICAgIHJldHVybiBjYigpXG4gIH1cblxuICBsZXQgaWR4ZXE7IGxldCBpZHhhbXA7IGxldCBpOyBsZXQgcCA9IDA7IGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoXG5cbiAgd2hpbGUgKHAgPCBsZW4pIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09ICdrZXknKSB7XG4gICAgICBpZHhlcSA9IGlkeGFtcCA9IHVuZGVmaW5lZFxuICAgICAgZm9yIChpID0gcDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tpbmdCeXRlcykgeyArK3AgfVxuICAgICAgICBpZiAoZGF0YVtpXSA9PT0gMHgzRC8qID0gKi8pIHtcbiAgICAgICAgICBpZHhlcSA9IGlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFbaV0gPT09IDB4MjYvKiAmICovKSB7XG4gICAgICAgICAgaWR4YW1wID0gaVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2NoZWNraW5nQnl0ZXMgJiYgdGhpcy5fYnl0ZXNLZXkgPT09IHRoaXMuZmllbGROYW1lU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgdGhpcy5faGl0TGltaXQgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jaGVja2luZ0J5dGVzKSB7ICsrdGhpcy5fYnl0ZXNLZXkgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaWR4ZXEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBrZXkgd2l0aCBhc3NpZ25tZW50XG4gICAgICAgIGlmIChpZHhlcSA+IHApIHsgdGhpcy5fa2V5ICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwLCBpZHhlcSkpIH1cbiAgICAgICAgdGhpcy5fc3RhdGUgPSAndmFsJ1xuXG4gICAgICAgIHRoaXMuX2hpdExpbWl0ID0gZmFsc2VcbiAgICAgICAgdGhpcy5fY2hlY2tpbmdCeXRlcyA9IHRydWVcbiAgICAgICAgdGhpcy5fdmFsID0gJydcbiAgICAgICAgdGhpcy5fYnl0ZXNWYWwgPSAwXG4gICAgICAgIHRoaXMuX3ZhbFRydW5jID0gZmFsc2VcbiAgICAgICAgdGhpcy5kZWNvZGVyLnJlc2V0KClcblxuICAgICAgICBwID0gaWR4ZXEgKyAxXG4gICAgICB9IGVsc2UgaWYgKGlkeGFtcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGtleSB3aXRoIG5vIGFzc2lnbm1lbnRcbiAgICAgICAgKyt0aGlzLl9maWVsZHNcbiAgICAgICAgbGV0IGtleTsgY29uc3Qga2V5VHJ1bmMgPSB0aGlzLl9rZXlUcnVuY1xuICAgICAgICBpZiAoaWR4YW1wID4gcCkgeyBrZXkgPSAodGhpcy5fa2V5ICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwLCBpZHhhbXApKSkgfSBlbHNlIHsga2V5ID0gdGhpcy5fa2V5IH1cblxuICAgICAgICB0aGlzLl9oaXRMaW1pdCA9IGZhbHNlXG4gICAgICAgIHRoaXMuX2NoZWNraW5nQnl0ZXMgPSB0cnVlXG4gICAgICAgIHRoaXMuX2tleSA9ICcnXG4gICAgICAgIHRoaXMuX2J5dGVzS2V5ID0gMFxuICAgICAgICB0aGlzLl9rZXlUcnVuYyA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGVjb2Rlci5yZXNldCgpXG5cbiAgICAgICAgaWYgKGtleS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmJveS5lbWl0KCdmaWVsZCcsIGRlY29kZVRleHQoa2V5LCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAga2V5VHJ1bmMsXG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHAgPSBpZHhhbXAgKyAxXG4gICAgICAgIGlmICh0aGlzLl9maWVsZHMgPT09IHRoaXMuZmllbGRzTGltaXQpIHsgcmV0dXJuIGNiKCkgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9oaXRMaW1pdCkge1xuICAgICAgICAvLyB3ZSBtYXkgbm90IGhhdmUgaGl0IHRoZSBhY3R1YWwgbGltaXQgaWYgdGhlcmUgYXJlIGVuY29kZWQgYnl0ZXMuLi5cbiAgICAgICAgaWYgKGkgPiBwKSB7IHRoaXMuX2tleSArPSB0aGlzLmRlY29kZXIud3JpdGUoZGF0YS50b1N0cmluZygnYmluYXJ5JywgcCwgaSkpIH1cbiAgICAgICAgcCA9IGlcbiAgICAgICAgaWYgKCh0aGlzLl9ieXRlc0tleSA9IHRoaXMuX2tleS5sZW5ndGgpID09PSB0aGlzLmZpZWxkTmFtZVNpemVMaW1pdCkge1xuICAgICAgICAgIC8vIHllcCwgd2UgYWN0dWFsbHkgZGlkIGhpdCB0aGUgbGltaXRcbiAgICAgICAgICB0aGlzLl9jaGVja2luZ0J5dGVzID0gZmFsc2VcbiAgICAgICAgICB0aGlzLl9rZXlUcnVuYyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHAgPCBsZW4pIHsgdGhpcy5fa2V5ICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwKSkgfVxuICAgICAgICBwID0gbGVuXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkeGFtcCA9IHVuZGVmaW5lZFxuICAgICAgZm9yIChpID0gcDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tpbmdCeXRlcykgeyArK3AgfVxuICAgICAgICBpZiAoZGF0YVtpXSA9PT0gMHgyNi8qICYgKi8pIHtcbiAgICAgICAgICBpZHhhbXAgPSBpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fY2hlY2tpbmdCeXRlcyAmJiB0aGlzLl9ieXRlc1ZhbCA9PT0gdGhpcy5maWVsZFNpemVMaW1pdCkge1xuICAgICAgICAgIHRoaXMuX2hpdExpbWl0ID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY2hlY2tpbmdCeXRlcykgeyArK3RoaXMuX2J5dGVzVmFsIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlkeGFtcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICsrdGhpcy5fZmllbGRzXG4gICAgICAgIGlmIChpZHhhbXAgPiBwKSB7IHRoaXMuX3ZhbCArPSB0aGlzLmRlY29kZXIud3JpdGUoZGF0YS50b1N0cmluZygnYmluYXJ5JywgcCwgaWR4YW1wKSkgfVxuICAgICAgICB0aGlzLmJveS5lbWl0KCdmaWVsZCcsIGRlY29kZVRleHQodGhpcy5fa2V5LCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgICAgICBkZWNvZGVUZXh0KHRoaXMuX3ZhbCwgJ2JpbmFyeScsIHRoaXMuY2hhcnNldCksXG4gICAgICAgICAgdGhpcy5fa2V5VHJ1bmMsXG4gICAgICAgICAgdGhpcy5fdmFsVHJ1bmMpXG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ2tleSdcblxuICAgICAgICB0aGlzLl9oaXRMaW1pdCA9IGZhbHNlXG4gICAgICAgIHRoaXMuX2NoZWNraW5nQnl0ZXMgPSB0cnVlXG4gICAgICAgIHRoaXMuX2tleSA9ICcnXG4gICAgICAgIHRoaXMuX2J5dGVzS2V5ID0gMFxuICAgICAgICB0aGlzLl9rZXlUcnVuYyA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGVjb2Rlci5yZXNldCgpXG5cbiAgICAgICAgcCA9IGlkeGFtcCArIDFcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcyA9PT0gdGhpcy5maWVsZHNMaW1pdCkgeyByZXR1cm4gY2IoKSB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2hpdExpbWl0KSB7XG4gICAgICAgIC8vIHdlIG1heSBub3QgaGF2ZSBoaXQgdGhlIGFjdHVhbCBsaW1pdCBpZiB0aGVyZSBhcmUgZW5jb2RlZCBieXRlcy4uLlxuICAgICAgICBpZiAoaSA+IHApIHsgdGhpcy5fdmFsICs9IHRoaXMuZGVjb2Rlci53cml0ZShkYXRhLnRvU3RyaW5nKCdiaW5hcnknLCBwLCBpKSkgfVxuICAgICAgICBwID0gaVxuICAgICAgICBpZiAoKHRoaXMuX3ZhbCA9PT0gJycgJiYgdGhpcy5maWVsZFNpemVMaW1pdCA9PT0gMCkgfHxcbiAgICAgICAgICAgICh0aGlzLl9ieXRlc1ZhbCA9IHRoaXMuX3ZhbC5sZW5ndGgpID09PSB0aGlzLmZpZWxkU2l6ZUxpbWl0KSB7XG4gICAgICAgICAgLy8geWVwLCB3ZSBhY3R1YWxseSBkaWQgaGl0IHRoZSBsaW1pdFxuICAgICAgICAgIHRoaXMuX2NoZWNraW5nQnl0ZXMgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuX3ZhbFRydW5jID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocCA8IGxlbikgeyB0aGlzLl92YWwgKz0gdGhpcy5kZWNvZGVyLndyaXRlKGRhdGEudG9TdHJpbmcoJ2JpbmFyeScsIHApKSB9XG4gICAgICAgIHAgPSBsZW5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2IoKVxufVxuXG5VcmxFbmNvZGVkLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmJveS5fZG9uZSkgeyByZXR1cm4gfVxuXG4gIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ2tleScgJiYgdGhpcy5fa2V5Lmxlbmd0aCA+IDApIHtcbiAgICB0aGlzLmJveS5lbWl0KCdmaWVsZCcsIGRlY29kZVRleHQodGhpcy5fa2V5LCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgICcnLFxuICAgICAgdGhpcy5fa2V5VHJ1bmMsXG4gICAgICBmYWxzZSlcbiAgfSBlbHNlIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ3ZhbCcpIHtcbiAgICB0aGlzLmJveS5lbWl0KCdmaWVsZCcsIGRlY29kZVRleHQodGhpcy5fa2V5LCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgIGRlY29kZVRleHQodGhpcy5fdmFsLCAnYmluYXJ5JywgdGhpcy5jaGFyc2V0KSxcbiAgICAgIHRoaXMuX2tleVRydW5jLFxuICAgICAgdGhpcy5fdmFsVHJ1bmMpXG4gIH1cbiAgdGhpcy5ib3kuX2RvbmUgPSB0cnVlXG4gIHRoaXMuYm95LmVtaXQoJ2ZpbmlzaCcpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gVXJsRW5jb2RlZFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBXcml0YWJsZVN0cmVhbSA9IHJlcXVpcmUoJ25vZGU6c3RyZWFtJykuV3JpdGFibGVcbmNvbnN0IHsgaW5oZXJpdHMgfSA9IHJlcXVpcmUoJ25vZGU6dXRpbCcpXG5jb25zdCBEaWNlciA9IHJlcXVpcmUoJy4uL2RlcHMvZGljZXIvbGliL0RpY2VyJylcblxuY29uc3QgTXVsdGlwYXJ0UGFyc2VyID0gcmVxdWlyZSgnLi90eXBlcy9tdWx0aXBhcnQnKVxuY29uc3QgVXJsZW5jb2RlZFBhcnNlciA9IHJlcXVpcmUoJy4vdHlwZXMvdXJsZW5jb2RlZCcpXG5jb25zdCBwYXJzZVBhcmFtcyA9IHJlcXVpcmUoJy4vdXRpbHMvcGFyc2VQYXJhbXMnKVxuXG5mdW5jdGlvbiBCdXNib3kgKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1c2JveSkpIHsgcmV0dXJuIG5ldyBCdXNib3kob3B0cykgfVxuXG4gIGlmICh0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCdXNib3kgZXhwZWN0ZWQgYW4gb3B0aW9ucy1PYmplY3QuJylcbiAgfVxuICBpZiAodHlwZW9mIG9wdHMuaGVhZGVycyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCdXNib3kgZXhwZWN0ZWQgYW4gb3B0aW9ucy1PYmplY3Qgd2l0aCBoZWFkZXJzLWF0dHJpYnV0ZS4nKVxuICB9XG4gIGlmICh0eXBlb2Ygb3B0cy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdNaXNzaW5nIENvbnRlbnQtVHlwZS1oZWFkZXIuJylcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBoZWFkZXJzLFxuICAgIC4uLnN0cmVhbU9wdGlvbnNcbiAgfSA9IG9wdHNcblxuICB0aGlzLm9wdHMgPSB7XG4gICAgYXV0b0Rlc3Ryb3k6IGZhbHNlLFxuICAgIC4uLnN0cmVhbU9wdGlvbnNcbiAgfVxuICBXcml0YWJsZVN0cmVhbS5jYWxsKHRoaXMsIHRoaXMub3B0cylcblxuICB0aGlzLl9kb25lID0gZmFsc2VcbiAgdGhpcy5fcGFyc2VyID0gdGhpcy5nZXRQYXJzZXJCeUhlYWRlcnMoaGVhZGVycylcbiAgdGhpcy5fZmluaXNoZWQgPSBmYWxzZVxufVxuaW5oZXJpdHMoQnVzYm95LCBXcml0YWJsZVN0cmVhbSlcblxuQnVzYm95LnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gKGV2KSB7XG4gIGlmIChldiA9PT0gJ2ZpbmlzaCcpIHtcbiAgICBpZiAoIXRoaXMuX2RvbmUpIHtcbiAgICAgIHRoaXMuX3BhcnNlcj8uZW5kKClcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAodGhpcy5fZmluaXNoZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLl9maW5pc2hlZCA9IHRydWVcbiAgfVxuICBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuZW1pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1c2JveS5wcm90b3R5cGUuZ2V0UGFyc2VyQnlIZWFkZXJzID0gZnVuY3Rpb24gKGhlYWRlcnMpIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VQYXJhbXMoaGVhZGVyc1snY29udGVudC10eXBlJ10pXG5cbiAgY29uc3QgY2ZnID0ge1xuICAgIGRlZkNoYXJzZXQ6IHRoaXMub3B0cy5kZWZDaGFyc2V0LFxuICAgIGZpbGVId206IHRoaXMub3B0cy5maWxlSHdtLFxuICAgIGhlYWRlcnMsXG4gICAgaGlnaFdhdGVyTWFyazogdGhpcy5vcHRzLmhpZ2hXYXRlck1hcmssXG4gICAgaXNQYXJ0QUZpbGU6IHRoaXMub3B0cy5pc1BhcnRBRmlsZSxcbiAgICBsaW1pdHM6IHRoaXMub3B0cy5saW1pdHMsXG4gICAgcGFyc2VkQ29uVHlwZTogcGFyc2VkLFxuICAgIHByZXNlcnZlUGF0aDogdGhpcy5vcHRzLnByZXNlcnZlUGF0aFxuICB9XG5cbiAgaWYgKE11bHRpcGFydFBhcnNlci5kZXRlY3QudGVzdChwYXJzZWRbMF0pKSB7XG4gICAgcmV0dXJuIG5ldyBNdWx0aXBhcnRQYXJzZXIodGhpcywgY2ZnKVxuICB9XG4gIGlmIChVcmxlbmNvZGVkUGFyc2VyLmRldGVjdC50ZXN0KHBhcnNlZFswXSkpIHtcbiAgICByZXR1cm4gbmV3IFVybGVuY29kZWRQYXJzZXIodGhpcywgY2ZnKVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgQ29udGVudC1UeXBlLicpXG59XG5cbkJ1c2JveS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5fcGFyc2VyLndyaXRlKGNodW5rLCBjYilcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCdXNib3lcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBCdXNib3lcbm1vZHVsZS5leHBvcnRzLkJ1c2JveSA9IEJ1c2JveVxuXG5tb2R1bGUuZXhwb3J0cy5EaWNlciA9IERpY2VyXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgTWVzc2FnZUNoYW5uZWwsIHJlY2VpdmVNZXNzYWdlT25Qb3J0IH0gPSByZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpXG5cbmNvbnN0IGNvcnNTYWZlTGlzdGVkTWV0aG9kcyA9IFsnR0VUJywgJ0hFQUQnLCAnUE9TVCddXG5jb25zdCBjb3JzU2FmZUxpc3RlZE1ldGhvZHNTZXQgPSBuZXcgU2V0KGNvcnNTYWZlTGlzdGVkTWV0aG9kcylcblxuY29uc3QgbnVsbEJvZHlTdGF0dXMgPSBbMTAxLCAyMDQsIDIwNSwgMzA0XVxuXG5jb25zdCByZWRpcmVjdFN0YXR1cyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cbmNvbnN0IHJlZGlyZWN0U3RhdHVzU2V0ID0gbmV3IFNldChyZWRpcmVjdFN0YXR1cylcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Jsb2NrLWJhZC1wb3J0XG5jb25zdCBiYWRQb3J0cyA9IFtcbiAgJzEnLCAnNycsICc5JywgJzExJywgJzEzJywgJzE1JywgJzE3JywgJzE5JywgJzIwJywgJzIxJywgJzIyJywgJzIzJywgJzI1JywgJzM3JywgJzQyJywgJzQzJywgJzUzJywgJzY5JywgJzc3JywgJzc5JyxcbiAgJzg3JywgJzk1JywgJzEwMScsICcxMDInLCAnMTAzJywgJzEwNCcsICcxMDknLCAnMTEwJywgJzExMScsICcxMTMnLCAnMTE1JywgJzExNycsICcxMTknLCAnMTIzJywgJzEzNScsICcxMzcnLFxuICAnMTM5JywgJzE0MycsICcxNjEnLCAnMTc5JywgJzM4OScsICc0MjcnLCAnNDY1JywgJzUxMicsICc1MTMnLCAnNTE0JywgJzUxNScsICc1MjYnLCAnNTMwJywgJzUzMScsICc1MzInLFxuICAnNTQwJywgJzU0OCcsICc1NTQnLCAnNTU2JywgJzU2MycsICc1ODcnLCAnNjAxJywgJzYzNicsICc5ODknLCAnOTkwJywgJzk5MycsICc5OTUnLCAnMTcxOScsICcxNzIwJywgJzE3MjMnLFxuICAnMjA0OScsICczNjU5JywgJzQwNDUnLCAnNTA2MCcsICc1MDYxJywgJzYwMDAnLCAnNjU2NicsICc2NjY1JywgJzY2NjYnLCAnNjY2NycsICc2NjY4JywgJzY2NjknLCAnNjY5NycsXG4gICcxMDA4MCdcbl1cblxuY29uc3QgYmFkUG9ydHNTZXQgPSBuZXcgU2V0KGJhZFBvcnRzKVxuXG4vLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLXJlZmVycmVyLXBvbGljeS8jcmVmZXJyZXItcG9saWNpZXNcbmNvbnN0IHJlZmVycmVyUG9saWN5ID0gW1xuICAnJyxcbiAgJ25vLXJlZmVycmVyJyxcbiAgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJyxcbiAgJ3NhbWUtb3JpZ2luJyxcbiAgJ29yaWdpbicsXG4gICdzdHJpY3Qtb3JpZ2luJyxcbiAgJ29yaWdpbi13aGVuLWNyb3NzLW9yaWdpbicsXG4gICdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJyxcbiAgJ3Vuc2FmZS11cmwnXG5dXG5jb25zdCByZWZlcnJlclBvbGljeVNldCA9IG5ldyBTZXQocmVmZXJyZXJQb2xpY3kpXG5cbmNvbnN0IHJlcXVlc3RSZWRpcmVjdCA9IFsnZm9sbG93JywgJ21hbnVhbCcsICdlcnJvciddXG5cbmNvbnN0IHNhZmVNZXRob2RzID0gWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1RSQUNFJ11cbmNvbnN0IHNhZmVNZXRob2RzU2V0ID0gbmV3IFNldChzYWZlTWV0aG9kcylcblxuY29uc3QgcmVxdWVzdE1vZGUgPSBbJ25hdmlnYXRlJywgJ3NhbWUtb3JpZ2luJywgJ25vLWNvcnMnLCAnY29ycyddXG5cbmNvbnN0IHJlcXVlc3RDcmVkZW50aWFscyA9IFsnb21pdCcsICdzYW1lLW9yaWdpbicsICdpbmNsdWRlJ11cblxuY29uc3QgcmVxdWVzdENhY2hlID0gW1xuICAnZGVmYXVsdCcsXG4gICduby1zdG9yZScsXG4gICdyZWxvYWQnLFxuICAnbm8tY2FjaGUnLFxuICAnZm9yY2UtY2FjaGUnLFxuICAnb25seS1pZi1jYWNoZWQnXG5dXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0LWJvZHktaGVhZGVyLW5hbWVcbmNvbnN0IHJlcXVlc3RCb2R5SGVhZGVyID0gW1xuICAnY29udGVudC1lbmNvZGluZycsXG4gICdjb250ZW50LWxhbmd1YWdlJyxcbiAgJ2NvbnRlbnQtbG9jYXRpb24nLFxuICAnY29udGVudC10eXBlJyxcbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8yMDIxXG4gIC8vICdDb250ZW50LUxlbmd0aCcgaXMgYSBmb3JiaWRkZW4gaGVhZGVyIG5hbWUsIHdoaWNoIGlzIHR5cGljYWxseVxuICAvLyByZW1vdmVkIGluIHRoZSBIZWFkZXJzIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB1bmRpY2kgZG9lc24ndFxuICAvLyBmaWx0ZXIgb3V0IGhlYWRlcnMsIHNvIHdlIGFkZCBpdCBoZXJlLlxuICAnY29udGVudC1sZW5ndGgnXG5dXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNlbnVtZGVmLXJlcXVlc3RkdXBsZXhcbmNvbnN0IHJlcXVlc3REdXBsZXggPSBbXG4gICdoYWxmJ1xuXVxuXG4vLyBodHRwOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmb3JiaWRkZW4tbWV0aG9kXG5jb25zdCBmb3JiaWRkZW5NZXRob2RzID0gWydDT05ORUNUJywgJ1RSQUNFJywgJ1RSQUNLJ11cbmNvbnN0IGZvcmJpZGRlbk1ldGhvZHNTZXQgPSBuZXcgU2V0KGZvcmJpZGRlbk1ldGhvZHMpXG5cbmNvbnN0IHN1YnJlc291cmNlID0gW1xuICAnYXVkaW8nLFxuICAnYXVkaW93b3JrbGV0JyxcbiAgJ2ZvbnQnLFxuICAnaW1hZ2UnLFxuICAnbWFuaWZlc3QnLFxuICAncGFpbnR3b3JrbGV0JyxcbiAgJ3NjcmlwdCcsXG4gICdzdHlsZScsXG4gICd0cmFjaycsXG4gICd2aWRlbycsXG4gICd4c2x0JyxcbiAgJydcbl1cbmNvbnN0IHN1YnJlc291cmNlU2V0ID0gbmV3IFNldChzdWJyZXNvdXJjZSlcblxuLyoqIEB0eXBlIHtnbG9iYWxUaGlzWydET01FeGNlcHRpb24nXX0gKi9cbmNvbnN0IERPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uID8/ICgoKSA9PiB7XG4gIC8vIERPTUV4Y2VwdGlvbiB3YXMgb25seSBtYWRlIGEgZ2xvYmFsIGluIE5vZGUgdjE3LjAuMCxcbiAgLy8gYnV0IGZldGNoIHN1cHBvcnRzID49IHYxNi44LlxuICB0cnkge1xuICAgIGF0b2IoJ34nKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGVycikuY29uc3RydWN0b3JcbiAgfVxufSkoKVxuXG5sZXQgY2hhbm5lbFxuXG4vKiogQHR5cGUge2dsb2JhbFRoaXNbJ3N0cnVjdHVyZWRDbG9uZSddfSAqL1xuY29uc3Qgc3RydWN0dXJlZENsb25lID1cbiAgZ2xvYmFsVGhpcy5zdHJ1Y3R1cmVkQ2xvbmUgPz9cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjI3YWUyNGRjYzQyNTFiYWQ3MjZkOWQ4NGJhZjY3OGQxZjcwN2ZlZC9saWIvaW50ZXJuYWwvc3RydWN0dXJlZF9jbG9uZS5qc1xuICAvLyBzdHJ1Y3R1cmVkQ2xvbmUgd2FzIGFkZGVkIGluIHYxNy4wLjAsIGJ1dCBmZXRjaCBzdXBwb3J0cyB2MTYuOFxuICBmdW5jdGlvbiBzdHJ1Y3R1cmVkQ2xvbmUgKHZhbHVlLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgYXJndW1lbnQnKVxuICAgIH1cblxuICAgIGlmICghY2hhbm5lbCkge1xuICAgICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpXG4gICAgfVxuICAgIGNoYW5uZWwucG9ydDEudW5yZWYoKVxuICAgIGNoYW5uZWwucG9ydDIudW5yZWYoKVxuICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UodmFsdWUsIG9wdGlvbnM/LnRyYW5zZmVyKVxuICAgIHJldHVybiByZWNlaXZlTWVzc2FnZU9uUG9ydChjaGFubmVsLnBvcnQyKS5tZXNzYWdlXG4gIH1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIERPTUV4Y2VwdGlvbixcbiAgc3RydWN0dXJlZENsb25lLFxuICBzdWJyZXNvdXJjZSxcbiAgZm9yYmlkZGVuTWV0aG9kcyxcbiAgcmVxdWVzdEJvZHlIZWFkZXIsXG4gIHJlZmVycmVyUG9saWN5LFxuICByZXF1ZXN0UmVkaXJlY3QsXG4gIHJlcXVlc3RNb2RlLFxuICByZXF1ZXN0Q3JlZGVudGlhbHMsXG4gIHJlcXVlc3RDYWNoZSxcbiAgcmVkaXJlY3RTdGF0dXMsXG4gIGNvcnNTYWZlTGlzdGVkTWV0aG9kcyxcbiAgbnVsbEJvZHlTdGF0dXMsXG4gIHNhZmVNZXRob2RzLFxuICBiYWRQb3J0cyxcbiAgcmVxdWVzdER1cGxleCxcbiAgc3VicmVzb3VyY2VTZXQsXG4gIGJhZFBvcnRzU2V0LFxuICByZWRpcmVjdFN0YXR1c1NldCxcbiAgY29yc1NhZmVMaXN0ZWRNZXRob2RzU2V0LFxuICBzYWZlTWV0aG9kc1NldCxcbiAgZm9yYmlkZGVuTWV0aG9kc1NldCxcbiAgcmVmZXJyZXJQb2xpY3lTZXRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLy8gSW4gY2FzZSBvZiBicmVha2luZyBjaGFuZ2VzLCBpbmNyZWFzZSB0aGUgdmVyc2lvblxuLy8gbnVtYmVyIHRvIGF2b2lkIGNvbmZsaWN0cy5cbmNvbnN0IGdsb2JhbE9yaWdpbiA9IFN5bWJvbC5mb3IoJ3VuZGljaS5nbG9iYWxPcmlnaW4uMScpXG5cbmZ1bmN0aW9uIGdldEdsb2JhbE9yaWdpbiAoKSB7XG4gIHJldHVybiBnbG9iYWxUaGlzW2dsb2JhbE9yaWdpbl1cbn1cblxuZnVuY3Rpb24gc2V0R2xvYmFsT3JpZ2luIChuZXdPcmlnaW4pIHtcbiAgaWYgKG5ld09yaWdpbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGdsb2JhbE9yaWdpbiwge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgcGFyc2VkVVJMID0gbmV3IFVSTChuZXdPcmlnaW4pXG5cbiAgaWYgKHBhcnNlZFVSTC5wcm90b2NvbCAhPT0gJ2h0dHA6JyAmJiBwYXJzZWRVUkwucHJvdG9jb2wgIT09ICdodHRwczonKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgT25seSBodHRwICYgaHR0cHMgdXJscyBhcmUgYWxsb3dlZCwgcmVjZWl2ZWQgJHtwYXJzZWRVUkwucHJvdG9jb2x9YClcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBnbG9iYWxPcmlnaW4sIHtcbiAgICB2YWx1ZTogcGFyc2VkVVJMLFxuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldEdsb2JhbE9yaWdpbixcbiAgc2V0R2xvYmFsT3JpZ2luXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgcmVkaXJlY3RTdGF0dXNTZXQsIHJlZmVycmVyUG9saWN5U2V0OiByZWZlcnJlclBvbGljeVRva2VucywgYmFkUG9ydHNTZXQgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsgZ2V0R2xvYmFsT3JpZ2luIH0gPSByZXF1aXJlKCcuL2dsb2JhbCcpXG5jb25zdCB7IHBlcmZvcm1hbmNlIH0gPSByZXF1aXJlKCdwZXJmX2hvb2tzJylcbmNvbnN0IHsgaXNCbG9iTGlrZSwgdG9VU1ZTdHJpbmcsIFJlYWRhYmxlU3RyZWFtRnJvbSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IGlzVWludDhBcnJheSB9ID0gcmVxdWlyZSgndXRpbC90eXBlcycpXG5cbmxldCBzdXBwb3J0ZWRIYXNoZXMgPSBbXVxuXG4vLyBodHRwczovL25vZGVqcy5vcmcvYXBpL2NyeXB0by5odG1sI2RldGVybWluaW5nLWlmLWNyeXB0by1zdXBwb3J0LWlzLXVuYXZhaWxhYmxlXG4vKiogQHR5cGUge2ltcG9ydCgnY3J5cHRvJyl8dW5kZWZpbmVkfSAqL1xubGV0IGNyeXB0b1xuXG50cnkge1xuICBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKVxuICBjb25zdCBwb3NzaWJsZVJlbGV2YW50SGFzaGVzID0gWydzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMiddXG4gIHN1cHBvcnRlZEhhc2hlcyA9IGNyeXB0by5nZXRIYXNoZXMoKS5maWx0ZXIoKGhhc2gpID0+IHBvc3NpYmxlUmVsZXZhbnRIYXNoZXMuaW5jbHVkZXMoaGFzaCkpXG4vKiBjOCBpZ25vcmUgbmV4dCAzICovXG59IGNhdGNoIHtcbn1cblxuZnVuY3Rpb24gcmVzcG9uc2VVUkwgKHJlc3BvbnNlKSB7XG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXNwb25zZXNcbiAgLy8gQSByZXNwb25zZSBoYXMgYW4gYXNzb2NpYXRlZCBVUkwuIEl0IGlzIGEgcG9pbnRlciB0byB0aGUgbGFzdCBVUkxcbiAgLy8gaW4gcmVzcG9uc2VcdTIwMTlzIFVSTCBsaXN0IGFuZCBudWxsIGlmIHJlc3BvbnNlXHUyMDE5cyBVUkwgbGlzdCBpcyBlbXB0eS5cbiAgY29uc3QgdXJsTGlzdCA9IHJlc3BvbnNlLnVybExpc3RcbiAgY29uc3QgbGVuZ3RoID0gdXJsTGlzdC5sZW5ndGhcbiAgcmV0dXJuIGxlbmd0aCA9PT0gMCA/IG51bGwgOiB1cmxMaXN0W2xlbmd0aCAtIDFdLnRvU3RyaW5nKClcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtbG9jYXRpb24tdXJsXG5mdW5jdGlvbiByZXNwb25zZUxvY2F0aW9uVVJMIChyZXNwb25zZSwgcmVxdWVzdEZyYWdtZW50KSB7XG4gIC8vIDEuIElmIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgbm90IGEgcmVkaXJlY3Qgc3RhdHVzLCB0aGVuIHJldHVybiBudWxsLlxuICBpZiAoIXJlZGlyZWN0U3RhdHVzU2V0LmhhcyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIDIuIExldCBsb2NhdGlvbiBiZSB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgaGVhZGVyIGxpc3QgdmFsdWVzIGdpdmVuXG4gIC8vIGBMb2NhdGlvbmAgYW5kIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgbGV0IGxvY2F0aW9uID0gcmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdsb2NhdGlvbicpXG5cbiAgLy8gMy4gSWYgbG9jYXRpb24gaXMgYSBoZWFkZXIgdmFsdWUsIHRoZW4gc2V0IGxvY2F0aW9uIHRvIHRoZSByZXN1bHQgb2ZcbiAgLy8gICAgcGFyc2luZyBsb2NhdGlvbiB3aXRoIHJlc3BvbnNlXHUyMDE5cyBVUkwuXG4gIGlmIChsb2NhdGlvbiAhPT0gbnVsbCAmJiBpc1ZhbGlkSGVhZGVyVmFsdWUobG9jYXRpb24pKSB7XG4gICAgbG9jYXRpb24gPSBuZXcgVVJMKGxvY2F0aW9uLCByZXNwb25zZVVSTChyZXNwb25zZSkpXG4gIH1cblxuICAvLyA0LiBJZiBsb2NhdGlvbiBpcyBhIFVSTCB3aG9zZSBmcmFnbWVudCBpcyBudWxsLCB0aGVuIHNldCBsb2NhdGlvblx1MjAxOXNcbiAgLy8gZnJhZ21lbnQgdG8gcmVxdWVzdEZyYWdtZW50LlxuICBpZiAobG9jYXRpb24gJiYgIWxvY2F0aW9uLmhhc2gpIHtcbiAgICBsb2NhdGlvbi5oYXNoID0gcmVxdWVzdEZyYWdtZW50XG4gIH1cblxuICAvLyA1LiBSZXR1cm4gbG9jYXRpb24uXG4gIHJldHVybiBsb2NhdGlvblxufVxuXG4vKiogQHJldHVybnMge1VSTH0gKi9cbmZ1bmN0aW9uIHJlcXVlc3RDdXJyZW50VVJMIChyZXF1ZXN0KSB7XG4gIHJldHVybiByZXF1ZXN0LnVybExpc3RbcmVxdWVzdC51cmxMaXN0Lmxlbmd0aCAtIDFdXG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RCYWRQb3J0IChyZXF1ZXN0KSB7XG4gIC8vIDEuIExldCB1cmwgYmUgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkwuXG4gIGNvbnN0IHVybCA9IHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpXG5cbiAgLy8gMi4gSWYgdXJsXHUyMDE5cyBzY2hlbWUgaXMgYW4gSFRUUChTKSBzY2hlbWUgYW5kIHVybFx1MjAxOXMgcG9ydCBpcyBhIGJhZCBwb3J0LFxuICAvLyB0aGVuIHJldHVybiBibG9ja2VkLlxuICBpZiAodXJsSXNIdHRwSHR0cHNTY2hlbWUodXJsKSAmJiBiYWRQb3J0c1NldC5oYXModXJsLnBvcnQpKSB7XG4gICAgcmV0dXJuICdibG9ja2VkJ1xuICB9XG5cbiAgLy8gMy4gUmV0dXJuIGFsbG93ZWQuXG4gIHJldHVybiAnYWxsb3dlZCdcbn1cblxuZnVuY3Rpb24gaXNFcnJvckxpa2UgKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgRXJyb3IgfHwgKFxuICAgIG9iamVjdD8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdFcnJvcicgfHxcbiAgICBvYmplY3Q/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnRE9NRXhjZXB0aW9uJ1xuICApXG59XG5cbi8vIENoZWNrIHdoZXRoZXIgfHN0YXR1c1RleHR8IGlzIGEgQnl0ZVN0cmluZyBhbmRcbi8vIG1hdGNoZXMgdGhlIFJlYXNvbi1QaHJhc2UgdG9rZW4gcHJvZHVjdGlvbi5cbi8vIFJGQyAyNjE2OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjYxNlxuLy8gUkZDIDcyMzA6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwXG4vLyBcInJlYXNvbi1waHJhc2UgPSAqKCBIVEFCIC8gU1AgLyBWQ0hBUiAvIG9icy10ZXh0IClcIlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Nocm9taXVtL2Nocm9taXVtL2Jsb2IvOTQuMC40NjA0LjEvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9mZXRjaC9yZXNwb25zZS5jYyNMMTE2XG5mdW5jdGlvbiBpc1ZhbGlkUmVhc29uUGhyYXNlIChzdGF0dXNUZXh0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdHVzVGV4dC5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGMgPSBzdGF0dXNUZXh0LmNoYXJDb2RlQXQoaSlcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICAoXG4gICAgICAgICAgYyA9PT0gMHgwOSB8fCAvLyBIVEFCXG4gICAgICAgICAgKGMgPj0gMHgyMCAmJiBjIDw9IDB4N2UpIHx8IC8vIFNQIC8gVkNIQVJcbiAgICAgICAgICAoYyA+PSAweDgwICYmIGMgPD0gMHhmZilcbiAgICAgICAgKSAvLyBvYnMtdGV4dFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMi42XG4gKiBAcGFyYW0ge251bWJlcn0gY1xuICovXG5mdW5jdGlvbiBpc1Rva2VuQ2hhckNvZGUgKGMpIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAweDIyOlxuICAgIGNhc2UgMHgyODpcbiAgICBjYXNlIDB4Mjk6XG4gICAgY2FzZSAweDJjOlxuICAgIGNhc2UgMHgyZjpcbiAgICBjYXNlIDB4M2E6XG4gICAgY2FzZSAweDNiOlxuICAgIGNhc2UgMHgzYzpcbiAgICBjYXNlIDB4M2Q6XG4gICAgY2FzZSAweDNlOlxuICAgIGNhc2UgMHgzZjpcbiAgICBjYXNlIDB4NDA6XG4gICAgY2FzZSAweDViOlxuICAgIGNhc2UgMHg1YzpcbiAgICBjYXNlIDB4NWQ6XG4gICAgY2FzZSAweDdiOlxuICAgIGNhc2UgMHg3ZDpcbiAgICAgIC8vIERRVU9URSBhbmQgXCIoKSwvOjs8PT4/QFtcXF17fVwiXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gVkNIQVIgJXgyMS03RVxuICAgICAgcmV0dXJuIGMgPj0gMHgyMSAmJiBjIDw9IDB4N2VcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyYWN0ZXJzXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRIVFRQVG9rZW4gKGNoYXJhY3RlcnMpIHtcbiAgaWYgKGNoYXJhY3RlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCFpc1Rva2VuQ2hhckNvZGUoY2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaGVhZGVyLW5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwb3RlbnRpYWxWYWx1ZVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkSGVhZGVyTmFtZSAocG90ZW50aWFsVmFsdWUpIHtcbiAgcmV0dXJuIGlzVmFsaWRIVFRQVG9rZW4ocG90ZW50aWFsVmFsdWUpXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaGVhZGVyLXZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gcG90ZW50aWFsVmFsdWVcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEhlYWRlclZhbHVlIChwb3RlbnRpYWxWYWx1ZSkge1xuICAvLyAtIEhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIEhUVFAgdGFiIG9yIHNwYWNlIGJ5dGVzLlxuICAvLyAtIENvbnRhaW5zIG5vIDB4MDAgKE5VTCkgb3IgSFRUUCBuZXdsaW5lIGJ5dGVzLlxuICBpZiAoXG4gICAgcG90ZW50aWFsVmFsdWUuc3RhcnRzV2l0aCgnXFx0JykgfHxcbiAgICBwb3RlbnRpYWxWYWx1ZS5zdGFydHNXaXRoKCcgJykgfHxcbiAgICBwb3RlbnRpYWxWYWx1ZS5lbmRzV2l0aCgnXFx0JykgfHxcbiAgICBwb3RlbnRpYWxWYWx1ZS5lbmRzV2l0aCgnICcpXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKFxuICAgIHBvdGVudGlhbFZhbHVlLmluY2x1ZGVzKCdcXDAnKSB8fFxuICAgIHBvdGVudGlhbFZhbHVlLmluY2x1ZGVzKCdcXHInKSB8fFxuICAgIHBvdGVudGlhbFZhbHVlLmluY2x1ZGVzKCdcXG4nKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtcmVmZXJyZXItcG9saWN5LyNzZXQtcmVxdWVzdHMtcmVmZXJyZXItcG9saWN5LW9uLXJlZGlyZWN0XG5mdW5jdGlvbiBzZXRSZXF1ZXN0UmVmZXJyZXJQb2xpY3lPblJlZGlyZWN0IChyZXF1ZXN0LCBhY3R1YWxSZXNwb25zZSkge1xuICAvLyAgR2l2ZW4gYSByZXF1ZXN0IHJlcXVlc3QgYW5kIGEgcmVzcG9uc2UgYWN0dWFsUmVzcG9uc2UsIHRoaXMgYWxnb3JpdGhtXG4gIC8vICB1cGRhdGVzIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeSBhY2NvcmRpbmcgdG8gdGhlIFJlZmVycmVyLVBvbGljeVxuICAvLyAgaGVhZGVyIChpZiBhbnkpIGluIGFjdHVhbFJlc3BvbnNlLlxuXG4gIC8vIDEuIExldCBwb2xpY3kgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgXHUwMEE3IDguMSBQYXJzZSBhIHJlZmVycmVyIHBvbGljeVxuICAvLyBmcm9tIGEgUmVmZXJyZXItUG9saWN5IGhlYWRlciBvbiBhY3R1YWxSZXNwb25zZS5cblxuICAvLyA4LjEgUGFyc2UgYSByZWZlcnJlciBwb2xpY3kgZnJvbSBhIFJlZmVycmVyLVBvbGljeSBoZWFkZXJcbiAgLy8gMS4gTGV0IHBvbGljeS10b2tlbnMgYmUgdGhlIHJlc3VsdCBvZiBleHRyYWN0aW5nIGhlYWRlciBsaXN0IHZhbHVlcyBnaXZlbiBgUmVmZXJyZXItUG9saWN5YCBhbmQgcmVzcG9uc2VcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBjb25zdCB7IGhlYWRlcnNMaXN0IH0gPSBhY3R1YWxSZXNwb25zZVxuICAvLyAyLiBMZXQgcG9saWN5IGJlIHRoZSBlbXB0eSBzdHJpbmcuXG4gIC8vIDMuIEZvciBlYWNoIHRva2VuIGluIHBvbGljeS10b2tlbnMsIGlmIHRva2VuIGlzIGEgcmVmZXJyZXIgcG9saWN5IGFuZCB0b2tlbiBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgdGhlbiBzZXQgcG9saWN5IHRvIHRva2VuLlxuICAvLyA0LiBSZXR1cm4gcG9saWN5LlxuICBjb25zdCBwb2xpY3lIZWFkZXIgPSAoaGVhZGVyc0xpc3QuZ2V0KCdyZWZlcnJlci1wb2xpY3knKSA/PyAnJykuc3BsaXQoJywnKVxuXG4gIC8vIE5vdGU6IEFzIHRoZSByZWZlcnJlci1wb2xpY3kgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcG9saWNpZXNcbiAgLy8gc2VwYXJhdGVkIGJ5IGNvbW1hLCB3ZSBuZWVkIHRvIGxvb3AgdGhyb3VnaCBhbGwgb2YgdGhlbVxuICAvLyBhbmQgcGljayB0aGUgZmlyc3QgdmFsaWQgb25lLlxuICAvLyBSZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcnJlci1Qb2xpY3kjc3BlY2lmeV9hX2ZhbGxiYWNrX3BvbGljeVxuICBsZXQgcG9saWN5ID0gJydcbiAgaWYgKHBvbGljeUhlYWRlci5sZW5ndGggPiAwKSB7XG4gICAgLy8gVGhlIHJpZ2h0LW1vc3QgcG9saWN5IHRha2VzIHByZWNlZGVuY2UuXG4gICAgLy8gVGhlIGxlZnQtbW9zdCBwb2xpY3kgaXMgdGhlIGZhbGxiYWNrLlxuICAgIGZvciAobGV0IGkgPSBwb2xpY3lIZWFkZXIubGVuZ3RoOyBpICE9PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IHRva2VuID0gcG9saWN5SGVhZGVyW2kgLSAxXS50cmltKClcbiAgICAgIGlmIChyZWZlcnJlclBvbGljeVRva2Vucy5oYXModG9rZW4pKSB7XG4gICAgICAgIHBvbGljeSA9IHRva2VuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gMi4gSWYgcG9saWN5IGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyByZWZlcnJlciBwb2xpY3kgdG8gcG9saWN5LlxuICBpZiAocG9saWN5ICE9PSAnJykge1xuICAgIHJlcXVlc3QucmVmZXJyZXJQb2xpY3kgPSBwb2xpY3lcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeS1jaGVja1xuZnVuY3Rpb24gY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNoZWNrICgpIHtcbiAgLy8gVE9ET1xuICByZXR1cm4gJ2FsbG93ZWQnXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWNvcnMtY2hlY2tcbmZ1bmN0aW9uIGNvcnNDaGVjayAoKSB7XG4gIC8vIFRPRE9cbiAgcmV0dXJuICdzdWNjZXNzJ1xufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC10YW8tY2hlY2tcbmZ1bmN0aW9uIFRBT0NoZWNrICgpIHtcbiAgLy8gVE9ET1xuICByZXR1cm4gJ3N1Y2Nlc3MnXG59XG5cbmZ1bmN0aW9uIGFwcGVuZEZldGNoTWV0YWRhdGEgKGh0dHBSZXF1ZXN0KSB7XG4gIC8vICBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWZldGNoLW1ldGFkYXRhLyNzZWMtZmV0Y2gtZGVzdC1oZWFkZXJcbiAgLy8gIFRPRE9cblxuICAvLyAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1mZXRjaC1tZXRhZGF0YS8jc2VjLWZldGNoLW1vZGUtaGVhZGVyXG5cbiAgLy8gIDEuIEFzc2VydDogclx1MjAxOXMgdXJsIGlzIGEgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkgVVJMLlxuICAvLyAgVE9ET1xuXG4gIC8vICAyLiBMZXQgaGVhZGVyIGJlIGEgU3RydWN0dXJlZCBIZWFkZXIgd2hvc2UgdmFsdWUgaXMgYSB0b2tlbi5cbiAgbGV0IGhlYWRlciA9IG51bGxcblxuICAvLyAgMy4gU2V0IGhlYWRlclx1MjAxOXMgdmFsdWUgdG8gclx1MjAxOXMgbW9kZS5cbiAgaGVhZGVyID0gaHR0cFJlcXVlc3QubW9kZVxuXG4gIC8vICA0LiBTZXQgYSBzdHJ1Y3R1cmVkIGZpZWxkIHZhbHVlIGBTZWMtRmV0Y2gtTW9kZWAvaGVhZGVyIGluIHJcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5zZXQoJ3NlYy1mZXRjaC1tb2RlJywgaGVhZGVyKVxuXG4gIC8vICBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWZldGNoLW1ldGFkYXRhLyNzZWMtZmV0Y2gtc2l0ZS1oZWFkZXJcbiAgLy8gIFRPRE9cblxuICAvLyAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1mZXRjaC1tZXRhZGF0YS8jc2VjLWZldGNoLXVzZXItaGVhZGVyXG4gIC8vICBUT0RPXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNhcHBlbmQtYS1yZXF1ZXN0LW9yaWdpbi1oZWFkZXJcbmZ1bmN0aW9uIGFwcGVuZFJlcXVlc3RPcmlnaW5IZWFkZXIgKHJlcXVlc3QpIHtcbiAgLy8gMS4gTGV0IHNlcmlhbGl6ZWRPcmlnaW4gYmUgdGhlIHJlc3VsdCBvZiBieXRlLXNlcmlhbGl6aW5nIGEgcmVxdWVzdCBvcmlnaW4gd2l0aCByZXF1ZXN0LlxuICBsZXQgc2VyaWFsaXplZE9yaWdpbiA9IHJlcXVlc3Qub3JpZ2luXG5cbiAgLy8gMi4gSWYgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgaXMgXCJjb3JzXCIgb3IgcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcIndlYnNvY2tldFwiLCB0aGVuIGFwcGVuZCAoYE9yaWdpbmAsIHNlcmlhbGl6ZWRPcmlnaW4pIHRvIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAocmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnY29ycycgfHwgcmVxdWVzdC5tb2RlID09PSAnd2Vic29ja2V0Jykge1xuICAgIGlmIChzZXJpYWxpemVkT3JpZ2luKSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnb3JpZ2luJywgc2VyaWFsaXplZE9yaWdpbilcbiAgICB9XG5cbiAgLy8gMy4gT3RoZXJ3aXNlLCBpZiByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgbmVpdGhlciBgR0VUYCBub3IgYEhFQURgLCB0aGVuOlxuICB9IGVsc2UgaWYgKHJlcXVlc3QubWV0aG9kICE9PSAnR0VUJyAmJiByZXF1ZXN0Lm1ldGhvZCAhPT0gJ0hFQUQnKSB7XG4gICAgLy8gMS4gU3dpdGNoIG9uIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeTpcbiAgICBzd2l0Y2ggKHJlcXVlc3QucmVmZXJyZXJQb2xpY3kpIHtcbiAgICAgIGNhc2UgJ25vLXJlZmVycmVyJzpcbiAgICAgICAgLy8gU2V0IHNlcmlhbGl6ZWRPcmlnaW4gdG8gYG51bGxgLlxuICAgICAgICBzZXJpYWxpemVkT3JpZ2luID0gbnVsbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUnOlxuICAgICAgY2FzZSAnc3RyaWN0LW9yaWdpbic6XG4gICAgICBjYXNlICdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJzpcbiAgICAgICAgLy8gSWYgcmVxdWVzdFx1MjAxOXMgb3JpZ2luIGlzIGEgdHVwbGUgb3JpZ2luLCBpdHMgc2NoZW1lIGlzIFwiaHR0cHNcIiwgYW5kIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBzY2hlbWUgaXMgbm90IFwiaHR0cHNcIiwgdGhlbiBzZXQgc2VyaWFsaXplZE9yaWdpbiB0byBgbnVsbGAuXG4gICAgICAgIGlmIChyZXF1ZXN0Lm9yaWdpbiAmJiB1cmxIYXNIdHRwc1NjaGVtZShyZXF1ZXN0Lm9yaWdpbikgJiYgIXVybEhhc0h0dHBzU2NoZW1lKHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpKSkge1xuICAgICAgICAgIHNlcmlhbGl6ZWRPcmlnaW4gPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NhbWUtb3JpZ2luJzpcbiAgICAgICAgLy8gSWYgcmVxdWVzdFx1MjAxOXMgb3JpZ2luIGlzIG5vdCBzYW1lIG9yaWdpbiB3aXRoIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBvcmlnaW4sIHRoZW4gc2V0IHNlcmlhbGl6ZWRPcmlnaW4gdG8gYG51bGxgLlxuICAgICAgICBpZiAoIXNhbWVPcmlnaW4ocmVxdWVzdCwgcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdCkpKSB7XG4gICAgICAgICAgc2VyaWFsaXplZE9yaWdpbiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZy5cbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZE9yaWdpbikge1xuICAgICAgLy8gMi4gQXBwZW5kIChgT3JpZ2luYCwgc2VyaWFsaXplZE9yaWdpbikgdG8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnb3JpZ2luJywgc2VyaWFsaXplZE9yaWdpbilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29hcnNlbmVkU2hhcmVkQ3VycmVudFRpbWUgKGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5KSB7XG4gIC8vIFRPRE9cbiAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjcmVhdGUtYW4tb3BhcXVlLXRpbWluZy1pbmZvXG5mdW5jdGlvbiBjcmVhdGVPcGFxdWVUaW1pbmdJbmZvICh0aW1pbmdJbmZvKSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnRUaW1lOiB0aW1pbmdJbmZvLnN0YXJ0VGltZSA/PyAwLFxuICAgIHJlZGlyZWN0U3RhcnRUaW1lOiAwLFxuICAgIHJlZGlyZWN0RW5kVGltZTogMCxcbiAgICBwb3N0UmVkaXJlY3RTdGFydFRpbWU6IHRpbWluZ0luZm8uc3RhcnRUaW1lID8/IDAsXG4gICAgZmluYWxTZXJ2aWNlV29ya2VyU3RhcnRUaW1lOiAwLFxuICAgIGZpbmFsTmV0d29ya1Jlc3BvbnNlU3RhcnRUaW1lOiAwLFxuICAgIGZpbmFsTmV0d29ya1JlcXVlc3RTdGFydFRpbWU6IDAsXG4gICAgZW5kVGltZTogMCxcbiAgICBlbmNvZGVkQm9keVNpemU6IDAsXG4gICAgZGVjb2RlZEJvZHlTaXplOiAwLFxuICAgIGZpbmFsQ29ubmVjdGlvblRpbWluZ0luZm86IG51bGxcbiAgfVxufVxuXG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNwb2xpY3ktY29udGFpbmVyXG5mdW5jdGlvbiBtYWtlUG9saWN5Q29udGFpbmVyICgpIHtcbiAgLy8gTm90ZTogdGhlIGZldGNoIHNwZWMgZG9lc24ndCBtYWtlIHVzZSBvZiBlbWJlZGRlciBwb2xpY3kgb3IgQ1NQIGxpc3RcbiAgcmV0dXJuIHtcbiAgICByZWZlcnJlclBvbGljeTogJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY2xvbmUtYS1wb2xpY3ktY29udGFpbmVyXG5mdW5jdGlvbiBjbG9uZVBvbGljeUNvbnRhaW5lciAocG9saWN5Q29udGFpbmVyKSB7XG4gIHJldHVybiB7XG4gICAgcmVmZXJyZXJQb2xpY3k6IHBvbGljeUNvbnRhaW5lci5yZWZlcnJlclBvbGljeVxuICB9XG59XG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtcmVmZXJyZXItcG9saWN5LyNkZXRlcm1pbmUtcmVxdWVzdHMtcmVmZXJyZXJcbmZ1bmN0aW9uIGRldGVybWluZVJlcXVlc3RzUmVmZXJyZXIgKHJlcXVlc3QpIHtcbiAgLy8gMS4gTGV0IHBvbGljeSBiZSByZXF1ZXN0J3MgcmVmZXJyZXIgcG9saWN5LlxuICBjb25zdCBwb2xpY3kgPSByZXF1ZXN0LnJlZmVycmVyUG9saWN5XG5cbiAgLy8gTm90ZTogcG9saWN5IGNhbm5vdCAoc2hvdWxkbid0KSBiZSBudWxsIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAgYXNzZXJ0KHBvbGljeSlcblxuICAvLyAyLiBMZXQgZW52aXJvbm1lbnQgYmUgcmVxdWVzdFx1MjAxOXMgY2xpZW50LlxuXG4gIGxldCByZWZlcnJlclNvdXJjZSA9IG51bGxcblxuICAvLyAzLiBTd2l0Y2ggb24gcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXI6XG4gIGlmIChyZXF1ZXN0LnJlZmVycmVyID09PSAnY2xpZW50Jykge1xuICAgIC8vIE5vdGU6IG5vZGUgaXNuJ3QgYSBicm93c2VyIGFuZCBkb2Vzbid0IGltcGxlbWVudCBkb2N1bWVudC9pZnJhbWVzLFxuICAgIC8vIHNvIHdlIGJ5cGFzcyB0aGlzIHN0ZXAgYW5kIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duLlxuXG4gICAgY29uc3QgZ2xvYmFsT3JpZ2luID0gZ2V0R2xvYmFsT3JpZ2luKClcblxuICAgIGlmICghZ2xvYmFsT3JpZ2luIHx8IGdsb2JhbE9yaWdpbi5vcmlnaW4gPT09ICdudWxsJykge1xuICAgICAgcmV0dXJuICduby1yZWZlcnJlcidcbiAgICB9XG5cbiAgICAvLyBub3RlOiB3ZSBuZWVkIHRvIGNsb25lIGl0IGFzIGl0J3MgbXV0YXRlZFxuICAgIHJlZmVycmVyU291cmNlID0gbmV3IFVSTChnbG9iYWxPcmlnaW4pXG4gIH0gZWxzZSBpZiAocmVxdWVzdC5yZWZlcnJlciBpbnN0YW5jZW9mIFVSTCkge1xuICAgIC8vIExldCByZWZlcnJlclNvdXJjZSBiZSByZXF1ZXN0XHUyMDE5cyByZWZlcnJlci5cbiAgICByZWZlcnJlclNvdXJjZSA9IHJlcXVlc3QucmVmZXJyZXJcbiAgfVxuXG4gIC8vIDQuIExldCByZXF1ZXN0XHUyMDE5cyByZWZlcnJlclVSTCBiZSB0aGUgcmVzdWx0IG9mIHN0cmlwcGluZyByZWZlcnJlclNvdXJjZSBmb3JcbiAgLy8gICAgdXNlIGFzIGEgcmVmZXJyZXIuXG4gIGxldCByZWZlcnJlclVSTCA9IHN0cmlwVVJMRm9yUmVmZXJyZXIocmVmZXJyZXJTb3VyY2UpXG5cbiAgLy8gNS4gTGV0IHJlZmVycmVyT3JpZ2luIGJlIHRoZSByZXN1bHQgb2Ygc3RyaXBwaW5nIHJlZmVycmVyU291cmNlIGZvciB1c2UgYXNcbiAgLy8gICAgYSByZWZlcnJlciwgd2l0aCB0aGUgb3JpZ2luLW9ubHkgZmxhZyBzZXQgdG8gdHJ1ZS5cbiAgY29uc3QgcmVmZXJyZXJPcmlnaW4gPSBzdHJpcFVSTEZvclJlZmVycmVyKHJlZmVycmVyU291cmNlLCB0cnVlKVxuXG4gIC8vIDYuIElmIHRoZSByZXN1bHQgb2Ygc2VyaWFsaXppbmcgcmVmZXJyZXJVUkwgaXMgYSBzdHJpbmcgd2hvc2UgbGVuZ3RoIGlzXG4gIC8vICAgIGdyZWF0ZXIgdGhhbiA0MDk2LCBzZXQgcmVmZXJyZXJVUkwgdG8gcmVmZXJyZXJPcmlnaW4uXG4gIGlmIChyZWZlcnJlclVSTC50b1N0cmluZygpLmxlbmd0aCA+IDQwOTYpIHtcbiAgICByZWZlcnJlclVSTCA9IHJlZmVycmVyT3JpZ2luXG4gIH1cblxuICBjb25zdCBhcmVTYW1lT3JpZ2luID0gc2FtZU9yaWdpbihyZXF1ZXN0LCByZWZlcnJlclVSTClcbiAgY29uc3QgaXNOb25Qb3RlbnRpYWxseVRydXN0V29ydGh5ID0gaXNVUkxQb3RlbnRpYWxseVRydXN0d29ydGh5KHJlZmVycmVyVVJMKSAmJlxuICAgICFpc1VSTFBvdGVudGlhbGx5VHJ1c3R3b3J0aHkocmVxdWVzdC51cmwpXG5cbiAgLy8gOC4gRXhlY3V0ZSB0aGUgc3dpdGNoIHN0YXRlbWVudHMgY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWUgb2YgcG9saWN5OlxuICBzd2l0Y2ggKHBvbGljeSkge1xuICAgIGNhc2UgJ29yaWdpbic6IHJldHVybiByZWZlcnJlck9yaWdpbiAhPSBudWxsID8gcmVmZXJyZXJPcmlnaW4gOiBzdHJpcFVSTEZvclJlZmVycmVyKHJlZmVycmVyU291cmNlLCB0cnVlKVxuICAgIGNhc2UgJ3Vuc2FmZS11cmwnOiByZXR1cm4gcmVmZXJyZXJVUkxcbiAgICBjYXNlICdzYW1lLW9yaWdpbic6XG4gICAgICByZXR1cm4gYXJlU2FtZU9yaWdpbiA/IHJlZmVycmVyT3JpZ2luIDogJ25vLXJlZmVycmVyJ1xuICAgIGNhc2UgJ29yaWdpbi13aGVuLWNyb3NzLW9yaWdpbic6XG4gICAgICByZXR1cm4gYXJlU2FtZU9yaWdpbiA/IHJlZmVycmVyVVJMIDogcmVmZXJyZXJPcmlnaW5cbiAgICBjYXNlICdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJzoge1xuICAgICAgY29uc3QgY3VycmVudFVSTCA9IHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpXG5cbiAgICAgIC8vIDEuIElmIHRoZSBvcmlnaW4gb2YgcmVmZXJyZXJVUkwgYW5kIHRoZSBvcmlnaW4gb2YgcmVxdWVzdFx1MjAxOXMgY3VycmVudFxuICAgICAgLy8gICAgVVJMIGFyZSB0aGUgc2FtZSwgdGhlbiByZXR1cm4gcmVmZXJyZXJVUkwuXG4gICAgICBpZiAoc2FtZU9yaWdpbihyZWZlcnJlclVSTCwgY3VycmVudFVSTCkpIHtcbiAgICAgICAgcmV0dXJuIHJlZmVycmVyVVJMXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIHJlZmVycmVyVVJMIGlzIGEgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkgVVJMIGFuZCByZXF1ZXN0XHUyMDE5c1xuICAgICAgLy8gICAgY3VycmVudCBVUkwgaXMgbm90IGEgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkgVVJMLCB0aGVuIHJldHVybiBub1xuICAgICAgLy8gICAgcmVmZXJyZXIuXG4gICAgICBpZiAoaXNVUkxQb3RlbnRpYWxseVRydXN0d29ydGh5KHJlZmVycmVyVVJMKSAmJiAhaXNVUkxQb3RlbnRpYWxseVRydXN0d29ydGh5KGN1cnJlbnRVUkwpKSB7XG4gICAgICAgIHJldHVybiAnbm8tcmVmZXJyZXInXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIFJldHVybiByZWZlcnJlck9yaWdpbi5cbiAgICAgIHJldHVybiByZWZlcnJlck9yaWdpblxuICAgIH1cbiAgICBjYXNlICdzdHJpY3Qtb3JpZ2luJzogLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgLyoqXG4gICAgICAgICAqIDEuIElmIHJlZmVycmVyVVJMIGlzIGEgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkgVVJMIGFuZFxuICAgICAgICAgKiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTCBpcyBub3QgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwsXG4gICAgICAgICAqIHRoZW4gcmV0dXJuIG5vIHJlZmVycmVyLlxuICAgICAgICAgKiAyLiBSZXR1cm4gcmVmZXJyZXJPcmlnaW5cbiAgICAgICAgKi9cbiAgICBjYXNlICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSc6IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIC8qKlxuICAgICAgICogMS4gSWYgcmVmZXJyZXJVUkwgaXMgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwgYW5kXG4gICAgICAgKiByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTCBpcyBub3QgYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwsXG4gICAgICAgKiB0aGVuIHJldHVybiBubyByZWZlcnJlci5cbiAgICAgICAqIDIuIFJldHVybiByZWZlcnJlck9yaWdpblxuICAgICAgKi9cblxuICAgIGRlZmF1bHQ6IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybiBpc05vblBvdGVudGlhbGx5VHJ1c3RXb3J0aHkgPyAnbm8tcmVmZXJyZXInIDogcmVmZXJyZXJPcmlnaW5cbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1wb2xpY3kvI3N0cmlwLXVybFxuICogQHBhcmFtIHtVUkx9IHVybFxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gb3JpZ2luT25seVxuICovXG5mdW5jdGlvbiBzdHJpcFVSTEZvclJlZmVycmVyICh1cmwsIG9yaWdpbk9ubHkpIHtcbiAgLy8gMS4gQXNzZXJ0OiB1cmwgaXMgYSBVUkwuXG4gIGFzc2VydCh1cmwgaW5zdGFuY2VvZiBVUkwpXG5cbiAgLy8gMi4gSWYgdXJsXHUyMDE5cyBzY2hlbWUgaXMgYSBsb2NhbCBzY2hlbWUsIHRoZW4gcmV0dXJuIG5vIHJlZmVycmVyLlxuICBpZiAodXJsLnByb3RvY29sID09PSAnZmlsZTonIHx8IHVybC5wcm90b2NvbCA9PT0gJ2Fib3V0OicgfHwgdXJsLnByb3RvY29sID09PSAnYmxhbms6Jykge1xuICAgIHJldHVybiAnbm8tcmVmZXJyZXInXG4gIH1cblxuICAvLyAzLiBTZXQgdXJsXHUyMDE5cyB1c2VybmFtZSB0byB0aGUgZW1wdHkgc3RyaW5nLlxuICB1cmwudXNlcm5hbWUgPSAnJ1xuXG4gIC8vIDQuIFNldCB1cmxcdTIwMTlzIHBhc3N3b3JkIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gIHVybC5wYXNzd29yZCA9ICcnXG5cbiAgLy8gNS4gU2V0IHVybFx1MjAxOXMgZnJhZ21lbnQgdG8gbnVsbC5cbiAgdXJsLmhhc2ggPSAnJ1xuXG4gIC8vIDYuIElmIHRoZSBvcmlnaW4tb25seSBmbGFnIGlzIHRydWUsIHRoZW46XG4gIGlmIChvcmlnaW5Pbmx5KSB7XG4gICAgLy8gMS4gU2V0IHVybFx1MjAxOXMgcGF0aCB0byBcdTAwQUIgdGhlIGVtcHR5IHN0cmluZyBcdTAwQkIuXG4gICAgdXJsLnBhdGhuYW1lID0gJydcblxuICAgIC8vIDIuIFNldCB1cmxcdTIwMTlzIHF1ZXJ5IHRvIG51bGwuXG4gICAgdXJsLnNlYXJjaCA9ICcnXG4gIH1cblxuICAvLyA3LiBSZXR1cm4gdXJsLlxuICByZXR1cm4gdXJsXG59XG5cbmZ1bmN0aW9uIGlzVVJMUG90ZW50aWFsbHlUcnVzdHdvcnRoeSAodXJsKSB7XG4gIGlmICghKHVybCBpbnN0YW5jZW9mIFVSTCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIGNoaWxkIG9mIGFib3V0LCByZXR1cm4gdHJ1ZVxuICBpZiAodXJsLmhyZWYgPT09ICdhYm91dDpibGFuaycgfHwgdXJsLmhyZWYgPT09ICdhYm91dDpzcmNkb2MnKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIElmIHNjaGVtZSBpcyBkYXRhLCByZXR1cm4gdHJ1ZVxuICBpZiAodXJsLnByb3RvY29sID09PSAnZGF0YTonKSByZXR1cm4gdHJ1ZVxuXG4gIC8vIElmIGZpbGUsIHJldHVybiB0cnVlXG4gIGlmICh1cmwucHJvdG9jb2wgPT09ICdmaWxlOicpIHJldHVybiB0cnVlXG5cbiAgcmV0dXJuIGlzT3JpZ2luUG90ZW50aWFsbHlUcnVzdHdvcnRoeSh1cmwub3JpZ2luKVxuXG4gIGZ1bmN0aW9uIGlzT3JpZ2luUG90ZW50aWFsbHlUcnVzdHdvcnRoeSAob3JpZ2luKSB7XG4gICAgLy8gSWYgb3JpZ2luIGlzIGV4cGxpY2l0bHkgbnVsbCwgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG9yaWdpbiA9PSBudWxsIHx8IG9yaWdpbiA9PT0gJ251bGwnKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IG9yaWdpbkFzVVJMID0gbmV3IFVSTChvcmlnaW4pXG5cbiAgICAvLyBJZiBzZWN1cmUsIHJldHVybiB0cnVlXG4gICAgaWYgKG9yaWdpbkFzVVJMLnByb3RvY29sID09PSAnaHR0cHM6JyB8fCBvcmlnaW5Bc1VSTC5wcm90b2NvbCA9PT0gJ3dzczonKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIElmIGxvY2FsaG9zdCBvciB2YXJpYW50cywgcmV0dXJuIHRydWVcbiAgICBpZiAoL14xMjcoPzpcXC5bMC05XSspezAsMn1cXC5bMC05XSskfF5cXFsoPzowKjopKj86PzAqMVxcXSQvLnRlc3Qob3JpZ2luQXNVUkwuaG9zdG5hbWUpIHx8XG4gICAgIChvcmlnaW5Bc1VSTC5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCcgfHwgb3JpZ2luQXNVUkwuaG9zdG5hbWUuaW5jbHVkZXMoJ2xvY2FsaG9zdC4nKSkgfHxcbiAgICAgKG9yaWdpbkFzVVJMLmhvc3RuYW1lLmVuZHNXaXRoKCcubG9jYWxob3N0JykpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIElmIGFueSBvdGhlciwgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtc3VicmVzb3VyY2UtaW50ZWdyaXR5LyNkb2VzLXJlc3BvbnNlLW1hdGNoLW1ldGFkYXRhbGlzdFxuICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlc1xuICogQHBhcmFtIHtzdHJpbmd9IG1ldGFkYXRhTGlzdFxuICovXG5mdW5jdGlvbiBieXRlc01hdGNoIChieXRlcywgbWV0YWRhdGFMaXN0KSB7XG4gIC8vIElmIG5vZGUgaXMgbm90IGJ1aWx0IHdpdGggT3BlblNTTCBzdXBwb3J0LCB3ZSBjYW5ub3QgY2hlY2tcbiAgLy8gYSByZXF1ZXN0J3MgaW50ZWdyaXR5LCBzbyBhbGxvdyBpdCBieSBkZWZhdWx0ICh0aGUgc3BlYyB3aWxsXG4gIC8vIGFsbG93IHJlcXVlc3RzIGlmIGFuIGludmFsaWQgaGFzaCBpcyBnaXZlbiwgYXMgcHJlY2VkZW5jZSkuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogb25seSBpZiBub2RlIGlzIGJ1aWx0IHdpdGggLS13aXRob3V0LXNzbCAqL1xuICBpZiAoY3J5cHRvID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gMS4gTGV0IHBhcnNlZE1ldGFkYXRhIGJlIHRoZSByZXN1bHQgb2YgcGFyc2luZyBtZXRhZGF0YUxpc3QuXG4gIGNvbnN0IHBhcnNlZE1ldGFkYXRhID0gcGFyc2VNZXRhZGF0YShtZXRhZGF0YUxpc3QpXG5cbiAgLy8gMi4gSWYgcGFyc2VkTWV0YWRhdGEgaXMgbm8gbWV0YWRhdGEsIHJldHVybiB0cnVlLlxuICBpZiAocGFyc2VkTWV0YWRhdGEgPT09ICdubyBtZXRhZGF0YScpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gMy4gSWYgcmVzcG9uc2UgaXMgbm90IGVsaWdpYmxlIGZvciBpbnRlZ3JpdHkgdmFsaWRhdGlvbiwgcmV0dXJuIGZhbHNlLlxuICAvLyBUT0RPXG5cbiAgLy8gNC4gSWYgcGFyc2VkTWV0YWRhdGEgaXMgdGhlIGVtcHR5IHNldCwgcmV0dXJuIHRydWUuXG4gIGlmIChwYXJzZWRNZXRhZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gNS4gTGV0IG1ldGFkYXRhIGJlIHRoZSByZXN1bHQgb2YgZ2V0dGluZyB0aGUgc3Ryb25nZXN0XG4gIC8vICAgIG1ldGFkYXRhIGZyb20gcGFyc2VkTWV0YWRhdGEuXG4gIGNvbnN0IHN0cm9uZ2VzdCA9IGdldFN0cm9uZ2VzdE1ldGFkYXRhKHBhcnNlZE1ldGFkYXRhKVxuICBjb25zdCBtZXRhZGF0YSA9IGZpbHRlck1ldGFkYXRhTGlzdEJ5QWxnb3JpdGhtKHBhcnNlZE1ldGFkYXRhLCBzdHJvbmdlc3QpXG5cbiAgLy8gNi4gRm9yIGVhY2ggaXRlbSBpbiBtZXRhZGF0YTpcbiAgZm9yIChjb25zdCBpdGVtIG9mIG1ldGFkYXRhKSB7XG4gICAgLy8gMS4gTGV0IGFsZ29yaXRobSBiZSB0aGUgYWxnIGNvbXBvbmVudCBvZiBpdGVtLlxuICAgIGNvbnN0IGFsZ29yaXRobSA9IGl0ZW0uYWxnb1xuXG4gICAgLy8gMi4gTGV0IGV4cGVjdGVkVmFsdWUgYmUgdGhlIHZhbCBjb21wb25lbnQgb2YgaXRlbS5cbiAgICBjb25zdCBleHBlY3RlZFZhbHVlID0gaXRlbS5oYXNoXG5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvY29tbWl0L2U0YzVjYzdhNWU0ODA5MzIyMDUyOGRmZGQxYzQwMTJkYzM4MzdhMGVcbiAgICAvLyBcImJlIGxpYmVyYWwgd2l0aCBwYWRkaW5nXCIuIFRoaXMgaXMgYW5ub3lpbmcsIGFuZCBpdCdzIG5vdCBldmVuIGluIHRoZSBzcGVjLlxuXG4gICAgLy8gMy4gTGV0IGFjdHVhbFZhbHVlIGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgYWxnb3JpdGhtIHRvIGJ5dGVzLlxuICAgIGxldCBhY3R1YWxWYWx1ZSA9IGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSkudXBkYXRlKGJ5dGVzKS5kaWdlc3QoJ2Jhc2U2NCcpXG5cbiAgICBpZiAoYWN0dWFsVmFsdWVbYWN0dWFsVmFsdWUubGVuZ3RoIC0gMV0gPT09ICc9Jykge1xuICAgICAgaWYgKGFjdHVhbFZhbHVlW2FjdHVhbFZhbHVlLmxlbmd0aCAtIDJdID09PSAnPScpIHtcbiAgICAgICAgYWN0dWFsVmFsdWUgPSBhY3R1YWxWYWx1ZS5zbGljZSgwLCAtMilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdHVhbFZhbHVlID0gYWN0dWFsVmFsdWUuc2xpY2UoMCwgLTEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNC4gSWYgYWN0dWFsVmFsdWUgaXMgYSBjYXNlLXNlbnNpdGl2ZSBtYXRjaCBmb3IgZXhwZWN0ZWRWYWx1ZSxcbiAgICAvLyAgICByZXR1cm4gdHJ1ZS5cbiAgICBpZiAoY29tcGFyZUJhc2U2NE1peGVkKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICAvLyA3LiBSZXR1cm4gZmFsc2UuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLXN1YnJlc291cmNlLWludGVncml0eS8jZ3JhbW1hcmRlZi1oYXNoLXdpdGgtb3B0aW9uc1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDIvI3NvdXJjZS1saXN0LXN5bnRheFxuLy8gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzUyMzQjYXBwZW5kaXgtQi4xXG5jb25zdCBwYXJzZUhhc2hXaXRoT3B0aW9ucyA9IC8oPzxhbGdvPnNoYTI1NnxzaGEzODR8c2hhNTEyKS0oKD88aGFzaD5bQS1aYS16MC05Ky9dK3xbQS1aYS16MC05Xy1dKyk9ezAsMn0oPzpcXHN8JCkoICtbIS1+XSopPyk/L2lcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtc3VicmVzb3VyY2UtaW50ZWdyaXR5LyNwYXJzZS1tZXRhZGF0YVxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGFkYXRhXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWV0YWRhdGEgKG1ldGFkYXRhKSB7XG4gIC8vIDEuIExldCByZXN1bHQgYmUgdGhlIGVtcHR5IHNldC5cbiAgLyoqIEB0eXBlIHt7IGFsZ286IHN0cmluZywgaGFzaDogc3RyaW5nIH1bXX0gKi9cbiAgY29uc3QgcmVzdWx0ID0gW11cblxuICAvLyAyLiBMZXQgZW1wdHkgYmUgZXF1YWwgdG8gdHJ1ZS5cbiAgbGV0IGVtcHR5ID0gdHJ1ZVxuXG4gIC8vIDMuIEZvciBlYWNoIHRva2VuIHJldHVybmVkIGJ5IHNwbGl0dGluZyBtZXRhZGF0YSBvbiBzcGFjZXM6XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgbWV0YWRhdGEuc3BsaXQoJyAnKSkge1xuICAgIC8vIDEuIFNldCBlbXB0eSB0byBmYWxzZS5cbiAgICBlbXB0eSA9IGZhbHNlXG5cbiAgICAvLyAyLiBQYXJzZSB0b2tlbiBhcyBhIGhhc2gtd2l0aC1vcHRpb25zLlxuICAgIGNvbnN0IHBhcnNlZFRva2VuID0gcGFyc2VIYXNoV2l0aE9wdGlvbnMuZXhlYyh0b2tlbilcblxuICAgIC8vIDMuIElmIHRva2VuIGRvZXMgbm90IHBhcnNlLCBjb250aW51ZSB0byB0aGUgbmV4dCB0b2tlbi5cbiAgICBpZiAoXG4gICAgICBwYXJzZWRUb2tlbiA9PT0gbnVsbCB8fFxuICAgICAgcGFyc2VkVG9rZW4uZ3JvdXBzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHBhcnNlZFRva2VuLmdyb3Vwcy5hbGdvID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIC8vIE5vdGU6IENocm9taXVtIGJsb2NrcyB0aGUgcmVxdWVzdCBhdCB0aGlzIHBvaW50LCBidXQgRmlyZWZveFxuICAgICAgLy8gZ2l2ZXMgYSB3YXJuaW5nIHRoYXQgYW4gaW52YWxpZCBpbnRlZ3JpdHkgd2FzIGdpdmVuLiBUaGVcbiAgICAgIC8vIGNvcnJlY3QgYmVoYXZpb3IgaXMgdG8gaWdub3JlIHRoZXNlLCBhbmQgc3Vic2VxdWVudGx5IG5vdFxuICAgICAgLy8gY2hlY2sgdGhlIGludGVncml0eSBvZiB0aGUgcmVzb3VyY2UuXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIDQuIExldCBhbGdvcml0aG0gYmUgdGhlIGhhc2gtYWxnbyBjb21wb25lbnQgb2YgdG9rZW4uXG4gICAgY29uc3QgYWxnb3JpdGhtID0gcGFyc2VkVG9rZW4uZ3JvdXBzLmFsZ28udG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gNS4gSWYgYWxnb3JpdGhtIGlzIGEgaGFzaCBmdW5jdGlvbiByZWNvZ25pemVkIGJ5IHRoZSB1c2VyXG4gICAgLy8gICAgYWdlbnQsIGFkZCB0aGUgcGFyc2VkIHRva2VuIHRvIHJlc3VsdC5cbiAgICBpZiAoc3VwcG9ydGVkSGFzaGVzLmluY2x1ZGVzKGFsZ29yaXRobSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHBhcnNlZFRva2VuLmdyb3VwcylcbiAgICB9XG4gIH1cblxuICAvLyA0LiBSZXR1cm4gbm8gbWV0YWRhdGEgaWYgZW1wdHkgaXMgdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiByZXN1bHQuXG4gIGlmIChlbXB0eSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiAnbm8gbWV0YWRhdGEnXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogQHBhcmFtIHt7IGFsZ286ICdzaGEyNTYnIHwgJ3NoYTM4NCcgfCAnc2hhNTEyJyB9W119IG1ldGFkYXRhTGlzdFxuICovXG5mdW5jdGlvbiBnZXRTdHJvbmdlc3RNZXRhZGF0YSAobWV0YWRhdGFMaXN0KSB7XG4gIC8vIExldCBhbGdvcml0aG0gYmUgdGhlIGFsZ28gY29tcG9uZW50IG9mIHRoZSBmaXJzdCBpdGVtIGluIG1ldGFkYXRhTGlzdC5cbiAgLy8gQ2FuIGJlIHNoYTI1NlxuICBsZXQgYWxnb3JpdGhtID0gbWV0YWRhdGFMaXN0WzBdLmFsZ29cbiAgLy8gSWYgdGhlIGFsZ29yaXRobSBpcyBzaGE1MTIsIHRoZW4gaXQgaXMgdGhlIHN0cm9uZ2VzdFxuICAvLyBhbmQgd2UgY2FuIHJldHVybiBpbW1lZGlhdGVseVxuICBpZiAoYWxnb3JpdGhtWzNdID09PSAnNScpIHtcbiAgICByZXR1cm4gYWxnb3JpdGhtXG4gIH1cblxuICBmb3IgKGxldCBpID0gMTsgaSA8IG1ldGFkYXRhTGlzdC5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gbWV0YWRhdGFMaXN0W2ldXG4gICAgLy8gSWYgdGhlIGFsZ29yaXRobSBpcyBzaGE1MTIsIHRoZW4gaXQgaXMgdGhlIHN0cm9uZ2VzdFxuICAgIC8vIGFuZCB3ZSBjYW4gYnJlYWsgdGhlIGxvb3AgaW1tZWRpYXRlbHlcbiAgICBpZiAobWV0YWRhdGEuYWxnb1szXSA9PT0gJzUnKSB7XG4gICAgICBhbGdvcml0aG0gPSAnc2hhNTEyJ1xuICAgICAgYnJlYWtcbiAgICAvLyBJZiB0aGUgYWxnb3JpdGhtIGlzIHNoYTM4NCwgdGhlbiBhIHBvdGVudGlhbCBzaGEyNTYgb3Igc2hhMzg0IGlzIGlnbm9yZWRcbiAgICB9IGVsc2UgaWYgKGFsZ29yaXRobVszXSA9PT0gJzMnKSB7XG4gICAgICBjb250aW51ZVxuICAgIC8vIGFsZ29yaXRobSBpcyBzaGEyNTYsIGNoZWNrIGlmIGFsZ29yaXRobSBpcyBzaGEzODQgYW5kIGlmIHNvLCBzZXQgaXQgYXNcbiAgICAvLyB0aGUgc3Ryb25nZXN0XG4gICAgfSBlbHNlIGlmIChtZXRhZGF0YS5hbGdvWzNdID09PSAnMycpIHtcbiAgICAgIGFsZ29yaXRobSA9ICdzaGEzODQnXG4gICAgfVxuICB9XG4gIHJldHVybiBhbGdvcml0aG1cbn1cblxuZnVuY3Rpb24gZmlsdGVyTWV0YWRhdGFMaXN0QnlBbGdvcml0aG0gKG1ldGFkYXRhTGlzdCwgYWxnb3JpdGhtKSB7XG4gIGlmIChtZXRhZGF0YUxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG1ldGFkYXRhTGlzdFxuICB9XG5cbiAgbGV0IHBvcyA9IDBcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXRhZGF0YUxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobWV0YWRhdGFMaXN0W2ldLmFsZ28gPT09IGFsZ29yaXRobSkge1xuICAgICAgbWV0YWRhdGFMaXN0W3BvcysrXSA9IG1ldGFkYXRhTGlzdFtpXVxuICAgIH1cbiAgfVxuXG4gIG1ldGFkYXRhTGlzdC5sZW5ndGggPSBwb3NcblxuICByZXR1cm4gbWV0YWRhdGFMaXN0XG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIGJhc2U2NCBzdHJpbmdzLCBhbGxvd2luZyBmb3IgYmFzZTY0dXJsXG4gKiBpbiB0aGUgc2Vjb25kIHN0cmluZy5cbiAqXG4qIEBwYXJhbSB7c3RyaW5nfSBhY3R1YWxWYWx1ZSBhbHdheXMgYmFzZTY0XG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwZWN0ZWRWYWx1ZSBiYXNlNjQgb3IgYmFzZTY0dXJsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJhc2U2NE1peGVkIChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSkge1xuICBpZiAoYWN0dWFsVmFsdWUubGVuZ3RoICE9PSBleHBlY3RlZFZhbHVlLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsVmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoYWN0dWFsVmFsdWVbaV0gIT09IGV4cGVjdGVkVmFsdWVbaV0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGFjdHVhbFZhbHVlW2ldID09PSAnKycgJiYgZXhwZWN0ZWRWYWx1ZVtpXSA9PT0gJy0nKSB8fFxuICAgICAgICAoYWN0dWFsVmFsdWVbaV0gPT09ICcvJyAmJiBleHBlY3RlZFZhbHVlW2ldID09PSAnXycpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy8jdXBncmFkZS1yZXF1ZXN0XG5mdW5jdGlvbiB0cnlVcGdyYWRlUmVxdWVzdFRvQVBvdGVudGlhbGx5VHJ1c3R3b3J0aHlVUkwgKHJlcXVlc3QpIHtcbiAgLy8gVE9ET1xufVxuXG4vKipcbiAqIEBsaW5rIHtodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNzYW1lLW9yaWdpbn1cbiAqIEBwYXJhbSB7VVJMfSBBXG4gKiBAcGFyYW0ge1VSTH0gQlxuICovXG5mdW5jdGlvbiBzYW1lT3JpZ2luIChBLCBCKSB7XG4gIC8vIDEuIElmIEEgYW5kIEIgYXJlIHRoZSBzYW1lIG9wYXF1ZSBvcmlnaW4sIHRoZW4gcmV0dXJuIHRydWUuXG4gIGlmIChBLm9yaWdpbiA9PT0gQi5vcmlnaW4gJiYgQS5vcmlnaW4gPT09ICdudWxsJykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyAyLiBJZiBBIGFuZCBCIGFyZSBib3RoIHR1cGxlIG9yaWdpbnMgYW5kIHRoZWlyIHNjaGVtZXMsXG4gIC8vICAgIGhvc3RzLCBhbmQgcG9ydCBhcmUgaWRlbnRpY2FsLCB0aGVuIHJldHVybiB0cnVlLlxuICBpZiAoQS5wcm90b2NvbCA9PT0gQi5wcm90b2NvbCAmJiBBLmhvc3RuYW1lID09PSBCLmhvc3RuYW1lICYmIEEucG9ydCA9PT0gQi5wb3J0KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIDMuIFJldHVybiBmYWxzZS5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlZmVycmVkUHJvbWlzZSAoKSB7XG4gIGxldCByZXNcbiAgbGV0IHJlalxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlcyA9IHJlc29sdmVcbiAgICByZWogPSByZWplY3RcbiAgfSlcblxuICByZXR1cm4geyBwcm9taXNlLCByZXNvbHZlOiByZXMsIHJlamVjdDogcmVqIH1cbn1cblxuZnVuY3Rpb24gaXNBYm9ydGVkIChmZXRjaFBhcmFtcykge1xuICByZXR1cm4gZmV0Y2hQYXJhbXMuY29udHJvbGxlci5zdGF0ZSA9PT0gJ2Fib3J0ZWQnXG59XG5cbmZ1bmN0aW9uIGlzQ2FuY2VsbGVkIChmZXRjaFBhcmFtcykge1xuICByZXR1cm4gZmV0Y2hQYXJhbXMuY29udHJvbGxlci5zdGF0ZSA9PT0gJ2Fib3J0ZWQnIHx8XG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5zdGF0ZSA9PT0gJ3Rlcm1pbmF0ZWQnXG59XG5cbmNvbnN0IG5vcm1hbGl6ZU1ldGhvZFJlY29yZCA9IHtcbiAgZGVsZXRlOiAnREVMRVRFJyxcbiAgREVMRVRFOiAnREVMRVRFJyxcbiAgZ2V0OiAnR0VUJyxcbiAgR0VUOiAnR0VUJyxcbiAgaGVhZDogJ0hFQUQnLFxuICBIRUFEOiAnSEVBRCcsXG4gIG9wdGlvbnM6ICdPUFRJT05TJyxcbiAgT1BUSU9OUzogJ09QVElPTlMnLFxuICBwb3N0OiAnUE9TVCcsXG4gIFBPU1Q6ICdQT1NUJyxcbiAgcHV0OiAnUFVUJyxcbiAgUFVUOiAnUFVUJ1xufVxuXG4vLyBOb3RlOiBvYmplY3QgcHJvdG90eXBlcyBzaG91bGQgbm90IGJlIGFibGUgdG8gYmUgcmVmZXJlbmNlZC4gZS5nLiBgT2JqZWN0I2hhc093blByb3BlcnR5YC5cbk9iamVjdC5zZXRQcm90b3R5cGVPZihub3JtYWxpemVNZXRob2RSZWNvcmQsIG51bGwpXG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1tZXRob2Qtbm9ybWFsaXplXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZCAobWV0aG9kKSB7XG4gIHJldHVybiBub3JtYWxpemVNZXRob2RSZWNvcmRbbWV0aG9kLnRvTG93ZXJDYXNlKCldID8/IG1ldGhvZFxufVxuXG4vLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jc2VyaWFsaXplLWEtamF2YXNjcmlwdC12YWx1ZS10by1hLWpzb24tc3RyaW5nXG5mdW5jdGlvbiBzZXJpYWxpemVKYXZhc2NyaXB0VmFsdWVUb0pTT05TdHJpbmcgKHZhbHVlKSB7XG4gIC8vIDEuIExldCByZXN1bHQgYmUgPyBDYWxsKCVKU09OLnN0cmluZ2lmeSUsIHVuZGVmaW5lZCwgXHUwMEFCIHZhbHVlIFx1MDBCQikuXG4gIGNvbnN0IHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuXG4gIC8vIDIuIElmIHJlc3VsdCBpcyB1bmRlZmluZWQsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZScpXG4gIH1cblxuICAvLyAzLiBBc3NlcnQ6IHJlc3VsdCBpcyBhIHN0cmluZy5cbiAgYXNzZXJ0KHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKVxuXG4gIC8vIDQuIFJldHVybiByZXN1bHQuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lMjVpdGVyYXRvcnByb3RvdHlwZSUyNS1vYmplY3RcbmNvbnN0IGVzSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpXG5cbi8qKlxuICogQHNlZSBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2Rmbi1pdGVyYXRvci1wcm90b3R5cGUtb2JqZWN0XG4gKiBAcGFyYW0geygpID0+IHVua25vd25bXX0gaXRlcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIG5hbWUgb2YgdGhlIGluc3RhbmNlXG4gKiBAcGFyYW0geydrZXknfCd2YWx1ZSd8J2tleSt2YWx1ZSd9IGtpbmRcbiAqL1xuZnVuY3Rpb24gbWFrZUl0ZXJhdG9yIChpdGVyYXRvciwgbmFtZSwga2luZCkge1xuICBjb25zdCBvYmplY3QgPSB7XG4gICAgaW5kZXg6IDAsXG4gICAga2luZCxcbiAgICB0YXJnZXQ6IGl0ZXJhdG9yXG4gIH1cblxuICBjb25zdCBpID0ge1xuICAgIG5leHQgKCkge1xuICAgICAgLy8gMS4gTGV0IGludGVyZmFjZSBiZSB0aGUgaW50ZXJmYWNlIGZvciB3aGljaCB0aGUgaXRlcmF0b3IgcHJvdG90eXBlIG9iamVjdCBleGlzdHMuXG5cbiAgICAgIC8vIDIuIExldCB0aGlzVmFsdWUgYmUgdGhlIHRoaXMgdmFsdWUuXG5cbiAgICAgIC8vIDMuIExldCBvYmplY3QgYmUgPyBUb09iamVjdCh0aGlzVmFsdWUpLlxuXG4gICAgICAvLyA0LiBJZiBvYmplY3QgaXMgYSBwbGF0Zm9ybSBvYmplY3QsIHRoZW4gcGVyZm9ybSBhIHNlY3VyaXR5XG4gICAgICAvLyAgICBjaGVjaywgcGFzc2luZzpcblxuICAgICAgLy8gNS4gSWYgb2JqZWN0IGlzIG5vdCBhIGRlZmF1bHQgaXRlcmF0b3Igb2JqZWN0IGZvciBpbnRlcmZhY2UsXG4gICAgICAvLyAgICB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSAhPT0gaSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIGAnbmV4dCcgY2FsbGVkIG9uIGFuIG9iamVjdCB0aGF0IGRvZXMgbm90IGltcGxlbWVudCBpbnRlcmZhY2UgJHtuYW1lfSBJdGVyYXRvci5gXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gNi4gTGV0IGluZGV4IGJlIG9iamVjdFx1MjAxOXMgaW5kZXguXG4gICAgICAvLyA3LiBMZXQga2luZCBiZSBvYmplY3RcdTIwMTlzIGtpbmQuXG4gICAgICAvLyA4LiBMZXQgdmFsdWVzIGJlIG9iamVjdFx1MjAxOXMgdGFyZ2V0J3MgdmFsdWUgcGFpcnMgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgY29uc3QgeyBpbmRleCwga2luZCwgdGFyZ2V0IH0gPSBvYmplY3RcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRhcmdldCgpXG5cbiAgICAgIC8vIDkuIExldCBsZW4gYmUgdGhlIGxlbmd0aCBvZiB2YWx1ZXMuXG4gICAgICBjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoXG5cbiAgICAgIC8vIDEwLiBJZiBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbGVuLCB0aGVuIHJldHVyblxuICAgICAgLy8gICAgIENyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodW5kZWZpbmVkLCB0cnVlKS5cbiAgICAgIGlmIChpbmRleCA+PSBsZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9XG4gICAgICB9XG5cbiAgICAgIC8vIDExLiBMZXQgcGFpciBiZSB0aGUgZW50cnkgaW4gdmFsdWVzIGF0IGluZGV4IGluZGV4LlxuICAgICAgY29uc3QgcGFpciA9IHZhbHVlc1tpbmRleF1cblxuICAgICAgLy8gMTIuIFNldCBvYmplY3RcdTIwMTlzIGluZGV4IHRvIGluZGV4ICsgMS5cbiAgICAgIG9iamVjdC5pbmRleCA9IGluZGV4ICsgMVxuXG4gICAgICAvLyAxMy4gUmV0dXJuIHRoZSBpdGVyYXRvciByZXN1bHQgZm9yIHBhaXIgYW5kIGtpbmQuXG4gICAgICByZXR1cm4gaXRlcmF0b3JSZXN1bHQocGFpciwga2luZClcbiAgICB9LFxuICAgIC8vIFRoZSBjbGFzcyBzdHJpbmcgb2YgYW4gaXRlcmF0b3IgcHJvdG90eXBlIG9iamVjdCBmb3IgYSBnaXZlbiBpbnRlcmZhY2UgaXMgdGhlXG4gICAgLy8gcmVzdWx0IG9mIGNvbmNhdGVuYXRpbmcgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGludGVyZmFjZSBhbmQgdGhlIHN0cmluZyBcIiBJdGVyYXRvclwiLlxuICAgIFtTeW1ib2wudG9TdHJpbmdUYWddOiBgJHtuYW1lfSBJdGVyYXRvcmBcbiAgfVxuXG4gIC8vIFRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHNsb3Qgb2YgYW4gaXRlcmF0b3IgcHJvdG90eXBlIG9iamVjdCBtdXN0IGJlICVJdGVyYXRvclByb3RvdHlwZSUuXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihpLCBlc0l0ZXJhdG9yUHJvdG90eXBlKVxuICAvLyBlc0l0ZXJhdG9yUHJvdG90eXBlIG5lZWRzIHRvIGJlIHRoZSBwcm90b3R5cGUgb2YgaVxuICAvLyB3aGljaCBpcyB0aGUgcHJvdG90eXBlIG9mIGFuIGVtcHR5IG9iamVjdC4gWWVzLCBpdCdzIGNvbmZ1c2luZy5cbiAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7fSwgaSlcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNpdGVyYXRvci1yZXN1bHRcbmZ1bmN0aW9uIGl0ZXJhdG9yUmVzdWx0IChwYWlyLCBraW5kKSB7XG4gIGxldCByZXN1bHRcblxuICAvLyAxLiBMZXQgcmVzdWx0IGJlIGEgdmFsdWUgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2Yga2luZDpcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAna2V5Jzoge1xuICAgICAgLy8gMS4gTGV0IGlkbEtleSBiZSBwYWlyXHUyMDE5cyBrZXkuXG4gICAgICAvLyAyLiBMZXQga2V5IGJlIHRoZSByZXN1bHQgb2YgY29udmVydGluZyBpZGxLZXkgdG8gYW5cbiAgICAgIC8vICAgIEVDTUFTY3JpcHQgdmFsdWUuXG4gICAgICAvLyAzLiByZXN1bHQgaXMga2V5LlxuICAgICAgcmVzdWx0ID0gcGFpclswXVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndmFsdWUnOiB7XG4gICAgICAvLyAxLiBMZXQgaWRsVmFsdWUgYmUgcGFpclx1MjAxOXMgdmFsdWUuXG4gICAgICAvLyAyLiBMZXQgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIGlkbFZhbHVlIHRvXG4gICAgICAvLyAgICBhbiBFQ01BU2NyaXB0IHZhbHVlLlxuICAgICAgLy8gMy4gcmVzdWx0IGlzIHZhbHVlLlxuICAgICAgcmVzdWx0ID0gcGFpclsxXVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAna2V5K3ZhbHVlJzoge1xuICAgICAgLy8gMS4gTGV0IGlkbEtleSBiZSBwYWlyXHUyMDE5cyBrZXkuXG4gICAgICAvLyAyLiBMZXQgaWRsVmFsdWUgYmUgcGFpclx1MjAxOXMgdmFsdWUuXG4gICAgICAvLyAzLiBMZXQga2V5IGJlIHRoZSByZXN1bHQgb2YgY29udmVydGluZyBpZGxLZXkgdG8gYW5cbiAgICAgIC8vICAgIEVDTUFTY3JpcHQgdmFsdWUuXG4gICAgICAvLyA0LiBMZXQgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIGlkbFZhbHVlIHRvXG4gICAgICAvLyAgICBhbiBFQ01BU2NyaXB0IHZhbHVlLlxuICAgICAgLy8gNS4gTGV0IGFycmF5IGJlICEgQXJyYXlDcmVhdGUoMikuXG4gICAgICAvLyA2LiBDYWxsICEgQ3JlYXRlRGF0YVByb3BlcnR5KGFycmF5LCBcIjBcIiwga2V5KS5cbiAgICAgIC8vIDcuIENhbGwgISBDcmVhdGVEYXRhUHJvcGVydHkoYXJyYXksIFwiMVwiLCB2YWx1ZSkuXG4gICAgICAvLyA4LiByZXN1bHQgaXMgYXJyYXkuXG4gICAgICByZXN1bHQgPSBwYWlyXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIDIuIFJldHVybiBDcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHJlc3VsdCwgZmFsc2UpLlxuICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBkb25lOiBmYWxzZSB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1mdWxseS1yZWFkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZ1bGx5UmVhZEJvZHkgKGJvZHksIHByb2Nlc3NCb2R5LCBwcm9jZXNzQm9keUVycm9yKSB7XG4gIC8vIDEuIElmIHRhc2tEZXN0aW5hdGlvbiBpcyBudWxsLCB0aGVuIHNldCB0YXNrRGVzdGluYXRpb24gdG9cbiAgLy8gICAgdGhlIHJlc3VsdCBvZiBzdGFydGluZyBhIG5ldyBwYXJhbGxlbCBxdWV1ZS5cblxuICAvLyAyLiBMZXQgc3VjY2Vzc1N0ZXBzIGdpdmVuIGEgYnl0ZSBzZXF1ZW5jZSBieXRlcyBiZSB0byBxdWV1ZSBhXG4gIC8vICAgIGZldGNoIHRhc2sgdG8gcnVuIHByb2Nlc3NCb2R5IGdpdmVuIGJ5dGVzLCB3aXRoIHRhc2tEZXN0aW5hdGlvbi5cbiAgY29uc3Qgc3VjY2Vzc1N0ZXBzID0gcHJvY2Vzc0JvZHlcblxuICAvLyAzLiBMZXQgZXJyb3JTdGVwcyBiZSB0byBxdWV1ZSBhIGZldGNoIHRhc2sgdG8gcnVuIHByb2Nlc3NCb2R5RXJyb3IsXG4gIC8vICAgIHdpdGggdGFza0Rlc3RpbmF0aW9uLlxuICBjb25zdCBlcnJvclN0ZXBzID0gcHJvY2Vzc0JvZHlFcnJvclxuXG4gIC8vIDQuIExldCByZWFkZXIgYmUgdGhlIHJlc3VsdCBvZiBnZXR0aW5nIGEgcmVhZGVyIGZvciBib2R5XHUyMDE5cyBzdHJlYW0uXG4gIC8vICAgIElmIHRoYXQgdGhyZXcgYW4gZXhjZXB0aW9uLCB0aGVuIHJ1biBlcnJvclN0ZXBzIHdpdGggdGhhdFxuICAvLyAgICBleGNlcHRpb24gYW5kIHJldHVybi5cbiAgbGV0IHJlYWRlclxuXG4gIHRyeSB7XG4gICAgcmVhZGVyID0gYm9keS5zdHJlYW0uZ2V0UmVhZGVyKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVycm9yU3RlcHMoZSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDUuIFJlYWQgYWxsIGJ5dGVzIGZyb20gcmVhZGVyLCBnaXZlbiBzdWNjZXNzU3RlcHMgYW5kIGVycm9yU3RlcHMuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZEFsbEJ5dGVzKHJlYWRlcilcbiAgICBzdWNjZXNzU3RlcHMocmVzdWx0KVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyb3JTdGVwcyhlKVxuICB9XG59XG5cbi8qKiBAdHlwZSB7UmVhZGFibGVTdHJlYW19ICovXG5sZXQgUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtXG5cbmZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1MaWtlIChzdHJlYW0pIHtcbiAgaWYgKCFSZWFkYWJsZVN0cmVhbSkge1xuICAgIFJlYWRhYmxlU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtL3dlYicpLlJlYWRhYmxlU3RyZWFtXG4gIH1cblxuICByZXR1cm4gc3RyZWFtIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0gfHwgKFxuICAgIHN0cmVhbVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnUmVhZGFibGVTdHJlYW0nICYmXG4gICAgdHlwZW9mIHN0cmVhbS50ZWUgPT09ICdmdW5jdGlvbidcbiAgKVxufVxuXG5jb25zdCBNQVhJTVVNX0FSR1VNRU5UX0xFTkdUSCA9IDY1NTM1XG5cbi8qKlxuICogQHNlZSBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jaXNvbW9ycGhpYy1kZWNvZGVcbiAqIEBwYXJhbSB7bnVtYmVyW118VWludDhBcnJheX0gaW5wdXRcbiAqL1xuZnVuY3Rpb24gaXNvbW9ycGhpY0RlY29kZSAoaW5wdXQpIHtcbiAgLy8gMS4gVG8gaXNvbW9ycGhpYyBkZWNvZGUgYSBieXRlIHNlcXVlbmNlIGlucHV0LCByZXR1cm4gYSBzdHJpbmcgd2hvc2UgY29kZSBwb2ludFxuICAvLyAgICBsZW5ndGggaXMgZXF1YWwgdG8gaW5wdXRcdTIwMTlzIGxlbmd0aCBhbmQgd2hvc2UgY29kZSBwb2ludHMgaGF2ZSB0aGUgc2FtZSB2YWx1ZXNcbiAgLy8gICAgYXMgdGhlIHZhbHVlcyBvZiBpbnB1dFx1MjAxOXMgYnl0ZXMsIGluIHRoZSBzYW1lIG9yZGVyLlxuXG4gIGlmIChpbnB1dC5sZW5ndGggPCBNQVhJTVVNX0FSR1VNRU5UX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmlucHV0KVxuICB9XG5cbiAgcmV0dXJuIGlucHV0LnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHByZXZpb3VzICsgU3RyaW5nLmZyb21DaGFyQ29kZShjdXJyZW50KSwgJycpXG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI8VWludDhBcnJheT59IGNvbnRyb2xsZXJcbiAqL1xuZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1DbG9zZSAoY29udHJvbGxlcikge1xuICB0cnkge1xuICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBUT0RPOiBhZGQgY29tbWVudCBleHBsYWluaW5nIHdoeSB0aGlzIGVycm9yIG9jY3Vycy5cbiAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb250cm9sbGVyIGlzIGFscmVhZHkgY2xvc2VkJykpIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2lzb21vcnBoaWMtZW5jb2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRcbiAqL1xuZnVuY3Rpb24gaXNvbW9ycGhpY0VuY29kZSAoaW5wdXQpIHtcbiAgLy8gMS4gQXNzZXJ0OiBpbnB1dCBjb250YWlucyBubyBjb2RlIHBvaW50cyBncmVhdGVyIHRoYW4gVSswMEZGLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgYXNzZXJ0KGlucHV0LmNoYXJDb2RlQXQoaSkgPD0gMHhGRilcbiAgfVxuXG4gIC8vIDIuIFJldHVybiBhIGJ5dGUgc2VxdWVuY2Ugd2hvc2UgbGVuZ3RoIGlzIGVxdWFsIHRvIGlucHV0XHUyMDE5cyBjb2RlXG4gIC8vICAgIHBvaW50IGxlbmd0aCBhbmQgd2hvc2UgYnl0ZXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlXG4gIC8vICAgIHZhbHVlcyBvZiBpbnB1dFx1MjAxOXMgY29kZSBwb2ludHMsIGluIHRoZSBzYW1lIG9yZGVyXG4gIHJldHVybiBpbnB1dFxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcmVhZGFibGVzdHJlYW1kZWZhdWx0cmVhZGVyLXJlYWQtYWxsLWJ5dGVzXG4gKiBAc2VlIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3JlYWQtbG9vcFxuICogQHBhcmFtIHtSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJ9IHJlYWRlclxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkQWxsQnl0ZXMgKHJlYWRlcikge1xuICBjb25zdCBieXRlcyA9IFtdXG4gIGxldCBieXRlTGVuZ3RoID0gMFxuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZTogY2h1bmsgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcblxuICAgIGlmIChkb25lKSB7XG4gICAgICAvLyAxLiBDYWxsIHN1Y2Nlc3NTdGVwcyB3aXRoIGJ5dGVzLlxuICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnl0ZXMsIGJ5dGVMZW5ndGgpXG4gICAgfVxuXG4gICAgLy8gMS4gSWYgY2h1bmsgaXMgbm90IGEgVWludDhBcnJheSBvYmplY3QsIGNhbGwgZmFpbHVyZVN0ZXBzXG4gICAgLy8gICAgd2l0aCBhIFR5cGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuXG4gICAgaWYgKCFpc1VpbnQ4QXJyYXkoY2h1bmspKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWNlaXZlZCBub24tVWludDhBcnJheSBjaHVuaycpXG4gICAgfVxuXG4gICAgLy8gMi4gQXBwZW5kIHRoZSBieXRlcyByZXByZXNlbnRlZCBieSBjaHVuayB0byBieXRlcy5cbiAgICBieXRlcy5wdXNoKGNodW5rKVxuICAgIGJ5dGVMZW5ndGggKz0gY2h1bmsubGVuZ3RoXG5cbiAgICAvLyAzLiBSZWFkLWxvb3AgZ2l2ZW4gcmVhZGVyLCBieXRlcywgc3VjY2Vzc1N0ZXBzLCBhbmQgZmFpbHVyZVN0ZXBzLlxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaXMtbG9jYWxcbiAqIEBwYXJhbSB7VVJMfSB1cmxcbiAqL1xuZnVuY3Rpb24gdXJsSXNMb2NhbCAodXJsKSB7XG4gIGFzc2VydCgncHJvdG9jb2wnIGluIHVybCkgLy8gZW5zdXJlIGl0J3MgYSB1cmwgb2JqZWN0XG5cbiAgY29uc3QgcHJvdG9jb2wgPSB1cmwucHJvdG9jb2xcblxuICByZXR1cm4gcHJvdG9jb2wgPT09ICdhYm91dDonIHx8IHByb3RvY29sID09PSAnYmxvYjonIHx8IHByb3RvY29sID09PSAnZGF0YTonXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd8VVJMfSB1cmxcbiAqL1xuZnVuY3Rpb24gdXJsSGFzSHR0cHNTY2hlbWUgKHVybCkge1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOicpXG4gIH1cblxuICByZXR1cm4gdXJsLnByb3RvY29sID09PSAnaHR0cHM6J1xufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtc2NoZW1lXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKi9cbmZ1bmN0aW9uIHVybElzSHR0cEh0dHBzU2NoZW1lICh1cmwpIHtcbiAgYXNzZXJ0KCdwcm90b2NvbCcgaW4gdXJsKSAvLyBlbnN1cmUgaXQncyBhIHVybCBvYmplY3RcblxuICBjb25zdCBwcm90b2NvbCA9IHVybC5wcm90b2NvbFxuXG4gIHJldHVybiBwcm90b2NvbCA9PT0gJ2h0dHA6JyB8fCBwcm90b2NvbCA9PT0gJ2h0dHBzOidcbn1cblxuLyoqXG4gKiBGZXRjaCBzdXBwb3J0cyBub2RlID49IDE2LjguMCwgYnV0IE9iamVjdC5oYXNPd24gd2FzIGFkZGVkIGluIHYxNi45LjAuXG4gKi9cbmNvbnN0IGhhc093biA9IE9iamVjdC5oYXNPd24gfHwgKChkaWN0LCBrZXkpID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkaWN0LCBrZXkpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBYm9ydGVkLFxuICBpc0NhbmNlbGxlZCxcbiAgY3JlYXRlRGVmZXJyZWRQcm9taXNlLFxuICBSZWFkYWJsZVN0cmVhbUZyb20sXG4gIHRvVVNWU3RyaW5nLFxuICB0cnlVcGdyYWRlUmVxdWVzdFRvQVBvdGVudGlhbGx5VHJ1c3R3b3J0aHlVUkwsXG4gIGNvYXJzZW5lZFNoYXJlZEN1cnJlbnRUaW1lLFxuICBkZXRlcm1pbmVSZXF1ZXN0c1JlZmVycmVyLFxuICBtYWtlUG9saWN5Q29udGFpbmVyLFxuICBjbG9uZVBvbGljeUNvbnRhaW5lcixcbiAgYXBwZW5kRmV0Y2hNZXRhZGF0YSxcbiAgYXBwZW5kUmVxdWVzdE9yaWdpbkhlYWRlcixcbiAgVEFPQ2hlY2ssXG4gIGNvcnNDaGVjayxcbiAgY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNoZWNrLFxuICBjcmVhdGVPcGFxdWVUaW1pbmdJbmZvLFxuICBzZXRSZXF1ZXN0UmVmZXJyZXJQb2xpY3lPblJlZGlyZWN0LFxuICBpc1ZhbGlkSFRUUFRva2VuLFxuICByZXF1ZXN0QmFkUG9ydCxcbiAgcmVxdWVzdEN1cnJlbnRVUkwsXG4gIHJlc3BvbnNlVVJMLFxuICByZXNwb25zZUxvY2F0aW9uVVJMLFxuICBpc0Jsb2JMaWtlLFxuICBpc1VSTFBvdGVudGlhbGx5VHJ1c3R3b3J0aHksXG4gIGlzVmFsaWRSZWFzb25QaHJhc2UsXG4gIHNhbWVPcmlnaW4sXG4gIG5vcm1hbGl6ZU1ldGhvZCxcbiAgc2VyaWFsaXplSmF2YXNjcmlwdFZhbHVlVG9KU09OU3RyaW5nLFxuICBtYWtlSXRlcmF0b3IsXG4gIGlzVmFsaWRIZWFkZXJOYW1lLFxuICBpc1ZhbGlkSGVhZGVyVmFsdWUsXG4gIGhhc093bixcbiAgaXNFcnJvckxpa2UsXG4gIGZ1bGx5UmVhZEJvZHksXG4gIGJ5dGVzTWF0Y2gsXG4gIGlzUmVhZGFibGVTdHJlYW1MaWtlLFxuICByZWFkYWJsZVN0cmVhbUNsb3NlLFxuICBpc29tb3JwaGljRW5jb2RlLFxuICBpc29tb3JwaGljRGVjb2RlLFxuICB1cmxJc0xvY2FsLFxuICB1cmxIYXNIdHRwc1NjaGVtZSxcbiAgdXJsSXNIdHRwSHR0cHNTY2hlbWUsXG4gIHJlYWRBbGxCeXRlcyxcbiAgbm9ybWFsaXplTWV0aG9kUmVjb3JkLFxuICBwYXJzZU1ldGFkYXRhXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBrVXJsOiBTeW1ib2woJ3VybCcpLFxuICBrSGVhZGVyczogU3ltYm9sKCdoZWFkZXJzJyksXG4gIGtTaWduYWw6IFN5bWJvbCgnc2lnbmFsJyksXG4gIGtTdGF0ZTogU3ltYm9sKCdzdGF0ZScpLFxuICBrR3VhcmQ6IFN5bWJvbCgnZ3VhcmQnKSxcbiAga1JlYWxtOiBTeW1ib2woJ3JlYWxtJylcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyB0eXBlcyB9ID0gcmVxdWlyZSgndXRpbCcpXG5jb25zdCB7IGhhc093biwgdG9VU1ZTdHJpbmcgfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuLi8uLi90eXBlcy93ZWJpZGwnKS5XZWJpZGx9ICovXG5jb25zdCB3ZWJpZGwgPSB7fVxud2ViaWRsLmNvbnZlcnRlcnMgPSB7fVxud2ViaWRsLnV0aWwgPSB7fVxud2ViaWRsLmVycm9ycyA9IHt9XG5cbndlYmlkbC5lcnJvcnMuZXhjZXB0aW9uID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoYCR7bWVzc2FnZS5oZWFkZXJ9OiAke21lc3NhZ2UubWVzc2FnZX1gKVxufVxuXG53ZWJpZGwuZXJyb3JzLmNvbnZlcnNpb25GYWlsZWQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBjb25zdCBwbHVyYWwgPSBjb250ZXh0LnR5cGVzLmxlbmd0aCA9PT0gMSA/ICcnIDogJyBvbmUgb2YnXG4gIGNvbnN0IG1lc3NhZ2UgPVxuICAgIGAke2NvbnRleHQuYXJndW1lbnR9IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG9gICtcbiAgICBgJHtwbHVyYWx9OiAke2NvbnRleHQudHlwZXMuam9pbignLCAnKX0uYFxuXG4gIHJldHVybiB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgaGVhZGVyOiBjb250ZXh0LnByZWZpeCxcbiAgICBtZXNzYWdlXG4gIH0pXG59XG5cbndlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICBoZWFkZXI6IGNvbnRleHQucHJlZml4LFxuICAgIG1lc3NhZ2U6IGBcIiR7Y29udGV4dC52YWx1ZX1cIiBpcyBhbiBpbnZhbGlkICR7Y29udGV4dC50eXBlfS5gXG4gIH0pXG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jaW1wbGVtZW50c1xud2ViaWRsLmJyYW5kQ2hlY2sgPSBmdW5jdGlvbiAoViwgSSwgb3B0cyA9IHVuZGVmaW5lZCkge1xuICBpZiAob3B0cz8uc3RyaWN0ICE9PSBmYWxzZSAmJiAhKFYgaW5zdGFuY2VvZiBJKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0lsbGVnYWwgaW52b2NhdGlvbicpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFY/LltTeW1ib2wudG9TdHJpbmdUYWddID09PSBJLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddXG4gIH1cbn1cblxud2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2sgPSBmdW5jdGlvbiAoeyBsZW5ndGggfSwgbWluLCBjdHgpIHtcbiAgaWYgKGxlbmd0aCA8IG1pbikge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgIG1lc3NhZ2U6IGAke21pbn0gYXJndW1lbnQke21pbiAhPT0gMSA/ICdzJyA6ICcnfSByZXF1aXJlZCwgYCArXG4gICAgICAgICAgICAgICBgYnV0JHtsZW5ndGggPyAnIG9ubHknIDogJyd9ICR7bGVuZ3RofSBmb3VuZC5gLFxuICAgICAgLi4uY3R4XG4gICAgfSlcbiAgfVxufVxuXG53ZWJpZGwuaWxsZWdhbENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgaGVhZGVyOiAnVHlwZUVycm9yJyxcbiAgICBtZXNzYWdlOiAnSWxsZWdhbCBjb25zdHJ1Y3RvcidcbiAgfSlcbn1cblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWRhdGEtdHlwZXMtYW5kLXZhbHVlc1xud2ViaWRsLnV0aWwuVHlwZSA9IGZ1bmN0aW9uIChWKSB7XG4gIHN3aXRjaCAodHlwZW9mIFYpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOiByZXR1cm4gJ1VuZGVmaW5lZCdcbiAgICBjYXNlICdib29sZWFuJzogcmV0dXJuICdCb29sZWFuJ1xuICAgIGNhc2UgJ3N0cmluZyc6IHJldHVybiAnU3RyaW5nJ1xuICAgIGNhc2UgJ3N5bWJvbCc6IHJldHVybiAnU3ltYm9sJ1xuICAgIGNhc2UgJ251bWJlcic6IHJldHVybiAnTnVtYmVyJ1xuICAgIGNhc2UgJ2JpZ2ludCc6IHJldHVybiAnQmlnSW50J1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICBpZiAoViA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ051bGwnXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnT2JqZWN0J1xuICAgIH1cbiAgfVxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2Fic3RyYWN0LW9wZGVmLWNvbnZlcnR0b2ludFxud2ViaWRsLnV0aWwuQ29udmVydFRvSW50ID0gZnVuY3Rpb24gKFYsIGJpdExlbmd0aCwgc2lnbmVkbmVzcywgb3B0cyA9IHt9KSB7XG4gIGxldCB1cHBlckJvdW5kXG4gIGxldCBsb3dlckJvdW5kXG5cbiAgLy8gMS4gSWYgYml0TGVuZ3RoIGlzIDY0LCB0aGVuOlxuICBpZiAoYml0TGVuZ3RoID09PSA2NCkge1xuICAgIC8vIDEuIExldCB1cHBlckJvdW5kIGJlIDJeNTMgXHUyMjEyIDEuXG4gICAgdXBwZXJCb3VuZCA9IE1hdGgucG93KDIsIDUzKSAtIDFcblxuICAgIC8vIDIuIElmIHNpZ25lZG5lc3MgaXMgXCJ1bnNpZ25lZFwiLCB0aGVuIGxldCBsb3dlckJvdW5kIGJlIDAuXG4gICAgaWYgKHNpZ25lZG5lc3MgPT09ICd1bnNpZ25lZCcpIHtcbiAgICAgIGxvd2VyQm91bmQgPSAwXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDMuIE90aGVyd2lzZSBsZXQgbG93ZXJCb3VuZCBiZSBcdTIyMTIyXjUzICsgMS5cbiAgICAgIGxvd2VyQm91bmQgPSBNYXRoLnBvdygtMiwgNTMpICsgMVxuICAgIH1cbiAgfSBlbHNlIGlmIChzaWduZWRuZXNzID09PSAndW5zaWduZWQnKSB7XG4gICAgLy8gMi4gT3RoZXJ3aXNlLCBpZiBzaWduZWRuZXNzIGlzIFwidW5zaWduZWRcIiwgdGhlbjpcblxuICAgIC8vIDEuIExldCBsb3dlckJvdW5kIGJlIDAuXG4gICAgbG93ZXJCb3VuZCA9IDBcblxuICAgIC8vIDIuIExldCB1cHBlckJvdW5kIGJlIDJeYml0TGVuZ3RoIFx1MjIxMiAxLlxuICAgIHVwcGVyQm91bmQgPSBNYXRoLnBvdygyLCBiaXRMZW5ndGgpIC0gMVxuICB9IGVsc2Uge1xuICAgIC8vIDMuIE90aGVyd2lzZTpcblxuICAgIC8vIDEuIExldCBsb3dlckJvdW5kIGJlIC0yXmJpdExlbmd0aCBcdTIyMTIgMS5cbiAgICBsb3dlckJvdW5kID0gTWF0aC5wb3coLTIsIGJpdExlbmd0aCkgLSAxXG5cbiAgICAvLyAyLiBMZXQgdXBwZXJCb3VuZCBiZSAyXmJpdExlbmd0aCBcdTIyMTIgMSBcdTIyMTIgMS5cbiAgICB1cHBlckJvdW5kID0gTWF0aC5wb3coMiwgYml0TGVuZ3RoIC0gMSkgLSAxXG4gIH1cblxuICAvLyA0LiBMZXQgeCBiZSA/IFRvTnVtYmVyKFYpLlxuICBsZXQgeCA9IE51bWJlcihWKVxuXG4gIC8vIDUuIElmIHggaXMgXHUyMjEyMCwgdGhlbiBzZXQgeCB0byArMC5cbiAgaWYgKHggPT09IDApIHtcbiAgICB4ID0gMFxuICB9XG5cbiAgLy8gNi4gSWYgdGhlIGNvbnZlcnNpb24gaXMgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbRW5mb3JjZVJhbmdlXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW46XG4gIGlmIChvcHRzLmVuZm9yY2VSYW5nZSA9PT0gdHJ1ZSkge1xuICAgIC8vIDEuIElmIHggaXMgTmFOLCArXHUyMjFFLCBvciBcdTIyMTJcdTIyMUUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKFxuICAgICAgTnVtYmVyLmlzTmFOKHgpIHx8XG4gICAgICB4ID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfHxcbiAgICAgIHggPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdJbnRlZ2VyIGNvbnZlcnNpb24nLFxuICAgICAgICBtZXNzYWdlOiBgQ291bGQgbm90IGNvbnZlcnQgJHtWfSB0byBhbiBpbnRlZ2VyLmBcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMi4gU2V0IHggdG8gSW50ZWdlclBhcnQoeCkuXG4gICAgeCA9IHdlYmlkbC51dGlsLkludGVnZXJQYXJ0KHgpXG5cbiAgICAvLyAzLiBJZiB4IDwgbG93ZXJCb3VuZCBvciB4ID4gdXBwZXJCb3VuZCwgdGhlblxuICAgIC8vICAgIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh4IDwgbG93ZXJCb3VuZCB8fCB4ID4gdXBwZXJCb3VuZCkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdJbnRlZ2VyIGNvbnZlcnNpb24nLFxuICAgICAgICBtZXNzYWdlOiBgVmFsdWUgbXVzdCBiZSBiZXR3ZWVuICR7bG93ZXJCb3VuZH0tJHt1cHBlckJvdW5kfSwgZ290ICR7eH0uYFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyA0LiBSZXR1cm4geC5cbiAgICByZXR1cm4geFxuICB9XG5cbiAgLy8gNy4gSWYgeCBpcyBub3QgTmFOIGFuZCB0aGUgY29udmVyc2lvbiBpcyB0byBhbiBJRExcbiAgLy8gICAgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIFtDbGFtcF0gZXh0ZW5kZWRcbiAgLy8gICAgYXR0cmlidXRlLCB0aGVuOlxuICBpZiAoIU51bWJlci5pc05hTih4KSAmJiBvcHRzLmNsYW1wID09PSB0cnVlKSB7XG4gICAgLy8gMS4gU2V0IHggdG8gbWluKG1heCh4LCBsb3dlckJvdW5kKSwgdXBwZXJCb3VuZCkuXG4gICAgeCA9IE1hdGgubWluKE1hdGgubWF4KHgsIGxvd2VyQm91bmQpLCB1cHBlckJvdW5kKVxuXG4gICAgLy8gMi4gUm91bmQgeCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBjaG9vc2luZyB0aGVcbiAgICAvLyAgICBldmVuIGludGVnZXIgaWYgaXQgbGllcyBoYWxmd2F5IGJldHdlZW4gdHdvLFxuICAgIC8vICAgIGFuZCBjaG9vc2luZyArMCByYXRoZXIgdGhhbiBcdTIyMTIwLlxuICAgIGlmIChNYXRoLmZsb29yKHgpICUgMiA9PT0gMCkge1xuICAgICAgeCA9IE1hdGguZmxvb3IoeClcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IE1hdGguY2VpbCh4KVxuICAgIH1cblxuICAgIC8vIDMuIFJldHVybiB4LlxuICAgIHJldHVybiB4XG4gIH1cblxuICAvLyA4LiBJZiB4IGlzIE5hTiwgKzAsICtcdTIyMUUsIG9yIFx1MjIxMlx1MjIxRSwgdGhlbiByZXR1cm4gKzAuXG4gIGlmIChcbiAgICBOdW1iZXIuaXNOYU4oeCkgfHxcbiAgICAoeCA9PT0gMCAmJiBPYmplY3QuaXMoMCwgeCkpIHx8XG4gICAgeCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8XG4gICAgeCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZXG4gICkge1xuICAgIHJldHVybiAwXG4gIH1cblxuICAvLyA5LiBTZXQgeCB0byBJbnRlZ2VyUGFydCh4KS5cbiAgeCA9IHdlYmlkbC51dGlsLkludGVnZXJQYXJ0KHgpXG5cbiAgLy8gMTAuIFNldCB4IHRvIHggbW9kdWxvIDJeYml0TGVuZ3RoLlxuICB4ID0geCAlIE1hdGgucG93KDIsIGJpdExlbmd0aClcblxuICAvLyAxMS4gSWYgc2lnbmVkbmVzcyBpcyBcInNpZ25lZFwiIGFuZCB4IFx1MjI2NSAyXmJpdExlbmd0aCBcdTIyMTIgMSxcbiAgLy8gICAgdGhlbiByZXR1cm4geCBcdTIyMTIgMl5iaXRMZW5ndGguXG4gIGlmIChzaWduZWRuZXNzID09PSAnc2lnbmVkJyAmJiB4ID49IE1hdGgucG93KDIsIGJpdExlbmd0aCkgLSAxKSB7XG4gICAgcmV0dXJuIHggLSBNYXRoLnBvdygyLCBiaXRMZW5ndGgpXG4gIH1cblxuICAvLyAxMi4gT3RoZXJ3aXNlLCByZXR1cm4geC5cbiAgcmV0dXJuIHhcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNhYnN0cmFjdC1vcGRlZi1pbnRlZ2VycGFydFxud2ViaWRsLnV0aWwuSW50ZWdlclBhcnQgPSBmdW5jdGlvbiAobikge1xuICAvLyAxLiBMZXQgciBiZSBmbG9vcihhYnMobikpLlxuICBjb25zdCByID0gTWF0aC5mbG9vcihNYXRoLmFicyhuKSlcblxuICAvLyAyLiBJZiBuIDwgMCwgdGhlbiByZXR1cm4gLTEgXHUwMEQ3IHIuXG4gIGlmIChuIDwgMCkge1xuICAgIHJldHVybiAtMSAqIHJcbiAgfVxuXG4gIC8vIDMuIE90aGVyd2lzZSwgcmV0dXJuIHIuXG4gIHJldHVybiByXG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtc2VxdWVuY2VcbndlYmlkbC5zZXF1ZW5jZUNvbnZlcnRlciA9IGZ1bmN0aW9uIChjb252ZXJ0ZXIpIHtcbiAgcmV0dXJuIChWKSA9PiB7XG4gICAgLy8gMS4gSWYgVHlwZShWKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSAhPT0gJ09iamVjdCcpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiAnU2VxdWVuY2UnLFxuICAgICAgICBtZXNzYWdlOiBgVmFsdWUgb2YgdHlwZSAke3dlYmlkbC51dGlsLlR5cGUoVil9IGlzIG5vdCBhbiBPYmplY3QuYFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBMZXQgbWV0aG9kIGJlID8gR2V0TWV0aG9kKFYsIEBAaXRlcmF0b3IpLlxuICAgIC8qKiBAdHlwZSB7R2VuZXJhdG9yfSAqL1xuICAgIGNvbnN0IG1ldGhvZCA9IFY/LltTeW1ib2wuaXRlcmF0b3JdPy4oKVxuICAgIGNvbnN0IHNlcSA9IFtdXG5cbiAgICAvLyAzLiBJZiBtZXRob2QgaXMgdW5kZWZpbmVkLCB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAoXG4gICAgICBtZXRob2QgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdHlwZW9mIG1ldGhvZC5uZXh0ICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ1NlcXVlbmNlJyxcbiAgICAgICAgbWVzc2FnZTogJ09iamVjdCBpcyBub3QgYW4gaXRlcmF0b3IuJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2NyZWF0ZS1zZXF1ZW5jZS1mcm9tLWl0ZXJhYmxlXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IG1ldGhvZC5uZXh0KClcblxuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgc2VxLnB1c2goY29udmVydGVyKHZhbHVlKSlcbiAgICB9XG5cbiAgICByZXR1cm4gc2VxXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy10by1yZWNvcmRcbndlYmlkbC5yZWNvcmRDb252ZXJ0ZXIgPSBmdW5jdGlvbiAoa2V5Q29udmVydGVyLCB2YWx1ZUNvbnZlcnRlcikge1xuICByZXR1cm4gKE8pID0+IHtcbiAgICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICh3ZWJpZGwudXRpbC5UeXBlKE8pICE9PSAnT2JqZWN0Jykge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdSZWNvcmQnLFxuICAgICAgICBtZXNzYWdlOiBgVmFsdWUgb2YgdHlwZSAke3dlYmlkbC51dGlsLlR5cGUoTyl9IGlzIG5vdCBhbiBPYmplY3QuYFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBMZXQgcmVzdWx0IGJlIGEgbmV3IGVtcHR5IGluc3RhbmNlIG9mIHJlY29yZDxLLCBWPi5cbiAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgaWYgKCF0eXBlcy5pc1Byb3h5KE8pKSB7XG4gICAgICAvLyBPYmplY3Qua2V5cyBvbmx5IHJldHVybnMgZW51bWVyYWJsZSBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoTylcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAvLyAxLiBMZXQgdHlwZWRLZXkgYmUga2V5IGNvbnZlcnRlZCB0byBhbiBJREwgdmFsdWUgb2YgdHlwZSBLLlxuICAgICAgICBjb25zdCB0eXBlZEtleSA9IGtleUNvbnZlcnRlcihrZXkpXG5cbiAgICAgICAgLy8gMi4gTGV0IHZhbHVlIGJlID8gR2V0KE8sIGtleSkuXG4gICAgICAgIC8vIDMuIExldCB0eXBlZFZhbHVlIGJlIHZhbHVlIGNvbnZlcnRlZCB0byBhbiBJREwgdmFsdWUgb2YgdHlwZSBWLlxuICAgICAgICBjb25zdCB0eXBlZFZhbHVlID0gdmFsdWVDb252ZXJ0ZXIoT1trZXldKVxuXG4gICAgICAgIC8vIDQuIFNldCByZXN1bHRbdHlwZWRLZXldIHRvIHR5cGVkVmFsdWUuXG4gICAgICAgIHJlc3VsdFt0eXBlZEtleV0gPSB0eXBlZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIDUuIFJldHVybiByZXN1bHQuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgLy8gMy4gTGV0IGtleXMgYmUgPyBPLltbT3duUHJvcGVydHlLZXlzXV0oKS5cbiAgICBjb25zdCBrZXlzID0gUmVmbGVjdC5vd25LZXlzKE8pXG5cbiAgICAvLyA0LiBGb3IgZWFjaCBrZXkgb2Yga2V5cy5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAvLyAxLiBMZXQgZGVzYyBiZSA/IE8uW1tHZXRPd25Qcm9wZXJ0eV1dKGtleSkuXG4gICAgICBjb25zdCBkZXNjID0gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywga2V5KVxuXG4gICAgICAvLyAyLiBJZiBkZXNjIGlzIG5vdCB1bmRlZmluZWQgYW5kIGRlc2MuW1tFbnVtZXJhYmxlXV0gaXMgdHJ1ZTpcbiAgICAgIGlmIChkZXNjPy5lbnVtZXJhYmxlKSB7XG4gICAgICAgIC8vIDEuIExldCB0eXBlZEtleSBiZSBrZXkgY29udmVydGVkIHRvIGFuIElETCB2YWx1ZSBvZiB0eXBlIEsuXG4gICAgICAgIGNvbnN0IHR5cGVkS2V5ID0ga2V5Q29udmVydGVyKGtleSlcblxuICAgICAgICAvLyAyLiBMZXQgdmFsdWUgYmUgPyBHZXQoTywga2V5KS5cbiAgICAgICAgLy8gMy4gTGV0IHR5cGVkVmFsdWUgYmUgdmFsdWUgY29udmVydGVkIHRvIGFuIElETCB2YWx1ZSBvZiB0eXBlIFYuXG4gICAgICAgIGNvbnN0IHR5cGVkVmFsdWUgPSB2YWx1ZUNvbnZlcnRlcihPW2tleV0pXG5cbiAgICAgICAgLy8gNC4gU2V0IHJlc3VsdFt0eXBlZEtleV0gdG8gdHlwZWRWYWx1ZS5cbiAgICAgICAgcmVzdWx0W3R5cGVkS2V5XSA9IHR5cGVkVmFsdWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA1LiBSZXR1cm4gcmVzdWx0LlxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG53ZWJpZGwuaW50ZXJmYWNlQ29udmVydGVyID0gZnVuY3Rpb24gKGkpIHtcbiAgcmV0dXJuIChWLCBvcHRzID0ge30pID0+IHtcbiAgICBpZiAob3B0cy5zdHJpY3QgIT09IGZhbHNlICYmICEoViBpbnN0YW5jZW9mIGkpKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogaS5uYW1lLFxuICAgICAgICBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtWfSB0byBiZSBhbiBpbnN0YW5jZSBvZiAke2kubmFtZX0uYFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gVlxuICB9XG59XG5cbndlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyID0gZnVuY3Rpb24gKGNvbnZlcnRlcnMpIHtcbiAgcmV0dXJuIChkaWN0aW9uYXJ5KSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHdlYmlkbC51dGlsLlR5cGUoZGljdGlvbmFyeSlcbiAgICBjb25zdCBkaWN0ID0ge31cblxuICAgIGlmICh0eXBlID09PSAnTnVsbCcgfHwgdHlwZSA9PT0gJ1VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBkaWN0XG4gICAgfSBlbHNlIGlmICh0eXBlICE9PSAnT2JqZWN0Jykge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdEaWN0aW9uYXJ5JyxcbiAgICAgICAgbWVzc2FnZTogYEV4cGVjdGVkICR7ZGljdGlvbmFyeX0gdG8gYmUgb25lIG9mOiBOdWxsLCBVbmRlZmluZWQsIE9iamVjdC5gXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgb3B0aW9ucyBvZiBjb252ZXJ0ZXJzKSB7XG4gICAgICBjb25zdCB7IGtleSwgZGVmYXVsdFZhbHVlLCByZXF1aXJlZCwgY29udmVydGVyIH0gPSBvcHRpb25zXG5cbiAgICAgIGlmIChyZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICBpZiAoIWhhc093bihkaWN0aW9uYXJ5LCBrZXkpKSB7XG4gICAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgaGVhZGVyOiAnRGljdGlvbmFyeScsXG4gICAgICAgICAgICBtZXNzYWdlOiBgTWlzc2luZyByZXF1aXJlZCBrZXkgXCIke2tleX1cIi5gXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWUgPSBkaWN0aW9uYXJ5W2tleV1cbiAgICAgIGNvbnN0IGhhc0RlZmF1bHQgPSBoYXNPd24ob3B0aW9ucywgJ2RlZmF1bHRWYWx1ZScpXG5cbiAgICAgIC8vIE9ubHkgdXNlIGRlZmF1bHRWYWx1ZSBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgYW5kXG4gICAgICAvLyBhIGRlZmF1bHRWYWx1ZSBvcHRpb25zIHdhcyBwcm92aWRlZC5cbiAgICAgIGlmIChoYXNEZWZhdWx0ICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgPz8gZGVmYXVsdFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIEEga2V5IGNhbiBiZSBvcHRpb25hbCBhbmQgaGF2ZSBubyBkZWZhdWx0IHZhbHVlLlxuICAgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIGRvIG5vdCBwZXJmb3JtIGEgY29udmVyc2lvbixcbiAgICAgIC8vIGFuZCBkbyBub3QgYXNzaWduIHRoZSBrZXkgYSB2YWx1ZS5cbiAgICAgIGlmIChyZXF1aXJlZCB8fCBoYXNEZWZhdWx0IHx8IHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWUgPSBjb252ZXJ0ZXIodmFsdWUpXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9wdGlvbnMuYWxsb3dlZFZhbHVlcyAmJlxuICAgICAgICAgICFvcHRpb25zLmFsbG93ZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgIGhlYWRlcjogJ0RpY3Rpb25hcnknLFxuICAgICAgICAgICAgbWVzc2FnZTogYCR7dmFsdWV9IGlzIG5vdCBhbiBhY2NlcHRlZCB0eXBlLiBFeHBlY3RlZCBvbmUgb2YgJHtvcHRpb25zLmFsbG93ZWRWYWx1ZXMuam9pbignLCAnKX0uYFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBkaWN0W2tleV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWN0XG4gIH1cbn1cblxud2ViaWRsLm51bGxhYmxlQ29udmVydGVyID0gZnVuY3Rpb24gKGNvbnZlcnRlcikge1xuICByZXR1cm4gKFYpID0+IHtcbiAgICBpZiAoViA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFZcbiAgICB9XG5cbiAgICByZXR1cm4gY29udmVydGVyKFYpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy1ET01TdHJpbmdcbndlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyA9IGZ1bmN0aW9uIChWLCBvcHRzID0ge30pIHtcbiAgLy8gMS4gSWYgViBpcyBudWxsIGFuZCB0aGUgY29udmVyc2lvbiBpcyB0byBhbiBJREwgdHlwZVxuICAvLyAgICBhc3NvY2lhdGVkIHdpdGggdGhlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ11cbiAgLy8gICAgZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0aGUgRE9NU3RyaW5nIHZhbHVlXG4gIC8vICAgIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgc3RyaW5nLlxuICBpZiAoViA9PT0gbnVsbCAmJiBvcHRzLmxlZ2FjeU51bGxUb0VtcHR5U3RyaW5nKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyAyLiBMZXQgeCBiZSA/IFRvU3RyaW5nKFYpLlxuICBpZiAodHlwZW9mIFYgPT09ICdzeW1ib2wnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSBzeW1ib2wgdG8gc3RyaW5nLicpXG4gIH1cblxuICAvLyAzLiBSZXR1cm4gdGhlIElETCBET01TdHJpbmcgdmFsdWUgdGhhdCByZXByZXNlbnRzIHRoZVxuICAvLyAgICBzYW1lIHNlcXVlbmNlIG9mIGNvZGUgdW5pdHMgYXMgdGhlIG9uZSB0aGVcbiAgLy8gICAgRUNNQVNjcmlwdCBTdHJpbmcgdmFsdWUgeCByZXByZXNlbnRzLlxuICByZXR1cm4gU3RyaW5nKFYpXG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtQnl0ZVN0cmluZ1xud2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZyA9IGZ1bmN0aW9uIChWKSB7XG4gIC8vIDEuIExldCB4IGJlID8gVG9TdHJpbmcoVikuXG4gIC8vIE5vdGU6IERPTVN0cmluZyBjb252ZXJ0ZXIgcGVyZm9ybSA/IFRvU3RyaW5nKFYpXG4gIGNvbnN0IHggPSB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcoVilcblxuICAvLyAyLiBJZiB0aGUgdmFsdWUgb2YgYW55IGVsZW1lbnQgb2YgeCBpcyBncmVhdGVyIHRoYW5cbiAgLy8gICAgMjU1LCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgeC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpZiAoeC5jaGFyQ29kZUF0KGluZGV4KSA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IHRvIGEgQnl0ZVN0cmluZyBiZWNhdXNlIHRoZSBjaGFyYWN0ZXIgYXQgJyArXG4gICAgICAgIGBpbmRleCAke2luZGV4fSBoYXMgYSB2YWx1ZSBvZiAke3guY2hhckNvZGVBdChpbmRleCl9IHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiAyNTUuYFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIFJldHVybiBhbiBJREwgQnl0ZVN0cmluZyB2YWx1ZSB3aG9zZSBsZW5ndGggaXMgdGhlXG4gIC8vICAgIGxlbmd0aCBvZiB4LCBhbmQgd2hlcmUgdGhlIHZhbHVlIG9mIGVhY2ggZWxlbWVudCBpc1xuICAvLyAgICB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB4LlxuICByZXR1cm4geFxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLVVTVlN0cmluZ1xud2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nID0gdG9VU1ZTdHJpbmdcblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy1ib29sZWFuXG53ZWJpZGwuY29udmVydGVycy5ib29sZWFuID0gZnVuY3Rpb24gKFYpIHtcbiAgLy8gMS4gTGV0IHggYmUgdGhlIHJlc3VsdCBvZiBjb21wdXRpbmcgVG9Cb29sZWFuKFYpLlxuICBjb25zdCB4ID0gQm9vbGVhbihWKVxuXG4gIC8vIDIuIFJldHVybiB0aGUgSURMIGJvb2xlYW4gdmFsdWUgdGhhdCBpcyB0aGUgb25lIHRoYXQgcmVwcmVzZW50c1xuICAvLyAgICB0aGUgc2FtZSB0cnV0aCB2YWx1ZSBhcyB0aGUgRUNNQVNjcmlwdCBCb29sZWFuIHZhbHVlIHguXG4gIHJldHVybiB4XG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtYW55XG53ZWJpZGwuY29udmVydGVycy5hbnkgPSBmdW5jdGlvbiAoVikge1xuICByZXR1cm4gVlxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLWxvbmctbG9uZ1xud2ViaWRsLmNvbnZlcnRlcnNbJ2xvbmcgbG9uZyddID0gZnVuY3Rpb24gKFYpIHtcbiAgLy8gMS4gTGV0IHggYmUgPyBDb252ZXJ0VG9JbnQoViwgNjQsIFwic2lnbmVkXCIpLlxuICBjb25zdCB4ID0gd2ViaWRsLnV0aWwuQ29udmVydFRvSW50KFYsIDY0LCAnc2lnbmVkJylcblxuICAvLyAyLiBSZXR1cm4gdGhlIElETCBsb25nIGxvbmcgdmFsdWUgdGhhdCByZXByZXNlbnRzXG4gIC8vICAgIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYXMgeC5cbiAgcmV0dXJuIHhcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNlcy11bnNpZ25lZC1sb25nLWxvbmdcbndlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBsb25nIGxvbmcnXSA9IGZ1bmN0aW9uIChWKSB7XG4gIC8vIDEuIExldCB4IGJlID8gQ29udmVydFRvSW50KFYsIDY0LCBcInVuc2lnbmVkXCIpLlxuICBjb25zdCB4ID0gd2ViaWRsLnV0aWwuQ29udmVydFRvSW50KFYsIDY0LCAndW5zaWduZWQnKVxuXG4gIC8vIDIuIFJldHVybiB0aGUgSURMIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSB0aGF0XG4gIC8vICAgIHJlcHJlc2VudHMgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhcyB4LlxuICByZXR1cm4geFxufVxuXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLXVuc2lnbmVkLWxvbmdcbndlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBsb25nJ10gPSBmdW5jdGlvbiAoVikge1xuICAvLyAxLiBMZXQgeCBiZSA/IENvbnZlcnRUb0ludChWLCAzMiwgXCJ1bnNpZ25lZFwiKS5cbiAgY29uc3QgeCA9IHdlYmlkbC51dGlsLkNvbnZlcnRUb0ludChWLCAzMiwgJ3Vuc2lnbmVkJylcblxuICAvLyAyLiBSZXR1cm4gdGhlIElETCB1bnNpZ25lZCBsb25nIHZhbHVlIHRoYXRcbiAgLy8gICAgcmVwcmVzZW50cyB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFzIHguXG4gIHJldHVybiB4XG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtdW5zaWduZWQtc2hvcnRcbndlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBzaG9ydCddID0gZnVuY3Rpb24gKFYsIG9wdHMpIHtcbiAgLy8gMS4gTGV0IHggYmUgPyBDb252ZXJ0VG9JbnQoViwgMTYsIFwidW5zaWduZWRcIikuXG4gIGNvbnN0IHggPSB3ZWJpZGwudXRpbC5Db252ZXJ0VG9JbnQoViwgMTYsICd1bnNpZ25lZCcsIG9wdHMpXG5cbiAgLy8gMi4gUmV0dXJuIHRoZSBJREwgdW5zaWduZWQgc2hvcnQgdmFsdWUgdGhhdCByZXByZXNlbnRzXG4gIC8vICAgIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYXMgeC5cbiAgcmV0dXJuIHhcbn1cblxuLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNpZGwtQXJyYXlCdWZmZXJcbndlYmlkbC5jb252ZXJ0ZXJzLkFycmF5QnVmZmVyID0gZnVuY3Rpb24gKFYsIG9wdHMgPSB7fSkge1xuICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIG9yIFYgZG9lcyBub3QgaGF2ZSBhblxuICAvLyAgICBbW0FycmF5QnVmZmVyRGF0YV1dIGludGVybmFsIHNsb3QsIHRoZW4gdGhyb3cgYVxuICAvLyAgICBUeXBlRXJyb3IuXG4gIC8vIHNlZTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1hcnJheWJ1ZmZlci1pbnN0YW5jZXNcbiAgLy8gc2VlOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLXNoYXJlZGFycmF5YnVmZmVyLWluc3RhbmNlc1xuICBpZiAoXG4gICAgd2ViaWRsLnV0aWwuVHlwZShWKSAhPT0gJ09iamVjdCcgfHxcbiAgICAhdHlwZXMuaXNBbnlBcnJheUJ1ZmZlcihWKVxuICApIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmNvbnZlcnNpb25GYWlsZWQoe1xuICAgICAgcHJlZml4OiBgJHtWfWAsXG4gICAgICBhcmd1bWVudDogYCR7Vn1gLFxuICAgICAgdHlwZXM6IFsnQXJyYXlCdWZmZXInXVxuICAgIH0pXG4gIH1cblxuICAvLyAyLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbQWxsb3dTaGFyZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYW5kXG4gIC8vICAgIElzU2hhcmVkQXJyYXlCdWZmZXIoVikgaXMgdHJ1ZSwgdGhlbiB0aHJvdyBhXG4gIC8vICAgIFR5cGVFcnJvci5cbiAgaWYgKG9wdHMuYWxsb3dTaGFyZWQgPT09IGZhbHNlICYmIHR5cGVzLmlzU2hhcmVkQXJyYXlCdWZmZXIoVikpIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICBoZWFkZXI6ICdBcnJheUJ1ZmZlcicsXG4gICAgICBtZXNzYWdlOiAnU2hhcmVkQXJyYXlCdWZmZXIgaXMgbm90IGFsbG93ZWQuJ1xuICAgIH0pXG4gIH1cblxuICAvLyAzLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbQWxsb3dSZXNpemFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYW5kXG4gIC8vICAgIElzUmVzaXphYmxlQXJyYXlCdWZmZXIoVikgaXMgdHJ1ZSwgdGhlbiB0aHJvdyBhXG4gIC8vICAgIFR5cGVFcnJvci5cbiAgLy8gTm90ZTogcmVzaXphYmxlIEFycmF5QnVmZmVycyBhcmUgY3VycmVudGx5IGEgcHJvcG9zYWwuXG5cbiAgLy8gNC4gUmV0dXJuIHRoZSBJREwgQXJyYXlCdWZmZXIgdmFsdWUgdGhhdCBpcyBhXG4gIC8vICAgIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QgYXMgVi5cbiAgcmV0dXJuIFZcbn1cblxud2ViaWRsLmNvbnZlcnRlcnMuVHlwZWRBcnJheSA9IGZ1bmN0aW9uIChWLCBULCBvcHRzID0ge30pIHtcbiAgLy8gMS4gTGV0IFQgYmUgdGhlIElETCB0eXBlIFYgaXMgYmVpbmcgY29udmVydGVkIHRvLlxuXG4gIC8vIDIuIElmIFR5cGUoVikgaXMgbm90IE9iamVjdCwgb3IgViBkb2VzIG5vdCBoYXZlIGFcbiAgLy8gICAgW1tUeXBlZEFycmF5TmFtZV1dIGludGVybmFsIHNsb3Qgd2l0aCBhIHZhbHVlXG4gIC8vICAgIGVxdWFsIHRvIFRcdTIwMTlzIG5hbWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIGlmIChcbiAgICB3ZWJpZGwudXRpbC5UeXBlKFYpICE9PSAnT2JqZWN0JyB8fFxuICAgICF0eXBlcy5pc1R5cGVkQXJyYXkoVikgfHxcbiAgICBWLmNvbnN0cnVjdG9yLm5hbWUgIT09IFQubmFtZVxuICApIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmNvbnZlcnNpb25GYWlsZWQoe1xuICAgICAgcHJlZml4OiBgJHtULm5hbWV9YCxcbiAgICAgIGFyZ3VtZW50OiBgJHtWfWAsXG4gICAgICB0eXBlczogW1QubmFtZV1cbiAgICB9KVxuICB9XG5cbiAgLy8gMy4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90IHRvIGFuIElETCB0eXBlIGFzc29jaWF0ZWRcbiAgLy8gICAgd2l0aCB0aGUgW0FsbG93U2hhcmVkXSBleHRlbmRlZCBhdHRyaWJ1dGUsIGFuZFxuICAvLyAgICBJc1NoYXJlZEFycmF5QnVmZmVyKFYuW1tWaWV3ZWRBcnJheUJ1ZmZlcl1dKSBpc1xuICAvLyAgICB0cnVlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICBpZiAob3B0cy5hbGxvd1NoYXJlZCA9PT0gZmFsc2UgJiYgdHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihWLmJ1ZmZlcikpIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICBoZWFkZXI6ICdBcnJheUJ1ZmZlcicsXG4gICAgICBtZXNzYWdlOiAnU2hhcmVkQXJyYXlCdWZmZXIgaXMgbm90IGFsbG93ZWQuJ1xuICAgIH0pXG4gIH1cblxuICAvLyA0LiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgdG8gYW4gSURMIHR5cGUgYXNzb2NpYXRlZFxuICAvLyAgICB3aXRoIHRoZSBbQWxsb3dSZXNpemFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYW5kXG4gIC8vICAgIElzUmVzaXphYmxlQXJyYXlCdWZmZXIoVi5bW1ZpZXdlZEFycmF5QnVmZmVyXV0pIGlzXG4gIC8vICAgIHRydWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIC8vIE5vdGU6IHJlc2l6YWJsZSBhcnJheSBidWZmZXJzIGFyZSBjdXJyZW50bHkgYSBwcm9wb3NhbFxuXG4gIC8vIDUuIFJldHVybiB0aGUgSURMIHZhbHVlIG9mIHR5cGUgVCB0aGF0IGlzIGEgcmVmZXJlbmNlXG4gIC8vICAgIHRvIHRoZSBzYW1lIG9iamVjdCBhcyBWLlxuICByZXR1cm4gVlxufVxuXG53ZWJpZGwuY29udmVydGVycy5EYXRhVmlldyA9IGZ1bmN0aW9uIChWLCBvcHRzID0ge30pIHtcbiAgLy8gMS4gSWYgVHlwZShWKSBpcyBub3QgT2JqZWN0LCBvciBWIGRvZXMgbm90IGhhdmUgYVxuICAvLyAgICBbW0RhdGFWaWV3XV0gaW50ZXJuYWwgc2xvdCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKHdlYmlkbC51dGlsLlR5cGUoVikgIT09ICdPYmplY3QnIHx8ICF0eXBlcy5pc0RhdGFWaWV3KFYpKSB7XG4gICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgaGVhZGVyOiAnRGF0YVZpZXcnLFxuICAgICAgbWVzc2FnZTogJ09iamVjdCBpcyBub3QgYSBEYXRhVmlldy4nXG4gICAgfSlcbiAgfVxuXG4gIC8vIDIuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCB0byBhbiBJREwgdHlwZSBhc3NvY2lhdGVkXG4gIC8vICAgIHdpdGggdGhlIFtBbGxvd1NoYXJlZF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhbmRcbiAgLy8gICAgSXNTaGFyZWRBcnJheUJ1ZmZlcihWLltbVmlld2VkQXJyYXlCdWZmZXJdXSkgaXMgdHJ1ZSxcbiAgLy8gICAgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKG9wdHMuYWxsb3dTaGFyZWQgPT09IGZhbHNlICYmIHR5cGVzLmlzU2hhcmVkQXJyYXlCdWZmZXIoVi5idWZmZXIpKSB7XG4gICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgaGVhZGVyOiAnQXJyYXlCdWZmZXInLFxuICAgICAgbWVzc2FnZTogJ1NoYXJlZEFycmF5QnVmZmVyIGlzIG5vdCBhbGxvd2VkLidcbiAgICB9KVxuICB9XG5cbiAgLy8gMy4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90IHRvIGFuIElETCB0eXBlIGFzc29jaWF0ZWRcbiAgLy8gICAgd2l0aCB0aGUgW0FsbG93UmVzaXphYmxlXSBleHRlbmRlZCBhdHRyaWJ1dGUsIGFuZFxuICAvLyAgICBJc1Jlc2l6YWJsZUFycmF5QnVmZmVyKFYuW1tWaWV3ZWRBcnJheUJ1ZmZlcl1dKSBpc1xuICAvLyAgICB0cnVlLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAvLyBOb3RlOiByZXNpemFibGUgQXJyYXlCdWZmZXJzIGFyZSBjdXJyZW50bHkgYSBwcm9wb3NhbFxuXG4gIC8vIDQuIFJldHVybiB0aGUgSURMIERhdGFWaWV3IHZhbHVlIHRoYXQgaXMgYSByZWZlcmVuY2VcbiAgLy8gICAgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIFYuXG4gIHJldHVybiBWXG59XG5cbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jQnVmZmVyU291cmNlXG53ZWJpZGwuY29udmVydGVycy5CdWZmZXJTb3VyY2UgPSBmdW5jdGlvbiAoViwgb3B0cyA9IHt9KSB7XG4gIGlmICh0eXBlcy5pc0FueUFycmF5QnVmZmVyKFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkFycmF5QnVmZmVyKFYsIG9wdHMpXG4gIH1cblxuICBpZiAodHlwZXMuaXNUeXBlZEFycmF5KFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlR5cGVkQXJyYXkoViwgVi5jb25zdHJ1Y3RvcilcbiAgfVxuXG4gIGlmICh0eXBlcy5pc0RhdGFWaWV3KFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkRhdGFWaWV3KFYsIG9wdHMpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDb3VsZCBub3QgY29udmVydCAke1Z9IHRvIGEgQnVmZmVyU291cmNlLmApXG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxCeXRlU3RyaW5nPiddID0gd2ViaWRsLnNlcXVlbmNlQ29udmVydGVyKFxuICB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nXG4pXG5cbndlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5nPj4nXSA9IHdlYmlkbC5zZXF1ZW5jZUNvbnZlcnRlcihcbiAgd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPEJ5dGVTdHJpbmc+J11cbilcblxud2ViaWRsLmNvbnZlcnRlcnNbJ3JlY29yZDxCeXRlU3RyaW5nLCBCeXRlU3RyaW5nPiddID0gd2ViaWRsLnJlY29yZENvbnZlcnRlcihcbiAgd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZyxcbiAgd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZ1xuKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgd2ViaWRsXG59XG4iLCAiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgYXRvYiB9ID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHsgaXNvbW9ycGhpY0RlY29kZSB9ID0gcmVxdWlyZSgnLi91dGlsJylcblxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXG5cbi8qKlxuICogQHNlZSBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtdG9rZW4tY29kZS1wb2ludFxuICovXG5jb25zdCBIVFRQX1RPS0VOX0NPREVQT0lOVFMgPSAvXlshIyQlJicqKy0uXl98fkEtWmEtejAtOV0rJC9cbmNvbnN0IEhUVFBfV0hJVEVTUEFDRV9SRUdFWCA9IC8oXFx1MDAwQXxcXHUwMDBEfFxcdTAwMDl8XFx1MDAyMCkvIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbi8qKlxuICogQHNlZSBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50XG4gKi9cbmNvbnN0IEhUVFBfUVVPVEVEX1NUUklOR19UT0tFTlMgPSAvW1xcdTAwMDl8XFx1MDAyMC1cXHUwMDdFfFxcdTAwODAtXFx1MDBGRl0vIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RhdGEtdXJsLXByb2Nlc3NvclxuLyoqIEBwYXJhbSB7VVJMfSBkYXRhVVJMICovXG5mdW5jdGlvbiBkYXRhVVJMUHJvY2Vzc29yIChkYXRhVVJMKSB7XG4gIC8vIDEuIEFzc2VydDogZGF0YVVSTFx1MjAxOXMgc2NoZW1lIGlzIFwiZGF0YVwiLlxuICBhc3NlcnQoZGF0YVVSTC5wcm90b2NvbCA9PT0gJ2RhdGE6JylcblxuICAvLyAyLiBMZXQgaW5wdXQgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBVUkxcbiAgLy8gc2VyaWFsaXplciBvbiBkYXRhVVJMIHdpdGggZXhjbHVkZSBmcmFnbWVudFxuICAvLyBzZXQgdG8gdHJ1ZS5cbiAgbGV0IGlucHV0ID0gVVJMU2VyaWFsaXplcihkYXRhVVJMLCB0cnVlKVxuXG4gIC8vIDMuIFJlbW92ZSB0aGUgbGVhZGluZyBcImRhdGE6XCIgc3RyaW5nIGZyb20gaW5wdXQuXG4gIGlucHV0ID0gaW5wdXQuc2xpY2UoNSlcblxuICAvLyA0LiBMZXQgcG9zaXRpb24gcG9pbnQgYXQgdGhlIHN0YXJ0IG9mIGlucHV0LlxuICBjb25zdCBwb3NpdGlvbiA9IHsgcG9zaXRpb246IDAgfVxuXG4gIC8vIDUuIExldCBtaW1lVHlwZSBiZSB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmcgYVxuICAvLyBzZXF1ZW5jZSBvZiBjb2RlIHBvaW50cyB0aGF0IGFyZSBub3QgZXF1YWxcbiAgLy8gdG8gVSswMDJDICgsKSwgZ2l2ZW4gcG9zaXRpb24uXG4gIGxldCBtaW1lVHlwZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICcsJyxcbiAgICBpbnB1dCxcbiAgICBwb3NpdGlvblxuICApXG5cbiAgLy8gNi4gU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZVxuICAvLyBmcm9tIG1pbWVUeXBlLlxuICAvLyBVbmRpY2kgaW1wbGVtZW50YXRpb24gbm90ZTogd2UgbmVlZCB0byBzdG9yZSB0aGVcbiAgLy8gbGVuZ3RoIGJlY2F1c2UgaWYgdGhlIG1pbWV0eXBlIGhhcyBzcGFjZXMgcmVtb3ZlZCxcbiAgLy8gdGhlIHdyb25nIGFtb3VudCB3aWxsIGJlIHNsaWNlZCBmcm9tIHRoZSBpbnB1dCBpblxuICAvLyBzdGVwICM5XG4gIGNvbnN0IG1pbWVUeXBlTGVuZ3RoID0gbWltZVR5cGUubGVuZ3RoXG4gIG1pbWVUeXBlID0gcmVtb3ZlQVNDSUlXaGl0ZXNwYWNlKG1pbWVUeXBlLCB0cnVlLCB0cnVlKVxuXG4gIC8vIDcuIElmIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiBpbnB1dCwgdGhlblxuICAvLyByZXR1cm4gZmFpbHVyZVxuICBpZiAocG9zaXRpb24ucG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgLy8gOC4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLlxuICBwb3NpdGlvbi5wb3NpdGlvbisrXG5cbiAgLy8gOS4gTGV0IGVuY29kZWRCb2R5IGJlIHRoZSByZW1haW5kZXIgb2YgaW5wdXQuXG4gIGNvbnN0IGVuY29kZWRCb2R5ID0gaW5wdXQuc2xpY2UobWltZVR5cGVMZW5ndGggKyAxKVxuXG4gIC8vIDEwLiBMZXQgYm9keSBiZSB0aGUgcGVyY2VudC1kZWNvZGluZyBvZiBlbmNvZGVkQm9keS5cbiAgbGV0IGJvZHkgPSBzdHJpbmdQZXJjZW50RGVjb2RlKGVuY29kZWRCb2R5KVxuXG4gIC8vIDExLiBJZiBtaW1lVHlwZSBlbmRzIHdpdGggVSswMDNCICg7KSwgZm9sbG93ZWQgYnlcbiAgLy8gemVybyBvciBtb3JlIFUrMDAyMCBTUEFDRSwgZm9sbG93ZWQgYnkgYW4gQVNDSUlcbiAgLy8gY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgXCJiYXNlNjRcIiwgdGhlbjpcbiAgaWYgKC87KFxcdTAwMjApezAsfWJhc2U2NCQvaS50ZXN0KG1pbWVUeXBlKSkge1xuICAgIC8vIDEuIExldCBzdHJpbmdCb2R5IGJlIHRoZSBpc29tb3JwaGljIGRlY29kZSBvZiBib2R5LlxuICAgIGNvbnN0IHN0cmluZ0JvZHkgPSBpc29tb3JwaGljRGVjb2RlKGJvZHkpXG5cbiAgICAvLyAyLiBTZXQgYm9keSB0byB0aGUgZm9yZ2l2aW5nLWJhc2U2NCBkZWNvZGUgb2ZcbiAgICAvLyBzdHJpbmdCb2R5LlxuICAgIGJvZHkgPSBmb3JnaXZpbmdCYXNlNjQoc3RyaW5nQm9keSlcblxuICAgIC8vIDMuIElmIGJvZHkgaXMgZmFpbHVyZSwgdGhlbiByZXR1cm4gZmFpbHVyZS5cbiAgICBpZiAoYm9keSA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICByZXR1cm4gJ2ZhaWx1cmUnXG4gICAgfVxuXG4gICAgLy8gNC4gUmVtb3ZlIHRoZSBsYXN0IDYgY29kZSBwb2ludHMgZnJvbSBtaW1lVHlwZS5cbiAgICBtaW1lVHlwZSA9IG1pbWVUeXBlLnNsaWNlKDAsIC02KVxuXG4gICAgLy8gNS4gUmVtb3ZlIHRyYWlsaW5nIFUrMDAyMCBTUEFDRSBjb2RlIHBvaW50cyBmcm9tIG1pbWVUeXBlLFxuICAgIC8vIGlmIGFueS5cbiAgICBtaW1lVHlwZSA9IG1pbWVUeXBlLnJlcGxhY2UoLyhcXHUwMDIwKSskLywgJycpXG5cbiAgICAvLyA2LiBSZW1vdmUgdGhlIGxhc3QgVSswMDNCICg7KSBjb2RlIHBvaW50IGZyb20gbWltZVR5cGUuXG4gICAgbWltZVR5cGUgPSBtaW1lVHlwZS5zbGljZSgwLCAtMSlcbiAgfVxuXG4gIC8vIDEyLiBJZiBtaW1lVHlwZSBzdGFydHMgd2l0aCBVKzAwM0IgKDspLCB0aGVuIHByZXBlbmRcbiAgLy8gXCJ0ZXh0L3BsYWluXCIgdG8gbWltZVR5cGUuXG4gIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKCc7JykpIHtcbiAgICBtaW1lVHlwZSA9ICd0ZXh0L3BsYWluJyArIG1pbWVUeXBlXG4gIH1cblxuICAvLyAxMy4gTGV0IG1pbWVUeXBlUmVjb3JkIGJlIHRoZSByZXN1bHQgb2YgcGFyc2luZ1xuICAvLyBtaW1lVHlwZS5cbiAgbGV0IG1pbWVUeXBlUmVjb3JkID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSlcblxuICAvLyAxNC4gSWYgbWltZVR5cGVSZWNvcmQgaXMgZmFpbHVyZSwgdGhlbiBzZXRcbiAgLy8gbWltZVR5cGVSZWNvcmQgdG8gdGV4dC9wbGFpbjtjaGFyc2V0PVVTLUFTQ0lJLlxuICBpZiAobWltZVR5cGVSZWNvcmQgPT09ICdmYWlsdXJlJykge1xuICAgIG1pbWVUeXBlUmVjb3JkID0gcGFyc2VNSU1FVHlwZSgndGV4dC9wbGFpbjtjaGFyc2V0PVVTLUFTQ0lJJylcbiAgfVxuXG4gIC8vIDE1LiBSZXR1cm4gYSBuZXcgZGF0YTogVVJMIHN0cnVjdCB3aG9zZSBNSU1FXG4gIC8vIHR5cGUgaXMgbWltZVR5cGVSZWNvcmQgYW5kIGJvZHkgaXMgYm9keS5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RhdGEtdXJsLXN0cnVjdFxuICByZXR1cm4geyBtaW1lVHlwZTogbWltZVR5cGVSZWNvcmQsIGJvZHkgfVxufVxuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXNlcmlhbGl6ZXJcbi8qKlxuICogQHBhcmFtIHtVUkx9IHVybFxuICogQHBhcmFtIHtib29sZWFufSBleGNsdWRlRnJhZ21lbnRcbiAqL1xuZnVuY3Rpb24gVVJMU2VyaWFsaXplciAodXJsLCBleGNsdWRlRnJhZ21lbnQgPSBmYWxzZSkge1xuICBpZiAoIWV4Y2x1ZGVGcmFnbWVudCkge1xuICAgIHJldHVybiB1cmwuaHJlZlxuICB9XG5cbiAgY29uc3QgaHJlZiA9IHVybC5ocmVmXG4gIGNvbnN0IGhhc2hMZW5ndGggPSB1cmwuaGFzaC5sZW5ndGhcblxuICByZXR1cm4gaGFzaExlbmd0aCA9PT0gMCA/IGhyZWYgOiBocmVmLnN1YnN0cmluZygwLCBocmVmLmxlbmd0aCAtIGhhc2hMZW5ndGgpXG59XG5cbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNjb2xsZWN0LWEtc2VxdWVuY2Utb2YtY29kZS1wb2ludHNcbi8qKlxuICogQHBhcmFtIHsoY2hhcjogc3RyaW5nKSA9PiBib29sZWFufSBjb25kaXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICogQHBhcmFtIHt7IHBvc2l0aW9uOiBudW1iZXIgfX0gcG9zaXRpb25cbiAqL1xuZnVuY3Rpb24gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50cyAoY29uZGl0aW9uLCBpbnB1dCwgcG9zaXRpb24pIHtcbiAgLy8gMS4gTGV0IHJlc3VsdCBiZSB0aGUgZW1wdHkgc3RyaW5nLlxuICBsZXQgcmVzdWx0ID0gJydcblxuICAvLyAyLiBXaGlsZSBwb3NpdGlvbiBkb2Vzblx1MjAxOXQgcG9pbnQgcGFzdCB0aGUgZW5kIG9mIGlucHV0IGFuZCB0aGVcbiAgLy8gY29kZSBwb2ludCBhdCBwb3NpdGlvbiB3aXRoaW4gaW5wdXQgbWVldHMgdGhlIGNvbmRpdGlvbiBjb25kaXRpb246XG4gIHdoaWxlIChwb3NpdGlvbi5wb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCAmJiBjb25kaXRpb24oaW5wdXRbcG9zaXRpb24ucG9zaXRpb25dKSkge1xuICAgIC8vIDEuIEFwcGVuZCB0aGF0IGNvZGUgcG9pbnQgdG8gdGhlIGVuZCBvZiByZXN1bHQuXG4gICAgcmVzdWx0ICs9IGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXVxuXG4gICAgLy8gMi4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLlxuICAgIHBvc2l0aW9uLnBvc2l0aW9uKytcbiAgfVxuXG4gIC8vIDMuIFJldHVybiByZXN1bHQuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBBIGZhc3RlciBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzIHRoYXQgb25seSB3b3JrcyB3aGVuIGNvbXBhcmluZyBhIHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hhclxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge3sgcG9zaXRpb246IG51bWJlciB9fSBwb3NpdGlvblxuICovXG5mdW5jdGlvbiBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdCAoY2hhciwgaW5wdXQsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGlkeCA9IGlucHV0LmluZGV4T2YoY2hhciwgcG9zaXRpb24ucG9zaXRpb24pXG4gIGNvbnN0IHN0YXJ0ID0gcG9zaXRpb24ucG9zaXRpb25cblxuICBpZiAoaWR4ID09PSAtMSkge1xuICAgIHBvc2l0aW9uLnBvc2l0aW9uID0gaW5wdXQubGVuZ3RoXG4gICAgcmV0dXJuIGlucHV0LnNsaWNlKHN0YXJ0KVxuICB9XG5cbiAgcG9zaXRpb24ucG9zaXRpb24gPSBpZHhcbiAgcmV0dXJuIGlucHV0LnNsaWNlKHN0YXJ0LCBwb3NpdGlvbi5wb3NpdGlvbilcbn1cblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzdHJpbmctcGVyY2VudC1kZWNvZGVcbi8qKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgKi9cbmZ1bmN0aW9uIHN0cmluZ1BlcmNlbnREZWNvZGUgKGlucHV0KSB7XG4gIC8vIDEuIExldCBieXRlcyBiZSB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgaW5wdXQuXG4gIGNvbnN0IGJ5dGVzID0gZW5jb2Rlci5lbmNvZGUoaW5wdXQpXG5cbiAgLy8gMi4gUmV0dXJuIHRoZSBwZXJjZW50LWRlY29kaW5nIG9mIGJ5dGVzLlxuICByZXR1cm4gcGVyY2VudERlY29kZShieXRlcylcbn1cblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNwZXJjZW50LWRlY29kZVxuLyoqIEBwYXJhbSB7VWludDhBcnJheX0gaW5wdXQgKi9cbmZ1bmN0aW9uIHBlcmNlbnREZWNvZGUgKGlucHV0KSB7XG4gIC8vIDEuIExldCBvdXRwdXQgYmUgYW4gZW1wdHkgYnl0ZSBzZXF1ZW5jZS5cbiAgLyoqIEB0eXBlIHtudW1iZXJbXX0gKi9cbiAgY29uc3Qgb3V0cHV0ID0gW11cblxuICAvLyAyLiBGb3IgZWFjaCBieXRlIGJ5dGUgaW4gaW5wdXQ6XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBieXRlID0gaW5wdXRbaV1cblxuICAgIC8vIDEuIElmIGJ5dGUgaXMgbm90IDB4MjUgKCUpLCB0aGVuIGFwcGVuZCBieXRlIHRvIG91dHB1dC5cbiAgICBpZiAoYnl0ZSAhPT0gMHgyNSkge1xuICAgICAgb3V0cHV0LnB1c2goYnl0ZSlcblxuICAgIC8vIDIuIE90aGVyd2lzZSwgaWYgYnl0ZSBpcyAweDI1ICglKSBhbmQgdGhlIG5leHQgdHdvIGJ5dGVzXG4gICAgLy8gYWZ0ZXIgYnl0ZSBpbiBpbnB1dCBhcmUgbm90IGluIHRoZSByYW5nZXNcbiAgICAvLyAweDMwICgwKSB0byAweDM5ICg5KSwgMHg0MSAoQSkgdG8gMHg0NiAoRiksXG4gICAgLy8gYW5kIDB4NjEgKGEpIHRvIDB4NjYgKGYpLCBhbGwgaW5jbHVzaXZlLCBhcHBlbmQgYnl0ZVxuICAgIC8vIHRvIG91dHB1dC5cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYnl0ZSA9PT0gMHgyNSAmJlxuICAgICAgIS9eWzAtOUEtRmEtZl17Mn0kL2kudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSlcbiAgICApIHtcbiAgICAgIG91dHB1dC5wdXNoKDB4MjUpXG5cbiAgICAvLyAzLiBPdGhlcndpc2U6XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDEuIExldCBieXRlUG9pbnQgYmUgdGhlIHR3byBieXRlcyBhZnRlciBieXRlIGluIGlucHV0LFxuICAgICAgLy8gZGVjb2RlZCwgYW5kIHRoZW4gaW50ZXJwcmV0ZWQgYXMgaGV4YWRlY2ltYWwgbnVtYmVyLlxuICAgICAgY29uc3QgbmV4dFR3b0J5dGVzID0gU3RyaW5nLmZyb21DaGFyQ29kZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSlcbiAgICAgIGNvbnN0IGJ5dGVQb2ludCA9IE51bWJlci5wYXJzZUludChuZXh0VHdvQnl0ZXMsIDE2KVxuXG4gICAgICAvLyAyLiBBcHBlbmQgYSBieXRlIHdob3NlIHZhbHVlIGlzIGJ5dGVQb2ludCB0byBvdXRwdXQuXG4gICAgICBvdXRwdXQucHVzaChieXRlUG9pbnQpXG5cbiAgICAgIC8vIDMuIFNraXAgdGhlIG5leHQgdHdvIGJ5dGVzIGluIGlucHV0LlxuICAgICAgaSArPSAyXG4gICAgfVxuICB9XG5cbiAgLy8gMy4gUmV0dXJuIG91dHB1dC5cbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShvdXRwdXQpXG59XG5cbi8vIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jcGFyc2UtYS1taW1lLXR5cGVcbi8qKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgKi9cbmZ1bmN0aW9uIHBhcnNlTUlNRVR5cGUgKGlucHV0KSB7XG4gIC8vIDEuIFJlbW92ZSBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgSFRUUCB3aGl0ZXNwYWNlXG4gIC8vIGZyb20gaW5wdXQuXG4gIGlucHV0ID0gcmVtb3ZlSFRUUFdoaXRlc3BhY2UoaW5wdXQsIHRydWUsIHRydWUpXG5cbiAgLy8gMi4gTGV0IHBvc2l0aW9uIGJlIGEgcG9zaXRpb24gdmFyaWFibGUgZm9yIGlucHV0LFxuICAvLyBpbml0aWFsbHkgcG9pbnRpbmcgYXQgdGhlIHN0YXJ0IG9mIGlucHV0LlxuICBjb25zdCBwb3NpdGlvbiA9IHsgcG9zaXRpb246IDAgfVxuXG4gIC8vIDMuIExldCB0eXBlIGJlIHRoZSByZXN1bHQgb2YgY29sbGVjdGluZyBhIHNlcXVlbmNlXG4gIC8vIG9mIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBVKzAwMkYgKC8pIGZyb21cbiAgLy8gaW5wdXQsIGdpdmVuIHBvc2l0aW9uLlxuICBjb25zdCB0eXBlID0gY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QoXG4gICAgJy8nLFxuICAgIGlucHV0LFxuICAgIHBvc2l0aW9uXG4gIClcblxuICAvLyA0LiBJZiB0eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcgb3IgZG9lcyBub3Qgc29sZWx5XG4gIC8vIGNvbnRhaW4gSFRUUCB0b2tlbiBjb2RlIHBvaW50cywgdGhlbiByZXR1cm4gZmFpbHVyZS5cbiAgLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNodHRwLXRva2VuLWNvZGUtcG9pbnRcbiAgaWYgKHR5cGUubGVuZ3RoID09PSAwIHx8ICFIVFRQX1RPS0VOX0NPREVQT0lOVFMudGVzdCh0eXBlKSkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIC8vIDUuIElmIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiBpbnB1dCwgdGhlbiByZXR1cm5cbiAgLy8gZmFpbHVyZVxuICBpZiAocG9zaXRpb24ucG9zaXRpb24gPiBpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gJ2ZhaWx1cmUnXG4gIH1cblxuICAvLyA2LiBBZHZhbmNlIHBvc2l0aW9uIGJ5IDEuIChUaGlzIHNraXBzIHBhc3QgVSswMDJGICgvKS4pXG4gIHBvc2l0aW9uLnBvc2l0aW9uKytcblxuICAvLyA3LiBMZXQgc3VidHlwZSBiZSB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmcgYSBzZXF1ZW5jZSBvZlxuICAvLyBjb2RlIHBvaW50cyB0aGF0IGFyZSBub3QgVSswMDNCICg7KSBmcm9tIGlucHV0LCBnaXZlblxuICAvLyBwb3NpdGlvbi5cbiAgbGV0IHN1YnR5cGUgPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdChcbiAgICAnOycsXG4gICAgaW5wdXQsXG4gICAgcG9zaXRpb25cbiAgKVxuXG4gIC8vIDguIFJlbW92ZSBhbnkgdHJhaWxpbmcgSFRUUCB3aGl0ZXNwYWNlIGZyb20gc3VidHlwZS5cbiAgc3VidHlwZSA9IHJlbW92ZUhUVFBXaGl0ZXNwYWNlKHN1YnR5cGUsIGZhbHNlLCB0cnVlKVxuXG4gIC8vIDkuIElmIHN1YnR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZyBvciBkb2VzIG5vdCBzb2xlbHlcbiAgLy8gY29udGFpbiBIVFRQIHRva2VuIGNvZGUgcG9pbnRzLCB0aGVuIHJldHVybiBmYWlsdXJlLlxuICBpZiAoc3VidHlwZS5sZW5ndGggPT09IDAgfHwgIUhUVFBfVE9LRU5fQ09ERVBPSU5UUy50ZXN0KHN1YnR5cGUpKSB7XG4gICAgcmV0dXJuICdmYWlsdXJlJ1xuICB9XG5cbiAgY29uc3QgdHlwZUxvd2VyY2FzZSA9IHR5cGUudG9Mb3dlckNhc2UoKVxuICBjb25zdCBzdWJ0eXBlTG93ZXJjYXNlID0gc3VidHlwZS50b0xvd2VyQ2FzZSgpXG5cbiAgLy8gMTAuIExldCBtaW1lVHlwZSBiZSBhIG5ldyBNSU1FIHR5cGUgcmVjb3JkIHdob3NlIHR5cGVcbiAgLy8gaXMgdHlwZSwgaW4gQVNDSUkgbG93ZXJjYXNlLCBhbmQgc3VidHlwZSBpcyBzdWJ0eXBlLFxuICAvLyBpbiBBU0NJSSBsb3dlcmNhc2UuXG4gIC8vIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jbWltZS10eXBlXG4gIGNvbnN0IG1pbWVUeXBlID0ge1xuICAgIHR5cGU6IHR5cGVMb3dlcmNhc2UsXG4gICAgc3VidHlwZTogc3VidHlwZUxvd2VyY2FzZSxcbiAgICAvKiogQHR5cGUge01hcDxzdHJpbmcsIHN0cmluZz59ICovXG4gICAgcGFyYW1ldGVyczogbmV3IE1hcCgpLFxuICAgIC8vIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jbWltZS10eXBlLWVzc2VuY2VcbiAgICBlc3NlbmNlOiBgJHt0eXBlTG93ZXJjYXNlfS8ke3N1YnR5cGVMb3dlcmNhc2V9YFxuICB9XG5cbiAgLy8gMTEuIFdoaWxlIHBvc2l0aW9uIGlzIG5vdCBwYXN0IHRoZSBlbmQgb2YgaW5wdXQ6XG4gIHdoaWxlIChwb3NpdGlvbi5wb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCkge1xuICAgIC8vIDEuIEFkdmFuY2UgcG9zaXRpb24gYnkgMS4gKFRoaXMgc2tpcHMgcGFzdCBVKzAwM0IgKDspLilcbiAgICBwb3NpdGlvbi5wb3NpdGlvbisrXG5cbiAgICAvLyAyLiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMgdGhhdCBhcmUgSFRUUFxuICAgIC8vIHdoaXRlc3BhY2UgZnJvbSBpbnB1dCBnaXZlbiBwb3NpdGlvbi5cbiAgICBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzKFxuICAgICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtd2hpdGVzcGFjZVxuICAgICAgY2hhciA9PiBIVFRQX1dISVRFU1BBQ0VfUkVHRVgudGVzdChjaGFyKSxcbiAgICAgIGlucHV0LFxuICAgICAgcG9zaXRpb25cbiAgICApXG5cbiAgICAvLyAzLiBMZXQgcGFyYW1ldGVyTmFtZSBiZSB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmcgYVxuICAgIC8vIHNlcXVlbmNlIG9mIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBVKzAwM0IgKDspXG4gICAgLy8gb3IgVSswMDNEICg9KSBmcm9tIGlucHV0LCBnaXZlbiBwb3NpdGlvbi5cbiAgICBsZXQgcGFyYW1ldGVyTmFtZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHMoXG4gICAgICAoY2hhcikgPT4gY2hhciAhPT0gJzsnICYmIGNoYXIgIT09ICc9JyxcbiAgICAgIGlucHV0LFxuICAgICAgcG9zaXRpb25cbiAgICApXG5cbiAgICAvLyA0LiBTZXQgcGFyYW1ldGVyTmFtZSB0byBwYXJhbWV0ZXJOYW1lLCBpbiBBU0NJSVxuICAgIC8vIGxvd2VyY2FzZS5cbiAgICBwYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyTmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgICAvLyA1LiBJZiBwb3NpdGlvbiBpcyBub3QgcGFzdCB0aGUgZW5kIG9mIGlucHV0LCB0aGVuOlxuICAgIGlmIChwb3NpdGlvbi5wb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgLy8gMS4gSWYgdGhlIGNvZGUgcG9pbnQgYXQgcG9zaXRpb24gd2l0aGluIGlucHV0IGlzXG4gICAgICAvLyBVKzAwM0IgKDspLCB0aGVuIGNvbnRpbnVlLlxuICAgICAgaWYgKGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXSA9PT0gJzsnKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIEFkdmFuY2UgcG9zaXRpb24gYnkgMS4gKFRoaXMgc2tpcHMgcGFzdCBVKzAwM0QgKD0pLilcbiAgICAgIHBvc2l0aW9uLnBvc2l0aW9uKytcbiAgICB9XG5cbiAgICAvLyA2LiBJZiBwb3NpdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2YgaW5wdXQsIHRoZW4gYnJlYWsuXG4gICAgaWYgKHBvc2l0aW9uLnBvc2l0aW9uID4gaW5wdXQubGVuZ3RoKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIC8vIDcuIExldCBwYXJhbWV0ZXJWYWx1ZSBiZSBudWxsLlxuICAgIGxldCBwYXJhbWV0ZXJWYWx1ZSA9IG51bGxcblxuICAgIC8vIDguIElmIHRoZSBjb2RlIHBvaW50IGF0IHBvc2l0aW9uIHdpdGhpbiBpbnB1dCBpc1xuICAgIC8vIFUrMDAyMiAoXCIpLCB0aGVuOlxuICAgIGlmIChpbnB1dFtwb3NpdGlvbi5wb3NpdGlvbl0gPT09ICdcIicpIHtcbiAgICAgIC8vIDEuIFNldCBwYXJhbWV0ZXJWYWx1ZSB0byB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmdcbiAgICAgIC8vIGFuIEhUVFAgcXVvdGVkIHN0cmluZyBmcm9tIGlucHV0LCBnaXZlbiBwb3NpdGlvblxuICAgICAgLy8gYW5kIHRoZSBleHRyYWN0LXZhbHVlIGZsYWcuXG4gICAgICBwYXJhbWV0ZXJWYWx1ZSA9IGNvbGxlY3RBbkhUVFBRdW90ZWRTdHJpbmcoaW5wdXQsIHBvc2l0aW9uLCB0cnVlKVxuXG4gICAgICAvLyAyLiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMgdGhhdCBhcmUgbm90XG4gICAgICAvLyBVKzAwM0IgKDspIGZyb20gaW5wdXQsIGdpdmVuIHBvc2l0aW9uLlxuICAgICAgY29sbGVjdEFTZXF1ZW5jZU9mQ29kZVBvaW50c0Zhc3QoXG4gICAgICAgICc7JyxcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHBvc2l0aW9uXG4gICAgICApXG5cbiAgICAvLyA5LiBPdGhlcndpc2U6XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDEuIFNldCBwYXJhbWV0ZXJWYWx1ZSB0byB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmdcbiAgICAgIC8vIGEgc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMgdGhhdCBhcmUgbm90IFUrMDAzQiAoOylcbiAgICAgIC8vIGZyb20gaW5wdXQsIGdpdmVuIHBvc2l0aW9uLlxuICAgICAgcGFyYW1ldGVyVmFsdWUgPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdChcbiAgICAgICAgJzsnLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIClcblxuICAgICAgLy8gMi4gUmVtb3ZlIGFueSB0cmFpbGluZyBIVFRQIHdoaXRlc3BhY2UgZnJvbSBwYXJhbWV0ZXJWYWx1ZS5cbiAgICAgIHBhcmFtZXRlclZhbHVlID0gcmVtb3ZlSFRUUFdoaXRlc3BhY2UocGFyYW1ldGVyVmFsdWUsIGZhbHNlLCB0cnVlKVxuXG4gICAgICAvLyAzLiBJZiBwYXJhbWV0ZXJWYWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIGNvbnRpbnVlLlxuICAgICAgaWYgKHBhcmFtZXRlclZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDEwLiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZVxuICAgIC8vIC0gcGFyYW1ldGVyTmFtZSBpcyBub3QgdGhlIGVtcHR5IHN0cmluZ1xuICAgIC8vIC0gcGFyYW1ldGVyTmFtZSBzb2xlbHkgY29udGFpbnMgSFRUUCB0b2tlbiBjb2RlIHBvaW50c1xuICAgIC8vIC0gcGFyYW1ldGVyVmFsdWUgc29sZWx5IGNvbnRhaW5zIEhUVFAgcXVvdGVkLXN0cmluZyB0b2tlbiBjb2RlIHBvaW50c1xuICAgIC8vIC0gbWltZVR5cGVcdTIwMTlzIHBhcmFtZXRlcnNbcGFyYW1ldGVyTmFtZV0gZG9lcyBub3QgZXhpc3RcbiAgICAvLyB0aGVuIHNldCBtaW1lVHlwZVx1MjAxOXMgcGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1lXSB0byBwYXJhbWV0ZXJWYWx1ZS5cbiAgICBpZiAoXG4gICAgICBwYXJhbWV0ZXJOYW1lLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgSFRUUF9UT0tFTl9DT0RFUE9JTlRTLnRlc3QocGFyYW1ldGVyTmFtZSkgJiZcbiAgICAgIChwYXJhbWV0ZXJWYWx1ZS5sZW5ndGggPT09IDAgfHwgSFRUUF9RVU9URURfU1RSSU5HX1RPS0VOUy50ZXN0KHBhcmFtZXRlclZhbHVlKSkgJiZcbiAgICAgICFtaW1lVHlwZS5wYXJhbWV0ZXJzLmhhcyhwYXJhbWV0ZXJOYW1lKVxuICAgICkge1xuICAgICAgbWltZVR5cGUucGFyYW1ldGVycy5zZXQocGFyYW1ldGVyTmFtZSwgcGFyYW1ldGVyVmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gMTIuIFJldHVybiBtaW1lVHlwZS5cbiAgcmV0dXJuIG1pbWVUeXBlXG59XG5cbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNmb3JnaXZpbmctYmFzZTY0LWRlY29kZVxuLyoqIEBwYXJhbSB7c3RyaW5nfSBkYXRhICovXG5mdW5jdGlvbiBmb3JnaXZpbmdCYXNlNjQgKGRhdGEpIHtcbiAgLy8gMS4gUmVtb3ZlIGFsbCBBU0NJSSB3aGl0ZXNwYWNlIGZyb20gZGF0YS5cbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvW1xcdTAwMDlcXHUwMDBBXFx1MDAwQ1xcdTAwMERcXHUwMDIwXS9nLCAnJykgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAvLyAyLiBJZiBkYXRhXHUyMDE5cyBjb2RlIHBvaW50IGxlbmd0aCBkaXZpZGVzIGJ5IDQgbGVhdmluZ1xuICAvLyBubyByZW1haW5kZXIsIHRoZW46XG4gIGlmIChkYXRhLmxlbmd0aCAlIDQgPT09IDApIHtcbiAgICAvLyAxLiBJZiBkYXRhIGVuZHMgd2l0aCBvbmUgb3IgdHdvIFUrMDAzRCAoPSkgY29kZSBwb2ludHMsXG4gICAgLy8gdGhlbiByZW1vdmUgdGhlbSBmcm9tIGRhdGEuXG4gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvPT89JC8sICcnKVxuICB9XG5cbiAgLy8gMy4gSWYgZGF0YVx1MjAxOXMgY29kZSBwb2ludCBsZW5ndGggZGl2aWRlcyBieSA0IGxlYXZpbmdcbiAgLy8gYSByZW1haW5kZXIgb2YgMSwgdGhlbiByZXR1cm4gZmFpbHVyZS5cbiAgaWYgKGRhdGEubGVuZ3RoICUgNCA9PT0gMSkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIC8vIDQuIElmIGRhdGEgY29udGFpbnMgYSBjb2RlIHBvaW50IHRoYXQgaXMgbm90IG9uZSBvZlxuICAvLyAgVSswMDJCICgrKVxuICAvLyAgVSswMDJGICgvKVxuICAvLyAgQVNDSUkgYWxwaGFudW1lcmljXG4gIC8vIHRoZW4gcmV0dXJuIGZhaWx1cmUuXG4gIGlmICgvW14rLzAtOUEtWmEtel0vLnRlc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gJ2ZhaWx1cmUnXG4gIH1cblxuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGEpXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5Lmxlbmd0aClcblxuICBmb3IgKGxldCBieXRlID0gMDsgYnl0ZSA8IGJpbmFyeS5sZW5ndGg7IGJ5dGUrKykge1xuICAgIGJ5dGVzW2J5dGVdID0gYmluYXJ5LmNoYXJDb2RlQXQoYnl0ZSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29sbGVjdC1hbi1odHRwLXF1b3RlZC1zdHJpbmdcbi8vIHRlc3RzOiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZXhhbXBsZS1odHRwLXF1b3RlZC1zdHJpbmdcbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge3sgcG9zaXRpb246IG51bWJlciB9fSBwb3NpdGlvblxuICogQHBhcmFtIHtib29sZWFuP30gZXh0cmFjdFZhbHVlXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RBbkhUVFBRdW90ZWRTdHJpbmcgKGlucHV0LCBwb3NpdGlvbiwgZXh0cmFjdFZhbHVlKSB7XG4gIC8vIDEuIExldCBwb3NpdGlvblN0YXJ0IGJlIHBvc2l0aW9uLlxuICBjb25zdCBwb3NpdGlvblN0YXJ0ID0gcG9zaXRpb24ucG9zaXRpb25cblxuICAvLyAyLiBMZXQgdmFsdWUgYmUgdGhlIGVtcHR5IHN0cmluZy5cbiAgbGV0IHZhbHVlID0gJydcblxuICAvLyAzLiBBc3NlcnQ6IHRoZSBjb2RlIHBvaW50IGF0IHBvc2l0aW9uIHdpdGhpbiBpbnB1dFxuICAvLyBpcyBVKzAwMjIgKFwiKS5cbiAgYXNzZXJ0KGlucHV0W3Bvc2l0aW9uLnBvc2l0aW9uXSA9PT0gJ1wiJylcblxuICAvLyA0LiBBZHZhbmNlIHBvc2l0aW9uIGJ5IDEuXG4gIHBvc2l0aW9uLnBvc2l0aW9uKytcblxuICAvLyA1LiBXaGlsZSB0cnVlOlxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIDEuIEFwcGVuZCB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpbmcgYSBzZXF1ZW5jZSBvZiBjb2RlIHBvaW50c1xuICAgIC8vIHRoYXQgYXJlIG5vdCBVKzAwMjIgKFwiKSBvciBVKzAwNUMgKFxcKSBmcm9tIGlucHV0LCBnaXZlblxuICAgIC8vIHBvc2l0aW9uLCB0byB2YWx1ZS5cbiAgICB2YWx1ZSArPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzKFxuICAgICAgKGNoYXIpID0+IGNoYXIgIT09ICdcIicgJiYgY2hhciAhPT0gJ1xcXFwnLFxuICAgICAgaW5wdXQsXG4gICAgICBwb3NpdGlvblxuICAgIClcblxuICAgIC8vIDIuIElmIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiBpbnB1dCwgdGhlbiBicmVhay5cbiAgICBpZiAocG9zaXRpb24ucG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIC8vIDMuIExldCBxdW90ZU9yQmFja3NsYXNoIGJlIHRoZSBjb2RlIHBvaW50IGF0IHBvc2l0aW9uIHdpdGhpblxuICAgIC8vIGlucHV0LlxuICAgIGNvbnN0IHF1b3RlT3JCYWNrc2xhc2ggPSBpbnB1dFtwb3NpdGlvbi5wb3NpdGlvbl1cblxuICAgIC8vIDQuIEFkdmFuY2UgcG9zaXRpb24gYnkgMS5cbiAgICBwb3NpdGlvbi5wb3NpdGlvbisrXG5cbiAgICAvLyA1LiBJZiBxdW90ZU9yQmFja3NsYXNoIGlzIFUrMDA1QyAoXFwpLCB0aGVuOlxuICAgIGlmIChxdW90ZU9yQmFja3NsYXNoID09PSAnXFxcXCcpIHtcbiAgICAgIC8vIDEuIElmIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiBpbnB1dCwgdGhlbiBhcHBlbmRcbiAgICAgIC8vIFUrMDA1QyAoXFwpIHRvIHZhbHVlIGFuZCBicmVhay5cbiAgICAgIGlmIChwb3NpdGlvbi5wb3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgdmFsdWUgKz0gJ1xcXFwnXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIEFwcGVuZCB0aGUgY29kZSBwb2ludCBhdCBwb3NpdGlvbiB3aXRoaW4gaW5wdXQgdG8gdmFsdWUuXG4gICAgICB2YWx1ZSArPSBpbnB1dFtwb3NpdGlvbi5wb3NpdGlvbl1cblxuICAgICAgLy8gMy4gQWR2YW5jZSBwb3NpdGlvbiBieSAxLlxuICAgICAgcG9zaXRpb24ucG9zaXRpb24rK1xuXG4gICAgLy8gNi4gT3RoZXJ3aXNlOlxuICAgIH0gZWxzZSB7XG4gICAgICAvLyAxLiBBc3NlcnQ6IHF1b3RlT3JCYWNrc2xhc2ggaXMgVSswMDIyIChcIikuXG4gICAgICBhc3NlcnQocXVvdGVPckJhY2tzbGFzaCA9PT0gJ1wiJylcblxuICAgICAgLy8gMi4gQnJlYWsuXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIDYuIElmIHRoZSBleHRyYWN0LXZhbHVlIGZsYWcgaXMgc2V0LCB0aGVuIHJldHVybiB2YWx1ZS5cbiAgaWYgKGV4dHJhY3RWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLy8gNy4gUmV0dXJuIHRoZSBjb2RlIHBvaW50cyBmcm9tIHBvc2l0aW9uU3RhcnQgdG8gcG9zaXRpb24sXG4gIC8vIGluY2x1c2l2ZSwgd2l0aGluIGlucHV0LlxuICByZXR1cm4gaW5wdXQuc2xpY2UocG9zaXRpb25TdGFydCwgcG9zaXRpb24ucG9zaXRpb24pXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI3NlcmlhbGl6ZS1hLW1pbWUtdHlwZVxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVBTWltZVR5cGUgKG1pbWVUeXBlKSB7XG4gIGFzc2VydChtaW1lVHlwZSAhPT0gJ2ZhaWx1cmUnKVxuICBjb25zdCB7IHBhcmFtZXRlcnMsIGVzc2VuY2UgfSA9IG1pbWVUeXBlXG5cbiAgLy8gMS4gTGV0IHNlcmlhbGl6YXRpb24gYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YgbWltZVR5cGVcdTIwMTlzXG4gIC8vICAgIHR5cGUsIFUrMDAyRiAoLyksIGFuZCBtaW1lVHlwZVx1MjAxOXMgc3VidHlwZS5cbiAgbGV0IHNlcmlhbGl6YXRpb24gPSBlc3NlbmNlXG5cbiAgLy8gMi4gRm9yIGVhY2ggbmFtZSBcdTIxOTIgdmFsdWUgb2YgbWltZVR5cGVcdTIwMTlzIHBhcmFtZXRlcnM6XG4gIGZvciAobGV0IFtuYW1lLCB2YWx1ZV0gb2YgcGFyYW1ldGVycy5lbnRyaWVzKCkpIHtcbiAgICAvLyAxLiBBcHBlbmQgVSswMDNCICg7KSB0byBzZXJpYWxpemF0aW9uLlxuICAgIHNlcmlhbGl6YXRpb24gKz0gJzsnXG5cbiAgICAvLyAyLiBBcHBlbmQgbmFtZSB0byBzZXJpYWxpemF0aW9uLlxuICAgIHNlcmlhbGl6YXRpb24gKz0gbmFtZVxuXG4gICAgLy8gMy4gQXBwZW5kIFUrMDAzRCAoPSkgdG8gc2VyaWFsaXphdGlvbi5cbiAgICBzZXJpYWxpemF0aW9uICs9ICc9J1xuXG4gICAgLy8gNC4gSWYgdmFsdWUgZG9lcyBub3Qgc29sZWx5IGNvbnRhaW4gSFRUUCB0b2tlbiBjb2RlXG4gICAgLy8gICAgcG9pbnRzIG9yIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW46XG4gICAgaWYgKCFIVFRQX1RPS0VOX0NPREVQT0lOVFMudGVzdCh2YWx1ZSkpIHtcbiAgICAgIC8vIDEuIFByZWNlZGUgZWFjaCBvY2N1cmVuY2Ugb2YgVSswMDIyIChcIikgb3JcbiAgICAgIC8vICAgIFUrMDA1QyAoXFwpIGluIHZhbHVlIHdpdGggVSswMDVDIChcXCkuXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyhcXFxcfFwiKS9nLCAnXFxcXCQxJylcblxuICAgICAgLy8gMi4gUHJlcGVuZCBVKzAwMjIgKFwiKSB0byB2YWx1ZS5cbiAgICAgIHZhbHVlID0gJ1wiJyArIHZhbHVlXG5cbiAgICAgIC8vIDMuIEFwcGVuZCBVKzAwMjIgKFwiKSB0byB2YWx1ZS5cbiAgICAgIHZhbHVlICs9ICdcIidcbiAgICB9XG5cbiAgICAvLyA1LiBBcHBlbmQgdmFsdWUgdG8gc2VyaWFsaXphdGlvbi5cbiAgICBzZXJpYWxpemF0aW9uICs9IHZhbHVlXG4gIH1cblxuICAvLyAzLiBSZXR1cm4gc2VyaWFsaXphdGlvbi5cbiAgcmV0dXJuIHNlcmlhbGl6YXRpb25cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLXdoaXRlc3BhY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyXG4gKi9cbmZ1bmN0aW9uIGlzSFRUUFdoaXRlU3BhY2UgKGNoYXIpIHtcbiAgcmV0dXJuIGNoYXIgPT09ICdcXHInIHx8IGNoYXIgPT09ICdcXG4nIHx8IGNoYXIgPT09ICdcXHQnIHx8IGNoYXIgPT09ICcgJ1xufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtd2hpdGVzcGFjZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICovXG5mdW5jdGlvbiByZW1vdmVIVFRQV2hpdGVzcGFjZSAoc3RyLCBsZWFkaW5nID0gdHJ1ZSwgdHJhaWxpbmcgPSB0cnVlKSB7XG4gIGxldCBsZWFkID0gMFxuICBsZXQgdHJhaWwgPSBzdHIubGVuZ3RoIC0gMVxuXG4gIGlmIChsZWFkaW5nKSB7XG4gICAgZm9yICg7IGxlYWQgPCBzdHIubGVuZ3RoICYmIGlzSFRUUFdoaXRlU3BhY2Uoc3RyW2xlYWRdKTsgbGVhZCsrKTtcbiAgfVxuXG4gIGlmICh0cmFpbGluZykge1xuICAgIGZvciAoOyB0cmFpbCA+IDAgJiYgaXNIVFRQV2hpdGVTcGFjZShzdHJbdHJhaWxdKTsgdHJhaWwtLSk7XG4gIH1cblxuICByZXR1cm4gc3RyLnNsaWNlKGxlYWQsIHRyYWlsICsgMSlcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNhc2NpaS13aGl0ZXNwYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hhclxuICovXG5mdW5jdGlvbiBpc0FTQ0lJV2hpdGVzcGFjZSAoY2hhcikge1xuICByZXR1cm4gY2hhciA9PT0gJ1xccicgfHwgY2hhciA9PT0gJ1xcbicgfHwgY2hhciA9PT0gJ1xcdCcgfHwgY2hhciA9PT0gJ1xcZicgfHwgY2hhciA9PT0gJyAnXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtbGVhZGluZy1hbmQtdHJhaWxpbmctYXNjaWktd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiByZW1vdmVBU0NJSVdoaXRlc3BhY2UgKHN0ciwgbGVhZGluZyA9IHRydWUsIHRyYWlsaW5nID0gdHJ1ZSkge1xuICBsZXQgbGVhZCA9IDBcbiAgbGV0IHRyYWlsID0gc3RyLmxlbmd0aCAtIDFcblxuICBpZiAobGVhZGluZykge1xuICAgIGZvciAoOyBsZWFkIDwgc3RyLmxlbmd0aCAmJiBpc0FTQ0lJV2hpdGVzcGFjZShzdHJbbGVhZF0pOyBsZWFkKyspO1xuICB9XG5cbiAgaWYgKHRyYWlsaW5nKSB7XG4gICAgZm9yICg7IHRyYWlsID4gMCAmJiBpc0FTQ0lJV2hpdGVzcGFjZShzdHJbdHJhaWxdKTsgdHJhaWwtLSk7XG4gIH1cblxuICByZXR1cm4gc3RyLnNsaWNlKGxlYWQsIHRyYWlsICsgMSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRhdGFVUkxQcm9jZXNzb3IsXG4gIFVSTFNlcmlhbGl6ZXIsXG4gIGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHMsXG4gIGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0LFxuICBzdHJpbmdQZXJjZW50RGVjb2RlLFxuICBwYXJzZU1JTUVUeXBlLFxuICBjb2xsZWN0QW5IVFRQUXVvdGVkU3RyaW5nLFxuICBzZXJpYWxpemVBTWltZVR5cGVcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBCbG9iLCBGaWxlOiBOYXRpdmVGaWxlIH0gPSByZXF1aXJlKCdidWZmZXInKVxuY29uc3QgeyB0eXBlcyB9ID0gcmVxdWlyZSgndXRpbCcpXG5jb25zdCB7IGtTdGF0ZSB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgaXNCbG9iTGlrZSB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCB7IHBhcnNlTUlNRVR5cGUsIHNlcmlhbGl6ZUFNaW1lVHlwZSB9ID0gcmVxdWlyZSgnLi9kYXRhVVJMJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuXG5jbGFzcyBGaWxlIGV4dGVuZHMgQmxvYiB7XG4gIGNvbnN0cnVjdG9yIChmaWxlQml0cywgZmlsZU5hbWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8vIFRoZSBGaWxlIGNvbnN0cnVjdG9yIGlzIGludm9rZWQgd2l0aCB0d28gb3IgdGhyZWUgcGFyYW1ldGVycywgZGVwZW5kaW5nXG4gICAgLy8gb24gd2hldGhlciB0aGUgb3B0aW9uYWwgZGljdGlvbmFyeSBwYXJhbWV0ZXIgaXMgdXNlZC4gV2hlbiB0aGUgRmlsZSgpXG4gICAgLy8gY29uc3RydWN0b3IgaXMgaW52b2tlZCwgdXNlciBhZ2VudHMgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczpcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDIsIHsgaGVhZGVyOiAnRmlsZSBjb25zdHJ1Y3RvcicgfSlcblxuICAgIGZpbGVCaXRzID0gd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPEJsb2JQYXJ0PiddKGZpbGVCaXRzKVxuICAgIGZpbGVOYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKGZpbGVOYW1lKVxuICAgIG9wdGlvbnMgPSB3ZWJpZGwuY29udmVydGVycy5GaWxlUHJvcGVydHlCYWcob3B0aW9ucylcblxuICAgIC8vIDEuIExldCBieXRlcyBiZSB0aGUgcmVzdWx0IG9mIHByb2Nlc3NpbmcgYmxvYiBwYXJ0cyBnaXZlbiBmaWxlQml0cyBhbmRcbiAgICAvLyBvcHRpb25zLlxuICAgIC8vIE5vdGU6IEJsb2IgaGFuZGxlcyB0aGlzIGZvciB1c1xuXG4gICAgLy8gMi4gTGV0IG4gYmUgdGhlIGZpbGVOYW1lIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICBjb25zdCBuID0gZmlsZU5hbWVcblxuICAgIC8vIDMuIFByb2Nlc3MgRmlsZVByb3BlcnR5QmFnIGRpY3Rpb25hcnkgYXJndW1lbnQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nXG4gICAgLy8gc3Vic3RlcHM6XG5cbiAgICAvLyAgICAxLiBJZiB0aGUgdHlwZSBtZW1iZXIgaXMgcHJvdmlkZWQgYW5kIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCBsZXQgdFxuICAgIC8vICAgIGJlIHNldCB0byB0aGUgdHlwZSBkaWN0aW9uYXJ5IG1lbWJlci4gSWYgdCBjb250YWlucyBhbnkgY2hhcmFjdGVyc1xuICAgIC8vICAgIG91dHNpZGUgdGhlIHJhbmdlIFUrMDAyMCB0byBVKzAwN0UsIHRoZW4gc2V0IHQgdG8gdGhlIGVtcHR5IHN0cmluZ1xuICAgIC8vICAgIGFuZCByZXR1cm4gZnJvbSB0aGVzZSBzdWJzdGVwcy5cbiAgICAvLyAgICAyLiBDb252ZXJ0IGV2ZXJ5IGNoYXJhY3RlciBpbiB0IHRvIEFTQ0lJIGxvd2VyY2FzZS5cbiAgICBsZXQgdCA9IG9wdGlvbnMudHlwZVxuICAgIGxldCBkXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbGFiZWxzXG4gICAgc3Vic3RlcDoge1xuICAgICAgaWYgKHQpIHtcbiAgICAgICAgdCA9IHBhcnNlTUlNRVR5cGUodClcblxuICAgICAgICBpZiAodCA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgdCA9ICcnXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxhYmVsc1xuICAgICAgICAgIGJyZWFrIHN1YnN0ZXBcbiAgICAgICAgfVxuXG4gICAgICAgIHQgPSBzZXJpYWxpemVBTWltZVR5cGUodCkudG9Mb3dlckNhc2UoKVxuICAgICAgfVxuXG4gICAgICAvLyAgICAzLiBJZiB0aGUgbGFzdE1vZGlmaWVkIG1lbWJlciBpcyBwcm92aWRlZCwgbGV0IGQgYmUgc2V0IHRvIHRoZVxuICAgICAgLy8gICAgbGFzdE1vZGlmaWVkIGRpY3Rpb25hcnkgbWVtYmVyLiBJZiBpdCBpcyBub3QgcHJvdmlkZWQsIHNldCBkIHRvIHRoZVxuICAgICAgLy8gICAgY3VycmVudCBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGVkIGFzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlXG4gICAgICAvLyAgICB0aGUgVW5peCBFcG9jaCAod2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YgRGF0ZS5ub3coKSBbRUNNQS0yNjJdKS5cbiAgICAgIGQgPSBvcHRpb25zLmxhc3RNb2RpZmllZFxuICAgIH1cblxuICAgIC8vIDQuIFJldHVybiBhIG5ldyBGaWxlIG9iamVjdCBGIHN1Y2ggdGhhdDpcbiAgICAvLyBGIHJlZmVycyB0byB0aGUgYnl0ZXMgYnl0ZSBzZXF1ZW5jZS5cbiAgICAvLyBGLnNpemUgaXMgc2V0IHRvIHRoZSBudW1iZXIgb2YgdG90YWwgYnl0ZXMgaW4gYnl0ZXMuXG4gICAgLy8gRi5uYW1lIGlzIHNldCB0byBuLlxuICAgIC8vIEYudHlwZSBpcyBzZXQgdG8gdC5cbiAgICAvLyBGLmxhc3RNb2RpZmllZCBpcyBzZXQgdG8gZC5cblxuICAgIHN1cGVyKHByb2Nlc3NCbG9iUGFydHMoZmlsZUJpdHMsIG9wdGlvbnMpLCB7IHR5cGU6IHQgfSlcbiAgICB0aGlzW2tTdGF0ZV0gPSB7XG4gICAgICBuYW1lOiBuLFxuICAgICAgbGFzdE1vZGlmaWVkOiBkLFxuICAgICAgdHlwZTogdFxuICAgIH1cbiAgfVxuXG4gIGdldCBuYW1lICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5uYW1lXG4gIH1cblxuICBnZXQgbGFzdE1vZGlmaWVkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5sYXN0TW9kaWZpZWRcbiAgfVxuXG4gIGdldCB0eXBlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS50eXBlXG4gIH1cbn1cblxuY2xhc3MgRmlsZUxpa2Uge1xuICBjb25zdHJ1Y3RvciAoYmxvYkxpa2UsIGZpbGVOYW1lLCBvcHRpb25zID0ge30pIHtcbiAgICAvLyBUT0RPOiBhcmd1bWVudCBpZGwgdHlwZSBjaGVja1xuXG4gICAgLy8gVGhlIEZpbGUgY29uc3RydWN0b3IgaXMgaW52b2tlZCB3aXRoIHR3byBvciB0aHJlZSBwYXJhbWV0ZXJzLCBkZXBlbmRpbmdcbiAgICAvLyBvbiB3aGV0aGVyIHRoZSBvcHRpb25hbCBkaWN0aW9uYXJ5IHBhcmFtZXRlciBpcyB1c2VkLiBXaGVuIHRoZSBGaWxlKClcbiAgICAvLyBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLCB1c2VyIGFnZW50cyBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOlxuXG4gICAgLy8gMS4gTGV0IGJ5dGVzIGJlIHRoZSByZXN1bHQgb2YgcHJvY2Vzc2luZyBibG9iIHBhcnRzIGdpdmVuIGZpbGVCaXRzIGFuZFxuICAgIC8vIG9wdGlvbnMuXG5cbiAgICAvLyAyLiBMZXQgbiBiZSB0aGUgZmlsZU5hbWUgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgIGNvbnN0IG4gPSBmaWxlTmFtZVxuXG4gICAgLy8gMy4gUHJvY2VzcyBGaWxlUHJvcGVydHlCYWcgZGljdGlvbmFyeSBhcmd1bWVudCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmdcbiAgICAvLyBzdWJzdGVwczpcblxuICAgIC8vICAgIDEuIElmIHRoZSB0eXBlIG1lbWJlciBpcyBwcm92aWRlZCBhbmQgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIGxldCB0XG4gICAgLy8gICAgYmUgc2V0IHRvIHRoZSB0eXBlIGRpY3Rpb25hcnkgbWVtYmVyLiBJZiB0IGNvbnRhaW5zIGFueSBjaGFyYWN0ZXJzXG4gICAgLy8gICAgb3V0c2lkZSB0aGUgcmFuZ2UgVSswMDIwIHRvIFUrMDA3RSwgdGhlbiBzZXQgdCB0byB0aGUgZW1wdHkgc3RyaW5nXG4gICAgLy8gICAgYW5kIHJldHVybiBmcm9tIHRoZXNlIHN1YnN0ZXBzLlxuICAgIC8vICAgIFRPRE9cbiAgICBjb25zdCB0ID0gb3B0aW9ucy50eXBlXG5cbiAgICAvLyAgICAyLiBDb252ZXJ0IGV2ZXJ5IGNoYXJhY3RlciBpbiB0IHRvIEFTQ0lJIGxvd2VyY2FzZS5cbiAgICAvLyAgICBUT0RPXG5cbiAgICAvLyAgICAzLiBJZiB0aGUgbGFzdE1vZGlmaWVkIG1lbWJlciBpcyBwcm92aWRlZCwgbGV0IGQgYmUgc2V0IHRvIHRoZVxuICAgIC8vICAgIGxhc3RNb2RpZmllZCBkaWN0aW9uYXJ5IG1lbWJlci4gSWYgaXQgaXMgbm90IHByb3ZpZGVkLCBzZXQgZCB0byB0aGVcbiAgICAvLyAgICBjdXJyZW50IGRhdGUgYW5kIHRpbWUgcmVwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2VcbiAgICAvLyAgICB0aGUgVW5peCBFcG9jaCAod2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YgRGF0ZS5ub3coKSBbRUNNQS0yNjJdKS5cbiAgICBjb25zdCBkID0gb3B0aW9ucy5sYXN0TW9kaWZpZWQgPz8gRGF0ZS5ub3coKVxuXG4gICAgLy8gNC4gUmV0dXJuIGEgbmV3IEZpbGUgb2JqZWN0IEYgc3VjaCB0aGF0OlxuICAgIC8vIEYgcmVmZXJzIHRvIHRoZSBieXRlcyBieXRlIHNlcXVlbmNlLlxuICAgIC8vIEYuc2l6ZSBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiB0b3RhbCBieXRlcyBpbiBieXRlcy5cbiAgICAvLyBGLm5hbWUgaXMgc2V0IHRvIG4uXG4gICAgLy8gRi50eXBlIGlzIHNldCB0byB0LlxuICAgIC8vIEYubGFzdE1vZGlmaWVkIGlzIHNldCB0byBkLlxuXG4gICAgdGhpc1trU3RhdGVdID0ge1xuICAgICAgYmxvYkxpa2UsXG4gICAgICBuYW1lOiBuLFxuICAgICAgdHlwZTogdCxcbiAgICAgIGxhc3RNb2RpZmllZDogZFxuICAgIH1cbiAgfVxuXG4gIHN0cmVhbSAoLi4uYXJncykge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ibG9iTGlrZS5zdHJlYW0oLi4uYXJncylcbiAgfVxuXG4gIGFycmF5QnVmZmVyICguLi5hcmdzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJsb2JMaWtlLmFycmF5QnVmZmVyKC4uLmFyZ3MpXG4gIH1cblxuICBzbGljZSAoLi4uYXJncykge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ibG9iTGlrZS5zbGljZSguLi5hcmdzKVxuICB9XG5cbiAgdGV4dCAoLi4uYXJncykge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ibG9iTGlrZS50ZXh0KC4uLmFyZ3MpXG4gIH1cblxuICBnZXQgc2l6ZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZUxpa2UpXG5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmJsb2JMaWtlLnNpemVcbiAgfVxuXG4gIGdldCB0eXBlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlTGlrZSlcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uYmxvYkxpa2UudHlwZVxuICB9XG5cbiAgZ2V0IG5hbWUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVMaWtlKVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5uYW1lXG4gIH1cblxuICBnZXQgbGFzdE1vZGlmaWVkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlTGlrZSlcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ubGFzdE1vZGlmaWVkXG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10gKCkge1xuICAgIHJldHVybiAnRmlsZSdcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhGaWxlLnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnRmlsZScsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0sXG4gIG5hbWU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGxhc3RNb2RpZmllZDoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxud2ViaWRsLmNvbnZlcnRlcnMuQmxvYiA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoQmxvYilcblxud2ViaWRsLmNvbnZlcnRlcnMuQmxvYlBhcnQgPSBmdW5jdGlvbiAoViwgb3B0cykge1xuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSA9PT0gJ09iamVjdCcpIHtcbiAgICBpZiAoaXNCbG9iTGlrZShWKSkge1xuICAgICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoViwgeyBzdHJpY3Q6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgQXJyYXlCdWZmZXIuaXNWaWV3KFYpIHx8XG4gICAgICB0eXBlcy5pc0FueUFycmF5QnVmZmVyKFYpXG4gICAgKSB7XG4gICAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuQnVmZmVyU291cmNlKFYsIG9wdHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhWLCBvcHRzKVxufVxuXG53ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8QmxvYlBhcnQ+J10gPSB3ZWJpZGwuc2VxdWVuY2VDb252ZXJ0ZXIoXG4gIHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2JQYXJ0XG4pXG5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9GaWxlQVBJLyNkZm4tRmlsZVByb3BlcnR5QmFnXG53ZWJpZGwuY29udmVydGVycy5GaWxlUHJvcGVydHlCYWcgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIHtcbiAgICBrZXk6ICdsYXN0TW9kaWZpZWQnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnNbJ2xvbmcgbG9uZyddLFxuICAgIGdldCBkZWZhdWx0VmFsdWUgKCkge1xuICAgICAgcmV0dXJuIERhdGUubm93KClcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBrZXk6ICd0eXBlJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdlbmRpbmdzJyxcbiAgICBjb252ZXJ0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgdmFsdWUgPSB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcodmFsdWUpXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKClcblxuICAgICAgaWYgKHZhbHVlICE9PSAnbmF0aXZlJykge1xuICAgICAgICB2YWx1ZSA9ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6ICd0cmFuc3BhcmVudCdcbiAgfVxuXSlcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9GaWxlQVBJLyNwcm9jZXNzLWJsb2ItcGFydHNcbiAqIEBwYXJhbSB7KE5vZGVKUy5UeXBlZEFycmF5fEJsb2J8c3RyaW5nKVtdfSBwYXJ0c1xuICogQHBhcmFtIHt7IHR5cGU6IHN0cmluZywgZW5kaW5nczogc3RyaW5nIH19IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0Jsb2JQYXJ0cyAocGFydHMsIG9wdGlvbnMpIHtcbiAgLy8gMS4gTGV0IGJ5dGVzIGJlIGFuIGVtcHR5IHNlcXVlbmNlIG9mIGJ5dGVzLlxuICAvKiogQHR5cGUge05vZGVKUy5UeXBlZEFycmF5W119ICovXG4gIGNvbnN0IGJ5dGVzID0gW11cblxuICAvLyAyLiBGb3IgZWFjaCBlbGVtZW50IGluIHBhcnRzOlxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcGFydHMpIHtcbiAgICAvLyAxLiBJZiBlbGVtZW50IGlzIGEgVVNWU3RyaW5nLCBydW4gdGhlIGZvbGxvd2luZyBzdWJzdGVwczpcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyAxLiBMZXQgcyBiZSBlbGVtZW50LlxuICAgICAgbGV0IHMgPSBlbGVtZW50XG5cbiAgICAgIC8vIDIuIElmIHRoZSBlbmRpbmdzIG1lbWJlciBvZiBvcHRpb25zIGlzIFwibmF0aXZlXCIsIHNldCBzXG4gICAgICAvLyAgICB0byB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgbGluZSBlbmRpbmdzIHRvIG5hdGl2ZVxuICAgICAgLy8gICAgb2YgZWxlbWVudC5cbiAgICAgIGlmIChvcHRpb25zLmVuZGluZ3MgPT09ICduYXRpdmUnKSB7XG4gICAgICAgIHMgPSBjb252ZXJ0TGluZUVuZGluZ3NOYXRpdmUocylcbiAgICAgIH1cblxuICAgICAgLy8gMy4gQXBwZW5kIHRoZSByZXN1bHQgb2YgVVRGLTggZW5jb2RpbmcgcyB0byBieXRlcy5cbiAgICAgIGJ5dGVzLnB1c2goZW5jb2Rlci5lbmNvZGUocykpXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVzLmlzQW55QXJyYXlCdWZmZXIoZWxlbWVudCkgfHxcbiAgICAgIHR5cGVzLmlzVHlwZWRBcnJheShlbGVtZW50KVxuICAgICkge1xuICAgICAgLy8gMi4gSWYgZWxlbWVudCBpcyBhIEJ1ZmZlclNvdXJjZSwgZ2V0IGEgY29weSBvZiB0aGVcbiAgICAgIC8vICAgIGJ5dGVzIGhlbGQgYnkgdGhlIGJ1ZmZlciBzb3VyY2UsIGFuZCBhcHBlbmQgdGhvc2VcbiAgICAgIC8vICAgIGJ5dGVzIHRvIGJ5dGVzLlxuICAgICAgaWYgKCFlbGVtZW50LmJ1ZmZlcikgeyAvLyBBcnJheUJ1ZmZlclxuICAgICAgICBieXRlcy5wdXNoKG5ldyBVaW50OEFycmF5KGVsZW1lbnQpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgICBuZXcgVWludDhBcnJheShlbGVtZW50LmJ1ZmZlciwgZWxlbWVudC5ieXRlT2Zmc2V0LCBlbGVtZW50LmJ5dGVMZW5ndGgpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzQmxvYkxpa2UoZWxlbWVudCkpIHtcbiAgICAgIC8vIDMuIElmIGVsZW1lbnQgaXMgYSBCbG9iLCBhcHBlbmQgdGhlIGJ5dGVzIGl0IHJlcHJlc2VudHNcbiAgICAgIC8vICAgIHRvIGJ5dGVzLlxuICAgICAgYnl0ZXMucHVzaChlbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIFJldHVybiBieXRlcy5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvRmlsZUFQSS8jY29udmVydC1saW5lLWVuZGluZ3MtdG8tbmF0aXZlXG4gKiBAcGFyYW0ge3N0cmluZ30gc1xuICovXG5mdW5jdGlvbiBjb252ZXJ0TGluZUVuZGluZ3NOYXRpdmUgKHMpIHtcbiAgLy8gMS4gTGV0IG5hdGl2ZSBsaW5lIGVuZGluZyBiZSBiZSB0aGUgY29kZSBwb2ludCBVKzAwMEEgTEYuXG4gIGxldCBuYXRpdmVMaW5lRW5kaW5nID0gJ1xcbidcblxuICAvLyAyLiBJZiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybVx1MjAxOXMgY29udmVudGlvbnMgYXJlIHRvXG4gIC8vICAgIHJlcHJlc2VudCBuZXdsaW5lcyBhcyBhIGNhcnJpYWdlIHJldHVybiBhbmQgbGluZSBmZWVkXG4gIC8vICAgIHNlcXVlbmNlLCBzZXQgbmF0aXZlIGxpbmUgZW5kaW5nIHRvIHRoZSBjb2RlIHBvaW50XG4gIC8vICAgIFUrMDAwRCBDUiBmb2xsb3dlZCBieSB0aGUgY29kZSBwb2ludCBVKzAwMEEgTEYuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgbmF0aXZlTGluZUVuZGluZyA9ICdcXHJcXG4nXG4gIH1cblxuICByZXR1cm4gcy5yZXBsYWNlKC9cXHI/XFxuL2csIG5hdGl2ZUxpbmVFbmRpbmcpXG59XG5cbi8vIElmIHRoaXMgZnVuY3Rpb24gaXMgbW92ZWQgdG8gLi91dGlsLmpzLCBzb21lIHRvb2xzIChzdWNoIGFzXG4vLyByb2xsdXApIHdpbGwgd2FybiBhYm91dCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuIFNlZTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8xNjI5XG5mdW5jdGlvbiBpc0ZpbGVMaWtlIChvYmplY3QpIHtcbiAgcmV0dXJuIChcbiAgICAoTmF0aXZlRmlsZSAmJiBvYmplY3QgaW5zdGFuY2VvZiBOYXRpdmVGaWxlKSB8fFxuICAgIG9iamVjdCBpbnN0YW5jZW9mIEZpbGUgfHwgKFxuICAgICAgb2JqZWN0ICYmXG4gICAgICAodHlwZW9mIG9iamVjdC5zdHJlYW0gPT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBvYmplY3QuYXJyYXlCdWZmZXIgPT09ICdmdW5jdGlvbicpICYmXG4gICAgICBvYmplY3RbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0ZpbGUnXG4gICAgKVxuICApXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBGaWxlLCBGaWxlTGlrZSwgaXNGaWxlTGlrZSB9XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgaXNCbG9iTGlrZSwgdG9VU1ZTdHJpbmcsIG1ha2VJdGVyYXRvciB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsga1N0YXRlIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBGaWxlOiBVbmRpY2lGaWxlLCBGaWxlTGlrZSwgaXNGaWxlTGlrZSB9ID0gcmVxdWlyZSgnLi9maWxlJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCB7IEJsb2IsIEZpbGU6IE5hdGl2ZUZpbGUgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5cbi8qKiBAdHlwZSB7Z2xvYmFsVGhpc1snRmlsZSddfSAqL1xuY29uc3QgRmlsZSA9IE5hdGl2ZUZpbGUgPz8gVW5kaWNpRmlsZVxuXG4vLyBodHRwczovL3hoci5zcGVjLndoYXR3Zy5vcmcvI2Zvcm1kYXRhXG5jbGFzcyBGb3JtRGF0YSB7XG4gIGNvbnN0cnVjdG9yIChmb3JtKSB7XG4gICAgaWYgKGZvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5jb252ZXJzaW9uRmFpbGVkKHtcbiAgICAgICAgcHJlZml4OiAnRm9ybURhdGEgY29uc3RydWN0b3InLFxuICAgICAgICBhcmd1bWVudDogJ0FyZ3VtZW50IDEnLFxuICAgICAgICB0eXBlczogWyd1bmRlZmluZWQnXVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzW2tTdGF0ZV0gPSBbXVxuICB9XG5cbiAgYXBwZW5kIChuYW1lLCB2YWx1ZSwgZmlsZW5hbWUgPSB1bmRlZmluZWQpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdGb3JtRGF0YS5hcHBlbmQnIH0pXG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAhaXNCbG9iTGlrZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ2FwcGVuZCcgb24gJ0Zvcm1EYXRhJzogcGFyYW1ldGVyIDIgaXMgbm90IG9mIHR5cGUgJ0Jsb2InXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyAxLiBMZXQgdmFsdWUgYmUgdmFsdWUgaWYgZ2l2ZW47IG90aGVyd2lzZSBibG9iVmFsdWUuXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKG5hbWUpXG4gICAgdmFsdWUgPSBpc0Jsb2JMaWtlKHZhbHVlKVxuICAgICAgPyB3ZWJpZGwuY29udmVydGVycy5CbG9iKHZhbHVlLCB7IHN0cmljdDogZmFsc2UgfSlcbiAgICAgIDogd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKHZhbHVlKVxuICAgIGZpbGVuYW1lID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gM1xuICAgICAgPyB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcoZmlsZW5hbWUpXG4gICAgICA6IHVuZGVmaW5lZFxuXG4gICAgLy8gMi4gTGV0IGVudHJ5IGJlIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYW4gZW50cnkgd2l0aFxuICAgIC8vIG5hbWUsIHZhbHVlLCBhbmQgZmlsZW5hbWUgaWYgZ2l2ZW4uXG4gICAgY29uc3QgZW50cnkgPSBtYWtlRW50cnkobmFtZSwgdmFsdWUsIGZpbGVuYW1lKVxuXG4gICAgLy8gMy4gQXBwZW5kIGVudHJ5IHRvIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3QuXG4gICAgdGhpc1trU3RhdGVdLnB1c2goZW50cnkpXG4gIH1cblxuICBkZWxldGUgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdGb3JtRGF0YS5kZWxldGUnIH0pXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKG5hbWUpXG5cbiAgICAvLyBUaGUgZGVsZXRlKG5hbWUpIG1ldGhvZCBzdGVwcyBhcmUgdG8gcmVtb3ZlIGFsbCBlbnRyaWVzIHdob3NlIG5hbWVcbiAgICAvLyBpcyBuYW1lIGZyb20gdGhpc1x1MjAxOXMgZW50cnkgbGlzdC5cbiAgICB0aGlzW2tTdGF0ZV0gPSB0aGlzW2tTdGF0ZV0uZmlsdGVyKGVudHJ5ID0+IGVudHJ5Lm5hbWUgIT09IG5hbWUpXG4gIH1cblxuICBnZXQgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdGb3JtRGF0YS5nZXQnIH0pXG5cbiAgICBuYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKG5hbWUpXG5cbiAgICAvLyAxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSB3aG9zZSBuYW1lIGlzIG5hbWUgaW4gdGhpc1x1MjAxOXMgZW50cnkgbGlzdCxcbiAgICAvLyB0aGVuIHJldHVybiBudWxsLlxuICAgIGNvbnN0IGlkeCA9IHRoaXNba1N0YXRlXS5maW5kSW5kZXgoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBuYW1lKVxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIC8vIDIuIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVudHJ5IHdob3NlIG5hbWUgaXMgbmFtZSBmcm9tXG4gICAgLy8gdGhpc1x1MjAxOXMgZW50cnkgbGlzdC5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdW2lkeF0udmFsdWVcbiAgfVxuXG4gIGdldEFsbCAobmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLmdldEFsbCcgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcobmFtZSlcblxuICAgIC8vIDEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IHdob3NlIG5hbWUgaXMgbmFtZSBpbiB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LFxuICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBlbXB0eSBsaXN0LlxuICAgIC8vIDIuIFJldHVybiB0aGUgdmFsdWVzIG9mIGFsbCBlbnRyaWVzIHdob3NlIG5hbWUgaXMgbmFtZSwgaW4gb3JkZXIsXG4gICAgLy8gZnJvbSB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV1cbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBuYW1lKVxuICAgICAgLm1hcCgoZW50cnkpID0+IGVudHJ5LnZhbHVlKVxuICB9XG5cbiAgaGFzIChuYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRm9ybURhdGEuaGFzJyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhuYW1lKVxuXG4gICAgLy8gVGhlIGhhcyhuYW1lKSBtZXRob2Qgc3RlcHMgYXJlIHRvIHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGFuIGVudHJ5XG4gICAgLy8gd2hvc2UgbmFtZSBpcyBuYW1lIGluIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3Q7IG90aGVyd2lzZSBmYWxzZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmZpbmRJbmRleCgoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09IG5hbWUpICE9PSAtMVxuICB9XG5cbiAgc2V0IChuYW1lLCB2YWx1ZSwgZmlsZW5hbWUgPSB1bmRlZmluZWQpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGb3JtRGF0YSlcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdGb3JtRGF0YS5zZXQnIH0pXG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAhaXNCbG9iTGlrZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ3NldCcgb24gJ0Zvcm1EYXRhJzogcGFyYW1ldGVyIDIgaXMgbm90IG9mIHR5cGUgJ0Jsb2InXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBUaGUgc2V0KG5hbWUsIHZhbHVlKSBhbmQgc2V0KG5hbWUsIGJsb2JWYWx1ZSwgZmlsZW5hbWUpIG1ldGhvZCBzdGVwc1xuICAgIC8vIGFyZTpcblxuICAgIC8vIDEuIExldCB2YWx1ZSBiZSB2YWx1ZSBpZiBnaXZlbjsgb3RoZXJ3aXNlIGJsb2JWYWx1ZS5cblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcobmFtZSlcbiAgICB2YWx1ZSA9IGlzQmxvYkxpa2UodmFsdWUpXG4gICAgICA/IHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IodmFsdWUsIHsgc3RyaWN0OiBmYWxzZSB9KVxuICAgICAgOiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcodmFsdWUpXG4gICAgZmlsZW5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID09PSAzXG4gICAgICA/IHRvVVNWU3RyaW5nKGZpbGVuYW1lKVxuICAgICAgOiB1bmRlZmluZWRcblxuICAgIC8vIDIuIExldCBlbnRyeSBiZSB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGFuIGVudHJ5IHdpdGggbmFtZSwgdmFsdWUsIGFuZFxuICAgIC8vIGZpbGVuYW1lIGlmIGdpdmVuLlxuICAgIGNvbnN0IGVudHJ5ID0gbWFrZUVudHJ5KG5hbWUsIHZhbHVlLCBmaWxlbmFtZSlcblxuICAgIC8vIDMuIElmIHRoZXJlIGFyZSBlbnRyaWVzIGluIHRoaXNcdTIwMTlzIGVudHJ5IGxpc3Qgd2hvc2UgbmFtZSBpcyBuYW1lLCB0aGVuXG4gICAgLy8gcmVwbGFjZSB0aGUgZmlyc3Qgc3VjaCBlbnRyeSB3aXRoIGVudHJ5IGFuZCByZW1vdmUgdGhlIG90aGVycy5cbiAgICBjb25zdCBpZHggPSB0aGlzW2tTdGF0ZV0uZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgdGhpc1trU3RhdGVdID0gW1xuICAgICAgICAuLi50aGlzW2tTdGF0ZV0uc2xpY2UoMCwgaWR4KSxcbiAgICAgICAgZW50cnksXG4gICAgICAgIC4uLnRoaXNba1N0YXRlXS5zbGljZShpZHggKyAxKS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5uYW1lICE9PSBuYW1lKVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyA0LiBPdGhlcndpc2UsIGFwcGVuZCBlbnRyeSB0byB0aGlzXHUyMDE5cyBlbnRyeSBsaXN0LlxuICAgICAgdGhpc1trU3RhdGVdLnB1c2goZW50cnkpXG4gICAgfVxuICB9XG5cbiAgZW50cmllcyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRm9ybURhdGEpXG5cbiAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKFxuICAgICAgKCkgPT4gdGhpc1trU3RhdGVdLm1hcChwYWlyID0+IFtwYWlyLm5hbWUsIHBhaXIudmFsdWVdKSxcbiAgICAgICdGb3JtRGF0YScsXG4gICAgICAna2V5K3ZhbHVlJ1xuICAgIClcbiAgfVxuXG4gIGtleXMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgcmV0dXJuIG1ha2VJdGVyYXRvcihcbiAgICAgICgpID0+IHRoaXNba1N0YXRlXS5tYXAocGFpciA9PiBbcGFpci5uYW1lLCBwYWlyLnZhbHVlXSksXG4gICAgICAnRm9ybURhdGEnLFxuICAgICAgJ2tleSdcbiAgICApXG4gIH1cblxuICB2YWx1ZXMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgcmV0dXJuIG1ha2VJdGVyYXRvcihcbiAgICAgICgpID0+IHRoaXNba1N0YXRlXS5tYXAocGFpciA9PiBbcGFpci5uYW1lLCBwYWlyLnZhbHVlXSksXG4gICAgICAnRm9ybURhdGEnLFxuICAgICAgJ3ZhbHVlJ1xuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZywgc2VsZjogRm9ybURhdGEpID0+IHZvaWR9IGNhbGxiYWNrRm5cbiAgICogQHBhcmFtIHt1bmtub3dufSB0aGlzQXJnXG4gICAqL1xuICBmb3JFYWNoIChjYWxsYmFja0ZuLCB0aGlzQXJnID0gZ2xvYmFsVGhpcykge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZvcm1EYXRhKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0Zvcm1EYXRhLmZvckVhY2gnIH0pXG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrRm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ2ZvckVhY2gnIG9uICdGb3JtRGF0YSc6IHBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdGdW5jdGlvbicuXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzKSB7XG4gICAgICBjYWxsYmFja0ZuLmFwcGx5KHRoaXNBcmcsIFt2YWx1ZSwga2V5LCB0aGlzXSlcbiAgICB9XG4gIH1cbn1cblxuRm9ybURhdGEucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBGb3JtRGF0YS5wcm90b3R5cGUuZW50cmllc1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhGb3JtRGF0YS5wcm90b3R5cGUsIHtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ0Zvcm1EYXRhJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfVxufSlcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI2NyZWF0ZS1hbi1lbnRyeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfEJsb2J9IHZhbHVlXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZpbGVuYW1lXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBtYWtlRW50cnkgKG5hbWUsIHZhbHVlLCBmaWxlbmFtZSkge1xuICAvLyAxLiBTZXQgbmFtZSB0byB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgbmFtZSBpbnRvIGEgc2NhbGFyIHZhbHVlIHN0cmluZy5cbiAgLy8gXCJUbyBjb252ZXJ0IGEgc3RyaW5nIGludG8gYSBzY2FsYXIgdmFsdWUgc3RyaW5nLCByZXBsYWNlIGFueSBzdXJyb2dhdGVzXG4gIC8vICB3aXRoIFUrRkZGRC5cIlxuICAvLyBzZWU6IGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC12MTgueC9kb2NzL2FwaS9idWZmZXIuaHRtbCNidWZ0b3N0cmluZ2VuY29kaW5nLXN0YXJ0LWVuZFxuICBuYW1lID0gQnVmZmVyLmZyb20obmFtZSkudG9TdHJpbmcoJ3V0ZjgnKVxuXG4gIC8vIDIuIElmIHZhbHVlIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB2YWx1ZSB0byB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmdcbiAgLy8gICAgdmFsdWUgaW50byBhIHNjYWxhciB2YWx1ZSBzdHJpbmcuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBCdWZmZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoJ3V0ZjgnKVxuICB9IGVsc2Uge1xuICAgIC8vIDMuIE90aGVyd2lzZTpcblxuICAgIC8vIDEuIElmIHZhbHVlIGlzIG5vdCBhIEZpbGUgb2JqZWN0LCB0aGVuIHNldCB2YWx1ZSB0byBhIG5ldyBGaWxlIG9iamVjdCxcbiAgICAvLyAgICByZXByZXNlbnRpbmcgdGhlIHNhbWUgYnl0ZXMsIHdob3NlIG5hbWUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmxvYlwiXG4gICAgaWYgKCFpc0ZpbGVMaWtlKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIEJsb2JcbiAgICAgICAgPyBuZXcgRmlsZShbdmFsdWVdLCAnYmxvYicsIHsgdHlwZTogdmFsdWUudHlwZSB9KVxuICAgICAgICA6IG5ldyBGaWxlTGlrZSh2YWx1ZSwgJ2Jsb2InLCB7IHR5cGU6IHZhbHVlLnR5cGUgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBJZiBmaWxlbmFtZSBpcyBnaXZlbiwgdGhlbiBzZXQgdmFsdWUgdG8gYSBuZXcgRmlsZSBvYmplY3QsXG4gICAgLy8gICAgcmVwcmVzZW50aW5nIHRoZSBzYW1lIGJ5dGVzLCB3aG9zZSBuYW1lIGF0dHJpYnV0ZSBpcyBmaWxlbmFtZS5cbiAgICBpZiAoZmlsZW5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLyoqIEB0eXBlIHtGaWxlUHJvcGVydHlCYWd9ICovXG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICB0eXBlOiB2YWx1ZS50eXBlLFxuICAgICAgICBsYXN0TW9kaWZpZWQ6IHZhbHVlLmxhc3RNb2RpZmllZFxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IChOYXRpdmVGaWxlICYmIHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlRmlsZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBVbmRpY2lGaWxlXG4gICAgICAgID8gbmV3IEZpbGUoW3ZhbHVlXSwgZmlsZW5hbWUsIG9wdGlvbnMpXG4gICAgICAgIDogbmV3IEZpbGVMaWtlKHZhbHVlLCBmaWxlbmFtZSwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICAvLyA0LiBSZXR1cm4gYW4gZW50cnkgd2hvc2UgbmFtZSBpcyBuYW1lIGFuZCB3aG9zZSB2YWx1ZSBpcyB2YWx1ZS5cbiAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgRm9ybURhdGEgfVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBCdXNib3kgPSByZXF1aXJlKCdAZmFzdGlmeS9idXNib3knKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7XG4gIFJlYWRhYmxlU3RyZWFtRnJvbSxcbiAgaXNCbG9iTGlrZSxcbiAgaXNSZWFkYWJsZVN0cmVhbUxpa2UsXG4gIHJlYWRhYmxlU3RyZWFtQ2xvc2UsXG4gIGNyZWF0ZURlZmVycmVkUHJvbWlzZSxcbiAgZnVsbHlSZWFkQm9keVxufSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IEZvcm1EYXRhIH0gPSByZXF1aXJlKCcuL2Zvcm1kYXRhJylcbmNvbnN0IHsga1N0YXRlIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyB3ZWJpZGwgfSA9IHJlcXVpcmUoJy4vd2ViaWRsJylcbmNvbnN0IHsgRE9NRXhjZXB0aW9uLCBzdHJ1Y3R1cmVkQ2xvbmUgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsgQmxvYiwgRmlsZTogTmF0aXZlRmlsZSB9ID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHsga0JvZHlVc2VkIH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgaXNFcnJvcmVkIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBpc1VpbnQ4QXJyYXksIGlzQXJyYXlCdWZmZXIgfSA9IHJlcXVpcmUoJ3V0aWwvdHlwZXMnKVxuY29uc3QgeyBGaWxlOiBVbmRpY2lGaWxlIH0gPSByZXF1aXJlKCcuL2ZpbGUnKVxuY29uc3QgeyBwYXJzZU1JTUVUeXBlLCBzZXJpYWxpemVBTWltZVR5cGUgfSA9IHJlcXVpcmUoJy4vZGF0YVVSTCcpXG5cbmxldCByYW5kb21cbnRyeSB7XG4gIGNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ25vZGU6Y3J5cHRvJylcbiAgcmFuZG9tID0gKG1heCkgPT4gY3J5cHRvLnJhbmRvbUludCgwLCBtYXgpXG59IGNhdGNoIHtcbiAgcmFuZG9tID0gKG1heCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbShtYXgpKVxufVxuXG5sZXQgUmVhZGFibGVTdHJlYW0gPSBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtXG5cbi8qKiBAdHlwZSB7Z2xvYmFsVGhpc1snRmlsZSddfSAqL1xuY29uc3QgRmlsZSA9IE5hdGl2ZUZpbGUgPz8gVW5kaWNpRmlsZVxuY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5aW5pdC1leHRyYWN0XG5mdW5jdGlvbiBleHRyYWN0Qm9keSAob2JqZWN0LCBrZWVwYWxpdmUgPSBmYWxzZSkge1xuICBpZiAoIVJlYWRhYmxlU3RyZWFtKSB7XG4gICAgUmVhZGFibGVTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJykuUmVhZGFibGVTdHJlYW1cbiAgfVxuXG4gIC8vIDEuIExldCBzdHJlYW0gYmUgbnVsbC5cbiAgbGV0IHN0cmVhbSA9IG51bGxcblxuICAvLyAyLiBJZiBvYmplY3QgaXMgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QsIHRoZW4gc2V0IHN0cmVhbSB0byBvYmplY3QuXG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgIHN0cmVhbSA9IG9iamVjdFxuICB9IGVsc2UgaWYgKGlzQmxvYkxpa2Uob2JqZWN0KSkge1xuICAgIC8vIDMuIE90aGVyd2lzZSwgaWYgb2JqZWN0IGlzIGEgQmxvYiBvYmplY3QsIHNldCBzdHJlYW0gdG8gdGhlXG4gICAgLy8gICAgcmVzdWx0IG9mIHJ1bm5pbmcgb2JqZWN0XHUyMDE5cyBnZXQgc3RyZWFtLlxuICAgIHN0cmVhbSA9IG9iamVjdC5zdHJlYW0oKVxuICB9IGVsc2Uge1xuICAgIC8vIDQuIE90aGVyd2lzZSwgc2V0IHN0cmVhbSB0byBhIG5ldyBSZWFkYWJsZVN0cmVhbSBvYmplY3QsIGFuZCBzZXRcbiAgICAvLyAgICB1cCBzdHJlYW0uXG4gICAgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgIGFzeW5jIHB1bGwgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKFxuICAgICAgICAgIHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnID8gdGV4dEVuY29kZXIuZW5jb2RlKHNvdXJjZSkgOiBzb3VyY2VcbiAgICAgICAgKVxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiByZWFkYWJsZVN0cmVhbUNsb3NlKGNvbnRyb2xsZXIpKVxuICAgICAgfSxcbiAgICAgIHN0YXJ0ICgpIHt9LFxuICAgICAgdHlwZTogdW5kZWZpbmVkXG4gICAgfSlcbiAgfVxuXG4gIC8vIDUuIEFzc2VydDogc3RyZWFtIGlzIGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0LlxuICBhc3NlcnQoaXNSZWFkYWJsZVN0cmVhbUxpa2Uoc3RyZWFtKSlcblxuICAvLyA2LiBMZXQgYWN0aW9uIGJlIG51bGwuXG4gIGxldCBhY3Rpb24gPSBudWxsXG5cbiAgLy8gNy4gTGV0IHNvdXJjZSBiZSBudWxsLlxuICBsZXQgc291cmNlID0gbnVsbFxuXG4gIC8vIDguIExldCBsZW5ndGggYmUgbnVsbC5cbiAgbGV0IGxlbmd0aCA9IG51bGxcblxuICAvLyA5LiBMZXQgdHlwZSBiZSBudWxsLlxuICBsZXQgdHlwZSA9IG51bGxcblxuICAvLyAxMC4gU3dpdGNoIG9uIG9iamVjdDpcbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gU2V0IHNvdXJjZSB0byB0aGUgVVRGLTggZW5jb2Rpbmcgb2Ygb2JqZWN0LlxuICAgIC8vIE5vdGU6IHNldHRpbmcgc291cmNlIHRvIGEgVWludDhBcnJheSBoZXJlIGJyZWFrcyBzb21lIG1vY2tpbmcgYXNzdW1wdGlvbnMuXG4gICAgc291cmNlID0gb2JqZWN0XG5cbiAgICAvLyBTZXQgdHlwZSB0byBgdGV4dC9wbGFpbjtjaGFyc2V0PVVURi04YC5cbiAgICB0eXBlID0gJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCdcbiAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICAvLyBVUkxTZWFyY2hQYXJhbXNcblxuICAgIC8vIHNwZWMgc2F5cyB0byBydW4gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIG9uIGJvZHkubGlzdFxuICAgIC8vIHRoaXMgaXMgaW1wbGVtZW50ZWQgaW4gTm9kZS5qcyBhcyBhcGFydCBvZiBhbiBVUkxTZWFyY2hQYXJhbXMgaW5zdGFuY2UgdG9TdHJpbmcgbWV0aG9kXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9lNDZjNjgwYmYyYjIxMWJiZDUyY2Y5NTljYTE3ZWU5OGM3ZjY1N2Y1L2xpYi9pbnRlcm5hbC91cmwuanMjTDQ5MFxuICAgIC8vIGFuZCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9lNDZjNjgwYmYyYjIxMWJiZDUyY2Y5NTljYTE3ZWU5OGM3ZjY1N2Y1L2xpYi9pbnRlcm5hbC91cmwuanMjTDExMDBcblxuICAgIC8vIFNldCBzb3VyY2UgdG8gdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgc2VyaWFsaXplciB3aXRoIG9iamVjdFx1MjAxOXMgbGlzdC5cbiAgICBzb3VyY2UgPSBvYmplY3QudG9TdHJpbmcoKVxuXG4gICAgLy8gU2V0IHR5cGUgdG8gYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04YC5cbiAgICB0eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04J1xuICB9IGVsc2UgaWYgKGlzQXJyYXlCdWZmZXIob2JqZWN0KSkge1xuICAgIC8vIEJ1ZmZlclNvdXJjZS9BcnJheUJ1ZmZlclxuXG4gICAgLy8gU2V0IHNvdXJjZSB0byBhIGNvcHkgb2YgdGhlIGJ5dGVzIGhlbGQgYnkgb2JqZWN0LlxuICAgIHNvdXJjZSA9IG5ldyBVaW50OEFycmF5KG9iamVjdC5zbGljZSgpKVxuICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhvYmplY3QpKSB7XG4gICAgLy8gQnVmZmVyU291cmNlL0FycmF5QnVmZmVyVmlld1xuXG4gICAgLy8gU2V0IHNvdXJjZSB0byBhIGNvcHkgb2YgdGhlIGJ5dGVzIGhlbGQgYnkgb2JqZWN0LlxuICAgIHNvdXJjZSA9IG5ldyBVaW50OEFycmF5KG9iamVjdC5idWZmZXIuc2xpY2Uob2JqZWN0LmJ5dGVPZmZzZXQsIG9iamVjdC5ieXRlT2Zmc2V0ICsgb2JqZWN0LmJ5dGVMZW5ndGgpKVxuICB9IGVsc2UgaWYgKHV0aWwuaXNGb3JtRGF0YUxpa2Uob2JqZWN0KSkge1xuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1mb3JtZGF0YS11bmRpY2ktMCR7YCR7cmFuZG9tKDFlMTEpfWAucGFkU3RhcnQoMTEsICcwJyl9YFxuICAgIGNvbnN0IHByZWZpeCA9IGAtLSR7Ym91bmRhcnl9XFxyXFxuQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhYFxuXG4gICAgLyohIGZvcm1kYXRhLXBvbHlmaWxsLiBNSVQgTGljZW5zZS4gSmltbXkgV1x1MDBFNHJ0aW5nIDxodHRwczovL2ppbW15LndhcnRpbmcuc2Uvb3BlbnNvdXJjZT4gKi9cbiAgICBjb25zdCBlc2NhcGUgPSAoc3RyKSA9PlxuICAgICAgc3RyLnJlcGxhY2UoL1xcbi9nLCAnJTBBJykucmVwbGFjZSgvXFxyL2csICclMEQnKS5yZXBsYWNlKC9cIi9nLCAnJTIyJylcbiAgICBjb25zdCBub3JtYWxpemVMaW5lZmVlZHMgPSAodmFsdWUpID0+IHZhbHVlLnJlcGxhY2UoL1xccj9cXG58XFxyL2csICdcXHJcXG4nKVxuXG4gICAgLy8gU2V0IGFjdGlvbiB0byB0aGlzIHN0ZXA6IHJ1biB0aGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgIC8vIGVuY29kaW5nIGFsZ29yaXRobSwgd2l0aCBvYmplY3RcdTIwMTlzIGVudHJ5IGxpc3QgYW5kIFVURi04LlxuICAgIC8vIC0gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGJvZHkgaXMgaW1tdXRhYmxlIGFuZCBjYW4ndCBiZSBjaGFuZ2VkIGFmdGVyd29yZHNcbiAgICAvLyAtIFRoYXQgdGhlIGNvbnRlbnQtbGVuZ3RoIGlzIGNhbGN1bGF0ZWQgaW4gYWR2YW5jZS5cbiAgICAvLyAtIEFuZCB0aGF0IGFsbCBwYXJ0cyBhcmUgcHJlLWVuY29kZWQgYW5kIHJlYWR5IHRvIGJlIHNlbnQuXG5cbiAgICBjb25zdCBibG9iUGFydHMgPSBbXVxuICAgIGNvbnN0IHJuID0gbmV3IFVpbnQ4QXJyYXkoWzEzLCAxMF0pIC8vICdcXHJcXG4nXG4gICAgbGVuZ3RoID0gMFxuICAgIGxldCBoYXNVbmtub3duU2l6ZVZhbHVlID0gZmFsc2VcblxuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBvYmplY3QpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGNodW5rID0gdGV4dEVuY29kZXIuZW5jb2RlKHByZWZpeCArXG4gICAgICAgICAgYDsgbmFtZT1cIiR7ZXNjYXBlKG5vcm1hbGl6ZUxpbmVmZWVkcyhuYW1lKSl9XCJgICtcbiAgICAgICAgICBgXFxyXFxuXFxyXFxuJHtub3JtYWxpemVMaW5lZmVlZHModmFsdWUpfVxcclxcbmApXG4gICAgICAgIGJsb2JQYXJ0cy5wdXNoKGNodW5rKVxuICAgICAgICBsZW5ndGggKz0gY2h1bmsuYnl0ZUxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSB0ZXh0RW5jb2Rlci5lbmNvZGUoYCR7cHJlZml4fTsgbmFtZT1cIiR7ZXNjYXBlKG5vcm1hbGl6ZUxpbmVmZWVkcyhuYW1lKSl9XCJgICtcbiAgICAgICAgICAodmFsdWUubmFtZSA/IGA7IGZpbGVuYW1lPVwiJHtlc2NhcGUodmFsdWUubmFtZSl9XCJgIDogJycpICsgJ1xcclxcbicgK1xuICAgICAgICAgIGBDb250ZW50LVR5cGU6ICR7XG4gICAgICAgICAgICB2YWx1ZS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgICAgICAgfVxcclxcblxcclxcbmApXG4gICAgICAgIGJsb2JQYXJ0cy5wdXNoKGNodW5rLCB2YWx1ZSwgcm4pXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBsZW5ndGggKz0gY2h1bmsuYnl0ZUxlbmd0aCArIHZhbHVlLnNpemUgKyBybi5ieXRlTGVuZ3RoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFzVW5rbm93blNpemVWYWx1ZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNodW5rID0gdGV4dEVuY29kZXIuZW5jb2RlKGAtLSR7Ym91bmRhcnl9LS1gKVxuICAgIGJsb2JQYXJ0cy5wdXNoKGNodW5rKVxuICAgIGxlbmd0aCArPSBjaHVuay5ieXRlTGVuZ3RoXG4gICAgaWYgKGhhc1Vua25vd25TaXplVmFsdWUpIHtcbiAgICAgIGxlbmd0aCA9IG51bGxcbiAgICB9XG5cbiAgICAvLyBTZXQgc291cmNlIHRvIG9iamVjdC5cbiAgICBzb3VyY2UgPSBvYmplY3RcblxuICAgIGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uICogKCkge1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIGJsb2JQYXJ0cykge1xuICAgICAgICBpZiAocGFydC5zdHJlYW0pIHtcbiAgICAgICAgICB5aWVsZCAqIHBhcnQuc3RyZWFtKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5aWVsZCBwYXJ0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdHlwZSB0byBgbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9YCxcbiAgICAvLyBmb2xsb3dlZCBieSB0aGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBib3VuZGFyeSBzdHJpbmcgZ2VuZXJhdGVkXG4gICAgLy8gYnkgdGhlIG11bHRpcGFydC9mb3JtLWRhdGEgZW5jb2RpbmcgYWxnb3JpdGhtLlxuICAgIHR5cGUgPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JyArIGJvdW5kYXJ5XG4gIH0gZWxzZSBpZiAoaXNCbG9iTGlrZShvYmplY3QpKSB7XG4gICAgLy8gQmxvYlxuXG4gICAgLy8gU2V0IHNvdXJjZSB0byBvYmplY3QuXG4gICAgc291cmNlID0gb2JqZWN0XG5cbiAgICAvLyBTZXQgbGVuZ3RoIHRvIG9iamVjdFx1MjAxOXMgc2l6ZS5cbiAgICBsZW5ndGggPSBvYmplY3Quc2l6ZVxuXG4gICAgLy8gSWYgb2JqZWN0XHUyMDE5cyB0eXBlIGF0dHJpYnV0ZSBpcyBub3QgdGhlIGVtcHR5IGJ5dGUgc2VxdWVuY2UsIHNldFxuICAgIC8vIHR5cGUgdG8gaXRzIHZhbHVlLlxuICAgIGlmIChvYmplY3QudHlwZSkge1xuICAgICAgdHlwZSA9IG9iamVjdC50eXBlXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3RbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gSWYga2VlcGFsaXZlIGlzIHRydWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKGtlZXBhbGl2ZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigna2VlcGFsaXZlJylcbiAgICB9XG5cbiAgICAvLyBJZiBvYmplY3QgaXMgZGlzdHVyYmVkIG9yIGxvY2tlZCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAodXRpbC5pc0Rpc3R1cmJlZChvYmplY3QpIHx8IG9iamVjdC5sb2NrZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdSZXNwb25zZSBib2R5IG9iamVjdCBzaG91bGQgbm90IGJlIGRpc3R1cmJlZCBvciBsb2NrZWQnXG4gICAgICApXG4gICAgfVxuXG4gICAgc3RyZWFtID1cbiAgICAgIG9iamVjdCBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtID8gb2JqZWN0IDogUmVhZGFibGVTdHJlYW1Gcm9tKG9iamVjdClcbiAgfVxuXG4gIC8vIDExLiBJZiBzb3VyY2UgaXMgYSBieXRlIHNlcXVlbmNlLCB0aGVuIHNldCBhY3Rpb24gdG8gYVxuICAvLyBzdGVwIHRoYXQgcmV0dXJucyBzb3VyY2UgYW5kIGxlbmd0aCB0byBzb3VyY2VcdTIwMTlzIGxlbmd0aC5cbiAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnIHx8IHV0aWwuaXNCdWZmZXIoc291cmNlKSkge1xuICAgIGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHNvdXJjZSlcbiAgfVxuXG4gIC8vIDEyLiBJZiBhY3Rpb24gaXMgbm9uLW51bGwsIHRoZW4gcnVuIHRoZXNlIHN0ZXBzIGluIGluIHBhcmFsbGVsOlxuICBpZiAoYWN0aW9uICE9IG51bGwpIHtcbiAgICAvLyBSdW4gYWN0aW9uLlxuICAgIGxldCBpdGVyYXRvclxuICAgIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICBhc3luYyBzdGFydCAoKSB7XG4gICAgICAgIGl0ZXJhdG9yID0gYWN0aW9uKG9iamVjdClbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKClcbiAgICAgIH0sXG4gICAgICBhc3luYyBwdWxsIChjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKVxuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgIC8vIFdoZW4gcnVubmluZyBhY3Rpb24gaXMgZG9uZSwgY2xvc2Ugc3RyZWFtLlxuICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gV2hlbmV2ZXIgb25lIG9yIG1vcmUgYnl0ZXMgYXJlIGF2YWlsYWJsZSBhbmQgc3RyZWFtIGlzIG5vdCBlcnJvcmVkLFxuICAgICAgICAgIC8vIGVucXVldWUgYSBVaW50OEFycmF5IHdyYXBwaW5nIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJsZVxuICAgICAgICAgIC8vIGJ5dGVzIGludG8gc3RyZWFtLlxuICAgICAgICAgIGlmICghaXNFcnJvcmVkKHN0cmVhbSkpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250cm9sbGVyLmRlc2lyZWRTaXplID4gMFxuICAgICAgfSxcbiAgICAgIGFzeW5jIGNhbmNlbCAocmVhc29uKSB7XG4gICAgICAgIGF3YWl0IGl0ZXJhdG9yLnJldHVybigpXG4gICAgICB9LFxuICAgICAgdHlwZTogdW5kZWZpbmVkXG4gICAgfSlcbiAgfVxuXG4gIC8vIDEzLiBMZXQgYm9keSBiZSBhIGJvZHkgd2hvc2Ugc3RyZWFtIGlzIHN0cmVhbSwgc291cmNlIGlzIHNvdXJjZSxcbiAgLy8gYW5kIGxlbmd0aCBpcyBsZW5ndGguXG4gIGNvbnN0IGJvZHkgPSB7IHN0cmVhbSwgc291cmNlLCBsZW5ndGggfVxuXG4gIC8vIDE0LiBSZXR1cm4gKGJvZHksIHR5cGUpLlxuICByZXR1cm4gW2JvZHksIHR5cGVdXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNib2R5aW5pdC1zYWZlbHktZXh0cmFjdFxuZnVuY3Rpb24gc2FmZWx5RXh0cmFjdEJvZHkgKG9iamVjdCwga2VlcGFsaXZlID0gZmFsc2UpIHtcbiAgaWYgKCFSZWFkYWJsZVN0cmVhbSkge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgUmVhZGFibGVTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJykuUmVhZGFibGVTdHJlYW1cbiAgfVxuXG4gIC8vIFRvIHNhZmVseSBleHRyYWN0IGEgYm9keSBhbmQgYSBgQ29udGVudC1UeXBlYCB2YWx1ZSBmcm9tXG4gIC8vIGEgYnl0ZSBzZXF1ZW5jZSBvciBCb2R5SW5pdCBvYmplY3Qgb2JqZWN0LCBydW4gdGhlc2Ugc3RlcHM6XG5cbiAgLy8gMS4gSWYgb2JqZWN0IGlzIGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0LCB0aGVuOlxuICBpZiAob2JqZWN0IGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pIHtcbiAgICAvLyBBc3NlcnQ6IG9iamVjdCBpcyBuZWl0aGVyIGRpc3R1cmJlZCBub3IgbG9ja2VkLlxuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgYXNzZXJ0KCF1dGlsLmlzRGlzdHVyYmVkKG9iamVjdCksICdUaGUgYm9keSBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLicpXG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICBhc3NlcnQoIW9iamVjdC5sb2NrZWQsICdUaGUgc3RyZWFtIGlzIGxvY2tlZC4nKVxuICB9XG5cbiAgLy8gMi4gUmV0dXJuIHRoZSByZXN1bHRzIG9mIGV4dHJhY3Rpbmcgb2JqZWN0LlxuICByZXR1cm4gZXh0cmFjdEJvZHkob2JqZWN0LCBrZWVwYWxpdmUpXG59XG5cbmZ1bmN0aW9uIGNsb25lQm9keSAoYm9keSkge1xuICAvLyBUbyBjbG9uZSBhIGJvZHkgYm9keSwgcnVuIHRoZXNlIHN0ZXBzOlxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktY2xvbmVcblxuICAvLyAxLiBMZXQgXHUwMEFCIG91dDEsIG91dDIgXHUwMEJCIGJlIHRoZSByZXN1bHQgb2YgdGVlaW5nIGJvZHlcdTIwMTlzIHN0cmVhbS5cbiAgY29uc3QgW291dDEsIG91dDJdID0gYm9keS5zdHJlYW0udGVlKClcbiAgY29uc3Qgb3V0MkNsb25lID0gc3RydWN0dXJlZENsb25lKG91dDIsIHsgdHJhbnNmZXI6IFtvdXQyXSB9KVxuICAvLyBUaGlzLCBmb3Igd2hhdGV2ZXIgcmVhc29ucywgdW5yZWZzIG91dDJDbG9uZSB3aGljaCBhbGxvd3NcbiAgLy8gdGhlIHByb2Nlc3MgdG8gZXhpdCBieSBpdHNlbGYuXG4gIGNvbnN0IFssIGZpbmFsQ2xvbmVdID0gb3V0MkNsb25lLnRlZSgpXG5cbiAgLy8gMi4gU2V0IGJvZHlcdTIwMTlzIHN0cmVhbSB0byBvdXQxLlxuICBib2R5LnN0cmVhbSA9IG91dDFcblxuICAvLyAzLiBSZXR1cm4gYSBib2R5IHdob3NlIHN0cmVhbSBpcyBvdXQyIGFuZCBvdGhlciBtZW1iZXJzIGFyZSBjb3BpZWQgZnJvbSBib2R5LlxuICByZXR1cm4ge1xuICAgIHN0cmVhbTogZmluYWxDbG9uZSxcbiAgICBsZW5ndGg6IGJvZHkubGVuZ3RoLFxuICAgIHNvdXJjZTogYm9keS5zb3VyY2VcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiAqIGNvbnN1bWVCb2R5IChib2R5KSB7XG4gIGlmIChib2R5KSB7XG4gICAgaWYgKGlzVWludDhBcnJheShib2R5KSkge1xuICAgICAgeWllbGQgYm9keVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBib2R5LnN0cmVhbVxuXG4gICAgICBpZiAodXRpbC5pc0Rpc3R1cmJlZChzdHJlYW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBib2R5IGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQuJylcbiAgICAgIH1cblxuICAgICAgaWYgKHN0cmVhbS5sb2NrZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHN0cmVhbSBpcyBsb2NrZWQuJylcbiAgICAgIH1cblxuICAgICAgLy8gQ29tcGF0LlxuICAgICAgc3RyZWFtW2tCb2R5VXNlZF0gPSB0cnVlXG5cbiAgICAgIHlpZWxkICogc3RyZWFtXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRocm93SWZBYm9ydGVkIChzdGF0ZSkge1xuICBpZiAoc3RhdGUuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlNaXhpbk1ldGhvZHMgKGluc3RhbmNlKSB7XG4gIGNvbnN0IG1ldGhvZHMgPSB7XG4gICAgYmxvYiAoKSB7XG4gICAgICAvLyBUaGUgYmxvYigpIG1ldGhvZCBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoZSByZXN1bHQgb2ZcbiAgICAgIC8vIHJ1bm5pbmcgY29uc3VtZSBib2R5IHdpdGggdGhpcyBhbmQgdGhlIGZvbGxvd2luZyBzdGVwXG4gICAgICAvLyBnaXZlbiBhIGJ5dGUgc2VxdWVuY2UgYnl0ZXM6IHJldHVybiBhIEJsb2Igd2hvc2VcbiAgICAgIC8vIGNvbnRlbnRzIGFyZSBieXRlcyBhbmQgd2hvc2UgdHlwZSBhdHRyaWJ1dGUgaXMgdGhpc1x1MjAxOXNcbiAgICAgIC8vIE1JTUUgdHlwZS5cbiAgICAgIHJldHVybiBzcGVjQ29uc3VtZUJvZHkodGhpcywgKGJ5dGVzKSA9PiB7XG4gICAgICAgIGxldCBtaW1lVHlwZSA9IGJvZHlNaW1lVHlwZSh0aGlzKVxuXG4gICAgICAgIGlmIChtaW1lVHlwZSA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgbWltZVR5cGUgPSAnJ1xuICAgICAgICB9IGVsc2UgaWYgKG1pbWVUeXBlKSB7XG4gICAgICAgICAgbWltZVR5cGUgPSBzZXJpYWxpemVBTWltZVR5cGUobWltZVR5cGUpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gYSBCbG9iIHdob3NlIGNvbnRlbnRzIGFyZSBieXRlcyBhbmQgdHlwZSBhdHRyaWJ1dGVcbiAgICAgICAgLy8gaXMgbWltZVR5cGUuXG4gICAgICAgIHJldHVybiBuZXcgQmxvYihbYnl0ZXNdLCB7IHR5cGU6IG1pbWVUeXBlIH0pXG4gICAgICB9LCBpbnN0YW5jZSlcbiAgICB9LFxuXG4gICAgYXJyYXlCdWZmZXIgKCkge1xuICAgICAgLy8gVGhlIGFycmF5QnVmZmVyKCkgbWV0aG9kIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhlIHJlc3VsdFxuICAgICAgLy8gb2YgcnVubmluZyBjb25zdW1lIGJvZHkgd2l0aCB0aGlzIGFuZCB0aGUgZm9sbG93aW5nIHN0ZXBcbiAgICAgIC8vIGdpdmVuIGEgYnl0ZSBzZXF1ZW5jZSBieXRlczogcmV0dXJuIGEgbmV3IEFycmF5QnVmZmVyXG4gICAgICAvLyB3aG9zZSBjb250ZW50cyBhcmUgYnl0ZXMuXG4gICAgICByZXR1cm4gc3BlY0NvbnN1bWVCb2R5KHRoaXMsIChieXRlcykgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpLmJ1ZmZlclxuICAgICAgfSwgaW5zdGFuY2UpXG4gICAgfSxcblxuICAgIHRleHQgKCkge1xuICAgICAgLy8gVGhlIHRleHQoKSBtZXRob2Qgc3RlcHMgYXJlIHRvIHJldHVybiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgIC8vIGNvbnN1bWUgYm9keSB3aXRoIHRoaXMgYW5kIFVURi04IGRlY29kZS5cbiAgICAgIHJldHVybiBzcGVjQ29uc3VtZUJvZHkodGhpcywgdXRmOERlY29kZUJ5dGVzLCBpbnN0YW5jZSlcbiAgICB9LFxuXG4gICAganNvbiAoKSB7XG4gICAgICAvLyBUaGUganNvbigpIG1ldGhvZCBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZ1xuICAgICAgLy8gY29uc3VtZSBib2R5IHdpdGggdGhpcyBhbmQgcGFyc2UgSlNPTiBmcm9tIGJ5dGVzLlxuICAgICAgcmV0dXJuIHNwZWNDb25zdW1lQm9keSh0aGlzLCBwYXJzZUpTT05Gcm9tQnl0ZXMsIGluc3RhbmNlKVxuICAgIH0sXG5cbiAgICBhc3luYyBmb3JtRGF0YSAoKSB7XG4gICAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBpbnN0YW5jZSlcblxuICAgICAgdGhyb3dJZkFib3J0ZWQodGhpc1trU3RhdGVdKVxuXG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IHRoaXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpXG5cbiAgICAgIC8vIElmIG1pbWVUeXBlXHUyMDE5cyBlc3NlbmNlIGlzIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLCB0aGVuOlxuICAgICAgaWYgKC9tdWx0aXBhcnRcXC9mb3JtLWRhdGEvLnRlc3QoY29udGVudFR5cGUpKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fVxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmhlYWRlcnMpIGhlYWRlcnNba2V5LnRvTG93ZXJDYXNlKCldID0gdmFsdWVcblxuICAgICAgICBjb25zdCByZXNwb25zZUZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKClcblxuICAgICAgICBsZXQgYnVzYm95XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBidXNib3kgPSBuZXcgQnVzYm95KHtcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBwcmVzZXJ2ZVBhdGg6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKGAke2Vycn1gLCAnQWJvcnRFcnJvcicpXG4gICAgICAgIH1cblxuICAgICAgICBidXNib3kub24oJ2ZpZWxkJywgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgcmVzcG9uc2VGb3JtRGF0YS5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgICAgIH0pXG4gICAgICAgIGJ1c2JveS5vbignZmlsZScsIChuYW1lLCB2YWx1ZSwgZmlsZW5hbWUsIGVuY29kaW5nLCBtaW1lVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNodW5rcyA9IFtdXG5cbiAgICAgICAgICBpZiAoZW5jb2RpbmcgPT09ICdiYXNlNjQnIHx8IGVuY29kaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdiYXNlNjQnKSB7XG4gICAgICAgICAgICBsZXQgYmFzZTY0Y2h1bmsgPSAnJ1xuXG4gICAgICAgICAgICB2YWx1ZS5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgICAgICAgICAgICBiYXNlNjRjaHVuayArPSBjaHVuay50b1N0cmluZygpLnJlcGxhY2UoL1tcXHJcXG5dL2dtLCAnJylcblxuICAgICAgICAgICAgICBjb25zdCBlbmQgPSBiYXNlNjRjaHVuay5sZW5ndGggLSBiYXNlNjRjaHVuay5sZW5ndGggJSA0XG4gICAgICAgICAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKGJhc2U2NGNodW5rLnNsaWNlKDAsIGVuZCksICdiYXNlNjQnKSlcblxuICAgICAgICAgICAgICBiYXNlNjRjaHVuayA9IGJhc2U2NGNodW5rLnNsaWNlKGVuZClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB2YWx1ZS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgICBjaHVua3MucHVzaChCdWZmZXIuZnJvbShiYXNlNjRjaHVuaywgJ2Jhc2U2NCcpKVxuICAgICAgICAgICAgICByZXNwb25zZUZvcm1EYXRhLmFwcGVuZChuYW1lLCBuZXcgRmlsZShjaHVua3MsIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdmFsdWUub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2VGb3JtRGF0YS5hcHBlbmQobmFtZSwgbmV3IEZpbGUoY2h1bmtzLCBmaWxlbmFtZSwgeyB0eXBlOiBtaW1lVHlwZSB9KSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IGJ1c2JveVJlc29sdmUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgYnVzYm95Lm9uKCdmaW5pc2gnLCByZXNvbHZlKVxuICAgICAgICAgIGJ1c2JveS5vbignZXJyb3InLCAoZXJyKSA9PiByZWplY3QobmV3IFR5cGVFcnJvcihlcnIpKSlcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGhpcy5ib2R5ICE9PSBudWxsKSBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNvbnN1bWVCb2R5KHRoaXNba1N0YXRlXS5ib2R5KSkgYnVzYm95LndyaXRlKGNodW5rKVxuICAgICAgICBidXNib3kuZW5kKClcbiAgICAgICAgYXdhaXQgYnVzYm95UmVzb2x2ZVxuXG4gICAgICAgIHJldHVybiByZXNwb25zZUZvcm1EYXRhXG4gICAgICB9IGVsc2UgaWYgKC9hcHBsaWNhdGlvblxcL3gtd3d3LWZvcm0tdXJsZW5jb2RlZC8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiBtaW1lVHlwZVx1MjAxOXMgZXNzZW5jZSBpcyBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLCB0aGVuOlxuXG4gICAgICAgIC8vIDEuIExldCBlbnRyaWVzIGJlIHRoZSByZXN1bHQgb2YgcGFyc2luZyBieXRlcy5cbiAgICAgICAgbGV0IGVudHJpZXNcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgdGV4dCA9ICcnXG4gICAgICAgICAgLy8gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIHBhcnNlciB3aWxsIGtlZXAgdGhlIEJPTS5cbiAgICAgICAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXJcbiAgICAgICAgICAvLyBOb3RlIHRoYXQgc3RyZWFtaW5nIGRlY29kZXIgaXMgc3RhdGVmdWwgYW5kIGNhbm5vdCBiZSByZXVzZWRcbiAgICAgICAgICBjb25zdCBzdHJlYW1pbmdEZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcsIHsgaWdub3JlQk9NOiB0cnVlIH0pXG5cbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNvbnN1bWVCb2R5KHRoaXNba1N0YXRlXS5ib2R5KSkge1xuICAgICAgICAgICAgaWYgKCFpc1VpbnQ4QXJyYXkoY2h1bmspKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFVpbnQ4QXJyYXkgY2h1bmsnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dCArPSBzdHJlYW1pbmdEZWNvZGVyLmRlY29kZShjaHVuaywgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dCArPSBzdHJlYW1pbmdEZWNvZGVyLmRlY29kZSgpXG4gICAgICAgICAgZW50cmllcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModGV4dClcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IFVuY2xlYXIgd2hlbiBuZXcgVVJMU2VhcmNoUGFyYW1zIGNhbiBmYWlsIG9uIGEgc3RyaW5nLlxuICAgICAgICAgIC8vIDIuIElmIGVudHJpZXMgaXMgZmFpbHVyZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBUeXBlRXJyb3IoKSwgeyBjYXVzZTogZXJyIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBSZXR1cm4gYSBuZXcgRm9ybURhdGEgb2JqZWN0IHdob3NlIGVudHJpZXMgYXJlIGVudHJpZXMuXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKClcbiAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXYWl0IGEgdGljayBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIHJlcXVlc3QgaGFzIGJlZW4gYWJvcnRlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBhIFR5cGVFcnJvciBjYW4gYmUgdGhyb3duIHdoZW4gYW4gQWJvcnRFcnJvciBzaG91bGQuXG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpXG5cbiAgICAgICAgdGhyb3dJZkFib3J0ZWQodGhpc1trU3RhdGVdKVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICBoZWFkZXI6IGAke2luc3RhbmNlLm5hbWV9LmZvcm1EYXRhYCxcbiAgICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IHBhcnNlIGNvbnRlbnQgYXMgRm9ybURhdGEuJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRob2RzXG59XG5cbmZ1bmN0aW9uIG1peGluQm9keSAocHJvdG90eXBlKSB7XG4gIE9iamVjdC5hc3NpZ24ocHJvdG90eXBlLnByb3RvdHlwZSwgYm9keU1peGluTWV0aG9kcyhwcm90b3R5cGUpKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1jb25zdW1lLWJvZHlcbiAqIEBwYXJhbSB7UmVzcG9uc2V8UmVxdWVzdH0gb2JqZWN0XG4gKiBAcGFyYW0geyh2YWx1ZTogdW5rbm93bikgPT4gdW5rbm93bn0gY29udmVydEJ5dGVzVG9KU1ZhbHVlXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfFJlcXVlc3R9IGluc3RhbmNlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNwZWNDb25zdW1lQm9keSAob2JqZWN0LCBjb252ZXJ0Qnl0ZXNUb0pTVmFsdWUsIGluc3RhbmNlKSB7XG4gIHdlYmlkbC5icmFuZENoZWNrKG9iamVjdCwgaW5zdGFuY2UpXG5cbiAgdGhyb3dJZkFib3J0ZWQob2JqZWN0W2tTdGF0ZV0pXG5cbiAgLy8gMS4gSWYgb2JqZWN0IGlzIHVudXNhYmxlLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWRcbiAgLy8gICAgd2l0aCBhIFR5cGVFcnJvci5cbiAgaWYgKGJvZHlVbnVzYWJsZShvYmplY3Rba1N0YXRlXS5ib2R5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgaXMgdW51c2FibGUnKVxuICB9XG5cbiAgLy8gMi4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS5cbiAgY29uc3QgcHJvbWlzZSA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZSgpXG5cbiAgLy8gMy4gTGV0IGVycm9yU3RlcHMgZ2l2ZW4gZXJyb3IgYmUgdG8gcmVqZWN0IHByb21pc2Ugd2l0aCBlcnJvci5cbiAgY29uc3QgZXJyb3JTdGVwcyA9IChlcnJvcikgPT4gcHJvbWlzZS5yZWplY3QoZXJyb3IpXG5cbiAgLy8gNC4gTGV0IHN1Y2Nlc3NTdGVwcyBnaXZlbiBhIGJ5dGUgc2VxdWVuY2UgZGF0YSBiZSB0byByZXNvbHZlXG4gIC8vICAgIHByb21pc2Ugd2l0aCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgY29udmVydEJ5dGVzVG9KU1ZhbHVlXG4gIC8vICAgIHdpdGggZGF0YS4gSWYgdGhhdCB0aHJldyBhbiBleGNlcHRpb24sIHRoZW4gcnVuIGVycm9yU3RlcHNcbiAgLy8gICAgd2l0aCB0aGF0IGV4Y2VwdGlvbi5cbiAgY29uc3Qgc3VjY2Vzc1N0ZXBzID0gKGRhdGEpID0+IHtcbiAgICB0cnkge1xuICAgICAgcHJvbWlzZS5yZXNvbHZlKGNvbnZlcnRCeXRlc1RvSlNWYWx1ZShkYXRhKSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvclN0ZXBzKGUpXG4gICAgfVxuICB9XG5cbiAgLy8gNS4gSWYgb2JqZWN0XHUyMDE5cyBib2R5IGlzIG51bGwsIHRoZW4gcnVuIHN1Y2Nlc3NTdGVwcyB3aXRoIGFuXG4gIC8vICAgIGVtcHR5IGJ5dGUgc2VxdWVuY2UuXG4gIGlmIChvYmplY3Rba1N0YXRlXS5ib2R5ID09IG51bGwpIHtcbiAgICBzdWNjZXNzU3RlcHMobmV3IFVpbnQ4QXJyYXkoKSlcbiAgICByZXR1cm4gcHJvbWlzZS5wcm9taXNlXG4gIH1cblxuICAvLyA2LiBPdGhlcndpc2UsIGZ1bGx5IHJlYWQgb2JqZWN0XHUyMDE5cyBib2R5IGdpdmVuIHN1Y2Nlc3NTdGVwcyxcbiAgLy8gICAgZXJyb3JTdGVwcywgYW5kIG9iamVjdFx1MjAxOXMgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdC5cbiAgYXdhaXQgZnVsbHlSZWFkQm9keShvYmplY3Rba1N0YXRlXS5ib2R5LCBzdWNjZXNzU3RlcHMsIGVycm9yU3RlcHMpXG5cbiAgLy8gNy4gUmV0dXJuIHByb21pc2UuXG4gIHJldHVybiBwcm9taXNlLnByb21pc2Vcbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHktdW51c2FibGVcbmZ1bmN0aW9uIGJvZHlVbnVzYWJsZSAoYm9keSkge1xuICAvLyBBbiBvYmplY3QgaW5jbHVkaW5nIHRoZSBCb2R5IGludGVyZmFjZSBtaXhpbiBpc1xuICAvLyBzYWlkIHRvIGJlIHVudXNhYmxlIGlmIGl0cyBib2R5IGlzIG5vbi1udWxsIGFuZFxuICAvLyBpdHMgYm9keVx1MjAxOXMgc3RyZWFtIGlzIGRpc3R1cmJlZCBvciBsb2NrZWQuXG4gIHJldHVybiBib2R5ICE9IG51bGwgJiYgKGJvZHkuc3RyZWFtLmxvY2tlZCB8fCB1dGlsLmlzRGlzdHVyYmVkKGJvZHkuc3RyZWFtKSlcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyN1dGYtOC1kZWNvZGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXJcbiAqL1xuZnVuY3Rpb24gdXRmOERlY29kZUJ5dGVzIChidWZmZXIpIHtcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIDEuIExldCBidWZmZXIgYmUgdGhlIHJlc3VsdCBvZiBwZWVraW5nIHRocmVlIGJ5dGVzIGZyb21cbiAgLy8gICAgaW9RdWV1ZSwgY29udmVydGVkIHRvIGEgYnl0ZSBzZXF1ZW5jZS5cblxuICAvLyAyLiBJZiBidWZmZXIgaXMgMHhFRiAweEJCIDB4QkYsIHRoZW4gcmVhZCB0aHJlZVxuICAvLyAgICBieXRlcyBmcm9tIGlvUXVldWUuIChEbyBub3RoaW5nIHdpdGggdGhvc2UgYnl0ZXMuKVxuICBpZiAoYnVmZmVyWzBdID09PSAweEVGICYmIGJ1ZmZlclsxXSA9PT0gMHhCQiAmJiBidWZmZXJbMl0gPT09IDB4QkYpIHtcbiAgICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkoMylcbiAgfVxuXG4gIC8vIDMuIFByb2Nlc3MgYSBxdWV1ZSB3aXRoIGFuIGluc3RhbmNlIG9mIFVURi04XHUyMDE5c1xuICAvLyAgICBkZWNvZGVyLCBpb1F1ZXVlLCBvdXRwdXQsIGFuZCBcInJlcGxhY2VtZW50XCIuXG4gIGNvbnN0IG91dHB1dCA9IHRleHREZWNvZGVyLmRlY29kZShidWZmZXIpXG5cbiAgLy8gNC4gUmV0dXJuIG91dHB1dC5cbiAgcmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3BhcnNlLWpzb24tYnl0ZXMtdG8tYS1qYXZhc2NyaXB0LXZhbHVlXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSlNPTkZyb21CeXRlcyAoYnl0ZXMpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UodXRmOERlY29kZUJ5dGVzKGJ5dGVzKSlcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktbWltZS10eXBlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9yZXNwb25zZScpLlJlc3BvbnNlfGltcG9ydCgnLi9yZXF1ZXN0JykuUmVxdWVzdH0gb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGJvZHlNaW1lVHlwZSAob2JqZWN0KSB7XG4gIGNvbnN0IHsgaGVhZGVyc0xpc3QgfSA9IG9iamVjdFtrU3RhdGVdXG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gaGVhZGVyc0xpc3QuZ2V0KCdjb250ZW50LXR5cGUnKVxuXG4gIGlmIChjb250ZW50VHlwZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIHJldHVybiBwYXJzZU1JTUVUeXBlKGNvbnRlbnRUeXBlKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZXh0cmFjdEJvZHksXG4gIHNhZmVseUV4dHJhY3RCb2R5LFxuICBjbG9uZUJvZHksXG4gIG1peGluQm9keVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBOb3RTdXBwb3J0ZWRFcnJvclxufSA9IHJlcXVpcmUoJy4vZXJyb3JzJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IGtIVFRQMkJ1aWxkUmVxdWVzdCwga0hUVFAyQ29weUhlYWRlcnMsIGtIVFRQMUJ1aWxkUmVxdWVzdCB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuXG4vLyB0b2tlblJlZ0V4cCBhbmQgaGVhZGVyQ2hhclJlZ2V4IGhhdmUgYmVlbiBsaWZ0ZWQgZnJvbVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFpbi9saWIvX2h0dHBfY29tbW9uLmpzXG5cbi8qKlxuICogVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gdmFsIGlzIGEgdmFsaWQgSFRUUCB0b2tlblxuICogcGVyIHRoZSBydWxlcyBkZWZpbmVkIGluIFJGQyA3MjMwXG4gKiBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjIuNlxuICovXG5jb25zdCB0b2tlblJlZ0V4cCA9IC9eW1xcXl9gYS16QS1aXFwtMC05ISMkJSYnKisufH5dKyQvXG5cbi8qKlxuICogTWF0Y2hlcyBpZiB2YWwgY29udGFpbnMgYW4gaW52YWxpZCBmaWVsZC12Y2hhclxuICogIGZpZWxkLXZhbHVlICAgID0gKiggZmllbGQtY29udGVudCAvIG9icy1mb2xkIClcbiAqICBmaWVsZC1jb250ZW50ICA9IGZpZWxkLXZjaGFyIFsgMSooIFNQIC8gSFRBQiApIGZpZWxkLXZjaGFyIF1cbiAqICBmaWVsZC12Y2hhciAgICA9IFZDSEFSIC8gb2JzLXRleHRcbiAqL1xuY29uc3QgaGVhZGVyQ2hhclJlZ2V4ID0gL1teXFx0XFx4MjAtXFx4N2VcXHg4MC1cXHhmZl0vXG5cbi8vIFZlcmlmaWVzIHRoYXQgYSBnaXZlbiBwYXRoIGlzIHZhbGlkIGRvZXMgbm90IGNvbnRhaW4gY29udHJvbCBjaGFycyBcXHgwMCB0byBcXHgyMFxuY29uc3QgaW52YWxpZFBhdGhSZWdleCA9IC9bXlxcdTAwMjEtXFx1MDBmZl0vXG5cbmNvbnN0IGtIYW5kbGVyID0gU3ltYm9sKCdoYW5kbGVyJylcblxuY29uc3QgY2hhbm5lbHMgPSB7fVxuXG5sZXQgZXh0cmFjdEJvZHlcblxudHJ5IHtcbiAgY29uc3QgZGlhZ25vc3RpY3NDaGFubmVsID0gcmVxdWlyZSgnZGlhZ25vc3RpY3NfY2hhbm5lbCcpXG4gIGNoYW5uZWxzLmNyZWF0ZSA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6cmVxdWVzdDpjcmVhdGUnKVxuICBjaGFubmVscy5ib2R5U2VudCA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6cmVxdWVzdDpib2R5U2VudCcpXG4gIGNoYW5uZWxzLmhlYWRlcnMgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOnJlcXVlc3Q6aGVhZGVycycpXG4gIGNoYW5uZWxzLnRyYWlsZXJzID0gZGlhZ25vc3RpY3NDaGFubmVsLmNoYW5uZWwoJ3VuZGljaTpyZXF1ZXN0OnRyYWlsZXJzJylcbiAgY2hhbm5lbHMuZXJyb3IgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOnJlcXVlc3Q6ZXJyb3InKVxufSBjYXRjaCB7XG4gIGNoYW5uZWxzLmNyZWF0ZSA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbiAgY2hhbm5lbHMuYm9keVNlbnQgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLmhlYWRlcnMgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLnRyYWlsZXJzID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxuICBjaGFubmVscy5lcnJvciA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbn1cblxuY2xhc3MgUmVxdWVzdCB7XG4gIGNvbnN0cnVjdG9yIChvcmlnaW4sIHtcbiAgICBwYXRoLFxuICAgIG1ldGhvZCxcbiAgICBib2R5LFxuICAgIGhlYWRlcnMsXG4gICAgcXVlcnksXG4gICAgaWRlbXBvdGVudCxcbiAgICBibG9ja2luZyxcbiAgICB1cGdyYWRlLFxuICAgIGhlYWRlcnNUaW1lb3V0LFxuICAgIGJvZHlUaW1lb3V0LFxuICAgIHJlc2V0LFxuICAgIHRocm93T25FcnJvcixcbiAgICBleHBlY3RDb250aW51ZVxuICB9LCBoYW5kbGVyKSB7XG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdwYXRoIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBwYXRoWzBdICE9PSAnLycgJiZcbiAgICAgICEocGF0aC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgcGF0aC5zdGFydHNXaXRoKCdodHRwczovLycpKSAmJlxuICAgICAgbWV0aG9kICE9PSAnQ09OTkVDVCdcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigncGF0aCBtdXN0IGJlIGFuIGFic29sdXRlIFVSTCBvciBzdGFydCB3aXRoIGEgc2xhc2gnKVxuICAgIH0gZWxzZSBpZiAoaW52YWxpZFBhdGhSZWdleC5leGVjKHBhdGgpICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgcmVxdWVzdCBwYXRoJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWV0aG9kIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH0gZWxzZSBpZiAodG9rZW5SZWdFeHAuZXhlYyhtZXRob2QpID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgcmVxdWVzdCBtZXRob2QnKVxuICAgIH1cblxuICAgIGlmICh1cGdyYWRlICYmIHR5cGVvZiB1cGdyYWRlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd1cGdyYWRlIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cblxuICAgIGlmIChoZWFkZXJzVGltZW91dCAhPSBudWxsICYmICghTnVtYmVyLmlzRmluaXRlKGhlYWRlcnNUaW1lb3V0KSB8fCBoZWFkZXJzVGltZW91dCA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgaGVhZGVyc1RpbWVvdXQnKVxuICAgIH1cblxuICAgIGlmIChib2R5VGltZW91dCAhPSBudWxsICYmICghTnVtYmVyLmlzRmluaXRlKGJvZHlUaW1lb3V0KSB8fCBib2R5VGltZW91dCA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgYm9keVRpbWVvdXQnKVxuICAgIH1cblxuICAgIGlmIChyZXNldCAhPSBudWxsICYmIHR5cGVvZiByZXNldCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgcmVzZXQnKVxuICAgIH1cblxuICAgIGlmIChleHBlY3RDb250aW51ZSAhPSBudWxsICYmIHR5cGVvZiBleHBlY3RDb250aW51ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgZXhwZWN0Q29udGludWUnKVxuICAgIH1cblxuICAgIHRoaXMuaGVhZGVyc1RpbWVvdXQgPSBoZWFkZXJzVGltZW91dFxuXG4gICAgdGhpcy5ib2R5VGltZW91dCA9IGJvZHlUaW1lb3V0XG5cbiAgICB0aGlzLnRocm93T25FcnJvciA9IHRocm93T25FcnJvciA9PT0gdHJ1ZVxuXG4gICAgdGhpcy5tZXRob2QgPSBtZXRob2RcblxuICAgIHRoaXMuYWJvcnQgPSBudWxsXG5cbiAgICBpZiAoYm9keSA9PSBudWxsKSB7XG4gICAgICB0aGlzLmJvZHkgPSBudWxsXG4gICAgfSBlbHNlIGlmICh1dGlsLmlzU3RyZWFtKGJvZHkpKSB7XG4gICAgICB0aGlzLmJvZHkgPSBib2R5XG5cbiAgICAgIGNvbnN0IHJTdGF0ZSA9IHRoaXMuYm9keS5fcmVhZGFibGVTdGF0ZVxuICAgICAgaWYgKCFyU3RhdGUgfHwgIXJTdGF0ZS5hdXRvRGVzdHJveSkge1xuICAgICAgICB0aGlzLmVuZEhhbmRsZXIgPSBmdW5jdGlvbiBhdXRvRGVzdHJveSAoKSB7XG4gICAgICAgICAgdXRpbC5kZXN0cm95KHRoaXMpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5Lm9uKCdlbmQnLCB0aGlzLmVuZEhhbmRsZXIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYWJvcnQpIHtcbiAgICAgICAgICB0aGlzLmFib3J0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gZXJyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuYm9keS5vbignZXJyb3InLCB0aGlzLmVycm9ySGFuZGxlcilcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNCdWZmZXIoYm9keSkpIHtcbiAgICAgIHRoaXMuYm9keSA9IGJvZHkuYnl0ZUxlbmd0aCA/IGJvZHkgOiBudWxsXG4gICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuYm9keSA9IGJvZHkuYnVmZmVyLmJ5dGVMZW5ndGggPyBCdWZmZXIuZnJvbShib2R5LmJ1ZmZlciwgYm9keS5ieXRlT2Zmc2V0LCBib2R5LmJ5dGVMZW5ndGgpIDogbnVsbFxuICAgIH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICB0aGlzLmJvZHkgPSBib2R5LmJ5dGVMZW5ndGggPyBCdWZmZXIuZnJvbShib2R5KSA6IG51bGxcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5ib2R5ID0gYm9keS5sZW5ndGggPyBCdWZmZXIuZnJvbShib2R5KSA6IG51bGxcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNGb3JtRGF0YUxpa2UoYm9keSkgfHwgdXRpbC5pc0l0ZXJhYmxlKGJvZHkpIHx8IHV0aWwuaXNCbG9iTGlrZShib2R5KSkge1xuICAgICAgdGhpcy5ib2R5ID0gYm9keVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2JvZHkgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgUmVhZGFibGUgc3RyZWFtLCBhbiBpdGVyYWJsZSwgb3IgYW4gYXN5bmMgaXRlcmFibGUnKVxuICAgIH1cblxuICAgIHRoaXMuY29tcGxldGVkID0gZmFsc2VcblxuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlXG5cbiAgICB0aGlzLnVwZ3JhZGUgPSB1cGdyYWRlIHx8IG51bGxcblxuICAgIHRoaXMucGF0aCA9IHF1ZXJ5ID8gdXRpbC5idWlsZFVSTChwYXRoLCBxdWVyeSkgOiBwYXRoXG5cbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpblxuXG4gICAgdGhpcy5pZGVtcG90ZW50ID0gaWRlbXBvdGVudCA9PSBudWxsXG4gICAgICA/IG1ldGhvZCA9PT0gJ0hFQUQnIHx8IG1ldGhvZCA9PT0gJ0dFVCdcbiAgICAgIDogaWRlbXBvdGVudFxuXG4gICAgdGhpcy5ibG9ja2luZyA9IGJsb2NraW5nID09IG51bGwgPyBmYWxzZSA6IGJsb2NraW5nXG5cbiAgICB0aGlzLnJlc2V0ID0gcmVzZXQgPT0gbnVsbCA/IG51bGwgOiByZXNldFxuXG4gICAgdGhpcy5ob3N0ID0gbnVsbFxuXG4gICAgdGhpcy5jb250ZW50TGVuZ3RoID0gbnVsbFxuXG4gICAgdGhpcy5jb250ZW50VHlwZSA9IG51bGxcblxuICAgIHRoaXMuaGVhZGVycyA9ICcnXG5cbiAgICAvLyBPbmx5IGZvciBIMlxuICAgIHRoaXMuZXhwZWN0Q29udGludWUgPSBleHBlY3RDb250aW51ZSAhPSBudWxsID8gZXhwZWN0Q29udGludWUgOiBmYWxzZVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICAgIGlmIChoZWFkZXJzLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoZWFkZXJzIGFycmF5IG11c3QgYmUgZXZlbicpXG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgcHJvY2Vzc0hlYWRlcih0aGlzLCBoZWFkZXJzW2ldLCBoZWFkZXJzW2kgKyAxXSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhlYWRlcnMgJiYgdHlwZW9mIGhlYWRlcnMgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycylcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldXG4gICAgICAgIHByb2Nlc3NIZWFkZXIodGhpcywga2V5LCBoZWFkZXJzW2tleV0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChoZWFkZXJzICE9IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaGVhZGVycyBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheScpXG4gICAgfVxuXG4gICAgaWYgKHV0aWwuaXNGb3JtRGF0YUxpa2UodGhpcy5ib2R5KSkge1xuICAgICAgaWYgKHV0aWwubm9kZU1ham9yIDwgMTYgfHwgKHV0aWwubm9kZU1ham9yID09PSAxNiAmJiB1dGlsLm5vZGVNaW5vciA8IDgpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignRm9ybS1EYXRhIGJvZGllcyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gbm9kZSB2MTYuOCBhbmQgbmV3ZXIuJylcbiAgICAgIH1cblxuICAgICAgaWYgKCFleHRyYWN0Qm9keSkge1xuICAgICAgICBleHRyYWN0Qm9keSA9IHJlcXVpcmUoJy4uL2ZldGNoL2JvZHkuanMnKS5leHRyYWN0Qm9keVxuICAgICAgfVxuXG4gICAgICBjb25zdCBbYm9keVN0cmVhbSwgY29udGVudFR5cGVdID0gZXh0cmFjdEJvZHkoYm9keSlcbiAgICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlXG4gICAgICAgIHRoaXMuaGVhZGVycyArPSBgY29udGVudC10eXBlOiAke2NvbnRlbnRUeXBlfVxcclxcbmBcbiAgICAgIH1cbiAgICAgIHRoaXMuYm9keSA9IGJvZHlTdHJlYW0uc3RyZWFtXG4gICAgICB0aGlzLmNvbnRlbnRMZW5ndGggPSBib2R5U3RyZWFtLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodXRpbC5pc0Jsb2JMaWtlKGJvZHkpICYmIHRoaXMuY29udGVudFR5cGUgPT0gbnVsbCAmJiBib2R5LnR5cGUpIHtcbiAgICAgIHRoaXMuY29udGVudFR5cGUgPSBib2R5LnR5cGVcbiAgICAgIHRoaXMuaGVhZGVycyArPSBgY29udGVudC10eXBlOiAke2JvZHkudHlwZX1cXHJcXG5gXG4gICAgfVxuXG4gICAgdXRpbC52YWxpZGF0ZUhhbmRsZXIoaGFuZGxlciwgbWV0aG9kLCB1cGdyYWRlKVxuXG4gICAgdGhpcy5zZXJ2ZXJuYW1lID0gdXRpbC5nZXRTZXJ2ZXJOYW1lKHRoaXMuaG9zdClcblxuICAgIHRoaXNba0hhbmRsZXJdID0gaGFuZGxlclxuXG4gICAgaWYgKGNoYW5uZWxzLmNyZWF0ZS5oYXNTdWJzY3JpYmVycykge1xuICAgICAgY2hhbm5lbHMuY3JlYXRlLnB1Ymxpc2goeyByZXF1ZXN0OiB0aGlzIH0pXG4gICAgfVxuICB9XG5cbiAgb25Cb2R5U2VudCAoY2h1bmspIHtcbiAgICBpZiAodGhpc1trSGFuZGxlcl0ub25Cb2R5U2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXNba0hhbmRsZXJdLm9uQm9keVNlbnQoY2h1bmspXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5hYm9ydChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25SZXF1ZXN0U2VudCAoKSB7XG4gICAgaWYgKGNoYW5uZWxzLmJvZHlTZW50Lmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICBjaGFubmVscy5ib2R5U2VudC5wdWJsaXNoKHsgcmVxdWVzdDogdGhpcyB9KVxuICAgIH1cblxuICAgIGlmICh0aGlzW2tIYW5kbGVyXS5vblJlcXVlc3RTZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25SZXF1ZXN0U2VudCgpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5hYm9ydChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCkge1xuICAgIGFzc2VydCghdGhpcy5hYm9ydGVkKVxuICAgIGFzc2VydCghdGhpcy5jb21wbGV0ZWQpXG5cbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgYWJvcnQodGhpcy5lcnJvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hYm9ydCA9IGFib3J0XG4gICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25Db25uZWN0KGFib3J0KVxuICAgIH1cbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgaGVhZGVycywgcmVzdW1lLCBzdGF0dXNUZXh0KSB7XG4gICAgYXNzZXJ0KCF0aGlzLmFib3J0ZWQpXG4gICAgYXNzZXJ0KCF0aGlzLmNvbXBsZXRlZClcblxuICAgIGlmIChjaGFubmVscy5oZWFkZXJzLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICBjaGFubmVscy5oZWFkZXJzLnB1Ymxpc2goeyByZXF1ZXN0OiB0aGlzLCByZXNwb25zZTogeyBzdGF0dXNDb2RlLCBoZWFkZXJzLCBzdGF0dXNUZXh0IH0gfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXNba0hhbmRsZXJdLm9uSGVhZGVycyhzdGF0dXNDb2RlLCBoZWFkZXJzLCByZXN1bWUsIHN0YXR1c1RleHQpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmFib3J0KGVycilcbiAgICB9XG4gIH1cblxuICBvbkRhdGEgKGNodW5rKSB7XG4gICAgYXNzZXJ0KCF0aGlzLmFib3J0ZWQpXG4gICAgYXNzZXJ0KCF0aGlzLmNvbXBsZXRlZClcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25EYXRhKGNodW5rKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5hYm9ydChlcnIpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBvblVwZ3JhZGUgKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHNvY2tldCkge1xuICAgIGFzc2VydCghdGhpcy5hYm9ydGVkKVxuICAgIGFzc2VydCghdGhpcy5jb21wbGV0ZWQpXG5cbiAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25VcGdyYWRlKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHNvY2tldClcbiAgfVxuXG4gIG9uQ29tcGxldGUgKHRyYWlsZXJzKSB7XG4gICAgdGhpcy5vbkZpbmFsbHkoKVxuXG4gICAgYXNzZXJ0KCF0aGlzLmFib3J0ZWQpXG5cbiAgICB0aGlzLmNvbXBsZXRlZCA9IHRydWVcbiAgICBpZiAoY2hhbm5lbHMudHJhaWxlcnMuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgIGNoYW5uZWxzLnRyYWlsZXJzLnB1Ymxpc2goeyByZXF1ZXN0OiB0aGlzLCB0cmFpbGVycyB9KVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25Db21wbGV0ZSh0cmFpbGVycylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFRPRE8gKGZpeCk6IFRoaXMgbWlnaHQgYmUgYSBiYWQgaWRlYT9cbiAgICAgIHRoaXMub25FcnJvcihlcnIpXG4gICAgfVxuICB9XG5cbiAgb25FcnJvciAoZXJyb3IpIHtcbiAgICB0aGlzLm9uRmluYWxseSgpXG5cbiAgICBpZiAoY2hhbm5lbHMuZXJyb3IuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgIGNoYW5uZWxzLmVycm9yLnB1Ymxpc2goeyByZXF1ZXN0OiB0aGlzLCBlcnJvciB9KVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFib3J0ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmFib3J0ZWQgPSB0cnVlXG5cbiAgICByZXR1cm4gdGhpc1trSGFuZGxlcl0ub25FcnJvcihlcnJvcilcbiAgfVxuXG4gIG9uRmluYWxseSAoKSB7XG4gICAgaWYgKHRoaXMuZXJyb3JIYW5kbGVyKSB7XG4gICAgICB0aGlzLmJvZHkub2ZmKCdlcnJvcicsIHRoaXMuZXJyb3JIYW5kbGVyKVxuICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5kSGFuZGxlcikge1xuICAgICAgdGhpcy5ib2R5Lm9mZignZW5kJywgdGhpcy5lbmRIYW5kbGVyKVxuICAgICAgdGhpcy5lbmRIYW5kbGVyID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IGFkanVzdCB0byBzdXBwb3J0IEgyXG4gIGFkZEhlYWRlciAoa2V5LCB2YWx1ZSkge1xuICAgIHByb2Nlc3NIZWFkZXIodGhpcywga2V5LCB2YWx1ZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhdGljIFtrSFRUUDFCdWlsZFJlcXVlc3RdIChvcmlnaW4sIG9wdHMsIGhhbmRsZXIpIHtcbiAgICAvLyBUT0RPOiBNaWdyYXRlIGhlYWRlciBwYXJzaW5nIGhlcmUsIHRvIG1ha2UgUmVxdWVzdHNcbiAgICAvLyBIVFRQIGFnbm9zdGljXG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0KG9yaWdpbiwgb3B0cywgaGFuZGxlcilcbiAgfVxuXG4gIHN0YXRpYyBba0hUVFAyQnVpbGRSZXF1ZXN0XSAob3JpZ2luLCBvcHRzLCBoYW5kbGVyKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG9wdHMuaGVhZGVyc1xuICAgIG9wdHMgPSB7IC4uLm9wdHMsIGhlYWRlcnM6IG51bGwgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KG9yaWdpbiwgb3B0cywgaGFuZGxlcilcblxuICAgIHJlcXVlc3QuaGVhZGVycyA9IHt9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoICUgMiAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2hlYWRlcnMgYXJyYXkgbXVzdCBiZSBldmVuJylcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBwcm9jZXNzSGVhZGVyKHJlcXVlc3QsIGhlYWRlcnNbaV0sIGhlYWRlcnNbaSArIDFdLCB0cnVlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGVhZGVycyAmJiB0eXBlb2YgaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzKVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV1cbiAgICAgICAgcHJvY2Vzc0hlYWRlcihyZXF1ZXN0LCBrZXksIGhlYWRlcnNba2V5XSwgdHJ1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhlYWRlcnMgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoZWFkZXJzIG11c3QgYmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5JylcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdFxuICB9XG5cbiAgc3RhdGljIFtrSFRUUDJDb3B5SGVhZGVyc10gKHJhdykge1xuICAgIGNvbnN0IHJhd0hlYWRlcnMgPSByYXcuc3BsaXQoJ1xcclxcbicpXG4gICAgY29uc3QgaGVhZGVycyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGhlYWRlciBvZiByYXdIZWFkZXJzKSB7XG4gICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBoZWFkZXIuc3BsaXQoJzogJylcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoID09PSAwKSBjb250aW51ZVxuXG4gICAgICBpZiAoaGVhZGVyc1trZXldKSBoZWFkZXJzW2tleV0gKz0gYCwke3ZhbHVlfWBcbiAgICAgIGVsc2UgaGVhZGVyc1trZXldID0gdmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gaGVhZGVyc1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NIZWFkZXJWYWx1ZSAoa2V5LCB2YWwsIHNraXBBcHBlbmQpIHtcbiAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgaW52YWxpZCAke2tleX0gaGVhZGVyYClcbiAgfVxuXG4gIHZhbCA9IHZhbCAhPSBudWxsID8gYCR7dmFsfWAgOiAnJ1xuXG4gIGlmIChoZWFkZXJDaGFyUmVnZXguZXhlYyh2YWwpICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBpbnZhbGlkICR7a2V5fSBoZWFkZXJgKVxuICB9XG5cbiAgcmV0dXJuIHNraXBBcHBlbmQgPyB2YWwgOiBgJHtrZXl9OiAke3ZhbH1cXHJcXG5gXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIgKHJlcXVlc3QsIGtleSwgdmFsLCBza2lwQXBwZW5kID0gZmFsc2UpIHtcbiAgaWYgKHZhbCAmJiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYGludmFsaWQgJHtrZXl9IGhlYWRlcmApXG4gIH0gZWxzZSBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChcbiAgICByZXF1ZXN0Lmhvc3QgPT09IG51bGwgJiZcbiAgICBrZXkubGVuZ3RoID09PSA0ICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdob3N0J1xuICApIHtcbiAgICBpZiAoaGVhZGVyQ2hhclJlZ2V4LmV4ZWModmFsKSAhPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBpbnZhbGlkICR7a2V5fSBoZWFkZXJgKVxuICAgIH1cbiAgICAvLyBDb25zdW1lZCBieSBDbGllbnRcbiAgICByZXF1ZXN0Lmhvc3QgPSB2YWxcbiAgfSBlbHNlIGlmIChcbiAgICByZXF1ZXN0LmNvbnRlbnRMZW5ndGggPT09IG51bGwgJiZcbiAgICBrZXkubGVuZ3RoID09PSAxNCAmJlxuICAgIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC1sZW5ndGgnXG4gICkge1xuICAgIHJlcXVlc3QuY29udGVudExlbmd0aCA9IHBhcnNlSW50KHZhbCwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUocmVxdWVzdC5jb250ZW50TGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNvbnRlbnQtbGVuZ3RoIGhlYWRlcicpXG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIHJlcXVlc3QuY29udGVudFR5cGUgPT09IG51bGwgJiZcbiAgICBrZXkubGVuZ3RoID09PSAxMiAmJlxuICAgIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJ1xuICApIHtcbiAgICByZXF1ZXN0LmNvbnRlbnRUeXBlID0gdmFsXG4gICAgaWYgKHNraXBBcHBlbmQpIHJlcXVlc3QuaGVhZGVyc1trZXldID0gcHJvY2Vzc0hlYWRlclZhbHVlKGtleSwgdmFsLCBza2lwQXBwZW5kKVxuICAgIGVsc2UgcmVxdWVzdC5oZWFkZXJzICs9IHByb2Nlc3NIZWFkZXJWYWx1ZShrZXksIHZhbClcbiAgfSBlbHNlIGlmIChcbiAgICBrZXkubGVuZ3RoID09PSAxNyAmJlxuICAgIGtleS50b0xvd2VyQ2FzZSgpID09PSAndHJhbnNmZXItZW5jb2RpbmcnXG4gICkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCB0cmFuc2Zlci1lbmNvZGluZyBoZWFkZXInKVxuICB9IGVsc2UgaWYgKFxuICAgIGtleS5sZW5ndGggPT09IDEwICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb25uZWN0aW9uJ1xuICApIHtcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gdmFsLnRvTG93ZXJDYXNlKCkgOiBudWxsXG4gICAgaWYgKHZhbHVlICE9PSAnY2xvc2UnICYmIHZhbHVlICE9PSAna2VlcC1hbGl2ZScpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjb25uZWN0aW9uIGhlYWRlcicpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgcmVxdWVzdC5yZXNldCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSBpZiAoXG4gICAga2V5Lmxlbmd0aCA9PT0gMTAgJiZcbiAgICBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2tlZXAtYWxpdmUnXG4gICkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBrZWVwLWFsaXZlIGhlYWRlcicpXG4gIH0gZWxzZSBpZiAoXG4gICAga2V5Lmxlbmd0aCA9PT0gNyAmJlxuICAgIGtleS50b0xvd2VyQ2FzZSgpID09PSAndXBncmFkZSdcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIHVwZ3JhZGUgaGVhZGVyJylcbiAgfSBlbHNlIGlmIChcbiAgICBrZXkubGVuZ3RoID09PSA2ICYmXG4gICAga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdleHBlY3QnXG4gICkge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWRFcnJvcignZXhwZWN0IGhlYWRlciBub3Qgc3VwcG9ydGVkJylcbiAgfSBlbHNlIGlmICh0b2tlblJlZ0V4cC5leGVjKGtleSkgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgaGVhZGVyIGtleScpXG4gIH0gZWxzZSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHNraXBBcHBlbmQpIHtcbiAgICAgICAgICBpZiAocmVxdWVzdC5oZWFkZXJzW2tleV0pIHJlcXVlc3QuaGVhZGVyc1trZXldICs9IGAsJHtwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWxbaV0sIHNraXBBcHBlbmQpfWBcbiAgICAgICAgICBlbHNlIHJlcXVlc3QuaGVhZGVyc1trZXldID0gcHJvY2Vzc0hlYWRlclZhbHVlKGtleSwgdmFsW2ldLCBza2lwQXBwZW5kKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcXVlc3QuaGVhZGVycyArPSBwcm9jZXNzSGVhZGVyVmFsdWUoa2V5LCB2YWxbaV0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNraXBBcHBlbmQpIHJlcXVlc3QuaGVhZGVyc1trZXldID0gcHJvY2Vzc0hlYWRlclZhbHVlKGtleSwgdmFsLCBza2lwQXBwZW5kKVxuICAgICAgZWxzZSByZXF1ZXN0LmhlYWRlcnMgKz0gcHJvY2Vzc0hlYWRlclZhbHVlKGtleSwgdmFsKVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlcXVlc3RcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJylcblxuY2xhc3MgRGlzcGF0Y2hlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRpc3BhdGNoICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpXG4gIH1cblxuICBjbG9zZSAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKVxuICB9XG5cbiAgZGVzdHJveSAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRGlzcGF0Y2hlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi9kaXNwYXRjaGVyJylcbmNvbnN0IHtcbiAgQ2xpZW50RGVzdHJveWVkRXJyb3IsXG4gIENsaWVudENsb3NlZEVycm9yLFxuICBJbnZhbGlkQXJndW1lbnRFcnJvclxufSA9IHJlcXVpcmUoJy4vY29yZS9lcnJvcnMnKVxuY29uc3QgeyBrRGVzdHJveSwga0Nsb3NlLCBrRGlzcGF0Y2gsIGtJbnRlcmNlcHRvcnMgfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcblxuY29uc3Qga0Rlc3Ryb3llZCA9IFN5bWJvbCgnZGVzdHJveWVkJylcbmNvbnN0IGtDbG9zZWQgPSBTeW1ib2woJ2Nsb3NlZCcpXG5jb25zdCBrT25EZXN0cm95ZWQgPSBTeW1ib2woJ29uRGVzdHJveWVkJylcbmNvbnN0IGtPbkNsb3NlZCA9IFN5bWJvbCgnb25DbG9zZWQnKVxuY29uc3Qga0ludGVyY2VwdGVkRGlzcGF0Y2ggPSBTeW1ib2woJ0ludGVyY2VwdGVkIERpc3BhdGNoJylcblxuY2xhc3MgRGlzcGF0Y2hlckJhc2UgZXh0ZW5kcyBEaXNwYXRjaGVyIHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXNba0Rlc3Ryb3llZF0gPSBmYWxzZVxuICAgIHRoaXNba09uRGVzdHJveWVkXSA9IG51bGxcbiAgICB0aGlzW2tDbG9zZWRdID0gZmFsc2VcbiAgICB0aGlzW2tPbkNsb3NlZF0gPSBbXVxuICB9XG5cbiAgZ2V0IGRlc3Ryb3llZCAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0Rlc3Ryb3llZF1cbiAgfVxuXG4gIGdldCBjbG9zZWQgKCkge1xuICAgIHJldHVybiB0aGlzW2tDbG9zZWRdXG4gIH1cblxuICBnZXQgaW50ZXJjZXB0b3JzICgpIHtcbiAgICByZXR1cm4gdGhpc1trSW50ZXJjZXB0b3JzXVxuICB9XG5cbiAgc2V0IGludGVyY2VwdG9ycyAobmV3SW50ZXJjZXB0b3JzKSB7XG4gICAgaWYgKG5ld0ludGVyY2VwdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IG5ld0ludGVyY2VwdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBpbnRlcmNlcHRvciA9IHRoaXNba0ludGVyY2VwdG9yc11baV1cbiAgICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW50ZXJjZXB0b3IgbXVzdCBiZSBhbiBmdW5jdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzW2tJbnRlcmNlcHRvcnNdID0gbmV3SW50ZXJjZXB0b3JzXG4gIH1cblxuICBjbG9zZSAoY2FsbGJhY2spIHtcbiAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShkYXRhKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgY2FsbGJhY2snKVxuICAgIH1cblxuICAgIGlmICh0aGlzW2tEZXN0cm95ZWRdKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBjYWxsYmFjayhuZXcgQ2xpZW50RGVzdHJveWVkRXJyb3IoKSwgbnVsbCkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpc1trQ2xvc2VkXSkge1xuICAgICAgaWYgKHRoaXNba09uQ2xvc2VkXSkge1xuICAgICAgICB0aGlzW2tPbkNsb3NlZF0ucHVzaChjYWxsYmFjaylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKG51bGwsIG51bGwpKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpc1trQ2xvc2VkXSA9IHRydWVcbiAgICB0aGlzW2tPbkNsb3NlZF0ucHVzaChjYWxsYmFjaylcblxuICAgIGNvbnN0IG9uQ2xvc2VkID0gKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tzID0gdGhpc1trT25DbG9zZWRdXG4gICAgICB0aGlzW2tPbkNsb3NlZF0gPSBudWxsXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0obnVsbCwgbnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaG91bGQgbm90IGVycm9yLlxuICAgIHRoaXNba0Nsb3NlXSgpXG4gICAgICAudGhlbigoKSA9PiB0aGlzLmRlc3Ryb3koKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2sob25DbG9zZWQpXG4gICAgICB9KVxuICB9XG5cbiAgZGVzdHJveSAoZXJyLCBjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgZXJyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IGVyclxuICAgICAgZXJyID0gbnVsbFxuICAgIH1cblxuICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3koZXJyLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVyciA/IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgZXJyb3IgKi8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjYWxsYmFjaycpXG4gICAgfVxuXG4gICAgaWYgKHRoaXNba0Rlc3Ryb3llZF0pIHtcbiAgICAgIGlmICh0aGlzW2tPbkRlc3Ryb3llZF0pIHtcbiAgICAgICAgdGhpc1trT25EZXN0cm95ZWRdLnB1c2goY2FsbGJhY2spXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBjYWxsYmFjayhudWxsLCBudWxsKSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZXJyKSB7XG4gICAgICBlcnIgPSBuZXcgQ2xpZW50RGVzdHJveWVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXNba0Rlc3Ryb3llZF0gPSB0cnVlXG4gICAgdGhpc1trT25EZXN0cm95ZWRdID0gdGhpc1trT25EZXN0cm95ZWRdIHx8IFtdXG4gICAgdGhpc1trT25EZXN0cm95ZWRdLnB1c2goY2FsbGJhY2spXG5cbiAgICBjb25zdCBvbkRlc3Ryb3llZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IHRoaXNba09uRGVzdHJveWVkXVxuICAgICAgdGhpc1trT25EZXN0cm95ZWRdID0gbnVsbFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbGJhY2tzW2ldKG51bGwsIG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIG5vdCBlcnJvci5cbiAgICB0aGlzW2tEZXN0cm95XShlcnIpLnRoZW4oKCkgPT4ge1xuICAgICAgcXVldWVNaWNyb3Rhc2sob25EZXN0cm95ZWQpXG4gICAgfSlcbiAgfVxuXG4gIFtrSW50ZXJjZXB0ZWREaXNwYXRjaF0gKG9wdHMsIGhhbmRsZXIpIHtcbiAgICBpZiAoIXRoaXNba0ludGVyY2VwdG9yc10gfHwgdGhpc1trSW50ZXJjZXB0b3JzXS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXNba0ludGVyY2VwdGVkRGlzcGF0Y2hdID0gdGhpc1trRGlzcGF0Y2hdXG4gICAgICByZXR1cm4gdGhpc1trRGlzcGF0Y2hdKG9wdHMsIGhhbmRsZXIpXG4gICAgfVxuXG4gICAgbGV0IGRpc3BhdGNoID0gdGhpc1trRGlzcGF0Y2hdLmJpbmQodGhpcylcbiAgICBmb3IgKGxldCBpID0gdGhpc1trSW50ZXJjZXB0b3JzXS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgZGlzcGF0Y2ggPSB0aGlzW2tJbnRlcmNlcHRvcnNdW2ldKGRpc3BhdGNoKVxuICAgIH1cbiAgICB0aGlzW2tJbnRlcmNlcHRlZERpc3BhdGNoXSA9IGRpc3BhdGNoXG4gICAgcmV0dXJuIGRpc3BhdGNoKG9wdHMsIGhhbmRsZXIpXG4gIH1cblxuICBkaXNwYXRjaCAob3B0cywgaGFuZGxlcikge1xuICAgIGlmICghaGFuZGxlciB8fCB0eXBlb2YgaGFuZGxlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaGFuZGxlciBtdXN0IGJlIGFuIG9iamVjdCcpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdvcHRzIG11c3QgYmUgYW4gb2JqZWN0LicpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzW2tEZXN0cm95ZWRdIHx8IHRoaXNba09uRGVzdHJveWVkXSkge1xuICAgICAgICB0aHJvdyBuZXcgQ2xpZW50RGVzdHJveWVkRXJyb3IoKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpc1trQ2xvc2VkXSkge1xuICAgICAgICB0aHJvdyBuZXcgQ2xpZW50Q2xvc2VkRXJyb3IoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1trSW50ZXJjZXB0ZWREaXNwYXRjaF0ob3B0cywgaGFuZGxlcilcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlci5vbkVycm9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvbkVycm9yIG1ldGhvZCcpXG4gICAgICB9XG5cbiAgICAgIGhhbmRsZXIub25FcnJvcihlcnIpXG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERpc3BhdGNoZXJCYXNlXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IG5ldCA9IHJlcXVpcmUoJ25ldCcpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBDb25uZWN0VGltZW91dEVycm9yIH0gPSByZXF1aXJlKCcuL2Vycm9ycycpXG5cbmxldCB0bHMgLy8gaW5jbHVkZSB0bHMgY29uZGl0aW9uYWxseSBzaW5jZSBpdCBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZVxuXG4vLyBUT0RPOiBzZXNzaW9uIHJlLXVzZSBkb2VzIG5vdCB3YWl0IGZvciB0aGUgZmlyc3Rcbi8vIGNvbm5lY3Rpb24gdG8gcmVzb2x2ZSB0aGUgc2Vzc2lvbiBhbmQgbWlnaHQgdGhlcmVmb3JlXG4vLyByZXNvbHZlIHRoZSBzYW1lIHNlcnZlcm5hbWUgbXVsdGlwbGUgdGltZXMgZXZlbiB3aGVuXG4vLyByZS11c2UgaXMgZW5hYmxlZC5cblxubGV0IFNlc3Npb25DYWNoZVxuLy8gRklYTUU6IHJlbW92ZSB3b3JrYXJvdW5kIHdoZW4gdGhlIE5vZGUgYnVnIGlzIGZpeGVkXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzQ5MzQ0I2lzc3VlY29tbWVudC0xNzQxNzc2MzA4XG5pZiAoZ2xvYmFsLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmICFwcm9jZXNzLmVudi5OT0RFX1Y4X0NPVkVSQUdFKSB7XG4gIFNlc3Npb25DYWNoZSA9IGNsYXNzIFdlYWtTZXNzaW9uQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yIChtYXhDYWNoZWRTZXNzaW9ucykge1xuICAgICAgdGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMgPSBtYXhDYWNoZWRTZXNzaW9uc1xuICAgICAgdGhpcy5fc2Vzc2lvbkNhY2hlID0gbmV3IE1hcCgpXG4gICAgICB0aGlzLl9zZXNzaW9uUmVnaXN0cnkgPSBuZXcgZ2xvYmFsLkZpbmFsaXphdGlvblJlZ2lzdHJ5KChrZXkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25DYWNoZS5zaXplIDwgdGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuX3Nlc3Npb25DYWNoZS5nZXQoa2V5KVxuICAgICAgICBpZiAocmVmICE9PSB1bmRlZmluZWQgJiYgcmVmLmRlcmVmKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuX3Nlc3Npb25DYWNoZS5kZWxldGUoa2V5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGdldCAoc2Vzc2lvbktleSkge1xuICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2Vzc2lvbkNhY2hlLmdldChzZXNzaW9uS2V5KVxuICAgICAgcmV0dXJuIHJlZiA/IHJlZi5kZXJlZigpIDogbnVsbFxuICAgIH1cblxuICAgIHNldCAoc2Vzc2lvbktleSwgc2Vzc2lvbikge1xuICAgICAgaWYgKHRoaXMuX21heENhY2hlZFNlc3Npb25zID09PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl9zZXNzaW9uQ2FjaGUuc2V0KHNlc3Npb25LZXksIG5ldyBXZWFrUmVmKHNlc3Npb24pKVxuICAgICAgdGhpcy5fc2Vzc2lvblJlZ2lzdHJ5LnJlZ2lzdGVyKHNlc3Npb24sIHNlc3Npb25LZXkpXG4gICAgfVxuICB9XG59IGVsc2Uge1xuICBTZXNzaW9uQ2FjaGUgPSBjbGFzcyBTaW1wbGVTZXNzaW9uQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yIChtYXhDYWNoZWRTZXNzaW9ucykge1xuICAgICAgdGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMgPSBtYXhDYWNoZWRTZXNzaW9uc1xuICAgICAgdGhpcy5fc2Vzc2lvbkNhY2hlID0gbmV3IE1hcCgpXG4gICAgfVxuXG4gICAgZ2V0IChzZXNzaW9uS2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkNhY2hlLmdldChzZXNzaW9uS2V5KVxuICAgIH1cblxuICAgIHNldCAoc2Vzc2lvbktleSwgc2Vzc2lvbikge1xuICAgICAgaWYgKHRoaXMuX21heENhY2hlZFNlc3Npb25zID09PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc2Vzc2lvbkNhY2hlLnNpemUgPj0gdGhpcy5fbWF4Q2FjaGVkU2Vzc2lvbnMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBvbGRlc3Qgc2Vzc2lvblxuICAgICAgICBjb25zdCB7IHZhbHVlOiBvbGRlc3RLZXkgfSA9IHRoaXMuX3Nlc3Npb25DYWNoZS5rZXlzKCkubmV4dCgpXG4gICAgICAgIHRoaXMuX3Nlc3Npb25DYWNoZS5kZWxldGUob2xkZXN0S2V5KVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9zZXNzaW9uQ2FjaGUuc2V0KHNlc3Npb25LZXksIHNlc3Npb24pXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29ubmVjdG9yICh7IGFsbG93SDIsIG1heENhY2hlZFNlc3Npb25zLCBzb2NrZXRQYXRoLCB0aW1lb3V0LCAuLi5vcHRzIH0pIHtcbiAgaWYgKG1heENhY2hlZFNlc3Npb25zICE9IG51bGwgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heENhY2hlZFNlc3Npb25zKSB8fCBtYXhDYWNoZWRTZXNzaW9ucyA8IDApKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtYXhDYWNoZWRTZXNzaW9ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvJylcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IHBhdGg6IHNvY2tldFBhdGgsIC4uLm9wdHMgfVxuICBjb25zdCBzZXNzaW9uQ2FjaGUgPSBuZXcgU2Vzc2lvbkNhY2hlKG1heENhY2hlZFNlc3Npb25zID09IG51bGwgPyAxMDAgOiBtYXhDYWNoZWRTZXNzaW9ucylcbiAgdGltZW91dCA9IHRpbWVvdXQgPT0gbnVsbCA/IDEwZTMgOiB0aW1lb3V0XG4gIGFsbG93SDIgPSBhbGxvd0gyICE9IG51bGwgPyBhbGxvd0gyIDogZmFsc2VcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbm5lY3QgKHsgaG9zdG5hbWUsIGhvc3QsIHByb3RvY29sLCBwb3J0LCBzZXJ2ZXJuYW1lLCBsb2NhbEFkZHJlc3MsIGh0dHBTb2NrZXQgfSwgY2FsbGJhY2spIHtcbiAgICBsZXQgc29ja2V0XG4gICAgaWYgKHByb3RvY29sID09PSAnaHR0cHM6Jykge1xuICAgICAgaWYgKCF0bHMpIHtcbiAgICAgICAgdGxzID0gcmVxdWlyZSgndGxzJylcbiAgICAgIH1cbiAgICAgIHNlcnZlcm5hbWUgPSBzZXJ2ZXJuYW1lIHx8IG9wdGlvbnMuc2VydmVybmFtZSB8fCB1dGlsLmdldFNlcnZlck5hbWUoaG9zdCkgfHwgbnVsbFxuXG4gICAgICBjb25zdCBzZXNzaW9uS2V5ID0gc2VydmVybmFtZSB8fCBob3N0bmFtZVxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHNlc3Npb25DYWNoZS5nZXQoc2Vzc2lvbktleSkgfHwgbnVsbFxuXG4gICAgICBhc3NlcnQoc2Vzc2lvbktleSlcblxuICAgICAgc29ja2V0ID0gdGxzLmNvbm5lY3Qoe1xuICAgICAgICBoaWdoV2F0ZXJNYXJrOiAxNjM4NCwgLy8gVExTIGluIG5vZGUgY2FuJ3QgaGF2ZSBiaWdnZXIgSFdNIGFueXdheS4uLlxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzZXJ2ZXJuYW1lLFxuICAgICAgICBzZXNzaW9uLFxuICAgICAgICBsb2NhbEFkZHJlc3MsXG4gICAgICAgIC8vIFRPRE8oSFRUUC8yKTogQWRkIHN1cHBvcnQgZm9yIGgyY1xuICAgICAgICBBTFBOUHJvdG9jb2xzOiBhbGxvd0gyID8gWydodHRwLzEuMScsICdoMiddIDogWydodHRwLzEuMSddLFxuICAgICAgICBzb2NrZXQ6IGh0dHBTb2NrZXQsIC8vIHVwZ3JhZGUgc29ja2V0IGNvbm5lY3Rpb25cbiAgICAgICAgcG9ydDogcG9ydCB8fCA0NDMsXG4gICAgICAgIGhvc3Q6IGhvc3RuYW1lXG4gICAgICB9KVxuXG4gICAgICBzb2NrZXRcbiAgICAgICAgLm9uKCdzZXNzaW9uJywgZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICAgICAgICAvLyBUT0RPIChmaXgpOiBDYW4gYSBzZXNzaW9uIGJlY29tZSBpbnZhbGlkIG9uY2UgZXN0YWJsaXNoZWQ/IERvbid0IHRoaW5rIHNvP1xuICAgICAgICAgIHNlc3Npb25DYWNoZS5zZXQoc2Vzc2lvbktleSwgc2Vzc2lvbilcbiAgICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KCFodHRwU29ja2V0LCAnaHR0cFNvY2tldCBjYW4gb25seSBiZSBzZW50IG9uIFRMUyB1cGRhdGUnKVxuICAgICAgc29ja2V0ID0gbmV0LmNvbm5lY3Qoe1xuICAgICAgICBoaWdoV2F0ZXJNYXJrOiA2NCAqIDEwMjQsIC8vIFNhbWUgYXMgbm9kZWpzIGZzIHN0cmVhbXMuXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGxvY2FsQWRkcmVzcyxcbiAgICAgICAgcG9ydDogcG9ydCB8fCA4MCxcbiAgICAgICAgaG9zdDogaG9zdG5hbWVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2V0IFRDUCBrZWVwIGFsaXZlIG9wdGlvbnMgb24gdGhlIHNvY2tldCBoZXJlIGluc3RlYWQgb2YgaW4gY29ubmVjdCgpIGZvciB0aGUgY2FzZSBvZiBhc3NpZ25pbmcgdGhlIHNvY2tldFxuICAgIGlmIChvcHRpb25zLmtlZXBBbGl2ZSA9PSBudWxsIHx8IG9wdGlvbnMua2VlcEFsaXZlKSB7XG4gICAgICBjb25zdCBrZWVwQWxpdmVJbml0aWFsRGVsYXkgPSBvcHRpb25zLmtlZXBBbGl2ZUluaXRpYWxEZWxheSA9PT0gdW5kZWZpbmVkID8gNjBlMyA6IG9wdGlvbnMua2VlcEFsaXZlSW5pdGlhbERlbGF5XG4gICAgICBzb2NrZXQuc2V0S2VlcEFsaXZlKHRydWUsIGtlZXBBbGl2ZUluaXRpYWxEZWxheSlcbiAgICB9XG5cbiAgICBjb25zdCBjYW5jZWxUaW1lb3V0ID0gc2V0dXBUaW1lb3V0KCgpID0+IG9uQ29ubmVjdFRpbWVvdXQoc29ja2V0KSwgdGltZW91dClcblxuICAgIHNvY2tldFxuICAgICAgLnNldE5vRGVsYXkodHJ1ZSlcbiAgICAgIC5vbmNlKHByb3RvY29sID09PSAnaHR0cHM6JyA/ICdzZWN1cmVDb25uZWN0JyA6ICdjb25uZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYW5jZWxUaW1lb3V0KClcblxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjb25zdCBjYiA9IGNhbGxiYWNrXG4gICAgICAgICAgY2FsbGJhY2sgPSBudWxsXG4gICAgICAgICAgY2IobnVsbCwgdGhpcylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbmNlbFRpbWVvdXQoKVxuXG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNvbnN0IGNiID0gY2FsbGJhY2tcbiAgICAgICAgICBjYWxsYmFjayA9IG51bGxcbiAgICAgICAgICBjYihlcnIpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICByZXR1cm4gc29ja2V0XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0dXBUaW1lb3V0IChvbkNvbm5lY3RUaW1lb3V0LCB0aW1lb3V0KSB7XG4gIGlmICghdGltZW91dCkge1xuICAgIHJldHVybiAoKSA9PiB7fVxuICB9XG5cbiAgbGV0IHMxID0gbnVsbFxuICBsZXQgczIgPSBudWxsXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vIHNldEltbWVkaWF0ZSBpcyBhZGRlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBwcmlvdG9yaXNlIHNvY2tldCBlcnJvciBldmVudHMgb3ZlciB0aW1lb3V0c1xuICAgIHMxID0gc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICAgIC8vIFdpbmRvd3MgbmVlZHMgYW4gZXh0cmEgc2V0SW1tZWRpYXRlIHByb2JhYmx5IGR1ZSB0byBpbXBsZW1lbnRhdGlvbiBkaWZmZXJlbmNlcyBpbiB0aGUgc29ja2V0IGxvZ2ljXG4gICAgICAgIHMyID0gc2V0SW1tZWRpYXRlKCgpID0+IG9uQ29ubmVjdFRpbWVvdXQoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ29ubmVjdFRpbWVvdXQoKVxuICAgICAgfVxuICAgIH0pXG4gIH0sIHRpbWVvdXQpXG4gIHJldHVybiAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICBjbGVhckltbWVkaWF0ZShzMSlcbiAgICBjbGVhckltbWVkaWF0ZShzMilcbiAgfVxufVxuXG5mdW5jdGlvbiBvbkNvbm5lY3RUaW1lb3V0IChzb2NrZXQpIHtcbiAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IENvbm5lY3RUaW1lb3V0RXJyb3IoKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBidWlsZENvbm5lY3RvclxuIiwgbnVsbCwgbnVsbCwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsga0JvZHlVc2VkIH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IEVFID0gcmVxdWlyZSgnZXZlbnRzJylcblxuY29uc3QgcmVkaXJlY3RhYmxlU3RhdHVzQ29kZXMgPSBbMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuY29uc3Qga0JvZHkgPSBTeW1ib2woJ2JvZHknKVxuXG5jbGFzcyBCb2R5QXN5bmNJdGVyYWJsZSB7XG4gIGNvbnN0cnVjdG9yIChib2R5KSB7XG4gICAgdGhpc1trQm9keV0gPSBib2R5XG4gICAgdGhpc1trQm9keVVzZWRdID0gZmFsc2VcbiAgfVxuXG4gIGFzeW5jICogW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSAoKSB7XG4gICAgYXNzZXJ0KCF0aGlzW2tCb2R5VXNlZF0sICdkaXN0dXJiZWQnKVxuICAgIHRoaXNba0JvZHlVc2VkXSA9IHRydWVcbiAgICB5aWVsZCAqIHRoaXNba0JvZHldXG4gIH1cbn1cblxuY2xhc3MgUmVkaXJlY3RIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IgKGRpc3BhdGNoLCBtYXhSZWRpcmVjdGlvbnMsIG9wdHMsIGhhbmRsZXIpIHtcbiAgICBpZiAobWF4UmVkaXJlY3Rpb25zICE9IG51bGwgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heFJlZGlyZWN0aW9ucykgfHwgbWF4UmVkaXJlY3Rpb25zIDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWF4UmVkaXJlY3Rpb25zIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgIH1cblxuICAgIHV0aWwudmFsaWRhdGVIYW5kbGVyKGhhbmRsZXIsIG9wdHMubWV0aG9kLCBvcHRzLnVwZ3JhZGUpXG5cbiAgICB0aGlzLmRpc3BhdGNoID0gZGlzcGF0Y2hcbiAgICB0aGlzLmxvY2F0aW9uID0gbnVsbFxuICAgIHRoaXMuYWJvcnQgPSBudWxsXG4gICAgdGhpcy5vcHRzID0geyAuLi5vcHRzLCBtYXhSZWRpcmVjdGlvbnM6IDAgfSAvLyBvcHRzIG11c3QgYmUgYSBjb3B5XG4gICAgdGhpcy5tYXhSZWRpcmVjdGlvbnMgPSBtYXhSZWRpcmVjdGlvbnNcbiAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyXG4gICAgdGhpcy5oaXN0b3J5ID0gW11cblxuICAgIGlmICh1dGlsLmlzU3RyZWFtKHRoaXMub3B0cy5ib2R5KSkge1xuICAgICAgLy8gVE9ETyAoZml4KTogUHJvdmlkZSBzb21lIHdheSBmb3IgdGhlIHVzZXIgdG8gY2FjaGUgdGhlIGZpbGUgdG8gZS5nLiAvdG1wXG4gICAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGFnYWluP1xuICAgICAgLy8gVE9ETyAoZml4KTogRG8gd2UgbmVlZCAxMDAtZXhwZWN0IHN1cHBvcnQgdG8gcHJvdmlkZSBhIHdheSB0byBkbyB0aGlzIHByb3Blcmx5P1xuICAgICAgaWYgKHV0aWwuYm9keUxlbmd0aCh0aGlzLm9wdHMuYm9keSkgPT09IDApIHtcbiAgICAgICAgdGhpcy5vcHRzLmJvZHlcbiAgICAgICAgICAub24oJ2RhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhc3NlcnQoZmFsc2UpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdHMuYm9keS5yZWFkYWJsZURpZFJlYWQgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLm9wdHMuYm9keVtrQm9keVVzZWRdID0gZmFsc2VcbiAgICAgICAgRUUucHJvdG90eXBlLm9uLmNhbGwodGhpcy5vcHRzLmJvZHksICdkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoaXNba0JvZHlVc2VkXSA9IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5ib2R5ICYmIHR5cGVvZiB0aGlzLm9wdHMuYm9keS5waXBlVG8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFRPRE8gKGZpeCk6IFdlIGNhbid0IGFjY2VzcyBSZWFkYWJsZVN0cmVhbSBpbnRlcm5hbCBzdGF0ZVxuICAgICAgLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0IGhhcyBiZWVuIGRpc3R1cmJlZC4gVGhpcyBpcyBqdXN0XG4gICAgICAvLyBhIHdvcmthcm91bmQuXG4gICAgICB0aGlzLm9wdHMuYm9keSA9IG5ldyBCb2R5QXN5bmNJdGVyYWJsZSh0aGlzLm9wdHMuYm9keSlcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5vcHRzLmJvZHkgJiZcbiAgICAgIHR5cGVvZiB0aGlzLm9wdHMuYm9keSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICFBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5vcHRzLmJvZHkpICYmXG4gICAgICB1dGlsLmlzSXRlcmFibGUodGhpcy5vcHRzLmJvZHkpXG4gICAgKSB7XG4gICAgICAvLyBUT0RPOiBTaG91bGQgd2UgYWxsb3cgcmUtdXNpbmcgaXRlcmFibGUgaWYgIXRoaXMub3B0cy5pZGVtcG90ZW50XG4gICAgICAvLyBvciB0aHJvdWdoIHNvbWUgb3RoZXIgZmxhZz9cbiAgICAgIHRoaXMub3B0cy5ib2R5ID0gbmV3IEJvZHlBc3luY0l0ZXJhYmxlKHRoaXMub3B0cy5ib2R5KVxuICAgIH1cbiAgfVxuXG4gIG9uQ29ubmVjdCAoYWJvcnQpIHtcbiAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICB0aGlzLmhhbmRsZXIub25Db25uZWN0KGFib3J0LCB7IGhpc3Rvcnk6IHRoaXMuaGlzdG9yeSB9KVxuICB9XG5cbiAgb25VcGdyYWRlIChzdGF0dXNDb2RlLCBoZWFkZXJzLCBzb2NrZXQpIHtcbiAgICB0aGlzLmhhbmRsZXIub25VcGdyYWRlKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHNvY2tldClcbiAgfVxuXG4gIG9uRXJyb3IgKGVycm9yKSB7XG4gICAgdGhpcy5oYW5kbGVyLm9uRXJyb3IoZXJyb3IpXG4gIH1cblxuICBvbkhlYWRlcnMgKHN0YXR1c0NvZGUsIGhlYWRlcnMsIHJlc3VtZSwgc3RhdHVzVGV4dCkge1xuICAgIHRoaXMubG9jYXRpb24gPSB0aGlzLmhpc3RvcnkubGVuZ3RoID49IHRoaXMubWF4UmVkaXJlY3Rpb25zIHx8IHV0aWwuaXNEaXN0dXJiZWQodGhpcy5vcHRzLmJvZHkpXG4gICAgICA/IG51bGxcbiAgICAgIDogcGFyc2VMb2NhdGlvbihzdGF0dXNDb2RlLCBoZWFkZXJzKVxuXG4gICAgaWYgKHRoaXMub3B0cy5vcmlnaW4pIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG5ldyBVUkwodGhpcy5vcHRzLnBhdGgsIHRoaXMub3B0cy5vcmlnaW4pKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5sb2NhdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkhlYWRlcnMoc3RhdHVzQ29kZSwgaGVhZGVycywgcmVzdW1lLCBzdGF0dXNUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IHsgb3JpZ2luLCBwYXRobmFtZSwgc2VhcmNoIH0gPSB1dGlsLnBhcnNlVVJMKG5ldyBVUkwodGhpcy5sb2NhdGlvbiwgdGhpcy5vcHRzLm9yaWdpbiAmJiBuZXcgVVJMKHRoaXMub3B0cy5wYXRoLCB0aGlzLm9wdHMub3JpZ2luKSkpXG4gICAgY29uc3QgcGF0aCA9IHNlYXJjaCA/IGAke3BhdGhuYW1lfSR7c2VhcmNofWAgOiBwYXRobmFtZVxuXG4gICAgLy8gUmVtb3ZlIGhlYWRlcnMgcmVmZXJyaW5nIHRvIHRoZSBvcmlnaW5hbCBVUkwuXG4gICAgLy8gQnkgZGVmYXVsdCBpdCBpcyBIb3N0IG9ubHksIHVubGVzcyBpdCdzIGEgMzAzIChzZWUgYmVsb3cpLCB3aGljaCByZW1vdmVzIGFsc28gYWxsIENvbnRlbnQtKiBoZWFkZXJzLlxuICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40XG4gICAgdGhpcy5vcHRzLmhlYWRlcnMgPSBjbGVhblJlcXVlc3RIZWFkZXJzKHRoaXMub3B0cy5oZWFkZXJzLCBzdGF0dXNDb2RlID09PSAzMDMsIHRoaXMub3B0cy5vcmlnaW4gIT09IG9yaWdpbilcbiAgICB0aGlzLm9wdHMucGF0aCA9IHBhdGhcbiAgICB0aGlzLm9wdHMub3JpZ2luID0gb3JpZ2luXG4gICAgdGhpcy5vcHRzLm1heFJlZGlyZWN0aW9ucyA9IDBcbiAgICB0aGlzLm9wdHMucXVlcnkgPSBudWxsXG5cbiAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC40XG4gICAgLy8gSW4gY2FzZSBvZiBIVFRQIDMwMywgYWx3YXlzIHJlcGxhY2UgbWV0aG9kIHRvIGJlIGVpdGhlciBIRUFEIG9yIEdFVFxuICAgIGlmIChzdGF0dXNDb2RlID09PSAzMDMgJiYgdGhpcy5vcHRzLm1ldGhvZCAhPT0gJ0hFQUQnKSB7XG4gICAgICB0aGlzLm9wdHMubWV0aG9kID0gJ0dFVCdcbiAgICAgIHRoaXMub3B0cy5ib2R5ID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIG9uRGF0YSAoY2h1bmspIHtcbiAgICBpZiAodGhpcy5sb2NhdGlvbikge1xuICAgICAgLypcbiAgICAgICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjRcblxuICAgICAgICBUTERSOiB1bmRpY2kgYWx3YXlzIGlnbm9yZXMgM3h4IHJlc3BvbnNlIGJvZGllcy5cblxuICAgICAgICBSZWRpcmVjdGlvbiBpcyB1c2VkIHRvIHNlcnZlIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgZnJvbSBhbm90aGVyIFVSTCwgc28gaXQgaXMgYXNzdW1lcyB0aGF0XG4gICAgICAgIG5vIGJvZHkgaXMgZ2VuZXJhdGVkIChhbmQgdGh1cyBjYW4gYmUgaWdub3JlZCkuIEV2ZW4gdGhvdWdoIGdlbmVyYXRpbmcgYSBib2R5IGlzIG5vdCBwcm9oaWJpdGVkLlxuXG4gICAgICAgIEZvciBzdGF0dXMgMzAxLCAzMDIsIDMwMywgMzA3IGFuZCAzMDggKHRoZSBsYXR0ZXIgZnJvbSBSRkMgNzIzOCksIHRoZSBzcGVjcyBtZW50aW9uIHRoYXQgdGhlIGJvZHkgdXN1YWxseVxuICAgICAgICAod2hpY2ggbWVhbnMgaXQncyBvcHRpb25hbCBhbmQgbm90IG1hbmRhdGVkKSBjb250YWluIGp1c3QgYW4gaHlwZXJsaW5rIHRvIHRoZSB2YWx1ZSBvZlxuICAgICAgICB0aGUgTG9jYXRpb24gcmVzcG9uc2UgaGVhZGVyLCBzbyB0aGUgYm9keSBjYW4gYmUgaWdub3JlZCBzYWZlbHkuXG5cbiAgICAgICAgRm9yIHN0YXR1cyAzMDAsIHdoaWNoIGlzIFwiTXVsdGlwbGUgQ2hvaWNlc1wiLCB0aGUgc3BlYyBtZW50aW9ucyBib3RoIGdlbmVyYXRpbmcgYSBMb2NhdGlvblxuICAgICAgICByZXNwb25zZSBoZWFkZXIgQU5EIGEgcmVzcG9uc2UgYm9keSB3aXRoIHRoZSBvdGhlciBwb3NzaWJsZSBsb2NhdGlvbiB0byBmb2xsb3cuXG4gICAgICAgIFNpbmNlIHRoZSBzcGVjIGV4cGxpY2l0aWx5IGNob29zZXMgbm90IHRvIHNwZWNpZnkgYSBmb3JtYXQgZm9yIHN1Y2ggYm9keSBhbmQgbGVhdmUgaXQgdG9cbiAgICAgICAgc2VydmVycyBhbmQgYnJvd3NlcnMgaW1wbGVtZW50b3JzLCB3ZSBpZ25vcmUgdGhlIGJvZHkgYXMgdGhlcmUgaXMgbm8gc3BlY2lmaWVkIHdheSB0byBldmVudHVhbGx5IHBhcnNlIGl0LlxuICAgICAgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkRhdGEoY2h1bmspXG4gICAgfVxuICB9XG5cbiAgb25Db21wbGV0ZSAodHJhaWxlcnMpIHtcbiAgICBpZiAodGhpcy5sb2NhdGlvbikge1xuICAgICAgLypcbiAgICAgICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjRcblxuICAgICAgICBUTERSOiB1bmRpY2kgYWx3YXlzIGlnbm9yZXMgM3h4IHJlc3BvbnNlIHRyYWlsZXJzIGFzIHRoZXkgYXJlIG5vdCBleHBlY3RlZCBpbiBjYXNlIG9mIHJlZGlyZWN0aW9uc1xuICAgICAgICBhbmQgbmVpdGhlciBhcmUgdXNlZnVsIGlmIHByZXNlbnQuXG5cbiAgICAgICAgU2VlIGNvbW1lbnQgb24gb25EYXRhIG1ldGhvZCBhYm92ZSBmb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbnMuXG4gICAgICAqL1xuXG4gICAgICB0aGlzLmxvY2F0aW9uID0gbnVsbFxuICAgICAgdGhpcy5hYm9ydCA9IG51bGxcblxuICAgICAgdGhpcy5kaXNwYXRjaCh0aGlzLm9wdHMsIHRoaXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlci5vbkNvbXBsZXRlKHRyYWlsZXJzKVxuICAgIH1cbiAgfVxuXG4gIG9uQm9keVNlbnQgKGNodW5rKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlci5vbkJvZHlTZW50KSB7XG4gICAgICB0aGlzLmhhbmRsZXIub25Cb2R5U2VudChjaHVuaylcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VMb2NhdGlvbiAoc3RhdHVzQ29kZSwgaGVhZGVycykge1xuICBpZiAocmVkaXJlY3RhYmxlU3RhdHVzQ29kZXMuaW5kZXhPZihzdGF0dXNDb2RlKSA9PT0gLTEpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgaWYgKGhlYWRlcnNbaV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYXRpb24nKSB7XG4gICAgICByZXR1cm4gaGVhZGVyc1tpICsgMV1cbiAgICB9XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuNFxuZnVuY3Rpb24gc2hvdWxkUmVtb3ZlSGVhZGVyIChoZWFkZXIsIHJlbW92ZUNvbnRlbnQsIHVua25vd25PcmlnaW4pIHtcbiAgaWYgKGhlYWRlci5sZW5ndGggPT09IDQpIHtcbiAgICByZXR1cm4gdXRpbC5oZWFkZXJOYW1lVG9TdHJpbmcoaGVhZGVyKSA9PT0gJ2hvc3QnXG4gIH1cbiAgaWYgKHJlbW92ZUNvbnRlbnQgJiYgdXRpbC5oZWFkZXJOYW1lVG9TdHJpbmcoaGVhZGVyKS5zdGFydHNXaXRoKCdjb250ZW50LScpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAodW5rbm93bk9yaWdpbiAmJiAoaGVhZGVyLmxlbmd0aCA9PT0gMTMgfHwgaGVhZGVyLmxlbmd0aCA9PT0gNiB8fCBoZWFkZXIubGVuZ3RoID09PSAxOSkpIHtcbiAgICBjb25zdCBuYW1lID0gdXRpbC5oZWFkZXJOYW1lVG9TdHJpbmcoaGVhZGVyKVxuICAgIHJldHVybiBuYW1lID09PSAnYXV0aG9yaXphdGlvbicgfHwgbmFtZSA9PT0gJ2Nvb2tpZScgfHwgbmFtZSA9PT0gJ3Byb3h5LWF1dGhvcml6YXRpb24nXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40XG5mdW5jdGlvbiBjbGVhblJlcXVlc3RIZWFkZXJzIChoZWFkZXJzLCByZW1vdmVDb250ZW50LCB1bmtub3duT3JpZ2luKSB7XG4gIGNvbnN0IHJldCA9IFtdXG4gIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBpZiAoIXNob3VsZFJlbW92ZUhlYWRlcihoZWFkZXJzW2ldLCByZW1vdmVDb250ZW50LCB1bmtub3duT3JpZ2luKSkge1xuICAgICAgICByZXQucHVzaChoZWFkZXJzW2ldLCBoZWFkZXJzW2kgKyAxXSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaGVhZGVycyAmJiB0eXBlb2YgaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkge1xuICAgICAgaWYgKCFzaG91bGRSZW1vdmVIZWFkZXIoa2V5LCByZW1vdmVDb250ZW50LCB1bmtub3duT3JpZ2luKSkge1xuICAgICAgICByZXQucHVzaChrZXksIGhlYWRlcnNba2V5XSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0KGhlYWRlcnMgPT0gbnVsbCwgJ2hlYWRlcnMgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXknKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWRpcmVjdEhhbmRsZXJcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgUmVkaXJlY3RIYW5kbGVyID0gcmVxdWlyZSgnLi4vaGFuZGxlci9SZWRpcmVjdEhhbmRsZXInKVxuXG5mdW5jdGlvbiBjcmVhdGVSZWRpcmVjdEludGVyY2VwdG9yICh7IG1heFJlZGlyZWN0aW9uczogZGVmYXVsdE1heFJlZGlyZWN0aW9ucyB9KSB7XG4gIHJldHVybiAoZGlzcGF0Y2gpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gSW50ZXJjZXB0IChvcHRzLCBoYW5kbGVyKSB7XG4gICAgICBjb25zdCB7IG1heFJlZGlyZWN0aW9ucyA9IGRlZmF1bHRNYXhSZWRpcmVjdGlvbnMgfSA9IG9wdHNcblxuICAgICAgaWYgKCFtYXhSZWRpcmVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BhdGNoKG9wdHMsIGhhbmRsZXIpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlZGlyZWN0SGFuZGxlciA9IG5ldyBSZWRpcmVjdEhhbmRsZXIoZGlzcGF0Y2gsIG1heFJlZGlyZWN0aW9ucywgb3B0cywgaGFuZGxlcilcbiAgICAgIG9wdHMgPSB7IC4uLm9wdHMsIG1heFJlZGlyZWN0aW9uczogMCB9IC8vIFN0b3Agc3ViIGRpc3BhdGNoZXIgZnJvbSBhbHNvIHJlZGlyZWN0aW5nLlxuICAgICAgcmV0dXJuIGRpc3BhdGNoKG9wdHMsIHJlZGlyZWN0SGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVSZWRpcmVjdEludGVyY2VwdG9yXG4iLCAibW9kdWxlLmV4cG9ydHMgPSAnQUdGemJRRUFBQUFCTUFoZ0FYOEJmMkFEZjM5L0FYOWdCSDkvZjM4QmYyQUFBR0FEZjM5L0FHQUJmd0JnQW45L0FHQUdmMzkvZjM5L0FBTExBUWdEWlc1MkdIZGhjMjFmYjI1ZmFHVmhaR1Z5YzE5amIyMXdiR1YwWlFBQ0EyVnVkaFYzWVhOdFgyOXVYMjFsYzNOaFoyVmZZbVZuYVc0QUFBTmxibllMZDJGemJWOXZibDkxY213QUFRTmxibllPZDJGemJWOXZibDl6ZEdGMGRYTUFBUU5sYm5ZVWQyRnpiVjl2Ymw5b1pXRmtaWEpmWm1sbGJHUUFBUU5sYm5ZVWQyRnpiVjl2Ymw5b1pXRmtaWEpmZG1Gc2RXVUFBUU5sYm5ZTWQyRnpiVjl2Ymw5aWIyUjVBQUVEWlc1MkdIZGhjMjFmYjI1ZmJXVnpjMkZuWlY5amIyMXdiR1YwWlFBQUEwWkZBd01FQUFBRkFBQUFBQUFBQlFFRkFBVUZCUUFBQmdBQUFBQUdCZ1lHQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFCQUFBQkFRY0FBQVVGQXdBQkJBVUJjQUVTRWdVREFRQUNCZ2dCZndGQmdOUUVDd2ZSQlNJR2JXVnRiM0o1QWdBTFgybHVhWFJwWVd4cGVtVUFDUmxmWDJsdVpHbHlaV04wWDJaMWJtTjBhVzl1WDNSaFlteGxBUUFMYkd4b2RIUndYMmx1YVhRQUNoaHNiR2gwZEhCZmMyaHZkV3hrWDJ0bFpYQmZZV3hwZG1VQVFReHNiR2gwZEhCZllXeHNiMk1BREFadFlXeHNiMk1BUmd0c2JHaDBkSEJmWm5KbFpRQU5CR1p5WldVQVNBOXNiR2gwZEhCZloyVjBYM1I1Y0dVQURoVnNiR2gwZEhCZloyVjBYMmgwZEhCZmJXRnFiM0lBRHhWc2JHaDBkSEJmWjJWMFgyaDBkSEJmYldsdWIzSUFFQkZzYkdoMGRIQmZaMlYwWDIxbGRHaHZaQUFSRm14c2FIUjBjRjluWlhSZmMzUmhkSFZ6WDJOdlpHVUFFaEpzYkdoMGRIQmZaMlYwWDNWd1ozSmhaR1VBRXd4c2JHaDBkSEJmY21WelpYUUFGQTVzYkdoMGRIQmZaWGhsWTNWMFpRQVZGR3hzYUhSMGNGOXpaWFIwYVc1bmMxOXBibWwwQUJZTmJHeG9kSFJ3WDJacGJtbHphQUFYREd4c2FIUjBjRjl3WVhWelpRQVlEV3hzYUhSMGNGOXlaWE4xYldVQUdSdHNiR2gwZEhCZmNtVnpkVzFsWDJGbWRHVnlYM1Z3WjNKaFpHVUFHaEJzYkdoMGRIQmZaMlYwWDJWeWNtNXZBQnNYYkd4b2RIUndYMmRsZEY5bGNuSnZjbDl5WldGemIyNEFIQmRzYkdoMGRIQmZjMlYwWDJWeWNtOXlYM0psWVhOdmJnQWRGR3hzYUhSMGNGOW5aWFJmWlhKeWIzSmZjRzl6QUI0UmJHeG9kSFJ3WDJWeWNtNXZYMjVoYldVQUh4SnNiR2gwZEhCZmJXVjBhRzlrWDI1aGJXVUFJQkpzYkdoMGRIQmZjM1JoZEhWelgyNWhiV1VBSVJwc2JHaDBkSEJmYzJWMFgyeGxibWxsYm5SZmFHVmhaR1Z5Y3dBaUlXeHNhSFIwY0Y5elpYUmZiR1Z1YVdWdWRGOWphSFZ1YTJWa1gyeGxibWQwYUFBakhXeHNhSFIwY0Y5elpYUmZiR1Z1YVdWdWRGOXJaV1Z3WDJGc2FYWmxBQ1FrYkd4b2RIUndYM05sZEY5c1pXNXBaVzUwWDNSeVlXNXpabVZ5WDJWdVkyOWthVzVuQUNVWWJHeG9kSFJ3WDIxbGMzTmhaMlZmYm1WbFpITmZaVzltQUQ4SkZ3RUFRUUVMRVFFQ0F3UUZDd1lITlRrM01TOHRKeXNwQ3NMZ0FrVUNBQXNJQUJDSWdJQ0FBQXNaQUNBQUVNS0FnSUFBR2lBQUlBSTJBamdnQUNBQk9nQW9DeHdBSUFBZ0FDOEJNaUFBTFFBdUlBQVF3WUNBZ0FBUWdJQ0FnQUFMS2dFQmYwSEFBQkRHZ0lDQUFDSUJFTUtBZ0lBQUdpQUJRWUNJZ0lBQU5nSTRJQUVnQURvQUtDQUJDd29BSUFBUXlJQ0FnQUFMQndBZ0FDMEFLQXNIQUNBQUxRQXFDd2NBSUFBdEFDc0xCd0FnQUMwQUtRc0hBQ0FBTHdFeUN3Y0FJQUF0QUM0TFJRRUVmeUFBS0FJWUlRRWdBQzBBTFNFQ0lBQXRBQ2doQXlBQUtBSTRJUVFnQUJEQ2dJQ0FBQm9nQUNBRU5nSTRJQUFnQXpvQUtDQUFJQUk2QUMwZ0FDQUJOZ0lZQ3hFQUlBQWdBU0FCSUFKcUVNT0FnSUFBQ3hBQUlBQkJBRUhjQUJETWdJQ0FBQm9MWndFQmYwRUFJUUVDUUNBQUtBSU1EUUFDUUFKQUFrQUNRQ0FBTFFBdkRnTUJBQU1DQ3lBQUtBSTRJZ0ZGRFFBZ0FTZ0NMQ0lCUlEwQUlBQWdBUkdBZ0lDQUFBQWlBUTBEQzBFQUR3c1F5b0NBZ0FBQUN5QUFRY09XZ0lBQU5nSVFRUTRoQVFzZ0FRc2VBQUpBSUFBb0Fnd05BQ0FBUWRHYmdJQUFOZ0lRSUFCQkZUWUNEQXNMRmdBQ1FDQUFLQUlNUVJWSERRQWdBRUVBTmdJTUN3c1dBQUpBSUFBb0FneEJGa2NOQUNBQVFRQTJBZ3dMQ3djQUlBQW9BZ3dMQndBZ0FDZ0NFQXNKQUNBQUlBRTJBaEFMQndBZ0FDZ0NGQXNpQUFKQUlBQkJKRWtOQUJES2dJQ0FBQUFMSUFCQkFuUkJvTE9BZ0FCcUtBSUFDeUlBQWtBZ0FFRXVTUTBBRU1xQWdJQUFBQXNnQUVFQ2RFR3d0SUNBQUdvb0FnQUw3Z3NCQVg5QjY2aUFnQUFoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJuSDlxRHZRRFkySUFBV0ZoWVdGaFlRSURCQVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaEJnY0lDUW9MREEwT0QyRmhZV0ZoRUdGaFlXRmhZV0ZoWVdGaEVXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlSSVRGQlVXRnhnWkdodGhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhIQjBlSHlBaElpTWtKU1luS0NrcUt5d3RMaTh3TVRJek5EVTJZVGM0T1RwaFlXRmhZV0ZoWVR0aFlXRThZV0ZoWVQwK1AyRmhZV0ZoWVdGaFFHRmhRV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVVKRFJFVkdSMGhKU2t0TVRVNVBVRkZTVTJGaFlXRmhZV0ZoVkZWV1YxaFpXbHRoWEYxaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmVZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhYMkJoQzBIaHA0Q0FBQThMUWFTaGdJQUFEd3RCeTZ5QWdBQVBDMEgrc1lDQUFBOExRY0NrZ0lBQUR3dEJxNlNBZ0FBUEMwR05xSUNBQUE4TFFlS21nSUFBRHd0QmdMQ0FnQUFQQzBHNXI0Q0FBQThMUWRla2dJQUFEd3RCNzUrQWdBQVBDMEhobjRDQUFBOExRZnFmZ0lBQUR3dEI4cUNBZ0FBUEMwR29yNENBQUE4TFFhNnlnSUFBRHd0QmlMQ0FnQUFQQzBIc3A0Q0FBQThMUVlLaWdJQUFEd3RCanAyQWdBQVBDMEhRcm9DQUFBOExRY3FqZ0lBQUR3dEJ4YktBZ0FBUEMwSGZuSUNBQUE4TFFkS2NnSUFBRHd0QnhLQ0FnQUFQQzBIWG9JQ0FBQThMUWFLZmdJQUFEd3RCN2E2QWdBQVBDMEdyc0lDQUFBOExRZFNsZ0lBQUR3dEJ6SzZBZ0FBUEMwSDZyb0NBQUE4TFFmeXJnSUFBRHd0QjByQ0FnQUFQQzBIeG5ZQ0FBQThMUWJ1Z2dJQUFEd3RCOTZ1QWdBQVBDMEdRc1lDQUFBOExRZGV4Z0lBQUR3dEJvcTJBZ0FBUEMwSFVwNENBQUE4TFFlQ3JnSUFBRHd0Qm42eUFnQUFQQzBIcnNZQ0FBQThMUWRXZmdJQUFEd3RCeXJHQWdBQVBDMEhlcFlDQUFBOExRZFNlZ0lBQUR3dEI5SnlBZ0FBUEMwR25zb0NBQUE4TFFiR2RnSUFBRHd0Qm9KMkFnQUFQQzBHNXNZQ0FBQThMUWJ5d2dJQUFEd3RCa3FHQWdBQVBDMEd6cG9DQUFBOExRZW1zZ0lBQUR3dEJySjZBZ0FBUEMwSFVxNENBQUE4TFFmZW1nSUFBRHd0QmdLYUFnQUFQQzBHd29ZQ0FBQThMUWY2ZWdJQUFEd3RCamFPQWdBQVBDMEdKcllDQUFBOExRZmVpZ0lBQUR3dEJvTEdBZ0FBUEMwR3VuNENBQUE4TFFjYWxnSUFBRHd0QjZKNkFnQUFQQzBHVG9vQ0FBQThMUWNLdmdJQUFEd3RCdzUyQWdBQVBDMEdMcklDQUFBOExRZUdkZ0lBQUR3dEJqYStBZ0FBUEMwSHFvWUNBQUE4TFFiU3RnSUFBRHd0QjBxK0FnQUFQQzBIZnNvQ0FBQThMUWRLeWdJQUFEd3RCOExDQWdBQVBDMEdwb29DQUFBOExRZm1qZ0lBQUR3dEJtWjZBZ0FBUEMwRzFySUNBQUE4TFFadXdnSUFBRHd0QmtyS0FnQUFQQzBHMnE0Q0FBQThMUWNLaWdJQUFEd3RCK0xLQWdBQVBDMEdlcFlDQUFBOExRZENpZ0lBQUR3dEJ1cDZBZ0FBUEMwR0Jub0NBQUE4TEVNcUFnSUFBQUF0QjFxR0FnQUFoQVFzZ0FRc1dBQ0FBSUFBdEFDMUIvZ0Z4SUFGQkFFZHlPZ0F0Q3hrQUlBQWdBQzBBTFVIOUFYRWdBVUVBUjBFQmRISTZBQzBMR1FBZ0FDQUFMUUF0UWZzQmNTQUJRUUJIUVFKMGNqb0FMUXNaQUNBQUlBQXRBQzFCOXdGeElBRkJBRWRCQTNSeU9nQXRDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FnQWlCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MU1FFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NCQ0lFUlEwQUlBQWdBU0FDSUFGcklBUVJnWUNBZ0FBQUlnTkJmMGNOQUNBQVFjYVJnSUFBTmdJUVFSZ2hBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUl3SWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREMwa0JBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWdnaUJFVU5BQ0FBSUFFZ0FpQUJheUFFRVlHQWdJQUFBQ0lEUVg5SERRQWdBRUgyaW9DQUFEWUNFRUVZSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ05DSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RKQVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSU1JZ1JGRFFBZ0FDQUJJQUlnQVdzZ0JCR0JnSUNBQUFBaUEwRi9SdzBBSUFCQjdacUFnQUEyQWhCQkdDRURDeUFEQ3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BamdpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTFNRRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDRUNJRVJRMEFJQUFnQVNBQ0lBRnJJQVFSZ1lDQWdBQUFJZ05CZjBjTkFDQUFRWldRZ0lBQU5nSVFRUmdoQXdzZ0F3c3VBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJOElnUkZEUUFnQUNBRUVZQ0FnSUFBQUNFREN5QURDMGtCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FoUWlCRVVOQUNBQUlBRWdBaUFCYXlBRUVZR0FnSUFBQUNJRFFYOUhEUUFnQUVHcW00Q0FBRFlDRUVFWUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NRQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXd0SkFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUlZSWdSRkRRQWdBQ0FCSUFJZ0FXc2dCQkdCZ0lDQUFBQWlBMEYvUncwQUlBQkI3Wk9BZ0FBMkFoQkJHQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWtRaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ0pDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3N1QVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSXNJZ1JGRFFBZ0FDQUVFWUNBZ0lBQUFDRURDeUFEQzBrQkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BaWdpQkVVTkFDQUFJQUVnQWlBQmF5QUVFWUdBZ0lBQUFDSURRWDlIRFFBZ0FFSDJpSUNBQURZQ0VFRVlJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDVUNJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3dEpBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJY0lnUkZEUUFnQUNBQklBSWdBV3NnQkJHQmdJQ0FBQUFpQTBGL1J3MEFJQUJCd3BtQWdBQTJBaEJCR0NFREN5QURDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FrZ2lCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MU1FFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NJQ0lFUlEwQUlBQWdBU0FDSUFGcklBUVJnWUNBZ0FBQUlnTkJmMGNOQUNBQVFaU1VnSUFBTmdJUVFSZ2hBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUpNSWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWxRaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ1dDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RGQVFGL0FrQUNRQ0FBTHdFd1FSUnhRUlJIRFFCQkFTRURJQUF0QUNoQkFVWU5BU0FBTHdFeVFlVUFSaUVEREFFTElBQXRBQ2xCQlVZaEF3c2dBQ0FET2dBdVFRQUwvZ0VCQTM5QkFTRURBa0FnQUM4Qk1DSUVRUWh4RFFBZ0FDa0RJRUlBVWlFREN3SkFBa0FnQUMwQUxrVU5BRUVCSVFVZ0FDMEFLVUVGUmcwQlFRRWhCU0FFUWNBQWNVVWdBM0ZCQVVjTkFRdEJBQ0VGSUFSQndBQnhEUUJCQWlFRklBUkIvLzhEY1NJRFFRaHhEUUFDUUNBRFFZQUVjVVVOQUFKQUlBQXRBQ2hCQVVjTkFDQUFMUUF0UVFweERRQkJCUThMUVFRUEN3SkFJQU5CSUhFTkFBSkFJQUF0QUNoQkFVWU5BQ0FBTHdFeVFmLy9BM0VpQUVHY2YycEI1QUJKRFFBZ0FFSE1BVVlOQUNBQVFiQUNSZzBBUVFRaEJTQUVRU2h4UlEwQ0lBTkJpQVJ4UVlBRVJnMENDMEVBRHd0QkFFRURJQUFwQXlCUUd5RUZDeUFGQzJJQkFuOUJBQ0VCQWtBZ0FDMEFLRUVCUmcwQUlBQXZBVEpCLy84RGNTSUNRWngvYWtIa0FFa05BQ0FDUWN3QlJnMEFJQUpCc0FKR0RRQWdBQzhCTUNJQVFjQUFjUTBBUVFFaEFTQUFRWWdFY1VHQUJFWU5BQ0FBUVNoeFJTRUJDeUFCQzZjQkFRTi9Ba0FDUUFKQUlBQXRBQ3BGRFFBZ0FDMEFLMFVOQUVFQUlRTWdBQzhCTUNJRVFRSnhSUTBCREFJTFFRQWhBeUFBTHdFd0lnUkJBWEZGRFFFTFFRRWhBeUFBTFFBb1FRRkdEUUFnQUM4Qk1rSC8vd054SWdWQm5IOXFRZVFBU1EwQUlBVkJ6QUZHRFFBZ0JVR3dBa1lOQUNBRVFjQUFjUTBBUVFBaEF5QUVRWWdFY1VHQUJFWU5BQ0FFUVNoeFFRQkhJUU1MSUFCQkFEc0JNQ0FBUVFBNkFDOGdBd3VaQVFFQ2Z3SkFBa0FDUUNBQUxRQXFSUTBBSUFBdEFDdEZEUUJCQUNFQklBQXZBVEFpQWtFQ2NVVU5BUXdDQzBFQUlRRWdBQzhCTUNJQ1FRRnhSUTBCQzBFQklRRWdBQzBBS0VFQlJnMEFJQUF2QVRKQi8vOERjU0lBUVp4L2FrSGtBRWtOQUNBQVFjd0JSZzBBSUFCQnNBSkdEUUFnQWtIQUFIRU5BRUVBSVFFZ0FrR0lCSEZCZ0FSR0RRQWdBa0VvY1VFQVJ5RUJDeUFCQzFrQUlBQkJHR3BDQURjREFDQUFRZ0EzQXdBZ0FFRTRha0lBTndNQUlBQkJNR3BDQURjREFDQUFRU2hxUWdBM0F3QWdBRUVnYWtJQU53TUFJQUJCRUdwQ0FEY0RBQ0FBUVFocVFnQTNBd0FnQUVIZEFUWUNIRUVBQzNzQkFYOENRQ0FBS0FJTUlnTU5BQUpBSUFBb0FnUkZEUUFnQUNBQk5nSUVDd0pBSUFBZ0FTQUNFTVNBZ0lBQUlnTU5BQ0FBS0FJTUR3c2dBQ0FETmdJY1FRQWhBeUFBS0FJRUlnRkZEUUFnQUNBQklBSWdBQ2dDQ0JHQmdJQ0FBQUFpQVVVTkFDQUFJQUkyQWhRZ0FDQUJOZ0lNSUFFaEF3c2dBd3ZrOHdFRERuOERmZ1IvSTRDQWdJQUFRUkJySWdNa2dJQ0FnQUFnQVNFRUlBRWhCU0FCSVFZZ0FTRUhJQUVoQ0NBQklRa2dBU0VLSUFFaEN5QUJJUXdnQVNFTklBRWhEaUFCSVE4Q1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FDZ0NIQ0lRUVg5cUR0MEIyZ0VCMlFFQ0F3UUZCZ2NJQ1FvTERBME8yQUVQRU5jQkVSTFdBUk1VRlJZWEdCa2FHK0FCM3dFY0hSN1ZBUjhnSVNJakpDWFVBU1luS0NrcUt5elRBZElCTFM3UkFkQUJMekF4TWpNME5UWTNPRGs2T3p3OVBqOUFRVUpEUkVWRzJ3RkhTRWxLendIT0FVdk5BVXpNQVUxT1QxQlJVbE5VVlZaWFdGbGFXMXhkWGw5Z1lXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwN2ZIMStmNEFCZ1FHQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBWnNCbkFHZEFaNEJud0dnQWFFQm9nR2pBYVFCcFFHbUFhY0JxQUdwQWFvQnF3R3NBYTBCcmdHdkFiQUJzUUd5QWJNQnRBRzFBYllCdHdITEFjb0J1QUhKQWJrQnlBRzZBYnNCdkFHOUFiNEJ2d0hBQWNFQndnSERBY1FCeFFIR0FRRGNBUXRCQUNFUURNWUJDMEVPSVJBTXhRRUxRUTBoRUF6RUFRdEJEeUVRRE1NQkMwRVFJUkFNd2dFTFFSTWhFQXpCQVF0QkZDRVFETUFCQzBFVklSQU12d0VMUVJZaEVBeStBUXRCRnlFUURMMEJDMEVZSVJBTXZBRUxRUmtoRUF5N0FRdEJHaUVRRExvQkMwRWJJUkFNdVFFTFFSd2hFQXk0QVF0QkNDRVFETGNCQzBFZElSQU10Z0VMUVNBaEVBeTFBUXRCSHlFUURMUUJDMEVISVJBTXN3RUxRU0VoRUF5eUFRdEJJaUVRRExFQkMwRWVJUkFNc0FFTFFTTWhFQXl2QVF0QkVpRVFESzRCQzBFUklSQU1yUUVMUVNRaEVBeXNBUXRCSlNFUURLc0JDMEVtSVJBTXFnRUxRU2NoRUF5cEFRdEJ3d0VoRUF5b0FRdEJLU0VRREtjQkMwRXJJUkFNcGdFTFFTd2hFQXlsQVF0QkxTRVFES1FCQzBFdUlSQU1vd0VMUVM4aEVBeWlBUXRCeEFFaEVBeWhBUXRCTUNFUURLQUJDMEUwSVJBTW53RUxRUXdoRUF5ZUFRdEJNU0VRREowQkMwRXlJUkFNbkFFTFFUTWhFQXliQVF0Qk9TRVFESm9CQzBFMUlSQU1tUUVMUWNVQklSQU1tQUVMUVFzaEVBeVhBUXRCT2lFUURKWUJDMEUySVJBTWxRRUxRUW9oRUF5VUFRdEJOeUVRREpNQkMwRTRJUkFNa2dFTFFUd2hFQXlSQVF0Qk95RVFESkFCQzBFOUlSQU1qd0VMUVFraEVBeU9BUXRCS0NFUURJMEJDMEUrSVJBTWpBRUxRVDhoRUF5TEFRdEJ3QUFoRUF5S0FRdEJ3UUFoRUF5SkFRdEJ3Z0FoRUF5SUFRdEJ3d0FoRUF5SEFRdEJ4QUFoRUF5R0FRdEJ4UUFoRUF5RkFRdEJ4Z0FoRUF5RUFRdEJLaUVRRElNQkMwSEhBQ0VRRElJQkMwSElBQ0VRRElFQkMwSEpBQ0VRRElBQkMwSEtBQ0VRREg4TFFjc0FJUkFNZmd0QnpRQWhFQXg5QzBITUFDRVFESHdMUWM0QUlSQU1ld3RCendBaEVBeDZDMEhRQUNFUURIa0xRZEVBSVJBTWVBdEIwZ0FoRUF4M0MwSFRBQ0VRREhZTFFkUUFJUkFNZFF0QjFnQWhFQXgwQzBIVkFDRVFESE1MUVFZaEVBeHlDMEhYQUNFUURIRUxRUVVoRUF4d0MwSFlBQ0VRREc4TFFRUWhFQXh1QzBIWkFDRVFERzBMUWRvQUlSQU1iQXRCMndBaEVBeHJDMEhjQUNFUURHb0xRUU1oRUF4cEMwSGRBQ0VRREdnTFFkNEFJUkFNWnd0QjN3QWhFQXhtQzBIaEFDRVFER1VMUWVBQUlSQU1aQXRCNGdBaEVBeGpDMEhqQUNFUURHSUxRUUloRUF4aEMwSGtBQ0VRREdBTFFlVUFJUkFNWHd0QjVnQWhFQXhlQzBIbkFDRVFERjBMUWVnQUlSQU1YQXRCNlFBaEVBeGJDMEhxQUNFUURGb0xRZXNBSVJBTVdRdEI3QUFoRUF4WUMwSHRBQ0VRREZjTFFlNEFJUkFNVmd0Qjd3QWhFQXhWQzBId0FDRVFERlFMUWZFQUlSQU1Vd3RCOGdBaEVBeFNDMEh6QUNFUURGRUxRZlFBSVJBTVVBdEI5UUFoRUF4UEMwSDJBQ0VRREU0TFFmY0FJUkFNVFF0QitBQWhFQXhNQzBINUFDRVFERXNMUWZvQUlSQU1TZ3RCK3dBaEVBeEpDMEg4QUNFUURFZ0xRZjBBSVJBTVJ3dEIvZ0FoRUF4R0MwSC9BQ0VRREVVTFFZQUJJUkFNUkF0QmdRRWhFQXhEQzBHQ0FTRVFERUlMUVlNQklSQU1RUXRCaEFFaEVBeEFDMEdGQVNFUUREOExRWVlCSVJBTVBndEJod0VoRUF3OUMwR0lBU0VRRER3TFFZa0JJUkFNT3d0QmlnRWhFQXc2QzBHTEFTRVFERGtMUVl3QklSQU1PQXRCalFFaEVBdzNDMEdPQVNFUUREWUxRWThCSVJBTU5RdEJrQUVoRUF3MEMwR1JBU0VRRERNTFFaSUJJUkFNTWd0Qmt3RWhFQXd4QzBHVUFTRVFEREFMUVpVQklSQU1Md3RCbGdFaEVBd3VDMEdYQVNFUURDMExRWmdCSVJBTUxBdEJtUUVoRUF3ckMwR2FBU0VRRENvTFFac0JJUkFNS1F0Qm5BRWhFQXdvQzBHZEFTRVFEQ2NMUVo0QklSQU1KZ3RCbndFaEVBd2xDMEdnQVNFUURDUUxRYUVCSVJBTUl3dEJvZ0VoRUF3aUMwR2pBU0VRRENFTFFhUUJJUkFNSUF0QnBRRWhFQXdmQzBHbUFTRVFEQjRMUWFjQklSQU1IUXRCcUFFaEVBd2NDMEdwQVNFUURCc0xRYW9CSVJBTUdndEJxd0VoRUF3WkMwR3NBU0VRREJnTFFhMEJJUkFNRnd0QnJnRWhFQXdXQzBFQklSQU1GUXRCcndFaEVBd1VDMEd3QVNFUURCTUxRYkVCSVJBTUVndEJzd0VoRUF3UkMwR3lBU0VRREJBTFFiUUJJUkFNRHd0QnRRRWhFQXdPQzBHMkFTRVFEQTBMUWJjQklSQU1EQXRCdUFFaEVBd0xDMEc1QVNFUURBb0xRYm9CSVJBTUNRdEJ1d0VoRUF3SUMwSEdBU0VRREFjTFFid0JJUkFNQmd0QnZRRWhFQXdGQzBHK0FTRVFEQVFMUWI4QklSQU1Bd3RCd0FFaEVBd0NDMEhDQVNFUURBRUxRY0VCSVJBTEEwQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FRRHNjQkFBRUNBd1FGQmdjSUNRb0xEQTBPRHhBUkVoTVVGUllYR0JrYUd4d2VIeUFoSXlVb1AwQkJSRVZHUjBoSlNrdE1UVTlRVVZKVDNnTlhXVnRjWFdCaVpXWm5hR2xxYTJ4dGIzQnhjbk4wZFhaM2VIbDZlM3g5Zm9BQmdnR0ZBWVlCaHdHSkFZc0JqQUdOQVk0Qmp3R1FBWkVCbEFHVkFaWUJsd0dZQVprQm1nR2JBWndCblFHZUFaOEJvQUdoQWFJQm93R2tBYVVCcGdHbkFhZ0JxUUdxQWFzQnJBR3RBYTRCcndHd0FiRUJzZ0d6QWJRQnRRRzJBYmNCdUFHNUFib0J1d0c4QWIwQnZnRy9BY0FCd1FIQ0FjTUJ4QUhGQWNZQnh3SElBY2tCeWdITEFjd0J6UUhPQWM4QjBBSFJBZElCMHdIVUFkVUIxZ0hYQWRnQjJRSGFBZHNCM0FIZEFkNEI0QUhoQWVJQjR3SGtBZVVCNWdIbkFlZ0I2UUhxQWVzQjdBSHRBZTRCN3dId0FmRUI4Z0h6QVprQ3BBS3dBdjRDL2dJTElBRWlCQ0FDUnczekFVSGRBU0VRRFA4REN5QUJJaEFnQWtjTjNRRkJ3d0VoRUF6K0F3c2dBU0lCSUFKSERaQUJRZmNBSVJBTS9RTUxJQUVpQVNBQ1J3MkdBVUh2QUNFUURQd0RDeUFCSWdFZ0FrY05mMEhxQUNFUURQc0RDeUFCSWdFZ0FrY05lMEhvQUNFUURQb0RDeUFCSWdFZ0FrY05lRUhtQUNFUURQa0RDeUFCSWdFZ0FrY05Ha0VZSVJBTStBTUxJQUVpQVNBQ1J3MFVRUkloRUF6M0F3c2dBU0lCSUFKSERWbEJ4UUFoRUF6MkF3c2dBU0lCSUFKSERVcEJQeUVRRFBVREN5QUJJZ0VnQWtjTlNFRThJUkFNOUFNTElBRWlBU0FDUncxQlFURWhFQXp6QXdzZ0FDMEFMa0VCUmczckF3eUhBZ3NnQUNBQklnRWdBaERBZ0lDQUFFRUJSdzNtQVNBQVFnQTNBeUFNNXdFTElBQWdBU0lCSUFJUXRJQ0FnQUFpRUEzbkFTQUJJUUVNOVFJTEFrQWdBU0lCSUFKSERRQkJCaUVRRFBBREN5QUFJQUZCQVdvaUFTQUNFTHVBZ0lBQUloQU42QUVnQVNFQkRERUxJQUJDQURjRElFRVNJUkFNMVFNTElBRWlFQ0FDUncwclFSMGhFQXp0QXdzQ1FDQUJJZ0VnQWtZTkFDQUJRUUZxSVFGQkVDRVFETlFEQzBFSElSQU03QU1MSUFCQ0FDQUFLUU1nSWhFZ0FpQUJJaEJyclNJU2ZTSVRJQk1nRVZZYk53TWdJQkVnRWxZaUZFVU41UUZCQ0NFUURPc0RDd0pBSUFFaUFTQUNSZzBBSUFCQmlZQ0FnQUEyQWdnZ0FDQUJOZ0lFSUFFaEFVRVVJUkFNMGdNTFFRa2hFQXpxQXdzZ0FTRUJJQUFwQXlCUURlUUJJQUVoQVF6eUFnc0NRQ0FCSWdFZ0FrY05BRUVMSVJBTTZRTUxJQUFnQVVFQmFpSUJJQUlRdG9DQWdBQWlFQTNsQVNBQklRRU04Z0lMSUFBZ0FTSUJJQUlRdUlDQWdBQWlFQTNsQVNBQklRRU04Z0lMSUFBZ0FTSUJJQUlRdUlDQWdBQWlFQTNtQVNBQklRRU1EUXNnQUNBQklnRWdBaEM2Z0lDQUFDSVFEZWNCSUFFaEFRendBZ3NDUUNBQklnRWdBa2NOQUVFUElSQU01UU1MSUFFdEFBQWlFRUU3UmcwSUlCQkJEVWNONkFFZ0FVRUJhaUVCRE84Q0N5QUFJQUVpQVNBQ0VMcUFnSUFBSWhBTjZBRWdBU0VCRFBJQ0N3TkFBa0FnQVMwQUFFSHd0WUNBQUdvdEFBQWlFRUVCUmcwQUlCQkJBa2NONndFZ0FDZ0NCQ0VRSUFCQkFEWUNCQ0FBSUJBZ0FVRUJhaUlCRUxtQWdJQUFJaEFONmdFZ0FTRUJEUFFDQ3lBQlFRRnFJZ0VnQWtjTkFBdEJFaUVRRE9JREN5QUFJQUVpQVNBQ0VMcUFnSUFBSWhBTjZRRWdBU0VCREFvTElBRWlBU0FDUncwR1FSc2hFQXpnQXdzQ1FDQUJJZ0VnQWtjTkFFRVdJUkFNNEFNTElBQkJpb0NBZ0FBMkFnZ2dBQ0FCTmdJRUlBQWdBU0FDRUxpQWdJQUFJaEFONmdFZ0FTRUJRU0FoRUF6R0F3c0NRQ0FCSWdFZ0FrWU5BQU5BQWtBZ0FTMEFBRUh3dDRDQUFHb3RBQUFpRUVFQ1JnMEFBa0FnRUVGL2FnNEU1UUhzQVFEckFld0JDeUFCUVFGcUlRRkJDQ0VRRE1nREN5QUJRUUZxSWdFZ0FrY05BQXRCRlNFUUROOERDMEVWSVJBTTNnTUxBMEFDUUNBQkxRQUFRZkM1Z0lBQWFpMEFBQ0lRUVFKR0RRQWdFRUYvYWc0RTNnSHNBZUFCNndIc0FRc2dBVUVCYWlJQklBSkhEUUFMUVJnaEVBemRBd3NDUUNBQklnRWdBa1lOQUNBQVFZdUFnSUFBTmdJSUlBQWdBVFlDQkNBQklRRkJCeUVRRE1RREMwRVpJUkFNM0FNTElBRkJBV29oQVF3Q0N3SkFJQUVpRkNBQ1J3MEFRUm9oRUF6YkF3c2dGQ0VCQWtBZ0ZDMEFBRUZ6YWc0VTNRTHVBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnTHVBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnSUE3Z0lMUVFBaEVDQUFRUUEyQWh3Z0FFR3ZpNENBQURZQ0VDQUFRUUkyQWd3Z0FDQVVRUUZxTmdJVUROb0RDd0pBSUFFdEFBQWlFRUU3UmcwQUlCQkJEVWNONkFFZ0FVRUJhaUVCRE9VQ0N5QUJRUUZxSVFFTFFTSWhFQXkvQXdzQ1FDQUJJaEFnQWtjTkFFRWNJUkFNMkFNTFFnQWhFU0FRSVFFZ0VDMEFBRUZRYWc0MzV3SG1BUUVDQXdRRkJnY0lBQUFBQUFBQUFBa0tDd3dORGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHhBUkVoTVVBQXRCSGlFUURMMERDMElDSVJFTTVRRUxRZ01oRVF6a0FRdENCQ0VSRE9NQkMwSUZJUkVNNGdFTFFnWWhFUXpoQVF0Q0J5RVJET0FCQzBJSUlSRU0zd0VMUWdraEVRemVBUXRDQ2lFUkROMEJDMElMSVJFTTNBRUxRZ3doRVF6YkFRdENEU0VSRE5vQkMwSU9JUkVNMlFFTFFnOGhFUXpZQVF0Q0NpRVJETmNCQzBJTElSRU0xZ0VMUWd3aEVRelZBUXRDRFNFUkROUUJDMElPSVJFTTB3RUxRZzhoRVF6U0FRdENBQ0VSQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQVFMUUFBUVZCcURqZmxBZVFCQUFFQ0F3UUZCZ2ZtQWVZQjVnSG1BZVlCNWdIbUFRZ0pDZ3NNRGVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0VPRHhBUkVoUG1BUXRDQWlFUkRPUUJDMElESVJFTTR3RUxRZ1FoRVF6aUFRdENCU0VSRE9FQkMwSUdJUkVNNEFFTFFnY2hFUXpmQVF0Q0NDRVJETjRCQzBJSklSRU0zUUVMUWdvaEVRemNBUXRDQ3lFUkROc0JDMElNSVJFTTJnRUxRZzBoRVF6WkFRdENEaUVSRE5nQkMwSVBJUkVNMXdFTFFnb2hFUXpXQVF0Q0N5RVJETlVCQzBJTUlSRU0xQUVMUWcwaEVRelRBUXRDRGlFUkROSUJDMElQSVJFTTBRRUxJQUJDQUNBQUtRTWdJaEVnQWlBQkloQnJyU0lTZlNJVElCTWdFVlliTndNZ0lCRWdFbFlpRkVVTjBnRkJIeUVRRE1BREN3SkFJQUVpQVNBQ1JnMEFJQUJCaVlDQWdBQTJBZ2dnQUNBQk5nSUVJQUVoQVVFa0lSQU1wd01MUVNBaEVBeS9Bd3NnQUNBQkloQWdBaEMrZ0lDQUFFRi9hZzRGdGdFQXhRSUIwUUhTQVF0QkVTRVFES1FEQ3lBQVFRRTZBQzhnRUNFQkRMc0RDeUFCSWdFZ0FrY04wZ0ZCSkNFUURMc0RDeUFCSWcwZ0FrY05Ia0hHQUNFUURMb0RDeUFBSUFFaUFTQUNFTEtBZ0lBQUloQU4xQUVnQVNFQkRMVUJDeUFCSWhBZ0FrY05Ka0hRQUNFUURMZ0RDd0pBSUFFaUFTQUNSdzBBUVNnaEVBeTRBd3NnQUVFQU5nSUVJQUJCaklDQWdBQTJBZ2dnQUNBQklBRVFzWUNBZ0FBaUVBM1RBU0FCSVFFTTJBRUxBa0FnQVNJUUlBSkhEUUJCS1NFUURMY0RDeUFRTFFBQUlnRkJJRVlORkNBQlFRbEhEZE1CSUJCQkFXb2hBUXdWQ3dKQUlBRWlBU0FDUmcwQUlBRkJBV29oQVF3WEMwRXFJUkFNdFFNTEFrQWdBU0lRSUFKSERRQkJLeUVRRExVREN3SkFJQkF0QUFBaUFVRUpSZzBBSUFGQklFY04xUUVMSUFBdEFDeEJDRVlOMHdFZ0VDRUJESkVEQ3dKQUlBRWlBU0FDUncwQVFTd2hFQXkwQXdzZ0FTMEFBRUVLUnczVkFTQUJRUUZxSVFFTXlRSUxJQUVpRGlBQ1J3M1ZBVUV2SVJBTXNnTUxBMEFDUUNBQkxRQUFJaEJCSUVZTkFBSkFJQkJCZG1vT0JBRGNBZHdCQU5vQkN5QUJJUUVNNEFFTElBRkJBV29pQVNBQ1J3MEFDMEV4SVJBTXNRTUxRVEloRUNBQkloUWdBa1lOc0FNZ0FpQVVheUFBS0FJQUlnRnFJUlVnRkNBQmEwRURhaUVXQWtBRFFDQVVMUUFBSWhkQklISWdGeUFYUWI5L2FrSC9BWEZCR2trYlFmOEJjU0FCUWZDN2dJQUFhaTBBQUVjTkFRSkFJQUZCQTBjTkFFRUdJUUVNbGdNTElBRkJBV29oQVNBVVFRRnFJaFFnQWtjTkFBc2dBQ0FWTmdJQURMRURDeUFBUVFBMkFnQWdGQ0VCRE5rQkMwRXpJUkFnQVNJVUlBSkdEYThESUFJZ0ZHc2dBQ2dDQUNJQmFpRVZJQlFnQVd0QkNHb2hGZ0pBQTBBZ0ZDMEFBQ0lYUVNCeUlCY2dGMEcvZjJwQi93RnhRUnBKRzBIL0FYRWdBVUgwdTRDQUFHb3RBQUJIRFFFQ1FDQUJRUWhIRFFCQkJTRUJESlVEQ3lBQlFRRnFJUUVnRkVFQmFpSVVJQUpIRFFBTElBQWdGVFlDQUF5d0F3c2dBRUVBTmdJQUlCUWhBUXpZQVF0Qk5DRVFJQUVpRkNBQ1JnMnVBeUFDSUJScklBQW9BZ0FpQVdvaEZTQVVJQUZyUVFWcUlSWUNRQU5BSUJRdEFBQWlGMEVnY2lBWElCZEJ2MzlxUWY4QmNVRWFTUnRCL3dGeElBRkIwTUtBZ0FCcUxRQUFSdzBCQWtBZ0FVRUZSdzBBUVFjaEFReVVBd3NnQVVFQmFpRUJJQlJCQVdvaUZDQUNSdzBBQ3lBQUlCVTJBZ0FNcndNTElBQkJBRFlDQUNBVUlRRU0xd0VMQWtBZ0FTSUJJQUpHRFFBRFFBSkFJQUV0QUFCQmdMNkFnQUJxTFFBQUloQkJBVVlOQUNBUVFRSkdEUW9nQVNFQkROMEJDeUFCUVFGcUlnRWdBa2NOQUF0Qk1DRVFESzREQzBFd0lSQU1yUU1MQWtBZ0FTSUJJQUpHRFFBRFFBSkFJQUV0QUFBaUVFRWdSZzBBSUJCQmRtb09CTmtCMmdIYUFka0IyZ0VMSUFGQkFXb2lBU0FDUncwQUMwRTRJUkFNclFNTFFUZ2hFQXlzQXdzRFFBSkFJQUV0QUFBaUVFRWdSZzBBSUJCQkNVY05Bd3NnQVVFQmFpSUJJQUpIRFFBTFFUd2hFQXlyQXdzRFFBSkFJQUV0QUFBaUVFRWdSZzBBQWtBQ1FDQVFRWFpxRGdUYUFRRUIyZ0VBQ3lBUVFTeEdEZHNCQ3lBQklRRU1CQXNnQVVFQmFpSUJJQUpIRFFBTFFUOGhFQXlxQXdzZ0FTRUJETnNCQzBIQUFDRVFJQUVpRkNBQ1JnMm9BeUFDSUJScklBQW9BZ0FpQVdvaEZpQVVJQUZyUVFacUlSY0NRQU5BSUJRdEFBQkJJSElnQVVHQXdJQ0FBR290QUFCSERRRWdBVUVHUmcyT0F5QUJRUUZxSVFFZ0ZFRUJhaUlVSUFKSERRQUxJQUFnRmpZQ0FBeXBBd3NnQUVFQU5nSUFJQlFoQVF0Qk5pRVFESTREQ3dKQUlBRWlEeUFDUncwQVFjRUFJUkFNcHdNTElBQkJqSUNBZ0FBMkFnZ2dBQ0FQTmdJRUlBOGhBU0FBTFFBc1FYOXFEZ1ROQWRVQjF3SFpBWWNEQ3lBQlFRRnFJUUVNekFFTEFrQWdBU0lCSUFKR0RRQURRQUpBSUFFdEFBQWlFRUVnY2lBUUlCQkJ2MzlxUWY4QmNVRWFTUnRCL3dGeEloQkJDVVlOQUNBUVFTQkdEUUFDUUFKQUFrQUNRQ0FRUVoxL2FnNFRBQU1EQXdNREF3TUJBd01EQXdNREF3TURBZ01MSUFGQkFXb2hBVUV4SVJBTWtRTUxJQUZCQVdvaEFVRXlJUkFNa0FNTElBRkJBV29oQVVFeklSQU1qd01MSUFFaEFRelFBUXNnQVVFQmFpSUJJQUpIRFFBTFFUVWhFQXlsQXd0Qk5TRVFES1FEQ3dKQUlBRWlBU0FDUmcwQUEwQUNRQ0FCTFFBQVFZQzhnSUFBYWkwQUFFRUJSZzBBSUFFaEFRelRBUXNnQVVFQmFpSUJJQUpIRFFBTFFUMGhFQXlrQXd0QlBTRVFES01EQ3lBQUlBRWlBU0FDRUxDQWdJQUFJaEFOMWdFZ0FTRUJEQUVMSUJCQkFXb2hBUXRCUENFUURJY0RDd0pBSUFFaUFTQUNSdzBBUWNJQUlSQU1vQU1MQWtBRFFBSkFJQUV0QUFCQmQyb09HQUFDL2dMK0FvUUQvZ0wrQXY0Qy9nTCtBdjRDL2dMK0F2NEMvZ0wrQXY0Qy9nTCtBdjRDL2dMK0F2NENBUDRDQ3lBQlFRRnFJZ0VnQWtjTkFBdEJ3Z0FoRUF5Z0F3c2dBVUVCYWlFQklBQXRBQzFCQVhGRkRiMEJJQUVoQVF0QkxDRVFESVVEQ3lBQklnRWdBa2NOMHdGQnhBQWhFQXlkQXdzRFFBSkFJQUV0QUFCQmtNQ0FnQUJxTFFBQVFRRkdEUUFnQVNFQkRMY0NDeUFCUVFGcUlnRWdBa2NOQUF0QnhRQWhFQXljQXdzZ0RTMEFBQ0lRUVNCR0RiTUJJQkJCT2tjTmdRTWdBQ2dDQkNFQklBQkJBRFlDQkNBQUlBRWdEUkN2Z0lDQUFDSUJEZEFCSUExQkFXb2hBUXl6QWd0Qnh3QWhFQ0FCSWcwZ0FrWU5tZ01nQWlBTmF5QUFLQUlBSWdGcUlSWWdEU0FCYTBFRmFpRVhBMEFnRFMwQUFDSVVRU0J5SUJRZ0ZFRy9mMnBCL3dGeFFScEpHMEgvQVhFZ0FVR1F3b0NBQUdvdEFBQkhEWUFESUFGQkJVWU45QUlnQVVFQmFpRUJJQTFCQVdvaURTQUNSdzBBQ3lBQUlCWTJBZ0FNbWdNTFFjZ0FJUkFnQVNJTklBSkdEWmtESUFJZ0RXc2dBQ2dDQUNJQmFpRVdJQTBnQVd0QkNXb2hGd05BSUEwdEFBQWlGRUVnY2lBVUlCUkJ2MzlxUWY4QmNVRWFTUnRCL3dGeElBRkJsc0tBZ0FCcUxRQUFSdzMvQWdKQUlBRkJDVWNOQUVFQ0lRRU05UUlMSUFGQkFXb2hBU0FOUVFGcUlnMGdBa2NOQUFzZ0FDQVdOZ0lBREprREN3SkFJQUVpRFNBQ1J3MEFRY2tBSVJBTW1RTUxBa0FDUUNBTkxRQUFJZ0ZCSUhJZ0FTQUJRYjkvYWtIL0FYRkJHa2tiUWY4QmNVR1NmMm9PQndDQUE0QURnQU9BQTRBREFZQURDeUFOUVFGcUlRRkJQaUVRRElBREN5QU5RUUZxSVFGQlB5RVFEUDhDQzBIS0FDRVFJQUVpRFNBQ1JnMlhBeUFDSUExcklBQW9BZ0FpQVdvaEZpQU5JQUZyUVFGcUlSY0RRQ0FOTFFBQUloUkJJSElnRkNBVVFiOS9ha0gvQVhGQkdra2JRZjhCY1NBQlFhRENnSUFBYWkwQUFFY04vUUlnQVVFQlJnM3dBaUFCUVFGcUlRRWdEVUVCYWlJTklBSkhEUUFMSUFBZ0ZqWUNBQXlYQXd0Qnl3QWhFQ0FCSWcwZ0FrWU5sZ01nQWlBTmF5QUFLQUlBSWdGcUlSWWdEU0FCYTBFT2FpRVhBMEFnRFMwQUFDSVVRU0J5SUJRZ0ZFRy9mMnBCL3dGeFFScEpHMEgvQVhFZ0FVR2l3b0NBQUdvdEFBQkhEZndDSUFGQkRrWU44QUlnQVVFQmFpRUJJQTFCQVdvaURTQUNSdzBBQ3lBQUlCWTJBZ0FNbGdNTFFjd0FJUkFnQVNJTklBSkdEWlVESUFJZ0RXc2dBQ2dDQUNJQmFpRVdJQTBnQVd0QkQyb2hGd05BSUEwdEFBQWlGRUVnY2lBVUlCUkJ2MzlxUWY4QmNVRWFTUnRCL3dGeElBRkJ3TUtBZ0FCcUxRQUFSdzM3QWdKQUlBRkJEMGNOQUVFRElRRU04UUlMSUFGQkFXb2hBU0FOUVFGcUlnMGdBa2NOQUFzZ0FDQVdOZ0lBREpVREMwSE5BQ0VRSUFFaURTQUNSZzJVQXlBQ0lBMXJJQUFvQWdBaUFXb2hGaUFOSUFGclFRVnFJUmNEUUNBTkxRQUFJaFJCSUhJZ0ZDQVVRYjkvYWtIL0FYRkJHa2tiUWY4QmNTQUJRZERDZ0lBQWFpMEFBRWNOK2dJQ1FDQUJRUVZIRFFCQkJDRUJEUEFDQ3lBQlFRRnFJUUVnRFVFQmFpSU5JQUpIRFFBTElBQWdGallDQUF5VUF3c0NRQ0FCSWcwZ0FrY05BRUhPQUNFUURKUURDd0pBQWtBQ1FBSkFJQTB0QUFBaUFVRWdjaUFCSUFGQnYzOXFRZjhCY1VFYVNSdEIvd0Z4UVoxL2FnNFRBUDBDL1FMOUF2MEMvUUw5QXYwQy9RTDlBdjBDL1FMOUFnSDlBdjBDL1FJQ0EvMENDeUFOUVFGcUlRRkJ3UUFoRUF6OUFnc2dEVUVCYWlFQlFjSUFJUkFNL0FJTElBMUJBV29oQVVIREFDRVFEUHNDQ3lBTlFRRnFJUUZCeEFBaEVBejZBZ3NDUUNBQklnRWdBa1lOQUNBQVFZMkFnSUFBTmdJSUlBQWdBVFlDQkNBQklRRkJ4UUFoRUF6NkFndEJ6d0FoRUF5U0F3c2dFQ0VCQWtBQ1FDQVFMUUFBUVhacURnUUJxQUtvQWdDb0Fnc2dFRUVCYWlFQkMwRW5JUkFNK0FJTEFrQWdBU0lCSUFKSERRQkIwUUFoRUF5UkF3c0NRQ0FCTFFBQVFTQkdEUUFnQVNFQkRJMEJDeUFCUVFGcUlRRWdBQzBBTFVFQmNVVU54d0VnQVNFQkRJd0JDeUFCSWhjZ0FrY055QUZCMGdBaEVBeVBBd3RCMHdBaEVDQUJJaFFnQWtZTmpnTWdBaUFVYXlBQUtBSUFJZ0ZxSVJZZ0ZDQUJhMEVCYWlFWEEwQWdGQzBBQUNBQlFkYkNnSUFBYWkwQUFFY056QUVnQVVFQlJnM0hBU0FCUVFGcUlRRWdGRUVCYWlJVUlBSkhEUUFMSUFBZ0ZqWUNBQXlPQXdzQ1FDQUJJZ0VnQWtjTkFFSFZBQ0VRREk0REN5QUJMUUFBUVFwSERjd0JJQUZCQVdvaEFRekhBUXNDUUNBQklnRWdBa2NOQUVIV0FDRVFESTBEQ3dKQUFrQWdBUzBBQUVGMmFnNEVBTTBCelFFQnpRRUxJQUZCQVdvaEFRekhBUXNnQVVFQmFpRUJRY29BSVJBTTh3SUxJQUFnQVNJQklBSVFyb0NBZ0FBaUVBM0xBU0FCSVFGQnpRQWhFQXp5QWdzZ0FDMEFLVUVpUmcyRkF3eW1BZ3NDUUNBQklnRWdBa2NOQUVIYkFDRVFESW9EQzBFQUlSUkJBU0VYUVFFaEZrRUFJUkFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVMwQUFFRlFhZzRLMUFIVEFRQUJBZ01FQlFZSTFRRUxRUUloRUF3R0MwRURJUkFNQlF0QkJDRVFEQVFMUVFVaEVBd0RDMEVHSVJBTUFndEJCeUVRREFFTFFRZ2hFQXRCQUNFWFFRQWhGa0VBSVJRTXpBRUxRUWtoRUVFQklSUkJBQ0VYUVFBaEZnekxBUXNDUUNBQklnRWdBa2NOQUVIZEFDRVFESWtEQ3lBQkxRQUFRUzVIRGN3QklBRkJBV29oQVF5bUFnc2dBU0lCSUFKSERjd0JRZDhBSVJBTWh3TUxBa0FnQVNJQklBSkdEUUFnQUVHT2dJQ0FBRFlDQ0NBQUlBRTJBZ1FnQVNFQlFkQUFJUkFNN2dJTFFlQUFJUkFNaGdNTFFlRUFJUkFnQVNJQklBSkdEWVVESUFJZ0FXc2dBQ2dDQUNJVWFpRVdJQUVnRkd0QkEyb2hGd05BSUFFdEFBQWdGRUhpd29DQUFHb3RBQUJIRGMwQklCUkJBMFlOekFFZ0ZFRUJhaUVVSUFGQkFXb2lBU0FDUncwQUN5QUFJQlkyQWdBTWhRTUxRZUlBSVJBZ0FTSUJJQUpHRFlRRElBSWdBV3NnQUNnQ0FDSVVhaUVXSUFFZ0ZHdEJBbW9oRndOQUlBRXRBQUFnRkVIbXdvQ0FBR290QUFCSERjd0JJQlJCQWtZTnpnRWdGRUVCYWlFVUlBRkJBV29pQVNBQ1J3MEFDeUFBSUJZMkFnQU1oQU1MUWVNQUlSQWdBU0lCSUFKR0RZTURJQUlnQVdzZ0FDZ0NBQ0lVYWlFV0lBRWdGR3RCQTJvaEZ3TkFJQUV0QUFBZ0ZFSHB3b0NBQUdvdEFBQkhEY3NCSUJSQkEwWU56Z0VnRkVFQmFpRVVJQUZCQVdvaUFTQUNSdzBBQ3lBQUlCWTJBZ0FNZ3dNTEFrQWdBU0lCSUFKSERRQkI1UUFoRUF5REF3c2dBQ0FCUVFGcUlnRWdBaENvZ0lDQUFDSVFEYzBCSUFFaEFVSFdBQ0VRRE9rQ0N3SkFJQUVpQVNBQ1JnMEFBMEFDUUNBQkxRQUFJaEJCSUVZTkFBSkFBa0FDUUNBUVFiaC9hZzRMQUFIUEFjOEJ6d0hQQWM4Qnp3SFBBYzhCQXM4QkN5QUJRUUZxSVFGQjBnQWhFQXp0QWdzZ0FVRUJhaUVCUWRNQUlSQU03QUlMSUFGQkFXb2hBVUhVQUNFUURPc0NDeUFCUVFGcUlnRWdBa2NOQUF0QjVBQWhFQXlDQXd0QjVBQWhFQXlCQXdzRFFBSkFJQUV0QUFCQjhNS0FnQUJxTFFBQUloQkJBVVlOQUNBUVFYNXFEZ1BQQWRBQjBRSFNBUXNnQVVFQmFpSUJJQUpIRFFBTFFlWUFJUkFNZ0FNTEFrQWdBU0lCSUFKR0RRQWdBVUVCYWlFQkRBTUxRZWNBSVJBTS93SUxBMEFDUUNBQkxRQUFRZkRFZ0lBQWFpMEFBQ0lRUVFGR0RRQUNRQ0FRUVg1cURnVFNBZE1CMUFFQTFRRUxJQUVoQVVIWEFDRVFET2NDQ3lBQlFRRnFJZ0VnQWtjTkFBdEI2QUFoRUF6K0Fnc0NRQ0FCSWdFZ0FrY05BRUhwQUNFUURQNENDd0pBSUFFdEFBQWlFRUYyYWc0YXVnSFZBZFVCdkFIVkFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIVkFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIS0FkVUIxUUVBMHdFTElBRkJBV29oQVF0QkJpRVFET01DQ3dOQUFrQWdBUzBBQUVId3hvQ0FBR290QUFCQkFVWU5BQ0FCSVFFTW5nSUxJQUZCQVdvaUFTQUNSdzBBQzBIcUFDRVFEUHNDQ3dKQUlBRWlBU0FDUmcwQUlBRkJBV29oQVF3REMwSHJBQ0VRRFBvQ0N3SkFJQUVpQVNBQ1J3MEFRZXdBSVJBTStnSUxJQUZCQVdvaEFRd0JDd0pBSUFFaUFTQUNSdzBBUWUwQUlSQU0rUUlMSUFGQkFXb2hBUXRCQkNFUURONENDd0pBSUFFaUZDQUNSdzBBUWU0QUlSQU05d0lMSUJRaEFRSkFBa0FDUUNBVUxRQUFRZkRJZ0lBQWFpMEFBRUYvYWc0SDFBSFZBZFlCQUp3Q0FRTFhBUXNnRkVFQmFpRUJEQW9MSUJSQkFXb2hBUXpOQVF0QkFDRVFJQUJCQURZQ0hDQUFRWnVTZ0lBQU5nSVFJQUJCQnpZQ0RDQUFJQlJCQVdvMkFoUU05Z0lMQWtBRFFBSkFJQUV0QUFCQjhNaUFnQUJxTFFBQUloQkJCRVlOQUFKQUFrQWdFRUYvYWc0SDBnSFRBZFFCMlFFQUJBSFpBUXNnQVNFQlFkb0FJUkFNNEFJTElBRkJBV29oQVVIY0FDRVFETjhDQ3lBQlFRRnFJZ0VnQWtjTkFBdEI3d0FoRUF6MkFnc2dBVUVCYWlFQkRNc0JDd0pBSUFFaUZDQUNSdzBBUWZBQUlSQU05UUlMSUJRdEFBQkJMMGNOMUFFZ0ZFRUJhaUVCREFZTEFrQWdBU0lVSUFKSERRQkI4UUFoRUF6MEFnc0NRQ0FVTFFBQUlnRkJMMGNOQUNBVVFRRnFJUUZCM1FBaEVBemJBZ3NnQVVGMmFpSUVRUlpMRGRNQlFRRWdCSFJCaVlDQUFuRkZEZE1CRE1vQ0N3SkFJQUVpQVNBQ1JnMEFJQUZCQVdvaEFVSGVBQ0VRRE5vQ0MwSHlBQ0VRRFBJQ0N3SkFJQUVpRkNBQ1J3MEFRZlFBSVJBTThnSUxJQlFoQVFKQUlCUXRBQUJCOE15QWdBQnFMUUFBUVg5cURnUEpBcFFDQU5RQkMwSGhBQ0VRRE5nQ0N3SkFJQUVpRkNBQ1JnMEFBMEFDUUNBVUxRQUFRZkRLZ0lBQWFpMEFBQ0lCUVFOR0RRQUNRQ0FCUVg5cURnTExBZ0RWQVFzZ0ZDRUJRZDhBSVJBTTJnSUxJQlJCQVdvaUZDQUNSdzBBQzBIekFDRVFEUEVDQzBIekFDRVFEUEFDQ3dKQUlBRWlBU0FDUmcwQUlBQkJqNENBZ0FBMkFnZ2dBQ0FCTmdJRUlBRWhBVUhnQUNFUUROY0NDMEgxQUNFUURPOENDd0pBSUFFaUFTQUNSdzBBUWZZQUlSQU03d0lMSUFCQmo0Q0FnQUEyQWdnZ0FDQUJOZ0lFSUFFaEFRdEJBeUVRRE5RQ0N3TkFJQUV0QUFCQklFY053d0lnQVVFQmFpSUJJQUpIRFFBTFFmY0FJUkFNN0FJTEFrQWdBU0lCSUFKSERRQkIrQUFoRUF6c0Fnc2dBUzBBQUVFZ1J3M09BU0FCUVFGcUlRRU03d0VMSUFBZ0FTSUJJQUlRcklDQWdBQWlFQTNPQVNBQklRRU1qZ0lMQWtBZ0FTSUVJQUpIRFFCQitnQWhFQXpxQWdzZ0JDMEFBRUhNQUVjTjBRRWdCRUVCYWlFQlFSTWhFQXpQQVFzQ1FDQUJJZ1FnQWtjTkFFSDdBQ0VRRE9rQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVZxSVJBRFFDQUVMUUFBSUFGQjhNNkFnQUJxTFFBQVJ3M1FBU0FCUVFWR0RjNEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRZnNBSVJBTTZBSUxBa0FnQVNJRUlBSkhEUUJCL0FBaEVBem9BZ3NDUUFKQUlBUXRBQUJCdlg5cURnd0EwUUhSQWRFQjBRSFJBZEVCMFFIUkFkRUIwUUVCMFFFTElBUkJBV29oQVVIbUFDRVFETThDQ3lBRVFRRnFJUUZCNXdBaEVBek9BZ3NDUUNBQklnUWdBa2NOQUVIOUFDRVFET2NDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRSnFJUkFDUUFOQUlBUXRBQUFnQVVIdHo0Q0FBR290QUFCSERjOEJJQUZCQWtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSDlBQ0VRRE9jQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJBaEVBek1BUXNDUUNBQklnUWdBa2NOQUVIK0FDRVFET1lDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRVnFJUkFDUUFOQUlBUXRBQUFnQVVIMnpvQ0FBR290QUFCSERjNEJJQUZCQlVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSCtBQ0VRRE9ZQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJZaEVBekxBUXNDUUNBQklnUWdBa2NOQUVIL0FDRVFET1VDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRTnFJUkFDUUFOQUlBUXRBQUFnQVVIOHpvQ0FBR290QUFCSERjMEJJQUZCQTBZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSC9BQ0VRRE9VQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVFVaEVBektBUXNDUUNBQklnUWdBa2NOQUVHQUFTRVFET1FDQ3lBRUxRQUFRZGtBUnczTEFTQUVRUUZxSVFGQkNDRVFETWtCQ3dKQUlBRWlCQ0FDUncwQVFZRUJJUkFNNHdJTEFrQUNRQ0FFTFFBQVFiSi9hZzREQU13QkFjd0JDeUFFUVFGcUlRRkI2d0FoRUF6S0Fnc2dCRUVCYWlFQlFld0FJUkFNeVFJTEFrQWdBU0lFSUFKSERRQkJnZ0VoRUF6aUFnc0NRQUpBSUFRdEFBQkJ1SDlxRGdnQXl3SExBY3NCeXdITEFjc0JBY3NCQ3lBRVFRRnFJUUZCNmdBaEVBekpBZ3NnQkVFQmFpRUJRZTBBSVJBTXlBSUxBa0FnQVNJRUlBSkhEUUJCZ3dFaEVBemhBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSQWdCQ0FCYTBFQ2FpRVVBa0FEUUNBRUxRQUFJQUZCZ00rQWdBQnFMUUFBUnczSkFTQUJRUUpHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQkEyQWdCQmd3RWhFQXpoQWd0QkFDRVFJQUJCQURZQ0FDQVVRUUZxSVFFTXhnRUxBa0FnQVNJRUlBSkhEUUJCaEFFaEVBemdBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFRWFpRVFBa0FEUUNBRUxRQUFJQUZCZzgrQWdBQnFMUUFBUnczSUFTQUJRUVJHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQmhBRWhFQXpnQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVqSVJBTXhRRUxBa0FnQVNJRUlBSkhEUUJCaFFFaEVBemZBZ3NDUUFKQUlBUXRBQUJCdEg5cURnZ0F5QUhJQWNnQnlBSElBY2dCQWNnQkN5QUVRUUZxSVFGQjd3QWhFQXpHQWdzZ0JFRUJhaUVCUWZBQUlSQU14UUlMQWtBZ0FTSUVJQUpIRFFCQmhnRWhFQXplQWdzZ0JDMEFBRUhGQUVjTnhRRWdCRUVCYWlFQkRJTUNDd0pBSUFFaUJDQUNSdzBBUVljQklSQU0zUUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkEyb2hFQUpBQTBBZ0JDMEFBQ0FCUVlqUGdJQUFhaTBBQUVjTnhRRWdBVUVEUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFZY0JJUkFNM1FJTElBQkJBRFlDQUNBUVFRRnFJUUZCTFNFUURNSUJDd0pBSUFFaUJDQUNSdzBBUVlnQklSQU0zQUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkNHb2hFQUpBQTBBZ0JDMEFBQ0FCUWREUGdJQUFhaTBBQUVjTnhBRWdBVUVJUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFZZ0JJUkFNM0FJTElBQkJBRFlDQUNBUVFRRnFJUUZCS1NFUURNRUJDd0pBSUFFaUFTQUNSdzBBUVlrQklSQU0yd0lMUVFFaEVDQUJMUUFBUWQ4QVJ3M0FBU0FCUVFGcUlRRU1nUUlMQWtBZ0FTSUVJQUpIRFFCQmlnRWhFQXphQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQTBBZ0JDMEFBQ0FCUVl6UGdJQUFhaTBBQUVjTndRRWdBVUVCUmcydkFpQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR0tBU0VRRE5rQ0N3SkFJQUVpQkNBQ1J3MEFRWXNCSVJBTTJRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQW1vaEVBSkFBMEFnQkMwQUFDQUJRWTdQZ0lBQWFpMEFBRWNOd1FFZ0FVRUNSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVlzQklSQU0yUUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJBaUVRREw0QkN3SkFJQUVpQkNBQ1J3MEFRWXdCSVJBTTJBSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRZkRQZ0lBQWFpMEFBRWNOd0FFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVl3QklSQU0yQUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJIeUVRREwwQkN3SkFJQUVpQkNBQ1J3MEFRWTBCSVJBTTF3SUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRZkxQZ0lBQWFpMEFBRWNOdndFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVkwQklSQU0xd0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJDU0VRREx3QkN3SkFJQUVpQkNBQ1J3MEFRWTRCSVJBTTFnSUxBa0FDUUNBRUxRQUFRYmQvYWc0SEFMOEJ2d0cvQWI4QnZ3RUJ2d0VMSUFSQkFXb2hBVUg0QUNFUURMMENDeUFFUVFGcUlRRkIrUUFoRUF5OEFnc0NRQ0FCSWdRZ0FrY05BRUdQQVNFUUROVUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFWcUlSQUNRQU5BSUFRdEFBQWdBVUdSejRDQUFHb3RBQUJIRGIwQklBRkJCVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHUEFTRVFETlVDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUmdoRUF5NkFRc0NRQ0FCSWdRZ0FrY05BRUdRQVNFUUROUUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUdYejRDQUFHb3RBQUJIRGJ3QklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHUUFTRVFETlFDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUmNoRUF5NUFRc0NRQ0FCSWdRZ0FrY05BRUdSQVNFUUROTUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFacUlSQUNRQU5BSUFRdEFBQWdBVUdhejRDQUFHb3RBQUJIRGJzQklBRkJCa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHUkFTRVFETk1DQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUlVoRUF5NEFRc0NRQ0FCSWdRZ0FrY05BRUdTQVNFUUROSUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFWcUlSQUNRQU5BSUFRdEFBQWdBVUdoejRDQUFHb3RBQUJIRGJvQklBRkJCVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHU0FTRVFETklDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUjRoRUF5M0FRc0NRQ0FCSWdRZ0FrY05BRUdUQVNFUURORUNDeUFFTFFBQVFjd0FSdzI0QVNBRVFRRnFJUUZCQ2lFUURMWUJDd0pBSUFRZ0FrY05BRUdVQVNFUUROQUNDd0pBQWtBZ0JDMEFBRUcvZjJvT0R3QzVBYmtCdVFHNUFia0J1UUc1QWJrQnVRRzVBYmtCdVFHNUFRRzVBUXNnQkVFQmFpRUJRZjRBSVJBTXR3SUxJQVJCQVdvaEFVSC9BQ0VRRExZQ0N3SkFJQVFnQWtjTkFFR1ZBU0VRRE04Q0N3SkFBa0FnQkMwQUFFRy9mMm9PQXdDNEFRRzRBUXNnQkVFQmFpRUJRZjBBSVJBTXRnSUxJQVJCQVdvaEJFR0FBU0VRRExVQ0N3SkFJQVFnQWtjTkFFR1dBU0VRRE00Q0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUZxSVJBQ1FBTkFJQVF0QUFBZ0FVR256NENBQUdvdEFBQkhEYllCSUFGQkFVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdXQVNFUURNNENDeUFBUVFBMkFnQWdFRUVCYWlFQlFRc2hFQXl6QVFzQ1FDQUVJQUpIRFFCQmx3RWhFQXpOQWdzQ1FBSkFBa0FDUUNBRUxRQUFRVk5xRGlNQXVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFRRzRBYmdCdUFHNEFiZ0JBcmdCdUFHNEFRTzRBUXNnQkVFQmFpRUJRZnNBSVJBTXRnSUxJQVJCQVdvaEFVSDhBQ0VRRExVQ0N5QUVRUUZxSVFSQmdRRWhFQXkwQWdzZ0JFRUJhaUVFUVlJQklSQU1zd0lMQWtBZ0JDQUNSdzBBUVpnQklSQU16QUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJHb2hFQUpBQTBBZ0JDMEFBQ0FCUWFuUGdJQUFhaTBBQUVjTnRBRWdBVUVFUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaZ0JJUkFNekFJTElBQkJBRFlDQUNBUVFRRnFJUUZCR1NFUURMRUJDd0pBSUFRZ0FrY05BRUdaQVNFUURNc0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFWcUlSQUNRQU5BSUFRdEFBQWdBVUd1ejRDQUFHb3RBQUJIRGJNQklBRkJCVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHWkFTRVFETXNDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUVloRUF5d0FRc0NRQ0FFSUFKSERRQkJtZ0VoRUF6S0Fnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVCYWlFUUFrQURRQ0FFTFFBQUlBRkJ0TStBZ0FCcUxRQUFSdzJ5QVNBQlFRRkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCbWdFaEVBektBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRWNJUkFNcndFTEFrQWdCQ0FDUncwQVFac0JJUkFNeVFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFiYlBnSUFBYWkwQUFFY05zUUVnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWnNCSVJBTXlRSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkp5RVFESzRCQ3dKQUlBUWdBa2NOQUVHY0FTRVFETWdDQ3dKQUFrQWdCQzBBQUVHc2Yyb09BZ0FCc1FFTElBUkJBV29oQkVHR0FTRVFESzhDQ3lBRVFRRnFJUVJCaHdFaEVBeXVBZ3NDUUNBRUlBSkhEUUJCblFFaEVBekhBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBa0FEUUNBRUxRQUFJQUZCdU0rQWdBQnFMUUFBUncydkFTQUJRUUZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQm5RRWhFQXpIQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVtSVJBTXJBRUxBa0FnQkNBQ1J3MEFRWjRCSVJBTXhnSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRYnJQZ0lBQWFpMEFBRWNOcmdFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVo0QklSQU14Z0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJBeUVRREtzQkN3SkFJQVFnQWtjTkFFR2ZBU0VRRE1VQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVSHR6NENBQUdvdEFBQkhEYTBCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdmQVNFUURNVUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFRd2hFQXlxQVFzQ1FDQUVJQUpIRFFCQm9BRWhFQXpFQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRURhaUVRQWtBRFFDQUVMUUFBSUFGQnZNK0FnQUJxTFFBQVJ3MnNBU0FCUVFOR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJvQUVoRUF6RUFnc2dBRUVBTmdJQUlCQkJBV29oQVVFTklSQU1xUUVMQWtBZ0JDQUNSdzBBUWFFQklSQU13d0lMQWtBQ1FDQUVMUUFBUWJwL2FnNExBS3dCckFHc0Fhd0JyQUdzQWF3QnJBR3NBUUdzQVFzZ0JFRUJhaUVFUVlzQklSQU1xZ0lMSUFSQkFXb2hCRUdNQVNFUURLa0NDd0pBSUFRZ0FrY05BRUdpQVNFUURNSUNDeUFFTFFBQVFkQUFSdzJwQVNBRVFRRnFJUVFNNlFFTEFrQWdCQ0FDUncwQVFhTUJJUkFNd1FJTEFrQUNRQ0FFTFFBQVFiZC9hZzRIQWFvQnFnR3FBYW9CcWdFQXFnRUxJQVJCQVdvaEJFR09BU0VRREtnQ0N5QUVRUUZxSVFGQklpRVFES1lCQ3dKQUlBUWdBa2NOQUVHa0FTRVFETUFDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRRnFJUkFDUUFOQUlBUXRBQUFnQVVIQXo0Q0FBR290QUFCSERhZ0JJQUZCQVVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR2tBU0VRRE1BQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVIwaEVBeWxBUXNDUUNBRUlBSkhEUUJCcFFFaEVBeS9BZ3NDUUFKQUlBUXRBQUJCcm45cURnTUFxQUVCcUFFTElBUkJBV29oQkVHUUFTRVFES1lDQ3lBRVFRRnFJUUZCQkNFUURLUUJDd0pBSUFRZ0FrY05BRUdtQVNFUURMNENDd0pBQWtBQ1FBSkFBa0FnQkMwQUFFRy9mMm9PRlFDcUFhb0JxZ0dxQWFvQnFnR3FBYW9CcWdHcUFRR3FBYW9CQXFvQnFnRURxZ0dxQVFTcUFRc2dCRUVCYWlFRVFZZ0JJUkFNcUFJTElBUkJBV29oQkVHSkFTRVFES2NDQ3lBRVFRRnFJUVJCaWdFaEVBeW1BZ3NnQkVFQmFpRUVRWThCSVJBTXBRSUxJQVJCQVdvaEJFR1JBU0VRREtRQ0N3SkFJQVFnQWtjTkFFR25BU0VRREwwQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUpxSVJBQ1FBTkFJQVF0QUFBZ0FVSHR6NENBQUdvdEFBQkhEYVVCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUduQVNFUURMMENDeUFBUVFBMkFnQWdFRUVCYWlFQlFSRWhFQXlpQVFzQ1FDQUVJQUpIRFFCQnFBRWhFQXk4QWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUNhaUVRQWtBRFFDQUVMUUFBSUFGQndzK0FnQUJxTFFBQVJ3MmtBU0FCUVFKR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJxQUVoRUF5OEFnc2dBRUVBTmdJQUlCQkJBV29oQVVFc0lSQU1vUUVMQWtBZ0JDQUNSdzBBUWFrQklSQU11d0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJHb2hFQUpBQTBBZ0JDMEFBQ0FCUWNYUGdJQUFhaTBBQUVjTm93RWdBVUVFUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFha0JJUkFNdXdJTElBQkJBRFlDQUNBUVFRRnFJUUZCS3lFUURLQUJDd0pBSUFRZ0FrY05BRUdxQVNFUURMb0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUhLejRDQUFHb3RBQUJIRGFJQklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHcUFTRVFETG9DQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUlFoRUF5ZkFRc0NRQ0FFSUFKSERRQkJxd0VoRUF5NUFnc0NRQUpBQWtBQ1FDQUVMUUFBUWI1L2FnNFBBQUVDcEFHa0FhUUJwQUdrQWFRQnBBR2tBYVFCcEFHa0FRT2tBUXNnQkVFQmFpRUVRWk1CSVJBTW9nSUxJQVJCQVdvaEJFR1VBU0VRREtFQ0N5QUVRUUZxSVFSQmxRRWhFQXlnQWdzZ0JFRUJhaUVFUVpZQklSQU1ud0lMQWtBZ0JDQUNSdzBBUWF3QklSQU11QUlMSUFRdEFBQkJ4UUJIRFo4QklBUkJBV29oQkF6Z0FRc0NRQ0FFSUFKSERRQkJyUUVoRUF5M0Fnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVDYWlFUUFrQURRQ0FFTFFBQUlBRkJ6YytBZ0FCcUxRQUFSdzJmQVNBQlFRSkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCclFFaEVBeTNBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRU9JUkFNbkFFTEFrQWdCQ0FDUncwQVFhNEJJUkFNdGdJTElBUXRBQUJCMEFCSERaMEJJQVJCQVdvaEFVRWxJUkFNbXdFTEFrQWdCQ0FDUncwQVFhOEJJUkFNdFFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJDR29oRUFKQUEwQWdCQzBBQUNBQlFkRFBnSUFBYWkwQUFFY05uUUVnQVVFSVJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRYThCSVJBTXRRSUxJQUJCQURZQ0FDQVFRUUZxSVFGQktpRVFESm9CQ3dKQUlBUWdBa2NOQUVHd0FTRVFETFFDQ3dKQUFrQWdCQzBBQUVHcmYyb09Dd0NkQVowQm5RR2RBWjBCblFHZEFaMEJuUUVCblFFTElBUkJBV29oQkVHYUFTRVFESnNDQ3lBRVFRRnFJUVJCbXdFaEVBeWFBZ3NDUUNBRUlBSkhEUUJCc1FFaEVBeXpBZ3NDUUFKQUlBUXRBQUJCdjM5cURoUUFuQUdjQVp3Qm5BR2NBWndCbkFHY0Fad0JuQUdjQVp3Qm5BR2NBWndCbkFHY0Fad0JBWndCQ3lBRVFRRnFJUVJCbVFFaEVBeWFBZ3NnQkVFQmFpRUVRWndCSVJBTW1RSUxBa0FnQkNBQ1J3MEFRYklCSVJBTXNnSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQTJvaEVBSkFBMEFnQkMwQUFDQUJRZG5QZ0lBQWFpMEFBRWNObWdFZ0FVRURSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWJJQklSQU1zZ0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJJU0VRREpjQkN3SkFJQVFnQWtjTkFFR3pBU0VRRExFQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVpxSVJBQ1FBTkFJQVF0QUFBZ0FVSGR6NENBQUdvdEFBQkhEWmtCSUFGQkJrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUd6QVNFUURMRUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFSb2hFQXlXQVFzQ1FDQUVJQUpIRFFCQnRBRWhFQXl3QWdzQ1FBSkFBa0FnQkMwQUFFRzdmMm9PRVFDYUFab0JtZ0dhQVpvQm1nR2FBWm9CbWdFQm1nR2FBWm9CbWdHYUFRS2FBUXNnQkVFQmFpRUVRWjBCSVJBTW1BSUxJQVJCQVdvaEJFR2VBU0VRREpjQ0N5QUVRUUZxSVFSQm53RWhFQXlXQWdzQ1FDQUVJQUpIRFFCQnRRRWhFQXl2QWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUZhaUVRQWtBRFFDQUVMUUFBSUFGQjVNK0FnQUJxTFFBQVJ3MlhBU0FCUVFWR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJ0UUVoRUF5dkFnc2dBRUVBTmdJQUlCQkJBV29oQVVFb0lSQU1sQUVMQWtBZ0JDQUNSdzBBUWJZQklSQU1yZ0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFtb2hFQUpBQTBBZ0JDMEFBQ0FCUWVyUGdJQUFhaTBBQUVjTmxnRWdBVUVDUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFiWUJJUkFNcmdJTElBQkJBRFlDQUNBUVFRRnFJUUZCQnlFUURKTUJDd0pBSUFRZ0FrY05BRUczQVNFUURLMENDd0pBQWtBZ0JDMEFBRUc3ZjJvT0RnQ1dBWllCbGdHV0FaWUJsZ0dXQVpZQmxnR1dBWllCbGdFQmxnRUxJQVJCQVdvaEJFR2hBU0VRREpRQ0N5QUVRUUZxSVFSQm9nRWhFQXlUQWdzQ1FDQUVJQUpIRFFCQnVBRWhFQXlzQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUNhaUVRQWtBRFFDQUVMUUFBSUFGQjdjK0FnQUJxTFFBQVJ3MlVBU0FCUVFKR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJ1QUVoRUF5c0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFU0lSQU1rUUVMQWtBZ0JDQUNSdzBBUWJrQklSQU1xd0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFXb2hFQUpBQTBBZ0JDMEFBQ0FCUWZEUGdJQUFhaTBBQUVjTmt3RWdBVUVCUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFia0JJUkFNcXdJTElBQkJBRFlDQUNBUVFRRnFJUUZCSUNFUURKQUJDd0pBSUFRZ0FrY05BRUc2QVNFUURLb0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFGcUlSQUNRQU5BSUFRdEFBQWdBVUh5ejRDQUFHb3RBQUJIRFpJQklBRkJBVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHNkFTRVFES29DQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUThoRUF5UEFRc0NRQ0FFSUFKSERRQkJ1d0VoRUF5cEFnc0NRQUpBSUFRdEFBQkJ0MzlxRGdjQWtnR1NBWklCa2dHU0FRR1NBUXNnQkVFQmFpRUVRYVVCSVJBTWtBSUxJQVJCQVdvaEJFR21BU0VRREk4Q0N3SkFJQVFnQWtjTkFFRzhBU0VRREtnQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUWRxSVJBQ1FBTkFJQVF0QUFBZ0FVSDB6NENBQUdvdEFBQkhEWkFCSUFGQkIwWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUc4QVNFUURLZ0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFSc2hFQXlOQVFzQ1FDQUVJQUpIRFFCQnZRRWhFQXluQWdzQ1FBSkFBa0FnQkMwQUFFRytmMm9PRWdDUkFaRUJrUUdSQVpFQmtRR1JBWkVCa1FFQmtRR1JBWkVCa1FHUkFaRUJBcEVCQ3lBRVFRRnFJUVJCcEFFaEVBeVBBZ3NnQkVFQmFpRUVRYWNCSVJBTWpnSUxJQVJCQVdvaEJFR29BU0VRREkwQ0N3SkFJQVFnQWtjTkFFRytBU0VRREtZQ0N5QUVMUUFBUWM0QVJ3Mk5BU0FFUVFGcUlRUU16d0VMQWtBZ0JDQUNSdzBBUWI4QklSQU1wUUlMQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCQzBBQUVHL2Yyb09GUUFCQWdPY0FRUUZCcHdCbkFHY0FRY0lDUW9MbkFFTURRNFBuQUVMSUFSQkFXb2hBVUhvQUNFUURKb0NDeUFFUVFGcUlRRkI2UUFoRUF5WkFnc2dCRUVCYWlFQlFlNEFJUkFNbUFJTElBUkJBV29oQVVIeUFDRVFESmNDQ3lBRVFRRnFJUUZCOHdBaEVBeVdBZ3NnQkVFQmFpRUJRZllBSVJBTWxRSUxJQVJCQVdvaEFVSDNBQ0VRREpRQ0N5QUVRUUZxSVFGQitnQWhFQXlUQWdzZ0JFRUJhaUVFUVlNQklSQU1rZ0lMSUFSQkFXb2hCRUdFQVNFUURKRUNDeUFFUVFGcUlRUkJoUUVoRUF5UUFnc2dCRUVCYWlFRVFaSUJJUkFNandJTElBUkJBV29oQkVHWUFTRVFESTRDQ3lBRVFRRnFJUVJCb0FFaEVBeU5BZ3NnQkVFQmFpRUVRYU1CSVJBTWpBSUxJQVJCQVdvaEJFR3FBU0VRRElzQ0N3SkFJQVFnQWtZTkFDQUFRWkNBZ0lBQU5nSUlJQUFnQkRZQ0JFR3JBU0VRRElzQ0MwSEFBU0VRREtNQ0N5QUFJQVVnQWhDcWdJQ0FBQ0lCRFlzQklBVWhBUXhjQ3dKQUlBWWdBa1lOQUNBR1FRRnFJUVVNalFFTFFjSUJJUkFNb1FJTEEwQUNRQ0FRTFFBQVFYWnFEZ1NNQVFBQWp3RUFDeUFRUVFGcUloQWdBa2NOQUF0Qnd3RWhFQXlnQWdzQ1FDQUhJQUpHRFFBZ0FFR1JnSUNBQURZQ0NDQUFJQWMyQWdRZ0J5RUJRUUVoRUF5SEFndEJ4QUVoRUF5ZkFnc0NRQ0FISUFKSERRQkJ4UUVoRUF5ZkFnc0NRQUpBSUFjdEFBQkJkbW9PQkFIT0FjNEJBTTRCQ3lBSFFRRnFJUVlNalFFTElBZEJBV29oQlF5SkFRc0NRQ0FISUFKSERRQkJ4Z0VoRUF5ZUFnc0NRQUpBSUFjdEFBQkJkbW9PRndHUEFZOEJBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBUUNQQVFzZ0IwRUJhaUVIQzBHd0FTRVFESVFDQ3dKQUlBZ2dBa2NOQUVISUFTRVFESjBDQ3lBSUxRQUFRU0JIRFkwQklBQkJBRHNCTWlBSVFRRnFJUUZCc3dFaEVBeURBZ3NnQVNFWEFrQURRQ0FYSWdjZ0FrWU5BU0FITFFBQVFWQnFRZjhCY1NJUVFRcFBEY3dCQWtBZ0FDOEJNaUlVUVprelN3MEFJQUFnRkVFS2JDSVVPd0V5SUJCQi8vOERjeUFVUWY3L0EzRkpEUUFnQjBFQmFpRVhJQUFnRkNBUWFpSVFPd0V5SUJCQi8vOERjVUhvQjBrTkFRc0xRUUFoRUNBQVFRQTJBaHdnQUVIQmlZQ0FBRFlDRUNBQVFRMDJBZ3dnQUNBSFFRRnFOZ0lVREp3Q0MwSEhBU0VRREpzQ0N5QUFJQWdnQWhDdWdJQ0FBQ0lRUlEzS0FTQVFRUlZIRFl3QklBQkJ5QUUyQWh3Z0FDQUlOZ0lVSUFCQnlaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeWFBZ3NDUUNBSklBSkhEUUJCekFFaEVBeWFBZ3RCQUNFVVFRRWhGMEVCSVJaQkFDRVFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQWt0QUFCQlVHb09DcFlCbFFFQUFRSURCQVVHQ0pjQkMwRUNJUkFNQmd0QkF5RVFEQVVMUVFRaEVBd0VDMEVGSVJBTUF3dEJCaUVRREFJTFFRY2hFQXdCQzBFSUlSQUxRUUFoRjBFQUlSWkJBQ0VVREk0QkMwRUpJUkJCQVNFVVFRQWhGMEVBSVJZTWpRRUxBa0FnQ2lBQ1J3MEFRYzRCSVJBTW1RSUxJQW90QUFCQkxrY05qZ0VnQ2tFQmFpRUpETW9CQ3lBTElBSkhEWTRCUWRBQklSQU1sd0lMQWtBZ0N5QUNSZzBBSUFCQmpvQ0FnQUEyQWdnZ0FDQUxOZ0lFUWJjQklSQU0vZ0VMUWRFQklSQU1sZ0lMQWtBZ0JDQUNSdzBBUWRJQklSQU1sZ0lMSUFJZ0JHc2dBQ2dDQUNJUWFpRVVJQVFnRUd0QkJHb2hDd05BSUFRdEFBQWdFRUg4ejRDQUFHb3RBQUJIRFk0QklCQkJCRVlONlFFZ0VFRUJhaUVRSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQjBnRWhFQXlWQWdzZ0FDQU1JQUlRcklDQWdBQWlBUTJOQVNBTUlRRU11QUVMQWtBZ0JDQUNSdzBBUWRRQklSQU1sQUlMSUFJZ0JHc2dBQ2dDQUNJUWFpRVVJQVFnRUd0QkFXb2hEQU5BSUFRdEFBQWdFRUdCMElDQUFHb3RBQUJIRFk4QklCQkJBVVlOamdFZ0VFRUJhaUVRSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQjFBRWhFQXlUQWdzQ1FDQUVJQUpIRFFCQjFnRWhFQXlUQWdzZ0FpQUVheUFBS0FJQUloQnFJUlFnQkNBUWEwRUNhaUVMQTBBZ0JDMEFBQ0FRUVlQUWdJQUFhaTBBQUVjTmpnRWdFRUVDUmcyUUFTQVFRUUZxSVJBZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFSFdBU0VRREpJQ0N3SkFJQVFnQWtjTkFFSFhBU0VRREpJQ0N3SkFBa0FnQkMwQUFFRzdmMm9PRUFDUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4QkFZOEJDeUFFUVFGcUlRUkJ1d0VoRUF6NUFRc2dCRUVCYWlFRVFid0JJUkFNK0FFTEFrQWdCQ0FDUncwQVFkZ0JJUkFNa1FJTElBUXRBQUJCeUFCSERZd0JJQVJCQVdvaEJBekVBUXNDUUNBRUlBSkdEUUFnQUVHUWdJQ0FBRFlDQ0NBQUlBUTJBZ1JCdmdFaEVBejNBUXRCMlFFaEVBeVBBZ3NDUUNBRUlBSkhEUUJCMmdFaEVBeVBBZ3NnQkMwQUFFSElBRVlOd3dFZ0FFRUJPZ0FvRExrQkN5QUFRUUk2QUM4Z0FDQUVJQUlRcG9DQWdBQWlFQTJOQVVIQ0FTRVFEUFFCQ3lBQUxRQW9RWDlxRGdLM0Fia0J1QUVMQTBBQ1FDQUVMUUFBUVhacURnUUFqZ0dPQVFDT0FRc2dCRUVCYWlJRUlBSkhEUUFMUWQwQklSQU1pd0lMSUFCQkFEb0FMeUFBTFFBdFFRUnhSUTJFQWdzZ0FFRUFPZ0F2SUFCQkFUb0FOQ0FCSVFFTWpBRUxJQkJCRlVZTjJnRWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFhZU9nSUFBTmdJUUlBQkJFallDREVFQUlSQU1pQUlMQWtBZ0FDQVFJQUlRdElDQWdBQWlCQTBBSUJBaEFReUJBZ3NDUUNBRVFSVkhEUUFnQUVFRE5nSWNJQUFnRURZQ0ZDQUFRYkNZZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNaUFJTElBQkJBRFlDSENBQUlCQTJBaFFnQUVHbmpvQ0FBRFlDRUNBQVFSSTJBZ3hCQUNFUURJY0NDeUFRUVJWR0RkWUJJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSGFqWUNBQURZQ0VDQUFRUlEyQWd4QkFDRVFESVlDQ3lBQUtBSUVJUmNnQUVFQU5nSUVJQkFnRWFkcUloWWhBU0FBSUJjZ0VDQVdJQlFiSWhBUXRZQ0FnQUFpRkVVTmpRRWdBRUVITmdJY0lBQWdFRFlDRkNBQUlCUTJBZ3hCQUNFUURJVUNDeUFBSUFBdkFUQkJnQUZ5T3dFd0lBRWhBUXRCS2lFUURPb0JDeUFRUVJWR0RkRUJJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR0RqSUNBQURZQ0VDQUFRUk0yQWd4QkFDRVFESUlDQ3lBUVFSVkdEYzhCSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUdhajRDQUFEWUNFQ0FBUVNJMkFneEJBQ0VRRElFQ0N5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRdDRDQWdBQWlFQTBBSUFGQkFXb2hBUXlOQVFzZ0FFRU1OZ0ljSUFBZ0VEWUNEQ0FBSUFGQkFXbzJBaFJCQUNFUURJQUNDeUFRUVJWR0Rjd0JJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR2FqNENBQURZQ0VDQUFRU0kyQWd4QkFDRVFEUDhCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVF0NENBZ0FBaUVBMEFJQUZCQVdvaEFReU1BUXNnQUVFTk5nSWNJQUFnRURZQ0RDQUFJQUZCQVdvMkFoUkJBQ0VRRFA0QkN5QVFRUlZHRGNrQklBQkJBRFlDSENBQUlBRTJBaFFnQUVIR2pJQ0FBRFlDRUNBQVFTTTJBZ3hCQUNFUURQMEJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXVZQ0FnQUFpRUEwQUlBRkJBV29oQVF5TEFRc2dBRUVPTmdJY0lBQWdFRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUHdCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCd0pXQWdBQTJBaEFnQUVFQ05nSU1RUUFoRUF6N0FRc2dFRUVWUmczRkFTQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQnhveUFnQUEyQWhBZ0FFRWpOZ0lNUVFBaEVBejZBUXNnQUVFUU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFEUGtCQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVF1WUNBZ0FBaUJBMEFJQUZCQVdvaEFRenhBUXNnQUVFUk5nSWNJQUFnQkRZQ0RDQUFJQUZCQVdvMkFoUkJBQ0VRRFBnQkN5QVFRUlZHRGNFQklBQkJBRFlDSENBQUlBRTJBaFFnQUVIR2pJQ0FBRFlDRUNBQVFTTTJBZ3hCQUNFUURQY0JDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXVZQ0FnQUFpRUEwQUlBRkJBV29oQVF5SUFRc2dBRUVUTmdJY0lBQWdFRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUFlCQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVF1WUNBZ0FBaUJBMEFJQUZCQVdvaEFRenRBUXNnQUVFVU5nSWNJQUFnQkRZQ0RDQUFJQUZCQVdvMkFoUkJBQ0VRRFBVQkN5QVFRUlZHRGIwQklBQkJBRFlDSENBQUlBRTJBaFFnQUVHYWo0Q0FBRFlDRUNBQVFTSTJBZ3hCQUNFUURQUUJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXQ0Q0FnQUFpRUEwQUlBRkJBV29oQVF5R0FRc2dBRUVXTmdJY0lBQWdFRFlDRENBQUlBRkJBV28yQWhSQkFDRVFEUE1CQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVF0NENBZ0FBaUJBMEFJQUZCQVdvaEFRenBBUXNnQUVFWE5nSWNJQUFnQkRZQ0RDQUFJQUZCQVdvMkFoUkJBQ0VRRFBJQkN5QUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQnpaT0FnQUEyQWhBZ0FFRU1OZ0lNUVFBaEVBenhBUXRDQVNFUkN5QVFRUUZxSVFFQ1FDQUFLUU1nSWhKQy8vLy8vLy8vLy84UFZnMEFJQUFnRWtJRWhpQVJoRGNESUNBQklRRU1oQUVMSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUd0aVlDQUFEWUNFQ0FBUVF3MkFneEJBQ0VRRE84QkN5QUFRUUEyQWh3Z0FDQVFOZ0lVSUFCQnpaT0FnQUEyQWhBZ0FFRU1OZ0lNUVFBaEVBenVBUXNnQUNnQ0JDRVhJQUJCQURZQ0JDQVFJQkduYWlJV0lRRWdBQ0FYSUJBZ0ZpQVVHeUlRRUxXQWdJQUFJaFJGRFhNZ0FFRUZOZ0ljSUFBZ0VEWUNGQ0FBSUJRMkFneEJBQ0VRRE8wQkN5QUFRUUEyQWh3Z0FDQVFOZ0lVSUFCQnFweUFnQUEyQWhBZ0FFRVBOZ0lNUVFBaEVBenNBUXNnQUNBUUlBSVF0SUNBZ0FBaUFRMEJJQkFoQVF0QkRpRVFETkVCQ3dKQUlBRkJGVWNOQUNBQVFRSTJBaHdnQUNBUU5nSVVJQUJCc0ppQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF6cUFRc2dBRUVBTmdJY0lBQWdFRFlDRkNBQVFhZU9nSUFBTmdJUUlBQkJFallDREVFQUlSQU02UUVMSUFGQkFXb2hFQUpBSUFBdkFUQWlBVUdBQVhGRkRRQUNRQ0FBSUJBZ0FoQzdnSUNBQUNJQkRRQWdFQ0VCREhBTElBRkJGVWNOdWdFZ0FFRUZOZ0ljSUFBZ0VEWUNGQ0FBUWZtWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTTZRRUxBa0FnQVVHZ0JIRkJvQVJIRFFBZ0FDMEFMVUVDY1EwQUlBQkJBRFlDSENBQUlCQTJBaFFnQUVHV2s0Q0FBRFlDRUNBQVFRUTJBZ3hCQUNFUURPa0JDeUFBSUJBZ0FoQzlnSUNBQUJvZ0VDRUJBa0FDUUFKQUFrQUNRQ0FBSUJBZ0FoQ3pnSUNBQUE0V0FnRUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBd1FMSUFCQkFUb0FMZ3NnQUNBQUx3RXdRY0FBY2pzQk1DQVFJUUVMUVNZaEVBelJBUXNnQUVFak5nSWNJQUFnRURZQ0ZDQUFRYVdXZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNNlFFTElBQkJBRFlDSENBQUlCQTJBaFFnQUVIVmk0Q0FBRFlDRUNBQVFSRTJBZ3hCQUNFUURPZ0JDeUFBTFFBdFFRRnhSUTBCUWNNQklSQU16Z0VMQWtBZ0RTQUNSZzBBQTBBQ1FDQU5MUUFBUVNCR0RRQWdEU0VCRE1RQkN5QU5RUUZxSWcwZ0FrY05BQXRCSlNFUURPY0JDMEVsSVJBTTVnRUxJQUFvQWdRaEJDQUFRUUEyQWdRZ0FDQUVJQTBRcjRDQWdBQWlCRVVOclFFZ0FFRW1OZ0ljSUFBZ0JEWUNEQ0FBSUExQkFXbzJBaFJCQUNFUURPVUJDeUFRUVJWR0Rhc0JJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSDlqWUNBQURZQ0VDQUFRUjAyQWd4QkFDRVFET1FCQ3lBQVFTYzJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNNHdFTElCQWhBVUVCSVJRQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBTFFBc1FYNXFEZ2NHQlFVREFRSUFCUXNnQUNBQUx3RXdRUWh5T3dFd0RBTUxRUUloRkF3QkMwRUVJUlFMSUFCQkFUb0FMQ0FBSUFBdkFUQWdGSEk3QVRBTElCQWhBUXRCS3lFUURNb0JDeUFBUVFBMkFod2dBQ0FRTmdJVUlBQkJxNUtBZ0FBMkFoQWdBRUVMTmdJTVFRQWhFQXppQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWVHUGdJQUFOZ0lRSUFCQkNqWUNERUVBSVJBTTRRRUxJQUJCQURvQUxDQVFJUUVNdlFFTElCQWhBVUVCSVJRQ1FBSkFBa0FDUUFKQUlBQXRBQ3hCZTJvT0JBTUJBZ0FGQ3lBQUlBQXZBVEJCQ0hJN0FUQU1Bd3RCQWlFVURBRUxRUVFoRkFzZ0FFRUJPZ0FzSUFBZ0FDOEJNQ0FVY2pzQk1Bc2dFQ0VCQzBFcElSQU14UUVMSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUh3bElDQUFEWUNFQ0FBUVFNMkFneEJBQ0VRRE4wQkN3SkFJQTR0QUFCQkRVY05BQ0FBS0FJRUlRRWdBRUVBTmdJRUFrQWdBQ0FCSUE0UXNZQ0FnQUFpQVEwQUlBNUJBV29oQVF4MUN5QUFRU3cyQWh3Z0FDQUJOZ0lNSUFBZ0RrRUJhallDRkVFQUlSQU0zUUVMSUFBdEFDMUJBWEZGRFFGQnhBRWhFQXpEQVFzQ1FDQU9JQUpIRFFCQkxTRVFETndCQ3dKQUFrQURRQUpBSUE0dEFBQkJkbW9PQkFJQUFBTUFDeUFPUVFGcUlnNGdBa2NOQUF0QkxTRVFETjBCQ3lBQUtBSUVJUUVnQUVFQU5nSUVBa0FnQUNBQklBNFFzWUNBZ0FBaUFRMEFJQTRoQVF4MEN5QUFRU3cyQWh3Z0FDQU9OZ0lVSUFBZ0FUWUNERUVBSVJBTTNBRUxJQUFvQWdRaEFTQUFRUUEyQWdRQ1FDQUFJQUVnRGhDeGdJQ0FBQ0lCRFFBZ0RrRUJhaUVCREhNTElBQkJMRFlDSENBQUlBRTJBZ3dnQUNBT1FRRnFOZ0lVUVFBaEVBemJBUXNnQUNnQ0JDRUVJQUJCQURZQ0JDQUFJQVFnRGhDeGdJQ0FBQ0lFRGFBQklBNGhBUXpPQVFzZ0VFRXNSdzBCSUFGQkFXb2hFRUVCSVFFQ1FBSkFBa0FDUUFKQUlBQXRBQ3hCZTJvT0JBTUJBZ1FBQ3lBUUlRRU1CQXRCQWlFQkRBRUxRUVFoQVFzZ0FFRUJPZ0FzSUFBZ0FDOEJNQ0FCY2pzQk1DQVFJUUVNQVFzZ0FDQUFMd0V3UVFoeU93RXdJQkFoQVF0Qk9TRVFETDhCQ3lBQVFRQTZBQ3dnQVNFQkMwRTBJUkFNdlFFTElBQWdBQzhCTUVFZ2Nqc0JNQ0FCSVFFTUFnc2dBQ2dDQkNFRUlBQkJBRFlDQkFKQUlBQWdCQ0FCRUxHQWdJQUFJZ1FOQUNBQklRRU14d0VMSUFCQk56WUNIQ0FBSUFFMkFoUWdBQ0FFTmdJTVFRQWhFQXpVQVFzZ0FFRUlPZ0FzSUFFaEFRdEJNQ0VRRExrQkN3SkFJQUF0QUNoQkFVWU5BQ0FCSVFFTUJBc2dBQzBBTFVFSWNVVU5rd0VnQVNFQkRBTUxJQUF0QURCQklIRU5sQUZCeFFFaEVBeTNBUXNDUUNBUElBSkdEUUFDUUFOQUFrQWdEeTBBQUVGUWFpSUJRZjhCY1VFS1NRMEFJQThoQVVFMUlSQU11Z0VMSUFBcEF5QWlFVUtacytiTW1iUG16QmxXRFFFZ0FDQVJRZ3ArSWhFM0F5QWdFU0FCclVML0FZTWlFa0ovaFZZTkFTQUFJQkVnRW53M0F5QWdEMEVCYWlJUElBSkhEUUFMUVRraEVBelJBUXNnQUNnQ0JDRUNJQUJCQURZQ0JDQUFJQUlnRDBFQmFpSUVFTEdBZ0lBQUlnSU5sUUVnQkNFQkRNTUJDMEU1SVJBTXp3RUxBa0FnQUM4Qk1DSUJRUWh4UlEwQUlBQXRBQ2hCQVVjTkFDQUFMUUF0UVFoeFJRMlFBUXNnQUNBQlFmZjdBM0ZCZ0FSeU93RXdJQThoQVF0Qk55RVFETFFCQ3lBQUlBQXZBVEJCRUhJN0FUQU1xd0VMSUJCQkZVWU5pd0VnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZkNPZ0lBQU5nSVFJQUJCSERZQ0RFRUFJUkFNeXdFTElBQkJ3d0EyQWh3Z0FDQUJOZ0lNSUFBZ0RVRUJhallDRkVFQUlSQU15Z0VMQWtBZ0FTMEFBRUU2UncwQUlBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkN2Z0lDQUFDSVFEUUFnQVVFQmFpRUJER01MSUFCQnd3QTJBaHdnQUNBUU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTXlnRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR3hrWUNBQURZQ0VDQUFRUW8yQWd4QkFDRVFETWtCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCb0ptQWdBQTJBaEFnQUVFZU5nSU1RUUFoRUF6SUFRc2dBRUVBTmdJQUN5QUFRWUFTT3dFcUlBQWdGMEVCYWlJQklBSVFxSUNBZ0FBaUVBMEJJQUVoQVF0Qnh3QWhFQXlzQVFzZ0VFRVZSdzJEQVNBQVFkRUFOZ0ljSUFBZ0FUWUNGQ0FBUWVPWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTXhBRUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERjRMSUFCQjBnQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNd3dFTElBQkJBRFlDSENBQUlCUTJBaFFnQUVIQnFJQ0FBRFlDRUNBQVFRYzJBZ3dnQUVFQU5nSUFRUUFoRUF6Q0FRc2dBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUtlQWdJQUFJaEFOQUNBQklRRU1YUXNnQUVIVEFEWUNIQ0FBSUFFMkFoUWdBQ0FRTmdJTVFRQWhFQXpCQVF0QkFDRVFJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR0FrWUNBQURZQ0VDQUFRUWsyQWd3TXdBRUxJQkJCRlVZTmZTQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQmxJMkFnQUEyQWhBZ0FFRWhOZ0lNUVFBaEVBeS9BUXRCQVNFV1FRQWhGMEVBSVJSQkFTRVFDeUFBSUJBNkFDc2dBVUVCYWlFQkFrQUNRQ0FBTFFBdFFSQnhEUUFDUUFKQUFrQWdBQzBBS2c0REFRQUNCQXNnRmtVTkF3d0NDeUFVRFFFTUFnc2dGMFVOQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFSzJBZ0lBQUloQU5BQ0FCSVFFTVhBc2dBRUhZQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeStBUXNnQUNnQ0JDRUVJQUJCQURZQ0JBSkFJQUFnQkNBQkVLMkFnSUFBSWdRTkFDQUJJUUVNclFFTElBQkIyUUEyQWh3Z0FDQUJOZ0lVSUFBZ0JEWUNERUVBSVJBTXZRRUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDdGdJQ0FBQ0lFRFFBZ0FTRUJES3NCQ3lBQVFkb0FOZ0ljSUFBZ0FUWUNGQ0FBSUFRMkFneEJBQ0VRREx3QkN5QUFLQUlFSVFRZ0FFRUFOZ0lFQWtBZ0FDQUVJQUVRcllDQWdBQWlCQTBBSUFFaEFReXBBUXNnQUVIY0FEWUNIQ0FBSUFFMkFoUWdBQ0FFTmdJTVFRQWhFQXk3QVFzQ1FDQUJMUUFBUVZCcUloQkIvd0Z4UVFwUERRQWdBQ0FRT2dBcUlBRkJBV29oQVVIUEFDRVFES0lCQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVFyWUNBZ0FBaUJBMEFJQUVoQVF5bkFRc2dBRUhlQURZQ0hDQUFJQUUyQWhRZ0FDQUVOZ0lNUVFBaEVBeTZBUXNnQUVFQU5nSUFJQmRCQVdvaEFRSkFJQUF0QUNsQkkwOE5BQ0FCSVFFTVdRc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFkT0pnSUFBTmdJUUlBQkJDRFlDREVFQUlSQU11UUVMSUFCQkFEWUNBQXRCQUNFUUlBQkJBRFlDSENBQUlBRTJBaFFnQUVHUXM0Q0FBRFlDRUNBQVFRZzJBZ3dNdHdFTElBQkJBRFlDQUNBWFFRRnFJUUVDUUNBQUxRQXBRU0ZIRFFBZ0FTRUJERllMSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUdiaW9DQUFEWUNFQ0FBUVFnMkFneEJBQ0VRRExZQkN5QUFRUUEyQWdBZ0YwRUJhaUVCQWtBZ0FDMEFLU0lRUVYxcVFRdFBEUUFnQVNFQkRGVUxBa0FnRUVFR1N3MEFRUUVnRUhSQnlnQnhSUTBBSUFFaEFReFZDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWZlSmdJQUFOZ0lRSUFCQkNEWUNEQXkxQVFzZ0VFRVZSZzF4SUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUc1allDQUFEWUNFQ0FBUVJvMkFneEJBQ0VRRExRQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcDRDQWdBQWlFQTBBSUFFaEFReFVDeUFBUWVVQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFETE1CQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4TkN5QUFRZElBTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURMSUJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXA0Q0FnQUFpRUEwQUlBRWhBUXhOQ3lBQVFkTUFOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRRExFQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcDRDQWdBQWlFQTBBSUFFaEFReFJDeUFBUWVVQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFETEFCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCeG9xQWdBQTJBaEFnQUVFSE5nSU1RUUFoRUF5dkFRc2dBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUtlQWdJQUFJaEFOQUNBQklRRU1TUXNnQUVIU0FEWUNIQ0FBSUFFMkFoUWdBQ0FRTmdJTVFRQWhFQXl1QVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVNRc2dBRUhUQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeXRBUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLZUFnSUFBSWhBTkFDQUJJUUVNVFFzZ0FFSGxBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF5c0FRc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFkeUlnSUFBTmdJUUlBQkJCellDREVFQUlSQU1xd0VMSUJCQlAwY05BU0FCUVFGcUlRRUxRUVVoRUF5UUFRdEJBQ0VRSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUg5a29DQUFEWUNFQ0FBUVFjMkFnd01xQUVMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ25nSUNBQUNJUURRQWdBU0VCREVJTElBQkIwZ0EyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTXB3RUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERUlMSUFCQjB3QTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNcGdFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkNuZ0lDQUFDSVFEUUFnQVNFQkRFWUxJQUJCNVFBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU1wUUVMSUFBb0FnUWhBU0FBUVFBMkFnUUNRQ0FBSUFFZ0ZCQ25nSUNBQUNJQkRRQWdGQ0VCREQ4TElBQkIwZ0EyQWh3Z0FDQVVOZ0lVSUFBZ0FUWUNERUVBSVJBTXBBRUxJQUFvQWdRaEFTQUFRUUEyQWdRQ1FDQUFJQUVnRkJDbmdJQ0FBQ0lCRFFBZ0ZDRUJERDhMSUFCQjB3QTJBaHdnQUNBVU5nSVVJQUFnQVRZQ0RFRUFJUkFNb3dFTElBQW9BZ1FoQVNBQVFRQTJBZ1FDUUNBQUlBRWdGQkNuZ0lDQUFDSUJEUUFnRkNFQkRFTUxJQUJCNVFBMkFod2dBQ0FVTmdJVUlBQWdBVFlDREVFQUlSQU1vZ0VMSUFCQkFEWUNIQ0FBSUJRMkFoUWdBRUhEajRDQUFEWUNFQ0FBUVFjMkFneEJBQ0VRREtFQkN5QUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQnc0K0FnQUEyQWhBZ0FFRUhOZ0lNUVFBaEVBeWdBUXRCQUNFUUlBQkJBRFlDSENBQUlCUTJBaFFnQUVHTW5JQ0FBRFlDRUNBQVFRYzJBZ3dNbndFTElBQkJBRFlDSENBQUlCUTJBaFFnQUVHTW5JQ0FBRFlDRUNBQVFRYzJBZ3hCQUNFUURKNEJDeUFBUVFBMkFod2dBQ0FVTmdJVUlBQkIvcEdBZ0FBMkFoQWdBRUVITmdJTVFRQWhFQXlkQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVk2YmdJQUFOZ0lRSUFCQkJqWUNERUVBSVJBTW5BRUxJQkJCRlVZTlZ5QUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQnpJNkFnQUEyQWhBZ0FFRWdOZ0lNUVFBaEVBeWJBUXNnQUVFQU5nSUFJQkJCQVdvaEFVRWtJUkFMSUFBZ0VEb0FLU0FBS0FJRUlSQWdBRUVBTmdJRUlBQWdFQ0FCRUt1QWdJQUFJaEFOVkNBQklRRU1QZ3NnQUVFQU5nSUFDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0JEWUNGQ0FBUWZHYmdJQUFOZ0lRSUFCQkJqWUNEQXlYQVFzZ0FVRVZSZzFRSUFCQkFEWUNIQ0FBSUFVMkFoUWdBRUh3aklDQUFEWUNFQ0FBUVJzMkFneEJBQ0VRREpZQkN5QUFLQUlFSVFVZ0FFRUFOZ0lFSUFBZ0JTQVFFS21BZ0lBQUlnVU5BU0FRUVFGcUlRVUxRYTBCSVJBTWV3c2dBRUhCQVRZQ0hDQUFJQVUyQWd3Z0FDQVFRUUZxTmdJVVFRQWhFQXlUQVFzZ0FDZ0NCQ0VHSUFCQkFEWUNCQ0FBSUFZZ0VCQ3BnSUNBQUNJR0RRRWdFRUVCYWlFR0MwR3VBU0VRREhnTElBQkJ3Z0UyQWh3Z0FDQUdOZ0lNSUFBZ0VFRUJhallDRkVFQUlSQU1rQUVMSUFCQkFEWUNIQ0FBSUFjMkFoUWdBRUdYaTRDQUFEWUNFQ0FBUVEwMkFneEJBQ0VRREk4QkN5QUFRUUEyQWh3Z0FDQUlOZ0lVSUFCQjQ1Q0FnQUEyQWhBZ0FFRUpOZ0lNUVFBaEVBeU9BUXNnQUVFQU5nSWNJQUFnQ0RZQ0ZDQUFRWlNOZ0lBQU5nSVFJQUJCSVRZQ0RFRUFJUkFNalFFTFFRRWhGa0VBSVJkQkFDRVVRUUVoRUFzZ0FDQVFPZ0FySUFsQkFXb2hDQUpBQWtBZ0FDMEFMVUVRY1EwQUFrQUNRQUpBSUFBdEFDb09Bd0VBQWdRTElCWkZEUU1NQWdzZ0ZBMEJEQUlMSUJkRkRRRUxJQUFvQWdRaEVDQUFRUUEyQWdRZ0FDQVFJQWdRcllDQWdBQWlFRVVOUFNBQVFja0JOZ0ljSUFBZ0NEWUNGQ0FBSUJBMkFneEJBQ0VRREl3QkN5QUFLQUlFSVFRZ0FFRUFOZ0lFSUFBZ0JDQUlFSzJBZ0lBQUlnUkZEWFlnQUVIS0FUWUNIQ0FBSUFnMkFoUWdBQ0FFTmdJTVFRQWhFQXlMQVFzZ0FDZ0NCQ0VFSUFCQkFEWUNCQ0FBSUFRZ0NSQ3RnSUNBQUNJRVJRMTBJQUJCeXdFMkFod2dBQ0FKTmdJVUlBQWdCRFlDREVFQUlSQU1pZ0VMSUFBb0FnUWhCQ0FBUVFBMkFnUWdBQ0FFSUFvUXJZQ0FnQUFpQkVVTmNpQUFRYzBCTmdJY0lBQWdDallDRkNBQUlBUTJBZ3hCQUNFUURJa0JDd0pBSUFzdEFBQkJVR29pRUVIL0FYRkJDazhOQUNBQUlCQTZBQ29nQzBFQmFpRUtRYllCSVJBTWNBc2dBQ2dDQkNFRUlBQkJBRFlDQkNBQUlBUWdDeEN0Z0lDQUFDSUVSUTF3SUFCQnp3RTJBaHdnQUNBTE5nSVVJQUFnQkRZQ0RFRUFJUkFNaUFFTElBQkJBRFlDSENBQUlBUTJBaFFnQUVHUXM0Q0FBRFlDRUNBQVFRZzJBZ3dnQUVFQU5nSUFRUUFoRUF5SEFRc2dBVUVWUmcwL0lBQkJBRFlDSENBQUlBdzJBaFFnQUVITWpvQ0FBRFlDRUNBQVFTQTJBZ3hCQUNFUURJWUJDeUFBUVlFRU93RW9JQUFvQWdRaEVDQUFRZ0EzQXdBZ0FDQVFJQXhCQVdvaURCQ3JnSUNBQUNJUVJRMDRJQUJCMHdFMkFod2dBQ0FNTmdJVUlBQWdFRFlDREVFQUlSQU1oUUVMSUFCQkFEWUNBQXRCQUNFUUlBQkJBRFlDSENBQUlBUTJBaFFnQUVIWW00Q0FBRFlDRUNBQVFRZzJBZ3dNZ3dFTElBQW9BZ1FoRUNBQVFnQTNBd0FnQUNBUUlBdEJBV29pQ3hDcmdJQ0FBQ0lRRFFGQnhnRWhFQXhwQ3lBQVFRSTZBQ2dNVlFzZ0FFSFZBVFlDSENBQUlBczJBaFFnQUNBUU5nSU1RUUFoRUF5QUFRc2dFRUVWUmcwM0lBQkJBRFlDSENBQUlBUTJBaFFnQUVHa2pJQ0FBRFlDRUNBQVFSQTJBZ3hCQUNFUURIOExJQUF0QURSQkFVY05OQ0FBSUFRZ0FoQzhnSUNBQUNJUVJRMDBJQkJCRlVjTk5TQUFRZHdCTmdJY0lBQWdCRFlDRkNBQVFkV1dnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1mZ3RCQUNFUUlBQkJBRFlDSENBQVFhK0xnSUFBTmdJUUlBQkJBallDRENBQUlCUkJBV28yQWhRTWZRdEJBQ0VRREdNTFFRSWhFQXhpQzBFTklSQU1ZUXRCRHlFUURHQUxRU1VoRUF4ZkMwRVRJUkFNWGd0QkZTRVFERjBMUVJZaEVBeGNDMEVYSVJBTVd3dEJHQ0VRREZvTFFSa2hFQXhaQzBFYUlSQU1XQXRCR3lFUURGY0xRUndoRUF4V0MwRWRJUkFNVlF0Qkh5RVFERlFMUVNFaEVBeFRDMEVqSVJBTVVndEJ4Z0FoRUF4UkMwRXVJUkFNVUF0Qkx5RVFERThMUVRzaEVBeE9DMEU5SVJBTVRRdEJ5QUFoRUF4TUMwSEpBQ0VRREVzTFFjc0FJUkFNU2d0QnpBQWhFQXhKQzBIT0FDRVFERWdMUWRFQUlSQU1Sd3RCMVFBaEVBeEdDMEhZQUNFUURFVUxRZGtBSVJBTVJBdEIyd0FoRUF4REMwSGtBQ0VRREVJTFFlVUFJUkFNUVF0QjhRQWhFQXhBQzBIMEFDRVFERDhMUVkwQklSQU1QZ3RCbHdFaEVBdzlDMEdwQVNFUUREd0xRYXdCSVJBTU93dEJ3QUVoRUF3NkMwRzVBU0VRRERrTFFhOEJJUkFNT0F0QnNRRWhFQXczQzBHeUFTRVFERFlMUWJRQklSQU1OUXRCdFFFaEVBdzBDMEc2QVNFUURETUxRYjBCSVJBTU1ndEJ2d0VoRUF3eEMwSEJBU0VRRERBTElBQkJBRFlDSENBQUlBUTJBaFFnQUVIcGk0Q0FBRFlDRUNBQVFSODJBZ3hCQUNFUURFZ0xJQUJCMndFMkFod2dBQ0FFTmdJVUlBQkIrcGFBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXhIQ3lBQVFmZ0FOZ0ljSUFBZ0REWUNGQ0FBUWNxWWdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTVJnc2dBRUhSQURZQ0hDQUFJQVUyQWhRZ0FFR3dsNENBQURZQ0VDQUFRUlUyQWd4QkFDRVFERVVMSUFCQitRQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNUkFzZ0FFSDRBRFlDSENBQUlBRTJBaFFnQUVIS21JQ0FBRFlDRUNBQVFSVTJBZ3hCQUNFUURFTUxJQUJCNUFBMkFod2dBQ0FCTmdJVUlBQkI0NWVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXhDQ3lBQVFkY0FOZ0ljSUFBZ0FUWUNGQ0FBUWNtWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTVFRc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFibU5nSUFBTmdJUUlBQkJHallDREVFQUlSQU1RQXNnQUVIQ0FEWUNIQ0FBSUFFMkFoUWdBRUhqbUlDQUFEWUNFQ0FBUVJVMkFneEJBQ0VRREQ4TElBQkJBRFlDQkNBQUlBOGdEeEN4Z0lDQUFDSUVSUTBCSUFCQk9qWUNIQ0FBSUFRMkFnd2dBQ0FQUVFGcU5nSVVRUUFoRUF3K0N5QUFLQUlFSVFRZ0FFRUFOZ0lFQWtBZ0FDQUVJQUVRc1lDQWdBQWlCRVVOQUNBQVFUczJBaHdnQUNBRU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTVBnc2dBVUVCYWlFQkRDMExJQTlCQVdvaEFRd3RDeUFBUVFBMkFod2dBQ0FQTmdJVUlBQkI1SktBZ0FBMkFoQWdBRUVFTmdJTVFRQWhFQXc3Q3lBQVFUWTJBaHdnQUNBRU5nSVVJQUFnQWpZQ0RFRUFJUkFNT2dzZ0FFRXVOZ0ljSUFBZ0RqWUNGQ0FBSUFRMkFneEJBQ0VRRERrTElBQkIwQUEyQWh3Z0FDQUJOZ0lVSUFCQmtaaUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBdzRDeUFOUVFGcUlRRU1MQXNnQUVFVk5nSWNJQUFnQVRZQ0ZDQUFRWUtaZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTmdzZ0FFRWJOZ0ljSUFBZ0FUWUNGQ0FBUVpHWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTU5Rc2dBRUVQTmdJY0lBQWdBVFlDRkNBQVFaR1hnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1OQXNnQUVFTE5nSWNJQUFnQVRZQ0ZDQUFRWkdYZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTXdzZ0FFRWFOZ0ljSUFBZ0FUWUNGQ0FBUVlLWmdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTU1nc2dBRUVMTmdJY0lBQWdBVFlDRkNBQVFZS1pnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1NUXNnQUVFS05nSWNJQUFnQVRZQ0ZDQUFRZVNXZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTUFzZ0FFRWVOZ0ljSUFBZ0FUWUNGQ0FBUWZtWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTUx3c2dBRUVBTmdJY0lBQWdFRFlDRkNBQVFkcU5nSUFBTmdJUUlBQkJGRFlDREVFQUlSQU1MZ3NnQUVFRU5nSWNJQUFnQVRZQ0ZDQUFRYkNZZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNTFFzZ0FFRUFOZ0lBSUF0QkFXb2hDd3RCdUFFaEVBd1NDeUFBUVFBMkFnQWdFRUVCYWlFQlFmVUFJUkFNRVFzZ0FTRUJBa0FnQUMwQUtVRUZSdzBBUWVNQUlSQU1FUXRCNGdBaEVBd1FDMEVBSVJBZ0FFRUFOZ0ljSUFCQjVKR0FnQUEyQWhBZ0FFRUhOZ0lNSUFBZ0ZFRUJhallDRkF3b0N5QUFRUUEyQWdBZ0YwRUJhaUVCUWNBQUlSQU1EZ3RCQVNFQkN5QUFJQUU2QUN3Z0FFRUFOZ0lBSUJkQkFXb2hBUXRCS0NFUURBc0xJQUVoQVF0Qk9DRVFEQWtMQWtBZ0FTSVBJQUpHRFFBRFFBSkFJQTh0QUFCQmdMNkFnQUJxTFFBQUlnRkJBVVlOQUNBQlFRSkhEUU1nRDBFQmFpRUJEQVFMSUE5QkFXb2lEeUFDUncwQUMwRStJUkFNSWd0QlBpRVFEQ0VMSUFCQkFEb0FMQ0FQSVFFTUFRdEJDeUVRREFZTFFUb2hFQXdGQ3lBQlFRRnFJUUZCTFNFUURBUUxJQUFnQVRvQUxDQUFRUUEyQWdBZ0ZrRUJhaUVCUVF3aEVBd0RDeUFBUVFBMkFnQWdGMEVCYWlFQlFRb2hFQXdDQ3lBQVFRQTJBZ0FMSUFCQkFEb0FMQ0FOSVFGQkNTRVFEQUFMQzBFQUlSQWdBRUVBTmdJY0lBQWdDellDRkNBQVFjMlFnSUFBTmdJUUlBQkJDVFlDREF3WEMwRUFJUkFnQUVFQU5nSWNJQUFnQ2pZQ0ZDQUFRZW1LZ0lBQU5nSVFJQUJCQ1RZQ0RBd1dDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0NUWUNGQ0FBUWJlUWdJQUFOZ0lRSUFCQkNUWUNEQXdWQzBFQUlSQWdBRUVBTmdJY0lBQWdDRFlDRkNBQVFaeVJnSUFBTmdJUUlBQkJDVFlDREF3VUMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRYzJRZ0lBQU5nSVFJQUJCQ1RZQ0RBd1RDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWVtS2dJQUFOZ0lRSUFCQkNUWUNEQXdTQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFiZVFnSUFBTmdJUUlBQkJDVFlDREF3UkMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWnlSZ0lBQU5nSVFJQUJCQ1RZQ0RBd1FDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVplVmdJQUFOZ0lRSUFCQkR6WUNEQXdQQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFaZVZnSUFBTmdJUUlBQkJEellDREF3T0MwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRY0NTZ0lBQU5nSVFJQUJCQ3pZQ0RBd05DMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVpXSmdJQUFOZ0lRSUFCQkN6WUNEQXdNQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFlR1BnSUFBTmdJUUlBQkJDallDREF3TEMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZnVQZ0lBQU5nSVFJQUJCQ2pZQ0RBd0tDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWZHWmdJQUFOZ0lRSUFCQkFqWUNEQXdKQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFjU1VnSUFBTmdJUUlBQkJBallDREF3SUMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRZktWZ0lBQU5nSVFJQUJCQWpZQ0RBd0hDeUFBUVFJMkFod2dBQ0FCTmdJVUlBQkJuSnFBZ0FBMkFoQWdBRUVXTmdJTVFRQWhFQXdHQzBFQklSQU1CUXRCMUFBaEVDQUJJZ1FnQWtZTkJDQURRUWhxSUFBZ0JDQUNRZGpDZ0lBQVFRb1F4WUNBZ0FBZ0F5Z0NEQ0VFSUFNb0FnZ09Bd0VFQWdBTEVNcUFnSUFBQUFzZ0FFRUFOZ0ljSUFCQnRacUFnQUEyQWhBZ0FFRVhOZ0lNSUFBZ0JFRUJhallDRkVFQUlSQU1BZ3NnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRY3FhZ0lBQU5nSVFJQUJCQ1RZQ0RFRUFJUkFNQVFzQ1FDQUJJZ1FnQWtjTkFFRWlJUkFNQVFzZ0FFR0pnSUNBQURZQ0NDQUFJQVEyQWdSQklTRVFDeUFEUVJCcUpJQ0FnSUFBSUJBTHJ3RUJBbjhnQVNnQ0FDRUdBa0FDUUNBQ0lBTkdEUUFnQkNBR2FpRUVJQVlnQTJvZ0Ftc2hCeUFDSUFaQmYzTWdCV29pQm1vaEJRTkFBa0FnQWkwQUFDQUVMUUFBUmcwQVFRSWhCQXdEQ3dKQUlBWU5BRUVBSVFRZ0JTRUNEQU1MSUFaQmYyb2hCaUFFUVFGcUlRUWdBa0VCYWlJQ0lBTkhEUUFMSUFjaEJpQURJUUlMSUFCQkFUWUNBQ0FCSUFZMkFnQWdBQ0FDTmdJRUR3c2dBVUVBTmdJQUlBQWdCRFlDQUNBQUlBSTJBZ1FMQ2dBZ0FCREhnSUNBQUF2eU5nRUxmeU9BZ0lDQUFFRVFheUlCSklDQWdJQUFBa0JCQUNnQ29OQ0FnQUFOQUVFQUVNdUFnSUFBUVlEVWhJQUFheUlDUWRrQVNRMEFRUUFoQXdKQVFRQW9BdURUZ0lBQUlnUU5BRUVBUW44M0F1elRnSUFBUVFCQ2dJQ0VnSUNBd0FBM0F1VFRnSUFBUVFBZ0FVRUlha0Z3Y1VIWXF0V3FCWE1pQkRZQzROT0FnQUJCQUVFQU5nTDAwNENBQUVFQVFRQTJBc1RUZ0lBQUMwRUFJQUkyQXN6VGdJQUFRUUJCZ05TRWdBQTJBc2pUZ0lBQVFRQkJnTlNFZ0FBMkFwalFnSUFBUVFBZ0JEWUNyTkNBZ0FCQkFFRi9OZ0tvMElDQUFBTkFJQU5CeE5DQWdBQnFJQU5CdU5DQWdBQnFJZ1EyQWdBZ0JDQURRYkRRZ0lBQWFpSUZOZ0lBSUFOQnZOQ0FnQUJxSUFVMkFnQWdBMEhNMElDQUFHb2dBMEhBMElDQUFHb2lCVFlDQUNBRklBUTJBZ0FnQTBIVTBJQ0FBR29nQTBISTBJQ0FBR29pQkRZQ0FDQUVJQVUyQWdBZ0EwSFEwSUNBQUdvZ0JEWUNBQ0FEUVNCcUlnTkJnQUpIRFFBTFFZRFVoSUFBUVhoQmdOU0VnQUJyUVE5eFFRQkJnTlNFZ0FCQkNHcEJEM0ViSWdOcUlnUkJCR29nQWtGSWFpSUZJQU5ySWdOQkFYSTJBZ0JCQUVFQUtBTHcwNENBQURZQ3BOQ0FnQUJCQUNBRE5nS1UwSUNBQUVFQUlBUTJBcURRZ0lBQVFZRFVoSUFBSUFWcVFUZzJBZ1FMQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCN0FGTERRQUNRRUVBS0FLSTBJQ0FBQ0lHUVJBZ0FFRVRha0Z3Y1NBQVFRdEpHeUlDUVFOMklnUjJJZ05CQTNGRkRRQUNRQUpBSUFOQkFYRWdCSEpCQVhNaUJVRURkQ0lFUWJEUWdJQUFhaUlESUFSQnVOQ0FnQUJxS0FJQUlnUW9BZ2dpQWtjTkFFRUFJQVpCZmlBRmQzRTJBb2pRZ0lBQURBRUxJQU1nQWpZQ0NDQUNJQU0yQWd3TElBUkJDR29oQXlBRUlBVkJBM1FpQlVFRGNqWUNCQ0FFSUFWcUlnUWdCQ2dDQkVFQmNqWUNCQXdNQ3lBQ1FRQW9BcERRZ0lBQUlnZE5EUUVDUUNBRFJRMEFBa0FDUUNBRElBUjBRUUlnQkhRaUEwRUFJQU5yY25FaUEwRUFJQU5yY1VGL2FpSURJQU5CREhaQkVIRWlBM1lpQkVFRmRrRUljU0lGSUFOeUlBUWdCWFlpQTBFQ2RrRUVjU0lFY2lBRElBUjJJZ05CQVhaQkFuRWlCSElnQXlBRWRpSURRUUYyUVFGeElnUnlJQU1nQkhacUlnUkJBM1FpQTBHdzBJQ0FBR29pQlNBRFFialFnSUFBYWlnQ0FDSURLQUlJSWdCSERRQkJBQ0FHUVg0Z0JIZHhJZ1kyQW9qUWdJQUFEQUVMSUFVZ0FEWUNDQ0FBSUFVMkFnd0xJQU1nQWtFRGNqWUNCQ0FESUFSQkEzUWlCR29nQkNBQ2F5SUZOZ0lBSUFNZ0Ftb2lBQ0FGUVFGeU5nSUVBa0FnQjBVTkFDQUhRWGh4UWJEUWdJQUFhaUVDUVFBb0FwelFnSUFBSVFRQ1FBSkFJQVpCQVNBSFFRTjJkQ0lJY1EwQVFRQWdCaUFJY2pZQ2lOQ0FnQUFnQWlFSURBRUxJQUlvQWdnaENBc2dDQ0FFTmdJTUlBSWdCRFlDQ0NBRUlBSTJBZ3dnQkNBSU5nSUlDeUFEUVFocUlRTkJBQ0FBTmdLYzBJQ0FBRUVBSUFVMkFwRFFnSUFBREF3TFFRQW9Bb3pRZ0lBQUlnbEZEUUVnQ1VFQUlBbHJjVUYvYWlJRElBTkJESFpCRUhFaUEzWWlCRUVGZGtFSWNTSUZJQU55SUFRZ0JYWWlBMEVDZGtFRWNTSUVjaUFESUFSMklnTkJBWFpCQW5FaUJISWdBeUFFZGlJRFFRRjJRUUZ4SWdSeUlBTWdCSFpxUVFKMFFialNnSUFBYWlnQ0FDSUFLQUlFUVhoeElBSnJJUVFnQUNFRkFrQURRQUpBSUFVb0FoQWlBdzBBSUFWQkZHb29BZ0FpQTBVTkFnc2dBeWdDQkVGNGNTQUNheUlGSUFRZ0JTQUVTU0lGR3lFRUlBTWdBQ0FGR3lFQUlBTWhCUXdBQ3dzZ0FDZ0NHQ0VLQWtBZ0FDZ0NEQ0lJSUFCR0RRQWdBQ2dDQ0NJRFFRQW9BcGpRZ0lBQVNSb2dDQ0FETmdJSUlBTWdDRFlDREF3TEN3SkFJQUJCRkdvaUJTZ0NBQ0lERFFBZ0FDZ0NFQ0lEUlEwRElBQkJFR29oQlFzRFFDQUZJUXNnQXlJSVFSUnFJZ1VvQWdBaUF3MEFJQWhCRUdvaEJTQUlLQUlRSWdNTkFBc2dDMEVBTmdJQURBb0xRWDhoQWlBQVFiOS9TdzBBSUFCQkUyb2lBMEZ3Y1NFQ1FRQW9Bb3pRZ0lBQUlnZEZEUUJCQUNFTEFrQWdBa0dBQWtrTkFFRWZJUXNnQWtILy8vOEhTdzBBSUFOQkNIWWlBeUFEUVlEK1AycEJFSFpCQ0hFaUEzUWlCQ0FFUVlEZ0gycEJFSFpCQkhFaUJIUWlCU0FGUVlDQUQycEJFSFpCQW5FaUJYUkJEM1lnQXlBRWNpQUZjbXNpQTBFQmRDQUNJQU5CRldwMlFRRnhja0VjYWlFTEMwRUFJQUpySVFRQ1FBSkFBa0FDUUNBTFFRSjBRYmpTZ0lBQWFpZ0NBQ0lGRFFCQkFDRURRUUFoQ0F3QkMwRUFJUU1nQWtFQVFSa2dDMEVCZG1zZ0MwRWZSaHQwSVFCQkFDRUlBMEFDUUNBRktBSUVRWGh4SUFKcklnWWdCRThOQUNBR0lRUWdCU0VJSUFZTkFFRUFJUVFnQlNFSUlBVWhBd3dEQ3lBRElBVkJGR29vQWdBaUJpQUdJQVVnQUVFZGRrRUVjV3BCRUdvb0FnQWlCVVliSUFNZ0Joc2hBeUFBUVFGMElRQWdCUTBBQ3dzQ1FDQURJQWh5RFFCQkFDRUlRUUlnQzNRaUEwRUFJQU5yY2lBSGNTSURSUTBESUFOQkFDQURhM0ZCZjJvaUF5QURRUXgyUVJCeElnTjJJZ1ZCQlhaQkNIRWlBQ0FEY2lBRklBQjJJZ05CQW5aQkJIRWlCWElnQXlBRmRpSURRUUYyUVFKeElnVnlJQU1nQlhZaUEwRUJka0VCY1NJRmNpQURJQVYyYWtFQ2RFRzQwb0NBQUdvb0FnQWhBd3NnQTBVTkFRc0RRQ0FES0FJRVFYaHhJQUpySWdZZ0JFa2hBQUpBSUFNb0FoQWlCUTBBSUFOQkZHb29BZ0FoQlFzZ0JpQUVJQUFiSVFRZ0F5QUlJQUFiSVFnZ0JTRURJQVVOQUFzTElBaEZEUUFnQkVFQUtBS1EwSUNBQUNBQ2EwOE5BQ0FJS0FJWUlRc0NRQ0FJS0FJTUlnQWdDRVlOQUNBSUtBSUlJZ05CQUNnQ21OQ0FnQUJKR2lBQUlBTTJBZ2dnQXlBQU5nSU1EQWtMQWtBZ0NFRVVhaUlGS0FJQUlnTU5BQ0FJS0FJUUlnTkZEUU1nQ0VFUWFpRUZDd05BSUFVaEJpQURJZ0JCRkdvaUJTZ0NBQ0lERFFBZ0FFRVFhaUVGSUFBb0FoQWlBdzBBQ3lBR1FRQTJBZ0FNQ0FzQ1FFRUFLQUtRMElDQUFDSURJQUpKRFFCQkFDZ0NuTkNBZ0FBaEJBSkFBa0FnQXlBQ2F5SUZRUkJKRFFBZ0JDQUNhaUlBSUFWQkFYSTJBZ1JCQUNBRk5nS1EwSUNBQUVFQUlBQTJBcHpRZ0lBQUlBUWdBMm9nQlRZQ0FDQUVJQUpCQTNJMkFnUU1BUXNnQkNBRFFRTnlOZ0lFSUFRZ0Eyb2lBeUFES0FJRVFRRnlOZ0lFUVFCQkFEWUNuTkNBZ0FCQkFFRUFOZ0tRMElDQUFBc2dCRUVJYWlFRERBb0xBa0JCQUNnQ2xOQ0FnQUFpQUNBQ1RRMEFRUUFvQXFEUWdJQUFJZ01nQW1vaUJDQUFJQUpySWdWQkFYSTJBZ1JCQUNBRk5nS1UwSUNBQUVFQUlBUTJBcURRZ0lBQUlBTWdBa0VEY2pZQ0JDQURRUWhxSVFNTUNnc0NRQUpBUVFBb0F1RFRnSUFBUlEwQVFRQW9BdWpUZ0lBQUlRUU1BUXRCQUVKL053THMwNENBQUVFQVFvQ0FoSUNBZ01BQU53TGswNENBQUVFQUlBRkJER3BCY0hGQjJLclZxZ1Z6TmdMZzA0Q0FBRUVBUVFBMkF2VFRnSUFBUVFCQkFEWUN4Tk9BZ0FCQmdJQUVJUVFMUVFBaEF3SkFJQVFnQWtISEFHb2lCMm9pQmtFQUlBUnJJZ3R4SWdnZ0Frc05BRUVBUVRBMkF2alRnSUFBREFvTEFrQkJBQ2dDd05PQWdBQWlBMFVOQUFKQVFRQW9BcmpUZ0lBQUlnUWdDR29pQlNBRVRRMEFJQVVnQTAwTkFRdEJBQ0VEUVFCQk1EWUMrTk9BZ0FBTUNndEJBQzBBeE5PQWdBQkJCSEVOQkFKQUFrQUNRRUVBS0FLZzBJQ0FBQ0lFUlEwQVFjalRnSUFBSVFNRFFBSkFJQU1vQWdBaUJTQUVTdzBBSUFVZ0F5Z0NCR29nQkVzTkF3c2dBeWdDQ0NJRERRQUxDMEVBRU11QWdJQUFJZ0JCZjBZTkJTQUlJUVlDUUVFQUtBTGswNENBQUNJRFFYOXFJZ1FnQUhGRkRRQWdDQ0FBYXlBRUlBQnFRUUFnQTJ0eGFpRUdDeUFHSUFKTkRRVWdCa0grLy8vL0Iwc05CUUpBUVFBb0FzRFRnSUFBSWdORkRRQkJBQ2dDdU5PQWdBQWlCQ0FHYWlJRklBUk5EUVlnQlNBRFN3MEdDeUFHRU11QWdJQUFJZ01nQUVjTkFRd0hDeUFHSUFCcklBdHhJZ1pCL3YvLy93ZExEUVFnQmhETGdJQ0FBQ0lBSUFNb0FnQWdBeWdDQkdwR0RRTWdBQ0VEQ3dKQUlBTkJmMFlOQUNBQ1FjZ0FhaUFHVFEwQUFrQWdCeUFHYTBFQUtBTG8wNENBQUNJRWFrRUFJQVJyY1NJRVFmNy8vLzhIVFEwQUlBTWhBQXdIQ3dKQUlBUVF5NENBZ0FCQmYwWU5BQ0FFSUFacUlRWWdBeUVBREFjTFFRQWdCbXNReTRDQWdBQWFEQVFMSUFNaEFDQURRWDlIRFFVTUF3dEJBQ0VJREFjTFFRQWhBQXdGQ3lBQVFYOUhEUUlMUVFCQkFDZ0N4Tk9BZ0FCQkJISTJBc1RUZ0lBQUN5QUlRZjcvLy84SFN3MEJJQWdReTRDQWdBQWhBRUVBRU11QWdJQUFJUU1nQUVGL1JnMEJJQU5CZjBZTkFTQUFJQU5QRFFFZ0F5QUFheUlHSUFKQk9HcE5EUUVMUVFCQkFDZ0N1Tk9BZ0FBZ0Jtb2lBellDdU5PQWdBQUNRQ0FEUVFBb0FyelRnSUFBVFEwQVFRQWdBellDdk5PQWdBQUxBa0FDUUFKQUFrQkJBQ2dDb05DQWdBQWlCRVVOQUVISTA0Q0FBQ0VEQTBBZ0FDQURLQUlBSWdVZ0F5Z0NCQ0lJYWtZTkFpQURLQUlJSWdNTkFBd0RDd3NDUUFKQVFRQW9BcGpRZ0lBQUlnTkZEUUFnQUNBRFR3MEJDMEVBSUFBMkFwalFnSUFBQzBFQUlRTkJBQ0FHTmdMTTA0Q0FBRUVBSUFBMkFzalRnSUFBUVFCQmZ6WUNxTkNBZ0FCQkFFRUFLQUxnMDRDQUFEWUNyTkNBZ0FCQkFFRUFOZ0xVMDRDQUFBTkFJQU5CeE5DQWdBQnFJQU5CdU5DQWdBQnFJZ1EyQWdBZ0JDQURRYkRRZ0lBQWFpSUZOZ0lBSUFOQnZOQ0FnQUJxSUFVMkFnQWdBMEhNMElDQUFHb2dBMEhBMElDQUFHb2lCVFlDQUNBRklBUTJBZ0FnQTBIVTBJQ0FBR29nQTBISTBJQ0FBR29pQkRZQ0FDQUVJQVUyQWdBZ0EwSFEwSUNBQUdvZ0JEWUNBQ0FEUVNCcUlnTkJnQUpIRFFBTElBQkJlQ0FBYTBFUGNVRUFJQUJCQ0dwQkQzRWJJZ05xSWdRZ0JrRklhaUlGSUFOcklnTkJBWEkyQWdSQkFFRUFLQUx3MDRDQUFEWUNwTkNBZ0FCQkFDQUROZ0tVMElDQUFFRUFJQVEyQXFEUWdJQUFJQUFnQldwQk9EWUNCQXdDQ3lBRExRQU1RUWh4RFFBZ0JDQUZTUTBBSUFRZ0FFOE5BQ0FFUVhnZ0JHdEJEM0ZCQUNBRVFRaHFRUTl4R3lJRmFpSUFRUUFvQXBUUWdJQUFJQVpxSWdzZ0JXc2lCVUVCY2pZQ0JDQURJQWdnQm1vMkFnUkJBRUVBS0FMdzA0Q0FBRFlDcE5DQWdBQkJBQ0FGTmdLVTBJQ0FBRUVBSUFBMkFxRFFnSUFBSUFRZ0MycEJPRFlDQkF3QkN3SkFJQUJCQUNnQ21OQ0FnQUFpQ0U4TkFFRUFJQUEyQXBqUWdJQUFJQUFoQ0FzZ0FDQUdhaUVGUWNqVGdJQUFJUU1DUUFKQUFrQUNRQUpBQWtBQ1FBTkFJQU1vQWdBZ0JVWU5BU0FES0FJSUlnTU5BQXdDQ3dzZ0F5MEFERUVJY1VVTkFRdEJ5Tk9BZ0FBaEF3TkFBa0FnQXlnQ0FDSUZJQVJMRFFBZ0JTQURLQUlFYWlJRklBUkxEUU1MSUFNb0FnZ2hBd3dBQ3dzZ0F5QUFOZ0lBSUFNZ0F5Z0NCQ0FHYWpZQ0JDQUFRWGdnQUd0QkQzRkJBQ0FBUVFocVFROXhHMm9pQ3lBQ1FRTnlOZ0lFSUFWQmVDQUZhMEVQY1VFQUlBVkJDR3BCRDNFYmFpSUdJQXNnQW1vaUFtc2hBd0pBSUFZZ0JFY05BRUVBSUFJMkFxRFFnSUFBUVFCQkFDZ0NsTkNBZ0FBZ0Eyb2lBellDbE5DQWdBQWdBaUFEUVFGeU5nSUVEQU1MQWtBZ0JrRUFLQUtjMElDQUFFY05BRUVBSUFJMkFwelFnSUFBUVFCQkFDZ0NrTkNBZ0FBZ0Eyb2lBellDa05DQWdBQWdBaUFEUVFGeU5nSUVJQUlnQTJvZ0F6WUNBQXdEQ3dKQUlBWW9BZ1FpQkVFRGNVRUJSdzBBSUFSQmVIRWhCd0pBQWtBZ0JFSC9BVXNOQUNBR0tBSUlJZ1VnQkVFRGRpSUlRUU4wUWJEUWdJQUFhaUlBUmhvQ1FDQUdLQUlNSWdRZ0JVY05BRUVBUVFBb0FvalFnSUFBUVg0Z0NIZHhOZ0tJMElDQUFBd0NDeUFFSUFCR0dpQUVJQVUyQWdnZ0JTQUVOZ0lNREFFTElBWW9BaGdoQ1FKQUFrQWdCaWdDRENJQUlBWkdEUUFnQmlnQ0NDSUVJQWhKR2lBQUlBUTJBZ2dnQkNBQU5nSU1EQUVMQWtBZ0JrRVVhaUlFS0FJQUlnVU5BQ0FHUVJCcUlnUW9BZ0FpQlEwQVFRQWhBQXdCQ3dOQUlBUWhDQ0FGSWdCQkZHb2lCQ2dDQUNJRkRRQWdBRUVRYWlFRUlBQW9BaEFpQlEwQUN5QUlRUUEyQWdBTElBbEZEUUFDUUFKQUlBWWdCaWdDSENJRlFRSjBRYmpTZ0lBQWFpSUVLQUlBUncwQUlBUWdBRFlDQUNBQURRRkJBRUVBS0FLTTBJQ0FBRUYrSUFWM2NUWUNqTkNBZ0FBTUFnc2dDVUVRUVJRZ0NTZ0NFQ0FHUmh0cUlBQTJBZ0FnQUVVTkFRc2dBQ0FKTmdJWUFrQWdCaWdDRUNJRVJRMEFJQUFnQkRZQ0VDQUVJQUEyQWhnTElBWW9BaFFpQkVVTkFDQUFRUlJxSUFRMkFnQWdCQ0FBTmdJWUN5QUhJQU5xSVFNZ0JpQUhhaUlHS0FJRUlRUUxJQVlnQkVGK2NUWUNCQ0FDSUFOcUlBTTJBZ0FnQWlBRFFRRnlOZ0lFQWtBZ0EwSC9BVXNOQUNBRFFYaHhRYkRRZ0lBQWFpRUVBa0FDUUVFQUtBS0kwSUNBQUNJRlFRRWdBMEVEZG5RaUEzRU5BRUVBSUFVZ0EzSTJBb2pRZ0lBQUlBUWhBd3dCQ3lBRUtBSUlJUU1MSUFNZ0FqWUNEQ0FFSUFJMkFnZ2dBaUFFTmdJTUlBSWdBellDQ0F3REMwRWZJUVFDUUNBRFFmLy8vd2RMRFFBZ0EwRUlkaUlFSUFSQmdQNC9ha0VRZGtFSWNTSUVkQ0lGSUFWQmdPQWZha0VRZGtFRWNTSUZkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBRUlBVnlJQUJ5YXlJRVFRRjBJQU1nQkVFVmFuWkJBWEZ5UVJ4cUlRUUxJQUlnQkRZQ0hDQUNRZ0EzQWhBZ0JFRUNkRUc0MG9DQUFHb2hCUUpBUVFBb0FvelFnSUFBSWdCQkFTQUVkQ0lJY1EwQUlBVWdBallDQUVFQUlBQWdDSEkyQW96UWdJQUFJQUlnQlRZQ0dDQUNJQUkyQWdnZ0FpQUNOZ0lNREFNTElBTkJBRUVaSUFSQkFYWnJJQVJCSDBZYmRDRUVJQVVvQWdBaEFBTkFJQUFpQlNnQ0JFRjRjU0FEUmcwQ0lBUkJIWFloQUNBRVFRRjBJUVFnQlNBQVFRUnhha0VRYWlJSUtBSUFJZ0FOQUFzZ0NDQUNOZ0lBSUFJZ0JUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBSUxJQUJCZUNBQWEwRVBjVUVBSUFCQkNHcEJEM0ViSWdOcUlnc2dCa0ZJYWlJSUlBTnJJZ05CQVhJMkFnUWdBQ0FJYWtFNE5nSUVJQVFnQlVFM0lBVnJRUTl4UVFBZ0JVRkpha0VQY1J0cVFVRnFJZ2dnQ0NBRVFSQnFTUnNpQ0VFak5nSUVRUUJCQUNnQzhOT0FnQUEyQXFUUWdJQUFRUUFnQXpZQ2xOQ0FnQUJCQUNBTE5nS2cwSUNBQUNBSVFSQnFRUUFwQXREVGdJQUFOd0lBSUFoQkFDa0N5Tk9BZ0FBM0FnaEJBQ0FJUVFocU5nTFEwNENBQUVFQUlBWTJBc3pUZ0lBQVFRQWdBRFlDeU5PQWdBQkJBRUVBTmdMVTA0Q0FBQ0FJUVNScUlRTURRQ0FEUVFjMkFnQWdBMEVFYWlJRElBVkpEUUFMSUFnZ0JFWU5BeUFJSUFnb0FnUkJmbkUyQWdRZ0NDQUlJQVJySWdBMkFnQWdCQ0FBUVFGeU5nSUVBa0FnQUVIL0FVc05BQ0FBUVhoeFFiRFFnSUFBYWlFREFrQUNRRUVBS0FLSTBJQ0FBQ0lGUVFFZ0FFRURkblFpQUhFTkFFRUFJQVVnQUhJMkFvalFnSUFBSUFNaEJRd0JDeUFES0FJSUlRVUxJQVVnQkRZQ0RDQURJQVEyQWdnZ0JDQUROZ0lNSUFRZ0JUWUNDQXdFQzBFZklRTUNRQ0FBUWYvLy93ZExEUUFnQUVFSWRpSURJQU5CZ1A0L2FrRVFka0VJY1NJRGRDSUZJQVZCZ09BZmFrRVFka0VFY1NJRmRDSUlJQWhCZ0lBUGFrRVFka0VDY1NJSWRFRVBkaUFESUFWeUlBaHlheUlEUVFGMElBQWdBMEVWYW5aQkFYRnlRUnhxSVFNTElBUWdBellDSENBRVFnQTNBaEFnQTBFQ2RFRzQwb0NBQUdvaEJRSkFRUUFvQW96UWdJQUFJZ2hCQVNBRGRDSUdjUTBBSUFVZ0JEWUNBRUVBSUFnZ0JuSTJBb3pRZ0lBQUlBUWdCVFlDR0NBRUlBUTJBZ2dnQkNBRU5nSU1EQVFMSUFCQkFFRVpJQU5CQVhacklBTkJIMFliZENFRElBVW9BZ0FoQ0FOQUlBZ2lCU2dDQkVGNGNTQUFSZzBESUFOQkhYWWhDQ0FEUVFGMElRTWdCU0FJUVFSeGFrRVFhaUlHS0FJQUlnZ05BQXNnQmlBRU5nSUFJQVFnQlRZQ0dDQUVJQVEyQWd3Z0JDQUVOZ0lJREFNTElBVW9BZ2dpQXlBQ05nSU1JQVVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUZOZ0lNSUFJZ0F6WUNDQXNnQzBFSWFpRUREQVVMSUFVb0FnZ2lBeUFFTmdJTUlBVWdCRFlDQ0NBRVFRQTJBaGdnQkNBRk5nSU1JQVFnQXpZQ0NBdEJBQ2dDbE5DQWdBQWlBeUFDVFEwQVFRQW9BcURRZ0lBQUlnUWdBbW9pQlNBRElBSnJJZ05CQVhJMkFnUkJBQ0FETmdLVTBJQ0FBRUVBSUFVMkFxRFFnSUFBSUFRZ0FrRURjallDQkNBRVFRaHFJUU1NQXd0QkFDRURRUUJCTURZQytOT0FnQUFNQWdzQ1FDQUxSUTBBQWtBQ1FDQUlJQWdvQWh3aUJVRUNkRUc0MG9DQUFHb2lBeWdDQUVjTkFDQURJQUEyQWdBZ0FBMEJRUUFnQjBGK0lBVjNjU0lITmdLTTBJQ0FBQXdDQ3lBTFFSQkJGQ0FMS0FJUUlBaEdHMm9nQURZQ0FDQUFSUTBCQ3lBQUlBczJBaGdDUUNBSUtBSVFJZ05GRFFBZ0FDQUROZ0lRSUFNZ0FEWUNHQXNnQ0VFVWFpZ0NBQ0lEUlEwQUlBQkJGR29nQXpZQ0FDQURJQUEyQWhnTEFrQUNRQ0FFUVE5TERRQWdDQ0FFSUFKcUlnTkJBM0kyQWdRZ0NDQURhaUlESUFNb0FnUkJBWEkyQWdRTUFRc2dDQ0FDYWlJQUlBUkJBWEkyQWdRZ0NDQUNRUU55TmdJRUlBQWdCR29nQkRZQ0FBSkFJQVJCL3dGTERRQWdCRUY0Y1VHdzBJQ0FBR29oQXdKQUFrQkJBQ2dDaU5DQWdBQWlCVUVCSUFSQkEzWjBJZ1J4RFFCQkFDQUZJQVJ5TmdLSTBJQ0FBQ0FESVFRTUFRc2dBeWdDQ0NFRUN5QUVJQUEyQWd3Z0F5QUFOZ0lJSUFBZ0F6WUNEQ0FBSUFRMkFnZ01BUXRCSHlFREFrQWdCRUgvLy84SFN3MEFJQVJCQ0hZaUF5QURRWUQrUDJwQkVIWkJDSEVpQTNRaUJTQUZRWURnSDJwQkVIWkJCSEVpQlhRaUFpQUNRWUNBRDJwQkVIWkJBbkVpQW5SQkQzWWdBeUFGY2lBQ2Ntc2lBMEVCZENBRUlBTkJGV3AyUVFGeGNrRWNhaUVEQ3lBQUlBTTJBaHdnQUVJQU53SVFJQU5CQW5SQnVOS0FnQUJxSVFVQ1FDQUhRUUVnQTNRaUFuRU5BQ0FGSUFBMkFnQkJBQ0FISUFKeU5nS00wSUNBQUNBQUlBVTJBaGdnQUNBQU5nSUlJQUFnQURZQ0RBd0JDeUFFUVFCQkdTQURRUUYyYXlBRFFSOUdHM1FoQXlBRktBSUFJUUlDUUFOQUlBSWlCU2dDQkVGNGNTQUVSZzBCSUFOQkhYWWhBaUFEUVFGMElRTWdCU0FDUVFSeGFrRVFhaUlHS0FJQUlnSU5BQXNnQmlBQU5nSUFJQUFnQlRZQ0dDQUFJQUEyQWd3Z0FDQUFOZ0lJREFFTElBVW9BZ2dpQXlBQU5nSU1JQVVnQURZQ0NDQUFRUUEyQWhnZ0FDQUZOZ0lNSUFBZ0F6WUNDQXNnQ0VFSWFpRUREQUVMQWtBZ0NrVU5BQUpBQWtBZ0FDQUFLQUljSWdWQkFuUkJ1TktBZ0FCcUlnTW9BZ0JIRFFBZ0F5QUlOZ0lBSUFnTkFVRUFJQWxCZmlBRmQzRTJBb3pRZ0lBQURBSUxJQXBCRUVFVUlBb29BaEFnQUVZYmFpQUlOZ0lBSUFoRkRRRUxJQWdnQ2pZQ0dBSkFJQUFvQWhBaUEwVU5BQ0FJSUFNMkFoQWdBeUFJTmdJWUN5QUFRUlJxS0FJQUlnTkZEUUFnQ0VFVWFpQUROZ0lBSUFNZ0NEWUNHQXNDUUFKQUlBUkJEMHNOQUNBQUlBUWdBbW9pQTBFRGNqWUNCQ0FBSUFOcUlnTWdBeWdDQkVFQmNqWUNCQXdCQ3lBQUlBSnFJZ1VnQkVFQmNqWUNCQ0FBSUFKQkEzSTJBZ1FnQlNBRWFpQUVOZ0lBQWtBZ0IwVU5BQ0FIUVhoeFFiRFFnSUFBYWlFQ1FRQW9BcHpRZ0lBQUlRTUNRQUpBUVFFZ0IwRURkblFpQ0NBR2NRMEFRUUFnQ0NBR2NqWUNpTkNBZ0FBZ0FpRUlEQUVMSUFJb0FnZ2hDQXNnQ0NBRE5nSU1JQUlnQXpZQ0NDQURJQUkyQWd3Z0F5QUlOZ0lJQzBFQUlBVTJBcHpRZ0lBQVFRQWdCRFlDa05DQWdBQUxJQUJCQ0dvaEF3c2dBVUVRYWlTQWdJQ0FBQ0FEQ3dvQUlBQVF5WUNBZ0FBTDRnMEJCMzhDUUNBQVJRMEFJQUJCZUdvaUFTQUFRWHhxS0FJQUlnSkJlSEVpQUdvaEF3SkFJQUpCQVhFTkFDQUNRUU54UlEwQklBRWdBU2dDQUNJQ2F5SUJRUUFvQXBqUWdJQUFJZ1JKRFFFZ0FpQUFhaUVBQWtBZ0FVRUFLQUtjMElDQUFFWU5BQUpBSUFKQi93RkxEUUFnQVNnQ0NDSUVJQUpCQTNZaUJVRURkRUd3MElDQUFHb2lCa1lhQWtBZ0FTZ0NEQ0lDSUFSSERRQkJBRUVBS0FLSTBJQ0FBRUYrSUFWM2NUWUNpTkNBZ0FBTUF3c2dBaUFHUmhvZ0FpQUVOZ0lJSUFRZ0FqWUNEQXdDQ3lBQktBSVlJUWNDUUFKQUlBRW9BZ3dpQmlBQlJnMEFJQUVvQWdnaUFpQUVTUm9nQmlBQ05nSUlJQUlnQmpZQ0RBd0JDd0pBSUFGQkZHb2lBaWdDQUNJRURRQWdBVUVRYWlJQ0tBSUFJZ1FOQUVFQUlRWU1BUXNEUUNBQ0lRVWdCQ0lHUVJScUlnSW9BZ0FpQkEwQUlBWkJFR29oQWlBR0tBSVFJZ1FOQUFzZ0JVRUFOZ0lBQ3lBSFJRMEJBa0FDUUNBQklBRW9BaHdpQkVFQ2RFRzQwb0NBQUdvaUFpZ0NBRWNOQUNBQ0lBWTJBZ0FnQmcwQlFRQkJBQ2dDak5DQWdBQkJmaUFFZDNFMkFvelFnSUFBREFNTElBZEJFRUVVSUFjb0FoQWdBVVliYWlBR05nSUFJQVpGRFFJTElBWWdCellDR0FKQUlBRW9BaEFpQWtVTkFDQUdJQUkyQWhBZ0FpQUdOZ0lZQ3lBQktBSVVJZ0pGRFFFZ0JrRVVhaUFDTmdJQUlBSWdCallDR0F3QkN5QURLQUlFSWdKQkEzRkJBMGNOQUNBRElBSkJmbkUyQWdSQkFDQUFOZ0tRMElDQUFDQUJJQUJxSUFBMkFnQWdBU0FBUVFGeU5nSUVEd3NnQVNBRFR3MEFJQU1vQWdRaUFrRUJjVVVOQUFKQUFrQWdBa0VDY1EwQUFrQWdBMEVBS0FLZzBJQ0FBRWNOQUVFQUlBRTJBcURRZ0lBQVFRQkJBQ2dDbE5DQWdBQWdBR29pQURZQ2xOQ0FnQUFnQVNBQVFRRnlOZ0lFSUFGQkFDZ0NuTkNBZ0FCSERRTkJBRUVBTmdLUTBJQ0FBRUVBUVFBMkFwelFnSUFBRHdzQ1FDQURRUUFvQXB6UWdJQUFSdzBBUVFBZ0FUWUNuTkNBZ0FCQkFFRUFLQUtRMElDQUFDQUFhaUlBTmdLUTBJQ0FBQ0FCSUFCQkFYSTJBZ1FnQVNBQWFpQUFOZ0lBRHdzZ0FrRjRjU0FBYWlFQUFrQUNRQ0FDUWY4QlN3MEFJQU1vQWdnaUJDQUNRUU4ySWdWQkEzUkJzTkNBZ0FCcUlnWkdHZ0pBSUFNb0Fnd2lBaUFFUncwQVFRQkJBQ2dDaU5DQWdBQkJmaUFGZDNFMkFvalFnSUFBREFJTElBSWdCa1lhSUFJZ0JEWUNDQ0FFSUFJMkFnd01BUXNnQXlnQ0dDRUhBa0FDUUNBREtBSU1JZ1lnQTBZTkFDQURLQUlJSWdKQkFDZ0NtTkNBZ0FCSkdpQUdJQUkyQWdnZ0FpQUdOZ0lNREFFTEFrQWdBMEVVYWlJQ0tBSUFJZ1FOQUNBRFFSQnFJZ0lvQWdBaUJBMEFRUUFoQmd3QkN3TkFJQUloQlNBRUlnWkJGR29pQWlnQ0FDSUVEUUFnQmtFUWFpRUNJQVlvQWhBaUJBMEFDeUFGUVFBMkFnQUxJQWRGRFFBQ1FBSkFJQU1nQXlnQ0hDSUVRUUowUWJqU2dJQUFhaUlDS0FJQVJ3MEFJQUlnQmpZQ0FDQUdEUUZCQUVFQUtBS00wSUNBQUVGK0lBUjNjVFlDak5DQWdBQU1BZ3NnQjBFUVFSUWdCeWdDRUNBRFJodHFJQVkyQWdBZ0JrVU5BUXNnQmlBSE5nSVlBa0FnQXlnQ0VDSUNSUTBBSUFZZ0FqWUNFQ0FDSUFZMkFoZ0xJQU1vQWhRaUFrVU5BQ0FHUVJScUlBSTJBZ0FnQWlBR05nSVlDeUFCSUFCcUlBQTJBZ0FnQVNBQVFRRnlOZ0lFSUFGQkFDZ0NuTkNBZ0FCSERRRkJBQ0FBTmdLUTBJQ0FBQThMSUFNZ0FrRitjVFlDQkNBQklBQnFJQUEyQWdBZ0FTQUFRUUZ5TmdJRUN3SkFJQUJCL3dGTERRQWdBRUY0Y1VHdzBJQ0FBR29oQWdKQUFrQkJBQ2dDaU5DQWdBQWlCRUVCSUFCQkEzWjBJZ0J4RFFCQkFDQUVJQUJ5TmdLSTBJQ0FBQ0FDSVFBTUFRc2dBaWdDQ0NFQUN5QUFJQUUyQWd3Z0FpQUJOZ0lJSUFFZ0FqWUNEQ0FCSUFBMkFnZ1BDMEVmSVFJQ1FDQUFRZi8vL3dkTERRQWdBRUVJZGlJQ0lBSkJnUDQvYWtFUWRrRUljU0lDZENJRUlBUkJnT0FmYWtFUWRrRUVjU0lFZENJR0lBWkJnSUFQYWtFUWRrRUNjU0lHZEVFUGRpQUNJQVJ5SUFaeWF5SUNRUUYwSUFBZ0FrRVZhblpCQVhGeVFSeHFJUUlMSUFFZ0FqWUNIQ0FCUWdBM0FoQWdBa0VDZEVHNDBvQ0FBR29oQkFKQUFrQkJBQ2dDak5DQWdBQWlCa0VCSUFKMElnTnhEUUFnQkNBQk5nSUFRUUFnQmlBRGNqWUNqTkNBZ0FBZ0FTQUVOZ0lZSUFFZ0FUWUNDQ0FCSUFFMkFnd01BUXNnQUVFQVFSa2dBa0VCZG1zZ0FrRWZSaHQwSVFJZ0JDZ0NBQ0VHQWtBRFFDQUdJZ1FvQWdSQmVIRWdBRVlOQVNBQ1FSMTJJUVlnQWtFQmRDRUNJQVFnQmtFRWNXcEJFR29pQXlnQ0FDSUdEUUFMSUFNZ0FUWUNBQ0FCSUFRMkFoZ2dBU0FCTmdJTUlBRWdBVFlDQ0F3QkN5QUVLQUlJSWdBZ0FUWUNEQ0FFSUFFMkFnZ2dBVUVBTmdJWUlBRWdCRFlDRENBQklBQTJBZ2dMUVFCQkFDZ0NxTkNBZ0FCQmYyb2lBVUYvSUFFYk5nS28wSUNBQUFzTEJBQUFBQXRPQUFKQUlBQU5BRDhBUVJCMER3c0NRQ0FBUWYvL0EzRU5BQ0FBUVg5TURRQUNRQ0FBUVJCMlFBQWlBRUYvUncwQVFRQkJNRFlDK05PQWdBQkJmdzhMSUFCQkVIUVBDeERLZ0lDQUFBQUw4Z0lDQTM4QmZnSkFJQUpGRFFBZ0FDQUJPZ0FBSUFJZ0FHb2lBMEYvYWlBQk9nQUFJQUpCQTBrTkFDQUFJQUU2QUFJZ0FDQUJPZ0FCSUFOQmZXb2dBVG9BQUNBRFFYNXFJQUU2QUFBZ0FrRUhTUTBBSUFBZ0FUb0FBeUFEUVh4cUlBRTZBQUFnQWtFSlNRMEFJQUJCQUNBQWEwRURjU0lFYWlJRElBRkIvd0Z4UVlHQ2hBaHNJZ0UyQWdBZ0F5QUNJQVJyUVh4eElnUnFJZ0pCZkdvZ0FUWUNBQ0FFUVFsSkRRQWdBeUFCTmdJSUlBTWdBVFlDQkNBQ1FYaHFJQUUyQWdBZ0FrRjBhaUFCTmdJQUlBUkJHVWtOQUNBRElBRTJBaGdnQXlBQk5nSVVJQU1nQVRZQ0VDQURJQUUyQWd3Z0FrRndhaUFCTmdJQUlBSkJiR29nQVRZQ0FDQUNRV2hxSUFFMkFnQWdBa0ZrYWlBQk5nSUFJQVFnQTBFRWNVRVljaUlGYXlJQ1FTQkpEUUFnQWExQ2dZQ0FnQkIrSVFZZ0F5QUZhaUVCQTBBZ0FTQUdOd01ZSUFFZ0JqY0RFQ0FCSUFZM0F3Z2dBU0FHTndNQUlBRkJJR29oQVNBQ1FXQnFJZ0pCSDBzTkFBc0xJQUFMQzQ1SUFRQkJnQWdMaGtnQkFBQUFBZ0FBQUFNQUFBQUFBQUFBQUFBQUFBUUFBQUFGQUFBQUFBQUFBQUFBQUFBR0FBQUFCd0FBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFbHVkbUZzYVdRZ1kyaGhjaUJwYmlCMWNtd2djWFZsY25rQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5aWIyUjVBRU52Ym5SbGJuUXRUR1Z1WjNSb0lHOTJaWEptYkc5M0FFTm9kVzVySUhOcGVtVWdiM1psY21ac2IzY0FVbVZ6Y0c5dWMyVWdiM1psY21ac2IzY0FTVzUyWVd4cFpDQnRaWFJvYjJRZ1ptOXlJRWhVVkZBdmVDNTRJSEpsY1hWbGMzUUFTVzUyWVd4cFpDQnRaWFJvYjJRZ1ptOXlJRkpVVTFBdmVDNTRJSEpsY1hWbGMzUUFSWGh3WldOMFpXUWdVMDlWVWtORklHMWxkR2h2WkNCbWIzSWdTVU5GTDNndWVDQnlaWEYxWlhOMEFFbHVkbUZzYVdRZ1kyaGhjaUJwYmlCMWNtd2dabkpoWjIxbGJuUWdjM1JoY25RQVJYaHdaV04wWldRZ1pHOTBBRk53WVc0Z1kyRnNiR0poWTJzZ1pYSnliM0lnYVc0Z2IyNWZjM1JoZEhWekFFbHVkbUZzYVdRZ2NtVnpjRzl1YzJVZ2MzUmhkSFZ6QUVsdWRtRnNhV1FnWTJoaGNtRmpkR1Z5SUdsdUlHTm9kVzVySUdWNGRHVnVjMmx2Ym5NQVZYTmxjaUJqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmY21WelpYUmdJR05oYkd4aVlXTnJJR1Z5Y205eUFHQnZibDlqYUhWdWExOW9aV0ZrWlhKZ0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOXRaWE56WVdkbFgySmxaMmx1WUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZlkyaDFibXRmWlhoMFpXNXphVzl1WDNaaGJIVmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmYzNSaGRIVnpYMk52YlhCc1pYUmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmZG1WeWMybHZibDlqYjIxd2JHVjBaV0FnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDNWeWJGOWpiMjF3YkdWMFpXQWdZMkZzYkdKaFkyc2daWEp5YjNJQVlHOXVYMk5vZFc1clgyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZhR1ZoWkdWeVgzWmhiSFZsWDJOdmJYQnNaWFJsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZmJXVnpjMkZuWlY5amIyMXdiR1YwWldBZ1kyRnNiR0poWTJzZ1pYSnliM0lBWUc5dVgyMWxkR2h2WkY5amIyMXdiR1YwWldBZ1kyRnNiR0poWTJzZ1pYSnliM0lBWUc5dVgyaGxZV1JsY2w5bWFXVnNaRjlqYjIxd2JHVjBaV0FnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDJOb2RXNXJYMlY0ZEdWdWMybHZibDl1WVcxbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCVmJtVjRjR1ZqZEdWa0lHTm9ZWElnYVc0Z2RYSnNJSE5sY25abGNnQkpiblpoYkdsa0lHaGxZV1JsY2lCMllXeDFaU0JqYUdGeUFFbHVkbUZzYVdRZ2FHVmhaR1Z5SUdacFpXeGtJR05vWVhJQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5MlpYSnphVzl1QUVsdWRtRnNhV1FnYldsdWIzSWdkbVZ5YzJsdmJnQkpiblpoYkdsa0lHMWhhbTl5SUhabGNuTnBiMjRBUlhod1pXTjBaV1FnYzNCaFkyVWdZV1owWlhJZ2RtVnljMmx2YmdCRmVIQmxZM1JsWkNCRFVreEdJR0ZtZEdWeUlIWmxjbk5wYjI0QVNXNTJZV3hwWkNCSVZGUlFJSFpsY25OcGIyNEFTVzUyWVd4cFpDQm9aV0ZrWlhJZ2RHOXJaVzRBVTNCaGJpQmpZV3hzWW1GamF5Qmxjbkp2Y2lCcGJpQnZibDkxY213QVNXNTJZV3hwWkNCamFHRnlZV04wWlhKeklHbHVJSFZ5YkFCVmJtVjRjR1ZqZEdWa0lITjBZWEowSUdOb1lYSWdhVzRnZFhKc0FFUnZkV0pzWlNCQUlHbHVJSFZ5YkFCRmJYQjBlU0JEYjI1MFpXNTBMVXhsYm1kMGFBQkpiblpoYkdsa0lHTm9ZWEpoWTNSbGNpQnBiaUJEYjI1MFpXNTBMVXhsYm1kMGFBQkVkWEJzYVdOaGRHVWdRMjl1ZEdWdWRDMU1aVzVuZEdnQVNXNTJZV3hwWkNCamFHRnlJR2x1SUhWeWJDQndZWFJvQUVOdmJuUmxiblF0VEdWdVozUm9JR05oYmlkMElHSmxJSEJ5WlhObGJuUWdkMmwwYUNCVWNtRnVjMlpsY2kxRmJtTnZaR2x1WndCSmJuWmhiR2xrSUdOb1lYSmhZM1JsY2lCcGJpQmphSFZ1YXlCemFYcGxBRk53WVc0Z1kyRnNiR0poWTJzZ1pYSnliM0lnYVc0Z2IyNWZhR1ZoWkdWeVgzWmhiSFZsQUZOd1lXNGdZMkZzYkdKaFkyc2daWEp5YjNJZ2FXNGdiMjVmWTJoMWJtdGZaWGgwWlc1emFXOXVYM1poYkhWbEFFbHVkbUZzYVdRZ1kyaGhjbUZqZEdWeUlHbHVJR05vZFc1cklHVjRkR1Z1YzJsdmJuTWdkbUZzZFdVQVRXbHpjMmx1WnlCbGVIQmxZM1JsWkNCTVJpQmhablJsY2lCb1pXRmtaWElnZG1Gc2RXVUFTVzUyWVd4cFpDQmdWSEpoYm5ObVpYSXRSVzVqYjJScGJtZGdJR2hsWVdSbGNpQjJZV3gxWlFCSmJuWmhiR2xrSUdOb1lYSmhZM1JsY2lCcGJpQmphSFZ1YXlCbGVIUmxibk5wYjI1eklIRjFiM1JsSUhaaGJIVmxBRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUdOb2RXNXJJR1Y0ZEdWdWMybHZibk1nY1hWdmRHVmtJSFpoYkhWbEFGQmhkWE5sWkNCaWVTQnZibDlvWldGa1pYSnpYMk52YlhCc1pYUmxBRWx1ZG1Gc2FXUWdSVTlHSUhOMFlYUmxBRzl1WDNKbGMyVjBJSEJoZFhObEFHOXVYMk5vZFc1clgyaGxZV1JsY2lCd1lYVnpaUUJ2Ymw5dFpYTnpZV2RsWDJKbFoybHVJSEJoZFhObEFHOXVYMk5vZFc1clgyVjRkR1Z1YzJsdmJsOTJZV3gxWlNCd1lYVnpaUUJ2Ymw5emRHRjBkWE5mWTI5dGNHeGxkR1VnY0dGMWMyVUFiMjVmZG1WeWMybHZibDlqYjIxd2JHVjBaU0J3WVhWelpRQnZibDkxY214ZlkyOXRjR3hsZEdVZ2NHRjFjMlVBYjI1ZlkyaDFibXRmWTI5dGNHeGxkR1VnY0dGMWMyVUFiMjVmYUdWaFpHVnlYM1poYkhWbFgyTnZiWEJzWlhSbElIQmhkWE5sQUc5dVgyMWxjM05oWjJWZlkyOXRjR3hsZEdVZ2NHRjFjMlVBYjI1ZmJXVjBhRzlrWDJOdmJYQnNaWFJsSUhCaGRYTmxBRzl1WDJobFlXUmxjbDltYVdWc1pGOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOWphSFZ1YTE5bGVIUmxibk5wYjI1ZmJtRnRaU0J3WVhWelpRQlZibVY0Y0dWamRHVmtJSE53WVdObElHRm1kR1Z5SUhOMFlYSjBJR3hwYm1VQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5amFIVnVhMTlsZUhSbGJuTnBiMjVmYm1GdFpRQkpiblpoYkdsa0lHTm9ZWEpoWTNSbGNpQnBiaUJqYUhWdWF5QmxlSFJsYm5OcGIyNXpJRzVoYldVQVVHRjFjMlVnYjI0Z1EwOU9Ua1ZEVkM5VmNHZHlZV1JsQUZCaGRYTmxJRzl1SUZCU1NTOVZjR2R5WVdSbEFFVjRjR1ZqZEdWa0lFaFVWRkF2TWlCRGIyNXVaV04wYVc5dUlGQnlaV1poWTJVQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5dFpYUm9iMlFBUlhod1pXTjBaV1FnYzNCaFkyVWdZV1owWlhJZ2JXVjBhRzlrQUZOd1lXNGdZMkZzYkdKaFkyc2daWEp5YjNJZ2FXNGdiMjVmYUdWaFpHVnlYMlpwWld4a0FGQmhkWE5sWkFCSmJuWmhiR2xrSUhkdmNtUWdaVzVqYjNWdWRHVnlaV1FBU1c1MllXeHBaQ0J0WlhSb2IyUWdaVzVqYjNWdWRHVnlaV1FBVlc1bGVIQmxZM1JsWkNCamFHRnlJR2x1SUhWeWJDQnpZMmhsYldFQVVtVnhkV1Z6ZENCb1lYTWdhVzUyWVd4cFpDQmdWSEpoYm5ObVpYSXRSVzVqYjJScGJtZGdBRk5YU1ZSRFNGOVFVazlZV1FCVlUwVmZVRkpQV0ZrQVRVdEJRMVJKVmtsVVdRQlZUbEJTVDBORlUxTkJRa3hGWDBWT1ZFbFVXUUJEVDFCWkFFMVBWa1ZFWDFCRlVrMUJUa1ZPVkV4WkFGUlBUMTlGUVZKTVdRQk9UMVJKUmxrQVJrRkpURVZFWDBSRlVFVk9SRVZPUTFrQVFrRkVYMGRCVkVWWFFWa0FVRXhCV1FCUVZWUUFRMGhGUTB0UFZWUUFSMEZVUlZkQldWOVVTVTFGVDFWVUFGSkZVVlZGVTFSZlZFbE5SVTlWVkFCT1JWUlhUMUpMWDBOUFRrNUZRMVJmVkVsTlJVOVZWQUJEVDA1T1JVTlVTVTlPWDFSSlRVVlBWVlFBVEU5SFNVNWZWRWxOUlU5VlZBQk9SVlJYVDFKTFgxSkZRVVJmVkVsTlJVOVZWQUJRVDFOVUFFMUpVMFJKVWtWRFZFVkVYMUpGVVZWRlUxUUFRMHhKUlU1VVgwTk1UMU5GUkY5U1JWRlZSVk5VQUVOTVNVVk9WRjlEVEU5VFJVUmZURTlCUkY5Q1FVeEJUa05GUkY5U1JWRlZSVk5VQUVKQlJGOVNSVkZWUlZOVUFFaFVWRkJmVWtWUlZVVlRWRjlUUlU1VVgxUlBYMGhVVkZCVFgxQlBVbFFBVWtWUVQxSlVBRWxOWDBGZlZFVkJVRTlVQUZKRlUwVlVYME5QVGxSRlRsUUFUazlmUTA5T1ZFVk9WQUJRUVZKVVNVRk1YME5QVGxSRlRsUUFTRkJGWDBsT1ZrRk1TVVJmUTA5T1UxUkJUbFFBU0ZCRlgwTkNYMUpGVTBWVUFFZEZWQUJJVUVWZlUxUlNTVU5VQUVOUFRrWk1TVU5VQUZSRlRWQlBVa0ZTV1Y5U1JVUkpVa1ZEVkFCUVJWSk5RVTVGVGxSZlVrVkVTVkpGUTFRQVEwOU9Ua1ZEVkFCTlZVeFVTVjlUVkVGVVZWTUFTRkJGWDBsT1ZrRk1TVVJmVTFSQlZGVlRBRlJQVDE5TlFVNVpYMUpGVVZWRlUxUlRBRVZCVWt4WlgwaEpUbFJUQUZWT1FWWkJTVXhCUWt4RlgwWlBVbDlNUlVkQlRGOVNSVUZUVDA1VEFFOVFWRWxQVGxNQVUxZEpWRU5JU1U1SFgxQlNUMVJQUTA5TVV3QldRVkpKUVU1VVgwRk1VMDlmVGtWSFQxUkpRVlJGVXdCTlZVeFVTVkJNUlY5RFNFOUpRMFZUQUVsT1ZFVlNUa0ZNWDFORlVsWkZVbDlGVWxKUFVnQlhSVUpmVTBWU1ZrVlNYMVZPUzA1UFYwNWZSVkpTVDFJQVVrRkpURWRWVGw5RlVsSlBVZ0JKUkVWT1ZFbFVXVjlRVWs5V1NVUkZVbDlCVlZSSVJVNVVTVU5CVkVsUFRsOUZVbEpQVWdCVFUweGZRMFZTVkVsR1NVTkJWRVZmUlZKU1QxSUFTVTVXUVV4SlJGOVlYMFpQVWxkQlVrUkZSRjlHVDFJQVUwVlVYMUJCVWtGTlJWUkZVZ0JIUlZSZlVFRlNRVTFGVkVWU0FFaFFSVjlWVTBWU0FGTkZSVjlQVkVoRlVnQklVRVZmUTBKZlEwaFZUa3RmU0VWQlJFVlNBRTFMUTBGTVJVNUVRVklBVTBWVVZWQUFWMFZDWDFORlVsWkZVbDlKVTE5RVQxZE9BRlJGUVZKRVQxZE9BRWhRUlY5RFRFOVRSVVJmUTA5T1RrVkRWRWxQVGdCSVJWVlNTVk5VU1VOZlJWaFFTVkpCVkVsUFRnQkVTVk5EVDA1T1JVTlVSVVJmVDFCRlVrRlVTVTlPQUU1UFRsOUJWVlJJVDFKSlZFRlVTVlpGWDBsT1JrOVNUVUZVU1U5T0FFaFFSVjlKVGxaQlRFbEVYMVpGVWxOSlQwNEFTRkJGWDBOQ1gwMUZVMU5CUjBWZlFrVkhTVTRBVTBsVVJWOUpVMTlHVWs5YVJVNEFTRkJGWDBsT1ZrRk1TVVJmU0VWQlJFVlNYMVJQUzBWT0FFbE9Wa0ZNU1VSZlZFOUxSVTRBUms5U1FrbEVSRVZPQUVWT1NFRk9RMFZmV1U5VlVsOURRVXhOQUVoUVJWOUpUbFpCVEVsRVgxVlNUQUJDVEU5RFMwVkVYMEpaWDFCQlVrVk9WRUZNWDBOUFRsUlNUMHdBVFV0RFQwd0FRVU5NQUVoUVJWOUpUbFJGVWs1QlRBQlNSVkZWUlZOVVgwaEZRVVJGVWw5R1NVVk1SRk5mVkU5UFgweEJVa2RGWDFWT1QwWkdTVU5KUVV3QVNGQkZYMDlMQUZWT1RFbE9Td0JWVGt4UFEwc0FVRkpKQUZKRlZGSlpYMWRKVkVnQVNGQkZYMGxPVmtGTVNVUmZRMDlPVkVWT1ZGOU1SVTVIVkVnQVNGQkZYMVZPUlZoUVJVTlVSVVJmUTA5T1ZFVk9WRjlNUlU1SFZFZ0FSa3hWVTBnQVVGSlBVRkJCVkVOSUFFMHRVMFZCVWtOSUFGVlNTVjlVVDA5ZlRFOU9Sd0JRVWs5RFJWTlRTVTVIQUUxSlUwTkZURXhCVGtWUFZWTmZVRVZTVTBsVFZFVk9WRjlYUVZKT1NVNUhBRTFKVTBORlRFeEJUa1ZQVlZOZlYwRlNUa2xPUndCSVVFVmZTVTVXUVV4SlJGOVVVa0ZPVTBaRlVsOUZUa05QUkVsT1J3QkZlSEJsWTNSbFpDQkRVa3hHQUVoUVJWOUpUbFpCVEVsRVgwTklWVTVMWDFOSldrVUFUVTlXUlFCRFQwNVVTVTVWUlFCSVVFVmZRMEpmVTFSQlZGVlRYME5QVFZCTVJWUkZBRWhRUlY5RFFsOUlSVUZFUlZKVFgwTlBUVkJNUlZSRkFFaFFSVjlEUWw5V1JWSlRTVTlPWDBOUFRWQk1SVlJGQUVoUVJWOURRbDlWVWt4ZlEwOU5VRXhGVkVVQVNGQkZYME5DWDBOSVZVNUxYME5QVFZCTVJWUkZBRWhRUlY5RFFsOUlSVUZFUlZKZlZrRk1WVVZmUTA5TlVFeEZWRVVBU0ZCRlgwTkNYME5JVlU1TFgwVllWRVZPVTBsUFRsOVdRVXhWUlY5RFQwMVFURVZVUlFCSVVFVmZRMEpmUTBoVlRrdGZSVmhVUlU1VFNVOU9YMDVCVFVWZlEwOU5VRXhGVkVVQVNGQkZYME5DWDAxRlUxTkJSMFZmUTA5TlVFeEZWRVVBU0ZCRlgwTkNYMDFGVkVoUFJGOURUMDFRVEVWVVJRQklVRVZmUTBKZlNFVkJSRVZTWDBaSlJVeEVYME5QVFZCTVJWUkZBRVJGVEVWVVJRQklVRVZmU1U1V1FVeEpSRjlGVDBaZlUxUkJWRVVBU1U1V1FVeEpSRjlUVTB4ZlEwVlNWRWxHU1VOQlZFVUFVRUZWVTBVQVRrOWZVa1ZUVUU5T1UwVUFWVTVUVlZCUVQxSlVSVVJmVFVWRVNVRmZWRmxRUlFCSFQwNUZBRTVQVkY5QlEwTkZVRlJCUWt4RkFGTkZVbFpKUTBWZlZVNUJWa0ZKVEVGQ1RFVUFVa0ZPUjBWZlRrOVVYMU5CVkVsVFJrbEJRa3hGQUU5U1NVZEpUbDlKVTE5VlRsSkZRVU5JUVVKTVJRQlNSVk5RVDA1VFJWOUpVMTlUVkVGTVJRQlFWVkpIUlFCTlJWSkhSUUJTUlZGVlJWTlVYMGhGUVVSRlVsOUdTVVZNUkZOZlZFOVBYMHhCVWtkRkFGSkZVVlZGVTFSZlNFVkJSRVZTWDFSUFQxOU1RVkpIUlFCUVFWbE1UMEZFWDFSUFQxOU1RVkpIUlFCSlRsTlZSa1pKUTBsRlRsUmZVMVJQVWtGSFJRQklVRVZmVUVGVlUwVkVYMVZRUjFKQlJFVUFTRkJGWDFCQlZWTkZSRjlJTWw5VlVFZFNRVVJGQUZOUFZWSkRSUUJCVGs1UFZVNURSUUJVVWtGRFJRQklVRVZmVlU1RldGQkZRMVJGUkY5VFVFRkRSUUJFUlZORFVrbENSUUJWVGxOVlFsTkRVa2xDUlFCU1JVTlBVa1FBU0ZCRlgwbE9Wa0ZNU1VSZlRVVlVTRTlFQUU1UFZGOUdUMVZPUkFCUVVrOVFSa2xPUkFCVlRrSkpUa1FBVWtWQ1NVNUVBRlZPUVZWVVNFOVNTVnBGUkFCTlJWUklUMFJmVGs5VVgwRk1URTlYUlVRQVNGUlVVRjlXUlZKVFNVOU9YMDVQVkY5VFZWQlFUMUpVUlVRQVFVeFNSVUZFV1Y5U1JWQlBVbFJGUkFCQlEwTkZVRlJGUkFCT1QxUmZTVTFRVEVWTlJVNVVSVVFBVEU5UFVGOUVSVlJGUTFSRlJBQklVRVZmUTFKZlJWaFFSVU5VUlVRQVNGQkZYMHhHWDBWWVVFVkRWRVZFQUVOU1JVRlVSVVFBU1UxZlZWTkZSQUJJVUVWZlVFRlZVMFZFQUZSSlRVVlBWVlJmVDBORFZWSkZSQUJRUVZsTlJVNVVYMUpGVVZWSlVrVkVBRkJTUlVOUFRrUkpWRWxQVGw5U1JWRlZTVkpGUkFCUVVrOVlXVjlCVlZSSVJVNVVTVU5CVkVsUFRsOVNSVkZWU1ZKRlJBQk9SVlJYVDFKTFgwRlZWRWhGVGxSSlEwRlVTVTlPWDFKRlVWVkpVa1ZFQUV4RlRrZFVTRjlTUlZGVlNWSkZSQUJUVTB4ZlEwVlNWRWxHU1VOQlZFVmZVa1ZSVlVsU1JVUUFWVkJIVWtGRVJWOVNSVkZWU1ZKRlJBQlFRVWRGWDBWWVVFbFNSVVFBVUZKRlEwOU9SRWxVU1U5T1gwWkJTVXhGUkFCRldGQkZRMVJCVkVsUFRsOUdRVWxNUlVRQVVrVldRVXhKUkVGVVNVOU9YMFpCU1V4RlJBQlRVMHhmU0VGT1JGTklRVXRGWDBaQlNVeEZSQUJNVDBOTFJVUUFWRkpCVGxOR1QxSk5RVlJKVDA1ZlFWQlFURWxGUkFCT1QxUmZUVTlFU1VaSlJVUUFUazlVWDBWWVZFVk9SRVZFQUVKQlRrUlhTVVJVU0Y5TVNVMUpWRjlGV0VORlJVUkZSQUJUU1ZSRlgwbFRYMDlXUlZKTVQwRkVSVVFBU0VWQlJBQkZlSEJsWTNSbFpDQklWRlJRTHdBQVhoTUFBQ1lUQUFBd0VBQUE4QmNBQUowVEFBQVZFZ0FBT1JjQUFQQVNBQUFLRUFBQWRSSUFBSzBTQUFDQ0V3QUFUeFFBQUg4UUFBQ2dGUUFBSXhRQUFJa1NBQUNMRkFBQVRSVUFBTlFSQUFEUEZBQUFFQmdBQU1rV0FBRGNGZ0FBd1JFQUFPQVhBQUM3RkFBQWRCUUFBSHdWQUFEbEZBQUFDQmNBQUI4UUFBQmxGUUFBb3hRQUFDZ1ZBQUFDRlFBQW1SVUFBQ3dRQUFDTEdRQUFUdzhBQU5RT0FBQnFFQUFBemhBQUFBSVhBQUNKRGdBQWJoTUFBQndUQUFCbUZBQUFWaGNBQU1FVEFBRE5Fd0FBYkJNQUFHZ1hBQUJtRndBQVh4Y0FBQ0lUQUFET0R3QUFhUTRBQU5nT0FBQmpGZ0FBeXhNQUFLb09BQUFvRndBQUpoY0FBTVVUQUFCZEZnQUE2QkVBQUdjVEFBQmxFd0FBOGhZQUFITVRBQUFkRndBQStSWUFBUE1SQUFEUERnQUF6aFVBQUF3U0FBQ3pFUUFBcFJFQUFHRVFBQUF5RndBQXV4TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRSUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlEQWdJQ0FnSUFBQUlDQUFJQ0FBSUNBZ0lDQWdJQ0FnSUFCQUFBQUFBQUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQUFBQUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBSUNBZ0lDQUFBQ0FnQUNBZ0FDQWdJQ0FnSUNBZ0lDQUFNQUJBQUFBQUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBQUFBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQUFnQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkc5elpXVmxjQzFoYkdsMlpRQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFFQkFRRUJBUUVCQVFJQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJZMmgxYm10bFpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQUFRRUJBUUVBQUFFQkFBRUJBQUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJsWTNScGIyNWxiblF0YkdWdVozUm9iMjV5YjNoNUxXTnZibTVsWTNScGIyNEFBQUFBQUFBQUFBQUFBQUFBQUFCeVlXNXpabVZ5TFdWdVkyOWthVzVuY0dkeVlXUmxEUW9OQ2cwS1UwME5DZzBLVkZSUUwwTkZMMVJUVUM4QUFBQUFBQUFBQUFBQUFBQUJBZ0FCQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFBQUFBQUFBQUFBQVFJQUFRTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBUUVGQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUFBQUFBQUFBQUFBRUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBQUFBQVFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUVBQUFFQkFRRUJBUUVCQVFFQkFVRUJBUUVCQVFFQkFRRUJBUUFCQUFHQndRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBRUFBUUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3QUFBQUFBQUFNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBSUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01BQUFBQUFBQURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCT1QxVk9RMFZGUTB0UFZWUk9SVU5VUlZSRlExSkpRa1ZNVlZOSVJWUkZRVVJUUlVGU1EwaFNSMFZEVkVsV1NWUlpURVZPUkVGU1ZrVlBWRWxHV1ZCVVNVOU9VME5JVTBWQldWTlVRVlJEU0VkRlQxSkVTVkpGUTFSUFVsUlNRMGhRUVZKQlRVVlVSVkpWVWtORlFsTkRVa2xDUlVGU1JFOVhUa0ZEUlVsT1JFNUxRMHRWUWxORFVrbENSVWhVVkZBdlFVUlVVQzg9J1xuIiwgIm1vZHVsZS5leHBvcnRzID0gJ0FHRnpiUUVBQUFBQk1BaGdBWDhCZjJBRGYzOS9BWDlnQkg5L2YzOEJmMkFBQUdBRGYzOS9BR0FCZndCZ0FuOS9BR0FHZjM5L2YzOS9BQUxMQVFnRFpXNTJHSGRoYzIxZmIyNWZhR1ZoWkdWeWMxOWpiMjF3YkdWMFpRQUNBMlZ1ZGhWM1lYTnRYMjl1WDIxbGMzTmhaMlZmWW1WbmFXNEFBQU5sYm5ZTGQyRnpiVjl2Ymw5MWNtd0FBUU5sYm5ZT2QyRnpiVjl2Ymw5emRHRjBkWE1BQVFObGJuWVVkMkZ6YlY5dmJsOW9aV0ZrWlhKZlptbGxiR1FBQVFObGJuWVVkMkZ6YlY5dmJsOW9aV0ZrWlhKZmRtRnNkV1VBQVFObGJuWU1kMkZ6YlY5dmJsOWliMlI1QUFFRFpXNTJHSGRoYzIxZmIyNWZiV1Z6YzJGblpWOWpiMjF3YkdWMFpRQUFBMFpGQXdNRUFBQUZBQUFBQUFBQUJRRUZBQVVGQlFBQUJnQUFBQUFHQmdZR0FRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFBQUJBUWNBQUFVRkF3QUJCQVVCY0FFU0VnVURBUUFDQmdnQmZ3RkJnTlFFQ3dmUkJTSUdiV1Z0YjNKNUFnQUxYMmx1YVhScFlXeHBlbVVBQ1JsZlgybHVaR2x5WldOMFgyWjFibU4wYVc5dVgzUmhZbXhsQVFBTGJHeG9kSFJ3WDJsdWFYUUFDaGhzYkdoMGRIQmZjMmh2ZFd4a1gydGxaWEJmWVd4cGRtVUFRUXhzYkdoMGRIQmZZV3hzYjJNQURBWnRZV3hzYjJNQVJndHNiR2gwZEhCZlpuSmxaUUFOQkdaeVpXVUFTQTlzYkdoMGRIQmZaMlYwWDNSNWNHVUFEaFZzYkdoMGRIQmZaMlYwWDJoMGRIQmZiV0ZxYjNJQUR4VnNiR2gwZEhCZloyVjBYMmgwZEhCZmJXbHViM0lBRUJGc2JHaDBkSEJmWjJWMFgyMWxkR2h2WkFBUkZteHNhSFIwY0Y5blpYUmZjM1JoZEhWelgyTnZaR1VBRWhKc2JHaDBkSEJmWjJWMFgzVndaM0poWkdVQUV3eHNiR2gwZEhCZmNtVnpaWFFBRkE1c2JHaDBkSEJmWlhobFkzVjBaUUFWRkd4c2FIUjBjRjl6WlhSMGFXNW5jMTlwYm1sMEFCWU5iR3hvZEhSd1gyWnBibWx6YUFBWERHeHNhSFIwY0Y5d1lYVnpaUUFZRFd4c2FIUjBjRjl5WlhOMWJXVUFHUnRzYkdoMGRIQmZjbVZ6ZFcxbFgyRm1kR1Z5WDNWd1ozSmhaR1VBR2hCc2JHaDBkSEJmWjJWMFgyVnljbTV2QUJzWGJHeG9kSFJ3WDJkbGRGOWxjbkp2Y2w5eVpXRnpiMjRBSEJkc2JHaDBkSEJmYzJWMFgyVnljbTl5WDNKbFlYTnZiZ0FkRkd4c2FIUjBjRjluWlhSZlpYSnliM0pmY0c5ekFCNFJiR3hvZEhSd1gyVnljbTV2WDI1aGJXVUFIeEpzYkdoMGRIQmZiV1YwYUc5a1gyNWhiV1VBSUJKc2JHaDBkSEJmYzNSaGRIVnpYMjVoYldVQUlScHNiR2gwZEhCZmMyVjBYMnhsYm1sbGJuUmZhR1ZoWkdWeWN3QWlJV3hzYUhSMGNGOXpaWFJmYkdWdWFXVnVkRjlqYUhWdWEyVmtYMnhsYm1kMGFBQWpIV3hzYUhSMGNGOXpaWFJmYkdWdWFXVnVkRjlyWldWd1gyRnNhWFpsQUNRa2JHeG9kSFJ3WDNObGRGOXNaVzVwWlc1MFgzUnlZVzV6Wm1WeVgyVnVZMjlrYVc1bkFDVVliR3hvZEhSd1gyMWxjM05oWjJWZmJtVmxaSE5mWlc5bUFEOEpGd0VBUVFFTEVRRUNBd1FGQ3dZSE5UazNNUzh0SnlzcENyTGdBa1VDQUFzSUFCQ0lnSUNBQUFzWkFDQUFFTUtBZ0lBQUdpQUFJQUkyQWpnZ0FDQUJPZ0FvQ3h3QUlBQWdBQzhCTWlBQUxRQXVJQUFRd1lDQWdBQVFnSUNBZ0FBTEtnRUJmMEhBQUJER2dJQ0FBQ0lCRU1LQWdJQUFHaUFCUVlDSWdJQUFOZ0k0SUFFZ0FEb0FLQ0FCQ3dvQUlBQVF5SUNBZ0FBTEJ3QWdBQzBBS0FzSEFDQUFMUUFxQ3djQUlBQXRBQ3NMQndBZ0FDMEFLUXNIQUNBQUx3RXlDd2NBSUFBdEFDNExSUUVFZnlBQUtBSVlJUUVnQUMwQUxTRUNJQUF0QUNnaEF5QUFLQUk0SVFRZ0FCRENnSUNBQUJvZ0FDQUVOZ0k0SUFBZ0F6b0FLQ0FBSUFJNkFDMGdBQ0FCTmdJWUN4RUFJQUFnQVNBQklBSnFFTU9BZ0lBQUN4QUFJQUJCQUVIY0FCRE1nSUNBQUJvTFp3RUJmMEVBSVFFQ1FDQUFLQUlNRFFBQ1FBSkFBa0FDUUNBQUxRQXZEZ01CQUFNQ0N5QUFLQUk0SWdGRkRRQWdBU2dDTENJQlJRMEFJQUFnQVJHQWdJQ0FBQUFpQVEwREMwRUFEd3NReW9DQWdBQUFDeUFBUWNPV2dJQUFOZ0lRUVE0aEFRc2dBUXNlQUFKQUlBQW9BZ3dOQUNBQVFkR2JnSUFBTmdJUUlBQkJGVFlDREFzTEZnQUNRQ0FBS0FJTVFSVkhEUUFnQUVFQU5nSU1Dd3NXQUFKQUlBQW9BZ3hCRmtjTkFDQUFRUUEyQWd3TEN3Y0FJQUFvQWd3TEJ3QWdBQ2dDRUFzSkFDQUFJQUUyQWhBTEJ3QWdBQ2dDRkFzaUFBSkFJQUJCSkVrTkFCREtnSUNBQUFBTElBQkJBblJCb0xPQWdBQnFLQUlBQ3lJQUFrQWdBRUV1U1EwQUVNcUFnSUFBQUFzZ0FFRUNkRUd3dElDQUFHb29BZ0FMN2dzQkFYOUI2NmlBZ0FBaEFRSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCbkg5cUR2UURZMklBQVdGaFlXRmhZUUlEQkFWaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhCZ2NJQ1FvTERBME9EMkZoWVdGaEVHRmhZV0ZoWVdGaFlXRmhFV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZUklURkJVV0Z4Z1pHaHRoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoSEIwZUh5QWhJaU1rSlNZbktDa3FLeXd0TGk4d01USXpORFUyWVRjNE9UcGhZV0ZoWVdGaFlUdGhZV0U4WVdGaFlUMCtQMkZoWVdGaFlXRmhRR0ZoUVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UyRmhZV0ZoWVdGaFZGVldWMWhaV2x0aFhGMWhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZlWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWDJCaEMwSGhwNENBQUE4TFFhU2hnSUFBRHd0Qnk2eUFnQUFQQzBIK3NZQ0FBQThMUWNDa2dJQUFEd3RCcTZTQWdBQVBDMEdOcUlDQUFBOExRZUttZ0lBQUR3dEJnTENBZ0FBUEMwRzVyNENBQUE4TFFkZWtnSUFBRHd0Qjc1K0FnQUFQQzBIaG40Q0FBQThMUWZxZmdJQUFEd3RCOHFDQWdBQVBDMEdvcjRDQUFBOExRYTZ5Z0lBQUR3dEJpTENBZ0FBUEMwSHNwNENBQUE4TFFZS2lnSUFBRHd0QmpwMkFnQUFQQzBIUXJvQ0FBQThMUWNxamdJQUFEd3RCeGJLQWdBQVBDMEhmbklDQUFBOExRZEtjZ0lBQUR3dEJ4S0NBZ0FBUEMwSFhvSUNBQUE4TFFhS2ZnSUFBRHd0QjdhNkFnQUFQQzBHcnNJQ0FBQThMUWRTbGdJQUFEd3RCeks2QWdBQVBDMEg2cm9DQUFBOExRZnlyZ0lBQUR3dEIwckNBZ0FBUEMwSHhuWUNBQUE4TFFidWdnSUFBRHd0Qjk2dUFnQUFQQzBHUXNZQ0FBQThMUWRleGdJQUFEd3RCb3EyQWdBQVBDMEhVcDRDQUFBOExRZUNyZ0lBQUR3dEJuNnlBZ0FBUEMwSHJzWUNBQUE4TFFkV2ZnSUFBRHd0QnlyR0FnQUFQQzBIZXBZQ0FBQThMUWRTZWdJQUFEd3RCOUp5QWdBQVBDMEduc29DQUFBOExRYkdkZ0lBQUR3dEJvSjJBZ0FBUEMwRzVzWUNBQUE4TFFieXdnSUFBRHd0QmtxR0FnQUFQQzBHenBvQ0FBQThMUWVtc2dJQUFEd3RCcko2QWdBQVBDMEhVcTRDQUFBOExRZmVtZ0lBQUR3dEJnS2FBZ0FBUEMwR3dvWUNBQUE4TFFmNmVnSUFBRHd0QmphT0FnQUFQQzBHSnJZQ0FBQThMUWZlaWdJQUFEd3RCb0xHQWdBQVBDMEd1bjRDQUFBOExRY2FsZ0lBQUR3dEI2SjZBZ0FBUEMwR1Rvb0NBQUE4TFFjS3ZnSUFBRHd0Qnc1MkFnQUFQQzBHTHJJQ0FBQThMUWVHZGdJQUFEd3RCamErQWdBQVBDMEhxb1lDQUFBOExRYlN0Z0lBQUR3dEIwcStBZ0FBUEMwSGZzb0NBQUE4TFFkS3lnSUFBRHd0QjhMQ0FnQUFQQzBHcG9vQ0FBQThMUWZtamdJQUFEd3RCbVo2QWdBQVBDMEcxcklDQUFBOExRWnV3Z0lBQUR3dEJrcktBZ0FBUEMwRzJxNENBQUE4TFFjS2lnSUFBRHd0QitMS0FnQUFQQzBHZXBZQ0FBQThMUWRDaWdJQUFEd3RCdXA2QWdBQVBDMEdCbm9DQUFBOExFTXFBZ0lBQUFBdEIxcUdBZ0FBaEFRc2dBUXNXQUNBQUlBQXRBQzFCL2dGeElBRkJBRWR5T2dBdEN4a0FJQUFnQUMwQUxVSDlBWEVnQVVFQVIwRUJkSEk2QUMwTEdRQWdBQ0FBTFFBdFFmc0JjU0FCUVFCSFFRSjBjam9BTFFzWkFDQUFJQUF0QUMxQjl3RnhJQUZCQUVkQkEzUnlPZ0F0Q3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BZ0FpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTFNRRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDQkNJRVJRMEFJQUFnQVNBQ0lBRnJJQVFSZ1lDQWdBQUFJZ05CZjBjTkFDQUFRY2FSZ0lBQU5nSVFRUmdoQXdzZ0F3c3VBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJd0lnUkZEUUFnQUNBRUVZQ0FnSUFBQUNFREN5QURDMGtCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FnZ2lCRVVOQUNBQUlBRWdBaUFCYXlBRUVZR0FnSUFBQUNJRFFYOUhEUUFnQUVIMmlvQ0FBRFlDRUVFWUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NOQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXd0SkFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUlNSWdSRkRRQWdBQ0FCSUFJZ0FXc2dCQkdCZ0lDQUFBQWlBMEYvUncwQUlBQkI3WnFBZ0FBMkFoQkJHQ0VEQ3lBREN5NEJBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWpnaUJFVU5BQ0FBSUFRUmdJQ0FnQUFBSVFNTElBTUxTUUVDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ0VDSUVSUTBBSUFBZ0FTQUNJQUZySUFRUmdZQ0FnQUFBSWdOQmYwY05BQ0FBUVpXUWdJQUFOZ0lRUVJnaEF3c2dBd3N1QVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSThJZ1JGRFFBZ0FDQUVFWUNBZ0lBQUFDRURDeUFEQzBrQkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9BaFFpQkVVTkFDQUFJQUVnQWlBQmF5QUVFWUdBZ0lBQUFDSURRWDlIRFFBZ0FFR3FtNENBQURZQ0VFRVlJUU1MSUFNTExnRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDUUNJRVJRMEFJQUFnQkJHQWdJQ0FBQUFoQXdzZ0F3dEpBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FJWUlnUkZEUUFnQUNBQklBSWdBV3NnQkJHQmdJQ0FBQUFpQTBGL1J3MEFJQUJCN1pPQWdBQTJBaEJCR0NFREN5QURDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FrUWlCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NKQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXdzdUFRSi9RUUFoQXdKQUlBQW9BamdpQkVVTkFDQUVLQUlzSWdSRkRRQWdBQ0FFRVlDQWdJQUFBQ0VEQ3lBREMwa0JBbjlCQUNFREFrQWdBQ2dDT0NJRVJRMEFJQVFvQWlnaUJFVU5BQ0FBSUFFZ0FpQUJheUFFRVlHQWdJQUFBQ0lEUVg5SERRQWdBRUgyaUlDQUFEWUNFRUVZSVFNTElBTUxMZ0VDZjBFQUlRTUNRQ0FBS0FJNElnUkZEUUFnQkNnQ1VDSUVSUTBBSUFBZ0JCR0FnSUNBQUFBaEF3c2dBd3RKQVFKL1FRQWhBd0pBSUFBb0FqZ2lCRVVOQUNBRUtBSWNJZ1JGRFFBZ0FDQUJJQUlnQVdzZ0JCR0JnSUNBQUFBaUEwRi9SdzBBSUFCQndwbUFnQUEyQWhCQkdDRURDeUFEQ3k0QkFuOUJBQ0VEQWtBZ0FDZ0NPQ0lFUlEwQUlBUW9Ba2dpQkVVTkFDQUFJQVFSZ0lDQWdBQUFJUU1MSUFNTFNRRUNmMEVBSVFNQ1FDQUFLQUk0SWdSRkRRQWdCQ2dDSUNJRVJRMEFJQUFnQVNBQ0lBRnJJQVFSZ1lDQWdBQUFJZ05CZjBjTkFDQUFRWlNVZ0lBQU5nSVFRUmdoQXdzZ0F3c3VBUUovUVFBaEF3SkFJQUFvQWpnaUJFVU5BQ0FFS0FKTUlnUkZEUUFnQUNBRUVZQ0FnSUFBQUNFREN5QURDeTRCQW45QkFDRURBa0FnQUNnQ09DSUVSUTBBSUFRb0FsUWlCRVVOQUNBQUlBUVJnSUNBZ0FBQUlRTUxJQU1MTGdFQ2YwRUFJUU1DUUNBQUtBSTRJZ1JGRFFBZ0JDZ0NXQ0lFUlEwQUlBQWdCQkdBZ0lDQUFBQWhBd3NnQXd0RkFRRi9Ba0FDUUNBQUx3RXdRUlJ4UVJSSERRQkJBU0VESUFBdEFDaEJBVVlOQVNBQUx3RXlRZVVBUmlFRERBRUxJQUF0QUNsQkJVWWhBd3NnQUNBRE9nQXVRUUFML2dFQkEzOUJBU0VEQWtBZ0FDOEJNQ0lFUVFoeERRQWdBQ2tESUVJQVVpRURDd0pBQWtBZ0FDMEFMa1VOQUVFQklRVWdBQzBBS1VFRlJnMEJRUUVoQlNBRVFjQUFjVVVnQTNGQkFVY05BUXRCQUNFRklBUkJ3QUJ4RFFCQkFpRUZJQVJCLy84RGNTSURRUWh4RFFBQ1FDQURRWUFFY1VVTkFBSkFJQUF0QUNoQkFVY05BQ0FBTFFBdFFRcHhEUUJCQlE4TFFRUVBDd0pBSUFOQklIRU5BQUpBSUFBdEFDaEJBVVlOQUNBQUx3RXlRZi8vQTNFaUFFR2NmMnBCNUFCSkRRQWdBRUhNQVVZTkFDQUFRYkFDUmcwQVFRUWhCU0FFUVNoeFJRMENJQU5CaUFSeFFZQUVSZzBDQzBFQUR3dEJBRUVESUFBcEF5QlFHeUVGQ3lBRkMySUJBbjlCQUNFQkFrQWdBQzBBS0VFQlJnMEFJQUF2QVRKQi8vOERjU0lDUVp4L2FrSGtBRWtOQUNBQ1Fjd0JSZzBBSUFKQnNBSkdEUUFnQUM4Qk1DSUFRY0FBY1EwQVFRRWhBU0FBUVlnRWNVR0FCRVlOQUNBQVFTaHhSU0VCQ3lBQkM2Y0JBUU4vQWtBQ1FBSkFJQUF0QUNwRkRRQWdBQzBBSzBVTkFFRUFJUU1nQUM4Qk1DSUVRUUp4UlEwQkRBSUxRUUFoQXlBQUx3RXdJZ1JCQVhGRkRRRUxRUUVoQXlBQUxRQW9RUUZHRFFBZ0FDOEJNa0gvL3dOeElnVkJuSDlxUWVRQVNRMEFJQVZCekFGR0RRQWdCVUd3QWtZTkFDQUVRY0FBY1EwQVFRQWhBeUFFUVlnRWNVR0FCRVlOQUNBRVFTaHhRUUJISVFNTElBQkJBRHNCTUNBQVFRQTZBQzhnQXd1WkFRRUNmd0pBQWtBQ1FDQUFMUUFxUlEwQUlBQXRBQ3RGRFFCQkFDRUJJQUF2QVRBaUFrRUNjVVVOQVF3Q0MwRUFJUUVnQUM4Qk1DSUNRUUZ4UlEwQkMwRUJJUUVnQUMwQUtFRUJSZzBBSUFBdkFUSkIvLzhEY1NJQVFaeC9ha0hrQUVrTkFDQUFRY3dCUmcwQUlBQkJzQUpHRFFBZ0FrSEFBSEVOQUVFQUlRRWdBa0dJQkhGQmdBUkdEUUFnQWtFb2NVRUFSeUVCQ3lBQkMwa0JBWHNnQUVFUWF2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDSUIvUXNEQUNBQUlBSDlDd01BSUFCQk1Hb2dBZjBMQXdBZ0FFRWdhaUFCL1FzREFDQUFRZDBCTmdJY1FRQUxld0VCZndKQUlBQW9BZ3dpQXcwQUFrQWdBQ2dDQkVVTkFDQUFJQUUyQWdRTEFrQWdBQ0FCSUFJUXhJQ0FnQUFpQXcwQUlBQW9BZ3dQQ3lBQUlBTTJBaHhCQUNFRElBQW9BZ1FpQVVVTkFDQUFJQUVnQWlBQUtBSUlFWUdBZ0lBQUFDSUJSUTBBSUFBZ0FqWUNGQ0FBSUFFMkFnd2dBU0VEQ3lBREMrVHpBUU1PZndOK0JIOGpnSUNBZ0FCQkVHc2lBeVNBZ0lDQUFDQUJJUVFnQVNFRklBRWhCaUFCSVFjZ0FTRUlJQUVoQ1NBQklRb2dBU0VMSUFFaERDQUJJUTBnQVNFT0lBRWhEd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FJY0loQkJmMm9PM1FIYUFRSFpBUUlEQkFVR0J3Z0pDZ3NNRFE3WUFROFExd0VSRXRZQkV4UVZGaGNZR1JvYjRBSGZBUndkSHRVQkh5QWhJaU1rSmRRQkppY29LU29yTE5NQjBnRXRMdEVCMEFFdk1ERXlNelExTmpjNE9UbzdQRDArUDBCQlFrTkVSVWJiQVVkSVNVclBBYzRCUzgwQlRNd0JUVTVQVUZGU1UxUlZWbGRZV1ZwYlhGMWVYMkJoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVlbnQ4Zlg1L2dBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZNEJqd0dRQVpFQmtnR1RBWlFCbFFHV0FaY0JtQUdaQVpvQm13R2NBWjBCbmdHZkFhQUJvUUdpQWFNQnBBR2xBYVlCcHdHb0Fha0JxZ0dyQWF3QnJRR3VBYThCc0FHeEFiSUJzd0cwQWJVQnRnRzNBY3NCeWdHNEFja0J1UUhJQWJvQnV3RzhBYjBCdmdHL0FjQUJ3UUhDQWNNQnhBSEZBY1lCQU53QkMwRUFJUkFNeGdFTFFRNGhFQXpGQVF0QkRTRVFETVFCQzBFUElSQU13d0VMUVJBaEVBekNBUXRCRXlFUURNRUJDMEVVSVJBTXdBRUxRUlVoRUF5L0FRdEJGaUVRREw0QkMwRVhJUkFNdlFFTFFSZ2hFQXk4QVF0QkdTRVFETHNCQzBFYUlSQU11Z0VMUVJzaEVBeTVBUXRCSENFUURMZ0JDMEVJSVJBTXR3RUxRUjBoRUF5MkFRdEJJQ0VRRExVQkMwRWZJUkFNdEFFTFFRY2hFQXl6QVF0QklTRVFETElCQzBFaUlSQU1zUUVMUVI0aEVBeXdBUXRCSXlFUURLOEJDMEVTSVJBTXJnRUxRUkVoRUF5dEFRdEJKQ0VRREt3QkMwRWxJUkFNcXdFTFFTWWhFQXlxQVF0Qkp5RVFES2tCQzBIREFTRVFES2dCQzBFcElSQU1wd0VMUVNzaEVBeW1BUXRCTENFUURLVUJDMEV0SVJBTXBBRUxRUzRoRUF5akFRdEJMeUVRREtJQkMwSEVBU0VRREtFQkMwRXdJUkFNb0FFTFFUUWhFQXlmQVF0QkRDRVFESjRCQzBFeElSQU1uUUVMUVRJaEVBeWNBUXRCTXlFUURKc0JDMEU1SVJBTW1nRUxRVFVoRUF5WkFRdEJ4UUVoRUF5WUFRdEJDeUVRREpjQkMwRTZJUkFNbGdFTFFUWWhFQXlWQVF0QkNpRVFESlFCQzBFM0lSQU1rd0VMUVRnaEVBeVNBUXRCUENFUURKRUJDMEU3SVJBTWtBRUxRVDBoRUF5UEFRdEJDU0VRREk0QkMwRW9JUkFNalFFTFFUNGhFQXlNQVF0QlB5RVFESXNCQzBIQUFDRVFESW9CQzBIQkFDRVFESWtCQzBIQ0FDRVFESWdCQzBIREFDRVFESWNCQzBIRUFDRVFESVlCQzBIRkFDRVFESVVCQzBIR0FDRVFESVFCQzBFcUlSQU1nd0VMUWNjQUlSQU1nZ0VMUWNnQUlSQU1nUUVMUWNrQUlSQU1nQUVMUWNvQUlSQU1md3RCeXdBaEVBeCtDMEhOQUNFUURIMExRY3dBSVJBTWZBdEJ6Z0FoRUF4N0MwSFBBQ0VRREhvTFFkQUFJUkFNZVF0QjBRQWhFQXg0QzBIU0FDRVFESGNMUWRNQUlSQU1kZ3RCMUFBaEVBeDFDMEhXQUNFUURIUUxRZFVBSVJBTWN3dEJCaUVRREhJTFFkY0FJUkFNY1F0QkJTRVFESEFMUWRnQUlSQU1id3RCQkNFUURHNExRZGtBSVJBTWJRdEIyZ0FoRUF4c0MwSGJBQ0VRREdzTFFkd0FJUkFNYWd0QkF5RVFER2tMUWQwQUlSQU1hQXRCM2dBaEVBeG5DMEhmQUNFUURHWUxRZUVBSVJBTVpRdEI0QUFoRUF4a0MwSGlBQ0VRREdNTFFlTUFJUkFNWWd0QkFpRVFER0VMUWVRQUlSQU1ZQXRCNVFBaEVBeGZDMEhtQUNFUURGNExRZWNBSVJBTVhRdEI2QUFoRUF4Y0MwSHBBQ0VRREZzTFFlb0FJUkFNV2d0QjZ3QWhFQXhaQzBIc0FDRVFERmdMUWUwQUlSQU1Wd3RCN2dBaEVBeFdDMEh2QUNFUURGVUxRZkFBSVJBTVZBdEI4UUFoRUF4VEMwSHlBQ0VRREZJTFFmTUFJUkFNVVF0QjlBQWhFQXhRQzBIMUFDRVFERThMUWZZQUlSQU1UZ3RCOXdBaEVBeE5DMEg0QUNFUURFd0xRZmtBSVJBTVN3dEIrZ0FoRUF4S0MwSDdBQ0VRREVrTFFmd0FJUkFNU0F0Qi9RQWhFQXhIQzBIK0FDRVFERVlMUWY4QUlSQU1SUXRCZ0FFaEVBeEVDMEdCQVNFUURFTUxRWUlCSVJBTVFndEJnd0VoRUF4QkMwR0VBU0VRREVBTFFZVUJJUkFNUHd0QmhnRWhFQXcrQzBHSEFTRVFERDBMUVlnQklSQU1QQXRCaVFFaEVBdzdDMEdLQVNFUUREb0xRWXNCSVJBTU9RdEJqQUVoRUF3NEMwR05BU0VRRERjTFFZNEJJUkFNTmd0Qmp3RWhFQXcxQzBHUUFTRVFERFFMUVpFQklSQU1Nd3RCa2dFaEVBd3lDMEdUQVNFUURERUxRWlFCSVJBTU1BdEJsUUVoRUF3dkMwR1dBU0VRREM0TFFaY0JJUkFNTFF0Qm1BRWhFQXdzQzBHWkFTRVFEQ3NMUVpvQklSQU1LZ3RCbXdFaEVBd3BDMEdjQVNFUURDZ0xRWjBCSVJBTUp3dEJuZ0VoRUF3bUMwR2ZBU0VRRENVTFFhQUJJUkFNSkF0Qm9RRWhFQXdqQzBHaUFTRVFEQ0lMUWFNQklSQU1JUXRCcEFFaEVBd2dDMEdsQVNFUURCOExRYVlCSVJBTUhndEJwd0VoRUF3ZEMwR29BU0VRREJ3TFFha0JJUkFNR3d0QnFnRWhFQXdhQzBHckFTRVFEQmtMUWF3QklSQU1HQXRCclFFaEVBd1hDMEd1QVNFUURCWUxRUUVoRUF3VkMwR3ZBU0VRREJRTFFiQUJJUkFNRXd0QnNRRWhFQXdTQzBHekFTRVFEQkVMUWJJQklSQU1FQXRCdEFFaEVBd1BDMEcxQVNFUURBNExRYllCSVJBTURRdEJ0d0VoRUF3TUMwRzRBU0VRREFzTFFia0JJUkFNQ2d0QnVnRWhFQXdKQzBHN0FTRVFEQWdMUWNZQklSQU1Cd3RCdkFFaEVBd0dDMEc5QVNFUURBVUxRYjRCSVJBTUJBdEJ2d0VoRUF3REMwSEFBU0VRREFJTFFjSUJJUkFNQVF0QndRRWhFQXNEUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlCQU94d0VBQVFJREJBVUdCd2dKQ2dzTURRNFBFQkVTRXhRVkZoY1lHUm9iSEI0ZklDRWpKU2cvUUVGRVJVWkhTRWxLUzB4TlQxQlJVbFBlQTFkWlcxeGRZR0psWm1kb2FXcHJiRzF2Y0hGeWMzUjFkbmQ0ZVhwN2ZIMStnQUdDQVlVQmhnR0hBWWtCaXdHTUFZMEJqZ0dQQVpBQmtRR1VBWlVCbGdHWEFaZ0JtUUdhQVpzQm5BR2RBWjRCbndHZ0FhRUJvZ0dqQWFRQnBRR21BYWNCcUFHcEFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBZFFCMVFIV0FkY0IyQUhaQWRvQjJ3SGNBZDBCM2dIZ0FlRUI0Z0hqQWVRQjVRSG1BZWNCNkFIcEFlb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUJtUUtrQXJBQy9nTCtBZ3NnQVNJRUlBSkhEZk1CUWQwQklSQU0vd01MSUFFaUVDQUNSdzNkQVVIREFTRVFEUDREQ3lBQklnRWdBa2NOa0FGQjl3QWhFQXo5QXdzZ0FTSUJJQUpIRFlZQlFlOEFJUkFNL0FNTElBRWlBU0FDUncxL1Flb0FJUkFNK3dNTElBRWlBU0FDUncxN1FlZ0FJUkFNK2dNTElBRWlBU0FDUncxNFFlWUFJUkFNK1FNTElBRWlBU0FDUncwYVFSZ2hFQXo0QXdzZ0FTSUJJQUpIRFJSQkVpRVFEUGNEQ3lBQklnRWdBa2NOV1VIRkFDRVFEUFlEQ3lBQklnRWdBa2NOU2tFL0lSQU05UU1MSUFFaUFTQUNSdzFJUVR3aEVBejBBd3NnQVNJQklBSkhEVUZCTVNFUURQTURDeUFBTFFBdVFRRkdEZXNEREljQ0N5QUFJQUVpQVNBQ0VNQ0FnSUFBUVFGSERlWUJJQUJDQURjRElBem5BUXNnQUNBQklnRWdBaEMwZ0lDQUFDSVFEZWNCSUFFaEFRejFBZ3NDUUNBQklnRWdBa2NOQUVFR0lSQU04QU1MSUFBZ0FVRUJhaUlCSUFJUXU0Q0FnQUFpRUEzb0FTQUJJUUVNTVFzZ0FFSUFOd01nUVJJaEVBelZBd3NnQVNJUUlBSkhEU3RCSFNFUURPMERDd0pBSUFFaUFTQUNSZzBBSUFGQkFXb2hBVUVRSVJBTTFBTUxRUWNoRUF6c0F3c2dBRUlBSUFBcEF5QWlFU0FDSUFFaUVHdXRJaEo5SWhNZ0V5QVJWaHMzQXlBZ0VTQVNWaUlVUlEzbEFVRUlJUkFNNndNTEFrQWdBU0lCSUFKR0RRQWdBRUdKZ0lDQUFEWUNDQ0FBSUFFMkFnUWdBU0VCUVJRaEVBelNBd3RCQ1NFUURPb0RDeUFCSVFFZ0FDa0RJRkFONUFFZ0FTRUJEUElDQ3dKQUlBRWlBU0FDUncwQVFRc2hFQXpwQXdzZ0FDQUJRUUZxSWdFZ0FoQzJnSUNBQUNJUURlVUJJQUVoQVF6eUFnc2dBQ0FCSWdFZ0FoQzRnSUNBQUNJUURlVUJJQUVoQVF6eUFnc2dBQ0FCSWdFZ0FoQzRnSUNBQUNJUURlWUJJQUVoQVF3TkN5QUFJQUVpQVNBQ0VMcUFnSUFBSWhBTjV3RWdBU0VCRFBBQ0N3SkFJQUVpQVNBQ1J3MEFRUThoRUF6bEF3c2dBUzBBQUNJUVFUdEdEUWdnRUVFTlJ3M29BU0FCUVFGcUlRRU03d0lMSUFBZ0FTSUJJQUlRdW9DQWdBQWlFQTNvQVNBQklRRU04Z0lMQTBBQ1FDQUJMUUFBUWZDMWdJQUFhaTBBQUNJUVFRRkdEUUFnRUVFQ1J3M3JBU0FBS0FJRUlSQWdBRUVBTmdJRUlBQWdFQ0FCUVFGcUlnRVF1WUNBZ0FBaUVBM3FBU0FCSVFFTTlBSUxJQUZCQVdvaUFTQUNSdzBBQzBFU0lSQU00Z01MSUFBZ0FTSUJJQUlRdW9DQWdBQWlFQTNwQVNBQklRRU1DZ3NnQVNJQklBSkhEUVpCR3lFUURPQURDd0pBSUFFaUFTQUNSdzBBUVJZaEVBemdBd3NnQUVHS2dJQ0FBRFlDQ0NBQUlBRTJBZ1FnQUNBQklBSVF1SUNBZ0FBaUVBM3FBU0FCSVFGQklDRVFETVlEQ3dKQUlBRWlBU0FDUmcwQUEwQUNRQ0FCTFFBQVFmQzNnSUFBYWkwQUFDSVFRUUpHRFFBQ1FDQVFRWDlxRGdUbEFld0JBT3NCN0FFTElBRkJBV29oQVVFSUlSQU15QU1MSUFGQkFXb2lBU0FDUncwQUMwRVZJUkFNM3dNTFFSVWhFQXplQXdzRFFBSkFJQUV0QUFCQjhMbUFnQUJxTFFBQUloQkJBa1lOQUNBUVFYOXFEZ1RlQWV3QjRBSHJBZXdCQ3lBQlFRRnFJZ0VnQWtjTkFBdEJHQ0VRRE4wREN3SkFJQUVpQVNBQ1JnMEFJQUJCaTRDQWdBQTJBZ2dnQUNBQk5nSUVJQUVoQVVFSElSQU14QU1MUVJraEVBemNBd3NnQVVFQmFpRUJEQUlMQWtBZ0FTSVVJQUpIRFFCQkdpRVFETnNEQ3lBVUlRRUNRQ0FVTFFBQVFYTnFEaFRkQXU0QzdnTHVBdTRDN2dMdUF1NEM3Z0x1QXU0QzdnTHVBdTRDN2dMdUF1NEM3Z0x1QWdEdUFndEJBQ0VRSUFCQkFEWUNIQ0FBUWErTGdJQUFOZ0lRSUFCQkFqWUNEQ0FBSUJSQkFXbzJBaFFNMmdNTEFrQWdBUzBBQUNJUVFUdEdEUUFnRUVFTlJ3M29BU0FCUVFGcUlRRU01UUlMSUFGQkFXb2hBUXRCSWlFUURMOERDd0pBSUFFaUVDQUNSdzBBUVJ3aEVBellBd3RDQUNFUklCQWhBU0FRTFFBQVFWQnFEamZuQWVZQkFRSURCQVVHQndnQUFBQUFBQUFBQ1FvTERBME9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBFQkVTRXhRQUMwRWVJUkFNdlFNTFFnSWhFUXpsQVF0Q0F5RVJET1FCQzBJRUlSRU00d0VMUWdVaEVRemlBUXRDQmlFUkRPRUJDMElISVJFTTRBRUxRZ2doRVF6ZkFRdENDU0VSRE40QkMwSUtJUkVNM1FFTFFnc2hFUXpjQVF0Q0RDRVJETnNCQzBJTklSRU0yZ0VMUWc0aEVRelpBUXRDRHlFUkROZ0JDMElLSVJFTTF3RUxRZ3NoRVF6V0FRdENEQ0VSRE5VQkMwSU5JUkVNMUFFTFFnNGhFUXpUQVF0Q0R5RVJETklCQzBJQUlSRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUJBdEFBQkJVR29PTitVQjVBRUFBUUlEQkFVR0IrWUI1Z0htQWVZQjVnSG1BZVlCQ0FrS0N3d041Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFlWUI1Z0htQWVZQjVnSG1BZVlCNWdIbUFRNFBFQkVTRStZQkMwSUNJUkVNNUFFTFFnTWhFUXpqQVF0Q0JDRVJET0lCQzBJRklSRU00UUVMUWdZaEVRemdBUXRDQnlFUkROOEJDMElJSVJFTTNnRUxRZ2toRVF6ZEFRdENDaUVSRE53QkMwSUxJUkVNMndFTFFnd2hFUXphQVF0Q0RTRVJETmtCQzBJT0lSRU0yQUVMUWc4aEVRelhBUXRDQ2lFUkROWUJDMElMSVJFTTFRRUxRZ3doRVF6VUFRdENEU0VSRE5NQkMwSU9JUkVNMGdFTFFnOGhFUXpSQVFzZ0FFSUFJQUFwQXlBaUVTQUNJQUVpRUd1dEloSjlJaE1nRXlBUlZoczNBeUFnRVNBU1ZpSVVSUTNTQVVFZklSQU13QU1MQWtBZ0FTSUJJQUpHRFFBZ0FFR0pnSUNBQURZQ0NDQUFJQUUyQWdRZ0FTRUJRU1FoRUF5bkF3dEJJQ0VRREw4REN5QUFJQUVpRUNBQ0VMNkFnSUFBUVg5cURnVzJBUURGQWdIUkFkSUJDMEVSSVJBTXBBTUxJQUJCQVRvQUx5QVFJUUVNdXdNTElBRWlBU0FDUnczU0FVRWtJUkFNdXdNTElBRWlEU0FDUncwZVFjWUFJUkFNdWdNTElBQWdBU0lCSUFJUXNvQ0FnQUFpRUEzVUFTQUJJUUVNdFFFTElBRWlFQ0FDUncwbVFkQUFJUkFNdUFNTEFrQWdBU0lCSUFKSERRQkJLQ0VRRExnREN5QUFRUUEyQWdRZ0FFR01nSUNBQURZQ0NDQUFJQUVnQVJDeGdJQ0FBQ0lRRGRNQklBRWhBUXpZQVFzQ1FDQUJJaEFnQWtjTkFFRXBJUkFNdHdNTElCQXRBQUFpQVVFZ1JnMFVJQUZCQ1VjTjB3RWdFRUVCYWlFQkRCVUxBa0FnQVNJQklBSkdEUUFnQVVFQmFpRUJEQmNMUVNvaEVBeTFBd3NDUUNBQkloQWdBa2NOQUVFcklSQU10UU1MQWtBZ0VDMEFBQ0lCUVFsR0RRQWdBVUVnUnczVkFRc2dBQzBBTEVFSVJnM1RBU0FRSVFFTWtRTUxBa0FnQVNJQklBSkhEUUJCTENFUURMUURDeUFCTFFBQVFRcEhEZFVCSUFGQkFXb2hBUXpKQWdzZ0FTSU9JQUpIRGRVQlFTOGhFQXl5QXdzRFFBSkFJQUV0QUFBaUVFRWdSZzBBQWtBZ0VFRjJhZzRFQU53QjNBRUEyZ0VMSUFFaEFRemdBUXNnQVVFQmFpSUJJQUpIRFFBTFFURWhFQXl4QXd0Qk1pRVFJQUVpRkNBQ1JnMndBeUFDSUJScklBQW9BZ0FpQVdvaEZTQVVJQUZyUVFOcUlSWUNRQU5BSUJRdEFBQWlGMEVnY2lBWElCZEJ2MzlxUWY4QmNVRWFTUnRCL3dGeElBRkI4THVBZ0FCcUxRQUFSdzBCQWtBZ0FVRURSdzBBUVFZaEFReVdBd3NnQVVFQmFpRUJJQlJCQVdvaUZDQUNSdzBBQ3lBQUlCVTJBZ0FNc1FNTElBQkJBRFlDQUNBVUlRRU0yUUVMUVRNaEVDQUJJaFFnQWtZTnJ3TWdBaUFVYXlBQUtBSUFJZ0ZxSVJVZ0ZDQUJhMEVJYWlFV0FrQURRQ0FVTFFBQUloZEJJSElnRnlBWFFiOS9ha0gvQVhGQkdra2JRZjhCY1NBQlFmUzdnSUFBYWkwQUFFY05BUUpBSUFGQkNFY05BRUVGSVFFTWxRTUxJQUZCQVdvaEFTQVVRUUZxSWhRZ0FrY05BQXNnQUNBVk5nSUFETEFEQ3lBQVFRQTJBZ0FnRkNFQkROZ0JDMEUwSVJBZ0FTSVVJQUpHRGE0RElBSWdGR3NnQUNnQ0FDSUJhaUVWSUJRZ0FXdEJCV29oRmdKQUEwQWdGQzBBQUNJWFFTQnlJQmNnRjBHL2YycEIvd0Z4UVJwSkcwSC9BWEVnQVVIUXdvQ0FBR290QUFCSERRRUNRQ0FCUVFWSERRQkJCeUVCREpRREN5QUJRUUZxSVFFZ0ZFRUJhaUlVSUFKSERRQUxJQUFnRlRZQ0FBeXZBd3NnQUVFQU5nSUFJQlFoQVF6WEFRc0NRQ0FCSWdFZ0FrWU5BQU5BQWtBZ0FTMEFBRUdBdm9DQUFHb3RBQUFpRUVFQlJnMEFJQkJCQWtZTkNpQUJJUUVNM1FFTElBRkJBV29pQVNBQ1J3MEFDMEV3SVJBTXJnTUxRVEFoRUF5dEF3c0NRQ0FCSWdFZ0FrWU5BQU5BQWtBZ0FTMEFBQ0lRUVNCR0RRQWdFRUYyYWc0RTJRSGFBZG9CMlFIYUFRc2dBVUVCYWlJQklBSkhEUUFMUVRnaEVBeXRBd3RCT0NFUURLd0RDd05BQWtBZ0FTMEFBQ0lRUVNCR0RRQWdFRUVKUncwREN5QUJRUUZxSWdFZ0FrY05BQXRCUENFUURLc0RDd05BQWtBZ0FTMEFBQ0lRUVNCR0RRQUNRQUpBSUJCQmRtb09CTm9CQVFIYUFRQUxJQkJCTEVZTjJ3RUxJQUVoQVF3RUN5QUJRUUZxSWdFZ0FrY05BQXRCUHlFUURLb0RDeUFCSVFFTTJ3RUxRY0FBSVJBZ0FTSVVJQUpHRGFnRElBSWdGR3NnQUNnQ0FDSUJhaUVXSUJRZ0FXdEJCbW9oRndKQUEwQWdGQzBBQUVFZ2NpQUJRWURBZ0lBQWFpMEFBRWNOQVNBQlFRWkdEWTRESUFGQkFXb2hBU0FVUVFGcUloUWdBa2NOQUFzZ0FDQVdOZ0lBREtrREN5QUFRUUEyQWdBZ0ZDRUJDMEUySVJBTWpnTUxBa0FnQVNJUElBSkhEUUJCd1FBaEVBeW5Bd3NnQUVHTWdJQ0FBRFlDQ0NBQUlBODJBZ1FnRHlFQklBQXRBQ3hCZjJvT0JNMEIxUUhYQWRrQmh3TUxJQUZCQVdvaEFRek1BUXNDUUNBQklnRWdBa1lOQUFOQUFrQWdBUzBBQUNJUVFTQnlJQkFnRUVHL2YycEIvd0Z4UVJwSkcwSC9BWEVpRUVFSlJnMEFJQkJCSUVZTkFBSkFBa0FDUUFKQUlCQkJuWDlxRGhNQUF3TURBd01EQXdFREF3TURBd01EQXdNQ0F3c2dBVUVCYWlFQlFURWhFQXlSQXdzZ0FVRUJhaUVCUVRJaEVBeVFBd3NnQVVFQmFpRUJRVE1oRUF5UEF3c2dBU0VCRE5BQkN5QUJRUUZxSWdFZ0FrY05BQXRCTlNFUURLVURDMEUxSVJBTXBBTUxBa0FnQVNJQklBSkdEUUFEUUFKQUlBRXRBQUJCZ0x5QWdBQnFMUUFBUVFGR0RRQWdBU0VCRE5NQkN5QUJRUUZxSWdFZ0FrY05BQXRCUFNFUURLUURDMEU5SVJBTW93TUxJQUFnQVNJQklBSVFzSUNBZ0FBaUVBM1dBU0FCSVFFTUFRc2dFRUVCYWlFQkMwRThJUkFNaHdNTEFrQWdBU0lCSUFKSERRQkJ3Z0FoRUF5Z0F3c0NRQU5BQWtBZ0FTMEFBRUYzYWc0WUFBTCtBdjRDaEFQK0F2NEMvZ0wrQXY0Qy9nTCtBdjRDL2dMK0F2NEMvZ0wrQXY0Qy9nTCtBdjRDL2dJQS9nSUxJQUZCQVdvaUFTQUNSdzBBQzBIQ0FDRVFES0FEQ3lBQlFRRnFJUUVnQUMwQUxVRUJjVVVOdlFFZ0FTRUJDMEVzSVJBTWhRTUxJQUVpQVNBQ1J3M1RBVUhFQUNFUURKMERDd05BQWtBZ0FTMEFBRUdRd0lDQUFHb3RBQUJCQVVZTkFDQUJJUUVNdHdJTElBRkJBV29pQVNBQ1J3MEFDMEhGQUNFUURKd0RDeUFOTFFBQUloQkJJRVlOc3dFZ0VFRTZSdzJCQXlBQUtBSUVJUUVnQUVFQU5nSUVJQUFnQVNBTkVLK0FnSUFBSWdFTjBBRWdEVUVCYWlFQkRMTUNDMEhIQUNFUUlBRWlEU0FDUmcyYUF5QUNJQTFySUFBb0FnQWlBV29oRmlBTklBRnJRUVZxSVJjRFFDQU5MUUFBSWhSQklISWdGQ0FVUWI5L2FrSC9BWEZCR2trYlFmOEJjU0FCUVpEQ2dJQUFhaTBBQUVjTmdBTWdBVUVGUmczMEFpQUJRUUZxSVFFZ0RVRUJhaUlOSUFKSERRQUxJQUFnRmpZQ0FBeWFBd3RCeUFBaEVDQUJJZzBnQWtZTm1RTWdBaUFOYXlBQUtBSUFJZ0ZxSVJZZ0RTQUJhMEVKYWlFWEEwQWdEUzBBQUNJVVFTQnlJQlFnRkVHL2YycEIvd0Z4UVJwSkcwSC9BWEVnQVVHV3dvQ0FBR290QUFCSERmOENBa0FnQVVFSlJ3MEFRUUloQVF6MUFnc2dBVUVCYWlFQklBMUJBV29pRFNBQ1J3MEFDeUFBSUJZMkFnQU1tUU1MQWtBZ0FTSU5JQUpIRFFCQnlRQWhFQXlaQXdzQ1FBSkFJQTB0QUFBaUFVRWdjaUFCSUFGQnYzOXFRZjhCY1VFYVNSdEIvd0Z4UVpKL2FnNEhBSUFEZ0FPQUE0QURnQU1CZ0FNTElBMUJBV29oQVVFK0lSQU1nQU1MSUExQkFXb2hBVUUvSVJBTS93SUxRY29BSVJBZ0FTSU5JQUpHRFpjRElBSWdEV3NnQUNnQ0FDSUJhaUVXSUEwZ0FXdEJBV29oRndOQUlBMHRBQUFpRkVFZ2NpQVVJQlJCdjM5cVFmOEJjVUVhU1J0Qi93RnhJQUZCb01LQWdBQnFMUUFBUnczOUFpQUJRUUZHRGZBQ0lBRkJBV29oQVNBTlFRRnFJZzBnQWtjTkFBc2dBQ0FXTmdJQURKY0RDMEhMQUNFUUlBRWlEU0FDUmcyV0F5QUNJQTFySUFBb0FnQWlBV29oRmlBTklBRnJRUTVxSVJjRFFDQU5MUUFBSWhSQklISWdGQ0FVUWI5L2FrSC9BWEZCR2trYlFmOEJjU0FCUWFMQ2dJQUFhaTBBQUVjTi9BSWdBVUVPUmczd0FpQUJRUUZxSVFFZ0RVRUJhaUlOSUFKSERRQUxJQUFnRmpZQ0FBeVdBd3RCekFBaEVDQUJJZzBnQWtZTmxRTWdBaUFOYXlBQUtBSUFJZ0ZxSVJZZ0RTQUJhMEVQYWlFWEEwQWdEUzBBQUNJVVFTQnlJQlFnRkVHL2YycEIvd0Z4UVJwSkcwSC9BWEVnQVVIQXdvQ0FBR290QUFCSERmc0NBa0FnQVVFUFJ3MEFRUU1oQVF6eEFnc2dBVUVCYWlFQklBMUJBV29pRFNBQ1J3MEFDeUFBSUJZMkFnQU1sUU1MUWMwQUlSQWdBU0lOSUFKR0RaUURJQUlnRFdzZ0FDZ0NBQ0lCYWlFV0lBMGdBV3RCQldvaEZ3TkFJQTB0QUFBaUZFRWdjaUFVSUJSQnYzOXFRZjhCY1VFYVNSdEIvd0Z4SUFGQjBNS0FnQUJxTFFBQVJ3MzZBZ0pBSUFGQkJVY05BRUVFSVFFTThBSUxJQUZCQVdvaEFTQU5RUUZxSWcwZ0FrY05BQXNnQUNBV05nSUFESlFEQ3dKQUlBRWlEU0FDUncwQVFjNEFJUkFNbEFNTEFrQUNRQUpBQWtBZ0RTMEFBQ0lCUVNCeUlBRWdBVUcvZjJwQi93RnhRUnBKRzBIL0FYRkJuWDlxRGhNQS9RTDlBdjBDL1FMOUF2MEMvUUw5QXYwQy9RTDlBdjBDQWYwQy9RTDlBZ0lEL1FJTElBMUJBV29oQVVIQkFDRVFEUDBDQ3lBTlFRRnFJUUZCd2dBaEVBejhBZ3NnRFVFQmFpRUJRY01BSVJBTSt3SUxJQTFCQVdvaEFVSEVBQ0VRRFBvQ0N3SkFJQUVpQVNBQ1JnMEFJQUJCallDQWdBQTJBZ2dnQUNBQk5nSUVJQUVoQVVIRkFDRVFEUG9DQzBIUEFDRVFESklEQ3lBUUlRRUNRQUpBSUJBdEFBQkJkbW9PQkFHb0FxZ0NBS2dDQ3lBUVFRRnFJUUVMUVNjaEVBejRBZ3NDUUNBQklnRWdBa2NOQUVIUkFDRVFESkVEQ3dKQUlBRXRBQUJCSUVZTkFDQUJJUUVNalFFTElBRkJBV29oQVNBQUxRQXRRUUZ4UlEzSEFTQUJJUUVNakFFTElBRWlGeUFDUnczSUFVSFNBQ0VRREk4REMwSFRBQ0VRSUFFaUZDQUNSZzJPQXlBQ0lCUnJJQUFvQWdBaUFXb2hGaUFVSUFGclFRRnFJUmNEUUNBVUxRQUFJQUZCMXNLQWdBQnFMUUFBUnczTUFTQUJRUUZHRGNjQklBRkJBV29oQVNBVVFRRnFJaFFnQWtjTkFBc2dBQ0FXTmdJQURJNERDd0pBSUFFaUFTQUNSdzBBUWRVQUlSQU1qZ01MSUFFdEFBQkJDa2NOekFFZ0FVRUJhaUVCRE1jQkN3SkFJQUVpQVNBQ1J3MEFRZFlBSVJBTWpRTUxBa0FDUUNBQkxRQUFRWFpxRGdRQXpRSE5BUUhOQVFzZ0FVRUJhaUVCRE1jQkN5QUJRUUZxSVFGQnlnQWhFQXp6QWdzZ0FDQUJJZ0VnQWhDdWdJQ0FBQ0lRRGNzQklBRWhBVUhOQUNFUURQSUNDeUFBTFFBcFFTSkdEWVVEREtZQ0N3SkFJQUVpQVNBQ1J3MEFRZHNBSVJBTWlnTUxRUUFoRkVFQklSZEJBU0VXUVFBaEVBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJMUUFBUVZCcURnclVBZE1CQUFFQ0F3UUZCZ2pWQVF0QkFpRVFEQVlMUVFNaEVBd0ZDMEVFSVJBTUJBdEJCU0VRREFNTFFRWWhFQXdDQzBFSElSQU1BUXRCQ0NFUUMwRUFJUmRCQUNFV1FRQWhGQXpNQVF0QkNTRVFRUUVoRkVFQUlSZEJBQ0VXRE1zQkN3SkFJQUVpQVNBQ1J3MEFRZDBBSVJBTWlRTUxJQUV0QUFCQkxrY056QUVnQVVFQmFpRUJES1lDQ3lBQklnRWdBa2NOekFGQjN3QWhFQXlIQXdzQ1FDQUJJZ0VnQWtZTkFDQUFRWTZBZ0lBQU5nSUlJQUFnQVRZQ0JDQUJJUUZCMEFBaEVBenVBZ3RCNEFBaEVBeUdBd3RCNFFBaEVDQUJJZ0VnQWtZTmhRTWdBaUFCYXlBQUtBSUFJaFJxSVJZZ0FTQVVhMEVEYWlFWEEwQWdBUzBBQUNBVVFlTENnSUFBYWkwQUFFY056UUVnRkVFRFJnM01BU0FVUVFGcUlSUWdBVUVCYWlJQklBSkhEUUFMSUFBZ0ZqWUNBQXlGQXd0QjRnQWhFQ0FCSWdFZ0FrWU5oQU1nQWlBQmF5QUFLQUlBSWhScUlSWWdBU0FVYTBFQ2FpRVhBMEFnQVMwQUFDQVVRZWJDZ0lBQWFpMEFBRWNOekFFZ0ZFRUNSZzNPQVNBVVFRRnFJUlFnQVVFQmFpSUJJQUpIRFFBTElBQWdGallDQUF5RUF3dEI0d0FoRUNBQklnRWdBa1lOZ3dNZ0FpQUJheUFBS0FJQUloUnFJUllnQVNBVWEwRURhaUVYQTBBZ0FTMEFBQ0FVUWVuQ2dJQUFhaTBBQUVjTnl3RWdGRUVEUmczT0FTQVVRUUZxSVJRZ0FVRUJhaUlCSUFKSERRQUxJQUFnRmpZQ0FBeURBd3NDUUNBQklnRWdBa2NOQUVIbEFDRVFESU1EQ3lBQUlBRkJBV29pQVNBQ0VLaUFnSUFBSWhBTnpRRWdBU0VCUWRZQUlSQU02UUlMQWtBZ0FTSUJJQUpHRFFBRFFBSkFJQUV0QUFBaUVFRWdSZzBBQWtBQ1FBSkFJQkJCdUg5cURnc0FBYzhCendIUEFjOEJ6d0hQQWM4Qnp3RUN6d0VMSUFGQkFXb2hBVUhTQUNFUURPMENDeUFCUVFGcUlRRkIwd0FoRUF6c0Fnc2dBVUVCYWlFQlFkUUFJUkFNNndJTElBRkJBV29pQVNBQ1J3MEFDMEhrQUNFUURJSURDMEhrQUNFUURJRURDd05BQWtBZ0FTMEFBRUh3d29DQUFHb3RBQUFpRUVFQlJnMEFJQkJCZm1vT0E4OEIwQUhSQWRJQkN5QUJRUUZxSWdFZ0FrY05BQXRCNWdBaEVBeUFBd3NDUUNBQklnRWdBa1lOQUNBQlFRRnFJUUVNQXd0QjV3QWhFQXovQWdzRFFBSkFJQUV0QUFCQjhNU0FnQUJxTFFBQUloQkJBVVlOQUFKQUlCQkJmbW9PQk5JQjB3SFVBUURWQVFzZ0FTRUJRZGNBSVJBTTV3SUxJQUZCQVdvaUFTQUNSdzBBQzBIb0FDRVFEUDRDQ3dKQUlBRWlBU0FDUncwQVFla0FJUkFNL2dJTEFrQWdBUzBBQUNJUVFYWnFEaHE2QWRVQjFRRzhBZFVCMVFIVkFkVUIxUUhWQWRVQjFRSFZBZFVCMVFIVkFkVUIxUUhWQWRVQjFRSFZBY29CMVFIVkFRRFRBUXNnQVVFQmFpRUJDMEVHSVJBTTR3SUxBMEFDUUNBQkxRQUFRZkRHZ0lBQWFpMEFBRUVCUmcwQUlBRWhBUXllQWdzZ0FVRUJhaUlCSUFKSERRQUxRZW9BSVJBTSt3SUxBa0FnQVNJQklBSkdEUUFnQVVFQmFpRUJEQU1MUWVzQUlSQU0rZ0lMQWtBZ0FTSUJJQUpIRFFCQjdBQWhFQXo2QWdzZ0FVRUJhaUVCREFFTEFrQWdBU0lCSUFKSERRQkI3UUFoRUF6NUFnc2dBVUVCYWlFQkMwRUVJUkFNM2dJTEFrQWdBU0lVSUFKSERRQkI3Z0FoRUF6M0Fnc2dGQ0VCQWtBQ1FBSkFJQlF0QUFCQjhNaUFnQUJxTFFBQVFYOXFEZ2ZVQWRVQjFnRUFuQUlCQXRjQkN5QVVRUUZxSVFFTUNnc2dGRUVCYWlFQkRNMEJDMEVBSVJBZ0FFRUFOZ0ljSUFCQm01S0FnQUEyQWhBZ0FFRUhOZ0lNSUFBZ0ZFRUJhallDRkF6MkFnc0NRQU5BQWtBZ0FTMEFBRUh3eUlDQUFHb3RBQUFpRUVFRVJnMEFBa0FDUUNBUVFYOXFEZ2ZTQWRNQjFBSFpBUUFFQWRrQkN5QUJJUUZCMmdBaEVBemdBZ3NnQVVFQmFpRUJRZHdBSVJBTTN3SUxJQUZCQVdvaUFTQUNSdzBBQzBIdkFDRVFEUFlDQ3lBQlFRRnFJUUVNeXdFTEFrQWdBU0lVSUFKSERRQkI4QUFoRUF6MUFnc2dGQzBBQUVFdlJ3M1VBU0FVUVFGcUlRRU1CZ3NDUUNBQkloUWdBa2NOQUVIeEFDRVFEUFFDQ3dKQUlCUXRBQUFpQVVFdlJ3MEFJQlJCQVdvaEFVSGRBQ0VRRE5zQ0N5QUJRWFpxSWdSQkZrc04wd0ZCQVNBRWRFR0pnSUFDY1VVTjB3RU15Z0lMQWtBZ0FTSUJJQUpHRFFBZ0FVRUJhaUVCUWQ0QUlSQU0yZ0lMUWZJQUlSQU04Z0lMQWtBZ0FTSVVJQUpIRFFCQjlBQWhFQXp5QWdzZ0ZDRUJBa0FnRkMwQUFFSHd6SUNBQUdvdEFBQkJmMm9PQThrQ2xBSUExQUVMUWVFQUlSQU0yQUlMQWtBZ0FTSVVJQUpHRFFBRFFBSkFJQlF0QUFCQjhNcUFnQUJxTFFBQUlnRkJBMFlOQUFKQUlBRkJmMm9PQXNzQ0FOVUJDeUFVSVFGQjN3QWhFQXphQWdzZ0ZFRUJhaUlVSUFKSERRQUxRZk1BSVJBTThRSUxRZk1BSVJBTThBSUxBa0FnQVNJQklBSkdEUUFnQUVHUGdJQ0FBRFlDQ0NBQUlBRTJBZ1FnQVNFQlFlQUFJUkFNMXdJTFFmVUFJUkFNN3dJTEFrQWdBU0lCSUFKSERRQkI5Z0FoRUF6dkFnc2dBRUdQZ0lDQUFEWUNDQ0FBSUFFMkFnUWdBU0VCQzBFRElSQU0xQUlMQTBBZ0FTMEFBRUVnUnczREFpQUJRUUZxSWdFZ0FrY05BQXRCOXdBaEVBenNBZ3NDUUNBQklnRWdBa2NOQUVINEFDRVFET3dDQ3lBQkxRQUFRU0JIRGM0QklBRkJBV29oQVF6dkFRc2dBQ0FCSWdFZ0FoQ3NnSUNBQUNJUURjNEJJQUVoQVF5T0Fnc0NRQ0FCSWdRZ0FrY05BRUg2QUNFUURPb0NDeUFFTFFBQVFjd0FSdzNSQVNBRVFRRnFJUUZCRXlFUURNOEJDd0pBSUFFaUJDQUNSdzBBUWZzQUlSQU02UUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJXb2hFQU5BSUFRdEFBQWdBVUh3em9DQUFHb3RBQUJIRGRBQklBRkJCVVlOemdFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQit3QWhFQXpvQWdzQ1FDQUJJZ1FnQWtjTkFFSDhBQ0VRRE9nQ0N3SkFBa0FnQkMwQUFFRzlmMm9PREFEUkFkRUIwUUhSQWRFQjBRSFJBZEVCMFFIUkFRSFJBUXNnQkVFQmFpRUJRZVlBSVJBTXp3SUxJQVJCQVdvaEFVSG5BQ0VRRE00Q0N3SkFJQUVpQkNBQ1J3MEFRZjBBSVJBTTV3SUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQW1vaEVBSkFBMEFnQkMwQUFDQUJRZTNQZ0lBQWFpMEFBRWNOendFZ0FVRUNSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWYwQUlSQU01d0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJFQ0VRRE13QkN3SkFJQUVpQkNBQ1J3MEFRZjRBSVJBTTVnSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQldvaEVBSkFBMEFnQkMwQUFDQUJRZmJPZ0lBQWFpMEFBRWNOemdFZ0FVRUZSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWY0QUlSQU01Z0lMSUFCQkFEWUNBQ0FRUVFGcUlRRkJGaUVRRE1zQkN3SkFJQUVpQkNBQ1J3MEFRZjhBSVJBTTVRSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQTJvaEVBSkFBMEFnQkMwQUFDQUJRZnpPZ0lBQWFpMEFBRWNOelFFZ0FVRURSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWY4QUlSQU01UUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJCU0VRRE1vQkN3SkFJQUVpQkNBQ1J3MEFRWUFCSVJBTTVBSUxJQVF0QUFCQjJRQkhEY3NCSUFSQkFXb2hBVUVJSVJBTXlRRUxBa0FnQVNJRUlBSkhEUUJCZ1FFaEVBempBZ3NDUUFKQUlBUXRBQUJCc245cURnTUF6QUVCekFFTElBUkJBV29oQVVIckFDRVFETW9DQ3lBRVFRRnFJUUZCN0FBaEVBekpBZ3NDUUNBQklnUWdBa2NOQUVHQ0FTRVFET0lDQ3dKQUFrQWdCQzBBQUVHNGYyb09DQURMQWNzQnl3SExBY3NCeXdFQnl3RUxJQVJCQVdvaEFVSHFBQ0VRRE1rQ0N5QUVRUUZxSVFGQjdRQWhFQXpJQWdzQ1FDQUJJZ1FnQWtjTkFFR0RBU0VRRE9FQ0N5QUNJQVJySUFBb0FnQWlBV29oRUNBRUlBRnJRUUpxSVJRQ1FBTkFJQVF0QUFBZ0FVR0F6NENBQUdvdEFBQkhEY2tCSUFGQkFrWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0VEWUNBRUdEQVNFUURPRUNDMEVBSVJBZ0FFRUFOZ0lBSUJSQkFXb2hBUXpHQVFzQ1FDQUJJZ1FnQWtjTkFFR0VBU0VRRE9BQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUVJxSVJBQ1FBTkFJQVF0QUFBZ0FVR0R6NENBQUdvdEFBQkhEY2dCSUFGQkJFWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdFQVNFUURPQUNDeUFBUVFBMkFnQWdFRUVCYWlFQlFTTWhFQXpGQVFzQ1FDQUJJZ1FnQWtjTkFFR0ZBU0VRRE44Q0N3SkFBa0FnQkMwQUFFRzBmMm9PQ0FESUFjZ0J5QUhJQWNnQnlBRUJ5QUVMSUFSQkFXb2hBVUh2QUNFUURNWUNDeUFFUVFGcUlRRkI4QUFoRUF6RkFnc0NRQ0FCSWdRZ0FrY05BRUdHQVNFUURONENDeUFFTFFBQVFjVUFSdzNGQVNBRVFRRnFJUUVNZ3dJTEFrQWdBU0lFSUFKSERRQkJod0VoRUF6ZEFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVEYWlFUUFrQURRQ0FFTFFBQUlBRkJpTStBZ0FCcUxRQUFSdzNGQVNBQlFRTkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCaHdFaEVBemRBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRXRJUkFNd2dFTEFrQWdBU0lFSUFKSERRQkJpQUVoRUF6Y0Fnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVJYWlFUUFrQURRQ0FFTFFBQUlBRkIwTStBZ0FCcUxRQUFSdzNFQVNBQlFRaEdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCaUFFaEVBemNBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRXBJUkFNd1FFTEFrQWdBU0lCSUFKSERRQkJpUUVoRUF6YkFndEJBU0VRSUFFdEFBQkIzd0JIRGNBQklBRkJBV29oQVF5QkFnc0NRQ0FCSWdRZ0FrY05BRUdLQVNFUUROb0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFGcUlSQURRQ0FFTFFBQUlBRkJqTStBZ0FCcUxRQUFSdzNCQVNBQlFRRkdEYThDSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUVlvQklSQU0yUUlMQWtBZ0FTSUVJQUpIRFFCQml3RWhFQXpaQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUNhaUVRQWtBRFFDQUVMUUFBSUFGQmpzK0FnQUJxTFFBQVJ3M0JBU0FCUVFKR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJpd0VoRUF6WkFnc2dBRUVBTmdJQUlCQkJBV29oQVVFQ0lSQU12Z0VMQWtBZ0FTSUVJQUpIRFFCQmpBRWhFQXpZQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQWtBRFFDQUVMUUFBSUFGQjhNK0FnQUJxTFFBQVJ3M0FBU0FCUVFGR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJqQUVoRUF6WUFnc2dBRUVBTmdJQUlCQkJBV29oQVVFZklSQU12UUVMQWtBZ0FTSUVJQUpIRFFCQmpRRWhFQXpYQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQWtBRFFDQUVMUUFBSUFGQjhzK0FnQUJxTFFBQVJ3Mi9BU0FCUVFGR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJqUUVoRUF6WEFnc2dBRUVBTmdJQUlCQkJBV29oQVVFSklSQU12QUVMQWtBZ0FTSUVJQUpIRFFCQmpnRWhFQXpXQWdzQ1FBSkFJQVF0QUFCQnQzOXFEZ2NBdndHL0FiOEJ2d0cvQVFHL0FRc2dCRUVCYWlFQlFmZ0FJUkFNdlFJTElBUkJBV29oQVVINUFDRVFETHdDQ3dKQUlBRWlCQ0FDUncwQVFZOEJJUkFNMVFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJCV29oRUFKQUEwQWdCQzBBQUNBQlFaSFBnSUFBYWkwQUFFY052UUVnQVVFRlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWThCSVJBTTFRSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkdDRVFETG9CQ3dKQUlBRWlCQ0FDUncwQVFaQUJJUkFNMUFJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBbW9oRUFKQUEwQWdCQzBBQUNBQlFaZlBnSUFBYWkwQUFFY052QUVnQVVFQ1JnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWkFCSVJBTTFBSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkZ5RVFETGtCQ3dKQUlBRWlCQ0FDUncwQVFaRUJJUkFNMHdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJCbW9oRUFKQUEwQWdCQzBBQUNBQlFaclBnSUFBYWkwQUFFY051d0VnQVVFR1JnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWkVCSVJBTTB3SUxJQUJCQURZQ0FDQVFRUUZxSVFGQkZTRVFETGdCQ3dKQUlBRWlCQ0FDUncwQVFaSUJJUkFNMGdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJCV29oRUFKQUEwQWdCQzBBQUNBQlFhSFBnSUFBYWkwQUFFY051Z0VnQVVFRlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWklCSVJBTTBnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkhpRVFETGNCQ3dKQUlBRWlCQ0FDUncwQVFaTUJJUkFNMFFJTElBUXRBQUJCekFCSERiZ0JJQVJCQVdvaEFVRUtJUkFNdGdFTEFrQWdCQ0FDUncwQVFaUUJJUkFNMEFJTEFrQUNRQ0FFTFFBQVFiOS9hZzRQQUxrQnVRRzVBYmtCdVFHNUFia0J1UUc1QWJrQnVRRzVBYmtCQWJrQkN5QUVRUUZxSVFGQi9nQWhFQXkzQWdzZ0JFRUJhaUVCUWY4QUlSQU10Z0lMQWtBZ0JDQUNSdzBBUVpVQklSQU16d0lMQWtBQ1FDQUVMUUFBUWI5L2FnNERBTGdCQWJnQkN5QUVRUUZxSVFGQi9RQWhFQXkyQWdzZ0JFRUJhaUVFUVlBQklSQU10UUlMQWtBZ0JDQUNSdzBBUVpZQklSQU16Z0lMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFXb2hFQUpBQTBBZ0JDMEFBQ0FCUWFmUGdJQUFhaTBBQUVjTnRnRWdBVUVCUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaWUJJUkFNemdJTElBQkJBRFlDQUNBUVFRRnFJUUZCQ3lFUURMTUJDd0pBSUFRZ0FrY05BRUdYQVNFUURNMENDd0pBQWtBQ1FBSkFJQVF0QUFCQlUyb09Jd0M0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCdUFHNEFiZ0J1QUc0QWJnQnVBRzRBYmdCQWJnQnVBRzRBYmdCdUFFQ3VBRzRBYmdCQTdnQkN5QUVRUUZxSVFGQit3QWhFQXkyQWdzZ0JFRUJhaUVCUWZ3QUlSQU10UUlMSUFSQkFXb2hCRUdCQVNFUURMUUNDeUFFUVFGcUlRUkJnZ0VoRUF5ekFnc0NRQ0FFSUFKSERRQkJtQUVoRUF6TUFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVFYWlFUUFrQURRQ0FFTFFBQUlBRkJxYytBZ0FCcUxRQUFSdzIwQVNBQlFRUkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCbUFFaEVBek1BZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRVpJUkFNc1FFTEFrQWdCQ0FDUncwQVFaa0JJUkFNeXdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJCV29oRUFKQUEwQWdCQzBBQUNBQlFhN1BnSUFBYWkwQUFFY05zd0VnQVVFRlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRWmtCSVJBTXl3SUxJQUJCQURZQ0FDQVFRUUZxSVFGQkJpRVFETEFCQ3dKQUlBUWdBa2NOQUVHYUFTRVFETW9DQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRRnFJUkFDUUFOQUlBUXRBQUFnQVVHMHo0Q0FBR290QUFCSERiSUJJQUZCQVVZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR2FBU0VRRE1vQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVJ3aEVBeXZBUXNDUUNBRUlBSkhEUUJCbXdFaEVBekpBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFQmFpRVFBa0FEUUNBRUxRQUFJQUZCdHMrQWdBQnFMUUFBUncyeEFTQUJRUUZHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQm13RWhFQXpKQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVuSVJBTXJnRUxBa0FnQkNBQ1J3MEFRWndCSVJBTXlBSUxBa0FDUUNBRUxRQUFRYXgvYWc0Q0FBR3hBUXNnQkVFQmFpRUVRWVlCSVJBTXJ3SUxJQVJCQVdvaEJFR0hBU0VRREs0Q0N3SkFJQVFnQWtjTkFFR2RBU0VRRE1jQ0N5QUNJQVJySUFBb0FnQWlBV29oRkNBRUlBRnJRUUZxSVJBQ1FBTkFJQVF0QUFBZ0FVRzR6NENBQUdvdEFBQkhEYThCSUFGQkFVWU5BU0FCUVFGcUlRRWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUdkQVNFUURNY0NDeUFBUVFBMkFnQWdFRUVCYWlFQlFTWWhFQXlzQVFzQ1FDQUVJQUpIRFFCQm5nRWhFQXpHQWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRUJhaUVRQWtBRFFDQUVMUUFBSUFGQnVzK0FnQUJxTFFBQVJ3MnVBU0FCUVFGR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJuZ0VoRUF6R0Fnc2dBRUVBTmdJQUlCQkJBV29oQVVFRElSQU1xd0VMQWtBZ0JDQUNSdzBBUVo4QklSQU14UUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFtb2hFQUpBQTBBZ0JDMEFBQ0FCUWUzUGdJQUFhaTBBQUVjTnJRRWdBVUVDUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFaOEJJUkFNeFFJTElBQkJBRFlDQUNBUVFRRnFJUUZCRENFUURLb0JDd0pBSUFRZ0FrY05BRUdnQVNFUURNUUNDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFOcUlSQUNRQU5BSUFRdEFBQWdBVUc4ejRDQUFHb3RBQUJIRGF3QklBRkJBMFlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHZ0FTRVFETVFDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUTBoRUF5cEFRc0NRQ0FFSUFKSERRQkJvUUVoRUF6REFnc0NRQUpBSUFRdEFBQkJ1bjlxRGdzQXJBR3NBYXdCckFHc0Fhd0JyQUdzQWF3QkFhd0JDeUFFUVFGcUlRUkJpd0VoRUF5cUFnc2dCRUVCYWlFRVFZd0JJUkFNcVFJTEFrQWdCQ0FDUncwQVFhSUJJUkFNd2dJTElBUXRBQUJCMEFCSERha0JJQVJCQVdvaEJBenBBUXNDUUNBRUlBSkhEUUJCb3dFaEVBekJBZ3NDUUFKQUlBUXRBQUJCdDM5cURnY0JxZ0dxQWFvQnFnR3FBUUNxQVFzZ0JFRUJhaUVFUVk0QklSQU1xQUlMSUFSQkFXb2hBVUVpSVJBTXBnRUxBa0FnQkNBQ1J3MEFRYVFCSVJBTXdBSUxJQUlnQkdzZ0FDZ0NBQ0lCYWlFVUlBUWdBV3RCQVdvaEVBSkFBMEFnQkMwQUFDQUJRY0RQZ0lBQWFpMEFBRWNOcUFFZ0FVRUJSZzBCSUFGQkFXb2hBU0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWFRQklSQU13QUlMSUFCQkFEWUNBQ0FRUVFGcUlRRkJIU0VRREtVQkN3SkFJQVFnQWtjTkFFR2xBU0VRREw4Q0N3SkFBa0FnQkMwQUFFR3VmMm9PQXdDb0FRR29BUXNnQkVFQmFpRUVRWkFCSVJBTXBnSUxJQVJCQVdvaEFVRUVJUkFNcEFFTEFrQWdCQ0FDUncwQVFhWUJJUkFNdmdJTEFrQUNRQUpBQWtBQ1FDQUVMUUFBUWI5L2FnNFZBS29CcWdHcUFhb0JxZ0dxQWFvQnFnR3FBYW9CQWFvQnFnRUNxZ0dxQVFPcUFhb0JCS29CQ3lBRVFRRnFJUVJCaUFFaEVBeW9BZ3NnQkVFQmFpRUVRWWtCSVJBTXB3SUxJQVJCQVdvaEJFR0tBU0VRREtZQ0N5QUVRUUZxSVFSQmp3RWhFQXlsQWdzZ0JFRUJhaUVFUVpFQklSQU1wQUlMQWtBZ0JDQUNSdzBBUWFjQklSQU12UUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkFtb2hFQUpBQTBBZ0JDMEFBQ0FCUWUzUGdJQUFhaTBBQUVjTnBRRWdBVUVDUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFhY0JJUkFNdlFJTElBQkJBRFlDQUNBUVFRRnFJUUZCRVNFUURLSUJDd0pBSUFRZ0FrY05BRUdvQVNFUURMd0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUhDejRDQUFHb3RBQUJIRGFRQklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHb0FTRVFETHdDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRU3doRUF5aEFRc0NRQ0FFSUFKSERRQkJxUUVoRUF5N0Fnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVFYWlFUUFrQURRQ0FFTFFBQUlBRkJ4YytBZ0FCcUxRQUFSdzJqQVNBQlFRUkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCcVFFaEVBeTdBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRXJJUkFNb0FFTEFrQWdCQ0FDUncwQVFhb0JJUkFNdWdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBbW9oRUFKQUEwQWdCQzBBQUNBQlFjclBnSUFBYWkwQUFFY05vZ0VnQVVFQ1JnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRYW9CSVJBTXVnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkZDRVFESjhCQ3dKQUlBUWdBa2NOQUVHckFTRVFETGtDQ3dKQUFrQUNRQUpBSUFRdEFBQkJ2bjlxRGc4QUFRS2tBYVFCcEFHa0FhUUJwQUdrQWFRQnBBR2tBYVFCQTZRQkN5QUVRUUZxSVFSQmt3RWhFQXlpQWdzZ0JFRUJhaUVFUVpRQklSQU1vUUlMSUFSQkFXb2hCRUdWQVNFUURLQUNDeUFFUVFGcUlRUkJsZ0VoRUF5ZkFnc0NRQ0FFSUFKSERRQkJyQUVoRUF5NEFnc2dCQzBBQUVIRkFFY05ud0VnQkVFQmFpRUVET0FCQ3dKQUlBUWdBa2NOQUVHdEFTRVFETGNDQ3lBQ0lBUnJJQUFvQWdBaUFXb2hGQ0FFSUFGclFRSnFJUkFDUUFOQUlBUXRBQUFnQVVITno0Q0FBR290QUFCSERaOEJJQUZCQWtZTkFTQUJRUUZxSVFFZ0JFRUJhaUlFSUFKSERRQUxJQUFnRkRZQ0FFR3RBU0VRRExjQ0N5QUFRUUEyQWdBZ0VFRUJhaUVCUVE0aEVBeWNBUXNDUUNBRUlBSkhEUUJCcmdFaEVBeTJBZ3NnQkMwQUFFSFFBRWNOblFFZ0JFRUJhaUVCUVNVaEVBeWJBUXNDUUNBRUlBSkhEUUJCcndFaEVBeTFBZ3NnQWlBRWF5QUFLQUlBSWdGcUlSUWdCQ0FCYTBFSWFpRVFBa0FEUUNBRUxRQUFJQUZCME0rQWdBQnFMUUFBUncyZEFTQUJRUWhHRFFFZ0FVRUJhaUVCSUFSQkFXb2lCQ0FDUncwQUN5QUFJQlEyQWdCQnJ3RWhFQXkxQWdzZ0FFRUFOZ0lBSUJCQkFXb2hBVUVxSVJBTW1nRUxBa0FnQkNBQ1J3MEFRYkFCSVJBTXRBSUxBa0FDUUNBRUxRQUFRYXQvYWc0TEFKMEJuUUdkQVowQm5RR2RBWjBCblFHZEFRR2RBUXNnQkVFQmFpRUVRWm9CSVJBTW13SUxJQVJCQVdvaEJFR2JBU0VRREpvQ0N3SkFJQVFnQWtjTkFFR3hBU0VRRExNQ0N3SkFBa0FnQkMwQUFFRy9mMm9PRkFDY0Fad0JuQUdjQVp3Qm5BR2NBWndCbkFHY0Fad0JuQUdjQVp3Qm5BR2NBWndCbkFFQm5BRUxJQVJCQVdvaEJFR1pBU0VRREpvQ0N5QUVRUUZxSVFSQm5BRWhFQXlaQWdzQ1FDQUVJQUpIRFFCQnNnRWhFQXl5QWdzZ0FpQUVheUFBS0FJQUlnRnFJUlFnQkNBQmEwRURhaUVRQWtBRFFDQUVMUUFBSUFGQjJjK0FnQUJxTFFBQVJ3MmFBU0FCUVFOR0RRRWdBVUVCYWlFQklBUkJBV29pQkNBQ1J3MEFDeUFBSUJRMkFnQkJzZ0VoRUF5eUFnc2dBRUVBTmdJQUlCQkJBV29oQVVFaElSQU1sd0VMQWtBZ0JDQUNSdzBBUWJNQklSQU1zUUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkJtb2hFQUpBQTBBZ0JDMEFBQ0FCUWQzUGdJQUFhaTBBQUVjTm1RRWdBVUVHUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFiTUJJUkFNc1FJTElBQkJBRFlDQUNBUVFRRnFJUUZCR2lFUURKWUJDd0pBSUFRZ0FrY05BRUcwQVNFUURMQUNDd0pBQWtBQ1FDQUVMUUFBUWJ0L2FnNFJBSm9CbWdHYUFab0JtZ0dhQVpvQm1nR2FBUUdhQVpvQm1nR2FBWm9CQXBvQkN5QUVRUUZxSVFSQm5RRWhFQXlZQWdzZ0JFRUJhaUVFUVo0QklSQU1sd0lMSUFSQkFXb2hCRUdmQVNFUURKWUNDd0pBSUFRZ0FrY05BRUcxQVNFUURLOENDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFWcUlSQUNRQU5BSUFRdEFBQWdBVUhrejRDQUFHb3RBQUJIRFpjQklBRkJCVVlOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHMUFTRVFESzhDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRU2doRUF5VUFRc0NRQ0FFSUFKSERRQkJ0Z0VoRUF5dUFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVDYWlFUUFrQURRQ0FFTFFBQUlBRkI2cytBZ0FCcUxRQUFSdzJXQVNBQlFRSkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCdGdFaEVBeXVBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRUhJUkFNa3dFTEFrQWdCQ0FDUncwQVFiY0JJUkFNclFJTEFrQUNRQ0FFTFFBQVFidC9hZzRPQUpZQmxnR1dBWllCbGdHV0FaWUJsZ0dXQVpZQmxnR1dBUUdXQVFzZ0JFRUJhaUVFUWFFQklSQU1sQUlMSUFSQkFXb2hCRUdpQVNFUURKTUNDd0pBSUFRZ0FrY05BRUc0QVNFUURLd0NDeUFDSUFScklBQW9BZ0FpQVdvaEZDQUVJQUZyUVFKcUlSQUNRQU5BSUFRdEFBQWdBVUh0ejRDQUFHb3RBQUJIRFpRQklBRkJBa1lOQVNBQlFRRnFJUUVnQkVFQmFpSUVJQUpIRFFBTElBQWdGRFlDQUVHNEFTRVFES3dDQ3lBQVFRQTJBZ0FnRUVFQmFpRUJRUkloRUF5UkFRc0NRQ0FFSUFKSERRQkJ1UUVoRUF5ckFnc2dBaUFFYXlBQUtBSUFJZ0ZxSVJRZ0JDQUJhMEVCYWlFUUFrQURRQ0FFTFFBQUlBRkI4TStBZ0FCcUxRQUFSdzJUQVNBQlFRRkdEUUVnQVVFQmFpRUJJQVJCQVdvaUJDQUNSdzBBQ3lBQUlCUTJBZ0JCdVFFaEVBeXJBZ3NnQUVFQU5nSUFJQkJCQVdvaEFVRWdJUkFNa0FFTEFrQWdCQ0FDUncwQVFib0JJUkFNcWdJTElBSWdCR3NnQUNnQ0FDSUJhaUVVSUFRZ0FXdEJBV29oRUFKQUEwQWdCQzBBQUNBQlFmTFBnSUFBYWkwQUFFY05rZ0VnQVVFQlJnMEJJQUZCQVdvaEFTQUVRUUZxSWdRZ0FrY05BQXNnQUNBVU5nSUFRYm9CSVJBTXFnSUxJQUJCQURZQ0FDQVFRUUZxSVFGQkR5RVFESThCQ3dKQUlBUWdBa2NOQUVHN0FTRVFES2tDQ3dKQUFrQWdCQzBBQUVHM2Yyb09Cd0NTQVpJQmtnR1NBWklCQVpJQkN5QUVRUUZxSVFSQnBRRWhFQXlRQWdzZ0JFRUJhaUVFUWFZQklSQU1qd0lMQWtBZ0JDQUNSdzBBUWJ3QklSQU1xQUlMSUFJZ0JHc2dBQ2dDQUNJQmFpRVVJQVFnQVd0QkIyb2hFQUpBQTBBZ0JDMEFBQ0FCUWZUUGdJQUFhaTBBQUVjTmtBRWdBVUVIUmcwQklBRkJBV29oQVNBRVFRRnFJZ1FnQWtjTkFBc2dBQ0FVTmdJQVFid0JJUkFNcUFJTElBQkJBRFlDQUNBUVFRRnFJUUZCR3lFUURJMEJDd0pBSUFRZ0FrY05BRUc5QVNFUURLY0NDd0pBQWtBQ1FDQUVMUUFBUWI1L2FnNFNBSkVCa1FHUkFaRUJrUUdSQVpFQmtRR1JBUUdSQVpFQmtRR1JBWkVCa1FFQ2tRRUxJQVJCQVdvaEJFR2tBU0VRREk4Q0N5QUVRUUZxSVFSQnB3RWhFQXlPQWdzZ0JFRUJhaUVFUWFnQklSQU1qUUlMQWtBZ0JDQUNSdzBBUWI0QklSQU1wZ0lMSUFRdEFBQkJ6Z0JIRFkwQklBUkJBV29oQkF6UEFRc0NRQ0FFSUFKSERRQkJ2d0VoRUF5bEFnc0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRUxRQUFRYjkvYWc0VkFBRUNBNXdCQkFVR25BR2NBWndCQndnSkNndWNBUXdORGcrY0FRc2dCRUVCYWlFQlFlZ0FJUkFNbWdJTElBUkJBV29oQVVIcEFDRVFESmtDQ3lBRVFRRnFJUUZCN2dBaEVBeVlBZ3NnQkVFQmFpRUJRZklBSVJBTWx3SUxJQVJCQVdvaEFVSHpBQ0VRREpZQ0N5QUVRUUZxSVFGQjlnQWhFQXlWQWdzZ0JFRUJhaUVCUWZjQUlSQU1sQUlMSUFSQkFXb2hBVUg2QUNFUURKTUNDeUFFUVFGcUlRUkJnd0VoRUF5U0Fnc2dCRUVCYWlFRVFZUUJJUkFNa1FJTElBUkJBV29oQkVHRkFTRVFESkFDQ3lBRVFRRnFJUVJCa2dFaEVBeVBBZ3NnQkVFQmFpRUVRWmdCSVJBTWpnSUxJQVJCQVdvaEJFR2dBU0VRREkwQ0N5QUVRUUZxSVFSQm93RWhFQXlNQWdzZ0JFRUJhaUVFUWFvQklSQU1pd0lMQWtBZ0JDQUNSZzBBSUFCQmtJQ0FnQUEyQWdnZ0FDQUVOZ0lFUWFzQklSQU1pd0lMUWNBQklSQU1vd0lMSUFBZ0JTQUNFS3FBZ0lBQUlnRU5pd0VnQlNFQkRGd0xBa0FnQmlBQ1JnMEFJQVpCQVdvaEJReU5BUXRCd2dFaEVBeWhBZ3NEUUFKQUlCQXRBQUJCZG1vT0JJd0JBQUNQQVFBTElCQkJBV29pRUNBQ1J3MEFDMEhEQVNFUURLQUNDd0pBSUFjZ0FrWU5BQ0FBUVpHQWdJQUFOZ0lJSUFBZ0J6WUNCQ0FISVFGQkFTRVFESWNDQzBIRUFTRVFESjhDQ3dKQUlBY2dBa2NOQUVIRkFTRVFESjhDQ3dKQUFrQWdCeTBBQUVGMmFnNEVBYzRCemdFQXpnRUxJQWRCQVdvaEJneU5BUXNnQjBFQmFpRUZESWtCQ3dKQUlBY2dBa2NOQUVIR0FTRVFESjRDQ3dKQUFrQWdCeTBBQUVGMmFnNFhBWThCandFQmp3R1BBWThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0dQQVk4QkFJOEJDeUFIUVFGcUlRY0xRYkFCSVJBTWhBSUxBa0FnQ0NBQ1J3MEFRY2dCSVJBTW5RSUxJQWd0QUFCQklFY05qUUVnQUVFQU93RXlJQWhCQVdvaEFVR3pBU0VRRElNQ0N5QUJJUmNDUUFOQUlCY2lCeUFDUmcwQklBY3RBQUJCVUdwQi93RnhJaEJCQ2s4TnpBRUNRQ0FBTHdFeUloUkJtVE5MRFFBZ0FDQVVRUXBzSWhRN0FUSWdFRUgvL3dOeklCUkIvdjhEY1VrTkFDQUhRUUZxSVJjZ0FDQVVJQkJxSWhBN0FUSWdFRUgvL3dOeFFlZ0hTUTBCQ3d0QkFDRVFJQUJCQURZQ0hDQUFRY0dKZ0lBQU5nSVFJQUJCRFRZQ0RDQUFJQWRCQVdvMkFoUU1uQUlMUWNjQklSQU1td0lMSUFBZ0NDQUNFSzZBZ0lBQUloQkZEY29CSUJCQkZVY05qQUVnQUVISUFUWUNIQ0FBSUFnMkFoUWdBRUhKbDRDQUFEWUNFQ0FBUVJVMkFneEJBQ0VRREpvQ0N3SkFJQWtnQWtjTkFFSE1BU0VRREpvQ0MwRUFJUlJCQVNFWFFRRWhGa0VBSVJBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0NTMEFBRUZRYWc0S2xnR1ZBUUFCQWdNRUJRWUlsd0VMUVFJaEVBd0dDMEVESVJBTUJRdEJCQ0VRREFRTFFRVWhFQXdEQzBFR0lSQU1BZ3RCQnlFUURBRUxRUWdoRUF0QkFDRVhRUUFoRmtFQUlSUU1qZ0VMUVFraEVFRUJJUlJCQUNFWFFRQWhGZ3lOQVFzQ1FDQUtJQUpIRFFCQnpnRWhFQXlaQWdzZ0NpMEFBRUV1UncyT0FTQUtRUUZxSVFrTXlnRUxJQXNnQWtjTmpnRkIwQUVoRUF5WEFnc0NRQ0FMSUFKR0RRQWdBRUdPZ0lDQUFEWUNDQ0FBSUFzMkFnUkJ0d0VoRUF6K0FRdEIwUUVoRUF5V0Fnc0NRQ0FFSUFKSERRQkIwZ0VoRUF5V0Fnc2dBaUFFYXlBQUtBSUFJaEJxSVJRZ0JDQVFhMEVFYWlFTEEwQWdCQzBBQUNBUVFmelBnSUFBYWkwQUFFY05qZ0VnRUVFRVJnM3BBU0FRUVFGcUlSQWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUhTQVNFUURKVUNDeUFBSUF3Z0FoQ3NnSUNBQUNJQkRZMEJJQXdoQVF5NEFRc0NRQ0FFSUFKSERRQkIxQUVoRUF5VUFnc2dBaUFFYXlBQUtBSUFJaEJxSVJRZ0JDQVFhMEVCYWlFTUEwQWdCQzBBQUNBUVFZSFFnSUFBYWkwQUFFY05qd0VnRUVFQlJnMk9BU0FRUVFGcUlSQWdCRUVCYWlJRUlBSkhEUUFMSUFBZ0ZEWUNBRUhVQVNFUURKTUNDd0pBSUFRZ0FrY05BRUhXQVNFUURKTUNDeUFDSUFScklBQW9BZ0FpRUdvaEZDQUVJQkJyUVFKcUlRc0RRQ0FFTFFBQUlCQkJnOUNBZ0FCcUxRQUFSdzJPQVNBUVFRSkdEWkFCSUJCQkFXb2hFQ0FFUVFGcUlnUWdBa2NOQUFzZ0FDQVVOZ0lBUWRZQklSQU1rZ0lMQWtBZ0JDQUNSdzBBUWRjQklSQU1rZ0lMQWtBQ1FDQUVMUUFBUWJ0L2FnNFFBSThCandHUEFZOEJqd0dQQVk4Qmp3R1BBWThCandHUEFZOEJqd0VCandFTElBUkJBV29oQkVHN0FTRVFEUGtCQ3lBRVFRRnFJUVJCdkFFaEVBejRBUXNDUUNBRUlBSkhEUUJCMkFFaEVBeVJBZ3NnQkMwQUFFSElBRWNOakFFZ0JFRUJhaUVFRE1RQkN3SkFJQVFnQWtZTkFDQUFRWkNBZ0lBQU5nSUlJQUFnQkRZQ0JFRytBU0VRRFBjQkMwSFpBU0VRREk4Q0N3SkFJQVFnQWtjTkFFSGFBU0VRREk4Q0N5QUVMUUFBUWNnQVJnM0RBU0FBUVFFNkFDZ011UUVMSUFCQkFqb0FMeUFBSUFRZ0FoQ21nSUNBQUNJUURZMEJRY0lCSVJBTTlBRUxJQUF0QUNoQmYyb09BcmNCdVFHNEFRc0RRQUpBSUFRdEFBQkJkbW9PQkFDT0FZNEJBSTRCQ3lBRVFRRnFJZ1FnQWtjTkFBdEIzUUVoRUF5TEFnc2dBRUVBT2dBdklBQXRBQzFCQkhGRkRZUUNDeUFBUVFBNkFDOGdBRUVCT2dBMElBRWhBUXlNQVFzZ0VFRVZSZzNhQVNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCcDQ2QWdBQTJBaEFnQUVFU05nSU1RUUFoRUF5SUFnc0NRQ0FBSUJBZ0FoQzBnSUNBQUNJRURRQWdFQ0VCRElFQ0N3SkFJQVJCRlVjTkFDQUFRUU0yQWh3Z0FDQVFOZ0lVSUFCQnNKaUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBeUlBZ3NnQUVFQU5nSWNJQUFnRURZQ0ZDQUFRYWVPZ0lBQU5nSVFJQUJCRWpZQ0RFRUFJUkFNaHdJTElCQkJGVVlOMWdFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWRxTmdJQUFOZ0lRSUFCQkZEWUNERUVBSVJBTWhnSUxJQUFvQWdRaEZ5QUFRUUEyQWdRZ0VDQVJwMm9pRmlFQklBQWdGeUFRSUJZZ0ZCc2lFQkMxZ0lDQUFDSVVSUTJOQVNBQVFRYzJBaHdnQUNBUU5nSVVJQUFnRkRZQ0RFRUFJUkFNaFFJTElBQWdBQzhCTUVHQUFYSTdBVEFnQVNFQkMwRXFJUkFNNmdFTElCQkJGVVlOMFFFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVlPTWdJQUFOZ0lRSUFCQkV6WUNERUVBSVJBTWdnSUxJQkJCRlVZTnp3RWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFacVBnSUFBTmdJUUlBQkJJallDREVFQUlSQU1nUUlMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQzNnSUNBQUNJUURRQWdBVUVCYWlFQkRJMEJDeUFBUVF3MkFod2dBQ0FRTmdJTUlBQWdBVUVCYWpZQ0ZFRUFJUkFNZ0FJTElCQkJGVVlOekFFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVpxUGdJQUFOZ0lRSUFCQklqWUNERUVBSVJBTS93RUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDM2dJQ0FBQ0lRRFFBZ0FVRUJhaUVCREl3QkN5QUFRUTAyQWh3Z0FDQVFOZ0lNSUFBZ0FVRUJhallDRkVFQUlSQU0vZ0VMSUJCQkZVWU55UUVnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRY2FNZ0lBQU5nSVFJQUJCSXpZQ0RFRUFJUkFNL1FFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkM1Z0lDQUFDSVFEUUFnQVVFQmFpRUJESXNCQ3lBQVFRNDJBaHdnQUNBUU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTS9BRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSEFsWUNBQURZQ0VDQUFRUUkyQWd4QkFDRVFEUHNCQ3lBUVFSVkdEY1VCSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhHaklDQUFEWUNFQ0FBUVNNMkFneEJBQ0VRRFBvQkN5QUFRUkEyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTStRRUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDNWdJQ0FBQ0lFRFFBZ0FVRUJhaUVCRFBFQkN5QUFRUkUyQWh3Z0FDQUVOZ0lNSUFBZ0FVRUJhallDRkVFQUlSQU0rQUVMSUJCQkZVWU53UUVnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRY2FNZ0lBQU5nSVFJQUJCSXpZQ0RFRUFJUkFNOXdFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkM1Z0lDQUFDSVFEUUFnQVVFQmFpRUJESWdCQ3lBQVFSTTJBaHdnQUNBUU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTTlnRUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDNWdJQ0FBQ0lFRFFBZ0FVRUJhaUVCRE8wQkN5QUFRUlEyQWh3Z0FDQUVOZ0lNSUFBZ0FVRUJhallDRkVFQUlSQU05UUVMSUJCQkZVWU52UUVnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWnFQZ0lBQU5nSVFJQUJCSWpZQ0RFRUFJUkFNOUFFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkMzZ0lDQUFDSVFEUUFnQVVFQmFpRUJESVlCQ3lBQVFSWTJBaHdnQUNBUU5nSU1JQUFnQVVFQmFqWUNGRUVBSVJBTTh3RUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDM2dJQ0FBQ0lFRFFBZ0FVRUJhaUVCRE9rQkN5QUFRUmMyQWh3Z0FDQUVOZ0lNSUFBZ0FVRUJhallDRkVFQUlSQU04Z0VMSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhOazRDQUFEWUNFQ0FBUVF3MkFneEJBQ0VRRFBFQkMwSUJJUkVMSUJCQkFXb2hBUUpBSUFBcEF5QWlFa0wvLy8vLy8vLy8vdzlXRFFBZ0FDQVNRZ1NHSUJHRU53TWdJQUVoQVF5RUFRc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFhMkpnSUFBTmdJUUlBQkJERFlDREVFQUlSQU03d0VMSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUhOazRDQUFEWUNFQ0FBUVF3MkFneEJBQ0VRRE80QkN5QUFLQUlFSVJjZ0FFRUFOZ0lFSUJBZ0VhZHFJaFloQVNBQUlCY2dFQ0FXSUJRYkloQVF0WUNBZ0FBaUZFVU5jeUFBUVFVMkFod2dBQ0FRTmdJVUlBQWdGRFlDREVFQUlSQU03UUVMSUFCQkFEWUNIQ0FBSUJBMkFoUWdBRUdxbklDQUFEWUNFQ0FBUVE4MkFneEJBQ0VRRE93QkN5QUFJQkFnQWhDMGdJQ0FBQ0lCRFFFZ0VDRUJDMEVPSVJBTTBRRUxBa0FnQVVFVlJ3MEFJQUJCQWpZQ0hDQUFJQkEyQWhRZ0FFR3dtSUNBQURZQ0VDQUFRUlUyQWd4QkFDRVFET29CQ3lBQVFRQTJBaHdnQUNBUU5nSVVJQUJCcDQ2QWdBQTJBaEFnQUVFU05nSU1RUUFoRUF6cEFRc2dBVUVCYWlFUUFrQWdBQzhCTUNJQlFZQUJjVVVOQUFKQUlBQWdFQ0FDRUx1QWdJQUFJZ0VOQUNBUUlRRU1jQXNnQVVFVlJ3MjZBU0FBUVFVMkFod2dBQ0FRTmdJVUlBQkIrWmVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXpwQVFzQ1FDQUJRYUFFY1VHZ0JFY05BQ0FBTFFBdFFRSnhEUUFnQUVFQU5nSWNJQUFnRURZQ0ZDQUFRWmFUZ0lBQU5nSVFJQUJCQkRZQ0RFRUFJUkFNNlFFTElBQWdFQ0FDRUwyQWdJQUFHaUFRSVFFQ1FBSkFBa0FDUUFKQUlBQWdFQ0FDRUxPQWdJQUFEaFlDQVFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRREJBc2dBRUVCT2dBdUN5QUFJQUF2QVRCQndBQnlPd0V3SUJBaEFRdEJKaUVRRE5FQkN5QUFRU00yQWh3Z0FDQVFOZ0lVSUFCQnBaYUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBenBBUXNnQUVFQU5nSWNJQUFnRURZQ0ZDQUFRZFdMZ0lBQU5nSVFJQUJCRVRZQ0RFRUFJUkFNNkFFTElBQXRBQzFCQVhGRkRRRkJ3d0VoRUF6T0FRc0NRQ0FOSUFKR0RRQURRQUpBSUEwdEFBQkJJRVlOQUNBTklRRU14QUVMSUExQkFXb2lEU0FDUncwQUMwRWxJUkFNNXdFTFFTVWhFQXptQVFzZ0FDZ0NCQ0VFSUFCQkFEWUNCQ0FBSUFRZ0RSQ3ZnSUNBQUNJRVJRMnRBU0FBUVNZMkFod2dBQ0FFTmdJTUlBQWdEVUVCYWpZQ0ZFRUFJUkFNNVFFTElCQkJGVVlOcXdFZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWYyTmdJQUFOZ0lRSUFCQkhUWUNERUVBSVJBTTVBRUxJQUJCSnpZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBempBUXNnRUNFQlFRRWhGQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQXRBQ3hCZm1vT0J3WUZCUU1CQWdBRkN5QUFJQUF2QVRCQkNISTdBVEFNQXd0QkFpRVVEQUVMUVFRaEZBc2dBRUVCT2dBc0lBQWdBQzhCTUNBVWNqc0JNQXNnRUNFQkMwRXJJUkFNeWdFTElBQkJBRFlDSENBQUlCQTJBaFFnQUVHcmtvQ0FBRFlDRUNBQVFRczJBZ3hCQUNFUURPSUJDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkI0WStBZ0FBMkFoQWdBRUVLTmdJTVFRQWhFQXpoQVFzZ0FFRUFPZ0FzSUJBaEFReTlBUXNnRUNFQlFRRWhGQUpBQWtBQ1FBSkFBa0FnQUMwQUxFRjdhZzRFQXdFQ0FBVUxJQUFnQUM4Qk1FRUljanNCTUF3REMwRUNJUlFNQVF0QkJDRVVDeUFBUVFFNkFDd2dBQ0FBTHdFd0lCUnlPd0V3Q3lBUUlRRUxRU2toRUF6RkFRc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFmQ1VnSUFBTmdJUUlBQkJBellDREVFQUlSQU0zUUVMQWtBZ0RpMEFBRUVOUncwQUlBQW9BZ1FoQVNBQVFRQTJBZ1FDUUNBQUlBRWdEaEN4Z0lDQUFDSUJEUUFnRGtFQmFpRUJESFVMSUFCQkxEWUNIQ0FBSUFFMkFnd2dBQ0FPUVFGcU5nSVVRUUFoRUF6ZEFRc2dBQzBBTFVFQmNVVU5BVUhFQVNFUURNTUJDd0pBSUE0Z0FrY05BRUV0SVJBTTNBRUxBa0FDUUFOQUFrQWdEaTBBQUVGMmFnNEVBZ0FBQXdBTElBNUJBV29pRGlBQ1J3MEFDMEV0SVJBTTNRRUxJQUFvQWdRaEFTQUFRUUEyQWdRQ1FDQUFJQUVnRGhDeGdJQ0FBQ0lCRFFBZ0RpRUJESFFMSUFCQkxEWUNIQ0FBSUE0MkFoUWdBQ0FCTmdJTVFRQWhFQXpjQVFzZ0FDZ0NCQ0VCSUFCQkFEWUNCQUpBSUFBZ0FTQU9FTEdBZ0lBQUlnRU5BQ0FPUVFGcUlRRU1jd3NnQUVFc05nSWNJQUFnQVRZQ0RDQUFJQTVCQVdvMkFoUkJBQ0VRRE5zQkN5QUFLQUlFSVFRZ0FFRUFOZ0lFSUFBZ0JDQU9FTEdBZ0lBQUlnUU5vQUVnRGlFQkRNNEJDeUFRUVN4SERRRWdBVUVCYWlFUVFRRWhBUUpBQWtBQ1FBSkFBa0FnQUMwQUxFRjdhZzRFQXdFQ0JBQUxJQkFoQVF3RUMwRUNJUUVNQVF0QkJDRUJDeUFBUVFFNkFDd2dBQ0FBTHdFd0lBRnlPd0V3SUJBaEFRd0JDeUFBSUFBdkFUQkJDSEk3QVRBZ0VDRUJDMEU1SVJBTXZ3RUxJQUJCQURvQUxDQUJJUUVMUVRRaEVBeTlBUXNnQUNBQUx3RXdRU0J5T3dFd0lBRWhBUXdDQ3lBQUtBSUVJUVFnQUVFQU5nSUVBa0FnQUNBRUlBRVFzWUNBZ0FBaUJBMEFJQUVoQVF6SEFRc2dBRUUzTmdJY0lBQWdBVFlDRkNBQUlBUTJBZ3hCQUNFUUROUUJDeUFBUVFnNkFDd2dBU0VCQzBFd0lSQU11UUVMQWtBZ0FDMEFLRUVCUmcwQUlBRWhBUXdFQ3lBQUxRQXRRUWh4UlEyVEFTQUJJUUVNQXdzZ0FDMEFNRUVnY1EyVUFVSEZBU0VRRExjQkN3SkFJQThnQWtZTkFBSkFBMEFDUUNBUExRQUFRVkJxSWdGQi93RnhRUXBKRFFBZ0R5RUJRVFVoRUF5NkFRc2dBQ2tESUNJUlFwbXo1c3lacytiTUdWWU5BU0FBSUJGQ0NuNGlFVGNESUNBUklBR3RRdjhCZ3lJU1FuK0ZWZzBCSUFBZ0VTQVNmRGNESUNBUFFRRnFJZzhnQWtjTkFBdEJPU0VRRE5FQkN5QUFLQUlFSVFJZ0FFRUFOZ0lFSUFBZ0FpQVBRUUZxSWdRUXNZQ0FnQUFpQWcyVkFTQUVJUUVNd3dFTFFUa2hFQXpQQVFzQ1FDQUFMd0V3SWdGQkNIRkZEUUFnQUMwQUtFRUJSdzBBSUFBdEFDMUJDSEZGRFpBQkN5QUFJQUZCOS9zRGNVR0FCSEk3QVRBZ0R5RUJDMEUzSVJBTXRBRUxJQUFnQUM4Qk1FRVFjanNCTUF5ckFRc2dFRUVWUmcyTEFTQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjhJNkFnQUEyQWhBZ0FFRWNOZ0lNUVFBaEVBekxBUXNnQUVIREFEWUNIQ0FBSUFFMkFnd2dBQ0FOUVFGcU5nSVVRUUFoRUF6S0FRc0NRQ0FCTFFBQVFUcEhEUUFnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLK0FnSUFBSWhBTkFDQUJRUUZxSVFFTVl3c2dBRUhEQURZQ0hDQUFJQkEyQWd3Z0FDQUJRUUZxTmdJVVFRQWhFQXpLQVFzZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUWJHUmdJQUFOZ0lRSUFCQkNqWUNERUVBSVJBTXlRRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFR2dtWUNBQURZQ0VDQUFRUjQyQWd4QkFDRVFETWdCQ3lBQVFRQTJBZ0FMSUFCQmdCSTdBU29nQUNBWFFRRnFJZ0VnQWhDb2dJQ0FBQ0lRRFFFZ0FTRUJDMEhIQUNFUURLd0JDeUFRUVJWSERZTUJJQUJCMFFBMkFod2dBQ0FCTmdJVUlBQkI0NWVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXpFQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVhnc2dBRUhTQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBekRBUXNnQUVFQU5nSWNJQUFnRkRZQ0ZDQUFRY0dvZ0lBQU5nSVFJQUJCQnpZQ0RDQUFRUUEyQWdCQkFDRVFETUlCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4ZEN5QUFRZE1BTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURNRUJDMEVBSVJBZ0FFRUFOZ0ljSUFBZ0FUWUNGQ0FBUVlDUmdJQUFOZ0lRSUFCQkNUWUNEQXpBQVFzZ0VFRVZSZzE5SUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUdVallDQUFEWUNFQ0FBUVNFMkFneEJBQ0VRREw4QkMwRUJJUlpCQUNFWFFRQWhGRUVCSVJBTElBQWdFRG9BS3lBQlFRRnFJUUVDUUFKQUlBQXRBQzFCRUhFTkFBSkFBa0FDUUNBQUxRQXFEZ01CQUFJRUN5QVdSUTBEREFJTElCUU5BUXdDQ3lBWFJRMEJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXJZQ0FnQUFpRUEwQUlBRWhBUXhjQ3lBQVFkZ0FOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRREw0QkN5QUFLQUlFSVFRZ0FFRUFOZ0lFQWtBZ0FDQUVJQUVRcllDQWdBQWlCQTBBSUFFaEFReXRBUXNnQUVIWkFEWUNIQ0FBSUFFMkFoUWdBQ0FFTmdJTVFRQWhFQXk5QVFzZ0FDZ0NCQ0VFSUFCQkFEWUNCQUpBSUFBZ0JDQUJFSzJBZ0lBQUlnUU5BQ0FCSVFFTXF3RUxJQUJCMmdBMkFod2dBQ0FCTmdJVUlBQWdCRFlDREVFQUlSQU12QUVMSUFBb0FnUWhCQ0FBUVFBMkFnUUNRQ0FBSUFRZ0FSQ3RnSUNBQUNJRURRQWdBU0VCREtrQkN5QUFRZHdBTmdJY0lBQWdBVFlDRkNBQUlBUTJBZ3hCQUNFUURMc0JDd0pBSUFFdEFBQkJVR29pRUVIL0FYRkJDazhOQUNBQUlCQTZBQ29nQVVFQmFpRUJRYzhBSVJBTW9nRUxJQUFvQWdRaEJDQUFRUUEyQWdRQ1FDQUFJQVFnQVJDdGdJQ0FBQ0lFRFFBZ0FTRUJES2NCQ3lBQVFkNEFOZ0ljSUFBZ0FUWUNGQ0FBSUFRMkFneEJBQ0VRRExvQkN5QUFRUUEyQWdBZ0YwRUJhaUVCQWtBZ0FDMEFLVUVqVHcwQUlBRWhBUXhaQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCMDRtQWdBQTJBaEFnQUVFSU5nSU1RUUFoRUF5NUFRc2dBRUVBTmdJQUMwRUFJUkFnQUVFQU5nSWNJQUFnQVRZQ0ZDQUFRWkN6Z0lBQU5nSVFJQUJCQ0RZQ0RBeTNBUXNnQUVFQU5nSUFJQmRCQVdvaEFRSkFJQUF0QUNsQklVY05BQ0FCSVFFTVZnc2dBRUVBTmdJY0lBQWdBVFlDRkNBQVFadUtnSUFBTmdJUUlBQkJDRFlDREVFQUlSQU10Z0VMSUFCQkFEWUNBQ0FYUVFGcUlRRUNRQ0FBTFFBcEloQkJYV3BCQzA4TkFDQUJJUUVNVlFzQ1FDQVFRUVpMRFFCQkFTQVFkRUhLQUhGRkRRQWdBU0VCREZVTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkI5NG1BZ0FBMkFoQWdBRUVJTmdJTURMVUJDeUFRUVJWR0RYRWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFibU5nSUFBTmdJUUlBQkJHallDREVFQUlSQU10QUVMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ25nSUNBQUNJUURRQWdBU0VCREZRTElBQkI1UUEyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTXN3RUxJQUFvQWdRaEVDQUFRUUEyQWdRQ1FDQUFJQkFnQVJDbmdJQ0FBQ0lRRFFBZ0FTRUJERTBMSUFCQjBnQTJBaHdnQUNBQk5nSVVJQUFnRURZQ0RFRUFJUkFNc2dFTElBQW9BZ1FoRUNBQVFRQTJBZ1FDUUNBQUlCQWdBUkNuZ0lDQUFDSVFEUUFnQVNFQkRFMExJQUJCMHdBMkFod2dBQ0FCTmdJVUlBQWdFRFlDREVFQUlSQU1zUUVMSUFBb0FnUWhFQ0FBUVFBMkFnUUNRQ0FBSUJBZ0FSQ25nSUNBQUNJUURRQWdBU0VCREZFTElBQkI1UUEyQWh3Z0FDQUJOZ0lVSUFBZ0VEWUNERUVBSVJBTXNBRUxJQUJCQURZQ0hDQUFJQUUyQWhRZ0FFSEdpb0NBQURZQ0VDQUFRUWMyQWd4QkFDRVFESzhCQ3lBQUtBSUVJUkFnQUVFQU5nSUVBa0FnQUNBUUlBRVFwNENBZ0FBaUVBMEFJQUVoQVF4SkN5QUFRZElBTmdJY0lBQWdBVFlDRkNBQUlCQTJBZ3hCQUNFUURLNEJDeUFBS0FJRUlSQWdBRUVBTmdJRUFrQWdBQ0FRSUFFUXA0Q0FnQUFpRUEwQUlBRWhBUXhKQ3lBQVFkTUFOZ0ljSUFBZ0FUWUNGQ0FBSUJBMkFneEJBQ0VRREswQkN5QUFLQUlFSVJBZ0FFRUFOZ0lFQWtBZ0FDQVFJQUVRcDRDQWdBQWlFQTBBSUFFaEFReE5DeUFBUWVVQU5nSWNJQUFnQVRZQ0ZDQUFJQkEyQWd4QkFDRVFES3dCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCM0lpQWdBQTJBaEFnQUVFSE5nSU1RUUFoRUF5ckFRc2dFRUUvUncwQklBRkJBV29oQVF0QkJTRVFESkFCQzBFQUlSQWdBRUVBTmdJY0lBQWdBVFlDRkNBQVFmMlNnSUFBTmdJUUlBQkJCellDREF5b0FRc2dBQ2dDQkNFUUlBQkJBRFlDQkFKQUlBQWdFQ0FCRUtlQWdJQUFJaEFOQUNBQklRRU1RZ3NnQUVIU0FEWUNIQ0FBSUFFMkFoUWdBQ0FRTmdJTVFRQWhFQXluQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQUpBSUFBZ0VDQUJFS2VBZ0lBQUloQU5BQ0FCSVFFTVFnc2dBRUhUQURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeW1BUXNnQUNnQ0JDRVFJQUJCQURZQ0JBSkFJQUFnRUNBQkVLZUFnSUFBSWhBTkFDQUJJUUVNUmdzZ0FFSGxBRFlDSENBQUlBRTJBaFFnQUNBUU5nSU1RUUFoRUF5bEFRc2dBQ2dDQkNFQklBQkJBRFlDQkFKQUlBQWdBU0FVRUtlQWdJQUFJZ0VOQUNBVUlRRU1Qd3NnQUVIU0FEWUNIQ0FBSUJRMkFoUWdBQ0FCTmdJTVFRQWhFQXlrQVFzZ0FDZ0NCQ0VCSUFCQkFEWUNCQUpBSUFBZ0FTQVVFS2VBZ0lBQUlnRU5BQ0FVSVFFTVB3c2dBRUhUQURZQ0hDQUFJQlEyQWhRZ0FDQUJOZ0lNUVFBaEVBeWpBUXNnQUNnQ0JDRUJJQUJCQURZQ0JBSkFJQUFnQVNBVUVLZUFnSUFBSWdFTkFDQVVJUUVNUXdzZ0FFSGxBRFlDSENBQUlCUTJBaFFnQUNBQk5nSU1RUUFoRUF5aUFRc2dBRUVBTmdJY0lBQWdGRFlDRkNBQVFjT1BnSUFBTmdJUUlBQkJCellDREVFQUlSQU1vUUVMSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhEajRDQUFEWUNFQ0FBUVFjMkFneEJBQ0VRREtBQkMwRUFJUkFnQUVFQU5nSWNJQUFnRkRZQ0ZDQUFRWXljZ0lBQU5nSVFJQUJCQnpZQ0RBeWZBUXNnQUVFQU5nSWNJQUFnRkRZQ0ZDQUFRWXljZ0lBQU5nSVFJQUJCQnpZQ0RFRUFJUkFNbmdFTElBQkJBRFlDSENBQUlCUTJBaFFnQUVIK2tZQ0FBRFlDRUNBQVFRYzJBZ3hCQUNFUURKMEJDeUFBUVFBMkFod2dBQ0FCTmdJVUlBQkJqcHVBZ0FBMkFoQWdBRUVHTmdJTVFRQWhFQXljQVFzZ0VFRVZSZzFYSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUhNam9DQUFEWUNFQ0FBUVNBMkFneEJBQ0VRREpzQkN5QUFRUUEyQWdBZ0VFRUJhaUVCUVNRaEVBc2dBQ0FRT2dBcElBQW9BZ1FoRUNBQVFRQTJBZ1FnQUNBUUlBRVFxNENBZ0FBaUVBMVVJQUVoQVF3K0N5QUFRUUEyQWdBTFFRQWhFQ0FBUVFBMkFod2dBQ0FFTmdJVUlBQkI4WnVBZ0FBMkFoQWdBRUVHTmdJTURKY0JDeUFCUVJWR0RWQWdBRUVBTmdJY0lBQWdCVFlDRkNBQVFmQ01nSUFBTmdJUUlBQkJHellDREVFQUlSQU1sZ0VMSUFBb0FnUWhCU0FBUVFBMkFnUWdBQ0FGSUJBUXFZQ0FnQUFpQlEwQklCQkJBV29oQlF0QnJRRWhFQXg3Q3lBQVFjRUJOZ0ljSUFBZ0JUWUNEQ0FBSUJCQkFXbzJBaFJCQUNFUURKTUJDeUFBS0FJRUlRWWdBRUVBTmdJRUlBQWdCaUFRRUttQWdJQUFJZ1lOQVNBUVFRRnFJUVlMUWE0QklSQU1lQXNnQUVIQ0FUWUNIQ0FBSUFZMkFnd2dBQ0FRUVFGcU5nSVVRUUFoRUF5UUFRc2dBRUVBTmdJY0lBQWdCellDRkNBQVFaZUxnSUFBTmdJUUlBQkJEVFlDREVFQUlSQU1qd0VMSUFCQkFEWUNIQ0FBSUFnMkFoUWdBRUhqa0lDQUFEWUNFQ0FBUVFrMkFneEJBQ0VRREk0QkN5QUFRUUEyQWh3Z0FDQUlOZ0lVSUFCQmxJMkFnQUEyQWhBZ0FFRWhOZ0lNUVFBaEVBeU5BUXRCQVNFV1FRQWhGMEVBSVJSQkFTRVFDeUFBSUJBNkFDc2dDVUVCYWlFSUFrQUNRQ0FBTFFBdFFSQnhEUUFDUUFKQUFrQWdBQzBBS2c0REFRQUNCQXNnRmtVTkF3d0NDeUFVRFFFTUFnc2dGMFVOQVFzZ0FDZ0NCQ0VRSUFCQkFEWUNCQ0FBSUJBZ0NCQ3RnSUNBQUNJUVJRMDlJQUJCeVFFMkFod2dBQ0FJTmdJVUlBQWdFRFlDREVFQUlSQU1qQUVMSUFBb0FnUWhCQ0FBUVFBMkFnUWdBQ0FFSUFnUXJZQ0FnQUFpQkVVTmRpQUFRY29CTmdJY0lBQWdDRFlDRkNBQUlBUTJBZ3hCQUNFUURJc0JDeUFBS0FJRUlRUWdBRUVBTmdJRUlBQWdCQ0FKRUsyQWdJQUFJZ1JGRFhRZ0FFSExBVFlDSENBQUlBazJBaFFnQUNBRU5nSU1RUUFoRUF5S0FRc2dBQ2dDQkNFRUlBQkJBRFlDQkNBQUlBUWdDaEN0Z0lDQUFDSUVSUTF5SUFCQnpRRTJBaHdnQUNBS05nSVVJQUFnQkRZQ0RFRUFJUkFNaVFFTEFrQWdDeTBBQUVGUWFpSVFRZjhCY1VFS1R3MEFJQUFnRURvQUtpQUxRUUZxSVFwQnRnRWhFQXh3Q3lBQUtBSUVJUVFnQUVFQU5nSUVJQUFnQkNBTEVLMkFnSUFBSWdSRkRYQWdBRUhQQVRZQ0hDQUFJQXMyQWhRZ0FDQUVOZ0lNUVFBaEVBeUlBUXNnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRWkN6Z0lBQU5nSVFJQUJCQ0RZQ0RDQUFRUUEyQWdCQkFDRVFESWNCQ3lBQlFSVkdEVDhnQUVFQU5nSWNJQUFnRERZQ0ZDQUFRY3lPZ0lBQU5nSVFJQUJCSURZQ0RFRUFJUkFNaGdFTElBQkJnUVE3QVNnZ0FDZ0NCQ0VRSUFCQ0FEY0RBQ0FBSUJBZ0RFRUJhaUlNRUt1QWdJQUFJaEJGRFRnZ0FFSFRBVFlDSENBQUlBdzJBaFFnQUNBUU5nSU1RUUFoRUF5RkFRc2dBRUVBTmdJQUMwRUFJUkFnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRZGliZ0lBQU5nSVFJQUJCQ0RZQ0RBeURBUXNnQUNnQ0JDRVFJQUJDQURjREFDQUFJQkFnQzBFQmFpSUxFS3VBZ0lBQUloQU5BVUhHQVNFUURHa0xJQUJCQWpvQUtBeFZDeUFBUWRVQk5nSWNJQUFnQ3pZQ0ZDQUFJQkEyQWd4QkFDRVFESUFCQ3lBUVFSVkdEVGNnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRYVNNZ0lBQU5nSVFJQUJCRURZQ0RFRUFJUkFNZndzZ0FDMEFORUVCUncwMElBQWdCQ0FDRUx5QWdJQUFJaEJGRFRRZ0VFRVZSdzAxSUFCQjNBRTJBaHdnQUNBRU5nSVVJQUJCMVphQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF4K0MwRUFJUkFnQUVFQU5nSWNJQUJCcjR1QWdBQTJBaEFnQUVFQ05nSU1JQUFnRkVFQmFqWUNGQXg5QzBFQUlSQU1Zd3RCQWlFUURHSUxRUTBoRUF4aEMwRVBJUkFNWUF0QkpTRVFERjhMUVJNaEVBeGVDMEVWSVJBTVhRdEJGaUVRREZ3TFFSY2hFQXhiQzBFWUlSQU1XZ3RCR1NFUURGa0xRUm9oRUF4WUMwRWJJUkFNVnd0QkhDRVFERllMUVIwaEVBeFZDMEVmSVJBTVZBdEJJU0VRREZNTFFTTWhFQXhTQzBIR0FDRVFERkVMUVM0aEVBeFFDMEV2SVJBTVR3dEJPeUVRREU0TFFUMGhFQXhOQzBISUFDRVFERXdMUWNrQUlSQU1Td3RCeXdBaEVBeEtDMEhNQUNFUURFa0xRYzRBSVJBTVNBdEIwUUFoRUF4SEMwSFZBQ0VRREVZTFFkZ0FJUkFNUlF0QjJRQWhFQXhFQzBIYkFDRVFERU1MUWVRQUlSQU1RZ3RCNVFBaEVBeEJDMEh4QUNFUURFQUxRZlFBSVJBTVB3dEJqUUVoRUF3K0MwR1hBU0VRREQwTFFha0JJUkFNUEF0QnJBRWhFQXc3QzBIQUFTRVFERG9MUWJrQklSQU1PUXRCcndFaEVBdzRDMEd4QVNFUUREY0xRYklCSVJBTU5ndEJ0QUVoRUF3MUMwRzFBU0VRRERRTFFib0JJUkFNTXd0QnZRRWhFQXd5QzBHL0FTRVFEREVMUWNFQklSQU1NQXNnQUVFQU5nSWNJQUFnQkRZQ0ZDQUFRZW1MZ0lBQU5nSVFJQUJCSHpZQ0RFRUFJUkFNU0FzZ0FFSGJBVFlDSENBQUlBUTJBaFFnQUVINmxvQ0FBRFlDRUNBQVFSVTJBZ3hCQUNFUURFY0xJQUJCK0FBMkFod2dBQ0FNTmdJVUlBQkJ5cGlBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXhHQ3lBQVFkRUFOZ0ljSUFBZ0JUWUNGQ0FBUWJDWGdJQUFOZ0lRSUFCQkZUWUNERUVBSVJBTVJRc2dBRUg1QURZQ0hDQUFJQUUyQWhRZ0FDQVFOZ0lNUVFBaEVBeEVDeUFBUWZnQU5nSWNJQUFnQVRZQ0ZDQUFRY3FZZ0lBQU5nSVFJQUJCRlRZQ0RFRUFJUkFNUXdzZ0FFSGtBRFlDSENBQUlBRTJBaFFnQUVIamw0Q0FBRFlDRUNBQVFSVTJBZ3hCQUNFUURFSUxJQUJCMXdBMkFod2dBQ0FCTmdJVUlBQkJ5WmVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXhCQ3lBQVFRQTJBaHdnQUNBQk5nSVVJQUJCdVkyQWdBQTJBaEFnQUVFYU5nSU1RUUFoRUF4QUN5QUFRY0lBTmdJY0lBQWdBVFlDRkNBQVFlT1lnSUFBTmdJUUlBQkJGVFlDREVFQUlSQU1Qd3NnQUVFQU5nSUVJQUFnRHlBUEVMR0FnSUFBSWdSRkRRRWdBRUU2TmdJY0lBQWdCRFlDRENBQUlBOUJBV28yQWhSQkFDRVFERDRMSUFBb0FnUWhCQ0FBUVFBMkFnUUNRQ0FBSUFRZ0FSQ3hnSUNBQUNJRVJRMEFJQUJCT3pZQ0hDQUFJQVEyQWd3Z0FDQUJRUUZxTmdJVVFRQWhFQXcrQ3lBQlFRRnFJUUVNTFFzZ0QwRUJhaUVCREMwTElBQkJBRFlDSENBQUlBODJBaFFnQUVIa2tvQ0FBRFlDRUNBQVFRUTJBZ3hCQUNFUUREc0xJQUJCTmpZQ0hDQUFJQVEyQWhRZ0FDQUNOZ0lNUVFBaEVBdzZDeUFBUVM0MkFod2dBQ0FPTmdJVUlBQWdCRFlDREVFQUlSQU1PUXNnQUVIUUFEWUNIQ0FBSUFFMkFoUWdBRUdSbUlDQUFEWUNFQ0FBUVJVMkFneEJBQ0VRRERnTElBMUJBV29oQVF3c0N5QUFRUlUyQWh3Z0FDQUJOZ0lVSUFCQmdwbUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBdzJDeUFBUVJzMkFod2dBQ0FCTmdJVUlBQkJrWmVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXcxQ3lBQVFRODJBaHdnQUNBQk5nSVVJQUJCa1plQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3MEN5QUFRUXMyQWh3Z0FDQUJOZ0lVSUFCQmtaZUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBd3pDeUFBUVJvMkFod2dBQ0FCTmdJVUlBQkJncG1BZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXd5Q3lBQVFRczJBaHdnQUNBQk5nSVVJQUJCZ3BtQWdBQTJBaEFnQUVFVk5nSU1RUUFoRUF3eEN5QUFRUW8yQWh3Z0FDQUJOZ0lVSUFCQjVKYUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBd3dDeUFBUVI0MkFod2dBQ0FCTmdJVUlBQkIrWmVBZ0FBMkFoQWdBRUVWTmdJTVFRQWhFQXd2Q3lBQVFRQTJBaHdnQUNBUU5nSVVJQUJCMm8yQWdBQTJBaEFnQUVFVU5nSU1RUUFoRUF3dUN5QUFRUVEyQWh3Z0FDQUJOZ0lVSUFCQnNKaUFnQUEyQWhBZ0FFRVZOZ0lNUVFBaEVBd3RDeUFBUVFBMkFnQWdDMEVCYWlFTEMwRzRBU0VRREJJTElBQkJBRFlDQUNBUVFRRnFJUUZCOVFBaEVBd1JDeUFCSVFFQ1FDQUFMUUFwUVFWSERRQkI0d0FoRUF3UkMwSGlBQ0VRREJBTFFRQWhFQ0FBUVFBMkFod2dBRUhra1lDQUFEWUNFQ0FBUVFjMkFnd2dBQ0FVUVFGcU5nSVVEQ2dMSUFCQkFEWUNBQ0FYUVFGcUlRRkJ3QUFoRUF3T0MwRUJJUUVMSUFBZ0FUb0FMQ0FBUVFBMkFnQWdGMEVCYWlFQkMwRW9JUkFNQ3dzZ0FTRUJDMEU0SVJBTUNRc0NRQ0FCSWc4Z0FrWU5BQU5BQWtBZ0R5MEFBRUdBdm9DQUFHb3RBQUFpQVVFQlJnMEFJQUZCQWtjTkF5QVBRUUZxSVFFTUJBc2dEMEVCYWlJUElBSkhEUUFMUVQ0aEVBd2lDMEUrSVJBTUlRc2dBRUVBT2dBc0lBOGhBUXdCQzBFTElSQU1CZ3RCT2lFUURBVUxJQUZCQVdvaEFVRXRJUkFNQkFzZ0FDQUJPZ0FzSUFCQkFEWUNBQ0FXUVFGcUlRRkJEQ0VRREFNTElBQkJBRFlDQUNBWFFRRnFJUUZCQ2lFUURBSUxJQUJCQURZQ0FBc2dBRUVBT2dBc0lBMGhBVUVKSVJBTUFBc0xRUUFoRUNBQVFRQTJBaHdnQUNBTE5nSVVJQUJCelpDQWdBQTJBaEFnQUVFSk5nSU1EQmNMUVFBaEVDQUFRUUEyQWh3Z0FDQUtOZ0lVSUFCQjZZcUFnQUEyQWhBZ0FFRUpOZ0lNREJZTFFRQWhFQ0FBUVFBMkFod2dBQ0FKTmdJVUlBQkJ0NUNBZ0FBMkFoQWdBRUVKTmdJTURCVUxRUUFoRUNBQVFRQTJBaHdnQUNBSU5nSVVJQUJCbkpHQWdBQTJBaEFnQUVFSk5nSU1EQlFMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQnpaQ0FnQUEyQWhBZ0FFRUpOZ0lNREJNTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkI2WXFBZ0FBMkFoQWdBRUVKTmdJTURCSUxRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCdDVDQWdBQTJBaEFnQUVFSk5nSU1EQkVMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQm5KR0FnQUEyQWhBZ0FFRUpOZ0lNREJBTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJsNVdBZ0FBMkFoQWdBRUVQTmdJTURBOExRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCbDVXQWdBQTJBaEFnQUVFUE5nSU1EQTRMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQndKS0FnQUEyQWhBZ0FFRUxOZ0lNREEwTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkJsWW1BZ0FBMkFoQWdBRUVMTmdJTURBd0xRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCNFkrQWdBQTJBaEFnQUVFS05nSU1EQXNMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQis0K0FnQUEyQWhBZ0FFRUtOZ0lNREFvTFFRQWhFQ0FBUVFBMkFod2dBQ0FCTmdJVUlBQkI4Wm1BZ0FBMkFoQWdBRUVDTmdJTURBa0xRUUFoRUNBQVFRQTJBaHdnQUNBQk5nSVVJQUJCeEpTQWdBQTJBaEFnQUVFQ05nSU1EQWdMUVFBaEVDQUFRUUEyQWh3Z0FDQUJOZ0lVSUFCQjhwV0FnQUEyQWhBZ0FFRUNOZ0lNREFjTElBQkJBallDSENBQUlBRTJBaFFnQUVHY21vQ0FBRFlDRUNBQVFSWTJBZ3hCQUNFUURBWUxRUUVoRUF3RkMwSFVBQ0VRSUFFaUJDQUNSZzBFSUFOQkNHb2dBQ0FFSUFKQjJNS0FnQUJCQ2hERmdJQ0FBQ0FES0FJTUlRUWdBeWdDQ0E0REFRUUNBQXNReW9DQWdBQUFDeUFBUVFBMkFod2dBRUcxbW9DQUFEWUNFQ0FBUVJjMkFnd2dBQ0FFUVFGcU5nSVVRUUFoRUF3Q0N5QUFRUUEyQWh3Z0FDQUVOZ0lVSUFCQnlwcUFnQUEyQWhBZ0FFRUpOZ0lNUVFBaEVBd0JDd0pBSUFFaUJDQUNSdzBBUVNJaEVBd0JDeUFBUVltQWdJQUFOZ0lJSUFBZ0JEWUNCRUVoSVJBTElBTkJFR29rZ0lDQWdBQWdFQXV2QVFFQ2Z5QUJLQUlBSVFZQ1FBSkFJQUlnQTBZTkFDQUVJQVpxSVFRZ0JpQURhaUFDYXlFSElBSWdCa0YvY3lBRmFpSUdhaUVGQTBBQ1FDQUNMUUFBSUFRdEFBQkdEUUJCQWlFRURBTUxBa0FnQmcwQVFRQWhCQ0FGSVFJTUF3c2dCa0YvYWlFR0lBUkJBV29oQkNBQ1FRRnFJZ0lnQTBjTkFBc2dCeUVHSUFNaEFnc2dBRUVCTmdJQUlBRWdCallDQUNBQUlBSTJBZ1FQQ3lBQlFRQTJBZ0FnQUNBRU5nSUFJQUFnQWpZQ0JBc0tBQ0FBRU1lQWdJQUFDL0kyQVF0L0k0Q0FnSUFBUVJCcklnRWtnSUNBZ0FBQ1FFRUFLQUtnMElDQUFBMEFRUUFReTRDQWdBQkJnTlNFZ0FCcklnSkIyUUJKRFFCQkFDRURBa0JCQUNnQzROT0FnQUFpQkEwQVFRQkNmemNDN05PQWdBQkJBRUtBZ0lTQWdJREFBRGNDNU5PQWdBQkJBQ0FCUVFocVFYQnhRZGlxMWFvRmN5SUVOZ0xnMDRDQUFFRUFRUUEyQXZUVGdJQUFRUUJCQURZQ3hOT0FnQUFMUVFBZ0FqWUN6Tk9BZ0FCQkFFR0ExSVNBQURZQ3lOT0FnQUJCQUVHQTFJU0FBRFlDbU5DQWdBQkJBQ0FFTmdLczBJQ0FBRUVBUVg4MkFxalFnSUFBQTBBZ0EwSEUwSUNBQUdvZ0EwRzQwSUNBQUdvaUJEWUNBQ0FFSUFOQnNOQ0FnQUJxSWdVMkFnQWdBMEc4MElDQUFHb2dCVFlDQUNBRFFjelFnSUFBYWlBRFFjRFFnSUFBYWlJRk5nSUFJQVVnQkRZQ0FDQURRZFRRZ0lBQWFpQURRY2pRZ0lBQWFpSUVOZ0lBSUFRZ0JUWUNBQ0FEUWREUWdJQUFhaUFFTmdJQUlBTkJJR29pQTBHQUFrY05BQXRCZ05TRWdBQkJlRUdBMUlTQUFHdEJEM0ZCQUVHQTFJU0FBRUVJYWtFUGNSc2lBMm9pQkVFRWFpQUNRVWhxSWdVZ0Eyc2lBMEVCY2pZQ0FFRUFRUUFvQXZEVGdJQUFOZ0trMElDQUFFRUFJQU0yQXBUUWdJQUFRUUFnQkRZQ29OQ0FnQUJCZ05TRWdBQWdCV3BCT0RZQ0JBc0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FFSHNBVXNOQUFKQVFRQW9Bb2pRZ0lBQUlnWkJFQ0FBUVJOcVFYQnhJQUJCQzBrYklnSkJBM1lpQkhZaUEwRURjVVVOQUFKQUFrQWdBMEVCY1NBRWNrRUJjeUlGUVFOMElnUkJzTkNBZ0FCcUlnTWdCRUc0MElDQUFHb29BZ0FpQkNnQ0NDSUNSdzBBUVFBZ0JrRitJQVYzY1RZQ2lOQ0FnQUFNQVFzZ0F5QUNOZ0lJSUFJZ0F6WUNEQXNnQkVFSWFpRURJQVFnQlVFRGRDSUZRUU55TmdJRUlBUWdCV29pQkNBRUtBSUVRUUZ5TmdJRURBd0xJQUpCQUNnQ2tOQ0FnQUFpQjAwTkFRSkFJQU5GRFFBQ1FBSkFJQU1nQkhSQkFpQUVkQ0lEUVFBZ0EydHljU0lEUVFBZ0EydHhRWDlxSWdNZ0EwRU1ka0VRY1NJRGRpSUVRUVYyUVFoeElnVWdBM0lnQkNBRmRpSURRUUoyUVFSeElnUnlJQU1nQkhZaUEwRUJka0VDY1NJRWNpQURJQVIySWdOQkFYWkJBWEVpQkhJZ0F5QUVkbW9pQkVFRGRDSURRYkRRZ0lBQWFpSUZJQU5CdU5DQWdBQnFLQUlBSWdNb0FnZ2lBRWNOQUVFQUlBWkJmaUFFZDNFaUJqWUNpTkNBZ0FBTUFRc2dCU0FBTmdJSUlBQWdCVFlDREFzZ0F5QUNRUU55TmdJRUlBTWdCRUVEZENJRWFpQUVJQUpySWdVMkFnQWdBeUFDYWlJQUlBVkJBWEkyQWdRQ1FDQUhSUTBBSUFkQmVIRkJzTkNBZ0FCcUlRSkJBQ2dDbk5DQWdBQWhCQUpBQWtBZ0JrRUJJQWRCQTNaMElnaHhEUUJCQUNBR0lBaHlOZ0tJMElDQUFDQUNJUWdNQVFzZ0FpZ0NDQ0VJQ3lBSUlBUTJBZ3dnQWlBRU5nSUlJQVFnQWpZQ0RDQUVJQWcyQWdnTElBTkJDR29oQTBFQUlBQTJBcHpRZ0lBQVFRQWdCVFlDa05DQWdBQU1EQXRCQUNnQ2pOQ0FnQUFpQ1VVTkFTQUpRUUFnQ1d0eFFYOXFJZ01nQTBFTWRrRVFjU0lEZGlJRVFRVjJRUWh4SWdVZ0EzSWdCQ0FGZGlJRFFRSjJRUVJ4SWdSeUlBTWdCSFlpQTBFQmRrRUNjU0lFY2lBRElBUjJJZ05CQVhaQkFYRWlCSElnQXlBRWRtcEJBblJCdU5LQWdBQnFLQUlBSWdBb0FnUkJlSEVnQW1zaEJDQUFJUVVDUUFOQUFrQWdCU2dDRUNJRERRQWdCVUVVYWlnQ0FDSURSUTBDQ3lBREtBSUVRWGh4SUFKcklnVWdCQ0FGSUFSSklnVWJJUVFnQXlBQUlBVWJJUUFnQXlFRkRBQUxDeUFBS0FJWUlRb0NRQ0FBS0FJTUlnZ2dBRVlOQUNBQUtBSUlJZ05CQUNnQ21OQ0FnQUJKR2lBSUlBTTJBZ2dnQXlBSU5nSU1EQXNMQWtBZ0FFRVVhaUlGS0FJQUlnTU5BQ0FBS0FJUUlnTkZEUU1nQUVFUWFpRUZDd05BSUFVaEN5QURJZ2hCRkdvaUJTZ0NBQ0lERFFBZ0NFRVFhaUVGSUFnb0FoQWlBdzBBQ3lBTFFRQTJBZ0FNQ2d0QmZ5RUNJQUJCdjM5TERRQWdBRUVUYWlJRFFYQnhJUUpCQUNnQ2pOQ0FnQUFpQjBVTkFFRUFJUXNDUUNBQ1FZQUNTUTBBUVI4aEN5QUNRZi8vL3dkTERRQWdBMEVJZGlJRElBTkJnUDQvYWtFUWRrRUljU0lEZENJRUlBUkJnT0FmYWtFUWRrRUVjU0lFZENJRklBVkJnSUFQYWtFUWRrRUNjU0lGZEVFUGRpQURJQVJ5SUFWeWF5SURRUUYwSUFJZ0EwRVZhblpCQVhGeVFSeHFJUXNMUVFBZ0Ftc2hCQUpBQWtBQ1FBSkFJQXRCQW5SQnVOS0FnQUJxS0FJQUlnVU5BRUVBSVFOQkFDRUlEQUVMUVFBaEF5QUNRUUJCR1NBTFFRRjJheUFMUVI5R0czUWhBRUVBSVFnRFFBSkFJQVVvQWdSQmVIRWdBbXNpQmlBRVR3MEFJQVloQkNBRklRZ2dCZzBBUVFBaEJDQUZJUWdnQlNFRERBTUxJQU1nQlVFVWFpZ0NBQ0lHSUFZZ0JTQUFRUjEyUVFSeGFrRVFhaWdDQUNJRlJoc2dBeUFHR3lFRElBQkJBWFFoQUNBRkRRQUxDd0pBSUFNZ0NISU5BRUVBSVFoQkFpQUxkQ0lEUVFBZ0EydHlJQWR4SWdORkRRTWdBMEVBSUFOcmNVRi9haUlESUFOQkRIWkJFSEVpQTNZaUJVRUZka0VJY1NJQUlBTnlJQVVnQUhZaUEwRUNka0VFY1NJRmNpQURJQVYySWdOQkFYWkJBbkVpQlhJZ0F5QUZkaUlEUVFGMlFRRnhJZ1Z5SUFNZ0JYWnFRUUowUWJqU2dJQUFhaWdDQUNFREN5QURSUTBCQ3dOQUlBTW9BZ1JCZUhFZ0Ftc2lCaUFFU1NFQUFrQWdBeWdDRUNJRkRRQWdBMEVVYWlnQ0FDRUZDeUFHSUFRZ0FCc2hCQ0FESUFnZ0FCc2hDQ0FGSVFNZ0JRMEFDd3NnQ0VVTkFDQUVRUUFvQXBEUWdJQUFJQUpyVHcwQUlBZ29BaGdoQ3dKQUlBZ29BZ3dpQUNBSVJnMEFJQWdvQWdnaUEwRUFLQUtZMElDQUFFa2FJQUFnQXpZQ0NDQURJQUEyQWd3TUNRc0NRQ0FJUVJScUlnVW9BZ0FpQXcwQUlBZ29BaEFpQTBVTkF5QUlRUkJxSVFVTEEwQWdCU0VHSUFNaUFFRVVhaUlGS0FJQUlnTU5BQ0FBUVJCcUlRVWdBQ2dDRUNJRERRQUxJQVpCQURZQ0FBd0lDd0pBUVFBb0FwRFFnSUFBSWdNZ0Fra05BRUVBS0FLYzBJQ0FBQ0VFQWtBQ1FDQURJQUpySWdWQkVFa05BQ0FFSUFKcUlnQWdCVUVCY2pZQ0JFRUFJQVUyQXBEUWdJQUFRUUFnQURZQ25OQ0FnQUFnQkNBRGFpQUZOZ0lBSUFRZ0FrRURjallDQkF3QkN5QUVJQU5CQTNJMkFnUWdCQ0FEYWlJRElBTW9BZ1JCQVhJMkFnUkJBRUVBTmdLYzBJQ0FBRUVBUVFBMkFwRFFnSUFBQ3lBRVFRaHFJUU1NQ2dzQ1FFRUFLQUtVMElDQUFDSUFJQUpORFFCQkFDZ0NvTkNBZ0FBaUF5QUNhaUlFSUFBZ0Ftc2lCVUVCY2pZQ0JFRUFJQVUyQXBUUWdJQUFRUUFnQkRZQ29OQ0FnQUFnQXlBQ1FRTnlOZ0lFSUFOQkNHb2hBd3dLQ3dKQUFrQkJBQ2dDNE5PQWdBQkZEUUJCQUNnQzZOT0FnQUFoQkF3QkMwRUFRbjgzQXV6VGdJQUFRUUJDZ0lDRWdJQ0F3QUEzQXVUVGdJQUFRUUFnQVVFTWFrRndjVUhZcXRXcUJYTTJBdURUZ0lBQVFRQkJBRFlDOU5PQWdBQkJBRUVBTmdMRTA0Q0FBRUdBZ0FRaEJBdEJBQ0VEQWtBZ0JDQUNRY2NBYWlJSGFpSUdRUUFnQkdzaUMzRWlDQ0FDU3cwQVFRQkJNRFlDK05PQWdBQU1DZ3NDUUVFQUtBTEEwNENBQUNJRFJRMEFBa0JCQUNnQ3VOT0FnQUFpQkNBSWFpSUZJQVJORFFBZ0JTQURUUTBCQzBFQUlRTkJBRUV3TmdMNDA0Q0FBQXdLQzBFQUxRREUwNENBQUVFRWNRMEVBa0FDUUFKQVFRQW9BcURRZ0lBQUlnUkZEUUJCeU5PQWdBQWhBd05BQWtBZ0F5Z0NBQ0lGSUFSTERRQWdCU0FES0FJRWFpQUVTdzBEQ3lBREtBSUlJZ01OQUFzTFFRQVF5NENBZ0FBaUFFRi9SZzBGSUFnaEJnSkFRUUFvQXVUVGdJQUFJZ05CZjJvaUJDQUFjVVVOQUNBSUlBQnJJQVFnQUdwQkFDQURhM0ZxSVFZTElBWWdBazBOQlNBR1FmNy8vLzhIU3cwRkFrQkJBQ2dDd05PQWdBQWlBMFVOQUVFQUtBSzQwNENBQUNJRUlBWnFJZ1VnQkUwTkJpQUZJQU5MRFFZTElBWVF5NENBZ0FBaUF5QUFSdzBCREFjTElBWWdBR3NnQzNFaUJrSCsvLy8vQjBzTkJDQUdFTXVBZ0lBQUlnQWdBeWdDQUNBREtBSUVha1lOQXlBQUlRTUxBa0FnQTBGL1JnMEFJQUpCeUFCcUlBWk5EUUFDUUNBSElBWnJRUUFvQXVqVGdJQUFJZ1JxUVFBZ0JHdHhJZ1JCL3YvLy93ZE5EUUFnQXlFQURBY0xBa0FnQkJETGdJQ0FBRUYvUmcwQUlBUWdCbW9oQmlBRElRQU1Cd3RCQUNBR2F4RExnSUNBQUJvTUJBc2dBeUVBSUFOQmYwY05CUXdEQzBFQUlRZ01Cd3RCQUNFQURBVUxJQUJCZjBjTkFndEJBRUVBS0FMRTA0Q0FBRUVFY2pZQ3hOT0FnQUFMSUFoQi92Ly8vd2RMRFFFZ0NCRExnSUNBQUNFQVFRQVF5NENBZ0FBaEF5QUFRWDlHRFFFZ0EwRi9SZzBCSUFBZ0EwOE5BU0FESUFCcklnWWdBa0U0YWswTkFRdEJBRUVBS0FLNDA0Q0FBQ0FHYWlJRE5nSzQwNENBQUFKQUlBTkJBQ2dDdk5PQWdBQk5EUUJCQUNBRE5nSzgwNENBQUFzQ1FBSkFBa0FDUUVFQUtBS2cwSUNBQUNJRVJRMEFRY2pUZ0lBQUlRTURRQ0FBSUFNb0FnQWlCU0FES0FJRUlnaHFSZzBDSUFNb0FnZ2lBdzBBREFNTEN3SkFBa0JCQUNnQ21OQ0FnQUFpQTBVTkFDQUFJQU5QRFFFTFFRQWdBRFlDbU5DQWdBQUxRUUFoQTBFQUlBWTJBc3pUZ0lBQVFRQWdBRFlDeU5PQWdBQkJBRUYvTmdLbzBJQ0FBRUVBUVFBb0F1RFRnSUFBTmdLczBJQ0FBRUVBUVFBMkF0VFRnSUFBQTBBZ0EwSEUwSUNBQUdvZ0EwRzQwSUNBQUdvaUJEWUNBQ0FFSUFOQnNOQ0FnQUJxSWdVMkFnQWdBMEc4MElDQUFHb2dCVFlDQUNBRFFjelFnSUFBYWlBRFFjRFFnSUFBYWlJRk5nSUFJQVVnQkRZQ0FDQURRZFRRZ0lBQWFpQURRY2pRZ0lBQWFpSUVOZ0lBSUFRZ0JUWUNBQ0FEUWREUWdJQUFhaUFFTmdJQUlBTkJJR29pQTBHQUFrY05BQXNnQUVGNElBQnJRUTl4UVFBZ0FFRUlha0VQY1JzaUEyb2lCQ0FHUVVocUlnVWdBMnNpQTBFQmNqWUNCRUVBUVFBb0F2RFRnSUFBTmdLazBJQ0FBRUVBSUFNMkFwVFFnSUFBUVFBZ0JEWUNvTkNBZ0FBZ0FDQUZha0U0TmdJRURBSUxJQU10QUF4QkNIRU5BQ0FFSUFWSkRRQWdCQ0FBVHcwQUlBUkJlQ0FFYTBFUGNVRUFJQVJCQ0dwQkQzRWJJZ1ZxSWdCQkFDZ0NsTkNBZ0FBZ0Jtb2lDeUFGYXlJRlFRRnlOZ0lFSUFNZ0NDQUdhallDQkVFQVFRQW9BdkRUZ0lBQU5nS2swSUNBQUVFQUlBVTJBcFRRZ0lBQVFRQWdBRFlDb05DQWdBQWdCQ0FMYWtFNE5nSUVEQUVMQWtBZ0FFRUFLQUtZMElDQUFDSUlUdzBBUVFBZ0FEWUNtTkNBZ0FBZ0FDRUlDeUFBSUFacUlRVkJ5Tk9BZ0FBaEF3SkFBa0FDUUFKQUFrQUNRQUpBQTBBZ0F5Z0NBQ0FGUmcwQklBTW9BZ2dpQXcwQURBSUxDeUFETFFBTVFRaHhSUTBCQzBISTA0Q0FBQ0VEQTBBQ1FDQURLQUlBSWdVZ0JFc05BQ0FGSUFNb0FnUnFJZ1VnQkVzTkF3c2dBeWdDQ0NFRERBQUxDeUFESUFBMkFnQWdBeUFES0FJRUlBWnFOZ0lFSUFCQmVDQUFhMEVQY1VFQUlBQkJDR3BCRDNFYmFpSUxJQUpCQTNJMkFnUWdCVUY0SUFWclFROXhRUUFnQlVFSWFrRVBjUnRxSWdZZ0N5QUNhaUlDYXlFREFrQWdCaUFFUncwQVFRQWdBallDb05DQWdBQkJBRUVBS0FLVTBJQ0FBQ0FEYWlJRE5nS1UwSUNBQUNBQ0lBTkJBWEkyQWdRTUF3c0NRQ0FHUVFBb0FwelFnSUFBUncwQVFRQWdBallDbk5DQWdBQkJBRUVBS0FLUTBJQ0FBQ0FEYWlJRE5nS1EwSUNBQUNBQ0lBTkJBWEkyQWdRZ0FpQURhaUFETmdJQURBTUxBa0FnQmlnQ0JDSUVRUU54UVFGSERRQWdCRUY0Y1NFSEFrQUNRQ0FFUWY4QlN3MEFJQVlvQWdnaUJTQUVRUU4ySWdoQkEzUkJzTkNBZ0FCcUlnQkdHZ0pBSUFZb0Fnd2lCQ0FGUncwQVFRQkJBQ2dDaU5DQWdBQkJmaUFJZDNFMkFvalFnSUFBREFJTElBUWdBRVlhSUFRZ0JUWUNDQ0FGSUFRMkFnd01BUXNnQmlnQ0dDRUpBa0FDUUNBR0tBSU1JZ0FnQmtZTkFDQUdLQUlJSWdRZ0NFa2FJQUFnQkRZQ0NDQUVJQUEyQWd3TUFRc0NRQ0FHUVJScUlnUW9BZ0FpQlEwQUlBWkJFR29pQkNnQ0FDSUZEUUJCQUNFQURBRUxBMEFnQkNFSUlBVWlBRUVVYWlJRUtBSUFJZ1VOQUNBQVFSQnFJUVFnQUNnQ0VDSUZEUUFMSUFoQkFEWUNBQXNnQ1VVTkFBSkFBa0FnQmlBR0tBSWNJZ1ZCQW5SQnVOS0FnQUJxSWdRb0FnQkhEUUFnQkNBQU5nSUFJQUFOQVVFQVFRQW9Bb3pRZ0lBQVFYNGdCWGR4TmdLTTBJQ0FBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBWkdHMm9nQURZQ0FDQUFSUTBCQ3lBQUlBazJBaGdDUUNBR0tBSVFJZ1JGRFFBZ0FDQUVOZ0lRSUFRZ0FEWUNHQXNnQmlnQ0ZDSUVSUTBBSUFCQkZHb2dCRFlDQUNBRUlBQTJBaGdMSUFjZ0Eyb2hBeUFHSUFkcUlnWW9BZ1FoQkFzZ0JpQUVRWDV4TmdJRUlBSWdBMm9nQXpZQ0FDQUNJQU5CQVhJMkFnUUNRQ0FEUWY4QlN3MEFJQU5CZUhGQnNOQ0FnQUJxSVFRQ1FBSkFRUUFvQW9qUWdJQUFJZ1ZCQVNBRFFRTjJkQ0lEY1EwQVFRQWdCU0FEY2pZQ2lOQ0FnQUFnQkNFRERBRUxJQVFvQWdnaEF3c2dBeUFDTmdJTUlBUWdBallDQ0NBQ0lBUTJBZ3dnQWlBRE5nSUlEQU1MUVI4aEJBSkFJQU5CLy8vL0Iwc05BQ0FEUVFoMklnUWdCRUdBL2o5cVFSQjJRUWh4SWdSMElnVWdCVUdBNEI5cVFSQjJRUVJ4SWdWMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQVFnQlhJZ0FISnJJZ1JCQVhRZ0F5QUVRUlZxZGtFQmNYSkJIR29oQkFzZ0FpQUVOZ0ljSUFKQ0FEY0NFQ0FFUVFKMFFialNnSUFBYWlFRkFrQkJBQ2dDak5DQWdBQWlBRUVCSUFSMElnaHhEUUFnQlNBQ05nSUFRUUFnQUNBSWNqWUNqTkNBZ0FBZ0FpQUZOZ0lZSUFJZ0FqWUNDQ0FDSUFJMkFnd01Bd3NnQTBFQVFSa2dCRUVCZG1zZ0JFRWZSaHQwSVFRZ0JTZ0NBQ0VBQTBBZ0FDSUZLQUlFUVhoeElBTkdEUUlnQkVFZGRpRUFJQVJCQVhRaEJDQUZJQUJCQkhGcVFSQnFJZ2dvQWdBaUFBMEFDeUFJSUFJMkFnQWdBaUFGTmdJWUlBSWdBallDRENBQ0lBSTJBZ2dNQWdzZ0FFRjRJQUJyUVE5eFFRQWdBRUVJYWtFUGNSc2lBMm9pQ3lBR1FVaHFJZ2dnQTJzaUEwRUJjallDQkNBQUlBaHFRVGcyQWdRZ0JDQUZRVGNnQld0QkQzRkJBQ0FGUVVscVFROXhHMnBCUVdvaUNDQUlJQVJCRUdwSkd5SUlRU00yQWdSQkFFRUFLQUx3MDRDQUFEWUNwTkNBZ0FCQkFDQUROZ0tVMElDQUFFRUFJQXMyQXFEUWdJQUFJQWhCRUdwQkFDa0MwTk9BZ0FBM0FnQWdDRUVBS1FMSTA0Q0FBRGNDQ0VFQUlBaEJDR28yQXREVGdJQUFRUUFnQmpZQ3pOT0FnQUJCQUNBQU5nTEkwNENBQUVFQVFRQTJBdFRUZ0lBQUlBaEJKR29oQXdOQUlBTkJCellDQUNBRFFRUnFJZ01nQlVrTkFBc2dDQ0FFUmcwRElBZ2dDQ2dDQkVGK2NUWUNCQ0FJSUFnZ0JHc2lBRFlDQUNBRUlBQkJBWEkyQWdRQ1FDQUFRZjhCU3cwQUlBQkJlSEZCc05DQWdBQnFJUU1DUUFKQVFRQW9Bb2pRZ0lBQUlnVkJBU0FBUVFOMmRDSUFjUTBBUVFBZ0JTQUFjallDaU5DQWdBQWdBeUVGREFFTElBTW9BZ2doQlFzZ0JTQUVOZ0lNSUFNZ0JEWUNDQ0FFSUFNMkFnd2dCQ0FGTmdJSURBUUxRUjhoQXdKQUlBQkIvLy8vQjBzTkFDQUFRUWgySWdNZ0EwR0EvajlxUVJCMlFRaHhJZ04wSWdVZ0JVR0E0QjlxUVJCMlFRUnhJZ1YwSWdnZ0NFR0FnQTlxUVJCMlFRSnhJZ2gwUVE5MklBTWdCWElnQ0hKcklnTkJBWFFnQUNBRFFSVnFka0VCY1hKQkhHb2hBd3NnQkNBRE5nSWNJQVJDQURjQ0VDQURRUUowUWJqU2dJQUFhaUVGQWtCQkFDZ0NqTkNBZ0FBaUNFRUJJQU4wSWdaeERRQWdCU0FFTmdJQVFRQWdDQ0FHY2pZQ2pOQ0FnQUFnQkNBRk5nSVlJQVFnQkRZQ0NDQUVJQVEyQWd3TUJBc2dBRUVBUVJrZ0EwRUJkbXNnQTBFZlJodDBJUU1nQlNnQ0FDRUlBMEFnQ0NJRktBSUVRWGh4SUFCR0RRTWdBMEVkZGlFSUlBTkJBWFFoQXlBRklBaEJCSEZxUVJCcUlnWW9BZ0FpQ0EwQUN5QUdJQVEyQWdBZ0JDQUZOZ0lZSUFRZ0JEWUNEQ0FFSUFRMkFnZ01Bd3NnQlNnQ0NDSURJQUkyQWd3Z0JTQUNOZ0lJSUFKQkFEWUNHQ0FDSUFVMkFnd2dBaUFETmdJSUN5QUxRUWhxSVFNTUJRc2dCU2dDQ0NJRElBUTJBZ3dnQlNBRU5nSUlJQVJCQURZQ0dDQUVJQVUyQWd3Z0JDQUROZ0lJQzBFQUtBS1UwSUNBQUNJRElBSk5EUUJCQUNnQ29OQ0FnQUFpQkNBQ2FpSUZJQU1nQW1zaUEwRUJjallDQkVFQUlBTTJBcFRRZ0lBQVFRQWdCVFlDb05DQWdBQWdCQ0FDUVFOeU5nSUVJQVJCQ0dvaEF3d0RDMEVBSVFOQkFFRXdOZ0w0MDRDQUFBd0NDd0pBSUF0RkRRQUNRQUpBSUFnZ0NDZ0NIQ0lGUVFKMFFialNnSUFBYWlJREtBSUFSdzBBSUFNZ0FEWUNBQ0FBRFFGQkFDQUhRWDRnQlhkeElnYzJBb3pRZ0lBQURBSUxJQXRCRUVFVUlBc29BaEFnQ0VZYmFpQUFOZ0lBSUFCRkRRRUxJQUFnQ3pZQ0dBSkFJQWdvQWhBaUEwVU5BQ0FBSUFNMkFoQWdBeUFBTmdJWUN5QUlRUlJxS0FJQUlnTkZEUUFnQUVFVWFpQUROZ0lBSUFNZ0FEWUNHQXNDUUFKQUlBUkJEMHNOQUNBSUlBUWdBbW9pQTBFRGNqWUNCQ0FJSUFOcUlnTWdBeWdDQkVFQmNqWUNCQXdCQ3lBSUlBSnFJZ0FnQkVFQmNqWUNCQ0FJSUFKQkEzSTJBZ1FnQUNBRWFpQUVOZ0lBQWtBZ0JFSC9BVXNOQUNBRVFYaHhRYkRRZ0lBQWFpRURBa0FDUUVFQUtBS0kwSUNBQUNJRlFRRWdCRUVEZG5RaUJIRU5BRUVBSUFVZ0JISTJBb2pRZ0lBQUlBTWhCQXdCQ3lBREtBSUlJUVFMSUFRZ0FEWUNEQ0FESUFBMkFnZ2dBQ0FETmdJTUlBQWdCRFlDQ0F3QkMwRWZJUU1DUUNBRVFmLy8vd2RMRFFBZ0JFRUlkaUlESUFOQmdQNC9ha0VRZGtFSWNTSURkQ0lGSUFWQmdPQWZha0VRZGtFRWNTSUZkQ0lDSUFKQmdJQVBha0VRZGtFQ2NTSUNkRUVQZGlBRElBVnlJQUp5YXlJRFFRRjBJQVFnQTBFVmFuWkJBWEZ5UVJ4cUlRTUxJQUFnQXpZQ0hDQUFRZ0EzQWhBZ0EwRUNkRUc0MG9DQUFHb2hCUUpBSUFkQkFTQURkQ0lDY1EwQUlBVWdBRFlDQUVFQUlBY2dBbkkyQW96UWdJQUFJQUFnQlRZQ0dDQUFJQUEyQWdnZ0FDQUFOZ0lNREFFTElBUkJBRUVaSUFOQkFYWnJJQU5CSDBZYmRDRURJQVVvQWdBaEFnSkFBMEFnQWlJRktBSUVRWGh4SUFSR0RRRWdBMEVkZGlFQ0lBTkJBWFFoQXlBRklBSkJCSEZxUVJCcUlnWW9BZ0FpQWcwQUN5QUdJQUEyQWdBZ0FDQUZOZ0lZSUFBZ0FEWUNEQ0FBSUFBMkFnZ01BUXNnQlNnQ0NDSURJQUEyQWd3Z0JTQUFOZ0lJSUFCQkFEWUNHQ0FBSUFVMkFnd2dBQ0FETmdJSUN5QUlRUWhxSVFNTUFRc0NRQ0FLUlEwQUFrQUNRQ0FBSUFBb0Fod2lCVUVDZEVHNDBvQ0FBR29pQXlnQ0FFY05BQ0FESUFnMkFnQWdDQTBCUVFBZ0NVRitJQVYzY1RZQ2pOQ0FnQUFNQWdzZ0NrRVFRUlFnQ2lnQ0VDQUFSaHRxSUFnMkFnQWdDRVVOQVFzZ0NDQUtOZ0lZQWtBZ0FDZ0NFQ0lEUlEwQUlBZ2dBellDRUNBRElBZzJBaGdMSUFCQkZHb29BZ0FpQTBVTkFDQUlRUlJxSUFNMkFnQWdBeUFJTmdJWUN3SkFBa0FnQkVFUFN3MEFJQUFnQkNBQ2FpSURRUU55TmdJRUlBQWdBMm9pQXlBREtBSUVRUUZ5TmdJRURBRUxJQUFnQW1vaUJTQUVRUUZ5TmdJRUlBQWdBa0VEY2pZQ0JDQUZJQVJxSUFRMkFnQUNRQ0FIUlEwQUlBZEJlSEZCc05DQWdBQnFJUUpCQUNnQ25OQ0FnQUFoQXdKQUFrQkJBU0FIUVFOMmRDSUlJQVp4RFFCQkFDQUlJQVp5TmdLSTBJQ0FBQ0FDSVFnTUFRc2dBaWdDQ0NFSUN5QUlJQU0yQWd3Z0FpQUROZ0lJSUFNZ0FqWUNEQ0FESUFnMkFnZ0xRUUFnQlRZQ25OQ0FnQUJCQUNBRU5nS1EwSUNBQUFzZ0FFRUlhaUVEQ3lBQlFSQnFKSUNBZ0lBQUlBTUxDZ0FnQUJESmdJQ0FBQXZpRFFFSGZ3SkFJQUJGRFFBZ0FFRjRhaUlCSUFCQmZHb29BZ0FpQWtGNGNTSUFhaUVEQWtBZ0FrRUJjUTBBSUFKQkEzRkZEUUVnQVNBQktBSUFJZ0pySWdGQkFDZ0NtTkNBZ0FBaUJFa05BU0FDSUFCcUlRQUNRQ0FCUVFBb0FwelFnSUFBUmcwQUFrQWdBa0gvQVVzTkFDQUJLQUlJSWdRZ0FrRURkaUlGUVFOMFFiRFFnSUFBYWlJR1Job0NRQ0FCS0FJTUlnSWdCRWNOQUVFQVFRQW9Bb2pRZ0lBQVFYNGdCWGR4TmdLSTBJQ0FBQXdEQ3lBQ0lBWkdHaUFDSUFRMkFnZ2dCQ0FDTmdJTURBSUxJQUVvQWhnaEJ3SkFBa0FnQVNnQ0RDSUdJQUZHRFFBZ0FTZ0NDQ0lDSUFSSkdpQUdJQUkyQWdnZ0FpQUdOZ0lNREFFTEFrQWdBVUVVYWlJQ0tBSUFJZ1FOQUNBQlFSQnFJZ0lvQWdBaUJBMEFRUUFoQmd3QkN3TkFJQUloQlNBRUlnWkJGR29pQWlnQ0FDSUVEUUFnQmtFUWFpRUNJQVlvQWhBaUJBMEFDeUFGUVFBMkFnQUxJQWRGRFFFQ1FBSkFJQUVnQVNnQ0hDSUVRUUowUWJqU2dJQUFhaUlDS0FJQVJ3MEFJQUlnQmpZQ0FDQUdEUUZCQUVFQUtBS00wSUNBQUVGK0lBUjNjVFlDak5DQWdBQU1Bd3NnQjBFUVFSUWdCeWdDRUNBQlJodHFJQVkyQWdBZ0JrVU5BZ3NnQmlBSE5nSVlBa0FnQVNnQ0VDSUNSUTBBSUFZZ0FqWUNFQ0FDSUFZMkFoZ0xJQUVvQWhRaUFrVU5BU0FHUVJScUlBSTJBZ0FnQWlBR05nSVlEQUVMSUFNb0FnUWlBa0VEY1VFRFJ3MEFJQU1nQWtGK2NUWUNCRUVBSUFBMkFwRFFnSUFBSUFFZ0FHb2dBRFlDQUNBQklBQkJBWEkyQWdRUEN5QUJJQU5QRFFBZ0F5Z0NCQ0lDUVFGeFJRMEFBa0FDUUNBQ1FRSnhEUUFDUUNBRFFRQW9BcURRZ0lBQVJ3MEFRUUFnQVRZQ29OQ0FnQUJCQUVFQUtBS1UwSUNBQUNBQWFpSUFOZ0tVMElDQUFDQUJJQUJCQVhJMkFnUWdBVUVBS0FLYzBJQ0FBRWNOQTBFQVFRQTJBcERRZ0lBQVFRQkJBRFlDbk5DQWdBQVBDd0pBSUFOQkFDZ0NuTkNBZ0FCSERRQkJBQ0FCTmdLYzBJQ0FBRUVBUVFBb0FwRFFnSUFBSUFCcUlnQTJBcERRZ0lBQUlBRWdBRUVCY2pZQ0JDQUJJQUJxSUFBMkFnQVBDeUFDUVhoeElBQnFJUUFDUUFKQUlBSkIvd0ZMRFFBZ0F5Z0NDQ0lFSUFKQkEzWWlCVUVEZEVHdzBJQ0FBR29pQmtZYUFrQWdBeWdDRENJQ0lBUkhEUUJCQUVFQUtBS0kwSUNBQUVGK0lBVjNjVFlDaU5DQWdBQU1BZ3NnQWlBR1Job2dBaUFFTmdJSUlBUWdBallDREF3QkN5QURLQUlZSVFjQ1FBSkFJQU1vQWd3aUJpQURSZzBBSUFNb0FnZ2lBa0VBS0FLWTBJQ0FBRWthSUFZZ0FqWUNDQ0FDSUFZMkFnd01BUXNDUUNBRFFSUnFJZ0lvQWdBaUJBMEFJQU5CRUdvaUFpZ0NBQ0lFRFFCQkFDRUdEQUVMQTBBZ0FpRUZJQVFpQmtFVWFpSUNLQUlBSWdRTkFDQUdRUkJxSVFJZ0JpZ0NFQ0lFRFFBTElBVkJBRFlDQUFzZ0IwVU5BQUpBQWtBZ0F5QURLQUljSWdSQkFuUkJ1TktBZ0FCcUlnSW9BZ0JIRFFBZ0FpQUdOZ0lBSUFZTkFVRUFRUUFvQW96UWdJQUFRWDRnQkhkeE5nS00wSUNBQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQU5HRzJvZ0JqWUNBQ0FHUlEwQkN5QUdJQWMyQWhnQ1FDQURLQUlRSWdKRkRRQWdCaUFDTmdJUUlBSWdCallDR0FzZ0F5Z0NGQ0lDUlEwQUlBWkJGR29nQWpZQ0FDQUNJQVkyQWhnTElBRWdBR29nQURZQ0FDQUJJQUJCQVhJMkFnUWdBVUVBS0FLYzBJQ0FBRWNOQVVFQUlBQTJBcERRZ0lBQUR3c2dBeUFDUVg1eE5nSUVJQUVnQUdvZ0FEWUNBQ0FCSUFCQkFYSTJBZ1FMQWtBZ0FFSC9BVXNOQUNBQVFYaHhRYkRRZ0lBQWFpRUNBa0FDUUVFQUtBS0kwSUNBQUNJRVFRRWdBRUVEZG5RaUFIRU5BRUVBSUFRZ0FISTJBb2pRZ0lBQUlBSWhBQXdCQ3lBQ0tBSUlJUUFMSUFBZ0FUWUNEQ0FDSUFFMkFnZ2dBU0FDTmdJTUlBRWdBRFlDQ0E4TFFSOGhBZ0pBSUFCQi8vLy9CMHNOQUNBQVFRaDJJZ0lnQWtHQS9qOXFRUkIyUVFoeElnSjBJZ1FnQkVHQTRCOXFRUkIyUVFSeElnUjBJZ1lnQmtHQWdBOXFRUkIyUVFKeElnWjBRUTkySUFJZ0JISWdCbkpySWdKQkFYUWdBQ0FDUVJWcWRrRUJjWEpCSEdvaEFnc2dBU0FDTmdJY0lBRkNBRGNDRUNBQ1FRSjBRYmpTZ0lBQWFpRUVBa0FDUUVFQUtBS00wSUNBQUNJR1FRRWdBblFpQTNFTkFDQUVJQUUyQWdCQkFDQUdJQU55TmdLTTBJQ0FBQ0FCSUFRMkFoZ2dBU0FCTmdJSUlBRWdBVFlDREF3QkN5QUFRUUJCR1NBQ1FRRjJheUFDUVI5R0czUWhBaUFFS0FJQUlRWUNRQU5BSUFZaUJDZ0NCRUY0Y1NBQVJnMEJJQUpCSFhZaEJpQUNRUUYwSVFJZ0JDQUdRUVJ4YWtFUWFpSURLQUlBSWdZTkFBc2dBeUFCTmdJQUlBRWdCRFlDR0NBQklBRTJBZ3dnQVNBQk5nSUlEQUVMSUFRb0FnZ2lBQ0FCTmdJTUlBUWdBVFlDQ0NBQlFRQTJBaGdnQVNBRU5nSU1JQUVnQURZQ0NBdEJBRUVBS0FLbzBJQ0FBRUYvYWlJQlFYOGdBUnMyQXFqUWdJQUFDd3NFQUFBQUMwNEFBa0FnQUEwQVB3QkJFSFFQQ3dKQUlBQkIvLzhEY1EwQUlBQkJmMHdOQUFKQUlBQkJFSFpBQUNJQVFYOUhEUUJCQUVFd05nTDQwNENBQUVGL0R3c2dBRUVRZEE4TEVNcUFnSUFBQUF2eUFnSURmd0YrQWtBZ0FrVU5BQ0FBSUFFNkFBQWdBaUFBYWlJRFFYOXFJQUU2QUFBZ0FrRURTUTBBSUFBZ0FUb0FBaUFBSUFFNkFBRWdBMEY5YWlBQk9nQUFJQU5CZm1vZ0FUb0FBQ0FDUVFkSkRRQWdBQ0FCT2dBRElBTkJmR29nQVRvQUFDQUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRjhhaUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCZUdvZ0FUWUNBQ0FDUVhScUlBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVhCcUlBRTJBZ0FnQWtGc2FpQUJOZ0lBSUFKQmFHb2dBVFlDQUNBQ1FXUnFJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnVnJJZ0pCSUVrTkFDQUJyVUtCZ0lDQUVINGhCaUFESUFWcUlRRURRQ0FCSUFZM0F4Z2dBU0FHTndNUUlBRWdCamNEQ0NBQklBWTNBd0FnQVVFZ2FpRUJJQUpCWUdvaUFrRWZTdzBBQ3dzZ0FBc0xqa2dCQUVHQUNBdUdTQUVBQUFBQ0FBQUFBd0FBQUFBQUFBQUFBQUFBQkFBQUFBVUFBQUFBQUFBQUFBQUFBQVlBQUFBSEFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1c1MllXeHBaQ0JqYUdGeUlHbHVJSFZ5YkNCeGRXVnllUUJUY0dGdUlHTmhiR3hpWVdOcklHVnljbTl5SUdsdUlHOXVYMkp2WkhrQVEyOXVkR1Z1ZEMxTVpXNW5kR2dnYjNabGNtWnNiM2NBUTJoMWJtc2djMmw2WlNCdmRtVnlabXh2ZHdCU1pYTndiMjV6WlNCdmRtVnlabXh2ZHdCSmJuWmhiR2xrSUcxbGRHaHZaQ0JtYjNJZ1NGUlVVQzk0TG5nZ2NtVnhkV1Z6ZEFCSmJuWmhiR2xrSUcxbGRHaHZaQ0JtYjNJZ1VsUlRVQzk0TG5nZ2NtVnhkV1Z6ZEFCRmVIQmxZM1JsWkNCVFQxVlNRMFVnYldWMGFHOWtJR1p2Y2lCSlEwVXZlQzU0SUhKbGNYVmxjM1FBU1c1MllXeHBaQ0JqYUdGeUlHbHVJSFZ5YkNCbWNtRm5iV1Z1ZENCemRHRnlkQUJGZUhCbFkzUmxaQ0JrYjNRQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5emRHRjBkWE1BU1c1MllXeHBaQ0J5WlhOd2IyNXpaU0J6ZEdGMGRYTUFTVzUyWVd4cFpDQmphR0Z5WVdOMFpYSWdhVzRnWTJoMWJtc2daWGgwWlc1emFXOXVjd0JWYzJWeUlHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOXlaWE5sZEdBZ1kyRnNiR0poWTJzZ1pYSnliM0lBWUc5dVgyTm9kVzVyWDJobFlXUmxjbUFnWTJGc2JHSmhZMnNnWlhKeWIzSUFZRzl1WDIxbGMzTmhaMlZmWW1WbmFXNWdJR05oYkd4aVlXTnJJR1Z5Y205eUFHQnZibDlqYUhWdWExOWxlSFJsYm5OcGIyNWZkbUZzZFdWZ0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOXpkR0YwZFhOZlkyOXRjR3hsZEdWZ0lHTmhiR3hpWVdOcklHVnljbTl5QUdCdmJsOTJaWEp6YVc5dVgyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZkWEpzWDJOdmJYQnNaWFJsWUNCallXeHNZbUZqYXlCbGNuSnZjZ0JnYjI1ZlkyaDFibXRmWTI5dGNHeGxkR1ZnSUdOaGJHeGlZV05ySUdWeWNtOXlBR0J2Ymw5b1pXRmtaWEpmZG1Gc2RXVmZZMjl0Y0d4bGRHVmdJR05oYkd4aVlXTnJJR1Z5Y205eUFHQnZibDl0WlhOellXZGxYMk52YlhCc1pYUmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmYldWMGFHOWtYMk52YlhCc1pYUmxZQ0JqWVd4c1ltRmpheUJsY25KdmNnQmdiMjVmYUdWaFpHVnlYMlpwWld4a1gyTnZiWEJzWlhSbFlDQmpZV3hzWW1GamF5Qmxjbkp2Y2dCZ2IyNWZZMmgxYm10ZlpYaDBaVzV6YVc5dVgyNWhiV1ZnSUdOaGJHeGlZV05ySUdWeWNtOXlBRlZ1Wlhod1pXTjBaV1FnWTJoaGNpQnBiaUIxY213Z2MyVnlkbVZ5QUVsdWRtRnNhV1FnYUdWaFpHVnlJSFpoYkhWbElHTm9ZWElBU1c1MllXeHBaQ0JvWldGa1pYSWdabWxsYkdRZ1kyaGhjZ0JUY0dGdUlHTmhiR3hpWVdOcklHVnljbTl5SUdsdUlHOXVYM1psY25OcGIyNEFTVzUyWVd4cFpDQnRhVzV2Y2lCMlpYSnphVzl1QUVsdWRtRnNhV1FnYldGcWIzSWdkbVZ5YzJsdmJnQkZlSEJsWTNSbFpDQnpjR0ZqWlNCaFpuUmxjaUIyWlhKemFXOXVBRVY0Y0dWamRHVmtJRU5TVEVZZ1lXWjBaWElnZG1WeWMybHZiZ0JKYm5aaGJHbGtJRWhVVkZBZ2RtVnljMmx2YmdCSmJuWmhiR2xrSUdobFlXUmxjaUIwYjJ0bGJnQlRjR0Z1SUdOaGJHeGlZV05ySUdWeWNtOXlJR2x1SUc5dVgzVnliQUJKYm5aaGJHbGtJR05vWVhKaFkzUmxjbk1nYVc0Z2RYSnNBRlZ1Wlhod1pXTjBaV1FnYzNSaGNuUWdZMmhoY2lCcGJpQjFjbXdBUkc5MVlteGxJRUFnYVc0Z2RYSnNBRVZ0Y0hSNUlFTnZiblJsYm5RdFRHVnVaM1JvQUVsdWRtRnNhV1FnWTJoaGNtRmpkR1Z5SUdsdUlFTnZiblJsYm5RdFRHVnVaM1JvQUVSMWNHeHBZMkYwWlNCRGIyNTBaVzUwTFV4bGJtZDBhQUJKYm5aaGJHbGtJR05vWVhJZ2FXNGdkWEpzSUhCaGRHZ0FRMjl1ZEdWdWRDMU1aVzVuZEdnZ1kyRnVKM1FnWW1VZ2NISmxjMlZ1ZENCM2FYUm9JRlJ5WVc1elptVnlMVVZ1WTI5a2FXNW5BRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUdOb2RXNXJJSE5wZW1VQVUzQmhiaUJqWVd4c1ltRmpheUJsY25KdmNpQnBiaUJ2Ymw5b1pXRmtaWEpmZG1Gc2RXVUFVM0JoYmlCallXeHNZbUZqYXlCbGNuSnZjaUJwYmlCdmJsOWphSFZ1YTE5bGVIUmxibk5wYjI1ZmRtRnNkV1VBU1c1MllXeHBaQ0JqYUdGeVlXTjBaWElnYVc0Z1kyaDFibXNnWlhoMFpXNXphVzl1Y3lCMllXeDFaUUJOYVhOemFXNW5JR1Y0Y0dWamRHVmtJRXhHSUdGbWRHVnlJR2hsWVdSbGNpQjJZV3gxWlFCSmJuWmhiR2xrSUdCVWNtRnVjMlpsY2kxRmJtTnZaR2x1WjJBZ2FHVmhaR1Z5SUhaaGJIVmxBRWx1ZG1Gc2FXUWdZMmhoY21GamRHVnlJR2x1SUdOb2RXNXJJR1Y0ZEdWdWMybHZibk1nY1hWdmRHVWdkbUZzZFdVQVNXNTJZV3hwWkNCamFHRnlZV04wWlhJZ2FXNGdZMmgxYm1zZ1pYaDBaVzV6YVc5dWN5QnhkVzkwWldRZ2RtRnNkV1VBVUdGMWMyVmtJR0o1SUc5dVgyaGxZV1JsY25OZlkyOXRjR3hsZEdVQVNXNTJZV3hwWkNCRlQwWWdjM1JoZEdVQWIyNWZjbVZ6WlhRZ2NHRjFjMlVBYjI1ZlkyaDFibXRmYUdWaFpHVnlJSEJoZFhObEFHOXVYMjFsYzNOaFoyVmZZbVZuYVc0Z2NHRjFjMlVBYjI1ZlkyaDFibXRmWlhoMFpXNXphVzl1WDNaaGJIVmxJSEJoZFhObEFHOXVYM04wWVhSMWMxOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOTJaWEp6YVc5dVgyTnZiWEJzWlhSbElIQmhkWE5sQUc5dVgzVnliRjlqYjIxd2JHVjBaU0J3WVhWelpRQnZibDlqYUhWdWExOWpiMjF3YkdWMFpTQndZWFZ6WlFCdmJsOW9aV0ZrWlhKZmRtRnNkV1ZmWTI5dGNHeGxkR1VnY0dGMWMyVUFiMjVmYldWemMyRm5aVjlqYjIxd2JHVjBaU0J3WVhWelpRQnZibDl0WlhSb2IyUmZZMjl0Y0d4bGRHVWdjR0YxYzJVQWIyNWZhR1ZoWkdWeVgyWnBaV3hrWDJOdmJYQnNaWFJsSUhCaGRYTmxBRzl1WDJOb2RXNXJYMlY0ZEdWdWMybHZibDl1WVcxbElIQmhkWE5sQUZWdVpYaHdaV04wWldRZ2MzQmhZMlVnWVdaMFpYSWdjM1JoY25RZ2JHbHVaUUJUY0dGdUlHTmhiR3hpWVdOcklHVnljbTl5SUdsdUlHOXVYMk5vZFc1clgyVjRkR1Z1YzJsdmJsOXVZVzFsQUVsdWRtRnNhV1FnWTJoaGNtRmpkR1Z5SUdsdUlHTm9kVzVySUdWNGRHVnVjMmx2Ym5NZ2JtRnRaUUJRWVhWelpTQnZiaUJEVDA1T1JVTlVMMVZ3WjNKaFpHVUFVR0YxYzJVZ2IyNGdVRkpKTDFWd1ozSmhaR1VBUlhod1pXTjBaV1FnU0ZSVVVDOHlJRU52Ym01bFkzUnBiMjRnVUhKbFptRmpaUUJUY0dGdUlHTmhiR3hpWVdOcklHVnljbTl5SUdsdUlHOXVYMjFsZEdodlpBQkZlSEJsWTNSbFpDQnpjR0ZqWlNCaFpuUmxjaUJ0WlhSb2IyUUFVM0JoYmlCallXeHNZbUZqYXlCbGNuSnZjaUJwYmlCdmJsOW9aV0ZrWlhKZlptbGxiR1FBVUdGMWMyVmtBRWx1ZG1Gc2FXUWdkMjl5WkNCbGJtTnZkVzUwWlhKbFpBQkpiblpoYkdsa0lHMWxkR2h2WkNCbGJtTnZkVzUwWlhKbFpBQlZibVY0Y0dWamRHVmtJR05vWVhJZ2FXNGdkWEpzSUhOamFHVnRZUUJTWlhGMVpYTjBJR2hoY3lCcGJuWmhiR2xrSUdCVWNtRnVjMlpsY2kxRmJtTnZaR2x1WjJBQVUxZEpWRU5JWDFCU1QxaFpBRlZUUlY5UVVrOVlXUUJOUzBGRFZFbFdTVlJaQUZWT1VGSlBRMFZUVTBGQ1RFVmZSVTVVU1ZSWkFFTlBVRmtBVFU5V1JVUmZVRVZTVFVGT1JVNVVURmtBVkU5UFgwVkJVa3haQUU1UFZFbEdXUUJHUVVsTVJVUmZSRVZRUlU1RVJVNURXUUJDUVVSZlIwRlVSVmRCV1FCUVRFRlpBRkJWVkFCRFNFVkRTMDlWVkFCSFFWUkZWMEZaWDFSSlRVVlBWVlFBVWtWUlZVVlRWRjlVU1UxRlQxVlVBRTVGVkZkUFVrdGZRMDlPVGtWRFZGOVVTVTFGVDFWVUFFTlBUazVGUTFSSlQwNWZWRWxOUlU5VlZBQk1UMGRKVGw5VVNVMUZUMVZVQUU1RlZGZFBVa3RmVWtWQlJGOVVTVTFGVDFWVUFGQlBVMVFBVFVsVFJFbFNSVU5VUlVSZlVrVlJWVVZUVkFCRFRFbEZUbFJmUTB4UFUwVkVYMUpGVVZWRlUxUUFRMHhKUlU1VVgwTk1UMU5GUkY5TVQwRkVYMEpCVEVGT1EwVkVYMUpGVVZWRlUxUUFRa0ZFWDFKRlVWVkZVMVFBU0ZSVVVGOVNSVkZWUlZOVVgxTkZUbFJmVkU5ZlNGUlVVRk5mVUU5U1ZBQlNSVkJQVWxRQVNVMWZRVjlVUlVGUVQxUUFVa1ZUUlZSZlEwOU9WRVZPVkFCT1QxOURUMDVVUlU1VUFGQkJVbFJKUVV4ZlEwOU9WRVZPVkFCSVVFVmZTVTVXUVV4SlJGOURUMDVUVkVGT1ZBQklVRVZmUTBKZlVrVlRSVlFBUjBWVUFFaFFSVjlUVkZKSlExUUFRMDlPUmt4SlExUUFWRVZOVUU5U1FWSlpYMUpGUkVsU1JVTlVBRkJGVWsxQlRrVk9WRjlTUlVSSlVrVkRWQUJEVDA1T1JVTlVBRTFWVEZSSlgxTlVRVlJWVXdCSVVFVmZTVTVXUVV4SlJGOVRWRUZVVlZNQVZFOVBYMDFCVGxsZlVrVlJWVVZUVkZNQVJVRlNURmxmU0VsT1ZGTUFWVTVCVmtGSlRFRkNURVZmUms5U1gweEZSMEZNWDFKRlFWTlBUbE1BVDFCVVNVOU9Vd0JUVjBsVVEwaEpUa2RmVUZKUFZFOURUMHhUQUZaQlVrbEJUbFJmUVV4VFQxOU9SVWRQVkVsQlZFVlRBRTFWVEZSSlVFeEZYME5JVDBsRFJWTUFTVTVVUlZKT1FVeGZVMFZTVmtWU1gwVlNVazlTQUZkRlFsOVRSVkpXUlZKZlZVNUxUazlYVGw5RlVsSlBVZ0JTUVVsTVIxVk9YMFZTVWs5U0FFbEVSVTVVU1ZSWlgxQlNUMVpKUkVWU1gwRlZWRWhGVGxSSlEwRlVTVTlPWDBWU1VrOVNBRk5UVEY5RFJWSlVTVVpKUTBGVVJWOUZVbEpQVWdCSlRsWkJURWxFWDFoZlJrOVNWMEZTUkVWRVgwWlBVZ0JUUlZSZlVFRlNRVTFGVkVWU0FFZEZWRjlRUVZKQlRVVlVSVklBU0ZCRlgxVlRSVklBVTBWRlgwOVVTRVZTQUVoUVJWOURRbDlEU0ZWT1MxOUlSVUZFUlZJQVRVdERRVXhGVGtSQlVnQlRSVlJWVUFCWFJVSmZVMFZTVmtWU1gwbFRYMFJQVjA0QVZFVkJVa1JQVjA0QVNGQkZYME5NVDFORlJGOURUMDVPUlVOVVNVOU9BRWhGVlZKSlUxUkpRMTlGV0ZCSlVrRlVTVTlPQUVSSlUwTlBUazVGUTFSRlJGOVBVRVZTUVZSSlQwNEFUazlPWDBGVlZFaFBVa2xVUVZSSlZrVmZTVTVHVDFKTlFWUkpUMDRBU0ZCRlgwbE9Wa0ZNU1VSZlZrVlNVMGxQVGdCSVVFVmZRMEpmVFVWVFUwRkhSVjlDUlVkSlRnQlRTVlJGWDBsVFgwWlNUMXBGVGdCSVVFVmZTVTVXUVV4SlJGOUlSVUZFUlZKZlZFOUxSVTRBU1U1V1FVeEpSRjlVVDB0RlRnQkdUMUpDU1VSRVJVNEFSVTVJUVU1RFJWOVpUMVZTWDBOQlRFMEFTRkJGWDBsT1ZrRk1TVVJmVlZKTUFFSk1UME5MUlVSZlFsbGZVRUZTUlU1VVFVeGZRMDlPVkZKUFRBQk5TME5QVEFCQlEwd0FTRkJGWDBsT1ZFVlNUa0ZNQUZKRlVWVkZVMVJmU0VWQlJFVlNYMFpKUlV4RVUxOVVUMDlmVEVGU1IwVmZWVTVQUmtaSlEwbEJUQUJJVUVWZlQwc0FWVTVNU1U1TEFGVk9URTlEU3dCUVVra0FVa1ZVVWxsZlYwbFVTQUJJVUVWZlNVNVdRVXhKUkY5RFQwNVVSVTVVWDB4RlRrZFVTQUJJVUVWZlZVNUZXRkJGUTFSRlJGOURUMDVVUlU1VVgweEZUa2RVU0FCR1RGVlRTQUJRVWs5UVVFRlVRMGdBVFMxVFJVRlNRMGdBVlZKSlgxUlBUMTlNVDA1SEFGQlNUME5GVTFOSlRrY0FUVWxUUTBWTVRFRk9SVTlWVTE5UVJWSlRTVk5VUlU1VVgxZEJVazVKVGtjQVRVbFRRMFZNVEVGT1JVOVZVMTlYUVZKT1NVNUhBRWhRUlY5SlRsWkJURWxFWDFSU1FVNVRSa1ZTWDBWT1EwOUVTVTVIQUVWNGNHVmpkR1ZrSUVOU1RFWUFTRkJGWDBsT1ZrRk1TVVJmUTBoVlRrdGZVMGxhUlFCTlQxWkZBRU5QVGxSSlRsVkZBRWhRUlY5RFFsOVRWRUZVVlZOZlEwOU5VRXhGVkVVQVNGQkZYME5DWDBoRlFVUkZVbE5mUTA5TlVFeEZWRVVBU0ZCRlgwTkNYMVpGVWxOSlQwNWZRMDlOVUV4RlZFVUFTRkJGWDBOQ1gxVlNURjlEVDAxUVRFVlVSUUJJVUVWZlEwSmZRMGhWVGt0ZlEwOU5VRXhGVkVVQVNGQkZYME5DWDBoRlFVUkZVbDlXUVV4VlJWOURUMDFRVEVWVVJRQklVRVZmUTBKZlEwaFZUa3RmUlZoVVJVNVRTVTlPWDFaQlRGVkZYME5QVFZCTVJWUkZBRWhRUlY5RFFsOURTRlZPUzE5RldGUkZUbE5KVDA1ZlRrRk5SVjlEVDAxUVRFVlVSUUJJVUVWZlEwSmZUVVZUVTBGSFJWOURUMDFRVEVWVVJRQklVRVZmUTBKZlRVVlVTRTlFWDBOUFRWQk1SVlJGQUVoUVJWOURRbDlJUlVGRVJWSmZSa2xGVEVSZlEwOU5VRXhGVkVVQVJFVk1SVlJGQUVoUVJWOUpUbFpCVEVsRVgwVlBSbDlUVkVGVVJRQkpUbFpCVEVsRVgxTlRURjlEUlZKVVNVWkpRMEZVUlFCUVFWVlRSUUJPVDE5U1JWTlFUMDVUUlFCVlRsTlZVRkJQVWxSRlJGOU5SVVJKUVY5VVdWQkZBRWRQVGtVQVRrOVVYMEZEUTBWUVZFRkNURVVBVTBWU1ZrbERSVjlWVGtGV1FVbE1RVUpNUlFCU1FVNUhSVjlPVDFSZlUwRlVTVk5HU1VGQ1RFVUFUMUpKUjBsT1gwbFRYMVZPVWtWQlEwaEJRa3hGQUZKRlUxQlBUbE5GWDBsVFgxTlVRVXhGQUZCVlVrZEZBRTFGVWtkRkFGSkZVVlZGVTFSZlNFVkJSRVZTWDBaSlJVeEVVMTlVVDA5ZlRFRlNSMFVBVWtWUlZVVlRWRjlJUlVGRVJWSmZWRTlQWDB4QlVrZEZBRkJCV1V4UFFVUmZWRTlQWDB4QlVrZEZBRWxPVTFWR1JrbERTVVZPVkY5VFZFOVNRVWRGQUVoUVJWOVFRVlZUUlVSZlZWQkhVa0ZFUlFCSVVFVmZVRUZWVTBWRVgwZ3lYMVZRUjFKQlJFVUFVMDlWVWtORkFFRk9UazlWVGtORkFGUlNRVU5GQUVoUVJWOVZUa1ZZVUVWRFZFVkVYMU5RUVVORkFFUkZVME5TU1VKRkFGVk9VMVZDVTBOU1NVSkZBRkpGUTA5U1JBQklVRVZmU1U1V1FVeEpSRjlOUlZSSVQwUUFUazlVWDBaUFZVNUVBRkJTVDFCR1NVNUVBRlZPUWtsT1JBQlNSVUpKVGtRQVZVNUJWVlJJVDFKSldrVkVBRTFGVkVoUFJGOU9UMVJmUVV4TVQxZEZSQUJJVkZSUVgxWkZVbE5KVDA1ZlRrOVVYMU5WVUZCUFVsUkZSQUJCVEZKRlFVUlpYMUpGVUU5U1ZFVkVBRUZEUTBWUVZFVkVBRTVQVkY5SlRWQk1SVTFGVGxSRlJBQk1UMDlRWDBSRlZFVkRWRVZFQUVoUVJWOURVbDlGV0ZCRlExUkZSQUJJVUVWZlRFWmZSVmhRUlVOVVJVUUFRMUpGUVZSRlJBQkpUVjlWVTBWRUFFaFFSVjlRUVZWVFJVUUFWRWxOUlU5VlZGOVBRME5WVWtWRUFGQkJXVTFGVGxSZlVrVlJWVWxTUlVRQVVGSkZRMDlPUkVsVVNVOU9YMUpGVVZWSlVrVkVBRkJTVDFoWlgwRlZWRWhGVGxSSlEwRlVTVTlPWDFKRlVWVkpVa1ZFQUU1RlZGZFBVa3RmUVZWVVNFVk9WRWxEUVZSSlQwNWZVa1ZSVlVsU1JVUUFURVZPUjFSSVgxSkZVVlZKVWtWRUFGTlRURjlEUlZKVVNVWkpRMEZVUlY5U1JWRlZTVkpGUkFCVlVFZFNRVVJGWDFKRlVWVkpVa1ZFQUZCQlIwVmZSVmhRU1ZKRlJBQlFVa1ZEVDA1RVNWUkpUMDVmUmtGSlRFVkVBRVZZVUVWRFZFRlVTVTlPWDBaQlNVeEZSQUJTUlZaQlRFbEVRVlJKVDA1ZlJrRkpURVZFQUZOVFRGOUlRVTVFVTBoQlMwVmZSa0ZKVEVWRUFFeFBRMHRGUkFCVVVrRk9VMFpQVWsxQlZFbFBUbDlCVUZCTVNVVkVBRTVQVkY5TlQwUkpSa2xGUkFCT1QxUmZSVmhVUlU1RVJVUUFRa0ZPUkZkSlJGUklYMHhKVFVsVVgwVllRMFZGUkVWRUFGTkpWRVZmU1ZOZlQxWkZVa3hQUVVSRlJBQklSVUZFQUVWNGNHVmpkR1ZrSUVoVVZGQXZBQUJlRXdBQUpoTUFBREFRQUFEd0Z3QUFuUk1BQUJVU0FBQTVGd0FBOEJJQUFBb1FBQUIxRWdBQXJSSUFBSUlUQUFCUEZBQUFmeEFBQUtBVkFBQWpGQUFBaVJJQUFJc1VBQUJORlFBQTFCRUFBTThVQUFBUUdBQUF5UllBQU53V0FBREJFUUFBNEJjQUFMc1VBQUIwRkFBQWZCVUFBT1VVQUFBSUZ3QUFIeEFBQUdVVkFBQ2pGQUFBS0JVQUFBSVZBQUNaRlFBQUxCQUFBSXNaQUFCUER3QUExQTRBQUdvUUFBRE9FQUFBQWhjQUFJa09BQUJ1RXdBQUhCTUFBR1lVQUFCV0Z3QUF3Uk1BQU0wVEFBQnNFd0FBYUJjQUFHWVhBQUJmRndBQUloTUFBTTRQQUFCcERnQUEyQTRBQUdNV0FBRExFd0FBcWc0QUFDZ1hBQUFtRndBQXhSTUFBRjBXQUFEb0VRQUFaeE1BQUdVVEFBRHlGZ0FBY3hNQUFCMFhBQUQ1RmdBQTh4RUFBTThPQUFET0ZRQUFEQklBQUxNUkFBQ2xFUUFBWVJBQUFESVhBQUM3RXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQWdFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnTUNBZ0lDQWdBQUFnSUFBZ0lBQWdJQ0FnSUNBZ0lDQWdBRUFBQUFBQUFDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0FBQUFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FBSUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQWdJQ0FnSUFBQUlDQUFJQ0FBSUNBZ0lDQWdJQ0FnSUFBd0FFQUFBQUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQUFBQUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnNiM05sWldWd0xXRnNhWFpsQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJBUUVCQVFFQkFRRUJBZ0VCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFGamFIVnVhMlZrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUFCQVFFQkFRQUFBUUVBQVFFQUFRRUJBUUVCQVFFQkFRQUFBQUFBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUVBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHVmpkR2x2Ym1WdWRDMXNaVzVuZEdodmJuSnZlSGt0WTI5dWJtVmpkR2x2YmdBQUFBQUFBQUFBQUFBQUFBQUFBSEpoYm5ObVpYSXRaVzVqYjJScGJtZHdaM0poWkdVTkNnMEtEUXBUVFEwS0RRcFVWRkF2UTBVdlZGTlFMd0FBQUFBQUFBQUFBQUFBQUFFQ0FBRURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQUFBQUJBZ0FCQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQkFRVUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBQUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFBQUFBQUFBQUFBQVFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVBQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUFBQUFBQUFBQUFBQUJBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdRQUFBUUVCQVFFQkFRRUJBUUVCUVFFQkFRRUJBUUVCQVFFQkFBRUFBWUhCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQVFBQkFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQUFBQUFBQUFBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQWdBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3QUFBQUFBQUFNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRTVQVlU1RFJVVkRTMDlWVkU1RlExUkZWRVZEVWtsQ1JVeFZVMGhGVkVWQlJGTkZRVkpEU0ZKSFJVTlVTVlpKVkZsTVJVNUVRVkpXUlU5VVNVWlpVRlJKVDA1VFEwaFRSVUZaVTFSQlZFTklSMFZQVWtSSlVrVkRWRTlTVkZKRFNGQkJVa0ZOUlZSRlVsVlNRMFZDVTBOU1NVSkZRVkpFVDFkT1FVTkZTVTVFVGt0RFMxVkNVME5TU1VKRlNGUlVVQzlCUkZSUUx3PT0nXG4iLCAiLy8gQHRzLWNoZWNrXG5cbid1c2Ugc3RyaWN0J1xuXG4vKiBnbG9iYWwgV2ViQXNzZW1ibHkgKi9cblxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IG5ldCA9IHJlcXVpcmUoJ25ldCcpXG5jb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpXG5jb25zdCB7IHBpcGVsaW5lIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4vY29yZS91dGlsJylcbmNvbnN0IHRpbWVycyA9IHJlcXVpcmUoJy4vdGltZXJzJylcbmNvbnN0IFJlcXVlc3QgPSByZXF1aXJlKCcuL2NvcmUvcmVxdWVzdCcpXG5jb25zdCBEaXNwYXRjaGVyQmFzZSA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hlci1iYXNlJylcbmNvbnN0IHtcbiAgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yLFxuICBSZXNwb25zZUNvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yLFxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcbiAgUmVxdWVzdEFib3J0ZWRFcnJvcixcbiAgSGVhZGVyc1RpbWVvdXRFcnJvcixcbiAgSGVhZGVyc092ZXJmbG93RXJyb3IsXG4gIFNvY2tldEVycm9yLFxuICBJbmZvcm1hdGlvbmFsRXJyb3IsXG4gIEJvZHlUaW1lb3V0RXJyb3IsXG4gIEhUVFBQYXJzZXJFcnJvcixcbiAgUmVzcG9uc2VFeGNlZWRlZE1heFNpemVFcnJvcixcbiAgQ2xpZW50RGVzdHJveWVkRXJyb3Jcbn0gPSByZXF1aXJlKCcuL2NvcmUvZXJyb3JzJylcbmNvbnN0IGJ1aWxkQ29ubmVjdG9yID0gcmVxdWlyZSgnLi9jb3JlL2Nvbm5lY3QnKVxuY29uc3Qge1xuICBrVXJsLFxuICBrUmVzZXQsXG4gIGtTZXJ2ZXJOYW1lLFxuICBrQ2xpZW50LFxuICBrQnVzeSxcbiAga1BhcnNlcixcbiAga0Nvbm5lY3QsXG4gIGtCbG9ja2luZyxcbiAga1Jlc3VtaW5nLFxuICBrUnVubmluZyxcbiAga1BlbmRpbmcsXG4gIGtTaXplLFxuICBrV3JpdGluZyxcbiAga1F1ZXVlLFxuICBrQ29ubmVjdGVkLFxuICBrQ29ubmVjdGluZyxcbiAga05lZWREcmFpbixcbiAga05vUmVmLFxuICBrS2VlcEFsaXZlRGVmYXVsdFRpbWVvdXQsXG4gIGtIb3N0SGVhZGVyLFxuICBrUGVuZGluZ0lkeCxcbiAga1J1bm5pbmdJZHgsXG4gIGtFcnJvcixcbiAga1BpcGVsaW5pbmcsXG4gIGtTb2NrZXQsXG4gIGtLZWVwQWxpdmVUaW1lb3V0VmFsdWUsXG4gIGtNYXhIZWFkZXJzU2l6ZSxcbiAga0tlZXBBbGl2ZU1heFRpbWVvdXQsXG4gIGtLZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkLFxuICBrSGVhZGVyc1RpbWVvdXQsXG4gIGtCb2R5VGltZW91dCxcbiAga1N0cmljdENvbnRlbnRMZW5ndGgsXG4gIGtDb25uZWN0b3IsXG4gIGtNYXhSZWRpcmVjdGlvbnMsXG4gIGtNYXhSZXF1ZXN0cyxcbiAga0NvdW50ZXIsXG4gIGtDbG9zZSxcbiAga0Rlc3Ryb3ksXG4gIGtEaXNwYXRjaCxcbiAga0ludGVyY2VwdG9ycyxcbiAga0xvY2FsQWRkcmVzcyxcbiAga01heFJlc3BvbnNlU2l6ZSxcbiAga0hUVFBDb25uVmVyc2lvbixcbiAgLy8gSFRUUDJcbiAga0hvc3QsXG4gIGtIVFRQMlNlc3Npb24sXG4gIGtIVFRQMlNlc3Npb25TdGF0ZSxcbiAga0hUVFAyQnVpbGRSZXF1ZXN0LFxuICBrSFRUUDJDb3B5SGVhZGVycyxcbiAga0hUVFAxQnVpbGRSZXF1ZXN0XG59ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuXG4vKiogQHR5cGUge2ltcG9ydCgnaHR0cDInKX0gKi9cbmxldCBodHRwMlxudHJ5IHtcbiAgaHR0cDIgPSByZXF1aXJlKCdodHRwMicpXG59IGNhdGNoIHtcbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwMiA9IHsgY29uc3RhbnRzOiB7fSB9XG59XG5cbmNvbnN0IHtcbiAgY29uc3RhbnRzOiB7XG4gICAgSFRUUDJfSEVBREVSX0FVVEhPUklUWSxcbiAgICBIVFRQMl9IRUFERVJfTUVUSE9ELFxuICAgIEhUVFAyX0hFQURFUl9QQVRILFxuICAgIEhUVFAyX0hFQURFUl9TQ0hFTUUsXG4gICAgSFRUUDJfSEVBREVSX0NPTlRFTlRfTEVOR1RILFxuICAgIEhUVFAyX0hFQURFUl9FWFBFQ1QsXG4gICAgSFRUUDJfSEVBREVSX1NUQVRVU1xuICB9XG59ID0gaHR0cDJcblxuLy8gRXhwZXJpbWVudGFsXG5sZXQgaDJFeHBlcmltZW50YWxXYXJuZWQgPSBmYWxzZVxuXG5jb25zdCBGYXN0QnVmZmVyID0gQnVmZmVyW1N5bWJvbC5zcGVjaWVzXVxuXG5jb25zdCBrQ2xvc2VkUmVzb2x2ZSA9IFN5bWJvbCgna0Nsb3NlZFJlc29sdmUnKVxuXG5jb25zdCBjaGFubmVscyA9IHt9XG5cbnRyeSB7XG4gIGNvbnN0IGRpYWdub3N0aWNzQ2hhbm5lbCA9IHJlcXVpcmUoJ2RpYWdub3N0aWNzX2NoYW5uZWwnKVxuICBjaGFubmVscy5zZW5kSGVhZGVycyA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6Y2xpZW50OnNlbmRIZWFkZXJzJylcbiAgY2hhbm5lbHMuYmVmb3JlQ29ubmVjdCA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6Y2xpZW50OmJlZm9yZUNvbm5lY3QnKVxuICBjaGFubmVscy5jb25uZWN0RXJyb3IgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOmNsaWVudDpjb25uZWN0RXJyb3InKVxuICBjaGFubmVscy5jb25uZWN0ZWQgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOmNsaWVudDpjb25uZWN0ZWQnKVxufSBjYXRjaCB7XG4gIGNoYW5uZWxzLnNlbmRIZWFkZXJzID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxuICBjaGFubmVscy5iZWZvcmVDb25uZWN0ID0geyBoYXNTdWJzY3JpYmVyczogZmFsc2UgfVxuICBjaGFubmVscy5jb25uZWN0RXJyb3IgPSB7IGhhc1N1YnNjcmliZXJzOiBmYWxzZSB9XG4gIGNoYW5uZWxzLmNvbm5lY3RlZCA9IHsgaGFzU3Vic2NyaWJlcnM6IGZhbHNlIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCcuLi90eXBlcy9jbGllbnQnKS5kZWZhdWx0fVxuICovXG5jbGFzcyBDbGllbnQgZXh0ZW5kcyBEaXNwYXRjaGVyQmFzZSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xVUkx9IHVybFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi4vdHlwZXMvY2xpZW50JykuQ2xpZW50Lk9wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yICh1cmwsIHtcbiAgICBpbnRlcmNlcHRvcnMsXG4gICAgbWF4SGVhZGVyU2l6ZSxcbiAgICBoZWFkZXJzVGltZW91dCxcbiAgICBzb2NrZXRUaW1lb3V0LFxuICAgIHJlcXVlc3RUaW1lb3V0LFxuICAgIGNvbm5lY3RUaW1lb3V0LFxuICAgIGJvZHlUaW1lb3V0LFxuICAgIGlkbGVUaW1lb3V0LFxuICAgIGtlZXBBbGl2ZSxcbiAgICBrZWVwQWxpdmVUaW1lb3V0LFxuICAgIG1heEtlZXBBbGl2ZVRpbWVvdXQsXG4gICAga2VlcEFsaXZlTWF4VGltZW91dCxcbiAgICBrZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkLFxuICAgIHNvY2tldFBhdGgsXG4gICAgcGlwZWxpbmluZyxcbiAgICB0bHMsXG4gICAgc3RyaWN0Q29udGVudExlbmd0aCxcbiAgICBtYXhDYWNoZWRTZXNzaW9ucyxcbiAgICBtYXhSZWRpcmVjdGlvbnMsXG4gICAgY29ubmVjdCxcbiAgICBtYXhSZXF1ZXN0c1BlckNsaWVudCxcbiAgICBsb2NhbEFkZHJlc3MsXG4gICAgbWF4UmVzcG9uc2VTaXplLFxuICAgIGF1dG9TZWxlY3RGYW1pbHksXG4gICAgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0LFxuICAgIC8vIGgyXG4gICAgYWxsb3dIMixcbiAgICBtYXhDb25jdXJyZW50U3RyZWFtc1xuICB9ID0ge30pIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAoa2VlcEFsaXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndW5zdXBwb3J0ZWQga2VlcEFsaXZlLCB1c2UgcGlwZWxpbmluZz0wIGluc3RlYWQnKVxuICAgIH1cblxuICAgIGlmIChzb2NrZXRUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndW5zdXBwb3J0ZWQgc29ja2V0VGltZW91dCwgdXNlIGhlYWRlcnNUaW1lb3V0ICYgYm9keVRpbWVvdXQgaW5zdGVhZCcpXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3RUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndW5zdXBwb3J0ZWQgcmVxdWVzdFRpbWVvdXQsIHVzZSBoZWFkZXJzVGltZW91dCAmIGJvZHlUaW1lb3V0IGluc3RlYWQnKVxuICAgIH1cblxuICAgIGlmIChpZGxlVGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3Vuc3VwcG9ydGVkIGlkbGVUaW1lb3V0LCB1c2Uga2VlcEFsaXZlVGltZW91dCBpbnN0ZWFkJylcbiAgICB9XG5cbiAgICBpZiAobWF4S2VlcEFsaXZlVGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3Vuc3VwcG9ydGVkIG1heEtlZXBBbGl2ZVRpbWVvdXQsIHVzZSBrZWVwQWxpdmVNYXhUaW1lb3V0IGluc3RlYWQnKVxuICAgIH1cblxuICAgIGlmIChtYXhIZWFkZXJTaXplICE9IG51bGwgJiYgIU51bWJlci5pc0Zpbml0ZShtYXhIZWFkZXJTaXplKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG1heEhlYWRlclNpemUnKVxuICAgIH1cblxuICAgIGlmIChzb2NrZXRQYXRoICE9IG51bGwgJiYgdHlwZW9mIHNvY2tldFBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgc29ja2V0UGF0aCcpXG4gICAgfVxuXG4gICAgaWYgKGNvbm5lY3RUaW1lb3V0ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNGaW5pdGUoY29ubmVjdFRpbWVvdXQpIHx8IGNvbm5lY3RUaW1lb3V0IDwgMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjb25uZWN0VGltZW91dCcpXG4gICAgfVxuXG4gICAgaWYgKGtlZXBBbGl2ZVRpbWVvdXQgIT0gbnVsbCAmJiAoIU51bWJlci5pc0Zpbml0ZShrZWVwQWxpdmVUaW1lb3V0KSB8fCBrZWVwQWxpdmVUaW1lb3V0IDw9IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQga2VlcEFsaXZlVGltZW91dCcpXG4gICAgfVxuXG4gICAgaWYgKGtlZXBBbGl2ZU1heFRpbWVvdXQgIT0gbnVsbCAmJiAoIU51bWJlci5pc0Zpbml0ZShrZWVwQWxpdmVNYXhUaW1lb3V0KSB8fCBrZWVwQWxpdmVNYXhUaW1lb3V0IDw9IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQga2VlcEFsaXZlTWF4VGltZW91dCcpXG4gICAgfVxuXG4gICAgaWYgKGtlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGQgIT0gbnVsbCAmJiAhTnVtYmVyLmlzRmluaXRlKGtlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQga2VlcEFsaXZlVGltZW91dFRocmVzaG9sZCcpXG4gICAgfVxuXG4gICAgaWYgKGhlYWRlcnNUaW1lb3V0ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGhlYWRlcnNUaW1lb3V0KSB8fCBoZWFkZXJzVGltZW91dCA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2hlYWRlcnNUaW1lb3V0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIHplcm8nKVxuICAgIH1cblxuICAgIGlmIChib2R5VGltZW91dCAhPSBudWxsICYmICghTnVtYmVyLmlzSW50ZWdlcihib2R5VGltZW91dCkgfHwgYm9keVRpbWVvdXQgPCAwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdib2R5VGltZW91dCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvJylcbiAgICB9XG5cbiAgICBpZiAoY29ubmVjdCAhPSBudWxsICYmIHR5cGVvZiBjb25uZWN0ICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBjb25uZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb25uZWN0IG11c3QgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QnKVxuICAgIH1cblxuICAgIGlmIChtYXhSZWRpcmVjdGlvbnMgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIobWF4UmVkaXJlY3Rpb25zKSB8fCBtYXhSZWRpcmVjdGlvbnMgPCAwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdtYXhSZWRpcmVjdGlvbnMgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgfVxuXG4gICAgaWYgKG1heFJlcXVlc3RzUGVyQ2xpZW50ICE9IG51bGwgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heFJlcXVlc3RzUGVyQ2xpZW50KSB8fCBtYXhSZXF1ZXN0c1BlckNsaWVudCA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21heFJlcXVlc3RzUGVyQ2xpZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgIH1cblxuICAgIGlmIChsb2NhbEFkZHJlc3MgIT0gbnVsbCAmJiAodHlwZW9mIGxvY2FsQWRkcmVzcyAhPT0gJ3N0cmluZycgfHwgbmV0LmlzSVAobG9jYWxBZGRyZXNzKSA9PT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbG9jYWxBZGRyZXNzIG11c3QgYmUgdmFsaWQgc3RyaW5nIElQIGFkZHJlc3MnKVxuICAgIH1cblxuICAgIGlmIChtYXhSZXNwb25zZVNpemUgIT0gbnVsbCAmJiAoIU51bWJlci5pc0ludGVnZXIobWF4UmVzcG9uc2VTaXplKSB8fCBtYXhSZXNwb25zZVNpemUgPCAtMSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWF4UmVzcG9uc2VTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGF1dG9TZWxlY3RGYW1pbHlBdHRlbXB0VGltZW91dCAhPSBudWxsICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIoYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0KSB8fCBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQgPCAtMSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgIH1cblxuICAgIC8vIGgyXG4gICAgaWYgKGFsbG93SDIgIT0gbnVsbCAmJiB0eXBlb2YgYWxsb3dIMiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2FsbG93SDIgbXVzdCBiZSBhIHZhbGlkIGJvb2xlYW4gdmFsdWUnKVxuICAgIH1cblxuICAgIGlmIChtYXhDb25jdXJyZW50U3RyZWFtcyAhPSBudWxsICYmICh0eXBlb2YgbWF4Q29uY3VycmVudFN0cmVhbXMgIT09ICdudW1iZXInIHx8IG1heENvbmN1cnJlbnRTdHJlYW1zIDwgMSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbWF4Q29uY3VycmVudFN0cmVhbXMgbXVzdCBiZSBhIHBvc3NpdGl2ZSBpbnRlZ2VyLCBncmVhdGVyIHRoYW4gMCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25uZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25uZWN0ID0gYnVpbGRDb25uZWN0b3Ioe1xuICAgICAgICAuLi50bHMsXG4gICAgICAgIG1heENhY2hlZFNlc3Npb25zLFxuICAgICAgICBhbGxvd0gyLFxuICAgICAgICBzb2NrZXRQYXRoLFxuICAgICAgICB0aW1lb3V0OiBjb25uZWN0VGltZW91dCxcbiAgICAgICAgLi4uKHV0aWwubm9kZUhhc0F1dG9TZWxlY3RGYW1pbHkgJiYgYXV0b1NlbGVjdEZhbWlseSA/IHsgYXV0b1NlbGVjdEZhbWlseSwgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0IH0gOiB1bmRlZmluZWQpLFxuICAgICAgICAuLi5jb25uZWN0XG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXNba0ludGVyY2VwdG9yc10gPSBpbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3JzLkNsaWVudCAmJiBBcnJheS5pc0FycmF5KGludGVyY2VwdG9ycy5DbGllbnQpXG4gICAgICA/IGludGVyY2VwdG9ycy5DbGllbnRcbiAgICAgIDogW2NyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IoeyBtYXhSZWRpcmVjdGlvbnMgfSldXG4gICAgdGhpc1trVXJsXSA9IHV0aWwucGFyc2VPcmlnaW4odXJsKVxuICAgIHRoaXNba0Nvbm5lY3Rvcl0gPSBjb25uZWN0XG4gICAgdGhpc1trU29ja2V0XSA9IG51bGxcbiAgICB0aGlzW2tQaXBlbGluaW5nXSA9IHBpcGVsaW5pbmcgIT0gbnVsbCA/IHBpcGVsaW5pbmcgOiAxXG4gICAgdGhpc1trTWF4SGVhZGVyc1NpemVdID0gbWF4SGVhZGVyU2l6ZSB8fCBodHRwLm1heEhlYWRlclNpemVcbiAgICB0aGlzW2tLZWVwQWxpdmVEZWZhdWx0VGltZW91dF0gPSBrZWVwQWxpdmVUaW1lb3V0ID09IG51bGwgPyA0ZTMgOiBrZWVwQWxpdmVUaW1lb3V0XG4gICAgdGhpc1trS2VlcEFsaXZlTWF4VGltZW91dF0gPSBrZWVwQWxpdmVNYXhUaW1lb3V0ID09IG51bGwgPyA2MDBlMyA6IGtlZXBBbGl2ZU1heFRpbWVvdXRcbiAgICB0aGlzW2tLZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkXSA9IGtlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGQgPT0gbnVsbCA/IDFlMyA6IGtlZXBBbGl2ZVRpbWVvdXRUaHJlc2hvbGRcbiAgICB0aGlzW2tLZWVwQWxpdmVUaW1lb3V0VmFsdWVdID0gdGhpc1trS2VlcEFsaXZlRGVmYXVsdFRpbWVvdXRdXG4gICAgdGhpc1trU2VydmVyTmFtZV0gPSBudWxsXG4gICAgdGhpc1trTG9jYWxBZGRyZXNzXSA9IGxvY2FsQWRkcmVzcyAhPSBudWxsID8gbG9jYWxBZGRyZXNzIDogbnVsbFxuICAgIHRoaXNba1Jlc3VtaW5nXSA9IDAgLy8gMCwgaWRsZSwgMSwgc2NoZWR1bGVkLCAyIHJlc3VtaW5nXG4gICAgdGhpc1trTmVlZERyYWluXSA9IDAgLy8gMCwgaWRsZSwgMSwgc2NoZWR1bGVkLCAyIHJlc3VtaW5nXG4gICAgdGhpc1trSG9zdEhlYWRlcl0gPSBgaG9zdDogJHt0aGlzW2tVcmxdLmhvc3RuYW1lfSR7dGhpc1trVXJsXS5wb3J0ID8gYDoke3RoaXNba1VybF0ucG9ydH1gIDogJyd9XFxyXFxuYFxuICAgIHRoaXNba0JvZHlUaW1lb3V0XSA9IGJvZHlUaW1lb3V0ICE9IG51bGwgPyBib2R5VGltZW91dCA6IDMwMGUzXG4gICAgdGhpc1trSGVhZGVyc1RpbWVvdXRdID0gaGVhZGVyc1RpbWVvdXQgIT0gbnVsbCA/IGhlYWRlcnNUaW1lb3V0IDogMzAwZTNcbiAgICB0aGlzW2tTdHJpY3RDb250ZW50TGVuZ3RoXSA9IHN0cmljdENvbnRlbnRMZW5ndGggPT0gbnVsbCA/IHRydWUgOiBzdHJpY3RDb250ZW50TGVuZ3RoXG4gICAgdGhpc1trTWF4UmVkaXJlY3Rpb25zXSA9IG1heFJlZGlyZWN0aW9uc1xuICAgIHRoaXNba01heFJlcXVlc3RzXSA9IG1heFJlcXVlc3RzUGVyQ2xpZW50XG4gICAgdGhpc1trQ2xvc2VkUmVzb2x2ZV0gPSBudWxsXG4gICAgdGhpc1trTWF4UmVzcG9uc2VTaXplXSA9IG1heFJlc3BvbnNlU2l6ZSA+IC0xID8gbWF4UmVzcG9uc2VTaXplIDogLTFcbiAgICB0aGlzW2tIVFRQQ29ublZlcnNpb25dID0gJ2gxJ1xuXG4gICAgLy8gSFRUUC8yXG4gICAgdGhpc1trSFRUUDJTZXNzaW9uXSA9IG51bGxcbiAgICB0aGlzW2tIVFRQMlNlc3Npb25TdGF0ZV0gPSAhYWxsb3dIMlxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgLy8gc3RyZWFtczogbnVsbCwgLy8gRml4ZWQgcXVldWUgb2Ygc3RyZWFtcyAtIEZvciBmdXR1cmUgc3VwcG9ydCBvZiBgcHVzaGBcbiAgICAgICAgICBvcGVuU3RyZWFtczogMCwgLy8gS2VlcCB0cmFjayBvZiB0aGVtIHRvIGRlY2lkZSB3ZXRoZXIgb3Igbm90IHVucmVmIHRoZSBzZXNzaW9uXG4gICAgICAgICAgbWF4Q29uY3VycmVudFN0cmVhbXM6IG1heENvbmN1cnJlbnRTdHJlYW1zICE9IG51bGwgPyBtYXhDb25jdXJyZW50U3RyZWFtcyA6IDEwMCAvLyBNYXggcGVlckNvbmN1cnJlbnRTdHJlYW1zIGZvciBhIE5vZGUgaDIgc2VydmVyXG4gICAgICAgIH1cbiAgICB0aGlzW2tIb3N0XSA9IGAke3RoaXNba1VybF0uaG9zdG5hbWV9JHt0aGlzW2tVcmxdLnBvcnQgPyBgOiR7dGhpc1trVXJsXS5wb3J0fWAgOiAnJ31gXG5cbiAgICAvLyBrUXVldWUgaXMgYnVpbHQgdXAgb2YgMyBzZWN0aW9ucyBzZXBhcmF0ZWQgYnlcbiAgICAvLyB0aGUga1J1bm5pbmdJZHggYW5kIGtQZW5kaW5nSWR4IGluZGljZXMuXG4gICAgLy8gfCAgIGNvbXBsZXRlICAgfCAgIHJ1bm5pbmcgICB8ICAgcGVuZGluZyAgIHxcbiAgICAvLyAgICAgICAgICAgICAgICBeIGtSdW5uaW5nSWR4IF4ga1BlbmRpbmdJZHggXiBrUXVldWUubGVuZ3RoXG4gICAgLy8ga1J1bm5pbmdJZHggcG9pbnRzIHRvIHRoZSBmaXJzdCBydW5uaW5nIGVsZW1lbnQuXG4gICAgLy8ga1BlbmRpbmdJZHggcG9pbnRzIHRvIHRoZSBmaXJzdCBwZW5kaW5nIGVsZW1lbnQuXG4gICAgLy8gVGhpcyBpbXBsZW1lbnRzIGEgZmFzdCBxdWV1ZSB3aXRoIGFuIGFtb3J0aXplZFxuICAgIC8vIHRpbWUgb2YgTygxKS5cblxuICAgIHRoaXNba1F1ZXVlXSA9IFtdXG4gICAgdGhpc1trUnVubmluZ0lkeF0gPSAwXG4gICAgdGhpc1trUGVuZGluZ0lkeF0gPSAwXG4gIH1cblxuICBnZXQgcGlwZWxpbmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1BpcGVsaW5pbmddXG4gIH1cblxuICBzZXQgcGlwZWxpbmluZyAodmFsdWUpIHtcbiAgICB0aGlzW2tQaXBlbGluaW5nXSA9IHZhbHVlXG4gICAgcmVzdW1lKHRoaXMsIHRydWUpXG4gIH1cblxuICBnZXQgW2tQZW5kaW5nXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1F1ZXVlXS5sZW5ndGggLSB0aGlzW2tQZW5kaW5nSWR4XVxuICB9XG5cbiAgZ2V0IFtrUnVubmluZ10gKCkge1xuICAgIHJldHVybiB0aGlzW2tQZW5kaW5nSWR4XSAtIHRoaXNba1J1bm5pbmdJZHhdXG4gIH1cblxuICBnZXQgW2tTaXplXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1F1ZXVlXS5sZW5ndGggLSB0aGlzW2tSdW5uaW5nSWR4XVxuICB9XG5cbiAgZ2V0IFtrQ29ubmVjdGVkXSAoKSB7XG4gICAgcmV0dXJuICEhdGhpc1trU29ja2V0XSAmJiAhdGhpc1trQ29ubmVjdGluZ10gJiYgIXRoaXNba1NvY2tldF0uZGVzdHJveWVkXG4gIH1cblxuICBnZXQgW2tCdXN5XSAoKSB7XG4gICAgY29uc3Qgc29ja2V0ID0gdGhpc1trU29ja2V0XVxuICAgIHJldHVybiAoXG4gICAgICAoc29ja2V0ICYmIChzb2NrZXRba1Jlc2V0XSB8fCBzb2NrZXRba1dyaXRpbmddIHx8IHNvY2tldFtrQmxvY2tpbmddKSkgfHxcbiAgICAgICh0aGlzW2tTaXplXSA+PSAodGhpc1trUGlwZWxpbmluZ10gfHwgMSkpIHx8XG4gICAgICB0aGlzW2tQZW5kaW5nXSA+IDBcbiAgICApXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmU6IG9ubHkgdXNlZCBmb3IgdGVzdCAqL1xuICBba0Nvbm5lY3RdIChjYikge1xuICAgIGNvbm5lY3QodGhpcylcbiAgICB0aGlzLm9uY2UoJ2Nvbm5lY3QnLCBjYilcbiAgfVxuXG4gIFtrRGlzcGF0Y2hdIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gb3B0cy5vcmlnaW4gfHwgdGhpc1trVXJsXS5vcmlnaW5cblxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzW2tIVFRQQ29ublZlcnNpb25dID09PSAnaDInXG4gICAgICA/IFJlcXVlc3Rba0hUVFAyQnVpbGRSZXF1ZXN0XShvcmlnaW4sIG9wdHMsIGhhbmRsZXIpXG4gICAgICA6IFJlcXVlc3Rba0hUVFAxQnVpbGRSZXF1ZXN0XShvcmlnaW4sIG9wdHMsIGhhbmRsZXIpXG5cbiAgICB0aGlzW2tRdWV1ZV0ucHVzaChyZXF1ZXN0KVxuICAgIGlmICh0aGlzW2tSZXN1bWluZ10pIHtcbiAgICAgIC8vIERvIG5vdGhpbmcuXG4gICAgfSBlbHNlIGlmICh1dGlsLmJvZHlMZW5ndGgocmVxdWVzdC5ib2R5KSA9PSBudWxsICYmIHV0aWwuaXNJdGVyYWJsZShyZXF1ZXN0LmJvZHkpKSB7XG4gICAgICAvLyBXYWl0IGEgdGljayBpbiBjYXNlIHN0cmVhbS9pdGVyYXRvciBpcyBlbmRlZCBpbiB0aGUgc2FtZSB0aWNrLlxuICAgICAgdGhpc1trUmVzdW1pbmddID0gMVxuICAgICAgcHJvY2Vzcy5uZXh0VGljayhyZXN1bWUsIHRoaXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VtZSh0aGlzLCB0cnVlKVxuICAgIH1cblxuICAgIGlmICh0aGlzW2tSZXN1bWluZ10gJiYgdGhpc1trTmVlZERyYWluXSAhPT0gMiAmJiB0aGlzW2tCdXN5XSkge1xuICAgICAgdGhpc1trTmVlZERyYWluXSA9IDJcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1trTmVlZERyYWluXSA8IDJcbiAgfVxuXG4gIGFzeW5jIFtrQ2xvc2VdICgpIHtcbiAgICAvLyBUT0RPOiBmb3IgSDIgd2UgbmVlZCB0byBncmFjZWZ1bGx5IGZsdXNoIHRoZSByZW1haW5pbmcgZW5xdWV1ZWRcbiAgICAvLyByZXF1ZXN0IGFuZCBjbG9zZSBlYWNoIHN0cmVhbS5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICghdGhpc1trU2l6ZV0pIHtcbiAgICAgICAgcmVzb2x2ZShudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1trQ2xvc2VkUmVzb2x2ZV0gPSByZXNvbHZlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIFtrRGVzdHJveV0gKGVycikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzW2tRdWV1ZV0uc3BsaWNlKHRoaXNba1BlbmRpbmdJZHhdKVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdHNbaV1cbiAgICAgICAgZXJyb3JSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIGVycilcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzW2tDbG9zZWRSZXNvbHZlXSkge1xuICAgICAgICAgIC8vIFRPRE8gKGZpeCk6IFNob3VsZCB3ZSBlcnJvciBoZXJlIHdpdGggQ2xpZW50RGVzdHJveWVkRXJyb3I/XG4gICAgICAgICAgdGhpc1trQ2xvc2VkUmVzb2x2ZV0oKVxuICAgICAgICAgIHRoaXNba0Nsb3NlZFJlc29sdmVdID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpc1trSFRUUDJTZXNzaW9uXSAhPSBudWxsKSB7XG4gICAgICAgIHV0aWwuZGVzdHJveSh0aGlzW2tIVFRQMlNlc3Npb25dLCBlcnIpXG4gICAgICAgIHRoaXNba0hUVFAyU2Vzc2lvbl0gPSBudWxsXG4gICAgICAgIHRoaXNba0hUVFAyU2Vzc2lvblN0YXRlXSA9IG51bGxcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzW2tTb2NrZXRdKSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKGNhbGxiYWNrKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXRpbC5kZXN0cm95KHRoaXNba1NvY2tldF0ub24oJ2Nsb3NlJywgY2FsbGJhY2spLCBlcnIpXG4gICAgICB9XG5cbiAgICAgIHJlc3VtZSh0aGlzKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gb25IdHRwMlNlc3Npb25FcnJvciAoZXJyKSB7XG4gIGFzc2VydChlcnIuY29kZSAhPT0gJ0VSUl9UTFNfQ0VSVF9BTFROQU1FX0lOVkFMSUQnKVxuXG4gIHRoaXNba1NvY2tldF1ba0Vycm9yXSA9IGVyclxuXG4gIG9uRXJyb3IodGhpc1trQ2xpZW50XSwgZXJyKVxufVxuXG5mdW5jdGlvbiBvbkh0dHAyRnJhbWVFcnJvciAodHlwZSwgY29kZSwgaWQpIHtcbiAgY29uc3QgZXJyID0gbmV3IEluZm9ybWF0aW9uYWxFcnJvcihgSFRUUC8yOiBcImZyYW1lRXJyb3JcIiByZWNlaXZlZCAtIHR5cGUgJHt0eXBlfSwgY29kZSAke2NvZGV9YClcblxuICBpZiAoaWQgPT09IDApIHtcbiAgICB0aGlzW2tTb2NrZXRdW2tFcnJvcl0gPSBlcnJcbiAgICBvbkVycm9yKHRoaXNba0NsaWVudF0sIGVycilcbiAgfVxufVxuXG5mdW5jdGlvbiBvbkh0dHAyU2Vzc2lvbkVuZCAoKSB7XG4gIHV0aWwuZGVzdHJveSh0aGlzLCBuZXcgU29ja2V0RXJyb3IoJ290aGVyIHNpZGUgY2xvc2VkJykpXG4gIHV0aWwuZGVzdHJveSh0aGlzW2tTb2NrZXRdLCBuZXcgU29ja2V0RXJyb3IoJ290aGVyIHNpZGUgY2xvc2VkJykpXG59XG5cbmZ1bmN0aW9uIG9uSFRUUDJHb0F3YXkgKGNvZGUpIHtcbiAgY29uc3QgY2xpZW50ID0gdGhpc1trQ2xpZW50XVxuICBjb25zdCBlcnIgPSBuZXcgSW5mb3JtYXRpb25hbEVycm9yKGBIVFRQLzI6IFwiR09BV0FZXCIgZnJhbWUgcmVjZWl2ZWQgd2l0aCBjb2RlICR7Y29kZX1gKVxuICBjbGllbnRba1NvY2tldF0gPSBudWxsXG4gIGNsaWVudFtrSFRUUDJTZXNzaW9uXSA9IG51bGxcblxuICBpZiAoY2xpZW50LmRlc3Ryb3llZCkge1xuICAgIGFzc2VydCh0aGlzW2tQZW5kaW5nXSA9PT0gMClcblxuICAgIC8vIEZhaWwgZW50aXJlIHF1ZXVlLlxuICAgIGNvbnN0IHJlcXVlc3RzID0gY2xpZW50W2tRdWV1ZV0uc3BsaWNlKGNsaWVudFtrUnVubmluZ0lkeF0pXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RzW2ldXG4gICAgICBlcnJvclJlcXVlc3QodGhpcywgcmVxdWVzdCwgZXJyKVxuICAgIH1cbiAgfSBlbHNlIGlmIChjbGllbnRba1J1bm5pbmddID4gMCkge1xuICAgIC8vIEZhaWwgaGVhZCBvZiBwaXBlbGluZS5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cbiAgICBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdKytdID0gbnVsbFxuXG4gICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuICB9XG5cbiAgY2xpZW50W2tQZW5kaW5nSWR4XSA9IGNsaWVudFtrUnVubmluZ0lkeF1cblxuICBhc3NlcnQoY2xpZW50W2tSdW5uaW5nXSA9PT0gMClcblxuICBjbGllbnQuZW1pdCgnZGlzY29ubmVjdCcsXG4gICAgY2xpZW50W2tVcmxdLFxuICAgIFtjbGllbnRdLFxuICAgIGVyclxuICApXG5cbiAgcmVzdW1lKGNsaWVudClcbn1cblxuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9sbGh0dHAvY29uc3RhbnRzJylcbmNvbnN0IGNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IgPSByZXF1aXJlKCcuL2ludGVyY2VwdG9yL3JlZGlyZWN0SW50ZXJjZXB0b3InKVxuY29uc3QgRU1QVFlfQlVGID0gQnVmZmVyLmFsbG9jKDApXG5cbmFzeW5jIGZ1bmN0aW9uIGxhenlsbGh0dHAgKCkge1xuICBjb25zdCBsbGh0dHBXYXNtRGF0YSA9IHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEID8gcmVxdWlyZSgnLi9sbGh0dHAvbGxodHRwLXdhc20uanMnKSA6IHVuZGVmaW5lZFxuXG4gIGxldCBtb2RcbiAgdHJ5IHtcbiAgICBtb2QgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKEJ1ZmZlci5mcm9tKHJlcXVpcmUoJy4vbGxodHRwL2xsaHR0cF9zaW1kLXdhc20uanMnKSwgJ2Jhc2U2NCcpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgIC8vIFdlIGNvdWxkIGNoZWNrIGlmIHRoZSBlcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBzaW1kIG9wdGlvbiBub3RcbiAgICAvLyBiZWluZyBlbmFibGVkLCBidXQgdGhlIG9jY3VycmluZyBvZiB0aGlzIG90aGVyIGVycm9yXG4gICAgLy8gKiBodHRwczovL2dpdGh1Yi5jb20vZW1zY3JpcHRlbi1jb3JlL2Vtc2NyaXB0ZW4vaXNzdWVzLzExNDk1XG4gICAgLy8gZ290IG1lIHRvIHJlbW92ZSB0aGF0IGNoZWNrIHRvIGF2b2lkIGJyZWFraW5nIE5vZGUgMTIuXG4gICAgbW9kID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZShCdWZmZXIuZnJvbShsbGh0dHBXYXNtRGF0YSB8fCByZXF1aXJlKCcuL2xsaHR0cC9sbGh0dHAtd2FzbS5qcycpLCAnYmFzZTY0JykpXG4gIH1cblxuICByZXR1cm4gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUobW9kLCB7XG4gICAgZW52OiB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cblxuICAgICAgd2FzbV9vbl91cmw6IChwLCBhdCwgbGVuKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiAwXG4gICAgICB9LFxuICAgICAgd2FzbV9vbl9zdGF0dXM6IChwLCBhdCwgbGVuKSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50UGFyc2VyLnB0ciwgcClcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBhdCAtIGN1cnJlbnRCdWZmZXJQdHIgKyBjdXJyZW50QnVmZmVyUmVmLmJ5dGVPZmZzZXRcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJzZXIub25TdGF0dXMobmV3IEZhc3RCdWZmZXIoY3VycmVudEJ1ZmZlclJlZi5idWZmZXIsIHN0YXJ0LCBsZW4pKSB8fCAwXG4gICAgICB9LFxuICAgICAgd2FzbV9vbl9tZXNzYWdlX2JlZ2luOiAocCkgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3VycmVudFBhcnNlci5wdHIsIHApXG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyc2VyLm9uTWVzc2FnZUJlZ2luKCkgfHwgMFxuICAgICAgfSxcbiAgICAgIHdhc21fb25faGVhZGVyX2ZpZWxkOiAocCwgYXQsIGxlbikgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3VycmVudFBhcnNlci5wdHIsIHApXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gYXQgLSBjdXJyZW50QnVmZmVyUHRyICsgY3VycmVudEJ1ZmZlclJlZi5ieXRlT2Zmc2V0XG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyc2VyLm9uSGVhZGVyRmllbGQobmV3IEZhc3RCdWZmZXIoY3VycmVudEJ1ZmZlclJlZi5idWZmZXIsIHN0YXJ0LCBsZW4pKSB8fCAwXG4gICAgICB9LFxuICAgICAgd2FzbV9vbl9oZWFkZXJfdmFsdWU6IChwLCBhdCwgbGVuKSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50UGFyc2VyLnB0ciwgcClcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBhdCAtIGN1cnJlbnRCdWZmZXJQdHIgKyBjdXJyZW50QnVmZmVyUmVmLmJ5dGVPZmZzZXRcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJzZXIub25IZWFkZXJWYWx1ZShuZXcgRmFzdEJ1ZmZlcihjdXJyZW50QnVmZmVyUmVmLmJ1ZmZlciwgc3RhcnQsIGxlbikpIHx8IDBcbiAgICAgIH0sXG4gICAgICB3YXNtX29uX2hlYWRlcnNfY29tcGxldGU6IChwLCBzdGF0dXNDb2RlLCB1cGdyYWRlLCBzaG91bGRLZWVwQWxpdmUpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN1cnJlbnRQYXJzZXIucHRyLCBwKVxuICAgICAgICByZXR1cm4gY3VycmVudFBhcnNlci5vbkhlYWRlcnNDb21wbGV0ZShzdGF0dXNDb2RlLCBCb29sZWFuKHVwZ3JhZGUpLCBCb29sZWFuKHNob3VsZEtlZXBBbGl2ZSkpIHx8IDBcbiAgICAgIH0sXG4gICAgICB3YXNtX29uX2JvZHk6IChwLCBhdCwgbGVuKSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50UGFyc2VyLnB0ciwgcClcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBhdCAtIGN1cnJlbnRCdWZmZXJQdHIgKyBjdXJyZW50QnVmZmVyUmVmLmJ5dGVPZmZzZXRcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJzZXIub25Cb2R5KG5ldyBGYXN0QnVmZmVyKGN1cnJlbnRCdWZmZXJSZWYuYnVmZmVyLCBzdGFydCwgbGVuKSkgfHwgMFxuICAgICAgfSxcbiAgICAgIHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZTogKHApID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN1cnJlbnRQYXJzZXIucHRyLCBwKVxuICAgICAgICByZXR1cm4gY3VycmVudFBhcnNlci5vbk1lc3NhZ2VDb21wbGV0ZSgpIHx8IDBcbiAgICAgIH1cblxuICAgICAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cbiAgICB9XG4gIH0pXG59XG5cbmxldCBsbGh0dHBJbnN0YW5jZSA9IG51bGxcbmxldCBsbGh0dHBQcm9taXNlID0gbGF6eWxsaHR0cCgpXG5sbGh0dHBQcm9taXNlLmNhdGNoKClcblxubGV0IGN1cnJlbnRQYXJzZXIgPSBudWxsXG5sZXQgY3VycmVudEJ1ZmZlclJlZiA9IG51bGxcbmxldCBjdXJyZW50QnVmZmVyU2l6ZSA9IDBcbmxldCBjdXJyZW50QnVmZmVyUHRyID0gbnVsbFxuXG5jb25zdCBUSU1FT1VUX0hFQURFUlMgPSAxXG5jb25zdCBUSU1FT1VUX0JPRFkgPSAyXG5jb25zdCBUSU1FT1VUX0lETEUgPSAzXG5cbmNsYXNzIFBhcnNlciB7XG4gIGNvbnN0cnVjdG9yIChjbGllbnQsIHNvY2tldCwgeyBleHBvcnRzIH0pIHtcbiAgICBhc3NlcnQoTnVtYmVyLmlzRmluaXRlKGNsaWVudFtrTWF4SGVhZGVyc1NpemVdKSAmJiBjbGllbnRba01heEhlYWRlcnNTaXplXSA+IDApXG5cbiAgICB0aGlzLmxsaHR0cCA9IGV4cG9ydHNcbiAgICB0aGlzLnB0ciA9IHRoaXMubGxodHRwLmxsaHR0cF9hbGxvYyhjb25zdGFudHMuVFlQRS5SRVNQT05TRSlcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudFxuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0XG4gICAgdGhpcy50aW1lb3V0ID0gbnVsbFxuICAgIHRoaXMudGltZW91dFZhbHVlID0gbnVsbFxuICAgIHRoaXMudGltZW91dFR5cGUgPSBudWxsXG4gICAgdGhpcy5zdGF0dXNDb2RlID0gbnVsbFxuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICcnXG4gICAgdGhpcy51cGdyYWRlID0gZmFsc2VcbiAgICB0aGlzLmhlYWRlcnMgPSBbXVxuICAgIHRoaXMuaGVhZGVyc1NpemUgPSAwXG4gICAgdGhpcy5oZWFkZXJzTWF4U2l6ZSA9IGNsaWVudFtrTWF4SGVhZGVyc1NpemVdXG4gICAgdGhpcy5zaG91bGRLZWVwQWxpdmUgPSBmYWxzZVxuICAgIHRoaXMucGF1c2VkID0gZmFsc2VcbiAgICB0aGlzLnJlc3VtZSA9IHRoaXMucmVzdW1lLmJpbmQodGhpcylcblxuICAgIHRoaXMuYnl0ZXNSZWFkID0gMFxuXG4gICAgdGhpcy5rZWVwQWxpdmUgPSAnJ1xuICAgIHRoaXMuY29udGVudExlbmd0aCA9ICcnXG4gICAgdGhpcy5jb25uZWN0aW9uID0gJydcbiAgICB0aGlzLm1heFJlc3BvbnNlU2l6ZSA9IGNsaWVudFtrTWF4UmVzcG9uc2VTaXplXVxuICB9XG5cbiAgc2V0VGltZW91dCAodmFsdWUsIHR5cGUpIHtcbiAgICB0aGlzLnRpbWVvdXRUeXBlID0gdHlwZVxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy50aW1lb3V0VmFsdWUpIHtcbiAgICAgIHRpbWVycy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVycy5zZXRUaW1lb3V0KG9uUGFyc2VyVGltZW91dCwgdmFsdWUsIHRoaXMpXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBvbmx5IGZvciBqZXN0XG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQudW5yZWYpIHtcbiAgICAgICAgICB0aGlzLnRpbWVvdXQudW5yZWYoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSBudWxsXG4gICAgICB9XG4gICAgICB0aGlzLnRpbWVvdXRWYWx1ZSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBvbmx5IGZvciBqZXN0XG4gICAgICBpZiAodGhpcy50aW1lb3V0LnJlZnJlc2gpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0LnJlZnJlc2goKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc3VtZSAoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0LmRlc3Ryb3llZCB8fCAhdGhpcy5wYXVzZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFzc2VydCh0aGlzLnB0ciAhPSBudWxsKVxuICAgIGFzc2VydChjdXJyZW50UGFyc2VyID09IG51bGwpXG5cbiAgICB0aGlzLmxsaHR0cC5sbGh0dHBfcmVzdW1lKHRoaXMucHRyKVxuXG4gICAgYXNzZXJ0KHRoaXMudGltZW91dFR5cGUgPT09IFRJTUVPVVRfQk9EWSlcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogb25seSBmb3IgamVzdFxuICAgICAgaWYgKHRoaXMudGltZW91dC5yZWZyZXNoKSB7XG4gICAgICAgIHRoaXMudGltZW91dC5yZWZyZXNoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlXG4gICAgdGhpcy5leGVjdXRlKHRoaXMuc29ja2V0LnJlYWQoKSB8fCBFTVBUWV9CVUYpIC8vIEZsdXNoIHBhcnNlci5cbiAgICB0aGlzLnJlYWRNb3JlKClcbiAgfVxuXG4gIHJlYWRNb3JlICgpIHtcbiAgICB3aGlsZSAoIXRoaXMucGF1c2VkICYmIHRoaXMucHRyKSB7XG4gICAgICBjb25zdCBjaHVuayA9IHRoaXMuc29ja2V0LnJlYWQoKVxuICAgICAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICB0aGlzLmV4ZWN1dGUoY2h1bmspXG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZSAoZGF0YSkge1xuICAgIGFzc2VydCh0aGlzLnB0ciAhPSBudWxsKVxuICAgIGFzc2VydChjdXJyZW50UGFyc2VyID09IG51bGwpXG4gICAgYXNzZXJ0KCF0aGlzLnBhdXNlZClcblxuICAgIGNvbnN0IHsgc29ja2V0LCBsbGh0dHAgfSA9IHRoaXNcblxuICAgIGlmIChkYXRhLmxlbmd0aCA+IGN1cnJlbnRCdWZmZXJTaXplKSB7XG4gICAgICBpZiAoY3VycmVudEJ1ZmZlclB0cikge1xuICAgICAgICBsbGh0dHAuZnJlZShjdXJyZW50QnVmZmVyUHRyKVxuICAgICAgfVxuICAgICAgY3VycmVudEJ1ZmZlclNpemUgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyA0MDk2KSAqIDQwOTZcbiAgICAgIGN1cnJlbnRCdWZmZXJQdHIgPSBsbGh0dHAubWFsbG9jKGN1cnJlbnRCdWZmZXJTaXplKVxuICAgIH1cblxuICAgIG5ldyBVaW50OEFycmF5KGxsaHR0cC5tZW1vcnkuYnVmZmVyLCBjdXJyZW50QnVmZmVyUHRyLCBjdXJyZW50QnVmZmVyU2l6ZSkuc2V0KGRhdGEpXG5cbiAgICAvLyBDYWxsIGBleGVjdXRlYCBvbiB0aGUgd2FzbSBwYXJzZXIuXG4gICAgLy8gV2UgcGFzcyB0aGUgYGxsaHR0cF9wYXJzZXJgIHBvaW50ZXIgYWRkcmVzcywgdGhlIHBvaW50ZXIgYWRkcmVzcyBvZiBidWZmZXIgdmlldyBkYXRhLFxuICAgIC8vIGFuZCBmaW5hbGx5IHRoZSBsZW5ndGggb2YgYnl0ZXMgdG8gcGFyc2UuXG4gICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlcnJvciBjb2RlIG9yIGBjb25zdGFudHMuRVJST1IuT0tgLlxuICAgIHRyeSB7XG4gICAgICBsZXQgcmV0XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGN1cnJlbnRCdWZmZXJSZWYgPSBkYXRhXG4gICAgICAgIGN1cnJlbnRQYXJzZXIgPSB0aGlzXG4gICAgICAgIHJldCA9IGxsaHR0cC5sbGh0dHBfZXhlY3V0ZSh0aGlzLnB0ciwgY3VycmVudEJ1ZmZlclB0ciwgZGF0YS5sZW5ndGgpXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhdGNoICovXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byBtYWtlIGEgdGVzdCBjYXNlIGZvciAqL1xuICAgICAgICB0aHJvdyBlcnJcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGN1cnJlbnRQYXJzZXIgPSBudWxsXG4gICAgICAgIGN1cnJlbnRCdWZmZXJSZWYgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9mZnNldCA9IGxsaHR0cC5sbGh0dHBfZ2V0X2Vycm9yX3Bvcyh0aGlzLnB0cikgLSBjdXJyZW50QnVmZmVyUHRyXG5cbiAgICAgIGlmIChyZXQgPT09IGNvbnN0YW50cy5FUlJPUi5QQVVTRURfVVBHUkFERSkge1xuICAgICAgICB0aGlzLm9uVXBncmFkZShkYXRhLnNsaWNlKG9mZnNldCkpXG4gICAgICB9IGVsc2UgaWYgKHJldCA9PT0gY29uc3RhbnRzLkVSUk9SLlBBVVNFRCkge1xuICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWVcbiAgICAgICAgc29ja2V0LnVuc2hpZnQoZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgfSBlbHNlIGlmIChyZXQgIT09IGNvbnN0YW50cy5FUlJPUi5PSykge1xuICAgICAgICBjb25zdCBwdHIgPSBsbGh0dHAubGxodHRwX2dldF9lcnJvcl9yZWFzb24odGhpcy5wdHIpXG4gICAgICAgIGxldCBtZXNzYWdlID0gJydcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IGRpZmZpY3VsdCB0byBtYWtlIGEgdGVzdCBjYXNlIGZvciAqL1xuICAgICAgICBpZiAocHRyKSB7XG4gICAgICAgICAgY29uc3QgbGVuID0gbmV3IFVpbnQ4QXJyYXkobGxodHRwLm1lbW9yeS5idWZmZXIsIHB0cikuaW5kZXhPZigwKVxuICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1Jlc3BvbnNlIGRvZXMgbm90IG1hdGNoIHRoZSBIVFRQLzEuMSBwcm90b2NvbCAoJyArXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShsbGh0dHAubWVtb3J5LmJ1ZmZlciwgcHRyLCBsZW4pLnRvU3RyaW5nKCkgK1xuICAgICAgICAgICAgJyknXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEhUVFBQYXJzZXJFcnJvcihtZXNzYWdlLCBjb25zdGFudHMuRVJST1JbcmV0XSwgZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgZXJyKVxuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3kgKCkge1xuICAgIGFzc2VydCh0aGlzLnB0ciAhPSBudWxsKVxuICAgIGFzc2VydChjdXJyZW50UGFyc2VyID09IG51bGwpXG5cbiAgICB0aGlzLmxsaHR0cC5sbGh0dHBfZnJlZSh0aGlzLnB0cilcbiAgICB0aGlzLnB0ciA9IG51bGxcblxuICAgIHRpbWVycy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KVxuICAgIHRoaXMudGltZW91dCA9IG51bGxcbiAgICB0aGlzLnRpbWVvdXRWYWx1ZSA9IG51bGxcbiAgICB0aGlzLnRpbWVvdXRUeXBlID0gbnVsbFxuXG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZVxuICB9XG5cbiAgb25TdGF0dXMgKGJ1Zikge1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IGJ1Zi50b1N0cmluZygpXG4gIH1cblxuICBvbk1lc3NhZ2VCZWdpbiAoKSB7XG4gICAgY29uc3QgeyBzb2NrZXQsIGNsaWVudCB9ID0gdGhpc1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byBtYWtlIGEgdGVzdCBjYXNlIGZvciAqL1xuICAgIGlmIChzb2NrZXQuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgfVxuXG4gIG9uSGVhZGVyRmllbGQgKGJ1Zikge1xuICAgIGNvbnN0IGxlbiA9IHRoaXMuaGVhZGVycy5sZW5ndGhcblxuICAgIGlmICgobGVuICYgMSkgPT09IDApIHtcbiAgICAgIHRoaXMuaGVhZGVycy5wdXNoKGJ1ZilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkZXJzW2xlbiAtIDFdID0gQnVmZmVyLmNvbmNhdChbdGhpcy5oZWFkZXJzW2xlbiAtIDFdLCBidWZdKVxuICAgIH1cblxuICAgIHRoaXMudHJhY2tIZWFkZXIoYnVmLmxlbmd0aClcbiAgfVxuXG4gIG9uSGVhZGVyVmFsdWUgKGJ1Zikge1xuICAgIGxldCBsZW4gPSB0aGlzLmhlYWRlcnMubGVuZ3RoXG5cbiAgICBpZiAoKGxlbiAmIDEpID09PSAxKSB7XG4gICAgICB0aGlzLmhlYWRlcnMucHVzaChidWYpXG4gICAgICBsZW4gKz0gMVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWRlcnNbbGVuIC0gMV0gPSBCdWZmZXIuY29uY2F0KFt0aGlzLmhlYWRlcnNbbGVuIC0gMV0sIGJ1Zl0pXG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gdGhpcy5oZWFkZXJzW2xlbiAtIDJdXG4gICAgaWYgKGtleS5sZW5ndGggPT09IDEwICYmIGtleS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdrZWVwLWFsaXZlJykge1xuICAgICAgdGhpcy5rZWVwQWxpdmUgKz0gYnVmLnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPT09IDEwICYmIGtleS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25uZWN0aW9uJykge1xuICAgICAgdGhpcy5jb25uZWN0aW9uICs9IGJ1Zi50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChrZXkubGVuZ3RoID09PSAxNCAmJiBrZXkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC1sZW5ndGgnKSB7XG4gICAgICB0aGlzLmNvbnRlbnRMZW5ndGggKz0gYnVmLnRvU3RyaW5nKClcbiAgICB9XG5cbiAgICB0aGlzLnRyYWNrSGVhZGVyKGJ1Zi5sZW5ndGgpXG4gIH1cblxuICB0cmFja0hlYWRlciAobGVuKSB7XG4gICAgdGhpcy5oZWFkZXJzU2l6ZSArPSBsZW5cbiAgICBpZiAodGhpcy5oZWFkZXJzU2l6ZSA+PSB0aGlzLmhlYWRlcnNNYXhTaXplKSB7XG4gICAgICB1dGlsLmRlc3Ryb3kodGhpcy5zb2NrZXQsIG5ldyBIZWFkZXJzT3ZlcmZsb3dFcnJvcigpKVxuICAgIH1cbiAgfVxuXG4gIG9uVXBncmFkZSAoaGVhZCkge1xuICAgIGNvbnN0IHsgdXBncmFkZSwgY2xpZW50LCBzb2NrZXQsIGhlYWRlcnMsIHN0YXR1c0NvZGUgfSA9IHRoaXNcblxuICAgIGFzc2VydCh1cGdyYWRlKVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF1dXG4gICAgYXNzZXJ0KHJlcXVlc3QpXG5cbiAgICBhc3NlcnQoIXNvY2tldC5kZXN0cm95ZWQpXG4gICAgYXNzZXJ0KHNvY2tldCA9PT0gY2xpZW50W2tTb2NrZXRdKVxuICAgIGFzc2VydCghdGhpcy5wYXVzZWQpXG4gICAgYXNzZXJ0KHJlcXVlc3QudXBncmFkZSB8fCByZXF1ZXN0Lm1ldGhvZCA9PT0gJ0NPTk5FQ1QnKVxuXG4gICAgdGhpcy5zdGF0dXNDb2RlID0gbnVsbFxuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICcnXG4gICAgdGhpcy5zaG91bGRLZWVwQWxpdmUgPSBudWxsXG5cbiAgICBhc3NlcnQodGhpcy5oZWFkZXJzLmxlbmd0aCAlIDIgPT09IDApXG4gICAgdGhpcy5oZWFkZXJzID0gW11cbiAgICB0aGlzLmhlYWRlcnNTaXplID0gMFxuXG4gICAgc29ja2V0LnVuc2hpZnQoaGVhZClcblxuICAgIHNvY2tldFtrUGFyc2VyXS5kZXN0cm95KClcbiAgICBzb2NrZXRba1BhcnNlcl0gPSBudWxsXG5cbiAgICBzb2NrZXRba0NsaWVudF0gPSBudWxsXG4gICAgc29ja2V0W2tFcnJvcl0gPSBudWxsXG4gICAgc29ja2V0XG4gICAgICAucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25Tb2NrZXRFcnJvcilcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBvblNvY2tldFJlYWRhYmxlKVxuICAgICAgLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvblNvY2tldEVuZClcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvblNvY2tldENsb3NlKVxuXG4gICAgY2xpZW50W2tTb2NrZXRdID0gbnVsbFxuICAgIGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF0rK10gPSBudWxsXG4gICAgY2xpZW50LmVtaXQoJ2Rpc2Nvbm5lY3QnLCBjbGllbnRba1VybF0sIFtjbGllbnRdLCBuZXcgSW5mb3JtYXRpb25hbEVycm9yKCd1cGdyYWRlJykpXG5cbiAgICB0cnkge1xuICAgICAgcmVxdWVzdC5vblVwZ3JhZGUoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgZXJyKVxuICAgIH1cblxuICAgIHJlc3VtZShjbGllbnQpXG4gIH1cblxuICBvbkhlYWRlcnNDb21wbGV0ZSAoc3RhdHVzQ29kZSwgdXBncmFkZSwgc2hvdWxkS2VlcEFsaXZlKSB7XG4gICAgY29uc3QgeyBjbGllbnQsIHNvY2tldCwgaGVhZGVycywgc3RhdHVzVGV4dCB9ID0gdGhpc1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byBtYWtlIGEgdGVzdCBjYXNlIGZvciAqL1xuICAgIGlmIChzb2NrZXQuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gbWFrZSBhIHRlc3QgY2FzZSBmb3IgKi9cbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGFzc2VydCghdGhpcy51cGdyYWRlKVxuICAgIGFzc2VydCh0aGlzLnN0YXR1c0NvZGUgPCAyMDApXG5cbiAgICBpZiAoc3RhdHVzQ29kZSA9PT0gMTAwKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgU29ja2V0RXJyb3IoJ2JhZCByZXNwb25zZScsIHV0aWwuZ2V0U29ja2V0SW5mbyhzb2NrZXQpKSlcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIC8qIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHNlcnZlciBpcyBtaXNiZWhhdmluZyAqL1xuICAgIGlmICh1cGdyYWRlICYmICFyZXF1ZXN0LnVwZ3JhZGUpIHtcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBTb2NrZXRFcnJvcignYmFkIHVwZ3JhZGUnLCB1dGlsLmdldFNvY2tldEluZm8oc29ja2V0KSkpXG4gICAgICByZXR1cm4gLTFcbiAgICB9XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcy50aW1lb3V0VHlwZSwgVElNRU9VVF9IRUFERVJTKVxuXG4gICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZVxuICAgIHRoaXMuc2hvdWxkS2VlcEFsaXZlID0gKFxuICAgICAgc2hvdWxkS2VlcEFsaXZlIHx8XG4gICAgICAvLyBPdmVycmlkZSBsbGh0dHAgdmFsdWUgd2hpY2ggZG9lcyBub3QgYWxsb3cga2VlcEFsaXZlIGZvciBIRUFELlxuICAgICAgKHJlcXVlc3QubWV0aG9kID09PSAnSEVBRCcgJiYgIXNvY2tldFtrUmVzZXRdICYmIHRoaXMuY29ubmVjdGlvbi50b0xvd2VyQ2FzZSgpID09PSAna2VlcC1hbGl2ZScpXG4gICAgKVxuXG4gICAgaWYgKHRoaXMuc3RhdHVzQ29kZSA+PSAyMDApIHtcbiAgICAgIGNvbnN0IGJvZHlUaW1lb3V0ID0gcmVxdWVzdC5ib2R5VGltZW91dCAhPSBudWxsXG4gICAgICAgID8gcmVxdWVzdC5ib2R5VGltZW91dFxuICAgICAgICA6IGNsaWVudFtrQm9keVRpbWVvdXRdXG4gICAgICB0aGlzLnNldFRpbWVvdXQoYm9keVRpbWVvdXQsIFRJTUVPVVRfQk9EWSlcbiAgICB9IGVsc2UgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2U6IG9ubHkgZm9yIGplc3RcbiAgICAgIGlmICh0aGlzLnRpbWVvdXQucmVmcmVzaCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQucmVmcmVzaCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3QubWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICAgIGFzc2VydChjbGllbnRba1J1bm5pbmddID09PSAxKVxuICAgICAgdGhpcy51cGdyYWRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIDJcbiAgICB9XG5cbiAgICBpZiAodXBncmFkZSkge1xuICAgICAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPT09IDEpXG4gICAgICB0aGlzLnVwZ3JhZGUgPSB0cnVlXG4gICAgICByZXR1cm4gMlxuICAgIH1cblxuICAgIGFzc2VydCh0aGlzLmhlYWRlcnMubGVuZ3RoICUgMiA9PT0gMClcbiAgICB0aGlzLmhlYWRlcnMgPSBbXVxuICAgIHRoaXMuaGVhZGVyc1NpemUgPSAwXG5cbiAgICBpZiAodGhpcy5zaG91bGRLZWVwQWxpdmUgJiYgY2xpZW50W2tQaXBlbGluaW5nXSkge1xuICAgICAgY29uc3Qga2VlcEFsaXZlVGltZW91dCA9IHRoaXMua2VlcEFsaXZlID8gdXRpbC5wYXJzZUtlZXBBbGl2ZVRpbWVvdXQodGhpcy5rZWVwQWxpdmUpIDogbnVsbFxuXG4gICAgICBpZiAoa2VlcEFsaXZlVGltZW91dCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBNYXRoLm1pbihcbiAgICAgICAgICBrZWVwQWxpdmVUaW1lb3V0IC0gY2xpZW50W2tLZWVwQWxpdmVUaW1lb3V0VGhyZXNob2xkXSxcbiAgICAgICAgICBjbGllbnRba0tlZXBBbGl2ZU1heFRpbWVvdXRdXG4gICAgICAgIClcbiAgICAgICAgaWYgKHRpbWVvdXQgPD0gMCkge1xuICAgICAgICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsaWVudFtrS2VlcEFsaXZlVGltZW91dFZhbHVlXSA9IHRpbWVvdXRcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xpZW50W2tLZWVwQWxpdmVUaW1lb3V0VmFsdWVdID0gY2xpZW50W2tLZWVwQWxpdmVEZWZhdWx0VGltZW91dF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RvcCBtb3JlIHJlcXVlc3RzIGZyb20gYmVpbmcgZGlzcGF0Y2hlZC5cbiAgICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IHBhdXNlID0gcmVxdWVzdC5vbkhlYWRlcnMoc3RhdHVzQ29kZSwgaGVhZGVycywgdGhpcy5yZXN1bWUsIHN0YXR1c1RleHQpID09PSBmYWxzZVxuXG4gICAgaWYgKHJlcXVlc3QuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3QubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICAgIHJldHVybiAxXG4gICAgfVxuXG4gICAgaWYgKHN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgIHJldHVybiAxXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldFtrQmxvY2tpbmddKSB7XG4gICAgICBzb2NrZXRba0Jsb2NraW5nXSA9IGZhbHNlXG4gICAgICByZXN1bWUoY2xpZW50KVxuICAgIH1cblxuICAgIHJldHVybiBwYXVzZSA/IGNvbnN0YW50cy5FUlJPUi5QQVVTRUQgOiAwXG4gIH1cblxuICBvbkJvZHkgKGJ1Zikge1xuICAgIGNvbnN0IHsgY2xpZW50LCBzb2NrZXQsIHN0YXR1c0NvZGUsIG1heFJlc3BvbnNlU2l6ZSB9ID0gdGhpc1xuXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuICAgIGFzc2VydChyZXF1ZXN0KVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRoaXMudGltZW91dFR5cGUsIFRJTUVPVVRfQk9EWSlcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogb25seSBmb3IgamVzdFxuICAgICAgaWYgKHRoaXMudGltZW91dC5yZWZyZXNoKSB7XG4gICAgICAgIHRoaXMudGltZW91dC5yZWZyZXNoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnQoc3RhdHVzQ29kZSA+PSAyMDApXG5cbiAgICBpZiAobWF4UmVzcG9uc2VTaXplID4gLTEgJiYgdGhpcy5ieXRlc1JlYWQgKyBidWYubGVuZ3RoID4gbWF4UmVzcG9uc2VTaXplKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgUmVzcG9uc2VFeGNlZWRlZE1heFNpemVFcnJvcigpKVxuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuXG4gICAgdGhpcy5ieXRlc1JlYWQgKz0gYnVmLmxlbmd0aFxuXG4gICAgaWYgKHJlcXVlc3Qub25EYXRhKGJ1ZikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gY29uc3RhbnRzLkVSUk9SLlBBVVNFRFxuICAgIH1cbiAgfVxuXG4gIG9uTWVzc2FnZUNvbXBsZXRlICgpIHtcbiAgICBjb25zdCB7IGNsaWVudCwgc29ja2V0LCBzdGF0dXNDb2RlLCB1cGdyYWRlLCBoZWFkZXJzLCBjb250ZW50TGVuZ3RoLCBieXRlc1JlYWQsIHNob3VsZEtlZXBBbGl2ZSB9ID0gdGhpc1xuXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQgJiYgKCFzdGF0dXNDb2RlIHx8IHNob3VsZEtlZXBBbGl2ZSkpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGlmICh1cGdyYWRlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XV1cbiAgICBhc3NlcnQocmVxdWVzdClcblxuICAgIGFzc2VydChzdGF0dXNDb2RlID49IDEwMClcblxuICAgIHRoaXMuc3RhdHVzQ29kZSA9IG51bGxcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnJ1xuICAgIHRoaXMuYnl0ZXNSZWFkID0gMFxuICAgIHRoaXMuY29udGVudExlbmd0aCA9ICcnXG4gICAgdGhpcy5rZWVwQWxpdmUgPSAnJ1xuICAgIHRoaXMuY29ubmVjdGlvbiA9ICcnXG5cbiAgICBhc3NlcnQodGhpcy5oZWFkZXJzLmxlbmd0aCAlIDIgPT09IDApXG4gICAgdGhpcy5oZWFkZXJzID0gW11cbiAgICB0aGlzLmhlYWRlcnNTaXplID0gMFxuXG4gICAgaWYgKHN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgYmUgaGFuZGxlZCBieSBsbGh0dHA/ICovXG4gICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgJiYgY29udGVudExlbmd0aCAmJiBieXRlc1JlYWQgIT09IHBhcnNlSW50KGNvbnRlbnRMZW5ndGgsIDEwKSkge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IFJlc3BvbnNlQ29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIHJlcXVlc3Qub25Db21wbGV0ZShoZWFkZXJzKVxuXG4gICAgY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XSsrXSA9IG51bGxcblxuICAgIGlmIChzb2NrZXRba1dyaXRpbmddKSB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2xpZW50W2tSdW5uaW5nXSwgMClcbiAgICAgIC8vIFJlc3BvbnNlIGNvbXBsZXRlZCBiZWZvcmUgcmVxdWVzdC5cbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ3Jlc2V0JykpXG4gICAgICByZXR1cm4gY29uc3RhbnRzLkVSUk9SLlBBVVNFRFxuICAgIH0gZWxzZSBpZiAoIXNob3VsZEtlZXBBbGl2ZSkge1xuICAgICAgdXRpbC5kZXN0cm95KHNvY2tldCwgbmV3IEluZm9ybWF0aW9uYWxFcnJvcigncmVzZXQnKSlcbiAgICAgIHJldHVybiBjb25zdGFudHMuRVJST1IuUEFVU0VEXG4gICAgfSBlbHNlIGlmIChzb2NrZXRba1Jlc2V0XSAmJiBjbGllbnRba1J1bm5pbmddID09PSAwKSB7XG4gICAgICAvLyBEZXN0cm95IHNvY2tldCBvbmNlIGFsbCByZXF1ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgIC8vIFRoZSByZXF1ZXN0IGF0IHRoZSB0YWlsIG9mIHRoZSBwaXBlbGluZSBpcyB0aGUgb25lXG4gICAgICAvLyB0aGF0IHJlcXVlc3RlZCByZXNldCBhbmQgbm8gZnVydGhlciByZXF1ZXN0cyBzaG91bGRcbiAgICAgIC8vIGhhdmUgYmVlbiBxdWV1ZWQgc2luY2UgdGhlbi5cbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ3Jlc2V0JykpXG4gICAgICByZXR1cm4gY29uc3RhbnRzLkVSUk9SLlBBVVNFRFxuICAgIH0gZWxzZSBpZiAoY2xpZW50W2tQaXBlbGluaW5nXSA9PT0gMSkge1xuICAgICAgLy8gV2UgbXVzdCB3YWl0IGEgZnVsbCBldmVudCBsb29wIGN5Y2xlIHRvIHJldXNlIHRoaXMgc29ja2V0IHRvIG1ha2Ugc3VyZVxuICAgICAgLy8gdGhhdCBub24tc3BlYyBjb21wbGlhbnQgc2VydmVycyBhcmUgbm90IGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gZXZlbiBpZiB0aGV5XG4gICAgICAvLyBzYWlkIHRoZXkgd29uJ3QuXG4gICAgICBzZXRJbW1lZGlhdGUocmVzdW1lLCBjbGllbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VtZShjbGllbnQpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uUGFyc2VyVGltZW91dCAocGFyc2VyKSB7XG4gIGNvbnN0IHsgc29ja2V0LCB0aW1lb3V0VHlwZSwgY2xpZW50IH0gPSBwYXJzZXJcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGltZW91dFR5cGUgPT09IFRJTUVPVVRfSEVBREVSUykge1xuICAgIGlmICghc29ja2V0W2tXcml0aW5nXSB8fCBzb2NrZXQud3JpdGFibGVOZWVkRHJhaW4gfHwgY2xpZW50W2tSdW5uaW5nXSA+IDEpIHtcbiAgICAgIGFzc2VydCghcGFyc2VyLnBhdXNlZCwgJ2Nhbm5vdCBiZSBwYXVzZWQgd2hpbGUgd2FpdGluZyBmb3IgaGVhZGVycycpXG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgSGVhZGVyc1RpbWVvdXRFcnJvcigpKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0aW1lb3V0VHlwZSA9PT0gVElNRU9VVF9CT0RZKSB7XG4gICAgaWYgKCFwYXJzZXIucGF1c2VkKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgQm9keVRpbWVvdXRFcnJvcigpKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0aW1lb3V0VHlwZSA9PT0gVElNRU9VVF9JRExFKSB7XG4gICAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPT09IDAgJiYgY2xpZW50W2tLZWVwQWxpdmVUaW1lb3V0VmFsdWVdKVxuICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ3NvY2tldCBpZGxlIHRpbWVvdXQnKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvblNvY2tldFJlYWRhYmxlICgpIHtcbiAgY29uc3QgeyBba1BhcnNlcl06IHBhcnNlciB9ID0gdGhpc1xuICBpZiAocGFyc2VyKSB7XG4gICAgcGFyc2VyLnJlYWRNb3JlKClcbiAgfVxufVxuXG5mdW5jdGlvbiBvblNvY2tldEVycm9yIChlcnIpIHtcbiAgY29uc3QgeyBba0NsaWVudF06IGNsaWVudCwgW2tQYXJzZXJdOiBwYXJzZXIgfSA9IHRoaXNcblxuICBhc3NlcnQoZXJyLmNvZGUgIT09ICdFUlJfVExTX0NFUlRfQUxUTkFNRV9JTlZBTElEJylcblxuICBpZiAoY2xpZW50W2tIVFRQQ29ublZlcnNpb25dICE9PSAnaDInKSB7XG4gICAgLy8gT24gTWFjIE9TLCB3ZSBnZXQgYW4gRUNPTk5SRVNFVCBldmVuIGlmIHRoZXJlIGlzIGEgZnVsbCBib2R5IHRvIGJlIGZvcndhcmRlZFxuICAgIC8vIHRvIHRoZSB1c2VyLlxuICAgIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnICYmIHBhcnNlci5zdGF0dXNDb2RlICYmICFwYXJzZXIuc2hvdWxkS2VlcEFsaXZlKSB7XG4gICAgICAvLyBXZSB0cmVhdCBhbGwgaW5jb21pbmcgZGF0YSBzbyBmb3IgYXMgYSB2YWxpZCByZXNwb25zZS5cbiAgICAgIHBhcnNlci5vbk1lc3NhZ2VDb21wbGV0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICB0aGlzW2tFcnJvcl0gPSBlcnJcblxuICBvbkVycm9yKHRoaXNba0NsaWVudF0sIGVycilcbn1cblxuZnVuY3Rpb24gb25FcnJvciAoY2xpZW50LCBlcnIpIHtcbiAgaWYgKFxuICAgIGNsaWVudFtrUnVubmluZ10gPT09IDAgJiZcbiAgICBlcnIuY29kZSAhPT0gJ1VORF9FUlJfSU5GTycgJiZcbiAgICBlcnIuY29kZSAhPT0gJ1VORF9FUlJfU09DS0VUJ1xuICApIHtcbiAgICAvLyBFcnJvciBpcyBub3QgY2F1c2VkIGJ5IHJ1bm5pbmcgcmVxdWVzdCBhbmQgbm90IGEgcmVjb3ZlcmFibGVcbiAgICAvLyBzb2NrZXQgZXJyb3IuXG5cbiAgICBhc3NlcnQoY2xpZW50W2tQZW5kaW5nSWR4XSA9PT0gY2xpZW50W2tSdW5uaW5nSWR4XSlcblxuICAgIGNvbnN0IHJlcXVlc3RzID0gY2xpZW50W2tRdWV1ZV0uc3BsaWNlKGNsaWVudFtrUnVubmluZ0lkeF0pXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RzW2ldXG4gICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG4gICAgfVxuICAgIGFzc2VydChjbGllbnRba1NpemVdID09PSAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9uU29ja2V0RW5kICgpIHtcbiAgY29uc3QgeyBba1BhcnNlcl06IHBhcnNlciwgW2tDbGllbnRdOiBjbGllbnQgfSA9IHRoaXNcblxuICBpZiAoY2xpZW50W2tIVFRQQ29ublZlcnNpb25dICE9PSAnaDInKSB7XG4gICAgaWYgKHBhcnNlci5zdGF0dXNDb2RlICYmICFwYXJzZXIuc2hvdWxkS2VlcEFsaXZlKSB7XG4gICAgICAvLyBXZSB0cmVhdCBhbGwgaW5jb21pbmcgZGF0YSBzbyBmYXIgYXMgYSB2YWxpZCByZXNwb25zZS5cbiAgICAgIHBhcnNlci5vbk1lc3NhZ2VDb21wbGV0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICB1dGlsLmRlc3Ryb3kodGhpcywgbmV3IFNvY2tldEVycm9yKCdvdGhlciBzaWRlIGNsb3NlZCcsIHV0aWwuZ2V0U29ja2V0SW5mbyh0aGlzKSkpXG59XG5cbmZ1bmN0aW9uIG9uU29ja2V0Q2xvc2UgKCkge1xuICBjb25zdCB7IFtrQ2xpZW50XTogY2xpZW50LCBba1BhcnNlcl06IHBhcnNlciB9ID0gdGhpc1xuXG4gIGlmIChjbGllbnRba0hUVFBDb25uVmVyc2lvbl0gPT09ICdoMScgJiYgcGFyc2VyKSB7XG4gICAgaWYgKCF0aGlzW2tFcnJvcl0gJiYgcGFyc2VyLnN0YXR1c0NvZGUgJiYgIXBhcnNlci5zaG91bGRLZWVwQWxpdmUpIHtcbiAgICAgIC8vIFdlIHRyZWF0IGFsbCBpbmNvbWluZyBkYXRhIHNvIGZhciBhcyBhIHZhbGlkIHJlc3BvbnNlLlxuICAgICAgcGFyc2VyLm9uTWVzc2FnZUNvbXBsZXRlKClcbiAgICB9XG5cbiAgICB0aGlzW2tQYXJzZXJdLmRlc3Ryb3koKVxuICAgIHRoaXNba1BhcnNlcl0gPSBudWxsXG4gIH1cblxuICBjb25zdCBlcnIgPSB0aGlzW2tFcnJvcl0gfHwgbmV3IFNvY2tldEVycm9yKCdjbG9zZWQnLCB1dGlsLmdldFNvY2tldEluZm8odGhpcykpXG5cbiAgY2xpZW50W2tTb2NrZXRdID0gbnVsbFxuXG4gIGlmIChjbGllbnQuZGVzdHJveWVkKSB7XG4gICAgYXNzZXJ0KGNsaWVudFtrUGVuZGluZ10gPT09IDApXG5cbiAgICAvLyBGYWlsIGVudGlyZSBxdWV1ZS5cbiAgICBjb25zdCByZXF1ZXN0cyA9IGNsaWVudFtrUXVldWVdLnNwbGljZShjbGllbnRba1J1bm5pbmdJZHhdKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVxdWVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1ZXN0c1tpXVxuICAgICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuICAgIH1cbiAgfSBlbHNlIGlmIChjbGllbnRba1J1bm5pbmddID4gMCAmJiBlcnIuY29kZSAhPT0gJ1VORF9FUlJfSU5GTycpIHtcbiAgICAvLyBGYWlsIGhlYWQgb2YgcGlwZWxpbmUuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNsaWVudFtrUXVldWVdW2NsaWVudFtrUnVubmluZ0lkeF1dXG4gICAgY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tSdW5uaW5nSWR4XSsrXSA9IG51bGxcblxuICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIGVycilcbiAgfVxuXG4gIGNsaWVudFtrUGVuZGluZ0lkeF0gPSBjbGllbnRba1J1bm5pbmdJZHhdXG5cbiAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPT09IDApXG5cbiAgY2xpZW50LmVtaXQoJ2Rpc2Nvbm5lY3QnLCBjbGllbnRba1VybF0sIFtjbGllbnRdLCBlcnIpXG5cbiAgcmVzdW1lKGNsaWVudClcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29ubmVjdCAoY2xpZW50KSB7XG4gIGFzc2VydCghY2xpZW50W2tDb25uZWN0aW5nXSlcbiAgYXNzZXJ0KCFjbGllbnRba1NvY2tldF0pXG5cbiAgbGV0IHsgaG9zdCwgaG9zdG5hbWUsIHByb3RvY29sLCBwb3J0IH0gPSBjbGllbnRba1VybF1cblxuICAvLyBSZXNvbHZlIGlwdjZcbiAgaWYgKGhvc3RuYW1lWzBdID09PSAnWycpIHtcbiAgICBjb25zdCBpZHggPSBob3N0bmFtZS5pbmRleE9mKCddJylcblxuICAgIGFzc2VydChpZHggIT09IC0xKVxuICAgIGNvbnN0IGlwID0gaG9zdG5hbWUuc3Vic3RyaW5nKDEsIGlkeClcblxuICAgIGFzc2VydChuZXQuaXNJUChpcCkpXG4gICAgaG9zdG5hbWUgPSBpcFxuICB9XG5cbiAgY2xpZW50W2tDb25uZWN0aW5nXSA9IHRydWVcblxuICBpZiAoY2hhbm5lbHMuYmVmb3JlQ29ubmVjdC5oYXNTdWJzY3JpYmVycykge1xuICAgIGNoYW5uZWxzLmJlZm9yZUNvbm5lY3QucHVibGlzaCh7XG4gICAgICBjb25uZWN0UGFyYW1zOiB7XG4gICAgICAgIGhvc3QsXG4gICAgICAgIGhvc3RuYW1lLFxuICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgcG9ydCxcbiAgICAgICAgc2VydmVybmFtZTogY2xpZW50W2tTZXJ2ZXJOYW1lXSxcbiAgICAgICAgbG9jYWxBZGRyZXNzOiBjbGllbnRba0xvY2FsQWRkcmVzc11cbiAgICAgIH0sXG4gICAgICBjb25uZWN0b3I6IGNsaWVudFtrQ29ubmVjdG9yXVxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHNvY2tldCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNsaWVudFtrQ29ubmVjdG9yXSh7XG4gICAgICAgIGhvc3QsXG4gICAgICAgIGhvc3RuYW1lLFxuICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgcG9ydCxcbiAgICAgICAgc2VydmVybmFtZTogY2xpZW50W2tTZXJ2ZXJOYW1lXSxcbiAgICAgICAgbG9jYWxBZGRyZXNzOiBjbGllbnRba0xvY2FsQWRkcmVzc11cbiAgICAgIH0sIChlcnIsIHNvY2tldCkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHNvY2tldClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgaWYgKGNsaWVudC5kZXN0cm95ZWQpIHtcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQub24oJ2Vycm9yJywgKCkgPT4ge30pLCBuZXcgQ2xpZW50RGVzdHJveWVkRXJyb3IoKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNsaWVudFtrQ29ubmVjdGluZ10gPSBmYWxzZVxuXG4gICAgYXNzZXJ0KHNvY2tldClcblxuICAgIGNvbnN0IGlzSDIgPSBzb2NrZXQuYWxwblByb3RvY29sID09PSAnaDInXG4gICAgaWYgKGlzSDIpIHtcbiAgICAgIGlmICghaDJFeHBlcmltZW50YWxXYXJuZWQpIHtcbiAgICAgICAgaDJFeHBlcmltZW50YWxXYXJuZWQgPSB0cnVlXG4gICAgICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcoJ0gyIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLCBleHBlY3QgdGhlbSB0byBjaGFuZ2UgYXQgYW55IHRpbWUuJywge1xuICAgICAgICAgIGNvZGU6ICdVTkRJQ0ktSDInXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb24gPSBodHRwMi5jb25uZWN0KGNsaWVudFtrVXJsXSwge1xuICAgICAgICBjcmVhdGVDb25uZWN0aW9uOiAoKSA9PiBzb2NrZXQsXG4gICAgICAgIHBlZXJNYXhDb25jdXJyZW50U3RyZWFtczogY2xpZW50W2tIVFRQMlNlc3Npb25TdGF0ZV0ubWF4Q29uY3VycmVudFN0cmVhbXNcbiAgICAgIH0pXG5cbiAgICAgIGNsaWVudFtrSFRUUENvbm5WZXJzaW9uXSA9ICdoMidcbiAgICAgIHNlc3Npb25ba0NsaWVudF0gPSBjbGllbnRcbiAgICAgIHNlc3Npb25ba1NvY2tldF0gPSBzb2NrZXRcbiAgICAgIHNlc3Npb24ub24oJ2Vycm9yJywgb25IdHRwMlNlc3Npb25FcnJvcilcbiAgICAgIHNlc3Npb24ub24oJ2ZyYW1lRXJyb3InLCBvbkh0dHAyRnJhbWVFcnJvcilcbiAgICAgIHNlc3Npb24ub24oJ2VuZCcsIG9uSHR0cDJTZXNzaW9uRW5kKVxuICAgICAgc2Vzc2lvbi5vbignZ29hd2F5Jywgb25IVFRQMkdvQXdheSlcbiAgICAgIHNlc3Npb24ub24oJ2Nsb3NlJywgb25Tb2NrZXRDbG9zZSlcbiAgICAgIHNlc3Npb24udW5yZWYoKVxuXG4gICAgICBjbGllbnRba0hUVFAyU2Vzc2lvbl0gPSBzZXNzaW9uXG4gICAgICBzb2NrZXRba0hUVFAyU2Vzc2lvbl0gPSBzZXNzaW9uXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghbGxodHRwSW5zdGFuY2UpIHtcbiAgICAgICAgbGxodHRwSW5zdGFuY2UgPSBhd2FpdCBsbGh0dHBQcm9taXNlXG4gICAgICAgIGxsaHR0cFByb21pc2UgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIHNvY2tldFtrTm9SZWZdID0gZmFsc2VcbiAgICAgIHNvY2tldFtrV3JpdGluZ10gPSBmYWxzZVxuICAgICAgc29ja2V0W2tSZXNldF0gPSBmYWxzZVxuICAgICAgc29ja2V0W2tCbG9ja2luZ10gPSBmYWxzZVxuICAgICAgc29ja2V0W2tQYXJzZXJdID0gbmV3IFBhcnNlcihjbGllbnQsIHNvY2tldCwgbGxodHRwSW5zdGFuY2UpXG4gICAgfVxuXG4gICAgc29ja2V0W2tDb3VudGVyXSA9IDBcbiAgICBzb2NrZXRba01heFJlcXVlc3RzXSA9IGNsaWVudFtrTWF4UmVxdWVzdHNdXG4gICAgc29ja2V0W2tDbGllbnRdID0gY2xpZW50XG4gICAgc29ja2V0W2tFcnJvcl0gPSBudWxsXG5cbiAgICBzb2NrZXRcbiAgICAgIC5vbignZXJyb3InLCBvblNvY2tldEVycm9yKVxuICAgICAgLm9uKCdyZWFkYWJsZScsIG9uU29ja2V0UmVhZGFibGUpXG4gICAgICAub24oJ2VuZCcsIG9uU29ja2V0RW5kKVxuICAgICAgLm9uKCdjbG9zZScsIG9uU29ja2V0Q2xvc2UpXG5cbiAgICBjbGllbnRba1NvY2tldF0gPSBzb2NrZXRcblxuICAgIGlmIChjaGFubmVscy5jb25uZWN0ZWQuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICAgIGNoYW5uZWxzLmNvbm5lY3RlZC5wdWJsaXNoKHtcbiAgICAgICAgY29ubmVjdFBhcmFtczoge1xuICAgICAgICAgIGhvc3QsXG4gICAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgcG9ydCxcbiAgICAgICAgICBzZXJ2ZXJuYW1lOiBjbGllbnRba1NlcnZlck5hbWVdLFxuICAgICAgICAgIGxvY2FsQWRkcmVzczogY2xpZW50W2tMb2NhbEFkZHJlc3NdXG4gICAgICAgIH0sXG4gICAgICAgIGNvbm5lY3RvcjogY2xpZW50W2tDb25uZWN0b3JdLFxuICAgICAgICBzb2NrZXRcbiAgICAgIH0pXG4gICAgfVxuICAgIGNsaWVudC5lbWl0KCdjb25uZWN0JywgY2xpZW50W2tVcmxdLCBbY2xpZW50XSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGNsaWVudC5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNsaWVudFtrQ29ubmVjdGluZ10gPSBmYWxzZVxuXG4gICAgaWYgKGNoYW5uZWxzLmNvbm5lY3RFcnJvci5oYXNTdWJzY3JpYmVycykge1xuICAgICAgY2hhbm5lbHMuY29ubmVjdEVycm9yLnB1Ymxpc2goe1xuICAgICAgICBjb25uZWN0UGFyYW1zOiB7XG4gICAgICAgICAgaG9zdCxcbiAgICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICBwb3J0LFxuICAgICAgICAgIHNlcnZlcm5hbWU6IGNsaWVudFtrU2VydmVyTmFtZV0sXG4gICAgICAgICAgbG9jYWxBZGRyZXNzOiBjbGllbnRba0xvY2FsQWRkcmVzc11cbiAgICAgICAgfSxcbiAgICAgICAgY29ubmVjdG9yOiBjbGllbnRba0Nvbm5lY3Rvcl0sXG4gICAgICAgIGVycm9yOiBlcnJcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGVyci5jb2RlID09PSAnRVJSX1RMU19DRVJUX0FMVE5BTUVfSU5WQUxJRCcpIHtcbiAgICAgIGFzc2VydChjbGllbnRba1J1bm5pbmddID09PSAwKVxuICAgICAgd2hpbGUgKGNsaWVudFtrUGVuZGluZ10gPiAwICYmIGNsaWVudFtrUXVldWVdW2NsaWVudFtrUGVuZGluZ0lkeF1dLnNlcnZlcm5hbWUgPT09IGNsaWVudFtrU2VydmVyTmFtZV0pIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNsaWVudFtrUXVldWVdW2NsaWVudFtrUGVuZGluZ0lkeF0rK11cbiAgICAgICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkVycm9yKGNsaWVudCwgZXJyKVxuICAgIH1cblxuICAgIGNsaWVudC5lbWl0KCdjb25uZWN0aW9uRXJyb3InLCBjbGllbnRba1VybF0sIFtjbGllbnRdLCBlcnIpXG4gIH1cblxuICByZXN1bWUoY2xpZW50KVxufVxuXG5mdW5jdGlvbiBlbWl0RHJhaW4gKGNsaWVudCkge1xuICBjbGllbnRba05lZWREcmFpbl0gPSAwXG4gIGNsaWVudC5lbWl0KCdkcmFpbicsIGNsaWVudFtrVXJsXSwgW2NsaWVudF0pXG59XG5cbmZ1bmN0aW9uIHJlc3VtZSAoY2xpZW50LCBzeW5jKSB7XG4gIGlmIChjbGllbnRba1Jlc3VtaW5nXSA9PT0gMikge1xuICAgIHJldHVyblxuICB9XG5cbiAgY2xpZW50W2tSZXN1bWluZ10gPSAyXG5cbiAgX3Jlc3VtZShjbGllbnQsIHN5bmMpXG4gIGNsaWVudFtrUmVzdW1pbmddID0gMFxuXG4gIGlmIChjbGllbnRba1J1bm5pbmdJZHhdID4gMjU2KSB7XG4gICAgY2xpZW50W2tRdWV1ZV0uc3BsaWNlKDAsIGNsaWVudFtrUnVubmluZ0lkeF0pXG4gICAgY2xpZW50W2tQZW5kaW5nSWR4XSAtPSBjbGllbnRba1J1bm5pbmdJZHhdXG4gICAgY2xpZW50W2tSdW5uaW5nSWR4XSA9IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBfcmVzdW1lIChjbGllbnQsIHN5bmMpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoY2xpZW50LmRlc3Ryb3llZCkge1xuICAgICAgYXNzZXJ0KGNsaWVudFtrUGVuZGluZ10gPT09IDApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY2xpZW50W2tDbG9zZWRSZXNvbHZlXSAmJiAhY2xpZW50W2tTaXplXSkge1xuICAgICAgY2xpZW50W2tDbG9zZWRSZXNvbHZlXSgpXG4gICAgICBjbGllbnRba0Nsb3NlZFJlc29sdmVdID0gbnVsbFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc29ja2V0ID0gY2xpZW50W2tTb2NrZXRdXG5cbiAgICBpZiAoc29ja2V0ICYmICFzb2NrZXQuZGVzdHJveWVkICYmIHNvY2tldC5hbHBuUHJvdG9jb2wgIT09ICdoMicpIHtcbiAgICAgIGlmIChjbGllbnRba1NpemVdID09PSAwKSB7XG4gICAgICAgIGlmICghc29ja2V0W2tOb1JlZl0gJiYgc29ja2V0LnVucmVmKSB7XG4gICAgICAgICAgc29ja2V0LnVucmVmKClcbiAgICAgICAgICBzb2NrZXRba05vUmVmXSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb2NrZXRba05vUmVmXSAmJiBzb2NrZXQucmVmKSB7XG4gICAgICAgIHNvY2tldC5yZWYoKVxuICAgICAgICBzb2NrZXRba05vUmVmXSA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGlmIChjbGllbnRba1NpemVdID09PSAwKSB7XG4gICAgICAgIGlmIChzb2NrZXRba1BhcnNlcl0udGltZW91dFR5cGUgIT09IFRJTUVPVVRfSURMRSkge1xuICAgICAgICAgIHNvY2tldFtrUGFyc2VyXS5zZXRUaW1lb3V0KGNsaWVudFtrS2VlcEFsaXZlVGltZW91dFZhbHVlXSwgVElNRU9VVF9JRExFKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwICYmIHNvY2tldFtrUGFyc2VyXS5zdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICAgIGlmIChzb2NrZXRba1BhcnNlcl0udGltZW91dFR5cGUgIT09IFRJTUVPVVRfSEVBREVSUykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnRba1F1ZXVlXVtjbGllbnRba1J1bm5pbmdJZHhdXVxuICAgICAgICAgIGNvbnN0IGhlYWRlcnNUaW1lb3V0ID0gcmVxdWVzdC5oZWFkZXJzVGltZW91dCAhPSBudWxsXG4gICAgICAgICAgICA/IHJlcXVlc3QuaGVhZGVyc1RpbWVvdXRcbiAgICAgICAgICAgIDogY2xpZW50W2tIZWFkZXJzVGltZW91dF1cbiAgICAgICAgICBzb2NrZXRba1BhcnNlcl0uc2V0VGltZW91dChoZWFkZXJzVGltZW91dCwgVElNRU9VVF9IRUFERVJTKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrQnVzeV0pIHtcbiAgICAgIGNsaWVudFtrTmVlZERyYWluXSA9IDJcbiAgICB9IGVsc2UgaWYgKGNsaWVudFtrTmVlZERyYWluXSA9PT0gMikge1xuICAgICAgaWYgKHN5bmMpIHtcbiAgICAgICAgY2xpZW50W2tOZWVkRHJhaW5dID0gMVxuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXREcmFpbiwgY2xpZW50KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW1pdERyYWluKGNsaWVudClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrUGVuZGluZ10gPT09IDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChjbGllbnRba1J1bm5pbmddID49IChjbGllbnRba1BpcGVsaW5pbmddIHx8IDEpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2xpZW50W2tRdWV1ZV1bY2xpZW50W2tQZW5kaW5nSWR4XV1cblxuICAgIGlmIChjbGllbnRba1VybF0ucHJvdG9jb2wgPT09ICdodHRwczonICYmIGNsaWVudFtrU2VydmVyTmFtZV0gIT09IHJlcXVlc3Quc2VydmVybmFtZSkge1xuICAgICAgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjbGllbnRba1NlcnZlck5hbWVdID0gcmVxdWVzdC5zZXJ2ZXJuYW1lXG5cbiAgICAgIGlmIChzb2NrZXQgJiYgc29ja2V0LnNlcnZlcm5hbWUgIT09IHJlcXVlc3Quc2VydmVybmFtZSkge1xuICAgICAgICB1dGlsLmRlc3Ryb3koc29ja2V0LCBuZXcgSW5mb3JtYXRpb25hbEVycm9yKCdzZXJ2ZXJuYW1lIGNoYW5nZWQnKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrQ29ubmVjdGluZ10pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghc29ja2V0ICYmICFjbGllbnRba0hUVFAyU2Vzc2lvbl0pIHtcbiAgICAgIGNvbm5lY3QoY2xpZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHNvY2tldC5kZXN0cm95ZWQgfHwgc29ja2V0W2tXcml0aW5nXSB8fCBzb2NrZXRba1Jlc2V0XSB8fCBzb2NrZXRba0Jsb2NraW5nXSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwICYmICFyZXF1ZXN0LmlkZW1wb3RlbnQpIHtcbiAgICAgIC8vIE5vbi1pZGVtcG90ZW50IHJlcXVlc3QgY2Fubm90IGJlIHJldHJpZWQuXG4gICAgICAvLyBFbnN1cmUgdGhhdCBubyBvdGhlciByZXF1ZXN0cyBhcmUgaW5mbGlnaHQgYW5kXG4gICAgICAvLyBjb3VsZCBjYXVzZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFtrUnVubmluZ10gPiAwICYmIChyZXF1ZXN0LnVwZ3JhZGUgfHwgcmVxdWVzdC5tZXRob2QgPT09ICdDT05ORUNUJykpIHtcbiAgICAgIC8vIERvbid0IGRpc3BhdGNoIGFuIHVwZ3JhZGUgdW50aWwgYWxsIHByZWNlZGluZyByZXF1ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgIC8vIEEgbWlzYmVoYXZpbmcgc2VydmVyIG1pZ2h0IHVwZ3JhZGUgdGhlIGNvbm5lY3Rpb24gYmVmb3JlIGFsbCBwaXBlbGluZWRcbiAgICAgIC8vIHJlcXVlc3QgaGFzIGNvbXBsZXRlZC5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChjbGllbnRba1J1bm5pbmddID4gMCAmJiB1dGlsLmJvZHlMZW5ndGgocmVxdWVzdC5ib2R5KSAhPT0gMCAmJlxuICAgICAgKHV0aWwuaXNTdHJlYW0ocmVxdWVzdC5ib2R5KSB8fCB1dGlsLmlzQXN5bmNJdGVyYWJsZShyZXF1ZXN0LmJvZHkpKSkge1xuICAgICAgLy8gUmVxdWVzdCB3aXRoIHN0cmVhbSBvciBpdGVyYXRvciBib2R5IGNhbiBlcnJvciB3aGlsZSBvdGhlciByZXF1ZXN0c1xuICAgICAgLy8gYXJlIGluZmxpZ2h0IGFuZCBpbmRpcmVjdGx5IGVycm9yIHRob3NlIGFzIHdlbGwuXG4gICAgICAvLyBFbnN1cmUgdGhpcyBkb2Vzbid0IGhhcHBlbiBieSB3YWl0aW5nIGZvciBpbmZsaWdodFxuICAgICAgLy8gdG8gY29tcGxldGUgYmVmb3JlIGRpc3BhdGNoaW5nLlxuXG4gICAgICAvLyBSZXF1ZXN0IHdpdGggc3RyZWFtIG9yIGl0ZXJhdG9yIGJvZHkgY2Fubm90IGJlIHJldHJpZWQuXG4gICAgICAvLyBFbnN1cmUgdGhhdCBubyBvdGhlciByZXF1ZXN0cyBhcmUgaW5mbGlnaHQgYW5kXG4gICAgICAvLyBjb3VsZCBjYXVzZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0LmFib3J0ZWQgJiYgd3JpdGUoY2xpZW50LCByZXF1ZXN0KSkge1xuICAgICAgY2xpZW50W2tQZW5kaW5nSWR4XSsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGNsaWVudFtrUXVldWVdLnNwbGljZShjbGllbnRba1BlbmRpbmdJZHhdLCAxKVxuICAgIH1cbiAgfVxufVxuXG4vLyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMCNzZWN0aW9uLTMuMy4yXG5mdW5jdGlvbiBzaG91bGRTZW5kQ29udGVudExlbmd0aCAobWV0aG9kKSB7XG4gIHJldHVybiBtZXRob2QgIT09ICdHRVQnICYmIG1ldGhvZCAhPT0gJ0hFQUQnICYmIG1ldGhvZCAhPT0gJ09QVElPTlMnICYmIG1ldGhvZCAhPT0gJ1RSQUNFJyAmJiBtZXRob2QgIT09ICdDT05ORUNUJ1xufVxuXG5mdW5jdGlvbiB3cml0ZSAoY2xpZW50LCByZXF1ZXN0KSB7XG4gIGlmIChjbGllbnRba0hUVFBDb25uVmVyc2lvbl0gPT09ICdoMicpIHtcbiAgICB3cml0ZUgyKGNsaWVudCwgY2xpZW50W2tIVFRQMlNlc3Npb25dLCByZXF1ZXN0KVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBib2R5LCBtZXRob2QsIHBhdGgsIGhvc3QsIHVwZ3JhZGUsIGhlYWRlcnMsIGJsb2NraW5nLCByZXNldCB9ID0gcmVxdWVzdFxuXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNC4zLjFcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi00LjMuMlxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTQuMy41XG5cbiAgLy8gU2VuZGluZyBhIHBheWxvYWQgYm9keSBvbiBhIHJlcXVlc3QgdGhhdCBkb2VzIG5vdFxuICAvLyBleHBlY3QgaXQgY2FuIGNhdXNlIHVuZGVmaW5lZCBiZWhhdmlvciBvbiBzb21lXG4gIC8vIHNlcnZlcnMgYW5kIGNvcnJ1cHQgY29ubmVjdGlvbiBzdGF0ZS4gRG8gbm90XG4gIC8vIHJlLXVzZSB0aGUgY29ubmVjdGlvbiBmb3IgZnVydGhlciByZXF1ZXN0cy5cblxuICBjb25zdCBleHBlY3RzUGF5bG9hZCA9IChcbiAgICBtZXRob2QgPT09ICdQVVQnIHx8XG4gICAgbWV0aG9kID09PSAnUE9TVCcgfHxcbiAgICBtZXRob2QgPT09ICdQQVRDSCdcbiAgKVxuXG4gIGlmIChib2R5ICYmIHR5cGVvZiBib2R5LnJlYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUcnkgdG8gcmVhZCBFT0YgaW4gb3JkZXIgdG8gZ2V0IGxlbmd0aC5cbiAgICBib2R5LnJlYWQoMClcbiAgfVxuXG4gIGNvbnN0IGJvZHlMZW5ndGggPSB1dGlsLmJvZHlMZW5ndGgoYm9keSlcblxuICBsZXQgY29udGVudExlbmd0aCA9IGJvZHlMZW5ndGhcblxuICBpZiAoY29udGVudExlbmd0aCA9PT0gbnVsbCkge1xuICAgIGNvbnRlbnRMZW5ndGggPSByZXF1ZXN0LmNvbnRlbnRMZW5ndGhcbiAgfVxuXG4gIGlmIChjb250ZW50TGVuZ3RoID09PSAwICYmICFleHBlY3RzUGF5bG9hZCkge1xuICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjJcbiAgICAvLyBBIHVzZXIgYWdlbnQgU0hPVUxEIE5PVCBzZW5kIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIHdoZW5cbiAgICAvLyB0aGUgcmVxdWVzdCBtZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBwYXlsb2FkIGJvZHkgYW5kIHRoZSBtZXRob2RcbiAgICAvLyBzZW1hbnRpY3MgZG8gbm90IGFudGljaXBhdGUgc3VjaCBhIGJvZHkuXG5cbiAgICBjb250ZW50TGVuZ3RoID0gbnVsbFxuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzIwNDZcbiAgLy8gQSB1c2VyIGFnZW50IG1heSBzZW5kIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHdpdGggMCB2YWx1ZSwgdGhpcyBzaG91bGQgYmUgYWxsb3dlZC5cbiAgaWYgKHNob3VsZFNlbmRDb250ZW50TGVuZ3RoKG1ldGhvZCkgJiYgY29udGVudExlbmd0aCA+IDAgJiYgcmVxdWVzdC5jb250ZW50TGVuZ3RoICE9PSBudWxsICYmIHJlcXVlc3QuY29udGVudExlbmd0aCAhPT0gY29udGVudExlbmd0aCkge1xuICAgIGlmIChjbGllbnRba1N0cmljdENvbnRlbnRMZW5ndGhdKSB7XG4gICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBuZXcgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yKCkpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgfVxuXG4gIGNvbnN0IHNvY2tldCA9IGNsaWVudFtrU29ja2V0XVxuXG4gIHRyeSB7XG4gICAgcmVxdWVzdC5vbkNvbm5lY3QoKGVycikgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QuYWJvcnRlZCB8fCByZXF1ZXN0LmNvbXBsZXRlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyIHx8IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKCkpXG5cbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoJ2Fib3J0ZWQnKSlcbiAgICB9KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBlcnIpXG4gIH1cblxuICBpZiAocmVxdWVzdC5hYm9ydGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWNvbGxpbmEvdW5kaWNpL2lzc3Vlcy8yNThcbiAgICAvLyBDbG9zZSBhZnRlciBhIEhFQUQgcmVxdWVzdCB0byBpbnRlcm9wIHdpdGggbWlzYmVoYXZpbmcgc2VydmVyc1xuICAgIC8vIHRoYXQgbWF5IHNlbmQgYSBib2R5IGluIHRoZSByZXNwb25zZS5cblxuICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHVwZ3JhZGUgfHwgbWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICAvLyBPbiBDT05ORUNUIG9yIHVwZ3JhZGUsIGJsb2NrIHBpcGVsaW5lIGZyb20gZGlzcGF0Y2hpbmcgZnVydGhlclxuICAgIC8vIHJlcXVlc3RzIG9uIHRoaXMgY29ubmVjdGlvbi5cblxuICAgIHNvY2tldFtrUmVzZXRdID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHJlc2V0ICE9IG51bGwpIHtcbiAgICBzb2NrZXRba1Jlc2V0XSA9IHJlc2V0XG4gIH1cblxuICBpZiAoY2xpZW50W2tNYXhSZXF1ZXN0c10gJiYgc29ja2V0W2tDb3VudGVyXSsrID49IGNsaWVudFtrTWF4UmVxdWVzdHNdKSB7XG4gICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gIH1cblxuICBpZiAoYmxvY2tpbmcpIHtcbiAgICBzb2NrZXRba0Jsb2NraW5nXSA9IHRydWVcbiAgfVxuXG4gIGxldCBoZWFkZXIgPSBgJHttZXRob2R9ICR7cGF0aH0gSFRUUC8xLjFcXHJcXG5gXG5cbiAgaWYgKHR5cGVvZiBob3N0ID09PSAnc3RyaW5nJykge1xuICAgIGhlYWRlciArPSBgaG9zdDogJHtob3N0fVxcclxcbmBcbiAgfSBlbHNlIHtcbiAgICBoZWFkZXIgKz0gY2xpZW50W2tIb3N0SGVhZGVyXVxuICB9XG5cbiAgaWYgKHVwZ3JhZGUpIHtcbiAgICBoZWFkZXIgKz0gYGNvbm5lY3Rpb246IHVwZ3JhZGVcXHJcXG51cGdyYWRlOiAke3VwZ3JhZGV9XFxyXFxuYFxuICB9IGVsc2UgaWYgKGNsaWVudFtrUGlwZWxpbmluZ10gJiYgIXNvY2tldFtrUmVzZXRdKSB7XG4gICAgaGVhZGVyICs9ICdjb25uZWN0aW9uOiBrZWVwLWFsaXZlXFxyXFxuJ1xuICB9IGVsc2Uge1xuICAgIGhlYWRlciArPSAnY29ubmVjdGlvbjogY2xvc2VcXHJcXG4nXG4gIH1cblxuICBpZiAoaGVhZGVycykge1xuICAgIGhlYWRlciArPSBoZWFkZXJzXG4gIH1cblxuICBpZiAoY2hhbm5lbHMuc2VuZEhlYWRlcnMuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICBjaGFubmVscy5zZW5kSGVhZGVycy5wdWJsaXNoKHsgcmVxdWVzdCwgaGVhZGVyczogaGVhZGVyLCBzb2NrZXQgfSlcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBhc3NlcnRpb24gKi9cbiAgaWYgKCFib2R5IHx8IGJvZHlMZW5ndGggPT09IDApIHtcbiAgICBpZiAoY29udGVudExlbmd0aCA9PT0gMCkge1xuICAgICAgc29ja2V0LndyaXRlKGAke2hlYWRlcn1jb250ZW50LWxlbmd0aDogMFxcclxcblxcclxcbmAsICdsYXRpbjEnKVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoY29udGVudExlbmd0aCA9PT0gbnVsbCwgJ25vIGJvZHkgbXVzdCBub3QgaGF2ZSBjb250ZW50IGxlbmd0aCcpXG4gICAgICBzb2NrZXQud3JpdGUoYCR7aGVhZGVyfVxcclxcbmAsICdsYXRpbjEnKVxuICAgIH1cbiAgICByZXF1ZXN0Lm9uUmVxdWVzdFNlbnQoKVxuICB9IGVsc2UgaWYgKHV0aWwuaXNCdWZmZXIoYm9keSkpIHtcbiAgICBhc3NlcnQoY29udGVudExlbmd0aCA9PT0gYm9keS5ieXRlTGVuZ3RoLCAnYnVmZmVyIGJvZHkgbXVzdCBoYXZlIGNvbnRlbnQgbGVuZ3RoJylcblxuICAgIHNvY2tldC5jb3JrKClcbiAgICBzb2NrZXQud3JpdGUoYCR7aGVhZGVyfWNvbnRlbnQtbGVuZ3RoOiAke2NvbnRlbnRMZW5ndGh9XFxyXFxuXFxyXFxuYCwgJ2xhdGluMScpXG4gICAgc29ja2V0LndyaXRlKGJvZHkpXG4gICAgc29ja2V0LnVuY29yaygpXG4gICAgcmVxdWVzdC5vbkJvZHlTZW50KGJvZHkpXG4gICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcbiAgICBpZiAoIWV4cGVjdHNQYXlsb2FkKSB7XG4gICAgICBzb2NrZXRba1Jlc2V0XSA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSBpZiAodXRpbC5pc0Jsb2JMaWtlKGJvZHkpKSB7XG4gICAgaWYgKHR5cGVvZiBib2R5LnN0cmVhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd3JpdGVJdGVyYWJsZSh7IGJvZHk6IGJvZHkuc3RyZWFtKCksIGNsaWVudCwgcmVxdWVzdCwgc29ja2V0LCBjb250ZW50TGVuZ3RoLCBoZWFkZXIsIGV4cGVjdHNQYXlsb2FkIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHdyaXRlQmxvYih7IGJvZHksIGNsaWVudCwgcmVxdWVzdCwgc29ja2V0LCBjb250ZW50TGVuZ3RoLCBoZWFkZXIsIGV4cGVjdHNQYXlsb2FkIH0pXG4gICAgfVxuICB9IGVsc2UgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICB3cml0ZVN0cmVhbSh7IGJvZHksIGNsaWVudCwgcmVxdWVzdCwgc29ja2V0LCBjb250ZW50TGVuZ3RoLCBoZWFkZXIsIGV4cGVjdHNQYXlsb2FkIH0pXG4gIH0gZWxzZSBpZiAodXRpbC5pc0l0ZXJhYmxlKGJvZHkpKSB7XG4gICAgd3JpdGVJdGVyYWJsZSh7IGJvZHksIGNsaWVudCwgcmVxdWVzdCwgc29ja2V0LCBjb250ZW50TGVuZ3RoLCBoZWFkZXIsIGV4cGVjdHNQYXlsb2FkIH0pXG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0KGZhbHNlKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gd3JpdGVIMiAoY2xpZW50LCBzZXNzaW9uLCByZXF1ZXN0KSB7XG4gIGNvbnN0IHsgYm9keSwgbWV0aG9kLCBwYXRoLCBob3N0LCB1cGdyYWRlLCBleHBlY3RDb250aW51ZSwgc2lnbmFsLCBoZWFkZXJzOiByZXFIZWFkZXJzIH0gPSByZXF1ZXN0XG5cbiAgbGV0IGhlYWRlcnNcbiAgaWYgKHR5cGVvZiByZXFIZWFkZXJzID09PSAnc3RyaW5nJykgaGVhZGVycyA9IFJlcXVlc3Rba0hUVFAyQ29weUhlYWRlcnNdKHJlcUhlYWRlcnMudHJpbSgpKVxuICBlbHNlIGhlYWRlcnMgPSByZXFIZWFkZXJzXG5cbiAgaWYgKHVwZ3JhZGUpIHtcbiAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBuZXcgRXJyb3IoJ1VwZ3JhZGUgbm90IHN1cHBvcnRlZCBmb3IgSDInKSlcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gVE9ETyhIVFRQLzIpOiBTaG91bGQgd2UgY2FsbCBvbkNvbm5lY3QgaW1tZWRpYXRlbHkgb3Igb24gc3RyZWFtIHJlYWR5IGV2ZW50P1xuICAgIHJlcXVlc3Qub25Db25uZWN0KChlcnIpID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LmFib3J0ZWQgfHwgcmVxdWVzdC5jb21wbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIGVyciB8fCBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpKVxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yUmVxdWVzdChjbGllbnQsIHJlcXVlc3QsIGVycilcbiAgfVxuXG4gIGlmIChyZXF1ZXN0LmFib3J0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdub2RlOmh0dHAyJykuQ2xpZW50SHR0cDJTdHJlYW19ICovXG4gIGxldCBzdHJlYW1cbiAgY29uc3QgaDJTdGF0ZSA9IGNsaWVudFtrSFRUUDJTZXNzaW9uU3RhdGVdXG5cbiAgaGVhZGVyc1tIVFRQMl9IRUFERVJfQVVUSE9SSVRZXSA9IGhvc3QgfHwgY2xpZW50W2tIb3N0XVxuICBoZWFkZXJzW0hUVFAyX0hFQURFUl9NRVRIT0RdID0gbWV0aG9kXG5cbiAgaWYgKG1ldGhvZCA9PT0gJ0NPTk5FQ1QnKSB7XG4gICAgc2Vzc2lvbi5yZWYoKVxuICAgIC8vIHdlIGFyZSBhbHJlYWR5IGNvbm5lY3RlZCwgc3RyZWFtcyBhcmUgcGVuZGluZywgZmlyc3QgcmVxdWVzdFxuICAgIC8vIHdpbGwgY3JlYXRlIGEgbmV3IHN0cmVhbS4gV2UgdHJpZ2dlciBhIHJlcXVlc3QgdG8gY3JlYXRlIHRoZSBzdHJlYW0gYW5kIHdhaXQgdW50aWxcbiAgICAvLyBgcmVhZHlgIGV2ZW50IGlzIHRyaWdnZXJlZFxuICAgIC8vIFdlIGRpc2FibGVkIGVuZFN0cmVhbSB0byBhbGxvdyB0aGUgdXNlciB0byB3cml0ZSB0byB0aGUgc3RyZWFtXG4gICAgc3RyZWFtID0gc2Vzc2lvbi5yZXF1ZXN0KGhlYWRlcnMsIHsgZW5kU3RyZWFtOiBmYWxzZSwgc2lnbmFsIH0pXG5cbiAgICBpZiAoc3RyZWFtLmlkICYmICFzdHJlYW0ucGVuZGluZykge1xuICAgICAgcmVxdWVzdC5vblVwZ3JhZGUobnVsbCwgbnVsbCwgc3RyZWFtKVxuICAgICAgKytoMlN0YXRlLm9wZW5TdHJlYW1zXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5vbmNlKCdyZWFkeScsICgpID0+IHtcbiAgICAgICAgcmVxdWVzdC5vblVwZ3JhZGUobnVsbCwgbnVsbCwgc3RyZWFtKVxuICAgICAgICArK2gyU3RhdGUub3BlblN0cmVhbXNcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc3RyZWFtLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgaDJTdGF0ZS5vcGVuU3RyZWFtcyAtPSAxXG4gICAgICAvLyBUT0RPKEhUVFAvMik6IHVucmVmIG9ubHkgaWYgY3VycmVudCBzdHJlYW1zIGNvdW50IGlzIDBcbiAgICAgIGlmIChoMlN0YXRlLm9wZW5TdHJlYW1zID09PSAwKSBzZXNzaW9uLnVucmVmKClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTQwI3NlY3Rpb24tOC4zXG4gIC8vIDpwYXRoIGFuZCA6c2NoZW1lIGhlYWRlcnMgbXVzdCBiZSBvbWl0ZWQgd2hlbiBzZW5kaW5nIENPTk5FQ1RcblxuICBoZWFkZXJzW0hUVFAyX0hFQURFUl9QQVRIXSA9IHBhdGhcbiAgaGVhZGVyc1tIVFRQMl9IRUFERVJfU0NIRU1FXSA9ICdodHRwcydcblxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTQuMy4xXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNC4zLjJcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi00LjMuNVxuXG4gIC8vIFNlbmRpbmcgYSBwYXlsb2FkIGJvZHkgb24gYSByZXF1ZXN0IHRoYXQgZG9lcyBub3RcbiAgLy8gZXhwZWN0IGl0IGNhbiBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3Igb24gc29tZVxuICAvLyBzZXJ2ZXJzIGFuZCBjb3JydXB0IGNvbm5lY3Rpb24gc3RhdGUuIERvIG5vdFxuICAvLyByZS11c2UgdGhlIGNvbm5lY3Rpb24gZm9yIGZ1cnRoZXIgcmVxdWVzdHMuXG5cbiAgY29uc3QgZXhwZWN0c1BheWxvYWQgPSAoXG4gICAgbWV0aG9kID09PSAnUFVUJyB8fFxuICAgIG1ldGhvZCA9PT0gJ1BPU1QnIHx8XG4gICAgbWV0aG9kID09PSAnUEFUQ0gnXG4gIClcblxuICBpZiAoYm9keSAmJiB0eXBlb2YgYm9keS5yZWFkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gVHJ5IHRvIHJlYWQgRU9GIGluIG9yZGVyIHRvIGdldCBsZW5ndGguXG4gICAgYm9keS5yZWFkKDApXG4gIH1cblxuICBsZXQgY29udGVudExlbmd0aCA9IHV0aWwuYm9keUxlbmd0aChib2R5KVxuXG4gIGlmIChjb250ZW50TGVuZ3RoID09IG51bGwpIHtcbiAgICBjb250ZW50TGVuZ3RoID0gcmVxdWVzdC5jb250ZW50TGVuZ3RoXG4gIH1cblxuICBpZiAoY29udGVudExlbmd0aCA9PT0gMCB8fCAhZXhwZWN0c1BheWxvYWQpIHtcbiAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMy4yXG4gICAgLy8gQSB1c2VyIGFnZW50IFNIT1VMRCBOT1Qgc2VuZCBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBmaWVsZCB3aGVuXG4gICAgLy8gdGhlIHJlcXVlc3QgbWVzc2FnZSBkb2VzIG5vdCBjb250YWluIGEgcGF5bG9hZCBib2R5IGFuZCB0aGUgbWV0aG9kXG4gICAgLy8gc2VtYW50aWNzIGRvIG5vdCBhbnRpY2lwYXRlIHN1Y2ggYSBib2R5LlxuXG4gICAgY29udGVudExlbmd0aCA9IG51bGxcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8yMDQ2XG4gIC8vIEEgdXNlciBhZ2VudCBtYXkgc2VuZCBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciB3aXRoIDAgdmFsdWUsIHRoaXMgc2hvdWxkIGJlIGFsbG93ZWQuXG4gIGlmIChzaG91bGRTZW5kQ29udGVudExlbmd0aChtZXRob2QpICYmIGNvbnRlbnRMZW5ndGggPiAwICYmIHJlcXVlc3QuY29udGVudExlbmd0aCAhPSBudWxsICYmIHJlcXVlc3QuY29udGVudExlbmd0aCAhPT0gY29udGVudExlbmd0aCkge1xuICAgIGlmIChjbGllbnRba1N0cmljdENvbnRlbnRMZW5ndGhdKSB7XG4gICAgICBlcnJvclJlcXVlc3QoY2xpZW50LCByZXF1ZXN0LCBuZXcgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yKCkpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKSlcbiAgfVxuXG4gIGlmIChjb250ZW50TGVuZ3RoICE9IG51bGwpIHtcbiAgICBhc3NlcnQoYm9keSwgJ25vIGJvZHkgbXVzdCBub3QgaGF2ZSBjb250ZW50IGxlbmd0aCcpXG4gICAgaGVhZGVyc1tIVFRQMl9IRUFERVJfQ09OVEVOVF9MRU5HVEhdID0gYCR7Y29udGVudExlbmd0aH1gXG4gIH1cblxuICBzZXNzaW9uLnJlZigpXG5cbiAgY29uc3Qgc2hvdWxkRW5kU3RyZWFtID0gbWV0aG9kID09PSAnR0VUJyB8fCBtZXRob2QgPT09ICdIRUFEJ1xuICBpZiAoZXhwZWN0Q29udGludWUpIHtcbiAgICBoZWFkZXJzW0hUVFAyX0hFQURFUl9FWFBFQ1RdID0gJzEwMC1jb250aW51ZSdcbiAgICBzdHJlYW0gPSBzZXNzaW9uLnJlcXVlc3QoaGVhZGVycywgeyBlbmRTdHJlYW06IHNob3VsZEVuZFN0cmVhbSwgc2lnbmFsIH0pXG5cbiAgICBzdHJlYW0ub25jZSgnY29udGludWUnLCB3cml0ZUJvZHlIMilcbiAgfSBlbHNlIHtcbiAgICBzdHJlYW0gPSBzZXNzaW9uLnJlcXVlc3QoaGVhZGVycywge1xuICAgICAgZW5kU3RyZWFtOiBzaG91bGRFbmRTdHJlYW0sXG4gICAgICBzaWduYWxcbiAgICB9KVxuICAgIHdyaXRlQm9keUgyKClcbiAgfVxuXG4gIC8vIEluY3JlbWVudCBjb3VudGVyIGFzIHdlIGhhdmUgbmV3IHNldmVyYWwgc3RyZWFtcyBvcGVuXG4gICsraDJTdGF0ZS5vcGVuU3RyZWFtc1xuXG4gIHN0cmVhbS5vbmNlKCdyZXNwb25zZScsIGhlYWRlcnMgPT4ge1xuICAgIGNvbnN0IHsgW0hUVFAyX0hFQURFUl9TVEFUVVNdOiBzdGF0dXNDb2RlLCAuLi5yZWFsSGVhZGVycyB9ID0gaGVhZGVyc1xuXG4gICAgaWYgKHJlcXVlc3Qub25IZWFkZXJzKE51bWJlcihzdGF0dXNDb2RlKSwgcmVhbEhlYWRlcnMsIHN0cmVhbS5yZXN1bWUuYmluZChzdHJlYW0pLCAnJykgPT09IGZhbHNlKSB7XG4gICAgICBzdHJlYW0ucGF1c2UoKVxuICAgIH1cbiAgfSlcblxuICBzdHJlYW0ub25jZSgnZW5kJywgKCkgPT4ge1xuICAgIHJlcXVlc3Qub25Db21wbGV0ZShbXSlcbiAgfSlcblxuICBzdHJlYW0ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICBpZiAocmVxdWVzdC5vbkRhdGEoY2h1bmspID09PSBmYWxzZSkge1xuICAgICAgc3RyZWFtLnBhdXNlKClcbiAgICB9XG4gIH0pXG5cbiAgc3RyZWFtLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGgyU3RhdGUub3BlblN0cmVhbXMgLT0gMVxuICAgIC8vIFRPRE8oSFRUUC8yKTogdW5yZWYgb25seSBpZiBjdXJyZW50IHN0cmVhbXMgY291bnQgaXMgMFxuICAgIGlmIChoMlN0YXRlLm9wZW5TdHJlYW1zID09PSAwKSB7XG4gICAgICBzZXNzaW9uLnVucmVmKClcbiAgICB9XG4gIH0pXG5cbiAgc3RyZWFtLm9uY2UoJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChjbGllbnRba0hUVFAyU2Vzc2lvbl0gJiYgIWNsaWVudFtrSFRUUDJTZXNzaW9uXS5kZXN0cm95ZWQgJiYgIXRoaXMuY2xvc2VkICYmICF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgaDJTdGF0ZS5zdHJlYW1zIC09IDFcbiAgICAgIHV0aWwuZGVzdHJveShzdHJlYW0sIGVycilcbiAgICB9XG4gIH0pXG5cbiAgc3RyZWFtLm9uY2UoJ2ZyYW1lRXJyb3InLCAodHlwZSwgY29kZSkgPT4ge1xuICAgIGNvbnN0IGVyciA9IG5ldyBJbmZvcm1hdGlvbmFsRXJyb3IoYEhUVFAvMjogXCJmcmFtZUVycm9yXCIgcmVjZWl2ZWQgLSB0eXBlICR7dHlwZX0sIGNvZGUgJHtjb2RlfWApXG4gICAgZXJyb3JSZXF1ZXN0KGNsaWVudCwgcmVxdWVzdCwgZXJyKVxuXG4gICAgaWYgKGNsaWVudFtrSFRUUDJTZXNzaW9uXSAmJiAhY2xpZW50W2tIVFRQMlNlc3Npb25dLmRlc3Ryb3llZCAmJiAhdGhpcy5jbG9zZWQgJiYgIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICBoMlN0YXRlLnN0cmVhbXMgLT0gMVxuICAgICAgdXRpbC5kZXN0cm95KHN0cmVhbSwgZXJyKVxuICAgIH1cbiAgfSlcblxuICAvLyBzdHJlYW0ub24oJ2Fib3J0ZWQnLCAoKSA9PiB7XG4gIC8vICAgLy8gVE9ETyhIVFRQLzIpOiBTdXBwb3J0IGFib3J0ZWRcbiAgLy8gfSlcblxuICAvLyBzdHJlYW0ub24oJ3RpbWVvdXQnLCAoKSA9PiB7XG4gIC8vICAgLy8gVE9ETyhIVFRQLzIpOiBTdXBwb3J0IHRpbWVvdXRcbiAgLy8gfSlcblxuICAvLyBzdHJlYW0ub24oJ3B1c2gnLCBoZWFkZXJzID0+IHtcbiAgLy8gICAvLyBUT0RPKEhUVFAvMik6IFN1cHBvciBwdXNoXG4gIC8vIH0pXG5cbiAgLy8gc3RyZWFtLm9uKCd0cmFpbGVycycsIGhlYWRlcnMgPT4ge1xuICAvLyAgIC8vIFRPRE8oSFRUUC8yKTogU3VwcG9ydCB0cmFpbGVyc1xuICAvLyB9KVxuXG4gIHJldHVybiB0cnVlXG5cbiAgZnVuY3Rpb24gd3JpdGVCb2R5SDIgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBhc3NlcnRpb24gKi9cbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJlcXVlc3Qub25SZXF1ZXN0U2VudCgpXG4gICAgfSBlbHNlIGlmICh1dGlsLmlzQnVmZmVyKGJvZHkpKSB7XG4gICAgICBhc3NlcnQoY29udGVudExlbmd0aCA9PT0gYm9keS5ieXRlTGVuZ3RoLCAnYnVmZmVyIGJvZHkgbXVzdCBoYXZlIGNvbnRlbnQgbGVuZ3RoJylcbiAgICAgIHN0cmVhbS5jb3JrKClcbiAgICAgIHN0cmVhbS53cml0ZShib2R5KVxuICAgICAgc3RyZWFtLnVuY29yaygpXG4gICAgICBzdHJlYW0uZW5kKClcbiAgICAgIHJlcXVlc3Qub25Cb2R5U2VudChib2R5KVxuICAgICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNCbG9iTGlrZShib2R5KSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5LnN0cmVhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3cml0ZUl0ZXJhYmxlKHtcbiAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgIGgyc3RyZWFtOiBzdHJlYW0sXG4gICAgICAgICAgZXhwZWN0c1BheWxvYWQsXG4gICAgICAgICAgYm9keTogYm9keS5zdHJlYW0oKSxcbiAgICAgICAgICBzb2NrZXQ6IGNsaWVudFtrU29ja2V0XSxcbiAgICAgICAgICBoZWFkZXI6ICcnXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUJsb2Ioe1xuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgY2xpZW50LFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgY29udGVudExlbmd0aCxcbiAgICAgICAgICBleHBlY3RzUGF5bG9hZCxcbiAgICAgICAgICBoMnN0cmVhbTogc3RyZWFtLFxuICAgICAgICAgIGhlYWRlcjogJycsXG4gICAgICAgICAgc29ja2V0OiBjbGllbnRba1NvY2tldF1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgIHdyaXRlU3RyZWFtKHtcbiAgICAgICAgYm9keSxcbiAgICAgICAgY2xpZW50LFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBjb250ZW50TGVuZ3RoLFxuICAgICAgICBleHBlY3RzUGF5bG9hZCxcbiAgICAgICAgc29ja2V0OiBjbGllbnRba1NvY2tldF0sXG4gICAgICAgIGgyc3RyZWFtOiBzdHJlYW0sXG4gICAgICAgIGhlYWRlcjogJydcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh1dGlsLmlzSXRlcmFibGUoYm9keSkpIHtcbiAgICAgIHdyaXRlSXRlcmFibGUoe1xuICAgICAgICBib2R5LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGNvbnRlbnRMZW5ndGgsXG4gICAgICAgIGV4cGVjdHNQYXlsb2FkLFxuICAgICAgICBoZWFkZXI6ICcnLFxuICAgICAgICBoMnN0cmVhbTogc3RyZWFtLFxuICAgICAgICBzb2NrZXQ6IGNsaWVudFtrU29ja2V0XVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KGZhbHNlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZVN0cmVhbSAoeyBoMnN0cmVhbSwgYm9keSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSkge1xuICBhc3NlcnQoY29udGVudExlbmd0aCAhPT0gMCB8fCBjbGllbnRba1J1bm5pbmddID09PSAwLCAnc3RyZWFtIGJvZHkgY2Fubm90IGJlIHBpcGVsaW5lZCcpXG5cbiAgaWYgKGNsaWVudFtrSFRUUENvbm5WZXJzaW9uXSA9PT0gJ2gyJykge1xuICAgIC8vIEZvciBIVFRQLzIsIGlzIGVub3VnaCB0byBwaXBlIHRoZSBzdHJlYW1cbiAgICBjb25zdCBwaXBlID0gcGlwZWxpbmUoXG4gICAgICBib2R5LFxuICAgICAgaDJzdHJlYW0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB1dGlsLmRlc3Ryb3koYm9keSwgZXJyKVxuICAgICAgICAgIHV0aWwuZGVzdHJveShoMnN0cmVhbSwgZXJyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcXVlc3Qub25SZXF1ZXN0U2VudCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG5cbiAgICBwaXBlLm9uKCdkYXRhJywgb25QaXBlRGF0YSlcbiAgICBwaXBlLm9uY2UoJ2VuZCcsICgpID0+IHtcbiAgICAgIHBpcGUucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvblBpcGVEYXRhKVxuICAgICAgdXRpbC5kZXN0cm95KHBpcGUpXG4gICAgfSlcblxuICAgIGZ1bmN0aW9uIG9uUGlwZURhdGEgKGNodW5rKSB7XG4gICAgICByZXF1ZXN0Lm9uQm9keVNlbnQoY2h1bmspXG4gICAgfVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuXG4gIGNvbnN0IHdyaXRlciA9IG5ldyBBc3luY1dyaXRlcih7IHNvY2tldCwgcmVxdWVzdCwgY29udGVudExlbmd0aCwgY2xpZW50LCBleHBlY3RzUGF5bG9hZCwgaGVhZGVyIH0pXG5cbiAgY29uc3Qgb25EYXRhID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCF3cml0ZXIud3JpdGUoY2h1bmspICYmIHRoaXMucGF1c2UpIHtcbiAgICAgICAgdGhpcy5wYXVzZSgpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB1dGlsLmRlc3Ryb3kodGhpcywgZXJyKVxuICAgIH1cbiAgfVxuICBjb25zdCBvbkRyYWluID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChmaW5pc2hlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGJvZHkucmVzdW1lKSB7XG4gICAgICBib2R5LnJlc3VtZSgpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9uQWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgZXJyID0gbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IG9uRmluaXNoZWQoZXJyKSlcbiAgfVxuICBjb25zdCBvbkZpbmlzaGVkID0gZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChmaW5pc2hlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZmluaXNoZWQgPSB0cnVlXG5cbiAgICBhc3NlcnQoc29ja2V0LmRlc3Ryb3llZCB8fCAoc29ja2V0W2tXcml0aW5nXSAmJiBjbGllbnRba1J1bm5pbmddIDw9IDEpKVxuXG4gICAgc29ja2V0XG4gICAgICAub2ZmKCdkcmFpbicsIG9uRHJhaW4pXG4gICAgICAub2ZmKCdlcnJvcicsIG9uRmluaXNoZWQpXG5cbiAgICBib2R5XG4gICAgICAucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbkRhdGEpXG4gICAgICAucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRmluaXNoZWQpXG4gICAgICAucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25GaW5pc2hlZClcbiAgICAgIC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbkFib3J0KVxuXG4gICAgaWYgKCFlcnIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHdyaXRlci5lbmQoKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgZXJyID0gZXJcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZXIuZGVzdHJveShlcnIpXG5cbiAgICBpZiAoZXJyICYmIChlcnIuY29kZSAhPT0gJ1VORF9FUlJfSU5GTycgfHwgZXJyLm1lc3NhZ2UgIT09ICdyZXNldCcpKSB7XG4gICAgICB1dGlsLmRlc3Ryb3koYm9keSwgZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICB1dGlsLmRlc3Ryb3koYm9keSlcbiAgICB9XG4gIH1cblxuICBib2R5XG4gICAgLm9uKCdkYXRhJywgb25EYXRhKVxuICAgIC5vbignZW5kJywgb25GaW5pc2hlZClcbiAgICAub24oJ2Vycm9yJywgb25GaW5pc2hlZClcbiAgICAub24oJ2Nsb3NlJywgb25BYm9ydClcblxuICBpZiAoYm9keS5yZXN1bWUpIHtcbiAgICBib2R5LnJlc3VtZSgpXG4gIH1cblxuICBzb2NrZXRcbiAgICAub24oJ2RyYWluJywgb25EcmFpbilcbiAgICAub24oJ2Vycm9yJywgb25GaW5pc2hlZClcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVCbG9iICh7IGgyc3RyZWFtLCBib2R5LCBjbGllbnQsIHJlcXVlc3QsIHNvY2tldCwgY29udGVudExlbmd0aCwgaGVhZGVyLCBleHBlY3RzUGF5bG9hZCB9KSB7XG4gIGFzc2VydChjb250ZW50TGVuZ3RoID09PSBib2R5LnNpemUsICdibG9iIGJvZHkgbXVzdCBoYXZlIGNvbnRlbnQgbGVuZ3RoJylcblxuICBjb25zdCBpc0gyID0gY2xpZW50W2tIVFRQQ29ublZlcnNpb25dID09PSAnaDInXG4gIHRyeSB7XG4gICAgaWYgKGNvbnRlbnRMZW5ndGggIT0gbnVsbCAmJiBjb250ZW50TGVuZ3RoICE9PSBib2R5LnNpemUpIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKVxuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGF3YWl0IGJvZHkuYXJyYXlCdWZmZXIoKSlcblxuICAgIGlmIChpc0gyKSB7XG4gICAgICBoMnN0cmVhbS5jb3JrKClcbiAgICAgIGgyc3RyZWFtLndyaXRlKGJ1ZmZlcilcbiAgICAgIGgyc3RyZWFtLnVuY29yaygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNvY2tldC5jb3JrKClcbiAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9Y29udGVudC1sZW5ndGg6ICR7Y29udGVudExlbmd0aH1cXHJcXG5cXHJcXG5gLCAnbGF0aW4xJylcbiAgICAgIHNvY2tldC53cml0ZShidWZmZXIpXG4gICAgICBzb2NrZXQudW5jb3JrKClcbiAgICB9XG5cbiAgICByZXF1ZXN0Lm9uQm9keVNlbnQoYnVmZmVyKVxuICAgIHJlcXVlc3Qub25SZXF1ZXN0U2VudCgpXG5cbiAgICBpZiAoIWV4cGVjdHNQYXlsb2FkKSB7XG4gICAgICBzb2NrZXRba1Jlc2V0XSA9IHRydWVcbiAgICB9XG5cbiAgICByZXN1bWUoY2xpZW50KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB1dGlsLmRlc3Ryb3koaXNIMiA/IGgyc3RyZWFtIDogc29ja2V0LCBlcnIpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVJdGVyYWJsZSAoeyBoMnN0cmVhbSwgYm9keSwgY2xpZW50LCByZXF1ZXN0LCBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGhlYWRlciwgZXhwZWN0c1BheWxvYWQgfSkge1xuICBhc3NlcnQoY29udGVudExlbmd0aCAhPT0gMCB8fCBjbGllbnRba1J1bm5pbmddID09PSAwLCAnaXRlcmF0b3IgYm9keSBjYW5ub3QgYmUgcGlwZWxpbmVkJylcblxuICBsZXQgY2FsbGJhY2sgPSBudWxsXG4gIGZ1bmN0aW9uIG9uRHJhaW4gKCkge1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY29uc3QgY2IgPSBjYWxsYmFja1xuICAgICAgY2FsbGJhY2sgPSBudWxsXG4gICAgICBjYigpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgd2FpdEZvckRyYWluID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGFzc2VydChjYWxsYmFjayA9PT0gbnVsbClcblxuICAgIGlmIChzb2NrZXRba0Vycm9yXSkge1xuICAgICAgcmVqZWN0KHNvY2tldFtrRXJyb3JdKVxuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayA9IHJlc29sdmVcbiAgICB9XG4gIH0pXG5cbiAgaWYgKGNsaWVudFtrSFRUUENvbm5WZXJzaW9uXSA9PT0gJ2gyJykge1xuICAgIGgyc3RyZWFtXG4gICAgICAub24oJ2Nsb3NlJywgb25EcmFpbilcbiAgICAgIC5vbignZHJhaW4nLCBvbkRyYWluKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gc29tZWhvdyBhYm9ydCB0aGUgYXN5bmMgaXRlcmFibGUuXG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGJvZHkpIHtcbiAgICAgICAgaWYgKHNvY2tldFtrRXJyb3JdKSB7XG4gICAgICAgICAgdGhyb3cgc29ja2V0W2tFcnJvcl1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcyA9IGgyc3RyZWFtLndyaXRlKGNodW5rKVxuICAgICAgICByZXF1ZXN0Lm9uQm9keVNlbnQoY2h1bmspXG4gICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgYXdhaXQgd2FpdEZvckRyYWluKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaDJzdHJlYW0uZGVzdHJveShlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlcXVlc3Qub25SZXF1ZXN0U2VudCgpXG4gICAgICBoMnN0cmVhbS5lbmQoKVxuICAgICAgaDJzdHJlYW1cbiAgICAgICAgLm9mZignY2xvc2UnLCBvbkRyYWluKVxuICAgICAgICAub2ZmKCdkcmFpbicsIG9uRHJhaW4pXG4gICAgfVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICBzb2NrZXRcbiAgICAub24oJ2Nsb3NlJywgb25EcmFpbilcbiAgICAub24oJ2RyYWluJywgb25EcmFpbilcblxuICBjb25zdCB3cml0ZXIgPSBuZXcgQXN5bmNXcml0ZXIoeyBzb2NrZXQsIHJlcXVlc3QsIGNvbnRlbnRMZW5ndGgsIGNsaWVudCwgZXhwZWN0c1BheWxvYWQsIGhlYWRlciB9KVxuICB0cnkge1xuICAgIC8vIEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gc29tZWhvdyBhYm9ydCB0aGUgYXN5bmMgaXRlcmFibGUuXG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBib2R5KSB7XG4gICAgICBpZiAoc29ja2V0W2tFcnJvcl0pIHtcbiAgICAgICAgdGhyb3cgc29ja2V0W2tFcnJvcl1cbiAgICAgIH1cblxuICAgICAgaWYgKCF3cml0ZXIud3JpdGUoY2h1bmspKSB7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JEcmFpbigpXG4gICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVyLmVuZCgpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHdyaXRlci5kZXN0cm95KGVycilcbiAgfSBmaW5hbGx5IHtcbiAgICBzb2NrZXRcbiAgICAgIC5vZmYoJ2Nsb3NlJywgb25EcmFpbilcbiAgICAgIC5vZmYoJ2RyYWluJywgb25EcmFpbilcbiAgfVxufVxuXG5jbGFzcyBBc3luY1dyaXRlciB7XG4gIGNvbnN0cnVjdG9yICh7IHNvY2tldCwgcmVxdWVzdCwgY29udGVudExlbmd0aCwgY2xpZW50LCBleHBlY3RzUGF5bG9hZCwgaGVhZGVyIH0pIHtcbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldFxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3RcbiAgICB0aGlzLmNvbnRlbnRMZW5ndGggPSBjb250ZW50TGVuZ3RoXG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnRcbiAgICB0aGlzLmJ5dGVzV3JpdHRlbiA9IDBcbiAgICB0aGlzLmV4cGVjdHNQYXlsb2FkID0gZXhwZWN0c1BheWxvYWRcbiAgICB0aGlzLmhlYWRlciA9IGhlYWRlclxuXG4gICAgc29ja2V0W2tXcml0aW5nXSA9IHRydWVcbiAgfVxuXG4gIHdyaXRlIChjaHVuaykge1xuICAgIGNvbnN0IHsgc29ja2V0LCByZXF1ZXN0LCBjb250ZW50TGVuZ3RoLCBjbGllbnQsIGJ5dGVzV3JpdHRlbiwgZXhwZWN0c1BheWxvYWQsIGhlYWRlciB9ID0gdGhpc1xuXG4gICAgaWYgKHNvY2tldFtrRXJyb3JdKSB7XG4gICAgICB0aHJvdyBzb2NrZXRba0Vycm9yXVxuICAgIH1cblxuICAgIGlmIChzb2NrZXQuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBsZW4gPSBCdWZmZXIuYnl0ZUxlbmd0aChjaHVuaylcbiAgICBpZiAoIWxlbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICAvLyBXZSBzaG91bGQgZGVmZXIgd3JpdGluZyBjaHVua3MuXG4gICAgaWYgKGNvbnRlbnRMZW5ndGggIT09IG51bGwgJiYgYnl0ZXNXcml0dGVuICsgbGVuID4gY29udGVudExlbmd0aCkge1xuICAgICAgaWYgKGNsaWVudFtrU3RyaWN0Q29udGVudExlbmd0aF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpXG4gICAgICB9XG5cbiAgICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcobmV3IFJlcXVlc3RDb250ZW50TGVuZ3RoTWlzbWF0Y2hFcnJvcigpKVxuICAgIH1cblxuICAgIHNvY2tldC5jb3JrKClcblxuICAgIGlmIChieXRlc1dyaXR0ZW4gPT09IDApIHtcbiAgICAgIGlmICghZXhwZWN0c1BheWxvYWQpIHtcbiAgICAgICAgc29ja2V0W2tSZXNldF0gPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjb250ZW50TGVuZ3RoID09PSBudWxsKSB7XG4gICAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9dHJhbnNmZXItZW5jb2Rpbmc6IGNodW5rZWRcXHJcXG5gLCAnbGF0aW4xJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9Y29udGVudC1sZW5ndGg6ICR7Y29udGVudExlbmd0aH1cXHJcXG5cXHJcXG5gLCAnbGF0aW4xJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29udGVudExlbmd0aCA9PT0gbnVsbCkge1xuICAgICAgc29ja2V0LndyaXRlKGBcXHJcXG4ke2xlbi50b1N0cmluZygxNil9XFxyXFxuYCwgJ2xhdGluMScpXG4gICAgfVxuXG4gICAgdGhpcy5ieXRlc1dyaXR0ZW4gKz0gbGVuXG5cbiAgICBjb25zdCByZXQgPSBzb2NrZXQud3JpdGUoY2h1bmspXG5cbiAgICBzb2NrZXQudW5jb3JrKClcblxuICAgIHJlcXVlc3Qub25Cb2R5U2VudChjaHVuaylcblxuICAgIGlmICghcmV0KSB7XG4gICAgICBpZiAoc29ja2V0W2tQYXJzZXJdLnRpbWVvdXQgJiYgc29ja2V0W2tQYXJzZXJdLnRpbWVvdXRUeXBlID09PSBUSU1FT1VUX0hFQURFUlMpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2U6IG9ubHkgZm9yIGplc3RcbiAgICAgICAgaWYgKHNvY2tldFtrUGFyc2VyXS50aW1lb3V0LnJlZnJlc2gpIHtcbiAgICAgICAgICBzb2NrZXRba1BhcnNlcl0udGltZW91dC5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIGVuZCAoKSB7XG4gICAgY29uc3QgeyBzb2NrZXQsIGNvbnRlbnRMZW5ndGgsIGNsaWVudCwgYnl0ZXNXcml0dGVuLCBleHBlY3RzUGF5bG9hZCwgaGVhZGVyLCByZXF1ZXN0IH0gPSB0aGlzXG4gICAgcmVxdWVzdC5vblJlcXVlc3RTZW50KClcblxuICAgIHNvY2tldFtrV3JpdGluZ10gPSBmYWxzZVxuXG4gICAgaWYgKHNvY2tldFtrRXJyb3JdKSB7XG4gICAgICB0aHJvdyBzb2NrZXRba0Vycm9yXVxuICAgIH1cblxuICAgIGlmIChzb2NrZXQuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYnl0ZXNXcml0dGVuID09PSAwKSB7XG4gICAgICBpZiAoZXhwZWN0c1BheWxvYWQpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjMuMlxuICAgICAgICAvLyBBIHVzZXIgYWdlbnQgU0hPVUxEIHNlbmQgYSBDb250ZW50LUxlbmd0aCBpbiBhIHJlcXVlc3QgbWVzc2FnZSB3aGVuXG4gICAgICAgIC8vIG5vIFRyYW5zZmVyLUVuY29kaW5nIGlzIHNlbnQgYW5kIHRoZSByZXF1ZXN0IG1ldGhvZCBkZWZpbmVzIGEgbWVhbmluZ1xuICAgICAgICAvLyBmb3IgYW4gZW5jbG9zZWQgcGF5bG9hZCBib2R5LlxuXG4gICAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9Y29udGVudC1sZW5ndGg6IDBcXHJcXG5cXHJcXG5gLCAnbGF0aW4xJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvY2tldC53cml0ZShgJHtoZWFkZXJ9XFxyXFxuYCwgJ2xhdGluMScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250ZW50TGVuZ3RoID09PSBudWxsKSB7XG4gICAgICBzb2NrZXQud3JpdGUoJ1xcclxcbjBcXHJcXG5cXHJcXG4nLCAnbGF0aW4xJylcbiAgICB9XG5cbiAgICBpZiAoY29udGVudExlbmd0aCAhPT0gbnVsbCAmJiBieXRlc1dyaXR0ZW4gIT09IGNvbnRlbnRMZW5ndGgpIHtcbiAgICAgIGlmIChjbGllbnRba1N0cmljdENvbnRlbnRMZW5ndGhdKSB7XG4gICAgICAgIHRocm93IG5ldyBSZXF1ZXN0Q29udGVudExlbmd0aE1pc21hdGNoRXJyb3IoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbWl0V2FybmluZyhuZXcgUmVxdWVzdENvbnRlbnRMZW5ndGhNaXNtYXRjaEVycm9yKCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNvY2tldFtrUGFyc2VyXS50aW1lb3V0ICYmIHNvY2tldFtrUGFyc2VyXS50aW1lb3V0VHlwZSA9PT0gVElNRU9VVF9IRUFERVJTKSB7XG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogb25seSBmb3IgamVzdFxuICAgICAgaWYgKHNvY2tldFtrUGFyc2VyXS50aW1lb3V0LnJlZnJlc2gpIHtcbiAgICAgICAgc29ja2V0W2tQYXJzZXJdLnRpbWVvdXQucmVmcmVzaCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVzdW1lKGNsaWVudClcbiAgfVxuXG4gIGRlc3Ryb3kgKGVycikge1xuICAgIGNvbnN0IHsgc29ja2V0LCBjbGllbnQgfSA9IHRoaXNcblxuICAgIHNvY2tldFtrV3JpdGluZ10gPSBmYWxzZVxuXG4gICAgaWYgKGVycikge1xuICAgICAgYXNzZXJ0KGNsaWVudFtrUnVubmluZ10gPD0gMSwgJ3BpcGVsaW5lIHNob3VsZCBvbmx5IGNvbnRhaW4gdGhpcyByZXF1ZXN0JylcbiAgICAgIHV0aWwuZGVzdHJveShzb2NrZXQsIGVycilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZXJyb3JSZXF1ZXN0IChjbGllbnQsIHJlcXVlc3QsIGVycikge1xuICB0cnkge1xuICAgIHJlcXVlc3Qub25FcnJvcihlcnIpXG4gICAgYXNzZXJ0KHJlcXVlc3QuYWJvcnRlZClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2xpZW50LmVtaXQoJ2Vycm9yJywgZXJyKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ2xpZW50XG4iLCAiLyogZXNsaW50LWRpc2FibGUgKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8vIEV4dHJhY3RlZCBmcm9tIG5vZGUvbGliL2ludGVybmFsL2ZpeGVkX3F1ZXVlLmpzXG5cbi8vIEN1cnJlbnRseSBvcHRpbWFsIHF1ZXVlIHNpemUsIHRlc3RlZCBvbiBWOCA2LjAgLSA2LjYuIE11c3QgYmUgcG93ZXIgb2YgdHdvLlxuY29uc3Qga1NpemUgPSAyMDQ4O1xuY29uc3Qga01hc2sgPSBrU2l6ZSAtIDE7XG5cbi8vIFRoZSBGaXhlZFF1ZXVlIGlzIGltcGxlbWVudGVkIGFzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIGZpeGVkLXNpemVcbi8vIGNpcmN1bGFyIGJ1ZmZlcnMuIEl0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gIGhlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbFxuLy8gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4vLyAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZcbi8vICstLS0tLS0tLS0tLSsgPC0tLS0tXFwgICAgICAgKy0tLS0tLS0tLS0tKyA8LS0tLS0tXFwgICAgICAgICArLS0tLS0tLS0tLS0rXG4vLyB8ICBbbnVsbF0gICB8ICAgICAgICBcXC0tLS0tIHwgICBuZXh0ICAgIHwgICAgICAgICBcXC0tLS0tLS0gfCAgIG5leHQgICAgfFxuLy8gKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4vLyB8ICAgaXRlbSAgICB8IDwtLSBib3R0b20gICAgfCAgIGl0ZW0gICAgfCA8LS0gYm90dG9tICAgICAgIHwgIFtlbXB0eV0gIHxcbi8vIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgfCAgW2VtcHR5XSAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICBbZW1wdHldICB8XG4vLyB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgIHwgIFtlbXB0eV0gIHxcbi8vIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgIGJvdHRvbSAtLT4gfCAgIGl0ZW0gICAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyB8ICAgIC4uLiAgICB8ICAgICAgICAgICAgICAgfCAgICAuLi4gICAgfCAgICAgICAgICAgICAgICAgIHwgICAgLi4uICAgIHxcbi8vIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHwgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyB8ICBbZW1wdHldICB8IDwtLSB0b3AgICAgICAgfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHxcbi8vIHwgIFtlbXB0eV0gIHwgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8ICAgICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfFxuLy8gfCAgW2VtcHR5XSAgfCAgICAgICAgICAgICAgIHwgIFtlbXB0eV0gIHwgPC0tIHRvcCAgdG9wIC0tPiB8ICBbZW1wdHldICB8XG4vLyArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbi8vXG4vLyBPciwgaWYgdGhlcmUgaXMgb25seSBvbmUgY2lyY3VsYXIgYnVmZmVyLCBpdCBsb29rcyBzb21ldGhpbmdcbi8vIGxpa2UgZWl0aGVyIG9mIHRoZXNlOlxuLy9cbi8vICBoZWFkICAgdGFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQgICB0YWlsXG4vLyAgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHxcbi8vICAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgdlxuLy8gKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4vLyB8ICBbbnVsbF0gICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFtudWxsXSAgIHxcbi8vICstLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuLy8gfCAgW2VtcHR5XSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgaXRlbSAgICB8XG4vLyB8ICBbZW1wdHldICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBpdGVtICAgIHxcbi8vIHwgICBpdGVtICAgIHwgPC0tIGJvdHRvbSAgICAgICAgICAgIHRvcCAtLT4gfCAgW2VtcHR5XSAgfFxuLy8gfCAgIGl0ZW0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBbZW1wdHldICB8XG4vLyB8ICBbZW1wdHldICB8IDwtLSB0b3AgICAgICAgICAgICBib3R0b20gLS0+IHwgICBpdGVtICAgIHxcbi8vIHwgIFtlbXB0eV0gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGl0ZW0gICAgfFxuLy8gKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4vL1xuLy8gQWRkaW5nIGEgdmFsdWUgbWVhbnMgbW92aW5nIGB0b3BgIGZvcndhcmQgYnkgb25lLCByZW1vdmluZyBtZWFuc1xuLy8gbW92aW5nIGBib3R0b21gIGZvcndhcmQgYnkgb25lLiBBZnRlciByZWFjaGluZyB0aGUgZW5kLCB0aGUgcXVldWVcbi8vIHdyYXBzIGFyb3VuZC5cbi8vXG4vLyBXaGVuIGB0b3AgPT09IGJvdHRvbWAgdGhlIGN1cnJlbnQgcXVldWUgaXMgZW1wdHkgYW5kIHdoZW5cbi8vIGB0b3AgKyAxID09PSBib3R0b21gIGl0J3MgZnVsbC4gVGhpcyB3YXN0ZXMgYSBzaW5nbGUgc3BhY2Ugb2Ygc3RvcmFnZVxuLy8gYnV0IGFsbG93cyBtdWNoIHF1aWNrZXIgY2hlY2tzLlxuXG5jbGFzcyBGaXhlZENpcmN1bGFyQnVmZmVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5ib3R0b20gPSAwO1xuICAgIHRoaXMudG9wID0gMDtcbiAgICB0aGlzLmxpc3QgPSBuZXcgQXJyYXkoa1NpemUpO1xuICAgIHRoaXMubmV4dCA9IG51bGw7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnRvcCA9PT0gdGhpcy5ib3R0b207XG4gIH1cblxuICBpc0Z1bGwoKSB7XG4gICAgcmV0dXJuICgodGhpcy50b3AgKyAxKSAmIGtNYXNrKSA9PT0gdGhpcy5ib3R0b207XG4gIH1cblxuICBwdXNoKGRhdGEpIHtcbiAgICB0aGlzLmxpc3RbdGhpcy50b3BdID0gZGF0YTtcbiAgICB0aGlzLnRvcCA9ICh0aGlzLnRvcCArIDEpICYga01hc2s7XG4gIH1cblxuICBzaGlmdCgpIHtcbiAgICBjb25zdCBuZXh0SXRlbSA9IHRoaXMubGlzdFt0aGlzLmJvdHRvbV07XG4gICAgaWYgKG5leHRJdGVtID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB0aGlzLmxpc3RbdGhpcy5ib3R0b21dID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYm90dG9tID0gKHRoaXMuYm90dG9tICsgMSkgJiBrTWFzaztcbiAgICByZXR1cm4gbmV4dEl0ZW07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBGaXhlZFF1ZXVlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbmV3IEZpeGVkQ2lyY3VsYXJCdWZmZXIoKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZC5pc0VtcHR5KCk7XG4gIH1cblxuICBwdXNoKGRhdGEpIHtcbiAgICBpZiAodGhpcy5oZWFkLmlzRnVsbCgpKSB7XG4gICAgICAvLyBIZWFkIGlzIGZ1bGw6IENyZWF0ZXMgYSBuZXcgcXVldWUsIHNldHMgdGhlIG9sZCBxdWV1ZSdzIGAubmV4dGAgdG8gaXQsXG4gICAgICAvLyBhbmQgc2V0cyBpdCBhcyB0aGUgbmV3IG1haW4gcXVldWUuXG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dCA9IG5ldyBGaXhlZENpcmN1bGFyQnVmZmVyKCk7XG4gICAgfVxuICAgIHRoaXMuaGVhZC5wdXNoKGRhdGEpO1xuICB9XG5cbiAgc2hpZnQoKSB7XG4gICAgY29uc3QgdGFpbCA9IHRoaXMudGFpbDtcbiAgICBjb25zdCBuZXh0ID0gdGFpbC5zaGlmdCgpO1xuICAgIGlmICh0YWlsLmlzRW1wdHkoKSAmJiB0YWlsLm5leHQgIT09IG51bGwpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGFub3RoZXIgcXVldWUsIGl0IGZvcm1zIHRoZSBuZXcgdGFpbC5cbiAgICAgIHRoaXMudGFpbCA9IHRhaWwubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cbn07XG4iLCAiY29uc3QgeyBrRnJlZSwga0Nvbm5lY3RlZCwga1BlbmRpbmcsIGtRdWV1ZWQsIGtSdW5uaW5nLCBrU2l6ZSB9ID0gcmVxdWlyZSgnLi9jb3JlL3N5bWJvbHMnKVxuY29uc3Qga1Bvb2wgPSBTeW1ib2woJ3Bvb2wnKVxuXG5jbGFzcyBQb29sU3RhdHMge1xuICBjb25zdHJ1Y3RvciAocG9vbCkge1xuICAgIHRoaXNba1Bvb2xdID0gcG9vbFxuICB9XG5cbiAgZ2V0IGNvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1Bvb2xdW2tDb25uZWN0ZWRdXG4gIH1cblxuICBnZXQgZnJlZSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1Bvb2xdW2tGcmVlXVxuICB9XG5cbiAgZ2V0IHBlbmRpbmcgKCkge1xuICAgIHJldHVybiB0aGlzW2tQb29sXVtrUGVuZGluZ11cbiAgfVxuXG4gIGdldCBxdWV1ZWQgKCkge1xuICAgIHJldHVybiB0aGlzW2tQb29sXVtrUXVldWVkXVxuICB9XG5cbiAgZ2V0IHJ1bm5pbmcgKCkge1xuICAgIHJldHVybiB0aGlzW2tQb29sXVtrUnVubmluZ11cbiAgfVxuXG4gIGdldCBzaXplICgpIHtcbiAgICByZXR1cm4gdGhpc1trUG9vbF1ba1NpemVdXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQb29sU3RhdHNcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgRGlzcGF0Y2hlckJhc2UgPSByZXF1aXJlKCcuL2Rpc3BhdGNoZXItYmFzZScpXG5jb25zdCBGaXhlZFF1ZXVlID0gcmVxdWlyZSgnLi9ub2RlL2ZpeGVkLXF1ZXVlJylcbmNvbnN0IHsga0Nvbm5lY3RlZCwga1NpemUsIGtSdW5uaW5nLCBrUGVuZGluZywga1F1ZXVlZCwga0J1c3ksIGtGcmVlLCBrVXJsLCBrQ2xvc2UsIGtEZXN0cm95LCBrRGlzcGF0Y2ggfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcbmNvbnN0IFBvb2xTdGF0cyA9IHJlcXVpcmUoJy4vcG9vbC1zdGF0cycpXG5cbmNvbnN0IGtDbGllbnRzID0gU3ltYm9sKCdjbGllbnRzJylcbmNvbnN0IGtOZWVkRHJhaW4gPSBTeW1ib2woJ25lZWREcmFpbicpXG5jb25zdCBrUXVldWUgPSBTeW1ib2woJ3F1ZXVlJylcbmNvbnN0IGtDbG9zZWRSZXNvbHZlID0gU3ltYm9sKCdjbG9zZWQgcmVzb2x2ZScpXG5jb25zdCBrT25EcmFpbiA9IFN5bWJvbCgnb25EcmFpbicpXG5jb25zdCBrT25Db25uZWN0ID0gU3ltYm9sKCdvbkNvbm5lY3QnKVxuY29uc3Qga09uRGlzY29ubmVjdCA9IFN5bWJvbCgnb25EaXNjb25uZWN0JylcbmNvbnN0IGtPbkNvbm5lY3Rpb25FcnJvciA9IFN5bWJvbCgnb25Db25uZWN0aW9uRXJyb3InKVxuY29uc3Qga0dldERpc3BhdGNoZXIgPSBTeW1ib2woJ2dldCBkaXNwYXRjaGVyJylcbmNvbnN0IGtBZGRDbGllbnQgPSBTeW1ib2woJ2FkZCBjbGllbnQnKVxuY29uc3Qga1JlbW92ZUNsaWVudCA9IFN5bWJvbCgncmVtb3ZlIGNsaWVudCcpXG5jb25zdCBrU3RhdHMgPSBTeW1ib2woJ3N0YXRzJylcblxuY2xhc3MgUG9vbEJhc2UgZXh0ZW5kcyBEaXNwYXRjaGVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzW2tRdWV1ZV0gPSBuZXcgRml4ZWRRdWV1ZSgpXG4gICAgdGhpc1trQ2xpZW50c10gPSBbXVxuICAgIHRoaXNba1F1ZXVlZF0gPSAwXG5cbiAgICBjb25zdCBwb29sID0gdGhpc1xuXG4gICAgdGhpc1trT25EcmFpbl0gPSBmdW5jdGlvbiBvbkRyYWluIChvcmlnaW4sIHRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHF1ZXVlID0gcG9vbFtrUXVldWVdXG5cbiAgICAgIGxldCBuZWVkRHJhaW4gPSBmYWxzZVxuXG4gICAgICB3aGlsZSAoIW5lZWREcmFpbikge1xuICAgICAgICBjb25zdCBpdGVtID0gcXVldWUuc2hpZnQoKVxuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHBvb2xba1F1ZXVlZF0tLVxuICAgICAgICBuZWVkRHJhaW4gPSAhdGhpcy5kaXNwYXRjaChpdGVtLm9wdHMsIGl0ZW0uaGFuZGxlcilcbiAgICAgIH1cblxuICAgICAgdGhpc1trTmVlZERyYWluXSA9IG5lZWREcmFpblxuXG4gICAgICBpZiAoIXRoaXNba05lZWREcmFpbl0gJiYgcG9vbFtrTmVlZERyYWluXSkge1xuICAgICAgICBwb29sW2tOZWVkRHJhaW5dID0gZmFsc2VcbiAgICAgICAgcG9vbC5lbWl0KCdkcmFpbicsIG9yaWdpbiwgW3Bvb2wsIC4uLnRhcmdldHNdKVxuICAgICAgfVxuXG4gICAgICBpZiAocG9vbFtrQ2xvc2VkUmVzb2x2ZV0gJiYgcXVldWUuaXNFbXB0eSgpKSB7XG4gICAgICAgIFByb21pc2VcbiAgICAgICAgICAuYWxsKHBvb2xba0NsaWVudHNdLm1hcChjID0+IGMuY2xvc2UoKSkpXG4gICAgICAgICAgLnRoZW4ocG9vbFtrQ2xvc2VkUmVzb2x2ZV0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpc1trT25Db25uZWN0XSA9IChvcmlnaW4sIHRhcmdldHMpID0+IHtcbiAgICAgIHBvb2wuZW1pdCgnY29ubmVjdCcsIG9yaWdpbiwgW3Bvb2wsIC4uLnRhcmdldHNdKVxuICAgIH1cblxuICAgIHRoaXNba09uRGlzY29ubmVjdF0gPSAob3JpZ2luLCB0YXJnZXRzLCBlcnIpID0+IHtcbiAgICAgIHBvb2wuZW1pdCgnZGlzY29ubmVjdCcsIG9yaWdpbiwgW3Bvb2wsIC4uLnRhcmdldHNdLCBlcnIpXG4gICAgfVxuXG4gICAgdGhpc1trT25Db25uZWN0aW9uRXJyb3JdID0gKG9yaWdpbiwgdGFyZ2V0cywgZXJyKSA9PiB7XG4gICAgICBwb29sLmVtaXQoJ2Nvbm5lY3Rpb25FcnJvcicsIG9yaWdpbiwgW3Bvb2wsIC4uLnRhcmdldHNdLCBlcnIpXG4gICAgfVxuXG4gICAgdGhpc1trU3RhdHNdID0gbmV3IFBvb2xTdGF0cyh0aGlzKVxuICB9XG5cbiAgZ2V0IFtrQnVzeV0gKCkge1xuICAgIHJldHVybiB0aGlzW2tOZWVkRHJhaW5dXG4gIH1cblxuICBnZXQgW2tDb25uZWN0ZWRdICgpIHtcbiAgICByZXR1cm4gdGhpc1trQ2xpZW50c10uZmlsdGVyKGNsaWVudCA9PiBjbGllbnRba0Nvbm5lY3RlZF0pLmxlbmd0aFxuICB9XG5cbiAgZ2V0IFtrRnJlZV0gKCkge1xuICAgIHJldHVybiB0aGlzW2tDbGllbnRzXS5maWx0ZXIoY2xpZW50ID0+IGNsaWVudFtrQ29ubmVjdGVkXSAmJiAhY2xpZW50W2tOZWVkRHJhaW5dKS5sZW5ndGhcbiAgfVxuXG4gIGdldCBba1BlbmRpbmddICgpIHtcbiAgICBsZXQgcmV0ID0gdGhpc1trUXVldWVkXVxuICAgIGZvciAoY29uc3QgeyBba1BlbmRpbmddOiBwZW5kaW5nIH0gb2YgdGhpc1trQ2xpZW50c10pIHtcbiAgICAgIHJldCArPSBwZW5kaW5nXG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIGdldCBba1J1bm5pbmddICgpIHtcbiAgICBsZXQgcmV0ID0gMFxuICAgIGZvciAoY29uc3QgeyBba1J1bm5pbmddOiBydW5uaW5nIH0gb2YgdGhpc1trQ2xpZW50c10pIHtcbiAgICAgIHJldCArPSBydW5uaW5nXG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIGdldCBba1NpemVdICgpIHtcbiAgICBsZXQgcmV0ID0gdGhpc1trUXVldWVkXVxuICAgIGZvciAoY29uc3QgeyBba1NpemVdOiBzaXplIH0gb2YgdGhpc1trQ2xpZW50c10pIHtcbiAgICAgIHJldCArPSBzaXplXG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIGdldCBzdGF0cyAoKSB7XG4gICAgcmV0dXJuIHRoaXNba1N0YXRzXVxuICB9XG5cbiAgYXN5bmMgW2tDbG9zZV0gKCkge1xuICAgIGlmICh0aGlzW2tRdWV1ZV0uaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpc1trQ2xpZW50c10ubWFwKGMgPT4gYy5jbG9zZSgpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHRoaXNba0Nsb3NlZFJlc29sdmVdID0gcmVzb2x2ZVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBba0Rlc3Ryb3ldIChlcnIpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXNba1F1ZXVlXS5zaGlmdCgpXG4gICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGl0ZW0uaGFuZGxlci5vbkVycm9yKGVycilcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpc1trQ2xpZW50c10ubWFwKGMgPT4gYy5kZXN0cm95KGVycikpKVxuICB9XG5cbiAgW2tEaXNwYXRjaF0gKG9wdHMsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBkaXNwYXRjaGVyID0gdGhpc1trR2V0RGlzcGF0Y2hlcl0oKVxuXG4gICAgaWYgKCFkaXNwYXRjaGVyKSB7XG4gICAgICB0aGlzW2tOZWVkRHJhaW5dID0gdHJ1ZVxuICAgICAgdGhpc1trUXVldWVdLnB1c2goeyBvcHRzLCBoYW5kbGVyIH0pXG4gICAgICB0aGlzW2tRdWV1ZWRdKytcbiAgICB9IGVsc2UgaWYgKCFkaXNwYXRjaGVyLmRpc3BhdGNoKG9wdHMsIGhhbmRsZXIpKSB7XG4gICAgICBkaXNwYXRjaGVyW2tOZWVkRHJhaW5dID0gdHJ1ZVxuICAgICAgdGhpc1trTmVlZERyYWluXSA9ICF0aGlzW2tHZXREaXNwYXRjaGVyXSgpXG4gICAgfVxuXG4gICAgcmV0dXJuICF0aGlzW2tOZWVkRHJhaW5dXG4gIH1cblxuICBba0FkZENsaWVudF0gKGNsaWVudCkge1xuICAgIGNsaWVudFxuICAgICAgLm9uKCdkcmFpbicsIHRoaXNba09uRHJhaW5dKVxuICAgICAgLm9uKCdjb25uZWN0JywgdGhpc1trT25Db25uZWN0XSlcbiAgICAgIC5vbignZGlzY29ubmVjdCcsIHRoaXNba09uRGlzY29ubmVjdF0pXG4gICAgICAub24oJ2Nvbm5lY3Rpb25FcnJvcicsIHRoaXNba09uQ29ubmVjdGlvbkVycm9yXSlcblxuICAgIHRoaXNba0NsaWVudHNdLnB1c2goY2xpZW50KVxuXG4gICAgaWYgKHRoaXNba05lZWREcmFpbl0pIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBpZiAodGhpc1trTmVlZERyYWluXSkge1xuICAgICAgICAgIHRoaXNba09uRHJhaW5dKGNsaWVudFtrVXJsXSwgW3RoaXMsIGNsaWVudF0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIFtrUmVtb3ZlQ2xpZW50XSAoY2xpZW50KSB7XG4gICAgY2xpZW50LmNsb3NlKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXNba0NsaWVudHNdLmluZGV4T2YoY2xpZW50KVxuICAgICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgdGhpc1trQ2xpZW50c10uc3BsaWNlKGlkeCwgMSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpc1trTmVlZERyYWluXSA9IHRoaXNba0NsaWVudHNdLnNvbWUoZGlzcGF0Y2hlciA9PiAoXG4gICAgICAhZGlzcGF0Y2hlcltrTmVlZERyYWluXSAmJlxuICAgICAgZGlzcGF0Y2hlci5jbG9zZWQgIT09IHRydWUgJiZcbiAgICAgIGRpc3BhdGNoZXIuZGVzdHJveWVkICE9PSB0cnVlXG4gICAgKSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgUG9vbEJhc2UsXG4gIGtDbGllbnRzLFxuICBrTmVlZERyYWluLFxuICBrQWRkQ2xpZW50LFxuICBrUmVtb3ZlQ2xpZW50LFxuICBrR2V0RGlzcGF0Y2hlclxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIFBvb2xCYXNlLFxuICBrQ2xpZW50cyxcbiAga05lZWREcmFpbixcbiAga0FkZENsaWVudCxcbiAga0dldERpc3BhdGNoZXJcbn0gPSByZXF1aXJlKCcuL3Bvb2wtYmFzZScpXG5jb25zdCBDbGllbnQgPSByZXF1aXJlKCcuL2NsaWVudCcpXG5jb25zdCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yXG59ID0gcmVxdWlyZSgnLi9jb3JlL2Vycm9ycycpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBrVXJsLCBrSW50ZXJjZXB0b3JzIH0gPSByZXF1aXJlKCcuL2NvcmUvc3ltYm9scycpXG5jb25zdCBidWlsZENvbm5lY3RvciA9IHJlcXVpcmUoJy4vY29yZS9jb25uZWN0JylcblxuY29uc3Qga09wdGlvbnMgPSBTeW1ib2woJ29wdGlvbnMnKVxuY29uc3Qga0Nvbm5lY3Rpb25zID0gU3ltYm9sKCdjb25uZWN0aW9ucycpXG5jb25zdCBrRmFjdG9yeSA9IFN5bWJvbCgnZmFjdG9yeScpXG5cbmZ1bmN0aW9uIGRlZmF1bHRGYWN0b3J5IChvcmlnaW4sIG9wdHMpIHtcbiAgcmV0dXJuIG5ldyBDbGllbnQob3JpZ2luLCBvcHRzKVxufVxuXG5jbGFzcyBQb29sIGV4dGVuZHMgUG9vbEJhc2Uge1xuICBjb25zdHJ1Y3RvciAob3JpZ2luLCB7XG4gICAgY29ubmVjdGlvbnMsXG4gICAgZmFjdG9yeSA9IGRlZmF1bHRGYWN0b3J5LFxuICAgIGNvbm5lY3QsXG4gICAgY29ubmVjdFRpbWVvdXQsXG4gICAgdGxzLFxuICAgIG1heENhY2hlZFNlc3Npb25zLFxuICAgIHNvY2tldFBhdGgsXG4gICAgYXV0b1NlbGVjdEZhbWlseSxcbiAgICBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQsXG4gICAgYWxsb3dIMixcbiAgICAuLi5vcHRpb25zXG4gIH0gPSB7fSkge1xuICAgIHN1cGVyKClcblxuICAgIGlmIChjb25uZWN0aW9ucyAhPSBudWxsICYmICghTnVtYmVyLmlzRmluaXRlKGNvbm5lY3Rpb25zKSB8fCBjb25uZWN0aW9ucyA8IDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgY29ubmVjdGlvbnMnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmFjdG9yeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdmYWN0b3J5IG11c3QgYmUgYSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIGlmIChjb25uZWN0ICE9IG51bGwgJiYgdHlwZW9mIGNvbm5lY3QgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGNvbm5lY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Nvbm5lY3QgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25uZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25uZWN0ID0gYnVpbGRDb25uZWN0b3Ioe1xuICAgICAgICAuLi50bHMsXG4gICAgICAgIG1heENhY2hlZFNlc3Npb25zLFxuICAgICAgICBhbGxvd0gyLFxuICAgICAgICBzb2NrZXRQYXRoLFxuICAgICAgICB0aW1lb3V0OiBjb25uZWN0VGltZW91dCxcbiAgICAgICAgLi4uKHV0aWwubm9kZUhhc0F1dG9TZWxlY3RGYW1pbHkgJiYgYXV0b1NlbGVjdEZhbWlseSA/IHsgYXV0b1NlbGVjdEZhbWlseSwgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0IH0gOiB1bmRlZmluZWQpLFxuICAgICAgICAuLi5jb25uZWN0XG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXNba0ludGVyY2VwdG9yc10gPSBvcHRpb25zLmludGVyY2VwdG9ycyAmJiBvcHRpb25zLmludGVyY2VwdG9ycy5Qb29sICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbnRlcmNlcHRvcnMuUG9vbClcbiAgICAgID8gb3B0aW9ucy5pbnRlcmNlcHRvcnMuUG9vbFxuICAgICAgOiBbXVxuICAgIHRoaXNba0Nvbm5lY3Rpb25zXSA9IGNvbm5lY3Rpb25zIHx8IG51bGxcbiAgICB0aGlzW2tVcmxdID0gdXRpbC5wYXJzZU9yaWdpbihvcmlnaW4pXG4gICAgdGhpc1trT3B0aW9uc10gPSB7IC4uLnV0aWwuZGVlcENsb25lKG9wdGlvbnMpLCBjb25uZWN0LCBhbGxvd0gyIH1cbiAgICB0aGlzW2tPcHRpb25zXS5pbnRlcmNlcHRvcnMgPSBvcHRpb25zLmludGVyY2VwdG9yc1xuICAgICAgPyB7IC4uLm9wdGlvbnMuaW50ZXJjZXB0b3JzIH1cbiAgICAgIDogdW5kZWZpbmVkXG4gICAgdGhpc1trRmFjdG9yeV0gPSBmYWN0b3J5XG5cbiAgICB0aGlzLm9uKCdjb25uZWN0aW9uRXJyb3InLCAob3JpZ2luLCB0YXJnZXRzLCBlcnJvcikgPT4ge1xuICAgICAgLy8gSWYgYSBjb25uZWN0aW9uIGVycm9yIG9jY3Vycywgd2UgcmVtb3ZlIHRoZSBjbGllbnQgZnJvbSB0aGUgcG9vbCxcbiAgICAgIC8vIGFuZCBlbWl0IGEgY29ubmVjdGlvbkVycm9yIGV2ZW50LiBUaGV5IHdpbGwgbm90IGJlIHJlLXVzZWQuXG4gICAgICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9pc3N1ZXMvMzg5NVxuICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGtSZW1vdmVDbGllbnQgaGVyZSwgYXMgaXQgd2lsbCBjbG9zZSB0aGUgY2xpZW50LFxuICAgICAgICAvLyBidXQgdGhlIGNsaWVudCBjYW5ub3QgYmUgY2xvc2VkIGluIHRoaXMgc3RhdGUuXG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXNba0NsaWVudHNdLmluZGV4T2YodGFyZ2V0KVxuICAgICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXNba0NsaWVudHNdLnNwbGljZShpZHgsIDEpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgW2tHZXREaXNwYXRjaGVyXSAoKSB7XG4gICAgbGV0IGRpc3BhdGNoZXIgPSB0aGlzW2tDbGllbnRzXS5maW5kKGRpc3BhdGNoZXIgPT4gIWRpc3BhdGNoZXJba05lZWREcmFpbl0pXG5cbiAgICBpZiAoZGlzcGF0Y2hlcikge1xuICAgICAgcmV0dXJuIGRpc3BhdGNoZXJcbiAgICB9XG5cbiAgICBpZiAoIXRoaXNba0Nvbm5lY3Rpb25zXSB8fCB0aGlzW2tDbGllbnRzXS5sZW5ndGggPCB0aGlzW2tDb25uZWN0aW9uc10pIHtcbiAgICAgIGRpc3BhdGNoZXIgPSB0aGlzW2tGYWN0b3J5XSh0aGlzW2tVcmxdLCB0aGlzW2tPcHRpb25zXSlcbiAgICAgIHRoaXNba0FkZENsaWVudF0oZGlzcGF0Y2hlcilcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGF0Y2hlclxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUG9vbFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIEJhbGFuY2VkUG9vbE1pc3NpbmdVcHN0cmVhbUVycm9yLFxuICBJbnZhbGlkQXJndW1lbnRFcnJvclxufSA9IHJlcXVpcmUoJy4vY29yZS9lcnJvcnMnKVxuY29uc3Qge1xuICBQb29sQmFzZSxcbiAga0NsaWVudHMsXG4gIGtOZWVkRHJhaW4sXG4gIGtBZGRDbGllbnQsXG4gIGtSZW1vdmVDbGllbnQsXG4gIGtHZXREaXNwYXRjaGVyXG59ID0gcmVxdWlyZSgnLi9wb29sLWJhc2UnKVxuY29uc3QgUG9vbCA9IHJlcXVpcmUoJy4vcG9vbCcpXG5jb25zdCB7IGtVcmwsIGtJbnRlcmNlcHRvcnMgfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcbmNvbnN0IHsgcGFyc2VPcmlnaW4gfSA9IHJlcXVpcmUoJy4vY29yZS91dGlsJylcbmNvbnN0IGtGYWN0b3J5ID0gU3ltYm9sKCdmYWN0b3J5JylcblxuY29uc3Qga09wdGlvbnMgPSBTeW1ib2woJ29wdGlvbnMnKVxuY29uc3Qga0dyZWF0ZXN0Q29tbW9uRGl2aXNvciA9IFN5bWJvbCgna0dyZWF0ZXN0Q29tbW9uRGl2aXNvcicpXG5jb25zdCBrQ3VycmVudFdlaWdodCA9IFN5bWJvbCgna0N1cnJlbnRXZWlnaHQnKVxuY29uc3Qga0luZGV4ID0gU3ltYm9sKCdrSW5kZXgnKVxuY29uc3Qga1dlaWdodCA9IFN5bWJvbCgna1dlaWdodCcpXG5jb25zdCBrTWF4V2VpZ2h0UGVyU2VydmVyID0gU3ltYm9sKCdrTWF4V2VpZ2h0UGVyU2VydmVyJylcbmNvbnN0IGtFcnJvclBlbmFsdHkgPSBTeW1ib2woJ2tFcnJvclBlbmFsdHknKVxuXG5mdW5jdGlvbiBnZXRHcmVhdGVzdENvbW1vbkRpdmlzb3IgKGEsIGIpIHtcbiAgaWYgKGIgPT09IDApIHJldHVybiBhXG4gIHJldHVybiBnZXRHcmVhdGVzdENvbW1vbkRpdmlzb3IoYiwgYSAlIGIpXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRGYWN0b3J5IChvcmlnaW4sIG9wdHMpIHtcbiAgcmV0dXJuIG5ldyBQb29sKG9yaWdpbiwgb3B0cylcbn1cblxuY2xhc3MgQmFsYW5jZWRQb29sIGV4dGVuZHMgUG9vbEJhc2Uge1xuICBjb25zdHJ1Y3RvciAodXBzdHJlYW1zID0gW10sIHsgZmFjdG9yeSA9IGRlZmF1bHRGYWN0b3J5LCAuLi5vcHRzIH0gPSB7fSkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXNba09wdGlvbnNdID0gb3B0c1xuICAgIHRoaXNba0luZGV4XSA9IC0xXG4gICAgdGhpc1trQ3VycmVudFdlaWdodF0gPSAwXG5cbiAgICB0aGlzW2tNYXhXZWlnaHRQZXJTZXJ2ZXJdID0gdGhpc1trT3B0aW9uc10ubWF4V2VpZ2h0UGVyU2VydmVyIHx8IDEwMFxuICAgIHRoaXNba0Vycm9yUGVuYWx0eV0gPSB0aGlzW2tPcHRpb25zXS5lcnJvclBlbmFsdHkgfHwgMTVcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh1cHN0cmVhbXMpKSB7XG4gICAgICB1cHN0cmVhbXMgPSBbdXBzdHJlYW1zXVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmFjdG9yeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdmYWN0b3J5IG11c3QgYmUgYSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHRoaXNba0ludGVyY2VwdG9yc10gPSBvcHRzLmludGVyY2VwdG9ycyAmJiBvcHRzLmludGVyY2VwdG9ycy5CYWxhbmNlZFBvb2wgJiYgQXJyYXkuaXNBcnJheShvcHRzLmludGVyY2VwdG9ycy5CYWxhbmNlZFBvb2wpXG4gICAgICA/IG9wdHMuaW50ZXJjZXB0b3JzLkJhbGFuY2VkUG9vbFxuICAgICAgOiBbXVxuICAgIHRoaXNba0ZhY3RvcnldID0gZmFjdG9yeVxuXG4gICAgZm9yIChjb25zdCB1cHN0cmVhbSBvZiB1cHN0cmVhbXMpIHtcbiAgICAgIHRoaXMuYWRkVXBzdHJlYW0odXBzdHJlYW0pXG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZUJhbGFuY2VkUG9vbFN0YXRzKClcbiAgfVxuXG4gIGFkZFVwc3RyZWFtICh1cHN0cmVhbSkge1xuICAgIGNvbnN0IHVwc3RyZWFtT3JpZ2luID0gcGFyc2VPcmlnaW4odXBzdHJlYW0pLm9yaWdpblxuXG4gICAgaWYgKHRoaXNba0NsaWVudHNdLmZpbmQoKHBvb2wpID0+IChcbiAgICAgIHBvb2xba1VybF0ub3JpZ2luID09PSB1cHN0cmVhbU9yaWdpbiAmJlxuICAgICAgcG9vbC5jbG9zZWQgIT09IHRydWUgJiZcbiAgICAgIHBvb2wuZGVzdHJveWVkICE9PSB0cnVlXG4gICAgKSkpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGNvbnN0IHBvb2wgPSB0aGlzW2tGYWN0b3J5XSh1cHN0cmVhbU9yaWdpbiwgT2JqZWN0LmFzc2lnbih7fSwgdGhpc1trT3B0aW9uc10pKVxuXG4gICAgdGhpc1trQWRkQ2xpZW50XShwb29sKVxuICAgIHBvb2wub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICBwb29sW2tXZWlnaHRdID0gTWF0aC5taW4odGhpc1trTWF4V2VpZ2h0UGVyU2VydmVyXSwgcG9vbFtrV2VpZ2h0XSArIHRoaXNba0Vycm9yUGVuYWx0eV0pXG4gICAgfSlcblxuICAgIHBvb2wub24oJ2Nvbm5lY3Rpb25FcnJvcicsICgpID0+IHtcbiAgICAgIHBvb2xba1dlaWdodF0gPSBNYXRoLm1heCgxLCBwb29sW2tXZWlnaHRdIC0gdGhpc1trRXJyb3JQZW5hbHR5XSlcbiAgICAgIHRoaXMuX3VwZGF0ZUJhbGFuY2VkUG9vbFN0YXRzKClcbiAgICB9KVxuXG4gICAgcG9vbC5vbignZGlzY29ubmVjdCcsICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSBhcmdzWzJdXG4gICAgICBpZiAoZXJyICYmIGVyci5jb2RlID09PSAnVU5EX0VSUl9TT0NLRVQnKSB7XG4gICAgICAgIC8vIGRlY3JlYXNlIHRoZSB3ZWlnaHQgb2YgdGhlIHBvb2wuXG4gICAgICAgIHBvb2xba1dlaWdodF0gPSBNYXRoLm1heCgxLCBwb29sW2tXZWlnaHRdIC0gdGhpc1trRXJyb3JQZW5hbHR5XSlcbiAgICAgICAgdGhpcy5fdXBkYXRlQmFsYW5jZWRQb29sU3RhdHMoKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiB0aGlzW2tDbGllbnRzXSkge1xuICAgICAgY2xpZW50W2tXZWlnaHRdID0gdGhpc1trTWF4V2VpZ2h0UGVyU2VydmVyXVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUJhbGFuY2VkUG9vbFN0YXRzKClcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBfdXBkYXRlQmFsYW5jZWRQb29sU3RhdHMgKCkge1xuICAgIHRoaXNba0dyZWF0ZXN0Q29tbW9uRGl2aXNvcl0gPSB0aGlzW2tDbGllbnRzXS5tYXAocCA9PiBwW2tXZWlnaHRdKS5yZWR1Y2UoZ2V0R3JlYXRlc3RDb21tb25EaXZpc29yLCAwKVxuICB9XG5cbiAgcmVtb3ZlVXBzdHJlYW0gKHVwc3RyZWFtKSB7XG4gICAgY29uc3QgdXBzdHJlYW1PcmlnaW4gPSBwYXJzZU9yaWdpbih1cHN0cmVhbSkub3JpZ2luXG5cbiAgICBjb25zdCBwb29sID0gdGhpc1trQ2xpZW50c10uZmluZCgocG9vbCkgPT4gKFxuICAgICAgcG9vbFtrVXJsXS5vcmlnaW4gPT09IHVwc3RyZWFtT3JpZ2luICYmXG4gICAgICBwb29sLmNsb3NlZCAhPT0gdHJ1ZSAmJlxuICAgICAgcG9vbC5kZXN0cm95ZWQgIT09IHRydWVcbiAgICApKVxuXG4gICAgaWYgKHBvb2wpIHtcbiAgICAgIHRoaXNba1JlbW92ZUNsaWVudF0ocG9vbClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IHVwc3RyZWFtcyAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0NsaWVudHNdXG4gICAgICAuZmlsdGVyKGRpc3BhdGNoZXIgPT4gZGlzcGF0Y2hlci5jbG9zZWQgIT09IHRydWUgJiYgZGlzcGF0Y2hlci5kZXN0cm95ZWQgIT09IHRydWUpXG4gICAgICAubWFwKChwKSA9PiBwW2tVcmxdLm9yaWdpbilcbiAgfVxuXG4gIFtrR2V0RGlzcGF0Y2hlcl0gKCkge1xuICAgIC8vIFdlIHZhbGlkYXRlIHRoYXQgcG9vbHMgaXMgZ3JlYXRlciB0aGFuIDAsXG4gICAgLy8gb3RoZXJ3aXNlIHdlIHdvdWxkIGhhdmUgdG8gd2FpdCB1bnRpbCBhbiB1cHN0cmVhbVxuICAgIC8vIGlzIGFkZGVkLCB3aGljaCBtaWdodCBuZXZlciBoYXBwZW4uXG4gICAgaWYgKHRoaXNba0NsaWVudHNdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJhbGFuY2VkUG9vbE1pc3NpbmdVcHN0cmVhbUVycm9yKClcbiAgICB9XG5cbiAgICBjb25zdCBkaXNwYXRjaGVyID0gdGhpc1trQ2xpZW50c10uZmluZChkaXNwYXRjaGVyID0+IChcbiAgICAgICFkaXNwYXRjaGVyW2tOZWVkRHJhaW5dICYmXG4gICAgICBkaXNwYXRjaGVyLmNsb3NlZCAhPT0gdHJ1ZSAmJlxuICAgICAgZGlzcGF0Y2hlci5kZXN0cm95ZWQgIT09IHRydWVcbiAgICApKVxuXG4gICAgaWYgKCFkaXNwYXRjaGVyKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhbGxDbGllbnRzQnVzeSA9IHRoaXNba0NsaWVudHNdLm1hcChwb29sID0+IHBvb2xba05lZWREcmFpbl0pLnJlZHVjZSgoYSwgYikgPT4gYSAmJiBiLCB0cnVlKVxuXG4gICAgaWYgKGFsbENsaWVudHNCdXN5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgY291bnRlciA9IDBcblxuICAgIGxldCBtYXhXZWlnaHRJbmRleCA9IHRoaXNba0NsaWVudHNdLmZpbmRJbmRleChwb29sID0+ICFwb29sW2tOZWVkRHJhaW5dKVxuXG4gICAgd2hpbGUgKGNvdW50ZXIrKyA8IHRoaXNba0NsaWVudHNdLmxlbmd0aCkge1xuICAgICAgdGhpc1trSW5kZXhdID0gKHRoaXNba0luZGV4XSArIDEpICUgdGhpc1trQ2xpZW50c10ubGVuZ3RoXG4gICAgICBjb25zdCBwb29sID0gdGhpc1trQ2xpZW50c11bdGhpc1trSW5kZXhdXVxuXG4gICAgICAvLyBmaW5kIHBvb2wgaW5kZXggd2l0aCB0aGUgbGFyZ2VzdCB3ZWlnaHRcbiAgICAgIGlmIChwb29sW2tXZWlnaHRdID4gdGhpc1trQ2xpZW50c11bbWF4V2VpZ2h0SW5kZXhdW2tXZWlnaHRdICYmICFwb29sW2tOZWVkRHJhaW5dKSB7XG4gICAgICAgIG1heFdlaWdodEluZGV4ID0gdGhpc1trSW5kZXhdXG4gICAgICB9XG5cbiAgICAgIC8vIGRlY3JlYXNlIHRoZSBjdXJyZW50IHdlaWdodCBldmVyeSBgdGhpc1trQ2xpZW50c10ubGVuZ3RoYC5cbiAgICAgIGlmICh0aGlzW2tJbmRleF0gPT09IDApIHtcbiAgICAgICAgLy8gU2V0IHRoZSBjdXJyZW50IHdlaWdodCB0byB0aGUgbmV4dCBsb3dlciB3ZWlnaHQuXG4gICAgICAgIHRoaXNba0N1cnJlbnRXZWlnaHRdID0gdGhpc1trQ3VycmVudFdlaWdodF0gLSB0aGlzW2tHcmVhdGVzdENvbW1vbkRpdmlzb3JdXG5cbiAgICAgICAgaWYgKHRoaXNba0N1cnJlbnRXZWlnaHRdIDw9IDApIHtcbiAgICAgICAgICB0aGlzW2tDdXJyZW50V2VpZ2h0XSA9IHRoaXNba01heFdlaWdodFBlclNlcnZlcl1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBvb2xba1dlaWdodF0gPj0gdGhpc1trQ3VycmVudFdlaWdodF0gJiYgKCFwb29sW2tOZWVkRHJhaW5dKSkge1xuICAgICAgICByZXR1cm4gcG9vbFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXNba0N1cnJlbnRXZWlnaHRdID0gdGhpc1trQ2xpZW50c11bbWF4V2VpZ2h0SW5kZXhdW2tXZWlnaHRdXG4gICAgdGhpc1trSW5kZXhdID0gbWF4V2VpZ2h0SW5kZXhcbiAgICByZXR1cm4gdGhpc1trQ2xpZW50c11bbWF4V2VpZ2h0SW5kZXhdXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCYWxhbmNlZFBvb2xcbiIsICIndXNlIHN0cmljdCdcblxuLyogaXN0YW5idWwgaWdub3JlIGZpbGU6IG9ubHkgZm9yIE5vZGUgMTIgKi9cblxuY29uc3QgeyBrQ29ubmVjdGVkLCBrU2l6ZSB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcblxuY2xhc3MgQ29tcGF0V2Vha1JlZiB7XG4gIGNvbnN0cnVjdG9yICh2YWx1ZSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG5cbiAgZGVyZWYgKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlW2tDb25uZWN0ZWRdID09PSAwICYmIHRoaXMudmFsdWVba1NpemVdID09PSAwXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiB0aGlzLnZhbHVlXG4gIH1cbn1cblxuY2xhc3MgQ29tcGF0RmluYWxpemVyIHtcbiAgY29uc3RydWN0b3IgKGZpbmFsaXplcikge1xuICAgIHRoaXMuZmluYWxpemVyID0gZmluYWxpemVyXG4gIH1cblxuICByZWdpc3RlciAoZGlzcGF0Y2hlciwga2V5KSB7XG4gICAgaWYgKGRpc3BhdGNoZXIub24pIHtcbiAgICAgIGRpc3BhdGNoZXIub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgIGlmIChkaXNwYXRjaGVyW2tDb25uZWN0ZWRdID09PSAwICYmIGRpc3BhdGNoZXJba1NpemVdID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5maW5hbGl6ZXIoa2V5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gRklYTUU6IHJlbW92ZSB3b3JrYXJvdW5kIHdoZW4gdGhlIE5vZGUgYnVnIGlzIGZpeGVkXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDkzNDQjaXNzdWVjb21tZW50LTE3NDE3NzYzMDhcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgV2Vha1JlZjogQ29tcGF0V2Vha1JlZixcbiAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiBDb21wYXRGaW5hbGl6ZXJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBXZWFrUmVmOiBnbG9iYWwuV2Vha1JlZiB8fCBDb21wYXRXZWFrUmVmLFxuICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiBnbG9iYWwuRmluYWxpemF0aW9uUmVnaXN0cnkgfHwgQ29tcGF0RmluYWxpemVyXG4gIH1cbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9ID0gcmVxdWlyZSgnLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IGtDbGllbnRzLCBrUnVubmluZywga0Nsb3NlLCBrRGVzdHJveSwga0Rpc3BhdGNoLCBrSW50ZXJjZXB0b3JzIH0gPSByZXF1aXJlKCcuL2NvcmUvc3ltYm9scycpXG5jb25zdCBEaXNwYXRjaGVyQmFzZSA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hlci1iYXNlJylcbmNvbnN0IFBvb2wgPSByZXF1aXJlKCcuL3Bvb2wnKVxuY29uc3QgQ2xpZW50ID0gcmVxdWlyZSgnLi9jbGllbnQnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4vY29yZS91dGlsJylcbmNvbnN0IGNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IgPSByZXF1aXJlKCcuL2ludGVyY2VwdG9yL3JlZGlyZWN0SW50ZXJjZXB0b3InKVxuY29uc3QgeyBXZWFrUmVmLCBGaW5hbGl6YXRpb25SZWdpc3RyeSB9ID0gcmVxdWlyZSgnLi9jb21wYXQvZGlzcGF0Y2hlci13ZWFrcmVmJykoKVxuXG5jb25zdCBrT25Db25uZWN0ID0gU3ltYm9sKCdvbkNvbm5lY3QnKVxuY29uc3Qga09uRGlzY29ubmVjdCA9IFN5bWJvbCgnb25EaXNjb25uZWN0JylcbmNvbnN0IGtPbkNvbm5lY3Rpb25FcnJvciA9IFN5bWJvbCgnb25Db25uZWN0aW9uRXJyb3InKVxuY29uc3Qga01heFJlZGlyZWN0aW9ucyA9IFN5bWJvbCgnbWF4UmVkaXJlY3Rpb25zJylcbmNvbnN0IGtPbkRyYWluID0gU3ltYm9sKCdvbkRyYWluJylcbmNvbnN0IGtGYWN0b3J5ID0gU3ltYm9sKCdmYWN0b3J5JylcbmNvbnN0IGtGaW5hbGl6ZXIgPSBTeW1ib2woJ2ZpbmFsaXplcicpXG5jb25zdCBrT3B0aW9ucyA9IFN5bWJvbCgnb3B0aW9ucycpXG5cbmZ1bmN0aW9uIGRlZmF1bHRGYWN0b3J5IChvcmlnaW4sIG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgJiYgb3B0cy5jb25uZWN0aW9ucyA9PT0gMVxuICAgID8gbmV3IENsaWVudChvcmlnaW4sIG9wdHMpXG4gICAgOiBuZXcgUG9vbChvcmlnaW4sIG9wdHMpXG59XG5cbmNsYXNzIEFnZW50IGV4dGVuZHMgRGlzcGF0Y2hlckJhc2Uge1xuICBjb25zdHJ1Y3RvciAoeyBmYWN0b3J5ID0gZGVmYXVsdEZhY3RvcnksIG1heFJlZGlyZWN0aW9ucyA9IDAsIGNvbm5lY3QsIC4uLm9wdGlvbnMgfSA9IHt9KSB7XG4gICAgc3VwZXIoKVxuXG4gICAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ZhY3RvcnkgbXVzdCBiZSBhIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgaWYgKGNvbm5lY3QgIT0gbnVsbCAmJiB0eXBlb2YgY29ubmVjdCAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgY29ubmVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY29ubmVjdCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0JylcbiAgICB9XG5cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobWF4UmVkaXJlY3Rpb25zKSB8fCBtYXhSZWRpcmVjdGlvbnMgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21heFJlZGlyZWN0aW9ucyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAoY29ubmVjdCAmJiB0eXBlb2YgY29ubmVjdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29ubmVjdCA9IHsgLi4uY29ubmVjdCB9XG4gICAgfVxuXG4gICAgdGhpc1trSW50ZXJjZXB0b3JzXSA9IG9wdGlvbnMuaW50ZXJjZXB0b3JzICYmIG9wdGlvbnMuaW50ZXJjZXB0b3JzLkFnZW50ICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbnRlcmNlcHRvcnMuQWdlbnQpXG4gICAgICA/IG9wdGlvbnMuaW50ZXJjZXB0b3JzLkFnZW50XG4gICAgICA6IFtjcmVhdGVSZWRpcmVjdEludGVyY2VwdG9yKHsgbWF4UmVkaXJlY3Rpb25zIH0pXVxuXG4gICAgdGhpc1trT3B0aW9uc10gPSB7IC4uLnV0aWwuZGVlcENsb25lKG9wdGlvbnMpLCBjb25uZWN0IH1cbiAgICB0aGlzW2tPcHRpb25zXS5pbnRlcmNlcHRvcnMgPSBvcHRpb25zLmludGVyY2VwdG9yc1xuICAgICAgPyB7IC4uLm9wdGlvbnMuaW50ZXJjZXB0b3JzIH1cbiAgICAgIDogdW5kZWZpbmVkXG4gICAgdGhpc1trTWF4UmVkaXJlY3Rpb25zXSA9IG1heFJlZGlyZWN0aW9uc1xuICAgIHRoaXNba0ZhY3RvcnldID0gZmFjdG9yeVxuICAgIHRoaXNba0NsaWVudHNdID0gbmV3IE1hcCgpXG4gICAgdGhpc1trRmluYWxpemVyXSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZ2MgaXMgdW5kZXRlcm1pbmlzdGljICovIGtleSA9PiB7XG4gICAgICBjb25zdCByZWYgPSB0aGlzW2tDbGllbnRzXS5nZXQoa2V5KVxuICAgICAgaWYgKHJlZiAhPT0gdW5kZWZpbmVkICYmIHJlZi5kZXJlZigpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpc1trQ2xpZW50c10uZGVsZXRlKGtleSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgYWdlbnQgPSB0aGlzXG5cbiAgICB0aGlzW2tPbkRyYWluXSA9IChvcmlnaW4sIHRhcmdldHMpID0+IHtcbiAgICAgIGFnZW50LmVtaXQoJ2RyYWluJywgb3JpZ2luLCBbYWdlbnQsIC4uLnRhcmdldHNdKVxuICAgIH1cblxuICAgIHRoaXNba09uQ29ubmVjdF0gPSAob3JpZ2luLCB0YXJnZXRzKSA9PiB7XG4gICAgICBhZ2VudC5lbWl0KCdjb25uZWN0Jywgb3JpZ2luLCBbYWdlbnQsIC4uLnRhcmdldHNdKVxuICAgIH1cblxuICAgIHRoaXNba09uRGlzY29ubmVjdF0gPSAob3JpZ2luLCB0YXJnZXRzLCBlcnIpID0+IHtcbiAgICAgIGFnZW50LmVtaXQoJ2Rpc2Nvbm5lY3QnLCBvcmlnaW4sIFthZ2VudCwgLi4udGFyZ2V0c10sIGVycilcbiAgICB9XG5cbiAgICB0aGlzW2tPbkNvbm5lY3Rpb25FcnJvcl0gPSAob3JpZ2luLCB0YXJnZXRzLCBlcnIpID0+IHtcbiAgICAgIGFnZW50LmVtaXQoJ2Nvbm5lY3Rpb25FcnJvcicsIG9yaWdpbiwgW2FnZW50LCAuLi50YXJnZXRzXSwgZXJyKVxuICAgIH1cbiAgfVxuXG4gIGdldCBba1J1bm5pbmddICgpIHtcbiAgICBsZXQgcmV0ID0gMFxuICAgIGZvciAoY29uc3QgcmVmIG9mIHRoaXNba0NsaWVudHNdLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBjbGllbnQgPSByZWYuZGVyZWYoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGdjIGlzIHVuZGV0ZXJtaW5pc3RpYyAqL1xuICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICByZXQgKz0gY2xpZW50W2tSdW5uaW5nXVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBba0Rpc3BhdGNoXSAob3B0cywgaGFuZGxlcikge1xuICAgIGxldCBrZXlcbiAgICBpZiAob3B0cy5vcmlnaW4gJiYgKHR5cGVvZiBvcHRzLm9yaWdpbiA9PT0gJ3N0cmluZycgfHwgb3B0cy5vcmlnaW4gaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgICBrZXkgPSBTdHJpbmcob3B0cy5vcmlnaW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb3B0cy5vcmlnaW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgVVJMLicpXG4gICAgfVxuXG4gICAgY29uc3QgcmVmID0gdGhpc1trQ2xpZW50c10uZ2V0KGtleSlcblxuICAgIGxldCBkaXNwYXRjaGVyID0gcmVmID8gcmVmLmRlcmVmKCkgOiBudWxsXG4gICAgaWYgKCFkaXNwYXRjaGVyKSB7XG4gICAgICBkaXNwYXRjaGVyID0gdGhpc1trRmFjdG9yeV0ob3B0cy5vcmlnaW4sIHRoaXNba09wdGlvbnNdKVxuICAgICAgICAub24oJ2RyYWluJywgdGhpc1trT25EcmFpbl0pXG4gICAgICAgIC5vbignY29ubmVjdCcsIHRoaXNba09uQ29ubmVjdF0pXG4gICAgICAgIC5vbignZGlzY29ubmVjdCcsIHRoaXNba09uRGlzY29ubmVjdF0pXG4gICAgICAgIC5vbignY29ubmVjdGlvbkVycm9yJywgdGhpc1trT25Db25uZWN0aW9uRXJyb3JdKVxuXG4gICAgICB0aGlzW2tDbGllbnRzXS5zZXQoa2V5LCBuZXcgV2Vha1JlZihkaXNwYXRjaGVyKSlcbiAgICAgIHRoaXNba0ZpbmFsaXplcl0ucmVnaXN0ZXIoZGlzcGF0Y2hlciwga2V5KVxuICAgIH1cblxuICAgIHJldHVybiBkaXNwYXRjaGVyLmRpc3BhdGNoKG9wdHMsIGhhbmRsZXIpXG4gIH1cblxuICBhc3luYyBba0Nsb3NlXSAoKSB7XG4gICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IFtdXG4gICAgZm9yIChjb25zdCByZWYgb2YgdGhpc1trQ2xpZW50c10udmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHJlZi5kZXJlZigpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogZ2MgaXMgdW5kZXRlcm1pbmlzdGljICovXG4gICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgIGNsb3NlUHJvbWlzZXMucHVzaChjbGllbnQuY2xvc2UoKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChjbG9zZVByb21pc2VzKVxuICB9XG5cbiAgYXN5bmMgW2tEZXN0cm95XSAoZXJyKSB7XG4gICAgY29uc3QgZGVzdHJveVByb21pc2VzID0gW11cbiAgICBmb3IgKGNvbnN0IHJlZiBvZiB0aGlzW2tDbGllbnRzXS52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY2xpZW50ID0gcmVmLmRlcmVmKClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBnYyBpcyB1bmRldGVybWluaXN0aWMgKi9cbiAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgZGVzdHJveVByb21pc2VzLnB1c2goY2xpZW50LmRlc3Ryb3koZXJyKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChkZXN0cm95UHJvbWlzZXMpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBZ2VudFxuIiwgIi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL3B1bGwvOTA3XG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJylcbmNvbnN0IHsgUmVxdWVzdEFib3J0ZWRFcnJvciwgTm90U3VwcG9ydGVkRXJyb3IsIEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsgUmVhZGFibGVTdHJlYW1Gcm9tLCB0b1VTVlN0cmluZyB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcblxubGV0IEJsb2JcblxuY29uc3Qga0NvbnN1bWUgPSBTeW1ib2woJ2tDb25zdW1lJylcbmNvbnN0IGtSZWFkaW5nID0gU3ltYm9sKCdrUmVhZGluZycpXG5jb25zdCBrQm9keSA9IFN5bWJvbCgna0JvZHknKVxuY29uc3Qga0Fib3J0ID0gU3ltYm9sKCdhYm9ydCcpXG5jb25zdCBrQ29udGVudFR5cGUgPSBTeW1ib2woJ2tDb250ZW50VHlwZScpXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEJvZHlSZWFkYWJsZSBleHRlbmRzIFJlYWRhYmxlIHtcbiAgY29uc3RydWN0b3IgKHtcbiAgICByZXN1bWUsXG4gICAgYWJvcnQsXG4gICAgY29udGVudFR5cGUgPSAnJyxcbiAgICBoaWdoV2F0ZXJNYXJrID0gNjQgKiAxMDI0IC8vIFNhbWUgYXMgbm9kZWpzIGZzIHN0cmVhbXMuXG4gIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICBhdXRvRGVzdHJveTogdHJ1ZSxcbiAgICAgIHJlYWQ6IHJlc3VtZSxcbiAgICAgIGhpZ2hXYXRlck1hcmtcbiAgICB9KVxuXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kYXRhRW1pdHRlZCA9IGZhbHNlXG5cbiAgICB0aGlzW2tBYm9ydF0gPSBhYm9ydFxuICAgIHRoaXNba0NvbnN1bWVdID0gbnVsbFxuICAgIHRoaXNba0JvZHldID0gbnVsbFxuICAgIHRoaXNba0NvbnRlbnRUeXBlXSA9IGNvbnRlbnRUeXBlXG5cbiAgICAvLyBJcyBzdHJlYW0gYmVpbmcgY29uc3VtZWQgdGhyb3VnaCBSZWFkYWJsZSBBUEk/XG4gICAgLy8gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gc28gdGhhdCB3ZSBhdm9pZCBjaGVja2luZ1xuICAgIC8vIGZvciAnZGF0YScgYW5kICdyZWFkYWJsZScgbGlzdGVuZXJzIGluIHRoZSBob3QgcGF0aFxuICAgIC8vIGluc2lkZSBwdXNoKCkuXG4gICAgdGhpc1trUmVhZGluZ10gPSBmYWxzZVxuICB9XG5cbiAgZGVzdHJveSAoZXJyKSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAvLyBOb2RlIDwgMTZcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKCFlcnIgJiYgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgZXJyID0gbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIGlmIChlcnIpIHtcbiAgICAgIHRoaXNba0Fib3J0XSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmRlc3Ryb3koZXJyKVxuICB9XG5cbiAgZW1pdCAoZXYsIC4uLmFyZ3MpIHtcbiAgICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgICAgLy8gTm9kZSA8IDE2LjdcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGF0YUVtaXR0ZWQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChldiA9PT0gJ2Vycm9yJykge1xuICAgICAgLy8gTm9kZSA8IDE2XG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmVtaXQoZXYsIC4uLmFyZ3MpXG4gIH1cblxuICBvbiAoZXYsIC4uLmFyZ3MpIHtcbiAgICBpZiAoZXYgPT09ICdkYXRhJyB8fCBldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgICAgdGhpc1trUmVhZGluZ10gPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiBzdXBlci5vbihldiwgLi4uYXJncylcbiAgfVxuXG4gIGFkZExpc3RlbmVyIChldiwgLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLm9uKGV2LCAuLi5hcmdzKVxuICB9XG5cbiAgb2ZmIChldiwgLi4uYXJncykge1xuICAgIGNvbnN0IHJldCA9IHN1cGVyLm9mZihldiwgLi4uYXJncylcbiAgICBpZiAoZXYgPT09ICdkYXRhJyB8fCBldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgICAgdGhpc1trUmVhZGluZ10gPSAoXG4gICAgICAgIHRoaXMubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCB8fFxuICAgICAgICB0aGlzLmxpc3RlbmVyQ291bnQoJ3JlYWRhYmxlJykgPiAwXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIHJlbW92ZUxpc3RlbmVyIChldiwgLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLm9mZihldiwgLi4uYXJncylcbiAgfVxuXG4gIHB1c2ggKGNodW5rKSB7XG4gICAgaWYgKHRoaXNba0NvbnN1bWVdICYmIGNodW5rICE9PSBudWxsICYmIHRoaXMucmVhZGFibGVMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN1bWVQdXNoKHRoaXNba0NvbnN1bWVdLCBjaHVuaylcbiAgICAgIHJldHVybiB0aGlzW2tSZWFkaW5nXSA/IHN1cGVyLnB1c2goY2h1bmspIDogdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucHVzaChjaHVuaylcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS10ZXh0XG4gIGFzeW5jIHRleHQgKCkge1xuICAgIHJldHVybiBjb25zdW1lKHRoaXMsICd0ZXh0JylcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS1qc29uXG4gIGFzeW5jIGpzb24gKCkge1xuICAgIHJldHVybiBjb25zdW1lKHRoaXMsICdqc29uJylcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS1ibG9iXG4gIGFzeW5jIGJsb2IgKCkge1xuICAgIHJldHVybiBjb25zdW1lKHRoaXMsICdibG9iJylcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS1hcnJheWJ1ZmZlclxuICBhc3luYyBhcnJheUJ1ZmZlciAoKSB7XG4gICAgcmV0dXJuIGNvbnN1bWUodGhpcywgJ2FycmF5QnVmZmVyJylcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tYm9keS1mb3JtZGF0YVxuICBhc3luYyBmb3JtRGF0YSAoKSB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50LlxuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWRFcnJvcigpXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLWJvZHktYm9keXVzZWRcbiAgZ2V0IGJvZHlVc2VkICgpIHtcbiAgICByZXR1cm4gdXRpbC5pc0Rpc3R1cmJlZCh0aGlzKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ib2R5LWJvZHlcbiAgZ2V0IGJvZHkgKCkge1xuICAgIGlmICghdGhpc1trQm9keV0pIHtcbiAgICAgIHRoaXNba0JvZHldID0gUmVhZGFibGVTdHJlYW1Gcm9tKHRoaXMpXG4gICAgICBpZiAodGhpc1trQ29uc3VtZV0pIHtcbiAgICAgICAgLy8gVE9ETzogSXMgdGhpcyB0aGUgYmVzdCB3YXkgdG8gZm9yY2UgYSBsb2NrP1xuICAgICAgICB0aGlzW2tCb2R5XS5nZXRSZWFkZXIoKSAvLyBFbnN1cmUgc3RyZWFtIGlzIGxvY2tlZC5cbiAgICAgICAgYXNzZXJ0KHRoaXNba0JvZHldLmxvY2tlZClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXNba0JvZHldXG4gIH1cblxuICBkdW1wIChvcHRzKSB7XG4gICAgbGV0IGxpbWl0ID0gb3B0cyAmJiBOdW1iZXIuaXNGaW5pdGUob3B0cy5saW1pdCkgPyBvcHRzLmxpbWl0IDogMjYyMTQ0XG4gICAgY29uc3Qgc2lnbmFsID0gb3B0cyAmJiBvcHRzLnNpZ25hbFxuXG4gICAgaWYgKHNpZ25hbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWduYWwgIT09ICdvYmplY3QnIHx8ICEoJ2Fib3J0ZWQnIGluIHNpZ25hbCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NpZ25hbCBtdXN0IGJlIGFuIEFib3J0U2lnbmFsJylcbiAgICAgICAgfVxuICAgICAgICB1dGlsLnRocm93SWZBYm9ydGVkKHNpZ25hbClcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzaWduYWxMaXN0ZW5lckNsZWFudXAgPSBzaWduYWxcbiAgICAgICAgPyB1dGlsLmFkZEFib3J0TGlzdGVuZXIoc2lnbmFsLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KClcbiAgICAgICAgfSlcbiAgICAgICAgOiBub29wXG5cbiAgICAgIHRoaXNcbiAgICAgICAgLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzaWduYWxMaXN0ZW5lckNsZWFudXAoKVxuICAgICAgICAgIGlmIChzaWduYWwgJiYgc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJlamVjdChzaWduYWwucmVhc29uIHx8IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkJyksIHsgbmFtZTogJ0Fib3J0RXJyb3InIH0pKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAub24oJ2Vycm9yJywgbm9vcClcbiAgICAgICAgLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgICAgbGltaXQgLT0gY2h1bmsubGVuZ3RoXG4gICAgICAgICAgaWYgKGxpbWl0IDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucmVzdW1lKClcbiAgICB9KVxuICB9XG59XG5cbi8vIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3JlYWRhYmxlc3RyZWFtLWxvY2tlZFxuZnVuY3Rpb24gaXNMb2NrZWQgKHNlbGYpIHtcbiAgLy8gQ29uc3VtZSBpcyBhbiBpbXBsaWNpdCBsb2NrLlxuICByZXR1cm4gKHNlbGZba0JvZHldICYmIHNlbGZba0JvZHldLmxvY2tlZCA9PT0gdHJ1ZSkgfHwgc2VsZltrQ29uc3VtZV1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHktdW51c2FibGVcbmZ1bmN0aW9uIGlzVW51c2FibGUgKHNlbGYpIHtcbiAgcmV0dXJuIHV0aWwuaXNEaXN0dXJiZWQoc2VsZikgfHwgaXNMb2NrZWQoc2VsZilcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29uc3VtZSAoc3RyZWFtLCB0eXBlKSB7XG4gIGlmIChpc1VudXNhYmxlKHN0cmVhbSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnVzYWJsZScpXG4gIH1cblxuICBhc3NlcnQoIXN0cmVhbVtrQ29uc3VtZV0pXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBzdHJlYW1ba0NvbnN1bWVdID0ge1xuICAgICAgdHlwZSxcbiAgICAgIHN0cmVhbSxcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3QsXG4gICAgICBsZW5ndGg6IDAsXG4gICAgICBib2R5OiBbXVxuICAgIH1cblxuICAgIHN0cmVhbVxuICAgICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY29uc3VtZUZpbmlzaCh0aGlzW2tDb25zdW1lXSwgZXJyKVxuICAgICAgfSlcbiAgICAgIC5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzW2tDb25zdW1lXS5ib2R5ICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3VtZUZpbmlzaCh0aGlzW2tDb25zdW1lXSwgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIHByb2Nlc3MubmV4dFRpY2soY29uc3VtZVN0YXJ0LCBzdHJlYW1ba0NvbnN1bWVdKVxuICB9KVxufVxuXG5mdW5jdGlvbiBjb25zdW1lU3RhcnQgKGNvbnN1bWUpIHtcbiAgaWYgKGNvbnN1bWUuYm9keSA9PT0gbnVsbCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBfcmVhZGFibGVTdGF0ZTogc3RhdGUgfSA9IGNvbnN1bWUuc3RyZWFtXG5cbiAgZm9yIChjb25zdCBjaHVuayBvZiBzdGF0ZS5idWZmZXIpIHtcbiAgICBjb25zdW1lUHVzaChjb25zdW1lLCBjaHVuaylcbiAgfVxuXG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgY29uc3VtZUVuZCh0aGlzW2tDb25zdW1lXSlcbiAgfSBlbHNlIHtcbiAgICBjb25zdW1lLnN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3VtZUVuZCh0aGlzW2tDb25zdW1lXSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3VtZS5zdHJlYW0ucmVzdW1lKClcblxuICB3aGlsZSAoY29uc3VtZS5zdHJlYW0ucmVhZCgpICE9IG51bGwpIHtcbiAgICAvLyBMb29wXG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3VtZUVuZCAoY29uc3VtZSkge1xuICBjb25zdCB7IHR5cGUsIGJvZHksIHJlc29sdmUsIHN0cmVhbSwgbGVuZ3RoIH0gPSBjb25zdW1lXG5cbiAgdHJ5IHtcbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICByZXNvbHZlKHRvVVNWU3RyaW5nKEJ1ZmZlci5jb25jYXQoYm9keSkpKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2pzb24nKSB7XG4gICAgICByZXNvbHZlKEpTT04ucGFyc2UoQnVmZmVyLmNvbmNhdChib2R5KSkpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXlCdWZmZXInKSB7XG4gICAgICBjb25zdCBkc3QgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG5cbiAgICAgIGxldCBwb3MgPSAwXG4gICAgICBmb3IgKGNvbnN0IGJ1ZiBvZiBib2R5KSB7XG4gICAgICAgIGRzdC5zZXQoYnVmLCBwb3MpXG4gICAgICAgIHBvcyArPSBidWYuYnl0ZUxlbmd0aFxuICAgICAgfVxuXG4gICAgICByZXNvbHZlKGRzdC5idWZmZXIpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmxvYicpIHtcbiAgICAgIGlmICghQmxvYikge1xuICAgICAgICBCbG9iID0gcmVxdWlyZSgnYnVmZmVyJykuQmxvYlxuICAgICAgfVxuICAgICAgcmVzb2x2ZShuZXcgQmxvYihib2R5LCB7IHR5cGU6IHN0cmVhbVtrQ29udGVudFR5cGVdIH0pKVxuICAgIH1cblxuICAgIGNvbnN1bWVGaW5pc2goY29uc3VtZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3RyZWFtLmRlc3Ryb3koZXJyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVQdXNoIChjb25zdW1lLCBjaHVuaykge1xuICBjb25zdW1lLmxlbmd0aCArPSBjaHVuay5sZW5ndGhcbiAgY29uc3VtZS5ib2R5LnB1c2goY2h1bmspXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVGaW5pc2ggKGNvbnN1bWUsIGVycikge1xuICBpZiAoY29uc3VtZS5ib2R5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoZXJyKSB7XG4gICAgY29uc3VtZS5yZWplY3QoZXJyKVxuICB9IGVsc2Uge1xuICAgIGNvbnN1bWUucmVzb2x2ZSgpXG4gIH1cblxuICBjb25zdW1lLnR5cGUgPSBudWxsXG4gIGNvbnN1bWUuc3RyZWFtID0gbnVsbFxuICBjb25zdW1lLnJlc29sdmUgPSBudWxsXG4gIGNvbnN1bWUucmVqZWN0ID0gbnVsbFxuICBjb25zdW1lLmxlbmd0aCA9IDBcbiAgY29uc3VtZS5ib2R5ID0gbnVsbFxufVxuIiwgImNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7XG4gIFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yXG59ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgeyB0b1VTVlN0cmluZyB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrICh7IGNhbGxiYWNrLCBib2R5LCBjb250ZW50VHlwZSwgc3RhdHVzQ29kZSwgc3RhdHVzTWVzc2FnZSwgaGVhZGVycyB9KSB7XG4gIGFzc2VydChib2R5KVxuXG4gIGxldCBjaHVua3MgPSBbXVxuICBsZXQgbGltaXQgPSAwXG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBib2R5KSB7XG4gICAgY2h1bmtzLnB1c2goY2h1bmspXG4gICAgbGltaXQgKz0gY2h1bmsubGVuZ3RoXG4gICAgaWYgKGxpbWl0ID4gMTI4ICogMTAyNCkge1xuICAgICAgY2h1bmtzID0gbnVsbFxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdHVzQ29kZSA9PT0gMjA0IHx8ICFjb250ZW50VHlwZSB8fCAhY2h1bmtzKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yKGBSZXNwb25zZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9JHtzdGF0dXNNZXNzYWdlID8gYDogJHtzdGF0dXNNZXNzYWdlfWAgOiAnJ31gLCBzdGF0dXNDb2RlLCBoZWFkZXJzKSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UodG9VU1ZTdHJpbmcoQnVmZmVyLmNvbmNhdChjaHVua3MpKSlcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIG5ldyBSZXNwb25zZVN0YXR1c0NvZGVFcnJvcihgUmVzcG9uc2Ugc3RhdHVzIGNvZGUgJHtzdGF0dXNDb2RlfSR7c3RhdHVzTWVzc2FnZSA/IGA6ICR7c3RhdHVzTWVzc2FnZX1gIDogJyd9YCwgc3RhdHVzQ29kZSwgaGVhZGVycywgcGF5bG9hZCkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY29udGVudFR5cGUuc3RhcnRzV2l0aCgndGV4dC8nKSkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHRvVVNWU3RyaW5nKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSlcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIG5ldyBSZXNwb25zZVN0YXR1c0NvZGVFcnJvcihgUmVzcG9uc2Ugc3RhdHVzIGNvZGUgJHtzdGF0dXNDb2RlfSR7c3RhdHVzTWVzc2FnZSA/IGA6ICR7c3RhdHVzTWVzc2FnZX1gIDogJyd9YCwgc3RhdHVzQ29kZSwgaGVhZGVycywgcGF5bG9hZCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIFByb2Nlc3MgaW4gYSBmYWxsYmFjayBpZiBlcnJvclxuICB9XG5cbiAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IFJlc3BvbnNlU3RhdHVzQ29kZUVycm9yKGBSZXNwb25zZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9JHtzdGF0dXNNZXNzYWdlID8gYDogJHtzdGF0dXNNZXNzYWdlfWAgOiAnJ31gLCBzdGF0dXNDb2RlLCBoZWFkZXJzKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldFJlc29sdmVFcnJvckJvZHlDYWxsYmFjayB9XG4iLCAiY29uc3QgeyBhZGRBYm9ydExpc3RlbmVyIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBSZXF1ZXN0QWJvcnRlZEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5cbmNvbnN0IGtMaXN0ZW5lciA9IFN5bWJvbCgna0xpc3RlbmVyJylcbmNvbnN0IGtTaWduYWwgPSBTeW1ib2woJ2tTaWduYWwnKVxuXG5mdW5jdGlvbiBhYm9ydCAoc2VsZikge1xuICBpZiAoc2VsZi5hYm9ydCkge1xuICAgIHNlbGYuYWJvcnQoKVxuICB9IGVsc2Uge1xuICAgIHNlbGYub25FcnJvcihuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFNpZ25hbCAoc2VsZiwgc2lnbmFsKSB7XG4gIHNlbGZba1NpZ25hbF0gPSBudWxsXG4gIHNlbGZba0xpc3RlbmVyXSA9IG51bGxcblxuICBpZiAoIXNpZ25hbCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgYWJvcnQoc2VsZilcbiAgICByZXR1cm5cbiAgfVxuXG4gIHNlbGZba1NpZ25hbF0gPSBzaWduYWxcbiAgc2VsZltrTGlzdGVuZXJdID0gKCkgPT4ge1xuICAgIGFib3J0KHNlbGYpXG4gIH1cblxuICBhZGRBYm9ydExpc3RlbmVyKHNlbGZba1NpZ25hbF0sIHNlbGZba0xpc3RlbmVyXSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2lnbmFsIChzZWxmKSB7XG4gIGlmICghc2VsZltrU2lnbmFsXSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKCdyZW1vdmVFdmVudExpc3RlbmVyJyBpbiBzZWxmW2tTaWduYWxdKSB7XG4gICAgc2VsZltrU2lnbmFsXS5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIHNlbGZba0xpc3RlbmVyXSlcbiAgfSBlbHNlIHtcbiAgICBzZWxmW2tTaWduYWxdLnJlbW92ZUxpc3RlbmVyKCdhYm9ydCcsIHNlbGZba0xpc3RlbmVyXSlcbiAgfVxuXG4gIHNlbGZba1NpZ25hbF0gPSBudWxsXG4gIHNlbGZba0xpc3RlbmVyXSA9IG51bGxcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZFNpZ25hbCxcbiAgcmVtb3ZlU2lnbmFsXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IFJlYWRhYmxlID0gcmVxdWlyZSgnLi9yZWFkYWJsZScpXG5jb25zdCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBSZXF1ZXN0QWJvcnRlZEVycm9yXG59ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGdldFJlc29sdmVFcnJvckJvZHlDYWxsYmFjayB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgQXN5bmNSZXNvdXJjZSB9ID0gcmVxdWlyZSgnYXN5bmNfaG9va3MnKVxuY29uc3QgeyBhZGRTaWduYWwsIHJlbW92ZVNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hYm9ydC1zaWduYWwnKVxuXG5jbGFzcyBSZXF1ZXN0SGFuZGxlciBleHRlbmRzIEFzeW5jUmVzb3VyY2Uge1xuICBjb25zdHJ1Y3RvciAob3B0cywgY2FsbGJhY2spIHtcbiAgICBpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cycpXG4gICAgfVxuXG4gICAgY29uc3QgeyBzaWduYWwsIG1ldGhvZCwgb3BhcXVlLCBib2R5LCBvbkluZm8sIHJlc3BvbnNlSGVhZGVycywgdGhyb3dPbkVycm9yLCBoaWdoV2F0ZXJNYXJrIH0gPSBvcHRzXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgY2FsbGJhY2snKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGlnaFdhdGVyTWFyayAmJiAodHlwZW9mIGhpZ2hXYXRlck1hcmsgIT09ICdudW1iZXInIHx8IGhpZ2hXYXRlck1hcmsgPCAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgaGlnaFdhdGVyTWFyaycpXG4gICAgICB9XG5cbiAgICAgIGlmIChzaWduYWwgJiYgdHlwZW9mIHNpZ25hbC5vbiAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzaWduYWwgbXVzdCBiZSBhbiBFdmVudEVtaXR0ZXIgb3IgRXZlbnRUYXJnZXQnKVxuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG1ldGhvZCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChvbkluZm8gJiYgdHlwZW9mIG9uSW5mbyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25JbmZvIGNhbGxiYWNrJylcbiAgICAgIH1cblxuICAgICAgc3VwZXIoJ1VORElDSV9SRVFVRVNUJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh1dGlsLmlzU3RyZWFtKGJvZHkpKSB7XG4gICAgICAgIHV0aWwuZGVzdHJveShib2R5Lm9uKCdlcnJvcicsIHV0aWwubm9wKSwgZXJyKVxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwgbnVsbFxuICAgIHRoaXMub3BhcXVlID0gb3BhcXVlIHx8IG51bGxcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICB0aGlzLnJlcyA9IG51bGxcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuICAgIHRoaXMuYm9keSA9IGJvZHlcbiAgICB0aGlzLnRyYWlsZXJzID0ge31cbiAgICB0aGlzLmNvbnRleHQgPSBudWxsXG4gICAgdGhpcy5vbkluZm8gPSBvbkluZm8gfHwgbnVsbFxuICAgIHRoaXMudGhyb3dPbkVycm9yID0gdGhyb3dPbkVycm9yXG4gICAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaGlnaFdhdGVyTWFya1xuXG4gICAgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgIGJvZHkub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGRTaWduYWwodGhpcywgc2lnbmFsKVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCwgY29udGV4dCkge1xuICAgIGlmICghdGhpcy5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgfVxuXG4gIG9uSGVhZGVycyAoc3RhdHVzQ29kZSwgcmF3SGVhZGVycywgcmVzdW1lLCBzdGF0dXNNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBjYWxsYmFjaywgb3BhcXVlLCBhYm9ydCwgY29udGV4dCwgcmVzcG9uc2VIZWFkZXJzLCBoaWdoV2F0ZXJNYXJrIH0gPSB0aGlzXG5cbiAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzID09PSAncmF3JyA/IHV0aWwucGFyc2VSYXdIZWFkZXJzKHJhd0hlYWRlcnMpIDogdXRpbC5wYXJzZUhlYWRlcnMocmF3SGVhZGVycylcblxuICAgIGlmIChzdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICBpZiAodGhpcy5vbkluZm8pIHtcbiAgICAgICAgdGhpcy5vbkluZm8oeyBzdGF0dXNDb2RlLCBoZWFkZXJzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRIZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzID09PSAncmF3JyA/IHV0aWwucGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIDogaGVhZGVyc1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcGFyc2VkSGVhZGVyc1snY29udGVudC10eXBlJ11cbiAgICBjb25zdCBib2R5ID0gbmV3IFJlYWRhYmxlKHsgcmVzdW1lLCBhYm9ydCwgY29udGVudFR5cGUsIGhpZ2hXYXRlck1hcmsgfSlcblxuICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgdGhpcy5yZXMgPSBib2R5XG4gICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy50aHJvd09uRXJyb3IgJiYgc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrLCBudWxsLFxuICAgICAgICAgIHsgY2FsbGJhY2ssIGJvZHksIGNvbnRlbnRUeXBlLCBzdGF0dXNDb2RlLCBzdGF0dXNNZXNzYWdlLCBoZWFkZXJzIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIG51bGwsIHtcbiAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgdHJhaWxlcnM6IHRoaXMudHJhaWxlcnMsXG4gICAgICAgICAgb3BhcXVlLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRGF0YSAoY2h1bmspIHtcbiAgICBjb25zdCB7IHJlcyB9ID0gdGhpc1xuICAgIHJldHVybiByZXMucHVzaChjaHVuaylcbiAgfVxuXG4gIG9uQ29tcGxldGUgKHRyYWlsZXJzKSB7XG4gICAgY29uc3QgeyByZXMgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgdXRpbC5wYXJzZUhlYWRlcnModHJhaWxlcnMsIHRoaXMudHJhaWxlcnMpXG5cbiAgICByZXMucHVzaChudWxsKVxuICB9XG5cbiAgb25FcnJvciAoZXJyKSB7XG4gICAgY29uc3QgeyByZXMsIGNhbGxiYWNrLCBib2R5LCBvcGFxdWUgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAvLyBUT0RPOiBEb2VzIHRoaXMgbmVlZCBxdWV1ZU1pY3JvdGFzaz9cbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHRoaXMucnVuSW5Bc3luY1Njb3BlKGNhbGxiYWNrLCBudWxsLCBlcnIsIHsgb3BhcXVlIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXMpIHtcbiAgICAgIHRoaXMucmVzID0gbnVsbFxuICAgICAgLy8gRW5zdXJlIGFsbCBxdWV1ZWQgaGFuZGxlcnMgYXJlIGludm9rZWQgYmVmb3JlIGRlc3Ryb3lpbmcgcmVzLlxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB1dGlsLmRlc3Ryb3kocmVzLCBlcnIpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChib2R5KSB7XG4gICAgICB0aGlzLmJvZHkgPSBudWxsXG4gICAgICB1dGlsLmRlc3Ryb3koYm9keSwgZXJyKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0IChvcHRzLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICByZXF1ZXN0LmNhbGwodGhpcywgb3B0cywgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuZGlzcGF0Y2gob3B0cywgbmV3IFJlcXVlc3RIYW5kbGVyKG9wdHMsIGNhbGxiYWNrKSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICAgIGNvbnN0IG9wYXF1ZSA9IG9wdHMgJiYgb3B0cy5vcGFxdWVcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBjYWxsYmFjayhlcnIsIHsgb3BhcXVlIH0pKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWVzdFxubW9kdWxlLmV4cG9ydHMuUmVxdWVzdEhhbmRsZXIgPSBSZXF1ZXN0SGFuZGxlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGZpbmlzaGVkLCBQYXNzVGhyb3VnaCB9ID0gcmVxdWlyZSgnc3RyZWFtJylcbmNvbnN0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIEludmFsaWRSZXR1cm5WYWx1ZUVycm9yLFxuICBSZXF1ZXN0QWJvcnRlZEVycm9yXG59ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGdldFJlc29sdmVFcnJvckJvZHlDYWxsYmFjayB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgQXN5bmNSZXNvdXJjZSB9ID0gcmVxdWlyZSgnYXN5bmNfaG9va3MnKVxuY29uc3QgeyBhZGRTaWduYWwsIHJlbW92ZVNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hYm9ydC1zaWduYWwnKVxuXG5jbGFzcyBTdHJlYW1IYW5kbGVyIGV4dGVuZHMgQXN5bmNSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBmYWN0b3J5LCBjYWxsYmFjaykge1xuICAgIGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBvcHRzJylcbiAgICB9XG5cbiAgICBjb25zdCB7IHNpZ25hbCwgbWV0aG9kLCBvcGFxdWUsIGJvZHksIG9uSW5mbywgcmVzcG9uc2VIZWFkZXJzLCB0aHJvd09uRXJyb3IgfSA9IG9wdHNcblxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjYWxsYmFjaycpXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZmFjdG9yeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgZmFjdG9yeScpXG4gICAgICB9XG5cbiAgICAgIGlmIChzaWduYWwgJiYgdHlwZW9mIHNpZ25hbC5vbiAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzaWduYWwgbXVzdCBiZSBhbiBFdmVudEVtaXR0ZXIgb3IgRXZlbnRUYXJnZXQnKVxuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG1ldGhvZCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChvbkluZm8gJiYgdHlwZW9mIG9uSW5mbyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb25JbmZvIGNhbGxiYWNrJylcbiAgICAgIH1cblxuICAgICAgc3VwZXIoJ1VORElDSV9TVFJFQU0nKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHV0aWwuaXNTdHJlYW0oYm9keSkpIHtcbiAgICAgICAgdXRpbC5kZXN0cm95KGJvZHkub24oJ2Vycm9yJywgdXRpbC5ub3ApLCBlcnIpXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycyB8fCBudWxsXG4gICAgdGhpcy5vcGFxdWUgPSBvcGFxdWUgfHwgbnVsbFxuICAgIHRoaXMuZmFjdG9yeSA9IGZhY3RvcnlcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICB0aGlzLnJlcyA9IG51bGxcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuICAgIHRoaXMuY29udGV4dCA9IG51bGxcbiAgICB0aGlzLnRyYWlsZXJzID0gbnVsbFxuICAgIHRoaXMuYm9keSA9IGJvZHlcbiAgICB0aGlzLm9uSW5mbyA9IG9uSW5mbyB8fCBudWxsXG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB0aHJvd09uRXJyb3IgfHwgZmFsc2VcblxuICAgIGlmICh1dGlsLmlzU3RyZWFtKGJvZHkpKSB7XG4gICAgICBib2R5Lm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5vbkVycm9yKGVycilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgYWRkU2lnbmFsKHRoaXMsIHNpZ25hbClcbiAgfVxuXG4gIG9uQ29ubmVjdCAoYWJvcnQsIGNvbnRleHQpIHtcbiAgICBpZiAoIXRoaXMuY2FsbGJhY2spIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKClcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gIH1cblxuICBvbkhlYWRlcnMgKHN0YXR1c0NvZGUsIHJhd0hlYWRlcnMsIHJlc3VtZSwgc3RhdHVzTWVzc2FnZSkge1xuICAgIGNvbnN0IHsgZmFjdG9yeSwgb3BhcXVlLCBjb250ZXh0LCBjYWxsYmFjaywgcmVzcG9uc2VIZWFkZXJzIH0gPSB0aGlzXG5cbiAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzID09PSAncmF3JyA/IHV0aWwucGFyc2VSYXdIZWFkZXJzKHJhd0hlYWRlcnMpIDogdXRpbC5wYXJzZUhlYWRlcnMocmF3SGVhZGVycylcblxuICAgIGlmIChzdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICBpZiAodGhpcy5vbkluZm8pIHtcbiAgICAgICAgdGhpcy5vbkluZm8oeyBzdGF0dXNDb2RlLCBoZWFkZXJzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmZhY3RvcnkgPSBudWxsXG5cbiAgICBsZXQgcmVzXG5cbiAgICBpZiAodGhpcy50aHJvd09uRXJyb3IgJiYgc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgIGNvbnN0IHBhcnNlZEhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZUhlYWRlcnMocmF3SGVhZGVycykgOiBoZWFkZXJzXG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IHBhcnNlZEhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddXG4gICAgICByZXMgPSBuZXcgUGFzc1Rocm91Z2goKVxuXG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoZ2V0UmVzb2x2ZUVycm9yQm9keUNhbGxiYWNrLCBudWxsLFxuICAgICAgICB7IGNhbGxiYWNrLCBib2R5OiByZXMsIGNvbnRlbnRUeXBlLCBzdGF0dXNDb2RlLCBzdGF0dXNNZXNzYWdlLCBoZWFkZXJzIH1cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZhY3RvcnkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJlcyA9IHRoaXMucnVuSW5Bc3luY1Njb3BlKGZhY3RvcnksIG51bGwsIHtcbiAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgb3BhcXVlLFxuICAgICAgICBjb250ZXh0XG4gICAgICB9KVxuXG4gICAgICBpZiAoXG4gICAgICAgICFyZXMgfHxcbiAgICAgICAgdHlwZW9mIHJlcy53cml0ZSAhPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgcmVzLmVuZCAhPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgcmVzLm9uICE9PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRSZXR1cm5WYWx1ZUVycm9yKCdleHBlY3RlZCBXcml0YWJsZScpXG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IEF2b2lkIGZpbmlzaGVkLiBJdCByZWdpc3RlcnMgYW4gdW5uZWNlc3NhcnkgYW1vdW50IG9mIGxpc3RlbmVycy5cbiAgICAgIGZpbmlzaGVkKHJlcywgeyByZWFkYWJsZTogZmFsc2UgfSwgKGVycikgPT4ge1xuICAgICAgICBjb25zdCB7IGNhbGxiYWNrLCByZXMsIG9wYXF1ZSwgdHJhaWxlcnMsIGFib3J0IH0gPSB0aGlzXG5cbiAgICAgICAgdGhpcy5yZXMgPSBudWxsXG4gICAgICAgIGlmIChlcnIgfHwgIXJlcy5yZWFkYWJsZSkge1xuICAgICAgICAgIHV0aWwuZGVzdHJveShyZXMsIGVycilcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgICAgIHRoaXMucnVuSW5Bc3luY1Njb3BlKGNhbGxiYWNrLCBudWxsLCBlcnIgfHwgbnVsbCwgeyBvcGFxdWUsIHRyYWlsZXJzIH0pXG5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGFib3J0KClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXMub24oJ2RyYWluJywgcmVzdW1lKVxuXG4gICAgdGhpcy5yZXMgPSByZXNcblxuICAgIGNvbnN0IG5lZWREcmFpbiA9IHJlcy53cml0YWJsZU5lZWREcmFpbiAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHJlcy53cml0YWJsZU5lZWREcmFpblxuICAgICAgOiByZXMuX3dyaXRhYmxlU3RhdGUgJiYgcmVzLl93cml0YWJsZVN0YXRlLm5lZWREcmFpblxuXG4gICAgcmV0dXJuIG5lZWREcmFpbiAhPT0gdHJ1ZVxuICB9XG5cbiAgb25EYXRhIChjaHVuaykge1xuICAgIGNvbnN0IHsgcmVzIH0gPSB0aGlzXG5cbiAgICByZXR1cm4gcmVzID8gcmVzLndyaXRlKGNodW5rKSA6IHRydWVcbiAgfVxuXG4gIG9uQ29tcGxldGUgKHRyYWlsZXJzKSB7XG4gICAgY29uc3QgeyByZXMgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMudHJhaWxlcnMgPSB1dGlsLnBhcnNlSGVhZGVycyh0cmFpbGVycylcblxuICAgIHJlcy5lbmQoKVxuICB9XG5cbiAgb25FcnJvciAoZXJyKSB7XG4gICAgY29uc3QgeyByZXMsIGNhbGxiYWNrLCBvcGFxdWUsIGJvZHkgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgdGhpcy5mYWN0b3J5ID0gbnVsbFxuXG4gICAgaWYgKHJlcykge1xuICAgICAgdGhpcy5yZXMgPSBudWxsXG4gICAgICB1dGlsLmRlc3Ryb3kocmVzLCBlcnIpXG4gICAgfSBlbHNlIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIGVyciwgeyBvcGFxdWUgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGJvZHkpIHtcbiAgICAgIHRoaXMuYm9keSA9IG51bGxcbiAgICAgIHV0aWwuZGVzdHJveShib2R5LCBlcnIpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmVhbSAob3B0cywgZmFjdG9yeSwgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc3RyZWFtLmNhbGwodGhpcywgb3B0cywgZmFjdG9yeSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuZGlzcGF0Y2gob3B0cywgbmV3IFN0cmVhbUhhbmRsZXIob3B0cywgZmFjdG9yeSwgY2FsbGJhY2spKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgY29uc3Qgb3BhcXVlID0gb3B0cyAmJiBvcHRzLm9wYXF1ZVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKGVyciwgeyBvcGFxdWUgfSkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJlYW1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3Qge1xuICBSZWFkYWJsZSxcbiAgRHVwbGV4LFxuICBQYXNzVGhyb3VnaFxufSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBJbnZhbGlkUmV0dXJuVmFsdWVFcnJvcixcbiAgUmVxdWVzdEFib3J0ZWRFcnJvclxufSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBBc3luY1Jlc291cmNlIH0gPSByZXF1aXJlKCdhc3luY19ob29rcycpXG5jb25zdCB7IGFkZFNpZ25hbCwgcmVtb3ZlU2lnbmFsIH0gPSByZXF1aXJlKCcuL2Fib3J0LXNpZ25hbCcpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuXG5jb25zdCBrUmVzdW1lID0gU3ltYm9sKCdyZXN1bWUnKVxuXG5jbGFzcyBQaXBlbGluZVJlcXVlc3QgZXh0ZW5kcyBSZWFkYWJsZSB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBzdXBlcih7IGF1dG9EZXN0cm95OiB0cnVlIH0pXG5cbiAgICB0aGlzW2tSZXN1bWVdID0gbnVsbFxuICB9XG5cbiAgX3JlYWQgKCkge1xuICAgIGNvbnN0IHsgW2tSZXN1bWVdOiByZXN1bWUgfSA9IHRoaXNcblxuICAgIGlmIChyZXN1bWUpIHtcbiAgICAgIHRoaXNba1Jlc3VtZV0gPSBudWxsXG4gICAgICByZXN1bWUoKVxuICAgIH1cbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fcmVhZCgpXG5cbiAgICBjYWxsYmFjayhlcnIpXG4gIH1cbn1cblxuY2xhc3MgUGlwZWxpbmVSZXNwb25zZSBleHRlbmRzIFJlYWRhYmxlIHtcbiAgY29uc3RydWN0b3IgKHJlc3VtZSkge1xuICAgIHN1cGVyKHsgYXV0b0Rlc3Ryb3k6IHRydWUgfSlcbiAgICB0aGlzW2tSZXN1bWVdID0gcmVzdW1lXG4gIH1cblxuICBfcmVhZCAoKSB7XG4gICAgdGhpc1trUmVzdW1lXSgpXG4gIH1cblxuICBfZGVzdHJveSAoZXJyLCBjYWxsYmFjaykge1xuICAgIGlmICghZXJyICYmICF0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgIGVyciA9IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKClcbiAgICB9XG5cbiAgICBjYWxsYmFjayhlcnIpXG4gIH1cbn1cblxuY2xhc3MgUGlwZWxpbmVIYW5kbGVyIGV4dGVuZHMgQXN5bmNSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9wdHMnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGhhbmRsZXInKVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2lnbmFsLCBtZXRob2QsIG9wYXF1ZSwgb25JbmZvLCByZXNwb25zZUhlYWRlcnMgfSA9IG9wdHNcblxuICAgIGlmIChzaWduYWwgJiYgdHlwZW9mIHNpZ25hbC5vbiAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc2lnbmFsIG11c3QgYmUgYW4gRXZlbnRFbWl0dGVyIG9yIEV2ZW50VGFyZ2V0JylcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09PSAnQ09OTkVDVCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBtZXRob2QnKVxuICAgIH1cblxuICAgIGlmIChvbkluZm8gJiYgdHlwZW9mIG9uSW5mbyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9uSW5mbyBjYWxsYmFjaycpXG4gICAgfVxuXG4gICAgc3VwZXIoJ1VORElDSV9QSVBFTElORScpXG5cbiAgICB0aGlzLm9wYXF1ZSA9IG9wYXF1ZSB8fCBudWxsXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwgbnVsbFxuICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXJcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuICAgIHRoaXMuY29udGV4dCA9IG51bGxcbiAgICB0aGlzLm9uSW5mbyA9IG9uSW5mbyB8fCBudWxsXG5cbiAgICB0aGlzLnJlcSA9IG5ldyBQaXBlbGluZVJlcXVlc3QoKS5vbignZXJyb3InLCB1dGlsLm5vcClcblxuICAgIHRoaXMucmV0ID0gbmV3IER1cGxleCh7XG4gICAgICByZWFkYWJsZU9iamVjdE1vZGU6IG9wdHMub2JqZWN0TW9kZSxcbiAgICAgIGF1dG9EZXN0cm95OiB0cnVlLFxuICAgICAgcmVhZDogKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGJvZHkgfSA9IHRoaXNcblxuICAgICAgICBpZiAoYm9keSAmJiBib2R5LnJlc3VtZSkge1xuICAgICAgICAgIGJvZHkucmVzdW1lKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHdyaXRlOiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7IHJlcSB9ID0gdGhpc1xuXG4gICAgICAgIGlmIChyZXEucHVzaChjaHVuaywgZW5jb2RpbmcpIHx8IHJlcS5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxW2tSZXN1bWVdID0gY2FsbGJhY2tcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc3Ryb3k6IChlcnIsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYm9keSwgcmVxLCByZXMsIHJldCwgYWJvcnQgfSA9IHRoaXNcblxuICAgICAgICBpZiAoIWVyciAmJiAhcmV0Ll9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgICAgICBlcnIgPSBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWJvcnQgJiYgZXJyKSB7XG4gICAgICAgICAgYWJvcnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgdXRpbC5kZXN0cm95KGJvZHksIGVycilcbiAgICAgICAgdXRpbC5kZXN0cm95KHJlcSwgZXJyKVxuICAgICAgICB1dGlsLmRlc3Ryb3kocmVzLCBlcnIpXG5cbiAgICAgICAgcmVtb3ZlU2lnbmFsKHRoaXMpXG5cbiAgICAgICAgY2FsbGJhY2soZXJyKVxuICAgICAgfVxuICAgIH0pLm9uKCdwcmVmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcSB9ID0gdGhpc1xuXG4gICAgICAvLyBOb2RlIDwgMTUgZG9lcyBub3QgY2FsbCBfZmluYWwgaW4gc2FtZSB0aWNrLlxuICAgICAgcmVxLnB1c2gobnVsbClcbiAgICB9KVxuXG4gICAgdGhpcy5yZXMgPSBudWxsXG5cbiAgICBhZGRTaWduYWwodGhpcywgc2lnbmFsKVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgcmV0LCByZXMgfSA9IHRoaXNcblxuICAgIGFzc2VydCghcmVzLCAncGlwZWxpbmUgY2Fubm90IGJlIHJldHJpZWQnKVxuXG4gICAgaWYgKHJldC5kZXN0cm95ZWQpIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKClcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gIH1cblxuICBvbkhlYWRlcnMgKHN0YXR1c0NvZGUsIHJhd0hlYWRlcnMsIHJlc3VtZSkge1xuICAgIGNvbnN0IHsgb3BhcXVlLCBoYW5kbGVyLCBjb250ZXh0IH0gPSB0aGlzXG5cbiAgICBpZiAoc3RhdHVzQ29kZSA8IDIwMCkge1xuICAgICAgaWYgKHRoaXMub25JbmZvKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLnJlc3BvbnNlSGVhZGVycyA9PT0gJ3JhdycgPyB1dGlsLnBhcnNlUmF3SGVhZGVycyhyYXdIZWFkZXJzKSA6IHV0aWwucGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpXG4gICAgICAgIHRoaXMub25JbmZvKHsgc3RhdHVzQ29kZSwgaGVhZGVycyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5yZXMgPSBuZXcgUGlwZWxpbmVSZXNwb25zZShyZXN1bWUpXG5cbiAgICBsZXQgYm9keVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmhhbmRsZXIgPSBudWxsXG4gICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5yZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZVJhd0hlYWRlcnMocmF3SGVhZGVycykgOiB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuICAgICAgYm9keSA9IHRoaXMucnVuSW5Bc3luY1Njb3BlKGhhbmRsZXIsIG51bGwsIHtcbiAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgb3BhcXVlLFxuICAgICAgICBib2R5OiB0aGlzLnJlcyxcbiAgICAgICAgY29udGV4dFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMucmVzLm9uKCdlcnJvcicsIHV0aWwubm9wKVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuXG4gICAgaWYgKCFib2R5IHx8IHR5cGVvZiBib2R5Lm9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFJldHVyblZhbHVlRXJyb3IoJ2V4cGVjdGVkIFJlYWRhYmxlJylcbiAgICB9XG5cbiAgICBib2R5XG4gICAgICAub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgY29uc3QgeyByZXQsIGJvZHkgfSA9IHRoaXNcblxuICAgICAgICBpZiAoIXJldC5wdXNoKGNodW5rKSAmJiBib2R5LnBhdXNlKSB7XG4gICAgICAgICAgYm9keS5wYXVzZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBjb25zdCB7IHJldCB9ID0gdGhpc1xuXG4gICAgICAgIHV0aWwuZGVzdHJveShyZXQsIGVycilcbiAgICAgIH0pXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyByZXQgfSA9IHRoaXNcblxuICAgICAgICByZXQucHVzaChudWxsKVxuICAgICAgfSlcbiAgICAgIC5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmV0IH0gPSB0aGlzXG5cbiAgICAgICAgaWYgKCFyZXQuX3JlYWRhYmxlU3RhdGUuZW5kZWQpIHtcbiAgICAgICAgICB1dGlsLmRlc3Ryb3kocmV0LCBuZXcgUmVxdWVzdEFib3J0ZWRFcnJvcigpKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgdGhpcy5ib2R5ID0gYm9keVxuICB9XG5cbiAgb25EYXRhIChjaHVuaykge1xuICAgIGNvbnN0IHsgcmVzIH0gPSB0aGlzXG4gICAgcmV0dXJuIHJlcy5wdXNoKGNodW5rKVxuICB9XG5cbiAgb25Db21wbGV0ZSAodHJhaWxlcnMpIHtcbiAgICBjb25zdCB7IHJlcyB9ID0gdGhpc1xuICAgIHJlcy5wdXNoKG51bGwpXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBjb25zdCB7IHJldCB9ID0gdGhpc1xuICAgIHRoaXMuaGFuZGxlciA9IG51bGxcbiAgICB1dGlsLmRlc3Ryb3kocmV0LCBlcnIpXG4gIH1cbn1cblxuZnVuY3Rpb24gcGlwZWxpbmUgKG9wdHMsIGhhbmRsZXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwaXBlbGluZUhhbmRsZXIgPSBuZXcgUGlwZWxpbmVIYW5kbGVyKG9wdHMsIGhhbmRsZXIpXG4gICAgdGhpcy5kaXNwYXRjaCh7IC4uLm9wdHMsIGJvZHk6IHBpcGVsaW5lSGFuZGxlci5yZXEgfSwgcGlwZWxpbmVIYW5kbGVyKVxuICAgIHJldHVybiBwaXBlbGluZUhhbmRsZXIucmV0XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBuZXcgUGFzc1Rocm91Z2goKS5kZXN0cm95KGVycilcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBpcGVsaW5lXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIFJlcXVlc3RBYm9ydGVkRXJyb3IsIFNvY2tldEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCB7IEFzeW5jUmVzb3VyY2UgfSA9IHJlcXVpcmUoJ2FzeW5jX2hvb2tzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBhZGRTaWduYWwsIHJlbW92ZVNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hYm9ydC1zaWduYWwnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcblxuY2xhc3MgVXBncmFkZUhhbmRsZXIgZXh0ZW5kcyBBc3luY1Jlc291cmNlIHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9wdHMnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW52YWxpZCBjYWxsYmFjaycpXG4gICAgfVxuXG4gICAgY29uc3QgeyBzaWduYWwsIG9wYXF1ZSwgcmVzcG9uc2VIZWFkZXJzIH0gPSBvcHRzXG5cbiAgICBpZiAoc2lnbmFsICYmIHR5cGVvZiBzaWduYWwub24gIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NpZ25hbCBtdXN0IGJlIGFuIEV2ZW50RW1pdHRlciBvciBFdmVudFRhcmdldCcpXG4gICAgfVxuXG4gICAgc3VwZXIoJ1VORElDSV9VUEdSQURFJylcblxuICAgIHRoaXMucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzIHx8IG51bGxcbiAgICB0aGlzLm9wYXF1ZSA9IG9wYXF1ZSB8fCBudWxsXG4gICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgdGhpcy5hYm9ydCA9IG51bGxcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsXG5cbiAgICBhZGRTaWduYWwodGhpcywgc2lnbmFsKVxuICB9XG5cbiAgb25Db25uZWN0IChhYm9ydCwgY29udGV4dCkge1xuICAgIGlmICghdGhpcy5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RBYm9ydGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuYWJvcnQgPSBhYm9ydFxuICAgIHRoaXMuY29udGV4dCA9IG51bGxcbiAgfVxuXG4gIG9uSGVhZGVycyAoKSB7XG4gICAgdGhyb3cgbmV3IFNvY2tldEVycm9yKCdiYWQgdXBncmFkZScsIG51bGwpXG4gIH1cblxuICBvblVwZ3JhZGUgKHN0YXR1c0NvZGUsIHJhd0hlYWRlcnMsIHNvY2tldCkge1xuICAgIGNvbnN0IHsgY2FsbGJhY2ssIG9wYXF1ZSwgY29udGV4dCB9ID0gdGhpc1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHN0YXR1c0NvZGUsIDEwMSlcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5yZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZVJhd0hlYWRlcnMocmF3SGVhZGVycykgOiB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuICAgIHRoaXMucnVuSW5Bc3luY1Njb3BlKGNhbGxiYWNrLCBudWxsLCBudWxsLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgc29ja2V0LFxuICAgICAgb3BhcXVlLFxuICAgICAgY29udGV4dFxuICAgIH0pXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBjb25zdCB7IGNhbGxiYWNrLCBvcGFxdWUgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLnJ1bkluQXN5bmNTY29wZShjYWxsYmFjaywgbnVsbCwgZXJyLCB7IG9wYXF1ZSB9KVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBncmFkZSAob3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdXBncmFkZS5jYWxsKHRoaXMsIG9wdHMsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShkYXRhKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1cGdyYWRlSGFuZGxlciA9IG5ldyBVcGdyYWRlSGFuZGxlcihvcHRzLCBjYWxsYmFjaylcbiAgICB0aGlzLmRpc3BhdGNoKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRob2Q6IG9wdHMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgdXBncmFkZTogb3B0cy5wcm90b2NvbCB8fCAnV2Vic29ja2V0J1xuICAgIH0sIHVwZ3JhZGVIYW5kbGVyKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgY29uc3Qgb3BhcXVlID0gb3B0cyAmJiBvcHRzLm9wYXF1ZVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKGVyciwgeyBvcGFxdWUgfSkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1cGdyYWRlXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgQXN5bmNSZXNvdXJjZSB9ID0gcmVxdWlyZSgnYXN5bmNfaG9va3MnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgUmVxdWVzdEFib3J0ZWRFcnJvciwgU29ja2V0RXJyb3IgfSA9IHJlcXVpcmUoJy4uL2NvcmUvZXJyb3JzJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBhZGRTaWduYWwsIHJlbW92ZVNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hYm9ydC1zaWduYWwnKVxuXG5jbGFzcyBDb25uZWN0SGFuZGxlciBleHRlbmRzIEFzeW5jUmVzb3VyY2Uge1xuICBjb25zdHJ1Y3RvciAob3B0cywgY2FsbGJhY2spIHtcbiAgICBpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgb3B0cycpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIGNhbGxiYWNrJylcbiAgICB9XG5cbiAgICBjb25zdCB7IHNpZ25hbCwgb3BhcXVlLCByZXNwb25zZUhlYWRlcnMgfSA9IG9wdHNcblxuICAgIGlmIChzaWduYWwgJiYgdHlwZW9mIHNpZ25hbC5vbiAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc2lnbmFsIG11c3QgYmUgYW4gRXZlbnRFbWl0dGVyIG9yIEV2ZW50VGFyZ2V0JylcbiAgICB9XG5cbiAgICBzdXBlcignVU5ESUNJX0NPTk5FQ1QnKVxuXG4gICAgdGhpcy5vcGFxdWUgPSBvcGFxdWUgfHwgbnVsbFxuICAgIHRoaXMucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzIHx8IG51bGxcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuXG4gICAgYWRkU2lnbmFsKHRoaXMsIHNpZ25hbClcbiAgfVxuXG4gIG9uQ29ubmVjdCAoYWJvcnQsIGNvbnRleHQpIHtcbiAgICBpZiAoIXRoaXMuY2FsbGJhY2spIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKClcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0ID0gYWJvcnRcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gIH1cblxuICBvbkhlYWRlcnMgKCkge1xuICAgIHRocm93IG5ldyBTb2NrZXRFcnJvcignYmFkIGNvbm5lY3QnLCBudWxsKVxuICB9XG5cbiAgb25VcGdyYWRlIChzdGF0dXNDb2RlLCByYXdIZWFkZXJzLCBzb2NrZXQpIHtcbiAgICBjb25zdCB7IGNhbGxiYWNrLCBvcGFxdWUsIGNvbnRleHQgfSA9IHRoaXNcblxuICAgIHJlbW92ZVNpZ25hbCh0aGlzKVxuXG4gICAgdGhpcy5jYWxsYmFjayA9IG51bGxcblxuICAgIGxldCBoZWFkZXJzID0gcmF3SGVhZGVyc1xuICAgIC8vIEluZGljYXRlcyBpcyBhbiBIVFRQMlNlc3Npb25cbiAgICBpZiAoaGVhZGVycyAhPSBudWxsKSB7XG4gICAgICBoZWFkZXJzID0gdGhpcy5yZXNwb25zZUhlYWRlcnMgPT09ICdyYXcnID8gdXRpbC5wYXJzZVJhd0hlYWRlcnMocmF3SGVhZGVycykgOiB1dGlsLnBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKVxuICAgIH1cblxuICAgIHRoaXMucnVuSW5Bc3luY1Njb3BlKGNhbGxiYWNrLCBudWxsLCBudWxsLCB7XG4gICAgICBzdGF0dXNDb2RlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIHNvY2tldCxcbiAgICAgIG9wYXF1ZSxcbiAgICAgIGNvbnRleHRcbiAgICB9KVxuICB9XG5cbiAgb25FcnJvciAoZXJyKSB7XG4gICAgY29uc3QgeyBjYWxsYmFjaywgb3BhcXVlIH0gPSB0aGlzXG5cbiAgICByZW1vdmVTaWduYWwodGhpcylcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW5JbkFzeW5jU2NvcGUoY2FsbGJhY2ssIG51bGwsIGVyciwgeyBvcGFxdWUgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbm5lY3QgKG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbm5lY3QuY2FsbCh0aGlzLCBvcHRzLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoZGF0YSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29ubmVjdEhhbmRsZXIgPSBuZXcgQ29ubmVjdEhhbmRsZXIob3B0cywgY2FsbGJhY2spXG4gICAgdGhpcy5kaXNwYXRjaCh7IC4uLm9wdHMsIG1ldGhvZDogJ0NPTk5FQ1QnIH0sIGNvbm5lY3RIYW5kbGVyKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgY29uc3Qgb3BhcXVlID0gb3B0cyAmJiBvcHRzLm9wYXF1ZVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNhbGxiYWNrKGVyciwgeyBvcGFxdWUgfSkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25uZWN0XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzLnJlcXVlc3QgPSByZXF1aXJlKCcuL2FwaS1yZXF1ZXN0Jylcbm1vZHVsZS5leHBvcnRzLnN0cmVhbSA9IHJlcXVpcmUoJy4vYXBpLXN0cmVhbScpXG5tb2R1bGUuZXhwb3J0cy5waXBlbGluZSA9IHJlcXVpcmUoJy4vYXBpLXBpcGVsaW5lJylcbm1vZHVsZS5leHBvcnRzLnVwZ3JhZGUgPSByZXF1aXJlKCcuL2FwaS11cGdyYWRlJylcbm1vZHVsZS5leHBvcnRzLmNvbm5lY3QgPSByZXF1aXJlKCcuL2FwaS1jb25uZWN0JylcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBVbmRpY2lFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuXG5jbGFzcyBNb2NrTm90TWF0Y2hlZEVycm9yIGV4dGVuZHMgVW5kaWNpRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgTW9ja05vdE1hdGNoZWRFcnJvcilcbiAgICB0aGlzLm5hbWUgPSAnTW9ja05vdE1hdGNoZWRFcnJvcidcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdUaGUgcmVxdWVzdCBkb2VzIG5vdCBtYXRjaCBhbnkgcmVnaXN0ZXJlZCBtb2NrIGRpc3BhdGNoZXMnXG4gICAgdGhpcy5jb2RlID0gJ1VORF9NT0NLX0VSUl9NT0NLX05PVF9NQVRDSEVEJ1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNb2NrTm90TWF0Y2hlZEVycm9yXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBrQWdlbnQ6IFN5bWJvbCgnYWdlbnQnKSxcbiAga09wdGlvbnM6IFN5bWJvbCgnb3B0aW9ucycpLFxuICBrRmFjdG9yeTogU3ltYm9sKCdmYWN0b3J5JyksXG4gIGtEaXNwYXRjaGVzOiBTeW1ib2woJ2Rpc3BhdGNoZXMnKSxcbiAga0Rpc3BhdGNoS2V5OiBTeW1ib2woJ2Rpc3BhdGNoIGtleScpLFxuICBrRGVmYXVsdEhlYWRlcnM6IFN5bWJvbCgnZGVmYXVsdCBoZWFkZXJzJyksXG4gIGtEZWZhdWx0VHJhaWxlcnM6IFN5bWJvbCgnZGVmYXVsdCB0cmFpbGVycycpLFxuICBrQ29udGVudExlbmd0aDogU3ltYm9sKCdjb250ZW50IGxlbmd0aCcpLFxuICBrTW9ja0FnZW50OiBTeW1ib2woJ21vY2sgYWdlbnQnKSxcbiAga01vY2tBZ2VudFNldDogU3ltYm9sKCdtb2NrIGFnZW50IHNldCcpLFxuICBrTW9ja0FnZW50R2V0OiBTeW1ib2woJ21vY2sgYWdlbnQgZ2V0JyksXG4gIGtNb2NrRGlzcGF0Y2g6IFN5bWJvbCgnbW9jayBkaXNwYXRjaCcpLFxuICBrQ2xvc2U6IFN5bWJvbCgnY2xvc2UnKSxcbiAga09yaWdpbmFsQ2xvc2U6IFN5bWJvbCgnb3JpZ2luYWwgYWdlbnQgY2xvc2UnKSxcbiAga09yaWdpbjogU3ltYm9sKCdvcmlnaW4nKSxcbiAga0lzTW9ja0FjdGl2ZTogU3ltYm9sKCdpcyBtb2NrIGFjdGl2ZScpLFxuICBrTmV0Q29ubmVjdDogU3ltYm9sKCduZXQgY29ubmVjdCcpLFxuICBrR2V0TmV0Q29ubmVjdDogU3ltYm9sKCdnZXQgbmV0IGNvbm5lY3QnKSxcbiAga0Nvbm5lY3RlZDogU3ltYm9sKCdjb25uZWN0ZWQnKVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IE1vY2tOb3RNYXRjaGVkRXJyb3IgfSA9IHJlcXVpcmUoJy4vbW9jay1lcnJvcnMnKVxuY29uc3Qge1xuICBrRGlzcGF0Y2hlcyxcbiAga01vY2tBZ2VudCxcbiAga09yaWdpbmFsRGlzcGF0Y2gsXG4gIGtPcmlnaW4sXG4gIGtHZXROZXRDb25uZWN0XG59ID0gcmVxdWlyZSgnLi9tb2NrLXN5bWJvbHMnKVxuY29uc3QgeyBidWlsZFVSTCwgbm9wIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBTVEFUVVNfQ09ERVMgfSA9IHJlcXVpcmUoJ2h0dHAnKVxuY29uc3Qge1xuICB0eXBlczoge1xuICAgIGlzUHJvbWlzZVxuICB9XG59ID0gcmVxdWlyZSgndXRpbCcpXG5cbmZ1bmN0aW9uIG1hdGNoVmFsdWUgKG1hdGNoLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIG1hdGNoID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBtYXRjaCA9PT0gdmFsdWVcbiAgfVxuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gbWF0Y2gudGVzdCh2YWx1ZSlcbiAgfVxuICBpZiAodHlwZW9mIG1hdGNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1hdGNoKHZhbHVlKSA9PT0gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBsb3dlckNhc2VFbnRyaWVzIChoZWFkZXJzKSB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoaGVhZGVycykubWFwKChbaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWVdKSA9PiB7XG4gICAgICByZXR1cm4gW2hlYWRlck5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSwgaGVhZGVyVmFsdWVdXG4gICAgfSlcbiAgKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi9pbmRleCcpLkhlYWRlcnN8c3RyaW5nW118UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gaGVhZGVyc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICovXG5mdW5jdGlvbiBnZXRIZWFkZXJCeU5hbWUgKGhlYWRlcnMsIGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgaWYgKGhlYWRlcnNbaV0udG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0ga2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgcmV0dXJuIGhlYWRlcnNbaSArIDFdXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9IGVsc2UgaWYgKHR5cGVvZiBoZWFkZXJzLmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBoZWFkZXJzLmdldChrZXkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxvd2VyQ2FzZUVudHJpZXMoaGVhZGVycylba2V5LnRvTG9jYWxlTG93ZXJDYXNlKCldXG4gIH1cbn1cblxuLyoqIEBwYXJhbSB7c3RyaW5nW119IGhlYWRlcnMgKi9cbmZ1bmN0aW9uIGJ1aWxkSGVhZGVyc0Zyb21BcnJheSAoaGVhZGVycykgeyAvLyBmZXRjaCBIZWFkZXJzTGlzdFxuICBjb25zdCBjbG9uZSA9IGhlYWRlcnMuc2xpY2UoKVxuICBjb25zdCBlbnRyaWVzID0gW11cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsb25lLmxlbmd0aDsgaW5kZXggKz0gMikge1xuICAgIGVudHJpZXMucHVzaChbY2xvbmVbaW5kZXhdLCBjbG9uZVtpbmRleCArIDFdXSlcbiAgfVxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpXG59XG5cbmZ1bmN0aW9uIG1hdGNoSGVhZGVycyAobW9ja0Rpc3BhdGNoLCBoZWFkZXJzKSB7XG4gIGlmICh0eXBlb2YgbW9ja0Rpc3BhdGNoLmhlYWRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkgeyAvLyBmZXRjaCBIZWFkZXJzTGlzdFxuICAgICAgaGVhZGVycyA9IGJ1aWxkSGVhZGVyc0Zyb21BcnJheShoZWFkZXJzKVxuICAgIH1cbiAgICByZXR1cm4gbW9ja0Rpc3BhdGNoLmhlYWRlcnMoaGVhZGVycyA/IGxvd2VyQ2FzZUVudHJpZXMoaGVhZGVycykgOiB7fSlcbiAgfVxuICBpZiAodHlwZW9mIG1vY2tEaXNwYXRjaC5oZWFkZXJzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKHR5cGVvZiBoZWFkZXJzICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgbW9ja0Rpc3BhdGNoLmhlYWRlcnMgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IFttYXRjaEhlYWRlck5hbWUsIG1hdGNoSGVhZGVyVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1vY2tEaXNwYXRjaC5oZWFkZXJzKSkge1xuICAgIGNvbnN0IGhlYWRlclZhbHVlID0gZ2V0SGVhZGVyQnlOYW1lKGhlYWRlcnMsIG1hdGNoSGVhZGVyTmFtZSlcblxuICAgIGlmICghbWF0Y2hWYWx1ZShtYXRjaEhlYWRlclZhbHVlLCBoZWFkZXJWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBzYWZlVXJsIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgY29uc3QgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnPycpXG5cbiAgaWYgKHBhdGhTZWdtZW50cy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgY29uc3QgcXAgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhdGhTZWdtZW50cy5wb3AoKSlcbiAgcXAuc29ydCgpXG4gIHJldHVybiBbLi4ucGF0aFNlZ21lbnRzLCBxcC50b1N0cmluZygpXS5qb2luKCc/Jylcbn1cblxuZnVuY3Rpb24gbWF0Y2hLZXkgKG1vY2tEaXNwYXRjaCwgeyBwYXRoLCBtZXRob2QsIGJvZHksIGhlYWRlcnMgfSkge1xuICBjb25zdCBwYXRoTWF0Y2ggPSBtYXRjaFZhbHVlKG1vY2tEaXNwYXRjaC5wYXRoLCBwYXRoKVxuICBjb25zdCBtZXRob2RNYXRjaCA9IG1hdGNoVmFsdWUobW9ja0Rpc3BhdGNoLm1ldGhvZCwgbWV0aG9kKVxuICBjb25zdCBib2R5TWF0Y2ggPSB0eXBlb2YgbW9ja0Rpc3BhdGNoLmJvZHkgIT09ICd1bmRlZmluZWQnID8gbWF0Y2hWYWx1ZShtb2NrRGlzcGF0Y2guYm9keSwgYm9keSkgOiB0cnVlXG4gIGNvbnN0IGhlYWRlcnNNYXRjaCA9IG1hdGNoSGVhZGVycyhtb2NrRGlzcGF0Y2gsIGhlYWRlcnMpXG4gIHJldHVybiBwYXRoTWF0Y2ggJiYgbWV0aG9kTWF0Y2ggJiYgYm9keU1hdGNoICYmIGhlYWRlcnNNYXRjaFxufVxuXG5mdW5jdGlvbiBnZXRSZXNwb25zZURhdGEgKGRhdGEpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgIHJldHVybiBkYXRhXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tEaXNwYXRjaCAobW9ja0Rpc3BhdGNoZXMsIGtleSkge1xuICBjb25zdCBiYXNlUGF0aCA9IGtleS5xdWVyeSA/IGJ1aWxkVVJMKGtleS5wYXRoLCBrZXkucXVlcnkpIDoga2V5LnBhdGhcbiAgY29uc3QgcmVzb2x2ZWRQYXRoID0gdHlwZW9mIGJhc2VQYXRoID09PSAnc3RyaW5nJyA/IHNhZmVVcmwoYmFzZVBhdGgpIDogYmFzZVBhdGhcblxuICAvLyBNYXRjaCBwYXRoXG4gIGxldCBtYXRjaGVkTW9ja0Rpc3BhdGNoZXMgPSBtb2NrRGlzcGF0Y2hlcy5maWx0ZXIoKHsgY29uc3VtZWQgfSkgPT4gIWNvbnN1bWVkKS5maWx0ZXIoKHsgcGF0aCB9KSA9PiBtYXRjaFZhbHVlKHNhZmVVcmwocGF0aCksIHJlc29sdmVkUGF0aCkpXG4gIGlmIChtYXRjaGVkTW9ja0Rpc3BhdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IE1vY2tOb3RNYXRjaGVkRXJyb3IoYE1vY2sgZGlzcGF0Y2ggbm90IG1hdGNoZWQgZm9yIHBhdGggJyR7cmVzb2x2ZWRQYXRofSdgKVxuICB9XG5cbiAgLy8gTWF0Y2ggbWV0aG9kXG4gIG1hdGNoZWRNb2NrRGlzcGF0Y2hlcyA9IG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5maWx0ZXIoKHsgbWV0aG9kIH0pID0+IG1hdGNoVmFsdWUobWV0aG9kLCBrZXkubWV0aG9kKSlcbiAgaWYgKG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgTW9ja05vdE1hdGNoZWRFcnJvcihgTW9jayBkaXNwYXRjaCBub3QgbWF0Y2hlZCBmb3IgbWV0aG9kICcke2tleS5tZXRob2R9J2ApXG4gIH1cblxuICAvLyBNYXRjaCBib2R5XG4gIG1hdGNoZWRNb2NrRGlzcGF0Y2hlcyA9IG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5maWx0ZXIoKHsgYm9keSB9KSA9PiB0eXBlb2YgYm9keSAhPT0gJ3VuZGVmaW5lZCcgPyBtYXRjaFZhbHVlKGJvZHksIGtleS5ib2R5KSA6IHRydWUpXG4gIGlmIChtYXRjaGVkTW9ja0Rpc3BhdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IE1vY2tOb3RNYXRjaGVkRXJyb3IoYE1vY2sgZGlzcGF0Y2ggbm90IG1hdGNoZWQgZm9yIGJvZHkgJyR7a2V5LmJvZHl9J2ApXG4gIH1cblxuICAvLyBNYXRjaCBoZWFkZXJzXG4gIG1hdGNoZWRNb2NrRGlzcGF0Y2hlcyA9IG1hdGNoZWRNb2NrRGlzcGF0Y2hlcy5maWx0ZXIoKG1vY2tEaXNwYXRjaCkgPT4gbWF0Y2hIZWFkZXJzKG1vY2tEaXNwYXRjaCwga2V5LmhlYWRlcnMpKVxuICBpZiAobWF0Y2hlZE1vY2tEaXNwYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBNb2NrTm90TWF0Y2hlZEVycm9yKGBNb2NrIGRpc3BhdGNoIG5vdCBtYXRjaGVkIGZvciBoZWFkZXJzICcke3R5cGVvZiBrZXkuaGVhZGVycyA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShrZXkuaGVhZGVycykgOiBrZXkuaGVhZGVyc30nYClcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVkTW9ja0Rpc3BhdGNoZXNbMF1cbn1cblxuZnVuY3Rpb24gYWRkTW9ja0Rpc3BhdGNoIChtb2NrRGlzcGF0Y2hlcywga2V5LCBkYXRhKSB7XG4gIGNvbnN0IGJhc2VEYXRhID0geyB0aW1lc0ludm9rZWQ6IDAsIHRpbWVzOiAxLCBwZXJzaXN0OiBmYWxzZSwgY29uc3VtZWQ6IGZhbHNlIH1cbiAgY29uc3QgcmVwbHlEYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicgPyB7IGNhbGxiYWNrOiBkYXRhIH0gOiB7IC4uLmRhdGEgfVxuICBjb25zdCBuZXdNb2NrRGlzcGF0Y2ggPSB7IC4uLmJhc2VEYXRhLCAuLi5rZXksIHBlbmRpbmc6IHRydWUsIGRhdGE6IHsgZXJyb3I6IG51bGwsIC4uLnJlcGx5RGF0YSB9IH1cbiAgbW9ja0Rpc3BhdGNoZXMucHVzaChuZXdNb2NrRGlzcGF0Y2gpXG4gIHJldHVybiBuZXdNb2NrRGlzcGF0Y2hcbn1cblxuZnVuY3Rpb24gZGVsZXRlTW9ja0Rpc3BhdGNoIChtb2NrRGlzcGF0Y2hlcywga2V5KSB7XG4gIGNvbnN0IGluZGV4ID0gbW9ja0Rpc3BhdGNoZXMuZmluZEluZGV4KGRpc3BhdGNoID0+IHtcbiAgICBpZiAoIWRpc3BhdGNoLmNvbnN1bWVkKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoS2V5KGRpc3BhdGNoLCBrZXkpXG4gIH0pXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBtb2NrRGlzcGF0Y2hlcy5zcGxpY2UoaW5kZXgsIDEpXG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRLZXkgKG9wdHMpIHtcbiAgY29uc3QgeyBwYXRoLCBtZXRob2QsIGJvZHksIGhlYWRlcnMsIHF1ZXJ5IH0gPSBvcHRzXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBtZXRob2QsXG4gICAgYm9keSxcbiAgICBoZWFkZXJzLFxuICAgIHF1ZXJ5XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVLZXlWYWx1ZXMgKGRhdGEpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgoa2V5VmFsdWVQYWlycywgW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgLi4ua2V5VmFsdWVQYWlycyxcbiAgICBCdWZmZXIuZnJvbShgJHtrZXl9YCksXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoeCA9PiBCdWZmZXIuZnJvbShgJHt4fWApKSA6IEJ1ZmZlci5mcm9tKGAke3ZhbHVlfWApXG4gIF0sIFtdKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9TdGF0dXNcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXNDb2RlXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXR1c1RleHQgKHN0YXR1c0NvZGUpIHtcbiAgcmV0dXJuIFNUQVRVU19DT0RFU1tzdGF0dXNDb2RlXSB8fCAndW5rbm93bidcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzcG9uc2UgKGJvZHkpIHtcbiAgY29uc3QgYnVmZmVycyA9IFtdXG4gIGZvciBhd2FpdCAoY29uc3QgZGF0YSBvZiBib2R5KSB7XG4gICAgYnVmZmVycy5wdXNoKGRhdGEpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmZmVycykudG9TdHJpbmcoJ3V0ZjgnKVxufVxuXG4vKipcbiAqIE1vY2sgZGlzcGF0Y2ggZnVuY3Rpb24gdXNlZCB0byBzaW11bGF0ZSB1bmRpY2kgZGlzcGF0Y2hlc1xuICovXG5mdW5jdGlvbiBtb2NrRGlzcGF0Y2ggKG9wdHMsIGhhbmRsZXIpIHtcbiAgLy8gR2V0IG1vY2sgZGlzcGF0Y2ggZnJvbSBidWlsdCBrZXlcbiAgY29uc3Qga2V5ID0gYnVpbGRLZXkob3B0cylcbiAgY29uc3QgbW9ja0Rpc3BhdGNoID0gZ2V0TW9ja0Rpc3BhdGNoKHRoaXNba0Rpc3BhdGNoZXNdLCBrZXkpXG5cbiAgbW9ja0Rpc3BhdGNoLnRpbWVzSW52b2tlZCsrXG5cbiAgLy8gSGVyZSdzIHdoZXJlIHdlIHJlc29sdmUgYSBjYWxsYmFjayBpZiBhIGNhbGxiYWNrIGlzIHByZXNlbnQgZm9yIHRoZSBkaXNwYXRjaCBkYXRhLlxuICBpZiAobW9ja0Rpc3BhdGNoLmRhdGEuY2FsbGJhY2spIHtcbiAgICBtb2NrRGlzcGF0Y2guZGF0YSA9IHsgLi4ubW9ja0Rpc3BhdGNoLmRhdGEsIC4uLm1vY2tEaXNwYXRjaC5kYXRhLmNhbGxiYWNrKG9wdHMpIH1cbiAgfVxuXG4gIC8vIFBhcnNlIG1vY2tEaXNwYXRjaCBkYXRhXG4gIGNvbnN0IHsgZGF0YTogeyBzdGF0dXNDb2RlLCBkYXRhLCBoZWFkZXJzLCB0cmFpbGVycywgZXJyb3IgfSwgZGVsYXksIHBlcnNpc3QgfSA9IG1vY2tEaXNwYXRjaFxuICBjb25zdCB7IHRpbWVzSW52b2tlZCwgdGltZXMgfSA9IG1vY2tEaXNwYXRjaFxuXG4gIC8vIElmIGl0J3MgdXNlZCB1cCBhbmQgbm90IHBlcnNpc3RlbnQsIG1hcmsgYXMgY29uc3VtZWRcbiAgbW9ja0Rpc3BhdGNoLmNvbnN1bWVkID0gIXBlcnNpc3QgJiYgdGltZXNJbnZva2VkID49IHRpbWVzXG4gIG1vY2tEaXNwYXRjaC5wZW5kaW5nID0gdGltZXNJbnZva2VkIDwgdGltZXNcblxuICAvLyBJZiBzcGVjaWZpZWQsIHRyaWdnZXIgZGlzcGF0Y2ggZXJyb3JcbiAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgZGVsZXRlTW9ja0Rpc3BhdGNoKHRoaXNba0Rpc3BhdGNoZXNdLCBrZXkpXG4gICAgaGFuZGxlci5vbkVycm9yKGVycm9yKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBIYW5kbGUgdGhlIHJlcXVlc3Qgd2l0aCBhIGRlbGF5IGlmIG5lY2Vzc2FyeVxuICBpZiAodHlwZW9mIGRlbGF5ID09PSAnbnVtYmVyJyAmJiBkZWxheSA+IDApIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGhhbmRsZVJlcGx5KHRoaXNba0Rpc3BhdGNoZXNdKVxuICAgIH0sIGRlbGF5KVxuICB9IGVsc2Uge1xuICAgIGhhbmRsZVJlcGx5KHRoaXNba0Rpc3BhdGNoZXNdKVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUmVwbHkgKG1vY2tEaXNwYXRjaGVzLCBfZGF0YSA9IGRhdGEpIHtcbiAgICAvLyBmZXRjaCdzIEhlYWRlcnNMaXN0IGlzIGEgMUQgc3RyaW5nIGFycmF5XG4gICAgY29uc3Qgb3B0c0hlYWRlcnMgPSBBcnJheS5pc0FycmF5KG9wdHMuaGVhZGVycylcbiAgICAgID8gYnVpbGRIZWFkZXJzRnJvbUFycmF5KG9wdHMuaGVhZGVycylcbiAgICAgIDogb3B0cy5oZWFkZXJzXG4gICAgY29uc3QgYm9keSA9IHR5cGVvZiBfZGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBfZGF0YSh7IC4uLm9wdHMsIGhlYWRlcnM6IG9wdHNIZWFkZXJzIH0pXG4gICAgICA6IF9kYXRhXG5cbiAgICAvLyB1dGlsLnR5cGVzLmlzUHJvbWlzZSBpcyBsaWtlbHkgbmVlZGVkIGZvciBqZXN0LlxuICAgIGlmIChpc1Byb21pc2UoYm9keSkpIHtcbiAgICAgIC8vIElmIGhhbmRsZVJlcGx5IGlzIGFzeW5jaHJvbm91cywgdGhyb3dpbmcgYW4gZXJyb3JcbiAgICAgIC8vIGluIHRoZSBjYWxsYmFjayB3aWxsIHJlamVjdCB0aGUgcHJvbWlzZSwgcmF0aGVyIHRoYW5cbiAgICAgIC8vIHN5bmNocm9ub3VzbHkgdGhyb3cgdGhlIGVycm9yLCB3aGljaCBicmVha3Mgc29tZSB0ZXN0cy5cbiAgICAgIC8vIFJhdGhlciwgd2Ugd2FpdCBmb3IgdGhlIGNhbGxiYWNrIHRvIHJlc29sdmUgaWYgaXQgaXMgYVxuICAgICAgLy8gcHJvbWlzZSwgYW5kIHRoZW4gcmUtcnVuIGhhbmRsZVJlcGx5IHdpdGggdGhlIG5ldyBib2R5LlxuICAgICAgYm9keS50aGVuKChuZXdEYXRhKSA9PiBoYW5kbGVSZXBseShtb2NrRGlzcGF0Y2hlcywgbmV3RGF0YSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZURhdGEgPSBnZXRSZXNwb25zZURhdGEoYm9keSlcbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBnZW5lcmF0ZUtleVZhbHVlcyhoZWFkZXJzKVxuICAgIGNvbnN0IHJlc3BvbnNlVHJhaWxlcnMgPSBnZW5lcmF0ZUtleVZhbHVlcyh0cmFpbGVycylcblxuICAgIGhhbmRsZXIuYWJvcnQgPSBub3BcbiAgICBoYW5kbGVyLm9uSGVhZGVycyhzdGF0dXNDb2RlLCByZXNwb25zZUhlYWRlcnMsIHJlc3VtZSwgZ2V0U3RhdHVzVGV4dChzdGF0dXNDb2RlKSlcbiAgICBoYW5kbGVyLm9uRGF0YShCdWZmZXIuZnJvbShyZXNwb25zZURhdGEpKVxuICAgIGhhbmRsZXIub25Db21wbGV0ZShyZXNwb25zZVRyYWlsZXJzKVxuICAgIGRlbGV0ZU1vY2tEaXNwYXRjaChtb2NrRGlzcGF0Y2hlcywga2V5KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdW1lICgpIHt9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gYnVpbGRNb2NrRGlzcGF0Y2ggKCkge1xuICBjb25zdCBhZ2VudCA9IHRoaXNba01vY2tBZ2VudF1cbiAgY29uc3Qgb3JpZ2luID0gdGhpc1trT3JpZ2luXVxuICBjb25zdCBvcmlnaW5hbERpc3BhdGNoID0gdGhpc1trT3JpZ2luYWxEaXNwYXRjaF1cblxuICByZXR1cm4gZnVuY3Rpb24gZGlzcGF0Y2ggKG9wdHMsIGhhbmRsZXIpIHtcbiAgICBpZiAoYWdlbnQuaXNNb2NrQWN0aXZlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBtb2NrRGlzcGF0Y2guY2FsbCh0aGlzLCBvcHRzLCBoYW5kbGVyKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTW9ja05vdE1hdGNoZWRFcnJvcikge1xuICAgICAgICAgIGNvbnN0IG5ldENvbm5lY3QgPSBhZ2VudFtrR2V0TmV0Q29ubmVjdF0oKVxuICAgICAgICAgIGlmIChuZXRDb25uZWN0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1vY2tOb3RNYXRjaGVkRXJyb3IoYCR7ZXJyb3IubWVzc2FnZX06IHN1YnNlcXVlbnQgcmVxdWVzdCB0byBvcmlnaW4gJHtvcmlnaW59IHdhcyBub3QgYWxsb3dlZCAobmV0LmNvbm5lY3QgZGlzYWJsZWQpYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoZWNrTmV0Q29ubmVjdChuZXRDb25uZWN0LCBvcmlnaW4pKSB7XG4gICAgICAgICAgICBvcmlnaW5hbERpc3BhdGNoLmNhbGwodGhpcywgb3B0cywgaGFuZGxlcilcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1vY2tOb3RNYXRjaGVkRXJyb3IoYCR7ZXJyb3IubWVzc2FnZX06IHN1YnNlcXVlbnQgcmVxdWVzdCB0byBvcmlnaW4gJHtvcmlnaW59IHdhcyBub3QgYWxsb3dlZCAobmV0LmNvbm5lY3QgaXMgbm90IGVuYWJsZWQgZm9yIHRoaXMgb3JpZ2luKWApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3JpZ2luYWxEaXNwYXRjaC5jYWxsKHRoaXMsIG9wdHMsIGhhbmRsZXIpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrTmV0Q29ubmVjdCAobmV0Q29ubmVjdCwgb3JpZ2luKSB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwob3JpZ2luKVxuICBpZiAobmV0Q29ubmVjdCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuZXRDb25uZWN0KSAmJiBuZXRDb25uZWN0LnNvbWUoKG1hdGNoZXIpID0+IG1hdGNoVmFsdWUobWF0Y2hlciwgdXJsLmhvc3QpKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTW9ja09wdGlvbnMgKG9wdHMpIHtcbiAgaWYgKG9wdHMpIHtcbiAgICBjb25zdCB7IGFnZW50LCAuLi5tb2NrT3B0aW9ucyB9ID0gb3B0c1xuICAgIHJldHVybiBtb2NrT3B0aW9uc1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRSZXNwb25zZURhdGEsXG4gIGdldE1vY2tEaXNwYXRjaCxcbiAgYWRkTW9ja0Rpc3BhdGNoLFxuICBkZWxldGVNb2NrRGlzcGF0Y2gsXG4gIGJ1aWxkS2V5LFxuICBnZW5lcmF0ZUtleVZhbHVlcyxcbiAgbWF0Y2hWYWx1ZSxcbiAgZ2V0UmVzcG9uc2UsXG4gIGdldFN0YXR1c1RleHQsXG4gIG1vY2tEaXNwYXRjaCxcbiAgYnVpbGRNb2NrRGlzcGF0Y2gsXG4gIGNoZWNrTmV0Q29ubmVjdCxcbiAgYnVpbGRNb2NrT3B0aW9ucyxcbiAgZ2V0SGVhZGVyQnlOYW1lXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgZ2V0UmVzcG9uc2VEYXRhLCBidWlsZEtleSwgYWRkTW9ja0Rpc3BhdGNoIH0gPSByZXF1aXJlKCcuL21vY2stdXRpbHMnKVxuY29uc3Qge1xuICBrRGlzcGF0Y2hlcyxcbiAga0Rpc3BhdGNoS2V5LFxuICBrRGVmYXVsdEhlYWRlcnMsXG4gIGtEZWZhdWx0VHJhaWxlcnMsXG4gIGtDb250ZW50TGVuZ3RoLFxuICBrTW9ja0Rpc3BhdGNoXG59ID0gcmVxdWlyZSgnLi9tb2NrLXN5bWJvbHMnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgeyBidWlsZFVSTCB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBzY29wZSBBUEkgZm9yIGFuIGludGVyY2VwdG9yIHJlcGx5XG4gKi9cbmNsYXNzIE1vY2tTY29wZSB7XG4gIGNvbnN0cnVjdG9yIChtb2NrRGlzcGF0Y2gpIHtcbiAgICB0aGlzW2tNb2NrRGlzcGF0Y2hdID0gbW9ja0Rpc3BhdGNoXG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgYSByZXBseSBieSBhIHNldCBhbW91bnQgaW4gbXMuXG4gICAqL1xuICBkZWxheSAod2FpdEluTXMpIHtcbiAgICBpZiAodHlwZW9mIHdhaXRJbk1zICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzSW50ZWdlcih3YWl0SW5NcykgfHwgd2FpdEluTXMgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd3YWl0SW5NcyBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciA+IDAnKVxuICAgIH1cblxuICAgIHRoaXNba01vY2tEaXNwYXRjaF0uZGVsYXkgPSB3YWl0SW5Nc1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogRm9yIGEgZGVmaW5lZCByZXBseSwgbmV2ZXIgbWFyayBhcyBjb25zdW1lZC5cbiAgICovXG4gIHBlcnNpc3QgKCkge1xuICAgIHRoaXNba01vY2tEaXNwYXRjaF0ucGVyc2lzdCA9IHRydWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IG9uZSB0byBkZWZpbmUgYSByZXBseSBmb3IgYSBzZXQgYW1vdW50IG9mIG1hdGNoaW5nIHJlcXVlc3RzLlxuICAgKi9cbiAgdGltZXMgKHJlcGVhdFRpbWVzKSB7XG4gICAgaWYgKHR5cGVvZiByZXBlYXRUaW1lcyAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0ludGVnZXIocmVwZWF0VGltZXMpIHx8IHJlcGVhdFRpbWVzIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigncmVwZWF0VGltZXMgbXVzdCBiZSBhIHZhbGlkIGludGVnZXIgPiAwJylcbiAgICB9XG5cbiAgICB0aGlzW2tNb2NrRGlzcGF0Y2hdLnRpbWVzID0gcmVwZWF0VGltZXNcbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBhbiBpbnRlcmNlcHRvciBmb3IgYSBNb2NrXG4gKi9cbmNsYXNzIE1vY2tJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBtb2NrRGlzcGF0Y2hlcykge1xuICAgIGlmICh0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb3B0cyBtdXN0IGJlIGFuIG9iamVjdCcpXG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0cy5wYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdvcHRzLnBhdGggbXVzdCBiZSBkZWZpbmVkJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRzLm1ldGhvZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9wdHMubWV0aG9kID0gJ0dFVCdcbiAgICB9XG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8xMjQ1XG4gICAgLy8gQXMgcGVyIFJGQyAzOTg2LCBjbGllbnRzIGFyZSBub3Qgc3VwcG9zZWQgdG8gc2VuZCBVUklcbiAgICAvLyBmcmFnbWVudHMgdG8gc2VydmVycyB3aGVuIHRoZXkgcmV0cmlldmUgYSBkb2N1bWVudCxcbiAgICBpZiAodHlwZW9mIG9wdHMucGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChvcHRzLnF1ZXJ5KSB7XG4gICAgICAgIG9wdHMucGF0aCA9IGJ1aWxkVVJMKG9wdHMucGF0aCwgb3B0cy5xdWVyeSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE1hdGNoZXMgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvYmxvYi9tYWluL2xpYi9mZXRjaC9pbmRleC5qcyNMMTgxMVxuICAgICAgICBjb25zdCBwYXJzZWRVUkwgPSBuZXcgVVJMKG9wdHMucGF0aCwgJ2RhdGE6Ly8nKVxuICAgICAgICBvcHRzLnBhdGggPSBwYXJzZWRVUkwucGF0aG5hbWUgKyBwYXJzZWRVUkwuc2VhcmNoXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0cy5tZXRob2QgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRzLm1ldGhvZCA9IG9wdHMubWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICB9XG5cbiAgICB0aGlzW2tEaXNwYXRjaEtleV0gPSBidWlsZEtleShvcHRzKVxuICAgIHRoaXNba0Rpc3BhdGNoZXNdID0gbW9ja0Rpc3BhdGNoZXNcbiAgICB0aGlzW2tEZWZhdWx0SGVhZGVyc10gPSB7fVxuICAgIHRoaXNba0RlZmF1bHRUcmFpbGVyc10gPSB7fVxuICAgIHRoaXNba0NvbnRlbnRMZW5ndGhdID0gZmFsc2VcbiAgfVxuXG4gIGNyZWF0ZU1vY2tTY29wZURpc3BhdGNoRGF0YSAoc3RhdHVzQ29kZSwgZGF0YSwgcmVzcG9uc2VPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCByZXNwb25zZURhdGEgPSBnZXRSZXNwb25zZURhdGEoZGF0YSlcbiAgICBjb25zdCBjb250ZW50TGVuZ3RoID0gdGhpc1trQ29udGVudExlbmd0aF0gPyB7ICdjb250ZW50LWxlbmd0aCc6IHJlc3BvbnNlRGF0YS5sZW5ndGggfSA6IHt9XG4gICAgY29uc3QgaGVhZGVycyA9IHsgLi4udGhpc1trRGVmYXVsdEhlYWRlcnNdLCAuLi5jb250ZW50TGVuZ3RoLCAuLi5yZXNwb25zZU9wdGlvbnMuaGVhZGVycyB9XG4gICAgY29uc3QgdHJhaWxlcnMgPSB7IC4uLnRoaXNba0RlZmF1bHRUcmFpbGVyc10sIC4uLnJlc3BvbnNlT3B0aW9ucy50cmFpbGVycyB9XG5cbiAgICByZXR1cm4geyBzdGF0dXNDb2RlLCBkYXRhLCBoZWFkZXJzLCB0cmFpbGVycyB9XG4gIH1cblxuICB2YWxpZGF0ZVJlcGx5UGFyYW1ldGVycyAoc3RhdHVzQ29kZSwgZGF0YSwgcmVzcG9uc2VPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0dXNDb2RlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzdGF0dXNDb2RlIG11c3QgYmUgZGVmaW5lZCcpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZGF0YSBtdXN0IGJlIGRlZmluZWQnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlT3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigncmVzcG9uc2VPcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0JylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9jayBhbiB1bmRpY2kgcmVxdWVzdCB3aXRoIGEgZGVmaW5lZCByZXBseS5cbiAgICovXG4gIHJlcGx5IChyZXBseURhdGEpIHtcbiAgICAvLyBWYWx1ZXMgb2YgcmVwbHkgYXJlbid0IGF2YWlsYWJsZSByaWdodCBub3cgYXMgdGhleVxuICAgIC8vIGNhbiBvbmx5IGJlIGF2YWlsYWJsZSB3aGVuIHRoZSByZXBseSBjYWxsYmFjayBpcyBpbnZva2VkLlxuICAgIGlmICh0eXBlb2YgcmVwbHlEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBXZSdsbCBmaXJzdCB3cmFwIHRoZSBwcm92aWRlZCBjYWxsYmFjayBpbiBhbm90aGVyIGZ1bmN0aW9uLFxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiB3aWxsIHByb3Blcmx5IHJlc29sdmUgdGhlIGRhdGEgZnJvbSB0aGUgY2FsbGJhY2tcbiAgICAgIC8vIHdoZW4gaW52b2tlZC5cbiAgICAgIGNvbnN0IHdyYXBwZWREZWZhdWx0c0NhbGxiYWNrID0gKG9wdHMpID0+IHtcbiAgICAgICAgLy8gT3VyIHJlcGx5IG9wdGlvbnMgY2FsbGJhY2sgY29udGFpbnMgdGhlIHBhcmFtZXRlciBmb3Igc3RhdHVzQ29kZSwgZGF0YSBhbmQgb3B0aW9ucy5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhID0gcmVwbHlEYXRhKG9wdHMpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQgaXMgaW4gdGhlIHJpZ2h0IGZvcm1hdFxuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVkRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3JlcGx5IG9wdGlvbnMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYW4gb2JqZWN0JylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgc3RhdHVzQ29kZSwgZGF0YSA9ICcnLCByZXNwb25zZU9wdGlvbnMgPSB7fSB9ID0gcmVzb2x2ZWREYXRhXG4gICAgICAgIHRoaXMudmFsaWRhdGVSZXBseVBhcmFtZXRlcnMoc3RhdHVzQ29kZSwgZGF0YSwgcmVzcG9uc2VPcHRpb25zKVxuICAgICAgICAvLyBTaW5jZSB0aGUgdmFsdWVzIGNhbiBiZSBvYnRhaW5lZCBpbW1lZGlhdGVseSB3ZSByZXR1cm4gdGhlbVxuICAgICAgICAvLyBmcm9tIHRoaXMgaGlnaGVyIG9yZGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSByZXNvbHZlZCBsYXRlci5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi50aGlzLmNyZWF0ZU1vY2tTY29wZURpc3BhdGNoRGF0YShzdGF0dXNDb2RlLCBkYXRhLCByZXNwb25zZU9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHVzdWFsIGRpc3BhdGNoIGRhdGEsIGJ1dCB0aGlzIHRpbWUgc2V0IHRoZSBkYXRhIHBhcmFtZXRlciB0byBmdW5jdGlvbiB0aGF0IHdpbGwgZXZlbnR1YWxseSBwcm92aWRlIGRhdGEuXG4gICAgICBjb25zdCBuZXdNb2NrRGlzcGF0Y2ggPSBhZGRNb2NrRGlzcGF0Y2godGhpc1trRGlzcGF0Y2hlc10sIHRoaXNba0Rpc3BhdGNoS2V5XSwgd3JhcHBlZERlZmF1bHRzQ2FsbGJhY2spXG4gICAgICByZXR1cm4gbmV3IE1vY2tTY29wZShuZXdNb2NrRGlzcGF0Y2gpXG4gICAgfVxuXG4gICAgLy8gV2UgY2FuIGhhdmUgZWl0aGVyIG9uZSBvciB0aHJlZSBwYXJhbWV0ZXJzLCBpZiB3ZSBnZXQgaGVyZSxcbiAgICAvLyB3ZSBzaG91bGQgaGF2ZSAxLTMgcGFyYW1ldGVycy4gU28gd2Ugc3ByZWFkIHRoZSBhcmd1bWVudHMgb2ZcbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgcGFyYW1ldGVycywgc2luY2UgcmVwbHlEYXRhIHdpbGwgYWx3YXlzXG4gICAgLy8ganVzdCBiZSB0aGUgc3RhdHVzQ29kZS5cbiAgICBjb25zdCBbc3RhdHVzQ29kZSwgZGF0YSA9ICcnLCByZXNwb25zZU9wdGlvbnMgPSB7fV0gPSBbLi4uYXJndW1lbnRzXVxuICAgIHRoaXMudmFsaWRhdGVSZXBseVBhcmFtZXRlcnMoc3RhdHVzQ29kZSwgZGF0YSwgcmVzcG9uc2VPcHRpb25zKVxuXG4gICAgLy8gU2VuZCBpbi1hbHJlYWR5IHByb3ZpZGVkIGRhdGEgbGlrZSB1c3VhbFxuICAgIGNvbnN0IGRpc3BhdGNoRGF0YSA9IHRoaXMuY3JlYXRlTW9ja1Njb3BlRGlzcGF0Y2hEYXRhKHN0YXR1c0NvZGUsIGRhdGEsIHJlc3BvbnNlT3B0aW9ucylcbiAgICBjb25zdCBuZXdNb2NrRGlzcGF0Y2ggPSBhZGRNb2NrRGlzcGF0Y2godGhpc1trRGlzcGF0Y2hlc10sIHRoaXNba0Rpc3BhdGNoS2V5XSwgZGlzcGF0Y2hEYXRhKVxuICAgIHJldHVybiBuZXcgTW9ja1Njb3BlKG5ld01vY2tEaXNwYXRjaClcbiAgfVxuXG4gIC8qKlxuICAgKiBNb2NrIGFuIHVuZGljaSByZXF1ZXN0IHdpdGggYSBkZWZpbmVkIGVycm9yLlxuICAgKi9cbiAgcmVwbHlXaXRoRXJyb3IgKGVycm9yKSB7XG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZXJyb3IgbXVzdCBiZSBkZWZpbmVkJylcbiAgICB9XG5cbiAgICBjb25zdCBuZXdNb2NrRGlzcGF0Y2ggPSBhZGRNb2NrRGlzcGF0Y2godGhpc1trRGlzcGF0Y2hlc10sIHRoaXNba0Rpc3BhdGNoS2V5XSwgeyBlcnJvciB9KVxuICAgIHJldHVybiBuZXcgTW9ja1Njb3BlKG5ld01vY2tEaXNwYXRjaClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGVmYXVsdCByZXBseSBoZWFkZXJzIG9uIHRoZSBpbnRlcmNlcHRvciBmb3Igc3Vic2VxdWVudCByZXBsaWVzXG4gICAqL1xuICBkZWZhdWx0UmVwbHlIZWFkZXJzIChoZWFkZXJzKSB7XG4gICAgaWYgKHR5cGVvZiBoZWFkZXJzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdoZWFkZXJzIG11c3QgYmUgZGVmaW5lZCcpXG4gICAgfVxuXG4gICAgdGhpc1trRGVmYXVsdEhlYWRlcnNdID0gaGVhZGVyc1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogU2V0IGRlZmF1bHQgcmVwbHkgdHJhaWxlcnMgb24gdGhlIGludGVyY2VwdG9yIGZvciBzdWJzZXF1ZW50IHJlcGxpZXNcbiAgICovXG4gIGRlZmF1bHRSZXBseVRyYWlsZXJzICh0cmFpbGVycykge1xuICAgIGlmICh0eXBlb2YgdHJhaWxlcnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RyYWlsZXJzIG11c3QgYmUgZGVmaW5lZCcpXG4gICAgfVxuXG4gICAgdGhpc1trRGVmYXVsdFRyYWlsZXJzXSA9IHRyYWlsZXJzXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcmVwbHkgY29udGVudCBsZW5ndGggaGVhZGVyIGZvciByZXBsaWVzIG9uIHRoZSBpbnRlcmNlcHRvclxuICAgKi9cbiAgcmVwbHlDb250ZW50TGVuZ3RoICgpIHtcbiAgICB0aGlzW2tDb250ZW50TGVuZ3RoXSA9IHRydWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzLk1vY2tJbnRlcmNlcHRvciA9IE1vY2tJbnRlcmNlcHRvclxubW9kdWxlLmV4cG9ydHMuTW9ja1Njb3BlID0gTW9ja1Njb3BlXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IENsaWVudCA9IHJlcXVpcmUoJy4uL2NsaWVudCcpXG5jb25zdCB7IGJ1aWxkTW9ja0Rpc3BhdGNoIH0gPSByZXF1aXJlKCcuL21vY2stdXRpbHMnKVxuY29uc3Qge1xuICBrRGlzcGF0Y2hlcyxcbiAga01vY2tBZ2VudCxcbiAga0Nsb3NlLFxuICBrT3JpZ2luYWxDbG9zZSxcbiAga09yaWdpbixcbiAga09yaWdpbmFsRGlzcGF0Y2gsXG4gIGtDb25uZWN0ZWRcbn0gPSByZXF1aXJlKCcuL21vY2stc3ltYm9scycpXG5jb25zdCB7IE1vY2tJbnRlcmNlcHRvciB9ID0gcmVxdWlyZSgnLi9tb2NrLWludGVyY2VwdG9yJylcbmNvbnN0IFN5bWJvbHMgPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuXG4vKipcbiAqIE1vY2tDbGllbnQgcHJvdmlkZXMgYW4gQVBJIHRoYXQgZXh0ZW5kcyB0aGUgQ2xpZW50IHRvIGluZmx1ZW5jZSB0aGUgbW9ja0Rpc3BhdGNoZXMuXG4gKi9cbmNsYXNzIE1vY2tDbGllbnQgZXh0ZW5kcyBDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3JpZ2luLCBvcHRzKSB7XG4gICAgc3VwZXIob3JpZ2luLCBvcHRzKVxuXG4gICAgaWYgKCFvcHRzIHx8ICFvcHRzLmFnZW50IHx8IHR5cGVvZiBvcHRzLmFnZW50LmRpc3BhdGNoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0FyZ3VtZW50IG9wdHMuYWdlbnQgbXVzdCBpbXBsZW1lbnQgQWdlbnQnKVxuICAgIH1cblxuICAgIHRoaXNba01vY2tBZ2VudF0gPSBvcHRzLmFnZW50XG4gICAgdGhpc1trT3JpZ2luXSA9IG9yaWdpblxuICAgIHRoaXNba0Rpc3BhdGNoZXNdID0gW11cbiAgICB0aGlzW2tDb25uZWN0ZWRdID0gMVxuICAgIHRoaXNba09yaWdpbmFsRGlzcGF0Y2hdID0gdGhpcy5kaXNwYXRjaFxuICAgIHRoaXNba09yaWdpbmFsQ2xvc2VdID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLmRpc3BhdGNoID0gYnVpbGRNb2NrRGlzcGF0Y2guY2FsbCh0aGlzKVxuICAgIHRoaXMuY2xvc2UgPSB0aGlzW2tDbG9zZV1cbiAgfVxuXG4gIGdldCBbU3ltYm9scy5rQ29ubmVjdGVkXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0Nvbm5lY3RlZF1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBiYXNlIGludGVyY2VwdG9yIGZvciBtb2NraW5nIHJlcGxpZXMgZnJvbSB1bmRpY2kuXG4gICAqL1xuICBpbnRlcmNlcHQgKG9wdHMpIHtcbiAgICByZXR1cm4gbmV3IE1vY2tJbnRlcmNlcHRvcihvcHRzLCB0aGlzW2tEaXNwYXRjaGVzXSlcbiAgfVxuXG4gIGFzeW5jIFtrQ2xvc2VdICgpIHtcbiAgICBhd2FpdCBwcm9taXNpZnkodGhpc1trT3JpZ2luYWxDbG9zZV0pKClcbiAgICB0aGlzW2tDb25uZWN0ZWRdID0gMFxuICAgIHRoaXNba01vY2tBZ2VudF1bU3ltYm9scy5rQ2xpZW50c10uZGVsZXRlKHRoaXNba09yaWdpbl0pXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNb2NrQ2xpZW50XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IFBvb2wgPSByZXF1aXJlKCcuLi9wb29sJylcbmNvbnN0IHsgYnVpbGRNb2NrRGlzcGF0Y2ggfSA9IHJlcXVpcmUoJy4vbW9jay11dGlscycpXG5jb25zdCB7XG4gIGtEaXNwYXRjaGVzLFxuICBrTW9ja0FnZW50LFxuICBrQ2xvc2UsXG4gIGtPcmlnaW5hbENsb3NlLFxuICBrT3JpZ2luLFxuICBrT3JpZ2luYWxEaXNwYXRjaCxcbiAga0Nvbm5lY3RlZFxufSA9IHJlcXVpcmUoJy4vbW9jay1zeW1ib2xzJylcbmNvbnN0IHsgTW9ja0ludGVyY2VwdG9yIH0gPSByZXF1aXJlKCcuL21vY2staW50ZXJjZXB0b3InKVxuY29uc3QgU3ltYm9scyA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5cbi8qKlxuICogTW9ja1Bvb2wgcHJvdmlkZXMgYW4gQVBJIHRoYXQgZXh0ZW5kcyB0aGUgUG9vbCB0byBpbmZsdWVuY2UgdGhlIG1vY2tEaXNwYXRjaGVzLlxuICovXG5jbGFzcyBNb2NrUG9vbCBleHRlbmRzIFBvb2wge1xuICBjb25zdHJ1Y3RvciAob3JpZ2luLCBvcHRzKSB7XG4gICAgc3VwZXIob3JpZ2luLCBvcHRzKVxuXG4gICAgaWYgKCFvcHRzIHx8ICFvcHRzLmFnZW50IHx8IHR5cGVvZiBvcHRzLmFnZW50LmRpc3BhdGNoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0FyZ3VtZW50IG9wdHMuYWdlbnQgbXVzdCBpbXBsZW1lbnQgQWdlbnQnKVxuICAgIH1cblxuICAgIHRoaXNba01vY2tBZ2VudF0gPSBvcHRzLmFnZW50XG4gICAgdGhpc1trT3JpZ2luXSA9IG9yaWdpblxuICAgIHRoaXNba0Rpc3BhdGNoZXNdID0gW11cbiAgICB0aGlzW2tDb25uZWN0ZWRdID0gMVxuICAgIHRoaXNba09yaWdpbmFsRGlzcGF0Y2hdID0gdGhpcy5kaXNwYXRjaFxuICAgIHRoaXNba09yaWdpbmFsQ2xvc2VdID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLmRpc3BhdGNoID0gYnVpbGRNb2NrRGlzcGF0Y2guY2FsbCh0aGlzKVxuICAgIHRoaXMuY2xvc2UgPSB0aGlzW2tDbG9zZV1cbiAgfVxuXG4gIGdldCBbU3ltYm9scy5rQ29ubmVjdGVkXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNba0Nvbm5lY3RlZF1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBiYXNlIGludGVyY2VwdG9yIGZvciBtb2NraW5nIHJlcGxpZXMgZnJvbSB1bmRpY2kuXG4gICAqL1xuICBpbnRlcmNlcHQgKG9wdHMpIHtcbiAgICByZXR1cm4gbmV3IE1vY2tJbnRlcmNlcHRvcihvcHRzLCB0aGlzW2tEaXNwYXRjaGVzXSlcbiAgfVxuXG4gIGFzeW5jIFtrQ2xvc2VdICgpIHtcbiAgICBhd2FpdCBwcm9taXNpZnkodGhpc1trT3JpZ2luYWxDbG9zZV0pKClcbiAgICB0aGlzW2tDb25uZWN0ZWRdID0gMFxuICAgIHRoaXNba01vY2tBZ2VudF1bU3ltYm9scy5rQ2xpZW50c10uZGVsZXRlKHRoaXNba09yaWdpbl0pXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNb2NrUG9vbFxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBzaW5ndWxhcnMgPSB7XG4gIHByb25vdW46ICdpdCcsXG4gIGlzOiAnaXMnLFxuICB3YXM6ICd3YXMnLFxuICB0aGlzOiAndGhpcydcbn1cblxuY29uc3QgcGx1cmFscyA9IHtcbiAgcHJvbm91bjogJ3RoZXknLFxuICBpczogJ2FyZScsXG4gIHdhczogJ3dlcmUnLFxuICB0aGlzOiAndGhlc2UnXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUGx1cmFsaXplciB7XG4gIGNvbnN0cnVjdG9yIChzaW5ndWxhciwgcGx1cmFsKSB7XG4gICAgdGhpcy5zaW5ndWxhciA9IHNpbmd1bGFyXG4gICAgdGhpcy5wbHVyYWwgPSBwbHVyYWxcbiAgfVxuXG4gIHBsdXJhbGl6ZSAoY291bnQpIHtcbiAgICBjb25zdCBvbmUgPSBjb3VudCA9PT0gMVxuICAgIGNvbnN0IGtleXMgPSBvbmUgPyBzaW5ndWxhcnMgOiBwbHVyYWxzXG4gICAgY29uc3Qgbm91biA9IG9uZSA/IHRoaXMuc2luZ3VsYXIgOiB0aGlzLnBsdXJhbFxuICAgIHJldHVybiB7IC4uLmtleXMsIGNvdW50LCBub3VuIH1cbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IFRyYW5zZm9ybSB9ID0gcmVxdWlyZSgnc3RyZWFtJylcbmNvbnN0IHsgQ29uc29sZSB9ID0gcmVxdWlyZSgnY29uc29sZScpXG5cbi8qKlxuICogR2V0cyB0aGUgb3V0cHV0IG9mIGBjb25zb2xlLnRhYmxlKFx1MjAyNilgIGFzIGEgc3RyaW5nLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRvcnNGb3JtYXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoeyBkaXNhYmxlQ29sb3JzIH0gPSB7fSkge1xuICAgIHRoaXMudHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgICB0cmFuc2Zvcm0gKGNodW5rLCBfZW5jLCBjYikge1xuICAgICAgICBjYihudWxsLCBjaHVuaylcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgQ29uc29sZSh7XG4gICAgICBzdGRvdXQ6IHRoaXMudHJhbnNmb3JtLFxuICAgICAgaW5zcGVjdE9wdGlvbnM6IHtcbiAgICAgICAgY29sb3JzOiAhZGlzYWJsZUNvbG9ycyAmJiAhcHJvY2Vzcy5lbnYuQ0lcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZm9ybWF0IChwZW5kaW5nSW50ZXJjZXB0b3JzKSB7XG4gICAgY29uc3Qgd2l0aFByZXR0eUhlYWRlcnMgPSBwZW5kaW5nSW50ZXJjZXB0b3JzLm1hcChcbiAgICAgICh7IG1ldGhvZCwgcGF0aCwgZGF0YTogeyBzdGF0dXNDb2RlIH0sIHBlcnNpc3QsIHRpbWVzLCB0aW1lc0ludm9rZWQsIG9yaWdpbiB9KSA9PiAoe1xuICAgICAgICBNZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgT3JpZ2luOiBvcmlnaW4sXG4gICAgICAgIFBhdGg6IHBhdGgsXG4gICAgICAgICdTdGF0dXMgY29kZSc6IHN0YXR1c0NvZGUsXG4gICAgICAgIFBlcnNpc3RlbnQ6IHBlcnNpc3QgPyAnXHUyNzA1JyA6ICdcdTI3NEMnLFxuICAgICAgICBJbnZvY2F0aW9uczogdGltZXNJbnZva2VkLFxuICAgICAgICBSZW1haW5pbmc6IHBlcnNpc3QgPyBJbmZpbml0eSA6IHRpbWVzIC0gdGltZXNJbnZva2VkXG4gICAgICB9KSlcblxuICAgIHRoaXMubG9nZ2VyLnRhYmxlKHdpdGhQcmV0dHlIZWFkZXJzKVxuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybS5yZWFkKCkudG9TdHJpbmcoKVxuICB9XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsga0NsaWVudHMgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4uL2FnZW50JylcbmNvbnN0IHtcbiAga0FnZW50LFxuICBrTW9ja0FnZW50U2V0LFxuICBrTW9ja0FnZW50R2V0LFxuICBrRGlzcGF0Y2hlcyxcbiAga0lzTW9ja0FjdGl2ZSxcbiAga05ldENvbm5lY3QsXG4gIGtHZXROZXRDb25uZWN0LFxuICBrT3B0aW9ucyxcbiAga0ZhY3Rvcnlcbn0gPSByZXF1aXJlKCcuL21vY2stc3ltYm9scycpXG5jb25zdCBNb2NrQ2xpZW50ID0gcmVxdWlyZSgnLi9tb2NrLWNsaWVudCcpXG5jb25zdCBNb2NrUG9vbCA9IHJlcXVpcmUoJy4vbW9jay1wb29sJylcbmNvbnN0IHsgbWF0Y2hWYWx1ZSwgYnVpbGRNb2NrT3B0aW9ucyB9ID0gcmVxdWlyZSgnLi9tb2NrLXV0aWxzJylcbmNvbnN0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIFVuZGljaUVycm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL2Vycm9ycycpXG5jb25zdCBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlcicpXG5jb25zdCBQbHVyYWxpemVyID0gcmVxdWlyZSgnLi9wbHVyYWxpemVyJylcbmNvbnN0IFBlbmRpbmdJbnRlcmNlcHRvcnNGb3JtYXR0ZXIgPSByZXF1aXJlKCcuL3BlbmRpbmctaW50ZXJjZXB0b3JzLWZvcm1hdHRlcicpXG5cbmNsYXNzIEZha2VXZWFrUmVmIHtcbiAgY29uc3RydWN0b3IgKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG4gIH1cblxuICBkZXJlZiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVcbiAgfVxufVxuXG5jbGFzcyBNb2NrQWdlbnQgZXh0ZW5kcyBEaXNwYXRjaGVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICBzdXBlcihvcHRzKVxuXG4gICAgdGhpc1trTmV0Q29ubmVjdF0gPSB0cnVlXG4gICAgdGhpc1trSXNNb2NrQWN0aXZlXSA9IHRydWVcblxuICAgIC8vIEluc3RhbnRpYXRlIEFnZW50IGFuZCBlbmNhcHN1bGF0ZVxuICAgIGlmICgob3B0cyAmJiBvcHRzLmFnZW50ICYmIHR5cGVvZiBvcHRzLmFnZW50LmRpc3BhdGNoICE9PSAnZnVuY3Rpb24nKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdBcmd1bWVudCBvcHRzLmFnZW50IG11c3QgaW1wbGVtZW50IEFnZW50JylcbiAgICB9XG4gICAgY29uc3QgYWdlbnQgPSBvcHRzICYmIG9wdHMuYWdlbnQgPyBvcHRzLmFnZW50IDogbmV3IEFnZW50KG9wdHMpXG4gICAgdGhpc1trQWdlbnRdID0gYWdlbnRcblxuICAgIHRoaXNba0NsaWVudHNdID0gYWdlbnRba0NsaWVudHNdXG4gICAgdGhpc1trT3B0aW9uc10gPSBidWlsZE1vY2tPcHRpb25zKG9wdHMpXG4gIH1cblxuICBnZXQgKG9yaWdpbikge1xuICAgIGxldCBkaXNwYXRjaGVyID0gdGhpc1trTW9ja0FnZW50R2V0XShvcmlnaW4pXG5cbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIGRpc3BhdGNoZXIgPSB0aGlzW2tGYWN0b3J5XShvcmlnaW4pXG4gICAgICB0aGlzW2tNb2NrQWdlbnRTZXRdKG9yaWdpbiwgZGlzcGF0Y2hlcilcbiAgICB9XG4gICAgcmV0dXJuIGRpc3BhdGNoZXJcbiAgfVxuXG4gIGRpc3BhdGNoIChvcHRzLCBoYW5kbGVyKSB7XG4gICAgLy8gQ2FsbCBNb2NrQWdlbnQuZ2V0IHRvIHBlcmZvcm0gYWRkaXRpb25hbCBzZXR1cCBiZWZvcmUgZGlzcGF0Y2hpbmcgYXMgbm9ybWFsXG4gICAgdGhpcy5nZXQob3B0cy5vcmlnaW4pXG4gICAgcmV0dXJuIHRoaXNba0FnZW50XS5kaXNwYXRjaChvcHRzLCBoYW5kbGVyKVxuICB9XG5cbiAgYXN5bmMgY2xvc2UgKCkge1xuICAgIGF3YWl0IHRoaXNba0FnZW50XS5jbG9zZSgpXG4gICAgdGhpc1trQ2xpZW50c10uY2xlYXIoKVxuICB9XG5cbiAgZGVhY3RpdmF0ZSAoKSB7XG4gICAgdGhpc1trSXNNb2NrQWN0aXZlXSA9IGZhbHNlXG4gIH1cblxuICBhY3RpdmF0ZSAoKSB7XG4gICAgdGhpc1trSXNNb2NrQWN0aXZlXSA9IHRydWVcbiAgfVxuXG4gIGVuYWJsZU5ldENvbm5lY3QgKG1hdGNoZXIpIHtcbiAgICBpZiAodHlwZW9mIG1hdGNoZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBtYXRjaGVyID09PSAnZnVuY3Rpb24nIHx8IG1hdGNoZXIgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXNba05ldENvbm5lY3RdKSkge1xuICAgICAgICB0aGlzW2tOZXRDb25uZWN0XS5wdXNoKG1hdGNoZXIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW2tOZXRDb25uZWN0XSA9IFttYXRjaGVyXVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1hdGNoZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzW2tOZXRDb25uZWN0XSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdVbnN1cHBvcnRlZCBtYXRjaGVyLiBNdXN0IGJlIG9uZSBvZiBTdHJpbmd8RnVuY3Rpb258UmVnRXhwLicpXG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZU5ldENvbm5lY3QgKCkge1xuICAgIHRoaXNba05ldENvbm5lY3RdID0gZmFsc2VcbiAgfVxuXG4gIC8vIFRoaXMgaXMgcmVxdWlyZWQgdG8gYnlwYXNzIGlzc3VlcyBjYXVzZWQgYnkgdXNpbmcgZ2xvYmFsIHN5bWJvbHMgLSBzZWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8xNDQ3XG4gIGdldCBpc01vY2tBY3RpdmUgKCkge1xuICAgIHJldHVybiB0aGlzW2tJc01vY2tBY3RpdmVdXG4gIH1cblxuICBba01vY2tBZ2VudFNldF0gKG9yaWdpbiwgZGlzcGF0Y2hlcikge1xuICAgIHRoaXNba0NsaWVudHNdLnNldChvcmlnaW4sIG5ldyBGYWtlV2Vha1JlZihkaXNwYXRjaGVyKSlcbiAgfVxuXG4gIFtrRmFjdG9yeV0gKG9yaWdpbikge1xuICAgIGNvbnN0IG1vY2tPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGFnZW50OiB0aGlzIH0sIHRoaXNba09wdGlvbnNdKVxuICAgIHJldHVybiB0aGlzW2tPcHRpb25zXSAmJiB0aGlzW2tPcHRpb25zXS5jb25uZWN0aW9ucyA9PT0gMVxuICAgICAgPyBuZXcgTW9ja0NsaWVudChvcmlnaW4sIG1vY2tPcHRpb25zKVxuICAgICAgOiBuZXcgTW9ja1Bvb2wob3JpZ2luLCBtb2NrT3B0aW9ucylcbiAgfVxuXG4gIFtrTW9ja0FnZW50R2V0XSAob3JpZ2luKSB7XG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgY2FuIGltbWVkaWF0ZWx5IGZpbmQgaXRcbiAgICBjb25zdCByZWYgPSB0aGlzW2tDbGllbnRzXS5nZXQob3JpZ2luKVxuICAgIGlmIChyZWYpIHtcbiAgICAgIHJldHVybiByZWYuZGVyZWYoKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvcmlnaW4gaXMgbm90IGEgc3RyaW5nIGNyZWF0ZSBhIGR1bW15IHBhcmVudCBwb29sIGFuZCByZXR1cm4gdG8gdXNlclxuICAgIGlmICh0eXBlb2Ygb3JpZ2luICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgZGlzcGF0Y2hlciA9IHRoaXNba0ZhY3RvcnldKCdodHRwOi8vbG9jYWxob3N0Ojk5OTknKVxuICAgICAgdGhpc1trTW9ja0FnZW50U2V0XShvcmlnaW4sIGRpc3BhdGNoZXIpXG4gICAgICByZXR1cm4gZGlzcGF0Y2hlclxuICAgIH1cblxuICAgIC8vIElmIHdlIG1hdGNoLCBjcmVhdGUgYSBwb29sIGFuZCBhc3NpZ24gdGhlIHNhbWUgZGlzcGF0Y2hlc1xuICAgIGZvciAoY29uc3QgW2tleU1hdGNoZXIsIG5vbkV4cGxpY2l0UmVmXSBvZiBBcnJheS5mcm9tKHRoaXNba0NsaWVudHNdKSkge1xuICAgICAgY29uc3Qgbm9uRXhwbGljaXREaXNwYXRjaGVyID0gbm9uRXhwbGljaXRSZWYuZGVyZWYoKVxuICAgICAgaWYgKG5vbkV4cGxpY2l0RGlzcGF0Y2hlciAmJiB0eXBlb2Yga2V5TWF0Y2hlciAhPT0gJ3N0cmluZycgJiYgbWF0Y2hWYWx1ZShrZXlNYXRjaGVyLCBvcmlnaW4pKSB7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoZXIgPSB0aGlzW2tGYWN0b3J5XShvcmlnaW4pXG4gICAgICAgIHRoaXNba01vY2tBZ2VudFNldF0ob3JpZ2luLCBkaXNwYXRjaGVyKVxuICAgICAgICBkaXNwYXRjaGVyW2tEaXNwYXRjaGVzXSA9IG5vbkV4cGxpY2l0RGlzcGF0Y2hlcltrRGlzcGF0Y2hlc11cbiAgICAgICAgcmV0dXJuIGRpc3BhdGNoZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBba0dldE5ldENvbm5lY3RdICgpIHtcbiAgICByZXR1cm4gdGhpc1trTmV0Q29ubmVjdF1cbiAgfVxuXG4gIHBlbmRpbmdJbnRlcmNlcHRvcnMgKCkge1xuICAgIGNvbnN0IG1vY2tBZ2VudENsaWVudHMgPSB0aGlzW2tDbGllbnRzXVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20obW9ja0FnZW50Q2xpZW50cy5lbnRyaWVzKCkpXG4gICAgICAuZmxhdE1hcCgoW29yaWdpbiwgc2NvcGVdKSA9PiBzY29wZS5kZXJlZigpW2tEaXNwYXRjaGVzXS5tYXAoZGlzcGF0Y2ggPT4gKHsgLi4uZGlzcGF0Y2gsIG9yaWdpbiB9KSkpXG4gICAgICAuZmlsdGVyKCh7IHBlbmRpbmcgfSkgPT4gcGVuZGluZylcbiAgfVxuXG4gIGFzc2VydE5vUGVuZGluZ0ludGVyY2VwdG9ycyAoeyBwZW5kaW5nSW50ZXJjZXB0b3JzRm9ybWF0dGVyID0gbmV3IFBlbmRpbmdJbnRlcmNlcHRvcnNGb3JtYXR0ZXIoKSB9ID0ge30pIHtcbiAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5wZW5kaW5nSW50ZXJjZXB0b3JzKClcblxuICAgIGlmIChwZW5kaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcGx1cmFsaXplciA9IG5ldyBQbHVyYWxpemVyKCdpbnRlcmNlcHRvcicsICdpbnRlcmNlcHRvcnMnKS5wbHVyYWxpemUocGVuZGluZy5sZW5ndGgpXG5cbiAgICB0aHJvdyBuZXcgVW5kaWNpRXJyb3IoYFxuJHtwbHVyYWxpemVyLmNvdW50fSAke3BsdXJhbGl6ZXIubm91bn0gJHtwbHVyYWxpemVyLmlzfSBwZW5kaW5nOlxuXG4ke3BlbmRpbmdJbnRlcmNlcHRvcnNGb3JtYXR0ZXIuZm9ybWF0KHBlbmRpbmcpfVxuYC50cmltKCkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNb2NrQWdlbnRcbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBrUHJveHksIGtDbG9zZSwga0Rlc3Ryb3ksIGtJbnRlcmNlcHRvcnMgfSA9IHJlcXVpcmUoJy4vY29yZS9zeW1ib2xzJylcbmNvbnN0IHsgVVJMIH0gPSByZXF1aXJlKCd1cmwnKVxuY29uc3QgQWdlbnQgPSByZXF1aXJlKCcuL2FnZW50JylcbmNvbnN0IFBvb2wgPSByZXF1aXJlKCcuL3Bvb2wnKVxuY29uc3QgRGlzcGF0Y2hlckJhc2UgPSByZXF1aXJlKCcuL2Rpc3BhdGNoZXItYmFzZScpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBSZXF1ZXN0QWJvcnRlZEVycm9yIH0gPSByZXF1aXJlKCcuL2NvcmUvZXJyb3JzJylcbmNvbnN0IGJ1aWxkQ29ubmVjdG9yID0gcmVxdWlyZSgnLi9jb3JlL2Nvbm5lY3QnKVxuXG5jb25zdCBrQWdlbnQgPSBTeW1ib2woJ3Byb3h5IGFnZW50JylcbmNvbnN0IGtDbGllbnQgPSBTeW1ib2woJ3Byb3h5IGNsaWVudCcpXG5jb25zdCBrUHJveHlIZWFkZXJzID0gU3ltYm9sKCdwcm94eSBoZWFkZXJzJylcbmNvbnN0IGtSZXF1ZXN0VGxzID0gU3ltYm9sKCdyZXF1ZXN0IHRscyBzZXR0aW5ncycpXG5jb25zdCBrUHJveHlUbHMgPSBTeW1ib2woJ3Byb3h5IHRscyBzZXR0aW5ncycpXG5jb25zdCBrQ29ubmVjdEVuZHBvaW50ID0gU3ltYm9sKCdjb25uZWN0IGVuZHBvaW50IGZ1bmN0aW9uJylcblxuZnVuY3Rpb24gZGVmYXVsdFByb3RvY29sUG9ydCAocHJvdG9jb2wpIHtcbiAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwXG59XG5cbmZ1bmN0aW9uIGJ1aWxkUHJveHlPcHRpb25zIChvcHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHRzID0geyB1cmk6IG9wdHMgfVxuICB9XG5cbiAgaWYgKCFvcHRzIHx8ICFvcHRzLnVyaSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignUHJveHkgb3B0cy51cmkgaXMgbWFuZGF0b3J5JylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdXJpOiBvcHRzLnVyaSxcbiAgICBwcm90b2NvbDogb3B0cy5wcm90b2NvbCB8fCAnaHR0cHMnXG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdEZhY3RvcnkgKG9yaWdpbiwgb3B0cykge1xuICByZXR1cm4gbmV3IFBvb2wob3JpZ2luLCBvcHRzKVxufVxuXG5jbGFzcyBQcm94eUFnZW50IGV4dGVuZHMgRGlzcGF0Y2hlckJhc2Uge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMpXG4gICAgdGhpc1trUHJveHldID0gYnVpbGRQcm94eU9wdGlvbnMob3B0cylcbiAgICB0aGlzW2tBZ2VudF0gPSBuZXcgQWdlbnQob3B0cylcbiAgICB0aGlzW2tJbnRlcmNlcHRvcnNdID0gb3B0cy5pbnRlcmNlcHRvcnMgJiYgb3B0cy5pbnRlcmNlcHRvcnMuUHJveHlBZ2VudCAmJiBBcnJheS5pc0FycmF5KG9wdHMuaW50ZXJjZXB0b3JzLlByb3h5QWdlbnQpXG4gICAgICA/IG9wdHMuaW50ZXJjZXB0b3JzLlByb3h5QWdlbnRcbiAgICAgIDogW11cblxuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdHMgPSB7IHVyaTogb3B0cyB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRzIHx8ICFvcHRzLnVyaSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdQcm94eSBvcHRzLnVyaSBpcyBtYW5kYXRvcnknKVxuICAgIH1cblxuICAgIGNvbnN0IHsgY2xpZW50RmFjdG9yeSA9IGRlZmF1bHRGYWN0b3J5IH0gPSBvcHRzXG5cbiAgICBpZiAodHlwZW9mIGNsaWVudEZhY3RvcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignUHJveHkgb3B0cy5jbGllbnRGYWN0b3J5IG11c3QgYmUgYSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHRoaXNba1JlcXVlc3RUbHNdID0gb3B0cy5yZXF1ZXN0VGxzXG4gICAgdGhpc1trUHJveHlUbHNdID0gb3B0cy5wcm94eVRsc1xuICAgIHRoaXNba1Byb3h5SGVhZGVyc10gPSBvcHRzLmhlYWRlcnMgfHwge31cblxuICAgIGNvbnN0IHJlc29sdmVkVXJsID0gbmV3IFVSTChvcHRzLnVyaSlcbiAgICBjb25zdCB7IG9yaWdpbiwgcG9ydCwgaG9zdCwgdXNlcm5hbWUsIHBhc3N3b3JkIH0gPSByZXNvbHZlZFVybFxuXG4gICAgaWYgKG9wdHMuYXV0aCAmJiBvcHRzLnRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29wdHMuYXV0aCBjYW5ub3QgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG9wdHMudG9rZW4nKVxuICAgIH0gZWxzZSBpZiAob3B0cy5hdXRoKSB7XG4gICAgICAvKiBAZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2Ygb3B0cy50b2tlbiAqL1xuICAgICAgdGhpc1trUHJveHlIZWFkZXJzXVsncHJveHktYXV0aG9yaXphdGlvbiddID0gYEJhc2ljICR7b3B0cy5hdXRofWBcbiAgICB9IGVsc2UgaWYgKG9wdHMudG9rZW4pIHtcbiAgICAgIHRoaXNba1Byb3h5SGVhZGVyc11bJ3Byb3h5LWF1dGhvcml6YXRpb24nXSA9IG9wdHMudG9rZW5cbiAgICB9IGVsc2UgaWYgKHVzZXJuYW1lICYmIHBhc3N3b3JkKSB7XG4gICAgICB0aGlzW2tQcm94eUhlYWRlcnNdWydwcm94eS1hdXRob3JpemF0aW9uJ10gPSBgQmFzaWMgJHtCdWZmZXIuZnJvbShgJHtkZWNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpfToke2RlY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCl9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpfWBcbiAgICB9XG5cbiAgICBjb25zdCBjb25uZWN0ID0gYnVpbGRDb25uZWN0b3IoeyAuLi5vcHRzLnByb3h5VGxzIH0pXG4gICAgdGhpc1trQ29ubmVjdEVuZHBvaW50XSA9IGJ1aWxkQ29ubmVjdG9yKHsgLi4ub3B0cy5yZXF1ZXN0VGxzIH0pXG4gICAgdGhpc1trQ2xpZW50XSA9IGNsaWVudEZhY3RvcnkocmVzb2x2ZWRVcmwsIHsgY29ubmVjdCB9KVxuICAgIHRoaXNba0FnZW50XSA9IG5ldyBBZ2VudCh7XG4gICAgICAuLi5vcHRzLFxuICAgICAgY29ubmVjdDogYXN5bmMgKG9wdHMsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGxldCByZXF1ZXN0ZWRIb3N0ID0gb3B0cy5ob3N0XG4gICAgICAgIGlmICghb3B0cy5wb3J0KSB7XG4gICAgICAgICAgcmVxdWVzdGVkSG9zdCArPSBgOiR7ZGVmYXVsdFByb3RvY29sUG9ydChvcHRzLnByb3RvY29sKX1gXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IHNvY2tldCwgc3RhdHVzQ29kZSB9ID0gYXdhaXQgdGhpc1trQ2xpZW50XS5jb25uZWN0KHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIHBvcnQsXG4gICAgICAgICAgICBwYXRoOiByZXF1ZXN0ZWRIb3N0LFxuICAgICAgICAgICAgc2lnbmFsOiBvcHRzLnNpZ25hbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgLi4udGhpc1trUHJveHlIZWFkZXJzXSxcbiAgICAgICAgICAgICAgaG9zdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKHN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgc29ja2V0Lm9uKCdlcnJvcicsICgpID0+IHt9KS5kZXN0cm95KClcbiAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBSZXF1ZXN0QWJvcnRlZEVycm9yKGBQcm94eSByZXNwb25zZSAoJHtzdGF0dXNDb2RlfSkgIT09IDIwMCB3aGVuIEhUVFAgVHVubmVsaW5nYCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRzLnByb3RvY29sICE9PSAnaHR0cHM6Jykge1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgc29ja2V0KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBzZXJ2ZXJuYW1lXG4gICAgICAgICAgaWYgKHRoaXNba1JlcXVlc3RUbHNdKSB7XG4gICAgICAgICAgICBzZXJ2ZXJuYW1lID0gdGhpc1trUmVxdWVzdFRsc10uc2VydmVybmFtZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXJ2ZXJuYW1lID0gb3B0cy5zZXJ2ZXJuYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXNba0Nvbm5lY3RFbmRwb2ludF0oeyAuLi5vcHRzLCBzZXJ2ZXJuYW1lLCBodHRwU29ja2V0OiBzb2NrZXQgfSwgY2FsbGJhY2spXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNhbGxiYWNrKGVycilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBkaXNwYXRjaCAob3B0cywgaGFuZGxlcikge1xuICAgIGNvbnN0IHsgaG9zdCB9ID0gbmV3IFVSTChvcHRzLm9yaWdpbilcbiAgICBjb25zdCBoZWFkZXJzID0gYnVpbGRIZWFkZXJzKG9wdHMuaGVhZGVycylcbiAgICB0aHJvd0lmUHJveHlBdXRoSXNTZW50KGhlYWRlcnMpXG4gICAgcmV0dXJuIHRoaXNba0FnZW50XS5kaXNwYXRjaChcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgaG9zdFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlclxuICAgIClcbiAgfVxuXG4gIGFzeW5jIFtrQ2xvc2VdICgpIHtcbiAgICBhd2FpdCB0aGlzW2tBZ2VudF0uY2xvc2UoKVxuICAgIGF3YWl0IHRoaXNba0NsaWVudF0uY2xvc2UoKVxuICB9XG5cbiAgYXN5bmMgW2tEZXN0cm95XSAoKSB7XG4gICAgYXdhaXQgdGhpc1trQWdlbnRdLmRlc3Ryb3koKVxuICAgIGF3YWl0IHRoaXNba0NsaWVudF0uZGVzdHJveSgpXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPn0gaGVhZGVyc1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGVhZGVycyAoaGVhZGVycykge1xuICAvLyBXaGVuIHVzaW5nIHVuZGljaS5mZXRjaCwgdGhlIGhlYWRlcnMgbGlzdCBpcyBzdG9yZWRcbiAgLy8gYXMgYW4gYXJyYXkuXG4gIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IGhlYWRlcnNQYWlyID0ge31cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgaGVhZGVyc1BhaXJbaGVhZGVyc1tpXV0gPSBoZWFkZXJzW2kgKyAxXVxuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzUGFpclxuICB9XG5cbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IGhlYWRlcnNcbiAqXG4gKiBQcmV2aW91cyB2ZXJzaW9ucyBvZiBQcm94eUFnZW50IHN1Z2dlc3RzIHRoZSBQcm94eS1BdXRob3JpemF0aW9uIGluIHJlcXVlc3QgaGVhZGVyc1xuICogTmV2ZXJ0aGVsZXNzLCBpdCB3YXMgY2hhbmdlZCBhbmQgdG8gYXZvaWQgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IGJ5IGVuZCB1c2Vyc1xuICogdGhpcyBjaGVjayB3YXMgY3JlYXRlZC5cbiAqIEl0IHNob3VsZCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAqL1xuZnVuY3Rpb24gdGhyb3dJZlByb3h5QXV0aElzU2VudCAoaGVhZGVycykge1xuICBjb25zdCBleGlzdFByb3h5QXV0aCA9IGhlYWRlcnMgJiYgT2JqZWN0LmtleXMoaGVhZGVycylcbiAgICAuZmluZCgoa2V5KSA9PiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3Byb3h5LWF1dGhvcml6YXRpb24nKVxuICBpZiAoZXhpc3RQcm94eUF1dGgpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1Byb3h5LUF1dGhvcml6YXRpb24gc2hvdWxkIGJlIHNlbnQgaW4gUHJveHlBZ2VudCBjb25zdHJ1Y3RvcicpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQcm94eUFnZW50XG4iLCAiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcblxuY29uc3QgeyBrUmV0cnlIYW5kbGVyRGVmYXVsdFJldHJ5IH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgeyBSZXF1ZXN0UmV0cnlFcnJvciB9ID0gcmVxdWlyZSgnLi4vY29yZS9lcnJvcnMnKVxuY29uc3QgeyBpc0Rpc3R1cmJlZCwgcGFyc2VIZWFkZXJzLCBwYXJzZVJhbmdlSGVhZGVyIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVSZXRyeUFmdGVySGVhZGVyIChyZXRyeUFmdGVyKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGRpZmYgPSBuZXcgRGF0ZShyZXRyeUFmdGVyKS5nZXRUaW1lKCkgLSBjdXJyZW50XG5cbiAgcmV0dXJuIGRpZmZcbn1cblxuY2xhc3MgUmV0cnlIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIGhhbmRsZXJzKSB7XG4gICAgY29uc3QgeyByZXRyeU9wdGlvbnMsIC4uLmRpc3BhdGNoT3B0cyB9ID0gb3B0c1xuICAgIGNvbnN0IHtcbiAgICAgIC8vIFJldHJ5IHNjb3BlZFxuICAgICAgcmV0cnk6IHJldHJ5Rm4sXG4gICAgICBtYXhSZXRyaWVzLFxuICAgICAgbWF4VGltZW91dCxcbiAgICAgIG1pblRpbWVvdXQsXG4gICAgICB0aW1lb3V0RmFjdG9yLFxuICAgICAgLy8gUmVzcG9uc2Ugc2NvcGVkXG4gICAgICBtZXRob2RzLFxuICAgICAgZXJyb3JDb2RlcyxcbiAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICBzdGF0dXNDb2Rlc1xuICAgIH0gPSByZXRyeU9wdGlvbnMgPz8ge31cblxuICAgIHRoaXMuZGlzcGF0Y2ggPSBoYW5kbGVycy5kaXNwYXRjaFxuICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXJzLmhhbmRsZXJcbiAgICB0aGlzLm9wdHMgPSBkaXNwYXRjaE9wdHNcbiAgICB0aGlzLmFib3J0ID0gbnVsbFxuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlXG4gICAgdGhpcy5yZXRyeU9wdHMgPSB7XG4gICAgICByZXRyeTogcmV0cnlGbiA/PyBSZXRyeUhhbmRsZXJba1JldHJ5SGFuZGxlckRlZmF1bHRSZXRyeV0sXG4gICAgICByZXRyeUFmdGVyOiByZXRyeUFmdGVyID8/IHRydWUsXG4gICAgICBtYXhUaW1lb3V0OiBtYXhUaW1lb3V0ID8/IDMwICogMTAwMCwgLy8gMzBzLFxuICAgICAgdGltZW91dDogbWluVGltZW91dCA/PyA1MDAsIC8vIC41c1xuICAgICAgdGltZW91dEZhY3RvcjogdGltZW91dEZhY3RvciA/PyAyLFxuICAgICAgbWF4UmV0cmllczogbWF4UmV0cmllcyA/PyA1LFxuICAgICAgLy8gV2hhdCBlcnJvcnMgd2Ugc2hvdWxkIHJldHJ5XG4gICAgICBtZXRob2RzOiBtZXRob2RzID8/IFsnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQVVQnLCAnREVMRVRFJywgJ1RSQUNFJ10sXG4gICAgICAvLyBJbmRpY2F0ZXMgd2hpY2ggZXJyb3JzIHRvIHJldHJ5XG4gICAgICBzdGF0dXNDb2Rlczogc3RhdHVzQ29kZXMgPz8gWzUwMCwgNTAyLCA1MDMsIDUwNCwgNDI5XSxcbiAgICAgIC8vIExpc3Qgb2YgZXJyb3JzIHRvIHJldHJ5XG4gICAgICBlcnJvckNvZGVzOiBlcnJvckNvZGVzID8/IFtcbiAgICAgICAgJ0VDT05OUkVTRVQnLFxuICAgICAgICAnRUNPTk5SRUZVU0VEJyxcbiAgICAgICAgJ0VOT1RGT1VORCcsXG4gICAgICAgICdFTkVURE9XTicsXG4gICAgICAgICdFTkVUVU5SRUFDSCcsXG4gICAgICAgICdFSE9TVERPV04nLFxuICAgICAgICAnRUhPU1RVTlJFQUNIJyxcbiAgICAgICAgJ0VQSVBFJ1xuICAgICAgXVxuICAgIH1cblxuICAgIHRoaXMucmV0cnlDb3VudCA9IDBcbiAgICB0aGlzLnN0YXJ0ID0gMFxuICAgIHRoaXMuZW5kID0gbnVsbFxuICAgIHRoaXMuZXRhZyA9IG51bGxcbiAgICB0aGlzLnJlc3VtZSA9IG51bGxcblxuICAgIC8vIEhhbmRsZSBwb3NzaWJsZSBvbkNvbm5lY3QgZHVwbGljYXRpb25cbiAgICB0aGlzLmhhbmRsZXIub25Db25uZWN0KHJlYXNvbiA9PiB7XG4gICAgICB0aGlzLmFib3J0ZWQgPSB0cnVlXG4gICAgICBpZiAodGhpcy5hYm9ydCkge1xuICAgICAgICB0aGlzLmFib3J0KHJlYXNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVhc29uID0gcmVhc29uXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uUmVxdWVzdFNlbnQgKCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXIub25SZXF1ZXN0U2VudCkge1xuICAgICAgdGhpcy5oYW5kbGVyLm9uUmVxdWVzdFNlbnQoKVxuICAgIH1cbiAgfVxuXG4gIG9uVXBncmFkZSAoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlci5vblVwZ3JhZGUpIHtcbiAgICAgIHRoaXMuaGFuZGxlci5vblVwZ3JhZGUoc3RhdHVzQ29kZSwgaGVhZGVycywgc29ja2V0KVxuICAgIH1cbiAgfVxuXG4gIG9uQ29ubmVjdCAoYWJvcnQpIHtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSB7XG4gICAgICBhYm9ydCh0aGlzLnJlYXNvbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hYm9ydCA9IGFib3J0XG4gICAgfVxuICB9XG5cbiAgb25Cb2R5U2VudCAoY2h1bmspIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyLm9uQm9keVNlbnQpIHJldHVybiB0aGlzLmhhbmRsZXIub25Cb2R5U2VudChjaHVuaylcbiAgfVxuXG4gIHN0YXRpYyBba1JldHJ5SGFuZGxlckRlZmF1bHRSZXRyeV0gKGVyciwgeyBzdGF0ZSwgb3B0cyB9LCBjYikge1xuICAgIGNvbnN0IHsgc3RhdHVzQ29kZSwgY29kZSwgaGVhZGVycyB9ID0gZXJyXG4gICAgY29uc3QgeyBtZXRob2QsIHJldHJ5T3B0aW9ucyB9ID0gb3B0c1xuICAgIGNvbnN0IHtcbiAgICAgIG1heFJldHJpZXMsXG4gICAgICB0aW1lb3V0LFxuICAgICAgbWF4VGltZW91dCxcbiAgICAgIHRpbWVvdXRGYWN0b3IsXG4gICAgICBzdGF0dXNDb2RlcyxcbiAgICAgIGVycm9yQ29kZXMsXG4gICAgICBtZXRob2RzXG4gICAgfSA9IHJldHJ5T3B0aW9uc1xuICAgIGxldCB7IGNvdW50ZXIsIGN1cnJlbnRUaW1lb3V0IH0gPSBzdGF0ZVxuXG4gICAgY3VycmVudFRpbWVvdXQgPVxuICAgICAgY3VycmVudFRpbWVvdXQgIT0gbnVsbCAmJiBjdXJyZW50VGltZW91dCA+IDAgPyBjdXJyZW50VGltZW91dCA6IHRpbWVvdXRcblxuICAgIC8vIEFueSBjb2RlIHRoYXQgaXMgbm90IGEgVW5kaWNpJ3Mgb3JpZ2luYXRlZCBhbmQgYWxsb3dlZCB0byByZXRyeVxuICAgIGlmIChcbiAgICAgIGNvZGUgJiZcbiAgICAgIGNvZGUgIT09ICdVTkRfRVJSX1JFUV9SRVRSWScgJiZcbiAgICAgIGNvZGUgIT09ICdVTkRfRVJSX1NPQ0tFVCcgJiZcbiAgICAgICFlcnJvckNvZGVzLmluY2x1ZGVzKGNvZGUpXG4gICAgKSB7XG4gICAgICBjYihlcnIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBJZiBhIHNldCBvZiBtZXRob2QgYXJlIHByb3ZpZGVkIGFuZCB0aGUgY3VycmVudCBtZXRob2QgaXMgbm90IGluIHRoZSBsaXN0XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kcykgJiYgIW1ldGhvZHMuaW5jbHVkZXMobWV0aG9kKSkge1xuICAgICAgY2IoZXJyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgYSBzZXQgb2Ygc3RhdHVzIGNvZGUgYXJlIHByb3ZpZGVkIGFuZCB0aGUgY3VycmVudCBzdGF0dXMgY29kZSBpcyBub3QgaW4gdGhlIGxpc3RcbiAgICBpZiAoXG4gICAgICBzdGF0dXNDb2RlICE9IG51bGwgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoc3RhdHVzQ29kZXMpICYmXG4gICAgICAhc3RhdHVzQ29kZXMuaW5jbHVkZXMoc3RhdHVzQ29kZSlcbiAgICApIHtcbiAgICAgIGNiKGVycilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIHdlIHJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgcmV0cmllc1xuICAgIGlmIChjb3VudGVyID4gbWF4UmV0cmllcykge1xuICAgICAgY2IoZXJyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJldHJ5QWZ0ZXJIZWFkZXIgPSBoZWFkZXJzICE9IG51bGwgJiYgaGVhZGVyc1sncmV0cnktYWZ0ZXInXVxuICAgIGlmIChyZXRyeUFmdGVySGVhZGVyKSB7XG4gICAgICByZXRyeUFmdGVySGVhZGVyID0gTnVtYmVyKHJldHJ5QWZ0ZXJIZWFkZXIpXG4gICAgICByZXRyeUFmdGVySGVhZGVyID0gaXNOYU4ocmV0cnlBZnRlckhlYWRlcilcbiAgICAgICAgPyBjYWxjdWxhdGVSZXRyeUFmdGVySGVhZGVyKHJldHJ5QWZ0ZXJIZWFkZXIpXG4gICAgICAgIDogcmV0cnlBZnRlckhlYWRlciAqIDFlMyAvLyBSZXRyeS1BZnRlciBpcyBpbiBzZWNvbmRzXG4gICAgfVxuXG4gICAgY29uc3QgcmV0cnlUaW1lb3V0ID1cbiAgICAgIHJldHJ5QWZ0ZXJIZWFkZXIgPiAwXG4gICAgICAgID8gTWF0aC5taW4ocmV0cnlBZnRlckhlYWRlciwgbWF4VGltZW91dClcbiAgICAgICAgOiBNYXRoLm1pbihjdXJyZW50VGltZW91dCAqIHRpbWVvdXRGYWN0b3IgKiogY291bnRlciwgbWF4VGltZW91dClcblxuICAgIHN0YXRlLmN1cnJlbnRUaW1lb3V0ID0gcmV0cnlUaW1lb3V0XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IGNiKG51bGwpLCByZXRyeVRpbWVvdXQpXG4gIH1cblxuICBvbkhlYWRlcnMgKHN0YXR1c0NvZGUsIHJhd0hlYWRlcnMsIHJlc3VtZSwgc3RhdHVzTWVzc2FnZSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBwYXJzZUhlYWRlcnMocmF3SGVhZGVycylcblxuICAgIHRoaXMucmV0cnlDb3VudCArPSAxXG5cbiAgICBpZiAoc3RhdHVzQ29kZSA+PSAzMDApIHtcbiAgICAgIHRoaXMuYWJvcnQoXG4gICAgICAgIG5ldyBSZXF1ZXN0UmV0cnlFcnJvcignUmVxdWVzdCBmYWlsZWQnLCBzdGF0dXNDb2RlLCB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICBjb3VudDogdGhpcy5yZXRyeUNvdW50XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBDaGVja3BvaW50IGZvciByZXN1bWUgZnJvbSB3aGVyZSB3ZSBsZWZ0IGl0XG4gICAgaWYgKHRoaXMucmVzdW1lICE9IG51bGwpIHtcbiAgICAgIHRoaXMucmVzdW1lID0gbnVsbFxuXG4gICAgICBpZiAoc3RhdHVzQ29kZSAhPT0gMjA2KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRSYW5nZSA9IHBhcnNlUmFuZ2VIZWFkZXIoaGVhZGVyc1snY29udGVudC1yYW5nZSddKVxuICAgICAgLy8gSWYgbm8gY29udGVudCByYW5nZVxuICAgICAgaWYgKCFjb250ZW50UmFuZ2UpIHtcbiAgICAgICAgdGhpcy5hYm9ydChcbiAgICAgICAgICBuZXcgUmVxdWVzdFJldHJ5RXJyb3IoJ0NvbnRlbnQtUmFuZ2UgbWlzbWF0Y2gnLCBzdGF0dXNDb2RlLCB7XG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgY291bnQ6IHRoaXMucmV0cnlDb3VudFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIC8vIExldCdzIHN0YXJ0IHdpdGggYSB3ZWFrIGV0YWcgY2hlY2tcbiAgICAgIGlmICh0aGlzLmV0YWcgIT0gbnVsbCAmJiB0aGlzLmV0YWcgIT09IGhlYWRlcnMuZXRhZykge1xuICAgICAgICB0aGlzLmFib3J0KFxuICAgICAgICAgIG5ldyBSZXF1ZXN0UmV0cnlFcnJvcignRVRhZyBtaXNtYXRjaCcsIHN0YXR1c0NvZGUsIHtcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBjb3VudDogdGhpcy5yZXRyeUNvdW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzdGFydCwgc2l6ZSwgZW5kID0gc2l6ZSB9ID0gY29udGVudFJhbmdlXG5cbiAgICAgIGFzc2VydCh0aGlzLnN0YXJ0ID09PSBzdGFydCwgJ2NvbnRlbnQtcmFuZ2UgbWlzbWF0Y2gnKVxuICAgICAgYXNzZXJ0KHRoaXMuZW5kID09IG51bGwgfHwgdGhpcy5lbmQgPT09IGVuZCwgJ2NvbnRlbnQtcmFuZ2UgbWlzbWF0Y2gnKVxuXG4gICAgICB0aGlzLnJlc3VtZSA9IHJlc3VtZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmQgPT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXR1c0NvZGUgPT09IDIwNikge1xuICAgICAgICAvLyBGaXJzdCB0aW1lIHdlIHJlY2VpdmUgMjA2XG4gICAgICAgIGNvbnN0IHJhbmdlID0gcGFyc2VSYW5nZUhlYWRlcihoZWFkZXJzWydjb250ZW50LXJhbmdlJ10pXG5cbiAgICAgICAgaWYgKHJhbmdlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uSGVhZGVycyhcbiAgICAgICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgICAgICByYXdIZWFkZXJzLFxuICAgICAgICAgICAgcmVzdW1lLFxuICAgICAgICAgICAgc3RhdHVzTWVzc2FnZVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIHNpemUsIGVuZCA9IHNpemUgfSA9IHJhbmdlXG5cbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIHN0YXJ0ICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKHN0YXJ0KSAmJiB0aGlzLnN0YXJ0ICE9PSBzdGFydCxcbiAgICAgICAgICAnY29udGVudC1yYW5nZSBtaXNtYXRjaCdcbiAgICAgICAgKVxuICAgICAgICBhc3NlcnQoTnVtYmVyLmlzRmluaXRlKHN0YXJ0KSlcbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIGVuZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShlbmQpICYmIHRoaXMuZW5kICE9PSBlbmQsXG4gICAgICAgICAgJ2ludmFsaWQgY29udGVudC1sZW5ndGgnXG4gICAgICAgIClcblxuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnRcbiAgICAgICAgdGhpcy5lbmQgPSBlbmRcbiAgICAgIH1cblxuICAgICAgLy8gV2UgbWFrZSBvdXIgYmVzdCB0byBjaGVja3BvaW50IHRoZSBib2R5IGZvciBmdXJ0aGVyIHJhbmdlIGhlYWRlcnNcbiAgICAgIGlmICh0aGlzLmVuZCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSBoZWFkZXJzWydjb250ZW50LWxlbmd0aCddXG4gICAgICAgIHRoaXMuZW5kID0gY29udGVudExlbmd0aCAhPSBudWxsID8gTnVtYmVyKGNvbnRlbnRMZW5ndGgpIDogbnVsbFxuICAgICAgfVxuXG4gICAgICBhc3NlcnQoTnVtYmVyLmlzRmluaXRlKHRoaXMuc3RhcnQpKVxuICAgICAgYXNzZXJ0KFxuICAgICAgICB0aGlzLmVuZCA9PSBudWxsIHx8IE51bWJlci5pc0Zpbml0ZSh0aGlzLmVuZCksXG4gICAgICAgICdpbnZhbGlkIGNvbnRlbnQtbGVuZ3RoJ1xuICAgICAgKVxuXG4gICAgICB0aGlzLnJlc3VtZSA9IHJlc3VtZVxuICAgICAgdGhpcy5ldGFnID0gaGVhZGVycy5ldGFnICE9IG51bGwgPyBoZWFkZXJzLmV0YWcgOiBudWxsXG5cbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25IZWFkZXJzKFxuICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICByYXdIZWFkZXJzLFxuICAgICAgICByZXN1bWUsXG4gICAgICAgIHN0YXR1c01lc3NhZ2VcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBlcnIgPSBuZXcgUmVxdWVzdFJldHJ5RXJyb3IoJ1JlcXVlc3QgZmFpbGVkJywgc3RhdHVzQ29kZSwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIGNvdW50OiB0aGlzLnJldHJ5Q291bnRcbiAgICB9KVxuXG4gICAgdGhpcy5hYm9ydChlcnIpXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIG9uRGF0YSAoY2h1bmspIHtcbiAgICB0aGlzLnN0YXJ0ICs9IGNodW5rLmxlbmd0aFxuXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkRhdGEoY2h1bmspXG4gIH1cblxuICBvbkNvbXBsZXRlIChyYXdUcmFpbGVycykge1xuICAgIHRoaXMucmV0cnlDb3VudCA9IDBcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uQ29tcGxldGUocmF3VHJhaWxlcnMpXG4gIH1cblxuICBvbkVycm9yIChlcnIpIHtcbiAgICBpZiAodGhpcy5hYm9ydGVkIHx8IGlzRGlzdHVyYmVkKHRoaXMub3B0cy5ib2R5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkVycm9yKGVycilcbiAgICB9XG5cbiAgICB0aGlzLnJldHJ5T3B0cy5yZXRyeShcbiAgICAgIGVycixcbiAgICAgIHtcbiAgICAgICAgc3RhdGU6IHsgY291bnRlcjogdGhpcy5yZXRyeUNvdW50KyssIGN1cnJlbnRUaW1lb3V0OiB0aGlzLnJldHJ5QWZ0ZXIgfSxcbiAgICAgICAgb3B0czogeyByZXRyeU9wdGlvbnM6IHRoaXMucmV0cnlPcHRzLCAuLi50aGlzLm9wdHMgfVxuICAgICAgfSxcbiAgICAgIG9uUmV0cnkuYmluZCh0aGlzKVxuICAgIClcblxuICAgIGZ1bmN0aW9uIG9uUmV0cnkgKGVycikge1xuICAgICAgaWYgKGVyciAhPSBudWxsIHx8IHRoaXMuYWJvcnRlZCB8fCBpc0Rpc3R1cmJlZCh0aGlzLm9wdHMuYm9keSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkVycm9yKGVycilcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3RhcnQgIT09IDApIHtcbiAgICAgICAgdGhpcy5vcHRzID0ge1xuICAgICAgICAgIC4uLnRoaXMub3B0cyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdHMuaGVhZGVycyxcbiAgICAgICAgICAgIHJhbmdlOiBgYnl0ZXM9JHt0aGlzLnN0YXJ0fS0ke3RoaXMuZW5kID8/ICcnfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCh0aGlzLm9wdHMsIHRoaXMpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uRXJyb3IoZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJldHJ5SGFuZGxlclxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBXZSBpbmNsdWRlIGEgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSBEaXNwYXRjaGVyIEFQSS4gSW4gY2FzZSBvZiBicmVha2luZyBjaGFuZ2VzLFxuLy8gdGhpcyB2ZXJzaW9uIG51bWJlciBtdXN0IGJlIGluY3JlYXNlZCB0byBhdm9pZCBjb25mbGljdHMuXG5jb25zdCBnbG9iYWxEaXNwYXRjaGVyID0gU3ltYm9sLmZvcigndW5kaWNpLmdsb2JhbERpc3BhdGNoZXIuMScpXG5jb25zdCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gPSByZXF1aXJlKCcuL2NvcmUvZXJyb3JzJylcbmNvbnN0IEFnZW50ID0gcmVxdWlyZSgnLi9hZ2VudCcpXG5cbmlmIChnZXRHbG9iYWxEaXNwYXRjaGVyKCkgPT09IHVuZGVmaW5lZCkge1xuICBzZXRHbG9iYWxEaXNwYXRjaGVyKG5ldyBBZ2VudCgpKVxufVxuXG5mdW5jdGlvbiBzZXRHbG9iYWxEaXNwYXRjaGVyIChhZ2VudCkge1xuICBpZiAoIWFnZW50IHx8IHR5cGVvZiBhZ2VudC5kaXNwYXRjaCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignQXJndW1lbnQgYWdlbnQgbXVzdCBpbXBsZW1lbnQgQWdlbnQnKVxuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBnbG9iYWxEaXNwYXRjaGVyLCB7XG4gICAgdmFsdWU6IGFnZW50LFxuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2V0R2xvYmFsRGlzcGF0Y2hlciAoKSB7XG4gIHJldHVybiBnbG9iYWxUaGlzW2dsb2JhbERpc3BhdGNoZXJdXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXRHbG9iYWxEaXNwYXRjaGVyLFxuICBnZXRHbG9iYWxEaXNwYXRjaGVyXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgRGVjb3JhdG9ySGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yIChoYW5kbGVyKSB7XG4gICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlclxuICB9XG5cbiAgb25Db25uZWN0ICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkNvbm5lY3QoLi4uYXJncylcbiAgfVxuXG4gIG9uRXJyb3IgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uRXJyb3IoLi4uYXJncylcbiAgfVxuXG4gIG9uVXBncmFkZSAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIub25VcGdyYWRlKC4uLmFyZ3MpXG4gIH1cblxuICBvbkhlYWRlcnMgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uSGVhZGVycyguLi5hcmdzKVxuICB9XG5cbiAgb25EYXRhICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5vbkRhdGEoLi4uYXJncylcbiAgfVxuXG4gIG9uQ29tcGxldGUgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uQ29tcGxldGUoLi4uYXJncylcbiAgfVxuXG4gIG9uQm9keVNlbnQgKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm9uQm9keVNlbnQoLi4uYXJncylcbiAgfVxufVxuIiwgIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9FdGhhbi1BcnJvd29vZC91bmRpY2ktZmV0Y2hcblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsga0hlYWRlcnNMaXN0LCBrQ29uc3RydWN0IH0gPSByZXF1aXJlKCcuLi9jb3JlL3N5bWJvbHMnKVxuY29uc3QgeyBrR3VhcmQgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IGtFbnVtZXJhYmxlUHJvcGVydHkgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7XG4gIG1ha2VJdGVyYXRvcixcbiAgaXNWYWxpZEhlYWRlck5hbWUsXG4gIGlzVmFsaWRIZWFkZXJWYWx1ZVxufSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi93ZWJpZGwnKVxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcblxuY29uc3Qga0hlYWRlcnNNYXAgPSBTeW1ib2woJ2hlYWRlcnMgbWFwJylcbmNvbnN0IGtIZWFkZXJzU29ydGVkTWFwID0gU3ltYm9sKCdoZWFkZXJzIG1hcCBzb3J0ZWQnKVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlXG4gKi9cbmZ1bmN0aW9uIGlzSFRUUFdoaXRlU3BhY2VDaGFyQ29kZSAoY29kZSkge1xuICByZXR1cm4gY29kZSA9PT0gMHgwMGEgfHwgY29kZSA9PT0gMHgwMGQgfHwgY29kZSA9PT0gMHgwMDkgfHwgY29kZSA9PT0gMHgwMjBcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWhlYWRlci12YWx1ZS1ub3JtYWxpemVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwb3RlbnRpYWxWYWx1ZVxuICovXG5mdW5jdGlvbiBoZWFkZXJWYWx1ZU5vcm1hbGl6ZSAocG90ZW50aWFsVmFsdWUpIHtcbiAgLy8gIFRvIG5vcm1hbGl6ZSBhIGJ5dGUgc2VxdWVuY2UgcG90ZW50aWFsVmFsdWUsIHJlbW92ZVxuICAvLyAgYW55IGxlYWRpbmcgYW5kIHRyYWlsaW5nIEhUVFAgd2hpdGVzcGFjZSBieXRlcyBmcm9tXG4gIC8vICBwb3RlbnRpYWxWYWx1ZS5cbiAgbGV0IGkgPSAwOyBsZXQgaiA9IHBvdGVudGlhbFZhbHVlLmxlbmd0aFxuXG4gIHdoaWxlIChqID4gaSAmJiBpc0hUVFBXaGl0ZVNwYWNlQ2hhckNvZGUocG90ZW50aWFsVmFsdWUuY2hhckNvZGVBdChqIC0gMSkpKSAtLWpcbiAgd2hpbGUgKGogPiBpICYmIGlzSFRUUFdoaXRlU3BhY2VDaGFyQ29kZShwb3RlbnRpYWxWYWx1ZS5jaGFyQ29kZUF0KGkpKSkgKytpXG5cbiAgcmV0dXJuIGkgPT09IDAgJiYgaiA9PT0gcG90ZW50aWFsVmFsdWUubGVuZ3RoID8gcG90ZW50aWFsVmFsdWUgOiBwb3RlbnRpYWxWYWx1ZS5zdWJzdHJpbmcoaSwgailcbn1cblxuZnVuY3Rpb24gZmlsbCAoaGVhZGVycywgb2JqZWN0KSB7XG4gIC8vIFRvIGZpbGwgYSBIZWFkZXJzIG9iamVjdCBoZWFkZXJzIHdpdGggYSBnaXZlbiBvYmplY3Qgb2JqZWN0LCBydW4gdGhlc2Ugc3RlcHM6XG5cbiAgLy8gMS4gSWYgb2JqZWN0IGlzIGEgc2VxdWVuY2UsIHRoZW4gZm9yIGVhY2ggaGVhZGVyIGluIG9iamVjdDpcbiAgLy8gTm90ZTogd2ViaWRsIGNvbnZlcnNpb24gdG8gYXJyYXkgaGFzIGFscmVhZHkgYmVlbiBkb25lLlxuICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGhlYWRlciA9IG9iamVjdFtpXVxuICAgICAgLy8gMS4gSWYgaGVhZGVyIGRvZXMgbm90IGNvbnRhaW4gZXhhY3RseSB0d28gaXRlbXMsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAoaGVhZGVyLmxlbmd0aCAhPT0gMikge1xuICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgaGVhZGVyOiAnSGVhZGVycyBjb25zdHJ1Y3RvcicsXG4gICAgICAgICAgbWVzc2FnZTogYGV4cGVjdGVkIG5hbWUvdmFsdWUgcGFpciB0byBiZSBsZW5ndGggMiwgZm91bmQgJHtoZWFkZXIubGVuZ3RofS5gXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIEFwcGVuZCAoaGVhZGVyXHUyMDE5cyBmaXJzdCBpdGVtLCBoZWFkZXJcdTIwMTlzIHNlY29uZCBpdGVtKSB0byBoZWFkZXJzLlxuICAgICAgYXBwZW5kSGVhZGVyKGhlYWRlcnMsIGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHtcbiAgICAvLyBOb3RlOiBudWxsIHNob3VsZCB0aHJvd1xuXG4gICAgLy8gMi4gT3RoZXJ3aXNlLCBvYmplY3QgaXMgYSByZWNvcmQsIHRoZW4gZm9yIGVhY2gga2V5IFx1MjE5MiB2YWx1ZSBpbiBvYmplY3QsXG4gICAgLy8gICAgYXBwZW5kIChrZXksIHZhbHVlKSB0byBoZWFkZXJzXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGFwcGVuZEhlYWRlcihoZWFkZXJzLCBrZXlzW2ldLCBvYmplY3Rba2V5c1tpXV0pXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuY29udmVyc2lvbkZhaWxlZCh7XG4gICAgICBwcmVmaXg6ICdIZWFkZXJzIGNvbnN0cnVjdG9yJyxcbiAgICAgIGFyZ3VtZW50OiAnQXJndW1lbnQgMScsXG4gICAgICB0eXBlczogWydzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5nPj4nLCAncmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+J11cbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1oZWFkZXJzLWFwcGVuZFxuICovXG5mdW5jdGlvbiBhcHBlbmRIZWFkZXIgKGhlYWRlcnMsIG5hbWUsIHZhbHVlKSB7XG4gIC8vIDEuIE5vcm1hbGl6ZSB2YWx1ZS5cbiAgdmFsdWUgPSBoZWFkZXJWYWx1ZU5vcm1hbGl6ZSh2YWx1ZSlcblxuICAvLyAyLiBJZiBuYW1lIGlzIG5vdCBhIGhlYWRlciBuYW1lIG9yIHZhbHVlIGlzIG5vdCBhXG4gIC8vICAgIGhlYWRlciB2YWx1ZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZShuYW1lKSkge1xuICAgIHRocm93IHdlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50KHtcbiAgICAgIHByZWZpeDogJ0hlYWRlcnMuYXBwZW5kJyxcbiAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgdHlwZTogJ2hlYWRlciBuYW1lJ1xuICAgIH0pXG4gIH0gZWxzZSBpZiAoIWlzVmFsaWRIZWFkZXJWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmludmFsaWRBcmd1bWVudCh7XG4gICAgICBwcmVmaXg6ICdIZWFkZXJzLmFwcGVuZCcsXG4gICAgICB2YWx1ZSxcbiAgICAgIHR5cGU6ICdoZWFkZXIgdmFsdWUnXG4gICAgfSlcbiAgfVxuXG4gIC8vIDMuIElmIGhlYWRlcnNcdTIwMTlzIGd1YXJkIGlzIFwiaW1tdXRhYmxlXCIsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gIC8vIDQuIE90aGVyd2lzZSwgaWYgaGVhZGVyc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0XCIgYW5kIG5hbWUgaXMgYVxuICAvLyAgICBmb3JiaWRkZW4gaGVhZGVyIG5hbWUsIHJldHVybi5cbiAgLy8gTm90ZTogdW5kaWNpIGRvZXMgbm90IGltcGxlbWVudCBmb3JiaWRkZW4gaGVhZGVyIG5hbWVzXG4gIGlmIChoZWFkZXJzW2tHdWFyZF0gPT09ICdpbW11dGFibGUnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW1tdXRhYmxlJylcbiAgfSBlbHNlIGlmIChoZWFkZXJzW2tHdWFyZF0gPT09ICdyZXF1ZXN0LW5vLWNvcnMnKSB7XG4gICAgLy8gNS4gT3RoZXJ3aXNlLCBpZiBoZWFkZXJzXHUyMDE5cyBndWFyZCBpcyBcInJlcXVlc3Qtbm8tY29yc1wiOlxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIC8vIDYuIE90aGVyd2lzZSwgaWYgaGVhZGVyc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXNwb25zZVwiIGFuZCBuYW1lIGlzIGFcbiAgLy8gICAgZm9yYmlkZGVuIHJlc3BvbnNlLWhlYWRlciBuYW1lLCByZXR1cm4uXG5cbiAgLy8gNy4gQXBwZW5kIChuYW1lLCB2YWx1ZSkgdG8gaGVhZGVyc1x1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIHJldHVybiBoZWFkZXJzW2tIZWFkZXJzTGlzdF0uYXBwZW5kKG5hbWUsIHZhbHVlKVxuXG4gIC8vIDguIElmIGhlYWRlcnNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdC1uby1jb3JzXCIsIHRoZW4gcmVtb3ZlXG4gIC8vICAgIHByaXZpbGVnZWQgbm8tQ09SUyByZXF1ZXN0IGhlYWRlcnMgZnJvbSBoZWFkZXJzXG59XG5cbmNsYXNzIEhlYWRlcnNMaXN0IHtcbiAgLyoqIEB0eXBlIHtbc3RyaW5nLCBzdHJpbmddW118bnVsbH0gKi9cbiAgY29va2llcyA9IG51bGxcblxuICBjb25zdHJ1Y3RvciAoaW5pdCkge1xuICAgIGlmIChpbml0IGluc3RhbmNlb2YgSGVhZGVyc0xpc3QpIHtcbiAgICAgIHRoaXNba0hlYWRlcnNNYXBdID0gbmV3IE1hcChpbml0W2tIZWFkZXJzTWFwXSlcbiAgICAgIHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdID0gaW5pdFtrSGVhZGVyc1NvcnRlZE1hcF1cbiAgICAgIHRoaXMuY29va2llcyA9IGluaXQuY29va2llcyA9PT0gbnVsbCA/IG51bGwgOiBbLi4uaW5pdC5jb29raWVzXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tIZWFkZXJzTWFwXSA9IG5ldyBNYXAoaW5pdClcbiAgICAgIHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNoZWFkZXItbGlzdC1jb250YWluc1xuICBjb250YWlucyAobmFtZSkge1xuICAgIC8vIEEgaGVhZGVyIGxpc3QgbGlzdCBjb250YWlucyBhIGhlYWRlciBuYW1lIG5hbWUgaWYgbGlzdFxuICAgIC8vIGNvbnRhaW5zIGEgaGVhZGVyIHdob3NlIG5hbWUgaXMgYSBieXRlLWNhc2UtaW5zZW5zaXRpdmVcbiAgICAvLyBtYXRjaCBmb3IgbmFtZS5cbiAgICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc01hcF0uaGFzKG5hbWUpXG4gIH1cblxuICBjbGVhciAoKSB7XG4gICAgdGhpc1trSGVhZGVyc01hcF0uY2xlYXIoKVxuICAgIHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdID0gbnVsbFxuICAgIHRoaXMuY29va2llcyA9IG51bGxcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWhlYWRlci1saXN0LWFwcGVuZFxuICBhcHBlbmQgKG5hbWUsIHZhbHVlKSB7XG4gICAgdGhpc1trSGVhZGVyc1NvcnRlZE1hcF0gPSBudWxsXG5cbiAgICAvLyAxLiBJZiBsaXN0IGNvbnRhaW5zIG5hbWUsIHRoZW4gc2V0IG5hbWUgdG8gdGhlIGZpcnN0IHN1Y2hcbiAgICAvLyAgICBoZWFkZXJcdTIwMTlzIG5hbWUuXG4gICAgY29uc3QgbG93ZXJjYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXNba0hlYWRlcnNNYXBdLmdldChsb3dlcmNhc2VOYW1lKVxuXG4gICAgLy8gMi4gQXBwZW5kIChuYW1lLCB2YWx1ZSkgdG8gbGlzdC5cbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICBjb25zdCBkZWxpbWl0ZXIgPSBsb3dlcmNhc2VOYW1lID09PSAnY29va2llJyA/ICc7ICcgOiAnLCAnXG4gICAgICB0aGlzW2tIZWFkZXJzTWFwXS5zZXQobG93ZXJjYXNlTmFtZSwge1xuICAgICAgICBuYW1lOiBleGlzdHMubmFtZSxcbiAgICAgICAgdmFsdWU6IGAke2V4aXN0cy52YWx1ZX0ke2RlbGltaXRlcn0ke3ZhbHVlfWBcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0hlYWRlcnNNYXBdLnNldChsb3dlcmNhc2VOYW1lLCB7IG5hbWUsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKGxvd2VyY2FzZU5hbWUgPT09ICdzZXQtY29va2llJykge1xuICAgICAgdGhpcy5jb29raWVzID8/PSBbXVxuICAgICAgdGhpcy5jb29raWVzLnB1c2godmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLWxpc3Qtc2V0XG4gIHNldCAobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzW2tIZWFkZXJzU29ydGVkTWFwXSA9IG51bGxcbiAgICBjb25zdCBsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgICBpZiAobG93ZXJjYXNlTmFtZSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICB0aGlzLmNvb2tpZXMgPSBbdmFsdWVdXG4gICAgfVxuXG4gICAgLy8gMS4gSWYgbGlzdCBjb250YWlucyBuYW1lLCB0aGVuIHNldCB0aGUgdmFsdWUgb2ZcbiAgICAvLyAgICB0aGUgZmlyc3Qgc3VjaCBoZWFkZXIgdG8gdmFsdWUgYW5kIHJlbW92ZSB0aGVcbiAgICAvLyAgICBvdGhlcnMuXG4gICAgLy8gMi4gT3RoZXJ3aXNlLCBhcHBlbmQgaGVhZGVyIChuYW1lLCB2YWx1ZSkgdG8gbGlzdC5cbiAgICB0aGlzW2tIZWFkZXJzTWFwXS5zZXQobG93ZXJjYXNlTmFtZSwgeyBuYW1lLCB2YWx1ZSB9KVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLWxpc3QtZGVsZXRlXG4gIGRlbGV0ZSAobmFtZSkge1xuICAgIHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdID0gbnVsbFxuXG4gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXG4gICAgaWYgKG5hbWUgPT09ICdzZXQtY29va2llJykge1xuICAgICAgdGhpcy5jb29raWVzID0gbnVsbFxuICAgIH1cblxuICAgIHRoaXNba0hlYWRlcnNNYXBdLmRlbGV0ZShuYW1lKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLWxpc3QtZ2V0XG4gIGdldCAobmFtZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpc1trSGVhZGVyc01hcF0uZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSlcblxuICAgIC8vIDEuIElmIGxpc3QgZG9lcyBub3QgY29udGFpbiBuYW1lLCB0aGVuIHJldHVybiBudWxsLlxuICAgIC8vIDIuIFJldHVybiB0aGUgdmFsdWVzIG9mIGFsbCBoZWFkZXJzIGluIGxpc3Qgd2hvc2UgbmFtZVxuICAgIC8vICAgIGlzIGEgYnl0ZS1jYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBuYW1lLFxuICAgIC8vICAgIHNlcGFyYXRlZCBmcm9tIGVhY2ggb3RoZXIgYnkgMHgyQyAweDIwLCBpbiBvcmRlci5cbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZS52YWx1ZVxuICB9XG5cbiAgKiBbU3ltYm9sLml0ZXJhdG9yXSAoKSB7XG4gICAgLy8gdXNlIHRoZSBsb3dlcmNhc2VkIG5hbWVcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB7IHZhbHVlIH1dIG9mIHRoaXNba0hlYWRlcnNNYXBdKSB7XG4gICAgICB5aWVsZCBbbmFtZSwgdmFsdWVdXG4gICAgfVxuICB9XG5cbiAgZ2V0IGVudHJpZXMgKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7fVxuXG4gICAgaWYgKHRoaXNba0hlYWRlcnNNYXBdLnNpemUpIHtcbiAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIHRoaXNba0hlYWRlcnNNYXBdLnZhbHVlcygpKSB7XG4gICAgICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2hlYWRlcnMtY2xhc3NcbmNsYXNzIEhlYWRlcnMge1xuICBjb25zdHJ1Y3RvciAoaW5pdCA9IHVuZGVmaW5lZCkge1xuICAgIGlmIChpbml0ID09PSBrQ29uc3RydWN0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpc1trSGVhZGVyc0xpc3RdID0gbmV3IEhlYWRlcnNMaXN0KClcblxuICAgIC8vIFRoZSBuZXcgSGVhZGVycyhpbml0KSBjb25zdHJ1Y3RvciBzdGVwcyBhcmU6XG5cbiAgICAvLyAxLiBTZXQgdGhpc1x1MjAxOXMgZ3VhcmQgdG8gXCJub25lXCIuXG4gICAgdGhpc1trR3VhcmRdID0gJ25vbmUnXG5cbiAgICAvLyAyLiBJZiBpbml0IGlzIGdpdmVuLCB0aGVuIGZpbGwgdGhpcyB3aXRoIGluaXQuXG4gICAgaWYgKGluaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5pdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLkhlYWRlcnNJbml0KGluaXQpXG4gICAgICBmaWxsKHRoaXMsIGluaXQpXG4gICAgfVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkZXJzLWFwcGVuZFxuICBhcHBlbmQgKG5hbWUsIHZhbHVlKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdIZWFkZXJzLmFwcGVuZCcgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nKG5hbWUpXG4gICAgdmFsdWUgPSB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nKHZhbHVlKVxuXG4gICAgcmV0dXJuIGFwcGVuZEhlYWRlcih0aGlzLCBuYW1lLCB2YWx1ZSlcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20taGVhZGVycy1kZWxldGVcbiAgZGVsZXRlIChuYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdIZWFkZXJzLmRlbGV0ZScgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nKG5hbWUpXG5cbiAgICAvLyAxLiBJZiBuYW1lIGlzIG5vdCBhIGhlYWRlciBuYW1lLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWUobmFtZSkpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50KHtcbiAgICAgICAgcHJlZml4OiAnSGVhZGVycy5kZWxldGUnLFxuICAgICAgICB2YWx1ZTogbmFtZSxcbiAgICAgICAgdHlwZTogJ2hlYWRlciBuYW1lJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBJZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcImltbXV0YWJsZVwiLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIC8vIDMuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0XCIgYW5kIG5hbWUgaXMgYVxuICAgIC8vICAgIGZvcmJpZGRlbiBoZWFkZXIgbmFtZSwgcmV0dXJuLlxuICAgIC8vIDQuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXF1ZXN0LW5vLWNvcnNcIiwgbmFtZVxuICAgIC8vICAgIGlzIG5vdCBhIG5vLUNPUlMtc2FmZWxpc3RlZCByZXF1ZXN0LWhlYWRlciBuYW1lLCBhbmRcbiAgICAvLyAgICBuYW1lIGlzIG5vdCBhIHByaXZpbGVnZWQgbm8tQ09SUyByZXF1ZXN0LWhlYWRlciBuYW1lLFxuICAgIC8vICAgIHJldHVybi5cbiAgICAvLyA1LiBPdGhlcndpc2UsIGlmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwicmVzcG9uc2VcIiBhbmQgbmFtZSBpc1xuICAgIC8vICAgIGEgZm9yYmlkZGVuIHJlc3BvbnNlLWhlYWRlciBuYW1lLCByZXR1cm4uXG4gICAgLy8gTm90ZTogdW5kaWNpIGRvZXMgbm90IGltcGxlbWVudCBmb3JiaWRkZW4gaGVhZGVyIG5hbWVzXG4gICAgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ2ltbXV0YWJsZScpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ltbXV0YWJsZScpXG4gICAgfSBlbHNlIGlmICh0aGlzW2tHdWFyZF0gPT09ICdyZXF1ZXN0LW5vLWNvcnMnKSB7XG4gICAgICAvLyBUT0RPXG4gICAgfVxuXG4gICAgLy8gNi4gSWYgdGhpc1x1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBuYW1lLCB0aGVuXG4gICAgLy8gICAgcmV0dXJuLlxuICAgIGlmICghdGhpc1trSGVhZGVyc0xpc3RdLmNvbnRhaW5zKG5hbWUpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyA3LiBEZWxldGUgbmFtZSBmcm9tIHRoaXNcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIC8vIDguIElmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdC1uby1jb3JzXCIsIHRoZW4gcmVtb3ZlXG4gICAgLy8gICAgcHJpdmlsZWdlZCBuby1DT1JTIHJlcXVlc3QgaGVhZGVycyBmcm9tIHRoaXMuXG4gICAgdGhpc1trSGVhZGVyc0xpc3RdLmRlbGV0ZShuYW1lKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkZXJzLWdldFxuICBnZXQgKG5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0hlYWRlcnMuZ2V0JyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcobmFtZSlcblxuICAgIC8vIDEuIElmIG5hbWUgaXMgbm90IGEgaGVhZGVyIG5hbWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgICBwcmVmaXg6ICdIZWFkZXJzLmdldCcsXG4gICAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgICB0eXBlOiAnaGVhZGVyIG5hbWUnXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIFJldHVybiB0aGUgcmVzdWx0IG9mIGdldHRpbmcgbmFtZSBmcm9tIHRoaXNcdTIwMTlzIGhlYWRlclxuICAgIC8vICAgIGxpc3QuXG4gICAgcmV0dXJuIHRoaXNba0hlYWRlcnNMaXN0XS5nZXQobmFtZSlcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20taGVhZGVycy1oYXNcbiAgaGFzIChuYW1lKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdIZWFkZXJzLmhhcycgfSlcblxuICAgIG5hbWUgPSB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nKG5hbWUpXG5cbiAgICAvLyAxLiBJZiBuYW1lIGlzIG5vdCBhIGhlYWRlciBuYW1lLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWUobmFtZSkpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50KHtcbiAgICAgICAgcHJlZml4OiAnSGVhZGVycy5oYXMnLFxuICAgICAgICB2YWx1ZTogbmFtZSxcbiAgICAgICAgdHlwZTogJ2hlYWRlciBuYW1lJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAyLiBSZXR1cm4gdHJ1ZSBpZiB0aGlzXHUyMDE5cyBoZWFkZXIgbGlzdCBjb250YWlucyBuYW1lO1xuICAgIC8vICAgIG90aGVyd2lzZSBmYWxzZS5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc0xpc3RdLmNvbnRhaW5zKG5hbWUpXG4gIH1cblxuICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLWhlYWRlcnMtc2V0XG4gIHNldCAobmFtZSwgdmFsdWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAyLCB7IGhlYWRlcjogJ0hlYWRlcnMuc2V0JyB9KVxuXG4gICAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcobmFtZSlcbiAgICB2YWx1ZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJ5dGVTdHJpbmcodmFsdWUpXG5cbiAgICAvLyAxLiBOb3JtYWxpemUgdmFsdWUuXG4gICAgdmFsdWUgPSBoZWFkZXJWYWx1ZU5vcm1hbGl6ZSh2YWx1ZSlcblxuICAgIC8vIDIuIElmIG5hbWUgaXMgbm90IGEgaGVhZGVyIG5hbWUgb3IgdmFsdWUgaXMgbm90IGFcbiAgICAvLyAgICBoZWFkZXIgdmFsdWUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5pbnZhbGlkQXJndW1lbnQoe1xuICAgICAgICBwcmVmaXg6ICdIZWFkZXJzLnNldCcsXG4gICAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgICB0eXBlOiAnaGVhZGVyIG5hbWUnXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoIWlzVmFsaWRIZWFkZXJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuaW52YWxpZEFyZ3VtZW50KHtcbiAgICAgICAgcHJlZml4OiAnSGVhZGVycy5zZXQnLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdHlwZTogJ2hlYWRlciB2YWx1ZSdcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMy4gSWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJpbW11dGFibGVcIiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAvLyA0LiBPdGhlcndpc2UsIGlmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdFwiIGFuZCBuYW1lIGlzIGFcbiAgICAvLyAgICBmb3JiaWRkZW4gaGVhZGVyIG5hbWUsIHJldHVybi5cbiAgICAvLyA1LiBPdGhlcndpc2UsIGlmIHRoaXNcdTIwMTlzIGd1YXJkIGlzIFwicmVxdWVzdC1uby1jb3JzXCIgYW5kXG4gICAgLy8gICAgbmFtZS92YWx1ZSBpcyBub3QgYSBuby1DT1JTLXNhZmVsaXN0ZWQgcmVxdWVzdC1oZWFkZXIsXG4gICAgLy8gICAgcmV0dXJuLlxuICAgIC8vIDYuIE90aGVyd2lzZSwgaWYgdGhpc1x1MjAxOXMgZ3VhcmQgaXMgXCJyZXNwb25zZVwiIGFuZCBuYW1lIGlzIGFcbiAgICAvLyAgICBmb3JiaWRkZW4gcmVzcG9uc2UtaGVhZGVyIG5hbWUsIHJldHVybi5cbiAgICAvLyBOb3RlOiB1bmRpY2kgZG9lcyBub3QgaW1wbGVtZW50IGZvcmJpZGRlbiBoZWFkZXIgbmFtZXNcbiAgICBpZiAodGhpc1trR3VhcmRdID09PSAnaW1tdXRhYmxlJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW1tdXRhYmxlJylcbiAgICB9IGVsc2UgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ3JlcXVlc3Qtbm8tY29ycycpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICAvLyA3LiBTZXQgKG5hbWUsIHZhbHVlKSBpbiB0aGlzXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICAvLyA4LiBJZiB0aGlzXHUyMDE5cyBndWFyZCBpcyBcInJlcXVlc3Qtbm8tY29yc1wiLCB0aGVuIHJlbW92ZVxuICAgIC8vICAgIHByaXZpbGVnZWQgbm8tQ09SUyByZXF1ZXN0IGhlYWRlcnMgZnJvbSB0aGlzXG4gICAgdGhpc1trSGVhZGVyc0xpc3RdLnNldChuYW1lLCB2YWx1ZSlcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20taGVhZGVycy1nZXRzZXRjb29raWVcbiAgZ2V0U2V0Q29va2llICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgLy8gMS4gSWYgdGhpc1x1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgU2V0LUNvb2tpZWAsIHRoZW4gcmV0dXJuIFx1MDBBQiBcdTAwQkIuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSB2YWx1ZXMgb2YgYWxsIGhlYWRlcnMgaW4gdGhpc1x1MjAxOXMgaGVhZGVyIGxpc3Qgd2hvc2UgbmFtZSBpc1xuICAgIC8vICAgIGEgYnl0ZS1jYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBgU2V0LUNvb2tpZWAsIGluIG9yZGVyLlxuXG4gICAgY29uc3QgbGlzdCA9IHRoaXNba0hlYWRlcnNMaXN0XS5jb29raWVzXG5cbiAgICBpZiAobGlzdCkge1xuICAgICAgcmV0dXJuIFsuLi5saXN0XVxuICAgIH1cblxuICAgIHJldHVybiBbXVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyLWxpc3Qtc29ydC1hbmQtY29tYmluZVxuICBnZXQgW2tIZWFkZXJzU29ydGVkTWFwXSAoKSB7XG4gICAgaWYgKHRoaXNba0hlYWRlcnNMaXN0XVtrSGVhZGVyc1NvcnRlZE1hcF0pIHtcbiAgICAgIHJldHVybiB0aGlzW2tIZWFkZXJzTGlzdF1ba0hlYWRlcnNTb3J0ZWRNYXBdXG4gICAgfVxuXG4gICAgLy8gMS4gTGV0IGhlYWRlcnMgYmUgYW4gZW1wdHkgbGlzdCBvZiBoZWFkZXJzIHdpdGggdGhlIGtleSBiZWluZyB0aGUgbmFtZVxuICAgIC8vICAgIGFuZCB2YWx1ZSB0aGUgdmFsdWUuXG4gICAgY29uc3QgaGVhZGVycyA9IFtdXG5cbiAgICAvLyAyLiBMZXQgbmFtZXMgYmUgdGhlIHJlc3VsdCBvZiBjb252ZXJ0IGhlYWRlciBuYW1lcyB0byBhIHNvcnRlZC1sb3dlcmNhc2VcbiAgICAvLyAgICBzZXQgd2l0aCBhbGwgdGhlIG5hbWVzIG9mIHRoZSBoZWFkZXJzIGluIGxpc3QuXG4gICAgY29uc3QgbmFtZXMgPSBbLi4udGhpc1trSGVhZGVyc0xpc3RdXS5zb3J0KChhLCBiKSA9PiBhWzBdIDwgYlswXSA/IC0xIDogMSlcbiAgICBjb25zdCBjb29raWVzID0gdGhpc1trSGVhZGVyc0xpc3RdLmNvb2tpZXNcblxuICAgIC8vIDMuIEZvciBlYWNoIG5hbWUgb2YgbmFtZXM6XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IG5hbWVzW2ldXG4gICAgICAvLyAxLiBJZiBuYW1lIGlzIGBzZXQtY29va2llYCwgdGhlbjpcbiAgICAgIGlmIChuYW1lID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgLy8gMS4gTGV0IHZhbHVlcyBiZSBhIGxpc3Qgb2YgYWxsIHZhbHVlcyBvZiBoZWFkZXJzIGluIGxpc3Qgd2hvc2UgbmFtZVxuICAgICAgICAvLyAgICBpcyBhIGJ5dGUtY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgbmFtZSwgaW4gb3JkZXIuXG5cbiAgICAgICAgLy8gMi4gRm9yIGVhY2ggdmFsdWUgb2YgdmFsdWVzOlxuICAgICAgICAvLyAxLiBBcHBlbmQgKG5hbWUsIHZhbHVlKSB0byBoZWFkZXJzLlxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvb2tpZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICBoZWFkZXJzLnB1c2goW25hbWUsIGNvb2tpZXNbal1dKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAyLiBPdGhlcndpc2U6XG5cbiAgICAgICAgLy8gMS4gTGV0IHZhbHVlIGJlIHRoZSByZXN1bHQgb2YgZ2V0dGluZyBuYW1lIGZyb20gbGlzdC5cblxuICAgICAgICAvLyAyLiBBc3NlcnQ6IHZhbHVlIGlzIG5vbi1udWxsLlxuICAgICAgICBhc3NlcnQodmFsdWUgIT09IG51bGwpXG5cbiAgICAgICAgLy8gMy4gQXBwZW5kIChuYW1lLCB2YWx1ZSkgdG8gaGVhZGVycy5cbiAgICAgICAgaGVhZGVycy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpc1trSGVhZGVyc0xpc3RdW2tIZWFkZXJzU29ydGVkTWFwXSA9IGhlYWRlcnNcblxuICAgIC8vIDQuIFJldHVybiBoZWFkZXJzLlxuICAgIHJldHVybiBoZWFkZXJzXG4gIH1cblxuICBrZXlzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBIZWFkZXJzKVxuXG4gICAgaWYgKHRoaXNba0d1YXJkXSA9PT0gJ2ltbXV0YWJsZScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1trSGVhZGVyc1NvcnRlZE1hcF1cbiAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoKCkgPT4gdmFsdWUsICdIZWFkZXJzJyxcbiAgICAgICAgJ2tleScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VJdGVyYXRvcihcbiAgICAgICgpID0+IFsuLi50aGlzW2tIZWFkZXJzU29ydGVkTWFwXS52YWx1ZXMoKV0sXG4gICAgICAnSGVhZGVycycsXG4gICAgICAna2V5J1xuICAgIClcbiAgfVxuXG4gIHZhbHVlcyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIGlmICh0aGlzW2tHdWFyZF0gPT09ICdpbW11dGFibGUnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdXG4gICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCgpID0+IHZhbHVlLCAnSGVhZGVycycsXG4gICAgICAgICd2YWx1ZScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VJdGVyYXRvcihcbiAgICAgICgpID0+IFsuLi50aGlzW2tIZWFkZXJzU29ydGVkTWFwXS52YWx1ZXMoKV0sXG4gICAgICAnSGVhZGVycycsXG4gICAgICAndmFsdWUnXG4gICAgKVxuICB9XG5cbiAgZW50cmllcyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgSGVhZGVycylcblxuICAgIGlmICh0aGlzW2tHdWFyZF0gPT09ICdpbW11dGFibGUnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXNba0hlYWRlcnNTb3J0ZWRNYXBdXG4gICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCgpID0+IHZhbHVlLCAnSGVhZGVycycsXG4gICAgICAgICdrZXkrdmFsdWUnKVxuICAgIH1cblxuICAgIHJldHVybiBtYWtlSXRlcmF0b3IoXG4gICAgICAoKSA9PiBbLi4udGhpc1trSGVhZGVyc1NvcnRlZE1hcF0udmFsdWVzKCldLFxuICAgICAgJ0hlYWRlcnMnLFxuICAgICAgJ2tleSt2YWx1ZSdcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcsIHNlbGY6IEhlYWRlcnMpID0+IHZvaWR9IGNhbGxiYWNrRm5cbiAgICogQHBhcmFtIHt1bmtub3dufSB0aGlzQXJnXG4gICAqL1xuICBmb3JFYWNoIChjYWxsYmFja0ZuLCB0aGlzQXJnID0gZ2xvYmFsVGhpcykge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnSGVhZGVycy5mb3JFYWNoJyB9KVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFja0ZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBcIkZhaWxlZCB0byBleGVjdXRlICdmb3JFYWNoJyBvbiAnSGVhZGVycyc6IHBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdGdW5jdGlvbicuXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzKSB7XG4gICAgICBjYWxsYmFja0ZuLmFwcGx5KHRoaXNBcmcsIFt2YWx1ZSwga2V5LCB0aGlzXSlcbiAgICB9XG4gIH1cblxuICBbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEhlYWRlcnMpXG5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc0xpc3RdXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSGVhZGVycy5wcm90b3R5cGUsIHtcbiAgYXBwZW5kOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBkZWxldGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGdldDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgaGFzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBzZXQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGdldFNldENvb2tpZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAga2V5czoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgdmFsdWVzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBlbnRyaWVzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBmb3JFYWNoOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBbU3ltYm9sLml0ZXJhdG9yXTogeyBlbnVtZXJhYmxlOiBmYWxzZSB9LFxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnSGVhZGVycycsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0sXG4gIFt1dGlsLmluc3BlY3QuY3VzdG9tXToge1xuICAgIGVudW1lcmFibGU6IGZhbHNlXG4gIH1cbn0pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLkhlYWRlcnNJbml0ID0gZnVuY3Rpb24gKFYpIHtcbiAgaWYgKHdlYmlkbC51dGlsLlR5cGUoVikgPT09ICdPYmplY3QnKSB7XG4gICAgaWYgKFZbU3ltYm9sLml0ZXJhdG9yXSkge1xuICAgICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5nPj4nXShWKVxuICAgIH1cblxuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVyc1sncmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+J10oVilcbiAgfVxuXG4gIHRocm93IHdlYmlkbC5lcnJvcnMuY29udmVyc2lvbkZhaWxlZCh7XG4gICAgcHJlZml4OiAnSGVhZGVycyBjb25zdHJ1Y3RvcicsXG4gICAgYXJndW1lbnQ6ICdBcmd1bWVudCAxJyxcbiAgICB0eXBlczogWydzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5nPj4nLCAncmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+J11cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZpbGwsXG4gIEhlYWRlcnMsXG4gIEhlYWRlcnNMaXN0XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgSGVhZGVycywgSGVhZGVyc0xpc3QsIGZpbGwgfSA9IHJlcXVpcmUoJy4vaGVhZGVycycpXG5jb25zdCB7IGV4dHJhY3RCb2R5LCBjbG9uZUJvZHksIG1peGluQm9keSB9ID0gcmVxdWlyZSgnLi9ib2R5JylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSB1dGlsXG5jb25zdCB7XG4gIGlzVmFsaWRSZWFzb25QaHJhc2UsXG4gIGlzQ2FuY2VsbGVkLFxuICBpc0Fib3J0ZWQsXG4gIGlzQmxvYkxpa2UsXG4gIHNlcmlhbGl6ZUphdmFzY3JpcHRWYWx1ZVRvSlNPTlN0cmluZyxcbiAgaXNFcnJvckxpa2UsXG4gIGlzb21vcnBoaWNFbmNvZGVcbn0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3Qge1xuICByZWRpcmVjdFN0YXR1c1NldCxcbiAgbnVsbEJvZHlTdGF0dXMsXG4gIERPTUV4Y2VwdGlvblxufSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsga1N0YXRlLCBrSGVhZGVycywga0d1YXJkLCBrUmVhbG0gfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi93ZWJpZGwnKVxuY29uc3QgeyBGb3JtRGF0YSB9ID0gcmVxdWlyZSgnLi9mb3JtZGF0YScpXG5jb25zdCB7IGdldEdsb2JhbE9yaWdpbiB9ID0gcmVxdWlyZSgnLi9nbG9iYWwnKVxuY29uc3QgeyBVUkxTZXJpYWxpemVyIH0gPSByZXF1aXJlKCcuL2RhdGFVUkwnKVxuY29uc3QgeyBrSGVhZGVyc0xpc3QsIGtDb25zdHJ1Y3QgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyB0eXBlcyB9ID0gcmVxdWlyZSgndXRpbCcpXG5cbmNvbnN0IFJlYWRhYmxlU3RyZWFtID0gZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSB8fCByZXF1aXJlKCdzdHJlYW0vd2ViJykuUmVhZGFibGVTdHJlYW1cbmNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCd1dGYtOCcpXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXNwb25zZS1jbGFzc1xuY2xhc3MgUmVzcG9uc2Uge1xuICAvLyBDcmVhdGVzIG5ldHdvcmsgZXJyb3IgUmVzcG9uc2UuXG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgLy8gVE9ET1xuICAgIGNvbnN0IHJlbGV2YW50UmVhbG0gPSB7IHNldHRpbmdzT2JqZWN0OiB7fSB9XG5cbiAgICAvLyBUaGUgc3RhdGljIGVycm9yKCkgbWV0aG9kIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhXG4gICAgLy8gUmVzcG9uc2Ugb2JqZWN0LCBnaXZlbiBhIG5ldyBuZXR3b3JrIGVycm9yLCBcImltbXV0YWJsZVwiLCBhbmQgdGhpc1x1MjAxOXNcbiAgICAvLyByZWxldmFudCBSZWFsbS5cbiAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IG5ldyBSZXNwb25zZSgpXG4gICAgcmVzcG9uc2VPYmplY3Rba1N0YXRlXSA9IG1ha2VOZXR3b3JrRXJyb3IoKVxuICAgIHJlc3BvbnNlT2JqZWN0W2tSZWFsbV0gPSByZWxldmFudFJlYWxtXG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tIZWFkZXJzTGlzdF0gPSByZXNwb25zZU9iamVjdFtrU3RhdGVdLmhlYWRlcnNMaXN0XG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tHdWFyZF0gPSAnaW1tdXRhYmxlJ1xuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuICAgIHJldHVybiByZXNwb25zZU9iamVjdFxuICB9XG5cbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1yZXNwb25zZS1qc29uXG4gIHN0YXRpYyBqc29uIChkYXRhLCBpbml0ID0ge30pIHtcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnUmVzcG9uc2UuanNvbicgfSlcblxuICAgIGlmIChpbml0ICE9PSBudWxsKSB7XG4gICAgICBpbml0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVzcG9uc2VJbml0KGluaXQpXG4gICAgfVxuXG4gICAgLy8gMS4gTGV0IGJ5dGVzIHRoZSByZXN1bHQgb2YgcnVubmluZyBzZXJpYWxpemUgYSBKYXZhU2NyaXB0IHZhbHVlIHRvIEpTT04gYnl0ZXMgb24gZGF0YS5cbiAgICBjb25zdCBieXRlcyA9IHRleHRFbmNvZGVyLmVuY29kZShcbiAgICAgIHNlcmlhbGl6ZUphdmFzY3JpcHRWYWx1ZVRvSlNPTlN0cmluZyhkYXRhKVxuICAgIClcblxuICAgIC8vIDIuIExldCBib2R5IGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBieXRlcy5cbiAgICBjb25zdCBib2R5ID0gZXh0cmFjdEJvZHkoYnl0ZXMpXG5cbiAgICAvLyAzLiBMZXQgcmVzcG9uc2VPYmplY3QgYmUgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhIFJlc3BvbnNlIG9iamVjdCwgZ2l2ZW4gYSBuZXcgcmVzcG9uc2UsXG4gICAgLy8gICAgXCJyZXNwb25zZVwiLCBhbmQgdGhpc1x1MjAxOXMgcmVsZXZhbnQgUmVhbG0uXG4gICAgY29uc3QgcmVsZXZhbnRSZWFsbSA9IHsgc2V0dGluZ3NPYmplY3Q6IHt9IH1cbiAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IG5ldyBSZXNwb25zZSgpXG4gICAgcmVzcG9uc2VPYmplY3Rba1JlYWxtXSA9IHJlbGV2YW50UmVhbG1cbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9ICdyZXNwb25zZSdcbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba1JlYWxtXSA9IHJlbGV2YW50UmVhbG1cblxuICAgIC8vIDQuIFBlcmZvcm0gaW5pdGlhbGl6ZSBhIHJlc3BvbnNlIGdpdmVuIHJlc3BvbnNlT2JqZWN0LCBpbml0LCBhbmQgKGJvZHksIFwiYXBwbGljYXRpb24vanNvblwiKS5cbiAgICBpbml0aWFsaXplUmVzcG9uc2UocmVzcG9uc2VPYmplY3QsIGluaXQsIHsgYm9keTogYm9keVswXSwgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG5cbiAgICAvLyA1LiBSZXR1cm4gcmVzcG9uc2VPYmplY3QuXG4gICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0XG4gIH1cblxuICAvLyBDcmVhdGVzIGEgcmVkaXJlY3QgUmVzcG9uc2UgdGhhdCByZWRpcmVjdHMgdG8gdXJsIHdpdGggc3RhdHVzIHN0YXR1cy5cbiAgc3RhdGljIHJlZGlyZWN0ICh1cmwsIHN0YXR1cyA9IDMwMikge1xuICAgIGNvbnN0IHJlbGV2YW50UmVhbG0gPSB7IHNldHRpbmdzT2JqZWN0OiB7fSB9XG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnUmVzcG9uc2UucmVkaXJlY3QnIH0pXG5cbiAgICB1cmwgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcodXJsKVxuICAgIHN0YXR1cyA9IHdlYmlkbC5jb252ZXJ0ZXJzWyd1bnNpZ25lZCBzaG9ydCddKHN0YXR1cylcblxuICAgIC8vIDEuIExldCBwYXJzZWRVUkwgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHVybCB3aXRoIGN1cnJlbnQgc2V0dGluZ3NcbiAgICAvLyBvYmplY3RcdTIwMTlzIEFQSSBiYXNlIFVSTC5cbiAgICAvLyAyLiBJZiBwYXJzZWRVUkwgaXMgZmFpbHVyZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAvLyBUT0RPOiBiYXNlLVVSTD9cbiAgICBsZXQgcGFyc2VkVVJMXG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZFVSTCA9IG5ldyBVUkwodXJsLCBnZXRHbG9iYWxPcmlnaW4oKSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIHBhcnNlIFVSTCBmcm9tICcgKyB1cmwpLCB7XG4gICAgICAgIGNhdXNlOiBlcnJcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMy4gSWYgc3RhdHVzIGlzIG5vdCBhIHJlZGlyZWN0IHN0YXR1cywgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IuXG4gICAgaWYgKCFyZWRpcmVjdFN0YXR1c1NldC5oYXMoc3RhdHVzKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUgJyArIHN0YXR1cylcbiAgICB9XG5cbiAgICAvLyA0LiBMZXQgcmVzcG9uc2VPYmplY3QgYmUgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhIFJlc3BvbnNlIG9iamVjdCxcbiAgICAvLyBnaXZlbiBhIG5ldyByZXNwb25zZSwgXCJpbW11dGFibGVcIiwgYW5kIHRoaXNcdTIwMTlzIHJlbGV2YW50IFJlYWxtLlxuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKClcbiAgICByZXNwb25zZU9iamVjdFtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrR3VhcmRdID0gJ2ltbXV0YWJsZSdcbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba1JlYWxtXSA9IHJlbGV2YW50UmVhbG1cblxuICAgIC8vIDUuIFNldCByZXNwb25zZU9iamVjdFx1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyB0byBzdGF0dXMuXG4gICAgcmVzcG9uc2VPYmplY3Rba1N0YXRlXS5zdGF0dXMgPSBzdGF0dXNcblxuICAgIC8vIDYuIExldCB2YWx1ZSBiZSBwYXJzZWRVUkwsIHNlcmlhbGl6ZWQgYW5kIGlzb21vcnBoaWMgZW5jb2RlZC5cbiAgICBjb25zdCB2YWx1ZSA9IGlzb21vcnBoaWNFbmNvZGUoVVJMU2VyaWFsaXplcihwYXJzZWRVUkwpKVxuXG4gICAgLy8gNy4gQXBwZW5kIGBMb2NhdGlvbmAvdmFsdWUgdG8gcmVzcG9uc2VPYmplY3RcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICByZXNwb25zZU9iamVjdFtrU3RhdGVdLmhlYWRlcnNMaXN0LmFwcGVuZCgnbG9jYXRpb24nLCB2YWx1ZSlcblxuICAgIC8vIDguIFJldHVybiByZXNwb25zZU9iamVjdC5cbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3RcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNkb20tcmVzcG9uc2VcbiAgY29uc3RydWN0b3IgKGJvZHkgPSBudWxsLCBpbml0ID0ge30pIHtcbiAgICBpZiAoYm9keSAhPT0gbnVsbCkge1xuICAgICAgYm9keSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkJvZHlJbml0KGJvZHkpXG4gICAgfVxuXG4gICAgaW5pdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlc3BvbnNlSW5pdChpbml0KVxuXG4gICAgLy8gVE9ET1xuICAgIHRoaXNba1JlYWxtXSA9IHsgc2V0dGluZ3NPYmplY3Q6IHt9IH1cblxuICAgIC8vIDEuIFNldCB0aGlzXHUyMDE5cyByZXNwb25zZSB0byBhIG5ldyByZXNwb25zZS5cbiAgICB0aGlzW2tTdGF0ZV0gPSBtYWtlUmVzcG9uc2Uoe30pXG5cbiAgICAvLyAyLiBTZXQgdGhpc1x1MjAxOXMgaGVhZGVycyB0byBhIG5ldyBIZWFkZXJzIG9iamVjdCB3aXRoIHRoaXNcdTIwMTlzIHJlbGV2YW50XG4gICAgLy8gUmVhbG0sIHdob3NlIGhlYWRlciBsaXN0IGlzIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdCBhbmQgZ3VhcmRcbiAgICAvLyBpcyBcInJlc3BvbnNlXCIuXG4gICAgdGhpc1trSGVhZGVyc10gPSBuZXcgSGVhZGVycyhrQ29uc3RydWN0KVxuICAgIHRoaXNba0hlYWRlcnNdW2tHdWFyZF0gPSAncmVzcG9uc2UnXG4gICAgdGhpc1trSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IHRoaXNba1N0YXRlXS5oZWFkZXJzTGlzdFxuICAgIHRoaXNba0hlYWRlcnNdW2tSZWFsbV0gPSB0aGlzW2tSZWFsbV1cblxuICAgIC8vIDMuIExldCBib2R5V2l0aFR5cGUgYmUgbnVsbC5cbiAgICBsZXQgYm9keVdpdGhUeXBlID0gbnVsbFxuXG4gICAgLy8gNC4gSWYgYm9keSBpcyBub24tbnVsbCwgdGhlbiBzZXQgYm9keVdpdGhUeXBlIHRvIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBib2R5LlxuICAgIGlmIChib2R5ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IFtleHRyYWN0ZWRCb2R5LCB0eXBlXSA9IGV4dHJhY3RCb2R5KGJvZHkpXG4gICAgICBib2R5V2l0aFR5cGUgPSB7IGJvZHk6IGV4dHJhY3RlZEJvZHksIHR5cGUgfVxuICAgIH1cblxuICAgIC8vIDUuIFBlcmZvcm0gaW5pdGlhbGl6ZSBhIHJlc3BvbnNlIGdpdmVuIHRoaXMsIGluaXQsIGFuZCBib2R5V2l0aFR5cGUuXG4gICAgaW5pdGlhbGl6ZVJlc3BvbnNlKHRoaXMsIGluaXQsIGJvZHlXaXRoVHlwZSlcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVzcG9uc2VcdTIwMTlzIHR5cGUsIGUuZy4sIFwiY29yc1wiLlxuICBnZXQgdHlwZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyBUaGUgdHlwZSBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXNwb25zZVx1MjAxOXMgdHlwZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnR5cGVcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVzcG9uc2VcdTIwMTlzIFVSTCwgaWYgaXQgaGFzIG9uZTsgb3RoZXJ3aXNlIHRoZSBlbXB0eSBzdHJpbmcuXG4gIGdldCB1cmwgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgY29uc3QgdXJsTGlzdCA9IHRoaXNba1N0YXRlXS51cmxMaXN0XG5cbiAgICAvLyBUaGUgdXJsIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgaWYgdGhpc1x1MjAxOXNcbiAgICAvLyByZXNwb25zZVx1MjAxOXMgVVJMIGlzIG51bGw7IG90aGVyd2lzZSB0aGlzXHUyMDE5cyByZXNwb25zZVx1MjAxOXMgVVJMLFxuICAgIC8vIHNlcmlhbGl6ZWQgd2l0aCBleGNsdWRlIGZyYWdtZW50IHNldCB0byB0cnVlLlxuICAgIGNvbnN0IHVybCA9IHVybExpc3RbdXJsTGlzdC5sZW5ndGggLSAxXSA/PyBudWxsXG5cbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICByZXR1cm4gVVJMU2VyaWFsaXplcih1cmwsIHRydWUpXG4gIH1cblxuICAvLyBSZXR1cm5zIHdoZXRoZXIgcmVzcG9uc2Ugd2FzIG9idGFpbmVkIHRocm91Z2ggYSByZWRpcmVjdC5cbiAgZ2V0IHJlZGlyZWN0ZWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgLy8gVGhlIHJlZGlyZWN0ZWQgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdHJ1ZSBpZiB0aGlzXHUyMDE5cyByZXNwb25zZVx1MjAxOXMgVVJMXG4gICAgLy8gbGlzdCBoYXMgbW9yZSB0aGFuIG9uZSBpdGVtOyBvdGhlcndpc2UgZmFsc2UuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS51cmxMaXN0Lmxlbmd0aCA+IDFcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cy5cbiAgZ2V0IHN0YXR1cyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyBUaGUgc3RhdHVzIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5zdGF0dXNcbiAgfVxuXG4gIC8vIFJldHVybnMgd2hldGhlciByZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIGFuIG9rIHN0YXR1cy5cbiAgZ2V0IG9rICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIC8vIFRoZSBvayBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0cnVlIGlmIHRoaXNcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgYW5cbiAgICAvLyBvayBzdGF0dXM7IG90aGVyd2lzZSBmYWxzZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnN0YXR1cyA+PSAyMDAgJiYgdGhpc1trU3RhdGVdLnN0YXR1cyA8PSAyOTlcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBtZXNzYWdlLlxuICBnZXQgc3RhdHVzVGV4dCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICAvLyBUaGUgc3RhdHVzVGV4dCBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXNwb25zZVx1MjAxOXMgc3RhdHVzXG4gICAgLy8gbWVzc2FnZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnN0YXR1c1RleHRcbiAgfVxuXG4gIC8vIFJldHVybnMgcmVzcG9uc2VcdTIwMTlzIGhlYWRlcnMgYXMgSGVhZGVycy5cbiAgZ2V0IGhlYWRlcnMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgLy8gVGhlIGhlYWRlcnMgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgaGVhZGVycy5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc11cbiAgfVxuXG4gIGdldCBib2R5ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXNwb25zZSlcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uYm9keSA/IHRoaXNba1N0YXRlXS5ib2R5LnN0cmVhbSA6IG51bGxcbiAgfVxuXG4gIGdldCBib2R5VXNlZCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVzcG9uc2UpXG5cbiAgICByZXR1cm4gISF0aGlzW2tTdGF0ZV0uYm9keSAmJiB1dGlsLmlzRGlzdHVyYmVkKHRoaXNba1N0YXRlXS5ib2R5LnN0cmVhbSlcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBjbG9uZSBvZiByZXNwb25zZS5cbiAgY2xvbmUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlc3BvbnNlKVxuXG4gICAgLy8gMS4gSWYgdGhpcyBpcyB1bnVzYWJsZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAodGhpcy5ib2R5VXNlZCB8fCAodGhpcy5ib2R5ICYmIHRoaXMuYm9keS5sb2NrZWQpKSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ1Jlc3BvbnNlLmNsb25lJyxcbiAgICAgICAgbWVzc2FnZTogJ0JvZHkgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4nXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIExldCBjbG9uZWRSZXNwb25zZSBiZSB0aGUgcmVzdWx0IG9mIGNsb25pbmcgdGhpc1x1MjAxOXMgcmVzcG9uc2UuXG4gICAgY29uc3QgY2xvbmVkUmVzcG9uc2UgPSBjbG9uZVJlc3BvbnNlKHRoaXNba1N0YXRlXSlcblxuICAgIC8vIDMuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgUmVzcG9uc2Ugb2JqZWN0LCBnaXZlblxuICAgIC8vIGNsb25lZFJlc3BvbnNlLCB0aGlzXHUyMDE5cyBoZWFkZXJzXHUyMDE5cyBndWFyZCwgYW5kIHRoaXNcdTIwMTlzIHJlbGV2YW50IFJlYWxtLlxuICAgIGNvbnN0IGNsb25lZFJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKClcbiAgICBjbG9uZWRSZXNwb25zZU9iamVjdFtrU3RhdGVdID0gY2xvbmVkUmVzcG9uc2VcbiAgICBjbG9uZWRSZXNwb25zZU9iamVjdFtrUmVhbG1dID0gdGhpc1trUmVhbG1dXG4gICAgY2xvbmVkUmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tIZWFkZXJzTGlzdF0gPSBjbG9uZWRSZXNwb25zZS5oZWFkZXJzTGlzdFxuICAgIGNsb25lZFJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrR3VhcmRdID0gdGhpc1trSGVhZGVyc11ba0d1YXJkXVxuICAgIGNsb25lZFJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrUmVhbG1dID0gdGhpc1trSGVhZGVyc11ba1JlYWxtXVxuXG4gICAgcmV0dXJuIGNsb25lZFJlc3BvbnNlT2JqZWN0XG4gIH1cbn1cblxubWl4aW5Cb2R5KFJlc3BvbnNlKVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhSZXNwb25zZS5wcm90b3R5cGUsIHtcbiAgdHlwZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgdXJsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBzdGF0dXM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9rOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWRpcmVjdGVkOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBzdGF0dXNUZXh0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBoZWFkZXJzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjbG9uZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYm9keToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYm9keVVzZWQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdSZXNwb25zZScsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJlc3BvbnNlLCB7XG4gIGpzb246IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlZGlyZWN0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBlcnJvcjoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVzcG9uc2UtY2xvbmVcbmZ1bmN0aW9uIGNsb25lUmVzcG9uc2UgKHJlc3BvbnNlKSB7XG4gIC8vIFRvIGNsb25lIGEgcmVzcG9uc2UgcmVzcG9uc2UsIHJ1biB0aGVzZSBzdGVwczpcblxuICAvLyAxLiBJZiByZXNwb25zZSBpcyBhIGZpbHRlcmVkIHJlc3BvbnNlLCB0aGVuIHJldHVybiBhIG5ldyBpZGVudGljYWxcbiAgLy8gZmlsdGVyZWQgcmVzcG9uc2Ugd2hvc2UgaW50ZXJuYWwgcmVzcG9uc2UgaXMgYSBjbG9uZSBvZiByZXNwb25zZVx1MjAxOXNcbiAgLy8gaW50ZXJuYWwgcmVzcG9uc2UuXG4gIGlmIChyZXNwb25zZS5pbnRlcm5hbFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGZpbHRlclJlc3BvbnNlKFxuICAgICAgY2xvbmVSZXNwb25zZShyZXNwb25zZS5pbnRlcm5hbFJlc3BvbnNlKSxcbiAgICAgIHJlc3BvbnNlLnR5cGVcbiAgICApXG4gIH1cblxuICAvLyAyLiBMZXQgbmV3UmVzcG9uc2UgYmUgYSBjb3B5IG9mIHJlc3BvbnNlLCBleGNlcHQgZm9yIGl0cyBib2R5LlxuICBjb25zdCBuZXdSZXNwb25zZSA9IG1ha2VSZXNwb25zZSh7IC4uLnJlc3BvbnNlLCBib2R5OiBudWxsIH0pXG5cbiAgLy8gMy4gSWYgcmVzcG9uc2VcdTIwMTlzIGJvZHkgaXMgbm9uLW51bGwsIHRoZW4gc2V0IG5ld1Jlc3BvbnNlXHUyMDE5cyBib2R5IHRvIHRoZVxuICAvLyByZXN1bHQgb2YgY2xvbmluZyByZXNwb25zZVx1MjAxOXMgYm9keS5cbiAgaWYgKHJlc3BvbnNlLmJvZHkgIT0gbnVsbCkge1xuICAgIG5ld1Jlc3BvbnNlLmJvZHkgPSBjbG9uZUJvZHkocmVzcG9uc2UuYm9keSlcbiAgfVxuXG4gIC8vIDQuIFJldHVybiBuZXdSZXNwb25zZS5cbiAgcmV0dXJuIG5ld1Jlc3BvbnNlXG59XG5cbmZ1bmN0aW9uIG1ha2VSZXNwb25zZSAoaW5pdCkge1xuICByZXR1cm4ge1xuICAgIGFib3J0ZWQ6IGZhbHNlLFxuICAgIHJhbmdlUmVxdWVzdGVkOiBmYWxzZSxcbiAgICB0aW1pbmdBbGxvd1Bhc3NlZDogZmFsc2UsXG4gICAgcmVxdWVzdEluY2x1ZGVzQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIHR5cGU6ICdkZWZhdWx0JyxcbiAgICBzdGF0dXM6IDIwMCxcbiAgICB0aW1pbmdJbmZvOiBudWxsLFxuICAgIGNhY2hlU3RhdGU6ICcnLFxuICAgIHN0YXR1c1RleHQ6ICcnLFxuICAgIC4uLmluaXQsXG4gICAgaGVhZGVyc0xpc3Q6IGluaXQuaGVhZGVyc0xpc3RcbiAgICAgID8gbmV3IEhlYWRlcnNMaXN0KGluaXQuaGVhZGVyc0xpc3QpXG4gICAgICA6IG5ldyBIZWFkZXJzTGlzdCgpLFxuICAgIHVybExpc3Q6IGluaXQudXJsTGlzdCA/IFsuLi5pbml0LnVybExpc3RdIDogW11cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlTmV0d29ya0Vycm9yIChyZWFzb24pIHtcbiAgY29uc3QgaXNFcnJvciA9IGlzRXJyb3JMaWtlKHJlYXNvbilcbiAgcmV0dXJuIG1ha2VSZXNwb25zZSh7XG4gICAgdHlwZTogJ2Vycm9yJyxcbiAgICBzdGF0dXM6IDAsXG4gICAgZXJyb3I6IGlzRXJyb3JcbiAgICAgID8gcmVhc29uXG4gICAgICA6IG5ldyBFcnJvcihyZWFzb24gPyBTdHJpbmcocmVhc29uKSA6IHJlYXNvbiksXG4gICAgYWJvcnRlZDogcmVhc29uICYmIHJlYXNvbi5uYW1lID09PSAnQWJvcnRFcnJvcidcbiAgfSlcbn1cblxuZnVuY3Rpb24gbWFrZUZpbHRlcmVkUmVzcG9uc2UgKHJlc3BvbnNlLCBzdGF0ZSkge1xuICBzdGF0ZSA9IHtcbiAgICBpbnRlcm5hbFJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAuLi5zdGF0ZVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZXNwb25zZSwge1xuICAgIGdldCAodGFyZ2V0LCBwKSB7XG4gICAgICByZXR1cm4gcCBpbiBzdGF0ZSA/IHN0YXRlW3BdIDogdGFyZ2V0W3BdXG4gICAgfSxcbiAgICBzZXQgKHRhcmdldCwgcCwgdmFsdWUpIHtcbiAgICAgIGFzc2VydCghKHAgaW4gc3RhdGUpKVxuICAgICAgdGFyZ2V0W3BdID0gdmFsdWVcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9KVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1maWx0ZXJlZC1yZXNwb25zZVxuZnVuY3Rpb24gZmlsdGVyUmVzcG9uc2UgKHJlc3BvbnNlLCB0eXBlKSB7XG4gIC8vIFNldCByZXNwb25zZSB0byB0aGUgZm9sbG93aW5nIGZpbHRlcmVkIHJlc3BvbnNlIHdpdGggcmVzcG9uc2UgYXMgaXRzXG4gIC8vIGludGVybmFsIHJlc3BvbnNlLCBkZXBlbmRpbmcgb24gcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmc6XG4gIGlmICh0eXBlID09PSAnYmFzaWMnKSB7XG4gICAgLy8gQSBiYXNpYyBmaWx0ZXJlZCByZXNwb25zZSBpcyBhIGZpbHRlcmVkIHJlc3BvbnNlIHdob3NlIHR5cGUgaXMgXCJiYXNpY1wiXG4gICAgLy8gYW5kIGhlYWRlciBsaXN0IGV4Y2x1ZGVzIGFueSBoZWFkZXJzIGluIGludGVybmFsIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdFxuICAgIC8vIHdob3NlIG5hbWUgaXMgYSBmb3JiaWRkZW4gcmVzcG9uc2UtaGVhZGVyIG5hbWUuXG5cbiAgICAvLyBOb3RlOiB1bmRpY2kgZG9lcyBub3QgaW1wbGVtZW50IGZvcmJpZGRlbiByZXNwb25zZS1oZWFkZXIgbmFtZXNcbiAgICByZXR1cm4gbWFrZUZpbHRlcmVkUmVzcG9uc2UocmVzcG9uc2UsIHtcbiAgICAgIHR5cGU6ICdiYXNpYycsXG4gICAgICBoZWFkZXJzTGlzdDogcmVzcG9uc2UuaGVhZGVyc0xpc3RcbiAgICB9KVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb3JzJykge1xuICAgIC8vIEEgQ09SUyBmaWx0ZXJlZCByZXNwb25zZSBpcyBhIGZpbHRlcmVkIHJlc3BvbnNlIHdob3NlIHR5cGUgaXMgXCJjb3JzXCJcbiAgICAvLyBhbmQgaGVhZGVyIGxpc3QgZXhjbHVkZXMgYW55IGhlYWRlcnMgaW4gaW50ZXJuYWwgcmVzcG9uc2VcdTIwMTlzIGhlYWRlclxuICAgIC8vIGxpc3Qgd2hvc2UgbmFtZSBpcyBub3QgYSBDT1JTLXNhZmVsaXN0ZWQgcmVzcG9uc2UtaGVhZGVyIG5hbWUsIGdpdmVuXG4gICAgLy8gaW50ZXJuYWwgcmVzcG9uc2VcdTIwMTlzIENPUlMtZXhwb3NlZCBoZWFkZXItbmFtZSBsaXN0LlxuXG4gICAgLy8gTm90ZTogdW5kaWNpIGRvZXMgbm90IGltcGxlbWVudCBDT1JTLXNhZmVsaXN0ZWQgcmVzcG9uc2UtaGVhZGVyIG5hbWVzXG4gICAgcmV0dXJuIG1ha2VGaWx0ZXJlZFJlc3BvbnNlKHJlc3BvbnNlLCB7XG4gICAgICB0eXBlOiAnY29ycycsXG4gICAgICBoZWFkZXJzTGlzdDogcmVzcG9uc2UuaGVhZGVyc0xpc3RcbiAgICB9KVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGFxdWUnKSB7XG4gICAgLy8gQW4gb3BhcXVlIGZpbHRlcmVkIHJlc3BvbnNlIGlzIGEgZmlsdGVyZWQgcmVzcG9uc2Ugd2hvc2UgdHlwZSBpc1xuICAgIC8vIFwib3BhcXVlXCIsIFVSTCBsaXN0IGlzIHRoZSBlbXB0eSBsaXN0LCBzdGF0dXMgaXMgMCwgc3RhdHVzIG1lc3NhZ2VcbiAgICAvLyBpcyB0aGUgZW1wdHkgYnl0ZSBzZXF1ZW5jZSwgaGVhZGVyIGxpc3QgaXMgZW1wdHksIGFuZCBib2R5IGlzIG51bGwuXG5cbiAgICByZXR1cm4gbWFrZUZpbHRlcmVkUmVzcG9uc2UocmVzcG9uc2UsIHtcbiAgICAgIHR5cGU6ICdvcGFxdWUnLFxuICAgICAgdXJsTGlzdDogT2JqZWN0LmZyZWV6ZShbXSksXG4gICAgICBzdGF0dXM6IDAsXG4gICAgICBzdGF0dXNUZXh0OiAnJyxcbiAgICAgIGJvZHk6IG51bGxcbiAgICB9KVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGFxdWVyZWRpcmVjdCcpIHtcbiAgICAvLyBBbiBvcGFxdWUtcmVkaXJlY3QgZmlsdGVyZWQgcmVzcG9uc2UgaXMgYSBmaWx0ZXJlZCByZXNwb25zZSB3aG9zZSB0eXBlXG4gICAgLy8gaXMgXCJvcGFxdWVyZWRpcmVjdFwiLCBzdGF0dXMgaXMgMCwgc3RhdHVzIG1lc3NhZ2UgaXMgdGhlIGVtcHR5IGJ5dGVcbiAgICAvLyBzZXF1ZW5jZSwgaGVhZGVyIGxpc3QgaXMgZW1wdHksIGFuZCBib2R5IGlzIG51bGwuXG5cbiAgICByZXR1cm4gbWFrZUZpbHRlcmVkUmVzcG9uc2UocmVzcG9uc2UsIHtcbiAgICAgIHR5cGU6ICdvcGFxdWVyZWRpcmVjdCcsXG4gICAgICBzdGF0dXM6IDAsXG4gICAgICBzdGF0dXNUZXh0OiAnJyxcbiAgICAgIGhlYWRlcnNMaXN0OiBbXSxcbiAgICAgIGJvZHk6IG51bGxcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGFzc2VydChmYWxzZSlcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYXBwcm9wcmlhdGUtbmV0d29yay1lcnJvclxuZnVuY3Rpb24gbWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yIChmZXRjaFBhcmFtcywgZXJyID0gbnVsbCkge1xuICAvLyAxLiBBc3NlcnQ6IGZldGNoUGFyYW1zIGlzIGNhbmNlbGVkLlxuICBhc3NlcnQoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpKVxuXG4gIC8vIDIuIFJldHVybiBhbiBhYm9ydGVkIG5ldHdvcmsgZXJyb3IgaWYgZmV0Y2hQYXJhbXMgaXMgYWJvcnRlZDtcbiAgLy8gb3RoZXJ3aXNlIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gIHJldHVybiBpc0Fib3J0ZWQoZmV0Y2hQYXJhbXMpXG4gICAgPyBtYWtlTmV0d29ya0Vycm9yKE9iamVjdC5hc3NpZ24obmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpLCB7IGNhdXNlOiBlcnIgfSkpXG4gICAgOiBtYWtlTmV0d29ya0Vycm9yKE9iamVjdC5hc3NpZ24obmV3IERPTUV4Y2VwdGlvbignUmVxdWVzdCB3YXMgY2FuY2VsbGVkLicpLCB7IGNhdXNlOiBlcnIgfSkpXG59XG5cbi8vIGh0dHBzOi8vd2hhdHByLm9yZy9mZXRjaC8xMzkyLmh0bWwjaW5pdGlhbGl6ZS1hLXJlc3BvbnNlXG5mdW5jdGlvbiBpbml0aWFsaXplUmVzcG9uc2UgKHJlc3BvbnNlLCBpbml0LCBib2R5KSB7XG4gIC8vIDEuIElmIGluaXRbXCJzdGF0dXNcIl0gaXMgbm90IGluIHRoZSByYW5nZSAyMDAgdG8gNTk5LCBpbmNsdXNpdmUsIHRoZW5cbiAgLy8gICAgdGhyb3cgYSBSYW5nZUVycm9yLlxuICBpZiAoaW5pdC5zdGF0dXMgIT09IG51bGwgJiYgKGluaXQuc3RhdHVzIDwgMjAwIHx8IGluaXQuc3RhdHVzID4gNTk5KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbml0W1wic3RhdHVzXCJdIG11c3QgYmUgaW4gdGhlIHJhbmdlIG9mIDIwMCB0byA1OTksIGluY2x1c2l2ZS4nKVxuICB9XG5cbiAgLy8gMi4gSWYgaW5pdFtcInN0YXR1c1RleHRcIl0gZG9lcyBub3QgbWF0Y2ggdGhlIHJlYXNvbi1waHJhc2UgdG9rZW4gcHJvZHVjdGlvbixcbiAgLy8gICAgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgaWYgKCdzdGF0dXNUZXh0JyBpbiBpbml0ICYmIGluaXQuc3RhdHVzVGV4dCAhPSBudWxsKSB7XG4gICAgLy8gU2VlLCBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjEuMjpcbiAgICAvLyAgIHJlYXNvbi1waHJhc2UgID0gKiggSFRBQiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCApXG4gICAgaWYgKCFpc1ZhbGlkUmVhc29uUGhyYXNlKFN0cmluZyhpbml0LnN0YXR1c1RleHQpKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdGF0dXNUZXh0JylcbiAgICB9XG4gIH1cblxuICAvLyAzLiBTZXQgcmVzcG9uc2VcdTIwMTlzIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgdG8gaW5pdFtcInN0YXR1c1wiXS5cbiAgaWYgKCdzdGF0dXMnIGluIGluaXQgJiYgaW5pdC5zdGF0dXMgIT0gbnVsbCkge1xuICAgIHJlc3BvbnNlW2tTdGF0ZV0uc3RhdHVzID0gaW5pdC5zdGF0dXNcbiAgfVxuXG4gIC8vIDQuIFNldCByZXNwb25zZVx1MjAxOXMgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBtZXNzYWdlIHRvIGluaXRbXCJzdGF0dXNUZXh0XCJdLlxuICBpZiAoJ3N0YXR1c1RleHQnIGluIGluaXQgJiYgaW5pdC5zdGF0dXNUZXh0ICE9IG51bGwpIHtcbiAgICByZXNwb25zZVtrU3RhdGVdLnN0YXR1c1RleHQgPSBpbml0LnN0YXR1c1RleHRcbiAgfVxuXG4gIC8vIDUuIElmIGluaXRbXCJoZWFkZXJzXCJdIGV4aXN0cywgdGhlbiBmaWxsIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXJzIHdpdGggaW5pdFtcImhlYWRlcnNcIl0uXG4gIGlmICgnaGVhZGVycycgaW4gaW5pdCAmJiBpbml0LmhlYWRlcnMgIT0gbnVsbCkge1xuICAgIGZpbGwocmVzcG9uc2Vba0hlYWRlcnNdLCBpbml0LmhlYWRlcnMpXG4gIH1cblxuICAvLyA2LiBJZiBib2R5IHdhcyBnaXZlbiwgdGhlbjpcbiAgaWYgKGJvZHkpIHtcbiAgICAvLyAxLiBJZiByZXNwb25zZSdzIHN0YXR1cyBpcyBhIG51bGwgYm9keSBzdGF0dXMsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKG51bGxCb2R5U3RhdHVzLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgaGVhZGVyOiAnUmVzcG9uc2UgY29uc3RydWN0b3InLFxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCByZXNwb25zZSBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIDIuIFNldCByZXNwb25zZSdzIGJvZHkgdG8gYm9keSdzIGJvZHkuXG4gICAgcmVzcG9uc2Vba1N0YXRlXS5ib2R5ID0gYm9keS5ib2R5XG5cbiAgICAvLyAzLiBJZiBib2R5J3MgdHlwZSBpcyBub24tbnVsbCBhbmQgcmVzcG9uc2UncyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluXG4gICAgLy8gICAgYENvbnRlbnQtVHlwZWAsIHRoZW4gYXBwZW5kIChgQ29udGVudC1UeXBlYCwgYm9keSdzIHR5cGUpIHRvIHJlc3BvbnNlJ3MgaGVhZGVyIGxpc3QuXG4gICAgaWYgKGJvZHkudHlwZSAhPSBudWxsICYmICFyZXNwb25zZVtrU3RhdGVdLmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdDb250ZW50LVR5cGUnKSkge1xuICAgICAgcmVzcG9uc2Vba1N0YXRlXS5oZWFkZXJzTGlzdC5hcHBlbmQoJ2NvbnRlbnQtdHlwZScsIGJvZHkudHlwZSlcbiAgICB9XG4gIH1cbn1cblxud2ViaWRsLmNvbnZlcnRlcnMuUmVhZGFibGVTdHJlYW0gPSB3ZWJpZGwuaW50ZXJmYWNlQ29udmVydGVyKFxuICBSZWFkYWJsZVN0cmVhbVxuKVxuXG53ZWJpZGwuY29udmVydGVycy5Gb3JtRGF0YSA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoXG4gIEZvcm1EYXRhXG4pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLlVSTFNlYXJjaFBhcmFtcyA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoXG4gIFVSTFNlYXJjaFBhcmFtc1xuKVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jdHlwZWRlZmRlZi14bWxodHRwcmVxdWVzdGJvZHlpbml0XG53ZWJpZGwuY29udmVydGVycy5YTUxIdHRwUmVxdWVzdEJvZHlJbml0ID0gZnVuY3Rpb24gKFYpIHtcbiAgaWYgKHR5cGVvZiBWID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcoVilcbiAgfVxuXG4gIGlmIChpc0Jsb2JMaWtlKFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkJsb2IoViwgeyBzdHJpY3Q6IGZhbHNlIH0pXG4gIH1cblxuICBpZiAodHlwZXMuaXNBcnJheUJ1ZmZlcihWKSB8fCB0eXBlcy5pc1R5cGVkQXJyYXkoVikgfHwgdHlwZXMuaXNEYXRhVmlldyhWKSkge1xuICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5CdWZmZXJTb3VyY2UoVilcbiAgfVxuXG4gIGlmICh1dGlsLmlzRm9ybURhdGFMaWtlKFYpKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkZvcm1EYXRhKFYsIHsgc3RyaWN0OiBmYWxzZSB9KVxuICB9XG5cbiAgaWYgKFYgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuVVJMU2VhcmNoUGFyYW1zKFYpXG4gIH1cblxuICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKFYpXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNib2R5aW5pdFxud2ViaWRsLmNvbnZlcnRlcnMuQm9keUluaXQgPSBmdW5jdGlvbiAoVikge1xuICBpZiAoViBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlJlYWRhYmxlU3RyZWFtKFYpXG4gIH1cblxuICAvLyBOb3RlOiB0aGUgc3BlYyBkb2Vzbid0IGluY2x1ZGUgYXN5bmMgaXRlcmFibGVzLFxuICAvLyB0aGlzIGlzIGFuIHVuZGljaSBleHRlbnNpb24uXG4gIGlmIChWPy5bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKSB7XG4gICAgcmV0dXJuIFZcbiAgfVxuXG4gIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5YTUxIdHRwUmVxdWVzdEJvZHlJbml0KFYpXG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLlJlc3BvbnNlSW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGtleTogJ3N0YXR1cycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgc2hvcnQnXSxcbiAgICBkZWZhdWx0VmFsdWU6IDIwMFxuICB9LFxuICB7XG4gICAga2V5OiAnc3RhdHVzVGV4dCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5CeXRlU3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogJydcbiAgfSxcbiAge1xuICAgIGtleTogJ2hlYWRlcnMnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuSGVhZGVyc0luaXRcbiAgfVxuXSlcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ha2VOZXR3b3JrRXJyb3IsXG4gIG1ha2VSZXNwb25zZSxcbiAgbWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yLFxuICBmaWx0ZXJSZXNwb25zZSxcbiAgUmVzcG9uc2UsXG4gIGNsb25lUmVzcG9uc2Vcbn1cbiIsICIvKiBnbG9iYWxzIEFib3J0Q29udHJvbGxlciAqL1xuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBleHRyYWN0Qm9keSwgbWl4aW5Cb2R5LCBjbG9uZUJvZHkgfSA9IHJlcXVpcmUoJy4vYm9keScpXG5jb25zdCB7IEhlYWRlcnMsIGZpbGw6IGZpbGxIZWFkZXJzLCBIZWFkZXJzTGlzdCB9ID0gcmVxdWlyZSgnLi9oZWFkZXJzJylcbmNvbnN0IHsgRmluYWxpemF0aW9uUmVnaXN0cnkgfSA9IHJlcXVpcmUoJy4uL2NvbXBhdC9kaXNwYXRjaGVyLXdlYWtyZWYnKSgpXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHtcbiAgaXNWYWxpZEhUVFBUb2tlbixcbiAgc2FtZU9yaWdpbixcbiAgbm9ybWFsaXplTWV0aG9kLFxuICBtYWtlUG9saWN5Q29udGFpbmVyLFxuICBub3JtYWxpemVNZXRob2RSZWNvcmRcbn0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3Qge1xuICBmb3JiaWRkZW5NZXRob2RzU2V0LFxuICBjb3JzU2FmZUxpc3RlZE1ldGhvZHNTZXQsXG4gIHJlZmVycmVyUG9saWN5LFxuICByZXF1ZXN0UmVkaXJlY3QsXG4gIHJlcXVlc3RNb2RlLFxuICByZXF1ZXN0Q3JlZGVudGlhbHMsXG4gIHJlcXVlc3RDYWNoZSxcbiAgcmVxdWVzdER1cGxleFxufSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSB9ID0gdXRpbFxuY29uc3QgeyBrSGVhZGVycywga1NpZ25hbCwga1N0YXRlLCBrR3VhcmQsIGtSZWFsbSB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuL3dlYmlkbCcpXG5jb25zdCB7IGdldEdsb2JhbE9yaWdpbiB9ID0gcmVxdWlyZSgnLi9nbG9iYWwnKVxuY29uc3QgeyBVUkxTZXJpYWxpemVyIH0gPSByZXF1aXJlKCcuL2RhdGFVUkwnKVxuY29uc3QgeyBrSGVhZGVyc0xpc3QsIGtDb25zdHJ1Y3QgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBnZXRNYXhMaXN0ZW5lcnMsIHNldE1heExpc3RlbmVycywgZ2V0RXZlbnRMaXN0ZW5lcnMsIGRlZmF1bHRNYXhMaXN0ZW5lcnMgfSA9IHJlcXVpcmUoJ2V2ZW50cycpXG5cbmxldCBUcmFuc2Zvcm1TdHJlYW0gPSBnbG9iYWxUaGlzLlRyYW5zZm9ybVN0cmVhbVxuXG5jb25zdCBrQWJvcnRDb250cm9sbGVyID0gU3ltYm9sKCdhYm9ydENvbnRyb2xsZXInKVxuXG5jb25zdCByZXF1ZXN0RmluYWxpemVyID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCh7IHNpZ25hbCwgYWJvcnQgfSkgPT4ge1xuICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydClcbn0pXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0LWNsYXNzXG5jbGFzcyBSZXF1ZXN0IHtcbiAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1yZXF1ZXN0XG4gIGNvbnN0cnVjdG9yIChpbnB1dCwgaW5pdCA9IHt9KSB7XG4gICAgaWYgKGlucHV0ID09PSBrQ29uc3RydWN0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnUmVxdWVzdCBjb25zdHJ1Y3RvcicgfSlcblxuICAgIGlucHV0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8oaW5wdXQpXG4gICAgaW5pdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbml0KGluaXQpXG5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjZW52aXJvbm1lbnQtc2V0dGluZ3Mtb2JqZWN0XG4gICAgdGhpc1trUmVhbG1dID0ge1xuICAgICAgc2V0dGluZ3NPYmplY3Q6IHtcbiAgICAgICAgYmFzZVVybDogZ2V0R2xvYmFsT3JpZ2luKCksXG4gICAgICAgIGdldCBvcmlnaW4gKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVcmw/Lm9yaWdpblxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3lDb250YWluZXI6IG1ha2VQb2xpY3lDb250YWluZXIoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDEuIExldCByZXF1ZXN0IGJlIG51bGwuXG4gICAgbGV0IHJlcXVlc3QgPSBudWxsXG5cbiAgICAvLyAyLiBMZXQgZmFsbGJhY2tNb2RlIGJlIG51bGwuXG4gICAgbGV0IGZhbGxiYWNrTW9kZSA9IG51bGxcblxuICAgIC8vIDMuIExldCBiYXNlVVJMIGJlIHRoaXNcdTIwMTlzIHJlbGV2YW50IHNldHRpbmdzIG9iamVjdFx1MjAxOXMgQVBJIGJhc2UgVVJMLlxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzW2tSZWFsbV0uc2V0dGluZ3NPYmplY3QuYmFzZVVybFxuXG4gICAgLy8gNC4gTGV0IHNpZ25hbCBiZSBudWxsLlxuICAgIGxldCBzaWduYWwgPSBudWxsXG5cbiAgICAvLyA1LiBJZiBpbnB1dCBpcyBhIHN0cmluZywgdGhlbjpcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gMS4gTGV0IHBhcnNlZFVSTCBiZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgaW5wdXQgd2l0aCBiYXNlVVJMLlxuICAgICAgLy8gMi4gSWYgcGFyc2VkVVJMIGlzIGZhaWx1cmUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBsZXQgcGFyc2VkVVJMXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWRVUkwgPSBuZXcgVVJMKGlucHV0LCBiYXNlVXJsKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBVUkwgZnJvbSAnICsgaW5wdXQsIHsgY2F1c2U6IGVyciB9KVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBJZiBwYXJzZWRVUkwgaW5jbHVkZXMgY3JlZGVudGlhbHMsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAocGFyc2VkVVJMLnVzZXJuYW1lIHx8IHBhcnNlZFVSTC5wYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdSZXF1ZXN0IGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgVVJMIHRoYXQgaW5jbHVkZXMgY3JlZGVudGlhbHM6ICcgK1xuICAgICAgICAgICAgaW5wdXRcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyA0LiBTZXQgcmVxdWVzdCB0byBhIG5ldyByZXF1ZXN0IHdob3NlIFVSTCBpcyBwYXJzZWRVUkwuXG4gICAgICByZXF1ZXN0ID0gbWFrZVJlcXVlc3QoeyB1cmxMaXN0OiBbcGFyc2VkVVJMXSB9KVxuXG4gICAgICAvLyA1LiBTZXQgZmFsbGJhY2tNb2RlIHRvIFwiY29yc1wiLlxuICAgICAgZmFsbGJhY2tNb2RlID0gJ2NvcnMnXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDYuIE90aGVyd2lzZTpcblxuICAgICAgLy8gNy4gQXNzZXJ0OiBpbnB1dCBpcyBhIFJlcXVlc3Qgb2JqZWN0LlxuICAgICAgYXNzZXJ0KGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdClcblxuICAgICAgLy8gOC4gU2V0IHJlcXVlc3QgdG8gaW5wdXRcdTIwMTlzIHJlcXVlc3QuXG4gICAgICByZXF1ZXN0ID0gaW5wdXRba1N0YXRlXVxuXG4gICAgICAvLyA5LiBTZXQgc2lnbmFsIHRvIGlucHV0XHUyMDE5cyBzaWduYWwuXG4gICAgICBzaWduYWwgPSBpbnB1dFtrU2lnbmFsXVxuICAgIH1cblxuICAgIC8vIDcuIExldCBvcmlnaW4gYmUgdGhpc1x1MjAxOXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0XHUyMDE5cyBvcmlnaW4uXG4gICAgY29uc3Qgb3JpZ2luID0gdGhpc1trUmVhbG1dLnNldHRpbmdzT2JqZWN0Lm9yaWdpblxuXG4gICAgLy8gOC4gTGV0IHdpbmRvdyBiZSBcImNsaWVudFwiLlxuICAgIGxldCB3aW5kb3cgPSAnY2xpZW50J1xuXG4gICAgLy8gOS4gSWYgcmVxdWVzdFx1MjAxOXMgd2luZG93IGlzIGFuIGVudmlyb25tZW50IHNldHRpbmdzIG9iamVjdCBhbmQgaXRzIG9yaWdpblxuICAgIC8vIGlzIHNhbWUgb3JpZ2luIHdpdGggb3JpZ2luLCB0aGVuIHNldCB3aW5kb3cgdG8gcmVxdWVzdFx1MjAxOXMgd2luZG93LlxuICAgIGlmIChcbiAgICAgIHJlcXVlc3Qud2luZG93Py5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0Vudmlyb25tZW50U2V0dGluZ3NPYmplY3QnICYmXG4gICAgICBzYW1lT3JpZ2luKHJlcXVlc3Qud2luZG93LCBvcmlnaW4pXG4gICAgKSB7XG4gICAgICB3aW5kb3cgPSByZXF1ZXN0LndpbmRvd1xuICAgIH1cblxuICAgIC8vIDEwLiBJZiBpbml0W1wid2luZG93XCJdIGV4aXN0cyBhbmQgaXMgbm9uLW51bGwsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKGluaXQud2luZG93ICE9IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCd3aW5kb3cnIG9wdGlvbiAnJHt3aW5kb3d9JyBtdXN0IGJlIG51bGxgKVxuICAgIH1cblxuICAgIC8vIDExLiBJZiBpbml0W1wid2luZG93XCJdIGV4aXN0cywgdGhlbiBzZXQgd2luZG93IHRvIFwibm8td2luZG93XCIuXG4gICAgaWYgKCd3aW5kb3cnIGluIGluaXQpIHtcbiAgICAgIHdpbmRvdyA9ICduby13aW5kb3cnXG4gICAgfVxuXG4gICAgLy8gMTIuIFNldCByZXF1ZXN0IHRvIGEgbmV3IHJlcXVlc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAgcmVxdWVzdCA9IG1ha2VSZXF1ZXN0KHtcbiAgICAgIC8vIFVSTCByZXF1ZXN0XHUyMDE5cyBVUkwuXG4gICAgICAvLyB1bmRpY2kgaW1wbGVtZW50YXRpb24gbm90ZTogdGhpcyBpcyBzZXQgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gcmVxdWVzdCdzIHVybExpc3QgaW4gbWFrZVJlcXVlc3RcbiAgICAgIC8vIG1ldGhvZCByZXF1ZXN0XHUyMDE5cyBtZXRob2QuXG4gICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgLy8gaGVhZGVyIGxpc3QgQSBjb3B5IG9mIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgICAgLy8gdW5kaWNpIGltcGxlbWVudGF0aW9uIG5vdGU6IGhlYWRlcnNMaXN0IGlzIGNsb25lZCBpbiBtYWtlUmVxdWVzdFxuICAgICAgaGVhZGVyc0xpc3Q6IHJlcXVlc3QuaGVhZGVyc0xpc3QsXG4gICAgICAvLyB1bnNhZmUtcmVxdWVzdCBmbGFnIFNldC5cbiAgICAgIHVuc2FmZVJlcXVlc3Q6IHJlcXVlc3QudW5zYWZlUmVxdWVzdCxcbiAgICAgIC8vIGNsaWVudCBUaGlzXHUyMDE5cyByZWxldmFudCBzZXR0aW5ncyBvYmplY3QuXG4gICAgICBjbGllbnQ6IHRoaXNba1JlYWxtXS5zZXR0aW5nc09iamVjdCxcbiAgICAgIC8vIHdpbmRvdyB3aW5kb3cuXG4gICAgICB3aW5kb3csXG4gICAgICAvLyBwcmlvcml0eSByZXF1ZXN0XHUyMDE5cyBwcmlvcml0eS5cbiAgICAgIHByaW9yaXR5OiByZXF1ZXN0LnByaW9yaXR5LFxuICAgICAgLy8gb3JpZ2luIHJlcXVlc3RcdTIwMTlzIG9yaWdpbi4gVGhlIHByb3BhZ2F0aW9uIG9mIHRoZSBvcmlnaW4gaXMgb25seSBzaWduaWZpY2FudCBmb3IgbmF2aWdhdGlvbiByZXF1ZXN0c1xuICAgICAgLy8gYmVpbmcgaGFuZGxlZCBieSBhIHNlcnZpY2Ugd29ya2VyLiBJbiB0aGlzIHNjZW5hcmlvIGEgcmVxdWVzdCBjYW4gaGF2ZSBhbiBvcmlnaW4gdGhhdCBpcyBkaWZmZXJlbnRcbiAgICAgIC8vIGZyb20gdGhlIGN1cnJlbnQgY2xpZW50LlxuICAgICAgb3JpZ2luOiByZXF1ZXN0Lm9yaWdpbixcbiAgICAgIC8vIHJlZmVycmVyIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyLlxuICAgICAgcmVmZXJyZXI6IHJlcXVlc3QucmVmZXJyZXIsXG4gICAgICAvLyByZWZlcnJlciBwb2xpY3kgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5LlxuICAgICAgcmVmZXJyZXJQb2xpY3k6IHJlcXVlc3QucmVmZXJyZXJQb2xpY3ksXG4gICAgICAvLyBtb2RlIHJlcXVlc3RcdTIwMTlzIG1vZGUuXG4gICAgICBtb2RlOiByZXF1ZXN0Lm1vZGUsXG4gICAgICAvLyBjcmVkZW50aWFscyBtb2RlIHJlcXVlc3RcdTIwMTlzIGNyZWRlbnRpYWxzIG1vZGUuXG4gICAgICBjcmVkZW50aWFsczogcmVxdWVzdC5jcmVkZW50aWFscyxcbiAgICAgIC8vIGNhY2hlIG1vZGUgcmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZS5cbiAgICAgIGNhY2hlOiByZXF1ZXN0LmNhY2hlLFxuICAgICAgLy8gcmVkaXJlY3QgbW9kZSByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBtb2RlLlxuICAgICAgcmVkaXJlY3Q6IHJlcXVlc3QucmVkaXJlY3QsXG4gICAgICAvLyBpbnRlZ3JpdHkgbWV0YWRhdGEgcmVxdWVzdFx1MjAxOXMgaW50ZWdyaXR5IG1ldGFkYXRhLlxuICAgICAgaW50ZWdyaXR5OiByZXF1ZXN0LmludGVncml0eSxcbiAgICAgIC8vIGtlZXBhbGl2ZSByZXF1ZXN0XHUyMDE5cyBrZWVwYWxpdmUuXG4gICAgICBrZWVwYWxpdmU6IHJlcXVlc3Qua2VlcGFsaXZlLFxuICAgICAgLy8gcmVsb2FkLW5hdmlnYXRpb24gZmxhZyByZXF1ZXN0XHUyMDE5cyByZWxvYWQtbmF2aWdhdGlvbiBmbGFnLlxuICAgICAgcmVsb2FkTmF2aWdhdGlvbjogcmVxdWVzdC5yZWxvYWROYXZpZ2F0aW9uLFxuICAgICAgLy8gaGlzdG9yeS1uYXZpZ2F0aW9uIGZsYWcgcmVxdWVzdFx1MjAxOXMgaGlzdG9yeS1uYXZpZ2F0aW9uIGZsYWcuXG4gICAgICBoaXN0b3J5TmF2aWdhdGlvbjogcmVxdWVzdC5oaXN0b3J5TmF2aWdhdGlvbixcbiAgICAgIC8vIFVSTCBsaXN0IEEgY2xvbmUgb2YgcmVxdWVzdFx1MjAxOXMgVVJMIGxpc3QuXG4gICAgICB1cmxMaXN0OiBbLi4ucmVxdWVzdC51cmxMaXN0XVxuICAgIH0pXG5cbiAgICBjb25zdCBpbml0SGFzS2V5ID0gT2JqZWN0LmtleXMoaW5pdCkubGVuZ3RoICE9PSAwXG5cbiAgICAvLyAxMy4gSWYgaW5pdCBpcyBub3QgZW1wdHksIHRoZW46XG4gICAgaWYgKGluaXRIYXNLZXkpIHtcbiAgICAgIC8vIDEuIElmIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgXCJuYXZpZ2F0ZVwiLCB0aGVuIHNldCBpdCB0byBcInNhbWUtb3JpZ2luXCIuXG4gICAgICBpZiAocmVxdWVzdC5tb2RlID09PSAnbmF2aWdhdGUnKSB7XG4gICAgICAgIHJlcXVlc3QubW9kZSA9ICdzYW1lLW9yaWdpbidcbiAgICAgIH1cblxuICAgICAgLy8gMi4gVW5zZXQgcmVxdWVzdFx1MjAxOXMgcmVsb2FkLW5hdmlnYXRpb24gZmxhZy5cbiAgICAgIHJlcXVlc3QucmVsb2FkTmF2aWdhdGlvbiA9IGZhbHNlXG5cbiAgICAgIC8vIDMuIFVuc2V0IHJlcXVlc3RcdTIwMTlzIGhpc3RvcnktbmF2aWdhdGlvbiBmbGFnLlxuICAgICAgcmVxdWVzdC5oaXN0b3J5TmF2aWdhdGlvbiA9IGZhbHNlXG5cbiAgICAgIC8vIDQuIFNldCByZXF1ZXN0XHUyMDE5cyBvcmlnaW4gdG8gXCJjbGllbnRcIi5cbiAgICAgIHJlcXVlc3Qub3JpZ2luID0gJ2NsaWVudCdcblxuICAgICAgLy8gNS4gU2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHRvIFwiY2xpZW50XCJcbiAgICAgIHJlcXVlc3QucmVmZXJyZXIgPSAnY2xpZW50J1xuXG4gICAgICAvLyA2LiBTZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5IHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICByZXF1ZXN0LnJlZmVycmVyUG9saWN5ID0gJydcblxuICAgICAgLy8gNy4gU2V0IHJlcXVlc3RcdTIwMTlzIFVSTCB0byByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTC5cbiAgICAgIHJlcXVlc3QudXJsID0gcmVxdWVzdC51cmxMaXN0W3JlcXVlc3QudXJsTGlzdC5sZW5ndGggLSAxXVxuXG4gICAgICAvLyA4LiBTZXQgcmVxdWVzdFx1MjAxOXMgVVJMIGxpc3QgdG8gXHUwMEFCIHJlcXVlc3RcdTIwMTlzIFVSTCBcdTAwQkIuXG4gICAgICByZXF1ZXN0LnVybExpc3QgPSBbcmVxdWVzdC51cmxdXG4gICAgfVxuXG4gICAgLy8gMTQuIElmIGluaXRbXCJyZWZlcnJlclwiXSBleGlzdHMsIHRoZW46XG4gICAgaWYgKGluaXQucmVmZXJyZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gMS4gTGV0IHJlZmVycmVyIGJlIGluaXRbXCJyZWZlcnJlclwiXS5cbiAgICAgIGNvbnN0IHJlZmVycmVyID0gaW5pdC5yZWZlcnJlclxuXG4gICAgICAvLyAyLiBJZiByZWZlcnJlciBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyByZWZlcnJlciB0byBcIm5vLXJlZmVycmVyXCIuXG4gICAgICBpZiAocmVmZXJyZXIgPT09ICcnKSB7XG4gICAgICAgIHJlcXVlc3QucmVmZXJyZXIgPSAnbm8tcmVmZXJyZXInXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAxLiBMZXQgcGFyc2VkUmVmZXJyZXIgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHJlZmVycmVyIHdpdGhcbiAgICAgICAgLy8gYmFzZVVSTC5cbiAgICAgICAgLy8gMi4gSWYgcGFyc2VkUmVmZXJyZXIgaXMgZmFpbHVyZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgICAgbGV0IHBhcnNlZFJlZmVycmVyXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcGFyc2VkUmVmZXJyZXIgPSBuZXcgVVJMKHJlZmVycmVyLCBiYXNlVXJsKVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSZWZlcnJlciBcIiR7cmVmZXJyZXJ9XCIgaXMgbm90IGEgdmFsaWQgVVJMLmAsIHsgY2F1c2U6IGVyciB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gSWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZVxuICAgICAgICAvLyAtIHBhcnNlZFJlZmVycmVyXHUyMDE5cyBzY2hlbWUgaXMgXCJhYm91dFwiIGFuZCBwYXRoIGlzIHRoZSBzdHJpbmcgXCJjbGllbnRcIlxuICAgICAgICAvLyAtIHBhcnNlZFJlZmVycmVyXHUyMDE5cyBvcmlnaW4gaXMgbm90IHNhbWUgb3JpZ2luIHdpdGggb3JpZ2luXG4gICAgICAgIC8vIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHRvIFwiY2xpZW50XCIuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAocGFyc2VkUmVmZXJyZXIucHJvdG9jb2wgPT09ICdhYm91dDonICYmIHBhcnNlZFJlZmVycmVyLmhvc3RuYW1lID09PSAnY2xpZW50JykgfHxcbiAgICAgICAgICAob3JpZ2luICYmICFzYW1lT3JpZ2luKHBhcnNlZFJlZmVycmVyLCB0aGlzW2tSZWFsbV0uc2V0dGluZ3NPYmplY3QuYmFzZVVybCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJlcXVlc3QucmVmZXJyZXIgPSAnY2xpZW50J1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgc2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHRvIHBhcnNlZFJlZmVycmVyLlxuICAgICAgICAgIHJlcXVlc3QucmVmZXJyZXIgPSBwYXJzZWRSZWZlcnJlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMTUuIElmIGluaXRbXCJyZWZlcnJlclBvbGljeVwiXSBleGlzdHMsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeVxuICAgIC8vIHRvIGl0LlxuICAgIGlmIChpbml0LnJlZmVycmVyUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlcXVlc3QucmVmZXJyZXJQb2xpY3kgPSBpbml0LnJlZmVycmVyUG9saWN5XG4gICAgfVxuXG4gICAgLy8gMTYuIExldCBtb2RlIGJlIGluaXRbXCJtb2RlXCJdIGlmIGl0IGV4aXN0cywgYW5kIGZhbGxiYWNrTW9kZSBvdGhlcndpc2UuXG4gICAgbGV0IG1vZGVcbiAgICBpZiAoaW5pdC5tb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGUgPSBpbml0Lm1vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kZSA9IGZhbGxiYWNrTW9kZVxuICAgIH1cblxuICAgIC8vIDE3LiBJZiBtb2RlIGlzIFwibmF2aWdhdGVcIiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAobW9kZSA9PT0gJ25hdmlnYXRlJykge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdSZXF1ZXN0IGNvbnN0cnVjdG9yJyxcbiAgICAgICAgbWVzc2FnZTogJ2ludmFsaWQgcmVxdWVzdCBtb2RlIG5hdmlnYXRlLidcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gMTguIElmIG1vZGUgaXMgbm9uLW51bGwsIHNldCByZXF1ZXN0XHUyMDE5cyBtb2RlIHRvIG1vZGUuXG4gICAgaWYgKG1vZGUgIT0gbnVsbCkge1xuICAgICAgcmVxdWVzdC5tb2RlID0gbW9kZVxuICAgIH1cblxuICAgIC8vIDE5LiBJZiBpbml0W1wiY3JlZGVudGlhbHNcIl0gZXhpc3RzLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBjcmVkZW50aWFscyBtb2RlXG4gICAgLy8gdG8gaXQuXG4gICAgaWYgKGluaXQuY3JlZGVudGlhbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVxdWVzdC5jcmVkZW50aWFscyA9IGluaXQuY3JlZGVudGlhbHNcbiAgICB9XG5cbiAgICAvLyAxOC4gSWYgaW5pdFtcImNhY2hlXCJdIGV4aXN0cywgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSB0byBpdC5cbiAgICBpZiAoaW5pdC5jYWNoZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXF1ZXN0LmNhY2hlID0gaW5pdC5jYWNoZVxuICAgIH1cblxuICAgIC8vIDIxLiBJZiByZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlIGlzIFwib25seS1pZi1jYWNoZWRcIiBhbmQgcmVxdWVzdFx1MjAxOXMgbW9kZSBpc1xuICAgIC8vIG5vdCBcInNhbWUtb3JpZ2luXCIsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgaWYgKHJlcXVlc3QuY2FjaGUgPT09ICdvbmx5LWlmLWNhY2hlZCcgJiYgcmVxdWVzdC5tb2RlICE9PSAnc2FtZS1vcmlnaW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBcIidvbmx5LWlmLWNhY2hlZCcgY2FuIGJlIHNldCBvbmx5IHdpdGggJ3NhbWUtb3JpZ2luJyBtb2RlXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyAyMi4gSWYgaW5pdFtcInJlZGlyZWN0XCJdIGV4aXN0cywgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgbW9kZSB0byBpdC5cbiAgICBpZiAoaW5pdC5yZWRpcmVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXF1ZXN0LnJlZGlyZWN0ID0gaW5pdC5yZWRpcmVjdFxuICAgIH1cblxuICAgIC8vIDIzLiBJZiBpbml0W1wiaW50ZWdyaXR5XCJdIGV4aXN0cywgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgaW50ZWdyaXR5IG1ldGFkYXRhIHRvIGl0LlxuICAgIGlmIChpbml0LmludGVncml0eSAhPSBudWxsKSB7XG4gICAgICByZXF1ZXN0LmludGVncml0eSA9IFN0cmluZyhpbml0LmludGVncml0eSlcbiAgICB9XG5cbiAgICAvLyAyNC4gSWYgaW5pdFtcImtlZXBhbGl2ZVwiXSBleGlzdHMsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIGtlZXBhbGl2ZSB0byBpdC5cbiAgICBpZiAoaW5pdC5rZWVwYWxpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVxdWVzdC5rZWVwYWxpdmUgPSBCb29sZWFuKGluaXQua2VlcGFsaXZlKVxuICAgIH1cblxuICAgIC8vIDI1LiBJZiBpbml0W1wibWV0aG9kXCJdIGV4aXN0cywgdGhlbjpcbiAgICBpZiAoaW5pdC5tZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gMS4gTGV0IG1ldGhvZCBiZSBpbml0W1wibWV0aG9kXCJdLlxuICAgICAgbGV0IG1ldGhvZCA9IGluaXQubWV0aG9kXG5cbiAgICAgIC8vIDIuIElmIG1ldGhvZCBpcyBub3QgYSBtZXRob2Qgb3IgbWV0aG9kIGlzIGEgZm9yYmlkZGVuIG1ldGhvZCwgdGhlblxuICAgICAgLy8gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAoIWlzVmFsaWRIVFRQVG9rZW4obWV0aG9kKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAnJHttZXRob2R9JyBpcyBub3QgYSB2YWxpZCBIVFRQIG1ldGhvZC5gKVxuICAgICAgfVxuXG4gICAgICBpZiAoZm9yYmlkZGVuTWV0aG9kc1NldC5oYXMobWV0aG9kLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCcke21ldGhvZH0nIEhUVFAgbWV0aG9kIGlzIHVuc3VwcG9ydGVkLmApXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIE5vcm1hbGl6ZSBtZXRob2QuXG4gICAgICBtZXRob2QgPSBub3JtYWxpemVNZXRob2RSZWNvcmRbbWV0aG9kXSA/PyBub3JtYWxpemVNZXRob2QobWV0aG9kKVxuXG4gICAgICAvLyA0LiBTZXQgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIHRvIG1ldGhvZC5cbiAgICAgIHJlcXVlc3QubWV0aG9kID0gbWV0aG9kXG4gICAgfVxuXG4gICAgLy8gMjYuIElmIGluaXRbXCJzaWduYWxcIl0gZXhpc3RzLCB0aGVuIHNldCBzaWduYWwgdG8gaXQuXG4gICAgaWYgKGluaXQuc2lnbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNpZ25hbCA9IGluaXQuc2lnbmFsXG4gICAgfVxuXG4gICAgLy8gMjcuIFNldCB0aGlzXHUyMDE5cyByZXF1ZXN0IHRvIHJlcXVlc3QuXG4gICAgdGhpc1trU3RhdGVdID0gcmVxdWVzdFxuXG4gICAgLy8gMjguIFNldCB0aGlzXHUyMDE5cyBzaWduYWwgdG8gYSBuZXcgQWJvcnRTaWduYWwgb2JqZWN0IHdpdGggdGhpc1x1MjAxOXMgcmVsZXZhbnRcbiAgICAvLyBSZWFsbS5cbiAgICAvLyBUT0RPOiBjb3VsZCB0aGlzIGJlIHNpbXBsaWZpZWQgd2l0aCBBYm9ydFNpZ25hbC5hbnlcbiAgICAvLyAoaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tYWJvcnRzaWduYWwtYW55KVxuICAgIGNvbnN0IGFjID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgdGhpc1trU2lnbmFsXSA9IGFjLnNpZ25hbFxuICAgIHRoaXNba1NpZ25hbF1ba1JlYWxtXSA9IHRoaXNba1JlYWxtXVxuXG4gICAgLy8gMjkuIElmIHNpZ25hbCBpcyBub3QgbnVsbCwgdGhlbiBtYWtlIHRoaXNcdTIwMTlzIHNpZ25hbCBmb2xsb3cgc2lnbmFsLlxuICAgIGlmIChzaWduYWwgIT0gbnVsbCkge1xuICAgICAgaWYgKFxuICAgICAgICAhc2lnbmFsIHx8XG4gICAgICAgIHR5cGVvZiBzaWduYWwuYWJvcnRlZCAhPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgIHR5cGVvZiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXF1ZXN0JzogbWVtYmVyIHNpZ25hbCBpcyBub3Qgb2YgdHlwZSBBYm9ydFNpZ25hbC5cIlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBhYy5hYm9ydChzaWduYWwucmVhc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gS2VlcCBhIHN0cm9uZyByZWYgdG8gYWMgd2hpbGUgcmVxdWVzdCBvYmplY3RcbiAgICAgICAgLy8gaXMgYWxpdmUuIFRoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQgQWJvcnRDb250cm9sbGVyXG4gICAgICAgIC8vIGZyb20gYmVpbmcgcHJlbWF0dXJlbHkgZ2FyYmFnZSBjb2xsZWN0ZWQuXG4gICAgICAgIC8vIFNlZSwgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzE5MjYuXG4gICAgICAgIHRoaXNba0Fib3J0Q29udHJvbGxlcl0gPSBhY1xuXG4gICAgICAgIGNvbnN0IGFjUmVmID0gbmV3IFdlYWtSZWYoYWMpXG4gICAgICAgIGNvbnN0IGFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGFjID0gYWNSZWYuZGVyZWYoKVxuICAgICAgICAgIGlmIChhYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhYy5hYm9ydCh0aGlzLnJlYXNvbilcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlyZC1wYXJ0eSBBYm9ydENvbnRyb2xsZXJzIG1heSBub3Qgd29yayB3aXRoIHRoZXNlLlxuICAgICAgICAvLyBTZWUsIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL3B1bGwvMTkxMCNpc3N1ZWNvbW1lbnQtMTQ2NDQ5NTYxOS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBJZiB0aGUgbWF4IGFtb3VudCBvZiBsaXN0ZW5lcnMgaXMgZXF1YWwgdG8gdGhlIGRlZmF1bHQsIGluY3JlYXNlIGl0XG4gICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBub2RlID49IHYxOS45LjBcbiAgICAgICAgICBpZiAodHlwZW9mIGdldE1heExpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRNYXhMaXN0ZW5lcnMoc2lnbmFsKSA9PT0gZGVmYXVsdE1heExpc3RlbmVycykge1xuICAgICAgICAgICAgc2V0TWF4TGlzdGVuZXJzKDEwMCwgc2lnbmFsKVxuICAgICAgICAgIH0gZWxzZSBpZiAoZ2V0RXZlbnRMaXN0ZW5lcnMoc2lnbmFsLCAnYWJvcnQnKS5sZW5ndGggPj0gZGVmYXVsdE1heExpc3RlbmVycykge1xuICAgICAgICAgICAgc2V0TWF4TGlzdGVuZXJzKDEwMCwgc2lnbmFsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgIHV0aWwuYWRkQWJvcnRMaXN0ZW5lcihzaWduYWwsIGFib3J0KVxuICAgICAgICByZXF1ZXN0RmluYWxpemVyLnJlZ2lzdGVyKGFjLCB7IHNpZ25hbCwgYWJvcnQgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzMC4gU2V0IHRoaXNcdTIwMTlzIGhlYWRlcnMgdG8gYSBuZXcgSGVhZGVycyBvYmplY3Qgd2l0aCB0aGlzXHUyMDE5cyByZWxldmFudFxuICAgIC8vIFJlYWxtLCB3aG9zZSBoZWFkZXIgbGlzdCBpcyByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBhbmQgZ3VhcmQgaXNcbiAgICAvLyBcInJlcXVlc3RcIi5cbiAgICB0aGlzW2tIZWFkZXJzXSA9IG5ldyBIZWFkZXJzKGtDb25zdHJ1Y3QpXG4gICAgdGhpc1trSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IHJlcXVlc3QuaGVhZGVyc0xpc3RcbiAgICB0aGlzW2tIZWFkZXJzXVtrR3VhcmRdID0gJ3JlcXVlc3QnXG4gICAgdGhpc1trSGVhZGVyc11ba1JlYWxtXSA9IHRoaXNba1JlYWxtXVxuXG4gICAgLy8gMzEuIElmIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgXCJuby1jb3JzXCIsIHRoZW46XG4gICAgaWYgKG1vZGUgPT09ICduby1jb3JzJykge1xuICAgICAgLy8gMS4gSWYgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIGlzIG5vdCBhIENPUlMtc2FmZWxpc3RlZCBtZXRob2QsXG4gICAgICAvLyB0aGVuIHRocm93IGEgVHlwZUVycm9yLlxuICAgICAgaWYgKCFjb3JzU2FmZUxpc3RlZE1ldGhvZHNTZXQuaGFzKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIGAnJHtyZXF1ZXN0Lm1ldGhvZH0gaXMgdW5zdXBwb3J0ZWQgaW4gbm8tY29ycyBtb2RlLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyAyLiBTZXQgdGhpc1x1MjAxOXMgaGVhZGVyc1x1MjAxOXMgZ3VhcmQgdG8gXCJyZXF1ZXN0LW5vLWNvcnNcIi5cbiAgICAgIHRoaXNba0hlYWRlcnNdW2tHdWFyZF0gPSAncmVxdWVzdC1uby1jb3JzJ1xuICAgIH1cblxuICAgIC8vIDMyLiBJZiBpbml0IGlzIG5vdCBlbXB0eSwgdGhlbjpcbiAgICBpZiAoaW5pdEhhc0tleSkge1xuICAgICAgLyoqIEB0eXBlIHtIZWFkZXJzTGlzdH0gKi9cbiAgICAgIGNvbnN0IGhlYWRlcnNMaXN0ID0gdGhpc1trSGVhZGVyc11ba0hlYWRlcnNMaXN0XVxuICAgICAgLy8gMS4gTGV0IGhlYWRlcnMgYmUgYSBjb3B5IG9mIHRoaXNcdTIwMTlzIGhlYWRlcnMgYW5kIGl0cyBhc3NvY2lhdGVkIGhlYWRlclxuICAgICAgLy8gbGlzdC5cbiAgICAgIC8vIDIuIElmIGluaXRbXCJoZWFkZXJzXCJdIGV4aXN0cywgdGhlbiBzZXQgaGVhZGVycyB0byBpbml0W1wiaGVhZGVyc1wiXS5cbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBpbml0LmhlYWRlcnMgIT09IHVuZGVmaW5lZCA/IGluaXQuaGVhZGVycyA6IG5ldyBIZWFkZXJzTGlzdChoZWFkZXJzTGlzdClcblxuICAgICAgLy8gMy4gRW1wdHkgdGhpc1x1MjAxOXMgaGVhZGVyc1x1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICBoZWFkZXJzTGlzdC5jbGVhcigpXG5cbiAgICAgIC8vIDQuIElmIGhlYWRlcnMgaXMgYSBIZWFkZXJzIG9iamVjdCwgdGhlbiBmb3IgZWFjaCBoZWFkZXIgaW4gaXRzIGhlYWRlclxuICAgICAgLy8gbGlzdCwgYXBwZW5kIGhlYWRlclx1MjAxOXMgbmFtZS9oZWFkZXJcdTIwMTlzIHZhbHVlIHRvIHRoaXNcdTIwMTlzIGhlYWRlcnMuXG4gICAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnNMaXN0KSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBoZWFkZXJzKSB7XG4gICAgICAgICAgaGVhZGVyc0xpc3QuYXBwZW5kKGtleSwgdmFsKVxuICAgICAgICB9XG4gICAgICAgIC8vIE5vdGU6IENvcHkgdGhlIGBzZXQtY29va2llYCBtZXRhLWRhdGEuXG4gICAgICAgIGhlYWRlcnNMaXN0LmNvb2tpZXMgPSBoZWFkZXJzLmNvb2tpZXNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIDUuIE90aGVyd2lzZSwgZmlsbCB0aGlzXHUyMDE5cyBoZWFkZXJzIHdpdGggaGVhZGVycy5cbiAgICAgICAgZmlsbEhlYWRlcnModGhpc1trSGVhZGVyc10sIGhlYWRlcnMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMzMuIExldCBpbnB1dEJvZHkgYmUgaW5wdXRcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIGJvZHkgaWYgaW5wdXQgaXMgYSBSZXF1ZXN0XG4gICAgLy8gb2JqZWN0OyBvdGhlcndpc2UgbnVsbC5cbiAgICBjb25zdCBpbnB1dEJvZHkgPSBpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QgPyBpbnB1dFtrU3RhdGVdLmJvZHkgOiBudWxsXG5cbiAgICAvLyAzNC4gSWYgZWl0aGVyIGluaXRbXCJib2R5XCJdIGV4aXN0cyBhbmQgaXMgbm9uLW51bGwgb3IgaW5wdXRCb2R5IGlzXG4gICAgLy8gbm9uLW51bGwsIGFuZCByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgYEdFVGAgb3IgYEhFQURgLCB0aGVuIHRocm93IGFcbiAgICAvLyBUeXBlRXJyb3IuXG4gICAgaWYgKFxuICAgICAgKGluaXQuYm9keSAhPSBudWxsIHx8IGlucHV0Qm9keSAhPSBudWxsKSAmJlxuICAgICAgKHJlcXVlc3QubWV0aG9kID09PSAnR0VUJyB8fCByZXF1ZXN0Lm1ldGhvZCA9PT0gJ0hFQUQnKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVxdWVzdCB3aXRoIEdFVC9IRUFEIG1ldGhvZCBjYW5ub3QgaGF2ZSBib2R5LicpXG4gICAgfVxuXG4gICAgLy8gMzUuIExldCBpbml0Qm9keSBiZSBudWxsLlxuICAgIGxldCBpbml0Qm9keSA9IG51bGxcblxuICAgIC8vIDM2LiBJZiBpbml0W1wiYm9keVwiXSBleGlzdHMgYW5kIGlzIG5vbi1udWxsLCB0aGVuOlxuICAgIGlmIChpbml0LmJvZHkgIT0gbnVsbCkge1xuICAgICAgLy8gMS4gTGV0IENvbnRlbnQtVHlwZSBiZSBudWxsLlxuICAgICAgLy8gMi4gU2V0IGluaXRCb2R5IGFuZCBDb250ZW50LVR5cGUgdG8gdGhlIHJlc3VsdCBvZiBleHRyYWN0aW5nXG4gICAgICAvLyBpbml0W1wiYm9keVwiXSwgd2l0aCBrZWVwYWxpdmUgc2V0IHRvIHJlcXVlc3RcdTIwMTlzIGtlZXBhbGl2ZS5cbiAgICAgIGNvbnN0IFtleHRyYWN0ZWRCb2R5LCBjb250ZW50VHlwZV0gPSBleHRyYWN0Qm9keShcbiAgICAgICAgaW5pdC5ib2R5LFxuICAgICAgICByZXF1ZXN0LmtlZXBhbGl2ZVxuICAgICAgKVxuICAgICAgaW5pdEJvZHkgPSBleHRyYWN0ZWRCb2R5XG5cbiAgICAgIC8vIDMsIElmIENvbnRlbnQtVHlwZSBpcyBub24tbnVsbCBhbmQgdGhpc1x1MjAxOXMgaGVhZGVyc1x1MjAxOXMgaGVhZGVyIGxpc3QgZG9lc1xuICAgICAgLy8gbm90IGNvbnRhaW4gYENvbnRlbnQtVHlwZWAsIHRoZW4gYXBwZW5kIGBDb250ZW50LVR5cGVgL0NvbnRlbnQtVHlwZSB0b1xuICAgICAgLy8gdGhpc1x1MjAxOXMgaGVhZGVycy5cbiAgICAgIGlmIChjb250ZW50VHlwZSAmJiAhdGhpc1trSGVhZGVyc11ba0hlYWRlcnNMaXN0XS5jb250YWlucygnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgdGhpc1trSGVhZGVyc10uYXBwZW5kKCdjb250ZW50LXR5cGUnLCBjb250ZW50VHlwZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzNy4gTGV0IGlucHV0T3JJbml0Qm9keSBiZSBpbml0Qm9keSBpZiBpdCBpcyBub24tbnVsbDsgb3RoZXJ3aXNlXG4gICAgLy8gaW5wdXRCb2R5LlxuICAgIGNvbnN0IGlucHV0T3JJbml0Qm9keSA9IGluaXRCb2R5ID8/IGlucHV0Qm9keVxuXG4gICAgLy8gMzguIElmIGlucHV0T3JJbml0Qm9keSBpcyBub24tbnVsbCBhbmQgaW5wdXRPckluaXRCb2R5XHUyMDE5cyBzb3VyY2UgaXNcbiAgICAvLyBudWxsLCB0aGVuOlxuICAgIGlmIChpbnB1dE9ySW5pdEJvZHkgIT0gbnVsbCAmJiBpbnB1dE9ySW5pdEJvZHkuc291cmNlID09IG51bGwpIHtcbiAgICAgIC8vIDEuIElmIGluaXRCb2R5IGlzIG5vbi1udWxsIGFuZCBpbml0W1wiZHVwbGV4XCJdIGRvZXMgbm90IGV4aXN0LFxuICAgICAgLy8gICAgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICAgIGlmIChpbml0Qm9keSAhPSBudWxsICYmIGluaXQuZHVwbGV4ID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVxdWVzdEluaXQ6IGR1cGxleCBvcHRpb24gaXMgcmVxdWlyZWQgd2hlbiBzZW5kaW5nIGEgYm9keS4nKVxuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBtb2RlIGlzIG5laXRoZXIgXCJzYW1lLW9yaWdpblwiIG5vciBcImNvcnNcIixcbiAgICAgIC8vIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAocmVxdWVzdC5tb2RlICE9PSAnc2FtZS1vcmlnaW4nICYmIHJlcXVlc3QubW9kZSAhPT0gJ2NvcnMnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0lmIHJlcXVlc3QgaXMgbWFkZSBmcm9tIFJlYWRhYmxlU3RyZWFtLCBtb2RlIHNob3VsZCBiZSBcInNhbWUtb3JpZ2luXCIgb3IgXCJjb3JzXCInXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gMy4gU2V0IHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIHVzZS1DT1JTLXByZWZsaWdodCBmbGFnLlxuICAgICAgcmVxdWVzdC51c2VDT1JTUHJlZmxpZ2h0RmxhZyA9IHRydWVcbiAgICB9XG5cbiAgICAvLyAzOS4gTGV0IGZpbmFsQm9keSBiZSBpbnB1dE9ySW5pdEJvZHkuXG4gICAgbGV0IGZpbmFsQm9keSA9IGlucHV0T3JJbml0Qm9keVxuXG4gICAgLy8gNDAuIElmIGluaXRCb2R5IGlzIG51bGwgYW5kIGlucHV0Qm9keSBpcyBub24tbnVsbCwgdGhlbjpcbiAgICBpZiAoaW5pdEJvZHkgPT0gbnVsbCAmJiBpbnB1dEJvZHkgIT0gbnVsbCkge1xuICAgICAgLy8gMS4gSWYgaW5wdXQgaXMgdW51c2FibGUsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICBpZiAodXRpbC5pc0Rpc3R1cmJlZChpbnB1dEJvZHkuc3RyZWFtKSB8fCBpbnB1dEJvZHkuc3RyZWFtLmxvY2tlZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdDYW5ub3QgY29uc3RydWN0IGEgUmVxdWVzdCB3aXRoIGEgUmVxdWVzdCBvYmplY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuJ1xuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIFNldCBmaW5hbEJvZHkgdG8gdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhIHByb3h5IGZvciBpbnB1dEJvZHkuXG4gICAgICBpZiAoIVRyYW5zZm9ybVN0cmVhbSkge1xuICAgICAgICBUcmFuc2Zvcm1TdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJykuVHJhbnNmb3JtU3RyZWFtXG4gICAgICB9XG5cbiAgICAgIC8vIGh0dHBzOi8vc3RyZWFtcy5zcGVjLndoYXR3Zy5vcmcvI3JlYWRhYmxlc3RyZWFtLWNyZWF0ZS1hLXByb3h5XG4gICAgICBjb25zdCBpZGVudGl0eVRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKVxuICAgICAgaW5wdXRCb2R5LnN0cmVhbS5waXBlVGhyb3VnaChpZGVudGl0eVRyYW5zZm9ybSlcbiAgICAgIGZpbmFsQm9keSA9IHtcbiAgICAgICAgc291cmNlOiBpbnB1dEJvZHkuc291cmNlLFxuICAgICAgICBsZW5ndGg6IGlucHV0Qm9keS5sZW5ndGgsXG4gICAgICAgIHN0cmVhbTogaWRlbnRpdHlUcmFuc2Zvcm0ucmVhZGFibGVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0MS4gU2V0IHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIGJvZHkgdG8gZmluYWxCb2R5LlxuICAgIHRoaXNba1N0YXRlXS5ib2R5ID0gZmluYWxCb2R5XG4gIH1cblxuICAvLyBSZXR1cm5zIHJlcXVlc3RcdTIwMTlzIEhUVFAgbWV0aG9kLCB3aGljaCBpcyBcIkdFVFwiIGJ5IGRlZmF1bHQuXG4gIGdldCBtZXRob2QgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgbWV0aG9kIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIG1ldGhvZC5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLm1ldGhvZFxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgVVJMIG9mIHJlcXVlc3QgYXMgYSBzdHJpbmcuXG4gIGdldCB1cmwgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgdXJsIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIFVSTCwgc2VyaWFsaXplZC5cbiAgICByZXR1cm4gVVJMU2VyaWFsaXplcih0aGlzW2tTdGF0ZV0udXJsKVxuICB9XG5cbiAgLy8gUmV0dXJucyBhIEhlYWRlcnMgb2JqZWN0IGNvbnNpc3Rpbmcgb2YgdGhlIGhlYWRlcnMgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QuXG4gIC8vIE5vdGUgdGhhdCBoZWFkZXJzIGFkZGVkIGluIHRoZSBuZXR3b3JrIGxheWVyIGJ5IHRoZSB1c2VyIGFnZW50IHdpbGwgbm90XG4gIC8vIGJlIGFjY291bnRlZCBmb3IgaW4gdGhpcyBvYmplY3QsIGUuZy4sIHRoZSBcIkhvc3RcIiBoZWFkZXIuXG4gIGdldCBoZWFkZXJzICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIGhlYWRlcnMgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgaGVhZGVycy5cbiAgICByZXR1cm4gdGhpc1trSGVhZGVyc11cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGtpbmQgb2YgcmVzb3VyY2UgcmVxdWVzdGVkIGJ5IHJlcXVlc3QsIGUuZy4sIFwiZG9jdW1lbnRcIlxuICAvLyBvciBcInNjcmlwdFwiLlxuICBnZXQgZGVzdGluYXRpb24gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgZGVzdGluYXRpb24gZ2V0dGVyIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgZGVzdGluYXRpb24uXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5kZXN0aW5hdGlvblxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgb2YgcmVxdWVzdC4gSXRzIHZhbHVlIGNhbiBiZSBhIHNhbWUtb3JpZ2luIFVSTCBpZlxuICAvLyBleHBsaWNpdGx5IHNldCBpbiBpbml0LCB0aGUgZW1wdHkgc3RyaW5nIHRvIGluZGljYXRlIG5vIHJlZmVycmVyLCBhbmRcbiAgLy8gXCJhYm91dDpjbGllbnRcIiB3aGVuIGRlZmF1bHRpbmcgdG8gdGhlIGdsb2JhbFx1MjAxOXMgZGVmYXVsdC4gVGhpcyBpcyB1c2VkXG4gIC8vIGR1cmluZyBmZXRjaGluZyB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIHRoZSBgUmVmZXJlcmAgaGVhZGVyIG9mIHRoZVxuICAvLyByZXF1ZXN0IGJlaW5nIG1hZGUuXG4gIGdldCByZWZlcnJlciAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIDEuIElmIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIGlzIFwibm8tcmVmZXJyZXJcIiwgdGhlbiByZXR1cm4gdGhlXG4gICAgLy8gZW1wdHkgc3RyaW5nLlxuICAgIGlmICh0aGlzW2tTdGF0ZV0ucmVmZXJyZXIgPT09ICduby1yZWZlcnJlcicpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIC8vIDIuIElmIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIGlzIFwiY2xpZW50XCIsIHRoZW4gcmV0dXJuXG4gICAgLy8gXCJhYm91dDpjbGllbnRcIi5cbiAgICBpZiAodGhpc1trU3RhdGVdLnJlZmVycmVyID09PSAnY2xpZW50Jykge1xuICAgICAgcmV0dXJuICdhYm91dDpjbGllbnQnXG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyLCBzZXJpYWxpemVkLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ucmVmZXJyZXIudG9TdHJpbmcoKVxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0LlxuICAvLyBUaGlzIGlzIHVzZWQgZHVyaW5nIGZldGNoaW5nIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9mIHRoZSByZXF1ZXN0XHUyMDE5c1xuICAvLyByZWZlcnJlci5cbiAgZ2V0IHJlZmVycmVyUG9saWN5ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIHJlZmVycmVyUG9saWN5IGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnJlZmVycmVyUG9saWN5XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBtb2RlIGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0LCB3aGljaCBpcyBhIHN0cmluZyBpbmRpY2F0aW5nXG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3Qgd2lsbCB1c2UgQ09SUywgb3Igd2lsbCBiZSByZXN0cmljdGVkIHRvIHNhbWUtb3JpZ2luXG4gIC8vIFVSTHMuXG4gIGdldCBtb2RlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIG1vZGUgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgbW9kZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLm1vZGVcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGNyZWRlbnRpYWxzIG1vZGUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QsXG4gIC8vIHdoaWNoIGlzIGEgc3RyaW5nIGluZGljYXRpbmcgd2hldGhlciBjcmVkZW50aWFscyB3aWxsIGJlIHNlbnQgd2l0aCB0aGVcbiAgLy8gcmVxdWVzdCBhbHdheXMsIG5ldmVyLCBvciBvbmx5IHdoZW4gc2VudCB0byBhIHNhbWUtb3JpZ2luIFVSTC5cbiAgZ2V0IGNyZWRlbnRpYWxzICgpIHtcbiAgICAvLyBUaGUgY3JlZGVudGlhbHMgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgY3JlZGVudGlhbHMgbW9kZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmNyZWRlbnRpYWxzXG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBjYWNoZSBtb2RlIGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0LFxuICAvLyB3aGljaCBpcyBhIHN0cmluZyBpbmRpY2F0aW5nIGhvdyB0aGUgcmVxdWVzdCB3aWxsXG4gIC8vIGludGVyYWN0IHdpdGggdGhlIGJyb3dzZXJcdTIwMTlzIGNhY2hlIHdoZW4gZmV0Y2hpbmcuXG4gIGdldCBjYWNoZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBjYWNoZSBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyByZXF1ZXN0XHUyMDE5cyBjYWNoZSBtb2RlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uY2FjaGVcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIHJlZGlyZWN0IG1vZGUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QsXG4gIC8vIHdoaWNoIGlzIGEgc3RyaW5nIGluZGljYXRpbmcgaG93IHJlZGlyZWN0cyBmb3IgdGhlXG4gIC8vIHJlcXVlc3Qgd2lsbCBiZSBoYW5kbGVkIGR1cmluZyBmZXRjaGluZy4gQSByZXF1ZXN0XG4gIC8vIHdpbGwgZm9sbG93IHJlZGlyZWN0cyBieSBkZWZhdWx0LlxuICBnZXQgcmVkaXJlY3QgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgcmVkaXJlY3QgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgbW9kZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLnJlZGlyZWN0XG4gIH1cblxuICAvLyBSZXR1cm5zIHJlcXVlc3RcdTIwMTlzIHN1YnJlc291cmNlIGludGVncml0eSBtZXRhZGF0YSwgd2hpY2ggaXMgYVxuICAvLyBjcnlwdG9ncmFwaGljIGhhc2ggb2YgdGhlIHJlc291cmNlIGJlaW5nIGZldGNoZWQuIEl0cyB2YWx1ZVxuICAvLyBjb25zaXN0cyBvZiBtdWx0aXBsZSBoYXNoZXMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuIFtTUkldXG4gIGdldCBpbnRlZ3JpdHkgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgaW50ZWdyaXR5IGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRoaXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIGludGVncml0eVxuICAgIC8vIG1ldGFkYXRhLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0uaW50ZWdyaXR5XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHJlcXVlc3QgY2FuIG91dGxpdmUgdGhlXG4gIC8vIGdsb2JhbCBpbiB3aGljaCBpdCB3YXMgY3JlYXRlZC5cbiAgZ2V0IGtlZXBhbGl2ZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBrZWVwYWxpdmUgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMga2VlcGFsaXZlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ua2VlcGFsaXZlXG4gIH1cblxuICAvLyBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHJlcXVlc3QgaXMgZm9yIGEgcmVsb2FkXG4gIC8vIG5hdmlnYXRpb24uXG4gIGdldCBpc1JlbG9hZE5hdmlnYXRpb24gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFJlcXVlc3QpXG5cbiAgICAvLyBUaGUgaXNSZWxvYWROYXZpZ2F0aW9uIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRydWUgaWYgdGhpc1x1MjAxOXNcbiAgICAvLyByZXF1ZXN0XHUyMDE5cyByZWxvYWQtbmF2aWdhdGlvbiBmbGFnIGlzIHNldDsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0ucmVsb2FkTmF2aWdhdGlvblxuICB9XG5cbiAgLy8gUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCByZXF1ZXN0IGlzIGZvciBhIGhpc3RvcnlcbiAgLy8gbmF2aWdhdGlvbiAoYS5rLmEuIGJhY2stZm93YXJkIG5hdmlnYXRpb24pLlxuICBnZXQgaXNIaXN0b3J5TmF2aWdhdGlvbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUmVxdWVzdClcblxuICAgIC8vIFRoZSBpc0hpc3RvcnlOYXZpZ2F0aW9uIGdldHRlciBzdGVwcyBhcmUgdG8gcmV0dXJuIHRydWUgaWYgdGhpc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXNcbiAgICAvLyBoaXN0b3J5LW5hdmlnYXRpb24gZmxhZyBpcyBzZXQ7IG90aGVyd2lzZSBmYWxzZS5cbiAgICByZXR1cm4gdGhpc1trU3RhdGVdLmhpc3RvcnlOYXZpZ2F0aW9uXG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBzaWduYWwgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QsIHdoaWNoIGlzIGFuIEFib3J0U2lnbmFsXG4gIC8vIG9iamVjdCBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHJlcXVlc3QgaGFzIGJlZW4gYWJvcnRlZCwgYW5kIGl0c1xuICAvLyBhYm9ydCBldmVudCBoYW5kbGVyLlxuICBnZXQgc2lnbmFsICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gVGhlIHNpZ25hbCBnZXR0ZXIgc3RlcHMgYXJlIHRvIHJldHVybiB0aGlzXHUyMDE5cyBzaWduYWwuXG4gICAgcmV0dXJuIHRoaXNba1NpZ25hbF1cbiAgfVxuXG4gIGdldCBib2R5ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5ib2R5ID8gdGhpc1trU3RhdGVdLmJvZHkuc3RyZWFtIDogbnVsbFxuICB9XG5cbiAgZ2V0IGJvZHlVc2VkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgcmV0dXJuICEhdGhpc1trU3RhdGVdLmJvZHkgJiYgdXRpbC5pc0Rpc3R1cmJlZCh0aGlzW2tTdGF0ZV0uYm9keS5zdHJlYW0pXG4gIH1cblxuICBnZXQgZHVwbGV4ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgcmV0dXJuICdoYWxmJ1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGNsb25lIG9mIHJlcXVlc3QuXG4gIGNsb25lICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBSZXF1ZXN0KVxuXG4gICAgLy8gMS4gSWYgdGhpcyBpcyB1bnVzYWJsZSwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci5cbiAgICBpZiAodGhpcy5ib2R5VXNlZCB8fCB0aGlzLmJvZHk/LmxvY2tlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW51c2FibGUnKVxuICAgIH1cblxuICAgIC8vIDIuIExldCBjbG9uZWRSZXF1ZXN0IGJlIHRoZSByZXN1bHQgb2YgY2xvbmluZyB0aGlzXHUyMDE5cyByZXF1ZXN0LlxuICAgIGNvbnN0IGNsb25lZFJlcXVlc3QgPSBjbG9uZVJlcXVlc3QodGhpc1trU3RhdGVdKVxuXG4gICAgLy8gMy4gTGV0IGNsb25lZFJlcXVlc3RPYmplY3QgYmUgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhIFJlcXVlc3Qgb2JqZWN0LFxuICAgIC8vIGdpdmVuIGNsb25lZFJlcXVlc3QsIHRoaXNcdTIwMTlzIGhlYWRlcnNcdTIwMTlzIGd1YXJkLCBhbmQgdGhpc1x1MjAxOXMgcmVsZXZhbnQgUmVhbG0uXG4gICAgY29uc3QgY2xvbmVkUmVxdWVzdE9iamVjdCA9IG5ldyBSZXF1ZXN0KGtDb25zdHJ1Y3QpXG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrU3RhdGVdID0gY2xvbmVkUmVxdWVzdFxuICAgIGNsb25lZFJlcXVlc3RPYmplY3Rba1JlYWxtXSA9IHRoaXNba1JlYWxtXVxuICAgIGNsb25lZFJlcXVlc3RPYmplY3Rba0hlYWRlcnNdID0gbmV3IEhlYWRlcnMoa0NvbnN0cnVjdClcbiAgICBjbG9uZWRSZXF1ZXN0T2JqZWN0W2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdID0gY2xvbmVkUmVxdWVzdC5oZWFkZXJzTGlzdFxuICAgIGNsb25lZFJlcXVlc3RPYmplY3Rba0hlYWRlcnNdW2tHdWFyZF0gPSB0aGlzW2tIZWFkZXJzXVtrR3VhcmRdXG4gICAgY2xvbmVkUmVxdWVzdE9iamVjdFtrSGVhZGVyc11ba1JlYWxtXSA9IHRoaXNba0hlYWRlcnNdW2tSZWFsbV1cblxuICAgIC8vIDQuIE1ha2UgY2xvbmVkUmVxdWVzdE9iamVjdFx1MjAxOXMgc2lnbmFsIGZvbGxvdyB0aGlzXHUyMDE5cyBzaWduYWwuXG4gICAgY29uc3QgYWMgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBpZiAodGhpcy5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgYWMuYWJvcnQodGhpcy5zaWduYWwucmVhc29uKVxuICAgIH0gZWxzZSB7XG4gICAgICB1dGlsLmFkZEFib3J0TGlzdGVuZXIoXG4gICAgICAgIHRoaXMuc2lnbmFsLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgYWMuYWJvcnQodGhpcy5zaWduYWwucmVhc29uKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICAgIGNsb25lZFJlcXVlc3RPYmplY3Rba1NpZ25hbF0gPSBhYy5zaWduYWxcblxuICAgIC8vIDQuIFJldHVybiBjbG9uZWRSZXF1ZXN0T2JqZWN0LlxuICAgIHJldHVybiBjbG9uZWRSZXF1ZXN0T2JqZWN0XG4gIH1cbn1cblxubWl4aW5Cb2R5KFJlcXVlc3QpXG5cbmZ1bmN0aW9uIG1ha2VSZXF1ZXN0IChpbml0KSB7XG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0c1xuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgbG9jYWxVUkxzT25seTogZmFsc2UsXG4gICAgdW5zYWZlUmVxdWVzdDogZmFsc2UsXG4gICAgYm9keTogbnVsbCxcbiAgICBjbGllbnQ6IG51bGwsXG4gICAgcmVzZXJ2ZWRDbGllbnQ6IG51bGwsXG4gICAgcmVwbGFjZXNDbGllbnRJZDogJycsXG4gICAgd2luZG93OiAnY2xpZW50JyxcbiAgICBrZWVwYWxpdmU6IGZhbHNlLFxuICAgIHNlcnZpY2VXb3JrZXJzOiAnYWxsJyxcbiAgICBpbml0aWF0b3I6ICcnLFxuICAgIGRlc3RpbmF0aW9uOiAnJyxcbiAgICBwcmlvcml0eTogbnVsbCxcbiAgICBvcmlnaW46ICdjbGllbnQnLFxuICAgIHBvbGljeUNvbnRhaW5lcjogJ2NsaWVudCcsXG4gICAgcmVmZXJyZXI6ICdjbGllbnQnLFxuICAgIHJlZmVycmVyUG9saWN5OiAnJyxcbiAgICBtb2RlOiAnbm8tY29ycycsXG4gICAgdXNlQ09SU1ByZWZsaWdodEZsYWc6IGZhbHNlLFxuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIHVzZUNyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICBjYWNoZTogJ2RlZmF1bHQnLFxuICAgIHJlZGlyZWN0OiAnZm9sbG93JyxcbiAgICBpbnRlZ3JpdHk6ICcnLFxuICAgIGNyeXB0b0dyYXBoaWNzTm9uY2VNZXRhZGF0YTogJycsXG4gICAgcGFyc2VyTWV0YWRhdGE6ICcnLFxuICAgIHJlbG9hZE5hdmlnYXRpb246IGZhbHNlLFxuICAgIGhpc3RvcnlOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICB1c2VyQWN0aXZhdGlvbjogZmFsc2UsXG4gICAgdGFpbnRlZE9yaWdpbjogZmFsc2UsXG4gICAgcmVkaXJlY3RDb3VudDogMCxcbiAgICByZXNwb25zZVRhaW50aW5nOiAnYmFzaWMnLFxuICAgIHByZXZlbnROb0NhY2hlQ2FjaGVDb250cm9sSGVhZGVyTW9kaWZpY2F0aW9uOiBmYWxzZSxcbiAgICBkb25lOiBmYWxzZSxcbiAgICB0aW1pbmdBbGxvd0ZhaWxlZDogZmFsc2UsXG4gICAgLi4uaW5pdCxcbiAgICBoZWFkZXJzTGlzdDogaW5pdC5oZWFkZXJzTGlzdFxuICAgICAgPyBuZXcgSGVhZGVyc0xpc3QoaW5pdC5oZWFkZXJzTGlzdClcbiAgICAgIDogbmV3IEhlYWRlcnNMaXN0KClcbiAgfVxuICByZXF1ZXN0LnVybCA9IHJlcXVlc3QudXJsTGlzdFswXVxuICByZXR1cm4gcmVxdWVzdFxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXF1ZXN0LWNsb25lXG5mdW5jdGlvbiBjbG9uZVJlcXVlc3QgKHJlcXVlc3QpIHtcbiAgLy8gVG8gY2xvbmUgYSByZXF1ZXN0IHJlcXVlc3QsIHJ1biB0aGVzZSBzdGVwczpcblxuICAvLyAxLiBMZXQgbmV3UmVxdWVzdCBiZSBhIGNvcHkgb2YgcmVxdWVzdCwgZXhjZXB0IGZvciBpdHMgYm9keS5cbiAgY29uc3QgbmV3UmVxdWVzdCA9IG1ha2VSZXF1ZXN0KHsgLi4ucmVxdWVzdCwgYm9keTogbnVsbCB9KVxuXG4gIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIGJvZHkgaXMgbm9uLW51bGwsIHNldCBuZXdSZXF1ZXN0XHUyMDE5cyBib2R5IHRvIHRoZVxuICAvLyByZXN1bHQgb2YgY2xvbmluZyByZXF1ZXN0XHUyMDE5cyBib2R5LlxuICBpZiAocmVxdWVzdC5ib2R5ICE9IG51bGwpIHtcbiAgICBuZXdSZXF1ZXN0LmJvZHkgPSBjbG9uZUJvZHkocmVxdWVzdC5ib2R5KVxuICB9XG5cbiAgLy8gMy4gUmV0dXJuIG5ld1JlcXVlc3QuXG4gIHJldHVybiBuZXdSZXF1ZXN0XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJlcXVlc3QucHJvdG90eXBlLCB7XG4gIG1ldGhvZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgdXJsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBoZWFkZXJzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWRpcmVjdDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgY2xvbmU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHNpZ25hbDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZHVwbGV4OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBkZXN0aW5hdGlvbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYm9keToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYm9keVVzZWQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGlzSGlzdG9yeU5hdmlnYXRpb246IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGlzUmVsb2FkTmF2aWdhdGlvbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAga2VlcGFsaXZlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBpbnRlZ3JpdHk6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGNhY2hlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjcmVkZW50aWFsczoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYXR0cmlidXRlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICByZWZlcnJlclBvbGljeToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVmZXJyZXI6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG1vZGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdSZXF1ZXN0JyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfVxufSlcblxud2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdCA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoXG4gIFJlcXVlc3RcbilcblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3RpbmZvXG53ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyA9IGZ1bmN0aW9uIChWKSB7XG4gIGlmICh0eXBlb2YgViA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nKFYpXG4gIH1cblxuICBpZiAoViBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdChWKVxuICB9XG5cbiAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyhWKVxufVxuXG53ZWJpZGwuY29udmVydGVycy5BYm9ydFNpZ25hbCA9IHdlYmlkbC5pbnRlcmZhY2VDb252ZXJ0ZXIoXG4gIEFib3J0U2lnbmFsXG4pXG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0aW5pdFxud2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluaXQgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIHtcbiAgICBrZXk6ICdtZXRob2QnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuQnl0ZVN0cmluZ1xuICB9LFxuICB7XG4gICAga2V5OiAnaGVhZGVycycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5IZWFkZXJzSW5pdFxuICB9LFxuICB7XG4gICAga2V5OiAnYm9keScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIoXG4gICAgICB3ZWJpZGwuY29udmVydGVycy5Cb2R5SW5pdFxuICAgIClcbiAgfSxcbiAge1xuICAgIGtleTogJ3JlZmVycmVyJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZ1xuICB9LFxuICB7XG4gICAga2V5OiAncmVmZXJyZXJQb2xpY3knLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtcmVmZXJyZXItcG9saWN5LyNyZWZlcnJlci1wb2xpY3lcbiAgICBhbGxvd2VkVmFsdWVzOiByZWZlcnJlclBvbGljeVxuICB9LFxuICB7XG4gICAga2V5OiAnbW9kZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVxdWVzdC1tb2RlXG4gICAgYWxsb3dlZFZhbHVlczogcmVxdWVzdE1vZGVcbiAgfSxcbiAge1xuICAgIGtleTogJ2NyZWRlbnRpYWxzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcmVxdWVzdGNyZWRlbnRpYWxzXG4gICAgYWxsb3dlZFZhbHVlczogcmVxdWVzdENyZWRlbnRpYWxzXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdjYWNoZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3JlcXVlc3RjYWNoZVxuICAgIGFsbG93ZWRWYWx1ZXM6IHJlcXVlc3RDYWNoZVxuICB9LFxuICB7XG4gICAga2V5OiAncmVkaXJlY3QnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0cmVkaXJlY3RcbiAgICBhbGxvd2VkVmFsdWVzOiByZXF1ZXN0UmVkaXJlY3RcbiAgfSxcbiAge1xuICAgIGtleTogJ2ludGVncml0eScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmdcbiAgfSxcbiAge1xuICAgIGtleTogJ2tlZXBhbGl2ZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdzaWduYWwnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKFxuICAgICAgKHNpZ25hbCkgPT4gd2ViaWRsLmNvbnZlcnRlcnMuQWJvcnRTaWduYWwoXG4gICAgICAgIHNpZ25hbCxcbiAgICAgICAgeyBzdHJpY3Q6IGZhbHNlIH1cbiAgICAgIClcbiAgICApXG4gIH0sXG4gIHtcbiAgICBrZXk6ICd3aW5kb3cnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYW55XG4gIH0sXG4gIHtcbiAgICBrZXk6ICdkdXBsZXgnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nLFxuICAgIGFsbG93ZWRWYWx1ZXM6IHJlcXVlc3REdXBsZXhcbiAgfVxuXSlcblxubW9kdWxlLmV4cG9ydHMgPSB7IFJlcXVlc3QsIG1ha2VSZXF1ZXN0IH1cbiIsICIvLyBodHRwczovL2dpdGh1Yi5jb20vRXRoYW4tQXJyb3dvb2QvdW5kaWNpLWZldGNoXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIFJlc3BvbnNlLFxuICBtYWtlTmV0d29ya0Vycm9yLFxuICBtYWtlQXBwcm9wcmlhdGVOZXR3b3JrRXJyb3IsXG4gIGZpbHRlclJlc3BvbnNlLFxuICBtYWtlUmVzcG9uc2Vcbn0gPSByZXF1aXJlKCcuL3Jlc3BvbnNlJylcbmNvbnN0IHsgSGVhZGVycyB9ID0gcmVxdWlyZSgnLi9oZWFkZXJzJylcbmNvbnN0IHsgUmVxdWVzdCwgbWFrZVJlcXVlc3QgfSA9IHJlcXVpcmUoJy4vcmVxdWVzdCcpXG5jb25zdCB6bGliID0gcmVxdWlyZSgnemxpYicpXG5jb25zdCB7XG4gIGJ5dGVzTWF0Y2gsXG4gIG1ha2VQb2xpY3lDb250YWluZXIsXG4gIGNsb25lUG9saWN5Q29udGFpbmVyLFxuICByZXF1ZXN0QmFkUG9ydCxcbiAgVEFPQ2hlY2ssXG4gIGFwcGVuZFJlcXVlc3RPcmlnaW5IZWFkZXIsXG4gIHJlc3BvbnNlTG9jYXRpb25VUkwsXG4gIHJlcXVlc3RDdXJyZW50VVJMLFxuICBzZXRSZXF1ZXN0UmVmZXJyZXJQb2xpY3lPblJlZGlyZWN0LFxuICB0cnlVcGdyYWRlUmVxdWVzdFRvQVBvdGVudGlhbGx5VHJ1c3R3b3J0aHlVUkwsXG4gIGNyZWF0ZU9wYXF1ZVRpbWluZ0luZm8sXG4gIGFwcGVuZEZldGNoTWV0YWRhdGEsXG4gIGNvcnNDaGVjayxcbiAgY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNoZWNrLFxuICBkZXRlcm1pbmVSZXF1ZXN0c1JlZmVycmVyLFxuICBjb2Fyc2VuZWRTaGFyZWRDdXJyZW50VGltZSxcbiAgY3JlYXRlRGVmZXJyZWRQcm9taXNlLFxuICBpc0Jsb2JMaWtlLFxuICBzYW1lT3JpZ2luLFxuICBpc0NhbmNlbGxlZCxcbiAgaXNBYm9ydGVkLFxuICBpc0Vycm9yTGlrZSxcbiAgZnVsbHlSZWFkQm9keSxcbiAgcmVhZGFibGVTdHJlYW1DbG9zZSxcbiAgaXNvbW9ycGhpY0VuY29kZSxcbiAgdXJsSXNMb2NhbCxcbiAgdXJsSXNIdHRwSHR0cHNTY2hlbWUsXG4gIHVybEhhc0h0dHBzU2NoZW1lXG59ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsga1N0YXRlLCBrSGVhZGVycywga0d1YXJkLCBrUmVhbG0gfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgeyBzYWZlbHlFeHRyYWN0Qm9keSB9ID0gcmVxdWlyZSgnLi9ib2R5JylcbmNvbnN0IHtcbiAgcmVkaXJlY3RTdGF0dXNTZXQsXG4gIG51bGxCb2R5U3RhdHVzLFxuICBzYWZlTWV0aG9kc1NldCxcbiAgcmVxdWVzdEJvZHlIZWFkZXIsXG4gIHN1YnJlc291cmNlU2V0LFxuICBET01FeGNlcHRpb25cbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5jb25zdCB7IGtIZWFkZXJzTGlzdCB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcbmNvbnN0IEVFID0gcmVxdWlyZSgnZXZlbnRzJylcbmNvbnN0IHsgUmVhZGFibGUsIHBpcGVsaW5lIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgeyBhZGRBYm9ydExpc3RlbmVyLCBpc0Vycm9yZWQsIGlzUmVhZGFibGUsIG5vZGVNYWpvciwgbm9kZU1pbm9yIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBkYXRhVVJMUHJvY2Vzc29yLCBzZXJpYWxpemVBTWltZVR5cGUgfSA9IHJlcXVpcmUoJy4vZGF0YVVSTCcpXG5jb25zdCB7IFRyYW5zZm9ybVN0cmVhbSB9ID0gcmVxdWlyZSgnc3RyZWFtL3dlYicpXG5jb25zdCB7IGdldEdsb2JhbERpc3BhdGNoZXIgfSA9IHJlcXVpcmUoJy4uL2dsb2JhbCcpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi93ZWJpZGwnKVxuY29uc3QgeyBTVEFUVVNfQ09ERVMgfSA9IHJlcXVpcmUoJ2h0dHAnKVxuY29uc3QgR0VUX09SX0hFQUQgPSBbJ0dFVCcsICdIRUFEJ11cblxuLyoqIEB0eXBlIHtpbXBvcnQoJ2J1ZmZlcicpLnJlc29sdmVPYmplY3RVUkx9ICovXG5sZXQgcmVzb2x2ZU9iamVjdFVSTFxubGV0IFJlYWRhYmxlU3RyZWFtID0gZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbVxuXG5jbGFzcyBGZXRjaCBleHRlbmRzIEVFIHtcbiAgY29uc3RydWN0b3IgKGRpc3BhdGNoZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbnVsbFxuICAgIHRoaXMuZHVtcCA9IGZhbHNlXG4gICAgdGhpcy5zdGF0ZSA9ICdvbmdvaW5nJ1xuICAgIC8vIDIgdGVybWluYXRlZCBsaXN0ZW5lcnMgZ2V0IGFkZGVkIHBlciByZXF1ZXN0LFxuICAgIC8vIGJ1dCBvbmx5IDEgZ2V0cyByZW1vdmVkLiBJZiB0aGVyZSBhcmUgMjAgcmVkaXJlY3RzLFxuICAgIC8vIDIxIGxpc3RlbmVycyB3aWxsIGJlIGFkZGVkLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaS9pc3N1ZXMvMTcxMVxuICAgIC8vIFRPRE8gKGZpeCk6IEZpbmQgYW5kIGZpeCByb290IGNhdXNlIGZvciBsZWFrZWQgbGlzdGVuZXIuXG4gICAgdGhpcy5zZXRNYXhMaXN0ZW5lcnMoMjEpXG4gIH1cblxuICB0ZXJtaW5hdGUgKHJlYXNvbikge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb25nb2luZycpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAndGVybWluYXRlZCdcbiAgICB0aGlzLmNvbm5lY3Rpb24/LmRlc3Ryb3kocmVhc29uKVxuICAgIHRoaXMuZW1pdCgndGVybWluYXRlZCcsIHJlYXNvbilcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmZXRjaC1jb250cm9sbGVyLWFib3J0XG4gIGFib3J0IChlcnJvcikge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb25nb2luZycpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIDEuIFNldCBjb250cm9sbGVyXHUyMDE5cyBzdGF0ZSB0byBcImFib3J0ZWRcIi5cbiAgICB0aGlzLnN0YXRlID0gJ2Fib3J0ZWQnXG5cbiAgICAvLyAyLiBMZXQgZmFsbGJhY2tFcnJvciBiZSBhbiBcIkFib3J0RXJyb3JcIiBET01FeGNlcHRpb24uXG4gICAgLy8gMy4gU2V0IGVycm9yIHRvIGZhbGxiYWNrRXJyb3IgaWYgaXQgaXMgbm90IGdpdmVuLlxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gbmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpXG4gICAgfVxuXG4gICAgLy8gNC4gTGV0IHNlcmlhbGl6ZWRFcnJvciBiZSBTdHJ1Y3R1cmVkU2VyaWFsaXplKGVycm9yKS5cbiAgICAvLyAgICBJZiB0aGF0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFuZCBsZXRcbiAgICAvLyAgICBzZXJpYWxpemVkRXJyb3IgYmUgU3RydWN0dXJlZFNlcmlhbGl6ZShmYWxsYmFja0Vycm9yKS5cblxuICAgIC8vIDUuIFNldCBjb250cm9sbGVyXHUyMDE5cyBzZXJpYWxpemVkIGFib3J0IHJlYXNvbiB0byBzZXJpYWxpemVkRXJyb3IuXG4gICAgdGhpcy5zZXJpYWxpemVkQWJvcnRSZWFzb24gPSBlcnJvclxuXG4gICAgdGhpcy5jb25uZWN0aW9uPy5kZXN0cm95KGVycm9yKVxuICAgIHRoaXMuZW1pdCgndGVybWluYXRlZCcsIGVycm9yKVxuICB9XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmZXRjaC1tZXRob2RcbmZ1bmN0aW9uIGZldGNoIChpbnB1dCwgaW5pdCA9IHt9KSB7XG4gIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdnbG9iYWxUaGlzLmZldGNoJyB9KVxuXG4gIC8vIDEuIExldCBwIGJlIGEgbmV3IHByb21pc2UuXG4gIGNvbnN0IHAgPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuXG4gIC8vIDIuIExldCByZXF1ZXN0T2JqZWN0IGJlIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhlIGluaXRpYWwgdmFsdWUgb2ZcbiAgLy8gUmVxdWVzdCBhcyBjb25zdHJ1Y3RvciB3aXRoIGlucHV0IGFuZCBpbml0IGFzIGFyZ3VtZW50cy4gSWYgdGhpcyB0aHJvd3NcbiAgLy8gYW4gZXhjZXB0aW9uLCByZWplY3QgcCB3aXRoIGl0IGFuZCByZXR1cm4gcC5cbiAgbGV0IHJlcXVlc3RPYmplY3RcblxuICB0cnkge1xuICAgIHJlcXVlc3RPYmplY3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHAucmVqZWN0KGUpXG4gICAgcmV0dXJuIHAucHJvbWlzZVxuICB9XG5cbiAgLy8gMy4gTGV0IHJlcXVlc3QgYmUgcmVxdWVzdE9iamVjdFx1MjAxOXMgcmVxdWVzdC5cbiAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RPYmplY3Rba1N0YXRlXVxuXG4gIC8vIDQuIElmIHJlcXVlc3RPYmplY3RcdTIwMTlzIHNpZ25hbFx1MjAxOXMgYWJvcnRlZCBmbGFnIGlzIHNldCwgdGhlbjpcbiAgaWYgKHJlcXVlc3RPYmplY3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAvLyAxLiBBYm9ydCB0aGUgZmV0Y2goKSBjYWxsIHdpdGggcCwgcmVxdWVzdCwgbnVsbCwgYW5kXG4gICAgLy8gICAgcmVxdWVzdE9iamVjdFx1MjAxOXMgc2lnbmFsXHUyMDE5cyBhYm9ydCByZWFzb24uXG4gICAgYWJvcnRGZXRjaChwLCByZXF1ZXN0LCBudWxsLCByZXF1ZXN0T2JqZWN0LnNpZ25hbC5yZWFzb24pXG5cbiAgICAvLyAyLiBSZXR1cm4gcC5cbiAgICByZXR1cm4gcC5wcm9taXNlXG4gIH1cblxuICAvLyA1LiBMZXQgZ2xvYmFsT2JqZWN0IGJlIHJlcXVlc3RcdTIwMTlzIGNsaWVudFx1MjAxOXMgZ2xvYmFsIG9iamVjdC5cbiAgY29uc3QgZ2xvYmFsT2JqZWN0ID0gcmVxdWVzdC5jbGllbnQuZ2xvYmFsT2JqZWN0XG5cbiAgLy8gNi4gSWYgZ2xvYmFsT2JqZWN0IGlzIGEgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIG9iamVjdCwgdGhlbiBzZXRcbiAgLy8gcmVxdWVzdFx1MjAxOXMgc2VydmljZS13b3JrZXJzIG1vZGUgdG8gXCJub25lXCIuXG4gIGlmIChnbG9iYWxPYmplY3Q/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJykge1xuICAgIHJlcXVlc3Quc2VydmljZVdvcmtlcnMgPSAnbm9uZSdcbiAgfVxuXG4gIC8vIDcuIExldCByZXNwb25zZU9iamVjdCBiZSBudWxsLlxuICBsZXQgcmVzcG9uc2VPYmplY3QgPSBudWxsXG5cbiAgLy8gOC4gTGV0IHJlbGV2YW50UmVhbG0gYmUgdGhpc1x1MjAxOXMgcmVsZXZhbnQgUmVhbG0uXG4gIGNvbnN0IHJlbGV2YW50UmVhbG0gPSBudWxsXG5cbiAgLy8gOS4gTGV0IGxvY2FsbHlBYm9ydGVkIGJlIGZhbHNlLlxuICBsZXQgbG9jYWxseUFib3J0ZWQgPSBmYWxzZVxuXG4gIC8vIDEwLiBMZXQgY29udHJvbGxlciBiZSBudWxsLlxuICBsZXQgY29udHJvbGxlciA9IG51bGxcblxuICAvLyAxMS4gQWRkIHRoZSBmb2xsb3dpbmcgYWJvcnQgc3RlcHMgdG8gcmVxdWVzdE9iamVjdFx1MjAxOXMgc2lnbmFsOlxuICBhZGRBYm9ydExpc3RlbmVyKFxuICAgIHJlcXVlc3RPYmplY3Quc2lnbmFsLFxuICAgICgpID0+IHtcbiAgICAgIC8vIDEuIFNldCBsb2NhbGx5QWJvcnRlZCB0byB0cnVlLlxuICAgICAgbG9jYWxseUFib3J0ZWQgPSB0cnVlXG5cbiAgICAgIC8vIDIuIEFzc2VydDogY29udHJvbGxlciBpcyBub24tbnVsbC5cbiAgICAgIGFzc2VydChjb250cm9sbGVyICE9IG51bGwpXG5cbiAgICAgIC8vIDMuIEFib3J0IGNvbnRyb2xsZXIgd2l0aCByZXF1ZXN0T2JqZWN0XHUyMDE5cyBzaWduYWxcdTIwMTlzIGFib3J0IHJlYXNvbi5cbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQocmVxdWVzdE9iamVjdC5zaWduYWwucmVhc29uKVxuXG4gICAgICAvLyA0LiBBYm9ydCB0aGUgZmV0Y2goKSBjYWxsIHdpdGggcCwgcmVxdWVzdCwgcmVzcG9uc2VPYmplY3QsXG4gICAgICAvLyAgICBhbmQgcmVxdWVzdE9iamVjdFx1MjAxOXMgc2lnbmFsXHUyMDE5cyBhYm9ydCByZWFzb24uXG4gICAgICBhYm9ydEZldGNoKHAsIHJlcXVlc3QsIHJlc3BvbnNlT2JqZWN0LCByZXF1ZXN0T2JqZWN0LnNpZ25hbC5yZWFzb24pXG4gICAgfVxuICApXG5cbiAgLy8gMTIuIExldCBoYW5kbGVGZXRjaERvbmUgZ2l2ZW4gcmVzcG9uc2UgcmVzcG9uc2UgYmUgdG8gZmluYWxpemUgYW5kXG4gIC8vIHJlcG9ydCB0aW1pbmcgd2l0aCByZXNwb25zZSwgZ2xvYmFsT2JqZWN0LCBhbmQgXCJmZXRjaFwiLlxuICBjb25zdCBoYW5kbGVGZXRjaERvbmUgPSAocmVzcG9uc2UpID0+XG4gICAgZmluYWxpemVBbmRSZXBvcnRUaW1pbmcocmVzcG9uc2UsICdmZXRjaCcpXG5cbiAgLy8gMTMuIFNldCBjb250cm9sbGVyIHRvIHRoZSByZXN1bHQgb2YgY2FsbGluZyBmZXRjaCBnaXZlbiByZXF1ZXN0LFxuICAvLyB3aXRoIHByb2Nlc3NSZXNwb25zZUVuZE9mQm9keSBzZXQgdG8gaGFuZGxlRmV0Y2hEb25lLCBhbmQgcHJvY2Vzc1Jlc3BvbnNlXG4gIC8vIGdpdmVuIHJlc3BvbnNlIGJlaW5nIHRoZXNlIHN1YnN0ZXBzOlxuXG4gIGNvbnN0IHByb2Nlc3NSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICAgIC8vIDEuIElmIGxvY2FsbHlBYm9ydGVkIGlzIHRydWUsIHRlcm1pbmF0ZSB0aGVzZSBzdWJzdGVwcy5cbiAgICBpZiAobG9jYWxseUFib3J0ZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIH1cblxuICAgIC8vIDIuIElmIHJlc3BvbnNlXHUyMDE5cyBhYm9ydGVkIGZsYWcgaXMgc2V0LCB0aGVuOlxuICAgIGlmIChyZXNwb25zZS5hYm9ydGVkKSB7XG4gICAgICAvLyAxLiBMZXQgZGVzZXJpYWxpemVkRXJyb3IgYmUgdGhlIHJlc3VsdCBvZiBkZXNlcmlhbGl6ZSBhIHNlcmlhbGl6ZWRcbiAgICAgIC8vICAgIGFib3J0IHJlYXNvbiBnaXZlbiBjb250cm9sbGVyXHUyMDE5cyBzZXJpYWxpemVkIGFib3J0IHJlYXNvbiBhbmRcbiAgICAgIC8vICAgIHJlbGV2YW50UmVhbG0uXG5cbiAgICAgIC8vIDIuIEFib3J0IHRoZSBmZXRjaCgpIGNhbGwgd2l0aCBwLCByZXF1ZXN0LCByZXNwb25zZU9iamVjdCwgYW5kXG4gICAgICAvLyAgICBkZXNlcmlhbGl6ZWRFcnJvci5cblxuICAgICAgYWJvcnRGZXRjaChwLCByZXF1ZXN0LCByZXNwb25zZU9iamVjdCwgY29udHJvbGxlci5zZXJpYWxpemVkQWJvcnRSZWFzb24pXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICB9XG5cbiAgICAvLyAzLiBJZiByZXNwb25zZSBpcyBhIG5ldHdvcmsgZXJyb3IsIHRoZW4gcmVqZWN0IHAgd2l0aCBhIFR5cGVFcnJvclxuICAgIC8vIGFuZCB0ZXJtaW5hdGUgdGhlc2Ugc3Vic3RlcHMuXG4gICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIHAucmVqZWN0KFxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBUeXBlRXJyb3IoJ2ZldGNoIGZhaWxlZCcpLCB7IGNhdXNlOiByZXNwb25zZS5lcnJvciB9KVxuICAgICAgKVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgLy8gNC4gU2V0IHJlc3BvbnNlT2JqZWN0IHRvIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYSBSZXNwb25zZSBvYmplY3QsXG4gICAgLy8gZ2l2ZW4gcmVzcG9uc2UsIFwiaW1tdXRhYmxlXCIsIGFuZCByZWxldmFudFJlYWxtLlxuICAgIHJlc3BvbnNlT2JqZWN0ID0gbmV3IFJlc3BvbnNlKClcbiAgICByZXNwb25zZU9iamVjdFtrU3RhdGVdID0gcmVzcG9uc2VcbiAgICByZXNwb25zZU9iamVjdFtrUmVhbG1dID0gcmVsZXZhbnRSZWFsbVxuICAgIHJlc3BvbnNlT2JqZWN0W2tIZWFkZXJzXVtrSGVhZGVyc0xpc3RdID0gcmVzcG9uc2UuaGVhZGVyc0xpc3RcbiAgICByZXNwb25zZU9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9ICdpbW11dGFibGUnXG4gICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tSZWFsbV0gPSByZWxldmFudFJlYWxtXG5cbiAgICAvLyA1LiBSZXNvbHZlIHAgd2l0aCByZXNwb25zZU9iamVjdC5cbiAgICBwLnJlc29sdmUocmVzcG9uc2VPYmplY3QpXG4gIH1cblxuICBjb250cm9sbGVyID0gZmV0Y2hpbmcoe1xuICAgIHJlcXVlc3QsXG4gICAgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5OiBoYW5kbGVGZXRjaERvbmUsXG4gICAgcHJvY2Vzc1Jlc3BvbnNlLFxuICAgIGRpc3BhdGNoZXI6IGluaXQuZGlzcGF0Y2hlciA/PyBnZXRHbG9iYWxEaXNwYXRjaGVyKCkgLy8gdW5kaWNpXG4gIH0pXG5cbiAgLy8gMTQuIFJldHVybiBwLlxuICByZXR1cm4gcC5wcm9taXNlXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmaW5hbGl6ZS1hbmQtcmVwb3J0LXRpbWluZ1xuZnVuY3Rpb24gZmluYWxpemVBbmRSZXBvcnRUaW1pbmcgKHJlc3BvbnNlLCBpbml0aWF0b3JUeXBlID0gJ290aGVyJykge1xuICAvLyAxLiBJZiByZXNwb25zZSBpcyBhbiBhYm9ydGVkIG5ldHdvcmsgZXJyb3IsIHRoZW4gcmV0dXJuLlxuICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ2Vycm9yJyAmJiByZXNwb25zZS5hYm9ydGVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyAyLiBJZiByZXNwb25zZVx1MjAxOXMgVVJMIGxpc3QgaXMgbnVsbCBvciBlbXB0eSwgdGhlbiByZXR1cm4uXG4gIGlmICghcmVzcG9uc2UudXJsTGlzdD8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyAzLiBMZXQgb3JpZ2luYWxVUkwgYmUgcmVzcG9uc2VcdTIwMTlzIFVSTCBsaXN0WzBdLlxuICBjb25zdCBvcmlnaW5hbFVSTCA9IHJlc3BvbnNlLnVybExpc3RbMF1cblxuICAvLyA0LiBMZXQgdGltaW5nSW5mbyBiZSByZXNwb25zZVx1MjAxOXMgdGltaW5nIGluZm8uXG4gIGxldCB0aW1pbmdJbmZvID0gcmVzcG9uc2UudGltaW5nSW5mb1xuXG4gIC8vIDUuIExldCBjYWNoZVN0YXRlIGJlIHJlc3BvbnNlXHUyMDE5cyBjYWNoZSBzdGF0ZS5cbiAgbGV0IGNhY2hlU3RhdGUgPSByZXNwb25zZS5jYWNoZVN0YXRlXG5cbiAgLy8gNi4gSWYgb3JpZ2luYWxVUkxcdTIwMTlzIHNjaGVtZSBpcyBub3QgYW4gSFRUUChTKSBzY2hlbWUsIHRoZW4gcmV0dXJuLlxuICBpZiAoIXVybElzSHR0cEh0dHBzU2NoZW1lKG9yaWdpbmFsVVJMKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gNy4gSWYgdGltaW5nSW5mbyBpcyBudWxsLCB0aGVuIHJldHVybi5cbiAgaWYgKHRpbWluZ0luZm8gPT09IG51bGwpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDguIElmIHJlc3BvbnNlXHUyMDE5cyB0aW1pbmcgYWxsb3cgcGFzc2VkIGZsYWcgaXMgbm90IHNldCwgdGhlbjpcbiAgaWYgKCFyZXNwb25zZS50aW1pbmdBbGxvd1Bhc3NlZCkge1xuICAgIC8vICAxLiBTZXQgdGltaW5nSW5mbyB0byBhIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYW4gb3BhcXVlIHRpbWluZyBpbmZvIGZvciB0aW1pbmdJbmZvLlxuICAgIHRpbWluZ0luZm8gPSBjcmVhdGVPcGFxdWVUaW1pbmdJbmZvKHtcbiAgICAgIHN0YXJ0VGltZTogdGltaW5nSW5mby5zdGFydFRpbWVcbiAgICB9KVxuXG4gICAgLy8gIDIuIFNldCBjYWNoZVN0YXRlIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgY2FjaGVTdGF0ZSA9ICcnXG4gIH1cblxuICAvLyA5LiBTZXQgdGltaW5nSW5mb1x1MjAxOXMgZW5kIHRpbWUgdG8gdGhlIGNvYXJzZW5lZCBzaGFyZWQgY3VycmVudCB0aW1lXG4gIC8vIGdpdmVuIGdsb2JhbFx1MjAxOXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0XHUyMDE5cyBjcm9zcy1vcmlnaW4gaXNvbGF0ZWRcbiAgLy8gY2FwYWJpbGl0eS5cbiAgLy8gVE9ETzogZ2l2ZW4gZ2xvYmFsXHUyMDE5cyByZWxldmFudCBzZXR0aW5ncyBvYmplY3RcdTIwMTlzIGNyb3NzLW9yaWdpbiBpc29sYXRlZFxuICAvLyBjYXBhYmlsaXR5P1xuICB0aW1pbmdJbmZvLmVuZFRpbWUgPSBjb2Fyc2VuZWRTaGFyZWRDdXJyZW50VGltZSgpXG5cbiAgLy8gMTAuIFNldCByZXNwb25zZVx1MjAxOXMgdGltaW5nIGluZm8gdG8gdGltaW5nSW5mby5cbiAgcmVzcG9uc2UudGltaW5nSW5mbyA9IHRpbWluZ0luZm9cblxuICAvLyAxMS4gTWFyayByZXNvdXJjZSB0aW1pbmcgZm9yIHRpbWluZ0luZm8sIG9yaWdpbmFsVVJMLCBpbml0aWF0b3JUeXBlLFxuICAvLyBnbG9iYWwsIGFuZCBjYWNoZVN0YXRlLlxuICBtYXJrUmVzb3VyY2VUaW1pbmcoXG4gICAgdGltaW5nSW5mbyxcbiAgICBvcmlnaW5hbFVSTCxcbiAgICBpbml0aWF0b3JUeXBlLFxuICAgIGdsb2JhbFRoaXMsXG4gICAgY2FjaGVTdGF0ZVxuICApXG59XG5cbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9yZXNvdXJjZS10aW1pbmcvI2Rmbi1tYXJrLXJlc291cmNlLXRpbWluZ1xuZnVuY3Rpb24gbWFya1Jlc291cmNlVGltaW5nICh0aW1pbmdJbmZvLCBvcmlnaW5hbFVSTCwgaW5pdGlhdG9yVHlwZSwgZ2xvYmFsVGhpcywgY2FjaGVTdGF0ZSkge1xuICBpZiAobm9kZU1ham9yID4gMTggfHwgKG5vZGVNYWpvciA9PT0gMTggJiYgbm9kZU1pbm9yID49IDIpKSB7XG4gICAgcGVyZm9ybWFuY2UubWFya1Jlc291cmNlVGltaW5nKHRpbWluZ0luZm8sIG9yaWdpbmFsVVJMLmhyZWYsIGluaXRpYXRvclR5cGUsIGdsb2JhbFRoaXMsIGNhY2hlU3RhdGUpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Fib3J0LWZldGNoXG5mdW5jdGlvbiBhYm9ydEZldGNoIChwLCByZXF1ZXN0LCByZXNwb25zZU9iamVjdCwgZXJyb3IpIHtcbiAgLy8gTm90ZTogQWJvcnRTaWduYWwucmVhc29uIHdhcyBhZGRlZCBpbiBub2RlIHYxNy4yLjBcbiAgLy8gd2hpY2ggd291bGQgZ2l2ZSB1cyBhbiB1bmRlZmluZWQgZXJyb3IgdG8gcmVqZWN0IHdpdGguXG4gIC8vIFJlbW92ZSB0aGlzIG9uY2Ugbm9kZSB2MTYgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5cbiAgaWYgKCFlcnJvcikge1xuICAgIGVycm9yID0gbmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpXG4gIH1cblxuICAvLyAxLiBSZWplY3QgcHJvbWlzZSB3aXRoIGVycm9yLlxuICBwLnJlamVjdChlcnJvcilcblxuICAvLyAyLiBJZiByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vdCBudWxsIGFuZCBpcyByZWFkYWJsZSwgdGhlbiBjYW5jZWwgcmVxdWVzdFx1MjAxOXNcbiAgLy8gYm9keSB3aXRoIGVycm9yLlxuICBpZiAocmVxdWVzdC5ib2R5ICE9IG51bGwgJiYgaXNSZWFkYWJsZShyZXF1ZXN0LmJvZHk/LnN0cmVhbSkpIHtcbiAgICByZXF1ZXN0LmJvZHkuc3RyZWFtLmNhbmNlbChlcnJvcikuY2F0Y2goKGVycikgPT4ge1xuICAgICAgaWYgKGVyci5jb2RlID09PSAnRVJSX0lOVkFMSURfU1RBVEUnKSB7XG4gICAgICAgIC8vIE5vZGUgYnVnP1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRocm93IGVyclxuICAgIH0pXG4gIH1cblxuICAvLyAzLiBJZiByZXNwb25zZU9iamVjdCBpcyBudWxsLCB0aGVuIHJldHVybi5cbiAgaWYgKHJlc3BvbnNlT2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIDQuIExldCByZXNwb25zZSBiZSByZXNwb25zZU9iamVjdFx1MjAxOXMgcmVzcG9uc2UuXG4gIGNvbnN0IHJlc3BvbnNlID0gcmVzcG9uc2VPYmplY3Rba1N0YXRlXVxuXG4gIC8vIDUuIElmIHJlc3BvbnNlXHUyMDE5cyBib2R5IGlzIG5vdCBudWxsIGFuZCBpcyByZWFkYWJsZSwgdGhlbiBlcnJvciByZXNwb25zZVx1MjAxOXNcbiAgLy8gYm9keSB3aXRoIGVycm9yLlxuICBpZiAocmVzcG9uc2UuYm9keSAhPSBudWxsICYmIGlzUmVhZGFibGUocmVzcG9uc2UuYm9keT8uc3RyZWFtKSkge1xuICAgIHJlc3BvbnNlLmJvZHkuc3RyZWFtLmNhbmNlbChlcnJvcikuY2F0Y2goKGVycikgPT4ge1xuICAgICAgaWYgKGVyci5jb2RlID09PSAnRVJSX0lOVkFMSURfU1RBVEUnKSB7XG4gICAgICAgIC8vIE5vZGUgYnVnP1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRocm93IGVyclxuICAgIH0pXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2ZldGNoaW5nXG5mdW5jdGlvbiBmZXRjaGluZyAoe1xuICByZXF1ZXN0LFxuICBwcm9jZXNzUmVxdWVzdEJvZHlDaHVua0xlbmd0aCxcbiAgcHJvY2Vzc1JlcXVlc3RFbmRPZkJvZHksXG4gIHByb2Nlc3NSZXNwb25zZSxcbiAgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5LFxuICBwcm9jZXNzUmVzcG9uc2VDb25zdW1lQm9keSxcbiAgdXNlUGFyYWxsZWxRdWV1ZSA9IGZhbHNlLFxuICBkaXNwYXRjaGVyIC8vIHVuZGljaVxufSkge1xuICAvLyAxLiBMZXQgdGFza0Rlc3RpbmF0aW9uIGJlIG51bGwuXG4gIGxldCB0YXNrRGVzdGluYXRpb24gPSBudWxsXG5cbiAgLy8gMi4gTGV0IGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5IGJlIGZhbHNlLlxuICBsZXQgY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkgPSBmYWxzZVxuXG4gIC8vIDMuIElmIHJlcXVlc3RcdTIwMTlzIGNsaWVudCBpcyBub24tbnVsbCwgdGhlbjpcbiAgaWYgKHJlcXVlc3QuY2xpZW50ICE9IG51bGwpIHtcbiAgICAvLyAxLiBTZXQgdGFza0Rlc3RpbmF0aW9uIHRvIHJlcXVlc3RcdTIwMTlzIGNsaWVudFx1MjAxOXMgZ2xvYmFsIG9iamVjdC5cbiAgICB0YXNrRGVzdGluYXRpb24gPSByZXF1ZXN0LmNsaWVudC5nbG9iYWxPYmplY3RcblxuICAgIC8vIDIuIFNldCBjcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eSB0byByZXF1ZXN0XHUyMDE5cyBjbGllbnRcdTIwMTlzIGNyb3NzLW9yaWdpblxuICAgIC8vIGlzb2xhdGVkIGNhcGFiaWxpdHkuXG4gICAgY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHkgPVxuICAgICAgcmVxdWVzdC5jbGllbnQuY3Jvc3NPcmlnaW5Jc29sYXRlZENhcGFiaWxpdHlcbiAgfVxuXG4gIC8vIDQuIElmIHVzZVBhcmFsbGVsUXVldWUgaXMgdHJ1ZSwgdGhlbiBzZXQgdGFza0Rlc3RpbmF0aW9uIHRvIHRoZSByZXN1bHQgb2ZcbiAgLy8gc3RhcnRpbmcgYSBuZXcgcGFyYWxsZWwgcXVldWUuXG4gIC8vIFRPRE9cblxuICAvLyA1LiBMZXQgdGltaW5nSW5mbyBiZSBhIG5ldyBmZXRjaCB0aW1pbmcgaW5mbyB3aG9zZSBzdGFydCB0aW1lIGFuZFxuICAvLyBwb3N0LXJlZGlyZWN0IHN0YXJ0IHRpbWUgYXJlIHRoZSBjb2Fyc2VuZWQgc2hhcmVkIGN1cnJlbnQgdGltZSBnaXZlblxuICAvLyBjcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eS5cbiAgY29uc3QgY3VycmVuVGltZSA9IGNvYXJzZW5lZFNoYXJlZEN1cnJlbnRUaW1lKGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5KVxuICBjb25zdCB0aW1pbmdJbmZvID0gY3JlYXRlT3BhcXVlVGltaW5nSW5mbyh7XG4gICAgc3RhcnRUaW1lOiBjdXJyZW5UaW1lXG4gIH0pXG5cbiAgLy8gNi4gTGV0IGZldGNoUGFyYW1zIGJlIGEgbmV3IGZldGNoIHBhcmFtcyB3aG9zZVxuICAvLyByZXF1ZXN0IGlzIHJlcXVlc3QsXG4gIC8vIHRpbWluZyBpbmZvIGlzIHRpbWluZ0luZm8sXG4gIC8vIHByb2Nlc3MgcmVxdWVzdCBib2R5IGNodW5rIGxlbmd0aCBpcyBwcm9jZXNzUmVxdWVzdEJvZHlDaHVua0xlbmd0aCxcbiAgLy8gcHJvY2VzcyByZXF1ZXN0IGVuZC1vZi1ib2R5IGlzIHByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5LFxuICAvLyBwcm9jZXNzIHJlc3BvbnNlIGlzIHByb2Nlc3NSZXNwb25zZSxcbiAgLy8gcHJvY2VzcyByZXNwb25zZSBjb25zdW1lIGJvZHkgaXMgcHJvY2Vzc1Jlc3BvbnNlQ29uc3VtZUJvZHksXG4gIC8vIHByb2Nlc3MgcmVzcG9uc2UgZW5kLW9mLWJvZHkgaXMgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5LFxuICAvLyB0YXNrIGRlc3RpbmF0aW9uIGlzIHRhc2tEZXN0aW5hdGlvbixcbiAgLy8gYW5kIGNyb3NzLW9yaWdpbiBpc29sYXRlZCBjYXBhYmlsaXR5IGlzIGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5LlxuICBjb25zdCBmZXRjaFBhcmFtcyA9IHtcbiAgICBjb250cm9sbGVyOiBuZXcgRmV0Y2goZGlzcGF0Y2hlciksXG4gICAgcmVxdWVzdCxcbiAgICB0aW1pbmdJbmZvLFxuICAgIHByb2Nlc3NSZXF1ZXN0Qm9keUNodW5rTGVuZ3RoLFxuICAgIHByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5LFxuICAgIHByb2Nlc3NSZXNwb25zZSxcbiAgICBwcm9jZXNzUmVzcG9uc2VDb25zdW1lQm9keSxcbiAgICBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHksXG4gICAgdGFza0Rlc3RpbmF0aW9uLFxuICAgIGNyb3NzT3JpZ2luSXNvbGF0ZWRDYXBhYmlsaXR5XG4gIH1cblxuICAvLyA3LiBJZiByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIGEgYnl0ZSBzZXF1ZW5jZSwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXMgYm9keSB0b1xuICAvLyAgICByZXF1ZXN0XHUyMDE5cyBib2R5IGFzIGEgYm9keS5cbiAgLy8gTk9URTogU2luY2UgZmV0Y2hpbmcgaXMgb25seSBjYWxsZWQgZnJvbSBmZXRjaCwgYm9keSBzaG91bGQgYWxyZWFkeSBiZVxuICAvLyBleHRyYWN0ZWQuXG4gIGFzc2VydCghcmVxdWVzdC5ib2R5IHx8IHJlcXVlc3QuYm9keS5zdHJlYW0pXG5cbiAgLy8gOC4gSWYgcmVxdWVzdFx1MjAxOXMgd2luZG93IGlzIFwiY2xpZW50XCIsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHdpbmRvdyB0byByZXF1ZXN0XHUyMDE5c1xuICAvLyBjbGllbnQsIGlmIHJlcXVlc3RcdTIwMTlzIGNsaWVudFx1MjAxOXMgZ2xvYmFsIG9iamVjdCBpcyBhIFdpbmRvdyBvYmplY3Q7IG90aGVyd2lzZVxuICAvLyBcIm5vLXdpbmRvd1wiLlxuICBpZiAocmVxdWVzdC53aW5kb3cgPT09ICdjbGllbnQnKSB7XG4gICAgLy8gVE9ETzogV2hhdCBpZiByZXF1ZXN0LmNsaWVudCBpcyBudWxsP1xuICAgIHJlcXVlc3Qud2luZG93ID1cbiAgICAgIHJlcXVlc3QuY2xpZW50Py5nbG9iYWxPYmplY3Q/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnV2luZG93J1xuICAgICAgICA/IHJlcXVlc3QuY2xpZW50XG4gICAgICAgIDogJ25vLXdpbmRvdydcbiAgfVxuXG4gIC8vIDkuIElmIHJlcXVlc3RcdTIwMTlzIG9yaWdpbiBpcyBcImNsaWVudFwiLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBvcmlnaW4gdG8gcmVxdWVzdFx1MjAxOXNcbiAgLy8gY2xpZW50XHUyMDE5cyBvcmlnaW4uXG4gIGlmIChyZXF1ZXN0Lm9yaWdpbiA9PT0gJ2NsaWVudCcpIHtcbiAgICAvLyBUT0RPOiBXaGF0IGlmIHJlcXVlc3QuY2xpZW50IGlzIG51bGw/XG4gICAgcmVxdWVzdC5vcmlnaW4gPSByZXF1ZXN0LmNsaWVudD8ub3JpZ2luXG4gIH1cblxuICAvLyAxMC4gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZTpcbiAgLy8gVE9ET1xuXG4gIC8vIDExLiBJZiByZXF1ZXN0XHUyMDE5cyBwb2xpY3kgY29udGFpbmVyIGlzIFwiY2xpZW50XCIsIHRoZW46XG4gIGlmIChyZXF1ZXN0LnBvbGljeUNvbnRhaW5lciA9PT0gJ2NsaWVudCcpIHtcbiAgICAvLyAxLiBJZiByZXF1ZXN0XHUyMDE5cyBjbGllbnQgaXMgbm9uLW51bGwsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIHBvbGljeVxuICAgIC8vIGNvbnRhaW5lciB0byBhIGNsb25lIG9mIHJlcXVlc3RcdTIwMTlzIGNsaWVudFx1MjAxOXMgcG9saWN5IGNvbnRhaW5lci4gW0hUTUxdXG4gICAgaWYgKHJlcXVlc3QuY2xpZW50ICE9IG51bGwpIHtcbiAgICAgIHJlcXVlc3QucG9saWN5Q29udGFpbmVyID0gY2xvbmVQb2xpY3lDb250YWluZXIoXG4gICAgICAgIHJlcXVlc3QuY2xpZW50LnBvbGljeUNvbnRhaW5lclxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyAyLiBPdGhlcndpc2UsIHNldCByZXF1ZXN0XHUyMDE5cyBwb2xpY3kgY29udGFpbmVyIHRvIGEgbmV3IHBvbGljeVxuICAgICAgLy8gY29udGFpbmVyLlxuICAgICAgcmVxdWVzdC5wb2xpY3lDb250YWluZXIgPSBtYWtlUG9saWN5Q29udGFpbmVyKClcbiAgICB9XG4gIH1cblxuICAvLyAxMi4gSWYgcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgQWNjZXB0YCwgdGhlbjpcbiAgaWYgKCFyZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdhY2NlcHQnKSkge1xuICAgIC8vIDEuIExldCB2YWx1ZSBiZSBgKi8qYC5cbiAgICBjb25zdCB2YWx1ZSA9ICcqLyonXG5cbiAgICAvLyAyLiBBIHVzZXIgYWdlbnQgc2hvdWxkIHNldCB2YWx1ZSB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgc3RhdGVtZW50LCBpZlxuICAgIC8vIGFueSwgc3dpdGNoaW5nIG9uIHJlcXVlc3RcdTIwMTlzIGRlc3RpbmF0aW9uOlxuICAgIC8vIFwiZG9jdW1lbnRcIlxuICAgIC8vIFwiZnJhbWVcIlxuICAgIC8vIFwiaWZyYW1lXCJcbiAgICAvLyBgdGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksKi8qO3E9MC44YFxuICAgIC8vIFwiaW1hZ2VcIlxuICAgIC8vIGBpbWFnZS9wbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qO3E9MC44LCovKjtxPTAuNWBcbiAgICAvLyBcInN0eWxlXCJcbiAgICAvLyBgdGV4dC9jc3MsKi8qO3E9MC4xYFxuICAgIC8vIFRPRE9cblxuICAgIC8vIDMuIEFwcGVuZCBgQWNjZXB0YC92YWx1ZSB0byByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnYWNjZXB0JywgdmFsdWUpXG4gIH1cblxuICAvLyAxMy4gSWYgcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiBgQWNjZXB0LUxhbmd1YWdlYCwgdGhlblxuICAvLyB1c2VyIGFnZW50cyBzaG91bGQgYXBwZW5kIGBBY2NlcHQtTGFuZ3VhZ2VgL2FuIGFwcHJvcHJpYXRlIHZhbHVlIHRvXG4gIC8vIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoIXJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2FjY2VwdC1sYW5ndWFnZScpKSB7XG4gICAgcmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2FjY2VwdC1sYW5ndWFnZScsICcqJylcbiAgfVxuXG4gIC8vIDE0LiBJZiByZXF1ZXN0XHUyMDE5cyBwcmlvcml0eSBpcyBudWxsLCB0aGVuIHVzZSByZXF1ZXN0XHUyMDE5cyBpbml0aWF0b3IgYW5kXG4gIC8vIGRlc3RpbmF0aW9uIGFwcHJvcHJpYXRlbHkgaW4gc2V0dGluZyByZXF1ZXN0XHUyMDE5cyBwcmlvcml0eSB0byBhXG4gIC8vIHVzZXItYWdlbnQtZGVmaW5lZCBvYmplY3QuXG4gIGlmIChyZXF1ZXN0LnByaW9yaXR5ID09PSBudWxsKSB7XG4gICAgLy8gVE9ET1xuICB9XG5cbiAgLy8gMTUuIElmIHJlcXVlc3QgaXMgYSBzdWJyZXNvdXJjZSByZXF1ZXN0LCB0aGVuOlxuICBpZiAoc3VicmVzb3VyY2VTZXQuaGFzKHJlcXVlc3QuZGVzdGluYXRpb24pKSB7XG4gICAgLy8gVE9ET1xuICB9XG5cbiAgLy8gMTYuIFJ1biBtYWluIGZldGNoIGdpdmVuIGZldGNoUGFyYW1zLlxuICBtYWluRmV0Y2goZmV0Y2hQYXJhbXMpXG4gICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLnRlcm1pbmF0ZShlcnIpXG4gICAgfSlcblxuICAvLyAxNy4gUmV0dXJuIGZldGNoUGFyYW0ncyBjb250cm9sbGVyXG4gIHJldHVybiBmZXRjaFBhcmFtcy5jb250cm9sbGVyXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LW1haW4tZmV0Y2hcbmFzeW5jIGZ1bmN0aW9uIG1haW5GZXRjaCAoZmV0Y2hQYXJhbXMsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7XG4gIC8vIDEuIExldCByZXF1ZXN0IGJlIGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0LlxuICBjb25zdCByZXF1ZXN0ID0gZmV0Y2hQYXJhbXMucmVxdWVzdFxuXG4gIC8vIDIuIExldCByZXNwb25zZSBiZSBudWxsLlxuICBsZXQgcmVzcG9uc2UgPSBudWxsXG5cbiAgLy8gMy4gSWYgcmVxdWVzdFx1MjAxOXMgbG9jYWwtVVJMcy1vbmx5IGZsYWcgaXMgc2V0IGFuZCByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTCBpc1xuICAvLyBub3QgbG9jYWwsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKHJlcXVlc3QubG9jYWxVUkxzT25seSAmJiAhdXJsSXNMb2NhbChyZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KSkpIHtcbiAgICByZXNwb25zZSA9IG1ha2VOZXR3b3JrRXJyb3IoJ2xvY2FsIFVSTHMgb25seScpXG4gIH1cblxuICAvLyA0LiBSdW4gcmVwb3J0IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHZpb2xhdGlvbnMgZm9yIHJlcXVlc3QuXG4gIC8vIFRPRE9cblxuICAvLyA1LiBVcGdyYWRlIHJlcXVlc3QgdG8gYSBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSBVUkwsIGlmIGFwcHJvcHJpYXRlLlxuICB0cnlVcGdyYWRlUmVxdWVzdFRvQVBvdGVudGlhbGx5VHJ1c3R3b3J0aHlVUkwocmVxdWVzdClcblxuICAvLyA2LiBJZiBzaG91bGQgcmVxdWVzdCBiZSBibG9ja2VkIGR1ZSB0byBhIGJhZCBwb3J0LCBzaG91bGQgZmV0Y2hpbmcgcmVxdWVzdFxuICAvLyBiZSBibG9ja2VkIGFzIG1peGVkIGNvbnRlbnQsIG9yIHNob3VsZCByZXF1ZXN0IGJlIGJsb2NrZWQgYnkgQ29udGVudFxuICAvLyBTZWN1cml0eSBQb2xpY3kgcmV0dXJucyBibG9ja2VkLCB0aGVuIHNldCByZXNwb25zZSB0byBhIG5ldHdvcmsgZXJyb3IuXG4gIGlmIChyZXF1ZXN0QmFkUG9ydChyZXF1ZXN0KSA9PT0gJ2Jsb2NrZWQnKSB7XG4gICAgcmVzcG9uc2UgPSBtYWtlTmV0d29ya0Vycm9yKCdiYWQgcG9ydCcpXG4gIH1cbiAgLy8gVE9ETzogc2hvdWxkIGZldGNoaW5nIHJlcXVlc3QgYmUgYmxvY2tlZCBhcyBtaXhlZCBjb250ZW50P1xuICAvLyBUT0RPOiBzaG91bGQgcmVxdWVzdCBiZSBibG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5P1xuXG4gIC8vIDcuIElmIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIHBvbGljeSBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5c1xuICAvLyByZWZlcnJlciBwb2xpY3kgdG8gcmVxdWVzdFx1MjAxOXMgcG9saWN5IGNvbnRhaW5lclx1MjAxOXMgcmVmZXJyZXIgcG9saWN5LlxuICBpZiAocmVxdWVzdC5yZWZlcnJlclBvbGljeSA9PT0gJycpIHtcbiAgICByZXF1ZXN0LnJlZmVycmVyUG9saWN5ID0gcmVxdWVzdC5wb2xpY3lDb250YWluZXIucmVmZXJyZXJQb2xpY3lcbiAgfVxuXG4gIC8vIDguIElmIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyIGlzIG5vdCBcIm5vLXJlZmVycmVyXCIsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzXG4gIC8vIHJlZmVycmVyIHRvIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgZGV0ZXJtaW5lIHJlcXVlc3RcdTIwMTlzIHJlZmVycmVyLlxuICBpZiAocmVxdWVzdC5yZWZlcnJlciAhPT0gJ25vLXJlZmVycmVyJykge1xuICAgIHJlcXVlc3QucmVmZXJyZXIgPSBkZXRlcm1pbmVSZXF1ZXN0c1JlZmVycmVyKHJlcXVlc3QpXG4gIH1cblxuICAvLyA5LiBTZXQgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHNjaGVtZSB0byBcImh0dHBzXCIgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmdcbiAgLy8gY29uZGl0aW9ucyBhcmUgdHJ1ZTpcbiAgLy8gLSByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgc2NoZW1lIGlzIFwiaHR0cFwiXG4gIC8vIC0gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIGhvc3QgaXMgYSBkb21haW5cbiAgLy8gLSBNYXRjaGluZyByZXF1ZXN0XHUyMDE5cyBjdXJyZW50IFVSTFx1MjAxOXMgaG9zdCBwZXIgS25vd24gSFNUUyBIb3N0IERvbWFpbiBOYW1lXG4gIC8vICAgTWF0Y2hpbmcgcmVzdWx0cyBpbiBlaXRoZXIgYSBzdXBlcmRvbWFpbiBtYXRjaCB3aXRoIGFuIGFzc2VydGVkXG4gIC8vICAgaW5jbHVkZVN1YkRvbWFpbnMgZGlyZWN0aXZlIG9yIGEgY29uZ3J1ZW50IG1hdGNoICh3aXRoIG9yIHdpdGhvdXQgYW5cbiAgLy8gICBhc3NlcnRlZCBpbmNsdWRlU3ViRG9tYWlucyBkaXJlY3RpdmUpLiBbSFNUU11cbiAgLy8gVE9ET1xuXG4gIC8vIDEwLiBJZiByZWN1cnNpdmUgaXMgZmFsc2UsIHRoZW4gcnVuIHRoZSByZW1haW5pbmcgc3RlcHMgaW4gcGFyYWxsZWwuXG4gIC8vIFRPRE9cblxuICAvLyAxMS4gSWYgcmVzcG9uc2UgaXMgbnVsbCwgdGhlbiBzZXQgcmVzcG9uc2UgdG8gdGhlIHJlc3VsdCBvZiBydW5uaW5nXG4gIC8vIHRoZSBzdGVwcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBtYXRjaGluZyBzdGF0ZW1lbnQ6XG4gIGlmIChyZXNwb25zZSA9PT0gbnVsbCkge1xuICAgIHJlc3BvbnNlID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVUkwgPSByZXF1ZXN0Q3VycmVudFVSTChyZXF1ZXN0KVxuXG4gICAgICBpZiAoXG4gICAgICAgIC8vIC0gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIG9yaWdpbiBpcyBzYW1lIG9yaWdpbiB3aXRoIHJlcXVlc3RcdTIwMTlzIG9yaWdpbixcbiAgICAgICAgLy8gICBhbmQgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgaXMgXCJiYXNpY1wiXG4gICAgICAgIChzYW1lT3JpZ2luKGN1cnJlbnRVUkwsIHJlcXVlc3QudXJsKSAmJiByZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdiYXNpYycpIHx8XG4gICAgICAgIC8vIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBzY2hlbWUgaXMgXCJkYXRhXCJcbiAgICAgICAgKGN1cnJlbnRVUkwucHJvdG9jb2wgPT09ICdkYXRhOicpIHx8XG4gICAgICAgIC8vIC0gcmVxdWVzdFx1MjAxOXMgbW9kZSBpcyBcIm5hdmlnYXRlXCIgb3IgXCJ3ZWJzb2NrZXRcIlxuICAgICAgICAocmVxdWVzdC5tb2RlID09PSAnbmF2aWdhdGUnIHx8IHJlcXVlc3QubW9kZSA9PT0gJ3dlYnNvY2tldCcpXG4gICAgICApIHtcbiAgICAgICAgLy8gMS4gU2V0IHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIHRvIFwiYmFzaWNcIi5cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID0gJ2Jhc2ljJ1xuXG4gICAgICAgIC8vIDIuIFJldHVybiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgc2NoZW1lIGZldGNoIGdpdmVuIGZldGNoUGFyYW1zLlxuICAgICAgICByZXR1cm4gYXdhaXQgc2NoZW1lRmV0Y2goZmV0Y2hQYXJhbXMpXG4gICAgICB9XG5cbiAgICAgIC8vIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgXCJzYW1lLW9yaWdpblwiXG4gICAgICBpZiAocmVxdWVzdC5tb2RlID09PSAnc2FtZS1vcmlnaW4nKSB7XG4gICAgICAgIC8vIDEuIFJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgICAgIHJldHVybiBtYWtlTmV0d29ya0Vycm9yKCdyZXF1ZXN0IG1vZGUgY2Fubm90IGJlIFwic2FtZS1vcmlnaW5cIicpXG4gICAgICB9XG5cbiAgICAgIC8vIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgXCJuby1jb3JzXCJcbiAgICAgIGlmIChyZXF1ZXN0Lm1vZGUgPT09ICduby1jb3JzJykge1xuICAgICAgICAvLyAxLiBJZiByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBtb2RlIGlzIG5vdCBcImZvbGxvd1wiLCB0aGVuIHJldHVybiBhIG5ldHdvcmtcbiAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgIGlmIChyZXF1ZXN0LnJlZGlyZWN0ICE9PSAnZm9sbG93Jykge1xuICAgICAgICAgIHJldHVybiBtYWtlTmV0d29ya0Vycm9yKFxuICAgICAgICAgICAgJ3JlZGlyZWN0IG1vZGUgY2Fubm90IGJlIFwiZm9sbG93XCIgZm9yIFwibm8tY29yc1wiIHJlcXVlc3QnXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gU2V0IHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIHRvIFwib3BhcXVlXCIuXG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9ICdvcGFxdWUnXG5cbiAgICAgICAgLy8gMy4gUmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZyBzY2hlbWUgZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMuXG4gICAgICAgIHJldHVybiBhd2FpdCBzY2hlbWVGZXRjaChmZXRjaFBhcmFtcylcbiAgICAgIH1cblxuICAgICAgLy8gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHNjaGVtZSBpcyBub3QgYW4gSFRUUChTKSBzY2hlbWVcbiAgICAgIGlmICghdXJsSXNIdHRwSHR0cHNTY2hlbWUocmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdCkpKSB7XG4gICAgICAgIC8vIFJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgICAgIHJldHVybiBtYWtlTmV0d29ya0Vycm9yKCdVUkwgc2NoZW1lIG11c3QgYmUgYSBIVFRQKFMpIHNjaGVtZScpXG4gICAgICB9XG5cbiAgICAgIC8vIC0gcmVxdWVzdFx1MjAxOXMgdXNlLUNPUlMtcHJlZmxpZ2h0IGZsYWcgaXMgc2V0XG4gICAgICAvLyAtIHJlcXVlc3RcdTIwMTlzIHVuc2FmZS1yZXF1ZXN0IGZsYWcgaXMgc2V0IGFuZCBlaXRoZXIgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIGlzXG4gICAgICAvLyAgIG5vdCBhIENPUlMtc2FmZWxpc3RlZCBtZXRob2Qgb3IgQ09SUy11bnNhZmUgcmVxdWVzdC1oZWFkZXIgbmFtZXMgd2l0aFxuICAgICAgLy8gICByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBpcyBub3QgZW1wdHlcbiAgICAgIC8vICAgIDEuIFNldCByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyB0byBcImNvcnNcIi5cbiAgICAgIC8vICAgIDIuIExldCBjb3JzV2l0aFByZWZsaWdodFJlc3BvbnNlIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQIGZldGNoXG4gICAgICAvLyAgICBnaXZlbiBmZXRjaFBhcmFtcyBhbmQgdHJ1ZS5cbiAgICAgIC8vICAgIDMuIElmIGNvcnNXaXRoUHJlZmxpZ2h0UmVzcG9uc2UgaXMgYSBuZXR3b3JrIGVycm9yLCB0aGVuIGNsZWFyIGNhY2hlXG4gICAgICAvLyAgICBlbnRyaWVzIHVzaW5nIHJlcXVlc3QuXG4gICAgICAvLyAgICA0LiBSZXR1cm4gY29yc1dpdGhQcmVmbGlnaHRSZXNwb25zZS5cbiAgICAgIC8vIFRPRE9cblxuICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAvLyAgICAxLiBTZXQgcmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgdG8gXCJjb3JzXCIuXG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPSAnY29ycydcblxuICAgICAgLy8gICAgMi4gUmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQIGZldGNoIGdpdmVuIGZldGNoUGFyYW1zLlxuICAgICAgcmV0dXJuIGF3YWl0IGh0dHBGZXRjaChmZXRjaFBhcmFtcylcbiAgICB9KSgpXG4gIH1cblxuICAvLyAxMi4gSWYgcmVjdXJzaXZlIGlzIHRydWUsIHRoZW4gcmV0dXJuIHJlc3BvbnNlLlxuICBpZiAocmVjdXJzaXZlKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICAvLyAxMy4gSWYgcmVzcG9uc2UgaXMgbm90IGEgbmV0d29yayBlcnJvciBhbmQgcmVzcG9uc2UgaXMgbm90IGEgZmlsdGVyZWRcbiAgLy8gcmVzcG9uc2UsIHRoZW46XG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDAgJiYgIXJlc3BvbnNlLmludGVybmFsUmVzcG9uc2UpIHtcbiAgICAvLyBJZiByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBcImNvcnNcIiwgdGhlbjpcbiAgICBpZiAocmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnY29ycycpIHtcbiAgICAgIC8vIDEuIExldCBoZWFkZXJOYW1lcyBiZSB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgaGVhZGVyIGxpc3QgdmFsdWVzXG4gICAgICAvLyBnaXZlbiBgQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnNgIGFuZCByZXNwb25zZVx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICAvLyBUT0RPXG4gICAgICAvLyAyLiBJZiByZXF1ZXN0XHUyMDE5cyBjcmVkZW50aWFscyBtb2RlIGlzIG5vdCBcImluY2x1ZGVcIiBhbmQgaGVhZGVyTmFtZXNcbiAgICAgIC8vIGNvbnRhaW5zIGAqYCwgdGhlbiBzZXQgcmVzcG9uc2VcdTIwMTlzIENPUlMtZXhwb3NlZCBoZWFkZXItbmFtZSBsaXN0IHRvXG4gICAgICAvLyBhbGwgdW5pcXVlIGhlYWRlciBuYW1lcyBpbiByZXNwb25zZVx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICAvLyBUT0RPXG4gICAgICAvLyAzLiBPdGhlcndpc2UsIGlmIGhlYWRlck5hbWVzIGlzIG5vdCBudWxsIG9yIGZhaWx1cmUsIHRoZW4gc2V0XG4gICAgICAvLyByZXNwb25zZVx1MjAxOXMgQ09SUy1leHBvc2VkIGhlYWRlci1uYW1lIGxpc3QgdG8gaGVhZGVyTmFtZXMuXG4gICAgICAvLyBUT0RPXG4gICAgfVxuXG4gICAgLy8gU2V0IHJlc3BvbnNlIHRvIHRoZSBmb2xsb3dpbmcgZmlsdGVyZWQgcmVzcG9uc2Ugd2l0aCByZXNwb25zZSBhcyBpdHNcbiAgICAvLyBpbnRlcm5hbCByZXNwb25zZSwgZGVwZW5kaW5nIG9uIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nOlxuICAgIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdiYXNpYycpIHtcbiAgICAgIHJlc3BvbnNlID0gZmlsdGVyUmVzcG9uc2UocmVzcG9uc2UsICdiYXNpYycpXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdjb3JzJykge1xuICAgICAgcmVzcG9uc2UgPSBmaWx0ZXJSZXNwb25zZShyZXNwb25zZSwgJ2NvcnMnKVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnb3BhcXVlJykge1xuICAgICAgcmVzcG9uc2UgPSBmaWx0ZXJSZXNwb25zZShyZXNwb25zZSwgJ29wYXF1ZScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChmYWxzZSlcbiAgICB9XG4gIH1cblxuICAvLyAxNC4gTGV0IGludGVybmFsUmVzcG9uc2UgYmUgcmVzcG9uc2UsIGlmIHJlc3BvbnNlIGlzIGEgbmV0d29yayBlcnJvcixcbiAgLy8gYW5kIHJlc3BvbnNlXHUyMDE5cyBpbnRlcm5hbCByZXNwb25zZSBvdGhlcndpc2UuXG4gIGxldCBpbnRlcm5hbFJlc3BvbnNlID1cbiAgICByZXNwb25zZS5zdGF0dXMgPT09IDAgPyByZXNwb25zZSA6IHJlc3BvbnNlLmludGVybmFsUmVzcG9uc2VcblxuICAvLyAxNS4gSWYgaW50ZXJuYWxSZXNwb25zZVx1MjAxOXMgVVJMIGxpc3QgaXMgZW1wdHksIHRoZW4gc2V0IGl0IHRvIGEgY2xvbmUgb2ZcbiAgLy8gcmVxdWVzdFx1MjAxOXMgVVJMIGxpc3QuXG4gIGlmIChpbnRlcm5hbFJlc3BvbnNlLnVybExpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgaW50ZXJuYWxSZXNwb25zZS51cmxMaXN0LnB1c2goLi4ucmVxdWVzdC51cmxMaXN0KVxuICB9XG5cbiAgLy8gMTYuIElmIHJlcXVlc3RcdTIwMTlzIHRpbWluZyBhbGxvdyBmYWlsZWQgZmxhZyBpcyB1bnNldCwgdGhlbiBzZXRcbiAgLy8gaW50ZXJuYWxSZXNwb25zZVx1MjAxOXMgdGltaW5nIGFsbG93IHBhc3NlZCBmbGFnLlxuICBpZiAoIXJlcXVlc3QudGltaW5nQWxsb3dGYWlsZWQpIHtcbiAgICByZXNwb25zZS50aW1pbmdBbGxvd1Bhc3NlZCA9IHRydWVcbiAgfVxuXG4gIC8vIDE3LiBJZiByZXNwb25zZSBpcyBub3QgYSBuZXR3b3JrIGVycm9yIGFuZCBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zXG4gIC8vIGJsb2NrZWRcbiAgLy8gLSBzaG91bGQgaW50ZXJuYWxSZXNwb25zZSB0byByZXF1ZXN0IGJlIGJsb2NrZWQgYXMgbWl4ZWQgY29udGVudFxuICAvLyAtIHNob3VsZCBpbnRlcm5hbFJlc3BvbnNlIHRvIHJlcXVlc3QgYmUgYmxvY2tlZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeVxuICAvLyAtIHNob3VsZCBpbnRlcm5hbFJlc3BvbnNlIHRvIHJlcXVlc3QgYmUgYmxvY2tlZCBkdWUgdG8gaXRzIE1JTUUgdHlwZVxuICAvLyAtIHNob3VsZCBpbnRlcm5hbFJlc3BvbnNlIHRvIHJlcXVlc3QgYmUgYmxvY2tlZCBkdWUgdG8gbm9zbmlmZlxuICAvLyBUT0RPXG5cbiAgLy8gMTguIElmIHJlc3BvbnNlXHUyMDE5cyB0eXBlIGlzIFwib3BhcXVlXCIsIGludGVybmFsUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyAyMDYsXG4gIC8vIGludGVybmFsUmVzcG9uc2VcdTIwMTlzIHJhbmdlLXJlcXVlc3RlZCBmbGFnIGlzIHNldCwgYW5kIHJlcXVlc3RcdTIwMTlzIGhlYWRlclxuICAvLyBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYFJhbmdlYCwgdGhlbiBzZXQgcmVzcG9uc2UgYW5kIGludGVybmFsUmVzcG9uc2VcbiAgLy8gdG8gYSBuZXR3b3JrIGVycm9yLlxuICBpZiAoXG4gICAgcmVzcG9uc2UudHlwZSA9PT0gJ29wYXF1ZScgJiZcbiAgICBpbnRlcm5hbFJlc3BvbnNlLnN0YXR1cyA9PT0gMjA2ICYmXG4gICAgaW50ZXJuYWxSZXNwb25zZS5yYW5nZVJlcXVlc3RlZCAmJlxuICAgICFyZXF1ZXN0LmhlYWRlcnMuY29udGFpbnMoJ3JhbmdlJylcbiAgKSB7XG4gICAgcmVzcG9uc2UgPSBpbnRlcm5hbFJlc3BvbnNlID0gbWFrZU5ldHdvcmtFcnJvcigpXG4gIH1cblxuICAvLyAxOS4gSWYgcmVzcG9uc2UgaXMgbm90IGEgbmV0d29yayBlcnJvciBhbmQgZWl0aGVyIHJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpc1xuICAvLyBgSEVBRGAgb3IgYENPTk5FQ1RgLCBvciBpbnRlcm5hbFJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgYSBudWxsIGJvZHkgc3RhdHVzLFxuICAvLyBzZXQgaW50ZXJuYWxSZXNwb25zZVx1MjAxOXMgYm9keSB0byBudWxsIGFuZCBkaXNyZWdhcmQgYW55IGVucXVldWluZyB0b3dhcmRcbiAgLy8gaXQgKGlmIGFueSkuXG4gIGlmIChcbiAgICByZXNwb25zZS5zdGF0dXMgIT09IDAgJiZcbiAgICAocmVxdWVzdC5tZXRob2QgPT09ICdIRUFEJyB8fFxuICAgICAgcmVxdWVzdC5tZXRob2QgPT09ICdDT05ORUNUJyB8fFxuICAgICAgbnVsbEJvZHlTdGF0dXMuaW5jbHVkZXMoaW50ZXJuYWxSZXNwb25zZS5zdGF0dXMpKVxuICApIHtcbiAgICBpbnRlcm5hbFJlc3BvbnNlLmJvZHkgPSBudWxsXG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5kdW1wID0gdHJ1ZVxuICB9XG5cbiAgLy8gMjAuIElmIHJlcXVlc3RcdTIwMTlzIGludGVncml0eSBtZXRhZGF0YSBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgdGhlbjpcbiAgaWYgKHJlcXVlc3QuaW50ZWdyaXR5KSB7XG4gICAgLy8gMS4gTGV0IHByb2Nlc3NCb2R5RXJyb3IgYmUgdGhpcyBzdGVwOiBydW4gZmV0Y2ggZmluYWxlIGdpdmVuIGZldGNoUGFyYW1zXG4gICAgLy8gYW5kIGEgbmV0d29yayBlcnJvci5cbiAgICBjb25zdCBwcm9jZXNzQm9keUVycm9yID0gKHJlYXNvbikgPT5cbiAgICAgIGZldGNoRmluYWxlKGZldGNoUGFyYW1zLCBtYWtlTmV0d29ya0Vycm9yKHJlYXNvbikpXG5cbiAgICAvLyAyLiBJZiByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBcIm9wYXF1ZVwiLCBvciByZXNwb25zZVx1MjAxOXMgYm9keSBpcyBudWxsLFxuICAgIC8vIHRoZW4gcnVuIHByb2Nlc3NCb2R5RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLlxuICAgIGlmIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdvcGFxdWUnIHx8IHJlc3BvbnNlLmJvZHkgPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzc0JvZHlFcnJvcihyZXNwb25zZS5lcnJvcilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIDMuIExldCBwcm9jZXNzQm9keSBnaXZlbiBieXRlcyBiZSB0aGVzZSBzdGVwczpcbiAgICBjb25zdCBwcm9jZXNzQm9keSA9IChieXRlcykgPT4ge1xuICAgICAgLy8gMS4gSWYgYnl0ZXMgZG8gbm90IG1hdGNoIHJlcXVlc3RcdTIwMTlzIGludGVncml0eSBtZXRhZGF0YSxcbiAgICAgIC8vIHRoZW4gcnVuIHByb2Nlc3NCb2R5RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLiBbU1JJXVxuICAgICAgaWYgKCFieXRlc01hdGNoKGJ5dGVzLCByZXF1ZXN0LmludGVncml0eSkpIHtcbiAgICAgICAgcHJvY2Vzc0JvZHlFcnJvcignaW50ZWdyaXR5IG1pc21hdGNoJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIFNldCByZXNwb25zZVx1MjAxOXMgYm9keSB0byBieXRlcyBhcyBhIGJvZHkuXG4gICAgICByZXNwb25zZS5ib2R5ID0gc2FmZWx5RXh0cmFjdEJvZHkoYnl0ZXMpWzBdXG5cbiAgICAgIC8vIDMuIFJ1biBmZXRjaCBmaW5hbGUgZ2l2ZW4gZmV0Y2hQYXJhbXMgYW5kIHJlc3BvbnNlLlxuICAgICAgZmV0Y2hGaW5hbGUoZmV0Y2hQYXJhbXMsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIC8vIDQuIEZ1bGx5IHJlYWQgcmVzcG9uc2VcdTIwMTlzIGJvZHkgZ2l2ZW4gcHJvY2Vzc0JvZHkgYW5kIHByb2Nlc3NCb2R5RXJyb3IuXG4gICAgYXdhaXQgZnVsbHlSZWFkQm9keShyZXNwb25zZS5ib2R5LCBwcm9jZXNzQm9keSwgcHJvY2Vzc0JvZHlFcnJvcilcbiAgfSBlbHNlIHtcbiAgICAvLyAyMS4gT3RoZXJ3aXNlLCBydW4gZmV0Y2ggZmluYWxlIGdpdmVuIGZldGNoUGFyYW1zIGFuZCByZXNwb25zZS5cbiAgICBmZXRjaEZpbmFsZShmZXRjaFBhcmFtcywgcmVzcG9uc2UpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtc2NoZW1lLWZldGNoXG4vLyBnaXZlbiBhIGZldGNoIHBhcmFtcyBmZXRjaFBhcmFtc1xuZnVuY3Rpb24gc2NoZW1lRmV0Y2ggKGZldGNoUGFyYW1zKSB7XG4gIC8vIE5vdGU6IHNpbmNlIHRoZSBjb25uZWN0aW9uIGlzIGRlc3Ryb3llZCBvbiByZWRpcmVjdCwgd2hpY2ggc2V0cyBmZXRjaFBhcmFtcyB0byBhXG4gIC8vIGNhbmNlbGxlZCBzdGF0ZSwgd2UgZG8gbm90IHdhbnQgdGhpcyBjb25kaXRpb24gdG8gdHJpZ2dlciAqdW5sZXNzKiB0aGVyZSBoYXZlIGJlZW5cbiAgLy8gbm8gcmVkaXJlY3RzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2kvaXNzdWVzLzE3NzZcbiAgLy8gMS4gSWYgZmV0Y2hQYXJhbXMgaXMgY2FuY2VsZWQsIHRoZW4gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGVycm9yIGZvciBmZXRjaFBhcmFtcy5cbiAgaWYgKGlzQ2FuY2VsbGVkKGZldGNoUGFyYW1zKSAmJiBmZXRjaFBhcmFtcy5yZXF1ZXN0LnJlZGlyZWN0Q291bnQgPT09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VBcHByb3ByaWF0ZU5ldHdvcmtFcnJvcihmZXRjaFBhcmFtcykpXG4gIH1cblxuICAvLyAyLiBMZXQgcmVxdWVzdCBiZSBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdC5cbiAgY29uc3QgeyByZXF1ZXN0IH0gPSBmZXRjaFBhcmFtc1xuXG4gIGNvbnN0IHsgcHJvdG9jb2w6IHNjaGVtZSB9ID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcblxuICAvLyAzLiBTd2l0Y2ggb24gcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIHNjaGVtZSBhbmQgcnVuIHRoZSBhc3NvY2lhdGVkIHN0ZXBzOlxuICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgIGNhc2UgJ2Fib3V0Oic6IHtcbiAgICAgIC8vIElmIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMXHUyMDE5cyBwYXRoIGlzIHRoZSBzdHJpbmcgXCJibGFua1wiLCB0aGVuIHJldHVybiBhIG5ldyByZXNwb25zZVxuICAgICAgLy8gd2hvc2Ugc3RhdHVzIG1lc3NhZ2UgaXMgYE9LYCwgaGVhZGVyIGxpc3QgaXMgXHUwMEFCIChgQ29udGVudC1UeXBlYCwgYHRleHQvaHRtbDtjaGFyc2V0PXV0Zi04YCkgXHUwMEJCLFxuICAgICAgLy8gYW5kIGJvZHkgaXMgdGhlIGVtcHR5IGJ5dGUgc2VxdWVuY2UgYXMgYSBib2R5LlxuXG4gICAgICAvLyBPdGhlcndpc2UsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ2Fib3V0IHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkJykpXG4gICAgfVxuICAgIGNhc2UgJ2Jsb2I6Jzoge1xuICAgICAgaWYgKCFyZXNvbHZlT2JqZWN0VVJMKSB7XG4gICAgICAgIHJlc29sdmVPYmplY3RVUkwgPSByZXF1aXJlKCdidWZmZXInKS5yZXNvbHZlT2JqZWN0VVJMXG4gICAgICB9XG5cbiAgICAgIC8vIDEuIExldCBibG9iVVJMRW50cnkgYmUgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIGJsb2IgVVJMIGVudHJ5LlxuICAgICAgY29uc3QgYmxvYlVSTEVudHJ5ID0gcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdClcblxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvYmxvYi83YjBlYmFjY2M2MmI1NjZhMTk2NTM5NmU1YmU3YmIyYmMwNmY4NDFmL0ZpbGVBUEkvdXJsL3Jlc291cmNlcy9mZXRjaC10ZXN0cy5qcyNMNTItTDU2XG4gICAgICAvLyBCdWZmZXIucmVzb2x2ZU9iamVjdFVSTCBkb2VzIG5vdCBpZ25vcmUgVVJMIHF1ZXJpZXMuXG4gICAgICBpZiAoYmxvYlVSTEVudHJ5LnNlYXJjaC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdOZXR3b3JrRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGZldGNoIHJlc291cmNlLicpKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBibG9iVVJMRW50cnlPYmplY3QgPSByZXNvbHZlT2JqZWN0VVJMKGJsb2JVUkxFbnRyeS50b1N0cmluZygpKVxuXG4gICAgICAvLyAyLiBJZiByZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgbm90IGBHRVRgLCBibG9iVVJMRW50cnkgaXMgbnVsbCwgb3IgYmxvYlVSTEVudHJ5XHUyMDE5c1xuICAgICAgLy8gICAgb2JqZWN0IGlzIG5vdCBhIEJsb2Igb2JqZWN0LCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdHRVQnIHx8ICFpc0Jsb2JMaWtlKGJsb2JVUkxFbnRyeU9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdpbnZhbGlkIG1ldGhvZCcpKVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBMZXQgYm9keVdpdGhUeXBlIGJlIHRoZSByZXN1bHQgb2Ygc2FmZWx5IGV4dHJhY3RpbmcgYmxvYlVSTEVudHJ5XHUyMDE5cyBvYmplY3QuXG4gICAgICBjb25zdCBib2R5V2l0aFR5cGUgPSBzYWZlbHlFeHRyYWN0Qm9keShibG9iVVJMRW50cnlPYmplY3QpXG5cbiAgICAgIC8vIDQuIExldCBib2R5IGJlIGJvZHlXaXRoVHlwZVx1MjAxOXMgYm9keS5cbiAgICAgIGNvbnN0IGJvZHkgPSBib2R5V2l0aFR5cGVbMF1cblxuICAgICAgLy8gNS4gTGV0IGxlbmd0aCBiZSBib2R5XHUyMDE5cyBsZW5ndGgsIHNlcmlhbGl6ZWQgYW5kIGlzb21vcnBoaWMgZW5jb2RlZC5cbiAgICAgIGNvbnN0IGxlbmd0aCA9IGlzb21vcnBoaWNFbmNvZGUoYCR7Ym9keS5sZW5ndGh9YClcblxuICAgICAgLy8gNi4gTGV0IHR5cGUgYmUgYm9keVdpdGhUeXBlXHUyMDE5cyB0eXBlIGlmIGl0IGlzIG5vbi1udWxsOyBvdGhlcndpc2UgdGhlIGVtcHR5IGJ5dGUgc2VxdWVuY2UuXG4gICAgICBjb25zdCB0eXBlID0gYm9keVdpdGhUeXBlWzFdID8/ICcnXG5cbiAgICAgIC8vIDcuIFJldHVybiBhIG5ldyByZXNwb25zZSB3aG9zZSBzdGF0dXMgbWVzc2FnZSBpcyBgT0tgLCBoZWFkZXIgbGlzdCBpc1xuICAgICAgLy8gICAgXHUwMEFCIChgQ29udGVudC1MZW5ndGhgLCBsZW5ndGgpLCAoYENvbnRlbnQtVHlwZWAsIHR5cGUpIFx1MDBCQiwgYW5kIGJvZHkgaXMgYm9keS5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gbWFrZVJlc3BvbnNlKHtcbiAgICAgICAgc3RhdHVzVGV4dDogJ09LJyxcbiAgICAgICAgaGVhZGVyc0xpc3Q6IFtcbiAgICAgICAgICBbJ2NvbnRlbnQtbGVuZ3RoJywgeyBuYW1lOiAnQ29udGVudC1MZW5ndGgnLCB2YWx1ZTogbGVuZ3RoIH1dLFxuICAgICAgICAgIFsnY29udGVudC10eXBlJywgeyBuYW1lOiAnQ29udGVudC1UeXBlJywgdmFsdWU6IHR5cGUgfV1cbiAgICAgICAgXVxuICAgICAgfSlcblxuICAgICAgcmVzcG9uc2UuYm9keSA9IGJvZHlcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSlcbiAgICB9XG4gICAgY2FzZSAnZGF0YTonOiB7XG4gICAgICAvLyAxLiBMZXQgZGF0YVVSTFN0cnVjdCBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlXG4gICAgICAvLyAgICBkYXRhOiBVUkwgcHJvY2Vzc29yIG9uIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMLlxuICAgICAgY29uc3QgY3VycmVudFVSTCA9IHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpXG4gICAgICBjb25zdCBkYXRhVVJMU3RydWN0ID0gZGF0YVVSTFByb2Nlc3NvcihjdXJyZW50VVJMKVxuXG4gICAgICAvLyAyLiBJZiBkYXRhVVJMU3RydWN0IGlzIGZhaWx1cmUsIHRoZW4gcmV0dXJuIGFcbiAgICAgIC8vICAgIG5ldHdvcmsgZXJyb3IuXG4gICAgICBpZiAoZGF0YVVSTFN0cnVjdCA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcignZmFpbGVkIHRvIGZldGNoIHRoZSBkYXRhIFVSTCcpKVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBMZXQgbWltZVR5cGUgYmUgZGF0YVVSTFN0cnVjdFx1MjAxOXMgTUlNRSB0eXBlLCBzZXJpYWxpemVkLlxuICAgICAgY29uc3QgbWltZVR5cGUgPSBzZXJpYWxpemVBTWltZVR5cGUoZGF0YVVSTFN0cnVjdC5taW1lVHlwZSlcblxuICAgICAgLy8gNC4gUmV0dXJuIGEgcmVzcG9uc2Ugd2hvc2Ugc3RhdHVzIG1lc3NhZ2UgaXMgYE9LYCxcbiAgICAgIC8vICAgIGhlYWRlciBsaXN0IGlzIFx1MDBBQiAoYENvbnRlbnQtVHlwZWAsIG1pbWVUeXBlKSBcdTAwQkIsXG4gICAgICAvLyAgICBhbmQgYm9keSBpcyBkYXRhVVJMU3RydWN0XHUyMDE5cyBib2R5IGFzIGEgYm9keS5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZVJlc3BvbnNlKHtcbiAgICAgICAgc3RhdHVzVGV4dDogJ09LJyxcbiAgICAgICAgaGVhZGVyc0xpc3Q6IFtcbiAgICAgICAgICBbJ2NvbnRlbnQtdHlwZScsIHsgbmFtZTogJ0NvbnRlbnQtVHlwZScsIHZhbHVlOiBtaW1lVHlwZSB9XVxuICAgICAgICBdLFxuICAgICAgICBib2R5OiBzYWZlbHlFeHRyYWN0Qm9keShkYXRhVVJMU3RydWN0LmJvZHkpWzBdXG4gICAgICB9KSlcbiAgICB9XG4gICAgY2FzZSAnZmlsZTonOiB7XG4gICAgICAvLyBGb3Igbm93LCB1bmZvcnR1bmF0ZSBhcyBpdCBpcywgZmlsZSBVUkxzIGFyZSBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyLlxuICAgICAgLy8gV2hlbiBpbiBkb3VidCwgcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcignbm90IGltcGxlbWVudGVkLi4uIHlldC4uLicpKVxuICAgIH1cbiAgICBjYXNlICdodHRwOic6XG4gICAgY2FzZSAnaHR0cHM6Jzoge1xuICAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQIGZldGNoIGdpdmVuIGZldGNoUGFyYW1zLlxuXG4gICAgICByZXR1cm4gaHR0cEZldGNoKGZldGNoUGFyYW1zKVxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbWFrZU5ldHdvcmtFcnJvcihlcnIpKVxuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ3Vua25vd24gc2NoZW1lJykpXG4gICAgfVxuICB9XG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmaW5hbGl6ZS1yZXNwb25zZVxuZnVuY3Rpb24gZmluYWxpemVSZXNwb25zZSAoZmV0Y2hQYXJhbXMsIHJlc3BvbnNlKSB7XG4gIC8vIDEuIFNldCBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgZG9uZSBmbGFnLlxuICBmZXRjaFBhcmFtcy5yZXF1ZXN0LmRvbmUgPSB0cnVlXG5cbiAgLy8gMiwgSWYgZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVzcG9uc2UgZG9uZSBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIGZldGNoXG4gIC8vIHRhc2sgdG8gcnVuIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlc3BvbnNlIGRvbmUgZ2l2ZW4gcmVzcG9uc2UsIHdpdGhcbiAgLy8gZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gIGlmIChmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VEb25lICE9IG51bGwpIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VEb25lKHJlc3BvbnNlKSlcbiAgfVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZmV0Y2gtZmluYWxlXG5mdW5jdGlvbiBmZXRjaEZpbmFsZSAoZmV0Y2hQYXJhbXMsIHJlc3BvbnNlKSB7XG4gIC8vIDEuIElmIHJlc3BvbnNlIGlzIGEgbmV0d29yayBlcnJvciwgdGhlbjpcbiAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAvLyAxLiBTZXQgcmVzcG9uc2VcdTIwMTlzIFVSTCBsaXN0IHRvIFx1MDBBQiBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdFx1MjAxOXMgVVJMIGxpc3RbMF0gXHUwMEJCLlxuICAgIHJlc3BvbnNlLnVybExpc3QgPSBbZmV0Y2hQYXJhbXMucmVxdWVzdC51cmxMaXN0WzBdXVxuXG4gICAgLy8gMi4gU2V0IHJlc3BvbnNlXHUyMDE5cyB0aW1pbmcgaW5mbyB0byB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGFuIG9wYXF1ZSB0aW1pbmdcbiAgICAvLyBpbmZvIGZvciBmZXRjaFBhcmFtc1x1MjAxOXMgdGltaW5nIGluZm8uXG4gICAgcmVzcG9uc2UudGltaW5nSW5mbyA9IGNyZWF0ZU9wYXF1ZVRpbWluZ0luZm8oe1xuICAgICAgc3RhcnRUaW1lOiBmZXRjaFBhcmFtcy50aW1pbmdJbmZvLnN0YXJ0VGltZVxuICAgIH0pXG4gIH1cblxuICAvLyAyLiBMZXQgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5IGJlIHRoZSBmb2xsb3dpbmcgc3RlcHM6XG4gIGNvbnN0IHByb2Nlc3NSZXNwb25zZUVuZE9mQm9keSA9ICgpID0+IHtcbiAgICAvLyAxLiBTZXQgZmV0Y2hQYXJhbXNcdTIwMTlzIHJlcXVlc3RcdTIwMTlzIGRvbmUgZmxhZy5cbiAgICBmZXRjaFBhcmFtcy5yZXF1ZXN0LmRvbmUgPSB0cnVlXG5cbiAgICAvLyBJZiBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXNwb25zZSBlbmQtb2YtYm9keSBpcyBub3QgbnVsbCxcbiAgICAvLyB0aGVuIHF1ZXVlIGEgZmV0Y2ggdGFzayB0byBydW4gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVzcG9uc2VcbiAgICAvLyBlbmQtb2YtYm9keSBnaXZlbiByZXNwb25zZSB3aXRoIGZldGNoUGFyYW1zXHUyMDE5cyB0YXNrIGRlc3RpbmF0aW9uLlxuICAgIGlmIChmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkgIT0gbnVsbCkge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gZmV0Y2hQYXJhbXMucHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5KHJlc3BvbnNlKSlcbiAgICB9XG4gIH1cblxuICAvLyAzLiBJZiBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXNwb25zZSBpcyBub24tbnVsbCwgdGhlbiBxdWV1ZSBhIGZldGNoIHRhc2tcbiAgLy8gdG8gcnVuIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlc3BvbnNlIGdpdmVuIHJlc3BvbnNlLCB3aXRoIGZldGNoUGFyYW1zXHUyMDE5c1xuICAvLyB0YXNrIGRlc3RpbmF0aW9uLlxuICBpZiAoZmV0Y2hQYXJhbXMucHJvY2Vzc1Jlc3BvbnNlICE9IG51bGwpIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBmZXRjaFBhcmFtcy5wcm9jZXNzUmVzcG9uc2UocmVzcG9uc2UpKVxuICB9XG5cbiAgLy8gNC4gSWYgcmVzcG9uc2VcdTIwMTlzIGJvZHkgaXMgbnVsbCwgdGhlbiBydW4gcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5LlxuICBpZiAocmVzcG9uc2UuYm9keSA9PSBudWxsKSB7XG4gICAgcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5KClcbiAgfSBlbHNlIHtcbiAgLy8gNS4gT3RoZXJ3aXNlOlxuXG4gICAgLy8gMS4gTGV0IHRyYW5zZm9ybVN0cmVhbSBiZSBhIG5ldyBhIFRyYW5zZm9ybVN0cmVhbS5cblxuICAgIC8vIDIuIExldCBpZGVudGl0eVRyYW5zZm9ybUFsZ29yaXRobSBiZSBhbiBhbGdvcml0aG0gd2hpY2gsIGdpdmVuIGNodW5rLFxuICAgIC8vIGVucXVldWVzIGNodW5rIGluIHRyYW5zZm9ybVN0cmVhbS5cbiAgICBjb25zdCBpZGVudGl0eVRyYW5zZm9ybUFsZ29yaXRobSA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKVxuICAgIH1cblxuICAgIC8vIDMuIFNldCB1cCB0cmFuc2Zvcm1TdHJlYW0gd2l0aCB0cmFuc2Zvcm1BbGdvcml0aG0gc2V0IHRvIGlkZW50aXR5VHJhbnNmb3JtQWxnb3JpdGhtXG4gICAgLy8gYW5kIGZsdXNoQWxnb3JpdGhtIHNldCB0byBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkuXG4gICAgY29uc3QgdHJhbnNmb3JtU3RyZWFtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICBzdGFydCAoKSB7fSxcbiAgICAgIHRyYW5zZm9ybTogaWRlbnRpdHlUcmFuc2Zvcm1BbGdvcml0aG0sXG4gICAgICBmbHVzaDogcHJvY2Vzc1Jlc3BvbnNlRW5kT2ZCb2R5XG4gICAgfSwge1xuICAgICAgc2l6ZSAoKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gICAgfSwge1xuICAgICAgc2l6ZSAoKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIDQuIFNldCByZXNwb25zZVx1MjAxOXMgYm9keSB0byB0aGUgcmVzdWx0IG9mIHBpcGluZyByZXNwb25zZVx1MjAxOXMgYm9keSB0aHJvdWdoIHRyYW5zZm9ybVN0cmVhbS5cbiAgICByZXNwb25zZS5ib2R5ID0geyBzdHJlYW06IHJlc3BvbnNlLmJvZHkuc3RyZWFtLnBpcGVUaHJvdWdoKHRyYW5zZm9ybVN0cmVhbSkgfVxuICB9XG5cbiAgLy8gNi4gSWYgZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVzcG9uc2UgY29uc3VtZSBib2R5IGlzIG5vbi1udWxsLCB0aGVuOlxuICBpZiAoZmV0Y2hQYXJhbXMucHJvY2Vzc1Jlc3BvbnNlQ29uc3VtZUJvZHkgIT0gbnVsbCkge1xuICAgIC8vIDEuIExldCBwcm9jZXNzQm9keSBnaXZlbiBudWxsT3JCeXRlcyBiZSB0aGlzIHN0ZXA6IHJ1biBmZXRjaFBhcmFtc1x1MjAxOXNcbiAgICAvLyBwcm9jZXNzIHJlc3BvbnNlIGNvbnN1bWUgYm9keSBnaXZlbiByZXNwb25zZSBhbmQgbnVsbE9yQnl0ZXMuXG4gICAgY29uc3QgcHJvY2Vzc0JvZHkgPSAobnVsbE9yQnl0ZXMpID0+IGZldGNoUGFyYW1zLnByb2Nlc3NSZXNwb25zZUNvbnN1bWVCb2R5KHJlc3BvbnNlLCBudWxsT3JCeXRlcylcblxuICAgIC8vIDIuIExldCBwcm9jZXNzQm9keUVycm9yIGJlIHRoaXMgc3RlcDogcnVuIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzXG4gICAgLy8gcmVzcG9uc2UgY29uc3VtZSBib2R5IGdpdmVuIHJlc3BvbnNlIGFuZCBmYWlsdXJlLlxuICAgIGNvbnN0IHByb2Nlc3NCb2R5RXJyb3IgPSAoZmFpbHVyZSkgPT4gZmV0Y2hQYXJhbXMucHJvY2Vzc1Jlc3BvbnNlQ29uc3VtZUJvZHkocmVzcG9uc2UsIGZhaWx1cmUpXG5cbiAgICAvLyAzLiBJZiByZXNwb25zZVx1MjAxOXMgYm9keSBpcyBudWxsLCB0aGVuIHF1ZXVlIGEgZmV0Y2ggdGFzayB0byBydW4gcHJvY2Vzc0JvZHlcbiAgICAvLyBnaXZlbiBudWxsLCB3aXRoIGZldGNoUGFyYW1zXHUyMDE5cyB0YXNrIGRlc3RpbmF0aW9uLlxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09IG51bGwpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHByb2Nlc3NCb2R5KG51bGwpKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyA0LiBPdGhlcndpc2UsIGZ1bGx5IHJlYWQgcmVzcG9uc2VcdTIwMTlzIGJvZHkgZ2l2ZW4gcHJvY2Vzc0JvZHksIHByb2Nlc3NCb2R5RXJyb3IsXG4gICAgICAvLyBhbmQgZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gICAgICByZXR1cm4gZnVsbHlSZWFkQm9keShyZXNwb25zZS5ib2R5LCBwcm9jZXNzQm9keSwgcHJvY2Vzc0JvZHlFcnJvcilcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtZmV0Y2hcbmFzeW5jIGZ1bmN0aW9uIGh0dHBGZXRjaCAoZmV0Y2hQYXJhbXMpIHtcbiAgLy8gMS4gTGV0IHJlcXVlc3QgYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHJlcXVlc3QuXG4gIGNvbnN0IHJlcXVlc3QgPSBmZXRjaFBhcmFtcy5yZXF1ZXN0XG5cbiAgLy8gMi4gTGV0IHJlc3BvbnNlIGJlIG51bGwuXG4gIGxldCByZXNwb25zZSA9IG51bGxcblxuICAvLyAzLiBMZXQgYWN0dWFsUmVzcG9uc2UgYmUgbnVsbC5cbiAgbGV0IGFjdHVhbFJlc3BvbnNlID0gbnVsbFxuXG4gIC8vIDQuIExldCB0aW1pbmdJbmZvIGJlIGZldGNoUGFyYW1zXHUyMDE5cyB0aW1pbmcgaW5mby5cbiAgY29uc3QgdGltaW5nSW5mbyA9IGZldGNoUGFyYW1zLnRpbWluZ0luZm9cblxuICAvLyA1LiBJZiByZXF1ZXN0XHUyMDE5cyBzZXJ2aWNlLXdvcmtlcnMgbW9kZSBpcyBcImFsbFwiLCB0aGVuOlxuICBpZiAocmVxdWVzdC5zZXJ2aWNlV29ya2VycyA9PT0gJ2FsbCcpIHtcbiAgICAvLyBUT0RPXG4gIH1cblxuICAvLyA2LiBJZiByZXNwb25zZSBpcyBudWxsLCB0aGVuOlxuICBpZiAocmVzcG9uc2UgPT09IG51bGwpIHtcbiAgICAvLyAxLiBJZiBtYWtlQ09SU1ByZWZsaWdodCBpcyB0cnVlIGFuZCBvbmUgb2YgdGhlc2UgY29uZGl0aW9ucyBpcyB0cnVlOlxuICAgIC8vIFRPRE9cblxuICAgIC8vIDIuIElmIHJlcXVlc3RcdTIwMTlzIHJlZGlyZWN0IG1vZGUgaXMgXCJmb2xsb3dcIiwgdGhlbiBzZXQgcmVxdWVzdFx1MjAxOXNcbiAgICAvLyBzZXJ2aWNlLXdvcmtlcnMgbW9kZSB0byBcIm5vbmVcIi5cbiAgICBpZiAocmVxdWVzdC5yZWRpcmVjdCA9PT0gJ2ZvbGxvdycpIHtcbiAgICAgIHJlcXVlc3Quc2VydmljZVdvcmtlcnMgPSAnbm9uZSdcbiAgICB9XG5cbiAgICAvLyAzLiBTZXQgcmVzcG9uc2UgYW5kIGFjdHVhbFJlc3BvbnNlIHRvIHRoZSByZXN1bHQgb2YgcnVubmluZ1xuICAgIC8vIEhUVFAtbmV0d29yay1vci1jYWNoZSBmZXRjaCBnaXZlbiBmZXRjaFBhcmFtcy5cbiAgICBhY3R1YWxSZXNwb25zZSA9IHJlc3BvbnNlID0gYXdhaXQgaHR0cE5ldHdvcmtPckNhY2hlRmV0Y2goZmV0Y2hQYXJhbXMpXG5cbiAgICAvLyA0LiBJZiByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBpcyBcImNvcnNcIiBhbmQgYSBDT1JTIGNoZWNrXG4gICAgLy8gZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHJldHVybnMgZmFpbHVyZSwgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICAgIGlmIChcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ2NvcnMnICYmXG4gICAgICBjb3JzQ2hlY2socmVxdWVzdCwgcmVzcG9uc2UpID09PSAnZmFpbHVyZSdcbiAgICApIHtcbiAgICAgIHJldHVybiBtYWtlTmV0d29ya0Vycm9yKCdjb3JzIGZhaWx1cmUnKVxuICAgIH1cblxuICAgIC8vIDUuIElmIHRoZSBUQU8gY2hlY2sgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHJldHVybnMgZmFpbHVyZSwgdGhlbiBzZXRcbiAgICAvLyByZXF1ZXN0XHUyMDE5cyB0aW1pbmcgYWxsb3cgZmFpbGVkIGZsYWcuXG4gICAgaWYgKFRBT0NoZWNrKHJlcXVlc3QsIHJlc3BvbnNlKSA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICByZXF1ZXN0LnRpbWluZ0FsbG93RmFpbGVkID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8vIDcuIElmIGVpdGhlciByZXF1ZXN0XHUyMDE5cyByZXNwb25zZSB0YWludGluZyBvciByZXNwb25zZVx1MjAxOXMgdHlwZVxuICAvLyBpcyBcIm9wYXF1ZVwiLCBhbmQgdGhlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBwb2xpY3kgY2hlY2sgd2l0aFxuICAvLyByZXF1ZXN0XHUyMDE5cyBvcmlnaW4sIHJlcXVlc3RcdTIwMTlzIGNsaWVudCwgcmVxdWVzdFx1MjAxOXMgZGVzdGluYXRpb24sXG4gIC8vIGFuZCBhY3R1YWxSZXNwb25zZSByZXR1cm5zIGJsb2NrZWQsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKFxuICAgIChyZXF1ZXN0LnJlc3BvbnNlVGFpbnRpbmcgPT09ICdvcGFxdWUnIHx8IHJlc3BvbnNlLnR5cGUgPT09ICdvcGFxdWUnKSAmJlxuICAgIGNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDaGVjayhcbiAgICAgIHJlcXVlc3Qub3JpZ2luLFxuICAgICAgcmVxdWVzdC5jbGllbnQsXG4gICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uLFxuICAgICAgYWN0dWFsUmVzcG9uc2VcbiAgICApID09PSAnYmxvY2tlZCdcbiAgKSB7XG4gICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ2Jsb2NrZWQnKVxuICB9XG5cbiAgLy8gOC4gSWYgYWN0dWFsUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBhIHJlZGlyZWN0IHN0YXR1cywgdGhlbjpcbiAgaWYgKHJlZGlyZWN0U3RhdHVzU2V0LmhhcyhhY3R1YWxSZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgLy8gMS4gSWYgYWN0dWFsUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyBub3QgMzAzLCByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vdCBudWxsLFxuICAgIC8vIGFuZCB0aGUgY29ubmVjdGlvbiB1c2VzIEhUVFAvMiwgdGhlbiB1c2VyIGFnZW50cyBtYXksIGFuZCBhcmUgZXZlblxuICAgIC8vIGVuY291cmFnZWQgdG8sIHRyYW5zbWl0IGFuIFJTVF9TVFJFQU0gZnJhbWUuXG4gICAgLy8gU2VlLCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2ZldGNoL2lzc3Vlcy8xMjg4XG4gICAgaWYgKHJlcXVlc3QucmVkaXJlY3QgIT09ICdtYW51YWwnKSB7XG4gICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbm5lY3Rpb24uZGVzdHJveSgpXG4gICAgfVxuXG4gICAgLy8gMi4gU3dpdGNoIG9uIHJlcXVlc3RcdTIwMTlzIHJlZGlyZWN0IG1vZGU6XG4gICAgaWYgKHJlcXVlc3QucmVkaXJlY3QgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIFNldCByZXNwb25zZSB0byBhIG5ldHdvcmsgZXJyb3IuXG4gICAgICByZXNwb25zZSA9IG1ha2VOZXR3b3JrRXJyb3IoJ3VuZXhwZWN0ZWQgcmVkaXJlY3QnKVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5yZWRpcmVjdCA9PT0gJ21hbnVhbCcpIHtcbiAgICAgIC8vIFNldCByZXNwb25zZSB0byBhbiBvcGFxdWUtcmVkaXJlY3QgZmlsdGVyZWQgcmVzcG9uc2Ugd2hvc2UgaW50ZXJuYWxcbiAgICAgIC8vIHJlc3BvbnNlIGlzIGFjdHVhbFJlc3BvbnNlLlxuICAgICAgLy8gTk9URShzcGVjKTogT24gdGhlIHdlYiB0aGlzIHdvdWxkIHJldHVybiBhbiBgb3BhcXVlcmVkaXJlY3RgIHJlc3BvbnNlLFxuICAgICAgLy8gYnV0IHRoYXQgZG9lc24ndCBtYWtlIHNlbnNlIHNlcnZlciBzaWRlLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8xMTkzLlxuICAgICAgcmVzcG9uc2UgPSBhY3R1YWxSZXNwb25zZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5yZWRpcmVjdCA9PT0gJ2ZvbGxvdycpIHtcbiAgICAgIC8vIFNldCByZXNwb25zZSB0byB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgSFRUUC1yZWRpcmVjdCBmZXRjaCBnaXZlblxuICAgICAgLy8gZmV0Y2hQYXJhbXMgYW5kIHJlc3BvbnNlLlxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBodHRwUmVkaXJlY3RGZXRjaChmZXRjaFBhcmFtcywgcmVzcG9uc2UpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChmYWxzZSlcbiAgICB9XG4gIH1cblxuICAvLyA5LiBTZXQgcmVzcG9uc2VcdTIwMTlzIHRpbWluZyBpbmZvIHRvIHRpbWluZ0luZm8uXG4gIHJlc3BvbnNlLnRpbWluZ0luZm8gPSB0aW1pbmdJbmZvXG5cbiAgLy8gMTAuIFJldHVybiByZXNwb25zZS5cbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLXJlZGlyZWN0LWZldGNoXG5mdW5jdGlvbiBodHRwUmVkaXJlY3RGZXRjaCAoZmV0Y2hQYXJhbXMsIHJlc3BvbnNlKSB7XG4gIC8vIDEuIExldCByZXF1ZXN0IGJlIGZldGNoUGFyYW1zXHUyMDE5cyByZXF1ZXN0LlxuICBjb25zdCByZXF1ZXN0ID0gZmV0Y2hQYXJhbXMucmVxdWVzdFxuXG4gIC8vIDIuIExldCBhY3R1YWxSZXNwb25zZSBiZSByZXNwb25zZSwgaWYgcmVzcG9uc2UgaXMgbm90IGEgZmlsdGVyZWQgcmVzcG9uc2UsXG4gIC8vIGFuZCByZXNwb25zZVx1MjAxOXMgaW50ZXJuYWwgcmVzcG9uc2Ugb3RoZXJ3aXNlLlxuICBjb25zdCBhY3R1YWxSZXNwb25zZSA9IHJlc3BvbnNlLmludGVybmFsUmVzcG9uc2VcbiAgICA/IHJlc3BvbnNlLmludGVybmFsUmVzcG9uc2VcbiAgICA6IHJlc3BvbnNlXG5cbiAgLy8gMy4gTGV0IGxvY2F0aW9uVVJMIGJlIGFjdHVhbFJlc3BvbnNlXHUyMDE5cyBsb2NhdGlvbiBVUkwgZ2l2ZW4gcmVxdWVzdFx1MjAxOXMgY3VycmVudFxuICAvLyBVUkxcdTIwMTlzIGZyYWdtZW50LlxuICBsZXQgbG9jYXRpb25VUkxcblxuICB0cnkge1xuICAgIGxvY2F0aW9uVVJMID0gcmVzcG9uc2VMb2NhdGlvblVSTChcbiAgICAgIGFjdHVhbFJlc3BvbnNlLFxuICAgICAgcmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdCkuaGFzaFxuICAgIClcblxuICAgIC8vIDQuIElmIGxvY2F0aW9uVVJMIGlzIG51bGwsIHRoZW4gcmV0dXJuIHJlc3BvbnNlLlxuICAgIGlmIChsb2NhdGlvblVSTCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIDUuIElmIGxvY2F0aW9uVVJMIGlzIGZhaWx1cmUsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoZXJyKSlcbiAgfVxuXG4gIC8vIDYuIElmIGxvY2F0aW9uVVJMXHUyMDE5cyBzY2hlbWUgaXMgbm90IGFuIEhUVFAoUykgc2NoZW1lLCB0aGVuIHJldHVybiBhIG5ldHdvcmtcbiAgLy8gZXJyb3IuXG4gIGlmICghdXJsSXNIdHRwSHR0cHNTY2hlbWUobG9jYXRpb25VUkwpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdVUkwgc2NoZW1lIG11c3QgYmUgYSBIVFRQKFMpIHNjaGVtZScpKVxuICB9XG5cbiAgLy8gNy4gSWYgcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgY291bnQgaXMgMjAsIHRoZW4gcmV0dXJuIGEgbmV0d29yayBlcnJvci5cbiAgaWYgKHJlcXVlc3QucmVkaXJlY3RDb3VudCA9PT0gMjApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1ha2VOZXR3b3JrRXJyb3IoJ3JlZGlyZWN0IGNvdW50IGV4Y2VlZGVkJykpXG4gIH1cblxuICAvLyA4LiBJbmNyZWFzZSByZXF1ZXN0XHUyMDE5cyByZWRpcmVjdCBjb3VudCBieSAxLlxuICByZXF1ZXN0LnJlZGlyZWN0Q291bnQgKz0gMVxuXG4gIC8vIDkuIElmIHJlcXVlc3RcdTIwMTlzIG1vZGUgaXMgXCJjb3JzXCIsIGxvY2F0aW9uVVJMIGluY2x1ZGVzIGNyZWRlbnRpYWxzLCBhbmRcbiAgLy8gcmVxdWVzdFx1MjAxOXMgb3JpZ2luIGlzIG5vdCBzYW1lIG9yaWdpbiB3aXRoIGxvY2F0aW9uVVJMXHUyMDE5cyBvcmlnaW4sIHRoZW4gcmV0dXJuXG4gIC8vICBhIG5ldHdvcmsgZXJyb3IuXG4gIGlmIChcbiAgICByZXF1ZXN0Lm1vZGUgPT09ICdjb3JzJyAmJlxuICAgIChsb2NhdGlvblVSTC51c2VybmFtZSB8fCBsb2NhdGlvblVSTC5wYXNzd29yZCkgJiZcbiAgICAhc2FtZU9yaWdpbihyZXF1ZXN0LCBsb2NhdGlvblVSTClcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtYWtlTmV0d29ya0Vycm9yKCdjcm9zcyBvcmlnaW4gbm90IGFsbG93ZWQgZm9yIHJlcXVlc3QgbW9kZSBcImNvcnNcIicpKVxuICB9XG5cbiAgLy8gMTAuIElmIHJlcXVlc3RcdTIwMTlzIHJlc3BvbnNlIHRhaW50aW5nIGlzIFwiY29yc1wiIGFuZCBsb2NhdGlvblVSTCBpbmNsdWRlc1xuICAvLyBjcmVkZW50aWFscywgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuICBpZiAoXG4gICAgcmVxdWVzdC5yZXNwb25zZVRhaW50aW5nID09PSAnY29ycycgJiZcbiAgICAobG9jYXRpb25VUkwudXNlcm5hbWUgfHwgbG9jYXRpb25VUkwucGFzc3dvcmQpXG4gICkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcihcbiAgICAgICdVUkwgY2Fubm90IGNvbnRhaW4gY3JlZGVudGlhbHMgZm9yIHJlcXVlc3QgbW9kZSBcImNvcnNcIidcbiAgICApKVxuICB9XG5cbiAgLy8gMTEuIElmIGFjdHVhbFJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgbm90IDMwMywgcmVxdWVzdFx1MjAxOXMgYm9keSBpcyBub24tbnVsbCxcbiAgLy8gYW5kIHJlcXVlc3RcdTIwMTlzIGJvZHlcdTIwMTlzIHNvdXJjZSBpcyBudWxsLCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gIGlmIChcbiAgICBhY3R1YWxSZXNwb25zZS5zdGF0dXMgIT09IDMwMyAmJlxuICAgIHJlcXVlc3QuYm9keSAhPSBudWxsICYmXG4gICAgcmVxdWVzdC5ib2R5LnNvdXJjZSA9PSBudWxsXG4gICkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFrZU5ldHdvcmtFcnJvcigpKVxuICB9XG5cbiAgLy8gMTIuIElmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWVcbiAgLy8gLSBhY3R1YWxSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDMwMSBvciAzMDIgYW5kIHJlcXVlc3RcdTIwMTlzIG1ldGhvZCBpcyBgUE9TVGBcbiAgLy8gLSBhY3R1YWxSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDMwMyBhbmQgcmVxdWVzdFx1MjAxOXMgbWV0aG9kIGlzIG5vdCBgR0VUYCBvciBgSEVBRGBcbiAgaWYgKFxuICAgIChbMzAxLCAzMDJdLmluY2x1ZGVzKGFjdHVhbFJlc3BvbnNlLnN0YXR1cykgJiYgcmVxdWVzdC5tZXRob2QgPT09ICdQT1NUJykgfHxcbiAgICAoYWN0dWFsUmVzcG9uc2Uuc3RhdHVzID09PSAzMDMgJiZcbiAgICAgICFHRVRfT1JfSEVBRC5pbmNsdWRlcyhyZXF1ZXN0Lm1ldGhvZCkpXG4gICkge1xuICAgIC8vIHRoZW46XG4gICAgLy8gMS4gU2V0IHJlcXVlc3RcdTIwMTlzIG1ldGhvZCB0byBgR0VUYCBhbmQgcmVxdWVzdFx1MjAxOXMgYm9keSB0byBudWxsLlxuICAgIHJlcXVlc3QubWV0aG9kID0gJ0dFVCdcbiAgICByZXF1ZXN0LmJvZHkgPSBudWxsXG5cbiAgICAvLyAyLiBGb3IgZWFjaCBoZWFkZXJOYW1lIG9mIHJlcXVlc3QtYm9keS1oZWFkZXIgbmFtZSwgZGVsZXRlIGhlYWRlck5hbWUgZnJvbVxuICAgIC8vIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIGZvciAoY29uc3QgaGVhZGVyTmFtZSBvZiByZXF1ZXN0Qm9keUhlYWRlcikge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzTGlzdC5kZWxldGUoaGVhZGVyTmFtZSlcbiAgICB9XG4gIH1cblxuICAvLyAxMy4gSWYgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIG9yaWdpbiBpcyBub3Qgc2FtZSBvcmlnaW4gd2l0aCBsb2NhdGlvblVSTFx1MjAxOXNcbiAgLy8gICAgIG9yaWdpbiwgdGhlbiBmb3IgZWFjaCBoZWFkZXJOYW1lIG9mIENPUlMgbm9uLXdpbGRjYXJkIHJlcXVlc3QtaGVhZGVyIG5hbWUsXG4gIC8vICAgICBkZWxldGUgaGVhZGVyTmFtZSBmcm9tIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoIXNhbWVPcmlnaW4ocmVxdWVzdEN1cnJlbnRVUkwocmVxdWVzdCksIGxvY2F0aW9uVVJMKSkge1xuICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb3JzLW5vbi13aWxkY2FyZC1yZXF1ZXN0LWhlYWRlci1uYW1lXG4gICAgcmVxdWVzdC5oZWFkZXJzTGlzdC5kZWxldGUoJ2F1dGhvcml6YXRpb24nKVxuXG4gICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2F1dGhlbnRpY2F0aW9uLWVudHJpZXNcbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmRlbGV0ZSgncHJveHktYXV0aG9yaXphdGlvbicsIHRydWUpXG5cbiAgICAvLyBcIkNvb2tpZVwiIGFuZCBcIkhvc3RcIiBhcmUgZm9yYmlkZGVuIHJlcXVlc3QtaGVhZGVycywgd2hpY2ggdW5kaWNpIGRvZXNuJ3QgaW1wbGVtZW50LlxuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuZGVsZXRlKCdjb29raWUnKVxuICAgIHJlcXVlc3QuaGVhZGVyc0xpc3QuZGVsZXRlKCdob3N0JylcbiAgfVxuXG4gIC8vIDE0LiBJZiByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vbi1udWxsLCB0aGVuIHNldCByZXF1ZXN0XHUyMDE5cyBib2R5IHRvIHRoZSBmaXJzdCByZXR1cm5cbiAgLy8gdmFsdWUgb2Ygc2FmZWx5IGV4dHJhY3RpbmcgcmVxdWVzdFx1MjAxOXMgYm9keVx1MjAxOXMgc291cmNlLlxuICBpZiAocmVxdWVzdC5ib2R5ICE9IG51bGwpIHtcbiAgICBhc3NlcnQocmVxdWVzdC5ib2R5LnNvdXJjZSAhPSBudWxsKVxuICAgIHJlcXVlc3QuYm9keSA9IHNhZmVseUV4dHJhY3RCb2R5KHJlcXVlc3QuYm9keS5zb3VyY2UpWzBdXG4gIH1cblxuICAvLyAxNS4gTGV0IHRpbWluZ0luZm8gYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHRpbWluZyBpbmZvLlxuICBjb25zdCB0aW1pbmdJbmZvID0gZmV0Y2hQYXJhbXMudGltaW5nSW5mb1xuXG4gIC8vIDE2LiBTZXQgdGltaW5nSW5mb1x1MjAxOXMgcmVkaXJlY3QgZW5kIHRpbWUgYW5kIHBvc3QtcmVkaXJlY3Qgc3RhcnQgdGltZSB0byB0aGVcbiAgLy8gY29hcnNlbmVkIHNoYXJlZCBjdXJyZW50IHRpbWUgZ2l2ZW4gZmV0Y2hQYXJhbXNcdTIwMTlzIGNyb3NzLW9yaWdpbiBpc29sYXRlZFxuICAvLyBjYXBhYmlsaXR5LlxuICB0aW1pbmdJbmZvLnJlZGlyZWN0RW5kVGltZSA9IHRpbWluZ0luZm8ucG9zdFJlZGlyZWN0U3RhcnRUaW1lID1cbiAgICBjb2Fyc2VuZWRTaGFyZWRDdXJyZW50VGltZShmZXRjaFBhcmFtcy5jcm9zc09yaWdpbklzb2xhdGVkQ2FwYWJpbGl0eSlcblxuICAvLyAxNy4gSWYgdGltaW5nSW5mb1x1MjAxOXMgcmVkaXJlY3Qgc3RhcnQgdGltZSBpcyAwLCB0aGVuIHNldCB0aW1pbmdJbmZvXHUyMDE5c1xuICAvLyAgcmVkaXJlY3Qgc3RhcnQgdGltZSB0byB0aW1pbmdJbmZvXHUyMDE5cyBzdGFydCB0aW1lLlxuICBpZiAodGltaW5nSW5mby5yZWRpcmVjdFN0YXJ0VGltZSA9PT0gMCkge1xuICAgIHRpbWluZ0luZm8ucmVkaXJlY3RTdGFydFRpbWUgPSB0aW1pbmdJbmZvLnN0YXJ0VGltZVxuICB9XG5cbiAgLy8gMTguIEFwcGVuZCBsb2NhdGlvblVSTCB0byByZXF1ZXN0XHUyMDE5cyBVUkwgbGlzdC5cbiAgcmVxdWVzdC51cmxMaXN0LnB1c2gobG9jYXRpb25VUkwpXG5cbiAgLy8gMTkuIEludm9rZSBzZXQgcmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgcG9saWN5IG9uIHJlZGlyZWN0IG9uIHJlcXVlc3QgYW5kXG4gIC8vIGFjdHVhbFJlc3BvbnNlLlxuICBzZXRSZXF1ZXN0UmVmZXJyZXJQb2xpY3lPblJlZGlyZWN0KHJlcXVlc3QsIGFjdHVhbFJlc3BvbnNlKVxuXG4gIC8vIDIwLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBydW5uaW5nIG1haW4gZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMgYW5kIHRydWUuXG4gIHJldHVybiBtYWluRmV0Y2goZmV0Y2hQYXJhbXMsIHRydWUpXG59XG5cbi8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLW5ldHdvcmstb3ItY2FjaGUtZmV0Y2hcbmFzeW5jIGZ1bmN0aW9uIGh0dHBOZXR3b3JrT3JDYWNoZUZldGNoIChcbiAgZmV0Y2hQYXJhbXMsXG4gIGlzQXV0aGVudGljYXRpb25GZXRjaCA9IGZhbHNlLFxuICBpc05ld0Nvbm5lY3Rpb25GZXRjaCA9IGZhbHNlXG4pIHtcbiAgLy8gMS4gTGV0IHJlcXVlc3QgYmUgZmV0Y2hQYXJhbXNcdTIwMTlzIHJlcXVlc3QuXG4gIGNvbnN0IHJlcXVlc3QgPSBmZXRjaFBhcmFtcy5yZXF1ZXN0XG5cbiAgLy8gMi4gTGV0IGh0dHBGZXRjaFBhcmFtcyBiZSBudWxsLlxuICBsZXQgaHR0cEZldGNoUGFyYW1zID0gbnVsbFxuXG4gIC8vIDMuIExldCBodHRwUmVxdWVzdCBiZSBudWxsLlxuICBsZXQgaHR0cFJlcXVlc3QgPSBudWxsXG5cbiAgLy8gNC4gTGV0IHJlc3BvbnNlIGJlIG51bGwuXG4gIGxldCByZXNwb25zZSA9IG51bGxcblxuICAvLyA1LiBMZXQgc3RvcmVkUmVzcG9uc2UgYmUgbnVsbC5cbiAgLy8gVE9ETzogY2FjaGVcblxuICAvLyA2LiBMZXQgaHR0cENhY2hlIGJlIG51bGwuXG4gIGNvbnN0IGh0dHBDYWNoZSA9IG51bGxcblxuICAvLyA3LiBMZXQgdGhlIHJldmFsaWRhdGluZ0ZsYWcgYmUgdW5zZXQuXG4gIGNvbnN0IHJldmFsaWRhdGluZ0ZsYWcgPSBmYWxzZVxuXG4gIC8vIDguIFJ1biB0aGVzZSBzdGVwcywgYnV0IGFib3J0IHdoZW4gdGhlIG9uZ29pbmcgZmV0Y2ggaXMgdGVybWluYXRlZDpcblxuICAvLyAgICAxLiBJZiByZXF1ZXN0XHUyMDE5cyB3aW5kb3cgaXMgXCJuby13aW5kb3dcIiBhbmQgcmVxdWVzdFx1MjAxOXMgcmVkaXJlY3QgbW9kZSBpc1xuICAvLyAgICBcImVycm9yXCIsIHRoZW4gc2V0IGh0dHBGZXRjaFBhcmFtcyB0byBmZXRjaFBhcmFtcyBhbmQgaHR0cFJlcXVlc3QgdG9cbiAgLy8gICAgcmVxdWVzdC5cbiAgaWYgKHJlcXVlc3Qud2luZG93ID09PSAnbm8td2luZG93JyAmJiByZXF1ZXN0LnJlZGlyZWN0ID09PSAnZXJyb3InKSB7XG4gICAgaHR0cEZldGNoUGFyYW1zID0gZmV0Y2hQYXJhbXNcbiAgICBodHRwUmVxdWVzdCA9IHJlcXVlc3RcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2U6XG5cbiAgICAvLyAxLiBTZXQgaHR0cFJlcXVlc3QgdG8gYSBjbG9uZSBvZiByZXF1ZXN0LlxuICAgIGh0dHBSZXF1ZXN0ID0gbWFrZVJlcXVlc3QocmVxdWVzdClcblxuICAgIC8vIDIuIFNldCBodHRwRmV0Y2hQYXJhbXMgdG8gYSBjb3B5IG9mIGZldGNoUGFyYW1zLlxuICAgIGh0dHBGZXRjaFBhcmFtcyA9IHsgLi4uZmV0Y2hQYXJhbXMgfVxuXG4gICAgLy8gMy4gU2V0IGh0dHBGZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdCB0byBodHRwUmVxdWVzdC5cbiAgICBodHRwRmV0Y2hQYXJhbXMucmVxdWVzdCA9IGh0dHBSZXF1ZXN0XG4gIH1cblxuICAvLyAgICAzLiBMZXQgaW5jbHVkZUNyZWRlbnRpYWxzIGJlIHRydWUgaWYgb25lIG9mXG4gIGNvbnN0IGluY2x1ZGVDcmVkZW50aWFscyA9XG4gICAgcmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnIHx8XG4gICAgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdzYW1lLW9yaWdpbicgJiZcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUYWludGluZyA9PT0gJ2Jhc2ljJylcblxuICAvLyAgICA0LiBMZXQgY29udGVudExlbmd0aCBiZSBodHRwUmVxdWVzdFx1MjAxOXMgYm9keVx1MjAxOXMgbGVuZ3RoLCBpZiBodHRwUmVxdWVzdFx1MjAxOXNcbiAgLy8gICAgYm9keSBpcyBub24tbnVsbDsgb3RoZXJ3aXNlIG51bGwuXG4gIGNvbnN0IGNvbnRlbnRMZW5ndGggPSBodHRwUmVxdWVzdC5ib2R5ID8gaHR0cFJlcXVlc3QuYm9keS5sZW5ndGggOiBudWxsXG5cbiAgLy8gICAgNS4gTGV0IGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSBiZSBudWxsLlxuICBsZXQgY29udGVudExlbmd0aEhlYWRlclZhbHVlID0gbnVsbFxuXG4gIC8vICAgIDYuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG51bGwgYW5kIGh0dHBSZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgYFBPU1RgIG9yXG4gIC8vICAgIGBQVVRgLCB0aGVuIHNldCBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgdG8gYDBgLlxuICBpZiAoXG4gICAgaHR0cFJlcXVlc3QuYm9keSA9PSBudWxsICYmXG4gICAgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKGh0dHBSZXF1ZXN0Lm1ldGhvZClcbiAgKSB7XG4gICAgY29udGVudExlbmd0aEhlYWRlclZhbHVlID0gJzAnXG4gIH1cblxuICAvLyAgICA3LiBJZiBjb250ZW50TGVuZ3RoIGlzIG5vbi1udWxsLCB0aGVuIHNldCBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgdG9cbiAgLy8gICAgY29udGVudExlbmd0aCwgc2VyaWFsaXplZCBhbmQgaXNvbW9ycGhpYyBlbmNvZGVkLlxuICBpZiAoY29udGVudExlbmd0aCAhPSBudWxsKSB7XG4gICAgY29udGVudExlbmd0aEhlYWRlclZhbHVlID0gaXNvbW9ycGhpY0VuY29kZShgJHtjb250ZW50TGVuZ3RofWApXG4gIH1cblxuICAvLyAgICA4LiBJZiBjb250ZW50TGVuZ3RoSGVhZGVyVmFsdWUgaXMgbm9uLW51bGwsIHRoZW4gYXBwZW5kXG4gIC8vICAgIGBDb250ZW50LUxlbmd0aGAvY29udGVudExlbmd0aEhlYWRlclZhbHVlIHRvIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXJcbiAgLy8gICAgbGlzdC5cbiAgaWYgKGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSAhPSBudWxsKSB7XG4gICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdjb250ZW50LWxlbmd0aCcsIGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSlcbiAgfVxuXG4gIC8vICAgIDkuIElmIGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSBpcyBub24tbnVsbCwgdGhlbiBhcHBlbmQgKGBDb250ZW50LUxlbmd0aGAsXG4gIC8vICAgIGNvbnRlbnRMZW5ndGhIZWFkZXJWYWx1ZSkgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuXG4gIC8vICAgIDEwLiBJZiBjb250ZW50TGVuZ3RoIGlzIG5vbi1udWxsIGFuZCBodHRwUmVxdWVzdFx1MjAxOXMga2VlcGFsaXZlIGlzIHRydWUsXG4gIC8vICAgIHRoZW46XG4gIGlmIChjb250ZW50TGVuZ3RoICE9IG51bGwgJiYgaHR0cFJlcXVlc3Qua2VlcGFsaXZlKSB7XG4gICAgLy8gTk9URToga2VlcGFsaXZlIGlzIGEgbm9vcCBvdXRzaWRlIG9mIGJyb3dzZXIgY29udGV4dC5cbiAgfVxuXG4gIC8vICAgIDExLiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIgaXMgYSBVUkwsIHRoZW4gYXBwZW5kXG4gIC8vICAgIGBSZWZlcmVyYC9odHRwUmVxdWVzdFx1MjAxOXMgcmVmZXJyZXIsIHNlcmlhbGl6ZWQgYW5kIGlzb21vcnBoaWMgZW5jb2RlZCxcbiAgLy8gICAgIHRvIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgaWYgKGh0dHBSZXF1ZXN0LnJlZmVycmVyIGluc3RhbmNlb2YgVVJMKSB7XG4gICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdyZWZlcmVyJywgaXNvbW9ycGhpY0VuY29kZShodHRwUmVxdWVzdC5yZWZlcnJlci5ocmVmKSlcbiAgfVxuXG4gIC8vICAgIDEyLiBBcHBlbmQgYSByZXF1ZXN0IGBPcmlnaW5gIGhlYWRlciBmb3IgaHR0cFJlcXVlc3QuXG4gIGFwcGVuZFJlcXVlc3RPcmlnaW5IZWFkZXIoaHR0cFJlcXVlc3QpXG5cbiAgLy8gICAgMTMuIEFwcGVuZCB0aGUgRmV0Y2ggbWV0YWRhdGEgaGVhZGVycyBmb3IgaHR0cFJlcXVlc3QuIFtGRVRDSC1NRVRBREFUQV1cbiAgYXBwZW5kRmV0Y2hNZXRhZGF0YShodHRwUmVxdWVzdClcblxuICAvLyAgICAxNC4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYFVzZXItQWdlbnRgLCB0aGVuXG4gIC8vICAgIHVzZXIgYWdlbnRzIHNob3VsZCBhcHBlbmQgYFVzZXItQWdlbnRgL2RlZmF1bHQgYFVzZXItQWdlbnRgIHZhbHVlIHRvXG4gIC8vICAgIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgaWYgKCFodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygndXNlci1hZ2VudCcpKSB7XG4gICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCd1c2VyLWFnZW50JywgdHlwZW9mIGVzYnVpbGREZXRlY3Rpb24gPT09ICd1bmRlZmluZWQnID8gJ3VuZGljaScgOiAnbm9kZScpXG4gIH1cblxuICAvLyAgICAxNS4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgaXMgXCJkZWZhdWx0XCIgYW5kIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXJcbiAgLy8gICAgbGlzdCBjb250YWlucyBgSWYtTW9kaWZpZWQtU2luY2VgLCBgSWYtTm9uZS1NYXRjaGAsXG4gIC8vICAgIGBJZi1Vbm1vZGlmaWVkLVNpbmNlYCwgYElmLU1hdGNoYCwgb3IgYElmLVJhbmdlYCwgdGhlbiBzZXRcbiAgLy8gICAgaHR0cFJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgdG8gXCJuby1zdG9yZVwiLlxuICBpZiAoXG4gICAgaHR0cFJlcXVlc3QuY2FjaGUgPT09ICdkZWZhdWx0JyAmJlxuICAgIChodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnaWYtbW9kaWZpZWQtc2luY2UnKSB8fFxuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2lmLW5vbmUtbWF0Y2gnKSB8fFxuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2lmLXVubW9kaWZpZWQtc2luY2UnKSB8fFxuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2lmLW1hdGNoJykgfHxcbiAgICAgIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdpZi1yYW5nZScpKVxuICApIHtcbiAgICBodHRwUmVxdWVzdC5jYWNoZSA9ICduby1zdG9yZSdcbiAgfVxuXG4gIC8vICAgIDE2LiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpcyBcIm5vLWNhY2hlXCIsIGh0dHBSZXF1ZXN0XHUyMDE5cyBwcmV2ZW50XG4gIC8vICAgIG5vLWNhY2hlIGNhY2hlLWNvbnRyb2wgaGVhZGVyIG1vZGlmaWNhdGlvbiBmbGFnIGlzIHVuc2V0LCBhbmRcbiAgLy8gICAgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYENhY2hlLUNvbnRyb2xgLCB0aGVuIGFwcGVuZFxuICAvLyAgICBgQ2FjaGUtQ29udHJvbGAvYG1heC1hZ2U9MGAgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICBpZiAoXG4gICAgaHR0cFJlcXVlc3QuY2FjaGUgPT09ICduby1jYWNoZScgJiZcbiAgICAhaHR0cFJlcXVlc3QucHJldmVudE5vQ2FjaGVDYWNoZUNvbnRyb2xIZWFkZXJNb2RpZmljYXRpb24gJiZcbiAgICAhaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ2NhY2hlLWNvbnRyb2wnKVxuICApIHtcbiAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2NhY2hlLWNvbnRyb2wnLCAnbWF4LWFnZT0wJylcbiAgfVxuXG4gIC8vICAgIDE3LiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpcyBcIm5vLXN0b3JlXCIgb3IgXCJyZWxvYWRcIiwgdGhlbjpcbiAgaWYgKGh0dHBSZXF1ZXN0LmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IGh0dHBSZXF1ZXN0LmNhY2hlID09PSAncmVsb2FkJykge1xuICAgIC8vIDEuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBQcmFnbWFgLCB0aGVuIGFwcGVuZFxuICAgIC8vIGBQcmFnbWFgL2Buby1jYWNoZWAgdG8gaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAgIGlmICghaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuY29udGFpbnMoJ3ByYWdtYScpKSB7XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ3ByYWdtYScsICduby1jYWNoZScpXG4gICAgfVxuXG4gICAgLy8gMi4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGRvZXMgbm90IGNvbnRhaW4gYENhY2hlLUNvbnRyb2xgLFxuICAgIC8vIHRoZW4gYXBwZW5kIGBDYWNoZS1Db250cm9sYC9gbm8tY2FjaGVgIHRvIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgICBpZiAoIWh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdjYWNoZS1jb250cm9sJykpIHtcbiAgICAgIGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnY2FjaGUtY29udHJvbCcsICduby1jYWNoZScpXG4gICAgfVxuICB9XG5cbiAgLy8gICAgMTguIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBjb250YWlucyBgUmFuZ2VgLCB0aGVuIGFwcGVuZFxuICAvLyAgICBgQWNjZXB0LUVuY29kaW5nYC9gaWRlbnRpdHlgIHRvIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cbiAgaWYgKGh0dHBSZXF1ZXN0LmhlYWRlcnNMaXN0LmNvbnRhaW5zKCdyYW5nZScpKSB7XG4gICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdhY2NlcHQtZW5jb2RpbmcnLCAnaWRlbnRpdHknKVxuICB9XG5cbiAgLy8gICAgMTkuIE1vZGlmeSBodHRwUmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgcGVyIEhUVFAuIERvIG5vdCBhcHBlbmQgYSBnaXZlblxuICAvLyAgICBoZWFkZXIgaWYgaHR0cFJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0IGNvbnRhaW5zIHRoYXQgaGVhZGVyXHUyMDE5cyBuYW1lLlxuICAvLyAgICBUT0RPOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2ZldGNoL2lzc3Vlcy8xMjg1I2lzc3VlY29tbWVudC04OTY1NjAxMjlcbiAgaWYgKCFodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygnYWNjZXB0LWVuY29kaW5nJykpIHtcbiAgICBpZiAodXJsSGFzSHR0cHNTY2hlbWUocmVxdWVzdEN1cnJlbnRVUkwoaHR0cFJlcXVlc3QpKSkge1xuICAgICAgaHR0cFJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdhY2NlcHQtZW5jb2RpbmcnLCAnYnIsIGd6aXAsIGRlZmxhdGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ2FjY2VwdC1lbmNvZGluZycsICdnemlwLCBkZWZsYXRlJylcbiAgICB9XG4gIH1cblxuICBodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5kZWxldGUoJ2hvc3QnKVxuXG4gIC8vICAgIDIwLiBJZiBpbmNsdWRlQ3JlZGVudGlhbHMgaXMgdHJ1ZSwgdGhlbjpcbiAgaWYgKGluY2x1ZGVDcmVkZW50aWFscykge1xuICAgIC8vIDEuIElmIHRoZSB1c2VyIGFnZW50IGlzIG5vdCBjb25maWd1cmVkIHRvIGJsb2NrIGNvb2tpZXMgZm9yIGh0dHBSZXF1ZXN0XG4gICAgLy8gKHNlZSBzZWN0aW9uIDcgb2YgW0NPT0tJRVNdKSwgdGhlbjpcbiAgICAvLyBUT0RPOiBjcmVkZW50aWFsc1xuICAgIC8vIDIuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBBdXRob3JpemF0aW9uYCwgdGhlbjpcbiAgICAvLyBUT0RPOiBjcmVkZW50aWFsc1xuICB9XG5cbiAgLy8gICAgMjEuIElmIHRoZXJlXHUyMDE5cyBhIHByb3h5LWF1dGhlbnRpY2F0aW9uIGVudHJ5LCB1c2UgaXQgYXMgYXBwcm9wcmlhdGUuXG4gIC8vICAgIFRPRE86IHByb3h5LWF1dGhlbnRpY2F0aW9uXG5cbiAgLy8gICAgMjIuIFNldCBodHRwQ2FjaGUgdG8gdGhlIHJlc3VsdCBvZiBkZXRlcm1pbmluZyB0aGUgSFRUUCBjYWNoZVxuICAvLyAgICBwYXJ0aXRpb24sIGdpdmVuIGh0dHBSZXF1ZXN0LlxuICAvLyAgICBUT0RPOiBjYWNoZVxuXG4gIC8vICAgIDIzLiBJZiBodHRwQ2FjaGUgaXMgbnVsbCwgdGhlbiBzZXQgaHR0cFJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgdG9cbiAgLy8gICAgXCJuby1zdG9yZVwiLlxuICBpZiAoaHR0cENhY2hlID09IG51bGwpIHtcbiAgICBodHRwUmVxdWVzdC5jYWNoZSA9ICduby1zdG9yZSdcbiAgfVxuXG4gIC8vICAgIDI0LiBJZiBodHRwUmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpcyBuZWl0aGVyIFwibm8tc3RvcmVcIiBub3IgXCJyZWxvYWRcIixcbiAgLy8gICAgdGhlbjpcbiAgaWYgKGh0dHBSZXF1ZXN0Lm1vZGUgIT09ICduby1zdG9yZScgJiYgaHR0cFJlcXVlc3QubW9kZSAhPT0gJ3JlbG9hZCcpIHtcbiAgICAvLyBUT0RPOiBjYWNoZVxuICB9XG5cbiAgLy8gOS4gSWYgYWJvcnRlZCwgdGhlbiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJyb3IgZm9yIGZldGNoUGFyYW1zLlxuICAvLyBUT0RPXG5cbiAgLy8gMTAuIElmIHJlc3BvbnNlIGlzIG51bGwsIHRoZW46XG4gIGlmIChyZXNwb25zZSA9PSBudWxsKSB7XG4gICAgLy8gMS4gSWYgaHR0cFJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgaXMgXCJvbmx5LWlmLWNhY2hlZFwiLCB0aGVuIHJldHVybiBhXG4gICAgLy8gbmV0d29yayBlcnJvci5cbiAgICBpZiAoaHR0cFJlcXVlc3QubW9kZSA9PT0gJ29ubHktaWYtY2FjaGVkJykge1xuICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ29ubHkgaWYgY2FjaGVkJylcbiAgICB9XG5cbiAgICAvLyAyLiBMZXQgZm9yd2FyZFJlc3BvbnNlIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQLW5ldHdvcmsgZmV0Y2hcbiAgICAvLyBnaXZlbiBodHRwRmV0Y2hQYXJhbXMsIGluY2x1ZGVDcmVkZW50aWFscywgYW5kIGlzTmV3Q29ubmVjdGlvbkZldGNoLlxuICAgIGNvbnN0IGZvcndhcmRSZXNwb25zZSA9IGF3YWl0IGh0dHBOZXR3b3JrRmV0Y2goXG4gICAgICBodHRwRmV0Y2hQYXJhbXMsXG4gICAgICBpbmNsdWRlQ3JlZGVudGlhbHMsXG4gICAgICBpc05ld0Nvbm5lY3Rpb25GZXRjaFxuICAgIClcblxuICAgIC8vIDMuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBtZXRob2QgaXMgdW5zYWZlIGFuZCBmb3J3YXJkUmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpc1xuICAgIC8vIGluIHRoZSByYW5nZSAyMDAgdG8gMzk5LCBpbmNsdXNpdmUsIGludmFsaWRhdGUgYXBwcm9wcmlhdGUgc3RvcmVkXG4gICAgLy8gcmVzcG9uc2VzIGluIGh0dHBDYWNoZSwgYXMgcGVyIHRoZSBcIkludmFsaWRhdGlvblwiIGNoYXB0ZXIgb2YgSFRUUFxuICAgIC8vIENhY2hpbmcsIGFuZCBzZXQgc3RvcmVkUmVzcG9uc2UgdG8gbnVsbC4gW0hUVFAtQ0FDSElOR11cbiAgICBpZiAoXG4gICAgICAhc2FmZU1ldGhvZHNTZXQuaGFzKGh0dHBSZXF1ZXN0Lm1ldGhvZCkgJiZcbiAgICAgIGZvcndhcmRSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmXG4gICAgICBmb3J3YXJkUmVzcG9uc2Uuc3RhdHVzIDw9IDM5OVxuICAgICkge1xuICAgICAgLy8gVE9ETzogY2FjaGVcbiAgICB9XG5cbiAgICAvLyA0LiBJZiB0aGUgcmV2YWxpZGF0aW5nRmxhZyBpcyBzZXQgYW5kIGZvcndhcmRSZXNwb25zZVx1MjAxOXMgc3RhdHVzIGlzIDMwNCxcbiAgICAvLyB0aGVuOlxuICAgIGlmIChyZXZhbGlkYXRpbmdGbGFnICYmIGZvcndhcmRSZXNwb25zZS5zdGF0dXMgPT09IDMwNCkge1xuICAgICAgLy8gVE9ETzogY2FjaGVcbiAgICB9XG5cbiAgICAvLyA1LiBJZiByZXNwb25zZSBpcyBudWxsLCB0aGVuOlxuICAgIGlmIChyZXNwb25zZSA9PSBudWxsKSB7XG4gICAgICAvLyAxLiBTZXQgcmVzcG9uc2UgdG8gZm9yd2FyZFJlc3BvbnNlLlxuICAgICAgcmVzcG9uc2UgPSBmb3J3YXJkUmVzcG9uc2VcblxuICAgICAgLy8gMi4gU3RvcmUgaHR0cFJlcXVlc3QgYW5kIGZvcndhcmRSZXNwb25zZSBpbiBodHRwQ2FjaGUsIGFzIHBlciB0aGVcbiAgICAgIC8vIFwiU3RvcmluZyBSZXNwb25zZXMgaW4gQ2FjaGVzXCIgY2hhcHRlciBvZiBIVFRQIENhY2hpbmcuIFtIVFRQLUNBQ0hJTkddXG4gICAgICAvLyBUT0RPOiBjYWNoZVxuICAgIH1cbiAgfVxuXG4gIC8vIDExLiBTZXQgcmVzcG9uc2VcdTIwMTlzIFVSTCBsaXN0IHRvIGEgY2xvbmUgb2YgaHR0cFJlcXVlc3RcdTIwMTlzIFVSTCBsaXN0LlxuICByZXNwb25zZS51cmxMaXN0ID0gWy4uLmh0dHBSZXF1ZXN0LnVybExpc3RdXG5cbiAgLy8gMTIuIElmIGh0dHBSZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdCBjb250YWlucyBgUmFuZ2VgLCB0aGVuIHNldCByZXNwb25zZVx1MjAxOXNcbiAgLy8gcmFuZ2UtcmVxdWVzdGVkIGZsYWcuXG4gIGlmIChodHRwUmVxdWVzdC5oZWFkZXJzTGlzdC5jb250YWlucygncmFuZ2UnKSkge1xuICAgIHJlc3BvbnNlLnJhbmdlUmVxdWVzdGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gMTMuIFNldCByZXNwb25zZVx1MjAxOXMgcmVxdWVzdC1pbmNsdWRlcy1jcmVkZW50aWFscyB0byBpbmNsdWRlQ3JlZGVudGlhbHMuXG4gIHJlc3BvbnNlLnJlcXVlc3RJbmNsdWRlc0NyZWRlbnRpYWxzID0gaW5jbHVkZUNyZWRlbnRpYWxzXG5cbiAgLy8gMTQuIElmIHJlc3BvbnNlXHUyMDE5cyBzdGF0dXMgaXMgNDAxLCBodHRwUmVxdWVzdFx1MjAxOXMgcmVzcG9uc2UgdGFpbnRpbmcgaXMgbm90XG4gIC8vIFwiY29yc1wiLCBpbmNsdWRlQ3JlZGVudGlhbHMgaXMgdHJ1ZSwgYW5kIHJlcXVlc3RcdTIwMTlzIHdpbmRvdyBpcyBhbiBlbnZpcm9ubWVudFxuICAvLyBzZXR0aW5ncyBvYmplY3QsIHRoZW46XG4gIC8vIFRPRE9cblxuICAvLyAxNS4gSWYgcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyA0MDcsIHRoZW46XG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNykge1xuICAgIC8vIDEuIElmIHJlcXVlc3RcdTIwMTlzIHdpbmRvdyBpcyBcIm5vLXdpbmRvd1wiLCB0aGVuIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG4gICAgaWYgKHJlcXVlc3Qud2luZG93ID09PSAnbm8td2luZG93Jykge1xuICAgICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoKVxuICAgIH1cblxuICAgIC8vIDIuID8/P1xuXG4gICAgLy8gMy4gSWYgZmV0Y2hQYXJhbXMgaXMgY2FuY2VsZWQsIHRoZW4gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGVycm9yIGZvciBmZXRjaFBhcmFtcy5cbiAgICBpZiAoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICByZXR1cm4gbWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yKGZldGNoUGFyYW1zKVxuICAgIH1cblxuICAgIC8vIDQuIFByb21wdCB0aGUgZW5kIHVzZXIgYXMgYXBwcm9wcmlhdGUgaW4gcmVxdWVzdFx1MjAxOXMgd2luZG93IGFuZCBzdG9yZVxuICAgIC8vIHRoZSByZXN1bHQgYXMgYSBwcm94eS1hdXRoZW50aWNhdGlvbiBlbnRyeS4gW0hUVFAtQVVUSF1cbiAgICAvLyBUT0RPOiBJbnZva2Ugc29tZSBraW5kIG9mIGNhbGxiYWNrP1xuXG4gICAgLy8gNS4gU2V0IHJlc3BvbnNlIHRvIHRoZSByZXN1bHQgb2YgcnVubmluZyBIVFRQLW5ldHdvcmstb3ItY2FjaGUgZmV0Y2ggZ2l2ZW5cbiAgICAvLyBmZXRjaFBhcmFtcy5cbiAgICAvLyBUT0RPXG4gICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoJ3Byb3h5IGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIDE2LiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZVxuICBpZiAoXG4gICAgLy8gcmVzcG9uc2VcdTIwMTlzIHN0YXR1cyBpcyA0MjFcbiAgICByZXNwb25zZS5zdGF0dXMgPT09IDQyMSAmJlxuICAgIC8vIGlzTmV3Q29ubmVjdGlvbkZldGNoIGlzIGZhbHNlXG4gICAgIWlzTmV3Q29ubmVjdGlvbkZldGNoICYmXG4gICAgLy8gcmVxdWVzdFx1MjAxOXMgYm9keSBpcyBudWxsLCBvciByZXF1ZXN0XHUyMDE5cyBib2R5IGlzIG5vbi1udWxsIGFuZCByZXF1ZXN0XHUyMDE5cyBib2R5XHUyMDE5cyBzb3VyY2UgaXMgbm9uLW51bGxcbiAgICAocmVxdWVzdC5ib2R5ID09IG51bGwgfHwgcmVxdWVzdC5ib2R5LnNvdXJjZSAhPSBudWxsKVxuICApIHtcbiAgICAvLyB0aGVuOlxuXG4gICAgLy8gMS4gSWYgZmV0Y2hQYXJhbXMgaXMgY2FuY2VsZWQsIHRoZW4gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGVycm9yIGZvciBmZXRjaFBhcmFtcy5cbiAgICBpZiAoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICByZXR1cm4gbWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yKGZldGNoUGFyYW1zKVxuICAgIH1cblxuICAgIC8vIDIuIFNldCByZXNwb25zZSB0byB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgSFRUUC1uZXR3b3JrLW9yLWNhY2hlXG4gICAgLy8gZmV0Y2ggZ2l2ZW4gZmV0Y2hQYXJhbXMsIGlzQXV0aGVudGljYXRpb25GZXRjaCwgYW5kIHRydWUuXG5cbiAgICAvLyBUT0RPIChzcGVjKTogVGhlIHNwZWMgZG9lc24ndCBzcGVjaWZ5IHRoaXMgYnV0IHdlIG5lZWQgdG8gY2FuY2VsXG4gICAgLy8gdGhlIGFjdGl2ZSByZXNwb25zZSBiZWZvcmUgd2UgY2FuIHN0YXJ0IGEgbmV3IG9uZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2ZldGNoL2lzc3Vlcy8xMjkzXG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb25uZWN0aW9uLmRlc3Ryb3koKVxuXG4gICAgcmVzcG9uc2UgPSBhd2FpdCBodHRwTmV0d29ya09yQ2FjaGVGZXRjaChcbiAgICAgIGZldGNoUGFyYW1zLFxuICAgICAgaXNBdXRoZW50aWNhdGlvbkZldGNoLFxuICAgICAgdHJ1ZVxuICAgIClcbiAgfVxuXG4gIC8vIDE3LiBJZiBpc0F1dGhlbnRpY2F0aW9uRmV0Y2ggaXMgdHJ1ZSwgdGhlbiBjcmVhdGUgYW4gYXV0aGVudGljYXRpb24gZW50cnlcbiAgaWYgKGlzQXV0aGVudGljYXRpb25GZXRjaCkge1xuICAgIC8vIFRPRE9cbiAgfVxuXG4gIC8vIDE4LiBSZXR1cm4gcmVzcG9uc2UuXG4gIHJldHVybiByZXNwb25zZVxufVxuXG4vLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1uZXR3b3JrLWZldGNoXG5hc3luYyBmdW5jdGlvbiBodHRwTmV0d29ya0ZldGNoIChcbiAgZmV0Y2hQYXJhbXMsXG4gIGluY2x1ZGVDcmVkZW50aWFscyA9IGZhbHNlLFxuICBmb3JjZU5ld0Nvbm5lY3Rpb24gPSBmYWxzZVxuKSB7XG4gIGFzc2VydCghZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb25uZWN0aW9uIHx8IGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29ubmVjdGlvbi5kZXN0cm95ZWQpXG5cbiAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb25uZWN0aW9uID0ge1xuICAgIGFib3J0OiBudWxsLFxuICAgIGRlc3Ryb3llZDogZmFsc2UsXG4gICAgZGVzdHJveSAoZXJyKSB7XG4gICAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmFib3J0Py4oZXJyID8/IG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAxLiBMZXQgcmVxdWVzdCBiZSBmZXRjaFBhcmFtc1x1MjAxOXMgcmVxdWVzdC5cbiAgY29uc3QgcmVxdWVzdCA9IGZldGNoUGFyYW1zLnJlcXVlc3RcblxuICAvLyAyLiBMZXQgcmVzcG9uc2UgYmUgbnVsbC5cbiAgbGV0IHJlc3BvbnNlID0gbnVsbFxuXG4gIC8vIDMuIExldCB0aW1pbmdJbmZvIGJlIGZldGNoUGFyYW1zXHUyMDE5cyB0aW1pbmcgaW5mby5cbiAgY29uc3QgdGltaW5nSW5mbyA9IGZldGNoUGFyYW1zLnRpbWluZ0luZm9cblxuICAvLyA0LiBMZXQgaHR0cENhY2hlIGJlIHRoZSByZXN1bHQgb2YgZGV0ZXJtaW5pbmcgdGhlIEhUVFAgY2FjaGUgcGFydGl0aW9uLFxuICAvLyBnaXZlbiByZXF1ZXN0LlxuICAvLyBUT0RPOiBjYWNoZVxuICBjb25zdCBodHRwQ2FjaGUgPSBudWxsXG5cbiAgLy8gNS4gSWYgaHR0cENhY2hlIGlzIG51bGwsIHRoZW4gc2V0IHJlcXVlc3RcdTIwMTlzIGNhY2hlIG1vZGUgdG8gXCJuby1zdG9yZVwiLlxuICBpZiAoaHR0cENhY2hlID09IG51bGwpIHtcbiAgICByZXF1ZXN0LmNhY2hlID0gJ25vLXN0b3JlJ1xuICB9XG5cbiAgLy8gNi4gTGV0IG5ldHdvcmtQYXJ0aXRpb25LZXkgYmUgdGhlIHJlc3VsdCBvZiBkZXRlcm1pbmluZyB0aGUgbmV0d29ya1xuICAvLyBwYXJ0aXRpb24ga2V5IGdpdmVuIHJlcXVlc3QuXG4gIC8vIFRPRE9cblxuICAvLyA3LiBMZXQgbmV3Q29ubmVjdGlvbiBiZSBcInllc1wiIGlmIGZvcmNlTmV3Q29ubmVjdGlvbiBpcyB0cnVlOyBvdGhlcndpc2VcbiAgLy8gXCJub1wiLlxuICBjb25zdCBuZXdDb25uZWN0aW9uID0gZm9yY2VOZXdDb25uZWN0aW9uID8gJ3llcycgOiAnbm8nIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuICAvLyA4LiBTd2l0Y2ggb24gcmVxdWVzdFx1MjAxOXMgbW9kZTpcbiAgaWYgKHJlcXVlc3QubW9kZSA9PT0gJ3dlYnNvY2tldCcpIHtcbiAgICAvLyBMZXQgY29ubmVjdGlvbiBiZSB0aGUgcmVzdWx0IG9mIG9idGFpbmluZyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLFxuICAgIC8vIGdpdmVuIHJlcXVlc3RcdTIwMTlzIGN1cnJlbnQgVVJMLlxuICAgIC8vIFRPRE9cbiAgfSBlbHNlIHtcbiAgICAvLyBMZXQgY29ubmVjdGlvbiBiZSB0aGUgcmVzdWx0IG9mIG9idGFpbmluZyBhIGNvbm5lY3Rpb24sIGdpdmVuXG4gICAgLy8gbmV0d29ya1BhcnRpdGlvbktleSwgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkxcdTIwMTlzIG9yaWdpbixcbiAgICAvLyBpbmNsdWRlQ3JlZGVudGlhbHMsIGFuZCBmb3JjZU5ld0Nvbm5lY3Rpb24uXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgLy8gOS4gUnVuIHRoZXNlIHN0ZXBzLCBidXQgYWJvcnQgd2hlbiB0aGUgb25nb2luZyBmZXRjaCBpcyB0ZXJtaW5hdGVkOlxuXG4gIC8vICAgIDEuIElmIGNvbm5lY3Rpb24gaXMgZmFpbHVyZSwgdGhlbiByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuXG4gIC8vICAgIDIuIFNldCB0aW1pbmdJbmZvXHUyMDE5cyBmaW5hbCBjb25uZWN0aW9uIHRpbWluZyBpbmZvIHRvIHRoZSByZXN1bHQgb2ZcbiAgLy8gICAgY2FsbGluZyBjbGFtcCBhbmQgY29hcnNlbiBjb25uZWN0aW9uIHRpbWluZyBpbmZvIHdpdGggY29ubmVjdGlvblx1MjAxOXNcbiAgLy8gICAgdGltaW5nIGluZm8sIHRpbWluZ0luZm9cdTIwMTlzIHBvc3QtcmVkaXJlY3Qgc3RhcnQgdGltZSwgYW5kIGZldGNoUGFyYW1zXHUyMDE5c1xuICAvLyAgICBjcm9zcy1vcmlnaW4gaXNvbGF0ZWQgY2FwYWJpbGl0eS5cblxuICAvLyAgICAzLiBJZiBjb25uZWN0aW9uIGlzIG5vdCBhbiBIVFRQLzIgY29ubmVjdGlvbiwgcmVxdWVzdFx1MjAxOXMgYm9keSBpcyBub24tbnVsbCxcbiAgLy8gICAgYW5kIHJlcXVlc3RcdTIwMTlzIGJvZHlcdTIwMTlzIHNvdXJjZSBpcyBudWxsLCB0aGVuIGFwcGVuZCAoYFRyYW5zZmVyLUVuY29kaW5nYCxcbiAgLy8gICAgYGNodW5rZWRgKSB0byByZXF1ZXN0XHUyMDE5cyBoZWFkZXIgbGlzdC5cblxuICAvLyAgICA0LiBTZXQgdGltaW5nSW5mb1x1MjAxOXMgZmluYWwgbmV0d29yay1yZXF1ZXN0IHN0YXJ0IHRpbWUgdG8gdGhlIGNvYXJzZW5lZFxuICAvLyAgICBzaGFyZWQgY3VycmVudCB0aW1lIGdpdmVuIGZldGNoUGFyYW1zXHUyMDE5cyBjcm9zcy1vcmlnaW4gaXNvbGF0ZWRcbiAgLy8gICAgY2FwYWJpbGl0eS5cblxuICAvLyAgICA1LiBTZXQgcmVzcG9uc2UgdG8gdGhlIHJlc3VsdCBvZiBtYWtpbmcgYW4gSFRUUCByZXF1ZXN0IG92ZXIgY29ubmVjdGlvblxuICAvLyAgICB1c2luZyByZXF1ZXN0IHdpdGggdGhlIGZvbGxvd2luZyBjYXZlYXRzOlxuXG4gIC8vICAgICAgICAtIEZvbGxvdyB0aGUgcmVsZXZhbnQgcmVxdWlyZW1lbnRzIGZyb20gSFRUUC4gW0hUVFBdIFtIVFRQLVNFTUFOVElDU11cbiAgLy8gICAgICAgIFtIVFRQLUNPTkRdIFtIVFRQLUNBQ0hJTkddIFtIVFRQLUFVVEhdXG5cbiAgLy8gICAgICAgIC0gSWYgcmVxdWVzdFx1MjAxOXMgYm9keSBpcyBub24tbnVsbCwgYW5kIHJlcXVlc3RcdTIwMTlzIGJvZHlcdTIwMTlzIHNvdXJjZSBpcyBudWxsLFxuICAvLyAgICAgICAgdGhlbiB0aGUgdXNlciBhZ2VudCBtYXkgaGF2ZSBhIGJ1ZmZlciBvZiB1cCB0byA2NCBraWJpYnl0ZXMgYW5kIHN0b3JlXG4gIC8vICAgICAgICBhIHBhcnQgb2YgcmVxdWVzdFx1MjAxOXMgYm9keSBpbiB0aGF0IGJ1ZmZlci4gSWYgdGhlIHVzZXIgYWdlbnQgcmVhZHMgZnJvbVxuICAvLyAgICAgICAgcmVxdWVzdFx1MjAxOXMgYm9keSBiZXlvbmQgdGhhdCBidWZmZXJcdTIwMTlzIHNpemUgYW5kIHRoZSB1c2VyIGFnZW50IG5lZWRzIHRvXG4gIC8vICAgICAgICByZXNlbmQgcmVxdWVzdCwgdGhlbiBpbnN0ZWFkIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuXG5cbiAgLy8gICAgICAgIC0gU2V0IHRpbWluZ0luZm9cdTIwMTlzIGZpbmFsIG5ldHdvcmstcmVzcG9uc2Ugc3RhcnQgdGltZSB0byB0aGUgY29hcnNlbmVkXG4gIC8vICAgICAgICBzaGFyZWQgY3VycmVudCB0aW1lIGdpdmVuIGZldGNoUGFyYW1zXHUyMDE5cyBjcm9zcy1vcmlnaW4gaXNvbGF0ZWQgY2FwYWJpbGl0eSxcbiAgLy8gICAgICAgIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB1c2VyIGFnZW50XHUyMDE5cyBIVFRQIHBhcnNlciByZWNlaXZlcyB0aGUgZmlyc3QgYnl0ZVxuICAvLyAgICAgICAgb2YgdGhlIHJlc3BvbnNlIChlLmcuLCBmcmFtZSBoZWFkZXIgYnl0ZXMgZm9yIEhUVFAvMiBvciByZXNwb25zZSBzdGF0dXNcbiAgLy8gICAgICAgIGxpbmUgZm9yIEhUVFAvMS54KS5cblxuICAvLyAgICAgICAgLSBXYWl0IHVudGlsIGFsbCB0aGUgaGVhZGVycyBhcmUgdHJhbnNtaXR0ZWQuXG5cbiAgLy8gICAgICAgIC0gQW55IHJlc3BvbnNlcyB3aG9zZSBzdGF0dXMgaXMgaW4gdGhlIHJhbmdlIDEwMCB0byAxOTksIGluY2x1c2l2ZSxcbiAgLy8gICAgICAgIGFuZCBpcyBub3QgMTAxLCBhcmUgdG8gYmUgaWdub3JlZCwgZXhjZXB0IGZvciB0aGUgcHVycG9zZXMgb2Ygc2V0dGluZ1xuICAvLyAgICAgICAgdGltaW5nSW5mb1x1MjAxOXMgZmluYWwgbmV0d29yay1yZXNwb25zZSBzdGFydCB0aW1lIGFib3ZlLlxuXG4gIC8vICAgIC0gSWYgcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QgY29udGFpbnMgYFRyYW5zZmVyLUVuY29kaW5nYC9gY2h1bmtlZGAgYW5kXG4gIC8vICAgIHJlc3BvbnNlIGlzIHRyYW5zZmVycmVkIHZpYSBIVFRQLzEuMCBvciBvbGRlciwgdGhlbiByZXR1cm4gYSBuZXR3b3JrXG4gIC8vICAgIGVycm9yLlxuXG4gIC8vICAgIC0gSWYgdGhlIEhUVFAgcmVxdWVzdCByZXN1bHRzIGluIGEgVExTIGNsaWVudCBjZXJ0aWZpY2F0ZSBkaWFsb2csIHRoZW46XG5cbiAgLy8gICAgICAgIDEuIElmIHJlcXVlc3RcdTIwMTlzIHdpbmRvdyBpcyBhbiBlbnZpcm9ubWVudCBzZXR0aW5ncyBvYmplY3QsIG1ha2UgdGhlXG4gIC8vICAgICAgICBkaWFsb2cgYXZhaWxhYmxlIGluIHJlcXVlc3RcdTIwMTlzIHdpbmRvdy5cblxuICAvLyAgICAgICAgMi4gT3RoZXJ3aXNlLCByZXR1cm4gYSBuZXR3b3JrIGVycm9yLlxuXG4gIC8vIFRvIHRyYW5zbWl0IHJlcXVlc3RcdTIwMTlzIGJvZHkgYm9keSwgcnVuIHRoZXNlIHN0ZXBzOlxuICBsZXQgcmVxdWVzdEJvZHkgPSBudWxsXG4gIC8vIDEuIElmIGJvZHkgaXMgbnVsbCBhbmQgZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVxdWVzdCBlbmQtb2YtYm9keSBpc1xuICAvLyBub24tbnVsbCwgdGhlbiBxdWV1ZSBhIGZldGNoIHRhc2sgZ2l2ZW4gZmV0Y2hQYXJhbXNcdTIwMTlzIHByb2Nlc3MgcmVxdWVzdFxuICAvLyBlbmQtb2YtYm9keSBhbmQgZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gIGlmIChyZXF1ZXN0LmJvZHkgPT0gbnVsbCAmJiBmZXRjaFBhcmFtcy5wcm9jZXNzUmVxdWVzdEVuZE9mQm9keSkge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGZldGNoUGFyYW1zLnByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5KCkpXG4gIH0gZWxzZSBpZiAocmVxdWVzdC5ib2R5ICE9IG51bGwpIHtcbiAgICAvLyAyLiBPdGhlcndpc2UsIGlmIGJvZHkgaXMgbm9uLW51bGw6XG5cbiAgICAvLyAgICAxLiBMZXQgcHJvY2Vzc0JvZHlDaHVuayBnaXZlbiBieXRlcyBiZSB0aGVzZSBzdGVwczpcbiAgICBjb25zdCBwcm9jZXNzQm9keUNodW5rID0gYXN5bmMgZnVuY3Rpb24gKiAoYnl0ZXMpIHtcbiAgICAgIC8vIDEuIElmIHRoZSBvbmdvaW5nIGZldGNoIGlzIHRlcm1pbmF0ZWQsIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuXG4gICAgICBpZiAoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAyLiBSdW4gdGhpcyBzdGVwIGluIHBhcmFsbGVsOiB0cmFuc21pdCBieXRlcy5cbiAgICAgIHlpZWxkIGJ5dGVzXG5cbiAgICAgIC8vIDMuIElmIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlcXVlc3QgYm9keSBpcyBub24tbnVsbCwgdGhlbiBydW5cbiAgICAgIC8vIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlcXVlc3QgYm9keSBnaXZlbiBieXRlc1x1MjAxOXMgbGVuZ3RoLlxuICAgICAgZmV0Y2hQYXJhbXMucHJvY2Vzc1JlcXVlc3RCb2R5Q2h1bmtMZW5ndGg/LihieXRlcy5ieXRlTGVuZ3RoKVxuICAgIH1cblxuICAgIC8vIDIuIExldCBwcm9jZXNzRW5kT2ZCb2R5IGJlIHRoZXNlIHN0ZXBzOlxuICAgIGNvbnN0IHByb2Nlc3NFbmRPZkJvZHkgPSAoKSA9PiB7XG4gICAgICAvLyAxLiBJZiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZCwgdGhlbiBhYm9ydCB0aGVzZSBzdGVwcy5cbiAgICAgIGlmIChpc0NhbmNlbGxlZChmZXRjaFBhcmFtcykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGZldGNoUGFyYW1zXHUyMDE5cyBwcm9jZXNzIHJlcXVlc3QgZW5kLW9mLWJvZHkgaXMgbm9uLW51bGwsXG4gICAgICAvLyB0aGVuIHJ1biBmZXRjaFBhcmFtc1x1MjAxOXMgcHJvY2VzcyByZXF1ZXN0IGVuZC1vZi1ib2R5LlxuICAgICAgaWYgKGZldGNoUGFyYW1zLnByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5KSB7XG4gICAgICAgIGZldGNoUGFyYW1zLnByb2Nlc3NSZXF1ZXN0RW5kT2ZCb2R5KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzLiBMZXQgcHJvY2Vzc0JvZHlFcnJvciBnaXZlbiBlIGJlIHRoZXNlIHN0ZXBzOlxuICAgIGNvbnN0IHByb2Nlc3NCb2R5RXJyb3IgPSAoZSkgPT4ge1xuICAgICAgLy8gMS4gSWYgZmV0Y2hQYXJhbXMgaXMgY2FuY2VsZWQsIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuXG4gICAgICBpZiAoaXNDYW5jZWxsZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBlIGlzIGFuIFwiQWJvcnRFcnJvclwiIERPTUV4Y2VwdGlvbiwgdGhlbiBhYm9ydCBmZXRjaFBhcmFtc1x1MjAxOXMgY29udHJvbGxlci5cbiAgICAgIGlmIChlLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmFib3J0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIudGVybWluYXRlKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNC4gSW5jcmVtZW50YWxseSByZWFkIHJlcXVlc3RcdTIwMTlzIGJvZHkgZ2l2ZW4gcHJvY2Vzc0JvZHlDaHVuaywgcHJvY2Vzc0VuZE9mQm9keSxcbiAgICAvLyBwcm9jZXNzQm9keUVycm9yLCBhbmQgZmV0Y2hQYXJhbXNcdTIwMTlzIHRhc2sgZGVzdGluYXRpb24uXG4gICAgcmVxdWVzdEJvZHkgPSAoYXN5bmMgZnVuY3Rpb24gKiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGJ5dGVzIG9mIHJlcXVlc3QuYm9keS5zdHJlYW0pIHtcbiAgICAgICAgICB5aWVsZCAqIHByb2Nlc3NCb2R5Q2h1bmsoYnl0ZXMpXG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0VuZE9mQm9keSgpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcHJvY2Vzc0JvZHlFcnJvcihlcnIpXG4gICAgICB9XG4gICAgfSkoKVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBzb2NrZXQgaXMgb25seSBwcm92aWRlZCBmb3Igd2Vic29ja2V0c1xuICAgIGNvbnN0IHsgYm9keSwgc3RhdHVzLCBzdGF0dXNUZXh0LCBoZWFkZXJzTGlzdCwgc29ja2V0IH0gPSBhd2FpdCBkaXNwYXRjaCh7IGJvZHk6IHJlcXVlc3RCb2R5IH0pXG5cbiAgICBpZiAoc29ja2V0KSB7XG4gICAgICByZXNwb25zZSA9IG1ha2VSZXNwb25zZSh7IHN0YXR1cywgc3RhdHVzVGV4dCwgaGVhZGVyc0xpc3QsIHNvY2tldCB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGJvZHlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKClcbiAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIubmV4dCA9ICgpID0+IGl0ZXJhdG9yLm5leHQoKVxuXG4gICAgICByZXNwb25zZSA9IG1ha2VSZXNwb25zZSh7IHN0YXR1cywgc3RhdHVzVGV4dCwgaGVhZGVyc0xpc3QgfSlcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIDEwLiBJZiBhYm9ydGVkLCB0aGVuOlxuICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAvLyAxLiBJZiBjb25uZWN0aW9uIHVzZXMgSFRUUC8yLCB0aGVuIHRyYW5zbWl0IGFuIFJTVF9TVFJFQU0gZnJhbWUuXG4gICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbm5lY3Rpb24uZGVzdHJveSgpXG5cbiAgICAgIC8vIDIuIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBlcnJvciBmb3IgZmV0Y2hQYXJhbXMuXG4gICAgICByZXR1cm4gbWFrZUFwcHJvcHJpYXRlTmV0d29ya0Vycm9yKGZldGNoUGFyYW1zLCBlcnIpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VOZXR3b3JrRXJyb3IoZXJyKVxuICB9XG5cbiAgLy8gMTEuIExldCBwdWxsQWxnb3JpdGhtIGJlIGFuIGFjdGlvbiB0aGF0IHJlc3VtZXMgdGhlIG9uZ29pbmcgZmV0Y2hcbiAgLy8gaWYgaXQgaXMgc3VzcGVuZGVkLlxuICBjb25zdCBwdWxsQWxnb3JpdGhtID0gKCkgPT4ge1xuICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIucmVzdW1lKClcbiAgfVxuXG4gIC8vIDEyLiBMZXQgY2FuY2VsQWxnb3JpdGhtIGJlIGFuIGFsZ29yaXRobSB0aGF0IGFib3J0cyBmZXRjaFBhcmFtc1x1MjAxOXNcbiAgLy8gY29udHJvbGxlciB3aXRoIHJlYXNvbiwgZ2l2ZW4gcmVhc29uLlxuICBjb25zdCBjYW5jZWxBbGdvcml0aG0gPSAocmVhc29uKSA9PiB7XG4gICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5hYm9ydChyZWFzb24pXG4gIH1cblxuICAvLyAxMy4gTGV0IGhpZ2hXYXRlck1hcmsgYmUgYSBub24tbmVnYXRpdmUsIG5vbi1OYU4gbnVtYmVyLCBjaG9zZW4gYnlcbiAgLy8gdGhlIHVzZXIgYWdlbnQuXG4gIC8vIFRPRE9cblxuICAvLyAxNC4gTGV0IHNpemVBbGdvcml0aG0gYmUgYW4gYWxnb3JpdGhtIHRoYXQgYWNjZXB0cyBhIGNodW5rIG9iamVjdFxuICAvLyBhbmQgcmV0dXJucyBhIG5vbi1uZWdhdGl2ZSwgbm9uLU5hTiwgbm9uLWluZmluaXRlIG51bWJlciwgY2hvc2VuIGJ5IHRoZSB1c2VyIGFnZW50LlxuICAvLyBUT0RPXG5cbiAgLy8gMTUuIExldCBzdHJlYW0gYmUgYSBuZXcgUmVhZGFibGVTdHJlYW0uXG4gIC8vIDE2LiBTZXQgdXAgc3RyZWFtIHdpdGggcHVsbEFsZ29yaXRobSBzZXQgdG8gcHVsbEFsZ29yaXRobSxcbiAgLy8gY2FuY2VsQWxnb3JpdGhtIHNldCB0byBjYW5jZWxBbGdvcml0aG0sIGhpZ2hXYXRlck1hcmsgc2V0IHRvXG4gIC8vIGhpZ2hXYXRlck1hcmssIGFuZCBzaXplQWxnb3JpdGhtIHNldCB0byBzaXplQWxnb3JpdGhtLlxuICBpZiAoIVJlYWRhYmxlU3RyZWFtKSB7XG4gICAgUmVhZGFibGVTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0vd2ViJykuUmVhZGFibGVTdHJlYW1cbiAgfVxuXG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbShcbiAgICB7XG4gICAgICBhc3luYyBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyXG4gICAgICB9LFxuICAgICAgYXN5bmMgcHVsbCAoY29udHJvbGxlcikge1xuICAgICAgICBhd2FpdCBwdWxsQWxnb3JpdGhtKGNvbnRyb2xsZXIpXG4gICAgICB9LFxuICAgICAgYXN5bmMgY2FuY2VsIChyZWFzb24pIHtcbiAgICAgICAgYXdhaXQgY2FuY2VsQWxnb3JpdGhtKHJlYXNvbilcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGhpZ2hXYXRlck1hcms6IDAsXG4gICAgICBzaXplICgpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgICB9XG4gIClcblxuICAvLyAxNy4gUnVuIHRoZXNlIHN0ZXBzLCBidXQgYWJvcnQgd2hlbiB0aGUgb25nb2luZyBmZXRjaCBpcyB0ZXJtaW5hdGVkOlxuXG4gIC8vICAgIDEuIFNldCByZXNwb25zZVx1MjAxOXMgYm9keSB0byBhIG5ldyBib2R5IHdob3NlIHN0cmVhbSBpcyBzdHJlYW0uXG4gIHJlc3BvbnNlLmJvZHkgPSB7IHN0cmVhbSB9XG5cbiAgLy8gICAgMi4gSWYgcmVzcG9uc2UgaXMgbm90IGEgbmV0d29yayBlcnJvciBhbmQgcmVxdWVzdFx1MjAxOXMgY2FjaGUgbW9kZSBpc1xuICAvLyAgICBub3QgXCJuby1zdG9yZVwiLCB0aGVuIHVwZGF0ZSByZXNwb25zZSBpbiBodHRwQ2FjaGUgZm9yIHJlcXVlc3QuXG4gIC8vICAgIFRPRE9cblxuICAvLyAgICAzLiBJZiBpbmNsdWRlQ3JlZGVudGlhbHMgaXMgdHJ1ZSBhbmQgdGhlIHVzZXIgYWdlbnQgaXMgbm90IGNvbmZpZ3VyZWRcbiAgLy8gICAgdG8gYmxvY2sgY29va2llcyBmb3IgcmVxdWVzdCAoc2VlIHNlY3Rpb24gNyBvZiBbQ09PS0lFU10pLCB0aGVuIHJ1biB0aGVcbiAgLy8gICAgXCJzZXQtY29va2llLXN0cmluZ1wiIHBhcnNpbmcgYWxnb3JpdGhtIChzZWUgc2VjdGlvbiA1LjIgb2YgW0NPT0tJRVNdKSBvblxuICAvLyAgICB0aGUgdmFsdWUgb2YgZWFjaCBoZWFkZXIgd2hvc2UgbmFtZSBpcyBhIGJ5dGUtY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3JcbiAgLy8gICAgYFNldC1Db29raWVgIGluIHJlc3BvbnNlXHUyMDE5cyBoZWFkZXIgbGlzdCwgaWYgYW55LCBhbmQgcmVxdWVzdFx1MjAxOXMgY3VycmVudCBVUkwuXG4gIC8vICAgIFRPRE9cblxuICAvLyAxOC4gSWYgYWJvcnRlZCwgdGhlbjpcbiAgLy8gVE9ET1xuXG4gIC8vIDE5LiBSdW4gdGhlc2Ugc3RlcHMgaW4gcGFyYWxsZWw6XG5cbiAgLy8gICAgMS4gUnVuIHRoZXNlIHN0ZXBzLCBidXQgYWJvcnQgd2hlbiBmZXRjaFBhcmFtcyBpcyBjYW5jZWxlZDpcbiAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5vbigndGVybWluYXRlZCcsIG9uQWJvcnRlZClcbiAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5yZXN1bWUgPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gMS4gV2hpbGUgdHJ1ZVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyAxLTMuIFNlZSBvbkRhdGEuLi5cblxuICAgICAgLy8gNC4gU2V0IGJ5dGVzIHRvIHRoZSByZXN1bHQgb2YgaGFuZGxpbmcgY29udGVudCBjb2RpbmdzIGdpdmVuXG4gICAgICAvLyBjb2RpbmdzIGFuZCBieXRlcy5cbiAgICAgIGxldCBieXRlc1xuICAgICAgbGV0IGlzRmFpbHVyZVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5uZXh0KClcblxuICAgICAgICBpZiAoaXNBYm9ydGVkKGZldGNoUGFyYW1zKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBieXRlcyA9IGRvbmUgPyB1bmRlZmluZWQgOiB2YWx1ZVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChmZXRjaFBhcmFtcy5jb250cm9sbGVyLmVuZGVkICYmICF0aW1pbmdJbmZvLmVuY29kZWRCb2R5U2l6ZSkge1xuICAgICAgICAgIC8vIHpsaWIgZG9lc24ndCBsaWtlIGVtcHR5IHN0cmVhbXMuXG4gICAgICAgICAgYnl0ZXMgPSB1bmRlZmluZWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBieXRlcyA9IGVyclxuXG4gICAgICAgICAgLy8gZXJyIG1heSBiZSBwcm9wYWdhdGVkIGZyb20gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHJlYWRhYmxlc3RyZWFtLmNhbmNlbCxcbiAgICAgICAgICAvLyB3aGljaCBtaWdodCBub3QgYmUgYW4gZXJyb3IuIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2lzc3Vlcy8yMDA5XG4gICAgICAgICAgaXNGYWlsdXJlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChieXRlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIDIuIE90aGVyd2lzZSwgaWYgdGhlIGJ5dGVzIHRyYW5zbWlzc2lvbiBmb3IgcmVzcG9uc2VcdTIwMTlzIG1lc3NhZ2VcbiAgICAgICAgLy8gYm9keSBpcyBkb25lIG5vcm1hbGx5IGFuZCBzdHJlYW0gaXMgcmVhZGFibGUsIHRoZW4gY2xvc2VcbiAgICAgICAgLy8gc3RyZWFtLCBmaW5hbGl6ZSByZXNwb25zZSBmb3IgZmV0Y2hQYXJhbXMgYW5kIHJlc3BvbnNlLCBhbmRcbiAgICAgICAgLy8gYWJvcnQgdGhlc2UgaW4tcGFyYWxsZWwgc3RlcHMuXG4gICAgICAgIHJlYWRhYmxlU3RyZWFtQ2xvc2UoZmV0Y2hQYXJhbXMuY29udHJvbGxlci5jb250cm9sbGVyKVxuXG4gICAgICAgIGZpbmFsaXplUmVzcG9uc2UoZmV0Y2hQYXJhbXMsIHJlc3BvbnNlKVxuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyA1LiBJbmNyZWFzZSB0aW1pbmdJbmZvXHUyMDE5cyBkZWNvZGVkIGJvZHkgc2l6ZSBieSBieXRlc1x1MjAxOXMgbGVuZ3RoLlxuICAgICAgdGltaW5nSW5mby5kZWNvZGVkQm9keVNpemUgKz0gYnl0ZXM/LmJ5dGVMZW5ndGggPz8gMFxuXG4gICAgICAvLyA2LiBJZiBieXRlcyBpcyBmYWlsdXJlLCB0aGVuIHRlcm1pbmF0ZSBmZXRjaFBhcmFtc1x1MjAxOXMgY29udHJvbGxlci5cbiAgICAgIGlmIChpc0ZhaWx1cmUpIHtcbiAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci50ZXJtaW5hdGUoYnl0ZXMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyA3LiBFbnF1ZXVlIGEgVWludDhBcnJheSB3cmFwcGluZyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIGJ5dGVzXG4gICAgICAvLyBpbnRvIHN0cmVhbS5cbiAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGJ5dGVzKSlcblxuICAgICAgLy8gOC4gSWYgc3RyZWFtIGlzIGVycm9yZWQsIHRoZW4gdGVybWluYXRlIHRoZSBvbmdvaW5nIGZldGNoLlxuICAgICAgaWYgKGlzRXJyb3JlZChzdHJlYW0pKSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIudGVybWluYXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDkuIElmIHN0cmVhbSBkb2Vzblx1MjAxOXQgbmVlZCBtb3JlIGRhdGEgYXNrIHRoZSB1c2VyIGFnZW50IHRvIHN1c3BlbmRcbiAgICAgIC8vIHRoZSBvbmdvaW5nIGZldGNoLlxuICAgICAgaWYgKCFmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2xsZXIuZGVzaXJlZFNpemUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gICAgMi4gSWYgYWJvcnRlZCwgdGhlbjpcbiAgZnVuY3Rpb24gb25BYm9ydGVkIChyZWFzb24pIHtcbiAgICAvLyAyLiBJZiBmZXRjaFBhcmFtcyBpcyBhYm9ydGVkLCB0aGVuOlxuICAgIGlmIChpc0Fib3J0ZWQoZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAvLyAxLiBTZXQgcmVzcG9uc2VcdTIwMTlzIGFib3J0ZWQgZmxhZy5cbiAgICAgIHJlc3BvbnNlLmFib3J0ZWQgPSB0cnVlXG5cbiAgICAgIC8vIDIuIElmIHN0cmVhbSBpcyByZWFkYWJsZSwgdGhlbiBlcnJvciBzdHJlYW0gd2l0aCB0aGUgcmVzdWx0IG9mXG4gICAgICAvLyAgICBkZXNlcmlhbGl6ZSBhIHNlcmlhbGl6ZWQgYWJvcnQgcmVhc29uIGdpdmVuIGZldGNoUGFyYW1zXHUyMDE5c1xuICAgICAgLy8gICAgY29udHJvbGxlclx1MjAxOXMgc2VyaWFsaXplZCBhYm9ydCByZWFzb24gYW5kIGFuXG4gICAgICAvLyAgICBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHJlYWxtLlxuICAgICAgaWYgKGlzUmVhZGFibGUoc3RyZWFtKSkge1xuICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2xsZXIuZXJyb3IoXG4gICAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci5zZXJpYWxpemVkQWJvcnRSZWFzb25cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyAzLiBPdGhlcndpc2UsIGlmIHN0cmVhbSBpcyByZWFkYWJsZSwgZXJyb3Igc3RyZWFtIHdpdGggYSBUeXBlRXJyb3IuXG4gICAgICBpZiAoaXNSZWFkYWJsZShzdHJlYW0pKSB7XG4gICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbGxlci5lcnJvcihuZXcgVHlwZUVycm9yKCd0ZXJtaW5hdGVkJywge1xuICAgICAgICAgIGNhdXNlOiBpc0Vycm9yTGlrZShyZWFzb24pID8gcmVhc29uIDogdW5kZWZpbmVkXG4gICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDQuIElmIGNvbm5lY3Rpb24gdXNlcyBIVFRQLzIsIHRoZW4gdHJhbnNtaXQgYW4gUlNUX1NUUkVBTSBmcmFtZS5cbiAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSB1c2VyIGFnZW50IHNob3VsZCBjbG9zZSBjb25uZWN0aW9uIHVubGVzcyBpdCB3b3VsZCBiZSBiYWQgZm9yIHBlcmZvcm1hbmNlIHRvIGRvIHNvLlxuICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuY29ubmVjdGlvbi5kZXN0cm95KClcbiAgfVxuXG4gIC8vIDIwLiBSZXR1cm4gcmVzcG9uc2UuXG4gIHJldHVybiByZXNwb25zZVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc3BhdGNoICh7IGJvZHkgfSkge1xuICAgIGNvbnN0IHVybCA9IHJlcXVlc3RDdXJyZW50VVJMKHJlcXVlc3QpXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoJy4uLy4uJykuQWdlbnR9ICovXG4gICAgY29uc3QgYWdlbnQgPSBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmRpc3BhdGNoZXJcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBhZ2VudC5kaXNwYXRjaChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaCxcbiAgICAgICAgb3JpZ2luOiB1cmwub3JpZ2luLFxuICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICBib2R5OiBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmRpc3BhdGNoZXIuaXNNb2NrQWN0aXZlID8gcmVxdWVzdC5ib2R5ICYmIChyZXF1ZXN0LmJvZHkuc291cmNlIHx8IHJlcXVlc3QuYm9keS5zdHJlYW0pIDogYm9keSxcbiAgICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzTGlzdC5lbnRyaWVzLFxuICAgICAgICBtYXhSZWRpcmVjdGlvbnM6IDAsXG4gICAgICAgIHVwZ3JhZGU6IHJlcXVlc3QubW9kZSA9PT0gJ3dlYnNvY2tldCcgPyAnd2Vic29ja2V0JyA6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYm9keTogbnVsbCxcbiAgICAgICAgYWJvcnQ6IG51bGwsXG5cbiAgICAgICAgb25Db25uZWN0IChhYm9ydCkge1xuICAgICAgICAgIC8vIFRPRE8gKGZpeCk6IERvIHdlIG5lZWQgY29ubmVjdGlvbiBoZXJlP1xuICAgICAgICAgIGNvbnN0IHsgY29ubmVjdGlvbiB9ID0gZmV0Y2hQYXJhbXMuY29udHJvbGxlclxuXG4gICAgICAgICAgaWYgKGNvbm5lY3Rpb24uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBhYm9ydChuZXcgRE9NRXhjZXB0aW9uKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkLicsICdBYm9ydEVycm9yJykpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIub24oJ3Rlcm1pbmF0ZWQnLCBhYm9ydClcbiAgICAgICAgICAgIHRoaXMuYWJvcnQgPSBjb25uZWN0aW9uLmFib3J0ID0gYWJvcnRcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25IZWFkZXJzIChzdGF0dXMsIGhlYWRlcnNMaXN0LCByZXN1bWUsIHN0YXR1c1RleHQpIHtcbiAgICAgICAgICBpZiAoc3RhdHVzIDwgMjAwKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgY29kaW5ncyA9IFtdXG4gICAgICAgICAgbGV0IGxvY2F0aW9uID0gJydcblxuICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG5cbiAgICAgICAgICAvLyBGb3IgSDIsIHRoZSBoZWFkZXJzIGFyZSBhIHBsYWluIEpTIG9iamVjdFxuICAgICAgICAgIC8vIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSBhbmQgaXRlcmF0ZSBhY2NvcmRpbmdseVxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnNMaXN0KSkge1xuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBoZWFkZXJzTGlzdC5sZW5ndGg7IG4gKz0gMikge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBoZWFkZXJzTGlzdFtuICsgMF0udG9TdHJpbmcoJ2xhdGluMScpXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGhlYWRlcnNMaXN0W24gKyAxXS50b1N0cmluZygnbGF0aW4xJylcbiAgICAgICAgICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC1lbmNvZGluZycpIHtcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNzZWN0aW9uLTMuMS4yLjFcbiAgICAgICAgICAgICAgICAvLyBcIkFsbCBjb250ZW50LWNvZGluZyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUuLi5cIlxuICAgICAgICAgICAgICAgIGNvZGluZ3MgPSB2YWwudG9Mb3dlckNhc2UoKS5zcGxpdCgnLCcpLm1hcCgoeCkgPT4geC50cmltKCkpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IHZhbFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaGVhZGVyc1trSGVhZGVyc0xpc3RdLmFwcGVuZChrZXksIHZhbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGhlYWRlcnNMaXN0KVxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgICBjb25zdCB2YWwgPSBoZWFkZXJzTGlzdFtrZXldXG4gICAgICAgICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtZW5jb2RpbmcnKSB7XG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzcyMzEjc2VjdGlvbi0zLjEuMi4xXG4gICAgICAgICAgICAgICAgLy8gXCJBbGwgY29udGVudC1jb2RpbmcgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLi4uXCJcbiAgICAgICAgICAgICAgICBjb2RpbmdzID0gdmFsLnRvTG93ZXJDYXNlKCkuc3BsaXQoJywnKS5tYXAoKHgpID0+IHgudHJpbSgpKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2F0aW9uJykge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gdmFsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBoZWFkZXJzW2tIZWFkZXJzTGlzdF0uYXBwZW5kKGtleSwgdmFsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuYm9keSA9IG5ldyBSZWFkYWJsZSh7IHJlYWQ6IHJlc3VtZSB9KVxuXG4gICAgICAgICAgY29uc3QgZGVjb2RlcnMgPSBbXVxuXG4gICAgICAgICAgY29uc3Qgd2lsbEZvbGxvdyA9IHJlcXVlc3QucmVkaXJlY3QgPT09ICdmb2xsb3cnICYmXG4gICAgICAgICAgICBsb2NhdGlvbiAmJlxuICAgICAgICAgICAgcmVkaXJlY3RTdGF0dXNTZXQuaGFzKHN0YXR1cylcblxuICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LUVuY29kaW5nXG4gICAgICAgICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgJiYgcmVxdWVzdC5tZXRob2QgIT09ICdDT05ORUNUJyAmJiAhbnVsbEJvZHlTdGF0dXMuaW5jbHVkZXMoc3RhdHVzKSAmJiAhd2lsbEZvbGxvdykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb2Rpbmcgb2YgY29kaW5ncykge1xuICAgICAgICAgICAgICAvLyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjOTExMi5odG1sI3NlY3Rpb24tNy4yXG4gICAgICAgICAgICAgIGlmIChjb2RpbmcgPT09ICd4LWd6aXAnIHx8IGNvZGluZyA9PT0gJ2d6aXAnKSB7XG4gICAgICAgICAgICAgICAgZGVjb2RlcnMucHVzaCh6bGliLmNyZWF0ZUd1bnppcCh7XG4gICAgICAgICAgICAgICAgICAvLyBCZSBsZXNzIHN0cmljdCB3aGVuIGRlY29kaW5nIGNvbXByZXNzZWQgcmVzcG9uc2VzLCBzaW5jZSBzb21ldGltZXNcbiAgICAgICAgICAgICAgICAgIC8vIHNlcnZlcnMgc2VuZCBzbGlnaHRseSBpbnZhbGlkIHJlc3BvbnNlcyB0aGF0IGFyZSBzdGlsbCBhY2NlcHRlZFxuICAgICAgICAgICAgICAgICAgLy8gYnkgY29tbW9uIGJyb3dzZXJzLlxuICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHVzaW5nIFpfU1lOQ19GTFVTSCBpcyB3aGF0IGNVUkwgZG9lcy5cbiAgICAgICAgICAgICAgICAgIGZsdXNoOiB6bGliLmNvbnN0YW50cy5aX1NZTkNfRkxVU0gsXG4gICAgICAgICAgICAgICAgICBmaW5pc2hGbHVzaDogemxpYi5jb25zdGFudHMuWl9TWU5DX0ZMVVNIXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kaW5nID09PSAnZGVmbGF0ZScpIHtcbiAgICAgICAgICAgICAgICBkZWNvZGVycy5wdXNoKHpsaWIuY3JlYXRlSW5mbGF0ZSgpKVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGluZyA9PT0gJ2JyJykge1xuICAgICAgICAgICAgICAgIGRlY29kZXJzLnB1c2goemxpYi5jcmVhdGVCcm90bGlEZWNvbXByZXNzKCkpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVjb2RlcnMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQsXG4gICAgICAgICAgICBoZWFkZXJzTGlzdDogaGVhZGVyc1trSGVhZGVyc0xpc3RdLFxuICAgICAgICAgICAgYm9keTogZGVjb2RlcnMubGVuZ3RoXG4gICAgICAgICAgICAgID8gcGlwZWxpbmUodGhpcy5ib2R5LCAuLi5kZWNvZGVycywgKCkgPT4geyB9KVxuICAgICAgICAgICAgICA6IHRoaXMuYm9keS5vbignZXJyb3InLCAoKSA9PiB7fSlcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBvbkRhdGEgKGNodW5rKSB7XG4gICAgICAgICAgaWYgKGZldGNoUGFyYW1zLmNvbnRyb2xsZXIuZHVtcCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gMS4gSWYgb25lIG9yIG1vcmUgYnl0ZXMgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkIGZyb20gcmVzcG9uc2VcdTIwMTlzXG4gICAgICAgICAgLy8gbWVzc2FnZSBib2R5LCB0aGVuOlxuXG4gICAgICAgICAgLy8gIDEuIExldCBieXRlcyBiZSB0aGUgdHJhbnNtaXR0ZWQgYnl0ZXMuXG4gICAgICAgICAgY29uc3QgYnl0ZXMgPSBjaHVua1xuXG4gICAgICAgICAgLy8gIDIuIExldCBjb2RpbmdzIGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBoZWFkZXIgbGlzdCB2YWx1ZXNcbiAgICAgICAgICAvLyAgZ2l2ZW4gYENvbnRlbnQtRW5jb2RpbmdgIGFuZCByZXNwb25zZVx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gICAgICAgICAgLy8gIFNlZSBwdWxsQWxnb3JpdGhtLlxuXG4gICAgICAgICAgLy8gIDMuIEluY3JlYXNlIHRpbWluZ0luZm9cdTIwMTlzIGVuY29kZWQgYm9keSBzaXplIGJ5IGJ5dGVzXHUyMDE5cyBsZW5ndGguXG4gICAgICAgICAgdGltaW5nSW5mby5lbmNvZGVkQm9keVNpemUgKz0gYnl0ZXMuYnl0ZUxlbmd0aFxuXG4gICAgICAgICAgLy8gIDQuIFNlZSBwdWxsQWxnb3JpdGhtLi4uXG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5ib2R5LnB1c2goYnl0ZXMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgb25Db21wbGV0ZSAoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWJvcnQpIHtcbiAgICAgICAgICAgIGZldGNoUGFyYW1zLmNvbnRyb2xsZXIub2ZmKCd0ZXJtaW5hdGVkJywgdGhpcy5hYm9ydClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLmVuZGVkID0gdHJ1ZVxuXG4gICAgICAgICAgdGhpcy5ib2R5LnB1c2gobnVsbClcbiAgICAgICAgfSxcblxuICAgICAgICBvbkVycm9yIChlcnJvcikge1xuICAgICAgICAgIGlmICh0aGlzLmFib3J0KSB7XG4gICAgICAgICAgICBmZXRjaFBhcmFtcy5jb250cm9sbGVyLm9mZigndGVybWluYXRlZCcsIHRoaXMuYWJvcnQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ib2R5Py5kZXN0cm95KGVycm9yKVxuXG4gICAgICAgICAgZmV0Y2hQYXJhbXMuY29udHJvbGxlci50ZXJtaW5hdGUoZXJyb3IpXG5cbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0sXG5cbiAgICAgICAgb25VcGdyYWRlIChzdGF0dXMsIGhlYWRlcnNMaXN0LCBzb2NrZXQpIHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAxMDEpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG5cbiAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGhlYWRlcnNMaXN0Lmxlbmd0aDsgbiArPSAyKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBoZWFkZXJzTGlzdFtuICsgMF0udG9TdHJpbmcoJ2xhdGluMScpXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBoZWFkZXJzTGlzdFtuICsgMV0udG9TdHJpbmcoJ2xhdGluMScpXG5cbiAgICAgICAgICAgIGhlYWRlcnNba0hlYWRlcnNMaXN0XS5hcHBlbmQoa2V5LCB2YWwpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICBzdGF0dXNUZXh0OiBTVEFUVVNfQ09ERVNbc3RhdHVzXSxcbiAgICAgICAgICAgIGhlYWRlcnNMaXN0OiBoZWFkZXJzW2tIZWFkZXJzTGlzdF0sXG4gICAgICAgICAgICBzb2NrZXRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZldGNoLFxuICBGZXRjaCxcbiAgZmV0Y2hpbmcsXG4gIGZpbmFsaXplQW5kUmVwb3J0VGltaW5nXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBrU3RhdGU6IFN5bWJvbCgnRmlsZVJlYWRlciBzdGF0ZScpLFxuICBrUmVzdWx0OiBTeW1ib2woJ0ZpbGVSZWFkZXIgcmVzdWx0JyksXG4gIGtFcnJvcjogU3ltYm9sKCdGaWxlUmVhZGVyIGVycm9yJyksXG4gIGtMYXN0UHJvZ3Jlc3NFdmVudEZpcmVkOiBTeW1ib2woJ0ZpbGVSZWFkZXIgbGFzdCBwcm9ncmVzcyBldmVudCBmaXJlZCB0aW1lc3RhbXAnKSxcbiAga0V2ZW50czogU3ltYm9sKCdGaWxlUmVhZGVyIGV2ZW50cycpLFxuICBrQWJvcnRlZDogU3ltYm9sKCdGaWxlUmVhZGVyIGFib3J0ZWQnKVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcblxuY29uc3Qga1N0YXRlID0gU3ltYm9sKCdQcm9ncmVzc0V2ZW50IHN0YXRlJylcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jcHJvZ3Jlc3NldmVudFxuICovXG5jbGFzcyBQcm9ncmVzc0V2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBjb25zdHJ1Y3RvciAodHlwZSwgZXZlbnRJbml0RGljdCA9IHt9KSB7XG4gICAgdHlwZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyh0eXBlKVxuICAgIGV2ZW50SW5pdERpY3QgPSB3ZWJpZGwuY29udmVydGVycy5Qcm9ncmVzc0V2ZW50SW5pdChldmVudEluaXREaWN0ID8/IHt9KVxuXG4gICAgc3VwZXIodHlwZSwgZXZlbnRJbml0RGljdClcblxuICAgIHRoaXNba1N0YXRlXSA9IHtcbiAgICAgIGxlbmd0aENvbXB1dGFibGU6IGV2ZW50SW5pdERpY3QubGVuZ3RoQ29tcHV0YWJsZSxcbiAgICAgIGxvYWRlZDogZXZlbnRJbml0RGljdC5sb2FkZWQsXG4gICAgICB0b3RhbDogZXZlbnRJbml0RGljdC50b3RhbFxuICAgIH1cbiAgfVxuXG4gIGdldCBsZW5ndGhDb21wdXRhYmxlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBQcm9ncmVzc0V2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5sZW5ndGhDb21wdXRhYmxlXG4gIH1cblxuICBnZXQgbG9hZGVkICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBQcm9ncmVzc0V2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXNba1N0YXRlXS5sb2FkZWRcbiAgfVxuXG4gIGdldCB0b3RhbCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgUHJvZ3Jlc3NFdmVudClcblxuICAgIHJldHVybiB0aGlzW2tTdGF0ZV0udG90YWxcbiAgfVxufVxuXG53ZWJpZGwuY29udmVydGVycy5Qcm9ncmVzc0V2ZW50SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGtleTogJ2xlbmd0aENvbXB1dGFibGUnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdsb2FkZWQnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIGxvbmcgbG9uZyddLFxuICAgIGRlZmF1bHRWYWx1ZTogMFxuICB9LFxuICB7XG4gICAga2V5OiAndG90YWwnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIGxvbmcgbG9uZyddLFxuICAgIGRlZmF1bHRWYWx1ZTogMFxuICB9LFxuICB7XG4gICAga2V5OiAnYnViYmxlcycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIGtleTogJ2NhbmNlbGFibGUnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbixcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdjb21wb3NlZCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfVxuXSlcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFByb2dyZXNzRXZlbnRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWVuY29kaW5nLWdldFxuICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBsYWJlbFxuICovXG5mdW5jdGlvbiBnZXRFbmNvZGluZyAobGFiZWwpIHtcbiAgaWYgKCFsYWJlbCkge1xuICAgIHJldHVybiAnZmFpbHVyZSdcbiAgfVxuXG4gIC8vIDEuIFJlbW92ZSBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZSBmcm9tIGxhYmVsLlxuICAvLyAyLiBJZiBsYWJlbCBpcyBhbiBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBhbnkgb2YgdGhlXG4gIC8vICAgIGxhYmVscyBsaXN0ZWQgaW4gdGhlIHRhYmxlIGJlbG93LCB0aGVuIHJldHVybiB0aGVcbiAgLy8gICAgY29ycmVzcG9uZGluZyBlbmNvZGluZzsgb3RoZXJ3aXNlIHJldHVybiBmYWlsdXJlLlxuICBzd2l0Y2ggKGxhYmVsLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAndW5pY29kZS0xLTEtdXRmLTgnOlxuICAgIGNhc2UgJ3VuaWNvZGUxMXV0ZjgnOlxuICAgIGNhc2UgJ3VuaWNvZGUyMHV0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd4LXVuaWNvZGUyMHV0ZjgnOlxuICAgICAgcmV0dXJuICdVVEYtOCdcbiAgICBjYXNlICc4NjYnOlxuICAgIGNhc2UgJ2NwODY2JzpcbiAgICBjYXNlICdjc2libTg2Nic6XG4gICAgY2FzZSAnaWJtODY2JzpcbiAgICAgIHJldHVybiAnSUJNODY2J1xuICAgIGNhc2UgJ2NzaXNvbGF0aW4yJzpcbiAgICBjYXNlICdpc28tODg1OS0yJzpcbiAgICBjYXNlICdpc28taXItMTAxJzpcbiAgICBjYXNlICdpc284ODU5LTInOlxuICAgIGNhc2UgJ2lzbzg4NTkyJzpcbiAgICBjYXNlICdpc29fODg1OS0yJzpcbiAgICBjYXNlICdpc29fODg1OS0yOjE5ODcnOlxuICAgIGNhc2UgJ2wyJzpcbiAgICBjYXNlICdsYXRpbjInOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0yJ1xuICAgIGNhc2UgJ2NzaXNvbGF0aW4zJzpcbiAgICBjYXNlICdpc28tODg1OS0zJzpcbiAgICBjYXNlICdpc28taXItMTA5JzpcbiAgICBjYXNlICdpc284ODU5LTMnOlxuICAgIGNhc2UgJ2lzbzg4NTkzJzpcbiAgICBjYXNlICdpc29fODg1OS0zJzpcbiAgICBjYXNlICdpc29fODg1OS0zOjE5ODgnOlxuICAgIGNhc2UgJ2wzJzpcbiAgICBjYXNlICdsYXRpbjMnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0zJ1xuICAgIGNhc2UgJ2NzaXNvbGF0aW40JzpcbiAgICBjYXNlICdpc28tODg1OS00JzpcbiAgICBjYXNlICdpc28taXItMTEwJzpcbiAgICBjYXNlICdpc284ODU5LTQnOlxuICAgIGNhc2UgJ2lzbzg4NTk0JzpcbiAgICBjYXNlICdpc29fODg1OS00JzpcbiAgICBjYXNlICdpc29fODg1OS00OjE5ODgnOlxuICAgIGNhc2UgJ2w0JzpcbiAgICBjYXNlICdsYXRpbjQnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS00J1xuICAgIGNhc2UgJ2NzaXNvbGF0aW5jeXJpbGxpYyc6XG4gICAgY2FzZSAnY3lyaWxsaWMnOlxuICAgIGNhc2UgJ2lzby04ODU5LTUnOlxuICAgIGNhc2UgJ2lzby1pci0xNDQnOlxuICAgIGNhc2UgJ2lzbzg4NTktNSc6XG4gICAgY2FzZSAnaXNvODg1OTUnOlxuICAgIGNhc2UgJ2lzb184ODU5LTUnOlxuICAgIGNhc2UgJ2lzb184ODU5LTU6MTk4OCc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTUnXG4gICAgY2FzZSAnYXJhYmljJzpcbiAgICBjYXNlICdhc21vLTcwOCc6XG4gICAgY2FzZSAnY3Npc284ODU5NmUnOlxuICAgIGNhc2UgJ2NzaXNvODg1OTZpJzpcbiAgICBjYXNlICdjc2lzb2xhdGluYXJhYmljJzpcbiAgICBjYXNlICdlY21hLTExNCc6XG4gICAgY2FzZSAnaXNvLTg4NTktNic6XG4gICAgY2FzZSAnaXNvLTg4NTktNi1lJzpcbiAgICBjYXNlICdpc28tODg1OS02LWknOlxuICAgIGNhc2UgJ2lzby1pci0xMjcnOlxuICAgIGNhc2UgJ2lzbzg4NTktNic6XG4gICAgY2FzZSAnaXNvODg1OTYnOlxuICAgIGNhc2UgJ2lzb184ODU5LTYnOlxuICAgIGNhc2UgJ2lzb184ODU5LTY6MTk4Nyc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTYnXG4gICAgY2FzZSAnY3Npc29sYXRpbmdyZWVrJzpcbiAgICBjYXNlICdlY21hLTExOCc6XG4gICAgY2FzZSAnZWxvdF85MjgnOlxuICAgIGNhc2UgJ2dyZWVrJzpcbiAgICBjYXNlICdncmVlazgnOlxuICAgIGNhc2UgJ2lzby04ODU5LTcnOlxuICAgIGNhc2UgJ2lzby1pci0xMjYnOlxuICAgIGNhc2UgJ2lzbzg4NTktNyc6XG4gICAgY2FzZSAnaXNvODg1OTcnOlxuICAgIGNhc2UgJ2lzb184ODU5LTcnOlxuICAgIGNhc2UgJ2lzb184ODU5LTc6MTk4Nyc6XG4gICAgY2FzZSAnc3VuX2V1X2dyZWVrJzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktNydcbiAgICBjYXNlICdjc2lzbzg4NTk4ZSc6XG4gICAgY2FzZSAnY3Npc29sYXRpbmhlYnJldyc6XG4gICAgY2FzZSAnaGVicmV3JzpcbiAgICBjYXNlICdpc28tODg1OS04JzpcbiAgICBjYXNlICdpc28tODg1OS04LWUnOlxuICAgIGNhc2UgJ2lzby1pci0xMzgnOlxuICAgIGNhc2UgJ2lzbzg4NTktOCc6XG4gICAgY2FzZSAnaXNvODg1OTgnOlxuICAgIGNhc2UgJ2lzb184ODU5LTgnOlxuICAgIGNhc2UgJ2lzb184ODU5LTg6MTk4OCc6XG4gICAgY2FzZSAndmlzdWFsJzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktOCdcbiAgICBjYXNlICdjc2lzbzg4NTk4aSc6XG4gICAgY2FzZSAnaXNvLTg4NTktOC1pJzpcbiAgICBjYXNlICdsb2dpY2FsJzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktOC1JJ1xuICAgIGNhc2UgJ2NzaXNvbGF0aW42JzpcbiAgICBjYXNlICdpc28tODg1OS0xMCc6XG4gICAgY2FzZSAnaXNvLWlyLTE1Nyc6XG4gICAgY2FzZSAnaXNvODg1OS0xMCc6XG4gICAgY2FzZSAnaXNvODg1OTEwJzpcbiAgICBjYXNlICdsNic6XG4gICAgY2FzZSAnbGF0aW42JzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktMTAnXG4gICAgY2FzZSAnaXNvLTg4NTktMTMnOlxuICAgIGNhc2UgJ2lzbzg4NTktMTMnOlxuICAgIGNhc2UgJ2lzbzg4NTkxMyc6XG4gICAgICByZXR1cm4gJ0lTTy04ODU5LTEzJ1xuICAgIGNhc2UgJ2lzby04ODU5LTE0JzpcbiAgICBjYXNlICdpc284ODU5LTE0JzpcbiAgICBjYXNlICdpc284ODU5MTQnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0xNCdcbiAgICBjYXNlICdjc2lzb2xhdGluOSc6XG4gICAgY2FzZSAnaXNvLTg4NTktMTUnOlxuICAgIGNhc2UgJ2lzbzg4NTktMTUnOlxuICAgIGNhc2UgJ2lzbzg4NTkxNSc6XG4gICAgY2FzZSAnaXNvXzg4NTktMTUnOlxuICAgIGNhc2UgJ2w5JzpcbiAgICAgIHJldHVybiAnSVNPLTg4NTktMTUnXG4gICAgY2FzZSAnaXNvLTg4NTktMTYnOlxuICAgICAgcmV0dXJuICdJU08tODg1OS0xNidcbiAgICBjYXNlICdjc2tvaThyJzpcbiAgICBjYXNlICdrb2knOlxuICAgIGNhc2UgJ2tvaTgnOlxuICAgIGNhc2UgJ2tvaTgtcic6XG4gICAgY2FzZSAna29pOF9yJzpcbiAgICAgIHJldHVybiAnS09JOC1SJ1xuICAgIGNhc2UgJ2tvaTgtcnUnOlxuICAgIGNhc2UgJ2tvaTgtdSc6XG4gICAgICByZXR1cm4gJ0tPSTgtVSdcbiAgICBjYXNlICdjc21hY2ludG9zaCc6XG4gICAgY2FzZSAnbWFjJzpcbiAgICBjYXNlICdtYWNpbnRvc2gnOlxuICAgIGNhc2UgJ3gtbWFjLXJvbWFuJzpcbiAgICAgIHJldHVybiAnbWFjaW50b3NoJ1xuICAgIGNhc2UgJ2lzby04ODU5LTExJzpcbiAgICBjYXNlICdpc284ODU5LTExJzpcbiAgICBjYXNlICdpc284ODU5MTEnOlxuICAgIGNhc2UgJ3Rpcy02MjAnOlxuICAgIGNhc2UgJ3dpbmRvd3MtODc0JzpcbiAgICAgIHJldHVybiAnd2luZG93cy04NzQnXG4gICAgY2FzZSAnY3AxMjUwJzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTAnOlxuICAgIGNhc2UgJ3gtY3AxMjUwJzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjUwJ1xuICAgIGNhc2UgJ2NwMTI1MSc6XG4gICAgY2FzZSAnd2luZG93cy0xMjUxJzpcbiAgICBjYXNlICd4LWNwMTI1MSc6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1MSdcbiAgICBjYXNlICdhbnNpX3gzLjQtMTk2OCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2NwMTI1Mic6XG4gICAgY2FzZSAnY3A4MTknOlxuICAgIGNhc2UgJ2NzaXNvbGF0aW4xJzpcbiAgICBjYXNlICdpYm04MTknOlxuICAgIGNhc2UgJ2lzby04ODU5LTEnOlxuICAgIGNhc2UgJ2lzby1pci0xMDAnOlxuICAgIGNhc2UgJ2lzbzg4NTktMSc6XG4gICAgY2FzZSAnaXNvODg1OTEnOlxuICAgIGNhc2UgJ2lzb184ODU5LTEnOlxuICAgIGNhc2UgJ2lzb184ODU5LTE6MTk4Nyc6XG4gICAgY2FzZSAnbDEnOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAndXMtYXNjaWknOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1Mic6XG4gICAgY2FzZSAneC1jcDEyNTInOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTInXG4gICAgY2FzZSAnY3AxMjUzJzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTMnOlxuICAgIGNhc2UgJ3gtY3AxMjUzJzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjUzJ1xuICAgIGNhc2UgJ2NwMTI1NCc6XG4gICAgY2FzZSAnY3Npc29sYXRpbjUnOlxuICAgIGNhc2UgJ2lzby04ODU5LTknOlxuICAgIGNhc2UgJ2lzby1pci0xNDgnOlxuICAgIGNhc2UgJ2lzbzg4NTktOSc6XG4gICAgY2FzZSAnaXNvODg1OTknOlxuICAgIGNhc2UgJ2lzb184ODU5LTknOlxuICAgIGNhc2UgJ2lzb184ODU5LTk6MTk4OSc6XG4gICAgY2FzZSAnbDUnOlxuICAgIGNhc2UgJ2xhdGluNSc6XG4gICAgY2FzZSAnd2luZG93cy0xMjU0JzpcbiAgICBjYXNlICd4LWNwMTI1NCc6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1NCdcbiAgICBjYXNlICdjcDEyNTUnOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1NSc6XG4gICAgY2FzZSAneC1jcDEyNTUnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTUnXG4gICAgY2FzZSAnY3AxMjU2JzpcbiAgICBjYXNlICd3aW5kb3dzLTEyNTYnOlxuICAgIGNhc2UgJ3gtY3AxMjU2JzpcbiAgICAgIHJldHVybiAnd2luZG93cy0xMjU2J1xuICAgIGNhc2UgJ2NwMTI1Nyc6XG4gICAgY2FzZSAnd2luZG93cy0xMjU3JzpcbiAgICBjYXNlICd4LWNwMTI1Nyc6XG4gICAgICByZXR1cm4gJ3dpbmRvd3MtMTI1NydcbiAgICBjYXNlICdjcDEyNTgnOlxuICAgIGNhc2UgJ3dpbmRvd3MtMTI1OCc6XG4gICAgY2FzZSAneC1jcDEyNTgnOlxuICAgICAgcmV0dXJuICd3aW5kb3dzLTEyNTgnXG4gICAgY2FzZSAneC1tYWMtY3lyaWxsaWMnOlxuICAgIGNhc2UgJ3gtbWFjLXVrcmFpbmlhbic6XG4gICAgICByZXR1cm4gJ3gtbWFjLWN5cmlsbGljJ1xuICAgIGNhc2UgJ2NoaW5lc2UnOlxuICAgIGNhc2UgJ2NzZ2IyMzEyJzpcbiAgICBjYXNlICdjc2lzbzU4Z2IyMzEyODAnOlxuICAgIGNhc2UgJ2diMjMxMic6XG4gICAgY2FzZSAnZ2JfMjMxMic6XG4gICAgY2FzZSAnZ2JfMjMxMi04MCc6XG4gICAgY2FzZSAnZ2JrJzpcbiAgICBjYXNlICdpc28taXItNTgnOlxuICAgIGNhc2UgJ3gtZ2JrJzpcbiAgICAgIHJldHVybiAnR0JLJ1xuICAgIGNhc2UgJ2diMTgwMzAnOlxuICAgICAgcmV0dXJuICdnYjE4MDMwJ1xuICAgIGNhc2UgJ2JpZzUnOlxuICAgIGNhc2UgJ2JpZzUtaGtzY3MnOlxuICAgIGNhc2UgJ2NuLWJpZzUnOlxuICAgIGNhc2UgJ2NzYmlnNSc6XG4gICAgY2FzZSAneC14LWJpZzUnOlxuICAgICAgcmV0dXJuICdCaWc1J1xuICAgIGNhc2UgJ2NzZXVjcGtkZm10amFwYW5lc2UnOlxuICAgIGNhc2UgJ2V1Yy1qcCc6XG4gICAgY2FzZSAneC1ldWMtanAnOlxuICAgICAgcmV0dXJuICdFVUMtSlAnXG4gICAgY2FzZSAnY3Npc28yMDIyanAnOlxuICAgIGNhc2UgJ2lzby0yMDIyLWpwJzpcbiAgICAgIHJldHVybiAnSVNPLTIwMjItSlAnXG4gICAgY2FzZSAnY3NzaGlmdGppcyc6XG4gICAgY2FzZSAnbXM5MzInOlxuICAgIGNhc2UgJ21zX2thbmppJzpcbiAgICBjYXNlICdzaGlmdC1qaXMnOlxuICAgIGNhc2UgJ3NoaWZ0X2ppcyc6XG4gICAgY2FzZSAnc2ppcyc6XG4gICAgY2FzZSAnd2luZG93cy0zMWonOlxuICAgIGNhc2UgJ3gtc2ppcyc6XG4gICAgICByZXR1cm4gJ1NoaWZ0X0pJUydcbiAgICBjYXNlICdjc2V1Y2tyJzpcbiAgICBjYXNlICdjc2tzYzU2MDExOTg3JzpcbiAgICBjYXNlICdldWMta3InOlxuICAgIGNhc2UgJ2lzby1pci0xNDknOlxuICAgIGNhc2UgJ2tvcmVhbic6XG4gICAgY2FzZSAna3NfY181NjAxLTE5ODcnOlxuICAgIGNhc2UgJ2tzX2NfNTYwMS0xOTg5JzpcbiAgICBjYXNlICdrc2M1NjAxJzpcbiAgICBjYXNlICdrc2NfNTYwMSc6XG4gICAgY2FzZSAnd2luZG93cy05NDknOlxuICAgICAgcmV0dXJuICdFVUMtS1InXG4gICAgY2FzZSAnY3Npc28yMDIya3InOlxuICAgIGNhc2UgJ2h6LWdiLTIzMTInOlxuICAgIGNhc2UgJ2lzby0yMDIyLWNuJzpcbiAgICBjYXNlICdpc28tMjAyMi1jbi1leHQnOlxuICAgIGNhc2UgJ2lzby0yMDIyLWtyJzpcbiAgICBjYXNlICdyZXBsYWNlbWVudCc6XG4gICAgICByZXR1cm4gJ3JlcGxhY2VtZW50J1xuICAgIGNhc2UgJ3VuaWNvZGVmZmZlJzpcbiAgICBjYXNlICd1dGYtMTZiZSc6XG4gICAgICByZXR1cm4gJ1VURi0xNkJFJ1xuICAgIGNhc2UgJ2NzdW5pY29kZSc6XG4gICAgY2FzZSAnaXNvLTEwNjQ2LXVjcy0yJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndW5pY29kZSc6XG4gICAgY2FzZSAndW5pY29kZWZlZmYnOlxuICAgIGNhc2UgJ3V0Zi0xNic6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuICdVVEYtMTZMRSdcbiAgICBjYXNlICd4LXVzZXItZGVmaW5lZCc6XG4gICAgICByZXR1cm4gJ3gtdXNlci1kZWZpbmVkJ1xuICAgIGRlZmF1bHQ6IHJldHVybiAnZmFpbHVyZSdcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0RW5jb2Rpbmdcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3Qge1xuICBrU3RhdGUsXG4gIGtFcnJvcixcbiAga1Jlc3VsdCxcbiAga0Fib3J0ZWQsXG4gIGtMYXN0UHJvZ3Jlc3NFdmVudEZpcmVkXG59ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgUHJvZ3Jlc3NFdmVudCB9ID0gcmVxdWlyZSgnLi9wcm9ncmVzc2V2ZW50JylcbmNvbnN0IHsgZ2V0RW5jb2RpbmcgfSA9IHJlcXVpcmUoJy4vZW5jb2RpbmcnKVxuY29uc3QgeyBET01FeGNlcHRpb24gfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2NvbnN0YW50cycpXG5jb25zdCB7IHNlcmlhbGl6ZUFNaW1lVHlwZSwgcGFyc2VNSU1FVHlwZSB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvZGF0YVVSTCcpXG5jb25zdCB7IHR5cGVzIH0gPSByZXF1aXJlKCd1dGlsJylcbmNvbnN0IHsgU3RyaW5nRGVjb2RlciB9ID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXInKVxuY29uc3QgeyBidG9hIH0gPSByZXF1aXJlKCdidWZmZXInKVxuXG4vKiogQHR5cGUge1Byb3BlcnR5RGVzY3JpcHRvcn0gKi9cbmNvbnN0IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMgPSB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiBmYWxzZSxcbiAgY29uZmlndXJhYmxlOiBmYWxzZVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI3JlYWRPcGVyYXRpb25cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ZpbGVyZWFkZXInKS5GaWxlUmVhZGVyfSBmclxuICogQHBhcmFtIHtpbXBvcnQoJ2J1ZmZlcicpLkJsb2J9IGJsb2JcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZz99IGVuY29kaW5nTmFtZVxuICovXG5mdW5jdGlvbiByZWFkT3BlcmF0aW9uIChmciwgYmxvYiwgdHlwZSwgZW5jb2RpbmdOYW1lKSB7XG4gIC8vIDEuIElmIGZyXHUyMDE5cyBzdGF0ZSBpcyBcImxvYWRpbmdcIiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3JcbiAgLy8gICAgRE9NRXhjZXB0aW9uLlxuICBpZiAoZnJba1N0YXRlXSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignSW52YWxpZCBzdGF0ZScsICdJbnZhbGlkU3RhdGVFcnJvcicpXG4gIH1cblxuICAvLyAyLiBTZXQgZnJcdTIwMTlzIHN0YXRlIHRvIFwibG9hZGluZ1wiLlxuICBmcltrU3RhdGVdID0gJ2xvYWRpbmcnXG5cbiAgLy8gMy4gU2V0IGZyXHUyMDE5cyByZXN1bHQgdG8gbnVsbC5cbiAgZnJba1Jlc3VsdF0gPSBudWxsXG5cbiAgLy8gNC4gU2V0IGZyXHUyMDE5cyBlcnJvciB0byBudWxsLlxuICBmcltrRXJyb3JdID0gbnVsbFxuXG4gIC8vIDUuIExldCBzdHJlYW0gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGdldCBzdHJlYW0gb24gYmxvYi5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoJ3N0cmVhbS93ZWInKS5SZWFkYWJsZVN0cmVhbX0gKi9cbiAgY29uc3Qgc3RyZWFtID0gYmxvYi5zdHJlYW0oKVxuXG4gIC8vIDYuIExldCByZWFkZXIgYmUgdGhlIHJlc3VsdCBvZiBnZXR0aW5nIGEgcmVhZGVyIGZyb20gc3RyZWFtLlxuICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKClcblxuICAvLyA3LiBMZXQgYnl0ZXMgYmUgYW4gZW1wdHkgYnl0ZSBzZXF1ZW5jZS5cbiAgLyoqIEB0eXBlIHtVaW50OEFycmF5W119ICovXG4gIGNvbnN0IGJ5dGVzID0gW11cblxuICAvLyA4LiBMZXQgY2h1bmtQcm9taXNlIGJlIHRoZSByZXN1bHQgb2YgcmVhZGluZyBhIGNodW5rIGZyb21cbiAgLy8gICAgc3RyZWFtIHdpdGggcmVhZGVyLlxuICBsZXQgY2h1bmtQcm9taXNlID0gcmVhZGVyLnJlYWQoKVxuXG4gIC8vIDkuIExldCBpc0ZpcnN0Q2h1bmsgYmUgdHJ1ZS5cbiAgbGV0IGlzRmlyc3RDaHVuayA9IHRydWVcblxuICAvLyAxMC4gSW4gcGFyYWxsZWwsIHdoaWxlIHRydWU6XG4gIC8vIE5vdGU6IFwiSW4gcGFyYWxsZWxcIiBqdXN0IG1lYW5zIG5vbi1ibG9ja2luZ1xuICAvLyBOb3RlIDI6IHJlYWRPcGVyYXRpb24gaXRzZWxmIGNhbm5vdCBiZSBhc3luYyBhcyBkb3VibGVcbiAgLy8gcmVhZGluZyB0aGUgYm9keSB3b3VsZCB0aGVuIHJlamVjdCB0aGUgcHJvbWlzZSwgaW5zdGVhZFxuICAvLyBvZiB0aHJvd2luZyBhbiBlcnJvci5cbiAgOyhhc3luYyAoKSA9PiB7XG4gICAgd2hpbGUgKCFmcltrQWJvcnRlZF0pIHtcbiAgICAgIC8vIDEuIFdhaXQgZm9yIGNodW5rUHJvbWlzZSB0byBiZSBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCBjaHVua1Byb21pc2VcblxuICAgICAgICAvLyAyLiBJZiBjaHVua1Byb21pc2UgaXMgZnVsZmlsbGVkLCBhbmQgaXNGaXJzdENodW5rIGlzXG4gICAgICAgIC8vICAgIHRydWUsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgcHJvZ3Jlc3MgZXZlbnQgY2FsbGVkXG4gICAgICAgIC8vICAgIGxvYWRzdGFydCBhdCBmci5cbiAgICAgICAgaWYgKGlzRmlyc3RDaHVuayAmJiAhZnJba0Fib3J0ZWRdKSB7XG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdsb2Fkc3RhcnQnLCBmcilcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gU2V0IGlzRmlyc3RDaHVuayB0byBmYWxzZS5cbiAgICAgICAgaXNGaXJzdENodW5rID0gZmFsc2VcblxuICAgICAgICAvLyA0LiBJZiBjaHVua1Byb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggYW4gb2JqZWN0IHdob3NlXG4gICAgICAgIC8vICAgIGRvbmUgcHJvcGVydHkgaXMgZmFsc2UgYW5kIHdob3NlIHZhbHVlIHByb3BlcnR5IGlzXG4gICAgICAgIC8vICAgIGEgVWludDhBcnJheSBvYmplY3QsIHJ1biB0aGVzZSBzdGVwczpcbiAgICAgICAgaWYgKCFkb25lICYmIHR5cGVzLmlzVWludDhBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyAxLiBMZXQgYnMgYmUgdGhlIGJ5dGUgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhlXG4gICAgICAgICAgLy8gICAgVWludDhBcnJheSBvYmplY3QuXG5cbiAgICAgICAgICAvLyAyLiBBcHBlbmQgYnMgdG8gYnl0ZXMuXG4gICAgICAgICAgYnl0ZXMucHVzaCh2YWx1ZSlcblxuICAgICAgICAgIC8vIDMuIElmIHJvdWdobHkgNTBtcyBoYXZlIHBhc3NlZCBzaW5jZSB0aGVzZSBzdGVwc1xuICAgICAgICAgIC8vICAgIHdlcmUgbGFzdCBpbnZva2VkLCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhXG4gICAgICAgICAgLy8gICAgcHJvZ3Jlc3MgZXZlbnQgY2FsbGVkIHByb2dyZXNzIGF0IGZyLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnJba0xhc3RQcm9ncmVzc0V2ZW50RmlyZWRdID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgRGF0ZS5ub3coKSAtIGZyW2tMYXN0UHJvZ3Jlc3NFdmVudEZpcmVkXSA+PSA1MFxuICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgIWZyW2tBYm9ydGVkXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZnJba0xhc3RQcm9ncmVzc0V2ZW50RmlyZWRdID0gRGF0ZS5ub3coKVxuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ3Byb2dyZXNzJywgZnIpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDQuIFNldCBjaHVua1Byb21pc2UgdG8gdGhlIHJlc3VsdCBvZiByZWFkaW5nIGFcbiAgICAgICAgICAvLyAgICBjaHVuayBmcm9tIHN0cmVhbSB3aXRoIHJlYWRlci5cbiAgICAgICAgICBjaHVua1Byb21pc2UgPSByZWFkZXIucmVhZCgpXG4gICAgICAgIH0gZWxzZSBpZiAoZG9uZSkge1xuICAgICAgICAgIC8vIDUuIE90aGVyd2lzZSwgaWYgY2h1bmtQcm9taXNlIGlzIGZ1bGZpbGxlZCB3aXRoIGFuXG4gICAgICAgICAgLy8gICAgb2JqZWN0IHdob3NlIGRvbmUgcHJvcGVydHkgaXMgdHJ1ZSwgcXVldWUgYSB0YXNrXG4gICAgICAgICAgLy8gICAgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgYW5kIGFib3J0IHRoaXMgYWxnb3JpdGhtOlxuICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICAgIC8vIDEuIFNldCBmclx1MjAxOXMgc3RhdGUgdG8gXCJkb25lXCIuXG4gICAgICAgICAgICBmcltrU3RhdGVdID0gJ2RvbmUnXG5cbiAgICAgICAgICAgIC8vIDIuIExldCByZXN1bHQgYmUgdGhlIHJlc3VsdCBvZiBwYWNrYWdlIGRhdGEgZ2l2ZW5cbiAgICAgICAgICAgIC8vICAgIGJ5dGVzLCB0eXBlLCBibG9iXHUyMDE5cyB0eXBlLCBhbmQgZW5jb2RpbmdOYW1lLlxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcGFja2FnZURhdGEoYnl0ZXMsIHR5cGUsIGJsb2IudHlwZSwgZW5jb2RpbmdOYW1lKVxuXG4gICAgICAgICAgICAgIC8vIDQuIEVsc2U6XG5cbiAgICAgICAgICAgICAgaWYgKGZyW2tBYm9ydGVkXSkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gMS4gU2V0IGZyXHUyMDE5cyByZXN1bHQgdG8gcmVzdWx0LlxuICAgICAgICAgICAgICBmcltrUmVzdWx0XSA9IHJlc3VsdFxuXG4gICAgICAgICAgICAgIC8vIDIuIEZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgbG9hZCBhdCB0aGUgZnIuXG4gICAgICAgICAgICAgIGZpcmVBUHJvZ3Jlc3NFdmVudCgnbG9hZCcsIGZyKVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gMy4gSWYgcGFja2FnZSBkYXRhIHRocmV3IGFuIGV4Y2VwdGlvbiBlcnJvcjpcblxuICAgICAgICAgICAgICAvLyAxLiBTZXQgZnJcdTIwMTlzIGVycm9yIHRvIGVycm9yLlxuICAgICAgICAgICAgICBmcltrRXJyb3JdID0gZXJyb3JcblxuICAgICAgICAgICAgICAvLyAyLiBGaXJlIGEgcHJvZ3Jlc3MgZXZlbnQgY2FsbGVkIGVycm9yIGF0IGZyLlxuICAgICAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2Vycm9yJywgZnIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIDUuIElmIGZyXHUyMDE5cyBzdGF0ZSBpcyBub3QgXCJsb2FkaW5nXCIsIGZpcmUgYSBwcm9ncmVzc1xuICAgICAgICAgICAgLy8gICAgZXZlbnQgY2FsbGVkIGxvYWRlbmQgYXQgdGhlIGZyLlxuICAgICAgICAgICAgaWYgKGZyW2tTdGF0ZV0gIT09ICdsb2FkaW5nJykge1xuICAgICAgICAgICAgICBmaXJlQVByb2dyZXNzRXZlbnQoJ2xvYWRlbmQnLCBmcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGZyW2tBYm9ydGVkXSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNi4gT3RoZXJ3aXNlLCBpZiBjaHVua1Byb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhblxuICAgICAgICAvLyAgICBlcnJvciBlcnJvciwgcXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nXG4gICAgICAgIC8vICAgIHN0ZXBzIGFuZCBhYm9ydCB0aGlzIGFsZ29yaXRobTpcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgIC8vIDEuIFNldCBmclx1MjAxOXMgc3RhdGUgdG8gXCJkb25lXCIuXG4gICAgICAgICAgZnJba1N0YXRlXSA9ICdkb25lJ1xuXG4gICAgICAgICAgLy8gMi4gU2V0IGZyXHUyMDE5cyBlcnJvciB0byBlcnJvci5cbiAgICAgICAgICBmcltrRXJyb3JdID0gZXJyb3JcblxuICAgICAgICAgIC8vIDMuIEZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgZXJyb3IgYXQgZnIuXG4gICAgICAgICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdlcnJvcicsIGZyKVxuXG4gICAgICAgICAgLy8gNC4gSWYgZnJcdTIwMTlzIHN0YXRlIGlzIG5vdCBcImxvYWRpbmdcIiwgZmlyZSBhIHByb2dyZXNzXG4gICAgICAgICAgLy8gICAgZXZlbnQgY2FsbGVkIGxvYWRlbmQgYXQgZnIuXG4gICAgICAgICAgaWYgKGZyW2tTdGF0ZV0gIT09ICdsb2FkaW5nJykge1xuICAgICAgICAgICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdsb2FkZW5kJywgZnIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9KSgpXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZmlyZS1hLXByb2dyZXNzLWV2ZW50XG4gKiBAc2VlIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ldmVudC1maXJlXG4gKiBAcGFyYW0ge3N0cmluZ30gZSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ZpbGVyZWFkZXInKS5GaWxlUmVhZGVyfSByZWFkZXJcbiAqL1xuZnVuY3Rpb24gZmlyZUFQcm9ncmVzc0V2ZW50IChlLCByZWFkZXIpIHtcbiAgLy8gVGhlIHByb2dyZXNzIGV2ZW50IGUgZG9lcyBub3QgYnViYmxlLiBlLmJ1YmJsZXMgbXVzdCBiZSBmYWxzZVxuICAvLyBUaGUgcHJvZ3Jlc3MgZXZlbnQgZSBpcyBOT1QgY2FuY2VsYWJsZS4gZS5jYW5jZWxhYmxlIG11c3QgYmUgZmFsc2VcbiAgY29uc3QgZXZlbnQgPSBuZXcgUHJvZ3Jlc3NFdmVudChlLCB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY2FuY2VsYWJsZTogZmFsc2VcbiAgfSlcblxuICByZWFkZXIuZGlzcGF0Y2hFdmVudChldmVudClcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNibG9iLXBhY2thZ2UtZGF0YVxuICogQHBhcmFtIHtVaW50OEFycmF5W119IGJ5dGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmc/fSBtaW1lVHlwZVxuICogQHBhcmFtIHtzdHJpbmc/fSBlbmNvZGluZ05hbWVcbiAqL1xuZnVuY3Rpb24gcGFja2FnZURhdGEgKGJ5dGVzLCB0eXBlLCBtaW1lVHlwZSwgZW5jb2RpbmdOYW1lKSB7XG4gIC8vIDEuIEEgQmxvYiBoYXMgYW4gYXNzb2NpYXRlZCBwYWNrYWdlIGRhdGEgYWxnb3JpdGhtLCBnaXZlblxuICAvLyAgICBieXRlcywgYSB0eXBlLCBhIG9wdGlvbmFsIG1pbWVUeXBlLCBhbmQgYSBvcHRpb25hbFxuICAvLyAgICBlbmNvZGluZ05hbWUsIHdoaWNoIHN3aXRjaGVzIG9uIHR5cGUgYW5kIHJ1bnMgdGhlXG4gIC8vICAgIGFzc29jaWF0ZWQgc3RlcHM6XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnRGF0YVVSTCc6IHtcbiAgICAgIC8vIDEuIFJldHVybiBieXRlcyBhcyBhIERhdGFVUkwgW1JGQzIzOTddIHN1YmplY3QgdG9cbiAgICAgIC8vICAgIHRoZSBjb25zaWRlcmF0aW9ucyBiZWxvdzpcbiAgICAgIC8vICAqIFVzZSBtaW1lVHlwZSBhcyBwYXJ0IG9mIHRoZSBEYXRhIFVSTCBpZiBpdCBpc1xuICAgICAgLy8gICAgYXZhaWxhYmxlIGluIGtlZXBpbmcgd2l0aCB0aGUgRGF0YSBVUkxcbiAgICAgIC8vICAgIHNwZWNpZmljYXRpb24gW1JGQzIzOTddLlxuICAgICAgLy8gICogSWYgbWltZVR5cGUgaXMgbm90IGF2YWlsYWJsZSByZXR1cm4gYSBEYXRhIFVSTFxuICAgICAgLy8gICAgd2l0aG91dCBhIG1lZGlhLXR5cGUuIFtSRkMyMzk3XS5cblxuICAgICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMyMzk3I3NlY3Rpb24tM1xuICAgICAgLy8gZGF0YXVybCAgICA6PSBcImRhdGE6XCIgWyBtZWRpYXR5cGUgXSBbIFwiO2Jhc2U2NFwiIF0gXCIsXCIgZGF0YVxuICAgICAgLy8gbWVkaWF0eXBlICA6PSBbIHR5cGUgXCIvXCIgc3VidHlwZSBdICooIFwiO1wiIHBhcmFtZXRlciApXG4gICAgICAvLyBkYXRhICAgICAgIDo9ICp1cmxjaGFyXG4gICAgICAvLyBwYXJhbWV0ZXIgIDo9IGF0dHJpYnV0ZSBcIj1cIiB2YWx1ZVxuICAgICAgbGV0IGRhdGFVUkwgPSAnZGF0YTonXG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpXG5cbiAgICAgIGlmIChwYXJzZWQgIT09ICdmYWlsdXJlJykge1xuICAgICAgICBkYXRhVVJMICs9IHNlcmlhbGl6ZUFNaW1lVHlwZShwYXJzZWQpXG4gICAgICB9XG5cbiAgICAgIGRhdGFVUkwgKz0gJztiYXNlNjQsJ1xuXG4gICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoJ2xhdGluMScpXG5cbiAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgYnl0ZXMpIHtcbiAgICAgICAgZGF0YVVSTCArPSBidG9hKGRlY29kZXIud3JpdGUoY2h1bmspKVxuICAgICAgfVxuXG4gICAgICBkYXRhVVJMICs9IGJ0b2EoZGVjb2Rlci5lbmQoKSlcblxuICAgICAgcmV0dXJuIGRhdGFVUkxcbiAgICB9XG4gICAgY2FzZSAnVGV4dCc6IHtcbiAgICAgIC8vIDEuIExldCBlbmNvZGluZyBiZSBmYWlsdXJlXG4gICAgICBsZXQgZW5jb2RpbmcgPSAnZmFpbHVyZSdcblxuICAgICAgLy8gMi4gSWYgdGhlIGVuY29kaW5nTmFtZSBpcyBwcmVzZW50LCBzZXQgZW5jb2RpbmcgdG8gdGhlXG4gICAgICAvLyAgICByZXN1bHQgb2YgZ2V0dGluZyBhbiBlbmNvZGluZyBmcm9tIGVuY29kaW5nTmFtZS5cbiAgICAgIGlmIChlbmNvZGluZ05hbWUpIHtcbiAgICAgICAgZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZ05hbWUpXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIGVuY29kaW5nIGlzIGZhaWx1cmUsIGFuZCBtaW1lVHlwZSBpcyBwcmVzZW50OlxuICAgICAgaWYgKGVuY29kaW5nID09PSAnZmFpbHVyZScgJiYgbWltZVR5cGUpIHtcbiAgICAgICAgLy8gMS4gTGV0IHR5cGUgYmUgdGhlIHJlc3VsdCBvZiBwYXJzZSBhIE1JTUUgdHlwZVxuICAgICAgICAvLyAgICBnaXZlbiBtaW1lVHlwZS5cbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpXG5cbiAgICAgICAgLy8gMi4gSWYgdHlwZSBpcyBub3QgZmFpbHVyZSwgc2V0IGVuY29kaW5nIHRvIHRoZSByZXN1bHRcbiAgICAgICAgLy8gICAgb2YgZ2V0dGluZyBhbiBlbmNvZGluZyBmcm9tIHR5cGVcdTIwMTlzIHBhcmFtZXRlcnNbXCJjaGFyc2V0XCJdLlxuICAgICAgICBpZiAodHlwZSAhPT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgZW5jb2RpbmcgPSBnZXRFbmNvZGluZyh0eXBlLnBhcmFtZXRlcnMuZ2V0KCdjaGFyc2V0JykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgZW5jb2RpbmcgaXMgZmFpbHVyZSwgdGhlbiBzZXQgZW5jb2RpbmcgdG8gVVRGLTguXG4gICAgICBpZiAoZW5jb2RpbmcgPT09ICdmYWlsdXJlJykge1xuICAgICAgICBlbmNvZGluZyA9ICdVVEYtOCdcbiAgICAgIH1cblxuICAgICAgLy8gNS4gRGVjb2RlIGJ5dGVzIHVzaW5nIGZhbGxiYWNrIGVuY29kaW5nIGVuY29kaW5nLCBhbmRcbiAgICAgIC8vICAgIHJldHVybiB0aGUgcmVzdWx0LlxuICAgICAgcmV0dXJuIGRlY29kZShieXRlcywgZW5jb2RpbmcpXG4gICAgfVxuICAgIGNhc2UgJ0FycmF5QnVmZmVyJzoge1xuICAgICAgLy8gUmV0dXJuIGEgbmV3IEFycmF5QnVmZmVyIHdob3NlIGNvbnRlbnRzIGFyZSBieXRlcy5cbiAgICAgIGNvbnN0IHNlcXVlbmNlID0gY29tYmluZUJ5dGVTZXF1ZW5jZXMoYnl0ZXMpXG5cbiAgICAgIHJldHVybiBzZXF1ZW5jZS5idWZmZXJcbiAgICB9XG4gICAgY2FzZSAnQmluYXJ5U3RyaW5nJzoge1xuICAgICAgLy8gUmV0dXJuIGJ5dGVzIGFzIGEgYmluYXJ5IHN0cmluZywgaW4gd2hpY2ggZXZlcnkgYnl0ZVxuICAgICAgLy8gIGlzIHJlcHJlc2VudGVkIGJ5IGEgY29kZSB1bml0IG9mIGVxdWFsIHZhbHVlIFswLi4yNTVdLlxuICAgICAgbGV0IGJpbmFyeVN0cmluZyA9ICcnXG5cbiAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcignbGF0aW4xJylcblxuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBieXRlcykge1xuICAgICAgICBiaW5hcnlTdHJpbmcgKz0gZGVjb2Rlci53cml0ZShjaHVuaylcbiAgICAgIH1cblxuICAgICAgYmluYXJ5U3RyaW5nICs9IGRlY29kZXIuZW5kKClcblxuICAgICAgcmV0dXJuIGJpbmFyeVN0cmluZ1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2RlY29kZVxuICogQHBhcmFtIHtVaW50OEFycmF5W119IGlvUXVldWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNvZGluZ1xuICovXG5mdW5jdGlvbiBkZWNvZGUgKGlvUXVldWUsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGJ5dGVzID0gY29tYmluZUJ5dGVTZXF1ZW5jZXMoaW9RdWV1ZSlcblxuICAvLyAxLiBMZXQgQk9NRW5jb2RpbmcgYmUgdGhlIHJlc3VsdCBvZiBCT00gc25pZmZpbmcgaW9RdWV1ZS5cbiAgY29uc3QgQk9NRW5jb2RpbmcgPSBCT01TbmlmZmluZyhieXRlcylcblxuICBsZXQgc2xpY2UgPSAwXG5cbiAgLy8gMi4gSWYgQk9NRW5jb2RpbmcgaXMgbm9uLW51bGw6XG4gIGlmIChCT01FbmNvZGluZyAhPT0gbnVsbCkge1xuICAgIC8vIDEuIFNldCBlbmNvZGluZyB0byBCT01FbmNvZGluZy5cbiAgICBlbmNvZGluZyA9IEJPTUVuY29kaW5nXG5cbiAgICAvLyAyLiBSZWFkIHRocmVlIGJ5dGVzIGZyb20gaW9RdWV1ZSwgaWYgQk9NRW5jb2RpbmcgaXNcbiAgICAvLyAgICBVVEYtODsgb3RoZXJ3aXNlIHJlYWQgdHdvIGJ5dGVzLlxuICAgIC8vICAgIChEbyBub3RoaW5nIHdpdGggdGhvc2UgYnl0ZXMuKVxuICAgIHNsaWNlID0gQk9NRW5jb2RpbmcgPT09ICdVVEYtOCcgPyAzIDogMlxuICB9XG5cbiAgLy8gMy4gUHJvY2VzcyBhIHF1ZXVlIHdpdGggYW4gaW5zdGFuY2Ugb2YgZW5jb2RpbmdcdTIwMTlzXG4gIC8vICAgIGRlY29kZXIsIGlvUXVldWUsIG91dHB1dCwgYW5kIFwicmVwbGFjZW1lbnRcIi5cblxuICAvLyA0LiBSZXR1cm4gb3V0cHV0LlxuXG4gIGNvbnN0IHNsaWNlZCA9IGJ5dGVzLnNsaWNlKHNsaWNlKVxuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nKS5kZWNvZGUoc2xpY2VkKVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2JvbS1zbmlmZlxuICogQHBhcmFtIHtVaW50OEFycmF5fSBpb1F1ZXVlXG4gKi9cbmZ1bmN0aW9uIEJPTVNuaWZmaW5nIChpb1F1ZXVlKSB7XG4gIC8vIDEuIExldCBCT00gYmUgdGhlIHJlc3VsdCBvZiBwZWVraW5nIDMgYnl0ZXMgZnJvbSBpb1F1ZXVlLFxuICAvLyAgICBjb252ZXJ0ZWQgdG8gYSBieXRlIHNlcXVlbmNlLlxuICBjb25zdCBbYSwgYiwgY10gPSBpb1F1ZXVlXG5cbiAgLy8gMi4gRm9yIGVhY2ggb2YgdGhlIHJvd3MgaW4gdGhlIHRhYmxlIGJlbG93LCBzdGFydGluZyB3aXRoXG4gIC8vICAgIHRoZSBmaXJzdCBvbmUgYW5kIGdvaW5nIGRvd24sIGlmIEJPTSBzdGFydHMgd2l0aCB0aGVcbiAgLy8gICAgYnl0ZXMgZ2l2ZW4gaW4gdGhlIGZpcnN0IGNvbHVtbiwgdGhlbiByZXR1cm4gdGhlXG4gIC8vICAgIGVuY29kaW5nIGdpdmVuIGluIHRoZSBjZWxsIGluIHRoZSBzZWNvbmQgY29sdW1uIG9mIHRoYXRcbiAgLy8gICAgcm93LiBPdGhlcndpc2UsIHJldHVybiBudWxsLlxuICBpZiAoYSA9PT0gMHhFRiAmJiBiID09PSAweEJCICYmIGMgPT09IDB4QkYpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9IGVsc2UgaWYgKGEgPT09IDB4RkUgJiYgYiA9PT0gMHhGRikge1xuICAgIHJldHVybiAnVVRGLTE2QkUnXG4gIH0gZWxzZSBpZiAoYSA9PT0gMHhGRiAmJiBiID09PSAweEZFKSB7XG4gICAgcmV0dXJuICdVVEYtMTZMRSdcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogQHBhcmFtIHtVaW50OEFycmF5W119IHNlcXVlbmNlc1xuICovXG5mdW5jdGlvbiBjb21iaW5lQnl0ZVNlcXVlbmNlcyAoc2VxdWVuY2VzKSB7XG4gIGNvbnN0IHNpemUgPSBzZXF1ZW5jZXMucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgcmV0dXJuIGEgKyBiLmJ5dGVMZW5ndGhcbiAgfSwgMClcblxuICBsZXQgb2Zmc2V0ID0gMFxuXG4gIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgYS5zZXQoYiwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBiLmJ5dGVMZW5ndGhcbiAgICByZXR1cm4gYVxuICB9LCBuZXcgVWludDhBcnJheShzaXplKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIHJlYWRPcGVyYXRpb24sXG4gIGZpcmVBUHJvZ3Jlc3NFdmVudFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIHJlYWRPcGVyYXRpb24sXG4gIGZpcmVBUHJvZ3Jlc3NFdmVudFxufSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7XG4gIGtTdGF0ZSxcbiAga0Vycm9yLFxuICBrUmVzdWx0LFxuICBrRXZlbnRzLFxuICBrQWJvcnRlZFxufSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcblxuY2xhc3MgRmlsZVJlYWRlciBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXNba1N0YXRlXSA9ICdlbXB0eSdcbiAgICB0aGlzW2tSZXN1bHRdID0gbnVsbFxuICAgIHRoaXNba0Vycm9yXSA9IG51bGxcbiAgICB0aGlzW2tFdmVudHNdID0ge1xuICAgICAgbG9hZGVuZDogbnVsbCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgYWJvcnQ6IG51bGwsXG4gICAgICBsb2FkOiBudWxsLFxuICAgICAgcHJvZ3Jlc3M6IG51bGwsXG4gICAgICBsb2Fkc3RhcnQ6IG51bGxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZGZuLXJlYWRBc0FycmF5QnVmZmVyXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdidWZmZXInKS5CbG9ifSBibG9iXG4gICAqL1xuICByZWFkQXNBcnJheUJ1ZmZlciAoYmxvYikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcicgfSlcblxuICAgIGJsb2IgPSB3ZWJpZGwuY29udmVydGVycy5CbG9iKGJsb2IsIHsgc3RyaWN0OiBmYWxzZSB9KVxuXG4gICAgLy8gVGhlIHJlYWRBc0FycmF5QnVmZmVyKGJsb2IpIG1ldGhvZCwgd2hlbiBpbnZva2VkLFxuICAgIC8vIG11c3QgaW5pdGlhdGUgYSByZWFkIG9wZXJhdGlvbiBmb3IgYmxvYiB3aXRoIEFycmF5QnVmZmVyLlxuICAgIHJlYWRPcGVyYXRpb24odGhpcywgYmxvYiwgJ0FycmF5QnVmZmVyJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNyZWFkQXNCaW5hcnlTdHJpbmdcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2J1ZmZlcicpLkJsb2J9IGJsb2JcbiAgICovXG4gIHJlYWRBc0JpbmFyeVN0cmluZyAoYmxvYikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnRmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcnIH0pXG5cbiAgICBibG9iID0gd2ViaWRsLmNvbnZlcnRlcnMuQmxvYihibG9iLCB7IHN0cmljdDogZmFsc2UgfSlcblxuICAgIC8vIFRoZSByZWFkQXNCaW5hcnlTdHJpbmcoYmxvYikgbWV0aG9kLCB3aGVuIGludm9rZWQsXG4gICAgLy8gbXVzdCBpbml0aWF0ZSBhIHJlYWQgb3BlcmF0aW9uIGZvciBibG9iIHdpdGggQmluYXJ5U3RyaW5nLlxuICAgIHJlYWRPcGVyYXRpb24odGhpcywgYmxvYiwgJ0JpbmFyeVN0cmluZycpXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jcmVhZEFzRGF0YVRleHRcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2J1ZmZlcicpLkJsb2J9IGJsb2JcbiAgICogQHBhcmFtIHtzdHJpbmc/fSBlbmNvZGluZ1xuICAgKi9cbiAgcmVhZEFzVGV4dCAoYmxvYiwgZW5jb2RpbmcgPSB1bmRlZmluZWQpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0ZpbGVSZWFkZXIucmVhZEFzVGV4dCcgfSlcblxuICAgIGJsb2IgPSB3ZWJpZGwuY29udmVydGVycy5CbG9iKGJsb2IsIHsgc3RyaWN0OiBmYWxzZSB9KVxuXG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVuY29kaW5nID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKGVuY29kaW5nKVxuICAgIH1cblxuICAgIC8vIFRoZSByZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKSBtZXRob2QsIHdoZW4gaW52b2tlZCxcbiAgICAvLyBtdXN0IGluaXRpYXRlIGEgcmVhZCBvcGVyYXRpb24gZm9yIGJsb2Igd2l0aCBUZXh0IGFuZCBlbmNvZGluZy5cbiAgICByZWFkT3BlcmF0aW9uKHRoaXMsIGJsb2IsICdUZXh0JywgZW5jb2RpbmcpXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZGZuLXJlYWRBc0RhdGFVUkxcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2J1ZmZlcicpLkJsb2J9IGJsb2JcbiAgICovXG4gIHJlYWRBc0RhdGFVUkwgKGJsb2IpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0ZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCcgfSlcblxuICAgIGJsb2IgPSB3ZWJpZGwuY29udmVydGVycy5CbG9iKGJsb2IsIHsgc3RyaWN0OiBmYWxzZSB9KVxuXG4gICAgLy8gVGhlIHJlYWRBc0RhdGFVUkwoYmxvYikgbWV0aG9kLCB3aGVuIGludm9rZWQsIG11c3RcbiAgICAvLyBpbml0aWF0ZSBhIHJlYWQgb3BlcmF0aW9uIGZvciBibG9iIHdpdGggRGF0YVVSTC5cbiAgICByZWFkT3BlcmF0aW9uKHRoaXMsIGJsb2IsICdEYXRhVVJMJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkZm4tYWJvcnRcbiAgICovXG4gIGFib3J0ICgpIHtcbiAgICAvLyAxLiBJZiB0aGlzJ3Mgc3RhdGUgaXMgXCJlbXB0eVwiIG9yIGlmIHRoaXMncyBzdGF0ZSBpc1xuICAgIC8vICAgIFwiZG9uZVwiIHNldCB0aGlzJ3MgcmVzdWx0IHRvIG51bGwgYW5kIHRlcm1pbmF0ZVxuICAgIC8vICAgIHRoaXMgYWxnb3JpdGhtLlxuICAgIGlmICh0aGlzW2tTdGF0ZV0gPT09ICdlbXB0eScgfHwgdGhpc1trU3RhdGVdID09PSAnZG9uZScpIHtcbiAgICAgIHRoaXNba1Jlc3VsdF0gPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyAyLiBJZiB0aGlzJ3Mgc3RhdGUgaXMgXCJsb2FkaW5nXCIgc2V0IHRoaXMncyBzdGF0ZSB0b1xuICAgIC8vICAgIFwiZG9uZVwiIGFuZCBzZXQgdGhpcydzIHJlc3VsdCB0byBudWxsLlxuICAgIGlmICh0aGlzW2tTdGF0ZV0gPT09ICdsb2FkaW5nJykge1xuICAgICAgdGhpc1trU3RhdGVdID0gJ2RvbmUnXG4gICAgICB0aGlzW2tSZXN1bHRdID0gbnVsbFxuICAgIH1cblxuICAgIC8vIDMuIElmIHRoZXJlIGFyZSBhbnkgdGFza3MgZnJvbSB0aGlzIG9uIHRoZSBmaWxlIHJlYWRpbmdcbiAgICAvLyAgICB0YXNrIHNvdXJjZSBpbiBhbiBhZmZpbGlhdGVkIHRhc2sgcXVldWUsIHRoZW4gcmVtb3ZlXG4gICAgLy8gICAgdGhvc2UgdGFza3MgZnJvbSB0aGF0IHRhc2sgcXVldWUuXG4gICAgdGhpc1trQWJvcnRlZF0gPSB0cnVlXG5cbiAgICAvLyA0LiBUZXJtaW5hdGUgdGhlIGFsZ29yaXRobSBmb3IgdGhlIHJlYWQgbWV0aG9kIGJlaW5nIHByb2Nlc3NlZC5cbiAgICAvLyBUT0RPXG5cbiAgICAvLyA1LiBGaXJlIGEgcHJvZ3Jlc3MgZXZlbnQgY2FsbGVkIGFib3J0IGF0IHRoaXMuXG4gICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdhYm9ydCcsIHRoaXMpXG5cbiAgICAvLyA2LiBJZiB0aGlzJ3Mgc3RhdGUgaXMgbm90IFwibG9hZGluZ1wiLCBmaXJlIGEgcHJvZ3Jlc3NcbiAgICAvLyAgICBldmVudCBjYWxsZWQgbG9hZGVuZCBhdCB0aGlzLlxuICAgIGlmICh0aGlzW2tTdGF0ZV0gIT09ICdsb2FkaW5nJykge1xuICAgICAgZmlyZUFQcm9ncmVzc0V2ZW50KCdsb2FkZW5kJywgdGhpcylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZG9tLWZpbGVyZWFkZXItcmVhZHlzdGF0ZVxuICAgKi9cbiAgZ2V0IHJlYWR5U3RhdGUgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICBzd2l0Y2ggKHRoaXNba1N0YXRlXSkge1xuICAgICAgY2FzZSAnZW1wdHknOiByZXR1cm4gdGhpcy5FTVBUWVxuICAgICAgY2FzZSAnbG9hZGluZyc6IHJldHVybiB0aGlzLkxPQURJTkdcbiAgICAgIGNhc2UgJ2RvbmUnOiByZXR1cm4gdGhpcy5ET05FXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2RvbS1maWxlcmVhZGVyLXJlc3VsdFxuICAgKi9cbiAgZ2V0IHJlc3VsdCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIC8vIFRoZSByZXN1bHQgYXR0cmlidXRlXHUyMDE5cyBnZXR0ZXIsIHdoZW4gaW52b2tlZCwgbXVzdCByZXR1cm5cbiAgICAvLyB0aGlzJ3MgcmVzdWx0LlxuICAgIHJldHVybiB0aGlzW2tSZXN1bHRdXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZG9tLWZpbGVyZWFkZXItZXJyb3JcbiAgICovXG4gIGdldCBlcnJvciAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIC8vIFRoZSBlcnJvciBhdHRyaWJ1dGVcdTIwMTlzIGdldHRlciwgd2hlbiBpbnZva2VkLCBtdXN0IHJldHVyblxuICAgIC8vIHRoaXMncyBlcnJvci5cbiAgICByZXR1cm4gdGhpc1trRXJyb3JdXG4gIH1cblxuICBnZXQgb25sb2FkZW5kICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgcmV0dXJuIHRoaXNba0V2ZW50c10ubG9hZGVuZFxuICB9XG5cbiAgc2V0IG9ubG9hZGVuZCAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgaWYgKHRoaXNba0V2ZW50c10ubG9hZGVuZCkge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZW5kJywgdGhpc1trRXZlbnRzXS5sb2FkZW5kKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNba0V2ZW50c10ubG9hZGVuZCA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1trRXZlbnRzXS5sb2FkZW5kID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBvbmVycm9yICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgcmV0dXJuIHRoaXNba0V2ZW50c10uZXJyb3JcbiAgfVxuXG4gIHNldCBvbmVycm9yIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICBpZiAodGhpc1trRXZlbnRzXS5lcnJvcikge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXNba0V2ZW50c10uZXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1trRXZlbnRzXS5lcnJvciA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNba0V2ZW50c10uZXJyb3IgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9ubG9hZHN0YXJ0ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgcmV0dXJuIHRoaXNba0V2ZW50c10ubG9hZHN0YXJ0XG4gIH1cblxuICBzZXQgb25sb2Fkc3RhcnQgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIGlmICh0aGlzW2tFdmVudHNdLmxvYWRzdGFydCkge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2Fkc3RhcnQnLCB0aGlzW2tFdmVudHNdLmxvYWRzdGFydClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmxvYWRzdGFydCA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRzdGFydCcsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmxvYWRzdGFydCA9IG51bGxcbiAgICB9XG4gIH1cblxuICBnZXQgb25wcm9ncmVzcyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIHJldHVybiB0aGlzW2tFdmVudHNdLnByb2dyZXNzXG4gIH1cblxuICBzZXQgb25wcm9ncmVzcyAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBGaWxlUmVhZGVyKVxuXG4gICAgaWYgKHRoaXNba0V2ZW50c10ucHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzW2tFdmVudHNdLnByb2dyZXNzKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNba0V2ZW50c10ucHJvZ3Jlc3MgPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tFdmVudHNdLnByb2dyZXNzID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBvbmxvYWQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICByZXR1cm4gdGhpc1trRXZlbnRzXS5sb2FkXG4gIH1cblxuICBzZXQgb25sb2FkIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICBpZiAodGhpc1trRXZlbnRzXS5sb2FkKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzW2tFdmVudHNdLmxvYWQpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1trRXZlbnRzXS5sb2FkID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmxvYWQgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uYWJvcnQgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEZpbGVSZWFkZXIpXG5cbiAgICByZXR1cm4gdGhpc1trRXZlbnRzXS5hYm9ydFxuICB9XG5cbiAgc2V0IG9uYWJvcnQgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRmlsZVJlYWRlcilcblxuICAgIGlmICh0aGlzW2tFdmVudHNdLmFib3J0KSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGhpc1trRXZlbnRzXS5hYm9ydClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2tFdmVudHNdLmFib3J0ID0gZm5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBmbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1trRXZlbnRzXS5hYm9ydCA9IG51bGxcbiAgICB9XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2RvbS1maWxlcmVhZGVyLWVtcHR5XG5GaWxlUmVhZGVyLkVNUFRZID0gRmlsZVJlYWRlci5wcm90b3R5cGUuRU1QVFkgPSAwXG4vLyBodHRwczovL3czYy5naXRodWIuaW8vRmlsZUFQSS8jZG9tLWZpbGVyZWFkZXItbG9hZGluZ1xuRmlsZVJlYWRlci5MT0FESU5HID0gRmlsZVJlYWRlci5wcm90b3R5cGUuTE9BRElORyA9IDFcbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkb20tZmlsZXJlYWRlci1kb25lXG5GaWxlUmVhZGVyLkRPTkUgPSBGaWxlUmVhZGVyLnByb3RvdHlwZS5ET05FID0gMlxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhGaWxlUmVhZGVyLnByb3RvdHlwZSwge1xuICBFTVBUWTogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgTE9BRElORzogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgRE9ORTogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgcmVhZEFzQXJyYXlCdWZmZXI6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlYWRBc0JpbmFyeVN0cmluZzoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVhZEFzVGV4dDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVhZEFzRGF0YVVSTDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYWJvcnQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlYWR5U3RhdGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHJlc3VsdDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZXJyb3I6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ubG9hZHN0YXJ0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBvbnByb2dyZXNzOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBvbmxvYWQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9uYWJvcnQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9uZXJyb3I6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ubG9hZGVuZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ0ZpbGVSZWFkZXInLFxuICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRmlsZVJlYWRlciwge1xuICBFTVBUWTogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgTE9BRElORzogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgRE9ORTogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9yc1xufSlcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEZpbGVSZWFkZXJcbn1cbiIsICIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtDb25zdHJ1Y3Q6IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpLmtDb25zdHJ1Y3Rcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbmNvbnN0IHsgVVJMU2VyaWFsaXplciB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvZGF0YVVSTCcpXG5jb25zdCB7IGlzVmFsaWRIZWFkZXJOYW1lIH0gPSByZXF1aXJlKCcuLi9mZXRjaC91dGlsJylcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtZXF1YWxzXG4gKiBAcGFyYW0ge1VSTH0gQVxuICogQHBhcmFtIHtVUkx9IEJcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gZXhjbHVkZUZyYWdtZW50XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gdXJsRXF1YWxzIChBLCBCLCBleGNsdWRlRnJhZ21lbnQgPSBmYWxzZSkge1xuICBjb25zdCBzZXJpYWxpemVkQSA9IFVSTFNlcmlhbGl6ZXIoQSwgZXhjbHVkZUZyYWdtZW50KVxuXG4gIGNvbnN0IHNlcmlhbGl6ZWRCID0gVVJMU2VyaWFsaXplcihCLCBleGNsdWRlRnJhZ21lbnQpXG5cbiAgcmV0dXJuIHNlcmlhbGl6ZWRBID09PSBzZXJpYWxpemVkQlxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nocm9taXVtL2Nocm9taXVtL2Jsb2IvNjk0ZDIwZDEzNGNiNTUzZDhkODllNTUwMGI5MTQ4MDEyYjFiYTI5OS9jb250ZW50L2Jyb3dzZXIvY2FjaGVfc3RvcmFnZS9jYWNoZV9zdG9yYWdlX2NhY2hlLmNjI0wyNjAtTDI2MlxuICogQHBhcmFtIHtzdHJpbmd9IGhlYWRlclxuICovXG5mdW5jdGlvbiBmaWVsZFZhbHVlcyAoaGVhZGVyKSB7XG4gIGFzc2VydChoZWFkZXIgIT09IG51bGwpXG5cbiAgY29uc3QgdmFsdWVzID0gW11cblxuICBmb3IgKGxldCB2YWx1ZSBvZiBoZWFkZXIuc3BsaXQoJywnKSkge1xuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpXG5cbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkge1xuICAgICAgY29udGludWVcbiAgICB9IGVsc2UgaWYgKCFpc1ZhbGlkSGVhZGVyTmFtZSh2YWx1ZSkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdmFsdWVzLnB1c2godmFsdWUpXG4gIH1cblxuICByZXR1cm4gdmFsdWVzXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB1cmxFcXVhbHMsXG4gIGZpZWxkVmFsdWVzXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsga0NvbnN0cnVjdCB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgdXJsRXF1YWxzLCBmaWVsZFZhbHVlczogZ2V0RmllbGRWYWx1ZXMgfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IGtFbnVtZXJhYmxlUHJvcGVydHksIGlzRGlzdHVyYmVkIH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuY29uc3QgeyBrSGVhZGVyc0xpc3QgfSA9IHJlcXVpcmUoJy4uL2NvcmUvc3ltYm9scycpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcbmNvbnN0IHsgUmVzcG9uc2UsIGNsb25lUmVzcG9uc2UgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL3Jlc3BvbnNlJylcbmNvbnN0IHsgUmVxdWVzdCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvcmVxdWVzdCcpXG5jb25zdCB7IGtTdGF0ZSwga0hlYWRlcnMsIGtHdWFyZCwga1JlYWxtIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9zeW1ib2xzJylcbmNvbnN0IHsgZmV0Y2hpbmcgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2luZGV4JylcbmNvbnN0IHsgdXJsSXNIdHRwSHR0cHNTY2hlbWUsIGNyZWF0ZURlZmVycmVkUHJvbWlzZSwgcmVhZEFsbEJ5dGVzIH0gPSByZXF1aXJlKCcuLi9mZXRjaC91dGlsJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCB7IGdldEdsb2JhbERpc3BhdGNoZXIgfSA9IHJlcXVpcmUoJy4uL2dsb2JhbCcpXG5cbi8qKlxuICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZGZuLWNhY2hlLWJhdGNoLW9wZXJhdGlvblxuICogQHR5cGVkZWYge09iamVjdH0gQ2FjaGVCYXRjaE9wZXJhdGlvblxuICogQHByb3BlcnR5IHsnZGVsZXRlJyB8ICdwdXQnfSB0eXBlXG4gKiBAcHJvcGVydHkge2FueX0gcmVxdWVzdFxuICogQHByb3BlcnR5IHthbnl9IHJlc3BvbnNlXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvY2FjaGUnKS5DYWNoZVF1ZXJ5T3B0aW9uc30gb3B0aW9uc1xuICovXG5cbi8qKlxuICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZGZuLXJlcXVlc3QtcmVzcG9uc2UtbGlzdFxuICogQHR5cGVkZWYge1thbnksIGFueV1bXX0gcmVxdWVzdFJlc3BvbnNlTGlzdFxuICovXG5cbmNsYXNzIENhY2hlIHtcbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2Rmbi1yZWxldmFudC1yZXF1ZXN0LXJlc3BvbnNlLWxpc3RcbiAgICogQHR5cGUge3JlcXVlc3RSZXNwb25zZUxpc3R9XG4gICAqL1xuICAjcmVsZXZhbnRSZXF1ZXN0UmVzcG9uc2VMaXN0XG5cbiAgY29uc3RydWN0b3IgKCkge1xuICAgIGlmIChhcmd1bWVudHNbMF0gIT09IGtDb25zdHJ1Y3QpIHtcbiAgICAgIHdlYmlkbC5pbGxlZ2FsQ29uc3RydWN0b3IoKVxuICAgIH1cblxuICAgIHRoaXMuI3JlbGV2YW50UmVxdWVzdFJlc3BvbnNlTGlzdCA9IGFyZ3VtZW50c1sxXVxuICB9XG5cbiAgYXN5bmMgbWF0Y2ggKHJlcXVlc3QsIG9wdGlvbnMgPSB7fSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZS5tYXRjaCcgfSlcblxuICAgIHJlcXVlc3QgPSB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyhyZXF1ZXN0KVxuICAgIG9wdGlvbnMgPSB3ZWJpZGwuY29udmVydGVycy5DYWNoZVF1ZXJ5T3B0aW9ucyhvcHRpb25zKVxuXG4gICAgY29uc3QgcCA9IGF3YWl0IHRoaXMubWF0Y2hBbGwocmVxdWVzdCwgb3B0aW9ucylcblxuICAgIGlmIChwLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmV0dXJuIHBbMF1cbiAgfVxuXG4gIGFzeW5jIG1hdGNoQWxsIChyZXF1ZXN0ID0gdW5kZWZpbmVkLCBvcHRpb25zID0ge30pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZSlcblxuICAgIGlmIChyZXF1ZXN0ICE9PSB1bmRlZmluZWQpIHJlcXVlc3QgPSB3ZWJpZGwuY29udmVydGVycy5SZXF1ZXN0SW5mbyhyZXF1ZXN0KVxuICAgIG9wdGlvbnMgPSB3ZWJpZGwuY29udmVydGVycy5DYWNoZVF1ZXJ5T3B0aW9ucyhvcHRpb25zKVxuXG4gICAgLy8gMS5cbiAgICBsZXQgciA9IG51bGxcblxuICAgIC8vIDIuXG4gICAgaWYgKHJlcXVlc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICAgIC8vIDIuMS4xXG4gICAgICAgIHIgPSByZXF1ZXN0W2tTdGF0ZV1cblxuICAgICAgICAvLyAyLjEuMlxuICAgICAgICBpZiAoci5tZXRob2QgIT09ICdHRVQnICYmICFvcHRpb25zLmlnbm9yZU1ldGhvZCkge1xuICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyAyLjIuMVxuICAgICAgICByID0gbmV3IFJlcXVlc3QocmVxdWVzdClba1N0YXRlXVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDUuXG4gICAgLy8gNS4xXG4gICAgY29uc3QgcmVzcG9uc2VzID0gW11cblxuICAgIC8vIDUuMlxuICAgIGlmIChyZXF1ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIDUuMi4xXG4gICAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiB0aGlzLiNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3QpIHtcbiAgICAgICAgcmVzcG9uc2VzLnB1c2gocmVxdWVzdFJlc3BvbnNlWzFdKVxuICAgICAgfVxuICAgIH0gZWxzZSB7IC8vIDUuM1xuICAgICAgLy8gNS4zLjFcbiAgICAgIGNvbnN0IHJlcXVlc3RSZXNwb25zZXMgPSB0aGlzLiNxdWVyeUNhY2hlKHIsIG9wdGlvbnMpXG5cbiAgICAgIC8vIDUuMy4yXG4gICAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiByZXF1ZXN0UmVzcG9uc2VzKSB7XG4gICAgICAgIHJlc3BvbnNlcy5wdXNoKHJlcXVlc3RSZXNwb25zZVsxXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA1LjRcbiAgICAvLyBXZSBkb24ndCBpbXBsZW1lbnQgQ09ScyBzbyB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciB0aGUgcmVzcG9uc2VzLCB5YXkhXG5cbiAgICAvLyA1LjUuMVxuICAgIGNvbnN0IHJlc3BvbnNlTGlzdCA9IFtdXG5cbiAgICAvLyA1LjUuMlxuICAgIGZvciAoY29uc3QgcmVzcG9uc2Ugb2YgcmVzcG9uc2VzKSB7XG4gICAgICAvLyA1LjUuMi4xXG4gICAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IG5ldyBSZXNwb25zZShyZXNwb25zZS5ib2R5Py5zb3VyY2UgPz8gbnVsbClcbiAgICAgIGNvbnN0IGJvZHkgPSByZXNwb25zZU9iamVjdFtrU3RhdGVdLmJvZHlcbiAgICAgIHJlc3BvbnNlT2JqZWN0W2tTdGF0ZV0gPSByZXNwb25zZVxuICAgICAgcmVzcG9uc2VPYmplY3Rba1N0YXRlXS5ib2R5ID0gYm9keVxuICAgICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tIZWFkZXJzTGlzdF0gPSByZXNwb25zZS5oZWFkZXJzTGlzdFxuICAgICAgcmVzcG9uc2VPYmplY3Rba0hlYWRlcnNdW2tHdWFyZF0gPSAnaW1tdXRhYmxlJ1xuXG4gICAgICByZXNwb25zZUxpc3QucHVzaChyZXNwb25zZU9iamVjdClcbiAgICB9XG5cbiAgICAvLyA2LlxuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHJlc3BvbnNlTGlzdClcbiAgfVxuXG4gIGFzeW5jIGFkZCAocmVxdWVzdCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZS5hZGQnIH0pXG5cbiAgICByZXF1ZXN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8ocmVxdWVzdClcblxuICAgIC8vIDEuXG4gICAgY29uc3QgcmVxdWVzdHMgPSBbcmVxdWVzdF1cblxuICAgIC8vIDIuXG4gICAgY29uc3QgcmVzcG9uc2VBcnJheVByb21pc2UgPSB0aGlzLmFkZEFsbChyZXF1ZXN0cylcblxuICAgIC8vIDMuXG4gICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlQXJyYXlQcm9taXNlXG4gIH1cblxuICBhc3luYyBhZGRBbGwgKHJlcXVlc3RzKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGUpXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0NhY2hlLmFkZEFsbCcgfSlcblxuICAgIHJlcXVlc3RzID0gd2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPFJlcXVlc3RJbmZvPiddKHJlcXVlc3RzKVxuXG4gICAgLy8gMS5cbiAgICBjb25zdCByZXNwb25zZVByb21pc2VzID0gW11cblxuICAgIC8vIDIuXG4gICAgY29uc3QgcmVxdWVzdExpc3QgPSBbXVxuXG4gICAgLy8gMy5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgcmVxdWVzdHMpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMy4xXG4gICAgICBjb25zdCByID0gcmVxdWVzdFtrU3RhdGVdXG5cbiAgICAgIC8vIDMuMlxuICAgICAgaWYgKCF1cmxJc0h0dHBIdHRwc1NjaGVtZShyLnVybCkgfHwgci5tZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICAgIHRocm93IHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICBoZWFkZXI6ICdDYWNoZS5hZGRBbGwnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdFeHBlY3RlZCBodHRwL3Mgc2NoZW1lIHdoZW4gbWV0aG9kIGlzIG5vdCBHRVQuJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDQuXG4gICAgLyoqIEB0eXBlIHtSZXR1cm5UeXBlPHR5cGVvZiBmZXRjaGluZz5bXX0gKi9cbiAgICBjb25zdCBmZXRjaENvbnRyb2xsZXJzID0gW11cblxuICAgIC8vIDUuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHJlcXVlc3RzKSB7XG4gICAgICAvLyA1LjFcbiAgICAgIGNvbnN0IHIgPSBuZXcgUmVxdWVzdChyZXF1ZXN0KVtrU3RhdGVdXG5cbiAgICAgIC8vIDUuMlxuICAgICAgaWYgKCF1cmxJc0h0dHBIdHRwc1NjaGVtZShyLnVybCkpIHtcbiAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLmFkZEFsbCcsXG4gICAgICAgICAgbWVzc2FnZTogJ0V4cGVjdGVkIGh0dHAvcyBzY2hlbWUuJ1xuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyA1LjRcbiAgICAgIHIuaW5pdGlhdG9yID0gJ2ZldGNoJ1xuICAgICAgci5kZXN0aW5hdGlvbiA9ICdzdWJyZXNvdXJjZSdcblxuICAgICAgLy8gNS41XG4gICAgICByZXF1ZXN0TGlzdC5wdXNoKHIpXG5cbiAgICAgIC8vIDUuNlxuICAgICAgY29uc3QgcmVzcG9uc2VQcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgICAgLy8gNS43XG4gICAgICBmZXRjaENvbnRyb2xsZXJzLnB1c2goZmV0Y2hpbmcoe1xuICAgICAgICByZXF1ZXN0OiByLFxuICAgICAgICBkaXNwYXRjaGVyOiBnZXRHbG9iYWxEaXNwYXRjaGVyKCksXG4gICAgICAgIHByb2Nlc3NSZXNwb25zZSAocmVzcG9uc2UpIHtcbiAgICAgICAgICAvLyAxLlxuICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSAnZXJyb3InIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA2IHx8IHJlc3BvbnNlLnN0YXR1cyA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPiAyOTkpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlUHJvbWlzZS5yZWplY3Qod2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgICBoZWFkZXI6ICdDYWNoZS5hZGRBbGwnLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnUmVjZWl2ZWQgYW4gaW52YWxpZCBzdGF0dXMgY29kZSBvciB0aGUgcmVxdWVzdCBmYWlsZWQuJ1xuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oZWFkZXJzTGlzdC5jb250YWlucygndmFyeScpKSB7IC8vIDIuXG4gICAgICAgICAgICAvLyAyLjFcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWVzID0gZ2V0RmllbGRWYWx1ZXMocmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCd2YXJ5JykpXG5cbiAgICAgICAgICAgIC8vIDIuMlxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZFZhbHVlIG9mIGZpZWxkVmFsdWVzKSB7XG4gICAgICAgICAgICAgIC8vIDIuMi4xXG4gICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVByb21pc2UucmVqZWN0KHdlYmlkbC5lcnJvcnMuZXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLmFkZEFsbCcsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnaW52YWxpZCB2YXJ5IGZpZWxkIHZhbHVlJ1xuICAgICAgICAgICAgICAgIH0pKVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sbGVyIG9mIGZldGNoQ29udHJvbGxlcnMpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzUmVzcG9uc2VFbmRPZkJvZHkgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgLy8gMS5cbiAgICAgICAgICBpZiAocmVzcG9uc2UuYWJvcnRlZCkge1xuICAgICAgICAgICAgcmVzcG9uc2VQcm9taXNlLnJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdhYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDIuXG4gICAgICAgICAgcmVzcG9uc2VQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpXG4gICAgICAgIH1cbiAgICAgIH0pKVxuXG4gICAgICAvLyA1LjhcbiAgICAgIHJlc3BvbnNlUHJvbWlzZXMucHVzaChyZXNwb25zZVByb21pc2UucHJvbWlzZSlcbiAgICB9XG5cbiAgICAvLyA2LlxuICAgIGNvbnN0IHAgPSBQcm9taXNlLmFsbChyZXNwb25zZVByb21pc2VzKVxuXG4gICAgLy8gNy5cbiAgICBjb25zdCByZXNwb25zZXMgPSBhd2FpdCBwXG5cbiAgICAvLyA3LjFcbiAgICBjb25zdCBvcGVyYXRpb25zID0gW11cblxuICAgIC8vIDcuMlxuICAgIGxldCBpbmRleCA9IDBcblxuICAgIC8vIDcuM1xuICAgIGZvciAoY29uc3QgcmVzcG9uc2Ugb2YgcmVzcG9uc2VzKSB7XG4gICAgICAvLyA3LjMuMVxuICAgICAgLyoqIEB0eXBlIHtDYWNoZUJhdGNoT3BlcmF0aW9ufSAqL1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0ge1xuICAgICAgICB0eXBlOiAncHV0JywgLy8gNy4zLjJcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdExpc3RbaW5kZXhdLCAvLyA3LjMuM1xuICAgICAgICByZXNwb25zZSAvLyA3LjMuNFxuICAgICAgfVxuXG4gICAgICBvcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKSAvLyA3LjMuNVxuXG4gICAgICBpbmRleCsrIC8vIDcuMy42XG4gICAgfVxuXG4gICAgLy8gNy41XG4gICAgY29uc3QgY2FjaGVKb2JQcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgIC8vIDcuNi4xXG4gICAgbGV0IGVycm9yRGF0YSA9IG51bGxcblxuICAgIC8vIDcuNi4yXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuI2JhdGNoQ2FjaGVPcGVyYXRpb25zKG9wZXJhdGlvbnMpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3JEYXRhID0gZVxuICAgIH1cblxuICAgIC8vIDcuNi4zXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgLy8gNy42LjMuMVxuICAgICAgaWYgKGVycm9yRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICBjYWNoZUpvYlByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyA3LjYuMy4yXG4gICAgICAgIGNhY2hlSm9iUHJvbWlzZS5yZWplY3QoZXJyb3JEYXRhKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyA3LjdcbiAgICByZXR1cm4gY2FjaGVKb2JQcm9taXNlLnByb21pc2VcbiAgfVxuXG4gIGFzeW5jIHB1dCAocmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDIsIHsgaGVhZGVyOiAnQ2FjaGUucHV0JyB9KVxuXG4gICAgcmVxdWVzdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvKHJlcXVlc3QpXG4gICAgcmVzcG9uc2UgPSB3ZWJpZGwuY29udmVydGVycy5SZXNwb25zZShyZXNwb25zZSlcblxuICAgIC8vIDEuXG4gICAgbGV0IGlubmVyUmVxdWVzdCA9IG51bGxcblxuICAgIC8vIDIuXG4gICAgaWYgKHJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICBpbm5lclJlcXVlc3QgPSByZXF1ZXN0W2tTdGF0ZV1cbiAgICB9IGVsc2UgeyAvLyAzLlxuICAgICAgaW5uZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QocmVxdWVzdClba1N0YXRlXVxuICAgIH1cblxuICAgIC8vIDQuXG4gICAgaWYgKCF1cmxJc0h0dHBIdHRwc1NjaGVtZShpbm5lclJlcXVlc3QudXJsKSB8fCBpbm5lclJlcXVlc3QubWV0aG9kICE9PSAnR0VUJykge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdDYWNoZS5wdXQnLFxuICAgICAgICBtZXNzYWdlOiAnRXhwZWN0ZWQgYW4gaHR0cC9zIHNjaGVtZSB3aGVuIG1ldGhvZCBpcyBub3QgR0VUJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyA1LlxuICAgIGNvbnN0IGlubmVyUmVzcG9uc2UgPSByZXNwb25zZVtrU3RhdGVdXG5cbiAgICAvLyA2LlxuICAgIGlmIChpbm5lclJlc3BvbnNlLnN0YXR1cyA9PT0gMjA2KSB7XG4gICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgIGhlYWRlcjogJ0NhY2hlLnB1dCcsXG4gICAgICAgIG1lc3NhZ2U6ICdHb3QgMjA2IHN0YXR1cydcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gNy5cbiAgICBpZiAoaW5uZXJSZXNwb25zZS5oZWFkZXJzTGlzdC5jb250YWlucygndmFyeScpKSB7XG4gICAgICAvLyA3LjEuXG4gICAgICBjb25zdCBmaWVsZFZhbHVlcyA9IGdldEZpZWxkVmFsdWVzKGlubmVyUmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCd2YXJ5JykpXG5cbiAgICAgIC8vIDcuMi5cbiAgICAgIGZvciAoY29uc3QgZmllbGRWYWx1ZSBvZiBmaWVsZFZhbHVlcykge1xuICAgICAgICAvLyA3LjIuMVxuICAgICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gJyonKSB7XG4gICAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUucHV0JyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdHb3QgKiB2YXJ5IGZpZWxkIHZhbHVlJ1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA4LlxuICAgIGlmIChpbm5lclJlc3BvbnNlLmJvZHkgJiYgKGlzRGlzdHVyYmVkKGlubmVyUmVzcG9uc2UuYm9keS5zdHJlYW0pIHx8IGlubmVyUmVzcG9uc2UuYm9keS5zdHJlYW0ubG9ja2VkKSkge1xuICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICBoZWFkZXI6ICdDYWNoZS5wdXQnLFxuICAgICAgICBtZXNzYWdlOiAnUmVzcG9uc2UgYm9keSBpcyBsb2NrZWQgb3IgZGlzdHVyYmVkJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyA5LlxuICAgIGNvbnN0IGNsb25lZFJlc3BvbnNlID0gY2xvbmVSZXNwb25zZShpbm5lclJlc3BvbnNlKVxuXG4gICAgLy8gMTAuXG4gICAgY29uc3QgYm9keVJlYWRQcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgIC8vIDExLlxuICAgIGlmIChpbm5lclJlc3BvbnNlLmJvZHkgIT0gbnVsbCkge1xuICAgICAgLy8gMTEuMVxuICAgICAgY29uc3Qgc3RyZWFtID0gaW5uZXJSZXNwb25zZS5ib2R5LnN0cmVhbVxuXG4gICAgICAvLyAxMS4yXG4gICAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKClcblxuICAgICAgLy8gMTEuM1xuICAgICAgcmVhZEFsbEJ5dGVzKHJlYWRlcikudGhlbihib2R5UmVhZFByb21pc2UucmVzb2x2ZSwgYm9keVJlYWRQcm9taXNlLnJlamVjdClcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keVJlYWRQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKVxuICAgIH1cblxuICAgIC8vIDEyLlxuICAgIC8qKiBAdHlwZSB7Q2FjaGVCYXRjaE9wZXJhdGlvbltdfSAqL1xuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSBbXVxuXG4gICAgLy8gMTMuXG4gICAgLyoqIEB0eXBlIHtDYWNoZUJhdGNoT3BlcmF0aW9ufSAqL1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdwdXQnLCAvLyAxNC5cbiAgICAgIHJlcXVlc3Q6IGlubmVyUmVxdWVzdCwgLy8gMTUuXG4gICAgICByZXNwb25zZTogY2xvbmVkUmVzcG9uc2UgLy8gMTYuXG4gICAgfVxuXG4gICAgLy8gMTcuXG4gICAgb3BlcmF0aW9ucy5wdXNoKG9wZXJhdGlvbilcblxuICAgIC8vIDE5LlxuICAgIGNvbnN0IGJ5dGVzID0gYXdhaXQgYm9keVJlYWRQcm9taXNlLnByb21pc2VcblxuICAgIGlmIChjbG9uZWRSZXNwb25zZS5ib2R5ICE9IG51bGwpIHtcbiAgICAgIGNsb25lZFJlc3BvbnNlLmJvZHkuc291cmNlID0gYnl0ZXNcbiAgICB9XG5cbiAgICAvLyAxOS4xXG4gICAgY29uc3QgY2FjaGVKb2JQcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgIC8vIDE5LjIuMVxuICAgIGxldCBlcnJvckRhdGEgPSBudWxsXG5cbiAgICAvLyAxOS4yLjJcbiAgICB0cnkge1xuICAgICAgdGhpcy4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMob3BlcmF0aW9ucylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvckRhdGEgPSBlXG4gICAgfVxuXG4gICAgLy8gMTkuMi4zXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgLy8gMTkuMi4zLjFcbiAgICAgIGlmIChlcnJvckRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgY2FjaGVKb2JQcm9taXNlLnJlc29sdmUoKVxuICAgICAgfSBlbHNlIHsgLy8gMTkuMi4zLjJcbiAgICAgICAgY2FjaGVKb2JQcm9taXNlLnJlamVjdChlcnJvckRhdGEpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBjYWNoZUpvYlByb21pc2UucHJvbWlzZVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlIChyZXF1ZXN0LCBvcHRpb25zID0ge30pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2FjaGUuZGVsZXRlJyB9KVxuXG4gICAgcmVxdWVzdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvKHJlcXVlc3QpXG4gICAgb3B0aW9ucyA9IHdlYmlkbC5jb252ZXJ0ZXJzLkNhY2hlUXVlcnlPcHRpb25zKG9wdGlvbnMpXG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7UmVxdWVzdH1cbiAgICAgKi9cbiAgICBsZXQgciA9IG51bGxcblxuICAgIGlmIChyZXF1ZXN0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgICAgciA9IHJlcXVlc3Rba1N0YXRlXVxuXG4gICAgICBpZiAoci5tZXRob2QgIT09ICdHRVQnICYmICFvcHRpb25zLmlnbm9yZU1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KHR5cGVvZiByZXF1ZXN0ID09PSAnc3RyaW5nJylcblxuICAgICAgciA9IG5ldyBSZXF1ZXN0KHJlcXVlc3QpW2tTdGF0ZV1cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge0NhY2hlQmF0Y2hPcGVyYXRpb25bXX0gKi9cbiAgICBjb25zdCBvcGVyYXRpb25zID0gW11cblxuICAgIC8qKiBAdHlwZSB7Q2FjaGVCYXRjaE9wZXJhdGlvbn0gKi9cbiAgICBjb25zdCBvcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgIHJlcXVlc3Q6IHIsXG4gICAgICBvcHRpb25zXG4gICAgfVxuXG4gICAgb3BlcmF0aW9ucy5wdXNoKG9wZXJhdGlvbilcblxuICAgIGNvbnN0IGNhY2hlSm9iUHJvbWlzZSA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZSgpXG5cbiAgICBsZXQgZXJyb3JEYXRhID0gbnVsbFxuICAgIGxldCByZXF1ZXN0UmVzcG9uc2VzXG5cbiAgICB0cnkge1xuICAgICAgcmVxdWVzdFJlc3BvbnNlcyA9IHRoaXMuI2JhdGNoQ2FjaGVPcGVyYXRpb25zKG9wZXJhdGlvbnMpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3JEYXRhID0gZVxuICAgIH1cblxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGlmIChlcnJvckRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgY2FjaGVKb2JQcm9taXNlLnJlc29sdmUoISFyZXF1ZXN0UmVzcG9uc2VzPy5sZW5ndGgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWNoZUpvYlByb21pc2UucmVqZWN0KGVycm9yRGF0YSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGNhY2hlSm9iUHJvbWlzZS5wcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZG9tLWNhY2hlLWtleXNcbiAgICogQHBhcmFtIHthbnl9IHJlcXVlc3RcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2NhY2hlJykuQ2FjaGVRdWVyeU9wdGlvbnN9IG9wdGlvbnNcbiAgICogQHJldHVybnMge3JlYWRvbmx5IFJlcXVlc3RbXX1cbiAgICovXG4gIGFzeW5jIGtleXMgKHJlcXVlc3QgPSB1bmRlZmluZWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlKVxuXG4gICAgaWYgKHJlcXVlc3QgIT09IHVuZGVmaW5lZCkgcmVxdWVzdCA9IHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvKHJlcXVlc3QpXG4gICAgb3B0aW9ucyA9IHdlYmlkbC5jb252ZXJ0ZXJzLkNhY2hlUXVlcnlPcHRpb25zKG9wdGlvbnMpXG5cbiAgICAvLyAxLlxuICAgIGxldCByID0gbnVsbFxuXG4gICAgLy8gMi5cbiAgICBpZiAocmVxdWVzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyAyLjFcbiAgICAgIGlmIChyZXF1ZXN0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgICAgICAvLyAyLjEuMVxuICAgICAgICByID0gcmVxdWVzdFtrU3RhdGVdXG5cbiAgICAgICAgLy8gMi4xLjJcbiAgICAgICAgaWYgKHIubWV0aG9kICE9PSAnR0VUJyAmJiAhb3B0aW9ucy5pZ25vcmVNZXRob2QpIHtcbiAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWVzdCA9PT0gJ3N0cmluZycpIHsgLy8gMi4yXG4gICAgICAgIHIgPSBuZXcgUmVxdWVzdChyZXF1ZXN0KVtrU3RhdGVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNC5cbiAgICBjb25zdCBwcm9taXNlID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKClcblxuICAgIC8vIDUuXG4gICAgLy8gNS4xXG4gICAgY29uc3QgcmVxdWVzdHMgPSBbXVxuXG4gICAgLy8gNS4yXG4gICAgaWYgKHJlcXVlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gNS4yLjFcbiAgICAgIGZvciAoY29uc3QgcmVxdWVzdFJlc3BvbnNlIG9mIHRoaXMuI3JlbGV2YW50UmVxdWVzdFJlc3BvbnNlTGlzdCkge1xuICAgICAgICAvLyA1LjIuMS4xXG4gICAgICAgIHJlcXVlc3RzLnB1c2gocmVxdWVzdFJlc3BvbnNlWzBdKVxuICAgICAgfVxuICAgIH0gZWxzZSB7IC8vIDUuM1xuICAgICAgLy8gNS4zLjFcbiAgICAgIGNvbnN0IHJlcXVlc3RSZXNwb25zZXMgPSB0aGlzLiNxdWVyeUNhY2hlKHIsIG9wdGlvbnMpXG5cbiAgICAgIC8vIDUuMy4yXG4gICAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiByZXF1ZXN0UmVzcG9uc2VzKSB7XG4gICAgICAgIC8vIDUuMy4yLjFcbiAgICAgICAgcmVxdWVzdHMucHVzaChyZXF1ZXN0UmVzcG9uc2VbMF0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gNS40XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgLy8gNS40LjFcbiAgICAgIGNvbnN0IHJlcXVlc3RMaXN0ID0gW11cblxuICAgICAgLy8gNS40LjJcbiAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiByZXF1ZXN0cykge1xuICAgICAgICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gbmV3IFJlcXVlc3QoJ2h0dHBzOi8vYScpXG4gICAgICAgIHJlcXVlc3RPYmplY3Rba1N0YXRlXSA9IHJlcXVlc3RcbiAgICAgICAgcmVxdWVzdE9iamVjdFtrSGVhZGVyc11ba0hlYWRlcnNMaXN0XSA9IHJlcXVlc3QuaGVhZGVyc0xpc3RcbiAgICAgICAgcmVxdWVzdE9iamVjdFtrSGVhZGVyc11ba0d1YXJkXSA9ICdpbW11dGFibGUnXG4gICAgICAgIHJlcXVlc3RPYmplY3Rba1JlYWxtXSA9IHJlcXVlc3QuY2xpZW50XG5cbiAgICAgICAgLy8gNS40LjIuMVxuICAgICAgICByZXF1ZXN0TGlzdC5wdXNoKHJlcXVlc3RPYmplY3QpXG4gICAgICB9XG5cbiAgICAgIC8vIDUuNC4zXG4gICAgICBwcm9taXNlLnJlc29sdmUoT2JqZWN0LmZyZWV6ZShyZXF1ZXN0TGlzdCkpXG4gICAgfSlcblxuICAgIHJldHVybiBwcm9taXNlLnByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNiYXRjaC1jYWNoZS1vcGVyYXRpb25zLWFsZ29yaXRobVxuICAgKiBAcGFyYW0ge0NhY2hlQmF0Y2hPcGVyYXRpb25bXX0gb3BlcmF0aW9uc1xuICAgKiBAcmV0dXJucyB7cmVxdWVzdFJlc3BvbnNlTGlzdH1cbiAgICovXG4gICNiYXRjaENhY2hlT3BlcmF0aW9ucyAob3BlcmF0aW9ucykge1xuICAgIC8vIDEuXG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLiNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3RcblxuICAgIC8vIDIuXG4gICAgY29uc3QgYmFja3VwQ2FjaGUgPSBbLi4uY2FjaGVdXG5cbiAgICAvLyAzLlxuICAgIGNvbnN0IGFkZGVkSXRlbXMgPSBbXVxuXG4gICAgLy8gNC4xXG4gICAgY29uc3QgcmVzdWx0TGlzdCA9IFtdXG5cbiAgICB0cnkge1xuICAgICAgLy8gNC4yXG4gICAgICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zKSB7XG4gICAgICAgIC8vIDQuMi4xXG4gICAgICAgIGlmIChvcGVyYXRpb24udHlwZSAhPT0gJ2RlbGV0ZScgJiYgb3BlcmF0aW9uLnR5cGUgIT09ICdwdXQnKSB7XG4gICAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgaGVhZGVyOiAnQ2FjaGUuI2JhdGNoQ2FjaGVPcGVyYXRpb25zJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdvcGVyYXRpb24gdHlwZSBkb2VzIG5vdCBtYXRjaCBcImRlbGV0ZVwiIG9yIFwicHV0XCInXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuMi4yXG4gICAgICAgIGlmIChvcGVyYXRpb24udHlwZSA9PT0gJ2RlbGV0ZScgJiYgb3BlcmF0aW9uLnJlc3BvbnNlICE9IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICBoZWFkZXI6ICdDYWNoZS4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ2RlbGV0ZSBvcGVyYXRpb24gc2hvdWxkIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgcmVzcG9uc2UnXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuMi4zXG4gICAgICAgIGlmICh0aGlzLiNxdWVyeUNhY2hlKG9wZXJhdGlvbi5yZXF1ZXN0LCBvcGVyYXRpb24ub3B0aW9ucywgYWRkZWRJdGVtcykubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignPz8/JywgJ0ludmFsaWRTdGF0ZUVycm9yJylcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuMi40XG4gICAgICAgIGxldCByZXF1ZXN0UmVzcG9uc2VzXG5cbiAgICAgICAgLy8gNC4yLjVcbiAgICAgICAgaWYgKG9wZXJhdGlvbi50eXBlID09PSAnZGVsZXRlJykge1xuICAgICAgICAgIC8vIDQuMi41LjFcbiAgICAgICAgICByZXF1ZXN0UmVzcG9uc2VzID0gdGhpcy4jcXVlcnlDYWNoZShvcGVyYXRpb24ucmVxdWVzdCwgb3BlcmF0aW9uLm9wdGlvbnMpXG5cbiAgICAgICAgICAvLyBUT0RPOiB0aGUgc3BlYyBpcyB3cm9uZywgdGhpcyBpcyBuZWVkZWQgdG8gcGFzcyBXUFRzXG4gICAgICAgICAgaWYgKHJlcXVlc3RSZXNwb25zZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyA0LjIuNS4yXG4gICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0UmVzcG9uc2Ugb2YgcmVxdWVzdFJlc3BvbnNlcykge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gY2FjaGUuaW5kZXhPZihyZXF1ZXN0UmVzcG9uc2UpXG4gICAgICAgICAgICBhc3NlcnQoaWR4ICE9PSAtMSlcblxuICAgICAgICAgICAgLy8gNC4yLjUuMi4xXG4gICAgICAgICAgICBjYWNoZS5zcGxpY2UoaWR4LCAxKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24udHlwZSA9PT0gJ3B1dCcpIHsgLy8gNC4yLjZcbiAgICAgICAgICAvLyA0LjIuNi4xXG4gICAgICAgICAgaWYgKG9wZXJhdGlvbi5yZXNwb25zZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLiNiYXRjaENhY2hlT3BlcmF0aW9ucycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdwdXQgb3BlcmF0aW9uIHNob3VsZCBoYXZlIGFuIGFzc29jaWF0ZWQgcmVzcG9uc2UnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDQuMi42LjJcbiAgICAgICAgICBjb25zdCByID0gb3BlcmF0aW9uLnJlcXVlc3RcblxuICAgICAgICAgIC8vIDQuMi42LjNcbiAgICAgICAgICBpZiAoIXVybElzSHR0cEh0dHBzU2NoZW1lKHIudXJsKSkge1xuICAgICAgICAgICAgdGhyb3cgd2ViaWRsLmVycm9ycy5leGNlcHRpb24oe1xuICAgICAgICAgICAgICBoZWFkZXI6ICdDYWNoZS4jYmF0Y2hDYWNoZU9wZXJhdGlvbnMnLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnZXhwZWN0ZWQgaHR0cCBvciBodHRwcyBzY2hlbWUnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDQuMi42LjRcbiAgICAgICAgICBpZiAoci5tZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLiNiYXRjaENhY2hlT3BlcmF0aW9ucycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdub3QgZ2V0IG1ldGhvZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4yLjYuNVxuICAgICAgICAgIGlmIChvcGVyYXRpb24ub3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyB3ZWJpZGwuZXJyb3JzLmV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIGhlYWRlcjogJ0NhY2hlLiNiYXRjaENhY2hlT3BlcmF0aW9ucycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdvcHRpb25zIG11c3Qgbm90IGJlIGRlZmluZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDQuMi42LjZcbiAgICAgICAgICByZXF1ZXN0UmVzcG9uc2VzID0gdGhpcy4jcXVlcnlDYWNoZShvcGVyYXRpb24ucmVxdWVzdClcblxuICAgICAgICAgIC8vIDQuMi42LjdcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiByZXF1ZXN0UmVzcG9uc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBjYWNoZS5pbmRleE9mKHJlcXVlc3RSZXNwb25zZSlcbiAgICAgICAgICAgIGFzc2VydChpZHggIT09IC0xKVxuXG4gICAgICAgICAgICAvLyA0LjIuNi43LjFcbiAgICAgICAgICAgIGNhY2hlLnNwbGljZShpZHgsIDEpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNC4yLjYuOFxuICAgICAgICAgIGNhY2hlLnB1c2goW29wZXJhdGlvbi5yZXF1ZXN0LCBvcGVyYXRpb24ucmVzcG9uc2VdKVxuXG4gICAgICAgICAgLy8gNC4yLjYuMTBcbiAgICAgICAgICBhZGRlZEl0ZW1zLnB1c2goW29wZXJhdGlvbi5yZXF1ZXN0LCBvcGVyYXRpb24ucmVzcG9uc2VdKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4yLjdcbiAgICAgICAgcmVzdWx0TGlzdC5wdXNoKFtvcGVyYXRpb24ucmVxdWVzdCwgb3BlcmF0aW9uLnJlc3BvbnNlXSlcbiAgICAgIH1cblxuICAgICAgLy8gNC4zXG4gICAgICByZXR1cm4gcmVzdWx0TGlzdFxuICAgIH0gY2F0Y2ggKGUpIHsgLy8gNS5cbiAgICAgIC8vIDUuMVxuICAgICAgdGhpcy4jcmVsZXZhbnRSZXF1ZXN0UmVzcG9uc2VMaXN0Lmxlbmd0aCA9IDBcblxuICAgICAgLy8gNS4yXG4gICAgICB0aGlzLiNyZWxldmFudFJlcXVlc3RSZXNwb25zZUxpc3QgPSBiYWNrdXBDYWNoZVxuXG4gICAgICAvLyA1LjNcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jcXVlcnktY2FjaGVcbiAgICogQHBhcmFtIHthbnl9IHJlcXVlc3RRdWVyeVxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vdHlwZXMvY2FjaGUnKS5DYWNoZVF1ZXJ5T3B0aW9uc30gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3JlcXVlc3RSZXNwb25zZUxpc3R9IHRhcmdldFN0b3JhZ2VcbiAgICogQHJldHVybnMge3JlcXVlc3RSZXNwb25zZUxpc3R9XG4gICAqL1xuICAjcXVlcnlDYWNoZSAocmVxdWVzdFF1ZXJ5LCBvcHRpb25zLCB0YXJnZXRTdG9yYWdlKSB7XG4gICAgLyoqIEB0eXBlIHtyZXF1ZXN0UmVzcG9uc2VMaXN0fSAqL1xuICAgIGNvbnN0IHJlc3VsdExpc3QgPSBbXVxuXG4gICAgY29uc3Qgc3RvcmFnZSA9IHRhcmdldFN0b3JhZ2UgPz8gdGhpcy4jcmVsZXZhbnRSZXF1ZXN0UmVzcG9uc2VMaXN0XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3RSZXNwb25zZSBvZiBzdG9yYWdlKSB7XG4gICAgICBjb25zdCBbY2FjaGVkUmVxdWVzdCwgY2FjaGVkUmVzcG9uc2VdID0gcmVxdWVzdFJlc3BvbnNlXG4gICAgICBpZiAodGhpcy4jcmVxdWVzdE1hdGNoZXNDYWNoZWRJdGVtKHJlcXVlc3RRdWVyeSwgY2FjaGVkUmVxdWVzdCwgY2FjaGVkUmVzcG9uc2UsIG9wdGlvbnMpKSB7XG4gICAgICAgIHJlc3VsdExpc3QucHVzaChyZXF1ZXN0UmVzcG9uc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdExpc3RcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNyZXF1ZXN0LW1hdGNoZXMtY2FjaGVkLWl0ZW0tYWxnb3JpdGhtXG4gICAqIEBwYXJhbSB7YW55fSByZXF1ZXN0UXVlcnlcbiAgICogQHBhcmFtIHthbnl9IHJlcXVlc3RcbiAgICogQHBhcmFtIHthbnkgfCBudWxsfSByZXNwb25zZVxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vdHlwZXMvY2FjaGUnKS5DYWNoZVF1ZXJ5T3B0aW9ucyB8IHVuZGVmaW5lZH0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gICNyZXF1ZXN0TWF0Y2hlc0NhY2hlZEl0ZW0gKHJlcXVlc3RRdWVyeSwgcmVxdWVzdCwgcmVzcG9uc2UgPSBudWxsLCBvcHRpb25zKSB7XG4gICAgLy8gaWYgKG9wdGlvbnM/Lmlnbm9yZU1ldGhvZCA9PT0gZmFsc2UgJiYgcmVxdWVzdC5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgLy8gICByZXR1cm4gZmFsc2VcbiAgICAvLyB9XG5cbiAgICBjb25zdCBxdWVyeVVSTCA9IG5ldyBVUkwocmVxdWVzdFF1ZXJ5LnVybClcblxuICAgIGNvbnN0IGNhY2hlZFVSTCA9IG5ldyBVUkwocmVxdWVzdC51cmwpXG5cbiAgICBpZiAob3B0aW9ucz8uaWdub3JlU2VhcmNoKSB7XG4gICAgICBjYWNoZWRVUkwuc2VhcmNoID0gJydcblxuICAgICAgcXVlcnlVUkwuc2VhcmNoID0gJydcbiAgICB9XG5cbiAgICBpZiAoIXVybEVxdWFscyhxdWVyeVVSTCwgY2FjaGVkVVJMLCB0cnVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcmVzcG9uc2UgPT0gbnVsbCB8fFxuICAgICAgb3B0aW9ucz8uaWdub3JlVmFyeSB8fFxuICAgICAgIXJlc3BvbnNlLmhlYWRlcnNMaXN0LmNvbnRhaW5zKCd2YXJ5JylcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRWYWx1ZXMgPSBnZXRGaWVsZFZhbHVlcyhyZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ3ZhcnknKSlcblxuICAgIGZvciAoY29uc3QgZmllbGRWYWx1ZSBvZiBmaWVsZFZhbHVlcykge1xuICAgICAgaWYgKGZpZWxkVmFsdWUgPT09ICcqJykge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdFZhbHVlID0gcmVxdWVzdC5oZWFkZXJzTGlzdC5nZXQoZmllbGRWYWx1ZSlcbiAgICAgIGNvbnN0IHF1ZXJ5VmFsdWUgPSByZXF1ZXN0UXVlcnkuaGVhZGVyc0xpc3QuZ2V0KGZpZWxkVmFsdWUpXG5cbiAgICAgIC8vIElmIG9uZSBoYXMgdGhlIGhlYWRlciBhbmQgdGhlIG90aGVyIGRvZXNuJ3QsIG9yIG9uZSBoYXNcbiAgICAgIC8vIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4gdGhlIG90aGVyLCByZXR1cm4gZmFsc2VcbiAgICAgIGlmIChyZXF1ZXN0VmFsdWUgIT09IHF1ZXJ5VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhDYWNoZS5wcm90b3R5cGUsIHtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ0NhY2hlJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgbWF0Y2g6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG1hdGNoQWxsOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBhZGQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGFkZEFsbDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcHV0OiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBkZWxldGU6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGtleXM6IGtFbnVtZXJhYmxlUHJvcGVydHlcbn0pXG5cbmNvbnN0IGNhY2hlUXVlcnlPcHRpb25Db252ZXJ0ZXJzID0gW1xuICB7XG4gICAga2V5OiAnaWdub3JlU2VhcmNoJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnaWdub3JlTWV0aG9kJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnaWdub3JlVmFyeScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfVxuXVxuXG53ZWJpZGwuY29udmVydGVycy5DYWNoZVF1ZXJ5T3B0aW9ucyA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKGNhY2hlUXVlcnlPcHRpb25Db252ZXJ0ZXJzKVxuXG53ZWJpZGwuY29udmVydGVycy5NdWx0aUNhY2hlUXVlcnlPcHRpb25zID0gd2ViaWRsLmRpY3Rpb25hcnlDb252ZXJ0ZXIoW1xuICAuLi5jYWNoZVF1ZXJ5T3B0aW9uQ29udmVydGVycyxcbiAge1xuICAgIGtleTogJ2NhY2hlTmFtZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmdcbiAgfVxuXSlcblxud2ViaWRsLmNvbnZlcnRlcnMuUmVzcG9uc2UgPSB3ZWJpZGwuaW50ZXJmYWNlQ29udmVydGVyKFJlc3BvbnNlKVxuXG53ZWJpZGwuY29udmVydGVyc1snc2VxdWVuY2U8UmVxdWVzdEluZm8+J10gPSB3ZWJpZGwuc2VxdWVuY2VDb252ZXJ0ZXIoXG4gIHdlYmlkbC5jb252ZXJ0ZXJzLlJlcXVlc3RJbmZvXG4pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDYWNoZVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGtDb25zdHJ1Y3QgfSA9IHJlcXVpcmUoJy4vc3ltYm9scycpXG5jb25zdCB7IENhY2hlIH0gPSByZXF1aXJlKCcuL2NhY2hlJylcbmNvbnN0IHsgd2ViaWRsIH0gPSByZXF1aXJlKCcuLi9mZXRjaC93ZWJpZGwnKVxuY29uc3QgeyBrRW51bWVyYWJsZVByb3BlcnR5IH0gPSByZXF1aXJlKCcuLi9jb3JlL3V0aWwnKVxuXG5jbGFzcyBDYWNoZVN0b3JhZ2Uge1xuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZGZuLXJlbGV2YW50LW5hbWUtdG8tY2FjaGUtbWFwXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCBpbXBvcnQoJy4vY2FjaGUnKS5yZXF1ZXN0UmVzcG9uc2VMaXN0fVxuICAgKi9cbiAgI2NhY2hlcyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBpZiAoYXJndW1lbnRzWzBdICE9PSBrQ29uc3RydWN0KSB7XG4gICAgICB3ZWJpZGwuaWxsZWdhbENvbnN0cnVjdG9yKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYXRjaCAocmVxdWVzdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2FjaGVTdG9yYWdlKVxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdDYWNoZVN0b3JhZ2UubWF0Y2gnIH0pXG5cbiAgICByZXF1ZXN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuUmVxdWVzdEluZm8ocmVxdWVzdClcbiAgICBvcHRpb25zID0gd2ViaWRsLmNvbnZlcnRlcnMuTXVsdGlDYWNoZVF1ZXJ5T3B0aW9ucyhvcHRpb25zKVxuXG4gICAgLy8gMS5cbiAgICBpZiAob3B0aW9ucy5jYWNoZU5hbWUgIT0gbnVsbCkge1xuICAgICAgLy8gMS4xLjEuMVxuICAgICAgaWYgKHRoaXMuI2NhY2hlcy5oYXMob3B0aW9ucy5jYWNoZU5hbWUpKSB7XG4gICAgICAgIC8vIDEuMS4xLjEuMVxuICAgICAgICBjb25zdCBjYWNoZUxpc3QgPSB0aGlzLiNjYWNoZXMuZ2V0KG9wdGlvbnMuY2FjaGVOYW1lKVxuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZShrQ29uc3RydWN0LCBjYWNoZUxpc3QpXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGNhY2hlLm1hdGNoKHJlcXVlc3QsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfSBlbHNlIHsgLy8gMi5cbiAgICAgIC8vIDIuMlxuICAgICAgZm9yIChjb25zdCBjYWNoZUxpc3Qgb2YgdGhpcy4jY2FjaGVzLnZhbHVlcygpKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKGtDb25zdHJ1Y3QsIGNhY2hlTGlzdClcblxuICAgICAgICAvLyAyLjIuMS4yXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2FjaGUubWF0Y2gocmVxdWVzdCwgb3B0aW9ucylcblxuICAgICAgICBpZiAocmVzcG9uc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NhY2hlLXN0b3JhZ2UtaGFzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYWNoZU5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBoYXMgKGNhY2hlTmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlU3RvcmFnZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2FjaGVTdG9yYWdlLmhhcycgfSlcblxuICAgIGNhY2hlTmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyhjYWNoZU5hbWUpXG5cbiAgICAvLyAyLjEuMVxuICAgIC8vIDIuMlxuICAgIHJldHVybiB0aGlzLiNjYWNoZXMuaGFzKGNhY2hlTmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkb20tY2FjaGVzdG9yYWdlLW9wZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDYWNoZT59XG4gICAqL1xuICBhc3luYyBvcGVuIChjYWNoZU5hbWUpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBDYWNoZVN0b3JhZ2UpXG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0NhY2hlU3RvcmFnZS5vcGVuJyB9KVxuXG4gICAgY2FjaGVOYW1lID0gd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKGNhY2hlTmFtZSlcblxuICAgIC8vIDIuMVxuICAgIGlmICh0aGlzLiNjYWNoZXMuaGFzKGNhY2hlTmFtZSkpIHtcbiAgICAgIC8vIGF3YWl0IGNhY2hlcy5vcGVuKCd2MScpICE9PSBhd2FpdCBjYWNoZXMub3BlbigndjEnKVxuXG4gICAgICAvLyAyLjEuMVxuICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLiNjYWNoZXMuZ2V0KGNhY2hlTmFtZSlcblxuICAgICAgLy8gMi4xLjEuMVxuICAgICAgcmV0dXJuIG5ldyBDYWNoZShrQ29uc3RydWN0LCBjYWNoZSlcbiAgICB9XG5cbiAgICAvLyAyLjJcbiAgICBjb25zdCBjYWNoZSA9IFtdXG5cbiAgICAvLyAyLjNcbiAgICB0aGlzLiNjYWNoZXMuc2V0KGNhY2hlTmFtZSwgY2FjaGUpXG5cbiAgICAvLyAyLjRcbiAgICByZXR1cm4gbmV3IENhY2hlKGtDb25zdHJ1Y3QsIGNhY2hlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NhY2hlLXN0b3JhZ2UtZGVsZXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYWNoZU5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBkZWxldGUgKGNhY2hlTmFtZSkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlU3RvcmFnZSlcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2FjaGVTdG9yYWdlLmRlbGV0ZScgfSlcblxuICAgIGNhY2hlTmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyhjYWNoZU5hbWUpXG5cbiAgICByZXR1cm4gdGhpcy4jY2FjaGVzLmRlbGV0ZShjYWNoZU5hbWUpXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2FjaGUtc3RvcmFnZS1rZXlzXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAgICovXG4gIGFzeW5jIGtleXMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENhY2hlU3RvcmFnZSlcblxuICAgIC8vIDIuMVxuICAgIGNvbnN0IGtleXMgPSB0aGlzLiNjYWNoZXMua2V5cygpXG5cbiAgICAvLyAyLjJcbiAgICByZXR1cm4gWy4uLmtleXNdXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ2FjaGVTdG9yYWdlLnByb3RvdHlwZSwge1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXToge1xuICAgIHZhbHVlOiAnQ2FjaGVTdG9yYWdlJyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgbWF0Y2g6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGhhczoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb3Blbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZGVsZXRlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBrZXlzOiBrRW51bWVyYWJsZVByb3BlcnR5XG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ2FjaGVTdG9yYWdlXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNjb29raWUtbWF4aW11bS1hdHRyaWJ1dGUtdmFsdWUtc2l6ZVxuY29uc3QgbWF4QXR0cmlidXRlVmFsdWVTaXplID0gMTAyNFxuXG4vLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Nvb2tpZS1zdG9yZS8jY29va2llLW1heGltdW0tbmFtZS12YWx1ZS1wYWlyLXNpemVcbmNvbnN0IG1heE5hbWVWYWx1ZVBhaXJTaXplID0gNDA5NlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWF4QXR0cmlidXRlVmFsdWVTaXplLFxuICBtYXhOYW1lVmFsdWVQYWlyU2l6ZVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQ1RMRXhjbHVkaW5nSHRhYiAodmFsdWUpIHtcbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGFyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKFxuICAgICAgKGNvZGUgPj0gMHgwMCB8fCBjb2RlIDw9IDB4MDgpIHx8XG4gICAgICAoY29kZSA+PSAweDBBIHx8IGNvZGUgPD0gMHgxRikgfHxcbiAgICAgIGNvZGUgPT09IDB4N0ZcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiBDSEFSICAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNyk+XG4gdG9rZW4gICAgICAgICAgPSAxKjxhbnkgQ0hBUiBleGNlcHQgQ1RMcyBvciBzZXBhcmF0b3JzPlxuIHNlcGFyYXRvcnMgICAgID0gXCIoXCIgfCBcIilcIiB8IFwiPFwiIHwgXCI+XCIgfCBcIkBcIlxuICAgICAgICAgICAgICAgIHwgXCIsXCIgfCBcIjtcIiB8IFwiOlwiIHwgXCJcXFwiIHwgPFwiPlxuICAgICAgICAgICAgICAgIHwgXCIvXCIgfCBcIltcIiB8IFwiXVwiIHwgXCI/XCIgfCBcIj1cIlxuICAgICAgICAgICAgICAgIHwgXCJ7XCIgfCBcIn1cIiB8IFNQIHwgSFRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29va2llTmFtZSAobmFtZSkge1xuICBmb3IgKGNvbnN0IGNoYXIgb2YgbmFtZSkge1xuICAgIGNvbnN0IGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMClcblxuICAgIGlmIChcbiAgICAgIChjb2RlIDw9IDB4MjAgfHwgY29kZSA+IDB4N0YpIHx8XG4gICAgICBjaGFyID09PSAnKCcgfHxcbiAgICAgIGNoYXIgPT09ICcpJyB8fFxuICAgICAgY2hhciA9PT0gJz4nIHx8XG4gICAgICBjaGFyID09PSAnPCcgfHxcbiAgICAgIGNoYXIgPT09ICdAJyB8fFxuICAgICAgY2hhciA9PT0gJywnIHx8XG4gICAgICBjaGFyID09PSAnOycgfHxcbiAgICAgIGNoYXIgPT09ICc6JyB8fFxuICAgICAgY2hhciA9PT0gJ1xcXFwnIHx8XG4gICAgICBjaGFyID09PSAnXCInIHx8XG4gICAgICBjaGFyID09PSAnLycgfHxcbiAgICAgIGNoYXIgPT09ICdbJyB8fFxuICAgICAgY2hhciA9PT0gJ10nIHx8XG4gICAgICBjaGFyID09PSAnPycgfHxcbiAgICAgIGNoYXIgPT09ICc9JyB8fFxuICAgICAgY2hhciA9PT0gJ3snIHx8XG4gICAgICBjaGFyID09PSAnfSdcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb29raWUgbmFtZScpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuIGNvb2tpZS12YWx1ZSAgICAgID0gKmNvb2tpZS1vY3RldCAvICggRFFVT1RFICpjb29raWUtb2N0ZXQgRFFVT1RFIClcbiBjb29raWUtb2N0ZXQgICAgICA9ICV4MjEgLyAleDIzLTJCIC8gJXgyRC0zQSAvICV4M0MtNUIgLyAleDVELTdFXG4gICAgICAgICAgICAgICAgICAgICAgIDsgVVMtQVNDSUkgY2hhcmFjdGVycyBleGNsdWRpbmcgQ1RMcyxcbiAgICAgICAgICAgICAgICAgICAgICAgOyB3aGl0ZXNwYWNlIERRVU9URSwgY29tbWEsIHNlbWljb2xvbixcbiAgICAgICAgICAgICAgICAgICAgICAgOyBhbmQgYmFja3NsYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb29raWVWYWx1ZSAodmFsdWUpIHtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKFxuICAgICAgY29kZSA8IDB4MjEgfHwgLy8gZXhjbHVkZSBDVExzICgwLTMxKVxuICAgICAgY29kZSA9PT0gMHgyMiB8fFxuICAgICAgY29kZSA9PT0gMHgyQyB8fFxuICAgICAgY29kZSA9PT0gMHgzQiB8fFxuICAgICAgY29kZSA9PT0gMHg1QyB8fFxuICAgICAgY29kZSA+IDB4N0UgLy8gbm9uLWFzY2lpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGVhZGVyIHZhbHVlJylcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBwYXRoLXZhbHVlICAgICAgICA9IDxhbnkgQ0hBUiBleGNlcHQgQ1RMcyBvciBcIjtcIj5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29va2llUGF0aCAocGF0aCkge1xuICBmb3IgKGNvbnN0IGNoYXIgb2YgcGF0aCkge1xuICAgIGNvbnN0IGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMClcblxuICAgIGlmIChjb2RlIDwgMHgyMSB8fCBjaGFyID09PSAnOycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb29raWUgcGF0aCcpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSSBoYXZlIG5vIGlkZWEgd2h5IHRoZXNlIHZhbHVlcyBhcmVuJ3QgYWxsb3dlZCB0byBiZSBob25lc3QsXG4gKiBidXQgRGVubyB0ZXN0cyB0aGVzZS4gLSBLaGFmcmFcbiAqIEBwYXJhbSB7c3RyaW5nfSBkb21haW5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb29raWVEb21haW4gKGRvbWFpbikge1xuICBpZiAoXG4gICAgZG9tYWluLnN0YXJ0c1dpdGgoJy0nKSB8fFxuICAgIGRvbWFpbi5lbmRzV2l0aCgnLicpIHx8XG4gICAgZG9tYWluLmVuZHNXaXRoKCctJylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvb2tpZSBkb21haW4nKVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNzZWN0aW9uLTcuMS4xLjFcbiAqIEBwYXJhbSB7bnVtYmVyfERhdGV9IGRhdGVcbiAgSU1GLWZpeGRhdGUgID0gZGF5LW5hbWUgXCIsXCIgU1AgZGF0ZTEgU1AgdGltZS1vZi1kYXkgU1AgR01UXG4gIDsgZml4ZWQgbGVuZ3RoL3pvbmUvY2FwaXRhbGl6YXRpb24gc3Vic2V0IG9mIHRoZSBmb3JtYXRcbiAgOyBzZWUgU2VjdGlvbiAzLjMgb2YgW1JGQzUzMjJdXG5cbiAgZGF5LW5hbWUgICAgID0gJXg0RC42Ri42RSA7IFwiTW9uXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1NC43NS42NSA7IFwiVHVlXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1Ny42NS42NCA7IFwiV2VkXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1NC42OC43NSA7IFwiVGh1XCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg0Ni43Mi42OSA7IFwiRnJpXCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1My42MS43NCA7IFwiU2F0XCIsIGNhc2Utc2Vuc2l0aXZlXG4gICAgICAgICAgICAgIC8gJXg1My43NS42RSA7IFwiU3VuXCIsIGNhc2Utc2Vuc2l0aXZlXG4gIGRhdGUxICAgICAgICA9IGRheSBTUCBtb250aCBTUCB5ZWFyXG4gICAgICAgICAgICAgICAgICA7IGUuZy4sIDAyIEp1biAxOTgyXG5cbiAgZGF5ICAgICAgICAgID0gMkRJR0lUXG4gIG1vbnRoICAgICAgICA9ICV4NEEuNjEuNkUgOyBcIkphblwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NDYuNjUuNjIgOyBcIkZlYlwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEQuNjEuNzIgOyBcIk1hclwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NDEuNzAuNzIgOyBcIkFwclwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEQuNjEuNzkgOyBcIk1heVwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEEuNzUuNkUgOyBcIkp1blwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEEuNzUuNkMgOyBcIkp1bFwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NDEuNzUuNjcgOyBcIkF1Z1wiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NTMuNjUuNzAgOyBcIlNlcFwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEYuNjMuNzQgOyBcIk9jdFwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NEUuNkYuNzYgOyBcIk5vdlwiLCBjYXNlLXNlbnNpdGl2ZVxuICAgICAgICAgICAgICAvICV4NDQuNjUuNjMgOyBcIkRlY1wiLCBjYXNlLXNlbnNpdGl2ZVxuICB5ZWFyICAgICAgICAgPSA0RElHSVRcblxuICBHTVQgICAgICAgICAgPSAleDQ3LjRELjU0IDsgXCJHTVRcIiwgY2FzZS1zZW5zaXRpdmVcblxuICB0aW1lLW9mLWRheSAgPSBob3VyIFwiOlwiIG1pbnV0ZSBcIjpcIiBzZWNvbmRcbiAgICAgICAgICAgICAgOyAwMDowMDowMCAtIDIzOjU5OjYwIChsZWFwIHNlY29uZClcblxuICBob3VyICAgICAgICAgPSAyRElHSVRcbiAgbWludXRlICAgICAgID0gMkRJR0lUXG4gIHNlY29uZCAgICAgICA9IDJESUdJVFxuICovXG5mdW5jdGlvbiB0b0lNRkRhdGUgKGRhdGUpIHtcbiAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKVxuICB9XG5cbiAgY29uc3QgZGF5cyA9IFtcbiAgICAnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJyxcbiAgICAnVGh1JywgJ0ZyaScsICdTYXQnXG4gIF1cblxuICBjb25zdCBtb250aHMgPSBbXG4gICAgJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJyxcbiAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXG4gIF1cblxuICBjb25zdCBkYXlOYW1lID0gZGF5c1tkYXRlLmdldFVUQ0RheSgpXVxuICBjb25zdCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgbW9udGggPSBtb250aHNbZGF0ZS5nZXRVVENNb250aCgpXVxuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpXG4gIGNvbnN0IGhvdXIgPSBkYXRlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IG1pbnV0ZSA9IGRhdGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxuICBjb25zdCBzZWNvbmQgPSBkYXRlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJylcblxuICByZXR1cm4gYCR7ZGF5TmFtZX0sICR7ZGF5fSAke21vbnRofSAke3llYXJ9ICR7aG91cn06JHttaW51dGV9OiR7c2Vjb25kfSBHTVRgXG59XG5cbi8qKlxuIG1heC1hZ2UtYXYgICAgICAgID0gXCJNYXgtQWdlPVwiIG5vbi16ZXJvLWRpZ2l0ICpESUdJVFxuICAgICAgICAgICAgICAgICAgICAgICA7IEluIHByYWN0aWNlLCBib3RoIGV4cGlyZXMtYXYgYW5kIG1heC1hZ2UtYXZcbiAgICAgICAgICAgICAgICAgICAgICAgOyBhcmUgbGltaXRlZCB0byBkYXRlcyByZXByZXNlbnRhYmxlIGJ5IHRoZVxuICAgICAgICAgICAgICAgICAgICAgICA7IHVzZXIgYWdlbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gbWF4QWdlXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29va2llTWF4QWdlIChtYXhBZ2UpIHtcbiAgaWYgKG1heEFnZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29va2llIG1heC1hZ2UnKVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNjI2NSNzZWN0aW9uLTQuMS4xXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkNvb2tpZX0gY29va2llXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeSAoY29va2llKSB7XG4gIGlmIChjb29raWUubmFtZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgdmFsaWRhdGVDb29raWVOYW1lKGNvb2tpZS5uYW1lKVxuICB2YWxpZGF0ZUNvb2tpZVZhbHVlKGNvb2tpZS52YWx1ZSlcblxuICBjb25zdCBvdXQgPSBbYCR7Y29va2llLm5hbWV9PSR7Y29va2llLnZhbHVlfWBdXG5cbiAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtY29va2llLXByZWZpeGVzLTAwI3NlY3Rpb24tMy4xXG4gIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWNvb2tpZS1wcmVmaXhlcy0wMCNzZWN0aW9uLTMuMlxuICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgnX19TZWN1cmUtJykpIHtcbiAgICBjb29raWUuc2VjdXJlID0gdHJ1ZVxuICB9XG5cbiAgaWYgKGNvb2tpZS5uYW1lLnN0YXJ0c1dpdGgoJ19fSG9zdC0nKSkge1xuICAgIGNvb2tpZS5zZWN1cmUgPSB0cnVlXG4gICAgY29va2llLmRvbWFpbiA9IG51bGxcbiAgICBjb29raWUucGF0aCA9ICcvJ1xuICB9XG5cbiAgaWYgKGNvb2tpZS5zZWN1cmUpIHtcbiAgICBvdXQucHVzaCgnU2VjdXJlJylcbiAgfVxuXG4gIGlmIChjb29raWUuaHR0cE9ubHkpIHtcbiAgICBvdXQucHVzaCgnSHR0cE9ubHknKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb29raWUubWF4QWdlID09PSAnbnVtYmVyJykge1xuICAgIHZhbGlkYXRlQ29va2llTWF4QWdlKGNvb2tpZS5tYXhBZ2UpXG4gICAgb3V0LnB1c2goYE1heC1BZ2U9JHtjb29raWUubWF4QWdlfWApXG4gIH1cblxuICBpZiAoY29va2llLmRvbWFpbikge1xuICAgIHZhbGlkYXRlQ29va2llRG9tYWluKGNvb2tpZS5kb21haW4pXG4gICAgb3V0LnB1c2goYERvbWFpbj0ke2Nvb2tpZS5kb21haW59YClcbiAgfVxuXG4gIGlmIChjb29raWUucGF0aCkge1xuICAgIHZhbGlkYXRlQ29va2llUGF0aChjb29raWUucGF0aClcbiAgICBvdXQucHVzaChgUGF0aD0ke2Nvb2tpZS5wYXRofWApXG4gIH1cblxuICBpZiAoY29va2llLmV4cGlyZXMgJiYgY29va2llLmV4cGlyZXMudG9TdHJpbmcoKSAhPT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICBvdXQucHVzaChgRXhwaXJlcz0ke3RvSU1GRGF0ZShjb29raWUuZXhwaXJlcyl9YClcbiAgfVxuXG4gIGlmIChjb29raWUuc2FtZVNpdGUpIHtcbiAgICBvdXQucHVzaChgU2FtZVNpdGU9JHtjb29raWUuc2FtZVNpdGV9YClcbiAgfVxuXG4gIGZvciAoY29uc3QgcGFydCBvZiBjb29raWUudW5wYXJzZWQpIHtcbiAgICBpZiAoIXBhcnQuaW5jbHVkZXMoJz0nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVucGFyc2VkJylcbiAgICB9XG5cbiAgICBjb25zdCBba2V5LCAuLi52YWx1ZV0gPSBwYXJ0LnNwbGl0KCc9JylcblxuICAgIG91dC5wdXNoKGAke2tleS50cmltKCl9PSR7dmFsdWUuam9pbignPScpfWApXG4gIH1cblxuICByZXR1cm4gb3V0LmpvaW4oJzsgJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQ1RMRXhjbHVkaW5nSHRhYixcbiAgdmFsaWRhdGVDb29raWVOYW1lLFxuICB2YWxpZGF0ZUNvb2tpZVBhdGgsXG4gIHZhbGlkYXRlQ29va2llVmFsdWUsXG4gIHRvSU1GRGF0ZSxcbiAgc3RyaW5naWZ5XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgbWF4TmFtZVZhbHVlUGFpclNpemUsIG1heEF0dHJpYnV0ZVZhbHVlU2l6ZSB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBpc0NUTEV4Y2x1ZGluZ0h0YWIgfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0IH0gPSByZXF1aXJlKCcuLi9mZXRjaC9kYXRhVVJMJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhcnNlcyB0aGUgZmllbGQtdmFsdWUgYXR0cmlidXRlcyBvZiBhIHNldC1jb29raWUgaGVhZGVyIHN0cmluZy5cbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtcmZjNjI2NWJpcyNzZWN0aW9uLTUuNFxuICogQHBhcmFtIHtzdHJpbmd9IGhlYWRlclxuICogQHJldHVybnMgaWYgdGhlIGhlYWRlciBpcyBpbnZhbGlkLCBudWxsIHdpbGwgYmUgcmV0dXJuZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VTZXRDb29raWUgKGhlYWRlcikge1xuICAvLyAxLiBJZiB0aGUgc2V0LWNvb2tpZS1zdHJpbmcgY29udGFpbnMgYSAleDAwLTA4IC8gJXgwQS0xRiAvICV4N0ZcbiAgLy8gICAgY2hhcmFjdGVyIChDVEwgY2hhcmFjdGVycyBleGNsdWRpbmcgSFRBQik6IEFib3J0IHRoZXNlIHN0ZXBzIGFuZFxuICAvLyAgICBpZ25vcmUgdGhlIHNldC1jb29raWUtc3RyaW5nIGVudGlyZWx5LlxuICBpZiAoaXNDVExFeGNsdWRpbmdIdGFiKGhlYWRlcikpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbGV0IG5hbWVWYWx1ZVBhaXIgPSAnJ1xuICBsZXQgdW5wYXJzZWRBdHRyaWJ1dGVzID0gJydcbiAgbGV0IG5hbWUgPSAnJ1xuICBsZXQgdmFsdWUgPSAnJ1xuXG4gIC8vIDIuIElmIHRoZSBzZXQtY29va2llLXN0cmluZyBjb250YWlucyBhICV4M0IgKFwiO1wiKSBjaGFyYWN0ZXI6XG4gIGlmIChoZWFkZXIuaW5jbHVkZXMoJzsnKSkge1xuICAgIC8vIDEuIFRoZSBuYW1lLXZhbHVlLXBhaXIgc3RyaW5nIGNvbnNpc3RzIG9mIHRoZSBjaGFyYWN0ZXJzIHVwIHRvLFxuICAgIC8vICAgIGJ1dCBub3QgaW5jbHVkaW5nLCB0aGUgZmlyc3QgJXgzQiAoXCI7XCIpLCBhbmQgdGhlIHVucGFyc2VkLVxuICAgIC8vICAgIGF0dHJpYnV0ZXMgY29uc2lzdCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSBzZXQtY29va2llLXN0cmluZ1xuICAgIC8vICAgIChpbmNsdWRpbmcgdGhlICV4M0IgKFwiO1wiKSBpbiBxdWVzdGlvbikuXG4gICAgY29uc3QgcG9zaXRpb24gPSB7IHBvc2l0aW9uOiAwIH1cblxuICAgIG5hbWVWYWx1ZVBhaXIgPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdCgnOycsIGhlYWRlciwgcG9zaXRpb24pXG4gICAgdW5wYXJzZWRBdHRyaWJ1dGVzID0gaGVhZGVyLnNsaWNlKHBvc2l0aW9uLnBvc2l0aW9uKVxuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZTpcblxuICAgIC8vIDEuIFRoZSBuYW1lLXZhbHVlLXBhaXIgc3RyaW5nIGNvbnNpc3RzIG9mIGFsbCB0aGUgY2hhcmFjdGVyc1xuICAgIC8vICAgIGNvbnRhaW5lZCBpbiB0aGUgc2V0LWNvb2tpZS1zdHJpbmcsIGFuZCB0aGUgdW5wYXJzZWQtXG4gICAgLy8gICAgYXR0cmlidXRlcyBpcyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgIG5hbWVWYWx1ZVBhaXIgPSBoZWFkZXJcbiAgfVxuXG4gIC8vIDMuIElmIHRoZSBuYW1lLXZhbHVlLXBhaXIgc3RyaW5nIGxhY2tzIGEgJXgzRCAoXCI9XCIpIGNoYXJhY3RlciwgdGhlblxuICAvLyAgICB0aGUgbmFtZSBzdHJpbmcgaXMgZW1wdHksIGFuZCB0aGUgdmFsdWUgc3RyaW5nIGlzIHRoZSB2YWx1ZSBvZlxuICAvLyAgICBuYW1lLXZhbHVlLXBhaXIuXG4gIGlmICghbmFtZVZhbHVlUGFpci5pbmNsdWRlcygnPScpKSB7XG4gICAgdmFsdWUgPSBuYW1lVmFsdWVQYWlyXG4gIH0gZWxzZSB7XG4gICAgLy8gICAgT3RoZXJ3aXNlLCB0aGUgbmFtZSBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIGNoYXJhY3RlcnMgdXAgdG8sIGJ1dFxuICAgIC8vICAgIG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNEIChcIj1cIikgY2hhcmFjdGVyLCBhbmQgdGhlIChwb3NzaWJseVxuICAgIC8vICAgIGVtcHR5KSB2YWx1ZSBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGZpcnN0XG4gICAgLy8gICAgJXgzRCAoXCI9XCIpIGNoYXJhY3Rlci5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHsgcG9zaXRpb246IDAgfVxuICAgIG5hbWUgPSBjb2xsZWN0QVNlcXVlbmNlT2ZDb2RlUG9pbnRzRmFzdChcbiAgICAgICc9JyxcbiAgICAgIG5hbWVWYWx1ZVBhaXIsXG4gICAgICBwb3NpdGlvblxuICAgIClcbiAgICB2YWx1ZSA9IG5hbWVWYWx1ZVBhaXIuc2xpY2UocG9zaXRpb24ucG9zaXRpb24gKyAxKVxuICB9XG5cbiAgLy8gNC4gUmVtb3ZlIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIFdTUCBjaGFyYWN0ZXJzIGZyb20gdGhlIG5hbWVcbiAgLy8gICAgc3RyaW5nIGFuZCB0aGUgdmFsdWUgc3RyaW5nLlxuICBuYW1lID0gbmFtZS50cmltKClcbiAgdmFsdWUgPSB2YWx1ZS50cmltKClcblxuICAvLyA1LiBJZiB0aGUgc3VtIG9mIHRoZSBsZW5ndGhzIG9mIHRoZSBuYW1lIHN0cmluZyBhbmQgdGhlIHZhbHVlIHN0cmluZ1xuICAvLyAgICBpcyBtb3JlIHRoYW4gNDA5NiBvY3RldHMsIGFib3J0IHRoZXNlIHN0ZXBzIGFuZCBpZ25vcmUgdGhlIHNldC1cbiAgLy8gICAgY29va2llLXN0cmluZyBlbnRpcmVseS5cbiAgaWYgKG5hbWUubGVuZ3RoICsgdmFsdWUubGVuZ3RoID4gbWF4TmFtZVZhbHVlUGFpclNpemUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gNi4gVGhlIGNvb2tpZS1uYW1lIGlzIHRoZSBuYW1lIHN0cmluZywgYW5kIHRoZSBjb29raWUtdmFsdWUgaXMgdGhlXG4gIC8vICAgIHZhbHVlIHN0cmluZy5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLCB2YWx1ZSwgLi4ucGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXModW5wYXJzZWRBdHRyaWJ1dGVzKVxuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSByZW1haW5pbmcgYXR0cmlidXRlcyBvZiBhIHNldC1jb29raWUgaGVhZGVyXG4gKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjRcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bnBhcnNlZEF0dHJpYnV0ZXNcbiAqIEBwYXJhbSB7W09iamVjdC48c3RyaW5nLCB1bmtub3duPl09e319IGNvb2tpZUF0dHJpYnV0ZUxpc3RcbiAqL1xuZnVuY3Rpb24gcGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXMgKHVucGFyc2VkQXR0cmlidXRlcywgY29va2llQXR0cmlidXRlTGlzdCA9IHt9KSB7XG4gIC8vIDEuIElmIHRoZSB1bnBhcnNlZC1hdHRyaWJ1dGVzIHN0cmluZyBpcyBlbXB0eSwgc2tpcCB0aGUgcmVzdCBvZlxuICAvLyAgICB0aGVzZSBzdGVwcy5cbiAgaWYgKHVucGFyc2VkQXR0cmlidXRlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY29va2llQXR0cmlidXRlTGlzdFxuICB9XG5cbiAgLy8gMi4gRGlzY2FyZCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1bnBhcnNlZC1hdHRyaWJ1dGVzICh3aGljaFxuICAvLyAgICB3aWxsIGJlIGEgJXgzQiAoXCI7XCIpIGNoYXJhY3RlcikuXG4gIGFzc2VydCh1bnBhcnNlZEF0dHJpYnV0ZXNbMF0gPT09ICc7JylcbiAgdW5wYXJzZWRBdHRyaWJ1dGVzID0gdW5wYXJzZWRBdHRyaWJ1dGVzLnNsaWNlKDEpXG5cbiAgbGV0IGNvb2tpZUF2ID0gJydcblxuICAvLyAzLiBJZiB0aGUgcmVtYWluaW5nIHVucGFyc2VkLWF0dHJpYnV0ZXMgY29udGFpbnMgYSAleDNCIChcIjtcIilcbiAgLy8gICAgY2hhcmFjdGVyOlxuICBpZiAodW5wYXJzZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKCc7JykpIHtcbiAgICAvLyAxLiBDb25zdW1lIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZSB1bnBhcnNlZC1hdHRyaWJ1dGVzIHVwIHRvLCBidXRcbiAgICAvLyAgICBub3QgaW5jbHVkaW5nLCB0aGUgZmlyc3QgJXgzQiAoXCI7XCIpIGNoYXJhY3Rlci5cbiAgICBjb29raWVBdiA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICAgJzsnLFxuICAgICAgdW5wYXJzZWRBdHRyaWJ1dGVzLFxuICAgICAgeyBwb3NpdGlvbjogMCB9XG4gICAgKVxuICAgIHVucGFyc2VkQXR0cmlidXRlcyA9IHVucGFyc2VkQXR0cmlidXRlcy5zbGljZShjb29raWVBdi5sZW5ndGgpXG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlOlxuXG4gICAgLy8gMS4gQ29uc3VtZSB0aGUgcmVtYWluZGVyIG9mIHRoZSB1bnBhcnNlZC1hdHRyaWJ1dGVzLlxuICAgIGNvb2tpZUF2ID0gdW5wYXJzZWRBdHRyaWJ1dGVzXG4gICAgdW5wYXJzZWRBdHRyaWJ1dGVzID0gJydcbiAgfVxuXG4gIC8vIExldCB0aGUgY29va2llLWF2IHN0cmluZyBiZSB0aGUgY2hhcmFjdGVycyBjb25zdW1lZCBpbiB0aGlzIHN0ZXAuXG5cbiAgbGV0IGF0dHJpYnV0ZU5hbWUgPSAnJ1xuICBsZXQgYXR0cmlidXRlVmFsdWUgPSAnJ1xuXG4gIC8vIDQuIElmIHRoZSBjb29raWUtYXYgc3RyaW5nIGNvbnRhaW5zIGEgJXgzRCAoXCI9XCIpIGNoYXJhY3RlcjpcbiAgaWYgKGNvb2tpZUF2LmluY2x1ZGVzKCc9JykpIHtcbiAgICAvLyAxLiBUaGUgKHBvc3NpYmx5IGVtcHR5KSBhdHRyaWJ1dGUtbmFtZSBzdHJpbmcgY29uc2lzdHMgb2YgdGhlXG4gICAgLy8gICAgY2hhcmFjdGVycyB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNEIChcIj1cIilcbiAgICAvLyAgICBjaGFyYWN0ZXIsIGFuZCB0aGUgKHBvc3NpYmx5IGVtcHR5KSBhdHRyaWJ1dGUtdmFsdWUgc3RyaW5nXG4gICAgLy8gICAgY29uc2lzdHMgb2YgdGhlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGZpcnN0ICV4M0QgKFwiPVwiKVxuICAgIC8vICAgIGNoYXJhY3Rlci5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHsgcG9zaXRpb246IDAgfVxuXG4gICAgYXR0cmlidXRlTmFtZSA9IGNvbGxlY3RBU2VxdWVuY2VPZkNvZGVQb2ludHNGYXN0KFxuICAgICAgJz0nLFxuICAgICAgY29va2llQXYsXG4gICAgICBwb3NpdGlvblxuICAgIClcbiAgICBhdHRyaWJ1dGVWYWx1ZSA9IGNvb2tpZUF2LnNsaWNlKHBvc2l0aW9uLnBvc2l0aW9uICsgMSlcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2U6XG5cbiAgICAvLyAxLiBUaGUgYXR0cmlidXRlLW5hbWUgc3RyaW5nIGNvbnNpc3RzIG9mIHRoZSBlbnRpcmUgY29va2llLWF2XG4gICAgLy8gICAgc3RyaW5nLCBhbmQgdGhlIGF0dHJpYnV0ZS12YWx1ZSBzdHJpbmcgaXMgZW1wdHkuXG4gICAgYXR0cmlidXRlTmFtZSA9IGNvb2tpZUF2XG4gIH1cblxuICAvLyA1LiBSZW1vdmUgYW55IGxlYWRpbmcgb3IgdHJhaWxpbmcgV1NQIGNoYXJhY3RlcnMgZnJvbSB0aGUgYXR0cmlidXRlLVxuICAvLyAgICBuYW1lIHN0cmluZyBhbmQgdGhlIGF0dHJpYnV0ZS12YWx1ZSBzdHJpbmcuXG4gIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lLnRyaW0oKVxuICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlLnRyaW0oKVxuXG4gIC8vIDYuIElmIHRoZSBhdHRyaWJ1dGUtdmFsdWUgaXMgbG9uZ2VyIHRoYW4gMTAyNCBvY3RldHMsIGlnbm9yZSB0aGVcbiAgLy8gICAgY29va2llLWF2IHN0cmluZyBhbmQgcmV0dXJuIHRvIFN0ZXAgMSBvZiB0aGlzIGFsZ29yaXRobS5cbiAgaWYgKGF0dHJpYnV0ZVZhbHVlLmxlbmd0aCA+IG1heEF0dHJpYnV0ZVZhbHVlU2l6ZSkge1xuICAgIHJldHVybiBwYXJzZVVucGFyc2VkQXR0cmlidXRlcyh1bnBhcnNlZEF0dHJpYnV0ZXMsIGNvb2tpZUF0dHJpYnV0ZUxpc3QpXG4gIH1cblxuICAvLyA3LiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGUtbmFtZSBhbmQgYXR0cmlidXRlLXZhbHVlIGFjY29yZGluZyB0byB0aGVcbiAgLy8gICAgcmVxdWlyZW1lbnRzIGluIHRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMuICAoTm90aWNlIHRoYXRcbiAgLy8gICAgYXR0cmlidXRlcyB3aXRoIHVucmVjb2duaXplZCBhdHRyaWJ1dGUtbmFtZXMgYXJlIGlnbm9yZWQuKVxuICBjb25zdCBhdHRyaWJ1dGVOYW1lTG93ZXJjYXNlID0gYXR0cmlidXRlTmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtcmZjNjI2NWJpcyNzZWN0aW9uLTUuNC4xXG4gIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nXG4gIC8vIFwiRXhwaXJlc1wiLCB0aGUgdXNlciBhZ2VudCBNVVNUIHByb2Nlc3MgdGhlIGNvb2tpZS1hdiBhcyBmb2xsb3dzLlxuICBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ2V4cGlyZXMnKSB7XG4gICAgLy8gMS4gTGV0IHRoZSBleHBpcnktdGltZSBiZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGF0dHJpYnV0ZS12YWx1ZVxuICAgIC8vICAgIGFzIGNvb2tpZS1kYXRlIChzZWUgU2VjdGlvbiA1LjEuMSkuXG4gICAgY29uc3QgZXhwaXJ5VGltZSA9IG5ldyBEYXRlKGF0dHJpYnV0ZVZhbHVlKVxuXG4gICAgLy8gMi4gSWYgdGhlIGF0dHJpYnV0ZS12YWx1ZSBmYWlsZWQgdG8gcGFyc2UgYXMgYSBjb29raWUgZGF0ZSwgaWdub3JlXG4gICAgLy8gICAgdGhlIGNvb2tpZS1hdi5cblxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QuZXhwaXJlcyA9IGV4cGlyeVRpbWVcbiAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lTG93ZXJjYXNlID09PSAnbWF4LWFnZScpIHtcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjJcbiAgICAvLyBJZiB0aGUgYXR0cmlidXRlLW5hbWUgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIHN0cmluZyBcIk1heC1cbiAgICAvLyBBZ2VcIiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBwcm9jZXNzIHRoZSBjb29raWUtYXYgYXMgZm9sbG93cy5cblxuICAgIC8vIDEuIElmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGF0dHJpYnV0ZS12YWx1ZSBpcyBub3QgYSBESUdJVCBvciBhXG4gICAgLy8gICAgXCItXCIgY2hhcmFjdGVyLCBpZ25vcmUgdGhlIGNvb2tpZS1hdi5cbiAgICBjb25zdCBjaGFyQ29kZSA9IGF0dHJpYnV0ZVZhbHVlLmNoYXJDb2RlQXQoMClcblxuICAgIGlmICgoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSAmJiBhdHRyaWJ1dGVWYWx1ZVswXSAhPT0gJy0nKSB7XG4gICAgICByZXR1cm4gcGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXModW5wYXJzZWRBdHRyaWJ1dGVzLCBjb29raWVBdHRyaWJ1dGVMaXN0KVxuICAgIH1cblxuICAgIC8vIDIuIElmIHRoZSByZW1haW5kZXIgb2YgYXR0cmlidXRlLXZhbHVlIGNvbnRhaW5zIGEgbm9uLURJR0lUXG4gICAgLy8gICAgY2hhcmFjdGVyLCBpZ25vcmUgdGhlIGNvb2tpZS1hdi5cbiAgICBpZiAoIS9eXFxkKyQvLnRlc3QoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXModW5wYXJzZWRBdHRyaWJ1dGVzLCBjb29raWVBdHRyaWJ1dGVMaXN0KVxuICAgIH1cblxuICAgIC8vIDMuIExldCBkZWx0YS1zZWNvbmRzIGJlIHRoZSBhdHRyaWJ1dGUtdmFsdWUgY29udmVydGVkIHRvIGFuIGludGVnZXIuXG4gICAgY29uc3QgZGVsdGFTZWNvbmRzID0gTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKVxuXG4gICAgLy8gNC4gTGV0IGNvb2tpZS1hZ2UtbGltaXQgYmUgdGhlIG1heGltdW0gYWdlIG9mIHRoZSBjb29raWUgKHdoaWNoXG4gICAgLy8gICAgU0hPVUxEIGJlIDQwMCBkYXlzIG9yIGxlc3MsIHNlZSBTZWN0aW9uIDQuMS4yLjIpLlxuXG4gICAgLy8gNS4gU2V0IGRlbHRhLXNlY29uZHMgdG8gdGhlIHNtYWxsZXIgb2YgaXRzIHByZXNlbnQgdmFsdWUgYW5kIGNvb2tpZS1cbiAgICAvLyAgICBhZ2UtbGltaXQuXG4gICAgLy8gZGVsdGFTZWNvbmRzID0gTWF0aC5taW4oZGVsdGFTZWNvbmRzICogMTAwMCwgbWF4RXhwaXJlc01zKVxuXG4gICAgLy8gNi4gSWYgZGVsdGEtc2Vjb25kcyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybyAoMCksIGxldCBleHBpcnktXG4gICAgLy8gICAgdGltZSBiZSB0aGUgZWFybGllc3QgcmVwcmVzZW50YWJsZSBkYXRlIGFuZCB0aW1lLiAgT3RoZXJ3aXNlLCBsZXRcbiAgICAvLyAgICB0aGUgZXhwaXJ5LXRpbWUgYmUgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBwbHVzIGRlbHRhLXNlY29uZHNcbiAgICAvLyAgICBzZWNvbmRzLlxuICAgIC8vIGNvbnN0IGV4cGlyeVRpbWUgPSBkZWx0YVNlY29uZHMgPD0gMCA/IERhdGUubm93KCkgOiBEYXRlLm5vdygpICsgZGVsdGFTZWNvbmRzXG5cbiAgICAvLyA3LiBBcHBlbmQgYW4gYXR0cmlidXRlIHRvIHRoZSBjb29raWUtYXR0cmlidXRlLWxpc3Qgd2l0aCBhblxuICAgIC8vICAgIGF0dHJpYnV0ZS1uYW1lIG9mIE1heC1BZ2UgYW5kIGFuIGF0dHJpYnV0ZS12YWx1ZSBvZiBleHBpcnktdGltZS5cbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0Lm1heEFnZSA9IGRlbHRhU2Vjb25kc1xuICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPT09ICdkb21haW4nKSB7XG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtcmZjNjI2NWJpcyNzZWN0aW9uLTUuNC4zXG4gICAgLy8gSWYgdGhlIGF0dHJpYnV0ZS1uYW1lIGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIHRoZSBzdHJpbmcgXCJEb21haW5cIixcbiAgICAvLyB0aGUgdXNlciBhZ2VudCBNVVNUIHByb2Nlc3MgdGhlIGNvb2tpZS1hdiBhcyBmb2xsb3dzLlxuXG4gICAgLy8gMS4gTGV0IGNvb2tpZS1kb21haW4gYmUgdGhlIGF0dHJpYnV0ZS12YWx1ZS5cbiAgICBsZXQgY29va2llRG9tYWluID0gYXR0cmlidXRlVmFsdWVcblxuICAgIC8vIDIuIElmIGNvb2tpZS1kb21haW4gc3RhcnRzIHdpdGggJXgyRSAoXCIuXCIpLCBsZXQgY29va2llLWRvbWFpbiBiZVxuICAgIC8vICAgIGNvb2tpZS1kb21haW4gd2l0aG91dCBpdHMgbGVhZGluZyAleDJFIChcIi5cIikuXG4gICAgaWYgKGNvb2tpZURvbWFpblswXSA9PT0gJy4nKSB7XG4gICAgICBjb29raWVEb21haW4gPSBjb29raWVEb21haW4uc2xpY2UoMSlcbiAgICB9XG5cbiAgICAvLyAzLiBDb252ZXJ0IHRoZSBjb29raWUtZG9tYWluIHRvIGxvd2VyIGNhc2UuXG4gICAgY29va2llRG9tYWluID0gY29va2llRG9tYWluLnRvTG93ZXJDYXNlKClcblxuICAgIC8vIDQuIEFwcGVuZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGNvb2tpZS1hdHRyaWJ1dGUtbGlzdCB3aXRoIGFuXG4gICAgLy8gICAgYXR0cmlidXRlLW5hbWUgb2YgRG9tYWluIGFuZCBhbiBhdHRyaWJ1dGUtdmFsdWUgb2YgY29va2llLWRvbWFpbi5cbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0LmRvbWFpbiA9IGNvb2tpZURvbWFpblxuICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPT09ICdwYXRoJykge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLXJmYzYyNjViaXMjc2VjdGlvbi01LjQuNFxuICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUtbmFtZSBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyB0aGUgc3RyaW5nIFwiUGF0aFwiLFxuICAgIC8vIHRoZSB1c2VyIGFnZW50IE1VU1QgcHJvY2VzcyB0aGUgY29va2llLWF2IGFzIGZvbGxvd3MuXG5cbiAgICAvLyAxLiBJZiB0aGUgYXR0cmlidXRlLXZhbHVlIGlzIGVtcHR5IG9yIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlXG4gICAgLy8gICAgYXR0cmlidXRlLXZhbHVlIGlzIG5vdCAleDJGIChcIi9cIik6XG4gICAgbGV0IGNvb2tpZVBhdGggPSAnJ1xuICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5sZW5ndGggPT09IDAgfHwgYXR0cmlidXRlVmFsdWVbMF0gIT09ICcvJykge1xuICAgICAgLy8gMS4gTGV0IGNvb2tpZS1wYXRoIGJlIHRoZSBkZWZhdWx0LXBhdGguXG4gICAgICBjb29raWVQYXRoID0gJy8nXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZTpcblxuICAgICAgLy8gMS4gTGV0IGNvb2tpZS1wYXRoIGJlIHRoZSBhdHRyaWJ1dGUtdmFsdWUuXG4gICAgICBjb29raWVQYXRoID0gYXR0cmlidXRlVmFsdWVcbiAgICB9XG5cbiAgICAvLyAyLiBBcHBlbmQgYW4gYXR0cmlidXRlIHRvIHRoZSBjb29raWUtYXR0cmlidXRlLWxpc3Qgd2l0aCBhblxuICAgIC8vICAgIGF0dHJpYnV0ZS1uYW1lIG9mIFBhdGggYW5kIGFuIGF0dHJpYnV0ZS12YWx1ZSBvZiBjb29raWUtcGF0aC5cbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0LnBhdGggPSBjb29raWVQYXRoXG4gIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZUxvd2VyY2FzZSA9PT0gJ3NlY3VyZScpIHtcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjVcbiAgICAvLyBJZiB0aGUgYXR0cmlidXRlLW5hbWUgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIHN0cmluZyBcIlNlY3VyZVwiLFxuICAgIC8vIHRoZSB1c2VyIGFnZW50IE1VU1QgYXBwZW5kIGFuIGF0dHJpYnV0ZSB0byB0aGUgY29va2llLWF0dHJpYnV0ZS1saXN0XG4gICAgLy8gd2l0aCBhbiBhdHRyaWJ1dGUtbmFtZSBvZiBTZWN1cmUgYW5kIGFuIGVtcHR5IGF0dHJpYnV0ZS12YWx1ZS5cblxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3Quc2VjdXJlID0gdHJ1ZVxuICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPT09ICdodHRwb25seScpIHtcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjZcbiAgICAvLyBJZiB0aGUgYXR0cmlidXRlLW5hbWUgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIHN0cmluZ1xuICAgIC8vIFwiSHR0cE9ubHlcIiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBhcHBlbmQgYW4gYXR0cmlidXRlIHRvIHRoZSBjb29raWUtXG4gICAgLy8gYXR0cmlidXRlLWxpc3Qgd2l0aCBhbiBhdHRyaWJ1dGUtbmFtZSBvZiBIdHRwT25seSBhbmQgYW4gZW1wdHlcbiAgICAvLyBhdHRyaWJ1dGUtdmFsdWUuXG5cbiAgICBjb29raWVBdHRyaWJ1dGVMaXN0Lmh0dHBPbmx5ID0gdHJ1ZVxuICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWVMb3dlcmNhc2UgPT09ICdzYW1lc2l0ZScpIHtcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1yZmM2MjY1YmlzI3NlY3Rpb24tNS40LjdcbiAgICAvLyBJZiB0aGUgYXR0cmlidXRlLW5hbWUgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIHN0cmluZ1xuICAgIC8vIFwiU2FtZVNpdGVcIiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBwcm9jZXNzIHRoZSBjb29raWUtYXYgYXMgZm9sbG93czpcblxuICAgIC8vIDEuIExldCBlbmZvcmNlbWVudCBiZSBcIkRlZmF1bHRcIi5cbiAgICBsZXQgZW5mb3JjZW1lbnQgPSAnRGVmYXVsdCdcblxuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlTG93ZXJjYXNlID0gYXR0cmlidXRlVmFsdWUudG9Mb3dlckNhc2UoKVxuICAgIC8vIDIuIElmIGNvb2tpZS1hdidzIGF0dHJpYnV0ZS12YWx1ZSBpcyBhIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yXG4gICAgLy8gICAgXCJOb25lXCIsIHNldCBlbmZvcmNlbWVudCB0byBcIk5vbmVcIi5cbiAgICBpZiAoYXR0cmlidXRlVmFsdWVMb3dlcmNhc2UuaW5jbHVkZXMoJ25vbmUnKSkge1xuICAgICAgZW5mb3JjZW1lbnQgPSAnTm9uZSdcbiAgICB9XG5cbiAgICAvLyAzLiBJZiBjb29raWUtYXYncyBhdHRyaWJ1dGUtdmFsdWUgaXMgYSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvclxuICAgIC8vICAgIFwiU3RyaWN0XCIsIHNldCBlbmZvcmNlbWVudCB0byBcIlN0cmljdFwiLlxuICAgIGlmIChhdHRyaWJ1dGVWYWx1ZUxvd2VyY2FzZS5pbmNsdWRlcygnc3RyaWN0JykpIHtcbiAgICAgIGVuZm9yY2VtZW50ID0gJ1N0cmljdCdcbiAgICB9XG5cbiAgICAvLyA0LiBJZiBjb29raWUtYXYncyBhdHRyaWJ1dGUtdmFsdWUgaXMgYSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvclxuICAgIC8vICAgIFwiTGF4XCIsIHNldCBlbmZvcmNlbWVudCB0byBcIkxheFwiLlxuICAgIGlmIChhdHRyaWJ1dGVWYWx1ZUxvd2VyY2FzZS5pbmNsdWRlcygnbGF4JykpIHtcbiAgICAgIGVuZm9yY2VtZW50ID0gJ0xheCdcbiAgICB9XG5cbiAgICAvLyA1LiBBcHBlbmQgYW4gYXR0cmlidXRlIHRvIHRoZSBjb29raWUtYXR0cmlidXRlLWxpc3Qgd2l0aCBhblxuICAgIC8vICAgIGF0dHJpYnV0ZS1uYW1lIG9mIFwiU2FtZVNpdGVcIiBhbmQgYW4gYXR0cmlidXRlLXZhbHVlIG9mXG4gICAgLy8gICAgZW5mb3JjZW1lbnQuXG4gICAgY29va2llQXR0cmlidXRlTGlzdC5zYW1lU2l0ZSA9IGVuZm9yY2VtZW50XG4gIH0gZWxzZSB7XG4gICAgY29va2llQXR0cmlidXRlTGlzdC51bnBhcnNlZCA/Pz0gW11cblxuICAgIGNvb2tpZUF0dHJpYnV0ZUxpc3QudW5wYXJzZWQucHVzaChgJHthdHRyaWJ1dGVOYW1lfT0ke2F0dHJpYnV0ZVZhbHVlfWApXG4gIH1cblxuICAvLyA4LiBSZXR1cm4gdG8gU3RlcCAxIG9mIHRoaXMgYWxnb3JpdGhtLlxuICByZXR1cm4gcGFyc2VVbnBhcnNlZEF0dHJpYnV0ZXModW5wYXJzZWRBdHRyaWJ1dGVzLCBjb29raWVBdHRyaWJ1dGVMaXN0KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcGFyc2VTZXRDb29raWUsXG4gIHBhcnNlVW5wYXJzZWRBdHRyaWJ1dGVzXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgcGFyc2VTZXRDb29raWUgfSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuY29uc3QgeyBzdHJpbmdpZnkgfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcbmNvbnN0IHsgSGVhZGVycyB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvaGVhZGVycycpXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ29va2llXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZhbHVlXG4gKiBAcHJvcGVydHkge0RhdGV8bnVtYmVyfHVuZGVmaW5lZH0gZXhwaXJlc1xuICogQHByb3BlcnR5IHtudW1iZXJ8dW5kZWZpbmVkfSBtYXhBZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHVuZGVmaW5lZH0gZG9tYWluXG4gKiBAcHJvcGVydHkge3N0cmluZ3x1bmRlZmluZWR9IHBhdGhcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNlY3VyZVxuICogQHByb3BlcnR5IHtib29sZWFufHVuZGVmaW5lZH0gaHR0cE9ubHlcbiAqIEBwcm9wZXJ0eSB7J1N0cmljdCd8J0xheCd8J05vbmUnfSBzYW1lU2l0ZVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gdW5wYXJzZWRcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyc1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGdldENvb2tpZXMgKGhlYWRlcnMpIHtcbiAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ2dldENvb2tpZXMnIH0pXG5cbiAgd2ViaWRsLmJyYW5kQ2hlY2soaGVhZGVycywgSGVhZGVycywgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgY29uc3QgY29va2llID0gaGVhZGVycy5nZXQoJ2Nvb2tpZScpXG4gIGNvbnN0IG91dCA9IHt9XG5cbiAgaWYgKCFjb29raWUpIHtcbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICBmb3IgKGNvbnN0IHBpZWNlIG9mIGNvb2tpZS5zcGxpdCgnOycpKSB7XG4gICAgY29uc3QgW25hbWUsIC4uLnZhbHVlXSA9IHBpZWNlLnNwbGl0KCc9JylcblxuICAgIG91dFtuYW1lLnRyaW0oKV0gPSB2YWx1ZS5qb2luKCc9JylcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0hlYWRlcnN9IGhlYWRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3sgcGF0aD86IHN0cmluZywgZG9tYWluPzogc3RyaW5nIH18dW5kZWZpbmVkfSBhdHRyaWJ1dGVzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gZGVsZXRlQ29va2llIChoZWFkZXJzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG4gIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdkZWxldGVDb29raWUnIH0pXG5cbiAgd2ViaWRsLmJyYW5kQ2hlY2soaGVhZGVycywgSGVhZGVycywgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgbmFtZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyhuYW1lKVxuICBhdHRyaWJ1dGVzID0gd2ViaWRsLmNvbnZlcnRlcnMuRGVsZXRlQ29va2llQXR0cmlidXRlcyhhdHRyaWJ1dGVzKVxuXG4gIC8vIE1hdGNoZXMgYmVoYXZpb3Igb2ZcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rlbm9sYW5kL2Rlbm9fc3RkL2Jsb2IvNjM4MjdiMTYzMzBiODI0ODlhMDQ2MTQwMjdjMzNiNzkwNGUwOGJlNS9odHRwL2Nvb2tpZS50cyNMMjc4XG4gIHNldENvb2tpZShoZWFkZXJzLCB7XG4gICAgbmFtZSxcbiAgICB2YWx1ZTogJycsXG4gICAgZXhwaXJlczogbmV3IERhdGUoMCksXG4gICAgLi4uYXR0cmlidXRlc1xuICB9KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyc1xuICogQHJldHVybnMge0Nvb2tpZVtdfVxuICovXG5mdW5jdGlvbiBnZXRTZXRDb29raWVzIChoZWFkZXJzKSB7XG4gIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdnZXRTZXRDb29raWVzJyB9KVxuXG4gIHdlYmlkbC5icmFuZENoZWNrKGhlYWRlcnMsIEhlYWRlcnMsIHsgc3RyaWN0OiBmYWxzZSB9KVxuXG4gIGNvbnN0IGNvb2tpZXMgPSBoZWFkZXJzLmdldFNldENvb2tpZSgpXG5cbiAgaWYgKCFjb29raWVzKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gY29va2llcy5tYXAoKHBhaXIpID0+IHBhcnNlU2V0Q29va2llKHBhaXIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyc1xuICogQHBhcmFtIHtDb29raWV9IGNvb2tpZVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHNldENvb2tpZSAoaGVhZGVycywgY29va2llKSB7XG4gIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMiwgeyBoZWFkZXI6ICdzZXRDb29raWUnIH0pXG5cbiAgd2ViaWRsLmJyYW5kQ2hlY2soaGVhZGVycywgSGVhZGVycywgeyBzdHJpY3Q6IGZhbHNlIH0pXG5cbiAgY29va2llID0gd2ViaWRsLmNvbnZlcnRlcnMuQ29va2llKGNvb2tpZSlcblxuICBjb25zdCBzdHIgPSBzdHJpbmdpZnkoY29va2llKVxuXG4gIGlmIChzdHIpIHtcbiAgICBoZWFkZXJzLmFwcGVuZCgnU2V0LUNvb2tpZScsIHN0cmluZ2lmeShjb29raWUpKVxuICB9XG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLkRlbGV0ZUNvb2tpZUF0dHJpYnV0ZXMgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcih3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcpLFxuICAgIGtleTogJ3BhdGgnLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nKSxcbiAgICBrZXk6ICdkb21haW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9XG5dKVxuXG53ZWJpZGwuY29udmVydGVycy5Db29raWUgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyxcbiAgICBrZXk6ICduYW1lJ1xuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAga2V5OiAndmFsdWUnXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcigodmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgbG9uZyBsb25nJ10odmFsdWUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSlcbiAgICB9KSxcbiAgICBrZXk6ICdleHBpcmVzJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGxcbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzWydsb25nIGxvbmcnXSksXG4gICAga2V5OiAnbWF4QWdlJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGxcbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyksXG4gICAga2V5OiAnZG9tYWluJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGxcbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyksXG4gICAga2V5OiAncGF0aCcsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsXG4gIH0sXG4gIHtcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5udWxsYWJsZUNvbnZlcnRlcih3ZWJpZGwuY29udmVydGVycy5ib29sZWFuKSxcbiAgICBrZXk6ICdzZWN1cmUnLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuYm9vbGVhbiksXG4gICAga2V5OiAnaHR0cE9ubHknLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcsXG4gICAga2V5OiAnc2FtZVNpdGUnLFxuICAgIGFsbG93ZWRWYWx1ZXM6IFsnU3RyaWN0JywgJ0xheCcsICdOb25lJ11cbiAgfSxcbiAge1xuICAgIGNvbnZlcnRlcjogd2ViaWRsLnNlcXVlbmNlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyksXG4gICAga2V5OiAndW5wYXJzZWQnLFxuICAgIGRlZmF1bHRWYWx1ZTogW11cbiAgfVxuXSlcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvb2tpZXMsXG4gIGRlbGV0ZUNvb2tpZSxcbiAgZ2V0U2V0Q29va2llcyxcbiAgc2V0Q29va2llXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIFRoaXMgaXMgYSBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllciB1bmlxdWUgdXNlZFxuLy8gdG8gdmFsaWRhdGUgdGhhdCB0aGUgZW5kcG9pbnQgYWNjZXB0cyB3ZWJzb2NrZXRcbi8vIGNvbm5lY3Rpb25zLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM2NDU1Lmh0bWwjc2VjdGlvbi0xLjNcbmNvbnN0IHVpZCA9ICcyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnXG5cbi8qKiBAdHlwZSB7UHJvcGVydHlEZXNjcmlwdG9yfSAqL1xuY29uc3Qgc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IGZhbHNlLFxuICBjb25maWd1cmFibGU6IGZhbHNlXG59XG5cbmNvbnN0IHN0YXRlcyA9IHtcbiAgQ09OTkVDVElORzogMCxcbiAgT1BFTjogMSxcbiAgQ0xPU0lORzogMixcbiAgQ0xPU0VEOiAzXG59XG5cbmNvbnN0IG9wY29kZXMgPSB7XG4gIENPTlRJTlVBVElPTjogMHgwLFxuICBURVhUOiAweDEsXG4gIEJJTkFSWTogMHgyLFxuICBDTE9TRTogMHg4LFxuICBQSU5HOiAweDksXG4gIFBPTkc6IDB4QVxufVxuXG5jb25zdCBtYXhVbnNpZ25lZDE2Qml0ID0gMiAqKiAxNiAtIDEgLy8gNjU1MzVcblxuY29uc3QgcGFyc2VyU3RhdGVzID0ge1xuICBJTkZPOiAwLFxuICBQQVlMT0FETEVOR1RIXzE2OiAyLFxuICBQQVlMT0FETEVOR1RIXzY0OiAzLFxuICBSRUFEX0RBVEE6IDRcbn1cblxuY29uc3QgZW1wdHlCdWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHVpZCxcbiAgc3RhdGljUHJvcGVydHlEZXNjcmlwdG9ycyxcbiAgc3RhdGVzLFxuICBvcGNvZGVzLFxuICBtYXhVbnNpZ25lZDE2Qml0LFxuICBwYXJzZXJTdGF0ZXMsXG4gIGVtcHR5QnVmZmVyXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBrV2ViU29ja2V0VVJMOiBTeW1ib2woJ3VybCcpLFxuICBrUmVhZHlTdGF0ZTogU3ltYm9sKCdyZWFkeSBzdGF0ZScpLFxuICBrQ29udHJvbGxlcjogU3ltYm9sKCdjb250cm9sbGVyJyksXG4gIGtSZXNwb25zZTogU3ltYm9sKCdyZXNwb25zZScpLFxuICBrQmluYXJ5VHlwZTogU3ltYm9sKCdiaW5hcnkgdHlwZScpLFxuICBrU2VudENsb3NlOiBTeW1ib2woJ3NlbnQgY2xvc2UnKSxcbiAga1JlY2VpdmVkQ2xvc2U6IFN5bWJvbCgncmVjZWl2ZWQgY2xvc2UnKSxcbiAga0J5dGVQYXJzZXI6IFN5bWJvbCgnYnl0ZSBwYXJzZXInKVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcbmNvbnN0IHsga0VudW1lcmFibGVQcm9wZXJ0eSB9ID0gcmVxdWlyZSgnLi4vY29yZS91dGlsJylcbmNvbnN0IHsgTWVzc2FnZVBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJylcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NvbW1zLmh0bWwjbWVzc2FnZWV2ZW50XG4gKi9cbmNsYXNzIE1lc3NhZ2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgI2V2ZW50SW5pdFxuXG4gIGNvbnN0cnVjdG9yICh0eXBlLCBldmVudEluaXREaWN0ID0ge30pIHtcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnTWVzc2FnZUV2ZW50IGNvbnN0cnVjdG9yJyB9KVxuXG4gICAgdHlwZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyh0eXBlKVxuICAgIGV2ZW50SW5pdERpY3QgPSB3ZWJpZGwuY29udmVydGVycy5NZXNzYWdlRXZlbnRJbml0KGV2ZW50SW5pdERpY3QpXG5cbiAgICBzdXBlcih0eXBlLCBldmVudEluaXREaWN0KVxuXG4gICAgdGhpcy4jZXZlbnRJbml0ID0gZXZlbnRJbml0RGljdFxuICB9XG5cbiAgZ2V0IGRhdGEgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIE1lc3NhZ2VFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQuZGF0YVxuICB9XG5cbiAgZ2V0IG9yaWdpbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5vcmlnaW5cbiAgfVxuXG4gIGdldCBsYXN0RXZlbnRJZCAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5sYXN0RXZlbnRJZFxuICB9XG5cbiAgZ2V0IHNvdXJjZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5zb3VyY2VcbiAgfVxuXG4gIGdldCBwb3J0cyAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgTWVzc2FnZUV2ZW50KVxuXG4gICAgaWYgKCFPYmplY3QuaXNGcm96ZW4odGhpcy4jZXZlbnRJbml0LnBvcnRzKSkge1xuICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzLiNldmVudEluaXQucG9ydHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5wb3J0c1xuICB9XG5cbiAgaW5pdE1lc3NhZ2VFdmVudCAoXG4gICAgdHlwZSxcbiAgICBidWJibGVzID0gZmFsc2UsXG4gICAgY2FuY2VsYWJsZSA9IGZhbHNlLFxuICAgIGRhdGEgPSBudWxsLFxuICAgIG9yaWdpbiA9ICcnLFxuICAgIGxhc3RFdmVudElkID0gJycsXG4gICAgc291cmNlID0gbnVsbCxcbiAgICBwb3J0cyA9IFtdXG4gICkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIE1lc3NhZ2VFdmVudClcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdNZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCcgfSlcblxuICAgIHJldHVybiBuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIHtcbiAgICAgIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHNcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyN0aGUtY2xvc2VldmVudC1pbnRlcmZhY2VcbiAqL1xuY2xhc3MgQ2xvc2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgI2V2ZW50SW5pdFxuXG4gIGNvbnN0cnVjdG9yICh0eXBlLCBldmVudEluaXREaWN0ID0ge30pIHtcbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnQ2xvc2VFdmVudCBjb25zdHJ1Y3RvcicgfSlcblxuICAgIHR5cGUgPSB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcodHlwZSlcbiAgICBldmVudEluaXREaWN0ID0gd2ViaWRsLmNvbnZlcnRlcnMuQ2xvc2VFdmVudEluaXQoZXZlbnRJbml0RGljdClcblxuICAgIHN1cGVyKHR5cGUsIGV2ZW50SW5pdERpY3QpXG5cbiAgICB0aGlzLiNldmVudEluaXQgPSBldmVudEluaXREaWN0XG4gIH1cblxuICBnZXQgd2FzQ2xlYW4gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIENsb3NlRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0Lndhc0NsZWFuXG4gIH1cblxuICBnZXQgY29kZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2xvc2VFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQuY29kZVxuICB9XG5cbiAgZ2V0IHJlYXNvbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgQ2xvc2VFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQucmVhc29uXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1lcnJvcmV2ZW50LWludGVyZmFjZVxuY2xhc3MgRXJyb3JFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgI2V2ZW50SW5pdFxuXG4gIGNvbnN0cnVjdG9yICh0eXBlLCBldmVudEluaXREaWN0KSB7XG4gICAgd2ViaWRsLmFyZ3VtZW50TGVuZ3RoQ2hlY2soYXJndW1lbnRzLCAxLCB7IGhlYWRlcjogJ0Vycm9yRXZlbnQgY29uc3RydWN0b3InIH0pXG5cbiAgICBzdXBlcih0eXBlLCBldmVudEluaXREaWN0KVxuXG4gICAgdHlwZSA9IHdlYmlkbC5jb252ZXJ0ZXJzLkRPTVN0cmluZyh0eXBlKVxuICAgIGV2ZW50SW5pdERpY3QgPSB3ZWJpZGwuY29udmVydGVycy5FcnJvckV2ZW50SW5pdChldmVudEluaXREaWN0ID8/IHt9KVxuXG4gICAgdGhpcy4jZXZlbnRJbml0ID0gZXZlbnRJbml0RGljdFxuICB9XG5cbiAgZ2V0IG1lc3NhZ2UgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEVycm9yRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0Lm1lc3NhZ2VcbiAgfVxuXG4gIGdldCBmaWxlbmFtZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgRXJyb3JFdmVudClcblxuICAgIHJldHVybiB0aGlzLiNldmVudEluaXQuZmlsZW5hbWVcbiAgfVxuXG4gIGdldCBsaW5lbm8gKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIEVycm9yRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRJbml0LmxpbmVub1xuICB9XG5cbiAgZ2V0IGNvbG5vICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBFcnJvckV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5jb2xub1xuICB9XG5cbiAgZ2V0IGVycm9yICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBFcnJvckV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50SW5pdC5lcnJvclxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE1lc3NhZ2VFdmVudC5wcm90b3R5cGUsIHtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ01lc3NhZ2VFdmVudCcsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0sXG4gIGRhdGE6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9yaWdpbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbGFzdEV2ZW50SWQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIHNvdXJjZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcG9ydHM6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIGluaXRNZXNzYWdlRXZlbnQ6IGtFbnVtZXJhYmxlUHJvcGVydHlcbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENsb3NlRXZlbnQucHJvdG90eXBlLCB7XG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdDbG9zZUV2ZW50JyxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSxcbiAgcmVhc29uOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjb2RlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICB3YXNDbGVhbjoga0VudW1lcmFibGVQcm9wZXJ0eVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRXJyb3JFdmVudC5wcm90b3R5cGUsIHtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IHtcbiAgICB2YWx1ZTogJ0Vycm9yRXZlbnQnLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9LFxuICBtZXNzYWdlOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBmaWxlbmFtZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgbGluZW5vOiBrRW51bWVyYWJsZVByb3BlcnR5LFxuICBjb2xubzoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZXJyb3I6IGtFbnVtZXJhYmxlUHJvcGVydHlcbn0pXG5cbndlYmlkbC5jb252ZXJ0ZXJzLk1lc3NhZ2VQb3J0ID0gd2ViaWRsLmludGVyZmFjZUNvbnZlcnRlcihNZXNzYWdlUG9ydClcblxud2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPE1lc3NhZ2VQb3J0PiddID0gd2ViaWRsLnNlcXVlbmNlQ29udmVydGVyKFxuICB3ZWJpZGwuY29udmVydGVycy5NZXNzYWdlUG9ydFxuKVxuXG5jb25zdCBldmVudEluaXQgPSBbXG4gIHtcbiAgICBrZXk6ICdidWJibGVzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnY2FuY2VsYWJsZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ib29sZWFuLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIGtleTogJ2NvbXBvc2VkJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9XG5dXG5cbndlYmlkbC5jb252ZXJ0ZXJzLk1lc3NhZ2VFdmVudEluaXQgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIC4uLmV2ZW50SW5pdCxcbiAge1xuICAgIGtleTogJ2RhdGEnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuYW55LFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbFxuICB9LFxuICB7XG4gICAga2V5OiAnb3JpZ2luJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLlVTVlN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdsYXN0RXZlbnRJZCcsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiAnJ1xuICB9LFxuICB7XG4gICAga2V5OiAnc291cmNlJyxcbiAgICAvLyBOb2RlIGRvZXNuJ3QgaW1wbGVtZW50IFdpbmRvd1Byb3h5IG9yIFNlcnZpY2VXb3JrZXIsIHNvIHRoZSBvbmx5XG4gICAgLy8gdmFsaWQgdmFsdWUgZm9yIHNvdXJjZSBpcyBhIE1lc3NhZ2VQb3J0LlxuICAgIGNvbnZlcnRlcjogd2ViaWRsLm51bGxhYmxlQ29udmVydGVyKHdlYmlkbC5jb252ZXJ0ZXJzLk1lc3NhZ2VQb3J0KSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGxcbiAgfSxcbiAge1xuICAgIGtleTogJ3BvcnRzJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxNZXNzYWdlUG9ydD4nXSxcbiAgICBnZXQgZGVmYXVsdFZhbHVlICgpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXSlcblxud2ViaWRsLmNvbnZlcnRlcnMuQ2xvc2VFdmVudEluaXQgPSB3ZWJpZGwuZGljdGlvbmFyeUNvbnZlcnRlcihbXG4gIC4uLmV2ZW50SW5pdCxcbiAge1xuICAgIGtleTogJ3dhc0NsZWFuJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmJvb2xlYW4sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB7XG4gICAga2V5OiAnY29kZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgc2hvcnQnXSxcbiAgICBkZWZhdWx0VmFsdWU6IDBcbiAgfSxcbiAge1xuICAgIGtleTogJ3JlYXNvbicsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiAnJ1xuICB9XG5dKVxuXG53ZWJpZGwuY29udmVydGVycy5FcnJvckV2ZW50SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAgLi4uZXZlbnRJbml0LFxuICB7XG4gICAga2V5OiAnbWVzc2FnZScsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiAnJ1xuICB9LFxuICB7XG4gICAga2V5OiAnZmlsZW5hbWUnLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnMuVVNWU3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogJydcbiAgfSxcbiAge1xuICAgIGtleTogJ2xpbmVubycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgbG9uZyddLFxuICAgIGRlZmF1bHRWYWx1ZTogMFxuICB9LFxuICB7XG4gICAga2V5OiAnY29sbm8nLFxuICAgIGNvbnZlcnRlcjogd2ViaWRsLmNvbnZlcnRlcnNbJ3Vuc2lnbmVkIGxvbmcnXSxcbiAgICBkZWZhdWx0VmFsdWU6IDBcbiAgfSxcbiAge1xuICAgIGtleTogJ2Vycm9yJyxcbiAgICBjb252ZXJ0ZXI6IHdlYmlkbC5jb252ZXJ0ZXJzLmFueVxuICB9XG5dKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgTWVzc2FnZUV2ZW50LFxuICBDbG9zZUV2ZW50LFxuICBFcnJvckV2ZW50XG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsga1JlYWR5U3RhdGUsIGtDb250cm9sbGVyLCBrUmVzcG9uc2UsIGtCaW5hcnlUeXBlLCBrV2ViU29ja2V0VVJMIH0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBzdGF0ZXMsIG9wY29kZXMgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbmNvbnN0IHsgTWVzc2FnZUV2ZW50LCBFcnJvckV2ZW50IH0gPSByZXF1aXJlKCcuL2V2ZW50cycpXG5cbi8qIGdsb2JhbHMgQmxvYiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3dlYnNvY2tldCcpLldlYlNvY2tldH0gd3NcbiAqL1xuZnVuY3Rpb24gaXNFc3RhYmxpc2hlZCAod3MpIHtcbiAgLy8gSWYgdGhlIHNlcnZlcidzIHJlc3BvbnNlIGlzIHZhbGlkYXRlZCBhcyBwcm92aWRlZCBmb3IgYWJvdmUsIGl0IGlzXG4gIC8vIHNhaWQgdGhhdCBfVGhlIFdlYlNvY2tldCBDb25uZWN0aW9uIGlzIEVzdGFibGlzaGVkXyBhbmQgdGhhdCB0aGVcbiAgLy8gV2ViU29ja2V0IENvbm5lY3Rpb24gaXMgaW4gdGhlIE9QRU4gc3RhdGUuXG4gIHJldHVybiB3c1trUmVhZHlTdGF0ZV0gPT09IHN0YXRlcy5PUEVOXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vd2Vic29ja2V0JykuV2ViU29ja2V0fSB3c1xuICovXG5mdW5jdGlvbiBpc0Nsb3NpbmcgKHdzKSB7XG4gIC8vIFVwb24gZWl0aGVyIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGEgQ2xvc2UgY29udHJvbCBmcmFtZSwgaXQgaXMgc2FpZFxuICAvLyB0aGF0IF9UaGUgV2ViU29ja2V0IENsb3NpbmcgSGFuZHNoYWtlIGlzIFN0YXJ0ZWRfIGFuZCB0aGF0IHRoZVxuICAvLyBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBpbiB0aGUgQ0xPU0lORyBzdGF0ZS5cbiAgcmV0dXJuIHdzW2tSZWFkeVN0YXRlXSA9PT0gc3RhdGVzLkNMT1NJTkdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi93ZWJzb2NrZXQnKS5XZWJTb2NrZXR9IHdzXG4gKi9cbmZ1bmN0aW9uIGlzQ2xvc2VkICh3cykge1xuICByZXR1cm4gd3Nba1JlYWR5U3RhdGVdID09PSBzdGF0ZXMuQ0xPU0VEXG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtZXZlbnQtZmlyZVxuICogQHBhcmFtIHtzdHJpbmd9IGVcbiAqIEBwYXJhbSB7RXZlbnRUYXJnZXR9IHRhcmdldFxuICogQHBhcmFtIHtFdmVudEluaXQgfCB1bmRlZmluZWR9IGV2ZW50SW5pdERpY3RcbiAqL1xuZnVuY3Rpb24gZmlyZUV2ZW50IChlLCB0YXJnZXQsIGV2ZW50Q29uc3RydWN0b3IgPSBFdmVudCwgZXZlbnRJbml0RGljdCkge1xuICAvLyAxLiBJZiBldmVudENvbnN0cnVjdG9yIGlzIG5vdCBnaXZlbiwgdGhlbiBsZXQgZXZlbnRDb25zdHJ1Y3RvciBiZSBFdmVudC5cblxuICAvLyAyLiBMZXQgZXZlbnQgYmUgdGhlIHJlc3VsdCBvZiBjcmVhdGluZyBhbiBldmVudCBnaXZlbiBldmVudENvbnN0cnVjdG9yLFxuICAvLyAgICBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgdGFyZ2V0LlxuICAvLyAzLiBJbml0aWFsaXplIGV2ZW50XHUyMDE5cyB0eXBlIGF0dHJpYnV0ZSB0byBlLlxuICBjb25zdCBldmVudCA9IG5ldyBldmVudENvbnN0cnVjdG9yKGUsIGV2ZW50SW5pdERpY3QpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuXG4gIC8vIDQuIEluaXRpYWxpemUgYW55IG90aGVyIElETCBhdHRyaWJ1dGVzIG9mIGV2ZW50IGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgLy8gICAgaW52b2NhdGlvbiBvZiB0aGlzIGFsZ29yaXRobS5cblxuICAvLyA1LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBkaXNwYXRjaGluZyBldmVudCBhdCB0YXJnZXQsIHdpdGggbGVnYWN5IHRhcmdldFxuICAvLyAgICBvdmVycmlkZSBmbGFnIHNldCBpZiBzZXQuXG4gIHRhcmdldC5kaXNwYXRjaEV2ZW50KGV2ZW50KVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZmVlZGJhY2stZnJvbS10aGUtcHJvdG9jb2xcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3dlYnNvY2tldCcpLldlYlNvY2tldH0gd3NcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlIE9wY29kZVxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgYXBwbGljYXRpb24gZGF0YVxuICovXG5mdW5jdGlvbiB3ZWJzb2NrZXRNZXNzYWdlUmVjZWl2ZWQgKHdzLCB0eXBlLCBkYXRhKSB7XG4gIC8vIDEuIElmIHJlYWR5IHN0YXRlIGlzIG5vdCBPUEVOICgxKSwgdGhlbiByZXR1cm4uXG4gIGlmICh3c1trUmVhZHlTdGF0ZV0gIT09IHN0YXRlcy5PUEVOKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyAyLiBMZXQgZGF0YUZvckV2ZW50IGJlIGRldGVybWluZWQgYnkgc3dpdGNoaW5nIG9uIHR5cGUgYW5kIGJpbmFyeSB0eXBlOlxuICBsZXQgZGF0YUZvckV2ZW50XG5cbiAgaWYgKHR5cGUgPT09IG9wY29kZXMuVEVYVCkge1xuICAgIC8vIC0+IHR5cGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgaXMgVGV4dFxuICAgIC8vICAgICAgYSBuZXcgRE9NU3RyaW5nIGNvbnRhaW5pbmcgZGF0YVxuICAgIHRyeSB7XG4gICAgICBkYXRhRm9yRXZlbnQgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04JywgeyBmYXRhbDogdHJ1ZSB9KS5kZWNvZGUoZGF0YSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHdzLCAnUmVjZWl2ZWQgaW52YWxpZCBVVEYtOCBpbiB0ZXh0IGZyYW1lLicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gb3Bjb2Rlcy5CSU5BUlkpIHtcbiAgICBpZiAod3Nba0JpbmFyeVR5cGVdID09PSAnYmxvYicpIHtcbiAgICAgIC8vIC0+IHR5cGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgaXMgQmluYXJ5IGFuZCBiaW5hcnkgdHlwZSBpcyBcImJsb2JcIlxuICAgICAgLy8gICAgICBhIG5ldyBCbG9iIG9iamVjdCwgY3JlYXRlZCBpbiB0aGUgcmVsZXZhbnQgUmVhbG0gb2YgdGhlIFdlYlNvY2tldFxuICAgICAgLy8gICAgICBvYmplY3QsIHRoYXQgcmVwcmVzZW50cyBkYXRhIGFzIGl0cyByYXcgZGF0YVxuICAgICAgZGF0YUZvckV2ZW50ID0gbmV3IEJsb2IoW2RhdGFdKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyAtPiB0eXBlIGluZGljYXRlcyB0aGF0IHRoZSBkYXRhIGlzIEJpbmFyeSBhbmQgYmluYXJ5IHR5cGUgaXMgXCJhcnJheWJ1ZmZlclwiXG4gICAgICAvLyAgICAgIGEgbmV3IEFycmF5QnVmZmVyIG9iamVjdCwgY3JlYXRlZCBpbiB0aGUgcmVsZXZhbnQgUmVhbG0gb2YgdGhlXG4gICAgICAvLyAgICAgIFdlYlNvY2tldCBvYmplY3QsIHdob3NlIGNvbnRlbnRzIGFyZSBkYXRhXG4gICAgICBkYXRhRm9yRXZlbnQgPSBuZXcgVWludDhBcnJheShkYXRhKS5idWZmZXJcbiAgICB9XG4gIH1cblxuICAvLyAzLiBGaXJlIGFuIGV2ZW50IG5hbWVkIG1lc3NhZ2UgYXQgdGhlIFdlYlNvY2tldCBvYmplY3QsIHVzaW5nIE1lc3NhZ2VFdmVudCxcbiAgLy8gICAgd2l0aCB0aGUgb3JpZ2luIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgV2ViU29ja2V0XG4gIC8vICAgIG9iamVjdFx1MjAxOXMgdXJsJ3Mgb3JpZ2luLCBhbmQgdGhlIGRhdGEgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIGRhdGFGb3JFdmVudC5cbiAgZmlyZUV2ZW50KCdtZXNzYWdlJywgd3MsIE1lc3NhZ2VFdmVudCwge1xuICAgIG9yaWdpbjogd3Nba1dlYlNvY2tldFVSTF0ub3JpZ2luLFxuICAgIGRhdGE6IGRhdGFGb3JFdmVudFxuICB9KVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1XG4gKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMjYxNlxuICogQHNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zOTg0MDdcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm90b2NvbFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkU3VicHJvdG9jb2wgKHByb3RvY29sKSB7XG4gIC8vIElmIHByZXNlbnQsIHRoaXMgdmFsdWUgaW5kaWNhdGVzIG9uZVxuICAvLyBvciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBzdWJwcm90b2NvbCB0aGUgY2xpZW50IHdpc2hlcyB0byBzcGVhayxcbiAgLy8gb3JkZXJlZCBieSBwcmVmZXJlbmNlLiAgVGhlIGVsZW1lbnRzIHRoYXQgY29tcHJpc2UgdGhpcyB2YWx1ZVxuICAvLyBNVVNUIGJlIG5vbi1lbXB0eSBzdHJpbmdzIHdpdGggY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDIxIHRvXG4gIC8vIFUrMDA3RSBub3QgaW5jbHVkaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW5cbiAgLy8gW1JGQzI2MTZdIGFuZCBNVVNUIGFsbCBiZSB1bmlxdWUgc3RyaW5ncy5cbiAgaWYgKHByb3RvY29sLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGFyIG9mIHByb3RvY29sKSB7XG4gICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKVxuXG4gICAgaWYgKFxuICAgICAgY29kZSA8IDB4MjEgfHxcbiAgICAgIGNvZGUgPiAweDdFIHx8XG4gICAgICBjaGFyID09PSAnKCcgfHxcbiAgICAgIGNoYXIgPT09ICcpJyB8fFxuICAgICAgY2hhciA9PT0gJzwnIHx8XG4gICAgICBjaGFyID09PSAnPicgfHxcbiAgICAgIGNoYXIgPT09ICdAJyB8fFxuICAgICAgY2hhciA9PT0gJywnIHx8XG4gICAgICBjaGFyID09PSAnOycgfHxcbiAgICAgIGNoYXIgPT09ICc6JyB8fFxuICAgICAgY2hhciA9PT0gJ1xcXFwnIHx8XG4gICAgICBjaGFyID09PSAnXCInIHx8XG4gICAgICBjaGFyID09PSAnLycgfHxcbiAgICAgIGNoYXIgPT09ICdbJyB8fFxuICAgICAgY2hhciA9PT0gJ10nIHx8XG4gICAgICBjaGFyID09PSAnPycgfHxcbiAgICAgIGNoYXIgPT09ICc9JyB8fFxuICAgICAgY2hhciA9PT0gJ3snIHx8XG4gICAgICBjaGFyID09PSAnfScgfHxcbiAgICAgIGNvZGUgPT09IDMyIHx8IC8vIFNQXG4gICAgICBjb2RlID09PSA5IC8vIEhUXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tNy00XG4gKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkU3RhdHVzQ29kZSAoY29kZSkge1xuICBpZiAoY29kZSA+PSAxMDAwICYmIGNvZGUgPCAxMDE1KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNvZGUgIT09IDEwMDQgJiYgLy8gcmVzZXJ2ZWRcbiAgICAgIGNvZGUgIT09IDEwMDUgJiYgLy8gXCJNVVNUIE5PVCBiZSBzZXQgYXMgYSBzdGF0dXMgY29kZVwiXG4gICAgICBjb2RlICE9PSAxMDA2IC8vIFwiTVVTVCBOT1QgYmUgc2V0IGFzIGEgc3RhdHVzIGNvZGVcIlxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vd2Vic29ja2V0JykuV2ViU29ja2V0fSB3c1xuICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWFzb25cbiAqL1xuZnVuY3Rpb24gZmFpbFdlYnNvY2tldENvbm5lY3Rpb24gKHdzLCByZWFzb24pIHtcbiAgY29uc3QgeyBba0NvbnRyb2xsZXJdOiBjb250cm9sbGVyLCBba1Jlc3BvbnNlXTogcmVzcG9uc2UgfSA9IHdzXG5cbiAgY29udHJvbGxlci5hYm9ydCgpXG5cbiAgaWYgKHJlc3BvbnNlPy5zb2NrZXQgJiYgIXJlc3BvbnNlLnNvY2tldC5kZXN0cm95ZWQpIHtcbiAgICByZXNwb25zZS5zb2NrZXQuZGVzdHJveSgpXG4gIH1cblxuICBpZiAocmVhc29uKSB7XG4gICAgZmlyZUV2ZW50KCdlcnJvcicsIHdzLCBFcnJvckV2ZW50LCB7XG4gICAgICBlcnJvcjogbmV3IEVycm9yKHJlYXNvbilcbiAgICB9KVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0VzdGFibGlzaGVkLFxuICBpc0Nsb3NpbmcsXG4gIGlzQ2xvc2VkLFxuICBmaXJlRXZlbnQsXG4gIGlzVmFsaWRTdWJwcm90b2NvbCxcbiAgaXNWYWxpZFN0YXR1c0NvZGUsXG4gIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uLFxuICB3ZWJzb2NrZXRNZXNzYWdlUmVjZWl2ZWRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgZGlhZ25vc3RpY3NDaGFubmVsID0gcmVxdWlyZSgnZGlhZ25vc3RpY3NfY2hhbm5lbCcpXG5jb25zdCB7IHVpZCwgc3RhdGVzIH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5jb25zdCB7XG4gIGtSZWFkeVN0YXRlLFxuICBrU2VudENsb3NlLFxuICBrQnl0ZVBhcnNlcixcbiAga1JlY2VpdmVkQ2xvc2Vcbn0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBmaXJlRXZlbnQsIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uIH0gPSByZXF1aXJlKCcuL3V0aWwnKVxuY29uc3QgeyBDbG9zZUV2ZW50IH0gPSByZXF1aXJlKCcuL2V2ZW50cycpXG5jb25zdCB7IG1ha2VSZXF1ZXN0IH0gPSByZXF1aXJlKCcuLi9mZXRjaC9yZXF1ZXN0JylcbmNvbnN0IHsgZmV0Y2hpbmcgfSA9IHJlcXVpcmUoJy4uL2ZldGNoL2luZGV4JylcbmNvbnN0IHsgSGVhZGVycyB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvaGVhZGVycycpXG5jb25zdCB7IGdldEdsb2JhbERpc3BhdGNoZXIgfSA9IHJlcXVpcmUoJy4uL2dsb2JhbCcpXG5jb25zdCB7IGtIZWFkZXJzTGlzdCB9ID0gcmVxdWlyZSgnLi4vY29yZS9zeW1ib2xzJylcblxuY29uc3QgY2hhbm5lbHMgPSB7fVxuY2hhbm5lbHMub3BlbiA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6d2Vic29ja2V0Om9wZW4nKVxuY2hhbm5lbHMuY2xvc2UgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOndlYnNvY2tldDpjbG9zZScpXG5jaGFubmVscy5zb2NrZXRFcnJvciA9IGRpYWdub3N0aWNzQ2hhbm5lbC5jaGFubmVsKCd1bmRpY2k6d2Vic29ja2V0OnNvY2tldF9lcnJvcicpXG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdjcnlwdG8nKX0gKi9cbmxldCBjcnlwdG9cbnRyeSB7XG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpXG59IGNhdGNoIHtcblxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC13ZWJzb2NrZXQtZXN0YWJsaXNoXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gcHJvdG9jb2xzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi93ZWJzb2NrZXQnKS5XZWJTb2NrZXR9IHdzXG4gKiBAcGFyYW0geyhyZXNwb25zZTogYW55KSA9PiB2b2lkfSBvbkVzdGFibGlzaFxuICogQHBhcmFtIHtQYXJ0aWFsPGltcG9ydCgnLi4vLi4vdHlwZXMvd2Vic29ja2V0JykuV2ViU29ja2V0SW5pdD59IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gZXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbiAodXJsLCBwcm90b2NvbHMsIHdzLCBvbkVzdGFibGlzaCwgb3B0aW9ucykge1xuICAvLyAxLiBMZXQgcmVxdWVzdFVSTCBiZSBhIGNvcHkgb2YgdXJsLCB3aXRoIGl0cyBzY2hlbWUgc2V0IHRvIFwiaHR0cFwiLCBpZiB1cmxcdTIwMTlzXG4gIC8vICAgIHNjaGVtZSBpcyBcIndzXCIsIGFuZCB0byBcImh0dHBzXCIgb3RoZXJ3aXNlLlxuICBjb25zdCByZXF1ZXN0VVJMID0gdXJsXG5cbiAgcmVxdWVzdFVSTC5wcm90b2NvbCA9IHVybC5wcm90b2NvbCA9PT0gJ3dzOicgPyAnaHR0cDonIDogJ2h0dHBzOidcblxuICAvLyAyLiBMZXQgcmVxdWVzdCBiZSBhIG5ldyByZXF1ZXN0LCB3aG9zZSBVUkwgaXMgcmVxdWVzdFVSTCwgY2xpZW50IGlzIGNsaWVudCxcbiAgLy8gICAgc2VydmljZS13b3JrZXJzIG1vZGUgaXMgXCJub25lXCIsIHJlZmVycmVyIGlzIFwibm8tcmVmZXJyZXJcIiwgbW9kZSBpc1xuICAvLyAgICBcIndlYnNvY2tldFwiLCBjcmVkZW50aWFscyBtb2RlIGlzIFwiaW5jbHVkZVwiLCBjYWNoZSBtb2RlIGlzIFwibm8tc3RvcmVcIiAsXG4gIC8vICAgIGFuZCByZWRpcmVjdCBtb2RlIGlzIFwiZXJyb3JcIi5cbiAgY29uc3QgcmVxdWVzdCA9IG1ha2VSZXF1ZXN0KHtcbiAgICB1cmxMaXN0OiBbcmVxdWVzdFVSTF0sXG4gICAgc2VydmljZVdvcmtlcnM6ICdub25lJyxcbiAgICByZWZlcnJlcjogJ25vLXJlZmVycmVyJyxcbiAgICBtb2RlOiAnd2Vic29ja2V0JyxcbiAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIGNhY2hlOiAnbm8tc3RvcmUnLFxuICAgIHJlZGlyZWN0OiAnZXJyb3InXG4gIH0pXG5cbiAgLy8gTm90ZTogdW5kaWNpIGV4dGVuc2lvbiwgYWxsb3cgc2V0dGluZyBjdXN0b20gaGVhZGVycy5cbiAgaWYgKG9wdGlvbnMuaGVhZGVycykge1xuICAgIGNvbnN0IGhlYWRlcnNMaXN0ID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVtrSGVhZGVyc0xpc3RdXG5cbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0ID0gaGVhZGVyc0xpc3RcbiAgfVxuXG4gIC8vIDMuIEFwcGVuZCAoYFVwZ3JhZGVgLCBgd2Vic29ja2V0YCkgdG8gcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIC8vIDQuIEFwcGVuZCAoYENvbm5lY3Rpb25gLCBgVXBncmFkZWApIHRvIHJlcXVlc3RcdTIwMTlzIGhlYWRlciBsaXN0LlxuICAvLyBOb3RlOiBib3RoIG9mIHRoZXNlIGFyZSBoYW5kbGVkIGJ5IHVuZGljaSBjdXJyZW50bHkuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvdW5kaWNpL2Jsb2IvNjhjMjY5YzQxNDRjNDQ2ZjNmMTIyMDk1MTMzOGRhZWY0YTZiNWVjNC9saWIvY2xpZW50LmpzI0wxMzk3XG5cbiAgLy8gNS4gTGV0IGtleVZhbHVlIGJlIGEgbm9uY2UgY29uc2lzdGluZyBvZiBhIHJhbmRvbWx5IHNlbGVjdGVkXG4gIC8vICAgIDE2LWJ5dGUgdmFsdWUgdGhhdCBoYXMgYmVlbiBmb3JnaXZpbmctYmFzZTY0LWVuY29kZWQgYW5kXG4gIC8vICAgIGlzb21vcnBoaWMgZW5jb2RlZC5cbiAgY29uc3Qga2V5VmFsdWUgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKCdiYXNlNjQnKVxuXG4gIC8vIDYuIEFwcGVuZCAoYFNlYy1XZWJTb2NrZXQtS2V5YCwga2V5VmFsdWUpIHRvIHJlcXVlc3RcdTIwMTlzXG4gIC8vICAgIGhlYWRlciBsaXN0LlxuICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnc2VjLXdlYnNvY2tldC1rZXknLCBrZXlWYWx1ZSlcblxuICAvLyA3LiBBcHBlbmQgKGBTZWMtV2ViU29ja2V0LVZlcnNpb25gLCBgMTNgKSB0byByZXF1ZXN0XHUyMDE5c1xuICAvLyAgICBoZWFkZXIgbGlzdC5cbiAgcmVxdWVzdC5oZWFkZXJzTGlzdC5hcHBlbmQoJ3NlYy13ZWJzb2NrZXQtdmVyc2lvbicsICcxMycpXG5cbiAgLy8gOC4gRm9yIGVhY2ggcHJvdG9jb2wgaW4gcHJvdG9jb2xzLCBjb21iaW5lXG4gIC8vICAgIChgU2VjLVdlYlNvY2tldC1Qcm90b2NvbGAsIHByb3RvY29sKSBpbiByZXF1ZXN0XHUyMDE5cyBoZWFkZXJcbiAgLy8gICAgbGlzdC5cbiAgZm9yIChjb25zdCBwcm90b2NvbCBvZiBwcm90b2NvbHMpIHtcbiAgICByZXF1ZXN0LmhlYWRlcnNMaXN0LmFwcGVuZCgnc2VjLXdlYnNvY2tldC1wcm90b2NvbCcsIHByb3RvY29sKVxuICB9XG5cbiAgLy8gOS4gTGV0IHBlcm1lc3NhZ2VEZWZsYXRlIGJlIGEgdXNlci1hZ2VudCBkZWZpbmVkXG4gIC8vICAgIFwicGVybWVzc2FnZS1kZWZsYXRlXCIgZXh0ZW5zaW9uIGhlYWRlciB2YWx1ZS5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvZ2Vja28tZGV2L2Jsb2IvY2U3ODIzNGY1ZTY1M2E1ZDM5MTY4MTNmZjk5MGYwNTM1MTAyMjdiYy9uZXR3ZXJrL3Byb3RvY29sL3dlYnNvY2tldC9XZWJTb2NrZXRDaGFubmVsLmNwcCNMMjY3M1xuICAvLyBUT0RPOiBlbmFibGUgb25jZSBwZXJtZXNzYWdlLWRlZmxhdGUgaXMgc3VwcG9ydGVkXG4gIGNvbnN0IHBlcm1lc3NhZ2VEZWZsYXRlID0gJycgLy8gJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgMTUnXG5cbiAgLy8gMTAuIEFwcGVuZCAoYFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uc2AsIHBlcm1lc3NhZ2VEZWZsYXRlKSB0b1xuICAvLyAgICAgcmVxdWVzdFx1MjAxOXMgaGVhZGVyIGxpc3QuXG4gIC8vIHJlcXVlc3QuaGVhZGVyc0xpc3QuYXBwZW5kKCdzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMnLCBwZXJtZXNzYWdlRGVmbGF0ZSlcblxuICAvLyAxMS4gRmV0Y2ggcmVxdWVzdCB3aXRoIHVzZVBhcmFsbGVsUXVldWUgc2V0IHRvIHRydWUsIGFuZFxuICAvLyAgICAgcHJvY2Vzc1Jlc3BvbnNlIGdpdmVuIHJlc3BvbnNlIGJlaW5nIHRoZXNlIHN0ZXBzOlxuICBjb25zdCBjb250cm9sbGVyID0gZmV0Y2hpbmcoe1xuICAgIHJlcXVlc3QsXG4gICAgdXNlUGFyYWxsZWxRdWV1ZTogdHJ1ZSxcbiAgICBkaXNwYXRjaGVyOiBvcHRpb25zLmRpc3BhdGNoZXIgPz8gZ2V0R2xvYmFsRGlzcGF0Y2hlcigpLFxuICAgIHByb2Nlc3NSZXNwb25zZSAocmVzcG9uc2UpIHtcbiAgICAgIC8vIDEuIElmIHJlc3BvbnNlIGlzIGEgbmV0d29yayBlcnJvciBvciBpdHMgc3RhdHVzIGlzIG5vdCAxMDEsXG4gICAgICAvLyAgICBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi5cbiAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSAnZXJyb3InIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gMTAxKSB7XG4gICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHdzLCAnUmVjZWl2ZWQgbmV0d29yayBlcnJvciBvciBub24tMTAxIHN0YXR1cyBjb2RlLicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBwcm90b2NvbHMgaXMgbm90IHRoZSBlbXB0eSBsaXN0IGFuZCBleHRyYWN0aW5nIGhlYWRlclxuICAgICAgLy8gICAgbGlzdCB2YWx1ZXMgZ2l2ZW4gYFNlYy1XZWJTb2NrZXQtUHJvdG9jb2xgIGFuZCByZXNwb25zZVx1MjAxOXNcbiAgICAgIC8vICAgIGhlYWRlciBsaXN0IHJlc3VsdHMgaW4gbnVsbCwgZmFpbHVyZSwgb3IgdGhlIGVtcHR5IGJ5dGVcbiAgICAgIC8vICAgIHNlcXVlbmNlLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLlxuICAgICAgaWYgKHByb3RvY29scy5sZW5ndGggIT09IDAgJiYgIXJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcpKSB7XG4gICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHdzLCAnU2VydmVyIGRpZCBub3QgcmVzcG9uZCB3aXRoIHNlbnQgcHJvdG9jb2xzLicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAzLiBGb2xsb3cgdGhlIHJlcXVpcmVtZW50cyBzdGF0ZWQgc3RlcCAyIHRvIHN0ZXAgNiwgaW5jbHVzaXZlLFxuICAgICAgLy8gICAgb2YgdGhlIGxhc3Qgc2V0IG9mIHN0ZXBzIGluIHNlY3Rpb24gNC4xIG9mIFRoZSBXZWJTb2NrZXRcbiAgICAgIC8vICAgIFByb3RvY29sIHRvIHZhbGlkYXRlIHJlc3BvbnNlLiBUaGlzIGVpdGhlciByZXN1bHRzIGluIGZhaWxcbiAgICAgIC8vICAgIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBvciB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXNcbiAgICAgIC8vICAgIGVzdGFibGlzaGVkLlxuXG4gICAgICAvLyAyLiBJZiB0aGUgcmVzcG9uc2UgbGFja3MgYW4gfFVwZ3JhZGV8IGhlYWRlciBmaWVsZCBvciB0aGUgfFVwZ3JhZGV8XG4gICAgICAvLyAgICBoZWFkZXIgZmllbGQgY29udGFpbnMgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBBU0NJSSBjYXNlLVxuICAgICAgLy8gICAgaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIHRoZSB2YWx1ZSBcIndlYnNvY2tldFwiLCB0aGUgY2xpZW50IE1VU1RcbiAgICAgIC8vICAgIF9GYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbl8uXG4gICAgICBpZiAocmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdVcGdyYWRlJyk/LnRvTG93ZXJDYXNlKCkgIT09ICd3ZWJzb2NrZXQnKSB7XG4gICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHdzLCAnU2VydmVyIGRpZCBub3Qgc2V0IFVwZ3JhZGUgaGVhZGVyIHRvIFwid2Vic29ja2V0XCIuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHRoZSByZXNwb25zZSBsYWNrcyBhIHxDb25uZWN0aW9ufCBoZWFkZXIgZmllbGQgb3IgdGhlXG4gICAgICAvLyAgICB8Q29ubmVjdGlvbnwgaGVhZGVyIGZpZWxkIGRvZXNuJ3QgY29udGFpbiBhIHRva2VuIHRoYXQgaXMgYW5cbiAgICAgIC8vICAgIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIHRoZSB2YWx1ZSBcIlVwZ3JhZGVcIiwgdGhlIGNsaWVudFxuICAgICAgLy8gICAgTVVTVCBfRmFpbCB0aGUgV2ViU29ja2V0IENvbm5lY3Rpb25fLlxuICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnNMaXN0LmdldCgnQ29ubmVjdGlvbicpPy50b0xvd2VyQ2FzZSgpICE9PSAndXBncmFkZScpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdTZXJ2ZXIgZGlkIG5vdCBzZXQgQ29ubmVjdGlvbiBoZWFkZXIgdG8gXCJ1cGdyYWRlXCIuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIHRoZSByZXNwb25zZSBsYWNrcyBhIHxTZWMtV2ViU29ja2V0LUFjY2VwdHwgaGVhZGVyIGZpZWxkIG9yXG4gICAgICAvLyAgICB0aGUgfFNlYy1XZWJTb2NrZXQtQWNjZXB0fCBjb250YWlucyBhIHZhbHVlIG90aGVyIHRoYW4gdGhlXG4gICAgICAvLyAgICBiYXNlNjQtZW5jb2RlZCBTSEEtMSBvZiB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgfFNlYy1XZWJTb2NrZXQtXG4gICAgICAvLyAgICBLZXl8IChhcyBhIHN0cmluZywgbm90IGJhc2U2NC1kZWNvZGVkKSB3aXRoIHRoZSBzdHJpbmcgXCIyNThFQUZBNS1cbiAgICAgIC8vICAgIEU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMVwiIGJ1dCBpZ25vcmluZyBhbnkgbGVhZGluZyBhbmRcbiAgICAgIC8vICAgIHRyYWlsaW5nIHdoaXRlc3BhY2UsIHRoZSBjbGllbnQgTVVTVCBfRmFpbCB0aGUgV2ViU29ja2V0XG4gICAgICAvLyAgICBDb25uZWN0aW9uXy5cbiAgICAgIGNvbnN0IHNlY1dTQWNjZXB0ID0gcmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdTZWMtV2ViU29ja2V0LUFjY2VwdCcpXG4gICAgICBjb25zdCBkaWdlc3QgPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShrZXlWYWx1ZSArIHVpZCkuZGlnZXN0KCdiYXNlNjQnKVxuICAgICAgaWYgKHNlY1dTQWNjZXB0ICE9PSBkaWdlc3QpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdJbmNvcnJlY3QgaGFzaCByZWNlaXZlZCBpbiBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIHRoZSByZXNwb25zZSBpbmNsdWRlcyBhIHxTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnN8IGhlYWRlclxuICAgICAgLy8gICAgZmllbGQgYW5kIHRoaXMgaGVhZGVyIGZpZWxkIGluZGljYXRlcyB0aGUgdXNlIG9mIGFuIGV4dGVuc2lvblxuICAgICAgLy8gICAgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gdGhlIGNsaWVudCdzIGhhbmRzaGFrZSAodGhlIHNlcnZlciBoYXNcbiAgICAgIC8vICAgIGluZGljYXRlZCBhbiBleHRlbnNpb24gbm90IHJlcXVlc3RlZCBieSB0aGUgY2xpZW50KSwgdGhlIGNsaWVudFxuICAgICAgLy8gICAgTVVTVCBfRmFpbCB0aGUgV2ViU29ja2V0IENvbm5lY3Rpb25fLiAgKFRoZSBwYXJzaW5nIG9mIHRoaXNcbiAgICAgIC8vICAgIGhlYWRlciBmaWVsZCB0byBkZXRlcm1pbmUgd2hpY2ggZXh0ZW5zaW9ucyBhcmUgcmVxdWVzdGVkIGlzXG4gICAgICAvLyAgICBkaXNjdXNzZWQgaW4gU2VjdGlvbiA5LjEuKVxuICAgICAgY29uc3Qgc2VjRXh0ZW5zaW9uID0gcmVzcG9uc2UuaGVhZGVyc0xpc3QuZ2V0KCdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnKVxuXG4gICAgICBpZiAoc2VjRXh0ZW5zaW9uICE9PSBudWxsICYmIHNlY0V4dGVuc2lvbiAhPT0gcGVybWVzc2FnZURlZmxhdGUpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdSZWNlaXZlZCBkaWZmZXJlbnQgcGVybWVzc2FnZS1kZWZsYXRlIHRoYW4gdGhlIG9uZSBzZXQuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIHRoZSByZXNwb25zZSBpbmNsdWRlcyBhIHxTZWMtV2ViU29ja2V0LVByb3RvY29sfCBoZWFkZXIgZmllbGRcbiAgICAgIC8vICAgIGFuZCB0aGlzIGhlYWRlciBmaWVsZCBpbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHN1YnByb3RvY29sIHRoYXQgd2FzXG4gICAgICAvLyAgICBub3QgcHJlc2VudCBpbiB0aGUgY2xpZW50J3MgaGFuZHNoYWtlICh0aGUgc2VydmVyIGhhcyBpbmRpY2F0ZWQgYVxuICAgICAgLy8gICAgc3VicHJvdG9jb2wgbm90IHJlcXVlc3RlZCBieSB0aGUgY2xpZW50KSwgdGhlIGNsaWVudCBNVVNUIF9GYWlsXG4gICAgICAvLyAgICB0aGUgV2ViU29ja2V0IENvbm5lY3Rpb25fLlxuICAgICAgY29uc3Qgc2VjUHJvdG9jb2wgPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnKVxuXG4gICAgICBpZiAoc2VjUHJvdG9jb2wgIT09IG51bGwgJiYgc2VjUHJvdG9jb2wgIT09IHJlcXVlc3QuaGVhZGVyc0xpc3QuZ2V0KCdTZWMtV2ViU29ja2V0LVByb3RvY29sJykpIHtcbiAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24od3MsICdQcm90b2NvbCB3YXMgbm90IHNldCBpbiB0aGUgb3BlbmluZyBoYW5kc2hha2UuJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlLnNvY2tldC5vbignZGF0YScsIG9uU29ja2V0RGF0YSlcbiAgICAgIHJlc3BvbnNlLnNvY2tldC5vbignY2xvc2UnLCBvblNvY2tldENsb3NlKVxuICAgICAgcmVzcG9uc2Uuc29ja2V0Lm9uKCdlcnJvcicsIG9uU29ja2V0RXJyb3IpXG5cbiAgICAgIGlmIChjaGFubmVscy5vcGVuLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICAgIGNoYW5uZWxzLm9wZW4ucHVibGlzaCh7XG4gICAgICAgICAgYWRkcmVzczogcmVzcG9uc2Uuc29ja2V0LmFkZHJlc3MoKSxcbiAgICAgICAgICBwcm90b2NvbDogc2VjUHJvdG9jb2wsXG4gICAgICAgICAgZXh0ZW5zaW9uczogc2VjRXh0ZW5zaW9uXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIG9uRXN0YWJsaXNoKHJlc3BvbnNlKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gY29udHJvbGxlclxufVxuXG4vKipcbiAqIEBwYXJhbSB7QnVmZmVyfSBjaHVua1xuICovXG5mdW5jdGlvbiBvblNvY2tldERhdGEgKGNodW5rKSB7XG4gIGlmICghdGhpcy53c1trQnl0ZVBhcnNlcl0ud3JpdGUoY2h1bmspKSB7XG4gICAgdGhpcy5wYXVzZSgpXG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2ZlZWRiYWNrLWZyb20tdGhlLXByb3RvY29sXG4gKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTcuMS40XG4gKi9cbmZ1bmN0aW9uIG9uU29ja2V0Q2xvc2UgKCkge1xuICBjb25zdCB7IHdzIH0gPSB0aGlzXG5cbiAgLy8gSWYgdGhlIFRDUCBjb25uZWN0aW9uIHdhcyBjbG9zZWQgYWZ0ZXIgdGhlXG4gIC8vIFdlYlNvY2tldCBjbG9zaW5nIGhhbmRzaGFrZSB3YXMgY29tcGxldGVkLCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb25cbiAgLy8gaXMgc2FpZCB0byBoYXZlIGJlZW4gY2xvc2VkIF9jbGVhbmx5Xy5cbiAgY29uc3Qgd2FzQ2xlYW4gPSB3c1trU2VudENsb3NlXSAmJiB3c1trUmVjZWl2ZWRDbG9zZV1cblxuICBsZXQgY29kZSA9IDEwMDVcbiAgbGV0IHJlYXNvbiA9ICcnXG5cbiAgY29uc3QgcmVzdWx0ID0gd3Nba0J5dGVQYXJzZXJdLmNsb3NpbmdJbmZvXG5cbiAgaWYgKHJlc3VsdCkge1xuICAgIGNvZGUgPSByZXN1bHQuY29kZSA/PyAxMDA1XG4gICAgcmVhc29uID0gcmVzdWx0LnJlYXNvblxuICB9IGVsc2UgaWYgKCF3c1trU2VudENsb3NlXSkge1xuICAgIC8vIElmIF9UaGUgV2ViU29ja2V0XG4gICAgLy8gQ29ubmVjdGlvbiBpcyBDbG9zZWRfIGFuZCBubyBDbG9zZSBjb250cm9sIGZyYW1lIHdhcyByZWNlaXZlZCBieSB0aGVcbiAgICAvLyBlbmRwb2ludCAoc3VjaCBhcyBjb3VsZCBvY2N1ciBpZiB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgY29ubmVjdGlvblxuICAgIC8vIGlzIGxvc3QpLCBfVGhlIFdlYlNvY2tldCBDb25uZWN0aW9uIENsb3NlIENvZGVfIGlzIGNvbnNpZGVyZWQgdG8gYmVcbiAgICAvLyAxMDA2LlxuICAgIGNvZGUgPSAxMDA2XG4gIH1cblxuICAvLyAxLiBDaGFuZ2UgdGhlIHJlYWR5IHN0YXRlIHRvIENMT1NFRCAoMykuXG4gIHdzW2tSZWFkeVN0YXRlXSA9IHN0YXRlcy5DTE9TRURcblxuICAvLyAyLiBJZiB0aGUgdXNlciBhZ2VudCB3YXMgcmVxdWlyZWQgdG8gZmFpbCB0aGUgV2ViU29ja2V0XG4gIC8vICAgIGNvbm5lY3Rpb24sIG9yIGlmIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiB3YXMgY2xvc2VkXG4gIC8vICAgIGFmdGVyIGJlaW5nIGZsYWdnZWQgYXMgZnVsbCwgZmlyZSBhbiBldmVudCBuYW1lZCBlcnJvclxuICAvLyAgICBhdCB0aGUgV2ViU29ja2V0IG9iamVjdC5cbiAgLy8gVE9ET1xuXG4gIC8vIDMuIEZpcmUgYW4gZXZlbnQgbmFtZWQgY2xvc2UgYXQgdGhlIFdlYlNvY2tldCBvYmplY3QsXG4gIC8vICAgIHVzaW5nIENsb3NlRXZlbnQsIHdpdGggdGhlIHdhc0NsZWFuIGF0dHJpYnV0ZVxuICAvLyAgICBpbml0aWFsaXplZCB0byB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGNsb3NlZCBjbGVhbmx5XG4gIC8vICAgIGFuZCBmYWxzZSBvdGhlcndpc2UsIHRoZSBjb2RlIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0b1xuICAvLyAgICB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gY2xvc2UgY29kZSwgYW5kIHRoZSByZWFzb25cbiAgLy8gICAgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgVVRGLThcbiAgLy8gICAgZGVjb2RlIHdpdGhvdXQgQk9NIHRvIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZVxuICAvLyAgICByZWFzb24uXG4gIGZpcmVFdmVudCgnY2xvc2UnLCB3cywgQ2xvc2VFdmVudCwge1xuICAgIHdhc0NsZWFuLCBjb2RlLCByZWFzb25cbiAgfSlcblxuICBpZiAoY2hhbm5lbHMuY2xvc2UuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICBjaGFubmVscy5jbG9zZS5wdWJsaXNoKHtcbiAgICAgIHdlYnNvY2tldDogd3MsXG4gICAgICBjb2RlLFxuICAgICAgcmVhc29uXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvblNvY2tldEVycm9yIChlcnJvcikge1xuICBjb25zdCB7IHdzIH0gPSB0aGlzXG5cbiAgd3Nba1JlYWR5U3RhdGVdID0gc3RhdGVzLkNMT1NJTkdcblxuICBpZiAoY2hhbm5lbHMuc29ja2V0RXJyb3IuaGFzU3Vic2NyaWJlcnMpIHtcbiAgICBjaGFubmVscy5zb2NrZXRFcnJvci5wdWJsaXNoKGVycm9yKVxuICB9XG5cbiAgdGhpcy5kZXN0cm95KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb25cbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBtYXhVbnNpZ25lZDE2Qml0IH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdjcnlwdG8nKX0gKi9cbmxldCBjcnlwdG9cbnRyeSB7XG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpXG59IGNhdGNoIHtcblxufVxuXG5jbGFzcyBXZWJzb2NrZXRGcmFtZVNlbmQge1xuICAvKipcbiAgICogQHBhcmFtIHtCdWZmZXJ8dW5kZWZpbmVkfSBkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHRoaXMuZnJhbWVEYXRhID0gZGF0YVxuICAgIHRoaXMubWFza0tleSA9IGNyeXB0by5yYW5kb21CeXRlcyg0KVxuICB9XG5cbiAgY3JlYXRlRnJhbWUgKG9wY29kZSkge1xuICAgIGNvbnN0IGJvZHlMZW5ndGggPSB0aGlzLmZyYW1lRGF0YT8uYnl0ZUxlbmd0aCA/PyAwXG5cbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgcGF5bG9hZExlbmd0aCA9IGJvZHlMZW5ndGggLy8gMC0xMjVcbiAgICBsZXQgb2Zmc2V0ID0gNlxuXG4gICAgaWYgKGJvZHlMZW5ndGggPiBtYXhVbnNpZ25lZDE2Qml0KSB7XG4gICAgICBvZmZzZXQgKz0gOCAvLyBwYXlsb2FkIGxlbmd0aCBpcyBuZXh0IDggYnl0ZXNcbiAgICAgIHBheWxvYWRMZW5ndGggPSAxMjdcbiAgICB9IGVsc2UgaWYgKGJvZHlMZW5ndGggPiAxMjUpIHtcbiAgICAgIG9mZnNldCArPSAyIC8vIHBheWxvYWQgbGVuZ3RoIGlzIG5leHQgMiBieXRlc1xuICAgICAgcGF5bG9hZExlbmd0aCA9IDEyNlxuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShib2R5TGVuZ3RoICsgb2Zmc2V0KVxuXG4gICAgLy8gQ2xlYXIgZmlyc3QgMiBieXRlcywgZXZlcnl0aGluZyBlbHNlIGlzIG92ZXJ3cml0dGVuXG4gICAgYnVmZmVyWzBdID0gYnVmZmVyWzFdID0gMFxuICAgIGJ1ZmZlclswXSB8PSAweDgwIC8vIEZJTlxuICAgIGJ1ZmZlclswXSA9IChidWZmZXJbMF0gJiAweEYwKSArIG9wY29kZSAvLyBvcGNvZGVcblxuICAgIC8qISB3cy4gTUlUIExpY2Vuc2UuIEVpbmFyIE90dG8gU3Rhbmd2aWsgPGVpbmFyb3NAZ21haWwuY29tPiAqL1xuICAgIGJ1ZmZlcltvZmZzZXQgLSA0XSA9IHRoaXMubWFza0tleVswXVxuICAgIGJ1ZmZlcltvZmZzZXQgLSAzXSA9IHRoaXMubWFza0tleVsxXVxuICAgIGJ1ZmZlcltvZmZzZXQgLSAyXSA9IHRoaXMubWFza0tleVsyXVxuICAgIGJ1ZmZlcltvZmZzZXQgLSAxXSA9IHRoaXMubWFza0tleVszXVxuXG4gICAgYnVmZmVyWzFdID0gcGF5bG9hZExlbmd0aFxuXG4gICAgaWYgKHBheWxvYWRMZW5ndGggPT09IDEyNikge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2QkUoYm9keUxlbmd0aCwgMilcbiAgICB9IGVsc2UgaWYgKHBheWxvYWRMZW5ndGggPT09IDEyNykge1xuICAgICAgLy8gQ2xlYXIgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGhcbiAgICAgIGJ1ZmZlclsyXSA9IGJ1ZmZlclszXSA9IDBcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnRCRShib2R5TGVuZ3RoLCA0LCA2KVxuICAgIH1cblxuICAgIGJ1ZmZlclsxXSB8PSAweDgwIC8vIE1BU0tcblxuICAgIC8vIG1hc2sgYm9keVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9keUxlbmd0aDsgaSsrKSB7XG4gICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSB0aGlzLmZyYW1lRGF0YVtpXSBeIHRoaXMubWFza0tleVtpICUgNF1cbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFdlYnNvY2tldEZyYW1lU2VuZFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IFdyaXRhYmxlIH0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgZGlhZ25vc3RpY3NDaGFubmVsID0gcmVxdWlyZSgnZGlhZ25vc3RpY3NfY2hhbm5lbCcpXG5jb25zdCB7IHBhcnNlclN0YXRlcywgb3Bjb2Rlcywgc3RhdGVzLCBlbXB0eUJ1ZmZlciB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgeyBrUmVhZHlTdGF0ZSwga1NlbnRDbG9zZSwga1Jlc3BvbnNlLCBrUmVjZWl2ZWRDbG9zZSB9ID0gcmVxdWlyZSgnLi9zeW1ib2xzJylcbmNvbnN0IHsgaXNWYWxpZFN0YXR1c0NvZGUsIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uLCB3ZWJzb2NrZXRNZXNzYWdlUmVjZWl2ZWQgfSA9IHJlcXVpcmUoJy4vdXRpbCcpXG5jb25zdCB7IFdlYnNvY2tldEZyYW1lU2VuZCB9ID0gcmVxdWlyZSgnLi9mcmFtZScpXG5cbi8vIFRoaXMgY29kZSB3YXMgaW5mbHVlbmNlZCBieSB3cyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTEgRWluYXIgT3R0byBTdGFuZ3ZpayA8ZWluYXJvc0BnbWFpbC5jb20+XG4vLyBDb3B5cmlnaHQgKGMpIDIwMTMgQXJub3V0IEthemVtaWVyIGFuZCBjb250cmlidXRvcnNcbi8vIENvcHlyaWdodCAoYykgMjAxNiBMdWlnaSBQaW5jYSBhbmQgY29udHJpYnV0b3JzXG5cbmNvbnN0IGNoYW5uZWxzID0ge31cbmNoYW5uZWxzLnBpbmcgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOndlYnNvY2tldDpwaW5nJylcbmNoYW5uZWxzLnBvbmcgPSBkaWFnbm9zdGljc0NoYW5uZWwuY2hhbm5lbCgndW5kaWNpOndlYnNvY2tldDpwb25nJylcblxuY2xhc3MgQnl0ZVBhcnNlciBleHRlbmRzIFdyaXRhYmxlIHtcbiAgI2J1ZmZlcnMgPSBbXVxuICAjYnl0ZU9mZnNldCA9IDBcblxuICAjc3RhdGUgPSBwYXJzZXJTdGF0ZXMuSU5GT1xuXG4gICNpbmZvID0ge31cbiAgI2ZyYWdtZW50cyA9IFtdXG5cbiAgY29uc3RydWN0b3IgKHdzKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy53cyA9IHdzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGNodW5rXG4gICAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gY2FsbGJhY2tcbiAgICovXG4gIF93cml0ZSAoY2h1bmssIF8sIGNhbGxiYWNrKSB7XG4gICAgdGhpcy4jYnVmZmVycy5wdXNoKGNodW5rKVxuICAgIHRoaXMuI2J5dGVPZmZzZXQgKz0gY2h1bmsubGVuZ3RoXG5cbiAgICB0aGlzLnJ1bihjYWxsYmFjaylcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHdoZW5ldmVyIGEgbmV3IGNodW5rIGlzIHJlY2VpdmVkLlxuICAgKiBDYWxsYmFjayBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlcmUgYXJlIG5vIG1vcmUgY2h1bmtzIGJ1ZmZlcmluZyxcbiAgICogb3Igbm90IGVub3VnaCBieXRlcyBhcmUgYnVmZmVyZWQgdG8gcGFyc2UuXG4gICAqL1xuICBydW4gKGNhbGxiYWNrKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLiNzdGF0ZSA9PT0gcGFyc2VyU3RhdGVzLklORk8pIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlbid0IGVub3VnaCBieXRlcyB0byBwYXJzZSB0aGUgcGF5bG9hZCBsZW5ndGgsIGV0Yy5cbiAgICAgICAgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPCAyKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuY29uc3VtZSgyKVxuXG4gICAgICAgIHRoaXMuI2luZm8uZmluID0gKGJ1ZmZlclswXSAmIDB4ODApICE9PSAwXG4gICAgICAgIHRoaXMuI2luZm8ub3Bjb2RlID0gYnVmZmVyWzBdICYgMHgwRlxuXG4gICAgICAgIC8vIElmIHdlIHJlY2VpdmUgYSBmcmFnbWVudGVkIG1lc3NhZ2UsIHdlIHVzZSB0aGUgdHlwZSBvZiB0aGUgZmlyc3RcbiAgICAgICAgLy8gZnJhbWUgdG8gcGFyc2UgdGhlIGZ1bGwgbWVzc2FnZSBhcyBiaW5hcnkvdGV4dCwgd2hlbiBpdCdzIHRlcm1pbmF0ZWRcbiAgICAgICAgdGhpcy4jaW5mby5vcmlnaW5hbE9wY29kZSA/Pz0gdGhpcy4jaW5mby5vcGNvZGVcblxuICAgICAgICB0aGlzLiNpbmZvLmZyYWdtZW50ZWQgPSAhdGhpcy4jaW5mby5maW4gJiYgdGhpcy4jaW5mby5vcGNvZGUgIT09IG9wY29kZXMuQ09OVElOVUFUSU9OXG5cbiAgICAgICAgaWYgKHRoaXMuI2luZm8uZnJhZ21lbnRlZCAmJiB0aGlzLiNpbmZvLm9wY29kZSAhPT0gb3Bjb2Rlcy5CSU5BUlkgJiYgdGhpcy4jaW5mby5vcGNvZGUgIT09IG9wY29kZXMuVEVYVCkge1xuICAgICAgICAgIC8vIE9ubHkgdGV4dCBhbmQgYmluYXJ5IGZyYW1lcyBjYW4gYmUgZnJhZ21lbnRlZFxuICAgICAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHRoaXMud3MsICdJbnZhbGlkIGZyYW1lIHR5cGUgd2FzIGZyYWdtZW50ZWQuJylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBheWxvYWRMZW5ndGggPSBidWZmZXJbMV0gJiAweDdGXG5cbiAgICAgICAgaWYgKHBheWxvYWRMZW5ndGggPD0gMTI1KSB7XG4gICAgICAgICAgdGhpcy4jaW5mby5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aFxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLlJFQURfREFUQVxuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWRMZW5ndGggPT09IDEyNikge1xuICAgICAgICAgIHRoaXMuI3N0YXRlID0gcGFyc2VyU3RhdGVzLlBBWUxPQURMRU5HVEhfMTZcbiAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkTGVuZ3RoID09PSAxMjcpIHtcbiAgICAgICAgICB0aGlzLiNzdGF0ZSA9IHBhcnNlclN0YXRlcy5QQVlMT0FETEVOR1RIXzY0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy4jaW5mby5mcmFnbWVudGVkICYmIHBheWxvYWRMZW5ndGggPiAxMjUpIHtcbiAgICAgICAgICAvLyBBIGZyYWdtZW50ZWQgZnJhbWUgY2FuJ3QgYmUgZnJhZ21lbnRlZCBpdHNlbGZcbiAgICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih0aGlzLndzLCAnRnJhZ21lbnRlZCBmcmFtZSBleGNlZWRlZCAxMjUgYnl0ZXMuJylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAodGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuUElORyB8fFxuICAgICAgICAgICAgdGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuUE9ORyB8fFxuICAgICAgICAgICAgdGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuQ0xPU0UpICYmXG4gICAgICAgICAgcGF5bG9hZExlbmd0aCA+IDEyNVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBDb250cm9sIGZyYW1lcyBjYW4gaGF2ZSBhIHBheWxvYWQgbGVuZ3RoIG9mIDEyNSBieXRlcyBNQVhcbiAgICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih0aGlzLndzLCAnUGF5bG9hZCBsZW5ndGggZm9yIGNvbnRyb2wgZnJhbWUgZXhjZWVkZWQgMTI1IGJ5dGVzLicpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuQ0xPU0UpIHtcbiAgICAgICAgICBpZiAocGF5bG9hZExlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24odGhpcy53cywgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIHdpdGggYSAxLWJ5dGUgYm9keS4nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29uc3VtZShwYXlsb2FkTGVuZ3RoKVxuXG4gICAgICAgICAgdGhpcy4jaW5mby5jbG9zZUluZm8gPSB0aGlzLnBhcnNlQ2xvc2VCb2R5KGZhbHNlLCBib2R5KVxuXG4gICAgICAgICAgaWYgKCF0aGlzLndzW2tTZW50Q2xvc2VdKSB7XG4gICAgICAgICAgICAvLyBJZiBhbiBlbmRwb2ludCByZWNlaXZlcyBhIENsb3NlIGZyYW1lIGFuZCBkaWQgbm90IHByZXZpb3VzbHkgc2VuZCBhXG4gICAgICAgICAgICAvLyBDbG9zZSBmcmFtZSwgdGhlIGVuZHBvaW50IE1VU1Qgc2VuZCBhIENsb3NlIGZyYW1lIGluIHJlc3BvbnNlLiAgKFdoZW5cbiAgICAgICAgICAgIC8vIHNlbmRpbmcgYSBDbG9zZSBmcmFtZSBpbiByZXNwb25zZSwgdGhlIGVuZHBvaW50IHR5cGljYWxseSBlY2hvcyB0aGVcbiAgICAgICAgICAgIC8vIHN0YXR1cyBjb2RlIGl0IHJlY2VpdmVkLilcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMilcbiAgICAgICAgICAgIGJvZHkud3JpdGVVSW50MTZCRSh0aGlzLiNpbmZvLmNsb3NlSW5mby5jb2RlLCAwKVxuICAgICAgICAgICAgY29uc3QgY2xvc2VGcmFtZSA9IG5ldyBXZWJzb2NrZXRGcmFtZVNlbmQoYm9keSlcblxuICAgICAgICAgICAgdGhpcy53c1trUmVzcG9uc2VdLnNvY2tldC53cml0ZShcbiAgICAgICAgICAgICAgY2xvc2VGcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLkNMT1NFKSxcbiAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLndzW2tTZW50Q2xvc2VdID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVwb24gZWl0aGVyIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGEgQ2xvc2UgY29udHJvbCBmcmFtZSwgaXQgaXMgc2FpZFxuICAgICAgICAgIC8vIHRoYXQgX1RoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5kc2hha2UgaXMgU3RhcnRlZF8gYW5kIHRoYXQgdGhlXG4gICAgICAgICAgLy8gV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgaW4gdGhlIENMT1NJTkcgc3RhdGUuXG4gICAgICAgICAgdGhpcy53c1trUmVhZHlTdGF0ZV0gPSBzdGF0ZXMuQ0xPU0lOR1xuICAgICAgICAgIHRoaXMud3Nba1JlY2VpdmVkQ2xvc2VdID0gdHJ1ZVxuXG4gICAgICAgICAgdGhpcy5lbmQoKVxuXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuUElORykge1xuICAgICAgICAgIC8vIFVwb24gcmVjZWlwdCBvZiBhIFBpbmcgZnJhbWUsIGFuIGVuZHBvaW50IE1VU1Qgc2VuZCBhIFBvbmcgZnJhbWUgaW5cbiAgICAgICAgICAvLyByZXNwb25zZSwgdW5sZXNzIGl0IGFscmVhZHkgcmVjZWl2ZWQgYSBDbG9zZSBmcmFtZS5cbiAgICAgICAgICAvLyBBIFBvbmcgZnJhbWUgc2VudCBpbiByZXNwb25zZSB0byBhIFBpbmcgZnJhbWUgbXVzdCBoYXZlIGlkZW50aWNhbFxuICAgICAgICAgIC8vIFwiQXBwbGljYXRpb24gZGF0YVwiXG5cbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5jb25zdW1lKHBheWxvYWRMZW5ndGgpXG5cbiAgICAgICAgICBpZiAoIXRoaXMud3Nba1JlY2VpdmVkQ2xvc2VdKSB7XG4gICAgICAgICAgICBjb25zdCBmcmFtZSA9IG5ldyBXZWJzb2NrZXRGcmFtZVNlbmQoYm9keSlcblxuICAgICAgICAgICAgdGhpcy53c1trUmVzcG9uc2VdLnNvY2tldC53cml0ZShmcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLlBPTkcpKVxuXG4gICAgICAgICAgICBpZiAoY2hhbm5lbHMucGluZy5oYXNTdWJzY3JpYmVycykge1xuICAgICAgICAgICAgICBjaGFubmVscy5waW5nLnB1Ymxpc2goe1xuICAgICAgICAgICAgICAgIHBheWxvYWQ6IGJvZHlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNzdGF0ZSA9IHBhcnNlclN0YXRlcy5JTkZPXG5cbiAgICAgICAgICBpZiAodGhpcy4jYnl0ZU9mZnNldCA+IDApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNpbmZvLm9wY29kZSA9PT0gb3Bjb2Rlcy5QT05HKSB7XG4gICAgICAgICAgLy8gQSBQb25nIGZyYW1lIE1BWSBiZSBzZW50IHVuc29saWNpdGVkLiAgVGhpcyBzZXJ2ZXMgYXMgYVxuICAgICAgICAgIC8vIHVuaWRpcmVjdGlvbmFsIGhlYXJ0YmVhdC4gIEEgcmVzcG9uc2UgdG8gYW4gdW5zb2xpY2l0ZWQgUG9uZyBmcmFtZSBpc1xuICAgICAgICAgIC8vIG5vdCBleHBlY3RlZC5cblxuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmNvbnN1bWUocGF5bG9hZExlbmd0aClcblxuICAgICAgICAgIGlmIChjaGFubmVscy5wb25nLmhhc1N1YnNjcmliZXJzKSB7XG4gICAgICAgICAgICBjaGFubmVscy5wb25nLnB1Ymxpc2goe1xuICAgICAgICAgICAgICBwYXlsb2FkOiBib2R5XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLiNieXRlT2Zmc2V0ID4gMCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI3N0YXRlID09PSBwYXJzZXJTdGF0ZXMuUEFZTE9BRExFTkdUSF8xNikge1xuICAgICAgICBpZiAodGhpcy4jYnl0ZU9mZnNldCA8IDIpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5jb25zdW1lKDIpXG5cbiAgICAgICAgdGhpcy4jaW5mby5wYXlsb2FkTGVuZ3RoID0gYnVmZmVyLnJlYWRVSW50MTZCRSgwKVxuICAgICAgICB0aGlzLiNzdGF0ZSA9IHBhcnNlclN0YXRlcy5SRUFEX0RBVEFcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4jc3RhdGUgPT09IHBhcnNlclN0YXRlcy5QQVlMT0FETEVOR1RIXzY0KSB7XG4gICAgICAgIGlmICh0aGlzLiNieXRlT2Zmc2V0IDwgOCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmNvbnN1bWUoOClcbiAgICAgICAgY29uc3QgdXBwZXIgPSBidWZmZXIucmVhZFVJbnQzMkJFKDApXG5cbiAgICAgICAgLy8gMl4zMSBpcyB0aGUgbWF4aW5pbXVtIGJ5dGVzIGFuIGFycmF5YnVmZmVyIGNhbiBjb250YWluXG4gICAgICAgIC8vIG9uIDMyLWJpdCBzeXN0ZW1zLiBBbHRob3VnaCwgb24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXNcbiAgICAgICAgLy8gMl41My0xIGJ5dGVzLlxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9FcnJvcnMvSW52YWxpZF9hcnJheV9sZW5ndGhcbiAgICAgICAgLy8gaHR0cHM6Ly9zb3VyY2UuY2hyb21pdW0ub3JnL2Nocm9taXVtL2Nocm9taXVtL3NyYy8rL21haW46djgvc3JjL2NvbW1vbi9nbG9iYWxzLmg7ZHJjPTE5NDYyMTJhYzAxMDA2NjhmMTRlYjllMjg0M2JkZDg0NmU1MTBhMWU7YnB2PTE7YnB0PTE7bD0xMjc1XG4gICAgICAgIC8vIGh0dHBzOi8vc291cmNlLmNocm9taXVtLm9yZy9jaHJvbWl1bS9jaHJvbWl1bS9zcmMvKy9tYWluOnY4L3NyYy9vYmplY3RzL2pzLWFycmF5LWJ1ZmZlci5oO2w9MzQ7ZHJjPTE5NDYyMTJhYzAxMDA2NjhmMTRlYjllMjg0M2JkZDg0NmU1MTBhMWVcbiAgICAgICAgaWYgKHVwcGVyID4gMiAqKiAzMSAtIDEpIHtcbiAgICAgICAgICBmYWlsV2Vic29ja2V0Q29ubmVjdGlvbih0aGlzLndzLCAnUmVjZWl2ZWQgcGF5bG9hZCBsZW5ndGggPiAyXjMxIGJ5dGVzLicpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb3dlciA9IGJ1ZmZlci5yZWFkVUludDMyQkUoNClcblxuICAgICAgICB0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGggPSAodXBwZXIgPDwgOCkgKyBsb3dlclxuICAgICAgICB0aGlzLiNzdGF0ZSA9IHBhcnNlclN0YXRlcy5SRUFEX0RBVEFcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4jc3RhdGUgPT09IHBhcnNlclN0YXRlcy5SRUFEX0RBVEEpIHtcbiAgICAgICAgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPCB0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGgpIHtcbiAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBzdGlsbCBtb3JlIGRhdGEgaW4gdGhpcyBjaHVuayB0aGF0IG5lZWRzIHRvIGJlIHJlYWRcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2J5dGVPZmZzZXQgPj0gdGhpcy4jaW5mby5wYXlsb2FkTGVuZ3RoKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHNlcnZlciBzZW50IG11bHRpcGxlIGZyYW1lcyBpbiBhIHNpbmdsZSBjaHVua1xuXG4gICAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29uc3VtZSh0aGlzLiNpbmZvLnBheWxvYWRMZW5ndGgpXG5cbiAgICAgICAgICB0aGlzLiNmcmFnbWVudHMucHVzaChib2R5KVxuXG4gICAgICAgICAgLy8gSWYgdGhlIGZyYW1lIGlzIHVuZnJhZ21lbnRlZCwgb3IgYSBmcmFnbWVudGVkIGZyYW1lIHdhcyB0ZXJtaW5hdGVkLFxuICAgICAgICAgIC8vIGEgbWVzc2FnZSB3YXMgcmVjZWl2ZWRcbiAgICAgICAgICBpZiAoIXRoaXMuI2luZm8uZnJhZ21lbnRlZCB8fCAodGhpcy4jaW5mby5maW4gJiYgdGhpcy4jaW5mby5vcGNvZGUgPT09IG9wY29kZXMuQ09OVElOVUFUSU9OKSkge1xuICAgICAgICAgICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBCdWZmZXIuY29uY2F0KHRoaXMuI2ZyYWdtZW50cylcblxuICAgICAgICAgICAgd2Vic29ja2V0TWVzc2FnZVJlY2VpdmVkKHRoaXMud3MsIHRoaXMuI2luZm8ub3JpZ2luYWxPcGNvZGUsIGZ1bGxNZXNzYWdlKVxuXG4gICAgICAgICAgICB0aGlzLiNpbmZvID0ge31cbiAgICAgICAgICAgIHRoaXMuI2ZyYWdtZW50cy5sZW5ndGggPSAwXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSBwYXJzZXJTdGF0ZXMuSU5GT1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLiNieXRlT2Zmc2V0ID4gMCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlIG4gYnl0ZXMgZnJvbSB0aGUgYnVmZmVyZWQgQnVmZmVyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gblxuICAgKiBAcmV0dXJucyB7QnVmZmVyfG51bGx9XG4gICAqL1xuICBjb25zdW1lIChuKSB7XG4gICAgaWYgKG4gPiB0aGlzLiNieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0gZWxzZSBpZiAobiA9PT0gMCkge1xuICAgICAgcmV0dXJuIGVtcHR5QnVmZmVyXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2J1ZmZlcnNbMF0ubGVuZ3RoID09PSBuKSB7XG4gICAgICB0aGlzLiNieXRlT2Zmc2V0IC09IHRoaXMuI2J1ZmZlcnNbMF0ubGVuZ3RoXG4gICAgICByZXR1cm4gdGhpcy4jYnVmZmVycy5zaGlmdCgpXG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pXG4gICAgbGV0IG9mZnNldCA9IDBcblxuICAgIHdoaWxlIChvZmZzZXQgIT09IG4pIHtcbiAgICAgIGNvbnN0IG5leHQgPSB0aGlzLiNidWZmZXJzWzBdXG4gICAgICBjb25zdCB7IGxlbmd0aCB9ID0gbmV4dFxuXG4gICAgICBpZiAobGVuZ3RoICsgb2Zmc2V0ID09PSBuKSB7XG4gICAgICAgIGJ1ZmZlci5zZXQodGhpcy4jYnVmZmVycy5zaGlmdCgpLCBvZmZzZXQpXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGxlbmd0aCArIG9mZnNldCA+IG4pIHtcbiAgICAgICAgYnVmZmVyLnNldChuZXh0LnN1YmFycmF5KDAsIG4gLSBvZmZzZXQpLCBvZmZzZXQpXG4gICAgICAgIHRoaXMuI2J1ZmZlcnNbMF0gPSBuZXh0LnN1YmFycmF5KG4gLSBvZmZzZXQpXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWZmZXIuc2V0KHRoaXMuI2J1ZmZlcnMuc2hpZnQoKSwgb2Zmc2V0KVxuICAgICAgICBvZmZzZXQgKz0gbmV4dC5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNieXRlT2Zmc2V0IC09IG5cblxuICAgIHJldHVybiBidWZmZXJcbiAgfVxuXG4gIHBhcnNlQ2xvc2VCb2R5IChvbmx5Q29kZSwgZGF0YSkge1xuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTcuMS41XG4gICAgLyoqIEB0eXBlIHtudW1iZXJ8dW5kZWZpbmVkfSAqL1xuICAgIGxldCBjb2RlXG5cbiAgICBpZiAoZGF0YS5sZW5ndGggPj0gMikge1xuICAgICAgLy8gX1RoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbiBDbG9zZSBDb2RlXyBpc1xuICAgICAgLy8gZGVmaW5lZCBhcyB0aGUgc3RhdHVzIGNvZGUgKFNlY3Rpb24gNy40KSBjb250YWluZWQgaW4gdGhlIGZpcnN0IENsb3NlXG4gICAgICAvLyBjb250cm9sIGZyYW1lIHJlY2VpdmVkIGJ5IHRoZSBhcHBsaWNhdGlvblxuICAgICAgY29kZSA9IGRhdGEucmVhZFVJbnQxNkJFKDApXG4gICAgfVxuXG4gICAgaWYgKG9ubHlDb2RlKSB7XG4gICAgICBpZiAoIWlzVmFsaWRTdGF0dXNDb2RlKGNvZGUpKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNvZGUgfVxuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTcuMS42XG4gICAgLyoqIEB0eXBlIHtCdWZmZXJ9ICovXG4gICAgbGV0IHJlYXNvbiA9IGRhdGEuc3ViYXJyYXkoMilcblxuICAgIC8vIFJlbW92ZSBCT01cbiAgICBpZiAocmVhc29uWzBdID09PSAweEVGICYmIHJlYXNvblsxXSA9PT0gMHhCQiAmJiByZWFzb25bMl0gPT09IDB4QkYpIHtcbiAgICAgIHJlYXNvbiA9IHJlYXNvbi5zdWJhcnJheSgzKVxuICAgIH1cblxuICAgIGlmIChjb2RlICE9PSB1bmRlZmluZWQgJiYgIWlzVmFsaWRTdGF0dXNDb2RlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPOiBvcHRpbWl6ZSB0aGlzXG4gICAgICByZWFzb24gPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04JywgeyBmYXRhbDogdHJ1ZSB9KS5kZWNvZGUocmVhc29uKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2RlLCByZWFzb24gfVxuICB9XG5cbiAgZ2V0IGNsb3NpbmdJbmZvICgpIHtcbiAgICByZXR1cm4gdGhpcy4jaW5mby5jbG9zZUluZm9cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQnl0ZVBhcnNlclxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IHdlYmlkbCB9ID0gcmVxdWlyZSgnLi4vZmV0Y2gvd2ViaWRsJylcbmNvbnN0IHsgRE9NRXhjZXB0aW9uIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9jb25zdGFudHMnKVxuY29uc3QgeyBVUkxTZXJpYWxpemVyIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9kYXRhVVJMJylcbmNvbnN0IHsgZ2V0R2xvYmFsT3JpZ2luIH0gPSByZXF1aXJlKCcuLi9mZXRjaC9nbG9iYWwnKVxuY29uc3QgeyBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLCBzdGF0ZXMsIG9wY29kZXMsIGVtcHR5QnVmZmVyIH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5jb25zdCB7XG4gIGtXZWJTb2NrZXRVUkwsXG4gIGtSZWFkeVN0YXRlLFxuICBrQ29udHJvbGxlcixcbiAga0JpbmFyeVR5cGUsXG4gIGtSZXNwb25zZSxcbiAga1NlbnRDbG9zZSxcbiAga0J5dGVQYXJzZXJcbn0gPSByZXF1aXJlKCcuL3N5bWJvbHMnKVxuY29uc3QgeyBpc0VzdGFibGlzaGVkLCBpc0Nsb3NpbmcsIGlzVmFsaWRTdWJwcm90b2NvbCwgZmFpbFdlYnNvY2tldENvbm5lY3Rpb24sIGZpcmVFdmVudCB9ID0gcmVxdWlyZSgnLi91dGlsJylcbmNvbnN0IHsgZXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbiB9ID0gcmVxdWlyZSgnLi9jb25uZWN0aW9uJylcbmNvbnN0IHsgV2Vic29ja2V0RnJhbWVTZW5kIH0gPSByZXF1aXJlKCcuL2ZyYW1lJylcbmNvbnN0IHsgQnl0ZVBhcnNlciB9ID0gcmVxdWlyZSgnLi9yZWNlaXZlcicpXG5jb25zdCB7IGtFbnVtZXJhYmxlUHJvcGVydHksIGlzQmxvYkxpa2UgfSA9IHJlcXVpcmUoJy4uL2NvcmUvdXRpbCcpXG5jb25zdCB7IGdldEdsb2JhbERpc3BhdGNoZXIgfSA9IHJlcXVpcmUoJy4uL2dsb2JhbCcpXG5jb25zdCB7IHR5cGVzIH0gPSByZXF1aXJlKCd1dGlsJylcblxubGV0IGV4cGVyaW1lbnRhbFdhcm5lZCA9IGZhbHNlXG5cbi8vIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1kZWZpbml0aW9uXG5jbGFzcyBXZWJTb2NrZXQgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gICNldmVudHMgPSB7XG4gICAgb3BlbjogbnVsbCxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBjbG9zZTogbnVsbCxcbiAgICBtZXNzYWdlOiBudWxsXG4gIH1cblxuICAjYnVmZmVyZWRBbW91bnQgPSAwXG4gICNwcm90b2NvbCA9ICcnXG4gICNleHRlbnNpb25zID0gJydcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gcHJvdG9jb2xzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAodXJsLCBwcm90b2NvbHMgPSBbXSkge1xuICAgIHN1cGVyKClcblxuICAgIHdlYmlkbC5hcmd1bWVudExlbmd0aENoZWNrKGFyZ3VtZW50cywgMSwgeyBoZWFkZXI6ICdXZWJTb2NrZXQgY29uc3RydWN0b3InIH0pXG5cbiAgICBpZiAoIWV4cGVyaW1lbnRhbFdhcm5lZCkge1xuICAgICAgZXhwZXJpbWVudGFsV2FybmVkID0gdHJ1ZVxuICAgICAgcHJvY2Vzcy5lbWl0V2FybmluZygnV2ViU29ja2V0cyBhcmUgZXhwZXJpbWVudGFsLCBleHBlY3QgdGhlbSB0byBjaGFuZ2UgYXQgYW55IHRpbWUuJywge1xuICAgICAgICBjb2RlOiAnVU5ESUNJLVdTJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gd2ViaWRsLmNvbnZlcnRlcnNbJ0RPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+IG9yIFdlYlNvY2tldEluaXQnXShwcm90b2NvbHMpXG5cbiAgICB1cmwgPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcodXJsKVxuICAgIHByb3RvY29scyA9IG9wdGlvbnMucHJvdG9jb2xzXG5cbiAgICAvLyAxLiBMZXQgYmFzZVVSTCBiZSB0aGlzJ3MgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3MgQVBJIGJhc2UgVVJMLlxuICAgIGNvbnN0IGJhc2VVUkwgPSBnZXRHbG9iYWxPcmlnaW4oKVxuXG4gICAgLy8gMS4gTGV0IHVybFJlY29yZCBiZSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZSBVUkwgcGFyc2VyIHRvIHVybCB3aXRoIGJhc2VVUkwuXG4gICAgbGV0IHVybFJlY29yZFxuXG4gICAgdHJ5IHtcbiAgICAgIHVybFJlY29yZCA9IG5ldyBVUkwodXJsLCBiYXNlVVJMKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIDMuIElmIHVybFJlY29yZCBpcyBmYWlsdXJlLCB0aGVuIHRocm93IGEgXCJTeW50YXhFcnJvclwiIERPTUV4Y2VwdGlvbi5cbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oZSwgJ1N5bnRheEVycm9yJylcbiAgICB9XG5cbiAgICAvLyA0LiBJZiB1cmxSZWNvcmRcdTIwMTlzIHNjaGVtZSBpcyBcImh0dHBcIiwgdGhlbiBzZXQgdXJsUmVjb3JkXHUyMDE5cyBzY2hlbWUgdG8gXCJ3c1wiLlxuICAgIGlmICh1cmxSZWNvcmQucHJvdG9jb2wgPT09ICdodHRwOicpIHtcbiAgICAgIHVybFJlY29yZC5wcm90b2NvbCA9ICd3czonXG4gICAgfSBlbHNlIGlmICh1cmxSZWNvcmQucHJvdG9jb2wgPT09ICdodHRwczonKSB7XG4gICAgICAvLyA1LiBPdGhlcndpc2UsIGlmIHVybFJlY29yZFx1MjAxOXMgc2NoZW1lIGlzIFwiaHR0cHNcIiwgc2V0IHVybFJlY29yZFx1MjAxOXMgc2NoZW1lIHRvIFwid3NzXCIuXG4gICAgICB1cmxSZWNvcmQucHJvdG9jb2wgPSAnd3NzOidcbiAgICB9XG5cbiAgICAvLyA2LiBJZiB1cmxSZWNvcmRcdTIwMTlzIHNjaGVtZSBpcyBub3QgXCJ3c1wiIG9yIFwid3NzXCIsIHRoZW4gdGhyb3cgYSBcIlN5bnRheEVycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgIGlmICh1cmxSZWNvcmQucHJvdG9jb2wgIT09ICd3czonICYmIHVybFJlY29yZC5wcm90b2NvbCAhPT0gJ3dzczonKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFxuICAgICAgICBgRXhwZWN0ZWQgYSB3czogb3Igd3NzOiBwcm90b2NvbCwgZ290ICR7dXJsUmVjb3JkLnByb3RvY29sfWAsXG4gICAgICAgICdTeW50YXhFcnJvcidcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyA3LiBJZiB1cmxSZWNvcmRcdTIwMTlzIGZyYWdtZW50IGlzIG5vbi1udWxsLCB0aGVuIHRocm93IGEgXCJTeW50YXhFcnJvclwiXG4gICAgLy8gICAgRE9NRXhjZXB0aW9uLlxuICAgIGlmICh1cmxSZWNvcmQuaGFzaCB8fCB1cmxSZWNvcmQuaHJlZi5lbmRzV2l0aCgnIycpKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdHb3QgZnJhZ21lbnQnLCAnU3ludGF4RXJyb3InKVxuICAgIH1cblxuICAgIC8vIDguIElmIHByb3RvY29scyBpcyBhIHN0cmluZywgc2V0IHByb3RvY29scyB0byBhIHNlcXVlbmNlIGNvbnNpc3RpbmdcbiAgICAvLyAgICBvZiBqdXN0IHRoYXQgc3RyaW5nLlxuICAgIGlmICh0eXBlb2YgcHJvdG9jb2xzID09PSAnc3RyaW5nJykge1xuICAgICAgcHJvdG9jb2xzID0gW3Byb3RvY29sc11cbiAgICB9XG5cbiAgICAvLyA5LiBJZiBhbnkgb2YgdGhlIHZhbHVlcyBpbiBwcm90b2NvbHMgb2NjdXIgbW9yZSB0aGFuIG9uY2Ugb3Igb3RoZXJ3aXNlXG4gICAgLy8gICAgZmFpbCB0byBtYXRjaCB0aGUgcmVxdWlyZW1lbnRzIGZvciBlbGVtZW50cyB0aGF0IGNvbXByaXNlIHRoZSB2YWx1ZVxuICAgIC8vICAgIG9mIGBTZWMtV2ViU29ja2V0LVByb3RvY29sYCBmaWVsZHMgYXMgZGVmaW5lZCBieSBUaGUgV2ViU29ja2V0XG4gICAgLy8gICAgcHJvdG9jb2wsIHRoZW4gdGhyb3cgYSBcIlN5bnRheEVycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgIGlmIChwcm90b2NvbHMubGVuZ3RoICE9PSBuZXcgU2V0KHByb3RvY29scy5tYXAocCA9PiBwLnRvTG93ZXJDYXNlKCkpKS5zaXplKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgdmFsdWUnLCAnU3ludGF4RXJyb3InKVxuICAgIH1cblxuICAgIGlmIChwcm90b2NvbHMubGVuZ3RoID4gMCAmJiAhcHJvdG9jb2xzLmV2ZXJ5KHAgPT4gaXNWYWxpZFN1YnByb3RvY29sKHApKSkge1xuICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignSW52YWxpZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIHZhbHVlJywgJ1N5bnRheEVycm9yJylcbiAgICB9XG5cbiAgICAvLyAxMC4gU2V0IHRoaXMncyB1cmwgdG8gdXJsUmVjb3JkLlxuICAgIHRoaXNba1dlYlNvY2tldFVSTF0gPSBuZXcgVVJMKHVybFJlY29yZC5ocmVmKVxuXG4gICAgLy8gMTEuIExldCBjbGllbnQgYmUgdGhpcydzIHJlbGV2YW50IHNldHRpbmdzIG9iamVjdC5cblxuICAgIC8vIDEyLiBSdW4gdGhpcyBzdGVwIGluIHBhcmFsbGVsOlxuXG4gICAgLy8gICAgMS4gRXN0YWJsaXNoIGEgV2ViU29ja2V0IGNvbm5lY3Rpb24gZ2l2ZW4gdXJsUmVjb3JkLCBwcm90b2NvbHMsXG4gICAgLy8gICAgICAgYW5kIGNsaWVudC5cbiAgICB0aGlzW2tDb250cm9sbGVyXSA9IGVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oXG4gICAgICB1cmxSZWNvcmQsXG4gICAgICBwcm90b2NvbHMsXG4gICAgICB0aGlzLFxuICAgICAgKHJlc3BvbnNlKSA9PiB0aGlzLiNvbkNvbm5lY3Rpb25Fc3RhYmxpc2hlZChyZXNwb25zZSksXG4gICAgICBvcHRpb25zXG4gICAgKVxuXG4gICAgLy8gRWFjaCBXZWJTb2NrZXQgb2JqZWN0IGhhcyBhbiBhc3NvY2lhdGVkIHJlYWR5IHN0YXRlLCB3aGljaCBpcyBhXG4gICAgLy8gbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24uIEluaXRpYWxseSBpdCBtdXN0XG4gICAgLy8gYmUgQ09OTkVDVElORyAoMCkuXG4gICAgdGhpc1trUmVhZHlTdGF0ZV0gPSBXZWJTb2NrZXQuQ09OTkVDVElOR1xuXG4gICAgLy8gVGhlIGV4dGVuc2lvbnMgYXR0cmlidXRlIG11c3QgaW5pdGlhbGx5IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgLy8gVGhlIHByb3RvY29sIGF0dHJpYnV0ZSBtdXN0IGluaXRpYWxseSByZXR1cm4gdGhlIGVtcHR5IHN0cmluZy5cblxuICAgIC8vIEVhY2ggV2ViU29ja2V0IG9iamVjdCBoYXMgYW4gYXNzb2NpYXRlZCBiaW5hcnkgdHlwZSwgd2hpY2ggaXMgYVxuICAgIC8vIEJpbmFyeVR5cGUuIEluaXRpYWxseSBpdCBtdXN0IGJlIFwiYmxvYlwiLlxuICAgIHRoaXNba0JpbmFyeVR5cGVdID0gJ2Jsb2InXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNkb20td2Vic29ja2V0LWNsb3NlXG4gICAqIEBwYXJhbSB7bnVtYmVyfHVuZGVmaW5lZH0gY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IHJlYXNvblxuICAgKi9cbiAgY2xvc2UgKGNvZGUgPSB1bmRlZmluZWQsIHJlYXNvbiA9IHVuZGVmaW5lZCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIGlmIChjb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvZGUgPSB3ZWJpZGwuY29udmVydGVyc1sndW5zaWduZWQgc2hvcnQnXShjb2RlLCB7IGNsYW1wOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlYXNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZWFzb24gPSB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcocmVhc29uKVxuICAgIH1cblxuICAgIC8vIDEuIElmIGNvZGUgaXMgcHJlc2VudCwgYnV0IGlzIG5laXRoZXIgYW4gaW50ZWdlciBlcXVhbCB0byAxMDAwIG5vciBhblxuICAgIC8vICAgIGludGVnZXIgaW4gdGhlIHJhbmdlIDMwMDAgdG8gNDk5OSwgaW5jbHVzaXZlLCB0aHJvdyBhblxuICAgIC8vICAgIFwiSW52YWxpZEFjY2Vzc0Vycm9yXCIgRE9NRXhjZXB0aW9uLlxuICAgIGlmIChjb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb2RlICE9PSAxMDAwICYmIChjb2RlIDwgMzAwMCB8fCBjb2RlID4gNDk5OSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignaW52YWxpZCBjb2RlJywgJ0ludmFsaWRBY2Nlc3NFcnJvcicpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlYXNvbkJ5dGVMZW5ndGggPSAwXG5cbiAgICAvLyAyLiBJZiByZWFzb24gaXMgcHJlc2VudCwgdGhlbiBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgaWYgKHJlYXNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyAxLiBMZXQgcmVhc29uQnl0ZXMgYmUgdGhlIHJlc3VsdCBvZiBlbmNvZGluZyByZWFzb24uXG4gICAgICAvLyAyLiBJZiByZWFzb25CeXRlcyBpcyBsb25nZXIgdGhhbiAxMjMgYnl0ZXMsIHRoZW4gdGhyb3cgYVxuICAgICAgLy8gICAgXCJTeW50YXhFcnJvclwiIERPTUV4Y2VwdGlvbi5cbiAgICAgIHJlYXNvbkJ5dGVMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aChyZWFzb24pXG5cbiAgICAgIGlmIChyZWFzb25CeXRlTGVuZ3RoID4gMTIzKSB7XG4gICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgICAgYFJlYXNvbiBtdXN0IGJlIGxlc3MgdGhhbiAxMjMgYnl0ZXM7IHJlY2VpdmVkICR7cmVhc29uQnl0ZUxlbmd0aH1gLFxuICAgICAgICAgICdTeW50YXhFcnJvcidcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMuIFJ1biB0aGUgZmlyc3QgbWF0Y2hpbmcgc3RlcHMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6XG4gICAgaWYgKHRoaXNba1JlYWR5U3RhdGVdID09PSBXZWJTb2NrZXQuQ0xPU0lORyB8fCB0aGlzW2tSZWFkeVN0YXRlXSA9PT0gV2ViU29ja2V0LkNMT1NFRCkge1xuICAgICAgLy8gSWYgdGhpcydzIHJlYWR5IHN0YXRlIGlzIENMT1NJTkcgKDIpIG9yIENMT1NFRCAoMylcbiAgICAgIC8vIERvIG5vdGhpbmcuXG4gICAgfSBlbHNlIGlmICghaXNFc3RhYmxpc2hlZCh0aGlzKSkge1xuICAgICAgLy8gSWYgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIG5vdCB5ZXQgZXN0YWJsaXNoZWRcbiAgICAgIC8vIEZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBzZXQgdGhpcydzIHJlYWR5IHN0YXRlXG4gICAgICAvLyB0byBDTE9TSU5HICgyKS5cbiAgICAgIGZhaWxXZWJzb2NrZXRDb25uZWN0aW9uKHRoaXMsICdDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIGl0IHdhcyBlc3RhYmxpc2hlZC4nKVxuICAgICAgdGhpc1trUmVhZHlTdGF0ZV0gPSBXZWJTb2NrZXQuQ0xPU0lOR1xuICAgIH0gZWxzZSBpZiAoIWlzQ2xvc2luZyh0aGlzKSkge1xuICAgICAgLy8gSWYgdGhlIFdlYlNvY2tldCBjbG9zaW5nIGhhbmRzaGFrZSBoYXMgbm90IHlldCBiZWVuIHN0YXJ0ZWRcbiAgICAgIC8vIFN0YXJ0IHRoZSBXZWJTb2NrZXQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNldCB0aGlzJ3MgcmVhZHlcbiAgICAgIC8vIHN0YXRlIHRvIENMT1NJTkcgKDIpLlxuICAgICAgLy8gLSBJZiBuZWl0aGVyIGNvZGUgbm9yIHJlYXNvbiBpcyBwcmVzZW50LCB0aGUgV2ViU29ja2V0IENsb3NlXG4gICAgICAvLyAgIG1lc3NhZ2UgbXVzdCBub3QgaGF2ZSBhIGJvZHkuXG4gICAgICAvLyAtIElmIGNvZGUgaXMgcHJlc2VudCwgdGhlbiB0aGUgc3RhdHVzIGNvZGUgdG8gdXNlIGluIHRoZVxuICAgICAgLy8gICBXZWJTb2NrZXQgQ2xvc2UgbWVzc2FnZSBtdXN0IGJlIHRoZSBpbnRlZ2VyIGdpdmVuIGJ5IGNvZGUuXG4gICAgICAvLyAtIElmIHJlYXNvbiBpcyBhbHNvIHByZXNlbnQsIHRoZW4gcmVhc29uQnl0ZXMgbXVzdCBiZVxuICAgICAgLy8gICBwcm92aWRlZCBpbiB0aGUgQ2xvc2UgbWVzc2FnZSBhZnRlciB0aGUgc3RhdHVzIGNvZGUuXG5cbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZCgpXG5cbiAgICAgIC8vIElmIG5laXRoZXIgY29kZSBub3IgcmVhc29uIGlzIHByZXNlbnQsIHRoZSBXZWJTb2NrZXQgQ2xvc2VcbiAgICAgIC8vIG1lc3NhZ2UgbXVzdCBub3QgaGF2ZSBhIGJvZHkuXG5cbiAgICAgIC8vIElmIGNvZGUgaXMgcHJlc2VudCwgdGhlbiB0aGUgc3RhdHVzIGNvZGUgdG8gdXNlIGluIHRoZVxuICAgICAgLy8gV2ViU29ja2V0IENsb3NlIG1lc3NhZ2UgbXVzdCBiZSB0aGUgaW50ZWdlciBnaXZlbiBieSBjb2RlLlxuICAgICAgaWYgKGNvZGUgIT09IHVuZGVmaW5lZCAmJiByZWFzb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmcmFtZS5mcmFtZURhdGEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMilcbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhLndyaXRlVUludDE2QkUoY29kZSwgMClcbiAgICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gdW5kZWZpbmVkICYmIHJlYXNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIElmIHJlYXNvbiBpcyBhbHNvIHByZXNlbnQsIHRoZW4gcmVhc29uQnl0ZXMgbXVzdCBiZVxuICAgICAgICAvLyBwcm92aWRlZCBpbiB0aGUgQ2xvc2UgbWVzc2FnZSBhZnRlciB0aGUgc3RhdHVzIGNvZGUuXG4gICAgICAgIGZyYW1lLmZyYW1lRGF0YSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyICsgcmVhc29uQnl0ZUxlbmd0aClcbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhLndyaXRlVUludDE2QkUoY29kZSwgMClcbiAgICAgICAgLy8gdGhlIGJvZHkgTUFZIGNvbnRhaW4gVVRGLTgtZW5jb2RlZCBkYXRhIHdpdGggdmFsdWUgL3JlYXNvbi9cbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhLndyaXRlKHJlYXNvbiwgMiwgJ3V0Zi04JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyYW1lLmZyYW1lRGF0YSA9IGVtcHR5QnVmZmVyXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7aW1wb3J0KCdzdHJlYW0nKS5EdXBsZXh9ICovXG4gICAgICBjb25zdCBzb2NrZXQgPSB0aGlzW2tSZXNwb25zZV0uc29ja2V0XG5cbiAgICAgIHNvY2tldC53cml0ZShmcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLkNMT1NFKSwgKGVycikgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHRoaXNba1NlbnRDbG9zZV0gPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFVwb24gZWl0aGVyIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGEgQ2xvc2UgY29udHJvbCBmcmFtZSwgaXQgaXMgc2FpZFxuICAgICAgLy8gdGhhdCBfVGhlIFdlYlNvY2tldCBDbG9zaW5nIEhhbmRzaGFrZSBpcyBTdGFydGVkXyBhbmQgdGhhdCB0aGVcbiAgICAgIC8vIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGluIHRoZSBDTE9TSU5HIHN0YXRlLlxuICAgICAgdGhpc1trUmVhZHlTdGF0ZV0gPSBzdGF0ZXMuQ0xPU0lOR1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2VcbiAgICAgIC8vIFNldCB0aGlzJ3MgcmVhZHkgc3RhdGUgdG8gQ0xPU0lORyAoMikuXG4gICAgICB0aGlzW2tSZWFkeVN0YXRlXSA9IFdlYlNvY2tldC5DTE9TSU5HXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZG9tLXdlYnNvY2tldC1zZW5kXG4gICAqIEBwYXJhbSB7Tm9kZUpTLlR5cGVkQXJyYXl8QXJyYXlCdWZmZXJ8QmxvYnxzdHJpbmd9IGRhdGFcbiAgICovXG4gIHNlbmQgKGRhdGEpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICB3ZWJpZGwuYXJndW1lbnRMZW5ndGhDaGVjayhhcmd1bWVudHMsIDEsIHsgaGVhZGVyOiAnV2ViU29ja2V0LnNlbmQnIH0pXG5cbiAgICBkYXRhID0gd2ViaWRsLmNvbnZlcnRlcnMuV2ViU29ja2V0U2VuZERhdGEoZGF0YSlcblxuICAgIC8vIDEuIElmIHRoaXMncyByZWFkeSBzdGF0ZSBpcyBDT05ORUNUSU5HLCB0aGVuIHRocm93IGFuXG4gICAgLy8gICAgXCJJbnZhbGlkU3RhdGVFcnJvclwiIERPTUV4Y2VwdGlvbi5cbiAgICBpZiAodGhpc1trUmVhZHlTdGF0ZV0gPT09IFdlYlNvY2tldC5DT05ORUNUSU5HKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdTZW50IGJlZm9yZSBjb25uZWN0ZWQuJywgJ0ludmFsaWRTdGF0ZUVycm9yJylcbiAgICB9XG5cbiAgICAvLyAyLiBSdW4gdGhlIGFwcHJvcHJpYXRlIHNldCBvZiBzdGVwcyBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDpcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY0NTUjc2VjdGlvbi02LjFcbiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjJcblxuICAgIGlmICghaXNFc3RhYmxpc2hlZCh0aGlzKSB8fCBpc0Nsb3NpbmcodGhpcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KCdzdHJlYW0nKS5EdXBsZXh9ICovXG4gICAgY29uc3Qgc29ja2V0ID0gdGhpc1trUmVzcG9uc2VdLnNvY2tldFxuXG4gICAgLy8gSWYgZGF0YSBpcyBhIHN0cmluZ1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBhbmQgdGhlIFdlYlNvY2tldFxuICAgICAgLy8gY2xvc2luZyBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgc3RhcnRlZCwgdGhlbiB0aGUgdXNlciBhZ2VudFxuICAgICAgLy8gbXVzdCBzZW5kIGEgV2ViU29ja2V0IE1lc3NhZ2UgY29tcHJpc2VkIG9mIHRoZSBkYXRhIGFyZ3VtZW50XG4gICAgICAvLyB1c2luZyBhIHRleHQgZnJhbWUgb3Bjb2RlOyBpZiB0aGUgZGF0YSBjYW5ub3QgYmUgc2VudCwgZS5nLlxuICAgICAgLy8gYmVjYXVzZSBpdCB3b3VsZCBuZWVkIHRvIGJlIGJ1ZmZlcmVkIGJ1dCB0aGUgYnVmZmVyIGlzIGZ1bGwsXG4gICAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGZsYWcgdGhlIFdlYlNvY2tldCBhcyBmdWxsIGFuZCB0aGVuIGNsb3NlXG4gICAgICAvLyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uIEFueSBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHdpdGggYVxuICAgICAgLy8gc3RyaW5nIGFyZ3VtZW50IHRoYXQgZG9lcyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIG11c3QgaW5jcmVhc2VcbiAgICAgIC8vIHRoZSBidWZmZXJlZEFtb3VudCBhdHRyaWJ1dGUgYnkgdGhlIG51bWJlciBvZiBieXRlcyBuZWVkZWQgdG9cbiAgICAgIC8vIGV4cHJlc3MgdGhlIGFyZ3VtZW50IGFzIFVURi04LlxuXG4gICAgICBjb25zdCB2YWx1ZSA9IEJ1ZmZlci5mcm9tKGRhdGEpXG4gICAgICBjb25zdCBmcmFtZSA9IG5ldyBXZWJzb2NrZXRGcmFtZVNlbmQodmFsdWUpXG4gICAgICBjb25zdCBidWZmZXIgPSBmcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLlRFWFQpXG5cbiAgICAgIHRoaXMuI2J1ZmZlcmVkQW1vdW50ICs9IHZhbHVlLmJ5dGVMZW5ndGhcbiAgICAgIHNvY2tldC53cml0ZShidWZmZXIsICgpID0+IHtcbiAgICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgLT0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHR5cGVzLmlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgYW5kIHRoZSBXZWJTb2NrZXRcbiAgICAgIC8vIGNsb3NpbmcgaGFuZHNoYWtlIGhhcyBub3QgeWV0IHN0YXJ0ZWQsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdFxuICAgICAgLy8gc2VuZCBhIFdlYlNvY2tldCBNZXNzYWdlIGNvbXByaXNlZCBvZiBkYXRhIHVzaW5nIGEgYmluYXJ5IGZyYW1lXG4gICAgICAvLyBvcGNvZGU7IGlmIHRoZSBkYXRhIGNhbm5vdCBiZSBzZW50LCBlLmcuIGJlY2F1c2UgaXQgd291bGQgbmVlZFxuICAgICAgLy8gdG8gYmUgYnVmZmVyZWQgYnV0IHRoZSBidWZmZXIgaXMgZnVsbCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmbGFnXG4gICAgICAvLyB0aGUgV2ViU29ja2V0IGFzIGZ1bGwgYW5kIHRoZW4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLlxuICAgICAgLy8gVGhlIGRhdGEgdG8gYmUgc2VudCBpcyB0aGUgZGF0YSBzdG9yZWQgaW4gdGhlIGJ1ZmZlciBkZXNjcmliZWRcbiAgICAgIC8vIGJ5IHRoZSBBcnJheUJ1ZmZlciBvYmplY3QuIEFueSBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHdpdGggYW5cbiAgICAgIC8vIEFycmF5QnVmZmVyIGFyZ3VtZW50IHRoYXQgZG9lcyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIG11c3RcbiAgICAgIC8vIGluY3JlYXNlIHRoZSBidWZmZXJlZEFtb3VudCBhdHRyaWJ1dGUgYnkgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIC8vIEFycmF5QnVmZmVyIGluIGJ5dGVzLlxuXG4gICAgICBjb25zdCB2YWx1ZSA9IEJ1ZmZlci5mcm9tKGRhdGEpXG4gICAgICBjb25zdCBmcmFtZSA9IG5ldyBXZWJzb2NrZXRGcmFtZVNlbmQodmFsdWUpXG4gICAgICBjb25zdCBidWZmZXIgPSBmcmFtZS5jcmVhdGVGcmFtZShvcGNvZGVzLkJJTkFSWSlcblxuICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgKz0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgc29ja2V0LndyaXRlKGJ1ZmZlciwgKCkgPT4ge1xuICAgICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCAtPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7XG4gICAgICAvLyBJZiB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIGFuZCB0aGUgV2ViU29ja2V0XG4gICAgICAvLyBjbG9zaW5nIGhhbmRzaGFrZSBoYXMgbm90IHlldCBzdGFydGVkLCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3RcbiAgICAgIC8vIHNlbmQgYSBXZWJTb2NrZXQgTWVzc2FnZSBjb21wcmlzZWQgb2YgZGF0YSB1c2luZyBhIGJpbmFyeSBmcmFtZVxuICAgICAgLy8gb3Bjb2RlOyBpZiB0aGUgZGF0YSBjYW5ub3QgYmUgc2VudCwgZS5nLiBiZWNhdXNlIGl0IHdvdWxkIG5lZWQgdG9cbiAgICAgIC8vIGJlIGJ1ZmZlcmVkIGJ1dCB0aGUgYnVmZmVyIGlzIGZ1bGwsIHRoZSB1c2VyIGFnZW50IG11c3QgZmxhZyB0aGVcbiAgICAgIC8vIFdlYlNvY2tldCBhcyBmdWxsIGFuZCB0aGVuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gVGhlXG4gICAgICAvLyBkYXRhIHRvIGJlIHNlbnQgaXMgdGhlIGRhdGEgc3RvcmVkIGluIHRoZSBzZWN0aW9uIG9mIHRoZSBidWZmZXJcbiAgICAgIC8vIGRlc2NyaWJlZCBieSB0aGUgQXJyYXlCdWZmZXIgb2JqZWN0IHRoYXQgZGF0YSByZWZlcmVuY2VzLiBBbnlcbiAgICAgIC8vIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2l0aCB0aGlzIGtpbmQgb2YgYXJndW1lbnQgdGhhdCBkb2VzXG4gICAgICAvLyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIG11c3QgaW5jcmVhc2UgdGhlIGJ1ZmZlcmVkQW1vdW50IGF0dHJpYnV0ZVxuICAgICAgLy8gYnkgdGhlIGxlbmd0aCBvZiBkYXRhXHUyMDE5cyBidWZmZXIgaW4gYnl0ZXMuXG5cbiAgICAgIGNvbnN0IGFiID0gQnVmZmVyLmZyb20oZGF0YSwgZGF0YS5ieXRlT2Zmc2V0LCBkYXRhLmJ5dGVMZW5ndGgpXG5cbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFdlYnNvY2tldEZyYW1lU2VuZChhYilcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGZyYW1lLmNyZWF0ZUZyYW1lKG9wY29kZXMuQklOQVJZKVxuXG4gICAgICB0aGlzLiNidWZmZXJlZEFtb3VudCArPSBhYi5ieXRlTGVuZ3RoXG4gICAgICBzb2NrZXQud3JpdGUoYnVmZmVyLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuI2J1ZmZlcmVkQW1vdW50IC09IGFiLmJ5dGVMZW5ndGhcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChpc0Jsb2JMaWtlKGRhdGEpKSB7XG4gICAgICAvLyBJZiB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIGFuZCB0aGUgV2ViU29ja2V0XG4gICAgICAvLyBjbG9zaW5nIGhhbmRzaGFrZSBoYXMgbm90IHlldCBzdGFydGVkLCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3RcbiAgICAgIC8vIHNlbmQgYSBXZWJTb2NrZXQgTWVzc2FnZSBjb21wcmlzZWQgb2YgZGF0YSB1c2luZyBhIGJpbmFyeSBmcmFtZVxuICAgICAgLy8gb3Bjb2RlOyBpZiB0aGUgZGF0YSBjYW5ub3QgYmUgc2VudCwgZS5nLiBiZWNhdXNlIGl0IHdvdWxkIG5lZWQgdG9cbiAgICAgIC8vIGJlIGJ1ZmZlcmVkIGJ1dCB0aGUgYnVmZmVyIGlzIGZ1bGwsIHRoZSB1c2VyIGFnZW50IG11c3QgZmxhZyB0aGVcbiAgICAgIC8vIFdlYlNvY2tldCBhcyBmdWxsIGFuZCB0aGVuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gVGhlIGRhdGFcbiAgICAgIC8vIHRvIGJlIHNlbnQgaXMgdGhlIHJhdyBkYXRhIHJlcHJlc2VudGVkIGJ5IHRoZSBCbG9iIG9iamVjdC4gQW55XG4gICAgICAvLyBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHdpdGggYSBCbG9iIGFyZ3VtZW50IHRoYXQgZG9lcyBub3QgdGhyb3dcbiAgICAgIC8vIGFuIGV4Y2VwdGlvbiBtdXN0IGluY3JlYXNlIHRoZSBidWZmZXJlZEFtb3VudCBhdHRyaWJ1dGUgYnkgdGhlIHNpemVcbiAgICAgIC8vIG9mIHRoZSBCbG9iIG9iamVjdFx1MjAxOXMgcmF3IGRhdGEsIGluIGJ5dGVzLlxuXG4gICAgICBjb25zdCBmcmFtZSA9IG5ldyBXZWJzb2NrZXRGcmFtZVNlbmQoKVxuXG4gICAgICBkYXRhLmFycmF5QnVmZmVyKCkudGhlbigoYWIpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBCdWZmZXIuZnJvbShhYilcbiAgICAgICAgZnJhbWUuZnJhbWVEYXRhID0gdmFsdWVcbiAgICAgICAgY29uc3QgYnVmZmVyID0gZnJhbWUuY3JlYXRlRnJhbWUob3Bjb2Rlcy5CSU5BUlkpXG5cbiAgICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgKz0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgICBzb2NrZXQud3JpdGUoYnVmZmVyLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jYnVmZmVyZWRBbW91bnQgLT0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXQgcmVhZHlTdGF0ZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgLy8gVGhlIHJlYWR5U3RhdGUgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpcydzIHJlYWR5IHN0YXRlLlxuICAgIHJldHVybiB0aGlzW2tSZWFkeVN0YXRlXVxuICB9XG5cbiAgZ2V0IGJ1ZmZlcmVkQW1vdW50ICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpcy4jYnVmZmVyZWRBbW91bnRcbiAgfVxuXG4gIGdldCB1cmwgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIC8vIFRoZSB1cmwgZ2V0dGVyIHN0ZXBzIGFyZSB0byByZXR1cm4gdGhpcydzIHVybCwgc2VyaWFsaXplZC5cbiAgICByZXR1cm4gVVJMU2VyaWFsaXplcih0aGlzW2tXZWJTb2NrZXRVUkxdKVxuICB9XG5cbiAgZ2V0IGV4dGVuc2lvbnMgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHJldHVybiB0aGlzLiNleHRlbnNpb25zXG4gIH1cblxuICBnZXQgcHJvdG9jb2wgKCkge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIHJldHVybiB0aGlzLiNwcm90b2NvbFxuICB9XG5cbiAgZ2V0IG9ub3BlbiAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50cy5vcGVuXG4gIH1cblxuICBzZXQgb25vcGVuIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIGlmICh0aGlzLiNldmVudHMub3Blbikge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcGVuJywgdGhpcy4jZXZlbnRzLm9wZW4pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy4jZXZlbnRzLm9wZW4gPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5vcGVuID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBvbmVycm9yICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpcy4jZXZlbnRzLmVycm9yXG4gIH1cblxuICBzZXQgb25lcnJvciAoZm4pIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICBpZiAodGhpcy4jZXZlbnRzLmVycm9yKSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy4jZXZlbnRzLmVycm9yKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5lcnJvciA9IGZuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5lcnJvciA9IG51bGxcbiAgICB9XG4gIH1cblxuICBnZXQgb25jbG9zZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50cy5jbG9zZVxuICB9XG5cbiAgc2V0IG9uY2xvc2UgKGZuKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgaWYgKHRoaXMuI2V2ZW50cy5jbG9zZSkge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbG9zZScsIHRoaXMuI2V2ZW50cy5jbG9zZSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLiNldmVudHMuY2xvc2UgPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbG9zZScsIGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNldmVudHMuY2xvc2UgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IG9ubWVzc2FnZSAoKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50cy5tZXNzYWdlXG4gIH1cblxuICBzZXQgb25tZXNzYWdlIChmbikge1xuICAgIHdlYmlkbC5icmFuZENoZWNrKHRoaXMsIFdlYlNvY2tldClcblxuICAgIGlmICh0aGlzLiNldmVudHMubWVzc2FnZSkge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy4jZXZlbnRzLm1lc3NhZ2UpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy4jZXZlbnRzLm1lc3NhZ2UgPSBmblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5tZXNzYWdlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldCBiaW5hcnlUeXBlICgpIHtcbiAgICB3ZWJpZGwuYnJhbmRDaGVjayh0aGlzLCBXZWJTb2NrZXQpXG5cbiAgICByZXR1cm4gdGhpc1trQmluYXJ5VHlwZV1cbiAgfVxuXG4gIHNldCBiaW5hcnlUeXBlICh0eXBlKSB7XG4gICAgd2ViaWRsLmJyYW5kQ2hlY2sodGhpcywgV2ViU29ja2V0KVxuXG4gICAgaWYgKHR5cGUgIT09ICdibG9iJyAmJiB0eXBlICE9PSAnYXJyYXlidWZmZXInKSB7XG4gICAgICB0aGlzW2tCaW5hcnlUeXBlXSA9ICdibG9iJ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tCaW5hcnlUeXBlXSA9IHR5cGVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNmZWVkYmFjay1mcm9tLXRoZS1wcm90b2NvbFxuICAgKi9cbiAgI29uQ29ubmVjdGlvbkVzdGFibGlzaGVkIChyZXNwb25zZSkge1xuICAgIC8vIHByb2Nlc3NSZXNwb25zZSBpcyBjYWxsZWQgd2hlbiB0aGUgXCJyZXNwb25zZVx1MjAxOXMgaGVhZGVyIGxpc3QgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGluaXRpYWxpemVkLlwiXG4gICAgLy8gb25jZSB0aGlzIGhhcHBlbnMsIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICB0aGlzW2tSZXNwb25zZV0gPSByZXNwb25zZVxuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IEJ5dGVQYXJzZXIodGhpcylcbiAgICBwYXJzZXIub24oJ2RyYWluJywgZnVuY3Rpb24gb25QYXJzZXJEcmFpbiAoKSB7XG4gICAgICB0aGlzLndzW2tSZXNwb25zZV0uc29ja2V0LnJlc3VtZSgpXG4gICAgfSlcblxuICAgIHJlc3BvbnNlLnNvY2tldC53cyA9IHRoaXNcbiAgICB0aGlzW2tCeXRlUGFyc2VyXSA9IHBhcnNlclxuXG4gICAgLy8gMS4gQ2hhbmdlIHRoZSByZWFkeSBzdGF0ZSB0byBPUEVOICgxKS5cbiAgICB0aGlzW2tSZWFkeVN0YXRlXSA9IHN0YXRlcy5PUEVOXG5cbiAgICAvLyAyLiBDaGFuZ2UgdGhlIGV4dGVuc2lvbnMgYXR0cmlidXRlXHUyMDE5cyB2YWx1ZSB0byB0aGUgZXh0ZW5zaW9ucyBpbiB1c2UsIGlmXG4gICAgLy8gICAgaXQgaXMgbm90IHRoZSBudWxsIHZhbHVlLlxuICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTkuMVxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ3NlYy13ZWJzb2NrZXQtZXh0ZW5zaW9ucycpXG5cbiAgICBpZiAoZXh0ZW5zaW9ucyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy4jZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnNcbiAgICB9XG5cbiAgICAvLyAzLiBDaGFuZ2UgdGhlIHByb3RvY29sIGF0dHJpYnV0ZVx1MjAxOXMgdmFsdWUgdG8gdGhlIHN1YnByb3RvY29sIGluIHVzZSwgaWZcbiAgICAvLyAgICBpdCBpcyBub3QgdGhlIG51bGwgdmFsdWUuXG4gICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NDU1I3NlY3Rpb24tMS45XG4gICAgY29uc3QgcHJvdG9jb2wgPSByZXNwb25zZS5oZWFkZXJzTGlzdC5nZXQoJ3NlYy13ZWJzb2NrZXQtcHJvdG9jb2wnKVxuXG4gICAgaWYgKHByb3RvY29sICE9PSBudWxsKSB7XG4gICAgICB0aGlzLiNwcm90b2NvbCA9IHByb3RvY29sXG4gICAgfVxuXG4gICAgLy8gNC4gRmlyZSBhbiBldmVudCBuYW1lZCBvcGVuIGF0IHRoZSBXZWJTb2NrZXQgb2JqZWN0LlxuICAgIGZpcmVFdmVudCgnb3BlbicsIHRoaXMpXG4gIH1cbn1cblxuLy8gaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZG9tLXdlYnNvY2tldC1jb25uZWN0aW5nXG5XZWJTb2NrZXQuQ09OTkVDVElORyA9IFdlYlNvY2tldC5wcm90b3R5cGUuQ09OTkVDVElORyA9IHN0YXRlcy5DT05ORUNUSU5HXG4vLyBodHRwczovL3dlYnNvY2tldHMuc3BlYy53aGF0d2cub3JnLyNkb20td2Vic29ja2V0LW9wZW5cbldlYlNvY2tldC5PUEVOID0gV2ViU29ja2V0LnByb3RvdHlwZS5PUEVOID0gc3RhdGVzLk9QRU5cbi8vIGh0dHBzOi8vd2Vic29ja2V0cy5zcGVjLndoYXR3Zy5vcmcvI2RvbS13ZWJzb2NrZXQtY2xvc2luZ1xuV2ViU29ja2V0LkNMT1NJTkcgPSBXZWJTb2NrZXQucHJvdG90eXBlLkNMT1NJTkcgPSBzdGF0ZXMuQ0xPU0lOR1xuLy8gaHR0cHM6Ly93ZWJzb2NrZXRzLnNwZWMud2hhdHdnLm9yZy8jZG9tLXdlYnNvY2tldC1jbG9zZWRcbldlYlNvY2tldC5DTE9TRUQgPSBXZWJTb2NrZXQucHJvdG90eXBlLkNMT1NFRCA9IHN0YXRlcy5DTE9TRURcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoV2ViU29ja2V0LnByb3RvdHlwZSwge1xuICBDT05ORUNUSU5HOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBPUEVOOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBDTE9TSU5HOiBzdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3JzLFxuICBDTE9TRUQ6IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIHVybDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcmVhZHlTdGF0ZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYnVmZmVyZWRBbW91bnQ6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ub3Blbjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25lcnJvcjoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgb25jbG9zZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgY2xvc2U6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIG9ubWVzc2FnZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgYmluYXJ5VHlwZToga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgc2VuZDoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgZXh0ZW5zaW9uczoga0VudW1lcmFibGVQcm9wZXJ0eSxcbiAgcHJvdG9jb2w6IGtFbnVtZXJhYmxlUHJvcGVydHksXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiB7XG4gICAgdmFsdWU6ICdXZWJTb2NrZXQnLFxuICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoV2ViU29ja2V0LCB7XG4gIENPTk5FQ1RJTkc6IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIE9QRU46IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIENMT1NJTkc6IHN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcnMsXG4gIENMT1NFRDogc3RhdGljUHJvcGVydHlEZXNjcmlwdG9yc1xufSlcblxud2ViaWRsLmNvbnZlcnRlcnNbJ3NlcXVlbmNlPERPTVN0cmluZz4nXSA9IHdlYmlkbC5zZXF1ZW5jZUNvbnZlcnRlcihcbiAgd2ViaWRsLmNvbnZlcnRlcnMuRE9NU3RyaW5nXG4pXG5cbndlYmlkbC5jb252ZXJ0ZXJzWydET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPiddID0gZnVuY3Rpb24gKFYpIHtcbiAgaWYgKHdlYmlkbC51dGlsLlR5cGUoVikgPT09ICdPYmplY3QnICYmIFN5bWJvbC5pdGVyYXRvciBpbiBWKSB7XG4gICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzWydzZXF1ZW5jZTxET01TdHJpbmc+J10oVilcbiAgfVxuXG4gIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5ET01TdHJpbmcoVilcbn1cblxuLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwcm9wc2FsIG1hZGUgaW4gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy93ZWJzb2NrZXRzL2lzc3Vlcy80Mlxud2ViaWRsLmNvbnZlcnRlcnMuV2ViU29ja2V0SW5pdCA9IHdlYmlkbC5kaWN0aW9uYXJ5Q29udmVydGVyKFtcbiAge1xuICAgIGtleTogJ3Byb3RvY29scycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwuY29udmVydGVyc1snRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4nXSxcbiAgICBnZXQgZGVmYXVsdFZhbHVlICgpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfSxcbiAge1xuICAgIGtleTogJ2Rpc3BhdGNoZXInLFxuICAgIGNvbnZlcnRlcjogKFYpID0+IFYsXG4gICAgZ2V0IGRlZmF1bHRWYWx1ZSAoKSB7XG4gICAgICByZXR1cm4gZ2V0R2xvYmFsRGlzcGF0Y2hlcigpXG4gICAgfVxuICB9LFxuICB7XG4gICAga2V5OiAnaGVhZGVycycsXG4gICAgY29udmVydGVyOiB3ZWJpZGwubnVsbGFibGVDb252ZXJ0ZXIod2ViaWRsLmNvbnZlcnRlcnMuSGVhZGVyc0luaXQpXG4gIH1cbl0pXG5cbndlYmlkbC5jb252ZXJ0ZXJzWydET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPiBvciBXZWJTb2NrZXRJbml0J10gPSBmdW5jdGlvbiAoVikge1xuICBpZiAod2ViaWRsLnV0aWwuVHlwZShWKSA9PT0gJ09iamVjdCcgJiYgIShTeW1ib2wuaXRlcmF0b3IgaW4gVikpIHtcbiAgICByZXR1cm4gd2ViaWRsLmNvbnZlcnRlcnMuV2ViU29ja2V0SW5pdChWKVxuICB9XG5cbiAgcmV0dXJuIHsgcHJvdG9jb2xzOiB3ZWJpZGwuY29udmVydGVyc1snRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4nXShWKSB9XG59XG5cbndlYmlkbC5jb252ZXJ0ZXJzLldlYlNvY2tldFNlbmREYXRhID0gZnVuY3Rpb24gKFYpIHtcbiAgaWYgKHdlYmlkbC51dGlsLlR5cGUoVikgPT09ICdPYmplY3QnKSB7XG4gICAgaWYgKGlzQmxvYkxpa2UoVikpIHtcbiAgICAgIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5CbG9iKFYsIHsgc3RyaWN0OiBmYWxzZSB9KVxuICAgIH1cblxuICAgIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoVikgfHwgdHlwZXMuaXNBbnlBcnJheUJ1ZmZlcihWKSkge1xuICAgICAgcmV0dXJuIHdlYmlkbC5jb252ZXJ0ZXJzLkJ1ZmZlclNvdXJjZShWKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3ZWJpZGwuY29udmVydGVycy5VU1ZTdHJpbmcoVilcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFdlYlNvY2tldFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBDbGllbnQgPSByZXF1aXJlKCcuL2xpYi9jbGllbnQnKVxuY29uc3QgRGlzcGF0Y2hlciA9IHJlcXVpcmUoJy4vbGliL2Rpc3BhdGNoZXInKVxuY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9saWIvY29yZS9lcnJvcnMnKVxuY29uc3QgUG9vbCA9IHJlcXVpcmUoJy4vbGliL3Bvb2wnKVxuY29uc3QgQmFsYW5jZWRQb29sID0gcmVxdWlyZSgnLi9saWIvYmFsYW5jZWQtcG9vbCcpXG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vbGliL2FnZW50JylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL2xpYi9jb3JlL3V0aWwnKVxuY29uc3QgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9ID0gZXJyb3JzXG5jb25zdCBhcGkgPSByZXF1aXJlKCcuL2xpYi9hcGknKVxuY29uc3QgYnVpbGRDb25uZWN0b3IgPSByZXF1aXJlKCcuL2xpYi9jb3JlL2Nvbm5lY3QnKVxuY29uc3QgTW9ja0NsaWVudCA9IHJlcXVpcmUoJy4vbGliL21vY2svbW9jay1jbGllbnQnKVxuY29uc3QgTW9ja0FnZW50ID0gcmVxdWlyZSgnLi9saWIvbW9jay9tb2NrLWFnZW50JylcbmNvbnN0IE1vY2tQb29sID0gcmVxdWlyZSgnLi9saWIvbW9jay9tb2NrLXBvb2wnKVxuY29uc3QgbW9ja0Vycm9ycyA9IHJlcXVpcmUoJy4vbGliL21vY2svbW9jay1lcnJvcnMnKVxuY29uc3QgUHJveHlBZ2VudCA9IHJlcXVpcmUoJy4vbGliL3Byb3h5LWFnZW50JylcbmNvbnN0IFJldHJ5SGFuZGxlciA9IHJlcXVpcmUoJy4vbGliL2hhbmRsZXIvUmV0cnlIYW5kbGVyJylcbmNvbnN0IHsgZ2V0R2xvYmFsRGlzcGF0Y2hlciwgc2V0R2xvYmFsRGlzcGF0Y2hlciB9ID0gcmVxdWlyZSgnLi9saWIvZ2xvYmFsJylcbmNvbnN0IERlY29yYXRvckhhbmRsZXIgPSByZXF1aXJlKCcuL2xpYi9oYW5kbGVyL0RlY29yYXRvckhhbmRsZXInKVxuY29uc3QgUmVkaXJlY3RIYW5kbGVyID0gcmVxdWlyZSgnLi9saWIvaGFuZGxlci9SZWRpcmVjdEhhbmRsZXInKVxuY29uc3QgY3JlYXRlUmVkaXJlY3RJbnRlcmNlcHRvciA9IHJlcXVpcmUoJy4vbGliL2ludGVyY2VwdG9yL3JlZGlyZWN0SW50ZXJjZXB0b3InKVxuXG5sZXQgaGFzQ3J5cHRvXG50cnkge1xuICByZXF1aXJlKCdjcnlwdG8nKVxuICBoYXNDcnlwdG8gPSB0cnVlXG59IGNhdGNoIHtcbiAgaGFzQ3J5cHRvID0gZmFsc2Vcbn1cblxuT2JqZWN0LmFzc2lnbihEaXNwYXRjaGVyLnByb3RvdHlwZSwgYXBpKVxuXG5tb2R1bGUuZXhwb3J0cy5EaXNwYXRjaGVyID0gRGlzcGF0Y2hlclxubW9kdWxlLmV4cG9ydHMuQ2xpZW50ID0gQ2xpZW50XG5tb2R1bGUuZXhwb3J0cy5Qb29sID0gUG9vbFxubW9kdWxlLmV4cG9ydHMuQmFsYW5jZWRQb29sID0gQmFsYW5jZWRQb29sXG5tb2R1bGUuZXhwb3J0cy5BZ2VudCA9IEFnZW50XG5tb2R1bGUuZXhwb3J0cy5Qcm94eUFnZW50ID0gUHJveHlBZ2VudFxubW9kdWxlLmV4cG9ydHMuUmV0cnlIYW5kbGVyID0gUmV0cnlIYW5kbGVyXG5cbm1vZHVsZS5leHBvcnRzLkRlY29yYXRvckhhbmRsZXIgPSBEZWNvcmF0b3JIYW5kbGVyXG5tb2R1bGUuZXhwb3J0cy5SZWRpcmVjdEhhbmRsZXIgPSBSZWRpcmVjdEhhbmRsZXJcbm1vZHVsZS5leHBvcnRzLmNyZWF0ZVJlZGlyZWN0SW50ZXJjZXB0b3IgPSBjcmVhdGVSZWRpcmVjdEludGVyY2VwdG9yXG5cbm1vZHVsZS5leHBvcnRzLmJ1aWxkQ29ubmVjdG9yID0gYnVpbGRDb25uZWN0b3Jcbm1vZHVsZS5leHBvcnRzLmVycm9ycyA9IGVycm9yc1xuXG5mdW5jdGlvbiBtYWtlRGlzcGF0Y2hlciAoZm4pIHtcbiAgcmV0dXJuICh1cmwsIG9wdHMsIGhhbmRsZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGhhbmRsZXIgPSBvcHRzXG4gICAgICBvcHRzID0gbnVsbFxuICAgIH1cblxuICAgIGlmICghdXJsIHx8ICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdXJsICE9PSAnb2JqZWN0JyAmJiAhKHVybCBpbnN0YW5jZW9mIFVSTCkpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2ludmFsaWQgdXJsJylcbiAgICB9XG5cbiAgICBpZiAob3B0cyAhPSBudWxsICYmIHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9wdHMnKVxuICAgIH1cblxuICAgIGlmIChvcHRzICYmIG9wdHMucGF0aCAhPSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMucGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdpbnZhbGlkIG9wdHMucGF0aCcpXG4gICAgICB9XG5cbiAgICAgIGxldCBwYXRoID0gb3B0cy5wYXRoXG4gICAgICBpZiAoIW9wdHMucGF0aC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgcGF0aCA9IGAvJHtwYXRofWBcbiAgICAgIH1cblxuICAgICAgdXJsID0gbmV3IFVSTCh1dGlsLnBhcnNlT3JpZ2luKHVybCkub3JpZ2luICsgcGF0aClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRzKSB7XG4gICAgICAgIG9wdHMgPSB0eXBlb2YgdXJsID09PSAnb2JqZWN0JyA/IHVybCA6IHt9XG4gICAgICB9XG5cbiAgICAgIHVybCA9IHV0aWwucGFyc2VVUkwodXJsKVxuICAgIH1cblxuICAgIGNvbnN0IHsgYWdlbnQsIGRpc3BhdGNoZXIgPSBnZXRHbG9iYWxEaXNwYXRjaGVyKCkgfSA9IG9wdHNcblxuICAgIGlmIChhZ2VudCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd1bnN1cHBvcnRlZCBvcHRzLmFnZW50LiBEaWQgeW91IG1lYW4gb3B0cy5jbGllbnQ/JylcbiAgICB9XG5cbiAgICByZXR1cm4gZm4uY2FsbChkaXNwYXRjaGVyLCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgb3JpZ2luOiB1cmwub3JpZ2luLFxuICAgICAgcGF0aDogdXJsLnNlYXJjaCA/IGAke3VybC5wYXRobmFtZX0ke3VybC5zZWFyY2h9YCA6IHVybC5wYXRobmFtZSxcbiAgICAgIG1ldGhvZDogb3B0cy5tZXRob2QgfHwgKG9wdHMuYm9keSA/ICdQVVQnIDogJ0dFVCcpXG4gICAgfSwgaGFuZGxlcilcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cy5zZXRHbG9iYWxEaXNwYXRjaGVyID0gc2V0R2xvYmFsRGlzcGF0Y2hlclxubW9kdWxlLmV4cG9ydHMuZ2V0R2xvYmFsRGlzcGF0Y2hlciA9IGdldEdsb2JhbERpc3BhdGNoZXJcblxuaWYgKHV0aWwubm9kZU1ham9yID4gMTYgfHwgKHV0aWwubm9kZU1ham9yID09PSAxNiAmJiB1dGlsLm5vZGVNaW5vciA+PSA4KSkge1xuICBsZXQgZmV0Y2hJbXBsID0gbnVsbFxuICBtb2R1bGUuZXhwb3J0cy5mZXRjaCA9IGFzeW5jIGZ1bmN0aW9uIGZldGNoIChyZXNvdXJjZSkge1xuICAgIGlmICghZmV0Y2hJbXBsKSB7XG4gICAgICBmZXRjaEltcGwgPSByZXF1aXJlKCcuL2xpYi9mZXRjaCcpLmZldGNoXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmZXRjaEltcGwoLi4uYXJndW1lbnRzKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdGhpcylcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG4gIG1vZHVsZS5leHBvcnRzLkhlYWRlcnMgPSByZXF1aXJlKCcuL2xpYi9mZXRjaC9oZWFkZXJzJykuSGVhZGVyc1xuICBtb2R1bGUuZXhwb3J0cy5SZXNwb25zZSA9IHJlcXVpcmUoJy4vbGliL2ZldGNoL3Jlc3BvbnNlJykuUmVzcG9uc2VcbiAgbW9kdWxlLmV4cG9ydHMuUmVxdWVzdCA9IHJlcXVpcmUoJy4vbGliL2ZldGNoL3JlcXVlc3QnKS5SZXF1ZXN0XG4gIG1vZHVsZS5leHBvcnRzLkZvcm1EYXRhID0gcmVxdWlyZSgnLi9saWIvZmV0Y2gvZm9ybWRhdGEnKS5Gb3JtRGF0YVxuICBtb2R1bGUuZXhwb3J0cy5GaWxlID0gcmVxdWlyZSgnLi9saWIvZmV0Y2gvZmlsZScpLkZpbGVcbiAgbW9kdWxlLmV4cG9ydHMuRmlsZVJlYWRlciA9IHJlcXVpcmUoJy4vbGliL2ZpbGVhcGkvZmlsZXJlYWRlcicpLkZpbGVSZWFkZXJcblxuICBjb25zdCB7IHNldEdsb2JhbE9yaWdpbiwgZ2V0R2xvYmFsT3JpZ2luIH0gPSByZXF1aXJlKCcuL2xpYi9mZXRjaC9nbG9iYWwnKVxuXG4gIG1vZHVsZS5leHBvcnRzLnNldEdsb2JhbE9yaWdpbiA9IHNldEdsb2JhbE9yaWdpblxuICBtb2R1bGUuZXhwb3J0cy5nZXRHbG9iYWxPcmlnaW4gPSBnZXRHbG9iYWxPcmlnaW5cblxuICBjb25zdCB7IENhY2hlU3RvcmFnZSB9ID0gcmVxdWlyZSgnLi9saWIvY2FjaGUvY2FjaGVzdG9yYWdlJylcbiAgY29uc3QgeyBrQ29uc3RydWN0IH0gPSByZXF1aXJlKCcuL2xpYi9jYWNoZS9zeW1ib2xzJylcblxuICAvLyBDYWNoZSAmIENhY2hlU3RvcmFnZSBhcmUgdGlnaHRseSBjb3VwbGVkIHdpdGggZmV0Y2guIEV2ZW4gaWYgaXQgbWF5IHJ1blxuICAvLyBpbiBhbiBvbGRlciB2ZXJzaW9uIG9mIE5vZGUsIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgdXNlIHdpdGhvdXQgZmV0Y2guXG4gIG1vZHVsZS5leHBvcnRzLmNhY2hlcyA9IG5ldyBDYWNoZVN0b3JhZ2Uoa0NvbnN0cnVjdClcbn1cblxuaWYgKHV0aWwubm9kZU1ham9yID49IDE2KSB7XG4gIGNvbnN0IHsgZGVsZXRlQ29va2llLCBnZXRDb29raWVzLCBnZXRTZXRDb29raWVzLCBzZXRDb29raWUgfSA9IHJlcXVpcmUoJy4vbGliL2Nvb2tpZXMnKVxuXG4gIG1vZHVsZS5leHBvcnRzLmRlbGV0ZUNvb2tpZSA9IGRlbGV0ZUNvb2tpZVxuICBtb2R1bGUuZXhwb3J0cy5nZXRDb29raWVzID0gZ2V0Q29va2llc1xuICBtb2R1bGUuZXhwb3J0cy5nZXRTZXRDb29raWVzID0gZ2V0U2V0Q29va2llc1xuICBtb2R1bGUuZXhwb3J0cy5zZXRDb29raWUgPSBzZXRDb29raWVcblxuICBjb25zdCB7IHBhcnNlTUlNRVR5cGUsIHNlcmlhbGl6ZUFNaW1lVHlwZSB9ID0gcmVxdWlyZSgnLi9saWIvZmV0Y2gvZGF0YVVSTCcpXG5cbiAgbW9kdWxlLmV4cG9ydHMucGFyc2VNSU1FVHlwZSA9IHBhcnNlTUlNRVR5cGVcbiAgbW9kdWxlLmV4cG9ydHMuc2VyaWFsaXplQU1pbWVUeXBlID0gc2VyaWFsaXplQU1pbWVUeXBlXG59XG5cbmlmICh1dGlsLm5vZGVNYWpvciA+PSAxOCAmJiBoYXNDcnlwdG8pIHtcbiAgY29uc3QgeyBXZWJTb2NrZXQgfSA9IHJlcXVpcmUoJy4vbGliL3dlYnNvY2tldC93ZWJzb2NrZXQnKVxuXG4gIG1vZHVsZS5leHBvcnRzLldlYlNvY2tldCA9IFdlYlNvY2tldFxufVxuXG5tb2R1bGUuZXhwb3J0cy5yZXF1ZXN0ID0gbWFrZURpc3BhdGNoZXIoYXBpLnJlcXVlc3QpXG5tb2R1bGUuZXhwb3J0cy5zdHJlYW0gPSBtYWtlRGlzcGF0Y2hlcihhcGkuc3RyZWFtKVxubW9kdWxlLmV4cG9ydHMucGlwZWxpbmUgPSBtYWtlRGlzcGF0Y2hlcihhcGkucGlwZWxpbmUpXG5tb2R1bGUuZXhwb3J0cy5jb25uZWN0ID0gbWFrZURpc3BhdGNoZXIoYXBpLmNvbm5lY3QpXG5tb2R1bGUuZXhwb3J0cy51cGdyYWRlID0gbWFrZURpc3BhdGNoZXIoYXBpLnVwZ3JhZGUpXG5cbm1vZHVsZS5leHBvcnRzLk1vY2tDbGllbnQgPSBNb2NrQ2xpZW50XG5tb2R1bGUuZXhwb3J0cy5Nb2NrUG9vbCA9IE1vY2tQb29sXG5tb2R1bGUuZXhwb3J0cy5Nb2NrQWdlbnQgPSBNb2NrQWdlbnRcbm1vZHVsZS5leHBvcnRzLm1vY2tFcnJvcnMgPSBtb2NrRXJyb3JzXG4iLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IE51bGxPYmplY3QgPSBmdW5jdGlvbiBOdWxsT2JqZWN0ICgpIHsgfVxuTnVsbE9iamVjdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoICooIFwiO1wiIHBhcmFtZXRlciApIGluIFJGQyA3MjMxIHNlYyAzLjEuMS4xXG4gKlxuICogcGFyYW1ldGVyICAgICA9IHRva2VuIFwiPVwiICggdG9rZW4gLyBxdW90ZWQtc3RyaW5nIClcbiAqIHRva2VuICAgICAgICAgPSAxKnRjaGFyXG4gKiB0Y2hhciAgICAgICAgID0gXCIhXCIgLyBcIiNcIiAvIFwiJFwiIC8gXCIlXCIgLyBcIiZcIiAvIFwiJ1wiIC8gXCIqXCJcbiAqICAgICAgICAgICAgICAgLyBcIitcIiAvIFwiLVwiIC8gXCIuXCIgLyBcIl5cIiAvIFwiX1wiIC8gXCJgXCIgLyBcInxcIiAvIFwiflwiXG4gKiAgICAgICAgICAgICAgIC8gRElHSVQgLyBBTFBIQVxuICogICAgICAgICAgICAgICA7IGFueSBWQ0hBUiwgZXhjZXB0IGRlbGltaXRlcnNcbiAqIHF1b3RlZC1zdHJpbmcgPSBEUVVPVEUgKiggcWR0ZXh0IC8gcXVvdGVkLXBhaXIgKSBEUVVPVEVcbiAqIHFkdGV4dCAgICAgICAgPSBIVEFCIC8gU1AgLyAleDIxIC8gJXgyMy01QiAvICV4NUQtN0UgLyBvYnMtdGV4dFxuICogb2JzLXRleHQgICAgICA9ICV4ODAtRkZcbiAqIHF1b3RlZC1wYWlyICAgPSBcIlxcXCIgKCBIVEFCIC8gU1AgLyBWQ0hBUiAvIG9icy10ZXh0IClcbiAqL1xuY29uc3QgcGFyYW1SRSA9IC87ICooWyEjJCUmJyorLl5cXHdgfH4tXSspPShcIig/OltcXHZcXHUwMDIwXFx1MDAyMVxcdTAwMjMtXFx1MDA1YlxcdTAwNWQtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl18XFxcXFtcXHZcXHUwMDIwLVxcdTAwZmZdKSpcInxbISMkJSYnKisuXlxcd2B8fi1dKykgKi9ndVxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBxdW90ZWQtcGFpciBpbiBSRkMgNzIzMCBzZWMgMy4yLjZcbiAqXG4gKiBxdW90ZWQtcGFpciA9IFwiXFxcIiAoIEhUQUIgLyBTUCAvIFZDSEFSIC8gb2JzLXRleHQgKVxuICogb2JzLXRleHQgICAgPSAleDgwLUZGXG4gKi9cbmNvbnN0IHF1b3RlZFBhaXJSRSA9IC9cXFxcKFtcXHZcXHUwMDIwLVxcdTAwZmZdKS9ndVxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCB0eXBlIGluIFJGQyA3MjMxIHNlYyAzLjEuMS4xXG4gKlxuICogbWVkaWEtdHlwZSA9IHR5cGUgXCIvXCIgc3VidHlwZVxuICogdHlwZSAgICAgICA9IHRva2VuXG4gKiBzdWJ0eXBlICAgID0gdG9rZW5cbiAqL1xuY29uc3QgbWVkaWFUeXBlUkUgPSAvXlshIyQlJicqKy5eXFx3fH4tXStcXC9bISMkJSYnKisuXlxcd3x+LV0rJC91XG5cbi8vIGRlZmF1bHQgQ29udGVudFR5cGUgdG8gcHJldmVudCByZXBlYXRlZCBvYmplY3QgY3JlYXRpb25cbmNvbnN0IGRlZmF1bHRDb250ZW50VHlwZSA9IHsgdHlwZTogJycsIHBhcmFtZXRlcnM6IG5ldyBOdWxsT2JqZWN0KCkgfVxuT2JqZWN0LmZyZWV6ZShkZWZhdWx0Q29udGVudFR5cGUucGFyYW1ldGVycylcbk9iamVjdC5mcmVlemUoZGVmYXVsdENvbnRlbnRUeXBlKVxuXG4vKipcbiAqIFBhcnNlIG1lZGlhIHR5cGUgdG8gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gaGVhZGVyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UgKGhlYWRlcikge1xuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBoZWFkZXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgbGV0IGluZGV4ID0gaGVhZGVyLmluZGV4T2YoJzsnKVxuICBjb25zdCB0eXBlID0gaW5kZXggIT09IC0xXG4gICAgPyBoZWFkZXIuc2xpY2UoMCwgaW5kZXgpLnRyaW0oKVxuICAgIDogaGVhZGVyLnRyaW0oKVxuXG4gIGlmIChtZWRpYVR5cGVSRS50ZXN0KHR5cGUpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgbWVkaWEgdHlwZScpXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgdHlwZTogdHlwZS50b0xvd2VyQ2FzZSgpLFxuICAgIHBhcmFtZXRlcnM6IG5ldyBOdWxsT2JqZWN0KClcbiAgfVxuXG4gIC8vIHBhcnNlIHBhcmFtZXRlcnNcbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGxldCBrZXlcbiAgbGV0IG1hdGNoXG4gIGxldCB2YWx1ZVxuXG4gIHBhcmFtUkUubGFzdEluZGV4ID0gaW5kZXhcblxuICB3aGlsZSAoKG1hdGNoID0gcGFyYW1SRS5leGVjKGhlYWRlcikpKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG5cbiAgICBpbmRleCArPSBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgdmFsdWUgPSBtYXRjaFsyXVxuXG4gICAgaWYgKHZhbHVlWzBdID09PSAnXCInKSB7XG4gICAgICAvLyByZW1vdmUgcXVvdGVzIGFuZCBlc2NhcGVzXG4gICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgIC5zbGljZSgxLCB2YWx1ZS5sZW5ndGggLSAxKVxuXG4gICAgICBxdW90ZWRQYWlyUkUudGVzdCh2YWx1ZSkgJiYgKHZhbHVlID0gdmFsdWUucmVwbGFjZShxdW90ZWRQYWlyUkUsICckMScpKVxuICAgIH1cblxuICAgIHJlc3VsdC5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZVxuICB9XG5cbiAgaWYgKGluZGV4ICE9PSBoZWFkZXIubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gc2FmZVBhcnNlIChoZWFkZXIpIHtcbiAgaWYgKHR5cGVvZiBoZWFkZXIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb250ZW50VHlwZVxuICB9XG5cbiAgbGV0IGluZGV4ID0gaGVhZGVyLmluZGV4T2YoJzsnKVxuICBjb25zdCB0eXBlID0gaW5kZXggIT09IC0xXG4gICAgPyBoZWFkZXIuc2xpY2UoMCwgaW5kZXgpLnRyaW0oKVxuICAgIDogaGVhZGVyLnRyaW0oKVxuXG4gIGlmIChtZWRpYVR5cGVSRS50ZXN0KHR5cGUpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBkZWZhdWx0Q29udGVudFR5cGVcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB0eXBlOiB0eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgcGFyYW1ldGVyczogbmV3IE51bGxPYmplY3QoKVxuICB9XG5cbiAgLy8gcGFyc2UgcGFyYW1ldGVyc1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgbGV0IGtleVxuICBsZXQgbWF0Y2hcbiAgbGV0IHZhbHVlXG5cbiAgcGFyYW1SRS5sYXN0SW5kZXggPSBpbmRleFxuXG4gIHdoaWxlICgobWF0Y2ggPSBwYXJhbVJFLmV4ZWMoaGVhZGVyKSkpIHtcbiAgICBpZiAobWF0Y2guaW5kZXggIT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gZGVmYXVsdENvbnRlbnRUeXBlXG4gICAgfVxuXG4gICAgaW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gICAga2V5ID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKVxuICAgIHZhbHVlID0gbWF0Y2hbMl1cblxuICAgIGlmICh2YWx1ZVswXSA9PT0gJ1wiJykge1xuICAgICAgLy8gcmVtb3ZlIHF1b3RlcyBhbmQgZXNjYXBlc1xuICAgICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgICAuc2xpY2UoMSwgdmFsdWUubGVuZ3RoIC0gMSlcblxuICAgICAgcXVvdGVkUGFpclJFLnRlc3QodmFsdWUpICYmICh2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocXVvdGVkUGFpclJFLCAnJDEnKSlcbiAgICB9XG5cbiAgICByZXN1bHQucGFyYW1ldGVyc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIGlmIChpbmRleCAhPT0gaGVhZGVyLmxlbmd0aCkge1xuICAgIHJldHVybiBkZWZhdWx0Q29udGVudFR5cGVcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IHsgcGFyc2UsIHNhZmVQYXJzZSB9XG5tb2R1bGUuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5tb2R1bGUuZXhwb3J0cy5zYWZlUGFyc2UgPSBzYWZlUGFyc2Vcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHRDb250ZW50VHlwZSA9IGRlZmF1bHRDb250ZW50VHlwZVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXh0cmFuZW91cy1jbGFzc1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Db2RlT3JOYW1lIHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgc3RyOiBzdHJpbmdcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZXM6IFVzZWROYW1lc1xuICBhYnN0cmFjdCB0b1N0cmluZygpOiBzdHJpbmdcbiAgYWJzdHJhY3QgZW1wdHlTdHIoKTogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgSURFTlRJRklFUiA9IC9eW2EteiRfXVthLXokXzAtOV0qJC9pXG5cbmV4cG9ydCBjbGFzcyBOYW1lIGV4dGVuZHMgX0NvZGVPck5hbWUge1xuICByZWFkb25seSBzdHI6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcihzOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpXG4gICAgaWYgKCFJREVOVElGSUVSLnRlc3QocykpIHRocm93IG5ldyBFcnJvcihcIkNvZGVHZW46IG5hbWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcIilcbiAgICB0aGlzLnN0ciA9IHNcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyXG4gIH1cblxuICBlbXB0eVN0cigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiB7W3RoaXMuc3RyXTogMX1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgX0NvZGUgZXh0ZW5kcyBfQ29kZU9yTmFtZSB7XG4gIHJlYWRvbmx5IF9pdGVtczogcmVhZG9ubHkgQ29kZUl0ZW1bXVxuICBwcml2YXRlIF9zdHI/OiBzdHJpbmdcbiAgcHJpdmF0ZSBfbmFtZXM/OiBVc2VkTmFtZXNcblxuICBjb25zdHJ1Y3Rvcihjb2RlOiBzdHJpbmcgfCByZWFkb25seSBDb2RlSXRlbVtdKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuX2l0ZW1zID0gdHlwZW9mIGNvZGUgPT09IFwic3RyaW5nXCIgPyBbY29kZV0gOiBjb2RlXG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0clxuICB9XG5cbiAgZW1wdHlTdHIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2l0ZW1zLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl9pdGVtc1swXVxuICAgIHJldHVybiBpdGVtID09PSBcIlwiIHx8IGl0ZW0gPT09ICdcIlwiJ1xuICB9XG5cbiAgZ2V0IHN0cigpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5fc3RyID8/PSB0aGlzLl9pdGVtcy5yZWR1Y2UoKHM6IHN0cmluZywgYzogQ29kZUl0ZW0pID0+IGAke3N9JHtjfWAsIFwiXCIpKVxuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuICh0aGlzLl9uYW1lcyA/Pz0gdGhpcy5faXRlbXMucmVkdWNlKChuYW1lczogVXNlZE5hbWVzLCBjKSA9PiB7XG4gICAgICBpZiAoYyBpbnN0YW5jZW9mIE5hbWUpIG5hbWVzW2Muc3RyXSA9IChuYW1lc1tjLnN0cl0gfHwgMCkgKyAxXG4gICAgICByZXR1cm4gbmFtZXNcbiAgICB9LCB7fSkpXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29kZUl0ZW0gPSBOYW1lIHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGxcblxuZXhwb3J0IHR5cGUgVXNlZE5hbWVzID0gUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgdW5kZWZpbmVkPlxuXG5leHBvcnQgdHlwZSBDb2RlID0gX0NvZGUgfCBOYW1lXG5cbmV4cG9ydCB0eXBlIFNhZmVFeHByID0gQ29kZSB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsXG5cbmV4cG9ydCBjb25zdCBuaWwgPSBuZXcgX0NvZGUoXCJcIilcblxudHlwZSBDb2RlQXJnID0gU2FmZUV4cHIgfCBzdHJpbmcgfCB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIF8oc3RyczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLmFyZ3M6IENvZGVBcmdbXSk6IF9Db2RlIHtcbiAgY29uc3QgY29kZTogQ29kZUl0ZW1bXSA9IFtzdHJzWzBdXVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgIGFkZENvZGVBcmcoY29kZSwgYXJnc1tpXSlcbiAgICBjb2RlLnB1c2goc3Ryc1srK2ldKVxuICB9XG4gIHJldHVybiBuZXcgX0NvZGUoY29kZSlcbn1cblxuY29uc3QgcGx1cyA9IG5ldyBfQ29kZShcIitcIilcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihzdHJzOiBUZW1wbGF0ZVN0cmluZ3NBcnJheSwgLi4uYXJnczogKENvZGVBcmcgfCBzdHJpbmdbXSlbXSk6IF9Db2RlIHtcbiAgY29uc3QgZXhwcjogQ29kZUl0ZW1bXSA9IFtzYWZlU3RyaW5naWZ5KHN0cnNbMF0pXVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgIGV4cHIucHVzaChwbHVzKVxuICAgIGFkZENvZGVBcmcoZXhwciwgYXJnc1tpXSlcbiAgICBleHByLnB1c2gocGx1cywgc2FmZVN0cmluZ2lmeShzdHJzWysraV0pKVxuICB9XG4gIG9wdGltaXplKGV4cHIpXG4gIHJldHVybiBuZXcgX0NvZGUoZXhwcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZENvZGVBcmcoY29kZTogQ29kZUl0ZW1bXSwgYXJnOiBDb2RlQXJnIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgaWYgKGFyZyBpbnN0YW5jZW9mIF9Db2RlKSBjb2RlLnB1c2goLi4uYXJnLl9pdGVtcylcbiAgZWxzZSBpZiAoYXJnIGluc3RhbmNlb2YgTmFtZSkgY29kZS5wdXNoKGFyZylcbiAgZWxzZSBjb2RlLnB1c2goaW50ZXJwb2xhdGUoYXJnKSlcbn1cblxuZnVuY3Rpb24gb3B0aW1pemUoZXhwcjogQ29kZUl0ZW1bXSk6IHZvaWQge1xuICBsZXQgaSA9IDFcbiAgd2hpbGUgKGkgPCBleHByLmxlbmd0aCAtIDEpIHtcbiAgICBpZiAoZXhwcltpXSA9PT0gcGx1cykge1xuICAgICAgY29uc3QgcmVzID0gbWVyZ2VFeHBySXRlbXMoZXhwcltpIC0gMV0sIGV4cHJbaSArIDFdKVxuICAgICAgaWYgKHJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4cHIuc3BsaWNlKGkgLSAxLCAzLCByZXMpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBleHByW2krK10gPSBcIitcIlxuICAgIH1cbiAgICBpKytcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUV4cHJJdGVtcyhhOiBDb2RlSXRlbSwgYjogQ29kZUl0ZW0pOiBDb2RlSXRlbSB8IHVuZGVmaW5lZCB7XG4gIGlmIChiID09PSAnXCJcIicpIHJldHVybiBhXG4gIGlmIChhID09PSAnXCJcIicpIHJldHVybiBiXG4gIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBOYW1lIHx8IGFbYS5sZW5ndGggLSAxXSAhPT0gJ1wiJykgcmV0dXJuXG4gICAgaWYgKHR5cGVvZiBiICE9IFwic3RyaW5nXCIpIHJldHVybiBgJHthLnNsaWNlKDAsIC0xKX0ke2J9XCJgXG4gICAgaWYgKGJbMF0gPT09ICdcIicpIHJldHVybiBhLnNsaWNlKDAsIC0xKSArIGIuc2xpY2UoMSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodHlwZW9mIGIgPT0gXCJzdHJpbmdcIiAmJiBiWzBdID09PSAnXCInICYmICEoYSBpbnN0YW5jZW9mIE5hbWUpKSByZXR1cm4gYFwiJHthfSR7Yi5zbGljZSgxKX1gXG4gIHJldHVyblxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyQ29uY2F0KGMxOiBDb2RlLCBjMjogQ29kZSk6IENvZGUge1xuICByZXR1cm4gYzIuZW1wdHlTdHIoKSA/IGMxIDogYzEuZW1wdHlTdHIoKSA/IGMyIDogc3RyYCR7YzF9JHtjMn1gXG59XG5cbi8vIFRPRE8gZG8gbm90IGFsbG93IGFycmF5cyBoZXJlXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZSh4Pzogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCk6IFNhZmVFeHByIHwgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHggPT0gXCJib29sZWFuXCIgfHwgeCA9PT0gbnVsbFxuICAgID8geFxuICAgIDogc2FmZVN0cmluZ2lmeShBcnJheS5pc0FycmF5KHgpID8geC5qb2luKFwiLFwiKSA6IHgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkoeDogdW5rbm93bik6IENvZGUge1xuICByZXR1cm4gbmV3IF9Db2RlKHNhZmVTdHJpbmdpZnkoeCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlU3RyaW5naWZ5KHg6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeClcbiAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCBcIlxcXFx1MjAyOFwiKVxuICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csIFwiXFxcXHUyMDI5XCIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0eShrZXk6IENvZGUgfCBzdHJpbmcgfCBudW1iZXIpOiBDb2RlIHtcbiAgcmV0dXJuIHR5cGVvZiBrZXkgPT0gXCJzdHJpbmdcIiAmJiBJREVOVElGSUVSLnRlc3Qoa2V5KSA/IG5ldyBfQ29kZShgLiR7a2V5fWApIDogX2BbJHtrZXl9XWBcbn1cblxuLy9Eb2VzIGJlc3QgZWZmb3J0IHRvIGZvcm1hdCB0aGUgbmFtZSBwcm9wZXJseVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVzbUV4cG9ydE5hbWUoa2V5OiBDb2RlIHwgc3RyaW5nIHwgbnVtYmVyKTogQ29kZSB7XG4gIGlmICh0eXBlb2Yga2V5ID09IFwic3RyaW5nXCIgJiYgSURFTlRJRklFUi50ZXN0KGtleSkpIHtcbiAgICByZXR1cm4gbmV3IF9Db2RlKGAke2tleX1gKVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogaW52YWxpZCBleHBvcnQgbmFtZTogJHtrZXl9LCB1c2UgZXhwbGljaXQgJGlkIG5hbWUgbWFwcGluZ2ApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdleHBDb2RlKHJ4OiBSZWdFeHApOiBDb2RlIHtcbiAgcmV0dXJuIG5ldyBfQ29kZShyeC50b1N0cmluZygpKVxufVxuIiwgImltcG9ydCB7XywgbmlsLCBDb2RlLCBOYW1lfSBmcm9tIFwiLi9jb2RlXCJcblxuaW50ZXJmYWNlIE5hbWVHcm91cCB7XG4gIHByZWZpeDogc3RyaW5nXG4gIGluZGV4OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYW1lVmFsdWUge1xuICByZWY6IFZhbHVlUmVmZXJlbmNlIC8vIHRoaXMgaXMgdGhlIHJlZmVyZW5jZSB0byBhbnkgdmFsdWUgdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gZnJvbSBnZW5lcmF0ZWQgY29kZSB2aWEgYGdsb2JhbHNgIHZhciBpbiB0aGUgY2xvc3VyZVxuICBrZXk/OiB1bmtub3duIC8vIGFueSBrZXkgdG8gaWRlbnRpZnkgYSBnbG9iYWwgdG8gYXZvaWQgZHVwbGljYXRlcywgaWYgbm90IHBhc3NlZCByZWYgaXMgdXNlZFxuICBjb2RlPzogQ29kZSAvLyB0aGlzIGlzIHRoZSBjb2RlIGNyZWF0aW5nIHRoZSB2YWx1ZSBuZWVkZWQgZm9yIHN0YW5kYWxvbmUgY29kZSB3aXRfb3V0IGNsb3N1cmUgLSBjYW4gYmUgYSBwcmltaXRpdmUgdmFsdWUsIGZ1bmN0aW9uIG9yIGltcG9ydCAoYHJlcXVpcmVgKVxufVxuXG5leHBvcnQgdHlwZSBWYWx1ZVJlZmVyZW5jZSA9IHVua25vd24gLy8gcG9zc2libHkgbWFrZSBDb2RlR2VuIHBhcmFtZXRlcml6ZWQgdHlwZSBvbiB0aGlzIHR5cGVcblxuY2xhc3MgVmFsdWVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgdmFsdWU/OiBOYW1lVmFsdWVcbiAgY29uc3RydWN0b3IobmFtZTogVmFsdWVTY29wZU5hbWUpIHtcbiAgICBzdXBlcihgQ29kZUdlbjogXCJjb2RlXCIgZm9yICR7bmFtZX0gbm90IGRlZmluZWRgKVxuICAgIHRoaXMudmFsdWUgPSBuYW1lLnZhbHVlXG4gIH1cbn1cblxuaW50ZXJmYWNlIFNjb3BlT3B0aW9ucyB7XG4gIHByZWZpeGVzPzogU2V0PHN0cmluZz5cbiAgcGFyZW50PzogU2NvcGVcbn1cblxuaW50ZXJmYWNlIFZhbHVlU2NvcGVPcHRpb25zIGV4dGVuZHMgU2NvcGVPcHRpb25zIHtcbiAgc2NvcGU6IFNjb3BlU3RvcmVcbiAgZXM1PzogYm9vbGVhblxuICBsaW5lcz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgU2NvcGVTdG9yZSA9IFJlY29yZDxzdHJpbmcsIFZhbHVlUmVmZXJlbmNlW10gfCB1bmRlZmluZWQ+XG5cbnR5cGUgU2NvcGVWYWx1ZXMgPSB7XG4gIFtQcmVmaXggaW4gc3RyaW5nXT86IE1hcDx1bmtub3duLCBWYWx1ZVNjb3BlTmFtZT5cbn1cblxuZXhwb3J0IHR5cGUgU2NvcGVWYWx1ZVNldHMgPSB7XG4gIFtQcmVmaXggaW4gc3RyaW5nXT86IFNldDxWYWx1ZVNjb3BlTmFtZT5cbn1cblxuZXhwb3J0IGVudW0gVXNlZFZhbHVlU3RhdGUge1xuICBTdGFydGVkLFxuICBDb21wbGV0ZWQsXG59XG5cbmV4cG9ydCB0eXBlIFVzZWRTY29wZVZhbHVlcyA9IHtcbiAgW1ByZWZpeCBpbiBzdHJpbmddPzogTWFwPFZhbHVlU2NvcGVOYW1lLCBVc2VkVmFsdWVTdGF0ZSB8IHVuZGVmaW5lZD5cbn1cblxuZXhwb3J0IGNvbnN0IHZhcktpbmRzID0ge1xuICBjb25zdDogbmV3IE5hbWUoXCJjb25zdFwiKSxcbiAgbGV0OiBuZXcgTmFtZShcImxldFwiKSxcbiAgdmFyOiBuZXcgTmFtZShcInZhclwiKSxcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9uYW1lczoge1tQcmVmaXggaW4gc3RyaW5nXT86IE5hbWVHcm91cH0gPSB7fVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3ByZWZpeGVzPzogU2V0PHN0cmluZz5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnQ/OiBTY29wZVxuXG4gIGNvbnN0cnVjdG9yKHtwcmVmaXhlcywgcGFyZW50fTogU2NvcGVPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9wcmVmaXhlcyA9IHByZWZpeGVzXG4gICAgdGhpcy5fcGFyZW50ID0gcGFyZW50XG4gIH1cblxuICB0b05hbWUobmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nKTogTmFtZSB7XG4gICAgcmV0dXJuIG5hbWVPclByZWZpeCBpbnN0YW5jZW9mIE5hbWUgPyBuYW1lT3JQcmVmaXggOiB0aGlzLm5hbWUobmFtZU9yUHJlZml4KVxuICB9XG5cbiAgbmFtZShwcmVmaXg6IHN0cmluZyk6IE5hbWUge1xuICAgIHJldHVybiBuZXcgTmFtZSh0aGlzLl9uZXdOYW1lKHByZWZpeCkpXG4gIH1cblxuICBwcm90ZWN0ZWQgX25ld05hbWUocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5nID0gdGhpcy5fbmFtZXNbcHJlZml4XSB8fCB0aGlzLl9uYW1lR3JvdXAocHJlZml4KVxuICAgIHJldHVybiBgJHtwcmVmaXh9JHtuZy5pbmRleCsrfWBcbiAgfVxuXG4gIHByaXZhdGUgX25hbWVHcm91cChwcmVmaXg6IHN0cmluZyk6IE5hbWVHcm91cCB7XG4gICAgaWYgKHRoaXMuX3BhcmVudD8uX3ByZWZpeGVzPy5oYXMocHJlZml4KSB8fCAodGhpcy5fcHJlZml4ZXMgJiYgIXRoaXMuX3ByZWZpeGVzLmhhcyhwcmVmaXgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBwcmVmaXggXCIke3ByZWZpeH1cIiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHNjb3BlYClcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLl9uYW1lc1twcmVmaXhdID0ge3ByZWZpeCwgaW5kZXg6IDB9KVxuICB9XG59XG5cbmludGVyZmFjZSBTY29wZVBhdGgge1xuICBwcm9wZXJ0eTogc3RyaW5nXG4gIGl0ZW1JbmRleDogbnVtYmVyXG59XG5cbmV4cG9ydCBjbGFzcyBWYWx1ZVNjb3BlTmFtZSBleHRlbmRzIE5hbWUge1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZ1xuICB2YWx1ZT86IE5hbWVWYWx1ZVxuICBzY29wZVBhdGg/OiBDb2RlXG5cbiAgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG5hbWVTdHI6IHN0cmluZykge1xuICAgIHN1cGVyKG5hbWVTdHIpXG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXhcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBOYW1lVmFsdWUsIHtwcm9wZXJ0eSwgaXRlbUluZGV4fTogU2NvcGVQYXRoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG4gICAgdGhpcy5zY29wZVBhdGggPSBfYC4ke25ldyBOYW1lKHByb3BlcnR5KX1bJHtpdGVtSW5kZXh9XWBcbiAgfVxufVxuXG5pbnRlcmZhY2UgVlNPcHRpb25zIGV4dGVuZHMgVmFsdWVTY29wZU9wdGlvbnMge1xuICBfbjogQ29kZVxufVxuXG5jb25zdCBsaW5lID0gX2BcXG5gXG5cbmV4cG9ydCBjbGFzcyBWYWx1ZVNjb3BlIGV4dGVuZHMgU2NvcGUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3ZhbHVlczogU2NvcGVWYWx1ZXMgPSB7fVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3Njb3BlOiBTY29wZVN0b3JlXG4gIHJlYWRvbmx5IG9wdHM6IFZTT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IFZhbHVlU2NvcGVPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0cylcbiAgICB0aGlzLl9zY29wZSA9IG9wdHMuc2NvcGVcbiAgICB0aGlzLm9wdHMgPSB7Li4ub3B0cywgX246IG9wdHMubGluZXMgPyBsaW5lIDogbmlsfVxuICB9XG5cbiAgZ2V0KCk6IFNjb3BlU3RvcmUge1xuICAgIHJldHVybiB0aGlzLl9zY29wZVxuICB9XG5cbiAgbmFtZShwcmVmaXg6IHN0cmluZyk6IFZhbHVlU2NvcGVOYW1lIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlU2NvcGVOYW1lKHByZWZpeCwgdGhpcy5fbmV3TmFtZShwcmVmaXgpKVxuICB9XG5cbiAgdmFsdWUobmFtZU9yUHJlZml4OiBWYWx1ZVNjb3BlTmFtZSB8IHN0cmluZywgdmFsdWU6IE5hbWVWYWx1ZSk6IFZhbHVlU2NvcGVOYW1lIHtcbiAgICBpZiAodmFsdWUucmVmID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihcIkNvZGVHZW46IHJlZiBtdXN0IGJlIHBhc3NlZCBpbiB2YWx1ZVwiKVxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnRvTmFtZShuYW1lT3JQcmVmaXgpIGFzIFZhbHVlU2NvcGVOYW1lXG4gICAgY29uc3Qge3ByZWZpeH0gPSBuYW1lXG4gICAgY29uc3QgdmFsdWVLZXkgPSB2YWx1ZS5rZXkgPz8gdmFsdWUucmVmXG4gICAgbGV0IHZzID0gdGhpcy5fdmFsdWVzW3ByZWZpeF1cbiAgICBpZiAodnMpIHtcbiAgICAgIGNvbnN0IF9uYW1lID0gdnMuZ2V0KHZhbHVlS2V5KVxuICAgICAgaWYgKF9uYW1lKSByZXR1cm4gX25hbWVcbiAgICB9IGVsc2Uge1xuICAgICAgdnMgPSB0aGlzLl92YWx1ZXNbcHJlZml4XSA9IG5ldyBNYXAoKVxuICAgIH1cbiAgICB2cy5zZXQodmFsdWVLZXksIG5hbWUpXG5cbiAgICBjb25zdCBzID0gdGhpcy5fc2NvcGVbcHJlZml4XSB8fCAodGhpcy5fc2NvcGVbcHJlZml4XSA9IFtdKVxuICAgIGNvbnN0IGl0ZW1JbmRleCA9IHMubGVuZ3RoXG4gICAgc1tpdGVtSW5kZXhdID0gdmFsdWUucmVmXG4gICAgbmFtZS5zZXRWYWx1ZSh2YWx1ZSwge3Byb3BlcnR5OiBwcmVmaXgsIGl0ZW1JbmRleH0pXG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIGdldFZhbHVlKHByZWZpeDogc3RyaW5nLCBrZXlPclJlZjogdW5rbm93bik6IFZhbHVlU2NvcGVOYW1lIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2cyA9IHRoaXMuX3ZhbHVlc1twcmVmaXhdXG4gICAgaWYgKCF2cykgcmV0dXJuXG4gICAgcmV0dXJuIHZzLmdldChrZXlPclJlZilcbiAgfVxuXG4gIHNjb3BlUmVmcyhzY29wZU5hbWU6IE5hbWUsIHZhbHVlczogU2NvcGVWYWx1ZXMgfCBTY29wZVZhbHVlU2V0cyA9IHRoaXMuX3ZhbHVlcyk6IENvZGUge1xuICAgIHJldHVybiB0aGlzLl9yZWR1Y2VWYWx1ZXModmFsdWVzLCAobmFtZTogVmFsdWVTY29wZU5hbWUpID0+IHtcbiAgICAgIGlmIChuYW1lLnNjb3BlUGF0aCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IG5hbWUgXCIke25hbWV9XCIgaGFzIG5vIHZhbHVlYClcbiAgICAgIHJldHVybiBfYCR7c2NvcGVOYW1lfSR7bmFtZS5zY29wZVBhdGh9YFxuICAgIH0pXG4gIH1cblxuICBzY29wZUNvZGUoXG4gICAgdmFsdWVzOiBTY29wZVZhbHVlcyB8IFNjb3BlVmFsdWVTZXRzID0gdGhpcy5fdmFsdWVzLFxuICAgIHVzZWRWYWx1ZXM/OiBVc2VkU2NvcGVWYWx1ZXMsXG4gICAgZ2V0Q29kZT86IChuOiBWYWx1ZVNjb3BlTmFtZSkgPT4gQ29kZSB8IHVuZGVmaW5lZFxuICApOiBDb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fcmVkdWNlVmFsdWVzKFxuICAgICAgdmFsdWVzLFxuICAgICAgKG5hbWU6IFZhbHVlU2NvcGVOYW1lKSA9PiB7XG4gICAgICAgIGlmIChuYW1lLnZhbHVlID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogbmFtZSBcIiR7bmFtZX1cIiBoYXMgbm8gdmFsdWVgKVxuICAgICAgICByZXR1cm4gbmFtZS52YWx1ZS5jb2RlXG4gICAgICB9LFxuICAgICAgdXNlZFZhbHVlcyxcbiAgICAgIGdldENvZGVcbiAgICApXG4gIH1cblxuICBwcml2YXRlIF9yZWR1Y2VWYWx1ZXMoXG4gICAgdmFsdWVzOiBTY29wZVZhbHVlcyB8IFNjb3BlVmFsdWVTZXRzLFxuICAgIHZhbHVlQ29kZTogKG46IFZhbHVlU2NvcGVOYW1lKSA9PiBDb2RlIHwgdW5kZWZpbmVkLFxuICAgIHVzZWRWYWx1ZXM6IFVzZWRTY29wZVZhbHVlcyA9IHt9LFxuICAgIGdldENvZGU/OiAobjogVmFsdWVTY29wZU5hbWUpID0+IENvZGUgfCB1bmRlZmluZWRcbiAgKTogQ29kZSB7XG4gICAgbGV0IGNvZGU6IENvZGUgPSBuaWxcbiAgICBmb3IgKGNvbnN0IHByZWZpeCBpbiB2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IHZzID0gdmFsdWVzW3ByZWZpeF1cbiAgICAgIGlmICghdnMpIGNvbnRpbnVlXG4gICAgICBjb25zdCBuYW1lU2V0ID0gKHVzZWRWYWx1ZXNbcHJlZml4XSA9IHVzZWRWYWx1ZXNbcHJlZml4XSB8fCBuZXcgTWFwKCkpXG4gICAgICB2cy5mb3JFYWNoKChuYW1lOiBWYWx1ZVNjb3BlTmFtZSkgPT4ge1xuICAgICAgICBpZiAobmFtZVNldC5oYXMobmFtZSkpIHJldHVyblxuICAgICAgICBuYW1lU2V0LnNldChuYW1lLCBVc2VkVmFsdWVTdGF0ZS5TdGFydGVkKVxuICAgICAgICBsZXQgYyA9IHZhbHVlQ29kZShuYW1lKVxuICAgICAgICBpZiAoYykge1xuICAgICAgICAgIGNvbnN0IGRlZiA9IHRoaXMub3B0cy5lczUgPyB2YXJLaW5kcy52YXIgOiB2YXJLaW5kcy5jb25zdFxuICAgICAgICAgIGNvZGUgPSBfYCR7Y29kZX0ke2RlZn0gJHtuYW1lfSA9ICR7Y307JHt0aGlzLm9wdHMuX259YFxuICAgICAgICB9IGVsc2UgaWYgKChjID0gZ2V0Q29kZT8uKG5hbWUpKSkge1xuICAgICAgICAgIGNvZGUgPSBfYCR7Y29kZX0ke2N9JHt0aGlzLm9wdHMuX259YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKG5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgbmFtZVNldC5zZXQobmFtZSwgVXNlZFZhbHVlU3RhdGUuQ29tcGxldGVkKVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtTY29wZVZhbHVlU2V0cywgTmFtZVZhbHVlLCBWYWx1ZVNjb3BlLCBWYWx1ZVNjb3BlTmFtZX0gZnJvbSBcIi4vc2NvcGVcIlxuaW1wb3J0IHtfLCBuaWwsIF9Db2RlLCBDb2RlLCBOYW1lLCBVc2VkTmFtZXMsIENvZGVJdGVtLCBhZGRDb2RlQXJnLCBfQ29kZU9yTmFtZX0gZnJvbSBcIi4vY29kZVwiXG5pbXBvcnQge1Njb3BlLCB2YXJLaW5kc30gZnJvbSBcIi4vc2NvcGVcIlxuXG5leHBvcnQge18sIHN0ciwgc3RyQ29uY2F0LCBuaWwsIGdldFByb3BlcnR5LCBzdHJpbmdpZnksIHJlZ2V4cENvZGUsIE5hbWUsIENvZGV9IGZyb20gXCIuL2NvZGVcIlxuZXhwb3J0IHtTY29wZSwgU2NvcGVTdG9yZSwgVmFsdWVTY29wZSwgVmFsdWVTY29wZU5hbWUsIFNjb3BlVmFsdWVTZXRzLCB2YXJLaW5kc30gZnJvbSBcIi4vc2NvcGVcIlxuXG4vLyB0eXBlIGZvciBleHByZXNzaW9ucyB0aGF0IGNhbiBiZSBzYWZlbHkgaW5zZXJ0ZWQgaW4gY29kZSB3aXRob3V0IHF1b3Rlc1xuZXhwb3J0IHR5cGUgU2FmZUV4cHIgPSBDb2RlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGxcblxuLy8gdHlwZSB0aGF0IGlzIGVpdGhlciBDb2RlIG9mIGZ1bmN0aW9uIHRoYXQgYWRkcyBjb2RlIHRvIENvZGVHZW4gaW5zdGFuY2UgdXNpbmcgaXRzIG1ldGhvZHNcbmV4cG9ydCB0eXBlIEJsb2NrID0gQ29kZSB8ICgoKSA9PiB2b2lkKVxuXG5leHBvcnQgY29uc3Qgb3BlcmF0b3JzID0ge1xuICBHVDogbmV3IF9Db2RlKFwiPlwiKSxcbiAgR1RFOiBuZXcgX0NvZGUoXCI+PVwiKSxcbiAgTFQ6IG5ldyBfQ29kZShcIjxcIiksXG4gIExURTogbmV3IF9Db2RlKFwiPD1cIiksXG4gIEVROiBuZXcgX0NvZGUoXCI9PT1cIiksXG4gIE5FUTogbmV3IF9Db2RlKFwiIT09XCIpLFxuICBOT1Q6IG5ldyBfQ29kZShcIiFcIiksXG4gIE9SOiBuZXcgX0NvZGUoXCJ8fFwiKSxcbiAgQU5EOiBuZXcgX0NvZGUoXCImJlwiKSxcbiAgQUREOiBuZXcgX0NvZGUoXCIrXCIpLFxufVxuXG5hYnN0cmFjdCBjbGFzcyBOb2RlIHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZXM6IFVzZWROYW1lc1xuXG4gIG9wdGltaXplTm9kZXMoKTogdGhpcyB8IENoaWxkTm9kZSB8IENoaWxkTm9kZVtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhfbmFtZXM6IFVzZWROYW1lcywgX2NvbnN0YW50czogQ29uc3RhbnRzKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAvLyAgIHJldHVybiAxXG4gIC8vIH1cbn1cblxuY2xhc3MgRGVmIGV4dGVuZHMgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFyS2luZDogTmFtZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IE5hbWUsXG4gICAgcHJpdmF0ZSByaHM/OiBTYWZlRXhwclxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIoe2VzNSwgX259OiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhcktpbmQgPSBlczUgPyB2YXJLaW5kcy52YXIgOiB0aGlzLnZhcktpbmRcbiAgICBjb25zdCByaHMgPSB0aGlzLnJocyA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgPSAke3RoaXMucmhzfWBcbiAgICByZXR1cm4gYCR7dmFyS2luZH0gJHt0aGlzLm5hbWV9JHtyaHN9O2AgKyBfblxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIGlmICghbmFtZXNbdGhpcy5uYW1lLnN0cl0pIHJldHVyblxuICAgIGlmICh0aGlzLnJocykgdGhpcy5yaHMgPSBvcHRpbWl6ZUV4cHIodGhpcy5yaHMsIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiB0aGlzLnJocyBpbnN0YW5jZW9mIF9Db2RlT3JOYW1lID8gdGhpcy5yaHMubmFtZXMgOiB7fVxuICB9XG59XG5cbmNsYXNzIEFzc2lnbiBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBsaHM6IENvZGUsXG4gICAgcHVibGljIHJoczogU2FmZUV4cHIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlRWZmZWN0cz86IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKHtfbn06IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGhzfSA9ICR7dGhpcy5yaHN9O2AgKyBfblxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmxocyBpbnN0YW5jZW9mIE5hbWUgJiYgIW5hbWVzW3RoaXMubGhzLnN0cl0gJiYgIXRoaXMuc2lkZUVmZmVjdHMpIHJldHVyblxuICAgIHRoaXMucmhzID0gb3B0aW1pemVFeHByKHRoaXMucmhzLCBuYW1lcywgY29uc3RhbnRzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMubGhzIGluc3RhbmNlb2YgTmFtZSA/IHt9IDogey4uLnRoaXMubGhzLm5hbWVzfVxuICAgIHJldHVybiBhZGRFeHByTmFtZXMobmFtZXMsIHRoaXMucmhzKVxuICB9XG59XG5cbmNsYXNzIEFzc2lnbk9wIGV4dGVuZHMgQXNzaWduIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbGhzOiBDb2RlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3A6IENvZGUsXG4gICAgcmhzOiBTYWZlRXhwcixcbiAgICBzaWRlRWZmZWN0cz86IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIobGhzLCByaHMsIHNpZGVFZmZlY3RzKVxuICB9XG5cbiAgcmVuZGVyKHtfbn06IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGhzfSAke3RoaXMub3B9PSAke3RoaXMucmhzfTtgICsgX25cbiAgfVxufVxuXG5jbGFzcyBMYWJlbCBleHRlbmRzIE5vZGUge1xuICByZWFkb25seSBuYW1lczogVXNlZE5hbWVzID0ge31cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbGFiZWw6IE5hbWUpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIoe19ufTogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH06YCArIF9uXG4gIH1cbn1cblxuY2xhc3MgQnJlYWsgZXh0ZW5kcyBOb2RlIHtcbiAgcmVhZG9ubHkgbmFtZXM6IFVzZWROYW1lcyA9IHt9XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGxhYmVsPzogQ29kZSkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcih7X259OiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5sYWJlbCA/IGAgJHt0aGlzLmxhYmVsfWAgOiBcIlwiXG4gICAgcmV0dXJuIGBicmVhayR7bGFiZWx9O2AgKyBfblxuICB9XG59XG5cbmNsYXNzIFRocm93IGV4dGVuZHMgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVycm9yOiBDb2RlKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKHtfbn06IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB0aHJvdyAke3RoaXMuZXJyb3J9O2AgKyBfblxuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IFVzZWROYW1lcyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3IubmFtZXNcbiAgfVxufVxuXG5jbGFzcyBBbnlDb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29kZTogU2FmZUV4cHIpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIoe19ufTogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb2RlfTtgICsgX25cbiAgfVxuXG4gIG9wdGltaXplTm9kZXMoKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29kZX1gID8gdGhpcyA6IHVuZGVmaW5lZFxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMge1xuICAgIHRoaXMuY29kZSA9IG9wdGltaXplRXhwcih0aGlzLmNvZGUsIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiB0aGlzLmNvZGUgaW5zdGFuY2VvZiBfQ29kZU9yTmFtZSA/IHRoaXMuY29kZS5uYW1lcyA6IHt9XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgUGFyZW50Tm9kZSBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBub2RlczogQ2hpbGROb2RlW10gPSBbXSkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLnJlZHVjZSgoY29kZSwgbikgPT4gY29kZSArIG4ucmVuZGVyKG9wdHMpLCBcIlwiKVxuICB9XG5cbiAgb3B0aW1pemVOb2RlcygpOiB0aGlzIHwgQ2hpbGROb2RlIHwgQ2hpbGROb2RlW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtub2Rlc30gPSB0aGlzXG4gICAgbGV0IGkgPSBub2Rlcy5sZW5ndGhcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBuID0gbm9kZXNbaV0ub3B0aW1pemVOb2RlcygpXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShuKSkgbm9kZXMuc3BsaWNlKGksIDEsIC4uLm4pXG4gICAgICBlbHNlIGlmIChuKSBub2Rlc1tpXSA9IG5cbiAgICAgIGVsc2Ugbm9kZXMuc3BsaWNlKGksIDEpXG4gICAgfVxuICAgIHJldHVybiBub2Rlcy5sZW5ndGggPiAwID8gdGhpcyA6IHVuZGVmaW5lZFxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtub2Rlc30gPSB0aGlzXG4gICAgbGV0IGkgPSBub2Rlcy5sZW5ndGhcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzIGltcHJvdmVzIDEtcGFzcyBvcHRpbWl6YXRpb25cbiAgICAgIGNvbnN0IG4gPSBub2Rlc1tpXVxuICAgICAgaWYgKG4ub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKSkgY29udGludWVcbiAgICAgIHN1YnRyYWN0TmFtZXMobmFtZXMsIG4ubmFtZXMpXG4gICAgICBub2Rlcy5zcGxpY2UoaSwgMSlcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzLmxlbmd0aCA+IDAgPyB0aGlzIDogdW5kZWZpbmVkXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5yZWR1Y2UoKG5hbWVzOiBVc2VkTmFtZXMsIG4pID0+IGFkZE5hbWVzKG5hbWVzLCBuLm5hbWVzKSwge30pXG4gIH1cblxuICAvLyBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgLy8gICByZXR1cm4gdGhpcy5ub2Rlcy5yZWR1Y2UoKGMsIG4pID0+IGMgKyBuLmNvdW50LCAxKVxuICAvLyB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEJsb2NrTm9kZSBleHRlbmRzIFBhcmVudE5vZGUge1xuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJ7XCIgKyBvcHRzLl9uICsgc3VwZXIucmVuZGVyKG9wdHMpICsgXCJ9XCIgKyBvcHRzLl9uXG4gIH1cbn1cblxuY2xhc3MgUm9vdCBleHRlbmRzIFBhcmVudE5vZGUge31cblxuY2xhc3MgRWxzZSBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJlbHNlXCJcbn1cblxuY2xhc3MgSWYgZXh0ZW5kcyBCbG9ja05vZGUge1xuICBzdGF0aWMgcmVhZG9ubHkga2luZCA9IFwiaWZcIlxuICBlbHNlPzogSWYgfCBFbHNlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZGl0aW9uOiBDb2RlIHwgYm9vbGVhbixcbiAgICBub2Rlcz86IENoaWxkTm9kZVtdXG4gICkge1xuICAgIHN1cGVyKG5vZGVzKVxuICB9XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgbGV0IGNvZGUgPSBgaWYoJHt0aGlzLmNvbmRpdGlvbn0pYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICAgIGlmICh0aGlzLmVsc2UpIGNvZGUgKz0gXCJlbHNlIFwiICsgdGhpcy5lbHNlLnJlbmRlcihvcHRzKVxuICAgIHJldHVybiBjb2RlXG4gIH1cblxuICBvcHRpbWl6ZU5vZGVzKCk6IElmIHwgQ2hpbGROb2RlW10gfCB1bmRlZmluZWQge1xuICAgIHN1cGVyLm9wdGltaXplTm9kZXMoKVxuICAgIGNvbnN0IGNvbmQgPSB0aGlzLmNvbmRpdGlvblxuICAgIGlmIChjb25kID09PSB0cnVlKSByZXR1cm4gdGhpcy5ub2RlcyAvLyBlbHNlIGlzIGlnbm9yZWQgaGVyZVxuICAgIGxldCBlID0gdGhpcy5lbHNlXG4gICAgaWYgKGUpIHtcbiAgICAgIGNvbnN0IG5zID0gZS5vcHRpbWl6ZU5vZGVzKClcbiAgICAgIGUgPSB0aGlzLmVsc2UgPSBBcnJheS5pc0FycmF5KG5zKSA/IG5ldyBFbHNlKG5zKSA6IChucyBhcyBFbHNlIHwgdW5kZWZpbmVkKVxuICAgIH1cbiAgICBpZiAoZSkge1xuICAgICAgaWYgKGNvbmQgPT09IGZhbHNlKSByZXR1cm4gZSBpbnN0YW5jZW9mIElmID8gZSA6IGUubm9kZXNcbiAgICAgIGlmICh0aGlzLm5vZGVzLmxlbmd0aCkgcmV0dXJuIHRoaXNcbiAgICAgIHJldHVybiBuZXcgSWYobm90KGNvbmQpLCBlIGluc3RhbmNlb2YgSWYgPyBbZV0gOiBlLm5vZGVzKVxuICAgIH1cbiAgICBpZiAoY29uZCA9PT0gZmFsc2UgfHwgIXRoaXMubm9kZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIG9wdGltaXplTmFtZXMobmFtZXM6IFVzZWROYW1lcywgY29uc3RhbnRzOiBDb25zdGFudHMpOiB0aGlzIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLmVsc2UgPSB0aGlzLmVsc2U/Lm9wdGltaXplTmFtZXMobmFtZXMsIGNvbnN0YW50cylcbiAgICBpZiAoIShzdXBlci5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpIHx8IHRoaXMuZWxzZSkpIHJldHVyblxuICAgIHRoaXMuY29uZGl0aW9uID0gb3B0aW1pemVFeHByKHRoaXMuY29uZGl0aW9uLCBuYW1lcywgY29uc3RhbnRzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICBjb25zdCBuYW1lcyA9IHN1cGVyLm5hbWVzXG4gICAgYWRkRXhwck5hbWVzKG5hbWVzLCB0aGlzLmNvbmRpdGlvbilcbiAgICBpZiAodGhpcy5lbHNlKSBhZGROYW1lcyhuYW1lcywgdGhpcy5lbHNlLm5hbWVzKVxuICAgIHJldHVybiBuYW1lc1xuICB9XG5cbiAgLy8gZ2V0IGNvdW50KCk6IG51bWJlciB7XG4gIC8vICAgcmV0dXJuIHN1cGVyLmNvdW50ICsgKHRoaXMuZWxzZT8uY291bnQgfHwgMClcbiAgLy8gfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBGb3IgZXh0ZW5kcyBCbG9ja05vZGUge1xuICBzdGF0aWMgcmVhZG9ubHkga2luZCA9IFwiZm9yXCJcbn1cblxuY2xhc3MgRm9yTG9vcCBleHRlbmRzIEZvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaXRlcmF0aW9uOiBDb2RlKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBmb3IoJHt0aGlzLml0ZXJhdGlvbn0pYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIGlmICghc3VwZXIub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKSkgcmV0dXJuXG4gICAgdGhpcy5pdGVyYXRpb24gPSBvcHRpbWl6ZUV4cHIodGhpcy5pdGVyYXRpb24sIG5hbWVzLCBjb25zdGFudHMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIHJldHVybiBhZGROYW1lcyhzdXBlci5uYW1lcywgdGhpcy5pdGVyYXRpb24ubmFtZXMpXG4gIH1cbn1cblxuY2xhc3MgRm9yUmFuZ2UgZXh0ZW5kcyBGb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhcktpbmQ6IE5hbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBOYW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZnJvbTogU2FmZUV4cHIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0bzogU2FmZUV4cHJcbiAgKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFyS2luZCA9IG9wdHMuZXM1ID8gdmFyS2luZHMudmFyIDogdGhpcy52YXJLaW5kXG4gICAgY29uc3Qge25hbWUsIGZyb20sIHRvfSA9IHRoaXNcbiAgICByZXR1cm4gYGZvcigke3ZhcktpbmR9ICR7bmFtZX09JHtmcm9tfTsgJHtuYW1lfTwke3RvfTsgJHtuYW1lfSsrKWAgKyBzdXBlci5yZW5kZXIob3B0cylcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBVc2VkTmFtZXMge1xuICAgIGNvbnN0IG5hbWVzID0gYWRkRXhwck5hbWVzKHN1cGVyLm5hbWVzLCB0aGlzLmZyb20pXG4gICAgcmV0dXJuIGFkZEV4cHJOYW1lcyhuYW1lcywgdGhpcy50bylcbiAgfVxufVxuXG5jbGFzcyBGb3JJdGVyIGV4dGVuZHMgRm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb29wOiBcIm9mXCIgfCBcImluXCIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YXJLaW5kOiBOYW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogTmFtZSxcbiAgICBwcml2YXRlIGl0ZXJhYmxlOiBDb2RlXG4gICkge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZm9yKCR7dGhpcy52YXJLaW5kfSAke3RoaXMubmFtZX0gJHt0aGlzLmxvb3B9ICR7dGhpcy5pdGVyYWJsZX0pYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG5cbiAgb3B0aW1pemVOYW1lcyhuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IHRoaXMgfCB1bmRlZmluZWQge1xuICAgIGlmICghc3VwZXIub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKSkgcmV0dXJuXG4gICAgdGhpcy5pdGVyYWJsZSA9IG9wdGltaXplRXhwcih0aGlzLml0ZXJhYmxlLCBuYW1lcywgY29uc3RhbnRzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICByZXR1cm4gYWRkTmFtZXMoc3VwZXIubmFtZXMsIHRoaXMuaXRlcmFibGUubmFtZXMpXG4gIH1cbn1cblxuY2xhc3MgRnVuYyBleHRlbmRzIEJsb2NrTm9kZSB7XG4gIHN0YXRpYyByZWFkb25seSBraW5kID0gXCJmdW5jXCJcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IE5hbWUsXG4gICAgcHVibGljIGFyZ3M6IENvZGUsXG4gICAgcHVibGljIGFzeW5jPzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBfYXN5bmMgPSB0aGlzLmFzeW5jID8gXCJhc3luYyBcIiA6IFwiXCJcbiAgICByZXR1cm4gYCR7X2FzeW5jfWZ1bmN0aW9uICR7dGhpcy5uYW1lfSgke3RoaXMuYXJnc30pYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG59XG5cbmNsYXNzIFJldHVybiBleHRlbmRzIFBhcmVudE5vZGUge1xuICBzdGF0aWMgcmVhZG9ubHkga2luZCA9IFwicmV0dXJuXCJcblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJyZXR1cm4gXCIgKyBzdXBlci5yZW5kZXIob3B0cylcbiAgfVxufVxuXG5jbGFzcyBUcnkgZXh0ZW5kcyBCbG9ja05vZGUge1xuICBjYXRjaD86IENhdGNoXG4gIGZpbmFsbHk/OiBGaW5hbGx5XG5cbiAgcmVuZGVyKG9wdHM6IENHT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgbGV0IGNvZGUgPSBcInRyeVwiICsgc3VwZXIucmVuZGVyKG9wdHMpXG4gICAgaWYgKHRoaXMuY2F0Y2gpIGNvZGUgKz0gdGhpcy5jYXRjaC5yZW5kZXIob3B0cylcbiAgICBpZiAodGhpcy5maW5hbGx5KSBjb2RlICs9IHRoaXMuZmluYWxseS5yZW5kZXIob3B0cylcbiAgICByZXR1cm4gY29kZVxuICB9XG5cbiAgb3B0aW1pemVOb2RlcygpOiB0aGlzIHtcbiAgICBzdXBlci5vcHRpbWl6ZU5vZGVzKClcbiAgICB0aGlzLmNhdGNoPy5vcHRpbWl6ZU5vZGVzKCkgYXMgQ2F0Y2ggfCB1bmRlZmluZWRcbiAgICB0aGlzLmZpbmFsbHk/Lm9wdGltaXplTm9kZXMoKSBhcyBGaW5hbGx5IHwgdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIG9wdGltaXplTmFtZXMobmFtZXM6IFVzZWROYW1lcywgY29uc3RhbnRzOiBDb25zdGFudHMpOiB0aGlzIHtcbiAgICBzdXBlci5vcHRpbWl6ZU5hbWVzKG5hbWVzLCBjb25zdGFudHMpXG4gICAgdGhpcy5jYXRjaD8ub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKVxuICAgIHRoaXMuZmluYWxseT8ub3B0aW1pemVOYW1lcyhuYW1lcywgY29uc3RhbnRzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXQgbmFtZXMoKTogVXNlZE5hbWVzIHtcbiAgICBjb25zdCBuYW1lcyA9IHN1cGVyLm5hbWVzXG4gICAgaWYgKHRoaXMuY2F0Y2gpIGFkZE5hbWVzKG5hbWVzLCB0aGlzLmNhdGNoLm5hbWVzKVxuICAgIGlmICh0aGlzLmZpbmFsbHkpIGFkZE5hbWVzKG5hbWVzLCB0aGlzLmZpbmFsbHkubmFtZXMpXG4gICAgcmV0dXJuIG5hbWVzXG4gIH1cblxuICAvLyBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgLy8gICByZXR1cm4gc3VwZXIuY291bnQgKyAodGhpcy5jYXRjaD8uY291bnQgfHwgMCkgKyAodGhpcy5maW5hbGx5Py5jb3VudCB8fCAwKVxuICAvLyB9XG59XG5cbmNsYXNzIENhdGNoIGV4dGVuZHMgQmxvY2tOb2RlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGtpbmQgPSBcImNhdGNoXCJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZXJyb3I6IE5hbWUpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZW5kZXIob3B0czogQ0dPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGNhdGNoKCR7dGhpcy5lcnJvcn0pYCArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG59XG5cbmNsYXNzIEZpbmFsbHkgZXh0ZW5kcyBCbG9ja05vZGUge1xuICBzdGF0aWMgcmVhZG9ubHkga2luZCA9IFwiZmluYWxseVwiXG4gIHJlbmRlcihvcHRzOiBDR09wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBcImZpbmFsbHlcIiArIHN1cGVyLnJlbmRlcihvcHRzKVxuICB9XG59XG5cbnR5cGUgU3RhcnRCbG9ja05vZGUgPSBJZiB8IEZvciB8IEZ1bmMgfCBSZXR1cm4gfCBUcnlcblxudHlwZSBMZWFmTm9kZSA9IERlZiB8IEFzc2lnbiB8IExhYmVsIHwgQnJlYWsgfCBUaHJvdyB8IEFueUNvZGVcblxudHlwZSBDaGlsZE5vZGUgPSBTdGFydEJsb2NrTm9kZSB8IExlYWZOb2RlXG5cbnR5cGUgRW5kQmxvY2tOb2RlVHlwZSA9XG4gIHwgdHlwZW9mIElmXG4gIHwgdHlwZW9mIEVsc2VcbiAgfCB0eXBlb2YgRm9yXG4gIHwgdHlwZW9mIEZ1bmNcbiAgfCB0eXBlb2YgUmV0dXJuXG4gIHwgdHlwZW9mIENhdGNoXG4gIHwgdHlwZW9mIEZpbmFsbHlcblxudHlwZSBDb25zdGFudHMgPSBSZWNvcmQ8c3RyaW5nLCBTYWZlRXhwciB8IHVuZGVmaW5lZD5cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlR2VuT3B0aW9ucyB7XG4gIGVzNT86IGJvb2xlYW5cbiAgbGluZXM/OiBib29sZWFuXG4gIG93blByb3BlcnRpZXM/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBDR09wdGlvbnMgZXh0ZW5kcyBDb2RlR2VuT3B0aW9ucyB7XG4gIF9uOiBcIlxcblwiIHwgXCJcIlxufVxuXG5leHBvcnQgY2xhc3MgQ29kZUdlbiB7XG4gIHJlYWRvbmx5IF9zY29wZTogU2NvcGVcbiAgcmVhZG9ubHkgX2V4dFNjb3BlOiBWYWx1ZVNjb3BlXG4gIHJlYWRvbmx5IF92YWx1ZXM6IFNjb3BlVmFsdWVTZXRzID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSBfbm9kZXM6IFBhcmVudE5vZGVbXVxuICBwcml2YXRlIHJlYWRvbmx5IF9ibG9ja1N0YXJ0czogbnVtYmVyW10gPSBbXVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25zdGFudHM6IENvbnN0YW50cyA9IHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0czogQ0dPcHRpb25zXG5cbiAgY29uc3RydWN0b3IoZXh0U2NvcGU6IFZhbHVlU2NvcGUsIG9wdHM6IENvZGVHZW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm9wdHMgPSB7Li4ub3B0cywgX246IG9wdHMubGluZXMgPyBcIlxcblwiIDogXCJcIn1cbiAgICB0aGlzLl9leHRTY29wZSA9IGV4dFNjb3BlXG4gICAgdGhpcy5fc2NvcGUgPSBuZXcgU2NvcGUoe3BhcmVudDogZXh0U2NvcGV9KVxuICAgIHRoaXMuX25vZGVzID0gW25ldyBSb290KCldXG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9yb290LnJlbmRlcih0aGlzLm9wdHMpXG4gIH1cblxuICAvLyByZXR1cm5zIHVuaXF1ZSBuYW1lIGluIHRoZSBpbnRlcm5hbCBzY29wZVxuICBuYW1lKHByZWZpeDogc3RyaW5nKTogTmFtZSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njb3BlLm5hbWUocHJlZml4KVxuICB9XG5cbiAgLy8gcmVzZXJ2ZXMgdW5pcXVlIG5hbWUgaW4gdGhlIGV4dGVybmFsIHNjb3BlXG4gIHNjb3BlTmFtZShwcmVmaXg6IHN0cmluZyk6IFZhbHVlU2NvcGVOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0U2NvcGUubmFtZShwcmVmaXgpXG4gIH1cblxuICAvLyByZXNlcnZlcyB1bmlxdWUgbmFtZSBpbiB0aGUgZXh0ZXJuYWwgc2NvcGUgYW5kIGFzc2lnbnMgdmFsdWUgdG8gaXRcbiAgc2NvcGVWYWx1ZShwcmVmaXhPck5hbWU6IFZhbHVlU2NvcGVOYW1lIHwgc3RyaW5nLCB2YWx1ZTogTmFtZVZhbHVlKTogTmFtZSB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX2V4dFNjb3BlLnZhbHVlKHByZWZpeE9yTmFtZSwgdmFsdWUpXG4gICAgY29uc3QgdnMgPSB0aGlzLl92YWx1ZXNbbmFtZS5wcmVmaXhdIHx8ICh0aGlzLl92YWx1ZXNbbmFtZS5wcmVmaXhdID0gbmV3IFNldCgpKVxuICAgIHZzLmFkZChuYW1lKVxuICAgIHJldHVybiBuYW1lXG4gIH1cblxuICBnZXRTY29wZVZhbHVlKHByZWZpeDogc3RyaW5nLCBrZXlPclJlZjogdW5rbm93bik6IFZhbHVlU2NvcGVOYW1lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0U2NvcGUuZ2V0VmFsdWUocHJlZml4LCBrZXlPclJlZilcbiAgfVxuXG4gIC8vIHJldHVybiBjb2RlIHRoYXQgYXNzaWducyB2YWx1ZXMgaW4gdGhlIGV4dGVybmFsIHNjb3BlIHRvIHRoZSBuYW1lcyB0aGF0IGFyZSB1c2VkIGludGVybmFsbHlcbiAgLy8gKHNhbWUgbmFtZXMgdGhhdCB3ZXJlIHJldHVybmVkIGJ5IGdlbi5zY29wZU5hbWUgb3IgZ2VuLnNjb3BlVmFsdWUpXG4gIHNjb3BlUmVmcyhzY29wZU5hbWU6IE5hbWUpOiBDb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0U2NvcGUuc2NvcGVSZWZzKHNjb3BlTmFtZSwgdGhpcy5fdmFsdWVzKVxuICB9XG5cbiAgc2NvcGVDb2RlKCk6IENvZGUge1xuICAgIHJldHVybiB0aGlzLl9leHRTY29wZS5zY29wZUNvZGUodGhpcy5fdmFsdWVzKVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmKFxuICAgIHZhcktpbmQ6IE5hbWUsXG4gICAgbmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLFxuICAgIHJocz86IFNhZmVFeHByLFxuICAgIGNvbnN0YW50PzogYm9vbGVhblxuICApOiBOYW1lIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fc2NvcGUudG9OYW1lKG5hbWVPclByZWZpeClcbiAgICBpZiAocmhzICE9PSB1bmRlZmluZWQgJiYgY29uc3RhbnQpIHRoaXMuX2NvbnN0YW50c1tuYW1lLnN0cl0gPSByaHNcbiAgICB0aGlzLl9sZWFmTm9kZShuZXcgRGVmKHZhcktpbmQsIG5hbWUsIHJocykpXG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIC8vIGBjb25zdGAgZGVjbGFyYXRpb24gKGB2YXJgIGluIGVzNSBtb2RlKVxuICBjb25zdChuYW1lT3JQcmVmaXg6IE5hbWUgfCBzdHJpbmcsIHJoczogU2FmZUV4cHIsIF9jb25zdGFudD86IGJvb2xlYW4pOiBOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmKHZhcktpbmRzLmNvbnN0LCBuYW1lT3JQcmVmaXgsIHJocywgX2NvbnN0YW50KVxuICB9XG5cbiAgLy8gYGxldGAgZGVjbGFyYXRpb24gd2l0aCBvcHRpb25hbCBhc3NpZ25tZW50IChgdmFyYCBpbiBlczUgbW9kZSlcbiAgbGV0KG5hbWVPclByZWZpeDogTmFtZSB8IHN0cmluZywgcmhzPzogU2FmZUV4cHIsIF9jb25zdGFudD86IGJvb2xlYW4pOiBOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmKHZhcktpbmRzLmxldCwgbmFtZU9yUHJlZml4LCByaHMsIF9jb25zdGFudClcbiAgfVxuXG4gIC8vIGB2YXJgIGRlY2xhcmF0aW9uIHdpdGggb3B0aW9uYWwgYXNzaWdubWVudFxuICB2YXIobmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLCByaHM/OiBTYWZlRXhwciwgX2NvbnN0YW50PzogYm9vbGVhbik6IE5hbWUge1xuICAgIHJldHVybiB0aGlzLl9kZWYodmFyS2luZHMudmFyLCBuYW1lT3JQcmVmaXgsIHJocywgX2NvbnN0YW50KVxuICB9XG5cbiAgLy8gYXNzaWdubWVudCBjb2RlXG4gIGFzc2lnbihsaHM6IENvZGUsIHJoczogU2FmZUV4cHIsIHNpZGVFZmZlY3RzPzogYm9vbGVhbik6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgQXNzaWduKGxocywgcmhzLCBzaWRlRWZmZWN0cykpXG4gIH1cblxuICAvLyBgKz1gIGNvZGVcbiAgYWRkKGxoczogQ29kZSwgcmhzOiBTYWZlRXhwcik6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgQXNzaWduT3AobGhzLCBvcGVyYXRvcnMuQURELCByaHMpKVxuICB9XG5cbiAgLy8gYXBwZW5kcyBwYXNzZWQgU2FmZUV4cHIgdG8gY29kZSBvciBleGVjdXRlcyBCbG9ja1xuICBjb2RlKGM6IEJsb2NrIHwgU2FmZUV4cHIpOiBDb2RlR2VuIHtcbiAgICBpZiAodHlwZW9mIGMgPT0gXCJmdW5jdGlvblwiKSBjKClcbiAgICBlbHNlIGlmIChjICE9PSBuaWwpIHRoaXMuX2xlYWZOb2RlKG5ldyBBbnlDb2RlKGMpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyByZXR1cm5zIGNvZGUgZm9yIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgcGFzc2VkIGFyZ3VtZW50IGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzXG4gIG9iamVjdCguLi5rZXlWYWx1ZXM6IFtOYW1lIHwgc3RyaW5nLCBTYWZlRXhwciB8IHN0cmluZ11bXSk6IF9Db2RlIHtcbiAgICBjb25zdCBjb2RlOiBDb2RlSXRlbVtdID0gW1wie1wiXVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGtleVZhbHVlcykge1xuICAgICAgaWYgKGNvZGUubGVuZ3RoID4gMSkgY29kZS5wdXNoKFwiLFwiKVxuICAgICAgY29kZS5wdXNoKGtleSlcbiAgICAgIGlmIChrZXkgIT09IHZhbHVlIHx8IHRoaXMub3B0cy5lczUpIHtcbiAgICAgICAgY29kZS5wdXNoKFwiOlwiKVxuICAgICAgICBhZGRDb2RlQXJnKGNvZGUsIHZhbHVlKVxuICAgICAgfVxuICAgIH1cbiAgICBjb2RlLnB1c2goXCJ9XCIpXG4gICAgcmV0dXJuIG5ldyBfQ29kZShjb2RlKVxuICB9XG5cbiAgLy8gYGlmYCBjbGF1c2UgKG9yIHN0YXRlbWVudCBpZiBgdGhlbkJvZHlgIGFuZCwgb3B0aW9uYWxseSwgYGVsc2VCb2R5YCBhcmUgcGFzc2VkKVxuICBpZihjb25kaXRpb246IENvZGUgfCBib29sZWFuLCB0aGVuQm9keT86IEJsb2NrLCBlbHNlQm9keT86IEJsb2NrKTogQ29kZUdlbiB7XG4gICAgdGhpcy5fYmxvY2tOb2RlKG5ldyBJZihjb25kaXRpb24pKVxuXG4gICAgaWYgKHRoZW5Cb2R5ICYmIGVsc2VCb2R5KSB7XG4gICAgICB0aGlzLmNvZGUodGhlbkJvZHkpLmVsc2UoKS5jb2RlKGVsc2VCb2R5KS5lbmRJZigpXG4gICAgfSBlbHNlIGlmICh0aGVuQm9keSkge1xuICAgICAgdGhpcy5jb2RlKHRoZW5Cb2R5KS5lbmRJZigpXG4gICAgfSBlbHNlIGlmIChlbHNlQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiBcImVsc2VcIiBib2R5IHdpdGhvdXQgXCJ0aGVuXCIgYm9keScpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBgZWxzZSBpZmAgY2xhdXNlIC0gaW52YWxpZCB3aXRob3V0IGBpZmAgb3IgYWZ0ZXIgYGVsc2VgIGNsYXVzZXNcbiAgZWxzZUlmKGNvbmRpdGlvbjogQ29kZSB8IGJvb2xlYW4pOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fZWxzZU5vZGUobmV3IElmKGNvbmRpdGlvbikpXG4gIH1cblxuICAvLyBgZWxzZWAgY2xhdXNlIC0gb25seSB2YWxpZCBhZnRlciBgaWZgIG9yIGBlbHNlIGlmYCBjbGF1c2VzXG4gIGVsc2UoKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Vsc2VOb2RlKG5ldyBFbHNlKCkpXG4gIH1cblxuICAvLyBlbmQgYGlmYCBzdGF0ZW1lbnQgKG5lZWRlZCBpZiBnZW4uaWYgd2FzIHVzZWQgb25seSB3aXRoIGNvbmRpdGlvbilcbiAgZW5kSWYoKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShJZiwgRWxzZSlcbiAgfVxuXG4gIHByaXZhdGUgX2Zvcihub2RlOiBGb3IsIGZvckJvZHk/OiBCbG9jayk6IENvZGVHZW4ge1xuICAgIHRoaXMuX2Jsb2NrTm9kZShub2RlKVxuICAgIGlmIChmb3JCb2R5KSB0aGlzLmNvZGUoZm9yQm9keSkuZW5kRm9yKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gYSBnZW5lcmljIGBmb3JgIGNsYXVzZSAob3Igc3RhdGVtZW50IGlmIGBmb3JCb2R5YCBpcyBwYXNzZWQpXG4gIGZvcihpdGVyYXRpb246IENvZGUsIGZvckJvZHk/OiBCbG9jayk6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3IobmV3IEZvckxvb3AoaXRlcmF0aW9uKSwgZm9yQm9keSlcbiAgfVxuXG4gIC8vIGBmb3JgIHN0YXRlbWVudCBmb3IgYSByYW5nZSBvZiB2YWx1ZXNcbiAgZm9yUmFuZ2UoXG4gICAgbmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLFxuICAgIGZyb206IFNhZmVFeHByLFxuICAgIHRvOiBTYWZlRXhwcixcbiAgICBmb3JCb2R5OiAoaW5kZXg6IE5hbWUpID0+IHZvaWQsXG4gICAgdmFyS2luZDogQ29kZSA9IHRoaXMub3B0cy5lczUgPyB2YXJLaW5kcy52YXIgOiB2YXJLaW5kcy5sZXRcbiAgKTogQ29kZUdlbiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX3Njb3BlLnRvTmFtZShuYW1lT3JQcmVmaXgpXG4gICAgcmV0dXJuIHRoaXMuX2ZvcihuZXcgRm9yUmFuZ2UodmFyS2luZCwgbmFtZSwgZnJvbSwgdG8pLCAoKSA9PiBmb3JCb2R5KG5hbWUpKVxuICB9XG5cbiAgLy8gYGZvci1vZmAgc3RhdGVtZW50IChpbiBlczUgbW9kZSByZXBsYWNlIHdpdGggYSBub3JtYWwgZm9yIGxvb3ApXG4gIGZvck9mKFxuICAgIG5hbWVPclByZWZpeDogTmFtZSB8IHN0cmluZyxcbiAgICBpdGVyYWJsZTogQ29kZSxcbiAgICBmb3JCb2R5OiAoaXRlbTogTmFtZSkgPT4gdm9pZCxcbiAgICB2YXJLaW5kOiBDb2RlID0gdmFyS2luZHMuY29uc3RcbiAgKTogQ29kZUdlbiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX3Njb3BlLnRvTmFtZShuYW1lT3JQcmVmaXgpXG4gICAgaWYgKHRoaXMub3B0cy5lczUpIHtcbiAgICAgIGNvbnN0IGFyciA9IGl0ZXJhYmxlIGluc3RhbmNlb2YgTmFtZSA/IGl0ZXJhYmxlIDogdGhpcy52YXIoXCJfYXJyXCIsIGl0ZXJhYmxlKVxuICAgICAgcmV0dXJuIHRoaXMuZm9yUmFuZ2UoXCJfaVwiLCAwLCBfYCR7YXJyfS5sZW5ndGhgLCAoaSkgPT4ge1xuICAgICAgICB0aGlzLnZhcihuYW1lLCBfYCR7YXJyfVske2l9XWApXG4gICAgICAgIGZvckJvZHkobmFtZSlcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mb3IobmV3IEZvckl0ZXIoXCJvZlwiLCB2YXJLaW5kLCBuYW1lLCBpdGVyYWJsZSksICgpID0+IGZvckJvZHkobmFtZSkpXG4gIH1cblxuICAvLyBgZm9yLWluYCBzdGF0ZW1lbnQuXG4gIC8vIFdpdGggb3B0aW9uIGBvd25Qcm9wZXJ0aWVzYCByZXBsYWNlZCB3aXRoIGEgYGZvci1vZmAgbG9vcCBmb3Igb2JqZWN0IGtleXNcbiAgZm9ySW4oXG4gICAgbmFtZU9yUHJlZml4OiBOYW1lIHwgc3RyaW5nLFxuICAgIG9iajogQ29kZSxcbiAgICBmb3JCb2R5OiAoaXRlbTogTmFtZSkgPT4gdm9pZCxcbiAgICB2YXJLaW5kOiBDb2RlID0gdGhpcy5vcHRzLmVzNSA/IHZhcktpbmRzLnZhciA6IHZhcktpbmRzLmNvbnN0XG4gICk6IENvZGVHZW4ge1xuICAgIGlmICh0aGlzLm9wdHMub3duUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIHRoaXMuZm9yT2YobmFtZU9yUHJlZml4LCBfYE9iamVjdC5rZXlzKCR7b2JqfSlgLCBmb3JCb2R5KVxuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdGhpcy5fc2NvcGUudG9OYW1lKG5hbWVPclByZWZpeClcbiAgICByZXR1cm4gdGhpcy5fZm9yKG5ldyBGb3JJdGVyKFwiaW5cIiwgdmFyS2luZCwgbmFtZSwgb2JqKSwgKCkgPT4gZm9yQm9keShuYW1lKSlcbiAgfVxuXG4gIC8vIGVuZCBgZm9yYCBsb29wXG4gIGVuZEZvcigpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKEZvcilcbiAgfVxuXG4gIC8vIGBsYWJlbGAgc3RhdGVtZW50XG4gIGxhYmVsKGxhYmVsOiBOYW1lKTogQ29kZUdlbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBMYWJlbChsYWJlbCkpXG4gIH1cblxuICAvLyBgYnJlYWtgIHN0YXRlbWVudFxuICBicmVhayhsYWJlbD86IENvZGUpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IEJyZWFrKGxhYmVsKSlcbiAgfVxuXG4gIC8vIGByZXR1cm5gIHN0YXRlbWVudFxuICByZXR1cm4odmFsdWU6IEJsb2NrIHwgU2FmZUV4cHIpOiBDb2RlR2VuIHtcbiAgICBjb25zdCBub2RlID0gbmV3IFJldHVybigpXG4gICAgdGhpcy5fYmxvY2tOb2RlKG5vZGUpXG4gICAgdGhpcy5jb2RlKHZhbHVlKVxuICAgIGlmIChub2RlLm5vZGVzLmxlbmd0aCAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiBcInJldHVyblwiIHNob3VsZCBoYXZlIG9uZSBub2RlJylcbiAgICByZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKFJldHVybilcbiAgfVxuXG4gIC8vIGB0cnlgIHN0YXRlbWVudFxuICB0cnkodHJ5Qm9keTogQmxvY2ssIGNhdGNoQ29kZT86IChlOiBOYW1lKSA9PiB2b2lkLCBmaW5hbGx5Q29kZT86IEJsb2NrKTogQ29kZUdlbiB7XG4gICAgaWYgKCFjYXRjaENvZGUgJiYgIWZpbmFsbHlDb2RlKSB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVHZW46IFwidHJ5XCIgd2l0aG91dCBcImNhdGNoXCIgYW5kIFwiZmluYWxseVwiJylcbiAgICBjb25zdCBub2RlID0gbmV3IFRyeSgpXG4gICAgdGhpcy5fYmxvY2tOb2RlKG5vZGUpXG4gICAgdGhpcy5jb2RlKHRyeUJvZHkpXG4gICAgaWYgKGNhdGNoQ29kZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLm5hbWUoXCJlXCIpXG4gICAgICB0aGlzLl9jdXJyTm9kZSA9IG5vZGUuY2F0Y2ggPSBuZXcgQ2F0Y2goZXJyb3IpXG4gICAgICBjYXRjaENvZGUoZXJyb3IpXG4gICAgfVxuICAgIGlmIChmaW5hbGx5Q29kZSkge1xuICAgICAgdGhpcy5fY3Vyck5vZGUgPSBub2RlLmZpbmFsbHkgPSBuZXcgRmluYWxseSgpXG4gICAgICB0aGlzLmNvZGUoZmluYWxseUNvZGUpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoQ2F0Y2gsIEZpbmFsbHkpXG4gIH1cblxuICAvLyBgdGhyb3dgIHN0YXRlbWVudFxuICB0aHJvdyhlcnJvcjogQ29kZSk6IENvZGVHZW4ge1xuICAgIHJldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgVGhyb3coZXJyb3IpKVxuICB9XG5cbiAgLy8gc3RhcnQgc2VsZi1iYWxhbmNpbmcgYmxvY2tcbiAgYmxvY2soYm9keT86IEJsb2NrLCBub2RlQ291bnQ/OiBudW1iZXIpOiBDb2RlR2VuIHtcbiAgICB0aGlzLl9ibG9ja1N0YXJ0cy5wdXNoKHRoaXMuX25vZGVzLmxlbmd0aClcbiAgICBpZiAoYm9keSkgdGhpcy5jb2RlKGJvZHkpLmVuZEJsb2NrKG5vZGVDb3VudClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gZW5kIHRoZSBjdXJyZW50IHNlbGYtYmFsYW5jaW5nIGJsb2NrXG4gIGVuZEJsb2NrKG5vZGVDb3VudD86IG51bWJlcik6IENvZGVHZW4ge1xuICAgIGNvbnN0IGxlbiA9IHRoaXMuX2Jsb2NrU3RhcnRzLnBvcCgpXG4gICAgaWYgKGxlbiA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoXCJDb2RlR2VuOiBub3QgaW4gc2VsZi1iYWxhbmNpbmcgYmxvY2tcIilcbiAgICBjb25zdCB0b0Nsb3NlID0gdGhpcy5fbm9kZXMubGVuZ3RoIC0gbGVuXG4gICAgaWYgKHRvQ2xvc2UgPCAwIHx8IChub2RlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB0b0Nsb3NlICE9PSBub2RlQ291bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IHdyb25nIG51bWJlciBvZiBub2RlczogJHt0b0Nsb3NlfSB2cyAke25vZGVDb3VudH0gZXhwZWN0ZWRgKVxuICAgIH1cbiAgICB0aGlzLl9ub2Rlcy5sZW5ndGggPSBsZW5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gYGZ1bmN0aW9uYCBoZWFkaW5nIChvciBkZWZpbml0aW9uIGlmIGZ1bmNCb2R5IGlzIHBhc3NlZClcbiAgZnVuYyhuYW1lOiBOYW1lLCBhcmdzOiBDb2RlID0gbmlsLCBhc3luYz86IGJvb2xlYW4sIGZ1bmNCb2R5PzogQmxvY2spOiBDb2RlR2VuIHtcbiAgICB0aGlzLl9ibG9ja05vZGUobmV3IEZ1bmMobmFtZSwgYXJncywgYXN5bmMpKVxuICAgIGlmIChmdW5jQm9keSkgdGhpcy5jb2RlKGZ1bmNCb2R5KS5lbmRGdW5jKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gZW5kIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgZW5kRnVuYygpOiBDb2RlR2VuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKEZ1bmMpXG4gIH1cblxuICBvcHRpbWl6ZShuID0gMSk6IHZvaWQge1xuICAgIHdoaWxlIChuLS0gPiAwKSB7XG4gICAgICB0aGlzLl9yb290Lm9wdGltaXplTm9kZXMoKVxuICAgICAgdGhpcy5fcm9vdC5vcHRpbWl6ZU5hbWVzKHRoaXMuX3Jvb3QubmFtZXMsIHRoaXMuX2NvbnN0YW50cylcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sZWFmTm9kZShub2RlOiBMZWFmTm9kZSk6IENvZGVHZW4ge1xuICAgIHRoaXMuX2N1cnJOb2RlLm5vZGVzLnB1c2gobm9kZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBfYmxvY2tOb2RlKG5vZGU6IFN0YXJ0QmxvY2tOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaChub2RlKVxuICAgIHRoaXMuX25vZGVzLnB1c2gobm9kZSlcbiAgfVxuXG4gIHByaXZhdGUgX2VuZEJsb2NrTm9kZShOMTogRW5kQmxvY2tOb2RlVHlwZSwgTjI/OiBFbmRCbG9ja05vZGVUeXBlKTogQ29kZUdlbiB7XG4gICAgY29uc3QgbiA9IHRoaXMuX2N1cnJOb2RlXG4gICAgaWYgKG4gaW5zdGFuY2VvZiBOMSB8fCAoTjIgJiYgbiBpbnN0YW5jZW9mIE4yKSkge1xuICAgICAgdGhpcy5fbm9kZXMucG9wKClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogbm90IGluIGJsb2NrIFwiJHtOMiA/IGAke04xLmtpbmR9LyR7TjIua2luZH1gIDogTjEua2luZH1cImApXG4gIH1cblxuICBwcml2YXRlIF9lbHNlTm9kZShub2RlOiBJZiB8IEVsc2UpOiBDb2RlR2VuIHtcbiAgICBjb25zdCBuID0gdGhpcy5fY3Vyck5vZGVcbiAgICBpZiAoIShuIGluc3RhbmNlb2YgSWYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVHZW46IFwiZWxzZVwiIHdpdGhvdXQgXCJpZlwiJylcbiAgICB9XG4gICAgdGhpcy5fY3Vyck5vZGUgPSBuLmVsc2UgPSBub2RlXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9yb290KCk6IFJvb3Qge1xuICAgIHJldHVybiB0aGlzLl9ub2Rlc1swXSBhcyBSb290XG4gIH1cblxuICBwcml2YXRlIGdldCBfY3Vyck5vZGUoKTogUGFyZW50Tm9kZSB7XG4gICAgY29uc3QgbnMgPSB0aGlzLl9ub2Rlc1xuICAgIHJldHVybiBuc1tucy5sZW5ndGggLSAxXVxuICB9XG5cbiAgcHJpdmF0ZSBzZXQgX2N1cnJOb2RlKG5vZGU6IFBhcmVudE5vZGUpIHtcbiAgICBjb25zdCBucyA9IHRoaXMuX25vZGVzXG4gICAgbnNbbnMubGVuZ3RoIC0gMV0gPSBub2RlXG4gIH1cblxuICAvLyBnZXQgbm9kZUNvdW50KCk6IG51bWJlciB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX3Jvb3QuY291bnRcbiAgLy8gfVxufVxuXG5mdW5jdGlvbiBhZGROYW1lcyhuYW1lczogVXNlZE5hbWVzLCBmcm9tOiBVc2VkTmFtZXMpOiBVc2VkTmFtZXMge1xuICBmb3IgKGNvbnN0IG4gaW4gZnJvbSkgbmFtZXNbbl0gPSAobmFtZXNbbl0gfHwgMCkgKyAoZnJvbVtuXSB8fCAwKVxuICByZXR1cm4gbmFtZXNcbn1cblxuZnVuY3Rpb24gYWRkRXhwck5hbWVzKG5hbWVzOiBVc2VkTmFtZXMsIGZyb206IFNhZmVFeHByKTogVXNlZE5hbWVzIHtcbiAgcmV0dXJuIGZyb20gaW5zdGFuY2VvZiBfQ29kZU9yTmFtZSA/IGFkZE5hbWVzKG5hbWVzLCBmcm9tLm5hbWVzKSA6IG5hbWVzXG59XG5cbmZ1bmN0aW9uIG9wdGltaXplRXhwcjxUIGV4dGVuZHMgU2FmZUV4cHIgfCBDb2RlPihleHByOiBULCBuYW1lczogVXNlZE5hbWVzLCBjb25zdGFudHM6IENvbnN0YW50cyk6IFRcbmZ1bmN0aW9uIG9wdGltaXplRXhwcihleHByOiBTYWZlRXhwciwgbmFtZXM6IFVzZWROYW1lcywgY29uc3RhbnRzOiBDb25zdGFudHMpOiBTYWZlRXhwciB7XG4gIGlmIChleHByIGluc3RhbmNlb2YgTmFtZSkgcmV0dXJuIHJlcGxhY2VOYW1lKGV4cHIpXG4gIGlmICghY2FuT3B0aW1pemUoZXhwcikpIHJldHVybiBleHByXG4gIHJldHVybiBuZXcgX0NvZGUoXG4gICAgZXhwci5faXRlbXMucmVkdWNlKChpdGVtczogQ29kZUl0ZW1bXSwgYzogU2FmZUV4cHIgfCBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChjIGluc3RhbmNlb2YgTmFtZSkgYyA9IHJlcGxhY2VOYW1lKGMpXG4gICAgICBpZiAoYyBpbnN0YW5jZW9mIF9Db2RlKSBpdGVtcy5wdXNoKC4uLmMuX2l0ZW1zKVxuICAgICAgZWxzZSBpdGVtcy5wdXNoKGMpXG4gICAgICByZXR1cm4gaXRlbXNcbiAgICB9LCBbXSlcbiAgKVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VOYW1lKG46IE5hbWUpOiBTYWZlRXhwciB7XG4gICAgY29uc3QgYyA9IGNvbnN0YW50c1tuLnN0cl1cbiAgICBpZiAoYyA9PT0gdW5kZWZpbmVkIHx8IG5hbWVzW24uc3RyXSAhPT0gMSkgcmV0dXJuIG5cbiAgICBkZWxldGUgbmFtZXNbbi5zdHJdXG4gICAgcmV0dXJuIGNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbk9wdGltaXplKGU6IFNhZmVFeHByKTogZSBpcyBfQ29kZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGUgaW5zdGFuY2VvZiBfQ29kZSAmJlxuICAgICAgZS5faXRlbXMuc29tZShcbiAgICAgICAgKGMpID0+IGMgaW5zdGFuY2VvZiBOYW1lICYmIG5hbWVzW2Muc3RyXSA9PT0gMSAmJiBjb25zdGFudHNbYy5zdHJdICE9PSB1bmRlZmluZWRcbiAgICAgIClcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gc3VidHJhY3ROYW1lcyhuYW1lczogVXNlZE5hbWVzLCBmcm9tOiBVc2VkTmFtZXMpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBuIGluIGZyb20pIG5hbWVzW25dID0gKG5hbWVzW25dIHx8IDApIC0gKGZyb21bbl0gfHwgMClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vdDxUIGV4dGVuZHMgQ29kZSB8IFNhZmVFeHByPih4OiBUKTogVFxuZXhwb3J0IGZ1bmN0aW9uIG5vdCh4OiBDb2RlIHwgU2FmZUV4cHIpOiBDb2RlIHwgU2FmZUV4cHIge1xuICByZXR1cm4gdHlwZW9mIHggPT0gXCJib29sZWFuXCIgfHwgdHlwZW9mIHggPT0gXCJudW1iZXJcIiB8fCB4ID09PSBudWxsID8gIXggOiBfYCEke3Bhcih4KX1gXG59XG5cbmNvbnN0IGFuZENvZGUgPSBtYXBwZW5kKG9wZXJhdG9ycy5BTkQpXG5cbi8vIGJvb2xlYW4gQU5EICgmJikgZXhwcmVzc2lvbiB3aXRoIHRoZSBwYXNzZWQgYXJndW1lbnRzXG5leHBvcnQgZnVuY3Rpb24gYW5kKC4uLmFyZ3M6IENvZGVbXSk6IENvZGUge1xuICByZXR1cm4gYXJncy5yZWR1Y2UoYW5kQ29kZSlcbn1cblxuY29uc3Qgb3JDb2RlID0gbWFwcGVuZChvcGVyYXRvcnMuT1IpXG5cbi8vIGJvb2xlYW4gT1IgKHx8KSBleHByZXNzaW9uIHdpdGggdGhlIHBhc3NlZCBhcmd1bWVudHNcbmV4cG9ydCBmdW5jdGlvbiBvciguLi5hcmdzOiBDb2RlW10pOiBDb2RlIHtcbiAgcmV0dXJuIGFyZ3MucmVkdWNlKG9yQ29kZSlcbn1cblxudHlwZSBNQXBwZW5kID0gKHg6IENvZGUsIHk6IENvZGUpID0+IENvZGVcblxuZnVuY3Rpb24gbWFwcGVuZChvcDogQ29kZSk6IE1BcHBlbmQge1xuICByZXR1cm4gKHgsIHkpID0+ICh4ID09PSBuaWwgPyB5IDogeSA9PT0gbmlsID8geCA6IF9gJHtwYXIoeCl9ICR7b3B9ICR7cGFyKHkpfWApXG59XG5cbmZ1bmN0aW9uIHBhcih4OiBDb2RlKTogQ29kZSB7XG4gIHJldHVybiB4IGluc3RhbmNlb2YgTmFtZSA/IHggOiBfYCgke3h9KWBcbn1cbiIsICJpbXBvcnQgdHlwZSB7QW55U2NoZW1hLCBFdmFsdWF0ZWRQcm9wZXJ0aWVzLCBFdmFsdWF0ZWRJdGVtc30gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFDeHQsIFNjaGVtYU9iakN4dH0gZnJvbSBcIi5cIlxuaW1wb3J0IHtfLCBnZXRQcm9wZXJ0eSwgQ29kZSwgTmFtZSwgQ29kZUdlbn0gZnJvbSBcIi4vY29kZWdlblwiXG5pbXBvcnQge19Db2RlfSBmcm9tIFwiLi9jb2RlZ2VuL2NvZGVcIlxuaW1wb3J0IHR5cGUge1J1bGUsIFZhbGlkYXRpb25SdWxlc30gZnJvbSBcIi4vcnVsZXNcIlxuXG4vLyBUT0RPIHJlZmFjdG9yIHRvIHVzZSBTZXRcbmV4cG9ydCBmdW5jdGlvbiB0b0hhc2g8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oYXJyOiBUW10pOiB7W0sgaW4gVF0/OiB0cnVlfSB7XG4gIGNvbnN0IGhhc2g6IHtbSyBpbiBUXT86IHRydWV9ID0ge31cbiAgZm9yIChjb25zdCBpdGVtIG9mIGFycikgaGFzaFtpdGVtXSA9IHRydWVcbiAgcmV0dXJuIGhhc2hcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsd2F5c1ZhbGlkU2NoZW1hKGl0OiBTY2hlbWFDeHQsIHNjaGVtYTogQW55U2NoZW1hKTogYm9vbGVhbiB8IHZvaWQge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHNjaGVtYVxuICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hKS5sZW5ndGggPT09IDApIHJldHVybiB0cnVlXG4gIGNoZWNrVW5rbm93blJ1bGVzKGl0LCBzY2hlbWEpXG4gIHJldHVybiAhc2NoZW1hSGFzUnVsZXMoc2NoZW1hLCBpdC5zZWxmLlJVTEVTLmFsbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVW5rbm93blJ1bGVzKGl0OiBTY2hlbWFDeHQsIHNjaGVtYTogQW55U2NoZW1hID0gaXQuc2NoZW1hKTogdm9pZCB7XG4gIGNvbnN0IHtvcHRzLCBzZWxmfSA9IGl0XG4gIGlmICghb3B0cy5zdHJpY3RTY2hlbWEpIHJldHVyblxuICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJib29sZWFuXCIpIHJldHVyblxuICBjb25zdCBydWxlcyA9IHNlbGYuUlVMRVMua2V5d29yZHNcbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSB7XG4gICAgaWYgKCFydWxlc1trZXldKSBjaGVja1N0cmljdE1vZGUoaXQsIGB1bmtub3duIGtleXdvcmQ6IFwiJHtrZXl9XCJgKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFIYXNSdWxlcyhcbiAgc2NoZW1hOiBBbnlTY2hlbWEsXG4gIHJ1bGVzOiB7W0tleSBpbiBzdHJpbmddPzogYm9vbGVhbiB8IFJ1bGV9XG4pOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiAhc2NoZW1hXG4gIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkgaWYgKHJ1bGVzW2tleV0pIHJldHVybiB0cnVlXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hSGFzUnVsZXNCdXRSZWYoc2NoZW1hOiBBbnlTY2hlbWEsIFJVTEVTOiBWYWxpZGF0aW9uUnVsZXMpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiAhc2NoZW1hXG4gIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkgaWYgKGtleSAhPT0gXCIkcmVmXCIgJiYgUlVMRVMuYWxsW2tleV0pIHJldHVybiB0cnVlXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hUmVmT3JWYWwoXG4gIHt0b3BTY2hlbWFSZWYsIHNjaGVtYVBhdGh9OiBTY2hlbWFPYmpDeHQsXG4gIHNjaGVtYTogdW5rbm93bixcbiAga2V5d29yZDogc3RyaW5nLFxuICAkZGF0YT86IHN0cmluZyB8IGZhbHNlXG4pOiBDb2RlIHwgbnVtYmVyIHwgYm9vbGVhbiB7XG4gIGlmICghJGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiBzY2hlbWFcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gX2Ake3NjaGVtYX1gXG4gIH1cbiAgcmV0dXJuIF9gJHt0b3BTY2hlbWFSZWZ9JHtzY2hlbWFQYXRofSR7Z2V0UHJvcGVydHkoa2V5d29yZCl9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVGcmFnbWVudChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB1bmVzY2FwZUpzb25Qb2ludGVyKGRlY29kZVVSSUNvbXBvbmVudChzdHIpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRnJhZ21lbnQoc3RyOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGVzY2FwZUpzb25Qb2ludGVyKHN0cikpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVKc29uUG9pbnRlcihzdHI6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygc3RyID09IFwibnVtYmVyXCIpIHJldHVybiBgJHtzdHJ9YFxuICByZXR1cm4gc3RyLnJlcGxhY2UoL34vZywgXCJ+MFwiKS5yZXBsYWNlKC9cXC8vZywgXCJ+MVwiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVKc29uUG9pbnRlcihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfjEvZywgXCIvXCIpLnJlcGxhY2UoL34wL2csIFwiflwiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZWFjaEl0ZW08VD4oeHM6IFQgfCBUW10sIGY6ICh4OiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KHhzKSkge1xuICAgIGZvciAoY29uc3QgeCBvZiB4cykgZih4KVxuICB9IGVsc2Uge1xuICAgIGYoeHMpXG4gIH1cbn1cblxudHlwZSBTb21lRXZhbHVhdGVkID0gRXZhbHVhdGVkUHJvcGVydGllcyB8IEV2YWx1YXRlZEl0ZW1zXG5cbnR5cGUgTWVyZ2VFdmFsdWF0ZWRGdW5jPFQgZXh0ZW5kcyBTb21lRXZhbHVhdGVkPiA9IChcbiAgZ2VuOiBDb2RlR2VuLFxuICBmcm9tOiBOYW1lIHwgVCxcbiAgdG86IE5hbWUgfCBFeGNsdWRlPFQsIHRydWU+IHwgdW5kZWZpbmVkLFxuICB0b05hbWU/OiB0eXBlb2YgTmFtZVxuKSA9PiBOYW1lIHwgVFxuXG5pbnRlcmZhY2UgTWFrZU1lcmdlRnVuY0FyZ3M8VCBleHRlbmRzIFNvbWVFdmFsdWF0ZWQ+IHtcbiAgbWVyZ2VOYW1lczogKGdlbjogQ29kZUdlbiwgZnJvbTogTmFtZSwgdG86IE5hbWUpID0+IHZvaWRcbiAgbWVyZ2VUb05hbWU6IChnZW46IENvZGVHZW4sIGZyb206IFQsIHRvOiBOYW1lKSA9PiB2b2lkXG4gIG1lcmdlVmFsdWVzOiAoZnJvbTogVCwgdG86IEV4Y2x1ZGU8VCwgdHJ1ZT4pID0+IFRcbiAgcmVzdWx0VG9OYW1lOiAoZ2VuOiBDb2RlR2VuLCByZXM/OiBUKSA9PiBOYW1lXG59XG5cbmZ1bmN0aW9uIG1ha2VNZXJnZUV2YWx1YXRlZDxUIGV4dGVuZHMgU29tZUV2YWx1YXRlZD4oe1xuICBtZXJnZU5hbWVzLFxuICBtZXJnZVRvTmFtZSxcbiAgbWVyZ2VWYWx1ZXMsXG4gIHJlc3VsdFRvTmFtZSxcbn06IE1ha2VNZXJnZUZ1bmNBcmdzPFQ+KTogTWVyZ2VFdmFsdWF0ZWRGdW5jPFQ+IHtcbiAgcmV0dXJuIChnZW4sIGZyb20sIHRvLCB0b05hbWUpID0+IHtcbiAgICBjb25zdCByZXMgPVxuICAgICAgdG8gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IGZyb21cbiAgICAgICAgOiB0byBpbnN0YW5jZW9mIE5hbWVcbiAgICAgICAgPyAoZnJvbSBpbnN0YW5jZW9mIE5hbWUgPyBtZXJnZU5hbWVzKGdlbiwgZnJvbSwgdG8pIDogbWVyZ2VUb05hbWUoZ2VuLCBmcm9tLCB0byksIHRvKVxuICAgICAgICA6IGZyb20gaW5zdGFuY2VvZiBOYW1lXG4gICAgICAgID8gKG1lcmdlVG9OYW1lKGdlbiwgdG8sIGZyb20pLCBmcm9tKVxuICAgICAgICA6IG1lcmdlVmFsdWVzKGZyb20sIHRvKVxuICAgIHJldHVybiB0b05hbWUgPT09IE5hbWUgJiYgIShyZXMgaW5zdGFuY2VvZiBOYW1lKSA/IHJlc3VsdFRvTmFtZShnZW4sIHJlcykgOiByZXNcbiAgfVxufVxuXG5pbnRlcmZhY2UgTWVyZ2VFdmFsdWF0ZWQge1xuICBwcm9wczogTWVyZ2VFdmFsdWF0ZWRGdW5jPEV2YWx1YXRlZFByb3BlcnRpZXM+XG4gIGl0ZW1zOiBNZXJnZUV2YWx1YXRlZEZ1bmM8RXZhbHVhdGVkSXRlbXM+XG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUV2YWx1YXRlZDogTWVyZ2VFdmFsdWF0ZWQgPSB7XG4gIHByb3BzOiBtYWtlTWVyZ2VFdmFsdWF0ZWQoe1xuICAgIG1lcmdlTmFtZXM6IChnZW4sIGZyb20sIHRvKSA9PlxuICAgICAgZ2VuLmlmKF9gJHt0b30gIT09IHRydWUgJiYgJHtmcm9tfSAhPT0gdW5kZWZpbmVkYCwgKCkgPT4ge1xuICAgICAgICBnZW4uaWYoXG4gICAgICAgICAgX2Ake2Zyb219ID09PSB0cnVlYCxcbiAgICAgICAgICAoKSA9PiBnZW4uYXNzaWduKHRvLCB0cnVlKSxcbiAgICAgICAgICAoKSA9PiBnZW4uYXNzaWduKHRvLCBfYCR7dG99IHx8IHt9YCkuY29kZShfYE9iamVjdC5hc3NpZ24oJHt0b30sICR7ZnJvbX0pYClcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgbWVyZ2VUb05hbWU6IChnZW4sIGZyb20sIHRvKSA9PlxuICAgICAgZ2VuLmlmKF9gJHt0b30gIT09IHRydWVgLCAoKSA9PiB7XG4gICAgICAgIGlmIChmcm9tID09PSB0cnVlKSB7XG4gICAgICAgICAgZ2VuLmFzc2lnbih0bywgdHJ1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnZW4uYXNzaWduKHRvLCBfYCR7dG99IHx8IHt9YClcbiAgICAgICAgICBzZXRFdmFsdWF0ZWQoZ2VuLCB0bywgZnJvbSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgbWVyZ2VWYWx1ZXM6IChmcm9tLCB0bykgPT4gKGZyb20gPT09IHRydWUgPyB0cnVlIDogey4uLmZyb20sIC4uLnRvfSksXG4gICAgcmVzdWx0VG9OYW1lOiBldmFsdWF0ZWRQcm9wc1RvTmFtZSxcbiAgfSksXG4gIGl0ZW1zOiBtYWtlTWVyZ2VFdmFsdWF0ZWQoe1xuICAgIG1lcmdlTmFtZXM6IChnZW4sIGZyb20sIHRvKSA9PlxuICAgICAgZ2VuLmlmKF9gJHt0b30gIT09IHRydWUgJiYgJHtmcm9tfSAhPT0gdW5kZWZpbmVkYCwgKCkgPT5cbiAgICAgICAgZ2VuLmFzc2lnbih0bywgX2Ake2Zyb219ID09PSB0cnVlID8gdHJ1ZSA6ICR7dG99ID4gJHtmcm9tfSA/ICR7dG99IDogJHtmcm9tfWApXG4gICAgICApLFxuICAgIG1lcmdlVG9OYW1lOiAoZ2VuLCBmcm9tLCB0bykgPT5cbiAgICAgIGdlbi5pZihfYCR7dG99ICE9PSB0cnVlYCwgKCkgPT5cbiAgICAgICAgZ2VuLmFzc2lnbih0bywgZnJvbSA9PT0gdHJ1ZSA/IHRydWUgOiBfYCR7dG99ID4gJHtmcm9tfSA/ICR7dG99IDogJHtmcm9tfWApXG4gICAgICApLFxuICAgIG1lcmdlVmFsdWVzOiAoZnJvbSwgdG8pID0+IChmcm9tID09PSB0cnVlID8gdHJ1ZSA6IE1hdGgubWF4KGZyb20sIHRvKSksXG4gICAgcmVzdWx0VG9OYW1lOiAoZ2VuLCBpdGVtcykgPT4gZ2VuLnZhcihcIml0ZW1zXCIsIGl0ZW1zKSxcbiAgfSksXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZWRQcm9wc1RvTmFtZShnZW46IENvZGVHZW4sIHBzPzogRXZhbHVhdGVkUHJvcGVydGllcyk6IE5hbWUge1xuICBpZiAocHMgPT09IHRydWUpIHJldHVybiBnZW4udmFyKFwicHJvcHNcIiwgdHJ1ZSlcbiAgY29uc3QgcHJvcHMgPSBnZW4udmFyKFwicHJvcHNcIiwgX2B7fWApXG4gIGlmIChwcyAhPT0gdW5kZWZpbmVkKSBzZXRFdmFsdWF0ZWQoZ2VuLCBwcm9wcywgcHMpXG4gIHJldHVybiBwcm9wc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RXZhbHVhdGVkKGdlbjogQ29kZUdlbiwgcHJvcHM6IE5hbWUsIHBzOiB7W0sgaW4gc3RyaW5nXT86IHRydWV9KTogdm9pZCB7XG4gIE9iamVjdC5rZXlzKHBzKS5mb3JFYWNoKChwKSA9PiBnZW4uYXNzaWduKF9gJHtwcm9wc30ke2dldFByb3BlcnR5KHApfWAsIHRydWUpKVxufVxuXG5jb25zdCBzbmlwcGV0czoge1tTIGluIHN0cmluZ10/OiBfQ29kZX0gPSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRnVuYyhnZW46IENvZGVHZW4sIGY6IHtjb2RlOiBzdHJpbmd9KTogTmFtZSB7XG4gIHJldHVybiBnZW4uc2NvcGVWYWx1ZShcImZ1bmNcIiwge1xuICAgIHJlZjogZixcbiAgICBjb2RlOiBzbmlwcGV0c1tmLmNvZGVdIHx8IChzbmlwcGV0c1tmLmNvZGVdID0gbmV3IF9Db2RlKGYuY29kZSkpLFxuICB9KVxufVxuXG5leHBvcnQgZW51bSBUeXBlIHtcbiAgTnVtLFxuICBTdHIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvclBhdGgoXG4gIGRhdGFQcm9wOiBOYW1lIHwgc3RyaW5nIHwgbnVtYmVyLFxuICBkYXRhUHJvcFR5cGU/OiBUeXBlLFxuICBqc1Byb3BlcnR5U3ludGF4PzogYm9vbGVhblxuKTogQ29kZSB8IHN0cmluZyB7XG4gIC8vIGxldCBwYXRoXG4gIGlmIChkYXRhUHJvcCBpbnN0YW5jZW9mIE5hbWUpIHtcbiAgICBjb25zdCBpc051bWJlciA9IGRhdGFQcm9wVHlwZSA9PT0gVHlwZS5OdW1cbiAgICByZXR1cm4ganNQcm9wZXJ0eVN5bnRheFxuICAgICAgPyBpc051bWJlclxuICAgICAgICA/IF9gXCJbXCIgKyAke2RhdGFQcm9wfSArIFwiXVwiYFxuICAgICAgICA6IF9gXCJbJ1wiICsgJHtkYXRhUHJvcH0gKyBcIiddXCJgXG4gICAgICA6IGlzTnVtYmVyXG4gICAgICA/IF9gXCIvXCIgKyAke2RhdGFQcm9wfWBcbiAgICAgIDogX2BcIi9cIiArICR7ZGF0YVByb3B9LnJlcGxhY2UoL34vZywgXCJ+MFwiKS5yZXBsYWNlKC9cXFxcLy9nLCBcIn4xXCIpYCAvLyBUT0RPIG1heWJlIHVzZSBnbG9iYWwgZXNjYXBlUG9pbnRlclxuICB9XG4gIHJldHVybiBqc1Byb3BlcnR5U3ludGF4ID8gZ2V0UHJvcGVydHkoZGF0YVByb3ApLnRvU3RyaW5nKCkgOiBcIi9cIiArIGVzY2FwZUpzb25Qb2ludGVyKGRhdGFQcm9wKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tTdHJpY3RNb2RlKFxuICBpdDogU2NoZW1hQ3h0LFxuICBtc2c6IHN0cmluZyxcbiAgbW9kZTogYm9vbGVhbiB8IFwibG9nXCIgPSBpdC5vcHRzLnN0cmljdFNjaGVtYVxuKTogdm9pZCB7XG4gIGlmICghbW9kZSkgcmV0dXJuXG4gIG1zZyA9IGBzdHJpY3QgbW9kZTogJHttc2d9YFxuICBpZiAobW9kZSA9PT0gdHJ1ZSkgdGhyb3cgbmV3IEVycm9yKG1zZylcbiAgaXQuc2VsZi5sb2dnZXIud2Fybihtc2cpXG59XG4iLCAiaW1wb3J0IHtOYW1lfSBmcm9tIFwiLi9jb2RlZ2VuXCJcblxuY29uc3QgbmFtZXMgPSB7XG4gIC8vIHZhbGlkYXRpb24gZnVuY3Rpb24gYXJndW1lbnRzXG4gIGRhdGE6IG5ldyBOYW1lKFwiZGF0YVwiKSwgLy8gZGF0YSBwYXNzZWQgdG8gdmFsaWRhdGlvbiBmdW5jdGlvblxuICAvLyBhcmdzIHBhc3NlZCBmcm9tIHJlZmVyZW5jaW5nIHNjaGVtYVxuICB2YWxDeHQ6IG5ldyBOYW1lKFwidmFsQ3h0XCIpLCAvLyB2YWxpZGF0aW9uL2RhdGEgY29udGV4dCAtIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseSwgaXQgaXMgZGVzdHJ1Y3R1cmVkIHRvIHRoZSBuYW1lcyBiZWxvd1xuICBpbnN0YW5jZVBhdGg6IG5ldyBOYW1lKFwiaW5zdGFuY2VQYXRoXCIpLFxuICBwYXJlbnREYXRhOiBuZXcgTmFtZShcInBhcmVudERhdGFcIiksXG4gIHBhcmVudERhdGFQcm9wZXJ0eTogbmV3IE5hbWUoXCJwYXJlbnREYXRhUHJvcGVydHlcIiksXG4gIHJvb3REYXRhOiBuZXcgTmFtZShcInJvb3REYXRhXCIpLCAvLyByb290IGRhdGEgLSBzYW1lIGFzIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgZmlyc3QvdG9wIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAgZHluYW1pY0FuY2hvcnM6IG5ldyBOYW1lKFwiZHluYW1pY0FuY2hvcnNcIiksIC8vIHVzZWQgdG8gc3VwcG9ydCByZWN1cnNpdmVSZWYgYW5kIGR5bmFtaWNSZWZcbiAgLy8gZnVuY3Rpb24gc2NvcGVkIHZhcmlhYmxlc1xuICB2RXJyb3JzOiBuZXcgTmFtZShcInZFcnJvcnNcIiksIC8vIG51bGwgb3IgYXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvcnNcbiAgZXJyb3JzOiBuZXcgTmFtZShcImVycm9yc1wiKSwgLy8gY291bnRlciBvZiB2YWxpZGF0aW9uIGVycm9yc1xuICB0aGlzOiBuZXcgTmFtZShcInRoaXNcIiksXG4gIC8vIFwiZ2xvYmFsc1wiXG4gIHNlbGY6IG5ldyBOYW1lKFwic2VsZlwiKSxcbiAgc2NvcGU6IG5ldyBOYW1lKFwic2NvcGVcIiksXG4gIC8vIEpURCBzZXJpYWxpemUvcGFyc2UgbmFtZSBmb3IgSlNPTiBzdHJpbmcgYW5kIHBvc2l0aW9uXG4gIGpzb246IG5ldyBOYW1lKFwianNvblwiKSxcbiAganNvblBvczogbmV3IE5hbWUoXCJqc29uUG9zXCIpLFxuICBqc29uTGVuOiBuZXcgTmFtZShcImpzb25MZW5cIiksXG4gIGpzb25QYXJ0OiBuZXcgTmFtZShcImpzb25QYXJ0XCIpLFxufVxuXG5leHBvcnQgZGVmYXVsdCBuYW1lc1xuIiwgImltcG9ydCB0eXBlIHtLZXl3b3JkRXJyb3JDeHQsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7U2NoZW1hQ3h0fSBmcm9tIFwiLi9pbmRleFwiXG5pbXBvcnQge0NvZGVHZW4sIF8sIHN0ciwgc3RyQ29uY2F0LCBDb2RlLCBOYW1lfSBmcm9tIFwiLi9jb2RlZ2VuXCJcbmltcG9ydCB7U2FmZUV4cHJ9IGZyb20gXCIuL2NvZGVnZW4vY29kZVwiXG5pbXBvcnQge2dldEVycm9yUGF0aCwgVHlwZX0gZnJvbSBcIi4vdXRpbFwiXG5pbXBvcnQgTiBmcm9tIFwiLi9uYW1lc1wiXG5cbmV4cG9ydCBjb25zdCBrZXl3b3JkRXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7a2V5d29yZH0pID0+IHN0cmBtdXN0IHBhc3MgXCIke2tleXdvcmR9XCIga2V5d29yZCB2YWxpZGF0aW9uYCxcbn1cblxuZXhwb3J0IGNvbnN0IGtleXdvcmQkRGF0YUVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe2tleXdvcmQsIHNjaGVtYVR5cGV9KSA9PlxuICAgIHNjaGVtYVR5cGVcbiAgICAgID8gc3RyYFwiJHtrZXl3b3JkfVwiIGtleXdvcmQgbXVzdCBiZSAke3NjaGVtYVR5cGV9ICgkZGF0YSlgXG4gICAgICA6IHN0cmBcIiR7a2V5d29yZH1cIiBrZXl3b3JkIGlzIGludmFsaWQgKCRkYXRhKWAsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JQYXRocyB7XG4gIGluc3RhbmNlUGF0aD86IENvZGVcbiAgc2NoZW1hUGF0aD86IHN0cmluZ1xuICBwYXJlbnRTY2hlbWE/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRFcnJvcihcbiAgY3h0OiBLZXl3b3JkRXJyb3JDeHQsXG4gIGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ga2V5d29yZEVycm9yLFxuICBlcnJvclBhdGhzPzogRXJyb3JQYXRocyxcbiAgb3ZlcnJpZGVBbGxFcnJvcnM/OiBib29sZWFuXG4pOiB2b2lkIHtcbiAgY29uc3Qge2l0fSA9IGN4dFxuICBjb25zdCB7Z2VuLCBjb21wb3NpdGVSdWxlLCBhbGxFcnJvcnN9ID0gaXRcbiAgY29uc3QgZXJyT2JqID0gZXJyb3JPYmplY3RDb2RlKGN4dCwgZXJyb3IsIGVycm9yUGF0aHMpXG4gIGlmIChvdmVycmlkZUFsbEVycm9ycyA/PyAoY29tcG9zaXRlUnVsZSB8fCBhbGxFcnJvcnMpKSB7XG4gICAgYWRkRXJyb3IoZ2VuLCBlcnJPYmopXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuRXJyb3JzKGl0LCBfYFske2Vyck9ian1dYClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0RXh0cmFFcnJvcihcbiAgY3h0OiBLZXl3b3JkRXJyb3JDeHQsXG4gIGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ga2V5d29yZEVycm9yLFxuICBlcnJvclBhdGhzPzogRXJyb3JQYXRoc1xuKTogdm9pZCB7XG4gIGNvbnN0IHtpdH0gPSBjeHRcbiAgY29uc3Qge2dlbiwgY29tcG9zaXRlUnVsZSwgYWxsRXJyb3JzfSA9IGl0XG4gIGNvbnN0IGVyck9iaiA9IGVycm9yT2JqZWN0Q29kZShjeHQsIGVycm9yLCBlcnJvclBhdGhzKVxuICBhZGRFcnJvcihnZW4sIGVyck9iailcbiAgaWYgKCEoY29tcG9zaXRlUnVsZSB8fCBhbGxFcnJvcnMpKSB7XG4gICAgcmV0dXJuRXJyb3JzKGl0LCBOLnZFcnJvcnMpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RXJyb3JzQ291bnQoZ2VuOiBDb2RlR2VuLCBlcnJzQ291bnQ6IE5hbWUpOiB2b2lkIHtcbiAgZ2VuLmFzc2lnbihOLmVycm9ycywgZXJyc0NvdW50KVxuICBnZW4uaWYoX2Ake04udkVycm9yc30gIT09IG51bGxgLCAoKSA9PlxuICAgIGdlbi5pZihcbiAgICAgIGVycnNDb3VudCxcbiAgICAgICgpID0+IGdlbi5hc3NpZ24oX2Ake04udkVycm9yc30ubGVuZ3RoYCwgZXJyc0NvdW50KSxcbiAgICAgICgpID0+IGdlbi5hc3NpZ24oTi52RXJyb3JzLCBudWxsKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kRXJyb3JzKHtcbiAgZ2VuLFxuICBrZXl3b3JkLFxuICBzY2hlbWFWYWx1ZSxcbiAgZGF0YSxcbiAgZXJyc0NvdW50LFxuICBpdCxcbn06IEtleXdvcmRFcnJvckN4dCk6IHZvaWQge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVycnNDb3VudCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgY29uc3QgZXJyID0gZ2VuLm5hbWUoXCJlcnJcIilcbiAgZ2VuLmZvclJhbmdlKFwiaVwiLCBlcnJzQ291bnQsIE4uZXJyb3JzLCAoaSkgPT4ge1xuICAgIGdlbi5jb25zdChlcnIsIF9gJHtOLnZFcnJvcnN9WyR7aX1dYClcbiAgICBnZW4uaWYoX2Ake2Vycn0uaW5zdGFuY2VQYXRoID09PSB1bmRlZmluZWRgLCAoKSA9PlxuICAgICAgZ2VuLmFzc2lnbihfYCR7ZXJyfS5pbnN0YW5jZVBhdGhgLCBzdHJDb25jYXQoTi5pbnN0YW5jZVBhdGgsIGl0LmVycm9yUGF0aCkpXG4gICAgKVxuICAgIGdlbi5hc3NpZ24oX2Ake2Vycn0uc2NoZW1hUGF0aGAsIHN0cmAke2l0LmVyclNjaGVtYVBhdGh9LyR7a2V5d29yZH1gKVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIGdlbi5hc3NpZ24oX2Ake2Vycn0uc2NoZW1hYCwgc2NoZW1hVmFsdWUpXG4gICAgICBnZW4uYXNzaWduKF9gJHtlcnJ9LmRhdGFgLCBkYXRhKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gYWRkRXJyb3IoZ2VuOiBDb2RlR2VuLCBlcnJPYmo6IENvZGUpOiB2b2lkIHtcbiAgY29uc3QgZXJyID0gZ2VuLmNvbnN0KFwiZXJyXCIsIGVyck9iailcbiAgZ2VuLmlmKFxuICAgIF9gJHtOLnZFcnJvcnN9ID09PSBudWxsYCxcbiAgICAoKSA9PiBnZW4uYXNzaWduKE4udkVycm9ycywgX2BbJHtlcnJ9XWApLFxuICAgIF9gJHtOLnZFcnJvcnN9LnB1c2goJHtlcnJ9KWBcbiAgKVxuICBnZW4uY29kZShfYCR7Ti5lcnJvcnN9KytgKVxufVxuXG5mdW5jdGlvbiByZXR1cm5FcnJvcnMoaXQ6IFNjaGVtYUN4dCwgZXJyczogQ29kZSk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCB2YWxpZGF0ZU5hbWUsIHNjaGVtYUVudn0gPSBpdFxuICBpZiAoc2NoZW1hRW52LiRhc3luYykge1xuICAgIGdlbi50aHJvdyhfYG5ldyAke2l0LlZhbGlkYXRpb25FcnJvciBhcyBOYW1lfSgke2VycnN9KWApXG4gIH0gZWxzZSB7XG4gICAgZ2VuLmFzc2lnbihfYCR7dmFsaWRhdGVOYW1lfS5lcnJvcnNgLCBlcnJzKVxuICAgIGdlbi5yZXR1cm4oZmFsc2UpXG4gIH1cbn1cblxuY29uc3QgRSA9IHtcbiAga2V5d29yZDogbmV3IE5hbWUoXCJrZXl3b3JkXCIpLFxuICBzY2hlbWFQYXRoOiBuZXcgTmFtZShcInNjaGVtYVBhdGhcIiksIC8vIGFsc28gdXNlZCBpbiBKVEQgZXJyb3JzXG4gIHBhcmFtczogbmV3IE5hbWUoXCJwYXJhbXNcIiksXG4gIHByb3BlcnR5TmFtZTogbmV3IE5hbWUoXCJwcm9wZXJ0eU5hbWVcIiksXG4gIG1lc3NhZ2U6IG5ldyBOYW1lKFwibWVzc2FnZVwiKSxcbiAgc2NoZW1hOiBuZXcgTmFtZShcInNjaGVtYVwiKSxcbiAgcGFyZW50U2NoZW1hOiBuZXcgTmFtZShcInBhcmVudFNjaGVtYVwiKSxcbn1cblxuZnVuY3Rpb24gZXJyb3JPYmplY3RDb2RlKFxuICBjeHQ6IEtleXdvcmRFcnJvckN4dCxcbiAgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIGVycm9yUGF0aHM/OiBFcnJvclBhdGhzXG4pOiBDb2RlIHtcbiAgY29uc3Qge2NyZWF0ZUVycm9yc30gPSBjeHQuaXRcbiAgaWYgKGNyZWF0ZUVycm9ycyA9PT0gZmFsc2UpIHJldHVybiBfYHt9YFxuICByZXR1cm4gZXJyb3JPYmplY3QoY3h0LCBlcnJvciwgZXJyb3JQYXRocylcbn1cblxuZnVuY3Rpb24gZXJyb3JPYmplY3QoXG4gIGN4dDogS2V5d29yZEVycm9yQ3h0LFxuICBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgZXJyb3JQYXRoczogRXJyb3JQYXRocyA9IHt9XG4pOiBDb2RlIHtcbiAgY29uc3Qge2dlbiwgaXR9ID0gY3h0XG4gIGNvbnN0IGtleVZhbHVlczogW05hbWUsIFNhZmVFeHByIHwgc3RyaW5nXVtdID0gW1xuICAgIGVycm9ySW5zdGFuY2VQYXRoKGl0LCBlcnJvclBhdGhzKSxcbiAgICBlcnJvclNjaGVtYVBhdGgoY3h0LCBlcnJvclBhdGhzKSxcbiAgXVxuICBleHRyYUVycm9yUHJvcHMoY3h0LCBlcnJvciwga2V5VmFsdWVzKVxuICByZXR1cm4gZ2VuLm9iamVjdCguLi5rZXlWYWx1ZXMpXG59XG5cbmZ1bmN0aW9uIGVycm9ySW5zdGFuY2VQYXRoKHtlcnJvclBhdGh9OiBTY2hlbWFDeHQsIHtpbnN0YW5jZVBhdGh9OiBFcnJvclBhdGhzKTogW05hbWUsIENvZGVdIHtcbiAgY29uc3QgaW5zdFBhdGggPSBpbnN0YW5jZVBhdGhcbiAgICA/IHN0cmAke2Vycm9yUGF0aH0ke2dldEVycm9yUGF0aChpbnN0YW5jZVBhdGgsIFR5cGUuU3RyKX1gXG4gICAgOiBlcnJvclBhdGhcbiAgcmV0dXJuIFtOLmluc3RhbmNlUGF0aCwgc3RyQ29uY2F0KE4uaW5zdGFuY2VQYXRoLCBpbnN0UGF0aCldXG59XG5cbmZ1bmN0aW9uIGVycm9yU2NoZW1hUGF0aChcbiAge2tleXdvcmQsIGl0OiB7ZXJyU2NoZW1hUGF0aH19OiBLZXl3b3JkRXJyb3JDeHQsXG4gIHtzY2hlbWFQYXRoLCBwYXJlbnRTY2hlbWF9OiBFcnJvclBhdGhzXG4pOiBbTmFtZSwgc3RyaW5nIHwgQ29kZV0ge1xuICBsZXQgc2NoUGF0aCA9IHBhcmVudFNjaGVtYSA/IGVyclNjaGVtYVBhdGggOiBzdHJgJHtlcnJTY2hlbWFQYXRofS8ke2tleXdvcmR9YFxuICBpZiAoc2NoZW1hUGF0aCkge1xuICAgIHNjaFBhdGggPSBzdHJgJHtzY2hQYXRofSR7Z2V0RXJyb3JQYXRoKHNjaGVtYVBhdGgsIFR5cGUuU3RyKX1gXG4gIH1cbiAgcmV0dXJuIFtFLnNjaGVtYVBhdGgsIHNjaFBhdGhdXG59XG5cbmZ1bmN0aW9uIGV4dHJhRXJyb3JQcm9wcyhcbiAgY3h0OiBLZXl3b3JkRXJyb3JDeHQsXG4gIHtwYXJhbXMsIG1lc3NhZ2V9OiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBrZXlWYWx1ZXM6IFtOYW1lLCBTYWZlRXhwciB8IHN0cmluZ11bXVxuKTogdm9pZCB7XG4gIGNvbnN0IHtrZXl3b3JkLCBkYXRhLCBzY2hlbWFWYWx1ZSwgaXR9ID0gY3h0XG4gIGNvbnN0IHtvcHRzLCBwcm9wZXJ0eU5hbWUsIHRvcFNjaGVtYVJlZiwgc2NoZW1hUGF0aH0gPSBpdFxuICBrZXlWYWx1ZXMucHVzaChcbiAgICBbRS5rZXl3b3JkLCBrZXl3b3JkXSxcbiAgICBbRS5wYXJhbXMsIHR5cGVvZiBwYXJhbXMgPT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGN4dCkgOiBwYXJhbXMgfHwgX2B7fWBdXG4gIClcbiAgaWYgKG9wdHMubWVzc2FnZXMpIHtcbiAgICBrZXlWYWx1ZXMucHVzaChbRS5tZXNzYWdlLCB0eXBlb2YgbWVzc2FnZSA9PSBcImZ1bmN0aW9uXCIgPyBtZXNzYWdlKGN4dCkgOiBtZXNzYWdlXSlcbiAgfVxuICBpZiAob3B0cy52ZXJib3NlKSB7XG4gICAga2V5VmFsdWVzLnB1c2goXG4gICAgICBbRS5zY2hlbWEsIHNjaGVtYVZhbHVlXSxcbiAgICAgIFtFLnBhcmVudFNjaGVtYSwgX2Ake3RvcFNjaGVtYVJlZn0ke3NjaGVtYVBhdGh9YF0sXG4gICAgICBbTi5kYXRhLCBkYXRhXVxuICAgIClcbiAgfVxuICBpZiAocHJvcGVydHlOYW1lKSBrZXlWYWx1ZXMucHVzaChbRS5wcm9wZXJ0eU5hbWUsIHByb3BlcnR5TmFtZV0pXG59XG4iLCAiaW1wb3J0IHR5cGUge0tleXdvcmRFcnJvckRlZmluaXRpb24sIEtleXdvcmRFcnJvckN4dH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFDeHR9IGZyb20gXCIuLlwiXG5pbXBvcnQge3JlcG9ydEVycm9yfSBmcm9tIFwiLi4vZXJyb3JzXCJcbmltcG9ydCB7XywgTmFtZX0gZnJvbSBcIi4uL2NvZGVnZW5cIlxuaW1wb3J0IE4gZnJvbSBcIi4uL25hbWVzXCJcblxuY29uc3QgYm9vbEVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiBcImJvb2xlYW4gc2NoZW1hIGlzIGZhbHNlXCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b3BCb29sT3JFbXB0eVNjaGVtYShpdDogU2NoZW1hQ3h0KTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYSwgdmFsaWRhdGVOYW1lfSA9IGl0XG4gIGlmIChzY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgZmFsc2VTY2hlbWFFcnJvcihpdCwgZmFsc2UpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHNjaGVtYSA9PSBcIm9iamVjdFwiICYmIHNjaGVtYS4kYXN5bmMgPT09IHRydWUpIHtcbiAgICBnZW4ucmV0dXJuKE4uZGF0YSlcbiAgfSBlbHNlIHtcbiAgICBnZW4uYXNzaWduKF9gJHt2YWxpZGF0ZU5hbWV9LmVycm9yc2AsIG51bGwpXG4gICAgZ2VuLnJldHVybih0cnVlKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib29sT3JFbXB0eVNjaGVtYShpdDogU2NoZW1hQ3h0LCB2YWxpZDogTmFtZSk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBzY2hlbWF9ID0gaXRcbiAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICBnZW4udmFyKHZhbGlkLCBmYWxzZSkgLy8gVE9ETyB2YXJcbiAgICBmYWxzZVNjaGVtYUVycm9yKGl0KVxuICB9IGVsc2Uge1xuICAgIGdlbi52YXIodmFsaWQsIHRydWUpIC8vIFRPRE8gdmFyXG4gIH1cbn1cblxuZnVuY3Rpb24gZmFsc2VTY2hlbWFFcnJvcihpdDogU2NoZW1hQ3h0LCBvdmVycmlkZUFsbEVycm9ycz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgZGF0YX0gPSBpdFxuICAvLyBUT0RPIG1heWJlIHNvbWUgb3RoZXIgaW50ZXJmYWNlIHNob3VsZCBiZSB1c2VkIGZvciBub24ta2V5d29yZCB2YWxpZGF0aW9uIGVycm9ycy4uLlxuICBjb25zdCBjeHQ6IEtleXdvcmRFcnJvckN4dCA9IHtcbiAgICBnZW4sXG4gICAga2V5d29yZDogXCJmYWxzZSBzY2hlbWFcIixcbiAgICBkYXRhLFxuICAgIHNjaGVtYTogZmFsc2UsXG4gICAgc2NoZW1hQ29kZTogZmFsc2UsXG4gICAgc2NoZW1hVmFsdWU6IGZhbHNlLFxuICAgIHBhcmFtczoge30sXG4gICAgaXQsXG4gIH1cbiAgcmVwb3J0RXJyb3IoY3h0LCBib29sRXJyb3IsIHVuZGVmaW5lZCwgb3ZlcnJpZGVBbGxFcnJvcnMpXG59XG4iLCAiaW1wb3J0IHR5cGUge0FkZGVkS2V5d29yZERlZmluaXRpb259IGZyb20gXCIuLi90eXBlc1wiXG5cbmNvbnN0IF9qc29uVHlwZXMgPSBbXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgXCJpbnRlZ2VyXCIsIFwiYm9vbGVhblwiLCBcIm51bGxcIiwgXCJvYmplY3RcIiwgXCJhcnJheVwiXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBKU09OVHlwZSA9ICh0eXBlb2YgX2pzb25UeXBlcylbbnVtYmVyXVxuXG5jb25zdCBqc29uVHlwZXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChfanNvblR5cGVzKVxuXG5leHBvcnQgZnVuY3Rpb24gaXNKU09OVHlwZSh4OiB1bmtub3duKTogeCBpcyBKU09OVHlwZSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PSBcInN0cmluZ1wiICYmIGpzb25UeXBlcy5oYXMoeClcbn1cblxudHlwZSBWYWxpZGF0aW9uVHlwZXMgPSB7XG4gIFtLIGluIEpTT05UeXBlXTogYm9vbGVhbiB8IFJ1bGVHcm91cCB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SdWxlcyB7XG4gIHJ1bGVzOiBSdWxlR3JvdXBbXVxuICBwb3N0OiBSdWxlR3JvdXBcbiAgYWxsOiB7W0tleSBpbiBzdHJpbmddPzogYm9vbGVhbiB8IFJ1bGV9IC8vIHJ1bGVzIHRoYXQgaGF2ZSB0byBiZSB2YWxpZGF0ZWRcbiAga2V5d29yZHM6IHtbS2V5IGluIHN0cmluZ10/OiBib29sZWFufSAvLyBhbGwga25vd24ga2V5d29yZHMgKHN1cGVyc2V0IG9mIFwiYWxsXCIpXG4gIHR5cGVzOiBWYWxpZGF0aW9uVHlwZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlR3JvdXAge1xuICB0eXBlPzogSlNPTlR5cGVcbiAgcnVsZXM6IFJ1bGVbXVxufVxuXG4vLyBUaGlzIGludGVyZmFjZSB3cmFwcyBLZXl3b3JkRGVmaW5pdGlvbiBiZWNhdXNlIGRlZmluaXRpb24gY2FuIGhhdmUgbXVsdGlwbGUga2V5d29yZHNcbmV4cG9ydCBpbnRlcmZhY2UgUnVsZSB7XG4gIGtleXdvcmQ6IHN0cmluZ1xuICBkZWZpbml0aW9uOiBBZGRlZEtleXdvcmREZWZpbml0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSdWxlcygpOiBWYWxpZGF0aW9uUnVsZXMge1xuICBjb25zdCBncm91cHM6IFJlY29yZDxcIm51bWJlclwiIHwgXCJzdHJpbmdcIiB8IFwiYXJyYXlcIiB8IFwib2JqZWN0XCIsIFJ1bGVHcm91cD4gPSB7XG4gICAgbnVtYmVyOiB7dHlwZTogXCJudW1iZXJcIiwgcnVsZXM6IFtdfSxcbiAgICBzdHJpbmc6IHt0eXBlOiBcInN0cmluZ1wiLCBydWxlczogW119LFxuICAgIGFycmF5OiB7dHlwZTogXCJhcnJheVwiLCBydWxlczogW119LFxuICAgIG9iamVjdDoge3R5cGU6IFwib2JqZWN0XCIsIHJ1bGVzOiBbXX0sXG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlczogey4uLmdyb3VwcywgaW50ZWdlcjogdHJ1ZSwgYm9vbGVhbjogdHJ1ZSwgbnVsbDogdHJ1ZX0sXG4gICAgcnVsZXM6IFt7cnVsZXM6IFtdfSwgZ3JvdXBzLm51bWJlciwgZ3JvdXBzLnN0cmluZywgZ3JvdXBzLmFycmF5LCBncm91cHMub2JqZWN0XSxcbiAgICBwb3N0OiB7cnVsZXM6IFtdfSxcbiAgICBhbGw6IHt9LFxuICAgIGtleXdvcmRzOiB7fSxcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtBbnlTY2hlbWFPYmplY3R9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7U2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi5cIlxuaW1wb3J0IHR5cGUge0pTT05UeXBlLCBSdWxlR3JvdXAsIFJ1bGV9IGZyb20gXCIuLi9ydWxlc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFIYXNSdWxlc0ZvclR5cGUoXG4gIHtzY2hlbWEsIHNlbGZ9OiBTY2hlbWFPYmpDeHQsXG4gIHR5cGU6IEpTT05UeXBlXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZ3JvdXAgPSBzZWxmLlJVTEVTLnR5cGVzW3R5cGVdXG4gIHJldHVybiBncm91cCAmJiBncm91cCAhPT0gdHJ1ZSAmJiBzaG91bGRVc2VHcm91cChzY2hlbWEsIGdyb3VwKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkVXNlR3JvdXAoc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsIGdyb3VwOiBSdWxlR3JvdXApOiBib29sZWFuIHtcbiAgcmV0dXJuIGdyb3VwLnJ1bGVzLnNvbWUoKHJ1bGUpID0+IHNob3VsZFVzZVJ1bGUoc2NoZW1hLCBydWxlKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFVzZVJ1bGUoc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsIHJ1bGU6IFJ1bGUpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChcbiAgICBzY2hlbWFbcnVsZS5rZXl3b3JkXSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgcnVsZS5kZWZpbml0aW9uLmltcGxlbWVudHM/LnNvbWUoKGt3ZCkgPT4gc2NoZW1hW2t3ZF0gIT09IHVuZGVmaW5lZClcbiAgKVxufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yQ3h0LFxuICBFcnJvck9iamVjdCxcbiAgQW55U2NoZW1hT2JqZWN0LFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge1NjaGVtYU9iakN4dH0gZnJvbSBcIi4uXCJcbmltcG9ydCB7aXNKU09OVHlwZSwgSlNPTlR5cGV9IGZyb20gXCIuLi9ydWxlc1wiXG5pbXBvcnQge3NjaGVtYUhhc1J1bGVzRm9yVHlwZX0gZnJvbSBcIi4vYXBwbGljYWJpbGl0eVwiXG5pbXBvcnQge3JlcG9ydEVycm9yfSBmcm9tIFwiLi4vZXJyb3JzXCJcbmltcG9ydCB7XywgbmlsLCBhbmQsIG5vdCwgb3BlcmF0b3JzLCBDb2RlLCBOYW1lfSBmcm9tIFwiLi4vY29kZWdlblwiXG5pbXBvcnQge3RvSGFzaCwgc2NoZW1hUmVmT3JWYWx9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IGVudW0gRGF0YVR5cGUge1xuICBDb3JyZWN0LFxuICBXcm9uZyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYVR5cGVzKHNjaGVtYTogQW55U2NoZW1hT2JqZWN0KTogSlNPTlR5cGVbXSB7XG4gIGNvbnN0IHR5cGVzID0gZ2V0SlNPTlR5cGVzKHNjaGVtYS50eXBlKVxuICBjb25zdCBoYXNOdWxsID0gdHlwZXMuaW5jbHVkZXMoXCJudWxsXCIpXG4gIGlmIChoYXNOdWxsKSB7XG4gICAgaWYgKHNjaGVtYS5udWxsYWJsZSA9PT0gZmFsc2UpIHRocm93IG5ldyBFcnJvcihcInR5cGU6IG51bGwgY29udHJhZGljdHMgbnVsbGFibGU6IGZhbHNlXCIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKCF0eXBlcy5sZW5ndGggJiYgc2NoZW1hLm51bGxhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJudWxsYWJsZVwiIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgXCJ0eXBlXCInKVxuICAgIH1cbiAgICBpZiAoc2NoZW1hLm51bGxhYmxlID09PSB0cnVlKSB0eXBlcy5wdXNoKFwibnVsbFwiKVxuICB9XG4gIHJldHVybiB0eXBlc1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlZHVuZGFudC10eXBlLWNvbnN0aXR1ZW50c1xuZXhwb3J0IGZ1bmN0aW9uIGdldEpTT05UeXBlcyh0czogdW5rbm93biB8IHVua25vd25bXSk6IEpTT05UeXBlW10ge1xuICBjb25zdCB0eXBlczogdW5rbm93bltdID0gQXJyYXkuaXNBcnJheSh0cykgPyB0cyA6IHRzID8gW3RzXSA6IFtdXG4gIGlmICh0eXBlcy5ldmVyeShpc0pTT05UeXBlKSkgcmV0dXJuIHR5cGVzXG4gIHRocm93IG5ldyBFcnJvcihcInR5cGUgbXVzdCBiZSBKU09OVHlwZSBvciBKU09OVHlwZVtdOiBcIiArIHR5cGVzLmpvaW4oXCIsXCIpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQW5kQ2hlY2tEYXRhVHlwZShpdDogU2NoZW1hT2JqQ3h0LCB0eXBlczogSlNPTlR5cGVbXSk6IGJvb2xlYW4ge1xuICBjb25zdCB7Z2VuLCBkYXRhLCBvcHRzfSA9IGl0XG4gIGNvbnN0IGNvZXJjZVRvID0gY29lcmNlVG9UeXBlcyh0eXBlcywgb3B0cy5jb2VyY2VUeXBlcylcbiAgY29uc3QgY2hlY2tUeXBlcyA9XG4gICAgdHlwZXMubGVuZ3RoID4gMCAmJlxuICAgICEoY29lcmNlVG8ubGVuZ3RoID09PSAwICYmIHR5cGVzLmxlbmd0aCA9PT0gMSAmJiBzY2hlbWFIYXNSdWxlc0ZvclR5cGUoaXQsIHR5cGVzWzBdKSlcbiAgaWYgKGNoZWNrVHlwZXMpIHtcbiAgICBjb25zdCB3cm9uZ1R5cGUgPSBjaGVja0RhdGFUeXBlcyh0eXBlcywgZGF0YSwgb3B0cy5zdHJpY3ROdW1iZXJzLCBEYXRhVHlwZS5Xcm9uZylcbiAgICBnZW4uaWYod3JvbmdUeXBlLCAoKSA9PiB7XG4gICAgICBpZiAoY29lcmNlVG8ubGVuZ3RoKSBjb2VyY2VEYXRhKGl0LCB0eXBlcywgY29lcmNlVG8pXG4gICAgICBlbHNlIHJlcG9ydFR5cGVFcnJvcihpdClcbiAgICB9KVxuICB9XG4gIHJldHVybiBjaGVja1R5cGVzXG59XG5cbmNvbnN0IENPRVJDSUJMRTogU2V0PEpTT05UeXBlPiA9IG5ldyBTZXQoW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiaW50ZWdlclwiLCBcImJvb2xlYW5cIiwgXCJudWxsXCJdKVxuZnVuY3Rpb24gY29lcmNlVG9UeXBlcyh0eXBlczogSlNPTlR5cGVbXSwgY29lcmNlVHlwZXM/OiBib29sZWFuIHwgXCJhcnJheVwiKTogSlNPTlR5cGVbXSB7XG4gIHJldHVybiBjb2VyY2VUeXBlc1xuICAgID8gdHlwZXMuZmlsdGVyKCh0KSA9PiBDT0VSQ0lCTEUuaGFzKHQpIHx8IChjb2VyY2VUeXBlcyA9PT0gXCJhcnJheVwiICYmIHQgPT09IFwiYXJyYXlcIikpXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBjb2VyY2VEYXRhKGl0OiBTY2hlbWFPYmpDeHQsIHR5cGVzOiBKU09OVHlwZVtdLCBjb2VyY2VUbzogSlNPTlR5cGVbXSk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBkYXRhLCBvcHRzfSA9IGl0XG4gIGNvbnN0IGRhdGFUeXBlID0gZ2VuLmxldChcImRhdGFUeXBlXCIsIF9gdHlwZW9mICR7ZGF0YX1gKVxuICBjb25zdCBjb2VyY2VkID0gZ2VuLmxldChcImNvZXJjZWRcIiwgX2B1bmRlZmluZWRgKVxuICBpZiAob3B0cy5jb2VyY2VUeXBlcyA9PT0gXCJhcnJheVwiKSB7XG4gICAgZ2VuLmlmKF9gJHtkYXRhVHlwZX0gPT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheSgke2RhdGF9KSAmJiAke2RhdGF9Lmxlbmd0aCA9PSAxYCwgKCkgPT5cbiAgICAgIGdlblxuICAgICAgICAuYXNzaWduKGRhdGEsIF9gJHtkYXRhfVswXWApXG4gICAgICAgIC5hc3NpZ24oZGF0YVR5cGUsIF9gdHlwZW9mICR7ZGF0YX1gKVxuICAgICAgICAuaWYoY2hlY2tEYXRhVHlwZXModHlwZXMsIGRhdGEsIG9wdHMuc3RyaWN0TnVtYmVycyksICgpID0+IGdlbi5hc3NpZ24oY29lcmNlZCwgZGF0YSkpXG4gICAgKVxuICB9XG4gIGdlbi5pZihfYCR7Y29lcmNlZH0gIT09IHVuZGVmaW5lZGApXG4gIGZvciAoY29uc3QgdCBvZiBjb2VyY2VUbykge1xuICAgIGlmIChDT0VSQ0lCTEUuaGFzKHQpIHx8ICh0ID09PSBcImFycmF5XCIgJiYgb3B0cy5jb2VyY2VUeXBlcyA9PT0gXCJhcnJheVwiKSkge1xuICAgICAgY29lcmNlU3BlY2lmaWNUeXBlKHQpXG4gICAgfVxuICB9XG4gIGdlbi5lbHNlKClcbiAgcmVwb3J0VHlwZUVycm9yKGl0KVxuICBnZW4uZW5kSWYoKVxuXG4gIGdlbi5pZihfYCR7Y29lcmNlZH0gIT09IHVuZGVmaW5lZGAsICgpID0+IHtcbiAgICBnZW4uYXNzaWduKGRhdGEsIGNvZXJjZWQpXG4gICAgYXNzaWduUGFyZW50RGF0YShpdCwgY29lcmNlZClcbiAgfSlcblxuICBmdW5jdGlvbiBjb2VyY2VTcGVjaWZpY1R5cGUodDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGdlblxuICAgICAgICAgIC5lbHNlSWYoX2Ake2RhdGFUeXBlfSA9PSBcIm51bWJlclwiIHx8ICR7ZGF0YVR5cGV9ID09IFwiYm9vbGVhblwiYClcbiAgICAgICAgICAuYXNzaWduKGNvZXJjZWQsIF9gXCJcIiArICR7ZGF0YX1gKVxuICAgICAgICAgIC5lbHNlSWYoX2Ake2RhdGF9ID09PSBudWxsYClcbiAgICAgICAgICAuYXNzaWduKGNvZXJjZWQsIF9gXCJcImApXG4gICAgICAgIHJldHVyblxuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICBnZW5cbiAgICAgICAgICAuZWxzZUlmKFxuICAgICAgICAgICAgX2Ake2RhdGFUeXBlfSA9PSBcImJvb2xlYW5cIiB8fCAke2RhdGF9ID09PSBudWxsXG4gICAgICAgICAgICAgIHx8ICgke2RhdGFUeXBlfSA9PSBcInN0cmluZ1wiICYmICR7ZGF0YX0gJiYgJHtkYXRhfSA9PSArJHtkYXRhfSlgXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgX2ArJHtkYXRhfWApXG4gICAgICAgIHJldHVyblxuICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgZ2VuXG4gICAgICAgICAgLmVsc2VJZihcbiAgICAgICAgICAgIF9gJHtkYXRhVHlwZX0gPT09IFwiYm9vbGVhblwiIHx8ICR7ZGF0YX0gPT09IG51bGxcbiAgICAgICAgICAgICAgfHwgKCR7ZGF0YVR5cGV9ID09PSBcInN0cmluZ1wiICYmICR7ZGF0YX0gJiYgJHtkYXRhfSA9PSArJHtkYXRhfSAmJiAhKCR7ZGF0YX0gJSAxKSlgXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgX2ArJHtkYXRhfWApXG4gICAgICAgIHJldHVyblxuICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgZ2VuXG4gICAgICAgICAgLmVsc2VJZihfYCR7ZGF0YX0gPT09IFwiZmFsc2VcIiB8fCAke2RhdGF9ID09PSAwIHx8ICR7ZGF0YX0gPT09IG51bGxgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgZmFsc2UpXG4gICAgICAgICAgLmVsc2VJZihfYCR7ZGF0YX0gPT09IFwidHJ1ZVwiIHx8ICR7ZGF0YX0gPT09IDFgKVxuICAgICAgICAgIC5hc3NpZ24oY29lcmNlZCwgdHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICBnZW4uZWxzZUlmKF9gJHtkYXRhfSA9PT0gXCJcIiB8fCAke2RhdGF9ID09PSAwIHx8ICR7ZGF0YX0gPT09IGZhbHNlYClcbiAgICAgICAgZ2VuLmFzc2lnbihjb2VyY2VkLCBudWxsKVxuICAgICAgICByZXR1cm5cblxuICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgIGdlblxuICAgICAgICAgIC5lbHNlSWYoXG4gICAgICAgICAgICBfYCR7ZGF0YVR5cGV9ID09PSBcInN0cmluZ1wiIHx8ICR7ZGF0YVR5cGV9ID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICAgIHx8ICR7ZGF0YVR5cGV9ID09PSBcImJvb2xlYW5cIiB8fCAke2RhdGF9ID09PSBudWxsYFxuICAgICAgICAgIClcbiAgICAgICAgICAuYXNzaWduKGNvZXJjZWQsIF9gWyR7ZGF0YX1dYClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzaWduUGFyZW50RGF0YSh7Z2VuLCBwYXJlbnREYXRhLCBwYXJlbnREYXRhUHJvcGVydHl9OiBTY2hlbWFPYmpDeHQsIGV4cHI6IE5hbWUpOiB2b2lkIHtcbiAgLy8gVE9ETyB1c2UgZ2VuLnByb3BlcnR5XG4gIGdlbi5pZihfYCR7cGFyZW50RGF0YX0gIT09IHVuZGVmaW5lZGAsICgpID0+XG4gICAgZ2VuLmFzc2lnbihfYCR7cGFyZW50RGF0YX1bJHtwYXJlbnREYXRhUHJvcGVydHl9XWAsIGV4cHIpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRGF0YVR5cGUoXG4gIGRhdGFUeXBlOiBKU09OVHlwZSxcbiAgZGF0YTogTmFtZSxcbiAgc3RyaWN0TnVtcz86IGJvb2xlYW4gfCBcImxvZ1wiLFxuICBjb3JyZWN0ID0gRGF0YVR5cGUuQ29ycmVjdFxuKTogQ29kZSB7XG4gIGNvbnN0IEVRID0gY29ycmVjdCA9PT0gRGF0YVR5cGUuQ29ycmVjdCA/IG9wZXJhdG9ycy5FUSA6IG9wZXJhdG9ycy5ORVFcbiAgbGV0IGNvbmQ6IENvZGVcbiAgc3dpdGNoIChkYXRhVHlwZSkge1xuICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICByZXR1cm4gX2Ake2RhdGF9ICR7RVF9IG51bGxgXG4gICAgY2FzZSBcImFycmF5XCI6XG4gICAgICBjb25kID0gX2BBcnJheS5pc0FycmF5KCR7ZGF0YX0pYFxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBjb25kID0gX2Ake2RhdGF9ICYmIHR5cGVvZiAke2RhdGF9ID09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoJHtkYXRhfSlgXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICBjb25kID0gbnVtQ29uZChfYCEoJHtkYXRhfSAlIDEpICYmICFpc05hTigke2RhdGF9KWApXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIGNvbmQgPSBudW1Db25kKClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBfYHR5cGVvZiAke2RhdGF9ICR7RVF9ICR7ZGF0YVR5cGV9YFxuICB9XG4gIHJldHVybiBjb3JyZWN0ID09PSBEYXRhVHlwZS5Db3JyZWN0ID8gY29uZCA6IG5vdChjb25kKVxuXG4gIGZ1bmN0aW9uIG51bUNvbmQoX2NvbmQ6IENvZGUgPSBuaWwpOiBDb2RlIHtcbiAgICByZXR1cm4gYW5kKF9gdHlwZW9mICR7ZGF0YX0gPT0gXCJudW1iZXJcImAsIF9jb25kLCBzdHJpY3ROdW1zID8gX2Bpc0Zpbml0ZSgke2RhdGF9KWAgOiBuaWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRGF0YVR5cGVzKFxuICBkYXRhVHlwZXM6IEpTT05UeXBlW10sXG4gIGRhdGE6IE5hbWUsXG4gIHN0cmljdE51bXM/OiBib29sZWFuIHwgXCJsb2dcIixcbiAgY29ycmVjdD86IERhdGFUeXBlXG4pOiBDb2RlIHtcbiAgaWYgKGRhdGFUeXBlcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gY2hlY2tEYXRhVHlwZShkYXRhVHlwZXNbMF0sIGRhdGEsIHN0cmljdE51bXMsIGNvcnJlY3QpXG4gIH1cbiAgbGV0IGNvbmQ6IENvZGVcbiAgY29uc3QgdHlwZXMgPSB0b0hhc2goZGF0YVR5cGVzKVxuICBpZiAodHlwZXMuYXJyYXkgJiYgdHlwZXMub2JqZWN0KSB7XG4gICAgY29uc3Qgbm90T2JqID0gX2B0eXBlb2YgJHtkYXRhfSAhPSBcIm9iamVjdFwiYFxuICAgIGNvbmQgPSB0eXBlcy5udWxsID8gbm90T2JqIDogX2AhJHtkYXRhfSB8fCAke25vdE9ian1gXG4gICAgZGVsZXRlIHR5cGVzLm51bGxcbiAgICBkZWxldGUgdHlwZXMuYXJyYXlcbiAgICBkZWxldGUgdHlwZXMub2JqZWN0XG4gIH0gZWxzZSB7XG4gICAgY29uZCA9IG5pbFxuICB9XG4gIGlmICh0eXBlcy5udW1iZXIpIGRlbGV0ZSB0eXBlcy5pbnRlZ2VyXG4gIGZvciAoY29uc3QgdCBpbiB0eXBlcykgY29uZCA9IGFuZChjb25kLCBjaGVja0RhdGFUeXBlKHQgYXMgSlNPTlR5cGUsIGRhdGEsIHN0cmljdE51bXMsIGNvcnJlY3QpKVxuICByZXR1cm4gY29uZFxufVxuXG5leHBvcnQgdHlwZSBUeXBlRXJyb3IgPSBFcnJvck9iamVjdDxcInR5cGVcIiwge3R5cGU6IHN0cmluZ30+XG5cbmNvbnN0IHR5cGVFcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtzY2hlbWF9KSA9PiBgbXVzdCBiZSAke3NjaGVtYX1gLFxuICBwYXJhbXM6ICh7c2NoZW1hLCBzY2hlbWFWYWx1ZX0pID0+XG4gICAgdHlwZW9mIHNjaGVtYSA9PSBcInN0cmluZ1wiID8gX2B7dHlwZTogJHtzY2hlbWF9fWAgOiBfYHt0eXBlOiAke3NjaGVtYVZhbHVlfX1gLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0VHlwZUVycm9yKGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3QgY3h0ID0gZ2V0VHlwZUVycm9yQ29udGV4dChpdClcbiAgcmVwb3J0RXJyb3IoY3h0LCB0eXBlRXJyb3IpXG59XG5cbmZ1bmN0aW9uIGdldFR5cGVFcnJvckNvbnRleHQoaXQ6IFNjaGVtYU9iakN4dCk6IEtleXdvcmRFcnJvckN4dCB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIHNjaGVtYX0gPSBpdFxuICBjb25zdCBzY2hlbWFDb2RlID0gc2NoZW1hUmVmT3JWYWwoaXQsIHNjaGVtYSwgXCJ0eXBlXCIpXG4gIHJldHVybiB7XG4gICAgZ2VuLFxuICAgIGtleXdvcmQ6IFwidHlwZVwiLFxuICAgIGRhdGEsXG4gICAgc2NoZW1hOiBzY2hlbWEudHlwZSxcbiAgICBzY2hlbWFDb2RlLFxuICAgIHNjaGVtYVZhbHVlOiBzY2hlbWFDb2RlLFxuICAgIHBhcmVudFNjaGVtYTogc2NoZW1hLFxuICAgIHBhcmFtczoge30sXG4gICAgaXQsXG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7U2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi5cIlxuaW1wb3J0IHtfLCBnZXRQcm9wZXJ0eSwgc3RyaW5naWZ5fSBmcm9tIFwiLi4vY29kZWdlblwiXG5pbXBvcnQge2NoZWNrU3RyaWN0TW9kZX0gZnJvbSBcIi4uL3V0aWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduRGVmYXVsdHMoaXQ6IFNjaGVtYU9iakN4dCwgdHk/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qge3Byb3BlcnRpZXMsIGl0ZW1zfSA9IGl0LnNjaGVtYVxuICBpZiAodHkgPT09IFwib2JqZWN0XCIgJiYgcHJvcGVydGllcykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgIGFzc2lnbkRlZmF1bHQoaXQsIGtleSwgcHJvcGVydGllc1trZXldLmRlZmF1bHQpXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5ID09PSBcImFycmF5XCIgJiYgQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICBpdGVtcy5mb3JFYWNoKChzY2gsIGk6IG51bWJlcikgPT4gYXNzaWduRGVmYXVsdChpdCwgaSwgc2NoLmRlZmF1bHQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkRlZmF1bHQoaXQ6IFNjaGVtYU9iakN4dCwgcHJvcDogc3RyaW5nIHwgbnVtYmVyLCBkZWZhdWx0VmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgY29tcG9zaXRlUnVsZSwgZGF0YSwgb3B0c30gPSBpdFxuICBpZiAoZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCBjaGlsZERhdGEgPSBfYCR7ZGF0YX0ke2dldFByb3BlcnR5KHByb3ApfWBcbiAgaWYgKGNvbXBvc2l0ZVJ1bGUpIHtcbiAgICBjaGVja1N0cmljdE1vZGUoaXQsIGBkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAke2NoaWxkRGF0YX1gKVxuICAgIHJldHVyblxuICB9XG5cbiAgbGV0IGNvbmRpdGlvbiA9IF9gJHtjaGlsZERhdGF9ID09PSB1bmRlZmluZWRgXG4gIGlmIChvcHRzLnVzZURlZmF1bHRzID09PSBcImVtcHR5XCIpIHtcbiAgICBjb25kaXRpb24gPSBfYCR7Y29uZGl0aW9ufSB8fCAke2NoaWxkRGF0YX0gPT09IG51bGwgfHwgJHtjaGlsZERhdGF9ID09PSBcIlwiYFxuICB9XG4gIC8vIGAke2NoaWxkRGF0YX0gPT09IHVuZGVmaW5lZGAgK1xuICAvLyAob3B0cy51c2VEZWZhdWx0cyA9PT0gXCJlbXB0eVwiID8gYCB8fCAke2NoaWxkRGF0YX0gPT09IG51bGwgfHwgJHtjaGlsZERhdGF9ID09PSBcIlwiYCA6IFwiXCIpXG4gIGdlbi5pZihjb25kaXRpb24sIF9gJHtjaGlsZERhdGF9ID0gJHtzdHJpbmdpZnkoZGVmYXVsdFZhbHVlKX1gKVxufVxuIiwgImltcG9ydCB0eXBlIHtBbnlTY2hlbWEsIFNjaGVtYU1hcH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFDeHR9IGZyb20gXCIuLi9jb21waWxlXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge0NvZGVHZW4sIF8sIGFuZCwgb3IsIG5vdCwgbmlsLCBzdHJDb25jYXQsIGdldFByb3BlcnR5LCBDb2RlLCBOYW1lfSBmcm9tIFwiLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIFR5cGV9IGZyb20gXCIuLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IE4gZnJvbSBcIi4uL2NvbXBpbGUvbmFtZXNcIlxuaW1wb3J0IHt1c2VGdW5jfSBmcm9tIFwiLi4vY29tcGlsZS91dGlsXCJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JlcG9ydE1pc3NpbmdQcm9wKGN4dDogS2V5d29yZEN4dCwgcHJvcDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIGl0fSA9IGN4dFxuICBnZW4uaWYobm9Qcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIHByb3AsIGl0Lm9wdHMub3duUHJvcGVydGllcyksICgpID0+IHtcbiAgICBjeHQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6IF9gJHtwcm9wfWB9LCB0cnVlKVxuICAgIGN4dC5lcnJvcigpXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja01pc3NpbmdQcm9wKFxuICB7Z2VuLCBkYXRhLCBpdDoge29wdHN9fTogS2V5d29yZEN4dCxcbiAgcHJvcGVydGllczogc3RyaW5nW10sXG4gIG1pc3Npbmc6IE5hbWVcbik6IENvZGUge1xuICByZXR1cm4gb3IoXG4gICAgLi4ucHJvcGVydGllcy5tYXAoKHByb3ApID0+XG4gICAgICBhbmQobm9Qcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIHByb3AsIG9wdHMub3duUHJvcGVydGllcyksIF9gJHttaXNzaW5nfSA9ICR7cHJvcH1gKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0TWlzc2luZ1Byb3AoY3h0OiBLZXl3b3JkQ3h0LCBtaXNzaW5nOiBOYW1lKTogdm9pZCB7XG4gIGN4dC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTogbWlzc2luZ30sIHRydWUpXG4gIGN4dC5lcnJvcigpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wRnVuYyhnZW46IENvZGVHZW4pOiBOYW1lIHtcbiAgcmV0dXJuIGdlbi5zY29wZVZhbHVlKFwiZnVuY1wiLCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuICAgIHJlZjogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICBjb2RlOiBfYE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlgLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPd25Qcm9wZXJ0eShnZW46IENvZGVHZW4sIGRhdGE6IE5hbWUsIHByb3BlcnR5OiBOYW1lIHwgc3RyaW5nKTogQ29kZSB7XG4gIHJldHVybiBfYCR7aGFzUHJvcEZ1bmMoZ2VuKX0uY2FsbCgke2RhdGF9LCAke3Byb3BlcnR5fSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eUluRGF0YShcbiAgZ2VuOiBDb2RlR2VuLFxuICBkYXRhOiBOYW1lLFxuICBwcm9wZXJ0eTogTmFtZSB8IHN0cmluZyxcbiAgb3duUHJvcGVydGllcz86IGJvb2xlYW5cbik6IENvZGUge1xuICBjb25zdCBjb25kID0gX2Ake2RhdGF9JHtnZXRQcm9wZXJ0eShwcm9wZXJ0eSl9ICE9PSB1bmRlZmluZWRgXG4gIHJldHVybiBvd25Qcm9wZXJ0aWVzID8gX2Ake2NvbmR9ICYmICR7aXNPd25Qcm9wZXJ0eShnZW4sIGRhdGEsIHByb3BlcnR5KX1gIDogY29uZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9Qcm9wZXJ0eUluRGF0YShcbiAgZ2VuOiBDb2RlR2VuLFxuICBkYXRhOiBOYW1lLFxuICBwcm9wZXJ0eTogTmFtZSB8IHN0cmluZyxcbiAgb3duUHJvcGVydGllcz86IGJvb2xlYW5cbik6IENvZGUge1xuICBjb25zdCBjb25kID0gX2Ake2RhdGF9JHtnZXRQcm9wZXJ0eShwcm9wZXJ0eSl9ID09PSB1bmRlZmluZWRgXG4gIHJldHVybiBvd25Qcm9wZXJ0aWVzID8gb3IoY29uZCwgbm90KGlzT3duUHJvcGVydHkoZ2VuLCBkYXRhLCBwcm9wZXJ0eSkpKSA6IGNvbmRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbFNjaGVtYVByb3BlcnRpZXMoc2NoZW1hTWFwPzogU2NoZW1hTWFwKTogc3RyaW5nW10ge1xuICByZXR1cm4gc2NoZW1hTWFwID8gT2JqZWN0LmtleXMoc2NoZW1hTWFwKS5maWx0ZXIoKHApID0+IHAgIT09IFwiX19wcm90b19fXCIpIDogW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYVByb3BlcnRpZXMoaXQ6IFNjaGVtYUN4dCwgc2NoZW1hTWFwOiBTY2hlbWFNYXApOiBzdHJpbmdbXSB7XG4gIHJldHVybiBhbGxTY2hlbWFQcm9wZXJ0aWVzKHNjaGVtYU1hcCkuZmlsdGVyKFxuICAgIChwKSA9PiAhYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYU1hcFtwXSBhcyBBbnlTY2hlbWEpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxWYWxpZGF0ZUNvZGUoXG4gIHtzY2hlbWFDb2RlLCBkYXRhLCBpdDoge2dlbiwgdG9wU2NoZW1hUmVmLCBzY2hlbWFQYXRoLCBlcnJvclBhdGh9LCBpdH06IEtleXdvcmRDeHQsXG4gIGZ1bmM6IENvZGUsXG4gIGNvbnRleHQ6IENvZGUsXG4gIHBhc3NTY2hlbWE/OiBib29sZWFuXG4pOiBDb2RlIHtcbiAgY29uc3QgZGF0YUFuZFNjaGVtYSA9IHBhc3NTY2hlbWEgPyBfYCR7c2NoZW1hQ29kZX0sICR7ZGF0YX0sICR7dG9wU2NoZW1hUmVmfSR7c2NoZW1hUGF0aH1gIDogZGF0YVxuICBjb25zdCB2YWxDeHQ6IFtOYW1lLCBDb2RlIHwgbnVtYmVyXVtdID0gW1xuICAgIFtOLmluc3RhbmNlUGF0aCwgc3RyQ29uY2F0KE4uaW5zdGFuY2VQYXRoLCBlcnJvclBhdGgpXSxcbiAgICBbTi5wYXJlbnREYXRhLCBpdC5wYXJlbnREYXRhXSxcbiAgICBbTi5wYXJlbnREYXRhUHJvcGVydHksIGl0LnBhcmVudERhdGFQcm9wZXJ0eV0sXG4gICAgW04ucm9vdERhdGEsIE4ucm9vdERhdGFdLFxuICBdXG4gIGlmIChpdC5vcHRzLmR5bmFtaWNSZWYpIHZhbEN4dC5wdXNoKFtOLmR5bmFtaWNBbmNob3JzLCBOLmR5bmFtaWNBbmNob3JzXSlcbiAgY29uc3QgYXJncyA9IF9gJHtkYXRhQW5kU2NoZW1hfSwgJHtnZW4ub2JqZWN0KC4uLnZhbEN4dCl9YFxuICByZXR1cm4gY29udGV4dCAhPT0gbmlsID8gX2Ake2Z1bmN9LmNhbGwoJHtjb250ZXh0fSwgJHthcmdzfSlgIDogX2Ake2Z1bmN9KCR7YXJnc30pYFxufVxuXG5jb25zdCBuZXdSZWdFeHAgPSBfYG5ldyBSZWdFeHBgXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXR0ZXJuKHtnZW4sIGl0OiB7b3B0c319OiBLZXl3b3JkQ3h0LCBwYXR0ZXJuOiBzdHJpbmcpOiBOYW1lIHtcbiAgY29uc3QgdSA9IG9wdHMudW5pY29kZVJlZ0V4cCA/IFwidVwiIDogXCJcIlxuICBjb25zdCB7cmVnRXhwfSA9IG9wdHMuY29kZVxuICBjb25zdCByeCA9IHJlZ0V4cChwYXR0ZXJuLCB1KVxuXG4gIHJldHVybiBnZW4uc2NvcGVWYWx1ZShcInBhdHRlcm5cIiwge1xuICAgIGtleTogcngudG9TdHJpbmcoKSxcbiAgICByZWY6IHJ4LFxuICAgIGNvZGU6IF9gJHtyZWdFeHAuY29kZSA9PT0gXCJuZXcgUmVnRXhwXCIgPyBuZXdSZWdFeHAgOiB1c2VGdW5jKGdlbiwgcmVnRXhwKX0oJHtwYXR0ZXJufSwgJHt1fSlgLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBcnJheShjeHQ6IEtleXdvcmRDeHQpOiBOYW1lIHtcbiAgY29uc3Qge2dlbiwgZGF0YSwga2V5d29yZCwgaXR9ID0gY3h0XG4gIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICBpZiAoaXQuYWxsRXJyb3JzKSB7XG4gICAgY29uc3QgdmFsaWRBcnIgPSBnZW4ubGV0KFwidmFsaWRcIiwgdHJ1ZSlcbiAgICB2YWxpZGF0ZUl0ZW1zKCgpID0+IGdlbi5hc3NpZ24odmFsaWRBcnIsIGZhbHNlKSlcbiAgICByZXR1cm4gdmFsaWRBcnJcbiAgfVxuICBnZW4udmFyKHZhbGlkLCB0cnVlKVxuICB2YWxpZGF0ZUl0ZW1zKCgpID0+IGdlbi5icmVhaygpKVxuICByZXR1cm4gdmFsaWRcblxuICBmdW5jdGlvbiB2YWxpZGF0ZUl0ZW1zKG5vdFZhbGlkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgbGVuID0gZ2VuLmNvbnN0KFwibGVuXCIsIF9gJHtkYXRhfS5sZW5ndGhgKVxuICAgIGdlbi5mb3JSYW5nZShcImlcIiwgMCwgbGVuLCAoaSkgPT4ge1xuICAgICAgY3h0LnN1YnNjaGVtYShcbiAgICAgICAge1xuICAgICAgICAgIGtleXdvcmQsXG4gICAgICAgICAgZGF0YVByb3A6IGksXG4gICAgICAgICAgZGF0YVByb3BUeXBlOiBUeXBlLk51bSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRcbiAgICAgIClcbiAgICAgIGdlbi5pZihub3QodmFsaWQpLCBub3RWYWxpZClcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVVuaW9uKGN4dDogS2V5d29yZEN4dCk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBzY2hlbWEsIGtleXdvcmQsIGl0fSA9IGN4dFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICBjb25zdCBhbHdheXNWYWxpZCA9IHNjaGVtYS5zb21lKChzY2g6IEFueVNjaGVtYSkgPT4gYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaCkpXG4gIGlmIChhbHdheXNWYWxpZCAmJiAhaXQub3B0cy51bmV2YWx1YXRlZCkgcmV0dXJuXG5cbiAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIiwgZmFsc2UpXG4gIGNvbnN0IHNjaFZhbGlkID0gZ2VuLm5hbWUoXCJfdmFsaWRcIilcblxuICBnZW4uYmxvY2soKCkgPT5cbiAgICBzY2hlbWEuZm9yRWFjaCgoX3NjaDogQW55U2NoZW1hLCBpOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBrZXl3b3JkLFxuICAgICAgICAgIHNjaGVtYVByb3A6IGksXG4gICAgICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoVmFsaWRcbiAgICAgIClcbiAgICAgIGdlbi5hc3NpZ24odmFsaWQsIF9gJHt2YWxpZH0gfHwgJHtzY2hWYWxpZH1gKVxuICAgICAgY29uc3QgbWVyZ2VkID0gY3h0Lm1lcmdlVmFsaWRFdmFsdWF0ZWQoc2NoQ3h0LCBzY2hWYWxpZClcbiAgICAgIC8vIGNhbiBzaG9ydC1jaXJjdWl0IGlmIGB1bmV2YWx1YXRlZFByb3BlcnRpZXMvSXRlbXNgIG5vdCBzdXBwb3J0ZWQgKG9wdHMudW5ldmFsdWF0ZWQgIT09IHRydWUpXG4gICAgICAvLyBvciBpZiBhbGwgcHJvcGVydGllcyBhbmQgaXRlbXMgd2VyZSBldmFsdWF0ZWQgKGl0LnByb3BzID09PSB0cnVlICYmIGl0Lml0ZW1zID09PSB0cnVlKVxuICAgICAgaWYgKCFtZXJnZWQpIGdlbi5pZihub3QodmFsaWQpKVxuICAgIH0pXG4gIClcblxuICBjeHQucmVzdWx0KFxuICAgIHZhbGlkLFxuICAgICgpID0+IGN4dC5yZXNldCgpLFxuICAgICgpID0+IGN4dC5lcnJvcih0cnVlKVxuICApXG59XG4iLCAiaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuXCJcbmltcG9ydCB0eXBlIHtcbiAgQW55U2NoZW1hLFxuICBTY2hlbWFWYWxpZGF0ZUZ1bmN0aW9uLFxuICBBbnlWYWxpZGF0ZUZ1bmN0aW9uLFxuICBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBNYWNyb0tleXdvcmREZWZpbml0aW9uLFxuICBGdW5jS2V5d29yZERlZmluaXRpb24sXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7U2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi5cIlxuaW1wb3J0IHtfLCBuaWwsIG5vdCwgc3RyaW5naWZ5LCBDb2RlLCBOYW1lLCBDb2RlR2VufSBmcm9tIFwiLi4vY29kZWdlblwiXG5pbXBvcnQgTiBmcm9tIFwiLi4vbmFtZXNcIlxuaW1wb3J0IHR5cGUge0pTT05UeXBlfSBmcm9tIFwiLi4vcnVsZXNcIlxuaW1wb3J0IHtjYWxsVmFsaWRhdGVDb2RlfSBmcm9tIFwiLi4vLi4vdm9jYWJ1bGFyaWVzL2NvZGVcIlxuaW1wb3J0IHtleHRlbmRFcnJvcnN9IGZyb20gXCIuLi9lcnJvcnNcIlxuXG50eXBlIEtleXdvcmRDb21waWxhdGlvblJlc3VsdCA9IEFueVNjaGVtYSB8IFNjaGVtYVZhbGlkYXRlRnVuY3Rpb24gfCBBbnlWYWxpZGF0ZUZ1bmN0aW9uXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWNyb0tleXdvcmRDb2RlKGN4dDogS2V5d29yZEN4dCwgZGVmOiBNYWNyb0tleXdvcmREZWZpbml0aW9uKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGtleXdvcmQsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdH0gPSBjeHRcbiAgY29uc3QgbWFjcm9TY2hlbWEgPSBkZWYubWFjcm8uY2FsbChpdC5zZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpXG4gIGNvbnN0IHNjaGVtYVJlZiA9IHVzZUtleXdvcmQoZ2VuLCBrZXl3b3JkLCBtYWNyb1NjaGVtYSlcbiAgaWYgKGl0Lm9wdHMudmFsaWRhdGVTY2hlbWEgIT09IGZhbHNlKSBpdC5zZWxmLnZhbGlkYXRlU2NoZW1hKG1hY3JvU2NoZW1hLCB0cnVlKVxuXG4gIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICBjeHQuc3Vic2NoZW1hKFxuICAgIHtcbiAgICAgIHNjaGVtYTogbWFjcm9TY2hlbWEsXG4gICAgICBzY2hlbWFQYXRoOiBuaWwsXG4gICAgICBlcnJTY2hlbWFQYXRoOiBgJHtpdC5lcnJTY2hlbWFQYXRofS8ke2tleXdvcmR9YCxcbiAgICAgIHRvcFNjaGVtYVJlZjogc2NoZW1hUmVmLFxuICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHZhbGlkXG4gIClcbiAgY3h0LnBhc3ModmFsaWQsICgpID0+IGN4dC5lcnJvcih0cnVlKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZ1bmNLZXl3b3JkQ29kZShjeHQ6IEtleXdvcmRDeHQsIGRlZjogRnVuY0tleXdvcmREZWZpbml0aW9uKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGtleXdvcmQsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCAkZGF0YSwgaXR9ID0gY3h0XG4gIGNoZWNrQXN5bmNLZXl3b3JkKGl0LCBkZWYpXG4gIGNvbnN0IHZhbGlkYXRlID1cbiAgICAhJGRhdGEgJiYgZGVmLmNvbXBpbGUgPyBkZWYuY29tcGlsZS5jYWxsKGl0LnNlbGYsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdCkgOiBkZWYudmFsaWRhdGVcbiAgY29uc3QgdmFsaWRhdGVSZWYgPSB1c2VLZXl3b3JkKGdlbiwga2V5d29yZCwgdmFsaWRhdGUpXG4gIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIpXG4gIGN4dC5ibG9jayRkYXRhKHZhbGlkLCB2YWxpZGF0ZUtleXdvcmQpXG4gIGN4dC5vayhkZWYudmFsaWQgPz8gdmFsaWQpXG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVLZXl3b3JkKCk6IHZvaWQge1xuICAgIGlmIChkZWYuZXJyb3JzID09PSBmYWxzZSkge1xuICAgICAgYXNzaWduVmFsaWQoKVxuICAgICAgaWYgKGRlZi5tb2RpZnlpbmcpIG1vZGlmeURhdGEoY3h0KVxuICAgICAgcmVwb3J0RXJycygoKSA9PiBjeHQuZXJyb3IoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcnVsZUVycnMgPSBkZWYuYXN5bmMgPyB2YWxpZGF0ZUFzeW5jKCkgOiB2YWxpZGF0ZVN5bmMoKVxuICAgICAgaWYgKGRlZi5tb2RpZnlpbmcpIG1vZGlmeURhdGEoY3h0KVxuICAgICAgcmVwb3J0RXJycygoKSA9PiBhZGRFcnJzKGN4dCwgcnVsZUVycnMpKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlQXN5bmMoKTogTmFtZSB7XG4gICAgY29uc3QgcnVsZUVycnMgPSBnZW4ubGV0KFwicnVsZUVycnNcIiwgbnVsbClcbiAgICBnZW4udHJ5KFxuICAgICAgKCkgPT4gYXNzaWduVmFsaWQoX2Bhd2FpdCBgKSxcbiAgICAgIChlKSA9PlxuICAgICAgICBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSkuaWYoXG4gICAgICAgICAgX2Ake2V9IGluc3RhbmNlb2YgJHtpdC5WYWxpZGF0aW9uRXJyb3IgYXMgTmFtZX1gLFxuICAgICAgICAgICgpID0+IGdlbi5hc3NpZ24ocnVsZUVycnMsIF9gJHtlfS5lcnJvcnNgKSxcbiAgICAgICAgICAoKSA9PiBnZW4udGhyb3coZSlcbiAgICAgICAgKVxuICAgIClcbiAgICByZXR1cm4gcnVsZUVycnNcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlU3luYygpOiBDb2RlIHtcbiAgICBjb25zdCB2YWxpZGF0ZUVycnMgPSBfYCR7dmFsaWRhdGVSZWZ9LmVycm9yc2BcbiAgICBnZW4uYXNzaWduKHZhbGlkYXRlRXJycywgbnVsbClcbiAgICBhc3NpZ25WYWxpZChuaWwpXG4gICAgcmV0dXJuIHZhbGlkYXRlRXJyc1xuICB9XG5cbiAgZnVuY3Rpb24gYXNzaWduVmFsaWQoX2F3YWl0OiBDb2RlID0gZGVmLmFzeW5jID8gX2Bhd2FpdCBgIDogbmlsKTogdm9pZCB7XG4gICAgY29uc3QgcGFzc0N4dCA9IGl0Lm9wdHMucGFzc0NvbnRleHQgPyBOLnRoaXMgOiBOLnNlbGZcbiAgICBjb25zdCBwYXNzU2NoZW1hID0gISgoXCJjb21waWxlXCIgaW4gZGVmICYmICEkZGF0YSkgfHwgZGVmLnNjaGVtYSA9PT0gZmFsc2UpXG4gICAgZ2VuLmFzc2lnbihcbiAgICAgIHZhbGlkLFxuICAgICAgX2Ake19hd2FpdH0ke2NhbGxWYWxpZGF0ZUNvZGUoY3h0LCB2YWxpZGF0ZVJlZiwgcGFzc0N4dCwgcGFzc1NjaGVtYSl9YCxcbiAgICAgIGRlZi5tb2RpZnlpbmdcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiByZXBvcnRFcnJzKGVycm9yczogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGdlbi5pZihub3QoZGVmLnZhbGlkID8/IHZhbGlkKSwgZXJyb3JzKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1vZGlmeURhdGEoY3h0OiBLZXl3b3JkQ3h0KTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGRhdGEsIGl0fSA9IGN4dFxuICBnZW4uaWYoaXQucGFyZW50RGF0YSwgKCkgPT4gZ2VuLmFzc2lnbihkYXRhLCBfYCR7aXQucGFyZW50RGF0YX1bJHtpdC5wYXJlbnREYXRhUHJvcGVydHl9XWApKVxufVxuXG5mdW5jdGlvbiBhZGRFcnJzKGN4dDogS2V5d29yZEN4dCwgZXJyczogQ29kZSk6IHZvaWQge1xuICBjb25zdCB7Z2VufSA9IGN4dFxuICBnZW4uaWYoXG4gICAgX2BBcnJheS5pc0FycmF5KCR7ZXJyc30pYCxcbiAgICAoKSA9PiB7XG4gICAgICBnZW5cbiAgICAgICAgLmFzc2lnbihOLnZFcnJvcnMsIF9gJHtOLnZFcnJvcnN9ID09PSBudWxsID8gJHtlcnJzfSA6ICR7Ti52RXJyb3JzfS5jb25jYXQoJHtlcnJzfSlgKVxuICAgICAgICAuYXNzaWduKE4uZXJyb3JzLCBfYCR7Ti52RXJyb3JzfS5sZW5ndGhgKVxuICAgICAgZXh0ZW5kRXJyb3JzKGN4dClcbiAgICB9LFxuICAgICgpID0+IGN4dC5lcnJvcigpXG4gIClcbn1cblxuZnVuY3Rpb24gY2hlY2tBc3luY0tleXdvcmQoe3NjaGVtYUVudn06IFNjaGVtYU9iakN4dCwgZGVmOiBGdW5jS2V5d29yZERlZmluaXRpb24pOiB2b2lkIHtcbiAgaWYgKGRlZi5hc3luYyAmJiAhc2NoZW1hRW52LiRhc3luYykgdGhyb3cgbmV3IEVycm9yKFwiYXN5bmMga2V5d29yZCBpbiBzeW5jIHNjaGVtYVwiKVxufVxuXG5mdW5jdGlvbiB1c2VLZXl3b3JkKGdlbjogQ29kZUdlbiwga2V5d29yZDogc3RyaW5nLCByZXN1bHQ/OiBLZXl3b3JkQ29tcGlsYXRpb25SZXN1bHQpOiBOYW1lIHtcbiAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoYGtleXdvcmQgXCIke2tleXdvcmR9XCIgZmFpbGVkIHRvIGNvbXBpbGVgKVxuICByZXR1cm4gZ2VuLnNjb3BlVmFsdWUoXG4gICAgXCJrZXl3b3JkXCIsXG4gICAgdHlwZW9mIHJlc3VsdCA9PSBcImZ1bmN0aW9uXCIgPyB7cmVmOiByZXN1bHR9IDoge3JlZjogcmVzdWx0LCBjb2RlOiBzdHJpbmdpZnkocmVzdWx0KX1cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRTY2hlbWFUeXBlKFxuICBzY2hlbWE6IHVua25vd24sXG4gIHNjaGVtYVR5cGU6IEpTT05UeXBlW10sXG4gIGFsbG93VW5kZWZpbmVkID0gZmFsc2Vcbik6IGJvb2xlYW4ge1xuICAvLyBUT0RPIGFkZCB0ZXN0c1xuICByZXR1cm4gKFxuICAgICFzY2hlbWFUeXBlLmxlbmd0aCB8fFxuICAgIHNjaGVtYVR5cGUuc29tZSgoc3QpID0+XG4gICAgICBzdCA9PT0gXCJhcnJheVwiXG4gICAgICAgID8gQXJyYXkuaXNBcnJheShzY2hlbWEpXG4gICAgICAgIDogc3QgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyBzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHNjaGVtYSlcbiAgICAgICAgOiB0eXBlb2Ygc2NoZW1hID09IHN0IHx8IChhbGxvd1VuZGVmaW5lZCAmJiB0eXBlb2Ygc2NoZW1hID09IFwidW5kZWZpbmVkXCIpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUtleXdvcmRVc2FnZShcbiAge3NjaGVtYSwgb3B0cywgc2VsZiwgZXJyU2NoZW1hUGF0aH06IFNjaGVtYU9iakN4dCxcbiAgZGVmOiBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBrZXl3b3JkOiBzdHJpbmdcbik6IHZvaWQge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVmLmtleXdvcmQpID8gIWRlZi5rZXl3b3JkLmluY2x1ZGVzKGtleXdvcmQpIDogZGVmLmtleXdvcmQgIT09IGtleXdvcmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgfVxuXG4gIGNvbnN0IGRlcHMgPSBkZWYuZGVwZW5kZW5jaWVzXG4gIGlmIChkZXBzPy5zb21lKChrd2QpID0+ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2NoZW1hLCBrd2QpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcGFyZW50IHNjaGVtYSBtdXN0IGhhdmUgZGVwZW5kZW5jaWVzIG9mICR7a2V5d29yZH06ICR7ZGVwcy5qb2luKFwiLFwiKX1gKVxuICB9XG5cbiAgaWYgKGRlZi52YWxpZGF0ZVNjaGVtYSkge1xuICAgIGNvbnN0IHZhbGlkID0gZGVmLnZhbGlkYXRlU2NoZW1hKHNjaGVtYVtrZXl3b3JkXSlcbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICBjb25zdCBtc2cgPVxuICAgICAgICBga2V5d29yZCBcIiR7a2V5d29yZH1cIiB2YWx1ZSBpcyBpbnZhbGlkIGF0IHBhdGggXCIke2VyclNjaGVtYVBhdGh9XCI6IGAgK1xuICAgICAgICBzZWxmLmVycm9yc1RleHQoZGVmLnZhbGlkYXRlU2NoZW1hLmVycm9ycylcbiAgICAgIGlmIChvcHRzLnZhbGlkYXRlU2NoZW1hID09PSBcImxvZ1wiKSBzZWxmLmxvZ2dlci5lcnJvcihtc2cpXG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvcihtc2cpXG4gICAgfVxuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge0FueVNjaGVtYX0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFPYmpDeHR9IGZyb20gXCIuLlwiXG5pbXBvcnQge18sIHN0ciwgZ2V0UHJvcGVydHksIENvZGUsIE5hbWV9IGZyb20gXCIuLi9jb2RlZ2VuXCJcbmltcG9ydCB7ZXNjYXBlRnJhZ21lbnQsIGdldEVycm9yUGF0aCwgVHlwZX0gZnJvbSBcIi4uL3V0aWxcIlxuaW1wb3J0IHR5cGUge0pTT05UeXBlfSBmcm9tIFwiLi4vcnVsZXNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjaGVtYUNvbnRleHQge1xuICAvLyBUT0RPIHVzZSBPcHRpb25hbD8gYWxpZ24gd2l0aCBTY2hlbUN4dCBwcm9wZXJ0eSB0eXBlc1xuICBzY2hlbWE6IEFueVNjaGVtYVxuICBzY2hlbWFQYXRoOiBDb2RlXG4gIGVyclNjaGVtYVBhdGg6IHN0cmluZ1xuICB0b3BTY2hlbWFSZWY/OiBDb2RlXG4gIGVycm9yUGF0aD86IENvZGVcbiAgZGF0YUxldmVsPzogbnVtYmVyXG4gIGRhdGFUeXBlcz86IEpTT05UeXBlW11cbiAgZGF0YT86IE5hbWVcbiAgcGFyZW50RGF0YT86IE5hbWVcbiAgcGFyZW50RGF0YVByb3BlcnR5PzogQ29kZSB8IG51bWJlclxuICBkYXRhTmFtZXM/OiBOYW1lW11cbiAgZGF0YVBhdGhBcnI/OiAoQ29kZSB8IG51bWJlcilbXVxuICBwcm9wZXJ0eU5hbWU/OiBOYW1lXG4gIGp0ZERpc2NyaW1pbmF0b3I/OiBzdHJpbmdcbiAganRkTWV0YWRhdGE/OiBib29sZWFuXG4gIGNvbXBvc2l0ZVJ1bGU/OiB0cnVlXG4gIGNyZWF0ZUVycm9ycz86IGJvb2xlYW5cbiAgYWxsRXJyb3JzPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBTdWJzY2hlbWFBcmdzID0gUGFydGlhbDx7XG4gIGtleXdvcmQ6IHN0cmluZ1xuICBzY2hlbWFQcm9wOiBzdHJpbmcgfCBudW1iZXJcbiAgc2NoZW1hOiBBbnlTY2hlbWFcbiAgc2NoZW1hUGF0aDogQ29kZVxuICBlcnJTY2hlbWFQYXRoOiBzdHJpbmdcbiAgdG9wU2NoZW1hUmVmOiBDb2RlXG4gIGRhdGE6IE5hbWUgfCBDb2RlXG4gIGRhdGFQcm9wOiBDb2RlIHwgc3RyaW5nIHwgbnVtYmVyXG4gIGRhdGFUeXBlczogSlNPTlR5cGVbXVxuICBkZWZpbmVkUHJvcGVydGllczogU2V0PHN0cmluZz5cbiAgcHJvcGVydHlOYW1lOiBOYW1lXG4gIGRhdGFQcm9wVHlwZTogVHlwZVxuICBqdGREaXNjcmltaW5hdG9yOiBzdHJpbmdcbiAganRkTWV0YWRhdGE6IGJvb2xlYW5cbiAgY29tcG9zaXRlUnVsZTogdHJ1ZVxuICBjcmVhdGVFcnJvcnM6IGJvb2xlYW5cbiAgYWxsRXJyb3JzOiBib29sZWFuXG59PlxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3Vic2NoZW1hKFxuICBpdDogU2NoZW1hT2JqQ3h0LFxuICB7a2V5d29yZCwgc2NoZW1hUHJvcCwgc2NoZW1hLCBzY2hlbWFQYXRoLCBlcnJTY2hlbWFQYXRoLCB0b3BTY2hlbWFSZWZ9OiBTdWJzY2hlbWFBcmdzXG4pOiBTdWJzY2hlbWFDb250ZXh0IHtcbiAgaWYgKGtleXdvcmQgIT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYm90aCBcImtleXdvcmRcIiBhbmQgXCJzY2hlbWFcIiBwYXNzZWQsIG9ubHkgb25lIGFsbG93ZWQnKVxuICB9XG5cbiAgaWYgKGtleXdvcmQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHNjaCA9IGl0LnNjaGVtYVtrZXl3b3JkXVxuICAgIHJldHVybiBzY2hlbWFQcm9wID09PSB1bmRlZmluZWRcbiAgICAgID8ge1xuICAgICAgICAgIHNjaGVtYTogc2NoLFxuICAgICAgICAgIHNjaGVtYVBhdGg6IF9gJHtpdC5zY2hlbWFQYXRofSR7Z2V0UHJvcGVydHkoa2V5d29yZCl9YCxcbiAgICAgICAgICBlcnJTY2hlbWFQYXRoOiBgJHtpdC5lcnJTY2hlbWFQYXRofS8ke2tleXdvcmR9YCxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgc2NoZW1hOiBzY2hbc2NoZW1hUHJvcF0sXG4gICAgICAgICAgc2NoZW1hUGF0aDogX2Ake2l0LnNjaGVtYVBhdGh9JHtnZXRQcm9wZXJ0eShrZXl3b3JkKX0ke2dldFByb3BlcnR5KHNjaGVtYVByb3ApfWAsXG4gICAgICAgICAgZXJyU2NoZW1hUGF0aDogYCR7aXQuZXJyU2NoZW1hUGF0aH0vJHtrZXl3b3JkfS8ke2VzY2FwZUZyYWdtZW50KHNjaGVtYVByb3ApfWAsXG4gICAgICAgIH1cbiAgfVxuXG4gIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzY2hlbWFQYXRoID09PSB1bmRlZmluZWQgfHwgZXJyU2NoZW1hUGF0aCA9PT0gdW5kZWZpbmVkIHx8IHRvcFNjaGVtYVJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wic2NoZW1hUGF0aFwiLCBcImVyclNjaGVtYVBhdGhcIiBhbmQgXCJ0b3BTY2hlbWFSZWZcIiBhcmUgcmVxdWlyZWQgd2l0aCBcInNjaGVtYVwiJylcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYSxcbiAgICAgIHNjaGVtYVBhdGgsXG4gICAgICB0b3BTY2hlbWFSZWYsXG4gICAgICBlcnJTY2hlbWFQYXRoLFxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignZWl0aGVyIFwia2V5d29yZFwiIG9yIFwic2NoZW1hXCIgbXVzdCBiZSBwYXNzZWQnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kU3Vic2NoZW1hRGF0YShcbiAgc3Vic2NoZW1hOiBTdWJzY2hlbWFDb250ZXh0LFxuICBpdDogU2NoZW1hT2JqQ3h0LFxuICB7ZGF0YVByb3AsIGRhdGFQcm9wVHlwZTogZHBUeXBlLCBkYXRhLCBkYXRhVHlwZXMsIHByb3BlcnR5TmFtZX06IFN1YnNjaGVtYUFyZ3Ncbik6IHZvaWQge1xuICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkICYmIGRhdGFQcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggXCJkYXRhXCIgYW5kIFwiZGF0YVByb3BcIiBwYXNzZWQsIG9ubHkgb25lIGFsbG93ZWQnKVxuICB9XG5cbiAgY29uc3Qge2dlbn0gPSBpdFxuXG4gIGlmIChkYXRhUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qge2Vycm9yUGF0aCwgZGF0YVBhdGhBcnIsIG9wdHN9ID0gaXRcbiAgICBjb25zdCBuZXh0RGF0YSA9IGdlbi5sZXQoXCJkYXRhXCIsIF9gJHtpdC5kYXRhfSR7Z2V0UHJvcGVydHkoZGF0YVByb3ApfWAsIHRydWUpXG4gICAgZGF0YUNvbnRleHRQcm9wcyhuZXh0RGF0YSlcbiAgICBzdWJzY2hlbWEuZXJyb3JQYXRoID0gc3RyYCR7ZXJyb3JQYXRofSR7Z2V0RXJyb3JQYXRoKGRhdGFQcm9wLCBkcFR5cGUsIG9wdHMuanNQcm9wZXJ0eVN5bnRheCl9YFxuICAgIHN1YnNjaGVtYS5wYXJlbnREYXRhUHJvcGVydHkgPSBfYCR7ZGF0YVByb3B9YFxuICAgIHN1YnNjaGVtYS5kYXRhUGF0aEFyciA9IFsuLi5kYXRhUGF0aEFyciwgc3Vic2NoZW1hLnBhcmVudERhdGFQcm9wZXJ0eV1cbiAgfVxuXG4gIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXh0RGF0YSA9IGRhdGEgaW5zdGFuY2VvZiBOYW1lID8gZGF0YSA6IGdlbi5sZXQoXCJkYXRhXCIsIGRhdGEsIHRydWUpIC8vIHJlcGxhY2VhYmxlIGlmIHVzZWQgb25jZT9cbiAgICBkYXRhQ29udGV4dFByb3BzKG5leHREYXRhKVxuICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IHVuZGVmaW5lZCkgc3Vic2NoZW1hLnByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZVxuICAgIC8vIFRPRE8gc29tZXRoaW5nIGlzIHBvc3NpYmx5IHdyb25nIGhlcmUgd2l0aCBub3QgY2hhbmdpbmcgcGFyZW50RGF0YVByb3BlcnR5IGFuZCBub3QgYXBwZW5kaW5nIGRhdGFQYXRoQXJyXG4gIH1cblxuICBpZiAoZGF0YVR5cGVzKSBzdWJzY2hlbWEuZGF0YVR5cGVzID0gZGF0YVR5cGVzXG5cbiAgZnVuY3Rpb24gZGF0YUNvbnRleHRQcm9wcyhfbmV4dERhdGE6IE5hbWUpOiB2b2lkIHtcbiAgICBzdWJzY2hlbWEuZGF0YSA9IF9uZXh0RGF0YVxuICAgIHN1YnNjaGVtYS5kYXRhTGV2ZWwgPSBpdC5kYXRhTGV2ZWwgKyAxXG4gICAgc3Vic2NoZW1hLmRhdGFUeXBlcyA9IFtdXG4gICAgaXQuZGVmaW5lZFByb3BlcnRpZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICAgIHN1YnNjaGVtYS5wYXJlbnREYXRhID0gaXQuZGF0YVxuICAgIHN1YnNjaGVtYS5kYXRhTmFtZXMgPSBbLi4uaXQuZGF0YU5hbWVzLCBfbmV4dERhdGFdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZFN1YnNjaGVtYU1vZGUoXG4gIHN1YnNjaGVtYTogU3Vic2NoZW1hQ29udGV4dCxcbiAge2p0ZERpc2NyaW1pbmF0b3IsIGp0ZE1ldGFkYXRhLCBjb21wb3NpdGVSdWxlLCBjcmVhdGVFcnJvcnMsIGFsbEVycm9yc306IFN1YnNjaGVtYUFyZ3Ncbik6IHZvaWQge1xuICBpZiAoY29tcG9zaXRlUnVsZSAhPT0gdW5kZWZpbmVkKSBzdWJzY2hlbWEuY29tcG9zaXRlUnVsZSA9IGNvbXBvc2l0ZVJ1bGVcbiAgaWYgKGNyZWF0ZUVycm9ycyAhPT0gdW5kZWZpbmVkKSBzdWJzY2hlbWEuY3JlYXRlRXJyb3JzID0gY3JlYXRlRXJyb3JzXG4gIGlmIChhbGxFcnJvcnMgIT09IHVuZGVmaW5lZCkgc3Vic2NoZW1hLmFsbEVycm9ycyA9IGFsbEVycm9yc1xuICBzdWJzY2hlbWEuanRkRGlzY3JpbWluYXRvciA9IGp0ZERpc2NyaW1pbmF0b3IgLy8gbm90IGluaGVyaXRlZFxuICBzdWJzY2hlbWEuanRkTWV0YWRhdGEgPSBqdGRNZXRhZGF0YSAvLyBub3QgaW5oZXJpdGVkXG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vLyBkbyBub3QgZWRpdCAuanMgZmlsZXMgZGlyZWN0bHkgLSBlZGl0IHNyYy9pbmRleC5qc3RcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZXF1YWwoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cbiAgaWYgKGEgJiYgYiAmJiB0eXBlb2YgYSA9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiA9PSAnb2JqZWN0Jykge1xuICAgIGlmIChhLmNvbnN0cnVjdG9yICE9PSBiLmNvbnN0cnVjdG9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICB2YXIgbGVuZ3RoLCBpLCBrZXlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgICAgaWYgKCFlcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cblxuICAgIGlmIChhLmNvbnN0cnVjdG9yID09PSBSZWdFeHApIHJldHVybiBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncztcbiAgICBpZiAoYS52YWx1ZU9mICE9PSBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YpIHJldHVybiBhLnZhbHVlT2YoKSA9PT0gYi52YWx1ZU9mKCk7XG4gICAgaWYgKGEudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHJldHVybiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleXNbaV0pKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIWVxdWFsKGFba2V5XSwgYltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gdHJ1ZSBpZiBib3RoIE5hTiwgZmFsc2Ugb3RoZXJ3aXNlXG4gIHJldHVybiBhIT09YSAmJiBiIT09Yjtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHJhdmVyc2UgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzY2hlbWEsIG9wdHMsIGNiKSB7XG4gIC8vIExlZ2FjeSBzdXBwb3J0IGZvciB2MC4zLjEgYW5kIGVhcmxpZXIuXG4gIGlmICh0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuXG4gIGNiID0gb3B0cy5jYiB8fCBjYjtcbiAgdmFyIHByZSA9ICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykgPyBjYiA6IGNiLnByZSB8fCBmdW5jdGlvbigpIHt9O1xuICB2YXIgcG9zdCA9IGNiLnBvc3QgfHwgZnVuY3Rpb24oKSB7fTtcblxuICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hlbWEsICcnLCBzY2hlbWEpO1xufTtcblxuXG50cmF2ZXJzZS5rZXl3b3JkcyA9IHtcbiAgYWRkaXRpb25hbEl0ZW1zOiB0cnVlLFxuICBpdGVtczogdHJ1ZSxcbiAgY29udGFpbnM6IHRydWUsXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB0cnVlLFxuICBwcm9wZXJ0eU5hbWVzOiB0cnVlLFxuICBub3Q6IHRydWUsXG4gIGlmOiB0cnVlLFxuICB0aGVuOiB0cnVlLFxuICBlbHNlOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5hcnJheUtleXdvcmRzID0ge1xuICBpdGVtczogdHJ1ZSxcbiAgYWxsT2Y6IHRydWUsXG4gIGFueU9mOiB0cnVlLFxuICBvbmVPZjogdHJ1ZVxufTtcblxudHJhdmVyc2UucHJvcHNLZXl3b3JkcyA9IHtcbiAgJGRlZnM6IHRydWUsXG4gIGRlZmluaXRpb25zOiB0cnVlLFxuICBwcm9wZXJ0aWVzOiB0cnVlLFxuICBwYXR0ZXJuUHJvcGVydGllczogdHJ1ZSxcbiAgZGVwZW5kZW5jaWVzOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5za2lwS2V5d29yZHMgPSB7XG4gIGRlZmF1bHQ6IHRydWUsXG4gIGVudW06IHRydWUsXG4gIGNvbnN0OiB0cnVlLFxuICByZXF1aXJlZDogdHJ1ZSxcbiAgbWF4aW11bTogdHJ1ZSxcbiAgbWluaW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWF4aW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWluaW11bTogdHJ1ZSxcbiAgbXVsdGlwbGVPZjogdHJ1ZSxcbiAgbWF4TGVuZ3RoOiB0cnVlLFxuICBtaW5MZW5ndGg6IHRydWUsXG4gIHBhdHRlcm46IHRydWUsXG4gIGZvcm1hdDogdHJ1ZSxcbiAgbWF4SXRlbXM6IHRydWUsXG4gIG1pbkl0ZW1zOiB0cnVlLFxuICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgbWF4UHJvcGVydGllczogdHJ1ZSxcbiAgbWluUHJvcGVydGllczogdHJ1ZVxufTtcblxuXG5mdW5jdGlvbiBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpIHtcbiAgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBwcmUoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSB7XG4gICAgICB2YXIgc2NoID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2gpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdHJhdmVyc2UuYXJyYXlLZXl3b3Jkcykge1xuICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzY2gubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbaV0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBpLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLnByb3BzS2V5d29yZHMpIHtcbiAgICAgICAgaWYgKHNjaCAmJiB0eXBlb2Ygc2NoID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBzY2gpXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbcHJvcF0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBlc2NhcGVKc29uUHRyKHByb3ApLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgcHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLmtleXdvcmRzIHx8IChvcHRzLmFsbEtleXMgJiYgIShrZXkgaW4gdHJhdmVyc2Uuc2tpcEtleXdvcmRzKSkpIHtcbiAgICAgICAgX3RyYXZlcnNlKG9wdHMsIHByZSwgcG9zdCwgc2NoLCBqc29uUHRyICsgJy8nICsga2V5LCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSk7XG4gICAgICB9XG4gICAgfVxuICAgIHBvc3Qoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUpzb25QdHIoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJyk7XG59XG4iLCAiaW1wb3J0IHR5cGUge0FueVNjaGVtYSwgQW55U2NoZW1hT2JqZWN0LCBVcmlSZXNvbHZlcn0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIEFqdiBmcm9tIFwiLi4vYWp2XCJcbmltcG9ydCB0eXBlIHtVUklDb21wb25lbnR9IGZyb20gXCJmYXN0LXVyaVwiXG5pbXBvcnQge2VhY2hJdGVtfSBmcm9tIFwiLi91dGlsXCJcbmltcG9ydCAqIGFzIGVxdWFsIGZyb20gXCJmYXN0LWRlZXAtZXF1YWxcIlxuaW1wb3J0ICogYXMgdHJhdmVyc2UgZnJvbSBcImpzb24tc2NoZW1hLXRyYXZlcnNlXCJcblxuLy8gdGhlIGhhc2ggb2YgbG9jYWwgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIHNjaGVtYSAoY3JlYXRlZCBieSBnZXRTY2hlbWFSZWZzKSwgdXNlZCBmb3IgaW5saW5lIHJlc29sdXRpb25cbmV4cG9ydCB0eXBlIExvY2FsUmVmcyA9IHtbUmVmIGluIHN0cmluZ10/OiBBbnlTY2hlbWFPYmplY3R9XG5cbi8vIFRPRE8gcmVmYWN0b3IgdG8gdXNlIGtleXdvcmQgZGVmaW5pdGlvbnNcbmNvbnN0IFNJTVBMRV9JTkxJTkVEID0gbmV3IFNldChbXG4gIFwidHlwZVwiLFxuICBcImZvcm1hdFwiLFxuICBcInBhdHRlcm5cIixcbiAgXCJtYXhMZW5ndGhcIixcbiAgXCJtaW5MZW5ndGhcIixcbiAgXCJtYXhQcm9wZXJ0aWVzXCIsXG4gIFwibWluUHJvcGVydGllc1wiLFxuICBcIm1heEl0ZW1zXCIsXG4gIFwibWluSXRlbXNcIixcbiAgXCJtYXhpbXVtXCIsXG4gIFwibWluaW11bVwiLFxuICBcInVuaXF1ZUl0ZW1zXCIsXG4gIFwibXVsdGlwbGVPZlwiLFxuICBcInJlcXVpcmVkXCIsXG4gIFwiZW51bVwiLFxuICBcImNvbnN0XCIsXG5dKVxuXG5leHBvcnQgZnVuY3Rpb24gaW5saW5lUmVmKHNjaGVtYTogQW55U2NoZW1hLCBsaW1pdDogYm9vbGVhbiB8IG51bWJlciA9IHRydWUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiB0cnVlXG4gIGlmIChsaW1pdCA9PT0gdHJ1ZSkgcmV0dXJuICFoYXNSZWYoc2NoZW1hKVxuICBpZiAoIWxpbWl0KSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIGNvdW50S2V5cyhzY2hlbWEpIDw9IGxpbWl0XG59XG5cbmNvbnN0IFJFRl9LRVlXT1JEUyA9IG5ldyBTZXQoW1xuICBcIiRyZWZcIixcbiAgXCIkcmVjdXJzaXZlUmVmXCIsXG4gIFwiJHJlY3Vyc2l2ZUFuY2hvclwiLFxuICBcIiRkeW5hbWljUmVmXCIsXG4gIFwiJGR5bmFtaWNBbmNob3JcIixcbl0pXG5cbmZ1bmN0aW9uIGhhc1JlZihzY2hlbWE6IEFueVNjaGVtYU9iamVjdCk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICBpZiAoUkVGX0tFWVdPUkRTLmhhcyhrZXkpKSByZXR1cm4gdHJ1ZVxuICAgIGNvbnN0IHNjaCA9IHNjaGVtYVtrZXldXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoKSAmJiBzY2guc29tZShoYXNSZWYpKSByZXR1cm4gdHJ1ZVxuICAgIGlmICh0eXBlb2Ygc2NoID09IFwib2JqZWN0XCIgJiYgaGFzUmVmKHNjaCkpIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNvdW50S2V5cyhzY2hlbWE6IEFueVNjaGVtYU9iamVjdCk6IG51bWJlciB7XG4gIGxldCBjb3VudCA9IDBcbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSB7XG4gICAgaWYgKGtleSA9PT0gXCIkcmVmXCIpIHJldHVybiBJbmZpbml0eVxuICAgIGNvdW50KytcbiAgICBpZiAoU0lNUExFX0lOTElORUQuaGFzKGtleSkpIGNvbnRpbnVlXG4gICAgaWYgKHR5cGVvZiBzY2hlbWFba2V5XSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICBlYWNoSXRlbShzY2hlbWFba2V5XSwgKHNjaCkgPT4gKGNvdW50ICs9IGNvdW50S2V5cyhzY2gpKSlcbiAgICB9XG4gICAgaWYgKGNvdW50ID09PSBJbmZpbml0eSkgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgcmV0dXJuIGNvdW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsUGF0aChyZXNvbHZlcjogVXJpUmVzb2x2ZXIsIGlkID0gXCJcIiwgbm9ybWFsaXplPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemUgIT09IGZhbHNlKSBpZCA9IG5vcm1hbGl6ZUlkKGlkKVxuICBjb25zdCBwID0gcmVzb2x2ZXIucGFyc2UoaWQpXG4gIHJldHVybiBfZ2V0RnVsbFBhdGgocmVzb2x2ZXIsIHApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0RnVsbFBhdGgocmVzb2x2ZXI6IFVyaVJlc29sdmVyLCBwOiBVUklDb21wb25lbnQpOiBzdHJpbmcge1xuICBjb25zdCBzZXJpYWxpemVkID0gcmVzb2x2ZXIuc2VyaWFsaXplKHApXG4gIHJldHVybiBzZXJpYWxpemVkLnNwbGl0KFwiI1wiKVswXSArIFwiI1wiXG59XG5cbmNvbnN0IFRSQUlMSU5HX1NMQVNIX0hBU0ggPSAvI1xcLz8kL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gaWQgPyBpZC5yZXBsYWNlKFRSQUlMSU5HX1NMQVNIX0hBU0gsIFwiXCIpIDogXCJcIlxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVybChyZXNvbHZlcjogVXJpUmVzb2x2ZXIsIGJhc2VJZDogc3RyaW5nLCBpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWQgPSBub3JtYWxpemVJZChpZClcbiAgcmV0dXJuIHJlc29sdmVyLnJlc29sdmUoYmFzZUlkLCBpZClcbn1cblxuY29uc3QgQU5DSE9SID0gL15bYS16X11bLWEtejAtOS5fXSokL2lcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYVJlZnModGhpczogQWp2LCBzY2hlbWE6IEFueVNjaGVtYSwgYmFzZUlkOiBzdHJpbmcpOiBMb2NhbFJlZnMge1xuICBpZiAodHlwZW9mIHNjaGVtYSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHt9XG4gIGNvbnN0IHtzY2hlbWFJZCwgdXJpUmVzb2x2ZXJ9ID0gdGhpcy5vcHRzXG4gIGNvbnN0IHNjaElkID0gbm9ybWFsaXplSWQoc2NoZW1hW3NjaGVtYUlkXSB8fCBiYXNlSWQpXG4gIGNvbnN0IGJhc2VJZHM6IHtbSnNvblB0ciBpbiBzdHJpbmddPzogc3RyaW5nfSA9IHtcIlwiOiBzY2hJZH1cbiAgY29uc3QgcGF0aFByZWZpeCA9IGdldEZ1bGxQYXRoKHVyaVJlc29sdmVyLCBzY2hJZCwgZmFsc2UpXG4gIGNvbnN0IGxvY2FsUmVmczogTG9jYWxSZWZzID0ge31cbiAgY29uc3Qgc2NoZW1hUmVmczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KClcblxuICB0cmF2ZXJzZShzY2hlbWEsIHthbGxLZXlzOiB0cnVlfSwgKHNjaCwganNvblB0ciwgXywgcGFyZW50SnNvblB0cikgPT4ge1xuICAgIGlmIChwYXJlbnRKc29uUHRyID09PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aFByZWZpeCArIGpzb25QdHJcbiAgICBsZXQgaW5uZXJCYXNlSWQgPSBiYXNlSWRzW3BhcmVudEpzb25QdHJdXG4gICAgaWYgKHR5cGVvZiBzY2hbc2NoZW1hSWRdID09IFwic3RyaW5nXCIpIGlubmVyQmFzZUlkID0gYWRkUmVmLmNhbGwodGhpcywgc2NoW3NjaGVtYUlkXSlcbiAgICBhZGRBbmNob3IuY2FsbCh0aGlzLCBzY2guJGFuY2hvcilcbiAgICBhZGRBbmNob3IuY2FsbCh0aGlzLCBzY2guJGR5bmFtaWNBbmNob3IpXG4gICAgYmFzZUlkc1tqc29uUHRyXSA9IGlubmVyQmFzZUlkXG5cbiAgICBmdW5jdGlvbiBhZGRSZWYodGhpczogQWp2LCByZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG4gICAgICBjb25zdCBfcmVzb2x2ZSA9IHRoaXMub3B0cy51cmlSZXNvbHZlci5yZXNvbHZlXG4gICAgICByZWYgPSBub3JtYWxpemVJZChpbm5lckJhc2VJZCA/IF9yZXNvbHZlKGlubmVyQmFzZUlkLCByZWYpIDogcmVmKVxuICAgICAgaWYgKHNjaGVtYVJlZnMuaGFzKHJlZikpIHRocm93IGFtYmlndW9zKHJlZilcbiAgICAgIHNjaGVtYVJlZnMuYWRkKHJlZilcbiAgICAgIGxldCBzY2hPclJlZiA9IHRoaXMucmVmc1tyZWZdXG4gICAgICBpZiAodHlwZW9mIHNjaE9yUmVmID09IFwic3RyaW5nXCIpIHNjaE9yUmVmID0gdGhpcy5yZWZzW3NjaE9yUmVmXVxuICAgICAgaWYgKHR5cGVvZiBzY2hPclJlZiA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNoZWNrQW1iaWd1b3NSZWYoc2NoLCBzY2hPclJlZi5zY2hlbWEsIHJlZilcbiAgICAgIH0gZWxzZSBpZiAocmVmICE9PSBub3JtYWxpemVJZChmdWxsUGF0aCkpIHtcbiAgICAgICAgaWYgKHJlZlswXSA9PT0gXCIjXCIpIHtcbiAgICAgICAgICBjaGVja0FtYmlndW9zUmVmKHNjaCwgbG9jYWxSZWZzW3JlZl0sIHJlZilcbiAgICAgICAgICBsb2NhbFJlZnNbcmVmXSA9IHNjaFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmc1tyZWZdID0gZnVsbFBhdGhcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZlxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEFuY2hvcih0aGlzOiBBanYsIGFuY2hvcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgaWYgKHR5cGVvZiBhbmNob3IgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAoIUFOQ0hPUi50ZXN0KGFuY2hvcikpIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhbmNob3IgXCIke2FuY2hvcn1cImApXG4gICAgICAgIGFkZFJlZi5jYWxsKHRoaXMsIGAjJHthbmNob3J9YClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGxvY2FsUmVmc1xuXG4gIGZ1bmN0aW9uIGNoZWNrQW1iaWd1b3NSZWYoc2NoMTogQW55U2NoZW1hLCBzY2gyOiBBbnlTY2hlbWEgfCB1bmRlZmluZWQsIHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHNjaDIgIT09IHVuZGVmaW5lZCAmJiAhZXF1YWwoc2NoMSwgc2NoMikpIHRocm93IGFtYmlndW9zKHJlZilcbiAgfVxuXG4gIGZ1bmN0aW9uIGFtYmlndW9zKHJlZjogc3RyaW5nKTogRXJyb3Ige1xuICAgIHJldHVybiBuZXcgRXJyb3IoYHJlZmVyZW5jZSBcIiR7cmVmfVwiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hYClcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgQWRkZWRLZXl3b3JkRGVmaW5pdGlvbixcbiAgQW55U2NoZW1hLFxuICBBbnlTY2hlbWFPYmplY3QsXG4gIEtleXdvcmRFcnJvckN4dCxcbiAgS2V5d29yZEN4dFBhcmFtcyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtTY2hlbWFDeHQsIFNjaGVtYU9iakN4dH0gZnJvbSBcIi4uXCJcbmltcG9ydCB0eXBlIHtJbnN0YW5jZU9wdGlvbnN9IGZyb20gXCIuLi8uLi9jb3JlXCJcbmltcG9ydCB7Ym9vbE9yRW1wdHlTY2hlbWEsIHRvcEJvb2xPckVtcHR5U2NoZW1hfSBmcm9tIFwiLi9ib29sU2NoZW1hXCJcbmltcG9ydCB7Y29lcmNlQW5kQ2hlY2tEYXRhVHlwZSwgZ2V0U2NoZW1hVHlwZXN9IGZyb20gXCIuL2RhdGFUeXBlXCJcbmltcG9ydCB7c2hvdWxkVXNlR3JvdXAsIHNob3VsZFVzZVJ1bGV9IGZyb20gXCIuL2FwcGxpY2FiaWxpdHlcIlxuaW1wb3J0IHtjaGVja0RhdGFUeXBlLCBjaGVja0RhdGFUeXBlcywgcmVwb3J0VHlwZUVycm9yLCBEYXRhVHlwZX0gZnJvbSBcIi4vZGF0YVR5cGVcIlxuaW1wb3J0IHthc3NpZ25EZWZhdWx0c30gZnJvbSBcIi4vZGVmYXVsdHNcIlxuaW1wb3J0IHtmdW5jS2V5d29yZENvZGUsIG1hY3JvS2V5d29yZENvZGUsIHZhbGlkYXRlS2V5d29yZFVzYWdlLCB2YWxpZFNjaGVtYVR5cGV9IGZyb20gXCIuL2tleXdvcmRcIlxuaW1wb3J0IHtnZXRTdWJzY2hlbWEsIGV4dGVuZFN1YnNjaGVtYURhdGEsIFN1YnNjaGVtYUFyZ3MsIGV4dGVuZFN1YnNjaGVtYU1vZGV9IGZyb20gXCIuL3N1YnNjaGVtYVwiXG5pbXBvcnQge18sIG5pbCwgc3RyLCBvciwgbm90LCBnZXRQcm9wZXJ0eSwgQmxvY2ssIENvZGUsIE5hbWUsIENvZGVHZW59IGZyb20gXCIuLi9jb2RlZ2VuXCJcbmltcG9ydCBOIGZyb20gXCIuLi9uYW1lc1wiXG5pbXBvcnQge3Jlc29sdmVVcmx9IGZyb20gXCIuLi9yZXNvbHZlXCJcbmltcG9ydCB7XG4gIHNjaGVtYVJlZk9yVmFsLFxuICBzY2hlbWFIYXNSdWxlc0J1dFJlZixcbiAgY2hlY2tVbmtub3duUnVsZXMsXG4gIGNoZWNrU3RyaWN0TW9kZSxcbiAgdW5lc2NhcGVKc29uUG9pbnRlcixcbiAgbWVyZ2VFdmFsdWF0ZWQsXG59IGZyb20gXCIuLi91dGlsXCJcbmltcG9ydCB0eXBlIHtKU09OVHlwZSwgUnVsZSwgUnVsZUdyb3VwfSBmcm9tIFwiLi4vcnVsZXNcIlxuaW1wb3J0IHtcbiAgRXJyb3JQYXRocyxcbiAgcmVwb3J0RXJyb3IsXG4gIHJlcG9ydEV4dHJhRXJyb3IsXG4gIHJlc2V0RXJyb3JzQ291bnQsXG4gIGtleXdvcmQkRGF0YUVycm9yLFxufSBmcm9tIFwiLi4vZXJyb3JzXCJcblxuLy8gc2NoZW1hIGNvbXBpbGF0aW9uIC0gZ2VuZXJhdGVzIHZhbGlkYXRpb24gZnVuY3Rpb24sIHN1YnNjaGVtYUNvZGUgKGJlbG93KSBpcyB1c2VkIGZvciBzdWJzY2hlbWFzXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGdW5jdGlvbkNvZGUoaXQ6IFNjaGVtYUN4dCk6IHZvaWQge1xuICBpZiAoaXNTY2hlbWFPYmooaXQpKSB7XG4gICAgY2hlY2tLZXl3b3JkcyhpdClcbiAgICBpZiAoc2NoZW1hQ3h0SGFzUnVsZXMoaXQpKSB7XG4gICAgICB0b3BTY2hlbWFPYmpDb2RlKGl0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIHZhbGlkYXRlRnVuY3Rpb24oaXQsICgpID0+IHRvcEJvb2xPckVtcHR5U2NoZW1hKGl0KSlcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVGdW5jdGlvbihcbiAge2dlbiwgdmFsaWRhdGVOYW1lLCBzY2hlbWEsIHNjaGVtYUVudiwgb3B0c306IFNjaGVtYUN4dCxcbiAgYm9keTogQmxvY2tcbik6IHZvaWQge1xuICBpZiAob3B0cy5jb2RlLmVzNSkge1xuICAgIGdlbi5mdW5jKHZhbGlkYXRlTmFtZSwgX2Ake04uZGF0YX0sICR7Ti52YWxDeHR9YCwgc2NoZW1hRW52LiRhc3luYywgKCkgPT4ge1xuICAgICAgZ2VuLmNvZGUoX2BcInVzZSBzdHJpY3RcIjsgJHtmdW5jU291cmNlVXJsKHNjaGVtYSwgb3B0cyl9YClcbiAgICAgIGRlc3RydWN0dXJlVmFsQ3h0RVM1KGdlbiwgb3B0cylcbiAgICAgIGdlbi5jb2RlKGJvZHkpXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBnZW4uZnVuYyh2YWxpZGF0ZU5hbWUsIF9gJHtOLmRhdGF9LCAke2Rlc3RydWN0dXJlVmFsQ3h0KG9wdHMpfWAsIHNjaGVtYUVudi4kYXN5bmMsICgpID0+XG4gICAgICBnZW4uY29kZShmdW5jU291cmNlVXJsKHNjaGVtYSwgb3B0cykpLmNvZGUoYm9keSlcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzdHJ1Y3R1cmVWYWxDeHQob3B0czogSW5zdGFuY2VPcHRpb25zKTogQ29kZSB7XG4gIHJldHVybiBfYHske04uaW5zdGFuY2VQYXRofT1cIlwiLCAke04ucGFyZW50RGF0YX0sICR7Ti5wYXJlbnREYXRhUHJvcGVydHl9LCAke04ucm9vdERhdGF9PSR7XG4gICAgTi5kYXRhXG4gIH0ke29wdHMuZHluYW1pY1JlZiA/IF9gLCAke04uZHluYW1pY0FuY2hvcnN9PXt9YCA6IG5pbH19PXt9YFxufVxuXG5mdW5jdGlvbiBkZXN0cnVjdHVyZVZhbEN4dEVTNShnZW46IENvZGVHZW4sIG9wdHM6IEluc3RhbmNlT3B0aW9ucyk6IHZvaWQge1xuICBnZW4uaWYoXG4gICAgTi52YWxDeHQsXG4gICAgKCkgPT4ge1xuICAgICAgZ2VuLnZhcihOLmluc3RhbmNlUGF0aCwgX2Ake04udmFsQ3h0fS4ke04uaW5zdGFuY2VQYXRofWApXG4gICAgICBnZW4udmFyKE4ucGFyZW50RGF0YSwgX2Ake04udmFsQ3h0fS4ke04ucGFyZW50RGF0YX1gKVxuICAgICAgZ2VuLnZhcihOLnBhcmVudERhdGFQcm9wZXJ0eSwgX2Ake04udmFsQ3h0fS4ke04ucGFyZW50RGF0YVByb3BlcnR5fWApXG4gICAgICBnZW4udmFyKE4ucm9vdERhdGEsIF9gJHtOLnZhbEN4dH0uJHtOLnJvb3REYXRhfWApXG4gICAgICBpZiAob3B0cy5keW5hbWljUmVmKSBnZW4udmFyKE4uZHluYW1pY0FuY2hvcnMsIF9gJHtOLnZhbEN4dH0uJHtOLmR5bmFtaWNBbmNob3JzfWApXG4gICAgfSxcbiAgICAoKSA9PiB7XG4gICAgICBnZW4udmFyKE4uaW5zdGFuY2VQYXRoLCBfYFwiXCJgKVxuICAgICAgZ2VuLnZhcihOLnBhcmVudERhdGEsIF9gdW5kZWZpbmVkYClcbiAgICAgIGdlbi52YXIoTi5wYXJlbnREYXRhUHJvcGVydHksIF9gdW5kZWZpbmVkYClcbiAgICAgIGdlbi52YXIoTi5yb290RGF0YSwgTi5kYXRhKVxuICAgICAgaWYgKG9wdHMuZHluYW1pY1JlZikgZ2VuLnZhcihOLmR5bmFtaWNBbmNob3JzLCBfYHt9YClcbiAgICB9XG4gIClcbn1cblxuZnVuY3Rpb24gdG9wU2NoZW1hT2JqQ29kZShpdDogU2NoZW1hT2JqQ3h0KTogdm9pZCB7XG4gIGNvbnN0IHtzY2hlbWEsIG9wdHMsIGdlbn0gPSBpdFxuICB2YWxpZGF0ZUZ1bmN0aW9uKGl0LCAoKSA9PiB7XG4gICAgaWYgKG9wdHMuJGNvbW1lbnQgJiYgc2NoZW1hLiRjb21tZW50KSBjb21tZW50S2V5d29yZChpdClcbiAgICBjaGVja05vRGVmYXVsdChpdClcbiAgICBnZW4ubGV0KE4udkVycm9ycywgbnVsbClcbiAgICBnZW4ubGV0KE4uZXJyb3JzLCAwKVxuICAgIGlmIChvcHRzLnVuZXZhbHVhdGVkKSByZXNldEV2YWx1YXRlZChpdClcbiAgICB0eXBlQW5kS2V5d29yZHMoaXQpXG4gICAgcmV0dXJuUmVzdWx0cyhpdClcbiAgfSlcbiAgcmV0dXJuXG59XG5cbmZ1bmN0aW9uIHJlc2V0RXZhbHVhdGVkKGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgLy8gVE9ETyBtYXliZSBzb21lIGhvb2sgdG8gZXhlY3V0ZSBpdCBpbiB0aGUgZW5kIHRvIGNoZWNrIHdoZXRoZXIgcHJvcHMvaXRlbXMgYXJlIE5hbWUsIGFzIGluIGFzc2lnbkV2YWx1YXRlZFxuICBjb25zdCB7Z2VuLCB2YWxpZGF0ZU5hbWV9ID0gaXRcbiAgaXQuZXZhbHVhdGVkID0gZ2VuLmNvbnN0KFwiZXZhbHVhdGVkXCIsIF9gJHt2YWxpZGF0ZU5hbWV9LmV2YWx1YXRlZGApXG4gIGdlbi5pZihfYCR7aXQuZXZhbHVhdGVkfS5keW5hbWljUHJvcHNgLCAoKSA9PiBnZW4uYXNzaWduKF9gJHtpdC5ldmFsdWF0ZWR9LnByb3BzYCwgX2B1bmRlZmluZWRgKSlcbiAgZ2VuLmlmKF9gJHtpdC5ldmFsdWF0ZWR9LmR5bmFtaWNJdGVtc2AsICgpID0+IGdlbi5hc3NpZ24oX2Ake2l0LmV2YWx1YXRlZH0uaXRlbXNgLCBfYHVuZGVmaW5lZGApKVxufVxuXG5mdW5jdGlvbiBmdW5jU291cmNlVXJsKHNjaGVtYTogQW55U2NoZW1hLCBvcHRzOiBJbnN0YW5jZU9wdGlvbnMpOiBDb2RlIHtcbiAgY29uc3Qgc2NoSWQgPSB0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIgJiYgc2NoZW1hW29wdHMuc2NoZW1hSWRdXG4gIHJldHVybiBzY2hJZCAmJiAob3B0cy5jb2RlLnNvdXJjZSB8fCBvcHRzLmNvZGUucHJvY2VzcykgPyBfYC8qIyBzb3VyY2VVUkw9JHtzY2hJZH0gKi9gIDogbmlsXG59XG5cbi8vIHNjaGVtYSBjb21waWxhdGlvbiAtIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCByZWN1cnNpdmVseSB0byBnZW5lcmF0ZSBjb2RlIGZvciBzdWItc2NoZW1hc1xuZnVuY3Rpb24gc3Vic2NoZW1hQ29kZShpdDogU2NoZW1hQ3h0LCB2YWxpZDogTmFtZSk6IHZvaWQge1xuICBpZiAoaXNTY2hlbWFPYmooaXQpKSB7XG4gICAgY2hlY2tLZXl3b3JkcyhpdClcbiAgICBpZiAoc2NoZW1hQ3h0SGFzUnVsZXMoaXQpKSB7XG4gICAgICBzdWJTY2hlbWFPYmpDb2RlKGl0LCB2YWxpZClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBib29sT3JFbXB0eVNjaGVtYShpdCwgdmFsaWQpXG59XG5cbmZ1bmN0aW9uIHNjaGVtYUN4dEhhc1J1bGVzKHtzY2hlbWEsIHNlbGZ9OiBTY2hlbWFDeHQpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJib29sZWFuXCIpIHJldHVybiAhc2NoZW1hXG4gIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkgaWYgKHNlbGYuUlVMRVMuYWxsW2tleV0pIHJldHVybiB0cnVlXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBpc1NjaGVtYU9iaihpdDogU2NoZW1hQ3h0KTogaXQgaXMgU2NoZW1hT2JqQ3h0IHtcbiAgcmV0dXJuIHR5cGVvZiBpdC5zY2hlbWEgIT0gXCJib29sZWFuXCJcbn1cblxuZnVuY3Rpb24gc3ViU2NoZW1hT2JqQ29kZShpdDogU2NoZW1hT2JqQ3h0LCB2YWxpZDogTmFtZSk6IHZvaWQge1xuICBjb25zdCB7c2NoZW1hLCBnZW4sIG9wdHN9ID0gaXRcbiAgaWYgKG9wdHMuJGNvbW1lbnQgJiYgc2NoZW1hLiRjb21tZW50KSBjb21tZW50S2V5d29yZChpdClcbiAgdXBkYXRlQ29udGV4dChpdClcbiAgY2hlY2tBc3luY1NjaGVtYShpdClcbiAgY29uc3QgZXJyc0NvdW50ID0gZ2VuLmNvbnN0KFwiX2VycnNcIiwgTi5lcnJvcnMpXG4gIHR5cGVBbmRLZXl3b3JkcyhpdCwgZXJyc0NvdW50KVxuICAvLyBUT0RPIHZhclxuICBnZW4udmFyKHZhbGlkLCBfYCR7ZXJyc0NvdW50fSA9PT0gJHtOLmVycm9yc31gKVxufVxuXG5mdW5jdGlvbiBjaGVja0tleXdvcmRzKGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY2hlY2tVbmtub3duUnVsZXMoaXQpXG4gIGNoZWNrUmVmc0FuZEtleXdvcmRzKGl0KVxufVxuXG5mdW5jdGlvbiB0eXBlQW5kS2V5d29yZHMoaXQ6IFNjaGVtYU9iakN4dCwgZXJyc0NvdW50PzogTmFtZSk6IHZvaWQge1xuICBpZiAoaXQub3B0cy5qdGQpIHJldHVybiBzY2hlbWFLZXl3b3JkcyhpdCwgW10sIGZhbHNlLCBlcnJzQ291bnQpXG4gIGNvbnN0IHR5cGVzID0gZ2V0U2NoZW1hVHlwZXMoaXQuc2NoZW1hKVxuICBjb25zdCBjaGVja2VkVHlwZXMgPSBjb2VyY2VBbmRDaGVja0RhdGFUeXBlKGl0LCB0eXBlcylcbiAgc2NoZW1hS2V5d29yZHMoaXQsIHR5cGVzLCAhY2hlY2tlZFR5cGVzLCBlcnJzQ291bnQpXG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVmc0FuZEtleXdvcmRzKGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3Qge3NjaGVtYSwgZXJyU2NoZW1hUGF0aCwgb3B0cywgc2VsZn0gPSBpdFxuICBpZiAoc2NoZW1hLiRyZWYgJiYgb3B0cy5pZ25vcmVLZXl3b3Jkc1dpdGhSZWYgJiYgc2NoZW1hSGFzUnVsZXNCdXRSZWYoc2NoZW1hLCBzZWxmLlJVTEVTKSkge1xuICAgIHNlbGYubG9nZ2VyLndhcm4oYCRyZWY6IGtleXdvcmRzIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCIke2VyclNjaGVtYVBhdGh9XCJgKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrTm9EZWZhdWx0KGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3Qge3NjaGVtYSwgb3B0c30gPSBpdFxuICBpZiAoc2NoZW1hLmRlZmF1bHQgIT09IHVuZGVmaW5lZCAmJiBvcHRzLnVzZURlZmF1bHRzICYmIG9wdHMuc3RyaWN0U2NoZW1hKSB7XG4gICAgY2hlY2tTdHJpY3RNb2RlKGl0LCBcImRlZmF1bHQgaXMgaWdub3JlZCBpbiB0aGUgc2NoZW1hIHJvb3RcIilcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDb250ZXh0KGl0OiBTY2hlbWFPYmpDeHQpOiB2b2lkIHtcbiAgY29uc3Qgc2NoSWQgPSBpdC5zY2hlbWFbaXQub3B0cy5zY2hlbWFJZF1cbiAgaWYgKHNjaElkKSBpdC5iYXNlSWQgPSByZXNvbHZlVXJsKGl0Lm9wdHMudXJpUmVzb2x2ZXIsIGl0LmJhc2VJZCwgc2NoSWQpXG59XG5cbmZ1bmN0aW9uIGNoZWNrQXN5bmNTY2hlbWEoaXQ6IFNjaGVtYU9iakN4dCk6IHZvaWQge1xuICBpZiAoaXQuc2NoZW1hLiRhc3luYyAmJiAhaXQuc2NoZW1hRW52LiRhc3luYykgdGhyb3cgbmV3IEVycm9yKFwiYXN5bmMgc2NoZW1hIGluIHN5bmMgc2NoZW1hXCIpXG59XG5cbmZ1bmN0aW9uIGNvbW1lbnRLZXl3b3JkKHtnZW4sIHNjaGVtYUVudiwgc2NoZW1hLCBlcnJTY2hlbWFQYXRoLCBvcHRzfTogU2NoZW1hT2JqQ3h0KTogdm9pZCB7XG4gIGNvbnN0IG1zZyA9IHNjaGVtYS4kY29tbWVudFxuICBpZiAob3B0cy4kY29tbWVudCA9PT0gdHJ1ZSkge1xuICAgIGdlbi5jb2RlKF9gJHtOLnNlbGZ9LmxvZ2dlci5sb2coJHttc2d9KWApXG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdHMuJGNvbW1lbnQgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc3Qgc2NoZW1hUGF0aCA9IHN0cmAke2VyclNjaGVtYVBhdGh9LyRjb21tZW50YFxuICAgIGNvbnN0IHJvb3ROYW1lID0gZ2VuLnNjb3BlVmFsdWUoXCJyb290XCIsIHtyZWY6IHNjaGVtYUVudi5yb290fSlcbiAgICBnZW4uY29kZShfYCR7Ti5zZWxmfS5vcHRzLiRjb21tZW50KCR7bXNnfSwgJHtzY2hlbWFQYXRofSwgJHtyb290TmFtZX0uc2NoZW1hKWApXG4gIH1cbn1cblxuZnVuY3Rpb24gcmV0dXJuUmVzdWx0cyhpdDogU2NoZW1hQ3h0KTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIHNjaGVtYUVudiwgdmFsaWRhdGVOYW1lLCBWYWxpZGF0aW9uRXJyb3IsIG9wdHN9ID0gaXRcbiAgaWYgKHNjaGVtYUVudi4kYXN5bmMpIHtcbiAgICAvLyBUT0RPIGFzc2lnbiB1bmV2YWx1YXRlZFxuICAgIGdlbi5pZihcbiAgICAgIF9gJHtOLmVycm9yc30gPT09IDBgLFxuICAgICAgKCkgPT4gZ2VuLnJldHVybihOLmRhdGEpLFxuICAgICAgKCkgPT4gZ2VuLnRocm93KF9gbmV3ICR7VmFsaWRhdGlvbkVycm9yIGFzIE5hbWV9KCR7Ti52RXJyb3JzfSlgKVxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBnZW4uYXNzaWduKF9gJHt2YWxpZGF0ZU5hbWV9LmVycm9yc2AsIE4udkVycm9ycylcbiAgICBpZiAob3B0cy51bmV2YWx1YXRlZCkgYXNzaWduRXZhbHVhdGVkKGl0KVxuICAgIGdlbi5yZXR1cm4oX2Ake04uZXJyb3JzfSA9PT0gMGApXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzaWduRXZhbHVhdGVkKHtnZW4sIGV2YWx1YXRlZCwgcHJvcHMsIGl0ZW1zfTogU2NoZW1hQ3h0KTogdm9pZCB7XG4gIGlmIChwcm9wcyBpbnN0YW5jZW9mIE5hbWUpIGdlbi5hc3NpZ24oX2Ake2V2YWx1YXRlZH0ucHJvcHNgLCBwcm9wcylcbiAgaWYgKGl0ZW1zIGluc3RhbmNlb2YgTmFtZSkgZ2VuLmFzc2lnbihfYCR7ZXZhbHVhdGVkfS5pdGVtc2AsIGl0ZW1zKVxufVxuXG5mdW5jdGlvbiBzY2hlbWFLZXl3b3JkcyhcbiAgaXQ6IFNjaGVtYU9iakN4dCxcbiAgdHlwZXM6IEpTT05UeXBlW10sXG4gIHR5cGVFcnJvcnM6IGJvb2xlYW4sXG4gIGVycnNDb3VudD86IE5hbWVcbik6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBzY2hlbWEsIGRhdGEsIGFsbEVycm9ycywgb3B0cywgc2VsZn0gPSBpdFxuICBjb25zdCB7UlVMRVN9ID0gc2VsZlxuICBpZiAoc2NoZW1hLiRyZWYgJiYgKG9wdHMuaWdub3JlS2V5d29yZHNXaXRoUmVmIHx8ICFzY2hlbWFIYXNSdWxlc0J1dFJlZihzY2hlbWEsIFJVTEVTKSkpIHtcbiAgICBnZW4uYmxvY2soKCkgPT4ga2V5d29yZENvZGUoaXQsIFwiJHJlZlwiLCAoUlVMRVMuYWxsLiRyZWYgYXMgUnVsZSkuZGVmaW5pdGlvbikpIC8vIFRPRE8gdHlwZWNhc3RcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIW9wdHMuanRkKSBjaGVja1N0cmljdFR5cGVzKGl0LCB0eXBlcylcbiAgZ2VuLmJsb2NrKCgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIFJVTEVTLnJ1bGVzKSBncm91cEtleXdvcmRzKGdyb3VwKVxuICAgIGdyb3VwS2V5d29yZHMoUlVMRVMucG9zdClcbiAgfSlcblxuICBmdW5jdGlvbiBncm91cEtleXdvcmRzKGdyb3VwOiBSdWxlR3JvdXApOiB2b2lkIHtcbiAgICBpZiAoIXNob3VsZFVzZUdyb3VwKHNjaGVtYSwgZ3JvdXApKSByZXR1cm5cbiAgICBpZiAoZ3JvdXAudHlwZSkge1xuICAgICAgZ2VuLmlmKGNoZWNrRGF0YVR5cGUoZ3JvdXAudHlwZSwgZGF0YSwgb3B0cy5zdHJpY3ROdW1iZXJzKSlcbiAgICAgIGl0ZXJhdGVLZXl3b3JkcyhpdCwgZ3JvdXApXG4gICAgICBpZiAodHlwZXMubGVuZ3RoID09PSAxICYmIHR5cGVzWzBdID09PSBncm91cC50eXBlICYmIHR5cGVFcnJvcnMpIHtcbiAgICAgICAgZ2VuLmVsc2UoKVxuICAgICAgICByZXBvcnRUeXBlRXJyb3IoaXQpXG4gICAgICB9XG4gICAgICBnZW4uZW5kSWYoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlS2V5d29yZHMoaXQsIGdyb3VwKVxuICAgIH1cbiAgICAvLyBUT0RPIG1ha2UgaXQgXCJva1wiIGNhbGw/XG4gICAgaWYgKCFhbGxFcnJvcnMpIGdlbi5pZihfYCR7Ti5lcnJvcnN9ID09PSAke2VycnNDb3VudCB8fCAwfWApXG4gIH1cbn1cblxuZnVuY3Rpb24gaXRlcmF0ZUtleXdvcmRzKGl0OiBTY2hlbWFPYmpDeHQsIGdyb3VwOiBSdWxlR3JvdXApOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGdlbixcbiAgICBzY2hlbWEsXG4gICAgb3B0czoge3VzZURlZmF1bHRzfSxcbiAgfSA9IGl0XG4gIGlmICh1c2VEZWZhdWx0cykgYXNzaWduRGVmYXVsdHMoaXQsIGdyb3VwLnR5cGUpXG4gIGdlbi5ibG9jaygoKSA9PiB7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIGdyb3VwLnJ1bGVzKSB7XG4gICAgICBpZiAoc2hvdWxkVXNlUnVsZShzY2hlbWEsIHJ1bGUpKSB7XG4gICAgICAgIGtleXdvcmRDb2RlKGl0LCBydWxlLmtleXdvcmQsIHJ1bGUuZGVmaW5pdGlvbiwgZ3JvdXAudHlwZSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNoZWNrU3RyaWN0VHlwZXMoaXQ6IFNjaGVtYU9iakN4dCwgdHlwZXM6IEpTT05UeXBlW10pOiB2b2lkIHtcbiAgaWYgKGl0LnNjaGVtYUVudi5tZXRhIHx8ICFpdC5vcHRzLnN0cmljdFR5cGVzKSByZXR1cm5cbiAgY2hlY2tDb250ZXh0VHlwZXMoaXQsIHR5cGVzKVxuICBpZiAoIWl0Lm9wdHMuYWxsb3dVbmlvblR5cGVzKSBjaGVja011bHRpcGxlVHlwZXMoaXQsIHR5cGVzKVxuICBjaGVja0tleXdvcmRUeXBlcyhpdCwgaXQuZGF0YVR5cGVzKVxufVxuXG5mdW5jdGlvbiBjaGVja0NvbnRleHRUeXBlcyhpdDogU2NoZW1hT2JqQ3h0LCB0eXBlczogSlNPTlR5cGVbXSk6IHZvaWQge1xuICBpZiAoIXR5cGVzLmxlbmd0aCkgcmV0dXJuXG4gIGlmICghaXQuZGF0YVR5cGVzLmxlbmd0aCkge1xuICAgIGl0LmRhdGFUeXBlcyA9IHR5cGVzXG4gICAgcmV0dXJuXG4gIH1cbiAgdHlwZXMuZm9yRWFjaCgodCkgPT4ge1xuICAgIGlmICghaW5jbHVkZXNUeXBlKGl0LmRhdGFUeXBlcywgdCkpIHtcbiAgICAgIHN0cmljdFR5cGVzRXJyb3IoaXQsIGB0eXBlIFwiJHt0fVwiIG5vdCBhbGxvd2VkIGJ5IGNvbnRleHQgXCIke2l0LmRhdGFUeXBlcy5qb2luKFwiLFwiKX1cImApXG4gICAgfVxuICB9KVxuICBuYXJyb3dTY2hlbWFUeXBlcyhpdCwgdHlwZXMpXG59XG5cbmZ1bmN0aW9uIGNoZWNrTXVsdGlwbGVUeXBlcyhpdDogU2NoZW1hT2JqQ3h0LCB0czogSlNPTlR5cGVbXSk6IHZvaWQge1xuICBpZiAodHMubGVuZ3RoID4gMSAmJiAhKHRzLmxlbmd0aCA9PT0gMiAmJiB0cy5pbmNsdWRlcyhcIm51bGxcIikpKSB7XG4gICAgc3RyaWN0VHlwZXNFcnJvcihpdCwgXCJ1c2UgYWxsb3dVbmlvblR5cGVzIHRvIGFsbG93IHVuaW9uIHR5cGUga2V5d29yZFwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrS2V5d29yZFR5cGVzKGl0OiBTY2hlbWFPYmpDeHQsIHRzOiBKU09OVHlwZVtdKTogdm9pZCB7XG4gIGNvbnN0IHJ1bGVzID0gaXQuc2VsZi5SVUxFUy5hbGxcbiAgZm9yIChjb25zdCBrZXl3b3JkIGluIHJ1bGVzKSB7XG4gICAgY29uc3QgcnVsZSA9IHJ1bGVzW2tleXdvcmRdXG4gICAgaWYgKHR5cGVvZiBydWxlID09IFwib2JqZWN0XCIgJiYgc2hvdWxkVXNlUnVsZShpdC5zY2hlbWEsIHJ1bGUpKSB7XG4gICAgICBjb25zdCB7dHlwZX0gPSBydWxlLmRlZmluaXRpb25cbiAgICAgIGlmICh0eXBlLmxlbmd0aCAmJiAhdHlwZS5zb21lKCh0KSA9PiBoYXNBcHBsaWNhYmxlVHlwZSh0cywgdCkpKSB7XG4gICAgICAgIHN0cmljdFR5cGVzRXJyb3IoaXQsIGBtaXNzaW5nIHR5cGUgXCIke3R5cGUuam9pbihcIixcIil9XCIgZm9yIGtleXdvcmQgXCIke2tleXdvcmR9XCJgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNBcHBsaWNhYmxlVHlwZShzY2hUczogSlNPTlR5cGVbXSwga3dkVDogSlNPTlR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHNjaFRzLmluY2x1ZGVzKGt3ZFQpIHx8IChrd2RUID09PSBcIm51bWJlclwiICYmIHNjaFRzLmluY2x1ZGVzKFwiaW50ZWdlclwiKSlcbn1cblxuZnVuY3Rpb24gaW5jbHVkZXNUeXBlKHRzOiBKU09OVHlwZVtdLCB0OiBKU09OVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHMuaW5jbHVkZXModCkgfHwgKHQgPT09IFwiaW50ZWdlclwiICYmIHRzLmluY2x1ZGVzKFwibnVtYmVyXCIpKVxufVxuXG5mdW5jdGlvbiBuYXJyb3dTY2hlbWFUeXBlcyhpdDogU2NoZW1hT2JqQ3h0LCB3aXRoVHlwZXM6IEpTT05UeXBlW10pOiB2b2lkIHtcbiAgY29uc3QgdHM6IEpTT05UeXBlW10gPSBbXVxuICBmb3IgKGNvbnN0IHQgb2YgaXQuZGF0YVR5cGVzKSB7XG4gICAgaWYgKGluY2x1ZGVzVHlwZSh3aXRoVHlwZXMsIHQpKSB0cy5wdXNoKHQpXG4gICAgZWxzZSBpZiAod2l0aFR5cGVzLmluY2x1ZGVzKFwiaW50ZWdlclwiKSAmJiB0ID09PSBcIm51bWJlclwiKSB0cy5wdXNoKFwiaW50ZWdlclwiKVxuICB9XG4gIGl0LmRhdGFUeXBlcyA9IHRzXG59XG5cbmZ1bmN0aW9uIHN0cmljdFR5cGVzRXJyb3IoaXQ6IFNjaGVtYU9iakN4dCwgbXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qgc2NoZW1hUGF0aCA9IGl0LnNjaGVtYUVudi5iYXNlSWQgKyBpdC5lcnJTY2hlbWFQYXRoXG4gIG1zZyArPSBgIGF0IFwiJHtzY2hlbWFQYXRofVwiIChzdHJpY3RUeXBlcylgXG4gIGNoZWNrU3RyaWN0TW9kZShpdCwgbXNnLCBpdC5vcHRzLnN0cmljdFR5cGVzKVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZEN4dCBpbXBsZW1lbnRzIEtleXdvcmRFcnJvckN4dCB7XG4gIHJlYWRvbmx5IGdlbjogQ29kZUdlblxuICByZWFkb25seSBhbGxFcnJvcnM/OiBib29sZWFuXG4gIHJlYWRvbmx5IGtleXdvcmQ6IHN0cmluZ1xuICByZWFkb25seSBkYXRhOiBOYW1lIC8vIE5hbWUgcmVmZXJlbmNpbmcgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgdGhlIGRhdGEgaW5zdGFuY2VcbiAgcmVhZG9ubHkgJGRhdGE/OiBzdHJpbmcgfCBmYWxzZVxuICBzY2hlbWE6IGFueSAvLyBrZXl3b3JkIHZhbHVlIGluIHRoZSBzY2hlbWFcbiAgcmVhZG9ubHkgc2NoZW1hVmFsdWU6IENvZGUgfCBudW1iZXIgfCBib29sZWFuIC8vIENvZGUgcmVmZXJlbmNlIHRvIGtleXdvcmQgc2NoZW1hIHZhbHVlIG9yIHByaW1pdGl2ZSB2YWx1ZVxuICByZWFkb25seSBzY2hlbWFDb2RlOiBDb2RlIHwgbnVtYmVyIHwgYm9vbGVhbiAvLyBDb2RlIHJlZmVyZW5jZSB0byByZXNvbHZlZCBzY2hlbWEgdmFsdWUgKGRpZmZlcmVudCBpZiBzY2hlbWEgaXMgJGRhdGEpXG4gIHJlYWRvbmx5IHNjaGVtYVR5cGU6IEpTT05UeXBlW10gLy8gYWxsb3dlZCB0eXBlKHMpIG9mIGtleXdvcmQgdmFsdWUgaW4gdGhlIHNjaGVtYVxuICByZWFkb25seSBwYXJlbnRTY2hlbWE6IEFueVNjaGVtYU9iamVjdFxuICByZWFkb25seSBlcnJzQ291bnQ/OiBOYW1lIC8vIE5hbWUgcmVmZXJlbmNlIHRvIHRoZSBudW1iZXIgb2YgdmFsaWRhdGlvbiBlcnJvcnMgY29sbGVjdGVkIGJlZm9yZSB0aGlzIGtleXdvcmQsXG4gIC8vIHJlcXVpcmVzIG9wdGlvbiB0cmFja0Vycm9ycyBpbiBrZXl3b3JkIGRlZmluaXRpb25cbiAgcGFyYW1zOiBLZXl3b3JkQ3h0UGFyYW1zIC8vIG9iamVjdCB0byBwYXNzIHBhcmFtZXRlcnMgdG8gZXJyb3IgbWVzc2FnZXMgZnJvbSBrZXl3b3JkIGNvZGVcbiAgcmVhZG9ubHkgaXQ6IFNjaGVtYU9iakN4dCAvLyBzY2hlbWEgY29tcGlsYXRpb24gY29udGV4dCAoc2NoZW1hIGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gb2JqZWN0LCBub3QgYm9vbGVhbilcbiAgcmVhZG9ubHkgZGVmOiBBZGRlZEtleXdvcmREZWZpbml0aW9uXG5cbiAgY29uc3RydWN0b3IoaXQ6IFNjaGVtYU9iakN4dCwgZGVmOiBBZGRlZEtleXdvcmREZWZpbml0aW9uLCBrZXl3b3JkOiBzdHJpbmcpIHtcbiAgICB2YWxpZGF0ZUtleXdvcmRVc2FnZShpdCwgZGVmLCBrZXl3b3JkKVxuICAgIHRoaXMuZ2VuID0gaXQuZ2VuXG4gICAgdGhpcy5hbGxFcnJvcnMgPSBpdC5hbGxFcnJvcnNcbiAgICB0aGlzLmtleXdvcmQgPSBrZXl3b3JkXG4gICAgdGhpcy5kYXRhID0gaXQuZGF0YVxuICAgIHRoaXMuc2NoZW1hID0gaXQuc2NoZW1hW2tleXdvcmRdXG4gICAgdGhpcy4kZGF0YSA9IGRlZi4kZGF0YSAmJiBpdC5vcHRzLiRkYXRhICYmIHRoaXMuc2NoZW1hICYmIHRoaXMuc2NoZW1hLiRkYXRhXG4gICAgdGhpcy5zY2hlbWFWYWx1ZSA9IHNjaGVtYVJlZk9yVmFsKGl0LCB0aGlzLnNjaGVtYSwga2V5d29yZCwgdGhpcy4kZGF0YSlcbiAgICB0aGlzLnNjaGVtYVR5cGUgPSBkZWYuc2NoZW1hVHlwZVxuICAgIHRoaXMucGFyZW50U2NoZW1hID0gaXQuc2NoZW1hXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxuICAgIHRoaXMuaXQgPSBpdFxuICAgIHRoaXMuZGVmID0gZGVmXG5cbiAgICBpZiAodGhpcy4kZGF0YSkge1xuICAgICAgdGhpcy5zY2hlbWFDb2RlID0gaXQuZ2VuLmNvbnN0KFwidlNjaGVtYVwiLCBnZXREYXRhKHRoaXMuJGRhdGEsIGl0KSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY2hlbWFDb2RlID0gdGhpcy5zY2hlbWFWYWx1ZVxuICAgICAgaWYgKCF2YWxpZFNjaGVtYVR5cGUodGhpcy5zY2hlbWEsIGRlZi5zY2hlbWFUeXBlLCBkZWYuYWxsb3dVbmRlZmluZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtrZXl3b3JkfSB2YWx1ZSBtdXN0IGJlICR7SlNPTi5zdHJpbmdpZnkoZGVmLnNjaGVtYVR5cGUpfWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFwiY29kZVwiIGluIGRlZiA/IGRlZi50cmFja0Vycm9ycyA6IGRlZi5lcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmVycnNDb3VudCA9IGl0Lmdlbi5jb25zdChcIl9lcnJzXCIsIE4uZXJyb3JzKVxuICAgIH1cbiAgfVxuXG4gIHJlc3VsdChjb25kaXRpb246IENvZGUsIHN1Y2Nlc3NBY3Rpb24/OiAoKSA9PiB2b2lkLCBmYWlsQWN0aW9uPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbFJlc3VsdChub3QoY29uZGl0aW9uKSwgc3VjY2Vzc0FjdGlvbiwgZmFpbEFjdGlvbilcbiAgfVxuXG4gIGZhaWxSZXN1bHQoY29uZGl0aW9uOiBDb2RlLCBzdWNjZXNzQWN0aW9uPzogKCkgPT4gdm9pZCwgZmFpbEFjdGlvbj86ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmdlbi5pZihjb25kaXRpb24pXG4gICAgaWYgKGZhaWxBY3Rpb24pIGZhaWxBY3Rpb24oKVxuICAgIGVsc2UgdGhpcy5lcnJvcigpXG4gICAgaWYgKHN1Y2Nlc3NBY3Rpb24pIHtcbiAgICAgIHRoaXMuZ2VuLmVsc2UoKVxuICAgICAgc3VjY2Vzc0FjdGlvbigpXG4gICAgICBpZiAodGhpcy5hbGxFcnJvcnMpIHRoaXMuZ2VuLmVuZElmKClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYWxsRXJyb3JzKSB0aGlzLmdlbi5lbmRJZigpXG4gICAgICBlbHNlIHRoaXMuZ2VuLmVsc2UoKVxuICAgIH1cbiAgfVxuXG4gIHBhc3MoY29uZGl0aW9uOiBDb2RlLCBmYWlsQWN0aW9uPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbFJlc3VsdChub3QoY29uZGl0aW9uKSwgdW5kZWZpbmVkLCBmYWlsQWN0aW9uKVxuICB9XG5cbiAgZmFpbChjb25kaXRpb24/OiBDb2RlKTogdm9pZCB7XG4gICAgaWYgKGNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVycm9yKClcbiAgICAgIGlmICghdGhpcy5hbGxFcnJvcnMpIHRoaXMuZ2VuLmlmKGZhbHNlKSAvLyB0aGlzIGJyYW5jaCB3aWxsIGJlIHJlbW92ZWQgYnkgZ2VuLm9wdGltaXplXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5nZW4uaWYoY29uZGl0aW9uKVxuICAgIHRoaXMuZXJyb3IoKVxuICAgIGlmICh0aGlzLmFsbEVycm9ycykgdGhpcy5nZW4uZW5kSWYoKVxuICAgIGVsc2UgdGhpcy5nZW4uZWxzZSgpXG4gIH1cblxuICBmYWlsJGRhdGEoY29uZGl0aW9uOiBDb2RlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiRkYXRhKSByZXR1cm4gdGhpcy5mYWlsKGNvbmRpdGlvbilcbiAgICBjb25zdCB7c2NoZW1hQ29kZX0gPSB0aGlzXG4gICAgdGhpcy5mYWlsKF9gJHtzY2hlbWFDb2RlfSAhPT0gdW5kZWZpbmVkICYmICgke29yKHRoaXMuaW52YWxpZCRkYXRhKCksIGNvbmRpdGlvbil9KWApXG4gIH1cblxuICBlcnJvcihhcHBlbmQ/OiBib29sZWFuLCBlcnJvclBhcmFtcz86IEtleXdvcmRDeHRQYXJhbXMsIGVycm9yUGF0aHM/OiBFcnJvclBhdGhzKTogdm9pZCB7XG4gICAgaWYgKGVycm9yUGFyYW1zKSB7XG4gICAgICB0aGlzLnNldFBhcmFtcyhlcnJvclBhcmFtcylcbiAgICAgIHRoaXMuX2Vycm9yKGFwcGVuZCwgZXJyb3JQYXRocylcbiAgICAgIHRoaXMuc2V0UGFyYW1zKHt9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuX2Vycm9yKGFwcGVuZCwgZXJyb3JQYXRocylcbiAgfVxuXG4gIHByaXZhdGUgX2Vycm9yKGFwcGVuZD86IGJvb2xlYW4sIGVycm9yUGF0aHM/OiBFcnJvclBhdGhzKTogdm9pZCB7XG4gICAgOyhhcHBlbmQgPyByZXBvcnRFeHRyYUVycm9yIDogcmVwb3J0RXJyb3IpKHRoaXMsIHRoaXMuZGVmLmVycm9yLCBlcnJvclBhdGhzKVxuICB9XG5cbiAgJGRhdGFFcnJvcigpOiB2b2lkIHtcbiAgICByZXBvcnRFcnJvcih0aGlzLCB0aGlzLmRlZi4kZGF0YUVycm9yIHx8IGtleXdvcmQkRGF0YUVycm9yKVxuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXJyc0NvdW50ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcignYWRkIFwidHJhY2tFcnJvcnNcIiB0byBrZXl3b3JkIGRlZmluaXRpb24nKVxuICAgIHJlc2V0RXJyb3JzQ291bnQodGhpcy5nZW4sIHRoaXMuZXJyc0NvdW50KVxuICB9XG5cbiAgb2soY29uZDogQ29kZSB8IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWxsRXJyb3JzKSB0aGlzLmdlbi5pZihjb25kKVxuICB9XG5cbiAgc2V0UGFyYW1zKG9iajogS2V5d29yZEN4dFBhcmFtcywgYXNzaWduPzogdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChhc3NpZ24pIE9iamVjdC5hc3NpZ24odGhpcy5wYXJhbXMsIG9iailcbiAgICBlbHNlIHRoaXMucGFyYW1zID0gb2JqXG4gIH1cblxuICBibG9jayRkYXRhKHZhbGlkOiBOYW1lLCBjb2RlQmxvY2s6ICgpID0+IHZvaWQsICRkYXRhVmFsaWQ6IENvZGUgPSBuaWwpOiB2b2lkIHtcbiAgICB0aGlzLmdlbi5ibG9jaygoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrJGRhdGEodmFsaWQsICRkYXRhVmFsaWQpXG4gICAgICBjb2RlQmxvY2soKVxuICAgIH0pXG4gIH1cblxuICBjaGVjayRkYXRhKHZhbGlkOiBOYW1lID0gbmlsLCAkZGF0YVZhbGlkOiBDb2RlID0gbmlsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiRkYXRhKSByZXR1cm5cbiAgICBjb25zdCB7Z2VuLCBzY2hlbWFDb2RlLCBzY2hlbWFUeXBlLCBkZWZ9ID0gdGhpc1xuICAgIGdlbi5pZihvcihfYCR7c2NoZW1hQ29kZX0gPT09IHVuZGVmaW5lZGAsICRkYXRhVmFsaWQpKVxuICAgIGlmICh2YWxpZCAhPT0gbmlsKSBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKVxuICAgIGlmIChzY2hlbWFUeXBlLmxlbmd0aCB8fCBkZWYudmFsaWRhdGVTY2hlbWEpIHtcbiAgICAgIGdlbi5lbHNlSWYodGhpcy5pbnZhbGlkJGRhdGEoKSlcbiAgICAgIHRoaXMuJGRhdGFFcnJvcigpXG4gICAgICBpZiAodmFsaWQgIT09IG5pbCkgZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpXG4gICAgfVxuICAgIGdlbi5lbHNlKClcbiAgfVxuXG4gIGludmFsaWQkZGF0YSgpOiBDb2RlIHtcbiAgICBjb25zdCB7Z2VuLCBzY2hlbWFDb2RlLCBzY2hlbWFUeXBlLCBkZWYsIGl0fSA9IHRoaXNcbiAgICByZXR1cm4gb3Iod3JvbmckRGF0YVR5cGUoKSwgaW52YWxpZCREYXRhU2NoZW1hKCkpXG5cbiAgICBmdW5jdGlvbiB3cm9uZyREYXRhVHlwZSgpOiBDb2RlIHtcbiAgICAgIGlmIChzY2hlbWFUeXBlLmxlbmd0aCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKCEoc2NoZW1hQ29kZSBpbnN0YW5jZW9mIE5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgICAgICAgY29uc3Qgc3QgPSBBcnJheS5pc0FycmF5KHNjaGVtYVR5cGUpID8gc2NoZW1hVHlwZSA6IFtzY2hlbWFUeXBlXVxuICAgICAgICByZXR1cm4gX2Ake2NoZWNrRGF0YVR5cGVzKHN0LCBzY2hlbWFDb2RlLCBpdC5vcHRzLnN0cmljdE51bWJlcnMsIERhdGFUeXBlLldyb25nKX1gXG4gICAgICB9XG4gICAgICByZXR1cm4gbmlsXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZCREYXRhU2NoZW1hKCk6IENvZGUge1xuICAgICAgaWYgKGRlZi52YWxpZGF0ZVNjaGVtYSkge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVNjaGVtYVJlZiA9IGdlbi5zY29wZVZhbHVlKFwidmFsaWRhdGUkZGF0YVwiLCB7cmVmOiBkZWYudmFsaWRhdGVTY2hlbWF9KSAvLyBUT0RPIHZhbHVlLmNvZGUgZm9yIHN0YW5kYWxvbmVcbiAgICAgICAgcmV0dXJuIF9gISR7dmFsaWRhdGVTY2hlbWFSZWZ9KCR7c2NoZW1hQ29kZX0pYFxuICAgICAgfVxuICAgICAgcmV0dXJuIG5pbFxuICAgIH1cbiAgfVxuXG4gIHN1YnNjaGVtYShhcHBsOiBTdWJzY2hlbWFBcmdzLCB2YWxpZDogTmFtZSk6IFNjaGVtYUN4dCB7XG4gICAgY29uc3Qgc3Vic2NoZW1hID0gZ2V0U3Vic2NoZW1hKHRoaXMuaXQsIGFwcGwpXG4gICAgZXh0ZW5kU3Vic2NoZW1hRGF0YShzdWJzY2hlbWEsIHRoaXMuaXQsIGFwcGwpXG4gICAgZXh0ZW5kU3Vic2NoZW1hTW9kZShzdWJzY2hlbWEsIGFwcGwpXG4gICAgY29uc3QgbmV4dENvbnRleHQgPSB7Li4udGhpcy5pdCwgLi4uc3Vic2NoZW1hLCBpdGVtczogdW5kZWZpbmVkLCBwcm9wczogdW5kZWZpbmVkfVxuICAgIHN1YnNjaGVtYUNvZGUobmV4dENvbnRleHQsIHZhbGlkKVxuICAgIHJldHVybiBuZXh0Q29udGV4dFxuICB9XG5cbiAgbWVyZ2VFdmFsdWF0ZWQoc2NoZW1hQ3h0OiBTY2hlbWFDeHQsIHRvTmFtZT86IHR5cGVvZiBOYW1lKTogdm9pZCB7XG4gICAgY29uc3Qge2l0LCBnZW59ID0gdGhpc1xuICAgIGlmICghaXQub3B0cy51bmV2YWx1YXRlZCkgcmV0dXJuXG4gICAgaWYgKGl0LnByb3BzICE9PSB0cnVlICYmIHNjaGVtYUN4dC5wcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpdC5wcm9wcyA9IG1lcmdlRXZhbHVhdGVkLnByb3BzKGdlbiwgc2NoZW1hQ3h0LnByb3BzLCBpdC5wcm9wcywgdG9OYW1lKVxuICAgIH1cbiAgICBpZiAoaXQuaXRlbXMgIT09IHRydWUgJiYgc2NoZW1hQ3h0Lml0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGl0Lml0ZW1zID0gbWVyZ2VFdmFsdWF0ZWQuaXRlbXMoZ2VuLCBzY2hlbWFDeHQuaXRlbXMsIGl0Lml0ZW1zLCB0b05hbWUpXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VWYWxpZEV2YWx1YXRlZChzY2hlbWFDeHQ6IFNjaGVtYUN4dCwgdmFsaWQ6IE5hbWUpOiBib29sZWFuIHwgdm9pZCB7XG4gICAgY29uc3Qge2l0LCBnZW59ID0gdGhpc1xuICAgIGlmIChpdC5vcHRzLnVuZXZhbHVhdGVkICYmIChpdC5wcm9wcyAhPT0gdHJ1ZSB8fCBpdC5pdGVtcyAhPT0gdHJ1ZSkpIHtcbiAgICAgIGdlbi5pZih2YWxpZCwgKCkgPT4gdGhpcy5tZXJnZUV2YWx1YXRlZChzY2hlbWFDeHQsIE5hbWUpKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24ga2V5d29yZENvZGUoXG4gIGl0OiBTY2hlbWFPYmpDeHQsXG4gIGtleXdvcmQ6IHN0cmluZyxcbiAgZGVmOiBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBydWxlVHlwZT86IEpTT05UeXBlXG4pOiB2b2lkIHtcbiAgY29uc3QgY3h0ID0gbmV3IEtleXdvcmRDeHQoaXQsIGRlZiwga2V5d29yZClcbiAgaWYgKFwiY29kZVwiIGluIGRlZikge1xuICAgIGRlZi5jb2RlKGN4dCwgcnVsZVR5cGUpXG4gIH0gZWxzZSBpZiAoY3h0LiRkYXRhICYmIGRlZi52YWxpZGF0ZSkge1xuICAgIGZ1bmNLZXl3b3JkQ29kZShjeHQsIGRlZilcbiAgfSBlbHNlIGlmIChcIm1hY3JvXCIgaW4gZGVmKSB7XG4gICAgbWFjcm9LZXl3b3JkQ29kZShjeHQsIGRlZilcbiAgfSBlbHNlIGlmIChkZWYuY29tcGlsZSB8fCBkZWYudmFsaWRhdGUpIHtcbiAgICBmdW5jS2V5d29yZENvZGUoY3h0LCBkZWYpXG4gIH1cbn1cblxuY29uc3QgSlNPTl9QT0lOVEVSID0gL15cXC8oPzpbXn5dfH4wfH4xKSokL1xuY29uc3QgUkVMQVRJVkVfSlNPTl9QT0lOVEVSID0gL14oWzAtOV0rKSgjfFxcLyg/Oltefl18fjB8fjEpKik/JC9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhKFxuICAkZGF0YTogc3RyaW5nLFxuICB7ZGF0YUxldmVsLCBkYXRhTmFtZXMsIGRhdGFQYXRoQXJyfTogU2NoZW1hQ3h0XG4pOiBDb2RlIHwgbnVtYmVyIHtcbiAgbGV0IGpzb25Qb2ludGVyXG4gIGxldCBkYXRhOiBDb2RlXG4gIGlmICgkZGF0YSA9PT0gXCJcIikgcmV0dXJuIE4ucm9vdERhdGFcbiAgaWYgKCRkYXRhWzBdID09PSBcIi9cIikge1xuICAgIGlmICghSlNPTl9QT0lOVEVSLnRlc3QoJGRhdGEpKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSlNPTi1wb2ludGVyOiAkeyRkYXRhfWApXG4gICAganNvblBvaW50ZXIgPSAkZGF0YVxuICAgIGRhdGEgPSBOLnJvb3REYXRhXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IFJFTEFUSVZFX0pTT05fUE9JTlRFUi5leGVjKCRkYXRhKVxuICAgIGlmICghbWF0Y2hlcykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT04tcG9pbnRlcjogJHskZGF0YX1gKVxuICAgIGNvbnN0IHVwOiBudW1iZXIgPSArbWF0Y2hlc1sxXVxuICAgIGpzb25Qb2ludGVyID0gbWF0Y2hlc1syXVxuICAgIGlmIChqc29uUG9pbnRlciA9PT0gXCIjXCIpIHtcbiAgICAgIGlmICh1cCA+PSBkYXRhTGV2ZWwpIHRocm93IG5ldyBFcnJvcihlcnJvck1zZyhcInByb3BlcnR5L2luZGV4XCIsIHVwKSlcbiAgICAgIHJldHVybiBkYXRhUGF0aEFycltkYXRhTGV2ZWwgLSB1cF1cbiAgICB9XG4gICAgaWYgKHVwID4gZGF0YUxldmVsKSB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNc2coXCJkYXRhXCIsIHVwKSlcbiAgICBkYXRhID0gZGF0YU5hbWVzW2RhdGFMZXZlbCAtIHVwXVxuICAgIGlmICghanNvblBvaW50ZXIpIHJldHVybiBkYXRhXG4gIH1cblxuICBsZXQgZXhwciA9IGRhdGFcbiAgY29uc3Qgc2VnbWVudHMgPSBqc29uUG9pbnRlci5zcGxpdChcIi9cIilcbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgIGRhdGEgPSBfYCR7ZGF0YX0ke2dldFByb3BlcnR5KHVuZXNjYXBlSnNvblBvaW50ZXIoc2VnbWVudCkpfWBcbiAgICAgIGV4cHIgPSBfYCR7ZXhwcn0gJiYgJHtkYXRhfWBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV4cHJcblxuICBmdW5jdGlvbiBlcnJvck1zZyhwb2ludGVyVHlwZTogc3RyaW5nLCB1cDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYENhbm5vdCBhY2Nlc3MgJHtwb2ludGVyVHlwZX0gJHt1cH0gbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICR7ZGF0YUxldmVsfWBcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtFcnJvck9iamVjdH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBlcnJvcnM6IFBhcnRpYWw8RXJyb3JPYmplY3Q+W11cbiAgcmVhZG9ubHkgYWp2OiB0cnVlXG4gIHJlYWRvbmx5IHZhbGlkYXRpb246IHRydWVcblxuICBjb25zdHJ1Y3RvcihlcnJvcnM6IFBhcnRpYWw8RXJyb3JPYmplY3Q+W10pIHtcbiAgICBzdXBlcihcInZhbGlkYXRpb24gZmFpbGVkXCIpXG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnNcbiAgICB0aGlzLmFqdiA9IHRoaXMudmFsaWRhdGlvbiA9IHRydWVcbiAgfVxufVxuIiwgImltcG9ydCB7cmVzb2x2ZVVybCwgbm9ybWFsaXplSWQsIGdldEZ1bGxQYXRofSBmcm9tIFwiLi9yZXNvbHZlXCJcbmltcG9ydCB0eXBlIHtVcmlSZXNvbHZlcn0gZnJvbSBcIi4uL3R5cGVzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWlzc2luZ1JlZkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBtaXNzaW5nUmVmOiBzdHJpbmdcbiAgcmVhZG9ubHkgbWlzc2luZ1NjaGVtYTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocmVzb2x2ZXI6IFVyaVJlc29sdmVyLCBiYXNlSWQ6IHN0cmluZywgcmVmOiBzdHJpbmcsIG1zZz86IHN0cmluZykge1xuICAgIHN1cGVyKG1zZyB8fCBgY2FuJ3QgcmVzb2x2ZSByZWZlcmVuY2UgJHtyZWZ9IGZyb20gaWQgJHtiYXNlSWR9YClcbiAgICB0aGlzLm1pc3NpbmdSZWYgPSByZXNvbHZlVXJsKHJlc29sdmVyLCBiYXNlSWQsIHJlZilcbiAgICB0aGlzLm1pc3NpbmdTY2hlbWEgPSBub3JtYWxpemVJZChnZXRGdWxsUGF0aChyZXNvbHZlciwgdGhpcy5taXNzaW5nUmVmKSlcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgQW55U2NoZW1hLFxuICBBbnlTY2hlbWFPYmplY3QsXG4gIEFueVZhbGlkYXRlRnVuY3Rpb24sXG4gIEFzeW5jVmFsaWRhdGVGdW5jdGlvbixcbiAgRXZhbHVhdGVkUHJvcGVydGllcyxcbiAgRXZhbHVhdGVkSXRlbXMsXG59IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgdHlwZSBBanYgZnJvbSBcIi4uL2NvcmVcIlxuaW1wb3J0IHR5cGUge0luc3RhbmNlT3B0aW9uc30gZnJvbSBcIi4uL2NvcmVcIlxuaW1wb3J0IHtDb2RlR2VuLCBfLCBuaWwsIHN0cmluZ2lmeSwgTmFtZSwgQ29kZSwgVmFsdWVTY29wZU5hbWV9IGZyb20gXCIuL2NvZGVnZW5cIlxuaW1wb3J0IFZhbGlkYXRpb25FcnJvciBmcm9tIFwiLi4vcnVudGltZS92YWxpZGF0aW9uX2Vycm9yXCJcbmltcG9ydCBOIGZyb20gXCIuL25hbWVzXCJcbmltcG9ydCB7TG9jYWxSZWZzLCBnZXRGdWxsUGF0aCwgX2dldEZ1bGxQYXRoLCBpbmxpbmVSZWYsIG5vcm1hbGl6ZUlkLCByZXNvbHZlVXJsfSBmcm9tIFwiLi9yZXNvbHZlXCJcbmltcG9ydCB7c2NoZW1hSGFzUnVsZXNCdXRSZWYsIHVuZXNjYXBlRnJhZ21lbnR9IGZyb20gXCIuL3V0aWxcIlxuaW1wb3J0IHt2YWxpZGF0ZUZ1bmN0aW9uQ29kZX0gZnJvbSBcIi4vdmFsaWRhdGVcIlxuaW1wb3J0IHtVUklDb21wb25lbnR9IGZyb20gXCJmYXN0LXVyaVwiXG5pbXBvcnQge0pTT05UeXBlfSBmcm9tIFwiLi9ydWxlc1wiXG5cbmV4cG9ydCB0eXBlIFNjaGVtYVJlZnMgPSB7XG4gIFtSZWYgaW4gc3RyaW5nXT86IFNjaGVtYUVudiB8IEFueVNjaGVtYVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUN4dCB7XG4gIHJlYWRvbmx5IGdlbjogQ29kZUdlblxuICByZWFkb25seSBhbGxFcnJvcnM/OiBib29sZWFuIC8vIHZhbGlkYXRpb24gbW9kZSAtIHdoZXRoZXIgdG8gY29sbGVjdCBhbGwgZXJyb3JzIG9yIGJyZWFrIG9uIGVycm9yXG4gIHJlYWRvbmx5IGRhdGE6IE5hbWUgLy8gTmFtZSB3aXRoIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBwYXJ0IG9mIGRhdGEgaW5zdGFuY2VcbiAgcmVhZG9ubHkgcGFyZW50RGF0YTogTmFtZSAvLyBzaG91bGQgYmUgdXNlZCBpbiBrZXl3b3JkcyBtb2RpZnlpbmcgZGF0YVxuICByZWFkb25seSBwYXJlbnREYXRhUHJvcGVydHk6IENvZGUgfCBudW1iZXIgLy8gc2hvdWxkIGJlIHVzZWQgaW4ga2V5d29yZHMgbW9kaWZ5aW5nIGRhdGFcbiAgcmVhZG9ubHkgZGF0YU5hbWVzOiBOYW1lW11cbiAgcmVhZG9ubHkgZGF0YVBhdGhBcnI6IChDb2RlIHwgbnVtYmVyKVtdXG4gIHJlYWRvbmx5IGRhdGFMZXZlbDogbnVtYmVyIC8vIHRoZSBsZXZlbCBvZiB0aGUgY3VycmVudGx5IHZhbGlkYXRlZCBkYXRhLFxuICAvLyBpdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgYm90aCB0aGUgcHJvcGVydHkgbmFtZXMgYW5kIHRoZSBkYXRhIG9uIGFsbCBsZXZlbHMgZnJvbSB0aGUgdG9wLlxuICBkYXRhVHlwZXM6IEpTT05UeXBlW10gLy8gZGF0YSB0eXBlcyBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHBhcnQgb2YgZGF0YSBpbnN0YW5jZVxuICBkZWZpbmVkUHJvcGVydGllczogU2V0PHN0cmluZz4gLy8gc2V0IG9mIHByb3BlcnRpZXMgdG8ga2VlcCB0cmFjayBvZiBmb3IgcmVxdWlyZWQgY2hlY2tzXG4gIHJlYWRvbmx5IHRvcFNjaGVtYVJlZjogQ29kZVxuICByZWFkb25seSB2YWxpZGF0ZU5hbWU6IE5hbWVcbiAgZXZhbHVhdGVkPzogTmFtZVxuICByZWFkb25seSBWYWxpZGF0aW9uRXJyb3I/OiBOYW1lXG4gIHJlYWRvbmx5IHNjaGVtYTogQW55U2NoZW1hIC8vIGN1cnJlbnQgc2NoZW1hIG9iamVjdCAtIGVxdWFsIHRvIHBhcmVudFNjaGVtYSBwYXNzZWQgdmlhIEtleXdvcmRDeHRcbiAgcmVhZG9ubHkgc2NoZW1hRW52OiBTY2hlbWFFbnZcbiAgcmVhZG9ubHkgcm9vdElkOiBzdHJpbmdcbiAgYmFzZUlkOiBzdHJpbmcgLy8gdGhlIGN1cnJlbnQgc2NoZW1hIGJhc2UgVVJJIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIHJlc29sdmluZyBVUklzIGluIHJlZmVyZW5jZXMgKFxcJHJlZilcbiAgcmVhZG9ubHkgc2NoZW1hUGF0aDogQ29kZSAvLyB0aGUgcnVuLXRpbWUgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byB0aGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgY3VycmVudCBzY2hlbWFcbiAgcmVhZG9ubHkgZXJyU2NoZW1hUGF0aDogc3RyaW5nIC8vIHRoaXMgaXMgYWN0dWFsIHN0cmluZywgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIHRvIENvZGVcbiAgcmVhZG9ubHkgZXJyb3JQYXRoOiBDb2RlXG4gIHJlYWRvbmx5IHByb3BlcnR5TmFtZT86IE5hbWVcbiAgcmVhZG9ubHkgY29tcG9zaXRlUnVsZT86IGJvb2xlYW4gLy8gdHJ1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBzY2hlbWEgaXMgaW5zaWRlIHRoZSBjb21wb3VuZCBrZXl3b3JkLFxuICAvLyB3aGVyZSBmYWlsaW5nIHNvbWUgcnVsZSBkb2Vzbid0IG1lYW4gdmFsaWRhdGlvbiBmYWlsdXJlIChgYW55T2ZgLCBgb25lT2ZgLCBgbm90YCwgYGlmYCkuXG4gIC8vIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHlvdSBjYW4gcmV0dXJuIHZhbGlkYXRpb24gcmVzdWx0IGltbWVkaWF0ZWx5IGFmdGVyIGFueSBlcnJvciBpbiBjYXNlIHRoZSBvcHRpb24gYGFsbEVycm9yc2AgaXMgbm90IGB0cnVlLlxuICAvLyBZb3Ugb25seSBuZWVkIHRvIHVzZSBpdCBpZiB5b3UgaGF2ZSBtYW55IHN0ZXBzIGluIHlvdXIga2V5d29yZHMgYW5kIHBvdGVudGlhbGx5IGNhbiBkZWZpbmUgbXVsdGlwbGUgZXJyb3JzLlxuICBwcm9wcz86IEV2YWx1YXRlZFByb3BlcnRpZXMgfCBOYW1lIC8vIHByb3BlcnRpZXMgZXZhbHVhdGVkIGJ5IHRoaXMgc2NoZW1hIC0gdXNlZCBieSBwYXJlbnQgc2NoZW1hIG9yIGFzc2lnbmVkIHRvIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAgaXRlbXM/OiBFdmFsdWF0ZWRJdGVtcyB8IE5hbWUgLy8gbGFzdCBpdGVtIGV2YWx1YXRlZCBieSB0aGlzIHNjaGVtYSAtIHVzZWQgYnkgcGFyZW50IHNjaGVtYSBvciBhc3NpZ25lZCB0byB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gIGp0ZERpc2NyaW1pbmF0b3I/OiBzdHJpbmdcbiAganRkTWV0YWRhdGE/OiBib29sZWFuXG4gIHJlYWRvbmx5IGNyZWF0ZUVycm9ycz86IGJvb2xlYW5cbiAgcmVhZG9ubHkgb3B0czogSW5zdGFuY2VPcHRpb25zIC8vIEFqdiBpbnN0YW5jZSBvcHRpb24uXG4gIHJlYWRvbmx5IHNlbGY6IEFqdiAvLyBjdXJyZW50IEFqdiBpbnN0YW5jZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU9iakN4dCBleHRlbmRzIFNjaGVtYUN4dCB7XG4gIHJlYWRvbmx5IHNjaGVtYTogQW55U2NoZW1hT2JqZWN0XG59XG5pbnRlcmZhY2UgU2NoZW1hRW52QXJncyB7XG4gIHJlYWRvbmx5IHNjaGVtYTogQW55U2NoZW1hXG4gIHJlYWRvbmx5IHNjaGVtYUlkPzogXCIkaWRcIiB8IFwiaWRcIlxuICByZWFkb25seSByb290PzogU2NoZW1hRW52XG4gIHJlYWRvbmx5IGJhc2VJZD86IHN0cmluZ1xuICByZWFkb25seSBzY2hlbWFQYXRoPzogc3RyaW5nXG4gIHJlYWRvbmx5IGxvY2FsUmVmcz86IExvY2FsUmVmc1xuICByZWFkb25seSBtZXRhPzogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hRW52IGltcGxlbWVudHMgU2NoZW1hRW52QXJncyB7XG4gIHJlYWRvbmx5IHNjaGVtYTogQW55U2NoZW1hXG4gIHJlYWRvbmx5IHNjaGVtYUlkPzogXCIkaWRcIiB8IFwiaWRcIlxuICByZWFkb25seSByb290OiBTY2hlbWFFbnZcbiAgYmFzZUlkOiBzdHJpbmcgLy8gVE9ETyBwb3NzaWJseSwgaXQgc2hvdWxkIGJlIHJlYWRvbmx5XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmdcbiAgbG9jYWxSZWZzPzogTG9jYWxSZWZzXG4gIHJlYWRvbmx5IG1ldGE/OiBib29sZWFuXG4gIHJlYWRvbmx5ICRhc3luYz86IGJvb2xlYW4gLy8gdHJ1ZSBpZiB0aGUgY3VycmVudCBzY2hlbWEgaXMgYXN5bmNocm9ub3VzLlxuICByZWFkb25seSByZWZzOiBTY2hlbWFSZWZzID0ge31cbiAgcmVhZG9ubHkgZHluYW1pY0FuY2hvcnM6IHtbUmVmIGluIHN0cmluZ10/OiB0cnVlfSA9IHt9XG4gIHZhbGlkYXRlPzogQW55VmFsaWRhdGVGdW5jdGlvblxuICB2YWxpZGF0ZU5hbWU/OiBWYWx1ZVNjb3BlTmFtZVxuICBzZXJpYWxpemU/OiAoZGF0YTogdW5rbm93bikgPT4gc3RyaW5nXG4gIHNlcmlhbGl6ZU5hbWU/OiBWYWx1ZVNjb3BlTmFtZVxuICBwYXJzZT86IChkYXRhOiBzdHJpbmcpID0+IHVua25vd25cbiAgcGFyc2VOYW1lPzogVmFsdWVTY29wZU5hbWVcblxuICBjb25zdHJ1Y3RvcihlbnY6IFNjaGVtYUVudkFyZ3MpIHtcbiAgICBsZXQgc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QgfCB1bmRlZmluZWRcbiAgICBpZiAodHlwZW9mIGVudi5zY2hlbWEgPT0gXCJvYmplY3RcIikgc2NoZW1hID0gZW52LnNjaGVtYVxuICAgIHRoaXMuc2NoZW1hID0gZW52LnNjaGVtYVxuICAgIHRoaXMuc2NoZW1hSWQgPSBlbnYuc2NoZW1hSWRcbiAgICB0aGlzLnJvb3QgPSBlbnYucm9vdCB8fCB0aGlzXG4gICAgdGhpcy5iYXNlSWQgPSBlbnYuYmFzZUlkID8/IG5vcm1hbGl6ZUlkKHNjaGVtYT8uW2Vudi5zY2hlbWFJZCB8fCBcIiRpZFwiXSlcbiAgICB0aGlzLnNjaGVtYVBhdGggPSBlbnYuc2NoZW1hUGF0aFxuICAgIHRoaXMubG9jYWxSZWZzID0gZW52LmxvY2FsUmVmc1xuICAgIHRoaXMubWV0YSA9IGVudi5tZXRhXG4gICAgdGhpcy4kYXN5bmMgPSBzY2hlbWE/LiRhc3luY1xuICAgIHRoaXMucmVmcyA9IHt9XG4gIH1cbn1cblxuLy8gbGV0IGNvZGVTaXplID0gMFxuLy8gbGV0IG5vZGVDb3VudCA9IDBcblxuLy8gQ29tcGlsZXMgc2NoZW1hIGluIFNjaGVtYUVudlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVTY2hlbWEodGhpczogQWp2LCBzY2g6IFNjaGVtYUVudik6IFNjaGVtYUVudiB7XG4gIC8vIFRPRE8gcmVmYWN0b3IgLSByZW1vdmUgY29tcGlsYXRpb25zXG4gIGNvbnN0IF9zY2ggPSBnZXRDb21waWxpbmdTY2hlbWEuY2FsbCh0aGlzLCBzY2gpXG4gIGlmIChfc2NoKSByZXR1cm4gX3NjaFxuICBjb25zdCByb290SWQgPSBnZXRGdWxsUGF0aCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIHNjaC5yb290LmJhc2VJZCkgLy8gVE9ETyBpZiBnZXRGdWxsUGF0aCByZW1vdmVkIDEgdGVzdHMgZmFpbHNcbiAgY29uc3Qge2VzNSwgbGluZXN9ID0gdGhpcy5vcHRzLmNvZGVcbiAgY29uc3Qge293blByb3BlcnRpZXN9ID0gdGhpcy5vcHRzXG4gIGNvbnN0IGdlbiA9IG5ldyBDb2RlR2VuKHRoaXMuc2NvcGUsIHtlczUsIGxpbmVzLCBvd25Qcm9wZXJ0aWVzfSlcbiAgbGV0IF9WYWxpZGF0aW9uRXJyb3JcbiAgaWYgKHNjaC4kYXN5bmMpIHtcbiAgICBfVmFsaWRhdGlvbkVycm9yID0gZ2VuLnNjb3BlVmFsdWUoXCJFcnJvclwiLCB7XG4gICAgICByZWY6IFZhbGlkYXRpb25FcnJvcixcbiAgICAgIGNvZGU6IF9gcmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvdmFsaWRhdGlvbl9lcnJvclwiKS5kZWZhdWx0YCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVOYW1lID0gZ2VuLnNjb3BlTmFtZShcInZhbGlkYXRlXCIpXG4gIHNjaC52YWxpZGF0ZU5hbWUgPSB2YWxpZGF0ZU5hbWVcblxuICBjb25zdCBzY2hlbWFDeHQ6IFNjaGVtYUN4dCA9IHtcbiAgICBnZW4sXG4gICAgYWxsRXJyb3JzOiB0aGlzLm9wdHMuYWxsRXJyb3JzLFxuICAgIGRhdGE6IE4uZGF0YSxcbiAgICBwYXJlbnREYXRhOiBOLnBhcmVudERhdGEsXG4gICAgcGFyZW50RGF0YVByb3BlcnR5OiBOLnBhcmVudERhdGFQcm9wZXJ0eSxcbiAgICBkYXRhTmFtZXM6IFtOLmRhdGFdLFxuICAgIGRhdGFQYXRoQXJyOiBbbmlsXSwgLy8gVE9ETyBjYW4gaXRzIGxlbmd0aCBiZSB1c2VkIGFzIGRhdGFMZXZlbCBpZiBuaWwgaXMgcmVtb3ZlZD9cbiAgICBkYXRhTGV2ZWw6IDAsXG4gICAgZGF0YVR5cGVzOiBbXSxcbiAgICBkZWZpbmVkUHJvcGVydGllczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgdG9wU2NoZW1hUmVmOiBnZW4uc2NvcGVWYWx1ZShcbiAgICAgIFwic2NoZW1hXCIsXG4gICAgICB0aGlzLm9wdHMuY29kZS5zb3VyY2UgPT09IHRydWVcbiAgICAgICAgPyB7cmVmOiBzY2guc2NoZW1hLCBjb2RlOiBzdHJpbmdpZnkoc2NoLnNjaGVtYSl9XG4gICAgICAgIDoge3JlZjogc2NoLnNjaGVtYX1cbiAgICApLFxuICAgIHZhbGlkYXRlTmFtZSxcbiAgICBWYWxpZGF0aW9uRXJyb3I6IF9WYWxpZGF0aW9uRXJyb3IsXG4gICAgc2NoZW1hOiBzY2guc2NoZW1hLFxuICAgIHNjaGVtYUVudjogc2NoLFxuICAgIHJvb3RJZCxcbiAgICBiYXNlSWQ6IHNjaC5iYXNlSWQgfHwgcm9vdElkLFxuICAgIHNjaGVtYVBhdGg6IG5pbCxcbiAgICBlcnJTY2hlbWFQYXRoOiBzY2guc2NoZW1hUGF0aCB8fCAodGhpcy5vcHRzLmp0ZCA/IFwiXCIgOiBcIiNcIiksXG4gICAgZXJyb3JQYXRoOiBfYFwiXCJgLFxuICAgIG9wdHM6IHRoaXMub3B0cyxcbiAgICBzZWxmOiB0aGlzLFxuICB9XG5cbiAgbGV0IHNvdXJjZUNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICB0cnkge1xuICAgIHRoaXMuX2NvbXBpbGF0aW9ucy5hZGQoc2NoKVxuICAgIHZhbGlkYXRlRnVuY3Rpb25Db2RlKHNjaGVtYUN4dClcbiAgICBnZW4ub3B0aW1pemUodGhpcy5vcHRzLmNvZGUub3B0aW1pemUpXG4gICAgLy8gZ2VuLm9wdGltaXplKDEpXG4gICAgY29uc3QgdmFsaWRhdGVDb2RlID0gZ2VuLnRvU3RyaW5nKClcbiAgICBzb3VyY2VDb2RlID0gYCR7Z2VuLnNjb3BlUmVmcyhOLnNjb3BlKX1yZXR1cm4gJHt2YWxpZGF0ZUNvZGV9YFxuICAgIC8vIGNvbnNvbGUubG9nKChjb2RlU2l6ZSArPSBzb3VyY2VDb2RlLmxlbmd0aCksIChub2RlQ291bnQgKz0gZ2VuLm5vZGVDb3VudCkpXG4gICAgaWYgKHRoaXMub3B0cy5jb2RlLnByb2Nlc3MpIHNvdXJjZUNvZGUgPSB0aGlzLm9wdHMuY29kZS5wcm9jZXNzKHNvdXJjZUNvZGUsIHNjaClcbiAgICAvLyBjb25zb2xlLmxvZyhcIlxcblxcblxcbiAqKiogXFxuXCIsIHNvdXJjZUNvZGUpXG4gICAgY29uc3QgbWFrZVZhbGlkYXRlID0gbmV3IEZ1bmN0aW9uKGAke04uc2VsZn1gLCBgJHtOLnNjb3BlfWAsIHNvdXJjZUNvZGUpXG4gICAgY29uc3QgdmFsaWRhdGU6IEFueVZhbGlkYXRlRnVuY3Rpb24gPSBtYWtlVmFsaWRhdGUodGhpcywgdGhpcy5zY29wZS5nZXQoKSlcbiAgICB0aGlzLnNjb3BlLnZhbHVlKHZhbGlkYXRlTmFtZSwge3JlZjogdmFsaWRhdGV9KVxuXG4gICAgdmFsaWRhdGUuZXJyb3JzID0gbnVsbFxuICAgIHZhbGlkYXRlLnNjaGVtYSA9IHNjaC5zY2hlbWFcbiAgICB2YWxpZGF0ZS5zY2hlbWFFbnYgPSBzY2hcbiAgICBpZiAoc2NoLiRhc3luYykgKHZhbGlkYXRlIGFzIEFzeW5jVmFsaWRhdGVGdW5jdGlvbikuJGFzeW5jID0gdHJ1ZVxuICAgIGlmICh0aGlzLm9wdHMuY29kZS5zb3VyY2UgPT09IHRydWUpIHtcbiAgICAgIHZhbGlkYXRlLnNvdXJjZSA9IHt2YWxpZGF0ZU5hbWUsIHZhbGlkYXRlQ29kZSwgc2NvcGVWYWx1ZXM6IGdlbi5fdmFsdWVzfVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRzLnVuZXZhbHVhdGVkKSB7XG4gICAgICBjb25zdCB7cHJvcHMsIGl0ZW1zfSA9IHNjaGVtYUN4dFxuICAgICAgdmFsaWRhdGUuZXZhbHVhdGVkID0ge1xuICAgICAgICBwcm9wczogcHJvcHMgaW5zdGFuY2VvZiBOYW1lID8gdW5kZWZpbmVkIDogcHJvcHMsXG4gICAgICAgIGl0ZW1zOiBpdGVtcyBpbnN0YW5jZW9mIE5hbWUgPyB1bmRlZmluZWQgOiBpdGVtcyxcbiAgICAgICAgZHluYW1pY1Byb3BzOiBwcm9wcyBpbnN0YW5jZW9mIE5hbWUsXG4gICAgICAgIGR5bmFtaWNJdGVtczogaXRlbXMgaW5zdGFuY2VvZiBOYW1lLFxuICAgICAgfVxuICAgICAgaWYgKHZhbGlkYXRlLnNvdXJjZSkgdmFsaWRhdGUuc291cmNlLmV2YWx1YXRlZCA9IHN0cmluZ2lmeSh2YWxpZGF0ZS5ldmFsdWF0ZWQpXG4gICAgfVxuICAgIHNjaC52YWxpZGF0ZSA9IHZhbGlkYXRlXG4gICAgcmV0dXJuIHNjaFxuICB9IGNhdGNoIChlKSB7XG4gICAgZGVsZXRlIHNjaC52YWxpZGF0ZVxuICAgIGRlbGV0ZSBzY2gudmFsaWRhdGVOYW1lXG4gICAgaWYgKHNvdXJjZUNvZGUpIHRoaXMubG9nZ2VyLmVycm9yKFwiRXJyb3IgY29tcGlsaW5nIHNjaGVtYSwgZnVuY3Rpb24gY29kZTpcIiwgc291cmNlQ29kZSlcbiAgICAvLyBjb25zb2xlLmxvZyhcIlxcblxcblxcbiAqKiogXFxuXCIsIHNvdXJjZUNvZGUsIHRoaXMub3B0cylcbiAgICB0aHJvdyBlXG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5fY29tcGlsYXRpb25zLmRlbGV0ZShzY2gpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWYoXG4gIHRoaXM6IEFqdixcbiAgcm9vdDogU2NoZW1hRW52LFxuICBiYXNlSWQ6IHN0cmluZyxcbiAgcmVmOiBzdHJpbmdcbik6IEFueVNjaGVtYSB8IFNjaGVtYUVudiB8IHVuZGVmaW5lZCB7XG4gIHJlZiA9IHJlc29sdmVVcmwodGhpcy5vcHRzLnVyaVJlc29sdmVyLCBiYXNlSWQsIHJlZilcbiAgY29uc3Qgc2NoT3JGdW5jID0gcm9vdC5yZWZzW3JlZl1cbiAgaWYgKHNjaE9yRnVuYykgcmV0dXJuIHNjaE9yRnVuY1xuXG4gIGxldCBfc2NoID0gcmVzb2x2ZS5jYWxsKHRoaXMsIHJvb3QsIHJlZilcbiAgaWYgKF9zY2ggPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHNjaGVtYSA9IHJvb3QubG9jYWxSZWZzPy5bcmVmXSAvLyBUT0RPIG1heWJlIGxvY2FsUmVmcyBzaG91bGQgaG9sZCBTY2hlbWFFbnZcbiAgICBjb25zdCB7c2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gICAgaWYgKHNjaGVtYSkgX3NjaCA9IG5ldyBTY2hlbWFFbnYoe3NjaGVtYSwgc2NoZW1hSWQsIHJvb3QsIGJhc2VJZH0pXG4gIH1cblxuICBpZiAoX3NjaCA9PT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgcmV0dXJuIChyb290LnJlZnNbcmVmXSA9IGlubGluZU9yQ29tcGlsZS5jYWxsKHRoaXMsIF9zY2gpKVxufVxuXG5mdW5jdGlvbiBpbmxpbmVPckNvbXBpbGUodGhpczogQWp2LCBzY2g6IFNjaGVtYUVudik6IEFueVNjaGVtYSB8IFNjaGVtYUVudiB7XG4gIGlmIChpbmxpbmVSZWYoc2NoLnNjaGVtYSwgdGhpcy5vcHRzLmlubGluZVJlZnMpKSByZXR1cm4gc2NoLnNjaGVtYVxuICByZXR1cm4gc2NoLnZhbGlkYXRlID8gc2NoIDogY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHNjaClcbn1cblxuLy8gSW5kZXggb2Ygc2NoZW1hIGNvbXBpbGF0aW9uIGluIHRoZSBjdXJyZW50bHkgY29tcGlsZWQgbGlzdFxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBpbGluZ1NjaGVtYSh0aGlzOiBBanYsIHNjaEVudjogU2NoZW1hRW52KTogU2NoZW1hRW52IHwgdm9pZCB7XG4gIGZvciAoY29uc3Qgc2NoIG9mIHRoaXMuX2NvbXBpbGF0aW9ucykge1xuICAgIGlmIChzYW1lU2NoZW1hRW52KHNjaCwgc2NoRW52KSkgcmV0dXJuIHNjaFxuICB9XG59XG5cbmZ1bmN0aW9uIHNhbWVTY2hlbWFFbnYoczE6IFNjaGVtYUVudiwgczI6IFNjaGVtYUVudik6IGJvb2xlYW4ge1xuICByZXR1cm4gczEuc2NoZW1hID09PSBzMi5zY2hlbWEgJiYgczEucm9vdCA9PT0gczIucm9vdCAmJiBzMS5iYXNlSWQgPT09IHMyLmJhc2VJZFxufVxuXG4vLyByZXNvbHZlIGFuZCBjb21waWxlIHRoZSByZWZlcmVuY2VzICgkcmVmKVxuLy8gVE9ETyByZXR1cm5zIEFueVNjaGVtYU9iamVjdCAoaWYgdGhlIHNjaGVtYSBjYW4gYmUgaW5saW5lZCkgb3IgdmFsaWRhdGlvbiBmdW5jdGlvblxuZnVuY3Rpb24gcmVzb2x2ZShcbiAgdGhpczogQWp2LFxuICByb290OiBTY2hlbWFFbnYsIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IHNjaGVtYSBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gIHJlZjogc3RyaW5nIC8vIHJlZmVyZW5jZSB0byByZXNvbHZlXG4pOiBTY2hlbWFFbnYgfCB1bmRlZmluZWQge1xuICBsZXQgc2NoXG4gIHdoaWxlICh0eXBlb2YgKHNjaCA9IHRoaXMucmVmc1tyZWZdKSA9PSBcInN0cmluZ1wiKSByZWYgPSBzY2hcbiAgcmV0dXJuIHNjaCB8fCB0aGlzLnNjaGVtYXNbcmVmXSB8fCByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgcmVmKVxufVxuXG4vLyBSZXNvbHZlIHNjaGVtYSwgaXRzIHJvb3QgYW5kIGJhc2VJZFxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTY2hlbWEoXG4gIHRoaXM6IEFqdixcbiAgcm9vdDogU2NoZW1hRW52LCAvLyByb290IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgc2NoZW1hLCByZWZzIFRPRE8gYmVsb3cgU2NoZW1hRW52IGlzIGFzc2lnbmVkIHRvIGl0XG4gIHJlZjogc3RyaW5nIC8vIHJlZmVyZW5jZSB0byByZXNvbHZlXG4pOiBTY2hlbWFFbnYgfCB1bmRlZmluZWQge1xuICBjb25zdCBwID0gdGhpcy5vcHRzLnVyaVJlc29sdmVyLnBhcnNlKHJlZilcbiAgY29uc3QgcmVmUGF0aCA9IF9nZXRGdWxsUGF0aCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIHApXG4gIGxldCBiYXNlSWQgPSBnZXRGdWxsUGF0aCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIHJvb3QuYmFzZUlkLCB1bmRlZmluZWQpXG4gIC8vIFRPRE8gYE9iamVjdC5rZXlzKHJvb3Quc2NoZW1hKS5sZW5ndGggPiAwYCBzaG91bGQgbm90IGJlIG5lZWRlZCAtIGJ1dCByZW1vdmluZyBicmVha3MgMiB0ZXN0c1xuICBpZiAoT2JqZWN0LmtleXMocm9vdC5zY2hlbWEpLmxlbmd0aCA+IDAgJiYgcmVmUGF0aCA9PT0gYmFzZUlkKSB7XG4gICAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcCwgcm9vdClcbiAgfVxuXG4gIGNvbnN0IGlkID0gbm9ybWFsaXplSWQocmVmUGF0aClcbiAgY29uc3Qgc2NoT3JSZWYgPSB0aGlzLnJlZnNbaWRdIHx8IHRoaXMuc2NoZW1hc1tpZF1cbiAgaWYgKHR5cGVvZiBzY2hPclJlZiA9PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3Qgc2NoID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsIHNjaE9yUmVmKVxuICAgIGlmICh0eXBlb2Ygc2NoPy5zY2hlbWEgIT09IFwib2JqZWN0XCIpIHJldHVyblxuICAgIHJldHVybiBnZXRKc29uUG9pbnRlci5jYWxsKHRoaXMsIHAsIHNjaClcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2NoT3JSZWY/LnNjaGVtYSAhPT0gXCJvYmplY3RcIikgcmV0dXJuXG4gIGlmICghc2NoT3JSZWYudmFsaWRhdGUpIGNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCBzY2hPclJlZilcbiAgaWYgKGlkID09PSBub3JtYWxpemVJZChyZWYpKSB7XG4gICAgY29uc3Qge3NjaGVtYX0gPSBzY2hPclJlZlxuICAgIGNvbnN0IHtzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgICBjb25zdCBzY2hJZCA9IHNjaGVtYVtzY2hlbWFJZF1cbiAgICBpZiAoc2NoSWQpIGJhc2VJZCA9IHJlc29sdmVVcmwodGhpcy5vcHRzLnVyaVJlc29sdmVyLCBiYXNlSWQsIHNjaElkKVxuICAgIHJldHVybiBuZXcgU2NoZW1hRW52KHtzY2hlbWEsIHNjaGVtYUlkLCByb290LCBiYXNlSWR9KVxuICB9XG4gIHJldHVybiBnZXRKc29uUG9pbnRlci5jYWxsKHRoaXMsIHAsIHNjaE9yUmVmKVxufVxuXG5jb25zdCBQUkVWRU5UX1NDT1BFX0NIQU5HRSA9IG5ldyBTZXQoW1xuICBcInByb3BlcnRpZXNcIixcbiAgXCJwYXR0ZXJuUHJvcGVydGllc1wiLFxuICBcImVudW1cIixcbiAgXCJkZXBlbmRlbmNpZXNcIixcbiAgXCJkZWZpbml0aW9uc1wiLFxuXSlcblxuZnVuY3Rpb24gZ2V0SnNvblBvaW50ZXIoXG4gIHRoaXM6IEFqdixcbiAgcGFyc2VkUmVmOiBVUklDb21wb25lbnQsXG4gIHtiYXNlSWQsIHNjaGVtYSwgcm9vdH06IFNjaGVtYUVudlxuKTogU2NoZW1hRW52IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBhcnNlZFJlZi5mcmFnbWVudD8uWzBdICE9PSBcIi9cIikgcmV0dXJuXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJzZWRSZWYuZnJhZ21lbnQuc2xpY2UoMSkuc3BsaXQoXCIvXCIpKSB7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwiYm9vbGVhblwiKSByZXR1cm5cbiAgICBjb25zdCBwYXJ0U2NoZW1hID0gc2NoZW1hW3VuZXNjYXBlRnJhZ21lbnQocGFydCldXG4gICAgaWYgKHBhcnRTY2hlbWEgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG4gICAgc2NoZW1hID0gcGFydFNjaGVtYVxuICAgIC8vIFRPRE8gUFJFVkVOVF9TQ09QRV9DSEFOR0UgY291bGQgYmUgZGVmaW5lZCBpbiBrZXl3b3JkIGRlZj9cbiAgICBjb25zdCBzY2hJZCA9IHR5cGVvZiBzY2hlbWEgPT09IFwib2JqZWN0XCIgJiYgc2NoZW1hW3RoaXMub3B0cy5zY2hlbWFJZF1cbiAgICBpZiAoIVBSRVZFTlRfU0NPUEVfQ0hBTkdFLmhhcyhwYXJ0KSAmJiBzY2hJZCkge1xuICAgICAgYmFzZUlkID0gcmVzb2x2ZVVybCh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsIGJhc2VJZCwgc2NoSWQpXG4gICAgfVxuICB9XG4gIGxldCBlbnY6IFNjaGVtYUVudiB8IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIHNjaGVtYSAhPSBcImJvb2xlYW5cIiAmJiBzY2hlbWEuJHJlZiAmJiAhc2NoZW1hSGFzUnVsZXNCdXRSZWYoc2NoZW1hLCB0aGlzLlJVTEVTKSkge1xuICAgIGNvbnN0ICRyZWYgPSByZXNvbHZlVXJsKHRoaXMub3B0cy51cmlSZXNvbHZlciwgYmFzZUlkLCBzY2hlbWEuJHJlZilcbiAgICBlbnYgPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgJHJlZilcbiAgfVxuICAvLyBldmVuIHRob3VnaCByZXNvbHV0aW9uIGZhaWxlZCB3ZSBuZWVkIHRvIHJldHVybiBTY2hlbWFFbnYgdG8gdGhyb3cgZXhjZXB0aW9uXG4gIC8vIHNvIHRoYXQgY29tcGlsZUFzeW5jIGxvYWRzIG1pc3Npbmcgc2NoZW1hLlxuICBjb25zdCB7c2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gIGVudiA9IGVudiB8fCBuZXcgU2NoZW1hRW52KHtzY2hlbWEsIHNjaGVtYUlkLCByb290LCBiYXNlSWR9KVxuICBpZiAoZW52LnNjaGVtYSAhPT0gZW52LnJvb3Quc2NoZW1hKSByZXR1cm4gZW52XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiIsICJ7XG4gIFwiJGlkXCI6IFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jXCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJNZXRhLXNjaGVtYSBmb3IgJGRhdGEgcmVmZXJlbmNlIChKU09OIEFueVNjaGVtYSBleHRlbnNpb24gcHJvcG9zYWwpXCIsXG4gIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICBcInJlcXVpcmVkXCI6IFtcIiRkYXRhXCJdLFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgIFwiJGRhdGFcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImFueU9mXCI6IFt7XCJmb3JtYXRcIjogXCJyZWxhdGl2ZS1qc29uLXBvaW50ZXJcIn0sIHtcImZvcm1hdFwiOiBcImpzb24tcG9pbnRlclwifV1cbiAgICB9XG4gIH0sXG4gIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2Vcbn1cbiIsICIndXNlIHN0cmljdCdcblxuLyoqIEB0eXBlIHsodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbn0gKi9cbmNvbnN0IGlzVVVJRCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKC9eW1xcZGEtZl17OH0tW1xcZGEtZl17NH0tW1xcZGEtZl17NH0tW1xcZGEtZl17NH0tW1xcZGEtZl17MTJ9JC9pdSlcblxuLyoqIEB0eXBlIHsodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbn0gKi9cbmNvbnN0IGlzSVB2NCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKC9eKD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZHsyfXxbMS05XVxcZHxcXGQpXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfDFcXGR7Mn18WzEtOV1cXGR8XFxkKSQvdSlcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGlucHV0XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdBcnJheVRvSGV4U3RyaXBwZWQgKGlucHV0KSB7XG4gIGxldCBhY2MgPSAnJ1xuICBsZXQgY29kZSA9IDBcbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29kZSA9IGlucHV0W2ldLmNoYXJDb2RlQXQoMClcbiAgICBpZiAoY29kZSA9PT0gNDgpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmICghKChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHx8IChjb2RlID49IDY1ICYmIGNvZGUgPD0gNzApIHx8IChjb2RlID49IDk3ICYmIGNvZGUgPD0gMTAyKSkpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBhY2MgKz0gaW5wdXRbaV1cbiAgICBicmVha1xuICB9XG5cbiAgZm9yIChpICs9IDE7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvZGUgPSBpbnB1dFtpXS5jaGFyQ29kZUF0KDApXG4gICAgaWYgKCEoKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgfHwgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgfHwgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMDIpKSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGFjYyArPSBpbnB1dFtpXVxuICB9XG4gIHJldHVybiBhY2Ncbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXRJUFY2UmVzdWx0XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVycm9yIC0gSW5kaWNhdGVzIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBJUHY2IGFkZHJlc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBwYXJzZWQgSVB2NiBhZGRyZXNzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt6b25lXSAtIFRoZSB6b25lIGlkZW50aWZpZXIsIGlmIHByZXNlbnQuXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBub25TaW1wbGVEb21haW4gPSBSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZCgvW14hXCIkJicoKSorLFxcLS47PV9gYS16e31+XS91KVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYnVmZmVyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gY29uc3VtZUlzWm9uZSAoYnVmZmVyKSB7XG4gIGJ1ZmZlci5sZW5ndGggPSAwXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBidWZmZXJcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYWRkcmVzc1xuICogQHBhcmFtIHtHZXRJUFY2UmVzdWx0fSBvdXRwdXRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBjb25zdW1lSGV4dGV0cyAoYnVmZmVyLCBhZGRyZXNzLCBvdXRwdXQpIHtcbiAgaWYgKGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBjb25zdCBoZXggPSBzdHJpbmdBcnJheVRvSGV4U3RyaXBwZWQoYnVmZmVyKVxuICAgIGlmIChoZXggIT09ICcnKSB7XG4gICAgICBhZGRyZXNzLnB1c2goaGV4KVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQuZXJyb3IgPSB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgYnVmZmVyLmxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICogQHJldHVybnMge0dldElQVjZSZXN1bHR9XG4gKi9cbmZ1bmN0aW9uIGdldElQVjYgKGlucHV0KSB7XG4gIGxldCB0b2tlbkNvdW50ID0gMFxuICBjb25zdCBvdXRwdXQgPSB7IGVycm9yOiBmYWxzZSwgYWRkcmVzczogJycsIHpvbmU6ICcnIH1cbiAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqL1xuICBjb25zdCBhZGRyZXNzID0gW11cbiAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqL1xuICBjb25zdCBidWZmZXIgPSBbXVxuICBsZXQgZW5kaXB2NkVuY291bnRlcmVkID0gZmFsc2VcbiAgbGV0IGVuZElwdjYgPSBmYWxzZVxuXG4gIGxldCBjb25zdW1lID0gY29uc3VtZUhleHRldHNcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3Vyc29yID0gaW5wdXRbaV1cbiAgICBpZiAoY3Vyc29yID09PSAnWycgfHwgY3Vyc29yID09PSAnXScpIHsgY29udGludWUgfVxuICAgIGlmIChjdXJzb3IgPT09ICc6Jykge1xuICAgICAgaWYgKGVuZGlwdjZFbmNvdW50ZXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICBlbmRJcHY2ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKCFjb25zdW1lKGJ1ZmZlciwgYWRkcmVzcywgb3V0cHV0KSkgeyBicmVhayB9XG4gICAgICBpZiAoKyt0b2tlbkNvdW50ID4gNykge1xuICAgICAgICAvLyBub3QgdmFsaWRcbiAgICAgICAgb3V0cHV0LmVycm9yID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKGkgPiAwICYmIGlucHV0W2kgLSAxXSA9PT0gJzonKSB7XG4gICAgICAgIGVuZGlwdjZFbmNvdW50ZXJlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGFkZHJlc3MucHVzaCgnOicpXG4gICAgICBjb250aW51ZVxuICAgIH0gZWxzZSBpZiAoY3Vyc29yID09PSAnJScpIHtcbiAgICAgIGlmICghY29uc3VtZShidWZmZXIsIGFkZHJlc3MsIG91dHB1dCkpIHsgYnJlYWsgfVxuICAgICAgLy8gc3dpdGNoIHRvIHpvbmUgZGV0ZWN0aW9uXG4gICAgICBjb25zdW1lID0gY29uc3VtZUlzWm9uZVxuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIucHVzaChjdXJzb3IpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgfVxuICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChjb25zdW1lID09PSBjb25zdW1lSXNab25lKSB7XG4gICAgICBvdXRwdXQuem9uZSA9IGJ1ZmZlci5qb2luKCcnKVxuICAgIH0gZWxzZSBpZiAoZW5kSXB2Nikge1xuICAgICAgYWRkcmVzcy5wdXNoKGJ1ZmZlci5qb2luKCcnKSlcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkcmVzcy5wdXNoKHN0cmluZ0FycmF5VG9IZXhTdHJpcHBlZChidWZmZXIpKVxuICAgIH1cbiAgfVxuICBvdXRwdXQuYWRkcmVzcyA9IGFkZHJlc3Muam9pbignJylcbiAgcmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE5vcm1hbGl6ZUlQdjZSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3N0IC0gVGhlIG5vcm1hbGl6ZWQgaG9zdC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZXNjYXBlZEhvc3RdIC0gVGhlIGVzY2FwZWQgaG9zdC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNJUFY2IC0gSW5kaWNhdGVzIGlmIHRoZSBob3N0IGlzIGFuIElQdjYgYWRkcmVzcy5cbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBob3N0XG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplSVB2NlJlc3VsdH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSVB2NiAoaG9zdCkge1xuICBpZiAoZmluZFRva2VuKGhvc3QsICc6JykgPCAyKSB7IHJldHVybiB7IGhvc3QsIGlzSVBWNjogZmFsc2UgfSB9XG4gIGNvbnN0IGlwdjYgPSBnZXRJUFY2KGhvc3QpXG5cbiAgaWYgKCFpcHY2LmVycm9yKSB7XG4gICAgbGV0IG5ld0hvc3QgPSBpcHY2LmFkZHJlc3NcbiAgICBsZXQgZXNjYXBlZEhvc3QgPSBpcHY2LmFkZHJlc3NcbiAgICBpZiAoaXB2Ni56b25lKSB7XG4gICAgICBuZXdIb3N0ICs9ICclJyArIGlwdjYuem9uZVxuICAgICAgZXNjYXBlZEhvc3QgKz0gJyUyNScgKyBpcHY2LnpvbmVcbiAgICB9XG4gICAgcmV0dXJuIHsgaG9zdDogbmV3SG9zdCwgaXNJUFY2OiB0cnVlLCBlc2NhcGVkSG9zdCB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgaG9zdCwgaXNJUFY2OiBmYWxzZSB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGZpbmRUb2tlbiAoc3RyLCB0b2tlbikge1xuICBsZXQgaW5kID0gMFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHJbaV0gPT09IHRva2VuKSBpbmQrK1xuICB9XG4gIHJldHVybiBpbmRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40XG4gKi9cbmZ1bmN0aW9uIHJlbW92ZURvdFNlZ21lbnRzIChwYXRoKSB7XG4gIGxldCBpbnB1dCA9IHBhdGhcbiAgY29uc3Qgb3V0cHV0ID0gW11cbiAgbGV0IG5leHRTbGFzaCA9IC0xXG4gIGxldCBsZW4gPSAwXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChsZW4gPSBpbnB1dC5sZW5ndGgpIHtcbiAgICBpZiAobGVuID09PSAxKSB7XG4gICAgICBpZiAoaW5wdXQgPT09ICcuJykge1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJy8nKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKCcvJylcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dC5wdXNoKGlucHV0KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICBpZiAoaW5wdXRbMF0gPT09ICcuJykge1xuICAgICAgICBpZiAoaW5wdXRbMV0gPT09ICcuJykge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXRbMV0gPT09ICcvJykge1xuICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMilcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlucHV0WzBdID09PSAnLycpIHtcbiAgICAgICAgaWYgKGlucHV0WzFdID09PSAnLicgfHwgaW5wdXRbMV0gPT09ICcvJykge1xuICAgICAgICAgIG91dHB1dC5wdXNoKCcvJylcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDMpIHtcbiAgICAgIGlmIChpbnB1dCA9PT0gJy8uLicpIHtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICBvdXRwdXQucG9wKClcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXQucHVzaCgnLycpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnB1dFswXSA9PT0gJy4nKSB7XG4gICAgICBpZiAoaW5wdXRbMV0gPT09ICcuJykge1xuICAgICAgICBpZiAoaW5wdXRbMl0gPT09ICcvJykge1xuICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMylcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlucHV0WzFdID09PSAnLycpIHtcbiAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgyKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5wdXRbMF0gPT09ICcvJykge1xuICAgICAgaWYgKGlucHV0WzFdID09PSAnLicpIHtcbiAgICAgICAgaWYgKGlucHV0WzJdID09PSAnLycpIHtcbiAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDIpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dFsyXSA9PT0gJy4nKSB7XG4gICAgICAgICAgaWYgKGlucHV0WzNdID09PSAnLycpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMylcbiAgICAgICAgICAgIGlmIChvdXRwdXQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgIG91dHB1dC5wb3AoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSdWxlIDJFOiBNb3ZlIG5vcm1hbCBwYXRoIHNlZ21lbnQgdG8gb3V0cHV0XG4gICAgaWYgKChuZXh0U2xhc2ggPSBpbnB1dC5pbmRleE9mKCcvJywgMSkpID09PSAtMSkge1xuICAgICAgb3V0cHV0LnB1c2goaW5wdXQpXG4gICAgICBicmVha1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChpbnB1dC5zbGljZSgwLCBuZXh0U2xhc2gpKVxuICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZShuZXh0U2xhc2gpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVzY1xuICogQHJldHVybnMge2ltcG9ydCgnLi4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nIChjb21wb25lbnQsIGVzYykge1xuICBjb25zdCBmdW5jID0gZXNjICE9PSB0cnVlID8gZXNjYXBlIDogdW5lc2NhcGVcbiAgaWYgKGNvbXBvbmVudC5zY2hlbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC5zY2hlbWUgPSBmdW5jKGNvbXBvbmVudC5zY2hlbWUpXG4gIH1cbiAgaWYgKGNvbXBvbmVudC51c2VyaW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50LnVzZXJpbmZvID0gZnVuYyhjb21wb25lbnQudXNlcmluZm8pXG4gIH1cbiAgaWYgKGNvbXBvbmVudC5ob3N0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQuaG9zdCA9IGZ1bmMoY29tcG9uZW50Lmhvc3QpXG4gIH1cbiAgaWYgKGNvbXBvbmVudC5wYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQucGF0aCA9IGZ1bmMoY29tcG9uZW50LnBhdGgpXG4gIH1cbiAgaWYgKGNvbXBvbmVudC5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50LnF1ZXJ5ID0gZnVuYyhjb21wb25lbnQucXVlcnkpXG4gIH1cbiAgaWYgKGNvbXBvbmVudC5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50LmZyYWdtZW50ID0gZnVuYyhjb21wb25lbnQuZnJhZ21lbnQpXG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gcmVjb21wb3NlQXV0aG9yaXR5IChjb21wb25lbnQpIHtcbiAgY29uc3QgdXJpVG9rZW5zID0gW11cblxuICBpZiAoY29tcG9uZW50LnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnQudXNlcmluZm8pXG4gICAgdXJpVG9rZW5zLnB1c2goJ0AnKVxuICB9XG5cbiAgaWYgKGNvbXBvbmVudC5ob3N0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBsZXQgaG9zdCA9IHVuZXNjYXBlKGNvbXBvbmVudC5ob3N0KVxuICAgIGlmICghaXNJUHY0KGhvc3QpKSB7XG4gICAgICBjb25zdCBpcFY2cmVzID0gbm9ybWFsaXplSVB2Nihob3N0KVxuICAgICAgaWYgKGlwVjZyZXMuaXNJUFY2ID09PSB0cnVlKSB7XG4gICAgICAgIGhvc3QgPSBgWyR7aXBWNnJlcy5lc2NhcGVkSG9zdH1dYFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaG9zdCA9IGNvbXBvbmVudC5ob3N0XG4gICAgICB9XG4gICAgfVxuICAgIHVyaVRva2Vucy5wdXNoKGhvc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIGNvbXBvbmVudC5wb3J0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgY29tcG9uZW50LnBvcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJpVG9rZW5zLnB1c2goJzonKVxuICAgIHVyaVRva2Vucy5wdXNoKFN0cmluZyhjb21wb25lbnQucG9ydCkpXG4gIH1cblxuICByZXR1cm4gdXJpVG9rZW5zLmxlbmd0aCA/IHVyaVRva2Vucy5qb2luKCcnKSA6IHVuZGVmaW5lZFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG5vblNpbXBsZURvbWFpbixcbiAgcmVjb21wb3NlQXV0aG9yaXR5LFxuICBub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyxcbiAgcmVtb3ZlRG90U2VnbWVudHMsXG4gIGlzSVB2NCxcbiAgaXNVVUlELFxuICBub3JtYWxpemVJUHY2LFxuICBzdHJpbmdBcnJheVRvSGV4U3RyaXBwZWRcbn1cbiIsICIndXNlIHN0cmljdCdcblxuY29uc3QgeyBpc1VVSUQgfSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxuY29uc3QgVVJOX1JFRyA9IC8oW1xcZGEtel1bXFxkXFwtYS16XXswLDMxfSk6KCg/OltcXHchJCcoKSorLFxcLS46Oz1AXXwlW1xcZGEtZl17Mn0pKykvaXVcblxuY29uc3Qgc3VwcG9ydGVkU2NoZW1lTmFtZXMgPSAvKiogQHR5cGUge2NvbnN0fSAqLyAoWydodHRwJywgJ2h0dHBzJywgJ3dzJyxcbiAgJ3dzcycsICd1cm4nLCAndXJuOnV1aWQnXSlcblxuLyoqIEB0eXBlZGVmIHtzdXBwb3J0ZWRTY2hlbWVOYW1lc1tudW1iZXJdfSBTY2hlbWVOYW1lICovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtuYW1lIGlzIFNjaGVtZU5hbWV9XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRTY2hlbWVOYW1lIChuYW1lKSB7XG4gIHJldHVybiBzdXBwb3J0ZWRTY2hlbWVOYW1lcy5pbmRleE9mKC8qKiBAdHlwZSB7Kn0gKi8gKG5hbWUpKSAhPT0gLTFcbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgU2NoZW1lRm5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vdHlwZXMvaW5kZXgnKS5PcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjaGVtZUhhbmRsZXJcbiAqIEBwcm9wZXJ0eSB7U2NoZW1lTmFtZX0gc2NoZW1lIC0gVGhlIHNjaGVtZSBuYW1lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbZG9tYWluSG9zdF0gLSBJbmRpY2F0ZXMgaWYgdGhlIHNjaGVtZSBzdXBwb3J0cyBkb21haW4gaG9zdHMuXG4gKiBAcHJvcGVydHkge1NjaGVtZUZufSBwYXJzZSAtIEZ1bmN0aW9uIHRvIHBhcnNlIHRoZSBVUkkgY29tcG9uZW50IGZvciB0aGlzIHNjaGVtZS5cbiAqIEBwcm9wZXJ0eSB7U2NoZW1lRm59IHNlcmlhbGl6ZSAtIEZ1bmN0aW9uIHRvIHNlcmlhbGl6ZSB0aGUgVVJJIGNvbXBvbmVudCBmb3IgdGhpcyBzY2hlbWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtza2lwTm9ybWFsaXplXSAtIEluZGljYXRlcyBpZiBub3JtYWxpemF0aW9uIHNob3VsZCBiZSBza2lwcGVkIGZvciB0aGlzIHNjaGVtZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Fic29sdXRlUGF0aF0gLSBJbmRpY2F0ZXMgaWYgdGhlIHNjaGVtZSB1c2VzIGFic29sdXRlIHBhdGhzLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbdW5pY29kZVN1cHBvcnRdIC0gSW5kaWNhdGVzIGlmIHRoZSBzY2hlbWUgc3VwcG9ydHMgVW5pY29kZS5cbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gd3NDb21wb25lbnRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiB3c0lzU2VjdXJlICh3c0NvbXBvbmVudCkge1xuICBpZiAod3NDb21wb25lbnQuc2VjdXJlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIGlmICh3c0NvbXBvbmVudC5zZWN1cmUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAod3NDb21wb25lbnQuc2NoZW1lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHdzQ29tcG9uZW50LnNjaGVtZS5sZW5ndGggPT09IDMgJiZcbiAgICAgICh3c0NvbXBvbmVudC5zY2hlbWVbMF0gPT09ICd3JyB8fCB3c0NvbXBvbmVudC5zY2hlbWVbMF0gPT09ICdXJykgJiZcbiAgICAgICh3c0NvbXBvbmVudC5zY2hlbWVbMV0gPT09ICdzJyB8fCB3c0NvbXBvbmVudC5zY2hlbWVbMV0gPT09ICdTJykgJiZcbiAgICAgICh3c0NvbXBvbmVudC5zY2hlbWVbMl0gPT09ICdzJyB8fCB3c0NvbXBvbmVudC5zY2hlbWVbMl0gPT09ICdTJylcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIGh0dHBQYXJzZSAoY29tcG9uZW50KSB7XG4gIGlmICghY29tcG9uZW50Lmhvc3QpIHtcbiAgICBjb21wb25lbnQuZXJyb3IgPSBjb21wb25lbnQuZXJyb3IgfHwgJ0hUVFAgVVJJcyBtdXN0IGhhdmUgYSBob3N0LidcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIGh0dHBTZXJpYWxpemUgKGNvbXBvbmVudCkge1xuICBjb25zdCBzZWN1cmUgPSBTdHJpbmcoY29tcG9uZW50LnNjaGVtZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2h0dHBzJ1xuXG4gIC8vIG5vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gIGlmIChjb21wb25lbnQucG9ydCA9PT0gKHNlY3VyZSA/IDQ0MyA6IDgwKSB8fCBjb21wb25lbnQucG9ydCA9PT0gJycpIHtcbiAgICBjb21wb25lbnQucG9ydCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gbm9ybWFsaXplIHRoZSBlbXB0eSBwYXRoXG4gIGlmICghY29tcG9uZW50LnBhdGgpIHtcbiAgICBjb21wb25lbnQucGF0aCA9ICcvJ1xuICB9XG5cbiAgLy8gTk9URTogV2UgZG8gbm90IHBhcnNlIHF1ZXJ5IHN0cmluZ3MgZm9yIEhUVFAgVVJJc1xuICAvLyBhcyBXV1cgRm9ybSBVcmwgRW5jb2RlZCBxdWVyeSBzdHJpbmdzIGFyZSBwYXJ0IG9mIHRoZSBIVE1MNCsgc3BlYyxcbiAgLy8gYW5kIG5vdCB0aGUgSFRUUCBzcGVjLlxuXG4gIHJldHVybiBjb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHdzUGFyc2UgKHdzQ29tcG9uZW50KSB7XG4vLyBpbmRpY2F0ZSBpZiB0aGUgc2VjdXJlIGZsYWcgaXMgc2V0XG4gIHdzQ29tcG9uZW50LnNlY3VyZSA9IHdzSXNTZWN1cmUod3NDb21wb25lbnQpXG5cbiAgLy8gY29uc3RydWN0IHJlc291Y2UgbmFtZVxuICB3c0NvbXBvbmVudC5yZXNvdXJjZU5hbWUgPSAod3NDb21wb25lbnQucGF0aCB8fCAnLycpICsgKHdzQ29tcG9uZW50LnF1ZXJ5ID8gJz8nICsgd3NDb21wb25lbnQucXVlcnkgOiAnJylcbiAgd3NDb21wb25lbnQucGF0aCA9IHVuZGVmaW5lZFxuICB3c0NvbXBvbmVudC5xdWVyeSA9IHVuZGVmaW5lZFxuXG4gIHJldHVybiB3c0NvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gd3NTZXJpYWxpemUgKHdzQ29tcG9uZW50KSB7XG4vLyBub3JtYWxpemUgdGhlIGRlZmF1bHQgcG9ydFxuICBpZiAod3NDb21wb25lbnQucG9ydCA9PT0gKHdzSXNTZWN1cmUod3NDb21wb25lbnQpID8gNDQzIDogODApIHx8IHdzQ29tcG9uZW50LnBvcnQgPT09ICcnKSB7XG4gICAgd3NDb21wb25lbnQucG9ydCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gZW5zdXJlIHNjaGVtZSBtYXRjaGVzIHNlY3VyZSBmbGFnXG4gIGlmICh0eXBlb2Ygd3NDb21wb25lbnQuc2VjdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICB3c0NvbXBvbmVudC5zY2hlbWUgPSAod3NDb21wb25lbnQuc2VjdXJlID8gJ3dzcycgOiAnd3MnKVxuICAgIHdzQ29tcG9uZW50LnNlY3VyZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gcmVjb25zdHJ1Y3QgcGF0aCBmcm9tIHJlc291cmNlIG5hbWVcbiAgaWYgKHdzQ29tcG9uZW50LnJlc291cmNlTmFtZSkge1xuICAgIGNvbnN0IFtwYXRoLCBxdWVyeV0gPSB3c0NvbXBvbmVudC5yZXNvdXJjZU5hbWUuc3BsaXQoJz8nKVxuICAgIHdzQ29tcG9uZW50LnBhdGggPSAocGF0aCAmJiBwYXRoICE9PSAnLycgPyBwYXRoIDogdW5kZWZpbmVkKVxuICAgIHdzQ29tcG9uZW50LnF1ZXJ5ID0gcXVlcnlcbiAgICB3c0NvbXBvbmVudC5yZXNvdXJjZU5hbWUgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIGZvcmJpZCBmcmFnbWVudCBjb21wb25lbnRcbiAgd3NDb21wb25lbnQuZnJhZ21lbnQgPSB1bmRlZmluZWRcblxuICByZXR1cm4gd3NDb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHVyblBhcnNlICh1cm5Db21wb25lbnQsIG9wdGlvbnMpIHtcbiAgaWYgKCF1cm5Db21wb25lbnQucGF0aCkge1xuICAgIHVybkNvbXBvbmVudC5lcnJvciA9ICdVUk4gY2FuIG5vdCBiZSBwYXJzZWQnXG4gICAgcmV0dXJuIHVybkNvbXBvbmVudFxuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB1cm5Db21wb25lbnQucGF0aC5tYXRjaChVUk5fUkVHKVxuICBpZiAobWF0Y2hlcykge1xuICAgIGNvbnN0IHNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lIHx8IHVybkNvbXBvbmVudC5zY2hlbWUgfHwgJ3VybidcbiAgICB1cm5Db21wb25lbnQubmlkID0gbWF0Y2hlc1sxXS50b0xvd2VyQ2FzZSgpXG4gICAgdXJuQ29tcG9uZW50Lm5zcyA9IG1hdGNoZXNbMl1cbiAgICBjb25zdCB1cm5TY2hlbWUgPSBgJHtzY2hlbWV9OiR7b3B0aW9ucy5uaWQgfHwgdXJuQ29tcG9uZW50Lm5pZH1gXG4gICAgY29uc3Qgc2NoZW1lSGFuZGxlciA9IGdldFNjaGVtZUhhbmRsZXIodXJuU2NoZW1lKVxuICAgIHVybkNvbXBvbmVudC5wYXRoID0gdW5kZWZpbmVkXG5cbiAgICBpZiAoc2NoZW1lSGFuZGxlcikge1xuICAgICAgdXJuQ29tcG9uZW50ID0gc2NoZW1lSGFuZGxlci5wYXJzZSh1cm5Db21wb25lbnQsIG9wdGlvbnMpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHVybkNvbXBvbmVudC5lcnJvciA9IHVybkNvbXBvbmVudC5lcnJvciB8fCAnVVJOIGNhbiBub3QgYmUgcGFyc2VkLidcbiAgfVxuXG4gIHJldHVybiB1cm5Db21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHVyblNlcmlhbGl6ZSAodXJuQ29tcG9uZW50LCBvcHRpb25zKSB7XG4gIGlmICh1cm5Db21wb25lbnQubmlkID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VSTiB3aXRob3V0IG5pZCBjYW5ub3QgYmUgc2VyaWFsaXplZCcpXG4gIH1cbiAgY29uc3Qgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50LnNjaGVtZSB8fCAndXJuJ1xuICBjb25zdCBuaWQgPSB1cm5Db21wb25lbnQubmlkLnRvTG93ZXJDYXNlKClcbiAgY29uc3QgdXJuU2NoZW1lID0gYCR7c2NoZW1lfToke29wdGlvbnMubmlkIHx8IG5pZH1gXG4gIGNvbnN0IHNjaGVtZUhhbmRsZXIgPSBnZXRTY2hlbWVIYW5kbGVyKHVyblNjaGVtZSlcblxuICBpZiAoc2NoZW1lSGFuZGxlcikge1xuICAgIHVybkNvbXBvbmVudCA9IHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKHVybkNvbXBvbmVudCwgb3B0aW9ucylcbiAgfVxuXG4gIGNvbnN0IHVyaUNvbXBvbmVudCA9IHVybkNvbXBvbmVudFxuICBjb25zdCBuc3MgPSB1cm5Db21wb25lbnQubnNzXG4gIHVyaUNvbXBvbmVudC5wYXRoID0gYCR7bmlkIHx8IG9wdGlvbnMubmlkfToke25zc31gXG5cbiAgb3B0aW9ucy5za2lwRXNjYXBlID0gdHJ1ZVxuICByZXR1cm4gdXJpQ29tcG9uZW50XG59XG5cbi8qKiBAdHlwZSB7U2NoZW1lRm59ICovXG5mdW5jdGlvbiB1cm51dWlkUGFyc2UgKHVybkNvbXBvbmVudCwgb3B0aW9ucykge1xuICBjb25zdCB1dWlkQ29tcG9uZW50ID0gdXJuQ29tcG9uZW50XG4gIHV1aWRDb21wb25lbnQudXVpZCA9IHV1aWRDb21wb25lbnQubnNzXG4gIHV1aWRDb21wb25lbnQubnNzID0gdW5kZWZpbmVkXG5cbiAgaWYgKCFvcHRpb25zLnRvbGVyYW50ICYmICghdXVpZENvbXBvbmVudC51dWlkIHx8ICFpc1VVSUQodXVpZENvbXBvbmVudC51dWlkKSkpIHtcbiAgICB1dWlkQ29tcG9uZW50LmVycm9yID0gdXVpZENvbXBvbmVudC5lcnJvciB8fCAnVVVJRCBpcyBub3QgdmFsaWQuJ1xuICB9XG5cbiAgcmV0dXJuIHV1aWRDb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHVybnV1aWRTZXJpYWxpemUgKHV1aWRDb21wb25lbnQpIHtcbiAgY29uc3QgdXJuQ29tcG9uZW50ID0gdXVpZENvbXBvbmVudFxuICAvLyBub3JtYWxpemUgVVVJRFxuICB1cm5Db21wb25lbnQubnNzID0gKHV1aWRDb21wb25lbnQudXVpZCB8fCAnJykudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gdXJuQ29tcG9uZW50XG59XG5cbmNvbnN0IGh0dHAgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ2h0dHAnLFxuICBkb21haW5Ib3N0OiB0cnVlLFxuICBwYXJzZTogaHR0cFBhcnNlLFxuICBzZXJpYWxpemU6IGh0dHBTZXJpYWxpemVcbn0pXG5cbmNvbnN0IGh0dHBzID0gLyoqIEB0eXBlIHtTY2hlbWVIYW5kbGVyfSAqLyAoe1xuICBzY2hlbWU6ICdodHRwcycsXG4gIGRvbWFpbkhvc3Q6IGh0dHAuZG9tYWluSG9zdCxcbiAgcGFyc2U6IGh0dHBQYXJzZSxcbiAgc2VyaWFsaXplOiBodHRwU2VyaWFsaXplXG59KVxuXG5jb25zdCB3cyA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAnd3MnLFxuICBkb21haW5Ib3N0OiB0cnVlLFxuICBwYXJzZTogd3NQYXJzZSxcbiAgc2VyaWFsaXplOiB3c1NlcmlhbGl6ZVxufSlcblxuY29uc3Qgd3NzID0gLyoqIEB0eXBlIHtTY2hlbWVIYW5kbGVyfSAqLyAoe1xuICBzY2hlbWU6ICd3c3MnLFxuICBkb21haW5Ib3N0OiB3cy5kb21haW5Ib3N0LFxuICBwYXJzZTogd3MucGFyc2UsXG4gIHNlcmlhbGl6ZTogd3Muc2VyaWFsaXplXG59KVxuXG5jb25zdCB1cm4gPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ3VybicsXG4gIHBhcnNlOiB1cm5QYXJzZSxcbiAgc2VyaWFsaXplOiB1cm5TZXJpYWxpemUsXG4gIHNraXBOb3JtYWxpemU6IHRydWVcbn0pXG5cbmNvbnN0IHVybnV1aWQgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ3Vybjp1dWlkJyxcbiAgcGFyc2U6IHVybnV1aWRQYXJzZSxcbiAgc2VyaWFsaXplOiB1cm51dWlkU2VyaWFsaXplLFxuICBza2lwTm9ybWFsaXplOiB0cnVlXG59KVxuXG5jb25zdCBTQ0hFTUVTID0gLyoqIEB0eXBlIHtSZWNvcmQ8U2NoZW1lTmFtZSwgU2NoZW1lSGFuZGxlcj59ICovICh7XG4gIGh0dHAsXG4gIGh0dHBzLFxuICB3cyxcbiAgd3NzLFxuICB1cm4sXG4gICd1cm46dXVpZCc6IHVybnV1aWRcbn0pXG5cbk9iamVjdC5zZXRQcm90b3R5cGVPZihTQ0hFTUVTLCBudWxsKVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gc2NoZW1lXG4gKiBAcmV0dXJucyB7U2NoZW1lSGFuZGxlcnx1bmRlZmluZWR9XG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtZUhhbmRsZXIgKHNjaGVtZSkge1xuICByZXR1cm4gKFxuICAgIHNjaGVtZSAmJiAoXG4gICAgICBTQ0hFTUVTWy8qKiBAdHlwZSB7U2NoZW1lTmFtZX0gKi8gKHNjaGVtZSldIHx8XG4gICAgICBTQ0hFTUVTWy8qKiBAdHlwZSB7U2NoZW1lTmFtZX0gKi8oc2NoZW1lLnRvTG93ZXJDYXNlKCkpXSlcbiAgKSB8fFxuICAgIHVuZGVmaW5lZFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgd3NJc1NlY3VyZSxcbiAgU0NIRU1FUyxcbiAgaXNWYWxpZFNjaGVtZU5hbWUsXG4gIGdldFNjaGVtZUhhbmRsZXIsXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgbm9ybWFsaXplSVB2NiwgcmVtb3ZlRG90U2VnbWVudHMsIHJlY29tcG9zZUF1dGhvcml0eSwgbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcsIGlzSVB2NCwgbm9uU2ltcGxlRG9tYWluIH0gPSByZXF1aXJlKCcuL2xpYi91dGlscycpXG5jb25zdCB7IFNDSEVNRVMsIGdldFNjaGVtZUhhbmRsZXIgfSA9IHJlcXVpcmUoJy4vbGliL3NjaGVtZXMnKVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fHN0cmluZ30gVFxuICogQHBhcmFtIHtUfSB1cmlcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuT3B0aW9uc30gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplICh1cmksIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJpID0gLyoqIEB0eXBlIHtUfSAqLyAoc2VyaWFsaXplKHBhcnNlKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB1cmkgPT09ICdvYmplY3QnKSB7XG4gICAgdXJpID0gLyoqIEB0eXBlIHtUfSAqLyAocGFyc2Uoc2VyaWFsaXplKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpKVxuICB9XG4gIHJldHVybiB1cmlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSSVxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJJXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IFtvcHRpb25zXVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZSAoYmFzZVVSSSwgcmVsYXRpdmVVUkksIG9wdGlvbnMpIHtcbiAgY29uc3Qgc2NoZW1lbGVzc09wdGlvbnMgPSBvcHRpb25zID8gT2JqZWN0LmFzc2lnbih7IHNjaGVtZTogJ251bGwnIH0sIG9wdGlvbnMpIDogeyBzY2hlbWU6ICdudWxsJyB9XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUNvbXBvbmVudChwYXJzZShiYXNlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHBhcnNlKHJlbGF0aXZlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHNjaGVtZWxlc3NPcHRpb25zLCB0cnVlKVxuICBzY2hlbWVsZXNzT3B0aW9ucy5za2lwRXNjYXBlID0gdHJ1ZVxuICByZXR1cm4gc2VyaWFsaXplKHJlc29sdmVkLCBzY2hlbWVsZXNzT3B0aW9ucylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCAoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9IGJhc2VcbiAqIEBwYXJhbSB7aW1wb3J0ICgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudH0gcmVsYXRpdmVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3R5cGVzL2luZGV4JykuT3B0aW9uc30gW29wdGlvbnNdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtza2lwTm9ybWFsaXphdGlvbj1mYWxzZV1cbiAqIEByZXR1cm5zIHtpbXBvcnQgKCcuL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fVxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50IChiYXNlLCByZWxhdGl2ZSwgb3B0aW9ucywgc2tpcE5vcm1hbGl6YXRpb24pIHtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9ICovXG4gIGNvbnN0IHRhcmdldCA9IHt9XG4gIGlmICghc2tpcE5vcm1hbGl6YXRpb24pIHtcbiAgICBiYXNlID0gcGFyc2Uoc2VyaWFsaXplKGJhc2UsIG9wdGlvbnMpLCBvcHRpb25zKSAvLyBub3JtYWxpemUgYmFzZSBjb21wb25lbnRcbiAgICByZWxhdGl2ZSA9IHBhcnNlKHNlcmlhbGl6ZShyZWxhdGl2ZSwgb3B0aW9ucyksIG9wdGlvbnMpIC8vIG5vcm1hbGl6ZSByZWxhdGl2ZSBjb21wb25lbnRcbiAgfVxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiByZWxhdGl2ZS5zY2hlbWUpIHtcbiAgICB0YXJnZXQuc2NoZW1lID0gcmVsYXRpdmUuc2NoZW1lXG4gICAgLy8gdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICB0YXJnZXQudXNlcmluZm8gPSByZWxhdGl2ZS51c2VyaW5mb1xuICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdFxuICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydFxuICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCB8fCAnJylcbiAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeVxuICB9IGVsc2Uge1xuICAgIGlmIChyZWxhdGl2ZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHRhcmdldC5hdXRob3JpdHkgPSByZWxhdGl2ZS5hdXRob3JpdHk7XG4gICAgICB0YXJnZXQudXNlcmluZm8gPSByZWxhdGl2ZS51c2VyaW5mb1xuICAgICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0XG4gICAgICB0YXJnZXQucG9ydCA9IHJlbGF0aXZlLnBvcnRcbiAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCB8fCAnJylcbiAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghcmVsYXRpdmUucGF0aCkge1xuICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aFxuICAgICAgICBpZiAocmVsYXRpdmUucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gYmFzZS5xdWVyeVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVsYXRpdmUucGF0aFswXSA9PT0gJy8nKSB7XG4gICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgoYmFzZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IGJhc2UuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IGJhc2UucG9ydCAhPT0gdW5kZWZpbmVkKSAmJiAhYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICB0YXJnZXQucGF0aCA9ICcvJyArIHJlbGF0aXZlLnBhdGhcbiAgICAgICAgICB9IGVsc2UgaWYgKCFiYXNlLnBhdGgpIHtcbiAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVsYXRpdmUucGF0aFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aC5zbGljZSgwLCBiYXNlLnBhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpICsgcmVsYXRpdmUucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHRhcmdldC5wYXRoKVxuICAgICAgICB9XG4gICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5XG4gICAgICB9XG4gICAgICAvLyB0YXJnZXQuYXV0aG9yaXR5ID0gYmFzZS5hdXRob3JpdHk7XG4gICAgICB0YXJnZXQudXNlcmluZm8gPSBiYXNlLnVzZXJpbmZvXG4gICAgICB0YXJnZXQuaG9zdCA9IGJhc2UuaG9zdFxuICAgICAgdGFyZ2V0LnBvcnQgPSBiYXNlLnBvcnRcbiAgICB9XG4gICAgdGFyZ2V0LnNjaGVtZSA9IGJhc2Uuc2NoZW1lXG4gIH1cblxuICB0YXJnZXQuZnJhZ21lbnQgPSByZWxhdGl2ZS5mcmFnbWVudFxuXG4gIHJldHVybiB0YXJnZXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCAoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR8c3RyaW5nfSB1cmlBXG4gKiBAcGFyYW0ge2ltcG9ydCAoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR8c3RyaW5nfSB1cmlCXG4gKiBAcGFyYW0ge2ltcG9ydCAoJy4vdHlwZXMvaW5kZXgnKS5PcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZXF1YWwgKHVyaUEsIHVyaUIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB1cmlBID09PSAnc3RyaW5nJykge1xuICAgIHVyaUEgPSB1bmVzY2FwZSh1cmlBKVxuICAgIHVyaUEgPSBzZXJpYWxpemUobm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcocGFyc2UodXJpQSwgb3B0aW9ucyksIHRydWUpLCB7IC4uLm9wdGlvbnMsIHNraXBFc2NhcGU6IHRydWUgfSlcbiAgfSBlbHNlIGlmICh0eXBlb2YgdXJpQSA9PT0gJ29iamVjdCcpIHtcbiAgICB1cmlBID0gc2VyaWFsaXplKG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKHVyaUEsIHRydWUpLCB7IC4uLm9wdGlvbnMsIHNraXBFc2NhcGU6IHRydWUgfSlcbiAgfVxuXG4gIGlmICh0eXBlb2YgdXJpQiA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmlCID0gdW5lc2NhcGUodXJpQilcbiAgICB1cmlCID0gc2VyaWFsaXplKG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKHBhcnNlKHVyaUIsIG9wdGlvbnMpLCB0cnVlKSwgeyAuLi5vcHRpb25zLCBza2lwRXNjYXBlOiB0cnVlIH0pXG4gIH0gZWxzZSBpZiAodHlwZW9mIHVyaUIgPT09ICdvYmplY3QnKSB7XG4gICAgdXJpQiA9IHNlcmlhbGl6ZShub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyh1cmlCLCB0cnVlKSwgeyAuLi5vcHRpb25zLCBza2lwRXNjYXBlOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4gdXJpQS50b0xvd2VyQ2FzZSgpID09PSB1cmlCLnRvTG93ZXJDYXNlKClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWRvbmx5PGltcG9ydCgnLi90eXBlcy9pbmRleCcpLlVSSUNvbXBvbmVudD59IGNtcHRzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IFtvcHRzXVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc2VyaWFsaXplIChjbXB0cywgb3B0cykge1xuICBjb25zdCBjb21wb25lbnQgPSB7XG4gICAgaG9zdDogY21wdHMuaG9zdCxcbiAgICBzY2hlbWU6IGNtcHRzLnNjaGVtZSxcbiAgICB1c2VyaW5mbzogY21wdHMudXNlcmluZm8sXG4gICAgcG9ydDogY21wdHMucG9ydCxcbiAgICBwYXRoOiBjbXB0cy5wYXRoLFxuICAgIHF1ZXJ5OiBjbXB0cy5xdWVyeSxcbiAgICBuaWQ6IGNtcHRzLm5pZCxcbiAgICBuc3M6IGNtcHRzLm5zcyxcbiAgICB1dWlkOiBjbXB0cy51dWlkLFxuICAgIGZyYWdtZW50OiBjbXB0cy5mcmFnbWVudCxcbiAgICByZWZlcmVuY2U6IGNtcHRzLnJlZmVyZW5jZSxcbiAgICByZXNvdXJjZU5hbWU6IGNtcHRzLnJlc291cmNlTmFtZSxcbiAgICBzZWN1cmU6IGNtcHRzLnNlY3VyZSxcbiAgICBlcnJvcjogJydcbiAgfVxuICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0cylcbiAgY29uc3QgdXJpVG9rZW5zID0gW11cblxuICAvLyBmaW5kIHNjaGVtZSBoYW5kbGVyXG4gIGNvbnN0IHNjaGVtZUhhbmRsZXIgPSBnZXRTY2hlbWVIYW5kbGVyKG9wdGlvbnMuc2NoZW1lIHx8IGNvbXBvbmVudC5zY2hlbWUpXG5cbiAgLy8gcGVyZm9ybSBzY2hlbWUgc3BlY2lmaWMgc2VyaWFsaXphdGlvblxuICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnNlcmlhbGl6ZSkgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUoY29tcG9uZW50LCBvcHRpb25zKVxuXG4gIGlmIChjb21wb25lbnQucGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFvcHRpb25zLnNraXBFc2NhcGUpIHtcbiAgICAgIGNvbXBvbmVudC5wYXRoID0gZXNjYXBlKGNvbXBvbmVudC5wYXRoKVxuXG4gICAgICBpZiAoY29tcG9uZW50LnNjaGVtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbXBvbmVudC5wYXRoID0gY29tcG9uZW50LnBhdGguc3BsaXQoJyUzQScpLmpvaW4oJzonKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQucGF0aCA9IHVuZXNjYXBlKGNvbXBvbmVudC5wYXRoKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnJlZmVyZW5jZSAhPT0gJ3N1ZmZpeCcgJiYgY29tcG9uZW50LnNjaGVtZSkge1xuICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudC5zY2hlbWUsICc6JylcbiAgfVxuXG4gIGNvbnN0IGF1dGhvcml0eSA9IHJlY29tcG9zZUF1dGhvcml0eShjb21wb25lbnQpXG4gIGlmIChhdXRob3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAhPT0gJ3N1ZmZpeCcpIHtcbiAgICAgIHVyaVRva2Vucy5wdXNoKCcvLycpXG4gICAgfVxuXG4gICAgdXJpVG9rZW5zLnB1c2goYXV0aG9yaXR5KVxuXG4gICAgaWYgKGNvbXBvbmVudC5wYXRoICYmIGNvbXBvbmVudC5wYXRoWzBdICE9PSAnLycpIHtcbiAgICAgIHVyaVRva2Vucy5wdXNoKCcvJylcbiAgICB9XG4gIH1cbiAgaWYgKGNvbXBvbmVudC5wYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICBsZXQgcyA9IGNvbXBvbmVudC5wYXRoXG5cbiAgICBpZiAoIW9wdGlvbnMuYWJzb2x1dGVQYXRoICYmICghc2NoZW1lSGFuZGxlciB8fCAhc2NoZW1lSGFuZGxlci5hYnNvbHV0ZVBhdGgpKSB7XG4gICAgICBzID0gcmVtb3ZlRG90U2VnbWVudHMocylcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBhdXRob3JpdHkgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgc1swXSA9PT0gJy8nICYmXG4gICAgICBzWzFdID09PSAnLydcbiAgICApIHtcbiAgICAgIC8vIGRvbid0IGFsbG93IHRoZSBwYXRoIHRvIHN0YXJ0IHdpdGggXCIvL1wiXG4gICAgICBzID0gJy8lMkYnICsgcy5zbGljZSgyKVxuICAgIH1cblxuICAgIHVyaVRva2Vucy5wdXNoKHMpXG4gIH1cblxuICBpZiAoY29tcG9uZW50LnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cmlUb2tlbnMucHVzaCgnPycsIGNvbXBvbmVudC5xdWVyeSlcbiAgfVxuXG4gIGlmIChjb21wb25lbnQuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHVyaVRva2Vucy5wdXNoKCcjJywgY29tcG9uZW50LmZyYWdtZW50KVxuICB9XG4gIHJldHVybiB1cmlUb2tlbnMuam9pbignJylcbn1cblxuY29uc3QgVVJJX1BBUlNFID0gL14oPzooW14jLzo/XSspOik/KD86XFwvXFwvKCg/OihbXiMvP0BdKilAKT8oXFxbW14jLz9cXF1dK1xcXXxbXiMvOj9dKikoPzo6KFxcZCopKT8pKT8oW14jP10qKSg/OlxcPyhbXiNdKikpPyg/OiMoKD86LnxbXFxuXFxyXSkqKSk/L3VcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJpXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IFtvcHRzXVxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gcGFyc2UgKHVyaSwgb3B0cykge1xuICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0cylcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9ICovXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICBzY2hlbWU6IHVuZGVmaW5lZCxcbiAgICB1c2VyaW5mbzogdW5kZWZpbmVkLFxuICAgIGhvc3Q6ICcnLFxuICAgIHBvcnQ6IHVuZGVmaW5lZCxcbiAgICBwYXRoOiAnJyxcbiAgICBxdWVyeTogdW5kZWZpbmVkLFxuICAgIGZyYWdtZW50OiB1bmRlZmluZWRcbiAgfVxuXG4gIGxldCBpc0lQID0gZmFsc2VcbiAgaWYgKG9wdGlvbnMucmVmZXJlbmNlID09PSAnc3VmZml4Jykge1xuICAgIGlmIChvcHRpb25zLnNjaGVtZSkge1xuICAgICAgdXJpID0gb3B0aW9ucy5zY2hlbWUgKyAnOicgKyB1cmlcbiAgICB9IGVsc2Uge1xuICAgICAgdXJpID0gJy8vJyArIHVyaVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXMgPSB1cmkubWF0Y2goVVJJX1BBUlNFKVxuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgLy8gc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICBwYXJzZWQuc2NoZW1lID0gbWF0Y2hlc1sxXVxuICAgIHBhcnNlZC51c2VyaW5mbyA9IG1hdGNoZXNbM11cbiAgICBwYXJzZWQuaG9zdCA9IG1hdGNoZXNbNF1cbiAgICBwYXJzZWQucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKVxuICAgIHBhcnNlZC5wYXRoID0gbWF0Y2hlc1s2XSB8fCAnJ1xuICAgIHBhcnNlZC5xdWVyeSA9IG1hdGNoZXNbN11cbiAgICBwYXJzZWQuZnJhZ21lbnQgPSBtYXRjaGVzWzhdXG5cbiAgICAvLyBmaXggcG9ydCBudW1iZXJcbiAgICBpZiAoaXNOYU4ocGFyc2VkLnBvcnQpKSB7XG4gICAgICBwYXJzZWQucG9ydCA9IG1hdGNoZXNbNV1cbiAgICB9XG4gICAgaWYgKHBhcnNlZC5ob3N0KSB7XG4gICAgICBjb25zdCBpcHY0cmVzdWx0ID0gaXNJUHY0KHBhcnNlZC5ob3N0KVxuICAgICAgaWYgKGlwdjRyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGlwdjZyZXN1bHQgPSBub3JtYWxpemVJUHY2KHBhcnNlZC5ob3N0KVxuICAgICAgICBwYXJzZWQuaG9zdCA9IGlwdjZyZXN1bHQuaG9zdC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGlzSVAgPSBpcHY2cmVzdWx0LmlzSVBWNlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNJUCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcnNlZC5zY2hlbWUgPT09IHVuZGVmaW5lZCAmJiBwYXJzZWQudXNlcmluZm8gPT09IHVuZGVmaW5lZCAmJiBwYXJzZWQuaG9zdCA9PT0gdW5kZWZpbmVkICYmIHBhcnNlZC5wb3J0ID09PSB1bmRlZmluZWQgJiYgcGFyc2VkLnF1ZXJ5ID09PSB1bmRlZmluZWQgJiYgIXBhcnNlZC5wYXRoKSB7XG4gICAgICBwYXJzZWQucmVmZXJlbmNlID0gJ3NhbWUtZG9jdW1lbnQnXG4gICAgfSBlbHNlIGlmIChwYXJzZWQuc2NoZW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlZC5yZWZlcmVuY2UgPSAncmVsYXRpdmUnXG4gICAgfSBlbHNlIGlmIChwYXJzZWQuZnJhZ21lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyc2VkLnJlZmVyZW5jZSA9ICdhYnNvbHV0ZSdcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkLnJlZmVyZW5jZSA9ICd1cmknXG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZm9yIHJlZmVyZW5jZSBlcnJvcnNcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgJiYgb3B0aW9ucy5yZWZlcmVuY2UgIT09ICdzdWZmaXgnICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBwYXJzZWQucmVmZXJlbmNlKSB7XG4gICAgICBwYXJzZWQuZXJyb3IgPSBwYXJzZWQuZXJyb3IgfHwgJ1VSSSBpcyBub3QgYSAnICsgb3B0aW9ucy5yZWZlcmVuY2UgKyAnIHJlZmVyZW5jZS4nXG4gICAgfVxuXG4gICAgLy8gZmluZCBzY2hlbWUgaGFuZGxlclxuICAgIGNvbnN0IHNjaGVtZUhhbmRsZXIgPSBnZXRTY2hlbWVIYW5kbGVyKG9wdGlvbnMuc2NoZW1lIHx8IHBhcnNlZC5zY2hlbWUpXG5cbiAgICAvLyBjaGVjayBpZiBzY2hlbWUgY2FuJ3QgaGFuZGxlIElSSXNcbiAgICBpZiAoIW9wdGlvbnMudW5pY29kZVN1cHBvcnQgJiYgKCFzY2hlbWVIYW5kbGVyIHx8ICFzY2hlbWVIYW5kbGVyLnVuaWNvZGVTdXBwb3J0KSkge1xuICAgICAgLy8gaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgaWYgKHBhcnNlZC5ob3N0ICYmIChvcHRpb25zLmRvbWFpbkhvc3QgfHwgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5kb21haW5Ib3N0KSkgJiYgaXNJUCA9PT0gZmFsc2UgJiYgbm9uU2ltcGxlRG9tYWluKHBhcnNlZC5ob3N0KSkge1xuICAgICAgICAvLyBjb252ZXJ0IFVuaWNvZGUgSUROIC0+IEFTQ0lJIElETlxuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhcnNlZC5ob3N0ID0gVVJMLmRvbWFpblRvQVNDSUkocGFyc2VkLmhvc3QudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHBhcnNlZC5lcnJvciA9IHBhcnNlZC5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSTogXCIgKyBlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGNvbnZlcnQgSVJJIC0+IFVSSVxuICAgIH1cblxuICAgIGlmICghc2NoZW1lSGFuZGxlciB8fCAoc2NoZW1lSGFuZGxlciAmJiAhc2NoZW1lSGFuZGxlci5za2lwTm9ybWFsaXplKSkge1xuICAgICAgaWYgKHVyaS5pbmRleE9mKCclJykgIT09IC0xKSB7XG4gICAgICAgIGlmIChwYXJzZWQuc2NoZW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXJzZWQuc2NoZW1lID0gdW5lc2NhcGUocGFyc2VkLnNjaGVtZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VkLmhvc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcnNlZC5ob3N0ID0gdW5lc2NhcGUocGFyc2VkLmhvc3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZWQucGF0aCkge1xuICAgICAgICBwYXJzZWQucGF0aCA9IGVzY2FwZSh1bmVzY2FwZShwYXJzZWQucGF0aCkpXG4gICAgICB9XG4gICAgICBpZiAocGFyc2VkLmZyYWdtZW50KSB7XG4gICAgICAgIHBhcnNlZC5mcmFnbWVudCA9IGVuY29kZVVSSShkZWNvZGVVUklDb21wb25lbnQocGFyc2VkLmZyYWdtZW50KSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBwYXJzaW5nXG4gICAgaWYgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5wYXJzZSkge1xuICAgICAgc2NoZW1lSGFuZGxlci5wYXJzZShwYXJzZWQsIG9wdGlvbnMpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBhcnNlZC5lcnJvciA9IHBhcnNlZC5lcnJvciB8fCAnVVJJIGNhbiBub3QgYmUgcGFyc2VkLidcbiAgfVxuICByZXR1cm4gcGFyc2VkXG59XG5cbmNvbnN0IGZhc3RVcmkgPSB7XG4gIFNDSEVNRVMsXG4gIG5vcm1hbGl6ZSxcbiAgcmVzb2x2ZSxcbiAgcmVzb2x2ZUNvbXBvbmVudCxcbiAgZXF1YWwsXG4gIHNlcmlhbGl6ZSxcbiAgcGFyc2Vcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYXN0VXJpXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZmFzdFVyaVxubW9kdWxlLmV4cG9ydHMuZmFzdFVyaSA9IGZhc3RVcmlcbiIsICJpbXBvcnQgKiBhcyB1cmkgZnJvbSBcImZhc3QtdXJpXCJcblxudHlwZSBVUkkgPSB0eXBlb2YgdXJpICYge2NvZGU6IHN0cmluZ31cbjsodXJpIGFzIFVSSSkuY29kZSA9ICdyZXF1aXJlKFwiYWp2L2Rpc3QvcnVudGltZS91cmlcIikuZGVmYXVsdCdcblxuZXhwb3J0IGRlZmF1bHQgdXJpIGFzIFVSSVxuIiwgImV4cG9ydCB7XG4gIEZvcm1hdCxcbiAgRm9ybWF0RGVmaW5pdGlvbixcbiAgQXN5bmNGb3JtYXREZWZpbml0aW9uLFxuICBLZXl3b3JkRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBNYWNyb0tleXdvcmREZWZpbml0aW9uLFxuICBGdW5jS2V5d29yZERlZmluaXRpb24sXG4gIFZvY2FidWxhcnksXG4gIFNjaGVtYSxcbiAgU2NoZW1hT2JqZWN0LFxuICBBbnlTY2hlbWFPYmplY3QsXG4gIEFzeW5jU2NoZW1hLFxuICBBbnlTY2hlbWEsXG4gIFZhbGlkYXRlRnVuY3Rpb24sXG4gIEFzeW5jVmFsaWRhdGVGdW5jdGlvbixcbiAgQW55VmFsaWRhdGVGdW5jdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEVycm9yTm9QYXJhbXMsXG59IGZyb20gXCIuL3R5cGVzXCJcblxuZXhwb3J0IHtTY2hlbWFDeHQsIFNjaGVtYU9iakN4dH0gZnJvbSBcIi4vY29tcGlsZVwiXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbjxPcHRzPiB7XG4gIChhanY6IEFqdiwgb3B0aW9ucz86IE9wdHMpOiBBanZcbiAgW3Byb3A6IHN0cmluZ106IGFueVxufVxuXG5leHBvcnQge0tleXdvcmRDeHR9IGZyb20gXCIuL2NvbXBpbGUvdmFsaWRhdGVcIlxuZXhwb3J0IHtEZWZpbmVkRXJyb3J9IGZyb20gXCIuL3ZvY2FidWxhcmllcy9lcnJvcnNcIlxuZXhwb3J0IHtKU09OVHlwZX0gZnJvbSBcIi4vY29tcGlsZS9ydWxlc1wiXG5leHBvcnQge0pTT05TY2hlbWFUeXBlfSBmcm9tIFwiLi90eXBlcy9qc29uLXNjaGVtYVwiXG5leHBvcnQge0pURFNjaGVtYVR5cGUsIFNvbWVKVERTY2hlbWFUeXBlLCBKVEREYXRhVHlwZX0gZnJvbSBcIi4vdHlwZXMvanRkLXNjaGVtYVwiXG5leHBvcnQge18sIHN0ciwgc3RyaW5naWZ5LCBuaWwsIE5hbWUsIENvZGUsIENvZGVHZW4sIENvZGVHZW5PcHRpb25zfSBmcm9tIFwiLi9jb21waWxlL2NvZGVnZW5cIlxuXG5pbXBvcnQgdHlwZSB7XG4gIFNjaGVtYSxcbiAgQW55U2NoZW1hLFxuICBBbnlTY2hlbWFPYmplY3QsXG4gIFNjaGVtYU9iamVjdCxcbiAgQXN5bmNTY2hlbWEsXG4gIFZvY2FidWxhcnksXG4gIEtleXdvcmREZWZpbml0aW9uLFxuICBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBBbnlWYWxpZGF0ZUZ1bmN0aW9uLFxuICBWYWxpZGF0ZUZ1bmN0aW9uLFxuICBBc3luY1ZhbGlkYXRlRnVuY3Rpb24sXG4gIEVycm9yT2JqZWN0LFxuICBGb3JtYXQsXG4gIEFkZGVkRm9ybWF0LFxuICBSZWdFeHBFbmdpbmUsXG4gIFVyaVJlc29sdmVyLFxufSBmcm9tIFwiLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7SlNPTlNjaGVtYVR5cGV9IGZyb20gXCIuL3R5cGVzL2pzb24tc2NoZW1hXCJcbmltcG9ydCB0eXBlIHtKVERTY2hlbWFUeXBlLCBTb21lSlREU2NoZW1hVHlwZSwgSlRERGF0YVR5cGV9IGZyb20gXCIuL3R5cGVzL2p0ZC1zY2hlbWFcIlxuaW1wb3J0IFZhbGlkYXRpb25FcnJvciBmcm9tIFwiLi9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3JcIlxuaW1wb3J0IE1pc3NpbmdSZWZFcnJvciBmcm9tIFwiLi9jb21waWxlL3JlZl9lcnJvclwiXG5pbXBvcnQge2dldFJ1bGVzLCBWYWxpZGF0aW9uUnVsZXMsIFJ1bGUsIFJ1bGVHcm91cCwgSlNPTlR5cGV9IGZyb20gXCIuL2NvbXBpbGUvcnVsZXNcIlxuaW1wb3J0IHtTY2hlbWFFbnYsIGNvbXBpbGVTY2hlbWEsIHJlc29sdmVTY2hlbWF9IGZyb20gXCIuL2NvbXBpbGVcIlxuaW1wb3J0IHtDb2RlLCBWYWx1ZVNjb3BlfSBmcm9tIFwiLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHtub3JtYWxpemVJZCwgZ2V0U2NoZW1hUmVmc30gZnJvbSBcIi4vY29tcGlsZS9yZXNvbHZlXCJcbmltcG9ydCB7Z2V0SlNPTlR5cGVzfSBmcm9tIFwiLi9jb21waWxlL3ZhbGlkYXRlL2RhdGFUeXBlXCJcbmltcG9ydCB7ZWFjaEl0ZW19IGZyb20gXCIuL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQgKiBhcyAkZGF0YVJlZlNjaGVtYSBmcm9tIFwiLi9yZWZzL2RhdGEuanNvblwiXG5cbmltcG9ydCBEZWZhdWx0VXJpUmVzb2x2ZXIgZnJvbSBcIi4vcnVudGltZS91cmlcIlxuXG5jb25zdCBkZWZhdWx0UmVnRXhwOiBSZWdFeHBFbmdpbmUgPSAoc3RyLCBmbGFncykgPT4gbmV3IFJlZ0V4cChzdHIsIGZsYWdzKVxuZGVmYXVsdFJlZ0V4cC5jb2RlID0gXCJuZXcgUmVnRXhwXCJcblxuY29uc3QgTUVUQV9JR05PUkVfT1BUSU9OUzogKGtleW9mIE9wdGlvbnMpW10gPSBbXCJyZW1vdmVBZGRpdGlvbmFsXCIsIFwidXNlRGVmYXVsdHNcIiwgXCJjb2VyY2VUeXBlc1wiXVxuY29uc3QgRVhUX1NDT1BFX05BTUVTID0gbmV3IFNldChbXG4gIFwidmFsaWRhdGVcIixcbiAgXCJzZXJpYWxpemVcIixcbiAgXCJwYXJzZVwiLFxuICBcIndyYXBwZXJcIixcbiAgXCJyb290XCIsXG4gIFwic2NoZW1hXCIsXG4gIFwia2V5d29yZFwiLFxuICBcInBhdHRlcm5cIixcbiAgXCJmb3JtYXRzXCIsXG4gIFwidmFsaWRhdGUkZGF0YVwiLFxuICBcImZ1bmNcIixcbiAgXCJvYmpcIixcbiAgXCJFcnJvclwiLFxuXSlcblxuZXhwb3J0IHR5cGUgT3B0aW9ucyA9IEN1cnJlbnRPcHRpb25zICYgRGVwcmVjYXRlZE9wdGlvbnNcblxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50T3B0aW9ucyB7XG4gIC8vIHN0cmljdCBtb2RlIG9wdGlvbnMgKE5FVylcbiAgc3RyaWN0PzogYm9vbGVhbiB8IFwibG9nXCJcbiAgc3RyaWN0U2NoZW1hPzogYm9vbGVhbiB8IFwibG9nXCJcbiAgc3RyaWN0TnVtYmVycz86IGJvb2xlYW4gfCBcImxvZ1wiXG4gIHN0cmljdFR5cGVzPzogYm9vbGVhbiB8IFwibG9nXCJcbiAgc3RyaWN0VHVwbGVzPzogYm9vbGVhbiB8IFwibG9nXCJcbiAgc3RyaWN0UmVxdWlyZWQ/OiBib29sZWFuIHwgXCJsb2dcIlxuICBhbGxvd01hdGNoaW5nUHJvcGVydGllcz86IGJvb2xlYW4gLy8gZGlzYWJsZXMgYSBzdHJpY3QgbW9kZSByZXN0cmljdGlvblxuICBhbGxvd1VuaW9uVHlwZXM/OiBib29sZWFuXG4gIHZhbGlkYXRlRm9ybWF0cz86IGJvb2xlYW5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgcmVwb3J0aW5nIG9wdGlvbnM6XG4gICRkYXRhPzogYm9vbGVhblxuICBhbGxFcnJvcnM/OiBib29sZWFuXG4gIHZlcmJvc2U/OiBib29sZWFuXG4gIGRpc2NyaW1pbmF0b3I/OiBib29sZWFuXG4gIHVuaWNvZGVSZWdFeHA/OiBib29sZWFuXG4gIHRpbWVzdGFtcD86IFwic3RyaW5nXCIgfCBcImRhdGVcIiAvLyBKVEQgb25seVxuICBwYXJzZURhdGU/OiBib29sZWFuIC8vIEpURCBvbmx5XG4gIGFsbG93RGF0ZT86IGJvb2xlYW4gLy8gSlREIG9ubHlcbiAgc3BlY2lhbE51bWJlcnM/OiBcImZhc3RcIiB8IFwibnVsbFwiIC8vIEpURCBvbmx5XG4gICRjb21tZW50PzpcbiAgICB8IHRydWVcbiAgICB8ICgoY29tbWVudDogc3RyaW5nLCBzY2hlbWFQYXRoPzogc3RyaW5nLCByb290U2NoZW1hPzogQW55U2NoZW1hT2JqZWN0KSA9PiB1bmtub3duKVxuICBmb3JtYXRzPzoge1tOYW1lIGluIHN0cmluZ10/OiBGb3JtYXR9XG4gIGtleXdvcmRzPzogVm9jYWJ1bGFyeVxuICBzY2hlbWFzPzogQW55U2NoZW1hW10gfCB7W0tleSBpbiBzdHJpbmddPzogQW55U2NoZW1hfVxuICBsb2dnZXI/OiBMb2dnZXIgfCBmYWxzZVxuICBsb2FkU2NoZW1hPzogKHVyaTogc3RyaW5nKSA9PiBQcm9taXNlPEFueVNjaGVtYU9iamVjdD5cbiAgLy8gb3B0aW9ucyB0byBtb2RpZnkgdmFsaWRhdGVkIGRhdGE6XG4gIHJlbW92ZUFkZGl0aW9uYWw/OiBib29sZWFuIHwgXCJhbGxcIiB8IFwiZmFpbGluZ1wiXG4gIHVzZURlZmF1bHRzPzogYm9vbGVhbiB8IFwiZW1wdHlcIlxuICBjb2VyY2VUeXBlcz86IGJvb2xlYW4gfCBcImFycmF5XCJcbiAgLy8gYWR2YW5jZWQgb3B0aW9uczpcbiAgbmV4dD86IGJvb2xlYW4gLy8gTkVXXG4gIHVuZXZhbHVhdGVkPzogYm9vbGVhbiAvLyBORVdcbiAgZHluYW1pY1JlZj86IGJvb2xlYW4gLy8gTkVXXG4gIHNjaGVtYUlkPzogXCJpZFwiIHwgXCIkaWRcIlxuICBqdGQ/OiBib29sZWFuIC8vIE5FV1xuICBtZXRhPzogU2NoZW1hT2JqZWN0IHwgYm9vbGVhblxuICBkZWZhdWx0TWV0YT86IHN0cmluZyB8IEFueVNjaGVtYU9iamVjdFxuICB2YWxpZGF0ZVNjaGVtYT86IGJvb2xlYW4gfCBcImxvZ1wiXG4gIGFkZFVzZWRTY2hlbWE/OiBib29sZWFuXG4gIGlubGluZVJlZnM/OiBib29sZWFuIHwgbnVtYmVyXG4gIHBhc3NDb250ZXh0PzogYm9vbGVhblxuICBsb29wUmVxdWlyZWQ/OiBudW1iZXJcbiAgbG9vcEVudW0/OiBudW1iZXIgLy8gTkVXXG4gIG93blByb3BlcnRpZXM/OiBib29sZWFuXG4gIG11bHRpcGxlT2ZQcmVjaXNpb24/OiBudW1iZXJcbiAgaW50MzJyYW5nZT86IGJvb2xlYW4gLy8gSlREIG9ubHlcbiAgbWVzc2FnZXM/OiBib29sZWFuXG4gIGNvZGU/OiBDb2RlT3B0aW9ucyAvLyBORVdcbiAgdXJpUmVzb2x2ZXI/OiBVcmlSZXNvbHZlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVPcHRpb25zIHtcbiAgZXM1PzogYm9vbGVhblxuICBlc20/OiBib29sZWFuXG4gIGxpbmVzPzogYm9vbGVhblxuICBvcHRpbWl6ZT86IGJvb2xlYW4gfCBudW1iZXJcbiAgZm9ybWF0cz86IENvZGUgLy8gY29kZSB0byByZXF1aXJlIChvciBjb25zdHJ1Y3QpIG1hcCBvZiBhdmFpbGFibGUgZm9ybWF0cyAtIGZvciBzdGFuZGFsb25lIGNvZGVcbiAgc291cmNlPzogYm9vbGVhblxuICBwcm9jZXNzPzogKGNvZGU6IHN0cmluZywgc2NoZW1hPzogU2NoZW1hRW52KSA9PiBzdHJpbmdcbiAgcmVnRXhwPzogUmVnRXhwRW5naW5lXG59XG5cbmludGVyZmFjZSBJbnN0YW5jZUNvZGVPcHRpb25zIGV4dGVuZHMgQ29kZU9wdGlvbnMge1xuICByZWdFeHA6IFJlZ0V4cEVuZ2luZVxuICBvcHRpbWl6ZTogbnVtYmVyXG59XG5cbmludGVyZmFjZSBEZXByZWNhdGVkT3B0aW9ucyB7XG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBpZ25vcmVLZXl3b3Jkc1dpdGhSZWY/OiBib29sZWFuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBqc1Byb3BlcnR5U3ludGF4PzogYm9vbGVhbiAvLyBhZGRlZCBpbnN0ZWFkIG9mIGpzb25Qb2ludGVyc1xuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgdW5pY29kZT86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIFJlbW92ZWRPcHRpb25zIHtcbiAgZm9ybWF0PzogYm9vbGVhblxuICBlcnJvckRhdGFQYXRoPzogXCJvYmplY3RcIiB8IFwicHJvcGVydHlcIlxuICBudWxsYWJsZT86IGJvb2xlYW4gLy8gXCJudWxsYWJsZVwiIGtleXdvcmQgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHRcbiAganNvblBvaW50ZXJzPzogYm9vbGVhblxuICBleHRlbmRSZWZzPzogdHJ1ZSB8IFwiaWdub3JlXCIgfCBcImZhaWxcIlxuICBtaXNzaW5nUmVmcz86IHRydWUgfCBcImlnbm9yZVwiIHwgXCJmYWlsXCJcbiAgcHJvY2Vzc0NvZGU/OiAoY29kZTogc3RyaW5nLCBzY2hlbWE/OiBTY2hlbWFFbnYpID0+IHN0cmluZ1xuICBzb3VyY2VDb2RlPzogYm9vbGVhblxuICBzdHJpY3REZWZhdWx0cz86IGJvb2xlYW5cbiAgc3RyaWN0S2V5d29yZHM/OiBib29sZWFuXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhblxuICB1bmtub3duRm9ybWF0cz86IHRydWUgfCBzdHJpbmdbXSB8IFwiaWdub3JlXCJcbiAgY2FjaGU/OiBhbnlcbiAgc2VyaWFsaXplPzogKHNjaGVtYTogQW55U2NoZW1hKSA9PiB1bmtub3duXG4gIGFqdkVycm9ycz86IGJvb2xlYW5cbn1cblxudHlwZSBPcHRpb25zSW5mbzxUIGV4dGVuZHMgUmVtb3ZlZE9wdGlvbnMgfCBEZXByZWNhdGVkT3B0aW9ucz4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHN0cmluZyB8IHVuZGVmaW5lZFxufVxuXG5jb25zdCByZW1vdmVkT3B0aW9uczogT3B0aW9uc0luZm88UmVtb3ZlZE9wdGlvbnM+ID0ge1xuICBlcnJvckRhdGFQYXRoOiBcIlwiLFxuICBmb3JtYXQ6IFwiYHZhbGlkYXRlRm9ybWF0czogZmFsc2VgIGNhbiBiZSB1c2VkIGluc3RlYWQuXCIsXG4gIG51bGxhYmxlOiAnXCJudWxsYWJsZVwiIGtleXdvcmQgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHQuJyxcbiAganNvblBvaW50ZXJzOiBcIkRlcHJlY2F0ZWQganNQcm9wZXJ0eVN5bnRheCBjYW4gYmUgdXNlZCBpbnN0ZWFkLlwiLFxuICBleHRlbmRSZWZzOiBcIkRlcHJlY2F0ZWQgaWdub3JlS2V5d29yZHNXaXRoUmVmIGNhbiBiZSB1c2VkIGluc3RlYWQuXCIsXG4gIG1pc3NpbmdSZWZzOiBcIlBhc3MgZW1wdHkgc2NoZW1hIHdpdGggJGlkIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgdG8gYWp2LmFkZFNjaGVtYS5cIixcbiAgcHJvY2Vzc0NvZGU6IFwiVXNlIG9wdGlvbiBgY29kZToge3Byb2Nlc3M6IChjb2RlLCBzY2hlbWFFbnY6IG9iamVjdCkgPT4gc3RyaW5nfWBcIixcbiAgc291cmNlQ29kZTogXCJVc2Ugb3B0aW9uIGBjb2RlOiB7c291cmNlOiB0cnVlfWBcIixcbiAgc3RyaWN0RGVmYXVsdHM6IFwiSXQgaXMgZGVmYXVsdCBub3csIHNlZSBvcHRpb24gYHN0cmljdGAuXCIsXG4gIHN0cmljdEtleXdvcmRzOiBcIkl0IGlzIGRlZmF1bHQgbm93LCBzZWUgb3B0aW9uIGBzdHJpY3RgLlwiLFxuICB1bmlxdWVJdGVtczogJ1widW5pcXVlSXRlbXNcIiBrZXl3b3JkIGlzIGFsd2F5cyB2YWxpZGF0ZWQuJyxcbiAgdW5rbm93bkZvcm1hdHM6IFwiRGlzYWJsZSBzdHJpY3QgbW9kZSBvciBwYXNzIGB0cnVlYCB0byBgYWp2LmFkZEZvcm1hdGAgKG9yIGBmb3JtYXRzYCBvcHRpb24pLlwiLFxuICBjYWNoZTogXCJNYXAgaXMgdXNlZCBhcyBjYWNoZSwgc2NoZW1hIG9iamVjdCBhcyBrZXkuXCIsXG4gIHNlcmlhbGl6ZTogXCJNYXAgaXMgdXNlZCBhcyBjYWNoZSwgc2NoZW1hIG9iamVjdCBhcyBrZXkuXCIsXG4gIGFqdkVycm9yczogXCJJdCBpcyBkZWZhdWx0IG5vdy5cIixcbn1cblxuY29uc3QgZGVwcmVjYXRlZE9wdGlvbnM6IE9wdGlvbnNJbmZvPERlcHJlY2F0ZWRPcHRpb25zPiA9IHtcbiAgaWdub3JlS2V5d29yZHNXaXRoUmVmOiBcIlwiLFxuICBqc1Byb3BlcnR5U3ludGF4OiBcIlwiLFxuICB1bmljb2RlOiAnXCJtaW5MZW5ndGhcIi9cIm1heExlbmd0aFwiIGFjY291bnQgZm9yIHVuaWNvZGUgY2hhcmFjdGVycyBieSBkZWZhdWx0LicsXG59XG5cbnR5cGUgUmVxdWlyZWRJbnN0YW5jZU9wdGlvbnMgPSB7XG4gIFtLIGluXG4gICAgfCBcInN0cmljdFNjaGVtYVwiXG4gICAgfCBcInN0cmljdE51bWJlcnNcIlxuICAgIHwgXCJzdHJpY3RUeXBlc1wiXG4gICAgfCBcInN0cmljdFR1cGxlc1wiXG4gICAgfCBcInN0cmljdFJlcXVpcmVkXCJcbiAgICB8IFwiaW5saW5lUmVmc1wiXG4gICAgfCBcImxvb3BSZXF1aXJlZFwiXG4gICAgfCBcImxvb3BFbnVtXCJcbiAgICB8IFwibWV0YVwiXG4gICAgfCBcIm1lc3NhZ2VzXCJcbiAgICB8IFwic2NoZW1hSWRcIlxuICAgIHwgXCJhZGRVc2VkU2NoZW1hXCJcbiAgICB8IFwidmFsaWRhdGVTY2hlbWFcIlxuICAgIHwgXCJ2YWxpZGF0ZUZvcm1hdHNcIlxuICAgIHwgXCJpbnQzMnJhbmdlXCJcbiAgICB8IFwidW5pY29kZVJlZ0V4cFwiXG4gICAgfCBcInVyaVJlc29sdmVyXCJdOiBOb25OdWxsYWJsZTxPcHRpb25zW0tdPlxufSAmIHtjb2RlOiBJbnN0YW5jZUNvZGVPcHRpb25zfVxuXG5leHBvcnQgdHlwZSBJbnN0YW5jZU9wdGlvbnMgPSBPcHRpb25zICYgUmVxdWlyZWRJbnN0YW5jZU9wdGlvbnNcblxuY29uc3QgTUFYX0VYUFJFU1NJT04gPSAyMDBcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHJlcXVpcmVkT3B0aW9ucyhvOiBPcHRpb25zKTogUmVxdWlyZWRJbnN0YW5jZU9wdGlvbnMge1xuICBjb25zdCBzID0gby5zdHJpY3RcbiAgY29uc3QgX29wdHogPSBvLmNvZGU/Lm9wdGltaXplXG4gIGNvbnN0IG9wdGltaXplID0gX29wdHogPT09IHRydWUgfHwgX29wdHogPT09IHVuZGVmaW5lZCA/IDEgOiBfb3B0eiB8fCAwXG4gIGNvbnN0IHJlZ0V4cCA9IG8uY29kZT8ucmVnRXhwID8/IGRlZmF1bHRSZWdFeHBcbiAgY29uc3QgdXJpUmVzb2x2ZXIgPSBvLnVyaVJlc29sdmVyID8/IERlZmF1bHRVcmlSZXNvbHZlclxuICByZXR1cm4ge1xuICAgIHN0cmljdFNjaGVtYTogby5zdHJpY3RTY2hlbWEgPz8gcyA/PyB0cnVlLFxuICAgIHN0cmljdE51bWJlcnM6IG8uc3RyaWN0TnVtYmVycyA/PyBzID8/IHRydWUsXG4gICAgc3RyaWN0VHlwZXM6IG8uc3RyaWN0VHlwZXMgPz8gcyA/PyBcImxvZ1wiLFxuICAgIHN0cmljdFR1cGxlczogby5zdHJpY3RUdXBsZXMgPz8gcyA/PyBcImxvZ1wiLFxuICAgIHN0cmljdFJlcXVpcmVkOiBvLnN0cmljdFJlcXVpcmVkID8/IHMgPz8gZmFsc2UsXG4gICAgY29kZTogby5jb2RlID8gey4uLm8uY29kZSwgb3B0aW1pemUsIHJlZ0V4cH0gOiB7b3B0aW1pemUsIHJlZ0V4cH0sXG4gICAgbG9vcFJlcXVpcmVkOiBvLmxvb3BSZXF1aXJlZCA/PyBNQVhfRVhQUkVTU0lPTixcbiAgICBsb29wRW51bTogby5sb29wRW51bSA/PyBNQVhfRVhQUkVTU0lPTixcbiAgICBtZXRhOiBvLm1ldGEgPz8gdHJ1ZSxcbiAgICBtZXNzYWdlczogby5tZXNzYWdlcyA/PyB0cnVlLFxuICAgIGlubGluZVJlZnM6IG8uaW5saW5lUmVmcyA/PyB0cnVlLFxuICAgIHNjaGVtYUlkOiBvLnNjaGVtYUlkID8/IFwiJGlkXCIsXG4gICAgYWRkVXNlZFNjaGVtYTogby5hZGRVc2VkU2NoZW1hID8/IHRydWUsXG4gICAgdmFsaWRhdGVTY2hlbWE6IG8udmFsaWRhdGVTY2hlbWEgPz8gdHJ1ZSxcbiAgICB2YWxpZGF0ZUZvcm1hdHM6IG8udmFsaWRhdGVGb3JtYXRzID8/IHRydWUsXG4gICAgdW5pY29kZVJlZ0V4cDogby51bmljb2RlUmVnRXhwID8/IHRydWUsXG4gICAgaW50MzJyYW5nZTogby5pbnQzMnJhbmdlID8/IHRydWUsXG4gICAgdXJpUmVzb2x2ZXI6IHVyaVJlc29sdmVyLFxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyIHtcbiAgbG9nKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd25cbiAgd2FybiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duXG4gIGVycm9yKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd25cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWp2IHtcbiAgb3B0czogSW5zdGFuY2VPcHRpb25zXG4gIGVycm9ycz86IEVycm9yT2JqZWN0W10gfCBudWxsIC8vIGVycm9ycyBmcm9tIHRoZSBsYXN0IHZhbGlkYXRpb25cbiAgbG9nZ2VyOiBMb2dnZXJcbiAgLy8gc2hhcmVkIGV4dGVybmFsIHNjb3BlIHZhbHVlcyBmb3IgY29tcGlsZWQgZnVuY3Rpb25zXG4gIHJlYWRvbmx5IHNjb3BlOiBWYWx1ZVNjb3BlXG4gIHJlYWRvbmx5IHNjaGVtYXM6IHtbS2V5IGluIHN0cmluZ10/OiBTY2hlbWFFbnZ9ID0ge31cbiAgcmVhZG9ubHkgcmVmczoge1tSZWYgaW4gc3RyaW5nXT86IFNjaGVtYUVudiB8IHN0cmluZ30gPSB7fVxuICByZWFkb25seSBmb3JtYXRzOiB7W05hbWUgaW4gc3RyaW5nXT86IEFkZGVkRm9ybWF0fSA9IHt9XG4gIHJlYWRvbmx5IFJVTEVTOiBWYWxpZGF0aW9uUnVsZXNcbiAgcmVhZG9ubHkgX2NvbXBpbGF0aW9uczogU2V0PFNjaGVtYUVudj4gPSBuZXcgU2V0KClcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZzoge1tSZWYgaW4gc3RyaW5nXT86IFByb21pc2U8QW55U2NoZW1hT2JqZWN0Pn0gPSB7fVxuICBwcml2YXRlIHJlYWRvbmx5IF9jYWNoZTogTWFwPEFueVNjaGVtYSwgU2NoZW1hRW52PiA9IG5ldyBNYXAoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRhT3B0czogSW5zdGFuY2VPcHRpb25zXG5cbiAgc3RhdGljIFZhbGlkYXRpb25FcnJvciA9IFZhbGlkYXRpb25FcnJvclxuICBzdGF0aWMgTWlzc2luZ1JlZkVycm9yID0gTWlzc2luZ1JlZkVycm9yXG5cbiAgY29uc3RydWN0b3Iob3B0czogT3B0aW9ucyA9IHt9KSB7XG4gICAgb3B0cyA9IHRoaXMub3B0cyA9IHsuLi5vcHRzLCAuLi5yZXF1aXJlZE9wdGlvbnMob3B0cyl9XG4gICAgY29uc3Qge2VzNSwgbGluZXN9ID0gdGhpcy5vcHRzLmNvZGVcblxuICAgIHRoaXMuc2NvcGUgPSBuZXcgVmFsdWVTY29wZSh7c2NvcGU6IHt9LCBwcmVmaXhlczogRVhUX1NDT1BFX05BTUVTLCBlczUsIGxpbmVzfSlcbiAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcihvcHRzLmxvZ2dlcilcbiAgICBjb25zdCBmb3JtYXRPcHQgPSBvcHRzLnZhbGlkYXRlRm9ybWF0c1xuICAgIG9wdHMudmFsaWRhdGVGb3JtYXRzID0gZmFsc2VcblxuICAgIHRoaXMuUlVMRVMgPSBnZXRSdWxlcygpXG4gICAgY2hlY2tPcHRpb25zLmNhbGwodGhpcywgcmVtb3ZlZE9wdGlvbnMsIG9wdHMsIFwiTk9UIFNVUFBPUlRFRFwiKVxuICAgIGNoZWNrT3B0aW9ucy5jYWxsKHRoaXMsIGRlcHJlY2F0ZWRPcHRpb25zLCBvcHRzLCBcIkRFUFJFQ0FURURcIiwgXCJ3YXJuXCIpXG4gICAgdGhpcy5fbWV0YU9wdHMgPSBnZXRNZXRhU2NoZW1hT3B0aW9ucy5jYWxsKHRoaXMpXG5cbiAgICBpZiAob3B0cy5mb3JtYXRzKSBhZGRJbml0aWFsRm9ybWF0cy5jYWxsKHRoaXMpXG4gICAgdGhpcy5fYWRkVm9jYWJ1bGFyaWVzKClcbiAgICB0aGlzLl9hZGREZWZhdWx0TWV0YVNjaGVtYSgpXG4gICAgaWYgKG9wdHMua2V5d29yZHMpIGFkZEluaXRpYWxLZXl3b3Jkcy5jYWxsKHRoaXMsIG9wdHMua2V5d29yZHMpXG4gICAgaWYgKHR5cGVvZiBvcHRzLm1ldGEgPT0gXCJvYmplY3RcIikgdGhpcy5hZGRNZXRhU2NoZW1hKG9wdHMubWV0YSlcbiAgICBhZGRJbml0aWFsU2NoZW1hcy5jYWxsKHRoaXMpXG4gICAgb3B0cy52YWxpZGF0ZUZvcm1hdHMgPSBmb3JtYXRPcHRcbiAgfVxuXG4gIF9hZGRWb2NhYnVsYXJpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRLZXl3b3JkKFwiJGFzeW5jXCIpXG4gIH1cblxuICBfYWRkRGVmYXVsdE1ldGFTY2hlbWEoKTogdm9pZCB7XG4gICAgY29uc3QgeyRkYXRhLCBtZXRhLCBzY2hlbWFJZH0gPSB0aGlzLm9wdHNcbiAgICBsZXQgX2RhdGFSZWZTY2hlbWE6IFNjaGVtYU9iamVjdCA9ICRkYXRhUmVmU2NoZW1hXG4gICAgaWYgKHNjaGVtYUlkID09PSBcImlkXCIpIHtcbiAgICAgIF9kYXRhUmVmU2NoZW1hID0gey4uLiRkYXRhUmVmU2NoZW1hfVxuICAgICAgX2RhdGFSZWZTY2hlbWEuaWQgPSBfZGF0YVJlZlNjaGVtYS4kaWRcbiAgICAgIGRlbGV0ZSBfZGF0YVJlZlNjaGVtYS4kaWRcbiAgICB9XG4gICAgaWYgKG1ldGEgJiYgJGRhdGEpIHRoaXMuYWRkTWV0YVNjaGVtYShfZGF0YVJlZlNjaGVtYSwgX2RhdGFSZWZTY2hlbWFbc2NoZW1hSWRdLCBmYWxzZSlcbiAgfVxuXG4gIGRlZmF1bHRNZXRhKCk6IHN0cmluZyB8IEFueVNjaGVtYU9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qge21ldGEsIHNjaGVtYUlkfSA9IHRoaXMub3B0c1xuICAgIHJldHVybiAodGhpcy5vcHRzLmRlZmF1bHRNZXRhID0gdHlwZW9mIG1ldGEgPT0gXCJvYmplY3RcIiA/IG1ldGFbc2NoZW1hSWRdIHx8IG1ldGEgOiB1bmRlZmluZWQpXG4gIH1cblxuICAvLyBWYWxpZGF0ZSBkYXRhIHVzaW5nIHNjaGVtYVxuICAvLyBBbnlTY2hlbWEgd2lsbCBiZSBjb21waWxlZCBhbmQgY2FjaGVkIHVzaW5nIHNjaGVtYSBpdHNlbGYgYXMgYSBrZXkgZm9yIE1hcFxuICB2YWxpZGF0ZShzY2hlbWE6IFNjaGVtYSB8IHN0cmluZywgZGF0YTogdW5rbm93bik6IGJvb2xlYW5cbiAgdmFsaWRhdGUoc2NoZW1hS2V5UmVmOiBBbnlTY2hlbWEgfCBzdHJpbmcsIGRhdGE6IHVua25vd24pOiBib29sZWFuIHwgUHJvbWlzZTx1bmtub3duPlxuICB2YWxpZGF0ZTxUPihzY2hlbWE6IFNjaGVtYSB8IEpTT05TY2hlbWFUeXBlPFQ+IHwgc3RyaW5nLCBkYXRhOiB1bmtub3duKTogZGF0YSBpcyBUXG4gIC8vIFNlcGFyYXRlZCBmb3IgdHlwZSBpbmZlcmVuY2UgdG8gd29ya1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlc1xuICB2YWxpZGF0ZTxUPihzY2hlbWE6IEpURFNjaGVtYVR5cGU8VD4sIGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFRcbiAgLy8gVGhpcyBvdmVybG9hZCBpcyBvbmx5IGludGVuZGVkIGZvciB0eXBlc2NyaXB0IGluZmVyZW5jZSwgdGhlIGZpcnN0XG4gIC8vIGFyZ3VtZW50IHByZXZlbnRzIG1hbnVhbCB0eXBlIGFubm90YXRpb24gZnJvbSBtYXRjaGluZyB0aGlzIG92ZXJsb2FkXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgdmFsaWRhdGU8TiBleHRlbmRzIG5ldmVyLCBUIGV4dGVuZHMgU29tZUpURFNjaGVtYVR5cGU+KFxuICAgIHNjaGVtYTogVCxcbiAgICBkYXRhOiB1bmtub3duXG4gICk6IGRhdGEgaXMgSlRERGF0YVR5cGU8VD5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZWR1bmRhbnQtdHlwZS1jb25zdGl0dWVudHNcbiAgdmFsaWRhdGU8VD4oc2NoZW1hOiBBc3luY1NjaGVtYSwgZGF0YTogdW5rbm93biB8IFQpOiBQcm9taXNlPFQ+XG4gIHZhbGlkYXRlPFQ+KHNjaGVtYUtleVJlZjogQW55U2NoZW1hIHwgc3RyaW5nLCBkYXRhOiB1bmtub3duKTogZGF0YSBpcyBUIHwgUHJvbWlzZTxUPlxuICB2YWxpZGF0ZTxUPihcbiAgICBzY2hlbWFLZXlSZWY6IEFueVNjaGVtYSB8IHN0cmluZywgLy8ga2V5LCByZWYgb3Igc2NoZW1hIG9iamVjdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkdW5kYW50LXR5cGUtY29uc3RpdHVlbnRzXG4gICAgZGF0YTogdW5rbm93biB8IFQgLy8gdG8gYmUgdmFsaWRhdGVkXG4gICk6IGJvb2xlYW4gfCBQcm9taXNlPFQ+IHtcbiAgICBsZXQgdjogQW55VmFsaWRhdGVGdW5jdGlvbiB8IHVuZGVmaW5lZFxuICAgIGlmICh0eXBlb2Ygc2NoZW1hS2V5UmVmID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHYgPSB0aGlzLmdldFNjaGVtYTxUPihzY2hlbWFLZXlSZWYpXG4gICAgICBpZiAoIXYpIHRocm93IG5ldyBFcnJvcihgbm8gc2NoZW1hIHdpdGgga2V5IG9yIHJlZiBcIiR7c2NoZW1hS2V5UmVmfVwiYClcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuY29tcGlsZTxUPihzY2hlbWFLZXlSZWYpXG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWQgPSB2KGRhdGEpXG4gICAgaWYgKCEoXCIkYXN5bmNcIiBpbiB2KSkgdGhpcy5lcnJvcnMgPSB2LmVycm9yc1xuICAgIHJldHVybiB2YWxpZFxuICB9XG5cbiAgLy8gQ3JlYXRlIHZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWFcbiAgLy8gX21ldGE6IHRydWUgaWYgc2NoZW1hIGlzIGEgbWV0YS1zY2hlbWEuIFVzZWQgaW50ZXJuYWxseSB0byBjb21waWxlIG1ldGEgc2NoZW1hcyBvZiB1c2VyLWRlZmluZWQga2V5d29yZHMuXG4gIGNvbXBpbGU8VCA9IHVua25vd24+KHNjaGVtYTogU2NoZW1hIHwgSlNPTlNjaGVtYVR5cGU8VD4sIF9tZXRhPzogYm9vbGVhbik6IFZhbGlkYXRlRnVuY3Rpb248VD5cbiAgLy8gU2VwYXJhdGVkIGZvciB0eXBlIGluZmVyZW5jZSB0byB3b3JrXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIGNvbXBpbGU8VCA9IHVua25vd24+KHNjaGVtYTogSlREU2NoZW1hVHlwZTxUPiwgX21ldGE/OiBib29sZWFuKTogVmFsaWRhdGVGdW5jdGlvbjxUPlxuICAvLyBUaGlzIG92ZXJsb2FkIGlzIG9ubHkgaW50ZW5kZWQgZm9yIHR5cGVzY3JpcHQgaW5mZXJlbmNlLCB0aGUgZmlyc3RcbiAgLy8gYXJndW1lbnQgcHJldmVudHMgbWFudWFsIHR5cGUgYW5ub3RhdGlvbiBmcm9tIG1hdGNoaW5nIHRoaXMgb3ZlcmxvYWRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb21waWxlPE4gZXh0ZW5kcyBuZXZlciwgVCBleHRlbmRzIFNvbWVKVERTY2hlbWFUeXBlPihcbiAgICBzY2hlbWE6IFQsXG4gICAgX21ldGE/OiBib29sZWFuXG4gICk6IFZhbGlkYXRlRnVuY3Rpb248SlRERGF0YVR5cGU8VD4+XG4gIGNvbXBpbGU8VCA9IHVua25vd24+KHNjaGVtYTogQXN5bmNTY2hlbWEsIF9tZXRhPzogYm9vbGVhbik6IEFzeW5jVmFsaWRhdGVGdW5jdGlvbjxUPlxuICBjb21waWxlPFQgPSB1bmtub3duPihzY2hlbWE6IEFueVNjaGVtYSwgX21ldGE/OiBib29sZWFuKTogQW55VmFsaWRhdGVGdW5jdGlvbjxUPlxuICBjb21waWxlPFQgPSB1bmtub3duPihzY2hlbWE6IEFueVNjaGVtYSwgX21ldGE/OiBib29sZWFuKTogQW55VmFsaWRhdGVGdW5jdGlvbjxUPiB7XG4gICAgY29uc3Qgc2NoID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgX21ldGEpXG4gICAgcmV0dXJuIChzY2gudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZVNjaGVtYUVudihzY2gpKSBhcyBBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+XG4gIH1cblxuICAvLyBDcmVhdGVzIHZhbGlkYXRpbmcgZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWEgd2l0aCBhc3luY2hyb25vdXMgbG9hZGluZyBvZiBtaXNzaW5nIHNjaGVtYXMuXG4gIC8vIGBsb2FkU2NoZW1hYCBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHNjaGVtYSB1cmkgYW5kIHJldHVybnMgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNjaGVtYS5cbiAgLy8gVE9ETyBhbGxvdyBwYXNzaW5nIHNjaGVtYSBVUklcbiAgLy8gbWV0YSAtIG9wdGlvbmFsIHRydWUgdG8gY29tcGlsZSBtZXRhLXNjaGVtYVxuICBjb21waWxlQXN5bmM8VCA9IHVua25vd24+KFxuICAgIHNjaGVtYTogU2NoZW1hT2JqZWN0IHwgSlNPTlNjaGVtYVR5cGU8VD4sXG4gICAgX21ldGE/OiBib29sZWFuXG4gICk6IFByb21pc2U8VmFsaWRhdGVGdW5jdGlvbjxUPj5cbiAgLy8gU2VwYXJhdGVkIGZvciB0eXBlIGluZmVyZW5jZSB0byB3b3JrXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIGNvbXBpbGVBc3luYzxUID0gdW5rbm93bj4oc2NoZW1hOiBKVERTY2hlbWFUeXBlPFQ+LCBfbWV0YT86IGJvb2xlYW4pOiBQcm9taXNlPFZhbGlkYXRlRnVuY3Rpb248VD4+XG4gIGNvbXBpbGVBc3luYzxUID0gdW5rbm93bj4oc2NoZW1hOiBBc3luY1NjaGVtYSwgbWV0YT86IGJvb2xlYW4pOiBQcm9taXNlPEFzeW5jVmFsaWRhdGVGdW5jdGlvbjxUPj5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbiAgY29tcGlsZUFzeW5jPFQgPSB1bmtub3duPihcbiAgICBzY2hlbWE6IEFueVNjaGVtYU9iamVjdCxcbiAgICBtZXRhPzogYm9vbGVhblxuICApOiBQcm9taXNlPEFueVZhbGlkYXRlRnVuY3Rpb248VD4+XG4gIGNvbXBpbGVBc3luYzxUID0gdW5rbm93bj4oXG4gICAgc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsXG4gICAgbWV0YT86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+PiB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdHMubG9hZFNjaGVtYSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm9wdGlvbnMubG9hZFNjaGVtYSBzaG91bGQgYmUgYSBmdW5jdGlvblwiKVxuICAgIH1cbiAgICBjb25zdCB7bG9hZFNjaGVtYX0gPSB0aGlzLm9wdHNcbiAgICByZXR1cm4gcnVuQ29tcGlsZUFzeW5jLmNhbGwodGhpcywgc2NoZW1hLCBtZXRhKVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tcGlsZUFzeW5jKFxuICAgICAgdGhpczogQWp2LFxuICAgICAgX3NjaGVtYTogQW55U2NoZW1hT2JqZWN0LFxuICAgICAgX21ldGE/OiBib29sZWFuXG4gICAgKTogUHJvbWlzZTxBbnlWYWxpZGF0ZUZ1bmN0aW9uPiB7XG4gICAgICBhd2FpdCBsb2FkTWV0YVNjaGVtYS5jYWxsKHRoaXMsIF9zY2hlbWEuJHNjaGVtYSlcbiAgICAgIGNvbnN0IHNjaCA9IHRoaXMuX2FkZFNjaGVtYShfc2NoZW1hLCBfbWV0YSlcbiAgICAgIHJldHVybiBzY2gudmFsaWRhdGUgfHwgX2NvbXBpbGVBc3luYy5jYWxsKHRoaXMsIHNjaClcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkTWV0YVNjaGVtYSh0aGlzOiBBanYsICRyZWY/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGlmICgkcmVmICYmICF0aGlzLmdldFNjaGVtYSgkcmVmKSkge1xuICAgICAgICBhd2FpdCBydW5Db21waWxlQXN5bmMuY2FsbCh0aGlzLCB7JHJlZn0sIHRydWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2NvbXBpbGVBc3luYyh0aGlzOiBBanYsIHNjaDogU2NoZW1hRW52KTogUHJvbWlzZTxBbnlWYWxpZGF0ZUZ1bmN0aW9uPiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcGlsZVNjaGVtYUVudihzY2gpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBNaXNzaW5nUmVmRXJyb3IpKSB0aHJvdyBlXG4gICAgICAgIGNoZWNrTG9hZGVkLmNhbGwodGhpcywgZSlcbiAgICAgICAgYXdhaXQgbG9hZE1pc3NpbmdTY2hlbWEuY2FsbCh0aGlzLCBlLm1pc3NpbmdTY2hlbWEpXG4gICAgICAgIHJldHVybiBfY29tcGlsZUFzeW5jLmNhbGwodGhpcywgc2NoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrTG9hZGVkKHRoaXM6IEFqdiwge21pc3NpbmdTY2hlbWE6IHJlZiwgbWlzc2luZ1JlZn06IE1pc3NpbmdSZWZFcnJvcik6IHZvaWQge1xuICAgICAgaWYgKHRoaXMucmVmc1tyZWZdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQW55U2NoZW1hICR7cmVmfSBpcyBsb2FkZWQgYnV0ICR7bWlzc2luZ1JlZn0gY2Fubm90IGJlIHJlc29sdmVkYClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkTWlzc2luZ1NjaGVtYSh0aGlzOiBBanYsIHJlZjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBjb25zdCBfc2NoZW1hID0gYXdhaXQgX2xvYWRTY2hlbWEuY2FsbCh0aGlzLCByZWYpXG4gICAgICBpZiAoIXRoaXMucmVmc1tyZWZdKSBhd2FpdCBsb2FkTWV0YVNjaGVtYS5jYWxsKHRoaXMsIF9zY2hlbWEuJHNjaGVtYSlcbiAgICAgIGlmICghdGhpcy5yZWZzW3JlZl0pIHRoaXMuYWRkU2NoZW1hKF9zY2hlbWEsIHJlZiwgbWV0YSlcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfbG9hZFNjaGVtYSh0aGlzOiBBanYsIHJlZjogc3RyaW5nKTogUHJvbWlzZTxBbnlTY2hlbWFPYmplY3Q+IHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLl9sb2FkaW5nW3JlZl1cbiAgICAgIGlmIChwKSByZXR1cm4gcFxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0ICh0aGlzLl9sb2FkaW5nW3JlZl0gPSBsb2FkU2NoZW1hKHJlZikpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBkZWxldGUgdGhpcy5fbG9hZGluZ1tyZWZdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkcyBzY2hlbWEgdG8gdGhlIGluc3RhbmNlXG4gIGFkZFNjaGVtYShcbiAgICBzY2hlbWE6IEFueVNjaGVtYSB8IEFueVNjaGVtYVtdLCAvLyBJZiBhcnJheSBpcyBwYXNzZWQsIGBrZXlgIHdpbGwgYmUgaWdub3JlZFxuICAgIGtleT86IHN0cmluZywgLy8gT3B0aW9uYWwgc2NoZW1hIGtleS4gQ2FuIGJlIHBhc3NlZCB0byBgdmFsaWRhdGVgIG1ldGhvZCBpbnN0ZWFkIG9mIHNjaGVtYSBvYmplY3Qgb3IgaWQvcmVmLiBPbmUgc2NoZW1hIHBlciBpbnN0YW5jZSBjYW4gaGF2ZSBlbXB0eSBgaWRgIGFuZCBga2V5YC5cbiAgICBfbWV0YT86IGJvb2xlYW4sIC8vIHRydWUgaWYgc2NoZW1hIGlzIGEgbWV0YS1zY2hlbWEuIFVzZWQgaW50ZXJuYWxseSwgYWRkTWV0YVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICAgIF92YWxpZGF0ZVNjaGVtYSA9IHRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSAvLyBmYWxzZSB0byBza2lwIHNjaGVtYSB2YWxpZGF0aW9uLiBVc2VkIGludGVybmFsbHksIG9wdGlvbiB2YWxpZGF0ZVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICApOiBBanYge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICAgIGZvciAoY29uc3Qgc2NoIG9mIHNjaGVtYSkgdGhpcy5hZGRTY2hlbWEoc2NoLCB1bmRlZmluZWQsIF9tZXRhLCBfdmFsaWRhdGVTY2hlbWEpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICBsZXQgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBjb25zdCB7c2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gICAgICBpZCA9IHNjaGVtYVtzY2hlbWFJZF1cbiAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBpZCAhPSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgc2NoZW1hICR7c2NoZW1hSWR9IG11c3QgYmUgc3RyaW5nYClcbiAgICAgIH1cbiAgICB9XG4gICAga2V5ID0gbm9ybWFsaXplSWQoa2V5IHx8IGlkKVxuICAgIHRoaXMuX2NoZWNrVW5pcXVlKGtleSlcbiAgICB0aGlzLnNjaGVtYXNba2V5XSA9IHRoaXMuX2FkZFNjaGVtYShzY2hlbWEsIF9tZXRhLCBrZXksIF92YWxpZGF0ZVNjaGVtYSwgdHJ1ZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gQWRkIHNjaGVtYSB0aGF0IHdpbGwgYmUgdXNlZCB0byB2YWxpZGF0ZSBvdGhlciBzY2hlbWFzXG4gIC8vIG9wdGlvbnMgaW4gTUVUQV9JR05PUkVfT1BUSU9OUyBhcmUgYWx3YXkgc2V0IHRvIGZhbHNlXG4gIGFkZE1ldGFTY2hlbWEoXG4gICAgc2NoZW1hOiBBbnlTY2hlbWFPYmplY3QsXG4gICAga2V5Pzogc3RyaW5nLCAvLyBzY2hlbWEga2V5XG4gICAgX3ZhbGlkYXRlU2NoZW1hID0gdGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hIC8vIGZhbHNlIHRvIHNraXAgc2NoZW1hIHZhbGlkYXRpb24sIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHZhbGlkYXRlU2NoZW1hIG9wdGlvbiBmb3IgbWV0YS1zY2hlbWFcbiAgKTogQWp2IHtcbiAgICB0aGlzLmFkZFNjaGVtYShzY2hlbWEsIGtleSwgdHJ1ZSwgX3ZhbGlkYXRlU2NoZW1hKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyAgVmFsaWRhdGUgc2NoZW1hIGFnYWluc3QgaXRzIG1ldGEtc2NoZW1hXG4gIHZhbGlkYXRlU2NoZW1hKHNjaGVtYTogQW55U2NoZW1hLCB0aHJvd09yTG9nRXJyb3I/OiBib29sZWFuKTogYm9vbGVhbiB8IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09IFwiYm9vbGVhblwiKSByZXR1cm4gdHJ1ZVxuICAgIGxldCAkc2NoZW1hOiBzdHJpbmcgfCBBbnlTY2hlbWFPYmplY3QgfCB1bmRlZmluZWRcbiAgICAkc2NoZW1hID0gc2NoZW1hLiRzY2hlbWFcbiAgICBpZiAoJHNjaGVtYSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAkc2NoZW1hICE9IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIiRzY2hlbWEgbXVzdCBiZSBhIHN0cmluZ1wiKVxuICAgIH1cbiAgICAkc2NoZW1hID0gJHNjaGVtYSB8fCB0aGlzLm9wdHMuZGVmYXVsdE1ldGEgfHwgdGhpcy5kZWZhdWx0TWV0YSgpXG4gICAgaWYgKCEkc2NoZW1hKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFwibWV0YS1zY2hlbWEgbm90IGF2YWlsYWJsZVwiKVxuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGUoJHNjaGVtYSwgc2NoZW1hKVxuICAgIGlmICghdmFsaWQgJiYgdGhyb3dPckxvZ0Vycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gXCJzY2hlbWEgaXMgaW52YWxpZDogXCIgKyB0aGlzLmVycm9yc1RleHQoKVxuICAgICAgaWYgKHRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSA9PT0gXCJsb2dcIikgdGhpcy5sb2dnZXIuZXJyb3IobWVzc2FnZSlcbiAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG4gICAgfVxuICAgIHJldHVybiB2YWxpZFxuICB9XG5cbiAgLy8gR2V0IGNvbXBpbGVkIHNjaGVtYSBieSBga2V5YCBvciBgcmVmYC5cbiAgLy8gKGBrZXlgIHRoYXQgd2FzIHBhc3NlZCB0byBgYWRkU2NoZW1hYCBvciBmdWxsIHNjaGVtYSByZWZlcmVuY2UgLSBgc2NoZW1hLiRpZGAgb3IgcmVzb2x2ZWQgaWQpXG4gIGdldFNjaGVtYTxUID0gdW5rbm93bj4oa2V5UmVmOiBzdHJpbmcpOiBBbnlWYWxpZGF0ZUZ1bmN0aW9uPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgc2NoXG4gICAgd2hpbGUgKHR5cGVvZiAoc2NoID0gZ2V0U2NoRW52LmNhbGwodGhpcywga2V5UmVmKSkgPT0gXCJzdHJpbmdcIikga2V5UmVmID0gc2NoXG4gICAgaWYgKHNjaCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7c2NoZW1hSWR9ID0gdGhpcy5vcHRzXG4gICAgICBjb25zdCByb290ID0gbmV3IFNjaGVtYUVudih7c2NoZW1hOiB7fSwgc2NoZW1hSWR9KVxuICAgICAgc2NoID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsIGtleVJlZilcbiAgICAgIGlmICghc2NoKSByZXR1cm5cbiAgICAgIHRoaXMucmVmc1trZXlSZWZdID0gc2NoXG4gICAgfVxuICAgIHJldHVybiAoc2NoLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGVTY2hlbWFFbnYoc2NoKSkgYXMgQW55VmFsaWRhdGVGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gUmVtb3ZlIGNhY2hlZCBzY2hlbWEocykuXG4gIC8vIElmIG5vIHBhcmFtZXRlciBpcyBwYXNzZWQgYWxsIHNjaGVtYXMgYnV0IG1ldGEtc2NoZW1hcyBhcmUgcmVtb3ZlZC5cbiAgLy8gSWYgUmVnRXhwIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyB3aXRoIGtleS9pZCBtYXRjaGluZyBwYXR0ZXJuIGJ1dCBtZXRhLXNjaGVtYXMgYXJlIHJlbW92ZWQuXG4gIC8vIEV2ZW4gaWYgc2NoZW1hIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgc2NoZW1hcyBpdCBzdGlsbCBjYW4gYmUgcmVtb3ZlZCBhcyBvdGhlciBzY2hlbWFzIGhhdmUgbG9jYWwgcmVmZXJlbmNlcy5cbiAgcmVtb3ZlU2NoZW1hKHNjaGVtYUtleVJlZj86IEFueVNjaGVtYSB8IHN0cmluZyB8IFJlZ0V4cCk6IEFqdiB7XG4gICAgaWYgKHNjaGVtYUtleVJlZiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnNjaGVtYXMsIHNjaGVtYUtleVJlZilcbiAgICAgIHRoaXMuX3JlbW92ZUFsbFNjaGVtYXModGhpcy5yZWZzLCBzY2hlbWFLZXlSZWYpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGVvZiBzY2hlbWFLZXlSZWYpIHtcbiAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnNjaGVtYXMpXG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbFNjaGVtYXModGhpcy5yZWZzKVxuICAgICAgICB0aGlzLl9jYWNoZS5jbGVhcigpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICBjYXNlIFwic3RyaW5nXCI6IHtcbiAgICAgICAgY29uc3Qgc2NoID0gZ2V0U2NoRW52LmNhbGwodGhpcywgc2NoZW1hS2V5UmVmKVxuICAgICAgICBpZiAodHlwZW9mIHNjaCA9PSBcIm9iamVjdFwiKSB0aGlzLl9jYWNoZS5kZWxldGUoc2NoLnNjaGVtYSlcbiAgICAgICAgZGVsZXRlIHRoaXMuc2NoZW1hc1tzY2hlbWFLZXlSZWZdXG4gICAgICAgIGRlbGV0ZSB0aGlzLnJlZnNbc2NoZW1hS2V5UmVmXVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgfVxuICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gc2NoZW1hS2V5UmVmXG4gICAgICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShjYWNoZUtleSlcbiAgICAgICAgbGV0IGlkID0gc2NoZW1hS2V5UmVmW3RoaXMub3B0cy5zY2hlbWFJZF1cbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgaWQgPSBub3JtYWxpemVJZChpZClcbiAgICAgICAgICBkZWxldGUgdGhpcy5zY2hlbWFzW2lkXVxuICAgICAgICAgIGRlbGV0ZSB0aGlzLnJlZnNbaWRdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImFqdi5yZW1vdmVTY2hlbWE6IGludmFsaWQgcGFyYW1ldGVyXCIpXG4gICAgfVxuICB9XG5cbiAgLy8gYWRkIFwidm9jYWJ1bGFyeVwiIC0gYSBjb2xsZWN0aW9uIG9mIGtleXdvcmRzXG4gIGFkZFZvY2FidWxhcnkoZGVmaW5pdGlvbnM6IFZvY2FidWxhcnkpOiBBanYge1xuICAgIGZvciAoY29uc3QgZGVmIG9mIGRlZmluaXRpb25zKSB0aGlzLmFkZEtleXdvcmQoZGVmKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBhZGRLZXl3b3JkKFxuICAgIGt3ZE9yRGVmOiBzdHJpbmcgfCBLZXl3b3JkRGVmaW5pdGlvbixcbiAgICBkZWY/OiBLZXl3b3JkRGVmaW5pdGlvbiAvLyBkZXByZWNhdGVkXG4gICk6IEFqdiB7XG4gICAgbGV0IGtleXdvcmQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gICAgaWYgKHR5cGVvZiBrd2RPckRlZiA9PSBcInN0cmluZ1wiKSB7XG4gICAgICBrZXl3b3JkID0ga3dkT3JEZWZcbiAgICAgIGlmICh0eXBlb2YgZGVmID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcInRoZXNlIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQsIHNlZSBkb2NzIGZvciBhZGRLZXl3b3JkXCIpXG4gICAgICAgIGRlZi5rZXl3b3JkID0ga2V5d29yZFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGt3ZE9yRGVmID09IFwib2JqZWN0XCIgJiYgZGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlZiA9IGt3ZE9yRGVmXG4gICAgICBrZXl3b3JkID0gZGVmLmtleXdvcmRcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleXdvcmQpICYmICFrZXl3b3JkLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhZGRLZXl3b3Jkczoga2V5d29yZCBtdXN0IGJlIHN0cmluZyBvciBub24tZW1wdHkgYXJyYXlcIilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBhZGRLZXl3b3JkcyBwYXJhbWV0ZXJzXCIpXG4gICAgfVxuXG4gICAgY2hlY2tLZXl3b3JkLmNhbGwodGhpcywga2V5d29yZCwgZGVmKVxuICAgIGlmICghZGVmKSB7XG4gICAgICBlYWNoSXRlbShrZXl3b3JkLCAoa3dkKSA9PiBhZGRSdWxlLmNhbGwodGhpcywga3dkKSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGtleXdvcmRNZXRhc2NoZW1hLmNhbGwodGhpcywgZGVmKVxuICAgIGNvbnN0IGRlZmluaXRpb246IEFkZGVkS2V5d29yZERlZmluaXRpb24gPSB7XG4gICAgICAuLi5kZWYsXG4gICAgICB0eXBlOiBnZXRKU09OVHlwZXMoZGVmLnR5cGUpLFxuICAgICAgc2NoZW1hVHlwZTogZ2V0SlNPTlR5cGVzKGRlZi5zY2hlbWFUeXBlKSxcbiAgICB9XG4gICAgZWFjaEl0ZW0oXG4gICAgICBrZXl3b3JkLFxuICAgICAgZGVmaW5pdGlvbi50eXBlLmxlbmd0aCA9PT0gMFxuICAgICAgICA/IChrKSA9PiBhZGRSdWxlLmNhbGwodGhpcywgaywgZGVmaW5pdGlvbilcbiAgICAgICAgOiAoaykgPT4gZGVmaW5pdGlvbi50eXBlLmZvckVhY2goKHQpID0+IGFkZFJ1bGUuY2FsbCh0aGlzLCBrLCBkZWZpbml0aW9uLCB0KSlcbiAgICApXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGdldEtleXdvcmQoa2V5d29yZDogc3RyaW5nKTogQWRkZWRLZXl3b3JkRGVmaW5pdGlvbiB8IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLlJVTEVTLmFsbFtrZXl3b3JkXVxuICAgIHJldHVybiB0eXBlb2YgcnVsZSA9PSBcIm9iamVjdFwiID8gcnVsZS5kZWZpbml0aW9uIDogISFydWxlXG4gIH1cblxuICAvLyBSZW1vdmUga2V5d29yZFxuICByZW1vdmVLZXl3b3JkKGtleXdvcmQ6IHN0cmluZyk6IEFqdiB7XG4gICAgLy8gVE9ETyByZXR1cm4gdHlwZSBzaG91bGQgYmUgQWp2XG4gICAgY29uc3Qge1JVTEVTfSA9IHRoaXNcbiAgICBkZWxldGUgUlVMRVMua2V5d29yZHNba2V5d29yZF1cbiAgICBkZWxldGUgUlVMRVMuYWxsW2tleXdvcmRdXG4gICAgZm9yIChjb25zdCBncm91cCBvZiBSVUxFUy5ydWxlcykge1xuICAgICAgY29uc3QgaSA9IGdyb3VwLnJ1bGVzLmZpbmRJbmRleCgocnVsZSkgPT4gcnVsZS5rZXl3b3JkID09PSBrZXl3b3JkKVxuICAgICAgaWYgKGkgPj0gMCkgZ3JvdXAucnVsZXMuc3BsaWNlKGksIDEpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBBZGQgZm9ybWF0XG4gIGFkZEZvcm1hdChuYW1lOiBzdHJpbmcsIGZvcm1hdDogRm9ybWF0KTogQWp2IHtcbiAgICBpZiAodHlwZW9mIGZvcm1hdCA9PSBcInN0cmluZ1wiKSBmb3JtYXQgPSBuZXcgUmVnRXhwKGZvcm1hdClcbiAgICB0aGlzLmZvcm1hdHNbbmFtZV0gPSBmb3JtYXRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZXJyb3JzVGV4dChcbiAgICBlcnJvcnM6IEVycm9yT2JqZWN0W10gfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcy5lcnJvcnMsIC8vIG9wdGlvbmFsIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3JzXG4gICAge3NlcGFyYXRvciA9IFwiLCBcIiwgZGF0YVZhciA9IFwiZGF0YVwifTogRXJyb3JzVGV4dE9wdGlvbnMgPSB7fSAvLyBvcHRpb25hbCBvcHRpb25zIHdpdGggcHJvcGVydGllcyBgc2VwYXJhdG9yYCBhbmQgYGRhdGFWYXJgXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCFlcnJvcnMgfHwgZXJyb3JzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiTm8gZXJyb3JzXCJcbiAgICByZXR1cm4gZXJyb3JzXG4gICAgICAubWFwKChlKSA9PiBgJHtkYXRhVmFyfSR7ZS5pbnN0YW5jZVBhdGh9ICR7ZS5tZXNzYWdlfWApXG4gICAgICAucmVkdWNlKCh0ZXh0LCBtc2cpID0+IHRleHQgKyBzZXBhcmF0b3IgKyBtc2cpXG4gIH1cblxuICAkZGF0YU1ldGFTY2hlbWEobWV0YVNjaGVtYTogQW55U2NoZW1hT2JqZWN0LCBrZXl3b3Jkc0pzb25Qb2ludGVyczogc3RyaW5nW10pOiBBbnlTY2hlbWFPYmplY3Qge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5SVUxFUy5hbGxcbiAgICBtZXRhU2NoZW1hID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtZXRhU2NoZW1hKSlcbiAgICBmb3IgKGNvbnN0IGpzb25Qb2ludGVyIG9mIGtleXdvcmRzSnNvblBvaW50ZXJzKSB7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGpzb25Qb2ludGVyLnNwbGl0KFwiL1wiKS5zbGljZSgxKSAvLyBmaXJzdCBzZWdtZW50IGlzIGFuIGVtcHR5IHN0cmluZ1xuICAgICAgbGV0IGtleXdvcmRzID0gbWV0YVNjaGVtYVxuICAgICAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIGtleXdvcmRzID0ga2V5d29yZHNbc2VnXSBhcyBBbnlTY2hlbWFPYmplY3RcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gcnVsZXMpIHtcbiAgICAgICAgY29uc3QgcnVsZSA9IHJ1bGVzW2tleV1cbiAgICAgICAgaWYgKHR5cGVvZiBydWxlICE9IFwib2JqZWN0XCIpIGNvbnRpbnVlXG4gICAgICAgIGNvbnN0IHskZGF0YX0gPSBydWxlLmRlZmluaXRpb25cbiAgICAgICAgY29uc3Qgc2NoZW1hID0ga2V5d29yZHNba2V5XSBhcyBBbnlTY2hlbWFPYmplY3QgfCB1bmRlZmluZWRcbiAgICAgICAgaWYgKCRkYXRhICYmIHNjaGVtYSkga2V5d29yZHNba2V5XSA9IHNjaGVtYU9yRGF0YShzY2hlbWEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFTY2hlbWFcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUFsbFNjaGVtYXMoc2NoZW1hczoge1tSZWYgaW4gc3RyaW5nXT86IFNjaGVtYUVudiB8IHN0cmluZ30sIHJlZ2V4PzogUmVnRXhwKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBrZXlSZWYgaW4gc2NoZW1hcykge1xuICAgICAgY29uc3Qgc2NoID0gc2NoZW1hc1trZXlSZWZdXG4gICAgICBpZiAoIXJlZ2V4IHx8IHJlZ2V4LnRlc3Qoa2V5UmVmKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNjaCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgZGVsZXRlIHNjaGVtYXNba2V5UmVmXVxuICAgICAgICB9IGVsc2UgaWYgKHNjaCAmJiAhc2NoLm1ldGEpIHtcbiAgICAgICAgICB0aGlzLl9jYWNoZS5kZWxldGUoc2NoLnNjaGVtYSlcbiAgICAgICAgICBkZWxldGUgc2NoZW1hc1trZXlSZWZdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfYWRkU2NoZW1hKFxuICAgIHNjaGVtYTogQW55U2NoZW1hLFxuICAgIG1ldGE/OiBib29sZWFuLFxuICAgIGJhc2VJZD86IHN0cmluZyxcbiAgICB2YWxpZGF0ZVNjaGVtYSA9IHRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSxcbiAgICBhZGRTY2hlbWEgPSB0aGlzLm9wdHMuYWRkVXNlZFNjaGVtYVxuICApOiBTY2hlbWFFbnYge1xuICAgIGxldCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgY29uc3Qge3NjaGVtYUlkfSA9IHRoaXMub3B0c1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlkID0gc2NoZW1hW3NjaGVtYUlkXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmp0ZCkgdGhyb3cgbmV3IEVycm9yKFwic2NoZW1hIG11c3QgYmUgb2JqZWN0XCIpXG4gICAgICBlbHNlIGlmICh0eXBlb2Ygc2NoZW1hICE9IFwiYm9vbGVhblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJzY2hlbWEgbXVzdCBiZSBvYmplY3Qgb3IgYm9vbGVhblwiKVxuICAgIH1cbiAgICBsZXQgc2NoID0gdGhpcy5fY2FjaGUuZ2V0KHNjaGVtYSlcbiAgICBpZiAoc2NoICE9PSB1bmRlZmluZWQpIHJldHVybiBzY2hcblxuICAgIGJhc2VJZCA9IG5vcm1hbGl6ZUlkKGlkIHx8IGJhc2VJZClcbiAgICBjb25zdCBsb2NhbFJlZnMgPSBnZXRTY2hlbWFSZWZzLmNhbGwodGhpcywgc2NoZW1hLCBiYXNlSWQpXG4gICAgc2NoID0gbmV3IFNjaGVtYUVudih7c2NoZW1hLCBzY2hlbWFJZCwgbWV0YSwgYmFzZUlkLCBsb2NhbFJlZnN9KVxuICAgIHRoaXMuX2NhY2hlLnNldChzY2guc2NoZW1hLCBzY2gpXG4gICAgaWYgKGFkZFNjaGVtYSAmJiAhYmFzZUlkLnN0YXJ0c1dpdGgoXCIjXCIpKSB7XG4gICAgICAvLyBUT0RPIGF0bSBpdCBpcyBhbGxvd2VkIHRvIG92ZXJ3cml0ZSBzY2hlbWFzIHdpdGhvdXQgaWQgKGluc3RlYWQgb2Ygbm90IGFkZGluZyB0aGVtKVxuICAgICAgaWYgKGJhc2VJZCkgdGhpcy5fY2hlY2tVbmlxdWUoYmFzZUlkKVxuICAgICAgdGhpcy5yZWZzW2Jhc2VJZF0gPSBzY2hcbiAgICB9XG4gICAgaWYgKHZhbGlkYXRlU2NoZW1hKSB0aGlzLnZhbGlkYXRlU2NoZW1hKHNjaGVtYSwgdHJ1ZSlcbiAgICByZXR1cm4gc2NoXG4gIH1cblxuICBwcml2YXRlIF9jaGVja1VuaXF1ZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NoZW1hc1tpZF0gfHwgdGhpcy5yZWZzW2lkXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzY2hlbWEgd2l0aCBrZXkgb3IgaWQgXCIke2lkfVwiIGFscmVhZHkgZXhpc3RzYClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb21waWxlU2NoZW1hRW52KHNjaDogU2NoZW1hRW52KTogQW55VmFsaWRhdGVGdW5jdGlvbiB7XG4gICAgaWYgKHNjaC5tZXRhKSB0aGlzLl9jb21waWxlTWV0YVNjaGVtYShzY2gpXG4gICAgZWxzZSBjb21waWxlU2NoZW1hLmNhbGwodGhpcywgc2NoKVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFzY2gudmFsaWRhdGUpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICAgIHJldHVybiBzY2gudmFsaWRhdGVcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVNZXRhU2NoZW1hKHNjaDogU2NoZW1hRW52KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudE9wdHMgPSB0aGlzLm9wdHNcbiAgICB0aGlzLm9wdHMgPSB0aGlzLl9tZXRhT3B0c1xuICAgIHRyeSB7XG4gICAgICBjb21waWxlU2NoZW1hLmNhbGwodGhpcywgc2NoKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9wdHMgPSBjdXJyZW50T3B0c1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yc1RleHRPcHRpb25zIHtcbiAgc2VwYXJhdG9yPzogc3RyaW5nXG4gIGRhdGFWYXI/OiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY2hlY2tPcHRpb25zKFxuICB0aGlzOiBBanYsXG4gIGNoZWNrT3B0czogT3B0aW9uc0luZm88UmVtb3ZlZE9wdGlvbnMgfCBEZXByZWNhdGVkT3B0aW9ucz4sXG4gIG9wdGlvbnM6IE9wdGlvbnMgJiBSZW1vdmVkT3B0aW9ucyxcbiAgbXNnOiBzdHJpbmcsXG4gIGxvZzogXCJ3YXJuXCIgfCBcImVycm9yXCIgPSBcImVycm9yXCJcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGtleSBpbiBjaGVja09wdHMpIHtcbiAgICBjb25zdCBvcHQgPSBrZXkgYXMga2V5b2YgdHlwZW9mIGNoZWNrT3B0c1xuICAgIGlmIChvcHQgaW4gb3B0aW9ucykgdGhpcy5sb2dnZXJbbG9nXShgJHttc2d9OiBvcHRpb24gJHtrZXl9LiAke2NoZWNrT3B0c1tvcHRdfWApXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NoRW52KHRoaXM6IEFqdiwga2V5UmVmOiBzdHJpbmcpOiBTY2hlbWFFbnYgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBrZXlSZWYgPSBub3JtYWxpemVJZChrZXlSZWYpIC8vIFRPRE8gdGVzdHMgZmFpbCB3aXRob3V0IHRoaXMgbGluZVxuICByZXR1cm4gdGhpcy5zY2hlbWFzW2tleVJlZl0gfHwgdGhpcy5yZWZzW2tleVJlZl1cbn1cblxuZnVuY3Rpb24gYWRkSW5pdGlhbFNjaGVtYXModGhpczogQWp2KTogdm9pZCB7XG4gIGNvbnN0IG9wdHNTY2hlbWFzID0gdGhpcy5vcHRzLnNjaGVtYXNcbiAgaWYgKCFvcHRzU2NoZW1hcykgcmV0dXJuXG4gIGlmIChBcnJheS5pc0FycmF5KG9wdHNTY2hlbWFzKSkgdGhpcy5hZGRTY2hlbWEob3B0c1NjaGVtYXMpXG4gIGVsc2UgZm9yIChjb25zdCBrZXkgaW4gb3B0c1NjaGVtYXMpIHRoaXMuYWRkU2NoZW1hKG9wdHNTY2hlbWFzW2tleV0gYXMgQW55U2NoZW1hLCBrZXkpXG59XG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxGb3JtYXRzKHRoaXM6IEFqdik6IHZvaWQge1xuICBmb3IgKGNvbnN0IG5hbWUgaW4gdGhpcy5vcHRzLmZvcm1hdHMpIHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLm9wdHMuZm9ybWF0c1tuYW1lXVxuICAgIGlmIChmb3JtYXQpIHRoaXMuYWRkRm9ybWF0KG5hbWUsIGZvcm1hdClcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRJbml0aWFsS2V5d29yZHMoXG4gIHRoaXM6IEFqdixcbiAgZGVmczogVm9jYWJ1bGFyeSB8IHtbSyBpbiBzdHJpbmddPzogS2V5d29yZERlZmluaXRpb259XG4pOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVmcykpIHtcbiAgICB0aGlzLmFkZFZvY2FidWxhcnkoZGVmcylcbiAgICByZXR1cm5cbiAgfVxuICB0aGlzLmxvZ2dlci53YXJuKFwia2V5d29yZHMgb3B0aW9uIGFzIG1hcCBpcyBkZXByZWNhdGVkLCBwYXNzIGFycmF5XCIpXG4gIGZvciAoY29uc3Qga2V5d29yZCBpbiBkZWZzKSB7XG4gICAgY29uc3QgZGVmID0gZGVmc1trZXl3b3JkXSBhcyBLZXl3b3JkRGVmaW5pdGlvblxuICAgIGlmICghZGVmLmtleXdvcmQpIGRlZi5rZXl3b3JkID0ga2V5d29yZFxuICAgIHRoaXMuYWRkS2V5d29yZChkZWYpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TWV0YVNjaGVtYU9wdGlvbnModGhpczogQWp2KTogSW5zdGFuY2VPcHRpb25zIHtcbiAgY29uc3QgbWV0YU9wdHMgPSB7Li4udGhpcy5vcHRzfVxuICBmb3IgKGNvbnN0IG9wdCBvZiBNRVRBX0lHTk9SRV9PUFRJT05TKSBkZWxldGUgbWV0YU9wdHNbb3B0XVxuICByZXR1cm4gbWV0YU9wdHNcbn1cblxuY29uc3Qgbm9Mb2dzID0ge2xvZygpIHt9LCB3YXJuKCkge30sIGVycm9yKCkge319XG5cbmZ1bmN0aW9uIGdldExvZ2dlcihsb2dnZXI/OiBQYXJ0aWFsPExvZ2dlcj4gfCBmYWxzZSk6IExvZ2dlciB7XG4gIGlmIChsb2dnZXIgPT09IGZhbHNlKSByZXR1cm4gbm9Mb2dzXG4gIGlmIChsb2dnZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGNvbnNvbGVcbiAgaWYgKGxvZ2dlci5sb2cgJiYgbG9nZ2VyLndhcm4gJiYgbG9nZ2VyLmVycm9yKSByZXR1cm4gbG9nZ2VyIGFzIExvZ2dlclxuICB0aHJvdyBuZXcgRXJyb3IoXCJsb2dnZXIgbXVzdCBpbXBsZW1lbnQgbG9nLCB3YXJuIGFuZCBlcnJvciBtZXRob2RzXCIpXG59XG5cbmNvbnN0IEtFWVdPUkRfTkFNRSA9IC9eW2Etel8kXVthLXowLTlfJDotXSokL2lcblxuZnVuY3Rpb24gY2hlY2tLZXl3b3JkKHRoaXM6IEFqdiwga2V5d29yZDogc3RyaW5nIHwgc3RyaW5nW10sIGRlZj86IEtleXdvcmREZWZpbml0aW9uKTogdm9pZCB7XG4gIGNvbnN0IHtSVUxFU30gPSB0aGlzXG4gIGVhY2hJdGVtKGtleXdvcmQsIChrd2QpID0+IHtcbiAgICBpZiAoUlVMRVMua2V5d29yZHNba3dkXSkgdGhyb3cgbmV3IEVycm9yKGBLZXl3b3JkICR7a3dkfSBpcyBhbHJlYWR5IGRlZmluZWRgKVxuICAgIGlmICghS0VZV09SRF9OQU1FLnRlc3Qoa3dkKSkgdGhyb3cgbmV3IEVycm9yKGBLZXl3b3JkICR7a3dkfSBoYXMgaW52YWxpZCBuYW1lYClcbiAgfSlcbiAgaWYgKCFkZWYpIHJldHVyblxuICBpZiAoZGVmLiRkYXRhICYmICEoXCJjb2RlXCIgaW4gZGVmIHx8IFwidmFsaWRhdGVcIiBpbiBkZWYpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCckZGF0YSBrZXl3b3JkIG11c3QgaGF2ZSBcImNvZGVcIiBvciBcInZhbGlkYXRlXCIgZnVuY3Rpb24nKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFJ1bGUoXG4gIHRoaXM6IEFqdixcbiAga2V5d29yZDogc3RyaW5nLFxuICBkZWZpbml0aW9uPzogQWRkZWRLZXl3b3JkRGVmaW5pdGlvbixcbiAgZGF0YVR5cGU/OiBKU09OVHlwZVxuKTogdm9pZCB7XG4gIGNvbnN0IHBvc3QgPSBkZWZpbml0aW9uPy5wb3N0XG4gIGlmIChkYXRhVHlwZSAmJiBwb3N0KSB0aHJvdyBuZXcgRXJyb3IoJ2tleXdvcmQgd2l0aCBcInBvc3RcIiBmbGFnIGNhbm5vdCBoYXZlIFwidHlwZVwiJylcbiAgY29uc3Qge1JVTEVTfSA9IHRoaXNcbiAgbGV0IHJ1bGVHcm91cCA9IHBvc3QgPyBSVUxFUy5wb3N0IDogUlVMRVMucnVsZXMuZmluZCgoe3R5cGU6IHR9KSA9PiB0ID09PSBkYXRhVHlwZSlcbiAgaWYgKCFydWxlR3JvdXApIHtcbiAgICBydWxlR3JvdXAgPSB7dHlwZTogZGF0YVR5cGUsIHJ1bGVzOiBbXX1cbiAgICBSVUxFUy5ydWxlcy5wdXNoKHJ1bGVHcm91cClcbiAgfVxuICBSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXSA9IHRydWVcbiAgaWYgKCFkZWZpbml0aW9uKSByZXR1cm5cblxuICBjb25zdCBydWxlOiBSdWxlID0ge1xuICAgIGtleXdvcmQsXG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgLi4uZGVmaW5pdGlvbixcbiAgICAgIHR5cGU6IGdldEpTT05UeXBlcyhkZWZpbml0aW9uLnR5cGUpLFxuICAgICAgc2NoZW1hVHlwZTogZ2V0SlNPTlR5cGVzKGRlZmluaXRpb24uc2NoZW1hVHlwZSksXG4gICAgfSxcbiAgfVxuICBpZiAoZGVmaW5pdGlvbi5iZWZvcmUpIGFkZEJlZm9yZVJ1bGUuY2FsbCh0aGlzLCBydWxlR3JvdXAsIHJ1bGUsIGRlZmluaXRpb24uYmVmb3JlKVxuICBlbHNlIHJ1bGVHcm91cC5ydWxlcy5wdXNoKHJ1bGUpXG4gIFJVTEVTLmFsbFtrZXl3b3JkXSA9IHJ1bGVcbiAgZGVmaW5pdGlvbi5pbXBsZW1lbnRzPy5mb3JFYWNoKChrd2QpID0+IHRoaXMuYWRkS2V5d29yZChrd2QpKVxufVxuXG5mdW5jdGlvbiBhZGRCZWZvcmVSdWxlKHRoaXM6IEFqdiwgcnVsZUdyb3VwOiBSdWxlR3JvdXAsIHJ1bGU6IFJ1bGUsIGJlZm9yZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGkgPSBydWxlR3JvdXAucnVsZXMuZmluZEluZGV4KChfcnVsZSkgPT4gX3J1bGUua2V5d29yZCA9PT0gYmVmb3JlKVxuICBpZiAoaSA+PSAwKSB7XG4gICAgcnVsZUdyb3VwLnJ1bGVzLnNwbGljZShpLCAwLCBydWxlKVxuICB9IGVsc2Uge1xuICAgIHJ1bGVHcm91cC5ydWxlcy5wdXNoKHJ1bGUpXG4gICAgdGhpcy5sb2dnZXIud2FybihgcnVsZSAke2JlZm9yZX0gaXMgbm90IGRlZmluZWRgKVxuICB9XG59XG5cbmZ1bmN0aW9uIGtleXdvcmRNZXRhc2NoZW1hKHRoaXM6IEFqdiwgZGVmOiBLZXl3b3JkRGVmaW5pdGlvbik6IHZvaWQge1xuICBsZXQge21ldGFTY2hlbWF9ID0gZGVmXG4gIGlmIChtZXRhU2NoZW1hID09PSB1bmRlZmluZWQpIHJldHVyblxuICBpZiAoZGVmLiRkYXRhICYmIHRoaXMub3B0cy4kZGF0YSkgbWV0YVNjaGVtYSA9IHNjaGVtYU9yRGF0YShtZXRhU2NoZW1hKVxuICBkZWYudmFsaWRhdGVTY2hlbWEgPSB0aGlzLmNvbXBpbGUobWV0YVNjaGVtYSwgdHJ1ZSlcbn1cblxuY29uc3QgJGRhdGFSZWYgPSB7XG4gICRyZWY6IFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jXCIsXG59XG5cbmZ1bmN0aW9uIHNjaGVtYU9yRGF0YShzY2hlbWE6IEFueVNjaGVtYSk6IEFueVNjaGVtYU9iamVjdCB7XG4gIHJldHVybiB7YW55T2Y6IFtzY2hlbWEsICRkYXRhUmVmXX1cbn1cbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJpZFwiLFxuICBjb2RlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTk9UIFNVUFBPUlRFRDoga2V5d29yZCBcImlkXCIsIHVzZSBcIiRpZFwiIGZvciBzY2hlbWEgSUQnKVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBBbnlTY2hlbWF9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IE1pc3NpbmdSZWZFcnJvciBmcm9tIFwiLi4vLi4vY29tcGlsZS9yZWZfZXJyb3JcIlxuaW1wb3J0IHtjYWxsVmFsaWRhdGVDb2RlfSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge18sIG5pbCwgc3RyaW5naWZ5LCBDb2RlLCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCBOIGZyb20gXCIuLi8uLi9jb21waWxlL25hbWVzXCJcbmltcG9ydCB7U2NoZW1hRW52LCByZXNvbHZlUmVmfSBmcm9tIFwiLi4vLi4vY29tcGlsZVwiXG5pbXBvcnQge21lcmdlRXZhbHVhdGVkfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiJHJlZlwiLFxuICBzY2hlbWFUeXBlOiBcInN0cmluZ1wiLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCk6IHZvaWQge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYTogJHJlZiwgaXR9ID0gY3h0XG4gICAgY29uc3Qge2Jhc2VJZCwgc2NoZW1hRW52OiBlbnYsIHZhbGlkYXRlTmFtZSwgb3B0cywgc2VsZn0gPSBpdFxuICAgIGNvbnN0IHtyb290fSA9IGVudlxuICAgIGlmICgoJHJlZiA9PT0gXCIjXCIgfHwgJHJlZiA9PT0gXCIjL1wiKSAmJiBiYXNlSWQgPT09IHJvb3QuYmFzZUlkKSByZXR1cm4gY2FsbFJvb3RSZWYoKVxuICAgIGNvbnN0IHNjaE9yRW52ID0gcmVzb2x2ZVJlZi5jYWxsKHNlbGYsIHJvb3QsIGJhc2VJZCwgJHJlZilcbiAgICBpZiAoc2NoT3JFbnYgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IE1pc3NpbmdSZWZFcnJvcihpdC5vcHRzLnVyaVJlc29sdmVyLCBiYXNlSWQsICRyZWYpXG4gICAgaWYgKHNjaE9yRW52IGluc3RhbmNlb2YgU2NoZW1hRW52KSByZXR1cm4gY2FsbFZhbGlkYXRlKHNjaE9yRW52KVxuICAgIHJldHVybiBpbmxpbmVSZWZTY2hlbWEoc2NoT3JFbnYpXG5cbiAgICBmdW5jdGlvbiBjYWxsUm9vdFJlZigpOiB2b2lkIHtcbiAgICAgIGlmIChlbnYgPT09IHJvb3QpIHJldHVybiBjYWxsUmVmKGN4dCwgdmFsaWRhdGVOYW1lLCBlbnYsIGVudi4kYXN5bmMpXG4gICAgICBjb25zdCByb290TmFtZSA9IGdlbi5zY29wZVZhbHVlKFwicm9vdFwiLCB7cmVmOiByb290fSlcbiAgICAgIHJldHVybiBjYWxsUmVmKGN4dCwgX2Ake3Jvb3ROYW1lfS52YWxpZGF0ZWAsIHJvb3QsIHJvb3QuJGFzeW5jKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGxWYWxpZGF0ZShzY2g6IFNjaGVtYUVudik6IHZvaWQge1xuICAgICAgY29uc3QgdiA9IGdldFZhbGlkYXRlKGN4dCwgc2NoKVxuICAgICAgY2FsbFJlZihjeHQsIHYsIHNjaCwgc2NoLiRhc3luYylcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbmxpbmVSZWZTY2hlbWEoc2NoOiBBbnlTY2hlbWEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHNjaE5hbWUgPSBnZW4uc2NvcGVWYWx1ZShcbiAgICAgICAgXCJzY2hlbWFcIixcbiAgICAgICAgb3B0cy5jb2RlLnNvdXJjZSA9PT0gdHJ1ZSA/IHtyZWY6IHNjaCwgY29kZTogc3RyaW5naWZ5KHNjaCl9IDoge3JlZjogc2NofVxuICAgICAgKVxuICAgICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgICBjb25zdCBzY2hDeHQgPSBjeHQuc3Vic2NoZW1hKFxuICAgICAgICB7XG4gICAgICAgICAgc2NoZW1hOiBzY2gsXG4gICAgICAgICAgZGF0YVR5cGVzOiBbXSxcbiAgICAgICAgICBzY2hlbWFQYXRoOiBuaWwsXG4gICAgICAgICAgdG9wU2NoZW1hUmVmOiBzY2hOYW1lLFxuICAgICAgICAgIGVyclNjaGVtYVBhdGg6ICRyZWYsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkXG4gICAgICApXG4gICAgICBjeHQubWVyZ2VFdmFsdWF0ZWQoc2NoQ3h0KVxuICAgICAgY3h0Lm9rKHZhbGlkKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRlKGN4dDogS2V5d29yZEN4dCwgc2NoOiBTY2hlbWFFbnYpOiBDb2RlIHtcbiAgY29uc3Qge2dlbn0gPSBjeHRcbiAgcmV0dXJuIHNjaC52YWxpZGF0ZVxuICAgID8gZ2VuLnNjb3BlVmFsdWUoXCJ2YWxpZGF0ZVwiLCB7cmVmOiBzY2gudmFsaWRhdGV9KVxuICAgIDogX2Ake2dlbi5zY29wZVZhbHVlKFwid3JhcHBlclwiLCB7cmVmOiBzY2h9KX0udmFsaWRhdGVgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxsUmVmKGN4dDogS2V5d29yZEN4dCwgdjogQ29kZSwgc2NoPzogU2NoZW1hRW52LCAkYXN5bmM/OiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IHtnZW4sIGl0fSA9IGN4dFxuICBjb25zdCB7YWxsRXJyb3JzLCBzY2hlbWFFbnY6IGVudiwgb3B0c30gPSBpdFxuICBjb25zdCBwYXNzQ3h0ID0gb3B0cy5wYXNzQ29udGV4dCA/IE4udGhpcyA6IG5pbFxuICBpZiAoJGFzeW5jKSBjYWxsQXN5bmNSZWYoKVxuICBlbHNlIGNhbGxTeW5jUmVmKClcblxuICBmdW5jdGlvbiBjYWxsQXN5bmNSZWYoKTogdm9pZCB7XG4gICAgaWYgKCFlbnYuJGFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoXCJhc3luYyBzY2hlbWEgcmVmZXJlbmNlZCBieSBzeW5jIHNjaGVtYVwiKVxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIpXG4gICAgZ2VuLnRyeShcbiAgICAgICgpID0+IHtcbiAgICAgICAgZ2VuLmNvZGUoX2Bhd2FpdCAke2NhbGxWYWxpZGF0ZUNvZGUoY3h0LCB2LCBwYXNzQ3h0KX1gKVxuICAgICAgICBhZGRFdmFsdWF0ZWRGcm9tKHYpIC8vIFRPRE8gd2lsbCBub3Qgd29yayB3aXRoIGFzeW5jLCBpdCBoYXMgdG8gYmUgcmV0dXJuZWQgd2l0aCB0aGUgcmVzdWx0XG4gICAgICAgIGlmICghYWxsRXJyb3JzKSBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKVxuICAgICAgfSxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIGdlbi5pZihfYCEoJHtlfSBpbnN0YW5jZW9mICR7aXQuVmFsaWRhdGlvbkVycm9yIGFzIE5hbWV9KWAsICgpID0+IGdlbi50aHJvdyhlKSlcbiAgICAgICAgYWRkRXJyb3JzRnJvbShlKVxuICAgICAgICBpZiAoIWFsbEVycm9ycykgZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpXG4gICAgICB9XG4gICAgKVxuICAgIGN4dC5vayh2YWxpZClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGxTeW5jUmVmKCk6IHZvaWQge1xuICAgIGN4dC5yZXN1bHQoXG4gICAgICBjYWxsVmFsaWRhdGVDb2RlKGN4dCwgdiwgcGFzc0N4dCksXG4gICAgICAoKSA9PiBhZGRFdmFsdWF0ZWRGcm9tKHYpLFxuICAgICAgKCkgPT4gYWRkRXJyb3JzRnJvbSh2KVxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEVycm9yc0Zyb20oc291cmNlOiBDb2RlKTogdm9pZCB7XG4gICAgY29uc3QgZXJycyA9IF9gJHtzb3VyY2V9LmVycm9yc2BcbiAgICBnZW4uYXNzaWduKE4udkVycm9ycywgX2Ake04udkVycm9yc30gPT09IG51bGwgPyAke2VycnN9IDogJHtOLnZFcnJvcnN9LmNvbmNhdCgke2VycnN9KWApIC8vIFRPRE8gdGFnZ2VkXG4gICAgZ2VuLmFzc2lnbihOLmVycm9ycywgX2Ake04udkVycm9yc30ubGVuZ3RoYClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEV2YWx1YXRlZEZyb20oc291cmNlOiBDb2RlKTogdm9pZCB7XG4gICAgaWYgKCFpdC5vcHRzLnVuZXZhbHVhdGVkKSByZXR1cm5cbiAgICBjb25zdCBzY2hFdmFsdWF0ZWQgPSBzY2g/LnZhbGlkYXRlPy5ldmFsdWF0ZWRcbiAgICAvLyBUT0RPIHJlZmFjdG9yXG4gICAgaWYgKGl0LnByb3BzICE9PSB0cnVlKSB7XG4gICAgICBpZiAoc2NoRXZhbHVhdGVkICYmICFzY2hFdmFsdWF0ZWQuZHluYW1pY1Byb3BzKSB7XG4gICAgICAgIGlmIChzY2hFdmFsdWF0ZWQucHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGl0LnByb3BzID0gbWVyZ2VFdmFsdWF0ZWQucHJvcHMoZ2VuLCBzY2hFdmFsdWF0ZWQucHJvcHMsIGl0LnByb3BzKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcm9wcyA9IGdlbi52YXIoXCJwcm9wc1wiLCBfYCR7c291cmNlfS5ldmFsdWF0ZWQucHJvcHNgKVxuICAgICAgICBpdC5wcm9wcyA9IG1lcmdlRXZhbHVhdGVkLnByb3BzKGdlbiwgcHJvcHMsIGl0LnByb3BzLCBOYW1lKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXQuaXRlbXMgIT09IHRydWUpIHtcbiAgICAgIGlmIChzY2hFdmFsdWF0ZWQgJiYgIXNjaEV2YWx1YXRlZC5keW5hbWljSXRlbXMpIHtcbiAgICAgICAgaWYgKHNjaEV2YWx1YXRlZC5pdGVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaXQuaXRlbXMgPSBtZXJnZUV2YWx1YXRlZC5pdGVtcyhnZW4sIHNjaEV2YWx1YXRlZC5pdGVtcywgaXQuaXRlbXMpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZ2VuLnZhcihcIml0ZW1zXCIsIF9gJHtzb3VyY2V9LmV2YWx1YXRlZC5pdGVtc2ApXG4gICAgICAgIGl0Lml0ZW1zID0gbWVyZ2VFdmFsdWF0ZWQuaXRlbXMoZ2VuLCBpdGVtcywgaXQuaXRlbXMsIE5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IGlkS2V5d29yZCBmcm9tIFwiLi9pZFwiXG5pbXBvcnQgcmVmS2V5d29yZCBmcm9tIFwiLi9yZWZcIlxuXG5jb25zdCBjb3JlOiBWb2NhYnVsYXJ5ID0gW1xuICBcIiRzY2hlbWFcIixcbiAgXCIkaWRcIixcbiAgXCIkZGVmc1wiLFxuICBcIiR2b2NhYnVsYXJ5XCIsXG4gIHtrZXl3b3JkOiBcIiRjb21tZW50XCJ9LFxuICBcImRlZmluaXRpb25zXCIsXG4gIGlkS2V5d29yZCxcbiAgcmVmS2V5d29yZCxcbl1cblxuZXhwb3J0IGRlZmF1bHQgY29yZVxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEVycm9yT2JqZWN0LCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyLCBvcGVyYXRvcnMsIENvZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuXG5jb25zdCBvcHMgPSBvcGVyYXRvcnNcblxudHlwZSBLd2QgPSBcIm1heGltdW1cIiB8IFwibWluaW11bVwiIHwgXCJleGNsdXNpdmVNYXhpbXVtXCIgfCBcImV4Y2x1c2l2ZU1pbmltdW1cIlxuXG50eXBlIENvbXBhcmlzb24gPSBcIjw9XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPlwiXG5cbmNvbnN0IEtXRHM6IHtbSyBpbiBLd2RdOiB7b2tTdHI6IENvbXBhcmlzb247IG9rOiBDb2RlOyBmYWlsOiBDb2RlfX0gPSB7XG4gIG1heGltdW06IHtva1N0cjogXCI8PVwiLCBvazogb3BzLkxURSwgZmFpbDogb3BzLkdUfSxcbiAgbWluaW11bToge29rU3RyOiBcIj49XCIsIG9rOiBvcHMuR1RFLCBmYWlsOiBvcHMuTFR9LFxuICBleGNsdXNpdmVNYXhpbXVtOiB7b2tTdHI6IFwiPFwiLCBvazogb3BzLkxULCBmYWlsOiBvcHMuR1RFfSxcbiAgZXhjbHVzaXZlTWluaW11bToge29rU3RyOiBcIj5cIiwgb2s6IG9wcy5HVCwgZmFpbDogb3BzLkxURX0sXG59XG5cbmV4cG9ydCB0eXBlIExpbWl0TnVtYmVyRXJyb3IgPSBFcnJvck9iamVjdDxcbiAgS3dkLFxuICB7bGltaXQ6IG51bWJlcjsgY29tcGFyaXNvbjogQ29tcGFyaXNvbn0sXG4gIG51bWJlciB8IHskZGF0YTogc3RyaW5nfVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtrZXl3b3JkLCBzY2hlbWFDb2RlfSkgPT4gc3RyYG11c3QgYmUgJHtLV0RzW2tleXdvcmQgYXMgS3dkXS5va1N0cn0gJHtzY2hlbWFDb2RlfWAsXG4gIHBhcmFtczogKHtrZXl3b3JkLCBzY2hlbWFDb2RlfSkgPT5cbiAgICBfYHtjb21wYXJpc29uOiAke0tXRHNba2V5d29yZCBhcyBLd2RdLm9rU3RyfSwgbGltaXQ6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IE9iamVjdC5rZXlzKEtXRHMpLFxuICB0eXBlOiBcIm51bWJlclwiLFxuICBzY2hlbWFUeXBlOiBcIm51bWJlclwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2tleXdvcmQsIGRhdGEsIHNjaGVtYUNvZGV9ID0gY3h0XG4gICAgY3h0LmZhaWwkZGF0YShfYCR7ZGF0YX0gJHtLV0RzW2tleXdvcmQgYXMgS3dkXS5mYWlsfSAke3NjaGVtYUNvZGV9IHx8IGlzTmFOKCR7ZGF0YX0pYClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHJ9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuXG5leHBvcnQgdHlwZSBNdWx0aXBsZU9mRXJyb3IgPSBFcnJvck9iamVjdDxcbiAgXCJtdWx0aXBsZU9mXCIsXG4gIHttdWx0aXBsZU9mOiBudW1iZXJ9LFxuICBudW1iZXIgfCB7JGRhdGE6IHN0cmluZ31cbj5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7c2NoZW1hQ29kZX0pID0+IHN0cmBtdXN0IGJlIG11bHRpcGxlIG9mICR7c2NoZW1hQ29kZX1gLFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge211bHRpcGxlT2Y6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwibXVsdGlwbGVPZlwiLFxuICB0eXBlOiBcIm51bWJlclwiLFxuICBzY2hlbWFUeXBlOiBcIm51bWJlclwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgZGF0YSwgc2NoZW1hQ29kZSwgaXR9ID0gY3h0XG4gICAgLy8gY29uc3QgYmR0ID0gYmFkJERhdGFUeXBlKHNjaGVtYUNvZGUsIDxzdHJpbmc+ZGVmLnNjaGVtYVR5cGUsICRkYXRhKVxuICAgIGNvbnN0IHByZWMgPSBpdC5vcHRzLm11bHRpcGxlT2ZQcmVjaXNpb25cbiAgICBjb25zdCByZXMgPSBnZW4ubGV0KFwicmVzXCIpXG4gICAgY29uc3QgaW52YWxpZCA9IHByZWNcbiAgICAgID8gX2BNYXRoLmFicyhNYXRoLnJvdW5kKCR7cmVzfSkgLSAke3Jlc30pID4gMWUtJHtwcmVjfWBcbiAgICAgIDogX2Ake3Jlc30gIT09IHBhcnNlSW50KCR7cmVzfSlgXG4gICAgY3h0LmZhaWwkZGF0YShfYCgke3NjaGVtYUNvZGV9ID09PSAwIHx8ICgke3Jlc30gPSAke2RhdGF9LyR7c2NoZW1hQ29kZX0sICR7aW52YWxpZH0pKWApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgIi8vIGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvcHVueWNvZGUuanMgLSBwdW55Y29kZS51Y3MyLmRlY29kZVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdWNzMmxlbmd0aChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGhcbiAgbGV0IGxlbmd0aCA9IDBcbiAgbGV0IHBvcyA9IDBcbiAgbGV0IHZhbHVlOiBudW1iZXJcbiAgd2hpbGUgKHBvcyA8IGxlbikge1xuICAgIGxlbmd0aCsrXG4gICAgdmFsdWUgPSBzdHIuY2hhckNvZGVBdChwb3MrKylcbiAgICBpZiAodmFsdWUgPj0gMHhkODAwICYmIHZhbHVlIDw9IDB4ZGJmZiAmJiBwb3MgPCBsZW4pIHtcbiAgICAgIC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuICAgICAgdmFsdWUgPSBzdHIuY2hhckNvZGVBdChwb3MpXG4gICAgICBpZiAoKHZhbHVlICYgMHhmYzAwKSA9PT0gMHhkYzAwKSBwb3MrKyAvLyBsb3cgc3Vycm9nYXRlXG4gICAgfVxuICB9XG4gIHJldHVybiBsZW5ndGhcbn1cblxudWNzMmxlbmd0aC5jb2RlID0gJ3JlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL3VjczJsZW5ndGhcIikuZGVmYXVsdCdcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyLCBvcGVyYXRvcnN9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHt1c2VGdW5jfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB1Y3MybGVuZ3RoIGZyb20gXCIuLi8uLi9ydW50aW1lL3VjczJsZW5ndGhcIlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZSh7a2V5d29yZCwgc2NoZW1hQ29kZX0pIHtcbiAgICBjb25zdCBjb21wID0ga2V5d29yZCA9PT0gXCJtYXhMZW5ndGhcIiA/IFwibW9yZVwiIDogXCJmZXdlclwiXG4gICAgcmV0dXJuIHN0cmBtdXN0IE5PVCBoYXZlICR7Y29tcH0gdGhhbiAke3NjaGVtYUNvZGV9IGNoYXJhY3RlcnNgXG4gIH0sXG4gIHBhcmFtczogKHtzY2hlbWFDb2RlfSkgPT4gX2B7bGltaXQ6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFtcIm1heExlbmd0aFwiLCBcIm1pbkxlbmd0aFwiXSxcbiAgdHlwZTogXCJzdHJpbmdcIixcbiAgc2NoZW1hVHlwZTogXCJudW1iZXJcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtrZXl3b3JkLCBkYXRhLCBzY2hlbWFDb2RlLCBpdH0gPSBjeHRcbiAgICBjb25zdCBvcCA9IGtleXdvcmQgPT09IFwibWF4TGVuZ3RoXCIgPyBvcGVyYXRvcnMuR1QgOiBvcGVyYXRvcnMuTFRcbiAgICBjb25zdCBsZW4gPVxuICAgICAgaXQub3B0cy51bmljb2RlID09PSBmYWxzZSA/IF9gJHtkYXRhfS5sZW5ndGhgIDogX2Ake3VzZUZ1bmMoY3h0LmdlbiwgdWNzMmxlbmd0aCl9KCR7ZGF0YX0pYFxuICAgIGN4dC5mYWlsJGRhdGEoX2Ake2xlbn0gJHtvcH0gJHtzY2hlbWFDb2RlfWApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEVycm9yT2JqZWN0LCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7dXNlUGF0dGVybn0gZnJvbSBcIi4uL2NvZGVcIlxuaW1wb3J0IHt1c2VGdW5jfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7Xywgc3RyfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcblxuZXhwb3J0IHR5cGUgUGF0dGVybkVycm9yID0gRXJyb3JPYmplY3Q8XCJwYXR0ZXJuXCIsIHtwYXR0ZXJuOiBzdHJpbmd9LCBzdHJpbmcgfCB7JGRhdGE6IHN0cmluZ30+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3NjaGVtYUNvZGV9KSA9PiBzdHJgbXVzdCBtYXRjaCBwYXR0ZXJuIFwiJHtzY2hlbWFDb2RlfVwiYCxcbiAgcGFyYW1zOiAoe3NjaGVtYUNvZGV9KSA9PiBfYHtwYXR0ZXJuOiAke3NjaGVtYUNvZGV9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcInBhdHRlcm5cIixcbiAgdHlwZTogXCJzdHJpbmdcIixcbiAgc2NoZW1hVHlwZTogXCJzdHJpbmdcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsICRkYXRhLCBzY2hlbWEsIHNjaGVtYUNvZGUsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHUgPSBpdC5vcHRzLnVuaWNvZGVSZWdFeHAgPyBcInVcIiA6IFwiXCJcbiAgICBpZiAoJGRhdGEpIHtcbiAgICAgIGNvbnN0IHtyZWdFeHB9ID0gaXQub3B0cy5jb2RlXG4gICAgICBjb25zdCByZWdFeHBDb2RlID0gcmVnRXhwLmNvZGUgPT09IFwibmV3IFJlZ0V4cFwiID8gX2BuZXcgUmVnRXhwYCA6IHVzZUZ1bmMoZ2VuLCByZWdFeHApXG4gICAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiKVxuICAgICAgZ2VuLnRyeShcbiAgICAgICAgKCkgPT4gZ2VuLmFzc2lnbih2YWxpZCwgX2Ake3JlZ0V4cENvZGV9KCR7c2NoZW1hQ29kZX0sICR7dX0pLnRlc3QoJHtkYXRhfSlgKSxcbiAgICAgICAgKCkgPT4gZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpXG4gICAgICApXG4gICAgICBjeHQuZmFpbCRkYXRhKF9gISR7dmFsaWR9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVnRXhwID0gdXNlUGF0dGVybihjeHQsIHNjaGVtYSlcbiAgICAgIGN4dC5mYWlsJGRhdGEoX2AhJHtyZWdFeHB9LnRlc3QoJHtkYXRhfSlgKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0ciwgb3BlcmF0b3JzfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2Uoe2tleXdvcmQsIHNjaGVtYUNvZGV9KSB7XG4gICAgY29uc3QgY29tcCA9IGtleXdvcmQgPT09IFwibWF4UHJvcGVydGllc1wiID8gXCJtb3JlXCIgOiBcImZld2VyXCJcbiAgICByZXR1cm4gc3RyYG11c3QgTk9UIGhhdmUgJHtjb21wfSB0aGFuICR7c2NoZW1hQ29kZX0gcHJvcGVydGllc2BcbiAgfSxcbiAgcGFyYW1zOiAoe3NjaGVtYUNvZGV9KSA9PiBfYHtsaW1pdDogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogW1wibWF4UHJvcGVydGllc1wiLCBcIm1pblByb3BlcnRpZXNcIl0sXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFwibnVtYmVyXCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7a2V5d29yZCwgZGF0YSwgc2NoZW1hQ29kZX0gPSBjeHRcbiAgICBjb25zdCBvcCA9IGtleXdvcmQgPT09IFwibWF4UHJvcGVydGllc1wiID8gb3BlcmF0b3JzLkdUIDogb3BlcmF0b3JzLkxUXG4gICAgY3h0LmZhaWwkZGF0YShfYE9iamVjdC5rZXlzKCR7ZGF0YX0pLmxlbmd0aCAke29wfSAke3NjaGVtYUNvZGV9YClcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtcbiAgY2hlY2tSZXBvcnRNaXNzaW5nUHJvcCxcbiAgY2hlY2tNaXNzaW5nUHJvcCxcbiAgcmVwb3J0TWlzc2luZ1Byb3AsXG4gIHByb3BlcnR5SW5EYXRhLFxuICBub1Byb3BlcnR5SW5EYXRhLFxufSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge18sIHN0ciwgbmlsLCBub3QsIE5hbWUsIENvZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHtjaGVja1N0cmljdE1vZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBSZXF1aXJlZEVycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwicmVxdWlyZWRcIixcbiAge21pc3NpbmdQcm9wZXJ0eTogc3RyaW5nfSxcbiAgc3RyaW5nW10gfCB7JGRhdGE6IHN0cmluZ31cbj5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zOiB7bWlzc2luZ1Byb3BlcnR5fX0pID0+IHN0cmBtdXN0IGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgJyR7bWlzc2luZ1Byb3BlcnR5fSdgLFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7bWlzc2luZ1Byb3BlcnR5fX0pID0+IF9ge21pc3NpbmdQcm9wZXJ0eTogJHttaXNzaW5nUHJvcGVydHl9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcInJlcXVpcmVkXCIsXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFwiYXJyYXlcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgc2NoZW1hQ29kZSwgZGF0YSwgJGRhdGEsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHtvcHRzfSA9IGl0XG4gICAgaWYgKCEkZGF0YSAmJiBzY2hlbWEubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCB1c2VMb29wID0gc2NoZW1hLmxlbmd0aCA+PSBvcHRzLmxvb3BSZXF1aXJlZFxuICAgIGlmIChpdC5hbGxFcnJvcnMpIGFsbEVycm9yc01vZGUoKVxuICAgIGVsc2UgZXhpdE9uRXJyb3JNb2RlKClcblxuICAgIGlmIChvcHRzLnN0cmljdFJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBwcm9wcyA9IGN4dC5wYXJlbnRTY2hlbWEucHJvcGVydGllc1xuICAgICAgY29uc3Qge2RlZmluZWRQcm9wZXJ0aWVzfSA9IGN4dC5pdFxuICAgICAgZm9yIChjb25zdCByZXF1aXJlZEtleSBvZiBzY2hlbWEpIHtcbiAgICAgICAgaWYgKHByb3BzPy5bcmVxdWlyZWRLZXldID09PSB1bmRlZmluZWQgJiYgIWRlZmluZWRQcm9wZXJ0aWVzLmhhcyhyZXF1aXJlZEtleSkpIHtcbiAgICAgICAgICBjb25zdCBzY2hlbWFQYXRoID0gaXQuc2NoZW1hRW52LmJhc2VJZCArIGl0LmVyclNjaGVtYVBhdGhcbiAgICAgICAgICBjb25zdCBtc2cgPSBgcmVxdWlyZWQgcHJvcGVydHkgXCIke3JlcXVpcmVkS2V5fVwiIGlzIG5vdCBkZWZpbmVkIGF0IFwiJHtzY2hlbWFQYXRofVwiIChzdHJpY3RSZXF1aXJlZClgXG4gICAgICAgICAgY2hlY2tTdHJpY3RNb2RlKGl0LCBtc2csIGl0Lm9wdHMuc3RyaWN0UmVxdWlyZWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhbGxFcnJvcnNNb2RlKCk6IHZvaWQge1xuICAgICAgaWYgKHVzZUxvb3AgfHwgJGRhdGEpIHtcbiAgICAgICAgY3h0LmJsb2NrJGRhdGEobmlsLCBsb29wQWxsUmVxdWlyZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2Ygc2NoZW1hKSB7XG4gICAgICAgICAgY2hlY2tSZXBvcnRNaXNzaW5nUHJvcChjeHQsIHByb3ApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleGl0T25FcnJvck1vZGUoKTogdm9pZCB7XG4gICAgICBjb25zdCBtaXNzaW5nID0gZ2VuLmxldChcIm1pc3NpbmdcIilcbiAgICAgIGlmICh1c2VMb29wIHx8ICRkYXRhKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkID0gZ2VuLmxldChcInZhbGlkXCIsIHRydWUpXG4gICAgICAgIGN4dC5ibG9jayRkYXRhKHZhbGlkLCAoKSA9PiBsb29wVW50aWxNaXNzaW5nKG1pc3NpbmcsIHZhbGlkKSlcbiAgICAgICAgY3h0Lm9rKHZhbGlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuLmlmKGNoZWNrTWlzc2luZ1Byb3AoY3h0LCBzY2hlbWEsIG1pc3NpbmcpKVxuICAgICAgICByZXBvcnRNaXNzaW5nUHJvcChjeHQsIG1pc3NpbmcpXG4gICAgICAgIGdlbi5lbHNlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb29wQWxsUmVxdWlyZWQoKTogdm9pZCB7XG4gICAgICBnZW4uZm9yT2YoXCJwcm9wXCIsIHNjaGVtYUNvZGUgYXMgQ29kZSwgKHByb3ApID0+IHtcbiAgICAgICAgY3h0LnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5OiBwcm9wfSlcbiAgICAgICAgZ2VuLmlmKG5vUHJvcGVydHlJbkRhdGEoZ2VuLCBkYXRhLCBwcm9wLCBvcHRzLm93blByb3BlcnRpZXMpLCAoKSA9PiBjeHQuZXJyb3IoKSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9vcFVudGlsTWlzc2luZyhtaXNzaW5nOiBOYW1lLCB2YWxpZDogTmFtZSk6IHZvaWQge1xuICAgICAgY3h0LnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5OiBtaXNzaW5nfSlcbiAgICAgIGdlbi5mb3JPZihcbiAgICAgICAgbWlzc2luZyxcbiAgICAgICAgc2NoZW1hQ29kZSBhcyBDb2RlLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgcHJvcGVydHlJbkRhdGEoZ2VuLCBkYXRhLCBtaXNzaW5nLCBvcHRzLm93blByb3BlcnRpZXMpKVxuICAgICAgICAgIGdlbi5pZihub3QodmFsaWQpLCAoKSA9PiB7XG4gICAgICAgICAgICBjeHQuZXJyb3IoKVxuICAgICAgICAgICAgZ2VuLmJyZWFrKClcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBuaWxcbiAgICAgIClcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIG9wZXJhdG9yc30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlKHtrZXl3b3JkLCBzY2hlbWFDb2RlfSkge1xuICAgIGNvbnN0IGNvbXAgPSBrZXl3b3JkID09PSBcIm1heEl0ZW1zXCIgPyBcIm1vcmVcIiA6IFwiZmV3ZXJcIlxuICAgIHJldHVybiBzdHJgbXVzdCBOT1QgaGF2ZSAke2NvbXB9IHRoYW4gJHtzY2hlbWFDb2RlfSBpdGVtc2BcbiAgfSxcbiAgcGFyYW1zOiAoe3NjaGVtYUNvZGV9KSA9PiBfYHtsaW1pdDogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogW1wibWF4SXRlbXNcIiwgXCJtaW5JdGVtc1wiXSxcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBcIm51bWJlclwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2tleXdvcmQsIGRhdGEsIHNjaGVtYUNvZGV9ID0gY3h0XG4gICAgY29uc3Qgb3AgPSBrZXl3b3JkID09PSBcIm1heEl0ZW1zXCIgPyBvcGVyYXRvcnMuR1QgOiBvcGVyYXRvcnMuTFRcbiAgICBjeHQuZmFpbCRkYXRhKF9gJHtkYXRhfS5sZW5ndGggJHtvcH0gJHtzY2hlbWFDb2RlfWApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9pc3N1ZXMvODg5XG5pbXBvcnQgKiBhcyBlcXVhbCBmcm9tIFwiZmFzdC1kZWVwLWVxdWFsXCJcblxudHlwZSBFcXVhbCA9IHR5cGVvZiBlcXVhbCAmIHtjb2RlOiBzdHJpbmd9XG47KGVxdWFsIGFzIEVxdWFsKS5jb2RlID0gJ3JlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL2VxdWFsXCIpLmRlZmF1bHQnXG5cbmV4cG9ydCBkZWZhdWx0IGVxdWFsIGFzIEVxdWFsXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JPYmplY3QsIEtleXdvcmRFcnJvckRlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtjaGVja0RhdGFUeXBlcywgZ2V0U2NoZW1hVHlwZXMsIERhdGFUeXBlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZS9kYXRhVHlwZVwiXG5pbXBvcnQge18sIHN0ciwgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge3VzZUZ1bmN9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IGVxdWFsIGZyb20gXCIuLi8uLi9ydW50aW1lL2VxdWFsXCJcblxuZXhwb3J0IHR5cGUgVW5pcXVlSXRlbXNFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcInVuaXF1ZUl0ZW1zXCIsXG4gIHtpOiBudW1iZXI7IGo6IG51bWJlcn0sXG4gIGJvb2xlYW4gfCB7JGRhdGE6IHN0cmluZ31cbj5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zOiB7aSwgan19KSA9PlxuICAgIHN0cmBtdXN0IE5PVCBoYXZlIGR1cGxpY2F0ZSBpdGVtcyAoaXRlbXMgIyMgJHtqfSBhbmQgJHtpfSBhcmUgaWRlbnRpY2FsKWAsXG4gIHBhcmFtczogKHtwYXJhbXM6IHtpLCBqfX0pID0+IF9ge2k6ICR7aX0sIGo6ICR7an19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwidW5pcXVlSXRlbXNcIixcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBcImJvb2xlYW5cIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIGRhdGEsICRkYXRhLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgc2NoZW1hQ29kZSwgaXR9ID0gY3h0XG4gICAgaWYgKCEkZGF0YSAmJiAhc2NoZW1hKSByZXR1cm5cbiAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiKVxuICAgIGNvbnN0IGl0ZW1UeXBlcyA9IHBhcmVudFNjaGVtYS5pdGVtcyA/IGdldFNjaGVtYVR5cGVzKHBhcmVudFNjaGVtYS5pdGVtcykgOiBbXVxuICAgIGN4dC5ibG9jayRkYXRhKHZhbGlkLCB2YWxpZGF0ZVVuaXF1ZUl0ZW1zLCBfYCR7c2NoZW1hQ29kZX0gPT09IGZhbHNlYClcbiAgICBjeHQub2sodmFsaWQpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZVVuaXF1ZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgY29uc3QgaSA9IGdlbi5sZXQoXCJpXCIsIF9gJHtkYXRhfS5sZW5ndGhgKVxuICAgICAgY29uc3QgaiA9IGdlbi5sZXQoXCJqXCIpXG4gICAgICBjeHQuc2V0UGFyYW1zKHtpLCBqfSlcbiAgICAgIGdlbi5hc3NpZ24odmFsaWQsIHRydWUpXG4gICAgICBnZW4uaWYoX2Ake2l9ID4gMWAsICgpID0+IChjYW5PcHRpbWl6ZSgpID8gbG9vcE4gOiBsb29wTjIpKGksIGopKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbk9wdGltaXplKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGl0ZW1UeXBlcy5sZW5ndGggPiAwICYmICFpdGVtVHlwZXMuc29tZSgodCkgPT4gdCA9PT0gXCJvYmplY3RcIiB8fCB0ID09PSBcImFycmF5XCIpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9vcE4oaTogTmFtZSwgajogTmFtZSk6IHZvaWQge1xuICAgICAgY29uc3QgaXRlbSA9IGdlbi5uYW1lKFwiaXRlbVwiKVxuICAgICAgY29uc3Qgd3JvbmdUeXBlID0gY2hlY2tEYXRhVHlwZXMoaXRlbVR5cGVzLCBpdGVtLCBpdC5vcHRzLnN0cmljdE51bWJlcnMsIERhdGFUeXBlLldyb25nKVxuICAgICAgY29uc3QgaW5kaWNlcyA9IGdlbi5jb25zdChcImluZGljZXNcIiwgX2B7fWApXG4gICAgICBnZW4uZm9yKF9gOyR7aX0tLTtgLCAoKSA9PiB7XG4gICAgICAgIGdlbi5sZXQoaXRlbSwgX2Ake2RhdGF9WyR7aX1dYClcbiAgICAgICAgZ2VuLmlmKHdyb25nVHlwZSwgX2Bjb250aW51ZWApXG4gICAgICAgIGlmIChpdGVtVHlwZXMubGVuZ3RoID4gMSkgZ2VuLmlmKF9gdHlwZW9mICR7aXRlbX0gPT0gXCJzdHJpbmdcImAsIF9gJHtpdGVtfSArPSBcIl9cImApXG4gICAgICAgIGdlblxuICAgICAgICAgIC5pZihfYHR5cGVvZiAke2luZGljZXN9WyR7aXRlbX1dID09IFwibnVtYmVyXCJgLCAoKSA9PiB7XG4gICAgICAgICAgICBnZW4uYXNzaWduKGosIF9gJHtpbmRpY2VzfVske2l0ZW19XWApXG4gICAgICAgICAgICBjeHQuZXJyb3IoKVxuICAgICAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpLmJyZWFrKClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jb2RlKF9gJHtpbmRpY2VzfVske2l0ZW19XSA9ICR7aX1gKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb29wTjIoaTogTmFtZSwgajogTmFtZSk6IHZvaWQge1xuICAgICAgY29uc3QgZXFsID0gdXNlRnVuYyhnZW4sIGVxdWFsKVxuICAgICAgY29uc3Qgb3V0ZXIgPSBnZW4ubmFtZShcIm91dGVyXCIpXG4gICAgICBnZW4ubGFiZWwob3V0ZXIpLmZvcihfYDske2l9LS07YCwgKCkgPT5cbiAgICAgICAgZ2VuLmZvcihfYCR7an0gPSAke2l9OyAke2p9LS07YCwgKCkgPT5cbiAgICAgICAgICBnZW4uaWYoX2Ake2VxbH0oJHtkYXRhfVske2l9XSwgJHtkYXRhfVske2p9XSlgLCAoKSA9PiB7XG4gICAgICAgICAgICBjeHQuZXJyb3IoKVxuICAgICAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpLmJyZWFrKG91dGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEVycm9yT2JqZWN0LCBLZXl3b3JkRXJyb3JEZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7X30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge3VzZUZ1bmN9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IGVxdWFsIGZyb20gXCIuLi8uLi9ydW50aW1lL2VxdWFsXCJcblxuZXhwb3J0IHR5cGUgQ29uc3RFcnJvciA9IEVycm9yT2JqZWN0PFwiY29uc3RcIiwge2FsbG93ZWRWYWx1ZTogYW55fT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6IFwibXVzdCBiZSBlcXVhbCB0byBjb25zdGFudFwiLFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge2FsbG93ZWRWYWx1ZTogJHtzY2hlbWFDb2RlfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJjb25zdFwiLFxuICAkZGF0YTogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgZGF0YSwgJGRhdGEsIHNjaGVtYUNvZGUsIHNjaGVtYX0gPSBjeHRcbiAgICBpZiAoJGRhdGEgfHwgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIpKSB7XG4gICAgICBjeHQuZmFpbCRkYXRhKF9gISR7dXNlRnVuYyhnZW4sIGVxdWFsKX0oJHtkYXRhfSwgJHtzY2hlbWFDb2RlfSlgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjeHQuZmFpbChfYCR7c2NoZW1hfSAhPT0gJHtkYXRhfWApXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9uLCBFcnJvck9iamVjdCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIG9yLCBOYW1lLCBDb2RlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7dXNlRnVuY30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQgZXF1YWwgZnJvbSBcIi4uLy4uL3J1bnRpbWUvZXF1YWxcIlxuXG5leHBvcnQgdHlwZSBFbnVtRXJyb3IgPSBFcnJvck9iamVjdDxcImVudW1cIiwge2FsbG93ZWRWYWx1ZXM6IGFueVtdfSwgYW55W10gfCB7JGRhdGE6IHN0cmluZ30+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiBcIm11c3QgYmUgZXF1YWwgdG8gb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlc1wiLFxuICBwYXJhbXM6ICh7c2NoZW1hQ29kZX0pID0+IF9ge2FsbG93ZWRWYWx1ZXM6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiZW51bVwiLFxuICBzY2hlbWFUeXBlOiBcImFycmF5XCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCAkZGF0YSwgc2NoZW1hLCBzY2hlbWFDb2RlLCBpdH0gPSBjeHRcbiAgICBpZiAoISRkYXRhICYmIHNjaGVtYS5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcihcImVudW0gbXVzdCBoYXZlIG5vbi1lbXB0eSBhcnJheVwiKVxuICAgIGNvbnN0IHVzZUxvb3AgPSBzY2hlbWEubGVuZ3RoID49IGl0Lm9wdHMubG9vcEVudW1cbiAgICBsZXQgZXFsOiBOYW1lIHwgdW5kZWZpbmVkXG4gICAgY29uc3QgZ2V0RXFsID0gKCk6IE5hbWUgPT4gKGVxbCA/Pz0gdXNlRnVuYyhnZW4sIGVxdWFsKSlcblxuICAgIGxldCB2YWxpZDogQ29kZVxuICAgIGlmICh1c2VMb29wIHx8ICRkYXRhKSB7XG4gICAgICB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiKVxuICAgICAgY3h0LmJsb2NrJGRhdGEodmFsaWQsIGxvb3BFbnVtKVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEpKSB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgICAgIGNvbnN0IHZTY2hlbWEgPSBnZW4uY29uc3QoXCJ2U2NoZW1hXCIsIHNjaGVtYUNvZGUpXG4gICAgICB2YWxpZCA9IG9yKC4uLnNjaGVtYS5tYXAoKF94OiB1bmtub3duLCBpOiBudW1iZXIpID0+IGVxdWFsQ29kZSh2U2NoZW1hLCBpKSkpXG4gICAgfVxuICAgIGN4dC5wYXNzKHZhbGlkKVxuXG4gICAgZnVuY3Rpb24gbG9vcEVudW0oKTogdm9pZCB7XG4gICAgICBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSlcbiAgICAgIGdlbi5mb3JPZihcInZcIiwgc2NoZW1hQ29kZSBhcyBDb2RlLCAodikgPT5cbiAgICAgICAgZ2VuLmlmKF9gJHtnZXRFcWwoKX0oJHtkYXRhfSwgJHt2fSlgLCAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKS5icmVhaygpKVxuICAgICAgKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVxdWFsQ29kZSh2U2NoZW1hOiBOYW1lLCBpOiBudW1iZXIpOiBDb2RlIHtcbiAgICAgIGNvbnN0IHNjaCA9IHNjaGVtYVtpXVxuICAgICAgcmV0dXJuIHR5cGVvZiBzY2ggPT09IFwib2JqZWN0XCIgJiYgc2NoICE9PSBudWxsXG4gICAgICAgID8gX2Ake2dldEVxbCgpfSgke2RhdGF9LCAke3ZTY2hlbWF9WyR7aX1dKWBcbiAgICAgICAgOiBfYCR7ZGF0YX0gPT09ICR7c2NofWBcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtFcnJvck9iamVjdCwgVm9jYWJ1bGFyeX0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCBsaW1pdE51bWJlciwge0xpbWl0TnVtYmVyRXJyb3J9IGZyb20gXCIuL2xpbWl0TnVtYmVyXCJcbmltcG9ydCBtdWx0aXBsZU9mLCB7TXVsdGlwbGVPZkVycm9yfSBmcm9tIFwiLi9tdWx0aXBsZU9mXCJcbmltcG9ydCBsaW1pdExlbmd0aCBmcm9tIFwiLi9saW1pdExlbmd0aFwiXG5pbXBvcnQgcGF0dGVybiwge1BhdHRlcm5FcnJvcn0gZnJvbSBcIi4vcGF0dGVyblwiXG5pbXBvcnQgbGltaXRQcm9wZXJ0aWVzIGZyb20gXCIuL2xpbWl0UHJvcGVydGllc1wiXG5pbXBvcnQgcmVxdWlyZWQsIHtSZXF1aXJlZEVycm9yfSBmcm9tIFwiLi9yZXF1aXJlZFwiXG5pbXBvcnQgbGltaXRJdGVtcyBmcm9tIFwiLi9saW1pdEl0ZW1zXCJcbmltcG9ydCB1bmlxdWVJdGVtcywge1VuaXF1ZUl0ZW1zRXJyb3J9IGZyb20gXCIuL3VuaXF1ZUl0ZW1zXCJcbmltcG9ydCBjb25zdEtleXdvcmQsIHtDb25zdEVycm9yfSBmcm9tIFwiLi9jb25zdFwiXG5pbXBvcnQgZW51bUtleXdvcmQsIHtFbnVtRXJyb3J9IGZyb20gXCIuL2VudW1cIlxuXG5jb25zdCB2YWxpZGF0aW9uOiBWb2NhYnVsYXJ5ID0gW1xuICAvLyBudW1iZXJcbiAgbGltaXROdW1iZXIsXG4gIG11bHRpcGxlT2YsXG4gIC8vIHN0cmluZ1xuICBsaW1pdExlbmd0aCxcbiAgcGF0dGVybixcbiAgLy8gb2JqZWN0XG4gIGxpbWl0UHJvcGVydGllcyxcbiAgcmVxdWlyZWQsXG4gIC8vIGFycmF5XG4gIGxpbWl0SXRlbXMsXG4gIHVuaXF1ZUl0ZW1zLFxuICAvLyBhbnlcbiAge2tleXdvcmQ6IFwidHlwZVwiLCBzY2hlbWFUeXBlOiBbXCJzdHJpbmdcIiwgXCJhcnJheVwiXX0sXG4gIHtrZXl3b3JkOiBcIm51bGxhYmxlXCIsIHNjaGVtYVR5cGU6IFwiYm9vbGVhblwifSxcbiAgY29uc3RLZXl3b3JkLFxuICBlbnVtS2V5d29yZCxcbl1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGlvblxuXG50eXBlIExpbWl0RXJyb3IgPSBFcnJvck9iamVjdDxcbiAgXCJtYXhJdGVtc1wiIHwgXCJtaW5JdGVtc1wiIHwgXCJtaW5Qcm9wZXJ0aWVzXCIgfCBcIm1heFByb3BlcnRpZXNcIiB8IFwibWluTGVuZ3RoXCIgfCBcIm1heExlbmd0aFwiLFxuICB7bGltaXQ6IG51bWJlcn0sXG4gIG51bWJlciB8IHskZGF0YTogc3RyaW5nfVxuPlxuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uS2V5d29yZEVycm9yID1cbiAgfCBMaW1pdEVycm9yXG4gIHwgTGltaXROdW1iZXJFcnJvclxuICB8IE11bHRpcGxlT2ZFcnJvclxuICB8IFBhdHRlcm5FcnJvclxuICB8IFJlcXVpcmVkRXJyb3JcbiAgfCBVbmlxdWVJdGVtc0Vycm9yXG4gIHwgQ29uc3RFcnJvclxuICB8IEVudW1FcnJvclxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQW55U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgc3RyLCBub3QsIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgY2hlY2tTdHJpY3RNb2RlLCBUeXBlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbEl0ZW1zRXJyb3IgPSBFcnJvck9iamVjdDxcImFkZGl0aW9uYWxJdGVtc1wiLCB7bGltaXQ6IG51bWJlcn0sIEFueVNjaGVtYT5cblxuY29uc3QgZXJyb3I6IEtleXdvcmRFcnJvckRlZmluaXRpb24gPSB7XG4gIG1lc3NhZ2U6ICh7cGFyYW1zOiB7bGVufX0pID0+IHN0cmBtdXN0IE5PVCBoYXZlIG1vcmUgdGhhbiAke2xlbn0gaXRlbXNgLFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7bGVufX0pID0+IF9ge2xpbWl0OiAke2xlbn19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiYWRkaXRpb25hbEl0ZW1zXCIgYXMgY29uc3QsXG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgc2NoZW1hVHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgYmVmb3JlOiBcInVuaXF1ZUl0ZW1zXCIsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtwYXJlbnRTY2hlbWEsIGl0fSA9IGN4dFxuICAgIGNvbnN0IHtpdGVtc30gPSBwYXJlbnRTY2hlbWFcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICBjaGVja1N0cmljdE1vZGUoaXQsICdcImFkZGl0aW9uYWxJdGVtc1wiIGlzIGlnbm9yZWQgd2hlbiBcIml0ZW1zXCIgaXMgbm90IGFuIGFycmF5IG9mIHNjaGVtYXMnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zKGN4dCwgaXRlbXMpXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFkZGl0aW9uYWxJdGVtcyhjeHQ6IEtleXdvcmRDeHQsIGl0ZW1zOiBBbnlTY2hlbWFbXSk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBzY2hlbWEsIGRhdGEsIGtleXdvcmQsIGl0fSA9IGN4dFxuICBpdC5pdGVtcyA9IHRydWVcbiAgY29uc3QgbGVuID0gZ2VuLmNvbnN0KFwibGVuXCIsIF9gJHtkYXRhfS5sZW5ndGhgKVxuICBpZiAoc2NoZW1hID09PSBmYWxzZSkge1xuICAgIGN4dC5zZXRQYXJhbXMoe2xlbjogaXRlbXMubGVuZ3RofSlcbiAgICBjeHQucGFzcyhfYCR7bGVufSA8PSAke2l0ZW1zLmxlbmd0aH1gKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJvYmplY3RcIiAmJiAhYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHtcbiAgICBjb25zdCB2YWxpZCA9IGdlbi52YXIoXCJ2YWxpZFwiLCBfYCR7bGVufSA8PSAke2l0ZW1zLmxlbmd0aH1gKSAvLyBUT0RPIHZhclxuICAgIGdlbi5pZihub3QodmFsaWQpLCAoKSA9PiB2YWxpZGF0ZUl0ZW1zKHZhbGlkKSlcbiAgICBjeHQub2sodmFsaWQpXG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZUl0ZW1zKHZhbGlkOiBOYW1lKTogdm9pZCB7XG4gICAgZ2VuLmZvclJhbmdlKFwiaVwiLCBpdGVtcy5sZW5ndGgsIGxlbiwgKGkpID0+IHtcbiAgICAgIGN4dC5zdWJzY2hlbWEoe2tleXdvcmQsIGRhdGFQcm9wOiBpLCBkYXRhUHJvcFR5cGU6IFR5cGUuTnVtfSwgdmFsaWQpXG4gICAgICBpZiAoIWl0LmFsbEVycm9ycykgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IGdlbi5icmVhaygpKVxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgQW55U2NoZW1hLCBBbnlTY2hlbWFPYmplY3R9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtffSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIG1lcmdlRXZhbHVhdGVkLCBjaGVja1N0cmljdE1vZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuaW1wb3J0IHt2YWxpZGF0ZUFycmF5fSBmcm9tIFwiLi4vY29kZVwiXG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcIml0ZW1zXCIsXG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgc2NoZW1hVHlwZTogW1wib2JqZWN0XCIsIFwiYXJyYXlcIiwgXCJib29sZWFuXCJdLFxuICBiZWZvcmU6IFwidW5pcXVlSXRlbXNcIixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7c2NoZW1hLCBpdH0gPSBjeHRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSByZXR1cm4gdmFsaWRhdGVUdXBsZShjeHQsIFwiYWRkaXRpb25hbEl0ZW1zXCIsIHNjaGVtYSlcbiAgICBpdC5pdGVtcyA9IHRydWVcbiAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHJldHVyblxuICAgIGN4dC5vayh2YWxpZGF0ZUFycmF5KGN4dCkpXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVR1cGxlKFxuICBjeHQ6IEtleXdvcmRDeHQsXG4gIGV4dHJhSXRlbXM6IHN0cmluZyxcbiAgc2NoQXJyOiBBbnlTY2hlbWFbXSA9IGN4dC5zY2hlbWFcbik6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBwYXJlbnRTY2hlbWEsIGRhdGEsIGtleXdvcmQsIGl0fSA9IGN4dFxuICBjaGVja1N0cmljdFR1cGxlKHBhcmVudFNjaGVtYSlcbiAgaWYgKGl0Lm9wdHMudW5ldmFsdWF0ZWQgJiYgc2NoQXJyLmxlbmd0aCAmJiBpdC5pdGVtcyAhPT0gdHJ1ZSkge1xuICAgIGl0Lml0ZW1zID0gbWVyZ2VFdmFsdWF0ZWQuaXRlbXMoZ2VuLCBzY2hBcnIubGVuZ3RoLCBpdC5pdGVtcylcbiAgfVxuICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgY29uc3QgbGVuID0gZ2VuLmNvbnN0KFwibGVuXCIsIF9gJHtkYXRhfS5sZW5ndGhgKVxuICBzY2hBcnIuZm9yRWFjaCgoc2NoOiBBbnlTY2hlbWEsIGk6IG51bWJlcikgPT4ge1xuICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoKSkgcmV0dXJuXG4gICAgZ2VuLmlmKF9gJHtsZW59ID4gJHtpfWAsICgpID0+XG4gICAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAgICB7XG4gICAgICAgICAga2V5d29yZCxcbiAgICAgICAgICBzY2hlbWFQcm9wOiBpLFxuICAgICAgICAgIGRhdGFQcm9wOiBpLFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZFxuICAgICAgKVxuICAgIClcbiAgICBjeHQub2sodmFsaWQpXG4gIH0pXG5cbiAgZnVuY3Rpb24gY2hlY2tTdHJpY3RUdXBsZShzY2g6IEFueVNjaGVtYU9iamVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHtvcHRzLCBlcnJTY2hlbWFQYXRofSA9IGl0XG4gICAgY29uc3QgbCA9IHNjaEFyci5sZW5ndGhcbiAgICBjb25zdCBmdWxsVHVwbGUgPSBsID09PSBzY2gubWluSXRlbXMgJiYgKGwgPT09IHNjaC5tYXhJdGVtcyB8fCBzY2hbZXh0cmFJdGVtc10gPT09IGZhbHNlKVxuICAgIGlmIChvcHRzLnN0cmljdFR1cGxlcyAmJiAhZnVsbFR1cGxlKSB7XG4gICAgICBjb25zdCBtc2cgPSBgXCIke2tleXdvcmR9XCIgaXMgJHtsfS10dXBsZSwgYnV0IG1pbkl0ZW1zIG9yIG1heEl0ZW1zLyR7ZXh0cmFJdGVtc30gYXJlIG5vdCBzcGVjaWZpZWQgb3IgZGlmZmVyZW50IGF0IHBhdGggXCIke2VyclNjaGVtYVBhdGh9XCJgXG4gICAgICBjaGVja1N0cmljdE1vZGUoaXQsIG1zZywgb3B0cy5zdHJpY3RUdXBsZXMpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb259IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQge3ZhbGlkYXRlVHVwbGV9IGZyb20gXCIuL2l0ZW1zXCJcblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwicHJlZml4SXRlbXNcIixcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBbXCJhcnJheVwiXSxcbiAgYmVmb3JlOiBcInVuaXF1ZUl0ZW1zXCIsXG4gIGNvZGU6IChjeHQpID0+IHZhbGlkYXRlVHVwbGUoY3h0LCBcIml0ZW1zXCIpLFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7XG4gIENvZGVLZXl3b3JkRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEFueVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0cn0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7dmFsaWRhdGVBcnJheX0gZnJvbSBcIi4uL2NvZGVcIlxuaW1wb3J0IHt2YWxpZGF0ZUFkZGl0aW9uYWxJdGVtc30gZnJvbSBcIi4vYWRkaXRpb25hbEl0ZW1zXCJcblxuZXhwb3J0IHR5cGUgSXRlbXNFcnJvciA9IEVycm9yT2JqZWN0PFwiaXRlbXNcIiwge2xpbWl0OiBudW1iZXJ9LCBBbnlTY2hlbWE+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3BhcmFtczoge2xlbn19KSA9PiBzdHJgbXVzdCBOT1QgaGF2ZSBtb3JlIHRoYW4gJHtsZW59IGl0ZW1zYCxcbiAgcGFyYW1zOiAoe3BhcmFtczoge2xlbn19KSA9PiBfYHtsaW1pdDogJHtsZW59fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcIml0ZW1zXCIsXG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgc2NoZW1hVHlwZTogW1wib2JqZWN0XCIsIFwiYm9vbGVhblwiXSxcbiAgYmVmb3JlOiBcInVuaXF1ZUl0ZW1zXCIsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXR9ID0gY3h0XG4gICAgY29uc3Qge3ByZWZpeEl0ZW1zfSA9IHBhcmVudFNjaGVtYVxuICAgIGl0Lml0ZW1zID0gdHJ1ZVxuICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKSkgcmV0dXJuXG4gICAgaWYgKHByZWZpeEl0ZW1zKSB2YWxpZGF0ZUFkZGl0aW9uYWxJdGVtcyhjeHQsIHByZWZpeEl0ZW1zKVxuICAgIGVsc2UgY3h0Lm9rKHZhbGlkYXRlQXJyYXkoY3h0KSlcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYSwgY2hlY2tTdHJpY3RNb2RlLCBUeXBlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcblxuZXhwb3J0IHR5cGUgQ29udGFpbnNFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcImNvbnRhaW5zXCIsXG4gIHttaW5Db250YWluczogbnVtYmVyOyBtYXhDb250YWlucz86IG51bWJlcn0sXG4gIEFueVNjaGVtYVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtwYXJhbXM6IHttaW4sIG1heH19KSA9PlxuICAgIG1heCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHN0cmBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJHttaW59IHZhbGlkIGl0ZW0ocylgXG4gICAgICA6IHN0cmBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJHttaW59IGFuZCBubyBtb3JlIHRoYW4gJHttYXh9IHZhbGlkIGl0ZW0ocylgLFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7bWluLCBtYXh9fSkgPT5cbiAgICBtYXggPT09IHVuZGVmaW5lZCA/IF9ge21pbkNvbnRhaW5zOiAke21pbn19YCA6IF9ge21pbkNvbnRhaW5zOiAke21pbn0sIG1heENvbnRhaW5zOiAke21heH19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiY29udGFpbnNcIixcbiAgdHlwZTogXCJhcnJheVwiLFxuICBzY2hlbWFUeXBlOiBbXCJvYmplY3RcIiwgXCJib29sZWFuXCJdLFxuICBiZWZvcmU6IFwidW5pcXVlSXRlbXNcIixcbiAgdHJhY2tFcnJvcnM6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBkYXRhLCBpdH0gPSBjeHRcbiAgICBsZXQgbWluOiBudW1iZXJcbiAgICBsZXQgbWF4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgICBjb25zdCB7bWluQ29udGFpbnMsIG1heENvbnRhaW5zfSA9IHBhcmVudFNjaGVtYVxuICAgIGlmIChpdC5vcHRzLm5leHQpIHtcbiAgICAgIG1pbiA9IG1pbkNvbnRhaW5zID09PSB1bmRlZmluZWQgPyAxIDogbWluQ29udGFpbnNcbiAgICAgIG1heCA9IG1heENvbnRhaW5zXG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbiA9IDFcbiAgICB9XG4gICAgY29uc3QgbGVuID0gZ2VuLmNvbnN0KFwibGVuXCIsIF9gJHtkYXRhfS5sZW5ndGhgKVxuICAgIGN4dC5zZXRQYXJhbXMoe21pbiwgbWF4fSlcbiAgICBpZiAobWF4ID09PSB1bmRlZmluZWQgJiYgbWluID09PSAwKSB7XG4gICAgICBjaGVja1N0cmljdE1vZGUoaXQsIGBcIm1pbkNvbnRhaW5zXCIgPT0gMCB3aXRob3V0IFwibWF4Q29udGFpbnNcIjogXCJjb250YWluc1wiIGtleXdvcmQgaWdub3JlZGApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKG1heCAhPT0gdW5kZWZpbmVkICYmIG1pbiA+IG1heCkge1xuICAgICAgY2hlY2tTdHJpY3RNb2RlKGl0LCBgXCJtaW5Db250YWluc1wiID4gXCJtYXhDb250YWluc1wiIGlzIGFsd2F5cyBpbnZhbGlkYClcbiAgICAgIGN4dC5mYWlsKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHtcbiAgICAgIGxldCBjb25kID0gX2Ake2xlbn0gPj0gJHttaW59YFxuICAgICAgaWYgKG1heCAhPT0gdW5kZWZpbmVkKSBjb25kID0gX2Ake2NvbmR9ICYmICR7bGVufSA8PSAke21heH1gXG4gICAgICBjeHQucGFzcyhjb25kKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXQuaXRlbXMgPSB0cnVlXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgaWYgKG1heCA9PT0gdW5kZWZpbmVkICYmIG1pbiA9PT0gMSkge1xuICAgICAgdmFsaWRhdGVJdGVtcyh2YWxpZCwgKCkgPT4gZ2VuLmlmKHZhbGlkLCAoKSA9PiBnZW4uYnJlYWsoKSkpXG4gICAgfSBlbHNlIGlmIChtaW4gPT09IDApIHtcbiAgICAgIGdlbi5sZXQodmFsaWQsIHRydWUpXG4gICAgICBpZiAobWF4ICE9PSB1bmRlZmluZWQpIGdlbi5pZihfYCR7ZGF0YX0ubGVuZ3RoID4gMGAsIHZhbGlkYXRlSXRlbXNXaXRoQ291bnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbi5sZXQodmFsaWQsIGZhbHNlKVxuICAgICAgdmFsaWRhdGVJdGVtc1dpdGhDb3VudCgpXG4gICAgfVxuICAgIGN4dC5yZXN1bHQodmFsaWQsICgpID0+IGN4dC5yZXNldCgpKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVJdGVtc1dpdGhDb3VudCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHNjaFZhbGlkID0gZ2VuLm5hbWUoXCJfdmFsaWRcIilcbiAgICAgIGNvbnN0IGNvdW50ID0gZ2VuLmxldChcImNvdW50XCIsIDApXG4gICAgICB2YWxpZGF0ZUl0ZW1zKHNjaFZhbGlkLCAoKSA9PiBnZW4uaWYoc2NoVmFsaWQsICgpID0+IGNoZWNrTGltaXRzKGNvdW50KSkpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVJdGVtcyhfdmFsaWQ6IE5hbWUsIGJsb2NrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICBnZW4uZm9yUmFuZ2UoXCJpXCIsIDAsIGxlbiwgKGkpID0+IHtcbiAgICAgICAgY3h0LnN1YnNjaGVtYShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXl3b3JkOiBcImNvbnRhaW5zXCIsXG4gICAgICAgICAgICBkYXRhUHJvcDogaSxcbiAgICAgICAgICAgIGRhdGFQcm9wVHlwZTogVHlwZS5OdW0sXG4gICAgICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgX3ZhbGlkXG4gICAgICAgIClcbiAgICAgICAgYmxvY2soKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja0xpbWl0cyhjb3VudDogTmFtZSk6IHZvaWQge1xuICAgICAgZ2VuLmNvZGUoX2Ake2NvdW50fSsrYClcbiAgICAgIGlmIChtYXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBnZW4uaWYoX2Ake2NvdW50fSA+PSAke21pbn1gLCAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKS5icmVhaygpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuLmlmKF9gJHtjb3VudH0gPiAke21heH1gLCAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCBmYWxzZSkuYnJlYWsoKSlcbiAgICAgICAgaWYgKG1pbiA9PT0gMSkgZ2VuLmFzc2lnbih2YWxpZCwgdHJ1ZSlcbiAgICAgICAgZWxzZSBnZW4uaWYoX2Ake2NvdW50fSA+PSAke21pbn1gLCAoKSA9PiBnZW4uYXNzaWduKHZhbGlkLCB0cnVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgU2NoZW1hTWFwLFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHJ9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQge2NoZWNrUmVwb3J0TWlzc2luZ1Byb3AsIGNoZWNrTWlzc2luZ1Byb3AsIHJlcG9ydE1pc3NpbmdQcm9wLCBwcm9wZXJ0eUluRGF0YX0gZnJvbSBcIi4uL2NvZGVcIlxuXG5leHBvcnQgdHlwZSBQcm9wZXJ0eURlcGVuZGVuY2llcyA9IHtbSyBpbiBzdHJpbmddPzogc3RyaW5nW119XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jaWVzRXJyb3JQYXJhbXMge1xuICBwcm9wZXJ0eTogc3RyaW5nXG4gIG1pc3NpbmdQcm9wZXJ0eTogc3RyaW5nXG4gIGRlcHNDb3VudDogbnVtYmVyXG4gIGRlcHM6IHN0cmluZyAvLyBUT0RPIGNoYW5nZSB0byBzdHJpbmdbXVxufVxuXG50eXBlIFNjaGVtYURlcGVuZGVuY2llcyA9IFNjaGVtYU1hcFxuXG5leHBvcnQgdHlwZSBEZXBlbmRlbmNpZXNFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcImRlcGVuZGVuY2llc1wiLFxuICBEZXBlbmRlbmNpZXNFcnJvclBhcmFtcyxcbiAge1tLIGluIHN0cmluZ10/OiBzdHJpbmdbXSB8IEFueVNjaGVtYX1cbj5cblxuZXhwb3J0IGNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3BhcmFtczoge3Byb3BlcnR5LCBkZXBzQ291bnQsIGRlcHN9fSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5X2llcyA9IGRlcHNDb3VudCA9PT0gMSA/IFwicHJvcGVydHlcIiA6IFwicHJvcGVydGllc1wiXG4gICAgcmV0dXJuIHN0cmBtdXN0IGhhdmUgJHtwcm9wZXJ0eV9pZXN9ICR7ZGVwc30gd2hlbiBwcm9wZXJ0eSAke3Byb3BlcnR5fSBpcyBwcmVzZW50YFxuICB9LFxuICBwYXJhbXM6ICh7cGFyYW1zOiB7cHJvcGVydHksIGRlcHNDb3VudCwgZGVwcywgbWlzc2luZ1Byb3BlcnR5fX0pID0+XG4gICAgX2B7cHJvcGVydHk6ICR7cHJvcGVydHl9LFxuICAgIG1pc3NpbmdQcm9wZXJ0eTogJHttaXNzaW5nUHJvcGVydHl9LFxuICAgIGRlcHNDb3VudDogJHtkZXBzQ291bnR9LFxuICAgIGRlcHM6ICR7ZGVwc319YCwgLy8gVE9ETyBjaGFuZ2UgdG8gcmVmZXJlbmNlXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImRlcGVuZGVuY2llc1wiLFxuICB0eXBlOiBcIm9iamVjdFwiLFxuICBzY2hlbWFUeXBlOiBcIm9iamVjdFwiLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCBbcHJvcERlcHMsIHNjaERlcHNdID0gc3BsaXREZXBlbmRlbmNpZXMoY3h0KVxuICAgIHZhbGlkYXRlUHJvcGVydHlEZXBzKGN4dCwgcHJvcERlcHMpXG4gICAgdmFsaWRhdGVTY2hlbWFEZXBzKGN4dCwgc2NoRGVwcylcbiAgfSxcbn1cblxuZnVuY3Rpb24gc3BsaXREZXBlbmRlbmNpZXMoe3NjaGVtYX06IEtleXdvcmRDeHQpOiBbUHJvcGVydHlEZXBlbmRlbmNpZXMsIFNjaGVtYURlcGVuZGVuY2llc10ge1xuICBjb25zdCBwcm9wZXJ0eURlcHM6IFByb3BlcnR5RGVwZW5kZW5jaWVzID0ge31cbiAgY29uc3Qgc2NoZW1hRGVwczogU2NoZW1hRGVwZW5kZW5jaWVzID0ge31cbiAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSB7XG4gICAgaWYgKGtleSA9PT0gXCJfX3Byb3RvX19cIikgY29udGludWVcbiAgICBjb25zdCBkZXBzID0gQXJyYXkuaXNBcnJheShzY2hlbWFba2V5XSkgPyBwcm9wZXJ0eURlcHMgOiBzY2hlbWFEZXBzXG4gICAgZGVwc1trZXldID0gc2NoZW1hW2tleV1cbiAgfVxuICByZXR1cm4gW3Byb3BlcnR5RGVwcywgc2NoZW1hRGVwc11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHlEZXBzKFxuICBjeHQ6IEtleXdvcmRDeHQsXG4gIHByb3BlcnR5RGVwczoge1tLIGluIHN0cmluZ10/OiBzdHJpbmdbXX0gPSBjeHQuc2NoZW1hXG4pOiB2b2lkIHtcbiAgY29uc3Qge2dlbiwgZGF0YSwgaXR9ID0gY3h0XG4gIGlmIChPYmplY3Qua2V5cyhwcm9wZXJ0eURlcHMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gIGNvbnN0IG1pc3NpbmcgPSBnZW4ubGV0KFwibWlzc2luZ1wiKVxuICBmb3IgKGNvbnN0IHByb3AgaW4gcHJvcGVydHlEZXBzKSB7XG4gICAgY29uc3QgZGVwcyA9IHByb3BlcnR5RGVwc1twcm9wXSBhcyBzdHJpbmdbXVxuICAgIGlmIChkZXBzLmxlbmd0aCA9PT0gMCkgY29udGludWVcbiAgICBjb25zdCBoYXNQcm9wZXJ0eSA9IHByb3BlcnR5SW5EYXRhKGdlbiwgZGF0YSwgcHJvcCwgaXQub3B0cy5vd25Qcm9wZXJ0aWVzKVxuICAgIGN4dC5zZXRQYXJhbXMoe1xuICAgICAgcHJvcGVydHk6IHByb3AsXG4gICAgICBkZXBzQ291bnQ6IGRlcHMubGVuZ3RoLFxuICAgICAgZGVwczogZGVwcy5qb2luKFwiLCBcIiksXG4gICAgfSlcbiAgICBpZiAoaXQuYWxsRXJyb3JzKSB7XG4gICAgICBnZW4uaWYoaGFzUHJvcGVydHksICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBkZXBQcm9wIG9mIGRlcHMpIHtcbiAgICAgICAgICBjaGVja1JlcG9ydE1pc3NpbmdQcm9wKGN4dCwgZGVwUHJvcClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuLmlmKF9gJHtoYXNQcm9wZXJ0eX0gJiYgKCR7Y2hlY2tNaXNzaW5nUHJvcChjeHQsIGRlcHMsIG1pc3NpbmcpfSlgKVxuICAgICAgcmVwb3J0TWlzc2luZ1Byb3AoY3h0LCBtaXNzaW5nKVxuICAgICAgZ2VuLmVsc2UoKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWFEZXBzKGN4dDogS2V5d29yZEN4dCwgc2NoZW1hRGVwczogU2NoZW1hTWFwID0gY3h0LnNjaGVtYSk6IHZvaWQge1xuICBjb25zdCB7Z2VuLCBkYXRhLCBrZXl3b3JkLCBpdH0gPSBjeHRcbiAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gIGZvciAoY29uc3QgcHJvcCBpbiBzY2hlbWFEZXBzKSB7XG4gICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWFEZXBzW3Byb3BdIGFzIEFueVNjaGVtYSkpIGNvbnRpbnVlXG4gICAgZ2VuLmlmKFxuICAgICAgcHJvcGVydHlJbkRhdGEoZ2VuLCBkYXRhLCBwcm9wLCBpdC5vcHRzLm93blByb3BlcnRpZXMpLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hDeHQgPSBjeHQuc3Vic2NoZW1hKHtrZXl3b3JkLCBzY2hlbWFQcm9wOiBwcm9wfSwgdmFsaWQpXG4gICAgICAgIGN4dC5tZXJnZVZhbGlkRXZhbHVhdGVkKHNjaEN4dCwgdmFsaWQpXG4gICAgICB9LFxuICAgICAgKCkgPT4gZ2VuLnZhcih2YWxpZCwgdHJ1ZSkgLy8gVE9ETyB2YXJcbiAgICApXG4gICAgY3h0Lm9rKHZhbGlkKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQW55U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Xywgbm90fSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWF9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBQcm9wZXJ0eU5hbWVzRXJyb3IgPSBFcnJvck9iamVjdDxcInByb3BlcnR5TmFtZXNcIiwge3Byb3BlcnR5TmFtZTogc3RyaW5nfSwgQW55U2NoZW1hPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogXCJwcm9wZXJ0eSBuYW1lIG11c3QgYmUgdmFsaWRcIixcbiAgcGFyYW1zOiAoe3BhcmFtc30pID0+IF9ge3Byb3BlcnR5TmFtZTogJHtwYXJhbXMucHJvcGVydHlOYW1lfX1gLFxufVxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJwcm9wZXJ0eU5hbWVzXCIsXG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHNjaGVtYVR5cGU6IFtcIm9iamVjdFwiLCBcImJvb2xlYW5cIl0sXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgZGF0YSwgaXR9ID0gY3h0XG4gICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWEpKSByZXR1cm5cbiAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcblxuICAgIGdlbi5mb3JJbihcImtleVwiLCBkYXRhLCAoa2V5KSA9PiB7XG4gICAgICBjeHQuc2V0UGFyYW1zKHtwcm9wZXJ0eU5hbWU6IGtleX0pXG4gICAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAgICB7XG4gICAgICAgICAga2V5d29yZDogXCJwcm9wZXJ0eU5hbWVzXCIsXG4gICAgICAgICAgZGF0YToga2V5LFxuICAgICAgICAgIGRhdGFUeXBlczogW1wic3RyaW5nXCJdLFxuICAgICAgICAgIHByb3BlcnR5TmFtZToga2V5LFxuICAgICAgICAgIGNvbXBvc2l0ZVJ1bGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkXG4gICAgICApXG4gICAgICBnZW4uaWYobm90KHZhbGlkKSwgKCkgPT4ge1xuICAgICAgICBjeHQuZXJyb3IodHJ1ZSlcbiAgICAgICAgaWYgKCFpdC5hbGxFcnJvcnMpIGdlbi5icmVhaygpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBjeHQub2sodmFsaWQpXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBBZGRlZEtleXdvcmREZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQW55U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHthbGxTY2hlbWFQcm9wZXJ0aWVzLCB1c2VQYXR0ZXJuLCBpc093blByb3BlcnR5fSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge18sIG5pbCwgb3IsIG5vdCwgQ29kZSwgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQgTiBmcm9tIFwiLi4vLi4vY29tcGlsZS9uYW1lc1wiXG5pbXBvcnQgdHlwZSB7U3Vic2NoZW1hQXJnc30gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGUvc3Vic2NoZW1hXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIHNjaGVtYVJlZk9yVmFsLCBUeXBlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFByb3BlcnRpZXNFcnJvciA9IEVycm9yT2JqZWN0PFxuICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIsXG4gIHthZGRpdGlvbmFsUHJvcGVydHk6IHN0cmluZ30sXG4gIEFueVNjaGVtYVxuPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogXCJtdXN0IE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllc1wiLFxuICBwYXJhbXM6ICh7cGFyYW1zfSkgPT4gX2B7YWRkaXRpb25hbFByb3BlcnR5OiAke3BhcmFtcy5hZGRpdGlvbmFsUHJvcGVydHl9fWAsXG59XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uICYgQWRkZWRLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiLFxuICB0eXBlOiBbXCJvYmplY3RcIl0sXG4gIHNjaGVtYVR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gIGFsbG93VW5kZWZpbmVkOiB0cnVlLFxuICB0cmFja0Vycm9yczogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGRhdGEsIGVycnNDb3VudCwgaXR9ID0gY3h0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFlcnJzQ291bnQpIHRocm93IG5ldyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKVxuICAgIGNvbnN0IHthbGxFcnJvcnMsIG9wdHN9ID0gaXRcbiAgICBpdC5wcm9wcyA9IHRydWVcbiAgICBpZiAob3B0cy5yZW1vdmVBZGRpdGlvbmFsICE9PSBcImFsbFwiICYmIGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWEpKSByZXR1cm5cbiAgICBjb25zdCBwcm9wcyA9IGFsbFNjaGVtYVByb3BlcnRpZXMocGFyZW50U2NoZW1hLnByb3BlcnRpZXMpXG4gICAgY29uc3QgcGF0UHJvcHMgPSBhbGxTY2hlbWFQcm9wZXJ0aWVzKHBhcmVudFNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylcbiAgICBjaGVja0FkZGl0aW9uYWxQcm9wZXJ0aWVzKClcbiAgICBjeHQub2soX2Ake2VycnNDb3VudH0gPT09ICR7Ti5lcnJvcnN9YClcblxuICAgIGZ1bmN0aW9uIGNoZWNrQWRkaXRpb25hbFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICBnZW4uZm9ySW4oXCJrZXlcIiwgZGF0YSwgKGtleTogTmFtZSkgPT4ge1xuICAgICAgICBpZiAoIXByb3BzLmxlbmd0aCAmJiAhcGF0UHJvcHMubGVuZ3RoKSBhZGRpdGlvbmFsUHJvcGVydHlDb2RlKGtleSlcbiAgICAgICAgZWxzZSBnZW4uaWYoaXNBZGRpdGlvbmFsKGtleSksICgpID0+IGFkZGl0aW9uYWxQcm9wZXJ0eUNvZGUoa2V5KSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZGRpdGlvbmFsKGtleTogTmFtZSk6IENvZGUge1xuICAgICAgbGV0IGRlZmluZWRQcm9wOiBDb2RlXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID4gOCkge1xuICAgICAgICAvLyBUT0RPIG1heWJlIGFuIG9wdGlvbiBpbnN0ZWFkIG9mIGhhcmQtY29kZWQgOD9cbiAgICAgICAgY29uc3QgcHJvcHNTY2hlbWEgPSBzY2hlbWFSZWZPclZhbChpdCwgcGFyZW50U2NoZW1hLnByb3BlcnRpZXMsIFwicHJvcGVydGllc1wiKVxuICAgICAgICBkZWZpbmVkUHJvcCA9IGlzT3duUHJvcGVydHkoZ2VuLCBwcm9wc1NjaGVtYSBhcyBDb2RlLCBrZXkpXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLmxlbmd0aCkge1xuICAgICAgICBkZWZpbmVkUHJvcCA9IG9yKC4uLnByb3BzLm1hcCgocCkgPT4gX2Ake2tleX0gPT09ICR7cH1gKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZWRQcm9wID0gbmlsXG4gICAgICB9XG4gICAgICBpZiAocGF0UHJvcHMubGVuZ3RoKSB7XG4gICAgICAgIGRlZmluZWRQcm9wID0gb3IoZGVmaW5lZFByb3AsIC4uLnBhdFByb3BzLm1hcCgocCkgPT4gX2Ake3VzZVBhdHRlcm4oY3h0LCBwKX0udGVzdCgke2tleX0pYCkpXG4gICAgICB9XG4gICAgICByZXR1cm4gbm90KGRlZmluZWRQcm9wKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUFkZGl0aW9uYWwoa2V5OiBOYW1lKTogdm9pZCB7XG4gICAgICBnZW4uY29kZShfYGRlbGV0ZSAke2RhdGF9WyR7a2V5fV1gKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZGl0aW9uYWxQcm9wZXJ0eUNvZGUoa2V5OiBOYW1lKTogdm9pZCB7XG4gICAgICBpZiAob3B0cy5yZW1vdmVBZGRpdGlvbmFsID09PSBcImFsbFwiIHx8IChvcHRzLnJlbW92ZUFkZGl0aW9uYWwgJiYgc2NoZW1hID09PSBmYWxzZSkpIHtcbiAgICAgICAgZGVsZXRlQWRkaXRpb25hbChrZXkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2NoZW1hID09PSBmYWxzZSkge1xuICAgICAgICBjeHQuc2V0UGFyYW1zKHthZGRpdGlvbmFsUHJvcGVydHk6IGtleX0pXG4gICAgICAgIGN4dC5lcnJvcigpXG4gICAgICAgIGlmICghYWxsRXJyb3JzKSBnZW4uYnJlYWsoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gXCJvYmplY3RcIiAmJiAhYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaGVtYSkpIHtcbiAgICAgICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgICAgIGlmIChvcHRzLnJlbW92ZUFkZGl0aW9uYWwgPT09IFwiZmFpbGluZ1wiKSB7XG4gICAgICAgICAgYXBwbHlBZGRpdGlvbmFsU2NoZW1hKGtleSwgdmFsaWQsIGZhbHNlKVxuICAgICAgICAgIGdlbi5pZihub3QodmFsaWQpLCAoKSA9PiB7XG4gICAgICAgICAgICBjeHQucmVzZXQoKVxuICAgICAgICAgICAgZGVsZXRlQWRkaXRpb25hbChrZXkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcHBseUFkZGl0aW9uYWxTY2hlbWEoa2V5LCB2YWxpZClcbiAgICAgICAgICBpZiAoIWFsbEVycm9ycykgZ2VuLmlmKG5vdCh2YWxpZCksICgpID0+IGdlbi5icmVhaygpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHlBZGRpdGlvbmFsU2NoZW1hKGtleTogTmFtZSwgdmFsaWQ6IE5hbWUsIGVycm9ycz86IGZhbHNlKTogdm9pZCB7XG4gICAgICBjb25zdCBzdWJzY2hlbWE6IFN1YnNjaGVtYUFyZ3MgPSB7XG4gICAgICAgIGtleXdvcmQ6IFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIixcbiAgICAgICAgZGF0YVByb3A6IGtleSxcbiAgICAgICAgZGF0YVByb3BUeXBlOiBUeXBlLlN0cixcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oc3Vic2NoZW1hLCB7XG4gICAgICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICAgICAgICBjcmVhdGVFcnJvcnM6IGZhbHNlLFxuICAgICAgICAgIGFsbEVycm9yczogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjeHQuc3Vic2NoZW1hKHN1YnNjaGVtYSwgdmFsaWQpXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge3Byb3BlcnR5SW5EYXRhLCBhbGxTY2hlbWFQcm9wZXJ0aWVzfSBmcm9tIFwiLi4vY29kZVwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hLCB0b0hhc2gsIG1lcmdlRXZhbHVhdGVkfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCBhcERlZiBmcm9tIFwiLi9hZGRpdGlvbmFsUHJvcGVydGllc1wiXG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcInByb3BlcnRpZXNcIixcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgc2NoZW1hVHlwZTogXCJvYmplY3RcIixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgZGF0YSwgaXR9ID0gY3h0XG4gICAgaWYgKGl0Lm9wdHMucmVtb3ZlQWRkaXRpb25hbCA9PT0gXCJhbGxcIiAmJiBwYXJlbnRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXBEZWYuY29kZShuZXcgS2V5d29yZEN4dChpdCwgYXBEZWYsIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIikpXG4gICAgfVxuICAgIGNvbnN0IGFsbFByb3BzID0gYWxsU2NoZW1hUHJvcGVydGllcyhzY2hlbWEpXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGFsbFByb3BzKSB7XG4gICAgICBpdC5kZWZpbmVkUHJvcGVydGllcy5hZGQocHJvcClcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudW5ldmFsdWF0ZWQgJiYgYWxsUHJvcHMubGVuZ3RoICYmIGl0LnByb3BzICE9PSB0cnVlKSB7XG4gICAgICBpdC5wcm9wcyA9IG1lcmdlRXZhbHVhdGVkLnByb3BzKGdlbiwgdG9IYXNoKGFsbFByb3BzKSwgaXQucHJvcHMpXG4gICAgfVxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBhbGxQcm9wcy5maWx0ZXIoKHApID0+ICFhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hW3BdKSlcbiAgICBpZiAocHJvcGVydGllcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChoYXNEZWZhdWx0KHByb3ApKSB7XG4gICAgICAgIGFwcGx5UHJvcGVydHlTY2hlbWEocHJvcClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbi5pZihwcm9wZXJ0eUluRGF0YShnZW4sIGRhdGEsIHByb3AsIGl0Lm9wdHMub3duUHJvcGVydGllcykpXG4gICAgICAgIGFwcGx5UHJvcGVydHlTY2hlbWEocHJvcClcbiAgICAgICAgaWYgKCFpdC5hbGxFcnJvcnMpIGdlbi5lbHNlKCkudmFyKHZhbGlkLCB0cnVlKVxuICAgICAgICBnZW4uZW5kSWYoKVxuICAgICAgfVxuICAgICAgY3h0Lml0LmRlZmluZWRQcm9wZXJ0aWVzLmFkZChwcm9wKVxuICAgICAgY3h0Lm9rKHZhbGlkKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0RlZmF1bHQocHJvcDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gaXQub3B0cy51c2VEZWZhdWx0cyAmJiAhaXQuY29tcG9zaXRlUnVsZSAmJiBzY2hlbWFbcHJvcF0uZGVmYXVsdCAhPT0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHlQcm9wZXJ0eVNjaGVtYShwcm9wOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBrZXl3b3JkOiBcInByb3BlcnRpZXNcIixcbiAgICAgICAgICBzY2hlbWFQcm9wOiBwcm9wLFxuICAgICAgICAgIGRhdGFQcm9wOiBwcm9wLFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZFxuICAgICAgKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge2FsbFNjaGVtYVByb3BlcnRpZXMsIHVzZVBhdHRlcm59IGZyb20gXCIuLi9jb2RlXCJcbmltcG9ydCB7Xywgbm90LCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWEsIGNoZWNrU3RyaWN0TW9kZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQge2V2YWx1YXRlZFByb3BzVG9OYW1lLCBUeXBlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcbmltcG9ydCB7QW55U2NoZW1hfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJwYXR0ZXJuUHJvcGVydGllc1wiLFxuICB0eXBlOiBcIm9iamVjdFwiLFxuICBzY2hlbWFUeXBlOiBcIm9iamVjdFwiLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgZGF0YSwgcGFyZW50U2NoZW1hLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7b3B0c30gPSBpdFxuICAgIGNvbnN0IHBhdHRlcm5zID0gYWxsU2NoZW1hUHJvcGVydGllcyhzY2hlbWEpXG4gICAgY29uc3QgYWx3YXlzVmFsaWRQYXR0ZXJucyA9IHBhdHRlcm5zLmZpbHRlcigocCkgPT5cbiAgICAgIGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWFbcF0gYXMgQW55U2NoZW1hKVxuICAgIClcblxuICAgIGlmIChcbiAgICAgIHBhdHRlcm5zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgKGFsd2F5c1ZhbGlkUGF0dGVybnMubGVuZ3RoID09PSBwYXR0ZXJucy5sZW5ndGggJiZcbiAgICAgICAgKCFpdC5vcHRzLnVuZXZhbHVhdGVkIHx8IGl0LnByb3BzID09PSB0cnVlKSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrUHJvcGVydGllcyA9XG4gICAgICBvcHRzLnN0cmljdFNjaGVtYSAmJiAhb3B0cy5hbGxvd01hdGNoaW5nUHJvcGVydGllcyAmJiBwYXJlbnRTY2hlbWEucHJvcGVydGllc1xuICAgIGNvbnN0IHZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICAgIGlmIChpdC5wcm9wcyAhPT0gdHJ1ZSAmJiAhKGl0LnByb3BzIGluc3RhbmNlb2YgTmFtZSkpIHtcbiAgICAgIGl0LnByb3BzID0gZXZhbHVhdGVkUHJvcHNUb05hbWUoZ2VuLCBpdC5wcm9wcylcbiAgICB9XG4gICAgY29uc3Qge3Byb3BzfSA9IGl0XG4gICAgdmFsaWRhdGVQYXR0ZXJuUHJvcGVydGllcygpXG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZVBhdHRlcm5Qcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBwYXQgb2YgcGF0dGVybnMpIHtcbiAgICAgICAgaWYgKGNoZWNrUHJvcGVydGllcykgY2hlY2tNYXRjaGluZ1Byb3BlcnRpZXMocGF0KVxuICAgICAgICBpZiAoaXQuYWxsRXJyb3JzKSB7XG4gICAgICAgICAgdmFsaWRhdGVQcm9wZXJ0aWVzKHBhdClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnZW4udmFyKHZhbGlkLCB0cnVlKSAvLyBUT0RPIHZhclxuICAgICAgICAgIHZhbGlkYXRlUHJvcGVydGllcyhwYXQpXG4gICAgICAgICAgZ2VuLmlmKHZhbGlkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tNYXRjaGluZ1Byb3BlcnRpZXMocGF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBjaGVja1Byb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAocGF0KS50ZXN0KHByb3ApKSB7XG4gICAgICAgICAgY2hlY2tTdHJpY3RNb2RlKFxuICAgICAgICAgICAgaXQsXG4gICAgICAgICAgICBgcHJvcGVydHkgJHtwcm9wfSBtYXRjaGVzIHBhdHRlcm4gJHtwYXR9ICh1c2UgYWxsb3dNYXRjaGluZ1Byb3BlcnRpZXMpYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyhwYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgZ2VuLmZvckluKFwia2V5XCIsIGRhdGEsIChrZXkpID0+IHtcbiAgICAgICAgZ2VuLmlmKF9gJHt1c2VQYXR0ZXJuKGN4dCwgcGF0KX0udGVzdCgke2tleX0pYCwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFsd2F5c1ZhbGlkID0gYWx3YXlzVmFsaWRQYXR0ZXJucy5pbmNsdWRlcyhwYXQpXG4gICAgICAgICAgaWYgKCFhbHdheXNWYWxpZCkge1xuICAgICAgICAgICAgY3h0LnN1YnNjaGVtYShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleXdvcmQ6IFwicGF0dGVyblByb3BlcnRpZXNcIixcbiAgICAgICAgICAgICAgICBzY2hlbWFQcm9wOiBwYXQsXG4gICAgICAgICAgICAgICAgZGF0YVByb3A6IGtleSxcbiAgICAgICAgICAgICAgICBkYXRhUHJvcFR5cGU6IFR5cGUuU3RyLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdC5vcHRzLnVuZXZhbHVhdGVkICYmIHByb3BzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBnZW4uYXNzaWduKF9gJHtwcm9wc31bJHtrZXl9XWAsIHRydWUpXG4gICAgICAgICAgfSBlbHNlIGlmICghYWx3YXlzVmFsaWQgJiYgIWl0LmFsbEVycm9ycykge1xuICAgICAgICAgICAgLy8gY2FuIHNob3J0LWNpcmN1aXQgaWYgYHVuZXZhbHVhdGVkUHJvcGVydGllc2AgaXMgbm90IHN1cHBvcnRlZCAob3B0cy5uZXh0ID09PSBmYWxzZSlcbiAgICAgICAgICAgIC8vIG9yIGlmIGFsbCBwcm9wZXJ0aWVzIHdlcmUgZXZhbHVhdGVkIChwcm9wcyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIGdlbi5pZihub3QodmFsaWQpLCAoKSA9PiBnZW4uYnJlYWsoKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JOb1BhcmFtcywgQW55U2NoZW1hfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWF9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBOb3RLZXl3b3JkRXJyb3IgPSBFcnJvck5vUGFyYW1zPFwibm90XCIsIEFueVNjaGVtYT5cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwibm90XCIsXG4gIHNjaGVtYVR5cGU6IFtcIm9iamVjdFwiLCBcImJvb2xlYW5cIl0sXG4gIHRyYWNrRXJyb3JzOiB0cnVlLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHNjaGVtYSwgaXR9ID0gY3h0XG4gICAgaWYgKGFsd2F5c1ZhbGlkU2NoZW1hKGl0LCBzY2hlbWEpKSB7XG4gICAgICBjeHQuZmFpbCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZCA9IGdlbi5uYW1lKFwidmFsaWRcIilcbiAgICBjeHQuc3Vic2NoZW1hKFxuICAgICAge1xuICAgICAgICBrZXl3b3JkOiBcIm5vdFwiLFxuICAgICAgICBjb21wb3NpdGVSdWxlOiB0cnVlLFxuICAgICAgICBjcmVhdGVFcnJvcnM6IGZhbHNlLFxuICAgICAgICBhbGxFcnJvcnM6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHZhbGlkXG4gICAgKVxuXG4gICAgY3h0LmZhaWxSZXN1bHQoXG4gICAgICB2YWxpZCxcbiAgICAgICgpID0+IGN4dC5yZXNldCgpLFxuICAgICAgKCkgPT4gY3h0LmVycm9yKClcbiAgICApXG4gIH0sXG4gIGVycm9yOiB7bWVzc2FnZTogXCJtdXN0IE5PVCBiZSB2YWxpZFwifSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgRXJyb3JOb1BhcmFtcywgQW55U2NoZW1hfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHt2YWxpZGF0ZVVuaW9ufSBmcm9tIFwiLi4vY29kZVwiXG5cbmV4cG9ydCB0eXBlIEFueU9mRXJyb3IgPSBFcnJvck5vUGFyYW1zPFwiYW55T2ZcIiwgQW55U2NoZW1hW10+XG5cbmNvbnN0IGRlZjogQ29kZUtleXdvcmREZWZpbml0aW9uID0ge1xuICBrZXl3b3JkOiBcImFueU9mXCIsXG4gIHNjaGVtYVR5cGU6IFwiYXJyYXlcIixcbiAgdHJhY2tFcnJvcnM6IHRydWUsXG4gIGNvZGU6IHZhbGlkYXRlVW5pb24sXG4gIGVycm9yOiB7bWVzc2FnZTogXCJtdXN0IG1hdGNoIGEgc2NoZW1hIGluIGFueU9mXCJ9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7XG4gIENvZGVLZXl3b3JkRGVmaW5pdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIEFueVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIE5hbWV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuaW1wb3J0IHthbHdheXNWYWxpZFNjaGVtYX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdXRpbFwiXG5pbXBvcnQge1NjaGVtYUN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGVcIlxuXG5leHBvcnQgdHlwZSBPbmVPZkVycm9yID0gRXJyb3JPYmplY3Q8XG4gIFwib25lT2ZcIixcbiAge3Bhc3NpbmdTY2hlbWFzOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbH0sXG4gIEFueVNjaGVtYVtdXG4+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiBcIm11c3QgbWF0Y2ggZXhhY3RseSBvbmUgc2NoZW1hIGluIG9uZU9mXCIsXG4gIHBhcmFtczogKHtwYXJhbXN9KSA9PiBfYHtwYXNzaW5nU2NoZW1hczogJHtwYXJhbXMucGFzc2luZ319YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwib25lT2ZcIixcbiAgc2NoZW1hVHlwZTogXCJhcnJheVwiLFxuICB0cmFja0Vycm9yczogdHJ1ZSxcbiAgZXJyb3IsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0fSA9IGN4dFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEpKSB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIilcbiAgICBpZiAoaXQub3B0cy5kaXNjcmltaW5hdG9yICYmIHBhcmVudFNjaGVtYS5kaXNjcmltaW5hdG9yKSByZXR1cm5cbiAgICBjb25zdCBzY2hBcnI6IEFueVNjaGVtYVtdID0gc2NoZW1hXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIiwgZmFsc2UpXG4gICAgY29uc3QgcGFzc2luZyA9IGdlbi5sZXQoXCJwYXNzaW5nXCIsIG51bGwpXG4gICAgY29uc3Qgc2NoVmFsaWQgPSBnZW4ubmFtZShcIl92YWxpZFwiKVxuICAgIGN4dC5zZXRQYXJhbXMoe3Bhc3Npbmd9KVxuICAgIC8vIFRPRE8gcG9zc2libHkgZmFpbCBzdHJhaWdodCBhd2F5ICh3aXRoIHdhcm5pbmcgb3IgZXhjZXB0aW9uKSBpZiB0aGVyZSBhcmUgdHdvIGVtcHR5IGFsd2F5cyB2YWxpZCBzY2hlbWFzXG5cbiAgICBnZW4uYmxvY2sodmFsaWRhdGVPbmVPZilcblxuICAgIGN4dC5yZXN1bHQoXG4gICAgICB2YWxpZCxcbiAgICAgICgpID0+IGN4dC5yZXNldCgpLFxuICAgICAgKCkgPT4gY3h0LmVycm9yKHRydWUpXG4gICAgKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVPbmVPZigpOiB2b2lkIHtcbiAgICAgIHNjaEFyci5mb3JFYWNoKChzY2g6IEFueVNjaGVtYSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCBzY2hDeHQ6IFNjaGVtYUN4dCB8IHVuZGVmaW5lZFxuICAgICAgICBpZiAoYWx3YXlzVmFsaWRTY2hlbWEoaXQsIHNjaCkpIHtcbiAgICAgICAgICBnZW4udmFyKHNjaFZhbGlkLCB0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6IFwib25lT2ZcIixcbiAgICAgICAgICAgICAgc2NoZW1hUHJvcDogaSxcbiAgICAgICAgICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY2hWYWxpZFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIGdlblxuICAgICAgICAgICAgLmlmKF9gJHtzY2hWYWxpZH0gJiYgJHt2YWxpZH1gKVxuICAgICAgICAgICAgLmFzc2lnbih2YWxpZCwgZmFsc2UpXG4gICAgICAgICAgICAuYXNzaWduKHBhc3NpbmcsIF9gWyR7cGFzc2luZ30sICR7aX1dYClcbiAgICAgICAgICAgIC5lbHNlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGdlbi5pZihzY2hWYWxpZCwgKCkgPT4ge1xuICAgICAgICAgIGdlbi5hc3NpZ24odmFsaWQsIHRydWUpXG4gICAgICAgICAgZ2VuLmFzc2lnbihwYXNzaW5nLCBpKVxuICAgICAgICAgIGlmIChzY2hDeHQpIGN4dC5tZXJnZUV2YWx1YXRlZChzY2hDeHQsIE5hbWUpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge0NvZGVLZXl3b3JkRGVmaW5pdGlvbiwgQW55U2NoZW1hfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7YWx3YXlzVmFsaWRTY2hlbWF9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5jb25zdCBkZWY6IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogXCJhbGxPZlwiLFxuICBzY2hlbWFUeXBlOiBcImFycmF5XCIsXG4gIGNvZGUoY3h0OiBLZXl3b3JkQ3h0KSB7XG4gICAgY29uc3Qge2dlbiwgc2NoZW1hLCBpdH0gPSBjeHRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkgdGhyb3cgbmV3IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpXG4gICAgc2NoZW1hLmZvckVhY2goKHNjaDogQW55U2NoZW1hLCBpOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoKSkgcmV0dXJuXG4gICAgICBjb25zdCBzY2hDeHQgPSBjeHQuc3Vic2NoZW1hKHtrZXl3b3JkOiBcImFsbE9mXCIsIHNjaGVtYVByb3A6IGl9LCB2YWxpZClcbiAgICAgIGN4dC5vayh2YWxpZClcbiAgICAgIGN4dC5tZXJnZUV2YWx1YXRlZChzY2hDeHQpXG4gICAgfSlcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAiaW1wb3J0IHR5cGUge1xuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEVycm9yT2JqZWN0LFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBBbnlTY2hlbWEsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgdHlwZSB7U2NoZW1hT2JqQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZVwiXG5pbXBvcnQgdHlwZSB7S2V5d29yZEN4dH0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvdmFsaWRhdGVcIlxuaW1wb3J0IHtfLCBzdHIsIG5vdCwgTmFtZX0gZnJvbSBcIi4uLy4uL2NvbXBpbGUvY29kZWdlblwiXG5pbXBvcnQge2Fsd2F5c1ZhbGlkU2NoZW1hLCBjaGVja1N0cmljdE1vZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBJZktleXdvcmRFcnJvciA9IEVycm9yT2JqZWN0PFwiaWZcIiwge2ZhaWxpbmdLZXl3b3JkOiBzdHJpbmd9LCBBbnlTY2hlbWE+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe3BhcmFtc30pID0+IHN0cmBtdXN0IG1hdGNoIFwiJHtwYXJhbXMuaWZDbGF1c2V9XCIgc2NoZW1hYCxcbiAgcGFyYW1zOiAoe3BhcmFtc30pID0+IF9ge2ZhaWxpbmdLZXl3b3JkOiAke3BhcmFtcy5pZkNsYXVzZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiaWZcIixcbiAgc2NoZW1hVHlwZTogW1wib2JqZWN0XCIsIFwiYm9vbGVhblwiXSxcbiAgdHJhY2tFcnJvcnM6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCkge1xuICAgIGNvbnN0IHtnZW4sIHBhcmVudFNjaGVtYSwgaXR9ID0gY3h0XG4gICAgaWYgKHBhcmVudFNjaGVtYS50aGVuID09PSB1bmRlZmluZWQgJiYgcGFyZW50U2NoZW1hLmVsc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hlY2tTdHJpY3RNb2RlKGl0LCAnXCJpZlwiIHdpdGhvdXQgXCJ0aGVuXCIgYW5kIFwiZWxzZVwiIGlzIGlnbm9yZWQnKVxuICAgIH1cbiAgICBjb25zdCBoYXNUaGVuID0gaGFzU2NoZW1hKGl0LCBcInRoZW5cIilcbiAgICBjb25zdCBoYXNFbHNlID0gaGFzU2NoZW1hKGl0LCBcImVsc2VcIilcbiAgICBpZiAoIWhhc1RoZW4gJiYgIWhhc0Vsc2UpIHJldHVyblxuXG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubGV0KFwidmFsaWRcIiwgdHJ1ZSlcbiAgICBjb25zdCBzY2hWYWxpZCA9IGdlbi5uYW1lKFwiX3ZhbGlkXCIpXG4gICAgdmFsaWRhdGVJZigpXG4gICAgY3h0LnJlc2V0KClcblxuICAgIGlmIChoYXNUaGVuICYmIGhhc0Vsc2UpIHtcbiAgICAgIGNvbnN0IGlmQ2xhdXNlID0gZ2VuLmxldChcImlmQ2xhdXNlXCIpXG4gICAgICBjeHQuc2V0UGFyYW1zKHtpZkNsYXVzZX0pXG4gICAgICBnZW4uaWYoc2NoVmFsaWQsIHZhbGlkYXRlQ2xhdXNlKFwidGhlblwiLCBpZkNsYXVzZSksIHZhbGlkYXRlQ2xhdXNlKFwiZWxzZVwiLCBpZkNsYXVzZSkpXG4gICAgfSBlbHNlIGlmIChoYXNUaGVuKSB7XG4gICAgICBnZW4uaWYoc2NoVmFsaWQsIHZhbGlkYXRlQ2xhdXNlKFwidGhlblwiKSlcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuLmlmKG5vdChzY2hWYWxpZCksIHZhbGlkYXRlQ2xhdXNlKFwiZWxzZVwiKSlcbiAgICB9XG5cbiAgICBjeHQucGFzcyh2YWxpZCwgKCkgPT4gY3h0LmVycm9yKHRydWUpKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVJZigpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHNjaEN4dCA9IGN4dC5zdWJzY2hlbWEoXG4gICAgICAgIHtcbiAgICAgICAgICBrZXl3b3JkOiBcImlmXCIsXG4gICAgICAgICAgY29tcG9zaXRlUnVsZTogdHJ1ZSxcbiAgICAgICAgICBjcmVhdGVFcnJvcnM6IGZhbHNlLFxuICAgICAgICAgIGFsbEVycm9yczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHNjaFZhbGlkXG4gICAgICApXG4gICAgICBjeHQubWVyZ2VFdmFsdWF0ZWQoc2NoQ3h0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlQ2xhdXNlKGtleXdvcmQ6IHN0cmluZywgaWZDbGF1c2U/OiBOYW1lKTogKCkgPT4gdm9pZCB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hDeHQgPSBjeHQuc3Vic2NoZW1hKHtrZXl3b3JkfSwgc2NoVmFsaWQpXG4gICAgICAgIGdlbi5hc3NpZ24odmFsaWQsIHNjaFZhbGlkKVxuICAgICAgICBjeHQubWVyZ2VWYWxpZEV2YWx1YXRlZChzY2hDeHQsIHZhbGlkKVxuICAgICAgICBpZiAoaWZDbGF1c2UpIGdlbi5hc3NpZ24oaWZDbGF1c2UsIF9gJHtrZXl3b3JkfWApXG4gICAgICAgIGVsc2UgY3h0LnNldFBhcmFtcyh7aWZDbGF1c2U6IGtleXdvcmR9KVxuICAgICAgfVxuICAgIH1cbiAgfSxcbn1cblxuZnVuY3Rpb24gaGFzU2NoZW1hKGl0OiBTY2hlbWFPYmpDeHQsIGtleXdvcmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzY2hlbWEgPSBpdC5zY2hlbWFba2V5d29yZF1cbiAgcmV0dXJuIHNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICFhbHdheXNWYWxpZFNjaGVtYShpdCwgc2NoZW1hKVxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Q29kZUtleXdvcmREZWZpbml0aW9ufSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHR5cGUge0tleXdvcmRDeHR9IGZyb20gXCIuLi8uLi9jb21waWxlL3ZhbGlkYXRlXCJcbmltcG9ydCB7Y2hlY2tTdHJpY3RNb2RlfSBmcm9tIFwiLi4vLi4vY29tcGlsZS91dGlsXCJcblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFtcInRoZW5cIiwgXCJlbHNlXCJdLFxuICBzY2hlbWFUeXBlOiBbXCJvYmplY3RcIiwgXCJib29sZWFuXCJdLFxuICBjb2RlKHtrZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGl0fTogS2V5d29yZEN4dCkge1xuICAgIGlmIChwYXJlbnRTY2hlbWEuaWYgPT09IHVuZGVmaW5lZCkgY2hlY2tTdHJpY3RNb2RlKGl0LCBgXCIke2tleXdvcmR9XCIgd2l0aG91dCBcImlmXCIgaXMgaWdub3JlZGApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZlxuIiwgImltcG9ydCB0eXBlIHtFcnJvck5vUGFyYW1zLCBWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IGFkZGl0aW9uYWxJdGVtcywge0FkZGl0aW9uYWxJdGVtc0Vycm9yfSBmcm9tIFwiLi9hZGRpdGlvbmFsSXRlbXNcIlxuaW1wb3J0IHByZWZpeEl0ZW1zIGZyb20gXCIuL3ByZWZpeEl0ZW1zXCJcbmltcG9ydCBpdGVtcyBmcm9tIFwiLi9pdGVtc1wiXG5pbXBvcnQgaXRlbXMyMDIwLCB7SXRlbXNFcnJvcn0gZnJvbSBcIi4vaXRlbXMyMDIwXCJcbmltcG9ydCBjb250YWlucywge0NvbnRhaW5zRXJyb3J9IGZyb20gXCIuL2NvbnRhaW5zXCJcbmltcG9ydCBkZXBlbmRlbmNpZXMsIHtEZXBlbmRlbmNpZXNFcnJvcn0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzXCJcbmltcG9ydCBwcm9wZXJ0eU5hbWVzLCB7UHJvcGVydHlOYW1lc0Vycm9yfSBmcm9tIFwiLi9wcm9wZXJ0eU5hbWVzXCJcbmltcG9ydCBhZGRpdGlvbmFsUHJvcGVydGllcywge0FkZGl0aW9uYWxQcm9wZXJ0aWVzRXJyb3J9IGZyb20gXCIuL2FkZGl0aW9uYWxQcm9wZXJ0aWVzXCJcbmltcG9ydCBwcm9wZXJ0aWVzIGZyb20gXCIuL3Byb3BlcnRpZXNcIlxuaW1wb3J0IHBhdHRlcm5Qcm9wZXJ0aWVzIGZyb20gXCIuL3BhdHRlcm5Qcm9wZXJ0aWVzXCJcbmltcG9ydCBub3RLZXl3b3JkLCB7Tm90S2V5d29yZEVycm9yfSBmcm9tIFwiLi9ub3RcIlxuaW1wb3J0IGFueU9mLCB7QW55T2ZFcnJvcn0gZnJvbSBcIi4vYW55T2ZcIlxuaW1wb3J0IG9uZU9mLCB7T25lT2ZFcnJvcn0gZnJvbSBcIi4vb25lT2ZcIlxuaW1wb3J0IGFsbE9mIGZyb20gXCIuL2FsbE9mXCJcbmltcG9ydCBpZktleXdvcmQsIHtJZktleXdvcmRFcnJvcn0gZnJvbSBcIi4vaWZcIlxuaW1wb3J0IHRoZW5FbHNlIGZyb20gXCIuL3RoZW5FbHNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QXBwbGljYXRvcihkcmFmdDIwMjAgPSBmYWxzZSk6IFZvY2FidWxhcnkge1xuICBjb25zdCBhcHBsaWNhdG9yID0gW1xuICAgIC8vIGFueVxuICAgIG5vdEtleXdvcmQsXG4gICAgYW55T2YsXG4gICAgb25lT2YsXG4gICAgYWxsT2YsXG4gICAgaWZLZXl3b3JkLFxuICAgIHRoZW5FbHNlLFxuICAgIC8vIG9iamVjdFxuICAgIHByb3BlcnR5TmFtZXMsXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXMsXG4gICAgZGVwZW5kZW5jaWVzLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcGF0dGVyblByb3BlcnRpZXMsXG4gIF1cbiAgLy8gYXJyYXlcbiAgaWYgKGRyYWZ0MjAyMCkgYXBwbGljYXRvci5wdXNoKHByZWZpeEl0ZW1zLCBpdGVtczIwMjApXG4gIGVsc2UgYXBwbGljYXRvci5wdXNoKGFkZGl0aW9uYWxJdGVtcywgaXRlbXMpXG4gIGFwcGxpY2F0b3IucHVzaChjb250YWlucylcbiAgcmV0dXJuIGFwcGxpY2F0b3Jcbn1cblxuZXhwb3J0IHR5cGUgQXBwbGljYXRvcktleXdvcmRFcnJvciA9XG4gIHwgRXJyb3JOb1BhcmFtczxcImZhbHNlIHNjaGVtYVwiPlxuICB8IEFkZGl0aW9uYWxJdGVtc0Vycm9yXG4gIHwgSXRlbXNFcnJvclxuICB8IENvbnRhaW5zRXJyb3JcbiAgfCBBZGRpdGlvbmFsUHJvcGVydGllc0Vycm9yXG4gIHwgRGVwZW5kZW5jaWVzRXJyb3JcbiAgfCBJZktleXdvcmRFcnJvclxuICB8IEFueU9mRXJyb3JcbiAgfCBPbmVPZkVycm9yXG4gIHwgTm90S2V5d29yZEVycm9yXG4gIHwgUHJvcGVydHlOYW1lc0Vycm9yXG4iLCAiaW1wb3J0IHR5cGUge1xuICBBZGRlZEZvcm1hdCxcbiAgRm9ybWF0VmFsaWRhdG9yLFxuICBBc3luY0Zvcm1hdFZhbGlkYXRvcixcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBLZXl3b3JkRXJyb3JEZWZpbml0aW9uLFxuICBFcnJvck9iamVjdCxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIHN0ciwgbmlsLCBvciwgQ29kZSwgZ2V0UHJvcGVydHksIHJlZ2V4cENvZGV9IGZyb20gXCIuLi8uLi9jb21waWxlL2NvZGVnZW5cIlxuXG50eXBlIEZvcm1hdFZhbGlkYXRlID1cbiAgfCBGb3JtYXRWYWxpZGF0b3I8c3RyaW5nPlxuICB8IEZvcm1hdFZhbGlkYXRvcjxudW1iZXI+XG4gIHwgQXN5bmNGb3JtYXRWYWxpZGF0b3I8c3RyaW5nPlxuICB8IEFzeW5jRm9ybWF0VmFsaWRhdG9yPG51bWJlcj5cbiAgfCBSZWdFeHBcbiAgfCBzdHJpbmdcbiAgfCB0cnVlXG5cbmV4cG9ydCB0eXBlIEZvcm1hdEVycm9yID0gRXJyb3JPYmplY3Q8XCJmb3JtYXRcIiwge2Zvcm1hdDogc3RyaW5nfSwgc3RyaW5nIHwgeyRkYXRhOiBzdHJpbmd9PlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtzY2hlbWFDb2RlfSkgPT4gc3RyYG11c3QgbWF0Y2ggZm9ybWF0IFwiJHtzY2hlbWFDb2RlfVwiYCxcbiAgcGFyYW1zOiAoe3NjaGVtYUNvZGV9KSA9PiBfYHtmb3JtYXQ6ICR7c2NoZW1hQ29kZX19YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiZm9ybWF0XCIsXG4gIHR5cGU6IFtcIm51bWJlclwiLCBcInN0cmluZ1wiXSxcbiAgc2NoZW1hVHlwZTogXCJzdHJpbmdcIixcbiAgJGRhdGE6IHRydWUsXG4gIGVycm9yLFxuICBjb2RlKGN4dDogS2V5d29yZEN4dCwgcnVsZVR5cGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCAkZGF0YSwgc2NoZW1hLCBzY2hlbWFDb2RlLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7b3B0cywgZXJyU2NoZW1hUGF0aCwgc2NoZW1hRW52LCBzZWxmfSA9IGl0XG4gICAgaWYgKCFvcHRzLnZhbGlkYXRlRm9ybWF0cykgcmV0dXJuXG5cbiAgICBpZiAoJGRhdGEpIHZhbGlkYXRlJERhdGFGb3JtYXQoKVxuICAgIGVsc2UgdmFsaWRhdGVGb3JtYXQoKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUkRGF0YUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZtdHMgPSBnZW4uc2NvcGVWYWx1ZShcImZvcm1hdHNcIiwge1xuICAgICAgICByZWY6IHNlbGYuZm9ybWF0cyxcbiAgICAgICAgY29kZTogb3B0cy5jb2RlLmZvcm1hdHMsXG4gICAgICB9KVxuICAgICAgY29uc3QgZkRlZiA9IGdlbi5jb25zdChcImZEZWZcIiwgX2Ake2ZtdHN9WyR7c2NoZW1hQ29kZX1dYClcbiAgICAgIGNvbnN0IGZUeXBlID0gZ2VuLmxldChcImZUeXBlXCIpXG4gICAgICBjb25zdCBmb3JtYXQgPSBnZW4ubGV0KFwiZm9ybWF0XCIpXG4gICAgICAvLyBUT0RPIHNpbXBsaWZ5XG4gICAgICBnZW4uaWYoXG4gICAgICAgIF9gdHlwZW9mICR7ZkRlZn0gPT0gXCJvYmplY3RcIiAmJiAhKCR7ZkRlZn0gaW5zdGFuY2VvZiBSZWdFeHApYCxcbiAgICAgICAgKCkgPT4gZ2VuLmFzc2lnbihmVHlwZSwgX2Ake2ZEZWZ9LnR5cGUgfHwgXCJzdHJpbmdcImApLmFzc2lnbihmb3JtYXQsIF9gJHtmRGVmfS52YWxpZGF0ZWApLFxuICAgICAgICAoKSA9PiBnZW4uYXNzaWduKGZUeXBlLCBfYFwic3RyaW5nXCJgKS5hc3NpZ24oZm9ybWF0LCBmRGVmKVxuICAgICAgKVxuICAgICAgY3h0LmZhaWwkZGF0YShvcih1bmtub3duRm10KCksIGludmFsaWRGbXQoKSkpXG5cbiAgICAgIGZ1bmN0aW9uIHVua25vd25GbXQoKTogQ29kZSB7XG4gICAgICAgIGlmIChvcHRzLnN0cmljdFNjaGVtYSA9PT0gZmFsc2UpIHJldHVybiBuaWxcbiAgICAgICAgcmV0dXJuIF9gJHtzY2hlbWFDb2RlfSAmJiAhJHtmb3JtYXR9YFxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbnZhbGlkRm10KCk6IENvZGUge1xuICAgICAgICBjb25zdCBjYWxsRm9ybWF0ID0gc2NoZW1hRW52LiRhc3luY1xuICAgICAgICAgID8gX2AoJHtmRGVmfS5hc3luYyA/IGF3YWl0ICR7Zm9ybWF0fSgke2RhdGF9KSA6ICR7Zm9ybWF0fSgke2RhdGF9KSlgXG4gICAgICAgICAgOiBfYCR7Zm9ybWF0fSgke2RhdGF9KWBcbiAgICAgICAgY29uc3QgdmFsaWREYXRhID0gX2AodHlwZW9mICR7Zm9ybWF0fSA9PSBcImZ1bmN0aW9uXCIgPyAke2NhbGxGb3JtYXR9IDogJHtmb3JtYXR9LnRlc3QoJHtkYXRhfSkpYFxuICAgICAgICByZXR1cm4gX2Ake2Zvcm1hdH0gJiYgJHtmb3JtYXR9ICE9PSB0cnVlICYmICR7ZlR5cGV9ID09PSAke3J1bGVUeXBlfSAmJiAhJHt2YWxpZERhdGF9YFxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgY29uc3QgZm9ybWF0RGVmOiBBZGRlZEZvcm1hdCB8IHVuZGVmaW5lZCA9IHNlbGYuZm9ybWF0c1tzY2hlbWFdXG4gICAgICBpZiAoIWZvcm1hdERlZikge1xuICAgICAgICB1bmtub3duRm9ybWF0KClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoZm9ybWF0RGVmID09PSB0cnVlKSByZXR1cm5cbiAgICAgIGNvbnN0IFtmbXRUeXBlLCBmb3JtYXQsIGZtdFJlZl0gPSBnZXRGb3JtYXQoZm9ybWF0RGVmKVxuICAgICAgaWYgKGZtdFR5cGUgPT09IHJ1bGVUeXBlKSBjeHQucGFzcyh2YWxpZENvbmRpdGlvbigpKVxuXG4gICAgICBmdW5jdGlvbiB1bmtub3duRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICBpZiAob3B0cy5zdHJpY3RTY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIud2Fybih1bmtub3duTXNnKCkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHVua25vd25Nc2coKSlcblxuICAgICAgICBmdW5jdGlvbiB1bmtub3duTXNnKCk6IHN0cmluZyB7XG4gICAgICAgICAgcmV0dXJuIGB1bmtub3duIGZvcm1hdCBcIiR7c2NoZW1hIGFzIHN0cmluZ31cIiBpZ25vcmVkIGluIHNjaGVtYSBhdCBwYXRoIFwiJHtlcnJTY2hlbWFQYXRofVwiYFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldEZvcm1hdChmbXREZWY6IEFkZGVkRm9ybWF0KTogW3N0cmluZywgRm9ybWF0VmFsaWRhdGUsIENvZGVdIHtcbiAgICAgICAgY29uc3QgY29kZSA9XG4gICAgICAgICAgZm10RGVmIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICAgICAgICA/IHJlZ2V4cENvZGUoZm10RGVmKVxuICAgICAgICAgICAgOiBvcHRzLmNvZGUuZm9ybWF0c1xuICAgICAgICAgICAgPyBfYCR7b3B0cy5jb2RlLmZvcm1hdHN9JHtnZXRQcm9wZXJ0eShzY2hlbWEpfWBcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGZtdCA9IGdlbi5zY29wZVZhbHVlKFwiZm9ybWF0c1wiLCB7a2V5OiBzY2hlbWEsIHJlZjogZm10RGVmLCBjb2RlfSlcbiAgICAgICAgaWYgKHR5cGVvZiBmbXREZWYgPT0gXCJvYmplY3RcIiAmJiAhKGZtdERlZiBpbnN0YW5jZW9mIFJlZ0V4cCkpIHtcbiAgICAgICAgICByZXR1cm4gW2ZtdERlZi50eXBlIHx8IFwic3RyaW5nXCIsIGZtdERlZi52YWxpZGF0ZSwgX2Ake2ZtdH0udmFsaWRhdGVgXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcInN0cmluZ1wiLCBmbXREZWYsIGZtdF1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdmFsaWRDb25kaXRpb24oKTogQ29kZSB7XG4gICAgICAgIGlmICh0eXBlb2YgZm9ybWF0RGVmID09IFwib2JqZWN0XCIgJiYgIShmb3JtYXREZWYgaW5zdGFuY2VvZiBSZWdFeHApICYmIGZvcm1hdERlZi5hc3luYykge1xuICAgICAgICAgIGlmICghc2NoZW1hRW52LiRhc3luYykgdGhyb3cgbmV3IEVycm9yKFwiYXN5bmMgZm9ybWF0IGluIHN5bmMgc2NoZW1hXCIpXG4gICAgICAgICAgcmV0dXJuIF9gYXdhaXQgJHtmbXRSZWZ9KCR7ZGF0YX0pYFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlb2YgZm9ybWF0ID09IFwiZnVuY3Rpb25cIiA/IF9gJHtmbXRSZWZ9KCR7ZGF0YX0pYCA6IF9gJHtmbXRSZWZ9LnRlc3QoJHtkYXRhfSlgXG4gICAgICB9XG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZcbiIsICJpbXBvcnQgdHlwZSB7Vm9jYWJ1bGFyeX0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCBmb3JtYXRLZXl3b3JkIGZyb20gXCIuL2Zvcm1hdFwiXG5cbmNvbnN0IGZvcm1hdDogVm9jYWJ1bGFyeSA9IFtmb3JtYXRLZXl3b3JkXVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRcbiIsICJpbXBvcnQgdHlwZSB7Vm9jYWJ1bGFyeX0gZnJvbSBcIi4uL3R5cGVzXCJcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhVm9jYWJ1bGFyeTogVm9jYWJ1bGFyeSA9IFtcbiAgXCJ0aXRsZVwiLFxuICBcImRlc2NyaXB0aW9uXCIsXG4gIFwiZGVmYXVsdFwiLFxuICBcImRlcHJlY2F0ZWRcIixcbiAgXCJyZWFkT25seVwiLFxuICBcIndyaXRlT25seVwiLFxuICBcImV4YW1wbGVzXCIsXG5dXG5cbmV4cG9ydCBjb25zdCBjb250ZW50Vm9jYWJ1bGFyeTogVm9jYWJ1bGFyeSA9IFtcbiAgXCJjb250ZW50TWVkaWFUeXBlXCIsXG4gIFwiY29udGVudEVuY29kaW5nXCIsXG4gIFwiY29udGVudFNjaGVtYVwiLFxuXVxuIiwgImltcG9ydCB0eXBlIHtWb2NhYnVsYXJ5fSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IGNvcmVWb2NhYnVsYXJ5IGZyb20gXCIuL2NvcmVcIlxuaW1wb3J0IHZhbGlkYXRpb25Wb2NhYnVsYXJ5IGZyb20gXCIuL3ZhbGlkYXRpb25cIlxuaW1wb3J0IGdldEFwcGxpY2F0b3JWb2NhYnVsYXJ5IGZyb20gXCIuL2FwcGxpY2F0b3JcIlxuaW1wb3J0IGZvcm1hdFZvY2FidWxhcnkgZnJvbSBcIi4vZm9ybWF0XCJcbmltcG9ydCB7bWV0YWRhdGFWb2NhYnVsYXJ5LCBjb250ZW50Vm9jYWJ1bGFyeX0gZnJvbSBcIi4vbWV0YWRhdGFcIlxuXG5jb25zdCBkcmFmdDdWb2NhYnVsYXJpZXM6IFZvY2FidWxhcnlbXSA9IFtcbiAgY29yZVZvY2FidWxhcnksXG4gIHZhbGlkYXRpb25Wb2NhYnVsYXJ5LFxuICBnZXRBcHBsaWNhdG9yVm9jYWJ1bGFyeSgpLFxuICBmb3JtYXRWb2NhYnVsYXJ5LFxuICBtZXRhZGF0YVZvY2FidWxhcnksXG4gIGNvbnRlbnRWb2NhYnVsYXJ5LFxuXVxuXG5leHBvcnQgZGVmYXVsdCBkcmFmdDdWb2NhYnVsYXJpZXNcbiIsICJpbXBvcnQgdHlwZSB7RXJyb3JPYmplY3R9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5cbmV4cG9ydCBlbnVtIERpc2NyRXJyb3Ige1xuICBUYWcgPSBcInRhZ1wiLFxuICBNYXBwaW5nID0gXCJtYXBwaW5nXCIsXG59XG5cbmV4cG9ydCB0eXBlIERpc2NyRXJyb3JPYmo8RSBleHRlbmRzIERpc2NyRXJyb3I+ID0gRXJyb3JPYmplY3Q8XG4gIFwiZGlzY3JpbWluYXRvclwiLFxuICB7ZXJyb3I6IEU7IHRhZzogc3RyaW5nOyB0YWdWYWx1ZTogdW5rbm93bn0sXG4gIHN0cmluZ1xuPlxuIiwgImltcG9ydCB0eXBlIHtDb2RlS2V5d29yZERlZmluaXRpb24sIEFueVNjaGVtYU9iamVjdCwgS2V5d29yZEVycm9yRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB0eXBlIHtLZXl3b3JkQ3h0fSBmcm9tIFwiLi4vLi4vY29tcGlsZS92YWxpZGF0ZVwiXG5pbXBvcnQge18sIGdldFByb3BlcnR5LCBOYW1lfSBmcm9tIFwiLi4vLi4vY29tcGlsZS9jb2RlZ2VuXCJcbmltcG9ydCB7RGlzY3JFcnJvciwgRGlzY3JFcnJvck9ian0gZnJvbSBcIi4uL2Rpc2NyaW1pbmF0b3IvdHlwZXNcIlxuaW1wb3J0IHtyZXNvbHZlUmVmLCBTY2hlbWFFbnZ9IGZyb20gXCIuLi8uLi9jb21waWxlXCJcbmltcG9ydCBNaXNzaW5nUmVmRXJyb3IgZnJvbSBcIi4uLy4uL2NvbXBpbGUvcmVmX2Vycm9yXCJcbmltcG9ydCB7c2NoZW1hSGFzUnVsZXNCdXRSZWZ9IGZyb20gXCIuLi8uLi9jb21waWxlL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBEaXNjcmltaW5hdG9yRXJyb3IgPSBEaXNjckVycm9yT2JqPERpc2NyRXJyb3IuVGFnPiB8IERpc2NyRXJyb3JPYmo8RGlzY3JFcnJvci5NYXBwaW5nPlxuXG5jb25zdCBlcnJvcjogS2V5d29yZEVycm9yRGVmaW5pdGlvbiA9IHtcbiAgbWVzc2FnZTogKHtwYXJhbXM6IHtkaXNjckVycm9yLCB0YWdOYW1lfX0pID0+XG4gICAgZGlzY3JFcnJvciA9PT0gRGlzY3JFcnJvci5UYWdcbiAgICAgID8gYHRhZyBcIiR7dGFnTmFtZX1cIiBtdXN0IGJlIHN0cmluZ2BcbiAgICAgIDogYHZhbHVlIG9mIHRhZyBcIiR7dGFnTmFtZX1cIiBtdXN0IGJlIGluIG9uZU9mYCxcbiAgcGFyYW1zOiAoe3BhcmFtczoge2Rpc2NyRXJyb3IsIHRhZywgdGFnTmFtZX19KSA9PlxuICAgIF9ge2Vycm9yOiAke2Rpc2NyRXJyb3J9LCB0YWc6ICR7dGFnTmFtZX0sIHRhZ1ZhbHVlOiAke3RhZ319YCxcbn1cblxuY29uc3QgZGVmOiBDb2RlS2V5d29yZERlZmluaXRpb24gPSB7XG4gIGtleXdvcmQ6IFwiZGlzY3JpbWluYXRvclwiLFxuICB0eXBlOiBcIm9iamVjdFwiLFxuICBzY2hlbWFUeXBlOiBcIm9iamVjdFwiLFxuICBlcnJvcixcbiAgY29kZShjeHQ6IEtleXdvcmRDeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXR9ID0gY3h0XG4gICAgY29uc3Qge29uZU9mfSA9IHBhcmVudFNjaGVtYVxuICAgIGlmICghaXQub3B0cy5kaXNjcmltaW5hdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXNjcmltaW5hdG9yOiByZXF1aXJlcyBkaXNjcmltaW5hdG9yIG9wdGlvblwiKVxuICAgIH1cbiAgICBjb25zdCB0YWdOYW1lID0gc2NoZW1hLnByb3BlcnR5TmFtZVxuICAgIGlmICh0eXBlb2YgdGFnTmFtZSAhPSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJkaXNjcmltaW5hdG9yOiByZXF1aXJlcyBwcm9wZXJ0eU5hbWVcIilcbiAgICBpZiAoc2NoZW1hLm1hcHBpbmcpIHRocm93IG5ldyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IG1hcHBpbmcgaXMgbm90IHN1cHBvcnRlZFwiKVxuICAgIGlmICghb25lT2YpIHRocm93IG5ldyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIG9uZU9mIGtleXdvcmRcIilcbiAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiLCBmYWxzZSlcbiAgICBjb25zdCB0YWcgPSBnZW4uY29uc3QoXCJ0YWdcIiwgX2Ake2RhdGF9JHtnZXRQcm9wZXJ0eSh0YWdOYW1lKX1gKVxuICAgIGdlbi5pZihcbiAgICAgIF9gdHlwZW9mICR7dGFnfSA9PSBcInN0cmluZ1wiYCxcbiAgICAgICgpID0+IHZhbGlkYXRlTWFwcGluZygpLFxuICAgICAgKCkgPT4gY3h0LmVycm9yKGZhbHNlLCB7ZGlzY3JFcnJvcjogRGlzY3JFcnJvci5UYWcsIHRhZywgdGFnTmFtZX0pXG4gICAgKVxuICAgIGN4dC5vayh2YWxpZClcblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlTWFwcGluZygpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1hcHBpbmcgPSBnZXRNYXBwaW5nKClcbiAgICAgIGdlbi5pZihmYWxzZSlcbiAgICAgIGZvciAoY29uc3QgdGFnVmFsdWUgaW4gbWFwcGluZykge1xuICAgICAgICBnZW4uZWxzZUlmKF9gJHt0YWd9ID09PSAke3RhZ1ZhbHVlfWApXG4gICAgICAgIGdlbi5hc3NpZ24odmFsaWQsIGFwcGx5VGFnU2NoZW1hKG1hcHBpbmdbdGFnVmFsdWVdKSlcbiAgICAgIH1cbiAgICAgIGdlbi5lbHNlKClcbiAgICAgIGN4dC5lcnJvcihmYWxzZSwge2Rpc2NyRXJyb3I6IERpc2NyRXJyb3IuTWFwcGluZywgdGFnLCB0YWdOYW1lfSlcbiAgICAgIGdlbi5lbmRJZigpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHlUYWdTY2hlbWEoc2NoZW1hUHJvcD86IG51bWJlcik6IE5hbWUge1xuICAgICAgY29uc3QgX3ZhbGlkID0gZ2VuLm5hbWUoXCJ2YWxpZFwiKVxuICAgICAgY29uc3Qgc2NoQ3h0ID0gY3h0LnN1YnNjaGVtYSh7a2V5d29yZDogXCJvbmVPZlwiLCBzY2hlbWFQcm9wfSwgX3ZhbGlkKVxuICAgICAgY3h0Lm1lcmdlRXZhbHVhdGVkKHNjaEN4dCwgTmFtZSlcbiAgICAgIHJldHVybiBfdmFsaWRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXBwaW5nKCk6IHtbVCBpbiBzdHJpbmddPzogbnVtYmVyfSB7XG4gICAgICBjb25zdCBvbmVPZk1hcHBpbmc6IHtbVCBpbiBzdHJpbmddPzogbnVtYmVyfSA9IHt9XG4gICAgICBjb25zdCB0b3BSZXF1aXJlZCA9IGhhc1JlcXVpcmVkKHBhcmVudFNjaGVtYSlcbiAgICAgIGxldCB0YWdSZXF1aXJlZCA9IHRydWVcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb25lT2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHNjaCA9IG9uZU9mW2ldXG4gICAgICAgIGlmIChzY2g/LiRyZWYgJiYgIXNjaGVtYUhhc1J1bGVzQnV0UmVmKHNjaCwgaXQuc2VsZi5SVUxFUykpIHtcbiAgICAgICAgICBjb25zdCByZWYgPSBzY2guJHJlZlxuICAgICAgICAgIHNjaCA9IHJlc29sdmVSZWYuY2FsbChpdC5zZWxmLCBpdC5zY2hlbWFFbnYucm9vdCwgaXQuYmFzZUlkLCByZWYpXG4gICAgICAgICAgaWYgKHNjaCBpbnN0YW5jZW9mIFNjaGVtYUVudikgc2NoID0gc2NoLnNjaGVtYVxuICAgICAgICAgIGlmIChzY2ggPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IE1pc3NpbmdSZWZFcnJvcihpdC5vcHRzLnVyaVJlc29sdmVyLCBpdC5iYXNlSWQsIHJlZilcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wU2NoID0gc2NoPy5wcm9wZXJ0aWVzPy5bdGFnTmFtZV1cbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wU2NoICE9IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgZGlzY3JpbWluYXRvcjogb25lT2Ygc3Vic2NoZW1hcyAob3IgcmVmZXJlbmNlZCBzY2hlbWFzKSBtdXN0IGhhdmUgXCJwcm9wZXJ0aWVzLyR7dGFnTmFtZX1cImBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgdGFnUmVxdWlyZWQgPSB0YWdSZXF1aXJlZCAmJiAodG9wUmVxdWlyZWQgfHwgaGFzUmVxdWlyZWQoc2NoKSlcbiAgICAgICAgYWRkTWFwcGluZ3MocHJvcFNjaCwgaSlcbiAgICAgIH1cbiAgICAgIGlmICghdGFnUmVxdWlyZWQpIHRocm93IG5ldyBFcnJvcihgZGlzY3JpbWluYXRvcjogXCIke3RhZ05hbWV9XCIgbXVzdCBiZSByZXF1aXJlZGApXG4gICAgICByZXR1cm4gb25lT2ZNYXBwaW5nXG5cbiAgICAgIGZ1bmN0aW9uIGhhc1JlcXVpcmVkKHtyZXF1aXJlZH06IEFueVNjaGVtYU9iamVjdCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyZXF1aXJlZCkgJiYgcmVxdWlyZWQuaW5jbHVkZXModGFnTmFtZSlcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gYWRkTWFwcGluZ3Moc2NoOiBBbnlTY2hlbWFPYmplY3QsIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoc2NoLmNvbnN0KSB7XG4gICAgICAgICAgYWRkTWFwcGluZyhzY2guY29uc3QsIGkpXG4gICAgICAgIH0gZWxzZSBpZiAoc2NoLmVudW0pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZ1ZhbHVlIG9mIHNjaC5lbnVtKSB7XG4gICAgICAgICAgICBhZGRNYXBwaW5nKHRhZ1ZhbHVlLCBpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRpc2NyaW1pbmF0b3I6IFwicHJvcGVydGllcy8ke3RhZ05hbWV9XCIgbXVzdCBoYXZlIFwiY29uc3RcIiBvciBcImVudW1cImApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gYWRkTWFwcGluZyh0YWdWYWx1ZTogdW5rbm93biwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdGFnVmFsdWUgIT0gXCJzdHJpbmdcIiB8fCB0YWdWYWx1ZSBpbiBvbmVPZk1hcHBpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRpc2NyaW1pbmF0b3I6IFwiJHt0YWdOYW1lfVwiIHZhbHVlcyBtdXN0IGJlIHVuaXF1ZSBzdHJpbmdzYClcbiAgICAgICAgfVxuICAgICAgICBvbmVPZk1hcHBpbmdbdGFnVmFsdWVdID0gaVxuICAgICAgfVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmXG4iLCAie1xuICBcIiRzY2hlbWFcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIixcbiAgXCIkaWRcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIixcbiAgXCJ0aXRsZVwiOiBcIkNvcmUgc2NoZW1hIG1ldGEtc2NoZW1hXCIsXG4gIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgIFwic2NoZW1hQXJyYXlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgIFwiaXRlbXNcIjoge1wiJHJlZlwiOiBcIiNcIn1cbiAgICB9LFxuICAgIFwibm9uTmVnYXRpdmVJbnRlZ2VyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImludGVnZXJcIixcbiAgICAgIFwibWluaW11bVwiOiAwXG4gICAgfSxcbiAgICBcIm5vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwXCI6IHtcbiAgICAgIFwiYWxsT2ZcIjogW3tcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlclwifSwge1wiZGVmYXVsdFwiOiAwfV1cbiAgICB9LFxuICAgIFwic2ltcGxlVHlwZXNcIjoge1xuICAgICAgXCJlbnVtXCI6IFtcImFycmF5XCIsIFwiYm9vbGVhblwiLCBcImludGVnZXJcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwic3RyaW5nXCJdXG4gICAgfSxcbiAgICBcInN0cmluZ0FycmF5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcInR5cGVcIjogXCJzdHJpbmdcIn0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWUsXG4gICAgICBcImRlZmF1bHRcIjogW11cbiAgICB9XG4gIH0sXG4gIFwidHlwZVwiOiBbXCJvYmplY3RcIiwgXCJib29sZWFuXCJdLFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgIFwiJGlkXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJmb3JtYXRcIjogXCJ1cmktcmVmZXJlbmNlXCJcbiAgICB9LFxuICAgIFwiJHNjaGVtYVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICB9LFxuICAgIFwiJHJlZlwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwidXJpLXJlZmVyZW5jZVwiXG4gICAgfSxcbiAgICBcIiRjb21tZW50XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgfSxcbiAgICBcInRpdGxlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgfSxcbiAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgfSxcbiAgICBcImRlZmF1bHRcIjogdHJ1ZSxcbiAgICBcInJlYWRPbmx5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJleGFtcGxlc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjogMFxuICAgIH0sXG4gICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgfSxcbiAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICB9LFxuICAgIFwibWluaW11bVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgIH0sXG4gICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgfSxcbiAgICBcIm1heExlbmd0aFwiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sXG4gICAgXCJtaW5MZW5ndGhcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyRGVmYXVsdDBcIn0sXG4gICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJmb3JtYXRcIjogXCJyZWdleFwiXG4gICAgfSxcbiAgICBcImFkZGl0aW9uYWxJdGVtc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcIml0ZW1zXCI6IHtcbiAgICAgIFwiYW55T2ZcIjogW3tcIiRyZWZcIjogXCIjXCJ9LCB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwifV0sXG4gICAgICBcImRlZmF1bHRcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJtYXhJdGVtc1wiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJcIn0sXG4gICAgXCJtaW5JdGVtc1wiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MFwifSxcbiAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJjb250YWluc1wiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcIm1heFByb3BlcnRpZXNcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LFxuICAgIFwibWluUHJvcGVydGllc1wiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MFwifSxcbiAgICBcInJlcXVpcmVkXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5XCJ9LFxuICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgICBcImRlZmF1bHRcIjoge31cbiAgICB9LFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgICBcImRlZmF1bHRcIjoge31cbiAgICB9LFxuICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcIiRyZWZcIjogXCIjXCJ9LFxuICAgICAgXCJwcm9wZXJ0eU5hbWVzXCI6IHtcImZvcm1hdFwiOiBcInJlZ2V4XCJ9LFxuICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgfSxcbiAgICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImFueU9mXCI6IFt7XCIkcmVmXCI6IFwiI1wifSwge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIn1dXG4gICAgICB9XG4gICAgfSxcbiAgICBcInByb3BlcnR5TmFtZXNcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgXCJjb25zdFwiOiB0cnVlLFxuICAgIFwiZW51bVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB0cnVlLFxuICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInR5cGVcIjoge1xuICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgIHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NpbXBsZVR5cGVzXCJ9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICBcIml0ZW1zXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NpbXBsZVR5cGVzXCJ9LFxuICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJmb3JtYXRcIjoge1widHlwZVwiOiBcInN0cmluZ1wifSxcbiAgICBcImNvbnRlbnRNZWRpYVR5cGVcIjoge1widHlwZVwiOiBcInN0cmluZ1wifSxcbiAgICBcImNvbnRlbnRFbmNvZGluZ1wiOiB7XCJ0eXBlXCI6IFwic3RyaW5nXCJ9LFxuICAgIFwiaWZcIjoge1wiJHJlZlwiOiBcIiNcIn0sXG4gICAgXCJ0aGVuXCI6IHtcIiRyZWZcIjogXCIjXCJ9LFxuICAgIFwiZWxzZVwiOiB7XCIkcmVmXCI6IFwiI1wifSxcbiAgICBcImFsbE9mXCI6IHtcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9LFxuICAgIFwiYW55T2ZcIjoge1wiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIn0sXG4gICAgXCJvbmVPZlwiOiB7XCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwifSxcbiAgICBcIm5vdFwiOiB7XCIkcmVmXCI6IFwiI1wifVxuICB9LFxuICBcImRlZmF1bHRcIjogdHJ1ZVxufVxuIiwgImltcG9ydCB0eXBlIHtBbnlTY2hlbWFPYmplY3R9IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCBBanZDb3JlIGZyb20gXCIuL2NvcmVcIlxuaW1wb3J0IGRyYWZ0N1ZvY2FidWxhcmllcyBmcm9tIFwiLi92b2NhYnVsYXJpZXMvZHJhZnQ3XCJcbmltcG9ydCBkaXNjcmltaW5hdG9yIGZyb20gXCIuL3ZvY2FidWxhcmllcy9kaXNjcmltaW5hdG9yXCJcbmltcG9ydCAqIGFzIGRyYWZ0N01ldGFTY2hlbWEgZnJvbSBcIi4vcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uXCJcblxuY29uc3QgTUVUQV9TVVBQT1JUX0RBVEEgPSBbXCIvcHJvcGVydGllc1wiXVxuXG5jb25zdCBNRVRBX1NDSEVNQV9JRCA9IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWFcIlxuXG5leHBvcnQgY2xhc3MgQWp2IGV4dGVuZHMgQWp2Q29yZSB7XG4gIF9hZGRWb2NhYnVsYXJpZXMoKTogdm9pZCB7XG4gICAgc3VwZXIuX2FkZFZvY2FidWxhcmllcygpXG4gICAgZHJhZnQ3Vm9jYWJ1bGFyaWVzLmZvckVhY2goKHYpID0+IHRoaXMuYWRkVm9jYWJ1bGFyeSh2KSlcbiAgICBpZiAodGhpcy5vcHRzLmRpc2NyaW1pbmF0b3IpIHRoaXMuYWRkS2V5d29yZChkaXNjcmltaW5hdG9yKVxuICB9XG5cbiAgX2FkZERlZmF1bHRNZXRhU2NoZW1hKCk6IHZvaWQge1xuICAgIHN1cGVyLl9hZGREZWZhdWx0TWV0YVNjaGVtYSgpXG4gICAgaWYgKCF0aGlzLm9wdHMubWV0YSkgcmV0dXJuXG4gICAgY29uc3QgbWV0YVNjaGVtYSA9IHRoaXMub3B0cy4kZGF0YVxuICAgICAgPyB0aGlzLiRkYXRhTWV0YVNjaGVtYShkcmFmdDdNZXRhU2NoZW1hLCBNRVRBX1NVUFBPUlRfREFUQSlcbiAgICAgIDogZHJhZnQ3TWV0YVNjaGVtYVxuICAgIHRoaXMuYWRkTWV0YVNjaGVtYShtZXRhU2NoZW1hLCBNRVRBX1NDSEVNQV9JRCwgZmFsc2UpXG4gICAgdGhpcy5yZWZzW1wiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWFcIl0gPSBNRVRBX1NDSEVNQV9JRFxuICB9XG5cbiAgZGVmYXVsdE1ldGEoKTogc3RyaW5nIHwgQW55U2NoZW1hT2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKHRoaXMub3B0cy5kZWZhdWx0TWV0YSA9XG4gICAgICBzdXBlci5kZWZhdWx0TWV0YSgpIHx8ICh0aGlzLmdldFNjaGVtYShNRVRBX1NDSEVNQV9JRCkgPyBNRVRBX1NDSEVNQV9JRCA6IHVuZGVmaW5lZCkpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gQWp2XG5tb2R1bGUuZXhwb3J0cy5BanYgPSBBanZcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSlcblxuZXhwb3J0IGRlZmF1bHQgQWp2XG5cbmV4cG9ydCB7XG4gIEZvcm1hdCxcbiAgRm9ybWF0RGVmaW5pdGlvbixcbiAgQXN5bmNGb3JtYXREZWZpbml0aW9uLFxuICBLZXl3b3JkRGVmaW5pdGlvbixcbiAgS2V5d29yZEVycm9yRGVmaW5pdGlvbixcbiAgQ29kZUtleXdvcmREZWZpbml0aW9uLFxuICBNYWNyb0tleXdvcmREZWZpbml0aW9uLFxuICBGdW5jS2V5d29yZERlZmluaXRpb24sXG4gIFZvY2FidWxhcnksXG4gIFNjaGVtYSxcbiAgU2NoZW1hT2JqZWN0LFxuICBBbnlTY2hlbWFPYmplY3QsXG4gIEFzeW5jU2NoZW1hLFxuICBBbnlTY2hlbWEsXG4gIFZhbGlkYXRlRnVuY3Rpb24sXG4gIEFzeW5jVmFsaWRhdGVGdW5jdGlvbixcbiAgU2NoZW1hVmFsaWRhdGVGdW5jdGlvbixcbiAgRXJyb3JPYmplY3QsXG4gIEVycm9yTm9QYXJhbXMsXG59IGZyb20gXCIuL3R5cGVzXCJcblxuZXhwb3J0IHtQbHVnaW4sIE9wdGlvbnMsIENvZGVPcHRpb25zLCBJbnN0YW5jZU9wdGlvbnMsIExvZ2dlciwgRXJyb3JzVGV4dE9wdGlvbnN9IGZyb20gXCIuL2NvcmVcIlxuZXhwb3J0IHtTY2hlbWFDeHQsIFNjaGVtYU9iakN4dH0gZnJvbSBcIi4vY29tcGlsZVwiXG5leHBvcnQge0tleXdvcmRDeHR9IGZyb20gXCIuL2NvbXBpbGUvdmFsaWRhdGVcIlxuZXhwb3J0IHtEZWZpbmVkRXJyb3J9IGZyb20gXCIuL3ZvY2FidWxhcmllcy9lcnJvcnNcIlxuZXhwb3J0IHtKU09OVHlwZX0gZnJvbSBcIi4vY29tcGlsZS9ydWxlc1wiXG5leHBvcnQge0pTT05TY2hlbWFUeXBlfSBmcm9tIFwiLi90eXBlcy9qc29uLXNjaGVtYVwiXG5leHBvcnQge18sIHN0ciwgc3RyaW5naWZ5LCBuaWwsIE5hbWUsIENvZGUsIENvZGVHZW4sIENvZGVHZW5PcHRpb25zfSBmcm9tIFwiLi9jb21waWxlL2NvZGVnZW5cIlxuZXhwb3J0IHtkZWZhdWx0IGFzIFZhbGlkYXRpb25FcnJvcn0gZnJvbSBcIi4vcnVudGltZS92YWxpZGF0aW9uX2Vycm9yXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBNaXNzaW5nUmVmRXJyb3J9IGZyb20gXCIuL2NvbXBpbGUvcmVmX2Vycm9yXCJcbiIsICJpbXBvcnQgdHlwZSB7Rm9ybWF0LCBGb3JtYXREZWZpbml0aW9ufSBmcm9tIFwiYWp2XCJcbmltcG9ydCB0eXBlIHtGb3JtYXRWYWxpZGF0b3IsIEZvcm1hdENvbXBhcmV9IGZyb20gXCJhanYvZGlzdC90eXBlc1wiXG5cbmV4cG9ydCB0eXBlIEZvcm1hdE1vZGUgPSBcImZhc3RcIiB8IFwiZnVsbFwiXG5cbmV4cG9ydCB0eXBlIEZvcm1hdE5hbWUgPVxuICB8IFwiZGF0ZVwiXG4gIHwgXCJ0aW1lXCJcbiAgfCBcImRhdGUtdGltZVwiXG4gIHwgXCJpc28tdGltZVwiXG4gIHwgXCJpc28tZGF0ZS10aW1lXCJcbiAgfCBcImR1cmF0aW9uXCJcbiAgfCBcInVyaVwiXG4gIHwgXCJ1cmktcmVmZXJlbmNlXCJcbiAgfCBcInVyaS10ZW1wbGF0ZVwiXG4gIHwgXCJ1cmxcIlxuICB8IFwiZW1haWxcIlxuICB8IFwiaG9zdG5hbWVcIlxuICB8IFwiaXB2NFwiXG4gIHwgXCJpcHY2XCJcbiAgfCBcInJlZ2V4XCJcbiAgfCBcInV1aWRcIlxuICB8IFwianNvbi1wb2ludGVyXCJcbiAgfCBcImpzb24tcG9pbnRlci11cmktZnJhZ21lbnRcIlxuICB8IFwicmVsYXRpdmUtanNvbi1wb2ludGVyXCJcbiAgfCBcImJ5dGVcIlxuICB8IFwiaW50MzJcIlxuICB8IFwiaW50NjRcIlxuICB8IFwiZmxvYXRcIlxuICB8IFwiZG91YmxlXCJcbiAgfCBcInBhc3N3b3JkXCJcbiAgfCBcImJpbmFyeVwiXG5cbmV4cG9ydCB0eXBlIERlZmluZWRGb3JtYXRzID0ge1xuICBba2V5IGluIEZvcm1hdE5hbWVdOiBGb3JtYXRcbn1cblxuZnVuY3Rpb24gZm10RGVmKFxuICB2YWxpZGF0ZTogUmVnRXhwIHwgRm9ybWF0VmFsaWRhdG9yPHN0cmluZz4sXG4gIGNvbXBhcmU6IEZvcm1hdENvbXBhcmU8c3RyaW5nPlxuKTogRm9ybWF0RGVmaW5pdGlvbjxzdHJpbmc+IHtcbiAgcmV0dXJuIHt2YWxpZGF0ZSwgY29tcGFyZX1cbn1cblxuZXhwb3J0IGNvbnN0IGZ1bGxGb3JtYXRzOiBEZWZpbmVkRm9ybWF0cyA9IHtcbiAgLy8gZGF0ZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICBkYXRlOiBmbXREZWYoZGF0ZSwgY29tcGFyZURhdGUpLFxuICAvLyBkYXRlLXRpbWU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdGltZTogZm10RGVmKGdldFRpbWUodHJ1ZSksIGNvbXBhcmVUaW1lKSxcbiAgXCJkYXRlLXRpbWVcIjogZm10RGVmKGdldERhdGVUaW1lKHRydWUpLCBjb21wYXJlRGF0ZVRpbWUpLFxuICBcImlzby10aW1lXCI6IGZtdERlZihnZXRUaW1lKCksIGNvbXBhcmVJc29UaW1lKSxcbiAgXCJpc28tZGF0ZS10aW1lXCI6IGZtdERlZihnZXREYXRlVGltZSgpLCBjb21wYXJlSXNvRGF0ZVRpbWUpLFxuICAvLyBkdXJhdGlvbjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjYXBwZW5kaXgtQVxuICBkdXJhdGlvbjogL15QKD8hJCkoKFxcZCtZKT8oXFxkK00pPyhcXGQrRCk/KFQoPz1cXGQpKFxcZCtIKT8oXFxkK00pPyhcXGQrUyk/KT98KFxcZCtXKT8pJC8sXG4gIHVyaSxcbiAgXCJ1cmktcmVmZXJlbmNlXCI6XG4gICAgL14oPzpbYS16XVthLXowLTkrXFwtLl0qOik/KD86XFwvP1xcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdfCVbMC05YS1mXXsyfSkqQCk/KD86XFxbKD86KD86KD86KD86WzAtOWEtZl17MSw0fTopezZ9fDo6KD86WzAtOWEtZl17MSw0fTopezV9fCg/OlswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDF9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7M318KD86KD86WzAtOWEtZl17MSw0fTopezAsMn1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXsyfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwzfVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fTp8KD86KD86WzAtOWEtZl17MSw0fTopezAsNH1bMC05YS1mXXsxLDR9KT86OikoPzpbMC05YS1mXXsxLDR9OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw1fVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw2fVswLTlhLWZdezEsNH0pPzo6KXxbVnZdWzAtOWEtZl0rXFwuW2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol0rKVxcXXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPyl8KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqfFxcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/KD86XFw/KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/KD86Iyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaSxcbiAgLy8gdXJpLXRlbXBsYXRlOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU3MFxuICBcInVyaS10ZW1wbGF0ZVwiOlxuICAgIC9eKD86KD86W15cXHgwMC1cXHgyMFwiJzw+JVxcXFxeYHt8fV18JVswLTlhLWZdezJ9KXxcXHtbKyMuLzs/Jj0sIUB8XT8oPzpbYS16MC05X118JVswLTlhLWZdezJ9KSsoPzo6WzEtOV1bMC05XXswLDN9fFxcKik/KD86LCg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8pKlxcfSkqJC9pLFxuICAvLyBGb3IgdGhlIHNvdXJjZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZHBlcmluaS83MjkyOTRcbiAgLy8gRm9yIHRlc3QgY2FzZXM6IGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9kZW1vL3VybC1yZWdleFxuICB1cmw6IC9eKD86aHR0cHM/fGZ0cCk6XFwvXFwvKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyEoPzoxMHwxMjcpKD86XFwuXFxkezEsM30pezN9KSg/ISg/OjE2OVxcLjI1NHwxOTJcXC4xNjgpKD86XFwuXFxkezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyXFxkfDNbMC0xXSkoPzpcXC5cXGR7MSwzfSl7Mn0pKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswMV1cXGR8MjJbMC0zXSkoPzpcXC4oPzoxP1xcZHsxLDJ9fDJbMC00XVxcZHwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVxcZD98MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSstKSpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rKSg/OlxcLig/OlthLXowLTlcXHV7MDBhMX0tXFx1e2ZmZmZ9XSstKSpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rKSooPzpcXC4oPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfV17Mix9KSkpKD86OlxcZHsyLDV9KT8oPzpcXC9bXlxcc10qKT8kL2l1LFxuICBlbWFpbDpcbiAgICAvXlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1xcLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyQvaSxcbiAgaG9zdG5hbWU6XG4gICAgL14oPz0uezEsMjUzfVxcLj8kKVthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86Wy0wLTlhLXpdezAsNjF9WzAtOWEtel0pPykqXFwuPyQvaSxcbiAgLy8gb3B0aW1pemVkIGh0dHBzOi8vd3d3LnNhZmFyaWJvb2tzb25saW5lLmNvbS9saWJyYXJ5L3ZpZXcvcmVndWxhci1leHByZXNzaW9ucy1jb29rYm9vay85NzgwNTk2ODAyODM3L2NoMDdzMTYuaHRtbFxuICBpcHY0OiAvXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkkLyxcbiAgaXB2NjogL14oKChbMC05YS1mXXsxLDR9Oil7N30oWzAtOWEtZl17MSw0fXw6KSl8KChbMC05YS1mXXsxLDR9Oil7Nn0oOlswLTlhLWZdezEsNH18KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pfDopKXwoKFswLTlhLWZdezEsNH06KXs1fSgoKDpbMC05YS1mXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pfDopKXwoKFswLTlhLWZdezEsNH06KXs0fSgoKDpbMC05YS1mXXsxLDR9KXsxLDN9KXwoKDpbMC05YS1mXXsxLDR9KT86KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KChbMC05YS1mXXsxLDR9Oil7M30oKCg6WzAtOWEtZl17MSw0fSl7MSw0fSl8KCg6WzAtOWEtZl17MSw0fSl7MCwyfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoKFswLTlhLWZdezEsNH06KXsyfSgoKDpbMC05YS1mXXsxLDR9KXsxLDV9KXwoKDpbMC05YS1mXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCgoWzAtOWEtZl17MSw0fTopezF9KCgoOlswLTlhLWZdezEsNH0pezEsNn0pfCgoOlswLTlhLWZdezEsNH0pezAsNH06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KDooKCg6WzAtOWEtZl17MSw0fSl7MSw3fSl8KCg6WzAtOWEtZl17MSw0fSl7MCw1fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKSkkL2ksXG4gIHJlZ2V4LFxuICAvLyB1dWlkOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0MTIyXG4gIHV1aWQ6IC9eKD86dXJuOnV1aWQ6KT9bMC05YS1mXXs4fS0oPzpbMC05YS1mXXs0fS0pezN9WzAtOWEtZl17MTJ9JC9pLFxuICAvLyBKU09OLXBvaW50ZXI6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxXG4gIC8vIHVyaSBmcmFnbWVudDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjYXBwZW5kaXgtQVxuICBcImpzb24tcG9pbnRlclwiOiAvXig/OlxcLyg/Oltefi9dfH4wfH4xKSopKiQvLFxuICBcImpzb24tcG9pbnRlci11cmktZnJhZ21lbnRcIjogL14jKD86XFwvKD86W2EtejAtOV9cXC0uISQmJygpKissOzo9QF18JVswLTlhLWZdezJ9fH4wfH4xKSopKiQvaSxcbiAgLy8gcmVsYXRpdmUgSlNPTi1wb2ludGVyOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1sdWZmLXJlbGF0aXZlLWpzb24tcG9pbnRlci0wMFxuICBcInJlbGF0aXZlLWpzb24tcG9pbnRlclwiOiAvXig/OjB8WzEtOV1bMC05XSopKD86I3woPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSopJC8sXG4gIC8vIHRoZSBmb2xsb3dpbmcgZm9ybWF0cyBhcmUgdXNlZCBieSB0aGUgb3BlbmFwaSBzcGVjaWZpY2F0aW9uOiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjAjZGF0YS10eXBlc1xuICAvLyBieXRlOiBodHRwczovL2dpdGh1Yi5jb20vbWlndWVsbW90YS9pcy1iYXNlNjRcbiAgYnl0ZSxcbiAgLy8gc2lnbmVkIDMyIGJpdCBpbnRlZ2VyXG4gIGludDMyOiB7dHlwZTogXCJudW1iZXJcIiwgdmFsaWRhdGU6IHZhbGlkYXRlSW50MzJ9LFxuICAvLyBzaWduZWQgNjQgYml0IGludGVnZXJcbiAgaW50NjQ6IHt0eXBlOiBcIm51bWJlclwiLCB2YWxpZGF0ZTogdmFsaWRhdGVJbnQ2NH0sXG4gIC8vIEMtdHlwZSBmbG9hdFxuICBmbG9hdDoge3R5cGU6IFwibnVtYmVyXCIsIHZhbGlkYXRlOiB2YWxpZGF0ZU51bWJlcn0sXG4gIC8vIEMtdHlwZSBkb3VibGVcbiAgZG91YmxlOiB7dHlwZTogXCJudW1iZXJcIiwgdmFsaWRhdGU6IHZhbGlkYXRlTnVtYmVyfSxcbiAgLy8gaGludCB0byB0aGUgVUkgdG8gaGlkZSBpbnB1dCBzdHJpbmdzXG4gIHBhc3N3b3JkOiB0cnVlLFxuICAvLyB1bmNoZWNrZWQgc3RyaW5nIHBheWxvYWRcbiAgYmluYXJ5OiB0cnVlLFxufVxuXG5leHBvcnQgY29uc3QgZmFzdEZvcm1hdHM6IERlZmluZWRGb3JtYXRzID0ge1xuICAuLi5mdWxsRm9ybWF0cyxcbiAgZGF0ZTogZm10RGVmKC9eXFxkXFxkXFxkXFxkLVswLTFdXFxkLVswLTNdXFxkJC8sIGNvbXBhcmVEYXRlKSxcbiAgdGltZTogZm10RGVmKFxuICAgIC9eKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPykkL2ksXG4gICAgY29tcGFyZVRpbWVcbiAgKSxcbiAgXCJkYXRlLXRpbWVcIjogZm10RGVmKFxuICAgIC9eXFxkXFxkXFxkXFxkLVswLTFdXFxkLVswLTNdXFxkdCg/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pJC9pLFxuICAgIGNvbXBhcmVEYXRlVGltZVxuICApLFxuICBcImlzby10aW1lXCI6IGZtdERlZihcbiAgICAvXig/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pPyQvaSxcbiAgICBjb21wYXJlSXNvVGltZVxuICApLFxuICBcImlzby1kYXRlLXRpbWVcIjogZm10RGVmKFxuICAgIC9eXFxkXFxkXFxkXFxkLVswLTFdXFxkLVswLTNdXFxkW3RcXHNdKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pLFxuICAgIGNvbXBhcmVJc29EYXRlVGltZVxuICApLFxuICAvLyB1cmk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvaXMtbXktanNvbi12YWxpZC9ibG9iL21hc3Rlci9mb3JtYXRzLmpzXG4gIHVyaTogL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKT9bXlxcc10qJC9pLFxuICBcInVyaS1yZWZlcmVuY2VcIjogL14oPzooPzpbYS16XVthLXowLTkrXFwtLl0qOik/XFwvP1xcLyk/KD86W15cXFxcXFxzI11bXlxccyNdKik/KD86I1teXFxcXFxcc10qKT8kL2ksXG4gIC8vIGVtYWlsIChzb3VyY2VzIGZyb20ganNlbiB2YWxpZGF0b3IpOlxuICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIwMTMyMy91c2luZy1hLXJlZ3VsYXItZXhwcmVzc2lvbi10by12YWxpZGF0ZS1hbi1lbWFpbC1hZGRyZXNzI2Fuc3dlci04ODI5MzYzXG4gIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2Zvcm1zLmh0bWwjdmFsaWQtZS1tYWlsLWFkZHJlc3MgKHNlYXJjaCBmb3IgJ3dpbGZ1bCB2aW9sYXRpb24nKVxuICBlbWFpbDpcbiAgICAvXlthLXowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPykqJC9pLFxufVxuXG5leHBvcnQgY29uc3QgZm9ybWF0TmFtZXMgPSBPYmplY3Qua2V5cyhmdWxsRm9ybWF0cykgYXMgRm9ybWF0TmFtZVtdXG5cbmZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I2FwcGVuZGl4LUNcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApXG59XG5cbmNvbnN0IERBVEUgPSAvXihcXGRcXGRcXGRcXGQpLShcXGRcXGQpLShcXGRcXGQpJC9cbmNvbnN0IERBWVMgPSBbMCwgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV1cblxuZnVuY3Rpb24gZGF0ZShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBmdWxsLWRhdGUgZnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIGNvbnN0IG1hdGNoZXM6IHN0cmluZ1tdIHwgbnVsbCA9IERBVEUuZXhlYyhzdHIpXG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IHllYXI6IG51bWJlciA9ICttYXRjaGVzWzFdXG4gIGNvbnN0IG1vbnRoOiBudW1iZXIgPSArbWF0Y2hlc1syXVxuICBjb25zdCBkYXk6IG51bWJlciA9ICttYXRjaGVzWzNdXG4gIHJldHVybiAoXG4gICAgbW9udGggPj0gMSAmJlxuICAgIG1vbnRoIDw9IDEyICYmXG4gICAgZGF5ID49IDEgJiZcbiAgICBkYXkgPD0gKG1vbnRoID09PSAyICYmIGlzTGVhcFllYXIoeWVhcikgPyAyOSA6IERBWVNbbW9udGhdKVxuICApXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEYXRlKGQxOiBzdHJpbmcsIGQyOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIShkMSAmJiBkMikpIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKGQxID4gZDIpIHJldHVybiAxXG4gIGlmIChkMSA8IGQyKSByZXR1cm4gLTFcbiAgcmV0dXJuIDBcbn1cblxuY29uc3QgVElNRSA9IC9eKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCg/OlxcLlxcZCspPykoenwoWystXSkoXFxkXFxkKSg/Ojo/KFxcZFxcZCkpPyk/JC9pXG5cbmZ1bmN0aW9uIGdldFRpbWUoc3RyaWN0VGltZVpvbmU/OiBib29sZWFuKTogKHN0cjogc3RyaW5nKSA9PiBib29sZWFuIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRpbWUoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSB8IG51bGwgPSBUSU1FLmV4ZWMoc3RyKVxuICAgIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgaHI6IG51bWJlciA9ICttYXRjaGVzWzFdXG4gICAgY29uc3QgbWluOiBudW1iZXIgPSArbWF0Y2hlc1syXVxuICAgIGNvbnN0IHNlYzogbnVtYmVyID0gK21hdGNoZXNbM11cbiAgICBjb25zdCB0ejogc3RyaW5nIHwgdW5kZWZpbmVkID0gbWF0Y2hlc1s0XVxuICAgIGNvbnN0IHR6U2lnbjogbnVtYmVyID0gbWF0Y2hlc1s1XSA9PT0gXCItXCIgPyAtMSA6IDFcbiAgICBjb25zdCB0ekg6IG51bWJlciA9ICsobWF0Y2hlc1s2XSB8fCAwKVxuICAgIGNvbnN0IHR6TTogbnVtYmVyID0gKyhtYXRjaGVzWzddIHx8IDApXG4gICAgaWYgKHR6SCA+IDIzIHx8IHR6TSA+IDU5IHx8IChzdHJpY3RUaW1lWm9uZSAmJiAhdHopKSByZXR1cm4gZmFsc2VcbiAgICBpZiAoaHIgPD0gMjMgJiYgbWluIDw9IDU5ICYmIHNlYyA8IDYwKSByZXR1cm4gdHJ1ZVxuICAgIC8vIGxlYXAgc2Vjb25kXG4gICAgY29uc3QgdXRjTWluID0gbWluIC0gdHpNICogdHpTaWduXG4gICAgY29uc3QgdXRjSHIgPSBociAtIHR6SCAqIHR6U2lnbiAtICh1dGNNaW4gPCAwID8gMSA6IDApXG4gICAgcmV0dXJuICh1dGNIciA9PT0gMjMgfHwgdXRjSHIgPT09IC0xKSAmJiAodXRjTWluID09PSA1OSB8fCB1dGNNaW4gPT09IC0xKSAmJiBzZWMgPCA2MVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVUaW1lKHMxOiBzdHJpbmcsIHMyOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIShzMSAmJiBzMikpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgdDEgPSBuZXcgRGF0ZShcIjIwMjAtMDEtMDFUXCIgKyBzMSkudmFsdWVPZigpXG4gIGNvbnN0IHQyID0gbmV3IERhdGUoXCIyMDIwLTAxLTAxVFwiICsgczIpLnZhbHVlT2YoKVxuICBpZiAoISh0MSAmJiB0MikpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIHQxIC0gdDJcbn1cblxuZnVuY3Rpb24gY29tcGFyZUlzb1RpbWUodDE6IHN0cmluZywgdDI6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKHQxICYmIHQyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBhMSA9IFRJTUUuZXhlYyh0MSlcbiAgY29uc3QgYTIgPSBUSU1FLmV4ZWModDIpXG4gIGlmICghKGExICYmIGEyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICB0MSA9IGExWzFdICsgYTFbMl0gKyBhMVszXVxuICB0MiA9IGEyWzFdICsgYTJbMl0gKyBhMlszXVxuICBpZiAodDEgPiB0MikgcmV0dXJuIDFcbiAgaWYgKHQxIDwgdDIpIHJldHVybiAtMVxuICByZXR1cm4gMFxufVxuXG5jb25zdCBEQVRFX1RJTUVfU0VQQVJBVE9SID0gL3R8XFxzL2lcbmZ1bmN0aW9uIGdldERhdGVUaW1lKHN0cmljdFRpbWVab25lPzogYm9vbGVhbik6IChzdHI6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IHRpbWUgPSBnZXRUaW1lKHN0cmljdFRpbWVab25lKVxuXG4gIHJldHVybiBmdW5jdGlvbiBkYXRlX3RpbWUoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gICAgY29uc3QgZGF0ZVRpbWU6IHN0cmluZ1tdID0gc3RyLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpXG4gICAgcmV0dXJuIGRhdGVUaW1lLmxlbmd0aCA9PT0gMiAmJiBkYXRlKGRhdGVUaW1lWzBdKSAmJiB0aW1lKGRhdGVUaW1lWzFdKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEYXRlVGltZShkdDE6IHN0cmluZywgZHQyOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIShkdDEgJiYgZHQyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBkMSA9IG5ldyBEYXRlKGR0MSkudmFsdWVPZigpXG4gIGNvbnN0IGQyID0gbmV3IERhdGUoZHQyKS52YWx1ZU9mKClcbiAgaWYgKCEoZDEgJiYgZDIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiBkMSAtIGQyXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVJc29EYXRlVGltZShkdDE6IHN0cmluZywgZHQyOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIShkdDEgJiYgZHQyKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBbZDEsIHQxXSA9IGR0MS5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKVxuICBjb25zdCBbZDIsIHQyXSA9IGR0Mi5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKVxuICBjb25zdCByZXMgPSBjb21wYXJlRGF0ZShkMSwgZDIpXG4gIGlmIChyZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gcmVzIHx8IGNvbXBhcmVUaW1lKHQxLCB0Milcbn1cblxuY29uc3QgTk9UX1VSSV9GUkFHTUVOVCA9IC9cXC98Oi9cbmNvbnN0IFVSSSA9XG4gIC9eKD86W2Etel1bYS16MC05K1xcLS5dKjopKD86XFwvP1xcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdfCVbMC05YS1mXXsyfSkqQCk/KD86XFxbKD86KD86KD86KD86WzAtOWEtZl17MSw0fTopezZ9fDo6KD86WzAtOWEtZl17MSw0fTopezV9fCg/OlswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDF9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7M318KD86KD86WzAtOWEtZl17MSw0fTopezAsMn1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXsyfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwzfVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fTp8KD86KD86WzAtOWEtZl17MSw0fTopezAsNH1bMC05YS1mXXsxLDR9KT86OikoPzpbMC05YS1mXXsxLDR9OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw1fVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw2fVswLTlhLWZdezEsNH0pPzo6KXxbVnZdWzAtOWEtZl0rXFwuW2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol0rKVxcXXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPyl8KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9XXwlWzAtOWEtZl17Mn0pKikoPzo6XFxkKik/KD86XFwvKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSp8XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopP3woPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKikoPzpcXD8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/KD86Iyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8kL2lcblxuZnVuY3Rpb24gdXJpKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIGh0dHA6Ly9qbXJ3YXJlLmNvbS9hcnRpY2xlcy8yMDA5L3VyaV9yZWdleHAvVVJJX3JlZ2V4Lmh0bWwgKyBvcHRpb25hbCBwcm90b2NvbCArIHJlcXVpcmVkIFwiLlwiXG4gIHJldHVybiBOT1RfVVJJX0ZSQUdNRU5ULnRlc3Qoc3RyKSAmJiBVUkkudGVzdChzdHIpXG59XG5cbmNvbnN0IEJZVEUgPSAvXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC9nbVxuXG5mdW5jdGlvbiBieXRlKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIEJZVEUubGFzdEluZGV4ID0gMFxuICByZXR1cm4gQllURS50ZXN0KHN0cilcbn1cblxuY29uc3QgTUlOX0lOVDMyID0gLSgyICoqIDMxKVxuY29uc3QgTUFYX0lOVDMyID0gMiAqKiAzMSAtIDFcblxuZnVuY3Rpb24gdmFsaWRhdGVJbnQzMih2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA8PSBNQVhfSU5UMzIgJiYgdmFsdWUgPj0gTUlOX0lOVDMyXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW50NjQodmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAvLyBKU09OIGFuZCBqYXZhc2NyaXB0IG1heCBJbnQgaXMgMioqNTMsIHNvIGFueSBpbnQgdGhhdCBwYXNzZXMgaXNJbnRlZ2VyIGlzIHZhbGlkIGZvciBJbnQ2NFxuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSlcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiB0cnVlXG59XG5cbmNvbnN0IFpfQU5DSE9SID0gL1teXFxcXF1cXFxcWi9cbmZ1bmN0aW9uIHJlZ2V4KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChaX0FOQ0hPUi50ZXN0KHN0cikpIHJldHVybiBmYWxzZVxuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoc3RyKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIEFqdiBmcm9tIFwiYWp2XCJcbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBDb2RlS2V5d29yZERlZmluaXRpb24sXG4gIEtleXdvcmRFcnJvckRlZmluaXRpb24sXG4gIENvZGUsXG4gIE5hbWUsXG4gIEVycm9yT2JqZWN0LFxufSBmcm9tIFwiYWp2XCJcbmltcG9ydCB0eXBlIHtBZGRlZEZvcm1hdH0gZnJvbSBcImFqdi9kaXN0L3R5cGVzXCJcbmltcG9ydCB0eXBlIHtSdWxlfSBmcm9tIFwiYWp2L2Rpc3QvY29tcGlsZS9ydWxlc1wiXG5pbXBvcnQge0tleXdvcmRDeHR9IGZyb20gXCJhanZcIlxuaW1wb3J0IHtfLCBzdHIsIG9yLCBnZXRQcm9wZXJ0eSwgb3BlcmF0b3JzfSBmcm9tIFwiYWp2L2Rpc3QvY29tcGlsZS9jb2RlZ2VuXCJcblxudHlwZSBLd2QgPSBcImZvcm1hdE1heGltdW1cIiB8IFwiZm9ybWF0TWluaW11bVwiIHwgXCJmb3JtYXRFeGNsdXNpdmVNYXhpbXVtXCIgfCBcImZvcm1hdEV4Y2x1c2l2ZU1pbmltdW1cIlxuXG50eXBlIENvbXBhcmlzb24gPSBcIjw9XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPlwiXG5cbmNvbnN0IG9wcyA9IG9wZXJhdG9yc1xuXG5jb25zdCBLV0RzOiB7W0sgaW4gS3dkXToge29rU3RyOiBDb21wYXJpc29uOyBvazogQ29kZTsgZmFpbDogQ29kZX19ID0ge1xuICBmb3JtYXRNYXhpbXVtOiB7b2tTdHI6IFwiPD1cIiwgb2s6IG9wcy5MVEUsIGZhaWw6IG9wcy5HVH0sXG4gIGZvcm1hdE1pbmltdW06IHtva1N0cjogXCI+PVwiLCBvazogb3BzLkdURSwgZmFpbDogb3BzLkxUfSxcbiAgZm9ybWF0RXhjbHVzaXZlTWF4aW11bToge29rU3RyOiBcIjxcIiwgb2s6IG9wcy5MVCwgZmFpbDogb3BzLkdURX0sXG4gIGZvcm1hdEV4Y2x1c2l2ZU1pbmltdW06IHtva1N0cjogXCI+XCIsIG9rOiBvcHMuR1QsIGZhaWw6IG9wcy5MVEV9LFxufVxuXG5leHBvcnQgdHlwZSBMaW1pdEZvcm1hdEVycm9yID0gRXJyb3JPYmplY3Q8S3dkLCB7bGltaXQ6IHN0cmluZzsgY29tcGFyaXNvbjogQ29tcGFyaXNvbn0+XG5cbmNvbnN0IGVycm9yOiBLZXl3b3JkRXJyb3JEZWZpbml0aW9uID0ge1xuICBtZXNzYWdlOiAoe2tleXdvcmQsIHNjaGVtYUNvZGV9KSA9PiBzdHJgc2hvdWxkIGJlICR7S1dEc1trZXl3b3JkIGFzIEt3ZF0ub2tTdHJ9ICR7c2NoZW1hQ29kZX1gLFxuICBwYXJhbXM6ICh7a2V5d29yZCwgc2NoZW1hQ29kZX0pID0+XG4gICAgX2B7Y29tcGFyaXNvbjogJHtLV0RzW2tleXdvcmQgYXMgS3dkXS5va1N0cn0sIGxpbWl0OiAke3NjaGVtYUNvZGV9fWAsXG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRMaW1pdERlZmluaXRpb246IENvZGVLZXl3b3JkRGVmaW5pdGlvbiA9IHtcbiAga2V5d29yZDogT2JqZWN0LmtleXMoS1dEcyksXG4gIHR5cGU6IFwic3RyaW5nXCIsXG4gIHNjaGVtYVR5cGU6IFwic3RyaW5nXCIsXG4gICRkYXRhOiB0cnVlLFxuICBlcnJvcixcbiAgY29kZShjeHQpIHtcbiAgICBjb25zdCB7Z2VuLCBkYXRhLCBzY2hlbWFDb2RlLCBrZXl3b3JkLCBpdH0gPSBjeHRcbiAgICBjb25zdCB7b3B0cywgc2VsZn0gPSBpdFxuICAgIGlmICghb3B0cy52YWxpZGF0ZUZvcm1hdHMpIHJldHVyblxuXG4gICAgY29uc3QgZkN4dCA9IG5ldyBLZXl3b3JkQ3h0KGl0LCAoc2VsZi5SVUxFUy5hbGwuZm9ybWF0IGFzIFJ1bGUpLmRlZmluaXRpb24sIFwiZm9ybWF0XCIpXG4gICAgaWYgKGZDeHQuJGRhdGEpIHZhbGlkYXRlJERhdGFGb3JtYXQoKVxuICAgIGVsc2UgdmFsaWRhdGVGb3JtYXQoKVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUkRGF0YUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZtdHMgPSBnZW4uc2NvcGVWYWx1ZShcImZvcm1hdHNcIiwge1xuICAgICAgICByZWY6IHNlbGYuZm9ybWF0cyxcbiAgICAgICAgY29kZTogb3B0cy5jb2RlLmZvcm1hdHMsXG4gICAgICB9KVxuICAgICAgY29uc3QgZm10ID0gZ2VuLmNvbnN0KFwiZm10XCIsIF9gJHtmbXRzfVske2ZDeHQuc2NoZW1hQ29kZX1dYClcbiAgICAgIGN4dC5mYWlsJGRhdGEoXG4gICAgICAgIG9yKFxuICAgICAgICAgIF9gdHlwZW9mICR7Zm10fSAhPSBcIm9iamVjdFwiYCxcbiAgICAgICAgICBfYCR7Zm10fSBpbnN0YW5jZW9mIFJlZ0V4cGAsXG4gICAgICAgICAgX2B0eXBlb2YgJHtmbXR9LmNvbXBhcmUgIT0gXCJmdW5jdGlvblwiYCxcbiAgICAgICAgICBjb21wYXJlQ29kZShmbXQpXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGZDeHQuc2NoZW1hIGFzIHN0cmluZ1xuICAgICAgY29uc3QgZm10RGVmOiBBZGRlZEZvcm1hdCB8IHVuZGVmaW5lZCA9IHNlbGYuZm9ybWF0c1tmb3JtYXRdXG4gICAgICBpZiAoIWZtdERlZiB8fCBmbXREZWYgPT09IHRydWUpIHJldHVyblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZm10RGVmICE9IFwib2JqZWN0XCIgfHxcbiAgICAgICAgZm10RGVmIGluc3RhbmNlb2YgUmVnRXhwIHx8XG4gICAgICAgIHR5cGVvZiBmbXREZWYuY29tcGFyZSAhPSBcImZ1bmN0aW9uXCJcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFwiJHtrZXl3b3JkfVwiOiBmb3JtYXQgXCIke2Zvcm1hdH1cIiBkb2VzIG5vdCBkZWZpbmUgXCJjb21wYXJlXCIgZnVuY3Rpb25gKVxuICAgICAgfVxuICAgICAgY29uc3QgZm10ID0gZ2VuLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIsIHtcbiAgICAgICAga2V5OiBmb3JtYXQsXG4gICAgICAgIHJlZjogZm10RGVmLFxuICAgICAgICBjb2RlOiBvcHRzLmNvZGUuZm9ybWF0cyA/IF9gJHtvcHRzLmNvZGUuZm9ybWF0c30ke2dldFByb3BlcnR5KGZvcm1hdCl9YCA6IHVuZGVmaW5lZCxcbiAgICAgIH0pXG5cbiAgICAgIGN4dC5mYWlsJGRhdGEoY29tcGFyZUNvZGUoZm10KSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wYXJlQ29kZShmbXQ6IE5hbWUpOiBDb2RlIHtcbiAgICAgIHJldHVybiBfYCR7Zm10fS5jb21wYXJlKCR7ZGF0YX0sICR7c2NoZW1hQ29kZX0pICR7S1dEc1trZXl3b3JkIGFzIEt3ZF0uZmFpbH0gMGBcbiAgICB9XG4gIH0sXG4gIGRlcGVuZGVuY2llczogW1wiZm9ybWF0XCJdLFxufVxuXG5jb25zdCBmb3JtYXRMaW1pdFBsdWdpbjogUGx1Z2luPHVuZGVmaW5lZD4gPSAoYWp2OiBBanYpOiBBanYgPT4ge1xuICBhanYuYWRkS2V5d29yZChmb3JtYXRMaW1pdERlZmluaXRpb24pXG4gIHJldHVybiBhanZcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0TGltaXRQbHVnaW5cbiIsICJpbXBvcnQge1xuICBEZWZpbmVkRm9ybWF0cyxcbiAgRm9ybWF0TW9kZSxcbiAgRm9ybWF0TmFtZSxcbiAgZm9ybWF0TmFtZXMsXG4gIGZhc3RGb3JtYXRzLFxuICBmdWxsRm9ybWF0cyxcbn0gZnJvbSBcIi4vZm9ybWF0c1wiXG5pbXBvcnQgZm9ybWF0TGltaXQgZnJvbSBcIi4vbGltaXRcIlxuaW1wb3J0IHR5cGUgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IHR5cGUge1BsdWdpbiwgRm9ybWF0fSBmcm9tIFwiYWp2XCJcbmltcG9ydCB7XywgTmFtZX0gZnJvbSBcImFqdi9kaXN0L2NvbXBpbGUvY29kZWdlblwiXG5cbmV4cG9ydCB7Rm9ybWF0TW9kZSwgRm9ybWF0TmFtZX0gZnJvbSBcIi4vZm9ybWF0c1wiXG5leHBvcnQge0xpbWl0Rm9ybWF0RXJyb3J9IGZyb20gXCIuL2xpbWl0XCJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0T3B0aW9ucyB7XG4gIG1vZGU/OiBGb3JtYXRNb2RlXG4gIGZvcm1hdHM/OiBGb3JtYXROYW1lW11cbiAga2V5d29yZHM/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHNQbHVnaW5PcHRpb25zID0gRm9ybWF0TmFtZVtdIHwgRm9ybWF0T3B0aW9uc1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHNQbHVnaW4gZXh0ZW5kcyBQbHVnaW48Rm9ybWF0c1BsdWdpbk9wdGlvbnM+IHtcbiAgZ2V0OiAoZm9ybWF0OiBGb3JtYXROYW1lLCBtb2RlPzogRm9ybWF0TW9kZSkgPT4gRm9ybWF0XG59XG5cbmNvbnN0IGZ1bGxOYW1lID0gbmV3IE5hbWUoXCJmdWxsRm9ybWF0c1wiKVxuY29uc3QgZmFzdE5hbWUgPSBuZXcgTmFtZShcImZhc3RGb3JtYXRzXCIpXG5cbmNvbnN0IGZvcm1hdHNQbHVnaW46IEZvcm1hdHNQbHVnaW4gPSAoXG4gIGFqdjogQWp2LFxuICBvcHRzOiBGb3JtYXRzUGx1Z2luT3B0aW9ucyA9IHtrZXl3b3JkczogdHJ1ZX1cbik6IEFqdiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdHMpKSB7XG4gICAgYWRkRm9ybWF0cyhhanYsIG9wdHMsIGZ1bGxGb3JtYXRzLCBmdWxsTmFtZSlcbiAgICByZXR1cm4gYWp2XG4gIH1cbiAgY29uc3QgW2Zvcm1hdHMsIGV4cG9ydE5hbWVdID1cbiAgICBvcHRzLm1vZGUgPT09IFwiZmFzdFwiID8gW2Zhc3RGb3JtYXRzLCBmYXN0TmFtZV0gOiBbZnVsbEZvcm1hdHMsIGZ1bGxOYW1lXVxuICBjb25zdCBsaXN0ID0gb3B0cy5mb3JtYXRzIHx8IGZvcm1hdE5hbWVzXG4gIGFkZEZvcm1hdHMoYWp2LCBsaXN0LCBmb3JtYXRzLCBleHBvcnROYW1lKVxuICBpZiAob3B0cy5rZXl3b3JkcykgZm9ybWF0TGltaXQoYWp2KVxuICByZXR1cm4gYWp2XG59XG5cbmZvcm1hdHNQbHVnaW4uZ2V0ID0gKG5hbWU6IEZvcm1hdE5hbWUsIG1vZGU6IEZvcm1hdE1vZGUgPSBcImZ1bGxcIik6IEZvcm1hdCA9PiB7XG4gIGNvbnN0IGZvcm1hdHMgPSBtb2RlID09PSBcImZhc3RcIiA/IGZhc3RGb3JtYXRzIDogZnVsbEZvcm1hdHNcbiAgY29uc3QgZiA9IGZvcm1hdHNbbmFtZV1cbiAgaWYgKCFmKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZm9ybWF0IFwiJHtuYW1lfVwiYClcbiAgcmV0dXJuIGZcbn1cblxuZnVuY3Rpb24gYWRkRm9ybWF0cyhhanY6IEFqdiwgbGlzdDogRm9ybWF0TmFtZVtdLCBmczogRGVmaW5lZEZvcm1hdHMsIGV4cG9ydE5hbWU6IE5hbWUpOiB2b2lkIHtcbiAgYWp2Lm9wdHMuY29kZS5mb3JtYXRzID8/PSBfYHJlcXVpcmUoXCJhanYtZm9ybWF0cy9kaXN0L2Zvcm1hdHNcIikuJHtleHBvcnROYW1lfWBcbiAgZm9yIChjb25zdCBmIG9mIGxpc3QpIGFqdi5hZGRGb3JtYXQoZiwgZnNbZl0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZvcm1hdHNQbHVnaW5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSlcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0c1BsdWdpblxuIiwgImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQgeyBjcmVhdGVBcHBBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtYXBwXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L3Jlc3RcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRBZGFwdGVyIH0gZnJvbSBcIi4vYWdlbnRzL2FkYXB0ZXIuanNcIjtcbmltcG9ydCB7IENsYXVkZUFnZW50QWRhcHRlciB9IGZyb20gXCIuL2FnZW50cy9jbGF1ZGUuanNcIjtcbmltcG9ydCB7IENvZGV4QWdlbnRBZGFwdGVyIH0gZnJvbSBcIi4vYWdlbnRzL2NvZGV4LmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIEF1ZGl0RW1pdHRlcixcbiAgY29tYmluZUVtaXR0ZXJzLFxuICBjcmVhdGVBdWRpdEVtaXR0ZXIsXG59IGZyb20gXCIuL2F1ZGl0L2V2ZW50cy5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlU3RlcFN1bW1hcnlNaXJyb3IgfSBmcm9tIFwiLi9hdWRpdC9zdGVwLXN1bW1hcnkuanNcIjtcbmltcG9ydCB7IGJ1aWxkQWdlbnRFbnZGcm9tQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2FnZW50LWVudi5qc1wiO1xuaW1wb3J0IHsgYnVpbGRDb2RleE9wdGlvbnMgfSBmcm9tIFwiLi9jb25maWcvY29kZXgtb3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VDb25maWcgfSBmcm9tIFwiLi9jb25maWcvaW5wdXRzLmpzXCI7XG5pbXBvcnQgeyBhcHBseUdpdElkZW50aXR5LCByZXNvbHZlQm90SWRlbnRpdHkgfSBmcm9tIFwiLi9naXQvaWRlbnRpdHkuanNcIjtcbmltcG9ydCB7XG4gIHByZXBhcmVJbXBsQ2hlY2tvdXQsXG4gIHByZXBhcmVSZXZpZXdCYXNlLFxuICBwdXNoSW1wbENvbW1pdHMsXG4gIHRva2VuUmVzb2x2ZXJGb3IsXG59IGZyb20gXCIuL2dpdC9pbXBsLWNoZWNrb3V0LmpzXCI7XG5pbXBvcnQgeyBHaXRIdWJBZGFwdGVyLCB0eXBlIE9jdG9raXRMaWtlIH0gZnJvbSBcIi4vZ2l0aHViL2FkYXB0ZXIuanNcIjtcbmltcG9ydCB7IHR5cGUgQXV0aFNwZWMsIHJlc29sdmVBdXRoIH0gZnJvbSBcIi4vZ2l0aHViL2FwcC10b2tlbi5qc1wiO1xuaW1wb3J0IHsgcnVuT3JjaGVzdHJhdG9yIH0gZnJvbSBcIi4vb3JjaGVzdHJhdG9yLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdpdE9wcyB9IGZyb20gXCIuL3N0YWdlcy9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRQYXlsb2FkIH0gZnJvbSBcIi4vc3RhdGUvdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5FbnRyeURlcHMge1xuICAvLyBJbmplY3QgYW4gT2N0b2tpdCBmYWN0b3J5IGluIHRlc3RzIHNvIHdlIGRvbid0IGhpdCB0aGUgbmV0d29yay5cbiAgb2N0b2tpdEZhY3Rvcnk/OiAoYXV0aDogQXV0aFNwZWMpID0+IE9jdG9raXRMaWtlO1xuICAvLyBJbmplY3QgdGhlIGFnZW50IGFkYXB0ZXIgaW4gdGVzdHM7IGRlZmF1bHRzIHRvIHRoZSBwcm92aWRlciBzZWxlY3RlZCBieVxuICAvLyBjb25maWcuYWdlbnRQcm92aWRlciAoQ2xhdWRlQWdlbnRBZGFwdGVyIG9yIENvZGV4QWdlbnRBZGFwdGVyKS5cbiAgYWdlbnRGYWN0b3J5PzogKCkgPT4gQWdlbnRBZGFwdGVyO1xuICAvLyBPdmVycmlkZSBhdWRpdCBzaW5rIGZvciB0ZXN0cy5cbiAgYXVkaXRTaW5rPzogQXVkaXRFbWl0dGVyO1xufVxuXG5jb25zdCBJTlBVVF9LRVlTID0gW1xuICBcImFudGhyb3BpY19hcGlfa2V5XCIsXG4gIFwiY2xhdWRlX2NvZGVfb2F1dGhfdG9rZW5cIixcbiAgXCJhZ2VudF9wcm92aWRlclwiLFxuICBcIm9wZW5haV9hcGlfa2V5XCIsXG4gIFwiY29kZXhfYXV0aF9qc29uXCIsXG4gIFwiY29kZXhfc2FuZGJveF9tb2RlXCIsXG4gIFwiY29kZXhfYXBwcm92YWxfcG9saWN5XCIsXG4gIFwiY29kZXhfbmV0d29ya19hY2Nlc3NcIixcbiAgXCJjb2RleF9za2lwX2dpdF9yZXBvX2NoZWNrXCIsXG4gIFwiZ2l0aHViX2FwcF9jbGllbnRfaWRcIixcbiAgXCJnaXRodWJfYXBwX3ByaXZhdGVfa2V5XCIsXG4gIFwiZ2l0aHViX2FwcF9yZXZpZXdfY2xpZW50X2lkXCIsXG4gIFwiZ2l0aHViX2FwcF9yZXZpZXdfcHJpdmF0ZV9rZXlcIixcbiAgXCJnaXRodWJfYXBwX3Rva2VuXCIsXG4gIFwiZ2l0aHViX2FwcF9yZXZpZXdfdG9rZW5cIixcbiAgXCJnaXRodWJfdG9rZW5cIixcbiAgXCJzc2hfc2lnbmluZ19rZXlcIixcbiAgXCJ0cmlnZ2VyX2xhYmVsXCIsXG4gIFwibWF4X3Jldmlld19pdGVyYXRpb25zXCIsXG4gIFwidHJpYWdlX21vZGVsXCIsXG4gIFwic3BlY19tb2RlbFwiLFxuICBcInBsYW5fbW9kZWxcIixcbiAgXCJpbXBsX21vZGVsXCIsXG4gIFwicmV2aWV3X2NvbXBsaWFuY2VfbW9kZWxcIixcbiAgXCJyZXZpZXdfYnVnc19tb2RlbFwiLFxuICBcInJldmlld19zZWN1cml0eV9tb2RlbFwiLFxuICBcInJldmlld19zbWVsbHNfbW9kZWxcIixcbiAgXCJ0cmlhZ2VfZWZmb3J0XCIsXG4gIFwic3BlY19lZmZvcnRcIixcbiAgXCJwbGFuX2VmZm9ydFwiLFxuICBcImltcGxfZWZmb3J0XCIsXG4gIFwicmV2aWV3X2NvbXBsaWFuY2VfZWZmb3J0XCIsXG4gIFwicmV2aWV3X2J1Z3NfZWZmb3J0XCIsXG4gIFwicmV2aWV3X3NlY3VyaXR5X2VmZm9ydFwiLFxuICBcInJldmlld19zbWVsbHNfZWZmb3J0XCIsXG4gIFwidHJpYWdlX21heF9idWRnZXRfdXNkXCIsXG4gIFwic3BlY19tYXhfYnVkZ2V0X3VzZFwiLFxuICBcInBsYW5fbWF4X2J1ZGdldF91c2RcIixcbiAgXCJpbXBsX21heF9idWRnZXRfdXNkXCIsXG4gIFwicmV2aWV3X21heF9idWRnZXRfdXNkX3Blcl9sZW5zXCIsXG4gIFwidHJpYWdlX21heF90dXJuc1wiLFxuICBcInNwZWNfbWF4X3R1cm5zXCIsXG4gIFwicGxhbl9tYXhfdHVybnNcIixcbiAgXCJpbXBsX21heF90dXJuc1wiLFxuICBcInJldmlld19tYXhfdHVybnNfcGVyX2xlbnNcIixcbiAgXCJ0cmlhZ2VfdGltZW91dF9tc1wiLFxuICBcInNwZWNfdGltZW91dF9tc1wiLFxuICBcInBsYW5fdGltZW91dF9tc1wiLFxuICBcImltcGxfdGltZW91dF9tc1wiLFxuICBcInJldmlld190aW1lb3V0X21zX3Blcl9sZW5zXCIsXG4gIFwicmV2aWV3X29ubHlcIixcbiAgXCJtb2RlXCIsXG4gIFwic3RhZ2VzXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRW50cnkoZGVwczogUnVuRW50cnlEZXBzID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByYXdJbnB1dHMgPSByZWFkQWN0aW9uSW5wdXRzKCk7XG4gICAgY29uc3QgY29uZmlnID0gcGFyc2VDb25maWcocmF3SW5wdXRzKTtcblxuICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSAocHJvY2Vzcy5lbnYuR0lUSFVCX1JFUE9TSVRPUlkgPz8gXCJcIikuc3BsaXQoXCIvXCIpO1xuICAgIGlmICghb3duZXIgfHwgIXJlcG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdJVEhVQl9SRVBPU0lUT1JZIGlzIG5vdCBzZXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnROYW1lID0gcHJvY2Vzcy5lbnYuR0lUSFVCX0VWRU5UX05BTUUgPz8gXCJcIjtcbiAgICBjb25zdCBldmVudFBhdGggPSBwcm9jZXNzLmVudi5HSVRIVUJfRVZFTlRfUEFUSCA/PyBcIlwiO1xuICAgIGlmICghZXZlbnRQYXRoKSB0aHJvdyBuZXcgRXJyb3IoXCJHSVRIVUJfRVZFTlRfUEFUSCBpcyBub3Qgc2V0XCIpO1xuICAgIGNvbnN0IGV2ZW50UGF5bG9hZCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGV2ZW50UGF0aCwgXCJ1dGY4XCIpKSBhc1xuICAgICAgfCBFdmVudFBheWxvYWRcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIGNvbnN0IGV2ZW50ID0geyBuYW1lOiBldmVudE5hbWUsIHBheWxvYWQ6IGV2ZW50UGF5bG9hZCBhcyBFdmVudFBheWxvYWQgfTtcblxuICAgIC8vIEdpdEh1YiBBY3Rpb25zIGRvZXMgbm90IGluamVjdCBHSVRIVUJfVE9LRU4gaW50byBOb2RlIGFjdGlvbiBzdGVwc1xuICAgIC8vIGF1dG9tYXRpY2FsbHk7IHRoZSBjYWxsZXIgcGFzc2VzIGl0IGV4cGxpY2l0bHkgdmlhIHRoZSBnaXRodWJfdG9rZW5cbiAgICAvLyBpbnB1dCAodHlwaWNhbGx5IGAke3sgZ2l0aHViLnRva2VuIH19YCkuIEZhbGwgYmFjayB0byB0aGUgZW52IHZhciBmb3JcbiAgICAvLyBjYWxsZXJzIHdobyBzZXQgaXQgb24gdGhlIHN0ZXAgZXhwbGljaXRseS5cbiAgICBjb25zdCBnaXRodWJUb2tlbiA9XG4gICAgICByYXdJbnB1dHMuZ2l0aHViX3Rva2VuIHx8IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTiB8fCBudWxsO1xuXG4gICAgY29uc3QgcHJpbWFyeUF1dGggPSBhd2FpdCByZXNvbHZlQXV0aCh7XG4gICAgICBwcmVtaW50ZWQ6IHJhd0lucHV0cy5naXRodWJfYXBwX3Rva2VuID8/IG51bGwsXG4gICAgICBhcHA6IGNvbmZpZy5naXRodWJBcHAsXG4gICAgICBmYWxsYmFja1Rva2VuOiBnaXRodWJUb2tlbixcbiAgICAgIG93bmVyLFxuICAgICAgcmVwbyxcbiAgICB9KTtcbiAgICBpZiAoIXByaW1hcnlBdXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTm8gR2l0SHViIGNyZWRlbnRpYWxzIGF2YWlsYWJsZS4gUHJvdmlkZSBvbmUgb2Y6IGdpdGh1Yl9hcHBfdG9rZW4gKHByZW1pbnRlZCBpbnN0YWxsYXRpb24gdG9rZW4pLCBnaXRodWJfYXBwX2NsaWVudF9pZCtnaXRodWJfYXBwX3ByaXZhdGVfa2V5IChBcHAgY3JlZGVudGlhbHMgZm9yIGluLXByb2Nlc3MgbWludGluZyksIG9yIGVuc3VyZSBHSVRIVUJfVE9LRU4gaXMgc2V0IG9uIHRoZSBqb2IuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJldmlld0F1dGggPSBhd2FpdCByZXNvbHZlQXV0aCh7XG4gICAgICBwcmVtaW50ZWQ6IHJhd0lucHV0cy5naXRodWJfYXBwX3Jldmlld190b2tlbiA/PyBudWxsLFxuICAgICAgYXBwOiBjb25maWcucmV2aWV3R2l0aHViQXBwLFxuICAgICAgZmFsbGJhY2tUb2tlbjogZ2l0aHViVG9rZW4sXG4gICAgICBvd25lcixcbiAgICAgIHJlcG8sXG4gICAgfSk7XG5cbiAgICBpZiAocHJpbWFyeUF1dGgua2luZCA9PT0gXCJ0b2tlblwiICYmIHByaW1hcnlBdXRoLnNvdXJjZSA9PT0gXCJnaXRodWJfdG9rZW5cIikge1xuICAgICAgY29yZS53YXJuaW5nKFxuICAgICAgICBcIlNob3BmbG9vciBpcyBydW5uaW5nIHdpdGggdGhlIHdvcmtmbG93J3MgZGVmYXVsdCBHSVRIVUJfVE9LRU4uIE11dGF0aW9ucyBtYWRlIHdpdGggdGhpcyB0b2tlbiB3aWxsIG5vdCB0cmlnZ2VyIGRvd25zdHJlYW0gd29ya2Zsb3dzIChsYWJlbCBmbGlwcywgUFIgcHVzaGVzLCBhbmQgcmV2aWV3IHN1Ym1pc3Npb25zIHdpbGwgZmFpbCB0byBhZHZhbmNlIHRoZSBwaXBlbGluZSkuIEluc3RhbGwgYSBTaG9wZmxvb3IgR2l0SHViIEFwcCBhbmQgcHJvdmlkZSBnaXRodWJfYXBwX2NsaWVudF9pZCArIGdpdGh1Yl9hcHBfcHJpdmF0ZV9rZXkgZm9yIGZ1bGwgZnVuY3Rpb25hbGl0eS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIHRoZSByZXBvLWxvY2FsIGdpdCBpZGVudGl0eSBzbyB0aGUgQ2xhdWRlIGltcGxlbWVudCBhZ2VudFxuICAgIC8vIGNhbiBgZ2l0IGNvbW1pdGAgd2l0aG91dCBmbGFpbGluZy4gV2l0aG91dCB0aGlzLCBldmVyeSBpbXBsZW1lbnQgcnVuXG4gICAgLy8gZGllcyBvbiBgQ29tbWl0dGVyIGlkZW50aXR5IHVua25vd25gLiBEb25lIGJlZm9yZSB0aGUgb3JjaGVzdHJhdG9yXG4gICAgLy8gZGlzcGF0Y2hlcyBzbyBhbGwgc3RhZ2UgYWdlbnRzIGluaGVyaXQgYSBmdWxseSBjb25maWd1cmVkIGlkZW50aXR5LlxuICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgcmVzb2x2ZUJvdElkZW50aXR5KHByaW1hcnlBdXRoKTtcbiAgICBhd2FpdCBhcHBseUdpdElkZW50aXR5KHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGlkZW50aXR5LFxuICAgICAgc3NoU2lnbmluZ0tleTogY29uZmlnLnNzaFNpZ25pbmdLZXksXG4gICAgfSk7XG4gICAgaWYgKFxuICAgICAgcmV2aWV3QXV0aCAmJlxuICAgICAgcmV2aWV3QXV0aC5raW5kID09PSBcInRva2VuXCIgJiZcbiAgICAgIHJldmlld0F1dGguc291cmNlID09PSBcImdpdGh1Yl90b2tlblwiXG4gICAgKSB7XG4gICAgICBjb3JlLndhcm5pbmcoXG4gICAgICAgIFwiU2hvcGZsb29yJ3MgcmV2aWV3IHBhdGggaXMgcnVubmluZyB3aXRoIHRoZSB3b3JrZmxvdydzIGRlZmF1bHQgR0lUSFVCX1RPS0VOLiBSZXZpZXdzIHN1Ym1pdHRlZCB3aXRoIHRoaXMgdG9rZW4gY2Fubm90IEFQUFJPVkUgb3IgUkVRVUVTVF9DSEFOR0VTIG9uIGEgUFIgYXV0aG9yZWQgYnkgZ2l0aHViLWFjdGlvbnNbYm90XSwgYW5kIGFueSByZXN1bHRpbmcgZXZlbnRzIHdpbGwgbm90IHRyaWdnZXIgZG93bnN0cmVhbSB3b3JrZmxvd3MuIFByb3ZpZGUgYSBkaXN0aW5jdCByZXZpZXcgQXBwIHZpYSBnaXRodWJfYXBwX3Jldmlld19jbGllbnRfaWQgKyBnaXRodWJfYXBwX3Jldmlld19wcml2YXRlX2tleS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVuSWQgPSBwcm9jZXNzLmVudi5HSVRIVUJfUlVOX0lEID8/IGBsb2NhbC0ke0RhdGUubm93KCl9YDtcbiAgICBjb25zdCBhdWRpdCA9XG4gICAgICBkZXBzLmF1ZGl0U2luayA/P1xuICAgICAgY29tYmluZUVtaXR0ZXJzKGNyZWF0ZUF1ZGl0RW1pdHRlcih7IHJ1bklkIH0pLCBjcmVhdGVTdGVwU3VtbWFyeU1pcnJvcigpKTtcblxuICAgIGNvbnN0IG9jdG9raXRGYWN0b3J5ID0gZGVwcy5vY3Rva2l0RmFjdG9yeSA/PyBkZWZhdWx0T2N0b2tpdEZhY3Rvcnk7XG4gICAgY29uc3QgZ2l0aHViID0gbmV3IEdpdEh1YkFkYXB0ZXIoXG4gICAgICBvY3Rva2l0RmFjdG9yeShwcmltYXJ5QXV0aCksXG4gICAgICB7IG93bmVyLCByZXBvIH0sXG4gICAgICBhdWRpdCxcbiAgICApO1xuICAgIGNvbnN0IHJldmlld0dpdGh1YiA9IHJldmlld0F1dGhcbiAgICAgID8gbmV3IEdpdEh1YkFkYXB0ZXIob2N0b2tpdEZhY3RvcnkocmV2aWV3QXV0aCksIHsgb3duZXIsIHJlcG8gfSwgYXVkaXQpXG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCBhZ2VudCA9IGRlcHMuYWdlbnRGYWN0b3J5XG4gICAgICA/IGRlcHMuYWdlbnRGYWN0b3J5KClcbiAgICAgIDogY29uZmlnLmFnZW50UHJvdmlkZXIgPT09IFwiY29kZXhcIlxuICAgICAgICA/IG5ldyBDb2RleEFnZW50QWRhcHRlcihidWlsZENvZGV4T3B0aW9ucyhjb25maWcpKVxuICAgICAgICA6IG5ldyBDbGF1ZGVBZ2VudEFkYXB0ZXIoYnVpbGRBZ2VudEVudkZyb21Db25maWcoY29uZmlnKSk7XG5cbiAgICBjb25zdCByZXZpZXdPbmx5ID0gcmF3SW5wdXRzLnJldmlld19vbmx5ID09PSBcInRydWVcIjtcblxuICAgIC8vIEJpbmQgdGhlIHJlc29sdmVkIEF1dGhTcGVjIGludG8gYSB0b2tlbiByZXNvbHZlciBhbmQgdGhlIGltcGwtc3RhZ2UgZ2l0XG4gICAgLy8gaGVscGVycy4gVGhlIGltcGxlbWVudCBydW5uZXIgY2FsbHMgdGhlc2UgdG8gc2V0IHRoZSBsb2NhbCBicmFuY2ggdXBcbiAgICAvLyBiZWZvcmUgdGhlIGFnZW50IHJ1bnMgYW5kIHRvIHB1c2ggdGhlIGFnZW50J3MgY29tbWl0cyBhZnRlcndhcmRzLiBXZVxuICAgIC8vIGJ1aWxkIHRoZSBjbG9zdXJlIG9uY2UgYXQgc3RhcnR1cCBzbyBlYWNoIGhlbHBlciBpbnZvY2F0aW9uIGNhbiBhc2tcbiAgICAvLyBmb3IgYSBmcmVzaCBpbnN0YWxsYXRpb24gdG9rZW4gKHJlbGV2YW50IHdoZW4gdGhlIGFnZW50IHJ1biBvdXRsaXZlc1xuICAgIC8vIHRoZSBpbnN0YWxsYXRpb24tdG9rZW4gVFRMKS5cbiAgICBjb25zdCByZXNvbHZlR2l0VG9rZW4gPSB0b2tlblJlc29sdmVyRm9yKHByaW1hcnlBdXRoLCBvd25lciwgcmVwbyk7XG4gICAgY29uc3QgZ2l0T3BzOiBHaXRPcHMgPSB7XG4gICAgICBhc3luYyBwcmVwYXJlSW1wbENoZWNrb3V0KG9wdHMpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCByZXNvbHZlR2l0VG9rZW4oKTtcbiAgICAgICAgYXdhaXQgcHJlcGFyZUltcGxDaGVja291dCh7XG4gICAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgYXN5bmMgcHVzaEltcGxDb21taXRzKG9wdHMpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCByZXNvbHZlR2l0VG9rZW4oKTtcbiAgICAgICAgYXdhaXQgcHVzaEltcGxDb21taXRzKHtcbiAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgcmVwbyxcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBhc3luYyBwcmVwYXJlUmV2aWV3QmFzZShvcHRzKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzb2x2ZUdpdFRva2VuKCk7XG4gICAgICAgIGF3YWl0IHByZXBhcmVSZXZpZXdCYXNlKHtcbiAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgcmVwbyxcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bk9yY2hlc3RyYXRvcih7XG4gICAgICBldmVudCxcbiAgICAgIHJlcG86IHsgb3duZXIsIG5hbWU6IHJlcG8gfSxcbiAgICAgIGdpdGh1YixcbiAgICAgIHJldmlld0dpdGh1YixcbiAgICAgIGFnZW50LFxuICAgICAgYXVkaXQsXG4gICAgICBjb25maWcsXG4gICAgICBydW5JZCxcbiAgICAgIGdpdE9wcyxcbiAgICAgIC4uLihyZXZpZXdPbmx5ID8geyByZXZpZXdPbmx5OiB0cnVlIH0gOiB7fSksXG4gICAgfSk7XG4gICAgY29yZS5zZXRPdXRwdXQoXCJzdGFnZVwiLCByZXN1bHQuc3RhZ2UpO1xuICAgIGNvcmUuc2V0T3V0cHV0KFwiZXhlY3V0ZWRcIiwgcmVzdWx0LmV4ZWN1dGVkID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb3JlLnNldEZhaWxlZChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycikpO1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIuc3RhY2spIGNvcmUuZXJyb3IoZXJyLnN0YWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0T2N0b2tpdEZhY3RvcnkoYXV0aDogQXV0aFNwZWMpOiBPY3Rva2l0TGlrZSB7XG4gIGlmIChhdXRoLmtpbmQgPT09IFwidG9rZW5cIikge1xuICAgIHJldHVybiBuZXcgT2N0b2tpdCh7IGF1dGg6IGF1dGgudG9rZW4gfSkgYXMgdW5rbm93biBhcyBPY3Rva2l0TGlrZTtcbiAgfVxuICAvLyBPY3Rva2l0J3MgYXV0aC1hcHAgc3RyYXRlZ3kgY2FjaGVzIHRoZSBpbnN0YWxsYXRpb24gdG9rZW4gaW4tcHJvY2VzcyBhbmRcbiAgLy8gcmVmcmVzaGVzIGl0IHRyYW5zcGFyZW50bHkgYmVmb3JlIGV4cGlyeSBvbiBldmVyeSByZXF1ZXN0LiBUaGF0IGtlZXBzIHRoZVxuICAvLyBwaXBlbGluZSBhbGl2ZSBwYXN0IHRoZSA2MC1taW51dGUgaW5zdGFsbGF0aW9uLXRva2VuIFRUTCBldmVuIHdoZW4gYW5cbiAgLy8gaW1wbGVtZW50IHJ1biBzcGFucyBob3Vycy5cbiAgcmV0dXJuIG5ldyBPY3Rva2l0KHtcbiAgICBhdXRoU3RyYXRlZ3k6IGNyZWF0ZUFwcEF1dGgsXG4gICAgYXV0aDoge1xuICAgICAgYXBwSWQ6IGF1dGguY2xpZW50SWQsXG4gICAgICBwcml2YXRlS2V5OiBhdXRoLnByaXZhdGVLZXksXG4gICAgICBpbnN0YWxsYXRpb25JZDogYXV0aC5pbnN0YWxsYXRpb25JZCxcbiAgICB9LFxuICB9KSBhcyB1bmtub3duIGFzIE9jdG9raXRMaWtlO1xufVxuXG5mdW5jdGlvbiByZWFkQWN0aW9uSW5wdXRzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAvLyBTa2lwIGtleXMgd2hvc2UgQWN0aW9uIGlucHV0IGlzIGVtcHR5IHNvIFpvZCdzIGAuZGVmYXVsdCgpYCBjYW4gZmlyZS5cbiAgLy8gcGFyc2VDb25maWcncyBgY2xlYW5lZGAgbWFwIHByZXNlcnZlcyB3aGF0ZXZlciBrZXlzIGFyZSBwcmVzZW50LCBzb1xuICAvLyBlbWl0dGluZyBgXCJcImAgd291bGQgc3VwcHJlc3MgZGVmYXVsdHMgZm9yIGV2ZXJ5IG9wdGlvbmFsIGlucHV0LlxuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBrIG9mIElOUFVUX0tFWVMpIHtcbiAgICBjb25zdCB2ID0gY29yZS5nZXRJbnB1dChrKTtcbiAgICBpZiAodikgb3V0W2tdID0gdjtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vLyBDTEkgZW50cnkgXHUyMDE0IGF1dG8taW52b2tlZCB3aGVuIHRoaXMgbW9kdWxlIGlzIHRoZSBidW5kbGUncyBlbnRyeSBwb2ludC5cbi8vIFRlc3RzIHNldCBTSE9QRkxPT1JfSU5WT0tFX0VOVFJZPTAgdG8gaW1wb3J0IHdpdGhvdXQgZmlyaW5nLlxuaWYgKHByb2Nlc3MuZW52LlNIT1BGTE9PUl9JTlZPS0VfRU5UUlkgIT09IFwiMFwiKSB7XG4gIHJ1bkVudHJ5KCkuY2F0Y2goKGVycikgPT4ge1xuICAgIGNvcmUuc2V0RmFpbGVkKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9KTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZ2V0VXNlckFnZW50KCkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJvYmplY3RcIiAmJiBcInVzZXJBZ2VudFwiIGluIG5hdmlnYXRvcikge1xuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MudmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGBOb2RlLmpzLyR7cHJvY2Vzcy52ZXJzaW9uLnN1YnN0cigxKX0gKCR7cHJvY2Vzcy5wbGF0Zm9ybX07ICR7XG4gICAgICBwcm9jZXNzLmFyY2hcbiAgICB9KWA7XG4gIH1cblxuICByZXR1cm4gXCI8ZW52aXJvbm1lbnQgdW5kZXRlY3RhYmxlPlwiO1xufVxuIiwgIi8vIHBrZy9kaXN0LXNyYy9kZWZhdWx0cy5qc1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiMC4wLjAtZGV2ZWxvcG1lbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2RlZmF1bHRzLmpzXG52YXIgdXNlckFnZW50ID0gYG9jdG9raXQtZW5kcG9pbnQuanMvJHtWRVJTSU9OfSAke2dldFVzZXJBZ2VudCgpfWA7XG52YXIgREVGQVVMVFMgPSB7XG4gIG1ldGhvZDogXCJHRVRcIixcbiAgYmFzZVVybDogXCJodHRwczovL2FwaS5naXRodWIuY29tXCIsXG4gIGhlYWRlcnM6IHtcbiAgICBhY2NlcHQ6IFwiYXBwbGljYXRpb24vdm5kLmdpdGh1Yi52Mytqc29uXCIsXG4gICAgXCJ1c2VyLWFnZW50XCI6IHVzZXJBZ2VudFxuICB9LFxuICBtZWRpYVR5cGU6IHtcbiAgICBmb3JtYXQ6IFwiXCJcbiAgfVxufTtcblxuLy8gcGtnL2Rpc3Qtc3JjL3V0aWwvbG93ZXJjYXNlLWtleXMuanNcbmZ1bmN0aW9uIGxvd2VyY2FzZUtleXMob2JqZWN0KSB7XG4gIGlmICghb2JqZWN0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLnJlZHVjZSgobmV3T2JqLCBrZXkpID0+IHtcbiAgICBuZXdPYmpba2V5LnRvTG93ZXJDYXNlKCldID0gb2JqZWN0W2tleV07XG4gICAgcmV0dXJuIG5ld09iajtcbiAgfSwge30pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9pcy1wbGFpbi1vYmplY3QuanNcbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IEN0b3IgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvdG8sIFwiY29uc3RydWN0b3JcIikgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gXCJmdW5jdGlvblwiICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmIEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsKEN0b3IpID09PSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCh2YWx1ZSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy91dGlsL21lcmdlLWRlZXAuanNcbmZ1bmN0aW9uIG1lcmdlRGVlcChkZWZhdWx0cywgb3B0aW9ucykge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cyk7XG4gIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbnNba2V5XSkpIHtcbiAgICAgIGlmICghKGtleSBpbiBkZWZhdWx0cykpIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7IFtrZXldOiBvcHRpb25zW2tleV0gfSk7XG4gICAgICBlbHNlIHJlc3VsdFtrZXldID0gbWVyZ2VEZWVwKGRlZmF1bHRzW2tleV0sIG9wdGlvbnNba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7IFtrZXldOiBvcHRpb25zW2tleV0gfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3V0aWwvcmVtb3ZlLXVuZGVmaW5lZC1wcm9wZXJ0aWVzLmpzXG5mdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKG9iaikge1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBpZiAob2JqW2tleV0gPT09IHZvaWQgMCkge1xuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvbWVyZ2UuanNcbmZ1bmN0aW9uIG1lcmdlKGRlZmF1bHRzLCByb3V0ZSwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHJvdXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgbGV0IFttZXRob2QsIHVybF0gPSByb3V0ZS5zcGxpdChcIiBcIik7XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odXJsID8geyBtZXRob2QsIHVybCB9IDogeyB1cmw6IG1ldGhvZCB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgcm91dGUpO1xuICB9XG4gIG9wdGlvbnMuaGVhZGVycyA9IGxvd2VyY2FzZUtleXMob3B0aW9ucy5oZWFkZXJzKTtcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvcHRpb25zKTtcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvcHRpb25zLmhlYWRlcnMpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0gbWVyZ2VEZWVwKGRlZmF1bHRzIHx8IHt9LCBvcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMudXJsID09PSBcIi9ncmFwaHFsXCIpIHtcbiAgICBpZiAoZGVmYXVsdHMgJiYgZGVmYXVsdHMubWVkaWFUeXBlLnByZXZpZXdzPy5sZW5ndGgpIHtcbiAgICAgIG1lcmdlZE9wdGlvbnMubWVkaWFUeXBlLnByZXZpZXdzID0gZGVmYXVsdHMubWVkaWFUeXBlLnByZXZpZXdzLmZpbHRlcihcbiAgICAgICAgKHByZXZpZXcpID0+ICFtZXJnZWRPcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cy5pbmNsdWRlcyhwcmV2aWV3KVxuICAgICAgKS5jb25jYXQobWVyZ2VkT3B0aW9ucy5tZWRpYVR5cGUucHJldmlld3MpO1xuICAgIH1cbiAgICBtZXJnZWRPcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cyA9IChtZXJnZWRPcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cyB8fCBbXSkubWFwKChwcmV2aWV3KSA9PiBwcmV2aWV3LnJlcGxhY2UoLy1wcmV2aWV3LywgXCJcIikpO1xuICB9XG4gIHJldHVybiBtZXJnZWRPcHRpb25zO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9hZGQtcXVlcnktcGFyYW1ldGVycy5qc1xuZnVuY3Rpb24gYWRkUXVlcnlQYXJhbWV0ZXJzKHVybCwgcGFyYW1ldGVycykge1xuICBjb25zdCBzZXBhcmF0b3IgPSAvXFw/Ly50ZXN0KHVybCkgPyBcIiZcIiA6IFwiP1wiO1xuICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpO1xuICBpZiAobmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICByZXR1cm4gdXJsICsgc2VwYXJhdG9yICsgbmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgaWYgKG5hbWUgPT09IFwicVwiKSB7XG4gICAgICByZXR1cm4gXCJxPVwiICsgcGFyYW1ldGVycy5xLnNwbGl0KFwiK1wiKS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKFwiK1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke25hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnNbbmFtZV0pfWA7XG4gIH0pLmpvaW4oXCImXCIpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9leHRyYWN0LXVybC12YXJpYWJsZS1uYW1lcy5qc1xudmFyIHVybFZhcmlhYmxlUmVnZXggPSAvXFx7W157fX1dK1xcfS9nO1xuZnVuY3Rpb24gcmVtb3ZlTm9uQ2hhcnModmFyaWFibGVOYW1lKSB7XG4gIHJldHVybiB2YXJpYWJsZU5hbWUucmVwbGFjZSgvKD86XlxcVyspfCg/Oig/PCFcXFcpXFxXKyQpL2csIFwiXCIpLnNwbGl0KC8sLyk7XG59XG5mdW5jdGlvbiBleHRyYWN0VXJsVmFyaWFibGVOYW1lcyh1cmwpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaCh1cmxWYXJpYWJsZVJlZ2V4KTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBtYXRjaGVzLm1hcChyZW1vdmVOb25DaGFycykucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdXRpbC9vbWl0LmpzXG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5c1RvT21pdCkge1xuICBjb25zdCByZXN1bHQgPSB7IF9fcHJvdG9fXzogbnVsbCB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmplY3QpKSB7XG4gICAgaWYgKGtleXNUb09taXQuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3V0aWwvdXJsLXRlbXBsYXRlLmpzXG5mdW5jdGlvbiBlbmNvZGVSZXNlcnZlZChzdHIpIHtcbiAgcmV0dXJuIHN0ci5zcGxpdCgvKCVbMC05QS1GYS1mXXsyfSkvZykubWFwKGZ1bmN0aW9uKHBhcnQpIHtcbiAgICBpZiAoIS8lWzAtOUEtRmEtZl0vLnRlc3QocGFydCkpIHtcbiAgICAgIHBhcnQgPSBlbmNvZGVVUkkocGFydCkucmVwbGFjZSgvJTVCL2csIFwiW1wiKS5yZXBsYWNlKC8lNUQvZywgXCJdXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydDtcbiAgfSkuam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIGVuY29kZVVucmVzZXJ2ZWQoc3RyKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyKS5yZXBsYWNlKC9bIScoKSpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gXCIlXCIgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlLCBrZXkpIHtcbiAgdmFsdWUgPSBvcGVyYXRvciA9PT0gXCIrXCIgfHwgb3BlcmF0b3IgPT09IFwiI1wiID8gZW5jb2RlUmVzZXJ2ZWQodmFsdWUpIDogZW5jb2RlVW5yZXNlcnZlZCh2YWx1ZSk7XG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4gZW5jb2RlVW5yZXNlcnZlZChrZXkpICsgXCI9XCIgKyB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZvaWQgMCAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzS2V5T3BlcmF0b3Iob3BlcmF0b3IpIHtcbiAgcmV0dXJuIG9wZXJhdG9yID09PSBcIjtcIiB8fCBvcGVyYXRvciA9PT0gXCImXCIgfHwgb3BlcmF0b3IgPT09IFwiP1wiO1xufVxuZnVuY3Rpb24gZ2V0VmFsdWVzKGNvbnRleHQsIG9wZXJhdG9yLCBrZXksIG1vZGlmaWVyKSB7XG4gIHZhciB2YWx1ZSA9IGNvbnRleHRba2V5XSwgcmVzdWx0ID0gW107XG4gIGlmIChpc0RlZmluZWQodmFsdWUpICYmIHZhbHVlICE9PSBcIlwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgaWYgKG1vZGlmaWVyICYmIG1vZGlmaWVyICE9PSBcIipcIikge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBwYXJzZUludChtb2RpZmllciwgMTApKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICBlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUsIGlzS2V5T3BlcmF0b3Iob3BlcmF0b3IpID8ga2V5IDogXCJcIilcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtb2RpZmllciA9PT0gXCIqXCIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUuZmlsdGVyKGlzRGVmaW5lZCkuZm9yRWFjaChmdW5jdGlvbih2YWx1ZTIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgICBlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUyLCBpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSA/IGtleSA6IFwiXCIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodmFsdWVba10pKSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZVtrXSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0bXAgPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUuZmlsdGVyKGlzRGVmaW5lZCkuZm9yRWFjaChmdW5jdGlvbih2YWx1ZTIpIHtcbiAgICAgICAgICAgIHRtcC5wdXNoKGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZTIpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlW2tdKSkge1xuICAgICAgICAgICAgICB0bXAucHVzaChlbmNvZGVVbnJlc2VydmVkKGspKTtcbiAgICAgICAgICAgICAgdG1wLnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlW2tdLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNLZXlPcGVyYXRvcihvcGVyYXRvcikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChlbmNvZGVVbnJlc2VydmVkKGtleSkgKyBcIj1cIiArIHRtcC5qb2luKFwiLFwiKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodG1wLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHRtcC5qb2luKFwiLFwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKG9wZXJhdG9yID09PSBcIjtcIikge1xuICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVW5yZXNlcnZlZChrZXkpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBcIlwiICYmIChvcGVyYXRvciA9PT0gXCImXCIgfHwgb3BlcmF0b3IgPT09IFwiP1wiKSkge1xuICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVW5yZXNlcnZlZChrZXkpICsgXCI9XCIpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHJlc3VsdC5wdXNoKFwiXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VVcmwodGVtcGxhdGUpIHtcbiAgcmV0dXJuIHtcbiAgICBleHBhbmQ6IGV4cGFuZC5iaW5kKG51bGwsIHRlbXBsYXRlKVxuICB9O1xufVxuZnVuY3Rpb24gZXhwYW5kKHRlbXBsYXRlLCBjb250ZXh0KSB7XG4gIHZhciBvcGVyYXRvcnMgPSBbXCIrXCIsIFwiI1wiLCBcIi5cIiwgXCIvXCIsIFwiO1wiLCBcIj9cIiwgXCImXCJdO1xuICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoXG4gICAgL1xceyhbXlxce1xcfV0rKVxcfXwoW15cXHtcXH1dKykvZyxcbiAgICBmdW5jdGlvbihfLCBleHByZXNzaW9uLCBsaXRlcmFsKSB7XG4gICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICBsZXQgb3BlcmF0b3IgPSBcIlwiO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKG9wZXJhdG9ycy5pbmRleE9mKGV4cHJlc3Npb24uY2hhckF0KDApKSAhPT0gLTEpIHtcbiAgICAgICAgICBvcGVyYXRvciA9IGV4cHJlc3Npb24uY2hhckF0KDApO1xuICAgICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgICBleHByZXNzaW9uLnNwbGl0KC8sL2cpLmZvckVhY2goZnVuY3Rpb24odmFyaWFibGUpIHtcbiAgICAgICAgICB2YXIgdG1wID0gLyhbXjpcXCpdKikoPzo6KFxcZCspfChcXCopKT8vLmV4ZWModmFyaWFibGUpO1xuICAgICAgICAgIHZhbHVlcy5wdXNoKGdldFZhbHVlcyhjb250ZXh0LCBvcGVyYXRvciwgdG1wWzFdLCB0bXBbMl0gfHwgdG1wWzNdKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3BlcmF0b3IgJiYgb3BlcmF0b3IgIT09IFwiK1wiKSB7XG4gICAgICAgICAgdmFyIHNlcGFyYXRvciA9IFwiLFwiO1xuICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gXCI/XCIpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiJlwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgIT09IFwiI1wiKSB7XG4gICAgICAgICAgICBzZXBhcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh2YWx1ZXMubGVuZ3RoICE9PSAwID8gb3BlcmF0b3IgOiBcIlwiKSArIHZhbHVlcy5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlcy5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVJlc2VydmVkKGxpdGVyYWwpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgaWYgKHRlbXBsYXRlID09PSBcIi9cIikge1xuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9wYXJzZS5qc1xuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICBsZXQgbWV0aG9kID0gb3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgbGV0IHVybCA9IChvcHRpb25zLnVybCB8fCBcIi9cIikucmVwbGFjZSgvOihbYS16XVxcdyspL2csIFwieyQxfVwiKTtcbiAgbGV0IGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMpO1xuICBsZXQgYm9keTtcbiAgbGV0IHBhcmFtZXRlcnMgPSBvbWl0KG9wdGlvbnMsIFtcbiAgICBcIm1ldGhvZFwiLFxuICAgIFwiYmFzZVVybFwiLFxuICAgIFwidXJsXCIsXG4gICAgXCJoZWFkZXJzXCIsXG4gICAgXCJyZXF1ZXN0XCIsXG4gICAgXCJtZWRpYVR5cGVcIlxuICBdKTtcbiAgY29uc3QgdXJsVmFyaWFibGVOYW1lcyA9IGV4dHJhY3RVcmxWYXJpYWJsZU5hbWVzKHVybCk7XG4gIHVybCA9IHBhcnNlVXJsKHVybCkuZXhwYW5kKHBhcmFtZXRlcnMpO1xuICBpZiAoIS9eaHR0cC8udGVzdCh1cmwpKSB7XG4gICAgdXJsID0gb3B0aW9ucy5iYXNlVXJsICsgdXJsO1xuICB9XG4gIGNvbnN0IG9taXR0ZWRQYXJhbWV0ZXJzID0gT2JqZWN0LmtleXMob3B0aW9ucykuZmlsdGVyKChvcHRpb24pID0+IHVybFZhcmlhYmxlTmFtZXMuaW5jbHVkZXMob3B0aW9uKSkuY29uY2F0KFwiYmFzZVVybFwiKTtcbiAgY29uc3QgcmVtYWluaW5nUGFyYW1ldGVycyA9IG9taXQocGFyYW1ldGVycywgb21pdHRlZFBhcmFtZXRlcnMpO1xuICBjb25zdCBpc0JpbmFyeVJlcXVlc3QgPSAvYXBwbGljYXRpb25cXC9vY3RldC1zdHJlYW0vaS50ZXN0KGhlYWRlcnMuYWNjZXB0KTtcbiAgaWYgKCFpc0JpbmFyeVJlcXVlc3QpIHtcbiAgICBpZiAob3B0aW9ucy5tZWRpYVR5cGUuZm9ybWF0KSB7XG4gICAgICBoZWFkZXJzLmFjY2VwdCA9IGhlYWRlcnMuYWNjZXB0LnNwbGl0KC8sLykubWFwKFxuICAgICAgICAoZm9ybWF0KSA9PiBmb3JtYXQucmVwbGFjZShcbiAgICAgICAgICAvYXBwbGljYXRpb25cXC92bmQoXFwuXFx3KykoXFwudjMpPyhcXC5cXHcrKT8oXFwranNvbik/JC8sXG4gICAgICAgICAgYGFwcGxpY2F0aW9uL3ZuZCQxJDIuJHtvcHRpb25zLm1lZGlhVHlwZS5mb3JtYXR9YFxuICAgICAgICApXG4gICAgICApLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodXJsLmVuZHNXaXRoKFwiL2dyYXBocWxcIikpIHtcbiAgICAgIGlmIChvcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cz8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHByZXZpZXdzRnJvbUFjY2VwdEhlYWRlciA9IGhlYWRlcnMuYWNjZXB0Lm1hdGNoKC8oPzwhW1xcdy1dKVtcXHctXSsoPz0tcHJldmlldykvZykgfHwgW107XG4gICAgICAgIGhlYWRlcnMuYWNjZXB0ID0gcHJldmlld3NGcm9tQWNjZXB0SGVhZGVyLmNvbmNhdChvcHRpb25zLm1lZGlhVHlwZS5wcmV2aWV3cykubWFwKChwcmV2aWV3KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5tZWRpYVR5cGUuZm9ybWF0ID8gYC4ke29wdGlvbnMubWVkaWFUeXBlLmZvcm1hdH1gIDogXCIranNvblwiO1xuICAgICAgICAgIHJldHVybiBgYXBwbGljYXRpb24vdm5kLmdpdGh1Yi4ke3ByZXZpZXd9LXByZXZpZXcke2Zvcm1hdH1gO1xuICAgICAgICB9KS5qb2luKFwiLFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKFtcIkdFVFwiLCBcIkhFQURcIl0uaW5jbHVkZXMobWV0aG9kKSkge1xuICAgIHVybCA9IGFkZFF1ZXJ5UGFyYW1ldGVycyh1cmwsIHJlbWFpbmluZ1BhcmFtZXRlcnMpO1xuICB9IGVsc2Uge1xuICAgIGlmIChcImRhdGFcIiBpbiByZW1haW5pbmdQYXJhbWV0ZXJzKSB7XG4gICAgICBib2R5ID0gcmVtYWluaW5nUGFyYW1ldGVycy5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVtYWluaW5nUGFyYW1ldGVycykubGVuZ3RoKSB7XG4gICAgICAgIGJvZHkgPSByZW1haW5pbmdQYXJhbWV0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gJiYgdHlwZW9mIGJvZHkgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBoZWFkZXJzW1wiY29udGVudC10eXBlXCJdID0gXCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04XCI7XG4gIH1cbiAgaWYgKFtcIlBBVENIXCIsIFwiUFVUXCJdLmluY2x1ZGVzKG1ldGhvZCkgJiYgdHlwZW9mIGJvZHkgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBib2R5ID0gXCJcIjtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7IG1ldGhvZCwgdXJsLCBoZWFkZXJzIH0sXG4gICAgdHlwZW9mIGJvZHkgIT09IFwidW5kZWZpbmVkXCIgPyB7IGJvZHkgfSA6IG51bGwsXG4gICAgb3B0aW9ucy5yZXF1ZXN0ID8geyByZXF1ZXN0OiBvcHRpb25zLnJlcXVlc3QgfSA6IG51bGxcbiAgKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2VuZHBvaW50LXdpdGgtZGVmYXVsdHMuanNcbmZ1bmN0aW9uIGVuZHBvaW50V2l0aERlZmF1bHRzKGRlZmF1bHRzLCByb3V0ZSwgb3B0aW9ucykge1xuICByZXR1cm4gcGFyc2UobWVyZ2UoZGVmYXVsdHMsIHJvdXRlLCBvcHRpb25zKSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy93aXRoLWRlZmF1bHRzLmpzXG5mdW5jdGlvbiB3aXRoRGVmYXVsdHMob2xkRGVmYXVsdHMsIG5ld0RlZmF1bHRzKSB7XG4gIGNvbnN0IERFRkFVTFRTMiA9IG1lcmdlKG9sZERlZmF1bHRzLCBuZXdEZWZhdWx0cyk7XG4gIGNvbnN0IGVuZHBvaW50MiA9IGVuZHBvaW50V2l0aERlZmF1bHRzLmJpbmQobnVsbCwgREVGQVVMVFMyKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZW5kcG9pbnQyLCB7XG4gICAgREVGQVVMVFM6IERFRkFVTFRTMixcbiAgICBkZWZhdWx0czogd2l0aERlZmF1bHRzLmJpbmQobnVsbCwgREVGQVVMVFMyKSxcbiAgICBtZXJnZTogbWVyZ2UuYmluZChudWxsLCBERUZBVUxUUzIpLFxuICAgIHBhcnNlXG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbnZhciBlbmRwb2ludCA9IHdpdGhEZWZhdWx0cyhudWxsLCBERUZBVUxUUyk7XG5leHBvcnQge1xuICBlbmRwb2ludFxufTtcbiIsICIvLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbmltcG9ydCB7IGVuZHBvaW50IH0gZnJvbSBcIkBvY3Rva2l0L2VuZHBvaW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9kZWZhdWx0cy5qc1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiOS4yLjRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2RlZmF1bHRzLmpzXG52YXIgZGVmYXVsdHNfZGVmYXVsdCA9IHtcbiAgaGVhZGVyczoge1xuICAgIFwidXNlci1hZ2VudFwiOiBgb2N0b2tpdC1yZXF1ZXN0LmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gXG4gIH1cbn07XG5cbi8vIHBrZy9kaXN0LXNyYy9mZXRjaC13cmFwcGVyLmpzXG5pbXBvcnQgeyBzYWZlUGFyc2UgfSBmcm9tIFwiZmFzdC1jb250ZW50LXR5cGUtcGFyc2VcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2lzLXBsYWluLW9iamVjdC5qc1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICE9PSBcIltvYmplY3QgT2JqZWN0XVwiKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgQ3RvciA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgXCJjb25zdHJ1Y3RvclwiKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiYgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwoQ3RvcikgPT09IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsKHZhbHVlKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2ZldGNoLXdyYXBwZXIuanNcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0LWVycm9yXCI7XG5hc3luYyBmdW5jdGlvbiBmZXRjaFdyYXBwZXIocmVxdWVzdE9wdGlvbnMpIHtcbiAgY29uc3QgZmV0Y2ggPSByZXF1ZXN0T3B0aW9ucy5yZXF1ZXN0Py5mZXRjaCB8fCBnbG9iYWxUaGlzLmZldGNoO1xuICBpZiAoIWZldGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJmZXRjaCBpcyBub3Qgc2V0LiBQbGVhc2UgcGFzcyBhIGZldGNoIGltcGxlbWVudGF0aW9uIGFzIG5ldyBPY3Rva2l0KHsgcmVxdWVzdDogeyBmZXRjaCB9fSkuIExlYXJuIG1vcmUgYXQgaHR0cHM6Ly9naXRodWIuY29tL29jdG9raXQvb2N0b2tpdC5qcy8jZmV0Y2gtbWlzc2luZ1wiXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2cgPSByZXF1ZXN0T3B0aW9ucy5yZXF1ZXN0Py5sb2cgfHwgY29uc29sZTtcbiAgY29uc3QgcGFyc2VTdWNjZXNzUmVzcG9uc2VCb2R5ID0gcmVxdWVzdE9wdGlvbnMucmVxdWVzdD8ucGFyc2VTdWNjZXNzUmVzcG9uc2VCb2R5ICE9PSBmYWxzZTtcbiAgY29uc3QgYm9keSA9IGlzUGxhaW5PYmplY3QocmVxdWVzdE9wdGlvbnMuYm9keSkgfHwgQXJyYXkuaXNBcnJheShyZXF1ZXN0T3B0aW9ucy5ib2R5KSA/IEpTT04uc3RyaW5naWZ5KHJlcXVlc3RPcHRpb25zLmJvZHkpIDogcmVxdWVzdE9wdGlvbnMuYm9keTtcbiAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMocmVxdWVzdE9wdGlvbnMuaGVhZGVycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBbXG4gICAgICBuYW1lLFxuICAgICAgU3RyaW5nKHZhbHVlKVxuICAgIF0pXG4gICk7XG4gIGxldCBmZXRjaFJlc3BvbnNlO1xuICB0cnkge1xuICAgIGZldGNoUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0T3B0aW9ucy51cmwsIHtcbiAgICAgIG1ldGhvZDogcmVxdWVzdE9wdGlvbnMubWV0aG9kLFxuICAgICAgYm9keSxcbiAgICAgIHJlZGlyZWN0OiByZXF1ZXN0T3B0aW9ucy5yZXF1ZXN0Py5yZWRpcmVjdCxcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzLFxuICAgICAgc2lnbmFsOiByZXF1ZXN0T3B0aW9ucy5yZXF1ZXN0Py5zaWduYWwsXG4gICAgICAvLyBkdXBsZXggbXVzdCBiZSBzZXQgaWYgcmVxdWVzdC5ib2R5IGlzIFJlYWRhYmxlU3RyZWFtIG9yIEFzeW5jIEl0ZXJhYmxlcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jZG9tLXJlcXVlc3Rpbml0LWR1cGxleC5cbiAgICAgIC4uLnJlcXVlc3RPcHRpb25zLmJvZHkgJiYgeyBkdXBsZXg6IFwiaGFsZlwiIH1cbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsZXQgbWVzc2FnZSA9IFwiVW5rbm93biBFcnJvclwiO1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIpIHtcbiAgICAgICAgZXJyb3Iuc3RhdHVzID0gNTAwO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLm5hbWUgPT09IFwiVHlwZUVycm9yXCIgJiYgXCJjYXVzZVwiIGluIGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5jYXVzZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGVycm9yLmNhdXNlLm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycm9yLmNhdXNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGVycm9yLmNhdXNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3RFcnJvciA9IG5ldyBSZXF1ZXN0RXJyb3IobWVzc2FnZSwgNTAwLCB7XG4gICAgICByZXF1ZXN0OiByZXF1ZXN0T3B0aW9uc1xuICAgIH0pO1xuICAgIHJlcXVlc3RFcnJvci5jYXVzZSA9IGVycm9yO1xuICAgIHRocm93IHJlcXVlc3RFcnJvcjtcbiAgfVxuICBjb25zdCBzdGF0dXMgPSBmZXRjaFJlc3BvbnNlLnN0YXR1cztcbiAgY29uc3QgdXJsID0gZmV0Y2hSZXNwb25zZS51cmw7XG4gIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBmZXRjaFJlc3BvbnNlLmhlYWRlcnMpIHtcbiAgICByZXNwb25zZUhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICB9XG4gIGNvbnN0IG9jdG9raXRSZXNwb25zZSA9IHtcbiAgICB1cmwsXG4gICAgc3RhdHVzLFxuICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICBkYXRhOiBcIlwiXG4gIH07XG4gIGlmIChcImRlcHJlY2F0aW9uXCIgaW4gcmVzcG9uc2VIZWFkZXJzKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHJlc3BvbnNlSGVhZGVycy5saW5rICYmIHJlc3BvbnNlSGVhZGVycy5saW5rLm1hdGNoKC88KFtePD5dKyk+OyByZWw9XCJkZXByZWNhdGlvblwiLyk7XG4gICAgY29uc3QgZGVwcmVjYXRpb25MaW5rID0gbWF0Y2hlcyAmJiBtYXRjaGVzLnBvcCgpO1xuICAgIGxvZy53YXJuKFxuICAgICAgYFtAb2N0b2tpdC9yZXF1ZXN0XSBcIiR7cmVxdWVzdE9wdGlvbnMubWV0aG9kfSAke3JlcXVlc3RPcHRpb25zLnVybH1cIiBpcyBkZXByZWNhdGVkLiBJdCBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBvbiAke3Jlc3BvbnNlSGVhZGVycy5zdW5zZXR9JHtkZXByZWNhdGlvbkxpbmsgPyBgLiBTZWUgJHtkZXByZWNhdGlvbkxpbmt9YCA6IFwiXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKHN0YXR1cyA9PT0gMjA0IHx8IHN0YXR1cyA9PT0gMjA1KSB7XG4gICAgcmV0dXJuIG9jdG9raXRSZXNwb25zZTtcbiAgfVxuICBpZiAocmVxdWVzdE9wdGlvbnMubWV0aG9kID09PSBcIkhFQURcIikge1xuICAgIGlmIChzdGF0dXMgPCA0MDApIHtcbiAgICAgIHJldHVybiBvY3Rva2l0UmVzcG9uc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoZmV0Y2hSZXNwb25zZS5zdGF0dXNUZXh0LCBzdGF0dXMsIHtcbiAgICAgIHJlc3BvbnNlOiBvY3Rva2l0UmVzcG9uc2UsXG4gICAgICByZXF1ZXN0OiByZXF1ZXN0T3B0aW9uc1xuICAgIH0pO1xuICB9XG4gIGlmIChzdGF0dXMgPT09IDMwNCkge1xuICAgIG9jdG9raXRSZXNwb25zZS5kYXRhID0gYXdhaXQgZ2V0UmVzcG9uc2VEYXRhKGZldGNoUmVzcG9uc2UpO1xuICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoXCJOb3QgbW9kaWZpZWRcIiwgc3RhdHVzLCB7XG4gICAgICByZXNwb25zZTogb2N0b2tpdFJlc3BvbnNlLFxuICAgICAgcmVxdWVzdDogcmVxdWVzdE9wdGlvbnNcbiAgICB9KTtcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIG9jdG9raXRSZXNwb25zZS5kYXRhID0gYXdhaXQgZ2V0UmVzcG9uc2VEYXRhKGZldGNoUmVzcG9uc2UpO1xuICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IodG9FcnJvck1lc3NhZ2Uob2N0b2tpdFJlc3BvbnNlLmRhdGEpLCBzdGF0dXMsIHtcbiAgICAgIHJlc3BvbnNlOiBvY3Rva2l0UmVzcG9uc2UsXG4gICAgICByZXF1ZXN0OiByZXF1ZXN0T3B0aW9uc1xuICAgIH0pO1xuICB9XG4gIG9jdG9raXRSZXNwb25zZS5kYXRhID0gcGFyc2VTdWNjZXNzUmVzcG9uc2VCb2R5ID8gYXdhaXQgZ2V0UmVzcG9uc2VEYXRhKGZldGNoUmVzcG9uc2UpIDogZmV0Y2hSZXNwb25zZS5ib2R5O1xuICByZXR1cm4gb2N0b2tpdFJlc3BvbnNlO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzcG9uc2VEYXRhKHJlc3BvbnNlKSB7XG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIik7XG4gIGlmICghY29udGVudFR5cGUpIHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLmNhdGNoKCgpID0+IFwiXCIpO1xuICB9XG4gIGNvbnN0IG1pbWV0eXBlID0gc2FmZVBhcnNlKGNvbnRlbnRUeXBlKTtcbiAgaWYgKGlzSlNPTlJlc3BvbnNlKG1pbWV0eXBlKSkge1xuICAgIGxldCB0ZXh0ID0gXCJcIjtcbiAgICB0cnkge1xuICAgICAgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKG1pbWV0eXBlLnR5cGUuc3RhcnRzV2l0aChcInRleHQvXCIpIHx8IG1pbWV0eXBlLnBhcmFtZXRlcnMuY2hhcnNldD8udG9Mb3dlckNhc2UoKSA9PT0gXCJ1dGYtOFwiKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKS5jYXRjaCgoKSA9PiBcIlwiKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS5jYXRjaCgoKSA9PiBuZXcgQXJyYXlCdWZmZXIoMCkpO1xuICB9XG59XG5mdW5jdGlvbiBpc0pTT05SZXNwb25zZShtaW1ldHlwZSkge1xuICByZXR1cm4gbWltZXR5cGUudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9qc29uXCIgfHwgbWltZXR5cGUudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9zY2ltK2pzb25cIjtcbn1cbmZ1bmN0aW9uIHRvRXJyb3JNZXNzYWdlKGRhdGEpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBcIlVua25vd24gZXJyb3JcIjtcbiAgfVxuICBpZiAoXCJtZXNzYWdlXCIgaW4gZGF0YSkge1xuICAgIGNvbnN0IHN1ZmZpeCA9IFwiZG9jdW1lbnRhdGlvbl91cmxcIiBpbiBkYXRhID8gYCAtICR7ZGF0YS5kb2N1bWVudGF0aW9uX3VybH1gIDogXCJcIjtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhLmVycm9ycykgPyBgJHtkYXRhLm1lc3NhZ2V9OiAke2RhdGEuZXJyb3JzLm1hcCgodikgPT4gSlNPTi5zdHJpbmdpZnkodikpLmpvaW4oXCIsIFwiKX0ke3N1ZmZpeH1gIDogYCR7ZGF0YS5tZXNzYWdlfSR7c3VmZml4fWA7XG4gIH1cbiAgcmV0dXJuIGBVbmtub3duIGVycm9yOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWA7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy93aXRoLWRlZmF1bHRzLmpzXG5mdW5jdGlvbiB3aXRoRGVmYXVsdHMob2xkRW5kcG9pbnQsIG5ld0RlZmF1bHRzKSB7XG4gIGNvbnN0IGVuZHBvaW50MiA9IG9sZEVuZHBvaW50LmRlZmF1bHRzKG5ld0RlZmF1bHRzKTtcbiAgY29uc3QgbmV3QXBpID0gZnVuY3Rpb24ocm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBlbmRwb2ludE9wdGlvbnMgPSBlbmRwb2ludDIubWVyZ2Uocm91dGUsIHBhcmFtZXRlcnMpO1xuICAgIGlmICghZW5kcG9pbnRPcHRpb25zLnJlcXVlc3QgfHwgIWVuZHBvaW50T3B0aW9ucy5yZXF1ZXN0Lmhvb2spIHtcbiAgICAgIHJldHVybiBmZXRjaFdyYXBwZXIoZW5kcG9pbnQyLnBhcnNlKGVuZHBvaW50T3B0aW9ucykpO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0MiA9IChyb3V0ZTIsIHBhcmFtZXRlcnMyKSA9PiB7XG4gICAgICByZXR1cm4gZmV0Y2hXcmFwcGVyKFxuICAgICAgICBlbmRwb2ludDIucGFyc2UoZW5kcG9pbnQyLm1lcmdlKHJvdXRlMiwgcGFyYW1ldGVyczIpKVxuICAgICAgKTtcbiAgICB9O1xuICAgIE9iamVjdC5hc3NpZ24ocmVxdWVzdDIsIHtcbiAgICAgIGVuZHBvaW50OiBlbmRwb2ludDIsXG4gICAgICBkZWZhdWx0czogd2l0aERlZmF1bHRzLmJpbmQobnVsbCwgZW5kcG9pbnQyKVxuICAgIH0pO1xuICAgIHJldHVybiBlbmRwb2ludE9wdGlvbnMucmVxdWVzdC5ob29rKHJlcXVlc3QyLCBlbmRwb2ludE9wdGlvbnMpO1xuICB9O1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXdBcGksIHtcbiAgICBlbmRwb2ludDogZW5kcG9pbnQyLFxuICAgIGRlZmF1bHRzOiB3aXRoRGVmYXVsdHMuYmluZChudWxsLCBlbmRwb2ludDIpXG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbnZhciByZXF1ZXN0ID0gd2l0aERlZmF1bHRzKGVuZHBvaW50LCBkZWZhdWx0c19kZWZhdWx0KTtcbmV4cG9ydCB7XG4gIHJlcXVlc3Rcbn07XG4iLCAiY2xhc3MgUmVxdWVzdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lO1xuICAvKipcbiAgICogaHR0cCBzdGF0dXMgY29kZVxuICAgKi9cbiAgc3RhdHVzO1xuICAvKipcbiAgICogUmVxdWVzdCBvcHRpb25zIHRoYXQgbGVhZCB0byB0aGUgZXJyb3IuXG4gICAqL1xuICByZXF1ZXN0O1xuICAvKipcbiAgICogUmVzcG9uc2Ugb2JqZWN0IGlmIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkXG4gICAqL1xuICByZXNwb25zZTtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgc3RhdHVzQ29kZSwgb3B0aW9ucykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiSHR0cEVycm9yXCI7XG4gICAgdGhpcy5zdGF0dXMgPSBOdW1iZXIucGFyc2VJbnQoc3RhdHVzQ29kZSk7XG4gICAgaWYgKE51bWJlci5pc05hTih0aGlzLnN0YXR1cykpIHtcbiAgICAgIHRoaXMuc3RhdHVzID0gMDtcbiAgICB9XG4gICAgaWYgKFwicmVzcG9uc2VcIiBpbiBvcHRpb25zKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gb3B0aW9ucy5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdENvcHkgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLnJlcXVlc3QpO1xuICAgIGlmIChvcHRpb25zLnJlcXVlc3QuaGVhZGVycy5hdXRob3JpemF0aW9uKSB7XG4gICAgICByZXF1ZXN0Q29weS5oZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucy5yZXF1ZXN0LmhlYWRlcnMsIHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogb3B0aW9ucy5yZXF1ZXN0LmhlYWRlcnMuYXV0aG9yaXphdGlvbi5yZXBsYWNlKFxuICAgICAgICAgIC8oPzwhICkgLiokLyxcbiAgICAgICAgICBcIiBbUkVEQUNURURdXCJcbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJlcXVlc3RDb3B5LnVybCA9IHJlcXVlc3RDb3B5LnVybC5yZXBsYWNlKC9cXGJjbGllbnRfc2VjcmV0PVxcdysvZywgXCJjbGllbnRfc2VjcmV0PVtSRURBQ1RFRF1cIikucmVwbGFjZSgvXFxiYWNjZXNzX3Rva2VuPVxcdysvZywgXCJhY2Nlc3NfdG9rZW49W1JFREFDVEVEXVwiKTtcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0Q29weTtcbiAgfVxufVxuZXhwb3J0IHtcbiAgUmVxdWVzdEVycm9yXG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiMC4wLjAtZGV2ZWxvcG1lbnRcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dldC13ZWItZmxvdy1hdXRob3JpemF0aW9uLXVybC5qc1xuaW1wb3J0IHsgb2F1dGhBdXRob3JpemF0aW9uVXJsIH0gZnJvbSBcIkBvY3Rva2l0L29hdXRoLWF1dGhvcml6YXRpb24tdXJsXCI7XG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3V0aWxzLmpzXG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdC1lcnJvclwiO1xuZnVuY3Rpb24gcmVxdWVzdFRvT0F1dGhCYXNlVXJsKHJlcXVlc3QpIHtcbiAgY29uc3QgZW5kcG9pbnREZWZhdWx0cyA9IHJlcXVlc3QuZW5kcG9pbnQuREVGQVVMVFM7XG4gIHJldHVybiAvXmh0dHBzOlxcL1xcLyhhcGlcXC4pP2dpdGh1YlxcLmNvbSQvLnRlc3QoZW5kcG9pbnREZWZhdWx0cy5iYXNlVXJsKSA/IFwiaHR0cHM6Ly9naXRodWIuY29tXCIgOiBlbmRwb2ludERlZmF1bHRzLmJhc2VVcmwucmVwbGFjZShcIi9hcGkvdjNcIiwgXCJcIik7XG59XG5hc3luYyBmdW5jdGlvbiBvYXV0aFJlcXVlc3QocmVxdWVzdCwgcm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3Qgd2l0aE9BdXRoUGFyYW1ldGVycyA9IHtcbiAgICBiYXNlVXJsOiByZXF1ZXN0VG9PQXV0aEJhc2VVcmwocmVxdWVzdCksXG4gICAgaGVhZGVyczoge1xuICAgICAgYWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH0sXG4gICAgLi4ucGFyYW1ldGVyc1xuICB9O1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3Qocm91dGUsIHdpdGhPQXV0aFBhcmFtZXRlcnMpO1xuICBpZiAoXCJlcnJvclwiIGluIHJlc3BvbnNlLmRhdGEpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBSZXF1ZXN0RXJyb3IoXG4gICAgICBgJHtyZXNwb25zZS5kYXRhLmVycm9yX2Rlc2NyaXB0aW9ufSAoJHtyZXNwb25zZS5kYXRhLmVycm9yfSwgJHtyZXNwb25zZS5kYXRhLmVycm9yX3VyaX0pYCxcbiAgICAgIDQwMCxcbiAgICAgIHtcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdC5lbmRwb2ludC5tZXJnZShcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICB3aXRoT0F1dGhQYXJhbWV0ZXJzXG4gICAgICAgIClcbiAgICAgIH1cbiAgICApO1xuICAgIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvZ2V0LXdlYi1mbG93LWF1dGhvcml6YXRpb24tdXJsLmpzXG5mdW5jdGlvbiBnZXRXZWJGbG93QXV0aG9yaXphdGlvblVybCh7XG4gIHJlcXVlc3QgPSBkZWZhdWx0UmVxdWVzdCxcbiAgLi4ub3B0aW9uc1xufSkge1xuICBjb25zdCBiYXNlVXJsID0gcmVxdWVzdFRvT0F1dGhCYXNlVXJsKHJlcXVlc3QpO1xuICByZXR1cm4gb2F1dGhBdXRob3JpemF0aW9uVXJsKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGJhc2VVcmxcbiAgfSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9leGNoYW5nZS13ZWItZmxvdy1jb2RlLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0MiB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiBleGNoYW5nZVdlYkZsb3dDb2RlKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdDI7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgb2F1dGhSZXF1ZXN0KFxuICAgIHJlcXVlc3QsXG4gICAgXCJQT1NUIC9sb2dpbi9vYXV0aC9hY2Nlc3NfdG9rZW5cIixcbiAgICB7XG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBjbGllbnRfc2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICAgIGNvZGU6IG9wdGlvbnMuY29kZSxcbiAgICAgIHJlZGlyZWN0X3VyaTogb3B0aW9ucy5yZWRpcmVjdFVybFxuICAgIH1cbiAgKTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSB7XG4gICAgY2xpZW50VHlwZTogb3B0aW9ucy5jbGllbnRUeXBlLFxuICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldDogb3B0aW9ucy5jbGllbnRTZWNyZXQsXG4gICAgdG9rZW46IHJlc3BvbnNlLmRhdGEuYWNjZXNzX3Rva2VuLFxuICAgIHNjb3BlczogcmVzcG9uc2UuZGF0YS5zY29wZS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKVxuICB9O1xuICBpZiAob3B0aW9ucy5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIikge1xuICAgIGlmIChcInJlZnJlc2hfdG9rZW5cIiBpbiByZXNwb25zZS5kYXRhKSB7XG4gICAgICBjb25zdCBhcGlUaW1lSW5NcyA9IG5ldyBEYXRlKHJlc3BvbnNlLmhlYWRlcnMuZGF0ZSkuZ2V0VGltZSgpO1xuICAgICAgYXV0aGVudGljYXRpb24ucmVmcmVzaFRva2VuID0gcmVzcG9uc2UuZGF0YS5yZWZyZXNoX3Rva2VuLCBhdXRoZW50aWNhdGlvbi5leHBpcmVzQXQgPSB0b1RpbWVzdGFtcChcbiAgICAgICAgYXBpVGltZUluTXMsXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZXhwaXJlc19pblxuICAgICAgKSwgYXV0aGVudGljYXRpb24ucmVmcmVzaFRva2VuRXhwaXJlc0F0ID0gdG9UaW1lc3RhbXAoXG4gICAgICAgIGFwaVRpbWVJbk1zLFxuICAgICAgICByZXNwb25zZS5kYXRhLnJlZnJlc2hfdG9rZW5fZXhwaXJlc19pblxuICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlIGF1dGhlbnRpY2F0aW9uLnNjb3BlcztcbiAgfVxuICByZXR1cm4geyAuLi5yZXNwb25zZSwgYXV0aGVudGljYXRpb24gfTtcbn1cbmZ1bmN0aW9uIHRvVGltZXN0YW1wKGFwaVRpbWVJbk1zLCBleHBpcmF0aW9uSW5TZWNvbmRzKSB7XG4gIHJldHVybiBuZXcgRGF0ZShhcGlUaW1lSW5NcyArIGV4cGlyYXRpb25JblNlY29uZHMgKiAxZTMpLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9jcmVhdGUtZGV2aWNlLWNvZGUuanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3QzIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURldmljZUNvZGUob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0MztcbiAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWRcbiAgfTtcbiAgaWYgKFwic2NvcGVzXCIgaW4gb3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KG9wdGlvbnMuc2NvcGVzKSkge1xuICAgIHBhcmFtZXRlcnMuc2NvcGUgPSBvcHRpb25zLnNjb3Blcy5qb2luKFwiIFwiKTtcbiAgfVxuICByZXR1cm4gb2F1dGhSZXF1ZXN0KHJlcXVlc3QsIFwiUE9TVCAvbG9naW4vZGV2aWNlL2NvZGVcIiwgcGFyYW1ldGVycyk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9leGNoYW5nZS1kZXZpY2UtY29kZS5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDQgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gZXhjaGFuZ2VEZXZpY2VDb2RlKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdDQ7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgb2F1dGhSZXF1ZXN0KFxuICAgIHJlcXVlc3QsXG4gICAgXCJQT1NUIC9sb2dpbi9vYXV0aC9hY2Nlc3NfdG9rZW5cIixcbiAgICB7XG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBkZXZpY2VfY29kZTogb3B0aW9ucy5jb2RlLFxuICAgICAgZ3JhbnRfdHlwZTogXCJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpkZXZpY2VfY29kZVwiXG4gICAgfVxuICApO1xuICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICBjbGllbnRUeXBlOiBvcHRpb25zLmNsaWVudFR5cGUsXG4gICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgdG9rZW46IHJlc3BvbnNlLmRhdGEuYWNjZXNzX3Rva2VuLFxuICAgIHNjb3BlczogcmVzcG9uc2UuZGF0YS5zY29wZS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKVxuICB9O1xuICBpZiAoXCJjbGllbnRTZWNyZXRcIiBpbiBvcHRpb25zKSB7XG4gICAgYXV0aGVudGljYXRpb24uY2xpZW50U2VjcmV0ID0gb3B0aW9ucy5jbGllbnRTZWNyZXQ7XG4gIH1cbiAgaWYgKG9wdGlvbnMuY2xpZW50VHlwZSA9PT0gXCJnaXRodWItYXBwXCIpIHtcbiAgICBpZiAoXCJyZWZyZXNoX3Rva2VuXCIgaW4gcmVzcG9uc2UuZGF0YSkge1xuICAgICAgY29uc3QgYXBpVGltZUluTXMgPSBuZXcgRGF0ZShyZXNwb25zZS5oZWFkZXJzLmRhdGUpLmdldFRpbWUoKTtcbiAgICAgIGF1dGhlbnRpY2F0aW9uLnJlZnJlc2hUb2tlbiA9IHJlc3BvbnNlLmRhdGEucmVmcmVzaF90b2tlbiwgYXV0aGVudGljYXRpb24uZXhwaXJlc0F0ID0gdG9UaW1lc3RhbXAyKFxuICAgICAgICBhcGlUaW1lSW5NcyxcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5leHBpcmVzX2luXG4gICAgICApLCBhdXRoZW50aWNhdGlvbi5yZWZyZXNoVG9rZW5FeHBpcmVzQXQgPSB0b1RpbWVzdGFtcDIoXG4gICAgICAgIGFwaVRpbWVJbk1zLFxuICAgICAgICByZXNwb25zZS5kYXRhLnJlZnJlc2hfdG9rZW5fZXhwaXJlc19pblxuICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlIGF1dGhlbnRpY2F0aW9uLnNjb3BlcztcbiAgfVxuICByZXR1cm4geyAuLi5yZXNwb25zZSwgYXV0aGVudGljYXRpb24gfTtcbn1cbmZ1bmN0aW9uIHRvVGltZXN0YW1wMihhcGlUaW1lSW5NcywgZXhwaXJhdGlvbkluU2Vjb25kcykge1xuICByZXR1cm4gbmV3IERhdGUoYXBpVGltZUluTXMgKyBleHBpcmF0aW9uSW5TZWNvbmRzICogMWUzKS50b0lTT1N0cmluZygpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvY2hlY2stdG9rZW4uanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3Q1IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmFzeW5jIGZ1bmN0aW9uIGNoZWNrVG9rZW4ob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0NTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KFwiUE9TVCAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuXCIsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHtidG9hKFxuICAgICAgICBgJHtvcHRpb25zLmNsaWVudElkfToke29wdGlvbnMuY2xpZW50U2VjcmV0fWBcbiAgICAgICl9YFxuICAgIH0sXG4gICAgY2xpZW50X2lkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIGFjY2Vzc190b2tlbjogb3B0aW9ucy50b2tlblxuICB9KTtcbiAgY29uc3QgYXV0aGVudGljYXRpb24gPSB7XG4gICAgY2xpZW50VHlwZTogb3B0aW9ucy5jbGllbnRUeXBlLFxuICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldDogb3B0aW9ucy5jbGllbnRTZWNyZXQsXG4gICAgdG9rZW46IG9wdGlvbnMudG9rZW4sXG4gICAgc2NvcGVzOiByZXNwb25zZS5kYXRhLnNjb3Blc1xuICB9O1xuICBpZiAocmVzcG9uc2UuZGF0YS5leHBpcmVzX2F0KVxuICAgIGF1dGhlbnRpY2F0aW9uLmV4cGlyZXNBdCA9IHJlc3BvbnNlLmRhdGEuZXhwaXJlc19hdDtcbiAgaWYgKG9wdGlvbnMuY2xpZW50VHlwZSA9PT0gXCJnaXRodWItYXBwXCIpIHtcbiAgICBkZWxldGUgYXV0aGVudGljYXRpb24uc2NvcGVzO1xuICB9XG4gIHJldHVybiB7IC4uLnJlc3BvbnNlLCBhdXRoZW50aWNhdGlvbiB9O1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvcmVmcmVzaC10b2tlbi5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDYgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFRva2VuKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdDY7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgb2F1dGhSZXF1ZXN0KFxuICAgIHJlcXVlc3QsXG4gICAgXCJQT1NUIC9sb2dpbi9vYXV0aC9hY2Nlc3NfdG9rZW5cIixcbiAgICB7XG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBjbGllbnRfc2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICAgIGdyYW50X3R5cGU6IFwicmVmcmVzaF90b2tlblwiLFxuICAgICAgcmVmcmVzaF90b2tlbjogb3B0aW9ucy5yZWZyZXNoVG9rZW5cbiAgICB9XG4gICk7XG4gIGNvbnN0IGFwaVRpbWVJbk1zID0gbmV3IERhdGUocmVzcG9uc2UuaGVhZGVycy5kYXRlKS5nZXRUaW1lKCk7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0ge1xuICAgIGNsaWVudFR5cGU6IFwiZ2l0aHViLWFwcFwiLFxuICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldDogb3B0aW9ucy5jbGllbnRTZWNyZXQsXG4gICAgdG9rZW46IHJlc3BvbnNlLmRhdGEuYWNjZXNzX3Rva2VuLFxuICAgIHJlZnJlc2hUb2tlbjogcmVzcG9uc2UuZGF0YS5yZWZyZXNoX3Rva2VuLFxuICAgIGV4cGlyZXNBdDogdG9UaW1lc3RhbXAzKGFwaVRpbWVJbk1zLCByZXNwb25zZS5kYXRhLmV4cGlyZXNfaW4pLFxuICAgIHJlZnJlc2hUb2tlbkV4cGlyZXNBdDogdG9UaW1lc3RhbXAzKFxuICAgICAgYXBpVGltZUluTXMsXG4gICAgICByZXNwb25zZS5kYXRhLnJlZnJlc2hfdG9rZW5fZXhwaXJlc19pblxuICAgIClcbiAgfTtcbiAgcmV0dXJuIHsgLi4ucmVzcG9uc2UsIGF1dGhlbnRpY2F0aW9uIH07XG59XG5mdW5jdGlvbiB0b1RpbWVzdGFtcDMoYXBpVGltZUluTXMsIGV4cGlyYXRpb25JblNlY29uZHMpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKGFwaVRpbWVJbk1zICsgZXhwaXJhdGlvbkluU2Vjb25kcyAqIDFlMykudG9JU09TdHJpbmcoKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3Njb3BlLXRva2VuLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIGRlZmF1bHRSZXF1ZXN0NyB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiBzY29wZVRva2VuKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHJlcXVlc3Q6IG9wdGlvbnNSZXF1ZXN0LFxuICAgIGNsaWVudFR5cGUsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50U2VjcmV0LFxuICAgIHRva2VuLFxuICAgIC4uLnJlcXVlc3RPcHRpb25zXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0NztcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KFxuICAgIFwiUE9TVCAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuL3Njb3BlZFwiLFxuICAgIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYGJhc2ljICR7YnRvYShgJHtjbGllbnRJZH06JHtjbGllbnRTZWNyZXR9YCl9YFxuICAgICAgfSxcbiAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICBhY2Nlc3NfdG9rZW46IHRva2VuLFxuICAgICAgLi4ucmVxdWVzdE9wdGlvbnNcbiAgICB9XG4gICk7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gT2JqZWN0LmFzc2lnbihcbiAgICB7XG4gICAgICBjbGllbnRUeXBlLFxuICAgICAgY2xpZW50SWQsXG4gICAgICBjbGllbnRTZWNyZXQsXG4gICAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS50b2tlblxuICAgIH0sXG4gICAgcmVzcG9uc2UuZGF0YS5leHBpcmVzX2F0ID8geyBleHBpcmVzQXQ6IHJlc3BvbnNlLmRhdGEuZXhwaXJlc19hdCB9IDoge31cbiAgKTtcbiAgcmV0dXJuIHsgLi4ucmVzcG9uc2UsIGF1dGhlbnRpY2F0aW9uIH07XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9yZXNldC10b2tlbi5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDggfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gcmVzZXRUb2tlbihvcHRpb25zKSB7XG4gIGNvbnN0IHJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3QgfHwgZGVmYXVsdFJlcXVlc3Q4O1xuICBjb25zdCBhdXRoID0gYnRvYShgJHtvcHRpb25zLmNsaWVudElkfToke29wdGlvbnMuY2xpZW50U2VjcmV0fWApO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoXG4gICAgXCJQQVRDSCAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuXCIsXG4gICAge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHthdXRofWBcbiAgICAgIH0sXG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBhY2Nlc3NfdG9rZW46IG9wdGlvbnMudG9rZW5cbiAgICB9XG4gICk7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0ge1xuICAgIGNsaWVudFR5cGU6IG9wdGlvbnMuY2xpZW50VHlwZSxcbiAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICBjbGllbnRTZWNyZXQ6IG9wdGlvbnMuY2xpZW50U2VjcmV0LFxuICAgIHRva2VuOiByZXNwb25zZS5kYXRhLnRva2VuLFxuICAgIHNjb3BlczogcmVzcG9uc2UuZGF0YS5zY29wZXNcbiAgfTtcbiAgaWYgKHJlc3BvbnNlLmRhdGEuZXhwaXJlc19hdClcbiAgICBhdXRoZW50aWNhdGlvbi5leHBpcmVzQXQgPSByZXNwb25zZS5kYXRhLmV4cGlyZXNfYXQ7XG4gIGlmIChvcHRpb25zLmNsaWVudFR5cGUgPT09IFwiZ2l0aHViLWFwcFwiKSB7XG4gICAgZGVsZXRlIGF1dGhlbnRpY2F0aW9uLnNjb3BlcztcbiAgfVxuICByZXR1cm4geyAuLi5yZXNwb25zZSwgYXV0aGVudGljYXRpb24gfTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2RlbGV0ZS10b2tlbi5qc1xuaW1wb3J0IHsgcmVxdWVzdCBhcyBkZWZhdWx0UmVxdWVzdDkgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlVG9rZW4ob3B0aW9ucykge1xuICBjb25zdCByZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0IHx8IGRlZmF1bHRSZXF1ZXN0OTtcbiAgY29uc3QgYXV0aCA9IGJ0b2EoYCR7b3B0aW9ucy5jbGllbnRJZH06JHtvcHRpb25zLmNsaWVudFNlY3JldH1gKTtcbiAgcmV0dXJuIHJlcXVlc3QoXG4gICAgXCJERUxFVEUgL2FwcGxpY2F0aW9ucy97Y2xpZW50X2lkfS90b2tlblwiLFxuICAgIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYGJhc2ljICR7YXV0aH1gXG4gICAgICB9LFxuICAgICAgY2xpZW50X2lkOiBvcHRpb25zLmNsaWVudElkLFxuICAgICAgYWNjZXNzX3Rva2VuOiBvcHRpb25zLnRva2VuXG4gICAgfVxuICApO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvZGVsZXRlLWF1dGhvcml6YXRpb24uanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3QxMCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5hc3luYyBmdW5jdGlvbiBkZWxldGVBdXRob3JpemF0aW9uKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdDEwO1xuICBjb25zdCBhdXRoID0gYnRvYShgJHtvcHRpb25zLmNsaWVudElkfToke29wdGlvbnMuY2xpZW50U2VjcmV0fWApO1xuICByZXR1cm4gcmVxdWVzdChcbiAgICBcIkRFTEVURSAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L2dyYW50XCIsXG4gICAge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgYmFzaWMgJHthdXRofWBcbiAgICAgIH0sXG4gICAgICBjbGllbnRfaWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBhY2Nlc3NfdG9rZW46IG9wdGlvbnMudG9rZW5cbiAgICB9XG4gICk7XG59XG5leHBvcnQge1xuICBWRVJTSU9OLFxuICBjaGVja1Rva2VuLFxuICBjcmVhdGVEZXZpY2VDb2RlLFxuICBkZWxldGVBdXRob3JpemF0aW9uLFxuICBkZWxldGVUb2tlbixcbiAgZXhjaGFuZ2VEZXZpY2VDb2RlLFxuICBleGNoYW5nZVdlYkZsb3dDb2RlLFxuICBnZXRXZWJGbG93QXV0aG9yaXphdGlvblVybCxcbiAgcmVmcmVzaFRva2VuLFxuICByZXNldFRva2VuLFxuICBzY29wZVRva2VuXG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5pbXBvcnQgeyByZXF1ZXN0IGFzIG9jdG9raXRSZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dldC1vYXV0aC1hY2Nlc3MtdG9rZW4uanNcbmltcG9ydCB7IGNyZWF0ZURldmljZUNvZGUsIGV4Y2hhbmdlRGV2aWNlQ29kZSB9IGZyb20gXCJAb2N0b2tpdC9vYXV0aC1tZXRob2RzXCI7XG5hc3luYyBmdW5jdGlvbiBnZXRPQXV0aEFjY2Vzc1Rva2VuKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGNhY2hlZEF1dGhlbnRpY2F0aW9uID0gZ2V0Q2FjaGVkQXV0aGVudGljYXRpb24oc3RhdGUsIG9wdGlvbnMuYXV0aCk7XG4gIGlmIChjYWNoZWRBdXRoZW50aWNhdGlvbikgcmV0dXJuIGNhY2hlZEF1dGhlbnRpY2F0aW9uO1xuICBjb25zdCB7IGRhdGE6IHZlcmlmaWNhdGlvbiB9ID0gYXdhaXQgY3JlYXRlRGV2aWNlQ29kZSh7XG4gICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZSxcbiAgICBjbGllbnRJZDogc3RhdGUuY2xpZW50SWQsXG4gICAgcmVxdWVzdDogb3B0aW9ucy5yZXF1ZXN0IHx8IHN0YXRlLnJlcXVlc3QsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgZXh0cmEgY29kZSB0byBtYWtlIFRTIGhhcHB5IGlzIG5vdCB3b3J0aCBpdFxuICAgIHNjb3Blczogb3B0aW9ucy5hdXRoLnNjb3BlcyB8fCBzdGF0ZS5zY29wZXNcbiAgfSk7XG4gIGF3YWl0IHN0YXRlLm9uVmVyaWZpY2F0aW9uKHZlcmlmaWNhdGlvbik7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gYXdhaXQgd2FpdEZvckFjY2Vzc1Rva2VuKFxuICAgIG9wdGlvbnMucmVxdWVzdCB8fCBzdGF0ZS5yZXF1ZXN0LFxuICAgIHN0YXRlLmNsaWVudElkLFxuICAgIHN0YXRlLmNsaWVudFR5cGUsXG4gICAgdmVyaWZpY2F0aW9uXG4gICk7XG4gIHN0YXRlLmF1dGhlbnRpY2F0aW9uID0gYXV0aGVudGljYXRpb247XG4gIHJldHVybiBhdXRoZW50aWNhdGlvbjtcbn1cbmZ1bmN0aW9uIGdldENhY2hlZEF1dGhlbnRpY2F0aW9uKHN0YXRlLCBhdXRoMikge1xuICBpZiAoYXV0aDIucmVmcmVzaCA9PT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIXN0YXRlLmF1dGhlbnRpY2F0aW9uKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzdGF0ZS5jbGllbnRUeXBlID09PSBcImdpdGh1Yi1hcHBcIikge1xuICAgIHJldHVybiBzdGF0ZS5hdXRoZW50aWNhdGlvbjtcbiAgfVxuICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IHN0YXRlLmF1dGhlbnRpY2F0aW9uO1xuICBjb25zdCBuZXdTY29wZSA9IChcInNjb3Blc1wiIGluIGF1dGgyICYmIGF1dGgyLnNjb3BlcyB8fCBzdGF0ZS5zY29wZXMpLmpvaW4oXG4gICAgXCIgXCJcbiAgKTtcbiAgY29uc3QgY3VycmVudFNjb3BlID0gYXV0aGVudGljYXRpb24uc2NvcGVzLmpvaW4oXCIgXCIpO1xuICByZXR1cm4gbmV3U2NvcGUgPT09IGN1cnJlbnRTY29wZSA/IGF1dGhlbnRpY2F0aW9uIDogZmFsc2U7XG59XG5hc3luYyBmdW5jdGlvbiB3YWl0KHNlY29uZHMpIHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgc2Vjb25kcyAqIDFlMykpO1xufVxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvckFjY2Vzc1Rva2VuKHJlcXVlc3QsIGNsaWVudElkLCBjbGllbnRUeXBlLCB2ZXJpZmljYXRpb24pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgY2xpZW50SWQsXG4gICAgICByZXF1ZXN0LFxuICAgICAgY29kZTogdmVyaWZpY2F0aW9uLmRldmljZV9jb2RlXG4gICAgfTtcbiAgICBjb25zdCB7IGF1dGhlbnRpY2F0aW9uIH0gPSBjbGllbnRUeXBlID09PSBcIm9hdXRoLWFwcFwiID8gYXdhaXQgZXhjaGFuZ2VEZXZpY2VDb2RlKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBjbGllbnRUeXBlOiBcIm9hdXRoLWFwcFwiXG4gICAgfSkgOiBhd2FpdCBleGNoYW5nZURldmljZUNvZGUoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNsaWVudFR5cGU6IFwiZ2l0aHViLWFwcFwiXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgIHRva2VuVHlwZTogXCJvYXV0aFwiLFxuICAgICAgLi4uYXV0aGVudGljYXRpb25cbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHRocm93IGVycm9yO1xuICAgIGNvbnN0IGVycm9yVHlwZSA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3I7XG4gICAgaWYgKGVycm9yVHlwZSA9PT0gXCJhdXRob3JpemF0aW9uX3BlbmRpbmdcIikge1xuICAgICAgYXdhaXQgd2FpdCh2ZXJpZmljYXRpb24uaW50ZXJ2YWwpO1xuICAgICAgcmV0dXJuIHdhaXRGb3JBY2Nlc3NUb2tlbihyZXF1ZXN0LCBjbGllbnRJZCwgY2xpZW50VHlwZSwgdmVyaWZpY2F0aW9uKTtcbiAgICB9XG4gICAgaWYgKGVycm9yVHlwZSA9PT0gXCJzbG93X2Rvd25cIikge1xuICAgICAgYXdhaXQgd2FpdCh2ZXJpZmljYXRpb24uaW50ZXJ2YWwgKyA3KTtcbiAgICAgIHJldHVybiB3YWl0Rm9yQWNjZXNzVG9rZW4ocmVxdWVzdCwgY2xpZW50SWQsIGNsaWVudFR5cGUsIHZlcmlmaWNhdGlvbik7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9hdXRoLmpzXG5hc3luYyBmdW5jdGlvbiBhdXRoKHN0YXRlLCBhdXRoT3B0aW9ucykge1xuICByZXR1cm4gZ2V0T0F1dGhBY2Nlc3NUb2tlbihzdGF0ZSwge1xuICAgIGF1dGg6IGF1dGhPcHRpb25zXG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xuYXN5bmMgZnVuY3Rpb24gaG9vayhzdGF0ZSwgcmVxdWVzdCwgcm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgbGV0IGVuZHBvaW50ID0gcmVxdWVzdC5lbmRwb2ludC5tZXJnZShcbiAgICByb3V0ZSxcbiAgICBwYXJhbWV0ZXJzXG4gICk7XG4gIGlmICgvXFwvbG9naW5cXC8ob2F1dGhcXC9hY2Nlc3NfdG9rZW58ZGV2aWNlXFwvY29kZSkkLy50ZXN0KGVuZHBvaW50LnVybCkpIHtcbiAgICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG4gIH1cbiAgY29uc3QgeyB0b2tlbiB9ID0gYXdhaXQgZ2V0T0F1dGhBY2Nlc3NUb2tlbihzdGF0ZSwge1xuICAgIHJlcXVlc3QsXG4gICAgYXV0aDogeyB0eXBlOiBcIm9hdXRoXCIgfVxuICB9KTtcbiAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gYHRva2VuICR7dG9rZW59YDtcbiAgcmV0dXJuIHJlcXVlc3QoZW5kcG9pbnQpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdmVyc2lvbi5qc1xudmFyIFZFUlNJT04gPSBcIjAuMC4wLWRldmVsb3BtZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuZnVuY3Rpb24gY3JlYXRlT0F1dGhEZXZpY2VBdXRoKG9wdGlvbnMpIHtcbiAgY29uc3QgcmVxdWVzdFdpdGhEZWZhdWx0cyA9IG9wdGlvbnMucmVxdWVzdCB8fCBvY3Rva2l0UmVxdWVzdC5kZWZhdWx0cyh7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LWF1dGgtb2F1dGgtZGV2aWNlLmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gXG4gICAgfVxuICB9KTtcbiAgY29uc3QgeyByZXF1ZXN0ID0gcmVxdWVzdFdpdGhEZWZhdWx0cywgLi4ub3RoZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGF0ZSA9IG9wdGlvbnMuY2xpZW50VHlwZSA9PT0gXCJnaXRodWItYXBwXCIgPyB7XG4gICAgLi4ub3RoZXJPcHRpb25zLFxuICAgIGNsaWVudFR5cGU6IFwiZ2l0aHViLWFwcFwiLFxuICAgIHJlcXVlc3RcbiAgfSA6IHtcbiAgICAuLi5vdGhlck9wdGlvbnMsXG4gICAgY2xpZW50VHlwZTogXCJvYXV0aC1hcHBcIixcbiAgICByZXF1ZXN0LFxuICAgIHNjb3Blczogb3B0aW9ucy5zY29wZXMgfHwgW11cbiAgfTtcbiAgaWYgKCFvcHRpb25zLmNsaWVudElkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1tAb2N0b2tpdC9hdXRoLW9hdXRoLWRldmljZV0gXCJjbGllbnRJZFwiIG9wdGlvbiBtdXN0IGJlIHNldCAoaHR0cHM6Ly9naXRodWIuY29tL29jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2UuanMjdXNhZ2UpJ1xuICAgICk7XG4gIH1cbiAgaWYgKCFvcHRpb25zLm9uVmVyaWZpY2F0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1tAb2N0b2tpdC9hdXRoLW9hdXRoLWRldmljZV0gXCJvblZlcmlmaWNhdGlvblwiIG9wdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9vY3Rva2l0L2F1dGgtb2F1dGgtZGV2aWNlLmpzI3VzYWdlKSdcbiAgICApO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKGF1dGguYmluZChudWxsLCBzdGF0ZSksIHtcbiAgICBob29rOiBob29rLmJpbmQobnVsbCwgc3RhdGUpXG4gIH0pO1xufVxuZXhwb3J0IHtcbiAgY3JlYXRlT0F1dGhEZXZpY2VBdXRoXG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuaW1wb3J0IHsgZ2V0VXNlckFnZW50IH0gZnJvbSBcInVuaXZlcnNhbC11c2VyLWFnZW50XCI7XG5pbXBvcnQgeyByZXF1ZXN0IGFzIG9jdG9raXRSZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCIwLjAuMC1kZXZlbG9wbWVudFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvZ2V0LWF1dGhlbnRpY2F0aW9uLmpzXG5pbXBvcnQgeyBjcmVhdGVPQXV0aERldmljZUF1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2VcIjtcbmltcG9ydCB7IGV4Y2hhbmdlV2ViRmxvd0NvZGUgfSBmcm9tIFwiQG9jdG9raXQvb2F1dGgtbWV0aG9kc1wiO1xuYXN5bmMgZnVuY3Rpb24gZ2V0QXV0aGVudGljYXRpb24oc3RhdGUpIHtcbiAgaWYgKFwiY29kZVwiIGluIHN0YXRlLnN0cmF0ZWd5T3B0aW9ucykge1xuICAgIGNvbnN0IHsgYXV0aGVudGljYXRpb24gfSA9IGF3YWl0IGV4Y2hhbmdlV2ViRmxvd0NvZGUoe1xuICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgICAgb25Ub2tlbkNyZWF0ZWQ6IHN0YXRlLm9uVG9rZW5DcmVhdGVkLFxuICAgICAgLi4uc3RhdGUuc3RyYXRlZ3lPcHRpb25zLFxuICAgICAgcmVxdWVzdDogc3RhdGUucmVxdWVzdFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInRva2VuXCIsXG4gICAgICB0b2tlblR5cGU6IFwib2F1dGhcIixcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uXG4gICAgfTtcbiAgfVxuICBpZiAoXCJvblZlcmlmaWNhdGlvblwiIGluIHN0YXRlLnN0cmF0ZWd5T3B0aW9ucykge1xuICAgIGNvbnN0IGRldmljZUF1dGggPSBjcmVhdGVPQXV0aERldmljZUF1dGgoe1xuICAgICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZSxcbiAgICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICAgIG9uVG9rZW5DcmVhdGVkOiBzdGF0ZS5vblRva2VuQ3JlYXRlZCxcbiAgICAgIC4uLnN0YXRlLnN0cmF0ZWd5T3B0aW9ucyxcbiAgICAgIHJlcXVlc3Q6IHN0YXRlLnJlcXVlc3RcbiAgICB9KTtcbiAgICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IGF3YWl0IGRldmljZUF1dGgoe1xuICAgICAgdHlwZTogXCJvYXV0aFwiXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudFNlY3JldDogc3RhdGUuY2xpZW50U2VjcmV0LFxuICAgICAgLi4uYXV0aGVudGljYXRpb25cbiAgICB9O1xuICB9XG4gIGlmIChcInRva2VuXCIgaW4gc3RhdGUuc3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgIHRva2VuVHlwZTogXCJvYXV0aFwiLFxuICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlLFxuICAgICAgb25Ub2tlbkNyZWF0ZWQ6IHN0YXRlLm9uVG9rZW5DcmVhdGVkLFxuICAgICAgLi4uc3RhdGUuc3RyYXRlZ3lPcHRpb25zXG4gICAgfTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJbQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXSBJbnZhbGlkIHN0cmF0ZWd5IG9wdGlvbnNcIik7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9hdXRoLmpzXG5pbXBvcnQge1xuICBjaGVja1Rva2VuLFxuICBkZWxldGVBdXRob3JpemF0aW9uLFxuICBkZWxldGVUb2tlbixcbiAgcmVmcmVzaFRva2VuLFxuICByZXNldFRva2VuXG59IGZyb20gXCJAb2N0b2tpdC9vYXV0aC1tZXRob2RzXCI7XG5hc3luYyBmdW5jdGlvbiBhdXRoKHN0YXRlLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKCFzdGF0ZS5hdXRoZW50aWNhdGlvbikge1xuICAgIHN0YXRlLmF1dGhlbnRpY2F0aW9uID0gc3RhdGUuY2xpZW50VHlwZSA9PT0gXCJvYXV0aC1hcHBcIiA/IGF3YWl0IGdldEF1dGhlbnRpY2F0aW9uKHN0YXRlKSA6IGF3YWl0IGdldEF1dGhlbnRpY2F0aW9uKHN0YXRlKTtcbiAgfVxuICBpZiAoc3RhdGUuYXV0aGVudGljYXRpb24uaW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJdIFRva2VuIGlzIGludmFsaWRcIik7XG4gIH1cbiAgY29uc3QgY3VycmVudEF1dGhlbnRpY2F0aW9uID0gc3RhdGUuYXV0aGVudGljYXRpb247XG4gIGlmIChcImV4cGlyZXNBdFwiIGluIGN1cnJlbnRBdXRoZW50aWNhdGlvbikge1xuICAgIGlmIChvcHRpb25zLnR5cGUgPT09IFwicmVmcmVzaFwiIHx8IG5ldyBEYXRlKGN1cnJlbnRBdXRoZW50aWNhdGlvbi5leHBpcmVzQXQpIDwgLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpIHtcbiAgICAgIGNvbnN0IHsgYXV0aGVudGljYXRpb24gfSA9IGF3YWl0IHJlZnJlc2hUb2tlbih7XG4gICAgICAgIGNsaWVudFR5cGU6IFwiZ2l0aHViLWFwcFwiLFxuICAgICAgICBjbGllbnRJZDogc3RhdGUuY2xpZW50SWQsXG4gICAgICAgIGNsaWVudFNlY3JldDogc3RhdGUuY2xpZW50U2VjcmV0LFxuICAgICAgICByZWZyZXNoVG9rZW46IGN1cnJlbnRBdXRoZW50aWNhdGlvbi5yZWZyZXNoVG9rZW4sXG4gICAgICAgIHJlcXVlc3Q6IHN0YXRlLnJlcXVlc3RcbiAgICAgIH0pO1xuICAgICAgc3RhdGUuYXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgIHRva2VuVHlwZTogXCJvYXV0aFwiLFxuICAgICAgICB0eXBlOiBcInRva2VuXCIsXG4gICAgICAgIC4uLmF1dGhlbnRpY2F0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAob3B0aW9ucy50eXBlID09PSBcInJlZnJlc2hcIikge1xuICAgIGlmIChzdGF0ZS5jbGllbnRUeXBlID09PSBcIm9hdXRoLWFwcFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiW0BvY3Rva2l0L2F1dGgtb2F1dGgtdXNlcl0gT0F1dGggQXBwcyBkbyBub3Qgc3VwcG9ydCBleHBpcmluZyB0b2tlbnNcIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjdXJyZW50QXV0aGVudGljYXRpb24uaGFzT3duUHJvcGVydHkoXCJleHBpcmVzQXRcIikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJdIFJlZnJlc2ggdG9rZW4gbWlzc2luZ1wiKTtcbiAgICB9XG4gICAgYXdhaXQgc3RhdGUub25Ub2tlbkNyZWF0ZWQ/LihzdGF0ZS5hdXRoZW50aWNhdGlvbiwge1xuICAgICAgdHlwZTogb3B0aW9ucy50eXBlXG4gICAgfSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gXCJjaGVja1wiIHx8IG9wdGlvbnMudHlwZSA9PT0gXCJyZXNldFwiKSB7XG4gICAgY29uc3QgbWV0aG9kID0gb3B0aW9ucy50eXBlID09PSBcImNoZWNrXCIgPyBjaGVja1Rva2VuIDogcmVzZXRUb2tlbjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gYXdhaXQgbWV0aG9kKHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtYWtpbmcgVFMgaGFwcHkgd291bGQgcmVxdWlyZSB1bm5lY2Vzc2FyeSBjb2RlIHNvIG5vXG4gICAgICAgIGNsaWVudFR5cGU6IHN0YXRlLmNsaWVudFR5cGUsXG4gICAgICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICAgICAgY2xpZW50U2VjcmV0OiBzdGF0ZS5jbGllbnRTZWNyZXQsXG4gICAgICAgIHRva2VuOiBzdGF0ZS5hdXRoZW50aWNhdGlvbi50b2tlbixcbiAgICAgICAgcmVxdWVzdDogc3RhdGUucmVxdWVzdFxuICAgICAgfSk7XG4gICAgICBzdGF0ZS5hdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgdG9rZW5UeXBlOiBcIm9hdXRoXCIsXG4gICAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUQkRcbiAgICAgICAgLi4uYXV0aGVudGljYXRpb25cbiAgICAgIH07XG4gICAgICBpZiAob3B0aW9ucy50eXBlID09PSBcInJlc2V0XCIpIHtcbiAgICAgICAgYXdhaXQgc3RhdGUub25Ub2tlbkNyZWF0ZWQ/LihzdGF0ZS5hdXRoZW50aWNhdGlvbiwge1xuICAgICAgICAgIHR5cGU6IG9wdGlvbnMudHlwZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZS5hdXRoZW50aWNhdGlvbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBcIltAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJdIFRva2VuIGlzIGludmFsaWRcIjtcbiAgICAgICAgc3RhdGUuYXV0aGVudGljYXRpb24uaW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gXCJkZWxldGVcIiB8fCBvcHRpb25zLnR5cGUgPT09IFwiZGVsZXRlQXV0aG9yaXphdGlvblwiKSB7XG4gICAgY29uc3QgbWV0aG9kID0gb3B0aW9ucy50eXBlID09PSBcImRlbGV0ZVwiID8gZGVsZXRlVG9rZW4gOiBkZWxldGVBdXRob3JpemF0aW9uO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBtZXRob2Qoe1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1ha2luZyBUUyBoYXBweSB3b3VsZCByZXF1aXJlIHVubmVjZXNzYXJ5IGNvZGUgc28gbm9cbiAgICAgICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZSxcbiAgICAgICAgY2xpZW50SWQ6IHN0YXRlLmNsaWVudElkLFxuICAgICAgICBjbGllbnRTZWNyZXQ6IHN0YXRlLmNsaWVudFNlY3JldCxcbiAgICAgICAgdG9rZW46IHN0YXRlLmF1dGhlbnRpY2F0aW9uLnRva2VuLFxuICAgICAgICByZXF1ZXN0OiBzdGF0ZS5yZXF1ZXN0XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDA0KSB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgc3RhdGUuYXV0aGVudGljYXRpb24uaW52YWxpZCA9IHRydWU7XG4gICAgcmV0dXJuIHN0YXRlLmF1dGhlbnRpY2F0aW9uO1xuICB9XG4gIHJldHVybiBzdGF0ZS5hdXRoZW50aWNhdGlvbjtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL3JlcXVpcmVzLWJhc2ljLWF1dGguanNcbnZhciBST1VURVNfUkVRVUlSSU5HX0JBU0lDX0FVVEggPSAvXFwvYXBwbGljYXRpb25zXFwvW14vXStcXC8odG9rZW58Z3JhbnQpcz8vO1xuZnVuY3Rpb24gcmVxdWlyZXNCYXNpY0F1dGgodXJsKSB7XG4gIHJldHVybiB1cmwgJiYgUk9VVEVTX1JFUVVJUklOR19CQVNJQ19BVVRILnRlc3QodXJsKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2hvb2suanNcbmFzeW5jIGZ1bmN0aW9uIGhvb2soc3RhdGUsIHJlcXVlc3QsIHJvdXRlLCBwYXJhbWV0ZXJzID0ge30pIHtcbiAgY29uc3QgZW5kcG9pbnQgPSByZXF1ZXN0LmVuZHBvaW50Lm1lcmdlKFxuICAgIHJvdXRlLFxuICAgIHBhcmFtZXRlcnNcbiAgKTtcbiAgaWYgKC9cXC9sb2dpblxcLyhvYXV0aFxcL2FjY2Vzc190b2tlbnxkZXZpY2VcXC9jb2RlKSQvLnRlc3QoZW5kcG9pbnQudXJsKSkge1xuICAgIHJldHVybiByZXF1ZXN0KGVuZHBvaW50KTtcbiAgfVxuICBpZiAocmVxdWlyZXNCYXNpY0F1dGgoZW5kcG9pbnQudXJsKSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYnRvYShgJHtzdGF0ZS5jbGllbnRJZH06JHtzdGF0ZS5jbGllbnRTZWNyZXR9YCk7XG4gICAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gYGJhc2ljICR7Y3JlZGVudGlhbHN9YDtcbiAgICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG4gIH1cbiAgY29uc3QgeyB0b2tlbiB9ID0gc3RhdGUuY2xpZW50VHlwZSA9PT0gXCJvYXV0aC1hcHBcIiA/IGF3YWl0IGF1dGgoeyAuLi5zdGF0ZSwgcmVxdWVzdCB9KSA6IGF3YWl0IGF1dGgoeyAuLi5zdGF0ZSwgcmVxdWVzdCB9KTtcbiAgZW5kcG9pbnQuaGVhZGVycy5hdXRob3JpemF0aW9uID0gXCJ0b2tlbiBcIiArIHRva2VuO1xuICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuZnVuY3Rpb24gY3JlYXRlT0F1dGhVc2VyQXV0aCh7XG4gIGNsaWVudElkLFxuICBjbGllbnRTZWNyZXQsXG4gIGNsaWVudFR5cGUgPSBcIm9hdXRoLWFwcFwiLFxuICByZXF1ZXN0ID0gb2N0b2tpdFJlcXVlc3QuZGVmYXVsdHMoe1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwidXNlci1hZ2VudFwiOiBgb2N0b2tpdC1hdXRoLW9hdXRoLWFwcC5qcy8ke1ZFUlNJT059ICR7Z2V0VXNlckFnZW50KCl9YFxuICAgIH1cbiAgfSksXG4gIG9uVG9rZW5DcmVhdGVkLFxuICAuLi5zdHJhdGVneU9wdGlvbnNcbn0pIHtcbiAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKHtcbiAgICBjbGllbnRUeXBlLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudFNlY3JldCxcbiAgICBvblRva2VuQ3JlYXRlZCxcbiAgICBzdHJhdGVneU9wdGlvbnMsXG4gICAgcmVxdWVzdFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aC5iaW5kKG51bGwsIHN0YXRlKSwge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm90IHdvcnRoIHRoZSBleHRyYSBjb2RlIG5lZWRlZCB0byBhcHBlYXNlIFRTXG4gICAgaG9vazogaG9vay5iaW5kKG51bGwsIHN0YXRlKVxuICB9KTtcbn1cbmNyZWF0ZU9BdXRoVXNlckF1dGguVkVSU0lPTiA9IFZFUlNJT047XG5leHBvcnQge1xuICBjcmVhdGVPQXV0aFVzZXJBdXRoLFxuICByZXF1aXJlc0Jhc2ljQXV0aFxufTtcbiIsICIvLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbmltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gXCJ1bml2ZXJzYWwtdXNlci1hZ2VudFwiO1xuaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9hdXRoLmpzXG5pbXBvcnQgeyBjcmVhdGVPQXV0aFVzZXJBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtb2F1dGgtdXNlclwiO1xuYXN5bmMgZnVuY3Rpb24gYXV0aChzdGF0ZSwgYXV0aE9wdGlvbnMpIHtcbiAgaWYgKGF1dGhPcHRpb25zLnR5cGUgPT09IFwib2F1dGgtYXBwXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvYXV0aC1hcHBcIixcbiAgICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICAgIGNsaWVudFNlY3JldDogc3RhdGUuY2xpZW50U2VjcmV0LFxuICAgICAgY2xpZW50VHlwZTogc3RhdGUuY2xpZW50VHlwZSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYGJhc2ljICR7YnRvYShcbiAgICAgICAgICBgJHtzdGF0ZS5jbGllbnRJZH06JHtzdGF0ZS5jbGllbnRTZWNyZXR9YFxuICAgICAgICApfWBcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIGlmIChcImZhY3RvcnlcIiBpbiBhdXRoT3B0aW9ucykge1xuICAgIGNvbnN0IHsgdHlwZSwgLi4ub3B0aW9ucyB9ID0ge1xuICAgICAgLi4uYXV0aE9wdGlvbnMsXG4gICAgICAuLi5zdGF0ZVxuICAgIH07XG4gICAgcmV0dXJuIGF1dGhPcHRpb25zLmZhY3Rvcnkob3B0aW9ucyk7XG4gIH1cbiAgY29uc3QgY29tbW9uID0ge1xuICAgIGNsaWVudElkOiBzdGF0ZS5jbGllbnRJZCxcbiAgICBjbGllbnRTZWNyZXQ6IHN0YXRlLmNsaWVudFNlY3JldCxcbiAgICByZXF1ZXN0OiBzdGF0ZS5yZXF1ZXN0LFxuICAgIC4uLmF1dGhPcHRpb25zXG4gIH07XG4gIGNvbnN0IHVzZXJBdXRoID0gc3RhdGUuY2xpZW50VHlwZSA9PT0gXCJvYXV0aC1hcHBcIiA/IGF3YWl0IGNyZWF0ZU9BdXRoVXNlckF1dGgoe1xuICAgIC4uLmNvbW1vbixcbiAgICBjbGllbnRUeXBlOiBzdGF0ZS5jbGllbnRUeXBlXG4gIH0pIDogYXdhaXQgY3JlYXRlT0F1dGhVc2VyQXV0aCh7XG4gICAgLi4uY29tbW9uLFxuICAgIGNsaWVudFR5cGU6IHN0YXRlLmNsaWVudFR5cGVcbiAgfSk7XG4gIHJldHVybiB1c2VyQXV0aCgpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaG9vay5qc1xuaW1wb3J0IHsgcmVxdWlyZXNCYXNpY0F1dGggfSBmcm9tIFwiQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyXCI7XG5hc3luYyBmdW5jdGlvbiBob29rKHN0YXRlLCByZXF1ZXN0Miwgcm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgbGV0IGVuZHBvaW50ID0gcmVxdWVzdDIuZW5kcG9pbnQubWVyZ2UoXG4gICAgcm91dGUsXG4gICAgcGFyYW1ldGVyc1xuICApO1xuICBpZiAoL1xcL2xvZ2luXFwvKG9hdXRoXFwvYWNjZXNzX3Rva2VufGRldmljZVxcL2NvZGUpJC8udGVzdChlbmRwb2ludC51cmwpKSB7XG4gICAgcmV0dXJuIHJlcXVlc3QyKGVuZHBvaW50KTtcbiAgfVxuICBpZiAoc3RhdGUuY2xpZW50VHlwZSA9PT0gXCJnaXRodWItYXBwXCIgJiYgIXJlcXVpcmVzQmFzaWNBdXRoKGVuZHBvaW50LnVybCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgW0BvY3Rva2l0L2F1dGgtb2F1dGgtYXBwXSBHaXRIdWIgQXBwcyBjYW5ub3QgdXNlIHRoZWlyIGNsaWVudCBJRC9zZWNyZXQgZm9yIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGZvciBlbmRwb2ludHMgb3RoZXIgdGhhbiBcIi9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vKipcIi4gXCIke2VuZHBvaW50Lm1ldGhvZH0gJHtlbmRwb2ludC51cmx9XCIgaXMgbm90IHN1cHBvcnRlZC5gXG4gICAgKTtcbiAgfVxuICBjb25zdCBjcmVkZW50aWFscyA9IGJ0b2EoYCR7c3RhdGUuY2xpZW50SWR9OiR7c3RhdGUuY2xpZW50U2VjcmV0fWApO1xuICBlbmRwb2ludC5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBgYmFzaWMgJHtjcmVkZW50aWFsc31gO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZXF1ZXN0MihlbmRwb2ludCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDAxKSB0aHJvdyBlcnJvcjtcbiAgICBlcnJvci5tZXNzYWdlID0gYFtAb2N0b2tpdC9hdXRoLW9hdXRoLWFwcF0gXCIke2VuZHBvaW50Lm1ldGhvZH0gJHtlbmRwb2ludC51cmx9XCIgZG9lcyBub3Qgc3VwcG9ydCBjbGllbnRJZC9jbGllbnRTZWNyZXQgYmFzaWMgYXV0aGVudGljYXRpb24uYDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vLyBwa2cvZGlzdC1zcmMvdmVyc2lvbi5qc1xudmFyIFZFUlNJT04gPSBcIjAuMC4wLWRldmVsb3BtZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuaW1wb3J0IHsgY3JlYXRlT0F1dGhVc2VyQXV0aCBhcyBjcmVhdGVPQXV0aFVzZXJBdXRoMiB9IGZyb20gXCJAb2N0b2tpdC9hdXRoLW9hdXRoLXVzZXJcIjtcbmZ1bmN0aW9uIGNyZWF0ZU9BdXRoQXBwQXV0aChvcHRpb25zKSB7XG4gIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbihcbiAgICB7XG4gICAgICByZXF1ZXN0OiByZXF1ZXN0LmRlZmF1bHRzKHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwidXNlci1hZ2VudFwiOiBgb2N0b2tpdC1hdXRoLW9hdXRoLWFwcC5qcy8ke1ZFUlNJT059ICR7Z2V0VXNlckFnZW50KCl9YFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNsaWVudFR5cGU6IFwib2F1dGgtYXBwXCJcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aC5iaW5kKG51bGwsIHN0YXRlKSwge1xuICAgIGhvb2s6IGhvb2suYmluZChudWxsLCBzdGF0ZSlcbiAgfSk7XG59XG5leHBvcnQge1xuICBjcmVhdGVPQXV0aEFwcEF1dGgsXG4gIGNyZWF0ZU9BdXRoVXNlckF1dGgyIGFzIGNyZWF0ZU9BdXRoVXNlckF1dGhcbn07XG4iLCAiLy8gd2UgZG9uJ3QgQHRzLWNoZWNrIGhlcmUgYmVjYXVzZSBpdCBjaG9rZXMgb24gYXRvYiBhbmQgYnRvYSB3aGljaCBhcmUgYXZhaWxhYmxlIGluIGFsbCBtb2Rlcm4gSlMgcnVudGltZSBlbnZpcm9ubWVudHNcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpdmF0ZUtleVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BrY3MxKHByaXZhdGVLZXkpIHtcbiAgcmV0dXJuIHByaXZhdGVLZXkuaW5jbHVkZXMoXCItLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tXCIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT3BlblNzaChwcml2YXRlS2V5KSB7XG4gIHJldHVybiBwcml2YXRlS2V5LmluY2x1ZGVzKFwiLS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS1cIik7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybnMge0FycmF5QnVmZmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nMkFycmF5QnVmZmVyKHN0cikge1xuICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7XG4gIGNvbnN0IGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICBmb3IgKGxldCBpID0gMCwgc3RyTGVuID0gc3RyLmxlbmd0aDsgaSA8IHN0ckxlbjsgaSsrKSB7XG4gICAgYnVmVmlld1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBlbVxuICogQHJldHVybnMge0FycmF5QnVmZmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0REVSZnJvbVBFTShwZW0pIHtcbiAgY29uc3QgcGVtQjY0ID0gcGVtXG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5zbGljZSgxLCAtMSkgLy8gUmVtb3ZlIHRoZSAtLS0gQkVHSU4gLyBFTkQgUFJJVkFURSBLRVkgLS0tXG4gICAgLmpvaW4oXCJcIik7XG5cbiAgY29uc3QgZGVjb2RlZCA9IGF0b2IocGVtQjY0KTtcbiAgcmV0dXJuIHN0cmluZzJBcnJheUJ1ZmZlcihkZWNvZGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWxzJykuSGVhZGVyfSBoZWFkZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbHMnKS5QYXlsb2FkfSBwYXlsb2FkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5jb2RlZE1lc3NhZ2UoaGVhZGVyLCBwYXlsb2FkKSB7XG4gIHJldHVybiBgJHtiYXNlNjRlbmNvZGVKU09OKGhlYWRlcil9LiR7YmFzZTY0ZW5jb2RlSlNPTihwYXlsb2FkKX1gO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGJ1ZmZlclxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NGVuY29kZShidWZmZXIpIHtcbiAgdmFyIGJpbmFyeSA9IFwiXCI7XG4gIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHZhciBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIGZyb21CYXNlNjQoYnRvYShiaW5hcnkpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmcm9tQmFzZTY0KGJhc2U2NCkge1xuICByZXR1cm4gYmFzZTY0LnJlcGxhY2UoLz0vZywgXCJcIikucmVwbGFjZSgvXFwrL2csIFwiLVwiKS5yZXBsYWNlKC9cXC8vZywgXCJfXCIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZyx1bmtub3duPn0gb2JqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBiYXNlNjRlbmNvZGVKU09OKG9iaikge1xuICByZXR1cm4gZnJvbUJhc2U2NChidG9hKEpTT04uc3RyaW5naWZ5KG9iaikpKTtcbn1cbiIsICIvLyB0aGlzIGNhbiBiZSByZW1vdmVkIG9uY2Ugd2Ugb25seSBzdXBwb3J0IE5vZGUgMjArXG5leHBvcnQgeyBzdWJ0bGUgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IGNyZWF0ZVByaXZhdGVLZXkgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgaXNQa2NzMSB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbi8vIG5vLW9wLCB1bmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIHdheSB0byB0cmFuc2Zvcm0gZnJvbSBQS0NTOCBvciBPcGVuU1NIIHRvIFBLQ1MxIHdpdGggV2ViQ3J5cHRvXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFByaXZhdGVLZXkocHJpdmF0ZUtleSkge1xuICBpZiAoIWlzUGtjczEocHJpdmF0ZUtleSkpIHJldHVybiBwcml2YXRlS2V5O1xuXG4gIHJldHVybiBjcmVhdGVQcml2YXRlS2V5KHByaXZhdGVLZXkpLmV4cG9ydCh7XG4gICAgdHlwZTogXCJwa2NzOFwiLFxuICAgIGZvcm1hdDogXCJwZW1cIixcbiAgfSk7XG59XG4iLCAiLy8gd2UgZG9uJ3QgQHRzLWNoZWNrIGhlcmUgYmVjYXVzZSBpdCBjaG9rZXMgY3J5cHRvIHdoaWNoIGlzIGEgZ2xvYmFsIEFQSSBpbiBtb2Rlcm4gSlMgcnVudGltZSBlbnZpcm9ubWVudHNcblxuaW1wb3J0IHtcbiAgaXNQa2NzMSxcbiAgaXNPcGVuU3NoLFxuICBnZXRFbmNvZGVkTWVzc2FnZSxcbiAgZ2V0REVSZnJvbVBFTSxcbiAgc3RyaW5nMkFycmF5QnVmZmVyLFxuICBiYXNlNjRlbmNvZGUsXG59IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbmltcG9ydCB7IHN1YnRsZSwgY29udmVydFByaXZhdGVLZXkgfSBmcm9tIFwiI2NyeXB0b1wiO1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbHMnKS5HZXRUb2tlbk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUb2tlbih7IHByaXZhdGVLZXksIHBheWxvYWQgfSkge1xuICBjb25zdCBjb252ZXJ0ZWRQcml2YXRlS2V5ID0gY29udmVydFByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG5cbiAgLy8gV2ViQ3J5cHRvIG9ubHkgc3VwcG9ydHMgUEtDUyM4LCB1bmZvcnR1bmF0ZWx5XG4gIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICBpZiAoaXNQa2NzMShjb252ZXJ0ZWRQcml2YXRlS2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiW3VuaXZlcnNhbC1naXRodWItYXBwLWp3dF0gUHJpdmF0ZSBLZXkgaXMgaW4gUEtDUyMxIGZvcm1hdCwgYnV0IG9ubHkgUEtDUyM4IGlzIHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncjJtL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dCNwcml2YXRlLWtleS1mb3JtYXRzXCJcbiAgICApO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBzdG9wICovXG5cbiAgLy8gV2ViQ3J5cHRvIGRvZXMgbm90IHN1cHBvcnQgT3BlblNTSCwgdW5mb3J0dW5hdGVseVxuICBpZiAoaXNPcGVuU3NoKGNvbnZlcnRlZFByaXZhdGVLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJbdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0XSBQcml2YXRlIEtleSBpcyBpbiBPcGVuU1NIIGZvcm1hdCwgYnV0IG9ubHkgUEtDUyM4IGlzIHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncjJtL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dCNwcml2YXRlLWtleS1mb3JtYXRzXCJcbiAgICApO1xuICB9XG5cbiAgY29uc3QgYWxnb3JpdGhtID0ge1xuICAgIG5hbWU6IFwiUlNBU1NBLVBLQ1MxLXYxXzVcIixcbiAgICBoYXNoOiB7IG5hbWU6IFwiU0hBLTI1NlwiIH0sXG4gIH07XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4uL2ludGVybmFscycpLkhlYWRlcn0gKi9cbiAgY29uc3QgaGVhZGVyID0geyBhbGc6IFwiUlMyNTZcIiwgdHlwOiBcIkpXVFwiIH07XG5cbiAgY29uc3QgcHJpdmF0ZUtleURFUiA9IGdldERFUmZyb21QRU0oY29udmVydGVkUHJpdmF0ZUtleSk7XG4gIGNvbnN0IGltcG9ydGVkS2V5ID0gYXdhaXQgc3VidGxlLmltcG9ydEtleShcbiAgICBcInBrY3M4XCIsXG4gICAgcHJpdmF0ZUtleURFUixcbiAgICBhbGdvcml0aG0sXG4gICAgZmFsc2UsXG4gICAgW1wic2lnblwiXVxuICApO1xuXG4gIGNvbnN0IGVuY29kZWRNZXNzYWdlID0gZ2V0RW5jb2RlZE1lc3NhZ2UoaGVhZGVyLCBwYXlsb2FkKTtcbiAgY29uc3QgZW5jb2RlZE1lc3NhZ2VBcnJCdWYgPSBzdHJpbmcyQXJyYXlCdWZmZXIoZW5jb2RlZE1lc3NhZ2UpO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFyckJ1ZiA9IGF3YWl0IHN1YnRsZS5zaWduKFxuICAgIGFsZ29yaXRobS5uYW1lLFxuICAgIGltcG9ydGVkS2V5LFxuICAgIGVuY29kZWRNZXNzYWdlQXJyQnVmXG4gICk7XG5cbiAgY29uc3QgZW5jb2RlZFNpZ25hdHVyZSA9IGJhc2U2NGVuY29kZShzaWduYXR1cmVBcnJCdWYpO1xuXG4gIHJldHVybiBgJHtlbmNvZGVkTWVzc2FnZX0uJHtlbmNvZGVkU2lnbmF0dXJlfWA7XG59XG4iLCAiLy8gQHRzLWNoZWNrXG5cbi8vIEB0cy1pZ25vcmUgLSAjZ2V0LXRva2VuIGlzIGRlZmluZWQgaW4gXCJpbXBvcnRzXCIgaW4gcGFja2FnZS5qc29uXG5pbXBvcnQgeyBnZXRUb2tlbiB9IGZyb20gXCIuL2xpYi9nZXQtdG9rZW4uanNcIjtcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi5cIikuT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLlwiKS5SZXN1bHQ+fVxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBnaXRodWJBcHBKd3Qoe1xuICBpZCxcbiAgcHJpdmF0ZUtleSxcbiAgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG59KSB7XG4gIC8vIFByaXZhdGUga2V5cyBhcmUgb2Z0ZW4gdGltZXMgY29uZmlndXJlZCBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGluIHdoaWNoIGNhc2UgbGluZSBicmVha3MgYXJlIGVzY2FwZWQgdXNpbmcgYFxcXFxuYC5cbiAgLy8gUmVwbGFjZSB0aGVzZSBoZXJlIGZvciBjb252ZW5pZW5jZS5cbiAgY29uc3QgcHJpdmF0ZUtleVdpdGhOZXdsaW5lcyA9IHByaXZhdGVLZXkucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpO1xuXG4gIC8vIFdoZW4gY3JlYXRpbmcgYSBKU09OIFdlYiBUb2tlbiwgaXQgc2V0cyB0aGUgXCJpc3N1ZWQgYXQgdGltZVwiIChpYXQpIHRvIDMwc1xuICAvLyBpbiB0aGUgcGFzdCBhcyB3ZSBoYXZlIHNlZW4gcGVvcGxlIHJ1bm5pbmcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgR2l0SHViIEFQSVxuICAvLyBjbGFpbWVkIHRoZSBpYXQgd291bGQgYmUgaW4gZnV0dXJlLiBJdCB0dXJuZWQgb3V0IHRoZSBjbG9ja3Mgb24gdGhlXG4gIC8vIGRpZmZlcmVudCBtYWNoaW5lIHdlcmUgbm90IGluIHN5bmMuXG4gIGNvbnN0IG5vd1dpdGhTYWZldHlNYXJnaW4gPSBub3cgLSAzMDtcbiAgY29uc3QgZXhwaXJhdGlvbiA9IG5vd1dpdGhTYWZldHlNYXJnaW4gKyA2MCAqIDEwOyAvLyBKV1QgZXhwaXJhdGlvbiB0aW1lICgxMCBtaW51dGUgbWF4aW11bSlcblxuICBjb25zdCBwYXlsb2FkID0ge1xuICAgIGlhdDogbm93V2l0aFNhZmV0eU1hcmdpbiwgLy8gSXNzdWVkIGF0IHRpbWVcbiAgICBleHA6IGV4cGlyYXRpb24sXG4gICAgaXNzOiBpZCxcbiAgfTtcblxuICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldFRva2VuKHtcbiAgICBwcml2YXRlS2V5OiBwcml2YXRlS2V5V2l0aE5ld2xpbmVzLFxuICAgIHBheWxvYWQsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwSWQ6IGlkLFxuICAgIGV4cGlyYXRpb24sXG4gICAgdG9rZW4sXG4gIH07XG59XG4iLCAiLyoqXG4gKiB0b2FkLWNhY2hlXG4gKlxuICogQGNvcHlyaWdodCAyMDI0IElnb3IgU2F2aW4gPGtpYmVydG9hZEBnbWFpbC5jb20+XG4gKiBAbGljZW5zZSBNSVRcbiAqIEB2ZXJzaW9uIDMuNy4wXG4gKi9cbmNsYXNzIEZpZm9NYXAge1xuICBjb25zdHJ1Y3RvcihtYXggPSAxMDAwLCB0dGxJbk1zZWNzID0gMCkge1xuICAgIGlmIChpc05hTihtYXgpIHx8IG1heCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXggdmFsdWUnKVxuICAgIH1cblxuICAgIGlmIChpc05hTih0dGxJbk1zZWNzKSB8fCB0dGxJbk1zZWNzIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR0bCB2YWx1ZScpXG4gICAgfVxuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMubWF4ID0gbWF4O1xuICAgIHRoaXMudHRsID0gdHRsSW5Nc2VjcztcbiAgfVxuXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnNpemVcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuaXRlbXMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgfVxuXG4gIGRlbGV0ZShrZXkpIHtcbiAgICBpZiAodGhpcy5pdGVtcy5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgZGVsZXRlZEl0ZW0gPSB0aGlzLml0ZW1zLmdldChrZXkpO1xuXG4gICAgICB0aGlzLml0ZW1zLmRlbGV0ZShrZXkpO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0ucHJldiAhPT0gbnVsbCkge1xuICAgICAgICBkZWxldGVkSXRlbS5wcmV2Lm5leHQgPSBkZWxldGVkSXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0ubmV4dCAhPT0gbnVsbCkge1xuICAgICAgICBkZWxldGVkSXRlbS5uZXh0LnByZXYgPSBkZWxldGVkSXRlbS5wcmV2O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maXJzdCA9PT0gZGVsZXRlZEl0ZW0pIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGRlbGV0ZWRJdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmxhc3QgPT09IGRlbGV0ZWRJdGVtKSB7XG4gICAgICAgIHRoaXMubGFzdCA9IGRlbGV0ZWRJdGVtLnByZXY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlTWFueShrZXlzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmRlbGV0ZShrZXlzW2ldKTtcbiAgICB9XG4gIH1cblxuICBldmljdCgpIHtcbiAgICBpZiAodGhpcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmlyc3Q7XG5cbiAgICAgIHRoaXMuaXRlbXMuZGVsZXRlKGl0ZW0ua2V5KTtcblxuICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBpdGVtLm5leHQ7XG4gICAgICAgIHRoaXMuZmlyc3QucHJldiA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwaXJlc0F0KGtleSkge1xuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5nZXQoa2V5KS5leHBpcnlcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5KSB7XG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldChrZXkpO1xuXG4gICAgICBpZiAodGhpcy50dGwgPiAwICYmIGl0ZW0uZXhwaXJ5IDw9IERhdGUubm93KCkpIHtcbiAgICAgICAgdGhpcy5kZWxldGUoa2V5KTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtLnZhbHVlXG4gICAgfVxuICB9XG5cbiAgZ2V0TWFueShrZXlzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2V0KGtleXNbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBrZXlzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmtleXMoKVxuICB9XG5cbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAvLyBSZXBsYWNlIGV4aXN0aW5nIGl0ZW1cbiAgICBpZiAodGhpcy5pdGVtcy5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZ2V0KGtleSk7XG4gICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGl0ZW0uZXhwaXJ5ID0gdGhpcy50dGwgPiAwID8gRGF0ZS5ub3coKSArIHRoaXMudHRsIDogdGhpcy50dGw7XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEFkZCBuZXcgaXRlbVxuICAgIGlmICh0aGlzLm1heCA+IDAgJiYgdGhpcy5zaXplID09PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5ldmljdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICBleHBpcnk6IHRoaXMudHRsID4gMCA/IERhdGUubm93KCkgKyB0aGlzLnR0bCA6IHRoaXMudHRsLFxuICAgICAga2V5OiBrZXksXG4gICAgICBwcmV2OiB0aGlzLmxhc3QsXG4gICAgICBuZXh0OiBudWxsLFxuICAgICAgdmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLml0ZW1zLnNldChrZXksIGl0ZW0pO1xuXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gMSkge1xuICAgICAgdGhpcy5maXJzdCA9IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFzdC5uZXh0ID0gaXRlbTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG59Y2xhc3MgTHJ1TWFwIHtcbiAgY29uc3RydWN0b3IobWF4ID0gMTAwMCwgdHRsSW5Nc2VjcyA9IDApIHtcbiAgICBpZiAoaXNOYU4obWF4KSB8fCBtYXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF4IHZhbHVlJylcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odHRsSW5Nc2VjcykgfHwgdHRsSW5Nc2VjcyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0dGwgdmFsdWUnKVxuICAgIH1cblxuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMuaXRlbXMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgICB0aGlzLnR0bCA9IHR0bEluTXNlY3M7XG4gIH1cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5zaXplXG4gIH1cblxuICBidW1wTHJ1KGl0ZW0pIHtcbiAgICBpZiAodGhpcy5sYXN0ID09PSBpdGVtKSB7XG4gICAgICByZXR1cm4gLy8gSXRlbSBpcyBhbHJlYWR5IHRoZSBsYXN0IG9uZSwgbm8gbmVlZCB0byBidW1wXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdDtcbiAgICBjb25zdCBuZXh0ID0gaXRlbS5uZXh0O1xuICAgIGNvbnN0IHByZXYgPSBpdGVtLnByZXY7XG5cbiAgICBpZiAodGhpcy5maXJzdCA9PT0gaXRlbSkge1xuICAgICAgdGhpcy5maXJzdCA9IG5leHQ7XG4gICAgfVxuXG4gICAgaXRlbS5uZXh0ID0gbnVsbDtcbiAgICBpdGVtLnByZXYgPSBsYXN0O1xuICAgIGxhc3QubmV4dCA9IGl0ZW07XG5cbiAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICB9XG5cbiAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgbmV4dC5wcmV2ID0gcHJldjtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlKGtleSkge1xuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5nZXQoa2V5KTtcblxuICAgICAgdGhpcy5pdGVtcy5kZWxldGUoa2V5KTtcblxuICAgICAgaWYgKGl0ZW0ucHJldiAhPT0gbnVsbCkge1xuICAgICAgICBpdGVtLnByZXYubmV4dCA9IGl0ZW0ubmV4dDtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW0ubmV4dCAhPT0gbnVsbCkge1xuICAgICAgICBpdGVtLm5leHQucHJldiA9IGl0ZW0ucHJldjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmlyc3QgPT09IGl0ZW0pIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGl0ZW0ubmV4dDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGFzdCA9PT0gaXRlbSkge1xuICAgICAgICB0aGlzLmxhc3QgPSBpdGVtLnByZXY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlTWFueShrZXlzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmRlbGV0ZShrZXlzW2ldKTtcbiAgICB9XG4gIH1cblxuICBldmljdCgpIHtcbiAgICBpZiAodGhpcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmlyc3Q7XG5cbiAgICAgIHRoaXMuaXRlbXMuZGVsZXRlKGl0ZW0ua2V5KTtcblxuICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBpdGVtLm5leHQ7XG4gICAgICAgIHRoaXMuZmlyc3QucHJldiA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwaXJlc0F0KGtleSkge1xuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5nZXQoa2V5KS5leHBpcnlcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5KSB7XG4gICAgaWYgKHRoaXMuaXRlbXMuaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldChrZXkpO1xuXG4gICAgICAvLyBJdGVtIGhhcyBhbHJlYWR5IGV4cGlyZWRcbiAgICAgIGlmICh0aGlzLnR0bCA+IDAgJiYgaXRlbS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSXRlbSBpcyBzdGlsbCBmcmVzaFxuICAgICAgdGhpcy5idW1wTHJ1KGl0ZW0pO1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRNYW55KGtleXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2godGhpcy5nZXQoa2V5c1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMua2V5cygpXG4gIH1cblxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgaXRlbVxuICAgIGlmICh0aGlzLml0ZW1zLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5nZXQoa2V5KTtcbiAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaXRlbS5leHBpcnkgPSB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bDtcblxuICAgICAgaWYgKHRoaXMubGFzdCAhPT0gaXRlbSkge1xuICAgICAgICB0aGlzLmJ1bXBMcnUoaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEFkZCBuZXcgaXRlbVxuICAgIGlmICh0aGlzLm1heCA+IDAgJiYgdGhpcy5zaXplID09PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5ldmljdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICBleHBpcnk6IHRoaXMudHRsID4gMCA/IERhdGUubm93KCkgKyB0aGlzLnR0bCA6IHRoaXMudHRsLFxuICAgICAga2V5OiBrZXksXG4gICAgICBwcmV2OiB0aGlzLmxhc3QsXG4gICAgICBuZXh0OiBudWxsLFxuICAgICAgdmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLml0ZW1zLnNldChrZXksIGl0ZW0pO1xuXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gMSkge1xuICAgICAgdGhpcy5maXJzdCA9IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFzdC5uZXh0ID0gaXRlbTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG59Y2xhc3MgTHJ1T2JqZWN0IHtcbiAgY29uc3RydWN0b3IobWF4ID0gMTAwMCwgdHRsSW5Nc2VjcyA9IDApIHtcbiAgICBpZiAoaXNOYU4obWF4KSB8fCBtYXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF4IHZhbHVlJylcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odHRsSW5Nc2VjcykgfHwgdHRsSW5Nc2VjcyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0dGwgdmFsdWUnKVxuICAgIH1cblxuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMuaXRlbXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgICB0aGlzLnR0bCA9IHR0bEluTXNlY3M7XG4gIH1cblxuICBidW1wTHJ1KGl0ZW0pIHtcbiAgICBpZiAodGhpcy5sYXN0ID09PSBpdGVtKSB7XG4gICAgICByZXR1cm4gLy8gSXRlbSBpcyBhbHJlYWR5IHRoZSBsYXN0IG9uZSwgbm8gbmVlZCB0byBidW1wXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdDtcbiAgICBjb25zdCBuZXh0ID0gaXRlbS5uZXh0O1xuICAgIGNvbnN0IHByZXYgPSBpdGVtLnByZXY7XG5cbiAgICBpZiAodGhpcy5maXJzdCA9PT0gaXRlbSkge1xuICAgICAgdGhpcy5maXJzdCA9IG5leHQ7XG4gICAgfVxuXG4gICAgaXRlbS5uZXh0ID0gbnVsbDtcbiAgICBpdGVtLnByZXYgPSBsYXN0O1xuICAgIGxhc3QubmV4dCA9IGl0ZW07XG5cbiAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICB9XG5cbiAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgbmV4dC5wcmV2ID0gcHJldjtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLnNpemUgPSAwO1xuICB9XG5cbiAgZGVsZXRlKGtleSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcblxuICAgICAgZGVsZXRlIHRoaXMuaXRlbXNba2V5XTtcbiAgICAgIHRoaXMuc2l6ZS0tO1xuXG4gICAgICBpZiAoaXRlbS5wcmV2ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZW0ucHJldi5uZXh0ID0gaXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZW0ubmV4dC5wcmV2ID0gaXRlbS5wcmV2O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maXJzdCA9PT0gaXRlbSkge1xuICAgICAgICB0aGlzLmZpcnN0ID0gaXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5sYXN0ID09PSBpdGVtKSB7XG4gICAgICAgIHRoaXMubGFzdCA9IGl0ZW0ucHJldjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVNYW55KGtleXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVsZXRlKGtleXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maXJzdDtcblxuICAgICAgZGVsZXRlIHRoaXMuaXRlbXNbaXRlbS5rZXldO1xuXG4gICAgICBpZiAoLS10aGlzLnNpemUgPT09IDApIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpcnN0ID0gaXRlbS5uZXh0O1xuICAgICAgICB0aGlzLmZpcnN0LnByZXYgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cGlyZXNBdChrZXkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbXMsIGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zW2tleV0uZXhwaXJ5XG4gICAgfVxuICB9XG5cbiAgZ2V0KGtleSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcblxuICAgICAgLy8gSXRlbSBoYXMgYWxyZWFkeSBleHBpcmVkXG4gICAgICBpZiAodGhpcy50dGwgPiAwICYmIGl0ZW0uZXhwaXJ5IDw9IERhdGUubm93KCkpIHtcbiAgICAgICAgdGhpcy5kZWxldGUoa2V5KTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEl0ZW0gaXMgc3RpbGwgZnJlc2hcbiAgICAgIHRoaXMuYnVtcExydShpdGVtKTtcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlXG4gICAgfVxuICB9XG5cbiAgZ2V0TWFueShrZXlzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2V0KGtleXNbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBrZXlzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLml0ZW1zKVxuICB9XG5cbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAvLyBSZXBsYWNlIGV4aXN0aW5nIGl0ZW1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbXMsIGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2tleV07XG4gICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGl0ZW0uZXhwaXJ5ID0gdGhpcy50dGwgPiAwID8gRGF0ZS5ub3coKSArIHRoaXMudHRsIDogdGhpcy50dGw7XG5cbiAgICAgIGlmICh0aGlzLmxhc3QgIT09IGl0ZW0pIHtcbiAgICAgICAgdGhpcy5idW1wTHJ1KGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBBZGQgbmV3IGl0ZW1cbiAgICBpZiAodGhpcy5tYXggPiAwICYmIHRoaXMuc2l6ZSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgIHRoaXMuZXZpY3QoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtID0ge1xuICAgICAgZXhwaXJ5OiB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bCxcbiAgICAgIGtleToga2V5LFxuICAgICAgcHJldjogdGhpcy5sYXN0LFxuICAgICAgbmV4dDogbnVsbCxcbiAgICAgIHZhbHVlLFxuICAgIH07XG4gICAgdGhpcy5pdGVtc1trZXldID0gaXRlbTtcblxuICAgIGlmICgrK3RoaXMuc2l6ZSA9PT0gMSkge1xuICAgICAgdGhpcy5maXJzdCA9IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFzdC5uZXh0ID0gaXRlbTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBpdGVtO1xuICB9XG59Y2xhc3MgSGl0U3RhdGlzdGljc1JlY29yZCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVjb3JkcyA9IHt9O1xuICB9XG5cbiAgaW5pdEZvckNhY2hlKGNhY2hlSWQsIGN1cnJlbnRUaW1lU3RhbXApIHtcbiAgICB0aGlzLnJlY29yZHNbY2FjaGVJZF0gPSB7XG4gICAgICBbY3VycmVudFRpbWVTdGFtcF06IHtcbiAgICAgICAgY2FjaGVTaXplOiAwLFxuICAgICAgICBoaXRzOiAwLFxuICAgICAgICBmYWxzeUhpdHM6IDAsXG4gICAgICAgIGVtcHR5SGl0czogMCxcbiAgICAgICAgbWlzc2VzOiAwLFxuICAgICAgICBleHBpcmF0aW9uczogMCxcbiAgICAgICAgZXZpY3Rpb25zOiAwLFxuICAgICAgICBpbnZhbGlkYXRlT25lOiAwLFxuICAgICAgICBpbnZhbGlkYXRlQWxsOiAwLFxuICAgICAgICBzZXRzOiAwLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcmVzZXRGb3JDYWNoZShjYWNoZUlkKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMucmVjb3Jkc1tjYWNoZUlkXSkpIHtcbiAgICAgIHRoaXMucmVjb3Jkc1tjYWNoZUlkXVtrZXldID0ge1xuICAgICAgICBjYWNoZVNpemU6IDAsXG4gICAgICAgIGhpdHM6IDAsXG4gICAgICAgIGZhbHN5SGl0czogMCxcbiAgICAgICAgZW1wdHlIaXRzOiAwLFxuICAgICAgICBtaXNzZXM6IDAsXG4gICAgICAgIGV4cGlyYXRpb25zOiAwLFxuICAgICAgICBldmljdGlvbnM6IDAsXG4gICAgICAgIGludmFsaWRhdGVPbmU6IDAsXG4gICAgICAgIGludmFsaWRhdGVBbGw6IDAsXG4gICAgICAgIHNldHM6IDAsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXRpc3RpY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkc1xuICB9XG59LyoqXG4gKlxuICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRUaW1lc3RhbXAoZGF0ZSkge1xuICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0keyhkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9LSR7ZGF0ZVxuICAgIC5nZXREYXRlKClcbiAgICAudG9TdHJpbmcoKVxuICAgIC5wYWRTdGFydCgyLCAnMCcpfWBcbn1jbGFzcyBIaXRTdGF0aXN0aWNzIHtcbiAgY29uc3RydWN0b3IoY2FjaGVJZCwgc3RhdGlzdGljVHRsSW5Ib3VycywgZ2xvYmFsU3RhdGlzdGljc1JlY29yZCkge1xuICAgIHRoaXMuY2FjaGVJZCA9IGNhY2hlSWQ7XG4gICAgdGhpcy5zdGF0aXN0aWNUdGxJbkhvdXJzID0gc3RhdGlzdGljVHRsSW5Ib3VycztcblxuICAgIHRoaXMuY29sbGVjdGlvblN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLmN1cnJlbnRUaW1lU3RhbXAgPSBnZXRUaW1lc3RhbXAodGhpcy5jb2xsZWN0aW9uU3RhcnQpO1xuXG4gICAgdGhpcy5yZWNvcmRzID0gZ2xvYmFsU3RhdGlzdGljc1JlY29yZCB8fCBuZXcgSGl0U3RhdGlzdGljc1JlY29yZCgpO1xuICAgIHRoaXMucmVjb3Jkcy5pbml0Rm9yQ2FjaGUodGhpcy5jYWNoZUlkLCB0aGlzLmN1cnJlbnRUaW1lU3RhbXApO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZWNvcmQoKSB7XG4gICAgLy8gc2FmZXR5IG5ldFxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDE0ICovXG4gICAgaWYgKCF0aGlzLnJlY29yZHMucmVjb3Jkc1t0aGlzLmNhY2hlSWRdW3RoaXMuY3VycmVudFRpbWVTdGFtcF0pIHtcbiAgICAgIHRoaXMucmVjb3Jkcy5yZWNvcmRzW3RoaXMuY2FjaGVJZF1bdGhpcy5jdXJyZW50VGltZVN0YW1wXSA9IHtcbiAgICAgICAgY2FjaGVTaXplOiAwLFxuICAgICAgICBoaXRzOiAwLFxuICAgICAgICBmYWxzeUhpdHM6IDAsXG4gICAgICAgIGVtcHR5SGl0czogMCxcbiAgICAgICAgbWlzc2VzOiAwLFxuICAgICAgICBleHBpcmF0aW9uczogMCxcbiAgICAgICAgZXZpY3Rpb25zOiAwLFxuICAgICAgICBzZXRzOiAwLFxuICAgICAgICBpbnZhbGlkYXRlT25lOiAwLFxuICAgICAgICBpbnZhbGlkYXRlQWxsOiAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZWNvcmRzLnJlY29yZHNbdGhpcy5jYWNoZUlkXVt0aGlzLmN1cnJlbnRUaW1lU3RhbXBdXG4gIH1cblxuICBob3Vyc1Bhc3NlZCgpIHtcbiAgICByZXR1cm4gKERhdGUubm93KCkgLSB0aGlzLmNvbGxlY3Rpb25TdGFydCkgLyAxMDAwIC8gNjAgLyA2MFxuICB9XG5cbiAgYWRkSGl0KCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmhpdHMrKztcbiAgfVxuICBhZGRGYWxzeUhpdCgpIHtcbiAgICB0aGlzLmFyY2hpdmVJZk5lZWRlZCgpO1xuICAgIHRoaXMuY3VycmVudFJlY29yZC5mYWxzeUhpdHMrKztcbiAgfVxuXG4gIGFkZEVtcHR5SGl0KCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmVtcHR5SGl0cysrO1xuICB9XG5cbiAgYWRkTWlzcygpIHtcbiAgICB0aGlzLmFyY2hpdmVJZk5lZWRlZCgpO1xuICAgIHRoaXMuY3VycmVudFJlY29yZC5taXNzZXMrKztcbiAgfVxuXG4gIGFkZEV2aWN0aW9uKCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmV2aWN0aW9ucysrO1xuICB9XG5cbiAgc2V0Q2FjaGVTaXplKGN1cnJlbnRTaXplKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuY2FjaGVTaXplID0gY3VycmVudFNpemU7XG4gIH1cblxuICBhZGRFeHBpcmF0aW9uKCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmV4cGlyYXRpb25zKys7XG4gIH1cblxuICBhZGRTZXQoKSB7XG4gICAgdGhpcy5hcmNoaXZlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmN1cnJlbnRSZWNvcmQuc2V0cysrO1xuICB9XG5cbiAgYWRkSW52YWxpZGF0ZU9uZSgpIHtcbiAgICB0aGlzLmFyY2hpdmVJZk5lZWRlZCgpO1xuICAgIHRoaXMuY3VycmVudFJlY29yZC5pbnZhbGlkYXRlT25lKys7XG4gIH1cblxuICBhZGRJbnZhbGlkYXRlQWxsKCkge1xuICAgIHRoaXMuYXJjaGl2ZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jdXJyZW50UmVjb3JkLmludmFsaWRhdGVBbGwrKztcbiAgfVxuXG4gIGdldFN0YXRpc3RpY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkcy5nZXRTdGF0aXN0aWNzKClcbiAgfVxuXG4gIGFyY2hpdmVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5ob3Vyc1Bhc3NlZCgpID49IHRoaXMuc3RhdGlzdGljVHRsSW5Ib3Vycykge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uU3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGhpcy5jdXJyZW50VGltZVN0YW1wID0gZ2V0VGltZXN0YW1wKHRoaXMuY29sbGVjdGlvblN0YXJ0KTtcbiAgICAgIHRoaXMucmVjb3Jkcy5pbml0Rm9yQ2FjaGUodGhpcy5jYWNoZUlkLCB0aGlzLmN1cnJlbnRUaW1lU3RhbXApO1xuICAgIH1cbiAgfVxufWNsYXNzIExydU9iamVjdEhpdFN0YXRpc3RpY3MgZXh0ZW5kcyBMcnVPYmplY3Qge1xuICBjb25zdHJ1Y3RvcihtYXgsIHR0bEluTXNlY3MsIGNhY2hlSWQsIGdsb2JhbFN0YXRpc3RpY3NSZWNvcmQsIHN0YXRpc3RpY1R0bEluSG91cnMpIHtcbiAgICBzdXBlcihtYXggfHwgMTAwMCwgdHRsSW5Nc2VjcyB8fCAwKTtcblxuICAgIGlmICghY2FjaGVJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZSBpZCBpcyBtYW5kYXRvcnknKVxuICAgIH1cblxuICAgIHRoaXMuaGl0U3RhdGlzdGljcyA9IG5ldyBIaXRTdGF0aXN0aWNzKFxuICAgICAgY2FjaGVJZCxcbiAgICAgIHN0YXRpc3RpY1R0bEluSG91cnMgIT09IHVuZGVmaW5lZCA/IHN0YXRpc3RpY1R0bEluSG91cnMgOiAyNCxcbiAgICAgIGdsb2JhbFN0YXRpc3RpY3NSZWNvcmQsXG4gICAgKTtcbiAgfVxuXG4gIGdldFN0YXRpc3RpY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGl0U3RhdGlzdGljcy5nZXRTdGF0aXN0aWNzKClcbiAgfVxuXG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgc3VwZXIuc2V0KGtleSwgdmFsdWUpO1xuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRTZXQoKTtcbiAgICB0aGlzLmhpdFN0YXRpc3RpY3Muc2V0Q2FjaGVTaXplKHRoaXMuc2l6ZSk7XG4gIH1cblxuICBldmljdCgpIHtcbiAgICBzdXBlci5ldmljdCgpO1xuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRFdmljdGlvbigpO1xuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5zZXRDYWNoZVNpemUodGhpcy5zaXplKTtcbiAgfVxuXG4gIGRlbGV0ZShrZXksIGlzRXhwaXJhdGlvbiA9IGZhbHNlKSB7XG4gICAgc3VwZXIuZGVsZXRlKGtleSk7XG5cbiAgICBpZiAoIWlzRXhwaXJhdGlvbikge1xuICAgICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZEludmFsaWRhdGVPbmUoKTtcbiAgICB9XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLnNldENhY2hlU2l6ZSh0aGlzLnNpemUpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgc3VwZXIuY2xlYXIoKTtcblxuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRJbnZhbGlkYXRlQWxsKCk7XG4gICAgdGhpcy5oaXRTdGF0aXN0aWNzLnNldENhY2hlU2l6ZSh0aGlzLnNpemUpO1xuICB9XG5cbiAgZ2V0KGtleSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcblxuICAgICAgLy8gSXRlbSBoYXMgYWxyZWFkeSBleHBpcmVkXG4gICAgICBpZiAodGhpcy50dGwgPiAwICYmIGl0ZW0uZXhwaXJ5IDw9IERhdGUubm93KCkpIHtcbiAgICAgICAgdGhpcy5kZWxldGUoa2V5LCB0cnVlKTtcbiAgICAgICAgdGhpcy5oaXRTdGF0aXN0aWNzLmFkZEV4cGlyYXRpb24oKTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEl0ZW0gaXMgc3RpbGwgZnJlc2hcbiAgICAgIHRoaXMuYnVtcExydShpdGVtKTtcbiAgICAgIGlmICghaXRlbS52YWx1ZSkge1xuICAgICAgICB0aGlzLmhpdFN0YXRpc3RpY3MuYWRkRmFsc3lIaXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnZhbHVlID09PSB1bmRlZmluZWQgfHwgaXRlbS52YWx1ZSA9PT0gbnVsbCB8fCBpdGVtLnZhbHVlID09PSAnJykge1xuICAgICAgICB0aGlzLmhpdFN0YXRpc3RpY3MuYWRkRW1wdHlIaXQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRIaXQoKTtcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlXG4gICAgfVxuICAgIHRoaXMuaGl0U3RhdGlzdGljcy5hZGRNaXNzKCk7XG4gIH1cbn1jbGFzcyBGaWZvT2JqZWN0IHtcbiAgY29uc3RydWN0b3IobWF4ID0gMTAwMCwgdHRsSW5Nc2VjcyA9IDApIHtcbiAgICBpZiAoaXNOYU4obWF4KSB8fCBtYXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF4IHZhbHVlJylcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odHRsSW5Nc2VjcykgfHwgdHRsSW5Nc2VjcyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0dGwgdmFsdWUnKVxuICAgIH1cblxuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMuaXRlbXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgICB0aGlzLnR0bCA9IHR0bEluTXNlY3M7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLml0ZW1zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG4gIH1cblxuICBkZWxldGUoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICBjb25zdCBkZWxldGVkSXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcblxuICAgICAgZGVsZXRlIHRoaXMuaXRlbXNba2V5XTtcbiAgICAgIHRoaXMuc2l6ZS0tO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0ucHJldiAhPT0gbnVsbCkge1xuICAgICAgICBkZWxldGVkSXRlbS5wcmV2Lm5leHQgPSBkZWxldGVkSXRlbS5uZXh0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0ubmV4dCAhPT0gbnVsbCkge1xuICAgICAgICBkZWxldGVkSXRlbS5uZXh0LnByZXYgPSBkZWxldGVkSXRlbS5wcmV2O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maXJzdCA9PT0gZGVsZXRlZEl0ZW0pIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGRlbGV0ZWRJdGVtLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmxhc3QgPT09IGRlbGV0ZWRJdGVtKSB7XG4gICAgICAgIHRoaXMubGFzdCA9IGRlbGV0ZWRJdGVtLnByZXY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlTWFueShrZXlzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmRlbGV0ZShrZXlzW2ldKTtcbiAgICB9XG4gIH1cblxuICBldmljdCgpIHtcbiAgICBpZiAodGhpcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmlyc3Q7XG5cbiAgICAgIGRlbGV0ZSB0aGlzLml0ZW1zW2l0ZW0ua2V5XTtcblxuICAgICAgaWYgKC0tdGhpcy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGl0ZW0ubmV4dDtcbiAgICAgICAgdGhpcy5maXJzdC5wcmV2ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleHBpcmVzQXQoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1zLCBrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtc1trZXldLmV4cGlyeVxuICAgIH1cbiAgfVxuXG4gIGdldChrZXkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbXMsIGtleSkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2tleV07XG5cbiAgICAgIGlmICh0aGlzLnR0bCA+IDAgJiYgaXRlbS5leHBpcnkgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRNYW55KGtleXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2godGhpcy5nZXQoa2V5c1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGtleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaXRlbXMpXG4gIH1cblxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgaXRlbVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pdGVtcywga2V5KSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNba2V5XTtcbiAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaXRlbS5leHBpcnkgPSB0aGlzLnR0bCA+IDAgPyBEYXRlLm5vdygpICsgdGhpcy50dGwgOiB0aGlzLnR0bDtcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQWRkIG5ldyBpdGVtXG4gICAgaWYgKHRoaXMubWF4ID4gMCAmJiB0aGlzLnNpemUgPT09IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLmV2aWN0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIGV4cGlyeTogdGhpcy50dGwgPiAwID8gRGF0ZS5ub3coKSArIHRoaXMudHRsIDogdGhpcy50dGwsXG4gICAgICBrZXk6IGtleSxcbiAgICAgIHByZXY6IHRoaXMubGFzdCxcbiAgICAgIG5leHQ6IG51bGwsXG4gICAgICB2YWx1ZSxcbiAgICB9O1xuICAgIHRoaXMuaXRlbXNba2V5XSA9IGl0ZW07XG5cbiAgICBpZiAoKyt0aGlzLnNpemUgPT09IDEpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBpdGVtO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhc3QubmV4dCA9IGl0ZW07XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gaXRlbTtcbiAgfVxufWV4cG9ydHtGaWZvT2JqZWN0IGFzIEZpZm8sRmlmb01hcCxGaWZvT2JqZWN0LEhpdFN0YXRpc3RpY3NSZWNvcmQsTHJ1T2JqZWN0IGFzIExydSxMcnVPYmplY3RIaXRTdGF0aXN0aWNzIGFzIExydUhpdFN0YXRpc3RpY3MsTHJ1TWFwLExydU9iamVjdCxMcnVPYmplY3RIaXRTdGF0aXN0aWNzfTsiLCAiLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tIFwidW5pdmVyc2FsLXVzZXItYWdlbnRcIjtcbmltcG9ydCB7IHJlcXVlc3QgYXMgZGVmYXVsdFJlcXVlc3QgfSBmcm9tIFwiQG9jdG9raXQvcmVxdWVzdFwiO1xuaW1wb3J0IHsgY3JlYXRlT0F1dGhBcHBBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtb2F1dGgtYXBwXCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9nZXQtYXBwLWF1dGhlbnRpY2F0aW9uLmpzXG5pbXBvcnQgZ2l0aHViQXBwSnd0IGZyb20gXCJ1bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RcIjtcbmFzeW5jIGZ1bmN0aW9uIGdldEFwcEF1dGhlbnRpY2F0aW9uKHtcbiAgYXBwSWQsXG4gIHByaXZhdGVLZXksXG4gIHRpbWVEaWZmZXJlbmNlXG59KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYXV0aE9wdGlvbnMgPSB7XG4gICAgICBpZDogYXBwSWQsXG4gICAgICBwcml2YXRlS2V5XG4gICAgfTtcbiAgICBpZiAodGltZURpZmZlcmVuY2UpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYXV0aE9wdGlvbnMsIHtcbiAgICAgICAgbm93OiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxZTMpICsgdGltZURpZmZlcmVuY2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBhcHBBdXRoZW50aWNhdGlvbiA9IGF3YWl0IGdpdGh1YkFwcEp3dChhdXRoT3B0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYXBwXCIsXG4gICAgICB0b2tlbjogYXBwQXV0aGVudGljYXRpb24udG9rZW4sXG4gICAgICBhcHBJZDogYXBwQXV0aGVudGljYXRpb24uYXBwSWQsXG4gICAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKGFwcEF1dGhlbnRpY2F0aW9uLmV4cGlyYXRpb24gKiAxZTMpLnRvSVNPU3RyaW5nKClcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChwcml2YXRlS2V5ID09PSBcIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS1cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZSAncHJpdmF0ZUtleWAgb3B0aW9uIGNvbnRhaW5zIG9ubHkgdGhlIGZpcnN0IGxpbmUgJy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0nLiBJZiB5b3UgYXJlIHNldHRpbmcgaXQgdXNpbmcgYSBgLmVudmAgZmlsZSwgbWFrZSBzdXJlIGl0IGlzIHNldCBvbiBhIHNpbmdsZSBsaW5lIHdpdGggbmV3bGluZXMgcmVwbGFjZWQgYnkgJ1xcbidcIlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9jYWNoZS5qc1xuaW1wb3J0IHsgTHJ1IH0gZnJvbSBcInRvYWQtY2FjaGVcIjtcbmZ1bmN0aW9uIGdldENhY2hlKCkge1xuICByZXR1cm4gbmV3IExydShcbiAgICAvLyBjYWNoZSBtYXguIDE1MDAwIHRva2VucywgdGhhdCB3aWxsIHVzZSBsZXNzIHRoYW4gMTBtYiBtZW1vcnlcbiAgICAxNWUzLFxuICAgIC8vIENhY2hlIGZvciAxIG1pbnV0ZSBsZXNzIHRoYW4gR2l0SHViIGV4cGlyeVxuICAgIDFlMyAqIDYwICogNTlcbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldChjYWNoZSwgb3B0aW9ucykge1xuICBjb25zdCBjYWNoZUtleSA9IG9wdGlvbnNUb0NhY2hlS2V5KG9wdGlvbnMpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZS5nZXQoY2FjaGVLZXkpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBbXG4gICAgdG9rZW4sXG4gICAgY3JlYXRlZEF0LFxuICAgIGV4cGlyZXNBdCxcbiAgICByZXBvc2l0b3J5U2VsZWN0aW9uLFxuICAgIHBlcm1pc3Npb25zU3RyaW5nLFxuICAgIHNpbmdsZUZpbGVOYW1lXG4gIF0gPSByZXN1bHQuc3BsaXQoXCJ8XCIpO1xuICBjb25zdCBwZXJtaXNzaW9ucyA9IG9wdGlvbnMucGVybWlzc2lvbnMgfHwgcGVybWlzc2lvbnNTdHJpbmcuc3BsaXQoLywvKS5yZWR1Y2UoKHBlcm1pc3Npb25zMiwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKC8hJC8udGVzdChzdHJpbmcpKSB7XG4gICAgICBwZXJtaXNzaW9uczJbc3RyaW5nLnNsaWNlKDAsIC0xKV0gPSBcIndyaXRlXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlcm1pc3Npb25zMltzdHJpbmddID0gXCJyZWFkXCI7XG4gICAgfVxuICAgIHJldHVybiBwZXJtaXNzaW9uczI7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbixcbiAgICBjcmVhdGVkQXQsXG4gICAgZXhwaXJlc0F0LFxuICAgIHBlcm1pc3Npb25zLFxuICAgIHJlcG9zaXRvcnlJZHM6IG9wdGlvbnMucmVwb3NpdG9yeUlkcyxcbiAgICByZXBvc2l0b3J5TmFtZXM6IG9wdGlvbnMucmVwb3NpdG9yeU5hbWVzLFxuICAgIHNpbmdsZUZpbGVOYW1lLFxuICAgIHJlcG9zaXRvcnlTZWxlY3Rpb25cbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNldChjYWNoZSwgb3B0aW9ucywgZGF0YSkge1xuICBjb25zdCBrZXkgPSBvcHRpb25zVG9DYWNoZUtleShvcHRpb25zKTtcbiAgY29uc3QgcGVybWlzc2lvbnNTdHJpbmcgPSBvcHRpb25zLnBlcm1pc3Npb25zID8gXCJcIiA6IE9iamVjdC5rZXlzKGRhdGEucGVybWlzc2lvbnMpLm1hcChcbiAgICAobmFtZSkgPT4gYCR7bmFtZX0ke2RhdGEucGVybWlzc2lvbnNbbmFtZV0gPT09IFwid3JpdGVcIiA/IFwiIVwiIDogXCJcIn1gXG4gICkuam9pbihcIixcIik7XG4gIGNvbnN0IHZhbHVlID0gW1xuICAgIGRhdGEudG9rZW4sXG4gICAgZGF0YS5jcmVhdGVkQXQsXG4gICAgZGF0YS5leHBpcmVzQXQsXG4gICAgZGF0YS5yZXBvc2l0b3J5U2VsZWN0aW9uLFxuICAgIHBlcm1pc3Npb25zU3RyaW5nLFxuICAgIGRhdGEuc2luZ2xlRmlsZU5hbWVcbiAgXS5qb2luKFwifFwiKTtcbiAgYXdhaXQgY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gb3B0aW9uc1RvQ2FjaGVLZXkoe1xuICBpbnN0YWxsYXRpb25JZCxcbiAgcGVybWlzc2lvbnMgPSB7fSxcbiAgcmVwb3NpdG9yeUlkcyA9IFtdLFxuICByZXBvc2l0b3J5TmFtZXMgPSBbXVxufSkge1xuICBjb25zdCBwZXJtaXNzaW9uc1N0cmluZyA9IE9iamVjdC5rZXlzKHBlcm1pc3Npb25zKS5zb3J0KCkubWFwKChuYW1lKSA9PiBwZXJtaXNzaW9uc1tuYW1lXSA9PT0gXCJyZWFkXCIgPyBuYW1lIDogYCR7bmFtZX0hYCkuam9pbihcIixcIik7XG4gIGNvbnN0IHJlcG9zaXRvcnlJZHNTdHJpbmcgPSByZXBvc2l0b3J5SWRzLnNvcnQoKS5qb2luKFwiLFwiKTtcbiAgY29uc3QgcmVwb3NpdG9yeU5hbWVzU3RyaW5nID0gcmVwb3NpdG9yeU5hbWVzLmpvaW4oXCIsXCIpO1xuICByZXR1cm4gW1xuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHJlcG9zaXRvcnlJZHNTdHJpbmcsXG4gICAgcmVwb3NpdG9yeU5hbWVzU3RyaW5nLFxuICAgIHBlcm1pc3Npb25zU3RyaW5nXG4gIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCJ8XCIpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvdG8tdG9rZW4tYXV0aGVudGljYXRpb24uanNcbmZ1bmN0aW9uIHRvVG9rZW5BdXRoZW50aWNhdGlvbih7XG4gIGluc3RhbGxhdGlvbklkLFxuICB0b2tlbixcbiAgY3JlYXRlZEF0LFxuICBleHBpcmVzQXQsXG4gIHJlcG9zaXRvcnlTZWxlY3Rpb24sXG4gIHBlcm1pc3Npb25zLFxuICByZXBvc2l0b3J5SWRzLFxuICByZXBvc2l0b3J5TmFtZXMsXG4gIHNpbmdsZUZpbGVOYW1lXG59KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIHR5cGU6IFwidG9rZW5cIixcbiAgICAgIHRva2VuVHlwZTogXCJpbnN0YWxsYXRpb25cIixcbiAgICAgIHRva2VuLFxuICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICBwZXJtaXNzaW9ucyxcbiAgICAgIGNyZWF0ZWRBdCxcbiAgICAgIGV4cGlyZXNBdCxcbiAgICAgIHJlcG9zaXRvcnlTZWxlY3Rpb25cbiAgICB9LFxuICAgIHJlcG9zaXRvcnlJZHMgPyB7IHJlcG9zaXRvcnlJZHMgfSA6IG51bGwsXG4gICAgcmVwb3NpdG9yeU5hbWVzID8geyByZXBvc2l0b3J5TmFtZXMgfSA6IG51bGwsXG4gICAgc2luZ2xlRmlsZU5hbWUgPyB7IHNpbmdsZUZpbGVOYW1lIH0gOiBudWxsXG4gICk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9nZXQtaW5zdGFsbGF0aW9uLWF1dGhlbnRpY2F0aW9uLmpzXG5hc3luYyBmdW5jdGlvbiBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbihzdGF0ZSwgb3B0aW9ucywgY3VzdG9tUmVxdWVzdCkge1xuICBjb25zdCBpbnN0YWxsYXRpb25JZCA9IE51bWJlcihvcHRpb25zLmluc3RhbGxhdGlvbklkIHx8IHN0YXRlLmluc3RhbGxhdGlvbklkKTtcbiAgaWYgKCFpbnN0YWxsYXRpb25JZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiW0BvY3Rva2l0L2F1dGgtYXBwXSBpbnN0YWxsYXRpb25JZCBvcHRpb24gaXMgcmVxdWlyZWQgZm9yIGluc3RhbGxhdGlvbiBhdXRoZW50aWNhdGlvbi5cIlxuICAgICk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuZmFjdG9yeSkge1xuICAgIGNvbnN0IHsgdHlwZSwgZmFjdG9yeSwgb2F1dGhBcHAsIC4uLmZhY3RvcnlBdXRoT3B0aW9ucyB9ID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcbiAgICByZXR1cm4gZmFjdG9yeShmYWN0b3J5QXV0aE9wdGlvbnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSBjdXN0b21SZXF1ZXN0IHx8IHN0YXRlLnJlcXVlc3Q7XG4gIHJldHVybiBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbkNvbmN1cnJlbnRseShcbiAgICBzdGF0ZSxcbiAgICB7IC4uLm9wdGlvbnMsIGluc3RhbGxhdGlvbklkIH0sXG4gICAgcmVxdWVzdFxuICApO1xufVxudmFyIHBlbmRpbmdQcm9taXNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5mdW5jdGlvbiBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbkNvbmN1cnJlbnRseShzdGF0ZSwgb3B0aW9ucywgcmVxdWVzdCkge1xuICBjb25zdCBjYWNoZUtleSA9IG9wdGlvbnNUb0NhY2hlS2V5KG9wdGlvbnMpO1xuICBpZiAocGVuZGluZ1Byb21pc2VzLmhhcyhjYWNoZUtleSkpIHtcbiAgICByZXR1cm4gcGVuZGluZ1Byb21pc2VzLmdldChjYWNoZUtleSk7XG4gIH1cbiAgY29uc3QgcHJvbWlzZSA9IGdldEluc3RhbGxhdGlvbkF1dGhlbnRpY2F0aW9uSW1wbChcbiAgICBzdGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHJlcXVlc3RcbiAgKS5maW5hbGx5KCgpID0+IHBlbmRpbmdQcm9taXNlcy5kZWxldGUoY2FjaGVLZXkpKTtcbiAgcGVuZGluZ1Byb21pc2VzLnNldChjYWNoZUtleSwgcHJvbWlzZSk7XG4gIHJldHVybiBwcm9taXNlO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0SW5zdGFsbGF0aW9uQXV0aGVudGljYXRpb25JbXBsKHN0YXRlLCBvcHRpb25zLCByZXF1ZXN0KSB7XG4gIGlmICghb3B0aW9ucy5yZWZyZXNoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0KHN0YXRlLmNhY2hlLCBvcHRpb25zKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHRva2VuOiB0b2tlbjIsXG4gICAgICAgIGNyZWF0ZWRBdDogY3JlYXRlZEF0MixcbiAgICAgICAgZXhwaXJlc0F0OiBleHBpcmVzQXQyLFxuICAgICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnMyLFxuICAgICAgICByZXBvc2l0b3J5SWRzOiByZXBvc2l0b3J5SWRzMixcbiAgICAgICAgcmVwb3NpdG9yeU5hbWVzOiByZXBvc2l0b3J5TmFtZXMyLFxuICAgICAgICBzaW5nbGVGaWxlTmFtZTogc2luZ2xlRmlsZU5hbWUyLFxuICAgICAgICByZXBvc2l0b3J5U2VsZWN0aW9uOiByZXBvc2l0b3J5U2VsZWN0aW9uMlxuICAgICAgfSA9IHJlc3VsdDtcbiAgICAgIHJldHVybiB0b1Rva2VuQXV0aGVudGljYXRpb24oe1xuICAgICAgICBpbnN0YWxsYXRpb25JZDogb3B0aW9ucy5pbnN0YWxsYXRpb25JZCxcbiAgICAgICAgdG9rZW46IHRva2VuMixcbiAgICAgICAgY3JlYXRlZEF0OiBjcmVhdGVkQXQyLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdDIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9uczIsXG4gICAgICAgIHJlcG9zaXRvcnlTZWxlY3Rpb246IHJlcG9zaXRvcnlTZWxlY3Rpb24yLFxuICAgICAgICByZXBvc2l0b3J5SWRzOiByZXBvc2l0b3J5SWRzMixcbiAgICAgICAgcmVwb3NpdG9yeU5hbWVzOiByZXBvc2l0b3J5TmFtZXMyLFxuICAgICAgICBzaW5nbGVGaWxlTmFtZTogc2luZ2xlRmlsZU5hbWUyXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgYXBwQXV0aGVudGljYXRpb24gPSBhd2FpdCBnZXRBcHBBdXRoZW50aWNhdGlvbihzdGF0ZSk7XG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgaW5zdGFsbGF0aW9uX2lkOiBvcHRpb25zLmluc3RhbGxhdGlvbklkLFxuICAgIG1lZGlhVHlwZToge1xuICAgICAgcHJldmlld3M6IFtcIm1hY2hpbmUtbWFuXCJdXG4gICAgfSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBhdXRob3JpemF0aW9uOiBgYmVhcmVyICR7YXBwQXV0aGVudGljYXRpb24udG9rZW59YFxuICAgIH1cbiAgfTtcbiAgaWYgKG9wdGlvbnMucmVwb3NpdG9yeUlkcykge1xuICAgIE9iamVjdC5hc3NpZ24ocGF5bG9hZCwgeyByZXBvc2l0b3J5X2lkczogb3B0aW9ucy5yZXBvc2l0b3J5SWRzIH0pO1xuICB9XG4gIGlmIChvcHRpb25zLnJlcG9zaXRvcnlOYW1lcykge1xuICAgIE9iamVjdC5hc3NpZ24ocGF5bG9hZCwge1xuICAgICAgcmVwb3NpdG9yaWVzOiBvcHRpb25zLnJlcG9zaXRvcnlOYW1lc1xuICAgIH0pO1xuICB9XG4gIGlmIChvcHRpb25zLnBlcm1pc3Npb25zKSB7XG4gICAgT2JqZWN0LmFzc2lnbihwYXlsb2FkLCB7IHBlcm1pc3Npb25zOiBvcHRpb25zLnBlcm1pc3Npb25zIH0pO1xuICB9XG4gIGNvbnN0IHtcbiAgICBkYXRhOiB7XG4gICAgICB0b2tlbixcbiAgICAgIGV4cGlyZXNfYXQ6IGV4cGlyZXNBdCxcbiAgICAgIHJlcG9zaXRvcmllcyxcbiAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9uc09wdGlvbmFsLFxuICAgICAgcmVwb3NpdG9yeV9zZWxlY3Rpb246IHJlcG9zaXRvcnlTZWxlY3Rpb25PcHRpb25hbCxcbiAgICAgIHNpbmdsZV9maWxlOiBzaW5nbGVGaWxlTmFtZVxuICAgIH1cbiAgfSA9IGF3YWl0IHJlcXVlc3QoXG4gICAgXCJQT1NUIC9hcHAvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9hY2Nlc3NfdG9rZW5zXCIsXG4gICAgcGF5bG9hZFxuICApO1xuICBjb25zdCBwZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zT3B0aW9uYWwgfHwge307XG4gIGNvbnN0IHJlcG9zaXRvcnlTZWxlY3Rpb24gPSByZXBvc2l0b3J5U2VsZWN0aW9uT3B0aW9uYWwgfHwgXCJhbGxcIjtcbiAgY29uc3QgcmVwb3NpdG9yeUlkcyA9IHJlcG9zaXRvcmllcyA/IHJlcG9zaXRvcmllcy5tYXAoKHIpID0+IHIuaWQpIDogdm9pZCAwO1xuICBjb25zdCByZXBvc2l0b3J5TmFtZXMgPSByZXBvc2l0b3JpZXMgPyByZXBvc2l0b3JpZXMubWFwKChyZXBvKSA9PiByZXBvLm5hbWUpIDogdm9pZCAwO1xuICBjb25zdCBjcmVhdGVkQXQgPSAoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IGNhY2hlT3B0aW9ucyA9IHtcbiAgICB0b2tlbixcbiAgICBjcmVhdGVkQXQsXG4gICAgZXhwaXJlc0F0LFxuICAgIHJlcG9zaXRvcnlTZWxlY3Rpb24sXG4gICAgcGVybWlzc2lvbnMsXG4gICAgcmVwb3NpdG9yeUlkcyxcbiAgICByZXBvc2l0b3J5TmFtZXNcbiAgfTtcbiAgaWYgKHNpbmdsZUZpbGVOYW1lKSB7XG4gICAgT2JqZWN0LmFzc2lnbihwYXlsb2FkLCB7IHNpbmdsZUZpbGVOYW1lIH0pO1xuICB9XG4gIGF3YWl0IHNldChzdGF0ZS5jYWNoZSwgb3B0aW9ucywgY2FjaGVPcHRpb25zKTtcbiAgY29uc3QgY2FjaGVEYXRhID0ge1xuICAgIGluc3RhbGxhdGlvbklkOiBvcHRpb25zLmluc3RhbGxhdGlvbklkLFxuICAgIHRva2VuLFxuICAgIGNyZWF0ZWRBdCxcbiAgICBleHBpcmVzQXQsXG4gICAgcmVwb3NpdG9yeVNlbGVjdGlvbixcbiAgICBwZXJtaXNzaW9ucyxcbiAgICByZXBvc2l0b3J5SWRzLFxuICAgIHJlcG9zaXRvcnlOYW1lc1xuICB9O1xuICBpZiAoc2luZ2xlRmlsZU5hbWUpIHtcbiAgICBPYmplY3QuYXNzaWduKGNhY2hlRGF0YSwgeyBzaW5nbGVGaWxlTmFtZSB9KTtcbiAgfVxuICByZXR1cm4gdG9Ub2tlbkF1dGhlbnRpY2F0aW9uKGNhY2hlRGF0YSk7XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9hdXRoLmpzXG5hc3luYyBmdW5jdGlvbiBhdXRoKHN0YXRlLCBhdXRoT3B0aW9ucykge1xuICBzd2l0Y2ggKGF1dGhPcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlIFwiYXBwXCI6XG4gICAgICByZXR1cm4gZ2V0QXBwQXV0aGVudGljYXRpb24oc3RhdGUpO1xuICAgIGNhc2UgXCJvYXV0aC1hcHBcIjpcbiAgICAgIHJldHVybiBzdGF0ZS5vYXV0aEFwcCh7IHR5cGU6IFwib2F1dGgtYXBwXCIgfSk7XG4gICAgY2FzZSBcImluc3RhbGxhdGlvblwiOlxuICAgICAgYXV0aE9wdGlvbnM7XG4gICAgICByZXR1cm4gZ2V0SW5zdGFsbGF0aW9uQXV0aGVudGljYXRpb24oc3RhdGUsIHtcbiAgICAgICAgLi4uYXV0aE9wdGlvbnMsXG4gICAgICAgIHR5cGU6IFwiaW5zdGFsbGF0aW9uXCJcbiAgICAgIH0pO1xuICAgIGNhc2UgXCJvYXV0aC11c2VyXCI6XG4gICAgICByZXR1cm4gc3RhdGUub2F1dGhBcHAoYXV0aE9wdGlvbnMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXV0aCB0eXBlOiAke2F1dGhPcHRpb25zLnR5cGV9YCk7XG4gIH1cbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2hvb2suanNcbmltcG9ydCB7IHJlcXVpcmVzQmFzaWNBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtb2F1dGgtdXNlclwiO1xuaW1wb3J0IHsgUmVxdWVzdEVycm9yIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3QtZXJyb3JcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL3JlcXVpcmVzLWFwcC1hdXRoLmpzXG52YXIgUEFUSFMgPSBbXG4gIFwiL2FwcFwiLFxuICBcIi9hcHAvaG9vay9jb25maWdcIixcbiAgXCIvYXBwL2hvb2svZGVsaXZlcmllc1wiLFxuICBcIi9hcHAvaG9vay9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH1cIixcbiAgXCIvYXBwL2hvb2svZGVsaXZlcmllcy97ZGVsaXZlcnlfaWR9L2F0dGVtcHRzXCIsXG4gIFwiL2FwcC9pbnN0YWxsYXRpb25zXCIsXG4gIFwiL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9XCIsXG4gIFwiL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L2FjY2Vzc190b2tlbnNcIixcbiAgXCIvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vc3VzcGVuZGVkXCIsXG4gIFwiL2FwcC9pbnN0YWxsYXRpb24tcmVxdWVzdHNcIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9hY2NvdW50cy97YWNjb3VudF9pZH1cIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFuXCIsXG4gIFwiL21hcmtldHBsYWNlX2xpc3RpbmcvcGxhbnNcIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9wbGFucy97cGxhbl9pZH0vYWNjb3VudHNcIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9zdHViYmVkL2FjY291bnRzL3thY2NvdW50X2lkfVwiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhblwiLFxuICBcIi9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhbnNcIixcbiAgXCIvbWFya2V0cGxhY2VfbGlzdGluZy9zdHViYmVkL3BsYW5zL3twbGFuX2lkfS9hY2NvdW50c1wiLFxuICBcIi9vcmdzL3tvcmd9L2luc3RhbGxhdGlvblwiLFxuICBcIi9yZXBvcy97b3duZXJ9L3tyZXBvfS9pbnN0YWxsYXRpb25cIixcbiAgXCIvdXNlcnMve3VzZXJuYW1lfS9pbnN0YWxsYXRpb25cIlxuXTtcbmZ1bmN0aW9uIHJvdXRlTWF0Y2hlcihwYXRocykge1xuICBjb25zdCByZWdleGVzID0gcGF0aHMubWFwKFxuICAgIChwKSA9PiBwLnNwbGl0KFwiL1wiKS5tYXAoKGMpID0+IGMuc3RhcnRzV2l0aChcIntcIikgPyBcIig/Oi4rPylcIiA6IGMpLmpvaW4oXCIvXCIpXG4gICk7XG4gIGNvbnN0IHJlZ2V4ID0gYF4oPzoke3JlZ2V4ZXMubWFwKChyKSA9PiBgKD86JHtyfSlgKS5qb2luKFwifFwiKX0pJGA7XG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4LCBcImlcIik7XG59XG52YXIgUkVHRVggPSByb3V0ZU1hdGNoZXIoUEFUSFMpO1xuZnVuY3Rpb24gcmVxdWlyZXNBcHBBdXRoKHVybCkge1xuICByZXR1cm4gISF1cmwgJiYgUkVHRVgudGVzdCh1cmwuc3BsaXQoXCI/XCIpWzBdKTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2hvb2suanNcbnZhciBGSVZFX1NFQ09ORFNfSU5fTVMgPSA1ICogMWUzO1xuZnVuY3Rpb24gaXNOb3RUaW1lU2tld0Vycm9yKGVycm9yKSB7XG4gIHJldHVybiAhKGVycm9yLm1lc3NhZ2UubWF0Y2goXG4gICAgLydFeHBpcmF0aW9uIHRpbWUnIGNsYWltIFxcKCdleHAnXFwpIG11c3QgYmUgYSBudW1lcmljIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZnV0dXJlIHRpbWUgYXQgd2hpY2ggdGhlIGFzc2VydGlvbiBleHBpcmVzL1xuICApIHx8IGVycm9yLm1lc3NhZ2UubWF0Y2goXG4gICAgLydJc3N1ZWQgYXQnIGNsYWltIFxcKCdpYXQnXFwpIG11c3QgYmUgYW4gSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHRpbWUgdGhhdCB0aGUgYXNzZXJ0aW9uIHdhcyBpc3N1ZWQvXG4gICkpO1xufVxuYXN5bmMgZnVuY3Rpb24gaG9vayhzdGF0ZSwgcmVxdWVzdCwgcm91dGUsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgZW5kcG9pbnQgPSByZXF1ZXN0LmVuZHBvaW50Lm1lcmdlKHJvdXRlLCBwYXJhbWV0ZXJzKTtcbiAgY29uc3QgdXJsID0gZW5kcG9pbnQudXJsO1xuICBpZiAoL1xcL2xvZ2luXFwvb2F1dGhcXC9hY2Nlc3NfdG9rZW4kLy50ZXN0KHVybCkpIHtcbiAgICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG4gIH1cbiAgaWYgKHJlcXVpcmVzQXBwQXV0aCh1cmwucmVwbGFjZShyZXF1ZXN0LmVuZHBvaW50LkRFRkFVTFRTLmJhc2VVcmwsIFwiXCIpKSkge1xuICAgIGNvbnN0IHsgdG9rZW46IHRva2VuMiB9ID0gYXdhaXQgZ2V0QXBwQXV0aGVudGljYXRpb24oc3RhdGUpO1xuICAgIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IGBiZWFyZXIgJHt0b2tlbjJ9YDtcbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdChlbmRwb2ludCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc05vdFRpbWVTa2V3RXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBlcnJvci5yZXNwb25zZS5oZWFkZXJzLmRhdGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjb25zdCBkaWZmID0gTWF0aC5mbG9vcihcbiAgICAgICAgKERhdGUucGFyc2UoZXJyb3IucmVzcG9uc2UuaGVhZGVycy5kYXRlKSAtIERhdGUucGFyc2UoKC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKS50b1N0cmluZygpKSkgLyAxZTNcbiAgICAgICk7XG4gICAgICBzdGF0ZS5sb2cud2FybihlcnJvci5tZXNzYWdlKTtcbiAgICAgIHN0YXRlLmxvZy53YXJuKFxuICAgICAgICBgW0BvY3Rva2l0L2F1dGgtYXBwXSBHaXRIdWIgQVBJIHRpbWUgYW5kIHN5c3RlbSB0aW1lIGFyZSBkaWZmZXJlbnQgYnkgJHtkaWZmfSBzZWNvbmRzLiBSZXRyeWluZyByZXF1ZXN0IHdpdGggdGhlIGRpZmZlcmVuY2UgYWNjb3VudGVkIGZvci5gXG4gICAgICApO1xuICAgICAgY29uc3QgeyB0b2tlbjogdG9rZW4zIH0gPSBhd2FpdCBnZXRBcHBBdXRoZW50aWNhdGlvbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB0aW1lRGlmZmVyZW5jZTogZGlmZlxuICAgICAgfSk7XG4gICAgICBlbmRwb2ludC5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBgYmVhcmVyICR7dG9rZW4zfWA7XG4gICAgICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuICBpZiAocmVxdWlyZXNCYXNpY0F1dGgodXJsKSkge1xuICAgIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gYXdhaXQgc3RhdGUub2F1dGhBcHAoeyB0eXBlOiBcIm9hdXRoLWFwcFwiIH0pO1xuICAgIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IGF1dGhlbnRpY2F0aW9uLmhlYWRlcnMuYXV0aG9yaXphdGlvbjtcbiAgICByZXR1cm4gcmVxdWVzdChlbmRwb2ludCk7XG4gIH1cbiAgY29uc3QgeyB0b2tlbiwgY3JlYXRlZEF0IH0gPSBhd2FpdCBnZXRJbnN0YWxsYXRpb25BdXRoZW50aWNhdGlvbihcbiAgICBzdGF0ZSxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRCRFxuICAgIHt9LFxuICAgIHJlcXVlc3QuZGVmYXVsdHMoeyBiYXNlVXJsOiBlbmRwb2ludC5iYXNlVXJsIH0pXG4gICk7XG4gIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IGB0b2tlbiAke3Rva2VufWA7XG4gIHJldHVybiBzZW5kUmVxdWVzdFdpdGhSZXRyaWVzKFxuICAgIHN0YXRlLFxuICAgIHJlcXVlc3QsXG4gICAgZW5kcG9pbnQsXG4gICAgY3JlYXRlZEF0XG4gICk7XG59XG5hc3luYyBmdW5jdGlvbiBzZW5kUmVxdWVzdFdpdGhSZXRyaWVzKHN0YXRlLCByZXF1ZXN0LCBvcHRpb25zLCBjcmVhdGVkQXQsIHJldHJpZXMgPSAwKSB7XG4gIGNvbnN0IHRpbWVTaW5jZVRva2VuQ3JlYXRpb25Jbk1zID0gKy8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpIC0gK25ldyBEYXRlKGNyZWF0ZWRBdCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlcXVlc3Qob3B0aW9ucyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHRpbWVTaW5jZVRva2VuQ3JlYXRpb25Jbk1zID49IEZJVkVfU0VDT05EU19JTl9NUykge1xuICAgICAgaWYgKHJldHJpZXMgPiAwKSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgQWZ0ZXIgJHtyZXRyaWVzfSByZXRyaWVzIHdpdGhpbiAke3RpbWVTaW5jZVRva2VuQ3JlYXRpb25Jbk1zIC8gMWUzfXMgb2YgY3JlYXRpbmcgdGhlIGluc3RhbGxhdGlvbiBhY2Nlc3MgdG9rZW4sIHRoZSByZXNwb25zZSByZW1haW5zIDQwMS4gQXQgdGhpcyBwb2ludCwgdGhlIGNhdXNlIG1heSBiZSBhbiBhdXRoZW50aWNhdGlvbiBwcm9ibGVtIG9yIGEgc3lzdGVtIG91dGFnZS4gUGxlYXNlIGNoZWNrIGh0dHBzOi8vd3d3LmdpdGh1YnN0YXR1cy5jb20gZm9yIHN0YXR1cyBpbmZvcm1hdGlvbmA7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgKytyZXRyaWVzO1xuICAgIGNvbnN0IGF3YWl0VGltZSA9IHJldHJpZXMgKiAxZTM7XG4gICAgc3RhdGUubG9nLndhcm4oXG4gICAgICBgW0BvY3Rva2l0L2F1dGgtYXBwXSBSZXRyeWluZyBhZnRlciA0MDEgcmVzcG9uc2UgdG8gYWNjb3VudCBmb3IgdG9rZW4gcmVwbGljYXRpb24gZGVsYXkgKHJldHJ5OiAke3JldHJpZXN9LCB3YWl0OiAke2F3YWl0VGltZSAvIDFlM31zKWBcbiAgICApO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGF3YWl0VGltZSkpO1xuICAgIHJldHVybiBzZW5kUmVxdWVzdFdpdGhSZXRyaWVzKHN0YXRlLCByZXF1ZXN0LCBvcHRpb25zLCBjcmVhdGVkQXQsIHJldHJpZXMpO1xuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy92ZXJzaW9uLmpzXG52YXIgVkVSU0lPTiA9IFwiNy4yLjJcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyBjcmVhdGVPQXV0aFVzZXJBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtb2F1dGgtdXNlclwiO1xuZnVuY3Rpb24gY3JlYXRlQXBwQXV0aChvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5hcHBJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltAb2N0b2tpdC9hdXRoLWFwcF0gYXBwSWQgb3B0aW9uIGlzIHJlcXVpcmVkXCIpO1xuICB9XG4gIGlmICghb3B0aW9ucy5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW0BvY3Rva2l0L2F1dGgtYXBwXSBwcml2YXRlS2V5IG9wdGlvbiBpcyByZXF1aXJlZFwiKTtcbiAgfVxuICBpZiAoXCJpbnN0YWxsYXRpb25JZFwiIGluIG9wdGlvbnMgJiYgIW9wdGlvbnMuaW5zdGFsbGF0aW9uSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIltAb2N0b2tpdC9hdXRoLWFwcF0gaW5zdGFsbGF0aW9uSWQgaXMgc2V0IHRvIGEgZmFsc3kgdmFsdWVcIlxuICAgICk7XG4gIH1cbiAgY29uc3QgbG9nID0gb3B0aW9ucy5sb2cgfHwge307XG4gIGlmICh0eXBlb2YgbG9nLndhcm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxvZy53YXJuID0gY29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7XG4gIH1cbiAgY29uc3QgcmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdCB8fCBkZWZhdWx0UmVxdWVzdC5kZWZhdWx0cyh7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LWF1dGgtYXBwLmpzLyR7VkVSU0lPTn0gJHtnZXRVc2VyQWdlbnQoKX1gXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBjYWNoZTogZ2V0Q2FjaGUoKVxuICAgIH0sXG4gICAgb3B0aW9ucyxcbiAgICBvcHRpb25zLmluc3RhbGxhdGlvbklkID8geyBpbnN0YWxsYXRpb25JZDogTnVtYmVyKG9wdGlvbnMuaW5zdGFsbGF0aW9uSWQpIH0gOiB7fSxcbiAgICB7XG4gICAgICBsb2csXG4gICAgICBvYXV0aEFwcDogY3JlYXRlT0F1dGhBcHBBdXRoKHtcbiAgICAgICAgY2xpZW50VHlwZTogXCJnaXRodWItYXBwXCIsXG4gICAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkIHx8IFwiXCIsXG4gICAgICAgIGNsaWVudFNlY3JldDogb3B0aW9ucy5jbGllbnRTZWNyZXQgfHwgXCJcIixcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSlcbiAgICB9XG4gICk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKGF1dGguYmluZChudWxsLCBzdGF0ZSksIHtcbiAgICBob29rOiBob29rLmJpbmQobnVsbCwgc3RhdGUpXG4gIH0pO1xufVxuZXhwb3J0IHtcbiAgY3JlYXRlQXBwQXV0aCxcbiAgY3JlYXRlT0F1dGhVc2VyQXV0aFxufTtcbiIsICIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKHN0YXRlLCBuYW1lLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm1ldGhvZCBmb3IgYmVmb3JlIGhvb2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobmFtZSkpIHtcbiAgICByZXR1cm4gbmFtZS5yZXZlcnNlKCkucmVkdWNlKChjYWxsYmFjaywgbmFtZSkgPT4ge1xuICAgICAgcmV0dXJuIHJlZ2lzdGVyLmJpbmQobnVsbCwgc3RhdGUsIG5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICB9LCBtZXRob2QpKCk7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgaWYgKCFzdGF0ZS5yZWdpc3RyeVtuYW1lXSkge1xuICAgICAgcmV0dXJuIG1ldGhvZChvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGUucmVnaXN0cnlbbmFtZV0ucmVkdWNlKChtZXRob2QsIHJlZ2lzdGVyZWQpID0+IHtcbiAgICAgIHJldHVybiByZWdpc3RlcmVkLmhvb2suYmluZChudWxsLCBtZXRob2QsIG9wdGlvbnMpO1xuICAgIH0sIG1ldGhvZCkoKTtcbiAgfSk7XG59XG4iLCAiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRIb29rKHN0YXRlLCBraW5kLCBuYW1lLCBob29rKSB7XG4gIGNvbnN0IG9yaWcgPSBob29rO1xuICBpZiAoIXN0YXRlLnJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgc3RhdGUucmVnaXN0cnlbbmFtZV0gPSBbXTtcbiAgfVxuXG4gIGlmIChraW5kID09PSBcImJlZm9yZVwiKSB7XG4gICAgaG9vayA9IChtZXRob2QsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihvcmlnLmJpbmQobnVsbCwgb3B0aW9ucykpXG4gICAgICAgIC50aGVuKG1ldGhvZC5iaW5kKG51bGwsIG9wdGlvbnMpKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKGtpbmQgPT09IFwiYWZ0ZXJcIikge1xuICAgIGhvb2sgPSAobWV0aG9kLCBvcHRpb25zKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKG1ldGhvZC5iaW5kKG51bGwsIG9wdGlvbnMpKVxuICAgICAgICAudGhlbigocmVzdWx0XykgPT4ge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdF87XG4gICAgICAgICAgcmV0dXJuIG9yaWcocmVzdWx0LCBvcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBpZiAoa2luZCA9PT0gXCJlcnJvclwiKSB7XG4gICAgaG9vayA9IChtZXRob2QsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihtZXRob2QuYmluZChudWxsLCBvcHRpb25zKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiBvcmlnKGVycm9yLCBvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRlLnJlZ2lzdHJ5W25hbWVdLnB1c2goe1xuICAgIGhvb2s6IGhvb2ssXG4gICAgb3JpZzogb3JpZyxcbiAgfSk7XG59XG4iLCAiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVIb29rKHN0YXRlLCBuYW1lLCBtZXRob2QpIHtcbiAgaWYgKCFzdGF0ZS5yZWdpc3RyeVtuYW1lXSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gc3RhdGUucmVnaXN0cnlbbmFtZV1cbiAgICAubWFwKChyZWdpc3RlcmVkKSA9PiB7XG4gICAgICByZXR1cm4gcmVnaXN0ZXJlZC5vcmlnO1xuICAgIH0pXG4gICAgLmluZGV4T2YobWV0aG9kKTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUucmVnaXN0cnlbbmFtZV0uc3BsaWNlKGluZGV4LCAxKTtcbn1cbiIsICIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwiLi9saWIvcmVnaXN0ZXIuanNcIjtcbmltcG9ydCB7IGFkZEhvb2sgfSBmcm9tIFwiLi9saWIvYWRkLmpzXCI7XG5pbXBvcnQgeyByZW1vdmVIb29rIH0gZnJvbSBcIi4vbGliL3JlbW92ZS5qc1wiO1xuXG4vLyBiaW5kIHdpdGggYXJyYXkgb2YgYXJndW1lbnRzOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjE3OTI5MTNcbmNvbnN0IGJpbmQgPSBGdW5jdGlvbi5iaW5kO1xuY29uc3QgYmluZGFibGUgPSBiaW5kLmJpbmQoYmluZCk7XG5cbmZ1bmN0aW9uIGJpbmRBcGkoaG9vaywgc3RhdGUsIG5hbWUpIHtcbiAgY29uc3QgcmVtb3ZlSG9va1JlZiA9IGJpbmRhYmxlKHJlbW92ZUhvb2ssIG51bGwpLmFwcGx5KFxuICAgIG51bGwsXG4gICAgbmFtZSA/IFtzdGF0ZSwgbmFtZV0gOiBbc3RhdGVdXG4gICk7XG4gIGhvb2suYXBpID0geyByZW1vdmU6IHJlbW92ZUhvb2tSZWYgfTtcbiAgaG9vay5yZW1vdmUgPSByZW1vdmVIb29rUmVmO1xuICBbXCJiZWZvcmVcIiwgXCJlcnJvclwiLCBcImFmdGVyXCIsIFwid3JhcFwiXS5mb3JFYWNoKChraW5kKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IG5hbWUgPyBbc3RhdGUsIGtpbmQsIG5hbWVdIDogW3N0YXRlLCBraW5kXTtcbiAgICBob29rW2tpbmRdID0gaG9vay5hcGlba2luZF0gPSBiaW5kYWJsZShhZGRIb29rLCBudWxsKS5hcHBseShudWxsLCBhcmdzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFNpbmd1bGFyKCkge1xuICBjb25zdCBzaW5ndWxhckhvb2tOYW1lID0gU3ltYm9sKFwiU2luZ3VsYXJcIik7XG4gIGNvbnN0IHNpbmd1bGFySG9va1N0YXRlID0ge1xuICAgIHJlZ2lzdHJ5OiB7fSxcbiAgfTtcbiAgY29uc3Qgc2luZ3VsYXJIb29rID0gcmVnaXN0ZXIuYmluZChudWxsLCBzaW5ndWxhckhvb2tTdGF0ZSwgc2luZ3VsYXJIb29rTmFtZSk7XG4gIGJpbmRBcGkoc2luZ3VsYXJIb29rLCBzaW5ndWxhckhvb2tTdGF0ZSwgc2luZ3VsYXJIb29rTmFtZSk7XG4gIHJldHVybiBzaW5ndWxhckhvb2s7XG59XG5cbmZ1bmN0aW9uIENvbGxlY3Rpb24oKSB7XG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHJlZ2lzdHJ5OiB7fSxcbiAgfTtcblxuICBjb25zdCBob29rID0gcmVnaXN0ZXIuYmluZChudWxsLCBzdGF0ZSk7XG4gIGJpbmRBcGkoaG9vaywgc3RhdGUpO1xuXG4gIHJldHVybiBob29rO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IFNpbmd1bGFyLCBDb2xsZWN0aW9uIH07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gXCJ1bml2ZXJzYWwtdXNlci1hZ2VudFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvdmVyc2lvbi5qc1xudmFyIFZFUlNJT04gPSBcIjAuMC4wLWRldmVsb3BtZW50XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy93aXRoLWRlZmF1bHRzLmpzXG5pbXBvcnQgeyByZXF1ZXN0IGFzIFJlcXVlc3QyIH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dyYXBocWwuanNcbmltcG9ydCB7IHJlcXVlc3QgYXMgUmVxdWVzdCB9IGZyb20gXCJAb2N0b2tpdC9yZXF1ZXN0XCI7XG5cbi8vIHBrZy9kaXN0LXNyYy9lcnJvci5qc1xuZnVuY3Rpb24gX2J1aWxkTWVzc2FnZUZvclJlc3BvbnNlRXJyb3JzKGRhdGEpIHtcbiAgcmV0dXJuIGBSZXF1ZXN0IGZhaWxlZCBkdWUgdG8gZm9sbG93aW5nIHJlc3BvbnNlIGVycm9yczpcbmAgKyBkYXRhLmVycm9ycy5tYXAoKGUpID0+IGAgLSAke2UubWVzc2FnZX1gKS5qb2luKFwiXFxuXCIpO1xufVxudmFyIEdyYXBocWxSZXNwb25zZUVycm9yID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlcXVlc3QyLCBoZWFkZXJzLCByZXNwb25zZSkge1xuICAgIHN1cGVyKF9idWlsZE1lc3NhZ2VGb3JSZXNwb25zZUVycm9ycyhyZXNwb25zZSkpO1xuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3QyO1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzO1xuICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9XG4gIH1cbiAgbmFtZSA9IFwiR3JhcGhxbFJlc3BvbnNlRXJyb3JcIjtcbiAgZXJyb3JzO1xuICBkYXRhO1xufTtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dyYXBocWwuanNcbnZhciBOT05fVkFSSUFCTEVfT1BUSU9OUyA9IFtcbiAgXCJtZXRob2RcIixcbiAgXCJiYXNlVXJsXCIsXG4gIFwidXJsXCIsXG4gIFwiaGVhZGVyc1wiLFxuICBcInJlcXVlc3RcIixcbiAgXCJxdWVyeVwiLFxuICBcIm1lZGlhVHlwZVwiLFxuICBcIm9wZXJhdGlvbk5hbWVcIlxuXTtcbnZhciBGT1JCSURERU5fVkFSSUFCTEVfT1BUSU9OUyA9IFtcInF1ZXJ5XCIsIFwibWV0aG9kXCIsIFwidXJsXCJdO1xudmFyIEdIRVNfVjNfU1VGRklYX1JFR0VYID0gL1xcL2FwaVxcL3YzXFwvPyQvO1xuZnVuY3Rpb24gZ3JhcGhxbChyZXF1ZXN0MiwgcXVlcnksIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiICYmIFwicXVlcnlcIiBpbiBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihgW0BvY3Rva2l0L2dyYXBocWxdIFwicXVlcnlcIiBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZSBuYW1lYClcbiAgICAgICk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgIGlmICghRk9SQklEREVOX1ZBUklBQkxFX09QVElPTlMuaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgW0BvY3Rva2l0L2dyYXBocWxdIFwiJHtrZXl9XCIgY2Fubm90IGJlIHVzZWQgYXMgdmFyaWFibGUgbmFtZWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyc2VkT3B0aW9ucyA9IHR5cGVvZiBxdWVyeSA9PT0gXCJzdHJpbmdcIiA/IE9iamVjdC5hc3NpZ24oeyBxdWVyeSB9LCBvcHRpb25zKSA6IHF1ZXJ5O1xuICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IE9iamVjdC5rZXlzKFxuICAgIHBhcnNlZE9wdGlvbnNcbiAgKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgaWYgKE5PTl9WQVJJQUJMRV9PUFRJT05TLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gcGFyc2VkT3B0aW9uc1trZXldO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKCFyZXN1bHQudmFyaWFibGVzKSB7XG4gICAgICByZXN1bHQudmFyaWFibGVzID0ge307XG4gICAgfVxuICAgIHJlc3VsdC52YXJpYWJsZXNba2V5XSA9IHBhcnNlZE9wdGlvbnNba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG4gIGNvbnN0IGJhc2VVcmwgPSBwYXJzZWRPcHRpb25zLmJhc2VVcmwgfHwgcmVxdWVzdDIuZW5kcG9pbnQuREVGQVVMVFMuYmFzZVVybDtcbiAgaWYgKEdIRVNfVjNfU1VGRklYX1JFR0VYLnRlc3QoYmFzZVVybCkpIHtcbiAgICByZXF1ZXN0T3B0aW9ucy51cmwgPSBiYXNlVXJsLnJlcGxhY2UoR0hFU19WM19TVUZGSVhfUkVHRVgsIFwiL2FwaS9ncmFwaHFsXCIpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0MihyZXF1ZXN0T3B0aW9ucykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICBpZiAocmVzcG9uc2UuZGF0YS5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgIGhlYWRlcnNba2V5XSA9IHJlc3BvbnNlLmhlYWRlcnNba2V5XTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBHcmFwaHFsUmVzcG9uc2VFcnJvcihcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHJlc3BvbnNlLmRhdGFcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvd2l0aC1kZWZhdWx0cy5qc1xuZnVuY3Rpb24gd2l0aERlZmF1bHRzKHJlcXVlc3QyLCBuZXdEZWZhdWx0cykge1xuICBjb25zdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDIuZGVmYXVsdHMobmV3RGVmYXVsdHMpO1xuICBjb25zdCBuZXdBcGkgPSAocXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gZ3JhcGhxbChuZXdSZXF1ZXN0LCBxdWVyeSwgb3B0aW9ucyk7XG4gIH07XG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ld0FwaSwge1xuICAgIGRlZmF1bHRzOiB3aXRoRGVmYXVsdHMuYmluZChudWxsLCBuZXdSZXF1ZXN0KSxcbiAgICBlbmRwb2ludDogbmV3UmVxdWVzdC5lbmRwb2ludFxuICB9KTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2luZGV4LmpzXG52YXIgZ3JhcGhxbDIgPSB3aXRoRGVmYXVsdHMocmVxdWVzdCwge1xuICBoZWFkZXJzOiB7XG4gICAgXCJ1c2VyLWFnZW50XCI6IGBvY3Rva2l0LWdyYXBocWwuanMvJHtWRVJTSU9OfSAke2dldFVzZXJBZ2VudCgpfWBcbiAgfSxcbiAgbWV0aG9kOiBcIlBPU1RcIixcbiAgdXJsOiBcIi9ncmFwaHFsXCJcbn0pO1xuZnVuY3Rpb24gd2l0aEN1c3RvbVJlcXVlc3QoY3VzdG9tUmVxdWVzdCkge1xuICByZXR1cm4gd2l0aERlZmF1bHRzKGN1c3RvbVJlcXVlc3QsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIHVybDogXCIvZ3JhcGhxbFwiXG4gIH0pO1xufVxuZXhwb3J0IHtcbiAgR3JhcGhxbFJlc3BvbnNlRXJyb3IsXG4gIGdyYXBocWwyIGFzIGdyYXBocWwsXG4gIHdpdGhDdXN0b21SZXF1ZXN0XG59O1xuIiwgIi8vIHBrZy9kaXN0LXNyYy9pcy1qd3QuanNcbnZhciBiNjR1cmwgPSBcIig/OlthLXpBLVowLTlfLV0rKVwiO1xudmFyIHNlcCA9IFwiXFxcXC5cIjtcbnZhciBqd3RSRSA9IG5ldyBSZWdFeHAoYF4ke2I2NHVybH0ke3NlcH0ke2I2NHVybH0ke3NlcH0ke2I2NHVybH0kYCk7XG52YXIgaXNKV1QgPSBqd3RSRS50ZXN0LmJpbmQoand0UkUpO1xuXG4vLyBwa2cvZGlzdC1zcmMvYXV0aC5qc1xuYXN5bmMgZnVuY3Rpb24gYXV0aCh0b2tlbikge1xuICBjb25zdCBpc0FwcCA9IGlzSldUKHRva2VuKTtcbiAgY29uc3QgaXNJbnN0YWxsYXRpb24gPSB0b2tlbi5zdGFydHNXaXRoKFwidjEuXCIpIHx8IHRva2VuLnN0YXJ0c1dpdGgoXCJnaHNfXCIpO1xuICBjb25zdCBpc1VzZXJUb1NlcnZlciA9IHRva2VuLnN0YXJ0c1dpdGgoXCJnaHVfXCIpO1xuICBjb25zdCB0b2tlblR5cGUgPSBpc0FwcCA/IFwiYXBwXCIgOiBpc0luc3RhbGxhdGlvbiA/IFwiaW5zdGFsbGF0aW9uXCIgOiBpc1VzZXJUb1NlcnZlciA/IFwidXNlci10by1zZXJ2ZXJcIiA6IFwib2F1dGhcIjtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcInRva2VuXCIsXG4gICAgdG9rZW4sXG4gICAgdG9rZW5UeXBlXG4gIH07XG59XG5cbi8vIHBrZy9kaXN0LXNyYy93aXRoLWF1dGhvcml6YXRpb24tcHJlZml4LmpzXG5mdW5jdGlvbiB3aXRoQXV0aG9yaXphdGlvblByZWZpeCh0b2tlbikge1xuICBpZiAodG9rZW4uc3BsaXQoL1xcLi8pLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBgYmVhcmVyICR7dG9rZW59YDtcbiAgfVxuICByZXR1cm4gYHRva2VuICR7dG9rZW59YDtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2hvb2suanNcbmFzeW5jIGZ1bmN0aW9uIGhvb2sodG9rZW4sIHJlcXVlc3QsIHJvdXRlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IGVuZHBvaW50ID0gcmVxdWVzdC5lbmRwb2ludC5tZXJnZShcbiAgICByb3V0ZSxcbiAgICBwYXJhbWV0ZXJzXG4gICk7XG4gIGVuZHBvaW50LmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IHdpdGhBdXRob3JpemF0aW9uUHJlZml4KHRva2VuKTtcbiAgcmV0dXJuIHJlcXVlc3QoZW5kcG9pbnQpO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvaW5kZXguanNcbnZhciBjcmVhdGVUb2tlbkF1dGggPSBmdW5jdGlvbiBjcmVhdGVUb2tlbkF1dGgyKHRva2VuKSB7XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJbQG9jdG9raXQvYXV0aC10b2tlbl0gTm8gdG9rZW4gcGFzc2VkIHRvIGNyZWF0ZVRva2VuQXV0aFwiKTtcbiAgfVxuICBpZiAodHlwZW9mIHRva2VuICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJbQG9jdG9raXQvYXV0aC10b2tlbl0gVG9rZW4gcGFzc2VkIHRvIGNyZWF0ZVRva2VuQXV0aCBpcyBub3QgYSBzdHJpbmdcIlxuICAgICk7XG4gIH1cbiAgdG9rZW4gPSB0b2tlbi5yZXBsYWNlKC9eKHRva2VufGJlYXJlcikgKy9pLCBcIlwiKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXV0aC5iaW5kKG51bGwsIHRva2VuKSwge1xuICAgIGhvb2s6IGhvb2suYmluZChudWxsLCB0b2tlbilcbiAgfSk7XG59O1xuZXhwb3J0IHtcbiAgY3JlYXRlVG9rZW5BdXRoXG59O1xuIiwgImNvbnN0IFZFUlNJT04gPSBcIjYuMS42XCI7XG5leHBvcnQge1xuICBWRVJTSU9OXG59O1xuIiwgImltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gXCJ1bml2ZXJzYWwtdXNlci1hZ2VudFwiO1xuaW1wb3J0IEhvb2sgZnJvbSBcImJlZm9yZS1hZnRlci1ob29rXCI7XG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L3JlcXVlc3RcIjtcbmltcG9ydCB7IHdpdGhDdXN0b21SZXF1ZXN0IH0gZnJvbSBcIkBvY3Rva2l0L2dyYXBocWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRva2VuQXV0aCB9IGZyb20gXCJAb2N0b2tpdC9hdXRoLXRva2VuXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvbi5qc1wiO1xuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5jb25zdCBjb25zb2xlV2FybiA9IGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO1xuY29uc3QgY29uc29sZUVycm9yID0gY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO1xuZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKGxvZ2dlciA9IHt9KSB7XG4gIGlmICh0eXBlb2YgbG9nZ2VyLmRlYnVnICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsb2dnZXIuZGVidWcgPSBub29wO1xuICB9XG4gIGlmICh0eXBlb2YgbG9nZ2VyLmluZm8gIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxvZ2dlci5pbmZvID0gbm9vcDtcbiAgfVxuICBpZiAodHlwZW9mIGxvZ2dlci53YXJuICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsb2dnZXIud2FybiA9IGNvbnNvbGVXYXJuO1xuICB9XG4gIGlmICh0eXBlb2YgbG9nZ2VyLmVycm9yICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsb2dnZXIuZXJyb3IgPSBjb25zb2xlRXJyb3I7XG4gIH1cbiAgcmV0dXJuIGxvZ2dlcjtcbn1cbmNvbnN0IHVzZXJBZ2VudFRyYWlsID0gYG9jdG9raXQtY29yZS5qcy8ke1ZFUlNJT059ICR7Z2V0VXNlckFnZW50KCl9YDtcbmNsYXNzIE9jdG9raXQge1xuICBzdGF0aWMgVkVSU0lPTiA9IFZFUlNJT047XG4gIHN0YXRpYyBkZWZhdWx0cyhkZWZhdWx0cykge1xuICAgIGNvbnN0IE9jdG9raXRXaXRoRGVmYXVsdHMgPSBjbGFzcyBleHRlbmRzIHRoaXMge1xuICAgICAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gYXJnc1swXSB8fCB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0cyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgc3VwZXIoZGVmYXVsdHMob3B0aW9ucykpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlcihcbiAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBkZWZhdWx0cyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zLnVzZXJBZ2VudCAmJiBkZWZhdWx0cy51c2VyQWdlbnQgPyB7XG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogYCR7b3B0aW9ucy51c2VyQWdlbnR9ICR7ZGVmYXVsdHMudXNlckFnZW50fWBcbiAgICAgICAgICAgIH0gOiBudWxsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIE9jdG9raXRXaXRoRGVmYXVsdHM7XG4gIH1cbiAgc3RhdGljIHBsdWdpbnMgPSBbXTtcbiAgLyoqXG4gICAqIEF0dGFjaCBhIHBsdWdpbiAob3IgbWFueSkgdG8geW91ciBPY3Rva2l0IGluc3RhbmNlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBBUEkgPSBPY3Rva2l0LnBsdWdpbihwbHVnaW4xLCBwbHVnaW4yLCBwbHVnaW4zLCAuLi4pXG4gICAqL1xuICBzdGF0aWMgcGx1Z2luKC4uLm5ld1BsdWdpbnMpIHtcbiAgICBjb25zdCBjdXJyZW50UGx1Z2lucyA9IHRoaXMucGx1Z2lucztcbiAgICBjb25zdCBOZXdPY3Rva2l0ID0gY2xhc3MgZXh0ZW5kcyB0aGlzIHtcbiAgICAgIHN0YXRpYyBwbHVnaW5zID0gY3VycmVudFBsdWdpbnMuY29uY2F0KFxuICAgICAgICBuZXdQbHVnaW5zLmZpbHRlcigocGx1Z2luKSA9PiAhY3VycmVudFBsdWdpbnMuaW5jbHVkZXMocGx1Z2luKSlcbiAgICAgICk7XG4gICAgfTtcbiAgICByZXR1cm4gTmV3T2N0b2tpdDtcbiAgfVxuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBob29rID0gbmV3IEhvb2suQ29sbGVjdGlvbigpO1xuICAgIGNvbnN0IHJlcXVlc3REZWZhdWx0cyA9IHtcbiAgICAgIGJhc2VVcmw6IHJlcXVlc3QuZW5kcG9pbnQuREVGQVVMVFMuYmFzZVVybCxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgcmVxdWVzdDogT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucy5yZXF1ZXN0LCB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgaW50ZXJuYWwgdXNhZ2Ugb25seSwgbm8gbmVlZCB0byB0eXBlXG4gICAgICAgIGhvb2s6IGhvb2suYmluZChudWxsLCBcInJlcXVlc3RcIilcbiAgICAgIH0pLFxuICAgICAgbWVkaWFUeXBlOiB7XG4gICAgICAgIHByZXZpZXdzOiBbXSxcbiAgICAgICAgZm9ybWF0OiBcIlwiXG4gICAgICB9XG4gICAgfTtcbiAgICByZXF1ZXN0RGVmYXVsdHMuaGVhZGVyc1tcInVzZXItYWdlbnRcIl0gPSBvcHRpb25zLnVzZXJBZ2VudCA/IGAke29wdGlvbnMudXNlckFnZW50fSAke3VzZXJBZ2VudFRyYWlsfWAgOiB1c2VyQWdlbnRUcmFpbDtcbiAgICBpZiAob3B0aW9ucy5iYXNlVXJsKSB7XG4gICAgICByZXF1ZXN0RGVmYXVsdHMuYmFzZVVybCA9IG9wdGlvbnMuYmFzZVVybDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucHJldmlld3MpIHtcbiAgICAgIHJlcXVlc3REZWZhdWx0cy5tZWRpYVR5cGUucHJldmlld3MgPSBvcHRpb25zLnByZXZpZXdzO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50aW1lWm9uZSkge1xuICAgICAgcmVxdWVzdERlZmF1bHRzLmhlYWRlcnNbXCJ0aW1lLXpvbmVcIl0gPSBvcHRpb25zLnRpbWVab25lO1xuICAgIH1cbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0LmRlZmF1bHRzKHJlcXVlc3REZWZhdWx0cyk7XG4gICAgdGhpcy5ncmFwaHFsID0gd2l0aEN1c3RvbVJlcXVlc3QodGhpcy5yZXF1ZXN0KS5kZWZhdWx0cyhyZXF1ZXN0RGVmYXVsdHMpO1xuICAgIHRoaXMubG9nID0gY3JlYXRlTG9nZ2VyKG9wdGlvbnMubG9nKTtcbiAgICB0aGlzLmhvb2sgPSBob29rO1xuICAgIGlmICghb3B0aW9ucy5hdXRoU3RyYXRlZ3kpIHtcbiAgICAgIGlmICghb3B0aW9ucy5hdXRoKSB7XG4gICAgICAgIHRoaXMuYXV0aCA9IGFzeW5jICgpID0+ICh7XG4gICAgICAgICAgdHlwZTogXCJ1bmF1dGhlbnRpY2F0ZWRcIlxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGF1dGggPSBjcmVhdGVUb2tlbkF1dGgob3B0aW9ucy5hdXRoKTtcbiAgICAgICAgaG9vay53cmFwKFwicmVxdWVzdFwiLCBhdXRoLmhvb2spO1xuICAgICAgICB0aGlzLmF1dGggPSBhdXRoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IGF1dGhTdHJhdGVneSwgLi4ub3RoZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICAgICAgY29uc3QgYXV0aCA9IGF1dGhTdHJhdGVneShcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXF1ZXN0OiB0aGlzLnJlcXVlc3QsXG4gICAgICAgICAgICBsb2c6IHRoaXMubG9nLFxuICAgICAgICAgICAgLy8gd2UgcGFzcyB0aGUgY3VycmVudCBvY3Rva2l0IGluc3RhbmNlIGFzIHdlbGwgYXMgaXRzIGNvbnN0cnVjdG9yIG9wdGlvbnNcbiAgICAgICAgICAgIC8vIHRvIGFsbG93IGZvciBhdXRoZW50aWNhdGlvbiBzdHJhdGVnaWVzIHRoYXQgcmV0dXJuIGEgbmV3IG9jdG9raXQgaW5zdGFuY2VcbiAgICAgICAgICAgIC8vIHRoYXQgc2hhcmVzIHRoZSBzYW1lIGludGVybmFsIHN0YXRlIGFzIHRoZSBjdXJyZW50IG9uZS4gVGhlIG9yaWdpbmFsXG4gICAgICAgICAgICAvLyByZXF1aXJlbWVudCBmb3IgdGhpcyB3YXMgdGhlIFwiZXZlbnQtb2N0b2tpdFwiIGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWd5XG4gICAgICAgICAgICAvLyBvZiBodHRwczovL2dpdGh1Yi5jb20vcHJvYm90L29jdG9raXQtYXV0aC1wcm9ib3QuXG4gICAgICAgICAgICBvY3Rva2l0OiB0aGlzLFxuICAgICAgICAgICAgb2N0b2tpdE9wdGlvbnM6IG90aGVyT3B0aW9uc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy5hdXRoXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBob29rLndyYXAoXCJyZXF1ZXN0XCIsIGF1dGguaG9vayk7XG4gICAgICB0aGlzLmF1dGggPSBhdXRoO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc0NvbnN0cnVjdG9yID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsYXNzQ29uc3RydWN0b3IucGx1Z2lucy5sZW5ndGg7ICsraSkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjbGFzc0NvbnN0cnVjdG9yLnBsdWdpbnNbaV0odGhpcywgb3B0aW9ucykpO1xuICAgIH1cbiAgfVxuICAvLyBhc3NpZ25lZCBkdXJpbmcgY29uc3RydWN0b3JcbiAgcmVxdWVzdDtcbiAgZ3JhcGhxbDtcbiAgbG9nO1xuICBob29rO1xuICAvLyBUT0RPOiB0eXBlIGBvY3Rva2l0LmF1dGhgIGJhc2VkIG9uIHBhc3NlZCBvcHRpb25zLmF1dGhTdHJhdGVneVxuICBhdXRoO1xufVxuZXhwb3J0IHtcbiAgT2N0b2tpdFxufTtcbiIsICJjb25zdCBWRVJTSU9OID0gXCI1LjMuMVwiO1xuZXhwb3J0IHtcbiAgVkVSU0lPTlxufTtcbiIsICJpbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvbi5qc1wiO1xuZnVuY3Rpb24gcmVxdWVzdExvZyhvY3Rva2l0KSB7XG4gIG9jdG9raXQuaG9vay53cmFwKFwicmVxdWVzdFwiLCAocmVxdWVzdCwgb3B0aW9ucykgPT4ge1xuICAgIG9jdG9raXQubG9nLmRlYnVnKFwicmVxdWVzdFwiLCBvcHRpb25zKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvY3Rva2l0LnJlcXVlc3QuZW5kcG9pbnQucGFyc2Uob3B0aW9ucyk7XG4gICAgY29uc3QgcGF0aCA9IHJlcXVlc3RPcHRpb25zLnVybC5yZXBsYWNlKG9wdGlvbnMuYmFzZVVybCwgXCJcIik7XG4gICAgcmV0dXJuIHJlcXVlc3Qob3B0aW9ucykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IHJlc3BvbnNlLmhlYWRlcnNbXCJ4LWdpdGh1Yi1yZXF1ZXN0LWlkXCJdO1xuICAgICAgb2N0b2tpdC5sb2cuaW5mbyhcbiAgICAgICAgYCR7cmVxdWVzdE9wdGlvbnMubWV0aG9kfSAke3BhdGh9IC0gJHtyZXNwb25zZS5zdGF0dXN9IHdpdGggaWQgJHtyZXF1ZXN0SWR9IGluICR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IGVycm9yLnJlc3BvbnNlPy5oZWFkZXJzW1wieC1naXRodWItcmVxdWVzdC1pZFwiXSB8fCBcIlVOS05PV05cIjtcbiAgICAgIG9jdG9raXQubG9nLmVycm9yKFxuICAgICAgICBgJHtyZXF1ZXN0T3B0aW9ucy5tZXRob2R9ICR7cGF0aH0gLSAke2Vycm9yLnN0YXR1c30gd2l0aCBpZCAke3JlcXVlc3RJZH0gaW4gJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gIH0pO1xufVxucmVxdWVzdExvZy5WRVJTSU9OID0gVkVSU0lPTjtcbmV4cG9ydCB7XG4gIHJlcXVlc3RMb2dcbn07XG4iLCAiLy8gcGtnL2Rpc3Qtc3JjL3ZlcnNpb24uanNcbnZhciBWRVJTSU9OID0gXCIwLjAuMC1kZXZlbG9wbWVudFwiO1xuXG4vLyBwa2cvZGlzdC1zcmMvbm9ybWFsaXplLXBhZ2luYXRlZC1saXN0LXJlc3BvbnNlLmpzXG5mdW5jdGlvbiBub3JtYWxpemVQYWdpbmF0ZWRMaXN0UmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgaWYgKCFyZXNwb25zZS5kYXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgZGF0YTogW11cbiAgICB9O1xuICB9XG4gIGNvbnN0IHJlc3BvbnNlTmVlZHNOb3JtYWxpemF0aW9uID0gXCJ0b3RhbF9jb3VudFwiIGluIHJlc3BvbnNlLmRhdGEgJiYgIShcInVybFwiIGluIHJlc3BvbnNlLmRhdGEpO1xuICBpZiAoIXJlc3BvbnNlTmVlZHNOb3JtYWxpemF0aW9uKSByZXR1cm4gcmVzcG9uc2U7XG4gIGNvbnN0IGluY29tcGxldGVSZXN1bHRzID0gcmVzcG9uc2UuZGF0YS5pbmNvbXBsZXRlX3Jlc3VsdHM7XG4gIGNvbnN0IHJlcG9zaXRvcnlTZWxlY3Rpb24gPSByZXNwb25zZS5kYXRhLnJlcG9zaXRvcnlfc2VsZWN0aW9uO1xuICBjb25zdCB0b3RhbENvdW50ID0gcmVzcG9uc2UuZGF0YS50b3RhbF9jb3VudDtcbiAgZGVsZXRlIHJlc3BvbnNlLmRhdGEuaW5jb21wbGV0ZV9yZXN1bHRzO1xuICBkZWxldGUgcmVzcG9uc2UuZGF0YS5yZXBvc2l0b3J5X3NlbGVjdGlvbjtcbiAgZGVsZXRlIHJlc3BvbnNlLmRhdGEudG90YWxfY291bnQ7XG4gIGNvbnN0IG5hbWVzcGFjZUtleSA9IE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEpWzBdO1xuICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YVtuYW1lc3BhY2VLZXldO1xuICByZXNwb25zZS5kYXRhID0gZGF0YTtcbiAgaWYgKHR5cGVvZiBpbmNvbXBsZXRlUmVzdWx0cyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJlc3BvbnNlLmRhdGEuaW5jb21wbGV0ZV9yZXN1bHRzID0gaW5jb21wbGV0ZVJlc3VsdHM7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXBvc2l0b3J5U2VsZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmVzcG9uc2UuZGF0YS5yZXBvc2l0b3J5X3NlbGVjdGlvbiA9IHJlcG9zaXRvcnlTZWxlY3Rpb247XG4gIH1cbiAgcmVzcG9uc2UuZGF0YS50b3RhbF9jb3VudCA9IHRvdGFsQ291bnQ7XG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuLy8gcGtnL2Rpc3Qtc3JjL2l0ZXJhdG9yLmpzXG5mdW5jdGlvbiBpdGVyYXRvcihvY3Rva2l0LCByb3V0ZSwgcGFyYW1ldGVycykge1xuICBjb25zdCBvcHRpb25zID0gdHlwZW9mIHJvdXRlID09PSBcImZ1bmN0aW9uXCIgPyByb3V0ZS5lbmRwb2ludChwYXJhbWV0ZXJzKSA6IG9jdG9raXQucmVxdWVzdC5lbmRwb2ludChyb3V0ZSwgcGFyYW1ldGVycyk7XG4gIGNvbnN0IHJlcXVlc3RNZXRob2QgPSB0eXBlb2Ygcm91dGUgPT09IFwiZnVuY3Rpb25cIiA/IHJvdXRlIDogb2N0b2tpdC5yZXF1ZXN0O1xuICBjb25zdCBtZXRob2QgPSBvcHRpb25zLm1ldGhvZDtcbiAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycztcbiAgbGV0IHVybCA9IG9wdGlvbnMudXJsO1xuICByZXR1cm4ge1xuICAgIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl06ICgpID0+ICh7XG4gICAgICBhc3luYyBuZXh0KCkge1xuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdE1ldGhvZCh7IG1ldGhvZCwgdXJsLCBoZWFkZXJzIH0pO1xuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXNwb25zZSA9IG5vcm1hbGl6ZVBhZ2luYXRlZExpc3RSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgdXJsID0gKChub3JtYWxpemVkUmVzcG9uc2UuaGVhZGVycy5saW5rIHx8IFwiXCIpLm1hdGNoKFxuICAgICAgICAgICAgLzwoW148Pl0rKT47XFxzKnJlbD1cIm5leHRcIi9cbiAgICAgICAgICApIHx8IFtdKVsxXTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbm9ybWFsaXplZFJlc3BvbnNlIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDA5KSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB1cmwgPSBcIlwiO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgIGRhdGE6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH07XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9wYWdpbmF0ZS5qc1xuZnVuY3Rpb24gcGFnaW5hdGUob2N0b2tpdCwgcm91dGUsIHBhcmFtZXRlcnMsIG1hcEZuKSB7XG4gIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgbWFwRm4gPSBwYXJhbWV0ZXJzO1xuICAgIHBhcmFtZXRlcnMgPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIGdhdGhlcihcbiAgICBvY3Rva2l0LFxuICAgIFtdLFxuICAgIGl0ZXJhdG9yKG9jdG9raXQsIHJvdXRlLCBwYXJhbWV0ZXJzKVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSxcbiAgICBtYXBGblxuICApO1xufVxuZnVuY3Rpb24gZ2F0aGVyKG9jdG9raXQsIHJlc3VsdHMsIGl0ZXJhdG9yMiwgbWFwRm4pIHtcbiAgcmV0dXJuIGl0ZXJhdG9yMi5uZXh0KCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgaWYgKHJlc3VsdC5kb25lKSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgbGV0IGVhcmx5RXhpdCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBlYXJseUV4aXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoXG4gICAgICBtYXBGbiA/IG1hcEZuKHJlc3VsdC52YWx1ZSwgZG9uZSkgOiByZXN1bHQudmFsdWUuZGF0YVxuICAgICk7XG4gICAgaWYgKGVhcmx5RXhpdCkge1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIHJldHVybiBnYXRoZXIob2N0b2tpdCwgcmVzdWx0cywgaXRlcmF0b3IyLCBtYXBGbik7XG4gIH0pO1xufVxuXG4vLyBwa2cvZGlzdC1zcmMvY29tcG9zZS1wYWdpbmF0ZS5qc1xudmFyIGNvbXBvc2VQYWdpbmF0ZVJlc3QgPSBPYmplY3QuYXNzaWduKHBhZ2luYXRlLCB7XG4gIGl0ZXJhdG9yXG59KTtcblxuLy8gcGtnL2Rpc3Qtc3JjL2dlbmVyYXRlZC9wYWdpbmF0aW5nLWVuZHBvaW50cy5qc1xudmFyIHBhZ2luYXRpbmdFbmRwb2ludHMgPSBbXG4gIFwiR0VUIC9hZHZpc29yaWVzXCIsXG4gIFwiR0VUIC9hcHAvaG9vay9kZWxpdmVyaWVzXCIsXG4gIFwiR0VUIC9hcHAvaW5zdGFsbGF0aW9uLXJlcXVlc3RzXCIsXG4gIFwiR0VUIC9hcHAvaW5zdGFsbGF0aW9uc1wiLFxuICBcIkdFVCAvYXNzaWdubWVudHMve2Fzc2lnbm1lbnRfaWR9L2FjY2VwdGVkX2Fzc2lnbm1lbnRzXCIsXG4gIFwiR0VUIC9jbGFzc3Jvb21zXCIsXG4gIFwiR0VUIC9jbGFzc3Jvb21zL3tjbGFzc3Jvb21faWR9L2Fzc2lnbm1lbnRzXCIsXG4gIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9uc1wiLFxuICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2RlcGVuZGFib3QvYWxlcnRzXCIsXG4gIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vc2VjcmV0LXNjYW5uaW5nL2FsZXJ0c1wiLFxuICBcIkdFVCAvZXZlbnRzXCIsXG4gIFwiR0VUIC9naXN0c1wiLFxuICBcIkdFVCAvZ2lzdHMvcHVibGljXCIsXG4gIFwiR0VUIC9naXN0cy9zdGFycmVkXCIsXG4gIFwiR0VUIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHNcIixcbiAgXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9jb21taXRzXCIsXG4gIFwiR0VUIC9naXN0cy97Z2lzdF9pZH0vZm9ya3NcIixcbiAgXCJHRVQgL2luc3RhbGxhdGlvbi9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL2lzc3Vlc1wiLFxuICBcIkdFVCAvbGljZW5zZXNcIixcbiAgXCJHRVQgL21hcmtldHBsYWNlX2xpc3RpbmcvcGxhbnNcIixcbiAgXCJHRVQgL21hcmtldHBsYWNlX2xpc3RpbmcvcGxhbnMve3BsYW5faWR9L2FjY291bnRzXCIsXG4gIFwiR0VUIC9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhbnNcIixcbiAgXCJHRVQgL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9wbGFucy97cGxhbl9pZH0vYWNjb3VudHNcIixcbiAgXCJHRVQgL25ldHdvcmtzL3tvd25lcn0ve3JlcG99L2V2ZW50c1wiLFxuICBcIkdFVCAvbm90aWZpY2F0aW9uc1wiLFxuICBcIkdFVCAvb3JnYW5pemF0aW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL2NhY2hlL3VzYWdlLWJ5LXJlcG9zaXRvcnlcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lci1ncm91cHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXItZ3JvdXBzL3tydW5uZXJfZ3JvdXBfaWR9L2hvc3RlZC1ydW5uZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVyLWdyb3Vwcy97cnVubmVyX2dyb3VwX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXItZ3JvdXBzL3tydW5uZXJfZ3JvdXBfaWR9L3J1bm5lcnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy92YXJpYWJsZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy92YXJpYWJsZXMve25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9hdHRlc3RhdGlvbnMve3N1YmplY3RfZGlnZXN0fVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ibG9ja3NcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29kZS1zY2FubmluZy9hbGVydHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29kZXNwYWNlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZy9zZWF0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L21ldHJpY3NcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vY29waWxvdC91c2FnZVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L2FsZXJ0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2V2ZW50c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9mYWlsZWRfaW52aXRhdGlvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaG9va3NcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vaW5zaWdodHMvYXBpL3JvdXRlLXN0YXRzL3thY3Rvcl90eXBlfS97YWN0b3JfaWR9XCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2luc2lnaHRzL2FwaS9zdWJqZWN0LXN0YXRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2luc2lnaHRzL2FwaS91c2VyLXN0YXRzL3t1c2VyX2lkfVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9pbnN0YWxsYXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2ludml0YXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfS90ZWFtc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9pc3N1ZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vbWVtYmVyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9tZW1iZXJzL3t1c2VybmFtZX0vY29kZXNwYWNlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9taWdyYXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy97cm9sZV9pZH0vdGVhbXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzL3tyb2xlX2lkfS91c2Vyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9vdXRzaWRlX2NvbGxhYm9yYXRvcnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcGFja2FnZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2VuLXJlcXVlc3RzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbi1yZXF1ZXN0cy97cGF0X3JlcXVlc3RfaWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbnMve3BhdF9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wcm9qZWN0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3ZhbHVlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9wdWJsaWNfbWVtYmVyc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9yZXBvc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy9ydWxlLXN1aXRlc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy97cnVsZXNldF9pZH0vaGlzdG9yeVwiLFxuICBcIkdFVCAvb3Jncy97b3JnfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3NlY3VyaXR5LWFkdmlzb3JpZXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvbmV0d29yay1jb25maWd1cmF0aW9uc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtL3t0ZWFtX3NsdWd9L2NvcGlsb3QvbWV0cmljc1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtL3t0ZWFtX3NsdWd9L2NvcGlsb3QvdXNhZ2VcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50c1wiLFxuICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn0vcmVhY3Rpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vcmVhY3Rpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2ludml0YXRpb25zXCIsXG4gIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L21lbWJlcnNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcHJvamVjdHNcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcmVwb3NcIixcbiAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vdGVhbXNcIixcbiAgXCJHRVQgL3Byb2plY3RzL2NvbHVtbnMve2NvbHVtbl9pZH0vY2FyZHNcIixcbiAgXCJHRVQgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2xsYWJvcmF0b3JzXCIsXG4gIFwiR0VUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sdW1uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9hcnRpZmFjdHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvY2FjaGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL29yZ2FuaXphdGlvbi1zZWNyZXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL29yZ2FuaXphdGlvbi12YXJpYWJsZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVyc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vYXJ0aWZhY3RzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vYXR0ZW1wdHMve2F0dGVtcHRfbnVtYmVyfS9qb2JzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vam9ic1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9zZWNyZXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3ZhcmlhYmxlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy93b3JrZmxvd3NcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vcnVuc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aXZpdHlcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Fzc2lnbmVlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXR0ZXN0YXRpb25zL3tzdWJqZWN0X2RpZ2VzdH1cIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1ydW5zL3tjaGVja19ydW5faWR9L2Fubm90YXRpb25zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1zdWl0ZXMve2NoZWNrX3N1aXRlX2lkfS9jaGVjay1ydW5zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn0vaW5zdGFuY2VzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FuYWx5c2VzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL2RldmNvbnRhaW5lcnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvc2VjcmV0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29sbGFib3JhdG9yc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve2NvbW1pdF9zaGF9L2NvbW1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tjb21taXRfc2hhfS9wdWxsc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9jaGVjay1ydW5zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L2NoZWNrLXN1aXRlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9zdGF0dXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve3JlZn0vc3RhdHVzZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbnRyaWJ1dG9yc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9hbGVydHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGFib3Qvc2VjcmV0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwbG95bWVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzL3tkZXBsb3ltZW50X2lkfS9zdGF0dXNlc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnQtYnJhbmNoLXBvbGljaWVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnRfcHJvdGVjdGlvbl9ydWxlcy9hcHBzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3NlY3JldHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vdmFyaWFibGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ldmVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ZvcmtzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ludml0YXRpb25zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9ldmVudHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2V2ZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xhYmVsc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3N1Yl9pc3N1ZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS90aW1lbGluZVwiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30va2V5c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbGFiZWxzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9taWxlc3RvbmVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9taWxlc3RvbmVzL3ttaWxlc3RvbmVfbnVtYmVyfS9sYWJlbHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L25vdGlmaWNhdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2J1aWxkc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHJvamVjdHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9jb21taXRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2ZpbGVzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3NcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3cy97cmV2aWV3X2lkfS9jb21tZW50c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfS9hc3NldHNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzL2JyYW5jaGVzL3ticmFuY2h9XCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0c1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMvcnVsZS1zdWl0ZXNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3tydWxlc2V0X2lkfS9oaXN0b3J5XCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2xvY2F0aW9uc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjdXJpdHktYWR2aXNvcmllc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhcmdhemVyc1wiLFxuICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3Vic2NyaWJlcnNcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RhZ3NcIixcbiAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RlYW1zXCIsXG4gIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS90b3BpY3NcIixcbiAgXCJHRVQgL3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvc2VhcmNoL2NvZGVcIixcbiAgXCJHRVQgL3NlYXJjaC9jb21taXRzXCIsXG4gIFwiR0VUIC9zZWFyY2gvaXNzdWVzXCIsXG4gIFwiR0VUIC9zZWFyY2gvbGFiZWxzXCIsXG4gIFwiR0VUIC9zZWFyY2gvcmVwb3NpdG9yaWVzXCIsXG4gIFwiR0VUIC9zZWFyY2gvdG9waWNzXCIsXG4gIFwiR0VUIC9zZWFyY2gvdXNlcnNcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9kaXNjdXNzaW9uc1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHNcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn0vcmVhY3Rpb25zXCIsXG4gIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9pbnZpdGF0aW9uc1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L21lbWJlcnNcIixcbiAgXCJHRVQgL3RlYW1zL3t0ZWFtX2lkfS9wcm9qZWN0c1wiLFxuICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L3JlcG9zXCIsXG4gIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vdGVhbXNcIixcbiAgXCJHRVQgL3VzZXIvYmxvY2tzXCIsXG4gIFwiR0VUIC91c2VyL2NvZGVzcGFjZXNcIixcbiAgXCJHRVQgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzXCIsXG4gIFwiR0VUIC91c2VyL2VtYWlsc1wiLFxuICBcIkdFVCAvdXNlci9mb2xsb3dlcnNcIixcbiAgXCJHRVQgL3VzZXIvZm9sbG93aW5nXCIsXG4gIFwiR0VUIC91c2VyL2dwZ19rZXlzXCIsXG4gIFwiR0VUIC91c2VyL2luc3RhbGxhdGlvbnNcIixcbiAgXCJHRVQgL3VzZXIvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgXCJHRVQgL3VzZXIvaXNzdWVzXCIsXG4gIFwiR0VUIC91c2VyL2tleXNcIixcbiAgXCJHRVQgL3VzZXIvbWFya2V0cGxhY2VfcHVyY2hhc2VzXCIsXG4gIFwiR0VUIC91c2VyL21hcmtldHBsYWNlX3B1cmNoYXNlcy9zdHViYmVkXCIsXG4gIFwiR0VUIC91c2VyL21lbWJlcnNoaXBzL29yZ3NcIixcbiAgXCJHRVQgL3VzZXIvbWlncmF0aW9uc1wiLFxuICBcIkdFVCAvdXNlci9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICBcIkdFVCAvdXNlci9vcmdzXCIsXG4gIFwiR0VUIC91c2VyL3BhY2thZ2VzXCIsXG4gIFwiR0VUIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zXCIsXG4gIFwiR0VUIC91c2VyL3B1YmxpY19lbWFpbHNcIixcbiAgXCJHRVQgL3VzZXIvcmVwb3NcIixcbiAgXCJHRVQgL3VzZXIvcmVwb3NpdG9yeV9pbnZpdGF0aW9uc1wiLFxuICBcIkdFVCAvdXNlci9zb2NpYWxfYWNjb3VudHNcIixcbiAgXCJHRVQgL3VzZXIvc3NoX3NpZ25pbmdfa2V5c1wiLFxuICBcIkdFVCAvdXNlci9zdGFycmVkXCIsXG4gIFwiR0VUIC91c2VyL3N1YnNjcmlwdGlvbnNcIixcbiAgXCJHRVQgL3VzZXIvdGVhbXNcIixcbiAgXCJHRVQgL3VzZXJzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2F0dGVzdGF0aW9ucy97c3ViamVjdF9kaWdlc3R9XCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2V2ZW50c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ldmVudHMvb3Jncy97b3JnfVwiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ldmVudHMvcHVibGljXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L2ZvbGxvd2Vyc1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9mb2xsb3dpbmdcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZ2lzdHNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZ3BnX2tleXNcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0va2V5c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9vcmdzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3BhY2thZ2VzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3Byb2plY3RzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlY2VpdmVkX2V2ZW50c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9yZWNlaXZlZF9ldmVudHMvcHVibGljXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlcG9zXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3NvY2lhbF9hY2NvdW50c1wiLFxuICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9zc2hfc2lnbmluZ19rZXlzXCIsXG4gIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3N0YXJyZWRcIixcbiAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc3Vic2NyaXB0aW9uc1wiXG5dO1xuXG4vLyBwa2cvZGlzdC1zcmMvcGFnaW5hdGluZy1lbmRwb2ludHMuanNcbmZ1bmN0aW9uIGlzUGFnaW5hdGluZ0VuZHBvaW50KGFyZykge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBwYWdpbmF0aW5nRW5kcG9pbnRzLmluY2x1ZGVzKGFyZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIHBrZy9kaXN0LXNyYy9pbmRleC5qc1xuZnVuY3Rpb24gcGFnaW5hdGVSZXN0KG9jdG9raXQpIHtcbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0ZTogT2JqZWN0LmFzc2lnbihwYWdpbmF0ZS5iaW5kKG51bGwsIG9jdG9raXQpLCB7XG4gICAgICBpdGVyYXRvcjogaXRlcmF0b3IuYmluZChudWxsLCBvY3Rva2l0KVxuICAgIH0pXG4gIH07XG59XG5wYWdpbmF0ZVJlc3QuVkVSU0lPTiA9IFZFUlNJT047XG5leHBvcnQge1xuICBjb21wb3NlUGFnaW5hdGVSZXN0LFxuICBpc1BhZ2luYXRpbmdFbmRwb2ludCxcbiAgcGFnaW5hdGVSZXN0LFxuICBwYWdpbmF0aW5nRW5kcG9pbnRzXG59O1xuIiwgImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIxMy41LjBcIjtcbiIsICJpbXBvcnQgdHlwZSB7IEVuZHBvaW50c0RlZmF1bHRzQW5kRGVjb3JhdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmNvbnN0IEVuZHBvaW50czogRW5kcG9pbnRzRGVmYXVsdHNBbmREZWNvcmF0aW9ucyA9IHtcbiAgYWN0aW9uczoge1xuICAgIGFkZEN1c3RvbUxhYmVsc1RvU2VsZkhvc3RlZFJ1bm5lckZvck9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIGFkZEN1c3RvbUxhYmVsc1RvU2VsZkhvc3RlZFJ1bm5lckZvclJlcG86IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzL3tydW5uZXJfaWR9L2xhYmVsc1wiLFxuICAgIF0sXG4gICAgYWRkUmVwb0FjY2Vzc1RvU2VsZkhvc3RlZFJ1bm5lckdyb3VwSW5Pcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVyLWdyb3Vwcy97cnVubmVyX2dyb3VwX2lkfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBhZGRTZWxlY3RlZFJlcG9Ub09yZ1NlY3JldDogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgYWRkU2VsZWN0ZWRSZXBvVG9PcmdWYXJpYWJsZTogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy92YXJpYWJsZXMve25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGFwcHJvdmVXb3JrZmxvd1J1bjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vYXBwcm92ZVwiLFxuICAgIF0sXG4gICAgY2FuY2VsV29ya2Zsb3dSdW46IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2NhbmNlbFwiLFxuICAgIF0sXG4gICAgY3JlYXRlRW52aXJvbm1lbnRWYXJpYWJsZTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3ZhcmlhYmxlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlSG9zdGVkUnVubmVyRm9yT3JnOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnNcIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudFNlY3JldDogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVPclVwZGF0ZU9yZ1NlY3JldDogW1wiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCJdLFxuICAgIGNyZWF0ZU9yVXBkYXRlUmVwb1NlY3JldDogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVPcmdWYXJpYWJsZTogW1wiUE9TVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlc1wiXSxcbiAgICBjcmVhdGVSZWdpc3RyYXRpb25Ub2tlbkZvck9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy9yZWdpc3RyYXRpb24tdG9rZW5cIixcbiAgICBdLFxuICAgIGNyZWF0ZVJlZ2lzdHJhdGlvblRva2VuRm9yUmVwbzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnMvcmVnaXN0cmF0aW9uLXRva2VuXCIsXG4gICAgXSxcbiAgICBjcmVhdGVSZW1vdmVUb2tlbkZvck9yZzogW1wiUE9TVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnMvcmVtb3ZlLXRva2VuXCJdLFxuICAgIGNyZWF0ZVJlbW92ZVRva2VuRm9yUmVwbzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnMvcmVtb3ZlLXRva2VuXCIsXG4gICAgXSxcbiAgICBjcmVhdGVSZXBvVmFyaWFibGU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvdmFyaWFibGVzXCJdLFxuICAgIGNyZWF0ZVdvcmtmbG93RGlzcGF0Y2g6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS9kaXNwYXRjaGVzXCIsXG4gICAgXSxcbiAgICBkZWxldGVBY3Rpb25zQ2FjaGVCeUlkOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9jYWNoZXMve2NhY2hlX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlQWN0aW9uc0NhY2hlQnlLZXk6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2NhY2hlc3s/a2V5LHJlZn1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUFydGlmYWN0OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9hcnRpZmFjdHMve2FydGlmYWN0X2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRW52aXJvbm1lbnRTZWNyZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRW52aXJvbm1lbnRWYXJpYWJsZTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vdmFyaWFibGVzL3tuYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlSG9zdGVkUnVubmVyRm9yT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL2hvc3RlZC1ydW5uZXJzL3tob3N0ZWRfcnVubmVyX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlT3JnU2VjcmV0OiBbXCJERUxFVEUgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZGVsZXRlT3JnVmFyaWFibGU6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIl0sXG4gICAgZGVsZXRlUmVwb1NlY3JldDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVSZXBvVmFyaWFibGU6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVNlbGZIb3N0ZWRSdW5uZXJGcm9tT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnMve3J1bm5lcl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVNlbGZIb3N0ZWRSdW5uZXJGcm9tUmVwbzogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlV29ya2Zsb3dSdW46IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9XCJdLFxuICAgIGRlbGV0ZVdvcmtmbG93UnVuTG9nczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9sb2dzXCIsXG4gICAgXSxcbiAgICBkaXNhYmxlU2VsZWN0ZWRSZXBvc2l0b3J5R2l0aHViQWN0aW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9ucy9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBkaXNhYmxlV29ya2Zsb3c6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L2Rpc2FibGVcIixcbiAgICBdLFxuICAgIGRvd25sb2FkQXJ0aWZhY3Q6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2FydGlmYWN0cy97YXJ0aWZhY3RfaWR9L3thcmNoaXZlX2Zvcm1hdH1cIixcbiAgICBdLFxuICAgIGRvd25sb2FkSm9iTG9nc0ZvcldvcmtmbG93UnVuOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9qb2JzL3tqb2JfaWR9L2xvZ3NcIixcbiAgICBdLFxuICAgIGRvd25sb2FkV29ya2Zsb3dSdW5BdHRlbXB0TG9nczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hdHRlbXB0cy97YXR0ZW1wdF9udW1iZXJ9L2xvZ3NcIixcbiAgICBdLFxuICAgIGRvd25sb2FkV29ya2Zsb3dSdW5Mb2dzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2xvZ3NcIixcbiAgICBdLFxuICAgIGVuYWJsZVNlbGVjdGVkUmVwb3NpdG9yeUdpdGh1YkFjdGlvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvcmVwb3NpdG9yaWVzL3tyZXBvc2l0b3J5X2lkfVwiLFxuICAgIF0sXG4gICAgZW5hYmxlV29ya2Zsb3c6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L2VuYWJsZVwiLFxuICAgIF0sXG4gICAgZm9yY2VDYW5jZWxXb3JrZmxvd1J1bjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vZm9yY2UtY2FuY2VsXCIsXG4gICAgXSxcbiAgICBnZW5lcmF0ZVJ1bm5lckppdGNvbmZpZ0Zvck9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy9nZW5lcmF0ZS1qaXRjb25maWdcIixcbiAgICBdLFxuICAgIGdlbmVyYXRlUnVubmVySml0Y29uZmlnRm9yUmVwbzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnMvZ2VuZXJhdGUtaml0Y29uZmlnXCIsXG4gICAgXSxcbiAgICBnZXRBY3Rpb25zQ2FjaGVMaXN0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvY2FjaGVzXCJdLFxuICAgIGdldEFjdGlvbnNDYWNoZVVzYWdlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvY2FjaGUvdXNhZ2VcIl0sXG4gICAgZ2V0QWN0aW9uc0NhY2hlVXNhZ2VCeVJlcG9Gb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvY2FjaGUvdXNhZ2UtYnktcmVwb3NpdG9yeVwiLFxuICAgIF0sXG4gICAgZ2V0QWN0aW9uc0NhY2hlVXNhZ2VGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL2NhY2hlL3VzYWdlXCJdLFxuICAgIGdldEFsbG93ZWRBY3Rpb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3NlbGVjdGVkLWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGdldEFsbG93ZWRBY3Rpb25zUmVwb3NpdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnMvc2VsZWN0ZWQtYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0QXJ0aWZhY3Q6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9hcnRpZmFjdHMve2FydGlmYWN0X2lkfVwiXSxcbiAgICBnZXRDdXN0b21PaWRjU3ViQ2xhaW1Gb3JSZXBvOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9vaWRjL2N1c3RvbWl6YXRpb24vc3ViXCIsXG4gICAgXSxcbiAgICBnZXRFbnZpcm9ubWVudFB1YmxpY0tleTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vc2VjcmV0cy9wdWJsaWMta2V5XCIsXG4gICAgXSxcbiAgICBnZXRFbnZpcm9ubWVudFNlY3JldDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS92YXJpYWJsZXMve25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRHaXRodWJBY3Rpb25zRGVmYXVsdFdvcmtmbG93UGVybWlzc2lvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvd29ya2Zsb3dcIixcbiAgICBdLFxuICAgIGdldEdpdGh1YkFjdGlvbnNEZWZhdWx0V29ya2Zsb3dQZXJtaXNzaW9uc1JlcG9zaXRvcnk6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3Blcm1pc3Npb25zL3dvcmtmbG93XCIsXG4gICAgXSxcbiAgICBnZXRHaXRodWJBY3Rpb25zUGVybWlzc2lvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnNcIixcbiAgICBdLFxuICAgIGdldEdpdGh1YkFjdGlvbnNQZXJtaXNzaW9uc1JlcG9zaXRvcnk6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3Blcm1pc3Npb25zXCIsXG4gICAgXSxcbiAgICBnZXRIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMve2hvc3RlZF9ydW5uZXJfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRIb3N0ZWRSdW5uZXJzR2l0aHViT3duZWRJbWFnZXNGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMvaW1hZ2VzL2dpdGh1Yi1vd25lZFwiLFxuICAgIF0sXG4gICAgZ2V0SG9zdGVkUnVubmVyc0xpbWl0c0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy9saW1pdHNcIixcbiAgICBdLFxuICAgIGdldEhvc3RlZFJ1bm5lcnNNYWNoaW5lU3BlY3NGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMvbWFjaGluZS1zaXplc1wiLFxuICAgIF0sXG4gICAgZ2V0SG9zdGVkUnVubmVyc1BhcnRuZXJJbWFnZXNGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMvaW1hZ2VzL3BhcnRuZXJcIixcbiAgICBdLFxuICAgIGdldEhvc3RlZFJ1bm5lcnNQbGF0Zm9ybXNGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvaG9zdGVkLXJ1bm5lcnMvcGxhdGZvcm1zXCIsXG4gICAgXSxcbiAgICBnZXRKb2JGb3JXb3JrZmxvd1J1bjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2pvYnMve2pvYl9pZH1cIl0sXG4gICAgZ2V0T3JnUHVibGljS2V5OiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3B1YmxpYy1rZXlcIl0sXG4gICAgZ2V0T3JnU2VjcmV0OiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZ2V0T3JnVmFyaWFibGU6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIl0sXG4gICAgZ2V0UGVuZGluZ0RlcGxveW1lbnRzRm9yUnVuOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L3BlbmRpbmdfZGVwbG95bWVudHNcIixcbiAgICBdLFxuICAgIGdldFJlcG9QZXJtaXNzaW9uczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJhY3Rpb25zXCIsIFwiZ2V0R2l0aHViQWN0aW9uc1Blcm1pc3Npb25zUmVwb3NpdG9yeVwiXSB9LFxuICAgIF0sXG4gICAgZ2V0UmVwb1B1YmxpY0tleTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3NlY3JldHMvcHVibGljLWtleVwiXSxcbiAgICBnZXRSZXBvU2VjcmV0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCJdLFxuICAgIGdldFJlcG9WYXJpYWJsZTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIl0sXG4gICAgZ2V0UmV2aWV3c0ZvclJ1bjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hcHByb3ZhbHNcIixcbiAgICBdLFxuICAgIGdldFNlbGZIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnMve3J1bm5lcl9pZH1cIl0sXG4gICAgZ2V0U2VsZkhvc3RlZFJ1bm5lckZvclJlcG86IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bm5lcnMve3J1bm5lcl9pZH1cIixcbiAgICBdLFxuICAgIGdldFdvcmtmbG93OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH1cIl0sXG4gICAgZ2V0V29ya2Zsb3dBY2Nlc3NUb1JlcG9zaXRvcnk6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3Blcm1pc3Npb25zL2FjY2Vzc1wiLFxuICAgIF0sXG4gICAgZ2V0V29ya2Zsb3dSdW46IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9XCJdLFxuICAgIGdldFdvcmtmbG93UnVuQXR0ZW1wdDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hdHRlbXB0cy97YXR0ZW1wdF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICBnZXRXb3JrZmxvd1J1blVzYWdlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L3RpbWluZ1wiLFxuICAgIF0sXG4gICAgZ2V0V29ya2Zsb3dVc2FnZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vdGltaW5nXCIsXG4gICAgXSxcbiAgICBsaXN0QXJ0aWZhY3RzRm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL2FydGlmYWN0c1wiXSxcbiAgICBsaXN0RW52aXJvbm1lbnRTZWNyZXRzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9zZWNyZXRzXCIsXG4gICAgXSxcbiAgICBsaXN0RW52aXJvbm1lbnRWYXJpYWJsZXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L3ZhcmlhYmxlc1wiLFxuICAgIF0sXG4gICAgbGlzdEdpdGh1Ykhvc3RlZFJ1bm5lcnNJbkdyb3VwRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lci1ncm91cHMve3J1bm5lcl9ncm91cF9pZH0vaG9zdGVkLXJ1bm5lcnNcIixcbiAgICBdLFxuICAgIGxpc3RIb3N0ZWRSdW5uZXJzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVyc1wiXSxcbiAgICBsaXN0Sm9ic0ZvcldvcmtmbG93UnVuOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2pvYnNcIixcbiAgICBdLFxuICAgIGxpc3RKb2JzRm9yV29ya2Zsb3dSdW5BdHRlbXB0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L2F0dGVtcHRzL3thdHRlbXB0X251bWJlcn0vam9ic1wiLFxuICAgIF0sXG4gICAgbGlzdExhYmVsc0ZvclNlbGZIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIGxpc3RMYWJlbHNGb3JTZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIGxpc3RPcmdTZWNyZXRzOiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9zZWNyZXRzXCJdLFxuICAgIGxpc3RPcmdWYXJpYWJsZXM6IFtcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlc1wiXSxcbiAgICBsaXN0UmVwb09yZ2FuaXphdGlvblNlY3JldHM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL29yZ2FuaXphdGlvbi1zZWNyZXRzXCIsXG4gICAgXSxcbiAgICBsaXN0UmVwb09yZ2FuaXphdGlvblZhcmlhYmxlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvb3JnYW5pemF0aW9uLXZhcmlhYmxlc1wiLFxuICAgIF0sXG4gICAgbGlzdFJlcG9TZWNyZXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvc2VjcmV0c1wiXSxcbiAgICBsaXN0UmVwb1ZhcmlhYmxlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3ZhcmlhYmxlc1wiXSxcbiAgICBsaXN0UmVwb1dvcmtmbG93czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93c1wiXSxcbiAgICBsaXN0UnVubmVyQXBwbGljYXRpb25zRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzL2Rvd25sb2Fkc1wiXSxcbiAgICBsaXN0UnVubmVyQXBwbGljYXRpb25zRm9yUmVwbzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy9kb3dubG9hZHNcIixcbiAgICBdLFxuICAgIGxpc3RTZWxlY3RlZFJlcG9zRm9yT3JnU2VjcmV0OiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RTZWxlY3RlZFJlcG9zRm9yT3JnVmFyaWFibGU6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RTZWxlY3RlZFJlcG9zaXRvcmllc0VuYWJsZWRHaXRodWJBY3Rpb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFNlbGZIb3N0ZWRSdW5uZXJzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9ydW5uZXJzXCJdLFxuICAgIGxpc3RTZWxmSG9zdGVkUnVubmVyc0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5uZXJzXCJdLFxuICAgIGxpc3RXb3JrZmxvd1J1bkFydGlmYWN0czogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9hcnRpZmFjdHNcIixcbiAgICBdLFxuICAgIGxpc3RXb3JrZmxvd1J1bnM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L3J1bnNcIixcbiAgICBdLFxuICAgIGxpc3RXb3JrZmxvd1J1bnNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVuc1wiXSxcbiAgICByZVJ1bkpvYkZvcldvcmtmbG93UnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvam9icy97am9iX2lkfS9yZXJ1blwiLFxuICAgIF0sXG4gICAgcmVSdW5Xb3JrZmxvdzogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9ydW5zL3tydW5faWR9L3JlcnVuXCJdLFxuICAgIHJlUnVuV29ya2Zsb3dGYWlsZWRKb2JzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVucy97cnVuX2lkfS9yZXJ1bi1mYWlsZWQtam9ic1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlQWxsQ3VzdG9tTGFiZWxzRnJvbVNlbGZIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIHJlbW92ZUFsbEN1c3RvbUxhYmVsc0Zyb21TZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIHJlbW92ZUN1c3RvbUxhYmVsRnJvbVNlbGZIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHMve25hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVDdXN0b21MYWJlbEZyb21TZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHMve25hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVTZWxlY3RlZFJlcG9Gcm9tT3JnU2VjcmV0OiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9hY3Rpb25zL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICByZW1vdmVTZWxlY3RlZFJlcG9Gcm9tT3JnVmFyaWFibGU6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2FjdGlvbnMvdmFyaWFibGVzL3tuYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICByZXZpZXdDdXN0b21HYXRlc0ZvclJ1bjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vZGVwbG95bWVudF9wcm90ZWN0aW9uX3J1bGVcIixcbiAgICBdLFxuICAgIHJldmlld1BlbmRpbmdEZXBsb3ltZW50c0ZvclJ1bjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3J1bnMve3J1bl9pZH0vcGVuZGluZ19kZXBsb3ltZW50c1wiLFxuICAgIF0sXG4gICAgc2V0QWxsb3dlZEFjdGlvbnNPcmdhbml6YXRpb246IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvcGVybWlzc2lvbnMvc2VsZWN0ZWQtYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgc2V0QWxsb3dlZEFjdGlvbnNSZXBvc2l0b3J5OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYWN0aW9ucy9wZXJtaXNzaW9ucy9zZWxlY3RlZC1hY3Rpb25zXCIsXG4gICAgXSxcbiAgICBzZXRDdXN0b21MYWJlbHNGb3JTZWxmSG9zdGVkUnVubmVyRm9yT3JnOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3J1bm5lcnMve3J1bm5lcl9pZH0vbGFiZWxzXCIsXG4gICAgXSxcbiAgICBzZXRDdXN0b21MYWJlbHNGb3JTZWxmSG9zdGVkUnVubmVyRm9yUmVwbzogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcnVubmVycy97cnVubmVyX2lkfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIHNldEN1c3RvbU9pZGNTdWJDbGFpbUZvclJlcG86IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL29pZGMvY3VzdG9taXphdGlvbi9zdWJcIixcbiAgICBdLFxuICAgIHNldEdpdGh1YkFjdGlvbnNEZWZhdWx0V29ya2Zsb3dQZXJtaXNzaW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9ucy93b3JrZmxvd1wiLFxuICAgIF0sXG4gICAgc2V0R2l0aHViQWN0aW9uc0RlZmF1bHRXb3JrZmxvd1Blcm1pc3Npb25zUmVwb3NpdG9yeTogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnMvd29ya2Zsb3dcIixcbiAgICBdLFxuICAgIHNldEdpdGh1YkFjdGlvbnNQZXJtaXNzaW9uc09yZ2FuaXphdGlvbjogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vYWN0aW9ucy9wZXJtaXNzaW9uc1wiLFxuICAgIF0sXG4gICAgc2V0R2l0aHViQWN0aW9uc1Blcm1pc3Npb25zUmVwb3NpdG9yeTogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGlvbnMvcGVybWlzc2lvbnNcIixcbiAgICBdLFxuICAgIHNldFNlbGVjdGVkUmVwb3NGb3JPcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgc2V0U2VsZWN0ZWRSZXBvc0Zvck9yZ1ZhcmlhYmxlOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBzZXRTZWxlY3RlZFJlcG9zaXRvcmllc0VuYWJsZWRHaXRodWJBY3Rpb25zT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9hY3Rpb25zL3Blcm1pc3Npb25zL3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgc2V0V29ya2Zsb3dBY2Nlc3NUb1JlcG9zaXRvcnk6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3Blcm1pc3Npb25zL2FjY2Vzc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlRW52aXJvbm1lbnRWYXJpYWJsZTogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS92YXJpYWJsZXMve25hbWV9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVIb3N0ZWRSdW5uZXJGb3JPcmc6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vYWN0aW9ucy9ob3N0ZWQtcnVubmVycy97aG9zdGVkX3J1bm5lcl9pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZU9yZ1ZhcmlhYmxlOiBbXCJQQVRDSCAvb3Jncy97b3JnfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIl0sXG4gICAgdXBkYXRlUmVwb1ZhcmlhYmxlOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hY3Rpb25zL3ZhcmlhYmxlcy97bmFtZX1cIixcbiAgICBdLFxuICB9LFxuICBhY3Rpdml0eToge1xuICAgIGNoZWNrUmVwb0lzU3RhcnJlZEJ5QXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9zdGFycmVkL3tvd25lcn0ve3JlcG99XCJdLFxuICAgIGRlbGV0ZVJlcG9TdWJzY3JpcHRpb246IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vc3Vic2NyaXB0aW9uXCJdLFxuICAgIGRlbGV0ZVRocmVhZFN1YnNjcmlwdGlvbjogW1xuICAgICAgXCJERUxFVEUgL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfS9zdWJzY3JpcHRpb25cIixcbiAgICBdLFxuICAgIGdldEZlZWRzOiBbXCJHRVQgL2ZlZWRzXCJdLFxuICAgIGdldFJlcG9TdWJzY3JpcHRpb246IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3Vic2NyaXB0aW9uXCJdLFxuICAgIGdldFRocmVhZDogW1wiR0VUIC9ub3RpZmljYXRpb25zL3RocmVhZHMve3RocmVhZF9pZH1cIl0sXG4gICAgZ2V0VGhyZWFkU3Vic2NyaXB0aW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC9ub3RpZmljYXRpb25zL3RocmVhZHMve3RocmVhZF9pZH0vc3Vic2NyaXB0aW9uXCIsXG4gICAgXSxcbiAgICBsaXN0RXZlbnRzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ldmVudHNcIl0sXG4gICAgbGlzdE5vdGlmaWNhdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC9ub3RpZmljYXRpb25zXCJdLFxuICAgIGxpc3RPcmdFdmVudHNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZXZlbnRzL29yZ3Mve29yZ31cIixcbiAgICBdLFxuICAgIGxpc3RQdWJsaWNFdmVudHM6IFtcIkdFVCAvZXZlbnRzXCJdLFxuICAgIGxpc3RQdWJsaWNFdmVudHNGb3JSZXBvTmV0d29yazogW1wiR0VUIC9uZXR3b3Jrcy97b3duZXJ9L3tyZXBvfS9ldmVudHNcIl0sXG4gICAgbGlzdFB1YmxpY0V2ZW50c0ZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ldmVudHMvcHVibGljXCJdLFxuICAgIGxpc3RQdWJsaWNPcmdFdmVudHM6IFtcIkdFVCAvb3Jncy97b3JnfS9ldmVudHNcIl0sXG4gICAgbGlzdFJlY2VpdmVkRXZlbnRzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlY2VpdmVkX2V2ZW50c1wiXSxcbiAgICBsaXN0UmVjZWl2ZWRQdWJsaWNFdmVudHNGb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9yZWNlaXZlZF9ldmVudHMvcHVibGljXCIsXG4gICAgXSxcbiAgICBsaXN0UmVwb0V2ZW50czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ldmVudHNcIl0sXG4gICAgbGlzdFJlcG9Ob3RpZmljYXRpb25zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ub3RpZmljYXRpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0UmVwb3NTdGFycmVkQnlBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3N0YXJyZWRcIl0sXG4gICAgbGlzdFJlcG9zU3RhcnJlZEJ5VXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3N0YXJyZWRcIl0sXG4gICAgbGlzdFJlcG9zV2F0Y2hlZEJ5VXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3N1YnNjcmlwdGlvbnNcIl0sXG4gICAgbGlzdFN0YXJnYXplcnNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXJnYXplcnNcIl0sXG4gICAgbGlzdFdhdGNoZWRSZXBvc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvc3Vic2NyaXB0aW9uc1wiXSxcbiAgICBsaXN0V2F0Y2hlcnNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N1YnNjcmliZXJzXCJdLFxuICAgIG1hcmtOb3RpZmljYXRpb25zQXNSZWFkOiBbXCJQVVQgL25vdGlmaWNhdGlvbnNcIl0sXG4gICAgbWFya1JlcG9Ob3RpZmljYXRpb25zQXNSZWFkOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L25vdGlmaWNhdGlvbnNcIl0sXG4gICAgbWFya1RocmVhZEFzRG9uZTogW1wiREVMRVRFIC9ub3RpZmljYXRpb25zL3RocmVhZHMve3RocmVhZF9pZH1cIl0sXG4gICAgbWFya1RocmVhZEFzUmVhZDogW1wiUEFUQ0ggL25vdGlmaWNhdGlvbnMvdGhyZWFkcy97dGhyZWFkX2lkfVwiXSxcbiAgICBzZXRSZXBvU3Vic2NyaXB0aW9uOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N1YnNjcmlwdGlvblwiXSxcbiAgICBzZXRUaHJlYWRTdWJzY3JpcHRpb246IFtcbiAgICAgIFwiUFVUIC9ub3RpZmljYXRpb25zL3RocmVhZHMve3RocmVhZF9pZH0vc3Vic2NyaXB0aW9uXCIsXG4gICAgXSxcbiAgICBzdGFyUmVwb0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQVVQgL3VzZXIvc3RhcnJlZC97b3duZXJ9L3tyZXBvfVwiXSxcbiAgICB1bnN0YXJSZXBvRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9zdGFycmVkL3tvd25lcn0ve3JlcG99XCJdLFxuICB9LFxuICBhcHBzOiB7XG4gICAgYWRkUmVwb1RvSW5zdGFsbGF0aW9uOiBbXG4gICAgICBcIlBVVCAvdXNlci9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJhcHBzXCIsIFwiYWRkUmVwb1RvSW5zdGFsbGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGFkZFJlcG9Ub0luc3RhbGxhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBVVCAvdXNlci9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGNoZWNrVG9rZW46IFtcIlBPU1QgL2FwcGxpY2F0aW9ucy97Y2xpZW50X2lkfS90b2tlblwiXSxcbiAgICBjcmVhdGVGcm9tTWFuaWZlc3Q6IFtcIlBPU1QgL2FwcC1tYW5pZmVzdHMve2NvZGV9L2NvbnZlcnNpb25zXCJdLFxuICAgIGNyZWF0ZUluc3RhbGxhdGlvbkFjY2Vzc1Rva2VuOiBbXG4gICAgICBcIlBPU1QgL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L2FjY2Vzc190b2tlbnNcIixcbiAgICBdLFxuICAgIGRlbGV0ZUF1dGhvcml6YXRpb246IFtcIkRFTEVURSAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L2dyYW50XCJdLFxuICAgIGRlbGV0ZUluc3RhbGxhdGlvbjogW1wiREVMRVRFIC9hcHAvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfVwiXSxcbiAgICBkZWxldGVUb2tlbjogW1wiREVMRVRFIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW5cIl0sXG4gICAgZ2V0QXV0aGVudGljYXRlZDogW1wiR0VUIC9hcHBcIl0sXG4gICAgZ2V0QnlTbHVnOiBbXCJHRVQgL2FwcHMve2FwcF9zbHVnfVwiXSxcbiAgICBnZXRJbnN0YWxsYXRpb246IFtcIkdFVCAvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH1cIl0sXG4gICAgZ2V0T3JnSW5zdGFsbGF0aW9uOiBbXCJHRVQgL29yZ3Mve29yZ30vaW5zdGFsbGF0aW9uXCJdLFxuICAgIGdldFJlcG9JbnN0YWxsYXRpb246IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaW5zdGFsbGF0aW9uXCJdLFxuICAgIGdldFN1YnNjcmlwdGlvblBsYW5Gb3JBY2NvdW50OiBbXG4gICAgICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9hY2NvdW50cy97YWNjb3VudF9pZH1cIixcbiAgICBdLFxuICAgIGdldFN1YnNjcmlwdGlvblBsYW5Gb3JBY2NvdW50U3R1YmJlZDogW1xuICAgICAgXCJHRVQgL21hcmtldHBsYWNlX2xpc3Rpbmcvc3R1YmJlZC9hY2NvdW50cy97YWNjb3VudF9pZH1cIixcbiAgICBdLFxuICAgIGdldFVzZXJJbnN0YWxsYXRpb246IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9pbnN0YWxsYXRpb25cIl0sXG4gICAgZ2V0V2ViaG9va0NvbmZpZ0ZvckFwcDogW1wiR0VUIC9hcHAvaG9vay9jb25maWdcIl0sXG4gICAgZ2V0V2ViaG9va0RlbGl2ZXJ5OiBbXCJHRVQgL2FwcC9ob29rL2RlbGl2ZXJpZXMve2RlbGl2ZXJ5X2lkfVwiXSxcbiAgICBsaXN0QWNjb3VudHNGb3JQbGFuOiBbXCJHRVQgL21hcmtldHBsYWNlX2xpc3RpbmcvcGxhbnMve3BsYW5faWR9L2FjY291bnRzXCJdLFxuICAgIGxpc3RBY2NvdW50c0ZvclBsYW5TdHViYmVkOiBbXG4gICAgICBcIkdFVCAvbWFya2V0cGxhY2VfbGlzdGluZy9zdHViYmVkL3BsYW5zL3twbGFuX2lkfS9hY2NvdW50c1wiLFxuICAgIF0sXG4gICAgbGlzdEluc3RhbGxhdGlvblJlcG9zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBsaXN0SW5zdGFsbGF0aW9uUmVxdWVzdHNGb3JBdXRoZW50aWNhdGVkQXBwOiBbXG4gICAgICBcIkdFVCAvYXBwL2luc3RhbGxhdGlvbi1yZXF1ZXN0c1wiLFxuICAgIF0sXG4gICAgbGlzdEluc3RhbGxhdGlvbnM6IFtcIkdFVCAvYXBwL2luc3RhbGxhdGlvbnNcIl0sXG4gICAgbGlzdEluc3RhbGxhdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2luc3RhbGxhdGlvbnNcIl0sXG4gICAgbGlzdFBsYW5zOiBbXCJHRVQgL21hcmtldHBsYWNlX2xpc3RpbmcvcGxhbnNcIl0sXG4gICAgbGlzdFBsYW5zU3R1YmJlZDogW1wiR0VUIC9tYXJrZXRwbGFjZV9saXN0aW5nL3N0dWJiZWQvcGxhbnNcIl0sXG4gICAgbGlzdFJlcG9zQWNjZXNzaWJsZVRvSW5zdGFsbGF0aW9uOiBbXCJHRVQgL2luc3RhbGxhdGlvbi9yZXBvc2l0b3JpZXNcIl0sXG4gICAgbGlzdFN1YnNjcmlwdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL21hcmtldHBsYWNlX3B1cmNoYXNlc1wiXSxcbiAgICBsaXN0U3Vic2NyaXB0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyU3R1YmJlZDogW1xuICAgICAgXCJHRVQgL3VzZXIvbWFya2V0cGxhY2VfcHVyY2hhc2VzL3N0dWJiZWRcIixcbiAgICBdLFxuICAgIGxpc3RXZWJob29rRGVsaXZlcmllczogW1wiR0VUIC9hcHAvaG9vay9kZWxpdmVyaWVzXCJdLFxuICAgIHJlZGVsaXZlcldlYmhvb2tEZWxpdmVyeTogW1xuICAgICAgXCJQT1NUIC9hcHAvaG9vay9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH0vYXR0ZW1wdHNcIixcbiAgICBdLFxuICAgIHJlbW92ZVJlcG9Gcm9tSW5zdGFsbGF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJhcHBzXCIsIFwicmVtb3ZlUmVwb0Zyb21JbnN0YWxsYXRpb25Gb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgcmVtb3ZlUmVwb0Zyb21JbnN0YWxsYXRpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvaW5zdGFsbGF0aW9ucy97aW5zdGFsbGF0aW9uX2lkfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICByZXNldFRva2VuOiBbXCJQQVRDSCAvYXBwbGljYXRpb25zL3tjbGllbnRfaWR9L3Rva2VuXCJdLFxuICAgIHJldm9rZUluc3RhbGxhdGlvbkFjY2Vzc1Rva2VuOiBbXCJERUxFVEUgL2luc3RhbGxhdGlvbi90b2tlblwiXSxcbiAgICBzY29wZVRva2VuOiBbXCJQT1NUIC9hcHBsaWNhdGlvbnMve2NsaWVudF9pZH0vdG9rZW4vc2NvcGVkXCJdLFxuICAgIHN1c3BlbmRJbnN0YWxsYXRpb246IFtcIlBVVCAvYXBwL2luc3RhbGxhdGlvbnMve2luc3RhbGxhdGlvbl9pZH0vc3VzcGVuZGVkXCJdLFxuICAgIHVuc3VzcGVuZEluc3RhbGxhdGlvbjogW1xuICAgICAgXCJERUxFVEUgL2FwcC9pbnN0YWxsYXRpb25zL3tpbnN0YWxsYXRpb25faWR9L3N1c3BlbmRlZFwiLFxuICAgIF0sXG4gICAgdXBkYXRlV2ViaG9va0NvbmZpZ0ZvckFwcDogW1wiUEFUQ0ggL2FwcC9ob29rL2NvbmZpZ1wiXSxcbiAgfSxcbiAgYmlsbGluZzoge1xuICAgIGdldEdpdGh1YkFjdGlvbnNCaWxsaW5nT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvYmlsbGluZy9hY3Rpb25zXCJdLFxuICAgIGdldEdpdGh1YkFjdGlvbnNCaWxsaW5nVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc2V0dGluZ3MvYmlsbGluZy9hY3Rpb25zXCIsXG4gICAgXSxcbiAgICBnZXRHaXRodWJCaWxsaW5nVXNhZ2VSZXBvcnRPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdhbml6YXRpb25zL3tvcmd9L3NldHRpbmdzL2JpbGxpbmcvdXNhZ2VcIixcbiAgICBdLFxuICAgIGdldEdpdGh1YlBhY2thZ2VzQmlsbGluZ09yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3NldHRpbmdzL2JpbGxpbmcvcGFja2FnZXNcIl0sXG4gICAgZ2V0R2l0aHViUGFja2FnZXNCaWxsaW5nVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc2V0dGluZ3MvYmlsbGluZy9wYWNrYWdlc1wiLFxuICAgIF0sXG4gICAgZ2V0U2hhcmVkU3RvcmFnZUJpbGxpbmdPcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3NldHRpbmdzL2JpbGxpbmcvc2hhcmVkLXN0b3JhZ2VcIixcbiAgICBdLFxuICAgIGdldFNoYXJlZFN0b3JhZ2VCaWxsaW5nVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vc2V0dGluZ3MvYmlsbGluZy9zaGFyZWQtc3RvcmFnZVwiLFxuICAgIF0sXG4gIH0sXG4gIGNoZWNrczoge1xuICAgIGNyZWF0ZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stcnVuc1wiXSxcbiAgICBjcmVhdGVTdWl0ZTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY2hlY2stc3VpdGVzXCJdLFxuICAgIGdldDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1ydW5zL3tjaGVja19ydW5faWR9XCJdLFxuICAgIGdldFN1aXRlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXN1aXRlcy97Y2hlY2tfc3VpdGVfaWR9XCJdLFxuICAgIGxpc3RBbm5vdGF0aW9uczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXJ1bnMve2NoZWNrX3J1bl9pZH0vYW5ub3RhdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RGb3JSZWY6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9jaGVjay1ydW5zXCJdLFxuICAgIGxpc3RGb3JTdWl0ZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXN1aXRlcy97Y2hlY2tfc3VpdGVfaWR9L2NoZWNrLXJ1bnNcIixcbiAgICBdLFxuICAgIGxpc3RTdWl0ZXNGb3JSZWY6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfS9jaGVjay1zdWl0ZXNcIl0sXG4gICAgcmVyZXF1ZXN0UnVuOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXJ1bnMve2NoZWNrX3J1bl9pZH0vcmVyZXF1ZXN0XCIsXG4gICAgXSxcbiAgICByZXJlcXVlc3RTdWl0ZTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1zdWl0ZXMve2NoZWNrX3N1aXRlX2lkfS9yZXJlcXVlc3RcIixcbiAgICBdLFxuICAgIHNldFN1aXRlc1ByZWZlcmVuY2VzOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jaGVjay1zdWl0ZXMvcHJlZmVyZW5jZXNcIixcbiAgICBdLFxuICAgIHVwZGF0ZTogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2NoZWNrLXJ1bnMve2NoZWNrX3J1bl9pZH1cIl0sXG4gIH0sXG4gIGNvZGVTY2FubmluZzoge1xuICAgIGNvbW1pdEF1dG9maXg6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9hbGVydHMve2FsZXJ0X251bWJlcn0vYXV0b2ZpeC9jb21taXRzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVBdXRvZml4OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2F1dG9maXhcIixcbiAgICBdLFxuICAgIGNyZWF0ZVZhcmlhbnRBbmFseXNpczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2NvZGVxbC92YXJpYW50LWFuYWx5c2VzXCIsXG4gICAgXSxcbiAgICBkZWxldGVBbmFseXNpczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYW5hbHlzZXMve2FuYWx5c2lzX2lkfXs/Y29uZmlybV9kZWxldGV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVDb2RlcWxEYXRhYmFzZTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvY29kZXFsL2RhdGFiYXNlcy97bGFuZ3VhZ2V9XCIsXG4gICAgXSxcbiAgICBnZXRBbGVydDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZFBhcmFtZXRlcnM6IHsgYWxlcnRfaWQ6IFwiYWxlcnRfbnVtYmVyXCIgfSB9LFxuICAgIF0sXG4gICAgZ2V0QW5hbHlzaXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FuYWx5c2VzL3thbmFseXNpc19pZH1cIixcbiAgICBdLFxuICAgIGdldEF1dG9maXg6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfS9hdXRvZml4XCIsXG4gICAgXSxcbiAgICBnZXRDb2RlcWxEYXRhYmFzZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvY29kZXFsL2RhdGFiYXNlcy97bGFuZ3VhZ2V9XCIsXG4gICAgXSxcbiAgICBnZXREZWZhdWx0U2V0dXA6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9kZWZhdWx0LXNldHVwXCJdLFxuICAgIGdldFNhcmlmOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvc2FyaWZzL3tzYXJpZl9pZH1cIl0sXG4gICAgZ2V0VmFyaWFudEFuYWx5c2lzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZS1zY2FubmluZy9jb2RlcWwvdmFyaWFudC1hbmFseXNlcy97Y29kZXFsX3ZhcmlhbnRfYW5hbHlzaXNfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRWYXJpYW50QW5hbHlzaXNSZXBvVGFzazogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvY29kZXFsL3ZhcmlhbnQtYW5hbHlzZXMve2NvZGVxbF92YXJpYW50X2FuYWx5c2lzX2lkfS9yZXBvcy97cmVwb19vd25lcn0ve3JlcG9fbmFtZX1cIixcbiAgICBdLFxuICAgIGxpc3RBbGVydEluc3RhbmNlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9L2luc3RhbmNlc1wiLFxuICAgIF0sXG4gICAgbGlzdEFsZXJ0c0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2Nhbm5pbmcvYWxlcnRzXCJdLFxuICAgIGxpc3RBbGVydHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGUtc2Nhbm5pbmcvYWxlcnRzXCJdLFxuICAgIGxpc3RBbGVydHNJbnN0YW5jZXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfS9pbnN0YW5jZXNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJjb2RlU2Nhbm5pbmdcIiwgXCJsaXN0QWxlcnRJbnN0YW5jZXNcIl0gfSxcbiAgICBdLFxuICAgIGxpc3RDb2RlcWxEYXRhYmFzZXM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2NvZGVxbC9kYXRhYmFzZXNcIixcbiAgICBdLFxuICAgIGxpc3RSZWNlbnRBbmFseXNlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FuYWx5c2VzXCJdLFxuICAgIHVwZGF0ZUFsZXJ0OiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgdXBkYXRlRGVmYXVsdFNldHVwOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL2RlZmF1bHQtc2V0dXBcIixcbiAgICBdLFxuICAgIHVwbG9hZFNhcmlmOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNjYW5uaW5nL3Nhcmlmc1wiXSxcbiAgfSxcbiAgY29kZVNlY3VyaXR5OiB7XG4gICAgYXR0YWNoQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L2F0dGFjaFwiLFxuICAgIF0sXG4gICAgYXR0YWNoRW50ZXJwcmlzZUNvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiUE9TVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L2F0dGFjaFwiLFxuICAgIF0sXG4gICAgY3JlYXRlQ29uZmlndXJhdGlvbjogW1wiUE9TVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zXCJdLFxuICAgIGNyZWF0ZUNvbmZpZ3VyYXRpb25Gb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIlBPU1QgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zXCIsXG4gICAgXSxcbiAgICBkZWxldGVDb25maWd1cmF0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlQ29uZmlndXJhdGlvbkZvckVudGVycHJpc2U6IFtcbiAgICAgIFwiREVMRVRFIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGRldGFjaENvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMvZGV0YWNoXCIsXG4gICAgXSxcbiAgICBnZXRDb25maWd1cmF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0Q29uZmlndXJhdGlvbkZvclJlcG9zaXRvcnk6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2RlLXNlY3VyaXR5LWNvbmZpZ3VyYXRpb25cIixcbiAgICBdLFxuICAgIGdldENvbmZpZ3VyYXRpb25zRm9yRW50ZXJwcmlzZTogW1xuICAgICAgXCJHRVQgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zXCIsXG4gICAgXSxcbiAgICBnZXRDb25maWd1cmF0aW9uc0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnNcIl0sXG4gICAgZ2V0RGVmYXVsdENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL2RlZmF1bHRzXCIsXG4gICAgXSxcbiAgICBnZXREZWZhdWx0Q29uZmlndXJhdGlvbnNGb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMvZGVmYXVsdHNcIixcbiAgICBdLFxuICAgIGdldFJlcG9zaXRvcmllc0ZvckNvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgZ2V0UmVwb3NpdG9yaWVzRm9yRW50ZXJwcmlzZUNvbmZpZ3VyYXRpb246IFtcbiAgICAgIFwiR0VUIC9lbnRlcnByaXNlcy97ZW50ZXJwcmlzZX0vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICBnZXRTaW5nbGVDb25maWd1cmF0aW9uRm9yRW50ZXJwcmlzZTogW1xuICAgICAgXCJHRVQgL2VudGVycHJpc2VzL3tlbnRlcnByaXNlfS9jb2RlLXNlY3VyaXR5L2NvbmZpZ3VyYXRpb25zL3tjb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgc2V0Q29uZmlndXJhdGlvbkFzRGVmYXVsdDogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vY29kZS1zZWN1cml0eS9jb25maWd1cmF0aW9ucy97Y29uZmlndXJhdGlvbl9pZH0vZGVmYXVsdHNcIixcbiAgICBdLFxuICAgIHNldENvbmZpZ3VyYXRpb25Bc0RlZmF1bHRGb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIlBVVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9L2RlZmF1bHRzXCIsXG4gICAgXSxcbiAgICB1cGRhdGVDb25maWd1cmF0aW9uOiBbXG4gICAgICBcIlBBVENIIC9vcmdzL3tvcmd9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVFbnRlcnByaXNlQ29uZmlndXJhdGlvbjogW1xuICAgICAgXCJQQVRDSCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2NvZGUtc2VjdXJpdHkvY29uZmlndXJhdGlvbnMve2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgfSxcbiAgY29kZXNPZkNvbmR1Y3Q6IHtcbiAgICBnZXRBbGxDb2Rlc09mQ29uZHVjdDogW1wiR0VUIC9jb2Rlc19vZl9jb25kdWN0XCJdLFxuICAgIGdldENvbmR1Y3RDb2RlOiBbXCJHRVQgL2NvZGVzX29mX2NvbmR1Y3Qve2tleX1cIl0sXG4gIH0sXG4gIGNvZGVzcGFjZXM6IHtcbiAgICBhZGRSZXBvc2l0b3J5Rm9yU2VjcmV0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUFVUIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGFkZFNlbGVjdGVkUmVwb1RvT3JnU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBjaGVja1Blcm1pc3Npb25zRm9yRGV2Y29udGFpbmVyOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9wZXJtaXNzaW9uc19jaGVja1wiLFxuICAgIF0sXG4gICAgY29kZXNwYWNlTWFjaGluZXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9L21hY2hpbmVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9jb2Rlc3BhY2VzXCJdLFxuICAgIGNyZWF0ZU9yVXBkYXRlT3JnU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVSZXBvU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yVXBkYXRlU2VjcmV0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUFVUIC91c2VyL2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGVXaXRoUHJGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvZGVzcGFjZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZVdpdGhSZXBvRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29kZXNwYWNlc1wiLFxuICAgIF0sXG4gICAgZGVsZXRlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX1cIl0sXG4gICAgZGVsZXRlRnJvbU9yZ2FuaXphdGlvbjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vbWVtYmVycy97dXNlcm5hbWV9L2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlT3JnU2VjcmV0OiBbXCJERUxFVEUgL29yZ3Mve29yZ30vY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZGVsZXRlUmVwb1NlY3JldDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVTZWNyZXRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGV4cG9ydEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBPU1QgL3VzZXIvY29kZXNwYWNlcy97Y29kZXNwYWNlX25hbWV9L2V4cG9ydHNcIixcbiAgICBdLFxuICAgIGdldENvZGVzcGFjZXNGb3JVc2VySW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L21lbWJlcnMve3VzZXJuYW1lfS9jb2Rlc3BhY2VzXCIsXG4gICAgXSxcbiAgICBnZXRFeHBvcnREZXRhaWxzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfS9leHBvcnRzL3tleHBvcnRfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfVwiXSxcbiAgICBnZXRPcmdQdWJsaWNLZXk6IFtcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMvcHVibGljLWtleVwiXSxcbiAgICBnZXRPcmdTZWNyZXQ6IFtcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBnZXRQdWJsaWNLZXlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzL3B1YmxpYy1rZXlcIixcbiAgICBdLFxuICAgIGdldFJlcG9QdWJsaWNLZXk6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL3NlY3JldHMvcHVibGljLWtleVwiLFxuICAgIF0sXG4gICAgZ2V0UmVwb1NlY3JldDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRTZWNyZXRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvY29kZXNwYWNlcy9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGxpc3REZXZjb250YWluZXJzSW5SZXBvc2l0b3J5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL2RldmNvbnRhaW5lcnNcIixcbiAgICBdLFxuICAgIGxpc3RGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2NvZGVzcGFjZXNcIl0sXG4gICAgbGlzdEluT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZFBhcmFtZXRlcnM6IHsgb3JnX2lkOiBcIm9yZ1wiIH0gfSxcbiAgICBdLFxuICAgIGxpc3RJblJlcG9zaXRvcnlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXNcIixcbiAgICBdLFxuICAgIGxpc3RPcmdTZWNyZXRzOiBbXCJHRVQgL29yZ3Mve29yZ30vY29kZXNwYWNlcy9zZWNyZXRzXCJdLFxuICAgIGxpc3RSZXBvU2VjcmV0czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlc3BhY2VzL3NlY3JldHNcIl0sXG4gICAgbGlzdFJlcG9zaXRvcmllc0ZvclNlY3JldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RTZWNyZXRzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHNcIl0sXG4gICAgbGlzdFNlbGVjdGVkUmVwb3NGb3JPcmdTZWNyZXQ6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgcHJlRmxpZ2h0V2l0aFJlcG9Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvbmV3XCIsXG4gICAgXSxcbiAgICBwdWJsaXNoRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX0vcHVibGlzaFwiLFxuICAgIF0sXG4gICAgcmVtb3ZlUmVwb3NpdG9yeUZvclNlY3JldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICByZW1vdmVTZWxlY3RlZFJlcG9Gcm9tT3JnU2VjcmV0OiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICByZXBvTWFjaGluZXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvZGVzcGFjZXMvbWFjaGluZXNcIixcbiAgICBdLFxuICAgIHNldFJlcG9zaXRvcmllc0ZvclNlY3JldEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBVVCAvdXNlci9jb2Rlc3BhY2VzL3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIHNldFNlbGVjdGVkUmVwb3NGb3JPcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2NvZGVzcGFjZXMvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgc3RhcnRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX0vc3RhcnRcIl0sXG4gICAgc3RvcEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfS9zdG9wXCJdLFxuICAgIHN0b3BJbk9yZ2FuaXphdGlvbjogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L21lbWJlcnMve3VzZXJuYW1lfS9jb2Rlc3BhY2VzL3tjb2Rlc3BhY2VfbmFtZX0vc3RvcFwiLFxuICAgIF0sXG4gICAgdXBkYXRlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBBVENIIC91c2VyL2NvZGVzcGFjZXMve2NvZGVzcGFjZV9uYW1lfVwiXSxcbiAgfSxcbiAgY29waWxvdDoge1xuICAgIGFkZENvcGlsb3RTZWF0c0ZvclRlYW1zOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vY29waWxvdC9iaWxsaW5nL3NlbGVjdGVkX3RlYW1zXCIsXG4gICAgXSxcbiAgICBhZGRDb3BpbG90U2VhdHNGb3JVc2VyczogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZy9zZWxlY3RlZF91c2Vyc1wiLFxuICAgIF0sXG4gICAgY2FuY2VsQ29waWxvdFNlYXRBc3NpZ25tZW50Rm9yVGVhbXM6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZy9zZWxlY3RlZF90ZWFtc1wiLFxuICAgIF0sXG4gICAgY2FuY2VsQ29waWxvdFNlYXRBc3NpZ25tZW50Rm9yVXNlcnM6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L2NvcGlsb3QvYmlsbGluZy9zZWxlY3RlZF91c2Vyc1wiLFxuICAgIF0sXG4gICAgY29waWxvdE1ldHJpY3NGb3JPcmdhbml6YXRpb246IFtcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L21ldHJpY3NcIl0sXG4gICAgY29waWxvdE1ldHJpY3NGb3JUZWFtOiBbXCJHRVQgL29yZ3Mve29yZ30vdGVhbS97dGVhbV9zbHVnfS9jb3BpbG90L21ldHJpY3NcIl0sXG4gICAgZ2V0Q29waWxvdE9yZ2FuaXphdGlvbkRldGFpbHM6IFtcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L2JpbGxpbmdcIl0sXG4gICAgZ2V0Q29waWxvdFNlYXREZXRhaWxzRm9yVXNlcjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vbWVtYmVycy97dXNlcm5hbWV9L2NvcGlsb3RcIixcbiAgICBdLFxuICAgIGxpc3RDb3BpbG90U2VhdHM6IFtcIkdFVCAvb3Jncy97b3JnfS9jb3BpbG90L2JpbGxpbmcvc2VhdHNcIl0sXG4gICAgdXNhZ2VNZXRyaWNzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vY29waWxvdC91c2FnZVwiXSxcbiAgICB1c2FnZU1ldHJpY3NGb3JUZWFtOiBbXCJHRVQgL29yZ3Mve29yZ30vdGVhbS97dGVhbV9zbHVnfS9jb3BpbG90L3VzYWdlXCJdLFxuICB9LFxuICBkZXBlbmRhYm90OiB7XG4gICAgYWRkU2VsZWN0ZWRSZXBvVG9PcmdTZWNyZXQ6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9L3JlcG9zaXRvcmllcy97cmVwb3NpdG9yeV9pZH1cIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yVXBkYXRlT3JnU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVSZXBvU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZU9yZ1NlY3JldDogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2RlcGVuZGFib3Qvc2VjcmV0cy97c2VjcmV0X25hbWV9XCJdLFxuICAgIGRlbGV0ZVJlcG9TZWNyZXQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0QWxlcnQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9hbGVydHMve2FsZXJ0X251bWJlcn1cIl0sXG4gICAgZ2V0T3JnUHVibGljS2V5OiBbXCJHRVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3B1YmxpYy1rZXlcIl0sXG4gICAgZ2V0T3JnU2VjcmV0OiBbXCJHRVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIl0sXG4gICAgZ2V0UmVwb1B1YmxpY0tleTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGFib3Qvc2VjcmV0cy9wdWJsaWMta2V5XCIsXG4gICAgXSxcbiAgICBnZXRSZXBvU2VjcmV0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIixcbiAgICBdLFxuICAgIGxpc3RBbGVydHNGb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L2RlcGVuZGFib3QvYWxlcnRzXCIsXG4gICAgXSxcbiAgICBsaXN0QWxlcnRzRm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9hbGVydHNcIl0sXG4gICAgbGlzdEFsZXJ0c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kYWJvdC9hbGVydHNcIl0sXG4gICAgbGlzdE9yZ1NlY3JldHM6IFtcIkdFVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHNcIl0sXG4gICAgbGlzdFJlcG9TZWNyZXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGVuZGFib3Qvc2VjcmV0c1wiXSxcbiAgICBsaXN0U2VsZWN0ZWRSZXBvc0Zvck9yZ1NlY3JldDogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vZGVwZW5kYWJvdC9zZWNyZXRzL3tzZWNyZXRfbmFtZX0vcmVwb3NpdG9yaWVzXCIsXG4gICAgXSxcbiAgICByZW1vdmVTZWxlY3RlZFJlcG9Gcm9tT3JnU2VjcmV0OiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXMve3JlcG9zaXRvcnlfaWR9XCIsXG4gICAgXSxcbiAgICBzZXRTZWxlY3RlZFJlcG9zRm9yT3JnU2VjcmV0OiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9kZXBlbmRhYm90L3NlY3JldHMve3NlY3JldF9uYW1lfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIHVwZGF0ZUFsZXJ0OiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRhYm90L2FsZXJ0cy97YWxlcnRfbnVtYmVyfVwiLFxuICAgIF0sXG4gIH0sXG4gIGRlcGVuZGVuY3lHcmFwaDoge1xuICAgIGNyZWF0ZVJlcG9zaXRvcnlTbmFwc2hvdDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBlbmRlbmN5LWdyYXBoL3NuYXBzaG90c1wiLFxuICAgIF0sXG4gICAgZGlmZlJhbmdlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kZW5jeS1ncmFwaC9jb21wYXJlL3tiYXNlaGVhZH1cIixcbiAgICBdLFxuICAgIGV4cG9ydFNib206IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwZW5kZW5jeS1ncmFwaC9zYm9tXCJdLFxuICB9LFxuICBlbW9qaXM6IHsgZ2V0OiBbXCJHRVQgL2Vtb2ppc1wiXSB9LFxuICBnaXN0czoge1xuICAgIGNoZWNrSXNTdGFycmVkOiBbXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9zdGFyXCJdLFxuICAgIGNyZWF0ZTogW1wiUE9TVCAvZ2lzdHNcIl0sXG4gICAgY3JlYXRlQ29tbWVudDogW1wiUE9TVCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1lbnRzXCJdLFxuICAgIGRlbGV0ZTogW1wiREVMRVRFIC9naXN0cy97Z2lzdF9pZH1cIl0sXG4gICAgZGVsZXRlQ29tbWVudDogW1wiREVMRVRFIC9naXN0cy97Z2lzdF9pZH0vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIGZvcms6IFtcIlBPU1QgL2dpc3RzL3tnaXN0X2lkfS9mb3Jrc1wiXSxcbiAgICBnZXQ6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9XCJdLFxuICAgIGdldENvbW1lbnQ6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1lbnRzL3tjb21tZW50X2lkfVwiXSxcbiAgICBnZXRSZXZpc2lvbjogW1wiR0VUIC9naXN0cy97Z2lzdF9pZH0ve3NoYX1cIl0sXG4gICAgbGlzdDogW1wiR0VUIC9naXN0c1wiXSxcbiAgICBsaXN0Q29tbWVudHM6IFtcIkdFVCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1lbnRzXCJdLFxuICAgIGxpc3RDb21taXRzOiBbXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9jb21taXRzXCJdLFxuICAgIGxpc3RGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZ2lzdHNcIl0sXG4gICAgbGlzdEZvcmtzOiBbXCJHRVQgL2dpc3RzL3tnaXN0X2lkfS9mb3Jrc1wiXSxcbiAgICBsaXN0UHVibGljOiBbXCJHRVQgL2dpc3RzL3B1YmxpY1wiXSxcbiAgICBsaXN0U3RhcnJlZDogW1wiR0VUIC9naXN0cy9zdGFycmVkXCJdLFxuICAgIHN0YXI6IFtcIlBVVCAvZ2lzdHMve2dpc3RfaWR9L3N0YXJcIl0sXG4gICAgdW5zdGFyOiBbXCJERUxFVEUgL2dpc3RzL3tnaXN0X2lkfS9zdGFyXCJdLFxuICAgIHVwZGF0ZTogW1wiUEFUQ0ggL2dpc3RzL3tnaXN0X2lkfVwiXSxcbiAgICB1cGRhdGVDb21tZW50OiBbXCJQQVRDSCAvZ2lzdHMve2dpc3RfaWR9L2NvbW1lbnRzL3tjb21tZW50X2lkfVwiXSxcbiAgfSxcbiAgZ2l0OiB7XG4gICAgY3JlYXRlQmxvYjogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L2Jsb2JzXCJdLFxuICAgIGNyZWF0ZUNvbW1pdDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L2NvbW1pdHNcIl0sXG4gICAgY3JlYXRlUmVmOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvcmVmc1wiXSxcbiAgICBjcmVhdGVUYWc6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC90YWdzXCJdLFxuICAgIGNyZWF0ZVRyZWU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC90cmVlc1wiXSxcbiAgICBkZWxldGVSZWY6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L3JlZnMve3JlZn1cIl0sXG4gICAgZ2V0QmxvYjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvYmxvYnMve2ZpbGVfc2hhfVwiXSxcbiAgICBnZXRDb21taXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZ2l0L2NvbW1pdHMve2NvbW1pdF9zaGF9XCJdLFxuICAgIGdldFJlZjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvcmVmL3tyZWZ9XCJdLFxuICAgIGdldFRhZzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvdGFncy97dGFnX3NoYX1cIl0sXG4gICAgZ2V0VHJlZTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9naXQvdHJlZXMve3RyZWVfc2hhfVwiXSxcbiAgICBsaXN0TWF0Y2hpbmdSZWZzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC9tYXRjaGluZy1yZWZzL3tyZWZ9XCJdLFxuICAgIHVwZGF0ZVJlZjogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2dpdC9yZWZzL3tyZWZ9XCJdLFxuICB9LFxuICBnaXRpZ25vcmU6IHtcbiAgICBnZXRBbGxUZW1wbGF0ZXM6IFtcIkdFVCAvZ2l0aWdub3JlL3RlbXBsYXRlc1wiXSxcbiAgICBnZXRUZW1wbGF0ZTogW1wiR0VUIC9naXRpZ25vcmUvdGVtcGxhdGVzL3tuYW1lfVwiXSxcbiAgfSxcbiAgaG9zdGVkQ29tcHV0ZToge1xuICAgIGNyZWF0ZU5ldHdvcmtDb25maWd1cmF0aW9uRm9yT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vc2V0dGluZ3MvbmV0d29yay1jb25maWd1cmF0aW9uc1wiLFxuICAgIF0sXG4gICAgZGVsZXRlTmV0d29ya0NvbmZpZ3VyYXRpb25Gcm9tT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLWNvbmZpZ3VyYXRpb25zL3tuZXR3b3JrX2NvbmZpZ3VyYXRpb25faWR9XCIsXG4gICAgXSxcbiAgICBnZXROZXR3b3JrQ29uZmlndXJhdGlvbkZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvbmV0d29yay1jb25maWd1cmF0aW9ucy97bmV0d29ya19jb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0TmV0d29ya1NldHRpbmdzRm9yT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9zZXR0aW5ncy9uZXR3b3JrLXNldHRpbmdzL3tuZXR3b3JrX3NldHRpbmdzX2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdE5ldHdvcmtDb25maWd1cmF0aW9uc0Zvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vc2V0dGluZ3MvbmV0d29yay1jb25maWd1cmF0aW9uc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlTmV0d29ya0NvbmZpZ3VyYXRpb25Gb3JPcmc6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vc2V0dGluZ3MvbmV0d29yay1jb25maWd1cmF0aW9ucy97bmV0d29ya19jb25maWd1cmF0aW9uX2lkfVwiLFxuICAgIF0sXG4gIH0sXG4gIGludGVyYWN0aW9uczoge1xuICAgIGdldFJlc3RyaWN0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIGdldFJlc3RyaWN0aW9uc0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L2ludGVyYWN0aW9uLWxpbWl0c1wiXSxcbiAgICBnZXRSZXN0cmljdGlvbnNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ludGVyYWN0aW9uLWxpbWl0c1wiXSxcbiAgICBnZXRSZXN0cmljdGlvbnNGb3JZb3VyUHVibGljUmVwb3M6IFtcbiAgICAgIFwiR0VUIC91c2VyL2ludGVyYWN0aW9uLWxpbWl0c1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcImludGVyYWN0aW9uc1wiLCBcImdldFJlc3RyaWN0aW9uc0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICByZW1vdmVSZXN0cmljdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiREVMRVRFIC91c2VyL2ludGVyYWN0aW9uLWxpbWl0c1wiXSxcbiAgICByZW1vdmVSZXN0cmljdGlvbnNGb3JPcmc6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9pbnRlcmFjdGlvbi1saW1pdHNcIl0sXG4gICAgcmVtb3ZlUmVzdHJpY3Rpb25zRm9yUmVwbzogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ludGVyYWN0aW9uLWxpbWl0c1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlUmVzdHJpY3Rpb25zRm9yWW91clB1YmxpY1JlcG9zOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9pbnRlcmFjdGlvbi1saW1pdHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJpbnRlcmFjdGlvbnNcIiwgXCJyZW1vdmVSZXN0cmljdGlvbnNGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgc2V0UmVzdHJpY3Rpb25zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBVVCAvdXNlci9pbnRlcmFjdGlvbi1saW1pdHNcIl0sXG4gICAgc2V0UmVzdHJpY3Rpb25zRm9yT3JnOiBbXCJQVVQgL29yZ3Mve29yZ30vaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIHNldFJlc3RyaWN0aW9uc0ZvclJlcG86IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vaW50ZXJhY3Rpb24tbGltaXRzXCJdLFxuICAgIHNldFJlc3RyaWN0aW9uc0ZvcllvdXJQdWJsaWNSZXBvczogW1xuICAgICAgXCJQVVQgL3VzZXIvaW50ZXJhY3Rpb24tbGltaXRzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wiaW50ZXJhY3Rpb25zXCIsIFwic2V0UmVzdHJpY3Rpb25zRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICB9LFxuICBpc3N1ZXM6IHtcbiAgICBhZGRBc3NpZ25lZXM6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2Fzc2lnbmVlc1wiLFxuICAgIF0sXG4gICAgYWRkTGFiZWxzOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vbGFiZWxzXCJdLFxuICAgIGFkZFN1Yklzc3VlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9zdWJfaXNzdWVzXCIsXG4gICAgXSxcbiAgICBjaGVja1VzZXJDYW5CZUFzc2lnbmVkOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Fzc2lnbmVlcy97YXNzaWduZWV9XCJdLFxuICAgIGNoZWNrVXNlckNhbkJlQXNzaWduZWRUb0lzc3VlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2Fzc2lnbmVlcy97YXNzaWduZWV9XCIsXG4gICAgXSxcbiAgICBjcmVhdGU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlc1wiXSxcbiAgICBjcmVhdGVDb21tZW50OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9jb21tZW50c1wiLFxuICAgIF0sXG4gICAgY3JlYXRlTGFiZWw6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2xhYmVsc1wiXSxcbiAgICBjcmVhdGVNaWxlc3RvbmU6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXNcIl0sXG4gICAgZGVsZXRlQ29tbWVudDogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9jb21tZW50cy97Y29tbWVudF9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUxhYmVsOiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2xhYmVscy97bmFtZX1cIl0sXG4gICAgZGVsZXRlTWlsZXN0b25lOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vbWlsZXN0b25lcy97bWlsZXN0b25lX251bWJlcn1cIixcbiAgICBdLFxuICAgIGdldDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn1cIl0sXG4gICAgZ2V0Q29tbWVudDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIGdldEV2ZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9ldmVudHMve2V2ZW50X2lkfVwiXSxcbiAgICBnZXRMYWJlbDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9sYWJlbHMve25hbWV9XCJdLFxuICAgIGdldE1pbGVzdG9uZTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9taWxlc3RvbmVzL3ttaWxlc3RvbmVfbnVtYmVyfVwiXSxcbiAgICBsaXN0OiBbXCJHRVQgL2lzc3Vlc1wiXSxcbiAgICBsaXN0QXNzaWduZWVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Fzc2lnbmVlc1wiXSxcbiAgICBsaXN0Q29tbWVudHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2NvbW1lbnRzXCJdLFxuICAgIGxpc3RDb21tZW50c0ZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzXCJdLFxuICAgIGxpc3RFdmVudHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2V2ZW50c1wiXSxcbiAgICBsaXN0RXZlbnRzRm9yUmVwbzogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvZXZlbnRzXCJdLFxuICAgIGxpc3RFdmVudHNGb3JUaW1lbGluZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS90aW1lbGluZVwiLFxuICAgIF0sXG4gICAgbGlzdEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvaXNzdWVzXCJdLFxuICAgIGxpc3RGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9pc3N1ZXNcIl0sXG4gICAgbGlzdEZvclJlcG86IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzXCJdLFxuICAgIGxpc3RMYWJlbHNGb3JNaWxlc3RvbmU6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9taWxlc3RvbmVzL3ttaWxlc3RvbmVfbnVtYmVyfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIGxpc3RMYWJlbHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2xhYmVsc1wiXSxcbiAgICBsaXN0TGFiZWxzT25Jc3N1ZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIGxpc3RNaWxlc3RvbmVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXNcIl0sXG4gICAgbGlzdFN1Yklzc3VlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9zdWJfaXNzdWVzXCIsXG4gICAgXSxcbiAgICBsb2NrOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9sb2NrXCJdLFxuICAgIHJlbW92ZUFsbExhYmVsczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9sYWJlbHNcIixcbiAgICBdLFxuICAgIHJlbW92ZUFzc2lnbmVlczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9hc3NpZ25lZXNcIixcbiAgICBdLFxuICAgIHJlbW92ZUxhYmVsOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xhYmVscy97bmFtZX1cIixcbiAgICBdLFxuICAgIHJlbW92ZVN1Yklzc3VlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L3N1Yl9pc3N1ZVwiLFxuICAgIF0sXG4gICAgcmVwcmlvcml0aXplU3ViSXNzdWU6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9zdWJfaXNzdWVzL3ByaW9yaXR5XCIsXG4gICAgXSxcbiAgICBzZXRMYWJlbHM6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xhYmVsc1wiXSxcbiAgICB1bmxvY2s6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9L2xvY2tcIl0sXG4gICAgdXBkYXRlOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL3tpc3N1ZV9udW1iZXJ9XCJdLFxuICAgIHVwZGF0ZUNvbW1lbnQ6IFtcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMvY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIHVwZGF0ZUxhYmVsOiBbXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vbGFiZWxzL3tuYW1lfVwiXSxcbiAgICB1cGRhdGVNaWxlc3RvbmU6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L21pbGVzdG9uZXMve21pbGVzdG9uZV9udW1iZXJ9XCIsXG4gICAgXSxcbiAgfSxcbiAgbGljZW5zZXM6IHtcbiAgICBnZXQ6IFtcIkdFVCAvbGljZW5zZXMve2xpY2Vuc2V9XCJdLFxuICAgIGdldEFsbENvbW1vbmx5VXNlZDogW1wiR0VUIC9saWNlbnNlc1wiXSxcbiAgICBnZXRGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2xpY2Vuc2VcIl0sXG4gIH0sXG4gIG1hcmtkb3duOiB7XG4gICAgcmVuZGVyOiBbXCJQT1NUIC9tYXJrZG93blwiXSxcbiAgICByZW5kZXJSYXc6IFtcbiAgICAgIFwiUE9TVCAvbWFya2Rvd24vcmF3XCIsXG4gICAgICB7IGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04XCIgfSB9LFxuICAgIF0sXG4gIH0sXG4gIG1ldGE6IHtcbiAgICBnZXQ6IFtcIkdFVCAvbWV0YVwiXSxcbiAgICBnZXRBbGxWZXJzaW9uczogW1wiR0VUIC92ZXJzaW9uc1wiXSxcbiAgICBnZXRPY3RvY2F0OiBbXCJHRVQgL29jdG9jYXRcIl0sXG4gICAgZ2V0WmVuOiBbXCJHRVQgL3plblwiXSxcbiAgICByb290OiBbXCJHRVQgL1wiXSxcbiAgfSxcbiAgbWlncmF0aW9uczoge1xuICAgIGRlbGV0ZUFyY2hpdmVGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9hcmNoaXZlXCIsXG4gICAgXSxcbiAgICBkZWxldGVBcmNoaXZlRm9yT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9L2FyY2hpdmVcIixcbiAgICBdLFxuICAgIGRvd25sb2FkQXJjaGl2ZUZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9hcmNoaXZlXCIsXG4gICAgXSxcbiAgICBnZXRBcmNoaXZlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vYXJjaGl2ZVwiLFxuICAgIF0sXG4gICAgZ2V0U3RhdHVzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9taWdyYXRpb25zL3ttaWdyYXRpb25faWR9XCJdLFxuICAgIGdldFN0YXR1c0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH1cIl0sXG4gICAgbGlzdEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvbWlncmF0aW9uc1wiXSxcbiAgICBsaXN0Rm9yT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vbWlncmF0aW9uc1wiXSxcbiAgICBsaXN0UmVwb3NGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RSZXBvc0Zvck9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCJdLFxuICAgIGxpc3RSZXBvc0ZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vcmVwb3NpdG9yaWVzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wibWlncmF0aW9uc1wiLCBcImxpc3RSZXBvc0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBzdGFydEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL21pZ3JhdGlvbnNcIl0sXG4gICAgc3RhcnRGb3JPcmc6IFtcIlBPU1QgL29yZ3Mve29yZ30vbWlncmF0aW9uc1wiXSxcbiAgICB1bmxvY2tSZXBvRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL21pZ3JhdGlvbnMve21pZ3JhdGlvbl9pZH0vcmVwb3Mve3JlcG9fbmFtZX0vbG9ja1wiLFxuICAgIF0sXG4gICAgdW5sb2NrUmVwb0Zvck9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vbWlncmF0aW9ucy97bWlncmF0aW9uX2lkfS9yZXBvcy97cmVwb19uYW1lfS9sb2NrXCIsXG4gICAgXSxcbiAgfSxcbiAgb2lkYzoge1xuICAgIGdldE9pZGNDdXN0b21TdWJUZW1wbGF0ZUZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vYWN0aW9ucy9vaWRjL2N1c3RvbWl6YXRpb24vc3ViXCIsXG4gICAgXSxcbiAgICB1cGRhdGVPaWRjQ3VzdG9tU3ViVGVtcGxhdGVGb3JPcmc6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L2FjdGlvbnMvb2lkYy9jdXN0b21pemF0aW9uL3N1YlwiLFxuICAgIF0sXG4gIH0sXG4gIG9yZ3M6IHtcbiAgICBhZGRTZWN1cml0eU1hbmFnZXJUZWFtOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9zZWN1cml0eS1tYW5hZ2Vycy90ZWFtcy97dGVhbV9zbHVnfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3Qub3Jncy5hZGRTZWN1cml0eU1hbmFnZXJUZWFtKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3Qvb3Jncy9zZWN1cml0eS1tYW5hZ2VycyNhZGQtYS1zZWN1cml0eS1tYW5hZ2VyLXRlYW1cIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhc3NpZ25UZWFtVG9PcmdSb2xlOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdGVhbXMve3RlYW1fc2x1Z30ve3JvbGVfaWR9XCIsXG4gICAgXSxcbiAgICBhc3NpZ25Vc2VyVG9PcmdSb2xlOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdXNlcnMve3VzZXJuYW1lfS97cm9sZV9pZH1cIixcbiAgICBdLFxuICAgIGJsb2NrVXNlcjogW1wiUFVUIC9vcmdzL3tvcmd9L2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIGNhbmNlbEludml0YXRpb246IFtcIkRFTEVURSAvb3Jncy97b3JnfS9pbnZpdGF0aW9ucy97aW52aXRhdGlvbl9pZH1cIl0sXG4gICAgY2hlY2tCbG9ja2VkVXNlcjogW1wiR0VUIC9vcmdzL3tvcmd9L2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIGNoZWNrTWVtYmVyc2hpcEZvclVzZXI6IFtcIkdFVCAvb3Jncy97b3JnfS9tZW1iZXJzL3t1c2VybmFtZX1cIl0sXG4gICAgY2hlY2tQdWJsaWNNZW1iZXJzaGlwRm9yVXNlcjogW1wiR0VUIC9vcmdzL3tvcmd9L3B1YmxpY19tZW1iZXJzL3t1c2VybmFtZX1cIl0sXG4gICAgY29udmVydE1lbWJlclRvT3V0c2lkZUNvbGxhYm9yYXRvcjogW1xuICAgICAgXCJQVVQgL29yZ3Mve29yZ30vb3V0c2lkZV9jb2xsYWJvcmF0b3JzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZUludml0YXRpb246IFtcIlBPU1QgL29yZ3Mve29yZ30vaW52aXRhdGlvbnNcIl0sXG4gICAgY3JlYXRlSXNzdWVUeXBlOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2lzc3VlLXR5cGVzXCJdLFxuICAgIGNyZWF0ZU9yVXBkYXRlQ3VzdG9tUHJvcGVydGllczogW1wiUEFUQ0ggL29yZ3Mve29yZ30vcHJvcGVydGllcy9zY2hlbWFcIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVDdXN0b21Qcm9wZXJ0aWVzVmFsdWVzRm9yUmVwb3M6IFtcbiAgICAgIFwiUEFUQ0ggL29yZ3Mve29yZ30vcHJvcGVydGllcy92YWx1ZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yVXBkYXRlQ3VzdG9tUHJvcGVydHk6IFtcbiAgICAgIFwiUFVUIC9vcmdzL3tvcmd9L3Byb3BlcnRpZXMvc2NoZW1hL3tjdXN0b21fcHJvcGVydHlfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZVdlYmhvb2s6IFtcIlBPU1QgL29yZ3Mve29yZ30vaG9va3NcIl0sXG4gICAgZGVsZXRlOiBbXCJERUxFVEUgL29yZ3Mve29yZ31cIl0sXG4gICAgZGVsZXRlSXNzdWVUeXBlOiBbXCJERUxFVEUgL29yZ3Mve29yZ30vaXNzdWUtdHlwZXMve2lzc3VlX3R5cGVfaWR9XCJdLFxuICAgIGRlbGV0ZVdlYmhvb2s6IFtcIkRFTEVURSAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH1cIl0sXG4gICAgZW5hYmxlT3JEaXNhYmxlU2VjdXJpdHlQcm9kdWN0T25BbGxPcmdSZXBvczogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3tzZWN1cml0eV9wcm9kdWN0fS97ZW5hYmxlbWVudH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0Lm9yZ3MuZW5hYmxlT3JEaXNhYmxlU2VjdXJpdHlQcm9kdWN0T25BbGxPcmdSZXBvcygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L29yZ3Mvb3JncyNlbmFibGUtb3ItZGlzYWJsZS1hLXNlY3VyaXR5LWZlYXR1cmUtZm9yLWFuLW9yZ2FuaXphdGlvblwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGdldDogW1wiR0VUIC9vcmdzL3tvcmd9XCJdLFxuICAgIGdldEFsbEN1c3RvbVByb3BlcnRpZXM6IFtcIkdFVCAvb3Jncy97b3JnfS9wcm9wZXJ0aWVzL3NjaGVtYVwiXSxcbiAgICBnZXRDdXN0b21Qcm9wZXJ0eTogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcHJvcGVydGllcy9zY2hlbWEve2N1c3RvbV9wcm9wZXJ0eV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0TWVtYmVyc2hpcEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvbWVtYmVyc2hpcHMvb3Jncy97b3JnfVwiXSxcbiAgICBnZXRNZW1iZXJzaGlwRm9yVXNlcjogW1wiR0VUIC9vcmdzL3tvcmd9L21lbWJlcnNoaXBzL3t1c2VybmFtZX1cIl0sXG4gICAgZ2V0T3JnUm9sZTogW1wiR0VUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlcy97cm9sZV9pZH1cIl0sXG4gICAgZ2V0T3JnUnVsZXNldEhpc3Rvcnk6IFtcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy97cnVsZXNldF9pZH0vaGlzdG9yeVwiXSxcbiAgICBnZXRPcmdSdWxlc2V0VmVyc2lvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcnVsZXNldHMve3J1bGVzZXRfaWR9L2hpc3Rvcnkve3ZlcnNpb25faWR9XCIsXG4gICAgXSxcbiAgICBnZXRXZWJob29rOiBbXCJHRVQgL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9XCJdLFxuICAgIGdldFdlYmhvb2tDb25maWdGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH0vY29uZmlnXCJdLFxuICAgIGdldFdlYmhvb2tEZWxpdmVyeTogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vaG9va3Mve2hvb2tfaWR9L2RlbGl2ZXJpZXMve2RlbGl2ZXJ5X2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdDogW1wiR0VUIC9vcmdhbml6YXRpb25zXCJdLFxuICAgIGxpc3RBcHBJbnN0YWxsYXRpb25zOiBbXCJHRVQgL29yZ3Mve29yZ30vaW5zdGFsbGF0aW9uc1wiXSxcbiAgICBsaXN0QXR0ZXN0YXRpb25zOiBbXCJHRVQgL29yZ3Mve29yZ30vYXR0ZXN0YXRpb25zL3tzdWJqZWN0X2RpZ2VzdH1cIl0sXG4gICAgbGlzdEJsb2NrZWRVc2VyczogW1wiR0VUIC9vcmdzL3tvcmd9L2Jsb2Nrc1wiXSxcbiAgICBsaXN0Q3VzdG9tUHJvcGVydGllc1ZhbHVlc0ZvclJlcG9zOiBbXCJHRVQgL29yZ3Mve29yZ30vcHJvcGVydGllcy92YWx1ZXNcIl0sXG4gICAgbGlzdEZhaWxlZEludml0YXRpb25zOiBbXCJHRVQgL29yZ3Mve29yZ30vZmFpbGVkX2ludml0YXRpb25zXCJdLFxuICAgIGxpc3RGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL29yZ3NcIl0sXG4gICAgbGlzdEZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9vcmdzXCJdLFxuICAgIGxpc3RJbnZpdGF0aW9uVGVhbXM6IFtcIkdFVCAvb3Jncy97b3JnfS9pbnZpdGF0aW9ucy97aW52aXRhdGlvbl9pZH0vdGVhbXNcIl0sXG4gICAgbGlzdElzc3VlVHlwZXM6IFtcIkdFVCAvb3Jncy97b3JnfS9pc3N1ZS10eXBlc1wiXSxcbiAgICBsaXN0TWVtYmVyczogW1wiR0VUIC9vcmdzL3tvcmd9L21lbWJlcnNcIl0sXG4gICAgbGlzdE1lbWJlcnNoaXBzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9tZW1iZXJzaGlwcy9vcmdzXCJdLFxuICAgIGxpc3RPcmdSb2xlVGVhbXM6IFtcIkdFVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMve3JvbGVfaWR9L3RlYW1zXCJdLFxuICAgIGxpc3RPcmdSb2xlVXNlcnM6IFtcIkdFVCAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMve3JvbGVfaWR9L3VzZXJzXCJdLFxuICAgIGxpc3RPcmdSb2xlczogW1wiR0VUIC9vcmdzL3tvcmd9L29yZ2FuaXphdGlvbi1yb2xlc1wiXSxcbiAgICBsaXN0T3JnYW5pemF0aW9uRmluZUdyYWluZWRQZXJtaXNzaW9uczogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLWZpbmUtZ3JhaW5lZC1wZXJtaXNzaW9uc1wiLFxuICAgIF0sXG4gICAgbGlzdE91dHNpZGVDb2xsYWJvcmF0b3JzOiBbXCJHRVQgL29yZ3Mve29yZ30vb3V0c2lkZV9jb2xsYWJvcmF0b3JzXCJdLFxuICAgIGxpc3RQYXRHcmFudFJlcG9zaXRvcmllczogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2Vucy97cGF0X2lkfS9yZXBvc2l0b3JpZXNcIixcbiAgICBdLFxuICAgIGxpc3RQYXRHcmFudFJlcXVlc3RSZXBvc2l0b3JpZXM6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbi1yZXF1ZXN0cy97cGF0X3JlcXVlc3RfaWR9L3JlcG9zaXRvcmllc1wiLFxuICAgIF0sXG4gICAgbGlzdFBhdEdyYW50UmVxdWVzdHM6IFtcIkdFVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW4tcmVxdWVzdHNcIl0sXG4gICAgbGlzdFBhdEdyYW50czogW1wiR0VUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbnNcIl0sXG4gICAgbGlzdFBlbmRpbmdJbnZpdGF0aW9uczogW1wiR0VUIC9vcmdzL3tvcmd9L2ludml0YXRpb25zXCJdLFxuICAgIGxpc3RQdWJsaWNNZW1iZXJzOiBbXCJHRVQgL29yZ3Mve29yZ30vcHVibGljX21lbWJlcnNcIl0sXG4gICAgbGlzdFNlY3VyaXR5TWFuYWdlclRlYW1zOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9zZWN1cml0eS1tYW5hZ2Vyc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3Qub3Jncy5saXN0U2VjdXJpdHlNYW5hZ2VyVGVhbXMoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9vcmdzL3NlY3VyaXR5LW1hbmFnZXJzI2xpc3Qtc2VjdXJpdHktbWFuYWdlci10ZWFtc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGxpc3RXZWJob29rRGVsaXZlcmllczogW1wiR0VUIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfS9kZWxpdmVyaWVzXCJdLFxuICAgIGxpc3RXZWJob29rczogW1wiR0VUIC9vcmdzL3tvcmd9L2hvb2tzXCJdLFxuICAgIHBpbmdXZWJob29rOiBbXCJQT1NUIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfS9waW5nc1wiXSxcbiAgICByZWRlbGl2ZXJXZWJob29rRGVsaXZlcnk6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH0vZGVsaXZlcmllcy97ZGVsaXZlcnlfaWR9L2F0dGVtcHRzXCIsXG4gICAgXSxcbiAgICByZW1vdmVDdXN0b21Qcm9wZXJ0eTogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vcHJvcGVydGllcy9zY2hlbWEve2N1c3RvbV9wcm9wZXJ0eV9uYW1lfVwiLFxuICAgIF0sXG4gICAgcmVtb3ZlTWVtYmVyOiBbXCJERUxFVEUgL29yZ3Mve29yZ30vbWVtYmVycy97dXNlcm5hbWV9XCJdLFxuICAgIHJlbW92ZU1lbWJlcnNoaXBGb3JVc2VyOiBbXCJERUxFVEUgL29yZ3Mve29yZ30vbWVtYmVyc2hpcHMve3VzZXJuYW1lfVwiXSxcbiAgICByZW1vdmVPdXRzaWRlQ29sbGFib3JhdG9yOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9vdXRzaWRlX2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfVwiLFxuICAgIF0sXG4gICAgcmVtb3ZlUHVibGljTWVtYmVyc2hpcEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9wdWJsaWNfbWVtYmVycy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVTZWN1cml0eU1hbmFnZXJUZWFtOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9zZWN1cml0eS1tYW5hZ2Vycy90ZWFtcy97dGVhbV9zbHVnfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3Qub3Jncy5yZW1vdmVTZWN1cml0eU1hbmFnZXJUZWFtKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3Qvb3Jncy9zZWN1cml0eS1tYW5hZ2VycyNyZW1vdmUtYS1zZWN1cml0eS1tYW5hZ2VyLXRlYW1cIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICByZXZpZXdQYXRHcmFudFJlcXVlc3Q6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW4tcmVxdWVzdHMve3BhdF9yZXF1ZXN0X2lkfVwiLFxuICAgIF0sXG4gICAgcmV2aWV3UGF0R3JhbnRSZXF1ZXN0c0luQnVsazogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3BlcnNvbmFsLWFjY2Vzcy10b2tlbi1yZXF1ZXN0c1wiLFxuICAgIF0sXG4gICAgcmV2b2tlQWxsT3JnUm9sZXNUZWFtOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdGVhbXMve3RlYW1fc2x1Z31cIixcbiAgICBdLFxuICAgIHJldm9rZUFsbE9yZ1JvbGVzVXNlcjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzL3VzZXJzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIHJldm9rZU9yZ1JvbGVUZWFtOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS9vcmdhbml6YXRpb24tcm9sZXMvdGVhbXMve3RlYW1fc2x1Z30ve3JvbGVfaWR9XCIsXG4gICAgXSxcbiAgICByZXZva2VPcmdSb2xlVXNlcjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vb3JnYW5pemF0aW9uLXJvbGVzL3VzZXJzL3t1c2VybmFtZX0ve3JvbGVfaWR9XCIsXG4gICAgXSxcbiAgICBzZXRNZW1iZXJzaGlwRm9yVXNlcjogW1wiUFVUIC9vcmdzL3tvcmd9L21lbWJlcnNoaXBzL3t1c2VybmFtZX1cIl0sXG4gICAgc2V0UHVibGljTWVtYmVyc2hpcEZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS9wdWJsaWNfbWVtYmVycy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICB1bmJsb2NrVXNlcjogW1wiREVMRVRFIC9vcmdzL3tvcmd9L2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIHVwZGF0ZTogW1wiUEFUQ0ggL29yZ3Mve29yZ31cIl0sXG4gICAgdXBkYXRlSXNzdWVUeXBlOiBbXCJQVVQgL29yZ3Mve29yZ30vaXNzdWUtdHlwZXMve2lzc3VlX3R5cGVfaWR9XCJdLFxuICAgIHVwZGF0ZU1lbWJlcnNoaXBGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQQVRDSCAvdXNlci9tZW1iZXJzaGlwcy9vcmdzL3tvcmd9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVQYXRBY2Nlc3M6IFtcIlBPU1QgL29yZ3Mve29yZ30vcGVyc29uYWwtYWNjZXNzLXRva2Vucy97cGF0X2lkfVwiXSxcbiAgICB1cGRhdGVQYXRBY2Nlc3NlczogW1wiUE9TVCAvb3Jncy97b3JnfS9wZXJzb25hbC1hY2Nlc3MtdG9rZW5zXCJdLFxuICAgIHVwZGF0ZVdlYmhvb2s6IFtcIlBBVENIIC9vcmdzL3tvcmd9L2hvb2tzL3tob29rX2lkfVwiXSxcbiAgICB1cGRhdGVXZWJob29rQ29uZmlnRm9yT3JnOiBbXCJQQVRDSCAvb3Jncy97b3JnfS9ob29rcy97aG9va19pZH0vY29uZmlnXCJdLFxuICB9LFxuICBwYWNrYWdlczoge1xuICAgIGRlbGV0ZVBhY2thZ2VGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVBhY2thZ2VGb3JPcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9XCIsXG4gICAgXSxcbiAgICBkZWxldGVQYWNrYWdlRm9yVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVBhY2thZ2VWZXJzaW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3ZlcnNpb25zL3twYWNrYWdlX3ZlcnNpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVQYWNrYWdlVmVyc2lvbkZvck9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnMve3BhY2thZ2VfdmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVBhY2thZ2VWZXJzaW9uRm9yVXNlcjogW1xuICAgICAgXCJERUxFVEUgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnMve3BhY2thZ2VfdmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGdldEFsbFBhY2thZ2VWZXJzaW9uc0ZvckFQYWNrYWdlT3duZWRCeUFuT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInBhY2thZ2VzXCIsIFwiZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yUGFja2FnZU93bmVkQnlPcmdcIl0gfSxcbiAgICBdLFxuICAgIGdldEFsbFBhY2thZ2VWZXJzaW9uc0ZvckFQYWNrYWdlT3duZWRCeVRoZUF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIHJlbmFtZWQ6IFtcbiAgICAgICAgICBcInBhY2thZ2VzXCIsXG4gICAgICAgICAgXCJnZXRBbGxQYWNrYWdlVmVyc2lvbnNGb3JQYWNrYWdlT3duZWRCeUF1dGhlbnRpY2F0ZWRVc2VyXCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yUGFja2FnZU93bmVkQnlBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnNcIixcbiAgICBdLFxuICAgIGdldEFsbFBhY2thZ2VWZXJzaW9uc0ZvclBhY2thZ2VPd25lZEJ5T3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0QWxsUGFja2FnZVZlcnNpb25zRm9yUGFja2FnZU93bmVkQnlVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9uc1wiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZUZvck9yZ2FuaXphdGlvbjogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX1cIixcbiAgICBdLFxuICAgIGdldFBhY2thZ2VGb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZVZlcnNpb25Gb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnMve3BhY2thZ2VfdmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGdldFBhY2thZ2VWZXJzaW9uRm9yT3JnYW5pemF0aW9uOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFja2FnZVZlcnNpb25Gb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfVwiLFxuICAgIF0sXG4gICAgbGlzdERvY2tlck1pZ3JhdGlvbkNvbmZsaWN0aW5nUGFja2FnZXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXIvZG9ja2VyL2NvbmZsaWN0c1wiLFxuICAgIF0sXG4gICAgbGlzdERvY2tlck1pZ3JhdGlvbkNvbmZsaWN0aW5nUGFja2FnZXNGb3JPcmdhbml6YXRpb246IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L2RvY2tlci9jb25mbGljdHNcIixcbiAgICBdLFxuICAgIGxpc3REb2NrZXJNaWdyYXRpb25Db25mbGljdGluZ1BhY2thZ2VzRm9yVXNlcjogW1xuICAgICAgXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZG9ja2VyL2NvbmZsaWN0c1wiLFxuICAgIF0sXG4gICAgbGlzdFBhY2thZ2VzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9wYWNrYWdlc1wiXSxcbiAgICBsaXN0UGFja2FnZXNGb3JPcmdhbml6YXRpb246IFtcIkdFVCAvb3Jncy97b3JnfS9wYWNrYWdlc1wiXSxcbiAgICBsaXN0UGFja2FnZXNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXNcIl0sXG4gICAgcmVzdG9yZVBhY2thZ2VGb3JBdXRoZW50aWNhdGVkVXNlcjogW1xuICAgICAgXCJQT1NUIC91c2VyL3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3Jlc3RvcmV7P3Rva2VufVwiLFxuICAgIF0sXG4gICAgcmVzdG9yZVBhY2thZ2VGb3JPcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS9yZXN0b3Jlez90b2tlbn1cIixcbiAgICBdLFxuICAgIHJlc3RvcmVQYWNrYWdlRm9yVXNlcjogW1xuICAgICAgXCJQT1NUIC91c2Vycy97dXNlcm5hbWV9L3BhY2thZ2VzL3twYWNrYWdlX3R5cGV9L3twYWNrYWdlX25hbWV9L3Jlc3RvcmV7P3Rva2VufVwiLFxuICAgIF0sXG4gICAgcmVzdG9yZVBhY2thZ2VWZXJzaW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfS9yZXN0b3JlXCIsXG4gICAgXSxcbiAgICByZXN0b3JlUGFja2FnZVZlcnNpb25Gb3JPcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS9wYWNrYWdlcy97cGFja2FnZV90eXBlfS97cGFja2FnZV9uYW1lfS92ZXJzaW9ucy97cGFja2FnZV92ZXJzaW9uX2lkfS9yZXN0b3JlXCIsXG4gICAgXSxcbiAgICByZXN0b3JlUGFja2FnZVZlcnNpb25Gb3JVc2VyOiBbXG4gICAgICBcIlBPU1QgL3VzZXJzL3t1c2VybmFtZX0vcGFja2FnZXMve3BhY2thZ2VfdHlwZX0ve3BhY2thZ2VfbmFtZX0vdmVyc2lvbnMve3BhY2thZ2VfdmVyc2lvbl9pZH0vcmVzdG9yZVwiLFxuICAgIF0sXG4gIH0sXG4gIHByaXZhdGVSZWdpc3RyaWVzOiB7XG4gICAgY3JlYXRlT3JnUHJpdmF0ZVJlZ2lzdHJ5OiBbXCJQT1NUIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllc1wiXSxcbiAgICBkZWxldGVPcmdQcml2YXRlUmVnaXN0cnk6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllcy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgICBnZXRPcmdQcml2YXRlUmVnaXN0cnk6IFtcIkdFVCAvb3Jncy97b3JnfS9wcml2YXRlLXJlZ2lzdHJpZXMve3NlY3JldF9uYW1lfVwiXSxcbiAgICBnZXRPcmdQdWJsaWNLZXk6IFtcIkdFVCAvb3Jncy97b3JnfS9wcml2YXRlLXJlZ2lzdHJpZXMvcHVibGljLWtleVwiXSxcbiAgICBsaXN0T3JnUHJpdmF0ZVJlZ2lzdHJpZXM6IFtcIkdFVCAvb3Jncy97b3JnfS9wcml2YXRlLXJlZ2lzdHJpZXNcIl0sXG4gICAgdXBkYXRlT3JnUHJpdmF0ZVJlZ2lzdHJ5OiBbXG4gICAgICBcIlBBVENIIC9vcmdzL3tvcmd9L3ByaXZhdGUtcmVnaXN0cmllcy97c2VjcmV0X25hbWV9XCIsXG4gICAgXSxcbiAgfSxcbiAgcHJvamVjdHM6IHtcbiAgICBhZGRDb2xsYWJvcmF0b3I6IFtcbiAgICAgIFwiUFVUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5hZGRDb2xsYWJvcmF0b3IoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2xsYWJvcmF0b3JzI2FkZC1wcm9qZWN0LWNvbGxhYm9yYXRvclwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNyZWF0ZUNhcmQ6IFtcbiAgICAgIFwiUE9TVCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfS9jYXJkc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuY3JlYXRlQ2FyZCgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NhcmRzI2NyZWF0ZS1hLXByb2plY3QtY2FyZFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNyZWF0ZUNvbHVtbjogW1xuICAgICAgXCJQT1NUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sdW1uc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuY3JlYXRlQ29sdW1uKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY29sdW1ucyNjcmVhdGUtYS1wcm9qZWN0LWNvbHVtblwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNyZWF0ZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIlBPU1QgL3VzZXIvcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmNyZWF0ZUZvckF1dGhlbnRpY2F0ZWRVc2VyKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjY3JlYXRlLWEtdXNlci1wcm9qZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlRm9yT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmNyZWF0ZUZvck9yZygpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2NyZWF0ZS1hbi1vcmdhbml6YXRpb24tcHJvamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNyZWF0ZUZvclJlcG86IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmNyZWF0ZUZvclJlcG8oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyNjcmVhdGUtYS1yZXBvc2l0b3J5LXByb2plY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBkZWxldGU6IFtcbiAgICAgIFwiREVMRVRFIC9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmRlbGV0ZSgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2RlbGV0ZS1hLXByb2plY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBkZWxldGVDYXJkOiBbXG4gICAgICBcIkRFTEVURSAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy97Y2FyZF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmRlbGV0ZUNhcmQoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jYXJkcyNkZWxldGUtYS1wcm9qZWN0LWNhcmRcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBkZWxldGVDb2x1bW46IFtcbiAgICAgIFwiREVMRVRFIC9wcm9qZWN0cy9jb2x1bW5zL3tjb2x1bW5faWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5kZWxldGVDb2x1bW4oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI2RlbGV0ZS1hLXByb2plY3QtY29sdW1uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0OiBbXG4gICAgICBcIkdFVCAvcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5nZXQoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyNnZXQtYS1wcm9qZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0Q2FyZDogW1xuICAgICAgXCJHRVQgL3Byb2plY3RzL2NvbHVtbnMvY2FyZHMve2NhcmRfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5nZXRDYXJkKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY2FyZHMjZ2V0LWEtcHJvamVjdC1jYXJkXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2V0Q29sdW1uOiBbXG4gICAgICBcIkdFVCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMuZ2V0Q29sdW1uKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY29sdW1ucyNnZXQtYS1wcm9qZWN0LWNvbHVtblwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGdldFBlcm1pc3Npb25Gb3JVc2VyOiBbXG4gICAgICBcIkdFVCAvcHJvamVjdHMve3Byb2plY3RfaWR9L2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfS9wZXJtaXNzaW9uXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5nZXRQZXJtaXNzaW9uRm9yVXNlcigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbGxhYm9yYXRvcnMjZ2V0LXByb2plY3QtcGVybWlzc2lvbi1mb3ItYS11c2VyXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdENhcmRzOiBbXG4gICAgICBcIkdFVCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfS9jYXJkc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubGlzdENhcmRzKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY2FyZHMjbGlzdC1wcm9qZWN0LWNhcmRzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdENvbGxhYm9yYXRvcnM6IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sbGFib3JhdG9yc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubGlzdENvbGxhYm9yYXRvcnMoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2xsYWJvcmF0b3JzI2xpc3QtcHJvamVjdC1jb2xsYWJvcmF0b3JzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdENvbHVtbnM6IFtcbiAgICAgIFwiR0VUIC9wcm9qZWN0cy97cHJvamVjdF9pZH0vY29sdW1uc1wiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMubGlzdENvbHVtbnMoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI2xpc3QtcHJvamVjdC1jb2x1bW5zXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdEZvck9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmxpc3RGb3JPcmcoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9wcm9qZWN0cyNsaXN0LW9yZ2FuaXphdGlvbi1wcm9qZWN0c1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGxpc3RGb3JSZXBvOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLmxpc3RGb3JSZXBvKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjbGlzdC1yZXBvc2l0b3J5LXByb2plY3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdEZvclVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2Vycy97dXNlcm5hbWV9L3Byb2plY3RzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5saXN0Rm9yVXNlcigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL3Byb2plY3RzI2xpc3QtdXNlci1wcm9qZWN0c1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1vdmVDYXJkOiBbXG4gICAgICBcIlBPU1QgL3Byb2plY3RzL2NvbHVtbnMvY2FyZHMve2NhcmRfaWR9L21vdmVzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy5tb3ZlQ2FyZCgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NhcmRzI21vdmUtYS1wcm9qZWN0LWNhcmRcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBtb3ZlQ29sdW1uOiBbXG4gICAgICBcIlBPU1QgL3Byb2plY3RzL2NvbHVtbnMve2NvbHVtbl9pZH0vbW92ZXNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLm1vdmVDb2x1bW4oKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC9wcm9qZWN0cy9jb2x1bW5zI21vdmUtYS1wcm9qZWN0LWNvbHVtblwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHJlbW92ZUNvbGxhYm9yYXRvcjogW1xuICAgICAgXCJERUxFVEUgL3Byb2plY3RzL3twcm9qZWN0X2lkfS9jb2xsYWJvcmF0b3JzL3t1c2VybmFtZX1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnByb2plY3RzLnJlbW92ZUNvbGxhYm9yYXRvcigpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3Byb2plY3RzL2NvbGxhYm9yYXRvcnMjcmVtb3ZlLXVzZXItYXMtYS1jb2xsYWJvcmF0b3JcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICB1cGRhdGU6IFtcbiAgICAgIFwiUEFUQ0ggL3Byb2plY3RzL3twcm9qZWN0X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMudXBkYXRlKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvcHJvamVjdHMjdXBkYXRlLWEtcHJvamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHVwZGF0ZUNhcmQ6IFtcbiAgICAgIFwiUEFUQ0ggL3Byb2plY3RzL2NvbHVtbnMvY2FyZHMve2NhcmRfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5wcm9qZWN0cy51cGRhdGVDYXJkKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY2FyZHMjdXBkYXRlLWFuLWV4aXN0aW5nLXByb2plY3QtY2FyZFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHVwZGF0ZUNvbHVtbjogW1xuICAgICAgXCJQQVRDSCAvcHJvamVjdHMvY29sdW1ucy97Y29sdW1uX2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QucHJvamVjdHMudXBkYXRlQ29sdW1uKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvcHJvamVjdHMvY29sdW1ucyN1cGRhdGUtYW4tZXhpc3RpbmctcHJvamVjdC1jb2x1bW5cIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcHVsbHM6IHtcbiAgICBjaGVja0lmTWVyZ2VkOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vbWVyZ2VcIl0sXG4gICAgY3JlYXRlOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxsc1wiXSxcbiAgICBjcmVhdGVSZXBseUZvclJldmlld0NvbW1lbnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9pZH0vcmVwbGllc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlUmV2aWV3OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3NcIl0sXG4gICAgY3JlYXRlUmV2aWV3Q29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBkZWxldGVQZW5kaW5nUmV2aWV3OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzL3tyZXZpZXdfaWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVSZXZpZXdDb21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMvY29tbWVudHMve2NvbW1lbnRfaWR9XCIsXG4gICAgXSxcbiAgICBkaXNtaXNzUmV2aWV3OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzL3tyZXZpZXdfaWR9L2Rpc21pc3NhbHNcIixcbiAgICBdLFxuICAgIGdldDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9XCJdLFxuICAgIGdldFJldmlldzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3cy97cmV2aWV3X2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UmV2aWV3Q29tbWVudDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH1cIl0sXG4gICAgbGlzdDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxsc1wiXSxcbiAgICBsaXN0Q29tbWVudHNGb3JSZXZpZXc6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3Mve3Jldmlld19pZH0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGxpc3RDb21taXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vY29tbWl0c1wiXSxcbiAgICBsaXN0RmlsZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9maWxlc1wiXSxcbiAgICBsaXN0UmVxdWVzdGVkUmV2aWV3ZXJzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXF1ZXN0ZWRfcmV2aWV3ZXJzXCIsXG4gICAgXSxcbiAgICBsaXN0UmV2aWV3Q29tbWVudHM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBsaXN0UmV2aWV3Q29tbWVudHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL2NvbW1lbnRzXCJdLFxuICAgIGxpc3RSZXZpZXdzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmV2aWV3c1wiXSxcbiAgICBtZXJnZTogW1wiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L21lcmdlXCJdLFxuICAgIHJlbW92ZVJlcXVlc3RlZFJldmlld2VyczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vcmVxdWVzdGVkX3Jldmlld2Vyc1wiLFxuICAgIF0sXG4gICAgcmVxdWVzdFJldmlld2VyczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3JlcXVlc3RlZF9yZXZpZXdlcnNcIixcbiAgICBdLFxuICAgIHN1Ym1pdFJldmlldzogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9L3Jldmlld3Mve3Jldmlld19pZH0vZXZlbnRzXCIsXG4gICAgXSxcbiAgICB1cGRhdGU6IFtcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy97cHVsbF9udW1iZXJ9XCJdLFxuICAgIHVwZGF0ZUJyYW5jaDogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3B1bGxzL3twdWxsX251bWJlcn0vdXBkYXRlLWJyYW5jaFwiLFxuICAgIF0sXG4gICAgdXBkYXRlUmV2aWV3OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMve3B1bGxfbnVtYmVyfS9yZXZpZXdzL3tyZXZpZXdfaWR9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVSZXZpZXdDb21tZW50OiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH1cIixcbiAgICBdLFxuICB9LFxuICByYXRlTGltaXQ6IHsgZ2V0OiBbXCJHRVQgL3JhdGVfbGltaXRcIl0gfSxcbiAgcmVhY3Rpb25zOiB7XG4gICAgY3JlYXRlRm9yQ29tbWl0Q29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBjcmVhdGVGb3JJc3N1ZTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9pc3N1ZXMve2lzc3VlX251bWJlcn0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBjcmVhdGVGb3JJc3N1ZUNvbW1lbnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvclB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wdWxscy9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBjcmVhdGVGb3JSZWxlYXNlOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUZvclRlYW1EaXNjdXNzaW9uQ29tbWVudEluT3JnOiBbXG4gICAgICBcIlBPU1QgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9udW1iZXJ9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRm9yVGVhbURpc2N1c3Npb25Jbk9yZzogW1xuICAgICAgXCJQT1NUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JDb21taXRDb21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JJc3N1ZTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9yZWFjdGlvbnMve3JlYWN0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRm9ySXNzdWVDb21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vaXNzdWVzL2NvbW1lbnRzL3tjb21tZW50X2lkfS9yZWFjdGlvbnMve3JlYWN0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRm9yUHVsbFJlcXVlc3RDb21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JSZWxlYXNlOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L3JlYWN0aW9ucy97cmVhY3Rpb25faWR9XCIsXG4gICAgXSxcbiAgICBkZWxldGVGb3JUZWFtRGlzY3Vzc2lvbjogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9yZWFjdGlvbnMve3JlYWN0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRm9yVGVhbURpc2N1c3Npb25Db21tZW50OiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzL3tjb21tZW50X251bWJlcn0vcmVhY3Rpb25zL3tyZWFjdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGxpc3RGb3JDb21taXRDb21tZW50OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgbGlzdEZvcklzc3VlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy97aXNzdWVfbnVtYmVyfS9yZWFjdGlvbnNcIl0sXG4gICAgbGlzdEZvcklzc3VlQ29tbWVudDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2lzc3Vlcy9jb21tZW50cy97Y29tbWVudF9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0Rm9yUHVsbFJlcXVlc3RSZXZpZXdDb21tZW50OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHVsbHMvY29tbWVudHMve2NvbW1lbnRfaWR9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gICAgbGlzdEZvclJlbGVhc2U6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy97cmVsZWFzZV9pZH0vcmVhY3Rpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0Rm9yVGVhbURpc2N1c3Npb25Db21tZW50SW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHMve2NvbW1lbnRfbnVtYmVyfS9yZWFjdGlvbnNcIixcbiAgICBdLFxuICAgIGxpc3RGb3JUZWFtRGlzY3Vzc2lvbkluT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L3JlYWN0aW9uc1wiLFxuICAgIF0sXG4gIH0sXG4gIHJlcG9zOiB7XG4gICAgYWNjZXB0SW52aXRhdGlvbjogW1xuICAgICAgXCJQQVRDSCAvdXNlci9yZXBvc2l0b3J5X2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInJlcG9zXCIsIFwiYWNjZXB0SW52aXRhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBhY2NlcHRJbnZpdGF0aW9uRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUEFUQ0ggL3VzZXIvcmVwb3NpdG9yeV9pbnZpdGF0aW9ucy97aW52aXRhdGlvbl9pZH1cIixcbiAgICBdLFxuICAgIGFkZEFwcEFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy9hcHBzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImFwcHNcIiB9LFxuICAgIF0sXG4gICAgYWRkQ29sbGFib3JhdG9yOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfVwiXSxcbiAgICBhZGRTdGF0dXNDaGVja0NvbnRleHRzOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrcy9jb250ZXh0c1wiLFxuICAgICAge30sXG4gICAgICB7IG1hcFRvRGF0YTogXCJjb250ZXh0c1wiIH0sXG4gICAgXSxcbiAgICBhZGRUZWFtQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3RlYW1zXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcInRlYW1zXCIgfSxcbiAgICBdLFxuICAgIGFkZFVzZXJBY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdXNlcnNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwidXNlcnNcIiB9LFxuICAgIF0sXG4gICAgY2FuY2VsUGFnZXNEZXBsb3ltZW50OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2RlcGxveW1lbnRzL3twYWdlc19kZXBsb3ltZW50X2lkfS9jYW5jZWxcIixcbiAgICBdLFxuICAgIGNoZWNrQXV0b21hdGVkU2VjdXJpdHlGaXhlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F1dG9tYXRlZC1zZWN1cml0eS1maXhlc1wiLFxuICAgIF0sXG4gICAgY2hlY2tDb2xsYWJvcmF0b3I6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9XCJdLFxuICAgIGNoZWNrUHJpdmF0ZVZ1bG5lcmFiaWxpdHlSZXBvcnRpbmc6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcml2YXRlLXZ1bG5lcmFiaWxpdHktcmVwb3J0aW5nXCIsXG4gICAgXSxcbiAgICBjaGVja1Z1bG5lcmFiaWxpdHlBbGVydHM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS92dWxuZXJhYmlsaXR5LWFsZXJ0c1wiLFxuICAgIF0sXG4gICAgY29kZW93bmVyc0Vycm9yczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2Rlb3duZXJzL2Vycm9yc1wiXSxcbiAgICBjb21wYXJlQ29tbWl0czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21wYXJlL3tiYXNlfS4uLntoZWFkfVwiXSxcbiAgICBjb21wYXJlQ29tbWl0c1dpdGhCYXNlaGVhZDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbXBhcmUve2Jhc2VoZWFkfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlQXR0ZXN0YXRpb246IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F0dGVzdGF0aW9uc1wiXSxcbiAgICBjcmVhdGVBdXRvbGluazogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXV0b2xpbmtzXCJdLFxuICAgIGNyZWF0ZUNvbW1pdENvbW1lbnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97Y29tbWl0X3NoYX0vY29tbWVudHNcIixcbiAgICBdLFxuICAgIGNyZWF0ZUNvbW1pdFNpZ25hdHVyZVByb3RlY3Rpb246IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zaWduYXR1cmVzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVDb21taXRTdGF0dXM6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXR1c2VzL3tzaGF9XCJdLFxuICAgIGNyZWF0ZURlcGxveUtleTogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30va2V5c1wiXSxcbiAgICBjcmVhdGVEZXBsb3ltZW50OiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50c1wiXSxcbiAgICBjcmVhdGVEZXBsb3ltZW50QnJhbmNoUG9saWN5OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudC1icmFuY2gtcG9saWNpZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZURlcGxveW1lbnRQcm90ZWN0aW9uUnVsZTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnRfcHJvdGVjdGlvbl9ydWxlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlRGVwbG95bWVudFN0YXR1czogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50cy97ZGVwbG95bWVudF9pZH0vc3RhdHVzZXNcIixcbiAgICBdLFxuICAgIGNyZWF0ZURpc3BhdGNoRXZlbnQ6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Rpc3BhdGNoZXNcIl0sXG4gICAgY3JlYXRlRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIvcmVwb3NcIl0sXG4gICAgY3JlYXRlRm9yazogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vZm9ya3NcIl0sXG4gICAgY3JlYXRlSW5Pcmc6IFtcIlBPU1QgL29yZ3Mve29yZ30vcmVwb3NcIl0sXG4gICAgY3JlYXRlT3JVcGRhdGVDdXN0b21Qcm9wZXJ0aWVzVmFsdWVzOiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcm9wZXJ0aWVzL3ZhbHVlc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudDogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX1cIixcbiAgICBdLFxuICAgIGNyZWF0ZU9yVXBkYXRlRmlsZUNvbnRlbnRzOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbnRlbnRzL3twYXRofVwiXSxcbiAgICBjcmVhdGVPcmdSdWxlc2V0OiBbXCJQT1NUIC9vcmdzL3tvcmd9L3J1bGVzZXRzXCJdLFxuICAgIGNyZWF0ZVBhZ2VzRGVwbG95bWVudDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvZGVwbG95bWVudHNcIl0sXG4gICAgY3JlYXRlUGFnZXNTaXRlOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlc1wiXSxcbiAgICBjcmVhdGVSZWxlYXNlOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlc1wiXSxcbiAgICBjcmVhdGVSZXBvUnVsZXNldDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHNcIl0sXG4gICAgY3JlYXRlVXNpbmdUZW1wbGF0ZTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97dGVtcGxhdGVfb3duZXJ9L3t0ZW1wbGF0ZV9yZXBvfS9nZW5lcmF0ZVwiLFxuICAgIF0sXG4gICAgY3JlYXRlV2ViaG9vazogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3NcIl0sXG4gICAgZGVjbGluZUludml0YXRpb246IFtcbiAgICAgIFwiREVMRVRFIC91c2VyL3JlcG9zaXRvcnlfaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wicmVwb3NcIiwgXCJkZWNsaW5lSW52aXRhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBkZWNsaW5lSW52aXRhdGlvbkZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9yZXBvc2l0b3J5X2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlOiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99XCJdLFxuICAgIGRlbGV0ZUFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zXCIsXG4gICAgXSxcbiAgICBkZWxldGVBZG1pbkJyYW5jaFByb3RlY3Rpb246IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL2VuZm9yY2VfYWRtaW5zXCIsXG4gICAgXSxcbiAgICBkZWxldGVBbkVudmlyb25tZW50OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlQXV0b2xpbms6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYXV0b2xpbmtzL3thdXRvbGlua19pZH1cIl0sXG4gICAgZGVsZXRlQnJhbmNoUHJvdGVjdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb25cIixcbiAgICBdLFxuICAgIGRlbGV0ZUNvbW1pdENvbW1lbnQ6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWVudHMve2NvbW1lbnRfaWR9XCJdLFxuICAgIGRlbGV0ZUNvbW1pdFNpZ25hdHVyZVByb3RlY3Rpb246IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3JlcXVpcmVkX3NpZ25hdHVyZXNcIixcbiAgICBdLFxuICAgIGRlbGV0ZURlcGxveUtleTogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9rZXlzL3trZXlfaWR9XCJdLFxuICAgIGRlbGV0ZURlcGxveW1lbnQ6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50cy97ZGVwbG95bWVudF9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZURlcGxveW1lbnRCcmFuY2hQb2xpY3k6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHMve2Vudmlyb25tZW50X25hbWV9L2RlcGxveW1lbnQtYnJhbmNoLXBvbGljaWVzL3ticmFuY2hfcG9saWN5X2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlRmlsZTogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb250ZW50cy97cGF0aH1cIl0sXG4gICAgZGVsZXRlSW52aXRhdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2ludml0YXRpb25zL3tpbnZpdGF0aW9uX2lkfVwiLFxuICAgIF0sXG4gICAgZGVsZXRlT3JnUnVsZXNldDogW1wiREVMRVRFIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3tydWxlc2V0X2lkfVwiXSxcbiAgICBkZWxldGVQYWdlc1NpdGU6IFtcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXNcIl0sXG4gICAgZGVsZXRlUHVsbFJlcXVlc3RSZXZpZXdQcm90ZWN0aW9uOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9wdWxsX3JlcXVlc3RfcmV2aWV3c1wiLFxuICAgIF0sXG4gICAgZGVsZXRlUmVsZWFzZTogW1wiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy97cmVsZWFzZV9pZH1cIl0sXG4gICAgZGVsZXRlUmVsZWFzZUFzc2V0OiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMvYXNzZXRzL3thc3NldF9pZH1cIixcbiAgICBdLFxuICAgIGRlbGV0ZVJlcG9SdWxlc2V0OiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3tydWxlc2V0X2lkfVwiXSxcbiAgICBkZWxldGVXZWJob29rOiBbXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfVwiXSxcbiAgICBkaXNhYmxlQXV0b21hdGVkU2VjdXJpdHlGaXhlczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2F1dG9tYXRlZC1zZWN1cml0eS1maXhlc1wiLFxuICAgIF0sXG4gICAgZGlzYWJsZURlcGxveW1lbnRQcm90ZWN0aW9uUnVsZTogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudF9wcm90ZWN0aW9uX3J1bGVzL3twcm90ZWN0aW9uX3J1bGVfaWR9XCIsXG4gICAgXSxcbiAgICBkaXNhYmxlUHJpdmF0ZVZ1bG5lcmFiaWxpdHlSZXBvcnRpbmc6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wcml2YXRlLXZ1bG5lcmFiaWxpdHktcmVwb3J0aW5nXCIsXG4gICAgXSxcbiAgICBkaXNhYmxlVnVsbmVyYWJpbGl0eUFsZXJ0czogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L3Z1bG5lcmFiaWxpdHktYWxlcnRzXCIsXG4gICAgXSxcbiAgICBkb3dubG9hZEFyY2hpdmU6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS96aXBiYWxsL3tyZWZ9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1wicmVwb3NcIiwgXCJkb3dubG9hZFppcGJhbGxBcmNoaXZlXCJdIH0sXG4gICAgXSxcbiAgICBkb3dubG9hZFRhcmJhbGxBcmNoaXZlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RhcmJhbGwve3JlZn1cIl0sXG4gICAgZG93bmxvYWRaaXBiYWxsQXJjaGl2ZTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS96aXBiYWxsL3tyZWZ9XCJdLFxuICAgIGVuYWJsZUF1dG9tYXRlZFNlY3VyaXR5Rml4ZXM6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdXRvbWF0ZWQtc2VjdXJpdHktZml4ZXNcIixcbiAgICBdLFxuICAgIGVuYWJsZVByaXZhdGVWdWxuZXJhYmlsaXR5UmVwb3J0aW5nOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHJpdmF0ZS12dWxuZXJhYmlsaXR5LXJlcG9ydGluZ1wiLFxuICAgIF0sXG4gICAgZW5hYmxlVnVsbmVyYWJpbGl0eUFsZXJ0czogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3Z1bG5lcmFiaWxpdHktYWxlcnRzXCIsXG4gICAgXSxcbiAgICBnZW5lcmF0ZVJlbGVhc2VOb3RlczogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9yZWxlYXNlcy9nZW5lcmF0ZS1ub3Rlc1wiLFxuICAgIF0sXG4gICAgZ2V0OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99XCJdLFxuICAgIGdldEFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zXCIsXG4gICAgXSxcbiAgICBnZXRBZG1pbkJyYW5jaFByb3RlY3Rpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL2VuZm9yY2VfYWRtaW5zXCIsXG4gICAgXSxcbiAgICBnZXRBbGxEZXBsb3ltZW50UHJvdGVjdGlvblJ1bGVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50X3Byb3RlY3Rpb25fcnVsZXNcIixcbiAgICBdLFxuICAgIGdldEFsbEVudmlyb25tZW50czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9lbnZpcm9ubWVudHNcIl0sXG4gICAgZ2V0QWxsU3RhdHVzQ2hlY2tDb250ZXh0czogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrcy9jb250ZXh0c1wiLFxuICAgIF0sXG4gICAgZ2V0QWxsVG9waWNzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RvcGljc1wiXSxcbiAgICBnZXRBcHBzV2l0aEFjY2Vzc1RvUHJvdGVjdGVkQnJhbmNoOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvYXBwc1wiLFxuICAgIF0sXG4gICAgZ2V0QXV0b2xpbms6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYXV0b2xpbmtzL3thdXRvbGlua19pZH1cIl0sXG4gICAgZ2V0QnJhbmNoOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9XCJdLFxuICAgIGdldEJyYW5jaFByb3RlY3Rpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uXCIsXG4gICAgXSxcbiAgICBnZXRCcmFuY2hSdWxlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlcy9icmFuY2hlcy97YnJhbmNofVwiXSxcbiAgICBnZXRDbG9uZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdHJhZmZpYy9jbG9uZXNcIl0sXG4gICAgZ2V0Q29kZUZyZXF1ZW5jeVN0YXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXRzL2NvZGVfZnJlcXVlbmN5XCJdLFxuICAgIGdldENvbGxhYm9yYXRvclBlcm1pc3Npb25MZXZlbDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbGxhYm9yYXRvcnMve3VzZXJuYW1lfS9wZXJtaXNzaW9uXCIsXG4gICAgXSxcbiAgICBnZXRDb21iaW5lZFN0YXR1c0ZvclJlZjogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tyZWZ9L3N0YXR1c1wiXSxcbiAgICBnZXRDb21taXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97cmVmfVwiXSxcbiAgICBnZXRDb21taXRBY3Rpdml0eVN0YXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXRzL2NvbW1pdF9hY3Rpdml0eVwiXSxcbiAgICBnZXRDb21taXRDb21tZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1lbnRzL3tjb21tZW50X2lkfVwiXSxcbiAgICBnZXRDb21taXRTaWduYXR1cmVQcm90ZWN0aW9uOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zaWduYXR1cmVzXCIsXG4gICAgXSxcbiAgICBnZXRDb21tdW5pdHlQcm9maWxlTWV0cmljczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21tdW5pdHkvcHJvZmlsZVwiXSxcbiAgICBnZXRDb250ZW50OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbnRlbnRzL3twYXRofVwiXSxcbiAgICBnZXRDb250cmlidXRvcnNTdGF0czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zdGF0cy9jb250cmlidXRvcnNcIl0sXG4gICAgZ2V0Q3VzdG9tRGVwbG95bWVudFByb3RlY3Rpb25SdWxlOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50X3Byb3RlY3Rpb25fcnVsZXMve3Byb3RlY3Rpb25fcnVsZV9pZH1cIixcbiAgICBdLFxuICAgIGdldEN1c3RvbVByb3BlcnRpZXNWYWx1ZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcHJvcGVydGllcy92YWx1ZXNcIl0sXG4gICAgZ2V0RGVwbG95S2V5OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2tleXMve2tleV9pZH1cIl0sXG4gICAgZ2V0RGVwbG95bWVudDogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9kZXBsb3ltZW50cy97ZGVwbG95bWVudF9pZH1cIl0sXG4gICAgZ2V0RGVwbG95bWVudEJyYW5jaFBvbGljeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX0vZGVwbG95bWVudC1icmFuY2gtcG9saWNpZXMve2JyYW5jaF9wb2xpY3lfaWR9XCIsXG4gICAgXSxcbiAgICBnZXREZXBsb3ltZW50U3RhdHVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZGVwbG95bWVudHMve2RlcGxveW1lbnRfaWR9L3N0YXR1c2VzL3tzdGF0dXNfaWR9XCIsXG4gICAgXSxcbiAgICBnZXRFbnZpcm9ubWVudDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2Vudmlyb25tZW50cy97ZW52aXJvbm1lbnRfbmFtZX1cIixcbiAgICBdLFxuICAgIGdldExhdGVzdFBhZ2VzQnVpbGQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvYnVpbGRzL2xhdGVzdFwiXSxcbiAgICBnZXRMYXRlc3RSZWxlYXNlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL2xhdGVzdFwiXSxcbiAgICBnZXRPcmdSdWxlU3VpdGU6IFtcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy9ydWxlLXN1aXRlcy97cnVsZV9zdWl0ZV9pZH1cIl0sXG4gICAgZ2V0T3JnUnVsZVN1aXRlczogW1wiR0VUIC9vcmdzL3tvcmd9L3J1bGVzZXRzL3J1bGUtc3VpdGVzXCJdLFxuICAgIGdldE9yZ1J1bGVzZXQ6IFtcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0cy97cnVsZXNldF9pZH1cIl0sXG4gICAgZ2V0T3JnUnVsZXNldHM6IFtcIkdFVCAvb3Jncy97b3JnfS9ydWxlc2V0c1wiXSxcbiAgICBnZXRQYWdlczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlc1wiXSxcbiAgICBnZXRQYWdlc0J1aWxkOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2J1aWxkcy97YnVpbGRfaWR9XCJdLFxuICAgIGdldFBhZ2VzRGVwbG95bWVudDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3BhZ2VzL2RlcGxveW1lbnRzL3twYWdlc19kZXBsb3ltZW50X2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UGFnZXNIZWFsdGhDaGVjazogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlcy9oZWFsdGhcIl0sXG4gICAgZ2V0UGFydGljaXBhdGlvblN0YXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3N0YXRzL3BhcnRpY2lwYXRpb25cIl0sXG4gICAgZ2V0UHVsbFJlcXVlc3RSZXZpZXdQcm90ZWN0aW9uOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9wdWxsX3JlcXVlc3RfcmV2aWV3c1wiLFxuICAgIF0sXG4gICAgZ2V0UHVuY2hDYXJkU3RhdHM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc3RhdHMvcHVuY2hfY2FyZFwiXSxcbiAgICBnZXRSZWFkbWU6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVhZG1lXCJdLFxuICAgIGdldFJlYWRtZUluRGlyZWN0b3J5OiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlYWRtZS97ZGlyfVwiXSxcbiAgICBnZXRSZWxlYXNlOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfVwiXSxcbiAgICBnZXRSZWxlYXNlQXNzZXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMvYXNzZXRzL3thc3NldF9pZH1cIl0sXG4gICAgZ2V0UmVsZWFzZUJ5VGFnOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3RhZ3Mve3RhZ31cIl0sXG4gICAgZ2V0UmVwb1J1bGVTdWl0ZTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3J1bGUtc3VpdGVzL3tydWxlX3N1aXRlX2lkfVwiLFxuICAgIF0sXG4gICAgZ2V0UmVwb1J1bGVTdWl0ZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMvcnVsZS1zdWl0ZXNcIl0sXG4gICAgZ2V0UmVwb1J1bGVzZXQ6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcnVsZXNldHMve3J1bGVzZXRfaWR9XCJdLFxuICAgIGdldFJlcG9SdWxlc2V0SGlzdG9yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3J1bGVzZXRzL3tydWxlc2V0X2lkfS9oaXN0b3J5XCIsXG4gICAgXSxcbiAgICBnZXRSZXBvUnVsZXNldFZlcnNpb246IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0cy97cnVsZXNldF9pZH0vaGlzdG9yeS97dmVyc2lvbl9pZH1cIixcbiAgICBdLFxuICAgIGdldFJlcG9SdWxlc2V0czogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0c1wiXSxcbiAgICBnZXRTdGF0dXNDaGVja3NQcm90ZWN0aW9uOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzXCIsXG4gICAgXSxcbiAgICBnZXRUZWFtc1dpdGhBY2Nlc3NUb1Byb3RlY3RlZEJyYW5jaDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3RlYW1zXCIsXG4gICAgXSxcbiAgICBnZXRUb3BQYXRoczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS90cmFmZmljL3BvcHVsYXIvcGF0aHNcIl0sXG4gICAgZ2V0VG9wUmVmZXJyZXJzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RyYWZmaWMvcG9wdWxhci9yZWZlcnJlcnNcIl0sXG4gICAgZ2V0VXNlcnNXaXRoQWNjZXNzVG9Qcm90ZWN0ZWRCcmFuY2g6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy91c2Vyc1wiLFxuICAgIF0sXG4gICAgZ2V0Vmlld3M6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vdHJhZmZpYy92aWV3c1wiXSxcbiAgICBnZXRXZWJob29rOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfVwiXSxcbiAgICBnZXRXZWJob29rQ29uZmlnRm9yUmVwbzogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfS9jb25maWdcIixcbiAgICBdLFxuICAgIGdldFdlYmhvb2tEZWxpdmVyeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfS9kZWxpdmVyaWVzL3tkZWxpdmVyeV9pZH1cIixcbiAgICBdLFxuICAgIGxpc3RBY3Rpdml0aWVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2FjdGl2aXR5XCJdLFxuICAgIGxpc3RBdHRlc3RhdGlvbnM6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdHRlc3RhdGlvbnMve3N1YmplY3RfZGlnZXN0fVwiLFxuICAgIF0sXG4gICAgbGlzdEF1dG9saW5rczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9hdXRvbGlua3NcIl0sXG4gICAgbGlzdEJyYW5jaGVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzXCJdLFxuICAgIGxpc3RCcmFuY2hlc0ZvckhlYWRDb21taXQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb21taXRzL3tjb21taXRfc2hhfS9icmFuY2hlcy13aGVyZS1oZWFkXCIsXG4gICAgXSxcbiAgICBsaXN0Q29sbGFib3JhdG9yczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb2xsYWJvcmF0b3JzXCJdLFxuICAgIGxpc3RDb21tZW50c0ZvckNvbW1pdDogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve2NvbW1pdF9zaGF9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBsaXN0Q29tbWl0Q29tbWVudHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1lbnRzXCJdLFxuICAgIGxpc3RDb21taXRTdGF0dXNlc0ZvclJlZjogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHMve3JlZn0vc3RhdHVzZXNcIixcbiAgICBdLFxuICAgIGxpc3RDb21taXRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1pdHNcIl0sXG4gICAgbGlzdENvbnRyaWJ1dG9yczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9jb250cmlidXRvcnNcIl0sXG4gICAgbGlzdEN1c3RvbURlcGxveW1lbnRSdWxlSW50ZWdyYXRpb25zOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50X3Byb3RlY3Rpb25fcnVsZXMvYXBwc1wiLFxuICAgIF0sXG4gICAgbGlzdERlcGxveUtleXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30va2V5c1wiXSxcbiAgICBsaXN0RGVwbG95bWVudEJyYW5jaFBvbGljaWVzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50LWJyYW5jaC1wb2xpY2llc1wiLFxuICAgIF0sXG4gICAgbGlzdERlcGxveW1lbnRTdGF0dXNlczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzL3tkZXBsb3ltZW50X2lkfS9zdGF0dXNlc1wiLFxuICAgIF0sXG4gICAgbGlzdERlcGxveW1lbnRzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2RlcGxveW1lbnRzXCJdLFxuICAgIGxpc3RGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3JlcG9zXCJdLFxuICAgIGxpc3RGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9yZXBvc1wiXSxcbiAgICBsaXN0Rm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3JlcG9zXCJdLFxuICAgIGxpc3RGb3JrczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9mb3Jrc1wiXSxcbiAgICBsaXN0SW52aXRhdGlvbnM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaW52aXRhdGlvbnNcIl0sXG4gICAgbGlzdEludml0YXRpb25zRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9yZXBvc2l0b3J5X2ludml0YXRpb25zXCJdLFxuICAgIGxpc3RMYW5ndWFnZXM6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vbGFuZ3VhZ2VzXCJdLFxuICAgIGxpc3RQYWdlc0J1aWxkczogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9wYWdlcy9idWlsZHNcIl0sXG4gICAgbGlzdFB1YmxpYzogW1wiR0VUIC9yZXBvc2l0b3JpZXNcIl0sXG4gICAgbGlzdFB1bGxSZXF1ZXN0c0Fzc29jaWF0ZWRXaXRoQ29tbWl0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vY29tbWl0cy97Y29tbWl0X3NoYX0vcHVsbHNcIixcbiAgICBdLFxuICAgIGxpc3RSZWxlYXNlQXNzZXRzOiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vcmVsZWFzZXMve3JlbGVhc2VfaWR9L2Fzc2V0c1wiLFxuICAgIF0sXG4gICAgbGlzdFJlbGVhc2VzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzXCJdLFxuICAgIGxpc3RUYWdzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RhZ3NcIl0sXG4gICAgbGlzdFRlYW1zOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RlYW1zXCJdLFxuICAgIGxpc3RXZWJob29rRGVsaXZlcmllczogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfS9kZWxpdmVyaWVzXCIsXG4gICAgXSxcbiAgICBsaXN0V2ViaG9va3M6IFtcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3NcIl0sXG4gICAgbWVyZ2U6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L21lcmdlc1wiXSxcbiAgICBtZXJnZVVwc3RyZWFtOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9tZXJnZS11cHN0cmVhbVwiXSxcbiAgICBwaW5nV2ViaG9vazogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L3BpbmdzXCJdLFxuICAgIHJlZGVsaXZlcldlYmhvb2tEZWxpdmVyeTogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ob29rcy97aG9va19pZH0vZGVsaXZlcmllcy97ZGVsaXZlcnlfaWR9L2F0dGVtcHRzXCIsXG4gICAgXSxcbiAgICByZW1vdmVBcHBBY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy9hcHBzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImFwcHNcIiB9LFxuICAgIF0sXG4gICAgcmVtb3ZlQ29sbGFib3JhdG9yOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vY29sbGFib3JhdG9ycy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVTdGF0dXNDaGVja0NvbnRleHRzOiBbXG4gICAgICBcIkRFTEVURSAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9zdGF0dXNfY2hlY2tzL2NvbnRleHRzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImNvbnRleHRzXCIgfSxcbiAgICBdLFxuICAgIHJlbW92ZVN0YXR1c0NoZWNrUHJvdGVjdGlvbjogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrc1wiLFxuICAgIF0sXG4gICAgcmVtb3ZlVGVhbUFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJERUxFVEUgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3RlYW1zXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcInRlYW1zXCIgfSxcbiAgICBdLFxuICAgIHJlbW92ZVVzZXJBY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiREVMRVRFIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy91c2Vyc1wiLFxuICAgICAge30sXG4gICAgICB7IG1hcFRvRGF0YTogXCJ1c2Vyc1wiIH0sXG4gICAgXSxcbiAgICByZW5hbWVCcmFuY2g6IFtcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3JlbmFtZVwiXSxcbiAgICByZXBsYWNlQWxsVG9waWNzOiBbXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3RvcGljc1wiXSxcbiAgICByZXF1ZXN0UGFnZXNCdWlsZDogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXMvYnVpbGRzXCJdLFxuICAgIHNldEFkbWluQnJhbmNoUHJvdGVjdGlvbjogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL2VuZm9yY2VfYWRtaW5zXCIsXG4gICAgXSxcbiAgICBzZXRBcHBBY2Nlc3NSZXN0cmljdGlvbnM6IFtcbiAgICAgIFwiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9icmFuY2hlcy97YnJhbmNofS9wcm90ZWN0aW9uL3Jlc3RyaWN0aW9ucy9hcHBzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcImFwcHNcIiB9LFxuICAgIF0sXG4gICAgc2V0U3RhdHVzQ2hlY2tDb250ZXh0czogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrcy9jb250ZXh0c1wiLFxuICAgICAge30sXG4gICAgICB7IG1hcFRvRGF0YTogXCJjb250ZXh0c1wiIH0sXG4gICAgXSxcbiAgICBzZXRUZWFtQWNjZXNzUmVzdHJpY3Rpb25zOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXN0cmljdGlvbnMvdGVhbXNcIixcbiAgICAgIHt9LFxuICAgICAgeyBtYXBUb0RhdGE6IFwidGVhbXNcIiB9LFxuICAgIF0sXG4gICAgc2V0VXNlckFjY2Vzc1Jlc3RyaWN0aW9uczogW1xuICAgICAgXCJQVVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVzdHJpY3Rpb25zL3VzZXJzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgbWFwVG9EYXRhOiBcInVzZXJzXCIgfSxcbiAgICBdLFxuICAgIHRlc3RQdXNoV2ViaG9vazogW1wiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L3Rlc3RzXCJdLFxuICAgIHRyYW5zZmVyOiBbXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS90cmFuc2ZlclwiXSxcbiAgICB1cGRhdGU6IFtcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfVwiXSxcbiAgICB1cGRhdGVCcmFuY2hQcm90ZWN0aW9uOiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvblwiLFxuICAgIF0sXG4gICAgdXBkYXRlQ29tbWl0Q29tbWVudDogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2NvbW1lbnRzL3tjb21tZW50X2lkfVwiXSxcbiAgICB1cGRhdGVEZXBsb3ltZW50QnJhbmNoUG9saWN5OiBbXG4gICAgICBcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vZW52aXJvbm1lbnRzL3tlbnZpcm9ubWVudF9uYW1lfS9kZXBsb3ltZW50LWJyYW5jaC1wb2xpY2llcy97YnJhbmNoX3BvbGljeV9pZH1cIixcbiAgICBdLFxuICAgIHVwZGF0ZUluZm9ybWF0aW9uQWJvdXRQYWdlc1NpdGU6IFtcIlBVVCAvcmVwb3Mve293bmVyfS97cmVwb30vcGFnZXNcIl0sXG4gICAgdXBkYXRlSW52aXRhdGlvbjogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vaW52aXRhdGlvbnMve2ludml0YXRpb25faWR9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVPcmdSdWxlc2V0OiBbXCJQVVQgL29yZ3Mve29yZ30vcnVsZXNldHMve3J1bGVzZXRfaWR9XCJdLFxuICAgIHVwZGF0ZVB1bGxSZXF1ZXN0UmV2aWV3UHJvdGVjdGlvbjogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vYnJhbmNoZXMve2JyYW5jaH0vcHJvdGVjdGlvbi9yZXF1aXJlZF9wdWxsX3JlcXVlc3RfcmV2aWV3c1wiLFxuICAgIF0sXG4gICAgdXBkYXRlUmVsZWFzZTogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfVwiXSxcbiAgICB1cGRhdGVSZWxlYXNlQXNzZXQ6IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL2Fzc2V0cy97YXNzZXRfaWR9XCIsXG4gICAgXSxcbiAgICB1cGRhdGVSZXBvUnVsZXNldDogW1wiUFVUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9ydWxlc2V0cy97cnVsZXNldF9pZH1cIl0sXG4gICAgdXBkYXRlU3RhdHVzQ2hlY2tQb3RlY3Rpb246IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrc1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInJlcG9zXCIsIFwidXBkYXRlU3RhdHVzQ2hlY2tQcm90ZWN0aW9uXCJdIH0sXG4gICAgXSxcbiAgICB1cGRhdGVTdGF0dXNDaGVja1Byb3RlY3Rpb246IFtcbiAgICAgIFwiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2JyYW5jaGVzL3ticmFuY2h9L3Byb3RlY3Rpb24vcmVxdWlyZWRfc3RhdHVzX2NoZWNrc1wiLFxuICAgIF0sXG4gICAgdXBkYXRlV2ViaG9vazogW1wiUEFUQ0ggL3JlcG9zL3tvd25lcn0ve3JlcG99L2hvb2tzL3tob29rX2lkfVwiXSxcbiAgICB1cGRhdGVXZWJob29rQ29uZmlnRm9yUmVwbzogW1xuICAgICAgXCJQQVRDSCAvcmVwb3Mve293bmVyfS97cmVwb30vaG9va3Mve2hvb2tfaWR9L2NvbmZpZ1wiLFxuICAgIF0sXG4gICAgdXBsb2FkUmVsZWFzZUFzc2V0OiBbXG4gICAgICBcIlBPU1QgL3JlcG9zL3tvd25lcn0ve3JlcG99L3JlbGVhc2VzL3tyZWxlYXNlX2lkfS9hc3NldHN7P25hbWUsbGFiZWx9XCIsXG4gICAgICB7IGJhc2VVcmw6IFwiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb21cIiB9LFxuICAgIF0sXG4gIH0sXG4gIHNlYXJjaDoge1xuICAgIGNvZGU6IFtcIkdFVCAvc2VhcmNoL2NvZGVcIl0sXG4gICAgY29tbWl0czogW1wiR0VUIC9zZWFyY2gvY29tbWl0c1wiXSxcbiAgICBpc3N1ZXNBbmRQdWxsUmVxdWVzdHM6IFtcbiAgICAgIFwiR0VUIC9zZWFyY2gvaXNzdWVzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC5zZWFyY2guaXNzdWVzQW5kUHVsbFJlcXVlc3RzKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3Qvc2VhcmNoL3NlYXJjaCNzZWFyY2gtaXNzdWVzLWFuZC1wdWxsLXJlcXVlc3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGFiZWxzOiBbXCJHRVQgL3NlYXJjaC9sYWJlbHNcIl0sXG4gICAgcmVwb3M6IFtcIkdFVCAvc2VhcmNoL3JlcG9zaXRvcmllc1wiXSxcbiAgICB0b3BpY3M6IFtcIkdFVCAvc2VhcmNoL3RvcGljc1wiXSxcbiAgICB1c2VyczogW1wiR0VUIC9zZWFyY2gvdXNlcnNcIl0sXG4gIH0sXG4gIHNlY3JldFNjYW5uaW5nOiB7XG4gICAgY3JlYXRlUHVzaFByb3RlY3Rpb25CeXBhc3M6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjcmV0LXNjYW5uaW5nL3B1c2gtcHJvdGVjdGlvbi1ieXBhc3Nlc1wiLFxuICAgIF0sXG4gICAgZ2V0QWxlcnQ6IFtcbiAgICAgIFwiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICBnZXRTY2FuSGlzdG9yeTogW1wiR0VUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvc2Nhbi1oaXN0b3J5XCJdLFxuICAgIGxpc3RBbGVydHNGb3JFbnRlcnByaXNlOiBbXG4gICAgICBcIkdFVCAvZW50ZXJwcmlzZXMve2VudGVycHJpc2V9L3NlY3JldC1zY2FubmluZy9hbGVydHNcIixcbiAgICBdLFxuICAgIGxpc3RBbGVydHNGb3JPcmc6IFtcIkdFVCAvb3Jncy97b3JnfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzXCJdLFxuICAgIGxpc3RBbGVydHNGb3JSZXBvOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3JldC1zY2FubmluZy9hbGVydHNcIl0sXG4gICAgbGlzdExvY2F0aW9uc0ZvckFsZXJ0OiBbXG4gICAgICBcIkdFVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjcmV0LXNjYW5uaW5nL2FsZXJ0cy97YWxlcnRfbnVtYmVyfS9sb2NhdGlvbnNcIixcbiAgICBdLFxuICAgIHVwZGF0ZUFsZXJ0OiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWNyZXQtc2Nhbm5pbmcvYWxlcnRzL3thbGVydF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgfSxcbiAgc2VjdXJpdHlBZHZpc29yaWVzOiB7XG4gICAgY3JlYXRlRm9yazogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzL3tnaHNhX2lkfS9mb3Jrc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlUHJpdmF0ZVZ1bG5lcmFiaWxpdHlSZXBvcnQ6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjdXJpdHktYWR2aXNvcmllcy9yZXBvcnRzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVSZXBvc2l0b3J5QWR2aXNvcnk6IFtcbiAgICAgIFwiUE9TVCAvcmVwb3Mve293bmVyfS97cmVwb30vc2VjdXJpdHktYWR2aXNvcmllc1wiLFxuICAgIF0sXG4gICAgY3JlYXRlUmVwb3NpdG9yeUFkdmlzb3J5Q3ZlUmVxdWVzdDogW1xuICAgICAgXCJQT1NUIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzL3tnaHNhX2lkfS9jdmVcIixcbiAgICBdLFxuICAgIGdldEdsb2JhbEFkdmlzb3J5OiBbXCJHRVQgL2Fkdmlzb3JpZXMve2doc2FfaWR9XCJdLFxuICAgIGdldFJlcG9zaXRvcnlBZHZpc29yeTogW1xuICAgICAgXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3VyaXR5LWFkdmlzb3JpZXMve2doc2FfaWR9XCIsXG4gICAgXSxcbiAgICBsaXN0R2xvYmFsQWR2aXNvcmllczogW1wiR0VUIC9hZHZpc29yaWVzXCJdLFxuICAgIGxpc3RPcmdSZXBvc2l0b3J5QWR2aXNvcmllczogW1wiR0VUIC9vcmdzL3tvcmd9L3NlY3VyaXR5LWFkdmlzb3JpZXNcIl0sXG4gICAgbGlzdFJlcG9zaXRvcnlBZHZpc29yaWVzOiBbXCJHRVQgL3JlcG9zL3tvd25lcn0ve3JlcG99L3NlY3VyaXR5LWFkdmlzb3JpZXNcIl0sXG4gICAgdXBkYXRlUmVwb3NpdG9yeUFkdmlzb3J5OiBbXG4gICAgICBcIlBBVENIIC9yZXBvcy97b3duZXJ9L3tyZXBvfS9zZWN1cml0eS1hZHZpc29yaWVzL3tnaHNhX2lkfVwiLFxuICAgIF0sXG4gIH0sXG4gIHRlYW1zOiB7XG4gICAgYWRkT3JVcGRhdGVNZW1iZXJzaGlwRm9yVXNlckluT3JnOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9tZW1iZXJzaGlwcy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICBhZGRPclVwZGF0ZVByb2plY3RQZXJtaXNzaW9uc0luT3JnOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9wcm9qZWN0cy97cHJvamVjdF9pZH1cIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLmFkZE9yVXBkYXRlUHJvamVjdFBlcm1pc3Npb25zSW5PcmcoKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNhZGQtb3ItdXBkYXRlLXRlYW0tcHJvamVjdC1wZXJtaXNzaW9uc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFkZE9yVXBkYXRlUHJvamVjdFBlcm1pc3Npb25zTGVnYWN5OiBbXG4gICAgICBcIlBVVCAvdGVhbXMve3RlYW1faWR9L3Byb2plY3RzL3twcm9qZWN0X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QudGVhbXMuYWRkT3JVcGRhdGVQcm9qZWN0UGVybWlzc2lvbnNMZWdhY3koKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNhZGQtb3ItdXBkYXRlLXRlYW0tcHJvamVjdC1wZXJtaXNzaW9ucy1sZWdhY3lcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhZGRPclVwZGF0ZVJlcG9QZXJtaXNzaW9uc0luT3JnOiBbXG4gICAgICBcIlBVVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9yZXBvcy97b3duZXJ9L3tyZXBvfVwiLFxuICAgIF0sXG4gICAgY2hlY2tQZXJtaXNzaW9uc0ZvclByb2plY3RJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5jaGVja1Blcm1pc3Npb25zRm9yUHJvamVjdEluT3JnKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvdGVhbXMvdGVhbXMjY2hlY2stdGVhbS1wZXJtaXNzaW9ucy1mb3ItYS1wcm9qZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY2hlY2tQZXJtaXNzaW9uc0ZvclByb2plY3RMZWdhY3k6IFtcbiAgICAgIFwiR0VUIC90ZWFtcy97dGVhbV9pZH0vcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5jaGVja1Blcm1pc3Npb25zRm9yUHJvamVjdExlZ2FjeSgpIGlzIGRlcHJlY2F0ZWQsIHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9yZXN0L3RlYW1zL3RlYW1zI2NoZWNrLXRlYW0tcGVybWlzc2lvbnMtZm9yLWEtcHJvamVjdC1sZWdhY3lcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjaGVja1Blcm1pc3Npb25zRm9yUmVwb0luT3JnOiBbXG4gICAgICBcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9yZXBvcy97b3duZXJ9L3tyZXBvfVwiLFxuICAgIF0sXG4gICAgY3JlYXRlOiBbXCJQT1NUIC9vcmdzL3tvcmd9L3RlYW1zXCJdLFxuICAgIGNyZWF0ZURpc2N1c3Npb25Db21tZW50SW5Pcmc6IFtcbiAgICAgIFwiUE9TVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9ucy97ZGlzY3Vzc2lvbl9udW1iZXJ9L2NvbW1lbnRzXCIsXG4gICAgXSxcbiAgICBjcmVhdGVEaXNjdXNzaW9uSW5Pcmc6IFtcIlBPU1QgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnNcIl0sXG4gICAgZGVsZXRlRGlzY3Vzc2lvbkNvbW1lbnRJbk9yZzogW1xuICAgICAgXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICBkZWxldGVEaXNjdXNzaW9uSW5Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn1cIixcbiAgICBdLFxuICAgIGRlbGV0ZUluT3JnOiBbXCJERUxFVEUgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z31cIl0sXG4gICAgZ2V0QnlOYW1lOiBbXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z31cIl0sXG4gICAgZ2V0RGlzY3Vzc2lvbkNvbW1lbnRJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50cy97Y29tbWVudF9udW1iZXJ9XCIsXG4gICAgXSxcbiAgICBnZXREaXNjdXNzaW9uSW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn1cIixcbiAgICBdLFxuICAgIGdldE1lbWJlcnNoaXBGb3JVc2VySW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L21lbWJlcnNoaXBzL3t1c2VybmFtZX1cIixcbiAgICBdLFxuICAgIGxpc3Q6IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtc1wiXSxcbiAgICBsaXN0Q2hpbGRJbk9yZzogW1wiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3RlYW1zXCJdLFxuICAgIGxpc3REaXNjdXNzaW9uQ29tbWVudHNJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vZGlzY3Vzc2lvbnMve2Rpc2N1c3Npb25fbnVtYmVyfS9jb21tZW50c1wiLFxuICAgIF0sXG4gICAgbGlzdERpc2N1c3Npb25zSW5Pcmc6IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9kaXNjdXNzaW9uc1wiXSxcbiAgICBsaXN0Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci90ZWFtc1wiXSxcbiAgICBsaXN0TWVtYmVyc0luT3JnOiBbXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vbWVtYmVyc1wiXSxcbiAgICBsaXN0UGVuZGluZ0ludml0YXRpb25zSW5Pcmc6IFtcbiAgICAgIFwiR0VUIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2ludml0YXRpb25zXCIsXG4gICAgXSxcbiAgICBsaXN0UHJvamVjdHNJbk9yZzogW1xuICAgICAgXCJHRVQgL29yZ3Mve29yZ30vdGVhbXMve3RlYW1fc2x1Z30vcHJvamVjdHNcIixcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBkZXByZWNhdGVkOlxuICAgICAgICAgIFwib2N0b2tpdC5yZXN0LnRlYW1zLmxpc3RQcm9qZWN0c0luT3JnKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvdGVhbXMvdGVhbXMjbGlzdC10ZWFtLXByb2plY3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdFByb2plY3RzTGVnYWN5OiBbXG4gICAgICBcIkdFVCAvdGVhbXMve3RlYW1faWR9L3Byb2plY3RzXCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5saXN0UHJvamVjdHNMZWdhY3koKSBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vcmVzdC90ZWFtcy90ZWFtcyNsaXN0LXRlYW0tcHJvamVjdHMtbGVnYWN5XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbGlzdFJlcG9zSW5Pcmc6IFtcIkdFVCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9yZXBvc1wiXSxcbiAgICByZW1vdmVNZW1iZXJzaGlwRm9yVXNlckluT3JnOiBbXG4gICAgICBcIkRFTEVURSAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfS9tZW1iZXJzaGlwcy97dXNlcm5hbWV9XCIsXG4gICAgXSxcbiAgICByZW1vdmVQcm9qZWN0SW5Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3Byb2plY3RzL3twcm9qZWN0X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6XG4gICAgICAgICAgXCJvY3Rva2l0LnJlc3QudGVhbXMucmVtb3ZlUHJvamVjdEluT3JnKCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvdGVhbXMvdGVhbXMjcmVtb3ZlLWEtcHJvamVjdC1mcm9tLWEtdGVhbVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHJlbW92ZVByb2plY3RMZWdhY3k6IFtcbiAgICAgIFwiREVMRVRFIC90ZWFtcy97dGVhbV9pZH0vcHJvamVjdHMve3Byb2plY3RfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZGVwcmVjYXRlZDpcbiAgICAgICAgICBcIm9jdG9raXQucmVzdC50ZWFtcy5yZW1vdmVQcm9qZWN0TGVnYWN5KCkgaXMgZGVwcmVjYXRlZCwgc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL3Jlc3QvdGVhbXMvdGVhbXMjcmVtb3ZlLWEtcHJvamVjdC1mcm9tLWEtdGVhbS1sZWdhY3lcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICByZW1vdmVSZXBvSW5Pcmc6IFtcbiAgICAgIFwiREVMRVRFIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L3JlcG9zL3tvd25lcn0ve3JlcG99XCIsXG4gICAgXSxcbiAgICB1cGRhdGVEaXNjdXNzaW9uQ29tbWVudEluT3JnOiBbXG4gICAgICBcIlBBVENIIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn0vY29tbWVudHMve2NvbW1lbnRfbnVtYmVyfVwiLFxuICAgIF0sXG4gICAgdXBkYXRlRGlzY3Vzc2lvbkluT3JnOiBbXG4gICAgICBcIlBBVENIIC9vcmdzL3tvcmd9L3RlYW1zL3t0ZWFtX3NsdWd9L2Rpc2N1c3Npb25zL3tkaXNjdXNzaW9uX251bWJlcn1cIixcbiAgICBdLFxuICAgIHVwZGF0ZUluT3JnOiBbXCJQQVRDSCAvb3Jncy97b3JnfS90ZWFtcy97dGVhbV9zbHVnfVwiXSxcbiAgfSxcbiAgdXNlcnM6IHtcbiAgICBhZGRFbWFpbEZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiUE9TVCAvdXNlci9lbWFpbHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImFkZEVtYWlsRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGFkZEVtYWlsRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIlBPU1QgL3VzZXIvZW1haWxzXCJdLFxuICAgIGFkZFNvY2lhbEFjY291bnRGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9zb2NpYWxfYWNjb3VudHNcIl0sXG4gICAgYmxvY2s6IFtcIlBVVCAvdXNlci9ibG9ja3Mve3VzZXJuYW1lfVwiXSxcbiAgICBjaGVja0Jsb2NrZWQ6IFtcIkdFVCAvdXNlci9ibG9ja3Mve3VzZXJuYW1lfVwiXSxcbiAgICBjaGVja0ZvbGxvd2luZ0ZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9mb2xsb3dpbmcve3RhcmdldF91c2VyfVwiXSxcbiAgICBjaGVja1BlcnNvbklzRm9sbG93ZWRCeUF1dGhlbnRpY2F0ZWQ6IFtcIkdFVCAvdXNlci9mb2xsb3dpbmcve3VzZXJuYW1lfVwiXSxcbiAgICBjcmVhdGVHcGdLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIlBPU1QgL3VzZXIvZ3BnX2tleXNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImNyZWF0ZUdwZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBjcmVhdGVHcGdLZXlGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiUE9TVCAvdXNlci9ncGdfa2V5c1wiXSxcbiAgICBjcmVhdGVQdWJsaWNTc2hLZXlGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIlBPU1QgL3VzZXIva2V5c1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiY3JlYXRlUHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGNyZWF0ZVB1YmxpY1NzaEtleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL2tleXNcIl0sXG4gICAgY3JlYXRlU3NoU2lnbmluZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJQT1NUIC91c2VyL3NzaF9zaWduaW5nX2tleXNcIl0sXG4gICAgZGVsZXRlRW1haWxGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9lbWFpbHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImRlbGV0ZUVtYWlsRm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGRlbGV0ZUVtYWlsRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9lbWFpbHNcIl0sXG4gICAgZGVsZXRlR3BnS2V5Rm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJERUxFVEUgL3VzZXIvZ3BnX2tleXMve2dwZ19rZXlfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJkZWxldGVHcGdLZXlGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgZGVsZXRlR3BnS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9ncGdfa2V5cy97Z3BnX2tleV9pZH1cIl0sXG4gICAgZGVsZXRlUHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJERUxFVEUgL3VzZXIva2V5cy97a2V5X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiZGVsZXRlUHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGRlbGV0ZVB1YmxpY1NzaEtleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJERUxFVEUgL3VzZXIva2V5cy97a2V5X2lkfVwiXSxcbiAgICBkZWxldGVTb2NpYWxBY2NvdW50Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkRFTEVURSAvdXNlci9zb2NpYWxfYWNjb3VudHNcIl0sXG4gICAgZGVsZXRlU3NoU2lnbmluZ0tleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXG4gICAgICBcIkRFTEVURSAvdXNlci9zc2hfc2lnbmluZ19rZXlzL3tzc2hfc2lnbmluZ19rZXlfaWR9XCIsXG4gICAgXSxcbiAgICBmb2xsb3c6IFtcIlBVVCAvdXNlci9mb2xsb3dpbmcve3VzZXJuYW1lfVwiXSxcbiAgICBnZXRBdXRoZW50aWNhdGVkOiBbXCJHRVQgL3VzZXJcIl0sXG4gICAgZ2V0QnlJZDogW1wiR0VUIC91c2VyL3thY2NvdW50X2lkfVwiXSxcbiAgICBnZXRCeVVzZXJuYW1lOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX1cIl0sXG4gICAgZ2V0Q29udGV4dEZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9ob3ZlcmNhcmRcIl0sXG4gICAgZ2V0R3BnS2V5Rm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIvZ3BnX2tleXMve2dwZ19rZXlfaWR9XCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJnZXRHcGdLZXlGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgZ2V0R3BnS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9ncGdfa2V5cy97Z3BnX2tleV9pZH1cIl0sXG4gICAgZ2V0UHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIva2V5cy97a2V5X2lkfVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwiZ2V0UHVibGljU3NoS2V5Rm9yQXV0aGVudGljYXRlZFVzZXJcIl0gfSxcbiAgICBdLFxuICAgIGdldFB1YmxpY1NzaEtleUZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIva2V5cy97a2V5X2lkfVwiXSxcbiAgICBnZXRTc2hTaWduaW5nS2V5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiR0VUIC91c2VyL3NzaF9zaWduaW5nX2tleXMve3NzaF9zaWduaW5nX2tleV9pZH1cIixcbiAgICBdLFxuICAgIGxpc3Q6IFtcIkdFVCAvdXNlcnNcIl0sXG4gICAgbGlzdEF0dGVzdGF0aW9uczogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2F0dGVzdGF0aW9ucy97c3ViamVjdF9kaWdlc3R9XCJdLFxuICAgIGxpc3RCbG9ja2VkQnlBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9ibG9ja3NcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImxpc3RCbG9ja2VkQnlBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgbGlzdEJsb2NrZWRCeUF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvYmxvY2tzXCJdLFxuICAgIGxpc3RFbWFpbHNGb3JBdXRoZW50aWNhdGVkOiBbXG4gICAgICBcIkdFVCAvdXNlci9lbWFpbHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImxpc3RFbWFpbHNGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgbGlzdEVtYWlsc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvZW1haWxzXCJdLFxuICAgIGxpc3RGb2xsb3dlZEJ5QXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIvZm9sbG93aW5nXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJsaXN0Rm9sbG93ZWRCeUF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0Rm9sbG93ZWRCeUF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvZm9sbG93aW5nXCJdLFxuICAgIGxpc3RGb2xsb3dlcnNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2ZvbGxvd2Vyc1wiXSxcbiAgICBsaXN0Rm9sbG93ZXJzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2ZvbGxvd2Vyc1wiXSxcbiAgICBsaXN0Rm9sbG93aW5nRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L2ZvbGxvd2luZ1wiXSxcbiAgICBsaXN0R3BnS2V5c0ZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiR0VUIC91c2VyL2dwZ19rZXlzXCIsXG4gICAgICB7fSxcbiAgICAgIHsgcmVuYW1lZDogW1widXNlcnNcIiwgXCJsaXN0R3BnS2V5c0ZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBsaXN0R3BnS2V5c0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvZ3BnX2tleXNcIl0sXG4gICAgbGlzdEdwZ0tleXNGb3JVc2VyOiBbXCJHRVQgL3VzZXJzL3t1c2VybmFtZX0vZ3BnX2tleXNcIl0sXG4gICAgbGlzdFB1YmxpY0VtYWlsc0ZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiR0VUIC91c2VyL3B1YmxpY19lbWFpbHNcIixcbiAgICAgIHt9LFxuICAgICAgeyByZW5hbWVkOiBbXCJ1c2Vyc1wiLCBcImxpc3RQdWJsaWNFbWFpbHNGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgbGlzdFB1YmxpY0VtYWlsc0ZvckF1dGhlbnRpY2F0ZWRVc2VyOiBbXCJHRVQgL3VzZXIvcHVibGljX2VtYWlsc1wiXSxcbiAgICBsaXN0UHVibGljS2V5c0ZvclVzZXI6IFtcIkdFVCAvdXNlcnMve3VzZXJuYW1lfS9rZXlzXCJdLFxuICAgIGxpc3RQdWJsaWNTc2hLZXlzRm9yQXV0aGVudGljYXRlZDogW1xuICAgICAgXCJHRVQgL3VzZXIva2V5c1wiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwibGlzdFB1YmxpY1NzaEtleXNGb3JBdXRoZW50aWNhdGVkVXNlclwiXSB9LFxuICAgIF0sXG4gICAgbGlzdFB1YmxpY1NzaEtleXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL2tleXNcIl0sXG4gICAgbGlzdFNvY2lhbEFjY291bnRzRm9yQXV0aGVudGljYXRlZFVzZXI6IFtcIkdFVCAvdXNlci9zb2NpYWxfYWNjb3VudHNcIl0sXG4gICAgbGlzdFNvY2lhbEFjY291bnRzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3NvY2lhbF9hY2NvdW50c1wiXSxcbiAgICBsaXN0U3NoU2lnbmluZ0tleXNGb3JBdXRoZW50aWNhdGVkVXNlcjogW1wiR0VUIC91c2VyL3NzaF9zaWduaW5nX2tleXNcIl0sXG4gICAgbGlzdFNzaFNpZ25pbmdLZXlzRm9yVXNlcjogW1wiR0VUIC91c2Vycy97dXNlcm5hbWV9L3NzaF9zaWduaW5nX2tleXNcIl0sXG4gICAgc2V0UHJpbWFyeUVtYWlsVmlzaWJpbGl0eUZvckF1dGhlbnRpY2F0ZWQ6IFtcbiAgICAgIFwiUEFUQ0ggL3VzZXIvZW1haWwvdmlzaWJpbGl0eVwiLFxuICAgICAge30sXG4gICAgICB7IHJlbmFtZWQ6IFtcInVzZXJzXCIsIFwic2V0UHJpbWFyeUVtYWlsVmlzaWJpbGl0eUZvckF1dGhlbnRpY2F0ZWRVc2VyXCJdIH0sXG4gICAgXSxcbiAgICBzZXRQcmltYXJ5RW1haWxWaXNpYmlsaXR5Rm9yQXV0aGVudGljYXRlZFVzZXI6IFtcbiAgICAgIFwiUEFUQ0ggL3VzZXIvZW1haWwvdmlzaWJpbGl0eVwiLFxuICAgIF0sXG4gICAgdW5ibG9jazogW1wiREVMRVRFIC91c2VyL2Jsb2Nrcy97dXNlcm5hbWV9XCJdLFxuICAgIHVuZm9sbG93OiBbXCJERUxFVEUgL3VzZXIvZm9sbG93aW5nL3t1c2VybmFtZX1cIl0sXG4gICAgdXBkYXRlQXV0aGVudGljYXRlZDogW1wiUEFUQ0ggL3VzZXJcIl0sXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFbmRwb2ludHM7XG4iLCAiaW1wb3J0IHR5cGUgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRPcHRpb25zLCBSZXF1ZXN0UGFyYW1ldGVycywgUm91dGUgfSBmcm9tIFwiQG9jdG9raXQvdHlwZXNcIjtcbmltcG9ydCBFTkRQT0lOVFMgZnJvbSBcIi4vZ2VuZXJhdGVkL2VuZHBvaW50cy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSZXN0RW5kcG9pbnRNZXRob2RzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkL21ldGhvZC10eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludERlY29yYXRpb25zIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuLy8gVGhlIGZvbGxvd2luZyBjb2RlIHdhcyByZWZhY3RvcmVkIGluOiBodHRwczovL2dpdGh1Yi5jb20vb2N0b2tpdC9wbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzLmpzL3B1bGwvNjIyXG4vLyB0byBvcHRpbWlzZSB0aGUgcnVudGltZSBwZXJmb3JtYW5jZSBvZiBPY3Rva2l0IGluaXRpYWxpemF0aW9uLlxuLy9cbi8vIFRoaXMgb3B0aW1pemF0aW9uIGludm9sdmVzIHR3byBrZXkgY2hhbmdlczpcbi8vIDEuIFByZS1Db21wdXRhdGlvbjogVGhlIGVuZHBvaW50IG1ldGhvZHMgYXJlIHByZS1jb21wdXRlZCBvbmNlIGF0IG1vZHVsZSBsb2FkXG4vLyAgICB0aW1lIGluc3RlYWQgb2YgZWFjaCBpbnZvY2F0aW9uIG9mIGBlbmRwb2ludHNUb01ldGhvZHMoKWAuXG4vLyAyLiBMYXp5IGluaXRpYWxpemF0aW9uIGFuZCBjYWNoaW5nOiBXZSB1c2UgYSBQcm94eSBmb3IgZWFjaCBzY29wZSB0byBvbmx5XG4vLyAgICBpbml0aWFsaXplIG1ldGhvZHMgdGhhdCBhcmUgYWN0dWFsbHkgY2FsbGVkLiBUaGlzIHJlZHVjZXMgcnVudGltZSBvdmVyaGVhZFxuLy8gICAgYXMgdGhlIGluaXRpYWxpemF0aW9uIGludm9sdmVzIGRlZXAgbWVyZ2luZyBvZiBvYmplY3RzLiBUaGUgaW5pdGlhbGl6ZWRcbi8vICAgIG1ldGhvZHMgYXJlIHRoZW4gY2FjaGVkIGZvciBmdXR1cmUgdXNlLlxuXG5jb25zdCBlbmRwb2ludE1ldGhvZHNNYXAgPSBuZXcgTWFwKCk7XG5mb3IgKGNvbnN0IFtzY29wZSwgZW5kcG9pbnRzXSBvZiBPYmplY3QuZW50cmllcyhFTkRQT0lOVFMpKSB7XG4gIGZvciAoY29uc3QgW21ldGhvZE5hbWUsIGVuZHBvaW50XSBvZiBPYmplY3QuZW50cmllcyhlbmRwb2ludHMpKSB7XG4gICAgY29uc3QgW3JvdXRlLCBkZWZhdWx0cywgZGVjb3JhdGlvbnNdID0gZW5kcG9pbnQ7XG4gICAgY29uc3QgW21ldGhvZCwgdXJsXSA9IHJvdXRlLnNwbGl0KC8gLyk7XG4gICAgY29uc3QgZW5kcG9pbnREZWZhdWx0cyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgdXJsLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRzLFxuICAgICk7XG5cbiAgICBpZiAoIWVuZHBvaW50TWV0aG9kc01hcC5oYXMoc2NvcGUpKSB7XG4gICAgICBlbmRwb2ludE1ldGhvZHNNYXAuc2V0KHNjb3BlLCBuZXcgTWFwKCkpO1xuICAgIH1cblxuICAgIGVuZHBvaW50TWV0aG9kc01hcC5nZXQoc2NvcGUpLnNldChtZXRob2ROYW1lLCB7XG4gICAgICBzY29wZSxcbiAgICAgIG1ldGhvZE5hbWUsXG4gICAgICBlbmRwb2ludERlZmF1bHRzLFxuICAgICAgZGVjb3JhdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cblxudHlwZSBQcm94eVRhcmdldCA9IHtcbiAgb2N0b2tpdDogT2N0b2tpdDtcbiAgc2NvcGU6IHN0cmluZztcbiAgY2FjaGU6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gYW55Pjtcbn07XG5cbmNvbnN0IGhhbmRsZXIgPSB7XG4gIGhhcyh7IHNjb3BlIH06IFByb3h5VGFyZ2V0LCBtZXRob2ROYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZW5kcG9pbnRNZXRob2RzTWFwLmdldChzY29wZSkuaGFzKG1ldGhvZE5hbWUpO1xuICB9LFxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0OiBQcm94eVRhcmdldCwgbWV0aG9kTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB0aGlzLmdldCh0YXJnZXQsIG1ldGhvZE5hbWUpLCAvLyBlbnN1cmVzIG1ldGhvZCBpcyBpbiB0aGUgY2FjaGVcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB9O1xuICB9LFxuICBkZWZpbmVQcm9wZXJ0eShcbiAgICB0YXJnZXQ6IFByb3h5VGFyZ2V0LFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IsXG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQuY2FjaGUsIG1ldGhvZE5hbWUsIGRlc2NyaXB0b3IpO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQ6IFByb3h5VGFyZ2V0LCBtZXRob2ROYW1lOiBzdHJpbmcpIHtcbiAgICBkZWxldGUgdGFyZ2V0LmNhY2hlW21ldGhvZE5hbWVdO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvd25LZXlzKHsgc2NvcGUgfTogUHJveHlUYXJnZXQpIHtcbiAgICByZXR1cm4gWy4uLmVuZHBvaW50TWV0aG9kc01hcC5nZXQoc2NvcGUpLmtleXMoKV07XG4gIH0sXG4gIHNldCh0YXJnZXQ6IFByb3h5VGFyZ2V0LCBtZXRob2ROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gKHRhcmdldC5jYWNoZVttZXRob2ROYW1lXSA9IHZhbHVlKTtcbiAgfSxcbiAgZ2V0KHsgb2N0b2tpdCwgc2NvcGUsIGNhY2hlIH06IFByb3h5VGFyZ2V0LCBtZXRob2ROYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoY2FjaGVbbWV0aG9kTmFtZV0pIHtcbiAgICAgIHJldHVybiBjYWNoZVttZXRob2ROYW1lXTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRob2QgPSBlbmRwb2ludE1ldGhvZHNNYXAuZ2V0KHNjb3BlKS5nZXQobWV0aG9kTmFtZSk7XG4gICAgaWYgKCFtZXRob2QpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgeyBlbmRwb2ludERlZmF1bHRzLCBkZWNvcmF0aW9ucyB9ID0gbWV0aG9kO1xuXG4gICAgaWYgKGRlY29yYXRpb25zKSB7XG4gICAgICBjYWNoZVttZXRob2ROYW1lXSA9IGRlY29yYXRlKFxuICAgICAgICBvY3Rva2l0LFxuICAgICAgICBzY29wZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZW5kcG9pbnREZWZhdWx0cyxcbiAgICAgICAgZGVjb3JhdGlvbnMsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZVttZXRob2ROYW1lXSA9IG9jdG9raXQucmVxdWVzdC5kZWZhdWx0cyhlbmRwb2ludERlZmF1bHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGVbbWV0aG9kTmFtZV07XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5kcG9pbnRzVG9NZXRob2RzKG9jdG9raXQ6IE9jdG9raXQpOiBSZXN0RW5kcG9pbnRNZXRob2RzIHtcbiAgY29uc3QgbmV3TWV0aG9kcyA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogb2JqZWN0IH07XG5cbiAgZm9yIChjb25zdCBzY29wZSBvZiBlbmRwb2ludE1ldGhvZHNNYXAua2V5cygpKSB7XG4gICAgbmV3TWV0aG9kc1tzY29wZV0gPSBuZXcgUHJveHkoeyBvY3Rva2l0LCBzY29wZSwgY2FjaGU6IHt9IH0sIGhhbmRsZXIpO1xuICB9XG5cbiAgcmV0dXJuIG5ld01ldGhvZHMgYXMgUmVzdEVuZHBvaW50TWV0aG9kcztcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUoXG4gIG9jdG9raXQ6IE9jdG9raXQsXG4gIHNjb3BlOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgZGVmYXVsdHM6IEVuZHBvaW50T3B0aW9ucyxcbiAgZGVjb3JhdGlvbnM6IEVuZHBvaW50RGVjb3JhdGlvbnMsXG4pIHtcbiAgY29uc3QgcmVxdWVzdFdpdGhEZWZhdWx0cyA9IG9jdG9raXQucmVxdWVzdC5kZWZhdWx0cyhkZWZhdWx0cyk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgZnVuY3Rpb24gd2l0aERlY29yYXRpb25zKFxuICAgIC4uLmFyZ3M6IFtSb3V0ZSwgUmVxdWVzdFBhcmFtZXRlcnM/XSB8IFtFbmRwb2ludE9wdGlvbnNdXG4gICkge1xuICAgIC8vIEB0cy1pZ25vcmUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yNTQ4OFxuICAgIGxldCBvcHRpb25zID0gcmVxdWVzdFdpdGhEZWZhdWx0cy5lbmRwb2ludC5tZXJnZSguLi5hcmdzKTtcblxuICAgIC8vIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gb3RoZXIgZGVjb3JhdGlvbnMgdGhhbiBgLm1hcFRvRGF0YWBcbiAgICBpZiAoZGVjb3JhdGlvbnMubWFwVG9EYXRhKSB7XG4gICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge1xuICAgICAgICBkYXRhOiBvcHRpb25zW2RlY29yYXRpb25zLm1hcFRvRGF0YV0sXG4gICAgICAgIFtkZWNvcmF0aW9ucy5tYXBUb0RhdGFdOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXF1ZXN0V2l0aERlZmF1bHRzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChkZWNvcmF0aW9ucy5yZW5hbWVkKSB7XG4gICAgICBjb25zdCBbbmV3U2NvcGUsIG5ld01ldGhvZE5hbWVdID0gZGVjb3JhdGlvbnMucmVuYW1lZDtcbiAgICAgIG9jdG9raXQubG9nLndhcm4oXG4gICAgICAgIGBvY3Rva2l0LiR7c2NvcGV9LiR7bWV0aG9kTmFtZX0oKSBoYXMgYmVlbiByZW5hbWVkIHRvIG9jdG9raXQuJHtuZXdTY29wZX0uJHtuZXdNZXRob2ROYW1lfSgpYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChkZWNvcmF0aW9ucy5kZXByZWNhdGVkKSB7XG4gICAgICBvY3Rva2l0LmxvZy53YXJuKGRlY29yYXRpb25zLmRlcHJlY2F0ZWQpO1xuICAgIH1cblxuICAgIGlmIChkZWNvcmF0aW9ucy5yZW5hbWVkUGFyYW1ldGVycykge1xuICAgICAgLy8gQHRzLWlnbm9yZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzI1NDg4XG4gICAgICBjb25zdCBvcHRpb25zID0gcmVxdWVzdFdpdGhEZWZhdWx0cy5lbmRwb2ludC5tZXJnZSguLi5hcmdzKTtcblxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgYWxpYXNdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICBkZWNvcmF0aW9ucy5yZW5hbWVkUGFyYW1ldGVycyxcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKG5hbWUgaW4gb3B0aW9ucykge1xuICAgICAgICAgIG9jdG9raXQubG9nLndhcm4oXG4gICAgICAgICAgICBgXCIke25hbWV9XCIgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgZm9yIFwib2N0b2tpdC4ke3Njb3BlfS4ke21ldGhvZE5hbWV9KClcIi4gVXNlIFwiJHthbGlhc31cIiBpbnN0ZWFkYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghKGFsaWFzIGluIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zW2FsaWFzXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBvcHRpb25zW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVxdWVzdFdpdGhEZWZhdWx0cyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjU0ODhcbiAgICByZXR1cm4gcmVxdWVzdFdpdGhEZWZhdWx0cyguLi5hcmdzKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih3aXRoRGVjb3JhdGlvbnMsIHJlcXVlc3RXaXRoRGVmYXVsdHMpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT2N0b2tpdCB9IGZyb20gXCJAb2N0b2tpdC9jb3JlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVzdEVuZHBvaW50TWV0aG9kVHlwZXMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQvcGFyYW1ldGVycy1hbmQtcmVzcG9uc2UtdHlwZXMuanNcIjtcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaSB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBlbmRwb2ludHNUb01ldGhvZHMgfSBmcm9tIFwiLi9lbmRwb2ludHMtdG8tbWV0aG9kcy5qc1wiO1xuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZm9yIGRvd25zdHJlYW0gdXNlcnMgaW4gb3JkZXIgdG8gZml4IGEgVHlwZVNjcmlwdCBlcnJvclxuLy8gVGhlIGluZmVycmVkIHR5cGUgb2YgJ09jdG9raXQnIGNhbm5vdCBiZSBuYW1lZCB3aXRob3V0IGEgcmVmZXJlbmNlIHRvICcuLi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kcy9kaXN0LXR5cGVzL3R5cGVzLmpzJy4gVGhpcyBpcyBsaWtlbHkgbm90IHBvcnRhYmxlLiBBIHR5cGUgYW5ub3RhdGlvbiBpcyBuZWNlc3NhcnkuXG5leHBvcnQgdHlwZSB7IEFwaSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzdEVuZHBvaW50TWV0aG9kcyhvY3Rva2l0OiBPY3Rva2l0KTogQXBpIHtcbiAgY29uc3QgYXBpID0gZW5kcG9pbnRzVG9NZXRob2RzKG9jdG9raXQpO1xuICByZXR1cm4ge1xuICAgIHJlc3Q6IGFwaSxcbiAgfTtcbn1cbnJlc3RFbmRwb2ludE1ldGhvZHMuVkVSU0lPTiA9IFZFUlNJT047XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWdhY3lSZXN0RW5kcG9pbnRNZXRob2RzKG9jdG9raXQ6IE9jdG9raXQpOiBBcGlbXCJyZXN0XCJdICYgQXBpIHtcbiAgY29uc3QgYXBpID0gZW5kcG9pbnRzVG9NZXRob2RzKG9jdG9raXQpO1xuICByZXR1cm4ge1xuICAgIC4uLmFwaSxcbiAgICByZXN0OiBhcGksXG4gIH07XG59XG5sZWdhY3lSZXN0RW5kcG9pbnRNZXRob2RzLlZFUlNJT04gPSBWRVJTSU9OO1xuIiwgImNvbnN0IFZFUlNJT04gPSBcIjIxLjEuMVwiO1xuZXhwb3J0IHtcbiAgVkVSU0lPTlxufTtcbiIsICJpbXBvcnQgeyBPY3Rva2l0IGFzIENvcmUgfSBmcm9tIFwiQG9jdG9raXQvY29yZVwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZyB9IGZyb20gXCJAb2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2dcIjtcbmltcG9ydCB7XG4gIHBhZ2luYXRlUmVzdFxufSBmcm9tIFwiQG9jdG9raXQvcGx1Z2luLXBhZ2luYXRlLXJlc3RcIjtcbmltcG9ydCB7IGxlZ2FjeVJlc3RFbmRwb2ludE1ldGhvZHMgfSBmcm9tIFwiQG9jdG9raXQvcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc1wiO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gXCIuL3ZlcnNpb24uanNcIjtcbmNvbnN0IE9jdG9raXQgPSBDb3JlLnBsdWdpbihyZXF1ZXN0TG9nLCBsZWdhY3lSZXN0RW5kcG9pbnRNZXRob2RzLCBwYWdpbmF0ZVJlc3QpLmRlZmF1bHRzKFxuICB7XG4gICAgdXNlckFnZW50OiBgb2N0b2tpdC1yZXN0LmpzLyR7VkVSU0lPTn1gXG4gIH1cbik7XG5leHBvcnQge1xuICBPY3Rva2l0XG59O1xuIiwgImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZVNka01jcFNlcnZlcixcbiAgcXVlcnksXG4gIHR5cGUgU0RLTWVzc2FnZSxcbn0gZnJvbSBcIkBhbnRocm9waWMtYWkvY2xhdWRlLWFnZW50LXNka1wiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSBcInpvZC10by1qc29uLXNjaGVtYVwiO1xuaW1wb3J0IHsgZW5zdXJlQ2xhdWRlQ2xpIH0gZnJvbSBcIi4uL3NldHVwL2Vuc3VyZS1jbGF1ZGUtY2xpLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFnZW50QWRhcHRlciwgUnVuU3RhZ2VBcmdzIH0gZnJvbSBcIi4vYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgQWdlbnRFcnJvciB9IGZyb20gXCIuL2FkYXB0ZXIuanNcIjtcblxuY29uc3QgU1VCVFlQRV9UT19LSU5EOiBSZWNvcmQ8XG4gIHN0cmluZyxcbiAgfCBcImFnZW50X2J1ZGdldFwiXG4gIHwgXCJhZ2VudF9tYXhfdHVybnNcIlxuICB8IFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIlxuICB8IFwiYWdlbnRfZXhlY3V0aW9uXCJcbj4gPSB7XG4gIGVycm9yX21heF9idWRnZXRfdXNkOiBcImFnZW50X2J1ZGdldFwiLFxuICBlcnJvcl9tYXhfdHVybnM6IFwiYWdlbnRfbWF4X3R1cm5zXCIsXG4gIGVycm9yX21heF9zdHJ1Y3R1cmVkX291dHB1dF9yZXRyaWVzOiBcImFnZW50X2ludmFsaWRfb3V0cHV0XCIsXG4gIGVycm9yX2R1cmluZ19leGVjdXRpb246IFwiYWdlbnRfZXhlY3V0aW9uXCIsXG59O1xuXG4vLyBQZXJtaXNzaW9uIHBhdHRlcm5zIFNob3BmbG9vciBwcmUtYXBwcm92ZXMgb24gZXZlcnkgc3RhZ2UuIFRoZSBhZ2VudCBTREsnc1xuLy8gcGF0dGVybiBzeW50YXggaXMgYEJhc2goPHByZWZpeD46KilgIHdoZXJlIHRoZSBwcmVmaXggY2FuIGJlIGEgY29tbWFuZCBhbG9uZVxuLy8gKGBsc2ApIG9yIHdpdGggc3ViY29tbWFuZHMgKGBnaXQgYWRkYCkuIE5vbi1iYXNoIHRvb2wgbmFtZXMgYXJlIG1hdGNoZWQgYXNcbi8vIGxpdGVyYWxzLiBUaGVzZSBkZWZhdWx0cyBydW4gaW4gZXZlcnkgcHJvamVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlXG4vLyBwcm9qZWN0IGhhcyBpdHMgb3duIC5jbGF1ZGUvc2V0dGluZ3MuanNvbi4gUHJvamVjdCBzZXR0aW5ncyBzdGFjayBvbiB0b3AuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0VOVF9BTExPVzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIC8vIEJ1aWx0LWluIGZpbGUgb3BzIGFuZCBzZWFyY2guXG4gIFwiUmVhZFwiLFxuICBcIldyaXRlXCIsXG4gIFwiRWRpdFwiLFxuICBcIk11bHRpRWRpdFwiLFxuICBcIk5vdGVib29rRWRpdFwiLFxuICBcIkdsb2JcIixcbiAgXCJHcmVwXCIsXG4gIFwiTFNcIixcbiAgLy8gR2l0IHN1YmNvbW1hbmRzIHRoZSBpbXBsIHByb21wdCBhdXRob3Jpc2VzLiBQdXNoIGFuZCBoaXN0b3J5LXJld3JpdGluZ1xuICAvLyBjb21tYW5kcyBhcmUgZXhwbGljaXRseSBkZW5pZWQgYmVsb3c7IHRoZSByb3V0ZXIgcHVzaGVzIGNvbW1pdHMgb24gdGhlXG4gIC8vIGFnZW50J3MgYmVoYWxmIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bi5cbiAgXCJCYXNoKGdpdCBsb2c6KilcIixcbiAgXCJCYXNoKGdpdCBkaWZmOiopXCIsXG4gIFwiQmFzaChnaXQgc3RhdHVzOiopXCIsXG4gIFwiQmFzaChnaXQgc2hvdzoqKVwiLFxuICBcIkJhc2goZ2l0IGFkZDoqKVwiLFxuICBcIkJhc2goZ2l0IGNvbW1pdDoqKVwiLFxuICBcIkJhc2goZ2l0IHJldi1wYXJzZToqKVwiLFxuICAvLyBTdGFuZGFyZCByZWFkLW9ubHkgaW5zcGVjdGlvbi5cbiAgXCJCYXNoKGxzOiopXCIsXG4gIFwiQmFzaChjYXQ6KilcIixcbiAgXCJCYXNoKGhlYWQ6KilcIixcbiAgXCJCYXNoKHRhaWw6KilcIixcbiAgXCJCYXNoKGdyZXA6KilcIixcbiAgXCJCYXNoKGZpbmQ6KilcIixcbiAgXCJCYXNoKHdjOiopXCIsXG4gIFwiQmFzaCh0cmVlOiopXCIsXG4gIFwiQmFzaChmaWxlOiopXCIsXG4gIFwiQmFzaChzdGF0OiopXCIsXG4gIFwiQmFzaCh3aGljaDoqKVwiLFxuICBcIkJhc2goZWNobzoqKVwiLFxuICBcIkJhc2gocHJpbnRmOiopXCIsXG4gIFwiQmFzaChzb3J0OiopXCIsXG4gIFwiQmFzaCh1bmlxOiopXCIsXG4gIFwiQmFzaChqcToqKVwiLFxuICBcIkJhc2goeXE6KilcIixcbiAgXCJCYXNoKHhhcmdzOiopXCIsXG4gIFwiQmFzaChkaWZmOiopXCIsXG4gIFwiQmFzaCh0cnVlOiopXCIsXG4gIFwiQmFzaChmYWxzZToqKVwiLFxuICAvLyBGaWxlIG11dGF0aW9uLiBDbGF1ZGUgQ29kZSdzIHNhbmRib3ggYWxyZWFkeSByZXN0cmljdHMgd3JpdGVzIHRvIHRoZVxuICAvLyBzZXNzaW9uJ3MgY3dkLCBzbyB0aGVzZSBjYW4ndCBlc2NhcGUgdGhlIGNoZWNrb3V0LlxuICBcIkJhc2gobWtkaXI6KilcIixcbiAgXCJCYXNoKG12OiopXCIsXG4gIFwiQmFzaChjcDoqKVwiLFxuICBcIkJhc2godG91Y2g6KilcIixcbiAgXCJCYXNoKHNlZDoqKVwiLFxuICBcIkJhc2goYXdrOiopXCIsXG4gIFwiQmFzaChybToqKVwiLFxuICBcIkJhc2gobG46KilcIixcbiAgLy8gSmF2YVNjcmlwdCAvIFR5cGVTY3JpcHQgdG9vbGNoYWlucy5cbiAgXCJCYXNoKHBucG06KilcIixcbiAgXCJCYXNoKHBucHg6KilcIixcbiAgXCJCYXNoKG5wbToqKVwiLFxuICBcIkJhc2gobnB4OiopXCIsXG4gIFwiQmFzaCh5YXJuOiopXCIsXG4gIFwiQmFzaChidW46KilcIixcbiAgXCJCYXNoKGJ1bng6KilcIixcbiAgXCJCYXNoKG5vZGU6KilcIixcbiAgXCJCYXNoKGRlbm86KilcIixcbiAgXCJCYXNoKHRzYzoqKVwiLFxuICBcIkJhc2godHN4OiopXCIsXG4gIFwiQmFzaChlc2xpbnQ6KilcIixcbiAgXCJCYXNoKHByZXR0aWVyOiopXCIsXG4gIFwiQmFzaCh2aXRlc3Q6KilcIixcbiAgXCJCYXNoKGplc3Q6KilcIixcbiAgLy8gUHl0aG9uIHRvb2xjaGFpbnMuXG4gIFwiQmFzaChweXRob246KilcIixcbiAgXCJCYXNoKHB5dGhvbjM6KilcIixcbiAgXCJCYXNoKHBpcDoqKVwiLFxuICBcIkJhc2gocGlwMzoqKVwiLFxuICBcIkJhc2gocG9ldHJ5OiopXCIsXG4gIFwiQmFzaCh1djoqKVwiLFxuICBcIkJhc2godXZ4OiopXCIsXG4gIFwiQmFzaChydWZmOiopXCIsXG4gIFwiQmFzaChibGFjazoqKVwiLFxuICBcIkJhc2gobXlweToqKVwiLFxuICBcIkJhc2gocHl0ZXN0OiopXCIsXG4gIC8vIE90aGVyIGNvbXBpbGVkIGxhbmd1YWdlcy5cbiAgXCJCYXNoKGdvOiopXCIsXG4gIFwiQmFzaChjYXJnbzoqKVwiLFxuICBcIkJhc2gocnVzdGM6KilcIixcbiAgXCJCYXNoKHJ1c3R1cDoqKVwiLFxuICAvLyBHZW5lcmljIGJ1aWxkIHJ1bm5lcnMuXG4gIFwiQmFzaChtYWtlOiopXCIsXG4gIFwiQmFzaChqdXN0OiopXCIsXG5dO1xuXG4vLyBIYXJkLWRlbnkgY2xlYXIgZm9vdGd1bnMuIFRoZSBjbGFzc2lmaWVyIHN0aWxsIGdhdGVzIGFueXRoaW5nIG5vdCBpbiB0aGVcbi8vIGFsbG93IGxpc3QsIGJ1dCB0aGVzZSBnZXQgYSBmYXN0IG5vIHJhdGhlciB0aGFuIGEgbW9kZWwgcm91bmQtdHJpcC5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FHRU5UX0RFTlk6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAvLyBQcml2aWxlZ2UgZXNjYWxhdGlvbi5cbiAgXCJCYXNoKHN1ZG86KilcIixcbiAgXCJCYXNoKHN1OiopXCIsXG4gIFwiQmFzaChkb2FzOiopXCIsXG4gIC8vIE91dGJvdW5kIFNTSCBhbmQgY29weS1vdmVyLW5ldHdvcmsuIFRoZSBhZ2VudCBoYXMgemVybyBsZWdpdGltYXRlIHJlYXNvblxuICAvLyB0byByZWFjaCBhbiBleHRlcm5hbCBob3N0IGZyb20gdGhlIENJIHJ1bm5lci5cbiAgXCJCYXNoKHNzaDoqKVwiLFxuICBcIkJhc2goc2NwOiopXCIsXG4gIFwiQmFzaChzZnRwOiopXCIsXG4gIFwiQmFzaChyc3luYzoqKVwiLFxuICAvLyBBY2NpZGVudGFsIHBhY2thZ2UgcHVibGlzaGluZy4gQSBidWcgaW4gYW4gaW1wbCBzdGFnZSBtdXN0IG5vdCBiZSBhYmxlIHRvXG4gIC8vIHNoaXAgdG8gYSByZWdpc3RyeS5cbiAgXCJCYXNoKG5wbSBwdWJsaXNoOiopXCIsXG4gIFwiQmFzaChwbnBtIHB1Ymxpc2g6KilcIixcbiAgXCJCYXNoKHlhcm4gcHVibGlzaDoqKVwiLFxuICBcIkJhc2goYnVuIHB1Ymxpc2g6KilcIixcbiAgXCJCYXNoKGNhcmdvIHB1Ymxpc2g6KilcIixcbiAgXCJCYXNoKGdlbSBwdXNoOiopXCIsXG4gIFwiQmFzaCh0d2luZSB1cGxvYWQ6KilcIixcbiAgXCJCYXNoKHV2IHB1Ymxpc2g6KilcIixcbiAgXCJCYXNoKHBvZXRyeSBwdWJsaXNoOiopXCIsXG4gIC8vIENvbnRhaW5lci1yZWdpc3RyeSBwdXNoZXMgYW5kIGNyZWRlbnRpYWwgZ3JhYnMuXG4gIFwiQmFzaChkb2NrZXIgcHVzaDoqKVwiLFxuICBcIkJhc2goZG9ja2VyIGxvZ2luOiopXCIsXG4gIFwiQmFzaChwb2RtYW4gcHVzaDoqKVwiLFxuICBcIkJhc2gocG9kbWFuIGxvZ2luOiopXCIsXG4gIC8vIEdpdCBtdXRhdGlvbnMgdGhlIGFnZW50IG11c3Qgbm90IHBlcmZvcm0uIFRoZSByb3V0ZXIgb3ducyB0aGUgbmV0d29ya1xuICAvLyBwYXRoIChwdXNoKSBhbmQgdGhlIGFnZW50IGhhcyBubyBidXNpbmVzcyByZXdyaXRpbmcgaGlzdG9yeSwgYmxvd2luZyBhd2F5XG4gIC8vIHRoZSB3b3JraW5nIHRyZWUsIG9yIGRlbGV0aW5nIGJyYW5jaGVzLlxuICBcIkJhc2goZ2l0IHB1c2g6KilcIixcbiAgXCJCYXNoKGdpdCByZXNldCAtLWhhcmQ6KilcIixcbiAgXCJCYXNoKGdpdCBjaGVja291dCAtLToqKVwiLFxuICBcIkJhc2goZ2l0IGNsZWFuIC1mOiopXCIsXG4gIFwiQmFzaChnaXQgYnJhbmNoIC1EOiopXCIsXG4gIFwiQmFzaChnaXQgd29ya3RyZWUgYWRkOiopXCIsXG4gIFwiQmFzaChnaXQgd29ya3RyZWUgcmVtb3ZlOiopXCIsXG4gIFwiQmFzaChnaXQgcmViYXNlOiopXCIsXG5dO1xuXG5leHBvcnQgdHlwZSBDbGF1ZGVDbGlSZXNvbHZlciA9ICgpID0+IFByb21pc2U8c3RyaW5nPjtcblxuZXhwb3J0IGNsYXNzIENsYXVkZUFnZW50QWRhcHRlciBpbXBsZW1lbnRzIEFnZW50QWRhcHRlciB7XG4gIC8vIFRoZSBlbnYgKHdoZW4gc2V0KSBpcyBmb3J3YXJkZWQgdG8gdGhlIFNESydzIGBxdWVyeSgpYCBzbyBpdCBzY29wZXMgdGhlXG4gIC8vIEFudGhyb3BpYyBjcmVkZW50aWFsIGFuZCBhbnkgYWxsb3dsaXN0ZWQgaG9zdCB2YXJzIHRvIFNESyBzdWJwcm9jZXNzZXNcbiAgLy8gaW5zdGVhZCBvZiByZWx5aW5nIG9uIGBwcm9jZXNzLmVudmAuIFNlZSBzcmMvY29uZmlnL2FnZW50LWVudi50cy5cbiAgLy9cbiAgLy8gcmVzb2x2ZUNsaSBpcyBpbnZva2VkIGxhemlseSBvbiB0aGUgZmlyc3QgcnVuU3RhZ2UgY2FsbC4gSXQgbG9jYXRlcyAob3JcbiAgLy8gaW5zdGFsbHMpIHRoZSBuYXRpdmUgQ2xhdWRlIENMSSBiaW5hcnkgYmVjYXVzZSB0aGUgU0RLIHNoaXBzIHRoZSBiaW5hcnlcbiAgLy8gYXMgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW9uYWwgbnBtIHBhY2thZ2VzIFx1MjAxNCB0aG9zZSB3b24ndCBiZSBwcmVzZW50IGluXG4gIC8vIHRoZSBjb21taXR0ZWQgZGlzdC8gYnVuZGxlIG9uIGEgR2l0SHViIHJ1bm5lciB3aG9zZSBhcmNoIGRpZmZlcnMgZnJvbVxuICAvLyB0aGUgYnVpbGQgaG9zdC5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZUNsaTogQ2xhdWRlQ2xpUmVzb2x2ZXIgPSBlbnN1cmVDbGF1ZGVDbGksXG4gICkge31cblxuICBhc3luYyBydW5TdGFnZTxUPihhcmdzOiBSdW5TdGFnZUFyZ3M8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gYXJncy5hYm9ydENvbnRyb2xsZXIgPz8gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFRyYWNrIHdoZXRoZXIgKm91ciogdGltZXIgZmlyZWQgdGhlIGFib3J0LiBUaGUgU0RLIHRocm93cyBhIGdlbmVyaWNcbiAgICAvLyBFcnJvcihcIkNsYXVkZSBDb2RlIHByb2Nlc3MgYWJvcnRlZCBieSB1c2VyXCIpIGZvciBhbnkgYWJvcnQgYW5kIGdpdmVzIHVzXG4gICAgLy8gbm8gd2F5IHRvIHRlbGwgYSB3YWxsLWNsb2NrIHRpbWVvdXQgZnJvbSBhbiBleHRlcm5hbC91c2VyIGFib3J0LCBzbyB3ZVxuICAgIC8vIHJlY29yZCB0aGUgY2F1c2UgaGVyZSBhbmQgcmVjbGFzc2lmeSB0aGUgdGhyb3duIGVycm9yIGJlbG93LlxuICAgIGxldCB0aW1lZE91dCA9IGZhbHNlO1xuICAgIGNvbnN0IHRpbWVyID1cbiAgICAgIGFyZ3MudGltZW91dE1zICE9IG51bGxcbiAgICAgICAgPyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRpbWVkT3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgICB9LCBhcmdzLnRpbWVvdXRNcylcbiAgICAgICAgOiBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlID0gYXdhaXQgdGhpcy5yZXNvbHZlQ2xpKCk7XG5cbiAgICAgIGNvbnN0IG1jcFNlcnZlciA9IGNyZWF0ZVNka01jcFNlcnZlcih7XG4gICAgICAgIG5hbWU6IFwic2hvcGZsb29yXCIsXG4gICAgICAgIHZlcnNpb246IFwiMi4wLjBcIixcbiAgICAgICAgdG9vbHM6IGFyZ3MudG9vbHMgYXMgYW55LFxuICAgICAgfSk7XG5cbiAgICAgIGxvZ0FnZW50SW5wdXQoYXJncyk7XG5cbiAgICAgIGNvbnN0IHN0cmVhbSA9IHF1ZXJ5KHtcbiAgICAgICAgcHJvbXB0OiBhcmdzLnVzZXJQcm9tcHQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtb2RlbDogYXJncy5tb2RlbCxcbiAgICAgICAgICBwYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZSxcbiAgICAgICAgICBzeXN0ZW1Qcm9tcHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFwicHJlc2V0XCIsXG4gICAgICAgICAgICBwcmVzZXQ6IFwiY2xhdWRlX2NvZGVcIixcbiAgICAgICAgICAgIGFwcGVuZDogYXJncy5zeXN0ZW1Qcm9tcHQsXG4gICAgICAgICAgICBleGNsdWRlRHluYW1pY1NlY3Rpb25zOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIC8vIFN1cHByZXNzIHRoZSBTREsncyBkZWZhdWx0IFwiQ28tQXV0aG9yZWQtQnk6IENsYXVkZVwiIHRyYWlsZXIgb25cbiAgICAgICAgICAgIC8vIGNvbW1pdHMgYW5kIHRoZSBcIkdlbmVyYXRlZCB3aXRoIENsYXVkZSBDb2RlXCIgZm9vdGVyIG9uIFBSIGJvZGllcy5cbiAgICAgICAgICAgIC8vIFNob3BmbG9vciBzdGFnZXMgcHJvZHVjZSBjb21taXR0ZWQgYXJ0aWZhY3RzIHRoYXQgc2hvdWxkIHJlYWQgYXNcbiAgICAgICAgICAgIC8vIG5ldXRyYWwsIHByb2plY3QtYXBwcm9wcmlhdGUgcHJvc2U7IGF0dHJpYnV0aW9uIGJlbG9uZ3MgaW4gdGhlXG4gICAgICAgICAgICAvLyBQUiBkZXNjcmlwdGlvbiwgbm90IHRoZSBhcnRpZmFjdCBpdHNlbGYuXG4gICAgICAgICAgICBhdHRyaWJ1dGlvbjoge1xuICAgICAgICAgICAgICBjb21taXQ6IFwiXCIsXG4gICAgICAgICAgICAgIHByOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgIGFsbG93OiBbLi4uREVGQVVMVF9BR0VOVF9BTExPV10sXG4gICAgICAgICAgICAgIGRlbnk6IFsuLi5ERUZBVUxUX0FHRU5UX0RFTlldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1jcFNlcnZlcnM6IHsgc2hvcGZsb29yOiBtY3BTZXJ2ZXIgfSxcbiAgICAgICAgICBhbGxvd2VkVG9vbHM6IGFyZ3MudG9vbHMubWFwKCh0KSA9PiBgbWNwX19zaG9wZmxvb3JfXyR7dC5uYW1lfWApLFxuICAgICAgICAgIHBlcm1pc3Npb25Nb2RlOiBcImF1dG9cIixcbiAgICAgICAgICBvdXRwdXRGb3JtYXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFwianNvbl9zY2hlbWFcIixcbiAgICAgICAgICAgIHNjaGVtYTogem9kVG9Kc29uU2NoZW1hKGFyZ3MuZGVjaXNpb25TY2hlbWEgYXMgei5ab2RUeXBlQW55KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLihhcmdzLmJ1ZGdldFVzZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHsgbWF4QnVkZ2V0VXNkOiBhcmdzLmJ1ZGdldFVzZCB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAuLi4oYXJncy5tYXhUdXJucyAhPT0gdW5kZWZpbmVkID8geyBtYXhUdXJuczogYXJncy5tYXhUdXJucyB9IDoge30pLFxuICAgICAgICAgIC4uLihhcmdzLmVmZm9ydCAhPT0gdW5kZWZpbmVkID8geyBlZmZvcnQ6IGFyZ3MuZWZmb3J0IH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRoaXMuZW52ID8geyBlbnY6IHRoaXMuZW52IH0gOiB7fSksXG4gICAgICAgICAgYWJvcnRDb250cm9sbGVyOiBjb250cm9sbGVyLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvcmUuc3RhcnRHcm91cChcIkNsYXVkZSBhZ2VudCBldmVudHNcIik7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG1zZyBvZiBzdHJlYW0pIHtcbiAgICAgICAgICBsb2dTZGtFdmVudChtc2cpO1xuICAgICAgICAgIGlmIChtc2cudHlwZSAhPT0gXCJyZXN1bHRcIikgY29udGludWU7XG4gICAgICAgICAgaWYgKG1zZy5zdWJ0eXBlID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgaWYgKG1zZy5zdHJ1Y3R1cmVkX291dHB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIFRoZSBDTEkgcmVwb3J0ZWQgYSBjbGVhbiBydW4gYnV0IGlnbm9yZWQgLS1qc29uLXNjaGVtYSBhbmRcbiAgICAgICAgICAgICAgLy8gZW1pdHRlZCBwbGFpbiB0ZXh0LiBUaGUgU0RLJ3MgYGVycm9yX21heF9zdHJ1Y3R1cmVkX291dHB1dF9yZXRyaWVzYFxuICAgICAgICAgICAgICAvLyBkb2Vzbid0IGZpcmUgaW4gdGhpcyBwYXRoOyB3ZSBzdXJmYWNlIG91ciBvd24gZGlhZ25vc3RpYyBzbyB0aGVcbiAgICAgICAgICAgICAgLy8gZmFpbGluZyBydW4gcHJpbnRzIHdoYXQgdGhlIG1vZGVsIGFjdHVhbGx5IHNhaWQuXG4gICAgICAgICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgICAgICAgIFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXRNaXNzaW5nU3RydWN0dXJlZE91dHB1dChtc2cpLFxuICAgICAgICAgICAgICAgIFwic3VjY2Vzc193aXRob3V0X3N0cnVjdHVyZWRfb3V0cHV0XCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJncy5kZWNpc2lvblNjaGVtYS5wYXJzZShtc2cuc3RydWN0dXJlZF9vdXRwdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBraW5kID1cbiAgICAgICAgICAgIFNVQlRZUEVfVE9fS0lORFttc2cuc3VidHlwZSBhcyBzdHJpbmddID8/IFwiYWdlbnRfZXhlY3V0aW9uXCI7XG4gICAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgYGNsYXVkZSBzZXNzaW9uIGVuZGVkIHdpdGggJHttc2cuc3VidHlwZX1gLFxuICAgICAgICAgICAgbXNnLnN1YnR5cGUgYXMgc3RyaW5nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXG4gICAgICAgICAgXCJhZ2VudF9leGVjdXRpb25cIixcbiAgICAgICAgICBcImNsYXVkZSBzZXNzaW9uIGVuZGVkIHdpdGhvdXQgYSByZXN1bHQgbWVzc2FnZVwiLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIEEgdGltZW91dC10cmlnZ2VyZWQgYWJvcnQgcmVhY2hlcyB1cyBhcyBhIHJhdyBTREsgRXJyb3IuIFJlY2xhc3NpZnlcbiAgICAgICAgLy8gaXQgYXMgYWdlbnRfdGltZW91dCBzbyB0aGUgZmFpbHVyZSBzdXJmYWNlcyB3aXRoIHRoZSByaWdodCBraW5kXG4gICAgICAgIC8vIGluc3RlYWQgb2YgZmFsbGluZyB0aHJvdWdoIHRvIFwiaW50ZXJuYWxcIiBpbiB0aGUgb3JjaGVzdHJhdG9yLlxuICAgICAgICAvLyBFeHRlcm5hbGx5LWFib3J0ZWQgcnVucyBhbmQgaW50ZW50aW9uYWwgQWdlbnRFcnJvcnMgcGFzcyB0aHJvdWdoLlxuICAgICAgICBpZiAodGltZWRPdXQgJiYgIShlcnIgaW5zdGFuY2VvZiBBZ2VudEVycm9yKSkge1xuICAgICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgICAgXCJhZ2VudF90aW1lb3V0XCIsXG4gICAgICAgICAgICBgY2xhdWRlIHNlc3Npb24gYWJvcnRlZCBhZnRlciBleGNlZWRpbmcgdGhlICR7YXJncy50aW1lb3V0TXN9bXMgc3RhZ2UgdGltZW91dGAsXG4gICAgICAgICAgICBcInRpbWVvdXRcIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvcmUuZW5kR3JvdXAoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dBZ2VudElucHV0PFQ+KGFyZ3M6IFJ1blN0YWdlQXJnczxUPik6IHZvaWQge1xuICBjb3JlLnN0YXJ0R3JvdXAoYENsYXVkZSBhZ2VudCBpbnB1dCAoJHthcmdzLm1vZGVsfSlgKTtcbiAgdHJ5IHtcbiAgICBjb3JlLmluZm8oYG1vZGVsOiAke2FyZ3MubW9kZWx9YCk7XG4gICAgaWYgKGFyZ3MuZWZmb3J0ICE9PSB1bmRlZmluZWQpIGNvcmUuaW5mbyhgZWZmb3J0OiAke2FyZ3MuZWZmb3J0fWApO1xuICAgIGlmIChhcmdzLmJ1ZGdldFVzZCAhPT0gdW5kZWZpbmVkKSBjb3JlLmluZm8oYGJ1ZGdldFVzZDogJHthcmdzLmJ1ZGdldFVzZH1gKTtcbiAgICBpZiAoYXJncy5tYXhUdXJucyAhPT0gdW5kZWZpbmVkKSBjb3JlLmluZm8oYG1heFR1cm5zOiAke2FyZ3MubWF4VHVybnN9YCk7XG4gICAgaWYgKGFyZ3MudGltZW91dE1zICE9PSB1bmRlZmluZWQpIGNvcmUuaW5mbyhgdGltZW91dE1zOiAke2FyZ3MudGltZW91dE1zfWApO1xuICAgIGNvbnN0IHRvb2xMaXN0ID0gYXJncy50b29scy5sZW5ndGhcbiAgICAgID8gYXJncy50b29scy5tYXAoKHQpID0+IGAtICR7dC5uYW1lfTogJHt0LmRlc2NyaXB0aW9uID8/IFwiXCJ9YCkuam9pbihcIlxcblwiKVxuICAgICAgOiBcIihub25lKVwiO1xuICAgIGNvcmUuaW5mbyhgdG9vbHM6XFxuJHt0b29sTGlzdH1gKTtcbiAgICBjb3JlLmluZm8oYHN5c3RlbVByb21wdDpcXG4ke2FyZ3Muc3lzdGVtUHJvbXB0fWApO1xuICAgIGNvcmUuaW5mbyhgdXNlclByb21wdDpcXG4ke2FyZ3MudXNlclByb21wdH1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjb3JlLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nU2RrRXZlbnQobXNnOiBTREtNZXNzYWdlKTogdm9pZCB7XG4gIGlmIChtc2cudHlwZSA9PT0gXCJzeXN0ZW1cIiAmJiBtc2cuc3VidHlwZSA9PT0gXCJpbml0XCIpIHtcbiAgICBjb25zdCBtY3AgPSBtc2cubWNwX3NlcnZlcnMubWFwKChzKSA9PiBgJHtzLm5hbWV9OiR7cy5zdGF0dXN9YCkuam9pbihcIixcIik7XG4gICAgY29yZS5pbmZvKFxuICAgICAgYFtpbml0XSBtb2RlbD0ke21zZy5tb2RlbH0gY3dkPSR7bXNnLmN3ZH0gdG9vbHM9JHttc2cudG9vbHMubGVuZ3RofSBtY3A9JHttY3AgfHwgXCIobm9uZSlcIn1gLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChtc2cudHlwZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZT8uY29udGVudDtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IGIgPSBibG9jayBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgICAgW2s6IHN0cmluZ106IHVua25vd247XG4gICAgICB9O1xuICAgICAgaWYgKGIudHlwZSA9PT0gXCJ0aGlua2luZ1wiICYmIHR5cGVvZiBiLnRoaW5raW5nID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvcmUuaW5mbyhgW3RoaW5raW5nXSAke3RydW5jYXRlKGIudGhpbmtpbmcsIDUwMCl9YCk7XG4gICAgICB9IGVsc2UgaWYgKGIudHlwZSA9PT0gXCJ0b29sX3VzZVwiKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYi5uYW1lID09PSBcInN0cmluZ1wiID8gYi5uYW1lIDogXCIodW5rbm93bilcIjtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0cnVuY2F0ZShzYWZlU3RyaW5naWZ5KGIuaW5wdXQpLCAzMDApO1xuICAgICAgICBjb3JlLmluZm8oYFt0b29sX3VzZV0gJHtuYW1lfSBpbnB1dD0ke2lucHV0fWApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1zZy50eXBlID09PSBcInVzZXJcIikge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZT8uY29udGVudDtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IGIgPSBibG9jayBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgICAgW2s6IHN0cmluZ106IHVua25vd247XG4gICAgICB9O1xuICAgICAgaWYgKGIudHlwZSAhPT0gXCJ0b29sX3Jlc3VsdFwiKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGIuaXNfZXJyb3IgPyBcImVycm9yXCIgOiBcIm9rXCI7XG4gICAgICBjb3JlLmluZm8oXG4gICAgICAgIGBbdG9vbF9yZXN1bHQ6JHtzdGF0dXN9XSAke3RydW5jYXRlKGV4dHJhY3RUb29sUmVzdWx0VGV4dChiLmNvbnRlbnQpLCA1MDApfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0cnVuY2F0ZShzOiBzdHJpbmcsIG1heDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHMubGVuZ3RoIDw9IG1heCkgcmV0dXJuIHM7XG4gIHJldHVybiBgJHtzLnNsaWNlKDAsIG1heCl9Li4uIFt0cnVuY2F0ZWQsICR7cy5sZW5ndGh9IGNoYXJzXWA7XG59XG5cbmZ1bmN0aW9uIHNhZmVTdHJpbmdpZnkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPz8gXCJcIjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFwiKHVuc2VyaWFsaXphYmxlKVwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUb29sUmVzdWx0VGV4dChjb250ZW50OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSByZXR1cm4gY29udGVudDtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSByZXR1cm4gc2FmZVN0cmluZ2lmeShjb250ZW50KTtcbiAgcmV0dXJuIGNvbnRlbnRcbiAgICAubWFwKChiKSA9PiB7XG4gICAgICBpZiAoYiAmJiB0eXBlb2YgYiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBibG9jayA9IGIgYXMgeyB0eXBlPzogc3RyaW5nOyB0ZXh0Pzogc3RyaW5nIH07XG4gICAgICAgIGlmIChibG9jay50eXBlID09PSBcInRleHRcIiAmJiB0eXBlb2YgYmxvY2sudGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBibG9jay50ZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc2FmZVN0cmluZ2lmeShiKTtcbiAgICB9KVxuICAgIC5qb2luKFwiIFwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TWlzc2luZ1N0cnVjdHVyZWRPdXRwdXQobXNnOiB7XG4gIHJlc3VsdD86IHVua25vd247XG4gIG51bV90dXJucz86IHVua25vd247XG4gIHRvdGFsX2Nvc3RfdXNkPzogdW5rbm93bjtcbiAgc3RvcF9yZWFzb24/OiB1bmtub3duO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IFJFU1VMVF9QUkVWSUVXX0NIQVJTID0gNjAwO1xuICBjb25zdCByZXN1bHRSYXcgPSB0eXBlb2YgbXNnLnJlc3VsdCA9PT0gXCJzdHJpbmdcIiA/IG1zZy5yZXN1bHQgOiBcIlwiO1xuICBjb25zdCBwcmV2aWV3ID1cbiAgICByZXN1bHRSYXcubGVuZ3RoID4gUkVTVUxUX1BSRVZJRVdfQ0hBUlNcbiAgICAgID8gYCR7cmVzdWx0UmF3LnNsaWNlKDAsIFJFU1VMVF9QUkVWSUVXX0NIQVJTKX0uLi4gW3RydW5jYXRlZCwgJHtyZXN1bHRSYXcubGVuZ3RofSBjaGFyc11gXG4gICAgICA6IHJlc3VsdFJhdztcbiAgY29uc3QgbnVtVHVybnMgPSB0eXBlb2YgbXNnLm51bV90dXJucyA9PT0gXCJudW1iZXJcIiA/IG1zZy5udW1fdHVybnMgOiBcIj9cIjtcbiAgY29uc3QgY29zdCA9XG4gICAgdHlwZW9mIG1zZy50b3RhbF9jb3N0X3VzZCA9PT0gXCJudW1iZXJcIlxuICAgICAgPyBtc2cudG90YWxfY29zdF91c2QudG9GaXhlZCg0KVxuICAgICAgOiBcIj9cIjtcbiAgY29uc3Qgc3RvcFJlYXNvbiA9XG4gICAgdHlwZW9mIG1zZy5zdG9wX3JlYXNvbiA9PT0gXCJzdHJpbmdcIiA/IG1zZy5zdG9wX3JlYXNvbiA6IFwiP1wiO1xuICByZXR1cm4gKFxuICAgIGBjbGF1ZGUgc2Vzc2lvbiBlbmRlZCB3aXRoIHN1YnR5cGU9c3VjY2VzcyBidXQgbm8gc3RydWN0dXJlZF9vdXRwdXQuIGAgK1xuICAgIGBUaGUgQ0xJIGFjY2VwdGVkIC0tanNvbi1zY2hlbWEgYnV0IHRoZSBtb2RlbCByZXR1cm5lZCBwbGFpbiB0ZXh0IGluc3RlYWQgb2Ygc3RydWN0dXJlZCBkYXRhLiBgICtcbiAgICBgbnVtX3R1cm5zPSR7bnVtVHVybnN9IGNvc3RfdXNkPSR7Y29zdH0gc3RvcF9yZWFzb249JHtzdG9wUmVhc29ufS4gYCArXG4gICAgYHJlc3VsdCBwcmV2aWV3OiAke3ByZXZpZXcgfHwgXCIoZW1wdHkpXCJ9YFxuICApO1xufVxuIiwgIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8vIChjKSBBbnRocm9waWMgUEJDLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgTGVnYWwgQWdyZWVtZW50cyBvdXRsaW5lZCBoZXJlOiBodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2xlZ2FsLWFuZC1jb21wbGlhbmNlLlxuXG4vLyBWZXJzaW9uOiAwLjIuMTQxXG5cbi8vIFdhbnQgdG8gc2VlIHRoZSB1bm1pbmlmaWVkIHNvdXJjZT8gV2UncmUgaGlyaW5nIVxuLy8gaHR0cHM6Ly9qb2ItYm9hcmRzLmdyZWVuaG91c2UuaW8vYW50aHJvcGljL2pvYnMvNDgxNjE5OTAwOFxuaW1wb3J0e2NyZWF0ZVJlcXVpcmUgYXMgJFN9ZnJvbVwibm9kZTptb2R1bGVcIjt2YXIgZF89T2JqZWN0LmNyZWF0ZTt2YXJ7Z2V0UHJvdG90eXBlT2Y6aV8sZGVmaW5lUHJvcGVydHk6UkcsZ2V0T3duUHJvcGVydHlOYW1lczpuX309T2JqZWN0O3ZhciByXz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG9fKCQpe3JldHVybiB0aGlzWyRdfXZhciB0XyxhXyxCWD0oJCxRLEopPT57dmFyIFk9JCE9bnVsbCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiO2lmKFkpe3ZhciBYPVE/dF8/Pz1uZXcgV2Vha01hcDphXz8/PW5ldyBXZWFrTWFwLFc9WC5nZXQoJCk7aWYoVylyZXR1cm4gV31KPSQhPW51bGw/ZF8oaV8oJCkpOnt9O2xldCBHPVF8fCEkfHwhJC5fX2VzTW9kdWxlP1JHKEosXCJkZWZhdWx0XCIse3ZhbHVlOiQsZW51bWVyYWJsZTohMH0pOko7Zm9yKGxldCBVIG9mIG5fKCQpKWlmKCFyXy5jYWxsKEcsVSkpUkcoRyxVLHtnZXQ6b18uYmluZCgkLFUpLGVudW1lcmFibGU6ITB9KTtpZihZKVguc2V0KCQsRyk7cmV0dXJuIEd9O3ZhciBJPSgkLFEpPT4oKT0+KFF8fCQoKFE9e2V4cG9ydHM6e319KS5leHBvcnRzLFEpLFEuZXhwb3J0cyk7dmFyIHNfPSgkKT0+JDtmdW5jdGlvbiBlXygkLFEpe3RoaXNbJF09c18uYmluZChudWxsLFEpfXZhciBqND0oJCxRKT0+e2Zvcih2YXIgSiBpbiBRKVJHKCQsSix7Z2V0OlFbSl0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsc2V0OmVfLmJpbmQoUSxKKX0pfTt2YXIgUzY9JFMoaW1wb3J0Lm1ldGEudXJsKSxRUz1TeW1ib2wuZGlzcG9zZXx8U3ltYm9sLmZvcihcIlN5bWJvbC5kaXNwb3NlXCIpLEpTPVN5bWJvbC5hc3luY0Rpc3Bvc2V8fFN5bWJvbC5mb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlXCIpLFokPSgkLFEsSik9PntpZihRIT1udWxsKXtpZih0eXBlb2YgUSE9PVwib2JqZWN0XCImJnR5cGVvZiBRIT09XCJmdW5jdGlvblwiKXRocm93IFR5cGVFcnJvcignT2JqZWN0IGV4cGVjdGVkIHRvIGJlIGFzc2lnbmVkIHRvIFwidXNpbmdcIiBkZWNsYXJhdGlvbicpO3ZhciBZO2lmKEopWT1RW0pTXTtpZihZPT09dm9pZCAwKVk9UVtRU107aWYodHlwZW9mIFkhPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlXCIpOyQucHVzaChbSixZLFFdKX1lbHNlIGlmKEopJC5wdXNoKFtKXSk7cmV0dXJuIFF9LE0kPSgkLFEsSik9Pnt2YXIgWT10eXBlb2YgU3VwcHJlc3NlZEVycm9yPT09XCJmdW5jdGlvblwiP1N1cHByZXNzZWRFcnJvcjpmdW5jdGlvbihHLFUsSCxxKXtyZXR1cm4gcT1FcnJvcihIKSxxLm5hbWU9XCJTdXBwcmVzc2VkRXJyb3JcIixxLmVycm9yPUcscS5zdXBwcmVzc2VkPVUscX0sWD0oRyk9PlE9Sj9uZXcgWShHLFEsXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWxcIik6KEo9ITAsRyksVz0oRyk9Pnt3aGlsZShHPSQucG9wKCkpdHJ5e3ZhciBVPUdbMV0mJkdbMV0uY2FsbChHWzJdKTtpZihHWzBdKXJldHVybiBQcm9taXNlLnJlc29sdmUoVSkudGhlbihXLChIKT0+KFgoSCksVygpKSl9Y2F0Y2goSCl7WChIKX1pZihKKXRocm93IFF9O3JldHVybiBXKCl9O3ZhciBEMj1JKCh3Mik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodzIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dzIuX2dsb2JhbFRoaXM9dm9pZCAwO3cyLl9nbG9iYWxUaGlzPXR5cGVvZiBnbG9iYWxUaGlzPT09XCJvYmplY3RcIj9nbG9iYWxUaGlzOmdsb2JhbH0pO3ZhciBGMj1JKChOMCk9Pnt2YXIgUng9TjAmJk4wLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oJCxRLEosWSl7aWYoWT09PXZvaWQgMClZPUo7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQsWSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUVtKXX19KX06ZnVuY3Rpb24oJCxRLEosWSl7aWYoWT09PXZvaWQgMClZPUo7JFtZXT1RW0pdfSksUHg9TjAmJk4wLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oJCxRKXtmb3IodmFyIEogaW4gJClpZihKIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUSxKKSlSeChRLCQsSil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShOMCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtQeChEMigpLE4wKX0pO3ZhciBaMj1JKCh3MCk9Pnt2YXIgRXg9dzAmJncwLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oJCxRLEosWSl7aWYoWT09PXZvaWQgMClZPUo7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQsWSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUVtKXX19KX06ZnVuY3Rpb24oJCxRLEosWSl7aWYoWT09PXZvaWQgMClZPUo7JFtZXT1RW0pdfSksYng9dzAmJncwLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oJCxRKXtmb3IodmFyIEogaW4gJClpZihKIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUSxKKSlFeChRLCQsSil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3MCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtieChGMigpLHcwKX0pO3ZhciBUVT1JKChNMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoTTIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7TTIuVkVSU0lPTj12b2lkIDA7TTIuVkVSU0lPTj1cIjEuOS4wXCJ9KTt2YXIgUDI9SSgoSTIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEkyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0kyLmlzQ29tcGF0aWJsZT1JMi5fbWFrZUNvbXBhdGliaWxpdHlDaGVjaz12b2lkIDA7dmFyIF94PVRVKCksajI9L14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLSguKykpPyQvO2Z1bmN0aW9uIEEyKCQpe2xldCBRPW5ldyBTZXQoWyRdKSxKPW5ldyBTZXQsWT0kLm1hdGNoKGoyKTtpZighWSlyZXR1cm4oKT0+ITE7bGV0IFg9e21ham9yOitZWzFdLG1pbm9yOitZWzJdLHBhdGNoOitZWzNdLHByZXJlbGVhc2U6WVs0XX07aWYoWC5wcmVyZWxlYXNlIT1udWxsKXJldHVybiBmdW5jdGlvbihIKXtyZXR1cm4gSD09PSR9O2Z1bmN0aW9uIFcoVSl7cmV0dXJuIEouYWRkKFUpLCExfWZ1bmN0aW9uIEcoVSl7cmV0dXJuIFEuYWRkKFUpLCEwfXJldHVybiBmdW5jdGlvbihIKXtpZihRLmhhcyhIKSlyZXR1cm4hMDtpZihKLmhhcyhIKSlyZXR1cm4hMTtsZXQgcT1ILm1hdGNoKGoyKTtpZighcSlyZXR1cm4gVyhIKTtsZXQgVj17bWFqb3I6K3FbMV0sbWlub3I6K3FbMl0scGF0Y2g6K3FbM10scHJlcmVsZWFzZTpxWzRdfTtpZihWLnByZXJlbGVhc2UhPW51bGwpcmV0dXJuIFcoSCk7aWYoWC5tYWpvciE9PVYubWFqb3IpcmV0dXJuIFcoSCk7aWYoWC5tYWpvcj09PTApe2lmKFgubWlub3I9PT1WLm1pbm9yJiZYLnBhdGNoPD1WLnBhdGNoKXJldHVybiBHKEgpO3JldHVybiBXKEgpfWlmKFgubWlub3I8PVYubWlub3IpcmV0dXJuIEcoSCk7cmV0dXJuIFcoSCl9fUkyLl9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrPUEyO0kyLmlzQ29tcGF0aWJsZT1BMihfeC5WRVJTSU9OKX0pO3ZhciBPMD1JKChFMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoRTIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7RTIudW5yZWdpc3Rlckdsb2JhbD1FMi5nZXRHbG9iYWw9RTIucmVnaXN0ZXJHbG9iYWw9dm9pZCAwO3ZhciBreD1aMigpLGI4PVRVKCksdng9UDIoKSxDeD1iOC5WRVJTSU9OLnNwbGl0KFwiLlwiKVswXSxwNz1TeW1ib2wuZm9yKGBvcGVudGVsZW1ldHJ5LmpzLmFwaS4ke0N4fWApLGQ3PWt4Ll9nbG9iYWxUaGlzO2Z1bmN0aW9uIFR4KCQsUSxKLFk9ITEpe3ZhciBYO2xldCBXPWQ3W3A3XT0oWD1kN1twN10pIT09bnVsbCYmWCE9PXZvaWQgMD9YOnt2ZXJzaW9uOmI4LlZFUlNJT059O2lmKCFZJiZXWyRdKXtsZXQgRz1FcnJvcihgQG9wZW50ZWxlbWV0cnkvYXBpOiBBdHRlbXB0ZWQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBvZiBBUEk6ICR7JH1gKTtyZXR1cm4gSi5lcnJvcihHLnN0YWNrfHxHLm1lc3NhZ2UpLCExfWlmKFcudmVyc2lvbiE9PWI4LlZFUlNJT04pe2xldCBHPUVycm9yKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdHJhdGlvbiBvZiB2ZXJzaW9uIHYke1cudmVyc2lvbn0gZm9yICR7JH0gZG9lcyBub3QgbWF0Y2ggcHJldmlvdXNseSByZWdpc3RlcmVkIEFQSSB2JHtiOC5WRVJTSU9OfWApO3JldHVybiBKLmVycm9yKEcuc3RhY2t8fEcubWVzc2FnZSksITF9cmV0dXJuIFdbJF09USxKLmRlYnVnKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdGVyZWQgYSBnbG9iYWwgZm9yICR7JH0gdiR7YjguVkVSU0lPTn0uYCksITB9RTIucmVnaXN0ZXJHbG9iYWw9VHg7ZnVuY3Rpb24geHgoJCl7dmFyIFEsSjtsZXQgWT0oUT1kN1twN10pPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US52ZXJzaW9uO2lmKCFZfHwhKDAsdnguaXNDb21wYXRpYmxlKShZKSlyZXR1cm47cmV0dXJuKEo9ZDdbcDddKT09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkpbJF19RTIuZ2V0R2xvYmFsPXh4O2Z1bmN0aW9uIGZ4KCQsUSl7US5kZWJ1ZyhgQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciAkeyR9IHYke2I4LlZFUlNJT059LmApO2xldCBKPWQ3W3A3XTtpZihKKWRlbGV0ZSBKWyRdfUUyLnVucmVnaXN0ZXJHbG9iYWw9Znh9KTt2YXIgdjI9SSgoUzIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFMyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1MyLkRpYWdDb21wb25lbnRMb2dnZXI9dm9pZCAwO3ZhciBoeD1PMCgpO2NsYXNzIF8ye2NvbnN0cnVjdG9yKCQpe3RoaXMuX25hbWVzcGFjZT0kLm5hbWVzcGFjZXx8XCJEaWFnQ29tcG9uZW50TG9nZ2VyXCJ9ZGVidWcoLi4uJCl7cmV0dXJuIGk3KFwiZGVidWdcIix0aGlzLl9uYW1lc3BhY2UsJCl9ZXJyb3IoLi4uJCl7cmV0dXJuIGk3KFwiZXJyb3JcIix0aGlzLl9uYW1lc3BhY2UsJCl9aW5mbyguLi4kKXtyZXR1cm4gaTcoXCJpbmZvXCIsdGhpcy5fbmFtZXNwYWNlLCQpfXdhcm4oLi4uJCl7cmV0dXJuIGk3KFwid2FyblwiLHRoaXMuX25hbWVzcGFjZSwkKX12ZXJib3NlKC4uLiQpe3JldHVybiBpNyhcInZlcmJvc2VcIix0aGlzLl9uYW1lc3BhY2UsJCl9fVMyLkRpYWdDb21wb25lbnRMb2dnZXI9XzI7ZnVuY3Rpb24gaTcoJCxRLEope2xldCBZPSgwLGh4LmdldEdsb2JhbCkoXCJkaWFnXCIpO2lmKCFZKXJldHVybjtyZXR1cm4gSi51bnNoaWZ0KFEpLFlbJF0oLi4uSil9fSk7dmFyIGo1PUkoKEMyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShDMixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtDMi5EaWFnTG9nTGV2ZWw9dm9pZCAwO3ZhciB1eDsoZnVuY3Rpb24oJCl7JFskLk5PTkU9MF09XCJOT05FXCIsJFskLkVSUk9SPTMwXT1cIkVSUk9SXCIsJFskLldBUk49NTBdPVwiV0FSTlwiLCRbJC5JTkZPPTYwXT1cIklORk9cIiwkWyQuREVCVUc9NzBdPVwiREVCVUdcIiwkWyQuVkVSQk9TRT04MF09XCJWRVJCT1NFXCIsJFskLkFMTD05OTk5XT1cIkFMTFwifSkodXg9QzIuRGlhZ0xvZ0xldmVsfHwoQzIuRGlhZ0xvZ0xldmVsPXt9KSl9KTt2YXIgZjI9SSgoVDIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFQyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1QyLmNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcj12b2lkIDA7dmFyIGw0PWo1KCk7ZnVuY3Rpb24gbXgoJCxRKXtpZigkPGw0LkRpYWdMb2dMZXZlbC5OT05FKSQ9bDQuRGlhZ0xvZ0xldmVsLk5PTkU7ZWxzZSBpZigkPmw0LkRpYWdMb2dMZXZlbC5BTEwpJD1sNC5EaWFnTG9nTGV2ZWwuQUxMO1E9UXx8e307ZnVuY3Rpb24gSihZLFgpe2xldCBXPVFbWV07aWYodHlwZW9mIFc9PT1cImZ1bmN0aW9uXCImJiQ+PVgpcmV0dXJuIFcuYmluZChRKTtyZXR1cm4gZnVuY3Rpb24oKXt9fXJldHVybntlcnJvcjpKKFwiZXJyb3JcIixsNC5EaWFnTG9nTGV2ZWwuRVJST1IpLHdhcm46SihcIndhcm5cIixsNC5EaWFnTG9nTGV2ZWwuV0FSTiksaW5mbzpKKFwiaW5mb1wiLGw0LkRpYWdMb2dMZXZlbC5JTkZPKSxkZWJ1ZzpKKFwiZGVidWdcIixsNC5EaWFnTG9nTGV2ZWwuREVCVUcpLHZlcmJvc2U6SihcInZlcmJvc2VcIixsNC5EaWFnTG9nTGV2ZWwuVkVSQk9TRSl9fVQyLmNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcj1teH0pO3ZhciBEMD1JKChnMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZzIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZzIuRGlhZ0FQST12b2lkIDA7dmFyIGx4PXYyKCksY3g9ZjIoKSx5Mj1qNSgpLEE1PU8wKCkscHg9XCJkaWFnXCI7Y2xhc3MgZlV7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiAkKFkpe3JldHVybiBmdW5jdGlvbiguLi5YKXtsZXQgVz0oMCxBNS5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtpZighVylyZXR1cm47cmV0dXJuIFdbWV0oLi4uWCl9fWxldCBRPXRoaXMsSj0oWSxYPXtsb2dMZXZlbDp5Mi5EaWFnTG9nTGV2ZWwuSU5GT30pPT57dmFyIFcsRyxVO2lmKFk9PT1RKXtsZXQgVj1FcnJvcihcIkNhbm5vdCB1c2UgZGlhZyBhcyB0aGUgbG9nZ2VyIGZvciBpdHNlbGYuIFBsZWFzZSB1c2UgYSBEaWFnTG9nZ2VyIGltcGxlbWVudGF0aW9uIGxpa2UgQ29uc29sZURpYWdMb2dnZXIgb3IgYSBjdXN0b20gaW1wbGVtZW50YXRpb25cIik7cmV0dXJuIFEuZXJyb3IoKFc9Vi5zdGFjaykhPT1udWxsJiZXIT09dm9pZCAwP1c6Vi5tZXNzYWdlKSwhMX1pZih0eXBlb2YgWD09PVwibnVtYmVyXCIpWD17bG9nTGV2ZWw6WH07bGV0IEg9KDAsQTUuZ2V0R2xvYmFsKShcImRpYWdcIikscT0oMCxjeC5jcmVhdGVMb2dMZXZlbERpYWdMb2dnZXIpKChHPVgubG9nTGV2ZWwpIT09bnVsbCYmRyE9PXZvaWQgMD9HOnkyLkRpYWdMb2dMZXZlbC5JTkZPLFkpO2lmKEgmJiFYLnN1cHByZXNzT3ZlcnJpZGVNZXNzYWdlKXtsZXQgVj0oVT1FcnJvcigpLnN0YWNrKSE9PW51bGwmJlUhPT12b2lkIDA/VTpcIjxmYWlsZWQgdG8gZ2VuZXJhdGUgc3RhY2t0cmFjZT5cIjtILndhcm4oYEN1cnJlbnQgbG9nZ2VyIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZnJvbSAke1Z9YCkscS53YXJuKGBDdXJyZW50IGxvZ2dlciB3aWxsIG92ZXJ3cml0ZSBvbmUgYWxyZWFkeSByZWdpc3RlcmVkIGZyb20gJHtWfWApfXJldHVybigwLEE1LnJlZ2lzdGVyR2xvYmFsKShcImRpYWdcIixxLFEsITApfTtRLnNldExvZ2dlcj1KLFEuZGlzYWJsZT0oKT0+eygwLEE1LnVucmVnaXN0ZXJHbG9iYWwpKHB4LFEpfSxRLmNyZWF0ZUNvbXBvbmVudExvZ2dlcj0oWSk9PntyZXR1cm4gbmV3IGx4LkRpYWdDb21wb25lbnRMb2dnZXIoWSl9LFEudmVyYm9zZT0kKFwidmVyYm9zZVwiKSxRLmRlYnVnPSQoXCJkZWJ1Z1wiKSxRLmluZm89JChcImluZm9cIiksUS53YXJuPSQoXCJ3YXJuXCIpLFEuZXJyb3I9JChcImVycm9yXCIpfXN0YXRpYyBpbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl0aGlzLl9pbnN0YW5jZT1uZXcgZlU7cmV0dXJuIHRoaXMuX2luc3RhbmNlfX1nMi5EaWFnQVBJPWZVfSk7dmFyIGwyPUkoKHUyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1MixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt1Mi5CYWdnYWdlSW1wbD12b2lkIDA7Y2xhc3MgXzh7Y29uc3RydWN0b3IoJCl7dGhpcy5fZW50cmllcz0kP25ldyBNYXAoJCk6bmV3IE1hcH1nZXRFbnRyeSgkKXtsZXQgUT10aGlzLl9lbnRyaWVzLmdldCgkKTtpZighUSlyZXR1cm47cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sUSl9Z2V0QWxsRW50cmllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2VudHJpZXMuZW50cmllcygpKS5tYXAoKFskLFFdKT0+WyQsUV0pfXNldEVudHJ5KCQsUSl7bGV0IEo9bmV3IF84KHRoaXMuX2VudHJpZXMpO3JldHVybiBKLl9lbnRyaWVzLnNldCgkLFEpLEp9cmVtb3ZlRW50cnkoJCl7bGV0IFE9bmV3IF84KHRoaXMuX2VudHJpZXMpO3JldHVybiBRLl9lbnRyaWVzLmRlbGV0ZSgkKSxRfXJlbW92ZUVudHJpZXMoLi4uJCl7bGV0IFE9bmV3IF84KHRoaXMuX2VudHJpZXMpO2ZvcihsZXQgSiBvZiAkKVEuX2VudHJpZXMuZGVsZXRlKEopO3JldHVybiBRfWNsZWFyKCl7cmV0dXJuIG5ldyBfOH19dTIuQmFnZ2FnZUltcGw9Xzh9KTt2YXIgZDI9SSgoYzIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGMyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2MyLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPXZvaWQgMDtjMi5iYWdnYWdlRW50cnlNZXRhZGF0YVN5bWJvbD1TeW1ib2woXCJCYWdnYWdlRW50cnlNZXRhZGF0YVwiKX0pO3ZhciB5VT1JKChpMik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoaTIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7aTIuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nPWkyLmNyZWF0ZUJhZ2dhZ2U9dm9pZCAwO3ZhciBkeD1EMCgpLGl4PWwyKCksbng9ZDIoKSxyeD1keC5EaWFnQVBJLmluc3RhbmNlKCk7ZnVuY3Rpb24gb3goJD17fSl7cmV0dXJuIG5ldyBpeC5CYWdnYWdlSW1wbChuZXcgTWFwKE9iamVjdC5lbnRyaWVzKCQpKSl9aTIuY3JlYXRlQmFnZ2FnZT1veDtmdW5jdGlvbiB0eCgkKXtpZih0eXBlb2YgJCE9PVwic3RyaW5nXCIpcnguZXJyb3IoYENhbm5vdCBjcmVhdGUgYmFnZ2FnZSBtZXRhZGF0YSBmcm9tIHVua25vd24gdHlwZTogJHt0eXBlb2YgJH1gKSwkPVwiXCI7cmV0dXJue19fVFlQRV9fOm54LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sLHRvU3RyaW5nKCl7cmV0dXJuICR9fX1pMi5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9dHh9KTt2YXIgbjc9SSgocjIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHIyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3IyLlJPT1RfQ09OVEVYVD1yMi5jcmVhdGVDb250ZXh0S2V5PXZvaWQgMDtmdW5jdGlvbiBzeCgkKXtyZXR1cm4gU3ltYm9sLmZvcigkKX1yMi5jcmVhdGVDb250ZXh0S2V5PXN4O2NsYXNzIEk1e2NvbnN0cnVjdG9yKCQpe2xldCBRPXRoaXM7US5fY3VycmVudENvbnRleHQ9JD9uZXcgTWFwKCQpOm5ldyBNYXAsUS5nZXRWYWx1ZT0oSik9PlEuX2N1cnJlbnRDb250ZXh0LmdldChKKSxRLnNldFZhbHVlPShKLFkpPT57bGV0IFg9bmV3IEk1KFEuX2N1cnJlbnRDb250ZXh0KTtyZXR1cm4gWC5fY3VycmVudENvbnRleHQuc2V0KEosWSksWH0sUS5kZWxldGVWYWx1ZT0oSik9PntsZXQgWT1uZXcgSTUoUS5fY3VycmVudENvbnRleHQpO3JldHVybiBZLl9jdXJyZW50Q29udGV4dC5kZWxldGUoSiksWX19fXIyLlJPT1RfQ09OVEVYVD1uZXcgSTV9KTt2YXIgZTI9SSgoYTIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGEyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2EyLkRpYWdDb25zb2xlTG9nZ2VyPXZvaWQgMDt2YXIgZ1U9W3tuOlwiZXJyb3JcIixjOlwiZXJyb3JcIn0se246XCJ3YXJuXCIsYzpcIndhcm5cIn0se246XCJpbmZvXCIsYzpcImluZm9cIn0se246XCJkZWJ1Z1wiLGM6XCJkZWJ1Z1wifSx7bjpcInZlcmJvc2VcIixjOlwidHJhY2VcIn1dO2NsYXNzIHQye2NvbnN0cnVjdG9yKCl7ZnVuY3Rpb24gJChRKXtyZXR1cm4gZnVuY3Rpb24oLi4uSil7aWYoY29uc29sZSl7bGV0IFk9Y29uc29sZVtRXTtpZih0eXBlb2YgWSE9PVwiZnVuY3Rpb25cIilZPWNvbnNvbGUubG9nO2lmKHR5cGVvZiBZPT09XCJmdW5jdGlvblwiKXJldHVybiBZLmFwcGx5KGNvbnNvbGUsSil9fX1mb3IobGV0IFE9MDtRPGdVLmxlbmd0aDtRKyspdGhpc1tnVVtRXS5uXT0kKGdVW1FdLmMpfX1hMi5EaWFnQ29uc29sZUxvZ2dlcj10Mn0pO3ZhciBuVT1JKCgkRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoJEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7JEQuY3JlYXRlTm9vcE1ldGVyPSRELk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDPSRELk5PT1BfT0JTRVJWQUJMRV9HQVVHRV9NRVRSSUM9JEQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDPSRELk5PT1BfVVBfRE9XTl9DT1VOVEVSX01FVFJJQz0kRC5OT09QX0hJU1RPR1JBTV9NRVRSSUM9JEQuTk9PUF9HQVVHRV9NRVRSSUM9JEQuTk9PUF9DT1VOVEVSX01FVFJJQz0kRC5OT09QX01FVEVSPSRELk5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYz0kRC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPSRELk5vb3BPYnNlcnZhYmxlQ291bnRlck1ldHJpYz0kRC5Ob29wT2JzZXJ2YWJsZU1ldHJpYz0kRC5Ob29wSGlzdG9ncmFtTWV0cmljPSRELk5vb3BHYXVnZU1ldHJpYz0kRC5Ob29wVXBEb3duQ291bnRlck1ldHJpYz0kRC5Ob29wQ291bnRlck1ldHJpYz0kRC5Ob29wTWV0cmljPSRELk5vb3BNZXRlcj12b2lkIDA7Y2xhc3MgaFV7Y29uc3RydWN0b3IoKXt9Y3JlYXRlR2F1Z2UoJCxRKXtyZXR1cm4gJEQuTk9PUF9HQVVHRV9NRVRSSUN9Y3JlYXRlSGlzdG9ncmFtKCQsUSl7cmV0dXJuICRELk5PT1BfSElTVE9HUkFNX01FVFJJQ31jcmVhdGVDb3VudGVyKCQsUSl7cmV0dXJuICRELk5PT1BfQ09VTlRFUl9NRVRSSUN9Y3JlYXRlVXBEb3duQ291bnRlcigkLFEpe3JldHVybiAkRC5OT09QX1VQX0RPV05fQ09VTlRFUl9NRVRSSUN9Y3JlYXRlT2JzZXJ2YWJsZUdhdWdlKCQsUSl7cmV0dXJuICRELk5PT1BfT0JTRVJWQUJMRV9HQVVHRV9NRVRSSUN9Y3JlYXRlT2JzZXJ2YWJsZUNvdW50ZXIoJCxRKXtyZXR1cm4gJEQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVVcERvd25Db3VudGVyKCQsUSl7cmV0dXJuICRELk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDfWFkZEJhdGNoT2JzZXJ2YWJsZUNhbGxiYWNrKCQsUSl7fXJlbW92ZUJhdGNoT2JzZXJ2YWJsZUNhbGxiYWNrKCQpe319JEQuTm9vcE1ldGVyPWhVO2NsYXNzIFM4e30kRC5Ob29wTWV0cmljPVM4O2NsYXNzIHVVIGV4dGVuZHMgUzh7YWRkKCQsUSl7fX0kRC5Ob29wQ291bnRlck1ldHJpYz11VTtjbGFzcyBtVSBleHRlbmRzIFM4e2FkZCgkLFEpe319JEQuTm9vcFVwRG93bkNvdW50ZXJNZXRyaWM9bVU7Y2xhc3MgbFUgZXh0ZW5kcyBTOHtyZWNvcmQoJCxRKXt9fSRELk5vb3BHYXVnZU1ldHJpYz1sVTtjbGFzcyBjVSBleHRlbmRzIFM4e3JlY29yZCgkLFEpe319JEQuTm9vcEhpc3RvZ3JhbU1ldHJpYz1jVTtjbGFzcyByN3thZGRDYWxsYmFjaygkKXt9cmVtb3ZlQ2FsbGJhY2soJCl7fX0kRC5Ob29wT2JzZXJ2YWJsZU1ldHJpYz1yNztjbGFzcyBwVSBleHRlbmRzIHI3e30kRC5Ob29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM9cFU7Y2xhc3MgZFUgZXh0ZW5kcyByN3t9JEQuTm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYz1kVTtjbGFzcyBpVSBleHRlbmRzIHI3e30kRC5Ob29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM9aVU7JEQuTk9PUF9NRVRFUj1uZXcgaFU7JEQuTk9PUF9DT1VOVEVSX01FVFJJQz1uZXcgdVU7JEQuTk9PUF9HQVVHRV9NRVRSSUM9bmV3IGxVOyRELk5PT1BfSElTVE9HUkFNX01FVFJJQz1uZXcgY1U7JEQuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBtVTskRC5OT09QX09CU0VSVkFCTEVfQ09VTlRFUl9NRVRSSUM9bmV3IHBVOyRELk5PT1BfT0JTRVJWQUJMRV9HQVVHRV9NRVRSSUM9bmV3IGRVOyRELk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBpVTtmdW5jdGlvbiAkZigpe3JldHVybiAkRC5OT09QX01FVEVSfSRELmNyZWF0ZU5vb3BNZXRlcj0kZn0pO3ZhciBWRD1JKChxRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkocUQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7cUQuVmFsdWVUeXBlPXZvaWQgMDt2YXIgVmY7KGZ1bmN0aW9uKCQpeyRbJC5JTlQ9MF09XCJJTlRcIiwkWyQuRE9VQkxFPTFdPVwiRE9VQkxFXCJ9KShWZj1xRC5WYWx1ZVR5cGV8fChxRC5WYWx1ZVR5cGU9e30pKX0pO3ZhciBvVT1JKChCRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQkQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7QkQuZGVmYXVsdFRleHRNYXBTZXR0ZXI9QkQuZGVmYXVsdFRleHRNYXBHZXR0ZXI9dm9pZCAwO0JELmRlZmF1bHRUZXh0TWFwR2V0dGVyPXtnZXQoJCxRKXtpZigkPT1udWxsKXJldHVybjtyZXR1cm4gJFtRXX0sa2V5cygkKXtpZigkPT1udWxsKXJldHVybltdO3JldHVybiBPYmplY3Qua2V5cygkKX19O0JELmRlZmF1bHRUZXh0TWFwU2V0dGVyPXtzZXQoJCxRLEope2lmKCQ9PW51bGwpcmV0dXJuOyRbUV09Sn19fSk7dmFyIEREPUkoKHdEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3RCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt3RC5Ob29wQ29udGV4dE1hbmFnZXI9dm9pZCAwO3ZhciB6Zj1uNygpO2NsYXNzIE5Ee2FjdGl2ZSgpe3JldHVybiB6Zi5ST09UX0NPTlRFWFR9d2l0aCgkLFEsSiwuLi5ZKXtyZXR1cm4gUS5jYWxsKEosLi4uWSl9YmluZCgkLFEpe3JldHVybiBRfWVuYWJsZSgpe3JldHVybiB0aGlzfWRpc2FibGUoKXtyZXR1cm4gdGhpc319d0QuTm9vcENvbnRleHRNYW5hZ2VyPU5EfSk7dmFyIG83PUkoKFpEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShaRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtaRC5Db250ZXh0QVBJPXZvaWQgMDt2YXIgTmY9REQoKSx0VT1PMCgpLEZEPUQwKCksYVU9XCJjb250ZXh0XCIsd2Y9bmV3IE5mLk5vb3BDb250ZXh0TWFuYWdlcjtjbGFzcyBzVXtjb25zdHJ1Y3Rvcigpe31zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2UpdGhpcy5faW5zdGFuY2U9bmV3IHNVO3JldHVybiB0aGlzLl9pbnN0YW5jZX1zZXRHbG9iYWxDb250ZXh0TWFuYWdlcigkKXtyZXR1cm4oMCx0VS5yZWdpc3Rlckdsb2JhbCkoYVUsJCxGRC5EaWFnQVBJLmluc3RhbmNlKCkpfWFjdGl2ZSgpe3JldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmFjdGl2ZSgpfXdpdGgoJCxRLEosLi4uWSl7cmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkud2l0aCgkLFEsSiwuLi5ZKX1iaW5kKCQsUSl7cmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYmluZCgkLFEpfV9nZXRDb250ZXh0TWFuYWdlcigpe3JldHVybigwLHRVLmdldEdsb2JhbCkoYVUpfHx3Zn1kaXNhYmxlKCl7dGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5kaXNhYmxlKCksKDAsdFUudW5yZWdpc3Rlckdsb2JhbCkoYVUsRkQuRGlhZ0FQSS5pbnN0YW5jZSgpKX19WkQuQ29udGV4dEFQST1zVX0pO3ZhciAkSD1JKChMRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoTEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7TEQuVHJhY2VGbGFncz12b2lkIDA7dmFyIE9mOyhmdW5jdGlvbigkKXskWyQuTk9ORT0wXT1cIk5PTkVcIiwkWyQuU0FNUExFRD0xXT1cIlNBTVBMRURcIn0pKE9mPUxELlRyYWNlRmxhZ3N8fChMRC5UcmFjZUZsYWdzPXt9KSl9KTt2YXIgUjU9SSgoakQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGpELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2pELklOVkFMSURfU1BBTl9DT05URVhUPWpELklOVkFMSURfVFJBQ0VJRD1qRC5JTlZBTElEX1NQQU5JRD12b2lkIDA7dmFyIERmPSRIKCk7akQuSU5WQUxJRF9TUEFOSUQ9XCIwMDAwMDAwMDAwMDAwMDAwXCI7akQuSU5WQUxJRF9UUkFDRUlEPVwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIjtqRC5JTlZBTElEX1NQQU5fQ09OVEVYVD17dHJhY2VJZDpqRC5JTlZBTElEX1RSQUNFSUQsc3BhbklkOmpELklOVkFMSURfU1BBTklELHRyYWNlRmxhZ3M6RGYuVHJhY2VGbGFncy5OT05FfX0pO3ZhciBQNT1JKChFRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoRUQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7RUQuTm9uUmVjb3JkaW5nU3Bhbj12b2lkIDA7dmFyIEZmPVI1KCk7Y2xhc3MgUER7Y29uc3RydWN0b3IoJD1GZi5JTlZBTElEX1NQQU5fQ09OVEVYVCl7dGhpcy5fc3BhbkNvbnRleHQ9JH1zcGFuQ29udGV4dCgpe3JldHVybiB0aGlzLl9zcGFuQ29udGV4dH1zZXRBdHRyaWJ1dGUoJCxRKXtyZXR1cm4gdGhpc31zZXRBdHRyaWJ1dGVzKCQpe3JldHVybiB0aGlzfWFkZEV2ZW50KCQsUSl7cmV0dXJuIHRoaXN9YWRkTGluaygkKXtyZXR1cm4gdGhpc31hZGRMaW5rcygkKXtyZXR1cm4gdGhpc31zZXRTdGF0dXMoJCl7cmV0dXJuIHRoaXN9dXBkYXRlTmFtZSgkKXtyZXR1cm4gdGhpc31lbmQoJCl7fWlzUmVjb3JkaW5nKCl7cmV0dXJuITF9cmVjb3JkRXhjZXB0aW9uKCQsUSl7fX1FRC5Ob25SZWNvcmRpbmdTcGFuPVBEfSk7dmFyIFhIPUkoKFNEKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShTRCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtTRC5nZXRTcGFuQ29udGV4dD1TRC5zZXRTcGFuQ29udGV4dD1TRC5kZWxldGVTcGFuPVNELnNldFNwYW49U0QuZ2V0QWN0aXZlU3Bhbj1TRC5nZXRTcGFuPXZvaWQgMDt2YXIgWmY9bjcoKSxNZj1QNSgpLExmPW83KCksUUg9KDAsWmYuY3JlYXRlQ29udGV4dEtleSkoXCJPcGVuVGVsZW1ldHJ5IENvbnRleHQgS2V5IFNQQU5cIik7ZnVuY3Rpb24gSkgoJCl7cmV0dXJuICQuZ2V0VmFsdWUoUUgpfHx2b2lkIDB9U0QuZ2V0U3Bhbj1KSDtmdW5jdGlvbiBqZigpe3JldHVybiBKSChMZi5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfVNELmdldEFjdGl2ZVNwYW49amY7ZnVuY3Rpb24gX0QoJCxRKXtyZXR1cm4gJC5zZXRWYWx1ZShRSCxRKX1TRC5zZXRTcGFuPV9EO2Z1bmN0aW9uIEFmKCQpe3JldHVybiAkLmRlbGV0ZVZhbHVlKFFIKX1TRC5kZWxldGVTcGFuPUFmO2Z1bmN0aW9uIElmKCQsUSl7cmV0dXJuIF9EKCQsbmV3IE1mLk5vblJlY29yZGluZ1NwYW4oUSkpfVNELnNldFNwYW5Db250ZXh0PUlmO2Z1bmN0aW9uIFJmKCQpe3ZhciBRO3JldHVybihRPUpIKCQpKT09PW51bGx8fFE9PT12b2lkIDA/dm9pZCAwOlEuc3BhbkNvbnRleHQoKX1TRC5nZXRTcGFuQ29udGV4dD1SZn0pO3ZhciBFNT1JKCh4RCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoeEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eEQud3JhcFNwYW5Db250ZXh0PXhELmlzU3BhbkNvbnRleHRWYWxpZD14RC5pc1ZhbGlkU3BhbklkPXhELmlzVmFsaWRUcmFjZUlkPXZvaWQgMDt2YXIgdkQ9UjUoKSxrZj1QNSgpLHZmPS9eKFswLTlhLWZdezMyfSkkL2ksQ2Y9L15bMC05YS1mXXsxNn0kL2k7ZnVuY3Rpb24gQ0QoJCl7cmV0dXJuIHZmLnRlc3QoJCkmJiQhPT12RC5JTlZBTElEX1RSQUNFSUR9eEQuaXNWYWxpZFRyYWNlSWQ9Q0Q7ZnVuY3Rpb24gVEQoJCl7cmV0dXJuIENmLnRlc3QoJCkmJiQhPT12RC5JTlZBTElEX1NQQU5JRH14RC5pc1ZhbGlkU3BhbklkPVREO2Z1bmN0aW9uIFRmKCQpe3JldHVybiBDRCgkLnRyYWNlSWQpJiZURCgkLnNwYW5JZCl9eEQuaXNTcGFuQ29udGV4dFZhbGlkPVRmO2Z1bmN0aW9uIHhmKCQpe3JldHVybiBuZXcga2YuTm9uUmVjb3JkaW5nU3BhbigkKX14RC53cmFwU3BhbkNvbnRleHQ9eGZ9KTt2YXIgR0g9SSgoaEQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGhELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2hELk5vb3BUcmFjZXI9dm9pZCAwO3ZhciBoZj1vNygpLHlEPVhIKCksWUg9UDUoKSx1Zj1FNSgpLFdIPWhmLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKTtjbGFzcyBnRHtzdGFydFNwYW4oJCxRLEo9V0guYWN0aXZlKCkpe2lmKEJvb2xlYW4oUT09PW51bGx8fFE9PT12b2lkIDA/dm9pZCAwOlEucm9vdCkpcmV0dXJuIG5ldyBZSC5Ob25SZWNvcmRpbmdTcGFuO2xldCBYPUomJigwLHlELmdldFNwYW5Db250ZXh0KShKKTtpZihtZihYKSYmKDAsdWYuaXNTcGFuQ29udGV4dFZhbGlkKShYKSlyZXR1cm4gbmV3IFlILk5vblJlY29yZGluZ1NwYW4oWCk7ZWxzZSByZXR1cm4gbmV3IFlILk5vblJlY29yZGluZ1NwYW59c3RhcnRBY3RpdmVTcGFuKCQsUSxKLFkpe2xldCBYLFcsRztpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuO2Vsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD09PTIpRz1RO2Vsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD09PTMpWD1RLEc9SjtlbHNlIFg9USxXPUosRz1ZO2xldCBVPVchPT1udWxsJiZXIT09dm9pZCAwP1c6V0guYWN0aXZlKCksSD10aGlzLnN0YXJ0U3BhbigkLFgsVSkscT0oMCx5RC5zZXRTcGFuKShVLEgpO3JldHVybiBXSC53aXRoKHEsRyx2b2lkIDAsSCl9fWhELk5vb3BUcmFjZXI9Z0Q7ZnVuY3Rpb24gbWYoJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmdHlwZW9mICQuc3BhbklkPT09XCJzdHJpbmdcIiYmdHlwZW9mICQudHJhY2VJZD09PVwic3RyaW5nXCImJnR5cGVvZiAkLnRyYWNlRmxhZ3M9PT1cIm51bWJlclwifX0pO3ZhciBVSD1JKChsRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkobEQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7bEQuUHJveHlUcmFjZXI9dm9pZCAwO3ZhciBsZj1HSCgpLGNmPW5ldyBsZi5Ob29wVHJhY2VyO2NsYXNzIG1Ee2NvbnN0cnVjdG9yKCQsUSxKLFkpe3RoaXMuX3Byb3ZpZGVyPSQsdGhpcy5uYW1lPVEsdGhpcy52ZXJzaW9uPUosdGhpcy5vcHRpb25zPVl9c3RhcnRTcGFuKCQsUSxKKXtyZXR1cm4gdGhpcy5fZ2V0VHJhY2VyKCkuc3RhcnRTcGFuKCQsUSxKKX1zdGFydEFjdGl2ZVNwYW4oJCxRLEosWSl7bGV0IFg9dGhpcy5fZ2V0VHJhY2VyKCk7cmV0dXJuIFJlZmxlY3QuYXBwbHkoWC5zdGFydEFjdGl2ZVNwYW4sWCxhcmd1bWVudHMpfV9nZXRUcmFjZXIoKXtpZih0aGlzLl9kZWxlZ2F0ZSlyZXR1cm4gdGhpcy5fZGVsZWdhdGU7bGV0ICQ9dGhpcy5fcHJvdmlkZXIuZ2V0RGVsZWdhdGVUcmFjZXIodGhpcy5uYW1lLHRoaXMudmVyc2lvbix0aGlzLm9wdGlvbnMpO2lmKCEkKXJldHVybiBjZjtyZXR1cm4gdGhpcy5fZGVsZWdhdGU9JCx0aGlzLl9kZWxlZ2F0ZX19bEQuUHJveHlUcmFjZXI9bUR9KTt2YXIgbkQ9SSgoZEQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGRELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2RELk5vb3BUcmFjZXJQcm92aWRlcj12b2lkIDA7dmFyIHBmPUdIKCk7Y2xhc3MgcER7Z2V0VHJhY2VyKCQsUSxKKXtyZXR1cm4gbmV3IHBmLk5vb3BUcmFjZXJ9fWRELk5vb3BUcmFjZXJQcm92aWRlcj1wRH0pO3ZhciBISD1JKChvRCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkob0QsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7b0QuUHJveHlUcmFjZXJQcm92aWRlcj12b2lkIDA7dmFyIGRmPVVIKCksbmY9bkQoKSxyZj1uZXcgbmYuTm9vcFRyYWNlclByb3ZpZGVyO2NsYXNzIHJEe2dldFRyYWNlcigkLFEsSil7dmFyIFk7cmV0dXJuKFk9dGhpcy5nZXREZWxlZ2F0ZVRyYWNlcigkLFEsSikpIT09bnVsbCYmWSE9PXZvaWQgMD9ZOm5ldyBkZi5Qcm94eVRyYWNlcih0aGlzLCQsUSxKKX1nZXREZWxlZ2F0ZSgpe3ZhciAkO3JldHVybigkPXRoaXMuX2RlbGVnYXRlKSE9PW51bGwmJiQhPT12b2lkIDA/JDpyZn1zZXREZWxlZ2F0ZSgkKXt0aGlzLl9kZWxlZ2F0ZT0kfWdldERlbGVnYXRlVHJhY2VyKCQsUSxKKXt2YXIgWTtyZXR1cm4oWT10aGlzLl9kZWxlZ2F0ZSk9PT1udWxsfHxZPT09dm9pZCAwP3ZvaWQgMDpZLmdldFRyYWNlcigkLFEsSil9fW9ELlByb3h5VHJhY2VyUHJvdmlkZXI9ckR9KTt2YXIgc0Q9SSgoYUQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGFELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2FELlNhbXBsaW5nRGVjaXNpb249dm9pZCAwO3ZhciBvZjsoZnVuY3Rpb24oJCl7JFskLk5PVF9SRUNPUkQ9MF09XCJOT1RfUkVDT1JEXCIsJFskLlJFQ09SRD0xXT1cIlJFQ09SRFwiLCRbJC5SRUNPUkRfQU5EX1NBTVBMRUQ9Ml09XCJSRUNPUkRfQU5EX1NBTVBMRURcIn0pKG9mPWFELlNhbXBsaW5nRGVjaXNpb258fChhRC5TYW1wbGluZ0RlY2lzaW9uPXt9KSl9KTt2YXIgJEY9SSgoZUQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGVELFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2VELlNwYW5LaW5kPXZvaWQgMDt2YXIgdGY7KGZ1bmN0aW9uKCQpeyRbJC5JTlRFUk5BTD0wXT1cIklOVEVSTkFMXCIsJFskLlNFUlZFUj0xXT1cIlNFUlZFUlwiLCRbJC5DTElFTlQ9Ml09XCJDTElFTlRcIiwkWyQuUFJPRFVDRVI9M109XCJQUk9EVUNFUlwiLCRbJC5DT05TVU1FUj00XT1cIkNPTlNVTUVSXCJ9KSh0Zj1lRC5TcGFuS2luZHx8KGVELlNwYW5LaW5kPXt9KSl9KTt2YXIgSkY9SSgoUUYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFFGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1FGLlNwYW5TdGF0dXNDb2RlPXZvaWQgMDt2YXIgYWY7KGZ1bmN0aW9uKCQpeyRbJC5VTlNFVD0wXT1cIlVOU0VUXCIsJFskLk9LPTFdPVwiT0tcIiwkWyQuRVJST1I9Ml09XCJFUlJPUlwifSkoYWY9UUYuU3BhblN0YXR1c0NvZGV8fChRRi5TcGFuU3RhdHVzQ29kZT17fSkpfSk7dmFyIFdGPUkoKFhGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShYRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtYRi52YWxpZGF0ZVZhbHVlPVhGLnZhbGlkYXRlS2V5PXZvaWQgMDt2YXIgQkg9XCJbXzAtOWEtei0qL11cIixzZj1gW2Etel0ke0JIfXswLDI1NX1gLGVmPWBbYS16MC05XSR7Qkh9ezAsMjQwfUBbYS16XSR7Qkh9ezAsMTN9YCwkeT1uZXcgUmVnRXhwKGBeKD86JHtzZn18JHtlZn0pJGApLFF5PS9eWyAtfl17MCwyNTV9WyEtfl0kLyxKeT0vLHw9LztmdW5jdGlvbiBYeSgkKXtyZXR1cm4gJHkudGVzdCgkKX1YRi52YWxpZGF0ZUtleT1YeTtmdW5jdGlvbiBZeSgkKXtyZXR1cm4gUXkudGVzdCgkKSYmIUp5LnRlc3QoJCl9WEYudmFsaWRhdGVWYWx1ZT1ZeX0pO3ZhciBCRj1JKChxRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkocUYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7cUYuVHJhY2VTdGF0ZUltcGw9dm9pZCAwO3ZhciBHRj1XRigpLFVGPTMyLEd5PTUxMixIRj1cIixcIixLRj1cIj1cIjtjbGFzcyB6SHtjb25zdHJ1Y3RvcigkKXtpZih0aGlzLl9pbnRlcm5hbFN0YXRlPW5ldyBNYXAsJCl0aGlzLl9wYXJzZSgkKX1zZXQoJCxRKXtsZXQgSj10aGlzLl9jbG9uZSgpO2lmKEouX2ludGVybmFsU3RhdGUuaGFzKCQpKUouX2ludGVybmFsU3RhdGUuZGVsZXRlKCQpO3JldHVybiBKLl9pbnRlcm5hbFN0YXRlLnNldCgkLFEpLEp9dW5zZXQoJCl7bGV0IFE9dGhpcy5fY2xvbmUoKTtyZXR1cm4gUS5faW50ZXJuYWxTdGF0ZS5kZWxldGUoJCksUX1nZXQoJCl7cmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KCQpfXNlcmlhbGl6ZSgpe3JldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKCgkLFEpPT57cmV0dXJuICQucHVzaChRK0tGK3RoaXMuZ2V0KFEpKSwkfSxbXSkuam9pbihIRil9X3BhcnNlKCQpe2lmKCQubGVuZ3RoPkd5KXJldHVybjtpZih0aGlzLl9pbnRlcm5hbFN0YXRlPSQuc3BsaXQoSEYpLnJldmVyc2UoKS5yZWR1Y2UoKFEsSik9PntsZXQgWT1KLnRyaW0oKSxYPVkuaW5kZXhPZihLRik7aWYoWCE9PS0xKXtsZXQgVz1ZLnNsaWNlKDAsWCksRz1ZLnNsaWNlKFgrMSxKLmxlbmd0aCk7aWYoKDAsR0YudmFsaWRhdGVLZXkpKFcpJiYoMCxHRi52YWxpZGF0ZVZhbHVlKShHKSlRLnNldChXLEcpfXJldHVybiBRfSxuZXcgTWFwKSx0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemU+VUYpdGhpcy5faW50ZXJuYWxTdGF0ZT1uZXcgTWFwKEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5lbnRyaWVzKCkpLnJldmVyc2UoKS5zbGljZSgwLFVGKSl9X2tleXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpfV9jbG9uZSgpe2xldCAkPW5ldyB6SDtyZXR1cm4gJC5faW50ZXJuYWxTdGF0ZT1uZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCR9fXFGLlRyYWNlU3RhdGVJbXBsPXpIfSk7dmFyIHdGPUkoKHpGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6RixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt6Ri5jcmVhdGVUcmFjZVN0YXRlPXZvaWQgMDt2YXIgVXk9QkYoKTtmdW5jdGlvbiBIeSgkKXtyZXR1cm4gbmV3IFV5LlRyYWNlU3RhdGVJbXBsKCQpfXpGLmNyZWF0ZVRyYWNlU3RhdGU9SHl9KTt2YXIgRkY9SSgoT0YpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KE9GLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO09GLmNvbnRleHQ9dm9pZCAwO3ZhciBLeT1vNygpO09GLmNvbnRleHQ9S3kuQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpfSk7dmFyIExGPUkoKFpGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShaRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtaRi5kaWFnPXZvaWQgMDt2YXIgcXk9RDAoKTtaRi5kaWFnPXF5LkRpYWdBUEkuaW5zdGFuY2UoKX0pO3ZhciBJRj1JKChqRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoakYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7akYuTk9PUF9NRVRFUl9QUk9WSURFUj1qRi5Ob29wTWV0ZXJQcm92aWRlcj12b2lkIDA7dmFyIFZ5PW5VKCk7Y2xhc3MgTkh7Z2V0TWV0ZXIoJCxRLEope3JldHVybiBWeS5OT09QX01FVEVSfX1qRi5Ob29wTWV0ZXJQcm92aWRlcj1OSDtqRi5OT09QX01FVEVSX1BST1ZJREVSPW5ldyBOSH0pO3ZhciBiRj1JKChQRik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUEYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7UEYuTWV0cmljc0FQST12b2lkIDA7dmFyIHp5PUlGKCksd0g9TzAoKSxSRj1EMCgpLE9IPVwibWV0cmljc1wiO2NsYXNzIERIe2NvbnN0cnVjdG9yKCl7fXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl0aGlzLl9pbnN0YW5jZT1uZXcgREg7cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbE1ldGVyUHJvdmlkZXIoJCl7cmV0dXJuKDAsd0gucmVnaXN0ZXJHbG9iYWwpKE9ILCQsUkYuRGlhZ0FQSS5pbnN0YW5jZSgpKX1nZXRNZXRlclByb3ZpZGVyKCl7cmV0dXJuKDAsd0guZ2V0R2xvYmFsKShPSCl8fHp5Lk5PT1BfTUVURVJfUFJPVklERVJ9Z2V0TWV0ZXIoJCxRLEope3JldHVybiB0aGlzLmdldE1ldGVyUHJvdmlkZXIoKS5nZXRNZXRlcigkLFEsSil9ZGlzYWJsZSgpeygwLHdILnVucmVnaXN0ZXJHbG9iYWwpKE9ILFJGLkRpYWdBUEkuaW5zdGFuY2UoKSl9fVBGLk1ldHJpY3NBUEk9REh9KTt2YXIga0Y9SSgoX0YpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KF9GLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO19GLm1ldHJpY3M9dm9pZCAwO3ZhciBOeT1iRigpO19GLm1ldHJpY3M9TnkuTWV0cmljc0FQSS5nZXRJbnN0YW5jZSgpfSk7dmFyIHhGPUkoKENGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShDRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtDRi5Ob29wVGV4dE1hcFByb3BhZ2F0b3I9dm9pZCAwO2NsYXNzIHZGe2luamVjdCgkLFEpe31leHRyYWN0KCQsUSl7cmV0dXJuICR9ZmllbGRzKCl7cmV0dXJuW119fUNGLk5vb3BUZXh0TWFwUHJvcGFnYXRvcj12Rn0pO3ZhciBoRj1JKCh5Rik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoeUYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eUYuZGVsZXRlQmFnZ2FnZT15Ri5zZXRCYWdnYWdlPXlGLmdldEFjdGl2ZUJhZ2dhZ2U9eUYuZ2V0QmFnZ2FnZT12b2lkIDA7dmFyIHd5PW83KCksT3k9bjcoKSxGSD0oMCxPeS5jcmVhdGVDb250ZXh0S2V5KShcIk9wZW5UZWxlbWV0cnkgQmFnZ2FnZSBLZXlcIik7ZnVuY3Rpb24gZkYoJCl7cmV0dXJuICQuZ2V0VmFsdWUoRkgpfHx2b2lkIDB9eUYuZ2V0QmFnZ2FnZT1mRjtmdW5jdGlvbiBEeSgpe3JldHVybiBmRih3eS5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfXlGLmdldEFjdGl2ZUJhZ2dhZ2U9RHk7ZnVuY3Rpb24gRnkoJCxRKXtyZXR1cm4gJC5zZXRWYWx1ZShGSCxRKX15Ri5zZXRCYWdnYWdlPUZ5O2Z1bmN0aW9uIFp5KCQpe3JldHVybiAkLmRlbGV0ZVZhbHVlKEZIKX15Ri5kZWxldGVCYWdnYWdlPVp5fSk7dmFyIHBGPUkoKGxGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShsRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtsRi5Qcm9wYWdhdGlvbkFQST12b2lkIDA7dmFyIFpIPU8wKCksQXk9eEYoKSx1Rj1vVSgpLGI1PWhGKCksSXk9eVUoKSxtRj1EMCgpLE1IPVwicHJvcGFnYXRpb25cIixSeT1uZXcgQXkuTm9vcFRleHRNYXBQcm9wYWdhdG9yO2NsYXNzIExIe2NvbnN0cnVjdG9yKCl7dGhpcy5jcmVhdGVCYWdnYWdlPUl5LmNyZWF0ZUJhZ2dhZ2UsdGhpcy5nZXRCYWdnYWdlPWI1LmdldEJhZ2dhZ2UsdGhpcy5nZXRBY3RpdmVCYWdnYWdlPWI1LmdldEFjdGl2ZUJhZ2dhZ2UsdGhpcy5zZXRCYWdnYWdlPWI1LnNldEJhZ2dhZ2UsdGhpcy5kZWxldGVCYWdnYWdlPWI1LmRlbGV0ZUJhZ2dhZ2V9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXRoaXMuX2luc3RhbmNlPW5ldyBMSDtyZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsUHJvcGFnYXRvcigkKXtyZXR1cm4oMCxaSC5yZWdpc3Rlckdsb2JhbCkoTUgsJCxtRi5EaWFnQVBJLmluc3RhbmNlKCkpfWluamVjdCgkLFEsSj11Ri5kZWZhdWx0VGV4dE1hcFNldHRlcil7cmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5pbmplY3QoJCxRLEopfWV4dHJhY3QoJCxRLEo9dUYuZGVmYXVsdFRleHRNYXBHZXR0ZXIpe3JldHVybiB0aGlzLl9nZXRHbG9iYWxQcm9wYWdhdG9yKCkuZXh0cmFjdCgkLFEsSil9ZmllbGRzKCl7cmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5maWVsZHMoKX1kaXNhYmxlKCl7KDAsWkgudW5yZWdpc3Rlckdsb2JhbCkoTUgsbUYuRGlhZ0FQSS5pbnN0YW5jZSgpKX1fZ2V0R2xvYmFsUHJvcGFnYXRvcigpe3JldHVybigwLFpILmdldEdsb2JhbCkoTUgpfHxSeX19bEYuUHJvcGFnYXRpb25BUEk9TEh9KTt2YXIgbkY9SSgoZEYpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGRGLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2RGLnByb3BhZ2F0aW9uPXZvaWQgMDt2YXIgUHk9cEYoKTtkRi5wcm9wYWdhdGlvbj1QeS5Qcm9wYWdhdGlvbkFQSS5nZXRJbnN0YW5jZSgpfSk7dmFyIGVGPUkoKGFGKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhRixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTthRi5UcmFjZUFQST12b2lkIDA7dmFyIGpIPU8wKCksckY9SEgoKSxvRj1FNSgpLGs4PVhIKCksdEY9RDAoKSxBSD1cInRyYWNlXCI7Y2xhc3MgSUh7Y29uc3RydWN0b3IoKXt0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyPW5ldyByRi5Qcm94eVRyYWNlclByb3ZpZGVyLHRoaXMud3JhcFNwYW5Db250ZXh0PW9GLndyYXBTcGFuQ29udGV4dCx0aGlzLmlzU3BhbkNvbnRleHRWYWxpZD1vRi5pc1NwYW5Db250ZXh0VmFsaWQsdGhpcy5kZWxldGVTcGFuPWs4LmRlbGV0ZVNwYW4sdGhpcy5nZXRTcGFuPWs4LmdldFNwYW4sdGhpcy5nZXRBY3RpdmVTcGFuPWs4LmdldEFjdGl2ZVNwYW4sdGhpcy5nZXRTcGFuQ29udGV4dD1rOC5nZXRTcGFuQ29udGV4dCx0aGlzLnNldFNwYW49azguc2V0U3Bhbix0aGlzLnNldFNwYW5Db250ZXh0PWs4LnNldFNwYW5Db250ZXh0fXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl0aGlzLl9pbnN0YW5jZT1uZXcgSUg7cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbFRyYWNlclByb3ZpZGVyKCQpe2xldCBRPSgwLGpILnJlZ2lzdGVyR2xvYmFsKShBSCx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLHRGLkRpYWdBUEkuaW5zdGFuY2UoKSk7aWYoUSl0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLnNldERlbGVnYXRlKCQpO3JldHVybiBRfWdldFRyYWNlclByb3ZpZGVyKCl7cmV0dXJuKDAsakguZ2V0R2xvYmFsKShBSCl8fHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXJ9Z2V0VHJhY2VyKCQsUSl7cmV0dXJuIHRoaXMuZ2V0VHJhY2VyUHJvdmlkZXIoKS5nZXRUcmFjZXIoJCxRKX1kaXNhYmxlKCl7KDAsakgudW5yZWdpc3Rlckdsb2JhbCkoQUgsdEYuRGlhZ0FQSS5pbnN0YW5jZSgpKSx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyPW5ldyByRi5Qcm94eVRyYWNlclByb3ZpZGVyfX1hRi5UcmFjZUFQST1JSH0pO3ZhciBKWj1JKCgkWik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoJFosXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7JFoudHJhY2U9dm9pZCAwO3ZhciBFeT1lRigpOyRaLnRyYWNlPUV5LlRyYWNlQVBJLmdldEluc3RhbmNlKCl9KTt2YXIgRUg9SSgoRiQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0YkLnRyYWNlPUYkLnByb3BhZ2F0aW9uPUYkLm1ldHJpY3M9RiQuZGlhZz1GJC5jb250ZXh0PUYkLklOVkFMSURfU1BBTl9DT05URVhUPUYkLklOVkFMSURfVFJBQ0VJRD1GJC5JTlZBTElEX1NQQU5JRD1GJC5pc1ZhbGlkU3BhbklkPUYkLmlzVmFsaWRUcmFjZUlkPUYkLmlzU3BhbkNvbnRleHRWYWxpZD1GJC5jcmVhdGVUcmFjZVN0YXRlPUYkLlRyYWNlRmxhZ3M9RiQuU3BhblN0YXR1c0NvZGU9RiQuU3BhbktpbmQ9RiQuU2FtcGxpbmdEZWNpc2lvbj1GJC5Qcm94eVRyYWNlclByb3ZpZGVyPUYkLlByb3h5VHJhY2VyPUYkLmRlZmF1bHRUZXh0TWFwU2V0dGVyPUYkLmRlZmF1bHRUZXh0TWFwR2V0dGVyPUYkLlZhbHVlVHlwZT1GJC5jcmVhdGVOb29wTWV0ZXI9RiQuRGlhZ0xvZ0xldmVsPUYkLkRpYWdDb25zb2xlTG9nZ2VyPUYkLlJPT1RfQ09OVEVYVD1GJC5jcmVhdGVDb250ZXh0S2V5PUYkLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz12b2lkIDA7dmFyIGJ5PXlVKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJ5LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZ319KTt2YXIgWFo9bjcoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJjcmVhdGVDb250ZXh0S2V5XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFhaLmNyZWF0ZUNvbnRleHRLZXl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiUk9PVF9DT05URVhUXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFhaLlJPT1RfQ09OVEVYVH19KTt2YXIgX3k9ZTIoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJEaWFnQ29uc29sZUxvZ2dlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBfeS5EaWFnQ29uc29sZUxvZ2dlcn19KTt2YXIgU3k9ajUoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJEaWFnTG9nTGV2ZWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU3kuRGlhZ0xvZ0xldmVsfX0pO3ZhciBreT1uVSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcImNyZWF0ZU5vb3BNZXRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBreS5jcmVhdGVOb29wTWV0ZXJ9fSk7dmFyIHZ5PVZEKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiVmFsdWVUeXBlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZ5LlZhbHVlVHlwZX19KTt2YXIgWVo9b1UoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJkZWZhdWx0VGV4dE1hcEdldHRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZWi5kZWZhdWx0VGV4dE1hcEdldHRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJkZWZhdWx0VGV4dE1hcFNldHRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZWi5kZWZhdWx0VGV4dE1hcFNldHRlcn19KTt2YXIgQ3k9VUgoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJQcm94eVRyYWNlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBDeS5Qcm94eVRyYWNlcn19KTt2YXIgVHk9SEgoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJQcm94eVRyYWNlclByb3ZpZGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFR5LlByb3h5VHJhY2VyUHJvdmlkZXJ9fSk7dmFyIHh5PXNEKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiU2FtcGxpbmdEZWNpc2lvblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB4eS5TYW1wbGluZ0RlY2lzaW9ufX0pO3ZhciBmeT0kRigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIlNwYW5LaW5kXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ5LlNwYW5LaW5kfX0pO3ZhciB5eT1KRigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIlNwYW5TdGF0dXNDb2RlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHl5LlNwYW5TdGF0dXNDb2RlfX0pO3ZhciBneT0kSCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIlRyYWNlRmxhZ3NcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ3kuVHJhY2VGbGFnc319KTt2YXIgaHk9d0YoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJjcmVhdGVUcmFjZVN0YXRlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGh5LmNyZWF0ZVRyYWNlU3RhdGV9fSk7dmFyIFJIPUU1KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiaXNTcGFuQ29udGV4dFZhbGlkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJILmlzU3BhbkNvbnRleHRWYWxpZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJpc1ZhbGlkVHJhY2VJZFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBSSC5pc1ZhbGlkVHJhY2VJZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJpc1ZhbGlkU3BhbklkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJILmlzVmFsaWRTcGFuSWR9fSk7dmFyIFBIPVI1KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiSU5WQUxJRF9TUEFOSURcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUEguSU5WQUxJRF9TUEFOSUR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiSU5WQUxJRF9UUkFDRUlEXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFBILklOVkFMSURfVFJBQ0VJRH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJJTlZBTElEX1NQQU5fQ09OVEVYVFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBQSC5JTlZBTElEX1NQQU5fQ09OVEVYVH19KTt2YXIgV1o9RkYoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJjb250ZXh0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdaLmNvbnRleHR9fSk7dmFyIEdaPUxGKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEYkLFwiZGlhZ1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBHWi5kaWFnfX0pO3ZhciBVWj1rRigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShGJCxcIm1ldHJpY3NcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVVoubWV0cmljc319KTt2YXIgSFo9bkYoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJwcm9wYWdhdGlvblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBIWi5wcm9wYWdhdGlvbn19KTt2YXIgS1o9SlooKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRiQsXCJ0cmFjZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBLWi50cmFjZX19KTtGJC5kZWZhdWx0PXtjb250ZXh0OldaLmNvbnRleHQsZGlhZzpHWi5kaWFnLG1ldHJpY3M6VVoubWV0cmljcyxwcm9wYWdhdGlvbjpIWi5wcm9wYWdhdGlvbix0cmFjZTpLWi50cmFjZX19KTt2YXIgYko9SSgoVmopPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFZqLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1ZqLnJlZ2V4cENvZGU9VmouZ2V0RXNtRXhwb3J0TmFtZT1Wai5nZXRQcm9wZXJ0eT1Wai5zYWZlU3RyaW5naWZ5PVZqLnN0cmluZ2lmeT1Wai5zdHJDb25jYXQ9VmouYWRkQ29kZUFyZz1Wai5zdHI9VmouXz1Wai5uaWw9VmouX0NvZGU9VmouTmFtZT1Wai5JREVOVElGSUVSPVZqLl9Db2RlT3JOYW1lPXZvaWQgMDtjbGFzcyBNV3t9VmouX0NvZGVPck5hbWU9TVc7VmouSURFTlRJRklFUj0vXlthLXokX11bYS16JF8wLTldKiQvaTtjbGFzcyBCOSBleHRlbmRzIE1Xe2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7aWYoIVZqLklERU5USUZJRVIudGVzdCgkKSl0aHJvdyBFcnJvcihcIkNvZGVHZW46IG5hbWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcIik7dGhpcy5zdHI9JH10b1N0cmluZygpe3JldHVybiB0aGlzLnN0cn1lbXB0eVN0cigpe3JldHVybiExfWdldCBuYW1lcygpe3JldHVybntbdGhpcy5zdHJdOjF9fX1Wai5OYW1lPUI5O2NsYXNzIHo0IGV4dGVuZHMgTVd7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTt0aGlzLl9pdGVtcz10eXBlb2YgJD09PVwic3RyaW5nXCI/WyRdOiR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zdHJ9ZW1wdHlTdHIoKXtpZih0aGlzLl9pdGVtcy5sZW5ndGg+MSlyZXR1cm4hMTtsZXQgJD10aGlzLl9pdGVtc1swXTtyZXR1cm4gJD09PVwiXCJ8fCQ9PT0nXCJcIid9Z2V0IHN0cigpe3ZhciAkO3JldHVybigkPXRoaXMuX3N0cikhPT1udWxsJiYkIT09dm9pZCAwPyQ6dGhpcy5fc3RyPXRoaXMuX2l0ZW1zLnJlZHVjZSgoUSxKKT0+YCR7UX0ke0p9YCxcIlwiKX1nZXQgbmFtZXMoKXt2YXIgJDtyZXR1cm4oJD10aGlzLl9uYW1lcykhPT1udWxsJiYkIT09dm9pZCAwPyQ6dGhpcy5fbmFtZXM9dGhpcy5faXRlbXMucmVkdWNlKChRLEopPT57aWYoSiBpbnN0YW5jZW9mIEI5KVFbSi5zdHJdPShRW0ouc3RyXXx8MCkrMTtyZXR1cm4gUX0se30pfX1Wai5fQ29kZT16NDtWai5uaWw9bmV3IHo0KFwiXCIpO2Z1bmN0aW9uIEtqKCQsLi4uUSl7bGV0IEo9WyRbMF1dLFk9MDt3aGlsZShZPFEubGVuZ3RoKURCKEosUVtZXSksSi5wdXNoKCRbKytZXSk7cmV0dXJuIG5ldyB6NChKKX1Wai5fPUtqO3ZhciBPQj1uZXcgejQoXCIrXCIpO2Z1bmN0aW9uIHFqKCQsLi4uUSl7bGV0IEo9W0VKKCRbMF0pXSxZPTA7d2hpbGUoWTxRLmxlbmd0aClKLnB1c2goT0IpLERCKEosUVtZXSksSi5wdXNoKE9CLEVKKCRbKytZXSkpO3JldHVybiBCcChKKSxuZXcgejQoSil9Vmouc3RyPXFqO2Z1bmN0aW9uIERCKCQsUSl7aWYoUSBpbnN0YW5jZW9mIHo0KSQucHVzaCguLi5RLl9pdGVtcyk7ZWxzZSBpZihRIGluc3RhbmNlb2YgQjkpJC5wdXNoKFEpO2Vsc2UgJC5wdXNoKHdwKFEpKX1Wai5hZGRDb2RlQXJnPURCO2Z1bmN0aW9uIEJwKCQpe2xldCBRPTE7d2hpbGUoUTwkLmxlbmd0aC0xKXtpZigkW1FdPT09T0Ipe2xldCBKPXpwKCRbUS0xXSwkW1ErMV0pO2lmKEohPT12b2lkIDApeyQuc3BsaWNlKFEtMSwzLEopO2NvbnRpbnVlfSRbUSsrXT1cIitcIn1RKyt9fWZ1bmN0aW9uIHpwKCQsUSl7aWYoUT09PSdcIlwiJylyZXR1cm4gJDtpZigkPT09J1wiXCInKXJldHVybiBRO2lmKHR5cGVvZiAkPT1cInN0cmluZ1wiKXtpZihRIGluc3RhbmNlb2YgQjl8fCRbJC5sZW5ndGgtMV0hPT0nXCInKXJldHVybjtpZih0eXBlb2YgUSE9XCJzdHJpbmdcIilyZXR1cm5gJHskLnNsaWNlKDAsLTEpfSR7UX1cImA7aWYoUVswXT09PSdcIicpcmV0dXJuICQuc2xpY2UoMCwtMSkrUS5zbGljZSgxKTtyZXR1cm59aWYodHlwZW9mIFE9PVwic3RyaW5nXCImJlFbMF09PT0nXCInJiYhKCQgaW5zdGFuY2VvZiBCOSkpcmV0dXJuYFwiJHskfSR7US5zbGljZSgxKX1gO3JldHVybn1mdW5jdGlvbiBOcCgkLFEpe3JldHVybiBRLmVtcHR5U3RyKCk/JDokLmVtcHR5U3RyKCk/UTpxamAkeyR9JHtRfWB9Vmouc3RyQ29uY2F0PU5wO2Z1bmN0aW9uIHdwKCQpe3JldHVybiB0eXBlb2YgJD09XCJudW1iZXJcInx8dHlwZW9mICQ9PVwiYm9vbGVhblwifHwkPT09bnVsbD8kOkVKKEFycmF5LmlzQXJyYXkoJCk/JC5qb2luKFwiLFwiKTokKX1mdW5jdGlvbiBPcCgkKXtyZXR1cm4gbmV3IHo0KEVKKCQpKX1Wai5zdHJpbmdpZnk9T3A7ZnVuY3Rpb24gRUooJCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KCQpLnJlcGxhY2UoL1xcdTIwMjgvZyxcIlxcXFx1MjAyOFwiKS5yZXBsYWNlKC9cXHUyMDI5L2csXCJcXFxcdTIwMjlcIil9Vmouc2FmZVN0cmluZ2lmeT1FSjtmdW5jdGlvbiBEcCgkKXtyZXR1cm4gdHlwZW9mICQ9PVwic3RyaW5nXCImJlZqLklERU5USUZJRVIudGVzdCgkKT9uZXcgejQoYC4keyR9YCk6S2pgWyR7JH1dYH1Wai5nZXRQcm9wZXJ0eT1EcDtmdW5jdGlvbiBGcCgkKXtpZih0eXBlb2YgJD09XCJzdHJpbmdcIiYmVmouSURFTlRJRklFUi50ZXN0KCQpKXJldHVybiBuZXcgejQoYCR7JH1gKTt0aHJvdyBFcnJvcihgQ29kZUdlbjogaW52YWxpZCBleHBvcnQgbmFtZTogJHskfSwgdXNlIGV4cGxpY2l0ICRpZCBuYW1lIG1hcHBpbmdgKX1Wai5nZXRFc21FeHBvcnROYW1lPUZwO2Z1bmN0aW9uIFpwKCQpe3JldHVybiBuZXcgejQoJC50b1N0cmluZygpKX1Wai5yZWdleHBDb2RlPVpwfSk7dmFyIExCPUkoKHdqKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt3ai5WYWx1ZVNjb3BlPXdqLlZhbHVlU2NvcGVOYW1lPXdqLlNjb3BlPXdqLnZhcktpbmRzPXdqLlVzZWRWYWx1ZVN0YXRlPXZvaWQgMDt2YXIgUjY9YkooKTtjbGFzcyB6aiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCQpe3N1cGVyKGBDb2RlR2VuOiBcImNvZGVcIiBmb3IgJHskfSBub3QgZGVmaW5lZGApO3RoaXMudmFsdWU9JC52YWx1ZX19dmFyIGpXOyhmdW5jdGlvbigkKXskWyQuU3RhcnRlZD0wXT1cIlN0YXJ0ZWRcIiwkWyQuQ29tcGxldGVkPTFdPVwiQ29tcGxldGVkXCJ9KShqV3x8KHdqLlVzZWRWYWx1ZVN0YXRlPWpXPXt9KSk7d2oudmFyS2luZHM9e2NvbnN0Om5ldyBSNi5OYW1lKFwiY29uc3RcIiksbGV0Om5ldyBSNi5OYW1lKFwibGV0XCIpLHZhcjpuZXcgUjYuTmFtZShcInZhclwiKX07Y2xhc3MgWkJ7Y29uc3RydWN0b3Ioe3ByZWZpeGVzOiQscGFyZW50OlF9PXt9KXt0aGlzLl9uYW1lcz17fSx0aGlzLl9wcmVmaXhlcz0kLHRoaXMuX3BhcmVudD1RfXRvTmFtZSgkKXtyZXR1cm4gJCBpbnN0YW5jZW9mIFI2Lk5hbWU/JDp0aGlzLm5hbWUoJCl9bmFtZSgkKXtyZXR1cm4gbmV3IFI2Lk5hbWUodGhpcy5fbmV3TmFtZSgkKSl9X25ld05hbWUoJCl7bGV0IFE9dGhpcy5fbmFtZXNbJF18fHRoaXMuX25hbWVHcm91cCgkKTtyZXR1cm5gJHskfSR7US5pbmRleCsrfWB9X25hbWVHcm91cCgkKXt2YXIgUSxKO2lmKCgoSj0oUT10aGlzLl9wYXJlbnQpPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5fcHJlZml4ZXMpPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si5oYXMoJCkpfHx0aGlzLl9wcmVmaXhlcyYmIXRoaXMuX3ByZWZpeGVzLmhhcygkKSl0aHJvdyBFcnJvcihgQ29kZUdlbjogcHJlZml4IFwiJHskfVwiIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc2NvcGVgKTtyZXR1cm4gdGhpcy5fbmFtZXNbJF09e3ByZWZpeDokLGluZGV4OjB9fX13ai5TY29wZT1aQjtjbGFzcyBNQiBleHRlbmRzIFI2Lk5hbWV7Y29uc3RydWN0b3IoJCxRKXtzdXBlcihRKTt0aGlzLnByZWZpeD0kfXNldFZhbHVlKCQse3Byb3BlcnR5OlEsaXRlbUluZGV4Okp9KXt0aGlzLnZhbHVlPSQsdGhpcy5zY29wZVBhdGg9UjYuX2AuJHtuZXcgUjYuTmFtZShRKX1bJHtKfV1gfX13ai5WYWx1ZVNjb3BlTmFtZT1NQjt2YXIgdnA9UjYuX2BcXG5gO2NsYXNzIE5qIGV4dGVuZHMgWkJ7Y29uc3RydWN0b3IoJCl7c3VwZXIoJCk7dGhpcy5fdmFsdWVzPXt9LHRoaXMuX3Njb3BlPSQuc2NvcGUsdGhpcy5vcHRzPXsuLi4kLF9uOiQubGluZXM/dnA6UjYubmlsfX1nZXQoKXtyZXR1cm4gdGhpcy5fc2NvcGV9bmFtZSgkKXtyZXR1cm4gbmV3IE1CKCQsdGhpcy5fbmV3TmFtZSgkKSl9dmFsdWUoJCxRKXt2YXIgSjtpZihRLnJlZj09PXZvaWQgMCl0aHJvdyBFcnJvcihcIkNvZGVHZW46IHJlZiBtdXN0IGJlIHBhc3NlZCBpbiB2YWx1ZVwiKTtsZXQgWT10aGlzLnRvTmFtZSgkKSx7cHJlZml4Olh9PVksVz0oSj1RLmtleSkhPT1udWxsJiZKIT09dm9pZCAwP0o6US5yZWYsRz10aGlzLl92YWx1ZXNbWF07aWYoRyl7bGV0IHE9Ry5nZXQoVyk7aWYocSlyZXR1cm4gcX1lbHNlIEc9dGhpcy5fdmFsdWVzW1hdPW5ldyBNYXA7Ry5zZXQoVyxZKTtsZXQgVT10aGlzLl9zY29wZVtYXXx8KHRoaXMuX3Njb3BlW1hdPVtdKSxIPVUubGVuZ3RoO3JldHVybiBVW0hdPVEucmVmLFkuc2V0VmFsdWUoUSx7cHJvcGVydHk6WCxpdGVtSW5kZXg6SH0pLFl9Z2V0VmFsdWUoJCxRKXtsZXQgSj10aGlzLl92YWx1ZXNbJF07aWYoIUopcmV0dXJuO3JldHVybiBKLmdldChRKX1zY29wZVJlZnMoJCxRPXRoaXMuX3ZhbHVlcyl7cmV0dXJuIHRoaXMuX3JlZHVjZVZhbHVlcyhRLChKKT0+e2lmKEouc2NvcGVQYXRoPT09dm9pZCAwKXRocm93IEVycm9yKGBDb2RlR2VuOiBuYW1lIFwiJHtKfVwiIGhhcyBubyB2YWx1ZWApO3JldHVybiBSNi5fYCR7JH0ke0ouc2NvcGVQYXRofWB9KX1zY29wZUNvZGUoJD10aGlzLl92YWx1ZXMsUSxKKXtyZXR1cm4gdGhpcy5fcmVkdWNlVmFsdWVzKCQsKFkpPT57aWYoWS52YWx1ZT09PXZvaWQgMCl0aHJvdyBFcnJvcihgQ29kZUdlbjogbmFtZSBcIiR7WX1cIiBoYXMgbm8gdmFsdWVgKTtyZXR1cm4gWS52YWx1ZS5jb2RlfSxRLEopfV9yZWR1Y2VWYWx1ZXMoJCxRLEo9e30sWSl7bGV0IFg9UjYubmlsO2ZvcihsZXQgVyBpbiAkKXtsZXQgRz0kW1ddO2lmKCFHKWNvbnRpbnVlO2xldCBVPUpbV109SltXXXx8bmV3IE1hcDtHLmZvckVhY2goKEgpPT57aWYoVS5oYXMoSCkpcmV0dXJuO1Uuc2V0KEgsalcuU3RhcnRlZCk7bGV0IHE9UShIKTtpZihxKXtsZXQgVj10aGlzLm9wdHMuZXM1P3dqLnZhcktpbmRzLnZhcjp3ai52YXJLaW5kcy5jb25zdDtYPVI2Ll9gJHtYfSR7Vn0gJHtIfSA9ICR7cX07JHt0aGlzLm9wdHMuX259YH1lbHNlIGlmKHE9WT09PW51bGx8fFk9PT12b2lkIDA/dm9pZCAwOlkoSCkpWD1SNi5fYCR7WH0ke3F9JHt0aGlzLm9wdHMuX259YDtlbHNlIHRocm93IG5ldyB6aihIKTtVLnNldChILGpXLkNvbXBsZXRlZCl9KX1yZXR1cm4gWH19d2ouVmFsdWVTY29wZT1Oan0pO3ZhciBRJD1JKChQNik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7UDYub3I9UDYuYW5kPVA2Lm5vdD1QNi5Db2RlR2VuPVA2Lm9wZXJhdG9ycz1QNi52YXJLaW5kcz1QNi5WYWx1ZVNjb3BlTmFtZT1QNi5WYWx1ZVNjb3BlPVA2LlNjb3BlPVA2Lk5hbWU9UDYucmVnZXhwQ29kZT1QNi5zdHJpbmdpZnk9UDYuZ2V0UHJvcGVydHk9UDYubmlsPVA2LnN0ckNvbmNhdD1QNi5zdHI9UDYuXz12b2lkIDA7dmFyIEskPWJKKCksTjQ9TEIoKSxmMT1iSigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcIl9cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEuX319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJzdHJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEuc3RyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcInN0ckNvbmNhdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5zdHJDb25jYXR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwibmlsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYxLm5pbH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJnZXRQcm9wZXJ0eVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmMS5nZXRQcm9wZXJ0eX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJzdHJpbmdpZnlcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEuc3RyaW5naWZ5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcInJlZ2V4cENvZGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZjEucmVnZXhwQ29kZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUDYsXCJOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYxLk5hbWV9fSk7dmFyIGJXPUxCKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwiU2NvcGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYlcuU2NvcGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFA2LFwiVmFsdWVTY29wZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBiVy5WYWx1ZVNjb3BlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcIlZhbHVlU2NvcGVOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJXLlZhbHVlU2NvcGVOYW1lfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShQNixcInZhcktpbmRzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJXLnZhcktpbmRzfX0pO1A2Lm9wZXJhdG9ycz17R1Q6bmV3IEskLl9Db2RlKFwiPlwiKSxHVEU6bmV3IEskLl9Db2RlKFwiPj1cIiksTFQ6bmV3IEskLl9Db2RlKFwiPFwiKSxMVEU6bmV3IEskLl9Db2RlKFwiPD1cIiksRVE6bmV3IEskLl9Db2RlKFwiPT09XCIpLE5FUTpuZXcgSyQuX0NvZGUoXCIhPT1cIiksTk9UOm5ldyBLJC5fQ29kZShcIiFcIiksT1I6bmV3IEskLl9Db2RlKFwifHxcIiksQU5EOm5ldyBLJC5fQ29kZShcIiYmXCIpLEFERDpuZXcgSyQuX0NvZGUoXCIrXCIpfTtjbGFzcyB5MXtvcHRpbWl6ZU5vZGVzKCl7cmV0dXJuIHRoaXN9b3B0aW1pemVOYW1lcygkLFEpe3JldHVybiB0aGlzfX1jbGFzcyBEaiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQsUSxKKXtzdXBlcigpO3RoaXMudmFyS2luZD0kLHRoaXMubmFtZT1RLHRoaXMucmhzPUp9cmVuZGVyKHtlczU6JCxfbjpRfSl7bGV0IEo9JD9ONC52YXJLaW5kcy52YXI6dGhpcy52YXJLaW5kLFk9dGhpcy5yaHM9PT12b2lkIDA/XCJcIjpgID0gJHt0aGlzLnJoc31gO3JldHVybmAke0p9ICR7dGhpcy5uYW1lfSR7WX07YCtRfW9wdGltaXplTmFtZXMoJCxRKXtpZighJFt0aGlzLm5hbWUuc3RyXSlyZXR1cm47aWYodGhpcy5yaHMpdGhpcy5yaHM9TjkodGhpcy5yaHMsJCxRKTtyZXR1cm4gdGhpc31nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5yaHMgaW5zdGFuY2VvZiBLJC5fQ29kZU9yTmFtZT90aGlzLnJocy5uYW1lczp7fX19Y2xhc3MgSUIgZXh0ZW5kcyB5MXtjb25zdHJ1Y3RvcigkLFEsSil7c3VwZXIoKTt0aGlzLmxocz0kLHRoaXMucmhzPVEsdGhpcy5zaWRlRWZmZWN0cz1KfXJlbmRlcih7X246JH0pe3JldHVybmAke3RoaXMubGhzfSA9ICR7dGhpcy5yaHN9O2ArJH1vcHRpbWl6ZU5hbWVzKCQsUSl7aWYodGhpcy5saHMgaW5zdGFuY2VvZiBLJC5OYW1lJiYhJFt0aGlzLmxocy5zdHJdJiYhdGhpcy5zaWRlRWZmZWN0cylyZXR1cm47cmV0dXJuIHRoaXMucmhzPU45KHRoaXMucmhzLCQsUSksdGhpc31nZXQgbmFtZXMoKXtsZXQgJD10aGlzLmxocyBpbnN0YW5jZW9mIEskLk5hbWU/e306ey4uLnRoaXMubGhzLm5hbWVzfTtyZXR1cm4gRVcoJCx0aGlzLnJocyl9fWNsYXNzIEZqIGV4dGVuZHMgSUJ7Y29uc3RydWN0b3IoJCxRLEosWSl7c3VwZXIoJCxKLFkpO3RoaXMub3A9UX1yZW5kZXIoe19uOiR9KXtyZXR1cm5gJHt0aGlzLmxoc30gJHt0aGlzLm9wfT0gJHt0aGlzLnJoc307YCskfX1jbGFzcyBaaiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5sYWJlbD0kLHRoaXMubmFtZXM9e319cmVuZGVyKHtfbjokfSl7cmV0dXJuYCR7dGhpcy5sYWJlbH06YCskfX1jbGFzcyBNaiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5sYWJlbD0kLHRoaXMubmFtZXM9e319cmVuZGVyKHtfbjokfSl7cmV0dXJuYGJyZWFrJHt0aGlzLmxhYmVsP2AgJHt0aGlzLmxhYmVsfWA6XCJcIn07YCskfX1jbGFzcyBMaiBleHRlbmRzIHkxe2NvbnN0cnVjdG9yKCQpe3N1cGVyKCk7dGhpcy5lcnJvcj0kfXJlbmRlcih7X246JH0pe3JldHVybmB0aHJvdyAke3RoaXMuZXJyb3J9O2ArJH1nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5lcnJvci5uYW1lc319Y2xhc3MgamogZXh0ZW5kcyB5MXtjb25zdHJ1Y3RvcigkKXtzdXBlcigpO3RoaXMuY29kZT0kfXJlbmRlcih7X246JH0pe3JldHVybmAke3RoaXMuY29kZX07YCskfW9wdGltaXplTm9kZXMoKXtyZXR1cm5gJHt0aGlzLmNvZGV9YD90aGlzOnZvaWQgMH1vcHRpbWl6ZU5hbWVzKCQsUSl7cmV0dXJuIHRoaXMuY29kZT1OOSh0aGlzLmNvZGUsJCxRKSx0aGlzfWdldCBuYW1lcygpe3JldHVybiB0aGlzLmNvZGUgaW5zdGFuY2VvZiBLJC5fQ29kZU9yTmFtZT90aGlzLmNvZGUubmFtZXM6e319fWNsYXNzIF9XIGV4dGVuZHMgeTF7Y29uc3RydWN0b3IoJD1bXSl7c3VwZXIoKTt0aGlzLm5vZGVzPSR9cmVuZGVyKCQpe3JldHVybiB0aGlzLm5vZGVzLnJlZHVjZSgoUSxKKT0+UStKLnJlbmRlcigkKSxcIlwiKX1vcHRpbWl6ZU5vZGVzKCl7bGV0e25vZGVzOiR9PXRoaXMsUT0kLmxlbmd0aDt3aGlsZShRLS0pe2xldCBKPSRbUV0ub3B0aW1pemVOb2RlcygpO2lmKEFycmF5LmlzQXJyYXkoSikpJC5zcGxpY2UoUSwxLC4uLkopO2Vsc2UgaWYoSikkW1FdPUo7ZWxzZSAkLnNwbGljZShRLDEpfXJldHVybiAkLmxlbmd0aD4wP3RoaXM6dm9pZCAwfW9wdGltaXplTmFtZXMoJCxRKXtsZXR7bm9kZXM6Sn09dGhpcyxZPUoubGVuZ3RoO3doaWxlKFktLSl7bGV0IFg9SltZXTtpZihYLm9wdGltaXplTmFtZXMoJCxRKSljb250aW51ZTtmcCgkLFgubmFtZXMpLEouc3BsaWNlKFksMSl9cmV0dXJuIEoubGVuZ3RoPjA/dGhpczp2b2lkIDB9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMubm9kZXMucmVkdWNlKCgkLFEpPT5UMCgkLFEubmFtZXMpLHt9KX19Y2xhc3MgZzEgZXh0ZW5kcyBfV3tyZW5kZXIoJCl7cmV0dXJuXCJ7XCIrJC5fbitzdXBlci5yZW5kZXIoJCkrXCJ9XCIrJC5fbn19Y2xhc3MgQWogZXh0ZW5kcyBfV3t9Y2xhc3MgX0ogZXh0ZW5kcyBnMXt9X0oua2luZD1cImVsc2VcIjtjbGFzcyBRMSBleHRlbmRzIGcxe2NvbnN0cnVjdG9yKCQsUSl7c3VwZXIoUSk7dGhpcy5jb25kaXRpb249JH1yZW5kZXIoJCl7bGV0IFE9YGlmKCR7dGhpcy5jb25kaXRpb259KWArc3VwZXIucmVuZGVyKCQpO2lmKHRoaXMuZWxzZSlRKz1cImVsc2UgXCIrdGhpcy5lbHNlLnJlbmRlcigkKTtyZXR1cm4gUX1vcHRpbWl6ZU5vZGVzKCl7c3VwZXIub3B0aW1pemVOb2RlcygpO2xldCAkPXRoaXMuY29uZGl0aW9uO2lmKCQ9PT0hMClyZXR1cm4gdGhpcy5ub2RlcztsZXQgUT10aGlzLmVsc2U7aWYoUSl7bGV0IEo9US5vcHRpbWl6ZU5vZGVzKCk7UT10aGlzLmVsc2U9QXJyYXkuaXNBcnJheShKKT9uZXcgX0ooSik6Sn1pZihRKXtpZigkPT09ITEpcmV0dXJuIFEgaW5zdGFuY2VvZiBRMT9ROlEubm9kZXM7aWYodGhpcy5ub2Rlcy5sZW5ndGgpcmV0dXJuIHRoaXM7cmV0dXJuIG5ldyBRMShiaigkKSxRIGluc3RhbmNlb2YgUTE/W1FdOlEubm9kZXMpfWlmKCQ9PT0hMXx8IXRoaXMubm9kZXMubGVuZ3RoKXJldHVybjtyZXR1cm4gdGhpc31vcHRpbWl6ZU5hbWVzKCQsUSl7dmFyIEo7aWYodGhpcy5lbHNlPShKPXRoaXMuZWxzZSk9PT1udWxsfHxKPT09dm9pZCAwP3ZvaWQgMDpKLm9wdGltaXplTmFtZXMoJCxRKSwhKHN1cGVyLm9wdGltaXplTmFtZXMoJCxRKXx8dGhpcy5lbHNlKSlyZXR1cm47cmV0dXJuIHRoaXMuY29uZGl0aW9uPU45KHRoaXMuY29uZGl0aW9uLCQsUSksdGhpc31nZXQgbmFtZXMoKXtsZXQgJD1zdXBlci5uYW1lcztpZihFVygkLHRoaXMuY29uZGl0aW9uKSx0aGlzLmVsc2UpVDAoJCx0aGlzLmVsc2UubmFtZXMpO3JldHVybiAkfX1RMS5raW5kPVwiaWZcIjtjbGFzcyB6OSBleHRlbmRzIGcxe316OS5raW5kPVwiZm9yXCI7Y2xhc3MgSWogZXh0ZW5kcyB6OXtjb25zdHJ1Y3RvcigkKXtzdXBlcigpO3RoaXMuaXRlcmF0aW9uPSR9cmVuZGVyKCQpe3JldHVybmBmb3IoJHt0aGlzLml0ZXJhdGlvbn0pYCtzdXBlci5yZW5kZXIoJCl9b3B0aW1pemVOYW1lcygkLFEpe2lmKCFzdXBlci5vcHRpbWl6ZU5hbWVzKCQsUSkpcmV0dXJuO3JldHVybiB0aGlzLml0ZXJhdGlvbj1OOSh0aGlzLml0ZXJhdGlvbiwkLFEpLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIFQwKHN1cGVyLm5hbWVzLHRoaXMuaXRlcmF0aW9uLm5hbWVzKX19Y2xhc3MgUmogZXh0ZW5kcyB6OXtjb25zdHJ1Y3RvcigkLFEsSixZKXtzdXBlcigpO3RoaXMudmFyS2luZD0kLHRoaXMubmFtZT1RLHRoaXMuZnJvbT1KLHRoaXMudG89WX1yZW5kZXIoJCl7bGV0IFE9JC5lczU/TjQudmFyS2luZHMudmFyOnRoaXMudmFyS2luZCx7bmFtZTpKLGZyb206WSx0bzpYfT10aGlzO3JldHVybmBmb3IoJHtRfSAke0p9PSR7WX07ICR7Sn08JHtYfTsgJHtKfSsrKWArc3VwZXIucmVuZGVyKCQpfWdldCBuYW1lcygpe2xldCAkPUVXKHN1cGVyLm5hbWVzLHRoaXMuZnJvbSk7cmV0dXJuIEVXKCQsdGhpcy50byl9fWNsYXNzIGpCIGV4dGVuZHMgejl7Y29uc3RydWN0b3IoJCxRLEosWSl7c3VwZXIoKTt0aGlzLmxvb3A9JCx0aGlzLnZhcktpbmQ9USx0aGlzLm5hbWU9Six0aGlzLml0ZXJhYmxlPVl9cmVuZGVyKCQpe3JldHVybmBmb3IoJHt0aGlzLnZhcktpbmR9ICR7dGhpcy5uYW1lfSAke3RoaXMubG9vcH0gJHt0aGlzLml0ZXJhYmxlfSlgK3N1cGVyLnJlbmRlcigkKX1vcHRpbWl6ZU5hbWVzKCQsUSl7aWYoIXN1cGVyLm9wdGltaXplTmFtZXMoJCxRKSlyZXR1cm47cmV0dXJuIHRoaXMuaXRlcmFibGU9TjkodGhpcy5pdGVyYWJsZSwkLFEpLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIFQwKHN1cGVyLm5hbWVzLHRoaXMuaXRlcmFibGUubmFtZXMpfX1jbGFzcyBBVyBleHRlbmRzIGcxe2NvbnN0cnVjdG9yKCQsUSxKKXtzdXBlcigpO3RoaXMubmFtZT0kLHRoaXMuYXJncz1RLHRoaXMuYXN5bmM9Sn1yZW5kZXIoJCl7cmV0dXJuYCR7dGhpcy5hc3luYz9cImFzeW5jIFwiOlwiXCJ9ZnVuY3Rpb24gJHt0aGlzLm5hbWV9KCR7dGhpcy5hcmdzfSlgK3N1cGVyLnJlbmRlcigkKX19QVcua2luZD1cImZ1bmNcIjtjbGFzcyBJVyBleHRlbmRzIF9Xe3JlbmRlcigkKXtyZXR1cm5cInJldHVybiBcIitzdXBlci5yZW5kZXIoJCl9fUlXLmtpbmQ9XCJyZXR1cm5cIjtjbGFzcyBQaiBleHRlbmRzIGcxe3JlbmRlcigkKXtsZXQgUT1cInRyeVwiK3N1cGVyLnJlbmRlcigkKTtpZih0aGlzLmNhdGNoKVErPXRoaXMuY2F0Y2gucmVuZGVyKCQpO2lmKHRoaXMuZmluYWxseSlRKz10aGlzLmZpbmFsbHkucmVuZGVyKCQpO3JldHVybiBRfW9wdGltaXplTm9kZXMoKXt2YXIgJCxRO3JldHVybiBzdXBlci5vcHRpbWl6ZU5vZGVzKCksKCQ9dGhpcy5jYXRjaCk9PT1udWxsfHwkPT09dm9pZCAwfHwkLm9wdGltaXplTm9kZXMoKSwoUT10aGlzLmZpbmFsbHkpPT09bnVsbHx8UT09PXZvaWQgMHx8US5vcHRpbWl6ZU5vZGVzKCksdGhpc31vcHRpbWl6ZU5hbWVzKCQsUSl7dmFyIEosWTtyZXR1cm4gc3VwZXIub3B0aW1pemVOYW1lcygkLFEpLChKPXRoaXMuY2F0Y2gpPT09bnVsbHx8Sj09PXZvaWQgMHx8Si5vcHRpbWl6ZU5hbWVzKCQsUSksKFk9dGhpcy5maW5hbGx5KT09PW51bGx8fFk9PT12b2lkIDB8fFkub3B0aW1pemVOYW1lcygkLFEpLHRoaXN9Z2V0IG5hbWVzKCl7bGV0ICQ9c3VwZXIubmFtZXM7aWYodGhpcy5jYXRjaClUMCgkLHRoaXMuY2F0Y2gubmFtZXMpO2lmKHRoaXMuZmluYWxseSlUMCgkLHRoaXMuZmluYWxseS5uYW1lcyk7cmV0dXJuICR9fWNsYXNzIFJXIGV4dGVuZHMgZzF7Y29uc3RydWN0b3IoJCl7c3VwZXIoKTt0aGlzLmVycm9yPSR9cmVuZGVyKCQpe3JldHVybmBjYXRjaCgke3RoaXMuZXJyb3J9KWArc3VwZXIucmVuZGVyKCQpfX1SVy5raW5kPVwiY2F0Y2hcIjtjbGFzcyBQVyBleHRlbmRzIGcxe3JlbmRlcigkKXtyZXR1cm5cImZpbmFsbHlcIitzdXBlci5yZW5kZXIoJCl9fVBXLmtpbmQ9XCJmaW5hbGx5XCI7Y2xhc3MgRWp7Y29uc3RydWN0b3IoJCxRPXt9KXt0aGlzLl92YWx1ZXM9e30sdGhpcy5fYmxvY2tTdGFydHM9W10sdGhpcy5fY29uc3RhbnRzPXt9LHRoaXMub3B0cz17Li4uUSxfbjpRLmxpbmVzP2BcbmA6XCJcIn0sdGhpcy5fZXh0U2NvcGU9JCx0aGlzLl9zY29wZT1uZXcgTjQuU2NvcGUoe3BhcmVudDokfSksdGhpcy5fbm9kZXM9W25ldyBBal19dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fcm9vdC5yZW5kZXIodGhpcy5vcHRzKX1uYW1lKCQpe3JldHVybiB0aGlzLl9zY29wZS5uYW1lKCQpfXNjb3BlTmFtZSgkKXtyZXR1cm4gdGhpcy5fZXh0U2NvcGUubmFtZSgkKX1zY29wZVZhbHVlKCQsUSl7bGV0IEo9dGhpcy5fZXh0U2NvcGUudmFsdWUoJCxRKTtyZXR1cm4odGhpcy5fdmFsdWVzW0oucHJlZml4XXx8KHRoaXMuX3ZhbHVlc1tKLnByZWZpeF09bmV3IFNldCkpLmFkZChKKSxKfWdldFNjb3BlVmFsdWUoJCxRKXtyZXR1cm4gdGhpcy5fZXh0U2NvcGUuZ2V0VmFsdWUoJCxRKX1zY29wZVJlZnMoJCl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLnNjb3BlUmVmcygkLHRoaXMuX3ZhbHVlcyl9c2NvcGVDb2RlKCl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLnNjb3BlQ29kZSh0aGlzLl92YWx1ZXMpfV9kZWYoJCxRLEosWSl7bGV0IFg9dGhpcy5fc2NvcGUudG9OYW1lKFEpO2lmKEohPT12b2lkIDAmJlkpdGhpcy5fY29uc3RhbnRzW1guc3RyXT1KO3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgRGooJCxYLEopKSxYfWNvbnN0KCQsUSxKKXtyZXR1cm4gdGhpcy5fZGVmKE40LnZhcktpbmRzLmNvbnN0LCQsUSxKKX1sZXQoJCxRLEope3JldHVybiB0aGlzLl9kZWYoTjQudmFyS2luZHMubGV0LCQsUSxKKX12YXIoJCxRLEope3JldHVybiB0aGlzLl9kZWYoTjQudmFyS2luZHMudmFyLCQsUSxKKX1hc3NpZ24oJCxRLEope3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgSUIoJCxRLEopKX1hZGQoJCxRKXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IEZqKCQsUDYub3BlcmF0b3JzLkFERCxRKSl9Y29kZSgkKXtpZih0eXBlb2YgJD09XCJmdW5jdGlvblwiKSQoKTtlbHNlIGlmKCQhPT1LJC5uaWwpdGhpcy5fbGVhZk5vZGUobmV3IGpqKCQpKTtyZXR1cm4gdGhpc31vYmplY3QoLi4uJCl7bGV0IFE9W1wie1wiXTtmb3IobGV0W0osWV1vZiAkKXtpZihRLmxlbmd0aD4xKVEucHVzaChcIixcIik7aWYoUS5wdXNoKEopLEohPT1ZfHx0aGlzLm9wdHMuZXM1KVEucHVzaChcIjpcIiksKDAsSyQuYWRkQ29kZUFyZykoUSxZKX1yZXR1cm4gUS5wdXNoKFwifVwiKSxuZXcgSyQuX0NvZGUoUSl9aWYoJCxRLEope2lmKHRoaXMuX2Jsb2NrTm9kZShuZXcgUTEoJCkpLFEmJkopdGhpcy5jb2RlKFEpLmVsc2UoKS5jb2RlKEopLmVuZElmKCk7ZWxzZSBpZihRKXRoaXMuY29kZShRKS5lbmRJZigpO2Vsc2UgaWYoSil0aHJvdyBFcnJvcignQ29kZUdlbjogXCJlbHNlXCIgYm9keSB3aXRob3V0IFwidGhlblwiIGJvZHknKTtyZXR1cm4gdGhpc31lbHNlSWYoJCl7cmV0dXJuIHRoaXMuX2Vsc2VOb2RlKG5ldyBRMSgkKSl9ZWxzZSgpe3JldHVybiB0aGlzLl9lbHNlTm9kZShuZXcgX0opfWVuZElmKCl7cmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShRMSxfSil9X2ZvcigkLFEpe2lmKHRoaXMuX2Jsb2NrTm9kZSgkKSxRKXRoaXMuY29kZShRKS5lbmRGb3IoKTtyZXR1cm4gdGhpc31mb3IoJCxRKXtyZXR1cm4gdGhpcy5fZm9yKG5ldyBJaigkKSxRKX1mb3JSYW5nZSgkLFEsSixZLFg9dGhpcy5vcHRzLmVzNT9ONC52YXJLaW5kcy52YXI6TjQudmFyS2luZHMubGV0KXtsZXQgVz10aGlzLl9zY29wZS50b05hbWUoJCk7cmV0dXJuIHRoaXMuX2ZvcihuZXcgUmooWCxXLFEsSiksKCk9PlkoVykpfWZvck9mKCQsUSxKLFk9TjQudmFyS2luZHMuY29uc3Qpe2xldCBYPXRoaXMuX3Njb3BlLnRvTmFtZSgkKTtpZih0aGlzLm9wdHMuZXM1KXtsZXQgVz1RIGluc3RhbmNlb2YgSyQuTmFtZT9ROnRoaXMudmFyKFwiX2FyclwiLFEpO3JldHVybiB0aGlzLmZvclJhbmdlKFwiX2lcIiwwLEskLl9gJHtXfS5sZW5ndGhgLChHKT0+e3RoaXMudmFyKFgsSyQuX2Ake1d9WyR7R31dYCksSihYKX0pfXJldHVybiB0aGlzLl9mb3IobmV3IGpCKFwib2ZcIixZLFgsUSksKCk9PkooWCkpfWZvckluKCQsUSxKLFk9dGhpcy5vcHRzLmVzNT9ONC52YXJLaW5kcy52YXI6TjQudmFyS2luZHMuY29uc3Qpe2lmKHRoaXMub3B0cy5vd25Qcm9wZXJ0aWVzKXJldHVybiB0aGlzLmZvck9mKCQsSyQuX2BPYmplY3Qua2V5cygke1F9KWAsSik7bGV0IFg9dGhpcy5fc2NvcGUudG9OYW1lKCQpO3JldHVybiB0aGlzLl9mb3IobmV3IGpCKFwiaW5cIixZLFgsUSksKCk9PkooWCkpfWVuZEZvcigpe3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoejkpfWxhYmVsKCQpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgWmooJCkpfWJyZWFrKCQpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgTWooJCkpfXJldHVybigkKXtsZXQgUT1uZXcgSVc7aWYodGhpcy5fYmxvY2tOb2RlKFEpLHRoaXMuY29kZSgkKSxRLm5vZGVzLmxlbmd0aCE9PTEpdGhyb3cgRXJyb3IoJ0NvZGVHZW46IFwicmV0dXJuXCIgc2hvdWxkIGhhdmUgb25lIG5vZGUnKTtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKElXKX10cnkoJCxRLEope2lmKCFRJiYhSil0aHJvdyBFcnJvcignQ29kZUdlbjogXCJ0cnlcIiB3aXRob3V0IFwiY2F0Y2hcIiBhbmQgXCJmaW5hbGx5XCInKTtsZXQgWT1uZXcgUGo7aWYodGhpcy5fYmxvY2tOb2RlKFkpLHRoaXMuY29kZSgkKSxRKXtsZXQgWD10aGlzLm5hbWUoXCJlXCIpO3RoaXMuX2N1cnJOb2RlPVkuY2F0Y2g9bmV3IFJXKFgpLFEoWCl9aWYoSil0aGlzLl9jdXJyTm9kZT1ZLmZpbmFsbHk9bmV3IFBXLHRoaXMuY29kZShKKTtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKFJXLFBXKX10aHJvdygkKXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IExqKCQpKX1ibG9jaygkLFEpe2lmKHRoaXMuX2Jsb2NrU3RhcnRzLnB1c2godGhpcy5fbm9kZXMubGVuZ3RoKSwkKXRoaXMuY29kZSgkKS5lbmRCbG9jayhRKTtyZXR1cm4gdGhpc31lbmRCbG9jaygkKXtsZXQgUT10aGlzLl9ibG9ja1N0YXJ0cy5wb3AoKTtpZihRPT09dm9pZCAwKXRocm93IEVycm9yKFwiQ29kZUdlbjogbm90IGluIHNlbGYtYmFsYW5jaW5nIGJsb2NrXCIpO2xldCBKPXRoaXMuX25vZGVzLmxlbmd0aC1RO2lmKEo8MHx8JCE9PXZvaWQgMCYmSiE9PSQpdGhyb3cgRXJyb3IoYENvZGVHZW46IHdyb25nIG51bWJlciBvZiBub2RlczogJHtKfSB2cyAkeyR9IGV4cGVjdGVkYCk7cmV0dXJuIHRoaXMuX25vZGVzLmxlbmd0aD1RLHRoaXN9ZnVuYygkLFE9SyQubmlsLEosWSl7aWYodGhpcy5fYmxvY2tOb2RlKG5ldyBBVygkLFEsSikpLFkpdGhpcy5jb2RlKFkpLmVuZEZ1bmMoKTtyZXR1cm4gdGhpc31lbmRGdW5jKCl7cmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShBVyl9b3B0aW1pemUoJD0xKXt3aGlsZSgkLS0gPjApdGhpcy5fcm9vdC5vcHRpbWl6ZU5vZGVzKCksdGhpcy5fcm9vdC5vcHRpbWl6ZU5hbWVzKHRoaXMuX3Jvb3QubmFtZXMsdGhpcy5fY29uc3RhbnRzKX1fbGVhZk5vZGUoJCl7cmV0dXJuIHRoaXMuX2N1cnJOb2RlLm5vZGVzLnB1c2goJCksdGhpc31fYmxvY2tOb2RlKCQpe3RoaXMuX2N1cnJOb2RlLm5vZGVzLnB1c2goJCksdGhpcy5fbm9kZXMucHVzaCgkKX1fZW5kQmxvY2tOb2RlKCQsUSl7bGV0IEo9dGhpcy5fY3Vyck5vZGU7aWYoSiBpbnN0YW5jZW9mICR8fFEmJkogaW5zdGFuY2VvZiBRKXJldHVybiB0aGlzLl9ub2Rlcy5wb3AoKSx0aGlzO3Rocm93IEVycm9yKGBDb2RlR2VuOiBub3QgaW4gYmxvY2sgXCIke1E/YCR7JC5raW5kfS8ke1Eua2luZH1gOiQua2luZH1cImApfV9lbHNlTm9kZSgkKXtsZXQgUT10aGlzLl9jdXJyTm9kZTtpZighKFEgaW5zdGFuY2VvZiBRMSkpdGhyb3cgRXJyb3IoJ0NvZGVHZW46IFwiZWxzZVwiIHdpdGhvdXQgXCJpZlwiJyk7cmV0dXJuIHRoaXMuX2N1cnJOb2RlPVEuZWxzZT0kLHRoaXN9Z2V0IF9yb290KCl7cmV0dXJuIHRoaXMuX25vZGVzWzBdfWdldCBfY3Vyck5vZGUoKXtsZXQgJD10aGlzLl9ub2RlcztyZXR1cm4gJFskLmxlbmd0aC0xXX1zZXQgX2N1cnJOb2RlKCQpe2xldCBRPXRoaXMuX25vZGVzO1FbUS5sZW5ndGgtMV09JH19UDYuQ29kZUdlbj1FajtmdW5jdGlvbiBUMCgkLFEpe2ZvcihsZXQgSiBpbiBRKSRbSl09KCRbSl18fDApKyhRW0pdfHwwKTtyZXR1cm4gJH1mdW5jdGlvbiBFVygkLFEpe3JldHVybiBRIGluc3RhbmNlb2YgSyQuX0NvZGVPck5hbWU/VDAoJCxRLm5hbWVzKTokfWZ1bmN0aW9uIE45KCQsUSxKKXtpZigkIGluc3RhbmNlb2YgSyQuTmFtZSlyZXR1cm4gWSgkKTtpZighWCgkKSlyZXR1cm4gJDtyZXR1cm4gbmV3IEskLl9Db2RlKCQuX2l0ZW1zLnJlZHVjZSgoVyxHKT0+e2lmKEcgaW5zdGFuY2VvZiBLJC5OYW1lKUc9WShHKTtpZihHIGluc3RhbmNlb2YgSyQuX0NvZGUpVy5wdXNoKC4uLkcuX2l0ZW1zKTtlbHNlIFcucHVzaChHKTtyZXR1cm4gV30sW10pKTtmdW5jdGlvbiBZKFcpe2xldCBHPUpbVy5zdHJdO2lmKEc9PT12b2lkIDB8fFFbVy5zdHJdIT09MSlyZXR1cm4gVztyZXR1cm4gZGVsZXRlIFFbVy5zdHJdLEd9ZnVuY3Rpb24gWChXKXtyZXR1cm4gVyBpbnN0YW5jZW9mIEskLl9Db2RlJiZXLl9pdGVtcy5zb21lKChHKT0+RyBpbnN0YW5jZW9mIEskLk5hbWUmJlFbRy5zdHJdPT09MSYmSltHLnN0cl0hPT12b2lkIDApfX1mdW5jdGlvbiBmcCgkLFEpe2ZvcihsZXQgSiBpbiBRKSRbSl09KCRbSl18fDApLShRW0pdfHwwKX1mdW5jdGlvbiBiaigkKXtyZXR1cm4gdHlwZW9mICQ9PVwiYm9vbGVhblwifHx0eXBlb2YgJD09XCJudW1iZXJcInx8JD09PW51bGw/ISQ6SyQuX2AhJHtBQigkKX1gfVA2Lm5vdD1iajt2YXIgeXA9X2ooUDYub3BlcmF0b3JzLkFORCk7ZnVuY3Rpb24gZ3AoLi4uJCl7cmV0dXJuICQucmVkdWNlKHlwKX1QNi5hbmQ9Z3A7dmFyIGhwPV9qKFA2Lm9wZXJhdG9ycy5PUik7ZnVuY3Rpb24gdXAoLi4uJCl7cmV0dXJuICQucmVkdWNlKGhwKX1QNi5vcj11cDtmdW5jdGlvbiBfaigkKXtyZXR1cm4oUSxKKT0+UT09PUskLm5pbD9KOko9PT1LJC5uaWw/UTpLJC5fYCR7QUIoUSl9ICR7JH0gJHtBQihKKX1gfWZ1bmN0aW9uIEFCKCQpe3JldHVybiAkIGluc3RhbmNlb2YgSyQuTmFtZT8kOkskLl9gKCR7JH0pYH19KTt2YXIgcSQ9SSgoZ2opPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGdqLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2dqLmNoZWNrU3RyaWN0TW9kZT1nai5nZXRFcnJvclBhdGg9Z2ouVHlwZT1nai51c2VGdW5jPWdqLnNldEV2YWx1YXRlZD1nai5ldmFsdWF0ZWRQcm9wc1RvTmFtZT1nai5tZXJnZUV2YWx1YXRlZD1nai5lYWNoSXRlbT1nai51bmVzY2FwZUpzb25Qb2ludGVyPWdqLmVzY2FwZUpzb25Qb2ludGVyPWdqLmVzY2FwZUZyYWdtZW50PWdqLnVuZXNjYXBlRnJhZ21lbnQ9Z2ouc2NoZW1hUmVmT3JWYWw9Z2ouc2NoZW1hSGFzUnVsZXNCdXRSZWY9Z2ouc2NoZW1hSGFzUnVsZXM9Z2ouY2hlY2tVbmtub3duUnVsZXM9Z2ouYWx3YXlzVmFsaWRTY2hlbWE9Z2oudG9IYXNoPXZvaWQgMDt2YXIgUCQ9USQoKSxwcD1iSigpO2Z1bmN0aW9uIGRwKCQpe2xldCBRPXt9O2ZvcihsZXQgSiBvZiAkKVFbSl09ITA7cmV0dXJuIFF9Z2oudG9IYXNoPWRwO2Z1bmN0aW9uIGlwKCQsUSl7aWYodHlwZW9mIFE9PVwiYm9vbGVhblwiKXJldHVybiBRO2lmKE9iamVjdC5rZXlzKFEpLmxlbmd0aD09PTApcmV0dXJuITA7cmV0dXJuIENqKCQsUSksIVRqKFEsJC5zZWxmLlJVTEVTLmFsbCl9Z2ouYWx3YXlzVmFsaWRTY2hlbWE9aXA7ZnVuY3Rpb24gQ2ooJCxRPSQuc2NoZW1hKXtsZXR7b3B0czpKLHNlbGY6WX09JDtpZighSi5zdHJpY3RTY2hlbWEpcmV0dXJuO2lmKHR5cGVvZiBRPT09XCJib29sZWFuXCIpcmV0dXJuO2xldCBYPVkuUlVMRVMua2V5d29yZHM7Zm9yKGxldCBXIGluIFEpaWYoIVhbV10peWooJCxgdW5rbm93biBrZXl3b3JkOiBcIiR7V31cImApfWdqLmNoZWNrVW5rbm93blJ1bGVzPUNqO2Z1bmN0aW9uIFRqKCQsUSl7aWYodHlwZW9mICQ9PVwiYm9vbGVhblwiKXJldHVybiEkO2ZvcihsZXQgSiBpbiAkKWlmKFFbSl0pcmV0dXJuITA7cmV0dXJuITF9Z2ouc2NoZW1hSGFzUnVsZXM9VGo7ZnVuY3Rpb24gbnAoJCxRKXtpZih0eXBlb2YgJD09XCJib29sZWFuXCIpcmV0dXJuISQ7Zm9yKGxldCBKIGluICQpaWYoSiE9PVwiJHJlZlwiJiZRLmFsbFtKXSlyZXR1cm4hMDtyZXR1cm4hMX1nai5zY2hlbWFIYXNSdWxlc0J1dFJlZj1ucDtmdW5jdGlvbiBycCh7dG9wU2NoZW1hUmVmOiQsc2NoZW1hUGF0aDpRfSxKLFksWCl7aWYoIVgpe2lmKHR5cGVvZiBKPT1cIm51bWJlclwifHx0eXBlb2YgSj09XCJib29sZWFuXCIpcmV0dXJuIEo7aWYodHlwZW9mIEo9PVwic3RyaW5nXCIpcmV0dXJuIFAkLl9gJHtKfWB9cmV0dXJuIFAkLl9gJHskfSR7UX0keygwLFAkLmdldFByb3BlcnR5KShZKX1gfWdqLnNjaGVtYVJlZk9yVmFsPXJwO2Z1bmN0aW9uIG9wKCQpe3JldHVybiB4aihkZWNvZGVVUklDb21wb25lbnQoJCkpfWdqLnVuZXNjYXBlRnJhZ21lbnQ9b3A7ZnVuY3Rpb24gdHAoJCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChQQigkKSl9Z2ouZXNjYXBlRnJhZ21lbnQ9dHA7ZnVuY3Rpb24gUEIoJCl7aWYodHlwZW9mICQ9PVwibnVtYmVyXCIpcmV0dXJuYCR7JH1gO3JldHVybiAkLnJlcGxhY2UoL34vZyxcIn4wXCIpLnJlcGxhY2UoL1xcLy9nLFwifjFcIil9Z2ouZXNjYXBlSnNvblBvaW50ZXI9UEI7ZnVuY3Rpb24geGooJCl7cmV0dXJuICQucmVwbGFjZSgvfjEvZyxcIi9cIikucmVwbGFjZSgvfjAvZyxcIn5cIil9Z2oudW5lc2NhcGVKc29uUG9pbnRlcj14ajtmdW5jdGlvbiBhcCgkLFEpe2lmKEFycmF5LmlzQXJyYXkoJCkpZm9yKGxldCBKIG9mICQpUShKKTtlbHNlIFEoJCl9Z2ouZWFjaEl0ZW09YXA7ZnVuY3Rpb24ga2ooe21lcmdlTmFtZXM6JCxtZXJnZVRvTmFtZTpRLG1lcmdlVmFsdWVzOkoscmVzdWx0VG9OYW1lOll9KXtyZXR1cm4oWCxXLEcsVSk9PntsZXQgSD1HPT09dm9pZCAwP1c6RyBpbnN0YW5jZW9mIFAkLk5hbWU/KFcgaW5zdGFuY2VvZiBQJC5OYW1lPyQoWCxXLEcpOlEoWCxXLEcpLEcpOlcgaW5zdGFuY2VvZiBQJC5OYW1lPyhRKFgsRyxXKSxXKTpKKFcsRyk7cmV0dXJuIFU9PT1QJC5OYW1lJiYhKEggaW5zdGFuY2VvZiBQJC5OYW1lKT9ZKFgsSCk6SH19Z2oubWVyZ2VFdmFsdWF0ZWQ9e3Byb3BzOmtqKHttZXJnZU5hbWVzOigkLFEsSik9PiQuaWYoUCQuX2Ake0p9ICE9PSB0cnVlICYmICR7UX0gIT09IHVuZGVmaW5lZGAsKCk9PnskLmlmKFAkLl9gJHtRfSA9PT0gdHJ1ZWAsKCk9PiQuYXNzaWduKEosITApLCgpPT4kLmFzc2lnbihKLFAkLl9gJHtKfSB8fCB7fWApLmNvZGUoUCQuX2BPYmplY3QuYXNzaWduKCR7Sn0sICR7UX0pYCkpfSksbWVyZ2VUb05hbWU6KCQsUSxKKT0+JC5pZihQJC5fYCR7Sn0gIT09IHRydWVgLCgpPT57aWYoUT09PSEwKSQuYXNzaWduKEosITApO2Vsc2UgJC5hc3NpZ24oSixQJC5fYCR7Sn0gfHwge31gKSxFQigkLEosUSl9KSxtZXJnZVZhbHVlczooJCxRKT0+JD09PSEwPyEwOnsuLi4kLC4uLlF9LHJlc3VsdFRvTmFtZTpman0pLGl0ZW1zOmtqKHttZXJnZU5hbWVzOigkLFEsSik9PiQuaWYoUCQuX2Ake0p9ICE9PSB0cnVlICYmICR7UX0gIT09IHVuZGVmaW5lZGAsKCk9PiQuYXNzaWduKEosUCQuX2Ake1F9ID09PSB0cnVlID8gdHJ1ZSA6ICR7Sn0gPiAke1F9ID8gJHtKfSA6ICR7UX1gKSksbWVyZ2VUb05hbWU6KCQsUSxKKT0+JC5pZihQJC5fYCR7Sn0gIT09IHRydWVgLCgpPT4kLmFzc2lnbihKLFE9PT0hMD8hMDpQJC5fYCR7Sn0gPiAke1F9ID8gJHtKfSA6ICR7UX1gKSksbWVyZ2VWYWx1ZXM6KCQsUSk9PiQ9PT0hMD8hMDpNYXRoLm1heCgkLFEpLHJlc3VsdFRvTmFtZTooJCxRKT0+JC52YXIoXCJpdGVtc1wiLFEpfSl9O2Z1bmN0aW9uIGZqKCQsUSl7aWYoUT09PSEwKXJldHVybiAkLnZhcihcInByb3BzXCIsITApO2xldCBKPSQudmFyKFwicHJvcHNcIixQJC5fYHt9YCk7aWYoUSE9PXZvaWQgMClFQigkLEosUSk7cmV0dXJuIEp9Z2ouZXZhbHVhdGVkUHJvcHNUb05hbWU9Zmo7ZnVuY3Rpb24gRUIoJCxRLEope09iamVjdC5rZXlzKEopLmZvckVhY2goKFkpPT4kLmFzc2lnbihQJC5fYCR7UX0keygwLFAkLmdldFByb3BlcnR5KShZKX1gLCEwKSl9Z2ouc2V0RXZhbHVhdGVkPUVCO3ZhciB2aj17fTtmdW5jdGlvbiBzcCgkLFEpe3JldHVybiAkLnNjb3BlVmFsdWUoXCJmdW5jXCIse3JlZjpRLGNvZGU6dmpbUS5jb2RlXXx8KHZqW1EuY29kZV09bmV3IHBwLl9Db2RlKFEuY29kZSkpfSl9Z2oudXNlRnVuYz1zcDt2YXIgUkI7KGZ1bmN0aW9uKCQpeyRbJC5OdW09MF09XCJOdW1cIiwkWyQuU3RyPTFdPVwiU3RyXCJ9KShSQnx8KGdqLlR5cGU9UkI9e30pKTtmdW5jdGlvbiBlcCgkLFEsSil7aWYoJCBpbnN0YW5jZW9mIFAkLk5hbWUpe2xldCBZPVE9PT1SQi5OdW07cmV0dXJuIEo/WT9QJC5fYFwiW1wiICsgJHskfSArIFwiXVwiYDpQJC5fYFwiWydcIiArICR7JH0gKyBcIiddXCJgOlk/UCQuX2BcIi9cIiArICR7JH1gOlAkLl9gXCIvXCIgKyAkeyR9LnJlcGxhY2UoL34vZywgXCJ+MFwiKS5yZXBsYWNlKC9cXFxcLy9nLCBcIn4xXCIpYH1yZXR1cm4gSj8oMCxQJC5nZXRQcm9wZXJ0eSkoJCkudG9TdHJpbmcoKTpcIi9cIitQQigkKX1nai5nZXRFcnJvclBhdGg9ZXA7ZnVuY3Rpb24geWooJCxRLEo9JC5vcHRzLnN0cmljdFNjaGVtYSl7aWYoIUopcmV0dXJuO2lmKFE9YHN0cmljdCBtb2RlOiAke1F9YCxKPT09ITApdGhyb3cgRXJyb3IoUSk7JC5zZWxmLmxvZ2dlci53YXJuKFEpfWdqLmNoZWNrU3RyaWN0TW9kZT15an0pO3ZhciBKMT1JKCh1aik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodWosXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIEs2PVEkKCksRGQ9e2RhdGE6bmV3IEs2Lk5hbWUoXCJkYXRhXCIpLHZhbEN4dDpuZXcgSzYuTmFtZShcInZhbEN4dFwiKSxpbnN0YW5jZVBhdGg6bmV3IEs2Lk5hbWUoXCJpbnN0YW5jZVBhdGhcIikscGFyZW50RGF0YTpuZXcgSzYuTmFtZShcInBhcmVudERhdGFcIikscGFyZW50RGF0YVByb3BlcnR5Om5ldyBLNi5OYW1lKFwicGFyZW50RGF0YVByb3BlcnR5XCIpLHJvb3REYXRhOm5ldyBLNi5OYW1lKFwicm9vdERhdGFcIiksZHluYW1pY0FuY2hvcnM6bmV3IEs2Lk5hbWUoXCJkeW5hbWljQW5jaG9yc1wiKSx2RXJyb3JzOm5ldyBLNi5OYW1lKFwidkVycm9yc1wiKSxlcnJvcnM6bmV3IEs2Lk5hbWUoXCJlcnJvcnNcIiksdGhpczpuZXcgSzYuTmFtZShcInRoaXNcIiksc2VsZjpuZXcgSzYuTmFtZShcInNlbGZcIiksc2NvcGU6bmV3IEs2Lk5hbWUoXCJzY29wZVwiKSxqc29uOm5ldyBLNi5OYW1lKFwianNvblwiKSxqc29uUG9zOm5ldyBLNi5OYW1lKFwianNvblBvc1wiKSxqc29uTGVuOm5ldyBLNi5OYW1lKFwianNvbkxlblwiKSxqc29uUGFydDpuZXcgSzYuTmFtZShcImpzb25QYXJ0XCIpfTt1ai5kZWZhdWx0PURkfSk7dmFyIFNKPUkoKHBqKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShwaixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtwai5leHRlbmRFcnJvcnM9cGoucmVzZXRFcnJvcnNDb3VudD1wai5yZXBvcnRFeHRyYUVycm9yPXBqLnJlcG9ydEVycm9yPXBqLmtleXdvcmQkRGF0YUVycm9yPXBqLmtleXdvcmRFcnJvcj12b2lkIDA7dmFyIFYkPVEkKCksa1c9cSQoKSx3Nj1KMSgpO3BqLmtleXdvcmRFcnJvcj17bWVzc2FnZTooe2tleXdvcmQ6JH0pPT5WJC5zdHJgbXVzdCBwYXNzIFwiJHskfVwiIGtleXdvcmQgdmFsaWRhdGlvbmB9O3BqLmtleXdvcmQkRGF0YUVycm9yPXttZXNzYWdlOih7a2V5d29yZDokLHNjaGVtYVR5cGU6UX0pPT5RP1YkLnN0cmBcIiR7JH1cIiBrZXl3b3JkIG11c3QgYmUgJHtRfSAoJGRhdGEpYDpWJC5zdHJgXCIkeyR9XCIga2V5d29yZCBpcyBpbnZhbGlkICgkZGF0YSlgfTtmdW5jdGlvbiBaZCgkLFE9cGoua2V5d29yZEVycm9yLEosWSl7bGV0e2l0Olh9PSQse2dlbjpXLGNvbXBvc2l0ZVJ1bGU6RyxhbGxFcnJvcnM6VX09WCxIPWNqKCQsUSxKKTtpZihZIT09bnVsbCYmWSE9PXZvaWQgMD9ZOkd8fFUpbWooVyxIKTtlbHNlIGxqKFgsViQuX2BbJHtIfV1gKX1wai5yZXBvcnRFcnJvcj1aZDtmdW5jdGlvbiBNZCgkLFE9cGoua2V5d29yZEVycm9yLEope2xldHtpdDpZfT0kLHtnZW46WCxjb21wb3NpdGVSdWxlOlcsYWxsRXJyb3JzOkd9PVksVT1jaigkLFEsSik7aWYobWooWCxVKSwhKFd8fEcpKWxqKFksdzYuZGVmYXVsdC52RXJyb3JzKX1wai5yZXBvcnRFeHRyYUVycm9yPU1kO2Z1bmN0aW9uIExkKCQsUSl7JC5hc3NpZ24odzYuZGVmYXVsdC5lcnJvcnMsUSksJC5pZihWJC5fYCR7dzYuZGVmYXVsdC52RXJyb3JzfSAhPT0gbnVsbGAsKCk9PiQuaWYoUSwoKT0+JC5hc3NpZ24oViQuX2Ake3c2LmRlZmF1bHQudkVycm9yc30ubGVuZ3RoYCxRKSwoKT0+JC5hc3NpZ24odzYuZGVmYXVsdC52RXJyb3JzLG51bGwpKSl9cGoucmVzZXRFcnJvcnNDb3VudD1MZDtmdW5jdGlvbiBqZCh7Z2VuOiQsa2V5d29yZDpRLHNjaGVtYVZhbHVlOkosZGF0YTpZLGVycnNDb3VudDpYLGl0Old9KXtpZihYPT09dm9pZCAwKXRocm93IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpO2xldCBHPSQubmFtZShcImVyclwiKTskLmZvclJhbmdlKFwiaVwiLFgsdzYuZGVmYXVsdC5lcnJvcnMsKFUpPT57aWYoJC5jb25zdChHLFYkLl9gJHt3Ni5kZWZhdWx0LnZFcnJvcnN9WyR7VX1dYCksJC5pZihWJC5fYCR7R30uaW5zdGFuY2VQYXRoID09PSB1bmRlZmluZWRgLCgpPT4kLmFzc2lnbihWJC5fYCR7R30uaW5zdGFuY2VQYXRoYCwoMCxWJC5zdHJDb25jYXQpKHc2LmRlZmF1bHQuaW5zdGFuY2VQYXRoLFcuZXJyb3JQYXRoKSkpLCQuYXNzaWduKFYkLl9gJHtHfS5zY2hlbWFQYXRoYCxWJC5zdHJgJHtXLmVyclNjaGVtYVBhdGh9LyR7UX1gKSxXLm9wdHMudmVyYm9zZSkkLmFzc2lnbihWJC5fYCR7R30uc2NoZW1hYCxKKSwkLmFzc2lnbihWJC5fYCR7R30uZGF0YWAsWSl9KX1wai5leHRlbmRFcnJvcnM9amQ7ZnVuY3Rpb24gbWooJCxRKXtsZXQgSj0kLmNvbnN0KFwiZXJyXCIsUSk7JC5pZihWJC5fYCR7dzYuZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbGAsKCk9PiQuYXNzaWduKHc2LmRlZmF1bHQudkVycm9ycyxWJC5fYFske0p9XWApLFYkLl9gJHt3Ni5kZWZhdWx0LnZFcnJvcnN9LnB1c2goJHtKfSlgKSwkLmNvZGUoViQuX2Ake3c2LmRlZmF1bHQuZXJyb3JzfSsrYCl9ZnVuY3Rpb24gbGooJCxRKXtsZXR7Z2VuOkosdmFsaWRhdGVOYW1lOlksc2NoZW1hRW52Olh9PSQ7aWYoWC4kYXN5bmMpSi50aHJvdyhWJC5fYG5ldyAkeyQuVmFsaWRhdGlvbkVycm9yfSgke1F9KWApO2Vsc2UgSi5hc3NpZ24oViQuX2Ake1l9LmVycm9yc2AsUSksSi5yZXR1cm4oITEpfXZhciB4MD17a2V5d29yZDpuZXcgViQuTmFtZShcImtleXdvcmRcIiksc2NoZW1hUGF0aDpuZXcgViQuTmFtZShcInNjaGVtYVBhdGhcIikscGFyYW1zOm5ldyBWJC5OYW1lKFwicGFyYW1zXCIpLHByb3BlcnR5TmFtZTpuZXcgViQuTmFtZShcInByb3BlcnR5TmFtZVwiKSxtZXNzYWdlOm5ldyBWJC5OYW1lKFwibWVzc2FnZVwiKSxzY2hlbWE6bmV3IFYkLk5hbWUoXCJzY2hlbWFcIikscGFyZW50U2NoZW1hOm5ldyBWJC5OYW1lKFwicGFyZW50U2NoZW1hXCIpfTtmdW5jdGlvbiBjaigkLFEsSil7bGV0e2NyZWF0ZUVycm9yczpZfT0kLml0O2lmKFk9PT0hMSlyZXR1cm4gViQuX2B7fWA7cmV0dXJuIEFkKCQsUSxKKX1mdW5jdGlvbiBBZCgkLFEsSj17fSl7bGV0e2dlbjpZLGl0Olh9PSQsVz1bSWQoWCxKKSxSZCgkLEopXTtyZXR1cm4gUGQoJCxRLFcpLFkub2JqZWN0KC4uLlcpfWZ1bmN0aW9uIElkKHtlcnJvclBhdGg6JH0se2luc3RhbmNlUGF0aDpRfSl7bGV0IEo9UT9WJC5zdHJgJHskfSR7KDAsa1cuZ2V0RXJyb3JQYXRoKShRLGtXLlR5cGUuU3RyKX1gOiQ7cmV0dXJuW3c2LmRlZmF1bHQuaW5zdGFuY2VQYXRoLCgwLFYkLnN0ckNvbmNhdCkodzYuZGVmYXVsdC5pbnN0YW5jZVBhdGgsSildfWZ1bmN0aW9uIFJkKHtrZXl3b3JkOiQsaXQ6e2VyclNjaGVtYVBhdGg6UX19LHtzY2hlbWFQYXRoOkoscGFyZW50U2NoZW1hOll9KXtsZXQgWD1ZP1E6ViQuc3RyYCR7UX0vJHskfWA7aWYoSilYPVYkLnN0cmAke1h9JHsoMCxrVy5nZXRFcnJvclBhdGgpKEosa1cuVHlwZS5TdHIpfWA7cmV0dXJuW3gwLnNjaGVtYVBhdGgsWF19ZnVuY3Rpb24gUGQoJCx7cGFyYW1zOlEsbWVzc2FnZTpKfSxZKXtsZXR7a2V5d29yZDpYLGRhdGE6VyxzY2hlbWFWYWx1ZTpHLGl0OlV9PSQse29wdHM6SCxwcm9wZXJ0eU5hbWU6cSx0b3BTY2hlbWFSZWY6VixzY2hlbWFQYXRoOkJ9PVU7aWYoWS5wdXNoKFt4MC5rZXl3b3JkLFhdLFt4MC5wYXJhbXMsdHlwZW9mIFE9PVwiZnVuY3Rpb25cIj9RKCQpOlF8fFYkLl9ge31gXSksSC5tZXNzYWdlcylZLnB1c2goW3gwLm1lc3NhZ2UsdHlwZW9mIEo9PVwiZnVuY3Rpb25cIj9KKCQpOkpdKTtpZihILnZlcmJvc2UpWS5wdXNoKFt4MC5zY2hlbWEsR10sW3gwLnBhcmVudFNjaGVtYSxWJC5fYCR7Vn0ke0J9YF0sW3c2LmRlZmF1bHQuZGF0YSxXXSk7aWYocSlZLnB1c2goW3gwLnByb3BlcnR5TmFtZSxxXSl9fSk7dmFyIG9qPUkoKG5qKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShuaixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtuai5ib29sT3JFbXB0eVNjaGVtYT1uai50b3BCb29sT3JFbXB0eVNjaGVtYT12b2lkIDA7dmFyIGtkPVNKKCksdmQ9USQoKSxDZD1KMSgpLFRkPXttZXNzYWdlOlwiYm9vbGVhbiBzY2hlbWEgaXMgZmFsc2VcIn07ZnVuY3Rpb24geGQoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLHZhbGlkYXRlTmFtZTpZfT0kO2lmKEo9PT0hMSlpaigkLCExKTtlbHNlIGlmKHR5cGVvZiBKPT1cIm9iamVjdFwiJiZKLiRhc3luYz09PSEwKVEucmV0dXJuKENkLmRlZmF1bHQuZGF0YSk7ZWxzZSBRLmFzc2lnbih2ZC5fYCR7WX0uZXJyb3JzYCxudWxsKSxRLnJldHVybighMCl9bmoudG9wQm9vbE9yRW1wdHlTY2hlbWE9eGQ7ZnVuY3Rpb24gZmQoJCxRKXtsZXR7Z2VuOkosc2NoZW1hOll9PSQ7aWYoWT09PSExKUoudmFyKFEsITEpLGlqKCQpO2Vsc2UgSi52YXIoUSwhMCl9bmouYm9vbE9yRW1wdHlTY2hlbWE9ZmQ7ZnVuY3Rpb24gaWooJCxRKXtsZXR7Z2VuOkosZGF0YTpZfT0kLFg9e2dlbjpKLGtleXdvcmQ6XCJmYWxzZSBzY2hlbWFcIixkYXRhOlksc2NoZW1hOiExLHNjaGVtYUNvZGU6ITEsc2NoZW1hVmFsdWU6ITEscGFyYW1zOnt9LGl0OiR9OygwLGtkLnJlcG9ydEVycm9yKShYLFRkLHZvaWQgMCxRKX19KTt2YXIgX0I9SSgodGopPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHRqLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3RqLmdldFJ1bGVzPXRqLmlzSlNPTlR5cGU9dm9pZCAwO3ZhciBnZD1bXCJzdHJpbmdcIixcIm51bWJlclwiLFwiaW50ZWdlclwiLFwiYm9vbGVhblwiLFwibnVsbFwiLFwib2JqZWN0XCIsXCJhcnJheVwiXSxoZD1uZXcgU2V0KGdkKTtmdW5jdGlvbiB1ZCgkKXtyZXR1cm4gdHlwZW9mICQ9PVwic3RyaW5nXCImJmhkLmhhcygkKX10ai5pc0pTT05UeXBlPXVkO2Z1bmN0aW9uIG1kKCl7bGV0ICQ9e251bWJlcjp7dHlwZTpcIm51bWJlclwiLHJ1bGVzOltdfSxzdHJpbmc6e3R5cGU6XCJzdHJpbmdcIixydWxlczpbXX0sYXJyYXk6e3R5cGU6XCJhcnJheVwiLHJ1bGVzOltdfSxvYmplY3Q6e3R5cGU6XCJvYmplY3RcIixydWxlczpbXX19O3JldHVybnt0eXBlczp7Li4uJCxpbnRlZ2VyOiEwLGJvb2xlYW46ITAsbnVsbDohMH0scnVsZXM6W3tydWxlczpbXX0sJC5udW1iZXIsJC5zdHJpbmcsJC5hcnJheSwkLm9iamVjdF0scG9zdDp7cnVsZXM6W119LGFsbDp7fSxrZXl3b3Jkczp7fX19dGouZ2V0UnVsZXM9bWR9KTt2YXIgU0I9SSgoJEEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KCRBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pOyRBLnNob3VsZFVzZVJ1bGU9JEEuc2hvdWxkVXNlR3JvdXA9JEEuc2NoZW1hSGFzUnVsZXNGb3JUeXBlPXZvaWQgMDtmdW5jdGlvbiBjZCh7c2NoZW1hOiQsc2VsZjpRfSxKKXtsZXQgWT1RLlJVTEVTLnR5cGVzW0pdO3JldHVybiBZJiZZIT09ITAmJnNqKCQsWSl9JEEuc2NoZW1hSGFzUnVsZXNGb3JUeXBlPWNkO2Z1bmN0aW9uIHNqKCQsUSl7cmV0dXJuIFEucnVsZXMuc29tZSgoSik9PmVqKCQsSikpfSRBLnNob3VsZFVzZUdyb3VwPXNqO2Z1bmN0aW9uIGVqKCQsUSl7dmFyIEo7cmV0dXJuICRbUS5rZXl3b3JkXSE9PXZvaWQgMHx8KChKPVEuZGVmaW5pdGlvbi5pbXBsZW1lbnRzKT09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkouc29tZSgoWSk9PiRbWV0hPT12b2lkIDApKX0kQS5zaG91bGRVc2VSdWxlPWVqfSk7dmFyIGtKPUkoKFdBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShXQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtXQS5yZXBvcnRUeXBlRXJyb3I9V0EuY2hlY2tEYXRhVHlwZXM9V0EuY2hlY2tEYXRhVHlwZT1XQS5jb2VyY2VBbmRDaGVja0RhdGFUeXBlPVdBLmdldEpTT05UeXBlcz1XQS5nZXRTY2hlbWFUeXBlcz1XQS5EYXRhVHlwZT12b2lkIDA7dmFyIGlkPV9CKCksbmQ9U0IoKSxyZD1TSigpLCQkPVEkKCksSkE9cSQoKSx3OTsoZnVuY3Rpb24oJCl7JFskLkNvcnJlY3Q9MF09XCJDb3JyZWN0XCIsJFskLldyb25nPTFdPVwiV3JvbmdcIn0pKHc5fHwoV0EuRGF0YVR5cGU9dzk9e30pKTtmdW5jdGlvbiBvZCgkKXtsZXQgUT1YQSgkLnR5cGUpO2lmKFEuaW5jbHVkZXMoXCJudWxsXCIpKXtpZigkLm51bGxhYmxlPT09ITEpdGhyb3cgRXJyb3IoXCJ0eXBlOiBudWxsIGNvbnRyYWRpY3RzIG51bGxhYmxlOiBmYWxzZVwiKX1lbHNle2lmKCFRLmxlbmd0aCYmJC5udWxsYWJsZSE9PXZvaWQgMCl0aHJvdyBFcnJvcignXCJudWxsYWJsZVwiIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgXCJ0eXBlXCInKTtpZigkLm51bGxhYmxlPT09ITApUS5wdXNoKFwibnVsbFwiKX1yZXR1cm4gUX1XQS5nZXRTY2hlbWFUeXBlcz1vZDtmdW5jdGlvbiBYQSgkKXtsZXQgUT1BcnJheS5pc0FycmF5KCQpPyQ6JD9bJF06W107aWYoUS5ldmVyeShpZC5pc0pTT05UeXBlKSlyZXR1cm4gUTt0aHJvdyBFcnJvcihcInR5cGUgbXVzdCBiZSBKU09OVHlwZSBvciBKU09OVHlwZVtdOiBcIitRLmpvaW4oXCIsXCIpKX1XQS5nZXRKU09OVHlwZXM9WEE7ZnVuY3Rpb24gdGQoJCxRKXtsZXR7Z2VuOkosZGF0YTpZLG9wdHM6WH09JCxXPWFkKFEsWC5jb2VyY2VUeXBlcyksRz1RLmxlbmd0aD4wJiYhKFcubGVuZ3RoPT09MCYmUS5sZW5ndGg9PT0xJiYoMCxuZC5zY2hlbWFIYXNSdWxlc0ZvclR5cGUpKCQsUVswXSkpO2lmKEcpe2xldCBVPXZCKFEsWSxYLnN0cmljdE51bWJlcnMsdzkuV3JvbmcpO0ouaWYoVSwoKT0+e2lmKFcubGVuZ3RoKXNkKCQsUSxXKTtlbHNlIENCKCQpfSl9cmV0dXJuIEd9V0EuY29lcmNlQW5kQ2hlY2tEYXRhVHlwZT10ZDt2YXIgWUE9bmV3IFNldChbXCJzdHJpbmdcIixcIm51bWJlclwiLFwiaW50ZWdlclwiLFwiYm9vbGVhblwiLFwibnVsbFwiXSk7ZnVuY3Rpb24gYWQoJCxRKXtyZXR1cm4gUT8kLmZpbHRlcigoSik9PllBLmhhcyhKKXx8UT09PVwiYXJyYXlcIiYmSj09PVwiYXJyYXlcIik6W119ZnVuY3Rpb24gc2QoJCxRLEope2xldHtnZW46WSxkYXRhOlgsb3B0czpXfT0kLEc9WS5sZXQoXCJkYXRhVHlwZVwiLCQkLl9gdHlwZW9mICR7WH1gKSxVPVkubGV0KFwiY29lcmNlZFwiLCQkLl9gdW5kZWZpbmVkYCk7aWYoVy5jb2VyY2VUeXBlcz09PVwiYXJyYXlcIilZLmlmKCQkLl9gJHtHfSA9PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KCR7WH0pICYmICR7WH0ubGVuZ3RoID09IDFgLCgpPT5ZLmFzc2lnbihYLCQkLl9gJHtYfVswXWApLmFzc2lnbihHLCQkLl9gdHlwZW9mICR7WH1gKS5pZih2QihRLFgsVy5zdHJpY3ROdW1iZXJzKSwoKT0+WS5hc3NpZ24oVSxYKSkpO1kuaWYoJCQuX2Ake1V9ICE9PSB1bmRlZmluZWRgKTtmb3IobGV0IHEgb2YgSilpZihZQS5oYXMocSl8fHE9PT1cImFycmF5XCImJlcuY29lcmNlVHlwZXM9PT1cImFycmF5XCIpSChxKTtZLmVsc2UoKSxDQigkKSxZLmVuZElmKCksWS5pZigkJC5fYCR7VX0gIT09IHVuZGVmaW5lZGAsKCk9PntZLmFzc2lnbihYLFUpLGVkKCQsVSl9KTtmdW5jdGlvbiBIKHEpe3N3aXRjaChxKXtjYXNlXCJzdHJpbmdcIjpZLmVsc2VJZigkJC5fYCR7R30gPT0gXCJudW1iZXJcIiB8fCAke0d9ID09IFwiYm9vbGVhblwiYCkuYXNzaWduKFUsJCQuX2BcIlwiICsgJHtYfWApLmVsc2VJZigkJC5fYCR7WH0gPT09IG51bGxgKS5hc3NpZ24oVSwkJC5fYFwiXCJgKTtyZXR1cm47Y2FzZVwibnVtYmVyXCI6WS5lbHNlSWYoJCQuX2Ake0d9ID09IFwiYm9vbGVhblwiIHx8ICR7WH0gPT09IG51bGxcbiAgICAgICAgICAgICAgfHwgKCR7R30gPT0gXCJzdHJpbmdcIiAmJiAke1h9ICYmICR7WH0gPT0gKyR7WH0pYCkuYXNzaWduKFUsJCQuX2ArJHtYfWApO3JldHVybjtjYXNlXCJpbnRlZ2VyXCI6WS5lbHNlSWYoJCQuX2Ake0d9ID09PSBcImJvb2xlYW5cIiB8fCAke1h9ID09PSBudWxsXG4gICAgICAgICAgICAgIHx8ICgke0d9ID09PSBcInN0cmluZ1wiICYmICR7WH0gJiYgJHtYfSA9PSArJHtYfSAmJiAhKCR7WH0gJSAxKSlgKS5hc3NpZ24oVSwkJC5fYCske1h9YCk7cmV0dXJuO2Nhc2VcImJvb2xlYW5cIjpZLmVsc2VJZigkJC5fYCR7WH0gPT09IFwiZmFsc2VcIiB8fCAke1h9ID09PSAwIHx8ICR7WH0gPT09IG51bGxgKS5hc3NpZ24oVSwhMSkuZWxzZUlmKCQkLl9gJHtYfSA9PT0gXCJ0cnVlXCIgfHwgJHtYfSA9PT0gMWApLmFzc2lnbihVLCEwKTtyZXR1cm47Y2FzZVwibnVsbFwiOlkuZWxzZUlmKCQkLl9gJHtYfSA9PT0gXCJcIiB8fCAke1h9ID09PSAwIHx8ICR7WH0gPT09IGZhbHNlYCksWS5hc3NpZ24oVSxudWxsKTtyZXR1cm47Y2FzZVwiYXJyYXlcIjpZLmVsc2VJZigkJC5fYCR7R30gPT09IFwic3RyaW5nXCIgfHwgJHtHfSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICB8fCAke0d9ID09PSBcImJvb2xlYW5cIiB8fCAke1h9ID09PSBudWxsYCkuYXNzaWduKFUsJCQuX2BbJHtYfV1gKX19fWZ1bmN0aW9uIGVkKHtnZW46JCxwYXJlbnREYXRhOlEscGFyZW50RGF0YVByb3BlcnR5Okp9LFkpeyQuaWYoJCQuX2Ake1F9ICE9PSB1bmRlZmluZWRgLCgpPT4kLmFzc2lnbigkJC5fYCR7UX1bJHtKfV1gLFkpKX1mdW5jdGlvbiBrQigkLFEsSixZPXc5LkNvcnJlY3Qpe2xldCBYPVk9PT13OS5Db3JyZWN0PyQkLm9wZXJhdG9ycy5FUTokJC5vcGVyYXRvcnMuTkVRLFc7c3dpdGNoKCQpe2Nhc2VcIm51bGxcIjpyZXR1cm4gJCQuX2Ake1F9ICR7WH0gbnVsbGA7Y2FzZVwiYXJyYXlcIjpXPSQkLl9gQXJyYXkuaXNBcnJheSgke1F9KWA7YnJlYWs7Y2FzZVwib2JqZWN0XCI6Vz0kJC5fYCR7UX0gJiYgdHlwZW9mICR7UX0gPT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSgke1F9KWA7YnJlYWs7Y2FzZVwiaW50ZWdlclwiOlc9RygkJC5fYCEoJHtRfSAlIDEpICYmICFpc05hTigke1F9KWApO2JyZWFrO2Nhc2VcIm51bWJlclwiOlc9RygpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuICQkLl9gdHlwZW9mICR7UX0gJHtYfSAkeyR9YH1yZXR1cm4gWT09PXc5LkNvcnJlY3Q/VzooMCwkJC5ub3QpKFcpO2Z1bmN0aW9uIEcoVT0kJC5uaWwpe3JldHVybigwLCQkLmFuZCkoJCQuX2B0eXBlb2YgJHtRfSA9PSBcIm51bWJlclwiYCxVLEo/JCQuX2Bpc0Zpbml0ZSgke1F9KWA6JCQubmlsKX19V0EuY2hlY2tEYXRhVHlwZT1rQjtmdW5jdGlvbiB2QigkLFEsSixZKXtpZigkLmxlbmd0aD09PTEpcmV0dXJuIGtCKCRbMF0sUSxKLFkpO2xldCBYLFc9KDAsSkEudG9IYXNoKSgkKTtpZihXLmFycmF5JiZXLm9iamVjdCl7bGV0IEc9JCQuX2B0eXBlb2YgJHtRfSAhPSBcIm9iamVjdFwiYDtYPVcubnVsbD9HOiQkLl9gISR7UX0gfHwgJHtHfWAsZGVsZXRlIFcubnVsbCxkZWxldGUgVy5hcnJheSxkZWxldGUgVy5vYmplY3R9ZWxzZSBYPSQkLm5pbDtpZihXLm51bWJlcilkZWxldGUgVy5pbnRlZ2VyO2ZvcihsZXQgRyBpbiBXKVg9KDAsJCQuYW5kKShYLGtCKEcsUSxKLFkpKTtyZXR1cm4gWH1XQS5jaGVja0RhdGFUeXBlcz12Qjt2YXIgJGk9e21lc3NhZ2U6KHtzY2hlbWE6JH0pPT5gbXVzdCBiZSAkeyR9YCxwYXJhbXM6KHtzY2hlbWE6JCxzY2hlbWFWYWx1ZTpRfSk9PnR5cGVvZiAkPT1cInN0cmluZ1wiPyQkLl9ge3R5cGU6ICR7JH19YDokJC5fYHt0eXBlOiAke1F9fWB9O2Z1bmN0aW9uIENCKCQpe2xldCBRPVFpKCQpOygwLHJkLnJlcG9ydEVycm9yKShRLCRpKX1XQS5yZXBvcnRUeXBlRXJyb3I9Q0I7ZnVuY3Rpb24gUWkoJCl7bGV0e2dlbjpRLGRhdGE6SixzY2hlbWE6WX09JCxYPSgwLEpBLnNjaGVtYVJlZk9yVmFsKSgkLFksXCJ0eXBlXCIpO3JldHVybntnZW46USxrZXl3b3JkOlwidHlwZVwiLGRhdGE6SixzY2hlbWE6WS50eXBlLHNjaGVtYUNvZGU6WCxzY2hlbWFWYWx1ZTpYLHBhcmVudFNjaGVtYTpZLHBhcmFtczp7fSxpdDokfX19KTt2YXIgcUE9SSgoSEEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEhBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO0hBLmFzc2lnbkRlZmF1bHRzPXZvaWQgMDt2YXIgTzk9USQoKSxIaT1xJCgpO2Z1bmN0aW9uIEtpKCQsUSl7bGV0e3Byb3BlcnRpZXM6SixpdGVtczpZfT0kLnNjaGVtYTtpZihRPT09XCJvYmplY3RcIiYmSilmb3IobGV0IFggaW4gSilVQSgkLFgsSltYXS5kZWZhdWx0KTtlbHNlIGlmKFE9PT1cImFycmF5XCImJkFycmF5LmlzQXJyYXkoWSkpWS5mb3JFYWNoKChYLFcpPT5VQSgkLFcsWC5kZWZhdWx0KSl9SEEuYXNzaWduRGVmYXVsdHM9S2k7ZnVuY3Rpb24gVUEoJCxRLEope2xldHtnZW46WSxjb21wb3NpdGVSdWxlOlgsZGF0YTpXLG9wdHM6R309JDtpZihKPT09dm9pZCAwKXJldHVybjtsZXQgVT1POS5fYCR7V30keygwLE85LmdldFByb3BlcnR5KShRKX1gO2lmKFgpeygwLEhpLmNoZWNrU3RyaWN0TW9kZSkoJCxgZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJHtVfWApO3JldHVybn1sZXQgSD1POS5fYCR7VX0gPT09IHVuZGVmaW5lZGA7aWYoRy51c2VEZWZhdWx0cz09PVwiZW1wdHlcIilIPU85Ll9gJHtIfSB8fCAke1V9ID09PSBudWxsIHx8ICR7VX0gPT09IFwiXCJgO1kuaWYoSCxPOS5fYCR7VX0gPSAkeygwLE85LnN0cmluZ2lmeSkoSil9YCl9fSk7dmFyICQ0PUkoKHpBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6QSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt6QS52YWxpZGF0ZVVuaW9uPXpBLnZhbGlkYXRlQXJyYXk9ekEudXNlUGF0dGVybj16QS5jYWxsVmFsaWRhdGVDb2RlPXpBLnNjaGVtYVByb3BlcnRpZXM9ekEuYWxsU2NoZW1hUHJvcGVydGllcz16QS5ub1Byb3BlcnR5SW5EYXRhPXpBLnByb3BlcnR5SW5EYXRhPXpBLmlzT3duUHJvcGVydHk9ekEuaGFzUHJvcEZ1bmM9ekEucmVwb3J0TWlzc2luZ1Byb3A9ekEuY2hlY2tNaXNzaW5nUHJvcD16QS5jaGVja1JlcG9ydE1pc3NpbmdQcm9wPXZvaWQgMDt2YXIgayQ9USQoKSxUQj1xJCgpLGgxPUoxKCkscWk9cSQoKTtmdW5jdGlvbiBWaSgkLFEpe2xldHtnZW46SixkYXRhOlksaXQ6WH09JDtKLmlmKGZCKEosWSxRLFgub3B0cy5vd25Qcm9wZXJ0aWVzKSwoKT0+eyQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6ayQuX2Ake1F9YH0sITApLCQuZXJyb3IoKX0pfXpBLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3A9Vmk7ZnVuY3Rpb24gQmkoe2dlbjokLGRhdGE6USxpdDp7b3B0czpKfX0sWSxYKXtyZXR1cm4oMCxrJC5vcikoLi4uWS5tYXAoKFcpPT4oMCxrJC5hbmQpKGZCKCQsUSxXLEoub3duUHJvcGVydGllcyksayQuX2Ake1h9ID0gJHtXfWApKSl9ekEuY2hlY2tNaXNzaW5nUHJvcD1CaTtmdW5jdGlvbiB6aSgkLFEpeyQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6UX0sITApLCQuZXJyb3IoKX16QS5yZXBvcnRNaXNzaW5nUHJvcD16aTtmdW5jdGlvbiBWQSgkKXtyZXR1cm4gJC5zY29wZVZhbHVlKFwiZnVuY1wiLHtyZWY6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxjb2RlOmskLl9gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eWB9KX16QS5oYXNQcm9wRnVuYz1WQTtmdW5jdGlvbiB4QigkLFEsSil7cmV0dXJuIGskLl9gJHtWQSgkKX0uY2FsbCgke1F9LCAke0p9KWB9ekEuaXNPd25Qcm9wZXJ0eT14QjtmdW5jdGlvbiBOaSgkLFEsSixZKXtsZXQgWD1rJC5fYCR7UX0keygwLGskLmdldFByb3BlcnR5KShKKX0gIT09IHVuZGVmaW5lZGA7cmV0dXJuIFk/ayQuX2Ake1h9ICYmICR7eEIoJCxRLEopfWA6WH16QS5wcm9wZXJ0eUluRGF0YT1OaTtmdW5jdGlvbiBmQigkLFEsSixZKXtsZXQgWD1rJC5fYCR7UX0keygwLGskLmdldFByb3BlcnR5KShKKX0gPT09IHVuZGVmaW5lZGA7cmV0dXJuIFk/KDAsayQub3IpKFgsKDAsayQubm90KSh4QigkLFEsSikpKTpYfXpBLm5vUHJvcGVydHlJbkRhdGE9ZkI7ZnVuY3Rpb24gQkEoJCl7cmV0dXJuICQ/T2JqZWN0LmtleXMoJCkuZmlsdGVyKChRKT0+USE9PVwiX19wcm90b19fXCIpOltdfXpBLmFsbFNjaGVtYVByb3BlcnRpZXM9QkE7ZnVuY3Rpb24gd2koJCxRKXtyZXR1cm4gQkEoUSkuZmlsdGVyKChKKT0+ISgwLFRCLmFsd2F5c1ZhbGlkU2NoZW1hKSgkLFFbSl0pKX16QS5zY2hlbWFQcm9wZXJ0aWVzPXdpO2Z1bmN0aW9uIE9pKHtzY2hlbWFDb2RlOiQsZGF0YTpRLGl0OntnZW46Six0b3BTY2hlbWFSZWY6WSxzY2hlbWFQYXRoOlgsZXJyb3JQYXRoOld9LGl0Okd9LFUsSCxxKXtsZXQgVj1xP2skLl9gJHskfSwgJHtRfSwgJHtZfSR7WH1gOlEsQj1bW2gxLmRlZmF1bHQuaW5zdGFuY2VQYXRoLCgwLGskLnN0ckNvbmNhdCkoaDEuZGVmYXVsdC5pbnN0YW5jZVBhdGgsVyldLFtoMS5kZWZhdWx0LnBhcmVudERhdGEsRy5wYXJlbnREYXRhXSxbaDEuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHksRy5wYXJlbnREYXRhUHJvcGVydHldLFtoMS5kZWZhdWx0LnJvb3REYXRhLGgxLmRlZmF1bHQucm9vdERhdGFdXTtpZihHLm9wdHMuZHluYW1pY1JlZilCLnB1c2goW2gxLmRlZmF1bHQuZHluYW1pY0FuY2hvcnMsaDEuZGVmYXVsdC5keW5hbWljQW5jaG9yc10pO2xldCB6PWskLl9gJHtWfSwgJHtKLm9iamVjdCguLi5CKX1gO3JldHVybiBIIT09ayQubmlsP2skLl9gJHtVfS5jYWxsKCR7SH0sICR7en0pYDprJC5fYCR7VX0oJHt6fSlgfXpBLmNhbGxWYWxpZGF0ZUNvZGU9T2k7dmFyIERpPWskLl9gbmV3IFJlZ0V4cGA7ZnVuY3Rpb24gRmkoe2dlbjokLGl0OntvcHRzOlF9fSxKKXtsZXQgWT1RLnVuaWNvZGVSZWdFeHA/XCJ1XCI6XCJcIix7cmVnRXhwOlh9PVEuY29kZSxXPVgoSixZKTtyZXR1cm4gJC5zY29wZVZhbHVlKFwicGF0dGVyblwiLHtrZXk6Vy50b1N0cmluZygpLHJlZjpXLGNvZGU6ayQuX2Ake1guY29kZT09PVwibmV3IFJlZ0V4cFwiP0RpOigwLHFpLnVzZUZ1bmMpKCQsWCl9KCR7Sn0sICR7WX0pYH0pfXpBLnVzZVBhdHRlcm49Rmk7ZnVuY3Rpb24gWmkoJCl7bGV0e2dlbjpRLGRhdGE6SixrZXl3b3JkOlksaXQ6WH09JCxXPVEubmFtZShcInZhbGlkXCIpO2lmKFguYWxsRXJyb3JzKXtsZXQgVT1RLmxldChcInZhbGlkXCIsITApO3JldHVybiBHKCgpPT5RLmFzc2lnbihVLCExKSksVX1yZXR1cm4gUS52YXIoVywhMCksRygoKT0+US5icmVhaygpKSxXO2Z1bmN0aW9uIEcoVSl7bGV0IEg9US5jb25zdChcImxlblwiLGskLl9gJHtKfS5sZW5ndGhgKTtRLmZvclJhbmdlKFwiaVwiLDAsSCwocSk9PnskLnN1YnNjaGVtYSh7a2V5d29yZDpZLGRhdGFQcm9wOnEsZGF0YVByb3BUeXBlOlRCLlR5cGUuTnVtfSxXKSxRLmlmKCgwLGskLm5vdCkoVyksVSl9KX19ekEudmFsaWRhdGVBcnJheT1aaTtmdW5jdGlvbiBNaSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosa2V5d29yZDpZLGl0Olh9PSQ7aWYoIUFycmF5LmlzQXJyYXkoSikpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7aWYoSi5zb21lKChIKT0+KDAsVEIuYWx3YXlzVmFsaWRTY2hlbWEpKFgsSCkpJiYhWC5vcHRzLnVuZXZhbHVhdGVkKXJldHVybjtsZXQgRz1RLmxldChcInZhbGlkXCIsITEpLFU9US5uYW1lKFwiX3ZhbGlkXCIpO1EuYmxvY2soKCk9PkouZm9yRWFjaCgoSCxxKT0+e2xldCBWPSQuc3Vic2NoZW1hKHtrZXl3b3JkOlksc2NoZW1hUHJvcDpxLGNvbXBvc2l0ZVJ1bGU6ITB9LFUpO2lmKFEuYXNzaWduKEcsayQuX2Ake0d9IHx8ICR7VX1gKSwhJC5tZXJnZVZhbGlkRXZhbHVhdGVkKFYsVSkpUS5pZigoMCxrJC5ub3QpKEcpKX0pKSwkLnJlc3VsdChHLCgpPT4kLnJlc2V0KCksKCk9PiQuZXJyb3IoITApKX16QS52YWxpZGF0ZVVuaW9uPU1pfSk7dmFyIFpBPUkoKERBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShEQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtEQS52YWxpZGF0ZUtleXdvcmRVc2FnZT1EQS52YWxpZFNjaGVtYVR5cGU9REEuZnVuY0tleXdvcmRDb2RlPURBLm1hY3JvS2V5d29yZENvZGU9dm9pZCAwO3ZhciBPNj1RJCgpLGYwPUoxKCksQ2k9JDQoKSxUaT1TSigpO2Z1bmN0aW9uIHhpKCQsUSl7bGV0e2dlbjpKLGtleXdvcmQ6WSxzY2hlbWE6WCxwYXJlbnRTY2hlbWE6VyxpdDpHfT0kLFU9US5tYWNyby5jYWxsKEcuc2VsZixYLFcsRyksSD1PQShKLFksVSk7aWYoRy5vcHRzLnZhbGlkYXRlU2NoZW1hIT09ITEpRy5zZWxmLnZhbGlkYXRlU2NoZW1hKFUsITApO2xldCBxPUoubmFtZShcInZhbGlkXCIpOyQuc3Vic2NoZW1hKHtzY2hlbWE6VSxzY2hlbWFQYXRoOk82Lm5pbCxlcnJTY2hlbWFQYXRoOmAke0cuZXJyU2NoZW1hUGF0aH0vJHtZfWAsdG9wU2NoZW1hUmVmOkgsY29tcG9zaXRlUnVsZTohMH0scSksJC5wYXNzKHEsKCk9PiQuZXJyb3IoITApKX1EQS5tYWNyb0tleXdvcmRDb2RlPXhpO2Z1bmN0aW9uIGZpKCQsUSl7dmFyIEo7bGV0e2dlbjpZLGtleXdvcmQ6WCxzY2hlbWE6VyxwYXJlbnRTY2hlbWE6RywkZGF0YTpVLGl0Okh9PSQ7Z2koSCxRKTtsZXQgcT0hVSYmUS5jb21waWxlP1EuY29tcGlsZS5jYWxsKEguc2VsZixXLEcsSCk6US52YWxpZGF0ZSxWPU9BKFksWCxxKSxCPVkubGV0KFwidmFsaWRcIik7JC5ibG9jayRkYXRhKEIseiksJC5vaygoSj1RLnZhbGlkKSE9PW51bGwmJkohPT12b2lkIDA/SjpCKTtmdW5jdGlvbiB6KCl7aWYoUS5lcnJvcnM9PT0hMSl7aWYoTygpLFEubW9kaWZ5aW5nKXdBKCQpO0QoKCk9PiQuZXJyb3IoKSl9ZWxzZXtsZXQgTT1RLmFzeW5jP04oKTp3KCk7aWYoUS5tb2RpZnlpbmcpd0EoJCk7RCgoKT0+eWkoJCxNKSl9fWZ1bmN0aW9uIE4oKXtsZXQgTT1ZLmxldChcInJ1bGVFcnJzXCIsbnVsbCk7cmV0dXJuIFkudHJ5KCgpPT5PKE82Ll9gYXdhaXQgYCksKGopPT5ZLmFzc2lnbihCLCExKS5pZihPNi5fYCR7an0gaW5zdGFuY2VvZiAke0guVmFsaWRhdGlvbkVycm9yfWAsKCk9PlkuYXNzaWduKE0sTzYuX2Ake2p9LmVycm9yc2ApLCgpPT5ZLnRocm93KGopKSksTX1mdW5jdGlvbiB3KCl7bGV0IE09TzYuX2Ake1Z9LmVycm9yc2A7cmV0dXJuIFkuYXNzaWduKE0sbnVsbCksTyhPNi5uaWwpLE19ZnVuY3Rpb24gTyhNPVEuYXN5bmM/TzYuX2Bhd2FpdCBgOk82Lm5pbCl7bGV0IGo9SC5vcHRzLnBhc3NDb250ZXh0P2YwLmRlZmF1bHQudGhpczpmMC5kZWZhdWx0LnNlbGYsQT0hKChcImNvbXBpbGVcImluIFEpJiYhVXx8US5zY2hlbWE9PT0hMSk7WS5hc3NpZ24oQixPNi5fYCR7TX0keygwLENpLmNhbGxWYWxpZGF0ZUNvZGUpKCQsVixqLEEpfWAsUS5tb2RpZnlpbmcpfWZ1bmN0aW9uIEQoTSl7dmFyIGo7WS5pZigoMCxPNi5ub3QpKChqPVEudmFsaWQpIT09bnVsbCYmaiE9PXZvaWQgMD9qOkIpLE0pfX1EQS5mdW5jS2V5d29yZENvZGU9Zmk7ZnVuY3Rpb24gd0EoJCl7bGV0e2dlbjpRLGRhdGE6SixpdDpZfT0kO1EuaWYoWS5wYXJlbnREYXRhLCgpPT5RLmFzc2lnbihKLE82Ll9gJHtZLnBhcmVudERhdGF9WyR7WS5wYXJlbnREYXRhUHJvcGVydHl9XWApKX1mdW5jdGlvbiB5aSgkLFEpe2xldHtnZW46Sn09JDtKLmlmKE82Ll9gQXJyYXkuaXNBcnJheSgke1F9KWAsKCk9PntKLmFzc2lnbihmMC5kZWZhdWx0LnZFcnJvcnMsTzYuX2Ake2YwLmRlZmF1bHQudkVycm9yc30gPT09IG51bGwgPyAke1F9IDogJHtmMC5kZWZhdWx0LnZFcnJvcnN9LmNvbmNhdCgke1F9KWApLmFzc2lnbihmMC5kZWZhdWx0LmVycm9ycyxPNi5fYCR7ZjAuZGVmYXVsdC52RXJyb3JzfS5sZW5ndGhgKSwoMCxUaS5leHRlbmRFcnJvcnMpKCQpfSwoKT0+JC5lcnJvcigpKX1mdW5jdGlvbiBnaSh7c2NoZW1hRW52OiR9LFEpe2lmKFEuYXN5bmMmJiEkLiRhc3luYyl0aHJvdyBFcnJvcihcImFzeW5jIGtleXdvcmQgaW4gc3luYyBzY2hlbWFcIil9ZnVuY3Rpb24gT0EoJCxRLEope2lmKEo9PT12b2lkIDApdGhyb3cgRXJyb3IoYGtleXdvcmQgXCIke1F9XCIgZmFpbGVkIHRvIGNvbXBpbGVgKTtyZXR1cm4gJC5zY29wZVZhbHVlKFwia2V5d29yZFwiLHR5cGVvZiBKPT1cImZ1bmN0aW9uXCI/e3JlZjpKfTp7cmVmOkosY29kZTooMCxPNi5zdHJpbmdpZnkpKEopfSl9ZnVuY3Rpb24gaGkoJCxRLEo9ITEpe3JldHVybiFRLmxlbmd0aHx8US5zb21lKChZKT0+WT09PVwiYXJyYXlcIj9BcnJheS5pc0FycmF5KCQpOlk9PT1cIm9iamVjdFwiPyQmJnR5cGVvZiAkPT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheSgkKTp0eXBlb2YgJD09WXx8SiYmdHlwZW9mICQ+XCJ1XCIpfURBLnZhbGlkU2NoZW1hVHlwZT1oaTtmdW5jdGlvbiB1aSh7c2NoZW1hOiQsb3B0czpRLHNlbGY6SixlcnJTY2hlbWFQYXRoOll9LFgsVyl7aWYoQXJyYXkuaXNBcnJheShYLmtleXdvcmQpPyFYLmtleXdvcmQuaW5jbHVkZXMoVyk6WC5rZXl3b3JkIT09Vyl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtsZXQgRz1YLmRlcGVuZGVuY2llcztpZihHPT09bnVsbHx8Rz09PXZvaWQgMD92b2lkIDA6Ry5zb21lKChVKT0+IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgkLFUpKSl0aHJvdyBFcnJvcihgcGFyZW50IHNjaGVtYSBtdXN0IGhhdmUgZGVwZW5kZW5jaWVzIG9mICR7V306ICR7Ry5qb2luKFwiLFwiKX1gKTtpZihYLnZhbGlkYXRlU2NoZW1hKXtpZighWC52YWxpZGF0ZVNjaGVtYSgkW1ddKSl7bGV0IEg9YGtleXdvcmQgXCIke1d9XCIgdmFsdWUgaXMgaW52YWxpZCBhdCBwYXRoIFwiJHtZfVwiOiBgK0ouZXJyb3JzVGV4dChYLnZhbGlkYXRlU2NoZW1hLmVycm9ycyk7aWYoUS52YWxpZGF0ZVNjaGVtYT09PVwibG9nXCIpSi5sb2dnZXIuZXJyb3IoSCk7ZWxzZSB0aHJvdyBFcnJvcihIKX19fURBLnZhbGlkYXRlS2V5d29yZFVzYWdlPXVpfSk7dmFyIEFBPUkoKExBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShMQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtMQS5leHRlbmRTdWJzY2hlbWFNb2RlPUxBLmV4dGVuZFN1YnNjaGVtYURhdGE9TEEuZ2V0U3Vic2NoZW1hPXZvaWQgMDt2YXIgXzQ9USQoKSxNQT1xJCgpO2Z1bmN0aW9uIHBpKCQse2tleXdvcmQ6USxzY2hlbWFQcm9wOkosc2NoZW1hOlksc2NoZW1hUGF0aDpYLGVyclNjaGVtYVBhdGg6Vyx0b3BTY2hlbWFSZWY6R30pe2lmKFEhPT12b2lkIDAmJlkhPT12b2lkIDApdGhyb3cgRXJyb3IoJ2JvdGggXCJrZXl3b3JkXCIgYW5kIFwic2NoZW1hXCIgcGFzc2VkLCBvbmx5IG9uZSBhbGxvd2VkJyk7aWYoUSE9PXZvaWQgMCl7bGV0IFU9JC5zY2hlbWFbUV07cmV0dXJuIEo9PT12b2lkIDA/e3NjaGVtYTpVLHNjaGVtYVBhdGg6XzQuX2AkeyQuc2NoZW1hUGF0aH0keygwLF80LmdldFByb3BlcnR5KShRKX1gLGVyclNjaGVtYVBhdGg6YCR7JC5lcnJTY2hlbWFQYXRofS8ke1F9YH06e3NjaGVtYTpVW0pdLHNjaGVtYVBhdGg6XzQuX2AkeyQuc2NoZW1hUGF0aH0keygwLF80LmdldFByb3BlcnR5KShRKX0keygwLF80LmdldFByb3BlcnR5KShKKX1gLGVyclNjaGVtYVBhdGg6YCR7JC5lcnJTY2hlbWFQYXRofS8ke1F9LyR7KDAsTUEuZXNjYXBlRnJhZ21lbnQpKEopfWB9fWlmKFkhPT12b2lkIDApe2lmKFg9PT12b2lkIDB8fFc9PT12b2lkIDB8fEc9PT12b2lkIDApdGhyb3cgRXJyb3IoJ1wic2NoZW1hUGF0aFwiLCBcImVyclNjaGVtYVBhdGhcIiBhbmQgXCJ0b3BTY2hlbWFSZWZcIiBhcmUgcmVxdWlyZWQgd2l0aCBcInNjaGVtYVwiJyk7cmV0dXJue3NjaGVtYTpZLHNjaGVtYVBhdGg6WCx0b3BTY2hlbWFSZWY6RyxlcnJTY2hlbWFQYXRoOld9fXRocm93IEVycm9yKCdlaXRoZXIgXCJrZXl3b3JkXCIgb3IgXCJzY2hlbWFcIiBtdXN0IGJlIHBhc3NlZCcpfUxBLmdldFN1YnNjaGVtYT1waTtmdW5jdGlvbiBkaSgkLFEse2RhdGFQcm9wOkosZGF0YVByb3BUeXBlOlksZGF0YTpYLGRhdGFUeXBlczpXLHByb3BlcnR5TmFtZTpHfSl7aWYoWCE9PXZvaWQgMCYmSiE9PXZvaWQgMCl0aHJvdyBFcnJvcignYm90aCBcImRhdGFcIiBhbmQgXCJkYXRhUHJvcFwiIHBhc3NlZCwgb25seSBvbmUgYWxsb3dlZCcpO2xldHtnZW46VX09UTtpZihKIT09dm9pZCAwKXtsZXR7ZXJyb3JQYXRoOnEsZGF0YVBhdGhBcnI6VixvcHRzOkJ9PVEsej1VLmxldChcImRhdGFcIixfNC5fYCR7US5kYXRhfSR7KDAsXzQuZ2V0UHJvcGVydHkpKEopfWAsITApO0goeiksJC5lcnJvclBhdGg9XzQuc3RyYCR7cX0keygwLE1BLmdldEVycm9yUGF0aCkoSixZLEIuanNQcm9wZXJ0eVN5bnRheCl9YCwkLnBhcmVudERhdGFQcm9wZXJ0eT1fNC5fYCR7Sn1gLCQuZGF0YVBhdGhBcnI9Wy4uLlYsJC5wYXJlbnREYXRhUHJvcGVydHldfWlmKFghPT12b2lkIDApe2xldCBxPVggaW5zdGFuY2VvZiBfNC5OYW1lP1g6VS5sZXQoXCJkYXRhXCIsWCwhMCk7aWYoSChxKSxHIT09dm9pZCAwKSQucHJvcGVydHlOYW1lPUd9aWYoVykkLmRhdGFUeXBlcz1XO2Z1bmN0aW9uIEgocSl7JC5kYXRhPXEsJC5kYXRhTGV2ZWw9US5kYXRhTGV2ZWwrMSwkLmRhdGFUeXBlcz1bXSxRLmRlZmluZWRQcm9wZXJ0aWVzPW5ldyBTZXQsJC5wYXJlbnREYXRhPVEuZGF0YSwkLmRhdGFOYW1lcz1bLi4uUS5kYXRhTmFtZXMscV19fUxBLmV4dGVuZFN1YnNjaGVtYURhdGE9ZGk7ZnVuY3Rpb24gaWkoJCx7anRkRGlzY3JpbWluYXRvcjpRLGp0ZE1ldGFkYXRhOkosY29tcG9zaXRlUnVsZTpZLGNyZWF0ZUVycm9yczpYLGFsbEVycm9yczpXfSl7aWYoWSE9PXZvaWQgMCkkLmNvbXBvc2l0ZVJ1bGU9WTtpZihYIT09dm9pZCAwKSQuY3JlYXRlRXJyb3JzPVg7aWYoVyE9PXZvaWQgMCkkLmFsbEVycm9ycz1XOyQuanRkRGlzY3JpbWluYXRvcj1RLCQuanRkTWV0YWRhdGE9Sn1MQS5leHRlbmRTdWJzY2hlbWFNb2RlPWlpfSk7dmFyIHlCPUkoKFl3JCxJQSk9PntJQS5leHBvcnRzPWZ1bmN0aW9uICQoUSxKKXtpZihRPT09SilyZXR1cm4hMDtpZihRJiZKJiZ0eXBlb2YgUT09XCJvYmplY3RcIiYmdHlwZW9mIEo9PVwib2JqZWN0XCIpe2lmKFEuY29uc3RydWN0b3IhPT1KLmNvbnN0cnVjdG9yKXJldHVybiExO3ZhciBZLFgsVztpZihBcnJheS5pc0FycmF5KFEpKXtpZihZPVEubGVuZ3RoLFkhPUoubGVuZ3RoKXJldHVybiExO2ZvcihYPVk7WC0tIT09MDspaWYoISQoUVtYXSxKW1hdKSlyZXR1cm4hMTtyZXR1cm4hMH1pZihRLmNvbnN0cnVjdG9yPT09UmVnRXhwKXJldHVybiBRLnNvdXJjZT09PUouc291cmNlJiZRLmZsYWdzPT09Si5mbGFncztpZihRLnZhbHVlT2YhPT1PYmplY3QucHJvdG90eXBlLnZhbHVlT2YpcmV0dXJuIFEudmFsdWVPZigpPT09Si52YWx1ZU9mKCk7aWYoUS50b1N0cmluZyE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpcmV0dXJuIFEudG9TdHJpbmcoKT09PUoudG9TdHJpbmcoKTtpZihXPU9iamVjdC5rZXlzKFEpLFk9Vy5sZW5ndGgsWSE9PU9iamVjdC5rZXlzKEopLmxlbmd0aClyZXR1cm4hMTtmb3IoWD1ZO1gtLSE9PTA7KWlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSixXW1hdKSlyZXR1cm4hMTtmb3IoWD1ZO1gtLSE9PTA7KXt2YXIgRz1XW1hdO2lmKCEkKFFbR10sSltHXSkpcmV0dXJuITF9cmV0dXJuITB9cmV0dXJuIFEhPT1RJiZKIT09Sn19KTt2YXIgUEE9SSgoV3ckLFJBKT0+e3ZhciB1MT1SQS5leHBvcnRzPWZ1bmN0aW9uKCQsUSxKKXtpZih0eXBlb2YgUT09XCJmdW5jdGlvblwiKUo9USxRPXt9O0o9US5jYnx8Sjt2YXIgWT10eXBlb2YgSj09XCJmdW5jdGlvblwiP0o6Si5wcmV8fGZ1bmN0aW9uKCl7fSxYPUoucG9zdHx8ZnVuY3Rpb24oKXt9O3ZXKFEsWSxYLCQsXCJcIiwkKX07dTEua2V5d29yZHM9e2FkZGl0aW9uYWxJdGVtczohMCxpdGVtczohMCxjb250YWluczohMCxhZGRpdGlvbmFsUHJvcGVydGllczohMCxwcm9wZXJ0eU5hbWVzOiEwLG5vdDohMCxpZjohMCx0aGVuOiEwLGVsc2U6ITB9O3UxLmFycmF5S2V5d29yZHM9e2l0ZW1zOiEwLGFsbE9mOiEwLGFueU9mOiEwLG9uZU9mOiEwfTt1MS5wcm9wc0tleXdvcmRzPXskZGVmczohMCxkZWZpbml0aW9uczohMCxwcm9wZXJ0aWVzOiEwLHBhdHRlcm5Qcm9wZXJ0aWVzOiEwLGRlcGVuZGVuY2llczohMH07dTEuc2tpcEtleXdvcmRzPXtkZWZhdWx0OiEwLGVudW06ITAsY29uc3Q6ITAscmVxdWlyZWQ6ITAsbWF4aW11bTohMCxtaW5pbXVtOiEwLGV4Y2x1c2l2ZU1heGltdW06ITAsZXhjbHVzaXZlTWluaW11bTohMCxtdWx0aXBsZU9mOiEwLG1heExlbmd0aDohMCxtaW5MZW5ndGg6ITAscGF0dGVybjohMCxmb3JtYXQ6ITAsbWF4SXRlbXM6ITAsbWluSXRlbXM6ITAsdW5pcXVlSXRlbXM6ITAsbWF4UHJvcGVydGllczohMCxtaW5Qcm9wZXJ0aWVzOiEwfTtmdW5jdGlvbiB2VygkLFEsSixZLFgsVyxHLFUsSCxxKXtpZihZJiZ0eXBlb2YgWT09XCJvYmplY3RcIiYmIUFycmF5LmlzQXJyYXkoWSkpe1EoWSxYLFcsRyxVLEgscSk7Zm9yKHZhciBWIGluIFkpe3ZhciBCPVlbVl07aWYoQXJyYXkuaXNBcnJheShCKSl7aWYoViBpbiB1MS5hcnJheUtleXdvcmRzKWZvcih2YXIgej0wO3o8Qi5sZW5ndGg7eisrKXZXKCQsUSxKLEJbel0sWCtcIi9cIitWK1wiL1wiK3osVyxYLFYsWSx6KX1lbHNlIGlmKFYgaW4gdTEucHJvcHNLZXl3b3Jkcyl7aWYoQiYmdHlwZW9mIEI9PVwib2JqZWN0XCIpZm9yKHZhciBOIGluIEIpdlcoJCxRLEosQltOXSxYK1wiL1wiK1YrXCIvXCIrb2koTiksVyxYLFYsWSxOKX1lbHNlIGlmKFYgaW4gdTEua2V5d29yZHN8fCQuYWxsS2V5cyYmIShWIGluIHUxLnNraXBLZXl3b3JkcykpdlcoJCxRLEosQixYK1wiL1wiK1YsVyxYLFYsWSl9SihZLFgsVyxHLFUsSCxxKX19ZnVuY3Rpb24gb2koJCl7cmV0dXJuICQucmVwbGFjZSgvfi9nLFwifjBcIikucmVwbGFjZSgvXFwvL2csXCJ+MVwiKX19KTt2YXIgdko9SSgoU0EpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFNBLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1NBLmdldFNjaGVtYVJlZnM9U0EucmVzb2x2ZVVybD1TQS5ub3JtYWxpemVJZD1TQS5fZ2V0RnVsbFBhdGg9U0EuZ2V0RnVsbFBhdGg9U0EuaW5saW5lUmVmPXZvaWQgMDt2YXIgdGk9cSQoKSxhaT15QigpLHNpPVBBKCksZWk9bmV3IFNldChbXCJ0eXBlXCIsXCJmb3JtYXRcIixcInBhdHRlcm5cIixcIm1heExlbmd0aFwiLFwibWluTGVuZ3RoXCIsXCJtYXhQcm9wZXJ0aWVzXCIsXCJtaW5Qcm9wZXJ0aWVzXCIsXCJtYXhJdGVtc1wiLFwibWluSXRlbXNcIixcIm1heGltdW1cIixcIm1pbmltdW1cIixcInVuaXF1ZUl0ZW1zXCIsXCJtdWx0aXBsZU9mXCIsXCJyZXF1aXJlZFwiLFwiZW51bVwiLFwiY29uc3RcIl0pO2Z1bmN0aW9uICRuKCQsUT0hMCl7aWYodHlwZW9mICQ9PVwiYm9vbGVhblwiKXJldHVybiEwO2lmKFE9PT0hMClyZXR1cm4hZ0IoJCk7aWYoIVEpcmV0dXJuITE7cmV0dXJuIEVBKCQpPD1RfVNBLmlubGluZVJlZj0kbjt2YXIgUW49bmV3IFNldChbXCIkcmVmXCIsXCIkcmVjdXJzaXZlUmVmXCIsXCIkcmVjdXJzaXZlQW5jaG9yXCIsXCIkZHluYW1pY1JlZlwiLFwiJGR5bmFtaWNBbmNob3JcIl0pO2Z1bmN0aW9uIGdCKCQpe2ZvcihsZXQgUSBpbiAkKXtpZihRbi5oYXMoUSkpcmV0dXJuITA7bGV0IEo9JFtRXTtpZihBcnJheS5pc0FycmF5KEopJiZKLnNvbWUoZ0IpKXJldHVybiEwO2lmKHR5cGVvZiBKPT1cIm9iamVjdFwiJiZnQihKKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBFQSgkKXtsZXQgUT0wO2ZvcihsZXQgSiBpbiAkKXtpZihKPT09XCIkcmVmXCIpcmV0dXJuIDEvMDtpZihRKyssZWkuaGFzKEopKWNvbnRpbnVlO2lmKHR5cGVvZiAkW0pdPT1cIm9iamVjdFwiKSgwLHRpLmVhY2hJdGVtKSgkW0pdLChZKT0+USs9RUEoWSkpO2lmKFE9PT0xLzApcmV0dXJuIDEvMH1yZXR1cm4gUX1mdW5jdGlvbiBiQSgkLFE9XCJcIixKKXtpZihKIT09ITEpUT1EOShRKTtsZXQgWT0kLnBhcnNlKFEpO3JldHVybiBfQSgkLFkpfVNBLmdldEZ1bGxQYXRoPWJBO2Z1bmN0aW9uIF9BKCQsUSl7cmV0dXJuICQuc2VyaWFsaXplKFEpLnNwbGl0KFwiI1wiKVswXStcIiNcIn1TQS5fZ2V0RnVsbFBhdGg9X0E7dmFyIEpuPS8jXFwvPyQvO2Z1bmN0aW9uIEQ5KCQpe3JldHVybiAkPyQucmVwbGFjZShKbixcIlwiKTpcIlwifVNBLm5vcm1hbGl6ZUlkPUQ5O2Z1bmN0aW9uIFhuKCQsUSxKKXtyZXR1cm4gSj1EOShKKSwkLnJlc29sdmUoUSxKKX1TQS5yZXNvbHZlVXJsPVhuO3ZhciBZbj0vXlthLXpfXVstYS16MC05Ll9dKiQvaTtmdW5jdGlvbiBXbigkLFEpe2lmKHR5cGVvZiAkPT1cImJvb2xlYW5cIilyZXR1cm57fTtsZXR7c2NoZW1hSWQ6Six1cmlSZXNvbHZlcjpZfT10aGlzLm9wdHMsWD1EOSgkW0pdfHxRKSxXPXtcIlwiOlh9LEc9YkEoWSxYLCExKSxVPXt9LEg9bmV3IFNldDtyZXR1cm4gc2koJCx7YWxsS2V5czohMH0sKEIseixOLHcpPT57aWYodz09PXZvaWQgMClyZXR1cm47bGV0IE89Ryt6LEQ9V1t3XTtpZih0eXBlb2YgQltKXT09XCJzdHJpbmdcIilEPU0uY2FsbCh0aGlzLEJbSl0pO2ouY2FsbCh0aGlzLEIuJGFuY2hvciksai5jYWxsKHRoaXMsQi4kZHluYW1pY0FuY2hvciksV1t6XT1EO2Z1bmN0aW9uIE0oQSl7bGV0IGs9dGhpcy5vcHRzLnVyaVJlc29sdmVyLnJlc29sdmU7aWYoQT1EOShEP2soRCxBKTpBKSxILmhhcyhBKSl0aHJvdyBWKEEpO0guYWRkKEEpO2xldCB1PXRoaXMucmVmc1tBXTtpZih0eXBlb2YgdT09XCJzdHJpbmdcIil1PXRoaXMucmVmc1t1XTtpZih0eXBlb2YgdT09XCJvYmplY3RcIilxKEIsdS5zY2hlbWEsQSk7ZWxzZSBpZihBIT09RDkoTykpaWYoQVswXT09PVwiI1wiKXEoQixVW0FdLEEpLFVbQV09QjtlbHNlIHRoaXMucmVmc1tBXT1PO3JldHVybiBBfWZ1bmN0aW9uIGooQSl7aWYodHlwZW9mIEE9PVwic3RyaW5nXCIpe2lmKCFZbi50ZXN0KEEpKXRocm93IEVycm9yKGBpbnZhbGlkIGFuY2hvciBcIiR7QX1cImApO00uY2FsbCh0aGlzLGAjJHtBfWApfX19KSxVO2Z1bmN0aW9uIHEoQix6LE4pe2lmKHohPT12b2lkIDAmJiFhaShCLHopKXRocm93IFYoTil9ZnVuY3Rpb24gVihCKXtyZXR1cm4gRXJyb3IoYHJlZmVyZW5jZSBcIiR7Qn1cIiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYWApfX1TQS5nZXRTY2hlbWFSZWZzPVdufSk7dmFyIHhKPUkoKGlBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShpQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtpQS5nZXREYXRhPWlBLktleXdvcmRDeHQ9aUEudmFsaWRhdGVGdW5jdGlvbkNvZGU9dm9pZCAwO3ZhciBmQT1vaigpLHZBPWtKKCksdUI9U0IoKSxDVz1rSigpLFZuPXFBKCksVEo9WkEoKSxoQj1BQSgpLHA9USQoKSxhPUoxKCksQm49dkooKSxYMT1xJCgpLENKPVNKKCk7ZnVuY3Rpb24gem4oJCl7aWYoaEEoJCkpe2lmKHVBKCQpLGdBKCQpKXtPbigkKTtyZXR1cm59fXlBKCQsKCk9PigwLGZBLnRvcEJvb2xPckVtcHR5U2NoZW1hKSgkKSl9aUEudmFsaWRhdGVGdW5jdGlvbkNvZGU9em47ZnVuY3Rpb24geUEoe2dlbjokLHZhbGlkYXRlTmFtZTpRLHNjaGVtYTpKLHNjaGVtYUVudjpZLG9wdHM6WH0sVyl7aWYoWC5jb2RlLmVzNSkkLmZ1bmMoUSxwLl9gJHthLmRlZmF1bHQuZGF0YX0sICR7YS5kZWZhdWx0LnZhbEN4dH1gLFkuJGFzeW5jLCgpPT57JC5jb2RlKHAuX2BcInVzZSBzdHJpY3RcIjsgJHtDQShKLFgpfWApLHduKCQsWCksJC5jb2RlKFcpfSk7ZWxzZSAkLmZ1bmMoUSxwLl9gJHthLmRlZmF1bHQuZGF0YX0sICR7Tm4oWCl9YCxZLiRhc3luYywoKT0+JC5jb2RlKENBKEosWCkpLmNvZGUoVykpfWZ1bmN0aW9uIE5uKCQpe3JldHVybiBwLl9geyR7YS5kZWZhdWx0Lmluc3RhbmNlUGF0aH09XCJcIiwgJHthLmRlZmF1bHQucGFyZW50RGF0YX0sICR7YS5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eX0sICR7YS5kZWZhdWx0LnJvb3REYXRhfT0ke2EuZGVmYXVsdC5kYXRhfSR7JC5keW5hbWljUmVmP3AuX2AsICR7YS5kZWZhdWx0LmR5bmFtaWNBbmNob3JzfT17fWA6cC5uaWx9fT17fWB9ZnVuY3Rpb24gd24oJCxRKXskLmlmKGEuZGVmYXVsdC52YWxDeHQsKCk9PntpZigkLnZhcihhLmRlZmF1bHQuaW5zdGFuY2VQYXRoLHAuX2Ake2EuZGVmYXVsdC52YWxDeHR9LiR7YS5kZWZhdWx0Lmluc3RhbmNlUGF0aH1gKSwkLnZhcihhLmRlZmF1bHQucGFyZW50RGF0YSxwLl9gJHthLmRlZmF1bHQudmFsQ3h0fS4ke2EuZGVmYXVsdC5wYXJlbnREYXRhfWApLCQudmFyKGEuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHkscC5fYCR7YS5kZWZhdWx0LnZhbEN4dH0uJHthLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5fWApLCQudmFyKGEuZGVmYXVsdC5yb290RGF0YSxwLl9gJHthLmRlZmF1bHQudmFsQ3h0fS4ke2EuZGVmYXVsdC5yb290RGF0YX1gKSxRLmR5bmFtaWNSZWYpJC52YXIoYS5kZWZhdWx0LmR5bmFtaWNBbmNob3JzLHAuX2Ake2EuZGVmYXVsdC52YWxDeHR9LiR7YS5kZWZhdWx0LmR5bmFtaWNBbmNob3JzfWApfSwoKT0+e2lmKCQudmFyKGEuZGVmYXVsdC5pbnN0YW5jZVBhdGgscC5fYFwiXCJgKSwkLnZhcihhLmRlZmF1bHQucGFyZW50RGF0YSxwLl9gdW5kZWZpbmVkYCksJC52YXIoYS5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eSxwLl9gdW5kZWZpbmVkYCksJC52YXIoYS5kZWZhdWx0LnJvb3REYXRhLGEuZGVmYXVsdC5kYXRhKSxRLmR5bmFtaWNSZWYpJC52YXIoYS5kZWZhdWx0LmR5bmFtaWNBbmNob3JzLHAuX2B7fWApfSl9ZnVuY3Rpb24gT24oJCl7bGV0e3NjaGVtYTpRLG9wdHM6SixnZW46WX09JDt5QSgkLCgpPT57aWYoSi4kY29tbWVudCYmUS4kY29tbWVudClsQSgkKTtpZihMbigkKSxZLmxldChhLmRlZmF1bHQudkVycm9ycyxudWxsKSxZLmxldChhLmRlZmF1bHQuZXJyb3JzLDApLEoudW5ldmFsdWF0ZWQpRG4oJCk7bUEoJCksSW4oJCl9KTtyZXR1cm59ZnVuY3Rpb24gRG4oJCl7bGV0e2dlbjpRLHZhbGlkYXRlTmFtZTpKfT0kOyQuZXZhbHVhdGVkPVEuY29uc3QoXCJldmFsdWF0ZWRcIixwLl9gJHtKfS5ldmFsdWF0ZWRgKSxRLmlmKHAuX2AkeyQuZXZhbHVhdGVkfS5keW5hbWljUHJvcHNgLCgpPT5RLmFzc2lnbihwLl9gJHskLmV2YWx1YXRlZH0ucHJvcHNgLHAuX2B1bmRlZmluZWRgKSksUS5pZihwLl9gJHskLmV2YWx1YXRlZH0uZHluYW1pY0l0ZW1zYCwoKT0+US5hc3NpZ24ocC5fYCR7JC5ldmFsdWF0ZWR9Lml0ZW1zYCxwLl9gdW5kZWZpbmVkYCkpfWZ1bmN0aW9uIENBKCQsUSl7bGV0IEo9dHlwZW9mICQ9PVwib2JqZWN0XCImJiRbUS5zY2hlbWFJZF07cmV0dXJuIEomJihRLmNvZGUuc291cmNlfHxRLmNvZGUucHJvY2Vzcyk/cC5fYC8qIyBzb3VyY2VVUkw9JHtKfSAqL2A6cC5uaWx9ZnVuY3Rpb24gRm4oJCxRKXtpZihoQSgkKSl7aWYodUEoJCksZ0EoJCkpe1puKCQsUSk7cmV0dXJufX0oMCxmQS5ib29sT3JFbXB0eVNjaGVtYSkoJCxRKX1mdW5jdGlvbiBnQSh7c2NoZW1hOiQsc2VsZjpRfSl7aWYodHlwZW9mICQ9PVwiYm9vbGVhblwiKXJldHVybiEkO2ZvcihsZXQgSiBpbiAkKWlmKFEuUlVMRVMuYWxsW0pdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGhBKCQpe3JldHVybiB0eXBlb2YgJC5zY2hlbWEhPVwiYm9vbGVhblwifWZ1bmN0aW9uIFpuKCQsUSl7bGV0e3NjaGVtYTpKLGdlbjpZLG9wdHM6WH09JDtpZihYLiRjb21tZW50JiZKLiRjb21tZW50KWxBKCQpO2puKCQpLEFuKCQpO2xldCBXPVkuY29uc3QoXCJfZXJyc1wiLGEuZGVmYXVsdC5lcnJvcnMpO21BKCQsVyksWS52YXIoUSxwLl9gJHtXfSA9PT0gJHthLmRlZmF1bHQuZXJyb3JzfWApfWZ1bmN0aW9uIHVBKCQpeygwLFgxLmNoZWNrVW5rbm93blJ1bGVzKSgkKSxNbigkKX1mdW5jdGlvbiBtQSgkLFEpe2lmKCQub3B0cy5qdGQpcmV0dXJuIFRBKCQsW10sITEsUSk7bGV0IEo9KDAsdkEuZ2V0U2NoZW1hVHlwZXMpKCQuc2NoZW1hKSxZPSgwLHZBLmNvZXJjZUFuZENoZWNrRGF0YVR5cGUpKCQsSik7VEEoJCxKLCFZLFEpfWZ1bmN0aW9uIE1uKCQpe2xldHtzY2hlbWE6USxlcnJTY2hlbWFQYXRoOkosb3B0czpZLHNlbGY6WH09JDtpZihRLiRyZWYmJlkuaWdub3JlS2V5d29yZHNXaXRoUmVmJiYoMCxYMS5zY2hlbWFIYXNSdWxlc0J1dFJlZikoUSxYLlJVTEVTKSlYLmxvZ2dlci53YXJuKGAkcmVmOiBrZXl3b3JkcyBpZ25vcmVkIGluIHNjaGVtYSBhdCBwYXRoIFwiJHtKfVwiYCl9ZnVuY3Rpb24gTG4oJCl7bGV0e3NjaGVtYTpRLG9wdHM6Sn09JDtpZihRLmRlZmF1bHQhPT12b2lkIDAmJkoudXNlRGVmYXVsdHMmJkouc3RyaWN0U2NoZW1hKSgwLFgxLmNoZWNrU3RyaWN0TW9kZSkoJCxcImRlZmF1bHQgaXMgaWdub3JlZCBpbiB0aGUgc2NoZW1hIHJvb3RcIil9ZnVuY3Rpb24gam4oJCl7bGV0IFE9JC5zY2hlbWFbJC5vcHRzLnNjaGVtYUlkXTtpZihRKSQuYmFzZUlkPSgwLEJuLnJlc29sdmVVcmwpKCQub3B0cy51cmlSZXNvbHZlciwkLmJhc2VJZCxRKX1mdW5jdGlvbiBBbigkKXtpZigkLnNjaGVtYS4kYXN5bmMmJiEkLnNjaGVtYUVudi4kYXN5bmMpdGhyb3cgRXJyb3IoXCJhc3luYyBzY2hlbWEgaW4gc3luYyBzY2hlbWFcIil9ZnVuY3Rpb24gbEEoe2dlbjokLHNjaGVtYUVudjpRLHNjaGVtYTpKLGVyclNjaGVtYVBhdGg6WSxvcHRzOlh9KXtsZXQgVz1KLiRjb21tZW50O2lmKFguJGNvbW1lbnQ9PT0hMCkkLmNvZGUocC5fYCR7YS5kZWZhdWx0LnNlbGZ9LmxvZ2dlci5sb2coJHtXfSlgKTtlbHNlIGlmKHR5cGVvZiBYLiRjb21tZW50PT1cImZ1bmN0aW9uXCIpe2xldCBHPXAuc3RyYCR7WX0vJGNvbW1lbnRgLFU9JC5zY29wZVZhbHVlKFwicm9vdFwiLHtyZWY6US5yb290fSk7JC5jb2RlKHAuX2Ake2EuZGVmYXVsdC5zZWxmfS5vcHRzLiRjb21tZW50KCR7V30sICR7R30sICR7VX0uc2NoZW1hKWApfX1mdW5jdGlvbiBJbigkKXtsZXR7Z2VuOlEsc2NoZW1hRW52OkosdmFsaWRhdGVOYW1lOlksVmFsaWRhdGlvbkVycm9yOlgsb3B0czpXfT0kO2lmKEouJGFzeW5jKVEuaWYocC5fYCR7YS5kZWZhdWx0LmVycm9yc30gPT09IDBgLCgpPT5RLnJldHVybihhLmRlZmF1bHQuZGF0YSksKCk9PlEudGhyb3cocC5fYG5ldyAke1h9KCR7YS5kZWZhdWx0LnZFcnJvcnN9KWApKTtlbHNle2lmKFEuYXNzaWduKHAuX2Ake1l9LmVycm9yc2AsYS5kZWZhdWx0LnZFcnJvcnMpLFcudW5ldmFsdWF0ZWQpUm4oJCk7US5yZXR1cm4ocC5fYCR7YS5kZWZhdWx0LmVycm9yc30gPT09IDBgKX19ZnVuY3Rpb24gUm4oe2dlbjokLGV2YWx1YXRlZDpRLHByb3BzOkosaXRlbXM6WX0pe2lmKEogaW5zdGFuY2VvZiBwLk5hbWUpJC5hc3NpZ24ocC5fYCR7UX0ucHJvcHNgLEopO2lmKFkgaW5zdGFuY2VvZiBwLk5hbWUpJC5hc3NpZ24ocC5fYCR7UX0uaXRlbXNgLFkpfWZ1bmN0aW9uIFRBKCQsUSxKLFkpe2xldHtnZW46WCxzY2hlbWE6VyxkYXRhOkcsYWxsRXJyb3JzOlUsb3B0czpILHNlbGY6cX09JCx7UlVMRVM6Vn09cTtpZihXLiRyZWYmJihILmlnbm9yZUtleXdvcmRzV2l0aFJlZnx8ISgwLFgxLnNjaGVtYUhhc1J1bGVzQnV0UmVmKShXLFYpKSl7WC5ibG9jaygoKT0+cEEoJCxcIiRyZWZcIixWLmFsbC4kcmVmLmRlZmluaXRpb24pKTtyZXR1cm59aWYoIUguanRkKVBuKCQsUSk7WC5ibG9jaygoKT0+e2ZvcihsZXQgeiBvZiBWLnJ1bGVzKUIoeik7QihWLnBvc3QpfSk7ZnVuY3Rpb24gQih6KXtpZighKDAsdUIuc2hvdWxkVXNlR3JvdXApKFcseikpcmV0dXJuO2lmKHoudHlwZSl7aWYoWC5pZigoMCxDVy5jaGVja0RhdGFUeXBlKSh6LnR5cGUsRyxILnN0cmljdE51bWJlcnMpKSx4QSgkLHopLFEubGVuZ3RoPT09MSYmUVswXT09PXoudHlwZSYmSilYLmVsc2UoKSwoMCxDVy5yZXBvcnRUeXBlRXJyb3IpKCQpO1guZW5kSWYoKX1lbHNlIHhBKCQseik7aWYoIVUpWC5pZihwLl9gJHthLmRlZmF1bHQuZXJyb3JzfSA9PT0gJHtZfHwwfWApfX1mdW5jdGlvbiB4QSgkLFEpe2xldHtnZW46SixzY2hlbWE6WSxvcHRzOnt1c2VEZWZhdWx0czpYfX09JDtpZihYKSgwLFZuLmFzc2lnbkRlZmF1bHRzKSgkLFEudHlwZSk7Si5ibG9jaygoKT0+e2ZvcihsZXQgVyBvZiBRLnJ1bGVzKWlmKCgwLHVCLnNob3VsZFVzZVJ1bGUpKFksVykpcEEoJCxXLmtleXdvcmQsVy5kZWZpbml0aW9uLFEudHlwZSl9KX1mdW5jdGlvbiBQbigkLFEpe2lmKCQuc2NoZW1hRW52Lm1ldGF8fCEkLm9wdHMuc3RyaWN0VHlwZXMpcmV0dXJuO2lmKEVuKCQsUSksISQub3B0cy5hbGxvd1VuaW9uVHlwZXMpYm4oJCxRKTtfbigkLCQuZGF0YVR5cGVzKX1mdW5jdGlvbiBFbigkLFEpe2lmKCFRLmxlbmd0aClyZXR1cm47aWYoISQuZGF0YVR5cGVzLmxlbmd0aCl7JC5kYXRhVHlwZXM9UTtyZXR1cm59US5mb3JFYWNoKChKKT0+e2lmKCFjQSgkLmRhdGFUeXBlcyxKKSltQigkLGB0eXBlIFwiJHtKfVwiIG5vdCBhbGxvd2VkIGJ5IGNvbnRleHQgXCIkeyQuZGF0YVR5cGVzLmpvaW4oXCIsXCIpfVwiYCl9KSxrbigkLFEpfWZ1bmN0aW9uIGJuKCQsUSl7aWYoUS5sZW5ndGg+MSYmIShRLmxlbmd0aD09PTImJlEuaW5jbHVkZXMoXCJudWxsXCIpKSltQigkLFwidXNlIGFsbG93VW5pb25UeXBlcyB0byBhbGxvdyB1bmlvbiB0eXBlIGtleXdvcmRcIil9ZnVuY3Rpb24gX24oJCxRKXtsZXQgSj0kLnNlbGYuUlVMRVMuYWxsO2ZvcihsZXQgWSBpbiBKKXtsZXQgWD1KW1ldO2lmKHR5cGVvZiBYPT1cIm9iamVjdFwiJiYoMCx1Qi5zaG91bGRVc2VSdWxlKSgkLnNjaGVtYSxYKSl7bGV0e3R5cGU6V309WC5kZWZpbml0aW9uO2lmKFcubGVuZ3RoJiYhVy5zb21lKChHKT0+U24oUSxHKSkpbUIoJCxgbWlzc2luZyB0eXBlIFwiJHtXLmpvaW4oXCIsXCIpfVwiIGZvciBrZXl3b3JkIFwiJHtZfVwiYCl9fX1mdW5jdGlvbiBTbigkLFEpe3JldHVybiAkLmluY2x1ZGVzKFEpfHxRPT09XCJudW1iZXJcIiYmJC5pbmNsdWRlcyhcImludGVnZXJcIil9ZnVuY3Rpb24gY0EoJCxRKXtyZXR1cm4gJC5pbmNsdWRlcyhRKXx8UT09PVwiaW50ZWdlclwiJiYkLmluY2x1ZGVzKFwibnVtYmVyXCIpfWZ1bmN0aW9uIGtuKCQsUSl7bGV0IEo9W107Zm9yKGxldCBZIG9mICQuZGF0YVR5cGVzKWlmKGNBKFEsWSkpSi5wdXNoKFkpO2Vsc2UgaWYoUS5pbmNsdWRlcyhcImludGVnZXJcIikmJlk9PT1cIm51bWJlclwiKUoucHVzaChcImludGVnZXJcIik7JC5kYXRhVHlwZXM9Sn1mdW5jdGlvbiBtQigkLFEpe2xldCBKPSQuc2NoZW1hRW52LmJhc2VJZCskLmVyclNjaGVtYVBhdGg7USs9YCBhdCBcIiR7Sn1cIiAoc3RyaWN0VHlwZXMpYCwoMCxYMS5jaGVja1N0cmljdE1vZGUpKCQsUSwkLm9wdHMuc3RyaWN0VHlwZXMpfWNsYXNzIGxCe2NvbnN0cnVjdG9yKCQsUSxKKXtpZigoMCxUSi52YWxpZGF0ZUtleXdvcmRVc2FnZSkoJCxRLEopLHRoaXMuZ2VuPSQuZ2VuLHRoaXMuYWxsRXJyb3JzPSQuYWxsRXJyb3JzLHRoaXMua2V5d29yZD1KLHRoaXMuZGF0YT0kLmRhdGEsdGhpcy5zY2hlbWE9JC5zY2hlbWFbSl0sdGhpcy4kZGF0YT1RLiRkYXRhJiYkLm9wdHMuJGRhdGEmJnRoaXMuc2NoZW1hJiZ0aGlzLnNjaGVtYS4kZGF0YSx0aGlzLnNjaGVtYVZhbHVlPSgwLFgxLnNjaGVtYVJlZk9yVmFsKSgkLHRoaXMuc2NoZW1hLEosdGhpcy4kZGF0YSksdGhpcy5zY2hlbWFUeXBlPVEuc2NoZW1hVHlwZSx0aGlzLnBhcmVudFNjaGVtYT0kLnNjaGVtYSx0aGlzLnBhcmFtcz17fSx0aGlzLml0PSQsdGhpcy5kZWY9USx0aGlzLiRkYXRhKXRoaXMuc2NoZW1hQ29kZT0kLmdlbi5jb25zdChcInZTY2hlbWFcIixkQSh0aGlzLiRkYXRhLCQpKTtlbHNlIGlmKHRoaXMuc2NoZW1hQ29kZT10aGlzLnNjaGVtYVZhbHVlLCEoMCxUSi52YWxpZFNjaGVtYVR5cGUpKHRoaXMuc2NoZW1hLFEuc2NoZW1hVHlwZSxRLmFsbG93VW5kZWZpbmVkKSl0aHJvdyBFcnJvcihgJHtKfSB2YWx1ZSBtdXN0IGJlICR7SlNPTi5zdHJpbmdpZnkoUS5zY2hlbWFUeXBlKX1gKTtpZihcImNvZGVcImluIFE/US50cmFja0Vycm9yczpRLmVycm9ycyE9PSExKXRoaXMuZXJyc0NvdW50PSQuZ2VuLmNvbnN0KFwiX2VycnNcIixhLmRlZmF1bHQuZXJyb3JzKX1yZXN1bHQoJCxRLEope3RoaXMuZmFpbFJlc3VsdCgoMCxwLm5vdCkoJCksUSxKKX1mYWlsUmVzdWx0KCQsUSxKKXtpZih0aGlzLmdlbi5pZigkKSxKKUooKTtlbHNlIHRoaXMuZXJyb3IoKTtpZihRKXtpZih0aGlzLmdlbi5lbHNlKCksUSgpLHRoaXMuYWxsRXJyb3JzKXRoaXMuZ2VuLmVuZElmKCl9ZWxzZSBpZih0aGlzLmFsbEVycm9ycyl0aGlzLmdlbi5lbmRJZigpO2Vsc2UgdGhpcy5nZW4uZWxzZSgpfXBhc3MoJCxRKXt0aGlzLmZhaWxSZXN1bHQoKDAscC5ub3QpKCQpLHZvaWQgMCxRKX1mYWlsKCQpe2lmKCQ9PT12b2lkIDApe2lmKHRoaXMuZXJyb3IoKSwhdGhpcy5hbGxFcnJvcnMpdGhpcy5nZW4uaWYoITEpO3JldHVybn1pZih0aGlzLmdlbi5pZigkKSx0aGlzLmVycm9yKCksdGhpcy5hbGxFcnJvcnMpdGhpcy5nZW4uZW5kSWYoKTtlbHNlIHRoaXMuZ2VuLmVsc2UoKX1mYWlsJGRhdGEoJCl7aWYoIXRoaXMuJGRhdGEpcmV0dXJuIHRoaXMuZmFpbCgkKTtsZXR7c2NoZW1hQ29kZTpRfT10aGlzO3RoaXMuZmFpbChwLl9gJHtRfSAhPT0gdW5kZWZpbmVkICYmICgkeygwLHAub3IpKHRoaXMuaW52YWxpZCRkYXRhKCksJCl9KWApfWVycm9yKCQsUSxKKXtpZihRKXt0aGlzLnNldFBhcmFtcyhRKSx0aGlzLl9lcnJvcigkLEopLHRoaXMuc2V0UGFyYW1zKHt9KTtyZXR1cm59dGhpcy5fZXJyb3IoJCxKKX1fZXJyb3IoJCxRKXsoJD9DSi5yZXBvcnRFeHRyYUVycm9yOkNKLnJlcG9ydEVycm9yKSh0aGlzLHRoaXMuZGVmLmVycm9yLFEpfSRkYXRhRXJyb3IoKXsoMCxDSi5yZXBvcnRFcnJvcikodGhpcyx0aGlzLmRlZi4kZGF0YUVycm9yfHxDSi5rZXl3b3JkJERhdGFFcnJvcil9cmVzZXQoKXtpZih0aGlzLmVycnNDb3VudD09PXZvaWQgMCl0aHJvdyBFcnJvcignYWRkIFwidHJhY2tFcnJvcnNcIiB0byBrZXl3b3JkIGRlZmluaXRpb24nKTsoMCxDSi5yZXNldEVycm9yc0NvdW50KSh0aGlzLmdlbix0aGlzLmVycnNDb3VudCl9b2soJCl7aWYoIXRoaXMuYWxsRXJyb3JzKXRoaXMuZ2VuLmlmKCQpfXNldFBhcmFtcygkLFEpe2lmKFEpT2JqZWN0LmFzc2lnbih0aGlzLnBhcmFtcywkKTtlbHNlIHRoaXMucGFyYW1zPSR9YmxvY2skZGF0YSgkLFEsSj1wLm5pbCl7dGhpcy5nZW4uYmxvY2soKCk9Pnt0aGlzLmNoZWNrJGRhdGEoJCxKKSxRKCl9KX1jaGVjayRkYXRhKCQ9cC5uaWwsUT1wLm5pbCl7aWYoIXRoaXMuJGRhdGEpcmV0dXJuO2xldHtnZW46SixzY2hlbWFDb2RlOlksc2NoZW1hVHlwZTpYLGRlZjpXfT10aGlzO2lmKEouaWYoKDAscC5vcikocC5fYCR7WX0gPT09IHVuZGVmaW5lZGAsUSkpLCQhPT1wLm5pbClKLmFzc2lnbigkLCEwKTtpZihYLmxlbmd0aHx8Vy52YWxpZGF0ZVNjaGVtYSl7aWYoSi5lbHNlSWYodGhpcy5pbnZhbGlkJGRhdGEoKSksdGhpcy4kZGF0YUVycm9yKCksJCE9PXAubmlsKUouYXNzaWduKCQsITEpfUouZWxzZSgpfWludmFsaWQkZGF0YSgpe2xldHtnZW46JCxzY2hlbWFDb2RlOlEsc2NoZW1hVHlwZTpKLGRlZjpZLGl0Olh9PXRoaXM7cmV0dXJuKDAscC5vcikoVygpLEcoKSk7ZnVuY3Rpb24gVygpe2lmKEoubGVuZ3RoKXtpZighKFEgaW5zdGFuY2VvZiBwLk5hbWUpKXRocm93IEVycm9yKFwiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yXCIpO2xldCBVPUFycmF5LmlzQXJyYXkoSik/SjpbSl07cmV0dXJuIHAuX2AkeygwLENXLmNoZWNrRGF0YVR5cGVzKShVLFEsWC5vcHRzLnN0cmljdE51bWJlcnMsQ1cuRGF0YVR5cGUuV3JvbmcpfWB9cmV0dXJuIHAubmlsfWZ1bmN0aW9uIEcoKXtpZihZLnZhbGlkYXRlU2NoZW1hKXtsZXQgVT0kLnNjb3BlVmFsdWUoXCJ2YWxpZGF0ZSRkYXRhXCIse3JlZjpZLnZhbGlkYXRlU2NoZW1hfSk7cmV0dXJuIHAuX2AhJHtVfSgke1F9KWB9cmV0dXJuIHAubmlsfX1zdWJzY2hlbWEoJCxRKXtsZXQgSj0oMCxoQi5nZXRTdWJzY2hlbWEpKHRoaXMuaXQsJCk7KDAsaEIuZXh0ZW5kU3Vic2NoZW1hRGF0YSkoSix0aGlzLml0LCQpLCgwLGhCLmV4dGVuZFN1YnNjaGVtYU1vZGUpKEosJCk7bGV0IFk9ey4uLnRoaXMuaXQsLi4uSixpdGVtczp2b2lkIDAscHJvcHM6dm9pZCAwfTtyZXR1cm4gRm4oWSxRKSxZfW1lcmdlRXZhbHVhdGVkKCQsUSl7bGV0e2l0OkosZ2VuOll9PXRoaXM7aWYoIUoub3B0cy51bmV2YWx1YXRlZClyZXR1cm47aWYoSi5wcm9wcyE9PSEwJiYkLnByb3BzIT09dm9pZCAwKUoucHJvcHM9WDEubWVyZ2VFdmFsdWF0ZWQucHJvcHMoWSwkLnByb3BzLEoucHJvcHMsUSk7aWYoSi5pdGVtcyE9PSEwJiYkLml0ZW1zIT09dm9pZCAwKUouaXRlbXM9WDEubWVyZ2VFdmFsdWF0ZWQuaXRlbXMoWSwkLml0ZW1zLEouaXRlbXMsUSl9bWVyZ2VWYWxpZEV2YWx1YXRlZCgkLFEpe2xldHtpdDpKLGdlbjpZfT10aGlzO2lmKEoub3B0cy51bmV2YWx1YXRlZCYmKEoucHJvcHMhPT0hMHx8Si5pdGVtcyE9PSEwKSlyZXR1cm4gWS5pZihRLCgpPT50aGlzLm1lcmdlRXZhbHVhdGVkKCQscC5OYW1lKSksITB9fWlBLktleXdvcmRDeHQ9bEI7ZnVuY3Rpb24gcEEoJCxRLEosWSl7bGV0IFg9bmV3IGxCKCQsSixRKTtpZihcImNvZGVcImluIEopSi5jb2RlKFgsWSk7ZWxzZSBpZihYLiRkYXRhJiZKLnZhbGlkYXRlKSgwLFRKLmZ1bmNLZXl3b3JkQ29kZSkoWCxKKTtlbHNlIGlmKFwibWFjcm9cImluIEopKDAsVEoubWFjcm9LZXl3b3JkQ29kZSkoWCxKKTtlbHNlIGlmKEouY29tcGlsZXx8Si52YWxpZGF0ZSkoMCxUSi5mdW5jS2V5d29yZENvZGUpKFgsSil9dmFyIHZuPS9eXFwvKD86W15+XXx+MHx+MSkqJC8sQ249L14oWzAtOV0rKSgjfFxcLyg/Oltefl18fjB8fjEpKik/JC87ZnVuY3Rpb24gZEEoJCx7ZGF0YUxldmVsOlEsZGF0YU5hbWVzOkosZGF0YVBhdGhBcnI6WX0pe2xldCBYLFc7aWYoJD09PVwiXCIpcmV0dXJuIGEuZGVmYXVsdC5yb290RGF0YTtpZigkWzBdPT09XCIvXCIpe2lmKCF2bi50ZXN0KCQpKXRocm93IEVycm9yKGBJbnZhbGlkIEpTT04tcG9pbnRlcjogJHskfWApO1g9JCxXPWEuZGVmYXVsdC5yb290RGF0YX1lbHNle2xldCBxPUNuLmV4ZWMoJCk7aWYoIXEpdGhyb3cgRXJyb3IoYEludmFsaWQgSlNPTi1wb2ludGVyOiAkeyR9YCk7bGV0IFY9K3FbMV07aWYoWD1xWzJdLFg9PT1cIiNcIil7aWYoVj49USl0aHJvdyBFcnJvcihIKFwicHJvcGVydHkvaW5kZXhcIixWKSk7cmV0dXJuIFlbUS1WXX1pZihWPlEpdGhyb3cgRXJyb3IoSChcImRhdGFcIixWKSk7aWYoVz1KW1EtVl0sIVgpcmV0dXJuIFd9bGV0IEc9VyxVPVguc3BsaXQoXCIvXCIpO2ZvcihsZXQgcSBvZiBVKWlmKHEpVz1wLl9gJHtXfSR7KDAscC5nZXRQcm9wZXJ0eSkoKDAsWDEudW5lc2NhcGVKc29uUG9pbnRlcikocSkpfWAsRz1wLl9gJHtHfSAmJiAke1d9YDtyZXR1cm4gRztmdW5jdGlvbiBIKHEsVil7cmV0dXJuYENhbm5vdCBhY2Nlc3MgJHtxfSAke1Z9IGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAke1F9YH19aUEuZ2V0RGF0YT1kQX0pO3ZhciBUVz1JKChvQSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkob0EsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Y2xhc3MgckEgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcigkKXtzdXBlcihcInZhbGlkYXRpb24gZmFpbGVkXCIpO3RoaXMuZXJyb3JzPSQsdGhpcy5hanY9dGhpcy52YWxpZGF0aW9uPSEwfX1vQS5kZWZhdWx0PXJBfSk7dmFyIGZKPUkoKGFBKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhQSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgY0I9dkooKTtjbGFzcyB0QSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCQsUSxKLFkpe3N1cGVyKFl8fGBjYW4ndCByZXNvbHZlIHJlZmVyZW5jZSAke0p9IGZyb20gaWQgJHtRfWApO3RoaXMubWlzc2luZ1JlZj0oMCxjQi5yZXNvbHZlVXJsKSgkLFEsSiksdGhpcy5taXNzaW5nU2NoZW1hPSgwLGNCLm5vcm1hbGl6ZUlkKSgoMCxjQi5nZXRGdWxsUGF0aCkoJCx0aGlzLm1pc3NpbmdSZWYpKX19YUEuZGVmYXVsdD10QX0pO3ZhciBmVz1JKCgkSSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoJEksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7JEkucmVzb2x2ZVNjaGVtYT0kSS5nZXRDb21waWxpbmdTY2hlbWE9JEkucmVzb2x2ZVJlZj0kSS5jb21waWxlU2NoZW1hPSRJLlNjaGVtYUVudj12b2lkIDA7dmFyIHc0PVEkKCksZ249VFcoKSx5MD1KMSgpLE80PXZKKCksc0E9cSQoKSxobj14SigpO2NsYXNzIHlKe2NvbnN0cnVjdG9yKCQpe3ZhciBRO3RoaXMucmVmcz17fSx0aGlzLmR5bmFtaWNBbmNob3JzPXt9O2xldCBKO2lmKHR5cGVvZiAkLnNjaGVtYT09XCJvYmplY3RcIilKPSQuc2NoZW1hO3RoaXMuc2NoZW1hPSQuc2NoZW1hLHRoaXMuc2NoZW1hSWQ9JC5zY2hlbWFJZCx0aGlzLnJvb3Q9JC5yb290fHx0aGlzLHRoaXMuYmFzZUlkPShRPSQuYmFzZUlkKSE9PW51bGwmJlEhPT12b2lkIDA/UTooMCxPNC5ub3JtYWxpemVJZCkoSj09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkpbJC5zY2hlbWFJZHx8XCIkaWRcIl0pLHRoaXMuc2NoZW1hUGF0aD0kLnNjaGVtYVBhdGgsdGhpcy5sb2NhbFJlZnM9JC5sb2NhbFJlZnMsdGhpcy5tZXRhPSQubWV0YSx0aGlzLiRhc3luYz1KPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si4kYXN5bmMsdGhpcy5yZWZzPXt9fX0kSS5TY2hlbWFFbnY9eUo7ZnVuY3Rpb24gZEIoJCl7bGV0IFE9ZUEuY2FsbCh0aGlzLCQpO2lmKFEpcmV0dXJuIFE7bGV0IEo9KDAsTzQuZ2V0RnVsbFBhdGgpKHRoaXMub3B0cy51cmlSZXNvbHZlciwkLnJvb3QuYmFzZUlkKSx7ZXM1OlksbGluZXM6WH09dGhpcy5vcHRzLmNvZGUse293blByb3BlcnRpZXM6V309dGhpcy5vcHRzLEc9bmV3IHc0LkNvZGVHZW4odGhpcy5zY29wZSx7ZXM1OlksbGluZXM6WCxvd25Qcm9wZXJ0aWVzOld9KSxVO2lmKCQuJGFzeW5jKVU9Ry5zY29wZVZhbHVlKFwiRXJyb3JcIix7cmVmOmduLmRlZmF1bHQsY29kZTp3NC5fYHJlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3JcIikuZGVmYXVsdGB9KTtsZXQgSD1HLnNjb3BlTmFtZShcInZhbGlkYXRlXCIpOyQudmFsaWRhdGVOYW1lPUg7bGV0IHE9e2dlbjpHLGFsbEVycm9yczp0aGlzLm9wdHMuYWxsRXJyb3JzLGRhdGE6eTAuZGVmYXVsdC5kYXRhLHBhcmVudERhdGE6eTAuZGVmYXVsdC5wYXJlbnREYXRhLHBhcmVudERhdGFQcm9wZXJ0eTp5MC5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eSxkYXRhTmFtZXM6W3kwLmRlZmF1bHQuZGF0YV0sZGF0YVBhdGhBcnI6W3c0Lm5pbF0sZGF0YUxldmVsOjAsZGF0YVR5cGVzOltdLGRlZmluZWRQcm9wZXJ0aWVzOm5ldyBTZXQsdG9wU2NoZW1hUmVmOkcuc2NvcGVWYWx1ZShcInNjaGVtYVwiLHRoaXMub3B0cy5jb2RlLnNvdXJjZT09PSEwP3tyZWY6JC5zY2hlbWEsY29kZTooMCx3NC5zdHJpbmdpZnkpKCQuc2NoZW1hKX06e3JlZjokLnNjaGVtYX0pLHZhbGlkYXRlTmFtZTpILFZhbGlkYXRpb25FcnJvcjpVLHNjaGVtYTokLnNjaGVtYSxzY2hlbWFFbnY6JCxyb290SWQ6SixiYXNlSWQ6JC5iYXNlSWR8fEosc2NoZW1hUGF0aDp3NC5uaWwsZXJyU2NoZW1hUGF0aDokLnNjaGVtYVBhdGh8fCh0aGlzLm9wdHMuanRkP1wiXCI6XCIjXCIpLGVycm9yUGF0aDp3NC5fYFwiXCJgLG9wdHM6dGhpcy5vcHRzLHNlbGY6dGhpc30sVjt0cnl7dGhpcy5fY29tcGlsYXRpb25zLmFkZCgkKSwoMCxobi52YWxpZGF0ZUZ1bmN0aW9uQ29kZSkocSksRy5vcHRpbWl6ZSh0aGlzLm9wdHMuY29kZS5vcHRpbWl6ZSk7bGV0IEI9Ry50b1N0cmluZygpO2lmKFY9YCR7Ry5zY29wZVJlZnMoeTAuZGVmYXVsdC5zY29wZSl9cmV0dXJuICR7Qn1gLHRoaXMub3B0cy5jb2RlLnByb2Nlc3MpVj10aGlzLm9wdHMuY29kZS5wcm9jZXNzKFYsJCk7bGV0IE49RnVuY3Rpb24oYCR7eTAuZGVmYXVsdC5zZWxmfWAsYCR7eTAuZGVmYXVsdC5zY29wZX1gLFYpKHRoaXMsdGhpcy5zY29wZS5nZXQoKSk7aWYodGhpcy5zY29wZS52YWx1ZShILHtyZWY6Tn0pLE4uZXJyb3JzPW51bGwsTi5zY2hlbWE9JC5zY2hlbWEsTi5zY2hlbWFFbnY9JCwkLiRhc3luYylOLiRhc3luYz0hMDtpZih0aGlzLm9wdHMuY29kZS5zb3VyY2U9PT0hMClOLnNvdXJjZT17dmFsaWRhdGVOYW1lOkgsdmFsaWRhdGVDb2RlOkIsc2NvcGVWYWx1ZXM6Ry5fdmFsdWVzfTtpZih0aGlzLm9wdHMudW5ldmFsdWF0ZWQpe2xldHtwcm9wczp3LGl0ZW1zOk99PXE7aWYoTi5ldmFsdWF0ZWQ9e3Byb3BzOncgaW5zdGFuY2VvZiB3NC5OYW1lP3ZvaWQgMDp3LGl0ZW1zOk8gaW5zdGFuY2VvZiB3NC5OYW1lP3ZvaWQgMDpPLGR5bmFtaWNQcm9wczp3IGluc3RhbmNlb2YgdzQuTmFtZSxkeW5hbWljSXRlbXM6TyBpbnN0YW5jZW9mIHc0Lk5hbWV9LE4uc291cmNlKU4uc291cmNlLmV2YWx1YXRlZD0oMCx3NC5zdHJpbmdpZnkpKE4uZXZhbHVhdGVkKX1yZXR1cm4gJC52YWxpZGF0ZT1OLCR9Y2F0Y2goQil7aWYoZGVsZXRlICQudmFsaWRhdGUsZGVsZXRlICQudmFsaWRhdGVOYW1lLFYpdGhpcy5sb2dnZXIuZXJyb3IoXCJFcnJvciBjb21waWxpbmcgc2NoZW1hLCBmdW5jdGlvbiBjb2RlOlwiLFYpO3Rocm93IEJ9ZmluYWxseXt0aGlzLl9jb21waWxhdGlvbnMuZGVsZXRlKCQpfX0kSS5jb21waWxlU2NoZW1hPWRCO2Z1bmN0aW9uIHVuKCQsUSxKKXt2YXIgWTtKPSgwLE80LnJlc29sdmVVcmwpKHRoaXMub3B0cy51cmlSZXNvbHZlcixRLEopO2xldCBYPSQucmVmc1tKXTtpZihYKXJldHVybiBYO2xldCBXPWNuLmNhbGwodGhpcywkLEopO2lmKFc9PT12b2lkIDApe2xldCBHPShZPSQubG9jYWxSZWZzKT09PW51bGx8fFk9PT12b2lkIDA/dm9pZCAwOllbSl0se3NjaGVtYUlkOlV9PXRoaXMub3B0cztpZihHKVc9bmV3IHlKKHtzY2hlbWE6RyxzY2hlbWFJZDpVLHJvb3Q6JCxiYXNlSWQ6UX0pfWlmKFc9PT12b2lkIDApcmV0dXJuO3JldHVybiAkLnJlZnNbSl09bW4uY2FsbCh0aGlzLFcpfSRJLnJlc29sdmVSZWY9dW47ZnVuY3Rpb24gbW4oJCl7aWYoKDAsTzQuaW5saW5lUmVmKSgkLnNjaGVtYSx0aGlzLm9wdHMuaW5saW5lUmVmcykpcmV0dXJuICQuc2NoZW1hO3JldHVybiAkLnZhbGlkYXRlPyQ6ZEIuY2FsbCh0aGlzLCQpfWZ1bmN0aW9uIGVBKCQpe2ZvcihsZXQgUSBvZiB0aGlzLl9jb21waWxhdGlvbnMpaWYobG4oUSwkKSlyZXR1cm4gUX0kSS5nZXRDb21waWxpbmdTY2hlbWE9ZUE7ZnVuY3Rpb24gbG4oJCxRKXtyZXR1cm4gJC5zY2hlbWE9PT1RLnNjaGVtYSYmJC5yb290PT09US5yb290JiYkLmJhc2VJZD09PVEuYmFzZUlkfWZ1bmN0aW9uIGNuKCQsUSl7bGV0IEo7d2hpbGUodHlwZW9mKEo9dGhpcy5yZWZzW1FdKT09XCJzdHJpbmdcIilRPUo7cmV0dXJuIEp8fHRoaXMuc2NoZW1hc1tRXXx8eFcuY2FsbCh0aGlzLCQsUSl9ZnVuY3Rpb24geFcoJCxRKXtsZXQgSj10aGlzLm9wdHMudXJpUmVzb2x2ZXIucGFyc2UoUSksWT0oMCxPNC5fZ2V0RnVsbFBhdGgpKHRoaXMub3B0cy51cmlSZXNvbHZlcixKKSxYPSgwLE80LmdldEZ1bGxQYXRoKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsJC5iYXNlSWQsdm9pZCAwKTtpZihPYmplY3Qua2V5cygkLnNjaGVtYSkubGVuZ3RoPjAmJlk9PT1YKXJldHVybiBwQi5jYWxsKHRoaXMsSiwkKTtsZXQgVz0oMCxPNC5ub3JtYWxpemVJZCkoWSksRz10aGlzLnJlZnNbV118fHRoaXMuc2NoZW1hc1tXXTtpZih0eXBlb2YgRz09XCJzdHJpbmdcIil7bGV0IFU9eFcuY2FsbCh0aGlzLCQsRyk7aWYodHlwZW9mKFU9PT1udWxsfHxVPT09dm9pZCAwP3ZvaWQgMDpVLnNjaGVtYSkhPT1cIm9iamVjdFwiKXJldHVybjtyZXR1cm4gcEIuY2FsbCh0aGlzLEosVSl9aWYodHlwZW9mKEc9PT1udWxsfHxHPT09dm9pZCAwP3ZvaWQgMDpHLnNjaGVtYSkhPT1cIm9iamVjdFwiKXJldHVybjtpZighRy52YWxpZGF0ZSlkQi5jYWxsKHRoaXMsRyk7aWYoVz09PSgwLE80Lm5vcm1hbGl6ZUlkKShRKSl7bGV0e3NjaGVtYTpVfT1HLHtzY2hlbWFJZDpIfT10aGlzLm9wdHMscT1VW0hdO2lmKHEpWD0oMCxPNC5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsWCxxKTtyZXR1cm4gbmV3IHlKKHtzY2hlbWE6VSxzY2hlbWFJZDpILHJvb3Q6JCxiYXNlSWQ6WH0pfXJldHVybiBwQi5jYWxsKHRoaXMsSixHKX0kSS5yZXNvbHZlU2NoZW1hPXhXO3ZhciBwbj1uZXcgU2V0KFtcInByb3BlcnRpZXNcIixcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsXCJlbnVtXCIsXCJkZXBlbmRlbmNpZXNcIixcImRlZmluaXRpb25zXCJdKTtmdW5jdGlvbiBwQigkLHtiYXNlSWQ6USxzY2hlbWE6Sixyb290Oll9KXt2YXIgWDtpZigoKFg9JC5mcmFnbWVudCk9PT1udWxsfHxYPT09dm9pZCAwP3ZvaWQgMDpYWzBdKSE9PVwiL1wiKXJldHVybjtmb3IobGV0IFUgb2YgJC5mcmFnbWVudC5zbGljZSgxKS5zcGxpdChcIi9cIikpe2lmKHR5cGVvZiBKPT09XCJib29sZWFuXCIpcmV0dXJuO2xldCBIPUpbKDAsc0EudW5lc2NhcGVGcmFnbWVudCkoVSldO2lmKEg9PT12b2lkIDApcmV0dXJuO0o9SDtsZXQgcT10eXBlb2YgSj09PVwib2JqZWN0XCImJkpbdGhpcy5vcHRzLnNjaGVtYUlkXTtpZighcG4uaGFzKFUpJiZxKVE9KDAsTzQucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLFEscSl9bGV0IFc7aWYodHlwZW9mIEohPVwiYm9vbGVhblwiJiZKLiRyZWYmJiEoMCxzQS5zY2hlbWFIYXNSdWxlc0J1dFJlZikoSix0aGlzLlJVTEVTKSl7bGV0IFU9KDAsTzQucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLFEsSi4kcmVmKTtXPXhXLmNhbGwodGhpcyxZLFUpfWxldHtzY2hlbWFJZDpHfT10aGlzLm9wdHM7aWYoVz1XfHxuZXcgeUooe3NjaGVtYTpKLHNjaGVtYUlkOkcscm9vdDpZLGJhc2VJZDpRfSksVy5zY2hlbWEhPT1XLnJvb3Quc2NoZW1hKXJldHVybiBXO3JldHVybn19KTt2YXIgSkk9SSgoVnckLHRuKT0+e3RuLmV4cG9ydHM9eyRpZDpcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9tYXN0ZXIvbGliL3JlZnMvZGF0YS5qc29uI1wiLGRlc2NyaXB0aW9uOlwiTWV0YS1zY2hlbWEgZm9yICRkYXRhIHJlZmVyZW5jZSAoSlNPTiBBbnlTY2hlbWEgZXh0ZW5zaW9uIHByb3Bvc2FsKVwiLHR5cGU6XCJvYmplY3RcIixyZXF1aXJlZDpbXCIkZGF0YVwiXSxwcm9wZXJ0aWVzOnskZGF0YTp7dHlwZTpcInN0cmluZ1wiLGFueU9mOlt7Zm9ybWF0OlwicmVsYXRpdmUtanNvbi1wb2ludGVyXCJ9LHtmb3JtYXQ6XCJqc29uLXBvaW50ZXJcIn1dfX0sYWRkaXRpb25hbFByb3BlcnRpZXM6ITF9fSk7dmFyIFlJPUkoKEJ3JCxYSSk9Pnt2YXIgYW49ezA6MCwxOjEsMjoyLDM6Myw0OjQsNTo1LDY6Niw3OjcsODo4LDk6OSxhOjEwLEE6MTAsYjoxMSxCOjExLGM6MTIsQzoxMixkOjEzLEQ6MTMsZToxNCxFOjE0LGY6MTUsRjoxNX07WEkuZXhwb3J0cz17SEVYOmFufX0pO3ZhciBCST1JKCh6dyQsVkkpPT57dmFye0hFWDpzbn09WUkoKSxlbj0vXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGR7Mn18WzEtOV1cXGR8XFxkKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkezJ9fFsxLTldXFxkfFxcZCkkL3U7ZnVuY3Rpb24gSEkoJCl7aWYocUkoJCxcIi5cIik8MylyZXR1cm57aG9zdDokLGlzSVBWNDohMX07bGV0IFE9JC5tYXRjaChlbil8fFtdLFtKXT1RO2lmKEopcmV0dXJue2hvc3Q6UXIoSixcIi5cIiksaXNJUFY0OiEwfTtlbHNlIHJldHVybntob3N0OiQsaXNJUFY0OiExfX1mdW5jdGlvbiBpQigkLFE9ITEpe2xldCBKPVwiXCIsWT0hMDtmb3IobGV0IFggb2YgJCl7aWYoc25bWF09PT12b2lkIDApcmV0dXJuO2lmKFghPT1cIjBcIiYmWT09PSEwKVk9ITE7aWYoIVkpSis9WH1pZihRJiZKLmxlbmd0aD09PTApSj1cIjBcIjtyZXR1cm4gSn1mdW5jdGlvbiAkcigkKXtsZXQgUT0wLEo9e2Vycm9yOiExLGFkZHJlc3M6XCJcIix6b25lOlwiXCJ9LFk9W10sWD1bXSxXPSExLEc9ITEsVT0hMTtmdW5jdGlvbiBIKCl7aWYoWC5sZW5ndGgpe2lmKFc9PT0hMSl7bGV0IHE9aUIoWCk7aWYocSE9PXZvaWQgMClZLnB1c2gocSk7ZWxzZSByZXR1cm4gSi5lcnJvcj0hMCwhMX1YLmxlbmd0aD0wfXJldHVybiEwfWZvcihsZXQgcT0wO3E8JC5sZW5ndGg7cSsrKXtsZXQgVj0kW3FdO2lmKFY9PT1cIltcInx8Vj09PVwiXVwiKWNvbnRpbnVlO2lmKFY9PT1cIjpcIil7aWYoRz09PSEwKVU9ITA7aWYoIUgoKSlicmVhaztpZihRKyssWS5wdXNoKFwiOlwiKSxRPjcpe0ouZXJyb3I9ITA7YnJlYWt9aWYocS0xPj0wJiYkW3EtMV09PT1cIjpcIilHPSEwO2NvbnRpbnVlfWVsc2UgaWYoVj09PVwiJVwiKXtpZighSCgpKWJyZWFrO1c9ITB9ZWxzZXtYLnB1c2goVik7Y29udGludWV9fWlmKFgubGVuZ3RoKWlmKFcpSi56b25lPVguam9pbihcIlwiKTtlbHNlIGlmKFUpWS5wdXNoKFguam9pbihcIlwiKSk7ZWxzZSBZLnB1c2goaUIoWCkpO3JldHVybiBKLmFkZHJlc3M9WS5qb2luKFwiXCIpLEp9ZnVuY3Rpb24gS0koJCl7aWYocUkoJCxcIjpcIik8MilyZXR1cm57aG9zdDokLGlzSVBWNjohMX07bGV0IFE9JHIoJCk7aWYoIVEuZXJyb3Ipe2xldHthZGRyZXNzOkosYWRkcmVzczpZfT1RO2lmKFEuem9uZSlKKz1cIiVcIitRLnpvbmUsWSs9XCIlMjVcIitRLnpvbmU7cmV0dXJue2hvc3Q6Sixlc2NhcGVkSG9zdDpZLGlzSVBWNjohMH19ZWxzZSByZXR1cm57aG9zdDokLGlzSVBWNjohMX19ZnVuY3Rpb24gUXIoJCxRKXtsZXQgSj1cIlwiLFk9ITAsWD0kLmxlbmd0aDtmb3IobGV0IFc9MDtXPFg7VysrKXtsZXQgRz0kW1ddO2lmKEc9PT1cIjBcIiYmWSl7aWYoVysxPD1YJiYkW1crMV09PT1RfHxXKzE9PT1YKUorPUcsWT0hMX1lbHNle2lmKEc9PT1RKVk9ITA7ZWxzZSBZPSExO0orPUd9fXJldHVybiBKfWZ1bmN0aW9uIHFJKCQsUSl7bGV0IEo9MDtmb3IobGV0IFk9MDtZPCQubGVuZ3RoO1krKylpZigkW1ldPT09USlKKys7cmV0dXJuIEp9dmFyIFdJPS9eXFwuXFwuP1xcLy91LEdJPS9eXFwvXFwuKD86XFwvfCQpL3UsVUk9L15cXC9cXC5cXC4oPzpcXC98JCkvdSxKcj0vXlxcLz8oPzoufFxcbikqPyg/PVxcL3wkKS91O2Z1bmN0aW9uIFhyKCQpe2xldCBRPVtdO3doaWxlKCQubGVuZ3RoKWlmKCQubWF0Y2goV0kpKSQ9JC5yZXBsYWNlKFdJLFwiXCIpO2Vsc2UgaWYoJC5tYXRjaChHSSkpJD0kLnJlcGxhY2UoR0ksXCIvXCIpO2Vsc2UgaWYoJC5tYXRjaChVSSkpJD0kLnJlcGxhY2UoVUksXCIvXCIpLFEucG9wKCk7ZWxzZSBpZigkPT09XCIuXCJ8fCQ9PT1cIi4uXCIpJD1cIlwiO2Vsc2V7bGV0IEo9JC5tYXRjaChKcik7aWYoSil7bGV0IFk9SlswXTskPSQuc2xpY2UoWS5sZW5ndGgpLFEucHVzaChZKX1lbHNlIHRocm93IEVycm9yKFwiVW5leHBlY3RlZCBkb3Qgc2VnbWVudCBjb25kaXRpb25cIil9cmV0dXJuIFEuam9pbihcIlwiKX1mdW5jdGlvbiBZcigkLFEpe2xldCBKPVEhPT0hMD9lc2NhcGU6dW5lc2NhcGU7aWYoJC5zY2hlbWUhPT12b2lkIDApJC5zY2hlbWU9SigkLnNjaGVtZSk7aWYoJC51c2VyaW5mbyE9PXZvaWQgMCkkLnVzZXJpbmZvPUooJC51c2VyaW5mbyk7aWYoJC5ob3N0IT09dm9pZCAwKSQuaG9zdD1KKCQuaG9zdCk7aWYoJC5wYXRoIT09dm9pZCAwKSQucGF0aD1KKCQucGF0aCk7aWYoJC5xdWVyeSE9PXZvaWQgMCkkLnF1ZXJ5PUooJC5xdWVyeSk7aWYoJC5mcmFnbWVudCE9PXZvaWQgMCkkLmZyYWdtZW50PUooJC5mcmFnbWVudCk7cmV0dXJuICR9ZnVuY3Rpb24gV3IoJCl7bGV0IFE9W107aWYoJC51c2VyaW5mbyE9PXZvaWQgMClRLnB1c2goJC51c2VyaW5mbyksUS5wdXNoKFwiQFwiKTtpZigkLmhvc3QhPT12b2lkIDApe2xldCBKPXVuZXNjYXBlKCQuaG9zdCksWT1ISShKKTtpZihZLmlzSVBWNClKPVkuaG9zdDtlbHNle2xldCBYPUtJKFkuaG9zdCk7aWYoWC5pc0lQVjY9PT0hMClKPWBbJHtYLmVzY2FwZWRIb3N0fV1gO2Vsc2UgSj0kLmhvc3R9US5wdXNoKEopfWlmKHR5cGVvZiAkLnBvcnQ9PT1cIm51bWJlclwifHx0eXBlb2YgJC5wb3J0PT09XCJzdHJpbmdcIilRLnB1c2goXCI6XCIpLFEucHVzaChTdHJpbmcoJC5wb3J0KSk7cmV0dXJuIFEubGVuZ3RoP1Euam9pbihcIlwiKTp2b2lkIDB9VkkuZXhwb3J0cz17cmVjb21wb3NlQXV0aG9yaXR5OldyLG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nOllyLHJlbW92ZURvdFNlZ21lbnRzOlhyLG5vcm1hbGl6ZUlQdjQ6SEksbm9ybWFsaXplSVB2NjpLSSxzdHJpbmdBcnJheVRvSGV4U3RyaXBwZWQ6aUJ9fSk7dmFyIEZJPUkoKE53JCxESSk9Pnt2YXIgR3I9L15bXFxkYS1mXXs4fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXs0fS1bXFxkYS1mXXsxMn0kL2l1LFVyPS8oW1xcZGEtel1bXFxkXFwtYS16XXswLDMxfSk6KCg/OltcXHchJCcoKSorLFxcLS46Oz1AXXwlW1xcZGEtZl17Mn0pKykvaXU7ZnVuY3Rpb24gekkoJCl7cmV0dXJuIHR5cGVvZiAkLnNlY3VyZT09PVwiYm9vbGVhblwiPyQuc2VjdXJlOlN0cmluZygkLnNjaGVtZSkudG9Mb3dlckNhc2UoKT09PVwid3NzXCJ9ZnVuY3Rpb24gTkkoJCl7aWYoISQuaG9zdCkkLmVycm9yPSQuZXJyb3J8fFwiSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuXCI7cmV0dXJuICR9ZnVuY3Rpb24gd0koJCl7bGV0IFE9U3RyaW5nKCQuc2NoZW1lKS50b0xvd2VyQ2FzZSgpPT09XCJodHRwc1wiO2lmKCQucG9ydD09PShRPzQ0Mzo4MCl8fCQucG9ydD09PVwiXCIpJC5wb3J0PXZvaWQgMDtpZighJC5wYXRoKSQucGF0aD1cIi9cIjtyZXR1cm4gJH1mdW5jdGlvbiBIcigkKXtyZXR1cm4gJC5zZWN1cmU9ekkoJCksJC5yZXNvdXJjZU5hbWU9KCQucGF0aHx8XCIvXCIpKygkLnF1ZXJ5P1wiP1wiKyQucXVlcnk6XCJcIiksJC5wYXRoPXZvaWQgMCwkLnF1ZXJ5PXZvaWQgMCwkfWZ1bmN0aW9uIEtyKCQpe2lmKCQucG9ydD09PSh6SSgkKT80NDM6ODApfHwkLnBvcnQ9PT1cIlwiKSQucG9ydD12b2lkIDA7aWYodHlwZW9mICQuc2VjdXJlPT09XCJib29sZWFuXCIpJC5zY2hlbWU9JC5zZWN1cmU/XCJ3c3NcIjpcIndzXCIsJC5zZWN1cmU9dm9pZCAwO2lmKCQucmVzb3VyY2VOYW1lKXtsZXRbUSxKXT0kLnJlc291cmNlTmFtZS5zcGxpdChcIj9cIik7JC5wYXRoPVEmJlEhPT1cIi9cIj9ROnZvaWQgMCwkLnF1ZXJ5PUosJC5yZXNvdXJjZU5hbWU9dm9pZCAwfXJldHVybiAkLmZyYWdtZW50PXZvaWQgMCwkfWZ1bmN0aW9uIHFyKCQsUSl7aWYoISQucGF0aClyZXR1cm4gJC5lcnJvcj1cIlVSTiBjYW4gbm90IGJlIHBhcnNlZFwiLCQ7bGV0IEo9JC5wYXRoLm1hdGNoKFVyKTtpZihKKXtsZXQgWT1RLnNjaGVtZXx8JC5zY2hlbWV8fFwidXJuXCI7JC5uaWQ9SlsxXS50b0xvd2VyQ2FzZSgpLCQubnNzPUpbMl07bGV0IFg9YCR7WX06JHtRLm5pZHx8JC5uaWR9YCxXPW5CW1hdO2lmKCQucGF0aD12b2lkIDAsVykkPVcucGFyc2UoJCxRKX1lbHNlICQuZXJyb3I9JC5lcnJvcnx8XCJVUk4gY2FuIG5vdCBiZSBwYXJzZWQuXCI7cmV0dXJuICR9ZnVuY3Rpb24gVnIoJCxRKXtsZXQgSj1RLnNjaGVtZXx8JC5zY2hlbWV8fFwidXJuXCIsWT0kLm5pZC50b0xvd2VyQ2FzZSgpLFg9YCR7Sn06JHtRLm5pZHx8WX1gLFc9bkJbWF07aWYoVykkPVcuc2VyaWFsaXplKCQsUSk7bGV0IEc9JCxVPSQubnNzO3JldHVybiBHLnBhdGg9YCR7WXx8US5uaWR9OiR7VX1gLFEuc2tpcEVzY2FwZT0hMCxHfWZ1bmN0aW9uIEJyKCQsUSl7bGV0IEo9JDtpZihKLnV1aWQ9Si5uc3MsSi5uc3M9dm9pZCAwLCFRLnRvbGVyYW50JiYoIUoudXVpZHx8IUdyLnRlc3QoSi51dWlkKSkpSi5lcnJvcj1KLmVycm9yfHxcIlVVSUQgaXMgbm90IHZhbGlkLlwiO3JldHVybiBKfWZ1bmN0aW9uIHpyKCQpe2xldCBRPSQ7cmV0dXJuIFEubnNzPSgkLnV1aWR8fFwiXCIpLnRvTG93ZXJDYXNlKCksUX12YXIgT0k9e3NjaGVtZTpcImh0dHBcIixkb21haW5Ib3N0OiEwLHBhcnNlOk5JLHNlcmlhbGl6ZTp3SX0sTnI9e3NjaGVtZTpcImh0dHBzXCIsZG9tYWluSG9zdDpPSS5kb21haW5Ib3N0LHBhcnNlOk5JLHNlcmlhbGl6ZTp3SX0seVc9e3NjaGVtZTpcIndzXCIsZG9tYWluSG9zdDohMCxwYXJzZTpIcixzZXJpYWxpemU6S3J9LHdyPXtzY2hlbWU6XCJ3c3NcIixkb21haW5Ib3N0OnlXLmRvbWFpbkhvc3QscGFyc2U6eVcucGFyc2Usc2VyaWFsaXplOnlXLnNlcmlhbGl6ZX0sT3I9e3NjaGVtZTpcInVyblwiLHBhcnNlOnFyLHNlcmlhbGl6ZTpWcixza2lwTm9ybWFsaXplOiEwfSxEcj17c2NoZW1lOlwidXJuOnV1aWRcIixwYXJzZTpCcixzZXJpYWxpemU6enIsc2tpcE5vcm1hbGl6ZTohMH0sbkI9e2h0dHA6T0ksaHR0cHM6TnIsd3M6eVcsd3NzOndyLHVybjpPcixcInVybjp1dWlkXCI6RHJ9O0RJLmV4cG9ydHM9bkJ9KTt2YXIgTUk9SSgod3ckLGhXKT0+e3Zhcntub3JtYWxpemVJUHY2OkZyLG5vcm1hbGl6ZUlQdjQ6WnIscmVtb3ZlRG90U2VnbWVudHM6Z0oscmVjb21wb3NlQXV0aG9yaXR5Ok1yLG5vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nOmdXfT1CSSgpLHJCPUZJKCk7ZnVuY3Rpb24gTHIoJCxRKXtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpJD1TNChZMSgkLFEpLFEpO2Vsc2UgaWYodHlwZW9mICQ9PT1cIm9iamVjdFwiKSQ9WTEoUzQoJCxRKSxRKTtyZXR1cm4gJH1mdW5jdGlvbiBqcigkLFEsSil7bGV0IFk9T2JqZWN0LmFzc2lnbih7c2NoZW1lOlwibnVsbFwifSxKKSxYPVpJKFkxKCQsWSksWTEoUSxZKSxZLCEwKTtyZXR1cm4gUzQoWCx7Li4uWSxza2lwRXNjYXBlOiEwfSl9ZnVuY3Rpb24gWkkoJCxRLEosWSl7bGV0IFg9e307aWYoIVkpJD1ZMShTNCgkLEopLEopLFE9WTEoUzQoUSxKKSxKKTtpZihKPUp8fHt9LCFKLnRvbGVyYW50JiZRLnNjaGVtZSlYLnNjaGVtZT1RLnNjaGVtZSxYLnVzZXJpbmZvPVEudXNlcmluZm8sWC5ob3N0PVEuaG9zdCxYLnBvcnQ9US5wb3J0LFgucGF0aD1nSihRLnBhdGh8fFwiXCIpLFgucXVlcnk9US5xdWVyeTtlbHNle2lmKFEudXNlcmluZm8hPT12b2lkIDB8fFEuaG9zdCE9PXZvaWQgMHx8US5wb3J0IT09dm9pZCAwKVgudXNlcmluZm89US51c2VyaW5mbyxYLmhvc3Q9US5ob3N0LFgucG9ydD1RLnBvcnQsWC5wYXRoPWdKKFEucGF0aHx8XCJcIiksWC5xdWVyeT1RLnF1ZXJ5O2Vsc2V7aWYoIVEucGF0aClpZihYLnBhdGg9JC5wYXRoLFEucXVlcnkhPT12b2lkIDApWC5xdWVyeT1RLnF1ZXJ5O2Vsc2UgWC5xdWVyeT0kLnF1ZXJ5O2Vsc2V7aWYoUS5wYXRoLmNoYXJBdCgwKT09PVwiL1wiKVgucGF0aD1nSihRLnBhdGgpO2Vsc2V7aWYoKCQudXNlcmluZm8hPT12b2lkIDB8fCQuaG9zdCE9PXZvaWQgMHx8JC5wb3J0IT09dm9pZCAwKSYmISQucGF0aClYLnBhdGg9XCIvXCIrUS5wYXRoO2Vsc2UgaWYoISQucGF0aClYLnBhdGg9US5wYXRoO2Vsc2UgWC5wYXRoPSQucGF0aC5zbGljZSgwLCQucGF0aC5sYXN0SW5kZXhPZihcIi9cIikrMSkrUS5wYXRoO1gucGF0aD1nSihYLnBhdGgpfVgucXVlcnk9US5xdWVyeX1YLnVzZXJpbmZvPSQudXNlcmluZm8sWC5ob3N0PSQuaG9zdCxYLnBvcnQ9JC5wb3J0fVguc2NoZW1lPSQuc2NoZW1lfXJldHVybiBYLmZyYWdtZW50PVEuZnJhZ21lbnQsWH1mdW5jdGlvbiBBcigkLFEsSil7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKSQ9dW5lc2NhcGUoJCksJD1TNChnVyhZMSgkLEopLCEwKSx7Li4uSixza2lwRXNjYXBlOiEwfSk7ZWxzZSBpZih0eXBlb2YgJD09PVwib2JqZWN0XCIpJD1TNChnVygkLCEwKSx7Li4uSixza2lwRXNjYXBlOiEwfSk7aWYodHlwZW9mIFE9PT1cInN0cmluZ1wiKVE9dW5lc2NhcGUoUSksUT1TNChnVyhZMShRLEopLCEwKSx7Li4uSixza2lwRXNjYXBlOiEwfSk7ZWxzZSBpZih0eXBlb2YgUT09PVwib2JqZWN0XCIpUT1TNChnVyhRLCEwKSx7Li4uSixza2lwRXNjYXBlOiEwfSk7cmV0dXJuICQudG9Mb3dlckNhc2UoKT09PVEudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBTNCgkLFEpe2xldCBKPXtob3N0OiQuaG9zdCxzY2hlbWU6JC5zY2hlbWUsdXNlcmluZm86JC51c2VyaW5mbyxwb3J0OiQucG9ydCxwYXRoOiQucGF0aCxxdWVyeTokLnF1ZXJ5LG5pZDokLm5pZCxuc3M6JC5uc3MsdXVpZDokLnV1aWQsZnJhZ21lbnQ6JC5mcmFnbWVudCxyZWZlcmVuY2U6JC5yZWZlcmVuY2UscmVzb3VyY2VOYW1lOiQucmVzb3VyY2VOYW1lLHNlY3VyZTokLnNlY3VyZSxlcnJvcjpcIlwifSxZPU9iamVjdC5hc3NpZ24oe30sUSksWD1bXSxXPXJCWyhZLnNjaGVtZXx8Si5zY2hlbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCldO2lmKFcmJlcuc2VyaWFsaXplKVcuc2VyaWFsaXplKEosWSk7aWYoSi5wYXRoIT09dm9pZCAwKWlmKCFZLnNraXBFc2NhcGUpe2lmKEoucGF0aD1lc2NhcGUoSi5wYXRoKSxKLnNjaGVtZSE9PXZvaWQgMClKLnBhdGg9Si5wYXRoLnNwbGl0KFwiJTNBXCIpLmpvaW4oXCI6XCIpfWVsc2UgSi5wYXRoPXVuZXNjYXBlKEoucGF0aCk7aWYoWS5yZWZlcmVuY2UhPT1cInN1ZmZpeFwiJiZKLnNjaGVtZSlYLnB1c2goSi5zY2hlbWUsXCI6XCIpO2xldCBHPU1yKEopO2lmKEchPT12b2lkIDApe2lmKFkucmVmZXJlbmNlIT09XCJzdWZmaXhcIilYLnB1c2goXCIvL1wiKTtpZihYLnB1c2goRyksSi5wYXRoJiZKLnBhdGguY2hhckF0KDApIT09XCIvXCIpWC5wdXNoKFwiL1wiKX1pZihKLnBhdGghPT12b2lkIDApe2xldCBVPUoucGF0aDtpZighWS5hYnNvbHV0ZVBhdGgmJighV3x8IVcuYWJzb2x1dGVQYXRoKSlVPWdKKFUpO2lmKEc9PT12b2lkIDApVT1VLnJlcGxhY2UoL15cXC9cXC8vdSxcIi8lMkZcIik7WC5wdXNoKFUpfWlmKEoucXVlcnkhPT12b2lkIDApWC5wdXNoKFwiP1wiLEoucXVlcnkpO2lmKEouZnJhZ21lbnQhPT12b2lkIDApWC5wdXNoKFwiI1wiLEouZnJhZ21lbnQpO3JldHVybiBYLmpvaW4oXCJcIil9dmFyIElyPUFycmF5LmZyb20oe2xlbmd0aDoxMjd9LCgkLFEpPT4vW14hXCIkJicoKSorLFxcLS47PV9gYS16e31+XS91LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShRKSkpO2Z1bmN0aW9uIFJyKCQpe2xldCBRPTA7Zm9yKGxldCBKPTAsWT0kLmxlbmd0aDtKPFk7KytKKWlmKFE9JC5jaGFyQ29kZUF0KEopLFE+MTI2fHxJcltRXSlyZXR1cm4hMDtyZXR1cm4hMX12YXIgUHI9L14oPzooW14jLzo/XSspOik/KD86XFwvXFwvKCg/OihbXiMvP0BdKilAKT8oXFxbW14jLz9cXF1dK1xcXXxbXiMvOj9dKikoPzo6KFxcZCopKT8pKT8oW14jP10qKSg/OlxcPyhbXiNdKikpPyg/OiMoKD86LnxbXFxuXFxyXSkqKSk/L3U7ZnVuY3Rpb24gWTEoJCxRKXtsZXQgSj1PYmplY3QuYXNzaWduKHt9LFEpLFk9e3NjaGVtZTp2b2lkIDAsdXNlcmluZm86dm9pZCAwLGhvc3Q6XCJcIixwb3J0OnZvaWQgMCxwYXRoOlwiXCIscXVlcnk6dm9pZCAwLGZyYWdtZW50OnZvaWQgMH0sWD0kLmluZGV4T2YoXCIlXCIpIT09LTEsVz0hMTtpZihKLnJlZmVyZW5jZT09PVwic3VmZml4XCIpJD0oSi5zY2hlbWU/Si5zY2hlbWUrXCI6XCI6XCJcIikrXCIvL1wiKyQ7bGV0IEc9JC5tYXRjaChQcik7aWYoRyl7aWYoWS5zY2hlbWU9R1sxXSxZLnVzZXJpbmZvPUdbM10sWS5ob3N0PUdbNF0sWS5wb3J0PXBhcnNlSW50KEdbNV0sMTApLFkucGF0aD1HWzZdfHxcIlwiLFkucXVlcnk9R1s3XSxZLmZyYWdtZW50PUdbOF0saXNOYU4oWS5wb3J0KSlZLnBvcnQ9R1s1XTtpZihZLmhvc3Qpe2xldCBIPVpyKFkuaG9zdCk7aWYoSC5pc0lQVjQ9PT0hMSl7bGV0IHE9RnIoSC5ob3N0KTtZLmhvc3Q9cS5ob3N0LnRvTG93ZXJDYXNlKCksVz1xLmlzSVBWNn1lbHNlIFkuaG9zdD1ILmhvc3QsVz0hMH1pZihZLnNjaGVtZT09PXZvaWQgMCYmWS51c2VyaW5mbz09PXZvaWQgMCYmWS5ob3N0PT09dm9pZCAwJiZZLnBvcnQ9PT12b2lkIDAmJlkucXVlcnk9PT12b2lkIDAmJiFZLnBhdGgpWS5yZWZlcmVuY2U9XCJzYW1lLWRvY3VtZW50XCI7ZWxzZSBpZihZLnNjaGVtZT09PXZvaWQgMClZLnJlZmVyZW5jZT1cInJlbGF0aXZlXCI7ZWxzZSBpZihZLmZyYWdtZW50PT09dm9pZCAwKVkucmVmZXJlbmNlPVwiYWJzb2x1dGVcIjtlbHNlIFkucmVmZXJlbmNlPVwidXJpXCI7aWYoSi5yZWZlcmVuY2UmJkoucmVmZXJlbmNlIT09XCJzdWZmaXhcIiYmSi5yZWZlcmVuY2UhPT1ZLnJlZmVyZW5jZSlZLmVycm9yPVkuZXJyb3J8fFwiVVJJIGlzIG5vdCBhIFwiK0oucmVmZXJlbmNlK1wiIHJlZmVyZW5jZS5cIjtsZXQgVT1yQlsoSi5zY2hlbWV8fFkuc2NoZW1lfHxcIlwiKS50b0xvd2VyQ2FzZSgpXTtpZighSi51bmljb2RlU3VwcG9ydCYmKCFVfHwhVS51bmljb2RlU3VwcG9ydCkpe2lmKFkuaG9zdCYmKEouZG9tYWluSG9zdHx8VSYmVS5kb21haW5Ib3N0KSYmVz09PSExJiZScihZLmhvc3QpKXRyeXtZLmhvc3Q9VVJMLmRvbWFpblRvQVNDSUkoWS5ob3N0LnRvTG93ZXJDYXNlKCkpfWNhdGNoKEgpe1kuZXJyb3I9WS5lcnJvcnx8XCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUk6IFwiK0h9fWlmKCFVfHxVJiYhVS5za2lwTm9ybWFsaXplKXtpZihYJiZZLnNjaGVtZSE9PXZvaWQgMClZLnNjaGVtZT11bmVzY2FwZShZLnNjaGVtZSk7aWYoWCYmWS5ob3N0IT09dm9pZCAwKVkuaG9zdD11bmVzY2FwZShZLmhvc3QpO2lmKFkucGF0aClZLnBhdGg9ZXNjYXBlKHVuZXNjYXBlKFkucGF0aCkpO2lmKFkuZnJhZ21lbnQpWS5mcmFnbWVudD1lbmNvZGVVUkkoZGVjb2RlVVJJQ29tcG9uZW50KFkuZnJhZ21lbnQpKX1pZihVJiZVLnBhcnNlKVUucGFyc2UoWSxKKX1lbHNlIFkuZXJyb3I9WS5lcnJvcnx8XCJVUkkgY2FuIG5vdCBiZSBwYXJzZWQuXCI7cmV0dXJuIFl9dmFyIG9CPXtTQ0hFTUVTOnJCLG5vcm1hbGl6ZTpMcixyZXNvbHZlOmpyLHJlc29sdmVDb21wb25lbnRzOlpJLGVxdWFsOkFyLHNlcmlhbGl6ZTpTNCxwYXJzZTpZMX07aFcuZXhwb3J0cz1vQjtoVy5leHBvcnRzLmRlZmF1bHQ9b0I7aFcuZXhwb3J0cy5mYXN0VXJpPW9CfSk7dmFyIEFJPUkoKGpJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShqSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgTEk9TUkoKTtMSS5jb2RlPSdyZXF1aXJlKFwiYWp2L2Rpc3QvcnVudGltZS91cmlcIikuZGVmYXVsdCc7akkuZGVmYXVsdD1MSX0pO3ZhciBrST1JKChXMSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7VzEuQ29kZUdlbj1XMS5OYW1lPVcxLm5pbD1XMS5zdHJpbmdpZnk9VzEuc3RyPVcxLl89VzEuS2V5d29yZEN4dD12b2lkIDA7dmFyIGJyPXhKKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFcxLFwiS2V5d29yZEN4dFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBici5LZXl3b3JkQ3h0fX0pO3ZhciBGOT1RJCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXMSxcIl9cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRjkuX319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJzdHJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRjkuc3RyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXMSxcInN0cmluZ2lmeVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBGOS5zdHJpbmdpZnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFcxLFwibmlsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEY5Lm5pbH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVzEsXCJOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEY5Lk5hbWV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFcxLFwiQ29kZUdlblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBGOS5Db2RlR2VufX0pO3ZhciBfcj1UVygpLGJJPWZKKCksU3I9X0IoKSxoSj1mVygpLGtyPVEkKCksdUo9dkooKSx1Vz1rSigpLGFCPXEkKCksSUk9SkkoKSx2cj1BSSgpLF9JPSgkLFEpPT5uZXcgUmVnRXhwKCQsUSk7X0kuY29kZT1cIm5ldyBSZWdFeHBcIjt2YXIgQ3I9W1wicmVtb3ZlQWRkaXRpb25hbFwiLFwidXNlRGVmYXVsdHNcIixcImNvZXJjZVR5cGVzXCJdLFRyPW5ldyBTZXQoW1widmFsaWRhdGVcIixcInNlcmlhbGl6ZVwiLFwicGFyc2VcIixcIndyYXBwZXJcIixcInJvb3RcIixcInNjaGVtYVwiLFwia2V5d29yZFwiLFwicGF0dGVyblwiLFwiZm9ybWF0c1wiLFwidmFsaWRhdGUkZGF0YVwiLFwiZnVuY1wiLFwib2JqXCIsXCJFcnJvclwiXSkseHI9e2Vycm9yRGF0YVBhdGg6XCJcIixmb3JtYXQ6XCJgdmFsaWRhdGVGb3JtYXRzOiBmYWxzZWAgY2FuIGJlIHVzZWQgaW5zdGVhZC5cIixudWxsYWJsZTonXCJudWxsYWJsZVwiIGtleXdvcmQgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHQuJyxqc29uUG9pbnRlcnM6XCJEZXByZWNhdGVkIGpzUHJvcGVydHlTeW50YXggY2FuIGJlIHVzZWQgaW5zdGVhZC5cIixleHRlbmRSZWZzOlwiRGVwcmVjYXRlZCBpZ25vcmVLZXl3b3Jkc1dpdGhSZWYgY2FuIGJlIHVzZWQgaW5zdGVhZC5cIixtaXNzaW5nUmVmczpcIlBhc3MgZW1wdHkgc2NoZW1hIHdpdGggJGlkIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgdG8gYWp2LmFkZFNjaGVtYS5cIixwcm9jZXNzQ29kZTpcIlVzZSBvcHRpb24gYGNvZGU6IHtwcm9jZXNzOiAoY29kZSwgc2NoZW1hRW52OiBvYmplY3QpID0+IHN0cmluZ31gXCIsc291cmNlQ29kZTpcIlVzZSBvcHRpb24gYGNvZGU6IHtzb3VyY2U6IHRydWV9YFwiLHN0cmljdERlZmF1bHRzOlwiSXQgaXMgZGVmYXVsdCBub3csIHNlZSBvcHRpb24gYHN0cmljdGAuXCIsc3RyaWN0S2V5d29yZHM6XCJJdCBpcyBkZWZhdWx0IG5vdywgc2VlIG9wdGlvbiBgc3RyaWN0YC5cIix1bmlxdWVJdGVtczonXCJ1bmlxdWVJdGVtc1wiIGtleXdvcmQgaXMgYWx3YXlzIHZhbGlkYXRlZC4nLHVua25vd25Gb3JtYXRzOlwiRGlzYWJsZSBzdHJpY3QgbW9kZSBvciBwYXNzIGB0cnVlYCB0byBgYWp2LmFkZEZvcm1hdGAgKG9yIGBmb3JtYXRzYCBvcHRpb24pLlwiLGNhY2hlOlwiTWFwIGlzIHVzZWQgYXMgY2FjaGUsIHNjaGVtYSBvYmplY3QgYXMga2V5LlwiLHNlcmlhbGl6ZTpcIk1hcCBpcyB1c2VkIGFzIGNhY2hlLCBzY2hlbWEgb2JqZWN0IGFzIGtleS5cIixhanZFcnJvcnM6XCJJdCBpcyBkZWZhdWx0IG5vdy5cIn0sZnI9e2lnbm9yZUtleXdvcmRzV2l0aFJlZjpcIlwiLGpzUHJvcGVydHlTeW50YXg6XCJcIix1bmljb2RlOidcIm1pbkxlbmd0aFwiL1wibWF4TGVuZ3RoXCIgYWNjb3VudCBmb3IgdW5pY29kZSBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuJ30sUkk9MjAwO2Z1bmN0aW9uIHlyKCQpe3ZhciBRLEosWSxYLFcsRyxVLEgscSxWLEIseixOLHcsTyxELE0saixBLGssdSxHJCxoJCxzJCx1NjtsZXQgQzQ9JC5zdHJpY3QsTDQ9KFE9JC5jb2RlKT09PW51bGx8fFE9PT12b2lkIDA/dm9pZCAwOlEub3B0aW1pemUsbjA9TDQ9PT0hMHx8TDQ9PT12b2lkIDA/MTpMNHx8MCxVMT0oWT0oSj0kLmNvZGUpPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si5yZWdFeHApIT09bnVsbCYmWSE9PXZvaWQgMD9ZOl9JLHIwPShYPSQudXJpUmVzb2x2ZXIpIT09bnVsbCYmWCE9PXZvaWQgMD9YOnZyLmRlZmF1bHQ7cmV0dXJue3N0cmljdFNjaGVtYTooRz0oVz0kLnN0cmljdFNjaGVtYSkhPT1udWxsJiZXIT09dm9pZCAwP1c6QzQpIT09bnVsbCYmRyE9PXZvaWQgMD9HOiEwLHN0cmljdE51bWJlcnM6KEg9KFU9JC5zdHJpY3ROdW1iZXJzKSE9PW51bGwmJlUhPT12b2lkIDA/VTpDNCkhPT1udWxsJiZIIT09dm9pZCAwP0g6ITAsc3RyaWN0VHlwZXM6KFY9KHE9JC5zdHJpY3RUeXBlcykhPT1udWxsJiZxIT09dm9pZCAwP3E6QzQpIT09bnVsbCYmViE9PXZvaWQgMD9WOlwibG9nXCIsc3RyaWN0VHVwbGVzOih6PShCPSQuc3RyaWN0VHVwbGVzKSE9PW51bGwmJkIhPT12b2lkIDA/QjpDNCkhPT1udWxsJiZ6IT09dm9pZCAwP3o6XCJsb2dcIixzdHJpY3RSZXF1aXJlZDoodz0oTj0kLnN0cmljdFJlcXVpcmVkKSE9PW51bGwmJk4hPT12b2lkIDA/TjpDNCkhPT1udWxsJiZ3IT09dm9pZCAwP3c6ITEsY29kZTokLmNvZGU/ey4uLiQuY29kZSxvcHRpbWl6ZTpuMCxyZWdFeHA6VTF9OntvcHRpbWl6ZTpuMCxyZWdFeHA6VTF9LGxvb3BSZXF1aXJlZDooTz0kLmxvb3BSZXF1aXJlZCkhPT1udWxsJiZPIT09dm9pZCAwP086UkksbG9vcEVudW06KEQ9JC5sb29wRW51bSkhPT1udWxsJiZEIT09dm9pZCAwP0Q6UkksbWV0YTooTT0kLm1ldGEpIT09bnVsbCYmTSE9PXZvaWQgMD9NOiEwLG1lc3NhZ2VzOihqPSQubWVzc2FnZXMpIT09bnVsbCYmaiE9PXZvaWQgMD9qOiEwLGlubGluZVJlZnM6KEE9JC5pbmxpbmVSZWZzKSE9PW51bGwmJkEhPT12b2lkIDA/QTohMCxzY2hlbWFJZDooaz0kLnNjaGVtYUlkKSE9PW51bGwmJmshPT12b2lkIDA/azpcIiRpZFwiLGFkZFVzZWRTY2hlbWE6KHU9JC5hZGRVc2VkU2NoZW1hKSE9PW51bGwmJnUhPT12b2lkIDA/dTohMCx2YWxpZGF0ZVNjaGVtYTooRyQ9JC52YWxpZGF0ZVNjaGVtYSkhPT1udWxsJiZHJCE9PXZvaWQgMD9HJDohMCx2YWxpZGF0ZUZvcm1hdHM6KGgkPSQudmFsaWRhdGVGb3JtYXRzKSE9PW51bGwmJmgkIT09dm9pZCAwP2gkOiEwLHVuaWNvZGVSZWdFeHA6KHMkPSQudW5pY29kZVJlZ0V4cCkhPT1udWxsJiZzJCE9PXZvaWQgMD9zJDohMCxpbnQzMnJhbmdlOih1Nj0kLmludDMycmFuZ2UpIT09bnVsbCYmdTYhPT12b2lkIDA/dTY6ITAsdXJpUmVzb2x2ZXI6cjB9fWNsYXNzIG1Xe2NvbnN0cnVjdG9yKCQ9e30pe3RoaXMuc2NoZW1hcz17fSx0aGlzLnJlZnM9e30sdGhpcy5mb3JtYXRzPXt9LHRoaXMuX2NvbXBpbGF0aW9ucz1uZXcgU2V0LHRoaXMuX2xvYWRpbmc9e30sdGhpcy5fY2FjaGU9bmV3IE1hcCwkPXRoaXMub3B0cz17Li4uJCwuLi55cigkKX07bGV0e2VzNTpRLGxpbmVzOkp9PXRoaXMub3B0cy5jb2RlO3RoaXMuc2NvcGU9bmV3IGtyLlZhbHVlU2NvcGUoe3Njb3BlOnt9LHByZWZpeGVzOlRyLGVzNTpRLGxpbmVzOkp9KSx0aGlzLmxvZ2dlcj1jcigkLmxvZ2dlcik7bGV0IFk9JC52YWxpZGF0ZUZvcm1hdHM7aWYoJC52YWxpZGF0ZUZvcm1hdHM9ITEsdGhpcy5SVUxFUz0oMCxTci5nZXRSdWxlcykoKSxQSS5jYWxsKHRoaXMseHIsJCxcIk5PVCBTVVBQT1JURURcIiksUEkuY2FsbCh0aGlzLGZyLCQsXCJERVBSRUNBVEVEXCIsXCJ3YXJuXCIpLHRoaXMuX21ldGFPcHRzPW1yLmNhbGwodGhpcyksJC5mb3JtYXRzKWhyLmNhbGwodGhpcyk7aWYodGhpcy5fYWRkVm9jYWJ1bGFyaWVzKCksdGhpcy5fYWRkRGVmYXVsdE1ldGFTY2hlbWEoKSwkLmtleXdvcmRzKXVyLmNhbGwodGhpcywkLmtleXdvcmRzKTtpZih0eXBlb2YgJC5tZXRhPT1cIm9iamVjdFwiKXRoaXMuYWRkTWV0YVNjaGVtYSgkLm1ldGEpO2dyLmNhbGwodGhpcyksJC52YWxpZGF0ZUZvcm1hdHM9WX1fYWRkVm9jYWJ1bGFyaWVzKCl7dGhpcy5hZGRLZXl3b3JkKFwiJGFzeW5jXCIpfV9hZGREZWZhdWx0TWV0YVNjaGVtYSgpe2xldHskZGF0YTokLG1ldGE6USxzY2hlbWFJZDpKfT10aGlzLm9wdHMsWT1JSTtpZihKPT09XCJpZFwiKVk9ey4uLklJfSxZLmlkPVkuJGlkLGRlbGV0ZSBZLiRpZDtpZihRJiYkKXRoaXMuYWRkTWV0YVNjaGVtYShZLFlbSl0sITEpfWRlZmF1bHRNZXRhKCl7bGV0e21ldGE6JCxzY2hlbWFJZDpRfT10aGlzLm9wdHM7cmV0dXJuIHRoaXMub3B0cy5kZWZhdWx0TWV0YT10eXBlb2YgJD09XCJvYmplY3RcIj8kW1FdfHwkOnZvaWQgMH12YWxpZGF0ZSgkLFEpe2xldCBKO2lmKHR5cGVvZiAkPT1cInN0cmluZ1wiKXtpZihKPXRoaXMuZ2V0U2NoZW1hKCQpLCFKKXRocm93IEVycm9yKGBubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmIFwiJHskfVwiYCl9ZWxzZSBKPXRoaXMuY29tcGlsZSgkKTtsZXQgWT1KKFEpO2lmKCEoXCIkYXN5bmNcImluIEopKXRoaXMuZXJyb3JzPUouZXJyb3JzO3JldHVybiBZfWNvbXBpbGUoJCxRKXtsZXQgSj10aGlzLl9hZGRTY2hlbWEoJCxRKTtyZXR1cm4gSi52YWxpZGF0ZXx8dGhpcy5fY29tcGlsZVNjaGVtYUVudihKKX1jb21waWxlQXN5bmMoJCxRKXtpZih0eXBlb2YgdGhpcy5vcHRzLmxvYWRTY2hlbWEhPVwiZnVuY3Rpb25cIil0aHJvdyBFcnJvcihcIm9wdGlvbnMubG9hZFNjaGVtYSBzaG91bGQgYmUgYSBmdW5jdGlvblwiKTtsZXR7bG9hZFNjaGVtYTpKfT10aGlzLm9wdHM7cmV0dXJuIFkuY2FsbCh0aGlzLCQsUSk7YXN5bmMgZnVuY3Rpb24gWShxLFYpe2F3YWl0IFguY2FsbCh0aGlzLHEuJHNjaGVtYSk7bGV0IEI9dGhpcy5fYWRkU2NoZW1hKHEsVik7cmV0dXJuIEIudmFsaWRhdGV8fFcuY2FsbCh0aGlzLEIpfWFzeW5jIGZ1bmN0aW9uIFgocSl7aWYocSYmIXRoaXMuZ2V0U2NoZW1hKHEpKWF3YWl0IFkuY2FsbCh0aGlzLHskcmVmOnF9LCEwKX1hc3luYyBmdW5jdGlvbiBXKHEpe3RyeXtyZXR1cm4gdGhpcy5fY29tcGlsZVNjaGVtYUVudihxKX1jYXRjaChWKXtpZighKFYgaW5zdGFuY2VvZiBiSS5kZWZhdWx0KSl0aHJvdyBWO3JldHVybiBHLmNhbGwodGhpcyxWKSxhd2FpdCBVLmNhbGwodGhpcyxWLm1pc3NpbmdTY2hlbWEpLFcuY2FsbCh0aGlzLHEpfX1mdW5jdGlvbiBHKHttaXNzaW5nU2NoZW1hOnEsbWlzc2luZ1JlZjpWfSl7aWYodGhpcy5yZWZzW3FdKXRocm93IEVycm9yKGBBbnlTY2hlbWEgJHtxfSBpcyBsb2FkZWQgYnV0ICR7Vn0gY2Fubm90IGJlIHJlc29sdmVkYCl9YXN5bmMgZnVuY3Rpb24gVShxKXtsZXQgVj1hd2FpdCBILmNhbGwodGhpcyxxKTtpZighdGhpcy5yZWZzW3FdKWF3YWl0IFguY2FsbCh0aGlzLFYuJHNjaGVtYSk7aWYoIXRoaXMucmVmc1txXSl0aGlzLmFkZFNjaGVtYShWLHEsUSl9YXN5bmMgZnVuY3Rpb24gSChxKXtsZXQgVj10aGlzLl9sb2FkaW5nW3FdO2lmKFYpcmV0dXJuIFY7dHJ5e3JldHVybiBhd2FpdCh0aGlzLl9sb2FkaW5nW3FdPUoocSkpfWZpbmFsbHl7ZGVsZXRlIHRoaXMuX2xvYWRpbmdbcV19fX1hZGRTY2hlbWEoJCxRLEosWT10aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEpe2lmKEFycmF5LmlzQXJyYXkoJCkpe2ZvcihsZXQgVyBvZiAkKXRoaXMuYWRkU2NoZW1hKFcsdm9pZCAwLEosWSk7cmV0dXJuIHRoaXN9bGV0IFg7aWYodHlwZW9mICQ9PT1cIm9iamVjdFwiKXtsZXR7c2NoZW1hSWQ6V309dGhpcy5vcHRzO2lmKFg9JFtXXSxYIT09dm9pZCAwJiZ0eXBlb2YgWCE9XCJzdHJpbmdcIil0aHJvdyBFcnJvcihgc2NoZW1hICR7V30gbXVzdCBiZSBzdHJpbmdgKX1yZXR1cm4gUT0oMCx1Si5ub3JtYWxpemVJZCkoUXx8WCksdGhpcy5fY2hlY2tVbmlxdWUoUSksdGhpcy5zY2hlbWFzW1FdPXRoaXMuX2FkZFNjaGVtYSgkLEosUSxZLCEwKSx0aGlzfWFkZE1ldGFTY2hlbWEoJCxRLEo9dGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hKXtyZXR1cm4gdGhpcy5hZGRTY2hlbWEoJCxRLCEwLEopLHRoaXN9dmFsaWRhdGVTY2hlbWEoJCxRKXtpZih0eXBlb2YgJD09XCJib29sZWFuXCIpcmV0dXJuITA7bGV0IEo7aWYoSj0kLiRzY2hlbWEsSiE9PXZvaWQgMCYmdHlwZW9mIEohPVwic3RyaW5nXCIpdGhyb3cgRXJyb3IoXCIkc2NoZW1hIG11c3QgYmUgYSBzdHJpbmdcIik7aWYoSj1KfHx0aGlzLm9wdHMuZGVmYXVsdE1ldGF8fHRoaXMuZGVmYXVsdE1ldGEoKSwhSilyZXR1cm4gdGhpcy5sb2dnZXIud2FybihcIm1ldGEtc2NoZW1hIG5vdCBhdmFpbGFibGVcIiksdGhpcy5lcnJvcnM9bnVsbCwhMDtsZXQgWT10aGlzLnZhbGlkYXRlKEosJCk7aWYoIVkmJlEpe2xldCBYPVwic2NoZW1hIGlzIGludmFsaWQ6IFwiK3RoaXMuZXJyb3JzVGV4dCgpO2lmKHRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYT09PVwibG9nXCIpdGhpcy5sb2dnZXIuZXJyb3IoWCk7ZWxzZSB0aHJvdyBFcnJvcihYKX1yZXR1cm4gWX1nZXRTY2hlbWEoJCl7bGV0IFE7d2hpbGUodHlwZW9mKFE9RUkuY2FsbCh0aGlzLCQpKT09XCJzdHJpbmdcIikkPVE7aWYoUT09PXZvaWQgMCl7bGV0e3NjaGVtYUlkOkp9PXRoaXMub3B0cyxZPW5ldyBoSi5TY2hlbWFFbnYoe3NjaGVtYTp7fSxzY2hlbWFJZDpKfSk7aWYoUT1oSi5yZXNvbHZlU2NoZW1hLmNhbGwodGhpcyxZLCQpLCFRKXJldHVybjt0aGlzLnJlZnNbJF09UX1yZXR1cm4gUS52YWxpZGF0ZXx8dGhpcy5fY29tcGlsZVNjaGVtYUVudihRKX1yZW1vdmVTY2hlbWEoJCl7aWYoJCBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnNjaGVtYXMsJCksdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMsJCksdGhpcztzd2l0Y2godHlwZW9mICQpe2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcyksdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMpLHRoaXMuX2NhY2hlLmNsZWFyKCksdGhpcztjYXNlXCJzdHJpbmdcIjp7bGV0IFE9RUkuY2FsbCh0aGlzLCQpO2lmKHR5cGVvZiBRPT1cIm9iamVjdFwiKXRoaXMuX2NhY2hlLmRlbGV0ZShRLnNjaGVtYSk7cmV0dXJuIGRlbGV0ZSB0aGlzLnNjaGVtYXNbJF0sZGVsZXRlIHRoaXMucmVmc1skXSx0aGlzfWNhc2VcIm9iamVjdFwiOntsZXQgUT0kO3RoaXMuX2NhY2hlLmRlbGV0ZShRKTtsZXQgSj0kW3RoaXMub3B0cy5zY2hlbWFJZF07aWYoSilKPSgwLHVKLm5vcm1hbGl6ZUlkKShKKSxkZWxldGUgdGhpcy5zY2hlbWFzW0pdLGRlbGV0ZSB0aGlzLnJlZnNbSl07cmV0dXJuIHRoaXN9ZGVmYXVsdDp0aHJvdyBFcnJvcihcImFqdi5yZW1vdmVTY2hlbWE6IGludmFsaWQgcGFyYW1ldGVyXCIpfX1hZGRWb2NhYnVsYXJ5KCQpe2ZvcihsZXQgUSBvZiAkKXRoaXMuYWRkS2V5d29yZChRKTtyZXR1cm4gdGhpc31hZGRLZXl3b3JkKCQsUSl7bGV0IEo7aWYodHlwZW9mICQ9PVwic3RyaW5nXCIpe2lmKEo9JCx0eXBlb2YgUT09XCJvYmplY3RcIil0aGlzLmxvZ2dlci53YXJuKFwidGhlc2UgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZCwgc2VlIGRvY3MgZm9yIGFkZEtleXdvcmRcIiksUS5rZXl3b3JkPUp9ZWxzZSBpZih0eXBlb2YgJD09XCJvYmplY3RcIiYmUT09PXZvaWQgMCl7aWYoUT0kLEo9US5rZXl3b3JkLEFycmF5LmlzQXJyYXkoSikmJiFKLmxlbmd0aCl0aHJvdyBFcnJvcihcImFkZEtleXdvcmRzOiBrZXl3b3JkIG11c3QgYmUgc3RyaW5nIG9yIG5vbi1lbXB0eSBhcnJheVwiKX1lbHNlIHRocm93IEVycm9yKFwiaW52YWxpZCBhZGRLZXl3b3JkcyBwYXJhbWV0ZXJzXCIpO2lmKGRyLmNhbGwodGhpcyxKLFEpLCFRKXJldHVybigwLGFCLmVhY2hJdGVtKShKLChYKT0+dEIuY2FsbCh0aGlzLFgpKSx0aGlzO25yLmNhbGwodGhpcyxRKTtsZXQgWT17Li4uUSx0eXBlOigwLHVXLmdldEpTT05UeXBlcykoUS50eXBlKSxzY2hlbWFUeXBlOigwLHVXLmdldEpTT05UeXBlcykoUS5zY2hlbWFUeXBlKX07cmV0dXJuKDAsYUIuZWFjaEl0ZW0pKEosWS50eXBlLmxlbmd0aD09PTA/KFgpPT50Qi5jYWxsKHRoaXMsWCxZKTooWCk9PlkudHlwZS5mb3JFYWNoKChXKT0+dEIuY2FsbCh0aGlzLFgsWSxXKSkpLHRoaXN9Z2V0S2V5d29yZCgkKXtsZXQgUT10aGlzLlJVTEVTLmFsbFskXTtyZXR1cm4gdHlwZW9mIFE9PVwib2JqZWN0XCI/US5kZWZpbml0aW9uOiEhUX1yZW1vdmVLZXl3b3JkKCQpe2xldHtSVUxFUzpRfT10aGlzO2RlbGV0ZSBRLmtleXdvcmRzWyRdLGRlbGV0ZSBRLmFsbFskXTtmb3IobGV0IEogb2YgUS5ydWxlcyl7bGV0IFk9Si5ydWxlcy5maW5kSW5kZXgoKFgpPT5YLmtleXdvcmQ9PT0kKTtpZihZPj0wKUoucnVsZXMuc3BsaWNlKFksMSl9cmV0dXJuIHRoaXN9YWRkRm9ybWF0KCQsUSl7aWYodHlwZW9mIFE9PVwic3RyaW5nXCIpUT1uZXcgUmVnRXhwKFEpO3JldHVybiB0aGlzLmZvcm1hdHNbJF09USx0aGlzfWVycm9yc1RleHQoJD10aGlzLmVycm9ycyx7c2VwYXJhdG9yOlE9XCIsIFwiLGRhdGFWYXI6Sj1cImRhdGFcIn09e30pe2lmKCEkfHwkLmxlbmd0aD09PTApcmV0dXJuXCJObyBlcnJvcnNcIjtyZXR1cm4gJC5tYXAoKFkpPT5gJHtKfSR7WS5pbnN0YW5jZVBhdGh9ICR7WS5tZXNzYWdlfWApLnJlZHVjZSgoWSxYKT0+WStRK1gpfSRkYXRhTWV0YVNjaGVtYSgkLFEpe2xldCBKPXRoaXMuUlVMRVMuYWxsOyQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgkKSk7Zm9yKGxldCBZIG9mIFEpe2xldCBYPVkuc3BsaXQoXCIvXCIpLnNsaWNlKDEpLFc9JDtmb3IobGV0IEcgb2YgWClXPVdbR107Zm9yKGxldCBHIGluIEope2xldCBVPUpbR107aWYodHlwZW9mIFUhPVwib2JqZWN0XCIpY29udGludWU7bGV0eyRkYXRhOkh9PVUuZGVmaW5pdGlvbixxPVdbR107aWYoSCYmcSlXW0ddPVNJKHEpfX1yZXR1cm4gJH1fcmVtb3ZlQWxsU2NoZW1hcygkLFEpe2ZvcihsZXQgSiBpbiAkKXtsZXQgWT0kW0pdO2lmKCFRfHxRLnRlc3QoSikpe2lmKHR5cGVvZiBZPT1cInN0cmluZ1wiKWRlbGV0ZSAkW0pdO2Vsc2UgaWYoWSYmIVkubWV0YSl0aGlzLl9jYWNoZS5kZWxldGUoWS5zY2hlbWEpLGRlbGV0ZSAkW0pdfX19X2FkZFNjaGVtYSgkLFEsSixZPXRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSxYPXRoaXMub3B0cy5hZGRVc2VkU2NoZW1hKXtsZXQgVyx7c2NoZW1hSWQ6R309dGhpcy5vcHRzO2lmKHR5cGVvZiAkPT1cIm9iamVjdFwiKVc9JFtHXTtlbHNlIGlmKHRoaXMub3B0cy5qdGQpdGhyb3cgRXJyb3IoXCJzY2hlbWEgbXVzdCBiZSBvYmplY3RcIik7ZWxzZSBpZih0eXBlb2YgJCE9XCJib29sZWFuXCIpdGhyb3cgRXJyb3IoXCJzY2hlbWEgbXVzdCBiZSBvYmplY3Qgb3IgYm9vbGVhblwiKTtsZXQgVT10aGlzLl9jYWNoZS5nZXQoJCk7aWYoVSE9PXZvaWQgMClyZXR1cm4gVTtKPSgwLHVKLm5vcm1hbGl6ZUlkKShXfHxKKTtsZXQgSD11Si5nZXRTY2hlbWFSZWZzLmNhbGwodGhpcywkLEopO2lmKFU9bmV3IGhKLlNjaGVtYUVudih7c2NoZW1hOiQsc2NoZW1hSWQ6RyxtZXRhOlEsYmFzZUlkOkosbG9jYWxSZWZzOkh9KSx0aGlzLl9jYWNoZS5zZXQoVS5zY2hlbWEsVSksWCYmIUouc3RhcnRzV2l0aChcIiNcIikpe2lmKEopdGhpcy5fY2hlY2tVbmlxdWUoSik7dGhpcy5yZWZzW0pdPVV9aWYoWSl0aGlzLnZhbGlkYXRlU2NoZW1hKCQsITApO3JldHVybiBVfV9jaGVja1VuaXF1ZSgkKXtpZih0aGlzLnNjaGVtYXNbJF18fHRoaXMucmVmc1skXSl0aHJvdyBFcnJvcihgc2NoZW1hIHdpdGgga2V5IG9yIGlkIFwiJHskfVwiIGFscmVhZHkgZXhpc3RzYCl9X2NvbXBpbGVTY2hlbWFFbnYoJCl7aWYoJC5tZXRhKXRoaXMuX2NvbXBpbGVNZXRhU2NoZW1hKCQpO2Vsc2UgaEouY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsJCk7aWYoISQudmFsaWRhdGUpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7cmV0dXJuICQudmFsaWRhdGV9X2NvbXBpbGVNZXRhU2NoZW1hKCQpe2xldCBRPXRoaXMub3B0czt0aGlzLm9wdHM9dGhpcy5fbWV0YU9wdHM7dHJ5e2hKLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCQpfWZpbmFsbHl7dGhpcy5vcHRzPVF9fX1tVy5WYWxpZGF0aW9uRXJyb3I9X3IuZGVmYXVsdDttVy5NaXNzaW5nUmVmRXJyb3I9YkkuZGVmYXVsdDtXMS5kZWZhdWx0PW1XO2Z1bmN0aW9uIFBJKCQsUSxKLFk9XCJlcnJvclwiKXtmb3IobGV0IFggaW4gJCl7bGV0IFc9WDtpZihXIGluIFEpdGhpcy5sb2dnZXJbWV0oYCR7Sn06IG9wdGlvbiAke1h9LiAkeyRbV119YCl9fWZ1bmN0aW9uIEVJKCQpe3JldHVybiAkPSgwLHVKLm5vcm1hbGl6ZUlkKSgkKSx0aGlzLnNjaGVtYXNbJF18fHRoaXMucmVmc1skXX1mdW5jdGlvbiBncigpe2xldCAkPXRoaXMub3B0cy5zY2hlbWFzO2lmKCEkKXJldHVybjtpZihBcnJheS5pc0FycmF5KCQpKXRoaXMuYWRkU2NoZW1hKCQpO2Vsc2UgZm9yKGxldCBRIGluICQpdGhpcy5hZGRTY2hlbWEoJFtRXSxRKX1mdW5jdGlvbiBocigpe2ZvcihsZXQgJCBpbiB0aGlzLm9wdHMuZm9ybWF0cyl7bGV0IFE9dGhpcy5vcHRzLmZvcm1hdHNbJF07aWYoUSl0aGlzLmFkZEZvcm1hdCgkLFEpfX1mdW5jdGlvbiB1cigkKXtpZihBcnJheS5pc0FycmF5KCQpKXt0aGlzLmFkZFZvY2FidWxhcnkoJCk7cmV0dXJufXRoaXMubG9nZ2VyLndhcm4oXCJrZXl3b3JkcyBvcHRpb24gYXMgbWFwIGlzIGRlcHJlY2F0ZWQsIHBhc3MgYXJyYXlcIik7Zm9yKGxldCBRIGluICQpe2xldCBKPSRbUV07aWYoIUoua2V5d29yZClKLmtleXdvcmQ9UTt0aGlzLmFkZEtleXdvcmQoSil9fWZ1bmN0aW9uIG1yKCl7bGV0ICQ9ey4uLnRoaXMub3B0c307Zm9yKGxldCBRIG9mIENyKWRlbGV0ZSAkW1FdO3JldHVybiAkfXZhciBscj17bG9nKCl7fSx3YXJuKCl7fSxlcnJvcigpe319O2Z1bmN0aW9uIGNyKCQpe2lmKCQ9PT0hMSlyZXR1cm4gbHI7aWYoJD09PXZvaWQgMClyZXR1cm4gY29uc29sZTtpZigkLmxvZyYmJC53YXJuJiYkLmVycm9yKXJldHVybiAkO3Rocm93IEVycm9yKFwibG9nZ2VyIG11c3QgaW1wbGVtZW50IGxvZywgd2FybiBhbmQgZXJyb3IgbWV0aG9kc1wiKX12YXIgcHI9L15bYS16XyRdW2EtejAtOV8kOi1dKiQvaTtmdW5jdGlvbiBkcigkLFEpe2xldHtSVUxFUzpKfT10aGlzO2lmKCgwLGFCLmVhY2hJdGVtKSgkLChZKT0+e2lmKEoua2V5d29yZHNbWV0pdGhyb3cgRXJyb3IoYEtleXdvcmQgJHtZfSBpcyBhbHJlYWR5IGRlZmluZWRgKTtpZighcHIudGVzdChZKSl0aHJvdyBFcnJvcihgS2V5d29yZCAke1l9IGhhcyBpbnZhbGlkIG5hbWVgKX0pLCFRKXJldHVybjtpZihRLiRkYXRhJiYhKChcImNvZGVcImluIFEpfHwoXCJ2YWxpZGF0ZVwiaW4gUSkpKXRocm93IEVycm9yKCckZGF0YSBrZXl3b3JkIG11c3QgaGF2ZSBcImNvZGVcIiBvciBcInZhbGlkYXRlXCIgZnVuY3Rpb24nKX1mdW5jdGlvbiB0QigkLFEsSil7dmFyIFk7bGV0IFg9UT09PW51bGx8fFE9PT12b2lkIDA/dm9pZCAwOlEucG9zdDtpZihKJiZYKXRocm93IEVycm9yKCdrZXl3b3JkIHdpdGggXCJwb3N0XCIgZmxhZyBjYW5ub3QgaGF2ZSBcInR5cGVcIicpO2xldHtSVUxFUzpXfT10aGlzLEc9WD9XLnBvc3Q6Vy5ydWxlcy5maW5kKCh7dHlwZTpIfSk9Pkg9PT1KKTtpZighRylHPXt0eXBlOkoscnVsZXM6W119LFcucnVsZXMucHVzaChHKTtpZihXLmtleXdvcmRzWyRdPSEwLCFRKXJldHVybjtsZXQgVT17a2V5d29yZDokLGRlZmluaXRpb246ey4uLlEsdHlwZTooMCx1Vy5nZXRKU09OVHlwZXMpKFEudHlwZSksc2NoZW1hVHlwZTooMCx1Vy5nZXRKU09OVHlwZXMpKFEuc2NoZW1hVHlwZSl9fTtpZihRLmJlZm9yZSlpci5jYWxsKHRoaXMsRyxVLFEuYmVmb3JlKTtlbHNlIEcucnVsZXMucHVzaChVKTtXLmFsbFskXT1VLChZPVEuaW1wbGVtZW50cyk9PT1udWxsfHxZPT09dm9pZCAwfHxZLmZvckVhY2goKEgpPT50aGlzLmFkZEtleXdvcmQoSCkpfWZ1bmN0aW9uIGlyKCQsUSxKKXtsZXQgWT0kLnJ1bGVzLmZpbmRJbmRleCgoWCk9Plgua2V5d29yZD09PUopO2lmKFk+PTApJC5ydWxlcy5zcGxpY2UoWSwwLFEpO2Vsc2UgJC5ydWxlcy5wdXNoKFEpLHRoaXMubG9nZ2VyLndhcm4oYHJ1bGUgJHtKfSBpcyBub3QgZGVmaW5lZGApfWZ1bmN0aW9uIG5yKCQpe2xldHttZXRhU2NoZW1hOlF9PSQ7aWYoUT09PXZvaWQgMClyZXR1cm47aWYoJC4kZGF0YSYmdGhpcy5vcHRzLiRkYXRhKVE9U0koUSk7JC52YWxpZGF0ZVNjaGVtYT10aGlzLmNvbXBpbGUoUSwhMCl9dmFyIHJyPXskcmVmOlwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jXCJ9O2Z1bmN0aW9uIFNJKCQpe3JldHVybnthbnlPZjpbJCxycl19fX0pO3ZhciBDST1JKCh2SSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodkksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGFyPXtrZXl3b3JkOlwiaWRcIixjb2RlKCl7dGhyb3cgRXJyb3IoJ05PVCBTVVBQT1JURUQ6IGtleXdvcmQgXCJpZFwiLCB1c2UgXCIkaWRcIiBmb3Igc2NoZW1hIElEJyl9fTt2SS5kZWZhdWx0PWFyfSk7dmFyIGhJPUkoKHlJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5SSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5SS5jYWxsUmVmPXlJLmdldFZhbGlkYXRlPXZvaWQgMDt2YXIgZXI9ZkooKSxUST0kNCgpLEU2PVEkKCksWjk9SjEoKSx4ST1mVygpLGxXPXEkKCksJG89e2tleXdvcmQ6XCIkcmVmXCIsc2NoZW1hVHlwZTpcInN0cmluZ1wiLGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLGl0Oll9PSQse2Jhc2VJZDpYLHNjaGVtYUVudjpXLHZhbGlkYXRlTmFtZTpHLG9wdHM6VSxzZWxmOkh9PVkse3Jvb3Q6cX09VztpZigoSj09PVwiI1wifHxKPT09XCIjL1wiKSYmWD09PXEuYmFzZUlkKXJldHVybiBCKCk7bGV0IFY9eEkucmVzb2x2ZVJlZi5jYWxsKEgscSxYLEopO2lmKFY9PT12b2lkIDApdGhyb3cgbmV3IGVyLmRlZmF1bHQoWS5vcHRzLnVyaVJlc29sdmVyLFgsSik7aWYoViBpbnN0YW5jZW9mIHhJLlNjaGVtYUVudilyZXR1cm4geihWKTtyZXR1cm4gTihWKTtmdW5jdGlvbiBCKCl7aWYoVz09PXEpcmV0dXJuIGNXKCQsRyxXLFcuJGFzeW5jKTtsZXQgdz1RLnNjb3BlVmFsdWUoXCJyb290XCIse3JlZjpxfSk7cmV0dXJuIGNXKCQsRTYuX2Ake3d9LnZhbGlkYXRlYCxxLHEuJGFzeW5jKX1mdW5jdGlvbiB6KHcpe2xldCBPPWZJKCQsdyk7Y1coJCxPLHcsdy4kYXN5bmMpfWZ1bmN0aW9uIE4odyl7bGV0IE89US5zY29wZVZhbHVlKFwic2NoZW1hXCIsVS5jb2RlLnNvdXJjZT09PSEwP3tyZWY6dyxjb2RlOigwLEU2LnN0cmluZ2lmeSkodyl9OntyZWY6d30pLEQ9US5uYW1lKFwidmFsaWRcIiksTT0kLnN1YnNjaGVtYSh7c2NoZW1hOncsZGF0YVR5cGVzOltdLHNjaGVtYVBhdGg6RTYubmlsLHRvcFNjaGVtYVJlZjpPLGVyclNjaGVtYVBhdGg6Sn0sRCk7JC5tZXJnZUV2YWx1YXRlZChNKSwkLm9rKEQpfX19O2Z1bmN0aW9uIGZJKCQsUSl7bGV0e2dlbjpKfT0kO3JldHVybiBRLnZhbGlkYXRlP0ouc2NvcGVWYWx1ZShcInZhbGlkYXRlXCIse3JlZjpRLnZhbGlkYXRlfSk6RTYuX2Ake0ouc2NvcGVWYWx1ZShcIndyYXBwZXJcIix7cmVmOlF9KX0udmFsaWRhdGVgfXlJLmdldFZhbGlkYXRlPWZJO2Z1bmN0aW9uIGNXKCQsUSxKLFkpe2xldHtnZW46WCxpdDpXfT0kLHthbGxFcnJvcnM6RyxzY2hlbWFFbnY6VSxvcHRzOkh9PVcscT1ILnBhc3NDb250ZXh0P1o5LmRlZmF1bHQudGhpczpFNi5uaWw7aWYoWSlWKCk7ZWxzZSBCKCk7ZnVuY3Rpb24gVigpe2lmKCFVLiRhc3luYyl0aHJvdyBFcnJvcihcImFzeW5jIHNjaGVtYSByZWZlcmVuY2VkIGJ5IHN5bmMgc2NoZW1hXCIpO2xldCB3PVgubGV0KFwidmFsaWRcIik7WC50cnkoKCk9PntpZihYLmNvZGUoRTYuX2Bhd2FpdCAkeygwLFRJLmNhbGxWYWxpZGF0ZUNvZGUpKCQsUSxxKX1gKSxOKFEpLCFHKVguYXNzaWduKHcsITApfSwoTyk9PntpZihYLmlmKEU2Ll9gISgke099IGluc3RhbmNlb2YgJHtXLlZhbGlkYXRpb25FcnJvcn0pYCwoKT0+WC50aHJvdyhPKSkseihPKSwhRylYLmFzc2lnbih3LCExKX0pLCQub2sodyl9ZnVuY3Rpb24gQigpeyQucmVzdWx0KCgwLFRJLmNhbGxWYWxpZGF0ZUNvZGUpKCQsUSxxKSwoKT0+TihRKSwoKT0+eihRKSl9ZnVuY3Rpb24geih3KXtsZXQgTz1FNi5fYCR7d30uZXJyb3JzYDtYLmFzc2lnbihaOS5kZWZhdWx0LnZFcnJvcnMsRTYuX2Ake1o5LmRlZmF1bHQudkVycm9yc30gPT09IG51bGwgPyAke099IDogJHtaOS5kZWZhdWx0LnZFcnJvcnN9LmNvbmNhdCgke099KWApLFguYXNzaWduKFo5LmRlZmF1bHQuZXJyb3JzLEU2Ll9gJHtaOS5kZWZhdWx0LnZFcnJvcnN9Lmxlbmd0aGApfWZ1bmN0aW9uIE4odyl7dmFyIE87aWYoIVcub3B0cy51bmV2YWx1YXRlZClyZXR1cm47bGV0IEQ9KE89Sj09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkoudmFsaWRhdGUpPT09bnVsbHx8Tz09PXZvaWQgMD92b2lkIDA6Ty5ldmFsdWF0ZWQ7aWYoVy5wcm9wcyE9PSEwKWlmKEQmJiFELmR5bmFtaWNQcm9wcyl7aWYoRC5wcm9wcyE9PXZvaWQgMClXLnByb3BzPWxXLm1lcmdlRXZhbHVhdGVkLnByb3BzKFgsRC5wcm9wcyxXLnByb3BzKX1lbHNle2xldCBNPVgudmFyKFwicHJvcHNcIixFNi5fYCR7d30uZXZhbHVhdGVkLnByb3BzYCk7Vy5wcm9wcz1sVy5tZXJnZUV2YWx1YXRlZC5wcm9wcyhYLE0sVy5wcm9wcyxFNi5OYW1lKX1pZihXLml0ZW1zIT09ITApaWYoRCYmIUQuZHluYW1pY0l0ZW1zKXtpZihELml0ZW1zIT09dm9pZCAwKVcuaXRlbXM9bFcubWVyZ2VFdmFsdWF0ZWQuaXRlbXMoWCxELml0ZW1zLFcuaXRlbXMpfWVsc2V7bGV0IE09WC52YXIoXCJpdGVtc1wiLEU2Ll9gJHt3fS5ldmFsdWF0ZWQuaXRlbXNgKTtXLml0ZW1zPWxXLm1lcmdlRXZhbHVhdGVkLml0ZW1zKFgsTSxXLml0ZW1zLEU2Lk5hbWUpfX19eUkuY2FsbFJlZj1jVzt5SS5kZWZhdWx0PSRvfSk7dmFyIG1JPUkoKHVJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1SSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgWG89Q0koKSxZbz1oSSgpLFdvPVtcIiRzY2hlbWFcIixcIiRpZFwiLFwiJGRlZnNcIixcIiR2b2NhYnVsYXJ5XCIse2tleXdvcmQ6XCIkY29tbWVudFwifSxcImRlZmluaXRpb25zXCIsWG8uZGVmYXVsdCxZby5kZWZhdWx0XTt1SS5kZWZhdWx0PVdvfSk7dmFyIGNJPUkoKGxJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShsSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcFc9USQoKSxtMT1wVy5vcGVyYXRvcnMsZFc9e21heGltdW06e29rU3RyOlwiPD1cIixvazptMS5MVEUsZmFpbDptMS5HVH0sbWluaW11bTp7b2tTdHI6XCI+PVwiLG9rOm0xLkdURSxmYWlsOm0xLkxUfSxleGNsdXNpdmVNYXhpbXVtOntva1N0cjpcIjxcIixvazptMS5MVCxmYWlsOm0xLkdURX0sZXhjbHVzaXZlTWluaW11bTp7b2tTdHI6XCI+XCIsb2s6bTEuR1QsZmFpbDptMS5MVEV9fSxVbz17bWVzc2FnZTooe2tleXdvcmQ6JCxzY2hlbWFDb2RlOlF9KT0+cFcuc3RyYG11c3QgYmUgJHtkV1skXS5va1N0cn0gJHtRfWAscGFyYW1zOih7a2V5d29yZDokLHNjaGVtYUNvZGU6UX0pPT5wVy5fYHtjb21wYXJpc29uOiAke2RXWyRdLm9rU3RyfSwgbGltaXQ6ICR7UX19YH0sSG89e2tleXdvcmQ6T2JqZWN0LmtleXMoZFcpLHR5cGU6XCJudW1iZXJcIixzY2hlbWFUeXBlOlwibnVtYmVyXCIsJGRhdGE6ITAsZXJyb3I6VW8sY29kZSgkKXtsZXR7a2V5d29yZDpRLGRhdGE6SixzY2hlbWFDb2RlOll9PSQ7JC5mYWlsJGRhdGEocFcuX2Ake0p9ICR7ZFdbUV0uZmFpbH0gJHtZfSB8fCBpc05hTigke0p9KWApfX07bEkuZGVmYXVsdD1Ib30pO3ZhciBkST1JKChwSSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkocEksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG1KPVEkKCkscW89e21lc3NhZ2U6KHtzY2hlbWFDb2RlOiR9KT0+bUouc3RyYG11c3QgYmUgbXVsdGlwbGUgb2YgJHskfWAscGFyYW1zOih7c2NoZW1hQ29kZTokfSk9Pm1KLl9ge211bHRpcGxlT2Y6ICR7JH19YH0sVm89e2tleXdvcmQ6XCJtdWx0aXBsZU9mXCIsdHlwZTpcIm51bWJlclwiLHNjaGVtYVR5cGU6XCJudW1iZXJcIiwkZGF0YTohMCxlcnJvcjpxbyxjb2RlKCQpe2xldHtnZW46USxkYXRhOkosc2NoZW1hQ29kZTpZLGl0Olh9PSQsVz1YLm9wdHMubXVsdGlwbGVPZlByZWNpc2lvbixHPVEubGV0KFwicmVzXCIpLFU9Vz9tSi5fYE1hdGguYWJzKE1hdGgucm91bmQoJHtHfSkgLSAke0d9KSA+IDFlLSR7V31gOm1KLl9gJHtHfSAhPT0gcGFyc2VJbnQoJHtHfSlgOyQuZmFpbCRkYXRhKG1KLl9gKCR7WX0gPT09IDAgfHwgKCR7R30gPSAke0p9LyR7WX0sICR7VX0pKWApfX07cEkuZGVmYXVsdD1Wb30pO3ZhciByST1JKChuSSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkobkksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZnVuY3Rpb24gaUkoJCl7bGV0IFE9JC5sZW5ndGgsSj0wLFk9MCxYO3doaWxlKFk8USlpZihKKyssWD0kLmNoYXJDb2RlQXQoWSsrKSxYPj01NTI5NiYmWDw9NTYzMTkmJlk8USl7aWYoWD0kLmNoYXJDb2RlQXQoWSksKFgmNjQ1MTIpPT09NTYzMjApWSsrfXJldHVybiBKfW5JLmRlZmF1bHQ9aUk7aUkuY29kZT0ncmVxdWlyZShcImFqdi9kaXN0L3J1bnRpbWUvdWNzMmxlbmd0aFwiKS5kZWZhdWx0J30pO3ZhciB0ST1JKChvSSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkob0ksXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGcwPVEkKCksTm89cSQoKSx3bz1ySSgpLE9vPXttZXNzYWdlKHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSl7bGV0IEo9JD09PVwibWF4TGVuZ3RoXCI/XCJtb3JlXCI6XCJmZXdlclwiO3JldHVybiBnMC5zdHJgbXVzdCBOT1QgaGF2ZSAke0p9IHRoYW4gJHtRfSBjaGFyYWN0ZXJzYH0scGFyYW1zOih7c2NoZW1hQ29kZTokfSk9PmcwLl9ge2xpbWl0OiAkeyR9fWB9LERvPXtrZXl3b3JkOltcIm1heExlbmd0aFwiLFwibWluTGVuZ3RoXCJdLHR5cGU6XCJzdHJpbmdcIixzY2hlbWFUeXBlOlwibnVtYmVyXCIsJGRhdGE6ITAsZXJyb3I6T28sY29kZSgkKXtsZXR7a2V5d29yZDpRLGRhdGE6SixzY2hlbWFDb2RlOlksaXQ6WH09JCxXPVE9PT1cIm1heExlbmd0aFwiP2cwLm9wZXJhdG9ycy5HVDpnMC5vcGVyYXRvcnMuTFQsRz1YLm9wdHMudW5pY29kZT09PSExP2cwLl9gJHtKfS5sZW5ndGhgOmcwLl9gJHsoMCxOby51c2VGdW5jKSgkLmdlbix3by5kZWZhdWx0KX0oJHtKfSlgOyQuZmFpbCRkYXRhKGcwLl9gJHtHfSAke1d9ICR7WX1gKX19O29JLmRlZmF1bHQ9RG99KTt2YXIgc0k9SSgoYUkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGFJLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBabz0kNCgpLE1vPXEkKCksTTk9USQoKSxMbz17bWVzc2FnZTooe3NjaGVtYUNvZGU6JH0pPT5NOS5zdHJgbXVzdCBtYXRjaCBwYXR0ZXJuIFwiJHskfVwiYCxwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+TTkuX2B7cGF0dGVybjogJHskfX1gfSxqbz17a2V5d29yZDpcInBhdHRlcm5cIix0eXBlOlwic3RyaW5nXCIsc2NoZW1hVHlwZTpcInN0cmluZ1wiLCRkYXRhOiEwLGVycm9yOkxvLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SiwkZGF0YTpZLHNjaGVtYTpYLHNjaGVtYUNvZGU6VyxpdDpHfT0kLFU9Ry5vcHRzLnVuaWNvZGVSZWdFeHA/XCJ1XCI6XCJcIjtpZihZKXtsZXR7cmVnRXhwOkh9PUcub3B0cy5jb2RlLHE9SC5jb2RlPT09XCJuZXcgUmVnRXhwXCI/TTkuX2BuZXcgUmVnRXhwYDooMCxNby51c2VGdW5jKShRLEgpLFY9US5sZXQoXCJ2YWxpZFwiKTtRLnRyeSgoKT0+US5hc3NpZ24oVixNOS5fYCR7cX0oJHtXfSwgJHtVfSkudGVzdCgke0p9KWApLCgpPT5RLmFzc2lnbihWLCExKSksJC5mYWlsJGRhdGEoTTkuX2AhJHtWfWApfWVsc2V7bGV0IEg9KDAsWm8udXNlUGF0dGVybikoJCxYKTskLmZhaWwkZGF0YShNOS5fYCEke0h9LnRlc3QoJHtKfSlgKX19fTthSS5kZWZhdWx0PWpvfSk7dmFyICRSPUkoKGVJKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlSSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbEo9USQoKSxJbz17bWVzc2FnZSh7a2V5d29yZDokLHNjaGVtYUNvZGU6UX0pe2xldCBKPSQ9PT1cIm1heFByb3BlcnRpZXNcIj9cIm1vcmVcIjpcImZld2VyXCI7cmV0dXJuIGxKLnN0cmBtdXN0IE5PVCBoYXZlICR7Sn0gdGhhbiAke1F9IHByb3BlcnRpZXNgfSxwYXJhbXM6KHtzY2hlbWFDb2RlOiR9KT0+bEouX2B7bGltaXQ6ICR7JH19YH0sUm89e2tleXdvcmQ6W1wibWF4UHJvcGVydGllc1wiLFwibWluUHJvcGVydGllc1wiXSx0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcIm51bWJlclwiLCRkYXRhOiEwLGVycm9yOklvLGNvZGUoJCl7bGV0e2tleXdvcmQ6USxkYXRhOkosc2NoZW1hQ29kZTpZfT0kLFg9UT09PVwibWF4UHJvcGVydGllc1wiP2xKLm9wZXJhdG9ycy5HVDpsSi5vcGVyYXRvcnMuTFQ7JC5mYWlsJGRhdGEobEouX2BPYmplY3Qua2V5cygke0p9KS5sZW5ndGggJHtYfSAke1l9YCl9fTtlSS5kZWZhdWx0PVJvfSk7dmFyIEpSPUkoKFFSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShRUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgY0o9JDQoKSxwSj1RJCgpLEVvPXEkKCksYm89e21lc3NhZ2U6KHtwYXJhbXM6e21pc3NpbmdQcm9wZXJ0eTokfX0pPT5wSi5zdHJgbXVzdCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5ICckeyR9J2AscGFyYW1zOih7cGFyYW1zOnttaXNzaW5nUHJvcGVydHk6JH19KT0+cEouX2B7bWlzc2luZ1Byb3BlcnR5OiAkeyR9fWB9LF9vPXtrZXl3b3JkOlwicmVxdWlyZWRcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcImFycmF5XCIsJGRhdGE6ITAsZXJyb3I6Ym8sY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosc2NoZW1hQ29kZTpZLGRhdGE6WCwkZGF0YTpXLGl0Okd9PSQse29wdHM6VX09RztpZighVyYmSi5sZW5ndGg9PT0wKXJldHVybjtsZXQgSD1KLmxlbmd0aD49VS5sb29wUmVxdWlyZWQ7aWYoRy5hbGxFcnJvcnMpcSgpO2Vsc2UgVigpO2lmKFUuc3RyaWN0UmVxdWlyZWQpe2xldCBOPSQucGFyZW50U2NoZW1hLnByb3BlcnRpZXMse2RlZmluZWRQcm9wZXJ0aWVzOnd9PSQuaXQ7Zm9yKGxldCBPIG9mIEopaWYoKE49PT1udWxsfHxOPT09dm9pZCAwP3ZvaWQgMDpOW09dKT09PXZvaWQgMCYmIXcuaGFzKE8pKXtsZXQgRD1HLnNjaGVtYUVudi5iYXNlSWQrRy5lcnJTY2hlbWFQYXRoLE09YHJlcXVpcmVkIHByb3BlcnR5IFwiJHtPfVwiIGlzIG5vdCBkZWZpbmVkIGF0IFwiJHtEfVwiIChzdHJpY3RSZXF1aXJlZClgOygwLEVvLmNoZWNrU3RyaWN0TW9kZSkoRyxNLEcub3B0cy5zdHJpY3RSZXF1aXJlZCl9fWZ1bmN0aW9uIHEoKXtpZihIfHxXKSQuYmxvY2skZGF0YShwSi5uaWwsQik7ZWxzZSBmb3IobGV0IE4gb2YgSikoMCxjSi5jaGVja1JlcG9ydE1pc3NpbmdQcm9wKSgkLE4pfWZ1bmN0aW9uIFYoKXtsZXQgTj1RLmxldChcIm1pc3NpbmdcIik7aWYoSHx8Vyl7bGV0IHc9US5sZXQoXCJ2YWxpZFwiLCEwKTskLmJsb2NrJGRhdGEodywoKT0+eihOLHcpKSwkLm9rKHcpfWVsc2UgUS5pZigoMCxjSi5jaGVja01pc3NpbmdQcm9wKSgkLEosTikpLCgwLGNKLnJlcG9ydE1pc3NpbmdQcm9wKSgkLE4pLFEuZWxzZSgpfWZ1bmN0aW9uIEIoKXtRLmZvck9mKFwicHJvcFwiLFksKE4pPT57JC5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTpOfSksUS5pZigoMCxjSi5ub1Byb3BlcnR5SW5EYXRhKShRLFgsTixVLm93blByb3BlcnRpZXMpLCgpPT4kLmVycm9yKCkpfSl9ZnVuY3Rpb24geihOLHcpeyQuc2V0UGFyYW1zKHttaXNzaW5nUHJvcGVydHk6Tn0pLFEuZm9yT2YoTixZLCgpPT57US5hc3NpZ24odywoMCxjSi5wcm9wZXJ0eUluRGF0YSkoUSxYLE4sVS5vd25Qcm9wZXJ0aWVzKSksUS5pZigoMCxwSi5ub3QpKHcpLCgpPT57JC5lcnJvcigpLFEuYnJlYWsoKX0pfSxwSi5uaWwpfX19O1FSLmRlZmF1bHQ9X299KTt2YXIgWVI9SSgoWFIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFhSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBkSj1RJCgpLGtvPXttZXNzYWdlKHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSl7bGV0IEo9JD09PVwibWF4SXRlbXNcIj9cIm1vcmVcIjpcImZld2VyXCI7cmV0dXJuIGRKLnN0cmBtdXN0IE5PVCBoYXZlICR7Sn0gdGhhbiAke1F9IGl0ZW1zYH0scGFyYW1zOih7c2NoZW1hQ29kZTokfSk9PmRKLl9ge2xpbWl0OiAkeyR9fWB9LHZvPXtrZXl3b3JkOltcIm1heEl0ZW1zXCIsXCJtaW5JdGVtc1wiXSx0eXBlOlwiYXJyYXlcIixzY2hlbWFUeXBlOlwibnVtYmVyXCIsJGRhdGE6ITAsZXJyb3I6a28sY29kZSgkKXtsZXR7a2V5d29yZDpRLGRhdGE6SixzY2hlbWFDb2RlOll9PSQsWD1RPT09XCJtYXhJdGVtc1wiP2RKLm9wZXJhdG9ycy5HVDpkSi5vcGVyYXRvcnMuTFQ7JC5mYWlsJGRhdGEoZEouX2Ake0p9Lmxlbmd0aCAke1h9ICR7WX1gKX19O1hSLmRlZmF1bHQ9dm99KTt2YXIgaVc9SSgoR1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEdSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBXUj15QigpO1dSLmNvZGU9J3JlcXVpcmUoXCJhanYvZGlzdC9ydW50aW1lL2VxdWFsXCIpLmRlZmF1bHQnO0dSLmRlZmF1bHQ9V1J9KTt2YXIgSFI9SSgoVVIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFVSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBzQj1rSigpLFk2PVEkKCkseG89cSQoKSxmbz1pVygpLHlvPXttZXNzYWdlOih7cGFyYW1zOntpOiQsajpRfX0pPT5ZNi5zdHJgbXVzdCBOT1QgaGF2ZSBkdXBsaWNhdGUgaXRlbXMgKGl0ZW1zICMjICR7UX0gYW5kICR7JH0gYXJlIGlkZW50aWNhbClgLHBhcmFtczooe3BhcmFtczp7aTokLGo6UX19KT0+WTYuX2B7aTogJHskfSwgajogJHtRfX1gfSxnbz17a2V5d29yZDpcInVuaXF1ZUl0ZW1zXCIsdHlwZTpcImFycmF5XCIsc2NoZW1hVHlwZTpcImJvb2xlYW5cIiwkZGF0YTohMCxlcnJvcjp5byxjb2RlKCQpe2xldHtnZW46USxkYXRhOkosJGRhdGE6WSxzY2hlbWE6WCxwYXJlbnRTY2hlbWE6VyxzY2hlbWFDb2RlOkcsaXQ6VX09JDtpZighWSYmIVgpcmV0dXJuO2xldCBIPVEubGV0KFwidmFsaWRcIikscT1XLml0ZW1zPygwLHNCLmdldFNjaGVtYVR5cGVzKShXLml0ZW1zKTpbXTskLmJsb2NrJGRhdGEoSCxWLFk2Ll9gJHtHfSA9PT0gZmFsc2VgKSwkLm9rKEgpO2Z1bmN0aW9uIFYoKXtsZXQgdz1RLmxldChcImlcIixZNi5fYCR7Sn0ubGVuZ3RoYCksTz1RLmxldChcImpcIik7JC5zZXRQYXJhbXMoe2k6dyxqOk99KSxRLmFzc2lnbihILCEwKSxRLmlmKFk2Ll9gJHt3fSA+IDFgLCgpPT4oQigpP3o6TikodyxPKSl9ZnVuY3Rpb24gQigpe3JldHVybiBxLmxlbmd0aD4wJiYhcS5zb21lKCh3KT0+dz09PVwib2JqZWN0XCJ8fHc9PT1cImFycmF5XCIpfWZ1bmN0aW9uIHoodyxPKXtsZXQgRD1RLm5hbWUoXCJpdGVtXCIpLE09KDAsc0IuY2hlY2tEYXRhVHlwZXMpKHEsRCxVLm9wdHMuc3RyaWN0TnVtYmVycyxzQi5EYXRhVHlwZS5Xcm9uZyksaj1RLmNvbnN0KFwiaW5kaWNlc1wiLFk2Ll9ge31gKTtRLmZvcihZNi5fYDske3d9LS07YCwoKT0+e2lmKFEubGV0KEQsWTYuX2Ake0p9WyR7d31dYCksUS5pZihNLFk2Ll9gY29udGludWVgKSxxLmxlbmd0aD4xKVEuaWYoWTYuX2B0eXBlb2YgJHtEfSA9PSBcInN0cmluZ1wiYCxZNi5fYCR7RH0gKz0gXCJfXCJgKTtRLmlmKFk2Ll9gdHlwZW9mICR7an1bJHtEfV0gPT0gXCJudW1iZXJcImAsKCk9PntRLmFzc2lnbihPLFk2Ll9gJHtqfVske0R9XWApLCQuZXJyb3IoKSxRLmFzc2lnbihILCExKS5icmVhaygpfSkuY29kZShZNi5fYCR7an1bJHtEfV0gPSAke3d9YCl9KX1mdW5jdGlvbiBOKHcsTyl7bGV0IEQ9KDAseG8udXNlRnVuYykoUSxmby5kZWZhdWx0KSxNPVEubmFtZShcIm91dGVyXCIpO1EubGFiZWwoTSkuZm9yKFk2Ll9gOyR7d30tLTtgLCgpPT5RLmZvcihZNi5fYCR7T30gPSAke3d9OyAke099LS07YCwoKT0+US5pZihZNi5fYCR7RH0oJHtKfVske3d9XSwgJHtKfVske099XSlgLCgpPT57JC5lcnJvcigpLFEuYXNzaWduKEgsITEpLmJyZWFrKE0pfSkpKX19fTtVUi5kZWZhdWx0PWdvfSk7dmFyIHFSPUkoKEtSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShLUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZUI9USQoKSx1bz1xJCgpLG1vPWlXKCksbG89e21lc3NhZ2U6XCJtdXN0IGJlIGVxdWFsIHRvIGNvbnN0YW50XCIscGFyYW1zOih7c2NoZW1hQ29kZTokfSk9PmVCLl9ge2FsbG93ZWRWYWx1ZTogJHskfX1gfSxjbz17a2V5d29yZDpcImNvbnN0XCIsJGRhdGE6ITAsZXJyb3I6bG8sY29kZSgkKXtsZXR7Z2VuOlEsZGF0YTpKLCRkYXRhOlksc2NoZW1hQ29kZTpYLHNjaGVtYTpXfT0kO2lmKFl8fFcmJnR5cGVvZiBXPT1cIm9iamVjdFwiKSQuZmFpbCRkYXRhKGVCLl9gISR7KDAsdW8udXNlRnVuYykoUSxtby5kZWZhdWx0KX0oJHtKfSwgJHtYfSlgKTtlbHNlICQuZmFpbChlQi5fYCR7V30gIT09ICR7Sn1gKX19O0tSLmRlZmF1bHQ9Y299KTt2YXIgQlI9SSgoVlIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFZSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBpSj1RJCgpLGlvPXEkKCksbm89aVcoKSxybz17bWVzc2FnZTpcIm11c3QgYmUgZXF1YWwgdG8gb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlc1wiLHBhcmFtczooe3NjaGVtYUNvZGU6JH0pPT5pSi5fYHthbGxvd2VkVmFsdWVzOiAkeyR9fWB9LG9vPXtrZXl3b3JkOlwiZW51bVwiLHNjaGVtYVR5cGU6XCJhcnJheVwiLCRkYXRhOiEwLGVycm9yOnJvLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SiwkZGF0YTpZLHNjaGVtYTpYLHNjaGVtYUNvZGU6VyxpdDpHfT0kO2lmKCFZJiZYLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoXCJlbnVtIG11c3QgaGF2ZSBub24tZW1wdHkgYXJyYXlcIik7bGV0IFU9WC5sZW5ndGg+PUcub3B0cy5sb29wRW51bSxILHE9KCk9PkghPT1udWxsJiZIIT09dm9pZCAwP0g6SD0oMCxpby51c2VGdW5jKShRLG5vLmRlZmF1bHQpLFY7aWYoVXx8WSlWPVEubGV0KFwidmFsaWRcIiksJC5ibG9jayRkYXRhKFYsQik7ZWxzZXtpZighQXJyYXkuaXNBcnJheShYKSl0aHJvdyBFcnJvcihcImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvclwiKTtsZXQgTj1RLmNvbnN0KFwidlNjaGVtYVwiLFcpO1Y9KDAsaUoub3IpKC4uLlgubWFwKCh3LE8pPT56KE4sTykpKX0kLnBhc3MoVik7ZnVuY3Rpb24gQigpe1EuYXNzaWduKFYsITEpLFEuZm9yT2YoXCJ2XCIsVywoTik9PlEuaWYoaUouX2Ake3EoKX0oJHtKfSwgJHtOfSlgLCgpPT5RLmFzc2lnbihWLCEwKS5icmVhaygpKSl9ZnVuY3Rpb24geihOLHcpe2xldCBPPVhbd107cmV0dXJuIHR5cGVvZiBPPT09XCJvYmplY3RcIiYmTyE9PW51bGw/aUouX2Ake3EoKX0oJHtKfSwgJHtOfVske3d9XSlgOmlKLl9gJHtKfSA9PT0gJHtPfWB9fX07VlIuZGVmYXVsdD1vb30pO3ZhciBOUj1JKCh6Uik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoelIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGFvPWNJKCksc289ZEkoKSxlbz10SSgpLCR0PXNJKCksUXQ9JFIoKSxKdD1KUigpLFh0PVlSKCksWXQ9SFIoKSxXdD1xUigpLEd0PUJSKCksVXQ9W2FvLmRlZmF1bHQsc28uZGVmYXVsdCxlby5kZWZhdWx0LCR0LmRlZmF1bHQsUXQuZGVmYXVsdCxKdC5kZWZhdWx0LFh0LmRlZmF1bHQsWXQuZGVmYXVsdCx7a2V5d29yZDpcInR5cGVcIixzY2hlbWFUeXBlOltcInN0cmluZ1wiLFwiYXJyYXlcIl19LHtrZXl3b3JkOlwibnVsbGFibGVcIixzY2hlbWFUeXBlOlwiYm9vbGVhblwifSxXdC5kZWZhdWx0LEd0LmRlZmF1bHRdO3pSLmRlZmF1bHQ9VXR9KTt2YXIgUXo9SSgoT1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KE9SLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO09SLnZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zPXZvaWQgMDt2YXIgaDA9USQoKSwkej1xJCgpLEt0PXttZXNzYWdlOih7cGFyYW1zOntsZW46JH19KT0+aDAuc3RyYG11c3QgTk9UIGhhdmUgbW9yZSB0aGFuICR7JH0gaXRlbXNgLHBhcmFtczooe3BhcmFtczp7bGVuOiR9fSk9PmgwLl9ge2xpbWl0OiAkeyR9fWB9LHF0PXtrZXl3b3JkOlwiYWRkaXRpb25hbEl0ZW1zXCIsdHlwZTpcImFycmF5XCIsc2NoZW1hVHlwZTpbXCJib29sZWFuXCIsXCJvYmplY3RcIl0sYmVmb3JlOlwidW5pcXVlSXRlbXNcIixlcnJvcjpLdCxjb2RlKCQpe2xldHtwYXJlbnRTY2hlbWE6USxpdDpKfT0kLHtpdGVtczpZfT1RO2lmKCFBcnJheS5pc0FycmF5KFkpKXsoMCwkei5jaGVja1N0cmljdE1vZGUpKEosJ1wiYWRkaXRpb25hbEl0ZW1zXCIgaXMgaWdub3JlZCB3aGVuIFwiaXRlbXNcIiBpcyBub3QgYW4gYXJyYXkgb2Ygc2NoZW1hcycpO3JldHVybn13UigkLFkpfX07ZnVuY3Rpb24gd1IoJCxRKXtsZXR7Z2VuOkosc2NoZW1hOlksZGF0YTpYLGtleXdvcmQ6VyxpdDpHfT0kO0cuaXRlbXM9ITA7bGV0IFU9Si5jb25zdChcImxlblwiLGgwLl9gJHtYfS5sZW5ndGhgKTtpZihZPT09ITEpJC5zZXRQYXJhbXMoe2xlbjpRLmxlbmd0aH0pLCQucGFzcyhoMC5fYCR7VX0gPD0gJHtRLmxlbmd0aH1gKTtlbHNlIGlmKHR5cGVvZiBZPT1cIm9iamVjdFwiJiYhKDAsJHouYWx3YXlzVmFsaWRTY2hlbWEpKEcsWSkpe2xldCBxPUoudmFyKFwidmFsaWRcIixoMC5fYCR7VX0gPD0gJHtRLmxlbmd0aH1gKTtKLmlmKCgwLGgwLm5vdCkocSksKCk9PkgocSkpLCQub2socSl9ZnVuY3Rpb24gSChxKXtKLmZvclJhbmdlKFwiaVwiLFEubGVuZ3RoLFUsKFYpPT57aWYoJC5zdWJzY2hlbWEoe2tleXdvcmQ6VyxkYXRhUHJvcDpWLGRhdGFQcm9wVHlwZTokei5UeXBlLk51bX0scSksIUcuYWxsRXJyb3JzKUouaWYoKDAsaDAubm90KShxKSwoKT0+Si5icmVhaygpKX0pfX1PUi52YWxpZGF0ZUFkZGl0aW9uYWxJdGVtcz13UjtPUi5kZWZhdWx0PXF0fSk7dmFyIEp6PUkoKE1SKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShNUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtNUi52YWxpZGF0ZVR1cGxlPXZvaWQgMDt2YXIgRlI9USQoKSxuVz1xJCgpLEJ0PSQ0KCksenQ9e2tleXdvcmQ6XCJpdGVtc1wiLHR5cGU6XCJhcnJheVwiLHNjaGVtYVR5cGU6W1wib2JqZWN0XCIsXCJhcnJheVwiLFwiYm9vbGVhblwiXSxiZWZvcmU6XCJ1bmlxdWVJdGVtc1wiLGNvZGUoJCl7bGV0e3NjaGVtYTpRLGl0Okp9PSQ7aWYoQXJyYXkuaXNBcnJheShRKSlyZXR1cm4gWlIoJCxcImFkZGl0aW9uYWxJdGVtc1wiLFEpO2lmKEouaXRlbXM9ITAsKDAsblcuYWx3YXlzVmFsaWRTY2hlbWEpKEosUSkpcmV0dXJuOyQub2soKDAsQnQudmFsaWRhdGVBcnJheSkoJCkpfX07ZnVuY3Rpb24gWlIoJCxRLEo9JC5zY2hlbWEpe2xldHtnZW46WSxwYXJlbnRTY2hlbWE6WCxkYXRhOlcsa2V5d29yZDpHLGl0OlV9PSQ7aWYoVihYKSxVLm9wdHMudW5ldmFsdWF0ZWQmJkoubGVuZ3RoJiZVLml0ZW1zIT09ITApVS5pdGVtcz1uVy5tZXJnZUV2YWx1YXRlZC5pdGVtcyhZLEoubGVuZ3RoLFUuaXRlbXMpO2xldCBIPVkubmFtZShcInZhbGlkXCIpLHE9WS5jb25zdChcImxlblwiLEZSLl9gJHtXfS5sZW5ndGhgKTtKLmZvckVhY2goKEIseik9PntpZigoMCxuVy5hbHdheXNWYWxpZFNjaGVtYSkoVSxCKSlyZXR1cm47WS5pZihGUi5fYCR7cX0gPiAke3p9YCwoKT0+JC5zdWJzY2hlbWEoe2tleXdvcmQ6RyxzY2hlbWFQcm9wOnosZGF0YVByb3A6en0sSCkpLCQub2soSCl9KTtmdW5jdGlvbiBWKEIpe2xldHtvcHRzOnosZXJyU2NoZW1hUGF0aDpOfT1VLHc9Si5sZW5ndGgsTz13PT09Qi5taW5JdGVtcyYmKHc9PT1CLm1heEl0ZW1zfHxCW1FdPT09ITEpO2lmKHouc3RyaWN0VHVwbGVzJiYhTyl7bGV0IEQ9YFwiJHtHfVwiIGlzICR7d30tdHVwbGUsIGJ1dCBtaW5JdGVtcyBvciBtYXhJdGVtcy8ke1F9IGFyZSBub3Qgc3BlY2lmaWVkIG9yIGRpZmZlcmVudCBhdCBwYXRoIFwiJHtOfVwiYDsoMCxuVy5jaGVja1N0cmljdE1vZGUpKFUsRCx6LnN0cmljdFR1cGxlcyl9fX1NUi52YWxpZGF0ZVR1cGxlPVpSO01SLmRlZmF1bHQ9enR9KTt2YXIgQVI9SSgoalIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGpSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB3dD1KeigpLE90PXtrZXl3b3JkOlwicHJlZml4SXRlbXNcIix0eXBlOlwiYXJyYXlcIixzY2hlbWFUeXBlOltcImFycmF5XCJdLGJlZm9yZTpcInVuaXF1ZUl0ZW1zXCIsY29kZTooJCk9PigwLHd0LnZhbGlkYXRlVHVwbGUpKCQsXCJpdGVtc1wiKX07alIuZGVmYXVsdD1PdH0pO3ZhciBQUj1JKChSUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoUlIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIElSPVEkKCksRnQ9cSQoKSxadD0kNCgpLE10PVF6KCksTHQ9e21lc3NhZ2U6KHtwYXJhbXM6e2xlbjokfX0pPT5JUi5zdHJgbXVzdCBOT1QgaGF2ZSBtb3JlIHRoYW4gJHskfSBpdGVtc2AscGFyYW1zOih7cGFyYW1zOntsZW46JH19KT0+SVIuX2B7bGltaXQ6ICR7JH19YH0sanQ9e2tleXdvcmQ6XCJpdGVtc1wiLHR5cGU6XCJhcnJheVwiLHNjaGVtYVR5cGU6W1wib2JqZWN0XCIsXCJib29sZWFuXCJdLGJlZm9yZTpcInVuaXF1ZUl0ZW1zXCIsZXJyb3I6THQsY29kZSgkKXtsZXR7c2NoZW1hOlEscGFyZW50U2NoZW1hOkosaXQ6WX09JCx7cHJlZml4SXRlbXM6WH09SjtpZihZLml0ZW1zPSEwLCgwLEZ0LmFsd2F5c1ZhbGlkU2NoZW1hKShZLFEpKXJldHVybjtpZihYKSgwLE10LnZhbGlkYXRlQWRkaXRpb25hbEl0ZW1zKSgkLFgpO2Vsc2UgJC5vaygoMCxadC52YWxpZGF0ZUFycmF5KSgkKSl9fTtSUi5kZWZhdWx0PWp0fSk7dmFyIGJSPUkoKEVSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShFUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgUTQ9USQoKSxyVz1xJCgpLEl0PXttZXNzYWdlOih7cGFyYW1zOnttaW46JCxtYXg6UX19KT0+UT09PXZvaWQgMD9RNC5zdHJgbXVzdCBjb250YWluIGF0IGxlYXN0ICR7JH0gdmFsaWQgaXRlbShzKWA6UTQuc3RyYG11c3QgY29udGFpbiBhdCBsZWFzdCAkeyR9IGFuZCBubyBtb3JlIHRoYW4gJHtRfSB2YWxpZCBpdGVtKHMpYCxwYXJhbXM6KHtwYXJhbXM6e21pbjokLG1heDpRfX0pPT5RPT09dm9pZCAwP1E0Ll9ge21pbkNvbnRhaW5zOiAkeyR9fWA6UTQuX2B7bWluQ29udGFpbnM6ICR7JH0sIG1heENvbnRhaW5zOiAke1F9fWB9LFJ0PXtrZXl3b3JkOlwiY29udGFpbnNcIix0eXBlOlwiYXJyYXlcIixzY2hlbWFUeXBlOltcIm9iamVjdFwiLFwiYm9vbGVhblwiXSxiZWZvcmU6XCJ1bmlxdWVJdGVtc1wiLHRyYWNrRXJyb3JzOiEwLGVycm9yOkl0LGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLHBhcmVudFNjaGVtYTpZLGRhdGE6WCxpdDpXfT0kLEcsVSx7bWluQ29udGFpbnM6SCxtYXhDb250YWluczpxfT1ZO2lmKFcub3B0cy5uZXh0KUc9SD09PXZvaWQgMD8xOkgsVT1xO2Vsc2UgRz0xO2xldCBWPVEuY29uc3QoXCJsZW5cIixRNC5fYCR7WH0ubGVuZ3RoYCk7aWYoJC5zZXRQYXJhbXMoe21pbjpHLG1heDpVfSksVT09PXZvaWQgMCYmRz09PTApeygwLHJXLmNoZWNrU3RyaWN0TW9kZSkoVywnXCJtaW5Db250YWluc1wiID09IDAgd2l0aG91dCBcIm1heENvbnRhaW5zXCI6IFwiY29udGFpbnNcIiBrZXl3b3JkIGlnbm9yZWQnKTtyZXR1cm59aWYoVSE9PXZvaWQgMCYmRz5VKXsoMCxyVy5jaGVja1N0cmljdE1vZGUpKFcsJ1wibWluQ29udGFpbnNcIiA+IFwibWF4Q29udGFpbnNcIiBpcyBhbHdheXMgaW52YWxpZCcpLCQuZmFpbCgpO3JldHVybn1pZigoMCxyVy5hbHdheXNWYWxpZFNjaGVtYSkoVyxKKSl7bGV0IE89UTQuX2Ake1Z9ID49ICR7R31gO2lmKFUhPT12b2lkIDApTz1RNC5fYCR7T30gJiYgJHtWfSA8PSAke1V9YDskLnBhc3MoTyk7cmV0dXJufVcuaXRlbXM9ITA7bGV0IEI9US5uYW1lKFwidmFsaWRcIik7aWYoVT09PXZvaWQgMCYmRz09PTEpTihCLCgpPT5RLmlmKEIsKCk9PlEuYnJlYWsoKSkpO2Vsc2UgaWYoRz09PTApe2lmKFEubGV0KEIsITApLFUhPT12b2lkIDApUS5pZihRNC5fYCR7WH0ubGVuZ3RoID4gMGAseil9ZWxzZSBRLmxldChCLCExKSx6KCk7JC5yZXN1bHQoQiwoKT0+JC5yZXNldCgpKTtmdW5jdGlvbiB6KCl7bGV0IE89US5uYW1lKFwiX3ZhbGlkXCIpLEQ9US5sZXQoXCJjb3VudFwiLDApO04oTywoKT0+US5pZihPLCgpPT53KEQpKSl9ZnVuY3Rpb24gTihPLEQpe1EuZm9yUmFuZ2UoXCJpXCIsMCxWLChNKT0+eyQuc3Vic2NoZW1hKHtrZXl3b3JkOlwiY29udGFpbnNcIixkYXRhUHJvcDpNLGRhdGFQcm9wVHlwZTpyVy5UeXBlLk51bSxjb21wb3NpdGVSdWxlOiEwfSxPKSxEKCl9KX1mdW5jdGlvbiB3KE8pe2lmKFEuY29kZShRNC5fYCR7T30rK2ApLFU9PT12b2lkIDApUS5pZihRNC5fYCR7T30gPj0gJHtHfWAsKCk9PlEuYXNzaWduKEIsITApLmJyZWFrKCkpO2Vsc2UgaWYoUS5pZihRNC5fYCR7T30gPiAke1V9YCwoKT0+US5hc3NpZ24oQiwhMSkuYnJlYWsoKSksRz09PTEpUS5hc3NpZ24oQiwhMCk7ZWxzZSBRLmlmKFE0Ll9gJHtPfSA+PSAke0d9YCwoKT0+US5hc3NpZ24oQiwhMCkpfX19O0VSLmRlZmF1bHQ9UnR9KTt2YXIgVFI9SSgoa1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGtSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2tSLnZhbGlkYXRlU2NoZW1hRGVwcz1rUi52YWxpZGF0ZVByb3BlcnR5RGVwcz1rUi5lcnJvcj12b2lkIDA7dmFyIFh6PVEkKCksRXQ9cSQoKSxuSj0kNCgpO2tSLmVycm9yPXttZXNzYWdlOih7cGFyYW1zOntwcm9wZXJ0eTokLGRlcHNDb3VudDpRLGRlcHM6Sn19KT0+e2xldCBZPVE9PT0xP1wicHJvcGVydHlcIjpcInByb3BlcnRpZXNcIjtyZXR1cm4gWHouc3RyYG11c3QgaGF2ZSAke1l9ICR7Sn0gd2hlbiBwcm9wZXJ0eSAkeyR9IGlzIHByZXNlbnRgfSxwYXJhbXM6KHtwYXJhbXM6e3Byb3BlcnR5OiQsZGVwc0NvdW50OlEsZGVwczpKLG1pc3NpbmdQcm9wZXJ0eTpZfX0pPT5Yei5fYHtwcm9wZXJ0eTogJHskfSxcbiAgICBtaXNzaW5nUHJvcGVydHk6ICR7WX0sXG4gICAgZGVwc0NvdW50OiAke1F9LFxuICAgIGRlcHM6ICR7Sn19YH07dmFyIGJ0PXtrZXl3b3JkOlwiZGVwZW5kZW5jaWVzXCIsdHlwZTpcIm9iamVjdFwiLHNjaGVtYVR5cGU6XCJvYmplY3RcIixlcnJvcjprUi5lcnJvcixjb2RlKCQpe2xldFtRLEpdPV90KCQpO19SKCQsUSksU1IoJCxKKX19O2Z1bmN0aW9uIF90KHtzY2hlbWE6JH0pe2xldCBRPXt9LEo9e307Zm9yKGxldCBZIGluICQpe2lmKFk9PT1cIl9fcHJvdG9fX1wiKWNvbnRpbnVlO2xldCBYPUFycmF5LmlzQXJyYXkoJFtZXSk/UTpKO1hbWV09JFtZXX1yZXR1cm5bUSxKXX1mdW5jdGlvbiBfUigkLFE9JC5zY2hlbWEpe2xldHtnZW46SixkYXRhOlksaXQ6WH09JDtpZihPYmplY3Qua2V5cyhRKS5sZW5ndGg9PT0wKXJldHVybjtsZXQgVz1KLmxldChcIm1pc3NpbmdcIik7Zm9yKGxldCBHIGluIFEpe2xldCBVPVFbR107aWYoVS5sZW5ndGg9PT0wKWNvbnRpbnVlO2xldCBIPSgwLG5KLnByb3BlcnR5SW5EYXRhKShKLFksRyxYLm9wdHMub3duUHJvcGVydGllcyk7aWYoJC5zZXRQYXJhbXMoe3Byb3BlcnR5OkcsZGVwc0NvdW50OlUubGVuZ3RoLGRlcHM6VS5qb2luKFwiLCBcIil9KSxYLmFsbEVycm9ycylKLmlmKEgsKCk9Pntmb3IobGV0IHEgb2YgVSkoMCxuSi5jaGVja1JlcG9ydE1pc3NpbmdQcm9wKSgkLHEpfSk7ZWxzZSBKLmlmKFh6Ll9gJHtIfSAmJiAoJHsoMCxuSi5jaGVja01pc3NpbmdQcm9wKSgkLFUsVyl9KWApLCgwLG5KLnJlcG9ydE1pc3NpbmdQcm9wKSgkLFcpLEouZWxzZSgpfX1rUi52YWxpZGF0ZVByb3BlcnR5RGVwcz1fUjtmdW5jdGlvbiBTUigkLFE9JC5zY2hlbWEpe2xldHtnZW46SixkYXRhOlksa2V5d29yZDpYLGl0Old9PSQsRz1KLm5hbWUoXCJ2YWxpZFwiKTtmb3IobGV0IFUgaW4gUSl7aWYoKDAsRXQuYWx3YXlzVmFsaWRTY2hlbWEpKFcsUVtVXSkpY29udGludWU7Si5pZigoMCxuSi5wcm9wZXJ0eUluRGF0YSkoSixZLFUsVy5vcHRzLm93blByb3BlcnRpZXMpLCgpPT57bGV0IEg9JC5zdWJzY2hlbWEoe2tleXdvcmQ6WCxzY2hlbWFQcm9wOlV9LEcpOyQubWVyZ2VWYWxpZEV2YWx1YXRlZChILEcpfSwoKT0+Si52YXIoRywhMCkpLCQub2soRyl9fWtSLnZhbGlkYXRlU2NoZW1hRGVwcz1TUjtrUi5kZWZhdWx0PWJ0fSk7dmFyIHlSPUkoKGZSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShmUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgeFI9USQoKSx2dD1xJCgpLEN0PXttZXNzYWdlOlwicHJvcGVydHkgbmFtZSBtdXN0IGJlIHZhbGlkXCIscGFyYW1zOih7cGFyYW1zOiR9KT0+eFIuX2B7cHJvcGVydHlOYW1lOiAkeyQucHJvcGVydHlOYW1lfX1gfSxUdD17a2V5d29yZDpcInByb3BlcnR5TmFtZXNcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0sZXJyb3I6Q3QsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkosZGF0YTpZLGl0Olh9PSQ7aWYoKDAsdnQuYWx3YXlzVmFsaWRTY2hlbWEpKFgsSikpcmV0dXJuO2xldCBXPVEubmFtZShcInZhbGlkXCIpO1EuZm9ySW4oXCJrZXlcIixZLChHKT0+eyQuc2V0UGFyYW1zKHtwcm9wZXJ0eU5hbWU6R30pLCQuc3Vic2NoZW1hKHtrZXl3b3JkOlwicHJvcGVydHlOYW1lc1wiLGRhdGE6RyxkYXRhVHlwZXM6W1wic3RyaW5nXCJdLHByb3BlcnR5TmFtZTpHLGNvbXBvc2l0ZVJ1bGU6ITB9LFcpLFEuaWYoKDAseFIubm90KShXKSwoKT0+e2lmKCQuZXJyb3IoITApLCFYLmFsbEVycm9ycylRLmJyZWFrKCl9KX0pLCQub2soVyl9fTtmUi5kZWZhdWx0PVR0fSk7dmFyIFl6PUkoKGdSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShnUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgb1c9JDQoKSxEND1RJCgpLGZ0PUoxKCksdFc9cSQoKSx5dD17bWVzc2FnZTpcIm11c3QgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXCIscGFyYW1zOih7cGFyYW1zOiR9KT0+RDQuX2B7YWRkaXRpb25hbFByb3BlcnR5OiAkeyQuYWRkaXRpb25hbFByb3BlcnR5fX1gfSxndD17a2V5d29yZDpcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIsdHlwZTpbXCJvYmplY3RcIl0sc2NoZW1hVHlwZTpbXCJib29sZWFuXCIsXCJvYmplY3RcIl0sYWxsb3dVbmRlZmluZWQ6ITAsdHJhY2tFcnJvcnM6ITAsZXJyb3I6eXQsY29kZSgkKXtsZXR7Z2VuOlEsc2NoZW1hOkoscGFyZW50U2NoZW1hOlksZGF0YTpYLGVycnNDb3VudDpXLGl0Okd9PSQ7aWYoIVcpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7bGV0e2FsbEVycm9yczpVLG9wdHM6SH09RztpZihHLnByb3BzPSEwLEgucmVtb3ZlQWRkaXRpb25hbCE9PVwiYWxsXCImJigwLHRXLmFsd2F5c1ZhbGlkU2NoZW1hKShHLEopKXJldHVybjtsZXQgcT0oMCxvVy5hbGxTY2hlbWFQcm9wZXJ0aWVzKShZLnByb3BlcnRpZXMpLFY9KDAsb1cuYWxsU2NoZW1hUHJvcGVydGllcykoWS5wYXR0ZXJuUHJvcGVydGllcyk7QigpLCQub2soRDQuX2Ake1d9ID09PSAke2Z0LmRlZmF1bHQuZXJyb3JzfWApO2Z1bmN0aW9uIEIoKXtRLmZvckluKFwia2V5XCIsWCwoRCk9PntpZighcS5sZW5ndGgmJiFWLmxlbmd0aCl3KEQpO2Vsc2UgUS5pZih6KEQpLCgpPT53KEQpKX0pfWZ1bmN0aW9uIHooRCl7bGV0IE07aWYocS5sZW5ndGg+OCl7bGV0IGo9KDAsdFcuc2NoZW1hUmVmT3JWYWwpKEcsWS5wcm9wZXJ0aWVzLFwicHJvcGVydGllc1wiKTtNPSgwLG9XLmlzT3duUHJvcGVydHkpKFEsaixEKX1lbHNlIGlmKHEubGVuZ3RoKU09KDAsRDQub3IpKC4uLnEubWFwKChqKT0+RDQuX2Ake0R9ID09PSAke2p9YCkpO2Vsc2UgTT1ENC5uaWw7aWYoVi5sZW5ndGgpTT0oMCxENC5vcikoTSwuLi5WLm1hcCgoaik9PkQ0Ll9gJHsoMCxvVy51c2VQYXR0ZXJuKSgkLGopfS50ZXN0KCR7RH0pYCkpO3JldHVybigwLEQ0Lm5vdCkoTSl9ZnVuY3Rpb24gTihEKXtRLmNvZGUoRDQuX2BkZWxldGUgJHtYfVske0R9XWApfWZ1bmN0aW9uIHcoRCl7aWYoSC5yZW1vdmVBZGRpdGlvbmFsPT09XCJhbGxcInx8SC5yZW1vdmVBZGRpdGlvbmFsJiZKPT09ITEpe04oRCk7cmV0dXJufWlmKEo9PT0hMSl7aWYoJC5zZXRQYXJhbXMoe2FkZGl0aW9uYWxQcm9wZXJ0eTpEfSksJC5lcnJvcigpLCFVKVEuYnJlYWsoKTtyZXR1cm59aWYodHlwZW9mIEo9PVwib2JqZWN0XCImJiEoMCx0Vy5hbHdheXNWYWxpZFNjaGVtYSkoRyxKKSl7bGV0IE09US5uYW1lKFwidmFsaWRcIik7aWYoSC5yZW1vdmVBZGRpdGlvbmFsPT09XCJmYWlsaW5nXCIpTyhELE0sITEpLFEuaWYoKDAsRDQubm90KShNKSwoKT0+eyQucmVzZXQoKSxOKEQpfSk7ZWxzZSBpZihPKEQsTSksIVUpUS5pZigoMCxENC5ub3QpKE0pLCgpPT5RLmJyZWFrKCkpfX1mdW5jdGlvbiBPKEQsTSxqKXtsZXQgQT17a2V5d29yZDpcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIsZGF0YVByb3A6RCxkYXRhUHJvcFR5cGU6dFcuVHlwZS5TdHJ9O2lmKGo9PT0hMSlPYmplY3QuYXNzaWduKEEse2NvbXBvc2l0ZVJ1bGU6ITAsY3JlYXRlRXJyb3JzOiExLGFsbEVycm9yczohMX0pOyQuc3Vic2NoZW1hKEEsTSl9fX07Z1IuZGVmYXVsdD1ndH0pO3ZhciBsUj1JKChtUik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkobVIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHV0PXhKKCksaFI9JDQoKSxXej1xJCgpLHVSPVl6KCksbXQ9e2tleXdvcmQ6XCJwcm9wZXJ0aWVzXCIsdHlwZTpcIm9iamVjdFwiLHNjaGVtYVR5cGU6XCJvYmplY3RcIixjb2RlKCQpe2xldHtnZW46USxzY2hlbWE6SixwYXJlbnRTY2hlbWE6WSxkYXRhOlgsaXQ6V309JDtpZihXLm9wdHMucmVtb3ZlQWRkaXRpb25hbD09PVwiYWxsXCImJlkuYWRkaXRpb25hbFByb3BlcnRpZXM9PT12b2lkIDApdVIuZGVmYXVsdC5jb2RlKG5ldyB1dC5LZXl3b3JkQ3h0KFcsdVIuZGVmYXVsdCxcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIpKTtsZXQgRz0oMCxoUi5hbGxTY2hlbWFQcm9wZXJ0aWVzKShKKTtmb3IobGV0IEIgb2YgRylXLmRlZmluZWRQcm9wZXJ0aWVzLmFkZChCKTtpZihXLm9wdHMudW5ldmFsdWF0ZWQmJkcubGVuZ3RoJiZXLnByb3BzIT09ITApVy5wcm9wcz1Xei5tZXJnZUV2YWx1YXRlZC5wcm9wcyhRLCgwLFd6LnRvSGFzaCkoRyksVy5wcm9wcyk7bGV0IFU9Ry5maWx0ZXIoKEIpPT4hKDAsV3ouYWx3YXlzVmFsaWRTY2hlbWEpKFcsSltCXSkpO2lmKFUubGVuZ3RoPT09MClyZXR1cm47bGV0IEg9US5uYW1lKFwidmFsaWRcIik7Zm9yKGxldCBCIG9mIFUpe2lmKHEoQikpVihCKTtlbHNle2lmKFEuaWYoKDAsaFIucHJvcGVydHlJbkRhdGEpKFEsWCxCLFcub3B0cy5vd25Qcm9wZXJ0aWVzKSksVihCKSwhVy5hbGxFcnJvcnMpUS5lbHNlKCkudmFyKEgsITApO1EuZW5kSWYoKX0kLml0LmRlZmluZWRQcm9wZXJ0aWVzLmFkZChCKSwkLm9rKEgpfWZ1bmN0aW9uIHEoQil7cmV0dXJuIFcub3B0cy51c2VEZWZhdWx0cyYmIVcuY29tcG9zaXRlUnVsZSYmSltCXS5kZWZhdWx0IT09dm9pZCAwfWZ1bmN0aW9uIFYoQil7JC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJwcm9wZXJ0aWVzXCIsc2NoZW1hUHJvcDpCLGRhdGFQcm9wOkJ9LEgpfX19O21SLmRlZmF1bHQ9bXR9KTt2YXIgblI9SSgoaVIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGlSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBjUj0kNCgpLGFXPVEkKCkscFI9cSQoKSxkUj1xJCgpLGN0PXtrZXl3b3JkOlwicGF0dGVyblByb3BlcnRpZXNcIix0eXBlOlwib2JqZWN0XCIsc2NoZW1hVHlwZTpcIm9iamVjdFwiLGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLGRhdGE6WSxwYXJlbnRTY2hlbWE6WCxpdDpXfT0kLHtvcHRzOkd9PVcsVT0oMCxjUi5hbGxTY2hlbWFQcm9wZXJ0aWVzKShKKSxIPVUuZmlsdGVyKChPKT0+KDAscFIuYWx3YXlzVmFsaWRTY2hlbWEpKFcsSltPXSkpO2lmKFUubGVuZ3RoPT09MHx8SC5sZW5ndGg9PT1VLmxlbmd0aCYmKCFXLm9wdHMudW5ldmFsdWF0ZWR8fFcucHJvcHM9PT0hMCkpcmV0dXJuO2xldCBxPUcuc3RyaWN0U2NoZW1hJiYhRy5hbGxvd01hdGNoaW5nUHJvcGVydGllcyYmWC5wcm9wZXJ0aWVzLFY9US5uYW1lKFwidmFsaWRcIik7aWYoVy5wcm9wcyE9PSEwJiYhKFcucHJvcHMgaW5zdGFuY2VvZiBhVy5OYW1lKSlXLnByb3BzPSgwLGRSLmV2YWx1YXRlZFByb3BzVG9OYW1lKShRLFcucHJvcHMpO2xldHtwcm9wczpCfT1XO3ooKTtmdW5jdGlvbiB6KCl7Zm9yKGxldCBPIG9mIFUpe2lmKHEpTihPKTtpZihXLmFsbEVycm9ycyl3KE8pO2Vsc2UgUS52YXIoViwhMCksdyhPKSxRLmlmKFYpfX1mdW5jdGlvbiBOKE8pe2ZvcihsZXQgRCBpbiBxKWlmKG5ldyBSZWdFeHAoTykudGVzdChEKSkoMCxwUi5jaGVja1N0cmljdE1vZGUpKFcsYHByb3BlcnR5ICR7RH0gbWF0Y2hlcyBwYXR0ZXJuICR7T30gKHVzZSBhbGxvd01hdGNoaW5nUHJvcGVydGllcylgKX1mdW5jdGlvbiB3KE8pe1EuZm9ySW4oXCJrZXlcIixZLChEKT0+e1EuaWYoYVcuX2AkeygwLGNSLnVzZVBhdHRlcm4pKCQsTyl9LnRlc3QoJHtEfSlgLCgpPT57bGV0IE09SC5pbmNsdWRlcyhPKTtpZighTSkkLnN1YnNjaGVtYSh7a2V5d29yZDpcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsc2NoZW1hUHJvcDpPLGRhdGFQcm9wOkQsZGF0YVByb3BUeXBlOmRSLlR5cGUuU3RyfSxWKTtpZihXLm9wdHMudW5ldmFsdWF0ZWQmJkIhPT0hMClRLmFzc2lnbihhVy5fYCR7Qn1bJHtEfV1gLCEwKTtlbHNlIGlmKCFNJiYhVy5hbGxFcnJvcnMpUS5pZigoMCxhVy5ub3QpKFYpLCgpPT5RLmJyZWFrKCkpfSl9KX19fTtpUi5kZWZhdWx0PWN0fSk7dmFyIG9SPUkoKHJSKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShyUixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZHQ9cSQoKSxpdD17a2V5d29yZDpcIm5vdFwiLHNjaGVtYVR5cGU6W1wib2JqZWN0XCIsXCJib29sZWFuXCJdLHRyYWNrRXJyb3JzOiEwLGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLGl0Oll9PSQ7aWYoKDAsZHQuYWx3YXlzVmFsaWRTY2hlbWEpKFksSikpeyQuZmFpbCgpO3JldHVybn1sZXQgWD1RLm5hbWUoXCJ2YWxpZFwiKTskLnN1YnNjaGVtYSh7a2V5d29yZDpcIm5vdFwiLGNvbXBvc2l0ZVJ1bGU6ITAsY3JlYXRlRXJyb3JzOiExLGFsbEVycm9yczohMX0sWCksJC5mYWlsUmVzdWx0KFgsKCk9PiQucmVzZXQoKSwoKT0+JC5lcnJvcigpKX0sZXJyb3I6e21lc3NhZ2U6XCJtdXN0IE5PVCBiZSB2YWxpZFwifX07clIuZGVmYXVsdD1pdH0pO3ZhciBhUj1JKCh0Uik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodFIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHJ0PSQ0KCksb3Q9e2tleXdvcmQ6XCJhbnlPZlwiLHNjaGVtYVR5cGU6XCJhcnJheVwiLHRyYWNrRXJyb3JzOiEwLGNvZGU6cnQudmFsaWRhdGVVbmlvbixlcnJvcjp7bWVzc2FnZTpcIm11c3QgbWF0Y2ggYSBzY2hlbWEgaW4gYW55T2ZcIn19O3RSLmRlZmF1bHQ9b3R9KTt2YXIgZVI9SSgoc1IpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHNSLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBzVz1RJCgpLGF0PXEkKCksc3Q9e21lc3NhZ2U6XCJtdXN0IG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZlwiLHBhcmFtczooe3BhcmFtczokfSk9PnNXLl9ge3Bhc3NpbmdTY2hlbWFzOiAkeyQucGFzc2luZ319YH0sZXQ9e2tleXdvcmQ6XCJvbmVPZlwiLHNjaGVtYVR5cGU6XCJhcnJheVwiLHRyYWNrRXJyb3JzOiEwLGVycm9yOnN0LGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLHBhcmVudFNjaGVtYTpZLGl0Olh9PSQ7aWYoIUFycmF5LmlzQXJyYXkoSikpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7aWYoWC5vcHRzLmRpc2NyaW1pbmF0b3ImJlkuZGlzY3JpbWluYXRvcilyZXR1cm47bGV0IFc9SixHPVEubGV0KFwidmFsaWRcIiwhMSksVT1RLmxldChcInBhc3NpbmdcIixudWxsKSxIPVEubmFtZShcIl92YWxpZFwiKTskLnNldFBhcmFtcyh7cGFzc2luZzpVfSksUS5ibG9jayhxKSwkLnJlc3VsdChHLCgpPT4kLnJlc2V0KCksKCk9PiQuZXJyb3IoITApKTtmdW5jdGlvbiBxKCl7Vy5mb3JFYWNoKChWLEIpPT57bGV0IHo7aWYoKDAsYXQuYWx3YXlzVmFsaWRTY2hlbWEpKFgsVikpUS52YXIoSCwhMCk7ZWxzZSB6PSQuc3Vic2NoZW1hKHtrZXl3b3JkOlwib25lT2ZcIixzY2hlbWFQcm9wOkIsY29tcG9zaXRlUnVsZTohMH0sSCk7aWYoQj4wKVEuaWYoc1cuX2Ake0h9ICYmICR7R31gKS5hc3NpZ24oRywhMSkuYXNzaWduKFUsc1cuX2BbJHtVfSwgJHtCfV1gKS5lbHNlKCk7US5pZihILCgpPT57aWYoUS5hc3NpZ24oRywhMCksUS5hc3NpZ24oVSxCKSx6KSQubWVyZ2VFdmFsdWF0ZWQoeixzVy5OYW1lKX0pfSl9fX07c1IuZGVmYXVsdD1ldH0pO3ZhciBRUD1JKCgkUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoJFAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIFFhPXEkKCksSmE9e2tleXdvcmQ6XCJhbGxPZlwiLHNjaGVtYVR5cGU6XCJhcnJheVwiLGNvZGUoJCl7bGV0e2dlbjpRLHNjaGVtYTpKLGl0Oll9PSQ7aWYoIUFycmF5LmlzQXJyYXkoSikpdGhyb3cgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7bGV0IFg9US5uYW1lKFwidmFsaWRcIik7Si5mb3JFYWNoKChXLEcpPT57aWYoKDAsUWEuYWx3YXlzVmFsaWRTY2hlbWEpKFksVykpcmV0dXJuO2xldCBVPSQuc3Vic2NoZW1hKHtrZXl3b3JkOlwiYWxsT2ZcIixzY2hlbWFQcm9wOkd9LFgpOyQub2soWCksJC5tZXJnZUV2YWx1YXRlZChVKX0pfX07JFAuZGVmYXVsdD1KYX0pO3ZhciBXUD1JKChZUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoWVAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGVXPVEkKCksWFA9cSQoKSxZYT17bWVzc2FnZTooe3BhcmFtczokfSk9PmVXLnN0cmBtdXN0IG1hdGNoIFwiJHskLmlmQ2xhdXNlfVwiIHNjaGVtYWAscGFyYW1zOih7cGFyYW1zOiR9KT0+ZVcuX2B7ZmFpbGluZ0tleXdvcmQ6ICR7JC5pZkNsYXVzZX19YH0sV2E9e2tleXdvcmQ6XCJpZlwiLHNjaGVtYVR5cGU6W1wib2JqZWN0XCIsXCJib29sZWFuXCJdLHRyYWNrRXJyb3JzOiEwLGVycm9yOllhLGNvZGUoJCl7bGV0e2dlbjpRLHBhcmVudFNjaGVtYTpKLGl0Oll9PSQ7aWYoSi50aGVuPT09dm9pZCAwJiZKLmVsc2U9PT12b2lkIDApKDAsWFAuY2hlY2tTdHJpY3RNb2RlKShZLCdcImlmXCIgd2l0aG91dCBcInRoZW5cIiBhbmQgXCJlbHNlXCIgaXMgaWdub3JlZCcpO2xldCBYPUpQKFksXCJ0aGVuXCIpLFc9SlAoWSxcImVsc2VcIik7aWYoIVgmJiFXKXJldHVybjtsZXQgRz1RLmxldChcInZhbGlkXCIsITApLFU9US5uYW1lKFwiX3ZhbGlkXCIpO2lmKEgoKSwkLnJlc2V0KCksWCYmVyl7bGV0IFY9US5sZXQoXCJpZkNsYXVzZVwiKTskLnNldFBhcmFtcyh7aWZDbGF1c2U6Vn0pLFEuaWYoVSxxKFwidGhlblwiLFYpLHEoXCJlbHNlXCIsVikpfWVsc2UgaWYoWClRLmlmKFUscShcInRoZW5cIikpO2Vsc2UgUS5pZigoMCxlVy5ub3QpKFUpLHEoXCJlbHNlXCIpKTskLnBhc3MoRywoKT0+JC5lcnJvcighMCkpO2Z1bmN0aW9uIEgoKXtsZXQgVj0kLnN1YnNjaGVtYSh7a2V5d29yZDpcImlmXCIsY29tcG9zaXRlUnVsZTohMCxjcmVhdGVFcnJvcnM6ITEsYWxsRXJyb3JzOiExfSxVKTskLm1lcmdlRXZhbHVhdGVkKFYpfWZ1bmN0aW9uIHEoVixCKXtyZXR1cm4oKT0+e2xldCB6PSQuc3Vic2NoZW1hKHtrZXl3b3JkOlZ9LFUpO2lmKFEuYXNzaWduKEcsVSksJC5tZXJnZVZhbGlkRXZhbHVhdGVkKHosRyksQilRLmFzc2lnbihCLGVXLl9gJHtWfWApO2Vsc2UgJC5zZXRQYXJhbXMoe2lmQ2xhdXNlOlZ9KX19fX07ZnVuY3Rpb24gSlAoJCxRKXtsZXQgSj0kLnNjaGVtYVtRXTtyZXR1cm4gSiE9PXZvaWQgMCYmISgwLFhQLmFsd2F5c1ZhbGlkU2NoZW1hKSgkLEopfVlQLmRlZmF1bHQ9V2F9KTt2YXIgVVA9SSgoR1ApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEdQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBVYT1xJCgpLEhhPXtrZXl3b3JkOltcInRoZW5cIixcImVsc2VcIl0sc2NoZW1hVHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0sY29kZSh7a2V5d29yZDokLHBhcmVudFNjaGVtYTpRLGl0Okp9KXtpZihRLmlmPT09dm9pZCAwKSgwLFVhLmNoZWNrU3RyaWN0TW9kZSkoSixgXCIkeyR9XCIgd2l0aG91dCBcImlmXCIgaXMgaWdub3JlZGApfX07R1AuZGVmYXVsdD1IYX0pO3ZhciBLUD1JKChIUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoSFAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHFhPVF6KCksVmE9QVIoKSxCYT1KeigpLHphPVBSKCksTmE9YlIoKSx3YT1UUigpLE9hPXlSKCksRGE9WXooKSxGYT1sUigpLFphPW5SKCksTWE9b1IoKSxMYT1hUigpLGphPWVSKCksQWE9UVAoKSxJYT1XUCgpLFJhPVVQKCk7ZnVuY3Rpb24gUGEoJD0hMSl7bGV0IFE9W01hLmRlZmF1bHQsTGEuZGVmYXVsdCxqYS5kZWZhdWx0LEFhLmRlZmF1bHQsSWEuZGVmYXVsdCxSYS5kZWZhdWx0LE9hLmRlZmF1bHQsRGEuZGVmYXVsdCx3YS5kZWZhdWx0LEZhLmRlZmF1bHQsWmEuZGVmYXVsdF07aWYoJClRLnB1c2goVmEuZGVmYXVsdCx6YS5kZWZhdWx0KTtlbHNlIFEucHVzaChxYS5kZWZhdWx0LEJhLmRlZmF1bHQpO3JldHVybiBRLnB1c2goTmEuZGVmYXVsdCksUX1IUC5kZWZhdWx0PVBhfSk7dmFyIFZQPUkoKHFQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShxUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcCQ9USQoKSxiYT17bWVzc2FnZTooe3NjaGVtYUNvZGU6JH0pPT5wJC5zdHJgbXVzdCBtYXRjaCBmb3JtYXQgXCIkeyR9XCJgLHBhcmFtczooe3NjaGVtYUNvZGU6JH0pPT5wJC5fYHtmb3JtYXQ6ICR7JH19YH0sX2E9e2tleXdvcmQ6XCJmb3JtYXRcIix0eXBlOltcIm51bWJlclwiLFwic3RyaW5nXCJdLHNjaGVtYVR5cGU6XCJzdHJpbmdcIiwkZGF0YTohMCxlcnJvcjpiYSxjb2RlKCQsUSl7bGV0e2dlbjpKLGRhdGE6WSwkZGF0YTpYLHNjaGVtYTpXLHNjaGVtYUNvZGU6RyxpdDpVfT0kLHtvcHRzOkgsZXJyU2NoZW1hUGF0aDpxLHNjaGVtYUVudjpWLHNlbGY6Qn09VTtpZighSC52YWxpZGF0ZUZvcm1hdHMpcmV0dXJuO2lmKFgpeigpO2Vsc2UgTigpO2Z1bmN0aW9uIHooKXtsZXQgdz1KLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIse3JlZjpCLmZvcm1hdHMsY29kZTpILmNvZGUuZm9ybWF0c30pLE89Si5jb25zdChcImZEZWZcIixwJC5fYCR7d31bJHtHfV1gKSxEPUoubGV0KFwiZlR5cGVcIiksTT1KLmxldChcImZvcm1hdFwiKTtKLmlmKHAkLl9gdHlwZW9mICR7T30gPT0gXCJvYmplY3RcIiAmJiAhKCR7T30gaW5zdGFuY2VvZiBSZWdFeHApYCwoKT0+Si5hc3NpZ24oRCxwJC5fYCR7T30udHlwZSB8fCBcInN0cmluZ1wiYCkuYXNzaWduKE0scCQuX2Ake099LnZhbGlkYXRlYCksKCk9PkouYXNzaWduKEQscCQuX2BcInN0cmluZ1wiYCkuYXNzaWduKE0sTykpLCQuZmFpbCRkYXRhKCgwLHAkLm9yKShqKCksQSgpKSk7ZnVuY3Rpb24gaigpe2lmKEguc3RyaWN0U2NoZW1hPT09ITEpcmV0dXJuIHAkLm5pbDtyZXR1cm4gcCQuX2Ake0d9ICYmICEke019YH1mdW5jdGlvbiBBKCl7bGV0IGs9Vi4kYXN5bmM/cCQuX2AoJHtPfS5hc3luYyA/IGF3YWl0ICR7TX0oJHtZfSkgOiAke019KCR7WX0pKWA6cCQuX2Ake019KCR7WX0pYCx1PXAkLl9gKHR5cGVvZiAke019ID09IFwiZnVuY3Rpb25cIiA/ICR7a30gOiAke019LnRlc3QoJHtZfSkpYDtyZXR1cm4gcCQuX2Ake019ICYmICR7TX0gIT09IHRydWUgJiYgJHtEfSA9PT0gJHtRfSAmJiAhJHt1fWB9fWZ1bmN0aW9uIE4oKXtsZXQgdz1CLmZvcm1hdHNbV107aWYoIXcpe2ooKTtyZXR1cm59aWYodz09PSEwKXJldHVybjtsZXRbTyxELE1dPUEodyk7aWYoTz09PVEpJC5wYXNzKGsoKSk7ZnVuY3Rpb24gaigpe2lmKEguc3RyaWN0U2NoZW1hPT09ITEpe0IubG9nZ2VyLndhcm4odSgpKTtyZXR1cm59dGhyb3cgRXJyb3IodSgpKTtmdW5jdGlvbiB1KCl7cmV0dXJuYHVua25vd24gZm9ybWF0IFwiJHtXfVwiIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCIke3F9XCJgfX1mdW5jdGlvbiBBKHUpe2xldCBHJD11IGluc3RhbmNlb2YgUmVnRXhwPygwLHAkLnJlZ2V4cENvZGUpKHUpOkguY29kZS5mb3JtYXRzP3AkLl9gJHtILmNvZGUuZm9ybWF0c30keygwLHAkLmdldFByb3BlcnR5KShXKX1gOnZvaWQgMCxoJD1KLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIse2tleTpXLHJlZjp1LGNvZGU6RyR9KTtpZih0eXBlb2YgdT09XCJvYmplY3RcIiYmISh1IGluc3RhbmNlb2YgUmVnRXhwKSlyZXR1cm5bdS50eXBlfHxcInN0cmluZ1wiLHUudmFsaWRhdGUscCQuX2Ake2gkfS52YWxpZGF0ZWBdO3JldHVybltcInN0cmluZ1wiLHUsaCRdfWZ1bmN0aW9uIGsoKXtpZih0eXBlb2Ygdz09XCJvYmplY3RcIiYmISh3IGluc3RhbmNlb2YgUmVnRXhwKSYmdy5hc3luYyl7aWYoIVYuJGFzeW5jKXRocm93IEVycm9yKFwiYXN5bmMgZm9ybWF0IGluIHN5bmMgc2NoZW1hXCIpO3JldHVybiBwJC5fYGF3YWl0ICR7TX0oJHtZfSlgfXJldHVybiB0eXBlb2YgRD09XCJmdW5jdGlvblwiP3AkLl9gJHtNfSgke1l9KWA6cCQuX2Ake019LnRlc3QoJHtZfSlgfX19fTtxUC5kZWZhdWx0PV9hfSk7dmFyIHpQPUkoKEJQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShCUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIga2E9VlAoKSx2YT1ba2EuZGVmYXVsdF07QlAuZGVmYXVsdD12YX0pO3ZhciBPUD1JKChOUCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoTlAsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7TlAuY29udGVudFZvY2FidWxhcnk9TlAubWV0YWRhdGFWb2NhYnVsYXJ5PXZvaWQgMDtOUC5tZXRhZGF0YVZvY2FidWxhcnk9W1widGl0bGVcIixcImRlc2NyaXB0aW9uXCIsXCJkZWZhdWx0XCIsXCJkZXByZWNhdGVkXCIsXCJyZWFkT25seVwiLFwid3JpdGVPbmx5XCIsXCJleGFtcGxlc1wiXTtOUC5jb250ZW50Vm9jYWJ1bGFyeT1bXCJjb250ZW50TWVkaWFUeXBlXCIsXCJjb250ZW50RW5jb2RpbmdcIixcImNvbnRlbnRTY2hlbWFcIl19KTt2YXIgWlA9SSgoRlApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEZQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB4YT1tSSgpLGZhPU5SKCkseWE9S1AoKSxnYT16UCgpLERQPU9QKCksaGE9W3hhLmRlZmF1bHQsZmEuZGVmYXVsdCwoMCx5YS5kZWZhdWx0KSgpLGdhLmRlZmF1bHQsRFAubWV0YWRhdGFWb2NhYnVsYXJ5LERQLmNvbnRlbnRWb2NhYnVsYXJ5XTtGUC5kZWZhdWx0PWhhfSk7dmFyIEFQPUkoKExQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShMUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtMUC5EaXNjckVycm9yPXZvaWQgMDt2YXIgTVA7KGZ1bmN0aW9uKCQpeyQuVGFnPVwidGFnXCIsJC5NYXBwaW5nPVwibWFwcGluZ1wifSkoTVB8fChMUC5EaXNjckVycm9yPU1QPXt9KSl9KTt2YXIgUFA9SSgoUlApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFJQLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBMOT1RJCgpLEd6PUFQKCksSVA9ZlcoKSxtYT1mSigpLGxhPXEkKCksY2E9e21lc3NhZ2U6KHtwYXJhbXM6e2Rpc2NyRXJyb3I6JCx0YWdOYW1lOlF9fSk9PiQ9PT1Hei5EaXNjckVycm9yLlRhZz9gdGFnIFwiJHtRfVwiIG11c3QgYmUgc3RyaW5nYDpgdmFsdWUgb2YgdGFnIFwiJHtRfVwiIG11c3QgYmUgaW4gb25lT2ZgLHBhcmFtczooe3BhcmFtczp7ZGlzY3JFcnJvcjokLHRhZzpRLHRhZ05hbWU6Sn19KT0+TDkuX2B7ZXJyb3I6ICR7JH0sIHRhZzogJHtKfSwgdGFnVmFsdWU6ICR7UX19YH0scGE9e2tleXdvcmQ6XCJkaXNjcmltaW5hdG9yXCIsdHlwZTpcIm9iamVjdFwiLHNjaGVtYVR5cGU6XCJvYmplY3RcIixlcnJvcjpjYSxjb2RlKCQpe2xldHtnZW46USxkYXRhOkosc2NoZW1hOlkscGFyZW50U2NoZW1hOlgsaXQ6V309JCx7b25lT2Y6R309WDtpZighVy5vcHRzLmRpc2NyaW1pbmF0b3IpdGhyb3cgRXJyb3IoXCJkaXNjcmltaW5hdG9yOiByZXF1aXJlcyBkaXNjcmltaW5hdG9yIG9wdGlvblwiKTtsZXQgVT1ZLnByb3BlcnR5TmFtZTtpZih0eXBlb2YgVSE9XCJzdHJpbmdcIil0aHJvdyBFcnJvcihcImRpc2NyaW1pbmF0b3I6IHJlcXVpcmVzIHByb3BlcnR5TmFtZVwiKTtpZihZLm1hcHBpbmcpdGhyb3cgRXJyb3IoXCJkaXNjcmltaW5hdG9yOiBtYXBwaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIik7aWYoIUcpdGhyb3cgRXJyb3IoXCJkaXNjcmltaW5hdG9yOiByZXF1aXJlcyBvbmVPZiBrZXl3b3JkXCIpO2xldCBIPVEubGV0KFwidmFsaWRcIiwhMSkscT1RLmNvbnN0KFwidGFnXCIsTDkuX2Ake0p9JHsoMCxMOS5nZXRQcm9wZXJ0eSkoVSl9YCk7US5pZihMOS5fYHR5cGVvZiAke3F9ID09IFwic3RyaW5nXCJgLCgpPT5WKCksKCk9PiQuZXJyb3IoITEse2Rpc2NyRXJyb3I6R3ouRGlzY3JFcnJvci5UYWcsdGFnOnEsdGFnTmFtZTpVfSkpLCQub2soSCk7ZnVuY3Rpb24gVigpe2xldCBOPXooKTtRLmlmKCExKTtmb3IobGV0IHcgaW4gTilRLmVsc2VJZihMOS5fYCR7cX0gPT09ICR7d31gKSxRLmFzc2lnbihILEIoTlt3XSkpO1EuZWxzZSgpLCQuZXJyb3IoITEse2Rpc2NyRXJyb3I6R3ouRGlzY3JFcnJvci5NYXBwaW5nLHRhZzpxLHRhZ05hbWU6VX0pLFEuZW5kSWYoKX1mdW5jdGlvbiBCKE4pe2xldCB3PVEubmFtZShcInZhbGlkXCIpLE89JC5zdWJzY2hlbWEoe2tleXdvcmQ6XCJvbmVPZlwiLHNjaGVtYVByb3A6Tn0sdyk7cmV0dXJuICQubWVyZ2VFdmFsdWF0ZWQoTyxMOS5OYW1lKSx3fWZ1bmN0aW9uIHooKXt2YXIgTjtsZXQgdz17fSxPPU0oWCksRD0hMDtmb3IobGV0IGs9MDtrPEcubGVuZ3RoO2srKyl7bGV0IHU9R1trXTtpZigodT09PW51bGx8fHU9PT12b2lkIDA/dm9pZCAwOnUuJHJlZikmJiEoMCxsYS5zY2hlbWFIYXNSdWxlc0J1dFJlZikodSxXLnNlbGYuUlVMRVMpKXtsZXQgaCQ9dS4kcmVmO2lmKHU9SVAucmVzb2x2ZVJlZi5jYWxsKFcuc2VsZixXLnNjaGVtYUVudi5yb290LFcuYmFzZUlkLGgkKSx1IGluc3RhbmNlb2YgSVAuU2NoZW1hRW52KXU9dS5zY2hlbWE7aWYodT09PXZvaWQgMCl0aHJvdyBuZXcgbWEuZGVmYXVsdChXLm9wdHMudXJpUmVzb2x2ZXIsVy5iYXNlSWQsaCQpfWxldCBHJD0oTj11PT09bnVsbHx8dT09PXZvaWQgMD92b2lkIDA6dS5wcm9wZXJ0aWVzKT09PW51bGx8fE49PT12b2lkIDA/dm9pZCAwOk5bVV07aWYodHlwZW9mIEckIT1cIm9iamVjdFwiKXRocm93IEVycm9yKGBkaXNjcmltaW5hdG9yOiBvbmVPZiBzdWJzY2hlbWFzIChvciByZWZlcmVuY2VkIHNjaGVtYXMpIG11c3QgaGF2ZSBcInByb3BlcnRpZXMvJHtVfVwiYCk7RD1EJiYoT3x8TSh1KSksaihHJCxrKX1pZighRCl0aHJvdyBFcnJvcihgZGlzY3JpbWluYXRvcjogXCIke1V9XCIgbXVzdCBiZSByZXF1aXJlZGApO3JldHVybiB3O2Z1bmN0aW9uIE0oe3JlcXVpcmVkOmt9KXtyZXR1cm4gQXJyYXkuaXNBcnJheShrKSYmay5pbmNsdWRlcyhVKX1mdW5jdGlvbiBqKGssdSl7aWYoay5jb25zdClBKGsuY29uc3QsdSk7ZWxzZSBpZihrLmVudW0pZm9yKGxldCBHJCBvZiBrLmVudW0pQShHJCx1KTtlbHNlIHRocm93IEVycm9yKGBkaXNjcmltaW5hdG9yOiBcInByb3BlcnRpZXMvJHtVfVwiIG11c3QgaGF2ZSBcImNvbnN0XCIgb3IgXCJlbnVtXCJgKX1mdW5jdGlvbiBBKGssdSl7aWYodHlwZW9mIGshPVwic3RyaW5nXCJ8fGsgaW4gdyl0aHJvdyBFcnJvcihgZGlzY3JpbWluYXRvcjogXCIke1V9XCIgdmFsdWVzIG11c3QgYmUgdW5pcXVlIHN0cmluZ3NgKTt3W2tdPXV9fX19O1JQLmRlZmF1bHQ9cGF9KTt2YXIgRVA9SSgoS08kLGlhKT0+e2lhLmV4cG9ydHM9eyRzY2hlbWE6XCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIiwkaWQ6XCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIix0aXRsZTpcIkNvcmUgc2NoZW1hIG1ldGEtc2NoZW1hXCIsZGVmaW5pdGlvbnM6e3NjaGVtYUFycmF5Ont0eXBlOlwiYXJyYXlcIixtaW5JdGVtczoxLGl0ZW1zOnskcmVmOlwiI1wifX0sbm9uTmVnYXRpdmVJbnRlZ2VyOnt0eXBlOlwiaW50ZWdlclwiLG1pbmltdW06MH0sbm9uTmVnYXRpdmVJbnRlZ2VyRGVmYXVsdDA6e2FsbE9mOlt7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LHtkZWZhdWx0OjB9XX0sc2ltcGxlVHlwZXM6e2VudW06W1wiYXJyYXlcIixcImJvb2xlYW5cIixcImludGVnZXJcIixcIm51bGxcIixcIm51bWJlclwiLFwib2JqZWN0XCIsXCJzdHJpbmdcIl19LHN0cmluZ0FycmF5Ont0eXBlOlwiYXJyYXlcIixpdGVtczp7dHlwZTpcInN0cmluZ1wifSx1bmlxdWVJdGVtczohMCxkZWZhdWx0OltdfX0sdHlwZTpbXCJvYmplY3RcIixcImJvb2xlYW5cIl0scHJvcGVydGllczp7JGlkOnt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXJpLXJlZmVyZW5jZVwifSwkc2NoZW1hOnt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXJpXCJ9LCRyZWY6e3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1cmktcmVmZXJlbmNlXCJ9LCRjb21tZW50Ont0eXBlOlwic3RyaW5nXCJ9LHRpdGxlOnt0eXBlOlwic3RyaW5nXCJ9LGRlc2NyaXB0aW9uOnt0eXBlOlwic3RyaW5nXCJ9LGRlZmF1bHQ6ITAscmVhZE9ubHk6e3R5cGU6XCJib29sZWFuXCIsZGVmYXVsdDohMX0sZXhhbXBsZXM6e3R5cGU6XCJhcnJheVwiLGl0ZW1zOiEwfSxtdWx0aXBsZU9mOnt0eXBlOlwibnVtYmVyXCIsZXhjbHVzaXZlTWluaW11bTowfSxtYXhpbXVtOnt0eXBlOlwibnVtYmVyXCJ9LGV4Y2x1c2l2ZU1heGltdW06e3R5cGU6XCJudW1iZXJcIn0sbWluaW11bTp7dHlwZTpcIm51bWJlclwifSxleGNsdXNpdmVNaW5pbXVtOnt0eXBlOlwibnVtYmVyXCJ9LG1heExlbmd0aDp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LG1pbkxlbmd0aDp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyRGVmYXVsdDBcIn0scGF0dGVybjp7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInJlZ2V4XCJ9LGFkZGl0aW9uYWxJdGVtczp7JHJlZjpcIiNcIn0saXRlbXM6e2FueU9mOlt7JHJlZjpcIiNcIn0seyRyZWY6XCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9XSxkZWZhdWx0OiEwfSxtYXhJdGVtczp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LG1pbkl0ZW1zOnskcmVmOlwiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXJEZWZhdWx0MFwifSx1bmlxdWVJdGVtczp7dHlwZTpcImJvb2xlYW5cIixkZWZhdWx0OiExfSxjb250YWluczp7JHJlZjpcIiNcIn0sbWF4UHJvcGVydGllczp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyXCJ9LG1pblByb3BlcnRpZXM6eyRyZWY6XCIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwXCJ9LHJlcXVpcmVkOnskcmVmOlwiIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwifSxhZGRpdGlvbmFsUHJvcGVydGllczp7JHJlZjpcIiNcIn0sZGVmaW5pdGlvbnM6e3R5cGU6XCJvYmplY3RcIixhZGRpdGlvbmFsUHJvcGVydGllczp7JHJlZjpcIiNcIn0sZGVmYXVsdDp7fX0scHJvcGVydGllczp7dHlwZTpcIm9iamVjdFwiLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnskcmVmOlwiI1wifSxkZWZhdWx0Ont9fSxwYXR0ZXJuUHJvcGVydGllczp7dHlwZTpcIm9iamVjdFwiLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnskcmVmOlwiI1wifSxwcm9wZXJ0eU5hbWVzOntmb3JtYXQ6XCJyZWdleFwifSxkZWZhdWx0Ont9fSxkZXBlbmRlbmNpZXM6e3R5cGU6XCJvYmplY3RcIixhZGRpdGlvbmFsUHJvcGVydGllczp7YW55T2Y6W3skcmVmOlwiI1wifSx7JHJlZjpcIiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIn1dfX0scHJvcGVydHlOYW1lczp7JHJlZjpcIiNcIn0sY29uc3Q6ITAsZW51bTp7dHlwZTpcImFycmF5XCIsaXRlbXM6ITAsbWluSXRlbXM6MSx1bmlxdWVJdGVtczohMH0sdHlwZTp7YW55T2Y6W3skcmVmOlwiIy9kZWZpbml0aW9ucy9zaW1wbGVUeXBlc1wifSx7dHlwZTpcImFycmF5XCIsaXRlbXM6eyRyZWY6XCIjL2RlZmluaXRpb25zL3NpbXBsZVR5cGVzXCJ9LG1pbkl0ZW1zOjEsdW5pcXVlSXRlbXM6ITB9XX0sZm9ybWF0Ont0eXBlOlwic3RyaW5nXCJ9LGNvbnRlbnRNZWRpYVR5cGU6e3R5cGU6XCJzdHJpbmdcIn0sY29udGVudEVuY29kaW5nOnt0eXBlOlwic3RyaW5nXCJ9LGlmOnskcmVmOlwiI1wifSx0aGVuOnskcmVmOlwiI1wifSxlbHNlOnskcmVmOlwiI1wifSxhbGxPZjp7JHJlZjpcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIn0sYW55T2Y6eyRyZWY6XCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJ9LG9uZU9mOnskcmVmOlwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwifSxub3Q6eyRyZWY6XCIjXCJ9fSxkZWZhdWx0OiEwfX0pO3ZhciBIej1JKChiNixVeik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7YjYuTWlzc2luZ1JlZkVycm9yPWI2LlZhbGlkYXRpb25FcnJvcj1iNi5Db2RlR2VuPWI2Lk5hbWU9YjYubmlsPWI2LnN0cmluZ2lmeT1iNi5zdHI9YjYuXz1iNi5LZXl3b3JkQ3h0PWI2LkFqdj12b2lkIDA7dmFyIG5hPWtJKCkscmE9WlAoKSxvYT1QUCgpLGJQPUVQKCksdGE9W1wiL3Byb3BlcnRpZXNcIl0sJEc9XCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYVwiO2NsYXNzIHJKIGV4dGVuZHMgbmEuZGVmYXVsdHtfYWRkVm9jYWJ1bGFyaWVzKCl7aWYoc3VwZXIuX2FkZFZvY2FidWxhcmllcygpLHJhLmRlZmF1bHQuZm9yRWFjaCgoJCk9PnRoaXMuYWRkVm9jYWJ1bGFyeSgkKSksdGhpcy5vcHRzLmRpc2NyaW1pbmF0b3IpdGhpcy5hZGRLZXl3b3JkKG9hLmRlZmF1bHQpfV9hZGREZWZhdWx0TWV0YVNjaGVtYSgpe2lmKHN1cGVyLl9hZGREZWZhdWx0TWV0YVNjaGVtYSgpLCF0aGlzLm9wdHMubWV0YSlyZXR1cm47bGV0ICQ9dGhpcy5vcHRzLiRkYXRhP3RoaXMuJGRhdGFNZXRhU2NoZW1hKGJQLHRhKTpiUDt0aGlzLmFkZE1ldGFTY2hlbWEoJCwkRywhMSksdGhpcy5yZWZzW1wiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWFcIl09JEd9ZGVmYXVsdE1ldGEoKXtyZXR1cm4gdGhpcy5vcHRzLmRlZmF1bHRNZXRhPXN1cGVyLmRlZmF1bHRNZXRhKCl8fCh0aGlzLmdldFNjaGVtYSgkRyk/JEc6dm9pZCAwKX19YjYuQWp2PXJKO1V6LmV4cG9ydHM9YjY9cko7VXouZXhwb3J0cy5BanY9cko7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2I2LmRlZmF1bHQ9cko7dmFyIGFhPXhKKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiS2V5d29yZEN4dFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhYS5LZXl3b3JkQ3h0fX0pO3ZhciBqOT1RJCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcIl9cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gajkuX319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJzdHJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gajkuc3RyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcInN0cmluZ2lmeVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBqOS5zdHJpbmdpZnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwibmlsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGo5Lm5pbH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjYsXCJOYW1lXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGo5Lk5hbWV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGI2LFwiQ29kZUdlblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBqOS5Db2RlR2VufX0pO3ZhciBzYT1UVygpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcIlZhbGlkYXRpb25FcnJvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzYS5kZWZhdWx0fX0pO3ZhciBlYT1mSigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiNixcIk1pc3NpbmdSZWZFcnJvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlYS5kZWZhdWx0fX0pfSk7dmFyIGdQPUkoKGZQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShmUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtmUC5mb3JtYXROYW1lcz1mUC5mYXN0Rm9ybWF0cz1mUC5mdWxsRm9ybWF0cz12b2lkIDA7ZnVuY3Rpb24gazQoJCxRKXtyZXR1cm57dmFsaWRhdGU6JCxjb21wYXJlOlF9fWZQLmZ1bGxGb3JtYXRzPXtkYXRlOms0KHZQLEJ6KSx0aW1lOms0KHF6KCEwKSx6eiksXCJkYXRlLXRpbWVcIjprNChfUCghMCksVFApLFwiaXNvLXRpbWVcIjprNChxeigpLENQKSxcImlzby1kYXRlLXRpbWVcIjprNChfUCgpLHhQKSxkdXJhdGlvbjovXlAoPyEkKSgoXFxkK1kpPyhcXGQrTSk/KFxcZCtEKT8oVCg/PVxcZCkoXFxkK0gpPyhcXGQrTSk/KFxcZCtTKT8pP3woXFxkK1cpPykkLyx1cmk6VXMsXCJ1cmktcmVmZXJlbmNlXCI6L14oPzpbYS16XVthLXowLTkrXFwtLl0qOik/KD86XFwvP1xcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdfCVbMC05YS1mXXsyfSkqQCk/KD86XFxbKD86KD86KD86KD86WzAtOWEtZl17MSw0fTopezZ9fDo6KD86WzAtOWEtZl17MSw0fTopezV9fCg/OlswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDF9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7M318KD86KD86WzAtOWEtZl17MSw0fTopezAsMn1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXsyfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwzfVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fTp8KD86KD86WzAtOWEtZl17MSw0fTopezAsNH1bMC05YS1mXXsxLDR9KT86OikoPzpbMC05YS1mXXsxLDR9OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw1fVswLTlhLWZdezEsNH0pPzo6WzAtOWEtZl17MSw0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw2fVswLTlhLWZdezEsNH0pPzo6KXxbVnZdWzAtOWEtZl0rXFwuW2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol0rKVxcXXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPyl8KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqfFxcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/KD86XFw/KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/KD86Iyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaSxcInVyaS10ZW1wbGF0ZVwiOi9eKD86KD86W15cXHgwMC1cXHgyMFwiJzw+JVxcXFxeYHt8fV18JVswLTlhLWZdezJ9KXxcXHtbKyMuLzs/Jj0sIUB8XT8oPzpbYS16MC05X118JVswLTlhLWZdezJ9KSsoPzo6WzEtOV1bMC05XXswLDN9fFxcKik/KD86LCg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8pKlxcfSkqJC9pLHVybDovXig/Omh0dHBzP3xmdHApOlxcL1xcLyg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hKD86MTB8MTI3KSg/OlxcLlxcZHsxLDN9KXszfSkoPyEoPzoxNjlcXC4yNTR8MTkyXFwuMTY4KSg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rLSkqW2EtejAtOVxcdXswMGExfS1cXHV7ZmZmZn1dKykoPzpcXC4oPzpbYS16MC05XFx1ezAwYTF9LVxcdXtmZmZmfV0rLSkqW2EtejAtOVxcdXswMGExfS1cXHV7ZmZmZn1dKykqKD86XFwuKD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn1dezIsfSkpKSg/OjpcXGR7Miw1fSk/KD86XFwvW15cXHNdKik/JC9pdSxlbWFpbDovXlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1xcLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyQvaSxob3N0bmFtZTovXig/PS57MSwyNTN9XFwuPyQpW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KD86XFwuW2EtejAtOV0oPzpbLTAtOWEtel17MCw2MX1bMC05YS16XSk/KSpcXC4/JC9pLGlwdjQ6L14oPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZClcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpJC8saXB2NjovXigoKFswLTlhLWZdezEsNH06KXs3fShbMC05YS1mXXsxLDR9fDopKXwoKFswLTlhLWZdezEsNH06KXs2fSg6WzAtOWEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCgoWzAtOWEtZl17MSw0fTopezV9KCgoOlswLTlhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCgoWzAtOWEtZl17MSw0fTopezR9KCgoOlswLTlhLWZdezEsNH0pezEsM30pfCgoOlswLTlhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoKFswLTlhLWZdezEsNH06KXszfSgoKDpbMC05YS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05YS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCgoWzAtOWEtZl17MSw0fTopezJ9KCgoOlswLTlhLWZdezEsNH0pezEsNX0pfCgoOlswLTlhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KChbMC05YS1mXXsxLDR9Oil7MX0oKCg6WzAtOWEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOWEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoOigoKDpbMC05YS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05YS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSQvaSxyZWdleDpOcyx1dWlkOi9eKD86dXJuOnV1aWQ6KT9bMC05YS1mXXs4fS0oPzpbMC05YS1mXXs0fS0pezN9WzAtOWEtZl17MTJ9JC9pLFwianNvbi1wb2ludGVyXCI6L14oPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSokLyxcImpzb24tcG9pbnRlci11cmktZnJhZ21lbnRcIjovXiMoPzpcXC8oPzpbYS16MC05X1xcLS4hJCYnKCkqKyw7Oj1AXXwlWzAtOWEtZl17Mn18fjB8fjEpKikqJC9pLFwicmVsYXRpdmUtanNvbi1wb2ludGVyXCI6L14oPzowfFsxLTldWzAtOV0qKSg/OiN8KD86XFwvKD86W15+L118fjB8fjEpKikqKSQvLGJ5dGU6SHMsaW50MzI6e3R5cGU6XCJudW1iZXJcIix2YWxpZGF0ZTpWc30saW50NjQ6e3R5cGU6XCJudW1iZXJcIix2YWxpZGF0ZTpCc30sZmxvYXQ6e3R5cGU6XCJudW1iZXJcIix2YWxpZGF0ZTprUH0sZG91YmxlOnt0eXBlOlwibnVtYmVyXCIsdmFsaWRhdGU6a1B9LHBhc3N3b3JkOiEwLGJpbmFyeTohMH07ZlAuZmFzdEZvcm1hdHM9ey4uLmZQLmZ1bGxGb3JtYXRzLGRhdGU6azQoL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGQkLyxCeiksdGltZTprNCgvXig/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pJC9pLHp6KSxcImRhdGUtdGltZVwiOms0KC9eXFxkXFxkXFxkXFxkLVswLTFdXFxkLVswLTNdXFxkdCg/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pJC9pLFRQKSxcImlzby10aW1lXCI6azQoL14oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KT8kL2ksQ1ApLFwiaXNvLWRhdGUtdGltZVwiOms0KC9eXFxkXFxkXFxkXFxkLVswLTFdXFxkLVswLTNdXFxkW3RcXHNdKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pLHhQKSx1cmk6L14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKT9bXlxcc10qJC9pLFwidXJpLXJlZmVyZW5jZVwiOi9eKD86KD86W2Etel1bYS16MC05K1xcLS5dKjopP1xcLz9cXC8pPyg/OlteXFxcXFxccyNdW15cXHMjXSopPyg/OiNbXlxcXFxcXHNdKik/JC9pLGVtYWlsOi9eW2EtejAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KD86XFwuW2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/KSokL2l9O2ZQLmZvcm1hdE5hbWVzPU9iamVjdC5rZXlzKGZQLmZ1bGxGb3JtYXRzKTtmdW5jdGlvbiBKcygkKXtyZXR1cm4gJCU0PT09MCYmKCQlMTAwIT09MHx8JCU0MDA9PT0wKX12YXIgWHM9L14oXFxkXFxkXFxkXFxkKS0oXFxkXFxkKS0oXFxkXFxkKSQvLFlzPVswLDMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiB2UCgkKXtsZXQgUT1Ycy5leGVjKCQpO2lmKCFRKXJldHVybiExO2xldCBKPStRWzFdLFk9K1FbMl0sWD0rUVszXTtyZXR1cm4gWT49MSYmWTw9MTImJlg+PTEmJlg8PShZPT09MiYmSnMoSik/Mjk6WXNbWV0pfWZ1bmN0aW9uIEJ6KCQsUSl7aWYoISgkJiZRKSlyZXR1cm47aWYoJD5RKXJldHVybiAxO2lmKCQ8USlyZXR1cm4tMTtyZXR1cm4gMH12YXIgS3o9L14oXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKD86XFwuXFxkKyk/KSh6fChbKy1dKShcXGRcXGQpKD86Oj8oXFxkXFxkKSk/KT8kL2k7ZnVuY3Rpb24gcXooJCl7cmV0dXJuIGZ1bmN0aW9uKEope2xldCBZPUt6LmV4ZWMoSik7aWYoIVkpcmV0dXJuITE7bGV0IFg9K1lbMV0sVz0rWVsyXSxHPStZWzNdLFU9WVs0XSxIPVlbNV09PT1cIi1cIj8tMToxLHE9KyhZWzZdfHwwKSxWPSsoWVs3XXx8MCk7aWYocT4yM3x8Vj41OXx8JCYmIVUpcmV0dXJuITE7aWYoWDw9MjMmJlc8PTU5JiZHPDYwKXJldHVybiEwO2xldCBCPVctVipILHo9WC1xKkgtKEI8MD8xOjApO3JldHVybih6PT09MjN8fHo9PT0tMSkmJihCPT09NTl8fEI9PT0tMSkmJkc8NjF9fWZ1bmN0aW9uIHp6KCQsUSl7aWYoISgkJiZRKSlyZXR1cm47bGV0IEo9bmV3IERhdGUoXCIyMDIwLTAxLTAxVFwiKyQpLnZhbHVlT2YoKSxZPW5ldyBEYXRlKFwiMjAyMC0wMS0wMVRcIitRKS52YWx1ZU9mKCk7aWYoIShKJiZZKSlyZXR1cm47cmV0dXJuIEotWX1mdW5jdGlvbiBDUCgkLFEpe2lmKCEoJCYmUSkpcmV0dXJuO2xldCBKPUt6LmV4ZWMoJCksWT1Lei5leGVjKFEpO2lmKCEoSiYmWSkpcmV0dXJuO2lmKCQ9SlsxXStKWzJdK0pbM10sUT1ZWzFdK1lbMl0rWVszXSwkPlEpcmV0dXJuIDE7aWYoJDxRKXJldHVybi0xO3JldHVybiAwfXZhciBWej0vdHxcXHMvaTtmdW5jdGlvbiBfUCgkKXtsZXQgUT1xeigkKTtyZXR1cm4gZnVuY3Rpb24oWSl7bGV0IFg9WS5zcGxpdChWeik7cmV0dXJuIFgubGVuZ3RoPT09MiYmdlAoWFswXSkmJlEoWFsxXSl9fWZ1bmN0aW9uIFRQKCQsUSl7aWYoISgkJiZRKSlyZXR1cm47bGV0IEo9bmV3IERhdGUoJCkudmFsdWVPZigpLFk9bmV3IERhdGUoUSkudmFsdWVPZigpO2lmKCEoSiYmWSkpcmV0dXJuO3JldHVybiBKLVl9ZnVuY3Rpb24geFAoJCxRKXtpZighKCQmJlEpKXJldHVybjtsZXRbSixZXT0kLnNwbGl0KFZ6KSxbWCxXXT1RLnNwbGl0KFZ6KSxHPUJ6KEosWCk7aWYoRz09PXZvaWQgMClyZXR1cm47cmV0dXJuIEd8fHp6KFksVyl9dmFyIFdzPS9cXC98Oi8sR3M9L14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKSg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaTtmdW5jdGlvbiBVcygkKXtyZXR1cm4gV3MudGVzdCgkKSYmR3MudGVzdCgkKX12YXIgU1A9L14oPzpbQS1aYS16MC05Ky9dezR9KSooPzpbQS1aYS16MC05Ky9dezJ9PT18W0EtWmEtejAtOSsvXXszfT0pPyQvZ207ZnVuY3Rpb24gSHMoJCl7cmV0dXJuIFNQLmxhc3RJbmRleD0wLFNQLnRlc3QoJCl9dmFyIEtzPS0yMTQ3NDgzNjQ4LHFzPTIxNDc0ODM2NDc7ZnVuY3Rpb24gVnMoJCl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoJCkmJiQ8PXFzJiYkPj1Lc31mdW5jdGlvbiBCcygkKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcigkKX1mdW5jdGlvbiBrUCgpe3JldHVybiEwfXZhciB6cz0vW15cXFxcXVxcXFxaLztmdW5jdGlvbiBOcygkKXtpZih6cy50ZXN0KCQpKXJldHVybiExO3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCgkKSwhMH1jYXRjaChRKXtyZXR1cm4hMX19fSk7dmFyIHVQPUkoKGhQKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShoUCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtoUC5mb3JtYXRMaW1pdERlZmluaXRpb249dm9pZCAwO3ZhciBPcz1IeigpLEY0PVEkKCksbDE9RjQub3BlcmF0b3JzLFFHPXtmb3JtYXRNYXhpbXVtOntva1N0cjpcIjw9XCIsb2s6bDEuTFRFLGZhaWw6bDEuR1R9LGZvcm1hdE1pbmltdW06e29rU3RyOlwiPj1cIixvazpsMS5HVEUsZmFpbDpsMS5MVH0sZm9ybWF0RXhjbHVzaXZlTWF4aW11bTp7b2tTdHI6XCI8XCIsb2s6bDEuTFQsZmFpbDpsMS5HVEV9LGZvcm1hdEV4Y2x1c2l2ZU1pbmltdW06e29rU3RyOlwiPlwiLG9rOmwxLkdULGZhaWw6bDEuTFRFfX0sRHM9e21lc3NhZ2U6KHtrZXl3b3JkOiQsc2NoZW1hQ29kZTpRfSk9PkY0LnN0cmBzaG91bGQgYmUgJHtRR1skXS5va1N0cn0gJHtRfWAscGFyYW1zOih7a2V5d29yZDokLHNjaGVtYUNvZGU6UX0pPT5GNC5fYHtjb21wYXJpc29uOiAke1FHWyRdLm9rU3RyfSwgbGltaXQ6ICR7UX19YH07aFAuZm9ybWF0TGltaXREZWZpbml0aW9uPXtrZXl3b3JkOk9iamVjdC5rZXlzKFFHKSx0eXBlOlwic3RyaW5nXCIsc2NoZW1hVHlwZTpcInN0cmluZ1wiLCRkYXRhOiEwLGVycm9yOkRzLGNvZGUoJCl7bGV0e2dlbjpRLGRhdGE6SixzY2hlbWFDb2RlOlksa2V5d29yZDpYLGl0Old9PSQse29wdHM6RyxzZWxmOlV9PVc7aWYoIUcudmFsaWRhdGVGb3JtYXRzKXJldHVybjtsZXQgSD1uZXcgT3MuS2V5d29yZEN4dChXLFUuUlVMRVMuYWxsLmZvcm1hdC5kZWZpbml0aW9uLFwiZm9ybWF0XCIpO2lmKEguJGRhdGEpcSgpO2Vsc2UgVigpO2Z1bmN0aW9uIHEoKXtsZXQgej1RLnNjb3BlVmFsdWUoXCJmb3JtYXRzXCIse3JlZjpVLmZvcm1hdHMsY29kZTpHLmNvZGUuZm9ybWF0c30pLE49US5jb25zdChcImZtdFwiLEY0Ll9gJHt6fVske0guc2NoZW1hQ29kZX1dYCk7JC5mYWlsJGRhdGEoKDAsRjQub3IpKEY0Ll9gdHlwZW9mICR7Tn0gIT0gXCJvYmplY3RcImAsRjQuX2Ake059IGluc3RhbmNlb2YgUmVnRXhwYCxGNC5fYHR5cGVvZiAke059LmNvbXBhcmUgIT0gXCJmdW5jdGlvblwiYCxCKE4pKSl9ZnVuY3Rpb24gVigpe2xldCB6PUguc2NoZW1hLE49VS5mb3JtYXRzW3pdO2lmKCFOfHxOPT09ITApcmV0dXJuO2lmKHR5cGVvZiBOIT1cIm9iamVjdFwifHxOIGluc3RhbmNlb2YgUmVnRXhwfHx0eXBlb2YgTi5jb21wYXJlIT1cImZ1bmN0aW9uXCIpdGhyb3cgRXJyb3IoYFwiJHtYfVwiOiBmb3JtYXQgXCIke3p9XCIgZG9lcyBub3QgZGVmaW5lIFwiY29tcGFyZVwiIGZ1bmN0aW9uYCk7bGV0IHc9US5zY29wZVZhbHVlKFwiZm9ybWF0c1wiLHtrZXk6eixyZWY6Tixjb2RlOkcuY29kZS5mb3JtYXRzP0Y0Ll9gJHtHLmNvZGUuZm9ybWF0c30keygwLEY0LmdldFByb3BlcnR5KSh6KX1gOnZvaWQgMH0pOyQuZmFpbCRkYXRhKEIodykpfWZ1bmN0aW9uIEIoeil7cmV0dXJuIEY0Ll9gJHt6fS5jb21wYXJlKCR7Sn0sICR7WX0pICR7UUdbWF0uZmFpbH0gMGB9fSxkZXBlbmRlbmNpZXM6W1wiZm9ybWF0XCJdfTt2YXIgRnM9KCQpPT57cmV0dXJuICQuYWRkS2V5d29yZChoUC5mb3JtYXRMaW1pdERlZmluaXRpb24pLCR9O2hQLmRlZmF1bHQ9RnN9KTt2YXIgcFA9SSgob0osY1ApPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KG9KLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBBOT1nUCgpLE1zPXVQKCksT3o9USQoKSxtUD1uZXcgT3ouTmFtZShcImZ1bGxGb3JtYXRzXCIpLExzPW5ldyBPei5OYW1lKFwiZmFzdEZvcm1hdHNcIiksRHo9KCQsUT17a2V5d29yZHM6ITB9KT0+e2lmKEFycmF5LmlzQXJyYXkoUSkpcmV0dXJuIGxQKCQsUSxBOS5mdWxsRm9ybWF0cyxtUCksJDtsZXRbSixZXT1RLm1vZGU9PT1cImZhc3RcIj9bQTkuZmFzdEZvcm1hdHMsTHNdOltBOS5mdWxsRm9ybWF0cyxtUF0sWD1RLmZvcm1hdHN8fEE5LmZvcm1hdE5hbWVzO2lmKGxQKCQsWCxKLFkpLFEua2V5d29yZHMpKDAsTXMuZGVmYXVsdCkoJCk7cmV0dXJuICR9O0R6LmdldD0oJCxRPVwiZnVsbFwiKT0+e2xldCBZPShRPT09XCJmYXN0XCI/QTkuZmFzdEZvcm1hdHM6QTkuZnVsbEZvcm1hdHMpWyRdO2lmKCFZKXRocm93IEVycm9yKGBVbmtub3duIGZvcm1hdCBcIiR7JH1cImApO3JldHVybiBZfTtmdW5jdGlvbiBsUCgkLFEsSixZKXt2YXIgWCxXOyhYPShXPSQub3B0cy5jb2RlKS5mb3JtYXRzKSE9PW51bGwmJlghPT12b2lkIDB8fChXLmZvcm1hdHM9T3ouX2ByZXF1aXJlKFwiYWp2LWZvcm1hdHMvZGlzdC9mb3JtYXRzXCIpLiR7WX1gKTtmb3IobGV0IEcgb2YgUSkkLmFkZEZvcm1hdChHLEpbR10pfWNQLmV4cG9ydHM9b0o9RHo7T2JqZWN0LmRlZmluZVByb3BlcnR5KG9KLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO29KLmRlZmF1bHQ9RHp9KTtpbXBvcnR7ZXhlY0ZpbGUgYXMgRTYkfWZyb21cImNoaWxkX3Byb2Nlc3NcIjtpbXBvcnR7cmFuZG9tVVVJRCBhcyByen1mcm9tXCJjcnlwdG9cIjtpbXBvcnR7Y3JlYXRlUmVhZFN0cmVhbSBhcyBiNiQscmVhbHBhdGhTeW5jIGFzIF82JH1mcm9tXCJmc1wiO2ltcG9ydHtjb3B5RmlsZSBhcyBTNiQsbWtkaXIgYXMgcHoscmVhZGRpciBhcyBrNiQscmVhZEZpbGUgYXMgTV8scm0gYXMgdjYkLHdyaXRlRmlsZSBhcyBMX31mcm9tXCJmcy9wcm9taXNlc1wiO2ltcG9ydHtjcmVhdGVSZXF1aXJlIGFzIEM2JH1mcm9tXCJtb2R1bGVcIjtpbXBvcnR7aG9tZWRpciBhcyBkeix0bXBkaXIgYXMgVDYkfWZyb21cIm9zXCI7aW1wb3J0e2Rpcm5hbWUgYXMgd18saXNBYnNvbHV0ZSBhcyBqXyxqb2luIGFzIGg2LHJlbGF0aXZlIGFzIEFfLHJlc29sdmUgYXMgcVgsc2VwIGFzIG96fWZyb21cInBhdGhcIjtpbXBvcnR7Y3JlYXRlSW50ZXJmYWNlIGFzIHg2JH1mcm9tXCJyZWFkbGluZVwiO2ltcG9ydHtmaWxlVVJMVG9QYXRoIGFzIGY2JH1mcm9tXCJ1cmxcIjtpbXBvcnR7c2V0TWF4TGlzdGVuZXJzIGFzIFhTfWZyb21cImV2ZW50c1wiO3ZhciBZUz01MDtmdW5jdGlvbiBhMCgkPVlTKXtsZXQgUT1uZXcgQWJvcnRDb250cm9sbGVyO3JldHVybiBYUygkLFEuc2lnbmFsKSxRfWZ1bmN0aW9uIHpYKCQsUSxKKXtyZXR1cm4gbmV3IFByb21pc2UoKFksWCk9PntpZihRPy5hYm9ydGVkKXtpZihKPy50aHJvd09uQWJvcnR8fEo/LmFib3J0RXJyb3IpWChKLmFib3J0RXJyb3I/LigpPz9FcnJvcihcImFib3J0ZWRcIikpO2Vsc2UgWSgpO3JldHVybn1sZXQgVz1zZXRUaW1lb3V0KChVLEgscSk9PntVPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIixIKSxxKCl9LCQsUSxHLFkpO2Z1bmN0aW9uIEcoKXtpZihjbGVhclRpbWVvdXQoVyksSj8udGhyb3dPbkFib3J0fHxKPy5hYm9ydEVycm9yKVgoSi5hYm9ydEVycm9yPy4oKT8/RXJyb3IoXCJhYm9ydGVkXCIpKTtlbHNlIFkoKX1pZihRPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixHLHtvbmNlOiEwfSksSj8udW5yZWYpVy51bnJlZigpfSl9ZnVuY3Rpb24gV1MoJCxRKXskKEVycm9yKFEpKX1mdW5jdGlvbiBUNCgkLFEsSil7bGV0IFksWD1uZXcgUHJvbWlzZSgoVyxHKT0+e2lmKFk9c2V0VGltZW91dChXUyxRLEcsSiksdHlwZW9mIFk9PT1cIm9iamVjdFwiKVkudW5yZWY/LigpfSk7cmV0dXJuIFByb21pc2UucmFjZShbJCxYXSkuZmluYWxseSgoKT0+e2lmKFkhPT12b2lkIDApY2xlYXJUaW1lb3V0KFkpfSl9aW1wb3J0e3NwYXduIGFzIEJ4fWZyb21cImNoaWxkX3Byb2Nlc3NcIjtpbXBvcnR7ZXhpc3RzU3luYyBhcyB6eH1mcm9tXCJmc1wiO2ltcG9ydHtjcmVhdGVJbnRlcmZhY2UgYXMgTnh9ZnJvbVwicmVhZGxpbmVcIjt2YXIgczA9W1wiUHJlVG9vbFVzZVwiLFwiUG9zdFRvb2xVc2VcIixcIlBvc3RUb29sVXNlRmFpbHVyZVwiLFwiUG9zdFRvb2xCYXRjaFwiLFwiTm90aWZpY2F0aW9uXCIsXCJVc2VyUHJvbXB0U3VibWl0XCIsXCJVc2VyUHJvbXB0RXhwYW5zaW9uXCIsXCJTZXNzaW9uU3RhcnRcIixcIlNlc3Npb25FbmRcIixcIlN0b3BcIixcIlN0b3BGYWlsdXJlXCIsXCJTdWJhZ2VudFN0YXJ0XCIsXCJTdWJhZ2VudFN0b3BcIixcIlByZUNvbXBhY3RcIixcIlBvc3RDb21wYWN0XCIsXCJQZXJtaXNzaW9uUmVxdWVzdFwiLFwiUGVybWlzc2lvbkRlbmllZFwiLFwiU2V0dXBcIixcIlRlYW1tYXRlSWRsZVwiLFwiVGFza0NyZWF0ZWRcIixcIlRhc2tDb21wbGV0ZWRcIixcIkVsaWNpdGF0aW9uXCIsXCJFbGljaXRhdGlvblJlc3VsdFwiLFwiQ29uZmlnQ2hhbmdlXCIsXCJXb3JrdHJlZUNyZWF0ZVwiLFwiV29ya3RyZWVSZW1vdmVcIixcIkluc3RydWN0aW9uc0xvYWRlZFwiLFwiQ3dkQ2hhbmdlZFwiLFwiRmlsZUNoYW5nZWRcIl0sR1M9W1wiY2xlYXJcIixcInJlc3VtZVwiLFwibG9nb3V0XCIsXCJwcm9tcHRfaW5wdXRfZXhpdFwiLFwib3RoZXJcIixcImJ5cGFzc19wZXJtaXNzaW9uc19kaXNhYmxlZFwiXSxVUz1cIl9fU1lTVEVNX1BST01QVF9EWU5BTUlDX0JPVU5EQVJZX19cIjt2YXIgSFM9L14oPzpcXHMqPFthLXpdW1xcdy1dKltcXHM+XXxcXFtSZXF1ZXN0IGludGVycnVwdGVkIGJ5IHVzZXJbXlxcXV0qXFxdKS8sS1M9Lzxjb21tYW5kLW5hbWU+KC4qPyk8XFwvY29tbWFuZC1uYW1lPi87ZnVuY3Rpb24geTkoJCxRKXtpZigkLnR5cGUhPT1cInVzZXJcIilyZXR1cm47aWYoJC5pc01ldGE9PT0hMHx8JC5pc0NvbXBhY3RTdW1tYXJ5PT09ITApcmV0dXJuO2xldCBKPSQubWVzc2FnZTtpZighSilyZXR1cm47bGV0IFk9Si5jb250ZW50LFg9W107aWYodHlwZW9mIFk9PT1cInN0cmluZ1wiKVgucHVzaChZKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoWSkpZm9yKGxldCBXIG9mIFkpe2lmKCFXfHx0eXBlb2YgVyE9PVwib2JqZWN0XCIpY29udGludWU7aWYoVy50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKXJldHVybjtpZihXLnR5cGU9PT1cInRleHRcIiYmdHlwZW9mIFcudGV4dD09PVwic3RyaW5nXCIpWC5wdXNoKFcudGV4dCl9Zm9yKGxldCBXIG9mIFgpe2xldCBHPVcucmVwbGFjZUFsbChgXG5gLFwiIFwiKS50cmltKCk7aWYoIUcpY29udGludWU7bGV0IFU9S1MuZXhlYyhHKTtpZihVKXtpZighUS5jb21tYW5kRmFsbGJhY2spUS5jb21tYW5kRmFsbGJhY2s9VVsxXTtjb250aW51ZX1sZXQgSD0vPGJhc2gtaW5wdXQ+KFtcXHNcXFNdKj8pPFxcL2Jhc2gtaW5wdXQ+Ly5leGVjKEcpO2lmKEgpcmV0dXJuYCEgJHtIWzFdLnRyaW0oKX1gO2lmKEhTLnRlc3QoRykpY29udGludWU7aWYoRy5sZW5ndGg+MjAwKUc9Ry5zbGljZSgwLDIwMCkudHJpbSgpK1wiXHUyMDI2XCI7cmV0dXJuIEd9cmV0dXJufXZhciBxUz17Y3VzdG9tVGl0bGU6XCJjdXN0b21UaXRsZVwiLGFpVGl0bGU6XCJhaVRpdGxlXCIsbGFzdFByb21wdDpcImxhc3RQcm9tcHRcIixzdW1tYXJ5Olwic3VtbWFyeUhpbnRcIixnaXRCcmFuY2g6XCJnaXRCcmFuY2hcIn07ZnVuY3Rpb24gTlgoJCxRLEosWSl7bGV0IFg9WT8ubXRpbWU/PyQ/Lm10aW1lPz8wLFc9JCE9PXZvaWQgMD97c2Vzc2lvbklkOiQuc2Vzc2lvbklkLG10aW1lOlgsZGF0YTp7Li4uJC5kYXRhfX06e3Nlc3Npb25JZDpRLnNlc3Npb25JZCxtdGltZTpYLGRhdGE6e319LEc9Vy5kYXRhO2ZvcihsZXQgVSBvZiBKKXtsZXQgSD1CUyhVLnRpbWVzdGFtcCk7aWYoRy5pc1NpZGVjaGFpbj09PXZvaWQgMClHLmlzU2lkZWNoYWluPVUuaXNTaWRlY2hhaW49PT0hMDtpZihHLmNyZWF0ZWRBdD09PXZvaWQgMCYmSCE9PXZvaWQgMClHLmNyZWF0ZWRBdD1IO2lmKEcuY3dkPT09dm9pZCAwKXtsZXQgcT1VLmN3ZDtpZih0eXBlb2YgcT09PVwic3RyaW5nXCImJnEpRy5jd2Q9cX16UyhHLFUpO2ZvcihsZXRbcSxWXW9mIE9iamVjdC5lbnRyaWVzKHFTKSl7bGV0IEI9VVtxXTtpZih0eXBlb2YgQj09PVwic3RyaW5nXCIpR1tWXT1CfWlmKFUudHlwZT09PVwidGFnXCIpe2xldCBxPVUudGFnO2lmKHR5cGVvZiBxPT09XCJzdHJpbmdcIiYmcSlHLnRhZz1xO2Vsc2UgZGVsZXRlIEcudGFnfX1yZXR1cm4gV31mdW5jdGlvbiBHTigkLFEpe2xldCBKPSQuZGF0YTtpZihKLmlzU2lkZWNoYWluPT09ITApcmV0dXJuIG51bGw7bGV0IFk9SDEoSi5maXJzdFByb21wdExvY2tlZD09PSEwP0ouZmlyc3RQcm9tcHQ6Si5jb21tYW5kRmFsbGJhY2spfHx2b2lkIDAsWD1IMShKLmN1c3RvbVRpdGxlKXx8SDEoSi5haVRpdGxlKXx8dm9pZCAwLFc9WHx8SDEoSi5sYXN0UHJvbXB0KXx8SDEoSi5zdW1tYXJ5SGludCl8fFk7aWYoIVcpcmV0dXJuIG51bGw7cmV0dXJue3Nlc3Npb25JZDokLnNlc3Npb25JZCxzdW1tYXJ5OlcsbGFzdE1vZGlmaWVkOiQubXRpbWUsZmlsZVNpemU6dm9pZCAwLGN1c3RvbVRpdGxlOlgsZmlyc3RQcm9tcHQ6WSxnaXRCcmFuY2g6SDEoSi5naXRCcmFuY2gpfHx2b2lkIDAsY3dkOkgxKEouY3dkKXx8UXx8dm9pZCAwLHRhZzpIMShKLnRhZyl8fHZvaWQgMCxjcmVhdGVkQXQ6VlMoSi5jcmVhdGVkQXQpfX1mdW5jdGlvbiBIMSgkKXtyZXR1cm4gdHlwZW9mICQ9PT1cInN0cmluZ1wiPyQ6dm9pZCAwfWZ1bmN0aW9uIFZTKCQpe3JldHVybiB0eXBlb2YgJD09PVwibnVtYmVyXCI/JDp2b2lkIDB9ZnVuY3Rpb24gQlMoJCl7aWYodHlwZW9mICQhPT1cInN0cmluZ1wiKXJldHVybjtsZXQgUT1EYXRlLnBhcnNlKCQpO3JldHVybiBOdW1iZXIuaXNOYU4oUSk/dm9pZCAwOlF9ZnVuY3Rpb24gelMoJCxRKXtpZigkLmZpcnN0UHJvbXB0TG9ja2VkKXJldHVybjtsZXQgSj17Y29tbWFuZEZhbGxiYWNrOiQuY29tbWFuZEZhbGxiYWNrPz9cIlwifSxZPXk5KFEsSik7aWYoSi5jb21tYW5kRmFsbGJhY2smJiEkLmNvbW1hbmRGYWxsYmFjaykkLmNvbW1hbmRGYWxsYmFjaz1KLmNvbW1hbmRGYWxsYmFjaztpZihZIT09dm9pZCAwKSQuZmlyc3RQcm9tcHQ9WSwkLmZpcnN0UHJvbXB0TG9ja2VkPSEwfWNsYXNzIFBHe3N0b3JlPW5ldyBNYXA7bXRpbWVzPW5ldyBNYXA7c3VtbWFyaWVzPW5ldyBNYXA7bGFzdE10aW1lPTA7a2V5VG9TdHJpbmcoJCl7bGV0IFE9WyQucHJvamVjdEtleSwkLnNlc3Npb25JZF07aWYoJC5zdWJwYXRoKVEucHVzaCgkLnN1YnBhdGgpO3JldHVybiBRLmpvaW4oXCIvXCIpfWFzeW5jIGFwcGVuZCgkLFEpe2xldCBKPXRoaXMua2V5VG9TdHJpbmcoJCksWT10aGlzLnN0b3JlLmdldChKKT8/W107WS5wdXNoKC4uLlEpLHRoaXMuc3RvcmUuc2V0KEosWSk7bGV0IFg9TWF0aC5tYXgoRGF0ZS5ub3coKSx0aGlzLmxhc3RNdGltZSsxKTtpZih0aGlzLmxhc3RNdGltZT1YLHRoaXMubXRpbWVzLnNldChKLFgpLCQuc3VicGF0aD09PXZvaWQgMCl7bGV0IFc9YCR7JC5wcm9qZWN0S2V5fS8keyQuc2Vzc2lvbklkfWAsRz1OWCh0aGlzLnN1bW1hcmllcy5nZXQoVyksJCxRLHttdGltZTpYfSk7dGhpcy5zdW1tYXJpZXMuc2V0KFcsRyl9fWFzeW5jIGxvYWQoJCl7bGV0IFE9dGhpcy5rZXlUb1N0cmluZygkKTtyZXR1cm4gdGhpcy5zdG9yZS5nZXQoUSk/P251bGx9YXN5bmMgbGlzdFNlc3Npb25zKCQpe2xldCBRPVtdLEo9JCtcIi9cIjtmb3IobGV0W1ldb2YgdGhpcy5zdG9yZSlpZihZLnN0YXJ0c1dpdGgoSikpe2xldCBYPVkuc2xpY2UoSi5sZW5ndGgpO2lmKCFYLmluY2x1ZGVzKFwiL1wiKSlRLnB1c2goe3Nlc3Npb25JZDpYLG10aW1lOnRoaXMubXRpbWVzLmdldChZKT8/MH0pfXJldHVybiBRfWFzeW5jIGxpc3RTZXNzaW9uU3VtbWFyaWVzKCQpe2xldCBRPVtdLEo9JCtcIi9cIjtmb3IobGV0W1ksWF1vZiB0aGlzLnN1bW1hcmllcylpZihZLnN0YXJ0c1dpdGgoSikpUS5wdXNoKFgpO3JldHVybiBRfWFzeW5jIGRlbGV0ZSgkKXtsZXQgUT10aGlzLmtleVRvU3RyaW5nKCQpO2lmKHRoaXMuc3RvcmUuZGVsZXRlKFEpLHRoaXMubXRpbWVzLmRlbGV0ZShRKSwkLnN1YnBhdGg9PT12b2lkIDApe3RoaXMuc3VtbWFyaWVzLmRlbGV0ZShgJHskLnByb2plY3RLZXl9LyR7JC5zZXNzaW9uSWR9YCk7bGV0IEo9YCR7JC5wcm9qZWN0S2V5fS8keyQuc2Vzc2lvbklkfS9gO2ZvcihsZXQgWSBvZiB0aGlzLnN0b3JlLmtleXMoKSlpZihZLnN0YXJ0c1dpdGgoSikpdGhpcy5zdG9yZS5kZWxldGUoWSksdGhpcy5tdGltZXMuZGVsZXRlKFkpfX1hc3luYyBsaXN0U3Via2V5cygkKXtsZXQgUT1gJHskLnByb2plY3RLZXl9LyR7JC5zZXNzaW9uSWR9L2AsSj1bXTtmb3IobGV0IFkgb2YgdGhpcy5zdG9yZS5rZXlzKCkpaWYoWS5zdGFydHNXaXRoKFEpKUoucHVzaChZLnNsaWNlKFEubGVuZ3RoKSk7cmV0dXJuIEp9Z2V0RW50cmllcygkKXtyZXR1cm4gdGhpcy5zdG9yZS5nZXQodGhpcy5rZXlUb1N0cmluZygkKSk/P1tdfWdldCBzaXplKCl7bGV0ICQ9MDtmb3IobGV0IFEgb2YgdGhpcy5zdG9yZS5rZXlzKCkpe2xldCBKPVEuaW5kZXhPZihcIi9cIik7aWYoSiE9PS0xJiYhUS5zbGljZShKKzEpLmluY2x1ZGVzKFwiL1wiKSkkKyt9cmV0dXJuICR9Y2xlYXIoKXt0aGlzLnN0b3JlLmNsZWFyKCksdGhpcy5tdGltZXMuY2xlYXIoKSx0aGlzLnN1bW1hcmllcy5jbGVhcigpfX1jbGFzcyBxNiBleHRlbmRzIEVycm9ye31mdW5jdGlvbiBlMCgpe3JldHVybiBwcm9jZXNzLnZlcnNpb25zLmJ1biE9PXZvaWQgMH1mdW5jdGlvbiBSJCgkKXtpZighJClyZXR1cm4hMTtpZih0eXBlb2YgJD09PVwiYm9vbGVhblwiKXJldHVybiAkO2xldCBRPVN0cmluZygkKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtyZXR1cm5bXCIxXCIsXCJ0cnVlXCIsXCJ5ZXNcIixcIm9uXCJdLmluY2x1ZGVzKFEpfWZ1bmN0aW9uIGUxKCl7bGV0ICQ9bmV3IFNldDtyZXR1cm57c3Vic2NyaWJlKFEpe3JldHVybiAkLmFkZChRKSwoKT0+eyQuZGVsZXRlKFEpfX0sZW1pdCguLi5RKXtsZXQgSjtmb3IobGV0IFkgb2YgJCl0cnl7WSguLi5RKX1jYXRjaChYKXsoSj8/PVtdKS5wdXNoKFgpfWlmKEopdGhyb3cgSi5sZW5ndGg9PT0xP0pbMF06QWdncmVnYXRlRXJyb3IoSixcIlNpZ25hbCBsaXN0ZW5lcihzKSB0aHJld1wiKX0sY2xlYXIoKXskLmNsZWFyKCl9fX12YXIgd1M9dHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsd1g9d1M7dmFyIE9TPXR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixEUz13WHx8T1N8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxsNj1EUzt2YXIgRlM9bDYuU3ltYm9sLGM2PUZTO3ZhciBVTj1PYmplY3QucHJvdG90eXBlLFpTPVVOLmhhc093blByb3BlcnR5LE1TPVVOLnRvU3RyaW5nLGc5PWM2P2M2LnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBMUygkKXt2YXIgUT1aUy5jYWxsKCQsZzkpLEo9JFtnOV07dHJ5eyRbZzldPXZvaWQgMDt2YXIgWT0hMH1jYXRjaChXKXt9dmFyIFg9TVMuY2FsbCgkKTtpZihZKWlmKFEpJFtnOV09SjtlbHNlIGRlbGV0ZSAkW2c5XTtyZXR1cm4gWH12YXIgSE49TFM7dmFyIGpTPU9iamVjdC5wcm90b3R5cGUsQVM9alMudG9TdHJpbmc7ZnVuY3Rpb24gSVMoJCl7cmV0dXJuIEFTLmNhbGwoJCl9dmFyIEtOPUlTO3ZhciBSUz1cIltvYmplY3QgTnVsbF1cIixQUz1cIltvYmplY3QgVW5kZWZpbmVkXVwiLHFOPWM2P2M2LnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBFUygkKXtpZigkPT1udWxsKXJldHVybiAkPT09dm9pZCAwP1BTOlJTO3JldHVybiBxTiYmcU4gaW4gT2JqZWN0KCQpP0hOKCQpOktOKCQpfXZhciBBND1FUztmdW5jdGlvbiBiUygkKXt2YXIgUT10eXBlb2YgJDtyZXR1cm4gJCE9bnVsbCYmKFE9PVwib2JqZWN0XCJ8fFE9PVwiZnVuY3Rpb25cIil9dmFyICQ2PWJTO3ZhciBfUz1cIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIixTUz1cIltvYmplY3QgRnVuY3Rpb25dXCIsa1M9XCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXVwiLHZTPVwiW29iamVjdCBQcm94eV1cIjtmdW5jdGlvbiBDUygkKXtpZighJDYoJCkpcmV0dXJuITE7dmFyIFE9QTQoJCk7cmV0dXJuIFE9PVNTfHxRPT1rU3x8UT09X1N8fFE9PXZTfXZhciAkOD1DUzt2YXIgVFM9bDZbXCJfX2NvcmUtanNfc2hhcmVkX19cIl0sT1g9VFM7dmFyIFZOPWZ1bmN0aW9uKCl7dmFyICQ9L1teLl0rJC8uZXhlYyhPWCYmT1gua2V5cyYmT1gua2V5cy5JRV9QUk9UT3x8XCJcIik7cmV0dXJuICQ/XCJTeW1ib2woc3JjKV8xLlwiKyQ6XCJcIn0oKTtmdW5jdGlvbiB4UygkKXtyZXR1cm4hIVZOJiZWTiBpbiAkfXZhciBCTj14Uzt2YXIgZlM9RnVuY3Rpb24ucHJvdG90eXBlLHlTPWZTLnRvU3RyaW5nO2Z1bmN0aW9uIGdTKCQpe2lmKCQhPW51bGwpe3RyeXtyZXR1cm4geVMuY2FsbCgkKX1jYXRjaChRKXt9dHJ5e3JldHVybiAkK1wiXCJ9Y2F0Y2goUSl7fX1yZXR1cm5cIlwifXZhciB6Tj1nUzt2YXIgaFM9L1tcXFxcXiQuKis/KClbXFxde318XS9nLHVTPS9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC8sbVM9RnVuY3Rpb24ucHJvdG90eXBlLGxTPU9iamVjdC5wcm90b3R5cGUsY1M9bVMudG9TdHJpbmcscFM9bFMuaGFzT3duUHJvcGVydHksZFM9UmVnRXhwKFwiXlwiK2NTLmNhbGwocFMpLnJlcGxhY2UoaFMsXCJcXFxcJCZcIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZyxcIiQxLio/XCIpK1wiJFwiKTtmdW5jdGlvbiBpUygkKXtpZighJDYoJCl8fEJOKCQpKXJldHVybiExO3ZhciBRPSQ4KCQpP2RTOnVTO3JldHVybiBRLnRlc3Qoek4oJCkpfXZhciBOTj1pUztmdW5jdGlvbiBuUygkLFEpe3JldHVybiAkPT1udWxsP3ZvaWQgMDokW1FdfXZhciB3Tj1uUztmdW5jdGlvbiByUygkLFEpe3ZhciBKPXdOKCQsUSk7cmV0dXJuIE5OKEopP0o6dm9pZCAwfXZhciBROD1yUzt2YXIgb1M9UTgoT2JqZWN0LFwiY3JlYXRlXCIpLHg0PW9TO2Z1bmN0aW9uIHRTKCl7dGhpcy5fX2RhdGFfXz14ND94NChudWxsKTp7fSx0aGlzLnNpemU9MH12YXIgT049dFM7ZnVuY3Rpb24gYVMoJCl7dmFyIFE9dGhpcy5oYXMoJCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fWyRdO3JldHVybiB0aGlzLnNpemUtPVE/MTowLFF9dmFyIEROPWFTO3ZhciBzUz1cIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX19cIixlUz1PYmplY3QucHJvdG90eXBlLCRrPWVTLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFFrKCQpe3ZhciBRPXRoaXMuX19kYXRhX187aWYoeDQpe3ZhciBKPVFbJF07cmV0dXJuIEo9PT1zUz92b2lkIDA6Sn1yZXR1cm4gJGsuY2FsbChRLCQpP1FbJF06dm9pZCAwfXZhciBGTj1Razt2YXIgSms9T2JqZWN0LnByb3RvdHlwZSxYaz1Kay5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBZaygkKXt2YXIgUT10aGlzLl9fZGF0YV9fO3JldHVybiB4ND9RWyRdIT09dm9pZCAwOlhrLmNhbGwoUSwkKX12YXIgWk49WWs7dmFyIFdrPVwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiO2Z1bmN0aW9uIEdrKCQsUSl7dmFyIEo9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcygkKT8wOjEsSlskXT14NCYmUT09PXZvaWQgMD9XazpRLHRoaXN9dmFyIE1OPUdrO2Z1bmN0aW9uIEo4KCQpe3ZhciBRPS0xLEo9JD09bnVsbD8wOiQubGVuZ3RoO3RoaXMuY2xlYXIoKTt3aGlsZSgrK1E8Sil7dmFyIFk9JFtRXTt0aGlzLnNldChZWzBdLFlbMV0pfX1KOC5wcm90b3R5cGUuY2xlYXI9T047SjgucHJvdG90eXBlLmRlbGV0ZT1ETjtKOC5wcm90b3R5cGUuZ2V0PUZOO0o4LnByb3RvdHlwZS5oYXM9Wk47SjgucHJvdG90eXBlLnNldD1NTjt2YXIgRUc9Sjg7ZnVuY3Rpb24gVWsoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfXZhciBMTj1VaztmdW5jdGlvbiBIaygkLFEpe3JldHVybiAkPT09UXx8JCE9PSQmJlEhPT1RfXZhciBLMT1IaztmdW5jdGlvbiBLaygkLFEpe3ZhciBKPSQubGVuZ3RoO3doaWxlKEotLSlpZihLMSgkW0pdWzBdLFEpKXJldHVybiBKO3JldHVybi0xfXZhciBxMT1Lazt2YXIgcWs9QXJyYXkucHJvdG90eXBlLFZrPXFrLnNwbGljZTtmdW5jdGlvbiBCaygkKXt2YXIgUT10aGlzLl9fZGF0YV9fLEo9cTEoUSwkKTtpZihKPDApcmV0dXJuITE7dmFyIFk9US5sZW5ndGgtMTtpZihKPT1ZKVEucG9wKCk7ZWxzZSBWay5jYWxsKFEsSiwxKTtyZXR1cm4tLXRoaXMuc2l6ZSwhMH12YXIgak49Qms7ZnVuY3Rpb24gemsoJCl7dmFyIFE9dGhpcy5fX2RhdGFfXyxKPXExKFEsJCk7cmV0dXJuIEo8MD92b2lkIDA6UVtKXVsxXX12YXIgQU49ems7ZnVuY3Rpb24gTmsoJCl7cmV0dXJuIHExKHRoaXMuX19kYXRhX18sJCk+LTF9dmFyIElOPU5rO2Z1bmN0aW9uIHdrKCQsUSl7dmFyIEo9dGhpcy5fX2RhdGFfXyxZPXExKEosJCk7aWYoWTwwKSsrdGhpcy5zaXplLEoucHVzaChbJCxRXSk7ZWxzZSBKW1ldWzFdPVE7cmV0dXJuIHRoaXN9dmFyIFJOPXdrO2Z1bmN0aW9uIFg4KCQpe3ZhciBRPS0xLEo9JD09bnVsbD8wOiQubGVuZ3RoO3RoaXMuY2xlYXIoKTt3aGlsZSgrK1E8Sil7dmFyIFk9JFtRXTt0aGlzLnNldChZWzBdLFlbMV0pfX1YOC5wcm90b3R5cGUuY2xlYXI9TE47WDgucHJvdG90eXBlLmRlbGV0ZT1qTjtYOC5wcm90b3R5cGUuZ2V0PUFOO1g4LnByb3RvdHlwZS5oYXM9SU47WDgucHJvdG90eXBlLnNldD1STjt2YXIgVjE9WDg7dmFyIE9rPVE4KGw2LFwiTWFwXCIpLERYPU9rO2Z1bmN0aW9uIERrKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgRUcsbWFwOm5ldyhEWHx8VjEpLHN0cmluZzpuZXcgRUd9fXZhciBQTj1EaztmdW5jdGlvbiBGaygkKXt2YXIgUT10eXBlb2YgJDtyZXR1cm4gUT09XCJzdHJpbmdcInx8UT09XCJudW1iZXJcInx8UT09XCJzeW1ib2xcInx8UT09XCJib29sZWFuXCI/JCE9PVwiX19wcm90b19fXCI6JD09PW51bGx9dmFyIEVOPUZrO2Z1bmN0aW9uIFprKCQsUSl7dmFyIEo9JC5fX2RhdGFfXztyZXR1cm4gRU4oUSk/Slt0eXBlb2YgUT09XCJzdHJpbmdcIj9cInN0cmluZ1wiOlwiaGFzaFwiXTpKLm1hcH12YXIgQjE9Wms7ZnVuY3Rpb24gTWsoJCl7dmFyIFE9QjEodGhpcywkKS5kZWxldGUoJCk7cmV0dXJuIHRoaXMuc2l6ZS09UT8xOjAsUX12YXIgYk49TWs7ZnVuY3Rpb24gTGsoJCl7cmV0dXJuIEIxKHRoaXMsJCkuZ2V0KCQpfXZhciBfTj1MaztmdW5jdGlvbiBqaygkKXtyZXR1cm4gQjEodGhpcywkKS5oYXMoJCl9dmFyIFNOPWprO2Z1bmN0aW9uIEFrKCQsUSl7dmFyIEo9QjEodGhpcywkKSxZPUouc2l6ZTtyZXR1cm4gSi5zZXQoJCxRKSx0aGlzLnNpemUrPUouc2l6ZT09WT8wOjEsdGhpc312YXIga049QWs7ZnVuY3Rpb24gWTgoJCl7dmFyIFE9LTEsSj0kPT1udWxsPzA6JC5sZW5ndGg7dGhpcy5jbGVhcigpO3doaWxlKCsrUTxKKXt2YXIgWT0kW1FdO3RoaXMuc2V0KFlbMF0sWVsxXSl9fVk4LnByb3RvdHlwZS5jbGVhcj1QTjtZOC5wcm90b3R5cGUuZGVsZXRlPWJOO1k4LnByb3RvdHlwZS5nZXQ9X047WTgucHJvdG90eXBlLmhhcz1TTjtZOC5wcm90b3R5cGUuc2V0PWtOO3ZhciBoOT1ZODt2YXIgSWs9XCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCI7ZnVuY3Rpb24gYkcoJCxRKXtpZih0eXBlb2YgJCE9XCJmdW5jdGlvblwifHxRIT1udWxsJiZ0eXBlb2YgUSE9XCJmdW5jdGlvblwiKXRocm93IFR5cGVFcnJvcihJayk7dmFyIEo9ZnVuY3Rpb24oKXt2YXIgWT1hcmd1bWVudHMsWD1RP1EuYXBwbHkodGhpcyxZKTpZWzBdLFc9Si5jYWNoZTtpZihXLmhhcyhYKSlyZXR1cm4gVy5nZXQoWCk7dmFyIEc9JC5hcHBseSh0aGlzLFkpO3JldHVybiBKLmNhY2hlPVcuc2V0KFgsRyl8fFcsR307cmV0dXJuIEouY2FjaGU9bmV3KGJHLkNhY2hlfHxoOSksSn1iRy5DYWNoZT1oOTt2YXIgdiQ9Ykc7aW1wb3J0e2hvbWVkaXIgYXMgUmt9ZnJvbVwib3NcIjtpbXBvcnR7am9pbiBhcyBQa31mcm9tXCJwYXRoXCI7dmFyIHA2PXYkKCgpPT57cmV0dXJuKHByb2Nlc3MuZW52LkNMQVVERV9DT05GSUdfRElSPz9QayhSaygpLFwiLmNsYXVkZVwiKSkubm9ybWFsaXplKFwiTkZDXCIpfSwoKT0+cHJvY2Vzcy5lbnYuQ0xBVURFX0NPTkZJR19ESVIpO3ZhciBPMCQ9diQoKCk9PlIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1NVUEVSVklTRUQpKTtmdW5jdGlvbiBmKCQsUSxKLFksWCl7aWYoWT09PVwibVwiKXRocm93IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihZPT09XCJhXCImJiFYKXRocm93IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtpZih0eXBlb2YgUT09PVwiZnVuY3Rpb25cIj8kIT09UXx8IVg6IVEuaGFzKCQpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVybiBZPT09XCJhXCI/WC5jYWxsKCQsSik6WD9YLnZhbHVlPUo6US5zZXQoJCxKKSxKfWZ1bmN0aW9uIFooJCxRLEosWSl7aWYoSj09PVwiYVwiJiYhWSl0aHJvdyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7aWYodHlwZW9mIFE9PT1cImZ1bmN0aW9uXCI/JCE9PVF8fCFZOiFRLmhhcygkKSl0aHJvdyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuIEo9PT1cIm1cIj9ZOko9PT1cImFcIj9ZLmNhbGwoJCk6WT9ZLnZhbHVlOlEuZ2V0KCQpfXZhciBfRz1mdW5jdGlvbigpe2xldHtjcnlwdG86JH09Z2xvYmFsVGhpcztpZigkPy5yYW5kb21VVUlEKXJldHVybiBfRz0kLnJhbmRvbVVVSUQuYmluZCgkKSwkLnJhbmRvbVVVSUQoKTtsZXQgUT1uZXcgVWludDhBcnJheSgxKSxKPSQ/KCk9PiQuZ2V0UmFuZG9tVmFsdWVzKFEpWzBdOigpPT5NYXRoLnJhbmRvbSgpKjI1NSYyNTU7cmV0dXJuXCIxMDAwMDAwMC0xMDAwLTQwMDAtODAwMC0xMDAwMDAwMDAwMDBcIi5yZXBsYWNlKC9bMDE4XS9nLChZKT0+KCtZXkooKSYxNT4+K1kvNCkudG9TdHJpbmcoMTYpKX07ZnVuY3Rpb24gZjQoJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJigoXCJuYW1lXCJpbiAkKSYmJC5uYW1lPT09XCJBYm9ydEVycm9yXCJ8fChcIm1lc3NhZ2VcImluICQpJiZTdHJpbmcoJC5tZXNzYWdlKS5pbmNsdWRlcyhcIkZldGNoUmVxdWVzdENhbmNlbGVkRXhjZXB0aW9uXCIpKX12YXIgdTk9KCQpPT57aWYoJCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiAkO2lmKHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwpe3RyeXtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoJCk9PT1cIltvYmplY3QgRXJyb3JdXCIpe2xldCBRPUVycm9yKCQubWVzc2FnZSwkLmNhdXNlP3tjYXVzZTokLmNhdXNlfTp7fSk7aWYoJC5zdGFjaylRLnN0YWNrPSQuc3RhY2s7aWYoJC5jYXVzZSYmIVEuY2F1c2UpUS5jYXVzZT0kLmNhdXNlO2lmKCQubmFtZSlRLm5hbWU9JC5uYW1lO3JldHVybiBRfX1jYXRjaHt9dHJ5e3JldHVybiBFcnJvcihKU09OLnN0cmluZ2lmeSgkKSl9Y2F0Y2h7fX1yZXR1cm4gRXJyb3IoJCl9O2NsYXNzIGcgZXh0ZW5kcyBFcnJvcnt9Y2xhc3MgbiQgZXh0ZW5kcyBne2NvbnN0cnVjdG9yKCQsUSxKLFksWCl7c3VwZXIoYCR7biQubWFrZU1lc3NhZ2UoJCxRLEopfWApO3RoaXMuc3RhdHVzPSQsdGhpcy5oZWFkZXJzPVksdGhpcy5yZXF1ZXN0SUQ9WT8uZ2V0KFwicmVxdWVzdC1pZFwiKSx0aGlzLmVycm9yPVEsdGhpcy50eXBlPVg/P251bGx9c3RhdGljIG1ha2VNZXNzYWdlKCQsUSxKKXtsZXQgWT1RPy5tZXNzYWdlP3R5cGVvZiBRLm1lc3NhZ2U9PT1cInN0cmluZ1wiP1EubWVzc2FnZTpKU09OLnN0cmluZ2lmeShRLm1lc3NhZ2UpOlE/SlNPTi5zdHJpbmdpZnkoUSk6SjtpZigkJiZZKXJldHVybmAkeyR9ICR7WX1gO2lmKCQpcmV0dXJuYCR7JH0gc3RhdHVzIGNvZGUgKG5vIGJvZHkpYDtpZihZKXJldHVybiBZO3JldHVyblwiKG5vIHN0YXR1cyBjb2RlIG9yIGJvZHkpXCJ9c3RhdGljIGdlbmVyYXRlKCQsUSxKLFkpe2lmKCEkfHwhWSlyZXR1cm4gbmV3ICQwKHttZXNzYWdlOkosY2F1c2U6dTkoUSl9KTtsZXQgWD1RLFc9WD8uZXJyb3I/LnR5cGU7aWYoJD09PTQwMClyZXR1cm4gbmV3IGw5KCQsWCxKLFksVyk7aWYoJD09PTQwMSlyZXR1cm4gbmV3IGM5KCQsWCxKLFksVyk7aWYoJD09PTQwMylyZXR1cm4gbmV3IHA5KCQsWCxKLFksVyk7aWYoJD09PTQwNClyZXR1cm4gbmV3IGQ5KCQsWCxKLFksVyk7aWYoJD09PTQwOSlyZXR1cm4gbmV3IGk5KCQsWCxKLFksVyk7aWYoJD09PTQyMilyZXR1cm4gbmV3IG45KCQsWCxKLFksVyk7aWYoJD09PTQyOSlyZXR1cm4gbmV3IHI5KCQsWCxKLFksVyk7aWYoJD49NTAwKXJldHVybiBuZXcgbzkoJCxYLEosWSxXKTtyZXR1cm4gbmV3IG4kKCQsWCxKLFksVyl9fWNsYXNzIFE2IGV4dGVuZHMgbiR7Y29uc3RydWN0b3Ioe21lc3NhZ2U6JH09e30pe3N1cGVyKHZvaWQgMCx2b2lkIDAsJHx8XCJSZXF1ZXN0IHdhcyBhYm9ydGVkLlwiLHZvaWQgMCl9fWNsYXNzICQwIGV4dGVuZHMgbiR7Y29uc3RydWN0b3Ioe21lc3NhZ2U6JCxjYXVzZTpRfSl7c3VwZXIodm9pZCAwLHZvaWQgMCwkfHxcIkNvbm5lY3Rpb24gZXJyb3IuXCIsdm9pZCAwKTtpZihRKXRoaXMuY2F1c2U9UX19Y2xhc3MgbTkgZXh0ZW5kcyAkMHtjb25zdHJ1Y3Rvcih7bWVzc2FnZTokfT17fSl7c3VwZXIoe21lc3NhZ2U6JD8/XCJSZXF1ZXN0IHRpbWVkIG91dC5cIn0pfX1jbGFzcyBsOSBleHRlbmRzIG4ke31jbGFzcyBjOSBleHRlbmRzIG4ke31jbGFzcyBwOSBleHRlbmRzIG4ke31jbGFzcyBkOSBleHRlbmRzIG4ke31jbGFzcyBpOSBleHRlbmRzIG4ke31jbGFzcyBuOSBleHRlbmRzIG4ke31jbGFzcyByOSBleHRlbmRzIG4ke31jbGFzcyBvOSBleHRlbmRzIG4ke312YXIgYms9L15bYS16XVthLXowLTkrLi1dKjovaSx2Tj0oJCk9PntyZXR1cm4gYmsudGVzdCgkKX0sU0c9KCQpPT4oU0c9QXJyYXkuaXNBcnJheSxTRygkKSksa0c9U0c7ZnVuY3Rpb24gRlgoJCl7aWYodHlwZW9mICQhPT1cIm9iamVjdFwiKXJldHVybnt9O3JldHVybiAkPz97fX1mdW5jdGlvbiB2RygkKXtpZighJClyZXR1cm4hMDtmb3IobGV0IFEgaW4gJClyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBDTigkLFEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJCxRKX12YXIgVE49KCQsUSk9PntpZih0eXBlb2YgUSE9PVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKFEpKXRocm93IG5ldyBnKGAkeyR9IG11c3QgYmUgYW4gaW50ZWdlcmApO2lmKFE8MCl0aHJvdyBuZXcgZyhgJHskfSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcmApO3JldHVybiBRfTt2YXIgWlg9KCQpPT57dHJ5e3JldHVybiBKU09OLnBhcnNlKCQpfWNhdGNoKFEpe3JldHVybn19O3ZhciB4Tj0oJCk9Pm5ldyBQcm9taXNlKChRKT0+c2V0VGltZW91dChRLCQpKTt2YXIgZDY9XCIwLjk0LjBcIjt2YXIgaE49KCk9PntyZXR1cm4gdHlwZW9mIHdpbmRvdzxcInVcIiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudDxcInVcIiYmdHlwZW9mIG5hdmlnYXRvcjxcInVcIn07ZnVuY3Rpb24gX2soKXtpZih0eXBlb2YgRGVubzxcInVcIiYmRGVuby5idWlsZCE9bnVsbClyZXR1cm5cImRlbm9cIjtpZih0eXBlb2YgRWRnZVJ1bnRpbWU8XCJ1XCIpcmV0dXJuXCJlZGdlXCI7aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3M8XCJ1XCI/Z2xvYmFsVGhpcy5wcm9jZXNzOjApPT09XCJbb2JqZWN0IHByb2Nlc3NdXCIpcmV0dXJuXCJub2RlXCI7cmV0dXJuXCJ1bmtub3duXCJ9dmFyIFNrPSgpPT57bGV0ICQ9X2soKTtpZigkPT09XCJkZW5vXCIpcmV0dXJue1wiWC1TdGFpbmxlc3MtTGFuZ1wiOlwianNcIixcIlgtU3RhaW5sZXNzLVBhY2thZ2UtVmVyc2lvblwiOmQ2LFwiWC1TdGFpbmxlc3MtT1NcIjp5TihEZW5vLmJ1aWxkLm9zKSxcIlgtU3RhaW5sZXNzLUFyY2hcIjpmTihEZW5vLmJ1aWxkLmFyY2gpLFwiWC1TdGFpbmxlc3MtUnVudGltZVwiOlwiZGVub1wiLFwiWC1TdGFpbmxlc3MtUnVudGltZS1WZXJzaW9uXCI6dHlwZW9mIERlbm8udmVyc2lvbj09PVwic3RyaW5nXCI/RGVuby52ZXJzaW9uOkRlbm8udmVyc2lvbj8uZGVubz8/XCJ1bmtub3duXCJ9O2lmKHR5cGVvZiBFZGdlUnVudGltZTxcInVcIilyZXR1cm57XCJYLVN0YWlubGVzcy1MYW5nXCI6XCJqc1wiLFwiWC1TdGFpbmxlc3MtUGFja2FnZS1WZXJzaW9uXCI6ZDYsXCJYLVN0YWlubGVzcy1PU1wiOlwiVW5rbm93blwiLFwiWC1TdGFpbmxlc3MtQXJjaFwiOmBvdGhlcjoke0VkZ2VSdW50aW1lfWAsXCJYLVN0YWlubGVzcy1SdW50aW1lXCI6XCJlZGdlXCIsXCJYLVN0YWlubGVzcy1SdW50aW1lLVZlcnNpb25cIjpnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbn07aWYoJD09PVwibm9kZVwiKXJldHVybntcIlgtU3RhaW5sZXNzLUxhbmdcIjpcImpzXCIsXCJYLVN0YWlubGVzcy1QYWNrYWdlLVZlcnNpb25cIjpkNixcIlgtU3RhaW5sZXNzLU9TXCI6eU4oZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtPz9cInVua25vd25cIiksXCJYLVN0YWlubGVzcy1BcmNoXCI6Zk4oZ2xvYmFsVGhpcy5wcm9jZXNzLmFyY2g/P1widW5rbm93blwiKSxcIlgtU3RhaW5sZXNzLVJ1bnRpbWVcIjpcIm5vZGVcIixcIlgtU3RhaW5sZXNzLVJ1bnRpbWUtVmVyc2lvblwiOmdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9uPz9cInVua25vd25cIn07bGV0IFE9a2soKTtpZihRKXJldHVybntcIlgtU3RhaW5sZXNzLUxhbmdcIjpcImpzXCIsXCJYLVN0YWlubGVzcy1QYWNrYWdlLVZlcnNpb25cIjpkNixcIlgtU3RhaW5sZXNzLU9TXCI6XCJVbmtub3duXCIsXCJYLVN0YWlubGVzcy1BcmNoXCI6XCJ1bmtub3duXCIsXCJYLVN0YWlubGVzcy1SdW50aW1lXCI6YGJyb3dzZXI6JHtRLmJyb3dzZXJ9YCxcIlgtU3RhaW5sZXNzLVJ1bnRpbWUtVmVyc2lvblwiOlEudmVyc2lvbn07cmV0dXJue1wiWC1TdGFpbmxlc3MtTGFuZ1wiOlwianNcIixcIlgtU3RhaW5sZXNzLVBhY2thZ2UtVmVyc2lvblwiOmQ2LFwiWC1TdGFpbmxlc3MtT1NcIjpcIlVua25vd25cIixcIlgtU3RhaW5sZXNzLUFyY2hcIjpcInVua25vd25cIixcIlgtU3RhaW5sZXNzLVJ1bnRpbWVcIjpcInVua25vd25cIixcIlgtU3RhaW5sZXNzLVJ1bnRpbWUtVmVyc2lvblwiOlwidW5rbm93blwifX07ZnVuY3Rpb24ga2soKXtpZih0eXBlb2YgbmF2aWdhdG9yPlwidVwifHwhbmF2aWdhdG9yKXJldHVybiBudWxsO2xldCAkPVt7a2V5OlwiZWRnZVwiLHBhdHRlcm46L0VkZ2UoPzpcXFcrKFxcZCspXFwuKFxcZCspKD86XFwuKFxcZCspKT8pPy99LHtrZXk6XCJpZVwiLHBhdHRlcm46L01TSUUoPzpcXFcrKFxcZCspXFwuKFxcZCspKD86XFwuKFxcZCspKT8pPy99LHtrZXk6XCJpZVwiLHBhdHRlcm46L1RyaWRlbnQoPzouKnJ2XFw6KFxcZCspXFwuKFxcZCspKD86XFwuKFxcZCspKT8pPy99LHtrZXk6XCJjaHJvbWVcIixwYXR0ZXJuOi9DaHJvbWUoPzpcXFcrKFxcZCspXFwuKFxcZCspKD86XFwuKFxcZCspKT8pPy99LHtrZXk6XCJmaXJlZm94XCIscGF0dGVybjovRmlyZWZveCg/OlxcVysoXFxkKylcXC4oXFxkKykoPzpcXC4oXFxkKykpPyk/L30se2tleTpcInNhZmFyaVwiLHBhdHRlcm46Lyg/OlZlcnNpb25cXFcrKFxcZCspXFwuKFxcZCspKD86XFwuKFxcZCspKT8pPyg/OlxcVytNb2JpbGVcXFMqKT9cXFcrU2FmYXJpL31dO2ZvcihsZXR7a2V5OlEscGF0dGVybjpKfW9mICQpe2xldCBZPUouZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTtpZihZKXtsZXQgWD1ZWzFdfHwwLFc9WVsyXXx8MCxHPVlbM118fDA7cmV0dXJue2Jyb3dzZXI6USx2ZXJzaW9uOmAke1h9LiR7V30uJHtHfWB9fX1yZXR1cm4gbnVsbH12YXIgZk49KCQpPT57aWYoJD09PVwieDMyXCIpcmV0dXJuXCJ4MzJcIjtpZigkPT09XCJ4ODZfNjRcInx8JD09PVwieDY0XCIpcmV0dXJuXCJ4NjRcIjtpZigkPT09XCJhcm1cIilyZXR1cm5cImFybVwiO2lmKCQ9PT1cImFhcmNoNjRcInx8JD09PVwiYXJtNjRcIilyZXR1cm5cImFybTY0XCI7aWYoJClyZXR1cm5gb3RoZXI6JHskfWA7cmV0dXJuXCJ1bmtub3duXCJ9LHlOPSgkKT0+e2lmKCQ9JC50b0xvd2VyQ2FzZSgpLCQuaW5jbHVkZXMoXCJpb3NcIikpcmV0dXJuXCJpT1NcIjtpZigkPT09XCJhbmRyb2lkXCIpcmV0dXJuXCJBbmRyb2lkXCI7aWYoJD09PVwiZGFyd2luXCIpcmV0dXJuXCJNYWNPU1wiO2lmKCQ9PT1cIndpbjMyXCIpcmV0dXJuXCJXaW5kb3dzXCI7aWYoJD09PVwiZnJlZWJzZFwiKXJldHVyblwiRnJlZUJTRFwiO2lmKCQ9PT1cIm9wZW5ic2RcIilyZXR1cm5cIk9wZW5CU0RcIjtpZigkPT09XCJsaW51eFwiKXJldHVyblwiTGludXhcIjtpZigkKXJldHVybmBPdGhlcjokeyR9YDtyZXR1cm5cIlVua25vd25cIn0sZ04sdDk9KCk9PntyZXR1cm4gZ04/PyhnTj1TaygpKX07ZnVuY3Rpb24gdU4oKXtpZih0eXBlb2YgZmV0Y2g8XCJ1XCIpcmV0dXJuIGZldGNoO3Rocm93IEVycm9yKFwiYGZldGNoYCBpcyBub3QgZGVmaW5lZCBhcyBhIGdsb2JhbDsgRWl0aGVyIHBhc3MgYGZldGNoYCB0byB0aGUgY2xpZW50LCBgbmV3IEFudGhyb3BpYyh7IGZldGNoIH0pYCBvciBwb2x5ZmlsbCB0aGUgZ2xvYmFsLCBgZ2xvYmFsVGhpcy5mZXRjaCA9IGZldGNoYFwiKX1mdW5jdGlvbiBDRyguLi4kKXtsZXQgUT1nbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtO2lmKHR5cGVvZiBRPlwidVwiKXRocm93IEVycm9yKFwiYFJlYWRhYmxlU3RyZWFtYCBpcyBub3QgZGVmaW5lZCBhcyBhIGdsb2JhbDsgWW91IHdpbGwgbmVlZCB0byBwb2x5ZmlsbCBpdCwgYGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVhbWBcIik7cmV0dXJuIG5ldyBRKC4uLiQpfWZ1bmN0aW9uIE1YKCQpe2xldCBRPVN5bWJvbC5hc3luY0l0ZXJhdG9yIGluICQ/JFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTokW1N5bWJvbC5pdGVyYXRvcl0oKTtyZXR1cm4gQ0coe3N0YXJ0KCl7fSxhc3luYyBwdWxsKEope2xldHtkb25lOlksdmFsdWU6WH09YXdhaXQgUS5uZXh0KCk7aWYoWSlKLmNsb3NlKCk7ZWxzZSBKLmVucXVldWUoWCl9LGFzeW5jIGNhbmNlbCgpe2F3YWl0IFEucmV0dXJuPy4oKX19KX1mdW5jdGlvbiBhOSgkKXtpZigkW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSlyZXR1cm4gJDtsZXQgUT0kLmdldFJlYWRlcigpO3JldHVybnthc3luYyBuZXh0KCl7dHJ5e2xldCBKPWF3YWl0IFEucmVhZCgpO2lmKEo/LmRvbmUpUS5yZWxlYXNlTG9jaygpO3JldHVybiBKfWNhdGNoKEope3Rocm93IFEucmVsZWFzZUxvY2soKSxKfX0sYXN5bmMgcmV0dXJuKCl7bGV0IEo9US5jYW5jZWwoKTtyZXR1cm4gUS5yZWxlYXNlTG9jaygpLGF3YWl0IEose2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0sW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3JldHVybiB0aGlzfX19YXN5bmMgZnVuY3Rpb24gbU4oJCl7aWYoJD09PW51bGx8fHR5cGVvZiAkIT09XCJvYmplY3RcIilyZXR1cm47aWYoJFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pe2F3YWl0ICRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkucmV0dXJuPy4oKTtyZXR1cm59bGV0IFE9JC5nZXRSZWFkZXIoKSxKPVEuY2FuY2VsKCk7US5yZWxlYXNlTG9jaygpLGF3YWl0IEp9dmFyIGxOPSh7aGVhZGVyczokLGJvZHk6UX0pPT57cmV0dXJue2JvZHlIZWFkZXJzOntcImNvbnRlbnQtdHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifSxib2R5OkpTT04uc3RyaW5naWZ5KFEpfX07ZnVuY3Rpb24gY04oJCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKCQpLmZpbHRlcigoW1EsSl0pPT50eXBlb2YgSjxcInVcIikubWFwKChbUSxKXSk9PntpZih0eXBlb2YgSj09PVwic3RyaW5nXCJ8fHR5cGVvZiBKPT09XCJudW1iZXJcInx8dHlwZW9mIEo9PT1cImJvb2xlYW5cIilyZXR1cm5gJHtlbmNvZGVVUklDb21wb25lbnQoUSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KEopfWA7aWYoSj09PW51bGwpcmV0dXJuYCR7ZW5jb2RlVVJJQ29tcG9uZW50KFEpfT1gO3Rocm93IG5ldyBnKGBDYW5ub3Qgc3RyaW5naWZ5IHR5cGUgJHt0eXBlb2YgSn07IEV4cGVjdGVkIHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBvciBudWxsLiBJZiB5b3UgbmVlZCB0byBwYXNzIG5lc3RlZCBxdWVyeSBwYXJhbWV0ZXJzLCB5b3UgY2FuIG1hbnVhbGx5IGVuY29kZSB0aGVtLCBlLmcuIHsgcXVlcnk6IHsgJ2Zvb1trZXkxXSc6IHZhbHVlMSwgJ2Zvb1trZXkyXSc6IHZhbHVlMiB9IH0sIGFuZCBwbGVhc2Ugb3BlbiBhIEdpdEh1YiBpc3N1ZSByZXF1ZXN0aW5nIGJldHRlciBzdXBwb3J0IGZvciB5b3VyIHVzZSBjYXNlLmApfSkuam9pbihcIiZcIil9dmFyIGROPVwidXJuOmlldGY6cGFyYW1zOm9hdXRoOmdyYW50LXR5cGU6and0LWJlYXJlclwiLGlOPVwicmVmcmVzaF90b2tlblwiLExYPVwiL3YxL29hdXRoL3Rva2VuXCIsUTA9XCJvYXV0aC0yMDI1LTA0LTIwXCIsbk49XCJvaWRjLWZlZGVyYXRpb24tMjAyNi0wNC0wMVwiLHJOPTEyMCxXOD0zMCxvTj01LHBOPTEwNDg1NzY7ZnVuY3Rpb24galgoJCl7aWYoISQpcmV0dXJuO2xldCBRO3RyeXtRPW5ldyBVUkwoJCl9Y2F0Y2goWSl7dGhyb3cgbmV3IE8kKGBJbnZhbGlkIHRva2VuIGVuZHBvaW50IGJhc2UgVVJMIFwiJHskfVwiOiAke1l9YCl9aWYoUS5wcm90b2NvbD09PVwiaHR0cHM6XCIpcmV0dXJuO2xldCBKPVEuaG9zdG5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eXFxbfFxcXSQvZyxcIlwiKTtpZihRLnByb3RvY29sPT09XCJodHRwOlwiJiYoSj09PVwibG9jYWxob3N0XCJ8fEo9PT1cIjEyNy4wLjAuMVwifHxKPT09XCI6OjFcIikpcmV0dXJuO3Rocm93IG5ldyBPJChgUmVmdXNpbmcgdG8gc2VuZCBjcmVkZW50aWFsIG92ZXIgbm9uLWh0dHBzIHRva2VuIGVuZHBvaW50IFwiJHskfVwiYCl9YXN5bmMgZnVuY3Rpb24gQVgoJCxRKXtsZXQgSj1hd2FpdCB4aygkKSxZO3RyeXtZPUpTT04ucGFyc2UoSil9Y2F0Y2h7dGhyb3cgbmV3IE8kKGBUb2tlbiBlbmRwb2ludCByZXR1cm5lZCBub24tSlNPTiByZXNwb25zZSAoc3RhdHVzICR7JC5zdGF0dXN9KWAsJC5zdGF0dXMsRDYoSiksUSl9aWYoIVkuYWNjZXNzX3Rva2VuKXRocm93IG5ldyBPJChgVG9rZW4gZW5kcG9pbnQgcmVzcG9uc2UgbWlzc2luZyBhY2Nlc3NfdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkoRDYoWSkpfWAsJC5zdGF0dXMsRDYoWSksUSk7aWYoWS50b2tlbl90eXBlJiZZLnRva2VuX3R5cGUudG9Mb3dlckNhc2UoKSE9PVwiYmVhcmVyXCIpdGhyb3cgbmV3IE8kKGBUb2tlbiBlbmRwb2ludCByZXNwb25zZTogdW5zdXBwb3J0ZWQgdG9rZW5fdHlwZSBcIiR7WS50b2tlbl90eXBlfVwiICh3YW50IEJlYXJlcilgLCQuc3RhdHVzLEQ2KFkpLFEpO3JldHVybiBZfXZhciBURz0yMDAwLFRrPW5ldyBTZXQoW1wiZXJyb3JcIixcImVycm9yX2Rlc2NyaXB0aW9uXCIsXCJlcnJvcl91cmlcIl0pO2Z1bmN0aW9uIEQ2KCQpe2lmKCQ9PW51bGwpcmV0dXJuICQ7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKXtsZXQgUTt0cnl7UT1KU09OLnBhcnNlKCQpfWNhdGNoe2lmKCQubGVuZ3RoPD1URylyZXR1cm4gJDtyZXR1cm4gJC5zbGljZSgwLFRHKStgLi4uIDwkeyQubGVuZ3RoLVRHfSBtb3JlIGNoYXJzPmB9cmV0dXJuIEpTT04uc3RyaW5naWZ5KEQ2KFEpKX1pZih0eXBlb2YgJD09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KCQpKXtsZXQgUT17fTtmb3IobGV0W0osWV1vZiBPYmplY3QuZW50cmllcygkKSlpZihUay5oYXMoSikpUVtKXT1ZO3JldHVybiBRfXJldHVybiBudWxsfWFzeW5jIGZ1bmN0aW9uIElYKCQsUT0oSik9PmNvbnNvbGUud2FybihgYW50aHJvcGljLXNkazogJHtKfWApKXtpZih0eXBlb2YgcHJvY2Vzcz5cInVcInx8cHJvY2Vzcy5wbGF0Zm9ybT09PVwid2luMzJcIilyZXR1cm47bGV0IEo9YXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKSxZPSQsWDt0cnl7WT1hd2FpdCBKLnByb21pc2VzLnJlYWxwYXRoKCQpLFg9YXdhaXQgSi5wcm9taXNlcy5zdGF0KFkpfWNhdGNoe3JldHVybn1sZXQgVz1YLm1vZGUmNTExO2lmKFcmMTgpdGhyb3cgbmV3IE8kKGBDcmVkZW50aWFscyBmaWxlIGF0ICR7WX0gaXMgZ3JvdXAvd29ybGQtd3JpdGFibGUgKG1vZGUgMG8ke1cudG9TdHJpbmcoOCl9KTsgdGhpcyBhbGxvd3Mgb3RoZXIgbG9jYWwgdXNlcnMgdG8gcGxhbnQgdG9rZW5zLiBSdW4gXFxgY2htb2QgNjAwICR7WX1cXGAuYCk7aWYoVyYzNil0aHJvdyBuZXcgTyQoYENyZWRlbnRpYWxzIGZpbGUgYXQgJHtZfSBpcyBncm91cC93b3JsZC1yZWFkYWJsZSAobW9kZSAwbyR7Vy50b1N0cmluZyg4KX0pOyBydW4gXFxgY2htb2QgNjAwICR7WX1cXGAgYmVmb3JlIHJldHJ5aW5nLmApO2lmKHR5cGVvZiBwcm9jZXNzLmdldHVpZD09PVwiZnVuY3Rpb25cIiYmWC51aWQhPT1wcm9jZXNzLmdldHVpZCgpKVEoYGNyZWRlbnRpYWxzIGZpbGUgYXQgJHtZfSBpcyBvd25lZCBieSB1aWQgJHtYLnVpZH0gKGN1cnJlbnQgcHJvY2VzcyB1aWQgJHtwcm9jZXNzLmdldHVpZCgpfSk7IHZlcmlmeSB0aGlzIGlzIGludGVudGlvbmFsLmApfWFzeW5jIGZ1bmN0aW9uIFJYKCQsUSl7bGV0IEo9YXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKSxYPShhd2FpdCBpbXBvcnQoXCJub2RlOnBhdGhcIikpLmRpcm5hbWUoJCk7YXdhaXQgSi5wcm9taXNlcy5ta2RpcihYLHtyZWN1cnNpdmU6ITAsbW9kZTo0NDh9KTtsZXQgVz1gJHskfS4ke3Byb2Nlc3MucGlkfS4ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfS50bXBgO3RyeXtsZXQgRz1hd2FpdCBKLnByb21pc2VzLm9wZW4oVyxcIndcIiwzODQpO3RyeXthd2FpdCBHLndyaXRlRmlsZShKU09OLnN0cmluZ2lmeShRLG51bGwsMikpLGF3YWl0IEcuc3luYygpfWZpbmFsbHl7YXdhaXQgRy5jbG9zZSgpfWF3YWl0IEoucHJvbWlzZXMucmVuYW1lKFcsJCl9Y2F0Y2goRyl7dGhyb3cgYXdhaXQgSi5wcm9taXNlcy51bmxpbmsoVykuY2F0Y2goKCk9Pnt9KSxHfXRyeXtsZXQgRz1hd2FpdCBKLnByb21pc2VzLm9wZW4oWCxcInJcIik7dHJ5e2F3YWl0IEcuc3luYygpfWZpbmFsbHl7YXdhaXQgRy5jbG9zZSgpfX1jYXRjaHt9fWFzeW5jIGZ1bmN0aW9uIHhrKCQpe2lmKCEkLmJvZHkpcmV0dXJuXCJcIjtsZXQgUT0kLmJvZHkuZ2V0UmVhZGVyKCksSj1bXSxZPTA7Zm9yKDs7KXtsZXR7ZG9uZTpXLHZhbHVlOkd9PWF3YWl0IFEucmVhZCgpO2lmKFcpYnJlYWs7aWYoWStHLmxlbmd0aD5wTil7bGV0IFU9cE4tWTtpZihVPjApSi5wdXNoKEcuc3ViYXJyYXkoMCxVKSk7YXdhaXQgUS5jYW5jZWwoKTticmVha31KLnB1c2goRyksWSs9Ry5sZW5ndGh9bGV0IFg7aWYoSi5sZW5ndGg9PT0xKVg9SlswXTtlbHNle1g9bmV3IFVpbnQ4QXJyYXkoSi5yZWR1Y2UoKEcsVSk9PkcrVS5sZW5ndGgsMCkpO2xldCBXPTA7Zm9yKGxldCBHIG9mIEopWC5zZXQoRyxXKSxXKz1HLmxlbmd0aH1yZXR1cm4gbmV3IFRleHREZWNvZGVyKFwidXRmLThcIikuZGVjb2RlKFgpfWNsYXNzIE8kIGV4dGVuZHMgZ3tjb25zdHJ1Y3RvcigkLFE9bnVsbCxKPW51bGwsWT1udWxsKXtzdXBlcigkKTt0aGlzLnN0YXR1c0NvZGU9USx0aGlzLmJvZHk9Six0aGlzLnJlcXVlc3RJZD1ZfX1mdW5jdGlvbiBXNCgpe3JldHVybiBNYXRoLmZsb29yKERhdGUubm93KCkvMTAwMCl9Y2xhc3MgeEd7Y29uc3RydWN0b3IoJCxRKXt0aGlzLmNhY2hlZD1udWxsLHRoaXMucGVuZGluZ1JlZnJlc2g9bnVsbCx0aGlzLm5leHRGb3JjZT0hMSx0aGlzLmxhc3RBZHZpc29yeUVycm9yPTAsdGhpcy5wcm92aWRlcj0kLHRoaXMub25BZHZpc29yeVJlZnJlc2hFcnJvcj1RfWFzeW5jIGdldFRva2VuKCl7bGV0ICQ9dGhpcy5uZXh0Rm9yY2U7dGhpcy5uZXh0Rm9yY2U9ITE7bGV0IFE9dGhpcy5jYWNoZWQ7aWYoJHx8UT09bnVsbClyZXR1cm4oYXdhaXQgdGhpcy5yZWZyZXNoKCQpKS50b2tlbjtpZihRLmV4cGlyZXNBdD09bnVsbClyZXR1cm4gUS50b2tlbjtsZXQgSj1RLmV4cGlyZXNBdC1XNCgpO2lmKEo+ck4pcmV0dXJuIFEudG9rZW47aWYoSj5XOClyZXR1cm4gdGhpcy5iYWNrZ3JvdW5kUmVmcmVzaCgpLFEudG9rZW47cmV0dXJuKGF3YWl0IHRoaXMucmVmcmVzaCgpKS50b2tlbn1pbnZhbGlkYXRlKCl7dGhpcy5jYWNoZWQ9bnVsbCx0aGlzLm5leHRGb3JjZT0hMH1yZWZyZXNoKCQ9ITEpe2lmKHRoaXMucGVuZGluZ1JlZnJlc2gmJiEkKXJldHVybiB0aGlzLnBlbmRpbmdSZWZyZXNoO3JldHVybiB0aGlzLmRvUmVmcmVzaCgkKX1iYWNrZ3JvdW5kUmVmcmVzaCgpe2lmKHRoaXMucGVuZGluZ1JlZnJlc2gpcmV0dXJuO2lmKFc0KCktdGhpcy5sYXN0QWR2aXNvcnlFcnJvcjxvTilyZXR1cm47dGhpcy5kb1JlZnJlc2goKS5jYXRjaCgoJCk9Pnt0aGlzLmxhc3RBZHZpc29yeUVycm9yPVc0KCksdGhpcy5vbkFkdmlzb3J5UmVmcmVzaEVycm9yPy4oJCl9KX1kb1JlZnJlc2goJD0hMSl7cmV0dXJuIHRoaXMucGVuZGluZ1JlZnJlc2g9dGhpcy5wcm92aWRlcigkP3tmb3JjZVJlZnJlc2g6ITB9OnZvaWQgMCkudGhlbigoUSk9PntyZXR1cm4gdGhpcy5jYWNoZWQ9USx0aGlzLnBlbmRpbmdSZWZyZXNoPW51bGwsUX0sKFEpPT57dGhyb3cgdGhpcy5wZW5kaW5nUmVmcmVzaD1udWxsLFF9KSx0aGlzLnBlbmRpbmdSZWZyZXNofX12YXIgdyQ9KCQpPT57aWYodHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzczxcInVcIilyZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmVudj8uWyRdPy50cmltKCl8fHZvaWQgMDtpZih0eXBlb2YgZ2xvYmFsVGhpcy5EZW5vPFwidVwiKXJldHVybiBnbG9iYWxUaGlzLkRlbm8uZW52Py5nZXQ/LigkKT8udHJpbSgpfHx2b2lkIDA7cmV0dXJufTtmdW5jdGlvbiBzTigkKXtsZXQgUT0wO2ZvcihsZXQgWCBvZiAkKVErPVgubGVuZ3RoO2xldCBKPW5ldyBVaW50OEFycmF5KFEpLFk9MDtmb3IobGV0IFggb2YgJClKLnNldChYLFkpLFkrPVgubGVuZ3RoO3JldHVybiBKfXZhciB0TjtmdW5jdGlvbiBHOCgkKXtsZXQgUTtyZXR1cm4odE4/PyhRPW5ldyBnbG9iYWxUaGlzLlRleHRFbmNvZGVyLHROPVEuZW5jb2RlLmJpbmQoUSkpKSgkKX12YXIgYU47ZnVuY3Rpb24gZkcoJCl7bGV0IFE7cmV0dXJuKGFOPz8oUT1uZXcgZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcixhTj1RLmRlY29kZS5iaW5kKFEpKSkoJCl9dmFyIEVYPXtvZmY6MCxlcnJvcjoyMDAsd2FybjozMDAsaW5mbzo0MDAsZGVidWc6NTAwfSx5Rz0oJCxRLEopPT57aWYoISQpcmV0dXJuO2lmKENOKEVYLCQpKXJldHVybiAkO3UkKEopLndhcm4oYCR7UX0gd2FzIHNldCB0byAke0pTT04uc3RyaW5naWZ5KCQpfSwgZXhwZWN0ZWQgb25lIG9mICR7SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoRVgpKX1gKTtyZXR1cm59O2Z1bmN0aW9uIHM5KCl7fWZ1bmN0aW9uIFBYKCQsUSxKKXtpZighUXx8RVhbJF0+RVhbSl0pcmV0dXJuIHM5O2Vsc2UgcmV0dXJuIFFbJF0uYmluZChRKX12YXIgZms9e2Vycm9yOnM5LHdhcm46czksaW5mbzpzOSxkZWJ1ZzpzOX0sZU49bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdSQoJCl7bGV0IFE9JC5sb2dnZXIsSj0kLmxvZ0xldmVsPz9cIm9mZlwiO2lmKCFRKXJldHVybiBmaztsZXQgWT1lTi5nZXQoUSk7aWYoWSYmWVswXT09PUopcmV0dXJuIFlbMV07bGV0IFg9e2Vycm9yOlBYKFwiZXJyb3JcIixRLEopLHdhcm46UFgoXCJ3YXJuXCIsUSxKKSxpbmZvOlBYKFwiaW5mb1wiLFEsSiksZGVidWc6UFgoXCJkZWJ1Z1wiLFEsSil9O3JldHVybiBlTi5zZXQoUSxbSixYXSksWH12YXIgeTQ9KCQpPT57aWYoJC5vcHRpb25zKSQub3B0aW9ucz17Li4uJC5vcHRpb25zfSxkZWxldGUgJC5vcHRpb25zLmhlYWRlcnM7aWYoJC5oZWFkZXJzKSQuaGVhZGVycz1PYmplY3QuZnJvbUVudHJpZXMoKCQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnM/Wy4uLiQuaGVhZGVyc106T2JqZWN0LmVudHJpZXMoJC5oZWFkZXJzKSkubWFwKChbUSxKXSk9PltRLFEudG9Mb3dlckNhc2UoKT09PVwieC1hcGkta2V5XCJ8fFEudG9Mb3dlckNhc2UoKT09PVwiYXV0aG9yaXphdGlvblwifHxRLnRvTG93ZXJDYXNlKCk9PT1cImNvb2tpZVwifHxRLnRvTG93ZXJDYXNlKCk9PT1cInNldC1jb29raWVcIj9cIioqKlwiOkpdKSk7aWYoXCJyZXRyeU9mUmVxdWVzdExvZ0lEXCJpbiAkKXtpZigkLnJldHJ5T2ZSZXF1ZXN0TG9nSUQpJC5yZXRyeU9mPSQucmV0cnlPZlJlcXVlc3RMb2dJRDtkZWxldGUgJC5yZXRyeU9mUmVxdWVzdExvZ0lEfXJldHVybiAkfTt2YXIgYlg9XCIxLjBcIix5az0vXltBLVphLXowLTlfLi1dKyQvO2Z1bmN0aW9uICR3KCQpe2lmKCEkKXRocm93IEVycm9yKFwicHJvZmlsZSBuYW1lIGlzIGVtcHR5XCIpO2lmKCQ9PT1cIi5cInx8JD09PVwiLi5cIil0aHJvdyBFcnJvcihgcHJvZmlsZSBuYW1lIFwiJHskfVwiIGlzIG5vdCBhbGxvd2VkYCk7aWYoJC5pbmNsdWRlcyhcIi9cIil8fCQuaW5jbHVkZXMoXCJcXFxcXCIpKXRocm93IEVycm9yKGBwcm9maWxlIG5hbWUgXCIkeyR9XCIgbXVzdCBub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnNgKTtpZigheWsudGVzdCgkKSl0aHJvdyBFcnJvcihgcHJvZmlsZSBuYW1lIFwiJHskfVwiIGNvbnRhaW5zIGRpc2FsbG93ZWQgY2hhcmFjdGVycyAoYWxsb3dlZDogbGV0dGVycywgZGlnaXRzLCAnXycsICcuJywgJy0nKWApfXZhciBRdz1hc3luYygkKT0+e3ZhciBRLEo7bGV0IFk9YXdhaXQgZ0coKTtpZihZPT09bnVsbClyZXR1cm4gbnVsbDtsZXQgWD0kPz9hd2FpdCBYdygpO2lmKFg9PT1udWxsKXJldHVybiBudWxsOyR3KFgpO2xldCBXPWF3YWl0IGltcG9ydChcIm5vZGU6ZnNcIiksVT0oYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpKS5qb2luKFksXCJjb25maWdzXCIsYCR7WH0uanNvbmApLEg7dHJ5e0g9YXdhaXQgVy5wcm9taXNlcy5yZWFkRmlsZShVLFwidXRmLThcIil9Y2F0Y2goQil7aWYoQj8uY29kZSE9PVwiRU5PRU5UXCIpdGhyb3cgRXJyb3IoYGZhaWxlZCB0byByZWFkIGNvbmZpZyBmaWxlICR7VX06ICR7Qn1gKTtIPW51bGx9aWYoSD09PW51bGwpe2xldCBCPXckKFwiQU5USFJPUElDX09SR0FOSVpBVElPTl9JRFwiKSx6PXckKFwiQU5USFJPUElDX0lERU5USVRZX1RPS0VOX0ZJTEVcIiksTj13JChcIkFOVEhST1BJQ19GRURFUkFUSU9OX1JVTEVfSURcIik7aWYoTiYmQilyZXR1cm57ZnJvbUZpbGU6ITEsY29uZmlnOntvcmdhbml6YXRpb25faWQ6Qix3b3Jrc3BhY2VfaWQ6dyQoXCJBTlRIUk9QSUNfV09SS1NQQUNFX0lEXCIpLGJhc2VfdXJsOnckKFwiQU5USFJPUElDX0JBU0VfVVJMXCIpLGF1dGhlbnRpY2F0aW9uOnt0eXBlOlwib2lkY19mZWRlcmF0aW9uXCIsZmVkZXJhdGlvbl9ydWxlX2lkOk4sc2VydmljZV9hY2NvdW50X2lkOnckKFwiQU5USFJPUElDX1NFUlZJQ0VfQUNDT1VOVF9JRFwiKSxpZGVudGl0eV90b2tlbjp6P3tzb3VyY2U6XCJmaWxlXCIscGF0aDp6fTp2b2lkIDAsc2NvcGU6dyQoXCJBTlRIUk9QSUNfU0NPUEVcIil9fX07cmV0dXJuIG51bGx9bGV0IHE7dHJ5e3E9SlNPTi5wYXJzZShIKX1jYXRjaChCKXt0aHJvdyBFcnJvcihgZmFpbGVkIHRvIHBhcnNlIGNvbmZpZyBmaWxlICR7VX06ICR7Qn1gKX1pZighcS5hdXRoZW50aWNhdGlvbil0aHJvdyBFcnJvcihgY29uZmlnIGZpbGUgJHtVfSBpcyBtaXNzaW5nIFwiYXV0aGVudGljYXRpb25cImApO2xldCBWPXEuYXV0aGVudGljYXRpb24udHlwZTtpZihWIT09XCJvaWRjX2ZlZGVyYXRpb25cIiYmViE9PVwidXNlcl9vYXV0aFwiKXRocm93IEVycm9yKGBhdXRoZW50aWNhdGlvbi50eXBlIFwiJHtWfVwiIGlzIG5vdCBhIGtub3duIGF1dGhlbnRpY2F0aW9uIHR5cGVgKTtpZihxLm9yZ2FuaXphdGlvbl9pZD8/KHEub3JnYW5pemF0aW9uX2lkPXckKFwiQU5USFJPUElDX09SR0FOSVpBVElPTl9JRFwiKSkscS53b3Jrc3BhY2VfaWQ/PyhxLndvcmtzcGFjZV9pZD13JChcIkFOVEhST1BJQ19XT1JLU1BBQ0VfSURcIikpLHEuYmFzZV91cmw/PyhxLmJhc2VfdXJsPXckKFwiQU5USFJPUElDX0JBU0VfVVJMXCIpKSwoUT1xLmF1dGhlbnRpY2F0aW9uKS5zY29wZT8/KFEuc2NvcGU9dyQoXCJBTlRIUk9QSUNfU0NPUEVcIikpLHEuYXV0aGVudGljYXRpb24udHlwZT09PVwib2lkY19mZWRlcmF0aW9uXCIpe2lmKCFxLmF1dGhlbnRpY2F0aW9uLmlkZW50aXR5X3Rva2VuKXtsZXQgQj13JChcIkFOVEhST1BJQ19JREVOVElUWV9UT0tFTl9GSUxFXCIpO2lmKEIpcS5hdXRoZW50aWNhdGlvbi5pZGVudGl0eV90b2tlbj17c291cmNlOlwiZmlsZVwiLHBhdGg6Qn19aWYoIXEuYXV0aGVudGljYXRpb24uZmVkZXJhdGlvbl9ydWxlX2lkKXEuYXV0aGVudGljYXRpb24uZmVkZXJhdGlvbl9ydWxlX2lkPXckKFwiQU5USFJPUElDX0ZFREVSQVRJT05fUlVMRV9JRFwiKT8/XCJcIjsoSj1xLmF1dGhlbnRpY2F0aW9uKS5zZXJ2aWNlX2FjY291bnRfaWQ/PyhKLnNlcnZpY2VfYWNjb3VudF9pZD13JChcIkFOVEhST1BJQ19TRVJWSUNFX0FDQ09VTlRfSURcIikpfXJldHVybntjb25maWc6cSxmcm9tRmlsZTohMH19O3ZhciBKdz1hc3luYygkLFEpPT57aWYoJD8uYXV0aGVudGljYXRpb24uY3JlZGVudGlhbHNfcGF0aClyZXR1cm4gJC5hdXRoZW50aWNhdGlvbi5jcmVkZW50aWFsc19wYXRoO2xldCBKPWF3YWl0IGdHKCk7aWYoIUopcmV0dXJuIG51bGw7bGV0IFk9UT8/YXdhaXQgWHcoKTtpZighWSlyZXR1cm4gbnVsbDtyZXR1cm4gJHcoWSksKGF3YWl0IGltcG9ydChcIm5vZGU6cGF0aFwiKSkuam9pbihKLFwiY3JlZGVudGlhbHNcIixgJHtZfS5qc29uYCl9LGdHPWFzeW5jKCk9PntpZighZ2soKSlyZXR1cm4gbnVsbDtsZXQgJD1hd2FpdCBpbXBvcnQoXCJub2RlOnBhdGhcIiksUT13JChcIkFOVEhST1BJQ19DT05GSUdfRElSXCIpO2lmKFEpcmV0dXJuIFE7aWYodDkoKVtcIlgtU3RhaW5sZXNzLU9TXCJdPT09XCJXaW5kb3dzXCIpe2xldCBXPXckKFwiQVBQREFUQVwiKTtpZihXKXJldHVybiAkLmpvaW4oVyxcIkFudGhyb3BpY1wiKTtsZXQgRz13JChcIlVTRVJQUk9GSUxFXCIpO2lmKEcpcmV0dXJuICQuam9pbihHLFwiQXBwRGF0YVwiLFwiUm9hbWluZ1wiLFwiQW50aHJvcGljXCIpO3JldHVybiBudWxsfWxldCBZPXckKFwiWERHX0NPTkZJR19IT01FXCIpO2lmKFkpcmV0dXJuICQuam9pbihZLFwiYW50aHJvcGljXCIpO2xldCBYPXckKFwiSE9NRVwiKTtpZihYKXJldHVybiAkLmpvaW4oWCxcIi5jb25maWdcIixcImFudGhyb3BpY1wiKTtyZXR1cm4gbnVsbH0sZ2s9KCk9PntsZXQgJD10OSgpW1wiWC1TdGFpbmxlc3MtUnVudGltZVwiXTtyZXR1cm4gJD09PVwibm9kZVwifHwkPT09XCJkZW5vXCJ9LFh3PWFzeW5jKCk9PntsZXQgJD1hd2FpdCBnRygpO2lmKCEkKXJldHVybiBudWxsO2xldCBRPXckKFwiQU5USFJPUElDX1BST0ZJTEVcIik7aWYoUSlyZXR1cm4gUTtsZXQgSj1hd2FpdCBpbXBvcnQoXCJub2RlOmZzXCIpLFg9KGF3YWl0IGltcG9ydChcIm5vZGU6cGF0aFwiKSkuam9pbigkLFwiYWN0aXZlX2NvbmZpZ1wiKTt0cnl7cmV0dXJuKGF3YWl0IEoucHJvbWlzZXMucmVhZEZpbGUoWCxcInV0Zi04XCIpKS50cmltKCl8fFwiZGVmYXVsdFwifWNhdGNoKFcpe2lmKFc/LmNvZGUhPT1cIkVOT0VOVFwiKXRocm93IEVycm9yKGBmYWlsZWQgdG8gcmVhZCAke1h9OiAke1d9YCk7cmV0dXJuXCJkZWZhdWx0XCJ9fTtmdW5jdGlvbiBoRygkKXtpZighJCl0aHJvdyBuZXcgZyhcIklkZW50aXR5IHRva2VuIGZpbGUgcGF0aCBpcyBlbXB0eVwiKTtyZXR1cm4gYXN5bmMoKT0+e2xldCBRPWF3YWl0IGltcG9ydChcIm5vZGU6ZnNcIiksSjt0cnl7Sj1hd2FpdCBRLnByb21pc2VzLnJlYWRGaWxlKCQsXCJ1dGYtOFwiKX1jYXRjaChYKXt0aHJvdyBuZXcgZyhgRmFpbGVkIHRvIHJlYWQgaWRlbnRpdHkgdG9rZW4gZmlsZSBhdCAkeyR9OiAke1h9YCl9bGV0IFk9Si50cmltKCk7aWYoIVkpdGhyb3cgbmV3IGcoYElkZW50aXR5IHRva2VuIGZpbGUgYXQgJHskfSBpcyBlbXB0eWApO3JldHVybiBZfX1mdW5jdGlvbiBZdygkKXtpZighJCl0aHJvdyBuZXcgZyhcIklkZW50aXR5IHRva2VuIHZhbHVlIGlzIGVtcHR5XCIpO3JldHVybigpPT4kfWZ1bmN0aW9uIFd3KCQpe3JldHVybiBhc3luYygpPT57algoJC5iYXNlVVJMKTtsZXQgUT1hd2FpdCAkLmlkZW50aXR5VG9rZW5Qcm92aWRlcigpO2lmKFEubGVuZ3RoPjE2Mzg0KXRocm93IG5ldyBPJChgSWRlbnRpdHkgdG9rZW4gaXMgJHtNYXRoLmNlaWwoUS5sZW5ndGgvMTAyNCl9IEtpQiwgZXhjZWVkcyB0aGUgMTYgS2lCIGFzc2VydGlvbiBsaW1pdGApO2xldCBKPXtncmFudF90eXBlOmROLGFzc2VydGlvbjpRLGZlZGVyYXRpb25fcnVsZV9pZDokLmZlZGVyYXRpb25SdWxlSWQsb3JnYW5pemF0aW9uX2lkOiQub3JnYW5pemF0aW9uSWR9O2lmKCQuc2VydmljZUFjY291bnRJZClKLnNlcnZpY2VfYWNjb3VudF9pZD0kLnNlcnZpY2VBY2NvdW50SWQ7aWYoJC53b3Jrc3BhY2VJZClKLndvcmtzcGFjZV9pZD0kLndvcmtzcGFjZUlkO2xldCBZPWAkeyQuYmFzZVVSTH0ke0xYfWAsWDt0cnl7WD1hd2FpdCAkLmZldGNoKFkse21ldGhvZDpcIlBPU1RcIixoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwiLFwiYW50aHJvcGljLWJldGFcIjpgJHtRMH0sJHtuTn1gLFwiVXNlci1BZ2VudFwiOiQudXNlckFnZW50fHxgYW50aHJvcGljLXNkay10eXBlc2NyaXB0LyR7ZDZ9IG9pZGNGZWRlcmF0aW9uUHJvdmlkZXJgfSxib2R5OkpTT04uc3RyaW5naWZ5KEopfSl9Y2F0Y2goSCl7dGhyb3cgbmV3IE8kKGBGYWlsZWQgdG8gcmVhY2ggdG9rZW4gZW5kcG9pbnQgJHtZfTogJHtIfWApfWxldCBXPVguaGVhZGVycy5nZXQoXCJSZXF1ZXN0LUlkXCIpO2lmKCFYLm9rKXtsZXQgSD1hd2FpdCBYLnRleHQoKS5jYXRjaCgoKT0+XCJcIikscT1ENihIKSxWPVwiXCI7aWYoWC5zdGF0dXM9PT00MDEpVj1gIEVuc3VyZSB5b3VyIGZlZGVyYXRpb24gcnVsZSBtYXRjaGVzIHlvdXIgaWRlbnRpdHkgdG9rZW4uICR7JC53b3Jrc3BhY2VJZD9cIlwiOlwiSWYgeW91ciBmZWRlcmF0aW9uIHJ1bGUgaXMgc2NvcGVkIHRvIG11bHRpcGxlIHdvcmtzcGFjZXMsIHNldCB0aGUgQU5USFJPUElDX1dPUktTUEFDRV9JRCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlICd3b3Jrc3BhY2VfaWQnIGNvbmZpZyBrZXksIG9yIHRoZSBgd29ya3NwYWNlSWRgIG9wdGlvbi4gXCJ9VmlldyB5b3VyIGF1dGhlbnRpY2F0aW9uIGV2ZW50cyBpbiB0aGUgV29ya2xvYWQgaWRlbnRpdHkgcGFnZSBvZiBDbGF1ZGUgQ29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLmA7dGhyb3cgbmV3IE8kKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQgd2l0aCBzdGF0dXMgJHtYLnN0YXR1c30ke1c/YCAocmVxdWVzdC1pZCAke1d9KWA6XCJcIn06ICR7cX0ke1Z9YCxYLnN0YXR1cyxxLFcpfWxldCBHPWF3YWl0IEFYKFgsVyksVT1OdW1iZXIoRy5leHBpcmVzX2luKTtpZighTnVtYmVyLmlzRmluaXRlKFUpKXRocm93IG5ldyBPJChgVG9rZW4gZW5kcG9pbnQgcmVzcG9uc2UgbWlzc2luZyByZXF1aXJlZCBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkoRDYoRykpfWAsWC5zdGF0dXMsRDYoRyksVyk7cmV0dXJue3Rva2VuOkcuYWNjZXNzX3Rva2VuLGV4cGlyZXNBdDpXNCgpK1V9fX1mdW5jdGlvbiBHdygkKXtyZXR1cm4gYXN5bmMoUSk9PntsZXQgSj1hd2FpdCBpbXBvcnQoXCJub2RlOmZzXCIpO2F3YWl0IElYKCQuY3JlZGVudGlhbHNQYXRoLCQub25TYWZldHlXYXJuaW5nKTtsZXQgWTt0cnl7WT1hd2FpdCBKLnByb21pc2VzLnJlYWRGaWxlKCQuY3JlZGVudGlhbHNQYXRoLFwidXRmLThcIil9Y2F0Y2goRCl7dGhyb3cgbmV3IE8kKGBDcmVkZW50aWFscyBmaWxlIG5vdCBmb3VuZCBhdCAkeyQuY3JlZGVudGlhbHNQYXRofTogJHtEfWApfWxldCBYO3RyeXtYPUpTT04ucGFyc2UoWSl9Y2F0Y2goRCl7dGhyb3cgbmV3IE8kKGBDcmVkZW50aWFscyBmaWxlIGF0ICR7JC5jcmVkZW50aWFsc1BhdGh9IGlzIG5vdCB2YWxpZCBKU09OOiAke0R9YCl9bGV0IFc9WC5hY2Nlc3NfdG9rZW47aWYoIVcpdGhyb3cgbmV3IE8kKGBDcmVkZW50aWFscyBmaWxlIGF0ICR7JC5jcmVkZW50aWFsc1BhdGh9IG11c3QgaW5jbHVkZSAnYWNjZXNzX3Rva2VuJ2ApO2xldCBHPVguZXhwaXJlc19hdDtpZighUT8uZm9yY2VSZWZyZXNoJiYoRz09bnVsbHx8VzQoKTxHLVc4KSlyZXR1cm57dG9rZW46VyxleHBpcmVzQXQ6Rz8/bnVsbH07bGV0IFU9WC5yZWZyZXNoX3Rva2VuO2lmKCEkLmNsaWVudElkfHwhVSl0aHJvdyBuZXcgTyQoYEFjY2VzcyB0b2tlbiBhdCAkeyQuY3JlZGVudGlhbHNQYXRofSBoYXMgZXhwaXJlZCBhbmQgbm8gcmVmcmVzaCBpcyBhdmFpbGFibGUgKGNsaWVudF9pZCAkeyQuY2xpZW50SWQ/XCJzZXRcIjpcImVtcHR5XCJ9LCByZWZyZXNoX3Rva2VuICR7VT9cInNldFwiOlwiZW1wdHlcIn0pYCk7algoJC5iYXNlVVJMKTtsZXQgSD17Z3JhbnRfdHlwZTppTixyZWZyZXNoX3Rva2VuOlUsY2xpZW50X2lkOiQuY2xpZW50SWR9LHE9YCR7JC5iYXNlVVJMfSR7TFh9YCxWO3RyeXtWPWF3YWl0ICQuZmV0Y2gocSx7bWV0aG9kOlwiUE9TVFwiLGhlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCIsXCJhbnRocm9waWMtYmV0YVwiOlEwLFwiVXNlci1BZ2VudFwiOiQudXNlckFnZW50fHxgYW50aHJvcGljLXNkay10eXBlc2NyaXB0LyR7ZDZ9IHVzZXJPQXV0aFByb3ZpZGVyYH0sYm9keTpKU09OLnN0cmluZ2lmeShIKX0pfWNhdGNoKEQpe3Rocm93IG5ldyBPJChgVXNlciBPQXV0aCByZWZyZXNoIGZhaWxlZCB0byByZWFjaCB0b2tlbiBlbmRwb2ludDogJHtEfWApfWxldCBCPVYuaGVhZGVycy5nZXQoXCJSZXF1ZXN0LUlkXCIpO2lmKCFWLm9rKXtsZXQgRD1hd2FpdCBWLnRleHQoKS5jYXRjaCgoKT0+XCJcIik7dGhyb3cgbmV3IE8kKGBVc2VyIE9BdXRoIHJlZnJlc2ggZmFpbGVkIChIVFRQICR7Vi5zdGF0dXN9KTogJHtENihEKX1gLFYuc3RhdHVzLEQ2KEQpLEIpfWxldCB6PWF3YWl0IEFYKFYsQiksTj1OdW1iZXIoei5leHBpcmVzX2luKTtpZighTnVtYmVyLmlzRmluaXRlKE4pKXRocm93IG5ldyBPJChgVXNlciBPQXV0aCByZWZyZXNoIHJlc3BvbnNlIG1pc3Npbmcgb3IgaW52YWxpZCBleHBpcmVzX2luOiAke0pTT04uc3RyaW5naWZ5KEQ2KHopKX1gLFYuc3RhdHVzLEQ2KHopLEIpO2xldCB3PVc0KCkrTixPPXoucmVmcmVzaF90b2tlbnx8VTtyZXR1cm4gYXdhaXQgUlgoJC5jcmVkZW50aWFsc1BhdGgsey4uLlgsdmVyc2lvbjpiWCx0eXBlOlwib2F1dGhfdG9rZW5cIixhY2Nlc3NfdG9rZW46ei5hY2Nlc3NfdG9rZW4sZXhwaXJlc19hdDp3LHJlZnJlc2hfdG9rZW46T30pLHt0b2tlbjp6LmFjY2Vzc190b2tlbixleHBpcmVzQXQ6d319fWZ1bmN0aW9uIHVHKCQsUSl7bGV0IEo9JC5hdXRoZW50aWNhdGlvbi5jcmVkZW50aWFsc19wYXRoPz9udWxsLFk9KCQuYmFzZV91cmx8fFEuYmFzZVVSTCkucmVwbGFjZSgvXFwvKyQvLFwiXCIpLFg9aGsoJCxKLFksUSksVz17fTtpZigkLndvcmtzcGFjZV9pZCYmJC5hdXRoZW50aWNhdGlvbi50eXBlPT09XCJ1c2VyX29hdXRoXCIpV1tcImFudGhyb3BpYy13b3Jrc3BhY2UtaWRcIl09JC53b3Jrc3BhY2VfaWQ7cmV0dXJue3Byb3ZpZGVyOlgsZXh0cmFIZWFkZXJzOlcsYmFzZVVSTDokLmJhc2VfdXJsfHx2b2lkIDB9fWFzeW5jIGZ1bmN0aW9uIFV3KCQsUSl7bGV0IEo9YXdhaXQgUXcoUSk7aWYoIUopcmV0dXJuIG51bGw7bGV0e2NvbmZpZzpZLGZyb21GaWxlOlh9PUosVz1ZLmF1dGhlbnRpY2F0aW9uLmNyZWRlbnRpYWxzX3BhdGh8fCFYP1k6ey4uLlksYXV0aGVudGljYXRpb246ey4uLlkuYXV0aGVudGljYXRpb24sY3JlZGVudGlhbHNfcGF0aDphd2FpdCBKdyhZLFEpPz92b2lkIDB9fTtyZXR1cm4gdUcoVywkKX1mdW5jdGlvbiBoaygkLFEsSixZKXtzd2l0Y2goJC5hdXRoZW50aWNhdGlvbi50eXBlKXtjYXNlXCJvaWRjX2ZlZGVyYXRpb25cIjp7bGV0IFg9JC5hdXRoZW50aWNhdGlvbixXPXVrKFgpO2lmKCFXKXRocm93IG5ldyBPJChcIm9pZGNfZmVkZXJhdGlvbiBjb25maWcgcmVxdWlyZXMgYW4gaWRlbnRpdHkgdG9rZW4gKHNldCBhdXRoZW50aWNhdGlvbi5pZGVudGl0eV90b2tlbiwgQU5USFJPUElDX0lERU5USVRZX1RPS0VOX0ZJTEUsIG9yIEFOVEhST1BJQ19JREVOVElUWV9UT0tFTilcIik7aWYoIVguZmVkZXJhdGlvbl9ydWxlX2lkKXRocm93IG5ldyBPJChcIm9pZGNfZmVkZXJhdGlvbiBjb25maWcgcmVxdWlyZXMgJ2ZlZGVyYXRpb25fcnVsZV9pZCcuIFNldCBpdCBpbiBhdXRoZW50aWNhdGlvbi5mZWRlcmF0aW9uX3J1bGVfaWQgaW4geW91ciBwcm9maWxlLCBvciB2aWEgQU5USFJPUElDX0ZFREVSQVRJT05fUlVMRV9JRCAocHJvZmlsZSB0YWtlcyBwcmVjZWRlbmNlKS5cIik7aWYoISQub3JnYW5pemF0aW9uX2lkKXRocm93IG5ldyBPJChcIm9pZGNfZmVkZXJhdGlvbiBjb25maWcgcmVxdWlyZXMgb3JnYW5pemF0aW9uX2lkIChzZXQgQU5USFJPUElDX09SR0FOSVpBVElPTl9JRCBvciBjb25maWcub3JnYW5pemF0aW9uX2lkKVwiKTtsZXQgRz1Xdyh7aWRlbnRpdHlUb2tlblByb3ZpZGVyOlcsZmVkZXJhdGlvblJ1bGVJZDpYLmZlZGVyYXRpb25fcnVsZV9pZCxvcmdhbml6YXRpb25JZDokLm9yZ2FuaXphdGlvbl9pZCxzZXJ2aWNlQWNjb3VudElkOlguc2VydmljZV9hY2NvdW50X2lkLHdvcmtzcGFjZUlkOiQud29ya3NwYWNlX2lkLGJhc2VVUkw6SixmZXRjaDpZLmZldGNoLHVzZXJBZ2VudDpZLnVzZXJBZ2VudH0pO2lmKFEpcmV0dXJuIG1rKEcsUSxZLm9uQ2FjaGVXcml0ZUVycm9yLFkub25TYWZldHlXYXJuaW5nKTtyZXR1cm4gR31jYXNlXCJ1c2VyX29hdXRoXCI6e2lmKCFRKXRocm93IG5ldyBPJChcInVzZXJfb2F1dGggY29uZmlnIHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLmNyZWRlbnRpYWxzX3BhdGggKG9yIGxvYWQgdmlhIGEgcHJvZmlsZSBzbyBpdCBkZWZhdWx0cyB0byA8Y29uZmlnX2Rpcj4vY3JlZGVudGlhbHMvPHByb2ZpbGU+Lmpzb24pXCIpO3JldHVybiBHdyh7Y3JlZGVudGlhbHNQYXRoOlEsY2xpZW50SWQ6JC5hdXRoZW50aWNhdGlvbi5jbGllbnRfaWQsYmFzZVVSTDpKLGZldGNoOlkuZmV0Y2gsdXNlckFnZW50OlkudXNlckFnZW50LG9uU2FmZXR5V2FybmluZzpZLm9uU2FmZXR5V2FybmluZ30pfWRlZmF1bHQ6e2xldCBYPSQuYXV0aGVudGljYXRpb24udHlwZTt0aHJvdyBuZXcgTyQoYGF1dGhlbnRpY2F0aW9uLnR5cGUgXCIke1h9XCIgaXMgbm90IGEga25vd24gYXV0aGVudGljYXRpb24gdHlwZWApfX19ZnVuY3Rpb24gdWsoJCl7aWYoJC5pZGVudGl0eV90b2tlbil7bGV0IFk9JC5pZGVudGl0eV90b2tlbi5zb3VyY2U7aWYoWSE9PVwiZmlsZVwiKXRocm93IG5ldyBPJChgaWRlbnRpdHlfdG9rZW4uc291cmNlIFwiJHtZfVwiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBTREsgdmVyc2lvbiAob25seSBcImZpbGVcIilgKTtpZighJC5pZGVudGl0eV90b2tlbi5wYXRoKXRocm93IG5ldyBPJCgnaWRlbnRpdHlfdG9rZW4uc291cmNlIFwiZmlsZVwiIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHBhdGgnKTtyZXR1cm4gaEcoJC5pZGVudGl0eV90b2tlbi5wYXRoKX1sZXQgUT13JChcIkFOVEhST1BJQ19JREVOVElUWV9UT0tFTl9GSUxFXCIpO2lmKFEpcmV0dXJuIGhHKFEpO2xldCBKPXckKFwiQU5USFJPUElDX0lERU5USVRZX1RPS0VOXCIpO2lmKEopcmV0dXJuIFl3KEopO3JldHVybiBudWxsfWZ1bmN0aW9uIG1rKCQsUSxKLFkpe3JldHVybiBhc3luYyhYKT0+e2xldCBXPWF3YWl0IGltcG9ydChcIm5vZGU6ZnNcIik7YXdhaXQgSVgoUSxZKTtsZXQgRzt0cnl7bGV0IEg9YXdhaXQgVy5wcm9taXNlcy5yZWFkRmlsZShRLFwidXRmLThcIik7Rz1KU09OLnBhcnNlKEgpO2xldCBxPUc/LmFjY2Vzc190b2tlbjtpZihxJiYhWD8uZm9yY2VSZWZyZXNoKXtsZXQgVj1HPy5leHBpcmVzX2F0O2lmKFY9PW51bGx8fFc0KCk8Vi1XOClyZXR1cm57dG9rZW46cSxleHBpcmVzQXQ6Vj8/bnVsbH19fWNhdGNoKEgpe2lmKEg/LmNvZGUhPT1cIkVOT0VOVFwiJiYhKEggaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpSj8uKEgpfWxldCBVPWF3YWl0ICQoWCk7dHJ5e2F3YWl0IFJYKFEsey4uLkc/P3t9LHZlcnNpb246YlgsdHlwZTpcIm9hdXRoX3Rva2VuXCIsYWNjZXNzX3Rva2VuOlUudG9rZW4sZXhwaXJlc19hdDpVLmV4cGlyZXNBdH0pfWNhdGNoKEgpe0o/LihIKX1yZXR1cm4gVX19dmFyIGs2LHY2O2NsYXNzIHoxe2NvbnN0cnVjdG9yKCl7azYuc2V0KHRoaXMsdm9pZCAwKSx2Ni5zZXQodGhpcyx2b2lkIDApLGYodGhpcyxrNixuZXcgVWludDhBcnJheSxcImZcIiksZih0aGlzLHY2LG51bGwsXCJmXCIpfWRlY29kZSgkKXtpZigkPT1udWxsKXJldHVybltdO2xldCBRPSQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheSgkKTp0eXBlb2YgJD09PVwic3RyaW5nXCI/RzgoJCk6JDtmKHRoaXMsazYsc04oW1oodGhpcyxrNixcImZcIiksUV0pLFwiZlwiKTtsZXQgSj1bXSxZO3doaWxlKChZPWxrKFoodGhpcyxrNixcImZcIiksWih0aGlzLHY2LFwiZlwiKSkpIT1udWxsKXtpZihZLmNhcnJpYWdlJiZaKHRoaXMsdjYsXCJmXCIpPT1udWxsKXtmKHRoaXMsdjYsWS5pbmRleCxcImZcIik7Y29udGludWV9aWYoWih0aGlzLHY2LFwiZlwiKSE9bnVsbCYmKFkuaW5kZXghPT1aKHRoaXMsdjYsXCJmXCIpKzF8fFkuY2FycmlhZ2UpKXtKLnB1c2goZkcoWih0aGlzLGs2LFwiZlwiKS5zdWJhcnJheSgwLFoodGhpcyx2NixcImZcIiktMSkpKSxmKHRoaXMsazYsWih0aGlzLGs2LFwiZlwiKS5zdWJhcnJheShaKHRoaXMsdjYsXCJmXCIpKSxcImZcIiksZih0aGlzLHY2LG51bGwsXCJmXCIpO2NvbnRpbnVlfWxldCBYPVoodGhpcyx2NixcImZcIikhPT1udWxsP1kucHJlY2VkaW5nLTE6WS5wcmVjZWRpbmcsVz1mRyhaKHRoaXMsazYsXCJmXCIpLnN1YmFycmF5KDAsWCkpO0oucHVzaChXKSxmKHRoaXMsazYsWih0aGlzLGs2LFwiZlwiKS5zdWJhcnJheShZLmluZGV4KSxcImZcIiksZih0aGlzLHY2LG51bGwsXCJmXCIpfXJldHVybiBKfWZsdXNoKCl7aWYoIVoodGhpcyxrNixcImZcIikubGVuZ3RoKXJldHVybltdO3JldHVybiB0aGlzLmRlY29kZShgXG5gKX19azY9bmV3IFdlYWtNYXAsdjY9bmV3IFdlYWtNYXA7ejEuTkVXTElORV9DSEFSUz1uZXcgU2V0KFtgXG5gLFwiXFxyXCJdKTt6MS5ORVdMSU5FX1JFR0VYUD0vXFxyXFxufFtcXG5cXHJdL2c7ZnVuY3Rpb24gbGsoJCxRKXtmb3IobGV0IFg9UT8/MDtYPCQubGVuZ3RoO1grKyl7aWYoJFtYXT09PTEwKXJldHVybntwcmVjZWRpbmc6WCxpbmRleDpYKzEsY2FycmlhZ2U6ITF9O2lmKCRbWF09PT0xMylyZXR1cm57cHJlY2VkaW5nOlgsaW5kZXg6WCsxLGNhcnJpYWdlOiEwfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBIdygkKXtmb3IobGV0IFk9MDtZPCQubGVuZ3RoLTE7WSsrKXtpZigkW1ldPT09MTAmJiRbWSsxXT09PTEwKXJldHVybiBZKzI7aWYoJFtZXT09PTEzJiYkW1krMV09PT0xMylyZXR1cm4gWSsyO2lmKCRbWV09PT0xMyYmJFtZKzFdPT09MTAmJlkrMzwkLmxlbmd0aCYmJFtZKzJdPT09MTMmJiRbWSszXT09PTEwKXJldHVybiBZKzR9cmV0dXJuLTF9dmFyIGU5O2NsYXNzIEM2e2NvbnN0cnVjdG9yKCQsUSxKKXt0aGlzLml0ZXJhdG9yPSQsZTkuc2V0KHRoaXMsdm9pZCAwKSx0aGlzLmNvbnRyb2xsZXI9USxmKHRoaXMsZTksSixcImZcIil9c3RhdGljIGZyb21TU0VSZXNwb25zZSgkLFEsSil7bGV0IFk9ITEsWD1KP3UkKEopOmNvbnNvbGU7YXN5bmMgZnVuY3Rpb24qVygpe2lmKFkpdGhyb3cgbmV3IGcoXCJDYW5ub3QgaXRlcmF0ZSBvdmVyIGEgY29uc3VtZWQgc3RyZWFtLCB1c2UgYC50ZWUoKWAgdG8gc3BsaXQgdGhlIHN0cmVhbS5cIik7WT0hMDtsZXQgRz0hMTt0cnl7Zm9yIGF3YWl0KGxldCBVIG9mIGNrKCQsUSkpe2lmKFUuZXZlbnQ9PT1cImNvbXBsZXRpb25cIil0cnl7eWllbGQgSlNPTi5wYXJzZShVLmRhdGEpfWNhdGNoKEgpe3Rocm93IFguZXJyb3IoXCJDb3VsZCBub3QgcGFyc2UgbWVzc2FnZSBpbnRvIEpTT046XCIsVS5kYXRhKSxYLmVycm9yKFwiRnJvbSBjaHVuazpcIixVLnJhdyksSH1pZihVLmV2ZW50PT09XCJtZXNzYWdlX3N0YXJ0XCJ8fFUuZXZlbnQ9PT1cIm1lc3NhZ2VfZGVsdGFcInx8VS5ldmVudD09PVwibWVzc2FnZV9zdG9wXCJ8fFUuZXZlbnQ9PT1cImNvbnRlbnRfYmxvY2tfc3RhcnRcInx8VS5ldmVudD09PVwiY29udGVudF9ibG9ja19kZWx0YVwifHxVLmV2ZW50PT09XCJjb250ZW50X2Jsb2NrX3N0b3BcInx8VS5ldmVudD09PVwibWVzc2FnZVwifHxVLmV2ZW50PT09XCJ1c2VyLm1lc3NhZ2VcInx8VS5ldmVudD09PVwidXNlci5pbnRlcnJ1cHRcInx8VS5ldmVudD09PVwidXNlci50b29sX2NvbmZpcm1hdGlvblwifHxVLmV2ZW50PT09XCJ1c2VyLmN1c3RvbV90b29sX3Jlc3VsdFwifHxVLmV2ZW50PT09XCJhZ2VudC5tZXNzYWdlXCJ8fFUuZXZlbnQ9PT1cImFnZW50LnRoaW5raW5nXCJ8fFUuZXZlbnQ9PT1cImFnZW50LnRvb2xfdXNlXCJ8fFUuZXZlbnQ9PT1cImFnZW50LnRvb2xfcmVzdWx0XCJ8fFUuZXZlbnQ9PT1cImFnZW50Lm1jcF90b29sX3VzZVwifHxVLmV2ZW50PT09XCJhZ2VudC5tY3BfdG9vbF9yZXN1bHRcInx8VS5ldmVudD09PVwiYWdlbnQuY3VzdG9tX3Rvb2xfdXNlXCJ8fFUuZXZlbnQ9PT1cImFnZW50LnRocmVhZF9jb250ZXh0X2NvbXBhY3RlZFwifHxVLmV2ZW50PT09XCJzZXNzaW9uLnN0YXR1c19ydW5uaW5nXCJ8fFUuZXZlbnQ9PT1cInNlc3Npb24uc3RhdHVzX2lkbGVcInx8VS5ldmVudD09PVwic2Vzc2lvbi5zdGF0dXNfcmVzY2hlZHVsZWRcInx8VS5ldmVudD09PVwic2Vzc2lvbi5zdGF0dXNfdGVybWluYXRlZFwifHxVLmV2ZW50PT09XCJzZXNzaW9uLmVycm9yXCJ8fFUuZXZlbnQ9PT1cInNlc3Npb24uZGVsZXRlZFwifHxVLmV2ZW50PT09XCJzcGFuLm1vZGVsX3JlcXVlc3Rfc3RhcnRcInx8VS5ldmVudD09PVwic3Bhbi5tb2RlbF9yZXF1ZXN0X2VuZFwiKXRyeXt5aWVsZCBKU09OLnBhcnNlKFUuZGF0YSl9Y2F0Y2goSCl7dGhyb3cgWC5lcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBtZXNzYWdlIGludG8gSlNPTjpcIixVLmRhdGEpLFguZXJyb3IoXCJGcm9tIGNodW5rOlwiLFUucmF3KSxIfWlmKFUuZXZlbnQ9PT1cInBpbmdcIiljb250aW51ZTtpZihVLmV2ZW50PT09XCJlcnJvclwiKXtsZXQgSD1aWChVLmRhdGEpPz9VLmRhdGEscT1IPy5lcnJvcj8udHlwZTt0aHJvdyBuZXcgbiQodm9pZCAwLEgsdm9pZCAwLCQuaGVhZGVycyxxKX19Rz0hMH1jYXRjaChVKXtpZihmNChVKSlyZXR1cm47dGhyb3cgVX1maW5hbGx5e2lmKCFHKVEuYWJvcnQoKX19cmV0dXJuIG5ldyBDNihXLFEsSil9c3RhdGljIGZyb21SZWFkYWJsZVN0cmVhbSgkLFEsSil7bGV0IFk9ITE7YXN5bmMgZnVuY3Rpb24qWCgpe2xldCBHPW5ldyB6MSxVPWE5KCQpO2ZvciBhd2FpdChsZXQgSCBvZiBVKWZvcihsZXQgcSBvZiBHLmRlY29kZShIKSl5aWVsZCBxO2ZvcihsZXQgSCBvZiBHLmZsdXNoKCkpeWllbGQgSH1hc3luYyBmdW5jdGlvbipXKCl7aWYoWSl0aHJvdyBuZXcgZyhcIkNhbm5vdCBpdGVyYXRlIG92ZXIgYSBjb25zdW1lZCBzdHJlYW0sIHVzZSBgLnRlZSgpYCB0byBzcGxpdCB0aGUgc3RyZWFtLlwiKTtZPSEwO2xldCBHPSExO3RyeXtmb3IgYXdhaXQobGV0IFUgb2YgWCgpKXtpZihHKWNvbnRpbnVlO2lmKFUpeWllbGQgSlNPTi5wYXJzZShVKX1HPSEwfWNhdGNoKFUpe2lmKGY0KFUpKXJldHVybjt0aHJvdyBVfWZpbmFsbHl7aWYoIUcpUS5hYm9ydCgpfX1yZXR1cm4gbmV3IEM2KFcsUSxKKX1bKGU5PW5ldyBXZWFrTWFwLFN5bWJvbC5hc3luY0l0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigpfXRlZSgpe2xldCAkPVtdLFE9W10sSj10aGlzLml0ZXJhdG9yKCksWT0oWCk9PntyZXR1cm57bmV4dDooKT0+e2lmKFgubGVuZ3RoPT09MCl7bGV0IFc9Si5uZXh0KCk7JC5wdXNoKFcpLFEucHVzaChXKX1yZXR1cm4gWC5zaGlmdCgpfX19O3JldHVybltuZXcgQzYoKCk9PlkoJCksdGhpcy5jb250cm9sbGVyLFoodGhpcyxlOSxcImZcIikpLG5ldyBDNigoKT0+WShRKSx0aGlzLmNvbnRyb2xsZXIsWih0aGlzLGU5LFwiZlwiKSldfXRvUmVhZGFibGVTdHJlYW0oKXtsZXQgJD10aGlzLFE7cmV0dXJuIENHKHthc3luYyBzdGFydCgpe1E9JFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKX0sYXN5bmMgcHVsbChKKXt0cnl7bGV0e3ZhbHVlOlksZG9uZTpYfT1hd2FpdCBRLm5leHQoKTtpZihYKXJldHVybiBKLmNsb3NlKCk7bGV0IFc9RzgoSlNPTi5zdHJpbmdpZnkoWSkrYFxuYCk7Si5lbnF1ZXVlKFcpfWNhdGNoKFkpe0ouZXJyb3IoWSl9fSxhc3luYyBjYW5jZWwoKXthd2FpdCBRLnJldHVybj8uKCl9fSl9fWFzeW5jIGZ1bmN0aW9uKmNrKCQsUSl7aWYoISQuYm9keSl7aWYoUS5hYm9ydCgpLHR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvcjxcInVcIiYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IucHJvZHVjdD09PVwiUmVhY3ROYXRpdmVcIil0aHJvdyBuZXcgZyhcIlRoZSBkZWZhdWx0IHJlYWN0LW5hdGl2ZSBmZXRjaCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHN0cmVhbWluZy4gUGxlYXNlIHVzZSBleHBvL2ZldGNoOiBodHRwczovL2RvY3MuZXhwby5kZXYvdmVyc2lvbnMvbGF0ZXN0L3Nkay9leHBvLyNleHBvZmV0Y2gtYXBpXCIpO3Rocm93IG5ldyBnKFwiQXR0ZW1wdGVkIHRvIGl0ZXJhdGUgb3ZlciBhIHJlc3BvbnNlIHdpdGggbm8gYm9keVwiKX1sZXQgSj1uZXcgS3csWT1uZXcgejEsWD1hOSgkLmJvZHkpO2ZvciBhd2FpdChsZXQgVyBvZiBwayhYKSlmb3IobGV0IEcgb2YgWS5kZWNvZGUoVykpe2xldCBVPUouZGVjb2RlKEcpO2lmKFUpeWllbGQgVX1mb3IobGV0IFcgb2YgWS5mbHVzaCgpKXtsZXQgRz1KLmRlY29kZShXKTtpZihHKXlpZWxkIEd9fWFzeW5jIGZ1bmN0aW9uKnBrKCQpe2xldCBRPW5ldyBVaW50OEFycmF5O2ZvciBhd2FpdChsZXQgSiBvZiAkKXtpZihKPT1udWxsKWNvbnRpbnVlO2xldCBZPUogaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheShKKTp0eXBlb2YgSj09PVwic3RyaW5nXCI/RzgoSik6SixYPW5ldyBVaW50OEFycmF5KFEubGVuZ3RoK1kubGVuZ3RoKTtYLnNldChRKSxYLnNldChZLFEubGVuZ3RoKSxRPVg7bGV0IFc7d2hpbGUoKFc9SHcoUSkpIT09LTEpeWllbGQgUS5zbGljZSgwLFcpLFE9US5zbGljZShXKX1pZihRLmxlbmd0aD4wKXlpZWxkIFF9Y2xhc3MgS3d7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50PW51bGwsdGhpcy5kYXRhPVtdLHRoaXMuY2h1bmtzPVtdfWRlY29kZSgkKXtpZigkLmVuZHNXaXRoKFwiXFxyXCIpKSQ9JC5zdWJzdHJpbmcoMCwkLmxlbmd0aC0xKTtpZighJCl7aWYoIXRoaXMuZXZlbnQmJiF0aGlzLmRhdGEubGVuZ3RoKXJldHVybiBudWxsO2xldCBYPXtldmVudDp0aGlzLmV2ZW50LGRhdGE6dGhpcy5kYXRhLmpvaW4oYFxuYCkscmF3OnRoaXMuY2h1bmtzfTtyZXR1cm4gdGhpcy5ldmVudD1udWxsLHRoaXMuZGF0YT1bXSx0aGlzLmNodW5rcz1bXSxYfWlmKHRoaXMuY2h1bmtzLnB1c2goJCksJC5zdGFydHNXaXRoKFwiOlwiKSlyZXR1cm4gbnVsbDtsZXRbUSxKLFldPWRrKCQsXCI6XCIpO2lmKFkuc3RhcnRzV2l0aChcIiBcIikpWT1ZLnN1YnN0cmluZygxKTtpZihRPT09XCJldmVudFwiKXRoaXMuZXZlbnQ9WTtlbHNlIGlmKFE9PT1cImRhdGFcIil0aGlzLmRhdGEucHVzaChZKTtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZGsoJCxRKXtsZXQgSj0kLmluZGV4T2YoUSk7aWYoSiE9PS0xKXJldHVyblskLnN1YnN0cmluZygwLEopLFEsJC5zdWJzdHJpbmcoSitRLmxlbmd0aCldO3JldHVyblskLFwiXCIsXCJcIl19YXN5bmMgZnVuY3Rpb24gX1goJCxRKXtsZXR7cmVzcG9uc2U6SixyZXF1ZXN0TG9nSUQ6WSxyZXRyeU9mUmVxdWVzdExvZ0lEOlgsc3RhcnRUaW1lOld9PVEsRz1hd2FpdChhc3luYygpPT57aWYoUS5vcHRpb25zLnN0cmVhbSl7aWYodSQoJCkuZGVidWcoXCJyZXNwb25zZVwiLEouc3RhdHVzLEoudXJsLEouaGVhZGVycyxKLmJvZHkpLFEub3B0aW9ucy5fX3N0cmVhbUNsYXNzKXJldHVybiBRLm9wdGlvbnMuX19zdHJlYW1DbGFzcy5mcm9tU1NFUmVzcG9uc2UoSixRLmNvbnRyb2xsZXIpO3JldHVybiBDNi5mcm9tU1NFUmVzcG9uc2UoSixRLmNvbnRyb2xsZXIpfWlmKEouc3RhdHVzPT09MjA0KXJldHVybiBudWxsO2lmKFEub3B0aW9ucy5fX2JpbmFyeVJlc3BvbnNlKXJldHVybiBKO2xldCBIPUouaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIik/LnNwbGl0KFwiO1wiKVswXT8udHJpbSgpO2lmKEg/LmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKXx8SD8uZW5kc1dpdGgoXCIranNvblwiKSl7aWYoSi5oZWFkZXJzLmdldChcImNvbnRlbnQtbGVuZ3RoXCIpPT09XCIwXCIpcmV0dXJuO2xldCB6PWF3YWl0IEouanNvbigpO3JldHVybiBtRyh6LEopfXJldHVybiBhd2FpdCBKLnRleHQoKX0pKCk7cmV0dXJuIHUkKCQpLmRlYnVnKGBbJHtZfV0gcmVzcG9uc2UgcGFyc2VkYCx5NCh7cmV0cnlPZlJlcXVlc3RMb2dJRDpYLHVybDpKLnVybCxzdGF0dXM6Si5zdGF0dXMsYm9keTpHLGR1cmF0aW9uTXM6RGF0ZS5ub3coKS1XfSkpLEd9ZnVuY3Rpb24gbUcoJCxRKXtpZighJHx8dHlwZW9mICQhPT1cIm9iamVjdFwifHxBcnJheS5pc0FycmF5KCQpKXJldHVybiAkO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcIl9yZXF1ZXN0X2lkXCIse3ZhbHVlOlEuaGVhZGVycy5nZXQoXCJyZXF1ZXN0LWlkXCIpLGVudW1lcmFibGU6ITF9KX12YXIgJDc7Y2xhc3MgSjAgZXh0ZW5kcyBQcm9taXNle2NvbnN0cnVjdG9yKCQsUSxKPV9YKXtzdXBlcigoWSk9PntZKG51bGwpfSk7dGhpcy5yZXNwb25zZVByb21pc2U9USx0aGlzLnBhcnNlUmVzcG9uc2U9SiwkNy5zZXQodGhpcyx2b2lkIDApLGYodGhpcywkNywkLFwiZlwiKX1fdGhlblVud3JhcCgkKXtyZXR1cm4gbmV3IEowKFoodGhpcywkNyxcImZcIiksdGhpcy5yZXNwb25zZVByb21pc2UsYXN5bmMoUSxKKT0+bUcoJChhd2FpdCB0aGlzLnBhcnNlUmVzcG9uc2UoUSxKKSxKKSxKLnJlc3BvbnNlKSl9YXNSZXNwb25zZSgpe3JldHVybiB0aGlzLnJlc3BvbnNlUHJvbWlzZS50aGVuKCgkKT0+JC5yZXNwb25zZSl9YXN5bmMgd2l0aFJlc3BvbnNlKCl7bGV0WyQsUV09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGFyc2UoKSx0aGlzLmFzUmVzcG9uc2UoKV0pO3JldHVybntkYXRhOiQscmVzcG9uc2U6USxyZXF1ZXN0X2lkOlEuaGVhZGVycy5nZXQoXCJyZXF1ZXN0LWlkXCIpfX1wYXJzZSgpe2lmKCF0aGlzLnBhcnNlZFByb21pc2UpdGhpcy5wYXJzZWRQcm9taXNlPXRoaXMucmVzcG9uc2VQcm9taXNlLnRoZW4oKCQpPT50aGlzLnBhcnNlUmVzcG9uc2UoWih0aGlzLCQ3LFwiZlwiKSwkKSk7cmV0dXJuIHRoaXMucGFyc2VkUHJvbWlzZX10aGVuKCQsUSl7cmV0dXJuIHRoaXMucGFyc2UoKS50aGVuKCQsUSl9Y2F0Y2goJCl7cmV0dXJuIHRoaXMucGFyc2UoKS5jYXRjaCgkKX1maW5hbGx5KCQpe3JldHVybiB0aGlzLnBhcnNlKCkuZmluYWxseSgkKX19JDc9bmV3IFdlYWtNYXA7dmFyIFNYO2NsYXNzIGxHe2NvbnN0cnVjdG9yKCQsUSxKLFkpe1NYLnNldCh0aGlzLHZvaWQgMCksZih0aGlzLFNYLCQsXCJmXCIpLHRoaXMub3B0aW9ucz1ZLHRoaXMucmVzcG9uc2U9USx0aGlzLmJvZHk9Sn1oYXNOZXh0UGFnZSgpe2lmKCF0aGlzLmdldFBhZ2luYXRlZEl0ZW1zKCkubGVuZ3RoKXJldHVybiExO3JldHVybiB0aGlzLm5leHRQYWdlUmVxdWVzdE9wdGlvbnMoKSE9bnVsbH1hc3luYyBnZXROZXh0UGFnZSgpe2xldCAkPXRoaXMubmV4dFBhZ2VSZXF1ZXN0T3B0aW9ucygpO2lmKCEkKXRocm93IG5ldyBnKFwiTm8gbmV4dCBwYWdlIGV4cGVjdGVkOyBwbGVhc2UgY2hlY2sgYC5oYXNOZXh0UGFnZSgpYCBiZWZvcmUgY2FsbGluZyBgLmdldE5leHRQYWdlKClgLlwiKTtyZXR1cm4gYXdhaXQgWih0aGlzLFNYLFwiZlwiKS5yZXF1ZXN0QVBJTGlzdCh0aGlzLmNvbnN0cnVjdG9yLCQpfWFzeW5jKml0ZXJQYWdlcygpe2xldCAkPXRoaXM7eWllbGQgJDt3aGlsZSgkLmhhc05leHRQYWdlKCkpJD1hd2FpdCAkLmdldE5leHRQYWdlKCkseWllbGQgJH1hc3luYypbKFNYPW5ldyBXZWFrTWFwLFN5bWJvbC5hc3luY0l0ZXJhdG9yKV0oKXtmb3IgYXdhaXQobGV0ICQgb2YgdGhpcy5pdGVyUGFnZXMoKSlmb3IobGV0IFEgb2YgJC5nZXRQYWdpbmF0ZWRJdGVtcygpKXlpZWxkIFF9fWNsYXNzIGtYIGV4dGVuZHMgSjB7Y29uc3RydWN0b3IoJCxRLEope3N1cGVyKCQsUSxhc3luYyhZLFgpPT5uZXcgSihZLFgucmVzcG9uc2UsYXdhaXQgX1goWSxYKSxYLm9wdGlvbnMpKX1hc3luYypbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7bGV0ICQ9YXdhaXQgdGhpcztmb3IgYXdhaXQobGV0IFEgb2YgJCl5aWVsZCBRfX1jbGFzcyBHNCBleHRlbmRzIGxHe2NvbnN0cnVjdG9yKCQsUSxKLFkpe3N1cGVyKCQsUSxKLFkpO3RoaXMuZGF0YT1KLmRhdGF8fFtdLHRoaXMuaGFzX21vcmU9Si5oYXNfbW9yZXx8ITEsdGhpcy5maXJzdF9pZD1KLmZpcnN0X2lkfHxudWxsLHRoaXMubGFzdF9pZD1KLmxhc3RfaWR8fG51bGx9Z2V0UGFnaW5hdGVkSXRlbXMoKXtyZXR1cm4gdGhpcy5kYXRhPz9bXX1oYXNOZXh0UGFnZSgpe2lmKHRoaXMuaGFzX21vcmU9PT0hMSlyZXR1cm4hMTtyZXR1cm4gc3VwZXIuaGFzTmV4dFBhZ2UoKX1uZXh0UGFnZVJlcXVlc3RPcHRpb25zKCl7aWYodGhpcy5vcHRpb25zLnF1ZXJ5Py5iZWZvcmVfaWQpe2xldCBRPXRoaXMuZmlyc3RfaWQ7aWYoIVEpcmV0dXJuIG51bGw7cmV0dXJuey4uLnRoaXMub3B0aW9ucyxxdWVyeTp7Li4uRlgodGhpcy5vcHRpb25zLnF1ZXJ5KSxiZWZvcmVfaWQ6UX19fWxldCAkPXRoaXMubGFzdF9pZDtpZighJClyZXR1cm4gbnVsbDtyZXR1cm57Li4udGhpcy5vcHRpb25zLHF1ZXJ5OnsuLi5GWCh0aGlzLm9wdGlvbnMucXVlcnkpLGFmdGVyX2lkOiR9fX19Y2xhc3MgRCQgZXh0ZW5kcyBsR3tjb25zdHJ1Y3RvcigkLFEsSixZKXtzdXBlcigkLFEsSixZKTt0aGlzLmRhdGE9Si5kYXRhfHxbXSx0aGlzLm5leHRfcGFnZT1KLm5leHRfcGFnZXx8bnVsbH1nZXRQYWdpbmF0ZWRJdGVtcygpe3JldHVybiB0aGlzLmRhdGE/P1tdfW5leHRQYWdlUmVxdWVzdE9wdGlvbnMoKXtsZXQgJD10aGlzLm5leHRfcGFnZTtpZighJClyZXR1cm4gbnVsbDtyZXR1cm57Li4udGhpcy5vcHRpb25zLHF1ZXJ5OnsuLi5GWCh0aGlzLm9wdGlvbnMucXVlcnkpLHBhZ2U6JH19fX12YXIgcEc9KCk9PntpZih0eXBlb2YgRmlsZT5cInVcIil7bGV0e3Byb2Nlc3M6JH09Z2xvYmFsVGhpcyxRPXR5cGVvZiAkPy52ZXJzaW9ucz8ubm9kZT09PVwic3RyaW5nXCImJnBhcnNlSW50KCQudmVyc2lvbnMubm9kZS5zcGxpdChcIi5cIikpPDIwO3Rocm93IEVycm9yKFwiYEZpbGVgIGlzIG5vdCBkZWZpbmVkIGFzIGEgZ2xvYmFsLCB3aGljaCBpcyByZXF1aXJlZCBmb3IgZmlsZSB1cGxvYWRzLlwiKyhRP1wiIFVwZGF0ZSB0byBOb2RlIDIwIExUUyBvciBuZXdlciwgb3Igc2V0IGBnbG9iYWxUaGlzLkZpbGVgIHRvIGBpbXBvcnQoJ25vZGU6YnVmZmVyJykuRmlsZWAuXCI6XCJcIikpfX07ZnVuY3Rpb24gWDAoJCxRLEope3JldHVybiBwRygpLG5ldyBGaWxlKCQsUT8/XCJ1bmtub3duX2ZpbGVcIixKKX1mdW5jdGlvbiBRNygkLFEpe2xldCBKPXR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJigoXCJuYW1lXCJpbiAkKSYmJC5uYW1lJiZTdHJpbmcoJC5uYW1lKXx8KFwidXJsXCJpbiAkKSYmJC51cmwmJlN0cmluZygkLnVybCl8fChcImZpbGVuYW1lXCJpbiAkKSYmJC5maWxlbmFtZSYmU3RyaW5nKCQuZmlsZW5hbWUpfHwoXCJwYXRoXCJpbiAkKSYmJC5wYXRoJiZTdHJpbmcoJC5wYXRoKSl8fFwiXCI7cmV0dXJuIFE/Si5zcGxpdCgvW1xcXFwvXS8pLnBvcCgpfHx2b2lkIDA6Sn12YXIgZEc9KCQpPT4kIT1udWxsJiZ0eXBlb2YgJD09PVwib2JqZWN0XCImJnR5cGVvZiAkW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT09PVwiZnVuY3Rpb25cIjt2YXIgVTg9YXN5bmMoJCxRLEo9ITApPT57cmV0dXJuey4uLiQsYm9keTphd2FpdCByaygkLmJvZHksUSxKKX19LHF3PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG5rKCQpe2xldCBRPXR5cGVvZiAkPT09XCJmdW5jdGlvblwiPyQ6JC5mZXRjaCxKPXF3LmdldChRKTtpZihKKXJldHVybiBKO2xldCBZPShhc3luYygpPT57dHJ5e2xldCBYPVwiUmVzcG9uc2VcImluIFE/US5SZXNwb25zZTooYXdhaXQgUShcImRhdGE6LFwiKSkuY29uc3RydWN0b3IsVz1uZXcgRm9ybURhdGE7aWYoVy50b1N0cmluZygpPT09YXdhaXQgbmV3IFgoVykudGV4dCgpKXJldHVybiExO3JldHVybiEwfWNhdGNoe3JldHVybiEwfX0pKCk7cmV0dXJuIHF3LnNldChRLFkpLFl9dmFyIHJrPWFzeW5jKCQsUSxKPSEwKT0+e2lmKCFhd2FpdCBuayhRKSl0aHJvdyBUeXBlRXJyb3IoXCJUaGUgcHJvdmlkZWQgZmV0Y2ggZnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIHVwbG9hZHMgd2l0aCB0aGUgY3VycmVudCBnbG9iYWwgRm9ybURhdGEgY2xhc3MuXCIpO2xldCBZPW5ldyBGb3JtRGF0YTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoJHx8e30pLm1hcCgoW1gsV10pPT5jRyhZLFgsVyxKKSkpLFl9LG9rPSgkKT0+JCBpbnN0YW5jZW9mIEJsb2ImJihcIm5hbWVcImluICQpO3ZhciBjRz1hc3luYygkLFEsSixZKT0+e2lmKEo9PT12b2lkIDApcmV0dXJuO2lmKEo9PW51bGwpdGhyb3cgVHlwZUVycm9yKGBSZWNlaXZlZCBudWxsIGZvciBcIiR7UX1cIjsgdG8gcGFzcyBudWxsIGluIEZvcm1EYXRhLCB5b3UgbXVzdCB1c2UgdGhlIHN0cmluZyAnbnVsbCdgKTtpZih0eXBlb2YgSj09PVwic3RyaW5nXCJ8fHR5cGVvZiBKPT09XCJudW1iZXJcInx8dHlwZW9mIEo9PT1cImJvb2xlYW5cIikkLmFwcGVuZChRLFN0cmluZyhKKSk7ZWxzZSBpZihKIGluc3RhbmNlb2YgUmVzcG9uc2Upe2xldCBYPXt9LFc9Si5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtpZihXKVg9e3R5cGU6V307JC5hcHBlbmQoUSxYMChbYXdhaXQgSi5ibG9iKCldLFE3KEosWSksWCkpfWVsc2UgaWYoZEcoSikpJC5hcHBlbmQoUSxYMChbYXdhaXQgbmV3IFJlc3BvbnNlKE1YKEopKS5ibG9iKCldLFE3KEosWSkpKTtlbHNlIGlmKG9rKEopKSQuYXBwZW5kKFEsWDAoW0pdLFE3KEosWSkse3R5cGU6Si50eXBlfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShKKSlhd2FpdCBQcm9taXNlLmFsbChKLm1hcCgoWCk9PmNHKCQsUStcIltdXCIsWCxZKSkpO2Vsc2UgaWYodHlwZW9mIEo9PT1cIm9iamVjdFwiKWF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKEopLm1hcCgoW1gsV10pPT5jRygkLGAke1F9WyR7WH1dYCxXLFkpKSk7ZWxzZSB0aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgdmFsdWUgZ2l2ZW4gdG8gZm9ybSwgZXhwZWN0ZWQgYSBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgb2JqZWN0LCBBcnJheSwgRmlsZSBvciBCbG9iIGJ1dCBnb3QgJHtKfSBpbnN0ZWFkYCl9O3ZhciBWdz0oJCk9PiQhPW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmdHlwZW9mICQuc2l6ZT09PVwibnVtYmVyXCImJnR5cGVvZiAkLnR5cGU9PT1cInN0cmluZ1wiJiZ0eXBlb2YgJC50ZXh0PT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgJC5zbGljZT09PVwiZnVuY3Rpb25cIiYmdHlwZW9mICQuYXJyYXlCdWZmZXI9PT1cImZ1bmN0aW9uXCIsdGs9KCQpPT4kIT1udWxsJiZ0eXBlb2YgJD09PVwib2JqZWN0XCImJnR5cGVvZiAkLm5hbWU9PT1cInN0cmluZ1wiJiZ0eXBlb2YgJC5sYXN0TW9kaWZpZWQ9PT1cIm51bWJlclwiJiZWdygkKSxhaz0oJCk9PiQhPW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmdHlwZW9mICQudXJsPT09XCJzdHJpbmdcIiYmdHlwZW9mICQuYmxvYj09PVwiZnVuY3Rpb25cIjthc3luYyBmdW5jdGlvbiB2WCgkLFEsSil7aWYocEcoKSwkPWF3YWl0ICQsUXx8KFE9UTcoJCwhMCkpLHRrKCQpKXtpZigkIGluc3RhbmNlb2YgRmlsZSYmUT09bnVsbCYmSj09bnVsbClyZXR1cm4gJDtyZXR1cm4gWDAoW2F3YWl0ICQuYXJyYXlCdWZmZXIoKV0sUT8/JC5uYW1lLHt0eXBlOiQudHlwZSxsYXN0TW9kaWZpZWQ6JC5sYXN0TW9kaWZpZWQsLi4uSn0pfWlmKGFrKCQpKXtsZXQgWD1hd2FpdCAkLmJsb2IoKTtyZXR1cm4gUXx8KFE9bmV3IFVSTCgkLnVybCkucGF0aG5hbWUuc3BsaXQoL1tcXFxcL10vKS5wb3AoKSksWDAoYXdhaXQgaUcoWCksUSxKKX1sZXQgWT1hd2FpdCBpRygkKTtpZighSj8udHlwZSl7bGV0IFg9WS5maW5kKChXKT0+dHlwZW9mIFc9PT1cIm9iamVjdFwiJiYoXCJ0eXBlXCJpbiBXKSYmVy50eXBlKTtpZih0eXBlb2YgWD09PVwic3RyaW5nXCIpSj17Li4uSix0eXBlOlh9fXJldHVybiBYMChZLFEsSil9YXN5bmMgZnVuY3Rpb24gaUcoJCl7bGV0IFE9W107aWYodHlwZW9mICQ9PT1cInN0cmluZ1wifHxBcnJheUJ1ZmZlci5pc1ZpZXcoJCl8fCQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilRLnB1c2goJCk7ZWxzZSBpZihWdygkKSlRLnB1c2goJCBpbnN0YW5jZW9mIEJsb2I/JDphd2FpdCAkLmFycmF5QnVmZmVyKCkpO2Vsc2UgaWYoZEcoJCkpZm9yIGF3YWl0KGxldCBKIG9mICQpUS5wdXNoKC4uLmF3YWl0IGlHKEopKTtlbHNle2xldCBKPSQ/LmNvbnN0cnVjdG9yPy5uYW1lO3Rocm93IEVycm9yKGBVbmV4cGVjdGVkIGRhdGEgdHlwZTogJHt0eXBlb2YgJH0ke0o/YDsgY29uc3RydWN0b3I6ICR7Sn1gOlwiXCJ9JHtzaygkKX1gKX1yZXR1cm4gUX1mdW5jdGlvbiBzaygkKXtpZih0eXBlb2YgJCE9PVwib2JqZWN0XCJ8fCQ9PT1udWxsKXJldHVyblwiXCI7cmV0dXJuYDsgcHJvcHM6IFske09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKCQpLm1hcCgoSik9PmBcIiR7Sn1cImApLmpvaW4oXCIsIFwiKX1dYH1jbGFzcyB0e2NvbnN0cnVjdG9yKCQpe3RoaXMuX2NsaWVudD0kfX12YXIgQnc9U3ltYm9sLmZvcihcImJyYW5kLnByaXZhdGVOdWxsYWJsZUhlYWRlcnNcIik7ZnVuY3Rpb24qJHYoJCl7aWYoISQpcmV0dXJuO2lmKEJ3IGluICQpe2xldHt2YWx1ZXM6WSxudWxsczpYfT0kO3lpZWxkKlkuZW50cmllcygpO2ZvcihsZXQgVyBvZiBYKXlpZWxkW1csbnVsbF07cmV0dXJufWxldCBRPSExLEo7aWYoJCBpbnN0YW5jZW9mIEhlYWRlcnMpSj0kLmVudHJpZXMoKTtlbHNlIGlmKGtHKCQpKUo9JDtlbHNlIFE9ITAsSj1PYmplY3QuZW50cmllcygkPz97fSk7Zm9yKGxldCBZIG9mIEope2xldCBYPVlbMF07aWYodHlwZW9mIFghPT1cInN0cmluZ1wiKXRocm93IFR5cGVFcnJvcihcImV4cGVjdGVkIGhlYWRlciBuYW1lIHRvIGJlIGEgc3RyaW5nXCIpO2xldCBXPWtHKFlbMV0pP1lbMV06W1lbMV1dLEc9ITE7Zm9yKGxldCBVIG9mIFcpe2lmKFU9PT12b2lkIDApY29udGludWU7aWYoUSYmIUcpRz0hMCx5aWVsZFtYLG51bGxdO3lpZWxkW1gsVV19fX12YXIgUj0oJCk9PntsZXQgUT1uZXcgSGVhZGVycyxKPW5ldyBTZXQ7Zm9yKGxldCBZIG9mICQpe2xldCBYPW5ldyBTZXQ7Zm9yKGxldFtXLEddb2YgJHYoWSkpe2xldCBVPVcudG9Mb3dlckNhc2UoKTtpZighWC5oYXMoVSkpUS5kZWxldGUoVyksWC5hZGQoVSk7aWYoRz09PW51bGwpUS5kZWxldGUoVyksSi5hZGQoVSk7ZWxzZSBRLmFwcGVuZChXLEcpLEouZGVsZXRlKFUpfX1yZXR1cm57W0J3XTohMCx2YWx1ZXM6USxudWxsczpKfX07ZnVuY3Rpb24gTncoJCl7cmV0dXJuICQucmVwbGFjZSgvW15BLVphLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXSsvZyxlbmNvZGVVUklDb21wb25lbnQpfXZhciB6dz1PYmplY3QuZnJlZXplKE9iamVjdC5jcmVhdGUobnVsbCkpLFF2PSgkPU53KT0+ZnVuY3Rpb24oSiwuLi5ZKXtpZihKLmxlbmd0aD09PTEpcmV0dXJuIEpbMF07bGV0IFg9ITEsVz1bXSxHPUoucmVkdWNlKChWLEIseik9PntpZigvWz8jXS8udGVzdChCKSlYPSEwO2xldCBOPVlbel0sdz0oWD9lbmNvZGVVUklDb21wb25lbnQ6JCkoXCJcIitOKTtpZih6IT09WS5sZW5ndGgmJihOPT1udWxsfHx0eXBlb2YgTj09PVwib2JqZWN0XCImJk4udG9TdHJpbmc9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKE4uaGFzT3duUHJvcGVydHk/P3p3KT8/encpPy50b1N0cmluZykpdz1OK1wiXCIsVy5wdXNoKHtzdGFydDpWLmxlbmd0aCtCLmxlbmd0aCxsZW5ndGg6dy5sZW5ndGgsZXJyb3I6YFZhbHVlIG9mIHR5cGUgJHtPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTikuc2xpY2UoOCwtMSl9IGlzIG5vdCBhIHZhbGlkIHBhdGggcGFyYW1ldGVyYH0pO3JldHVybiBWK0IrKHo9PT1ZLmxlbmd0aD9cIlwiOncpfSxcIlwiKSxVPUcuc3BsaXQoL1s/I10vLDEpWzBdLEg9Lyg/PD1efFxcLykoPzpcXC58JTJlKXsxLDJ9KD89XFwvfCQpL2dpLHE7d2hpbGUoKHE9SC5leGVjKFUpKSE9PW51bGwpVy5wdXNoKHtzdGFydDpxLmluZGV4LGxlbmd0aDpxWzBdLmxlbmd0aCxlcnJvcjpgVmFsdWUgXCIke3FbMF19XCIgY2FuJ3QgYmUgc2FmZWx5IHBhc3NlZCBhcyBhIHBhdGggcGFyYW1ldGVyYH0pO2lmKFcuc29ydCgoVixCKT0+Vi5zdGFydC1CLnN0YXJ0KSxXLmxlbmd0aD4wKXtsZXQgVj0wLEI9Vy5yZWR1Y2UoKHosTik9PntsZXQgdz1cIiBcIi5yZXBlYXQoTi5zdGFydC1WKSxPPVwiXlwiLnJlcGVhdChOLmxlbmd0aCk7cmV0dXJuIFY9Ti5zdGFydCtOLmxlbmd0aCx6K3crT30sXCJcIik7dGhyb3cgbmV3IGcoYFBhdGggcGFyYW1ldGVycyByZXN1bHQgaW4gcGF0aCB3aXRoIGludmFsaWQgc2VnbWVudHM6XG4ke1cubWFwKCh6KT0+ei5lcnJvcikuam9pbihgXG5gKX1cbiR7R31cbiR7Qn1gKX1yZXR1cm4gR30sVD1RdihOdyk7Y2xhc3MgSjcgZXh0ZW5kcyB0e2NyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL2Vudmlyb25tZW50cz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9lbnZpcm9ubWVudHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwZGF0ZSgkLFEsSil7bGV0e2JldGFzOlksLi4uWH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvZW52aXJvbm1lbnRzLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9lbnZpcm9ubWVudHM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9lbnZpcm9ubWVudHMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWFyY2hpdmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvZW52aXJvbm1lbnRzLyR7JH0vYXJjaGl2ZT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX12YXIgWDc9U3ltYm9sKFwiYW50aHJvcGljLnNkay5zdGFpbmxlc3NIZWxwZXJcIik7ZnVuY3Rpb24gQ1goJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJlg3IGluICR9ZnVuY3Rpb24gbkcoJCxRKXtsZXQgSj1uZXcgU2V0O2lmKCQpe2ZvcihsZXQgWSBvZiAkKWlmKENYKFkpKUouYWRkKFlbWDddKX1pZihRKWZvcihsZXQgWSBvZiBRKXtpZihDWChZKSlKLmFkZChZW1g3XSk7aWYoQXJyYXkuaXNBcnJheShZLmNvbnRlbnQpKXtmb3IobGV0IFggb2YgWS5jb250ZW50KWlmKENYKFgpKUouYWRkKFhbWDddKX19cmV0dXJuIEFycmF5LmZyb20oSil9ZnVuY3Rpb24gVFgoJCxRKXtsZXQgSj1uRygkLFEpO2lmKEoubGVuZ3RoPT09MClyZXR1cm57fTtyZXR1cm57XCJ4LXN0YWlubGVzcy1oZWxwZXJcIjpKLmpvaW4oXCIsIFwiKX19ZnVuY3Rpb24gd3coJCl7aWYoQ1goJCkpcmV0dXJue1wieC1zdGFpbmxlc3MtaGVscGVyXCI6JFtYN119O3JldHVybnt9fWNsYXNzIFk3IGV4dGVuZHMgdHtsaXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL2ZpbGVzP2JldGE9dHJ1ZVwiLEc0LHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcImZpbGVzLWFwaS0yMDI1LTA0LTE0XCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL2ZpbGVzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwiZmlsZXMtYXBpLTIwMjUtMDQtMTRcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9ZG93bmxvYWQoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9maWxlcy8keyR9L2NvbnRlbnQ/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwiZmlsZXMtYXBpLTIwMjUtMDQtMTRcIl0udG9TdHJpbmcoKSxBY2NlcHQ6XCJhcHBsaWNhdGlvbi9iaW5hcnlcIn0sSj8uaGVhZGVyc10pLF9fYmluYXJ5UmVzcG9uc2U6ITB9KX1yZXRyaWV2ZU1ldGFkYXRhKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvZmlsZXMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJmaWxlcy1hcGktMjAyNS0wNC0xNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGxvYWQoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9maWxlcz9iZXRhPXRydWVcIixVOCh7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcImZpbGVzLWFwaS0yMDI1LTA0LTE0XCJdLnRvU3RyaW5nKCl9LHd3KFkuZmlsZSksUT8uaGVhZGVyc10pfSx0aGlzLl9jbGllbnQpKX19Y2xhc3MgVzcgZXh0ZW5kcyB0e3JldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvbW9kZWxzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3suLi5ZPy50b1N0cmluZygpIT1udWxsP3tcImFudGhyb3BpYy1iZXRhXCI6WT8udG9TdHJpbmcoKX06dm9pZCAwfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL21vZGVscz9iZXRhPXRydWVcIixHNCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbey4uLko/LnRvU3RyaW5nKCkhPW51bGw/e1wiYW50aHJvcGljLWJldGFcIjpKPy50b1N0cmluZygpfTp2b2lkIDB9LFE/LmhlYWRlcnNdKX0pfX1jbGFzcyBHNyBleHRlbmRzIHR7Y3JlYXRlKCQsUSl7bGV0e2JldGFzOkosLi4uWX09JDtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoXCIvdjEvdXNlcl9wcm9maWxlcz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcInVzZXItcHJvZmlsZXMtMjAyNi0wMy0yNFwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1yZXRyaWV2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL3VzZXJfcHJvZmlsZXMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJ1c2VyLXByb2ZpbGVzLTIwMjYtMDMtMjRcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS91c2VyX3Byb2ZpbGVzLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInVzZXItcHJvZmlsZXMtMjAyNi0wMy0yNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL3VzZXJfcHJvZmlsZXM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwidXNlci1wcm9maWxlcy0yMDI2LTAzLTI0XCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfWNyZWF0ZUVucm9sbG1lbnRVUkwoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdXNlcl9wcm9maWxlcy8keyR9L2Vucm9sbG1lbnRfdXJsP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInVzZXItcHJvZmlsZXMtMjAyNi0wMy0yNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgVTcgZXh0ZW5kcyB0e2xpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS9hZ2VudHMvJHskfS92ZXJzaW9ucz9iZXRhPXRydWVgLEQkLHtxdWVyeTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fWNsYXNzIEg4IGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy52ZXJzaW9ucz1uZXcgVTcodGhpcy5fY2xpZW50KX1jcmVhdGUoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9hZ2VudHM/YmV0YT10cnVlXCIse2JvZHk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9hZ2VudHMvJHskfT9iZXRhPXRydWVgLHtxdWVyeTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9hZ2VudHMvJHskfT9iZXRhPXRydWVgLHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL2FnZW50cz9iZXRhPXRydWVcIixEJCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfWFyY2hpdmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvYWdlbnRzLyR7JH0vYXJjaGl2ZT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1IOC5WZXJzaW9ucz1VNztjbGFzcyBINyBleHRlbmRzIHR7Y3JlYXRlKCQsUSxKKXtsZXR7dmlldzpZLGJldGFzOlgsLi4uV309UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvbWVtb3J5X3N0b3Jlcy8keyR9L21lbW9yaWVzP2JldGE9dHJ1ZWAse3F1ZXJ5Ont2aWV3Oll9LGJvZHk6VywuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUSxKKXtsZXR7bWVtb3J5X3N0b3JlX2lkOlksYmV0YXM6WCwuLi5XfT1RO3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL21lbW9yeV9zdG9yZXMvJHtZfS9tZW1vcmllcy8keyR9P2JldGE9dHJ1ZWAse3F1ZXJ5OlcsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHttZW1vcnlfc3RvcmVfaWQ6WSx2aWV3OlgsYmV0YXM6VywuLi5HfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7WX0vbWVtb3JpZXMvJHskfT9iZXRhPXRydWVgLHtxdWVyeTp7dmlldzpYfSxib2R5OkcsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlc/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoVGAvdjEvbWVtb3J5X3N0b3Jlcy8keyR9L21lbW9yaWVzP2JldGE9dHJ1ZWAsRCQse3F1ZXJ5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRLEope2xldHttZW1vcnlfc3RvcmVfaWQ6WSxleHBlY3RlZF9jb250ZW50X3NoYTI1NjpYLGJldGFzOld9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvbWVtb3J5X3N0b3Jlcy8ke1l9L21lbW9yaWVzLyR7JH0/YmV0YT10cnVlYCx7cXVlcnk6e2V4cGVjdGVkX2NvbnRlbnRfc2hhMjU2Olh9LC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5XPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fWNsYXNzIEs3IGV4dGVuZHMgdHtyZXRyaWV2ZSgkLFEsSil7bGV0e21lbW9yeV9zdG9yZV9pZDpZLGJldGFzOlgsLi4uV309UTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9tZW1vcnlfc3RvcmVzLyR7WX0vbWVtb3J5X3ZlcnNpb25zLyR7JH0/YmV0YT10cnVlYCx7cXVlcnk6VywuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJCxRPXt9LEope2xldHtiZXRhczpZLC4uLlh9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0vbWVtb3J5X3ZlcnNpb25zP2JldGE9dHJ1ZWAsRCQse3F1ZXJ5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1yZWRhY3QoJCxRLEope2xldHttZW1vcnlfc3RvcmVfaWQ6WSxiZXRhczpYfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7WX0vbWVtb3J5X3ZlcnNpb25zLyR7JH0vcmVkYWN0P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fWNsYXNzIFkwIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5tZW1vcmllcz1uZXcgSDcodGhpcy5fY2xpZW50KSx0aGlzLm1lbW9yeVZlcnNpb25zPW5ldyBLNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lbW9yeV9zdG9yZXM/YmV0YT10cnVlXCIse2JvZHk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvbWVtb3J5X3N0b3Jlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9tZW1vcnlfc3RvcmVzP2JldGE9dHJ1ZVwiLEQkLHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvbWVtb3J5X3N0b3Jlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YXJjaGl2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZW1vcnlfc3RvcmVzLyR7JH0vYXJjaGl2ZT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfX1ZMC5NZW1vcmllcz1INztZMC5NZW1vcnlWZXJzaW9ucz1LNztjbGFzcyBLOHtjb25zdHJ1Y3RvcigkLFEpe3RoaXMuaXRlcmF0b3I9JCx0aGlzLmNvbnRyb2xsZXI9UX1hc3luYypkZWNvZGVyKCl7bGV0ICQ9bmV3IHoxO2ZvciBhd2FpdChsZXQgUSBvZiB0aGlzLml0ZXJhdG9yKWZvcihsZXQgSiBvZiAkLmRlY29kZShRKSl5aWVsZCBKU09OLnBhcnNlKEopO2ZvcihsZXQgUSBvZiAkLmZsdXNoKCkpeWllbGQgSlNPTi5wYXJzZShRKX1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZGVjb2RlcigpfXN0YXRpYyBmcm9tUmVzcG9uc2UoJCxRKXtpZighJC5ib2R5KXtpZihRLmFib3J0KCksdHlwZW9mIGdsb2JhbFRoaXMubmF2aWdhdG9yPFwidVwiJiZnbG9iYWxUaGlzLm5hdmlnYXRvci5wcm9kdWN0PT09XCJSZWFjdE5hdGl2ZVwiKXRocm93IG5ldyBnKFwiVGhlIGRlZmF1bHQgcmVhY3QtbmF0aXZlIGZldGNoIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLiBQbGVhc2UgdXNlIGV4cG8vZmV0Y2g6IGh0dHBzOi8vZG9jcy5leHBvLmRldi92ZXJzaW9ucy9sYXRlc3Qvc2RrL2V4cG8vI2V4cG9mZXRjaC1hcGlcIik7dGhyb3cgbmV3IGcoXCJBdHRlbXB0ZWQgdG8gaXRlcmF0ZSBvdmVyIGEgcmVzcG9uc2Ugd2l0aCBubyBib2R5XCIpfXJldHVybiBuZXcgSzgoYTkoJC5ib2R5KSxRKX19Y2xhc3MgcTcgZXh0ZW5kcyB0e2NyZWF0ZSgkLFEpe2xldHtiZXRhczpKLC4uLll9PSQ7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzL2JhdGNoZXM/YmV0YT10cnVlXCIse2JvZHk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtZXNzYWdlLWJhdGNoZXMtMjAyNC0wOS0yNFwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1yZXRyaWV2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL21lc3NhZ2VzL2JhdGNoZXMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtZXNzYWdlLWJhdGNoZXMtMjAyNC0wOS0yNFwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQ9e30sUSl7bGV0e2JldGFzOkosLi4uWX09JD8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFwiL3YxL21lc3NhZ2VzL2JhdGNoZXM/YmV0YT10cnVlXCIsRzQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWVzc2FnZS1iYXRjaGVzLTIwMjQtMDktMjRcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvbWVzc2FnZXMvYmF0Y2hlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1lc3NhZ2UtYmF0Y2hlcy0yMDI0LTA5LTI0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWNhbmNlbCgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9tZXNzYWdlcy9iYXRjaGVzLyR7JH0vY2FuY2VsP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1lc3NhZ2UtYmF0Y2hlcy0yMDI0LTA5LTI0XCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWFzeW5jIHJlc3VsdHMoJCxRPXt9LEope2xldCBZPWF3YWl0IHRoaXMucmV0cmlldmUoJCk7aWYoIVkucmVzdWx0c191cmwpdGhyb3cgbmV3IGcoYE5vIGJhdGNoIFxcYHJlc3VsdHNfdXJsXFxgOyBIYXMgaXQgZmluaXNoZWQgcHJvY2Vzc2luZz8gJHtZLnByb2Nlc3Npbmdfc3RhdHVzfSAtICR7WS5pZH1gKTtsZXR7YmV0YXM6WH09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoWS5yZXN1bHRzX3VybCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWVzc2FnZS1iYXRjaGVzLTIwMjQtMDktMjRcIl0udG9TdHJpbmcoKSxBY2NlcHQ6XCJhcHBsaWNhdGlvbi9iaW5hcnlcIn0sSj8uaGVhZGVyc10pLHN0cmVhbTohMCxfX2JpbmFyeVJlc3BvbnNlOiEwfSkuX3RoZW5VbndyYXAoKFcsRyk9Pks4LmZyb21SZXNwb25zZShHLnJlc3BvbnNlLEcuY29udHJvbGxlcikpfX12YXIgeFg9e1wiY2xhdWRlLW9wdXMtNC0yMDI1MDUxNFwiOjgxOTIsXCJjbGF1ZGUtb3B1cy00LTBcIjo4MTkyLFwiY2xhdWRlLTQtb3B1cy0yMDI1MDUxNFwiOjgxOTIsXCJhbnRocm9waWMuY2xhdWRlLW9wdXMtNC0yMDI1MDUxNC12MTowXCI6ODE5MixcImNsYXVkZS1vcHVzLTRAMjAyNTA1MTRcIjo4MTkyLFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6ODE5MixcImFudGhyb3BpYy5jbGF1ZGUtb3B1cy00LTEtMjAyNTA4MDUtdjE6MFwiOjgxOTIsXCJjbGF1ZGUtb3B1cy00LTFAMjAyNTA4MDVcIjo4MTkyfTtmdW5jdGlvbiBPdygkKXtyZXR1cm4gJD8ub3V0cHV0X2Zvcm1hdD8/JD8ub3V0cHV0X2NvbmZpZz8uZm9ybWF0fWZ1bmN0aW9uIHJHKCQsUSxKKXtsZXQgWT1PdyhRKTtpZighUXx8IShcInBhcnNlXCJpbihZPz97fSkpKXJldHVybnsuLi4kLGNvbnRlbnQ6JC5jb250ZW50Lm1hcCgoWCk9PntpZihYLnR5cGU9PT1cInRleHRcIil7bGV0IFc9T2JqZWN0LmRlZmluZVByb3BlcnR5KHsuLi5YfSxcInBhcnNlZF9vdXRwdXRcIix7dmFsdWU6bnVsbCxlbnVtZXJhYmxlOiExfSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLFwicGFyc2VkXCIse2dldCgpe3JldHVybiBKLmxvZ2dlci53YXJuKFwiVGhlIGBwYXJzZWRgIHByb3BlcnR5IG9uIGB0ZXh0YCBibG9ja3MgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBgcGFyc2VkX291dHB1dGAgaW5zdGVhZC5cIiksbnVsbH0sZW51bWVyYWJsZTohMX0pfXJldHVybiBYfSkscGFyc2VkX291dHB1dDpudWxsfTtyZXR1cm4gb0coJCxRLEopfWZ1bmN0aW9uIG9HKCQsUSxKKXtsZXQgWT1udWxsLFg9JC5jb250ZW50Lm1hcCgoVyk9PntpZihXLnR5cGU9PT1cInRleHRcIil7bGV0IEc9QnYoUSxXLnRleHQpO2lmKFk9PT1udWxsKVk9RztsZXQgVT1PYmplY3QuZGVmaW5lUHJvcGVydHkoey4uLld9LFwicGFyc2VkX291dHB1dFwiLHt2YWx1ZTpHLGVudW1lcmFibGU6ITF9KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFUsXCJwYXJzZWRcIix7Z2V0KCl7cmV0dXJuIEoubG9nZ2VyLndhcm4oXCJUaGUgYHBhcnNlZGAgcHJvcGVydHkgb24gYHRleHRgIGJsb2NrcyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGBwYXJzZWRfb3V0cHV0YCBpbnN0ZWFkLlwiKSxHfSxlbnVtZXJhYmxlOiExfSl9cmV0dXJuIFd9KTtyZXR1cm57Li4uJCxjb250ZW50OlgscGFyc2VkX291dHB1dDpZfX1mdW5jdGlvbiBCdigkLFEpe2xldCBKPU93KCQpO2lmKEo/LnR5cGUhPT1cImpzb25fc2NoZW1hXCIpcmV0dXJuIG51bGw7dHJ5e2lmKFwicGFyc2VcImluIEopcmV0dXJuIEoucGFyc2UoUSk7cmV0dXJuIEpTT04ucGFyc2UoUSl9Y2F0Y2goWSl7dGhyb3cgbmV3IGcoYEZhaWxlZCB0byBwYXJzZSBzdHJ1Y3R1cmVkIG91dHB1dDogJHtZfWApfX12YXIgenY9KCQpPT57bGV0IFE9MCxKPVtdO3doaWxlKFE8JC5sZW5ndGgpe2xldCBZPSRbUV07aWYoWT09PVwiXFxcXFwiKXtRKys7Y29udGludWV9aWYoWT09PVwie1wiKXtKLnB1c2goe3R5cGU6XCJicmFjZVwiLHZhbHVlOlwie1wifSksUSsrO2NvbnRpbnVlfWlmKFk9PT1cIn1cIil7Si5wdXNoKHt0eXBlOlwiYnJhY2VcIix2YWx1ZTpcIn1cIn0pLFErKztjb250aW51ZX1pZihZPT09XCJbXCIpe0oucHVzaCh7dHlwZTpcInBhcmVuXCIsdmFsdWU6XCJbXCJ9KSxRKys7Y29udGludWV9aWYoWT09PVwiXVwiKXtKLnB1c2goe3R5cGU6XCJwYXJlblwiLHZhbHVlOlwiXVwifSksUSsrO2NvbnRpbnVlfWlmKFk9PT1cIjpcIil7Si5wdXNoKHt0eXBlOlwic2VwYXJhdG9yXCIsdmFsdWU6XCI6XCJ9KSxRKys7Y29udGludWV9aWYoWT09PVwiLFwiKXtKLnB1c2goe3R5cGU6XCJkZWxpbWl0ZXJcIix2YWx1ZTpcIixcIn0pLFErKztjb250aW51ZX1pZihZPT09J1wiJyl7bGV0IFU9XCJcIixIPSExO1k9JFsrK1FdO3doaWxlKFkhPT0nXCInKXtpZihRPT09JC5sZW5ndGgpe0g9ITA7YnJlYWt9aWYoWT09PVwiXFxcXFwiKXtpZihRKyssUT09PSQubGVuZ3RoKXtIPSEwO2JyZWFrfVUrPVkrJFtRXSxZPSRbKytRXX1lbHNlIFUrPVksWT0kWysrUV19aWYoWT0kWysrUV0sIUgpSi5wdXNoKHt0eXBlOlwic3RyaW5nXCIsdmFsdWU6VX0pO2NvbnRpbnVlfWlmKFkmJi9cXHMvLnRlc3QoWSkpe1ErKztjb250aW51ZX1sZXQgVz0vWzAtOV0vO2lmKFkmJlcudGVzdChZKXx8WT09PVwiLVwifHxZPT09XCIuXCIpe2xldCBVPVwiXCI7aWYoWT09PVwiLVwiKVUrPVksWT0kWysrUV07d2hpbGUoWSYmVy50ZXN0KFkpfHxZPT09XCIuXCIpVSs9WSxZPSRbKytRXTtKLnB1c2goe3R5cGU6XCJudW1iZXJcIix2YWx1ZTpVfSk7Y29udGludWV9bGV0IEc9L1thLXpdL2k7aWYoWSYmRy50ZXN0KFkpKXtsZXQgVT1cIlwiO3doaWxlKFkmJkcudGVzdChZKSl7aWYoUT09PSQubGVuZ3RoKWJyZWFrO1UrPVksWT0kWysrUV19aWYoVT09XCJ0cnVlXCJ8fFU9PVwiZmFsc2VcInx8VT09PVwibnVsbFwiKUoucHVzaCh7dHlwZTpcIm5hbWVcIix2YWx1ZTpVfSk7ZWxzZXtRKys7Y29udGludWV9Y29udGludWV9USsrfXJldHVybiBKfSxxOD0oJCk9PntpZigkLmxlbmd0aD09PTApcmV0dXJuICQ7bGV0IFE9JFskLmxlbmd0aC0xXTtzd2l0Y2goUS50eXBlKXtjYXNlXCJzZXBhcmF0b3JcIjpyZXR1cm4gJD0kLnNsaWNlKDAsJC5sZW5ndGgtMSkscTgoJCk7YnJlYWs7Y2FzZVwibnVtYmVyXCI6bGV0IEo9US52YWx1ZVtRLnZhbHVlLmxlbmd0aC0xXTtpZihKPT09XCIuXCJ8fEo9PT1cIi1cIilyZXR1cm4gJD0kLnNsaWNlKDAsJC5sZW5ndGgtMSkscTgoJCk7Y2FzZVwic3RyaW5nXCI6bGV0IFk9JFskLmxlbmd0aC0yXTtpZihZPy50eXBlPT09XCJkZWxpbWl0ZXJcIilyZXR1cm4gJD0kLnNsaWNlKDAsJC5sZW5ndGgtMSkscTgoJCk7ZWxzZSBpZihZPy50eXBlPT09XCJicmFjZVwiJiZZLnZhbHVlPT09XCJ7XCIpcmV0dXJuICQ9JC5zbGljZSgwLCQubGVuZ3RoLTEpLHE4KCQpO2JyZWFrO2Nhc2VcImRlbGltaXRlclwiOnJldHVybiAkPSQuc2xpY2UoMCwkLmxlbmd0aC0xKSxxOCgkKTticmVha31yZXR1cm4gJH0sTnY9KCQpPT57bGV0IFE9W107aWYoJC5tYXAoKEopPT57aWYoSi50eXBlPT09XCJicmFjZVwiKWlmKEoudmFsdWU9PT1cIntcIilRLnB1c2goXCJ9XCIpO2Vsc2UgUS5zcGxpY2UoUS5sYXN0SW5kZXhPZihcIn1cIiksMSk7aWYoSi50eXBlPT09XCJwYXJlblwiKWlmKEoudmFsdWU9PT1cIltcIilRLnB1c2goXCJdXCIpO2Vsc2UgUS5zcGxpY2UoUS5sYXN0SW5kZXhPZihcIl1cIiksMSl9KSxRLmxlbmd0aD4wKVEucmV2ZXJzZSgpLm1hcCgoSik9PntpZihKPT09XCJ9XCIpJC5wdXNoKHt0eXBlOlwiYnJhY2VcIix2YWx1ZTpcIn1cIn0pO2Vsc2UgaWYoSj09PVwiXVwiKSQucHVzaCh7dHlwZTpcInBhcmVuXCIsdmFsdWU6XCJdXCJ9KX0pO3JldHVybiAkfSx3dj0oJCk9PntsZXQgUT1cIlwiO3JldHVybiAkLm1hcCgoSik9Pntzd2l0Y2goSi50eXBlKXtjYXNlXCJzdHJpbmdcIjpRKz0nXCInK0oudmFsdWUrJ1wiJzticmVhaztkZWZhdWx0OlErPUoudmFsdWU7YnJlYWt9fSksUX0sZlg9KCQpPT5KU09OLnBhcnNlKHd2KE52KHE4KHp2KCQpKSkpKTt2YXIgaTYsTjEsVjgsVjcseVgsQjcsejcsZ1gsTjcsZzQsdzcsaFgsdVgsVzAsbVgsbFgsTzcsdEcsRHcsY1gsYUcsc0csZUcsRncsWnc9XCJfX2pzb25fYnVmXCI7ZnVuY3Rpb24gTXcoJCl7cmV0dXJuICQudHlwZT09PVwidG9vbF91c2VcInx8JC50eXBlPT09XCJzZXJ2ZXJfdG9vbF91c2VcInx8JC50eXBlPT09XCJtY3BfdG9vbF91c2VcIn1jbGFzcyBEN3tjb25zdHJ1Y3RvcigkLFEpe2k2LmFkZCh0aGlzKSx0aGlzLm1lc3NhZ2VzPVtdLHRoaXMucmVjZWl2ZWRNZXNzYWdlcz1bXSxOMS5zZXQodGhpcyx2b2lkIDApLFY4LnNldCh0aGlzLG51bGwpLHRoaXMuY29udHJvbGxlcj1uZXcgQWJvcnRDb250cm9sbGVyLFY3LnNldCh0aGlzLHZvaWQgMCkseVguc2V0KHRoaXMsKCk9Pnt9KSxCNy5zZXQodGhpcywoKT0+e30pLHo3LnNldCh0aGlzLHZvaWQgMCksZ1guc2V0KHRoaXMsKCk9Pnt9KSxONy5zZXQodGhpcywoKT0+e30pLGc0LnNldCh0aGlzLHt9KSx3Ny5zZXQodGhpcywhMSksaFguc2V0KHRoaXMsITEpLHVYLnNldCh0aGlzLCExKSxXMC5zZXQodGhpcywhMSksbVguc2V0KHRoaXMsdm9pZCAwKSxsWC5zZXQodGhpcyx2b2lkIDApLE83LnNldCh0aGlzLHZvaWQgMCksY1guc2V0KHRoaXMsKEopPT57aWYoZih0aGlzLGhYLCEwLFwiZlwiKSxmNChKKSlKPW5ldyBRNjtpZihKIGluc3RhbmNlb2YgUTYpcmV0dXJuIGYodGhpcyx1WCwhMCxcImZcIiksdGhpcy5fZW1pdChcImFib3J0XCIsSik7aWYoSiBpbnN0YW5jZW9mIGcpcmV0dXJuIHRoaXMuX2VtaXQoXCJlcnJvclwiLEopO2lmKEogaW5zdGFuY2VvZiBFcnJvcil7bGV0IFk9bmV3IGcoSi5tZXNzYWdlKTtyZXR1cm4gWS5jYXVzZT1KLHRoaXMuX2VtaXQoXCJlcnJvclwiLFkpfXJldHVybiB0aGlzLl9lbWl0KFwiZXJyb3JcIixuZXcgZyhTdHJpbmcoSikpKX0pLGYodGhpcyxWNyxuZXcgUHJvbWlzZSgoSixZKT0+e2YodGhpcyx5WCxKLFwiZlwiKSxmKHRoaXMsQjcsWSxcImZcIil9KSxcImZcIiksZih0aGlzLHo3LG5ldyBQcm9taXNlKChKLFkpPT57Zih0aGlzLGdYLEosXCJmXCIpLGYodGhpcyxONyxZLFwiZlwiKX0pLFwiZlwiKSxaKHRoaXMsVjcsXCJmXCIpLmNhdGNoKCgpPT57fSksWih0aGlzLHo3LFwiZlwiKS5jYXRjaCgoKT0+e30pLGYodGhpcyxWOCwkLFwiZlwiKSxmKHRoaXMsTzcsUT8ubG9nZ2VyPz9jb25zb2xlLFwiZlwiKX1nZXQgcmVzcG9uc2UoKXtyZXR1cm4gWih0aGlzLG1YLFwiZlwiKX1nZXQgcmVxdWVzdF9pZCgpe3JldHVybiBaKHRoaXMsbFgsXCJmXCIpfWFzeW5jIHdpdGhSZXNwb25zZSgpe2YodGhpcyxXMCwhMCxcImZcIik7bGV0ICQ9YXdhaXQgWih0aGlzLFY3LFwiZlwiKTtpZighJCl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCByZXNvbHZlIGEgYFJlc3BvbnNlYCBvYmplY3RcIik7cmV0dXJue2RhdGE6dGhpcyxyZXNwb25zZTokLHJlcXVlc3RfaWQ6JC5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIil9fXN0YXRpYyBmcm9tUmVhZGFibGVTdHJlYW0oJCl7bGV0IFE9bmV3IEQ3KG51bGwpO3JldHVybiBRLl9ydW4oKCk9PlEuX2Zyb21SZWFkYWJsZVN0cmVhbSgkKSksUX1zdGF0aWMgY3JlYXRlTWVzc2FnZSgkLFEsSix7bG9nZ2VyOll9PXt9KXtsZXQgWD1uZXcgRDcoUSx7bG9nZ2VyOll9KTtmb3IobGV0IFcgb2YgUS5tZXNzYWdlcylYLl9hZGRNZXNzYWdlUGFyYW0oVyk7cmV0dXJuIGYoWCxWOCx7Li4uUSxzdHJlYW06ITB9LFwiZlwiKSxYLl9ydW4oKCk9PlguX2NyZWF0ZU1lc3NhZ2UoJCx7Li4uUSxzdHJlYW06ITB9LHsuLi5KLGhlYWRlcnM6ey4uLko/LmhlYWRlcnMsXCJYLVN0YWlubGVzcy1IZWxwZXItTWV0aG9kXCI6XCJzdHJlYW1cIn19KSksWH1fcnVuKCQpeyQoKS50aGVuKCgpPT57dGhpcy5fZW1pdEZpbmFsKCksdGhpcy5fZW1pdChcImVuZFwiKX0sWih0aGlzLGNYLFwiZlwiKSl9X2FkZE1lc3NhZ2VQYXJhbSgkKXt0aGlzLm1lc3NhZ2VzLnB1c2goJCl9X2FkZE1lc3NhZ2UoJCxRPSEwKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMucHVzaCgkKSxRKXRoaXMuX2VtaXQoXCJtZXNzYWdlXCIsJCl9YXN5bmMgX2NyZWF0ZU1lc3NhZ2UoJCxRLEope2xldCBZPUo/LnNpZ25hbCxYO2lmKFkpe2lmKFkuYWJvcnRlZCl0aGlzLmNvbnRyb2xsZXIuYWJvcnQoKTtYPXRoaXMuY29udHJvbGxlci5hYm9ydC5iaW5kKHRoaXMuY29udHJvbGxlciksWS5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixYKX10cnl7Wih0aGlzLGk2LFwibVwiLGFHKS5jYWxsKHRoaXMpO2xldHtyZXNwb25zZTpXLGRhdGE6R309YXdhaXQgJC5jcmVhdGUoey4uLlEsc3RyZWFtOiEwfSx7Li4uSixzaWduYWw6dGhpcy5jb250cm9sbGVyLnNpZ25hbH0pLndpdGhSZXNwb25zZSgpO3RoaXMuX2Nvbm5lY3RlZChXKTtmb3IgYXdhaXQobGV0IFUgb2YgRylaKHRoaXMsaTYsXCJtXCIsc0cpLmNhbGwodGhpcyxVKTtpZihHLmNvbnRyb2xsZXIuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtaKHRoaXMsaTYsXCJtXCIsZUcpLmNhbGwodGhpcyl9ZmluYWxseXtpZihZJiZYKVkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWCl9fV9jb25uZWN0ZWQoJCl7aWYodGhpcy5lbmRlZClyZXR1cm47Zih0aGlzLG1YLCQsXCJmXCIpLGYodGhpcyxsWCwkPy5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIiksXCJmXCIpLFoodGhpcyx5WCxcImZcIikuY2FsbCh0aGlzLCQpLHRoaXMuX2VtaXQoXCJjb25uZWN0XCIpfWdldCBlbmRlZCgpe3JldHVybiBaKHRoaXMsdzcsXCJmXCIpfWdldCBlcnJvcmVkKCl7cmV0dXJuIFoodGhpcyxoWCxcImZcIil9Z2V0IGFib3J0ZWQoKXtyZXR1cm4gWih0aGlzLHVYLFwiZlwiKX1hYm9ydCgpe3RoaXMuY29udHJvbGxlci5hYm9ydCgpfW9uKCQsUSl7cmV0dXJuKFoodGhpcyxnNCxcImZcIilbJF18fChaKHRoaXMsZzQsXCJmXCIpWyRdPVtdKSkucHVzaCh7bGlzdGVuZXI6UX0pLHRoaXN9b2ZmKCQsUSl7bGV0IEo9Wih0aGlzLGc0LFwiZlwiKVskXTtpZighSilyZXR1cm4gdGhpcztsZXQgWT1KLmZpbmRJbmRleCgoWCk9PlgubGlzdGVuZXI9PT1RKTtpZihZPj0wKUouc3BsaWNlKFksMSk7cmV0dXJuIHRoaXN9b25jZSgkLFEpe3JldHVybihaKHRoaXMsZzQsXCJmXCIpWyRdfHwoWih0aGlzLGc0LFwiZlwiKVskXT1bXSkpLnB1c2goe2xpc3RlbmVyOlEsb25jZTohMH0pLHRoaXN9ZW1pdHRlZCgkKXtyZXR1cm4gbmV3IFByb21pc2UoKFEsSik9PntpZihmKHRoaXMsVzAsITAsXCJmXCIpLCQhPT1cImVycm9yXCIpdGhpcy5vbmNlKFwiZXJyb3JcIixKKTt0aGlzLm9uY2UoJCxRKX0pfWFzeW5jIGRvbmUoKXtmKHRoaXMsVzAsITAsXCJmXCIpLGF3YWl0IFoodGhpcyx6NyxcImZcIil9Z2V0IGN1cnJlbnRNZXNzYWdlKCl7cmV0dXJuIFoodGhpcyxOMSxcImZcIil9YXN5bmMgZmluYWxNZXNzYWdlKCl7cmV0dXJuIGF3YWl0IHRoaXMuZG9uZSgpLFoodGhpcyxpNixcIm1cIix0RykuY2FsbCh0aGlzKX1hc3luYyBmaW5hbFRleHQoKXtyZXR1cm4gYXdhaXQgdGhpcy5kb25lKCksWih0aGlzLGk2LFwibVwiLER3KS5jYWxsKHRoaXMpfV9lbWl0KCQsLi4uUSl7aWYoWih0aGlzLHc3LFwiZlwiKSlyZXR1cm47aWYoJD09PVwiZW5kXCIpZih0aGlzLHc3LCEwLFwiZlwiKSxaKHRoaXMsZ1gsXCJmXCIpLmNhbGwodGhpcyk7bGV0IEo9Wih0aGlzLGc0LFwiZlwiKVskXTtpZihKKVoodGhpcyxnNCxcImZcIilbJF09Si5maWx0ZXIoKFkpPT4hWS5vbmNlKSxKLmZvckVhY2goKHtsaXN0ZW5lcjpZfSk9PlkoLi4uUSkpO2lmKCQ9PT1cImFib3J0XCIpe2xldCBZPVFbMF07aWYoIVoodGhpcyxXMCxcImZcIikmJiFKPy5sZW5ndGgpUHJvbWlzZS5yZWplY3QoWSk7Wih0aGlzLEI3LFwiZlwiKS5jYWxsKHRoaXMsWSksWih0aGlzLE43LFwiZlwiKS5jYWxsKHRoaXMsWSksdGhpcy5fZW1pdChcImVuZFwiKTtyZXR1cm59aWYoJD09PVwiZXJyb3JcIil7bGV0IFk9UVswXTtpZighWih0aGlzLFcwLFwiZlwiKSYmIUo/Lmxlbmd0aClQcm9taXNlLnJlamVjdChZKTtaKHRoaXMsQjcsXCJmXCIpLmNhbGwodGhpcyxZKSxaKHRoaXMsTjcsXCJmXCIpLmNhbGwodGhpcyxZKSx0aGlzLl9lbWl0KFwiZW5kXCIpfX1fZW1pdEZpbmFsKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKSl0aGlzLl9lbWl0KFwiZmluYWxNZXNzYWdlXCIsWih0aGlzLGk2LFwibVwiLHRHKS5jYWxsKHRoaXMpKX1hc3luYyBfZnJvbVJlYWRhYmxlU3RyZWFtKCQsUSl7bGV0IEo9UT8uc2lnbmFsLFk7aWYoSil7aWYoSi5hYm9ydGVkKXRoaXMuY29udHJvbGxlci5hYm9ydCgpO1k9dGhpcy5jb250cm9sbGVyLmFib3J0LmJpbmQodGhpcy5jb250cm9sbGVyKSxKLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFkpfXRyeXtaKHRoaXMsaTYsXCJtXCIsYUcpLmNhbGwodGhpcyksdGhpcy5fY29ubmVjdGVkKG51bGwpO2xldCBYPUM2LmZyb21SZWFkYWJsZVN0cmVhbSgkLHRoaXMuY29udHJvbGxlcik7Zm9yIGF3YWl0KGxldCBXIG9mIFgpWih0aGlzLGk2LFwibVwiLHNHKS5jYWxsKHRoaXMsVyk7aWYoWC5jb250cm9sbGVyLnNpZ25hbD8uYWJvcnRlZCl0aHJvdyBuZXcgUTY7Wih0aGlzLGk2LFwibVwiLGVHKS5jYWxsKHRoaXMpfWZpbmFsbHl7aWYoSiYmWSlKLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFkpfX1bKE4xPW5ldyBXZWFrTWFwLFY4PW5ldyBXZWFrTWFwLFY3PW5ldyBXZWFrTWFwLHlYPW5ldyBXZWFrTWFwLEI3PW5ldyBXZWFrTWFwLHo3PW5ldyBXZWFrTWFwLGdYPW5ldyBXZWFrTWFwLE43PW5ldyBXZWFrTWFwLGc0PW5ldyBXZWFrTWFwLHc3PW5ldyBXZWFrTWFwLGhYPW5ldyBXZWFrTWFwLHVYPW5ldyBXZWFrTWFwLFcwPW5ldyBXZWFrTWFwLG1YPW5ldyBXZWFrTWFwLGxYPW5ldyBXZWFrTWFwLE83PW5ldyBXZWFrTWFwLGNYPW5ldyBXZWFrTWFwLGk2PW5ldyBXZWFrU2V0LHRHPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aD09PTApdGhyb3cgbmV3IGcoXCJzdHJlYW0gZW5kZWQgd2l0aG91dCBwcm9kdWNpbmcgYSBNZXNzYWdlIHdpdGggcm9sZT1hc3Npc3RhbnRcIik7cmV0dXJuIHRoaXMucmVjZWl2ZWRNZXNzYWdlcy5hdCgtMSl9LER3PWZ1bmN0aW9uKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aD09PTApdGhyb3cgbmV3IGcoXCJzdHJlYW0gZW5kZWQgd2l0aG91dCBwcm9kdWNpbmcgYSBNZXNzYWdlIHdpdGggcm9sZT1hc3Npc3RhbnRcIik7bGV0IFE9dGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKS5jb250ZW50LmZpbHRlcigoSik9PkoudHlwZT09PVwidGV4dFwiKS5tYXAoKEopPT5KLnRleHQpO2lmKFEubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIGNvbnRlbnQgYmxvY2sgd2l0aCB0eXBlPXRleHRcIik7cmV0dXJuIFEuam9pbihcIiBcIil9LGFHPWZ1bmN0aW9uKCl7aWYodGhpcy5lbmRlZClyZXR1cm47Zih0aGlzLE4xLHZvaWQgMCxcImZcIil9LHNHPWZ1bmN0aW9uKFEpe2lmKHRoaXMuZW5kZWQpcmV0dXJuO2xldCBKPVoodGhpcyxpNixcIm1cIixGdykuY2FsbCh0aGlzLFEpO3N3aXRjaCh0aGlzLl9lbWl0KFwic3RyZWFtRXZlbnRcIixRLEopLFEudHlwZSl7Y2FzZVwiY29udGVudF9ibG9ja19kZWx0YVwiOntsZXQgWT1KLmNvbnRlbnQuYXQoLTEpO3N3aXRjaChRLmRlbHRhLnR5cGUpe2Nhc2VcInRleHRfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0ZXh0XCIpdGhpcy5fZW1pdChcInRleHRcIixRLmRlbHRhLnRleHQsWS50ZXh0fHxcIlwiKTticmVha31jYXNlXCJjaXRhdGlvbnNfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0ZXh0XCIpdGhpcy5fZW1pdChcImNpdGF0aW9uXCIsUS5kZWx0YS5jaXRhdGlvbixZLmNpdGF0aW9ucz8/W10pO2JyZWFrfWNhc2VcImlucHV0X2pzb25fZGVsdGFcIjp7aWYoTXcoWSkmJlkuaW5wdXQpdGhpcy5fZW1pdChcImlucHV0SnNvblwiLFEuZGVsdGEucGFydGlhbF9qc29uLFkuaW5wdXQpO2JyZWFrfWNhc2VcInRoaW5raW5nX2RlbHRhXCI6e2lmKFkudHlwZT09PVwidGhpbmtpbmdcIil0aGlzLl9lbWl0KFwidGhpbmtpbmdcIixRLmRlbHRhLnRoaW5raW5nLFkudGhpbmtpbmcpO2JyZWFrfWNhc2VcInNpZ25hdHVyZV9kZWx0YVwiOntpZihZLnR5cGU9PT1cInRoaW5raW5nXCIpdGhpcy5fZW1pdChcInNpZ25hdHVyZVwiLFkuc2lnbmF0dXJlKTticmVha31jYXNlXCJjb21wYWN0aW9uX2RlbHRhXCI6e2lmKFkudHlwZT09PVwiY29tcGFjdGlvblwiJiZZLmNvbnRlbnQpdGhpcy5fZW1pdChcImNvbXBhY3Rpb25cIixZLmNvbnRlbnQpO2JyZWFrfWRlZmF1bHQ6THcoUS5kZWx0YSl9YnJlYWt9Y2FzZVwibWVzc2FnZV9zdG9wXCI6e3RoaXMuX2FkZE1lc3NhZ2VQYXJhbShKKSx0aGlzLl9hZGRNZXNzYWdlKHJHKEosWih0aGlzLFY4LFwiZlwiKSx7bG9nZ2VyOloodGhpcyxPNyxcImZcIil9KSwhMCk7YnJlYWt9Y2FzZVwiY29udGVudF9ibG9ja19zdG9wXCI6e3RoaXMuX2VtaXQoXCJjb250ZW50QmxvY2tcIixKLmNvbnRlbnQuYXQoLTEpKTticmVha31jYXNlXCJtZXNzYWdlX3N0YXJ0XCI6e2YodGhpcyxOMSxKLFwiZlwiKTticmVha31jYXNlXCJjb250ZW50X2Jsb2NrX3N0YXJ0XCI6Y2FzZVwibWVzc2FnZV9kZWx0YVwiOmJyZWFrfX0sZUc9ZnVuY3Rpb24oKXtpZih0aGlzLmVuZGVkKXRocm93IG5ldyBnKFwic3RyZWFtIGhhcyBlbmRlZCwgdGhpcyBzaG91bGRuJ3QgaGFwcGVuXCIpO2xldCBRPVoodGhpcyxOMSxcImZcIik7aWYoIVEpdGhyb3cgbmV3IGcoXCJyZXF1ZXN0IGVuZGVkIHdpdGhvdXQgc2VuZGluZyBhbnkgY2h1bmtzXCIpO3JldHVybiBmKHRoaXMsTjEsdm9pZCAwLFwiZlwiKSxyRyhRLFoodGhpcyxWOCxcImZcIikse2xvZ2dlcjpaKHRoaXMsTzcsXCJmXCIpfSl9LEZ3PWZ1bmN0aW9uKFEpe2xldCBKPVoodGhpcyxOMSxcImZcIik7aWYoUS50eXBlPT09XCJtZXNzYWdlX3N0YXJ0XCIpe2lmKEopdGhyb3cgbmV3IGcoYFVuZXhwZWN0ZWQgZXZlbnQgb3JkZXIsIGdvdCAke1EudHlwZX0gYmVmb3JlIHJlY2VpdmluZyBcIm1lc3NhZ2Vfc3RvcFwiYCk7cmV0dXJuIFEubWVzc2FnZX1pZighSil0aHJvdyBuZXcgZyhgVW5leHBlY3RlZCBldmVudCBvcmRlciwgZ290ICR7US50eXBlfSBiZWZvcmUgXCJtZXNzYWdlX3N0YXJ0XCJgKTtzd2l0Y2goUS50eXBlKXtjYXNlXCJtZXNzYWdlX3N0b3BcIjpyZXR1cm4gSjtjYXNlXCJtZXNzYWdlX2RlbHRhXCI6aWYoSi5jb250YWluZXI9US5kZWx0YS5jb250YWluZXIsSi5zdG9wX3JlYXNvbj1RLmRlbHRhLnN0b3BfcmVhc29uLEouc3RvcF9zZXF1ZW5jZT1RLmRlbHRhLnN0b3Bfc2VxdWVuY2UsSi51c2FnZS5vdXRwdXRfdG9rZW5zPVEudXNhZ2Uub3V0cHV0X3Rva2VucyxKLmNvbnRleHRfbWFuYWdlbWVudD1RLmNvbnRleHRfbWFuYWdlbWVudCxRLnVzYWdlLmlucHV0X3Rva2VucyE9bnVsbClKLnVzYWdlLmlucHV0X3Rva2Vucz1RLnVzYWdlLmlucHV0X3Rva2VucztpZihRLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucyE9bnVsbClKLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vucz1RLnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucztpZihRLnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zIT1udWxsKUoudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM9US51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucztpZihRLnVzYWdlLnNlcnZlcl90b29sX3VzZSE9bnVsbClKLnVzYWdlLnNlcnZlcl90b29sX3VzZT1RLnVzYWdlLnNlcnZlcl90b29sX3VzZTtpZihRLnVzYWdlLml0ZXJhdGlvbnMhPW51bGwpSi51c2FnZS5pdGVyYXRpb25zPVEudXNhZ2UuaXRlcmF0aW9ucztyZXR1cm4gSjtjYXNlXCJjb250ZW50X2Jsb2NrX3N0YXJ0XCI6cmV0dXJuIEouY29udGVudC5wdXNoKFEuY29udGVudF9ibG9jayksSjtjYXNlXCJjb250ZW50X2Jsb2NrX2RlbHRhXCI6e2xldCBZPUouY29udGVudC5hdChRLmluZGV4KTtzd2l0Y2goUS5kZWx0YS50eXBlKXtjYXNlXCJ0ZXh0X2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRleHRcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksdGV4dDooWS50ZXh0fHxcIlwiKStRLmRlbHRhLnRleHR9O2JyZWFrfWNhc2VcImNpdGF0aW9uc19kZWx0YVwiOntpZihZPy50eXBlPT09XCJ0ZXh0XCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLGNpdGF0aW9uczpbLi4uWS5jaXRhdGlvbnM/P1tdLFEuZGVsdGEuY2l0YXRpb25dfTticmVha31jYXNlXCJpbnB1dF9qc29uX2RlbHRhXCI6e2lmKFkmJk13KFkpKXtsZXQgWD1ZW1p3XXx8XCJcIjtYKz1RLmRlbHRhLnBhcnRpYWxfanNvbjtsZXQgVz17Li4uWX07aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KFcsWncse3ZhbHVlOlgsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMH0pLFgpdHJ5e1cuaW5wdXQ9ZlgoWCl9Y2F0Y2goRyl7bGV0IFU9bmV3IGcoYFVuYWJsZSB0byBwYXJzZSB0b29sIHBhcmFtZXRlciBKU09OIGZyb20gbW9kZWwuIFBsZWFzZSByZXRyeSB5b3VyIHJlcXVlc3Qgb3IgYWRqdXN0IHlvdXIgcHJvbXB0LiBFcnJvcjogJHtHfS4gSlNPTjogJHtYfWApO1oodGhpcyxjWCxcImZcIikuY2FsbCh0aGlzLFUpfUouY29udGVudFtRLmluZGV4XT1XfWJyZWFrfWNhc2VcInRoaW5raW5nX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRoaW5raW5nXCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLHRoaW5raW5nOlkudGhpbmtpbmcrUS5kZWx0YS50aGlua2luZ307YnJlYWt9Y2FzZVwic2lnbmF0dXJlX2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRoaW5raW5nXCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLHNpZ25hdHVyZTpRLmRlbHRhLnNpZ25hdHVyZX07YnJlYWt9Y2FzZVwiY29tcGFjdGlvbl9kZWx0YVwiOntpZihZPy50eXBlPT09XCJjb21wYWN0aW9uXCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLGNvbnRlbnQ6KFkuY29udGVudHx8XCJcIikrUS5kZWx0YS5jb250ZW50fTticmVha31kZWZhdWx0Okx3KFEuZGVsdGEpfXJldHVybiBKfWNhc2VcImNvbnRlbnRfYmxvY2tfc3RvcFwiOnJldHVybiBKfX0sU3ltYm9sLmFzeW5jSXRlcmF0b3IpXSgpe2xldCAkPVtdLFE9W10sSj0hMTtyZXR1cm4gdGhpcy5vbihcInN0cmVhbUV2ZW50XCIsKFkpPT57bGV0IFg9US5zaGlmdCgpO2lmKFgpWC5yZXNvbHZlKFkpO2Vsc2UgJC5wdXNoKFkpfSksdGhpcy5vbihcImVuZFwiLCgpPT57Sj0hMDtmb3IobGV0IFkgb2YgUSlZLnJlc29sdmUodm9pZCAwKTtRLmxlbmd0aD0wfSksdGhpcy5vbihcImFib3J0XCIsKFkpPT57Sj0hMDtmb3IobGV0IFggb2YgUSlYLnJlamVjdChZKTtRLmxlbmd0aD0wfSksdGhpcy5vbihcImVycm9yXCIsKFkpPT57Sj0hMDtmb3IobGV0IFggb2YgUSlYLnJlamVjdChZKTtRLmxlbmd0aD0wfSkse25leHQ6YXN5bmMoKT0+e2lmKCEkLmxlbmd0aCl7aWYoSilyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O3JldHVybiBuZXcgUHJvbWlzZSgoWCxXKT0+US5wdXNoKHtyZXNvbHZlOlgscmVqZWN0Old9KSkudGhlbigoWCk9Plg/e3ZhbHVlOlgsZG9uZTohMX06e3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9cmV0dXJue3ZhbHVlOiQuc2hpZnQoKSxkb25lOiExfX0scmV0dXJuOmFzeW5jKCk9PntyZXR1cm4gdGhpcy5hYm9ydCgpLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fX10b1JlYWRhYmxlU3RyZWFtKCl7cmV0dXJuIG5ldyBDNih0aGlzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXS5iaW5kKHRoaXMpLHRoaXMuY29udHJvbGxlcikudG9SZWFkYWJsZVN0cmVhbSgpfX1mdW5jdGlvbiBMdygkKXt9Y2xhc3MgQjggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcigkKXtsZXQgUT10eXBlb2YgJD09PVwic3RyaW5nXCI/JDokLm1hcCgoSik9PntpZihKLnR5cGU9PT1cInRleHRcIilyZXR1cm4gSi50ZXh0O3JldHVybmBbJHtKLnR5cGV9XWB9KS5qb2luKFwiIFwiKTtzdXBlcihRKTt0aGlzLm5hbWU9XCJUb29sRXJyb3JcIix0aGlzLmNvbnRlbnQ9JH19dmFyIGp3PTFlNSxBdz1gWW91IGhhdmUgYmVlbiB3b3JraW5nIG9uIHRoZSB0YXNrIGRlc2NyaWJlZCBhYm92ZSBidXQgaGF2ZSBub3QgeWV0IGNvbXBsZXRlZCBpdC4gV3JpdGUgYSBjb250aW51YXRpb24gc3VtbWFyeSB0aGF0IHdpbGwgYWxsb3cgeW91IChvciBhbm90aGVyIGluc3RhbmNlIG9mIHlvdXJzZWxmKSB0byByZXN1bWUgd29yayBlZmZpY2llbnRseSBpbiBhIGZ1dHVyZSBjb250ZXh0IHdpbmRvdyB3aGVyZSB0aGUgY29udmVyc2F0aW9uIGhpc3Rvcnkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoaXMgc3VtbWFyeS4gWW91ciBzdW1tYXJ5IHNob3VsZCBiZSBzdHJ1Y3R1cmVkLCBjb25jaXNlLCBhbmQgYWN0aW9uYWJsZS4gSW5jbHVkZTpcbjEuIFRhc2sgT3ZlcnZpZXdcblRoZSB1c2VyJ3MgY29yZSByZXF1ZXN0IGFuZCBzdWNjZXNzIGNyaXRlcmlhXG5BbnkgY2xhcmlmaWNhdGlvbnMgb3IgY29uc3RyYWludHMgdGhleSBzcGVjaWZpZWRcbjIuIEN1cnJlbnQgU3RhdGVcbldoYXQgaGFzIGJlZW4gY29tcGxldGVkIHNvIGZhclxuRmlsZXMgY3JlYXRlZCwgbW9kaWZpZWQsIG9yIGFuYWx5emVkICh3aXRoIHBhdGhzIGlmIHJlbGV2YW50KVxuS2V5IG91dHB1dHMgb3IgYXJ0aWZhY3RzIHByb2R1Y2VkXG4zLiBJbXBvcnRhbnQgRGlzY292ZXJpZXNcblRlY2huaWNhbCBjb25zdHJhaW50cyBvciByZXF1aXJlbWVudHMgdW5jb3ZlcmVkXG5EZWNpc2lvbnMgbWFkZSBhbmQgdGhlaXIgcmF0aW9uYWxlXG5FcnJvcnMgZW5jb3VudGVyZWQgYW5kIGhvdyB0aGV5IHdlcmUgcmVzb2x2ZWRcbldoYXQgYXBwcm9hY2hlcyB3ZXJlIHRyaWVkIHRoYXQgZGlkbid0IHdvcmsgKGFuZCB3aHkpXG40LiBOZXh0IFN0ZXBzXG5TcGVjaWZpYyBhY3Rpb25zIG5lZWRlZCB0byBjb21wbGV0ZSB0aGUgdGFza1xuQW55IGJsb2NrZXJzIG9yIG9wZW4gcXVlc3Rpb25zIHRvIHJlc29sdmVcblByaW9yaXR5IG9yZGVyIGlmIG11bHRpcGxlIHN0ZXBzIHJlbWFpblxuNS4gQ29udGV4dCB0byBQcmVzZXJ2ZVxuVXNlciBwcmVmZXJlbmNlcyBvciBzdHlsZSByZXF1aXJlbWVudHNcbkRvbWFpbi1zcGVjaWZpYyBkZXRhaWxzIHRoYXQgYXJlbid0IG9idmlvdXNcbkFueSBwcm9taXNlcyBtYWRlIHRvIHRoZSB1c2VyXG5CZSBjb25jaXNlIGJ1dCBjb21wbGV0ZVx1MjAxNGVyciBvbiB0aGUgc2lkZSBvZiBpbmNsdWRpbmcgaW5mb3JtYXRpb24gdGhhdCB3b3VsZCBwcmV2ZW50IGR1cGxpY2F0ZSB3b3JrIG9yIHJlcGVhdGVkIG1pc3Rha2VzLiBXcml0ZSBpbiBhIHdheSB0aGF0IGVuYWJsZXMgaW1tZWRpYXRlIHJlc3VtcHRpb24gb2YgdGhlIHRhc2suXG5XcmFwIHlvdXIgc3VtbWFyeSBpbiA8c3VtbWFyeT48L3N1bW1hcnk+IHRhZ3MuYDt2YXIgRjcsejgsRzAsciQsRjYsVDYsaDQsdzEsWjcsSXcsJFU7ZnVuY3Rpb24gUncoKXtsZXQgJCxRO3JldHVybntwcm9taXNlOm5ldyBQcm9taXNlKChZLFgpPT57JD1ZLFE9WH0pLHJlc29sdmU6JCxyZWplY3Q6UX19Y2xhc3MgTTd7Y29uc3RydWN0b3IoJCxRLEope0Y3LmFkZCh0aGlzKSx0aGlzLmNsaWVudD0kLHo4LnNldCh0aGlzLCExKSxHMC5zZXQodGhpcywhMSksciQuc2V0KHRoaXMsdm9pZCAwKSxGNi5zZXQodGhpcyx2b2lkIDApLFQ2LnNldCh0aGlzLHZvaWQgMCksaDQuc2V0KHRoaXMsdm9pZCAwKSx3MS5zZXQodGhpcyx2b2lkIDApLFo3LnNldCh0aGlzLDApLGYodGhpcyxyJCx7cGFyYW1zOnsuLi5RLG1lc3NhZ2VzOnN0cnVjdHVyZWRDbG9uZShRLm1lc3NhZ2VzKX19LFwiZlwiKTtsZXQgWD1bXCJCZXRhVG9vbFJ1bm5lclwiLC4uLm5HKFEudG9vbHMsUS5tZXNzYWdlcyldLmpvaW4oXCIsIFwiKTtpZihmKHRoaXMsRjYsey4uLkosaGVhZGVyczpSKFt7XCJ4LXN0YWlubGVzcy1oZWxwZXJcIjpYfSxKPy5oZWFkZXJzXSl9LFwiZlwiKSxmKHRoaXMsdzEsUncoKSxcImZcIiksUS5jb21wYWN0aW9uQ29udHJvbD8uZW5hYmxlZCljb25zb2xlLndhcm4oJ0FudGhyb3BpYzogVGhlIGBjb21wYWN0aW9uQ29udHJvbGAgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBVc2Ugc2VydmVyLXNpZGUgY29tcGFjdGlvbiBpbnN0ZWFkIGJ5IHBhc3NpbmcgYGVkaXRzOiBbeyB0eXBlOiBcImNvbXBhY3RfMjAyNjAxMTJcIiB9XWAgaW4gdGhlIHBhcmFtcyBwYXNzZWQgdG8gYHRvb2xSdW5uZXIoKWAuIFNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9idWlsZC13aXRoLWNsYXVkZS9jb21wYWN0aW9uJyl9YXN5bmMqWyh6OD1uZXcgV2Vha01hcCxHMD1uZXcgV2Vha01hcCxyJD1uZXcgV2Vha01hcCxGNj1uZXcgV2Vha01hcCxUNj1uZXcgV2Vha01hcCxoND1uZXcgV2Vha01hcCx3MT1uZXcgV2Vha01hcCxaNz1uZXcgV2Vha01hcCxGNz1uZXcgV2Vha1NldCxJdz1hc3luYyBmdW5jdGlvbigpe2xldCBRPVoodGhpcyxyJCxcImZcIikucGFyYW1zLmNvbXBhY3Rpb25Db250cm9sO2lmKCFRfHwhUS5lbmFibGVkKXJldHVybiExO2xldCBKPTA7aWYoWih0aGlzLFQ2LFwiZlwiKSE9PXZvaWQgMCl0cnl7bGV0IEg9YXdhaXQgWih0aGlzLFQ2LFwiZlwiKTtKPUgudXNhZ2UuaW5wdXRfdG9rZW5zKyhILnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vucz8/MCkrKEgudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM/PzApK0gudXNhZ2Uub3V0cHV0X3Rva2Vuc31jYXRjaHtyZXR1cm4hMX1sZXQgWT1RLmNvbnRleHRUb2tlblRocmVzaG9sZD8/anc7aWYoSjxZKXJldHVybiExO2xldCBYPVEubW9kZWw/P1oodGhpcyxyJCxcImZcIikucGFyYW1zLm1vZGVsLFc9US5zdW1tYXJ5UHJvbXB0Pz9BdyxHPVoodGhpcyxyJCxcImZcIikucGFyYW1zLm1lc3NhZ2VzO2lmKEdbRy5sZW5ndGgtMV0ucm9sZT09PVwiYXNzaXN0YW50XCIpe2xldCBIPUdbRy5sZW5ndGgtMV07aWYoQXJyYXkuaXNBcnJheShILmNvbnRlbnQpKXtsZXQgcT1ILmNvbnRlbnQuZmlsdGVyKChWKT0+Vi50eXBlIT09XCJ0b29sX3VzZVwiKTtpZihxLmxlbmd0aD09PTApRy5wb3AoKTtlbHNlIEguY29udGVudD1xfX1sZXQgVT1hd2FpdCB0aGlzLmNsaWVudC5iZXRhLm1lc3NhZ2VzLmNyZWF0ZSh7bW9kZWw6WCxtZXNzYWdlczpbLi4uRyx7cm9sZTpcInVzZXJcIixjb250ZW50Olt7dHlwZTpcInRleHRcIix0ZXh0Old9XX1dLG1heF90b2tlbnM6Wih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWF4X3Rva2Vuc30se3NpZ25hbDpaKHRoaXMsRjYsXCJmXCIpLnNpZ25hbCxoZWFkZXJzOlIoW1oodGhpcyxGNixcImZcIikuaGVhZGVycyx7XCJ4LXN0YWlubGVzcy1oZWxwZXJcIjpcImNvbXBhY3Rpb25cIn1dKX0pO2lmKFUuY29udGVudFswXT8udHlwZSE9PVwidGV4dFwiKXRocm93IG5ldyBnKFwiRXhwZWN0ZWQgdGV4dCByZXNwb25zZSBmb3IgY29tcGFjdGlvblwiKTtyZXR1cm4gWih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWVzc2FnZXM9W3tyb2xlOlwidXNlclwiLGNvbnRlbnQ6VS5jb250ZW50fV0sITB9LFN5bWJvbC5hc3luY0l0ZXJhdG9yKV0oKXt2YXIgJDtpZihaKHRoaXMsejgsXCJmXCIpKXRocm93IG5ldyBnKFwiQ2Fubm90IGl0ZXJhdGUgb3ZlciBhIGNvbnN1bWVkIHN0cmVhbVwiKTtmKHRoaXMsejgsITAsXCJmXCIpLGYodGhpcyxHMCwhMCxcImZcIiksZih0aGlzLGg0LHZvaWQgMCxcImZcIik7dHJ5e3doaWxlKCEwKXtsZXQgUTt0cnl7aWYoWih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWF4X2l0ZXJhdGlvbnMmJloodGhpcyxaNyxcImZcIik+PVoodGhpcyxyJCxcImZcIikucGFyYW1zLm1heF9pdGVyYXRpb25zKWJyZWFrO2YodGhpcyxHMCwhMSxcImZcIiksZih0aGlzLGg0LHZvaWQgMCxcImZcIiksZih0aGlzLFo3LCgkPVoodGhpcyxaNyxcImZcIiksJCsrLCQpLFwiZlwiKSxmKHRoaXMsVDYsdm9pZCAwLFwiZlwiKTtsZXR7bWF4X2l0ZXJhdGlvbnM6Sixjb21wYWN0aW9uQ29udHJvbDpZLC4uLlh9PVoodGhpcyxyJCxcImZcIikucGFyYW1zO2lmKFguc3RyZWFtKVE9dGhpcy5jbGllbnQuYmV0YS5tZXNzYWdlcy5zdHJlYW0oey4uLlh9LFoodGhpcyxGNixcImZcIikpLGYodGhpcyxUNixRLmZpbmFsTWVzc2FnZSgpLFwiZlwiKSxaKHRoaXMsVDYsXCJmXCIpLmNhdGNoKCgpPT57fSkseWllbGQgUTtlbHNlIGYodGhpcyxUNix0aGlzLmNsaWVudC5iZXRhLm1lc3NhZ2VzLmNyZWF0ZSh7Li4uWCxzdHJlYW06ITF9LFoodGhpcyxGNixcImZcIikpLFwiZlwiKSx5aWVsZCBaKHRoaXMsVDYsXCJmXCIpO2lmKCFhd2FpdCBaKHRoaXMsRjcsXCJtXCIsSXcpLmNhbGwodGhpcykpe2lmKCFaKHRoaXMsRzAsXCJmXCIpKXtsZXR7cm9sZTpVLGNvbnRlbnQ6SH09YXdhaXQgWih0aGlzLFQ2LFwiZlwiKTtaKHRoaXMsciQsXCJmXCIpLnBhcmFtcy5tZXNzYWdlcy5wdXNoKHtyb2xlOlUsY29udGVudDpIfSl9bGV0IEc9YXdhaXQgWih0aGlzLEY3LFwibVwiLCRVKS5jYWxsKHRoaXMsWih0aGlzLHIkLFwiZlwiKS5wYXJhbXMubWVzc2FnZXMuYXQoLTEpKTtpZihHKVoodGhpcyxyJCxcImZcIikucGFyYW1zLm1lc3NhZ2VzLnB1c2goRyk7ZWxzZSBpZighWih0aGlzLEcwLFwiZlwiKSlicmVha319ZmluYWxseXtpZihRKVEuYWJvcnQoKX19aWYoIVoodGhpcyxUNixcImZcIikpdGhyb3cgbmV3IGcoXCJUb29sUnVubmVyIGNvbmNsdWRlZCB3aXRob3V0IGEgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXJcIik7Wih0aGlzLHcxLFwiZlwiKS5yZXNvbHZlKGF3YWl0IFoodGhpcyxUNixcImZcIikpfWNhdGNoKFEpe3Rocm93IGYodGhpcyx6OCwhMSxcImZcIiksWih0aGlzLHcxLFwiZlwiKS5wcm9taXNlLmNhdGNoKCgpPT57fSksWih0aGlzLHcxLFwiZlwiKS5yZWplY3QoUSksZih0aGlzLHcxLFJ3KCksXCJmXCIpLFF9fXNldE1lc3NhZ2VzUGFyYW1zKCQpe2lmKHR5cGVvZiAkPT09XCJmdW5jdGlvblwiKVoodGhpcyxyJCxcImZcIikucGFyYW1zPSQoWih0aGlzLHIkLFwiZlwiKS5wYXJhbXMpO2Vsc2UgWih0aGlzLHIkLFwiZlwiKS5wYXJhbXM9JDtmKHRoaXMsRzAsITAsXCJmXCIpLGYodGhpcyxoNCx2b2lkIDAsXCJmXCIpfXNldFJlcXVlc3RPcHRpb25zKCQpe2lmKHR5cGVvZiAkPT09XCJmdW5jdGlvblwiKWYodGhpcyxGNiwkKFoodGhpcyxGNixcImZcIikpLFwiZlwiKTtlbHNlIGYodGhpcyxGNix7Li4uWih0aGlzLEY2LFwiZlwiKSwuLi4kfSxcImZcIil9YXN5bmMgZ2VuZXJhdGVUb29sUmVzcG9uc2UoJD1aKHRoaXMsRjYsXCJmXCIpLnNpZ25hbCl7bGV0IFE9YXdhaXQgWih0aGlzLFQ2LFwiZlwiKT8/dGhpcy5wYXJhbXMubWVzc2FnZXMuYXQoLTEpO2lmKCFRKXJldHVybiBudWxsO3JldHVybiBaKHRoaXMsRjcsXCJtXCIsJFUpLmNhbGwodGhpcyxRLCQpfWRvbmUoKXtyZXR1cm4gWih0aGlzLHcxLFwiZlwiKS5wcm9taXNlfWFzeW5jIHJ1blVudGlsRG9uZSgpe2lmKCFaKHRoaXMsejgsXCJmXCIpKWZvciBhd2FpdChsZXQgJCBvZiB0aGlzKTtyZXR1cm4gdGhpcy5kb25lKCl9Z2V0IHBhcmFtcygpe3JldHVybiBaKHRoaXMsciQsXCJmXCIpLnBhcmFtc31wdXNoTWVzc2FnZXMoLi4uJCl7dGhpcy5zZXRNZXNzYWdlc1BhcmFtcygoUSk9Pih7Li4uUSxtZXNzYWdlczpbLi4uUS5tZXNzYWdlcywuLi4kXX0pKX10aGVuKCQsUSl7cmV0dXJuIHRoaXMucnVuVW50aWxEb25lKCkudGhlbigkLFEpfX0kVT1hc3luYyBmdW5jdGlvbihRLEo9Wih0aGlzLEY2LFwiZlwiKS5zaWduYWwpe2lmKFoodGhpcyxoNCxcImZcIikhPT12b2lkIDApcmV0dXJuIFoodGhpcyxoNCxcImZcIik7cmV0dXJuIGYodGhpcyxoNCxPdihaKHRoaXMsciQsXCJmXCIpLnBhcmFtcyxRLHsuLi5aKHRoaXMsRjYsXCJmXCIpLHNpZ25hbDpKfSksXCJmXCIpLFoodGhpcyxoNCxcImZcIil9O2FzeW5jIGZ1bmN0aW9uIE92KCQsUT0kLm1lc3NhZ2VzLmF0KC0xKSxKKXtpZighUXx8US5yb2xlIT09XCJhc3Npc3RhbnRcInx8IVEuY29udGVudHx8dHlwZW9mIFEuY29udGVudD09PVwic3RyaW5nXCIpcmV0dXJuIG51bGw7bGV0IFk9US5jb250ZW50LmZpbHRlcigoVyk9PlcudHlwZT09PVwidG9vbF91c2VcIik7aWYoWS5sZW5ndGg9PT0wKXJldHVybiBudWxsO3JldHVybntyb2xlOlwidXNlclwiLGNvbnRlbnQ6YXdhaXQgUHJvbWlzZS5hbGwoWS5tYXAoYXN5bmMoVyk9PntsZXQgRz0kLnRvb2xzLmZpbmQoKFUpPT4oXCJuYW1lXCJpbiBVP1UubmFtZTpVLm1jcF9zZXJ2ZXJfbmFtZSk9PT1XLm5hbWUpO2lmKCFHfHwhKFwicnVuXCJpbiBHKSlyZXR1cm57dHlwZTpcInRvb2xfcmVzdWx0XCIsdG9vbF91c2VfaWQ6Vy5pZCxjb250ZW50OmBFcnJvcjogVG9vbCAnJHtXLm5hbWV9JyBub3QgZm91bmRgLGlzX2Vycm9yOiEwfTt0cnl7bGV0IFU9Vy5pbnB1dDtpZihcInBhcnNlXCJpbiBHJiZHLnBhcnNlKVU9Ry5wYXJzZShVKTtsZXQgSD1hd2FpdCBHLnJ1bihVLHt0b29sVXNlQmxvY2s6VyxzaWduYWw6Sj8uc2lnbmFsfSk7cmV0dXJue3R5cGU6XCJ0b29sX3Jlc3VsdFwiLHRvb2xfdXNlX2lkOlcuaWQsY29udGVudDpIfX1jYXRjaChVKXtyZXR1cm57dHlwZTpcInRvb2xfcmVzdWx0XCIsdG9vbF91c2VfaWQ6Vy5pZCxjb250ZW50OlUgaW5zdGFuY2VvZiBCOD9VLmNvbnRlbnQ6YEVycm9yOiAke1UgaW5zdGFuY2VvZiBFcnJvcj9VLm1lc3NhZ2U6U3RyaW5nKFUpfWAsaXNfZXJyb3I6ITB9fX0pKX19dmFyIFB3PXtcImNsYXVkZS0xLjNcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLTEuMy0xMDBrXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS1pbnN0YW50LTEuMVwiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtaW5zdGFudC0xLjEtMTAwa1wiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtaW5zdGFudC0xLjJcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLTMtc29ubmV0LTIwMjQwMjI5XCI6XCJKdWx5IDIxc3QsIDIwMjVcIixcImNsYXVkZS0zLW9wdXMtMjAyNDAyMjlcIjpcIkphbnVhcnkgNXRoLCAyMDI2XCIsXCJjbGF1ZGUtMi4xXCI6XCJKdWx5IDIxc3QsIDIwMjVcIixcImNsYXVkZS0yLjBcIjpcIkp1bHkgMjFzdCwgMjAyNVwiLFwiY2xhdWRlLTMtNy1zb25uZXQtbGF0ZXN0XCI6XCJGZWJydWFyeSAxOXRoLCAyMDI2XCIsXCJjbGF1ZGUtMy03LXNvbm5ldC0yMDI1MDIxOVwiOlwiRmVicnVhcnkgMTl0aCwgMjAyNlwifSxEdj1bXCJjbGF1ZGUtbXl0aG9zLXByZXZpZXdcIixcImNsYXVkZS1vcHVzLTQtNlwiXTtjbGFzcyBPMSBleHRlbmRzIHR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuYmF0Y2hlcz1uZXcgcTcodGhpcy5fY2xpZW50KX1jcmVhdGUoJCxRKXtsZXQgSj1FdygkKSx7YmV0YXM6WSwuLi5YfT1KO2lmKFgubW9kZWwgaW4gUHcpY29uc29sZS53YXJuKGBUaGUgbW9kZWwgJyR7WC5tb2RlbH0nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmVhY2ggZW5kLW9mLWxpZmUgb24gJHtQd1tYLm1vZGVsXX1cblBsZWFzZSBtaWdyYXRlIHRvIGEgbmV3ZXIgbW9kZWwuIFZpc2l0IGh0dHBzOi8vZG9jcy5hbnRocm9waWMuY29tL2VuL2RvY3MvcmVzb3VyY2VzL21vZGVsLWRlcHJlY2F0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gKTtpZihEdi5pbmNsdWRlcyhYLm1vZGVsKSYmWC50aGlua2luZyYmWC50aGlua2luZy50eXBlPT09XCJlbmFibGVkXCIpY29uc29sZS53YXJuKGBVc2luZyBDbGF1ZGUgd2l0aCAke1gubW9kZWx9IGFuZCAndGhpbmtpbmcudHlwZT1lbmFibGVkJyBpcyBkZXByZWNhdGVkLiBVc2UgJ3RoaW5raW5nLnR5cGU9YWRhcHRpdmUnIGluc3RlYWQgd2hpY2ggcmVzdWx0cyBpbiBiZXR0ZXIgbW9kZWwgcGVyZm9ybWFuY2UgaW4gb3VyIHRlc3Rpbmc6IGh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9kb2NzL2VuL2J1aWxkLXdpdGgtY2xhdWRlL2FkYXB0aXZlLXRoaW5raW5nYCk7bGV0IFc9dGhpcy5fY2xpZW50Ll9vcHRpb25zLnRpbWVvdXQ7aWYoIVguc3RyZWFtJiZXPT1udWxsKXtsZXQgVT14WFtYLm1vZGVsXT8/dm9pZCAwO1c9dGhpcy5fY2xpZW50LmNhbGN1bGF0ZU5vbnN0cmVhbWluZ1RpbWVvdXQoWC5tYXhfdG9rZW5zLFUpfWxldCBHPVRYKFgudG9vbHMsWC5tZXNzYWdlcyk7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzP2JldGE9dHJ1ZVwiLHtib2R5OlgsdGltZW91dDpXPz82MDAwMDAsLi4uUSxoZWFkZXJzOlIoW3suLi5ZPy50b1N0cmluZygpIT1udWxsP3tcImFudGhyb3BpYy1iZXRhXCI6WT8udG9TdHJpbmcoKX06dm9pZCAwfSxHLFE/LmhlYWRlcnNdKSxzdHJlYW06Si5zdHJlYW0/PyExfSl9cGFyc2UoJCxRKXtyZXR1cm4gUT17Li4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLiQuYmV0YXM/P1tdLFwic3RydWN0dXJlZC1vdXRwdXRzLTIwMjUtMTItMTVcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSx0aGlzLmNyZWF0ZSgkLFEpLnRoZW4oKEopPT5vRyhKLCQse2xvZ2dlcjp0aGlzLl9jbGllbnQubG9nZ2VyPz9jb25zb2xlfSkpfXN0cmVhbSgkLFEpe3JldHVybiBENy5jcmVhdGVNZXNzYWdlKHRoaXMsJCxRKX1jb3VudFRva2VucygkLFEpe2xldCBKPUV3KCQpLHtiZXRhczpZLC4uLlh9PUo7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzL2NvdW50X3Rva2Vucz9iZXRhPXRydWVcIix7Ym9keTpYLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInRva2VuLWNvdW50aW5nLTIwMjQtMTEtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9dG9vbFJ1bm5lcigkLFEpe3JldHVybiBuZXcgTTcodGhpcy5fY2xpZW50LCQsUSl9fWZ1bmN0aW9uIEV3KCQpe2lmKCEkLm91dHB1dF9mb3JtYXQpcmV0dXJuICQ7aWYoJC5vdXRwdXRfY29uZmlnPy5mb3JtYXQpdGhyb3cgbmV3IGcoXCJCb3RoIG91dHB1dF9mb3JtYXQgYW5kIG91dHB1dF9jb25maWcuZm9ybWF0IHdlcmUgcHJvdmlkZWQuIFBsZWFzZSB1c2Ugb25seSBvdXRwdXRfY29uZmlnLmZvcm1hdCAob3V0cHV0X2Zvcm1hdCBpcyBkZXByZWNhdGVkKS5cIik7bGV0e291dHB1dF9mb3JtYXQ6USwuLi5KfT0kO3JldHVybnsuLi5KLG91dHB1dF9jb25maWc6ey4uLiQub3V0cHV0X2NvbmZpZyxmb3JtYXQ6UX19fU8xLkJhdGNoZXM9cTc7TzEuQmV0YVRvb2xSdW5uZXI9TTc7TzEuVG9vbEVycm9yPUI4O2NsYXNzIEw3IGV4dGVuZHMgdHtsaXN0KCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoVGAvdjEvc2Vzc2lvbnMvJHskfS9ldmVudHM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXNlbmQoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3Nlc3Npb25zLyR7JH0vZXZlbnRzP2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXN0cmVhbSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL3Nlc3Npb25zLyR7JH0vZXZlbnRzL3N0cmVhbT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKSxzdHJlYW06ITB9KX19Y2xhc3MgajcgZXh0ZW5kcyB0e3JldHJpZXZlKCQsUSxKKXtsZXR7c2Vzc2lvbl9pZDpZLGJldGFzOlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvc2Vzc2lvbnMvJHtZfS9yZXNvdXJjZXMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXVwZGF0ZSgkLFEsSil7bGV0e3Nlc3Npb25faWQ6WSxiZXRhczpYLC4uLld9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3Nlc3Npb25zLyR7WX0vcmVzb3VyY2VzLyR7JH0/YmV0YT10cnVlYCx7Ym9keTpXLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkLFE9e30sSil7bGV0e2JldGFzOlksLi4uWH09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXRBUElMaXN0KFRgL3YxL3Nlc3Npb25zLyR7JH0vcmVzb3VyY2VzP2JldGE9dHJ1ZWAsRCQse3F1ZXJ5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRLEope2xldHtzZXNzaW9uX2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9zZXNzaW9ucy8ke1l9L3Jlc291cmNlcy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YWRkKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9zZXNzaW9ucy8keyR9L3Jlc291cmNlcz9iZXRhPXRydWVgLHtib2R5OlgsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgVTAgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLmV2ZW50cz1uZXcgTDcodGhpcy5fY2xpZW50KSx0aGlzLnJlc291cmNlcz1uZXcgajcodGhpcy5fY2xpZW50KX1jcmVhdGUoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9zZXNzaW9ucz9iZXRhPXRydWVcIix7Ym9keTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9zZXNzaW9ucy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9dXBkYXRlKCQsUSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9zZXNzaW9ucy8keyR9P2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvc2Vzc2lvbnM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS9zZXNzaW9ucy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YXJjaGl2ZSgkLFE9e30sSil7bGV0e2JldGFzOll9PVE/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChUYC92MS9zZXNzaW9ucy8keyR9L2FyY2hpdmU/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19VTAuRXZlbnRzPUw3O1UwLlJlc291cmNlcz1qNztjbGFzcyBBNyBleHRlbmRzIHR7Y3JlYXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvc2tpbGxzLyR7JH0vdmVyc2lvbnM/YmV0YT10cnVlYCxVOCh7Ym9keTpYLC4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5ZPz9bXSxcInNraWxscy0yMDI1LTEwLTAyXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0sdGhpcy5fY2xpZW50KSl9cmV0cmlldmUoJCxRLEope2xldHtza2lsbF9pZDpZLGJldGFzOlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvc2tpbGxzLyR7WX0vdmVyc2lvbnMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoVGAvdjEvc2tpbGxzLyR7JH0vdmVyc2lvbnM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1kZWxldGUoJCxRLEope2xldHtza2lsbF9pZDpZLGJldGFzOlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvc2tpbGxzLyR7WX0vdmVyc2lvbnMvJHskfT9iZXRhPXRydWVgLHsuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWD8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19Y2xhc3MgTjggZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLnZlcnNpb25zPW5ldyBBNyh0aGlzLl9jbGllbnQpfWNyZWF0ZSgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9za2lsbHM/YmV0YT10cnVlXCIsVTgoe2JvZHk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJza2lsbHMtMjAyNS0xMC0wMlwiXS50b1N0cmluZygpfSxRPy5oZWFkZXJzXSl9LHRoaXMuX2NsaWVudCwhMSkpfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvc2tpbGxzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwic2tpbGxzLTIwMjUtMTAtMDJcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9za2lsbHM/YmV0YT10cnVlXCIsRCQse3F1ZXJ5OlksLi4uUSxoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLko/P1tdLFwic2tpbGxzLTIwMjUtMTAtMDJcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvc2tpbGxzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwic2tpbGxzLTIwMjUtMTAtMDJcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fU44LlZlcnNpb25zPUE3O2NsYXNzIEk3IGV4dGVuZHMgdHtjcmVhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3ZhdWx0cy8keyR9L2NyZWRlbnRpYWxzP2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUSxKKXtsZXR7dmF1bHRfaWQ6WSxiZXRhczpYfT1RO3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL3ZhdWx0cy8ke1l9L2NyZWRlbnRpYWxzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHt2YXVsdF9pZDpZLGJldGFzOlgsLi4uV309UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdmF1bHRzLyR7WX0vY3JlZGVudGlhbHMvJHskfT9iZXRhPXRydWVgLHtib2R5OlcsLi4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlg/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1saXN0KCQsUT17fSxKKXtsZXR7YmV0YXM6WSwuLi5YfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoVGAvdjEvdmF1bHRzLyR7JH0vY3JlZGVudGlhbHM/YmV0YT10cnVlYCxEJCx7cXVlcnk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWRlbGV0ZSgkLFEsSil7bGV0e3ZhdWx0X2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LmRlbGV0ZShUYC92MS92YXVsdHMvJHtZfS9jcmVkZW50aWFscy8keyR9P2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9YXJjaGl2ZSgkLFEsSil7bGV0e3ZhdWx0X2lkOlksYmV0YXM6WH09UTtyZXR1cm4gdGhpcy5fY2xpZW50LnBvc3QoVGAvdjEvdmF1bHRzLyR7WX0vY3JlZGVudGlhbHMvJHskfS9hcmNoaXZlP2JldGE9dHJ1ZWAsey4uLkosaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5YPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sSj8uaGVhZGVyc10pfSl9fWNsYXNzIHc4IGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5jcmVkZW50aWFscz1uZXcgSTcodGhpcy5fY2xpZW50KX1jcmVhdGUoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS92YXVsdHM/YmV0YT10cnVlXCIse2JvZHk6WSwuLi5RLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uSj8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LFE/LmhlYWRlcnNdKX0pfXJldHJpZXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoVGAvdjEvdmF1bHRzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX11cGRhdGUoJCxRLEope2xldHtiZXRhczpZLC4uLlh9PVE7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3ZhdWx0cy8keyR9P2JldGE9dHJ1ZWAse2JvZHk6WCwuLi5KLGhlYWRlcnM6Uihbe1wiYW50aHJvcGljLWJldGFcIjpbLi4uWT8/W10sXCJtYW5hZ2VkLWFnZW50cy0yMDI2LTA0LTAxXCJdLnRvU3RyaW5nKCl9LEo/LmhlYWRlcnNdKX0pfWxpc3QoJD17fSxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldEFQSUxpc3QoXCIvdjEvdmF1bHRzP2JldGE9dHJ1ZVwiLEQkLHtxdWVyeTpZLC4uLlEsaGVhZGVyczpSKFt7XCJhbnRocm9waWMtYmV0YVwiOlsuLi5KPz9bXSxcIm1hbmFnZWQtYWdlbnRzLTIwMjYtMDQtMDFcIl0udG9TdHJpbmcoKX0sUT8uaGVhZGVyc10pfSl9ZGVsZXRlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5kZWxldGUoVGAvdjEvdmF1bHRzLyR7JH0/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX1hcmNoaXZlKCQsUT17fSxKKXtsZXR7YmV0YXM6WX09UT8/e307cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL3ZhdWx0cy8keyR9L2FyY2hpdmU/YmV0YT10cnVlYCx7Li4uSixoZWFkZXJzOlIoW3tcImFudGhyb3BpYy1iZXRhXCI6Wy4uLlk/P1tdLFwibWFuYWdlZC1hZ2VudHMtMjAyNi0wNC0wMVwiXS50b1N0cmluZygpfSxKPy5oZWFkZXJzXSl9KX19dzguQ3JlZGVudGlhbHM9STc7Y2xhc3MgVzYgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLm1vZGVscz1uZXcgVzcodGhpcy5fY2xpZW50KSx0aGlzLm1lc3NhZ2VzPW5ldyBPMSh0aGlzLl9jbGllbnQpLHRoaXMuYWdlbnRzPW5ldyBIOCh0aGlzLl9jbGllbnQpLHRoaXMuZW52aXJvbm1lbnRzPW5ldyBKNyh0aGlzLl9jbGllbnQpLHRoaXMuc2Vzc2lvbnM9bmV3IFUwKHRoaXMuX2NsaWVudCksdGhpcy52YXVsdHM9bmV3IHc4KHRoaXMuX2NsaWVudCksdGhpcy5tZW1vcnlTdG9yZXM9bmV3IFkwKHRoaXMuX2NsaWVudCksdGhpcy5maWxlcz1uZXcgWTcodGhpcy5fY2xpZW50KSx0aGlzLnNraWxscz1uZXcgTjgodGhpcy5fY2xpZW50KSx0aGlzLnVzZXJQcm9maWxlcz1uZXcgRzcodGhpcy5fY2xpZW50KX19VzYuTW9kZWxzPVc3O1c2Lk1lc3NhZ2VzPU8xO1c2LkFnZW50cz1IODtXNi5FbnZpcm9ubWVudHM9Sjc7VzYuU2Vzc2lvbnM9VTA7VzYuVmF1bHRzPXc4O1c2Lk1lbW9yeVN0b3Jlcz1ZMDtXNi5GaWxlcz1ZNztXNi5Ta2lsbHM9Tjg7VzYuVXNlclByb2ZpbGVzPUc3O2NsYXNzIE84IGV4dGVuZHMgdHtjcmVhdGUoJCxRKXtsZXR7YmV0YXM6SiwuLi5ZfT0kO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9jb21wbGV0ZVwiLHtib2R5OlksdGltZW91dDp0aGlzLl9jbGllbnQuX29wdGlvbnMudGltZW91dD8/NjAwMDAwLC4uLlEsaGVhZGVyczpSKFt7Li4uSj8udG9TdHJpbmcoKSE9bnVsbD97XCJhbnRocm9waWMtYmV0YVwiOko/LnRvU3RyaW5nKCl9OnZvaWQgMH0sUT8uaGVhZGVyc10pLHN0cmVhbTokLnN0cmVhbT8/ITF9KX19ZnVuY3Rpb24gYncoJCl7cmV0dXJuICQ/Lm91dHB1dF9jb25maWc/LmZvcm1hdH1mdW5jdGlvbiBRVSgkLFEsSil7bGV0IFk9YncoUSk7aWYoIVF8fCEoXCJwYXJzZVwiaW4oWT8/e30pKSlyZXR1cm57Li4uJCxjb250ZW50OiQuY29udGVudC5tYXAoKFgpPT57aWYoWC50eXBlPT09XCJ0ZXh0XCIpcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7Li4uWH0sXCJwYXJzZWRfb3V0cHV0XCIse3ZhbHVlOm51bGwsZW51bWVyYWJsZTohMX0pO3JldHVybiBYfSkscGFyc2VkX291dHB1dDpudWxsfTtyZXR1cm4gSlUoJCxRLEopfWZ1bmN0aW9uIEpVKCQsUSxKKXtsZXQgWT1udWxsLFg9JC5jb250ZW50Lm1hcCgoVyk9PntpZihXLnR5cGU9PT1cInRleHRcIil7bGV0IEc9UHYoUSxXLnRleHQpO2lmKFk9PT1udWxsKVk9RztyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHsuLi5XfSxcInBhcnNlZF9vdXRwdXRcIix7dmFsdWU6RyxlbnVtZXJhYmxlOiExfSl9cmV0dXJuIFd9KTtyZXR1cm57Li4uJCxjb250ZW50OlgscGFyc2VkX291dHB1dDpZfX1mdW5jdGlvbiBQdigkLFEpe2xldCBKPWJ3KCQpO2lmKEo/LnR5cGUhPT1cImpzb25fc2NoZW1hXCIpcmV0dXJuIG51bGw7dHJ5e2lmKFwicGFyc2VcImluIEopcmV0dXJuIEoucGFyc2UoUSk7cmV0dXJuIEpTT04ucGFyc2UoUSl9Y2F0Y2goWSl7dGhyb3cgbmV3IGcoYEZhaWxlZCB0byBwYXJzZSBzdHJ1Y3R1cmVkIG91dHB1dDogJHtZfWApfX12YXIgbjYsRDEsRDgsUjcscFgsUDcsRTcsZFgsYjcsdTQsXzcsaVgsblgsSDAsclgsb1gsUzcsWFUsX3csWVUsV1UsR1UsVVUsU3csa3c9XCJfX2pzb25fYnVmXCI7ZnVuY3Rpb24gdncoJCl7cmV0dXJuICQudHlwZT09PVwidG9vbF91c2VcInx8JC50eXBlPT09XCJzZXJ2ZXJfdG9vbF91c2VcIn1jbGFzcyBrN3tjb25zdHJ1Y3RvcigkLFEpe242LmFkZCh0aGlzKSx0aGlzLm1lc3NhZ2VzPVtdLHRoaXMucmVjZWl2ZWRNZXNzYWdlcz1bXSxEMS5zZXQodGhpcyx2b2lkIDApLEQ4LnNldCh0aGlzLG51bGwpLHRoaXMuY29udHJvbGxlcj1uZXcgQWJvcnRDb250cm9sbGVyLFI3LnNldCh0aGlzLHZvaWQgMCkscFguc2V0KHRoaXMsKCk9Pnt9KSxQNy5zZXQodGhpcywoKT0+e30pLEU3LnNldCh0aGlzLHZvaWQgMCksZFguc2V0KHRoaXMsKCk9Pnt9KSxiNy5zZXQodGhpcywoKT0+e30pLHU0LnNldCh0aGlzLHt9KSxfNy5zZXQodGhpcywhMSksaVguc2V0KHRoaXMsITEpLG5YLnNldCh0aGlzLCExKSxIMC5zZXQodGhpcywhMSksclguc2V0KHRoaXMsdm9pZCAwKSxvWC5zZXQodGhpcyx2b2lkIDApLFM3LnNldCh0aGlzLHZvaWQgMCksWVUuc2V0KHRoaXMsKEopPT57aWYoZih0aGlzLGlYLCEwLFwiZlwiKSxmNChKKSlKPW5ldyBRNjtpZihKIGluc3RhbmNlb2YgUTYpcmV0dXJuIGYodGhpcyxuWCwhMCxcImZcIiksdGhpcy5fZW1pdChcImFib3J0XCIsSik7aWYoSiBpbnN0YW5jZW9mIGcpcmV0dXJuIHRoaXMuX2VtaXQoXCJlcnJvclwiLEopO2lmKEogaW5zdGFuY2VvZiBFcnJvcil7bGV0IFk9bmV3IGcoSi5tZXNzYWdlKTtyZXR1cm4gWS5jYXVzZT1KLHRoaXMuX2VtaXQoXCJlcnJvclwiLFkpfXJldHVybiB0aGlzLl9lbWl0KFwiZXJyb3JcIixuZXcgZyhTdHJpbmcoSikpKX0pLGYodGhpcyxSNyxuZXcgUHJvbWlzZSgoSixZKT0+e2YodGhpcyxwWCxKLFwiZlwiKSxmKHRoaXMsUDcsWSxcImZcIil9KSxcImZcIiksZih0aGlzLEU3LG5ldyBQcm9taXNlKChKLFkpPT57Zih0aGlzLGRYLEosXCJmXCIpLGYodGhpcyxiNyxZLFwiZlwiKX0pLFwiZlwiKSxaKHRoaXMsUjcsXCJmXCIpLmNhdGNoKCgpPT57fSksWih0aGlzLEU3LFwiZlwiKS5jYXRjaCgoKT0+e30pLGYodGhpcyxEOCwkLFwiZlwiKSxmKHRoaXMsUzcsUT8ubG9nZ2VyPz9jb25zb2xlLFwiZlwiKX1nZXQgcmVzcG9uc2UoKXtyZXR1cm4gWih0aGlzLHJYLFwiZlwiKX1nZXQgcmVxdWVzdF9pZCgpe3JldHVybiBaKHRoaXMsb1gsXCJmXCIpfWFzeW5jIHdpdGhSZXNwb25zZSgpe2YodGhpcyxIMCwhMCxcImZcIik7bGV0ICQ9YXdhaXQgWih0aGlzLFI3LFwiZlwiKTtpZighJCl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCByZXNvbHZlIGEgYFJlc3BvbnNlYCBvYmplY3RcIik7cmV0dXJue2RhdGE6dGhpcyxyZXNwb25zZTokLHJlcXVlc3RfaWQ6JC5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIil9fXN0YXRpYyBmcm9tUmVhZGFibGVTdHJlYW0oJCl7bGV0IFE9bmV3IGs3KG51bGwpO3JldHVybiBRLl9ydW4oKCk9PlEuX2Zyb21SZWFkYWJsZVN0cmVhbSgkKSksUX1zdGF0aWMgY3JlYXRlTWVzc2FnZSgkLFEsSix7bG9nZ2VyOll9PXt9KXtsZXQgWD1uZXcgazcoUSx7bG9nZ2VyOll9KTtmb3IobGV0IFcgb2YgUS5tZXNzYWdlcylYLl9hZGRNZXNzYWdlUGFyYW0oVyk7cmV0dXJuIGYoWCxEOCx7Li4uUSxzdHJlYW06ITB9LFwiZlwiKSxYLl9ydW4oKCk9PlguX2NyZWF0ZU1lc3NhZ2UoJCx7Li4uUSxzdHJlYW06ITB9LHsuLi5KLGhlYWRlcnM6ey4uLko/LmhlYWRlcnMsXCJYLVN0YWlubGVzcy1IZWxwZXItTWV0aG9kXCI6XCJzdHJlYW1cIn19KSksWH1fcnVuKCQpeyQoKS50aGVuKCgpPT57dGhpcy5fZW1pdEZpbmFsKCksdGhpcy5fZW1pdChcImVuZFwiKX0sWih0aGlzLFlVLFwiZlwiKSl9X2FkZE1lc3NhZ2VQYXJhbSgkKXt0aGlzLm1lc3NhZ2VzLnB1c2goJCl9X2FkZE1lc3NhZ2UoJCxRPSEwKXtpZih0aGlzLnJlY2VpdmVkTWVzc2FnZXMucHVzaCgkKSxRKXRoaXMuX2VtaXQoXCJtZXNzYWdlXCIsJCl9YXN5bmMgX2NyZWF0ZU1lc3NhZ2UoJCxRLEope2xldCBZPUo/LnNpZ25hbCxYO2lmKFkpe2lmKFkuYWJvcnRlZCl0aGlzLmNvbnRyb2xsZXIuYWJvcnQoKTtYPXRoaXMuY29udHJvbGxlci5hYm9ydC5iaW5kKHRoaXMuY29udHJvbGxlciksWS5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixYKX10cnl7Wih0aGlzLG42LFwibVwiLFdVKS5jYWxsKHRoaXMpO2xldHtyZXNwb25zZTpXLGRhdGE6R309YXdhaXQgJC5jcmVhdGUoey4uLlEsc3RyZWFtOiEwfSx7Li4uSixzaWduYWw6dGhpcy5jb250cm9sbGVyLnNpZ25hbH0pLndpdGhSZXNwb25zZSgpO3RoaXMuX2Nvbm5lY3RlZChXKTtmb3IgYXdhaXQobGV0IFUgb2YgRylaKHRoaXMsbjYsXCJtXCIsR1UpLmNhbGwodGhpcyxVKTtpZihHLmNvbnRyb2xsZXIuc2lnbmFsPy5hYm9ydGVkKXRocm93IG5ldyBRNjtaKHRoaXMsbjYsXCJtXCIsVVUpLmNhbGwodGhpcyl9ZmluYWxseXtpZihZJiZYKVkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsWCl9fV9jb25uZWN0ZWQoJCl7aWYodGhpcy5lbmRlZClyZXR1cm47Zih0aGlzLHJYLCQsXCJmXCIpLGYodGhpcyxvWCwkPy5oZWFkZXJzLmdldChcInJlcXVlc3QtaWRcIiksXCJmXCIpLFoodGhpcyxwWCxcImZcIikuY2FsbCh0aGlzLCQpLHRoaXMuX2VtaXQoXCJjb25uZWN0XCIpfWdldCBlbmRlZCgpe3JldHVybiBaKHRoaXMsXzcsXCJmXCIpfWdldCBlcnJvcmVkKCl7cmV0dXJuIFoodGhpcyxpWCxcImZcIil9Z2V0IGFib3J0ZWQoKXtyZXR1cm4gWih0aGlzLG5YLFwiZlwiKX1hYm9ydCgpe3RoaXMuY29udHJvbGxlci5hYm9ydCgpfW9uKCQsUSl7cmV0dXJuKFoodGhpcyx1NCxcImZcIilbJF18fChaKHRoaXMsdTQsXCJmXCIpWyRdPVtdKSkucHVzaCh7bGlzdGVuZXI6UX0pLHRoaXN9b2ZmKCQsUSl7bGV0IEo9Wih0aGlzLHU0LFwiZlwiKVskXTtpZighSilyZXR1cm4gdGhpcztsZXQgWT1KLmZpbmRJbmRleCgoWCk9PlgubGlzdGVuZXI9PT1RKTtpZihZPj0wKUouc3BsaWNlKFksMSk7cmV0dXJuIHRoaXN9b25jZSgkLFEpe3JldHVybihaKHRoaXMsdTQsXCJmXCIpWyRdfHwoWih0aGlzLHU0LFwiZlwiKVskXT1bXSkpLnB1c2goe2xpc3RlbmVyOlEsb25jZTohMH0pLHRoaXN9ZW1pdHRlZCgkKXtyZXR1cm4gbmV3IFByb21pc2UoKFEsSik9PntpZihmKHRoaXMsSDAsITAsXCJmXCIpLCQhPT1cImVycm9yXCIpdGhpcy5vbmNlKFwiZXJyb3JcIixKKTt0aGlzLm9uY2UoJCxRKX0pfWFzeW5jIGRvbmUoKXtmKHRoaXMsSDAsITAsXCJmXCIpLGF3YWl0IFoodGhpcyxFNyxcImZcIil9Z2V0IGN1cnJlbnRNZXNzYWdlKCl7cmV0dXJuIFoodGhpcyxEMSxcImZcIil9YXN5bmMgZmluYWxNZXNzYWdlKCl7cmV0dXJuIGF3YWl0IHRoaXMuZG9uZSgpLFoodGhpcyxuNixcIm1cIixYVSkuY2FsbCh0aGlzKX1hc3luYyBmaW5hbFRleHQoKXtyZXR1cm4gYXdhaXQgdGhpcy5kb25lKCksWih0aGlzLG42LFwibVwiLF93KS5jYWxsKHRoaXMpfV9lbWl0KCQsLi4uUSl7aWYoWih0aGlzLF83LFwiZlwiKSlyZXR1cm47aWYoJD09PVwiZW5kXCIpZih0aGlzLF83LCEwLFwiZlwiKSxaKHRoaXMsZFgsXCJmXCIpLmNhbGwodGhpcyk7bGV0IEo9Wih0aGlzLHU0LFwiZlwiKVskXTtpZihKKVoodGhpcyx1NCxcImZcIilbJF09Si5maWx0ZXIoKFkpPT4hWS5vbmNlKSxKLmZvckVhY2goKHtsaXN0ZW5lcjpZfSk9PlkoLi4uUSkpO2lmKCQ9PT1cImFib3J0XCIpe2xldCBZPVFbMF07aWYoIVoodGhpcyxIMCxcImZcIikmJiFKPy5sZW5ndGgpUHJvbWlzZS5yZWplY3QoWSk7Wih0aGlzLFA3LFwiZlwiKS5jYWxsKHRoaXMsWSksWih0aGlzLGI3LFwiZlwiKS5jYWxsKHRoaXMsWSksdGhpcy5fZW1pdChcImVuZFwiKTtyZXR1cm59aWYoJD09PVwiZXJyb3JcIil7bGV0IFk9UVswXTtpZighWih0aGlzLEgwLFwiZlwiKSYmIUo/Lmxlbmd0aClQcm9taXNlLnJlamVjdChZKTtaKHRoaXMsUDcsXCJmXCIpLmNhbGwodGhpcyxZKSxaKHRoaXMsYjcsXCJmXCIpLmNhbGwodGhpcyxZKSx0aGlzLl9lbWl0KFwiZW5kXCIpfX1fZW1pdEZpbmFsKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKSl0aGlzLl9lbWl0KFwiZmluYWxNZXNzYWdlXCIsWih0aGlzLG42LFwibVwiLFhVKS5jYWxsKHRoaXMpKX1hc3luYyBfZnJvbVJlYWRhYmxlU3RyZWFtKCQsUSl7bGV0IEo9UT8uc2lnbmFsLFk7aWYoSil7aWYoSi5hYm9ydGVkKXRoaXMuY29udHJvbGxlci5hYm9ydCgpO1k9dGhpcy5jb250cm9sbGVyLmFib3J0LmJpbmQodGhpcy5jb250cm9sbGVyKSxKLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFkpfXRyeXtaKHRoaXMsbjYsXCJtXCIsV1UpLmNhbGwodGhpcyksdGhpcy5fY29ubmVjdGVkKG51bGwpO2xldCBYPUM2LmZyb21SZWFkYWJsZVN0cmVhbSgkLHRoaXMuY29udHJvbGxlcik7Zm9yIGF3YWl0KGxldCBXIG9mIFgpWih0aGlzLG42LFwibVwiLEdVKS5jYWxsKHRoaXMsVyk7aWYoWC5jb250cm9sbGVyLnNpZ25hbD8uYWJvcnRlZCl0aHJvdyBuZXcgUTY7Wih0aGlzLG42LFwibVwiLFVVKS5jYWxsKHRoaXMpfWZpbmFsbHl7aWYoSiYmWSlKLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLFkpfX1bKEQxPW5ldyBXZWFrTWFwLEQ4PW5ldyBXZWFrTWFwLFI3PW5ldyBXZWFrTWFwLHBYPW5ldyBXZWFrTWFwLFA3PW5ldyBXZWFrTWFwLEU3PW5ldyBXZWFrTWFwLGRYPW5ldyBXZWFrTWFwLGI3PW5ldyBXZWFrTWFwLHU0PW5ldyBXZWFrTWFwLF83PW5ldyBXZWFrTWFwLGlYPW5ldyBXZWFrTWFwLG5YPW5ldyBXZWFrTWFwLEgwPW5ldyBXZWFrTWFwLHJYPW5ldyBXZWFrTWFwLG9YPW5ldyBXZWFrTWFwLFM3PW5ldyBXZWFrTWFwLFlVPW5ldyBXZWFrTWFwLG42PW5ldyBXZWFrU2V0LFhVPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aD09PTApdGhyb3cgbmV3IGcoXCJzdHJlYW0gZW5kZWQgd2l0aG91dCBwcm9kdWNpbmcgYSBNZXNzYWdlIHdpdGggcm9sZT1hc3Npc3RhbnRcIik7cmV0dXJuIHRoaXMucmVjZWl2ZWRNZXNzYWdlcy5hdCgtMSl9LF93PWZ1bmN0aW9uKCl7aWYodGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aD09PTApdGhyb3cgbmV3IGcoXCJzdHJlYW0gZW5kZWQgd2l0aG91dCBwcm9kdWNpbmcgYSBNZXNzYWdlIHdpdGggcm9sZT1hc3Npc3RhbnRcIik7bGV0IFE9dGhpcy5yZWNlaXZlZE1lc3NhZ2VzLmF0KC0xKS5jb250ZW50LmZpbHRlcigoSik9PkoudHlwZT09PVwidGV4dFwiKS5tYXAoKEopPT5KLnRleHQpO2lmKFEubGVuZ3RoPT09MCl0aHJvdyBuZXcgZyhcInN0cmVhbSBlbmRlZCB3aXRob3V0IHByb2R1Y2luZyBhIGNvbnRlbnQgYmxvY2sgd2l0aCB0eXBlPXRleHRcIik7cmV0dXJuIFEuam9pbihcIiBcIil9LFdVPWZ1bmN0aW9uKCl7aWYodGhpcy5lbmRlZClyZXR1cm47Zih0aGlzLEQxLHZvaWQgMCxcImZcIil9LEdVPWZ1bmN0aW9uKFEpe2lmKHRoaXMuZW5kZWQpcmV0dXJuO2xldCBKPVoodGhpcyxuNixcIm1cIixTdykuY2FsbCh0aGlzLFEpO3N3aXRjaCh0aGlzLl9lbWl0KFwic3RyZWFtRXZlbnRcIixRLEopLFEudHlwZSl7Y2FzZVwiY29udGVudF9ibG9ja19kZWx0YVwiOntsZXQgWT1KLmNvbnRlbnQuYXQoLTEpO3N3aXRjaChRLmRlbHRhLnR5cGUpe2Nhc2VcInRleHRfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0ZXh0XCIpdGhpcy5fZW1pdChcInRleHRcIixRLmRlbHRhLnRleHQsWS50ZXh0fHxcIlwiKTticmVha31jYXNlXCJjaXRhdGlvbnNfZGVsdGFcIjp7aWYoWS50eXBlPT09XCJ0ZXh0XCIpdGhpcy5fZW1pdChcImNpdGF0aW9uXCIsUS5kZWx0YS5jaXRhdGlvbixZLmNpdGF0aW9ucz8/W10pO2JyZWFrfWNhc2VcImlucHV0X2pzb25fZGVsdGFcIjp7aWYodncoWSkmJlkuaW5wdXQpdGhpcy5fZW1pdChcImlucHV0SnNvblwiLFEuZGVsdGEucGFydGlhbF9qc29uLFkuaW5wdXQpO2JyZWFrfWNhc2VcInRoaW5raW5nX2RlbHRhXCI6e2lmKFkudHlwZT09PVwidGhpbmtpbmdcIil0aGlzLl9lbWl0KFwidGhpbmtpbmdcIixRLmRlbHRhLnRoaW5raW5nLFkudGhpbmtpbmcpO2JyZWFrfWNhc2VcInNpZ25hdHVyZV9kZWx0YVwiOntpZihZLnR5cGU9PT1cInRoaW5raW5nXCIpdGhpcy5fZW1pdChcInNpZ25hdHVyZVwiLFkuc2lnbmF0dXJlKTticmVha31kZWZhdWx0OkN3KFEuZGVsdGEpfWJyZWFrfWNhc2VcIm1lc3NhZ2Vfc3RvcFwiOnt0aGlzLl9hZGRNZXNzYWdlUGFyYW0oSiksdGhpcy5fYWRkTWVzc2FnZShRVShKLFoodGhpcyxEOCxcImZcIikse2xvZ2dlcjpaKHRoaXMsUzcsXCJmXCIpfSksITApO2JyZWFrfWNhc2VcImNvbnRlbnRfYmxvY2tfc3RvcFwiOnt0aGlzLl9lbWl0KFwiY29udGVudEJsb2NrXCIsSi5jb250ZW50LmF0KC0xKSk7YnJlYWt9Y2FzZVwibWVzc2FnZV9zdGFydFwiOntmKHRoaXMsRDEsSixcImZcIik7YnJlYWt9Y2FzZVwiY29udGVudF9ibG9ja19zdGFydFwiOmNhc2VcIm1lc3NhZ2VfZGVsdGFcIjpicmVha319LFVVPWZ1bmN0aW9uKCl7aWYodGhpcy5lbmRlZCl0aHJvdyBuZXcgZyhcInN0cmVhbSBoYXMgZW5kZWQsIHRoaXMgc2hvdWxkbid0IGhhcHBlblwiKTtsZXQgUT1aKHRoaXMsRDEsXCJmXCIpO2lmKCFRKXRocm93IG5ldyBnKFwicmVxdWVzdCBlbmRlZCB3aXRob3V0IHNlbmRpbmcgYW55IGNodW5rc1wiKTtyZXR1cm4gZih0aGlzLEQxLHZvaWQgMCxcImZcIiksUVUoUSxaKHRoaXMsRDgsXCJmXCIpLHtsb2dnZXI6Wih0aGlzLFM3LFwiZlwiKX0pfSxTdz1mdW5jdGlvbihRKXtsZXQgSj1aKHRoaXMsRDEsXCJmXCIpO2lmKFEudHlwZT09PVwibWVzc2FnZV9zdGFydFwiKXtpZihKKXRocm93IG5ldyBnKGBVbmV4cGVjdGVkIGV2ZW50IG9yZGVyLCBnb3QgJHtRLnR5cGV9IGJlZm9yZSByZWNlaXZpbmcgXCJtZXNzYWdlX3N0b3BcImApO3JldHVybiBRLm1lc3NhZ2V9aWYoIUopdGhyb3cgbmV3IGcoYFVuZXhwZWN0ZWQgZXZlbnQgb3JkZXIsIGdvdCAke1EudHlwZX0gYmVmb3JlIFwibWVzc2FnZV9zdGFydFwiYCk7c3dpdGNoKFEudHlwZSl7Y2FzZVwibWVzc2FnZV9zdG9wXCI6cmV0dXJuIEo7Y2FzZVwibWVzc2FnZV9kZWx0YVwiOmlmKEouc3RvcF9yZWFzb249US5kZWx0YS5zdG9wX3JlYXNvbixKLnN0b3Bfc2VxdWVuY2U9US5kZWx0YS5zdG9wX3NlcXVlbmNlLEoudXNhZ2Uub3V0cHV0X3Rva2Vucz1RLnVzYWdlLm91dHB1dF90b2tlbnMsUS51c2FnZS5pbnB1dF90b2tlbnMhPW51bGwpSi51c2FnZS5pbnB1dF90b2tlbnM9US51c2FnZS5pbnB1dF90b2tlbnM7aWYoUS51c2FnZS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMhPW51bGwpSi51c2FnZS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM9US51c2FnZS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM7aWYoUS51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyE9bnVsbClKLnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zPVEudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM7aWYoUS51c2FnZS5zZXJ2ZXJfdG9vbF91c2UhPW51bGwpSi51c2FnZS5zZXJ2ZXJfdG9vbF91c2U9US51c2FnZS5zZXJ2ZXJfdG9vbF91c2U7cmV0dXJuIEo7Y2FzZVwiY29udGVudF9ibG9ja19zdGFydFwiOnJldHVybiBKLmNvbnRlbnQucHVzaCh7Li4uUS5jb250ZW50X2Jsb2NrfSksSjtjYXNlXCJjb250ZW50X2Jsb2NrX2RlbHRhXCI6e2xldCBZPUouY29udGVudC5hdChRLmluZGV4KTtzd2l0Y2goUS5kZWx0YS50eXBlKXtjYXNlXCJ0ZXh0X2RlbHRhXCI6e2lmKFk/LnR5cGU9PT1cInRleHRcIilKLmNvbnRlbnRbUS5pbmRleF09ey4uLlksdGV4dDooWS50ZXh0fHxcIlwiKStRLmRlbHRhLnRleHR9O2JyZWFrfWNhc2VcImNpdGF0aW9uc19kZWx0YVwiOntpZihZPy50eXBlPT09XCJ0ZXh0XCIpSi5jb250ZW50W1EuaW5kZXhdPXsuLi5ZLGNpdGF0aW9uczpbLi4uWS5jaXRhdGlvbnM/P1tdLFEuZGVsdGEuY2l0YXRpb25dfTticmVha31jYXNlXCJpbnB1dF9qc29uX2RlbHRhXCI6e2lmKFkmJnZ3KFkpKXtsZXQgWD1ZW2t3XXx8XCJcIjtYKz1RLmRlbHRhLnBhcnRpYWxfanNvbjtsZXQgVz17Li4uWX07aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KFcsa3cse3ZhbHVlOlgsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMH0pLFgpVy5pbnB1dD1mWChYKTtKLmNvbnRlbnRbUS5pbmRleF09V31icmVha31jYXNlXCJ0aGlua2luZ19kZWx0YVwiOntpZihZPy50eXBlPT09XCJ0aGlua2luZ1wiKUouY29udGVudFtRLmluZGV4XT17Li4uWSx0aGlua2luZzpZLnRoaW5raW5nK1EuZGVsdGEudGhpbmtpbmd9O2JyZWFrfWNhc2VcInNpZ25hdHVyZV9kZWx0YVwiOntpZihZPy50eXBlPT09XCJ0aGlua2luZ1wiKUouY29udGVudFtRLmluZGV4XT17Li4uWSxzaWduYXR1cmU6US5kZWx0YS5zaWduYXR1cmV9O2JyZWFrfWRlZmF1bHQ6Q3coUS5kZWx0YSl9cmV0dXJuIEp9Y2FzZVwiY29udGVudF9ibG9ja19zdG9wXCI6cmV0dXJuIEp9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcildKCl7bGV0ICQ9W10sUT1bXSxKPSExO3JldHVybiB0aGlzLm9uKFwic3RyZWFtRXZlbnRcIiwoWSk9PntsZXQgWD1RLnNoaWZ0KCk7aWYoWClYLnJlc29sdmUoWSk7ZWxzZSAkLnB1c2goWSl9KSx0aGlzLm9uKFwiZW5kXCIsKCk9PntKPSEwO2ZvcihsZXQgWSBvZiBRKVkucmVzb2x2ZSh2b2lkIDApO1EubGVuZ3RoPTB9KSx0aGlzLm9uKFwiYWJvcnRcIiwoWSk9PntKPSEwO2ZvcihsZXQgWCBvZiBRKVgucmVqZWN0KFkpO1EubGVuZ3RoPTB9KSx0aGlzLm9uKFwiZXJyb3JcIiwoWSk9PntKPSEwO2ZvcihsZXQgWCBvZiBRKVgucmVqZWN0KFkpO1EubGVuZ3RoPTB9KSx7bmV4dDphc3luYygpPT57aWYoISQubGVuZ3RoKXtpZihKKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07cmV0dXJuIG5ldyBQcm9taXNlKChYLFcpPT5RLnB1c2goe3Jlc29sdmU6WCxyZWplY3Q6V30pKS50aGVuKChYKT0+WD97dmFsdWU6WCxkb25lOiExfTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX1yZXR1cm57dmFsdWU6JC5zaGlmdCgpLGRvbmU6ITF9fSxyZXR1cm46YXN5bmMoKT0+e3JldHVybiB0aGlzLmFib3J0KCkse3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19fXRvUmVhZGFibGVTdHJlYW0oKXtyZXR1cm4gbmV3IEM2KHRoaXNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdLmJpbmQodGhpcyksdGhpcy5jb250cm9sbGVyKS50b1JlYWRhYmxlU3RyZWFtKCl9fWZ1bmN0aW9uIEN3KCQpe31jbGFzcyB2NyBleHRlbmRzIHR7Y3JlYXRlKCQsUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzL2JhdGNoZXNcIix7Ym9keTokLC4uLlF9KX1yZXRyaWV2ZSgkLFEpe3JldHVybiB0aGlzLl9jbGllbnQuZ2V0KFRgL3YxL21lc3NhZ2VzL2JhdGNoZXMvJHskfWAsUSl9bGlzdCgkPXt9LFEpe3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9tZXNzYWdlcy9iYXRjaGVzXCIsRzQse3F1ZXJ5OiQsLi4uUX0pfWRlbGV0ZSgkLFEpe3JldHVybiB0aGlzLl9jbGllbnQuZGVsZXRlKFRgL3YxL21lc3NhZ2VzL2JhdGNoZXMvJHskfWAsUSl9Y2FuY2VsKCQsUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFRgL3YxL21lc3NhZ2VzL2JhdGNoZXMvJHskfS9jYW5jZWxgLFEpfWFzeW5jIHJlc3VsdHMoJCxRKXtsZXQgSj1hd2FpdCB0aGlzLnJldHJpZXZlKCQpO2lmKCFKLnJlc3VsdHNfdXJsKXRocm93IG5ldyBnKGBObyBiYXRjaCBcXGByZXN1bHRzX3VybFxcYDsgSGFzIGl0IGZpbmlzaGVkIHByb2Nlc3Npbmc/ICR7Si5wcm9jZXNzaW5nX3N0YXR1c30gLSAke0ouaWR9YCk7cmV0dXJuIHRoaXMuX2NsaWVudC5nZXQoSi5yZXN1bHRzX3VybCx7Li4uUSxoZWFkZXJzOlIoW3tBY2NlcHQ6XCJhcHBsaWNhdGlvbi9iaW5hcnlcIn0sUT8uaGVhZGVyc10pLHN0cmVhbTohMCxfX2JpbmFyeVJlc3BvbnNlOiEwfSkuX3RoZW5VbndyYXAoKFksWCk9Pks4LmZyb21SZXNwb25zZShYLnJlc3BvbnNlLFguY29udHJvbGxlcikpfX1jbGFzcyBLMCBleHRlbmRzIHR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuYmF0Y2hlcz1uZXcgdjcodGhpcy5fY2xpZW50KX1jcmVhdGUoJCxRKXtpZigkLm1vZGVsIGluIFR3KWNvbnNvbGUud2FybihgVGhlIG1vZGVsICckeyQubW9kZWx9JyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHJlYWNoIGVuZC1vZi1saWZlIG9uICR7VHdbJC5tb2RlbF19XG5QbGVhc2UgbWlncmF0ZSB0byBhIG5ld2VyIG1vZGVsLiBWaXNpdCBodHRwczovL2RvY3MuYW50aHJvcGljLmNvbS9lbi9kb2NzL3Jlc291cmNlcy9tb2RlbC1kZXByZWNhdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uYCk7aWYoYnYuaW5jbHVkZXMoJC5tb2RlbCkmJiQudGhpbmtpbmcmJiQudGhpbmtpbmcudHlwZT09PVwiZW5hYmxlZFwiKWNvbnNvbGUud2FybihgVXNpbmcgQ2xhdWRlIHdpdGggJHskLm1vZGVsfSBhbmQgJ3RoaW5raW5nLnR5cGU9ZW5hYmxlZCcgaXMgZGVwcmVjYXRlZC4gVXNlICd0aGlua2luZy50eXBlPWFkYXB0aXZlJyBpbnN0ZWFkIHdoaWNoIHJlc3VsdHMgaW4gYmV0dGVyIG1vZGVsIHBlcmZvcm1hbmNlIGluIG91ciB0ZXN0aW5nOiBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9idWlsZC13aXRoLWNsYXVkZS9hZGFwdGl2ZS10aGlua2luZ2ApO2xldCBKPXRoaXMuX2NsaWVudC5fb3B0aW9ucy50aW1lb3V0O2lmKCEkLnN0cmVhbSYmSj09bnVsbCl7bGV0IFg9eFhbJC5tb2RlbF0/P3ZvaWQgMDtKPXRoaXMuX2NsaWVudC5jYWxjdWxhdGVOb25zdHJlYW1pbmdUaW1lb3V0KCQubWF4X3Rva2VucyxYKX1sZXQgWT1UWCgkLnRvb2xzLCQubWVzc2FnZXMpO3JldHVybiB0aGlzLl9jbGllbnQucG9zdChcIi92MS9tZXNzYWdlc1wiLHtib2R5OiQsdGltZW91dDpKPz82MDAwMDAsLi4uUSxoZWFkZXJzOlIoW1ksUT8uaGVhZGVyc10pLHN0cmVhbTokLnN0cmVhbT8/ITF9KX1wYXJzZSgkLFEpe3JldHVybiB0aGlzLmNyZWF0ZSgkLFEpLnRoZW4oKEopPT5KVShKLCQse2xvZ2dlcjp0aGlzLl9jbGllbnQubG9nZ2VyPz9jb25zb2xlfSkpfXN0cmVhbSgkLFEpe3JldHVybiBrNy5jcmVhdGVNZXNzYWdlKHRoaXMsJCxRLHtsb2dnZXI6dGhpcy5fY2xpZW50LmxvZ2dlcj8/Y29uc29sZX0pfWNvdW50VG9rZW5zKCQsUSl7cmV0dXJuIHRoaXMuX2NsaWVudC5wb3N0KFwiL3YxL21lc3NhZ2VzL2NvdW50X3Rva2Vuc1wiLHtib2R5OiQsLi4uUX0pfX12YXIgVHc9e1wiY2xhdWRlLTEuM1wiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtMS4zLTEwMGtcIjpcIk5vdmVtYmVyIDZ0aCwgMjAyNFwiLFwiY2xhdWRlLWluc3RhbnQtMS4xXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS1pbnN0YW50LTEuMS0xMDBrXCI6XCJOb3ZlbWJlciA2dGgsIDIwMjRcIixcImNsYXVkZS1pbnN0YW50LTEuMlwiOlwiTm92ZW1iZXIgNnRoLCAyMDI0XCIsXCJjbGF1ZGUtMy1zb25uZXQtMjAyNDAyMjlcIjpcIkp1bHkgMjFzdCwgMjAyNVwiLFwiY2xhdWRlLTMtb3B1cy0yMDI0MDIyOVwiOlwiSmFudWFyeSA1dGgsIDIwMjZcIixcImNsYXVkZS0yLjFcIjpcIkp1bHkgMjFzdCwgMjAyNVwiLFwiY2xhdWRlLTIuMFwiOlwiSnVseSAyMXN0LCAyMDI1XCIsXCJjbGF1ZGUtMy03LXNvbm5ldC1sYXRlc3RcIjpcIkZlYnJ1YXJ5IDE5dGgsIDIwMjZcIixcImNsYXVkZS0zLTctc29ubmV0LTIwMjUwMjE5XCI6XCJGZWJydWFyeSAxOXRoLCAyMDI2XCIsXCJjbGF1ZGUtMy01LWhhaWt1LWxhdGVzdFwiOlwiRmVicnVhcnkgMTl0aCwgMjAyNlwiLFwiY2xhdWRlLTMtNS1oYWlrdS0yMDI0MTAyMlwiOlwiRmVicnVhcnkgMTl0aCwgMjAyNlwiLFwiY2xhdWRlLW9wdXMtNC0wXCI6XCJKdW5lIDE1dGgsIDIwMjZcIixcImNsYXVkZS1vcHVzLTQtMjAyNTA1MTRcIjpcIkp1bmUgMTV0aCwgMjAyNlwiLFwiY2xhdWRlLXNvbm5ldC00LTBcIjpcIkp1bmUgMTV0aCwgMjAyNlwiLFwiY2xhdWRlLXNvbm5ldC00LTIwMjUwNTE0XCI6XCJKdW5lIDE1dGgsIDIwMjZcIn0sYnY9W1wiY2xhdWRlLW15dGhvcy1wcmV2aWV3XCIsXCJjbGF1ZGUtb3B1cy00LTZcIl07SzAuQmF0Y2hlcz12NztjbGFzcyBGOCBleHRlbmRzIHR7cmV0cmlldmUoJCxRPXt9LEope2xldHtiZXRhczpZfT1RPz97fTtyZXR1cm4gdGhpcy5fY2xpZW50LmdldChUYC92MS9tb2RlbHMvJHskfWAsey4uLkosaGVhZGVyczpSKFt7Li4uWT8udG9TdHJpbmcoKSE9bnVsbD97XCJhbnRocm9waWMtYmV0YVwiOlk/LnRvU3RyaW5nKCl9OnZvaWQgMH0sSj8uaGVhZGVyc10pfSl9bGlzdCgkPXt9LFEpe2xldHtiZXRhczpKLC4uLll9PSQ/P3t9O3JldHVybiB0aGlzLl9jbGllbnQuZ2V0QVBJTGlzdChcIi92MS9tb2RlbHNcIixHNCx7cXVlcnk6WSwuLi5RLGhlYWRlcnM6Uihbey4uLko/LnRvU3RyaW5nKCkhPW51bGw/e1wiYW50aHJvcGljLWJldGFcIjpKPy50b1N0cmluZygpfTp2b2lkIDB9LFE/LmhlYWRlcnNdKX0pfX12YXIgSFUsS1UsdFgseHcsZnc9XCJcXFxcblxcXFxuSHVtYW46XCIseXc9XCJcXFxcblxcXFxuQXNzaXN0YW50OlwiO2NsYXNzIHkke2dldCBjcmVkZW50aWFscygpe3JldHVybiB0aGlzLl9hdXRoU3RhdGUucHJvdmlkZXJ9Y29uc3RydWN0b3Ioe2Jhc2VVUkw6JD13JChcIkFOVEhST1BJQ19CQVNFX1VSTFwiKSxhcGlLZXk6USxhdXRoVG9rZW46SiwuLi5ZfT17fSl7aWYoSFUuYWRkKHRoaXMpLHRoaXMuX3JlcXVlc3RBdXRoRmxhZ3M9bmV3IFdlYWtNYXAsdFguc2V0KHRoaXMsdm9pZCAwKSxRPT09dm9pZCAwKVE9WS5wcm9maWxlIT1udWxsP251bGw6dyQoXCJBTlRIUk9QSUNfQVBJX0tFWVwiKT8/bnVsbDtpZihKPT09dm9pZCAwKUo9WS5wcm9maWxlIT1udWxsP251bGw6dyQoXCJBTlRIUk9QSUNfQVVUSF9UT0tFTlwiKT8/bnVsbDtpZihZLnByb2ZpbGUhPW51bGwmJihZLmNyZWRlbnRpYWxzIT1udWxsfHxZLmNvbmZpZyE9bnVsbCkpdGhyb3cgVHlwZUVycm9yKFwiUGFzcyBhdCBtb3N0IG9uZSBvZiBgcHJvZmlsZWAsIGBjcmVkZW50aWFsc2AsIG9yIGBjb25maWdgLlwiKTtsZXQgWD17YXBpS2V5OlEsYXV0aFRva2VuOkosLi4uWSxiYXNlVVJMOiR8fFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwifTtpZighWC5kYW5nZXJvdXNseUFsbG93QnJvd3NlciYmaE4oKSl0aHJvdyBuZXcgZyhgSXQgbG9va3MgbGlrZSB5b3UncmUgcnVubmluZyBpbiBhIGJyb3dzZXItbGlrZSBlbnZpcm9ubWVudC5cblxuVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBhcyBpdCByaXNrcyBleHBvc2luZyB5b3VyIHNlY3JldCBBUEkgY3JlZGVudGlhbHMgdG8gYXR0YWNrZXJzLlxuSWYgeW91IHVuZGVyc3RhbmQgdGhlIHJpc2tzIGFuZCBoYXZlIGFwcHJvcHJpYXRlIG1pdGlnYXRpb25zIGluIHBsYWNlLFxueW91IGNhbiBzZXQgdGhlIFxcYGRhbmdlcm91c2x5QWxsb3dCcm93c2VyXFxgIG9wdGlvbiB0byBcXGB0cnVlXFxgLCBlLmcuLFxuXG5uZXcgQW50aHJvcGljKHsgYXBpS2V5LCBkYW5nZXJvdXNseUFsbG93QnJvd3NlcjogdHJ1ZSB9KTtcbmApO3RoaXMuYmFzZVVSTD1YLmJhc2VVUkwsdGhpcy5fYmFzZVVSTElzRXhwbGljaXQ9WS5fX2Jhc2VVUkxJc0V4cGxpY2l0Pz8hISQsdGhpcy50aW1lb3V0PVgudGltZW91dD8/S1UuREVGQVVMVF9USU1FT1VULHRoaXMubG9nZ2VyPVgubG9nZ2VyPz9jb25zb2xlO2xldCBXPVwid2FyblwiO3RoaXMubG9nTGV2ZWw9Vyx0aGlzLmxvZ0xldmVsPXlHKFgubG9nTGV2ZWwsXCJDbGllbnRPcHRpb25zLmxvZ0xldmVsXCIsdGhpcyk/P3lHKHckKFwiQU5USFJPUElDX0xPR1wiKSxcInByb2Nlc3MuZW52WydBTlRIUk9QSUNfTE9HJ11cIix0aGlzKT8/Vyx0aGlzLmZldGNoT3B0aW9ucz1YLmZldGNoT3B0aW9ucyx0aGlzLm1heFJldHJpZXM9WC5tYXhSZXRyaWVzPz8yLHRoaXMuZmV0Y2g9WC5mZXRjaD8/dU4oKSxmKHRoaXMsdFgsbE4sXCJmXCIpO2xldCBHPXckKFwiQU5USFJPUElDX0NVU1RPTV9IRUFERVJTXCIpO2lmKEcpe2xldCBIPXt9O2ZvcihsZXQgcSBvZiBHLnNwbGl0KGBcbmApKXtsZXQgVj1xLmluZGV4T2YoXCI6XCIpO2lmKFY+PTApSFtxLnN1YnN0cmluZygwLFYpLnRyaW0oKV09cS5zdWJzdHJpbmcoVisxKS50cmltKCl9WC5kZWZhdWx0SGVhZGVycz17Li4uSCwuLi5YLmRlZmF1bHRIZWFkZXJzfX1sZXQgVT1ZLl9fYXV0aDtpZihkZWxldGUgWC5fX2F1dGgsZGVsZXRlIFguX19iYXNlVVJMSXNFeHBsaWNpdCx0aGlzLl9vcHRpb25zPVgsdGhpcy5hcGlLZXk9dHlwZW9mIFE9PT1cInN0cmluZ1wiP1E6bnVsbCx0aGlzLmF1dGhUb2tlbj1KLFUpe2lmKHRoaXMuX2F1dGhTdGF0ZT1VLCF0aGlzLl9iYXNlVVJMSXNFeHBsaWNpdCYmVS5iYXNlVVJMKXRoaXMuYmFzZVVSTD1VLmJhc2VVUkx9ZWxzZSBpZih0aGlzLl9hdXRoU3RhdGU9e3Byb3ZpZGVyOm51bGwsdG9rZW5DYWNoZTpudWxsLHJlc29sdXRpb246bnVsbCxlcnJvcjpudWxsLGV4dHJhSGVhZGVyczp7fX0sdGhpcy5hcGlLZXk9PW51bGwmJnRoaXMuYXV0aFRva2VuPT1udWxsKXtsZXQgSD1YLmNyZWRlbnRpYWxzPz9udWxsO2lmKEgpdGhpcy5fYXV0aFN0YXRlLnByb3ZpZGVyPUgsdGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGU9dGhpcy5fbWFrZVRva2VuQ2FjaGUoSCk7ZWxzZSBpZihYLmNvbmZpZyE9bnVsbCl7bGV0IHE9dUcoWC5jb25maWcsdGhpcy5fY3JlZGVudGlhbFJlc29sdmVyT3B0aW9ucygpKTt0aGlzLl9hdXRoU3RhdGUucHJvdmlkZXI9cS5wcm92aWRlcix0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZT10aGlzLl9tYWtlVG9rZW5DYWNoZShxLnByb3ZpZGVyKSx0aGlzLl9hdXRoU3RhdGUuZXh0cmFIZWFkZXJzPXEuZXh0cmFIZWFkZXJzLHRoaXMuX2FwcGx5Q3JlZGVudGlhbEJhc2VVUkwocS5iYXNlVVJMKX1lbHNlIGlmKFgucHJvZmlsZSE9bnVsbCl0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbj10aGlzLl9yZXNvbHZlRGVmYXVsdENyZWRlbnRpYWxzKFgucHJvZmlsZSk7ZWxzZSB0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbj10aGlzLl9yZXNvbHZlRGVmYXVsdENyZWRlbnRpYWxzKCl9fV9hcHBseUNyZWRlbnRpYWxCYXNlVVJMKCQpe2lmKCEkKXJldHVybjtsZXQgUT0kLnJlcGxhY2UoL1xcLyskLyxcIlwiKTtpZih0aGlzLl9hdXRoU3RhdGUuYmFzZVVSTD1RLCF0aGlzLl9iYXNlVVJMSXNFeHBsaWNpdCl0aGlzLmJhc2VVUkw9UX1fY3JlZGVudGlhbFJlc29sdmVyT3B0aW9ucygpe3JldHVybntiYXNlVVJMOnRoaXMuYmFzZVVSTCxmZXRjaDp0aGlzLmZldGNoLHVzZXJBZ2VudDp0aGlzLmdldFVzZXJBZ2VudCgpLG9uQ2FjaGVXcml0ZUVycm9yOigkKT0+e3UkKHRoaXMpLmRlYnVnKFwiY3JlZGVudGlhbCBjYWNoZSB3cml0ZSBmYWlsZWQgKGJlc3QtZWZmb3J0KVwiLCQpfSxvblNhZmV0eVdhcm5pbmc6KCQpPT57dSQodGhpcykud2FybigkKX19fV9tYWtlVG9rZW5DYWNoZSgkKXtyZXR1cm4gbmV3IHhHKCQsKFEpPT57dSQodGhpcykuZGVidWcoXCJhZHZpc29yeSB0b2tlbiByZWZyZXNoIGZhaWxlZDsgc2VydmluZyBjYWNoZWQgdG9rZW5cIixRKX0pfXdpdGhPcHRpb25zKCQpe2xldCBRPVwiY3JlZGVudGlhbHNcImluICR8fFwiY29uZmlnXCJpbiAkfHxcInByb2ZpbGVcImluICQsSj1cImFwaUtleVwiaW4gJHx8XCJhdXRoVG9rZW5cImluICR8fFEsWT17Li4udGhpcy5fb3B0aW9ucywuLi50aGlzLl9iYXNlVVJMSXNFeHBsaWNpdD97YmFzZVVSTDp0aGlzLmJhc2VVUkx9Ont9LG1heFJldHJpZXM6dGhpcy5tYXhSZXRyaWVzLHRpbWVvdXQ6dGhpcy50aW1lb3V0LGxvZ2dlcjp0aGlzLmxvZ2dlcixsb2dMZXZlbDp0aGlzLmxvZ0xldmVsLGZldGNoOnRoaXMuZmV0Y2gsZmV0Y2hPcHRpb25zOnRoaXMuZmV0Y2hPcHRpb25zLGFwaUtleTp0aGlzLmFwaUtleSxhdXRoVG9rZW46dGhpcy5hdXRoVG9rZW4sY3JlZGVudGlhbHM6dGhpcy5jcmVkZW50aWFscywuLi5RP3tjcmVkZW50aWFsczp2b2lkIDAsY29uZmlnOnZvaWQgMCxwcm9maWxlOnZvaWQgMH06e30sLi4uJCxfX2F1dGg6Sj92b2lkIDA6dGhpcy5fYXV0aFN0YXRlLF9fYmFzZVVSTElzRXhwbGljaXQ6XCJiYXNlVVJMXCJpbiAkPyEwOnRoaXMuX2Jhc2VVUkxJc0V4cGxpY2l0fTtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoWSl9YXN5bmMgX3Jlc29sdmVEZWZhdWx0Q3JlZGVudGlhbHMoJCl7dHJ5e2xldCBRPWF3YWl0IFV3KHRoaXMuX2NyZWRlbnRpYWxSZXNvbHZlck9wdGlvbnMoKSwkKTtpZihRKXRoaXMuX2F1dGhTdGF0ZS5wcm92aWRlcj1RLnByb3ZpZGVyLHRoaXMuX2F1dGhTdGF0ZS50b2tlbkNhY2hlPXRoaXMuX21ha2VUb2tlbkNhY2hlKFEucHJvdmlkZXIpLHRoaXMuX2F1dGhTdGF0ZS5leHRyYUhlYWRlcnM9US5leHRyYUhlYWRlcnMsdGhpcy5fYXBwbHlDcmVkZW50aWFsQmFzZVVSTChRLmJhc2VVUkwpO2Vsc2UgaWYoJCE9bnVsbCl0aHJvdyBuZXcgZyhgUHJvZmlsZSBcIiR7JH1cIiBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgKG5vIDxjb25maWdfZGlyPi9jb25maWdzLyR7JH0uanNvbiBmb3VuZCkuYCl9Y2F0Y2goUSl7dGhpcy5fYXV0aFN0YXRlLmVycm9yPVF9ZmluYWxseXt0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbj1udWxsfX1kZWZhdWx0UXVlcnkoKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5kZWZhdWx0UXVlcnl9dmFsaWRhdGVIZWFkZXJzKHt2YWx1ZXM6JCxudWxsczpRfSl7aWYoJC5nZXQoXCJ4LWFwaS1rZXlcIil8fCQuZ2V0KFwiYXV0aG9yaXphdGlvblwiKSlyZXR1cm47aWYodGhpcy5fYXV0aFN0YXRlLmVycm9yKXRocm93IHRoaXMuX2F1dGhTdGF0ZS5lcnJvcjtpZih0aGlzLl9hdXRoU3RhdGUudG9rZW5DYWNoZXx8dGhpcy5fYXV0aFN0YXRlLnJlc29sdXRpb24pcmV0dXJuO2lmKHRoaXMuYXBpS2V5JiYkLmdldChcIngtYXBpLWtleVwiKSlyZXR1cm47aWYoUS5oYXMoXCJ4LWFwaS1rZXlcIikpcmV0dXJuO2lmKHRoaXMuYXV0aFRva2VuJiYkLmdldChcImF1dGhvcml6YXRpb25cIikpcmV0dXJuO2lmKFEuaGFzKFwiYXV0aG9yaXphdGlvblwiKSlyZXR1cm47dGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4gRXhwZWN0ZWQgb25lIG9mIGFwaUtleSwgYXV0aFRva2VuLCBjcmVkZW50aWFscywgY29uZmlnLCBvciBwcm9maWxlIHRvIGJlIHNldC4gT3IgZm9yIG9uZSBvZiB0aGUgXCJYLUFwaS1LZXlcIiBvciBcIkF1dGhvcml6YXRpb25cIiBoZWFkZXJzIHRvIGJlIGV4cGxpY2l0bHkgb21pdHRlZCcpfV9hdXRoRmxhZ3MoJCl7bGV0IFE9dGhpcy5fcmVxdWVzdEF1dGhGbGFncy5nZXQoJCk7aWYoIVEpUT17dXNlZFRva2VuQ2FjaGU6ITEsZGlkUmVmcmVzaEZvcjQwMTohMX0sdGhpcy5fcmVxdWVzdEF1dGhGbGFncy5zZXQoJCxRKTtyZXR1cm4gUX1hc3luYyBhdXRoSGVhZGVycygkKXtpZih0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbilhd2FpdCB0aGlzLl9hdXRoU3RhdGUucmVzb2x1dGlvbjtpZih0aGlzLl9hdXRoU3RhdGUuZXJyb3IpcmV0dXJuO2lmKHRoaXMuX2F1dGhTdGF0ZS50b2tlbkNhY2hlJiZ0aGlzLmFwaUtleT09bnVsbCl7bGV0IFE9YXdhaXQgdGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGUuZ2V0VG9rZW4oKTtyZXR1cm4gdGhpcy5fYXV0aEZsYWdzKCQpLnVzZWRUb2tlbkNhY2hlPSEwLFIoW3tBdXRob3JpemF0aW9uOmBCZWFyZXIgJHtRfWB9XSl9cmV0dXJuIFIoW2F3YWl0IHRoaXMuYXBpS2V5QXV0aCgkKSxhd2FpdCB0aGlzLmJlYXJlckF1dGgoJCldKX1hc3luYyBhcGlLZXlBdXRoKCQpe2lmKHRoaXMuYXBpS2V5PT1udWxsKXJldHVybjtyZXR1cm4gUihbe1wiWC1BcGktS2V5XCI6dGhpcy5hcGlLZXl9XSl9YXN5bmMgYmVhcmVyQXV0aCgkKXtpZih0aGlzLmF1dGhUb2tlbj09bnVsbClyZXR1cm47cmV0dXJuIFIoW3tBdXRob3JpemF0aW9uOmBCZWFyZXIgJHt0aGlzLmF1dGhUb2tlbn1gfV0pfXN0cmluZ2lmeVF1ZXJ5KCQpe3JldHVybiBjTigkKX1nZXRVc2VyQWdlbnQoKXtyZXR1cm5gJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9L0pTICR7ZDZ9YH1kZWZhdWx0SWRlbXBvdGVuY3lLZXkoKXtyZXR1cm5gc3RhaW5sZXNzLW5vZGUtcmV0cnktJHtfRygpfWB9bWFrZVN0YXR1c0Vycm9yKCQsUSxKLFkpe3JldHVybiBuJC5nZW5lcmF0ZSgkLFEsSixZKX1idWlsZFVSTCgkLFEsSil7bGV0IFk9IVoodGhpcyxIVSxcIm1cIix4dykuY2FsbCh0aGlzKSYmSnx8dGhpcy5iYXNlVVJMLFg9dk4oJCk/bmV3IFVSTCgkKTpuZXcgVVJMKFkrKFkuZW5kc1dpdGgoXCIvXCIpJiYkLnN0YXJ0c1dpdGgoXCIvXCIpPyQuc2xpY2UoMSk6JCkpLFc9dGhpcy5kZWZhdWx0UXVlcnkoKSxHPU9iamVjdC5mcm9tRW50cmllcyhYLnNlYXJjaFBhcmFtcyk7aWYoIXZHKFcpfHwhdkcoRykpUT17Li4uRywuLi5XLC4uLlF9O2lmKHR5cGVvZiBRPT09XCJvYmplY3RcIiYmUSYmIUFycmF5LmlzQXJyYXkoUSkpWC5zZWFyY2g9dGhpcy5zdHJpbmdpZnlRdWVyeShRKTtyZXR1cm4gWC50b1N0cmluZygpfV9jYWxjdWxhdGVOb25zdHJlYW1pbmdUaW1lb3V0KCQpe2lmKDM2MDAqJC8xMjgwMDA+NjAwKXRocm93IG5ldyBnKFwiU3RyZWFtaW5nIGlzIHJlcXVpcmVkIGZvciBvcGVyYXRpb25zIHRoYXQgbWF5IHRha2UgbG9uZ2VyIHRoYW4gMTAgbWludXRlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRocm9waWNzL2FudGhyb3BpYy1zZGstdHlwZXNjcmlwdCNzdHJlYW1pbmctcmVzcG9uc2VzIGZvciBtb3JlIGRldGFpbHNcIik7cmV0dXJuIDYwMDAwMH1hc3luYyBwcmVwYXJlT3B0aW9ucygkKXt9YXN5bmMgcHJlcGFyZVJlcXVlc3QoJCx7dXJsOlEsb3B0aW9uczpKfSl7aWYodGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGUmJnRoaXMuYXBpS2V5PT1udWxsKXtsZXQgWT0kLmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzPyQuaGVhZGVyczpuZXcgSGVhZGVycygkLmhlYWRlcnMpO2ZvcihsZXRbVyxHXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2F1dGhTdGF0ZS5leHRyYUhlYWRlcnMpKWlmKCFZLmhhcyhXKSlZLnNldChXLEcpO2lmKCFZLmdldChcImFudGhyb3BpYy1iZXRhXCIpPy5zcGxpdChcIixcIikubWFwKChXKT0+Vy50cmltKCkpPy5pbmNsdWRlcyhRMCkpWS5hcHBlbmQoXCJhbnRocm9waWMtYmV0YVwiLFEwKTskLmhlYWRlcnM9WX19Z2V0KCQsUSl7cmV0dXJuIHRoaXMubWV0aG9kUmVxdWVzdChcImdldFwiLCQsUSl9cG9zdCgkLFEpe3JldHVybiB0aGlzLm1ldGhvZFJlcXVlc3QoXCJwb3N0XCIsJCxRKX1wYXRjaCgkLFEpe3JldHVybiB0aGlzLm1ldGhvZFJlcXVlc3QoXCJwYXRjaFwiLCQsUSl9cHV0KCQsUSl7cmV0dXJuIHRoaXMubWV0aG9kUmVxdWVzdChcInB1dFwiLCQsUSl9ZGVsZXRlKCQsUSl7cmV0dXJuIHRoaXMubWV0aG9kUmVxdWVzdChcImRlbGV0ZVwiLCQsUSl9bWV0aG9kUmVxdWVzdCgkLFEsSil7cmV0dXJuIHRoaXMucmVxdWVzdChQcm9taXNlLnJlc29sdmUoSikudGhlbigoWSk9PntyZXR1cm57bWV0aG9kOiQscGF0aDpRLC4uLll9fSkpfXJlcXVlc3QoJCxRPW51bGwpe3JldHVybiBuZXcgSjAodGhpcyx0aGlzLm1ha2VSZXF1ZXN0KCQsUSx2b2lkIDApKX1hc3luYyBtYWtlUmVxdWVzdCgkLFEsSil7bGV0IFk9YXdhaXQgJCxYPVkubWF4UmV0cmllcz8/dGhpcy5tYXhSZXRyaWVzO2lmKFE9PW51bGwpUT1YLHRoaXMuX3JlcXVlc3RBdXRoRmxhZ3MuZGVsZXRlKFkpO2F3YWl0IHRoaXMucHJlcGFyZU9wdGlvbnMoWSk7bGV0e3JlcTpXLHVybDpHLHRpbWVvdXQ6VX09YXdhaXQgdGhpcy5idWlsZFJlcXVlc3QoWSx7cmV0cnlDb3VudDpYLVF9KTthd2FpdCB0aGlzLnByZXBhcmVSZXF1ZXN0KFcse3VybDpHLG9wdGlvbnM6WX0pO2xldCBIPVwibG9nX1wiKyhNYXRoLnJhbmRvbSgpKjE2Nzc3MjE2fDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LFwiMFwiKSxxPUo9PT12b2lkIDA/XCJcIjpgLCByZXRyeU9mOiAke0p9YCxWPURhdGUubm93KCk7aWYodSQodGhpcykuZGVidWcoYFske0h9XSBzZW5kaW5nIHJlcXVlc3RgLHk0KHtyZXRyeU9mUmVxdWVzdExvZ0lEOkosbWV0aG9kOlkubWV0aG9kLHVybDpHLG9wdGlvbnM6WSxoZWFkZXJzOlcuaGVhZGVyc30pKSxZLnNpZ25hbD8uYWJvcnRlZCl0aHJvdyBuZXcgUTY7bGV0IEI9bmV3IEFib3J0Q29udHJvbGxlcix6PWF3YWl0IHRoaXMuZmV0Y2hXaXRoVGltZW91dChHLFcsVSxCKS5jYXRjaCh1OSksTj1EYXRlLm5vdygpO2lmKHogaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKXtsZXQgRD1gcmV0cnlpbmcsICR7UX0gYXR0ZW1wdHMgcmVtYWluaW5nYDtpZihZLnNpZ25hbD8uYWJvcnRlZCl0aHJvdyBuZXcgUTY7bGV0IE09ZjQoeil8fC90aW1lZD8gP291dC9pLnRlc3QoU3RyaW5nKHopKyhcImNhdXNlXCJpbiB6P1N0cmluZyh6LmNhdXNlKTpcIlwiKSk7aWYoUSlyZXR1cm4gdSQodGhpcykuaW5mbyhgWyR7SH1dIGNvbm5lY3Rpb24gJHtNP1widGltZWQgb3V0XCI6XCJmYWlsZWRcIn0gLSAke0R9YCksdSQodGhpcykuZGVidWcoYFske0h9XSBjb25uZWN0aW9uICR7TT9cInRpbWVkIG91dFwiOlwiZmFpbGVkXCJ9ICgke0R9KWAseTQoe3JldHJ5T2ZSZXF1ZXN0TG9nSUQ6Six1cmw6RyxkdXJhdGlvbk1zOk4tVixtZXNzYWdlOnoubWVzc2FnZX0pKSx0aGlzLnJldHJ5UmVxdWVzdChZLFEsSj8/SCk7aWYodSQodGhpcykuaW5mbyhgWyR7SH1dIGNvbm5lY3Rpb24gJHtNP1widGltZWQgb3V0XCI6XCJmYWlsZWRcIn0gLSBlcnJvcjsgbm8gbW9yZSByZXRyaWVzIGxlZnRgKSx1JCh0aGlzKS5kZWJ1ZyhgWyR7SH1dIGNvbm5lY3Rpb24gJHtNP1widGltZWQgb3V0XCI6XCJmYWlsZWRcIn0gKGVycm9yOyBubyBtb3JlIHJldHJpZXMgbGVmdClgLHk0KHtyZXRyeU9mUmVxdWVzdExvZ0lEOkosdXJsOkcsZHVyYXRpb25NczpOLVYsbWVzc2FnZTp6Lm1lc3NhZ2V9KSksTSl0aHJvdyBuZXcgbTk7dGhyb3cgbmV3ICQwKHtjYXVzZTp6fSl9bGV0IHc9Wy4uLnouaGVhZGVycy5lbnRyaWVzKCldLmZpbHRlcigoW0RdKT0+RD09PVwicmVxdWVzdC1pZFwiKS5tYXAoKFtELE1dKT0+XCIsIFwiK0QrXCI6IFwiK0pTT04uc3RyaW5naWZ5KE0pKS5qb2luKFwiXCIpLE89YFske0h9JHtxfSR7d31dICR7Vy5tZXRob2R9ICR7R30gJHt6Lm9rP1wic3VjY2VlZGVkXCI6XCJmYWlsZWRcIn0gd2l0aCBzdGF0dXMgJHt6LnN0YXR1c30gaW4gJHtOLVZ9bXNgO2lmKCF6Lm9rKXtsZXQgRD1hd2FpdCB0aGlzLnNob3VsZFJldHJ5KHosWSk7aWYoUSYmRCl7bGV0IEckPWByZXRyeWluZywgJHtRfSBhdHRlbXB0cyByZW1haW5pbmdgO3JldHVybiBhd2FpdCBtTih6LmJvZHkpLHUkKHRoaXMpLmluZm8oYCR7T30gLSAke0ckfWApLHUkKHRoaXMpLmRlYnVnKGBbJHtIfV0gcmVzcG9uc2UgZXJyb3IgKCR7RyR9KWAseTQoe3JldHJ5T2ZSZXF1ZXN0TG9nSUQ6Six1cmw6ei51cmwsc3RhdHVzOnouc3RhdHVzLGhlYWRlcnM6ei5oZWFkZXJzLGR1cmF0aW9uTXM6Ti1WfSkpLHRoaXMucmV0cnlSZXF1ZXN0KFksUSxKPz9ILHouaGVhZGVycyl9bGV0IE09RD9cImVycm9yOyBubyBtb3JlIHJldHJpZXMgbGVmdFwiOlwiZXJyb3I7IG5vdCByZXRyeWFibGVcIjt1JCh0aGlzKS5pbmZvKGAke099IC0gJHtNfWApO2xldCBqPWF3YWl0IHoudGV4dCgpLmNhdGNoKChHJCk9PnU5KEckKS5tZXNzYWdlKSxBPVpYKGopLGs9QT92b2lkIDA6ajt0aHJvdyB1JCh0aGlzKS5kZWJ1ZyhgWyR7SH1dIHJlc3BvbnNlIGVycm9yICgke019KWAseTQoe3JldHJ5T2ZSZXF1ZXN0TG9nSUQ6Six1cmw6ei51cmwsc3RhdHVzOnouc3RhdHVzLGhlYWRlcnM6ei5oZWFkZXJzLG1lc3NhZ2U6ayxkdXJhdGlvbk1zOkRhdGUubm93KCktVn0pKSx0aGlzLm1ha2VTdGF0dXNFcnJvcih6LnN0YXR1cyxBLGssei5oZWFkZXJzKX1yZXR1cm4gdSQodGhpcykuaW5mbyhPKSx1JCh0aGlzKS5kZWJ1ZyhgWyR7SH1dIHJlc3BvbnNlIHN0YXJ0YCx5NCh7cmV0cnlPZlJlcXVlc3RMb2dJRDpKLHVybDp6LnVybCxzdGF0dXM6ei5zdGF0dXMsaGVhZGVyczp6LmhlYWRlcnMsZHVyYXRpb25NczpOLVZ9KSkse3Jlc3BvbnNlOnosb3B0aW9uczpZLGNvbnRyb2xsZXI6QixyZXF1ZXN0TG9nSUQ6SCxyZXRyeU9mUmVxdWVzdExvZ0lEOkosc3RhcnRUaW1lOlZ9fWdldEFQSUxpc3QoJCxRLEope3JldHVybiB0aGlzLnJlcXVlc3RBUElMaXN0KFEsSiYmXCJ0aGVuXCJpbiBKP0oudGhlbigoWSk9Pih7bWV0aG9kOlwiZ2V0XCIscGF0aDokLC4uLll9KSk6e21ldGhvZDpcImdldFwiLHBhdGg6JCwuLi5KfSl9cmVxdWVzdEFQSUxpc3QoJCxRKXtsZXQgSj10aGlzLm1ha2VSZXF1ZXN0KFEsbnVsbCx2b2lkIDApO3JldHVybiBuZXcga1godGhpcyxKLCQpfWFzeW5jIGZldGNoV2l0aFRpbWVvdXQoJCxRLEosWSl7bGV0e3NpZ25hbDpYLG1ldGhvZDpXLC4uLkd9PVF8fHt9LFU9dGhpcy5fbWFrZUFib3J0KFkpO2lmKFgpWC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixVLHtvbmNlOiEwfSk7bGV0IEg9c2V0VGltZW91dChVLEopLHE9Z2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSYmRy5ib2R5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbXx8dHlwZW9mIEcuYm9keT09PVwib2JqZWN0XCImJkcuYm9keSE9PW51bGwmJlN5bWJvbC5hc3luY0l0ZXJhdG9yIGluIEcuYm9keSxWPXtzaWduYWw6WS5zaWduYWwsLi4ucT97ZHVwbGV4OlwiaGFsZlwifTp7fSxtZXRob2Q6XCJHRVRcIiwuLi5HfTtpZihXKVYubWV0aG9kPVcudG9VcHBlckNhc2UoKTt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2guY2FsbCh2b2lkIDAsJCxWKX1maW5hbGx5e2NsZWFyVGltZW91dChIKX19YXN5bmMgc2hvdWxkUmV0cnkoJCxRKXtsZXQgSj10aGlzLl9hdXRoRmxhZ3MoUSk7aWYoJC5zdGF0dXM9PT00MDEmJnRoaXMuX2F1dGhTdGF0ZS50b2tlbkNhY2hlJiZKLnVzZWRUb2tlbkNhY2hlJiYhSi5kaWRSZWZyZXNoRm9yNDAxKXJldHVybiBKLmRpZFJlZnJlc2hGb3I0MDE9ITAsdGhpcy5fYXV0aFN0YXRlLnRva2VuQ2FjaGUuaW52YWxpZGF0ZSgpLCEwO2xldCBZPSQuaGVhZGVycy5nZXQoXCJ4LXNob3VsZC1yZXRyeVwiKTtpZihZPT09XCJ0cnVlXCIpcmV0dXJuITA7aWYoWT09PVwiZmFsc2VcIilyZXR1cm4hMTtpZigkLnN0YXR1cz09PTQwOClyZXR1cm4hMDtpZigkLnN0YXR1cz09PTQwOSlyZXR1cm4hMDtpZigkLnN0YXR1cz09PTQyOSlyZXR1cm4hMDtpZigkLnN0YXR1cz49NTAwKXJldHVybiEwO3JldHVybiExfWFzeW5jIHJldHJ5UmVxdWVzdCgkLFEsSixZKXtsZXQgWCxXPVk/LmdldChcInJldHJ5LWFmdGVyLW1zXCIpO2lmKFcpe2xldCBVPXBhcnNlRmxvYXQoVyk7aWYoIU51bWJlci5pc05hTihVKSlYPVV9bGV0IEc9WT8uZ2V0KFwicmV0cnktYWZ0ZXJcIik7aWYoRyYmIVgpe2xldCBVPXBhcnNlRmxvYXQoRyk7aWYoIU51bWJlci5pc05hTihVKSlYPVUqMTAwMDtlbHNlIFg9RGF0ZS5wYXJzZShHKS1EYXRlLm5vdygpfWlmKFg9PT12b2lkIDApe2xldCBVPSQubWF4UmV0cmllcz8/dGhpcy5tYXhSZXRyaWVzO1g9dGhpcy5jYWxjdWxhdGVEZWZhdWx0UmV0cnlUaW1lb3V0TWlsbGlzKFEsVSl9cmV0dXJuIGF3YWl0IHhOKFgpLHRoaXMubWFrZVJlcXVlc3QoJCxRLTEsSil9Y2FsY3VsYXRlRGVmYXVsdFJldHJ5VGltZW91dE1pbGxpcygkLFEpe2xldCBYPVEtJCxXPU1hdGgubWluKDAuNSpNYXRoLnBvdygyLFgpLDgpLEc9MS1NYXRoLnJhbmRvbSgpKjAuMjU7cmV0dXJuIFcqRyoxMDAwfWNhbGN1bGF0ZU5vbnN0cmVhbWluZ1RpbWVvdXQoJCxRKXtpZigzNjAwMDAwKiQvMTI4MDAwPjYwMDAwMHx8USE9bnVsbCYmJD5RKXRocm93IG5ldyBnKFwiU3RyZWFtaW5nIGlzIHJlcXVpcmVkIGZvciBvcGVyYXRpb25zIHRoYXQgbWF5IHRha2UgbG9uZ2VyIHRoYW4gMTAgbWludXRlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRocm9waWNzL2FudGhyb3BpYy1zZGstdHlwZXNjcmlwdCNsb25nLXJlcXVlc3RzIGZvciBtb3JlIGRldGFpbHNcIik7cmV0dXJuIDYwMDAwMH1hc3luYyBidWlsZFJlcXVlc3QoJCx7cmV0cnlDb3VudDpRPTB9PXt9KXtsZXQgSj17Li4uJH0se21ldGhvZDpZLHBhdGg6WCxxdWVyeTpXLGRlZmF1bHRCYXNlVVJMOkd9PUo7aWYodGhpcy5fYXV0aFN0YXRlLnJlc29sdXRpb24pYXdhaXQgdGhpcy5fYXV0aFN0YXRlLnJlc29sdXRpb247aWYoIXRoaXMuX2Jhc2VVUkxJc0V4cGxpY2l0JiZ0aGlzLl9hdXRoU3RhdGUuYmFzZVVSTCYmdGhpcy5iYXNlVVJMIT09dGhpcy5fYXV0aFN0YXRlLmJhc2VVUkwpdGhpcy5iYXNlVVJMPXRoaXMuX2F1dGhTdGF0ZS5iYXNlVVJMO2xldCBVPXRoaXMuYnVpbGRVUkwoWCxXLEcpO2lmKFwidGltZW91dFwiaW4gSilUTihcInRpbWVvdXRcIixKLnRpbWVvdXQpO0oudGltZW91dD1KLnRpbWVvdXQ/P3RoaXMudGltZW91dDtsZXR7Ym9keUhlYWRlcnM6SCxib2R5OnF9PXRoaXMuYnVpbGRCb2R5KHtvcHRpb25zOkp9KSxWPWF3YWl0IHRoaXMuYnVpbGRIZWFkZXJzKHtvcHRpb25zOiQsbWV0aG9kOlksYm9keUhlYWRlcnM6SCxyZXRyeUNvdW50OlF9KTtyZXR1cm57cmVxOnttZXRob2Q6WSxoZWFkZXJzOlYsLi4uSi5zaWduYWwmJntzaWduYWw6Si5zaWduYWx9LC4uLmdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0mJnEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtJiZ7ZHVwbGV4OlwiaGFsZlwifSwuLi5xJiZ7Ym9keTpxfSwuLi50aGlzLmZldGNoT3B0aW9ucz8/e30sLi4uSi5mZXRjaE9wdGlvbnM/P3t9fSx1cmw6VSx0aW1lb3V0OkoudGltZW91dH19YXN5bmMgYnVpbGRIZWFkZXJzKHtvcHRpb25zOiQsbWV0aG9kOlEsYm9keUhlYWRlcnM6SixyZXRyeUNvdW50Oll9KXtsZXQgWD17fTtpZih0aGlzLmlkZW1wb3RlbmN5SGVhZGVyJiZRIT09XCJnZXRcIil7aWYoISQuaWRlbXBvdGVuY3lLZXkpJC5pZGVtcG90ZW5jeUtleT10aGlzLmRlZmF1bHRJZGVtcG90ZW5jeUtleSgpO1hbdGhpcy5pZGVtcG90ZW5jeUhlYWRlcl09JC5pZGVtcG90ZW5jeUtleX1sZXQgVz1SKFtYLHtBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCIsXCJVc2VyLUFnZW50XCI6dGhpcy5nZXRVc2VyQWdlbnQoKSxcIlgtU3RhaW5sZXNzLVJldHJ5LUNvdW50XCI6U3RyaW5nKFkpLC4uLiQudGltZW91dD97XCJYLVN0YWlubGVzcy1UaW1lb3V0XCI6U3RyaW5nKE1hdGgudHJ1bmMoJC50aW1lb3V0LzEwMDApKX06e30sLi4udDkoKSwuLi50aGlzLl9vcHRpb25zLmRhbmdlcm91c2x5QWxsb3dCcm93c2VyP3tcImFudGhyb3BpYy1kYW5nZXJvdXMtZGlyZWN0LWJyb3dzZXItYWNjZXNzXCI6XCJ0cnVlXCJ9OnZvaWQgMCxcImFudGhyb3BpYy12ZXJzaW9uXCI6XCIyMDIzLTA2LTAxXCJ9LGF3YWl0IHRoaXMuYXV0aEhlYWRlcnMoJCksdGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVycyxKLCQuaGVhZGVyc10pO3JldHVybiB0aGlzLnZhbGlkYXRlSGVhZGVycyhXKSxXLnZhbHVlc31fbWFrZUFib3J0KCQpe3JldHVybigpPT4kLmFib3J0KCl9YnVpbGRCb2R5KHtvcHRpb25zOntib2R5OiQsaGVhZGVyczpRfX0pe2lmKCEkKXJldHVybntib2R5SGVhZGVyczp2b2lkIDAsYm9keTp2b2lkIDB9O2xldCBKPVIoW1FdKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoJCl8fCQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8JCBpbnN0YW5jZW9mIERhdGFWaWV3fHx0eXBlb2YgJD09PVwic3RyaW5nXCImJkoudmFsdWVzLmhhcyhcImNvbnRlbnQtdHlwZVwiKXx8Z2xvYmFsVGhpcy5CbG9iJiYkIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5CbG9ifHwkIGluc3RhbmNlb2YgRm9ybURhdGF8fCQgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN8fGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0mJiQgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtKXJldHVybntib2R5SGVhZGVyczp2b2lkIDAsYm9keTokfTtlbHNlIGlmKHR5cGVvZiAkPT09XCJvYmplY3RcIiYmKChTeW1ib2wuYXN5bmNJdGVyYXRvciBpbiAkKXx8KFN5bWJvbC5pdGVyYXRvciBpbiAkKSYmKFwibmV4dFwiaW4gJCkmJnR5cGVvZiAkLm5leHQ9PT1cImZ1bmN0aW9uXCIpKXJldHVybntib2R5SGVhZGVyczp2b2lkIDAsYm9keTpNWCgkKX07ZWxzZSBpZih0eXBlb2YgJD09PVwib2JqZWN0XCImJkoudmFsdWVzLmdldChcImNvbnRlbnQtdHlwZVwiKT09PVwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpcmV0dXJue2JvZHlIZWFkZXJzOntcImNvbnRlbnQtdHlwZVwiOlwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJ9LGJvZHk6dGhpcy5zdHJpbmdpZnlRdWVyeSgkKX07ZWxzZSByZXR1cm4gWih0aGlzLHRYLFwiZlwiKS5jYWxsKHRoaXMse2JvZHk6JCxoZWFkZXJzOkp9KX19S1U9eSQsdFg9bmV3IFdlYWtNYXAsSFU9bmV3IFdlYWtTZXQseHc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYXNlVVJMIT09XCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCJ9O3kkLkFudGhyb3BpYz1LVTt5JC5IVU1BTl9QUk9NUFQ9Znc7eSQuQUlfUFJPTVBUPXl3O3kkLkRFRkFVTFRfVElNRU9VVD02MDAwMDA7eSQuQW50aHJvcGljRXJyb3I9Zzt5JC5BUElFcnJvcj1uJDt5JC5BUElDb25uZWN0aW9uRXJyb3I9JDA7eSQuQVBJQ29ubmVjdGlvblRpbWVvdXRFcnJvcj1tOTt5JC5BUElVc2VyQWJvcnRFcnJvcj1RNjt5JC5Ob3RGb3VuZEVycm9yPWQ5O3kkLkNvbmZsaWN0RXJyb3I9aTk7eSQuUmF0ZUxpbWl0RXJyb3I9cjk7eSQuQmFkUmVxdWVzdEVycm9yPWw5O3kkLkF1dGhlbnRpY2F0aW9uRXJyb3I9Yzk7eSQuSW50ZXJuYWxTZXJ2ZXJFcnJvcj1vOTt5JC5QZXJtaXNzaW9uRGVuaWVkRXJyb3I9cDk7eSQuVW5wcm9jZXNzYWJsZUVudGl0eUVycm9yPW45O3kkLnRvRmlsZT12WDtjbGFzcyBxMCBleHRlbmRzIHkke2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLmNvbXBsZXRpb25zPW5ldyBPOCh0aGlzKSx0aGlzLm1lc3NhZ2VzPW5ldyBLMCh0aGlzKSx0aGlzLm1vZGVscz1uZXcgRjgodGhpcyksdGhpcy5iZXRhPW5ldyBXNih0aGlzKX19cTAuQ29tcGxldGlvbnM9Tzg7cTAuTWVzc2FnZXM9SzA7cTAuTW9kZWxzPUY4O3EwLkJldGE9VzY7ZnVuY3Rpb24gSTQoJCl7cmV0dXJuICQgaW5zdGFuY2VvZiBFcnJvcj8kOkVycm9yKFN0cmluZygkKSl9ZnVuY3Rpb24gWjgoJCl7cmV0dXJuICQgaW5zdGFuY2VvZiBFcnJvcj8kLm1lc3NhZ2U6U3RyaW5nKCQpfWZ1bmN0aW9uIG8kKCQpe2lmKCQmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmXCJjb2RlXCJpbiAkJiZ0eXBlb2YgJC5jb2RlPT09XCJzdHJpbmdcIilyZXR1cm4gJC5jb2RlO3JldHVybn1mdW5jdGlvbiBGMSgkKXtyZXR1cm4gbyQoJCk9PT1cIkVOT0VOVFwifWZ1bmN0aW9uIHFVKCQpe3JldHVybiBvJCgkKT09PVwiRUlTRElSXCJ9ZnVuY3Rpb24gZ3coJCl7bGV0IFE9byQoJCk7cmV0dXJuIFE9PT1cIkVOT0VOVFwifHxRPT09XCJFQUNDRVNcInx8UT09PVwiRVBFUk1cInx8UT09PVwiRU5PVERJUlwifHxRPT09XCJFTE9PUFwifWltcG9ydHtyYW5kb21VVUlEIGFzIFN2fWZyb21cImNyeXB0b1wiO2ltcG9ydHthcHBlbmRGaWxlIGFzIGt2LG1rZGlyIGFzIHZ2fWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2pvaW4gYXMgaHd9ZnJvbVwicGF0aFwiO3ZhciBWMCxNOD1udWxsO2Z1bmN0aW9uIHV3KCl7aWYoTTgpcmV0dXJuIE04O2lmKCFSJChwcm9jZXNzLmVudi5ERUJVR19DTEFVREVfQUdFTlRfU0RLKSlyZXR1cm4gVjA9bnVsbCxNOD1Qcm9taXNlLnJlc29sdmUoKSxNODtsZXQgJD1odyhwNigpLFwiZGVidWdcIik7cmV0dXJuIFYwPWh3KCQsYHNkay0ke1N2KCl9LnR4dGApLHByb2Nlc3Muc3RkZXJyLndyaXRlKGBTREsgZGVidWcgbG9nczogJHtWMH1cbmApLE04PXZ2KCQse3JlY3Vyc2l2ZTohMH0pLnRoZW4oKCk9Pnt9KS5jYXRjaCgoKT0+e30pLE04fWZ1bmN0aW9uIG13KCl7cmV0dXJuIHV3KCksVjA/P251bGx9ZnVuY3Rpb24gWjYoJCl7aWYoVjA9PT1udWxsKXJldHVybjtsZXQgSj1gJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9ICR7JH1cbmA7dXcoKS50aGVuKCgpPT57aWYoVjApa3YoVjAsSikuY2F0Y2goKCk9Pnt9KX0pfWZ1bmN0aW9uIEN2KCl7dGhpcy5fX2RhdGFfXz1uZXcgVjEsdGhpcy5zaXplPTB9dmFyIGx3PUN2O2Z1bmN0aW9uIFR2KCQpe3ZhciBRPXRoaXMuX19kYXRhX18sSj1RLmRlbGV0ZSgkKTtyZXR1cm4gdGhpcy5zaXplPVEuc2l6ZSxKfXZhciBjdz1UdjtmdW5jdGlvbiB4digkKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoJCl9dmFyIHB3PXh2O2Z1bmN0aW9uIGZ2KCQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcygkKX12YXIgZHc9ZnY7dmFyIHl2PTIwMDtmdW5jdGlvbiBndigkLFEpe3ZhciBKPXRoaXMuX19kYXRhX187aWYoSiBpbnN0YW5jZW9mIFYxKXt2YXIgWT1KLl9fZGF0YV9fO2lmKCFEWHx8WS5sZW5ndGg8eXYtMSlyZXR1cm4gWS5wdXNoKFskLFFdKSx0aGlzLnNpemU9KytKLnNpemUsdGhpcztKPXRoaXMuX19kYXRhX189bmV3IGg5KFkpfXJldHVybiBKLnNldCgkLFEpLHRoaXMuc2l6ZT1KLnNpemUsdGhpc312YXIgaXc9Z3Y7ZnVuY3Rpb24gTDgoJCl7dmFyIFE9dGhpcy5fX2RhdGFfXz1uZXcgVjEoJCk7dGhpcy5zaXplPVEuc2l6ZX1MOC5wcm90b3R5cGUuY2xlYXI9bHc7TDgucHJvdG90eXBlLmRlbGV0ZT1jdztMOC5wcm90b3R5cGUuZ2V0PXB3O0w4LnByb3RvdHlwZS5oYXM9ZHc7TDgucHJvdG90eXBlLnNldD1pdzt2YXIgbnc9TDg7dmFyIGh2PWZ1bmN0aW9uKCl7dHJ5e3ZhciAkPVE4KE9iamVjdCxcImRlZmluZVByb3BlcnR5XCIpO3JldHVybiAkKHt9LFwiXCIse30pLCR9Y2F0Y2goUSl7fX0oKSxqOD1odjtmdW5jdGlvbiB1digkLFEsSil7aWYoUT09XCJfX3Byb3RvX19cIiYmajgpajgoJCxRLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpKLHdyaXRhYmxlOiEwfSk7ZWxzZSAkW1FdPUp9dmFyIEE4PXV2O3ZhciBtdj1PYmplY3QucHJvdG90eXBlLGx2PW12Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGN2KCQsUSxKKXt2YXIgWT0kW1FdO2lmKCEobHYuY2FsbCgkLFEpJiZLMShZLEopKXx8Sj09PXZvaWQgMCYmIShRIGluICQpKUE4KCQsUSxKKX12YXIgYVg9Y3Y7ZnVuY3Rpb24gcHYoJCxRLEosWSl7dmFyIFg9IUo7Snx8KEo9e30pO3ZhciBXPS0xLEc9US5sZW5ndGg7d2hpbGUoKytXPEcpe3ZhciBVPVFbV10sSD1ZP1koSltVXSwkW1VdLFUsSiwkKTp2b2lkIDA7aWYoSD09PXZvaWQgMClIPSRbVV07aWYoWClBOChKLFUsSCk7ZWxzZSBhWChKLFUsSCl9cmV0dXJuIEp9dmFyIHJ3PXB2O2Z1bmN0aW9uIGR2KCQsUSl7dmFyIEo9LTEsWT1BcnJheSgkKTt3aGlsZSgrK0o8JClZW0pdPVEoSik7cmV0dXJuIFl9dmFyIG93PWR2O2Z1bmN0aW9uIGl2KCQpe3JldHVybiAkIT1udWxsJiZ0eXBlb2YgJD09XCJvYmplY3RcIn12YXIgcjY9aXY7dmFyIG52PVwiW29iamVjdCBBcmd1bWVudHNdXCI7ZnVuY3Rpb24gcnYoJCl7cmV0dXJuIHI2KCQpJiZBNCgkKT09bnZ9dmFyIFZVPXJ2O3ZhciB0dz1PYmplY3QucHJvdG90eXBlLG92PXR3Lmhhc093blByb3BlcnR5LHR2PXR3LnByb3BlcnR5SXNFbnVtZXJhYmxlLGF2PVZVKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/VlU6ZnVuY3Rpb24oJCl7cmV0dXJuIHI2KCQpJiZvdi5jYWxsKCQsXCJjYWxsZWVcIikmJiF0di5jYWxsKCQsXCJjYWxsZWVcIil9LG00PWF2O3ZhciBzdj1BcnJheS5pc0FycmF5LFY2PXN2O3ZhciBlWD17fTtqNChlWCx7ZGVmYXVsdDooKT0+Qzd9KTtmdW5jdGlvbiBldigpe3JldHVybiExfXZhciBhdz1ldjt2YXIgJE89dHlwZW9mIGVYPT1cIm9iamVjdFwiJiZlWCYmIWVYLm5vZGVUeXBlJiZlWCxzdz0kTyYmdHlwZW9mIHNYPT1cIm9iamVjdFwiJiZzWCYmIXNYLm5vZGVUeXBlJiZzWCwkQz1zdyYmc3cuZXhwb3J0cz09PSRPLGV3PSRDP2w2LkJ1ZmZlcjp2b2lkIDAsUUM9ZXc/ZXcuaXNCdWZmZXI6dm9pZCAwLEpDPVFDfHxhdyxDNz1KQzt2YXIgWEM9OTAwNzE5OTI1NDc0MDk5MSxZQz0vXig/OjB8WzEtOV1cXGQqKSQvO2Z1bmN0aW9uIFdDKCQsUSl7dmFyIEo9dHlwZW9mICQ7cmV0dXJuIFE9UT09bnVsbD9YQzpRLCEhUSYmKEo9PVwibnVtYmVyXCJ8fEohPVwic3ltYm9sXCImJllDLnRlc3QoJCkpJiYoJD4tMSYmJCUxPT0wJiYkPFEpfXZhciBaMT1XQzt2YXIgR0M9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBVQygkKXtyZXR1cm4gdHlwZW9mICQ9PVwibnVtYmVyXCImJiQ+LTEmJiQlMT09MCYmJDw9R0N9dmFyIEk4PVVDO3ZhciBIQz1cIltvYmplY3QgQXJndW1lbnRzXVwiLEtDPVwiW29iamVjdCBBcnJheV1cIixxQz1cIltvYmplY3QgQm9vbGVhbl1cIixWQz1cIltvYmplY3QgRGF0ZV1cIixCQz1cIltvYmplY3QgRXJyb3JdXCIsekM9XCJbb2JqZWN0IEZ1bmN0aW9uXVwiLE5DPVwiW29iamVjdCBNYXBdXCIsd0M9XCJbb2JqZWN0IE51bWJlcl1cIixPQz1cIltvYmplY3QgT2JqZWN0XVwiLERDPVwiW29iamVjdCBSZWdFeHBdXCIsRkM9XCJbb2JqZWN0IFNldF1cIixaQz1cIltvYmplY3QgU3RyaW5nXVwiLE1DPVwiW29iamVjdCBXZWFrTWFwXVwiLExDPVwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIixqQz1cIltvYmplY3QgRGF0YVZpZXddXCIsQUM9XCJbb2JqZWN0IEZsb2F0MzJBcnJheV1cIixJQz1cIltvYmplY3QgRmxvYXQ2NEFycmF5XVwiLFJDPVwiW29iamVjdCBJbnQ4QXJyYXldXCIsUEM9XCJbb2JqZWN0IEludDE2QXJyYXldXCIsRUM9XCJbb2JqZWN0IEludDMyQXJyYXldXCIsYkM9XCJbb2JqZWN0IFVpbnQ4QXJyYXldXCIsX0M9XCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XVwiLFNDPVwiW29iamVjdCBVaW50MTZBcnJheV1cIixrQz1cIltvYmplY3QgVWludDMyQXJyYXldXCIsXyQ9e307XyRbQUNdPV8kW0lDXT1fJFtSQ109XyRbUENdPV8kW0VDXT1fJFtiQ109XyRbX0NdPV8kW1NDXT1fJFtrQ109ITA7XyRbSENdPV8kW0tDXT1fJFtMQ109XyRbcUNdPV8kW2pDXT1fJFtWQ109XyRbQkNdPV8kW3pDXT1fJFtOQ109XyRbd0NdPV8kW09DXT1fJFtEQ109XyRbRkNdPV8kW1pDXT1fJFtNQ109ITE7ZnVuY3Rpb24gdkMoJCl7cmV0dXJuIHI2KCQpJiZJOCgkLmxlbmd0aCkmJiEhXyRbQTQoJCldfXZhciBRTz12QztmdW5jdGlvbiBDQygkKXtyZXR1cm4gZnVuY3Rpb24oUSl7cmV0dXJuICQoUSl9fXZhciBKTz1DQzt2YXIgUTU9e307ajQoUTUse2RlZmF1bHQ6KCk9Pko1fSk7dmFyIFhPPXR5cGVvZiBRNT09XCJvYmplY3RcIiYmUTUmJiFRNS5ub2RlVHlwZSYmUTUsVDc9WE8mJnR5cGVvZiAkNT09XCJvYmplY3RcIiYmJDUmJiEkNS5ub2RlVHlwZSYmJDUsVEM9VDcmJlQ3LmV4cG9ydHM9PT1YTyxCVT1UQyYmd1gucHJvY2Vzcyx4Qz1mdW5jdGlvbigpe3RyeXt2YXIgJD1UNyYmVDcucmVxdWlyZSYmVDcucmVxdWlyZShcInV0aWxcIikudHlwZXM7aWYoJClyZXR1cm4gJDtyZXR1cm4gQlUmJkJVLmJpbmRpbmcmJkJVLmJpbmRpbmcoXCJ1dGlsXCIpfWNhdGNoKFEpe319KCksSjU9eEM7dmFyIFlPPUo1JiZKNS5pc1R5cGVkQXJyYXksZkM9WU8/Sk8oWU8pOlFPLFg1PWZDO3ZhciB5Qz1PYmplY3QucHJvdG90eXBlLGdDPXlDLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGhDKCQsUSl7dmFyIEo9VjYoJCksWT0hSiYmbTQoJCksWD0hSiYmIVkmJkM3KCQpLFc9IUomJiFZJiYhWCYmWDUoJCksRz1KfHxZfHxYfHxXLFU9Rz9vdygkLmxlbmd0aCxTdHJpbmcpOltdLEg9VS5sZW5ndGg7Zm9yKHZhciBxIGluICQpaWYoKFF8fGdDLmNhbGwoJCxxKSkmJiEoRyYmKHE9PVwibGVuZ3RoXCJ8fFgmJihxPT1cIm9mZnNldFwifHxxPT1cInBhcmVudFwiKXx8VyYmKHE9PVwiYnVmZmVyXCJ8fHE9PVwiYnl0ZUxlbmd0aFwifHxxPT1cImJ5dGVPZmZzZXRcIil8fFoxKHEsSCkpKSlVLnB1c2gocSk7cmV0dXJuIFV9dmFyIFdPPWhDO3ZhciB1Qz1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIG1DKCQpe3ZhciBRPSQmJiQuY29uc3RydWN0b3IsSj10eXBlb2YgUT09XCJmdW5jdGlvblwiJiZRLnByb3RvdHlwZXx8dUM7cmV0dXJuICQ9PT1KfXZhciBZNT1tQztmdW5jdGlvbiBsQygkLFEpe3JldHVybiBmdW5jdGlvbihKKXtyZXR1cm4gJChRKEopKX19dmFyIEdPPWxDO2Z1bmN0aW9uIGNDKCQpe3JldHVybiAkIT1udWxsJiZJOCgkLmxlbmd0aCkmJiEkOCgkKX12YXIgUjg9Y0M7ZnVuY3Rpb24gcEMoJCl7dmFyIFE9W107aWYoJCE9bnVsbClmb3IodmFyIEogaW4gT2JqZWN0KCQpKVEucHVzaChKKTtyZXR1cm4gUX12YXIgVU89cEM7dmFyIGRDPU9iamVjdC5wcm90b3R5cGUsaUM9ZEMuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbkMoJCl7aWYoISQ2KCQpKXJldHVybiBVTygkKTt2YXIgUT1ZNSgkKSxKPVtdO2Zvcih2YXIgWSBpbiAkKWlmKCEoWT09XCJjb25zdHJ1Y3RvclwiJiYoUXx8IWlDLmNhbGwoJCxZKSkpKUoucHVzaChZKTtyZXR1cm4gSn12YXIgSE89bkM7ZnVuY3Rpb24gckMoJCl7cmV0dXJuIFI4KCQpP1dPKCQsITApOkhPKCQpfXZhciBXNT1yQzt2YXIgVTU9e307ajQoVTUse2RlZmF1bHQ6KCk9PnpVfSk7dmFyIEJPPXR5cGVvZiBVNT09XCJvYmplY3RcIiYmVTUmJiFVNS5ub2RlVHlwZSYmVTUsS089Qk8mJnR5cGVvZiBHNT09XCJvYmplY3RcIiYmRzUmJiFHNS5ub2RlVHlwZSYmRzUsb0M9S08mJktPLmV4cG9ydHM9PT1CTyxxTz1vQz9sNi5CdWZmZXI6dm9pZCAwLFZPPXFPP3FPLmFsbG9jVW5zYWZlOnZvaWQgMDtmdW5jdGlvbiB0QygkLFEpe2lmKFEpcmV0dXJuICQuc2xpY2UoKTt2YXIgSj0kLmxlbmd0aCxZPVZPP1ZPKEopOm5ldyAkLmNvbnN0cnVjdG9yKEopO3JldHVybiAkLmNvcHkoWSksWX12YXIgelU9dEM7ZnVuY3Rpb24gYUMoJCxRKXt2YXIgSj0tMSxZPSQubGVuZ3RoO1F8fChRPUFycmF5KFkpKTt3aGlsZSgrK0o8WSlRW0pdPSRbSl07cmV0dXJuIFF9dmFyIHpPPWFDO2Z1bmN0aW9uIHNDKCQsUSl7dmFyIEo9LTEsWT1RLmxlbmd0aCxYPSQubGVuZ3RoO3doaWxlKCsrSjxZKSRbWCtKXT1RW0pdO3JldHVybiAkfXZhciBOTz1zQzt2YXIgZUM9R08oT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCksSDU9ZUM7dmFyICRUPWw2LlVpbnQ4QXJyYXksTlU9JFQ7ZnVuY3Rpb24gUVQoJCl7dmFyIFE9bmV3ICQuY29uc3RydWN0b3IoJC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IE5VKFEpLnNldChuZXcgTlUoJCkpLFF9dmFyIHdPPVFUO2Z1bmN0aW9uIEpUKCQsUSl7dmFyIEo9UT93TygkLmJ1ZmZlcik6JC5idWZmZXI7cmV0dXJuIG5ldyAkLmNvbnN0cnVjdG9yKEosJC5ieXRlT2Zmc2V0LCQubGVuZ3RoKX12YXIgT089SlQ7dmFyIERPPU9iamVjdC5jcmVhdGUsWFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiAkKCl7fXJldHVybiBmdW5jdGlvbihRKXtpZighJDYoUSkpcmV0dXJue307aWYoRE8pcmV0dXJuIERPKFEpOyQucHJvdG90eXBlPVE7dmFyIEo9bmV3ICQ7cmV0dXJuICQucHJvdG90eXBlPXZvaWQgMCxKfX0oKSxGTz1YVDtmdW5jdGlvbiBZVCgkKXtyZXR1cm4gdHlwZW9mICQuY29uc3RydWN0b3I9PVwiZnVuY3Rpb25cIiYmIVk1KCQpP0ZPKEg1KCQpKTp7fX12YXIgWk89WVQ7aW1wb3J0e3JlYWxwYXRoU3luYyBhcyBtT31mcm9tXCJmc1wiO3ZhciBXVD1cIltvYmplY3QgU3ltYm9sXVwiO2Z1bmN0aW9uIEdUKCQpe3JldHVybiB0eXBlb2YgJD09XCJzeW1ib2xcInx8cjYoJCkmJkE0KCQpPT1XVH12YXIgUDg9R1Q7dmFyIFVUPS9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sSFQ9L15cXHcqJC87ZnVuY3Rpb24gS1QoJCxRKXtpZihWNigkKSlyZXR1cm4hMTt2YXIgSj10eXBlb2YgJDtpZihKPT1cIm51bWJlclwifHxKPT1cInN5bWJvbFwifHxKPT1cImJvb2xlYW5cInx8JD09bnVsbHx8UDgoJCkpcmV0dXJuITA7cmV0dXJuIEhULnRlc3QoJCl8fCFVVC50ZXN0KCQpfHxRIT1udWxsJiYkIGluIE9iamVjdChRKX12YXIgTU89S1Q7dmFyIHFUPTUwMDtmdW5jdGlvbiBWVCgkKXt2YXIgUT12JCgkLGZ1bmN0aW9uKFkpe2lmKEouc2l6ZT09PXFUKUouY2xlYXIoKTtyZXR1cm4gWX0pLEo9US5jYWNoZTtyZXR1cm4gUX12YXIgTE89VlQ7dmFyIEJUPS9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZyx6VD0vXFxcXChcXFxcKT8vZyxOVD1MTyhmdW5jdGlvbigkKXt2YXIgUT1bXTtpZigkLmNoYXJDb2RlQXQoMCk9PT00NilRLnB1c2goXCJcIik7cmV0dXJuICQucmVwbGFjZShCVCxmdW5jdGlvbihKLFksWCxXKXtRLnB1c2goWD9XLnJlcGxhY2UoelQsXCIkMVwiKTpZfHxKKX0pLFF9KSxqTz1OVDtmdW5jdGlvbiB3VCgkLFEpe3ZhciBKPS0xLFk9JD09bnVsbD8wOiQubGVuZ3RoLFg9QXJyYXkoWSk7d2hpbGUoKytKPFkpWFtKXT1RKCRbSl0sSiwkKTtyZXR1cm4gWH12YXIgQU89d1Q7dmFyIE9UPTEvMCxJTz1jNj9jNi5wcm90b3R5cGU6dm9pZCAwLFJPPUlPP0lPLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBQTygkKXtpZih0eXBlb2YgJD09XCJzdHJpbmdcIilyZXR1cm4gJDtpZihWNigkKSlyZXR1cm4gQU8oJCxQTykrXCJcIjtpZihQOCgkKSlyZXR1cm4gUk8/Uk8uY2FsbCgkKTpcIlwiO3ZhciBRPSQrXCJcIjtyZXR1cm4gUT09XCIwXCImJjEvJD09LU9UP1wiLTBcIjpRfXZhciBFTz1QTztmdW5jdGlvbiBEVCgkKXtyZXR1cm4gJD09bnVsbD9cIlwiOkVPKCQpfXZhciBiTz1EVDtmdW5jdGlvbiBGVCgkLFEpe2lmKFY2KCQpKXJldHVybiAkO3JldHVybiBNTygkLFEpP1skXTpqTyhiTygkKSl9dmFyIE0xPUZUO3ZhciBaVD0xLzA7ZnVuY3Rpb24gTVQoJCl7aWYodHlwZW9mICQ9PVwic3RyaW5nXCJ8fFA4KCQpKXJldHVybiAkO3ZhciBRPSQrXCJcIjtyZXR1cm4gUT09XCIwXCImJjEvJD09LVpUP1wiLTBcIjpRfXZhciBFOD1NVDtmdW5jdGlvbiBMVCgkLFEpe1E9TTEoUSwkKTt2YXIgSj0wLFk9US5sZW5ndGg7d2hpbGUoJCE9bnVsbCYmSjxZKSQ9JFtFOChRW0orK10pXTtyZXR1cm4gSiYmSj09WT8kOnZvaWQgMH12YXIgX089TFQ7ZnVuY3Rpb24galQoJCxRKXtyZXR1cm4gJCE9bnVsbCYmUSBpbiBPYmplY3QoJCl9dmFyIFNPPWpUO2Z1bmN0aW9uIEFUKCQsUSxKKXtRPU0xKFEsJCk7dmFyIFk9LTEsWD1RLmxlbmd0aCxXPSExO3doaWxlKCsrWTxYKXt2YXIgRz1FOChRW1ldKTtpZighKFc9JCE9bnVsbCYmSigkLEcpKSlicmVhazskPSRbR119aWYoV3x8KytZIT1YKXJldHVybiBXO3JldHVybiBYPSQ9PW51bGw/MDokLmxlbmd0aCwhIVgmJkk4KFgpJiZaMShHLFgpJiYoVjYoJCl8fG00KCQpKX12YXIga089QVQ7ZnVuY3Rpb24gSVQoJCxRKXtyZXR1cm4gJCE9bnVsbCYma08oJCxRLFNPKX12YXIgdk89SVQ7ZnVuY3Rpb24gUlQoJCl7cmV0dXJuICR9dmFyIEs1PVJUO2ltcG9ydHtjd2QgYXMgYlR9ZnJvbVwicHJvY2Vzc1wiO2ltcG9ydHtyYW5kb21VVUlEIGFzIHg3fWZyb21cImNyeXB0b1wiO3ZhciB3VT1udWxsO2Z1bmN0aW9uIENPKCl7cmV0dXJuIHdVfWZ1bmN0aW9uIFRPKCQpe3dVPSR9dmFyIHE1PW5ldyBNYXA7ZnVuY3Rpb24geE8oJCl7cmV0dXJuIHE1LmhhcygkKT9xNS5nZXQoJCk6dm9pZCAwfWZ1bmN0aW9uIGZPKCQsUSl7cTUuc2V0KCQsUSl9dmFyIFBUO3ZhciBPVT1uZXcgTWFwO2Z1bmN0aW9uIHlPKCQpe3JldHVybiBPVS5nZXQoJCl9ZnVuY3Rpb24gZ08oJCxRKXtPVS5zZXQoJCxRKX1mdW5jdGlvbiBCMCgpe3dVPW51bGwscTUuY2xlYXIoKSxPVS5jbGVhcigpLFBUPXZvaWQgMH12YXIgRVQ7ZnVuY3Rpb24gaE8oKXtyZXR1cm4gRVR9ZnVuY3Rpb24gdU8oKXtyZXR1cm57c2VudDpuZXcgU2V0LHJlamVjdGVkOm5ldyBTZXR9fXZhciBfVD17cmVuZGVyVGFyZ2V0OlwiaW5rXCIsd29ya3NwYWNlOlwibG9jYWxcIixjYW5Ecml2ZTohMCx0cmFuc2NyaXB0U291cmNlOlwibG9jYWwtanNvbmxcIixyZW1vdGU6bnVsbH07ZnVuY3Rpb24gU1QoKXtsZXQgJD1cIlwiO2lmKHR5cGVvZiBwcm9jZXNzPFwidVwiJiZ0eXBlb2YgcHJvY2Vzcy5jd2Q9PT1cImZ1bmN0aW9uXCImJnR5cGVvZiBtTz09PVwiZnVuY3Rpb25cIil7bGV0IEo9YlQoKTt0cnl7JD1tTyhKKS5ub3JtYWxpemUoXCJORkNcIil9Y2F0Y2h7JD1KLm5vcm1hbGl6ZShcIk5GQ1wiKX19cmV0dXJue29yaWdpbmFsQ3dkOiQscHJvamVjdFJvb3Q6JCx0b3RhbENvc3RVU0Q6MCx0b3RhbEFQSUR1cmF0aW9uOjAsdG90YWxBUElEdXJhdGlvbldpdGhvdXRSZXRyaWVzOjAsdG90YWxUb29sRHVyYXRpb246MCxzdGFydFRpbWU6RGF0ZS5ub3coKSxsYXN0SW50ZXJhY3Rpb25UaW1lOkRhdGUubm93KCksdG90YWxMaW5lc0FkZGVkOjAsdG90YWxMaW5lc1JlbW92ZWQ6MCxoYXNVbmtub3duTW9kZWxDb3N0OiExLGN3ZDokLG1vZGVsVXNhZ2U6e30sbWFpbkxvb3BNb2RlbE92ZXJyaWRlOnZvaWQgMCxpbml0aWFsTWFpbkxvb3BNb2RlbDpudWxsLG1vZGVsU3RyaW5nczpudWxsLGlzSW50ZXJhY3RpdmU6ITEsYXR0YWNoZXJDYXBzOm51bGwsaGFzU3RyZWFtaW5nSW5wdXQ6ITEsZnJpZGF5RnVuZGF5RGlzYWJsZWRGb3JTZXNzaW9uOiExLGthaXJvc0FjdGl2ZTohMSxyZW5kZXJlck1vZGU6dm9pZCAwLHN0cmljdFRvb2xSZXN1bHRQYWlyaW5nOiExLG1lbW9yeVRvZ2dsZWRPZmY6ITEsdGVhbU1lbW9yeVNlcnZlclN0YXR1czp2b2lkIDAsc2RrQWdlbnRQcm9ncmVzc1N1bW1hcmllc0VuYWJsZWQ6ITEsdXNlck1zZ09wdEluOiExLGNsaWVudFR5cGU6XCJjbGlcIixzZXNzaW9uU291cmNlOnZvaWQgMCxzZXNzaW9uU3RhcnRUeXBlOlwiZnJlc2hcIixxdWVzdGlvblByZXZpZXdGb3JtYXQ6dm9pZCAwLHNlc3Npb25JbmdyZXNzVG9rZW46dm9pZCAwLG9hdXRoVG9rZW5Gcm9tRmQ6dm9pZCAwLGFwaUtleUZyb21GZDp2b2lkIDAsZ2F0ZXdheUF1dGg6bnVsbCxnYXRld2F5UmVmcmVzaEluRmxpZ2h0Om51bGwsZmxhZ1NldHRpbmdzUGF0aDp2b2lkIDAsZmxhZ1NldHRpbmdzSW5saW5lOm51bGwscGFyZW50TWFuYWdlZFNldHRpbmdzOm51bGwsYWxsb3dlZFNldHRpbmdTb3VyY2VzOltcInVzZXJTZXR0aW5nc1wiLFwicHJvamVjdFNldHRpbmdzXCIsXCJsb2NhbFNldHRpbmdzXCIsXCJmbGFnU2V0dGluZ3NcIixcInBvbGljeVNldHRpbmdzXCJdLG1ldGVyOm51bGwsc2Vzc2lvbkNvdW50ZXI6bnVsbCxsb2NDb3VudGVyOm51bGwscHJDb3VudGVyOm51bGwsY29tbWl0Q291bnRlcjpudWxsLGNvc3RDb3VudGVyOm51bGwsdG9rZW5Db3VudGVyOm51bGwsY29kZUVkaXRUb29sRGVjaXNpb25Db3VudGVyOm51bGwsYWN0aXZlVGltZUNvdW50ZXI6bnVsbCxzdGF0c1N0b3JlOm51bGwsc2Vzc2lvbklkOng3KCkscGFyZW50U2Vzc2lvbklkOnZvaWQgMCxsb2dnZXJQcm92aWRlcjpudWxsLGV2ZW50TG9nZ2VyOm51bGwsbWV0ZXJQcm92aWRlcjpudWxsLHRyYWNlclByb3ZpZGVyOm51bGwsY2FjaGVkVGVsZW1ldHJ5UmVzb3VyY2U6bnVsbCxhZ2VudENvbG9yTWFwOm5ldyBNYXAsYWdlbnRDb2xvckluZGV4OjAsbGFzdEFQSVJlcXVlc3Q6bnVsbCxsYXN0Q2FuY2VsbGVkQVBJTWVzc2FnZUlkOm51bGwsbGFzdEFQSVJlcXVlc3RNZXNzYWdlczpudWxsLGxhc3RDbGFzc2lmaWVyUmVxdWVzdHM6bnVsbCxjYWNoZWRDbGF1ZGVNZENvbnRlbnQ6bnVsbCxpbk1lbW9yeUVycm9yTG9nOltdLGlubGluZVBsdWdpbnM6W10saW5saW5lUGx1Z2luVXJsczpbXSxjaHJvbWVGbGFnT3ZlcnJpZGU6dm9pZCAwLHVzZUNvd29ya1BsdWdpbnM6ITEsc2Vzc2lvbkJ5cGFzc1Blcm1pc3Npb25zTW9kZTohMSxzY2hlZHVsZWRUYXNrc0VuYWJsZWQ6ITEsc2Vzc2lvblByUmVzb2x2ZWQ6ITEsc2Vzc2lvbkNyb25UYXNrczpbXSxsb29wQ2hhaW5TdGFydGVkQXQ6T2JqZWN0LmNyZWF0ZShudWxsKSxzZXNzaW9uQ3JlYXRlZFRlYW1zOm5ldyBTZXQsc2Vzc2lvblRydXN0QWNjZXB0ZWQ6ITEsc2Vzc2lvblBlcnNpc3RlbmNlRGlzYWJsZWQ6ITEsaGFzRXhpdGVkUGxhbk1vZGU6ITEsbmVlZHNQbGFuTW9kZUV4aXRBdHRhY2htZW50OiExLG5lZWRzQXV0b01vZGVFeGl0QXR0YWNobWVudDohMSxsc3BSZWNvbW1lbmRhdGlvblNob3duVGhpc1Nlc3Npb246ITEsaW5pdEpzb25TY2hlbWE6bnVsbCxyZWdpc3RlcmVkSG9va3M6bnVsbCxwbGFuU2x1Z0NhY2hlOm5ldyBNYXAsdGVsZXBvcnRlZFNlc3Npb25JbmZvOm51bGwsaW52b2tlZFNraWxsczpuZXcgTWFwLHNsb3dPcGVyYXRpb25zOltdLHNka0JldGFzOnZvaWQgMCxzZGtPQXV0aFRva2VuUmVmcmVzaENhbGxiYWNrOm51bGwsbWFpblRocmVhZEFnZW50VHlwZTp2b2lkIDAsbWFpblRocmVhZEFnZW50SG9va3M6dm9pZCAwLHNlc3Npb25Ta2lsbEFsbG93bGlzdDp2b2lkIDAsY2FwczpfVCxyZXBsQnJpZGdlQWN0aXZlOiExLGRpcmVjdENvbm5lY3RTZXJ2ZXJVcmw6dm9pZCAwLG1jcENvbm5lY3ROb25CbG9ja2luZzohMSxhY3RpdmVSb3V0aW5lOnZvaWQgMCxzeXN0ZW1Qcm9tcHRTZWN0aW9uQ2FjaGU6bmV3IE1hcCxsYXN0RW1pdHRlZERhdGU6bnVsbCxhZGRpdGlvbmFsRGlyZWN0b3JpZXNGb3JDbGF1ZGVNZDpbXSxhbGxvd2VkQ2hhbm5lbHM6W10sYWN0aXZlSW5wdXRzOm5ldyBNYXAsaGFzRGV2Q2hhbm5lbHM6ITEsc2Vzc2lvblByb2plY3REaXI6bnVsbCxwcm9tcHRDYWNoZTFoQWxsb3dsaXN0Om51bGwsc3RpY2t5QmV0YXM6dU8oKSx0aGlua2luZ1R5cGVPdmVycmlkZXM6bmV3IE1hcCxpbmZlcmVuY2VQcm9maWxlQmFja2luZ01vZGVsczpuZXcgTWFwLHByb21wdElkOm51bGwscHJvbXB0SW5kZXg6MCxsYXN0TWFpblJlcXVlc3RJZDp2b2lkIDAsbGFzdE1haW5UaHJlYWRDYWNoZVR0bE1zOm51bGwsbGFzdEFwaUNvbXBsZXRpb25UaW1lc3RhbXA6bnVsbCxwZW5kaW5nUG9zdENvbXBhY3Rpb246ITF9fXZhciB4Nj1TVCgpO2Z1bmN0aW9uIERVKCl7cmV0dXJuIHg2LnNlc3Npb25JZH12YXIga1Q9ZTEoKSxFWSQ9a1Quc3Vic2NyaWJlO2Z1bmN0aW9uIGY3KCl7cmV0dXJuIHg2Lm9yaWdpbmFsQ3dkfWZ1bmN0aW9uIEZVKCQpe3g2Lm9yaWdpbmFsQ3dkPSQubm9ybWFsaXplKFwiTkZDXCIpLGxPLmVtaXQoeDYub3JpZ2luYWxDd2QpfXZhciBsTz1lMSgpLGJZJD1sTy5zdWJzY3JpYmU7dmFyIHZUPWUxKCksX1kkPXZULnN1YnNjcmliZTt2YXIgQ1Q9ZTEoKTt2YXIgU1kkPUNULnN1YnNjcmliZTtmdW5jdGlvbiB5Nygpe3JldHVybiB4Ni5mbGFnU2V0dGluZ3NQYXRofWZ1bmN0aW9uIFpVKCQpe3g2LmZsYWdTZXR0aW5nc1BhdGg9JH1mdW5jdGlvbiBWNSgpe3JldHVybiB4Ni5mbGFnU2V0dGluZ3NJbmxpbmV9ZnVuY3Rpb24gTVUoJCl7eDYuZmxhZ1NldHRpbmdzSW5saW5lPSR9ZnVuY3Rpb24gQjUoKXtyZXR1cm4geDYucGFyZW50TWFuYWdlZFNldHRpbmdzfWZ1bmN0aW9uIExVKCQpe3g2LnBhcmVudE1hbmFnZWRTZXR0aW5ncz0kfWZ1bmN0aW9uIHo1KCl7cmV0dXJuIHg2LmFsbG93ZWRTZXR0aW5nU291cmNlc31mdW5jdGlvbiBqVSgkKXt4Ni5hbGxvd2VkU2V0dGluZ1NvdXJjZXM9JH1mdW5jdGlvbiBjTygpe3JldHVybiB4Ni51c2VDb3dvcmtQbHVnaW5zfWltcG9ydHthcHBlbmRGaWxlIGFzIFgyLG1rZGlyIGFzIHNULHJlbmFtZSBhcyBZMixzdGF0IGFzIGVULHN5bWxpbmsgYXMgJHgsdW5saW5rIGFzIFBVfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2Rpcm5hbWUgYXMgVzIsam9pbiBhcyBrVX1mcm9tXCJwYXRoXCI7ZnVuY3Rpb24gcE8oe3dyaXRlRm46JCxmbHVzaEludGVydmFsTXM6UT0xMDAwLG1heEJ1ZmZlclNpemU6Sj0xMDAsbWF4QnVmZmVyQnl0ZXM6WT0xLzAsaW1tZWRpYXRlTW9kZTpYPSExfSl7bGV0IFc9W10sRz0wLFU9bnVsbCxIPW51bGw7ZnVuY3Rpb24gcSgpe2lmKFUpY2xlYXJUaW1lb3V0KFUpLFU9bnVsbH1mdW5jdGlvbiBWKHcpe3RyeXskKHcpfWNhdGNoe319ZnVuY3Rpb24gQigpe2lmKEgpVihILmpvaW4oXCJcIikpLEg9bnVsbDtpZihXLmxlbmd0aD09PTApcmV0dXJuO1YoVy5qb2luKFwiXCIpKSxXPVtdLEc9MCxxKCl9ZnVuY3Rpb24geigpe2lmKCFVKVU9c2V0VGltZW91dChCLFEpfWZ1bmN0aW9uIE4oKXtpZihIKXtILnB1c2goLi4uVyksVz1bXSxHPTAscSgpO3JldHVybn1sZXQgdz1XO1c9W10sRz0wLHEoKSxIPXcsc2V0SW1tZWRpYXRlKCgpPT57bGV0IE89SDtpZihIPW51bGwsTylWKE8uam9pbihcIlwiKSl9KX1yZXR1cm57d3JpdGUodyl7aWYoWCl7Vih3KTtyZXR1cm59aWYoVy5wdXNoKHcpLEcrPXcubGVuZ3RoLHooKSxXLmxlbmd0aD49Snx8Rz49WSlOKCl9LGZsdXNoOkIsZGlzcG9zZSgpe0IoKX19fXZhciBkTz1uZXcgU2V0O2Z1bmN0aW9uIFRUKCQpe2lmKHR5cGVvZiAkPT09XCJmdW5jdGlvblwiKXJldHVybiAkO2lmKFN5bWJvbC5hc3luY0Rpc3Bvc2UgaW4gJClyZXR1cm4oKT0+JFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpO3JldHVybigpPT4kW1N5bWJvbC5kaXNwb3NlXSgpfWZ1bmN0aW9uIGlPKCQpe2xldCBRPVRUKCQpO2RPLmFkZChRKTtsZXQgSj0oKT0+e2RPLmRlbGV0ZShRKX07cmV0dXJuIE9iamVjdC5hc3NpZ24oSix7W1N5bWJvbC5kaXNwb3NlXTpKfSl9dmFyIG5PPXYkKCgkKT0+e2lmKCEkfHwkLnRyaW0oKT09PVwiXCIpcmV0dXJuIG51bGw7bGV0IFE9JC5zcGxpdChcIixcIikubWFwKChXKT0+Vy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtpZihRLmxlbmd0aD09PTApcmV0dXJuIG51bGw7bGV0IEo9US5zb21lKChXKT0+Vy5zdGFydHNXaXRoKFwiIVwiKSksWT1RLnNvbWUoKFcpPT4hVy5zdGFydHNXaXRoKFwiIVwiKSk7aWYoSiYmWSlyZXR1cm4gbnVsbDtsZXQgWD1RLm1hcCgoVyk9PlcucmVwbGFjZSgvXiEvLFwiXCIpLnRvTG93ZXJDYXNlKCkpO3JldHVybntpbmNsdWRlOko/W106WCxleGNsdWRlOko/WDpbXSxpc0V4Y2x1c2l2ZTpKfX0pO2Z1bmN0aW9uIHhUKCQpe2xldCBRPVtdLEo9JC5tYXRjaCgvXk1DUCBzZXJ2ZXIgW1wiJ10oW15cIiddKylbXCInXS8pO2lmKEomJkpbMV0pUS5wdXNoKFwibWNwXCIpLFEucHVzaChKWzFdLnRvTG93ZXJDYXNlKCkpO2Vsc2V7bGV0IFc9JC5tYXRjaCgvXihbXjpbXSspOi8pO2lmKFcmJldbMV0pUS5wdXNoKFdbMV0udHJpbSgpLnRvTG93ZXJDYXNlKCkpfWxldCBZPSQubWF0Y2goL15cXFsoW15cXF1dKyldLyk7aWYoWSYmWVsxXSlRLnB1c2goWVsxXS50cmltKCkudG9Mb3dlckNhc2UoKSk7aWYoJC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiMXAgZXZlbnQ6XCIpKVEucHVzaChcIjFwXCIpO2xldCBYPSQubWF0Y2goLzpcXHMqKFteOl0rPykoPzpcXHMrKD86dHlwZXxtb2RlfHN0YXR1c3xldmVudCkpPzovKTtpZihYJiZYWzFdKXtsZXQgVz1YWzFdLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2lmKFcubGVuZ3RoPDMwJiYhVy5pbmNsdWRlcyhcIiBcIikpUS5wdXNoKFcpfXJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoUSkpfWZ1bmN0aW9uIGZUKCQsUSl7aWYoIVEpcmV0dXJuITA7aWYoJC5sZW5ndGg9PT0wKXJldHVybiExO2lmKFEuaXNFeGNsdXNpdmUpcmV0dXJuISQuc29tZSgoSik9PlEuZXhjbHVkZS5pbmNsdWRlcyhKKSk7ZWxzZSByZXR1cm4gJC5zb21lKChKKT0+US5pbmNsdWRlLmluY2x1ZGVzKEopKX1mdW5jdGlvbiByTygkLFEpe2lmKCFRKXJldHVybiEwO2xldCBKPXhUKCQpO3JldHVybiBmVChKLFEpfWltcG9ydCphcyBzIGZyb21cImZzXCI7aW1wb3J0e21rZGlyIGFzIHlULG9wZW4gYXMgZ1QscmVhZGRpciBhcyBoVCxyZWFkRmlsZSBhcyB0TyxyZW5hbWUgYXMgdVQscm1kaXIgYXMgbVQscm0gYXMgbFQsc3RhdCBhcyBjVCx1bmxpbmsgYXMgcFR9ZnJvbVwiZnMvcHJvbWlzZXNcIjtmdW5jdGlvbiBvTygkKXtyZXR1cm4vXltcXFxcL117Mn0vLnRlc3QoJCl9ZnVuY3Rpb24gTjUoJCxRKXtpZihvTyhRKSlyZXR1cm57cmVzb2x2ZWRQYXRoOlEsaXNTeW1saW5rOiExLGlzQ2Fub25pY2FsOiExfTt0cnl7bGV0IEo9JC5sc3RhdFN5bmMoUSk7aWYoSi5pc0ZJRk8oKXx8Si5pc1NvY2tldCgpfHxKLmlzQ2hhcmFjdGVyRGV2aWNlKCl8fEouaXNCbG9ja0RldmljZSgpKXJldHVybntyZXNvbHZlZFBhdGg6USxpc1N5bWxpbms6ITEsaXNDYW5vbmljYWw6ITF9O2xldCBZPSQucmVhbHBhdGhTeW5jKFEpO3JldHVybntyZXNvbHZlZFBhdGg6WSxpc1N5bWxpbms6WSE9PVEsaXNDYW5vbmljYWw6ITB9fWNhdGNoKEope3JldHVybntyZXNvbHZlZFBhdGg6USxpc1N5bWxpbms6ITEsaXNDYW5vbmljYWw6ITF9fX12YXIgZFQ9e2N3ZCgpe3JldHVybiBwcm9jZXNzLmN3ZCgpfSxleGlzdHNTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMuZXhpc3RzU3luYygkeyR9KWAsMCk7cmV0dXJuIHMuZXhpc3RzU3luYygkKX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LGFzeW5jIHN0YXQoJCl7cmV0dXJuIGNUKCQpfSxhc3luYyByZWFkZGlyKCQpe3JldHVybiBoVCgkLHt3aXRoRmlsZVR5cGVzOiEwfSl9LGFzeW5jIHVubGluaygkKXtyZXR1cm4gcFQoJCl9LGFzeW5jIHJtZGlyKCQpe3JldHVybiBtVCgkKX0sYXN5bmMgcm0oJCxRKXtyZXR1cm4gbFQoJCxRKX0sYXN5bmMgbWtkaXIoJCxRKXt0cnl7YXdhaXQgeVQoJCx7cmVjdXJzaXZlOiEwLC4uLlF9KX1jYXRjaChKKXtpZihvJChKKSE9PVwiRUVYSVNUXCIpdGhyb3cgSn19LGFzeW5jIHJlYWRGaWxlKCQsUSl7cmV0dXJuIHRPKCQse2VuY29kaW5nOlEuZW5jb2Rpbmd9KX0sYXN5bmMgcmVuYW1lKCQsUSl7cmV0dXJuIHVUKCQsUSl9LHN0YXRTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMuc3RhdFN5bmMoJHskfSlgLDApO3JldHVybiBzLnN0YXRTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0sbHN0YXRTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMubHN0YXRTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5sc3RhdFN5bmMoJCl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxyZWFkRmlsZVN5bmMoJCxRKXtsZXQgWT1bXTt0cnl7Y29uc3QgSj1aJChZLEMkYGZzLnJlYWRGaWxlU3luYygkeyR9KWAsMCk7cmV0dXJuIHMucmVhZEZpbGVTeW5jKCQse2VuY29kaW5nOlEuZW5jb2Rpbmd9KX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LHJlYWRGaWxlQnl0ZXNTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucmVhZEZpbGVCeXRlc1N5bmMoJHskfSlgLDApO3JldHVybiBzLnJlYWRGaWxlU3luYygkKX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LHJlYWRTeW5jKCQsUSl7bGV0IFg9W107dHJ5e2NvbnN0IEo9WiQoWCxDJGBmcy5yZWFkU3luYygkeyR9LCAke1EubGVuZ3RofSBieXRlcylgLDApO2xldCBZPXZvaWQgMDt0cnl7WT1zLm9wZW5TeW5jKCQsXCJyXCIpO2xldCBIPUJ1ZmZlci5hbGxvYyhRLmxlbmd0aCkscT1zLnJlYWRTeW5jKFksSCwwLFEubGVuZ3RoLDApO3JldHVybntidWZmZXI6SCxieXRlc1JlYWQ6cX19ZmluYWxseXtpZihZKXMuY2xvc2VTeW5jKFkpfX1jYXRjaChXKXt2YXIgRz1XLFU9MX1maW5hbGx5e00kKFgsRyxVKX19LGFwcGVuZEZpbGVTeW5jKCQsUSxKKXtsZXQgWD1bXTt0cnl7Y29uc3QgWT1aJChYLEMkYGZzLmFwcGVuZEZpbGVTeW5jKCR7JH0sICR7US5sZW5ndGh9IGNoYXJzKWAsMCk7aWYoSj8ubW9kZSE9PXZvaWQgMCl0cnl7bGV0IEg9cy5vcGVuU3luYygkLFwiYXhcIixKLm1vZGUpO3RyeXtzLmFwcGVuZEZpbGVTeW5jKEgsUSl9ZmluYWxseXtzLmNsb3NlU3luYyhIKX1yZXR1cm59Y2F0Y2goSCl7aWYobyQoSCkhPT1cIkVFWElTVFwiKXRocm93IEh9cy5hcHBlbmRGaWxlU3luYygkLFEpfWNhdGNoKFcpe3ZhciBHPVcsVT0xfWZpbmFsbHl7TSQoWCxHLFUpfX0sY29weUZpbGVTeW5jKCQsUSl7bGV0IFk9W107dHJ5e2NvbnN0IEo9WiQoWSxDJGBmcy5jb3B5RmlsZVN5bmMoJHskfSBcdTIxOTIgJHtRfSlgLDApO3MuY29weUZpbGVTeW5jKCQsUSl9Y2F0Y2goWCl7dmFyIFc9WCxHPTF9ZmluYWxseXtNJChZLFcsRyl9fSx1bmxpbmtTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMudW5saW5rU3luYygkeyR9KWAsMCk7cy51bmxpbmtTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0scmVuYW1lU3luYygkLFEpe2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgZnMucmVuYW1lU3luYygkeyR9IFx1MjE5MiAke1F9KWAsMCk7cy5yZW5hbWVTeW5jKCQsUSl9Y2F0Y2goWCl7dmFyIFc9WCxHPTF9ZmluYWxseXtNJChZLFcsRyl9fSxsaW5rU3luYygkLFEpe2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgZnMubGlua1N5bmMoJHskfSBcdTIxOTIgJHtRfSlgLDApO3MubGlua1N5bmMoJCxRKX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LHN5bWxpbmtTeW5jKCQsUSxKKXtsZXQgWD1bXTt0cnl7Y29uc3QgWT1aJChYLEMkYGZzLnN5bWxpbmtTeW5jKCR7JH0gXHUyMTkyICR7UX0pYCwwKTtzLnN5bWxpbmtTeW5jKCQsUSxKKX1jYXRjaChXKXt2YXIgRz1XLFU9MX1maW5hbGx5e00kKFgsRyxVKX19LHJlYWRsaW5rU3luYygkKXtsZXQgSj1bXTt0cnl7Y29uc3QgUT1aJChKLEMkYGZzLnJlYWRsaW5rU3luYygkeyR9KWAsMCk7cmV0dXJuIHMucmVhZGxpbmtTeW5jKCQpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0scmVhbHBhdGhTeW5jKCQpe2xldCBKPVtdO3RyeXtjb25zdCBRPVokKEosQyRgZnMucmVhbHBhdGhTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5yZWFscGF0aFN5bmMoJCkubm9ybWFsaXplKFwiTkZDXCIpfWNhdGNoKFkpe3ZhciBYPVksVz0xfWZpbmFsbHl7TSQoSixYLFcpfX0sbWtkaXJTeW5jKCQsUSl7bGV0IFg9W107dHJ5e2NvbnN0IEo9WiQoWCxDJGBmcy5ta2RpclN5bmMoJHskfSlgLDApO2xldCBZPXtyZWN1cnNpdmU6ITB9O2lmKFE/Lm1vZGUhPT12b2lkIDApWS5tb2RlPVEubW9kZTt0cnl7cy5ta2RpclN5bmMoJCxZKX1jYXRjaChIKXtpZihvJChIKSE9PVwiRUVYSVNUXCIpdGhyb3cgSH19Y2F0Y2goVyl7dmFyIEc9VyxVPTF9ZmluYWxseXtNJChYLEcsVSl9fSxyZWFkZGlyU3luYygkKXtsZXQgSj1bXTt0cnl7Y29uc3QgUT1aJChKLEMkYGZzLnJlYWRkaXJTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5yZWFkZGlyU3luYygkLHt3aXRoRmlsZVR5cGVzOiEwfSl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxyZWFkZGlyU3RyaW5nU3luYygkKXtsZXQgSj1bXTt0cnl7Y29uc3QgUT1aJChKLEMkYGZzLnJlYWRkaXJTdHJpbmdTeW5jKCR7JH0pYCwwKTtyZXR1cm4gcy5yZWFkZGlyU3luYygkKX1jYXRjaChZKXt2YXIgWD1ZLFc9MX1maW5hbGx5e00kKEosWCxXKX19LGlzRGlyRW1wdHlTeW5jKCQpe2xldCBZPVtdO3RyeXtjb25zdCBRPVokKFksQyRgZnMuaXNEaXJFbXB0eVN5bmMoJHskfSlgLDApO2xldCBKPXRoaXMucmVhZGRpclN5bmMoJCk7cmV0dXJuIEoubGVuZ3RoPT09MH1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LHJtZGlyU3luYygkKXtsZXQgSj1bXTt0cnl7Y29uc3QgUT1aJChKLEMkYGZzLnJtZGlyU3luYygkeyR9KWAsMCk7cy5ybWRpclN5bmMoJCl9Y2F0Y2goWSl7dmFyIFg9WSxXPTF9ZmluYWxseXtNJChKLFgsVyl9fSxybVN5bmMoJCxRKXtsZXQgWT1bXTt0cnl7Y29uc3QgSj1aJChZLEMkYGZzLnJtU3luYygkeyR9KWAsMCk7cy5ybVN5bmMoJCxRKX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e00kKFksVyxHKX19LGNyZWF0ZVdyaXRlU3RyZWFtKCQpe3JldHVybiBzLmNyZWF0ZVdyaXRlU3RyZWFtKCQpfSxhc3luYyByZWFkRmlsZUJ5dGVzKCQsUSl7aWYoUT09PXZvaWQgMClyZXR1cm4gdE8oJCk7bGV0IEo9YXdhaXQgZ1QoJCxcInJcIik7dHJ5e2xldHtzaXplOll9PWF3YWl0IEouc3RhdCgpLFg9TWF0aC5taW4oWSxRKSxXPUJ1ZmZlci5hbGxvY1Vuc2FmZShYKSxHPTA7d2hpbGUoRzxYKXtsZXR7Ynl0ZXNSZWFkOlV9PWF3YWl0IEoucmVhZChXLEcsWC1HLEcpO2lmKFU9PT0wKWJyZWFrO0crPVV9cmV0dXJuIEc8WD9XLnN1YmFycmF5KDAsRyk6V31maW5hbGx5e2F3YWl0IEouY2xvc2UoKX19fSxpVD1kVDtmdW5jdGlvbiBtJCgpe3JldHVybiBpVH1mdW5jdGlvbiBuVCgkLFEpe2lmKCQuZGVzdHJveWVkKXJldHVybjskLndyaXRlKFEpfWZ1bmN0aW9uIGFPKCQpe25UKHByb2Nlc3Muc3RkZXJyLCQpfWZ1bmN0aW9uIEFVKCQpe3JldHVybiAkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKyQuc2xpY2UoMSl9ZnVuY3Rpb24gc08oJCxRLEo9UStcInNcIil7cmV0dXJuICQ9PT0xP1E6Sn12YXIgblkkPXR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmlzV2VsbEZvcm1lZD09PVwiZnVuY3Rpb25cIj9GdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuaXNXZWxsRm9ybWVkKTp2b2lkIDAsclkkPXR5cGVvZiBTdHJpbmcucHJvdG90eXBlLnRvV2VsbEZvcm1lZD09PVwiZnVuY3Rpb25cIj9GdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudG9XZWxsRm9ybWVkKTp2b2lkIDA7dmFyIHJUPS9hcGlbXy1dP2tleXxzZWNyZXR8dG9rZW58cGFzc3dvcmR8cGFzc3dkfGNyZWRlbnRpYWx8YmVhcmVyfGF1dGhvcml6YXRpb258YXV0aFtfLV0/aGVhZGVyfGNvb2tpZXxzZXNzaW9uW18tXT8oPzppZHxrZXkpfGNvbm5lY3Rpb25bXy1dP3N0cmluZ3woPzpwcml2YXRlfHNzaHxlbmNyeXB0aW9ufHNpZ25pbmd8YWNjZXNzfGRlcGxveXxtYXN0ZXJ8bGljZW5zZSlbXy1dP2tleXxjbGllbnRbXy1dP3NlY3JldC9pLGVPPVwiW15cXFxccyw7Jn1cXFxcXSldK1wiLCQyPWBcXFxcW1JFREFDVEVEXFxcXF18XCJbXlwiXSpcInwnW14nXSonfCg/OkJlYXJlcnxCYXNpYylcXFxccysoPzpcXFxcW1JFREFDVEVEXFxcXF18JHtlT30pfCR7ZU99YCxvVD1bXCJza1wiLFwiYW50XCIsXCJhcGlcIl0uam9pbihcIi1cIiksdFQ9W3tpZDpcInVybC11c2VyaW5mb1wiLHNvdXJjZTpcIjpcXFxcL1xcXFwvKFteL0BcXFxcc10rKUBcIixjb25maWRlbmNlOlwibG93XCJ9LHtpZDpcImdjcC1zZXJ2aWNlLWFjY291bnRcIixzb3VyY2U6XCJcXFxcYihbYS16MC05LV0rQFthLXowLTktXStcXFxcLmlhbVxcXFwuZ3NlcnZpY2VhY2NvdW50XFxcXC5jb20pXFxcXGJcIixmbGFnczpcImlcIixjb25maWRlbmNlOlwibG93XCJ9LHtpZDpcImxvb3NlLWFudGhyb3BpYy1rZXlcIixzb3VyY2U6XCJcXFxcYihzay1hbnQtP1tcXFxcdy1dezEwLH0pXCIsY29uZmlkZW5jZTpcImxvd1wifSx7aWQ6XCJodHRwLWF1dGgtc2NoZW1lXCIsc291cmNlOlwiXFxcXGIoPzpCZWFyZXJ8QmFzaWMpXFxcXHMrKFtBLVphLXowLTkrLz0uX34tXXsyMCx9KVwiLGZsYWdzOlwiaVwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwibG9vc2Utand0XCIsc291cmNlOlwiXFxcXGIoZXlKW0EtWmEtejAtOV8tXXsxMCx9XFxcXC5bQS1aYS16MC05Xy1dezEwLH1cXFxcLltBLVphLXowLTlfLV17MTAsfSlcIixjb25maWRlbmNlOlwibG93XCJ9LHtpZDpcInNlbnNpdGl2ZS1hc3NpZ25cIixzb3VyY2U6YCg/OiR7clQuc291cmNlfSlbXFxcXHcuLV0qW1wiJ10/XFxcXHMqWz06XVxcXFxzKigkeyQyfSlgLGZsYWdzOlwiaVwiLGNvbmZpZGVuY2U6XCJsb3dcIn0se2lkOlwiY2xvdWQtZW52LXZhclwiLHNvdXJjZTpgXFxcXGIoPzpBV1N8R09PR0xFfEdDUHxHQ0xPVUR8QVpVUkUpX1xcXFx3K1xcXFxzKls9Ol1cXFxccyooJHskMn0pYCxmbGFnczpcImlcIixjb25maWRlbmNlOlwibG93XCJ9LHtpZDpcImF3cy1hY2Nlc3MtdG9rZW5cIixzb3VyY2U6XCJcXFxcYigoPzpBM1RbQS1aMC05XXxBS0lBfEFTSUF8QUJJQXxBQ0NBKVtBLVoyLTddezE2fSlcXFxcYlwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdjcC1hcGkta2V5XCIsc291cmNlOmBcXFxcYihBSXphW1xcXFx3LV17MzV9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImF6dXJlLWFkLWNsaWVudC1zZWNyZXRcIixzb3VyY2U6YCg/Ol58W1xcXFxcXFxcJ1wiXFxcXHg2MFxcXFxzPj06KCwpXSkoW2EtekEtWjAtOV9+Ll17M31cXFxcZFF+W2EtekEtWjAtOV9+Li1dezMxLDM0fSkoPzokfFtcXFxcXFxcXCdcIlxcXFx4NjBcXFxcczwpLF0pYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJkaWdpdGFsb2NlYW4tcGF0XCIsc291cmNlOmBcXFxcYihkb3BfdjFfW2EtZjAtOV17NjR9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImRpZ2l0YWxvY2Vhbi1hY2Nlc3MtdG9rZW5cIixzb3VyY2U6YFxcXFxiKGRvb192MV9bYS1mMC05XXs2NH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiYW50aHJvcGljLWFwaS1rZXlcIixzb3VyY2U6YFxcXFxiKCR7b1R9MDMtW2EtekEtWjAtOV9cXFxcLV17OTN9QUEpKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiYW50aHJvcGljLWFkbWluLWFwaS1rZXlcIixzb3VyY2U6YFxcXFxiKHNrLWFudC1hZG1pbjAxLVthLXpBLVowLTlfXFxcXC1dezkzfUFBKSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcIm9wZW5haS1hcGkta2V5XCIsc291cmNlOmBcXFxcYihzay0oPzpwcm9qfHN2Y2FjY3R8YWRtaW4pLSg/OltBLVphLXowLTlfLV17NzR9fFtBLVphLXowLTlfLV17NTh9KVQzQmxia0ZKKD86W0EtWmEtejAtOV8tXXs3NH18W0EtWmEtejAtOV8tXXs1OH0pXFxcXGJ8c2stW2EtekEtWjAtOV17MjB9VDNCbGJrRkpbYS16QS1aMC05XXsyMH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiaHVnZ2luZ2ZhY2UtYWNjZXNzLXRva2VuXCIsc291cmNlOmBcXFxcYihoZl9bYS16QS1aXXszNH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ2l0aHViLXBhdFwiLHNvdXJjZTpcImdocF9bMC05YS16QS1aXXszNn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRodWItZmluZS1ncmFpbmVkLXBhdFwiLHNvdXJjZTpcImdpdGh1Yl9wYXRfXFxcXHd7ODJ9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ2l0aHViLWFwcC10b2tlblwiLHNvdXJjZTpcIig/OmdodXxnaHMpX1swLTlhLXpBLVpdezM2fVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImdpdGh1Yi1vYXV0aFwiLHNvdXJjZTpcImdob19bMC05YS16QS1aXXszNn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRodWItcmVmcmVzaC10b2tlblwiLHNvdXJjZTpcImdocl9bMC05YS16QS1aXXszNn1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJnaXRsYWItcGF0XCIsc291cmNlOlwiZ2xwYXQtW1xcXFx3LV17MjB9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ2l0bGFiLWRlcGxveS10b2tlblwiLHNvdXJjZTpcImdsZHQtWzAtOWEtekEtWl9cXFxcLV17MjB9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2xhY2stYm90LXRva2VuXCIsc291cmNlOlwieG94Yi1bMC05XXsxMCwxM30tWzAtOV17MTAsMTN9W2EtekEtWjAtOS1dKlwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInNsYWNrLXVzZXItdG9rZW5cIixzb3VyY2U6XCJ4b3hbcGVdKD86LVswLTldezEwLDEzfSl7M30tW2EtekEtWjAtOS1dezI4LDM0fVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInNsYWNrLWFwcC10b2tlblwiLHNvdXJjZTpcInhhcHAtXFxcXGQtW0EtWjAtOV0rLVxcXFxkKy1bYS16MC05XStcIixmbGFnczpcImlcIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJ0d2lsaW8tYXBpLWtleVwiLHNvdXJjZTpcIlNLWzAtOWEtZkEtRl17MzJ9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2VuZGdyaWQtYXBpLXRva2VuXCIsc291cmNlOmBcXFxcYihTR1xcXFwuW2EtekEtWjAtOT1fXFxcXC0uXXs2Nn0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwibnBtLWFjY2Vzcy10b2tlblwiLHNvdXJjZTpgXFxcXGIobnBtX1thLXpBLVowLTldezM2fSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJweXBpLXVwbG9hZC10b2tlblwiLHNvdXJjZTpcInB5cGktQWdFSWNIbHdhUzV2Y21jW1xcXFx3LV17NTAsMTAwMH1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJkYXRhYnJpY2tzLWFwaS10b2tlblwiLHNvdXJjZTpgXFxcXGIoZGFwaVthLWYwLTldezMyfSg/Oi1cXFxcZCk/KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcImhhc2hpY29ycC10Zi1hcGktdG9rZW5cIixzb3VyY2U6XCJbYS16QS1aMC05XXsxNH1cXFxcLmF0bGFzdjFcXFxcLlthLXpBLVowLTlcXFxcLV89XXs2MCw3MH1cIixjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJwdWx1bWktYXBpLXRva2VuXCIsc291cmNlOmBcXFxcYihwdWwtW2EtZjAtOV17NDB9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInBvc3RtYW4tYXBpLXRva2VuXCIsc291cmNlOmBcXFxcYihQTUFLLVthLWZBLUYwLTldezI0fS1bYS1mQS1GMC05XXszNH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwiZ3JhZmFuYS1hcGkta2V5XCIsc291cmNlOmBcXFxcYihleUpySWpvaVtBLVphLXowLTkrL117NzAsNDAwfT17MCwzfSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJncmFmYW5hLWNsb3VkLWFwaS10b2tlblwiLHNvdXJjZTpgXFxcXGIoZ2xjX1tBLVphLXowLTkrL117MzIsNDAwfT17MCwzfSkoPzpbXFxcXHg2MCdcIlxcXFxzO118XFxcXFxcXFxbbnJdfCQpYCxjb25maWRlbmNlOlwiaGlnaFwifSx7aWQ6XCJncmFmYW5hLXNlcnZpY2UtYWNjb3VudC10b2tlblwiLHNvdXJjZTpgXFxcXGIoZ2xzYV9bQS1aYS16MC05XXszMn1fW0EtRmEtZjAtOV17OH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2VudHJ5LXVzZXItdG9rZW5cIixzb3VyY2U6YFxcXFxiKHNudHJ5dV9bYS1mMC05XXs2NH0pKD86W1xcXFx4NjAnXCJcXFxccztdfFxcXFxcXFxcW25yXXwkKWAsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2VudHJ5LW9yZy10b2tlblwiLHNvdXJjZTpcIlxcXFxic250cnlzX2V5SnBZWFFpT1thLXpBLVowLTkrL117MTAsMjAwfSg/OkxDSnlaV2RwYjI1ZmRYSnN8SW5KbFoybHZibDkxY213aXxjbVZuYVc5dVgzVnliQ0k2KVthLXpBLVowLTkrL117MTAsMjAwfT17MCwyfV9bYS16QS1aMC05Ky9dezQzfVwiLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInN0cmlwZS1hY2Nlc3MtdG9rZW5cIixzb3VyY2U6YFxcXFxiKCg/OnNrfHJrKV8oPzp0ZXN0fGxpdmV8cHJvZClfW2EtekEtWjAtOV17MTAsOTl9KSg/OltcXFxceDYwJ1wiXFxcXHM7XXxcXFxcXFxcXFtucl18JClgLGNvbmZpZGVuY2U6XCJoaWdoXCJ9LHtpZDpcInNob3BpZnktYWNjZXNzLXRva2VuXCIsc291cmNlOlwic2hwYXRfW2EtZkEtRjAtOV17MzJ9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwic2hvcGlmeS1zaGFyZWQtc2VjcmV0XCIsc291cmNlOlwic2hwc3NfW2EtZkEtRjAtOV17MzJ9XCIsY29uZmlkZW5jZTpcImhpZ2hcIn0se2lkOlwicHJpdmF0ZS1rZXlcIixzb3VyY2U6XCItLS0tLUJFR0lOWyBBLVowLTlfLV17MCwxMDB9UFJJVkFURSBLRVkoPzogQkxPQ0spPy0tLS0tW1xcXFxzXFxcXFMtXXs2NCx9Py0tLS0tRU5EWyBBLVowLTlfLV17MCwxMDB9UFJJVkFURSBLRVkoPzogQkxPQ0spPy0tLS0tXCIsZmxhZ3M6XCJpXCIsY29uZmlkZW5jZTpcImhpZ2hcIn1dO3ZhciBRMj1udWxsO2Z1bmN0aW9uIGFUKCQpe3JldHVybiB0VC5tYXAoKFEpPT4oe2lkOlEuaWQsY29uZmlkZW5jZTpRLmNvbmZpZGVuY2UscmU6bmV3IFJlZ0V4cChRLnNvdXJjZSwkPyhRLmZsYWdzPz9cIlwiKS5yZXBsYWNlKFwiZ1wiLFwiXCIpK1wiZ1wiOlEuZmxhZ3M/P1wiXCIpfSkpfWZ1bmN0aW9uIEoyKCQpe1EyPz89YVQoITApO2ZvcihsZXQgUSBvZiBRMikkPSQucmVwbGFjZShRLnJlLChKLFkpPT57aWYodHlwZW9mIFkhPT1cInN0cmluZ1wiKXJldHVyblwiW1JFREFDVEVEXVwiO2xldCBYPVkubGVuZ3RoPj0yJiYoWVswXT09PSdcIid8fFlbMF09PT1cIidcIikmJlkuYXQoLTEpPT09WVswXT9ZWzBdOlwiXCIsVz1KLmxhc3RJbmRleE9mKFkpO3JldHVybmAke0ouc2xpY2UoMCxXKX0ke1h9W1JFREFDVEVEXSR7WH0ke0ouc2xpY2UoVytZLmxlbmd0aCl9YH0pO3JldHVybiAkfXZhciBFVT17dmVyYm9zZTowLGRlYnVnOjEsaW5mbzoyLHdhcm46MyxlcnJvcjo0fSxReD12JCgoKT0+e2xldCAkPXByb2Nlc3MuZW52LkNMQVVERV9DT0RFX0RFQlVHX0xPR19MRVZFTD8udG9Mb3dlckNhc2UoKS50cmltKCk7aWYoJCYmT2JqZWN0Lmhhc093bihFVSwkKSlyZXR1cm4gJDtyZXR1cm5cImRlYnVnXCJ9KSxKeD0hMTtmdW5jdGlvbiBPNSgpe3JldHVybiB0eXBlb2YgcHJvY2VzczxcInVcIiYmQXJyYXkuaXNBcnJheShwcm9jZXNzLmFyZ3YpP3Byb2Nlc3MuYXJndjpbXX12YXIgYlU9diQoKCk9PntsZXQgJD1PNSgpO3JldHVybiBKeHx8UiQocHJvY2Vzcy5lbnYuREVCVUcpfHxSJChwcm9jZXNzLmVudi5ERUJVR19TREspfHwkLmluY2x1ZGVzKFwiLS1kZWJ1Z1wiKXx8JC5pbmNsdWRlcyhcIi1kXCIpfHxHMigpfHwkLnNvbWUoKFEpPT5RLnN0YXJ0c1dpdGgoXCItLWRlYnVnPVwiKSl8fFUyKCkhPT1udWxsfSk7dmFyIFh4PXYkKCgpPT57bGV0ICQ9TzUoKS5maW5kKChKKT0+Si5zdGFydHNXaXRoKFwiLS1kZWJ1Zz1cIikpO2lmKCEkKXJldHVybiBudWxsO2xldCBRPSQuc3Vic3RyaW5nKDgpO3JldHVybiBuTyhRKX0pLEcyPXYkKCgpPT57bGV0ICQ9TzUoKTtyZXR1cm4gJC5pbmNsdWRlcyhcIi0tZGVidWctdG8tc3RkZXJyXCIpfHwkLmluY2x1ZGVzKFwiLWQyZVwiKX0pLFUyPXYkKCgpPT57bGV0ICQ9TzUoKTtmb3IobGV0IFE9MDtRPCQubGVuZ3RoO1ErKyl7bGV0IEo9JFtRXTtpZihKLnN0YXJ0c1dpdGgoXCItLWRlYnVnLWZpbGU9XCIpKXJldHVybiBKLnN1YnN0cmluZygxMyk7aWYoSj09PVwiLS1kZWJ1Zy1maWxlXCImJlErMTwkLmxlbmd0aClyZXR1cm4gJFtRKzFdfXJldHVybiBudWxsfSk7ZnVuY3Rpb24gWXgoJCl7aWYoIWJVKCkpcmV0dXJuITE7aWYodHlwZW9mIHByb2Nlc3M+XCJ1XCJ8fHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPlwidVwifHx0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPlwidVwiKXJldHVybiExO2xldCBRPVh4KCk7cmV0dXJuIHJPKCQsUSl9dmFyIFd4PSExO3ZhciBHeD0xMDQ4NTc2MCx3NT1udWxsLElVPVByb21pc2UucmVzb2x2ZSgpLGc3PS0xLFJVPSExLF9VPW51bGw7YXN5bmMgZnVuY3Rpb24gSDIoJCxRLEo9R3gpe2lmKGc3PDApZzc9YXdhaXQgZVQoJCkudGhlbigoWSk9Plkuc2l6ZSkuY2F0Y2goKCk9PjApO2Vsc2UgZzcrPVE7aWYoZzc8PUp8fFJVKXJldHVybjtSVT0hMDt0cnl7bGV0IFk9JC5lbmRzV2l0aChcIi50eHRcIik/YCR7JC5zbGljZSgwLC00KX0uMS50eHRgOmAkeyR9LjFgO3RyeXthd2FpdCBZMigkLFkpfWNhdGNoKFgpe2lmKCFGMShYKSlhd2FpdCBQVShZKS5jYXRjaCgoKT0+e30pLGF3YWl0IFkyKCQsWSkuY2F0Y2goKCk9PlBVKCQpLmNhdGNoKCgpPT57fSkpfWc3PTB9ZmluYWxseXtSVT0hMX19ZnVuY3Rpb24gSzIoJCl7cmV0dXJuIF9VPWtVKCQsYCR7RFUoKX0udHh0YCksX1V9YXN5bmMgZnVuY3Rpb24gVXgoJCxRLEosWSl7aWYoJClhd2FpdCBzVChRLHtyZWN1cnNpdmU6ITB9KS5jYXRjaCgoKT0+e30pO2xldCBYPUo7dHJ5e2F3YWl0IFgyKEosWSl9Y2F0Y2goVyl7aWYoIXFVKFcpKXRocm93IFc7WD1LMihKKSxhd2FpdCBYMihYLFkpfWF3YWl0IEgyKFgsQnVmZmVyLmJ5dGVMZW5ndGgoWSkpLmNhdGNoKFNVKSxWMigpfWZ1bmN0aW9uIFNVKCl7fWZ1bmN0aW9uIEh4KCl7aWYoIXc1KXtsZXQgJD1udWxsO3c1PXBPKHt3cml0ZUZuOihRKT0+e2xldCBKPXEyKCksWT1XMihKKSxYPSQhPT1ZO2lmKCQ9WSxiVSgpKXtpZihYKXRyeXttJCgpLm1rZGlyU3luYyhZKX1jYXRjaHt9bGV0IFc9Sjt0cnl7bSQoKS5hcHBlbmRGaWxlU3luYyhKLFEpfWNhdGNoKEcpe2lmKCFxVShHKSl0aHJvdyBHO1c9SzIoSiksbSQoKS5hcHBlbmRGaWxlU3luYyhXLFEpfUgyKFcsQnVmZmVyLmJ5dGVMZW5ndGgoUSkpLmNhdGNoKFNVKSxWMigpO3JldHVybn1JVT1JVS50aGVuKFV4LmJpbmQobnVsbCxYLFksSixRKSkuY2F0Y2goU1UpfSxmbHVzaEludGVydmFsTXM6MTAwMCxtYXhCdWZmZXJTaXplOjEwMCxpbW1lZGlhdGVNb2RlOmJVKCl9KSxpTyhhc3luYygpPT57dzU/LmRpc3Bvc2UoKSxhd2FpdCBJVX0pfXJldHVybiB3NX1mdW5jdGlvbiBYJCgkLHtsZXZlbDpRfT17bGV2ZWw6XCJkZWJ1Z1wifSl7aWYoRVVbUV08RVVbUXgoKV0pcmV0dXJuO2lmKCFZeCgkKSlyZXR1cm47aWYoV3gmJiQuaW5jbHVkZXMoYFxuYCkpJD1CJCgkKTtsZXQgWT1gJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9IFske1EudG9VcHBlckNhc2UoKX1dICR7SjIoJC50cmltKCkpfVxuYDtpZihHMigpKXthTyhZKTtyZXR1cm59SHgoKS53cml0ZShZKX1mdW5jdGlvbiBxMigpe3JldHVybiBVMigpPz9fVT8/cHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfREVCVUdfTE9HU19ESVI/P2tVKHA2KCksXCJkZWJ1Z1wiLGAke0RVKCl9LnR4dGApfXZhciBWMj12JChhc3luYygpPT57dHJ5e2xldCAkPXEyKCksUT1XMigkKSxKPWtVKFEsXCJsYXRlc3RcIik7YXdhaXQgUFUoSikuY2F0Y2goKCk9Pnt9KSxhd2FpdCAkeCgkLEopfWNhdGNoe319KTt2YXIgTzMkPSgoKT0+e2xldCAkPXByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1NMT1dfT1BFUkFUSU9OX1RIUkVTSE9MRF9NUztpZigkIT09dm9pZCAwKXtsZXQgUT1OdW1iZXIoJCk7aWYoIU51bWJlci5pc05hTihRKSYmUT49MClyZXR1cm4gUX1yZXR1cm4gMS8wfSkoKTt2YXIgS3g9e1tTeW1ib2wuZGlzcG9zZV0oKXt9fTtmdW5jdGlvbiBxeCgpe3JldHVybiBLeH12YXIgQyQ9cXg7ZnVuY3Rpb24gQiQoJCxRLEope2xldCBYPVtdO3RyeXtjb25zdCBZPVokKFgsQyRgSlNPTi5zdHJpbmdpZnkoJHskfSlgLDApO3JldHVybiBKU09OLnN0cmluZ2lmeSgkLFEsSil9Y2F0Y2goVyl7dmFyIEc9VyxVPTF9ZmluYWxseXtNJChYLEcsVSl9fXZhciBsJD0oJCxRKT0+e2xldCBZPVtdO3RyeXtjb25zdCBKPVokKFksQyRgSlNPTi5wYXJzZSgkeyR9KWAsMCk7cmV0dXJuIHR5cGVvZiBRPlwidVwiP0pTT04ucGFyc2UoJCk6SlNPTi5wYXJzZSgkLFEpfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX07ZnVuY3Rpb24gUjQoJCxRKXtsZXQgWT1bXTt0cnl7Y29uc3QgSj1aJChZLEMkYHN0cnVjdHVyZWRDbG9uZSgkeyR9KWAsMCk7cmV0dXJuIHN0cnVjdHVyZWRDbG9uZSgkLFEpfWNhdGNoKFgpe3ZhciBXPVgsRz0xfWZpbmFsbHl7TSQoWSxXLEcpfX1mdW5jdGlvbiBWeCgkKXtsZXQgUT0kLnRyaW0oKTtyZXR1cm4gUS5zdGFydHNXaXRoKFwie1wiKSYmUS5lbmRzV2l0aChcIn1cIil9ZnVuY3Rpb24gQjIoJCxRKXtsZXQgSj17Li4uJH07aWYoUSl7bGV0IFk9US5lbmFibGVkPT09ITAmJlEuZmFpbElmVW5hdmFpbGFibGU9PT12b2lkIDA/ey4uLlEsZmFpbElmVW5hdmFpbGFibGU6ITB9OlEsWD1KLnNldHRpbmdzO2lmKFgmJiFWeChYKSl0aHJvdyBFcnJvcihcIkNhbm5vdCB1c2UgYm90aCBhIHNldHRpbmdzIGZpbGUgcGF0aCBhbmQgdGhlIHNhbmRib3ggb3B0aW9uLiBJbmNsdWRlIHRoZSBzYW5kYm94IGNvbmZpZ3VyYXRpb24gaW4geW91ciBzZXR0aW5ncyBmaWxlIGluc3RlYWQuXCIpO2xldCBXPXtzYW5kYm94Oll9O2lmKFgpdHJ5e1c9ey4uLmwkKFgpLHNhbmRib3g6WX19Y2F0Y2h7fUouc2V0dGluZ3M9QiQoVyl9cmV0dXJuIEp9dmFyIHd4PTIwMDAsRDU9bmV3IFNldCx6Mj0hMTtmdW5jdGlvbiBPeCgpe2ZvcihsZXQgJCBvZiBENSlpZighJC5raWxsZWQpJC5raWxsKFwiU0lHVEVSTVwiKX1mdW5jdGlvbiBEeCgkKXtpZihENS5hZGQoJCksIXoyKXoyPSEwLHByb2Nlc3Mub24oXCJleGl0XCIsT3gpfWNsYXNzIGg3e29wdGlvbnM7cHJvY2Vzcztwcm9jZXNzU3RkaW47cHJvY2Vzc1N0ZG91dDtyZWFkeT0hMTthYm9ydENvbnRyb2xsZXI7ZXhpdEVycm9yO2V4aXRMaXN0ZW5lcnM9W107YWJvcnRIYW5kbGVyO3BlbmRpbmdXcml0ZXM9W107cGVuZGluZ0VuZElucHV0PSExO3NwYXduUmVzb2x2ZTtzcGF3blJlamVjdDtzcGF3blByb21pc2U7Y29uc3RydWN0b3IoJCl7dGhpcy5vcHRpb25zPSQ7aWYodGhpcy5hYm9ydENvbnRyb2xsZXI9JC5hYm9ydENvbnRyb2xsZXJ8fGEwKCksJC5kZWZlclNwYXduKXRoaXMuc3Bhd25Qcm9taXNlPW5ldyBQcm9taXNlKChRLEopPT57dGhpcy5zcGF3blJlc29sdmU9USx0aGlzLnNwYXduUmVqZWN0PUp9KSx0aGlzLnNwYXduUHJvbWlzZS5jYXRjaCgoKT0+e30pO2Vsc2UgdGhpcy5pbml0aWFsaXplKCl9c3Bhd24oKXt0cnl7dGhpcy5pbml0aWFsaXplKCl9Y2F0Y2goUSl7dGhyb3cgdGhpcy5zcGF3bkFib3J0KEk0KFEpKSxRfWxldCAkPXRoaXMucGVuZGluZ1dyaXRlcztpZih0aGlzLnBlbmRpbmdXcml0ZXM9W10sdGhpcy5zcGF3blJlc29sdmUpdGhpcy5zcGF3blJlc29sdmUoKSx0aGlzLnNwYXduUmVzb2x2ZT12b2lkIDAsdGhpcy5zcGF3blJlamVjdD12b2lkIDA7Zm9yKGxldCBRIG9mICQpdGhpcy53cml0ZShRKTtpZih0aGlzLnBlbmRpbmdFbmRJbnB1dCl0aGlzLnBlbmRpbmdFbmRJbnB1dD0hMSx0aGlzLnByb2Nlc3NTdGRpbj8uZW5kKCl9c3Bhd25BYm9ydCgkKXtpZih0aGlzLnNwYXduUmVqZWN0KXRoaXMuc3Bhd25SZWplY3QoJCksdGhpcy5zcGF3blJlamVjdD12b2lkIDAsdGhpcy5zcGF3blJlc29sdmU9dm9pZCAwLHRoaXMucGVuZGluZ1dyaXRlcz1bXX11cGRhdGVFbnYoJCl7aWYodGhpcy5vcHRpb25zLmVudilPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucy5lbnYsJCk7ZWxzZSB0aGlzLm9wdGlvbnMuZW52PXsuLi4kfX11cGRhdGVSZXN1bWUoJCl7dGhpcy5vcHRpb25zLnJlc3VtZT0kfWdldERlZmF1bHRFeGVjdXRhYmxlKCl7cmV0dXJuIGUwKCk/XCJidW5cIjpcIm5vZGVcIn1zcGF3bkxvY2FsUHJvY2VzcygkKXtsZXR7Y29tbWFuZDpRLGFyZ3M6Sixjd2Q6WSxlbnY6WCxzaWduYWw6V309JCxHPVIkKFguREVCVUdfQ0xBVURFX0FHRU5UX1NESyl8fHRoaXMub3B0aW9ucy5zdGRlcnI/XCJwaXBlXCI6XCJpZ25vcmVcIixVPUJ4KFEsSix7Y3dkOlksc3RkaW86W1wicGlwZVwiLFwicGlwZVwiLEddLHNpZ25hbDpXLGVudjpYLHdpbmRvd3NIaWRlOiEwfSk7aWYoUiQoWC5ERUJVR19DTEFVREVfQUdFTlRfU0RLKXx8dGhpcy5vcHRpb25zLnN0ZGVycilVLnN0ZGVyci5vbihcImRhdGFcIiwocSk9PntsZXQgVj1xLnRvU3RyaW5nKCk7aWYoWjYoViksdGhpcy5vcHRpb25zLnN0ZGVycil0aGlzLm9wdGlvbnMuc3RkZXJyKFYpfSk7cmV0dXJue3N0ZGluOlUuc3RkaW4sc3Rkb3V0OlUuc3Rkb3V0LGdldCBraWxsZWQoKXtyZXR1cm4gVS5raWxsZWR9LGdldCBleGl0Q29kZSgpe3JldHVybiBVLmV4aXRDb2RlfSxraWxsOlUua2lsbC5iaW5kKFUpLG9uOlUub24uYmluZChVKSxvbmNlOlUub25jZS5iaW5kKFUpLG9mZjpVLm9mZi5iaW5kKFUpfX1pbml0aWFsaXplKCl7dHJ5e2xldHthZGRpdGlvbmFsRGlyZWN0b3JpZXM6JD1bXSxhZ2VudDpRLGJldGFzOkosY3dkOlksZXhlY3V0YWJsZTpYPXRoaXMuZ2V0RGVmYXVsdEV4ZWN1dGFibGUoKSxleGVjdXRhYmxlQXJnczpXPVtdLGV4dHJhQXJnczpHPXt9LHBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlOlUsZW52Okg9ey4uLnByb2Nlc3MuZW52fSx0aGlua2luZ0NvbmZpZzpxLG1heFR1cm5zOlYsbWF4QnVkZ2V0VXNkOkIsdGFza0J1ZGdldDp6LG1vZGVsOk4sZmFsbGJhY2tNb2RlbDp3LGpzb25TY2hlbWE6TyxwZXJtaXNzaW9uTW9kZTpELGFsbG93RGFuZ2Vyb3VzbHlTa2lwUGVybWlzc2lvbnM6TSxwZXJtaXNzaW9uUHJvbXB0VG9vbE5hbWU6aixjb250aW51ZUNvbnZlcnNhdGlvbjpBLHJlc3VtZTprLHNldHRpbmdTb3VyY2VzOnUsc2tpbGxzOkckLGRpc2FsbG93ZWRUb29sczpoJD1bXSx0b29sczpzJCxtY3BTZXJ2ZXJzOnU2LHN0cmljdE1jcENvbmZpZzpDNCxjYW5Vc2VUb29sOkw0LGluY2x1ZGVQYXJ0aWFsTWVzc2FnZXM6bjAscGx1Z2luczpVMSxzYW5kYm94OnIwfT10aGlzLm9wdGlvbnMse2FsbG93ZWRUb29sczphMT1bXX09dGhpcy5vcHRpb25zO2lmKEckIT09dm9pZCAwKXtsZXQgZCQ9RyQ9PT1cImFsbFwiP1tcIlNraWxsXCJdOkckLm1hcCgoZSQpPT5gU2tpbGwoJHtlJH0pYCksWDQ9bmV3IFNldChhMSk7YTE9Wy4uLmExLC4uLmQkLmZpbHRlcigoZSQpPT4hWDQuaGFzKGUkKSldfWxldCBpPVtcIi0tb3V0cHV0LWZvcm1hdFwiLFwic3RyZWFtLWpzb25cIixcIi0tdmVyYm9zZVwiLFwiLS1pbnB1dC1mb3JtYXRcIixcInN0cmVhbS1qc29uXCJdO2lmKHEpe3N3aXRjaChxLnR5cGUpe2Nhc2VcImVuYWJsZWRcIjppZihxLmJ1ZGdldFRva2Vucz09PXZvaWQgMClpLnB1c2goXCItLXRoaW5raW5nXCIsXCJhZGFwdGl2ZVwiKTtlbHNlIGkucHVzaChcIi0tbWF4LXRoaW5raW5nLXRva2Vuc1wiLHEuYnVkZ2V0VG9rZW5zLnRvU3RyaW5nKCkpO2JyZWFrO2Nhc2VcImRpc2FibGVkXCI6aS5wdXNoKFwiLS10aGlua2luZ1wiLFwiZGlzYWJsZWRcIik7YnJlYWs7Y2FzZVwiYWRhcHRpdmVcIjppLnB1c2goXCItLXRoaW5raW5nXCIsXCJhZGFwdGl2ZVwiKTticmVha31pZihxLnR5cGUhPT1cImRpc2FibGVkXCImJnEuZGlzcGxheSlpLnB1c2goXCItLXRoaW5raW5nLWRpc3BsYXlcIixxLmRpc3BsYXkpfWlmKHRoaXMub3B0aW9ucy5lZmZvcnQpaS5wdXNoKFwiLS1lZmZvcnRcIix0aGlzLm9wdGlvbnMuZWZmb3J0KTtpZihWKWkucHVzaChcIi0tbWF4LXR1cm5zXCIsVi50b1N0cmluZygpKTtpZihCIT09dm9pZCAwKWkucHVzaChcIi0tbWF4LWJ1ZGdldC11c2RcIixCLnRvU3RyaW5nKCkpO2lmKHopaS5wdXNoKFwiLS10YXNrLWJ1ZGdldFwiLHoudG90YWwudG9TdHJpbmcoKSk7aWYoTilpLnB1c2goXCItLW1vZGVsXCIsTik7aWYoUSlpLnB1c2goXCItLWFnZW50XCIsUSk7aWYoSiYmSi5sZW5ndGg+MClpLnB1c2goXCItLWJldGFzXCIsSi5qb2luKFwiLFwiKSk7aWYoTylpLnB1c2goXCItLWpzb24tc2NoZW1hXCIsQiQoTykpO2lmKHRoaXMub3B0aW9ucy5kZWJ1Z0ZpbGUpaS5wdXNoKFwiLS1kZWJ1Zy1maWxlXCIsdGhpcy5vcHRpb25zLmRlYnVnRmlsZSk7ZWxzZSBpZih0aGlzLm9wdGlvbnMuZGVidWcpaS5wdXNoKFwiLS1kZWJ1Z1wiKTtpZighdGhpcy5vcHRpb25zLmRlYnVnRmlsZSYmIXRoaXMub3B0aW9ucy5zcGF3bkNsYXVkZUNvZGVQcm9jZXNzKXtsZXQgZCQ9bXcoKTtpZihkJClpLnB1c2goXCItLWRlYnVnLWZpbGVcIixkJCl9aWYoTDQpe2lmKGopdGhyb3cgRXJyb3IoXCJjYW5Vc2VUb29sIGNhbGxiYWNrIGNhbm5vdCBiZSB1c2VkIHdpdGggcGVybWlzc2lvblByb21wdFRvb2xOYW1lLiBQbGVhc2UgdXNlIG9uZSBvciB0aGUgb3RoZXIuXCIpO2kucHVzaChcIi0tcGVybWlzc2lvbi1wcm9tcHQtdG9vbFwiLFwic3RkaW9cIil9ZWxzZSBpZihqKWkucHVzaChcIi0tcGVybWlzc2lvbi1wcm9tcHQtdG9vbFwiLGopO2lmKEEpaS5wdXNoKFwiLS1jb250aW51ZVwiKTtpZihrKWkucHVzaChcIi0tcmVzdW1lXCIsayk7aWYodGhpcy5vcHRpb25zLmFzc2lzdGFudClpLnB1c2goXCItLWFzc2lzdGFudFwiKTtpZih0aGlzLm9wdGlvbnMuY2hhbm5lbHMmJnRoaXMub3B0aW9ucy5jaGFubmVscy5sZW5ndGg+MClpLnB1c2goXCItLWNoYW5uZWxzXCIsLi4udGhpcy5vcHRpb25zLmNoYW5uZWxzKTtpZihhMS5sZW5ndGg+MClpLnB1c2goXCItLWFsbG93ZWRUb29sc1wiLGExLmpvaW4oXCIsXCIpKTtpZihoJC5sZW5ndGg+MClpLnB1c2goXCItLWRpc2FsbG93ZWRUb29sc1wiLGgkLmpvaW4oXCIsXCIpKTtpZihzJCE9PXZvaWQgMClpZihBcnJheS5pc0FycmF5KHMkKSlpZihzJC5sZW5ndGg9PT0wKWkucHVzaChcIi0tdG9vbHNcIixcIlwiKTtlbHNlIGkucHVzaChcIi0tdG9vbHNcIixzJC5qb2luKFwiLFwiKSk7ZWxzZSBpLnB1c2goXCItLXRvb2xzXCIsXCJkZWZhdWx0XCIpO2lmKHU2JiZPYmplY3Qua2V5cyh1NikubGVuZ3RoPjApaS5wdXNoKFwiLS1tY3AtY29uZmlnXCIsQiQoe21jcFNlcnZlcnM6dTZ9KSk7aWYodSE9PXZvaWQgMClpLnB1c2goYC0tc2V0dGluZy1zb3VyY2VzPSR7dS5qb2luKFwiLFwiKX1gKTtpZihDNClpLnB1c2goXCItLXN0cmljdC1tY3AtY29uZmlnXCIpO2lmKEQpaS5wdXNoKFwiLS1wZXJtaXNzaW9uLW1vZGVcIixEKTtpZihNKWkucHVzaChcIi0tYWxsb3ctZGFuZ2Vyb3VzbHktc2tpcC1wZXJtaXNzaW9uc1wiKTtpZih3KXtpZihOJiZ3PT09Til0aHJvdyBFcnJvcihcIkZhbGxiYWNrIG1vZGVsIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgbWFpbiBtb2RlbC4gUGxlYXNlIHNwZWNpZnkgYSBkaWZmZXJlbnQgbW9kZWwgZm9yIGZhbGxiYWNrTW9kZWwgb3B0aW9uLlwiKTtpLnB1c2goXCItLWZhbGxiYWNrLW1vZGVsXCIsdyl9aWYodGhpcy5vcHRpb25zLmluY2x1ZGVIb29rRXZlbnRzKWkucHVzaChcIi0taW5jbHVkZS1ob29rLWV2ZW50c1wiKTtpZihuMClpLnB1c2goXCItLWluY2x1ZGUtcGFydGlhbC1tZXNzYWdlc1wiKTtpZih0aGlzLm9wdGlvbnMuc2Vzc2lvbk1pcnJvcilpLnB1c2goXCItLXNlc3Npb24tbWlycm9yXCIpO2ZvcihsZXQgZCQgb2YgJClpLnB1c2goXCItLWFkZC1kaXJcIixkJCk7aWYoVTEmJlUxLmxlbmd0aD4wKWZvcihsZXQgZCQgb2YgVTEpaWYoZCQudHlwZT09PVwibG9jYWxcIilpLnB1c2goXCItLXBsdWdpbi1kaXJcIixkJC5wYXRoKTtlbHNlIHRocm93IEVycm9yKGBVbnN1cHBvcnRlZCBwbHVnaW4gdHlwZTogJHtkJC50eXBlfWApO2lmKHRoaXMub3B0aW9ucy5mb3JrU2Vzc2lvbilpLnB1c2goXCItLWZvcmstc2Vzc2lvblwiKTtpZih0aGlzLm9wdGlvbnMucmVzdW1lU2Vzc2lvbkF0KWkucHVzaChcIi0tcmVzdW1lLXNlc3Npb24tYXRcIix0aGlzLm9wdGlvbnMucmVzdW1lU2Vzc2lvbkF0KTtpZih0aGlzLm9wdGlvbnMuc2Vzc2lvbklkKWkucHVzaChcIi0tc2Vzc2lvbi1pZFwiLHRoaXMub3B0aW9ucy5zZXNzaW9uSWQpO2lmKHRoaXMub3B0aW9ucy5wZXJzaXN0U2Vzc2lvbj09PSExKWkucHVzaChcIi0tbm8tc2Vzc2lvbi1wZXJzaXN0ZW5jZVwiKTtpZih0aGlzLm9wdGlvbnMubWFuYWdlZFNldHRpbmdzKWkucHVzaChcIi0tbWFuYWdlZC1zZXR0aW5nc1wiLHRoaXMub3B0aW9ucy5tYW5hZ2VkU2V0dGluZ3MpO2xldCBrOT17Li4uRz8/e319O2lmKHRoaXMub3B0aW9ucy5zZXR0aW5ncylrOS5zZXR0aW5ncz10aGlzLm9wdGlvbnMuc2V0dGluZ3M7bGV0IE1HPUIyKGs5LHIwKTtmb3IobGV0W2QkLFg0XW9mIE9iamVjdC5lbnRyaWVzKE1HKSlpZihYND09PW51bGwpaS5wdXNoKGAtLSR7ZCR9YCk7ZWxzZSBpLnB1c2goYC0tJHtkJH1gLFg0KTtpZighSC5DTEFVREVfQ09ERV9FTlRSWVBPSU5UKUguQ0xBVURFX0NPREVfRU5UUllQT0lOVD1cInNkay10c1wiO2lmKGRlbGV0ZSBILk5PREVfT1BUSU9OUyxSJChILkRFQlVHX0NMQVVERV9BR0VOVF9TREspKUguREVCVUc9XCIxXCI7ZWxzZSBkZWxldGUgSC5ERUJVRztsZXQgbzA9RngoVSksdjk9bzA/VTpYLEM5PW8wP1suLi5XLC4uLmldOlsuLi5XLFUsLi4uaV0sVlg9e2NvbW1hbmQ6djksYXJnczpDOSxjd2Q6WSxlbnY6SCxzaWduYWw6dGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsfTtpZih0aGlzLm9wdGlvbnMuc3Bhd25DbGF1ZGVDb2RlUHJvY2VzcylaNihgU3Bhd25pbmcgQ2xhdWRlIENvZGUgKGN1c3RvbSk6ICR7djl9ICR7Qzkuam9pbihcIiBcIil9YCksdGhpcy5wcm9jZXNzPXRoaXMub3B0aW9ucy5zcGF3bkNsYXVkZUNvZGVQcm9jZXNzKFZYKTtlbHNlIFo2KGBTcGF3bmluZyBDbGF1ZGUgQ29kZTogJHt2OX0gJHtDOS5qb2luKFwiIFwiKX1gKSx0aGlzLnByb2Nlc3M9dGhpcy5zcGF3bkxvY2FsUHJvY2VzcyhWWCk7dGhpcy5wcm9jZXNzU3RkaW49dGhpcy5wcm9jZXNzLnN0ZGluLHRoaXMucHJvY2Vzc1N0ZG91dD10aGlzLnByb2Nlc3Muc3Rkb3V0LER4KHRoaXMucHJvY2VzcyksdGhpcy5hYm9ydEhhbmRsZXI9KCk9PntpZih0aGlzLnByb2Nlc3MmJiF0aGlzLnByb2Nlc3Mua2lsbGVkKXRoaXMucHJvY2Vzcy5raWxsKFwiU0lHVEVSTVwiKX0sdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLHRoaXMuYWJvcnRIYW5kbGVyKSx0aGlzLnByb2Nlc3Mub24oXCJlcnJvclwiLChkJCk9PntpZih0aGlzLnJlYWR5PSExLHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXRoaXMuZXhpdEVycm9yPW5ldyBxNihcIkNsYXVkZSBDb2RlIHByb2Nlc3MgYWJvcnRlZCBieSB1c2VyXCIpO2Vsc2UgaWYoZ3coZCQpKXtsZXQgWDQ9WngoVSxvMCk7dGhpcy5leGl0RXJyb3I9UmVmZXJlbmNlRXJyb3IoWDQpLFo2KHRoaXMuZXhpdEVycm9yLm1lc3NhZ2UpfWVsc2UgdGhpcy5leGl0RXJyb3I9RXJyb3IoYEZhaWxlZCB0byBzcGF3biBDbGF1ZGUgQ29kZSBwcm9jZXNzOiAke2QkLm1lc3NhZ2V9YCksWjYodGhpcy5leGl0RXJyb3IubWVzc2FnZSl9KSx0aGlzLnByb2Nlc3Mub24oXCJleGl0XCIsKGQkLFg0KT0+e2lmKHRoaXMucmVhZHk9ITEsdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpdGhpcy5leGl0RXJyb3I9bmV3IHE2KFwiQ2xhdWRlIENvZGUgcHJvY2VzcyBhYm9ydGVkIGJ5IHVzZXJcIik7ZWxzZXtsZXQgZSQ9dGhpcy5nZXRQcm9jZXNzRXhpdEVycm9yKGQkLFg0KTtpZihlJCl0aGlzLmV4aXRFcnJvcj1lJCxaNihlJC5tZXNzYWdlKX19KSx0aGlzLnJlYWR5PSEwfWNhdGNoKCQpe3Rocm93IHRoaXMucmVhZHk9ITEsJH19Z2V0UHJvY2Vzc0V4aXRFcnJvcigkLFEpe2lmKCQhPT0wJiYkIT09bnVsbClyZXR1cm4gRXJyb3IoYENsYXVkZSBDb2RlIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAkeyR9YCk7ZWxzZSBpZihRKXJldHVybiBFcnJvcihgQ2xhdWRlIENvZGUgcHJvY2VzcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAke1F9YCk7cmV0dXJufXdyaXRlKCQpe2lmKHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBxNihcIk9wZXJhdGlvbiBhYm9ydGVkXCIpO2lmKHRoaXMuc3Bhd25SZXNvbHZlKXt0aGlzLnBlbmRpbmdXcml0ZXMucHVzaCgkKTtyZXR1cm59aWYoIXRoaXMucmVhZHl8fCF0aGlzLnByb2Nlc3NTdGRpbil0aHJvdyBFcnJvcihcIlByb2Nlc3NUcmFuc3BvcnQgaXMgbm90IHJlYWR5IGZvciB3cml0aW5nXCIpO2lmKHRoaXMucHJvY2Vzc1N0ZGluLndyaXRhYmxlRW5kZWQpe1o2KFwiW1Byb2Nlc3NUcmFuc3BvcnRdIERyb3BwaW5nIHdyaXRlIHRvIGVuZGVkIHN0ZGluIHN0cmVhbVwiKTtyZXR1cm59aWYodGhpcy5wcm9jZXNzPy5raWxsZWR8fHRoaXMucHJvY2Vzcz8uZXhpdENvZGUhPT1udWxsKXRocm93IEVycm9yKFwiQ2Fubm90IHdyaXRlIHRvIHRlcm1pbmF0ZWQgcHJvY2Vzc1wiKTtpZih0aGlzLmV4aXRFcnJvcil0aHJvdyBFcnJvcihgQ2Fubm90IHdyaXRlIHRvIHByb2Nlc3MgdGhhdCBleGl0ZWQgd2l0aCBlcnJvcjogJHt0aGlzLmV4aXRFcnJvci5tZXNzYWdlfWApO1o2KGBbUHJvY2Vzc1RyYW5zcG9ydF0gV3JpdGluZyB0byBzdGRpbjogJHskLnN1YnN0cmluZygwLDEwMCl9YCk7dHJ5e2lmKCF0aGlzLnByb2Nlc3NTdGRpbi53cml0ZSgkKSlaNihcIltQcm9jZXNzVHJhbnNwb3J0XSBXcml0ZSBidWZmZXIgZnVsbCwgZGF0YSBxdWV1ZWRcIil9Y2F0Y2goUSl7dGhyb3cgdGhpcy5yZWFkeT0hMSxFcnJvcihgRmFpbGVkIHRvIHdyaXRlIHRvIHByb2Nlc3Mgc3RkaW46ICR7WjgoUSl9YCl9fVtTeW1ib2wuZGlzcG9zZV0oKXt0aGlzLmNsb3NlKCl9Y2xvc2UoKXtpZih0aGlzLnNwYXduQWJvcnQoRXJyb3IoXCJRdWVyeSBjbG9zZWQgYmVmb3JlIHNwYXduXCIpKSx0aGlzLnByb2Nlc3NTdGRpbil0aGlzLnByb2Nlc3NTdGRpbi5lbmQoKSx0aGlzLnByb2Nlc3NTdGRpbj12b2lkIDA7aWYodGhpcy5hYm9ydEhhbmRsZXIpdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLHRoaXMuYWJvcnRIYW5kbGVyKSx0aGlzLmFib3J0SGFuZGxlcj12b2lkIDA7Zm9yKGxldHtoYW5kbGVyOlF9b2YgdGhpcy5leGl0TGlzdGVuZXJzKXRoaXMucHJvY2Vzcz8ub2ZmKFwiZXhpdFwiLFEpO3RoaXMuZXhpdExpc3RlbmVycz1bXTtsZXQgJD10aGlzLnByb2Nlc3M7aWYoJCYmISQua2lsbGVkJiYkLmV4aXRDb2RlPT09bnVsbClzZXRUaW1lb3V0KChRKT0+e2lmKFEua2lsbGVkfHxRLmV4aXRDb2RlIT09bnVsbClyZXR1cm47US5raWxsKFwiU0lHVEVSTVwiKSxzZXRUaW1lb3V0KChKKT0+e2lmKEouZXhpdENvZGU9PT1udWxsKUoua2lsbChcIlNJR0tJTExcIil9LDUwMDAsUSkudW5yZWYoKX0sd3gsJCkudW5yZWYoKSwkLm9uY2UoXCJleGl0XCIsKCk9PkQ1LmRlbGV0ZSgkKSk7ZWxzZSBpZigkKUQ1LmRlbGV0ZSgkKTt0aGlzLnJlYWR5PSExfWlzUmVhZHkoKXtyZXR1cm4gdGhpcy5yZWFkeX1hc3luYypyZWFkTWVzc2FnZXMoKXtpZih0aGlzLnNwYXduUHJvbWlzZSlhd2FpdCB0aGlzLnNwYXduUHJvbWlzZSx0aGlzLnNwYXduUHJvbWlzZT12b2lkIDA7aWYoIXRoaXMucHJvY2Vzc1N0ZG91dCl0aHJvdyBFcnJvcihcIlByb2Nlc3NUcmFuc3BvcnQgb3V0cHV0IHN0cmVhbSBub3QgYXZhaWxhYmxlXCIpO2lmKHRoaXMuZXhpdEVycm9yKXRocm93IHRoaXMuZXhpdEVycm9yO2xldCAkPU54KHtpbnB1dDp0aGlzLnByb2Nlc3NTdGRvdXR9KSxRPXRoaXMucHJvY2Vzcz8oKCk9PntsZXQgSj10aGlzLnByb2Nlc3MsWT0oKT0+JC5jbG9zZSgpO3JldHVybiBKLm9uKFwiZXJyb3JcIixZKSwoKT0+Si5vZmYoXCJlcnJvclwiLFkpfSkoKTp2b2lkIDA7aWYodGhpcy5leGl0RXJyb3IpJC5jbG9zZSgpO3RyeXtmb3IgYXdhaXQobGV0IEogb2YgJClpZihKLnRyaW0oKSl7bGV0IFk7dHJ5e1k9bCQoSil9Y2F0Y2goWCl7WjYoYE5vbi1KU09OIHN0ZG91dDogJHtKfWApO2NvbnRpbnVlfXlpZWxkIFl9aWYodGhpcy5leGl0RXJyb3IpdGhyb3cgdGhpcy5leGl0RXJyb3I7YXdhaXQgdGhpcy53YWl0Rm9yRXhpdCgpfWNhdGNoKEope3Rocm93IEp9ZmluYWxseXtRPy4oKSwkLmNsb3NlKCl9fWVuZElucHV0KCl7aWYodGhpcy5zcGF3blJlc29sdmUpe3RoaXMucGVuZGluZ0VuZElucHV0PSEwO3JldHVybn1pZih0aGlzLnByb2Nlc3NTdGRpbil0aGlzLnByb2Nlc3NTdGRpbi5lbmQoKX1nZXRJbnB1dFN0cmVhbSgpe3JldHVybiB0aGlzLnByb2Nlc3NTdGRpbn1vbkV4aXQoJCl7aWYoIXRoaXMucHJvY2VzcylyZXR1cm4oKT0+e307bGV0IFE9KEosWSk9PntsZXQgWD10aGlzLmdldFByb2Nlc3NFeGl0RXJyb3IoSixZKTskKFgpfTtyZXR1cm4gdGhpcy5wcm9jZXNzLm9uKFwiZXhpdFwiLFEpLHRoaXMuZXhpdExpc3RlbmVycy5wdXNoKHtjYWxsYmFjazokLGhhbmRsZXI6UX0pLCgpPT57aWYodGhpcy5wcm9jZXNzKXRoaXMucHJvY2Vzcy5vZmYoXCJleGl0XCIsUSk7bGV0IEo9dGhpcy5leGl0TGlzdGVuZXJzLmZpbmRJbmRleCgoWSk9PlkuaGFuZGxlcj09PVEpO2lmKEohPT0tMSl0aGlzLmV4aXRMaXN0ZW5lcnMuc3BsaWNlKEosMSl9fWFzeW5jIHdhaXRGb3JFeGl0KCl7aWYoIXRoaXMucHJvY2Vzcyl7aWYodGhpcy5leGl0RXJyb3IpdGhyb3cgdGhpcy5leGl0RXJyb3I7cmV0dXJufWlmKHRoaXMucHJvY2Vzcy5leGl0Q29kZSE9PW51bGx8fHRoaXMucHJvY2Vzcy5raWxsZWR8fHRoaXMuZXhpdEVycm9yKXtpZih0aGlzLmV4aXRFcnJvcil0aHJvdyB0aGlzLmV4aXRFcnJvcjtyZXR1cm59cmV0dXJuIG5ldyBQcm9taXNlKCgkLFEpPT57bGV0IEo9KFgsVyk9PntpZih0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl7UShuZXcgcTYoXCJPcGVyYXRpb24gYWJvcnRlZFwiKSk7cmV0dXJufWxldCBHPXRoaXMuZ2V0UHJvY2Vzc0V4aXRFcnJvcihYLFcpO2lmKEcpUShHKTtlbHNlICQoKX07dGhpcy5wcm9jZXNzLm9uY2UoXCJleGl0XCIsSik7bGV0IFk9KFgpPT57dGhpcy5wcm9jZXNzLm9mZihcImV4aXRcIixKKSxRKFgpfTt0aGlzLnByb2Nlc3Mub25jZShcImVycm9yXCIsWSksdGhpcy5wcm9jZXNzLm9uY2UoXCJleGl0XCIsKCk9Pnt0aGlzLnByb2Nlc3Mub2ZmKFwiZXJyb3JcIixZKX0pfSl9fWZ1bmN0aW9uIEZ4KCQpe3JldHVybiFbXCIuanNcIixcIi5tanNcIixcIi50c3hcIixcIi50c1wiLFwiLmpzeFwiXS5zb21lKChKKT0+JC5lbmRzV2l0aChKKSl9ZnVuY3Rpb24gWngoJCxRKXtpZih6eCgkKSlyZXR1cm4gUT9gQ2xhdWRlIENvZGUgbmF0aXZlIGJpbmFyeSBhdCAkeyR9IGV4aXN0cyBidXQgZmFpbGVkIHRvIGxhdW5jaC5gOmBDbGF1ZGUgQ29kZSBleGVjdXRhYmxlIGF0ICR7JH0gZXhpc3RzIGJ1dCBmYWlsZWQgdG8gbGF1bmNoLmA7cmV0dXJuIFE/YENsYXVkZSBDb2RlIG5hdGl2ZSBiaW5hcnkgbm90IGZvdW5kIGF0ICR7JH0uIFBsZWFzZSBlbnN1cmUgQ2xhdWRlIENvZGUgaXMgaW5zdGFsbGVkIHZpYSBuYXRpdmUgaW5zdGFsbGVyIG9yIHNwZWNpZnkgYSB2YWxpZCBwYXRoIHdpdGggb3B0aW9ucy5wYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZS5gOmBDbGF1ZGUgQ29kZSBleGVjdXRhYmxlIG5vdCBmb3VuZCBhdCAkeyR9LiBJcyBvcHRpb25zLnBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlIHNldD9gfWltcG9ydHtleGlzdHNTeW5jIGFzIE14fWZyb21cImZzXCI7dmFyIHU3PVwiQGFudGhyb3BpYy1haS9jbGF1ZGUtYWdlbnQtc2RrXCI7ZnVuY3Rpb24gTHgoKXtpZihwcm9jZXNzLnBsYXRmb3JtIT09XCJsaW51eFwiKXJldHVybiExO2xldCAkPXR5cGVvZiBwcm9jZXNzLnJlcG9ydD8uZ2V0UmVwb3J0PT09XCJmdW5jdGlvblwiP3Byb2Nlc3MucmVwb3J0LmdldFJlcG9ydCgpOm51bGw7cmV0dXJuICQhPW51bGwmJiQuaGVhZGVyPy5nbGliY1ZlcnNpb25SdW50aW1lPT09dm9pZCAwfWZ1bmN0aW9uIEY1KCQsUT1wcm9jZXNzLnBsYXRmb3JtLEo9cHJvY2Vzcy5hcmNoLFk9TXgsWD1MeCgpKXtsZXQgRz1RPT09XCJ3aW4zMlwiP1wiLmV4ZVwiOlwiXCIsSD0oUT09PVwibGludXhcIj9YP1tgJHt1N30tbGludXgtJHtKfS1tdXNsYCxgJHt1N30tbGludXgtJHtKfWBdOltgJHt1N30tbGludXgtJHtKfWAsYCR7dTd9LWxpbnV4LSR7Sn0tbXVzbGBdOltgJHt1N30tJHtRfS0ke0p9YF0pLm1hcCgocSk9PmAke3F9L2NsYXVkZSR7R31gKTtmb3IobGV0IHEgb2YgSCl0cnl7bGV0IFY9JChxKTtpZihZKFYpKXJldHVybiBWfWNhdGNoe31yZXR1cm4gbnVsbH1jbGFzcyB6MHtyZXR1cm5lZDtxdWV1ZT1bXTtyZWFkUmVzb2x2ZTtyZWFkUmVqZWN0O2lzRG9uZT0hMTtoYXNFcnJvcjtzdGFydGVkPSExO2NvbnN0cnVjdG9yKCQpe3RoaXMucmV0dXJuZWQ9JH1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7aWYodGhpcy5zdGFydGVkKXRocm93IEVycm9yKFwiU3RyZWFtIGNhbiBvbmx5IGJlIGl0ZXJhdGVkIG9uY2VcIik7cmV0dXJuIHRoaXMuc3RhcnRlZD0hMCx0aGlzfW5leHQoKXtpZih0aGlzLnF1ZXVlLmxlbmd0aD4wKXJldHVybiBQcm9taXNlLnJlc29sdmUoe2RvbmU6ITEsdmFsdWU6dGhpcy5xdWV1ZS5zaGlmdCgpfSk7aWYodGhpcy5pc0RvbmUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9KTtpZih0aGlzLmhhc0Vycm9yKXJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLmhhc0Vycm9yKTtyZXR1cm4gbmV3IFByb21pc2UoKCQsUSk9Pnt0aGlzLnJlYWRSZXNvbHZlPSQsdGhpcy5yZWFkUmVqZWN0PVF9KX1lbnF1ZXVlKCQpe2lmKHRoaXMucmVhZFJlc29sdmUpe2xldCBRPXRoaXMucmVhZFJlc29sdmU7dGhpcy5yZWFkUmVzb2x2ZT12b2lkIDAsdGhpcy5yZWFkUmVqZWN0PXZvaWQgMCxRKHtkb25lOiExLHZhbHVlOiR9KX1lbHNlIHRoaXMucXVldWUucHVzaCgkKX1kb25lKCl7aWYodGhpcy5pc0RvbmU9ITAsdGhpcy5yZWFkUmVzb2x2ZSl7bGV0ICQ9dGhpcy5yZWFkUmVzb2x2ZTt0aGlzLnJlYWRSZXNvbHZlPXZvaWQgMCx0aGlzLnJlYWRSZWplY3Q9dm9pZCAwLCQoe2RvbmU6ITAsdmFsdWU6dm9pZCAwfSl9fWVycm9yKCQpe2lmKHRoaXMuaGFzRXJyb3I9JCx0aGlzLnJlYWRSZWplY3Qpe2xldCBRPXRoaXMucmVhZFJlamVjdDt0aGlzLnJlYWRSZXNvbHZlPXZvaWQgMCx0aGlzLnJlYWRSZWplY3Q9dm9pZCAwLFEoJCl9fXJldHVybigpe2lmKHRoaXMuaXNEb25lPSEwLHRoaXMucmV0dXJuZWQpdGhpcy5yZXR1cm5lZCgpO3JldHVybiBQcm9taXNlLnJlc29sdmUoe2RvbmU6ITAsdmFsdWU6dm9pZCAwfSl9fWZ1bmN0aW9uIGp4KCl7cmV0dXJue2V2ZW50UXVldWU6W10sc2luazpudWxsfX12YXIgQXg9angoKTtmdW5jdGlvbiBaNSgkLFEpe2xldCBKPUF4O2lmKEouc2luaz09PW51bGwpe0ouZXZlbnRRdWV1ZS5wdXNoKHtldmVudE5hbWU6JCxtZXRhZGF0YTpRLGFzeW5jOiExfSk7cmV0dXJufUouc2luay5sb2dFdmVudCgkLFEpfWZ1bmN0aW9uIG03KCQpe1o1KFwidGVuZ3VfZmVhdHVyZV9va1wiLHtmZWF0dXJlX25hbWU6JH0pfWZ1bmN0aW9uIGw3KCQsUSxKKXtaNShcInRlbmd1X2ZlYXR1cmVfYmFkXCIse2ZlYXR1cmVfbmFtZTokLGVycm9yX2NvZGU6USwuLi5KfSl9ZnVuY3Rpb24gTjIoJCxRKXtaNShcInRlbmd1X2ZlYXR1cmVfc2FkXCIse2ZlYXR1cmVfbmFtZTokLGVycm9yX2NvZGU6UX0pfWFzeW5jIGZ1bmN0aW9uIFA0KCQsUSxKKXt0cnl7bGV0IFk9YXdhaXQgUSgpO3JldHVybiBtNygkKSxZfWNhdGNoKFkpe3Rocm93IGw3KCQsSj8uKFkpPz9cImVycm9yXCIpLFl9fWNsYXNzIHZVe3NlbmRNY3BNZXNzYWdlO2lzQ2xvc2VkPSExO2NvbnN0cnVjdG9yKCQpe3RoaXMuc2VuZE1jcE1lc3NhZ2U9JH1vbmNsb3NlO29uZXJyb3I7b25tZXNzYWdlO2FzeW5jIHN0YXJ0KCl7fWFzeW5jIHNlbmQoJCl7aWYodGhpcy5pc0Nsb3NlZCl0aHJvdyBFcnJvcihcIlRyYW5zcG9ydCBpcyBjbG9zZWRcIik7dGhpcy5zZW5kTWNwTWVzc2FnZSgkKX1hc3luYyBjbG9zZSgpe2lmKHRoaXMuaXNDbG9zZWQpcmV0dXJuO3RoaXMuaXNDbG9zZWQ9ITAsdGhpcy5vbmNsb3NlPy4oKX19Y2xhc3MgYzd7dHJhbnNwb3J0O2lzU2luZ2xlVXNlclR1cm47Y2FuVXNlVG9vbDtob29rczthYm9ydENvbnRyb2xsZXI7anNvblNjaGVtYTtpbml0Q29uZmlnO29uRWxpY2l0YXRpb247Z2V0T0F1dGhUb2tlbjtwZW5kaW5nQ29udHJvbFJlc3BvbnNlcz1uZXcgTWFwO2NsZWFudXBQZXJmb3JtZWQ9ITE7c2RrTWVzc2FnZXM7aW5wdXRTdHJlYW09bmV3IHowO2luaXRpYWxpemF0aW9uO2NhbmNlbENvbnRyb2xsZXJzPW5ldyBNYXA7aG9va0NhbGxiYWNrcz1uZXcgTWFwO25leHRDYWxsYmFja0lkPTA7c2RrTWNwVHJhbnNwb3J0cz1uZXcgTWFwO3Nka01jcFNlcnZlckluc3RhbmNlcz1uZXcgTWFwO3BlbmRpbmdNY3BSZXNwb25zZXM9bmV3IE1hcDtmaXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZTtmaXJzdFJlc3VsdFJlY2VpdmVkPSExO2xhc3RFcnJvclJlc3VsdFRleHQ7dHJhbnNjcmlwdE1pcnJvckJhdGNoZXI7Y2xlYW51cENhbGxiYWNrcz1bXTtjbGVhbnVwUHJvbWlzZTtzZXRJc1NpbmdsZVVzZXJUdXJuKCQpe3RoaXMuaXNTaW5nbGVVc2VyVHVybj0kfXNldFRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyKCQpe3RoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXI9JH1yZXBvcnRNaXJyb3JFcnJvcigkLFEpe2xldCBKPXt0eXBlOlwic3lzdGVtXCIsc3VidHlwZTpcIm1pcnJvcl9lcnJvclwiLGVycm9yOlEsa2V5OiQsdXVpZDp4NygpLHNlc3Npb25faWQ6JC5zZXNzaW9uSWR9O3RoaXMuaW5wdXRTdHJlYW0uZW5xdWV1ZShKKX1hZGRDbGVhbnVwQ2FsbGJhY2soJCl7aWYodGhpcy5jbGVhbnVwUGVyZm9ybWVkKSQoKTtlbHNlIHRoaXMuY2xlYW51cENhbGxiYWNrcy5wdXNoKCQpfWlzQ2xvc2VkKCl7cmV0dXJuIHRoaXMuY2xlYW51cFBlcmZvcm1lZH1oYXNCaWRpcmVjdGlvbmFsTmVlZHMoKXtyZXR1cm4gdGhpcy5zZGtNY3BUcmFuc3BvcnRzLnNpemU+MHx8dGhpcy5ob29rcyE9PXZvaWQgMCYmT2JqZWN0LmtleXModGhpcy5ob29rcykubGVuZ3RoPjB8fHRoaXMuY2FuVXNlVG9vbCE9PXZvaWQgMHx8dGhpcy5vbkVsaWNpdGF0aW9uIT09dm9pZCAwfHx0aGlzLmdldE9BdXRoVG9rZW4hPT12b2lkIDB9Y29uc3RydWN0b3IoJCxRLEosWSxYLFc9bmV3IE1hcCxHLFUsSCxxKXt0aGlzLnRyYW5zcG9ydD0kO3RoaXMuaXNTaW5nbGVVc2VyVHVybj1RO3RoaXMuY2FuVXNlVG9vbD1KO3RoaXMuaG9va3M9WTt0aGlzLmFib3J0Q29udHJvbGxlcj1YO3RoaXMuanNvblNjaGVtYT1HO3RoaXMuaW5pdENvbmZpZz1VO3RoaXMub25FbGljaXRhdGlvbj1IO3RoaXMuZ2V0T0F1dGhUb2tlbj1xO2ZvcihsZXRbVixCXW9mIFcpdGhpcy5jb25uZWN0U2RrTWNwU2VydmVyKFYsQik7dGhpcy5zZGtNZXNzYWdlcz10aGlzLnJlYWRTZGtNZXNzYWdlcygpLHRoaXMucmVhZE1lc3NhZ2VzKCksdGhpcy5pbml0aWFsaXphdGlvbj10aGlzLmluaXRpYWxpemUoKSx0aGlzLmluaXRpYWxpemF0aW9uLmNhdGNoKCgpPT57fSl9c2V0RXJyb3IoJCl7dGhpcy5pbnB1dFN0cmVhbS5lcnJvcigkKX1hc3luYyBzdG9wVGFzaygkKXthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJzdG9wX3Rhc2tcIix0YXNrX2lkOiR9KX1hc3luYyBiYWNrZ3JvdW5kVGFza3MoJCl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcImJhY2tncm91bmRfdGFza3NcIix0b29sX3VzZV9pZDokfSkpLnJlc3BvbnNlLmJhY2tncm91bmRlZD8/ITB9Y2xvc2UoKXt0aGlzLmNsZWFudXAoKX1jbGVhbnVwKCQpe2lmKHRoaXMuY2xlYW51cFByb21pc2UpcmV0dXJuIHRoaXMuY2xlYW51cFByb21pc2U7cmV0dXJuIHRoaXMuY2xlYW51cFBlcmZvcm1lZD0hMCx0aGlzLmNsZWFudXBQcm9taXNlPXRoaXMucGVyZm9ybUNsZWFudXAoJCksdGhpcy5jbGVhbnVwUHJvbWlzZX1hc3luYyBwZXJmb3JtQ2xlYW51cCgkKXtmb3IobGV0IFEgb2YgdGhpcy5jbGVhbnVwQ2FsbGJhY2tzKXRyeXtRKCl9Y2F0Y2h7fWlmKHRoaXMuY2xlYW51cENhbGxiYWNrcz1bXSx0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyKXRyeXthd2FpdCB0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyLmZsdXNoKCl9Y2F0Y2h7fXRyeXtmb3IobGV0IEogb2YgdGhpcy5jYW5jZWxDb250cm9sbGVycy52YWx1ZXMoKSlKLmFib3J0KCk7dGhpcy5jYW5jZWxDb250cm9sbGVycy5jbGVhcigpLHRoaXMudHJhbnNwb3J0LmNsb3NlKCk7bGV0IFE9JD8/RXJyb3IoXCJRdWVyeSBjbG9zZWQgYmVmb3JlIHJlc3BvbnNlIHJlY2VpdmVkXCIpO2ZvcihsZXR7cmVqZWN0Okp9b2YgdGhpcy5wZW5kaW5nQ29udHJvbFJlc3BvbnNlcy52YWx1ZXMoKSlKKFEpO3RoaXMucGVuZGluZ0NvbnRyb2xSZXNwb25zZXMuY2xlYXIoKTtmb3IobGV0e3JlamVjdDpKfW9mIHRoaXMucGVuZGluZ01jcFJlc3BvbnNlcy52YWx1ZXMoKSlKKFEpO3RoaXMucGVuZGluZ01jcFJlc3BvbnNlcy5jbGVhcigpLHRoaXMuaG9va0NhbGxiYWNrcy5jbGVhcigpO2ZvcihsZXQgSiBvZiB0aGlzLnNka01jcFRyYW5zcG9ydHMudmFsdWVzKCkpSi5jbG9zZSgpLmNhdGNoKCgpPT57fSk7aWYodGhpcy5zZGtNY3BUcmFuc3BvcnRzLmNsZWFyKCksJCl0aGlzLmlucHV0U3RyZWFtLmVycm9yKCQpO2Vsc2UgdGhpcy5pbnB1dFN0cmVhbS5kb25lKCl9Y2F0Y2goUSl7fX1uZXh0KC4uLlskXSl7cmV0dXJuIHRoaXMuc2RrTWVzc2FnZXMubmV4dCguLi5bJF0pfWFzeW5jIHJldHVybigkKXtyZXR1cm4gYXdhaXQgdGhpcy5jbGVhbnVwKCksdGhpcy5zZGtNZXNzYWdlcy5yZXR1cm4oJCl9YXN5bmMgdGhyb3coJCl7cmV0dXJuIGF3YWl0IHRoaXMuY2xlYW51cCgpLHRoaXMuc2RrTWVzc2FnZXMudGhyb3coJCl9W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3JldHVybiB0aGlzLnNka01lc3NhZ2VzfWFzeW5jW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCl7YXdhaXQgdGhpcy5jbGVhbnVwKCl9YXN5bmMgcmVhZE1lc3NhZ2VzKCl7dHJ5e2ZvciBhd2FpdChsZXQgJCBvZiB0aGlzLnRyYW5zcG9ydC5yZWFkTWVzc2FnZXMoKSl7aWYoJC50eXBlPT09XCJjb250cm9sX3Jlc3BvbnNlXCIpe2xldCBRPXRoaXMucGVuZGluZ0NvbnRyb2xSZXNwb25zZXMuZ2V0KCQucmVzcG9uc2UucmVxdWVzdF9pZCk7aWYoUSlRLmhhbmRsZXIoJC5yZXNwb25zZSk7Y29udGludWV9ZWxzZSBpZigkLnR5cGU9PT1cImNvbnRyb2xfcmVxdWVzdFwiKXt0aGlzLmhhbmRsZUNvbnRyb2xSZXF1ZXN0KCQpO2NvbnRpbnVlfWVsc2UgaWYoJC50eXBlPT09XCJjb250cm9sX2NhbmNlbF9yZXF1ZXN0XCIpe3RoaXMuaGFuZGxlQ29udHJvbENhbmNlbFJlcXVlc3QoJCk7Y29udGludWV9ZWxzZSBpZigkLnR5cGU9PT1cImtlZXBfYWxpdmVcIiljb250aW51ZTtlbHNlIGlmKCQudHlwZT09PVwidHJhbnNjcmlwdF9taXJyb3JcIil7dGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlcj8uZW5xdWV1ZSgkLmZpbGVQYXRoLCQuZW50cmllcyk7Y29udGludWV9aWYoJC50eXBlPT09XCJzeXN0ZW1cIiYmKCQuc3VidHlwZT09PVwicG9zdF90dXJuX3N1bW1hcnlcInx8JC5zdWJ0eXBlPT09XCJ0YXNrX3N1bW1hcnlcIikpe3RoaXMuaW5wdXRTdHJlYW0uZW5xdWV1ZSgkKTtjb250aW51ZX1pZigkLnR5cGU9PT1cInJlc3VsdFwiKXtpZih0aGlzLnRyYW5zY3JpcHRNaXJyb3JCYXRjaGVyKWF3YWl0IHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIuZmx1c2goKTtpZih0aGlzLmxhc3RFcnJvclJlc3VsdFRleHQ9JC5pc19lcnJvcj8kLnN1YnR5cGU9PT1cInN1Y2Nlc3NcIj8kLnJlc3VsdDokLmVycm9ycy5qb2luKFwiOyBcIik6dm9pZCAwLHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZD0hMCx0aGlzLmZpcnN0UmVzdWx0UmVjZWl2ZWRSZXNvbHZlKXRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZFJlc29sdmUoKTtpZih0aGlzLmlzU2luZ2xlVXNlclR1cm4pWCQoXCJbUXVlcnkucmVhZE1lc3NhZ2VzXSBGaXJzdCByZXN1bHQgcmVjZWl2ZWQgZm9yIHNpbmdsZS10dXJuIHF1ZXJ5LCBjbG9zaW5nIHN0ZGluXCIpLHRoaXMudHJhbnNwb3J0LmVuZElucHV0KCl9ZWxzZSBpZighKCQudHlwZT09PVwic3lzdGVtXCImJiQuc3VidHlwZT09PVwic2Vzc2lvbl9zdGF0ZV9jaGFuZ2VkXCIpKXRoaXMubGFzdEVycm9yUmVzdWx0VGV4dD12b2lkIDA7dGhpcy5pbnB1dFN0cmVhbS5lbnF1ZXVlKCQpfWlmKHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIpYXdhaXQgdGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlci5mbHVzaCgpO2lmKHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZFJlc29sdmUpdGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZSgpO3RoaXMuaW5wdXRTdHJlYW0uZG9uZSgpLHRoaXMuY2xlYW51cCgpfWNhdGNoKCQpe2lmKHRoaXMudHJhbnNjcmlwdE1pcnJvckJhdGNoZXIpYXdhaXQgdGhpcy50cmFuc2NyaXB0TWlycm9yQmF0Y2hlci5mbHVzaCgpO2lmKHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZFJlc29sdmUpdGhpcy5maXJzdFJlc3VsdFJlY2VpdmVkUmVzb2x2ZSgpO2lmKHRoaXMubGFzdEVycm9yUmVzdWx0VGV4dCE9PXZvaWQgMCYmISgkIGluc3RhbmNlb2YgcTYpKXtsZXQgUT1FcnJvcihgQ2xhdWRlIENvZGUgcmV0dXJuZWQgYW4gZXJyb3IgcmVzdWx0OiAke3RoaXMubGFzdEVycm9yUmVzdWx0VGV4dH1gKTtYJChgW1F1ZXJ5LnJlYWRNZXNzYWdlc10gUmVwbGFjaW5nIGV4aXQgZXJyb3Igd2l0aCByZXN1bHQgdGV4dC4gT3JpZ2luYWw6ICR7WjgoJCl9YCksdGhpcy5pbnB1dFN0cmVhbS5lcnJvcihRKSx0aGlzLmNsZWFudXAoUSk7cmV0dXJufXRoaXMuaW5wdXRTdHJlYW0uZXJyb3IoJCksdGhpcy5jbGVhbnVwKCQpfX1hc3luYyBoYW5kbGVDb250cm9sUmVxdWVzdCgkKXtsZXQgUT1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuY2FuY2VsQ29udHJvbGxlcnMuc2V0KCQucmVxdWVzdF9pZCxRKTt0cnl7bGV0IEo9YXdhaXQgdGhpcy5wcm9jZXNzQ29udHJvbFJlcXVlc3QoJCxRLnNpZ25hbCk7aWYodGhpcy5jbGVhbnVwUGVyZm9ybWVkKXJldHVybjtsZXQgWT17dHlwZTpcImNvbnRyb2xfcmVzcG9uc2VcIixyZXNwb25zZTp7c3VidHlwZTpcInN1Y2Nlc3NcIixyZXF1ZXN0X2lkOiQucmVxdWVzdF9pZCxyZXNwb25zZTpKfX07YXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNwb3J0LndyaXRlKEIkKFkpK2BcbmApKX1jYXRjaChKKXtpZih0aGlzLmNsZWFudXBQZXJmb3JtZWQpcmV0dXJuO2xldCBZPXt0eXBlOlwiY29udHJvbF9yZXNwb25zZVwiLHJlc3BvbnNlOntzdWJ0eXBlOlwiZXJyb3JcIixyZXF1ZXN0X2lkOiQucmVxdWVzdF9pZCxlcnJvcjpaOChKKX19O3RyeXthd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc3BvcnQud3JpdGUoQiQoWSkrYFxuYCkpfWNhdGNoKFgpe1gkKGBbUXVlcnkuaGFuZGxlQ29udHJvbFJlcXVlc3RdIEVycm9yLXJlc3BvbnNlIHdyaXRlIGZhaWxlZDogJHtaOChYKX1gLHtsZXZlbDpcImVycm9yXCJ9KX19ZmluYWxseXt0aGlzLmNhbmNlbENvbnRyb2xsZXJzLmRlbGV0ZSgkLnJlcXVlc3RfaWQpfX1oYW5kbGVDb250cm9sQ2FuY2VsUmVxdWVzdCgkKXtsZXQgUT10aGlzLmNhbmNlbENvbnRyb2xsZXJzLmdldCgkLnJlcXVlc3RfaWQpO2lmKFEpUS5hYm9ydCgpLHRoaXMuY2FuY2VsQ29udHJvbGxlcnMuZGVsZXRlKCQucmVxdWVzdF9pZCl9YXN5bmMgcHJvY2Vzc0NvbnRyb2xSZXF1ZXN0KCQsUSl7aWYoJC5yZXF1ZXN0LnN1YnR5cGU9PT1cImNhbl91c2VfdG9vbFwiKXtpZighdGhpcy5jYW5Vc2VUb29sKXRocm93IEVycm9yKFwiY2FuVXNlVG9vbCBjYWxsYmFjayBpcyBub3QgcHJvdmlkZWQuXCIpO3JldHVybnsuLi5hd2FpdCB0aGlzLmNhblVzZVRvb2woJC5yZXF1ZXN0LnRvb2xfbmFtZSwkLnJlcXVlc3QuaW5wdXQse3NpZ25hbDpRLHN1Z2dlc3Rpb25zOiQucmVxdWVzdC5wZXJtaXNzaW9uX3N1Z2dlc3Rpb25zLGJsb2NrZWRQYXRoOiQucmVxdWVzdC5ibG9ja2VkX3BhdGgsZGVjaXNpb25SZWFzb246JC5yZXF1ZXN0LmRlY2lzaW9uX3JlYXNvbix0aXRsZTokLnJlcXVlc3QudGl0bGUsZGlzcGxheU5hbWU6JC5yZXF1ZXN0LmRpc3BsYXlfbmFtZSxkZXNjcmlwdGlvbjokLnJlcXVlc3QuZGVzY3JpcHRpb24sdG9vbFVzZUlEOiQucmVxdWVzdC50b29sX3VzZV9pZCxhZ2VudElEOiQucmVxdWVzdC5hZ2VudF9pZH0pLHRvb2xVc2VJRDokLnJlcXVlc3QudG9vbF91c2VfaWR9fWVsc2UgaWYoJC5yZXF1ZXN0LnN1YnR5cGU9PT1cImhvb2tfY2FsbGJhY2tcIilyZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVIb29rQ2FsbGJhY2tzKCQucmVxdWVzdC5jYWxsYmFja19pZCwkLnJlcXVlc3QuaW5wdXQsJC5yZXF1ZXN0LnRvb2xfdXNlX2lkLFEpO2Vsc2UgaWYoJC5yZXF1ZXN0LnN1YnR5cGU9PT1cIm1jcF9tZXNzYWdlXCIpe2xldCBKPSQucmVxdWVzdCxZPXRoaXMuc2RrTWNwVHJhbnNwb3J0cy5nZXQoSi5zZXJ2ZXJfbmFtZSk7aWYoIVkpdGhyb3cgRXJyb3IoYFNESyBNQ1Agc2VydmVyIG5vdCBmb3VuZDogJHtKLnNlcnZlcl9uYW1lfWApO2lmKFwibWV0aG9kXCJpbiBKLm1lc3NhZ2UmJlwiaWRcImluIEoubWVzc2FnZSYmSi5tZXNzYWdlLmlkIT09bnVsbClyZXR1cm57bWNwX3Jlc3BvbnNlOmF3YWl0IHRoaXMuaGFuZGxlTWNwQ29udHJvbFJlcXVlc3QoSi5zZXJ2ZXJfbmFtZSxKLFkpfTtlbHNle2lmKFkub25tZXNzYWdlKVkub25tZXNzYWdlKEoubWVzc2FnZSk7cmV0dXJue21jcF9yZXNwb25zZTp7anNvbnJwYzpcIjIuMFwiLHJlc3VsdDp7fSxpZDowfX19fWVsc2UgaWYoJC5yZXF1ZXN0LnN1YnR5cGU9PT1cImVsaWNpdGF0aW9uXCIpe2xldCBKPSQucmVxdWVzdDtpZih0aGlzLm9uRWxpY2l0YXRpb24pcmV0dXJuIGF3YWl0IHRoaXMub25FbGljaXRhdGlvbih7c2VydmVyTmFtZTpKLm1jcF9zZXJ2ZXJfbmFtZSxtZXNzYWdlOkoubWVzc2FnZSxtb2RlOkoubW9kZSx1cmw6Si51cmwsZWxpY2l0YXRpb25JZDpKLmVsaWNpdGF0aW9uX2lkLHJlcXVlc3RlZFNjaGVtYTpKLnJlcXVlc3RlZF9zY2hlbWEsdGl0bGU6Si50aXRsZSxkaXNwbGF5TmFtZTpKLmRpc3BsYXlfbmFtZSxkZXNjcmlwdGlvbjpKLmRlc2NyaXB0aW9ufSx7c2lnbmFsOlF9KTtyZXR1cm57YWN0aW9uOlwiZGVjbGluZVwifX1lbHNlIGlmKCQucmVxdWVzdC5zdWJ0eXBlPT09XCJvYXV0aF90b2tlbl9yZWZyZXNoXCIpe2lmKCF0aGlzLmdldE9BdXRoVG9rZW4pdGhyb3cgRXJyb3IoXCJnZXRPQXV0aFRva2VuIGNhbGxiYWNrIGlzIG5vdCBwcm92aWRlZC5cIik7cmV0dXJue2FjY2Vzc1Rva2VuOmF3YWl0IHRoaXMuZ2V0T0F1dGhUb2tlbih7c2lnbmFsOlF9KT8/bnVsbH19dGhyb3cgRXJyb3IoXCJVbnN1cHBvcnRlZCBjb250cm9sIHJlcXVlc3Qgc3VidHlwZTogXCIrJC5yZXF1ZXN0LnN1YnR5cGUpfWFzeW5jKnJlYWRTZGtNZXNzYWdlcygpe3RyeXtmb3IgYXdhaXQobGV0ICQgb2YgdGhpcy5pbnB1dFN0cmVhbSl5aWVsZCAkfWZpbmFsbHl7YXdhaXQgdGhpcy5jbGVhbnVwKCl9fWFzeW5jIGluaXRpYWxpemUoKXtsZXQgJDtpZih0aGlzLmhvb2tzKXskPXt9O2ZvcihsZXRbWCxXXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuaG9va3MpKWlmKFcubGVuZ3RoPjApJFtYXT1XLm1hcCgoRyk9PntsZXQgVT1bXTtmb3IobGV0IEggb2YgRy5ob29rcyl7bGV0IHE9YGhvb2tfJHt0aGlzLm5leHRDYWxsYmFja0lkKyt9YDt0aGlzLmhvb2tDYWxsYmFja3Muc2V0KHEsSCksVS5wdXNoKHEpfXJldHVybnttYXRjaGVyOkcubWF0Y2hlcixob29rQ2FsbGJhY2tJZHM6VSx0aW1lb3V0OkcudGltZW91dH19KX1sZXQgUT10aGlzLnNka01jcFRyYW5zcG9ydHMuc2l6ZT4wP0FycmF5LmZyb20odGhpcy5zZGtNY3BUcmFuc3BvcnRzLmtleXMoKSk6dm9pZCAwLEo9e3N1YnR5cGU6XCJpbml0aWFsaXplXCIsaG9va3M6JCxzZGtNY3BTZXJ2ZXJzOlEsanNvblNjaGVtYTp0aGlzLmpzb25TY2hlbWEsc3lzdGVtUHJvbXB0OnR5cGVvZiB0aGlzLmluaXRDb25maWc/LnN5c3RlbVByb21wdD09PVwic3RyaW5nXCI/W3RoaXMuaW5pdENvbmZpZy5zeXN0ZW1Qcm9tcHRdOnRoaXMuaW5pdENvbmZpZz8uc3lzdGVtUHJvbXB0LGFwcGVuZFN5c3RlbVByb21wdDp0aGlzLmluaXRDb25maWc/LmFwcGVuZFN5c3RlbVByb21wdCxwbGFuTW9kZUluc3RydWN0aW9uczp0aGlzLmluaXRDb25maWc/LnBsYW5Nb2RlSW5zdHJ1Y3Rpb25zLGFwcGVuZFN1YmFnZW50U3lzdGVtUHJvbXB0OnRoaXMuaW5pdENvbmZpZz8uYXBwZW5kU3ViYWdlbnRTeXN0ZW1Qcm9tcHQsZXhjbHVkZUR5bmFtaWNTZWN0aW9uczp0aGlzLmluaXRDb25maWc/LmV4Y2x1ZGVEeW5hbWljU2VjdGlvbnMsYWdlbnRzOnRoaXMuaW5pdENvbmZpZz8uYWdlbnRzLHRpdGxlOnRoaXMuaW5pdENvbmZpZz8udGl0bGUsc2tpbGxzOkFycmF5LmlzQXJyYXkodGhpcy5pbml0Q29uZmlnPy5za2lsbHMpP3RoaXMuaW5pdENvbmZpZy5za2lsbHM6dm9pZCAwLHdlYlNlYXJjaElzb2xhdGlvbkV4ZW1wdE1jcFNlcnZlcnM6dGhpcy5pbml0Q29uZmlnPy53ZWJTZWFyY2hJc29sYXRpb25FeGVtcHRNY3BTZXJ2ZXJzLHByb21wdFN1Z2dlc3Rpb25zOnRoaXMuaW5pdENvbmZpZz8ucHJvbXB0U3VnZ2VzdGlvbnMsYWdlbnRQcm9ncmVzc1N1bW1hcmllczp0aGlzLmluaXRDb25maWc/LmFnZW50UHJvZ3Jlc3NTdW1tYXJpZXMsZm9yd2FyZFN1YmFnZW50VGV4dDp0aGlzLmluaXRDb25maWc/LmZvcndhcmRTdWJhZ2VudFRleHR9O3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3QoSikpLnJlc3BvbnNlfWFzeW5jIGludGVycnVwdCgpe3JldHVybiBQNChcInNka19pbnRlcnJ1cHRcIixhc3luYygpPT57YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiaW50ZXJydXB0XCJ9KX0pfWFzeW5jIHNldFBlcm1pc3Npb25Nb2RlKCQpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInNldF9wZXJtaXNzaW9uX21vZGVcIixtb2RlOiR9KX1hc3luYyBzZXRNb2RlbCgkKXthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJzZXRfbW9kZWxcIixtb2RlbDokfSl9YXN5bmMgc2V0TWF4VGhpbmtpbmdUb2tlbnMoJCl7YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwic2V0X21heF90aGlua2luZ190b2tlbnNcIixtYXhfdGhpbmtpbmdfdG9rZW5zOiR9KX1hc3luYyBhcHBseUZsYWdTZXR0aW5ncygkKXtyZXR1cm4gUDQoXCJzZGtfYXBwbHlfZmxhZ19zZXR0aW5nc1wiLGFzeW5jKCk9Pnthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJhcHBseV9mbGFnX3NldHRpbmdzXCIsc2V0dGluZ3M6JH0pfSl9YXN5bmMgZ2V0U2V0dGluZ3MoKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiZ2V0X3NldHRpbmdzXCJ9KSkucmVzcG9uc2V9YXN5bmMgcmV3aW5kRmlsZXMoJCxRKXtyZXR1cm4gUDQoXCJzZGtfcmV3aW5kX2ZpbGVzXCIsYXN5bmMoKT0+e3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJyZXdpbmRfZmlsZXNcIix1c2VyX21lc3NhZ2VfaWQ6JCxkcnlfcnVuOlE/LmRyeVJ1bn0pKS5yZXNwb25zZX0pfWFzeW5jIGNhbmNlbEFzeW5jTWVzc2FnZSgkKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiY2FuY2VsX2FzeW5jX21lc3NhZ2VcIixtZXNzYWdlX3V1aWQ6JH0pKS5yZXNwb25zZS5jYW5jZWxsZWR9YXN5bmMgc2VlZFJlYWRTdGF0ZSgkLFEpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInNlZWRfcmVhZF9zdGF0ZVwiLHBhdGg6JCxtdGltZTpRfSl9YXN5bmMgZW5hYmxlUmVtb3RlQ29udHJvbCgkLFEpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJyZW1vdGVfY29udHJvbFwiLGVuYWJsZWQ6JCwuLi5RIT09dm9pZCAwJiZ7bmFtZTpRfX0pKS5yZXNwb25zZX1hc3luYyBzdWJtaXRGZWVkYmFjaygkLFEpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJzdWJtaXRfZmVlZGJhY2tcIixkZXNjcmlwdGlvbjokLHN1cmZhY2U6UT8uc3VyZmFjZX0pKS5yZXNwb25zZX1hc3luYyBnZW5lcmF0ZVNlc3Npb25UaXRsZSgkLFEpe3JldHVybiBQNChcInNka19zZXNzaW9uX3RpdGxlX2dlbmVyYXRlXCIsYXN5bmMoKT0+e3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJnZW5lcmF0ZV9zZXNzaW9uX3RpdGxlXCIsZGVzY3JpcHRpb246JCxwZXJzaXN0OlE/LnBlcnNpc3R9KSkucmVzcG9uc2UudGl0bGV9KX1hc3luYyBhc2tTaWRlUXVlc3Rpb24oJCl7cmV0dXJuIFA0KFwic2RrX3NpZGVfcXVlc3Rpb25cIixhc3luYygpPT57bGV0IEo9KGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInNpZGVfcXVlc3Rpb25cIixxdWVzdGlvbjokfSkpLnJlc3BvbnNlO3JldHVybiBKLnJlc3BvbnNlPT09bnVsbD9udWxsOntyZXNwb25zZTpKLnJlc3BvbnNlLHN5bnRoZXRpYzpKLnN5bnRoZXRpYz8/ITF9fSl9YXN5bmMgbGF1bmNoVWx0cmFyZXZpZXcoJCxRKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwidWx0cmFyZXZpZXdfbGF1bmNoXCIsYXJnczokLGNvbmZpcm06UT8uY29uZmlybT8/ITF9KSkucmVzcG9uc2V9YXN5bmMgbWVzc2FnZVJhdGVkKCQpe2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1lc3NhZ2VfcmF0ZWRcIixtZXNzYWdlVXVpZDokLm1lc3NhZ2VVdWlkLHNlbnRpbWVudDokLnNlbnRpbWVudCxzdXJmYWNlOiQuc3VyZmFjZSxjbGVhcmVkOiQuY2xlYXJlZD8/ITF9KX1wcm9jZXNzUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygkKXtmb3IobGV0IFEgb2YgJClpZihRLnJlcXVlc3Quc3VidHlwZT09PVwiY2FuX3VzZV90b29sXCIpdGhpcy5oYW5kbGVDb250cm9sUmVxdWVzdChRKS5jYXRjaCgoKT0+e30pfXJlcXVlc3QoJCl7bGV0IFE9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsMTUpLEo9e3JlcXVlc3RfaWQ6USx0eXBlOlwiY29udHJvbF9yZXF1ZXN0XCIscmVxdWVzdDokfTtyZXR1cm4gbmV3IFByb21pc2UoKFksWCk9Pnt0aGlzLnBlbmRpbmdDb250cm9sUmVzcG9uc2VzLnNldChRLHtoYW5kbGVyOihXKT0+e2lmKHRoaXMucGVuZGluZ0NvbnRyb2xSZXNwb25zZXMuZGVsZXRlKFEpLFcuc3VidHlwZT09PVwic3VjY2Vzc1wiKVkoVyk7ZWxzZSBpZihYKEVycm9yKFcuZXJyb3IpKSxXLnBlbmRpbmdfcGVybWlzc2lvbl9yZXF1ZXN0cyl0aGlzLnByb2Nlc3NQZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKFcucGVuZGluZ19wZXJtaXNzaW9uX3JlcXVlc3RzKX0scmVqZWN0Olh9KSxQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc3BvcnQud3JpdGUoQiQoSikrYFxuYCkpLmNhdGNoKChXKT0+e3RoaXMucGVuZGluZ0NvbnRyb2xSZXNwb25zZXMuZGVsZXRlKFEpLFgoVyl9KX0pfWluaXRpYWxpemF0aW9uUmVzdWx0KCl7cmV0dXJuIHRoaXMuaW5pdGlhbGl6YXRpb259YXN5bmMgc3VwcG9ydGVkQ29tbWFuZHMoKXtyZXR1cm4oYXdhaXQgdGhpcy5pbml0aWFsaXphdGlvbikuY29tbWFuZHN9YXN5bmMgc3VwcG9ydGVkTW9kZWxzKCl7cmV0dXJuKGF3YWl0IHRoaXMuaW5pdGlhbGl6YXRpb24pLm1vZGVsc31hc3luYyBzdXBwb3J0ZWRBZ2VudHMoKXtyZXR1cm4oYXdhaXQgdGhpcy5pbml0aWFsaXphdGlvbikuYWdlbnRzfWFzeW5jIHJlY29ubmVjdE1jcFNlcnZlcigkKXthd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJtY3BfcmVjb25uZWN0XCIsc2VydmVyTmFtZTokfSl9YXN5bmMgdG9nZ2xlTWNwU2VydmVyKCQsUSl7cmV0dXJuIFA0KFwic2RrX21jcF90b2dnbGVfc2VydmVyXCIsYXN5bmMoKT0+e2F3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF90b2dnbGVcIixzZXJ2ZXJOYW1lOiQsZW5hYmxlZDpRfSl9KX1hc3luYyBlbmFibGVDaGFubmVsKCQpe3JldHVybiBQNChcInNka19tY3BfZW5hYmxlX2NoYW5uZWxcIixhc3luYygpPT57YXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiY2hhbm5lbF9lbmFibGVcIixzZXJ2ZXJOYW1lOiR9KX0pfWFzeW5jIG1jcEF1dGhlbnRpY2F0ZSgkLFEpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJtY3BfYXV0aGVudGljYXRlXCIsc2VydmVyTmFtZTokLHJlZGlyZWN0VXJpOlF9KSkucmVzcG9uc2V9YXN5bmMgbWNwQ2xlYXJBdXRoKCQpe3JldHVybihhd2FpdCB0aGlzLnJlcXVlc3Qoe3N1YnR5cGU6XCJtY3BfY2xlYXJfYXV0aFwiLHNlcnZlck5hbWU6JH0pKS5yZXNwb25zZX1hc3luYyBtY3BTdWJtaXRPQXV0aENhbGxiYWNrVXJsKCQsUSl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF9vYXV0aF9jYWxsYmFja191cmxcIixzZXJ2ZXJOYW1lOiQsY2FsbGJhY2tVcmw6UX0pKS5yZXNwb25zZX1hc3luYyBjbGF1ZGVBdXRoZW50aWNhdGUoJCl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcImNsYXVkZV9hdXRoZW50aWNhdGVcIixsb2dpbldpdGhDbGF1ZGVBaTokfSkpLnJlc3BvbnNlfWFzeW5jIGNsYXVkZU9BdXRoQ2FsbGJhY2soJCxRKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiY2xhdWRlX29hdXRoX2NhbGxiYWNrXCIsYXV0aG9yaXphdGlvbkNvZGU6JCxzdGF0ZTpRfSkpLnJlc3BvbnNlfWFzeW5jIGNsYXVkZU9BdXRoV2FpdEZvckNvbXBsZXRpb24oKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwiY2xhdWRlX29hdXRoX3dhaXRfZm9yX2NvbXBsZXRpb25cIn0pKS5yZXNwb25zZX1hc3luYyBtY3BTZXJ2ZXJTdGF0dXMoKXtyZXR1cm4oYXdhaXQgdGhpcy5yZXF1ZXN0KHtzdWJ0eXBlOlwibWNwX3N0YXR1c1wifSkpLnJlc3BvbnNlLm1jcFNlcnZlcnN9YXN5bmMgZ2V0Q29udGV4dFVzYWdlKCl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcImdldF9jb250ZXh0X3VzYWdlXCJ9KSkucmVzcG9uc2V9YXN5bmMgcmVhZEZpbGUoJCxRKXt0cnl7cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInJlYWRfZmlsZVwiLHBhdGg6JCxtYXhfYnl0ZXM6UT8ubWF4Qnl0ZXMsZW5jb2Rpbmc6UT8uZW5jb2Rpbmd9KSkucmVzcG9uc2V9Y2F0Y2h7cmV0dXJuIG51bGx9fWFzeW5jIHJlbG9hZFBsdWdpbnMoKXtyZXR1cm4gUDQoXCJzZGtfcmVsb2FkX3BsdWdpbnNcIixhc3luYygpPT57cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcInJlbG9hZF9wbHVnaW5zXCJ9KSkucmVzcG9uc2V9KX1hc3luYyBzZXRNY3BTZXJ2ZXJzKCQpe3JldHVybiBQNChcInNka19tY3Bfc2V0X3NlcnZlcnNcIixhc3luYygpPT57bGV0IFE9e30sSj17fTtmb3IobGV0W1UsSF1vZiBPYmplY3QuZW50cmllcygkKSlpZihILnR5cGU9PT1cInNka1wiJiZcImluc3RhbmNlXCJpbiBIKVFbVV09SC5pbnN0YW5jZTtlbHNlIEpbVV09SDtsZXQgWT1uZXcgU2V0KHRoaXMuc2RrTWNwU2VydmVySW5zdGFuY2VzLmtleXMoKSksWD1uZXcgU2V0KE9iamVjdC5rZXlzKFEpKTtmb3IobGV0IFUgb2YgWSlpZighWC5oYXMoVSkpYXdhaXQgdGhpcy5kaXNjb25uZWN0U2RrTWNwU2VydmVyKFUpO2ZvcihsZXRbVSxIXW9mIE9iamVjdC5lbnRyaWVzKFEpKWlmKCFZLmhhcyhVKSl0aGlzLmNvbm5lY3RTZGtNY3BTZXJ2ZXIoVSxIKTtsZXQgVz17fTtmb3IobGV0IFUgb2YgT2JqZWN0LmtleXMoUSkpV1tVXT17dHlwZTpcInNka1wiLG5hbWU6VX07cmV0dXJuKGF3YWl0IHRoaXMucmVxdWVzdCh7c3VidHlwZTpcIm1jcF9zZXRfc2VydmVyc1wiLHNlcnZlcnM6ey4uLkosLi4uV319KSkucmVzcG9uc2V9KX1hc3luYyBhY2NvdW50SW5mbygpe3JldHVybihhd2FpdCB0aGlzLmluaXRpYWxpemF0aW9uKS5hY2NvdW50fWFzeW5jIHN0cmVhbUlucHV0KCQpe1gkKFwiW1F1ZXJ5LnN0cmVhbUlucHV0XSBTdGFydGluZyB0byBwcm9jZXNzIGlucHV0IHN0cmVhbVwiKTt0cnl7bGV0IFE9MDtmb3IgYXdhaXQobGV0IEogb2YgJCl7aWYoUSsrLFgkKGBbUXVlcnkuc3RyZWFtSW5wdXRdIFByb2Nlc3NpbmcgbWVzc2FnZSAke1F9OiAke0oudHlwZX1gKSx0aGlzLmFib3J0Q29udHJvbGxlcj8uc2lnbmFsLmFib3J0ZWQpYnJlYWs7YXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNwb3J0LndyaXRlKEIkKEopK2BcbmApKX1pZihYJChgW1F1ZXJ5LnN0cmVhbUlucHV0XSBGaW5pc2hlZCBwcm9jZXNzaW5nICR7UX0gbWVzc2FnZXMgZnJvbSBpbnB1dCBzdHJlYW1gKSxRPjAmJnRoaXMuaGFzQmlkaXJlY3Rpb25hbE5lZWRzKCkpWCQoXCJbUXVlcnkuc3RyZWFtSW5wdXRdIEhhcyBiaWRpcmVjdGlvbmFsIG5lZWRzLCB3YWl0aW5nIGZvciBmaXJzdCByZXN1bHRcIiksYXdhaXQgdGhpcy53YWl0Rm9yRmlyc3RSZXN1bHQoKTtYJChcIltRdWVyeV0gQ2FsbGluZyB0cmFuc3BvcnQuZW5kSW5wdXQoKSB0byBjbG9zZSBzdGRpbiB0byBDTEkgcHJvY2Vzc1wiKSx0aGlzLnRyYW5zcG9ydC5lbmRJbnB1dCgpfWNhdGNoKFEpe2lmKCEoUSBpbnN0YW5jZW9mIHE2KSl0aHJvdyBRfX13YWl0Rm9yRmlyc3RSZXN1bHQoKXtpZih0aGlzLmZpcnN0UmVzdWx0UmVjZWl2ZWQpcmV0dXJuIFgkKFwiW1F1ZXJ5LndhaXRGb3JGaXJzdFJlc3VsdF0gUmVzdWx0IGFscmVhZHkgcmVjZWl2ZWQsIHJldHVybmluZyBpbW1lZGlhdGVseVwiKSxQcm9taXNlLnJlc29sdmUoKTtyZXR1cm4gbmV3IFByb21pc2UoKCQpPT57aWYodGhpcy5hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hYm9ydGVkKXskKCk7cmV0dXJufXRoaXMuYWJvcnRDb250cm9sbGVyPy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsKCk9PiQoKSx7b25jZTohMH0pLHRoaXMuZmlyc3RSZXN1bHRSZWNlaXZlZFJlc29sdmU9JH0pfWhhbmRsZUhvb2tDYWxsYmFja3MoJCxRLEosWSl7bGV0IFg9dGhpcy5ob29rQ2FsbGJhY2tzLmdldCgkKTtpZighWCl0aHJvdyBFcnJvcihgTm8gaG9vayBjYWxsYmFjayBmb3VuZCBmb3IgSUQ6ICR7JH1gKTtyZXR1cm4gWChRLEose3NpZ25hbDpZfSl9Y29ubmVjdFNka01jcFNlcnZlcigkLFEpe2xldCBKPW5ldyB2VSgoWSk9PnRoaXMuc2VuZE1jcFNlcnZlck1lc3NhZ2VUb0NsaSgkLFkpKTt0aGlzLnNka01jcFRyYW5zcG9ydHMuc2V0KCQsSiksdGhpcy5zZGtNY3BTZXJ2ZXJJbnN0YW5jZXMuc2V0KCQsUSksUS5jb25uZWN0KEopLmNhdGNoKChZKT0+e2lmKHRoaXMuc2RrTWNwVHJhbnNwb3J0cy5nZXQoJCk9PT1KKXRoaXMuc2RrTWNwVHJhbnNwb3J0cy5kZWxldGUoJCk7aWYodGhpcy5zZGtNY3BTZXJ2ZXJJbnN0YW5jZXMuZ2V0KCQpPT09USl0aGlzLnNka01jcFNlcnZlckluc3RhbmNlcy5kZWxldGUoJCk7WCQoYFtRdWVyeS5jb25uZWN0U2RrTWNwU2VydmVyXSBGYWlsZWQgdG8gY29ubmVjdCBNQ1Agc2VydmVyICckeyR9JzogJHtZfWAse2xldmVsOlwiZXJyb3JcIn0pfSl9YXN5bmMgZGlzY29ubmVjdFNka01jcFNlcnZlcigkKXtsZXQgUT10aGlzLnNka01jcFRyYW5zcG9ydHMuZ2V0KCQpO2lmKFEpYXdhaXQgUS5jbG9zZSgpLHRoaXMuc2RrTWNwVHJhbnNwb3J0cy5kZWxldGUoJCk7dGhpcy5zZGtNY3BTZXJ2ZXJJbnN0YW5jZXMuZGVsZXRlKCQpfXNlbmRNY3BTZXJ2ZXJNZXNzYWdlVG9DbGkoJCxRKXtpZihcImlkXCJpbiBRJiZRLmlkIT09bnVsbCYmUS5pZCE9PXZvaWQgMCl7bGV0IFk9YCR7JH06JHtRLmlkfWAsWD10aGlzLnBlbmRpbmdNY3BSZXNwb25zZXMuZ2V0KFkpO2lmKFgpe1gucmVzb2x2ZShRKSx0aGlzLnBlbmRpbmdNY3BSZXNwb25zZXMuZGVsZXRlKFkpO3JldHVybn19bGV0IEo9e3R5cGU6XCJjb250cm9sX3JlcXVlc3RcIixyZXF1ZXN0X2lkOng3KCkscmVxdWVzdDp7c3VidHlwZTpcIm1jcF9tZXNzYWdlXCIsc2VydmVyX25hbWU6JCxtZXNzYWdlOlF9fTtQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc3BvcnQud3JpdGUoQiQoSikrYFxuYCkpLmNhdGNoKChZKT0+e1gkKGBbUXVlcnkuc2VuZE1jcFNlcnZlck1lc3NhZ2VUb0NsaV0gVHJhbnNwb3J0IHdyaXRlIGZhaWxlZDogJHtZfWAse2xldmVsOlwiZXJyb3JcIn0pfSl9aGFuZGxlTWNwQ29udHJvbFJlcXVlc3QoJCxRLEope2xldCBZPVwiaWRcImluIFEubWVzc2FnZT9RLm1lc3NhZ2UuaWQ6bnVsbCxYPWAkeyR9OiR7WX1gO3JldHVybiBuZXcgUHJvbWlzZSgoVyxHKT0+e2xldCBVPSgpPT57dGhpcy5wZW5kaW5nTWNwUmVzcG9uc2VzLmRlbGV0ZShYKX0sSD0oVik9PntVKCksVyhWKX0scT0oVik9PntVKCksRyhWKX07aWYodGhpcy5wZW5kaW5nTWNwUmVzcG9uc2VzLnNldChYLHtyZXNvbHZlOkgscmVqZWN0OnF9KSxKLm9ubWVzc2FnZSlKLm9ubWVzc2FnZShRLm1lc3NhZ2UpO2Vsc2V7VSgpLEcoRXJyb3IoXCJObyBtZXNzYWdlIGhhbmRsZXIgcmVnaXN0ZXJlZFwiKSk7cmV0dXJufX0pfX12YXIgTTU9NTAwLEw1PTEwNDg1NzY7dmFyIEl4PVsyMDAsODAwXTtjbGFzcyBDVXtzZW5kO3NlbmRUaW1lb3V0TXM7b25FcnJvcjttYXhQZW5kaW5nRW50cmllczttYXhQZW5kaW5nQnl0ZXM7YmFja29mZk1zO3BlbmRpbmc9W107cGVuZGluZ0VudHJpZXM9MDtwZW5kaW5nQnl0ZXM9MDtmbHVzaFByb21pc2U9bnVsbDtjb25zdHJ1Y3RvcigkLFE9NjAwMDAsSixZPU01LFg9TDUsVz1JeCl7dGhpcy5zZW5kPSQ7dGhpcy5zZW5kVGltZW91dE1zPVE7dGhpcy5vbkVycm9yPUo7dGhpcy5tYXhQZW5kaW5nRW50cmllcz1ZO3RoaXMubWF4UGVuZGluZ0J5dGVzPVg7dGhpcy5iYWNrb2ZmTXM9V31lbnF1ZXVlKCQsUSl7bGV0IEo9QiQoUSkubGVuZ3RoO2lmKHRoaXMucGVuZGluZy5wdXNoKHtmaWxlUGF0aDokLGVudHJpZXM6USxieXRlczpKfSksdGhpcy5wZW5kaW5nRW50cmllcys9US5sZW5ndGgsdGhpcy5wZW5kaW5nQnl0ZXMrPUosdGhpcy5wZW5kaW5nRW50cmllcz50aGlzLm1heFBlbmRpbmdFbnRyaWVzfHx0aGlzLnBlbmRpbmdCeXRlcz50aGlzLm1heFBlbmRpbmdCeXRlcyl0aGlzLmZsdXNoUHJvbWlzZT10aGlzLmRyYWluKCksdGhpcy5mbHVzaFByb21pc2UuY2F0Y2goKCk9Pnt9KX1hc3luYyBmbHVzaCgpe2xldCAkPXRoaXMuZHJhaW4oKTtpZih0aGlzLmZsdXNoUHJvbWlzZT0kLGF3YWl0ICQsdGhpcy5mbHVzaFByb21pc2U9PT0kKXRoaXMuZmx1c2hQcm9taXNlPW51bGx9YXN5bmMgZHJhaW4oKXtsZXQgJD10aGlzLmZsdXNoUHJvbWlzZSxRPXRoaXMucGVuZGluZy5zcGxpY2UoMCk7aWYodGhpcy5wZW5kaW5nRW50cmllcz0wLHRoaXMucGVuZGluZ0J5dGVzPTAsJClhd2FpdCAkO2lmKFEubGVuZ3RoPT09MClyZXR1cm47YXdhaXQgdGhpcy5kb0ZsdXNoKFEpfWFzeW5jIGRvRmx1c2goJCl7bGV0IFE9bmV3IE1hcDtmb3IobGV0IFkgb2YgJCl7bGV0IFg9US5nZXQoWS5maWxlUGF0aCk7aWYoWClYLnB1c2goLi4uWS5lbnRyaWVzKTtlbHNlIFEuc2V0KFkuZmlsZVBhdGgsWS5lbnRyaWVzLnNsaWNlKCkpfWxldCBKPXRoaXMuYmFja29mZk1zLmxlbmd0aCsxO2ZvcihsZXRbWSxYXW9mIFEpe2xldCBXPWBTZXNzaW9uU3RvcmUuYXBwZW5kKCkgdGltZWQgb3V0IGFmdGVyICR7dGhpcy5zZW5kVGltZW91dE1zfW1zIGZvciAke1l9YCxHLFU9MTtmb3IoO1U8PUo7VSsrKXRyeXthd2FpdCBUNCh0aGlzLnNlbmQoWSxYKSx0aGlzLnNlbmRUaW1lb3V0TXMsVyksRz12b2lkIDA7YnJlYWt9Y2F0Y2goSCl7aWYoRz1JNChIKSxHLm1lc3NhZ2U9PT1XKWJyZWFrO2xldCBxPXRoaXMuYmFja29mZk1zW1UtMV07aWYocT09PXZvaWQgMClicmVhazthd2FpdCB6WChxKX1pZihHKXtYJChgW1RyYW5zY3JpcHRNaXJyb3JCYXRjaGVyXSBmbHVzaCBmYWlsZWQgZm9yICR7WX0gYWZ0ZXIgJHtVfSBhdHRlbXB0KHMpOiAke0d9YCx7bGV2ZWw6XCJlcnJvclwifSk7dHJ5e3RoaXMub25FcnJvcj8uKFksRyl9Y2F0Y2goSCl7WCQoYFtUcmFuc2NyaXB0TWlycm9yQmF0Y2hlcl0gb25FcnJvciBjYWxsYmFjayB0aHJldzogJHtIfWAse2xldmVsOlwiZXJyb3JcIn0pfX19fX12YXIgXzU9QlgoRUgoKSwxKTtpbXBvcnR7Y3JlYXRlUmVxdWlyZSBhcyBseX1mcm9tXCJtb2R1bGVcIjtpbXBvcnR7ZmlsZVVSTFRvUGF0aCBhcyBjeX1mcm9tXCJ1cmxcIjt2YXIgcHk9NTAwMDtjbGFzcyBiSHtjbG9zZWQ9ITE7aW5wdXRTdHJlYW07cXVlcnk7cXVlcnlJdGVyYXRvcj1udWxsO2Fib3J0Q29udHJvbGxlcjtfc2Vzc2lvbklkPW51bGw7Z2V0IHNlc3Npb25JZCgpe2lmKHRoaXMuX3Nlc3Npb25JZD09PW51bGwpdGhyb3cgRXJyb3IoXCJTZXNzaW9uIElEIG5vdCBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgcmVjZWl2aW5nIG1lc3NhZ2VzXCIpO3JldHVybiB0aGlzLl9zZXNzaW9uSWR9Y29uc3RydWN0b3IoJCl7aWYoJC5yZXN1bWUpdGhpcy5fc2Vzc2lvbklkPSQucmVzdW1lO3RoaXMuaW5wdXRTdHJlYW09bmV3IHowO2xldCBRPSQucGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGU7aWYoIVEpe2xldCBXPWN5KGltcG9ydC5tZXRhLnVybCksRz1seShXKSxVPUY1KChIKT0+Ry5yZXNvbHZlKEgpKTtpZihVKVE9VTtlbHNlIHRyeXtRPUcucmVzb2x2ZShcIi4vY2xpLmpzXCIpfWNhdGNoe3Rocm93IEVycm9yKGBOYXRpdmUgQ0xJIGJpbmFyeSBmb3IgJHtwcm9jZXNzLnBsYXRmb3JtfS0ke3Byb2Nlc3MuYXJjaH0gbm90IGZvdW5kLiBSZWluc3RhbGwgQGFudGhyb3BpYy1haS9jbGF1ZGUtYWdlbnQtc2RrIHdpdGhvdXQgLS1vbWl0PW9wdGlvbmFsLCBvciBzZXQgb3B0aW9ucy5wYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZS5gKX19bGV0IEo9ey4uLiQuZW52Pz9wcm9jZXNzLmVudn07aWYoIUouQ0xBVURFX0NPREVfRU5UUllQT0lOVClKLkNMQVVERV9DT0RFX0VOVFJZUE9JTlQ9XCJzZGstdHNcIjtsZXQgWT17fTtpZihfNS5wcm9wYWdhdGlvbi5pbmplY3QoXzUuY29udGV4dC5hY3RpdmUoKSxZKSxcInRyYWNlcGFyZW50XCJpbiBZKXtmb3IobGV0IFcgb2ZbXCJUUkFDRVBBUkVOVFwiLFwiVFJBQ0VTVEFURVwiXSlpZighKFcgaW4oJC5lbnY/P3t9KSkpZGVsZXRlIEpbV119Zm9yKGxldFtXLEddb2YgT2JqZWN0LmVudHJpZXMoWSkpe2xldCBVPVcudG9VcHBlckNhc2UoKTtpZighKFUgaW4oJC5lbnY/P3t9KSkpSltVXT1HfXRoaXMuYWJvcnRDb250cm9sbGVyPWEwKCk7bGV0IFg9bmV3IGg3KHthYm9ydENvbnRyb2xsZXI6dGhpcy5hYm9ydENvbnRyb2xsZXIscGF0aFRvQ2xhdWRlQ29kZUV4ZWN1dGFibGU6USxjd2Q6JC5jd2QsZW52OkosZXhlY3V0YWJsZTokLmV4ZWN1dGFibGU/PyhlMCgpP1wiYnVuXCI6XCJub2RlXCIpLGV4ZWN1dGFibGVBcmdzOiQuZXhlY3V0YWJsZUFyZ3M/P1tdLGV4dHJhQXJnczp7fSx0aGlua2luZ0NvbmZpZzp2b2lkIDAsbWF4VHVybnM6dm9pZCAwLG1heEJ1ZGdldFVzZDp2b2lkIDAsbW9kZWw6JC5tb2RlbCxmYWxsYmFja01vZGVsOnZvaWQgMCxwZXJtaXNzaW9uTW9kZTokLnBlcm1pc3Npb25Nb2RlPz9cImRlZmF1bHRcIixhbGxvd0Rhbmdlcm91c2x5U2tpcFBlcm1pc3Npb25zOiQuYWxsb3dEYW5nZXJvdXNseVNraXBQZXJtaXNzaW9ucz8/ITEsY29udGludWVDb252ZXJzYXRpb246ITEscmVzdW1lOiQucmVzdW1lLHNldHRpbmdTb3VyY2VzOiQuc2V0dGluZ1NvdXJjZXM/P1tdLGFsbG93ZWRUb29sczokLmFsbG93ZWRUb29scz8/W10sZGlzYWxsb3dlZFRvb2xzOiQuZGlzYWxsb3dlZFRvb2xzPz9bXSxtY3BTZXJ2ZXJzOnt9LHN0cmljdE1jcENvbmZpZzohMSxjYW5Vc2VUb29sOiEhJC5jYW5Vc2VUb29sLGhvb2tzOiEhJC5ob29rcyxpbmNsdWRlUGFydGlhbE1lc3NhZ2VzOiExLGZvcmtTZXNzaW9uOiExLHJlc3VtZVNlc3Npb25BdDp2b2lkIDB9KTt0aGlzLnF1ZXJ5PW5ldyBjNyhYLCExLCQuY2FuVXNlVG9vbCwkLmhvb2tzLHRoaXMuYWJvcnRDb250cm9sbGVyLG5ldyBNYXAsdm9pZCAwLHtwbGFuTW9kZUluc3RydWN0aW9uczokLnBsYW5Nb2RlSW5zdHJ1Y3Rpb25zfSksdGhpcy5xdWVyeS5zdHJlYW1JbnB1dCh0aGlzLmlucHV0U3RyZWFtKS5jYXRjaCgoVyk9PnRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KFcpKX1hc3luYyBzZW5kKCQpe2lmKHRoaXMuY2xvc2VkKXRocm93IEVycm9yKFwiQ2Fubm90IHNlbmQgdG8gY2xvc2VkIHNlc3Npb25cIik7bGV0IFE9dHlwZW9mICQ9PT1cInN0cmluZ1wiP3t0eXBlOlwidXNlclwiLHNlc3Npb25faWQ6XCJcIixtZXNzYWdlOntyb2xlOlwidXNlclwiLGNvbnRlbnQ6W3t0eXBlOlwidGV4dFwiLHRleHQ6JH1dfSxwYXJlbnRfdG9vbF91c2VfaWQ6bnVsbH06JDt0aGlzLmlucHV0U3RyZWFtLmVucXVldWUoUSl9YXN5bmMqc3RyZWFtKCl7aWYoIXRoaXMucXVlcnlJdGVyYXRvcil0aGlzLnF1ZXJ5SXRlcmF0b3I9dGhpcy5xdWVyeVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTt3aGlsZSghMCl7bGV0e3ZhbHVlOiQsZG9uZTpRfT1hd2FpdCB0aGlzLnF1ZXJ5SXRlcmF0b3IubmV4dCgpO2lmKFEpcmV0dXJuO2lmKCQudHlwZT09PVwic3lzdGVtXCImJiQuc3VidHlwZT09PVwiaW5pdFwiKXRoaXMuX3Nlc3Npb25JZD0kLnNlc3Npb25faWQ7aWYoeWllbGQgJCwkLnR5cGU9PT1cInJlc3VsdFwiKXJldHVybn19Y2xvc2UoKXtpZih0aGlzLmNsb3NlZClyZXR1cm47dGhpcy5jbG9zZWQ9ITAsdGhpcy5pbnB1dFN0cmVhbS5kb25lKCksc2V0VGltZW91dCgoKT0+e2lmKCF0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl0aGlzLmFib3J0Q29udHJvbGxlci5hYm9ydCgpfSxweSkudW5yZWYoKX1hc3luY1tTeW1ib2wuYXN5bmNEaXNwb3NlXSgpe3RoaXMuY2xvc2UoKX19ZnVuY3Rpb24gX0goJCl7dHJ5e2xldCBRPW5ldyBiSCgkKTtyZXR1cm4gbTcoXCJzZGtfc2Vzc2lvbl9jcmVhdGVcIiksUX1jYXRjaChRKXtsZXQgSj1RIGluc3RhbmNlb2YgRXJyb3ImJlEubWVzc2FnZS5pbmNsdWRlcyhcIk5hdGl2ZSBDTEkgYmluYXJ5XCIpP1wibmF0aXZlX2NsaV9ub3RfZm91bmRcIjpcImluaXRfZmFpbGVkXCI7dGhyb3cgbDcoXCJzZGtfc2Vzc2lvbl9jcmVhdGVcIixKKSxRfX1mdW5jdGlvbiBxWigkLFEpe3JldHVybiBuZXcgYkgoey4uLlEscmVzdW1lOiR9KX12YXIgWkc9QlgoRUgoKSwxKTtmdW5jdGlvbiBkeSgkKXtsZXQgUT0kLEo9XCJcIixZPTAsWD0xMDt3aGlsZShRIT09SiYmWTxYKUo9USxRPVEubm9ybWFsaXplKFwiTkZLQ1wiKSxRPVEucmVwbGFjZSgvW1xccHtDZn1cXHB7Q299XFxwe0NufV0vZ3UsXCJcIiksUT1RLnJlcGxhY2UoL1tcXHUyMDBCLVxcdTIwMEZdL2csXCJcIikucmVwbGFjZSgvW1xcdTIwMkEtXFx1MjAyRV0vZyxcIlwiKS5yZXBsYWNlKC9bXFx1MjA2Ni1cXHUyMDY5XS9nLFwiXCIpLnJlcGxhY2UoL1tcXHVGRUZGXS9nLFwiXCIpLnJlcGxhY2UoL1tcXHVFMDAwLVxcdUY4RkZdL2csXCJcIiksWSsrO2lmKFk+PVgpdGhyb3cgRXJyb3IoYFVuaWNvZGUgc2FuaXRpemF0aW9uIHJlYWNoZWQgbWF4aW11bSBpdGVyYXRpb25zICgke1h9KSBmb3IgaW5wdXQ6ICR7JC5zbGljZSgwLDEwMCl9YCk7cmV0dXJuIFF9ZnVuY3Rpb24gRjAoJCl7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKXJldHVybiBkeSgkKTtpZihBcnJheS5pc0FycmF5KCQpKXJldHVybiAkLm1hcChGMCk7aWYoJCE9PW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIil7bGV0IFE9e307Zm9yKGxldFtKLFldb2YgT2JqZWN0LmVudHJpZXMoJCkpUVtGMChKKV09RjAoWSk7cmV0dXJuIFF9cmV0dXJuICR9aW1wb3J0e3JlYWRGaWxlIGFzIEJnfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e29uY2UgYXMgVlp9ZnJvbVwiZXZlbnRzXCI7aW1wb3J0e2NyZWF0ZVdyaXRlU3RyZWFtIGFzIG95fWZyb21cImZzXCI7aW1wb3J0e29wZW4gYXMgQloscmVhZGRpciBhcyBrSCxyZWFscGF0aCBhcyB0eSxzdGF0IGFzIGF5fWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2pvaW4gYXMgdDd9ZnJvbVwicGF0aFwiO2ltcG9ydHtleGVjRmlsZSBhcyBpeX1mcm9tXCJjaGlsZF9wcm9jZXNzXCI7aW1wb3J0e3Byb21pc2lmeSBhcyBueX1mcm9tXCJ1dGlsXCI7dmFyIHJ5PW55KGl5KTthc3luYyBmdW5jdGlvbiBjNCgkKXt0cnl7bGV0e3N0ZG91dDpRfT1hd2FpdCByeShcImdpdFwiLFtcIndvcmt0cmVlXCIsXCJsaXN0XCIsXCItLXBvcmNlbGFpblwiXSx7Y3dkOiQsdGltZW91dDo1MDAwfSk7aWYoIVEpcmV0dXJuW107cmV0dXJuIFEuc3BsaXQoYFxuYCkuZmlsdGVyKChKKT0+Si5zdGFydHNXaXRoKFwid29ya3RyZWUgXCIpKS5tYXAoKEopPT5KLnNsaWNlKDkpLm5vcm1hbGl6ZShcIk5GQ1wiKSl9Y2F0Y2h7cmV0dXJuW119fWZ1bmN0aW9uIFNIKCQpe2xldCBRPTA7Zm9yKGxldCBKPTA7SjwkLmxlbmd0aDtKKyspUT0oUTw8NSktUSskLmNoYXJDb2RlQXQoSil8MDtyZXR1cm4gUX12YXIgVTQ9NjU1MzYsc3k9L15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2k7ZnVuY3Rpb24gTCQoJCl7aWYodHlwZW9mICQhPT1cInN0cmluZ1wiKXJldHVybiBudWxsO3JldHVybiBzeS50ZXN0KCQpPyQ6bnVsbH1mdW5jdGlvbiB6WigkKXtpZighJC5pbmNsdWRlcyhcIlxcXFxcIikpcmV0dXJuICQ7dHJ5e3JldHVybiBKU09OLnBhcnNlKGBcIiR7JH1cImApfWNhdGNoe3JldHVybiAkfX1mdW5jdGlvbiB2NSgkLFEpe2xldCBKPVtgXCIke1F9XCI6XCJgLGBcIiR7UX1cIjogXCJgXTtmb3IobGV0IFkgb2YgSil7bGV0IFg9JC5pbmRleE9mKFkpO2lmKFg8MCljb250aW51ZTtsZXQgVz1YK1kubGVuZ3RoLEc9Vzt3aGlsZShHPCQubGVuZ3RoKXtpZigkW0ddPT09XCJcXFxcXCIpe0crPTI7Y29udGludWV9aWYoJFtHXT09PSdcIicpcmV0dXJuIHpaKCQuc2xpY2UoVyxHKSk7RysrfX1yZXR1cm59ZnVuY3Rpb24gTDYoJCxRKXtsZXQgSj1bYFwiJHtRfVwiOlwiYCxgXCIke1F9XCI6IFwiYF0sWSxYPS0xO2ZvcihsZXQgVyBvZiBKKXtsZXQgRz0wO3doaWxlKCEwKXtsZXQgVT0kLmluZGV4T2YoVyxHKTtpZihVPDApYnJlYWs7bGV0IEg9VStXLmxlbmd0aCxxPUg7d2hpbGUocTwkLmxlbmd0aCl7aWYoJFtxXT09PVwiXFxcXFwiKXtxKz0yO2NvbnRpbnVlfWlmKCRbcV09PT0nXCInKXtpZihVPlgpWT16WigkLnNsaWNlKEgscSkpLFg9VTticmVha31xKyt9Rz1xKzF9fXJldHVybiBZfWFzeW5jIGZ1bmN0aW9uIHM3KCQsUSl7bGV0IEo9b3koJCx7bW9kZTozODR9KTt0cnl7Zm9yKGxldCBZIG9mIFEpaWYoIUoud3JpdGUoSlNPTi5zdHJpbmdpZnkoWSkrYFxuYCkpYXdhaXQgVlooSixcImRyYWluXCIpO0ouZW5kKCksYXdhaXQgVlooSixcImZpbmlzaFwiKX1jYXRjaChZKXt0aHJvdyBKLmRlc3Ryb3koKSxZfX1mdW5jdGlvbiBDNSgkKXtsZXQgUT0wLEo9e2NvbW1hbmRGYWxsYmFjazpcIlwifTt3aGlsZShRPCQubGVuZ3RoKXtsZXQgWT0kLmluZGV4T2YoYFxuYCxRKSxYPVk+PTA/JC5zbGljZShRLFkpOiQuc2xpY2UoUSk7aWYoUT1ZPj0wP1krMTokLmxlbmd0aCwhWC5pbmNsdWRlcygnXCJ0eXBlXCI6XCJ1c2VyXCInKSYmIVguaW5jbHVkZXMoJ1widHlwZVwiOiBcInVzZXJcIicpKWNvbnRpbnVlO2lmKFguaW5jbHVkZXMoJ1widG9vbF9yZXN1bHRcIicpKWNvbnRpbnVlO2lmKFguaW5jbHVkZXMoJ1wiaXNNZXRhXCI6dHJ1ZScpfHxYLmluY2x1ZGVzKCdcImlzTWV0YVwiOiB0cnVlJykpY29udGludWU7aWYoWC5pbmNsdWRlcygnXCJpc0NvbXBhY3RTdW1tYXJ5XCI6dHJ1ZScpfHxYLmluY2x1ZGVzKCdcImlzQ29tcGFjdFN1bW1hcnlcIjogdHJ1ZScpKWNvbnRpbnVlO3RyeXtsZXQgVz1KU09OLnBhcnNlKFgpLEc9eTkoVyxKKTtpZihHIT09dm9pZCAwKXJldHVybiBHfWNhdGNoe2NvbnRpbnVlfX1yZXR1cm4gSi5jb21tYW5kRmFsbGJhY2t9ZnVuY3Rpb24gTlooJCl7bGV0IFE9e2NvbW1hbmRGYWxsYmFjazpcIlwifTtmb3IobGV0IEogb2YgJCl7aWYodHlwZW9mIEohPT1cIm9iamVjdFwifHxKPT09bnVsbCljb250aW51ZTtsZXQgWT15OShKLFEpO2lmKFkhPT12b2lkIDApcmV0dXJuIFl9cmV0dXJuIFEuY29tbWFuZEZhbGxiYWNrfWFzeW5jIGZ1bmN0aW9uIFQ1KCQpe3RyeXtsZXQgUT1hd2FpdCBCWigkLFwiclwiKTt0cnl7bGV0IEo9YXdhaXQgUS5zdGF0KCksWT1CdWZmZXIuYWxsb2NVbnNhZmUoVTQpLFg9YXdhaXQgUS5yZWFkKFksMCxVNCwwKTtpZihYLmJ5dGVzUmVhZD09PTApcmV0dXJuIG51bGw7bGV0IFc9WS50b1N0cmluZyhcInV0ZjhcIiwwLFguYnl0ZXNSZWFkKSxHPU1hdGgubWF4KDAsSi5zaXplLVU0KSxVPVc7aWYoRz4wKXtsZXQgSD1hd2FpdCBRLnJlYWQoWSwwLFU0LEcpO1U9WS50b1N0cmluZyhcInV0ZjhcIiwwLEguYnl0ZXNSZWFkKX1yZXR1cm57bXRpbWU6Si5tdGltZS5nZXRUaW1lKCksc2l6ZTpKLnNpemUsaGVhZDpXLHRhaWw6VX19ZmluYWxseXthd2FpdCBRLmNsb3NlKCl9fWNhdGNoe3JldHVybiBudWxsfX12YXIgdjg9MjAwO2Z1bmN0aW9uIGV5KCQpe3JldHVybiBNYXRoLmFicyhTSCgkKSkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIE0wKCQpe2xldCBRPSQucmVwbGFjZSgvW15hLXpBLVowLTldL2csXCItXCIpO2lmKFEubGVuZ3RoPD12OClyZXR1cm4gUTtyZXR1cm5gJHtRLnNsaWNlKDAsdjgpfS0ke2V5KCQpfWB9ZnVuY3Rpb24gSDQoKXtyZXR1cm4gdDcocDYoKSxcInByb2plY3RzXCIpfWZ1bmN0aW9uICRnKCQpe3JldHVybiB0NyhINCgpLE0wKCQpKX1hc3luYyBmdW5jdGlvbiBMMSgkKXt0cnl7cmV0dXJuKGF3YWl0IHR5KCQpKS5ub3JtYWxpemUoXCJORkNcIil9Y2F0Y2h7cmV0dXJuICQubm9ybWFsaXplKFwiTkZDXCIpfX1hc3luYyBmdW5jdGlvbiBNNigkKXtsZXQgUT0kZygkKSxKPVtdO3RyeXthd2FpdCBrSChRKSxKLnB1c2goUSl9Y2F0Y2h7fWxldCBZPU0wKCQpO2lmKFkubGVuZ3RoPD12OClyZXR1cm4gSjtsZXQgWD1ZLnNsaWNlKDAsdjgpK1wiLVwiLFc9SDQoKTt0cnl7Zm9yKGxldCBHIG9mIGF3YWl0IGtIKFcse3dpdGhGaWxlVHlwZXM6ITB9KSl7aWYoIUcuaXNEaXJlY3RvcnkoKXx8IUcubmFtZS5zdGFydHNXaXRoKFgpKWNvbnRpbnVlO2xldCBVPXQ3KFcsRy5uYW1lKTtpZihVIT09USlKLnB1c2goVSl9fWNhdGNoe31yZXR1cm4gSn1hc3luYyBmdW5jdGlvbiBqMSgkLFEpe2xldCBKPWAkeyR9Lmpzb25sYDthc3luYyBmdW5jdGlvbiBZKEcsVSl7bGV0IEg9dDcoRyxKKTt0cnl7bGV0IHE9YXdhaXQgYXkoSCk7aWYocS5zaXplPjApcmV0dXJue2ZpbGVQYXRoOkgscHJvamVjdFBhdGg6VSxmaWxlU2l6ZTpxLnNpemV9fWNhdGNoe31yZXR1cm59aWYoUSl7bGV0IEc9YXdhaXQgTDEoUSk7Zm9yKGxldCBIIG9mIGF3YWl0IE02KEcpKXtsZXQgcT1hd2FpdCBZKEgsRyk7aWYocSlyZXR1cm4gcX1sZXQgVTt0cnl7VT1hd2FpdCBjNChHKX1jYXRjaHtVPVtdfWZvcihsZXQgSCBvZiBVKXtpZihIPT09Ryljb250aW51ZTtmb3IobGV0IHEgb2YgYXdhaXQgTTYoSCkpe2xldCBWPWF3YWl0IFkocSxIKTtpZihWKXJldHVybiBWfX1yZXR1cm59bGV0IFg9SDQoKSxXO3RyeXtXPWF3YWl0IGtIKFgpfWNhdGNoe3JldHVybn1mb3IobGV0IEcgb2YgVyl7bGV0IFU9YXdhaXQgWSh0NyhYLEcpLHZvaWQgMCk7aWYoVSlyZXR1cm4gVX1yZXR1cm59dmFyIFFnPTEwNDg1NzYsd1o9NTI0Mjg4MCxKZztmdW5jdGlvbiBYZygpe3JldHVybiBKZz8/PUJ1ZmZlci5mcm9tKCdcImNvbXBhY3RfYm91bmRhcnlcIicpfWZ1bmN0aW9uIE9aKCQpe3RyeXtsZXQgUT1KU09OLnBhcnNlKCQpO2lmKFEudHlwZSE9PVwic3lzdGVtXCJ8fFEuc3VidHlwZSE9PVwiY29tcGFjdF9ib3VuZGFyeVwiKXJldHVybiBudWxsO3JldHVybntoYXNQcmVzZXJ2ZWRTZWdtZW50OkJvb2xlYW4oUS5jb21wYWN0TWV0YWRhdGE/LnByZXNlcnZlZFNlZ21lbnR8fFEuY29tcGFjdE1ldGFkYXRhPy5wcmVzZXJ2ZWRNZXNzYWdlcyl9fWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBaMCgkLFEsSixZKXtsZXQgWD1ZLUo7aWYoWDw9MClyZXR1cm47aWYoJC5sZW4rWD4kLmJ1Zi5sZW5ndGgpe2xldCBXPUJ1ZmZlci5hbGxvY1Vuc2FmZShNYXRoLm1pbihNYXRoLm1heCgkLmJ1Zi5sZW5ndGgqMiwkLmxlbitYKSwkLmNhcCkpOyQuYnVmLmNvcHkoVywwLDAsJC5sZW4pLCQuYnVmPVd9US5jb3B5KCQuYnVmLCQubGVuLEosWSksJC5sZW4rPVh9ZnVuY3Rpb24gUzUoJCxRLEosWSl7cmV0dXJuIFktSj49US5sZW5ndGgmJiQuY29tcGFyZShRLDAsUS5sZW5ndGgsSixKK1EubGVuZ3RoKT09PTB9dmFyIGs1PUJ1ZmZlci5mcm9tKCd7XCJ0eXBlXCI6XCJhdHRyaWJ1dGlvbi1zbmFwc2hvdFwiJyksWWc9QnVmZmVyLmZyb20oJ3tcInR5cGVcIjpcInN5c3RlbVwiJyksYTc9MTAsV2c9QnVmZmVyLmZyb20oW2E3XSksR2c9MjU2O2Z1bmN0aW9uIFVnKCQsUSxKKXtpZigkLnN0cmFkZGxlU25hcENhcnJ5TGVuPTAsJC5zdHJhZGRsZVNuYXBUYWlsRW5kPTAsJC5jYXJyeUxlbj09PTApcmV0dXJuIDA7bGV0IFk9JC5jYXJyeUJ1ZixYPVEuaW5kZXhPZihhNyk7aWYoWD09PS0xfHxYPj1KKXJldHVybiAwO2xldCBXPVgrMTtpZihTNShZLGs1LDAsJC5jYXJyeUxlbikpJC5zdHJhZGRsZVNuYXBDYXJyeUxlbj0kLmNhcnJ5TGVuLCQuc3RyYWRkbGVTbmFwVGFpbEVuZD1XLCQubGFzdFNuYXBTcmM9bnVsbDtlbHNlIGlmKCQuY2FycnlMZW48azUubGVuZ3RoKXJldHVybiAwO2Vsc2V7aWYoUzUoWSxZZywwLCQuY2FycnlMZW4pKXtsZXQgRz1PWihZLnRvU3RyaW5nKFwidXRmLThcIiwwLCQuY2FycnlMZW4pK1EudG9TdHJpbmcoXCJ1dGYtOFwiLDAsWCkpO2lmKEc/Lmhhc1ByZXNlcnZlZFNlZ21lbnQpJC5oYXNQcmVzZXJ2ZWRTZWdtZW50PSEwO2Vsc2UgaWYoRykkLm91dC5sZW49MCwkLmJvdW5kYXJ5U3RhcnRPZmZzZXQ9JC5idWZGaWxlT2ZmLCQuaGFzUHJlc2VydmVkU2VnbWVudD0hMSwkLmxhc3RTbmFwU3JjPW51bGx9WjAoJC5vdXQsWSwwLCQuY2FycnlMZW4pLFowKCQub3V0LFEsMCxXKX1yZXR1cm4gJC5idWZGaWxlT2ZmKz0kLmNhcnJ5TGVuK1csJC5jYXJyeUxlbj0wLFd9ZnVuY3Rpb24gSGcoJCxRLEope2xldCBZPVEuaW5kZXhPZihKKSxYPTAsVz0wLEc9LTEsVT0tMSxIPVEuaW5kZXhPZihhNyk7d2hpbGUoSCE9PS0xKXtsZXQgcT1IKzE7aWYoWSE9PS0xJiZZPFcpWT1RLmluZGV4T2YoSixXKTtpZihTNShRLGs1LFcscSkpWjAoJC5vdXQsUSxYLFcpLEc9VyxVPXEsWD1xO2Vsc2UgaWYoWT49VyYmWTxNYXRoLm1pbihXK0dnLHEpKXtsZXQgVj1PWihRLnRvU3RyaW5nKFwidXRmLThcIixXLEgpKTtpZihWPy5oYXNQcmVzZXJ2ZWRTZWdtZW50KSQuaGFzUHJlc2VydmVkU2VnbWVudD0hMDtlbHNlIGlmKFYpJC5vdXQubGVuPTAsJC5ib3VuZGFyeVN0YXJ0T2Zmc2V0PSQuYnVmRmlsZU9mZitXLCQuaGFzUHJlc2VydmVkU2VnbWVudD0hMSwkLmxhc3RTbmFwU3JjPW51bGwsRz0tMSwkLnN0cmFkZGxlU25hcENhcnJ5TGVuPTAsWD1XO1k9US5pbmRleE9mKEosWStKLmxlbmd0aCl9Vz1xLEg9US5pbmRleE9mKGE3LFcpfXJldHVybiBaMCgkLm91dCxRLFgsVykse2xhc3RTbmFwU3RhcnQ6RyxsYXN0U25hcEVuZDpVLHRyYWlsU3RhcnQ6V319ZnVuY3Rpb24gS2coJCxRLEosWSxYKXtpZihZIT09LTEpe2lmKCQubGFzdFNuYXBMZW49WC1ZLCQubGFzdFNuYXBCdWY9PT12b2lkIDB8fCQubGFzdFNuYXBMZW4+JC5sYXN0U25hcEJ1Zi5sZW5ndGgpJC5sYXN0U25hcEJ1Zj1CdWZmZXIuYWxsb2NVbnNhZmUoJC5sYXN0U25hcExlbik7US5jb3B5KCQubGFzdFNuYXBCdWYsMCxZLFgpLCQubGFzdFNuYXBTcmM9JC5sYXN0U25hcEJ1Zn1lbHNlIGlmKCQuc3RyYWRkbGVTbmFwQ2FycnlMZW4+MCl7aWYoJC5sYXN0U25hcExlbj0kLnN0cmFkZGxlU25hcENhcnJ5TGVuKyQuc3RyYWRkbGVTbmFwVGFpbEVuZCwkLmxhc3RTbmFwQnVmPT09dm9pZCAwfHwkLmxhc3RTbmFwTGVuPiQubGFzdFNuYXBCdWYubGVuZ3RoKSQubGFzdFNuYXBCdWY9QnVmZmVyLmFsbG9jVW5zYWZlKCQubGFzdFNuYXBMZW4pOyQuY2FycnlCdWYuY29weSgkLmxhc3RTbmFwQnVmLDAsMCwkLnN0cmFkZGxlU25hcENhcnJ5TGVuKSxKLmNvcHkoJC5sYXN0U25hcEJ1ZiwkLnN0cmFkZGxlU25hcENhcnJ5TGVuLDAsJC5zdHJhZGRsZVNuYXBUYWlsRW5kKSwkLmxhc3RTbmFwU3JjPSQubGFzdFNuYXBCdWZ9fWZ1bmN0aW9uIHFnKCQsUSxKKXtpZigkLmNhcnJ5TGVuPVEubGVuZ3RoLUosJC5jYXJyeUxlbj4wKXtpZigkLmNhcnJ5QnVmPT09dm9pZCAwfHwkLmNhcnJ5TGVuPiQuY2FycnlCdWYubGVuZ3RoKSQuY2FycnlCdWY9QnVmZmVyLmFsbG9jVW5zYWZlKCQuY2FycnlMZW4pO1EuY29weSgkLmNhcnJ5QnVmLDAsSixRLmxlbmd0aCl9fWZ1bmN0aW9uIFZnKCQpe2lmKCQuY2FycnlMZW4+MCl7bGV0IFE9JC5jYXJyeUJ1ZjtpZihTNShRLGs1LDAsJC5jYXJyeUxlbikpJC5sYXN0U25hcFNyYz1RLCQubGFzdFNuYXBMZW49JC5jYXJyeUxlbjtlbHNlIFowKCQub3V0LFEsMCwkLmNhcnJ5TGVuKX1pZigkLmxhc3RTbmFwU3JjKXtpZigkLm91dC5sZW4+MCYmJC5vdXQuYnVmWyQub3V0Lmxlbi0xXSE9PWE3KVowKCQub3V0LFdnLDAsMSk7WjAoJC5vdXQsJC5sYXN0U25hcFNyYywwLCQubGFzdFNuYXBMZW4pfX1hc3luYyBmdW5jdGlvbiBEWigkLFEpe2xldCBKPVhnKCksWT1RZyxYPXtvdXQ6e2J1ZjpCdWZmZXIuYWxsb2NVbnNhZmUoTWF0aC5taW4oUSw4Mzg4NjA4KSksbGVuOjAsY2FwOlErMX0sYm91bmRhcnlTdGFydE9mZnNldDowLGhhc1ByZXNlcnZlZFNlZ21lbnQ6ITEsbGFzdFNuYXBTcmM6bnVsbCxsYXN0U25hcExlbjowLGxhc3RTbmFwQnVmOnZvaWQgMCxidWZGaWxlT2ZmOjAsY2FycnlMZW46MCxjYXJyeUJ1Zjp2b2lkIDAsc3RyYWRkbGVTbmFwQ2FycnlMZW46MCxzdHJhZGRsZVNuYXBUYWlsRW5kOjB9LFc9QnVmZmVyLmFsbG9jVW5zYWZlKFkpLEc9YXdhaXQgQlooJCxcInJcIik7dHJ5e2xldCBVPTA7d2hpbGUoVTxRKXtsZXR7Ynl0ZXNSZWFkOkh9PWF3YWl0IEcucmVhZChXLDAsTWF0aC5taW4oWSxRLVUpLFUpO2lmKEg9PT0wKWJyZWFrO1UrPUg7bGV0IHE9VWcoWCxXLEgpLFY7aWYoWC5jYXJyeUxlbj4wKXtsZXQgej1YLmNhcnJ5TGVuKyhILXEpO1Y9QnVmZmVyLmFsbG9jVW5zYWZlKHopLFguY2FycnlCdWYuY29weShWLDAsMCxYLmNhcnJ5TGVuKSxXLmNvcHkoVixYLmNhcnJ5TGVuLHEsSCl9ZWxzZSBWPVcuc3ViYXJyYXkocSxIKTtsZXQgQj1IZyhYLFYsSik7S2coWCxWLFcsQi5sYXN0U25hcFN0YXJ0LEIubGFzdFNuYXBFbmQpLHFnKFgsVixCLnRyYWlsU3RhcnQpLFguYnVmRmlsZU9mZis9Qi50cmFpbFN0YXJ0fVZnKFgpfWZpbmFsbHl7YXdhaXQgRy5jbG9zZSgpfXJldHVybntib3VuZGFyeVN0YXJ0T2Zmc2V0OlguYm91bmRhcnlTdGFydE9mZnNldCxwb3N0Qm91bmRhcnlCdWY6WC5vdXQuYnVmLnN1YmFycmF5KDAsWC5vdXQubGVuKSxoYXNQcmVzZXJ2ZWRTZWdtZW50OlguaGFzUHJlc2VydmVkU2VnbWVudH19YXN5bmMgZnVuY3Rpb24gemcoJCxRKXt0cnl7aWYoUT53WiYmIVIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX0RJU0FCTEVfUFJFQ09NUEFDVF9TS0lQKSlyZXR1cm4oYXdhaXQgRFooJCxRKSkucG9zdEJvdW5kYXJ5QnVmO3JldHVybiBhd2FpdCBCZygkKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gTmcoJCl7bGV0IFE9W10sSj0xMCxZPSQubGVuZ3RoLFg9MDt3aGlsZShYPFkpe2xldCBXPSQuaW5kZXhPZigxMCxYKTtpZihXPT09LTEpVz1ZO2xldCBHPVg7d2hpbGUoRzxXJiYkW0ddPD0zMilHKys7aWYoWD1XKzEsRz49Vyljb250aW51ZTtsZXQgVT0kLnRvU3RyaW5nKFwidXRmLThcIixHLFcpO3RyeXtsZXQgSD1sJChVKSxxPUgudHlwZTtpZigocT09PVwidXNlclwifHxxPT09XCJhc3Npc3RhbnRcInx8cT09PVwicHJvZ3Jlc3NcInx8cT09PVwic3lzdGVtXCJ8fHE9PT1cImF0dGFjaG1lbnRcIikmJnR5cGVvZiBILnV1aWQ9PT1cInN0cmluZ1wiKVEucHVzaChIKX1jYXRjaHt9fXJldHVybiBRfWZ1bmN0aW9uIHdnKCQpe2xldCBRPW5ldyBNYXA7Zm9yKGxldCB6IG9mICQpUS5zZXQoei51dWlkLHopO2ZvcihsZXQgeiBvZiBRLnZhbHVlcygpKXtpZih6LnR5cGUhPT1cInN5c3RlbVwifHx6LnN1YnR5cGUhPT1cImNvbXBhY3RfYm91bmRhcnlcIiljb250aW51ZTtsZXQgTj16LmNvbXBhY3RNZXRhZGF0YT8ucHJlc2VydmVkTWVzc2FnZXMsdz16LmNvbXBhY3RNZXRhZGF0YT8ucHJlc2VydmVkU2VnbWVudDtpZihOKXtpZihOLnV1aWRzLmxlbmd0aD09PTB8fE4udXVpZHMuc29tZSgoaik9PiFRLmhhcyhqKSkpY29udGludWU7bGV0IE89Ti5hbmNob3JVdWlkO2ZvcihsZXQgaiBvZiBOLnV1aWRzKXtsZXQgQT1RLmdldChqKTtRLnNldChqLHsuLi5BLHBhcmVudFV1aWQ6T30pLE89an1sZXQgRD1OLnV1aWRzWzBdLE09Ti51dWlkcy5hdCgtMSk7Zm9yKGxldFtqLEFdb2YgUSlpZihBLnBhcmVudFV1aWQ9PT1OLmFuY2hvclV1aWQmJmohPT1EKVEuc2V0KGosey4uLkEscGFyZW50VXVpZDpNfSl9ZWxzZSBpZih3KXtsZXQgTz1RLmdldCh3LmhlYWRVdWlkKTtpZihPKVEuc2V0KHcuaGVhZFV1aWQsey4uLk8scGFyZW50VXVpZDp3LmFuY2hvclV1aWR9KTtmb3IobGV0W0QsTV1vZiBRKWlmKE0ucGFyZW50VXVpZD09PXcuYW5jaG9yVXVpZCYmRCE9PXcuaGVhZFV1aWQpUS5zZXQoRCx7Li4uTSxwYXJlbnRVdWlkOncudGFpbFV1aWR9KX19bGV0IEo9bmV3IE1hcDtmb3IobGV0IHo9MDt6PCQubGVuZ3RoO3orKylKLnNldCgkW3pdLnV1aWQseik7bGV0IFk9bmV3IFNldDtmb3IobGV0IHogb2YgUS52YWx1ZXMoKSlpZih6LnBhcmVudFV1aWQpWS5hZGQoei5wYXJlbnRVdWlkKTtsZXQgWD1bLi4uUS52YWx1ZXMoKV0uZmlsdGVyKCh6KT0+IVkuaGFzKHoudXVpZCkpLFc9W107Zm9yKGxldCB6IG9mIFgpe2xldCBOPXosdz1uZXcgU2V0O3doaWxlKE4pe2lmKHcuaGFzKE4udXVpZCkpYnJlYWs7aWYody5hZGQoTi51dWlkKSxOLnR5cGU9PT1cInVzZXJcInx8Ti50eXBlPT09XCJhc3Npc3RhbnRcIil7Vy5wdXNoKE4pO2JyZWFrfU49Ti5wYXJlbnRVdWlkP1EuZ2V0KE4ucGFyZW50VXVpZCk6dm9pZCAwfX1pZihXLmxlbmd0aD09PTApcmV0dXJuW107bGV0IEc9Vy5maWx0ZXIoKHopPT4hei5pc1NpZGVjaGFpbiYmIXoudGVhbU5hbWUmJiF6LmlzTWV0YSksVT0oeik9PnoucmVkdWNlKChOLHcpPT4oSi5nZXQody51dWlkKT8/LTEpPihKLmdldChOLnV1aWQpPz8tMSk/dzpOKSxIPUcubGVuZ3RoPjA/VShHKTpVKFcpLHE9W10sVj1uZXcgU2V0LEI9US5nZXQoSC51dWlkKTt3aGlsZShCKXtpZihWLmhhcyhCLnV1aWQpKWJyZWFrO1YuYWRkKEIudXVpZCkscS5wdXNoKEIpLEI9Qi5wYXJlbnRVdWlkP1EuZ2V0KEIucGFyZW50VXVpZCk6dm9pZCAwfXJldHVybiBxLnJldmVyc2UoKSxEZyhRLHEsVil9ZnVuY3Rpb24gdkgoJCl7aWYoJC50eXBlIT09XCJhc3Npc3RhbnRcIilyZXR1cm47bGV0IFE9JC5tZXNzYWdlO2lmKHR5cGVvZiBRIT09XCJvYmplY3RcInx8UT09PW51bGwpcmV0dXJuO2xldCBKPVEuaWQ7cmV0dXJuIHR5cGVvZiBKPT09XCJzdHJpbmdcIj9KOnZvaWQgMH1mdW5jdGlvbiBPZygkKXtpZigkLnR5cGUhPT1cInVzZXJcInx8ISQucGFyZW50VXVpZClyZXR1cm4hMTtsZXQgUT0kLm1lc3NhZ2U7aWYodHlwZW9mIFEhPT1cIm9iamVjdFwifHxRPT09bnVsbClyZXR1cm4hMTtsZXQgSj1RLmNvbnRlbnQ7aWYoIUFycmF5LmlzQXJyYXkoSikpcmV0dXJuITE7cmV0dXJuIEouc29tZSgoWSk9PnR5cGVvZiBZPT09XCJvYmplY3RcIiYmWSE9PW51bGwmJlkudHlwZT09PVwidG9vbF9yZXN1bHRcIil9ZnVuY3Rpb24gRGcoJCxRLEope2xldCBZPVEuZmlsdGVyKChCKT0+Qi50eXBlPT09XCJhc3Npc3RhbnRcIik7aWYoWS5sZW5ndGg9PT0wKXJldHVybiBRO2xldCBYPW5ldyBNYXA7Zm9yKGxldCBCIG9mIFkpe2xldCB6PXZIKEIpO2lmKHopWC5zZXQoeixCKX1sZXQgVz1uZXcgTWFwLEc9bmV3IE1hcDtmb3IobGV0IEIgb2YgJC52YWx1ZXMoKSl7bGV0IHo9dkgoQik7aWYoeil7bGV0IE49Vy5nZXQoeik7aWYoTilOLnB1c2goQik7ZWxzZSBXLnNldCh6LFtCXSl9ZWxzZSBpZihPZyhCKSl7bGV0IE49Qi5wYXJlbnRVdWlkLHc9Ry5nZXQoTik7aWYodyl3LnB1c2goQik7ZWxzZSBHLnNldChOLFtCXSl9fWxldCBVPW5ldyBTZXQsSD1uZXcgTWFwLHE9MDtmb3IobGV0IEIgb2YgWSl7bGV0IHo9dkgoQik7aWYoIXp8fFUuaGFzKHopKWNvbnRpbnVlO1UuYWRkKHopO2xldCBOPVcuZ2V0KHopPz9bQl0sdz1OLmZpbHRlcigoQSk9PiFKLmhhcyhBLnV1aWQpKSxPPVtdO2ZvcihsZXQgQSBvZiBOKXtsZXQgaz1HLmdldChBLnV1aWQpO2lmKCFrKWNvbnRpbnVlO2ZvcihsZXQgdSBvZiBrKWlmKCFKLmhhcyh1LnV1aWQpKU8ucHVzaCh1KX1pZih3Lmxlbmd0aD09PTAmJk8ubGVuZ3RoPT09MCljb250aW51ZTtsZXQgRD0oQSxrKT0+KEEudGltZXN0YW1wPz9cIlwiKS5sb2NhbGVDb21wYXJlKGsudGltZXN0YW1wPz9cIlwiKTt3LnNvcnQoRCksTy5zb3J0KEQpO2xldCBNPVguZ2V0KHopLGo9Wy4uLncsLi4uT107Zm9yKGxldCBBIG9mIGopSi5hZGQoQS51dWlkKTtxKz1qLmxlbmd0aCxILnNldChNLnV1aWQsail9aWYocT09PTApcmV0dXJuIFE7bGV0IFY9W107Zm9yKGxldCBCIG9mIFEpe1YucHVzaChCKTtsZXQgej1ILmdldChCLnV1aWQpO2lmKHopVi5wdXNoKC4uLnopfXJldHVybiBWfWZ1bmN0aW9uIEZnKCQsUSl7aWYoJC50eXBlPT09XCJ1c2VyXCJ8fCQudHlwZT09PVwiYXNzaXN0YW50XCIpO2Vsc2UgaWYoJC50eXBlPT09XCJzeXN0ZW1cIiYmUSk7ZWxzZSByZXR1cm4hMTtpZigkLmlzTWV0YSlyZXR1cm4hMTtpZigkLmlzU2lkZWNoYWluKXJldHVybiExO2lmKCQudGVhbU5hbWUpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQ0goJCl7cmV0dXJue3R5cGU6JC50eXBlLHV1aWQ6JC51dWlkLHNlc3Npb25faWQ6JC5zZXNzaW9uSWQsbWVzc2FnZTokLm1lc3NhZ2UscGFyZW50X3Rvb2xfdXNlX2lkOm51bGwsdGltZXN0YW1wOiQudGltZXN0YW1wfX1mdW5jdGlvbiBUSCgkLFEpe2xldCBKPVE/Lm9mZnNldD8/MDtpZihRPy5saW1pdCE9PXZvaWQgMCYmUS5saW1pdD4wKXJldHVybiAkLnNsaWNlKEosSitRLmxpbWl0KTtpZihKPjApcmV0dXJuICQuc2xpY2UoSik7cmV0dXJuICR9ZnVuY3Rpb24gRlooJCxRKXtsZXQgSj1bXTtmb3IobGV0IFkgb2YgJCl7aWYodHlwZW9mIFkhPT1cIm9iamVjdFwifHxZPT09bnVsbCljb250aW51ZTtsZXQgWD1ZLFc9WC50eXBlO2lmKChXPT09XCJ1c2VyXCJ8fFc9PT1cImFzc2lzdGFudFwifHxXPT09XCJwcm9ncmVzc1wifHxXPT09XCJzeXN0ZW1cInx8Vz09PVwiYXR0YWNobWVudFwiKSYmdHlwZW9mIFgudXVpZD09PVwic3RyaW5nXCIpSi5wdXNoKFgpfXJldHVybiBaWihKLFEpfWZ1bmN0aW9uIFpaKCQsUSl7bGV0IEo9d2coJCksWT1RPy5pbmNsdWRlU3lzdGVtTWVzc2FnZXM/PyExLFc9Si5maWx0ZXIoKEcpPT5GZyhHLFkpKS5tYXAoQ0gpO3JldHVybiBUSChXLFEpfWFzeW5jIGZ1bmN0aW9uIE1aKCQsUSl7aWYoIUwkKCQpKXJldHVybltdO2xldCBKPWF3YWl0IGoxKCQsUT8uZGlyKTtpZighSilyZXR1cm5bXTtsZXQgWT1hd2FpdCB6ZyhKLmZpbGVQYXRoLEouZmlsZVNpemUpO2lmKCFZKXJldHVybltdO3JldHVybiBaWihOZyhZKSxRKX1pbXBvcnR7cmVhZGRpciBhcyB4SCxzdGF0IGFzIFpnfWZyb21cImZzL3Byb21pc2VzXCI7aW1wb3J0e2Jhc2VuYW1lIGFzIE1nLGpvaW4gYXMgZkh9ZnJvbVwicGF0aFwiO2Z1bmN0aW9uIEM4KCQsUSxKKXtsZXR7aGVhZDpZLHRhaWw6WCxtdGltZTpXLHNpemU6R309USxVPVkuaW5kZXhPZihgXG5gKSxIPVU+PTA/WS5zbGljZSgwLFUpOlk7aWYoSC5pbmNsdWRlcygnXCJpc1NpZGVjaGFpblwiOnRydWUnKXx8SC5pbmNsdWRlcygnXCJpc1NpZGVjaGFpblwiOiB0cnVlJykpcmV0dXJuIG51bGw7bGV0IHE9TDYoWCxcImN1c3RvbVRpdGxlXCIpfHxMNihZLFwiY3VzdG9tVGl0bGVcIil8fEw2KFgsXCJhaVRpdGxlXCIpfHxMNihZLFwiYWlUaXRsZVwiKXx8dm9pZCAwLFY9QzUoWSl8fHZvaWQgMCxCPXY1KFksXCJ0aW1lc3RhbXBcIiksejtpZihCKXtsZXQgaj1EYXRlLnBhcnNlKEIpO2lmKCFOdW1iZXIuaXNOYU4oaikpej1qfWxldCBOPXF8fEw2KFgsXCJsYXN0UHJvbXB0XCIpfHxMNihYLFwic3VtbWFyeVwiKXx8VjtpZighTilyZXR1cm4gbnVsbDtsZXQgdz1MNihYLFwiZ2l0QnJhbmNoXCIpfHx2NShZLFwiZ2l0QnJhbmNoXCIpfHx2b2lkIDAsTz12NShZLFwiY3dkXCIpfHxKfHx2b2lkIDAsRD1YLnNwbGl0KGBcbmApLmZpbmRMYXN0KChqKT0+ai5pbmNsdWRlcygnXCJ0eXBlXCI6XCJ0YWdcIicpJiZqLmluY2x1ZGVzKCdcInRhZ1wiOlwiJykpLE09RD9MNihELFwidGFnXCIpfHx2b2lkIDA6dm9pZCAwO3JldHVybntzZXNzaW9uSWQ6JCxzdW1tYXJ5Ok4sbGFzdE1vZGlmaWVkOlcsZmlsZVNpemU6RyxjdXN0b21UaXRsZTpxLGZpcnN0UHJvbXB0OlYsZ2l0QnJhbmNoOncsY3dkOk8sdGFnOk0sY3JlYXRlZEF0Onp9fWFzeW5jIGZ1bmN0aW9uIGU3KCQsUSxKKXtsZXQgWTt0cnl7WT1hd2FpdCB4SCgkKX1jYXRjaHtyZXR1cm5bXX1yZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwoWS5tYXAoYXN5bmMoVyk9PntpZighVy5lbmRzV2l0aChcIi5qc29ubFwiKSlyZXR1cm4gbnVsbDtsZXQgRz1MJChXLnNsaWNlKDAsLTYpKTtpZighRylyZXR1cm4gbnVsbDtsZXQgVT1mSCgkLFcpO2lmKCFRKXJldHVybntzZXNzaW9uSWQ6RyxmaWxlUGF0aDpVLG10aW1lOjAscHJvamVjdFBhdGg6Sn07dHJ5e2xldCBIPWF3YWl0IFpnKFUpO3JldHVybntzZXNzaW9uSWQ6RyxmaWxlUGF0aDpVLG10aW1lOkgubXRpbWUuZ2V0VGltZSgpLHByb2plY3RQYXRoOkp9fWNhdGNoe3JldHVybiBudWxsfX0pKSkuZmlsdGVyKChXKT0+VyE9PW51bGwpfWFzeW5jIGZ1bmN0aW9uIExaKCQpe2xldCBRPWF3YWl0IFQ1KCQuZmlsZVBhdGgpO2lmKCFRKXJldHVybiBudWxsO2xldCBKPUM4KCQuc2Vzc2lvbklkLFEsJC5wcm9qZWN0UGF0aCk7aWYoIUopcmV0dXJuIG51bGw7aWYoJC5tdGltZSlKLmxhc3RNb2RpZmllZD0kLm10aW1lO3JldHVybiBKfXZhciBMZz0zMjtmdW5jdGlvbiBqZygkLFEpe2lmKFEubXRpbWUhPT0kLm10aW1lKXJldHVybiBRLm10aW1lLSQubXRpbWU7cmV0dXJuIFEuc2Vzc2lvbklkPCQuc2Vzc2lvbklkPy0xOlEuc2Vzc2lvbklkPiQuc2Vzc2lvbklkPzE6MH1hc3luYyBmdW5jdGlvbiBBZygkLFEsSil7JC5zb3J0KGpnKTtsZXQgWT1bXSxYPVEmJlE+MD9ROjEvMCxXPTAsRz1uZXcgU2V0O2ZvcihsZXQgVT0wO1U8JC5sZW5ndGgmJlkubGVuZ3RoPFg7KXtsZXQgSD1NYXRoLm1pbihVK0xnLCQubGVuZ3RoKSxxPSQuc2xpY2UoVSxIKSxWPWF3YWl0IFByb21pc2UuYWxsKHEubWFwKExaKSk7Zm9yKGxldCBCPTA7QjxWLmxlbmd0aCYmWS5sZW5ndGg8WDtCKyspe1UrKztsZXQgej1WW0JdO2lmKCF6KWNvbnRpbnVlO2lmKEcuaGFzKHouc2Vzc2lvbklkKSljb250aW51ZTtpZihHLmFkZCh6LnNlc3Npb25JZCksVzxKKXtXKys7Y29udGludWV9WS5wdXNoKHopfX1yZXR1cm4gWX1hc3luYyBmdW5jdGlvbiBJZygkKXtsZXQgUT1hd2FpdCBQcm9taXNlLmFsbCgkLm1hcChMWikpLEo9bmV3IE1hcDtmb3IobGV0IFggb2YgUSl7aWYoIVgpY29udGludWU7bGV0IFc9Si5nZXQoWC5zZXNzaW9uSWQpO2lmKCFXfHxYLmxhc3RNb2RpZmllZD5XLmxhc3RNb2RpZmllZClKLnNldChYLnNlc3Npb25JZCxYKX1sZXQgWT1bLi4uSi52YWx1ZXMoKV07cmV0dXJuIFkuc29ydCgoWCxXKT0+Vy5sYXN0TW9kaWZpZWQhPT1YLmxhc3RNb2RpZmllZD9XLmxhc3RNb2RpZmllZC1YLmxhc3RNb2RpZmllZDpXLnNlc3Npb25JZDxYLnNlc3Npb25JZD8tMTpXLnNlc3Npb25JZD5YLnNlc3Npb25JZD8xOjApLFl9YXN5bmMgZnVuY3Rpb24gUmcoJCxRLEope2xldCBZPWF3YWl0IEwxKCQpLFg7aWYoUSl0cnl7WD1hd2FpdCBjNChZKX1jYXRjaHtYPVtdfWVsc2UgWD1bXTtpZihYLmxlbmd0aDw9MSl7bGV0IEI9W107Zm9yKGxldCB6IG9mIGF3YWl0IE02KFkpKUIucHVzaCguLi5hd2FpdCBlNyh6LEosWSkpO3JldHVybiBCfWxldCBXPUg0KCksRz1wcm9jZXNzLnBsYXRmb3JtPT09XCJ3aW4zMlwiLFU9WC5tYXAoKEIpPT57bGV0IHo9TTAoQik7cmV0dXJue3BhdGg6QixwcmVmaXg6Rz96LnRvTG93ZXJDYXNlKCk6en19KTtVLnNvcnQoKEIseik9PnoucHJlZml4Lmxlbmd0aC1CLnByZWZpeC5sZW5ndGgpO2xldCBIO3RyeXtIPWF3YWl0IHhIKFcse3dpdGhGaWxlVHlwZXM6ITB9KX1jYXRjaHtsZXQgQj1bXTtmb3IobGV0IHogb2YgYXdhaXQgTTYoWSkpQi5wdXNoKC4uLmF3YWl0IGU3KHosSixZKSk7cmV0dXJuIEJ9bGV0IHE9W10sVj1uZXcgU2V0O2ZvcihsZXQgQiBvZiBhd2FpdCBNNihZKSl7bGV0IHo9TWcoQik7Vi5hZGQoRz96LnRvTG93ZXJDYXNlKCk6eikscS5wdXNoKC4uLmF3YWl0IGU3KEIsSixZKSl9Zm9yKGxldCBCIG9mIEgpe2lmKCFCLmlzRGlyZWN0b3J5KCkpY29udGludWU7bGV0IHo9Rz9CLm5hbWUudG9Mb3dlckNhc2UoKTpCLm5hbWU7aWYoVi5oYXMoeikpY29udGludWU7Zm9yKGxldHtwYXRoOk4scHJlZml4Ond9b2YgVSlpZih6PT09d3x8dy5sZW5ndGg+PXY4JiZ6LnN0YXJ0c1dpdGgodytcIi1cIikpe1YuYWRkKHopLHEucHVzaCguLi5hd2FpdCBlNyhmSChXLEIubmFtZSksSixOKSk7YnJlYWt9fXJldHVybiBxfWFzeW5jIGZ1bmN0aW9uIFBnKCQpe2xldCBRPUg0KCksSjt0cnl7Sj1hd2FpdCB4SChRLHt3aXRoRmlsZVR5cGVzOiEwfSl9Y2F0Y2h7cmV0dXJuW119cmV0dXJuKGF3YWl0IFByb21pc2UuYWxsKEouZmlsdGVyKChYKT0+WC5pc0RpcmVjdG9yeSgpKS5tYXAoKFgpPT5lNyhmSChRLFgubmFtZSksJCkpKSkuZmxhdCgpfWFzeW5jIGZ1bmN0aW9uIGpaKCQpe2xldHtkaXI6USxsaW1pdDpKLG9mZnNldDpZLGluY2x1ZGVXb3JrdHJlZXM6WH09JD8/e30sVz1ZPz8wLEc9SiE9PXZvaWQgMCYmSj4wfHxXPjAsVT1RP2F3YWl0IFJnKFEsWD8/ITAsRyk6YXdhaXQgUGcoRyk7aWYoIUcpcmV0dXJuIElnKFUpO3JldHVybiBBZyhVLEosVyl9YXN5bmMgZnVuY3Rpb24gQVooJCxRPXt9KXtsZXQgSj1MJCgkKTtpZighSilyZXR1cm47bGV0IFk9YXdhaXQgajEoSixRLmRpcik7aWYoIVkpcmV0dXJuO2xldCBYPWF3YWl0IFQ1KFkuZmlsZVBhdGgpO2lmKCFYKXJldHVybjtyZXR1cm4gQzgoSixYLFkucHJvamVjdFBhdGgpPz92b2lkIDB9aW1wb3J0e2NvbnN0YW50cyBhcyBJWn1mcm9tXCJmc1wiO2ltcG9ydHtvcGVuIGFzIEVnLHJlYWRkaXIgYXMgUFoscm0gYXMgUlosc3RhdCBhcyBiZ31mcm9tXCJmcy9wcm9taXNlc1wiO2ltcG9ydHtqb2luIGFzIFQ4fWZyb21cInBhdGhcIjthc3luYyBmdW5jdGlvbiBFWigkLFEsSj17fSl7aWYoIUwkKCQpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHskfWApO2lmKCFRLnRyaW0oKSl0aHJvdyBFcnJvcihcInRpdGxlIG11c3QgYmUgbm9uLWVtcHR5XCIpO2xldCBZPUIkKHt0eXBlOlwiY3VzdG9tLXRpdGxlXCIsY3VzdG9tVGl0bGU6US50cmltKCksc2Vzc2lvbklkOiR9KStgXG5gO2F3YWl0IFNaKCQsWSxKKX1hc3luYyBmdW5jdGlvbiBiWigkLFEsSj17fSl7aWYoIUwkKCQpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHskfWApO2lmKFEhPT1udWxsKXtsZXQgWD1GMChRKS50cmltKCk7aWYoIVgpdGhyb3cgRXJyb3IoXCJ0YWcgbXVzdCBiZSBub24tZW1wdHkgKHVzZSBudWxsIHRvIGNsZWFyKVwiKTtRPVh9bGV0IFk9QiQoe3R5cGU6XCJ0YWdcIix0YWc6UT8/XCJcIixzZXNzaW9uSWQ6JH0pK2BcbmA7YXdhaXQgU1ooJCxZLEopfWFzeW5jIGZ1bmN0aW9uIF9aKCQsUT17fSl7aWYoIUwkKCQpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHskfWApO2ZvcihsZXQgSiBvZiBhd2FpdCBfZyhRKSl7bGV0IFk9VDgoSixgJHskfS5qc29ubGApLFg7dHJ5eyh7c2l6ZTpYfT1hd2FpdCBiZyhZKSl9Y2F0Y2goVyl7bGV0IEc9byQoVyk7aWYoRz09PVwiRU5PRU5UXCJ8fEc9PT1cIkVOT1RESVJcIiljb250aW51ZTt0aHJvdyBXfWlmKFg9PT0wKWNvbnRpbnVlO2F3YWl0IFJaKFkse2ZvcmNlOiEwfSksYXdhaXQgUlooVDgoSiwkKSx7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSk7cmV0dXJufXRocm93IEVycm9yKFEuZGlyP2BTZXNzaW9uICR7JH0gbm90IGZvdW5kIGluIHByb2plY3QgZGlyZWN0b3J5IGZvciAke1EuZGlyfWA6YFNlc3Npb24gJHskfSBub3QgZm91bmQgaW4gYW55IHByb2plY3QgZGlyZWN0b3J5YCl9YXN5bmMgZnVuY3Rpb24gX2coJCl7aWYoJC5kaXIpe2xldCBKPWF3YWl0IEwxKCQuZGlyKSxZPWF3YWl0IE02KEopLFg7dHJ5e1g9YXdhaXQgYzQoSil9Y2F0Y2h7WD1bXX1mb3IobGV0IFcgb2YgWCl7aWYoVz09PUopY29udGludWU7WS5wdXNoKC4uLmF3YWl0IE02KFcpKX1yZXR1cm4gWX1sZXQgUT1INCgpO3RyeXtyZXR1cm4oYXdhaXQgUFooUSx7d2l0aEZpbGVUeXBlczohMH0pKS5maWx0ZXIoKFkpPT5ZLmlzRGlyZWN0b3J5KCl8fFkuaXNTeW1ib2xpY0xpbmsoKSkubWFwKChZKT0+VDgoUSxZLm5hbWUpKX1jYXRjaHtyZXR1cm5bXX19YXN5bmMgZnVuY3Rpb24gU1ooJCxRLEope2xldCBZPWAkeyR9Lmpzb25sYDtpZihKLmRpcil7bGV0IEc9YXdhaXQgTDEoSi5kaXIpO2ZvcihsZXQgSCBvZiBhd2FpdCBNNihHKSlpZihhd2FpdCB5SChUOChILFkpLFEpKXJldHVybjtsZXQgVTt0cnl7VT1hd2FpdCBjNChHKX1jYXRjaHtVPVtdfWZvcihsZXQgSCBvZiBVKXtpZihIPT09Ryljb250aW51ZTtmb3IobGV0IHEgb2YgYXdhaXQgTTYoSCkpaWYoYXdhaXQgeUgoVDgocSxZKSxRKSlyZXR1cm59dGhyb3cgRXJyb3IoYFNlc3Npb24gJHskfSBub3QgZm91bmQgaW4gcHJvamVjdCBkaXJlY3RvcnkgZm9yICR7Si5kaXJ9YCl9bGV0IFg9SDQoKSxXO3RyeXtXPWF3YWl0IFBaKFgpfWNhdGNoe3Rocm93IEVycm9yKGBTZXNzaW9uICR7JH0gbm90IGZvdW5kIChubyBwcm9qZWN0cyBkaXJlY3RvcnkpYCl9Zm9yKGxldCBHIG9mIFcpaWYoYXdhaXQgeUgoVDgoWCxHLFkpLFEpKXJldHVybjt0aHJvdyBFcnJvcihgU2Vzc2lvbiAkeyR9IG5vdCBmb3VuZCBpbiBhbnkgcHJvamVjdCBkaXJlY3RvcnlgKX1hc3luYyBmdW5jdGlvbiB5SCgkLFEpe2xldCBKO3RyeXtKPWF3YWl0IEVnKCQsSVouT19XUk9OTFl8SVouT19BUFBFTkQpfWNhdGNoKFkpe2xldCBYPW8kKFkpO2lmKFg9PT1cIkVOT0VOVFwifHxYPT09XCJFTk9URElSXCIpcmV0dXJuITE7dGhyb3cgWX10cnl7bGV0e3NpemU6WX09YXdhaXQgSi5zdGF0KCk7aWYoWT09PTApcmV0dXJuITE7bGV0IFg9cHJvY2Vzcy5wbGF0Zm9ybT09PVwid2luMzJcIj9ZOnZvaWQgMDtyZXR1cm4gYXdhaXQgSi53cml0ZShRLFgsXCJ1dGY4XCIpLCEwfWZpbmFsbHl7YXdhaXQgSi5jbG9zZSgpfX1pbXBvcnR7cmFuZG9tVVVJRCBhcyB4NX1mcm9tXCJjcnlwdG9cIjtpbXBvcnR7am9pbiBhcyB1SH1mcm9tXCJwYXRoXCI7aW1wb3J0e0FzeW5jTG9jYWxTdG9yYWdlIGFzIGZnfWZyb21cImFzeW5jX2hvb2tzXCI7aW1wb3J0e21rZGlyIGFzIHlnLHJlYWRkaXIgYXMgZ2cscmVhZEZpbGUgYXMgdlosdW5saW5rIGFzIGhnLHdyaXRlRmlsZSBhcyB1Z31mcm9tXCJmcy9wcm9taXNlc1wiO2ltcG9ydHtyYW5kb21CeXRlcyBhcyBTZ31mcm9tXCJjcnlwdG9cIjtpbXBvcnR7Y29weUZpbGUgYXMga2cscmVuYW1lIGFzIHZnLHVubGluayBhcyBnSCx3cml0ZUZpbGUgYXMgQ2d9ZnJvbVwiZnMvcHJvbWlzZXNcIjt2YXIgVGc9bmV3IFNldChbXCJFWERFVlwiLFwiRVBFUk1cIixcIkVFWElTVFwiLFwiRUJVU1lcIl0pLHhnPW5ldyBTZXQoW1wiRU5PU1BDXCIsXCJFSU9cIixcIkVEUVVPVFwiLFwiRUZCSUdcIl0pO2FzeW5jIGZ1bmN0aW9uIGtaKCQsUSxKKXtsZXQgWT1gJHskfS50bXAuJHtTZyg0KS50b1N0cmluZyhcImhleFwiKX1gO3RyeXthd2FpdCBDZyhZLFEse2VuY29kaW5nOlwidXRmOFwiLG1vZGU6Sn0pO3RyeXthd2FpdCB2ZyhZLCQpfWNhdGNoKFgpe2xldCBXPW8kKFgpO2lmKFchPT12b2lkIDAmJlRnLmhhcyhXKSl7dHJ5e2F3YWl0IGtnKFksJCl9Y2F0Y2goRyl7aWYoeGcuaGFzKG8kKEcpPz9cIlwiKSlhd2FpdCBnSCgkKS5jYXRjaCgoKT0+e30pO3Rocm93IEd9YXdhaXQgZ0goWSkuY2F0Y2goKCk9Pnt9KX1lbHNlIHRocm93IFh9fWNhdGNoKFgpe3Rocm93IGF3YWl0IGdIKFkpLmNhdGNoKCgpPT57fSksWH19Y2xhc3MgQ1p7cmVhZCgkKXtyZXR1cm4gdlooJCxcInV0ZjhcIil9cmVhZEJ5dGVzKCQpe3JldHVybiB2WigkKX13cml0ZSgkLFEpe3JldHVybiB1ZygkLFEsXCJ1dGY4XCIpfWFzeW5jIG1rZGlyKCQpe3RyeXthd2FpdCB5ZygkLHtyZWN1cnNpdmU6ITB9KX1jYXRjaChRKXtpZihvJChRKSE9PVwiRUVYSVNUXCIpdGhyb3cgUX19YXRvbWljV3JpdGUoJCxRLEope3JldHVybiBrWigkLFEsSil9ZGVsZXRlKCQpe3JldHVybiBoZygkKX1saXN0KCQpe3JldHVybiBnZygkKX19dmFyIG1nPW5ldyBmZztmdW5jdGlvbiBoSCgpe3JldHVybiBtZy5nZXRTdG9yZSgpPz9uZXcgQ1p9YXN5bmMgZnVuY3Rpb24gbGcoJCxRKXtsZXQgSj1gJHskfS5qc29ubGA7YXN5bmMgZnVuY3Rpb24gWShHKXt0cnl7bGV0IFU9YXdhaXQgaEgoKS5yZWFkQnl0ZXModUgoRyxKKSk7aWYoVS5sZW5ndGg9PT0wKXJldHVybiBudWxsO3JldHVybntidWY6VSxwcm9qZWN0RGlyOkd9fWNhdGNoe3JldHVybiBudWxsfX1pZihRKXtsZXQgRz1hd2FpdCBMMShRKTtmb3IobGV0IEggb2YgYXdhaXQgTTYoRykpe2xldCBxPWF3YWl0IFkoSCk7aWYocSlyZXR1cm4gcX1sZXQgVTt0cnl7VT1hd2FpdCBjNChHKX1jYXRjaHtVPVtdfWZvcihsZXQgSCBvZiBVKXtpZihIPT09Ryljb250aW51ZTtmb3IobGV0IHEgb2YgYXdhaXQgTTYoSCkpe2xldCBWPWF3YWl0IFkocSk7aWYoVilyZXR1cm4gVn19cmV0dXJuIG51bGx9bGV0IFg9SDQoKSxXO3RyeXtXPWF3YWl0IGhIKCkubGlzdChYKX1jYXRjaHtyZXR1cm4gbnVsbH1mb3IobGV0IEcgb2YgVyl7bGV0IFU9YXdhaXQgWSh1SChYLEcpKTtpZihVKXJldHVybiBVfXJldHVybiBudWxsfXZhciBjZz1uZXcgU2V0KFtcInVzZXJcIixcImFzc2lzdGFudFwiLFwiYXR0YWNobWVudFwiLFwic3lzdGVtXCIsXCJwcm9ncmVzc1wiXSk7ZnVuY3Rpb24gcGcoJCxRKXtsZXQgSj1bXSxZPVtdLFg9MTAsVz0kLmxlbmd0aCxHPTA7d2hpbGUoRzxXKXtsZXQgVT0kLmluZGV4T2YoMTAsRyk7aWYoVT09PS0xKVU9VztsZXQgSD1HO3doaWxlKEg8VSYmJFtIXTw9MzIpSCsrO2lmKEc9VSsxLEg+PVUpY29udGludWU7bGV0IHE9JC50b1N0cmluZyhcInV0Zi04XCIsSCxVKTt0cnl7VFoobCQocSksUSxKLFkpfWNhdGNoe319cmV0dXJue3RyYW5zY3JpcHQ6Sixjb250ZW50UmVwbGFjZW1lbnRzOll9fWZ1bmN0aW9uIGRnKCQsUSl7bGV0IEo9W10sWT1bXTtmb3IobGV0IFggb2YgJCl7aWYodHlwZW9mIFghPT1cIm9iamVjdFwifHxYPT09bnVsbCljb250aW51ZTtUWihYLFEsSixZKX1yZXR1cm57dHJhbnNjcmlwdDpKLGNvbnRlbnRSZXBsYWNlbWVudHM6WX19ZnVuY3Rpb24gVFooJCxRLEosWSl7aWYoY2cuaGFzKCQudHlwZSkmJnR5cGVvZiAkLnV1aWQ9PT1cInN0cmluZ1wiKUoucHVzaCgkKTtlbHNlIGlmKCQudHlwZT09PVwiY29udGVudC1yZXBsYWNlbWVudFwiJiYkLnNlc3Npb25JZD09PVEmJkFycmF5LmlzQXJyYXkoJC5yZXBsYWNlbWVudHMpKVkucHVzaCguLi4kLnJlcGxhY2VtZW50cyl9YXN5bmMgZnVuY3Rpb24geFooJCxRPXt9KXtpZighTCQoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAkeyR9YCk7aWYoUS51cFRvTWVzc2FnZUlkJiYhTCQoUS51cFRvTWVzc2FnZUlkKSl0aHJvdyBFcnJvcihgSW52YWxpZCB1cFRvTWVzc2FnZUlkOiAke1EudXBUb01lc3NhZ2VJZH1gKTtsZXQgSj1hd2FpdCBsZygkLFEuZGlyKTtpZighSil0aHJvdyBFcnJvcihRLmRpcj9gU2Vzc2lvbiAkeyR9IG5vdCBmb3VuZCBpbiBwcm9qZWN0IGRpcmVjdG9yeSBmb3IgJHtRLmRpcn1gOmBTZXNzaW9uICR7JH0gbm90IGZvdW5kYCk7bGV0e2VudHJpZXM6WSxmb3JrZWRTZXNzaW9uSWQ6WH09aWcoSi5idWYsJCxRKTtyZXR1cm4gYXdhaXQgczcodUgoSi5wcm9qZWN0RGlyLGAke1h9Lmpzb25sYCksWSkse3Nlc3Npb25JZDpYfX1mdW5jdGlvbiBpZygkLFEsSil7bGV0IFk9cGcoJCxRKTtyZXR1cm4geVooWSxRLEosKCk9PntsZXQgVz0kLmxlbmd0aCxHPSQudG9TdHJpbmcoXCJ1dGYtOFwiLDAsTWF0aC5taW4oVyxVNCkpLFU9JC50b1N0cmluZyhcInV0Zi04XCIsTWF0aC5tYXgoMCxXLVU0KSk7cmV0dXJuIEw2KFUsXCJjdXN0b21UaXRsZVwiKXx8TDYoRyxcImN1c3RvbVRpdGxlXCIpfHxMNihVLFwiYWlUaXRsZVwiKXx8TDYoRyxcImFpVGl0bGVcIil8fEM1KEcpfSl9ZnVuY3Rpb24gZlooJCxRLEope2xldCBZPWRnKCQsUSk7cmV0dXJuIHlaKFksUSxKLCgpPT5uZygkKSl9ZnVuY3Rpb24gbmcoJCl7bGV0IFEsSjtmb3IobGV0IFkgb2YgJCl7aWYodHlwZW9mIFkhPT1cIm9iamVjdFwifHxZPT09bnVsbCljb250aW51ZTtsZXQgWD1ZO2lmKHR5cGVvZiBYLmN1c3RvbVRpdGxlPT09XCJzdHJpbmdcIiYmWC5jdXN0b21UaXRsZSlRPVguY3VzdG9tVGl0bGU7aWYodHlwZW9mIFguYWlUaXRsZT09PVwic3RyaW5nXCImJlguYWlUaXRsZSlKPVguYWlUaXRsZX1yZXR1cm4gUXx8Snx8TlooJCl8fHZvaWQgMH1mdW5jdGlvbiB5WigkLFEsSixZKXtsZXQgWD0kLnRyYW5zY3JpcHQuZmlsdGVyKCh6KT0+IXouaXNTaWRlY2hhaW4pO2lmKFgubGVuZ3RoPT09MCl0aHJvdyBFcnJvcihgU2Vzc2lvbiAke1F9IGhhcyBubyBtZXNzYWdlcyB0byBmb3JrYCk7aWYoSi51cFRvTWVzc2FnZUlkKXtsZXQgej1YLmZpbmRJbmRleCgoTik9Pk4udXVpZD09PUoudXBUb01lc3NhZ2VJZCk7aWYoej09PS0xKXRocm93IEVycm9yKGBNZXNzYWdlICR7Si51cFRvTWVzc2FnZUlkfSBub3QgZm91bmQgaW4gc2Vzc2lvbiAke1F9YCk7WD1YLnNsaWNlKDAseisxKX1sZXQgVz1uZXcgTWFwO2ZvcihsZXQgeiBvZiBYKVcuc2V0KHoudXVpZCx4NSgpKTtsZXQgRz1YLmZpbHRlcigoeik9PnoudHlwZSE9PVwicHJvZ3Jlc3NcIik7aWYoRy5sZW5ndGg9PT0wKXRocm93IEVycm9yKGBTZXNzaW9uICR7UX0gaGFzIG5vIG1lc3NhZ2VzIHRvIGZvcmtgKTtsZXQgVT1uZXcgTWFwO2ZvcihsZXQgeiBvZiBYKVUuc2V0KHoudXVpZCx6KTtsZXQgSD14NSgpLHE9bmV3IERhdGUoKS50b0lTT1N0cmluZygpLFY9W107Zm9yKGxldCB6PTA7ejxHLmxlbmd0aDt6Kyspe2xldCBOPUdbel0sdz1XLmdldChOLnV1aWQpLE89bnVsbCxEPU4ucGFyZW50VXVpZDt3aGlsZShEKXtsZXQgaz1VLmdldChEKTtpZighaylicmVhaztpZihrLnR5cGUhPT1cInByb2dyZXNzXCIpe089Vy5nZXQoRCk/P251bGw7YnJlYWt9RD1rLnBhcmVudFV1aWR9bGV0IE09ej09PUcubGVuZ3RoLTE/cTpOLnRpbWVzdGFtcCxqPU4ubG9naWNhbFBhcmVudFV1aWQ9PW51bGw/Ti5sb2dpY2FsUGFyZW50VXVpZDpXLmdldChOLmxvZ2ljYWxQYXJlbnRVdWlkKT8/bnVsbCxBPXsuLi5OLHV1aWQ6dyxwYXJlbnRVdWlkOk8sbG9naWNhbFBhcmVudFV1aWQ6aixzZXNzaW9uSWQ6SCx0aW1lc3RhbXA6TSxpc1NpZGVjaGFpbjohMSx0ZWFtTmFtZTp2b2lkIDAsYWdlbnROYW1lOnZvaWQgMCxzbHVnOnZvaWQgMCxzb3VyY2VUb29sQXNzaXN0YW50VVVJRDp2b2lkIDAsZm9ya2VkRnJvbTp7c2Vzc2lvbklkOlEsbWVzc2FnZVV1aWQ6Ti51dWlkfX07Vi5wdXNoKEEpfWlmKCQuY29udGVudFJlcGxhY2VtZW50cy5sZW5ndGg+MClWLnB1c2goe3R5cGU6XCJjb250ZW50LXJlcGxhY2VtZW50XCIsc2Vzc2lvbklkOkgscmVwbGFjZW1lbnRzOiQuY29udGVudFJlcGxhY2VtZW50cyx1dWlkOng1KCksdGltZXN0YW1wOnF9KTtsZXQgQj1KLnRpdGxlPy50cmltKCk7aWYoIUIpQj1gJHtZKCl8fFwiRm9ya2VkIHNlc3Npb25cIn0gKGZvcmspYDtyZXR1cm4gVi5wdXNoKHt0eXBlOlwiY3VzdG9tLXRpdGxlXCIsc2Vzc2lvbklkOkgsY3VzdG9tVGl0bGU6Qix1dWlkOng1KCksdGltZXN0YW1wOnF9KSx7ZW50cmllczpWLGZvcmtlZFNlc3Npb25JZDpIfX1pbXBvcnR7cmVhZGRpciBhcyByZyxyZWFkRmlsZSBhcyBvZ31mcm9tXCJmcy9wcm9taXNlc1wiO2ltcG9ydHtqb2luIGFzIG1IfWZyb21cInBhdGhcIjthc3luYyBmdW5jdGlvbiBnWigkLFEpe2xldCBKPWF3YWl0IGoxKCQsUSk7aWYoIUopcmV0dXJuIG51bGw7bGV0IFk9Si5maWxlUGF0aC5yZXBsYWNlKC9cXC5qc29ubCQvLFwiXCIpO3JldHVybiBtSChZLFwic3ViYWdlbnRzXCIpfWFzeW5jIGZ1bmN0aW9uIGhaKCQpe2xldCBRPVtdO2FzeW5jIGZ1bmN0aW9uIEooWSl7bGV0IFg7dHJ5e1g9YXdhaXQgcmcoWSx7d2l0aEZpbGVUeXBlczohMH0pfWNhdGNoe3JldHVybn1mb3IobGV0IFcgb2YgWClpZihXLmlzRmlsZSgpJiZXLm5hbWUuc3RhcnRzV2l0aChcImFnZW50LVwiKSYmVy5uYW1lLmVuZHNXaXRoKFwiLmpzb25sXCIpKXtsZXQgRz1XLm5hbWUuc2xpY2UoNiwtNik7US5wdXNoKHthZ2VudElkOkcsZmlsZVBhdGg6bUgoWSxXLm5hbWUpfSl9ZWxzZSBpZihXLmlzRGlyZWN0b3J5KCkpYXdhaXQgSihtSChZLFcubmFtZSkpfXJldHVybiBhd2FpdCBKKCQpLFF9ZnVuY3Rpb24gdGcoJCl7bGV0IFE9W10sSj0xMCxZPSQubGVuZ3RoLFg9MDt3aGlsZShYPFkpe2xldCBXPSQuaW5kZXhPZigxMCxYKTtpZihXPT09LTEpVz1ZO2xldCBHPVg7d2hpbGUoRzxXJiYkW0ddPD0zMilHKys7aWYoWD1XKzEsRz49Vyljb250aW51ZTtsZXQgVT0kLnRvU3RyaW5nKFwidXRmLThcIixHLFcpO3RyeXtsZXQgSD1sJChVKSxxPUgudHlwZTtpZigocT09PVwidXNlclwifHxxPT09XCJhc3Npc3RhbnRcIikmJnR5cGVvZiBILnV1aWQ9PT1cInN0cmluZ1wiKVEucHVzaChIKX1jYXRjaHt9fXJldHVybiBRfWZ1bmN0aW9uIGFnKCQpe2lmKCQubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgUT1uZXcgTWFwO2ZvcihsZXQgRyBvZiAkKVEuc2V0KEcudXVpZCxHKTtsZXQgSj0kLmZpbmRMYXN0KChHKT0+Ry50eXBlPT09XCJ1c2VyXCJ8fEcudHlwZT09PVwiYXNzaXN0YW50XCIpO2lmKCFKKXJldHVybltdO2xldCBZPVtdLFg9bmV3IFNldCxXPUo7d2hpbGUoVyl7aWYoWC5oYXMoVy51dWlkKSlicmVhaztYLmFkZChXLnV1aWQpLFkucHVzaChXKSxXPVcucGFyZW50VXVpZD9RLmdldChXLnBhcmVudFV1aWQpOnZvaWQgMH1yZXR1cm4gWS5yZXZlcnNlKCksWX1hc3luYyBmdW5jdGlvbiB1WigkLFEpe2lmKCFMJCgkKSlyZXR1cm5bXTtsZXQgSj1hd2FpdCBnWigkLFE/LmRpcik7aWYoIUopcmV0dXJuW107cmV0dXJuKGF3YWl0IGhaKEopKS5tYXAoKFgpPT5YLmFnZW50SWQpfWFzeW5jIGZ1bmN0aW9uIG1aKCQsUSxKKXtpZighTCQoJCkpcmV0dXJuW107aWYoIVEpcmV0dXJuW107bGV0IFk9YXdhaXQgZ1ooJCxKPy5kaXIpO2lmKCFZKXJldHVybltdO2xldCBXPShhd2FpdCBoWihZKSkuZmluZCgoVSk9PlUuYWdlbnRJZD09PVEpO2lmKCFXKXJldHVybltdO2xldCBHO3RyeXtHPWF3YWl0IG9nKFcuZmlsZVBhdGgpfWNhdGNoe3JldHVybltdfXJldHVybiBsSChHLEopfWZ1bmN0aW9uIGxIKCQsUSl7aWYoJC5sZW5ndGg9PT0wKXJldHVybltdO2xldCBKPXRnKCQpLFg9YWcoSikuZmlsdGVyKChXKT0+Vy50eXBlPT09XCJ1c2VyXCJ8fFcudHlwZT09PVwiYXNzaXN0YW50XCIpLm1hcChDSCk7cmV0dXJuIFRIKFgsUSl9aW1wb3J0e2NyZWF0ZUhhc2ggYXMgR2h9ZnJvbVwiY3J5cHRvXCI7aW1wb3J0e3VzZXJJbmZvIGFzIFVofWZyb21cIm9zXCI7ZnVuY3Rpb24gY0goJCxRKXtsZXQgSj0wO2ZvcihsZXQgWSBvZiAkKUorPSshIVEoWSk7cmV0dXJuIEp9ZnVuY3Rpb24gZjUoJCl7cmV0dXJuWy4uLm5ldyBTZXQoJCldfWZ1bmN0aW9uIHNnKCl7cmV0dXJuXCJwcm9kXCJ9dmFyIGVnPVwidXNlcjppbmZlcmVuY2VcIixjWj1cInVzZXI6cHJvZmlsZVwiLCRoPVwib3JnOmNyZWF0ZV9hcGlfa2V5XCI7dmFyIFFoPVskaCxjWl0sSmg9W2NaLGVnLFwidXNlcjpzZXNzaW9uczpjbGF1ZGVfY29kZVwiLFwidXNlcjptY3Bfc2VydmVyc1wiLFwidXNlcjpmaWxlX3VwbG9hZFwiLC4uLltdXSxnVSQ9ZjUoWy4uLlFoLC4uLkpoXSksbFo9e0JBU0VfQVBJX1VSTDpcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIixDT05TT0xFX0FVVEhPUklaRV9VUkw6XCJodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vb2F1dGgvYXV0aG9yaXplXCIsQ0xBVURFX0FJX0FVVEhPUklaRV9VUkw6XCJodHRwczovL2NsYXVkZS5jb20vY2FpL29hdXRoL2F1dGhvcml6ZVwiLENMQVVERV9BSV9PUklHSU46XCJodHRwczovL2NsYXVkZS5haVwiLFRPS0VOX1VSTDpcImh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS92MS9vYXV0aC90b2tlblwiLEFQSV9LRVlfVVJMOlwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9jcmVhdGVfYXBpX2tleVwiLFJPTEVTX1VSTDpcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb20vYXBpL29hdXRoL2NsYXVkZV9jbGkvcm9sZXNcIixDT05TT0xFX1NVQ0NFU1NfVVJMOlwiaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL2J1eV9jcmVkaXRzP3JldHVyblVybD0vb2F1dGgvY29kZS9zdWNjZXNzJTNGYXBwJTNEY2xhdWRlLWNvZGVcIixDTEFVREVBSV9TVUNDRVNTX1VSTDpcImh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9vYXV0aC9jb2RlL3N1Y2Nlc3M/YXBwPWNsYXVkZS1jb2RlXCIsTUFOVUFMX1JFRElSRUNUX1VSTDpcImh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9vYXV0aC9jb2RlL2NhbGxiYWNrXCIsQ0xJRU5UX0lEOlwiOWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVlXCIsT0FVVEhfRklMRV9TVUZGSVg6XCJcIixNQ1BfUFJPWFlfVVJMOlwiaHR0cHM6Ly9tY3AtcHJveHkuYW50aHJvcGljLmNvbVwiLE1DUF9QUk9YWV9QQVRIOlwiL3YxL21jcC97c2VydmVyX2lkfVwifTt2YXIgWGg9dm9pZCAwO2Z1bmN0aW9uIFloKCl7bGV0ICQ9cHJvY2Vzcy5lbnYuQ0xBVURFX0xPQ0FMX09BVVRIX0FQSV9CQVNFPy5yZXBsYWNlKC9cXC8kLyxcIlwiKT8/XCJodHRwOi8vbG9jYWxob3N0OjgwMDBcIixRPXByb2Nlc3MuZW52LkNMQVVERV9MT0NBTF9PQVVUSF9BUFBTX0JBU0U/LnJlcGxhY2UoL1xcLyQvLFwiXCIpPz9cImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMFwiLEo9cHJvY2Vzcy5lbnYuQ0xBVURFX0xPQ0FMX09BVVRIX0NPTlNPTEVfQkFTRT8ucmVwbGFjZSgvXFwvJC8sXCJcIik/P1wiaHR0cDovL2xvY2FsaG9zdDozMDAwXCI7cmV0dXJue0JBU0VfQVBJX1VSTDokLENPTlNPTEVfQVVUSE9SSVpFX1VSTDpgJHtKfS9vYXV0aC9hdXRob3JpemVgLENMQVVERV9BSV9BVVRIT1JJWkVfVVJMOmAke1F9L29hdXRoL2F1dGhvcml6ZWAsQ0xBVURFX0FJX09SSUdJTjpRLFRPS0VOX1VSTDpgJHskfS92MS9vYXV0aC90b2tlbmAsQVBJX0tFWV9VUkw6YCR7JH0vYXBpL29hdXRoL2NsYXVkZV9jbGkvY3JlYXRlX2FwaV9rZXlgLFJPTEVTX1VSTDpgJHskfS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9yb2xlc2AsQ09OU09MRV9TVUNDRVNTX1VSTDpgJHtKfS9idXlfY3JlZGl0cz9yZXR1cm5Vcmw9L29hdXRoL2NvZGUvc3VjY2VzcyUzRmFwcCUzRGNsYXVkZS1jb2RlYCxDTEFVREVBSV9TVUNDRVNTX1VSTDpgJHtKfS9vYXV0aC9jb2RlL3N1Y2Nlc3M/YXBwPWNsYXVkZS1jb2RlYCxNQU5VQUxfUkVESVJFQ1RfVVJMOmAke0p9L29hdXRoL2NvZGUvY2FsbGJhY2tgLENMSUVOVF9JRDpcIjIyNDIyNzU2LTYwYzktNDA4NC04ZWI3LTI3NzA1ZmQ1Y2Y5YVwiLE9BVVRIX0ZJTEVfU1VGRklYOlwiLWxvY2FsLW9hdXRoXCIsTUNQX1BST1hZX1VSTDpcImh0dHA6Ly9sb2NhbGhvc3Q6ODIwNVwiLE1DUF9QUk9YWV9QQVRIOlwiL3YxL3Rvb2xib3gvc2h0dHAvbWNwL3tzZXJ2ZXJfaWR9XCJ9fXZhciBXaD1bXCJodHRwczovL2JlYWNvbi5jbGF1ZGUtYWkuc3RhZ2luZy5hbnQuZGV2XCIsXCJodHRwczovL2NsYXVkZS5mZWRzdGFydC5jb21cIixcImh0dHBzOi8vY2xhdWRlLXN0YWdpbmcuZmVkc3RhcnQuY29tXCJdO2Z1bmN0aW9uIHBaKCl7bGV0ICQ9KCgpPT57c3dpdGNoKHNnKCkpe2Nhc2VcImxvY2FsXCI6cmV0dXJuIFloKCk7Y2FzZVwic3RhZ2luZ1wiOnJldHVybiBYaD8/bFo7Y2FzZVwicHJvZFwiOnJldHVybiBsWn19KSgpLFE9cHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ1VTVE9NX09BVVRIX1VSTDtpZihRKXtsZXQgWT1RLnJlcGxhY2UoL1xcLyQvLFwiXCIpO2lmKCFXaC5pbmNsdWRlcyhZKSl0aHJvdyBFcnJvcihcIkNMQVVERV9DT0RFX0NVU1RPTV9PQVVUSF9VUkwgaXMgbm90IGFuIGFwcHJvdmVkIGVuZHBvaW50LlwiKTskPXsuLi4kLEJBU0VfQVBJX1VSTDpZLENPTlNPTEVfQVVUSE9SSVpFX1VSTDpgJHtZfS9vYXV0aC9hdXRob3JpemVgLENMQVVERV9BSV9BVVRIT1JJWkVfVVJMOmAke1l9L29hdXRoL2F1dGhvcml6ZWAsQ0xBVURFX0FJX09SSUdJTjpZLFRPS0VOX1VSTDpgJHtZfS92MS9vYXV0aC90b2tlbmAsQVBJX0tFWV9VUkw6YCR7WX0vYXBpL29hdXRoL2NsYXVkZV9jbGkvY3JlYXRlX2FwaV9rZXlgLFJPTEVTX1VSTDpgJHtZfS9hcGkvb2F1dGgvY2xhdWRlX2NsaS9yb2xlc2AsQ09OU09MRV9TVUNDRVNTX1VSTDpgJHtZfS9vYXV0aC9jb2RlL3N1Y2Nlc3M/YXBwPWNsYXVkZS1jb2RlYCxDTEFVREVBSV9TVUNDRVNTX1VSTDpgJHtZfS9vYXV0aC9jb2RlL3N1Y2Nlc3M/YXBwPWNsYXVkZS1jb2RlYCxNQU5VQUxfUkVESVJFQ1RfVVJMOmAke1l9L29hdXRoL2NvZGUvY2FsbGJhY2tgLE9BVVRIX0ZJTEVfU1VGRklYOlwiLWN1c3RvbS1vYXV0aFwifX1sZXQgSj1wcm9jZXNzLmVudi5DTEFVREVfQ09ERV9PQVVUSF9DTElFTlRfSUQ7aWYoSikkPXsuLi4kLENMSUVOVF9JRDpKfTtyZXR1cm4gJH12YXIgZFo9XCItY3JlZGVudGlhbHNcIjtmdW5jdGlvbiBpWigkPVwiXCIpe2xldCBRPXA2KCksWT0hcHJvY2Vzcy5lbnYuQ0xBVURFX0NPTkZJR19ESVI/XCJcIjpgLSR7R2goXCJzaGEyNTZcIikudXBkYXRlKFEpLmRpZ2VzdChcImhleFwiKS5zdWJzdHJpbmcoMCw4KX1gO3JldHVybmBDbGF1ZGUgQ29kZSR7cFooKS5PQVVUSF9GSUxFX1NVRkZJWH0keyR9JHtZfWB9dmFyIEhoPS9eW2EtekEtWjAtOS5fLV0rJC87ZnVuY3Rpb24gblooKXtsZXQgJDt0cnl7JD1wcm9jZXNzLmVudi5VU0VSfHxVaCgpLnVzZXJuYW1lfWNhdGNoeyQ9XCJjbGF1ZGUtY29kZS11c2VyXCJ9aWYoIUhoLnRlc3QoJCkpcmV0dXJuXCJjbGF1ZGUtY29kZS11c2VyXCI7cmV0dXJuICR9dmFyIFUkOyhmdW5jdGlvbigkKXskLmFzc2VydEVxdWFsPShYKT0+e307ZnVuY3Rpb24gUShYKXt9JC5hc3NlcnRJcz1RO2Z1bmN0aW9uIEooWCl7dGhyb3cgRXJyb3IoKX0kLmFzc2VydE5ldmVyPUosJC5hcnJheVRvRW51bT0oWCk9PntsZXQgVz17fTtmb3IobGV0IEcgb2YgWClXW0ddPUc7cmV0dXJuIFd9LCQuZ2V0VmFsaWRFbnVtVmFsdWVzPShYKT0+e2xldCBXPSQub2JqZWN0S2V5cyhYKS5maWx0ZXIoKFUpPT50eXBlb2YgWFtYW1VdXSE9PVwibnVtYmVyXCIpLEc9e307Zm9yKGxldCBVIG9mIFcpR1tVXT1YW1VdO3JldHVybiAkLm9iamVjdFZhbHVlcyhHKX0sJC5vYmplY3RWYWx1ZXM9KFgpPT57cmV0dXJuICQub2JqZWN0S2V5cyhYKS5tYXAoZnVuY3Rpb24oVyl7cmV0dXJuIFhbV119KX0sJC5vYmplY3RLZXlzPXR5cGVvZiBPYmplY3Qua2V5cz09PVwiZnVuY3Rpb25cIj8oWCk9Pk9iamVjdC5rZXlzKFgpOihYKT0+e2xldCBXPVtdO2ZvcihsZXQgRyBpbiBYKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChYLEcpKVcucHVzaChHKTtyZXR1cm4gV30sJC5maW5kPShYLFcpPT57Zm9yKGxldCBHIG9mIFgpaWYoVyhHKSlyZXR1cm4gRztyZXR1cm59LCQuaXNJbnRlZ2VyPXR5cGVvZiBOdW1iZXIuaXNJbnRlZ2VyPT09XCJmdW5jdGlvblwiPyhYKT0+TnVtYmVyLmlzSW50ZWdlcihYKTooWCk9PnR5cGVvZiBYPT09XCJudW1iZXJcIiYmTnVtYmVyLmlzRmluaXRlKFgpJiZNYXRoLmZsb29yKFgpPT09WDtmdW5jdGlvbiBZKFgsVz1cIiB8IFwiKXtyZXR1cm4gWC5tYXAoKEcpPT50eXBlb2YgRz09PVwic3RyaW5nXCI/YCcke0d9J2A6Rykuam9pbihXKX0kLmpvaW5WYWx1ZXM9WSwkLmpzb25TdHJpbmdpZnlSZXBsYWNlcj0oWCxXKT0+e2lmKHR5cGVvZiBXPT09XCJiaWdpbnRcIilyZXR1cm4gVy50b1N0cmluZygpO3JldHVybiBXfX0pKFUkfHwoVSQ9e30pKTt2YXIgclo7KGZ1bmN0aW9uKCQpeyQubWVyZ2VTaGFwZXM9KFEsSik9PntyZXR1cm57Li4uUSwuLi5KfX19KShyWnx8KHJaPXt9KSk7dmFyIEM9VSQuYXJyYXlUb0VudW0oW1wic3RyaW5nXCIsXCJuYW5cIixcIm51bWJlclwiLFwiaW50ZWdlclwiLFwiZmxvYXRcIixcImJvb2xlYW5cIixcImRhdGVcIixcImJpZ2ludFwiLFwic3ltYm9sXCIsXCJmdW5jdGlvblwiLFwidW5kZWZpbmVkXCIsXCJudWxsXCIsXCJhcnJheVwiLFwib2JqZWN0XCIsXCJ1bmtub3duXCIsXCJwcm9taXNlXCIsXCJ2b2lkXCIsXCJuZXZlclwiLFwibWFwXCIsXCJzZXRcIl0pLHA0PSgkKT0+e3N3aXRjaCh0eXBlb2YgJCl7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIEMudW5kZWZpbmVkO2Nhc2VcInN0cmluZ1wiOnJldHVybiBDLnN0cmluZztjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKCQpP0MubmFuOkMubnVtYmVyO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gQy5ib29sZWFuO2Nhc2VcImZ1bmN0aW9uXCI6cmV0dXJuIEMuZnVuY3Rpb247Y2FzZVwiYmlnaW50XCI6cmV0dXJuIEMuYmlnaW50O2Nhc2VcInN5bWJvbFwiOnJldHVybiBDLnN5bWJvbDtjYXNlXCJvYmplY3RcIjppZihBcnJheS5pc0FycmF5KCQpKXJldHVybiBDLmFycmF5O2lmKCQ9PT1udWxsKXJldHVybiBDLm51bGw7aWYoJC50aGVuJiZ0eXBlb2YgJC50aGVuPT09XCJmdW5jdGlvblwiJiYkLmNhdGNoJiZ0eXBlb2YgJC5jYXRjaD09PVwiZnVuY3Rpb25cIilyZXR1cm4gQy5wcm9taXNlO2lmKHR5cGVvZiBNYXA8XCJ1XCImJiQgaW5zdGFuY2VvZiBNYXApcmV0dXJuIEMubWFwO2lmKHR5cGVvZiBTZXQ8XCJ1XCImJiQgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIEMuc2V0O2lmKHR5cGVvZiBEYXRlPFwidVwiJiYkIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gQy5kYXRlO3JldHVybiBDLm9iamVjdDtkZWZhdWx0OnJldHVybiBDLnVua25vd259fTt2YXIgRT1VJC5hcnJheVRvRW51bShbXCJpbnZhbGlkX3R5cGVcIixcImludmFsaWRfbGl0ZXJhbFwiLFwiY3VzdG9tXCIsXCJpbnZhbGlkX3VuaW9uXCIsXCJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3JcIixcImludmFsaWRfZW51bV92YWx1ZVwiLFwidW5yZWNvZ25pemVkX2tleXNcIixcImludmFsaWRfYXJndW1lbnRzXCIsXCJpbnZhbGlkX3JldHVybl90eXBlXCIsXCJpbnZhbGlkX2RhdGVcIixcImludmFsaWRfc3RyaW5nXCIsXCJ0b29fc21hbGxcIixcInRvb19iaWdcIixcImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzXCIsXCJub3RfbXVsdGlwbGVfb2ZcIixcIm5vdF9maW5pdGVcIl0pO2NsYXNzIGY2IGV4dGVuZHMgRXJyb3J7Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmlzc3Vlc31jb25zdHJ1Y3RvcigkKXtzdXBlcigpO3RoaXMuaXNzdWVzPVtdLHRoaXMuYWRkSXNzdWU9KEopPT57dGhpcy5pc3N1ZXM9Wy4uLnRoaXMuaXNzdWVzLEpdfSx0aGlzLmFkZElzc3Vlcz0oSj1bXSk9Pnt0aGlzLmlzc3Vlcz1bLi4udGhpcy5pc3N1ZXMsLi4uSl19O2xldCBRPW5ldy50YXJnZXQucHJvdG90eXBlO2lmKE9iamVjdC5zZXRQcm90b3R5cGVPZilPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxRKTtlbHNlIHRoaXMuX19wcm90b19fPVE7dGhpcy5uYW1lPVwiWm9kRXJyb3JcIix0aGlzLmlzc3Vlcz0kfWZvcm1hdCgkKXtsZXQgUT0kfHxmdW5jdGlvbihYKXtyZXR1cm4gWC5tZXNzYWdlfSxKPXtfZXJyb3JzOltdfSxZPShYKT0+e2ZvcihsZXQgVyBvZiBYLmlzc3VlcylpZihXLmNvZGU9PT1cImludmFsaWRfdW5pb25cIilXLnVuaW9uRXJyb3JzLm1hcChZKTtlbHNlIGlmKFcuY29kZT09PVwiaW52YWxpZF9yZXR1cm5fdHlwZVwiKVkoVy5yZXR1cm5UeXBlRXJyb3IpO2Vsc2UgaWYoVy5jb2RlPT09XCJpbnZhbGlkX2FyZ3VtZW50c1wiKVkoVy5hcmd1bWVudHNFcnJvcik7ZWxzZSBpZihXLnBhdGgubGVuZ3RoPT09MClKLl9lcnJvcnMucHVzaChRKFcpKTtlbHNle2xldCBHPUosVT0wO3doaWxlKFU8Vy5wYXRoLmxlbmd0aCl7bGV0IEg9Vy5wYXRoW1VdO2lmKFUhPT1XLnBhdGgubGVuZ3RoLTEpR1tIXT1HW0hdfHx7X2Vycm9yczpbXX07ZWxzZSBHW0hdPUdbSF18fHtfZXJyb3JzOltdfSxHW0hdLl9lcnJvcnMucHVzaChRKFcpKTtHPUdbSF0sVSsrfX19O3JldHVybiBZKHRoaXMpLEp9c3RhdGljIGFzc2VydCgkKXtpZighKCQgaW5zdGFuY2VvZiBmNikpdGhyb3cgRXJyb3IoYE5vdCBhIFpvZEVycm9yOiAkeyR9YCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tZXNzYWdlfWdldCBtZXNzYWdlKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaXNzdWVzLFUkLmpzb25TdHJpbmdpZnlSZXBsYWNlciwyKX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfWZsYXR0ZW4oJD0oUSk9PlEubWVzc2FnZSl7bGV0IFE9e30sSj1bXTtmb3IobGV0IFkgb2YgdGhpcy5pc3N1ZXMpaWYoWS5wYXRoLmxlbmd0aD4wKXtsZXQgWD1ZLnBhdGhbMF07UVtYXT1RW1hdfHxbXSxRW1hdLnB1c2goJChZKSl9ZWxzZSBKLnB1c2goJChZKSk7cmV0dXJue2Zvcm1FcnJvcnM6SixmaWVsZEVycm9yczpRfX1nZXQgZm9ybUVycm9ycygpe3JldHVybiB0aGlzLmZsYXR0ZW4oKX19ZjYuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgZjYoJCl9O3ZhciBLaD0oJCxRKT0+e2xldCBKO3N3aXRjaCgkLmNvZGUpe2Nhc2UgRS5pbnZhbGlkX3R5cGU6aWYoJC5yZWNlaXZlZD09PUMudW5kZWZpbmVkKUo9XCJSZXF1aXJlZFwiO2Vsc2UgSj1gRXhwZWN0ZWQgJHskLmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHskLnJlY2VpdmVkfWA7YnJlYWs7Y2FzZSBFLmludmFsaWRfbGl0ZXJhbDpKPWBJbnZhbGlkIGxpdGVyYWwgdmFsdWUsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoJC5leHBlY3RlZCxVJC5qc29uU3RyaW5naWZ5UmVwbGFjZXIpfWA7YnJlYWs7Y2FzZSBFLnVucmVjb2duaXplZF9rZXlzOko9YFVucmVjb2duaXplZCBrZXkocykgaW4gb2JqZWN0OiAke1UkLmpvaW5WYWx1ZXMoJC5rZXlzLFwiLCBcIil9YDticmVhaztjYXNlIEUuaW52YWxpZF91bmlvbjpKPVwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2UgRS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6Sj1gSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke1UkLmpvaW5WYWx1ZXMoJC5vcHRpb25zKX1gO2JyZWFrO2Nhc2UgRS5pbnZhbGlkX2VudW1fdmFsdWU6Sj1gSW52YWxpZCBlbnVtIHZhbHVlLiBFeHBlY3RlZCAke1UkLmpvaW5WYWx1ZXMoJC5vcHRpb25zKX0sIHJlY2VpdmVkICckeyQucmVjZWl2ZWR9J2A7YnJlYWs7Y2FzZSBFLmludmFsaWRfYXJndW1lbnRzOko9XCJJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50c1wiO2JyZWFrO2Nhc2UgRS5pbnZhbGlkX3JldHVybl90eXBlOko9XCJJbnZhbGlkIGZ1bmN0aW9uIHJldHVybiB0eXBlXCI7YnJlYWs7Y2FzZSBFLmludmFsaWRfZGF0ZTpKPVwiSW52YWxpZCBkYXRlXCI7YnJlYWs7Y2FzZSBFLmludmFsaWRfc3RyaW5nOmlmKHR5cGVvZiAkLnZhbGlkYXRpb249PT1cIm9iamVjdFwiKWlmKFwiaW5jbHVkZXNcImluICQudmFsaWRhdGlvbil7aWYoSj1gSW52YWxpZCBpbnB1dDogbXVzdCBpbmNsdWRlIFwiJHskLnZhbGlkYXRpb24uaW5jbHVkZXN9XCJgLHR5cGVvZiAkLnZhbGlkYXRpb24ucG9zaXRpb249PT1cIm51bWJlclwiKUo9YCR7Sn0gYXQgb25lIG9yIG1vcmUgcG9zaXRpb25zIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAkeyQudmFsaWRhdGlvbi5wb3NpdGlvbn1gfWVsc2UgaWYoXCJzdGFydHNXaXRoXCJpbiAkLnZhbGlkYXRpb24pSj1gSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoIFwiJHskLnZhbGlkYXRpb24uc3RhcnRzV2l0aH1cImA7ZWxzZSBpZihcImVuZHNXaXRoXCJpbiAkLnZhbGlkYXRpb24pSj1gSW52YWxpZCBpbnB1dDogbXVzdCBlbmQgd2l0aCBcIiR7JC52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDtlbHNlIFUkLmFzc2VydE5ldmVyKCQudmFsaWRhdGlvbik7ZWxzZSBpZigkLnZhbGlkYXRpb24hPT1cInJlZ2V4XCIpSj1gSW52YWxpZCAkeyQudmFsaWRhdGlvbn1gO2Vsc2UgSj1cIkludmFsaWRcIjticmVhaztjYXNlIEUudG9vX3NtYWxsOmlmKCQudHlwZT09PVwiYXJyYXlcIilKPWBBcnJheSBtdXN0IGNvbnRhaW4gJHskLmV4YWN0P1wiZXhhY3RseVwiOiQuaW5jbHVzaXZlP1wiYXQgbGVhc3RcIjpcIm1vcmUgdGhhblwifSAkeyQubWluaW11bX0gZWxlbWVudChzKWA7ZWxzZSBpZigkLnR5cGU9PT1cInN0cmluZ1wiKUo9YFN0cmluZyBtdXN0IGNvbnRhaW4gJHskLmV4YWN0P1wiZXhhY3RseVwiOiQuaW5jbHVzaXZlP1wiYXQgbGVhc3RcIjpcIm92ZXJcIn0gJHskLm1pbmltdW19IGNoYXJhY3RlcihzKWA7ZWxzZSBpZigkLnR5cGU9PT1cIm51bWJlclwiKUo9YE51bWJlciBtdXN0IGJlICR7JC5leGFjdD9cImV4YWN0bHkgZXF1YWwgdG8gXCI6JC5pbmNsdXNpdmU/XCJncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gXCI6XCJncmVhdGVyIHRoYW4gXCJ9JHskLm1pbmltdW19YDtlbHNlIGlmKCQudHlwZT09PVwiYmlnaW50XCIpSj1gTnVtYmVyIG11c3QgYmUgJHskLmV4YWN0P1wiZXhhY3RseSBlcXVhbCB0byBcIjokLmluY2x1c2l2ZT9cImdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcIjpcImdyZWF0ZXIgdGhhbiBcIn0keyQubWluaW11bX1gO2Vsc2UgaWYoJC50eXBlPT09XCJkYXRlXCIpSj1gRGF0ZSBtdXN0IGJlICR7JC5leGFjdD9cImV4YWN0bHkgZXF1YWwgdG8gXCI6JC5pbmNsdXNpdmU/XCJncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gXCI6XCJncmVhdGVyIHRoYW4gXCJ9JHtuZXcgRGF0ZShOdW1iZXIoJC5taW5pbXVtKSl9YDtlbHNlIEo9XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSBFLnRvb19iaWc6aWYoJC50eXBlPT09XCJhcnJheVwiKUo9YEFycmF5IG11c3QgY29udGFpbiAkeyQuZXhhY3Q/XCJleGFjdGx5XCI6JC5pbmNsdXNpdmU/XCJhdCBtb3N0XCI6XCJsZXNzIHRoYW5cIn0gJHskLm1heGltdW19IGVsZW1lbnQocylgO2Vsc2UgaWYoJC50eXBlPT09XCJzdHJpbmdcIilKPWBTdHJpbmcgbXVzdCBjb250YWluICR7JC5leGFjdD9cImV4YWN0bHlcIjokLmluY2x1c2l2ZT9cImF0IG1vc3RcIjpcInVuZGVyXCJ9ICR7JC5tYXhpbXVtfSBjaGFyYWN0ZXIocylgO2Vsc2UgaWYoJC50eXBlPT09XCJudW1iZXJcIilKPWBOdW1iZXIgbXVzdCBiZSAkeyQuZXhhY3Q/XCJleGFjdGx5XCI6JC5pbmNsdXNpdmU/XCJsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIjpcImxlc3MgdGhhblwifSAkeyQubWF4aW11bX1gO2Vsc2UgaWYoJC50eXBlPT09XCJiaWdpbnRcIilKPWBCaWdJbnQgbXVzdCBiZSAkeyQuZXhhY3Q/XCJleGFjdGx5XCI6JC5pbmNsdXNpdmU/XCJsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIjpcImxlc3MgdGhhblwifSAkeyQubWF4aW11bX1gO2Vsc2UgaWYoJC50eXBlPT09XCJkYXRlXCIpSj1gRGF0ZSBtdXN0IGJlICR7JC5leGFjdD9cImV4YWN0bHlcIjokLmluY2x1c2l2ZT9cInNtYWxsZXIgdGhhbiBvciBlcXVhbCB0b1wiOlwic21hbGxlciB0aGFuXCJ9ICR7bmV3IERhdGUoTnVtYmVyKCQubWF4aW11bSkpfWA7ZWxzZSBKPVwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2UgRS5jdXN0b206Sj1cIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIEUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6Sj1cIkludGVyc2VjdGlvbiByZXN1bHRzIGNvdWxkIG5vdCBiZSBtZXJnZWRcIjticmVhaztjYXNlIEUubm90X211bHRpcGxlX29mOko9YE51bWJlciBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHskLm11bHRpcGxlT2Z9YDticmVhaztjYXNlIEUubm90X2Zpbml0ZTpKPVwiTnVtYmVyIG11c3QgYmUgZmluaXRlXCI7YnJlYWs7ZGVmYXVsdDpKPVEuZGVmYXVsdEVycm9yLFUkLmFzc2VydE5ldmVyKCQpfXJldHVybnttZXNzYWdlOkp9fSxBMT1LaDt2YXIgcWg9QTE7ZnVuY3Rpb24gJFEoKXtyZXR1cm4gcWh9dmFyIHk1PSgkKT0+e2xldHtkYXRhOlEscGF0aDpKLGVycm9yTWFwczpZLGlzc3VlRGF0YTpYfT0kLFc9Wy4uLkosLi4uWC5wYXRofHxbXV0sRz17Li4uWCxwYXRoOld9O2lmKFgubWVzc2FnZSE9PXZvaWQgMClyZXR1cm57Li4uWCxwYXRoOlcsbWVzc2FnZTpYLm1lc3NhZ2V9O2xldCBVPVwiXCIsSD1ZLmZpbHRlcigocSk9PiEhcSkuc2xpY2UoKS5yZXZlcnNlKCk7Zm9yKGxldCBxIG9mIEgpVT1xKEcse2RhdGE6USxkZWZhdWx0RXJyb3I6VX0pLm1lc3NhZ2U7cmV0dXJuey4uLlgscGF0aDpXLG1lc3NhZ2U6VX19O2Z1bmN0aW9uIHkoJCxRKXtsZXQgSj0kUSgpLFk9eTUoe2lzc3VlRGF0YTpRLGRhdGE6JC5kYXRhLHBhdGg6JC5wYXRoLGVycm9yTWFwczpbJC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLCQuc2NoZW1hRXJyb3JNYXAsSixKPT09QTE/dm9pZCAwOkExXS5maWx0ZXIoKFgpPT4hIVgpfSk7JC5jb21tb24uaXNzdWVzLnB1c2goWSl9Y2xhc3MgRzZ7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPVwidmFsaWRcIn1kaXJ0eSgpe2lmKHRoaXMudmFsdWU9PT1cInZhbGlkXCIpdGhpcy52YWx1ZT1cImRpcnR5XCJ9YWJvcnQoKXtpZih0aGlzLnZhbHVlIT09XCJhYm9ydGVkXCIpdGhpcy52YWx1ZT1cImFib3J0ZWRcIn1zdGF0aWMgbWVyZ2VBcnJheSgkLFEpe2xldCBKPVtdO2ZvcihsZXQgWSBvZiBRKXtpZihZLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKFkuc3RhdHVzPT09XCJkaXJ0eVwiKSQuZGlydHkoKTtKLnB1c2goWS52YWx1ZSl9cmV0dXJue3N0YXR1czokLnZhbHVlLHZhbHVlOkp9fXN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKCQsUSl7bGV0IEo9W107Zm9yKGxldCBZIG9mIFEpe2xldCBYPWF3YWl0IFkua2V5LFc9YXdhaXQgWS52YWx1ZTtKLnB1c2goe2tleTpYLHZhbHVlOld9KX1yZXR1cm4gRzYubWVyZ2VPYmplY3RTeW5jKCQsSil9c3RhdGljIG1lcmdlT2JqZWN0U3luYygkLFEpe2xldCBKPXt9O2ZvcihsZXQgWSBvZiBRKXtsZXR7a2V5OlgsdmFsdWU6V309WTtpZihYLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKFcuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoWC5zdGF0dXM9PT1cImRpcnR5XCIpJC5kaXJ0eSgpO2lmKFcuc3RhdHVzPT09XCJkaXJ0eVwiKSQuZGlydHkoKTtpZihYLnZhbHVlIT09XCJfX3Byb3RvX19cIiYmKHR5cGVvZiBXLnZhbHVlPFwidVwifHxZLmFsd2F5c1NldCkpSltYLnZhbHVlXT1XLnZhbHVlfXJldHVybntzdGF0dXM6JC52YWx1ZSx2YWx1ZTpKfX19dmFyIG49T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOlwiYWJvcnRlZFwifSkseDg9KCQpPT4oe3N0YXR1czpcImRpcnR5XCIsdmFsdWU6JH0pLEI2PSgkKT0+KHtzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOiR9KSxwSD0oJCk9PiQuc3RhdHVzPT09XCJhYm9ydGVkXCIsZEg9KCQpPT4kLnN0YXR1cz09PVwiZGlydHlcIixMMD0oJCk9PiQuc3RhdHVzPT09XCJ2YWxpZFwiLFFRPSgkKT0+dHlwZW9mIFByb21pc2U8XCJ1XCImJiQgaW5zdGFuY2VvZiBQcm9taXNlO3ZhciBtOyhmdW5jdGlvbigkKXskLmVyclRvT2JqPShRKT0+dHlwZW9mIFE9PT1cInN0cmluZ1wiP3ttZXNzYWdlOlF9OlF8fHt9LCQudG9TdHJpbmc9KFEpPT50eXBlb2YgUT09PVwic3RyaW5nXCI/UTpRPy5tZXNzYWdlfSkobXx8KG09e30pKTtjbGFzcyBLNHtjb25zdHJ1Y3RvcigkLFEsSixZKXt0aGlzLl9jYWNoZWRQYXRoPVtdLHRoaXMucGFyZW50PSQsdGhpcy5kYXRhPVEsdGhpcy5fcGF0aD1KLHRoaXMuX2tleT1ZfWdldCBwYXRoKCl7aWYoIXRoaXMuX2NhY2hlZFBhdGgubGVuZ3RoKWlmKEFycmF5LmlzQXJyYXkodGhpcy5fa2V5KSl0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwuLi50aGlzLl9rZXkpO2Vsc2UgdGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsdGhpcy5fa2V5KTtyZXR1cm4gdGhpcy5fY2FjaGVkUGF0aH19dmFyIG9aPSgkLFEpPT57aWYoTDAoUSkpcmV0dXJue3N1Y2Nlc3M6ITAsZGF0YTpRLnZhbHVlfTtlbHNle2lmKCEkLmNvbW1vbi5pc3N1ZXMubGVuZ3RoKXRocm93IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWQgYnV0IG5vIGlzc3VlcyBkZXRlY3RlZC5cIik7cmV0dXJue3N1Y2Nlc3M6ITEsZ2V0IGVycm9yKCl7aWYodGhpcy5fZXJyb3IpcmV0dXJuIHRoaXMuX2Vycm9yO2xldCBKPW5ldyBmNigkLmNvbW1vbi5pc3N1ZXMpO3JldHVybiB0aGlzLl9lcnJvcj1KLHRoaXMuX2Vycm9yfX19fTtmdW5jdGlvbiBlKCQpe2lmKCEkKXJldHVybnt9O2xldHtlcnJvck1hcDpRLGludmFsaWRfdHlwZV9lcnJvcjpKLHJlcXVpcmVkX2Vycm9yOlksZGVzY3JpcHRpb246WH09JDtpZihRJiYoSnx8WSkpdGhyb3cgRXJyb3IoYENhbid0IHVzZSBcImludmFsaWRfdHlwZV9lcnJvclwiIG9yIFwicmVxdWlyZWRfZXJyb3JcIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuYCk7aWYoUSlyZXR1cm57ZXJyb3JNYXA6USxkZXNjcmlwdGlvbjpYfTtyZXR1cm57ZXJyb3JNYXA6KEcsVSk9PntsZXR7bWVzc2FnZTpIfT0kO2lmKEcuY29kZT09PVwiaW52YWxpZF9lbnVtX3ZhbHVlXCIpcmV0dXJue21lc3NhZ2U6SD8/VS5kZWZhdWx0RXJyb3J9O2lmKHR5cGVvZiBVLmRhdGE+XCJ1XCIpcmV0dXJue21lc3NhZ2U6SD8/WT8/VS5kZWZhdWx0RXJyb3J9O2lmKEcuY29kZSE9PVwiaW52YWxpZF90eXBlXCIpcmV0dXJue21lc3NhZ2U6VS5kZWZhdWx0RXJyb3J9O3JldHVybnttZXNzYWdlOkg/P0o/P1UuZGVmYXVsdEVycm9yfX0sZGVzY3JpcHRpb246WH19Y2xhc3MgWSR7Z2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZi5kZXNjcmlwdGlvbn1fZ2V0VHlwZSgkKXtyZXR1cm4gcDQoJC5kYXRhKX1fZ2V0T3JSZXR1cm5DdHgoJCxRKXtyZXR1cm4gUXx8e2NvbW1vbjokLnBhcmVudC5jb21tb24sZGF0YTokLmRhdGEscGFyc2VkVHlwZTpwNCgkLmRhdGEpLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXRoOiQucGF0aCxwYXJlbnQ6JC5wYXJlbnR9fV9wcm9jZXNzSW5wdXRQYXJhbXMoJCl7cmV0dXJue3N0YXR1czpuZXcgRzYsY3R4Ontjb21tb246JC5wYXJlbnQuY29tbW9uLGRhdGE6JC5kYXRhLHBhcnNlZFR5cGU6cDQoJC5kYXRhKSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGF0aDokLnBhdGgscGFyZW50OiQucGFyZW50fX19X3BhcnNlU3luYygkKXtsZXQgUT10aGlzLl9wYXJzZSgkKTtpZihRUShRKSl0aHJvdyBFcnJvcihcIlN5bmNocm9ub3VzIHBhcnNlIGVuY291bnRlcmVkIHByb21pc2UuXCIpO3JldHVybiBRfV9wYXJzZUFzeW5jKCQpe2xldCBRPXRoaXMuX3BhcnNlKCQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoUSl9cGFyc2UoJCxRKXtsZXQgSj10aGlzLnNhZmVQYXJzZSgkLFEpO2lmKEouc3VjY2VzcylyZXR1cm4gSi5kYXRhO3Rocm93IEouZXJyb3J9c2FmZVBhcnNlKCQsUSl7bGV0IEo9e2NvbW1vbjp7aXNzdWVzOltdLGFzeW5jOlE/LmFzeW5jPz8hMSxjb250ZXh0dWFsRXJyb3JNYXA6UT8uZXJyb3JNYXB9LHBhdGg6UT8ucGF0aHx8W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6JCxwYXJzZWRUeXBlOnA0KCQpfSxZPXRoaXMuX3BhcnNlU3luYyh7ZGF0YTokLHBhdGg6Si5wYXRoLHBhcmVudDpKfSk7cmV0dXJuIG9aKEosWSl9XCJ+dmFsaWRhdGVcIigkKXtsZXQgUT17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6ISF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jfSxwYXRoOltdLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXJlbnQ6bnVsbCxkYXRhOiQscGFyc2VkVHlwZTpwNCgkKX07aWYoIXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmMpdHJ5e2xldCBKPXRoaXMuX3BhcnNlU3luYyh7ZGF0YTokLHBhdGg6W10scGFyZW50OlF9KTtyZXR1cm4gTDAoSik/e3ZhbHVlOkoudmFsdWV9Ontpc3N1ZXM6US5jb21tb24uaXNzdWVzfX1jYXRjaChKKXtpZihKPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhcImVuY291bnRlcmVkXCIpKXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmM9ITA7US5jb21tb249e2lzc3VlczpbXSxhc3luYzohMH19cmV0dXJuIHRoaXMuX3BhcnNlQXN5bmMoe2RhdGE6JCxwYXRoOltdLHBhcmVudDpRfSkudGhlbigoSik9PkwwKEopP3t2YWx1ZTpKLnZhbHVlfTp7aXNzdWVzOlEuY29tbW9uLmlzc3Vlc30pfWFzeW5jIHBhcnNlQXN5bmMoJCxRKXtsZXQgSj1hd2FpdCB0aGlzLnNhZmVQYXJzZUFzeW5jKCQsUSk7aWYoSi5zdWNjZXNzKXJldHVybiBKLmRhdGE7dGhyb3cgSi5lcnJvcn1hc3luYyBzYWZlUGFyc2VBc3luYygkLFEpe2xldCBKPXtjb21tb246e2lzc3VlczpbXSxjb250ZXh0dWFsRXJyb3JNYXA6UT8uZXJyb3JNYXAsYXN5bmM6ITB9LHBhdGg6UT8ucGF0aHx8W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6JCxwYXJzZWRUeXBlOnA0KCQpfSxZPXRoaXMuX3BhcnNlKHtkYXRhOiQscGF0aDpKLnBhdGgscGFyZW50Okp9KSxYPWF3YWl0KFFRKFkpP1k6UHJvbWlzZS5yZXNvbHZlKFkpKTtyZXR1cm4gb1ooSixYKX1yZWZpbmUoJCxRKXtsZXQgSj0oWSk9PntpZih0eXBlb2YgUT09PVwic3RyaW5nXCJ8fHR5cGVvZiBRPlwidVwiKXJldHVybnttZXNzYWdlOlF9O2Vsc2UgaWYodHlwZW9mIFE9PT1cImZ1bmN0aW9uXCIpcmV0dXJuIFEoWSk7ZWxzZSByZXR1cm4gUX07cmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKFksWCk9PntsZXQgVz0kKFkpLEc9KCk9PlguYWRkSXNzdWUoe2NvZGU6RS5jdXN0b20sLi4uSihZKX0pO2lmKHR5cGVvZiBQcm9taXNlPFwidVwiJiZXIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gVy50aGVuKChVKT0+e2lmKCFVKXJldHVybiBHKCksITE7ZWxzZSByZXR1cm4hMH0pO2lmKCFXKXJldHVybiBHKCksITE7ZWxzZSByZXR1cm4hMH0pfXJlZmluZW1lbnQoJCxRKXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgoSixZKT0+e2lmKCEkKEopKXJldHVybiBZLmFkZElzc3VlKHR5cGVvZiBRPT09XCJmdW5jdGlvblwiP1EoSixZKTpRKSwhMTtlbHNlIHJldHVybiEwfSl9X3JlZmluZW1lbnQoJCl7cmV0dXJuIG5ldyBiNCh7c2NoZW1hOnRoaXMsdHlwZU5hbWU6Yi5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZTpcInJlZmluZW1lbnRcIixyZWZpbmVtZW50OiR9fSl9c3VwZXJSZWZpbmUoJCl7cmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoJCl9Y29uc3RydWN0b3IoJCl7dGhpcy5zcGE9dGhpcy5zYWZlUGFyc2VBc3luYyx0aGlzLl9kZWY9JCx0aGlzLnBhcnNlPXRoaXMucGFyc2UuYmluZCh0aGlzKSx0aGlzLnNhZmVQYXJzZT10aGlzLnNhZmVQYXJzZS5iaW5kKHRoaXMpLHRoaXMucGFyc2VBc3luYz10aGlzLnBhcnNlQXN5bmMuYmluZCh0aGlzKSx0aGlzLnNhZmVQYXJzZUFzeW5jPXRoaXMuc2FmZVBhcnNlQXN5bmMuYmluZCh0aGlzKSx0aGlzLnNwYT10aGlzLnNwYS5iaW5kKHRoaXMpLHRoaXMucmVmaW5lPXRoaXMucmVmaW5lLmJpbmQodGhpcyksdGhpcy5yZWZpbmVtZW50PXRoaXMucmVmaW5lbWVudC5iaW5kKHRoaXMpLHRoaXMuc3VwZXJSZWZpbmU9dGhpcy5zdXBlclJlZmluZS5iaW5kKHRoaXMpLHRoaXMub3B0aW9uYWw9dGhpcy5vcHRpb25hbC5iaW5kKHRoaXMpLHRoaXMubnVsbGFibGU9dGhpcy5udWxsYWJsZS5iaW5kKHRoaXMpLHRoaXMubnVsbGlzaD10aGlzLm51bGxpc2guYmluZCh0aGlzKSx0aGlzLmFycmF5PXRoaXMuYXJyYXkuYmluZCh0aGlzKSx0aGlzLnByb21pc2U9dGhpcy5wcm9taXNlLmJpbmQodGhpcyksdGhpcy5vcj10aGlzLm9yLmJpbmQodGhpcyksdGhpcy5hbmQ9dGhpcy5hbmQuYmluZCh0aGlzKSx0aGlzLnRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybS5iaW5kKHRoaXMpLHRoaXMuYnJhbmQ9dGhpcy5icmFuZC5iaW5kKHRoaXMpLHRoaXMuZGVmYXVsdD10aGlzLmRlZmF1bHQuYmluZCh0aGlzKSx0aGlzLmNhdGNoPXRoaXMuY2F0Y2guYmluZCh0aGlzKSx0aGlzLmRlc2NyaWJlPXRoaXMuZGVzY3JpYmUuYmluZCh0aGlzKSx0aGlzLnBpcGU9dGhpcy5waXBlLmJpbmQodGhpcyksdGhpcy5yZWFkb25seT10aGlzLnJlYWRvbmx5LmJpbmQodGhpcyksdGhpcy5pc051bGxhYmxlPXRoaXMuaXNOdWxsYWJsZS5iaW5kKHRoaXMpLHRoaXMuaXNPcHRpb25hbD10aGlzLmlzT3B0aW9uYWwuYmluZCh0aGlzKSx0aGlzW1wifnN0YW5kYXJkXCJdPXt2ZXJzaW9uOjEsdmVuZG9yOlwiem9kXCIsdmFsaWRhdGU6KFEpPT50aGlzW1wifnZhbGlkYXRlXCJdKFEpfX1vcHRpb25hbCgpe3JldHVybiBvNi5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW51bGxhYmxlKCl7cmV0dXJuIEkxLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGlzaCgpe3JldHVybiB0aGlzLm51bGxhYmxlKCkub3B0aW9uYWwoKX1hcnJheSgpe3JldHVybiBFNC5jcmVhdGUodGhpcyl9cHJvbWlzZSgpe3JldHVybiB1OC5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW9yKCQpe3JldHVybiBHUS5jcmVhdGUoW3RoaXMsJF0sdGhpcy5fZGVmKX1hbmQoJCl7cmV0dXJuIFVRLmNyZWF0ZSh0aGlzLCQsdGhpcy5fZGVmKX10cmFuc2Zvcm0oJCl7cmV0dXJuIG5ldyBiNCh7Li4uZSh0aGlzLl9kZWYpLHNjaGVtYTp0aGlzLHR5cGVOYW1lOmIuWm9kRWZmZWN0cyxlZmZlY3Q6e3R5cGU6XCJ0cmFuc2Zvcm1cIix0cmFuc2Zvcm06JH19KX1kZWZhdWx0KCQpe2xldCBRPXR5cGVvZiAkPT09XCJmdW5jdGlvblwiPyQ6KCk9PiQ7cmV0dXJuIG5ldyBWUSh7Li4uZSh0aGlzLl9kZWYpLGlubmVyVHlwZTp0aGlzLGRlZmF1bHRWYWx1ZTpRLHR5cGVOYW1lOmIuWm9kRGVmYXVsdH0pfWJyYW5kKCl7cmV0dXJuIG5ldyBvSCh7dHlwZU5hbWU6Yi5ab2RCcmFuZGVkLHR5cGU6dGhpcywuLi5lKHRoaXMuX2RlZil9KX1jYXRjaCgkKXtsZXQgUT10eXBlb2YgJD09PVwiZnVuY3Rpb25cIj8kOigpPT4kO3JldHVybiBuZXcgQlEoey4uLmUodGhpcy5fZGVmKSxpbm5lclR5cGU6dGhpcyxjYXRjaFZhbHVlOlEsdHlwZU5hbWU6Yi5ab2RDYXRjaH0pfWRlc2NyaWJlKCQpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7Li4udGhpcy5fZGVmLGRlc2NyaXB0aW9uOiR9KX1waXBlKCQpe3JldHVybiBkNS5jcmVhdGUodGhpcywkKX1yZWFkb25seSgpe3JldHVybiB6US5jcmVhdGUodGhpcyl9aXNPcHRpb25hbCgpe3JldHVybiB0aGlzLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3N9aXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfX12YXIgVmg9L15jW15cXHMtXXs4LH0kL2ksQmg9L15bMC05YS16XSskLyx6aD0vXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kL2ksTmg9L15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kL2ksd2g9L15bYS16MC05Xy1dezIxfSQvaSxPaD0vXltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dKiQvLERoPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xcZCtZKXwoPzpbLStdP1xcZCtbLixdXFxkK1kkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/Oig/OlstK10/XFxkK1cpfCg/OlstK10/XFxkK1suLF1cXGQrVyQpKT8oPzooPzpbLStdP1xcZCtEKXwoPzpbLStdP1xcZCtbLixdXFxkK0QkKSk/KD86VCg/PVtcXGQrLV0pKD86KD86Wy0rXT9cXGQrSCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtIJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzpbLStdP1xcZCsoPzpbLixdXFxkKyk/Uyk/KT8/JC8sRmg9L14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVowLTlfJytcXC1cXC5dKilbQS1aMC05XystXUAoW0EtWjAtOV1bQS1aMC05XFwtXSpcXC4pK1tBLVpdezIsfSQvaSxaaD1cIl4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskXCIsaUgsTWg9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxMaD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLyxqaD0vXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSkkLyxBaD0vXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLEloPS9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLyxSaD0vXihbMC05YS16QS1aLV9dezR9KSooKFswLTlhLXpBLVotX117Mn0oPT0pPyl8KFswLTlhLXpBLVotX117M30oPSk/KSk/JC8sdFo9XCIoKFxcXFxkXFxcXGRbMjQ2OF1bMDQ4XXxcXFxcZFxcXFxkWzEzNTc5XVsyNl18XFxcXGRcXFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcXFxkezR9LSgoMFsxMzU3OF18MVswMl0pLSgwWzEtOV18WzEyXVxcXFxkfDNbMDFdKXwoMFs0NjldfDExKS0oMFsxLTldfFsxMl1cXFxcZHwzMCl8KDAyKS0oMFsxLTldfDFcXFxcZHwyWzAtOF0pKSlcIixQaD1uZXcgUmVnRXhwKGBeJHt0Wn0kYCk7ZnVuY3Rpb24gYVooJCl7bGV0IFE9XCJbMC01XVxcXFxkXCI7aWYoJC5wcmVjaXNpb24pUT1gJHtRfVxcXFwuXFxcXGR7JHskLnByZWNpc2lvbn19YDtlbHNlIGlmKCQucHJlY2lzaW9uPT1udWxsKVE9YCR7UX0oXFxcXC5cXFxcZCspP2A7bGV0IEo9JC5wcmVjaXNpb24/XCIrXCI6XCI/XCI7cmV0dXJuYChbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkKDoke1F9KSR7Sn1gfWZ1bmN0aW9uIEVoKCQpe3JldHVybiBuZXcgUmVnRXhwKGBeJHthWigkKX0kYCl9ZnVuY3Rpb24gYmgoJCl7bGV0IFE9YCR7dFp9VCR7YVooJCl9YCxKPVtdO2lmKEoucHVzaCgkLmxvY2FsP1wiWj9cIjpcIlpcIiksJC5vZmZzZXQpSi5wdXNoKFwiKFsrLV1cXFxcZHsyfTo/XFxcXGR7Mn0pXCIpO3JldHVybiBRPWAke1F9KCR7Si5qb2luKFwifFwiKX0pYCxuZXcgUmVnRXhwKGBeJHtRfSRgKX1mdW5jdGlvbiBfaCgkLFEpe2lmKChRPT09XCJ2NFwifHwhUSkmJk1oLnRlc3QoJCkpcmV0dXJuITA7aWYoKFE9PT1cInY2XCJ8fCFRKSYmamgudGVzdCgkKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBTaCgkLFEpe2lmKCFPaC50ZXN0KCQpKXJldHVybiExO3RyeXtsZXRbSl09JC5zcGxpdChcIi5cIik7aWYoIUopcmV0dXJuITE7bGV0IFk9Si5yZXBsYWNlKC8tL2csXCIrXCIpLnJlcGxhY2UoL18vZyxcIi9cIikucGFkRW5kKEoubGVuZ3RoKyg0LUoubGVuZ3RoJTQpJTQsXCI9XCIpLFg9SlNPTi5wYXJzZShhdG9iKFkpKTtpZih0eXBlb2YgWCE9PVwib2JqZWN0XCJ8fFg9PT1udWxsKXJldHVybiExO2lmKFwidHlwXCJpbiBYJiZYPy50eXAhPT1cIkpXVFwiKXJldHVybiExO2lmKCFYLmFsZylyZXR1cm4hMTtpZihRJiZYLmFsZyE9PVEpcmV0dXJuITE7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIGtoKCQsUSl7aWYoKFE9PT1cInY0XCJ8fCFRKSYmTGgudGVzdCgkKSlyZXR1cm4hMDtpZigoUT09PVwidjZcInx8IVEpJiZBaC50ZXN0KCQpKXJldHVybiEwO3JldHVybiExfWNsYXNzIGk0IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2RlZi5jb2VyY2UpJC5kYXRhPVN0cmluZygkLmRhdGEpO2lmKHRoaXMuX2dldFR5cGUoJCkhPT1DLnN0cmluZyl7bGV0IFg9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoWCx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLnN0cmluZyxyZWNlaXZlZDpYLnBhcnNlZFR5cGV9KSxufWxldCBKPW5ldyBHNixZPXZvaWQgMDtmb3IobGV0IFggb2YgdGhpcy5fZGVmLmNoZWNrcylpZihYLmtpbmQ9PT1cIm1pblwiKXtpZigkLmRhdGEubGVuZ3RoPFgudmFsdWUpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLnRvb19zbWFsbCxtaW5pbXVtOlgudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibWF4XCIpe2lmKCQuZGF0YS5sZW5ndGg+WC52YWx1ZSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHtjb2RlOkUudG9vX2JpZyxtYXhpbXVtOlgudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibGVuZ3RoXCIpe2xldCBXPSQuZGF0YS5sZW5ndGg+WC52YWx1ZSxHPSQuZGF0YS5sZW5ndGg8WC52YWx1ZTtpZihXfHxHKXtpZihZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSksVyl5KFkse2NvZGU6RS50b29fYmlnLG1heGltdW06WC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6WC5tZXNzYWdlfSk7ZWxzZSBpZihHKXkoWSx7Y29kZTpFLnRvb19zbWFsbCxtaW5pbXVtOlgudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMCxtZXNzYWdlOlgubWVzc2FnZX0pO0ouZGlydHkoKX19ZWxzZSBpZihYLmtpbmQ9PT1cImVtYWlsXCIpe2lmKCFGaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImVtYWlsXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJlbW9qaVwiKXtpZighaUgpaUg9bmV3IFJlZ0V4cChaaCxcInVcIik7aWYoIWlILnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwiZW1vamlcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cInV1aWRcIil7aWYoIU5oLnRlc3QoJC5kYXRhKSlZPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsWSkseShZLHt2YWxpZGF0aW9uOlwidXVpZFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibmFub2lkXCIpe2lmKCF3aC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcIm5hbm9pZFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiY3VpZFwiKXtpZighVmgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJjdWlkXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJjdWlkMlwiKXtpZighQmgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJjdWlkMlwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwidWxpZFwiKXtpZighemgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJ1bGlkXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJ1cmxcIil0cnl7bmV3IFVSTCgkLmRhdGEpfWNhdGNoe1k9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJ1cmxcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cInJlZ2V4XCIpe2lmKFgucmVnZXgubGFzdEluZGV4PTAsIVgucmVnZXgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJyZWdleFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwidHJpbVwiKSQuZGF0YT0kLmRhdGEudHJpbSgpO2Vsc2UgaWYoWC5raW5kPT09XCJpbmNsdWRlc1wiKXtpZighJC5kYXRhLmluY2x1ZGVzKFgudmFsdWUsWC5wb3NpdGlvbikpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2luY2x1ZGVzOlgudmFsdWUscG9zaXRpb246WC5wb3NpdGlvbn0sbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cInRvTG93ZXJDYXNlXCIpJC5kYXRhPSQuZGF0YS50b0xvd2VyQ2FzZSgpO2Vsc2UgaWYoWC5raW5kPT09XCJ0b1VwcGVyQ2FzZVwiKSQuZGF0YT0kLmRhdGEudG9VcHBlckNhc2UoKTtlbHNlIGlmKFgua2luZD09PVwic3RhcnRzV2l0aFwiKXtpZighJC5kYXRhLnN0YXJ0c1dpdGgoWC52YWx1ZSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e3N0YXJ0c1dpdGg6WC52YWx1ZX0sbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImVuZHNXaXRoXCIpe2lmKCEkLmRhdGEuZW5kc1dpdGgoWC52YWx1ZSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2VuZHNXaXRoOlgudmFsdWV9LG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJkYXRldGltZVwiKXtpZighYmgoWCkudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse2NvZGU6RS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOlwiZGF0ZXRpbWVcIixtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiZGF0ZVwiKXtpZighUGgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse2NvZGU6RS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOlwiZGF0ZVwiLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJ0aW1lXCIpe2lmKCFFaChYKS50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJ0aW1lXCIsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImR1cmF0aW9uXCIpe2lmKCFEaC50ZXN0KCQuZGF0YSkpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImR1cmF0aW9uXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJpcFwiKXtpZighX2goJC5kYXRhLFgudmVyc2lvbikpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImlwXCIsY29kZTpFLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6WC5tZXNzYWdlfSksSi5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJqd3RcIil7aWYoIVNoKCQuZGF0YSxYLmFsZykpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImp3dFwiLGNvZGU6RS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOlgubWVzc2FnZX0pLEouZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwiY2lkclwiKXtpZigha2goJC5kYXRhLFgudmVyc2lvbikpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7dmFsaWRhdGlvbjpcImNpZHJcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImJhc2U2NFwiKXtpZighSWgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJiYXNlNjRcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImJhc2U2NHVybFwiKXtpZighUmgudGVzdCgkLmRhdGEpKVk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxZKSx5KFkse3ZhbGlkYXRpb246XCJiYXNlNjR1cmxcIixjb2RlOkUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpYLm1lc3NhZ2V9KSxKLmRpcnR5KCl9ZWxzZSBVJC5hc3NlcnROZXZlcihYKTtyZXR1cm57c3RhdHVzOkoudmFsdWUsdmFsdWU6JC5kYXRhfX1fcmVnZXgoJCxRLEope3JldHVybiB0aGlzLnJlZmluZW1lbnQoKFkpPT4kLnRlc3QoWSkse3ZhbGlkYXRpb246USxjb2RlOkUuaW52YWxpZF9zdHJpbmcsLi4ubS5lcnJUb09iaihKKX0pfV9hZGRDaGVjaygkKXtyZXR1cm4gbmV3IGk0KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLCRdfSl9ZW1haWwoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZW1haWxcIiwuLi5tLmVyclRvT2JqKCQpfSl9dXJsKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInVybFwiLC4uLm0uZXJyVG9PYmooJCl9KX1lbW9qaSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJlbW9qaVwiLC4uLm0uZXJyVG9PYmooJCl9KX11dWlkKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInV1aWRcIiwuLi5tLmVyclRvT2JqKCQpfSl9bmFub2lkKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm5hbm9pZFwiLC4uLm0uZXJyVG9PYmooJCl9KX1jdWlkKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImN1aWRcIiwuLi5tLmVyclRvT2JqKCQpfSl9Y3VpZDIoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY3VpZDJcIiwuLi5tLmVyclRvT2JqKCQpfSl9dWxpZCgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ1bGlkXCIsLi4ubS5lcnJUb09iaigkKX0pfWJhc2U2NCgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJiYXNlNjRcIiwuLi5tLmVyclRvT2JqKCQpfSl9YmFzZTY0dXJsKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImJhc2U2NHVybFwiLC4uLm0uZXJyVG9PYmooJCl9KX1qd3QoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiand0XCIsLi4ubS5lcnJUb09iaigkKX0pfWlwKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImlwXCIsLi4ubS5lcnJUb09iaigkKX0pfWNpZHIoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY2lkclwiLC4uLm0uZXJyVG9PYmooJCl9KX1kYXRldGltZSgkKXtpZih0eXBlb2YgJD09PVwic3RyaW5nXCIpcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZXRpbWVcIixwcmVjaXNpb246bnVsbCxvZmZzZXQ6ITEsbG9jYWw6ITEsbWVzc2FnZTokfSk7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZXRpbWVcIixwcmVjaXNpb246dHlwZW9mICQ/LnByZWNpc2lvbj5cInVcIj9udWxsOiQ/LnByZWNpc2lvbixvZmZzZXQ6JD8ub2Zmc2V0Pz8hMSxsb2NhbDokPy5sb2NhbD8/ITEsLi4ubS5lcnJUb09iaigkPy5tZXNzYWdlKX0pfWRhdGUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZVwiLG1lc3NhZ2U6JH0pfXRpbWUoJCl7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKXJldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInRpbWVcIixwcmVjaXNpb246bnVsbCxtZXNzYWdlOiR9KTtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ0aW1lXCIscHJlY2lzaW9uOnR5cGVvZiAkPy5wcmVjaXNpb24+XCJ1XCI/bnVsbDokPy5wcmVjaXNpb24sLi4ubS5lcnJUb09iaigkPy5tZXNzYWdlKX0pfWR1cmF0aW9uKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImR1cmF0aW9uXCIsLi4ubS5lcnJUb09iaigkKX0pfXJlZ2V4KCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwicmVnZXhcIixyZWdleDokLC4uLm0uZXJyVG9PYmooUSl9KX1pbmNsdWRlcygkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImluY2x1ZGVzXCIsdmFsdWU6JCxwb3NpdGlvbjpRPy5wb3NpdGlvbiwuLi5tLmVyclRvT2JqKFE/Lm1lc3NhZ2UpfSl9c3RhcnRzV2l0aCgkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInN0YXJ0c1dpdGhcIix2YWx1ZTokLC4uLm0uZXJyVG9PYmooUSl9KX1lbmRzV2l0aCgkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImVuZHNXaXRoXCIsdmFsdWU6JCwuLi5tLmVyclRvT2JqKFEpfSl9bWluKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6JCwuLi5tLmVyclRvT2JqKFEpfSl9bWF4KCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6JCwuLi5tLmVyclRvT2JqKFEpfSl9bGVuZ3RoKCQsUSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibGVuZ3RoXCIsdmFsdWU6JCwuLi5tLmVyclRvT2JqKFEpfSl9bm9uZW1wdHkoJCl7cmV0dXJuIHRoaXMubWluKDEsbS5lcnJUb09iaigkKSl9dHJpbSgpe3JldHVybiBuZXcgaTQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6XCJ0cmltXCJ9XX0pfXRvTG93ZXJDYXNlKCl7cmV0dXJuIG5ldyBpNCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRvTG93ZXJDYXNlXCJ9XX0pfXRvVXBwZXJDYXNlKCl7cmV0dXJuIG5ldyBpNCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRvVXBwZXJDYXNlXCJ9XX0pfWdldCBpc0RhdGV0aW1lKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImRhdGV0aW1lXCIpfWdldCBpc0RhdGUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiZGF0ZVwiKX1nZXQgaXNUaW1lKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cInRpbWVcIil9Z2V0IGlzRHVyYXRpb24oKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiZHVyYXRpb25cIil9Z2V0IGlzRW1haWwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiZW1haWxcIil9Z2V0IGlzVVJMKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cInVybFwiKX1nZXQgaXNFbW9qaSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJlbW9qaVwiKX1nZXQgaXNVVUlEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cInV1aWRcIil9Z2V0IGlzTkFOT0lEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cIm5hbm9pZFwiKX1nZXQgaXNDVUlEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImN1aWRcIil9Z2V0IGlzQ1VJRDIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiY3VpZDJcIil9Z2V0IGlzVUxJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJ1bGlkXCIpfWdldCBpc0lQKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKCQpPT4kLmtpbmQ9PT1cImlwXCIpfWdldCBpc0NJRFIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiY2lkclwiKX1nZXQgaXNCYXNlNjQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoJCk9PiQua2luZD09PVwiYmFzZTY0XCIpfWdldCBpc0Jhc2U2NHVybCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJiYXNlNjR1cmxcIil9Z2V0IG1pbkxlbmd0aCgpe2xldCAkPW51bGw7Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoUS5raW5kPT09XCJtaW5cIil7aWYoJD09PW51bGx8fFEudmFsdWU+JCkkPVEudmFsdWV9cmV0dXJuICR9Z2V0IG1heExlbmd0aCgpe2xldCAkPW51bGw7Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoUS5raW5kPT09XCJtYXhcIil7aWYoJD09PW51bGx8fFEudmFsdWU8JCkkPVEudmFsdWV9cmV0dXJuICR9fWk0LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IGk0KHtjaGVja3M6W10sdHlwZU5hbWU6Yi5ab2RTdHJpbmcsY29lcmNlOiQ/LmNvZXJjZT8/ITEsLi4uZSgkKX0pfTtmdW5jdGlvbiB2aCgkLFEpe2xldCBKPSgkLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgsWT0oUS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXXx8XCJcIikubGVuZ3RoLFg9Sj5ZP0o6WSxXPU51bWJlci5wYXJzZUludCgkLnRvRml4ZWQoWCkucmVwbGFjZShcIi5cIixcIlwiKSksRz1OdW1iZXIucGFyc2VJbnQoUS50b0ZpeGVkKFgpLnJlcGxhY2UoXCIuXCIsXCJcIikpO3JldHVybiBXJUcvMTAqKlh9Y2xhc3MgeTggZXh0ZW5kcyBZJHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGUsdGhpcy5zdGVwPXRoaXMubXVsdGlwbGVPZn1fcGFyc2UoJCl7aWYodGhpcy5fZGVmLmNvZXJjZSkkLmRhdGE9TnVtYmVyKCQuZGF0YSk7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMubnVtYmVyKXtsZXQgWD10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShYLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMubnVtYmVyLHJlY2VpdmVkOlgucGFyc2VkVHlwZX0pLG59bGV0IEo9dm9pZCAwLFk9bmV3IEc2O2ZvcihsZXQgWCBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFgua2luZD09PVwiaW50XCIpe2lmKCFVJC5pc0ludGVnZXIoJC5kYXRhKSlKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlwiaW50ZWdlclwiLHJlY2VpdmVkOlwiZmxvYXRcIixtZXNzYWdlOlgubWVzc2FnZX0pLFkuZGlydHkoKX1lbHNlIGlmKFgua2luZD09PVwibWluXCIpe2lmKFguaW5jbHVzaXZlPyQuZGF0YTxYLnZhbHVlOiQuZGF0YTw9WC52YWx1ZSlKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQsSikseShKLHtjb2RlOkUudG9vX3NtYWxsLG1pbmltdW06WC52YWx1ZSx0eXBlOlwibnVtYmVyXCIsaW5jbHVzaXZlOlguaW5jbHVzaXZlLGV4YWN0OiExLG1lc3NhZ2U6WC5tZXNzYWdlfSksWS5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJtYXhcIil7aWYoWC5pbmNsdXNpdmU/JC5kYXRhPlgudmFsdWU6JC5kYXRhPj1YLnZhbHVlKUo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxKKSx5KEose2NvZGU6RS50b29fYmlnLG1heGltdW06WC52YWx1ZSx0eXBlOlwibnVtYmVyXCIsaW5jbHVzaXZlOlguaW5jbHVzaXZlLGV4YWN0OiExLG1lc3NhZ2U6WC5tZXNzYWdlfSksWS5kaXJ0eSgpfWVsc2UgaWYoWC5raW5kPT09XCJtdWx0aXBsZU9mXCIpe2lmKHZoKCQuZGF0YSxYLnZhbHVlKSE9PTApSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLm5vdF9tdWx0aXBsZV9vZixtdWx0aXBsZU9mOlgudmFsdWUsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cImZpbml0ZVwiKXtpZighTnVtYmVyLmlzRmluaXRlKCQuZGF0YSkpSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLm5vdF9maW5pdGUsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBVJC5hc3NlcnROZXZlcihYKTtyZXR1cm57c3RhdHVzOlkudmFsdWUsdmFsdWU6JC5kYXRhfX1ndGUoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCQsITAsbS50b1N0cmluZyhRKSl9Z3QoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCQsITEsbS50b1N0cmluZyhRKSl9bHRlKCQsUSl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwkLCEwLG0udG9TdHJpbmcoUSkpfWx0KCQsUSl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwkLCExLG0udG9TdHJpbmcoUSkpfXNldExpbWl0KCQsUSxKLFkpe3JldHVybiBuZXcgeTgoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6JCx2YWx1ZTpRLGluY2x1c2l2ZTpKLG1lc3NhZ2U6bS50b1N0cmluZyhZKX1dfSl9X2FkZENoZWNrKCQpe3JldHVybiBuZXcgeTgoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsJF19KX1pbnQoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaW50XCIsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9cG9zaXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bmVnYXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bm9ucG9zaXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bm9ubmVnYXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bXVsdGlwbGVPZigkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm11bHRpcGxlT2ZcIix2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX0pfWZpbml0ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJmaW5pdGVcIixtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1zYWZlKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixtZXNzYWdlOm0udG9TdHJpbmcoJCl9KS5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIixpbmNsdXNpdmU6ITAsdmFsdWU6TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9Z2V0IG1pblZhbHVlKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1pblwiKXtpZigkPT09bnVsbHx8US52YWx1ZT4kKSQ9US52YWx1ZX1yZXR1cm4gJH1nZXQgbWF4VmFsdWUoKXtsZXQgJD1udWxsO2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFEua2luZD09PVwibWF4XCIpe2lmKCQ9PT1udWxsfHxRLnZhbHVlPCQpJD1RLnZhbHVlfXJldHVybiAkfWdldCBpc0ludCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKCgkKT0+JC5raW5kPT09XCJpbnRcInx8JC5raW5kPT09XCJtdWx0aXBsZU9mXCImJlUkLmlzSW50ZWdlcigkLnZhbHVlKSl9Z2V0IGlzRmluaXRlKCl7bGV0ICQ9bnVsbCxRPW51bGw7Zm9yKGxldCBKIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoSi5raW5kPT09XCJmaW5pdGVcInx8Si5raW5kPT09XCJpbnRcInx8Si5raW5kPT09XCJtdWx0aXBsZU9mXCIpcmV0dXJuITA7ZWxzZSBpZihKLmtpbmQ9PT1cIm1pblwiKXtpZihRPT09bnVsbHx8Si52YWx1ZT5RKVE9Si52YWx1ZX1lbHNlIGlmKEoua2luZD09PVwibWF4XCIpe2lmKCQ9PT1udWxsfHxKLnZhbHVlPCQpJD1KLnZhbHVlfXJldHVybiBOdW1iZXIuaXNGaW5pdGUoUSkmJk51bWJlci5pc0Zpbml0ZSgkKX19eTguY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgeTgoe2NoZWNrczpbXSx0eXBlTmFtZTpiLlpvZE51bWJlcixjb2VyY2U6JD8uY29lcmNlfHwhMSwuLi5lKCQpfSl9O2NsYXNzIGc4IGV4dGVuZHMgWSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMubWluPXRoaXMuZ3RlLHRoaXMubWF4PXRoaXMubHRlfV9wYXJzZSgkKXtpZih0aGlzLl9kZWYuY29lcmNlKXRyeXskLmRhdGE9QmlnSW50KCQuZGF0YSl9Y2F0Y2h7cmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dCgkKX1pZih0aGlzLl9nZXRUeXBlKCQpIT09Qy5iaWdpbnQpcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dCgkKTtsZXQgSj12b2lkIDAsWT1uZXcgRzY7Zm9yKGxldCBYIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoWC5raW5kPT09XCJtaW5cIil7aWYoWC5pbmNsdXNpdmU/JC5kYXRhPFgudmFsdWU6JC5kYXRhPD1YLnZhbHVlKUo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCxKKSx5KEose2NvZGU6RS50b29fc21hbGwsdHlwZTpcImJpZ2ludFwiLG1pbmltdW06WC52YWx1ZSxpbmNsdXNpdmU6WC5pbmNsdXNpdmUsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cIm1heFwiKXtpZihYLmluY2x1c2l2ZT8kLmRhdGE+WC52YWx1ZTokLmRhdGE+PVgudmFsdWUpSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLnRvb19iaWcsdHlwZTpcImJpZ2ludFwiLG1heGltdW06WC52YWx1ZSxpbmNsdXNpdmU6WC5pbmNsdXNpdmUsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cIm11bHRpcGxlT2ZcIil7aWYoJC5kYXRhJVgudmFsdWUhPT1CaWdJbnQoMCkpSj10aGlzLl9nZXRPclJldHVybkN0eCgkLEopLHkoSix7Y29kZTpFLm5vdF9tdWx0aXBsZV9vZixtdWx0aXBsZU9mOlgudmFsdWUsbWVzc2FnZTpYLm1lc3NhZ2V9KSxZLmRpcnR5KCl9ZWxzZSBVJC5hc3NlcnROZXZlcihYKTtyZXR1cm57c3RhdHVzOlkudmFsdWUsdmFsdWU6JC5kYXRhfX1fZ2V0SW52YWxpZElucHV0KCQpe2xldCBRPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KFEse2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5iaWdpbnQscmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbn1ndGUoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCQsITAsbS50b1N0cmluZyhRKSl9Z3QoJCxRKXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCQsITEsbS50b1N0cmluZyhRKSl9bHRlKCQsUSl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwkLCEwLG0udG9TdHJpbmcoUSkpfWx0KCQsUSl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwkLCExLG0udG9TdHJpbmcoUSkpfXNldExpbWl0KCQsUSxKLFkpe3JldHVybiBuZXcgZzgoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6JCx2YWx1ZTpRLGluY2x1c2l2ZTpKLG1lc3NhZ2U6bS50b1N0cmluZyhZKX1dfSl9X2FkZENoZWNrKCQpe3JldHVybiBuZXcgZzgoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsJF19KX1wb3NpdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiExLG1lc3NhZ2U6bS50b1N0cmluZygkKX0pfW5lZ2F0aXZlKCQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTptLnRvU3RyaW5nKCQpfSl9bm9ucG9zaXRpdmUoJCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMCxtZXNzYWdlOm0udG9TdHJpbmcoJCl9KX1ub25uZWdhdGl2ZSgkKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiEwLG1lc3NhZ2U6bS50b1N0cmluZygkKX0pfW11bHRpcGxlT2YoJCxRKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtdWx0aXBsZU9mXCIsdmFsdWU6JCxtZXNzYWdlOm0udG9TdHJpbmcoUSl9KX1nZXQgbWluVmFsdWUoKXtsZXQgJD1udWxsO2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFEua2luZD09PVwibWluXCIpe2lmKCQ9PT1udWxsfHxRLnZhbHVlPiQpJD1RLnZhbHVlfXJldHVybiAkfWdldCBtYXhWYWx1ZSgpe2xldCAkPW51bGw7Zm9yKGxldCBRIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoUS5raW5kPT09XCJtYXhcIil7aWYoJD09PW51bGx8fFEudmFsdWU8JCkkPVEudmFsdWV9cmV0dXJuICR9fWc4LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IGc4KHtjaGVja3M6W10sdHlwZU5hbWU6Yi5ab2RCaWdJbnQsY29lcmNlOiQ/LmNvZXJjZT8/ITEsLi4uZSgkKX0pfTtjbGFzcyBnNSBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9kZWYuY29lcmNlKSQuZGF0YT1Cb29sZWFuKCQuZGF0YSk7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMuYm9vbGVhbil7bGV0IEo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLmJvb2xlYW4scmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbn1yZXR1cm4gQjYoJC5kYXRhKX19ZzUuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgZzUoe3R5cGVOYW1lOmIuWm9kQm9vbGVhbixjb2VyY2U6JD8uY29lcmNlfHwhMSwuLi5lKCQpfSl9O2NsYXNzIFhRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2RlZi5jb2VyY2UpJC5kYXRhPW5ldyBEYXRlKCQuZGF0YSk7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMuZGF0ZSl7bGV0IFg9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoWCx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLmRhdGUscmVjZWl2ZWQ6WC5wYXJzZWRUeXBlfSksbn1pZihOdW1iZXIuaXNOYU4oJC5kYXRhLmdldFRpbWUoKSkpe2xldCBYPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KFgse2NvZGU6RS5pbnZhbGlkX2RhdGV9KSxufWxldCBKPW5ldyBHNixZPXZvaWQgMDtmb3IobGV0IFggb2YgdGhpcy5fZGVmLmNoZWNrcylpZihYLmtpbmQ9PT1cIm1pblwiKXtpZigkLmRhdGEuZ2V0VGltZSgpPFgudmFsdWUpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLnRvb19zbWFsbCxtZXNzYWdlOlgubWVzc2FnZSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWluaW11bTpYLnZhbHVlLHR5cGU6XCJkYXRlXCJ9KSxKLmRpcnR5KCl9ZWxzZSBpZihYLmtpbmQ9PT1cIm1heFwiKXtpZigkLmRhdGEuZ2V0VGltZSgpPlgudmFsdWUpWT10aGlzLl9nZXRPclJldHVybkN0eCgkLFkpLHkoWSx7Y29kZTpFLnRvb19iaWcsbWVzc2FnZTpYLm1lc3NhZ2UsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1heGltdW06WC52YWx1ZSx0eXBlOlwiZGF0ZVwifSksSi5kaXJ0eSgpfWVsc2UgVSQuYXNzZXJ0TmV2ZXIoWCk7cmV0dXJue3N0YXR1czpKLnZhbHVlLHZhbHVlOm5ldyBEYXRlKCQuZGF0YS5nZXRUaW1lKCkpfX1fYWRkQ2hlY2soJCl7cmV0dXJuIG5ldyBYUSh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcywkXX0pfW1pbigkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOiQuZ2V0VGltZSgpLG1lc3NhZ2U6bS50b1N0cmluZyhRKX0pfW1heCgkLFEpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOiQuZ2V0VGltZSgpLG1lc3NhZ2U6bS50b1N0cmluZyhRKX0pfWdldCBtaW5EYXRlKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1pblwiKXtpZigkPT09bnVsbHx8US52YWx1ZT4kKSQ9US52YWx1ZX1yZXR1cm4gJCE9bnVsbD9uZXcgRGF0ZSgkKTpudWxsfWdldCBtYXhEYXRlKCl7bGV0ICQ9bnVsbDtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihRLmtpbmQ9PT1cIm1heFwiKXtpZigkPT09bnVsbHx8US52YWx1ZTwkKSQ9US52YWx1ZX1yZXR1cm4gJCE9bnVsbD9uZXcgRGF0ZSgkKTpudWxsfX1YUS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBYUSh7Y2hlY2tzOltdLGNvZXJjZTokPy5jb2VyY2V8fCExLHR5cGVOYW1lOmIuWm9kRGF0ZSwuLi5lKCQpfSl9O2NsYXNzIGg1IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2dldFR5cGUoJCkhPT1DLnN5bWJvbCl7bGV0IEo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLnN5bWJvbCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxufXJldHVybiBCNigkLmRhdGEpfX1oNS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBoNSh7dHlwZU5hbWU6Yi5ab2RTeW1ib2wsLi4uZSgkKX0pfTtjbGFzcyBZUSBleHRlbmRzIFkke19wYXJzZSgkKXtpZih0aGlzLl9nZXRUeXBlKCQpIT09Qy51bmRlZmluZWQpe2xldCBKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO3JldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy51bmRlZmluZWQscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbn1yZXR1cm4gQjYoJC5kYXRhKX19WVEuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgWVEoe3R5cGVOYW1lOmIuWm9kVW5kZWZpbmVkLC4uLmUoJCl9KX07Y2xhc3MgV1EgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMubnVsbCl7bGV0IEo9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoSix7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLm51bGwscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbn1yZXR1cm4gQjYoJC5kYXRhKX19V1EuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgV1Eoe3R5cGVOYW1lOmIuWm9kTnVsbCwuLi5lKCQpfSl9O2NsYXNzIHU1IGV4dGVuZHMgWSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuX2FueT0hMH1fcGFyc2UoJCl7cmV0dXJuIEI2KCQuZGF0YSl9fXU1LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IHU1KHt0eXBlTmFtZTpiLlpvZEFueSwuLi5lKCQpfSl9O2NsYXNzIGowIGV4dGVuZHMgWSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuX3Vua25vd249ITB9X3BhcnNlKCQpe3JldHVybiBCNigkLmRhdGEpfX1qMC5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBqMCh7dHlwZU5hbWU6Yi5ab2RVbmtub3duLC4uLmUoJCl9KX07Y2xhc3MgbjQgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0IFE9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLm5ldmVyLHJlY2VpdmVkOlEucGFyc2VkVHlwZX0pLG59fW40LmNyZWF0ZT0oJCk9PntyZXR1cm4gbmV3IG40KHt0eXBlTmFtZTpiLlpvZE5ldmVyLC4uLmUoJCl9KX07Y2xhc3MgbTUgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMudW5kZWZpbmVkKXtsZXQgSj10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMudm9pZCxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxufXJldHVybiBCNigkLmRhdGEpfX1tNS5jcmVhdGU9KCQpPT57cmV0dXJuIG5ldyBtNSh7dHlwZU5hbWU6Yi5ab2RWb2lkLC4uLmUoJCl9KX07Y2xhc3MgRTQgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e2N0eDpRLHN0YXR1czpKfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCksWT10aGlzLl9kZWY7aWYoUS5wYXJzZWRUeXBlIT09Qy5hcnJheSlyZXR1cm4geShRLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMuYXJyYXkscmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbjtpZihZLmV4YWN0TGVuZ3RoIT09bnVsbCl7bGV0IFc9US5kYXRhLmxlbmd0aD5ZLmV4YWN0TGVuZ3RoLnZhbHVlLEc9US5kYXRhLmxlbmd0aDxZLmV4YWN0TGVuZ3RoLnZhbHVlO2lmKFd8fEcpeShRLHtjb2RlOlc/RS50b29fYmlnOkUudG9vX3NtYWxsLG1pbmltdW06Rz9ZLmV4YWN0TGVuZ3RoLnZhbHVlOnZvaWQgMCxtYXhpbXVtOlc/WS5leGFjdExlbmd0aC52YWx1ZTp2b2lkIDAsdHlwZTpcImFycmF5XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6WS5leGFjdExlbmd0aC5tZXNzYWdlfSksSi5kaXJ0eSgpfWlmKFkubWluTGVuZ3RoIT09bnVsbCl7aWYoUS5kYXRhLmxlbmd0aDxZLm1pbkxlbmd0aC52YWx1ZSl5KFEse2NvZGU6RS50b29fc21hbGwsbWluaW11bTpZLm1pbkxlbmd0aC52YWx1ZSx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpZLm1pbkxlbmd0aC5tZXNzYWdlfSksSi5kaXJ0eSgpfWlmKFkubWF4TGVuZ3RoIT09bnVsbCl7aWYoUS5kYXRhLmxlbmd0aD5ZLm1heExlbmd0aC52YWx1ZSl5KFEse2NvZGU6RS50b29fYmlnLG1heGltdW06WS5tYXhMZW5ndGgudmFsdWUsdHlwZTpcImFycmF5XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6WS5tYXhMZW5ndGgubWVzc2FnZX0pLEouZGlydHkoKX1pZihRLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwoWy4uLlEuZGF0YV0ubWFwKChXLEcpPT57cmV0dXJuIFkudHlwZS5fcGFyc2VBc3luYyhuZXcgSzQoUSxXLFEucGF0aCxHKSl9KSkudGhlbigoVyk9PntyZXR1cm4gRzYubWVyZ2VBcnJheShKLFcpfSk7bGV0IFg9Wy4uLlEuZGF0YV0ubWFwKChXLEcpPT57cmV0dXJuIFkudHlwZS5fcGFyc2VTeW5jKG5ldyBLNChRLFcsUS5wYXRoLEcpKX0pO3JldHVybiBHNi5tZXJnZUFycmF5KEosWCl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9bWluKCQsUSl7cmV0dXJuIG5ldyBFNCh7Li4udGhpcy5fZGVmLG1pbkxlbmd0aDp7dmFsdWU6JCxtZXNzYWdlOm0udG9TdHJpbmcoUSl9fSl9bWF4KCQsUSl7cmV0dXJuIG5ldyBFNCh7Li4udGhpcy5fZGVmLG1heExlbmd0aDp7dmFsdWU6JCxtZXNzYWdlOm0udG9TdHJpbmcoUSl9fSl9bGVuZ3RoKCQsUSl7cmV0dXJuIG5ldyBFNCh7Li4udGhpcy5fZGVmLGV4YWN0TGVuZ3RoOnt2YWx1ZTokLG1lc3NhZ2U6bS50b1N0cmluZyhRKX19KX1ub25lbXB0eSgkKXtyZXR1cm4gdGhpcy5taW4oMSwkKX19RTQuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBFNCh7dHlwZTokLG1pbkxlbmd0aDpudWxsLG1heExlbmd0aDpudWxsLGV4YWN0TGVuZ3RoOm51bGwsdHlwZU5hbWU6Yi5ab2RBcnJheSwuLi5lKFEpfSl9O2Z1bmN0aW9uIGY4KCQpe2lmKCQgaW5zdGFuY2VvZiBnJCl7bGV0IFE9e307Zm9yKGxldCBKIGluICQuc2hhcGUpe2xldCBZPSQuc2hhcGVbSl07UVtKXT1vNi5jcmVhdGUoZjgoWSkpfXJldHVybiBuZXcgZyQoey4uLiQuX2RlZixzaGFwZTooKT0+UX0pfWVsc2UgaWYoJCBpbnN0YW5jZW9mIEU0KXJldHVybiBuZXcgRTQoey4uLiQuX2RlZix0eXBlOmY4KCQuZWxlbWVudCl9KTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBvNilyZXR1cm4gbzYuY3JlYXRlKGY4KCQudW53cmFwKCkpKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBJMSlyZXR1cm4gSTEuY3JlYXRlKGY4KCQudW53cmFwKCkpKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiByNClyZXR1cm4gcjQuY3JlYXRlKCQuaXRlbXMubWFwKChRKT0+ZjgoUSkpKTtlbHNlIHJldHVybiAkfWNsYXNzIGckIGV4dGVuZHMgWSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuX2NhY2hlZD1udWxsLHRoaXMubm9uc3RyaWN0PXRoaXMucGFzc3Rocm91Z2gsdGhpcy5hdWdtZW50PXRoaXMuZXh0ZW5kfV9nZXRDYWNoZWQoKXtpZih0aGlzLl9jYWNoZWQhPT1udWxsKXJldHVybiB0aGlzLl9jYWNoZWQ7bGV0ICQ9dGhpcy5fZGVmLnNoYXBlKCksUT1VJC5vYmplY3RLZXlzKCQpO3JldHVybiB0aGlzLl9jYWNoZWQ9e3NoYXBlOiQsa2V5czpRfSx0aGlzLl9jYWNoZWR9X3BhcnNlKCQpe2lmKHRoaXMuX2dldFR5cGUoJCkhPT1DLm9iamVjdCl7bGV0IEg9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoJCk7cmV0dXJuIHkoSCx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLm9iamVjdCxyZWNlaXZlZDpILnBhcnNlZFR5cGV9KSxufWxldHtzdGF0dXM6SixjdHg6WX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpLHtzaGFwZTpYLGtleXM6V309dGhpcy5fZ2V0Q2FjaGVkKCksRz1bXTtpZighKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIG40JiZ0aGlzLl9kZWYudW5rbm93bktleXM9PT1cInN0cmlwXCIpKXtmb3IobGV0IEggaW4gWS5kYXRhKWlmKCFXLmluY2x1ZGVzKEgpKUcucHVzaChIKX1sZXQgVT1bXTtmb3IobGV0IEggb2YgVyl7bGV0IHE9WFtIXSxWPVkuZGF0YVtIXTtVLnB1c2goe2tleTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpIfSx2YWx1ZTpxLl9wYXJzZShuZXcgSzQoWSxWLFkucGF0aCxIKSksYWx3YXlzU2V0OkggaW4gWS5kYXRhfSl9aWYodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2YgbjQpe2xldCBIPXRoaXMuX2RlZi51bmtub3duS2V5cztpZihIPT09XCJwYXNzdGhyb3VnaFwiKWZvcihsZXQgcSBvZiBHKVUucHVzaCh7a2V5OntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOnF9LHZhbHVlOntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOlkuZGF0YVtxXX19KTtlbHNlIGlmKEg9PT1cInN0cmljdFwiKXtpZihHLmxlbmd0aD4wKXkoWSx7Y29kZTpFLnVucmVjb2duaXplZF9rZXlzLGtleXM6R30pLEouZGlydHkoKX1lbHNlIGlmKEg9PT1cInN0cmlwXCIpO2Vsc2UgdGhyb3cgRXJyb3IoXCJJbnRlcm5hbCBab2RPYmplY3QgZXJyb3I6IGludmFsaWQgdW5rbm93bktleXMgdmFsdWUuXCIpfWVsc2V7bGV0IEg9dGhpcy5fZGVmLmNhdGNoYWxsO2ZvcihsZXQgcSBvZiBHKXtsZXQgVj1ZLmRhdGFbcV07VS5wdXNoKHtrZXk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6cX0sdmFsdWU6SC5fcGFyc2UobmV3IEs0KFksVixZLnBhdGgscSkpLGFsd2F5c1NldDpxIGluIFkuZGF0YX0pfX1pZihZLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57bGV0IEg9W107Zm9yKGxldCBxIG9mIFUpe2xldCBWPWF3YWl0IHEua2V5LEI9YXdhaXQgcS52YWx1ZTtILnB1c2goe2tleTpWLHZhbHVlOkIsYWx3YXlzU2V0OnEuYWx3YXlzU2V0fSl9cmV0dXJuIEh9KS50aGVuKChIKT0+e3JldHVybiBHNi5tZXJnZU9iamVjdFN5bmMoSixIKX0pO2Vsc2UgcmV0dXJuIEc2Lm1lcmdlT2JqZWN0U3luYyhKLFUpfWdldCBzaGFwZSgpe3JldHVybiB0aGlzLl9kZWYuc2hhcGUoKX1zdHJpY3QoJCl7cmV0dXJuIG0uZXJyVG9PYmosbmV3IGckKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJzdHJpY3RcIiwuLi4kIT09dm9pZCAwP3tlcnJvck1hcDooUSxKKT0+e2xldCBZPXRoaXMuX2RlZi5lcnJvck1hcD8uKFEsSikubWVzc2FnZT8/Si5kZWZhdWx0RXJyb3I7aWYoUS5jb2RlPT09XCJ1bnJlY29nbml6ZWRfa2V5c1wiKXJldHVybnttZXNzYWdlOm0uZXJyVG9PYmooJCkubWVzc2FnZT8/WX07cmV0dXJue21lc3NhZ2U6WX19fTp7fX0pfXN0cmlwKCl7cmV0dXJuIG5ldyBnJCh7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOlwic3RyaXBcIn0pfXBhc3N0aHJvdWdoKCl7cmV0dXJuIG5ldyBnJCh7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOlwicGFzc3Rocm91Z2hcIn0pfWV4dGVuZCgkKXtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9Pih7Li4udGhpcy5fZGVmLnNoYXBlKCksLi4uJH0pfSl9bWVyZ2UoJCl7cmV0dXJuIG5ldyBnJCh7dW5rbm93bktleXM6JC5fZGVmLnVua25vd25LZXlzLGNhdGNoYWxsOiQuX2RlZi5jYXRjaGFsbCxzaGFwZTooKT0+KHsuLi50aGlzLl9kZWYuc2hhcGUoKSwuLi4kLl9kZWYuc2hhcGUoKX0pLHR5cGVOYW1lOmIuWm9kT2JqZWN0fSl9c2V0S2V5KCQsUSl7cmV0dXJuIHRoaXMuYXVnbWVudCh7WyRdOlF9KX1jYXRjaGFsbCgkKXtyZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsY2F0Y2hhbGw6JH0pfXBpY2soJCl7bGV0IFE9e307Zm9yKGxldCBKIG9mIFUkLm9iamVjdEtleXMoJCkpaWYoJFtKXSYmdGhpcy5zaGFwZVtKXSlRW0pdPXRoaXMuc2hhcGVbSl07cmV0dXJuIG5ldyBnJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5RfSl9b21pdCgkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgVSQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSlpZighJFtKXSlRW0pdPXRoaXMuc2hhcGVbSl07cmV0dXJuIG5ldyBnJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5RfSl9ZGVlcFBhcnRpYWwoKXtyZXR1cm4gZjgodGhpcyl9cGFydGlhbCgkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgVSQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSl7bGV0IFk9dGhpcy5zaGFwZVtKXTtpZigkJiYhJFtKXSlRW0pdPVk7ZWxzZSBRW0pdPVkub3B0aW9uYWwoKX1yZXR1cm4gbmV3IGckKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PlF9KX1yZXF1aXJlZCgkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgVSQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSlpZigkJiYhJFtKXSlRW0pdPXRoaXMuc2hhcGVbSl07ZWxzZXtsZXQgWD10aGlzLnNoYXBlW0pdO3doaWxlKFggaW5zdGFuY2VvZiBvNilYPVguX2RlZi5pbm5lclR5cGU7UVtKXT1YfXJldHVybiBuZXcgZyQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+UX0pfWtleW9mKCl7cmV0dXJuIHNaKFUkLm9iamVjdEtleXModGhpcy5zaGFwZSkpfX1nJC5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IGckKHtzaGFwZTooKT0+JCx1bmtub3duS2V5czpcInN0cmlwXCIsY2F0Y2hhbGw6bjQuY3JlYXRlKCksdHlwZU5hbWU6Yi5ab2RPYmplY3QsLi4uZShRKX0pfTtnJC5zdHJpY3RDcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IGckKHtzaGFwZTooKT0+JCx1bmtub3duS2V5czpcInN0cmljdFwiLGNhdGNoYWxsOm40LmNyZWF0ZSgpLHR5cGVOYW1lOmIuWm9kT2JqZWN0LC4uLmUoUSl9KX07ZyQubGF6eWNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgZyQoe3NoYXBlOiQsdW5rbm93bktleXM6XCJzdHJpcFwiLGNhdGNoYWxsOm40LmNyZWF0ZSgpLHR5cGVOYW1lOmIuWm9kT2JqZWN0LC4uLmUoUSl9KX07Y2xhc3MgR1EgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCksSj10aGlzLl9kZWYub3B0aW9ucztmdW5jdGlvbiBZKFgpe2ZvcihsZXQgRyBvZiBYKWlmKEcucmVzdWx0LnN0YXR1cz09PVwidmFsaWRcIilyZXR1cm4gRy5yZXN1bHQ7Zm9yKGxldCBHIG9mIFgpaWYoRy5yZXN1bHQuc3RhdHVzPT09XCJkaXJ0eVwiKXJldHVybiBRLmNvbW1vbi5pc3N1ZXMucHVzaCguLi5HLmN0eC5jb21tb24uaXNzdWVzKSxHLnJlc3VsdDtsZXQgVz1YLm1hcCgoRyk9Pm5ldyBmNihHLmN0eC5jb21tb24uaXNzdWVzKSk7cmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdW5pb24sdW5pb25FcnJvcnM6V30pLG59aWYoUS5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKEoubWFwKGFzeW5jKFgpPT57bGV0IFc9ey4uLlEsY29tbW9uOnsuLi5RLmNvbW1vbixpc3N1ZXM6W119LHBhcmVudDpudWxsfTtyZXR1cm57cmVzdWx0OmF3YWl0IFguX3BhcnNlQXN5bmMoe2RhdGE6US5kYXRhLHBhdGg6US5wYXRoLHBhcmVudDpXfSksY3R4Old9fSkpLnRoZW4oWSk7ZWxzZXtsZXQgWD12b2lkIDAsVz1bXTtmb3IobGV0IFUgb2YgSil7bGV0IEg9ey4uLlEsY29tbW9uOnsuLi5RLmNvbW1vbixpc3N1ZXM6W119LHBhcmVudDpudWxsfSxxPVUuX3BhcnNlU3luYyh7ZGF0YTpRLmRhdGEscGF0aDpRLnBhdGgscGFyZW50Okh9KTtpZihxLnN0YXR1cz09PVwidmFsaWRcIilyZXR1cm4gcTtlbHNlIGlmKHEuc3RhdHVzPT09XCJkaXJ0eVwiJiYhWClYPXtyZXN1bHQ6cSxjdHg6SH07aWYoSC5jb21tb24uaXNzdWVzLmxlbmd0aClXLnB1c2goSC5jb21tb24uaXNzdWVzKX1pZihYKXJldHVybiBRLmNvbW1vbi5pc3N1ZXMucHVzaCguLi5YLmN0eC5jb21tb24uaXNzdWVzKSxYLnJlc3VsdDtsZXQgRz1XLm1hcCgoVSk9Pm5ldyBmNihVKSk7cmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdW5pb24sdW5pb25FcnJvcnM6R30pLG59fWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zfX1HUS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IEdRKHtvcHRpb25zOiQsdHlwZU5hbWU6Yi5ab2RVbmlvbiwuLi5lKFEpfSl9O3ZhciBkND0oJCk9PntpZigkIGluc3RhbmNlb2YgSFEpcmV0dXJuIGQ0KCQuc2NoZW1hKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBiNClyZXR1cm4gZDQoJC5pbm5lclR5cGUoKSk7ZWxzZSBpZigkIGluc3RhbmNlb2YgS1EpcmV0dXJuWyQudmFsdWVdO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIEEwKXJldHVybiAkLm9wdGlvbnM7ZWxzZSBpZigkIGluc3RhbmNlb2YgcVEpcmV0dXJuIFUkLm9iamVjdFZhbHVlcygkLmVudW0pO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIFZRKXJldHVybiBkNCgkLl9kZWYuaW5uZXJUeXBlKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBZUSlyZXR1cm5bdm9pZCAwXTtlbHNlIGlmKCQgaW5zdGFuY2VvZiBXUSlyZXR1cm5bbnVsbF07ZWxzZSBpZigkIGluc3RhbmNlb2YgbzYpcmV0dXJuW3ZvaWQgMCwuLi5kNCgkLnVud3JhcCgpKV07ZWxzZSBpZigkIGluc3RhbmNlb2YgSTEpcmV0dXJuW251bGwsLi4uZDQoJC51bndyYXAoKSldO2Vsc2UgaWYoJCBpbnN0YW5jZW9mIG9IKXJldHVybiBkNCgkLnVud3JhcCgpKTtlbHNlIGlmKCQgaW5zdGFuY2VvZiB6USlyZXR1cm4gZDQoJC51bndyYXAoKSk7ZWxzZSBpZigkIGluc3RhbmNlb2YgQlEpcmV0dXJuIGQ0KCQuX2RlZi5pbm5lclR5cGUpO2Vsc2UgcmV0dXJuW119O2NsYXNzIHJIIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtjdHg6UX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKFEucGFyc2VkVHlwZSE9PUMub2JqZWN0KXJldHVybiB5KFEse2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5vYmplY3QscmVjZWl2ZWQ6US5wYXJzZWRUeXBlfSksbjtsZXQgSj10aGlzLmRpc2NyaW1pbmF0b3IsWT1RLmRhdGFbSl0sWD10aGlzLm9wdGlvbnNNYXAuZ2V0KFkpO2lmKCFYKXJldHVybiB5KFEse2NvZGU6RS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3Isb3B0aW9uczpBcnJheS5mcm9tKHRoaXMub3B0aW9uc01hcC5rZXlzKCkpLHBhdGg6W0pdfSksbjtpZihRLmNvbW1vbi5hc3luYylyZXR1cm4gWC5fcGFyc2VBc3luYyh7ZGF0YTpRLmRhdGEscGF0aDpRLnBhdGgscGFyZW50OlF9KTtlbHNlIHJldHVybiBYLl9wYXJzZVN5bmMoe2RhdGE6US5kYXRhLHBhdGg6US5wYXRoLHBhcmVudDpRfSl9Z2V0IGRpc2NyaW1pbmF0b3IoKXtyZXR1cm4gdGhpcy5fZGVmLmRpc2NyaW1pbmF0b3J9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9Z2V0IG9wdGlvbnNNYXAoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnNNYXB9c3RhdGljIGNyZWF0ZSgkLFEsSil7bGV0IFk9bmV3IE1hcDtmb3IobGV0IFggb2YgUSl7bGV0IFc9ZDQoWC5zaGFwZVskXSk7aWYoIVcubGVuZ3RoKXRocm93IEVycm9yKGBBIGRpc2NyaW1pbmF0b3IgdmFsdWUgZm9yIGtleSBcXGAkeyR9XFxgIGNvdWxkIG5vdCBiZSBleHRyYWN0ZWQgZnJvbSBhbGwgc2NoZW1hIG9wdGlvbnNgKTtmb3IobGV0IEcgb2YgVyl7aWYoWS5oYXMoRykpdGhyb3cgRXJyb3IoYERpc2NyaW1pbmF0b3IgcHJvcGVydHkgJHtTdHJpbmcoJCl9IGhhcyBkdXBsaWNhdGUgdmFsdWUgJHtTdHJpbmcoRyl9YCk7WS5zZXQoRyxYKX19cmV0dXJuIG5ldyBySCh7dHlwZU5hbWU6Yi5ab2REaXNjcmltaW5hdGVkVW5pb24sZGlzY3JpbWluYXRvcjokLG9wdGlvbnM6USxvcHRpb25zTWFwOlksLi4uZShKKX0pfX1mdW5jdGlvbiBuSCgkLFEpe2xldCBKPXA0KCQpLFk9cDQoUSk7aWYoJD09PVEpcmV0dXJue3ZhbGlkOiEwLGRhdGE6JH07ZWxzZSBpZihKPT09Qy5vYmplY3QmJlk9PT1DLm9iamVjdCl7bGV0IFg9VSQub2JqZWN0S2V5cyhRKSxXPVUkLm9iamVjdEtleXMoJCkuZmlsdGVyKChVKT0+WC5pbmRleE9mKFUpIT09LTEpLEc9ey4uLiQsLi4uUX07Zm9yKGxldCBVIG9mIFcpe2xldCBIPW5IKCRbVV0sUVtVXSk7aWYoIUgudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtHW1VdPUguZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpHfX1lbHNlIGlmKEo9PT1DLmFycmF5JiZZPT09Qy5hcnJheSl7aWYoJC5sZW5ndGghPT1RLmxlbmd0aClyZXR1cm57dmFsaWQ6ITF9O2xldCBYPVtdO2ZvcihsZXQgVz0wO1c8JC5sZW5ndGg7VysrKXtsZXQgRz0kW1ddLFU9UVtXXSxIPW5IKEcsVSk7aWYoIUgudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtYLnB1c2goSC5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpYfX1lbHNlIGlmKEo9PT1DLmRhdGUmJlk9PT1DLmRhdGUmJiskPT09K1EpcmV0dXJue3ZhbGlkOiEwLGRhdGE6JH07ZWxzZSByZXR1cm57dmFsaWQ6ITF9fWNsYXNzIFVRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpLFk9KFgsVyk9PntpZihwSChYKXx8cEgoVykpcmV0dXJuIG47bGV0IEc9bkgoWC52YWx1ZSxXLnZhbHVlKTtpZighRy52YWxpZClyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXN9KSxuO2lmKGRIKFgpfHxkSChXKSlRLmRpcnR5KCk7cmV0dXJue3N0YXR1czpRLnZhbHVlLHZhbHVlOkcuZGF0YX19O2lmKEouY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChbdGhpcy5fZGVmLmxlZnQuX3BhcnNlQXN5bmMoe2RhdGE6Si5kYXRhLHBhdGg6Si5wYXRoLHBhcmVudDpKfSksdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZUFzeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pXSkudGhlbigoW1gsV10pPT5ZKFgsVykpO2Vsc2UgcmV0dXJuIFkodGhpcy5fZGVmLmxlZnQuX3BhcnNlU3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KSl9fVVRLmNyZWF0ZT0oJCxRLEopPT57cmV0dXJuIG5ldyBVUSh7bGVmdDokLHJpZ2h0OlEsdHlwZU5hbWU6Yi5ab2RJbnRlcnNlY3Rpb24sLi4uZShKKX0pfTtjbGFzcyByNCBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7c3RhdHVzOlEsY3R4Okp9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKTtpZihKLnBhcnNlZFR5cGUhPT1DLmFycmF5KXJldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5hcnJheSxyZWNlaXZlZDpKLnBhcnNlZFR5cGV9KSxuO2lmKEouZGF0YS5sZW5ndGg8dGhpcy5fZGVmLml0ZW1zLmxlbmd0aClyZXR1cm4geShKLHtjb2RlOkUudG9vX3NtYWxsLG1pbmltdW06dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsdHlwZTpcImFycmF5XCJ9KSxuO2lmKCF0aGlzLl9kZWYucmVzdCYmSi5kYXRhLmxlbmd0aD50aGlzLl9kZWYuaXRlbXMubGVuZ3RoKXkoSix7Y29kZTpFLnRvb19iaWcsbWF4aW11bTp0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLGluY2x1c2l2ZTohMCxleGFjdDohMSx0eXBlOlwiYXJyYXlcIn0pLFEuZGlydHkoKTtsZXQgWD1bLi4uSi5kYXRhXS5tYXAoKFcsRyk9PntsZXQgVT10aGlzLl9kZWYuaXRlbXNbR118fHRoaXMuX2RlZi5yZXN0O2lmKCFVKXJldHVybiBudWxsO3JldHVybiBVLl9wYXJzZShuZXcgSzQoSixXLEoucGF0aCxHKSl9KS5maWx0ZXIoKFcpPT4hIVcpO2lmKEouY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChYKS50aGVuKChXKT0+e3JldHVybiBHNi5tZXJnZUFycmF5KFEsVyl9KTtlbHNlIHJldHVybiBHNi5tZXJnZUFycmF5KFEsWCl9Z2V0IGl0ZW1zKCl7cmV0dXJuIHRoaXMuX2RlZi5pdGVtc31yZXN0KCQpe3JldHVybiBuZXcgcjQoey4uLnRoaXMuX2RlZixyZXN0OiR9KX19cjQuY3JlYXRlPSgkLFEpPT57aWYoIUFycmF5LmlzQXJyYXkoJCkpdGhyb3cgRXJyb3IoXCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYXMgdG8gei50dXBsZShbIC4uLiBdKVwiKTtyZXR1cm4gbmV3IHI0KHtpdGVtczokLHR5cGVOYW1lOmIuWm9kVHVwbGUscmVzdDpudWxsLC4uLmUoUSl9KX07Y2xhc3MgbDUgZXh0ZW5kcyBZJHtnZXQga2V5U2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5rZXlUeXBlfWdldCB2YWx1ZVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfV9wYXJzZSgkKXtsZXR7c3RhdHVzOlEsY3R4Okp9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKTtpZihKLnBhcnNlZFR5cGUhPT1DLm9iamVjdClyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMub2JqZWN0LHJlY2VpdmVkOkoucGFyc2VkVHlwZX0pLG47bGV0IFk9W10sWD10aGlzLl9kZWYua2V5VHlwZSxXPXRoaXMuX2RlZi52YWx1ZVR5cGU7Zm9yKGxldCBHIGluIEouZGF0YSlZLnB1c2goe2tleTpYLl9wYXJzZShuZXcgSzQoSixHLEoucGF0aCxHKSksdmFsdWU6Vy5fcGFyc2UobmV3IEs0KEosSi5kYXRhW0ddLEoucGF0aCxHKSksYWx3YXlzU2V0OkcgaW4gSi5kYXRhfSk7aWYoSi5jb21tb24uYXN5bmMpcmV0dXJuIEc2Lm1lcmdlT2JqZWN0QXN5bmMoUSxZKTtlbHNlIHJldHVybiBHNi5tZXJnZU9iamVjdFN5bmMoUSxZKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfXN0YXRpYyBjcmVhdGUoJCxRLEope2lmKFEgaW5zdGFuY2VvZiBZJClyZXR1cm4gbmV3IGw1KHtrZXlUeXBlOiQsdmFsdWVUeXBlOlEsdHlwZU5hbWU6Yi5ab2RSZWNvcmQsLi4uZShKKX0pO3JldHVybiBuZXcgbDUoe2tleVR5cGU6aTQuY3JlYXRlKCksdmFsdWVUeXBlOiQsdHlwZU5hbWU6Yi5ab2RSZWNvcmQsLi4uZShRKX0pfX1jbGFzcyBjNSBleHRlbmRzIFkke2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKEoucGFyc2VkVHlwZSE9PUMubWFwKXJldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5tYXAscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbjtsZXQgWT10aGlzLl9kZWYua2V5VHlwZSxYPXRoaXMuX2RlZi52YWx1ZVR5cGUsVz1bLi4uSi5kYXRhLmVudHJpZXMoKV0ubWFwKChbRyxVXSxIKT0+e3JldHVybntrZXk6WS5fcGFyc2UobmV3IEs0KEosRyxKLnBhdGgsW0gsXCJrZXlcIl0pKSx2YWx1ZTpYLl9wYXJzZShuZXcgSzQoSixVLEoucGF0aCxbSCxcInZhbHVlXCJdKSl9fSk7aWYoSi5jb21tb24uYXN5bmMpe2xldCBHPW5ldyBNYXA7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMoKT0+e2ZvcihsZXQgVSBvZiBXKXtsZXQgSD1hd2FpdCBVLmtleSxxPWF3YWl0IFUudmFsdWU7aWYoSC5zdGF0dXM9PT1cImFib3J0ZWRcInx8cS5zdGF0dXM9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtpZihILnN0YXR1cz09PVwiZGlydHlcInx8cS5zdGF0dXM9PT1cImRpcnR5XCIpUS5kaXJ0eSgpO0cuc2V0KEgudmFsdWUscS52YWx1ZSl9cmV0dXJue3N0YXR1czpRLnZhbHVlLHZhbHVlOkd9fSl9ZWxzZXtsZXQgRz1uZXcgTWFwO2ZvcihsZXQgVSBvZiBXKXtsZXR7a2V5OkgsdmFsdWU6cX09VTtpZihILnN0YXR1cz09PVwiYWJvcnRlZFwifHxxLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKEguc3RhdHVzPT09XCJkaXJ0eVwifHxxLnN0YXR1cz09PVwiZGlydHlcIilRLmRpcnR5KCk7Ry5zZXQoSC52YWx1ZSxxLnZhbHVlKX1yZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6R319fX1jNS5jcmVhdGU9KCQsUSxKKT0+e3JldHVybiBuZXcgYzUoe3ZhbHVlVHlwZTpRLGtleVR5cGU6JCx0eXBlTmFtZTpiLlpvZE1hcCwuLi5lKEopfSl9O2NsYXNzIGg4IGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtzdGF0dXM6USxjdHg6Sn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKEoucGFyc2VkVHlwZSE9PUMuc2V0KXJldHVybiB5KEose2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5zZXQscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlfSksbjtsZXQgWT10aGlzLl9kZWY7aWYoWS5taW5TaXplIT09bnVsbCl7aWYoSi5kYXRhLnNpemU8WS5taW5TaXplLnZhbHVlKXkoSix7Y29kZTpFLnRvb19zbWFsbCxtaW5pbXVtOlkubWluU2l6ZS52YWx1ZSx0eXBlOlwic2V0XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6WS5taW5TaXplLm1lc3NhZ2V9KSxRLmRpcnR5KCl9aWYoWS5tYXhTaXplIT09bnVsbCl7aWYoSi5kYXRhLnNpemU+WS5tYXhTaXplLnZhbHVlKXkoSix7Y29kZTpFLnRvb19iaWcsbWF4aW11bTpZLm1heFNpemUudmFsdWUsdHlwZTpcInNldFwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOlkubWF4U2l6ZS5tZXNzYWdlfSksUS5kaXJ0eSgpfWxldCBYPXRoaXMuX2RlZi52YWx1ZVR5cGU7ZnVuY3Rpb24gVyhVKXtsZXQgSD1uZXcgU2V0O2ZvcihsZXQgcSBvZiBVKXtpZihxLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKHEuc3RhdHVzPT09XCJkaXJ0eVwiKVEuZGlydHkoKTtILmFkZChxLnZhbHVlKX1yZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6SH19bGV0IEc9Wy4uLkouZGF0YS52YWx1ZXMoKV0ubWFwKChVLEgpPT5YLl9wYXJzZShuZXcgSzQoSixVLEoucGF0aCxIKSkpO2lmKEouY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChHKS50aGVuKChVKT0+VyhVKSk7ZWxzZSByZXR1cm4gVyhHKX1taW4oJCxRKXtyZXR1cm4gbmV3IGg4KHsuLi50aGlzLl9kZWYsbWluU2l6ZTp7dmFsdWU6JCxtZXNzYWdlOm0udG9TdHJpbmcoUSl9fSl9bWF4KCQsUSl7cmV0dXJuIG5ldyBoOCh7Li4udGhpcy5fZGVmLG1heFNpemU6e3ZhbHVlOiQsbWVzc2FnZTptLnRvU3RyaW5nKFEpfX0pfXNpemUoJCxRKXtyZXR1cm4gdGhpcy5taW4oJCxRKS5tYXgoJCxRKX1ub25lbXB0eSgkKXtyZXR1cm4gdGhpcy5taW4oMSwkKX19aDguY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBoOCh7dmFsdWVUeXBlOiQsbWluU2l6ZTpudWxsLG1heFNpemU6bnVsbCx0eXBlTmFtZTpiLlpvZFNldCwuLi5lKFEpfSl9O2NsYXNzIEpRIGV4dGVuZHMgWSR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMudmFsaWRhdGU9dGhpcy5pbXBsZW1lbnR9X3BhcnNlKCQpe2xldHtjdHg6UX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpO2lmKFEucGFyc2VkVHlwZSE9PUMuZnVuY3Rpb24pcmV0dXJuIHkoUSx7Y29kZTpFLmludmFsaWRfdHlwZSxleHBlY3RlZDpDLmZ1bmN0aW9uLHJlY2VpdmVkOlEucGFyc2VkVHlwZX0pLG47ZnVuY3Rpb24gSihHLFUpe3JldHVybiB5NSh7ZGF0YTpHLHBhdGg6US5wYXRoLGVycm9yTWFwczpbUS5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLFEuc2NoZW1hRXJyb3JNYXAsJFEoKSxBMV0uZmlsdGVyKChIKT0+ISFIKSxpc3N1ZURhdGE6e2NvZGU6RS5pbnZhbGlkX2FyZ3VtZW50cyxhcmd1bWVudHNFcnJvcjpVfX0pfWZ1bmN0aW9uIFkoRyxVKXtyZXR1cm4geTUoe2RhdGE6RyxwYXRoOlEucGF0aCxlcnJvck1hcHM6W1EuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCxRLnNjaGVtYUVycm9yTWFwLCRRKCksQTFdLmZpbHRlcigoSCk9PiEhSCksaXNzdWVEYXRhOntjb2RlOkUuaW52YWxpZF9yZXR1cm5fdHlwZSxyZXR1cm5UeXBlRXJyb3I6VX19KX1sZXQgWD17ZXJyb3JNYXA6US5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSxXPVEuZGF0YTtpZih0aGlzLl9kZWYucmV0dXJucyBpbnN0YW5jZW9mIHU4KXtsZXQgRz10aGlzO3JldHVybiBCNihhc3luYyBmdW5jdGlvbiguLi5VKXtsZXQgSD1uZXcgZjYoW10pLHE9YXdhaXQgRy5fZGVmLmFyZ3MucGFyc2VBc3luYyhVLFgpLmNhdGNoKCh6KT0+e3Rocm93IEguYWRkSXNzdWUoSihVLHopKSxIfSksVj1hd2FpdCBSZWZsZWN0LmFwcGx5KFcsdGhpcyxxKTtyZXR1cm4gYXdhaXQgRy5fZGVmLnJldHVybnMuX2RlZi50eXBlLnBhcnNlQXN5bmMoVixYKS5jYXRjaCgoeik9Pnt0aHJvdyBILmFkZElzc3VlKFkoVix6KSksSH0pfSl9ZWxzZXtsZXQgRz10aGlzO3JldHVybiBCNihmdW5jdGlvbiguLi5VKXtsZXQgSD1HLl9kZWYuYXJncy5zYWZlUGFyc2UoVSxYKTtpZighSC5zdWNjZXNzKXRocm93IG5ldyBmNihbSihVLEguZXJyb3IpXSk7bGV0IHE9UmVmbGVjdC5hcHBseShXLHRoaXMsSC5kYXRhKSxWPUcuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShxLFgpO2lmKCFWLnN1Y2Nlc3MpdGhyb3cgbmV3IGY2KFtZKHEsVi5lcnJvcildKTtyZXR1cm4gVi5kYXRhfSl9fXBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5fZGVmLmFyZ3N9cmV0dXJuVHlwZSgpe3JldHVybiB0aGlzLl9kZWYucmV0dXJuc31hcmdzKC4uLiQpe3JldHVybiBuZXcgSlEoey4uLnRoaXMuX2RlZixhcmdzOnI0LmNyZWF0ZSgkKS5yZXN0KGowLmNyZWF0ZSgpKX0pfXJldHVybnMoJCl7cmV0dXJuIG5ldyBKUSh7Li4udGhpcy5fZGVmLHJldHVybnM6JH0pfWltcGxlbWVudCgkKXtyZXR1cm4gdGhpcy5wYXJzZSgkKX1zdHJpY3RJbXBsZW1lbnQoJCl7cmV0dXJuIHRoaXMucGFyc2UoJCl9c3RhdGljIGNyZWF0ZSgkLFEsSil7cmV0dXJuIG5ldyBKUSh7YXJnczokPyQ6cjQuY3JlYXRlKFtdKS5yZXN0KGowLmNyZWF0ZSgpKSxyZXR1cm5zOlF8fGowLmNyZWF0ZSgpLHR5cGVOYW1lOmIuWm9kRnVuY3Rpb24sLi4uZShKKX0pfX1jbGFzcyBIUSBleHRlbmRzIFkke2dldCBzY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpfV9wYXJzZSgkKXtsZXR7Y3R4OlF9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKTtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpLl9wYXJzZSh7ZGF0YTpRLmRhdGEscGF0aDpRLnBhdGgscGFyZW50OlF9KX19SFEuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBIUSh7Z2V0dGVyOiQsdHlwZU5hbWU6Yi5ab2RMYXp5LC4uLmUoUSl9KX07Y2xhc3MgS1EgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYoJC5kYXRhIT09dGhpcy5fZGVmLnZhbHVlKXtsZXQgUT10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShRLHtyZWNlaXZlZDpRLmRhdGEsY29kZTpFLmludmFsaWRfbGl0ZXJhbCxleHBlY3RlZDp0aGlzLl9kZWYudmFsdWV9KSxufXJldHVybntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOiQuZGF0YX19Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZX19S1EuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBLUSh7dmFsdWU6JCx0eXBlTmFtZTpiLlpvZExpdGVyYWwsLi4uZShRKX0pfTtmdW5jdGlvbiBzWigkLFEpe3JldHVybiBuZXcgQTAoe3ZhbHVlczokLHR5cGVOYW1lOmIuWm9kRW51bSwuLi5lKFEpfSl9Y2xhc3MgQTAgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodHlwZW9mICQuZGF0YSE9PVwic3RyaW5nXCIpe2xldCBRPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpLEo9dGhpcy5fZGVmLnZhbHVlcztyZXR1cm4geShRLHtleHBlY3RlZDpVJC5qb2luVmFsdWVzKEopLHJlY2VpdmVkOlEucGFyc2VkVHlwZSxjb2RlOkUuaW52YWxpZF90eXBlfSksbn1pZighdGhpcy5fY2FjaGUpdGhpcy5fY2FjaGU9bmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKTtpZighdGhpcy5fY2FjaGUuaGFzKCQuZGF0YSkpe2xldCBRPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpLEo9dGhpcy5fZGVmLnZhbHVlcztyZXR1cm4geShRLHtyZWNlaXZlZDpRLmRhdGEsY29kZTpFLmludmFsaWRfZW51bV92YWx1ZSxvcHRpb25zOkp9KSxufXJldHVybiBCNigkLmRhdGEpfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9Z2V0IGVudW0oKXtsZXQgJD17fTtmb3IobGV0IFEgb2YgdGhpcy5fZGVmLnZhbHVlcykkW1FdPVE7cmV0dXJuICR9Z2V0IFZhbHVlcygpe2xldCAkPXt9O2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYudmFsdWVzKSRbUV09UTtyZXR1cm4gJH1nZXQgRW51bSgpe2xldCAkPXt9O2ZvcihsZXQgUSBvZiB0aGlzLl9kZWYudmFsdWVzKSRbUV09UTtyZXR1cm4gJH1leHRyYWN0KCQsUT10aGlzLl9kZWYpe3JldHVybiBBMC5jcmVhdGUoJCx7Li4udGhpcy5fZGVmLC4uLlF9KX1leGNsdWRlKCQsUT10aGlzLl9kZWYpe3JldHVybiBBMC5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcigoSik9PiEkLmluY2x1ZGVzKEopKSx7Li4udGhpcy5fZGVmLC4uLlF9KX19QTAuY3JlYXRlPXNaO2NsYXNzIHFRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldCBRPVUkLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKSxKPXRoaXMuX2dldE9yUmV0dXJuQ3R4KCQpO2lmKEoucGFyc2VkVHlwZSE9PUMuc3RyaW5nJiZKLnBhcnNlZFR5cGUhPT1DLm51bWJlcil7bGV0IFk9VSQub2JqZWN0VmFsdWVzKFEpO3JldHVybiB5KEose2V4cGVjdGVkOlUkLmpvaW5WYWx1ZXMoWSkscmVjZWl2ZWQ6Si5wYXJzZWRUeXBlLGNvZGU6RS5pbnZhbGlkX3R5cGV9KSxufWlmKCF0aGlzLl9jYWNoZSl0aGlzLl9jYWNoZT1uZXcgU2V0KFUkLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKSk7aWYoIXRoaXMuX2NhY2hlLmhhcygkLmRhdGEpKXtsZXQgWT1VJC5vYmplY3RWYWx1ZXMoUSk7cmV0dXJuIHkoSix7cmVjZWl2ZWQ6Si5kYXRhLGNvZGU6RS5pbnZhbGlkX2VudW1fdmFsdWUsb3B0aW9uczpZfSksbn1yZXR1cm4gQjYoJC5kYXRhKX1nZXQgZW51bSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVzfX1xUS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IHFRKHt2YWx1ZXM6JCx0eXBlTmFtZTpiLlpvZE5hdGl2ZUVudW0sLi4uZShRKX0pfTtjbGFzcyB1OCBleHRlbmRzIFkke3Vud3JhcCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX1fcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCk7aWYoUS5wYXJzZWRUeXBlIT09Qy5wcm9taXNlJiZRLmNvbW1vbi5hc3luYz09PSExKXJldHVybiB5KFEse2NvZGU6RS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6Qy5wcm9taXNlLHJlY2VpdmVkOlEucGFyc2VkVHlwZX0pLG47bGV0IEo9US5wYXJzZWRUeXBlPT09Qy5wcm9taXNlP1EuZGF0YTpQcm9taXNlLnJlc29sdmUoUS5kYXRhKTtyZXR1cm4gQjYoSi50aGVuKChZKT0+e3JldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKFkse3BhdGg6US5wYXRoLGVycm9yTWFwOlEuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcH0pfSkpfX11OC5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IHU4KHt0eXBlOiQsdHlwZU5hbWU6Yi5ab2RQcm9taXNlLC4uLmUoUSl9KX07Y2xhc3MgYjQgZXh0ZW5kcyBZJHtpbm5lclR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYX1zb3VyY2VUeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX2RlZi50eXBlTmFtZT09PWIuWm9kRWZmZWN0cz90aGlzLl9kZWYuc2NoZW1hLnNvdXJjZVR5cGUoKTp0aGlzLl9kZWYuc2NoZW1hfV9wYXJzZSgkKXtsZXR7c3RhdHVzOlEsY3R4Okp9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKSxZPXRoaXMuX2RlZi5lZmZlY3R8fG51bGwsWD17YWRkSXNzdWU6KFcpPT57aWYoeShKLFcpLFcuZmF0YWwpUS5hYm9ydCgpO2Vsc2UgUS5kaXJ0eSgpfSxnZXQgcGF0aCgpe3JldHVybiBKLnBhdGh9fTtpZihYLmFkZElzc3VlPVguYWRkSXNzdWUuYmluZChYKSxZLnR5cGU9PT1cInByZXByb2Nlc3NcIil7bGV0IFc9WS50cmFuc2Zvcm0oSi5kYXRhLFgpO2lmKEouY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoVykudGhlbihhc3luYyhHKT0+e2lmKFEudmFsdWU9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtsZXQgVT1hd2FpdCB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOkcscGF0aDpKLnBhdGgscGFyZW50Okp9KTtpZihVLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKFUuc3RhdHVzPT09XCJkaXJ0eVwiKXJldHVybiB4OChVLnZhbHVlKTtpZihRLnZhbHVlPT09XCJkaXJ0eVwiKXJldHVybiB4OChVLnZhbHVlKTtyZXR1cm4gVX0pO2Vsc2V7aWYoUS52YWx1ZT09PVwiYWJvcnRlZFwiKXJldHVybiBuO2xldCBHPXRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7ZGF0YTpXLHBhdGg6Si5wYXRoLHBhcmVudDpKfSk7aWYoRy5zdGF0dXM9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtpZihHLnN0YXR1cz09PVwiZGlydHlcIilyZXR1cm4geDgoRy52YWx1ZSk7aWYoUS52YWx1ZT09PVwiZGlydHlcIilyZXR1cm4geDgoRy52YWx1ZSk7cmV0dXJuIEd9fWlmKFkudHlwZT09PVwicmVmaW5lbWVudFwiKXtsZXQgVz0oRyk9PntsZXQgVT1ZLnJlZmluZW1lbnQoRyxYKTtpZihKLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFUpO2lmKFUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IEVycm9yKFwiQXN5bmMgcmVmaW5lbWVudCBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5cIik7cmV0dXJuIEd9O2lmKEouY29tbW9uLmFzeW5jPT09ITEpe2xldCBHPXRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KTtpZihHLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKEcuc3RhdHVzPT09XCJkaXJ0eVwiKVEuZGlydHkoKTtyZXR1cm4gVyhHLnZhbHVlKSx7c3RhdHVzOlEudmFsdWUsdmFsdWU6Ry52YWx1ZX19ZWxzZSByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KS50aGVuKChHKT0+e2lmKEcuc3RhdHVzPT09XCJhYm9ydGVkXCIpcmV0dXJuIG47aWYoRy5zdGF0dXM9PT1cImRpcnR5XCIpUS5kaXJ0eSgpO3JldHVybiBXKEcudmFsdWUpLnRoZW4oKCk9PntyZXR1cm57c3RhdHVzOlEudmFsdWUsdmFsdWU6Ry52YWx1ZX19KX0pfWlmKFkudHlwZT09PVwidHJhbnNmb3JtXCIpaWYoSi5jb21tb24uYXN5bmM9PT0hMSl7bGV0IFc9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOkouZGF0YSxwYXRoOkoucGF0aCxwYXJlbnQ6Sn0pO2lmKCFMMChXKSlyZXR1cm4gbjtsZXQgRz1ZLnRyYW5zZm9ybShXLnZhbHVlLFgpO2lmKEcgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IEVycm9yKFwiQXN5bmNocm9ub3VzIHRyYW5zZm9ybSBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5cIik7cmV0dXJue3N0YXR1czpRLnZhbHVlLHZhbHVlOkd9fWVsc2UgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6Si5kYXRhLHBhdGg6Si5wYXRoLHBhcmVudDpKfSkudGhlbigoVyk9PntpZighTDAoVykpcmV0dXJuIG47cmV0dXJuIFByb21pc2UucmVzb2x2ZShZLnRyYW5zZm9ybShXLnZhbHVlLFgpKS50aGVuKChHKT0+KHtzdGF0dXM6US52YWx1ZSx2YWx1ZTpHfSkpfSk7VSQuYXNzZXJ0TmV2ZXIoWSl9fWI0LmNyZWF0ZT0oJCxRLEopPT57cmV0dXJuIG5ldyBiNCh7c2NoZW1hOiQsdHlwZU5hbWU6Yi5ab2RFZmZlY3RzLGVmZmVjdDpRLC4uLmUoSil9KX07YjQuY3JlYXRlV2l0aFByZXByb2Nlc3M9KCQsUSxKKT0+e3JldHVybiBuZXcgYjQoe3NjaGVtYTpRLGVmZmVjdDp7dHlwZTpcInByZXByb2Nlc3NcIix0cmFuc2Zvcm06JH0sdHlwZU5hbWU6Yi5ab2RFZmZlY3RzLC4uLmUoSil9KX07Y2xhc3MgbzYgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKT09PUMudW5kZWZpbmVkKXJldHVybiBCNih2b2lkIDApO3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSgkKX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19bzYuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBvNih7aW5uZXJUeXBlOiQsdHlwZU5hbWU6Yi5ab2RPcHRpb25hbCwuLi5lKFEpfSl9O2NsYXNzIEkxIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2lmKHRoaXMuX2dldFR5cGUoJCk9PT1DLm51bGwpcmV0dXJuIEI2KG51bGwpO3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSgkKX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19STEuY3JlYXRlPSgkLFEpPT57cmV0dXJuIG5ldyBJMSh7aW5uZXJUeXBlOiQsdHlwZU5hbWU6Yi5ab2ROdWxsYWJsZSwuLi5lKFEpfSl9O2NsYXNzIFZRIGV4dGVuZHMgWSR7X3BhcnNlKCQpe2xldHtjdHg6UX09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKCQpLEo9US5kYXRhO2lmKFEucGFyc2VkVHlwZT09PUMudW5kZWZpbmVkKUo9dGhpcy5fZGVmLmRlZmF1bHRWYWx1ZSgpO3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7ZGF0YTpKLHBhdGg6US5wYXRoLHBhcmVudDpRfSl9cmVtb3ZlRGVmYXVsdCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1WUS5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IFZRKHtpbm5lclR5cGU6JCx0eXBlTmFtZTpiLlpvZERlZmF1bHQsZGVmYXVsdFZhbHVlOnR5cGVvZiBRLmRlZmF1bHQ9PT1cImZ1bmN0aW9uXCI/US5kZWZhdWx0OigpPT5RLmRlZmF1bHQsLi4uZShRKX0pfTtjbGFzcyBCUSBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7Y3R4OlF9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKSxKPXsuLi5RLGNvbW1vbjp7Li4uUS5jb21tb24saXNzdWVzOltdfX0sWT10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50OnsuLi5KfX0pO2lmKFFRKFkpKXJldHVybiBZLnRoZW4oKFgpPT57cmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6WC5zdGF0dXM9PT1cInZhbGlkXCI/WC52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBmNihKLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpKLmRhdGF9KX19KTtlbHNlIHJldHVybntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOlkuc3RhdHVzPT09XCJ2YWxpZFwiP1kudmFsdWU6dGhpcy5fZGVmLmNhdGNoVmFsdWUoe2dldCBlcnJvcigpe3JldHVybiBuZXcgZjYoSi5jb21tb24uaXNzdWVzKX0saW5wdXQ6Si5kYXRhfSl9fXJlbW92ZUNhdGNoKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fUJRLmNyZWF0ZT0oJCxRKT0+e3JldHVybiBuZXcgQlEoe2lubmVyVHlwZTokLHR5cGVOYW1lOmIuWm9kQ2F0Y2gsY2F0Y2hWYWx1ZTp0eXBlb2YgUS5jYXRjaD09PVwiZnVuY3Rpb25cIj9RLmNhdGNoOigpPT5RLmNhdGNoLC4uLmUoUSl9KX07Y2xhc3MgcDUgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7aWYodGhpcy5fZ2V0VHlwZSgkKSE9PUMubmFuKXtsZXQgSj10aGlzLl9nZXRPclJldHVybkN0eCgkKTtyZXR1cm4geShKLHtjb2RlOkUuaW52YWxpZF90eXBlLGV4cGVjdGVkOkMubmFuLHJlY2VpdmVkOkoucGFyc2VkVHlwZX0pLG59cmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6JC5kYXRhfX19cDUuY3JlYXRlPSgkKT0+e3JldHVybiBuZXcgcDUoe3R5cGVOYW1lOmIuWm9kTmFOLC4uLmUoJCl9KX07dmFyIEhIJD1TeW1ib2woXCJ6b2RfYnJhbmRcIik7Y2xhc3Mgb0ggZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0e2N0eDpRfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoJCksSj1RLmRhdGE7cmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7ZGF0YTpKLHBhdGg6US5wYXRoLHBhcmVudDpRfSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfX1jbGFzcyBkNSBleHRlbmRzIFkke19wYXJzZSgkKXtsZXR7c3RhdHVzOlEsY3R4Okp9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcygkKTtpZihKLmNvbW1vbi5hc3luYylyZXR1cm4oYXN5bmMoKT0+e2xldCBYPWF3YWl0IHRoaXMuX2RlZi5pbi5fcGFyc2VBc3luYyh7ZGF0YTpKLmRhdGEscGF0aDpKLnBhdGgscGFyZW50Okp9KTtpZihYLnN0YXR1cz09PVwiYWJvcnRlZFwiKXJldHVybiBuO2lmKFguc3RhdHVzPT09XCJkaXJ0eVwiKXJldHVybiBRLmRpcnR5KCkseDgoWC52YWx1ZSk7ZWxzZSByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VBc3luYyh7ZGF0YTpYLnZhbHVlLHBhdGg6Si5wYXRoLHBhcmVudDpKfSl9KSgpO2Vsc2V7bGV0IFk9dGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe2RhdGE6Si5kYXRhLHBhdGg6Si5wYXRoLHBhcmVudDpKfSk7aWYoWS5zdGF0dXM9PT1cImFib3J0ZWRcIilyZXR1cm4gbjtpZihZLnN0YXR1cz09PVwiZGlydHlcIilyZXR1cm4gUS5kaXJ0eSgpLHtzdGF0dXM6XCJkaXJ0eVwiLHZhbHVlOlkudmFsdWV9O2Vsc2UgcmV0dXJuIHRoaXMuX2RlZi5vdXQuX3BhcnNlU3luYyh7ZGF0YTpZLnZhbHVlLHBhdGg6Si5wYXRoLHBhcmVudDpKfSl9fXN0YXRpYyBjcmVhdGUoJCxRKXtyZXR1cm4gbmV3IGQ1KHtpbjokLG91dDpRLHR5cGVOYW1lOmIuWm9kUGlwZWxpbmV9KX19Y2xhc3MgelEgZXh0ZW5kcyBZJHtfcGFyc2UoJCl7bGV0IFE9dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoJCksSj0oWSk9PntpZihMMChZKSlZLnZhbHVlPU9iamVjdC5mcmVlemUoWS52YWx1ZSk7cmV0dXJuIFl9O3JldHVybiBRUShRKT9RLnRoZW4oKFkpPT5KKFkpKTpKKFEpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX16US5jcmVhdGU9KCQsUSk9PntyZXR1cm4gbmV3IHpRKHtpbm5lclR5cGU6JCx0eXBlTmFtZTpiLlpvZFJlYWRvbmx5LC4uLmUoUSl9KX07dmFyIEtIJD17b2JqZWN0OmckLmxhenljcmVhdGV9LGI7KGZ1bmN0aW9uKCQpeyQuWm9kU3RyaW5nPVwiWm9kU3RyaW5nXCIsJC5ab2ROdW1iZXI9XCJab2ROdW1iZXJcIiwkLlpvZE5hTj1cIlpvZE5hTlwiLCQuWm9kQmlnSW50PVwiWm9kQmlnSW50XCIsJC5ab2RCb29sZWFuPVwiWm9kQm9vbGVhblwiLCQuWm9kRGF0ZT1cIlpvZERhdGVcIiwkLlpvZFN5bWJvbD1cIlpvZFN5bWJvbFwiLCQuWm9kVW5kZWZpbmVkPVwiWm9kVW5kZWZpbmVkXCIsJC5ab2ROdWxsPVwiWm9kTnVsbFwiLCQuWm9kQW55PVwiWm9kQW55XCIsJC5ab2RVbmtub3duPVwiWm9kVW5rbm93blwiLCQuWm9kTmV2ZXI9XCJab2ROZXZlclwiLCQuWm9kVm9pZD1cIlpvZFZvaWRcIiwkLlpvZEFycmF5PVwiWm9kQXJyYXlcIiwkLlpvZE9iamVjdD1cIlpvZE9iamVjdFwiLCQuWm9kVW5pb249XCJab2RVbmlvblwiLCQuWm9kRGlzY3JpbWluYXRlZFVuaW9uPVwiWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsJC5ab2RJbnRlcnNlY3Rpb249XCJab2RJbnRlcnNlY3Rpb25cIiwkLlpvZFR1cGxlPVwiWm9kVHVwbGVcIiwkLlpvZFJlY29yZD1cIlpvZFJlY29yZFwiLCQuWm9kTWFwPVwiWm9kTWFwXCIsJC5ab2RTZXQ9XCJab2RTZXRcIiwkLlpvZEZ1bmN0aW9uPVwiWm9kRnVuY3Rpb25cIiwkLlpvZExhenk9XCJab2RMYXp5XCIsJC5ab2RMaXRlcmFsPVwiWm9kTGl0ZXJhbFwiLCQuWm9kRW51bT1cIlpvZEVudW1cIiwkLlpvZEVmZmVjdHM9XCJab2RFZmZlY3RzXCIsJC5ab2ROYXRpdmVFbnVtPVwiWm9kTmF0aXZlRW51bVwiLCQuWm9kT3B0aW9uYWw9XCJab2RPcHRpb25hbFwiLCQuWm9kTnVsbGFibGU9XCJab2ROdWxsYWJsZVwiLCQuWm9kRGVmYXVsdD1cIlpvZERlZmF1bHRcIiwkLlpvZENhdGNoPVwiWm9kQ2F0Y2hcIiwkLlpvZFByb21pc2U9XCJab2RQcm9taXNlXCIsJC5ab2RCcmFuZGVkPVwiWm9kQnJhbmRlZFwiLCQuWm9kUGlwZWxpbmU9XCJab2RQaXBlbGluZVwiLCQuWm9kUmVhZG9ubHk9XCJab2RSZWFkb25seVwifSkoYnx8KGI9e30pKTt2YXIgcUgkPWk0LmNyZWF0ZSxWSCQ9eTguY3JlYXRlLEJIJD1wNS5jcmVhdGUsekgkPWc4LmNyZWF0ZSxOSCQ9ZzUuY3JlYXRlLHdIJD1YUS5jcmVhdGUsT0gkPWg1LmNyZWF0ZSxESCQ9WVEuY3JlYXRlLEZIJD1XUS5jcmVhdGUsWkgkPXU1LmNyZWF0ZSxNSCQ9ajAuY3JlYXRlLExIJD1uNC5jcmVhdGUsakgkPW01LmNyZWF0ZSxBSCQ9RTQuY3JlYXRlLGVaPWckLmNyZWF0ZSxJSCQ9ZyQuc3RyaWN0Q3JlYXRlLFJIJD1HUS5jcmVhdGUsUEgkPXJILmNyZWF0ZSxFSCQ9VVEuY3JlYXRlLGJIJD1yNC5jcmVhdGUsX0gkPWw1LmNyZWF0ZSxTSCQ9YzUuY3JlYXRlLGtIJD1oOC5jcmVhdGUsdkgkPUpRLmNyZWF0ZSxDSCQ9SFEuY3JlYXRlLFRIJD1LUS5jcmVhdGUseEgkPUEwLmNyZWF0ZSxmSCQ9cVEuY3JlYXRlLHlIJD11OC5jcmVhdGUsZ0gkPWI0LmNyZWF0ZSxoSCQ9bzYuY3JlYXRlLHVIJD1JMS5jcmVhdGUsbUgkPWI0LmNyZWF0ZVdpdGhQcmVwcm9jZXNzLGxIJD1kNS5jcmVhdGU7dmFyIHE0PXt9O2o0KHE0LHt2ZXJzaW9uOigpPT5lSyx1dGlsOigpPT52LHRyZWVpZnlFcnJvcjooKT0+bzUsdG9KU09OU2NoZW1hOigpPT5KOSx0b0RvdFBhdGg6KCk9PkpNLHNhZmVQYXJzZUFzeW5jOigpPT5FMSxzYWZlUGFyc2U6KCk9PlAxLHJlZ2lzdHJ5OigpPT5fUSxyZWdleGVzOigpPT5iMSxwcmV0dGlmeUVycm9yOigpPT50NSxwYXJzZUFzeW5jOigpPT5FMCxwYXJzZTooKT0+UDAsbG9jYWxlczooKT0+YTgsaXNWYWxpZEpXVDooKT0+TU0saXNWYWxpZEJhc2U2NFVSTDooKT0+Wk0saXNWYWxpZEJhc2U2NDooKT0+V3EsZ2xvYmFsUmVnaXN0cnk6KCk9PkE2LGdsb2JhbENvbmZpZzooKT0+TlEsZnVuY3Rpb246KCk9PlMzLGZvcm1hdEVycm9yOigpPT5kOCxmbGF0dGVuRXJyb3I6KCk9PnA4LGNvbmZpZzooKT0+YyQsY2xvbmU6KCk9PlU2LF94aWQ6KCk9Pm1RLF92b2lkOigpPT5qMyxfdXVpZHY3OigpPT5UUSxfdXVpZHY2OigpPT5DUSxfdXVpZHY0OigpPT52USxfdXVpZDooKT0+a1EsX3VybDooKT0+eFEsX3VwcGVyY2FzZTooKT0+JEosX3Vua25vd246KCk9PlMwLF91bmlvbjooKT0+dHUsX3VuZGVmaW5lZDooKT0+RjMsX3VsaWQ6KCk9PnVRLF91aW50NjQ6KCk9Pk8zLF91aW50MzI6KCk9PkIzLF90dXBsZTooKT0+WVYsX3RyaW06KCk9PkdKLF90cmFuc2Zvcm06KCk9PldtLF90b1VwcGVyQ2FzZTooKT0+SEosX3RvTG93ZXJDYXNlOigpPT5VSixfdGVtcGxhdGVMaXRlcmFsOigpPT5ObSxfc3ltYm9sOigpPT5EMyxfc3VjY2VzczooKT0+cW0sX3N0cmluZ2Jvb2w6KCk9PmIzLF9zdHJpbmdGb3JtYXQ6KCk9Pl8zLF9zdHJpbmc6KCk9PlczLF9zdGFydHNXaXRoOigpPT5KSixfc2l6ZTooKT0+YVEsX3NldDooKT0+UW0sX3NhZmVQYXJzZUFzeW5jOigpPT4kWSxfc2FmZVBhcnNlOigpPT5lNSxfcmVnZXg6KCk9PnNRLF9yZWZpbmU6KCk9PkUzLF9yZWNvcmQ6KCk9PmV1LF9yZWFkb25seTooKT0+em0sX3Byb3BlcnR5OigpPT5YVixfcHJvbWlzZTooKT0+T20sX3Bvc2l0aXZlOigpPT5lcSxfcGlwZTooKT0+Qm0sX3BhcnNlQXN5bmM6KCk9PnM1LF9wYXJzZTooKT0+YTUsX292ZXJ3cml0ZTooKT0+ZTQsX29wdGlvbmFsOigpPT5HbSxfbnVtYmVyOigpPT5VMyxfbnVsbGFibGU6KCk9PlVtLF9udWxsOigpPT5aMyxfbm9ybWFsaXplOigpPT5XSixfbm9ucG9zaXRpdmU6KCk9PlFWLF9ub25vcHRpb25hbDooKT0+S20sX25vbm5lZ2F0aXZlOigpPT5KVixfbmV2ZXI6KCk9PkwzLF9uZWdhdGl2ZTooKT0+JFYsX25hdGl2ZUVudW06KCk9PlhtLF9uYW5vaWQ6KCk9PnlRLF9uYW46KCk9PkkzLF9tdWx0aXBsZU9mOigpPT5rMCxfbWluU2l6ZTooKT0+djAsX21pbkxlbmd0aDooKT0+azEsX21pbjooKT0+STYsX21pbWU6KCk9PllKLF9tYXhTaXplOigpPT5lOCxfbWF4TGVuZ3RoOigpPT4kOSxfbWF4OigpPT50NixfbWFwOigpPT4kbSxfbHRlOigpPT50NixfbHQ6KCk9PmE0LF9sb3dlcmNhc2U6KCk9PmVRLF9saXRlcmFsOigpPT5ZbSxfbGVuZ3RoOigpPT5ROSxfbGF6eTooKT0+d20sX2tzdWlkOigpPT5sUSxfand0OigpPT50USxfaXNvVGltZTooKT0+bnEsX2lzb0R1cmF0aW9uOigpPT5ycSxfaXNvRGF0ZVRpbWU6KCk9PmRxLF9pc29EYXRlOigpPT5pcSxfaXB2NjooKT0+cFEsX2lwdjQ6KCk9PmNRLF9pbnRlcnNlY3Rpb246KCk9PnN1LF9pbnQ2NDooKT0+dzMsX2ludDMyOigpPT5WMyxfaW50OigpPT5IMyxfaW5jbHVkZXM6KCk9PlFKLF9ndWlkOigpPT5zOCxfZ3RlOigpPT5JNixfZ3Q6KCk9PnM0LF9mbG9hdDY0OigpPT5xMyxfZmxvYXQzMjooKT0+SzMsX2ZpbGU6KCk9PlIzLF9lbnVtOigpPT5KbSxfZW5kc1dpdGg6KCk9PlhKLF9lbW9qaTooKT0+ZlEsX2VtYWlsOigpPT5TUSxfZTE2NDooKT0+b1EsX2Rpc2NyaW1pbmF0ZWRVbmlvbjooKT0+YXUsX2RlZmF1bHQ6KCk9PkhtLF9kYXRlOigpPT5BMyxfY3VzdG9tOigpPT5QMyxfY3VpZDI6KCk9PmhRLF9jdWlkOigpPT5nUSxfY29lcmNlZFN0cmluZzooKT0+cHEsX2NvZXJjZWROdW1iZXI6KCk9Pm9xLF9jb2VyY2VkRGF0ZTooKT0+c3EsX2NvZXJjZWRCb29sZWFuOigpPT50cSxfY29lcmNlZEJpZ2ludDooKT0+YXEsX2NpZHJ2NjooKT0+aVEsX2NpZHJ2NDooKT0+ZFEsX2NhdGNoOigpPT5WbSxfYm9vbGVhbjooKT0+ejMsX2JpZ2ludDooKT0+TjMsX2Jhc2U2NHVybDooKT0+clEsX2Jhc2U2NDooKT0+blEsX2FycmF5OigpPT5LSixfYW55OigpPT5NMyxUaW1lUHJlY2lzaW9uOigpPT5HMyxORVZFUjooKT0+aTUsSlNPTlNjaGVtYUdlbmVyYXRvcjooKT0+azMsSlNPTlNjaGVtYTooKT0+SU0sRG9jOigpPT5ZWSwkb3V0cHV0OigpPT5YMywkaW5wdXQ6KCk9PlkzLCRjb25zdHJ1Y3RvcjooKT0+RiwkYnJhbmQ6KCk9Pm41LCRab2RYSUQ6KCk9Pk9ZLCRab2RWb2lkOigpPT5UWSwkWm9kVW5rbm93bjooKT0+XzAsJFpvZFVuaW9uOigpPT5QUSwkWm9kVW5kZWZpbmVkOigpPT5TWSwkWm9kVVVJRDooKT0+SFksJFpvZFVSTDooKT0+cVksJFpvZFVMSUQ6KCk9PndZLCRab2RUeXBlOigpPT5vLCRab2RUdXBsZTooKT0+UzEsJFpvZFRyYW5zZm9ybTooKT0+bzgsJFpvZFRlbXBsYXRlTGl0ZXJhbDooKT0+ZVksJFpvZFN5bWJvbDooKT0+X1ksJFpvZFN1Y2Nlc3M6KCk9Pm9ZLCRab2RTdHJpbmdGb3JtYXQ6KCk9PmokLCRab2RTdHJpbmc6KCk9Pl8xLCRab2RTZXQ6KCk9PnVZLCRab2RSZWdpc3RyeTooKT0+YlEsJFpvZFJlY29yZDooKT0+Z1ksJFpvZFJlYWxFcnJvcjooKT0+YzgsJFpvZFJlYWRvbmx5OigpPT5zWSwkWm9kUHJvbWlzZTooKT0+JDMsJFpvZFByZWZhdWx0OigpPT5uWSwkWm9kUGlwZTooKT0+dDgsJFpvZE9wdGlvbmFsOigpPT5wWSwkWm9kT2JqZWN0OigpPT5SUSwkWm9kTnVtYmVyRm9ybWF0OigpPT5FWSwkWm9kTnVtYmVyOigpPT5BUSwkWm9kTnVsbGFibGU6KCk9PmRZLCRab2ROdWxsOigpPT5rWSwkWm9kTm9uT3B0aW9uYWw6KCk9PnJZLCRab2ROZXZlcjooKT0+Q1ksJFpvZE5hbm9JRDooKT0+QlksJFpvZE5hTjooKT0+YVksJFpvZE1hcDooKT0+aFksJFpvZExpdGVyYWw6KCk9PmxZLCRab2RMYXp5OigpPT5RMywkWm9kS1NVSUQ6KCk9PkRZLCRab2RKV1Q6KCk9PlJZLCRab2RJbnRlcnNlY3Rpb246KCk9PnlZLCRab2RJU09UaW1lOigpPT5YcSwkWm9kSVNPRHVyYXRpb246KCk9PllxLCRab2RJU09EYXRlVGltZTooKT0+UXEsJFpvZElTT0RhdGU6KCk9PkpxLCRab2RJUHY2OigpPT5aWSwkWm9kSVB2NDooKT0+RlksJFpvZEdVSUQ6KCk9PlVZLCRab2RGdW5jdGlvbjooKT0+V1YsJFpvZEZpbGU6KCk9PmNZLCRab2RFcnJvcjooKT0+alEsJFpvZEVudW06KCk9Pm1ZLCRab2RFbW9qaTooKT0+VlksJFpvZEVtYWlsOigpPT5LWSwkWm9kRTE2NDooKT0+SVksJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjooKT0+ZlksJFpvZERlZmF1bHQ6KCk9PmlZLCRab2REYXRlOigpPT54WSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OigpPT5QWSwkWm9kQ3VzdG9tOigpPT5KMywkWm9kQ2hlY2tVcHBlckNhc2U6KCk9PmlLLCRab2RDaGVja1N0cmluZ0Zvcm1hdDooKT0+aTgsJFpvZENoZWNrU3RhcnRzV2l0aDooKT0+ckssJFpvZENoZWNrU2l6ZUVxdWFsczooKT0+dUssJFpvZENoZWNrUmVnZXg6KCk9PnBLLCRab2RDaGVja1Byb3BlcnR5OigpPT50SywkWm9kQ2hlY2tPdmVyd3JpdGU6KCk9PnNLLCRab2RDaGVja051bWJlckZvcm1hdDooKT0+ZkssJFpvZENoZWNrTXVsdGlwbGVPZjooKT0+eEssJFpvZENoZWNrTWluU2l6ZTooKT0+aEssJFpvZENoZWNrTWluTGVuZ3RoOigpPT5sSywkWm9kQ2hlY2tNaW1lVHlwZTooKT0+YUssJFpvZENoZWNrTWF4U2l6ZTooKT0+Z0ssJFpvZENoZWNrTWF4TGVuZ3RoOigpPT5tSywkWm9kQ2hlY2tMb3dlckNhc2U6KCk9PmRLLCRab2RDaGVja0xlc3NUaGFuOigpPT5KWSwkWm9kQ2hlY2tMZW5ndGhFcXVhbHM6KCk9PmNLLCRab2RDaGVja0luY2x1ZGVzOigpPT5uSywkWm9kQ2hlY2tHcmVhdGVyVGhhbjooKT0+WFksJFpvZENoZWNrRW5kc1dpdGg6KCk9Pm9LLCRab2RDaGVja0JpZ0ludEZvcm1hdDooKT0+eUssJFpvZENoZWNrOigpPT5UJCwkWm9kQ2F0Y2g6KCk9PnRZLCRab2RDVUlEMjooKT0+TlksJFpvZENVSUQ6KCk9PnpZLCRab2RDSURSdjY6KCk9PkxZLCRab2RDSURSdjQ6KCk9Pk1ZLCRab2RCb29sZWFuOigpPT5uOCwkWm9kQmlnSW50Rm9ybWF0OigpPT5iWSwkWm9kQmlnSW50OigpPT5JUSwkWm9kQmFzZTY0VVJMOigpPT5BWSwkWm9kQmFzZTY0OigpPT5qWSwkWm9kQXN5bmNFcnJvcjooKT0+bzQsJFpvZEFycmF5OigpPT5yOCwkWm9kQW55OigpPT52WX0pO3ZhciBpNT1PYmplY3QuZnJlZXplKHtzdGF0dXM6XCJhYm9ydGVkXCJ9KTtmdW5jdGlvbiBGKCQsUSxKKXtmdW5jdGlvbiBZKFUsSCl7dmFyIHE7T2JqZWN0LmRlZmluZVByb3BlcnR5KFUsXCJfem9kXCIse3ZhbHVlOlUuX3pvZD8/e30sZW51bWVyYWJsZTohMX0pLChxPVUuX3pvZCkudHJhaXRzPz8ocS50cmFpdHM9bmV3IFNldCksVS5fem9kLnRyYWl0cy5hZGQoJCksUShVLEgpO2ZvcihsZXQgViBpbiBHLnByb3RvdHlwZSlpZighKFYgaW4gVSkpT2JqZWN0LmRlZmluZVByb3BlcnR5KFUsVix7dmFsdWU6Ry5wcm90b3R5cGVbVl0uYmluZChVKX0pO1UuX3pvZC5jb25zdHI9RyxVLl96b2QuZGVmPUh9bGV0IFg9Sj8uUGFyZW50Pz9PYmplY3Q7Y2xhc3MgVyBleHRlbmRzIFh7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLFwibmFtZVwiLHt2YWx1ZTokfSk7ZnVuY3Rpb24gRyhVKXt2YXIgSDtsZXQgcT1KPy5QYXJlbnQ/bmV3IFc6dGhpcztZKHEsVSksKEg9cS5fem9kKS5kZWZlcnJlZD8/KEguZGVmZXJyZWQ9W10pO2ZvcihsZXQgViBvZiBxLl96b2QuZGVmZXJyZWQpVigpO3JldHVybiBxfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoRyxcImluaXRcIix7dmFsdWU6WX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6KFUpPT57aWYoSj8uUGFyZW50JiZVIGluc3RhbmNlb2YgSi5QYXJlbnQpcmV0dXJuITA7cmV0dXJuIFU/Ll96b2Q/LnRyYWl0cz8uaGFzKCQpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLFwibmFtZVwiLHt2YWx1ZTokfSksR312YXIgbjU9U3ltYm9sKFwiem9kX2JyYW5kXCIpO2NsYXNzIG80IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihcIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLlwiKX19dmFyIE5RPXt9O2Z1bmN0aW9uIGMkKCQpe2lmKCQpT2JqZWN0LmFzc2lnbihOUSwkKTtyZXR1cm4gTlF9dmFyIHY9e307ajQodix7dW53cmFwTWVzc2FnZTooKT0+d1Esc3RyaW5naWZ5UHJpbWl0aXZlOigpPT54LHJlcXVpcmVkOigpPT5vaCxyYW5kb21TdHJpbmc6KCk9PnVoLHByb3BlcnR5S2V5VHlwZXM6KCk9PlpRLHByb21pc2VBbGxPYmplY3Q6KCk9PmhoLHByaW1pdGl2ZVR5cGVzOigpPT5RSyxwcmVmaXhJc3N1ZXM6KCk9Pmo2LHBpY2s6KCk9PnBoLHBhcnRpYWw6KCk9PnJoLG9wdGlvbmFsS2V5czooKT0+Skssb21pdDooKT0+ZGgsbnVtS2V5czooKT0+bWgsbnVsbGlzaDooKT0+UjEsbm9ybWFsaXplUGFyYW1zOigpPT5TLG1lcmdlOigpPT5uaCxqc29uU3RyaW5naWZ5UmVwbGFjZXI6KCk9PmFILGpvaW5WYWx1ZXM6KCk9PlAsaXNzdWU6KCk9PldLLGlzUGxhaW5PYmplY3Q6KCk9Pmw4LGlzT2JqZWN0OigpPT5tOCxnZXRTaXphYmxlT3JpZ2luOigpPT5NUSxnZXRQYXJzZWRUeXBlOigpPT5saCxnZXRMZW5ndGhhYmxlT3JpZ2luOigpPT5MUSxnZXRFbnVtVmFsdWVzOigpPT5PUSxnZXRFbGVtZW50QXRQYXRoOigpPT5naCxmbG9hdFNhZmVSZW1haW5kZXI6KCk9PnNILGZpbmFsaXplSXNzdWU6KCk9Pnk2LGV4dGVuZDooKT0+aWgsZXNjYXBlUmVnZXg6KCk9PnQ0LGVzYzooKT0+STAsZGVmaW5lTGF6eTooKT0+TiQsY3JlYXRlVHJhbnNwYXJlbnRQcm94eTooKT0+Y2gsY2xvbmU6KCk9PlU2LGNsZWFuUmVnZXg6KCk9PkZRLGNsZWFuRW51bTooKT0+dGgsY2FwdHVyZVN0YWNrVHJhY2U6KCk9PnI1LGNhY2hlZDooKT0+RFEsYXNzaWduUHJvcDooKT0+ZUgsYXNzZXJ0Tm90RXF1YWw6KCk9PlRoLGFzc2VydE5ldmVyOigpPT5maCxhc3NlcnRJczooKT0+eGgsYXNzZXJ0RXF1YWw6KCk9PkNoLGFzc2VydDooKT0+eWgsYWxsb3dzRXZhbDooKT0+JEssYWJvcnRlZDooKT0+UjAsTlVNQkVSX0ZPUk1BVF9SQU5HRVM6KCk9PlhLLENsYXNzOigpPT4kTSxCSUdJTlRfRk9STUFUX1JBTkdFUzooKT0+WUt9KTtmdW5jdGlvbiBDaCgkKXtyZXR1cm4gJH1mdW5jdGlvbiBUaCgkKXtyZXR1cm4gJH1mdW5jdGlvbiB4aCgkKXt9ZnVuY3Rpb24gZmgoJCl7dGhyb3cgRXJyb3IoKX1mdW5jdGlvbiB5aCgkKXt9ZnVuY3Rpb24gT1EoJCl7bGV0IFE9T2JqZWN0LnZhbHVlcygkKS5maWx0ZXIoKFkpPT50eXBlb2YgWT09PVwibnVtYmVyXCIpO3JldHVybiBPYmplY3QuZW50cmllcygkKS5maWx0ZXIoKFtZLFhdKT0+US5pbmRleE9mKCtZKT09PS0xKS5tYXAoKFtZLFhdKT0+WCl9ZnVuY3Rpb24gUCgkLFE9XCJ8XCIpe3JldHVybiAkLm1hcCgoSik9PngoSikpLmpvaW4oUSl9ZnVuY3Rpb24gYUgoJCxRKXtpZih0eXBlb2YgUT09PVwiYmlnaW50XCIpcmV0dXJuIFEudG9TdHJpbmcoKTtyZXR1cm4gUX1mdW5jdGlvbiBEUSgkKXtyZXR1cm57Z2V0IHZhbHVlKCl7e2xldCBKPSQoKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJ2YWx1ZVwiLHt2YWx1ZTpKfSksSn10aHJvdyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKX19fWZ1bmN0aW9uIFIxKCQpe3JldHVybiAkPT09bnVsbHx8JD09PXZvaWQgMH1mdW5jdGlvbiBGUSgkKXtsZXQgUT0kLnN0YXJ0c1dpdGgoXCJeXCIpPzE6MCxKPSQuZW5kc1dpdGgoXCIkXCIpPyQubGVuZ3RoLTE6JC5sZW5ndGg7cmV0dXJuICQuc2xpY2UoUSxKKX1mdW5jdGlvbiBzSCgkLFEpe2xldCBKPSgkLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgsWT0oUS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXXx8XCJcIikubGVuZ3RoLFg9Sj5ZP0o6WSxXPU51bWJlci5wYXJzZUludCgkLnRvRml4ZWQoWCkucmVwbGFjZShcIi5cIixcIlwiKSksRz1OdW1iZXIucGFyc2VJbnQoUS50b0ZpeGVkKFgpLnJlcGxhY2UoXCIuXCIsXCJcIikpO3JldHVybiBXJUcvMTAqKlh9ZnVuY3Rpb24gTiQoJCxRLEope09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkLFEse2dldCgpe3tsZXQgWD1KKCk7cmV0dXJuICRbUV09WCxYfXRocm93IEVycm9yKFwiY2FjaGVkIHZhbHVlIGFscmVhZHkgc2V0XCIpfSxzZXQoWCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQsUSx7dmFsdWU6WH0pfSxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBlSCgkLFEsSil7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQsUSx7dmFsdWU6Six3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGdoKCQsUSl7aWYoIVEpcmV0dXJuICQ7cmV0dXJuIFEucmVkdWNlKChKLFkpPT5KPy5bWV0sJCl9ZnVuY3Rpb24gaGgoJCl7bGV0IFE9T2JqZWN0LmtleXMoJCksSj1RLm1hcCgoWSk9PiRbWV0pO3JldHVybiBQcm9taXNlLmFsbChKKS50aGVuKChZKT0+e2xldCBYPXt9O2ZvcihsZXQgVz0wO1c8US5sZW5ndGg7VysrKVhbUVtXXV09WVtXXTtyZXR1cm4gWH0pfWZ1bmN0aW9uIHVoKCQ9MTApe2xldCBKPVwiXCI7Zm9yKGxldCBZPTA7WTwkO1krKylKKz1cImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI2KV07cmV0dXJuIEp9ZnVuY3Rpb24gSTAoJCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KCQpfXZhciByNT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTooLi4uJCk9Pnt9O2Z1bmN0aW9uIG04KCQpe3JldHVybiB0eXBlb2YgJD09PVwib2JqZWN0XCImJiQhPT1udWxsJiYhQXJyYXkuaXNBcnJheSgkKX12YXIgJEs9RFEoKCk9PntpZih0eXBlb2YgbmF2aWdhdG9yPFwidVwiJiZuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoXCJDbG91ZGZsYXJlXCIpKXJldHVybiExO3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKFwiXCIpLCEwfWNhdGNoKCQpe3JldHVybiExfX0pO2Z1bmN0aW9uIGw4KCQpe2lmKG04KCQpPT09ITEpcmV0dXJuITE7bGV0IFE9JC5jb25zdHJ1Y3RvcjtpZihRPT09dm9pZCAwKXJldHVybiEwO2xldCBKPVEucHJvdG90eXBlO2lmKG04KEopPT09ITEpcmV0dXJuITE7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEosXCJpc1Byb3RvdHlwZU9mXCIpPT09ITEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbWgoJCl7bGV0IFE9MDtmb3IobGV0IEogaW4gJClpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJCxKKSlRKys7cmV0dXJuIFF9dmFyIGxoPSgkKT0+e2xldCBRPXR5cGVvZiAkO3N3aXRjaChRKXtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm5cInVuZGVmaW5lZFwiO2Nhc2VcInN0cmluZ1wiOnJldHVyblwic3RyaW5nXCI7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTigkKT9cIm5hblwiOlwibnVtYmVyXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVyblwiYm9vbGVhblwiO2Nhc2VcImZ1bmN0aW9uXCI6cmV0dXJuXCJmdW5jdGlvblwiO2Nhc2VcImJpZ2ludFwiOnJldHVyblwiYmlnaW50XCI7Y2FzZVwic3ltYm9sXCI6cmV0dXJuXCJzeW1ib2xcIjtjYXNlXCJvYmplY3RcIjppZihBcnJheS5pc0FycmF5KCQpKXJldHVyblwiYXJyYXlcIjtpZigkPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZigkLnRoZW4mJnR5cGVvZiAkLnRoZW49PT1cImZ1bmN0aW9uXCImJiQuY2F0Y2gmJnR5cGVvZiAkLmNhdGNoPT09XCJmdW5jdGlvblwiKXJldHVyblwicHJvbWlzZVwiO2lmKHR5cGVvZiBNYXA8XCJ1XCImJiQgaW5zdGFuY2VvZiBNYXApcmV0dXJuXCJtYXBcIjtpZih0eXBlb2YgU2V0PFwidVwiJiYkIGluc3RhbmNlb2YgU2V0KXJldHVyblwic2V0XCI7aWYodHlwZW9mIERhdGU8XCJ1XCImJiQgaW5zdGFuY2VvZiBEYXRlKXJldHVyblwiZGF0ZVwiO2lmKHR5cGVvZiBGaWxlPFwidVwiJiYkIGluc3RhbmNlb2YgRmlsZSlyZXR1cm5cImZpbGVcIjtyZXR1cm5cIm9iamVjdFwiO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke1F9YCl9fSxaUT1uZXcgU2V0KFtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJzeW1ib2xcIl0pLFFLPW5ldyBTZXQoW1wic3RyaW5nXCIsXCJudW1iZXJcIixcImJpZ2ludFwiLFwiYm9vbGVhblwiLFwic3ltYm9sXCIsXCJ1bmRlZmluZWRcIl0pO2Z1bmN0aW9uIHQ0KCQpe3JldHVybiAkLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLFwiXFxcXCQmXCIpfWZ1bmN0aW9uIFU2KCQsUSxKKXtsZXQgWT1uZXcgJC5fem9kLmNvbnN0cihRPz8kLl96b2QuZGVmKTtpZighUXx8Sj8ucGFyZW50KVkuX3pvZC5wYXJlbnQ9JDtyZXR1cm4gWX1mdW5jdGlvbiBTKCQpe2xldCBRPSQ7aWYoIVEpcmV0dXJue307aWYodHlwZW9mIFE9PT1cInN0cmluZ1wiKXJldHVybntlcnJvcjooKT0+UX07aWYoUT8ubWVzc2FnZSE9PXZvaWQgMCl7aWYoUT8uZXJyb3IhPT12b2lkIDApdGhyb3cgRXJyb3IoXCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXNcIik7US5lcnJvcj1RLm1lc3NhZ2V9aWYoZGVsZXRlIFEubWVzc2FnZSx0eXBlb2YgUS5lcnJvcj09PVwic3RyaW5nXCIpcmV0dXJuey4uLlEsZXJyb3I6KCk9PlEuZXJyb3J9O3JldHVybiBRfWZ1bmN0aW9uIGNoKCQpe2xldCBRO3JldHVybiBuZXcgUHJveHkoe30se2dldChKLFksWCl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5nZXQoUSxZLFgpfSxzZXQoSixZLFgsVyl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5zZXQoUSxZLFgsVyl9LGhhcyhKLFkpe3JldHVybiBRPz8oUT0kKCkpLFJlZmxlY3QuaGFzKFEsWSl9LGRlbGV0ZVByb3BlcnR5KEosWSl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShRLFkpfSxvd25LZXlzKEope3JldHVybiBRPz8oUT0kKCkpLFJlZmxlY3Qub3duS2V5cyhRKX0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEosWSl7cmV0dXJuIFE/PyhRPSQoKSksUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUSxZKX0sZGVmaW5lUHJvcGVydHkoSixZLFgpe3JldHVybiBRPz8oUT0kKCkpLFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoUSxZLFgpfX0pfWZ1bmN0aW9uIHgoJCl7aWYodHlwZW9mICQ9PT1cImJpZ2ludFwiKXJldHVybiAkLnRvU3RyaW5nKCkrXCJuXCI7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKXJldHVybmBcIiR7JH1cImA7cmV0dXJuYCR7JH1gfWZ1bmN0aW9uIEpLKCQpe3JldHVybiBPYmplY3Qua2V5cygkKS5maWx0ZXIoKFEpPT57cmV0dXJuICRbUV0uX3pvZC5vcHRpbj09PVwib3B0aW9uYWxcIiYmJFtRXS5fem9kLm9wdG91dD09PVwib3B0aW9uYWxcIn0pfXZhciBYSz17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCwzNDAyODIzNDY2Mzg1Mjg4NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBdLGZsb2F0NjQ6Wy1OdW1iZXIuTUFYX1ZBTFVFLE51bWJlci5NQVhfVkFMVUVdfSxZSz17aW50NjQ6W0JpZ0ludChcIi05MjIzMzcyMDM2ODU0Nzc1ODA4XCIpLEJpZ0ludChcIjkyMjMzNzIwMzY4NTQ3NzU4MDdcIildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludChcIjE4NDQ2NzQ0MDczNzA5NTUxNjE1XCIpXX07ZnVuY3Rpb24gcGgoJCxRKXtsZXQgSj17fSxZPSQuX3pvZC5kZWY7Zm9yKGxldCBYIGluIFEpe2lmKCEoWCBpbiBZLnNoYXBlKSl0aHJvdyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke1h9XCJgKTtpZighUVtYXSljb250aW51ZTtKW1hdPVkuc2hhcGVbWF19cmV0dXJuIFU2KCQsey4uLiQuX3pvZC5kZWYsc2hhcGU6SixjaGVja3M6W119KX1mdW5jdGlvbiBkaCgkLFEpe2xldCBKPXsuLi4kLl96b2QuZGVmLnNoYXBlfSxZPSQuX3pvZC5kZWY7Zm9yKGxldCBYIGluIFEpe2lmKCEoWCBpbiBZLnNoYXBlKSl0aHJvdyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke1h9XCJgKTtpZighUVtYXSljb250aW51ZTtkZWxldGUgSltYXX1yZXR1cm4gVTYoJCx7Li4uJC5fem9kLmRlZixzaGFwZTpKLGNoZWNrczpbXX0pfWZ1bmN0aW9uIGloKCQsUSl7aWYoIWw4KFEpKXRocm93IEVycm9yKFwiSW52YWxpZCBpbnB1dCB0byBleHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0XCIpO2xldCBKPXsuLi4kLl96b2QuZGVmLGdldCBzaGFwZSgpe2xldCBZPXsuLi4kLl96b2QuZGVmLnNoYXBlLC4uLlF9O3JldHVybiBlSCh0aGlzLFwic2hhcGVcIixZKSxZfSxjaGVja3M6W119O3JldHVybiBVNigkLEopfWZ1bmN0aW9uIG5oKCQsUSl7cmV0dXJuIFU2KCQsey4uLiQuX3pvZC5kZWYsZ2V0IHNoYXBlKCl7bGV0IEo9ey4uLiQuX3pvZC5kZWYuc2hhcGUsLi4uUS5fem9kLmRlZi5zaGFwZX07cmV0dXJuIGVIKHRoaXMsXCJzaGFwZVwiLEopLEp9LGNhdGNoYWxsOlEuX3pvZC5kZWYuY2F0Y2hhbGwsY2hlY2tzOltdfSl9ZnVuY3Rpb24gcmgoJCxRLEope2xldCBZPVEuX3pvZC5kZWYuc2hhcGUsWD17Li4uWX07aWYoSilmb3IobGV0IFcgaW4gSil7aWYoIShXIGluIFkpKXRocm93IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7V31cImApO2lmKCFKW1ddKWNvbnRpbnVlO1hbV109JD9uZXcgJCh7dHlwZTpcIm9wdGlvbmFsXCIsaW5uZXJUeXBlOllbV119KTpZW1ddfWVsc2UgZm9yKGxldCBXIGluIFkpWFtXXT0kP25ldyAkKHt0eXBlOlwib3B0aW9uYWxcIixpbm5lclR5cGU6WVtXXX0pOllbV107cmV0dXJuIFU2KFEsey4uLlEuX3pvZC5kZWYsc2hhcGU6WCxjaGVja3M6W119KX1mdW5jdGlvbiBvaCgkLFEsSil7bGV0IFk9US5fem9kLmRlZi5zaGFwZSxYPXsuLi5ZfTtpZihKKWZvcihsZXQgVyBpbiBKKXtpZighKFcgaW4gWCkpdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtXfVwiYCk7aWYoIUpbV10pY29udGludWU7WFtXXT1uZXcgJCh7dHlwZTpcIm5vbm9wdGlvbmFsXCIsaW5uZXJUeXBlOllbV119KX1lbHNlIGZvcihsZXQgVyBpbiBZKVhbV109bmV3ICQoe3R5cGU6XCJub25vcHRpb25hbFwiLGlubmVyVHlwZTpZW1ddfSk7cmV0dXJuIFU2KFEsey4uLlEuX3pvZC5kZWYsc2hhcGU6WCxjaGVja3M6W119KX1mdW5jdGlvbiBSMCgkLFE9MCl7Zm9yKGxldCBKPVE7SjwkLmlzc3Vlcy5sZW5ndGg7SisrKWlmKCQuaXNzdWVzW0pdPy5jb250aW51ZSE9PSEwKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGo2KCQsUSl7cmV0dXJuIFEubWFwKChKKT0+e3ZhciBZO3JldHVybihZPUopLnBhdGg/PyhZLnBhdGg9W10pLEoucGF0aC51bnNoaWZ0KCQpLEp9KX1mdW5jdGlvbiB3USgkKXtyZXR1cm4gdHlwZW9mICQ9PT1cInN0cmluZ1wiPyQ6JD8ubWVzc2FnZX1mdW5jdGlvbiB5NigkLFEsSil7bGV0IFk9ey4uLiQscGF0aDokLnBhdGg/P1tdfTtpZighJC5tZXNzYWdlKXtsZXQgWD13USgkLmluc3Q/Ll96b2QuZGVmPy5lcnJvcj8uKCQpKT8/d1EoUT8uZXJyb3I/LigkKSk/P3dRKEouY3VzdG9tRXJyb3I/LigkKSk/P3dRKEoubG9jYWxlRXJyb3I/LigkKSk/P1wiSW52YWxpZCBpbnB1dFwiO1kubWVzc2FnZT1YfWlmKGRlbGV0ZSBZLmluc3QsZGVsZXRlIFkuY29udGludWUsIVE/LnJlcG9ydElucHV0KWRlbGV0ZSBZLmlucHV0O3JldHVybiBZfWZ1bmN0aW9uIE1RKCQpe2lmKCQgaW5zdGFuY2VvZiBTZXQpcmV0dXJuXCJzZXRcIjtpZigkIGluc3RhbmNlb2YgTWFwKXJldHVyblwibWFwXCI7aWYoJCBpbnN0YW5jZW9mIEZpbGUpcmV0dXJuXCJmaWxlXCI7cmV0dXJuXCJ1bmtub3duXCJ9ZnVuY3Rpb24gTFEoJCl7aWYoQXJyYXkuaXNBcnJheSgkKSlyZXR1cm5cImFycmF5XCI7aWYodHlwZW9mICQ9PT1cInN0cmluZ1wiKXJldHVyblwic3RyaW5nXCI7cmV0dXJuXCJ1bmtub3duXCJ9ZnVuY3Rpb24gV0soLi4uJCl7bGV0W1EsSixZXT0kO2lmKHR5cGVvZiBRPT09XCJzdHJpbmdcIilyZXR1cm57bWVzc2FnZTpRLGNvZGU6XCJjdXN0b21cIixpbnB1dDpKLGluc3Q6WX07cmV0dXJuey4uLlF9fWZ1bmN0aW9uIHRoKCQpe3JldHVybiBPYmplY3QuZW50cmllcygkKS5maWx0ZXIoKFtRLEpdKT0+e3JldHVybiBOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KFEsMTApKX0pLm1hcCgoUSk9PlFbMV0pfWNsYXNzICRNe2NvbnN0cnVjdG9yKC4uLiQpe319dmFyIFFNPSgkLFEpPT57JC5uYW1lPVwiJFpvZEVycm9yXCIsT2JqZWN0LmRlZmluZVByb3BlcnR5KCQsXCJfem9kXCIse3ZhbHVlOiQuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KCQsXCJpc3N1ZXNcIix7dmFsdWU6USxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KCQsXCJtZXNzYWdlXCIse2dldCgpe3JldHVybiBKU09OLnN0cmluZ2lmeShRLGFILDIpfSxlbnVtZXJhYmxlOiEwfSl9LGpRPUYoXCIkWm9kRXJyb3JcIixRTSksYzg9RihcIiRab2RFcnJvclwiLFFNLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBwOCgkLFE9KEopPT5KLm1lc3NhZ2Upe2xldCBKPXt9LFk9W107Zm9yKGxldCBYIG9mICQuaXNzdWVzKWlmKFgucGF0aC5sZW5ndGg+MClKW1gucGF0aFswXV09SltYLnBhdGhbMF1dfHxbXSxKW1gucGF0aFswXV0ucHVzaChRKFgpKTtlbHNlIFkucHVzaChRKFgpKTtyZXR1cm57Zm9ybUVycm9yczpZLGZpZWxkRXJyb3JzOkp9fWZ1bmN0aW9uIGQ4KCQsUSl7bGV0IEo9UXx8ZnVuY3Rpb24oVyl7cmV0dXJuIFcubWVzc2FnZX0sWT17X2Vycm9yczpbXX0sWD0oVyk9Pntmb3IobGV0IEcgb2YgVy5pc3N1ZXMpaWYoRy5jb2RlPT09XCJpbnZhbGlkX3VuaW9uXCImJkcuZXJyb3JzLmxlbmd0aClHLmVycm9ycy5tYXAoKFUpPT5YKHtpc3N1ZXM6VX0pKTtlbHNlIGlmKEcuY29kZT09PVwiaW52YWxpZF9rZXlcIilYKHtpc3N1ZXM6Ry5pc3N1ZXN9KTtlbHNlIGlmKEcuY29kZT09PVwiaW52YWxpZF9lbGVtZW50XCIpWCh7aXNzdWVzOkcuaXNzdWVzfSk7ZWxzZSBpZihHLnBhdGgubGVuZ3RoPT09MClZLl9lcnJvcnMucHVzaChKKEcpKTtlbHNle2xldCBVPVksSD0wO3doaWxlKEg8Ry5wYXRoLmxlbmd0aCl7bGV0IHE9Ry5wYXRoW0hdO2lmKEghPT1HLnBhdGgubGVuZ3RoLTEpVVtxXT1VW3FdfHx7X2Vycm9yczpbXX07ZWxzZSBVW3FdPVVbcV18fHtfZXJyb3JzOltdfSxVW3FdLl9lcnJvcnMucHVzaChKKEcpKTtVPVVbcV0sSCsrfX19O3JldHVybiBYKCQpLFl9ZnVuY3Rpb24gbzUoJCxRKXtsZXQgSj1RfHxmdW5jdGlvbihXKXtyZXR1cm4gVy5tZXNzYWdlfSxZPXtlcnJvcnM6W119LFg9KFcsRz1bXSk9Pnt2YXIgVSxIO2ZvcihsZXQgcSBvZiBXLmlzc3VlcylpZihxLmNvZGU9PT1cImludmFsaWRfdW5pb25cIiYmcS5lcnJvcnMubGVuZ3RoKXEuZXJyb3JzLm1hcCgoVik9Plgoe2lzc3VlczpWfSxxLnBhdGgpKTtlbHNlIGlmKHEuY29kZT09PVwiaW52YWxpZF9rZXlcIilYKHtpc3N1ZXM6cS5pc3N1ZXN9LHEucGF0aCk7ZWxzZSBpZihxLmNvZGU9PT1cImludmFsaWRfZWxlbWVudFwiKVgoe2lzc3VlczpxLmlzc3Vlc30scS5wYXRoKTtlbHNle2xldCBWPVsuLi5HLC4uLnEucGF0aF07aWYoVi5sZW5ndGg9PT0wKXtZLmVycm9ycy5wdXNoKEoocSkpO2NvbnRpbnVlfWxldCBCPVksej0wO3doaWxlKHo8Vi5sZW5ndGgpe2xldCBOPVZbel0sdz16PT09Vi5sZW5ndGgtMTtpZih0eXBlb2YgTj09PVwic3RyaW5nXCIpQi5wcm9wZXJ0aWVzPz8oQi5wcm9wZXJ0aWVzPXt9KSwoVT1CLnByb3BlcnRpZXMpW05dPz8oVVtOXT17ZXJyb3JzOltdfSksQj1CLnByb3BlcnRpZXNbTl07ZWxzZSBCLml0ZW1zPz8oQi5pdGVtcz1bXSksKEg9Qi5pdGVtcylbTl0/PyhIW05dPXtlcnJvcnM6W119KSxCPUIuaXRlbXNbTl07aWYodylCLmVycm9ycy5wdXNoKEoocSkpO3orK319fTtyZXR1cm4gWCgkKSxZfWZ1bmN0aW9uIEpNKCQpe2xldCBRPVtdO2ZvcihsZXQgSiBvZiAkKWlmKHR5cGVvZiBKPT09XCJudW1iZXJcIilRLnB1c2goYFske0p9XWApO2Vsc2UgaWYodHlwZW9mIEo9PT1cInN5bWJvbFwiKVEucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKEopKX1dYCk7ZWxzZSBpZigvW15cXHckXS8udGVzdChKKSlRLnB1c2goYFske0pTT04uc3RyaW5naWZ5KEopfV1gKTtlbHNle2lmKFEubGVuZ3RoKVEucHVzaChcIi5cIik7US5wdXNoKEopfXJldHVybiBRLmpvaW4oXCJcIil9ZnVuY3Rpb24gdDUoJCl7bGV0IFE9W10sSj1bLi4uJC5pc3N1ZXNdLnNvcnQoKFksWCk9PlkucGF0aC5sZW5ndGgtWC5wYXRoLmxlbmd0aCk7Zm9yKGxldCBZIG9mIEopaWYoUS5wdXNoKGBcdTI3MTYgJHtZLm1lc3NhZ2V9YCksWS5wYXRoPy5sZW5ndGgpUS5wdXNoKGAgIFx1MjE5MiBhdCAke0pNKFkucGF0aCl9YCk7cmV0dXJuIFEuam9pbihgXG5gKX12YXIgYTU9KCQpPT4oUSxKLFksWCk9PntsZXQgVz1ZP09iamVjdC5hc3NpZ24oWSx7YXN5bmM6ITF9KTp7YXN5bmM6ITF9LEc9US5fem9kLnJ1bih7dmFsdWU6Sixpc3N1ZXM6W119LFcpO2lmKEcgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBvNDtpZihHLmlzc3Vlcy5sZW5ndGgpe2xldCBVPW5ldyhYPy5FcnI/PyQpKEcuaXNzdWVzLm1hcCgoSCk9Pnk2KEgsVyxjJCgpKSkpO3Rocm93IHI1KFUsWD8uY2FsbGVlKSxVfXJldHVybiBHLnZhbHVlfSxQMD1hNShjOCksczU9KCQpPT5hc3luYyhRLEosWSxYKT0+e2xldCBXPVk/T2JqZWN0LmFzc2lnbihZLHthc3luYzohMH0pOnthc3luYzohMH0sRz1RLl96b2QucnVuKHt2YWx1ZTpKLGlzc3VlczpbXX0sVyk7aWYoRyBpbnN0YW5jZW9mIFByb21pc2UpRz1hd2FpdCBHO2lmKEcuaXNzdWVzLmxlbmd0aCl7bGV0IFU9bmV3KFg/LkVycj8/JCkoRy5pc3N1ZXMubWFwKChIKT0+eTYoSCxXLGMkKCkpKSk7dGhyb3cgcjUoVSxYPy5jYWxsZWUpLFV9cmV0dXJuIEcudmFsdWV9LEUwPXM1KGM4KSxlNT0oJCk9PihRLEosWSk9PntsZXQgWD1ZP3suLi5ZLGFzeW5jOiExfTp7YXN5bmM6ITF9LFc9US5fem9kLnJ1bih7dmFsdWU6Sixpc3N1ZXM6W119LFgpO2lmKFcgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBvNDtyZXR1cm4gVy5pc3N1ZXMubGVuZ3RoP3tzdWNjZXNzOiExLGVycm9yOm5ldygkPz9qUSkoVy5pc3N1ZXMubWFwKChHKT0+eTYoRyxYLGMkKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6Vy52YWx1ZX19LFAxPWU1KGM4KSwkWT0oJCk9PmFzeW5jKFEsSixZKT0+e2xldCBYPVk/T2JqZWN0LmFzc2lnbihZLHthc3luYzohMH0pOnthc3luYzohMH0sVz1RLl96b2QucnVuKHt2YWx1ZTpKLGlzc3VlczpbXX0sWCk7aWYoVyBpbnN0YW5jZW9mIFByb21pc2UpVz1hd2FpdCBXO3JldHVybiBXLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3ICQoVy5pc3N1ZXMubWFwKChHKT0+eTYoRyxYLGMkKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6Vy52YWx1ZX19LEUxPSRZKGM4KTt2YXIgYjE9e307ajQoYjEse3hpZDooKT0+S0ssdXVpZDc6KCk9PlF1LHV1aWQ2OigpPT4kdSx1dWlkNDooKT0+ZWgsdXVpZDooKT0+YjAsdXBwZXJjYXNlOigpPT5USyx1bmljb2RlRW1haWw6KCk9Pll1LHVuZGVmaW5lZDooKT0+dkssdWxpZDooKT0+SEssdGltZTooKT0+SUssc3RyaW5nOigpPT5QSyxyZmM1MzIyRW1haWw6KCk9Plh1LG51bWJlcjooKT0+X0ssbnVsbDooKT0+a0ssbmFub2lkOigpPT5WSyxsb3dlcmNhc2U6KCk9PkNLLGtzdWlkOigpPT5xSyxpcHY2OigpPT5ESyxpcHY0OigpPT5PSyxpbnRlZ2VyOigpPT5iSyxodG1sNUVtYWlsOigpPT5KdSxob3N0bmFtZTooKT0+TEssZ3VpZDooKT0+ekssZXh0ZW5kZWREdXJhdGlvbjooKT0+c2gsZW1vamk6KCk9PndLLGVtYWlsOigpPT5OSyxlMTY0OigpPT5qSyxkdXJhdGlvbjooKT0+QkssZG9tYWluOigpPT5VdSxkYXRldGltZTooKT0+UkssZGF0ZTooKT0+QUssY3VpZDI6KCk9PlVLLGN1aWQ6KCk9PkdLLGNpZHJ2NjooKT0+WkssY2lkcnY0OigpPT5GSyxicm93c2VyRW1haWw6KCk9Pld1LGJvb2xlYW46KCk9PlNLLGJpZ2ludDooKT0+RUssYmFzZTY0dXJsOigpPT5RWSxiYXNlNjQ6KCk9Pk1LLF9lbW9qaTooKT0+R3V9KTt2YXIgR0s9L15bY0NdW15cXHMtXXs4LH0kLyxVSz0vXlswLTlhLXpdKyQvLEhLPS9eWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNn0kLyxLSz0vXlswLTlhLXZBLVZdezIwfSQvLHFLPS9eW0EtWmEtejAtOV17Mjd9JC8sVks9L15bYS16QS1aMC05Xy1dezIxfSQvLEJLPS9eUCg/OihcXGQrVyl8KD8hLipXKSg/PVxcZHxUXFxkKShcXGQrWSk/KFxcZCtNKT8oXFxkK0QpPyhUKD89XFxkKShcXGQrSCk/KFxcZCtNKT8oXFxkKyhbLixdXFxkKyk/Uyk/KT8pJC8sc2g9L15bLStdP1AoPyEkKSg/Oig/OlstK10/XFxkK1kpfCg/OlstK10/XFxkK1suLF1cXGQrWSQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86KD86Wy0rXT9cXGQrVyl8KD86Wy0rXT9cXGQrWy4sXVxcZCtXJCkpPyg/Oig/OlstK10/XFxkK0QpfCg/OlstK10/XFxkK1suLF1cXGQrRCQpKT8oPzpUKD89W1xcZCstXSkoPzooPzpbLStdP1xcZCtIKXwoPzpbLStdP1xcZCtbLixdXFxkK0gkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/OlstK10/XFxkKyg/OlsuLF1cXGQrKT9TKT8pPz8kLyx6Sz0vXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0pJC8sYjA9KCQpPT57aWYoISQpcmV0dXJuL14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzEtOF1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC87cmV0dXJuIG5ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHskfVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKX0sZWg9YjAoNCksJHU9YjAoNiksUXU9YjAoNyksTks9L14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVphLXowLTlfJytcXC1cXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XFwtXSpcXC4pK1tBLVphLXpdezIsfSQvLEp1PS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxYdT0vXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyxZdT0vXlteXFxzQFwiXXsxLDY0fUBbXlxcc0BdezEsMjU1fSQvdSxXdT0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sR3U9XCJeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJFwiO2Z1bmN0aW9uIHdLKCl7cmV0dXJuIG5ldyBSZWdFeHAoXCJeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJFwiLFwidVwiKX12YXIgT0s9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxESz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KSQvLEZLPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKFswLTldfFsxLTJdWzAtOV18M1swLTJdKSQvLFpLPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxNSz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxRWT0vXltBLVphLXowLTlfLV0qJC8sTEs9L14oW2EtekEtWjAtOS1dK1xcLikqW2EtekEtWjAtOS1dKyQvLFV1PS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1xcLikrW2EtekEtWl17Mix9JC8saks9L15cXCsoPzpbMC05XSl7NiwxNH1bMC05XSQvLFhNPVwiKD86KD86XFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXFxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxcXGR8MlswLThdKSkpXCIsQUs9bmV3IFJlZ0V4cChgXiR7WE19JGApO2Z1bmN0aW9uIFlNKCQpe3JldHVybiB0eXBlb2YgJC5wcmVjaXNpb249PT1cIm51bWJlclwiPyQucHJlY2lzaW9uPT09LTE/XCIoPzpbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkXCI6JC5wcmVjaXNpb249PT0wP1wiKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZDpbMC01XVxcXFxkXCI6YCg/OlswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGQ6WzAtNV1cXFxcZFxcXFwuXFxcXGR7JHskLnByZWNpc2lvbn19YDpcIig/OlswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGQoPzo6WzAtNV1cXFxcZCg/OlxcXFwuXFxcXGQrKT8pP1wifWZ1bmN0aW9uIElLKCQpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtZTSgkKX0kYCl9ZnVuY3Rpb24gUksoJCl7bGV0IFE9WU0oe3ByZWNpc2lvbjokLnByZWNpc2lvbn0pLEo9W1wiWlwiXTtpZigkLmxvY2FsKUoucHVzaChcIlwiKTtpZigkLm9mZnNldClKLnB1c2goXCIoWystXVxcXFxkezJ9OlxcXFxkezJ9KVwiKTtsZXQgWT1gJHtRfSg/OiR7Si5qb2luKFwifFwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7WE19VCg/OiR7WX0pJGApfXZhciBQSz0oJCk9PntsZXQgUT0kP2BbXFxcXHNcXFxcU117JHskPy5taW5pbXVtPz8wfSwkeyQ/Lm1heGltdW0/P1wiXCJ9fWA6XCJbXFxcXHNcXFxcU10qXCI7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke1F9JGApfSxFSz0vXlxcZCtuPyQvLGJLPS9eXFxkKyQvLF9LPS9eLT9cXGQrKD86XFwuXFxkKyk/L2ksU0s9L3RydWV8ZmFsc2UvaSxrSz0vbnVsbC9pO3ZhciB2Sz0vdW5kZWZpbmVkL2k7dmFyIENLPS9eW15BLVpdKiQvLFRLPS9eW15hLXpdKiQvO3ZhciBUJD1GKFwiJFpvZENoZWNrXCIsKCQsUSk9Pnt2YXIgSjskLl96b2Q/PygkLl96b2Q9e30pLCQuX3pvZC5kZWY9USwoSj0kLl96b2QpLm9uYXR0YWNoPz8oSi5vbmF0dGFjaD1bXSl9KSxHTT17bnVtYmVyOlwibnVtYmVyXCIsYmlnaW50OlwiYmlnaW50XCIsb2JqZWN0OlwiZGF0ZVwifSxKWT1GKFwiJFpvZENoZWNrTGVzc1RoYW5cIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXQgSj1HTVt0eXBlb2YgUS52YWx1ZV07JC5fem9kLm9uYXR0YWNoLnB1c2goKFkpPT57bGV0IFg9WS5fem9kLmJhZyxXPShRLmluY2x1c2l2ZT9YLm1heGltdW06WC5leGNsdXNpdmVNYXhpbXVtKT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2lmKFEudmFsdWU8VylpZihRLmluY2x1c2l2ZSlYLm1heGltdW09US52YWx1ZTtlbHNlIFguZXhjbHVzaXZlTWF4aW11bT1RLnZhbHVlfSksJC5fem9kLmNoZWNrPShZKT0+e2lmKFEuaW5jbHVzaXZlP1kudmFsdWU8PVEudmFsdWU6WS52YWx1ZTxRLnZhbHVlKXJldHVybjtZLmlzc3Vlcy5wdXNoKHtvcmlnaW46Sixjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06US52YWx1ZSxpbnB1dDpZLnZhbHVlLGluY2x1c2l2ZTpRLmluY2x1c2l2ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxYWT1GKFwiJFpvZENoZWNrR3JlYXRlclRoYW5cIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXQgSj1HTVt0eXBlb2YgUS52YWx1ZV07JC5fem9kLm9uYXR0YWNoLnB1c2goKFkpPT57bGV0IFg9WS5fem9kLmJhZyxXPShRLmluY2x1c2l2ZT9YLm1pbmltdW06WC5leGNsdXNpdmVNaW5pbXVtKT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2lmKFEudmFsdWU+VylpZihRLmluY2x1c2l2ZSlYLm1pbmltdW09US52YWx1ZTtlbHNlIFguZXhjbHVzaXZlTWluaW11bT1RLnZhbHVlfSksJC5fem9kLmNoZWNrPShZKT0+e2lmKFEuaW5jbHVzaXZlP1kudmFsdWU+PVEudmFsdWU6WS52YWx1ZT5RLnZhbHVlKXJldHVybjtZLmlzc3Vlcy5wdXNoKHtvcmlnaW46Sixjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpRLnZhbHVlLGlucHV0OlkudmFsdWUsaW5jbHVzaXZlOlEuaW5jbHVzaXZlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLHhLPUYoXCIkWm9kQ2hlY2tNdWx0aXBsZU9mXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57dmFyIFk7KFk9Si5fem9kLmJhZykubXVsdGlwbGVPZj8/KFkubXVsdGlwbGVPZj1RLnZhbHVlKX0pLCQuX3pvZC5jaGVjaz0oSik9PntpZih0eXBlb2YgSi52YWx1ZSE9PXR5cGVvZiBRLnZhbHVlKXRocm93IEVycm9yKFwiQ2Fubm90IG1peCBudW1iZXIgYW5kIGJpZ2ludCBpbiBtdWx0aXBsZV9vZiBjaGVjay5cIik7aWYodHlwZW9mIEoudmFsdWU9PT1cImJpZ2ludFwiP0oudmFsdWUlUS52YWx1ZT09PUJpZ0ludCgwKTpzSChKLnZhbHVlLFEudmFsdWUpPT09MClyZXR1cm47Si5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBKLnZhbHVlLGNvZGU6XCJub3RfbXVsdGlwbGVfb2ZcIixkaXZpc29yOlEudmFsdWUsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxmSz1GKFwiJFpvZENoZWNrTnVtYmVyRm9ybWF0XCIsKCQsUSk9PntUJC5pbml0KCQsUSksUS5mb3JtYXQ9US5mb3JtYXR8fFwiZmxvYXQ2NFwiO2xldCBKPVEuZm9ybWF0Py5pbmNsdWRlcyhcImludFwiKSxZPUo/XCJpbnRcIjpcIm51bWJlclwiLFtYLFddPVhLW1EuZm9ybWF0XTskLl96b2Qub25hdHRhY2gucHVzaCgoRyk9PntsZXQgVT1HLl96b2QuYmFnO2lmKFUuZm9ybWF0PVEuZm9ybWF0LFUubWluaW11bT1YLFUubWF4aW11bT1XLEopVS5wYXR0ZXJuPWJLfSksJC5fem9kLmNoZWNrPShHKT0+e2xldCBVPUcudmFsdWU7aWYoSil7aWYoIU51bWJlci5pc0ludGVnZXIoVSkpe0cuaXNzdWVzLnB1c2goe2V4cGVjdGVkOlksZm9ybWF0OlEuZm9ybWF0LGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpVLGluc3Q6JH0pO3JldHVybn1pZighTnVtYmVyLmlzU2FmZUludGVnZXIoVSkpe2lmKFU+MClHLmlzc3Vlcy5wdXNoKHtpbnB1dDpVLGNvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOlwiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS5cIixpbnN0OiQsb3JpZ2luOlksY29udGludWU6IVEuYWJvcnR9KTtlbHNlIEcuaXNzdWVzLnB1c2goe2lucHV0OlUsY29kZTpcInRvb19zbWFsbFwiLG1pbmltdW06TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsbm90ZTpcIkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuXCIsaW5zdDokLG9yaWdpbjpZLGNvbnRpbnVlOiFRLmFib3J0fSk7cmV0dXJufX1pZihVPFgpRy5pc3N1ZXMucHVzaCh7b3JpZ2luOlwibnVtYmVyXCIsaW5wdXQ6VSxjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpYLGluY2x1c2l2ZTohMCxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KTtpZihVPlcpRy5pc3N1ZXMucHVzaCh7b3JpZ2luOlwibnVtYmVyXCIsaW5wdXQ6VSxjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06VyxpbnN0OiR9KX19KSx5Sz1GKFwiJFpvZENoZWNrQmlnSW50Rm9ybWF0XCIsKCQsUSk9PntUJC5pbml0KCQsUSk7bGV0W0osWV09WUtbUS5mb3JtYXRdOyQuX3pvZC5vbmF0dGFjaC5wdXNoKChYKT0+e2xldCBXPVguX3pvZC5iYWc7Vy5mb3JtYXQ9US5mb3JtYXQsVy5taW5pbXVtPUosVy5tYXhpbXVtPVl9KSwkLl96b2QuY2hlY2s9KFgpPT57bGV0IFc9WC52YWx1ZTtpZihXPEopWC5pc3N1ZXMucHVzaCh7b3JpZ2luOlwiYmlnaW50XCIsaW5wdXQ6Vyxjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpKLGluY2x1c2l2ZTohMCxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KTtpZihXPlkpWC5pc3N1ZXMucHVzaCh7b3JpZ2luOlwiYmlnaW50XCIsaW5wdXQ6Vyxjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06WSxpbnN0OiR9KX19KSxnSz1GKFwiJFpvZENoZWNrTWF4U2l6ZVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpLCQuX3pvZC53aGVuPShKKT0+e2xldCBZPUoudmFsdWU7cmV0dXJuIVIxKFkpJiZZLnNpemUhPT12b2lkIDB9LCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2lmKFEubWF4aW11bTxZKUouX3pvZC5iYWcubWF4aW11bT1RLm1heGltdW19KSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9Si52YWx1ZTtpZihZLnNpemU8PVEubWF4aW11bSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7b3JpZ2luOk1RKFkpLGNvZGU6XCJ0b29fYmlnXCIsbWF4aW11bTpRLm1heGltdW0saW5wdXQ6WSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxoSz1GKFwiJFpvZENoZWNrTWluU2l6ZVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpLCQuX3pvZC53aGVuPShKKT0+e2xldCBZPUoudmFsdWU7cmV0dXJuIVIxKFkpJiZZLnNpemUhPT12b2lkIDB9LCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2lmKFEubWluaW11bT5ZKUouX3pvZC5iYWcubWluaW11bT1RLm1pbmltdW19KSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9Si52YWx1ZTtpZihZLnNpemU+PVEubWluaW11bSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7b3JpZ2luOk1RKFkpLGNvZGU6XCJ0b29fc21hbGxcIixtaW5pbXVtOlEubWluaW11bSxpbnB1dDpZLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLHVLPUYoXCIkWm9kQ2hlY2tTaXplRXF1YWxzXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLndoZW49KEopPT57bGV0IFk9Si52YWx1ZTtyZXR1cm4hUjEoWSkmJlkuc2l6ZSE9PXZvaWQgMH0sJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZztZLm1pbmltdW09US5zaXplLFkubWF4aW11bT1RLnNpemUsWS5zaXplPVEuc2l6ZX0pLCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1KLnZhbHVlLFg9WS5zaXplO2lmKFg9PT1RLnNpemUpcmV0dXJuO2xldCBXPVg+US5zaXplO0ouaXNzdWVzLnB1c2goe29yaWdpbjpNUShZKSwuLi5XP3tjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06US5zaXplfTp7Y29kZTpcInRvb19zbWFsbFwiLG1pbmltdW06US5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxtSz1GKFwiJFpvZENoZWNrTWF4TGVuZ3RoXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLndoZW49KEopPT57bGV0IFk9Si52YWx1ZTtyZXR1cm4hUjEoWSkmJlkubGVuZ3RoIT09dm9pZCAwfSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntsZXQgWT1KLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtpZihRLm1heGltdW08WSlKLl96b2QuYmFnLm1heGltdW09US5tYXhpbXVtfSksJC5fem9kLmNoZWNrPShKKT0+e2xldCBZPUoudmFsdWU7aWYoWS5sZW5ndGg8PVEubWF4aW11bSlyZXR1cm47bGV0IFc9TFEoWSk7Si5pc3N1ZXMucHVzaCh7b3JpZ2luOlcsY29kZTpcInRvb19iaWdcIixtYXhpbXVtOlEubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6WSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxsSz1GKFwiJFpvZENoZWNrTWluTGVuZ3RoXCIsKCQsUSk9PntUJC5pbml0KCQsUSksJC5fem9kLndoZW49KEopPT57bGV0IFk9Si52YWx1ZTtyZXR1cm4hUjEoWSkmJlkubGVuZ3RoIT09dm9pZCAwfSwkLl96b2Qub25hdHRhY2gucHVzaCgoSik9PntsZXQgWT1KLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtpZihRLm1pbmltdW0+WSlKLl96b2QuYmFnLm1pbmltdW09US5taW5pbXVtfSksJC5fem9kLmNoZWNrPShKKT0+e2xldCBZPUoudmFsdWU7aWYoWS5sZW5ndGg+PVEubWluaW11bSlyZXR1cm47bGV0IFc9TFEoWSk7Si5pc3N1ZXMucHVzaCh7b3JpZ2luOlcsY29kZTpcInRvb19zbWFsbFwiLG1pbmltdW06US5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDpZLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGNLPUYoXCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHNcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2Qud2hlbj0oSik9PntsZXQgWT1KLnZhbHVlO3JldHVybiFSMShZKSYmWS5sZW5ndGghPT12b2lkIDB9LCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWc7WS5taW5pbXVtPVEubGVuZ3RoLFkubWF4aW11bT1RLmxlbmd0aCxZLmxlbmd0aD1RLmxlbmd0aH0pLCQuX3pvZC5jaGVjaz0oSik9PntsZXQgWT1KLnZhbHVlLFg9WS5sZW5ndGg7aWYoWD09PVEubGVuZ3RoKXJldHVybjtsZXQgVz1MUShZKSxHPVg+US5sZW5ndGg7Si5pc3N1ZXMucHVzaCh7b3JpZ2luOlcsLi4uRz97Y29kZTpcInRvb19iaWdcIixtYXhpbXVtOlEubGVuZ3RofTp7Y29kZTpcInRvb19zbWFsbFwiLG1pbmltdW06US5sZW5ndGh9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLGk4PUYoXCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXRcIiwoJCxRKT0+e3ZhciBKLFk7aWYoVCQuaW5pdCgkLFEpLCQuX3pvZC5vbmF0dGFjaC5wdXNoKChYKT0+e2xldCBXPVguX3pvZC5iYWc7aWYoVy5mb3JtYXQ9US5mb3JtYXQsUS5wYXR0ZXJuKVcucGF0dGVybnM/PyhXLnBhdHRlcm5zPW5ldyBTZXQpLFcucGF0dGVybnMuYWRkKFEucGF0dGVybil9KSxRLnBhdHRlcm4pKEo9JC5fem9kKS5jaGVjaz8/KEouY2hlY2s9KFgpPT57aWYoUS5wYXR0ZXJuLmxhc3RJbmRleD0wLFEucGF0dGVybi50ZXN0KFgudmFsdWUpKXJldHVybjtYLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJzdHJpbmdcIixjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6US5mb3JtYXQsaW5wdXQ6WC52YWx1ZSwuLi5RLnBhdHRlcm4/e3BhdHRlcm46US5wYXR0ZXJuLnRvU3RyaW5nKCl9Ont9LGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfSk7ZWxzZShZPSQuX3pvZCkuY2hlY2s/PyhZLmNoZWNrPSgpPT57fSl9KSxwSz1GKFwiJFpvZENoZWNrUmVnZXhcIiwoJCxRKT0+e2k4LmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57aWYoUS5wYXR0ZXJuLmxhc3RJbmRleD0wLFEucGF0dGVybi50ZXN0KEoudmFsdWUpKXJldHVybjtKLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJzdHJpbmdcIixjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJyZWdleFwiLGlucHV0OkoudmFsdWUscGF0dGVybjpRLnBhdHRlcm4udG9TdHJpbmcoKSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxkSz1GKFwiJFpvZENoZWNrTG93ZXJDYXNlXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49Q0spLGk4LmluaXQoJCxRKX0pLGlLPUYoXCIkWm9kQ2hlY2tVcHBlckNhc2VcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1USyksaTguaW5pdCgkLFEpfSksbks9RihcIiRab2RDaGVja0luY2x1ZGVzXCIsKCQsUSk9PntUJC5pbml0KCQsUSk7bGV0IEo9dDQoUS5pbmNsdWRlcyksWT1uZXcgUmVnRXhwKHR5cGVvZiBRLnBvc2l0aW9uPT09XCJudW1iZXJcIj9gXi57JHtRLnBvc2l0aW9ufX0ke0p9YDpKKTtRLnBhdHRlcm49WSwkLl96b2Qub25hdHRhY2gucHVzaCgoWCk9PntsZXQgVz1YLl96b2QuYmFnO1cucGF0dGVybnM/PyhXLnBhdHRlcm5zPW5ldyBTZXQpLFcucGF0dGVybnMuYWRkKFkpfSksJC5fem9kLmNoZWNrPShYKT0+e2lmKFgudmFsdWUuaW5jbHVkZXMoUS5pbmNsdWRlcyxRLnBvc2l0aW9uKSlyZXR1cm47WC5pc3N1ZXMucHVzaCh7b3JpZ2luOlwic3RyaW5nXCIsY29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwiaW5jbHVkZXNcIixpbmNsdWRlczpRLmluY2x1ZGVzLGlucHV0OlgudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSkscks9RihcIiRab2RDaGVja1N0YXJ0c1dpdGhcIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXQgSj1uZXcgUmVnRXhwKGBeJHt0NChRLnByZWZpeCl9LipgKTtRLnBhdHRlcm4/PyhRLnBhdHRlcm49SiksJC5fem9kLm9uYXR0YWNoLnB1c2goKFkpPT57bGV0IFg9WS5fem9kLmJhZztYLnBhdHRlcm5zPz8oWC5wYXR0ZXJucz1uZXcgU2V0KSxYLnBhdHRlcm5zLmFkZChKKX0pLCQuX3pvZC5jaGVjaz0oWSk9PntpZihZLnZhbHVlLnN0YXJ0c1dpdGgoUS5wcmVmaXgpKXJldHVybjtZLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJzdHJpbmdcIixjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJzdGFydHNfd2l0aFwiLHByZWZpeDpRLnByZWZpeCxpbnB1dDpZLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX0pLG9LPUYoXCIkWm9kQ2hlY2tFbmRzV2l0aFwiLCgkLFEpPT57VCQuaW5pdCgkLFEpO2xldCBKPW5ldyBSZWdFeHAoYC4qJHt0NChRLnN1ZmZpeCl9JGApO1EucGF0dGVybj8/KFEucGF0dGVybj1KKSwkLl96b2Qub25hdHRhY2gucHVzaCgoWSk9PntsZXQgWD1ZLl96b2QuYmFnO1gucGF0dGVybnM/PyhYLnBhdHRlcm5zPW5ldyBTZXQpLFgucGF0dGVybnMuYWRkKEopfSksJC5fem9kLmNoZWNrPShZKT0+e2lmKFkudmFsdWUuZW5kc1dpdGgoUS5zdWZmaXgpKXJldHVybjtZLmlzc3Vlcy5wdXNoKHtvcmlnaW46XCJzdHJpbmdcIixjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJlbmRzX3dpdGhcIixzdWZmaXg6US5zdWZmaXgsaW5wdXQ6WS52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KTtmdW5jdGlvbiBXTSgkLFEsSil7aWYoJC5pc3N1ZXMubGVuZ3RoKVEuaXNzdWVzLnB1c2goLi4uajYoSiwkLmlzc3VlcykpfXZhciB0Sz1GKFwiJFpvZENoZWNrUHJvcGVydHlcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9US5zY2hlbWEuX3pvZC5ydW4oe3ZhbHVlOkoudmFsdWVbUS5wcm9wZXJ0eV0saXNzdWVzOltdfSx7fSk7aWYoWSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFkudGhlbigoWCk9PldNKFgsSixRLnByb3BlcnR5KSk7V00oWSxKLFEucHJvcGVydHkpO3JldHVybn19KSxhSz1GKFwiJFpvZENoZWNrTWltZVR5cGVcIiwoJCxRKT0+e1QkLmluaXQoJCxRKTtsZXQgSj1uZXcgU2V0KFEubWltZSk7JC5fem9kLm9uYXR0YWNoLnB1c2goKFkpPT57WS5fem9kLmJhZy5taW1lPVEubWltZX0pLCQuX3pvZC5jaGVjaz0oWSk9PntpZihKLmhhcyhZLnZhbHVlLnR5cGUpKXJldHVybjtZLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF92YWx1ZVwiLHZhbHVlczpRLm1pbWUsaW5wdXQ6WS52YWx1ZS50eXBlLGluc3Q6JH0pfX0pLHNLPUYoXCIkWm9kQ2hlY2tPdmVyd3JpdGVcIiwoJCxRKT0+e1QkLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57Si52YWx1ZT1RLnR4KEoudmFsdWUpfX0pO2NsYXNzIFlZe2NvbnN0cnVjdG9yKCQ9W10pe2lmKHRoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMpdGhpcy5hcmdzPSR9aW5kZW50ZWQoJCl7dGhpcy5pbmRlbnQrPTEsJCh0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZSgkKXtpZih0eXBlb2YgJD09PVwiZnVuY3Rpb25cIil7JCh0aGlzLHtleGVjdXRpb246XCJzeW5jXCJ9KSwkKHRoaXMse2V4ZWN1dGlvbjpcImFzeW5jXCJ9KTtyZXR1cm59bGV0IEo9JC5zcGxpdChgXG5gKS5maWx0ZXIoKFcpPT5XKSxZPU1hdGgubWluKC4uLkoubWFwKChXKT0+Vy5sZW5ndGgtVy50cmltU3RhcnQoKS5sZW5ndGgpKSxYPUoubWFwKChXKT0+Vy5zbGljZShZKSkubWFwKChXKT0+XCIgXCIucmVwZWF0KHRoaXMuaW5kZW50KjIpK1cpO2ZvcihsZXQgVyBvZiBYKXRoaXMuY29udGVudC5wdXNoKFcpfWNvbXBpbGUoKXtsZXQgJD1GdW5jdGlvbixRPXRoaXM/LmFyZ3MsWT1bLi4uKHRoaXM/LmNvbnRlbnQ/P1tcIlwiXSkubWFwKChYKT0+YCAgJHtYfWApXTtyZXR1cm4gbmV3ICQoLi4uUSxZLmpvaW4oYFxuYCkpfX12YXIgZUs9e21ham9yOjQsbWlub3I6MCxwYXRjaDowfTt2YXIgbz1GKFwiJFpvZFR5cGVcIiwoJCxRKT0+e3ZhciBKOyQ/PygkPXt9KSwkLl96b2QuZGVmPVEsJC5fem9kLmJhZz0kLl96b2QuYmFnfHx7fSwkLl96b2QudmVyc2lvbj1lSztsZXQgWT1bLi4uJC5fem9kLmRlZi5jaGVja3M/P1tdXTtpZigkLl96b2QudHJhaXRzLmhhcyhcIiRab2RDaGVja1wiKSlZLnVuc2hpZnQoJCk7Zm9yKGxldCBYIG9mIFkpZm9yKGxldCBXIG9mIFguX3pvZC5vbmF0dGFjaClXKCQpO2lmKFkubGVuZ3RoPT09MCkoSj0kLl96b2QpLmRlZmVycmVkPz8oSi5kZWZlcnJlZD1bXSksJC5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57JC5fem9kLnJ1bj0kLl96b2QucGFyc2V9KTtlbHNle2xldCBYPShXLEcsVSk9PntsZXQgSD1SMChXKSxxO2ZvcihsZXQgViBvZiBHKXtpZihWLl96b2Qud2hlbil7aWYoIVYuX3pvZC53aGVuKFcpKWNvbnRpbnVlfWVsc2UgaWYoSCljb250aW51ZTtsZXQgQj1XLmlzc3Vlcy5sZW5ndGgsej1WLl96b2QuY2hlY2soVyk7aWYoeiBpbnN0YW5jZW9mIFByb21pc2UmJlU/LmFzeW5jPT09ITEpdGhyb3cgbmV3IG80O2lmKHF8fHogaW5zdGFuY2VvZiBQcm9taXNlKXE9KHE/P1Byb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jKCk9PntpZihhd2FpdCB6LFcuaXNzdWVzLmxlbmd0aD09PUIpcmV0dXJuO2lmKCFIKUg9UjAoVyxCKX0pO2Vsc2V7aWYoVy5pc3N1ZXMubGVuZ3RoPT09Qiljb250aW51ZTtpZighSClIPVIwKFcsQil9fWlmKHEpcmV0dXJuIHEudGhlbigoKT0+e3JldHVybiBXfSk7cmV0dXJuIFd9OyQuX3pvZC5ydW49KFcsRyk9PntsZXQgVT0kLl96b2QucGFyc2UoVyxHKTtpZihVIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoRy5hc3luYz09PSExKXRocm93IG5ldyBvNDtyZXR1cm4gVS50aGVuKChIKT0+WChILFksRykpfXJldHVybiBYKFUsWSxHKX19JFtcIn5zdGFuZGFyZFwiXT17dmFsaWRhdGU6KFgpPT57dHJ5e2xldCBXPVAxKCQsWCk7cmV0dXJuIFcuc3VjY2Vzcz97dmFsdWU6Vy5kYXRhfTp7aXNzdWVzOlcuZXJyb3I/Lmlzc3Vlc319Y2F0Y2goVyl7cmV0dXJuIEUxKCQsWCkudGhlbigoRyk9Pkcuc3VjY2Vzcz97dmFsdWU6Ry5kYXRhfTp7aXNzdWVzOkcuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOlwiem9kXCIsdmVyc2lvbjoxfX0pLF8xPUYoXCIkWm9kU3RyaW5nXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGF0dGVybj1bLi4uJD8uX3pvZC5iYWc/LnBhdHRlcm5zPz9bXV0ucG9wKCk/P1BLKCQuX3pvZC5iYWcpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2lmKFEuY29lcmNlKXRyeXtKLnZhbHVlPVN0cmluZyhKLnZhbHVlKX1jYXRjaChYKXt9aWYodHlwZW9mIEoudmFsdWU9PT1cInN0cmluZ1wiKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcInN0cmluZ1wiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpKLnZhbHVlLGluc3Q6JH0pLEp9fSksaiQ9RihcIiRab2RTdHJpbmdGb3JtYXRcIiwoJCxRKT0+e2k4LmluaXQoJCxRKSxfMS5pbml0KCQsUSl9KSxVWT1GKFwiJFpvZEdVSURcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj16SyksaiQuaW5pdCgkLFEpfSksSFk9RihcIiRab2RVVUlEXCIsKCQsUSk9PntpZihRLnZlcnNpb24pe2xldCBZPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W1EudmVyc2lvbl07aWYoWT09PXZvaWQgMCl0aHJvdyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246IFwiJHtRLnZlcnNpb259XCJgKTtRLnBhdHRlcm4/PyhRLnBhdHRlcm49YjAoWSkpfWVsc2UgUS5wYXR0ZXJuPz8oUS5wYXR0ZXJuPWIwKCkpO2okLmluaXQoJCxRKX0pLEtZPUYoXCIkWm9kRW1haWxcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1OSyksaiQuaW5pdCgkLFEpfSkscVk9RihcIiRab2RVUkxcIiwoJCxRKT0+e2okLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57dHJ5e2xldCBZPUoudmFsdWUsWD1uZXcgVVJMKFkpLFc9WC5ocmVmO2lmKFEuaG9zdG5hbWUpe2lmKFEuaG9zdG5hbWUubGFzdEluZGV4PTAsIVEuaG9zdG5hbWUudGVzdChYLmhvc3RuYW1lKSlKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJ1cmxcIixub3RlOlwiSW52YWxpZCBob3N0bmFtZVwiLHBhdHRlcm46TEsuc291cmNlLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9aWYoUS5wcm90b2NvbCl7aWYoUS5wcm90b2NvbC5sYXN0SW5kZXg9MCwhUS5wcm90b2NvbC50ZXN0KFgucHJvdG9jb2wuZW5kc1dpdGgoXCI6XCIpP1gucHJvdG9jb2wuc2xpY2UoMCwtMSk6WC5wcm90b2NvbCkpSi5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwidXJsXCIsbm90ZTpcIkludmFsaWQgcHJvdG9jb2xcIixwYXR0ZXJuOlEucHJvdG9jb2wuc291cmNlLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9aWYoIVkuZW5kc1dpdGgoXCIvXCIpJiZXLmVuZHNXaXRoKFwiL1wiKSlKLnZhbHVlPVcuc2xpY2UoMCwtMSk7ZWxzZSBKLnZhbHVlPVc7cmV0dXJufWNhdGNoKFkpe0ouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcInVybFwiLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fX0pLFZZPUYoXCIkWm9kRW1vamlcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj13SygpKSxqJC5pbml0KCQsUSl9KSxCWT1GKFwiJFpvZE5hbm9JRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPVZLKSxqJC5pbml0KCQsUSl9KSx6WT1GKFwiJFpvZENVSURcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1HSyksaiQuaW5pdCgkLFEpfSksTlk9RihcIiRab2RDVUlEMlwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPVVLKSxqJC5pbml0KCQsUSl9KSx3WT1GKFwiJFpvZFVMSURcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1ISyksaiQuaW5pdCgkLFEpfSksT1k9RihcIiRab2RYSURcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1LSyksaiQuaW5pdCgkLFEpfSksRFk9RihcIiRab2RLU1VJRFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPXFLKSxqJC5pbml0KCQsUSl9KSxRcT1GKFwiJFpvZElTT0RhdGVUaW1lXCIsKCQsUSk9PntRLnBhdHRlcm4/PyhRLnBhdHRlcm49UksoUSkpLGokLmluaXQoJCxRKX0pLEpxPUYoXCIkWm9kSVNPRGF0ZVwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUFLKSxqJC5pbml0KCQsUSl9KSxYcT1GKFwiJFpvZElTT1RpbWVcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1JSyhRKSksaiQuaW5pdCgkLFEpfSksWXE9RihcIiRab2RJU09EdXJhdGlvblwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUJLKSxqJC5pbml0KCQsUSl9KSxGWT1GKFwiJFpvZElQdjRcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1PSyksaiQuaW5pdCgkLFEpLCQuX3pvZC5vbmF0dGFjaC5wdXNoKChKKT0+e2xldCBZPUouX3pvZC5iYWc7WS5mb3JtYXQ9XCJpcHY0XCJ9KX0pLFpZPUYoXCIkWm9kSVB2NlwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPURLKSxqJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57bGV0IFk9Si5fem9kLmJhZztZLmZvcm1hdD1cImlwdjZcIn0pLCQuX3pvZC5jaGVjaz0oSik9Pnt0cnl7bmV3IFVSTChgaHR0cDovL1ske0oudmFsdWV9XWApfWNhdGNoe0ouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcImlwdjZcIixpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX19KSxNWT1GKFwiJFpvZENJRFJ2NFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPUZLKSxqJC5pbml0KCQsUSl9KSxMWT1GKFwiJFpvZENJRFJ2NlwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPVpLKSxqJC5pbml0KCQsUSksJC5fem9kLmNoZWNrPShKKT0+e2xldFtZLFhdPUoudmFsdWUuc3BsaXQoXCIvXCIpO3RyeXtpZighWCl0aHJvdyBFcnJvcigpO2xldCBXPU51bWJlcihYKTtpZihgJHtXfWAhPT1YKXRocm93IEVycm9yKCk7aWYoVzwwfHxXPjEyOCl0aHJvdyBFcnJvcigpO25ldyBVUkwoYGh0dHA6Ly9bJHtZfV1gKX1jYXRjaHtKLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJjaWRydjZcIixpbnB1dDpKLnZhbHVlLGluc3Q6JCxjb250aW51ZTohUS5hYm9ydH0pfX19KTtmdW5jdGlvbiBXcSgkKXtpZigkPT09XCJcIilyZXR1cm4hMDtpZigkLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoJCksITB9Y2F0Y2h7cmV0dXJuITF9fXZhciBqWT1GKFwiJFpvZEJhc2U2NFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPU1LKSxqJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57Si5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9XCJiYXNlNjRcIn0pLCQuX3pvZC5jaGVjaz0oSik9PntpZihXcShKLnZhbHVlKSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwiYmFzZTY0XCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KTtmdW5jdGlvbiBaTSgkKXtpZighUVkudGVzdCgkKSlyZXR1cm4hMTtsZXQgUT0kLnJlcGxhY2UoL1stX10vZywoWSk9Plk9PT1cIi1cIj9cIitcIjpcIi9cIiksSj1RLnBhZEVuZChNYXRoLmNlaWwoUS5sZW5ndGgvNCkqNCxcIj1cIik7cmV0dXJuIFdxKEopfXZhciBBWT1GKFwiJFpvZEJhc2U2NFVSTFwiLCgkLFEpPT57US5wYXR0ZXJuPz8oUS5wYXR0ZXJuPVFZKSxqJC5pbml0KCQsUSksJC5fem9kLm9uYXR0YWNoLnB1c2goKEopPT57Si5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9XCJiYXNlNjR1cmxcIn0pLCQuX3pvZC5jaGVjaz0oSik9PntpZihaTShKLnZhbHVlKSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlwiYmFzZTY0dXJsXCIsaW5wdXQ6Si52YWx1ZSxpbnN0OiQsY29udGludWU6IVEuYWJvcnR9KX19KSxJWT1GKFwiJFpvZEUxNjRcIiwoJCxRKT0+e1EucGF0dGVybj8/KFEucGF0dGVybj1qSyksaiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gTU0oJCxRPW51bGwpe3RyeXtsZXQgSj0kLnNwbGl0KFwiLlwiKTtpZihKLmxlbmd0aCE9PTMpcmV0dXJuITE7bGV0W1ldPUo7aWYoIVkpcmV0dXJuITE7bGV0IFg9SlNPTi5wYXJzZShhdG9iKFkpKTtpZihcInR5cFwiaW4gWCYmWD8udHlwIT09XCJKV1RcIilyZXR1cm4hMTtpZighWC5hbGcpcmV0dXJuITE7aWYoUSYmKCEoXCJhbGdcImluIFgpfHxYLmFsZyE9PVEpKXJldHVybiExO3JldHVybiEwfWNhdGNoe3JldHVybiExfX12YXIgUlk9RihcIiRab2RKV1RcIiwoJCxRKT0+e2okLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57aWYoTU0oSi52YWx1ZSxRLmFsZykpcmV0dXJuO0ouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX2Zvcm1hdFwiLGZvcm1hdDpcImp3dFwiLGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksUFk9RihcIiRab2RDdXN0b21TdHJpbmdGb3JtYXRcIiwoJCxRKT0+e2okLmluaXQoJCxRKSwkLl96b2QuY2hlY2s9KEopPT57aWYoUS5mbihKLnZhbHVlKSlyZXR1cm47Si5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfZm9ybWF0XCIsZm9ybWF0OlEuZm9ybWF0LGlucHV0OkoudmFsdWUsaW5zdDokLGNvbnRpbnVlOiFRLmFib3J0fSl9fSksQVE9RihcIiRab2ROdW1iZXJcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXR0ZXJuPSQuX3pvZC5iYWcucGF0dGVybj8/X0ssJC5fem9kLnBhcnNlPShKLFkpPT57aWYoUS5jb2VyY2UpdHJ5e0oudmFsdWU9TnVtYmVyKEoudmFsdWUpfWNhdGNoKEcpe31sZXQgWD1KLnZhbHVlO2lmKHR5cGVvZiBYPT09XCJudW1iZXJcIiYmIU51bWJlci5pc05hTihYKSYmTnVtYmVyLmlzRmluaXRlKFgpKXJldHVybiBKO2xldCBXPXR5cGVvZiBYPT09XCJudW1iZXJcIj9OdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjohTnVtYmVyLmlzRmluaXRlKFgpP1wiSW5maW5pdHlcIjp2b2lkIDA6dm9pZCAwO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcIm51bWJlclwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JCwuLi5XP3tyZWNlaXZlZDpXfTp7fX0pLEp9fSksRVk9RihcIiRab2ROdW1iZXJcIiwoJCxRKT0+e2ZLLmluaXQoJCxRKSxBUS5pbml0KCQsUSl9KSxuOD1GKFwiJFpvZEJvb2xlYW5cIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXR0ZXJuPVNLLCQuX3pvZC5wYXJzZT0oSixZKT0+e2lmKFEuY29lcmNlKXRyeXtKLnZhbHVlPUJvb2xlYW4oSi52YWx1ZSl9Y2F0Y2goVyl7fWxldCBYPUoudmFsdWU7aWYodHlwZW9mIFg9PT1cImJvb2xlYW5cIilyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJib29sZWFuXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSn19KSxJUT1GKFwiJFpvZEJpZ0ludFwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhdHRlcm49RUssJC5fem9kLnBhcnNlPShKLFkpPT57aWYoUS5jb2VyY2UpdHJ5e0oudmFsdWU9QmlnSW50KEoudmFsdWUpfWNhdGNoKFgpe31pZih0eXBlb2YgSi52YWx1ZT09PVwiYmlnaW50XCIpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwiYmlnaW50XCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OkoudmFsdWUsaW5zdDokfSksSn19KSxiWT1GKFwiJFpvZEJpZ0ludFwiLCgkLFEpPT57eUsuaW5pdCgkLFEpLElRLmluaXQoJCxRKX0pLF9ZPUYoXCIkWm9kU3ltYm9sXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKHR5cGVvZiBYPT09XCJzeW1ib2xcIilyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJzeW1ib2xcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKfX0pLFNZPUYoXCIkWm9kVW5kZWZpbmVkXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGF0dGVybj12SywkLl96b2QudmFsdWVzPW5ldyBTZXQoW3ZvaWQgMF0pLCQuX3pvZC5vcHRpbj1cIm9wdGlvbmFsXCIsJC5fem9kLm9wdG91dD1cIm9wdGlvbmFsXCIsJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9Si52YWx1ZTtpZih0eXBlb2YgWD5cInVcIilyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJ1bmRlZmluZWRcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKfX0pLGtZPUYoXCIkWm9kTnVsbFwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhdHRlcm49a0ssJC5fem9kLnZhbHVlcz1uZXcgU2V0KFtudWxsXSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9Si52YWx1ZTtpZihYPT09bnVsbClyZXR1cm4gSjtyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJudWxsXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSn19KSx2WT1GKFwiJFpvZEFueVwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKKT0+Sn0pLF8wPUYoXCIkWm9kVW5rbm93blwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKKT0+Sn0pLENZPUYoXCIkWm9kTmV2ZXJcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcIm5ldmVyXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OkoudmFsdWUsaW5zdDokfSksSn19KSxUWT1GKFwiJFpvZFZvaWRcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYodHlwZW9mIFg+XCJ1XCIpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwidm9pZFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JH0pLEp9fSkseFk9RihcIiRab2REYXRlXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntpZihRLmNvZXJjZSl0cnl7Si52YWx1ZT1uZXcgRGF0ZShKLnZhbHVlKX1jYXRjaChVKXt9bGV0IFg9Si52YWx1ZSxXPVggaW5zdGFuY2VvZiBEYXRlO2lmKFcmJiFOdW1iZXIuaXNOYU4oWC5nZXRUaW1lKCkpKXJldHVybiBKO3JldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcImRhdGVcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCwuLi5XP3tyZWNlaXZlZDpcIkludmFsaWQgRGF0ZVwifTp7fSxpbnN0OiR9KSxKfX0pO2Z1bmN0aW9uIEhNKCQsUSxKKXtpZigkLmlzc3Vlcy5sZW5ndGgpUS5pc3N1ZXMucHVzaCguLi5qNihKLCQuaXNzdWVzKSk7US52YWx1ZVtKXT0kLnZhbHVlfXZhciByOD1GKFwiJFpvZEFycmF5XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KFgpKXJldHVybiBKLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcImFycmF5XCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSjtKLnZhbHVlPUFycmF5KFgubGVuZ3RoKTtsZXQgVz1bXTtmb3IobGV0IEc9MDtHPFgubGVuZ3RoO0crKyl7bGV0IFU9WFtHXSxIPVEuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6VSxpc3N1ZXM6W119LFkpO2lmKEggaW5zdGFuY2VvZiBQcm9taXNlKVcucHVzaChILnRoZW4oKHEpPT5ITShxLEosRykpKTtlbHNlIEhNKEgsSixHKX1pZihXLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwoVykudGhlbigoKT0+Sik7cmV0dXJuIEp9fSk7ZnVuY3Rpb24gV1koJCxRLEope2lmKCQuaXNzdWVzLmxlbmd0aClRLmlzc3Vlcy5wdXNoKC4uLmo2KEosJC5pc3N1ZXMpKTtRLnZhbHVlW0pdPSQudmFsdWV9ZnVuY3Rpb24gS00oJCxRLEosWSl7aWYoJC5pc3N1ZXMubGVuZ3RoKWlmKFlbSl09PT12b2lkIDApaWYoSiBpbiBZKVEudmFsdWVbSl09dm9pZCAwO2Vsc2UgUS52YWx1ZVtKXT0kLnZhbHVlO2Vsc2UgUS5pc3N1ZXMucHVzaCguLi5qNihKLCQuaXNzdWVzKSk7ZWxzZSBpZigkLnZhbHVlPT09dm9pZCAwKXtpZihKIGluIFkpUS52YWx1ZVtKXT12b2lkIDB9ZWxzZSBRLnZhbHVlW0pdPSQudmFsdWV9dmFyIFJRPUYoXCIkWm9kT2JqZWN0XCIsKCQsUSk9PntvLmluaXQoJCxRKTtsZXQgSj1EUSgoKT0+e2xldCBCPU9iamVjdC5rZXlzKFEuc2hhcGUpO2ZvcihsZXQgTiBvZiBCKWlmKCEoUS5zaGFwZVtOXWluc3RhbmNlb2YgbykpdGhyb3cgRXJyb3IoYEludmFsaWQgZWxlbWVudCBhdCBrZXkgXCIke059XCI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2xldCB6PUpLKFEuc2hhcGUpO3JldHVybntzaGFwZTpRLnNoYXBlLGtleXM6QixrZXlTZXQ6bmV3IFNldChCKSxudW1LZXlzOkIubGVuZ3RoLG9wdGlvbmFsS2V5czpuZXcgU2V0KHopfX0pO04kKCQuX3pvZCxcInByb3BWYWx1ZXNcIiwoKT0+e2xldCBCPVEuc2hhcGUsej17fTtmb3IobGV0IE4gaW4gQil7bGV0IHc9QltOXS5fem9kO2lmKHcudmFsdWVzKXt6W05dPz8oeltOXT1uZXcgU2V0KTtmb3IobGV0IE8gb2Ygdy52YWx1ZXMpeltOXS5hZGQoTyl9fXJldHVybiB6fSk7bGV0IFk9KEIpPT57bGV0IHo9bmV3IFlZKFtcInNoYXBlXCIsXCJwYXlsb2FkXCIsXCJjdHhcIl0pLE49Si52YWx1ZSx3PShqKT0+e2xldCBBPUkwKGopO3JldHVybmBzaGFwZVske0F9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske0F9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07ei53cml0ZShcImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcIik7bGV0IE89T2JqZWN0LmNyZWF0ZShudWxsKSxEPTA7Zm9yKGxldCBqIG9mIE4ua2V5cylPW2pdPWBrZXlfJHtEKyt9YDt6LndyaXRlKFwiY29uc3QgbmV3UmVzdWx0ID0ge31cIik7Zm9yKGxldCBqIG9mIE4ua2V5cylpZihOLm9wdGlvbmFsS2V5cy5oYXMoaikpe2xldCBBPU9bal07ei53cml0ZShgY29uc3QgJHtBfSA9ICR7dyhqKX07YCk7bGV0IGs9STAoaik7ei53cml0ZShgXG4gICAgICAgIGlmICgke0F9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoaW5wdXRbJHtrfV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCR7a30gaW4gaW5wdXQpIHtcbiAgICAgICAgICAgICAgbmV3UmVzdWx0WyR7a31dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdChcbiAgICAgICAgICAgICAgJHtBfS5pc3N1ZXMubWFwKChpc3MpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uaXNzLFxuICAgICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7a30sIC4uLmlzcy5wYXRoXSA6IFske2t9XSxcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgke0F9LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoJHtrfSBpbiBpbnB1dCkgbmV3UmVzdWx0WyR7a31dID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9ICR7QX0udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYCl9ZWxzZXtsZXQgQT1PW2pdO3oud3JpdGUoYGNvbnN0ICR7QX0gPSAke3coail9O2ApLHoud3JpdGUoYFxuICAgICAgICAgIGlmICgke0F9Lmlzc3Vlcy5sZW5ndGgpIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7QX0uaXNzdWVzLm1hcChpc3MgPT4gKHtcbiAgICAgICAgICAgIC4uLmlzcyxcbiAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7STAoail9LCAuLi5pc3MucGF0aF0gOiBbJHtJMChqKX1dXG4gICAgICAgICAgfSkpKTtgKSx6LndyaXRlKGBuZXdSZXN1bHRbJHtJMChqKX1dID0gJHtBfS52YWx1ZWApfXoud3JpdGUoXCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0O1wiKSx6LndyaXRlKFwicmV0dXJuIHBheWxvYWQ7XCIpO2xldCBNPXouY29tcGlsZSgpO3JldHVybihqLEEpPT5NKEIsaixBKX0sWCxXPW04LEc9IU5RLmppdGxlc3MsSD1HJiYkSy52YWx1ZSxxPVEuY2F0Y2hhbGwsVjskLl96b2QucGFyc2U9KEIseik9PntWPz8oVj1KLnZhbHVlKTtsZXQgTj1CLnZhbHVlO2lmKCFXKE4pKXJldHVybiBCLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpcIm9iamVjdFwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpOLGluc3Q6JH0pLEI7bGV0IHc9W107aWYoRyYmSCYmej8uYXN5bmM9PT0hMSYmei5qaXRsZXNzIT09ITApe2lmKCFYKVg9WShRLnNoYXBlKTtCPVgoQix6KX1lbHNle0IudmFsdWU9e307bGV0IEE9Vi5zaGFwZTtmb3IobGV0IGsgb2YgVi5rZXlzKXtsZXQgdT1BW2tdLEckPXUuX3pvZC5ydW4oe3ZhbHVlOk5ba10saXNzdWVzOltdfSx6KSxoJD11Ll96b2Qub3B0aW49PT1cIm9wdGlvbmFsXCImJnUuX3pvZC5vcHRvdXQ9PT1cIm9wdGlvbmFsXCI7aWYoRyQgaW5zdGFuY2VvZiBQcm9taXNlKXcucHVzaChHJC50aGVuKChzJCk9PmgkP0tNKHMkLEIsayxOKTpXWShzJCxCLGspKSk7ZWxzZSBpZihoJClLTShHJCxCLGssTik7ZWxzZSBXWShHJCxCLGspfX1pZighcSlyZXR1cm4gdy5sZW5ndGg/UHJvbWlzZS5hbGwodykudGhlbigoKT0+Qik6QjtsZXQgTz1bXSxEPVYua2V5U2V0LE09cS5fem9kLGo9TS5kZWYudHlwZTtmb3IobGV0IEEgb2YgT2JqZWN0LmtleXMoTikpe2lmKEQuaGFzKEEpKWNvbnRpbnVlO2lmKGo9PT1cIm5ldmVyXCIpe08ucHVzaChBKTtjb250aW51ZX1sZXQgaz1NLnJ1bih7dmFsdWU6TltBXSxpc3N1ZXM6W119LHopO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlKXcucHVzaChrLnRoZW4oKHUpPT5XWSh1LEIsQSkpKTtlbHNlIFdZKGssQixBKX1pZihPLmxlbmd0aClCLmlzc3Vlcy5wdXNoKHtjb2RlOlwidW5yZWNvZ25pemVkX2tleXNcIixrZXlzOk8saW5wdXQ6TixpbnN0OiR9KTtpZighdy5sZW5ndGgpcmV0dXJuIEI7cmV0dXJuIFByb21pc2UuYWxsKHcpLnRoZW4oKCk9PntyZXR1cm4gQn0pfX0pO2Z1bmN0aW9uIHFNKCQsUSxKLFkpe2ZvcihsZXQgWCBvZiAkKWlmKFguaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIFEudmFsdWU9WC52YWx1ZSxRO3JldHVybiBRLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF91bmlvblwiLGlucHV0OlEudmFsdWUsaW5zdDpKLGVycm9yczokLm1hcCgoWCk9PlguaXNzdWVzLm1hcCgoVyk9Pnk2KFcsWSxjJCgpKSkpfSksUX12YXIgUFE9RihcIiRab2RVbmlvblwiLCgkLFEpPT57by5pbml0KCQsUSksTiQoJC5fem9kLFwib3B0aW5cIiwoKT0+US5vcHRpb25zLnNvbWUoKEopPT5KLl96b2Qub3B0aW49PT1cIm9wdGlvbmFsXCIpP1wib3B0aW9uYWxcIjp2b2lkIDApLE4kKCQuX3pvZCxcIm9wdG91dFwiLCgpPT5RLm9wdGlvbnMuc29tZSgoSik9PkouX3pvZC5vcHRvdXQ9PT1cIm9wdGlvbmFsXCIpP1wib3B0aW9uYWxcIjp2b2lkIDApLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT57aWYoUS5vcHRpb25zLmV2ZXJ5KChKKT0+Si5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQoUS5vcHRpb25zLmZsYXRNYXAoKEopPT5BcnJheS5mcm9tKEouX3pvZC52YWx1ZXMpKSk7cmV0dXJufSksTiQoJC5fem9kLFwicGF0dGVyblwiLCgpPT57aWYoUS5vcHRpb25zLmV2ZXJ5KChKKT0+Si5fem9kLnBhdHRlcm4pKXtsZXQgSj1RLm9wdGlvbnMubWFwKChZKT0+WS5fem9kLnBhdHRlcm4pO3JldHVybiBuZXcgUmVnRXhwKGBeKCR7Si5tYXAoKFkpPT5GUShZLnNvdXJjZSkpLmpvaW4oXCJ8XCIpfSkkYCl9cmV0dXJufSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9ITEsVz1bXTtmb3IobGV0IEcgb2YgUS5vcHRpb25zKXtsZXQgVT1HLl96b2QucnVuKHt2YWx1ZTpKLnZhbHVlLGlzc3VlczpbXX0sWSk7aWYoVSBpbnN0YW5jZW9mIFByb21pc2UpVy5wdXNoKFUpLFg9ITA7ZWxzZXtpZihVLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBVO1cucHVzaChVKX19aWYoIVgpcmV0dXJuIHFNKFcsSiwkLFkpO3JldHVybiBQcm9taXNlLmFsbChXKS50aGVuKChHKT0+e3JldHVybiBxTShHLEosJCxZKX0pfX0pLGZZPUYoXCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsKCQsUSk9PntQUS5pbml0KCQsUSk7bGV0IEo9JC5fem9kLnBhcnNlO04kKCQuX3pvZCxcInByb3BWYWx1ZXNcIiwoKT0+e2xldCBYPXt9O2ZvcihsZXQgVyBvZiBRLm9wdGlvbnMpe2xldCBHPVcuX3pvZC5wcm9wVmFsdWVzO2lmKCFHfHxPYmplY3Qua2V5cyhHKS5sZW5ndGg9PT0wKXRocm93IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtRLm9wdGlvbnMuaW5kZXhPZihXKX1cImApO2ZvcihsZXRbVSxIXW9mIE9iamVjdC5lbnRyaWVzKEcpKXtpZighWFtVXSlYW1VdPW5ldyBTZXQ7Zm9yKGxldCBxIG9mIEgpWFtVXS5hZGQocSl9fXJldHVybiBYfSk7bGV0IFk9RFEoKCk9PntsZXQgWD1RLm9wdGlvbnMsVz1uZXcgTWFwO2ZvcihsZXQgRyBvZiBYKXtsZXQgVT1HLl96b2QucHJvcFZhbHVlc1tRLmRpc2NyaW1pbmF0b3JdO2lmKCFVfHxVLnNpemU9PT0wKXRocm93IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtRLm9wdGlvbnMuaW5kZXhPZihHKX1cImApO2ZvcihsZXQgSCBvZiBVKXtpZihXLmhhcyhIKSl0aHJvdyBFcnJvcihgRHVwbGljYXRlIGRpc2NyaW1pbmF0b3IgdmFsdWUgXCIke1N0cmluZyhIKX1cImApO1cuc2V0KEgsRyl9fXJldHVybiBXfSk7JC5fem9kLnBhcnNlPShYLFcpPT57bGV0IEc9WC52YWx1ZTtpZighbTgoRykpcmV0dXJuIFguaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3R5cGVcIixleHBlY3RlZDpcIm9iamVjdFwiLGlucHV0OkcsaW5zdDokfSksWDtsZXQgVT1ZLnZhbHVlLmdldChHPy5bUS5kaXNjcmltaW5hdG9yXSk7aWYoVSlyZXR1cm4gVS5fem9kLnJ1bihYLFcpO2lmKFEudW5pb25GYWxsYmFjaylyZXR1cm4gSihYLFcpO3JldHVybiBYLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF91bmlvblwiLGVycm9yczpbXSxub3RlOlwiTm8gbWF0Y2hpbmcgZGlzY3JpbWluYXRvclwiLGlucHV0OkcscGF0aDpbUS5kaXNjcmltaW5hdG9yXSxpbnN0OiR9KSxYfX0pLHlZPUYoXCIkWm9kSW50ZXJzZWN0aW9uXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlLFc9US5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpYLGlzc3VlczpbXX0sWSksRz1RLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpYLGlzc3VlczpbXX0sWSk7aWYoVyBpbnN0YW5jZW9mIFByb21pc2V8fEcgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBQcm9taXNlLmFsbChbVyxHXSkudGhlbigoW0gscV0pPT57cmV0dXJuIFZNKEosSCxxKX0pO3JldHVybiBWTShKLFcsRyl9fSk7ZnVuY3Rpb24gJHEoJCxRKXtpZigkPT09USlyZXR1cm57dmFsaWQ6ITAsZGF0YTokfTtpZigkIGluc3RhbmNlb2YgRGF0ZSYmUSBpbnN0YW5jZW9mIERhdGUmJiskPT09K1EpcmV0dXJue3ZhbGlkOiEwLGRhdGE6JH07aWYobDgoJCkmJmw4KFEpKXtsZXQgSj1PYmplY3Qua2V5cyhRKSxZPU9iamVjdC5rZXlzKCQpLmZpbHRlcigoVyk9PkouaW5kZXhPZihXKSE9PS0xKSxYPXsuLi4kLC4uLlF9O2ZvcihsZXQgVyBvZiBZKXtsZXQgRz0kcSgkW1ddLFFbV10pO2lmKCFHLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbVywuLi5HLm1lcmdlRXJyb3JQYXRoXX07WFtXXT1HLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6WH19aWYoQXJyYXkuaXNBcnJheSgkKSYmQXJyYXkuaXNBcnJheShRKSl7aWYoJC5sZW5ndGghPT1RLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2xldCBKPVtdO2ZvcihsZXQgWT0wO1k8JC5sZW5ndGg7WSsrKXtsZXQgWD0kW1ldLFc9UVtZXSxHPSRxKFgsVyk7aWYoIUcudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltZLC4uLkcubWVyZ2VFcnJvclBhdGhdfTtKLnB1c2goRy5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpKfX1yZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119fWZ1bmN0aW9uIFZNKCQsUSxKKXtpZihRLmlzc3Vlcy5sZW5ndGgpJC5pc3N1ZXMucHVzaCguLi5RLmlzc3Vlcyk7aWYoSi5pc3N1ZXMubGVuZ3RoKSQuaXNzdWVzLnB1c2goLi4uSi5pc3N1ZXMpO2lmKFIwKCQpKXJldHVybiAkO2xldCBZPSRxKFEudmFsdWUsSi52YWx1ZSk7aWYoIVkudmFsaWQpdGhyb3cgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KFkubWVyZ2VFcnJvclBhdGgpfWApO3JldHVybiAkLnZhbHVlPVkuZGF0YSwkfXZhciBTMT1GKFwiJFpvZFR1cGxlXCIsKCQsUSk9PntvLmluaXQoJCxRKTtsZXQgSj1RLml0ZW1zLFk9Si5sZW5ndGgtWy4uLkpdLnJldmVyc2UoKS5maW5kSW5kZXgoKFgpPT5YLl96b2Qub3B0aW4hPT1cIm9wdGlvbmFsXCIpOyQuX3pvZC5wYXJzZT0oWCxXKT0+e2xldCBHPVgudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoRykpcmV0dXJuIFguaXNzdWVzLnB1c2goe2lucHV0OkcsaW5zdDokLGV4cGVjdGVkOlwidHVwbGVcIixjb2RlOlwiaW52YWxpZF90eXBlXCJ9KSxYO1gudmFsdWU9W107bGV0IFU9W107aWYoIVEucmVzdCl7bGV0IHE9Ry5sZW5ndGg+Si5sZW5ndGgsVj1HLmxlbmd0aDxZLTE7aWYocXx8VilyZXR1cm4gWC5pc3N1ZXMucHVzaCh7aW5wdXQ6RyxpbnN0OiQsb3JpZ2luOlwiYXJyYXlcIiwuLi5xP3tjb2RlOlwidG9vX2JpZ1wiLG1heGltdW06Si5sZW5ndGh9Ontjb2RlOlwidG9vX3NtYWxsXCIsbWluaW11bTpKLmxlbmd0aH19KSxYfWxldCBIPS0xO2ZvcihsZXQgcSBvZiBKKXtpZihIKyssSD49Ry5sZW5ndGgpe2lmKEg+PVkpY29udGludWV9bGV0IFY9cS5fem9kLnJ1bih7dmFsdWU6R1tIXSxpc3N1ZXM6W119LFcpO2lmKFYgaW5zdGFuY2VvZiBQcm9taXNlKVUucHVzaChWLnRoZW4oKEIpPT5HWShCLFgsSCkpKTtlbHNlIEdZKFYsWCxIKX1pZihRLnJlc3Qpe2xldCBxPUcuc2xpY2UoSi5sZW5ndGgpO2ZvcihsZXQgViBvZiBxKXtIKys7bGV0IEI9US5yZXN0Ll96b2QucnVuKHt2YWx1ZTpWLGlzc3VlczpbXX0sVyk7aWYoQiBpbnN0YW5jZW9mIFByb21pc2UpVS5wdXNoKEIudGhlbigoeik9PkdZKHosWCxIKSkpO2Vsc2UgR1koQixYLEgpfX1pZihVLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwoVSkudGhlbigoKT0+WCk7cmV0dXJuIFh9fSk7ZnVuY3Rpb24gR1koJCxRLEope2lmKCQuaXNzdWVzLmxlbmd0aClRLmlzc3Vlcy5wdXNoKC4uLmo2KEosJC5pc3N1ZXMpKTtRLnZhbHVlW0pdPSQudmFsdWV9dmFyIGdZPUYoXCIkWm9kUmVjb3JkXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKCFsOChYKSlyZXR1cm4gSi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6XCJyZWNvcmRcIixjb2RlOlwiaW52YWxpZF90eXBlXCIsaW5wdXQ6WCxpbnN0OiR9KSxKO2xldCBXPVtdO2lmKFEua2V5VHlwZS5fem9kLnZhbHVlcyl7bGV0IEc9US5rZXlUeXBlLl96b2QudmFsdWVzO0oudmFsdWU9e307Zm9yKGxldCBIIG9mIEcpaWYodHlwZW9mIEg9PT1cInN0cmluZ1wifHx0eXBlb2YgSD09PVwibnVtYmVyXCJ8fHR5cGVvZiBIPT09XCJzeW1ib2xcIil7bGV0IHE9US52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOlhbSF0saXNzdWVzOltdfSxZKTtpZihxIGluc3RhbmNlb2YgUHJvbWlzZSlXLnB1c2gocS50aGVuKChWKT0+e2lmKFYuaXNzdWVzLmxlbmd0aClKLmlzc3Vlcy5wdXNoKC4uLmo2KEgsVi5pc3N1ZXMpKTtKLnZhbHVlW0hdPVYudmFsdWV9KSk7ZWxzZXtpZihxLmlzc3Vlcy5sZW5ndGgpSi5pc3N1ZXMucHVzaCguLi5qNihILHEuaXNzdWVzKSk7Si52YWx1ZVtIXT1xLnZhbHVlfX1sZXQgVTtmb3IobGV0IEggaW4gWClpZighRy5oYXMoSCkpVT1VPz9bXSxVLnB1c2goSCk7aWYoVSYmVS5sZW5ndGg+MClKLmlzc3Vlcy5wdXNoKHtjb2RlOlwidW5yZWNvZ25pemVkX2tleXNcIixpbnB1dDpYLGluc3Q6JCxrZXlzOlV9KX1lbHNle0oudmFsdWU9e307Zm9yKGxldCBHIG9mIFJlZmxlY3Qub3duS2V5cyhYKSl7aWYoRz09PVwiX19wcm90b19fXCIpY29udGludWU7bGV0IFU9US5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpHLGlzc3VlczpbXX0sWSk7aWYoVSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgRXJyb3IoXCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5XCIpO2lmKFUuaXNzdWVzLmxlbmd0aCl7Si5pc3N1ZXMucHVzaCh7b3JpZ2luOlwicmVjb3JkXCIsY29kZTpcImludmFsaWRfa2V5XCIsaXNzdWVzOlUuaXNzdWVzLm1hcCgocSk9Pnk2KHEsWSxjJCgpKSksaW5wdXQ6RyxwYXRoOltHXSxpbnN0OiR9KSxKLnZhbHVlW1UudmFsdWVdPVUudmFsdWU7Y29udGludWV9bGV0IEg9US52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOlhbR10saXNzdWVzOltdfSxZKTtpZihIIGluc3RhbmNlb2YgUHJvbWlzZSlXLnB1c2goSC50aGVuKChxKT0+e2lmKHEuaXNzdWVzLmxlbmd0aClKLmlzc3Vlcy5wdXNoKC4uLmo2KEcscS5pc3N1ZXMpKTtKLnZhbHVlW1UudmFsdWVdPXEudmFsdWV9KSk7ZWxzZXtpZihILmlzc3Vlcy5sZW5ndGgpSi5pc3N1ZXMucHVzaCguLi5qNihHLEguaXNzdWVzKSk7Si52YWx1ZVtVLnZhbHVlXT1ILnZhbHVlfX19aWYoVy5sZW5ndGgpcmV0dXJuIFByb21pc2UuYWxsKFcpLnRoZW4oKCk9PkopO3JldHVybiBKfX0pLGhZPUYoXCIkWm9kTWFwXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKCEoWCBpbnN0YW5jZW9mIE1hcCkpcmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwibWFwXCIsY29kZTpcImludmFsaWRfdHlwZVwiLGlucHV0OlgsaW5zdDokfSksSjtsZXQgVz1bXTtKLnZhbHVlPW5ldyBNYXA7Zm9yKGxldFtHLFVdb2YgWCl7bGV0IEg9US5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpHLGlzc3VlczpbXX0sWSkscT1RLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6VSxpc3N1ZXM6W119LFkpO2lmKEggaW5zdGFuY2VvZiBQcm9taXNlfHxxIGluc3RhbmNlb2YgUHJvbWlzZSlXLnB1c2goUHJvbWlzZS5hbGwoW0gscV0pLnRoZW4oKFtWLEJdKT0+e0JNKFYsQixKLEcsWCwkLFkpfSkpO2Vsc2UgQk0oSCxxLEosRyxYLCQsWSl9aWYoVy5sZW5ndGgpcmV0dXJuIFByb21pc2UuYWxsKFcpLnRoZW4oKCk9PkopO3JldHVybiBKfX0pO2Z1bmN0aW9uIEJNKCQsUSxKLFksWCxXLEcpe2lmKCQuaXNzdWVzLmxlbmd0aClpZihaUS5oYXModHlwZW9mIFkpKUouaXNzdWVzLnB1c2goLi4uajYoWSwkLmlzc3VlcykpO2Vsc2UgSi5pc3N1ZXMucHVzaCh7b3JpZ2luOlwibWFwXCIsY29kZTpcImludmFsaWRfa2V5XCIsaW5wdXQ6WCxpbnN0OlcsaXNzdWVzOiQuaXNzdWVzLm1hcCgoVSk9Pnk2KFUsRyxjJCgpKSl9KTtpZihRLmlzc3Vlcy5sZW5ndGgpaWYoWlEuaGFzKHR5cGVvZiBZKSlKLmlzc3Vlcy5wdXNoKC4uLmo2KFksUS5pc3N1ZXMpKTtlbHNlIEouaXNzdWVzLnB1c2goe29yaWdpbjpcIm1hcFwiLGNvZGU6XCJpbnZhbGlkX2VsZW1lbnRcIixpbnB1dDpYLGluc3Q6VyxrZXk6WSxpc3N1ZXM6US5pc3N1ZXMubWFwKChVKT0+eTYoVSxHLGMkKCkpKX0pO0oudmFsdWUuc2V0KCQudmFsdWUsUS52YWx1ZSl9dmFyIHVZPUYoXCIkWm9kU2V0XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1KLnZhbHVlO2lmKCEoWCBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIEouaXNzdWVzLnB1c2goe2lucHV0OlgsaW5zdDokLGV4cGVjdGVkOlwic2V0XCIsY29kZTpcImludmFsaWRfdHlwZVwifSksSjtsZXQgVz1bXTtKLnZhbHVlPW5ldyBTZXQ7Zm9yKGxldCBHIG9mIFgpe2xldCBVPVEudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpHLGlzc3VlczpbXX0sWSk7aWYoVSBpbnN0YW5jZW9mIFByb21pc2UpVy5wdXNoKFUudGhlbigoSCk9PnpNKEgsSikpKTtlbHNlIHpNKFUsSil9aWYoVy5sZW5ndGgpcmV0dXJuIFByb21pc2UuYWxsKFcpLnRoZW4oKCk9PkopO3JldHVybiBKfX0pO2Z1bmN0aW9uIHpNKCQsUSl7aWYoJC5pc3N1ZXMubGVuZ3RoKVEuaXNzdWVzLnB1c2goLi4uJC5pc3N1ZXMpO1EudmFsdWUuYWRkKCQudmFsdWUpfXZhciBtWT1GKFwiJFpvZEVudW1cIiwoJCxRKT0+e28uaW5pdCgkLFEpO2xldCBKPU9RKFEuZW50cmllcyk7JC5fem9kLnZhbHVlcz1uZXcgU2V0KEopLCQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtKLmZpbHRlcigoWSk9PlpRLmhhcyh0eXBlb2YgWSkpLm1hcCgoWSk9PnR5cGVvZiBZPT09XCJzdHJpbmdcIj90NChZKTpZLnRvU3RyaW5nKCkpLmpvaW4oXCJ8XCIpfSkkYCksJC5fem9kLnBhcnNlPShZLFgpPT57bGV0IFc9WS52YWx1ZTtpZigkLl96b2QudmFsdWVzLmhhcyhXKSlyZXR1cm4gWTtyZXR1cm4gWS5pc3N1ZXMucHVzaCh7Y29kZTpcImludmFsaWRfdmFsdWVcIix2YWx1ZXM6SixpbnB1dDpXLGluc3Q6JH0pLFl9fSksbFk9RihcIiRab2RMaXRlcmFsXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2QudmFsdWVzPW5ldyBTZXQoUS52YWx1ZXMpLCQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtRLnZhbHVlcy5tYXAoKEopPT50eXBlb2YgSj09PVwic3RyaW5nXCI/dDQoSik6Sj9KLnRvU3RyaW5nKCk6U3RyaW5nKEopKS5qb2luKFwifFwiKX0pJGApLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoJC5fem9kLnZhbHVlcy5oYXMoWCkpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2NvZGU6XCJpbnZhbGlkX3ZhbHVlXCIsdmFsdWVzOlEudmFsdWVzLGlucHV0OlgsaW5zdDokfSksSn19KSxjWT1GKFwiJFpvZEZpbGVcIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPUoudmFsdWU7aWYoWCBpbnN0YW5jZW9mIEZpbGUpcmV0dXJuIEo7cmV0dXJuIEouaXNzdWVzLnB1c2goe2V4cGVjdGVkOlwiZmlsZVwiLGNvZGU6XCJpbnZhbGlkX3R5cGVcIixpbnB1dDpYLGluc3Q6JH0pLEp9fSksbzg9RihcIiRab2RUcmFuc2Zvcm1cIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPVEudHJhbnNmb3JtKEoudmFsdWUsSik7aWYoWS5hc3luYylyZXR1cm4oWCBpbnN0YW5jZW9mIFByb21pc2U/WDpQcm9taXNlLnJlc29sdmUoWCkpLnRoZW4oKEcpPT57cmV0dXJuIEoudmFsdWU9RyxKfSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IG80O3JldHVybiBKLnZhbHVlPVgsSn19KSxwWT1GKFwiJFpvZE9wdGlvbmFsXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2Qub3B0aW49XCJvcHRpb25hbFwiLCQuX3pvZC5vcHRvdXQ9XCJvcHRpb25hbFwiLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT57cmV0dXJuIFEuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLlEuaW5uZXJUeXBlLl96b2QudmFsdWVzLHZvaWQgMF0pOnZvaWQgMH0pLE4kKCQuX3pvZCxcInBhdHRlcm5cIiwoKT0+e2xldCBKPVEuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gSj9uZXcgUmVnRXhwKGBeKCR7RlEoSi5zb3VyY2UpfSk/JGApOnZvaWQgMH0pLCQuX3pvZC5wYXJzZT0oSixZKT0+e2lmKFEuaW5uZXJUeXBlLl96b2Qub3B0aW49PT1cIm9wdGlvbmFsXCIpcmV0dXJuIFEuaW5uZXJUeXBlLl96b2QucnVuKEosWSk7aWYoSi52YWx1ZT09PXZvaWQgMClyZXR1cm4gSjtyZXR1cm4gUS5pbm5lclR5cGUuX3pvZC5ydW4oSixZKX19KSxkWT1GKFwiJFpvZE51bGxhYmxlXCIsKCQsUSk9PntvLmluaXQoJCxRKSxOJCgkLl96b2QsXCJvcHRpblwiLCgpPT5RLmlubmVyVHlwZS5fem9kLm9wdGluKSxOJCgkLl96b2QsXCJvcHRvdXRcIiwoKT0+US5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLE4kKCQuX3pvZCxcInBhdHRlcm5cIiwoKT0+e2xldCBKPVEuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gSj9uZXcgUmVnRXhwKGBeKCR7RlEoSi5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxOJCgkLl96b2QsXCJ2YWx1ZXNcIiwoKT0+e3JldHVybiBRLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5RLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwfSksJC5fem9kLnBhcnNlPShKLFkpPT57aWYoSi52YWx1ZT09PW51bGwpcmV0dXJuIEo7cmV0dXJuIFEuaW5uZXJUeXBlLl96b2QucnVuKEosWSl9fSksaVk9RihcIiRab2REZWZhdWx0XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2Qub3B0aW49XCJvcHRpb25hbFwiLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT5RLmlubmVyVHlwZS5fem9kLnZhbHVlcyksJC5fem9kLnBhcnNlPShKLFkpPT57aWYoSi52YWx1ZT09PXZvaWQgMClyZXR1cm4gSi52YWx1ZT1RLmRlZmF1bHRWYWx1ZSxKO2xldCBYPVEuaW5uZXJUeXBlLl96b2QucnVuKEosWSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9Pk5NKFcsUSkpO3JldHVybiBOTShYLFEpfX0pO2Z1bmN0aW9uIE5NKCQsUSl7aWYoJC52YWx1ZT09PXZvaWQgMCkkLnZhbHVlPVEuZGVmYXVsdFZhbHVlO3JldHVybiAkfXZhciBuWT1GKFwiJFpvZFByZWZhdWx0XCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2Qub3B0aW49XCJvcHRpb25hbFwiLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT5RLmlubmVyVHlwZS5fem9kLnZhbHVlcyksJC5fem9kLnBhcnNlPShKLFkpPT57aWYoSi52YWx1ZT09PXZvaWQgMClKLnZhbHVlPVEuZGVmYXVsdFZhbHVlO3JldHVybiBRLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpfX0pLHJZPUYoXCIkWm9kTm9uT3B0aW9uYWxcIiwoJCxRKT0+e28uaW5pdCgkLFEpLE4kKCQuX3pvZCxcInZhbHVlc1wiLCgpPT57bGV0IEo9US5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIEo/bmV3IFNldChbLi4uSl0uZmlsdGVyKChZKT0+WSE9PXZvaWQgMCkpOnZvaWQgMH0pLCQuX3pvZC5wYXJzZT0oSixZKT0+e2xldCBYPVEuaW5uZXJUeXBlLl96b2QucnVuKEosWSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9PndNKFcsJCkpO3JldHVybiB3TShYLCQpfX0pO2Z1bmN0aW9uIHdNKCQsUSl7aWYoISQuaXNzdWVzLmxlbmd0aCYmJC52YWx1ZT09PXZvaWQgMCkkLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF90eXBlXCIsZXhwZWN0ZWQ6XCJub25vcHRpb25hbFwiLGlucHV0OiQudmFsdWUsaW5zdDpRfSk7cmV0dXJuICR9dmFyIG9ZPUYoXCIkWm9kU3VjY2Vzc1wiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9US5pbm5lclR5cGUuX3pvZC5ydW4oSixZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKChXKT0+e3JldHVybiBKLnZhbHVlPVcuaXNzdWVzLmxlbmd0aD09PTAsSn0pO3JldHVybiBKLnZhbHVlPVguaXNzdWVzLmxlbmd0aD09PTAsSn19KSx0WT1GKFwiJFpvZENhdGNoXCIsKCQsUSk9PntvLmluaXQoJCxRKSwkLl96b2Qub3B0aW49XCJvcHRpb25hbFwiLE4kKCQuX3pvZCxcIm9wdG91dFwiLCgpPT5RLmlubmVyVHlwZS5fem9kLm9wdG91dCksTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PlEuaW5uZXJUeXBlLl96b2QudmFsdWVzKSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1RLmlubmVyVHlwZS5fem9kLnJ1bihKLFkpO2lmKFggaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBYLnRoZW4oKFcpPT57aWYoSi52YWx1ZT1XLnZhbHVlLFcuaXNzdWVzLmxlbmd0aClKLnZhbHVlPVEuY2F0Y2hWYWx1ZSh7Li4uSixlcnJvcjp7aXNzdWVzOlcuaXNzdWVzLm1hcCgoRyk9Pnk2KEcsWSxjJCgpKSl9LGlucHV0OkoudmFsdWV9KSxKLmlzc3Vlcz1bXTtyZXR1cm4gSn0pO2lmKEoudmFsdWU9WC52YWx1ZSxYLmlzc3Vlcy5sZW5ndGgpSi52YWx1ZT1RLmNhdGNoVmFsdWUoey4uLkosZXJyb3I6e2lzc3VlczpYLmlzc3Vlcy5tYXAoKFcpPT55NihXLFksYyQoKSkpfSxpbnB1dDpKLnZhbHVlfSksSi5pc3N1ZXM9W107cmV0dXJuIEp9fSksYVk9RihcIiRab2ROYU5cIiwoJCxRKT0+e28uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e2lmKHR5cGVvZiBKLnZhbHVlIT09XCJudW1iZXJcInx8IU51bWJlci5pc05hTihKLnZhbHVlKSlyZXR1cm4gSi5pc3N1ZXMucHVzaCh7aW5wdXQ6Si52YWx1ZSxpbnN0OiQsZXhwZWN0ZWQ6XCJuYW5cIixjb2RlOlwiaW52YWxpZF90eXBlXCJ9KSxKO3JldHVybiBKfX0pLHQ4PUYoXCIkWm9kUGlwZVwiLCgkLFEpPT57by5pbml0KCQsUSksTiQoJC5fem9kLFwidmFsdWVzXCIsKCk9PlEuaW4uX3pvZC52YWx1ZXMpLE4kKCQuX3pvZCxcIm9wdGluXCIsKCk9PlEuaW4uX3pvZC5vcHRpbiksTiQoJC5fem9kLFwib3B0b3V0XCIsKCk9PlEub3V0Ll96b2Qub3B0b3V0KSwkLl96b2QucGFyc2U9KEosWSk9PntsZXQgWD1RLmluLl96b2QucnVuKEosWSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9Pk9NKFcsUSxZKSk7cmV0dXJuIE9NKFgsUSxZKX19KTtmdW5jdGlvbiBPTSgkLFEsSil7aWYoUjAoJCkpcmV0dXJuICQ7cmV0dXJuIFEub3V0Ll96b2QucnVuKHt2YWx1ZTokLnZhbHVlLGlzc3VlczokLmlzc3Vlc30sSil9dmFyIHNZPUYoXCIkWm9kUmVhZG9ubHlcIiwoJCxRKT0+e28uaW5pdCgkLFEpLE4kKCQuX3pvZCxcInByb3BWYWx1ZXNcIiwoKT0+US5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxOJCgkLl96b2QsXCJ2YWx1ZXNcIiwoKT0+US5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLE4kKCQuX3pvZCxcIm9wdGluXCIsKCk9PlEuaW5uZXJUeXBlLl96b2Qub3B0aW4pLE4kKCQuX3pvZCxcIm9wdG91dFwiLCgpPT5RLmlubmVyVHlwZS5fem9kLm9wdG91dCksJC5fem9kLnBhcnNlPShKLFkpPT57bGV0IFg9US5pbm5lclR5cGUuX3pvZC5ydW4oSixZKTtpZihYIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gWC50aGVuKERNKTtyZXR1cm4gRE0oWCl9fSk7ZnVuY3Rpb24gRE0oJCl7cmV0dXJuICQudmFsdWU9T2JqZWN0LmZyZWV6ZSgkLnZhbHVlKSwkfXZhciBlWT1GKFwiJFpvZFRlbXBsYXRlTGl0ZXJhbFwiLCgkLFEpPT57by5pbml0KCQsUSk7bGV0IEo9W107Zm9yKGxldCBZIG9mIFEucGFydHMpaWYoWSBpbnN0YW5jZW9mIG8pe2lmKCFZLl96b2QucGF0dGVybil0aHJvdyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLlkuX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7bGV0IFg9WS5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHA/WS5fem9kLnBhdHRlcm4uc291cmNlOlkuX3pvZC5wYXR0ZXJuO2lmKCFYKXRocm93IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtZLl96b2QudHJhaXRzfWApO2xldCBXPVguc3RhcnRzV2l0aChcIl5cIik/MTowLEc9WC5lbmRzV2l0aChcIiRcIik/WC5sZW5ndGgtMTpYLmxlbmd0aDtKLnB1c2goWC5zbGljZShXLEcpKX1lbHNlIGlmKFk9PT1udWxsfHxRSy5oYXModHlwZW9mIFkpKUoucHVzaCh0NChgJHtZfWApKTtlbHNlIHRocm93IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtZfWApOyQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke0ouam9pbihcIlwiKX0kYCksJC5fem9kLnBhcnNlPShZLFgpPT57aWYodHlwZW9mIFkudmFsdWUhPT1cInN0cmluZ1wiKXJldHVybiBZLmlzc3Vlcy5wdXNoKHtpbnB1dDpZLnZhbHVlLGluc3Q6JCxleHBlY3RlZDpcInRlbXBsYXRlX2xpdGVyYWxcIixjb2RlOlwiaW52YWxpZF90eXBlXCJ9KSxZO2lmKCQuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLCEkLl96b2QucGF0dGVybi50ZXN0KFkudmFsdWUpKXJldHVybiBZLmlzc3Vlcy5wdXNoKHtpbnB1dDpZLnZhbHVlLGluc3Q6JCxjb2RlOlwiaW52YWxpZF9mb3JtYXRcIixmb3JtYXQ6XCJ0ZW1wbGF0ZV9saXRlcmFsXCIscGF0dGVybjokLl96b2QucGF0dGVybi5zb3VyY2V9KSxZO3JldHVybiBZfX0pLCQzPUYoXCIkWm9kUHJvbWlzZVwiLCgkLFEpPT57by5pbml0KCQsUSksJC5fem9kLnBhcnNlPShKLFkpPT57cmV0dXJuIFByb21pc2UucmVzb2x2ZShKLnZhbHVlKS50aGVuKChYKT0+US5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOlgsaXNzdWVzOltdfSxZKSl9fSksUTM9RihcIiRab2RMYXp5XCIsKCQsUSk9PntvLmluaXQoJCxRKSxOJCgkLl96b2QsXCJpbm5lclR5cGVcIiwoKT0+US5nZXR0ZXIoKSksTiQoJC5fem9kLFwicGF0dGVyblwiLCgpPT4kLl96b2QuaW5uZXJUeXBlLl96b2QucGF0dGVybiksTiQoJC5fem9kLFwicHJvcFZhbHVlc1wiLCgpPT4kLl96b2QuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksTiQoJC5fem9kLFwib3B0aW5cIiwoKT0+JC5fem9kLmlubmVyVHlwZS5fem9kLm9wdGluKSxOJCgkLl96b2QsXCJvcHRvdXRcIiwoKT0+JC5fem9kLmlubmVyVHlwZS5fem9kLm9wdG91dCksJC5fem9kLnBhcnNlPShKLFkpPT57cmV0dXJuICQuX3pvZC5pbm5lclR5cGUuX3pvZC5ydW4oSixZKX19KSxKMz1GKFwiJFpvZEN1c3RvbVwiLCgkLFEpPT57VCQuaW5pdCgkLFEpLG8uaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e3JldHVybiBKfSwkLl96b2QuY2hlY2s9KEopPT57bGV0IFk9Si52YWx1ZSxYPVEuZm4oWSk7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9PkZNKFcsSixZLCQpKTtGTShYLEosWSwkKTtyZXR1cm59fSk7ZnVuY3Rpb24gRk0oJCxRLEosWSl7aWYoISQpe2xldCBYPXtjb2RlOlwiY3VzdG9tXCIsaW5wdXQ6SixpbnN0OlkscGF0aDpbLi4uWS5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IVkuX3pvZC5kZWYuYWJvcnR9O2lmKFkuX3pvZC5kZWYucGFyYW1zKVgucGFyYW1zPVkuX3pvZC5kZWYucGFyYW1zO1EuaXNzdWVzLnB1c2goV0soWCkpfX12YXIgYTg9e307ajQoYTgse3poVFc6KCk9PmNxLHpoQ046KCk9PmxxLHZpOigpPT5tcSx1cjooKT0+dXEsdWE6KCk9PmhxLHRyOigpPT5ncSx0aDooKT0+eXEsdGE6KCk9PmZxLHN2OigpPT54cSxzbDooKT0+VHEscnU6KCk9PkNxLHB0OigpPT52cSxwczooKT0+U3EscGw6KCk9PmtxLG90YTooKT0+X3Esbm86KCk9PmJxLG5sOigpPT5FcSxtczooKT0+UHEsbWs6KCk9PlJxLGtvOigpPT5JcSxraDooKT0+QXEsamE6KCk9PmpxLGl0OigpPT5McSxpZDooKT0+TXEsaHU6KCk9PlpxLGhlOigpPT5GcSxmckNBOigpPT5EcSxmcjooKT0+T3EsZmk6KCk9PndxLGZhOigpPT5OcSxlczooKT0+enEsZW86KCk9PkJxLGVuOigpPT5FUSxkZTooKT0+VnEsY3M6KCk9PnFxLGNhOigpPT5LcSxiZTooKT0+SHEsYXo6KCk9PlVxLGFyOigpPT5HcX0pO3ZhciBIdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA2MkRcdTA2MzFcdTA2NDFcIix2ZXJiOlwiXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDYyRFx1MDY0OFx1MDY0QVwifSxmaWxlOnt1bml0OlwiXHUwNjI4XHUwNjI3XHUwNjRBXHUwNjJBXCIsdmVyYjpcIlx1MDYyM1x1MDY0NiBcdTA2NEFcdTA2MkRcdTA2NDhcdTA2NEFcIn0sYXJyYXk6e3VuaXQ6XCJcdTA2MzlcdTA2NDZcdTA2MzVcdTA2MzFcIix2ZXJiOlwiXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDYyRFx1MDY0OFx1MDY0QVwifSxzZXQ6e3VuaXQ6XCJcdTA2MzlcdTA2NDZcdTA2MzVcdTA2MzFcIix2ZXJiOlwiXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDYyRFx1MDY0OFx1MDY0QVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0XCIsZW1haWw6XCJcdTA2MjhcdTA2MzFcdTA2NEFcdTA2MkYgXHUwNjI1XHUwNjQ0XHUwNjQzXHUwNjJBXHUwNjMxXHUwNjQ4XHUwNjQ2XHUwNjRBXCIsdXJsOlwiXHUwNjMxXHUwNjI3XHUwNjI4XHUwNjM3XCIsZW1vamk6XCJcdTA2MjVcdTA2NEFcdTA2NDVcdTA2NDhcdTA2MkNcdTA2NEFcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJcdTA2MkFcdTA2MjdcdTA2MzFcdTA2NEFcdTA2MkUgXHUwNjQ4XHUwNjQ4XHUwNjQyXHUwNjJBIFx1MDYyOFx1MDY0NVx1MDYzOVx1MDY0QVx1MDYyN1x1MDYzMSBJU09cIixkYXRlOlwiXHUwNjJBXHUwNjI3XHUwNjMxXHUwNjRBXHUwNjJFIFx1MDYyOFx1MDY0NVx1MDYzOVx1MDY0QVx1MDYyN1x1MDYzMSBJU09cIix0aW1lOlwiXHUwNjQ4XHUwNjQyXHUwNjJBIFx1MDYyOFx1MDY0NVx1MDYzOVx1MDY0QVx1MDYyN1x1MDYzMSBJU09cIixkdXJhdGlvbjpcIlx1MDY0NVx1MDYyRlx1MDYyOSBcdTA2MjhcdTA2NDVcdTA2MzlcdTA2NEFcdTA2MjdcdTA2MzEgSVNPXCIsaXB2NDpcIlx1MDYzOVx1MDY0Nlx1MDY0OFx1MDYyN1x1MDY0NiBJUHY0XCIsaXB2NjpcIlx1MDYzOVx1MDY0Nlx1MDY0OFx1MDYyN1x1MDY0NiBJUHY2XCIsY2lkcnY0OlwiXHUwNjQ1XHUwNjJGXHUwNjQ5IFx1MDYzOVx1MDY0Nlx1MDYyN1x1MDY0OFx1MDY0QVx1MDY0NiBcdTA2MjhcdTA2MzVcdTA2NEFcdTA2M0FcdTA2MjkgSVB2NFwiLGNpZHJ2NjpcIlx1MDY0NVx1MDYyRlx1MDY0OSBcdTA2MzlcdTA2NDZcdTA2MjdcdTA2NDhcdTA2NEFcdTA2NDYgXHUwNjI4XHUwNjM1XHUwNjRBXHUwNjNBXHUwNjI5IElQdjZcIixiYXNlNjQ6XCJcdTA2NDZcdTA2NEVcdTA2MzUgXHUwNjI4XHUwNjJBXHUwNjMxXHUwNjQ1XHUwNjRBXHUwNjMyIGJhc2U2NC1lbmNvZGVkXCIsYmFzZTY0dXJsOlwiXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYyOFx1MDYyQVx1MDYzMVx1MDY0NVx1MDY0QVx1MDYzMiBiYXNlNjR1cmwtZW5jb2RlZFwiLGpzb25fc3RyaW5nOlwiXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2NDdcdTA2NEFcdTA2MjZcdTA2MjkgSlNPTlwiLGUxNjQ6XCJcdTA2MzFcdTA2NDJcdTA2NDUgXHUwNjQ3XHUwNjI3XHUwNjJBXHUwNjQxIFx1MDYyOFx1MDY0NVx1MDYzOVx1MDY0QVx1MDYyN1x1MDYzMSBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTA2NDVcdTA2MkZcdTA2MkVcdTA2NDRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDY0NVx1MDYyRlx1MDYyRVx1MDY0NFx1MDYyN1x1MDYyQSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0XHUwNjI5OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjI1XHUwNjJGXHUwNjJFXHUwNjI3XHUwNjQ0ICR7WC5leHBlY3RlZH1cdTA2MEMgXHUwNjQ4XHUwNjQ0XHUwNjQzXHUwNjQ2IFx1MDYyQVx1MDY0NSBcdTA2MjVcdTA2MkZcdTA2MkVcdTA2MjdcdTA2NDQgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDY0NVx1MDYyRlx1MDYyRVx1MDY0NFx1MDYyN1x1MDYyQSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0XHUwNjI5OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjI1XHUwNjJGXHUwNjJFXHUwNjI3XHUwNjQ0ICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwNjI3XHUwNjJFXHUwNjJBXHUwNjRBXHUwNjI3XHUwNjMxIFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MjdcdTA2NDZcdTA2MkFcdTA2NDJcdTA2MjdcdTA2MjEgXHUwNjIzXHUwNjJEXHUwNjJGIFx1MDY0N1x1MDYzMFx1MDY0NyBcdTA2MjdcdTA2NDRcdTA2MkVcdTA2NEFcdTA2MjdcdTA2MzFcdTA2MjdcdTA2MkE6ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYCBcdTA2MjNcdTA2NDNcdTA2MjhcdTA2MzEgXHUwNjQ1XHUwNjQ2IFx1MDYyN1x1MDY0NFx1MDY0NFx1MDYyN1x1MDYzMlx1MDY0NTogXHUwNjRBXHUwNjQxXHUwNjJBXHUwNjMxXHUwNjM2IFx1MDYyM1x1MDY0NiBcdTA2MkFcdTA2NDNcdTA2NDhcdTA2NDYgJHtYLm9yaWdpbj8/XCJcdTA2MjdcdTA2NDRcdTA2NDJcdTA2NEFcdTA2NDVcdTA2MjlcIn0gJHtXfSAke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTA2MzlcdTA2NDZcdTA2MzVcdTA2MzFcIn1gO3JldHVybmBcdTA2MjNcdTA2NDNcdTA2MjhcdTA2MzEgXHUwNjQ1XHUwNjQ2IFx1MDYyN1x1MDY0NFx1MDY0NFx1MDYyN1x1MDYzMlx1MDY0NTogXHUwNjRBXHUwNjQxXHUwNjJBXHUwNjMxXHUwNjM2IFx1MDYyM1x1MDY0NiBcdTA2MkFcdTA2NDNcdTA2NDhcdTA2NDYgJHtYLm9yaWdpbj8/XCJcdTA2MjdcdTA2NDRcdTA2NDJcdTA2NEFcdTA2NDVcdTA2MjlcIn0gJHtXfSAke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDYyM1x1MDYzNVx1MDYzQVx1MDYzMSBcdTA2NDVcdTA2NDYgXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjI3XHUwNjMyXHUwNjQ1OiBcdTA2NEFcdTA2NDFcdTA2MkFcdTA2MzFcdTA2MzYgXHUwNjQ0XHUwNjQwICR7WC5vcmlnaW59IFx1MDYyM1x1MDY0NiBcdTA2NEFcdTA2NDNcdTA2NDhcdTA2NDYgJHtXfSAke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTA2MjNcdTA2MzVcdTA2M0FcdTA2MzEgXHUwNjQ1XHUwNjQ2IFx1MDYyN1x1MDY0NFx1MDY0NFx1MDYyN1x1MDYzMlx1MDY0NTogXHUwNjRBXHUwNjQxXHUwNjJBXHUwNjMxXHUwNjM2IFx1MDY0NFx1MDY0MCAke1gub3JpZ2lufSBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjQzXHUwNjQ4XHUwNjQ2ICR7V30gJHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDY0Nlx1MDY0RVx1MDYzNSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0OiBcdTA2NEFcdTA2MkNcdTA2MjggXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDYyOFx1MDYyRlx1MDYyMyBcdTA2MjhcdTA2NDAgXCIke1gucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDY0Nlx1MDY0RVx1MDYzNSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0OiBcdTA2NEFcdTA2MkNcdTA2MjggXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDY0Nlx1MDYyQVx1MDY0N1x1MDY0QSBcdTA2MjhcdTA2NDAgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQ1x1MDYyOCBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjJBXHUwNjM2XHUwNjQ1XHUwNjUxXHUwNjRFXHUwNjQ2IFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNjQ2XHUwNjRFXHUwNjM1IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQ6IFx1MDY0QVx1MDYyQ1x1MDYyOCBcdTA2MjNcdTA2NDYgXHUwNjRBXHUwNjM3XHUwNjI3XHUwNjI4XHUwNjQyIFx1MDYyN1x1MDY0NFx1MDY0Nlx1MDY0NVx1MDYzNyAke1cucGF0dGVybn1gO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0gXHUwNjNBXHUwNjRBXHUwNjMxIFx1MDY0NVx1MDY0Mlx1MDYyOFx1MDY0OFx1MDY0NGB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDYzMVx1MDY0Mlx1MDY0NSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0OiBcdTA2NEFcdTA2MkNcdTA2MjggXHUwNjIzXHUwNjQ2IFx1MDY0QVx1MDY0M1x1MDY0OFx1MDY0NiBcdTA2NDVcdTA2NDYgXHUwNjQ1XHUwNjM2XHUwNjI3XHUwNjM5XHUwNjQxXHUwNjI3XHUwNjJBICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNjQ1XHUwNjM5XHUwNjMxXHUwNjQxJHtYLmtleXMubGVuZ3RoPjE/XCJcdTA2MjdcdTA2MkFcIjpcIlwifSBcdTA2M0FcdTA2MzFcdTA2NEFcdTA2Mjgke1gua2V5cy5sZW5ndGg+MT9cIlx1MDYyOVwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiXHUwNjBDIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDY0NVx1MDYzOVx1MDYzMVx1MDY0MSBcdTA2M0FcdTA2NEFcdTA2MzEgXHUwNjQ1XHUwNjQyXHUwNjI4XHUwNjQ4XHUwNjQ0IFx1MDY0MVx1MDY0QSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDRcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDQgXHUwNjQxXHUwNjRBICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNjQ1XHUwNjJGXHUwNjJFXHUwNjQ0IFx1MDYzQVx1MDY0QVx1MDYzMSBcdTA2NDVcdTA2NDJcdTA2MjhcdTA2NDhcdTA2NDRcIn19fTtmdW5jdGlvbiBHcSgpe3JldHVybntsb2NhbGVFcnJvcjpIdSgpfX12YXIgS3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwic2ltdm9sXCIsdmVyYjpcIm9sbWFsXHUwMTMxZFx1MDEzMXJcIn0sZmlsZTp7dW5pdDpcImJheXRcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxhcnJheTp7dW5pdDpcImVsZW1lbnRcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50XCIsdmVyYjpcIm9sbWFsXHUwMTMxZFx1MDEzMXJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJlbWFpbCBhZGRyZXNzXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBkYXRldGltZVwiLGRhdGU6XCJJU08gZGF0ZVwiLHRpbWU6XCJJU08gdGltZVwiLGR1cmF0aW9uOlwiSVNPIGR1cmF0aW9uXCIsaXB2NDpcIklQdjQgYWRkcmVzc1wiLGlwdjY6XCJJUHY2IGFkZHJlc3NcIixjaWRydjQ6XCJJUHY0IHJhbmdlXCIsY2lkcnY2OlwiSVB2NiByYW5nZVwiLGJhc2U2NDpcImJhc2U2NC1lbmNvZGVkIHN0cmluZ1wiLGJhc2U2NHVybDpcImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZ1wiLGpzb25fc3RyaW5nOlwiSlNPTiBzdHJpbmdcIixlMTY0OlwiRS4xNjQgbnVtYmVyXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImlucHV0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBZYW5sXHUwMTMxXHUwMTVGIGRcdTAyNTl5XHUwMjU5cjogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke1guZXhwZWN0ZWR9LCBkYXhpbCBvbGFuICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBZYW5sXHUwMTMxXHUwMTVGIGRcdTAyNTl5XHUwMjU5cjogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgc2VcdTAwRTdpbTogYVx1MDE1RmFcdTAxMUZcdTAxMzFkYWtcdTAxMzFsYXJkYW4gYmlyaSBvbG1hbFx1MDEzMWRcdTAxMzFyOiAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTAwQzdveCBiXHUwMEY2eVx1MDBGQ2s6IGdcdTAwRjZ6bFx1MDI1OW5pbFx1MDI1OW4gJHtYLm9yaWdpbj8/XCJkXHUwMjU5eVx1MDI1OXJcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lbnRcIn1gO3JldHVybmBcdTAwQzdveCBiXHUwMEY2eVx1MDBGQ2s6IGdcdTAwRjZ6bFx1MDI1OW5pbFx1MDI1OW4gJHtYLm9yaWdpbj8/XCJkXHUwMjU5eVx1MDI1OXJcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwMEM3b3gga2lcdTAwRTdpazogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gXHUwMEM3b3gga2lcdTAwRTdpazogZ1x1MDBGNnpsXHUwMjU5bmlsXHUwMjU5biAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgbVx1MDI1OXRuOiBcIiR7Vy5wcmVmaXh9XCIgaWxcdTAyNTkgYmFcdTAxNUZsYW1hbFx1MDEzMWRcdTAxMzFyYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgbVx1MDI1OXRuOiBcIiR7Vy5zdWZmaXh9XCIgaWxcdTAyNTkgYml0bVx1MDI1OWxpZGlyYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiBtXHUwMjU5dG46IFwiJHtXLmluY2x1ZGVzfVwiIGRheGlsIG9sbWFsXHUwMTMxZFx1MDEzMXJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBZYW5sXHUwMTMxXHUwMTVGIG1cdTAyNTl0bjogJHtXLnBhdHRlcm59IFx1MDE1RmFibG9udW5hIHV5XHUwMTFGdW4gb2xtYWxcdTAxMzFkXHUwMTMxcmA7cmV0dXJuYFlhbmxcdTAxMzFcdTAxNUYgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gWWFubFx1MDEzMVx1MDE1RiBcdTAyNTlkXHUwMjU5ZDogJHtYLmRpdmlzb3J9IGlsXHUwMjU5IGJcdTAwRjZsXHUwMEZDblx1MDI1OSBiaWxcdTAyNTluIG9sbWFsXHUwMTMxZFx1MDEzMXJgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFRhblx1MDEzMW5tYXlhbiBhXHUwMEU3YXIke1gua2V5cy5sZW5ndGg+MT9cImxhclwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1gub3JpZ2lufSBkYXhpbGluZFx1MDI1OSB5YW5sXHUwMTMxXHUwMTVGIGFcdTAwRTdhcmA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiWWFubFx1MDEzMVx1MDE1RiBkXHUwMjU5eVx1MDI1OXJcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gJHtYLm9yaWdpbn0gZGF4aWxpbmRcdTAyNTkgeWFubFx1MDEzMVx1MDE1RiBkXHUwMjU5eVx1MDI1OXJgO2RlZmF1bHQ6cmV0dXJuXCJZYW5sXHUwMTMxXHUwMTVGIGRcdTAyNTl5XHUwMjU5clwifX19O2Z1bmN0aW9uIFVxKCl7cmV0dXJue2xvY2FsZUVycm9yOkt1KCl9fWZ1bmN0aW9uIGpNKCQsUSxKLFkpe2xldCBYPU1hdGguYWJzKCQpLFc9WCUxMCxHPVglMTAwO2lmKEc+PTExJiZHPD0xOSlyZXR1cm4gWTtpZihXPT09MSlyZXR1cm4gUTtpZihXPj0yJiZXPD00KXJldHVybiBKO3JldHVybiBZfXZhciBxdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6e29uZTpcIlx1MDQ0MVx1MDQ1Nlx1MDQzQ1x1MDQzMlx1MDQzMFx1MDQzQlwiLGZldzpcIlx1MDQ0MVx1MDQ1Nlx1MDQzQ1x1MDQzMlx1MDQzMFx1MDQzQlx1MDQ0QlwiLG1hbnk6XCJcdTA0NDFcdTA0NTZcdTA0M0NcdTA0MzJcdTA0MzBcdTA0M0JcdTA0MzBcdTA0NUVcIn0sdmVyYjpcIlx1MDQzQ1x1MDQzNVx1MDQ0Nlx1MDQ0Q1wifSxhcnJheTp7dW5pdDp7b25lOlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXCIsZmV3OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDRCXCIsbWFueTpcIlx1MDQ0RFx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQzMFx1MDQ1RVwifSx2ZXJiOlwiXHUwNDNDXHUwNDM1XHUwNDQ2XHUwNDRDXCJ9LHNldDp7dW5pdDp7b25lOlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXCIsZmV3OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDRCXCIsbWFueTpcIlx1MDQ0RFx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQzMFx1MDQ1RVwifSx2ZXJiOlwiXHUwNDNDXHUwNDM1XHUwNDQ2XHUwNDRDXCJ9LGZpbGU6e3VuaXQ6e29uZTpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0MlwiLGZldzpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0Mlx1MDQ0QlwiLG1hbnk6XCJcdTA0MzFcdTA0MzBcdTA0MzlcdTA0NDJcdTA0MzBcdTA0NUVcIn0sdmVyYjpcIlx1MDQzQ1x1MDQzNVx1MDQ0Nlx1MDQ0Q1wifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwiXHUwNDNCXHUwNDU2XHUwNDNBXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJcdTA0M0NcdTA0MzBcdTA0NDFcdTA0NTZcdTA0NUVcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MDQ0M1x1MDQzMlx1MDQzRVx1MDQzNFwiLGVtYWlsOlwiZW1haWwgXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDMwXHUwNDQxXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJcdTA0NERcdTA0M0NcdTA0M0VcdTA0MzRcdTA0MzdcdTA0NTZcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gXHUwNDM0XHUwNDMwXHUwNDQyXHUwNDMwIFx1MDQ1NiBcdTA0NDdcdTA0MzBcdTA0NDFcIixkYXRlOlwiSVNPIFx1MDQzNFx1MDQzMFx1MDQ0Mlx1MDQzMFwiLHRpbWU6XCJJU08gXHUwNDQ3XHUwNDMwXHUwNDQxXCIsZHVyYXRpb246XCJJU08gXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDQ2XHUwNDRGXHUwNDMzXHUwNDNCXHUwNDMwXHUwNDQxXHUwNDQ2XHUwNDRDXCIsaXB2NDpcIklQdjQgXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDMwXHUwNDQxXCIsaXB2NjpcIklQdjYgXHUwNDMwXHUwNDM0XHUwNDQwXHUwNDMwXHUwNDQxXCIsY2lkcnY0OlwiSVB2NCBcdTA0MzRcdTA0NEJcdTA0NEZcdTA0M0ZcdTA0MzBcdTA0MzdcdTA0M0VcdTA0M0RcIixjaWRydjY6XCJJUHY2IFx1MDQzNFx1MDQ0Qlx1MDQ0Rlx1MDQzRlx1MDQzMFx1MDQzN1x1MDQzRVx1MDQzRFwiLGJhc2U2NDpcIlx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQzRVx1MDQzQSBcdTA0NDMgXHUwNDQ0XHUwNDMwXHUwNDQwXHUwNDNDXHUwNDMwXHUwNDQ2XHUwNDM1IGJhc2U2NFwiLGJhc2U2NHVybDpcIlx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQzRVx1MDQzQSBcdTA0NDMgXHUwNDQ0XHUwNDMwXHUwNDQwXHUwNDNDXHUwNDMwXHUwNDQ2XHUwNDM1IGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdTA0NDBcdTA0MzBcdTA0MzRcdTA0M0VcdTA0M0FcIixlMTY0OlwiXHUwNDNEXHUwNDQzXHUwNDNDXHUwNDMwXHUwNDQwIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDQ0M1x1MDQzMlx1MDQzRVx1MDQzNFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQ1RVx1MDQzMlx1MDQzRVx1MDQzNDogXHUwNDQ3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDVFXHUwNDQxXHUwNDRGICR7WC5leHBlY3RlZH0sIFx1MDQzMFx1MDQ0Mlx1MDQ0MFx1MDQ0Qlx1MDQzQ1x1MDQzMFx1MDQzRFx1MDQzMCAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQ1RVx1MDQzMlx1MDQzRVx1MDQzNDogXHUwNDQ3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDNCXHUwNDMwXHUwNDQxXHUwNDRGICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Qlx1MDQ0Rlx1MDQzRFx1MDQ0MjogXHUwNDQ3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDVFXHUwNDQxXHUwNDRGIFx1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzRCBcdTA0MzcgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRyl7bGV0IFU9TnVtYmVyKFgubWF4aW11bSksSD1qTShVLEcudW5pdC5vbmUsRy51bml0LmZldyxHLnVuaXQubWFueSk7cmV0dXJuYFx1MDQxN1x1MDQzMFx1MDQzRFx1MDQzMFx1MDQzNFx1MDQ0Mlx1MDQzMCBcdTA0MzJcdTA0NEZcdTA0M0JcdTA0NTZcdTA0M0FcdTA0NTY6IFx1MDQ0N1x1MDQzMFx1MDQzQVx1MDQzMFx1MDQzQlx1MDQzMFx1MDQ0MVx1MDQ0RiwgXHUwNDQ4XHUwNDQyXHUwNDNFICR7WC5vcmlnaW4/P1wiXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDREXHUwNDNEXHUwNDNEXHUwNDM1XCJ9IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzRFx1MDQzMCAke0cudmVyYn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7SH1gfXJldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0MzAgXHUwNDMyXHUwNDRGXHUwNDNCXHUwNDU2XHUwNDNBXHUwNDU2OiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0M0JcdTA0MzBcdTA0NDFcdTA0NEYsIFx1MDQ0OFx1MDQ0Mlx1MDQzRSAke1gub3JpZ2luPz9cIlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQ0RFx1MDQzRFx1MDQzRFx1MDQzNVwifSBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0M0RcdTA0MzAgXHUwNDMxXHUwNDRCXHUwNDQ2XHUwNDRDICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpe2xldCBVPU51bWJlcihYLm1pbmltdW0pLEg9ak0oVSxHLnVuaXQub25lLEcudW5pdC5mZXcsRy51bml0Lm1hbnkpO3JldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0MzAgXHUwNDNDXHUwNDMwXHUwNDNCXHUwNDRCOiBcdTA0NDdcdTA0MzBcdTA0M0FcdTA0MzBcdTA0M0JcdTA0MzBcdTA0NDFcdTA0NEYsIFx1MDQ0OFx1MDQ0Mlx1MDQzRSAke1gub3JpZ2lufSBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0M0RcdTA0MzAgJHtHLnZlcmJ9ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0h9YH1yZXR1cm5gXHUwNDE3XHUwNDMwXHUwNDNEXHUwNDMwXHUwNDM0XHUwNDQyXHUwNDMwIFx1MDQzQ1x1MDQzMFx1MDQzQlx1MDQ0QjogXHUwNDQ3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDNCXHUwNDMwXHUwNDQxXHUwNDRGLCBcdTA0NDhcdTA0NDJcdTA0M0UgJHtYLm9yaWdpbn0gXHUwNDNGXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNEXHUwNDNEXHUwNDMwIFx1MDQzMVx1MDQ0Qlx1MDQ0Nlx1MDQ0QyAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0NDBcdTA0MzBcdTA0MzRcdTA0M0VcdTA0M0E6IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0M0ZcdTA0MzBcdTA0NDdcdTA0NEJcdTA0M0RcdTA0MzBcdTA0NDZcdTA0NDZcdTA0MzAgXHUwNDM3IFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDQwXHUwNDMwXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDM3XHUwNDMwXHUwNDNBXHUwNDMwXHUwNDNEXHUwNDQ3XHUwNDMyXHUwNDMwXHUwNDQ2XHUwNDQ2XHUwNDMwIFx1MDQzRFx1MDQzMCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDQwXHUwNDMwXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDM3XHUwNDNDXHUwNDRGXHUwNDQ4XHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDRDIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQzRVx1MDQzQTogXHUwNDNGXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzMFx1MDQzNFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ0Rlx1MDQzNFx1MDQzMFx1MDQ0Nlx1MDQ0QyBcdTA0NDhcdTA0MzBcdTA0MzFcdTA0M0JcdTA0M0VcdTA0M0RcdTA0NDMgJHtXLnBhdHRlcm59YDtyZXR1cm5gXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0M0JcdTA0NTZcdTA0M0E6IFx1MDQzRlx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0MzFcdTA0NEJcdTA0NDZcdTA0NEMgXHUwNDNBXHUwNDQwXHUwNDMwXHUwNDQyXHUwNDNEXHUwNDRCXHUwNDNDICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDQwXHUwNDMwXHUwNDQxXHUwNDNGXHUwNDMwXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDNEXHUwNDRCICR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNDNBXHUwNDNCXHUwNDRFXHUwNDQ3XHUwNDRCXCI6XCJcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDdcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0QiBcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDcgXHUwNDQzICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA0MURcdTA0NEZcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEIgXHUwNDVFXHUwNDMyXHUwNDNFXHUwNDM0XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDQxRFx1MDQ0Rlx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzMFx1MDQzNSBcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0NERcdTA0M0RcdTA0M0RcdTA0MzUgXHUwNDVFICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNDFEXHUwNDRGXHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDRCIFx1MDQ1RVx1MDQzMlx1MDQzRVx1MDQzNFwifX19O2Z1bmN0aW9uIEhxKCl7cmV0dXJue2xvY2FsZUVycm9yOnF1KCl9fXZhciBWdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJjYXJcdTAwRTBjdGVyc1wiLHZlcmI6XCJjb250ZW5pclwifSxmaWxlOnt1bml0OlwiYnl0ZXNcIix2ZXJiOlwiY29udGVuaXJcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50c1wiLHZlcmI6XCJjb250ZW5pclwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50c1wiLHZlcmI6XCJjb250ZW5pclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiZW50cmFkYVwiLGVtYWlsOlwiYWRyZVx1MDBFN2EgZWxlY3RyXHUwMEYybmljYVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJkYXRhIGkgaG9yYSBJU09cIixkYXRlOlwiZGF0YSBJU09cIix0aW1lOlwiaG9yYSBJU09cIixkdXJhdGlvbjpcImR1cmFkYSBJU09cIixpcHY0OlwiYWRyZVx1MDBFN2EgSVB2NFwiLGlwdjY6XCJhZHJlXHUwMEU3YSBJUHY2XCIsY2lkcnY0OlwicmFuZyBJUHY0XCIsY2lkcnY2OlwicmFuZyBJUHY2XCIsYmFzZTY0OlwiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0XCIsYmFzZTY0dXJsOlwiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJjYWRlbmEgSlNPTlwiLGUxNjQ6XCJuXHUwMEZBbWVybyBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJlbnRyYWRhXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBUaXB1cyBpbnZcdTAwRTBsaWQ6IHMnZXNwZXJhdmEgJHtYLmV4cGVjdGVkfSwgcydoYSByZWJ1dCAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gVmFsb3IgaW52XHUwMEUwbGlkOiBzJ2VzcGVyYXZhICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gT3BjaVx1MDBGMyBpbnZcdTAwRTBsaWRhOiBzJ2VzcGVyYXZhIHVuYSBkZSAke1AoWC52YWx1ZXMsXCIgbyBcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiY29tIGEgbVx1MDBFMHhpbVwiOlwibWVueXMgZGVcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7WC5vcmlnaW4/P1wiZWwgdmFsb3JcIn0gY29udGluZ3VcdTAwRTlzICR7V30gJHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudHNcIn1gO3JldHVybmBNYXNzYSBncmFuOiBzJ2VzcGVyYXZhIHF1ZSAke1gub3JpZ2luPz9cImVsIHZhbG9yXCJ9IGZvcyAke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJjb20gYSBtXHUwMEVEbmltXCI6XCJtXHUwMEU5cyBkZVwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7WC5vcmlnaW59IGNvbnRpbmd1XHUwMEU5cyAke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke1gub3JpZ2lufSBmb3MgJHtXfSAke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gRm9ybWF0IGludlx1MDBFMGxpZDogaGEgZGUgY29tZW5cdTAwRTdhciBhbWIgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYEZvcm1hdCBpbnZcdTAwRTBsaWQ6IGhhIGQnYWNhYmFyIGFtYiBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBGb3JtYXQgaW52XHUwMEUwbGlkOiBoYSBkJ2luY2xvdXJlIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gRm9ybWF0IGludlx1MDBFMGxpZDogaGEgZGUgY29pbmNpZGlyIGFtYiBlbCBwYXRyXHUwMEYzICR7Vy5wYXR0ZXJufWA7cmV0dXJuYEZvcm1hdCBpbnZcdTAwRTBsaWQgcGVyIGEgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTlx1MDBGQW1lcm8gaW52XHUwMEUwbGlkOiBoYSBkZSBzZXIgbVx1MDBGQWx0aXBsZSBkZSAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYENsYXUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSBubyByZWNvbmVndWRhJHtYLmtleXMubGVuZ3RoPjE/XCJzXCI6XCJcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYENsYXUgaW52XHUwMEUwbGlkYSBhICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJFbnRyYWRhIGludlx1MDBFMGxpZGFcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gRWxlbWVudCBpbnZcdTAwRTBsaWQgYSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIkVudHJhZGEgaW52XHUwMEUwbGlkYVwifX19O2Z1bmN0aW9uIEtxKCl7cmV0dXJue2xvY2FsZUVycm9yOlZ1KCl9fXZhciBCdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJ6bmFrXHUwMTZGXCIsdmVyYjpcIm1cdTAwRUR0XCJ9LGZpbGU6e3VuaXQ6XCJiYWp0XHUwMTZGXCIsdmVyYjpcIm1cdTAwRUR0XCJ9LGFycmF5Ont1bml0OlwicHJ2a1x1MDE2RlwiLHZlcmI6XCJtXHUwMEVEdFwifSxzZXQ6e3VuaXQ6XCJwcnZrXHUwMTZGXCIsdmVyYjpcIm1cdTAwRUR0XCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTAxMERcdTAwRURzbG9cIjtjYXNlXCJzdHJpbmdcIjpyZXR1cm5cIlx1MDE1OWV0XHUwMTFCemVjXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVyblwiYm9vbGVhblwiO2Nhc2VcImJpZ2ludFwiOnJldHVyblwiYmlnaW50XCI7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm5cImZ1bmtjZVwiO2Nhc2VcInN5bWJvbFwiOnJldHVyblwic3ltYm9sXCI7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuXCJ1bmRlZmluZWRcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInBvbGVcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcInJlZ3VsXHUwMEUxcm5cdTAwRUQgdlx1MDBGRHJhelwiLGVtYWlsOlwiZS1tYWlsb3ZcdTAwRTEgYWRyZXNhXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdHVtIGEgXHUwMTBEYXMgdmUgZm9ybVx1MDBFMXR1IElTT1wiLGRhdGU6XCJkYXR1bSB2ZSBmb3JtXHUwMEUxdHUgSVNPXCIsdGltZTpcIlx1MDEwRGFzIHZlIGZvcm1cdTAwRTF0dSBJU09cIixkdXJhdGlvbjpcImRvYmEgdHJ2XHUwMEUxblx1MDBFRCBJU09cIixpcHY0OlwiSVB2NCBhZHJlc2FcIixpcHY2OlwiSVB2NiBhZHJlc2FcIixjaWRydjQ6XCJyb3pzYWggSVB2NFwiLGNpZHJ2NjpcInJvenNhaCBJUHY2XCIsYmFzZTY0OlwiXHUwMTU5ZXRcdTAxMUJ6ZWMgemFrXHUwMEYzZG92YW5cdTAwRkQgdmUgZm9ybVx1MDBFMXR1IGJhc2U2NFwiLGJhc2U2NHVybDpcIlx1MDE1OWV0XHUwMTFCemVjIHpha1x1MDBGM2RvdmFuXHUwMEZEIHZlIGZvcm1cdTAwRTF0dSBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcIlx1MDE1OWV0XHUwMTFCemVjIHZlIGZvcm1cdTAwRTF0dSBKU09OXCIsZTE2NDpcIlx1MDEwRFx1MDBFRHNsbyBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJ2c3R1cFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gTmVwbGF0blx1MDBGRCB2c3R1cDogb1x1MDEwRGVrXHUwMEUxdlx1MDBFMW5vICR7WC5leHBlY3RlZH0sIG9iZHJcdTAxN0Vlbm8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYE5lcGxhdG5cdTAwRkQgdnN0dXA6IG9cdTAxMERla1x1MDBFMXZcdTAwRTFubyAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE5lcGxhdG5cdTAwRTEgbW9cdTAxN0Vub3N0OiBvXHUwMTBEZWtcdTAwRTF2XHUwMEUxbmEgamVkbmEgeiBob2Rub3QgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gSG9kbm90YSBqZSBwXHUwMTU5XHUwMEVEbGlcdTAxNjEgdmVsa1x1MDBFMTogJHtYLm9yaWdpbj8/XCJob2Rub3RhXCJ9IG11c1x1MDBFRCBtXHUwMEVEdCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wicHJ2a1x1MDE2RlwifWA7cmV0dXJuYEhvZG5vdGEgamUgcFx1MDE1OVx1MDBFRGxpXHUwMTYxIHZlbGtcdTAwRTE6ICR7WC5vcmlnaW4/P1wiaG9kbm90YVwifSBtdXNcdTAwRUQgYlx1MDBGRHQgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gSG9kbm90YSBqZSBwXHUwMTU5XHUwMEVEbGlcdTAxNjEgbWFsXHUwMEUxOiAke1gub3JpZ2luPz9cImhvZG5vdGFcIn0gbXVzXHUwMEVEIG1cdTAwRUR0ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJwcnZrXHUwMTZGXCJ9YDtyZXR1cm5gSG9kbm90YSBqZSBwXHUwMTU5XHUwMEVEbGlcdTAxNjEgbWFsXHUwMEUxOiAke1gub3JpZ2luPz9cImhvZG5vdGFcIn0gbXVzXHUwMEVEIGJcdTAwRkR0ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gTmVwbGF0blx1MDBGRCBcdTAxNTlldFx1MDExQnplYzogbXVzXHUwMEVEIHphXHUwMTBEXHUwMEVEbmF0IG5hIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBOZXBsYXRuXHUwMEZEIFx1MDE1OWV0XHUwMTFCemVjOiBtdXNcdTAwRUQga29uXHUwMTBEaXQgbmEgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gTmVwbGF0blx1MDBGRCBcdTAxNTlldFx1MDExQnplYzogbXVzXHUwMEVEIG9ic2Fob3ZhdCBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYE5lcGxhdG5cdTAwRkQgXHUwMTU5ZXRcdTAxMUJ6ZWM6IG11c1x1MDBFRCBvZHBvdlx1MDBFRGRhdCB2em9ydSAke1cucGF0dGVybn1gO3JldHVybmBOZXBsYXRuXHUwMEZEIGZvcm1cdTAwRTF0ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5lcGxhdG5cdTAwRTkgXHUwMTBEXHUwMEVEc2xvOiBtdXNcdTAwRUQgYlx1MDBGRHQgblx1MDBFMXNvYmtlbSAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYE5lem5cdTAwRTFtXHUwMEU5IGtsXHUwMEVEXHUwMTBEZTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gTmVwbGF0blx1MDBGRCBrbFx1MDBFRFx1MDEwRCB2ICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJOZXBsYXRuXHUwMEZEIHZzdHVwXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE5lcGxhdG5cdTAwRTEgaG9kbm90YSB2ICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiTmVwbGF0blx1MDBGRCB2c3R1cFwifX19O2Z1bmN0aW9uIHFxKCl7cmV0dXJue2xvY2FsZUVycm9yOkJ1KCl9fXZhciB6dT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJaZWljaGVuXCIsdmVyYjpcInp1IGhhYmVuXCJ9LGZpbGU6e3VuaXQ6XCJCeXRlc1wiLHZlcmI6XCJ6dSBoYWJlblwifSxhcnJheTp7dW5pdDpcIkVsZW1lbnRlXCIsdmVyYjpcInp1IGhhYmVuXCJ9LHNldDp7dW5pdDpcIkVsZW1lbnRlXCIsdmVyYjpcInp1IGhhYmVuXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJaYWhsXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJBcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiRWluZ2FiZVwiLGVtYWlsOlwiRS1NYWlsLUFkcmVzc2VcIix1cmw6XCJVUkxcIixlbW9qaTpcIkVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPLURhdHVtIHVuZCAtVWhyemVpdFwiLGRhdGU6XCJJU08tRGF0dW1cIix0aW1lOlwiSVNPLVVocnplaXRcIixkdXJhdGlvbjpcIklTTy1EYXVlclwiLGlwdjQ6XCJJUHY0LUFkcmVzc2VcIixpcHY2OlwiSVB2Ni1BZHJlc3NlXCIsY2lkcnY0OlwiSVB2NC1CZXJlaWNoXCIsY2lkcnY2OlwiSVB2Ni1CZXJlaWNoXCIsYmFzZTY0OlwiQmFzZTY0LWNvZGllcnRlciBTdHJpbmdcIixiYXNlNjR1cmw6XCJCYXNlNjQtVVJMLWNvZGllcnRlciBTdHJpbmdcIixqc29uX3N0cmluZzpcIkpTT04tU3RyaW5nXCIsZTE2NDpcIkUuMTY0LU51bW1lclwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJFaW5nYWJlXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBVbmdcdTAwRkNsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke1guZXhwZWN0ZWR9LCBlcmhhbHRlbiAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gVW5nXHUwMEZDbHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBVbmdcdTAwRkNsdGlnZSBPcHRpb246IGVyd2FydGV0IGVpbmUgdm9uICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFp1IGdyb1x1MDBERjogZXJ3YXJ0ZXQsIGRhc3MgJHtYLm9yaWdpbj8/XCJXZXJ0XCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJFbGVtZW50ZVwifSBoYXRgO3JldHVybmBadSBncm9cdTAwREY6IGVyd2FydGV0LCBkYXNzICR7WC5vcmlnaW4/P1wiV2VydFwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gaGF0YDtyZXR1cm5gWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSBpc3RgfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFVuZ1x1MDBGQ2x0aWdlciBTdHJpbmc6IG11c3MgbWl0IFwiJHtXLnByZWZpeH1cIiBiZWdpbm5lbmA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBVbmdcdTAwRkNsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCBcIiR7Vy5zdWZmaXh9XCIgZW5kZW5gO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBVbmdcdTAwRkNsdGlnZXIgU3RyaW5nOiBtdXNzIFwiJHtXLmluY2x1ZGVzfVwiIGVudGhhbHRlbmA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFVuZ1x1MDBGQ2x0aWdlciBTdHJpbmc6IG11c3MgZGVtIE11c3RlciAke1cucGF0dGVybn0gZW50c3ByZWNoZW5gO3JldHVybmBVbmdcdTAwRkNsdGlnOiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBVbmdcdTAwRkNsdGlnZSBaYWhsOiBtdXNzIGVpbiBWaWVsZmFjaGVzIHZvbiAke1guZGl2aXNvcn0gc2VpbmA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gJHtYLmtleXMubGVuZ3RoPjE/XCJVbmJla2FubnRlIFNjaGxcdTAwRkNzc2VsXCI6XCJVbmJla2FubnRlciBTY2hsXHUwMEZDc3NlbFwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gVW5nXHUwMEZDbHRpZ2VyIFNjaGxcdTAwRkNzc2VsIGluICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJVbmdcdTAwRkNsdGlnZSBFaW5nYWJlXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFVuZ1x1MDBGQ2x0aWdlciBXZXJ0IGluICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiVW5nXHUwMEZDbHRpZ2UgRWluZ2FiZVwifX19O2Z1bmN0aW9uIFZxKCl7cmV0dXJue2xvY2FsZUVycm9yOnp1KCl9fXZhciBOdT0oJCk9PntsZXQgUT10eXBlb2YgJDtzd2l0Y2goUSl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTigkKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuXCJhcnJheVwiO2lmKCQ9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZigkKSE9PU9iamVjdC5wcm90b3R5cGUmJiQuY29uc3RydWN0b3IpcmV0dXJuICQuY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFF9LHd1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImNoYXJhY3RlcnNcIix2ZXJiOlwidG8gaGF2ZVwifSxmaWxlOnt1bml0OlwiYnl0ZXNcIix2ZXJiOlwidG8gaGF2ZVwifSxhcnJheTp7dW5pdDpcIml0ZW1zXCIsdmVyYjpcInRvIGhhdmVcIn0sc2V0Ont1bml0OlwiaXRlbXNcIix2ZXJiOlwidG8gaGF2ZVwifX07ZnVuY3Rpb24gUShZKXtyZXR1cm4gJFtZXT8/bnVsbH1sZXQgSj17cmVnZXg6XCJpbnB1dFwiLGVtYWlsOlwiZW1haWwgYWRkcmVzc1wiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gZGF0ZXRpbWVcIixkYXRlOlwiSVNPIGRhdGVcIix0aW1lOlwiSVNPIHRpbWVcIixkdXJhdGlvbjpcIklTTyBkdXJhdGlvblwiLGlwdjQ6XCJJUHY0IGFkZHJlc3NcIixpcHY2OlwiSVB2NiBhZGRyZXNzXCIsY2lkcnY0OlwiSVB2NCByYW5nZVwiLGNpZHJ2NjpcIklQdjYgcmFuZ2VcIixiYXNlNjQ6XCJiYXNlNjQtZW5jb2RlZCBzdHJpbmdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmdcIixqc29uX3N0cmluZzpcIkpTT04gc3RyaW5nXCIsZTE2NDpcIkUuMTY0IG51bWJlclwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJpbnB1dFwifTtyZXR1cm4oWSk9Pntzd2l0Y2goWS5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtZLmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHtOdShZLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihZLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke3goWS52YWx1ZXNbMF0pfWA7cmV0dXJuYEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHtQKFkudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFg9WS5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLFc9UShZLm9yaWdpbik7aWYoVylyZXR1cm5gVG9vIGJpZzogZXhwZWN0ZWQgJHtZLm9yaWdpbj8/XCJ2YWx1ZVwifSB0byBoYXZlICR7WH0ke1kubWF4aW11bS50b1N0cmluZygpfSAke1cudW5pdD8/XCJlbGVtZW50c1wifWA7cmV0dXJuYFRvbyBiaWc6IGV4cGVjdGVkICR7WS5vcmlnaW4/P1widmFsdWVcIn0gdG8gYmUgJHtYfSR7WS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFg9WS5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLFc9UShZLm9yaWdpbik7aWYoVylyZXR1cm5gVG9vIHNtYWxsOiBleHBlY3RlZCAke1kub3JpZ2lufSB0byBoYXZlICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfSAke1cudW5pdH1gO3JldHVybmBUb28gc21hbGw6IGV4cGVjdGVkICR7WS5vcmlnaW59IHRvIGJlICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFg9WTtpZihYLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCBcIiR7WC5wcmVmaXh9XCJgO2lmKFguZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggXCIke1guc3VmZml4fVwiYDtpZihYLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gSW52YWxpZCBzdHJpbmc6IG11c3QgaW5jbHVkZSBcIiR7WC5pbmNsdWRlc31cImA7aWYoWC5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtYLnBhdHRlcm59YDtyZXR1cm5gSW52YWxpZCAke0pbWC5mb3JtYXRdPz9ZLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBJbnZhbGlkIG51bWJlcjogbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7WS5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7WS5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWS5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBJbnZhbGlkIGtleSBpbiAke1kub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiSW52YWxpZCBpbnB1dFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7WS5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiSW52YWxpZCBpbnB1dFwifX19O2Z1bmN0aW9uIEVRKCl7cmV0dXJue2xvY2FsZUVycm9yOnd1KCl9fXZhciBPdT0oJCk9PntsZXQgUT10eXBlb2YgJDtzd2l0Y2goUSl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTigkKT9cIk5hTlwiOlwibm9tYnJvXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoJCkpcmV0dXJuXCJ0YWJlbG9cIjtpZigkPT09bnVsbClyZXR1cm5cInNlbnZhbG9yYVwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZigkKSE9PU9iamVjdC5wcm90b3R5cGUmJiQuY29uc3RydWN0b3IpcmV0dXJuICQuY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFF9LER1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImthcmFrdHJvam5cIix2ZXJiOlwiaGF2aVwifSxmaWxlOnt1bml0OlwiYmFqdG9qblwiLHZlcmI6XCJoYXZpXCJ9LGFycmF5Ont1bml0OlwiZWxlbWVudG9qblwiLHZlcmI6XCJoYXZpXCJ9LHNldDp7dW5pdDpcImVsZW1lbnRvam5cIix2ZXJiOlwiaGF2aVwifX07ZnVuY3Rpb24gUShZKXtyZXR1cm4gJFtZXT8/bnVsbH1sZXQgSj17cmVnZXg6XCJlbmlnb1wiLGVtYWlsOlwicmV0YWRyZXNvXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9cdTAxMURpb1wiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTy1kYXRvdGVtcG9cIixkYXRlOlwiSVNPLWRhdG9cIix0aW1lOlwiSVNPLXRlbXBvXCIsZHVyYXRpb246XCJJU08tZGFcdTAxNkRyb1wiLGlwdjQ6XCJJUHY0LWFkcmVzb1wiLGlwdjY6XCJJUHY2LWFkcmVzb1wiLGNpZHJ2NDpcIklQdjQtcmFuZ29cIixjaWRydjY6XCJJUHY2LXJhbmdvXCIsYmFzZTY0OlwiNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvXCIsYmFzZTY0dXJsOlwiVVJMLTY0LXVtZSBrb2RpdGEga2FyYWt0cmFyb1wiLGpzb25fc3RyaW5nOlwiSlNPTi1rYXJha3RyYXJvXCIsZTE2NDpcIkUuMTY0LW5vbWJyb1wiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJlbmlnb1wifTtyZXR1cm4oWSk9Pntzd2l0Y2goWS5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gTmV2YWxpZGEgZW5pZ286IGF0ZW5kaVx1MDExRGlzICR7WS5leHBlY3RlZH0sIHJpY2V2aVx1MDExRGlzICR7T3UoWS5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWS52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gTmV2YWxpZGEgZW5pZ286IGF0ZW5kaVx1MDExRGlzICR7eChZLnZhbHVlc1swXSl9YDtyZXR1cm5gTmV2YWxpZGEgb3BjaW86IGF0ZW5kaVx1MDExRGlzIHVudSBlbCAke1AoWS52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgWD1ZLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsVz1RKFkub3JpZ2luKTtpZihXKXJldHVybmBUcm8gZ3JhbmRhOiBhdGVuZGlcdTAxMURpcyBrZSAke1kub3JpZ2luPz9cInZhbG9yb1wifSBoYXZ1ICR7WH0ke1kubWF4aW11bS50b1N0cmluZygpfSAke1cudW5pdD8/XCJlbGVtZW50b2puXCJ9YDtyZXR1cm5gVHJvIGdyYW5kYTogYXRlbmRpXHUwMTFEaXMga2UgJHtZLm9yaWdpbj8/XCJ2YWxvcm9cIn0gaGF2dSAke1h9JHtZLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgWD1ZLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsVz1RKFkub3JpZ2luKTtpZihXKXJldHVybmBUcm8gbWFsZ3JhbmRhOiBhdGVuZGlcdTAxMURpcyBrZSAke1kub3JpZ2lufSBoYXZ1ICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfSAke1cudW5pdH1gO3JldHVybmBUcm8gbWFsZ3JhbmRhOiBhdGVuZGlcdTAxMURpcyBrZSAke1kub3JpZ2lufSBlc3R1ICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFg9WTtpZihYLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29tZW5jaVx1MDExRGkgcGVyIFwiJHtYLnByZWZpeH1cImA7aWYoWC5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pXHUwMTFEaSBwZXIgXCIke1guc3VmZml4fVwiYDtpZihYLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgaW5rbHV6aXZpIFwiJHtYLmluY2x1ZGVzfVwiYDtpZihYLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7WC5wYXR0ZXJufWA7cmV0dXJuYE5ldmFsaWRhICR7SltYLmZvcm1hdF0/P1kuZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5ldmFsaWRhIG5vbWJybzogZGV2YXMgZXN0aSBvYmxvIGRlICR7WS5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gTmVrb25hdGEke1kua2V5cy5sZW5ndGg+MT9cImpcIjpcIlwifSBcdTAxNURsb3NpbG8ke1kua2V5cy5sZW5ndGg+MT9cImpcIjpcIlwifTogJHtQKFkua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gTmV2YWxpZGEgXHUwMTVEbG9zaWxvIGVuICR7WS5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJOZXZhbGlkYSBlbmlnb1wiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBOZXZhbGlkYSB2YWxvcm8gZW4gJHtZLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJOZXZhbGlkYSBlbmlnb1wifX19O2Z1bmN0aW9uIEJxKCl7cmV0dXJue2xvY2FsZUVycm9yOkR1KCl9fXZhciBGdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJjYXJhY3RlcmVzXCIsdmVyYjpcInRlbmVyXCJ9LGZpbGU6e3VuaXQ6XCJieXRlc1wiLHZlcmI6XCJ0ZW5lclwifSxhcnJheTp7dW5pdDpcImVsZW1lbnRvc1wiLHZlcmI6XCJ0ZW5lclwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50b3NcIix2ZXJiOlwidGVuZXJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm5cdTAwRkFtZXJvXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJlZ2xvXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxvXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJlbnRyYWRhXCIsZW1haWw6XCJkaXJlY2NpXHUwMEYzbiBkZSBjb3JyZW8gZWxlY3RyXHUwMEYzbmljb1wiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJmZWNoYSB5IGhvcmEgSVNPXCIsZGF0ZTpcImZlY2hhIElTT1wiLHRpbWU6XCJob3JhIElTT1wiLGR1cmF0aW9uOlwiZHVyYWNpXHUwMEYzbiBJU09cIixpcHY0OlwiZGlyZWNjaVx1MDBGM24gSVB2NFwiLGlwdjY6XCJkaXJlY2NpXHUwMEYzbiBJUHY2XCIsY2lkcnY0OlwicmFuZ28gSVB2NFwiLGNpZHJ2NjpcInJhbmdvIElQdjZcIixiYXNlNjQ6XCJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJVUkwgY29kaWZpY2FkYSBlbiBiYXNlNjRcIixqc29uX3N0cmluZzpcImNhZGVuYSBKU09OXCIsZTE2NDpcIm5cdTAwRkFtZXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVudHJhZGFcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYEVudHJhZGEgaW52XHUwMEUxbGlkYTogc2UgZXNwZXJhYmEgJHtYLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEVudHJhZGEgaW52XHUwMEUxbGlkYTogc2UgZXNwZXJhYmEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPcGNpXHUwMEYzbiBpbnZcdTAwRTFsaWRhOiBzZSBlc3BlcmFiYSB1bmEgZGUgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7WC5vcmlnaW4/P1widmFsb3JcIn0gdHV2aWVyYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudG9zXCJ9YDtyZXR1cm5gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7WC5vcmlnaW4/P1widmFsb3JcIn0gZnVlcmEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRGVtYXNpYWRvIHBlcXVlXHUwMEYxbzogc2UgZXNwZXJhYmEgcXVlICR7WC5vcmlnaW59IHR1dmllcmEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYERlbWFzaWFkbyBwZXF1ZVx1MDBGMW86IHNlIGVzcGVyYWJhIHF1ZSAke1gub3JpZ2lufSBmdWVyYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYENhZGVuYSBpbnZcdTAwRTFsaWRhOiBkZWJlIGNvbWVuemFyIGNvbiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gQ2FkZW5hIGludlx1MDBFMWxpZGE6IGRlYmUgdGVybWluYXIgZW4gXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gQ2FkZW5hIGludlx1MDBFMWxpZGE6IGRlYmUgaW5jbHVpciBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYENhZGVuYSBpbnZcdTAwRTFsaWRhOiBkZWJlIGNvaW5jaWRpciBjb24gZWwgcGF0clx1MDBGM24gJHtXLnBhdHRlcm59YDtyZXR1cm5gSW52XHUwMEUxbGlkbyAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOXHUwMEZBbWVybyBpbnZcdTAwRTFsaWRvOiBkZWJlIHNlciBtXHUwMEZBbHRpcGxvIGRlICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gTGxhdmUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSBkZXNjb25vY2lkYSR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBMbGF2ZSBpbnZcdTAwRTFsaWRhIGVuICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJFbnRyYWRhIGludlx1MDBFMWxpZGFcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVmFsb3IgaW52XHUwMEUxbGlkbyBlbiAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIkVudHJhZGEgaW52XHUwMEUxbGlkYVwifX19O2Z1bmN0aW9uIHpxKCl7cmV0dXJue2xvY2FsZUVycm9yOkZ1KCl9fXZhciBadT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA2QTlcdTA2MjdcdTA2MzFcdTA2MjdcdTA2QTlcdTA2MkFcdTA2MzFcIix2ZXJiOlwiXHUwNjJGXHUwNjI3XHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRlwifSxmaWxlOnt1bml0OlwiXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJBXCIsdmVyYjpcIlx1MDYyRlx1MDYyN1x1MDYzNFx1MDYyQVx1MDY0NyBcdTA2MjhcdTA2MjdcdTA2MzRcdTA2MkZcIn0sYXJyYXk6e3VuaXQ6XCJcdTA2MjJcdTA2Q0NcdTA2MkFcdTA2NDVcIix2ZXJiOlwiXHUwNjJGXHUwNjI3XHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRlwifSxzZXQ6e3VuaXQ6XCJcdTA2MjJcdTA2Q0NcdTA2MkFcdTA2NDVcIix2ZXJiOlwiXHUwNjJGXHUwNjI3XHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRlwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwiXHUwNjM5XHUwNjJGXHUwNjJGXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJcdTA2MjJcdTA2MzFcdTA2MjdcdTA2Q0NcdTA2NDdcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MDY0OFx1MDYzMVx1MDY0OFx1MDYyRlx1MDZDQ1wiLGVtYWlsOlwiXHUwNjIyXHUwNjJGXHUwNjMxXHUwNjMzIFx1MDYyN1x1MDZDQ1x1MDY0NVx1MDZDQ1x1MDY0NFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHUwNjI3XHUwNkNDXHUwNjQ1XHUwNjQ4XHUwNjJDXHUwNkNDXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiXHUwNjJBXHUwNjI3XHUwNjMxXHUwNkNDXHUwNjJFIFx1MDY0OCBcdTA2MzJcdTA2NDVcdTA2MjdcdTA2NDYgXHUwNjI3XHUwNkNDXHUwNjMyXHUwNjQ4XCIsZGF0ZTpcIlx1MDYyQVx1MDYyN1x1MDYzMVx1MDZDQ1x1MDYyRSBcdTA2MjdcdTA2Q0NcdTA2MzJcdTA2NDhcIix0aW1lOlwiXHUwNjMyXHUwNjQ1XHUwNjI3XHUwNjQ2IFx1MDYyN1x1MDZDQ1x1MDYzMlx1MDY0OFwiLGR1cmF0aW9uOlwiXHUwNjQ1XHUwNjJGXHUwNjJBIFx1MDYzMlx1MDY0NVx1MDYyN1x1MDY0NiBcdTA2MjdcdTA2Q0NcdTA2MzJcdTA2NDhcIixpcHY0OlwiSVB2NCBcdTA2MjJcdTA2MkZcdTA2MzFcdTA2MzNcIixpcHY2OlwiSVB2NiBcdTA2MjJcdTA2MkZcdTA2MzFcdTA2MzNcIixjaWRydjQ6XCJJUHY0IFx1MDYyRlx1MDYyN1x1MDY0NVx1MDY0Nlx1MDY0N1wiLGNpZHJ2NjpcIklQdjYgXHUwNjJGXHUwNjI3XHUwNjQ1XHUwNjQ2XHUwNjQ3XCIsYmFzZTY0OlwiYmFzZTY0LWVuY29kZWQgXHUwNjMxXHUwNjM0XHUwNjJBXHUwNjQ3XCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsLWVuY29kZWQgXHUwNjMxXHUwNjM0XHUwNjJBXHUwNjQ3XCIsanNvbl9zdHJpbmc6XCJKU09OIFx1MDYzMVx1MDYzNFx1MDYyQVx1MDY0N1wiLGUxNjQ6XCJFLjE2NCBcdTA2MzlcdTA2MkZcdTA2MkZcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNkNDXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2Q0MgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxOiBcdTA2NDVcdTA2Q0NcdTIwMENcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MzNcdTA2MkEgJHtYLmV4cGVjdGVkfSBcdTA2NDVcdTA2Q0NcdTIwMENcdTA2MjhcdTA2NDhcdTA2MkZcdTA2MEMgJHtKKFguaW5wdXQpfSBcdTA2MkZcdTA2MzFcdTA2Q0NcdTA2MjdcdTA2NDFcdTA2MkEgXHUwNjM0XHUwNjJGYDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNkNDIFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMTogXHUwNjQ1XHUwNkNDXHUyMDBDXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjMzXHUwNjJBICR7eChYLnZhbHVlc1swXSl9IFx1MDY0NVx1MDZDQ1x1MjAwQ1x1MDYyOFx1MDY0OFx1MDYyRmA7cmV0dXJuYFx1MDZBRlx1MDYzMlx1MDZDQ1x1MDY0Nlx1MDY0NyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDY0NVx1MDZDQ1x1MjAwQ1x1MDYyOFx1MDYyN1x1MDZDQ1x1MDYzM1x1MDYyQSBcdTA2Q0NcdTA2QTlcdTA2Q0MgXHUwNjI3XHUwNjMyICR7UChYLnZhbHVlcyxcInxcIil9IFx1MDY0NVx1MDZDQ1x1MjAwQ1x1MDYyOFx1MDY0OFx1MDYyRmA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA2MkVcdTA2Q0NcdTA2NDRcdTA2Q0MgXHUwNjI4XHUwNjMyXHUwNjMxXHUwNkFGOiAke1gub3JpZ2luPz9cIlx1MDY0NVx1MDY0Mlx1MDYyRlx1MDYyN1x1MDYzMVwifSBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMVwifSBcdTA2MjhcdTA2MjdcdTA2MzRcdTA2MkZgO3JldHVybmBcdTA2MkVcdTA2Q0NcdTA2NDRcdTA2Q0MgXHUwNjI4XHUwNjMyXHUwNjMxXHUwNkFGOiAke1gub3JpZ2luPz9cIlx1MDY0NVx1MDY0Mlx1MDYyRlx1MDYyN1x1MDYzMVwifSBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDYyRVx1MDZDQ1x1MDY0NFx1MDZDQyBcdTA2QTlcdTA2NDhcdTA2ODZcdTA2QTk6ICR7WC5vcmlnaW59IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmA7cmV0dXJuYFx1MDYyRVx1MDZDQ1x1MDY0NFx1MDZDQyBcdTA2QTlcdTA2NDhcdTA2ODZcdTA2QTk6ICR7WC5vcmlnaW59IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gXHUwNjI4XHUwNjI3XHUwNjM0XHUwNjJGYH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA2MzFcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxOiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjI4XHUwNjI3IFwiJHtXLnByZWZpeH1cIiBcdTA2MzRcdTA2MzFcdTA2NDhcdTA2MzkgXHUwNjM0XHUwNjQ4XHUwNjJGYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDYzMVx1MDYzNFx1MDYyQVx1MDY0NyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MjhcdTA2MjcgXCIke1cuc3VmZml4fVwiIFx1MDYyQVx1MDY0NVx1MDYyN1x1MDY0NSBcdTA2MzRcdTA2NDhcdTA2MkZgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA2MzFcdTA2MzRcdTA2MkFcdTA2NDcgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxOiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjM0XHUwNjI3XHUwNjQ1XHUwNjQ0IFwiJHtXLmluY2x1ZGVzfVwiIFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDYzMVx1MDYzNFx1MDYyQVx1MDY0NyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzE6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MjhcdTA2MjcgXHUwNjI3XHUwNjQ0XHUwNkFGXHUwNjQ4XHUwNkNDICR7Vy5wYXR0ZXJufSBcdTA2NDVcdTA2MzdcdTA2MjdcdTA2MjhcdTA2NDJcdTA2MkEgXHUwNjJGXHUwNjI3XHUwNjM0XHUwNjJBXHUwNjQ3IFx1MDYyOFx1MDYyN1x1MDYzNFx1MDYyRmA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzFgfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA2MzlcdTA2MkZcdTA2MkYgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxOiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjQ1XHUwNjM2XHUwNjMxXHUwNjI4ICR7WC5kaXZpc29yfSBcdTA2MjhcdTA2MjdcdTA2MzRcdTA2MkZgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MDZBOVx1MDY0NFx1MDZDQ1x1MDYyRiR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNjQ3XHUwNjI3XHUwNkNDXCI6XCJcIn0gXHUwNjQ2XHUwNjI3XHUwNjM0XHUwNjQ2XHUwNjI3XHUwNjMzOiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA2QTlcdTA2NDRcdTA2Q0NcdTA2MkYgXHUwNjQ2XHUwNjI3XHUwNjM0XHUwNjQ2XHUwNjI3XHUwNjMzIFx1MDYyRlx1MDYzMSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNkNDIFx1MDY0Nlx1MDYyN1x1MDY0NVx1MDYzOVx1MDYyQVx1MDYyOFx1MDYzMVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTA2NDVcdTA2NDJcdTA2MkZcdTA2MjdcdTA2MzEgXHUwNjQ2XHUwNjI3XHUwNjQ1XHUwNjM5XHUwNjJBXHUwNjI4XHUwNjMxIFx1MDYyRlx1MDYzMSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MDY0OFx1MDYzMVx1MDY0OFx1MDYyRlx1MDZDQyBcdTA2NDZcdTA2MjdcdTA2NDVcdTA2MzlcdTA2MkFcdTA2MjhcdTA2MzFcIn19fTtmdW5jdGlvbiBOcSgpe3JldHVybntsb2NhbGVFcnJvcjpadSgpfX12YXIgTXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwibWVya2tpXHUwMEU0XCIsc3ViamVjdDpcIm1lcmtraWpvbm9uXCJ9LGZpbGU6e3VuaXQ6XCJ0YXZ1YVwiLHN1YmplY3Q6XCJ0aWVkb3N0b25cIn0sYXJyYXk6e3VuaXQ6XCJhbGtpb3RhXCIsc3ViamVjdDpcImxpc3RhblwifSxzZXQ6e3VuaXQ6XCJhbGtpb3RhXCIsc3ViamVjdDpcImpvdWtvblwifSxudW1iZXI6e3VuaXQ6XCJcIixzdWJqZWN0OlwibHV2dW5cIn0sYmlnaW50Ont1bml0OlwiXCIsc3ViamVjdDpcInN1dXJlbiBrb2tvbmFpc2x1dnVuXCJ9LGludDp7dW5pdDpcIlwiLHN1YmplY3Q6XCJrb2tvbmFpc2x1dnVuXCJ9LGRhdGU6e3VuaXQ6XCJcIixzdWJqZWN0OlwicFx1MDBFNGl2XHUwMEU0bVx1MDBFNFx1MDBFNHJcdTAwRTRuXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJzXHUwMEU0XHUwMEU0bm5cdTAwRjZsbGluZW4gbGF1c2VrZVwiLGVtYWlsOlwic1x1MDBFNGhrXHUwMEY2cG9zdGlvc29pdGVcIix1cmw6XCJVUkwtb3NvaXRlXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTy1haWthbGVpbWFcIixkYXRlOlwiSVNPLXBcdTAwRTRpdlx1MDBFNG1cdTAwRTRcdTAwRTRyXHUwMEU0XCIsdGltZTpcIklTTy1haWthXCIsZHVyYXRpb246XCJJU08ta2VzdG9cIixpcHY0OlwiSVB2NC1vc29pdGVcIixpcHY2OlwiSVB2Ni1vc29pdGVcIixjaWRydjQ6XCJJUHY0LWFsdWVcIixjaWRydjY6XCJJUHY2LWFsdWVcIixiYXNlNjQ6XCJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ub1wiLGJhc2U2NHVybDpcImJhc2U2NHVybC1rb29kYXR0dSBtZXJra2lqb25vXCIsanNvbl9zdHJpbmc6XCJKU09OLW1lcmtraWpvbm9cIixlMTY0OlwiRS4xNjQtbHVrdVwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJ0ZW1wbGFhdHRpbWVya2tpam9ub1wifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiAke1guZXhwZWN0ZWR9LCBvbGkgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFZpcmhlZWxsaW5lbiBzeVx1MDBGNnRlOiB0XHUwMEU0eXR5eSBvbGxhICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gVmlyaGVlbGxpbmVuIHZhbGludGE6IHRcdTAwRTR5dHl5IG9sbGEgeWtzaSBzZXVyYWF2aXN0YTogJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gTGlpYW4gc3V1cmk6ICR7Ry5zdWJqZWN0fSB0XHUwMEU0eXR5eSBvbGxhICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdH1gLnRyaW0oKTtyZXR1cm5gTGlpYW4gc3V1cmk6IGFydm9uIHRcdTAwRTR5dHl5IG9sbGEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gTGlpYW4gcGllbmk6ICR7Ry5zdWJqZWN0fSB0XHUwMEU0eXR5eSBvbGxhICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gLnRyaW0oKTtyZXR1cm5gTGlpYW4gcGllbmk6IGFydm9uIHRcdTAwRTR5dHl5IG9sbGEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBWaXJoZWVsbGluZW4gc3lcdTAwRjZ0ZTogdFx1MDBFNHl0eXkgYWxrYWEgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFZpcmhlZWxsaW5lbiBzeVx1MDBGNnRlOiB0XHUwMEU0eXR5eSBsb3BwdWEgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gVmlyaGVlbGxpbmVuIHN5XHUwMEY2dGU6IHRcdTAwRTR5dHl5IHNpc1x1MDBFNGx0XHUwMEU0XHUwMEU0IFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gVmlyaGVlbGxpbmVuIHN5XHUwMEY2dGU6IHRcdTAwRTR5dHl5IHZhc3RhdGEgc1x1MDBFNFx1MDBFNG5uXHUwMEY2bGxpc3RcdTAwRTQgbGF1c2VrZXR0YSAke1cucGF0dGVybn1gO3JldHVybmBWaXJoZWVsbGluZW4gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gVmlyaGVlbGxpbmVuIGx1a3U6IHRcdTAwRTR5dHl5IG9sbGEgbHV2dW4gJHtYLmRpdmlzb3J9IG1vbmlrZXJ0YWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gJHtYLmtleXMubGVuZ3RoPjE/XCJUdW50ZW1hdHRvbWF0IGF2YWltZXRcIjpcIlR1bnRlbWF0b24gYXZhaW5cIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuXCJWaXJoZWVsbGluZW4gYXZhaW4gdGlldHVlZXNzYVwiO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlZpcmhlZWxsaW5lbiB1bmlvbmlcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5cIlZpcmhlZWxsaW5lbiBhcnZvIGpvdWtvc3NhXCI7ZGVmYXVsdDpyZXR1cm5cIlZpcmhlZWxsaW5lbiBzeVx1MDBGNnRlXCJ9fX07ZnVuY3Rpb24gd3EoKXtyZXR1cm57bG9jYWxlRXJyb3I6TXUoKX19dmFyIEx1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImNhcmFjdFx1MDBFOHJlc1wiLHZlcmI6XCJhdm9pclwifSxmaWxlOnt1bml0Olwib2N0ZXRzXCIsdmVyYjpcImF2b2lyXCJ9LGFycmF5Ont1bml0OlwiXHUwMEU5bFx1MDBFOW1lbnRzXCIsdmVyYjpcImF2b2lyXCJ9LHNldDp7dW5pdDpcIlx1MDBFOWxcdTAwRTltZW50c1wiLHZlcmI6XCJhdm9pclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibm9tYnJlXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJ0YWJsZWF1XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJlbnRyXHUwMEU5ZVwiLGVtYWlsOlwiYWRyZXNzZSBlLW1haWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiZGF0ZSBldCBoZXVyZSBJU09cIixkYXRlOlwiZGF0ZSBJU09cIix0aW1lOlwiaGV1cmUgSVNPXCIsZHVyYXRpb246XCJkdXJcdTAwRTllIElTT1wiLGlwdjQ6XCJhZHJlc3NlIElQdjRcIixpcHY2OlwiYWRyZXNzZSBJUHY2XCIsY2lkcnY0OlwicGxhZ2UgSVB2NFwiLGNpZHJ2NjpcInBsYWdlIElQdjZcIixiYXNlNjQ6XCJjaGFcdTAwRUVuZSBlbmNvZFx1MDBFOWUgZW4gYmFzZTY0XCIsYmFzZTY0dXJsOlwiY2hhXHUwMEVFbmUgZW5jb2RcdTAwRTllIGVuIGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiY2hhXHUwMEVFbmUgSlNPTlwiLGUxNjQ6XCJudW1cdTAwRTlybyBFLjE2NFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJlbnRyXHUwMEU5ZVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gRW50clx1MDBFOWUgaW52YWxpZGUgOiAke1guZXhwZWN0ZWR9IGF0dGVuZHUsICR7SihYLmlucHV0KX0gcmVcdTAwRTd1YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gRW50clx1MDBFOWUgaW52YWxpZGUgOiAke3goWC52YWx1ZXNbMF0pfSBhdHRlbmR1YDtyZXR1cm5gT3B0aW9uIGludmFsaWRlIDogdW5lIHZhbGV1ciBwYXJtaSAke1AoWC52YWx1ZXMsXCJ8XCIpfSBhdHRlbmR1ZWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUcm9wIGdyYW5kIDogJHtYLm9yaWdpbj8/XCJ2YWxldXJcIn0gZG9pdCAke0cudmVyYn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDBFOWxcdTAwRTltZW50KHMpXCJ9YDtyZXR1cm5gVHJvcCBncmFuZCA6ICR7WC5vcmlnaW4/P1widmFsZXVyXCJ9IGRvaXQgXHUwMEVBdHJlICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRyb3AgcGV0aXQgOiAke1gub3JpZ2lufSBkb2l0ICR7Ry52ZXJifSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVHJvcCBwZXRpdCA6ICR7WC5vcmlnaW59IGRvaXQgXHUwMEVBdHJlICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYENoYVx1MDBFRW5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vZFx1MDBFOGxlICR7Vy5wYXR0ZXJufWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgXHUwMEVBdHJlIHVuIG11bHRpcGxlIGRlICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gQ2xcdTAwRTkke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSBub24gcmVjb25udWUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSA6ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYENsXHUwMEU5IGludmFsaWRlIGRhbnMgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIkVudHJcdTAwRTllIGludmFsaWRlXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiRW50clx1MDBFOWUgaW52YWxpZGVcIn19fTtmdW5jdGlvbiBPcSgpe3JldHVybntsb2NhbGVFcnJvcjpMdSgpfX12YXIganU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiY2FyYWN0XHUwMEU4cmVzXCIsdmVyYjpcImF2b2lyXCJ9LGZpbGU6e3VuaXQ6XCJvY3RldHNcIix2ZXJiOlwiYXZvaXJcIn0sYXJyYXk6e3VuaXQ6XCJcdTAwRTlsXHUwMEU5bWVudHNcIix2ZXJiOlwiYXZvaXJcIn0sc2V0Ont1bml0OlwiXHUwMEU5bFx1MDBFOW1lbnRzXCIsdmVyYjpcImF2b2lyXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJudW1iZXJcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImFycmF5XCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJlbnRyXHUwMEU5ZVwiLGVtYWlsOlwiYWRyZXNzZSBjb3VycmllbFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJkYXRlLWhldXJlIElTT1wiLGRhdGU6XCJkYXRlIElTT1wiLHRpbWU6XCJoZXVyZSBJU09cIixkdXJhdGlvbjpcImR1clx1MDBFOWUgSVNPXCIsaXB2NDpcImFkcmVzc2UgSVB2NFwiLGlwdjY6XCJhZHJlc3NlIElQdjZcIixjaWRydjQ6XCJwbGFnZSBJUHY0XCIsY2lkcnY2OlwicGxhZ2UgSVB2NlwiLGJhc2U2NDpcImNoYVx1MDBFRW5lIGVuY29kXHUwMEU5ZSBlbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJjaGFcdTAwRUVuZSBlbmNvZFx1MDBFOWUgZW4gYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJjaGFcdTAwRUVuZSBKU09OXCIsZTE2NDpcIm51bVx1MDBFOXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVudHJcdTAwRTllXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBFbnRyXHUwMEU5ZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtYLmV4cGVjdGVkfSwgcmVcdTAwRTd1ICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBFbnRyXHUwMEU5ZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIlx1MjI2NFwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7WC5vcmlnaW4/P1wibGEgdmFsZXVyXCJ9IGFpdCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7WC5vcmlnaW4/P1wibGEgdmFsZXVyXCJ9IHNvaXQgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdTIyNjVcIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke1gub3JpZ2lufSBhaXQgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke1gub3JpZ2lufSBzb2l0ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYENoYVx1MDBFRW5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gQ2hhXHUwMEVFbmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBDaGFcdTAwRUVuZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vdGlmICR7Vy5wYXR0ZXJufWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgXHUwMEVBdHJlIHVuIG11bHRpcGxlIGRlICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gQ2xcdTAwRTkke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSBub24gcmVjb25udWUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSA6ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYENsXHUwMEU5IGludmFsaWRlIGRhbnMgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIkVudHJcdTAwRTllIGludmFsaWRlXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiRW50clx1MDBFOWUgaW52YWxpZGVcIn19fTtmdW5jdGlvbiBEcSgpe3JldHVybntsb2NhbGVFcnJvcjpqdSgpfX12YXIgQXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHUwNUQwXHUwNUQ1XHUwNUVBXHUwNUQ5XHUwNUQ1XHUwNUVBXCIsdmVyYjpcIlx1MDVEQ1x1MDVEQlx1MDVEQ1x1MDVENVx1MDVEQ1wifSxmaWxlOnt1bml0OlwiXHUwNUQxXHUwNUQ5XHUwNUQ5XHUwNUQ4XHUwNUQ5XHUwNUREXCIsdmVyYjpcIlx1MDVEQ1x1MDVEQlx1MDVEQ1x1MDVENVx1MDVEQ1wifSxhcnJheTp7dW5pdDpcIlx1MDVFNFx1MDVFOFx1MDVEOVx1MDVEOFx1MDVEOVx1MDVERFwiLHZlcmI6XCJcdTA1RENcdTA1REJcdTA1RENcdTA1RDVcdTA1RENcIn0sc2V0Ont1bml0OlwiXHUwNUU0XHUwNUU4XHUwNUQ5XHUwNUQ4XHUwNUQ5XHUwNUREXCIsdmVyYjpcIlx1MDVEQ1x1MDVEQlx1MDVEQ1x1MDVENVx1MDVEQ1wifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNUU3XHUwNURDXHUwNUQ4XCIsZW1haWw6XCJcdTA1REJcdTA1RUFcdTA1RDVcdTA1RDFcdTA1RUEgXHUwNUQwXHUwNUQ5XHUwNURFXHUwNUQ5XHUwNUQ5XHUwNURDXCIsdXJsOlwiXHUwNURCXHUwNUVBXHUwNUQ1XHUwNUQxXHUwNUVBIFx1MDVFOFx1MDVFOVx1MDVFQVwiLGVtb2ppOlwiXHUwNUQwXHUwNUQ5XHUwNURFXHUwNUQ1XHUwNUQyJ1x1MDVEOVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIlx1MDVFQVx1MDVEMFx1MDVFOFx1MDVEOVx1MDVEQSBcdTA1RDVcdTA1RDZcdTA1REVcdTA1REYgSVNPXCIsZGF0ZTpcIlx1MDVFQVx1MDVEMFx1MDVFOFx1MDVEOVx1MDVEQSBJU09cIix0aW1lOlwiXHUwNUQ2XHUwNURFXHUwNURGIElTT1wiLGR1cmF0aW9uOlwiXHUwNURFXHUwNUU5XHUwNURBIFx1MDVENlx1MDVERVx1MDVERiBJU09cIixpcHY0OlwiXHUwNURCXHUwNUVBXHUwNUQ1XHUwNUQxXHUwNUVBIElQdjRcIixpcHY2OlwiXHUwNURCXHUwNUVBXHUwNUQ1XHUwNUQxXHUwNUVBIElQdjZcIixjaWRydjQ6XCJcdTA1RDhcdTA1RDVcdTA1RDVcdTA1RDcgSVB2NFwiLGNpZHJ2NjpcIlx1MDVEOFx1MDVENVx1MDVENVx1MDVENyBJUHY2XCIsYmFzZTY0OlwiXHUwNURFXHUwNUQ3XHUwNUU4XHUwNUQ1XHUwNUQ2XHUwNUVBIFx1MDVEMVx1MDVEMVx1MDVFMVx1MDVEOVx1MDVFMSA2NFwiLGJhc2U2NHVybDpcIlx1MDVERVx1MDVEN1x1MDVFOFx1MDVENVx1MDVENlx1MDVFQSBcdTA1RDFcdTA1RDFcdTA1RTFcdTA1RDlcdTA1RTEgNjQgXHUwNURDXHUwNURCXHUwNUVBXHUwNUQ1XHUwNUQxXHUwNUQ1XHUwNUVBIFx1MDVFOFx1MDVFOVx1MDVFQVwiLGpzb25fc3RyaW5nOlwiXHUwNURFXHUwNUQ3XHUwNUU4XHUwNUQ1XHUwNUQ2XHUwNUVBIEpTT05cIixlMTY0OlwiXHUwNURFXHUwNUUxXHUwNUU0XHUwNUU4IEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDVFN1x1MDVEQ1x1MDVEOFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNUU3XHUwNURDXHUwNUQ4IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REY6IFx1MDVFNlx1MDVFOFx1MDVEOVx1MDVEQSAke1guZXhwZWN0ZWR9LCBcdTA1RDRcdTA1RUFcdTA1RTdcdTA1RDFcdTA1REMgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDVFN1x1MDVEQ1x1MDVEOCBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNURGOiBcdTA1RTZcdTA1RThcdTA1RDlcdTA1REEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA1RTdcdTA1RENcdTA1RDggXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERjogXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVEMFx1MDVEN1x1MDVFQSBcdTA1REVcdTA1RDRcdTA1RDBcdTA1RTRcdTA1RTlcdTA1RThcdTA1RDVcdTA1RDlcdTA1RDVcdTA1RUEgICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDVEMlx1MDVEM1x1MDVENVx1MDVEQyBcdTA1REVcdTA1RDNcdTA1RDk6ICR7WC5vcmlnaW4/P1widmFsdWVcIn0gXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVEQ1x1MDVENFx1MDVEOVx1MDVENVx1MDVFQSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudHNcIn1gO3JldHVybmBcdTA1RDJcdTA1RDNcdTA1RDVcdTA1REMgXHUwNURFXHUwNUQzXHUwNUQ5OiAke1gub3JpZ2luPz9cInZhbHVlXCJ9IFx1MDVFNlx1MDVFOFx1MDVEOVx1MDVEQSBcdTA1RENcdTA1RDRcdTA1RDlcdTA1RDVcdTA1RUEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNUU3XHUwNUQ4XHUwNURGIFx1MDVERVx1MDVEM1x1MDVEOTogJHtYLm9yaWdpbn0gXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVEQ1x1MDVENFx1MDVEOVx1MDVENVx1MDVFQSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gXHUwNUU3XHUwNUQ4XHUwNURGIFx1MDVERVx1MDVEM1x1MDVEOTogJHtYLm9yaWdpbn0gXHUwNUU2XHUwNUU4XHUwNUQ5XHUwNURBIFx1MDVEQ1x1MDVENFx1MDVEOVx1MDVENVx1MDVFQSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDVERVx1MDVEN1x1MDVFOFx1MDVENVx1MDVENlx1MDVFQSBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNUUwXHUwNUQ0OiBcdTA1RDdcdTA1RDlcdTA1RDlcdTA1RDFcdTA1RUEgXHUwNURDXHUwNUQ0XHUwNUVBXHUwNUQ3XHUwNUQ5XHUwNURDIFx1MDVEMVwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA1REVcdTA1RDdcdTA1RThcdTA1RDVcdTA1RDZcdTA1RUEgXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVFMFx1MDVENDogXHUwNUQ3XHUwNUQ5XHUwNUQ5XHUwNUQxXHUwNUVBIFx1MDVEQ1x1MDVENFx1MDVFMVx1MDVFQVx1MDVEOVx1MDVEOVx1MDVERCBcdTA1RDEgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwNURFXHUwNUQ3XHUwNUU4XHUwNUQ1XHUwNUQ2XHUwNUVBIFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1RTBcdTA1RDQ6IFx1MDVEN1x1MDVEOVx1MDVEOVx1MDVEMVx1MDVFQSBcdTA1RENcdTA1REJcdTA1RENcdTA1RDVcdTA1REMgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTA1REVcdTA1RDdcdTA1RThcdTA1RDVcdTA1RDZcdTA1RUEgXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVFMFx1MDVENDogXHUwNUQ3XHUwNUQ5XHUwNUQ5XHUwNUQxXHUwNUVBIFx1MDVEQ1x1MDVENFx1MDVFQVx1MDVEMFx1MDVEOVx1MDVERCBcdTA1RENcdTA1RUFcdTA1RDFcdTA1RTBcdTA1RDlcdTA1RUEgJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REZgfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA1REVcdTA1RTFcdTA1RTRcdTA1RTggXHUwNURDXHUwNUQwIFx1MDVFQVx1MDVFN1x1MDVEOVx1MDVERjogXHUwNUQ3XHUwNUQ5XHUwNUQ5XHUwNUQxIFx1MDVEQ1x1MDVENFx1MDVEOVx1MDVENVx1MDVFQSBcdTA1REVcdTA1REJcdTA1RTRcdTA1RENcdTA1RDQgXHUwNUU5XHUwNURDICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwNURFXHUwNUU0XHUwNUVBXHUwNUQ3JHtYLmtleXMubGVuZ3RoPjE/XCJcdTA1RDVcdTA1RUFcIjpcIlwifSBcdTA1RENcdTA1RDAgXHUwNURFXHUwNUQ2XHUwNUQ1XHUwNUQ0JHtYLmtleXMubGVuZ3RoPjE/XCJcdTA1RDlcdTA1RERcIjpcIlx1MDVENFwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHUwNURFXHUwNUU0XHUwNUVBXHUwNUQ3IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REYgXHUwNUQxJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDVFN1x1MDVEQ1x1MDVEOCBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNURGXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDVFMlx1MDVFOFx1MDVEQSBcdTA1RENcdTA1RDAgXHUwNUVBXHUwNUU3XHUwNUQ5XHUwNURGIFx1MDVEMSR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNUU3XHUwNURDXHUwNUQ4IFx1MDVEQ1x1MDVEMCBcdTA1RUFcdTA1RTdcdTA1RDlcdTA1REZcIn19fTtmdW5jdGlvbiBGcSgpe3JldHVybntsb2NhbGVFcnJvcjpBdSgpfX12YXIgSXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwia2FyYWt0ZXJcIix2ZXJiOlwibGVneWVuXCJ9LGZpbGU6e3VuaXQ6XCJieXRlXCIsdmVyYjpcImxlZ3llblwifSxhcnJheTp7dW5pdDpcImVsZW1cIix2ZXJiOlwibGVneWVuXCJ9LHNldDp7dW5pdDpcImVsZW1cIix2ZXJiOlwibGVneWVuXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJzelx1MDBFMW1cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInRcdTAwRjZtYlwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiYmVtZW5ldFwiLGVtYWlsOlwiZW1haWwgY1x1MDBFRG1cIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIGlkXHUwMTUxYlx1MDBFOWx5ZWdcIixkYXRlOlwiSVNPIGRcdTAwRTF0dW1cIix0aW1lOlwiSVNPIGlkXHUwMTUxXCIsZHVyYXRpb246XCJJU08gaWRcdTAxNTFpbnRlcnZhbGx1bVwiLGlwdjQ6XCJJUHY0IGNcdTAwRURtXCIsaXB2NjpcIklQdjYgY1x1MDBFRG1cIixjaWRydjQ6XCJJUHY0IHRhcnRvbVx1MDBFMW55XCIsY2lkcnY2OlwiSVB2NiB0YXJ0b21cdTAwRTFueVwiLGJhc2U2NDpcImJhc2U2NC1rXHUwMEYzZG9sdCBzdHJpbmdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwta1x1MDBGM2RvbHQgc3RyaW5nXCIsanNvbl9zdHJpbmc6XCJKU09OIHN0cmluZ1wiLGUxNjQ6XCJFLjE2NCBzelx1MDBFMW1cIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiYmVtZW5ldFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIGJlbWVuZXQ6IGEgdlx1MDBFMXJ0IFx1MDBFOXJ0XHUwMEU5ayAke1guZXhwZWN0ZWR9LCBhIGthcG90dCBcdTAwRTlydFx1MDBFOWsgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBiZW1lbmV0OiBhIHZcdTAwRTFydCBcdTAwRTlydFx1MDBFOWsgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4gb3BjaVx1MDBGMzogdmFsYW1lbHlpayBcdTAwRTlydFx1MDBFOWsgdlx1MDBFMXJ0ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRcdTAwRkFsIG5hZ3k6ICR7WC5vcmlnaW4/P1wiXHUwMEU5cnRcdTAwRTlrXCJ9IG1cdTAwRTlyZXRlIHRcdTAwRkFsIG5hZ3kgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1cIn1gO3JldHVybmBUXHUwMEZBbCBuYWd5OiBhIGJlbWVuZXRpIFx1MDBFOXJ0XHUwMEU5ayAke1gub3JpZ2luPz9cIlx1MDBFOXJ0XHUwMEU5a1wifSB0XHUwMEZBbCBuYWd5OiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUXHUwMEZBbCBraWNzaTogYSBiZW1lbmV0aSBcdTAwRTlydFx1MDBFOWsgJHtYLm9yaWdpbn0gbVx1MDBFOXJldGUgdFx1MDBGQWwga2ljc2kgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFRcdTAwRkFsIGtpY3NpOiBhIGJlbWVuZXRpIFx1MDBFOXJ0XHUwMEU5ayAke1gub3JpZ2lufSB0XHUwMEZBbCBraWNzaSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBzdHJpbmc6IFwiJHtXLnByZWZpeH1cIiBcdTAwRTlydFx1MDBFOWtrZWwga2VsbCBrZXpkXHUwMTUxZG5pZWA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4gc3RyaW5nOiBcIiR7Vy5zdWZmaXh9XCIgXHUwMEU5cnRcdTAwRTlra2VsIGtlbGwgdlx1MDBFOWd6XHUwMTUxZG5pZWA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBzdHJpbmc6IFwiJHtXLmluY2x1ZGVzfVwiIFx1MDBFOXJ0XHUwMEU5a2V0IGtlbGwgdGFydGFsbWF6bmlhYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwMEM5cnZcdTAwRTlueXRlbGVuIHN0cmluZzogJHtXLnBhdHRlcm59IG1pbnRcdTAwRTFuYWsga2VsbCBtZWdmZWxlbG5pZWA7cmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4gc3pcdTAwRTFtOiAke1guZGl2aXNvcn0gdFx1MDBGNmJic3pcdTAwRjZyXHUwMEY2c1x1MDBFOW5layBrZWxsIGxlbm5pZWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gSXNtZXJldGxlbiBrdWxjcyR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTAwQzlydlx1MDBFOW55dGVsZW4ga3VsY3MgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBiZW1lbmV0XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDBDOXJ2XHUwMEU5bnl0ZWxlbiBcdTAwRTlydFx1MDBFOWs6ICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwMEM5cnZcdTAwRTlueXRlbGVuIGJlbWVuZXRcIn19fTtmdW5jdGlvbiBacSgpe3JldHVybntsb2NhbGVFcnJvcjpJdSgpfX12YXIgUnU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwia2FyYWt0ZXJcIix2ZXJiOlwibWVtaWxpa2lcIn0sZmlsZTp7dW5pdDpcImJ5dGVcIix2ZXJiOlwibWVtaWxpa2lcIn0sYXJyYXk6e3VuaXQ6XCJpdGVtXCIsdmVyYjpcIm1lbWlsaWtpXCJ9LHNldDp7dW5pdDpcIml0ZW1cIix2ZXJiOlwibWVtaWxpa2lcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJhbGFtYXQgZW1haWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTT1wiLGRhdGU6XCJ0YW5nZ2FsIGZvcm1hdCBJU09cIix0aW1lOlwiamFtIGZvcm1hdCBJU09cIixkdXJhdGlvbjpcImR1cmFzaSBmb3JtYXQgSVNPXCIsaXB2NDpcImFsYW1hdCBJUHY0XCIsaXB2NjpcImFsYW1hdCBJUHY2XCIsY2lkcnY0OlwicmVudGFuZyBhbGFtYXQgSVB2NFwiLGNpZHJ2NjpcInJlbnRhbmcgYWxhbWF0IElQdjZcIixiYXNlNjQ6XCJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjRcIixiYXNlNjR1cmw6XCJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcInN0cmluZyBKU09OXCIsZTE2NDpcImFuZ2thIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImlucHV0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke1guZXhwZWN0ZWR9LCBkaXRlcmltYSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7WC5vcmlnaW4/P1widmFsdWVcIn0gbWVtaWxpa2kgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lblwifWA7cmV0dXJuYFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtYLm9yaWdpbj8/XCJ2YWx1ZVwifSBtZW5qYWRpICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtYLm9yaWdpbn0gbWVtaWxpa2kgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtYLm9yaWdpbn0gbWVuamFkaSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgZGltdWxhaSBkZW5nYW4gXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgYmVyYWtoaXIgZGVuZ2FuIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgbWVueWVydGFrYW4gXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIHNlc3VhaSBwb2xhICR7Vy5wYXR0ZXJufWA7cmV0dXJuYCR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fSB0aWRhayB2YWxpZGB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYEFuZ2thIHRpZGFrIHZhbGlkOiBoYXJ1cyBrZWxpcGF0YW4gZGFyaSAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpICR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBLdW5jaSB0aWRhayB2YWxpZCBkaSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiSW5wdXQgdGlkYWsgdmFsaWRcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gTmlsYWkgdGlkYWsgdmFsaWQgZGkgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJJbnB1dCB0aWRhayB2YWxpZFwifX19O2Z1bmN0aW9uIE1xKCl7cmV0dXJue2xvY2FsZUVycm9yOlJ1KCl9fXZhciBQdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJjYXJhdHRlcmlcIix2ZXJiOlwiYXZlcmVcIn0sZmlsZTp7dW5pdDpcImJ5dGVcIix2ZXJiOlwiYXZlcmVcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50aVwiLHZlcmI6XCJhdmVyZVwifSxzZXQ6e3VuaXQ6XCJlbGVtZW50aVwiLHZlcmI6XCJhdmVyZVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtZXJvXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJ2ZXR0b3JlXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJpbnB1dFwiLGVtYWlsOlwiaW5kaXJpenpvIGVtYWlsXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdGEgZSBvcmEgSVNPXCIsZGF0ZTpcImRhdGEgSVNPXCIsdGltZTpcIm9yYSBJU09cIixkdXJhdGlvbjpcImR1cmF0YSBJU09cIixpcHY0OlwiaW5kaXJpenpvIElQdjRcIixpcHY2OlwiaW5kaXJpenpvIElQdjZcIixjaWRydjQ6XCJpbnRlcnZhbGxvIElQdjRcIixjaWRydjY6XCJpbnRlcnZhbGxvIElQdjZcIixiYXNlNjQ6XCJzdHJpbmdhIGNvZGlmaWNhdGEgaW4gYmFzZTY0XCIsYmFzZTY0dXJsOlwiVVJMIGNvZGlmaWNhdGEgaW4gYmFzZTY0XCIsanNvbl9zdHJpbmc6XCJzdHJpbmdhIEpTT05cIixlMTY0OlwibnVtZXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImlucHV0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtYLmV4cGVjdGVkfSwgcmljZXZ1dG8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYE9wemlvbmUgbm9uIHZhbGlkYTogYXR0ZXNvIHVubyB0cmEgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVHJvcHBvIGdyYW5kZTogJHtYLm9yaWdpbj8/XCJ2YWxvcmVcIn0gZGV2ZSBhdmVyZSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudGlcIn1gO3JldHVybmBUcm9wcG8gZ3JhbmRlOiAke1gub3JpZ2luPz9cInZhbG9yZVwifSBkZXZlIGVzc2VyZSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUcm9wcG8gcGljY29sbzogJHtYLm9yaWdpbn0gZGV2ZSBhdmVyZSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gVHJvcHBvIHBpY2NvbG86ICR7WC5vcmlnaW59IGRldmUgZXNzZXJlICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluaXppYXJlIGNvbiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluY2x1ZGVyZSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBjb3JyaXNwb25kZXJlIGFsIHBhdHRlcm4gJHtXLnBhdHRlcm59YDtyZXR1cm5gSW52YWxpZCAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOdW1lcm8gbm9uIHZhbGlkbzogZGV2ZSBlc3NlcmUgdW4gbXVsdGlwbG8gZGkgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBDaGlhdiR7WC5rZXlzLmxlbmd0aD4xP1wiaVwiOlwiZVwifSBub24gcmljb25vc2NpdXQke1gua2V5cy5sZW5ndGg+MT9cImVcIjpcImFcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJJbnB1dCBub24gdmFsaWRvXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFZhbG9yZSBub24gdmFsaWRvIGluICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiSW5wdXQgbm9uIHZhbGlkb1wifX19O2Z1bmN0aW9uIExxKCl7cmV0dXJue2xvY2FsZUVycm9yOlB1KCl9fXZhciBFdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTY1ODdcdTVCNTdcIix2ZXJiOlwiXHUzMDY3XHUzMDQyXHUzMDhCXCJ9LGZpbGU6e3VuaXQ6XCJcdTMwRDBcdTMwQTRcdTMwQzhcIix2ZXJiOlwiXHUzMDY3XHUzMDQyXHUzMDhCXCJ9LGFycmF5Ont1bml0OlwiXHU4OTgxXHU3RDIwXCIsdmVyYjpcIlx1MzA2N1x1MzA0Mlx1MzA4QlwifSxzZXQ6e3VuaXQ6XCJcdTg5ODFcdTdEMjBcIix2ZXJiOlwiXHUzMDY3XHUzMDQyXHUzMDhCXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTY1NzBcdTUwMjRcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1OTE0RFx1NTIxN1wiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHU1MTY1XHU1MjlCXHU1MDI0XCIsZW1haWw6XCJcdTMwRTFcdTMwRkNcdTMwRUJcdTMwQTJcdTMwQzlcdTMwRUNcdTMwQjlcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1N0Q3NVx1NjU4N1x1NUI1N1wiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTT1x1NjVFNVx1NjY0MlwiLGRhdGU6XCJJU09cdTY1RTVcdTRFRDhcIix0aW1lOlwiSVNPXHU2NjQyXHU1MjNCXCIsZHVyYXRpb246XCJJU09cdTY3MUZcdTk1OTNcIixpcHY0OlwiSVB2NFx1MzBBMlx1MzBDOVx1MzBFQ1x1MzBCOVwiLGlwdjY6XCJJUHY2XHUzMEEyXHUzMEM5XHUzMEVDXHUzMEI5XCIsY2lkcnY0OlwiSVB2NFx1N0JDNFx1NTZGMlwiLGNpZHJ2NjpcIklQdjZcdTdCQzRcdTU2RjJcIixiYXNlNjQ6XCJiYXNlNjRcdTMwQThcdTMwRjNcdTMwQjNcdTMwRkNcdTMwQzlcdTY1ODdcdTVCNTdcdTUyMTdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmxcdTMwQThcdTMwRjNcdTMwQjNcdTMwRkNcdTMwQzlcdTY1ODdcdTVCNTdcdTUyMTdcIixqc29uX3N0cmluZzpcIkpTT05cdTY1ODdcdTVCNTdcdTUyMTdcIixlMTY0OlwiRS4xNjRcdTc1NkFcdTUzRjdcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHU1MTY1XHU1MjlCXHU1MDI0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTcxMjFcdTUyQjlcdTMwNkFcdTUxNjVcdTUyOUI6ICR7WC5leHBlY3RlZH1cdTMwNENcdTY3MUZcdTVGODVcdTMwNTVcdTMwOENcdTMwN0VcdTMwNTdcdTMwNUZcdTMwNENcdTMwMDEke0ooWC5pbnB1dCl9XHUzMDRDXHU1MTY1XHU1MjlCXHUzMDU1XHUzMDhDXHUzMDdFXHUzMDU3XHUzMDVGYDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHU3MTIxXHU1MkI5XHUzMDZBXHU1MTY1XHU1MjlCOiAke3goWC52YWx1ZXNbMF0pfVx1MzA0Q1x1NjcxRlx1NUY4NVx1MzA1NVx1MzA4Q1x1MzA3RVx1MzA1N1x1MzA1RmA7cmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1OTA3OFx1NjI5RTogJHtQKFgudmFsdWVzLFwiXHUzMDAxXCIpfVx1MzA2RVx1MzA0NFx1MzA1QVx1MzA4Q1x1MzA0Qlx1MzA2N1x1MzA0Mlx1MzA4Qlx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIlx1NEVFNVx1NEUwQlx1MzA2N1x1MzA0Mlx1MzA4QlwiOlwiXHUzMDg4XHUzMDhBXHU1QzBGXHUzMDU1XHUzMDQ0XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTU5MjdcdTMwNERcdTMwNTlcdTMwNEVcdTMwOEJcdTUwMjQ6ICR7WC5vcmlnaW4/P1wiXHU1MDI0XCJ9XHUzMDZGJHtYLm1heGltdW0udG9TdHJpbmcoKX0ke0cudW5pdD8/XCJcdTg5ODFcdTdEMjBcIn0ke1d9XHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtyZXR1cm5gXHU1OTI3XHUzMDREXHUzMDU5XHUzMDRFXHUzMDhCXHU1MDI0OiAke1gub3JpZ2luPz9cIlx1NTAyNFwifVx1MzA2RiR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9JHtXfVx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiXHU0RUU1XHU0RTBBXHUzMDY3XHUzMDQyXHUzMDhCXCI6XCJcdTMwODhcdTMwOEFcdTU5MjdcdTMwNERcdTMwNDRcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1NUMwRlx1MzA1NVx1MzA1OVx1MzA0RVx1MzA4Qlx1NTAyNDogJHtYLm9yaWdpbn1cdTMwNkYke1gubWluaW11bS50b1N0cmluZygpfSR7Ry51bml0fSR7V31cdTVGQzVcdTg5ODFcdTMwNENcdTMwNDJcdTMwOEFcdTMwN0VcdTMwNTlgO3JldHVybmBcdTVDMEZcdTMwNTVcdTMwNTlcdTMwNEVcdTMwOEJcdTUwMjQ6ICR7WC5vcmlnaW59XHUzMDZGJHtYLm1pbmltdW0udG9TdHJpbmcoKX0ke1d9XHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTcxMjFcdTUyQjlcdTMwNkFcdTY1ODdcdTVCNTdcdTUyMTc6IFwiJHtXLnByZWZpeH1cIlx1MzA2N1x1NTlDQlx1MzA3RVx1MzA4Qlx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTcxMjFcdTUyQjlcdTMwNkFcdTY1ODdcdTVCNTdcdTUyMTc6IFwiJHtXLnN1ZmZpeH1cIlx1MzA2N1x1N0Q0Mlx1MzA4Rlx1MzA4Qlx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NjU4N1x1NUI1N1x1NTIxNzogXCIke1cuaW5jbHVkZXN9XCJcdTMwOTJcdTU0MkJcdTMwODBcdTVGQzVcdTg5ODFcdTMwNENcdTMwNDJcdTMwOEFcdTMwN0VcdTMwNTlgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTcxMjFcdTUyQjlcdTMwNkFcdTY1ODdcdTVCNTdcdTUyMTc6IFx1MzBEMVx1MzBCRlx1MzBGQ1x1MzBGMyR7Vy5wYXR0ZXJufVx1MzA2Qlx1NEUwMFx1ODFGNFx1MzA1OVx1MzA4Qlx1NUZDNVx1ODk4MVx1MzA0Q1x1MzA0Mlx1MzA4QVx1MzA3RVx1MzA1OWA7cmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QSR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1NzEyMVx1NTJCOVx1MzA2QVx1NjU3MFx1NTAyNDogJHtYLmRpdmlzb3J9XHUzMDZFXHU1MDBEXHU2NTcwXHUzMDY3XHUzMDQyXHUzMDhCXHU1RkM1XHU4OTgxXHUzMDRDXHUzMDQyXHUzMDhBXHUzMDdFXHUzMDU5YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdThBOERcdThCNThcdTMwNTVcdTMwOENcdTMwNjZcdTMwNDRcdTMwNkFcdTMwNDRcdTMwQURcdTMwRkMke1gua2V5cy5sZW5ndGg+MT9cIlx1N0ZBNFwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiXHUzMDAxXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gJHtYLm9yaWdpbn1cdTUxODVcdTMwNkVcdTcxMjFcdTUyQjlcdTMwNkFcdTMwQURcdTMwRkNgO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1NzEyMVx1NTJCOVx1MzA2QVx1NTE2NVx1NTI5QlwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmAke1gub3JpZ2lufVx1NTE4NVx1MzA2RVx1NzEyMVx1NTJCOVx1MzA2QVx1NTAyNGA7ZGVmYXVsdDpyZXR1cm5cIlx1NzEyMVx1NTJCOVx1MzA2QVx1NTE2NVx1NTI5QlwifX19O2Z1bmN0aW9uIGpxKCl7cmV0dXJue2xvY2FsZUVycm9yOkV1KCl9fXZhciBidT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTE3OEZcdTE3QkRcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcIix2ZXJiOlwiXHUxNzgyXHUxN0JEXHUxNzlBXHUxNzk4XHUxN0I2XHUxNzkzXCJ9LGZpbGU6e3VuaXQ6XCJcdTE3OTRcdTE3QzNcIix2ZXJiOlwiXHUxNzgyXHUxN0JEXHUxNzlBXHUxNzk4XHUxN0I2XHUxNzkzXCJ9LGFycmF5Ont1bml0OlwiXHUxNzkyXHUxN0I2XHUxNzhGXHUxN0JCXCIsdmVyYjpcIlx1MTc4Mlx1MTdCRFx1MTc5QVx1MTc5OFx1MTdCNlx1MTc5M1wifSxzZXQ6e3VuaXQ6XCJcdTE3OTJcdTE3QjZcdTE3OEZcdTE3QkJcIix2ZXJiOlwiXHUxNzgyXHUxN0JEXHUxNzlBXHUxNzk4XHUxN0I2XHUxNzkzXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzk4XHUxN0MyXHUxNzkzXHUxNzg3XHUxN0I2XHUxNzlCXHUxN0MxXHUxNzgxIChOYU4pXCI6XCJcdTE3OUJcdTE3QzFcdTE3ODFcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MTdBMlx1MTdCNlx1MTc5QVx1MTdDMSAoQXJyYXkpXCI7aWYoWD09PW51bGwpcmV0dXJuXCJcdTE3ODJcdTE3RDJcdTE3OThcdTE3QjZcdTE3OTNcdTE3OEZcdTE3OThcdTE3RDJcdTE3OUJcdTE3QzMgKG51bGwpXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OTRcdTE3ODlcdTE3RDJcdTE3ODVcdTE3QkNcdTE3OUJcIixlbWFpbDpcIlx1MTdBMlx1MTdCNlx1MTc5Rlx1MTc5OVx1MTc4QVx1MTdEMlx1MTc4Qlx1MTdCNlx1MTc5M1x1MTdBMlx1MTdDQVx1MTdCOFx1MTc5OFx1MTdDMlx1MTc5QlwiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHUxNzlGXHUxNzg5XHUxN0QyXHUxNzg5XHUxN0I2XHUxN0EyXHUxN0I2XHUxNzlBXHUxNzk4XHUxN0QyXHUxNzk4XHUxNzhFXHUxN0NEXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiXHUxNzgwXHUxN0I2XHUxNzlCXHUxNzk0XHUxNzlBXHUxN0I3XHUxNzg1XHUxN0QyXHUxNzg2XHUxN0MxXHUxNzkxIFx1MTc5M1x1MTdCN1x1MTc4NFx1MTc5OFx1MTdDOVx1MTdDNFx1MTc4NCBJU09cIixkYXRlOlwiXHUxNzgwXHUxN0I2XHUxNzlCXHUxNzk0XHUxNzlBXHUxN0I3XHUxNzg1XHUxN0QyXHUxNzg2XHUxN0MxXHUxNzkxIElTT1wiLHRpbWU6XCJcdTE3OThcdTE3QzlcdTE3QzRcdTE3ODQgSVNPXCIsZHVyYXRpb246XCJcdTE3OUFcdTE3OTlcdTE3QzhcdTE3OTZcdTE3QzFcdTE3OUIgSVNPXCIsaXB2NDpcIlx1MTdBMlx1MTdCNlx1MTc5Rlx1MTc5OVx1MTc4QVx1MTdEMlx1MTc4Qlx1MTdCNlx1MTc5MyBJUHY0XCIsaXB2NjpcIlx1MTdBMlx1MTdCNlx1MTc5Rlx1MTc5OVx1MTc4QVx1MTdEMlx1MTc4Qlx1MTdCNlx1MTc5MyBJUHY2XCIsY2lkcnY0OlwiXHUxNzhBXHUxN0MyXHUxNzkzXHUxN0EyXHUxN0I2XHUxNzlGXHUxNzk5XHUxNzhBXHUxN0QyXHUxNzhCXHUxN0I2XHUxNzkzIElQdjRcIixjaWRydjY6XCJcdTE3OEFcdTE3QzJcdTE3OTNcdTE3QTJcdTE3QjZcdTE3OUZcdTE3OTlcdTE3OEFcdTE3RDJcdTE3OEJcdTE3QjZcdTE3OTMgSVB2NlwiLGJhc2U2NDpcIlx1MTc4MVx1MTdEMlx1MTc5Rlx1MTdDMlx1MTdBMlx1MTc4MFx1MTdEMlx1MTc5Rlx1MTc5QVx1MTdBMlx1MTdDQVx1MTdCN1x1MTc4MFx1MTdCQ1x1MTc4QSBiYXNlNjRcIixiYXNlNjR1cmw6XCJcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcdTE3QTJcdTE3Q0FcdTE3QjdcdTE3ODBcdTE3QkNcdTE3OEEgYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUEgSlNPTlwiLGUxNjQ6XCJcdTE3OUJcdTE3QzFcdTE3ODEgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUxNzkxXHUxN0I3XHUxNzkzXHUxN0QyXHUxNzkzXHUxNzkzXHUxN0QwXHUxNzk5XHUxNzk0XHUxNzg5XHUxN0QyXHUxNzg1XHUxN0JDXHUxNzlCXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OTRcdTE3ODlcdTE3RDJcdTE3ODVcdTE3QkNcdTE3OUJcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzgwXHUxN0I2XHUxNzlBICR7WC5leHBlY3RlZH0gXHUxNzk0XHUxN0M5XHUxN0JCXHUxNzkzXHUxN0QyXHUxNzhGXHUxN0MyXHUxNzkxXHUxNzkxXHUxN0JEXHUxNzlCXHUxNzk0XHUxN0I2XHUxNzkzICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OTRcdTE3ODlcdTE3RDJcdTE3ODVcdTE3QkNcdTE3OUJcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzgwXHUxN0I2XHUxNzlBICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUxNzg3XHUxNzk4XHUxN0QyXHUxNzlBXHUxN0JFXHUxNzlGXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4N1x1MTdCNlx1MTc5OFx1MTdCRFx1MTc5OVx1MTc4MFx1MTdEMlx1MTc5M1x1MTdCQlx1MTc4NFx1MTc4NVx1MTdDNlx1MTc4RVx1MTdDNFx1MTc5OCAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTE3OTJcdTE3QzZcdTE3OTZcdTE3QzFcdTE3ODBcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzgwXHUxN0I2XHUxNzlBICR7WC5vcmlnaW4/P1wiXHUxNzhGXHUxNzk4XHUxN0QyXHUxNzlCXHUxN0MzXCJ9ICR7V30gJHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUxNzkyXHUxN0I2XHUxNzhGXHUxN0JCXCJ9YDtyZXR1cm5gXHUxNzkyXHUxN0M2XHUxNzk2XHUxN0MxXHUxNzgwXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4MFx1MTdCNlx1MTc5QSAke1gub3JpZ2luPz9cIlx1MTc4Rlx1MTc5OFx1MTdEMlx1MTc5Qlx1MTdDM1wifSAke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUxNzhGXHUxN0JDXHUxNzg1XHUxNzk2XHUxN0MxXHUxNzgwXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4MFx1MTdCNlx1MTc5QSAke1gub3JpZ2lufSAke1d9ICR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFx1MTc4Rlx1MTdCQ1x1MTc4NVx1MTc5Nlx1MTdDMVx1MTc4MFx1MTdENiBcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3ODBcdTE3QjZcdTE3OUEgJHtYLm9yaWdpbn0gJHtXfSAke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUxNzgxXHUxN0QyXHUxNzlGXHUxN0MyXHUxN0EyXHUxNzgwXHUxN0QyXHUxNzlGXHUxNzlBXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4NVx1MTdCNlx1MTc5NFx1MTdDQlx1MTc5NVx1MTdEMlx1MTc4Rlx1MTdCRVx1MTc5OFx1MTc4QVx1MTdDNFx1MTc5OSBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUxNzgxXHUxN0QyXHUxNzlGXHUxN0MyXHUxN0EyXHUxNzgwXHUxN0QyXHUxNzlGXHUxNzlBXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc5NFx1MTc4OVx1MTdEMlx1MTc4NVx1MTc5NFx1MTdDQlx1MTc4QVx1MTdDNFx1MTc5OSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTE3ODFcdTE3RDJcdTE3OUZcdTE3QzJcdTE3QTJcdTE3ODBcdTE3RDJcdTE3OUZcdTE3OUFcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxNzk4XHUxN0I2XHUxNzkzIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUxNzgxXHUxN0QyXHUxNzlGXHUxN0MyXHUxN0EyXHUxNzgwXHUxN0QyXHUxNzlGXHUxNzlBXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4Rlx1MTdDMlx1MTc5NVx1MTdEMlx1MTc4Mlx1MTdCQ1x1MTc5NVx1MTdEMlx1MTc4Mlx1MTc4NFx1MTc5M1x1MTdCOVx1MTc4NFx1MTc5MVx1MTc5OFx1MTdEMlx1MTc5QVx1MTc4NFx1MTdDQlx1MTc4QVx1MTdDMlx1MTc5Qlx1MTc5NFx1MTdCNlx1MTc5M1x1MTc4MFx1MTdDNlx1MTc4RVx1MTc4Rlx1MTdDQiAke1cucGF0dGVybn1gO3JldHVybmBcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3RDYgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUxNzlCXHUxN0MxXHUxNzgxXHUxNzk4XHUxN0I3XHUxNzkzXHUxNzhGXHUxN0QyXHUxNzlBXHUxN0I5XHUxNzk4XHUxNzhGXHUxN0QyXHUxNzlBXHUxN0JDXHUxNzlDXHUxN0Q2IFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1x1MTc4Rlx1MTdDMlx1MTc4N1x1MTdCNlx1MTc5Nlx1MTdBMFx1MTdCQlx1MTc4Mlx1MTdCQlx1MTc4RVx1MTc5M1x1MTdDMyAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MTc5QVx1MTc4MFx1MTc4M1x1MTdCRVx1MTc4OVx1MTc5Rlx1MTdDNFx1MTc5OFx1MTdCN1x1MTc5M1x1MTc5Rlx1MTdEMlx1MTc4Mlx1MTdCNlx1MTc5Qlx1MTdDQlx1MTdENiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTE3OUZcdTE3QzRcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3OTNcdTE3QzVcdTE3ODBcdTE3RDJcdTE3OTNcdTE3QkJcdTE3ODQgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MTc5MVx1MTdCN1x1MTc5M1x1MTdEMlx1MTc5M1x1MTc5M1x1MTdEMFx1MTc5OVx1MTc5OFx1MTdCN1x1MTc5M1x1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCOVx1MTc5OFx1MTc4Rlx1MTdEMlx1MTc5QVx1MTdCQ1x1MTc5Q1wiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcdTE3OTNcdTE3QzVcdTE3ODBcdTE3RDJcdTE3OTNcdTE3QkJcdTE3ODQgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTE3OTFcdTE3QjdcdTE3OTNcdTE3RDJcdTE3OTNcdTE3OTNcdTE3RDBcdTE3OTlcdTE3OThcdTE3QjdcdTE3OTNcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QjlcdTE3OThcdTE3OEZcdTE3RDJcdTE3OUFcdTE3QkNcdTE3OUNcIn19fTtmdW5jdGlvbiBBcSgpe3JldHVybntsb2NhbGVFcnJvcjpidSgpfX12YXIgX3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHVCQjM4XHVDNzkwXCIsdmVyYjpcInRvIGhhdmVcIn0sZmlsZTp7dW5pdDpcIlx1QkMxNFx1Qzc3NFx1RDJCOFwiLHZlcmI6XCJ0byBoYXZlXCJ9LGFycmF5Ont1bml0OlwiXHVBQzFDXCIsdmVyYjpcInRvIGhhdmVcIn0sc2V0Ont1bml0OlwiXHVBQzFDXCIsdmVyYjpcInRvIGhhdmVcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1Qzc4NVx1QjgyNVwiLGVtYWlsOlwiXHVDNzc0XHVCQTU0XHVDNzdDIFx1QzhGQ1x1QzE4Q1wiLHVybDpcIlVSTFwiLGVtb2ppOlwiXHVDNzc0XHVCQUE4XHVDOUMwXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIFx1QjBBMFx1QzlEQ1x1QzJEQ1x1QUMwNFwiLGRhdGU6XCJJU08gXHVCMEEwXHVDOURDXCIsdGltZTpcIklTTyBcdUMyRENcdUFDMDRcIixkdXJhdGlvbjpcIklTTyBcdUFFMzBcdUFDMDRcIixpcHY0OlwiSVB2NCBcdUM4RkNcdUMxOENcIixpcHY2OlwiSVB2NiBcdUM4RkNcdUMxOENcIixjaWRydjQ6XCJJUHY0IFx1QkM5NFx1QzcwNFwiLGNpZHJ2NjpcIklQdjYgXHVCQzk0XHVDNzA0XCIsYmFzZTY0OlwiYmFzZTY0IFx1Qzc3OFx1Q0Y1NFx1QjUyOSBcdUJCMzhcdUM3OTBcdUM1RjRcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwgXHVDNzc4XHVDRjU0XHVCNTI5IFx1QkIzOFx1Qzc5MFx1QzVGNFwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdUJCMzhcdUM3OTBcdUM1RjRcIixlMTY0OlwiRS4xNjQgXHVCQzg4XHVENjM4XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1Qzc4NVx1QjgyNVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1Qzc4NVx1QjgyNTogXHVDNjA4XHVDMEMxIFx1RDBDMFx1Qzc4NVx1Qzc0MCAke1guZXhwZWN0ZWR9LCBcdUJDMUJcdUM3NDAgXHVEMEMwXHVDNzg1XHVDNzQwICR7SihYLmlucHV0KX1cdUM3ODVcdUIyQzhcdUIyRTRgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgXHVDNzg1XHVCODI1OiBcdUFDMTJcdUM3NDAgJHt4KFgudmFsdWVzWzBdKX0gXHVDNzc0XHVDNUI0XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7cmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyBcdUM2MzVcdUMxNTg6ICR7UChYLnZhbHVlcyxcIlx1QjYxMFx1QjI5NCBcIil9IFx1QzkxMSBcdUQ1NThcdUIwOThcdUM1RUNcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiXHVDNzc0XHVENTU4XCI6XCJcdUJCRjhcdUI5Q0NcIixHPVc9PT1cIlx1QkJGOFx1QjlDQ1wiP1wiXHVDNzc0XHVDNUI0XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNFwiOlwiXHVDNUVDXHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNFwiLFU9UShYLm9yaWdpbiksSD1VPy51bml0Pz9cIlx1QzY5NFx1QzE4Q1wiO2lmKFUpcmV0dXJuYCR7WC5vcmlnaW4/P1wiXHVBQzEyXCJ9XHVDNzc0IFx1QjEwOFx1QkIzNCBcdUQwN0RcdUIyQzhcdUIyRTQ6ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9JHtIfSAke1d9JHtHfWA7cmV0dXJuYCR7WC5vcmlnaW4/P1wiXHVBQzEyXCJ9XHVDNzc0IFx1QjEwOFx1QkIzNCBcdUQwN0RcdUIyQzhcdUIyRTQ6ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7V30ke0d9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdUM3NzRcdUMwQzFcIjpcIlx1Q0QwOFx1QUNGQ1wiLEc9Vz09PVwiXHVDNzc0XHVDMEMxXCI/XCJcdUM3NzRcdUM1QjRcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0XCI6XCJcdUM1RUNcdUM1N0MgXHVENTY5XHVCMkM4XHVCMkU0XCIsVT1RKFgub3JpZ2luKSxIPVU/LnVuaXQ/P1wiXHVDNjk0XHVDMThDXCI7aWYoVSlyZXR1cm5gJHtYLm9yaWdpbj8/XCJcdUFDMTJcIn1cdUM3NzQgXHVCMTA4XHVCQjM0IFx1Qzc5MVx1QzJCNVx1QjJDOFx1QjJFNDogJHtYLm1pbmltdW0udG9TdHJpbmcoKX0ke0h9ICR7V30ke0d9YDtyZXR1cm5gJHtYLm9yaWdpbj8/XCJcdUFDMTJcIn1cdUM3NzQgXHVCMTA4XHVCQjM0IFx1Qzc5MVx1QzJCNVx1QjJDOFx1QjJFNDogJHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtXfSR7R31gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyBcdUJCMzhcdUM3OTBcdUM1RjQ6IFwiJHtXLnByZWZpeH1cIihcdUM3M0MpXHVCODVDIFx1QzJEQ1x1Qzc5MVx1RDU3NFx1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QkIzOFx1Qzc5MFx1QzVGNDogXCIke1cuc3VmZml4fVwiKFx1QzczQylcdUI4NUMgXHVCMDVEXHVCMDk4XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyBcdUJCMzhcdUM3OTBcdUM1RjQ6IFwiJHtXLmluY2x1ZGVzfVwiXHVDNzQ0KFx1Qjk3QykgXHVEM0VDXHVENTY4XHVENTc0XHVDNTdDIFx1RDU2OVx1QjJDOFx1QjJFNGA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1Qzc5OFx1QkFCQlx1QjQxQyBcdUJCMzhcdUM3OTBcdUM1RjQ6IFx1QzgxNVx1QUREQ1x1QzJERCAke1cucGF0dGVybn0gXHVEMzI4XHVEMTM0XHVBQ0ZDIFx1Qzc3Q1x1Q0U1OFx1RDU3NFx1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRgO3JldHVybmBcdUM3OThcdUJBQkJcdUI0MUMgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QzIyQlx1Qzc5MDogJHtYLmRpdmlzb3J9XHVDNzU4IFx1QkMzMFx1QzIxOFx1QzVFQ1x1QzU3QyBcdUQ1NjlcdUIyQzhcdUIyRTRgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1Qzc3OFx1QzJERFx1RDU2MCBcdUMyMTggXHVDNUM2XHVCMjk0IFx1RDBBNDogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1RDBBNDogJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1Qzc5OFx1QkFCQlx1QjQxQyBcdUM3ODVcdUI4MjVcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHVDNzk4XHVCQUJCXHVCNDFDIFx1QUMxMjogJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdUM3OThcdUJBQkJcdUI0MUMgXHVDNzg1XHVCODI1XCJ9fX07ZnVuY3Rpb24gSXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6X3UoKX19dmFyIFN1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0Nlx1MDQzOFwiLHZlcmI6XCJcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwXHUwNDMwXHUwNDQyXCJ9LGZpbGU6e3VuaXQ6XCJcdTA0MzFcdTA0MzBcdTA0NThcdTA0NDJcdTA0MzhcIix2ZXJiOlwiXHUwNDM0XHUwNDMwIFx1MDQzOFx1MDQzQ1x1MDQzMFx1MDQzMFx1MDQ0MlwifSxhcnJheTp7dW5pdDpcIlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzMlx1MDQzQVx1MDQzOFwiLHZlcmI6XCJcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwXHUwNDMwXHUwNDQyXCJ9LHNldDp7dW5pdDpcIlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzMlx1MDQzQVx1MDQzOFwiLHZlcmI6XCJcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwXHUwNDMwXHUwNDQyXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA0MzFcdTA0NDBcdTA0M0VcdTA0NThcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMFwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNDMyXHUwNDNEXHUwNDM1XHUwNDQxXCIsZW1haWw6XCJcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzAgXHUwNDNEXHUwNDMwIFx1MDQzNS1cdTA0M0ZcdTA0M0VcdTA0NDhcdTA0NDJcdTA0MzBcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1MDQzNVx1MDQzQ1x1MDQzRVx1MDQ1Rlx1MDQzOFwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBcdTA0MzRcdTA0MzBcdTA0NDJcdTA0NDNcdTA0M0MgXHUwNDM4IFx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQzNVwiLGRhdGU6XCJJU08gXHUwNDM0XHUwNDMwXHUwNDQyXHUwNDQzXHUwNDNDXCIsdGltZTpcIklTTyBcdTA0MzJcdTA0NDBcdTA0MzVcdTA0M0NcdTA0MzVcIixkdXJhdGlvbjpcIklTTyBcdTA0MzJcdTA0NDBcdTA0MzVcdTA0M0NcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzBcdTA0MzVcdTA0NUFcdTA0MzVcIixpcHY0OlwiSVB2NCBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzBcIixpcHY2OlwiSVB2NiBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzBcIixjaWRydjQ6XCJJUHY0IFx1MDQzRVx1MDQzRlx1MDQ0MVx1MDQzNVx1MDQzM1wiLGNpZHJ2NjpcIklQdjYgXHUwNDNFXHUwNDNGXHUwNDQxXHUwNDM1XHUwNDMzXCIsYmFzZTY0OlwiYmFzZTY0LVx1MDQzNVx1MDQzRFx1MDQzQVx1MDQzRVx1MDQzNFx1MDQzOFx1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzMCBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzBcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtXHUwNDM1XHUwNDNEXHUwNDNBXHUwNDNFXHUwNDM0XHUwNDM4XHUwNDQwXHUwNDMwXHUwNDNEXHUwNDMwIFx1MDQzRFx1MDQzOFx1MDQzN1x1MDQzMFwiLGpzb25fc3RyaW5nOlwiSlNPTiBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzBcIixlMTY0OlwiRS4xNjQgXHUwNDMxXHUwNDQwXHUwNDNFXHUwNDU4XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDQzMlx1MDQzRFx1MDQzNVx1MDQ0MVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwNDEzXHUwNDQwXHUwNDM1XHUwNDQ4XHUwNDM1XHUwNDNEIFx1MDQzMlx1MDQzRFx1MDQzNVx1MDQ0MTogXHUwNDQxXHUwNDM1IFx1MDQzRVx1MDQ0N1x1MDQzNVx1MDQzQVx1MDQ0M1x1MDQzMlx1MDQzMCAke1guZXhwZWN0ZWR9LCBcdTA0M0ZcdTA0NDBcdTA0MzhcdTA0M0NcdTA0MzVcdTA0M0RcdTA0M0UgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwNDEzXHUwNDQwXHUwNDM1XHUwNDQ4XHUwNDMwXHUwNDNEXHUwNDMwIFx1MDQzRVx1MDQzRlx1MDQ0Nlx1MDQzOFx1MDQ1OFx1MDQzMDogXHUwNDQxXHUwNDM1IFx1MDQzRVx1MDQ0N1x1MDQzNVx1MDQzQVx1MDQ0M1x1MDQzMlx1MDQzMCBcdTA0MzVcdTA0MzRcdTA0M0RcdTA0MzAgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNDFGXHUwNDQwXHUwNDM1XHUwNDNDXHUwNDNEXHUwNDNFXHUwNDMzXHUwNDQzIFx1MDQzM1x1MDQzRVx1MDQzQlx1MDQzNVx1MDQzQzogXHUwNDQxXHUwNDM1IFx1MDQzRVx1MDQ0N1x1MDQzNVx1MDQzQVx1MDQ0M1x1MDQzMlx1MDQzMCAke1gub3JpZ2luPz9cIlx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzRFx1MDQzRVx1MDQ0MVx1MDQ0Mlx1MDQzMFwifSBcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTA0MzVcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0MzhcIn1gO3JldHVybmBcdTA0MUZcdTA0NDBcdTA0MzVcdTA0M0NcdTA0M0RcdTA0M0VcdTA0MzNcdTA0NDMgXHUwNDMzXHUwNDNFXHUwNDNCXHUwNDM1XHUwNDNDOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwICR7WC5vcmlnaW4/P1wiXHUwNDMyXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDNEXHUwNDNFXHUwNDQxXHUwNDQyXHUwNDMwXCJ9IFx1MDQzNFx1MDQzMCBcdTA0MzFcdTA0MzhcdTA0MzRcdTA0MzUgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNDFGXHUwNDQwXHUwNDM1XHUwNDNDXHUwNDNEXHUwNDNFXHUwNDMzXHUwNDQzIFx1MDQzQ1x1MDQzMFx1MDQzQjogXHUwNDQxXHUwNDM1IFx1MDQzRVx1MDQ0N1x1MDQzNVx1MDQzQVx1MDQ0M1x1MDQzMlx1MDQzMCAke1gub3JpZ2lufSBcdTA0MzRcdTA0MzAgXHUwNDM4XHUwNDNDXHUwNDMwICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTA0MUZcdTA0NDBcdTA0MzVcdTA0M0NcdTA0M0RcdTA0M0VcdTA0MzNcdTA0NDMgXHUwNDNDXHUwNDMwXHUwNDNCOiBcdTA0NDFcdTA0MzUgXHUwNDNFXHUwNDQ3XHUwNDM1XHUwNDNBXHUwNDQzXHUwNDMyXHUwNDMwICR7WC5vcmlnaW59IFx1MDQzNFx1MDQzMCBcdTA0MzFcdTA0MzhcdTA0MzRcdTA0MzUgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzBcdTA0MzZcdTA0MzVcdTA0NDdcdTA0M0FcdTA0MzAgXHUwNDNEXHUwNDM4XHUwNDM3XHUwNDMwOiBcdTA0M0NcdTA0M0VcdTA0NDBcdTA0MzAgXHUwNDM0XHUwNDMwIFx1MDQzN1x1MDQzMFx1MDQzRlx1MDQzRVx1MDQ0N1x1MDQzRFx1MDQ0M1x1MDQzMlx1MDQzMCBcdTA0NDFcdTA0M0UgXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzMFx1MDQzNlx1MDQzNVx1MDQ0N1x1MDQzQVx1MDQzMCBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzA6IFx1MDQzQ1x1MDQzRVx1MDQ0MFx1MDQzMCBcdTA0MzRcdTA0MzAgXHUwNDM3XHUwNDMwXHUwNDMyXHUwNDQwXHUwNDQ4XHUwNDQzXHUwNDMyXHUwNDMwIFx1MDQ0MVx1MDQzRSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzBcdTA0MzZcdTA0MzVcdTA0NDdcdTA0M0FcdTA0MzAgXHUwNDNEXHUwNDM4XHUwNDM3XHUwNDMwOiBcdTA0M0NcdTA0M0VcdTA0NDBcdTA0MzAgXHUwNDM0XHUwNDMwIFx1MDQzMlx1MDQzQVx1MDQzQlx1MDQ0M1x1MDQ0N1x1MDQ0M1x1MDQzMlx1MDQzMCBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzMFx1MDQzNlx1MDQzNVx1MDQ0N1x1MDQzQVx1MDQzMCBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzA6IFx1MDQzQ1x1MDQzRVx1MDQ0MFx1MDQzMCBcdTA0MzRcdTA0MzAgXHUwNDNFXHUwNDM0XHUwNDMzXHUwNDNFXHUwNDMwXHUwNDQwXHUwNDMwIFx1MDQzRFx1MDQzMCBcdTA0M0ZcdTA0MzBcdTA0NDJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0M0VcdTA0NDIgJHtXLnBhdHRlcm59YDtyZXR1cm5gSW52YWxpZCAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzVcdTA0M0QgXHUwNDMxXHUwNDQwXHUwNDNFXHUwNDU4OiBcdTA0M0NcdTA0M0VcdTA0NDBcdTA0MzAgXHUwNDM0XHUwNDMwIFx1MDQzMVx1MDQzOFx1MDQzNFx1MDQzNSBcdTA0MzRcdTA0MzVcdTA0M0JcdTA0MzhcdTA0MzIgXHUwNDQxXHUwNDNFICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gJHtYLmtleXMubGVuZ3RoPjE/XCJcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzVcdTA0M0ZcdTA0M0VcdTA0MzdcdTA0M0RcdTA0MzBcdTA0MzVcdTA0M0RcdTA0MzggXHUwNDNBXHUwNDNCXHUwNDQzXHUwNDQ3XHUwNDM1XHUwNDMyXHUwNDM4XCI6XCJcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzVcdTA0M0ZcdTA0M0VcdTA0MzdcdTA0M0RcdTA0MzBcdTA0MzVcdTA0M0QgXHUwNDNBXHUwNDNCXHUwNDQzXHUwNDQ3XCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzVcdTA0M0QgXHUwNDNBXHUwNDNCXHUwNDQzXHUwNDQ3IFx1MDQzMlx1MDQzRSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNDEzXHUwNDQwXHUwNDM1XHUwNDQ4XHUwNDM1XHUwNDNEIFx1MDQzMlx1MDQzRFx1MDQzNVx1MDQ0MVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTA0MTNcdTA0NDBcdTA0MzVcdTA0NDhcdTA0M0RcdTA0MzAgXHUwNDMyXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDNEXHUwNDNFXHUwNDQxXHUwNDQyIFx1MDQzMlx1MDQzRSAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MDQxM1x1MDQ0MFx1MDQzNVx1MDQ0OFx1MDQzNVx1MDQzRCBcdTA0MzJcdTA0M0RcdTA0MzVcdTA0NDFcIn19fTtmdW5jdGlvbiBScSgpe3JldHVybntsb2NhbGVFcnJvcjpTdSgpfX12YXIga3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiYWtzYXJhXCIsdmVyYjpcIm1lbXB1bnlhaVwifSxmaWxlOnt1bml0OlwiYmFpdFwiLHZlcmI6XCJtZW1wdW55YWlcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW5cIix2ZXJiOlwibWVtcHVueWFpXCJ9LHNldDp7dW5pdDpcImVsZW1lblwiLHZlcmI6XCJtZW1wdW55YWlcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm5vbWJvclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImlucHV0XCIsZW1haWw6XCJhbGFtYXQgZS1tZWxcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwidGFyaWtoIG1hc2EgSVNPXCIsZGF0ZTpcInRhcmlraCBJU09cIix0aW1lOlwibWFzYSBJU09cIixkdXJhdGlvbjpcInRlbXBvaCBJU09cIixpcHY0OlwiYWxhbWF0IElQdjRcIixpcHY2OlwiYWxhbWF0IElQdjZcIixjaWRydjQ6XCJqdWxhdCBJUHY0XCIsY2lkcnY2OlwianVsYXQgSVB2NlwiLGJhc2U2NDpcInN0cmluZyBkaWtvZGthbiBiYXNlNjRcIixiYXNlNjR1cmw6XCJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJzdHJpbmcgSlNPTlwiLGUxNjQ6XCJub21ib3IgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW5wdXRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtYLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBQaWxpaGFuIHRpZGFrIHNhaDogZGlqYW5na2Egc2FsYWggc2F0dSBkYXJpcGFkYSAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke1gub3JpZ2luPz9cIm5pbGFpXCJ9ICR7Ry52ZXJifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVuXCJ9YDtyZXR1cm5gVGVybGFsdSBiZXNhcjogZGlqYW5na2EgJHtYLm9yaWdpbj8/XCJuaWxhaVwifSBhZGFsYWggJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtYLm9yaWdpbn0gJHtHLnZlcmJ9ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke1gub3JpZ2lufSBhZGFsYWggJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJtdWxhIGRlbmdhbiBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVyYWtoaXIgZGVuZ2FuIFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIG1lbmdhbmR1bmdpIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgc2VwYWRhbiBkZW5nYW4gY29yYWsgJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IHRpZGFrIHNhaGB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE5vbWJvciB0aWRhayBzYWg6IHBlcmx1IGdhbmRhYW4gJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJJbnB1dCB0aWRhayBzYWhcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gTmlsYWkgdGlkYWsgc2FoIGRhbGFtICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiSW5wdXQgdGlkYWsgc2FoXCJ9fX07ZnVuY3Rpb24gUHEoKXtyZXR1cm57bG9jYWxlRXJyb3I6a3UoKX19dmFyIHZ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcInRla2Vuc1wifSxmaWxlOnt1bml0OlwiYnl0ZXNcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50ZW5cIn0sc2V0Ont1bml0OlwiZWxlbWVudGVuXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJnZXRhbFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwiYXJyYXlcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImludm9lclwiLGVtYWlsOlwiZW1haWxhZHJlc1wiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gZGF0dW0gZW4gdGlqZFwiLGRhdGU6XCJJU08gZGF0dW1cIix0aW1lOlwiSVNPIHRpamRcIixkdXJhdGlvbjpcIklTTyBkdXVyXCIsaXB2NDpcIklQdjQtYWRyZXNcIixpcHY2OlwiSVB2Ni1hZHJlc1wiLGNpZHJ2NDpcIklQdjQtYmVyZWlrXCIsY2lkcnY2OlwiSVB2Ni1iZXJlaWtcIixiYXNlNjQ6XCJiYXNlNjQtZ2Vjb2RlZXJkZSB0ZWtzdFwiLGJhc2U2NHVybDpcImJhc2U2NCBVUkwtZ2Vjb2RlZXJkZSB0ZWtzdFwiLGpzb25fc3RyaW5nOlwiSlNPTiBzdHJpbmdcIixlMTY0OlwiRS4xNjQtbnVtbWVyXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImludm9lclwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtYLmV4cGVjdGVkfSwgb250dmluZyAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPbmdlbGRpZ2Ugb3B0aWU6IHZlcndhY2h0IFx1MDBFOVx1MDBFOW4gdmFuICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRlIGxhbmc6IHZlcndhY2h0IGRhdCAke1gub3JpZ2luPz9cIndhYXJkZVwifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudGVuXCJ9IGJldmF0YDtyZXR1cm5gVGUgbGFuZzogdmVyd2FjaHQgZGF0ICR7WC5vcmlnaW4/P1wid2FhcmRlXCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSBpc2B9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFRlIGtvcnQ6IHZlcndhY2h0IGRhdCAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9IGJldmF0YDtyZXR1cm5gVGUga29ydDogdmVyd2FjaHQgZGF0ICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSBpc2B9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCBcIiR7Vy5wcmVmaXh9XCIgYmVnaW5uZW5gO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gT25nZWxkaWdlIHRla3N0OiBtb2V0IG9wIFwiJHtXLnN1ZmZpeH1cIiBlaW5kaWdlbmA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBcIiR7Vy5pbmNsdWRlc31cIiBiZXZhdHRlbmA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvdmVyZWVua29tZW4gbWV0IHBhdHJvb24gJHtXLnBhdHRlcm59YDtyZXR1cm5gT25nZWxkaWc6ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYE9uZ2VsZGlnIGdldGFsOiBtb2V0IGVlbiB2ZWVsdm91ZCB2YW4gJHtYLmRpdmlzb3J9IHppam5gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYE9uYmVrZW5kZSBrZXkke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gT25nZWxkaWdlIGtleSBpbiAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiT25nZWxkaWdlIGludm9lclwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBPbmdlbGRpZ2Ugd2FhcmRlIGluICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiT25nZWxkaWdlIGludm9lclwifX19O2Z1bmN0aW9uIEVxKCl7cmV0dXJue2xvY2FsZUVycm9yOnZ1KCl9fXZhciBDdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJ0ZWduXCIsdmVyYjpcIlx1MDBFNSBoYVwifSxmaWxlOnt1bml0OlwiYnl0ZXNcIix2ZXJiOlwiXHUwMEU1IGhhXCJ9LGFycmF5Ont1bml0OlwiZWxlbWVudGVyXCIsdmVyYjpcIlx1MDBFNSBpbm5laG9sZGVcIn0sc2V0Ont1bml0OlwiZWxlbWVudGVyXCIsdmVyYjpcIlx1MDBFNSBpbm5laG9sZGVcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcInRhbGxcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cImxpc3RlXCI7aWYoWD09PW51bGwpcmV0dXJuXCJudWxsXCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJpbnB1dFwiLGVtYWlsOlwiZS1wb3N0YWRyZXNzZVwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gZGF0by0gb2cga2xva2tlc2xldHRcIixkYXRlOlwiSVNPLWRhdG9cIix0aW1lOlwiSVNPLWtsb2trZXNsZXR0XCIsZHVyYXRpb246XCJJU08tdmFyaWdoZXRcIixpcHY0OlwiSVB2NC1vbXJcdTAwRTVkZVwiLGlwdjY6XCJJUHY2LW9tclx1MDBFNWRlXCIsY2lkcnY0OlwiSVB2NC1zcGVrdGVyXCIsY2lkcnY2OlwiSVB2Ni1zcGVrdGVyXCIsYmFzZTY0OlwiYmFzZTY0LWVua29kZXQgc3RyZW5nXCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsLWVua29kZXQgc3RyZW5nXCIsanNvbl9zdHJpbmc6XCJKU09OLXN0cmVuZ1wiLGUxNjQ6XCJFLjE2NC1udW1tZXJcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiaW5wdXRcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFVneWxkaWcgaW5wdXQ6IGZvcnZlbnRldCAke1guZXhwZWN0ZWR9LCBmaWtrICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBVZ3lsZGlnIHZlcmRpOiBmb3J2ZW50ZXQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7WC5vcmlnaW4/P1widmFsdWVcIn0gdGlsIFx1MDBFNSBoYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudGVyXCJ9YDtyZXR1cm5gRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke1gub3JpZ2luPz9cInZhbHVlXCJ9IHRpbCBcdTAwRTUgaGEgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRm9yIGxpdGUobik6IGZvcnZlbnRldCAke1gub3JpZ2lufSB0aWwgXHUwMEU1IGhhICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7WC5vcmlnaW59IHRpbCBcdTAwRTUgaGEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBVZ3lsZGlnIHN0cmVuZzogbVx1MDBFNSBzdGFydGUgbWVkIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBVZ3lsZGlnIHN0cmVuZzogbVx1MDBFNSBlbmRlIG1lZCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBVZ3lsZGlnIHN0cmVuZzogbVx1MDBFNSBpbm5laG9sZGUgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBVZ3lsZGlnIHN0cmVuZzogbVx1MDBFNSBtYXRjaGUgbVx1MDBGOG5zdGVyZXQgJHtXLnBhdHRlcm59YDtyZXR1cm5gVWd5bGRpZyAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBVZ3lsZGlnIHRhbGw6IG1cdTAwRTUgdlx1MDBFNnJlIGV0IG11bHRpcGx1bSBhdiAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYCR7WC5rZXlzLmxlbmd0aD4xP1wiVWtqZW50ZSBuXHUwMEY4a2xlclwiOlwiVWtqZW50IG5cdTAwRjhra2VsXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBVZ3lsZGlnIG5cdTAwRjhra2VsIGkgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlVneWxkaWcgaW5wdXRcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gVWd5bGRpZyB2ZXJkaSBpICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiVWd5bGRpZyBpbnB1dFwifX19O2Z1bmN0aW9uIGJxKCl7cmV0dXJue2xvY2FsZUVycm9yOkN1KCl9fXZhciBUdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJoYXJmXCIsdmVyYjpcIm9sbWFsXHUwMTMxZFx1MDEzMXJcIn0sZmlsZTp7dW5pdDpcImJheXRcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifSxhcnJheTp7dW5pdDpcInVuc3VyXCIsdmVyYjpcIm9sbWFsXHUwMTMxZFx1MDEzMXJcIn0sc2V0Ont1bml0OlwidW5zdXJcIix2ZXJiOlwib2xtYWxcdTAxMzFkXHUwMTMxclwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYXJhXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJzYWZcIjtpZihYPT09bnVsbClyZXR1cm5cImdheWJcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcImdpcmVuXCIsZW1haWw6XCJlcG9zdGFnXHUwMEUyaFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08gaGVuZ1x1MDBFMm1cdTAxMzFcIixkYXRlOlwiSVNPIHRhcmloaVwiLHRpbWU6XCJJU08gemFtYW5cdTAxMzFcIixkdXJhdGlvbjpcIklTTyBtXHUwMEZDZGRldGlcIixpcHY0OlwiSVB2NCBuaVx1MDE1Rlx1MDBFMm5cdTAxMzFcIixpcHY2OlwiSVB2NiBuaVx1MDE1Rlx1MDBFMm5cdTAxMzFcIixjaWRydjQ6XCJJUHY0IG1lbnppbGlcIixjaWRydjY6XCJJUHY2IG1lbnppbGlcIixiYXNlNjQ6XCJiYXNlNjQtXHUwMTVGaWZyZWxpIG1ldGluXCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsLVx1MDE1RmlmcmVsaSBtZXRpblwiLGpzb25fc3RyaW5nOlwiSlNPTiBtZXRpblwiLGUxNjQ6XCJFLjE2NCBzYXlcdTAxMzFzXHUwMTMxXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImdpcmVuXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBGXHUwMEUyc2l0IGdpcmVuOiB1bXVsYW4gJHtYLmV4cGVjdGVkfSwgYWxcdTAxMzFuYW4gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEZcdTAwRTJzaXQgZ2lyZW46IHVtdWxhbiAke3goWC52YWx1ZXNbMF0pfWA7cmV0dXJuYEZcdTAwRTJzaXQgdGVyY2loOiBtXHUwMEZCdGViZXJsZXIgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gRmF6bGEgYlx1MDBGQ3lcdTAwRkNrOiAke1gub3JpZ2luPz9cInZhbHVlXCJ9LCAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudHNcIn0gc2FoaXAgb2xtYWxcdTAxMzF5ZFx1MDEzMS5gO3JldHVybmBGYXpsYSBiXHUwMEZDeVx1MDBGQ2s6ICR7WC5vcmlnaW4/P1widmFsdWVcIn0sICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSBvbG1hbFx1MDEzMXlkXHUwMTMxLmB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYEZhemxhIGtcdTAwRkNcdTAwRTdcdTAwRkNrOiAke1gub3JpZ2lufSwgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fSBzYWhpcCBvbG1hbFx1MDEzMXlkXHUwMTMxLmA7cmV0dXJuYEZhemxhIGtcdTAwRkNcdTAwRTdcdTAwRkNrOiAke1gub3JpZ2lufSwgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsXHUwMTMxeWRcdTAxMzEuYH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBGXHUwMEUyc2l0IG1ldGluOiBcIiR7Vy5wcmVmaXh9XCIgaWxlIGJhXHUwMTVGbGFtYWxcdTAxMzEuYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYEZcdTAwRTJzaXQgbWV0aW46IFwiJHtXLnN1ZmZpeH1cIiBpbGUgYml0bWVsaS5gO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBGXHUwMEUyc2l0IG1ldGluOiBcIiR7Vy5pbmNsdWRlc31cIiBpaHRpdlx1MDBFMiBldG1lbGkuYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gRlx1MDBFMnNpdCBtZXRpbjogJHtXLnBhdHRlcm59IG5ha1x1MDE1Rlx1MDEzMW5hIHV5bWFsXHUwMTMxLmA7cmV0dXJuYEZcdTAwRTJzaXQgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gRlx1MDBFMnNpdCBzYXlcdTAxMzE6ICR7WC5kaXZpc29yfSBrYXRcdTAxMzEgb2xtYWxcdTAxMzF5ZFx1MDEzMS5gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFRhblx1MDEzMW5tYXlhbiBhbmFodGFyICR7WC5rZXlzLmxlbmd0aD4xP1wic1wiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1gub3JpZ2lufSBpXHUwMEU3aW4gdGFuXHUwMTMxbm1heWFuIGFuYWh0YXIgdmFyLmA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiR2lyZW4gdGFuXHUwMTMxbmFtYWRcdTAxMzEuXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59IGlcdTAwRTdpbiB0YW5cdTAxMzFubWF5YW4ga1x1MDEzMXltZXQgdmFyLmA7ZGVmYXVsdDpyZXR1cm5cIktcdTAxMzF5bWV0IHRhblx1MDEzMW5hbWFkXHUwMTMxLlwifX19O2Z1bmN0aW9uIF9xKCl7cmV0dXJue2xvY2FsZUVycm9yOlR1KCl9fXZhciB4dT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA2MkFcdTA2NDhcdTA2QTlcdTA2NEFcIix2ZXJiOlwiXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBXCJ9LGZpbGU6e3VuaXQ6XCJcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2N0NcdTA2MzNcIix2ZXJiOlwiXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBXCJ9LGFycmF5Ont1bml0OlwiXHUwNjJBXHUwNjQ4XHUwNkE5XHUwNjRBXCIsdmVyYjpcIlx1MDY0OFx1MDY0NFx1MDYzMVx1MDY0QVwifSxzZXQ6e3VuaXQ6XCJcdTA2MkFcdTA2NDhcdTA2QTlcdTA2NEFcIix2ZXJiOlwiXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA2MzlcdTA2MkZcdTA2MkZcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDYyN1x1MDYzMVx1MDZEMFwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNjRBXCIsZW1haWw6XCJcdTA2MjhcdTA2MzFcdTA2Q0NcdTA2OUFcdTA2NDZcdTA2MjdcdTA2NDRcdTA2Q0NcdTA2QTlcIix1cmw6XCJcdTA2Q0NcdTA2NDggXHUwNjIyXHUwNjMxIFx1MDYyN1x1MDY0NFwiLGVtb2ppOlwiXHUwNjI3XHUwNkNDXHUwNjQ1XHUwNjQ4XHUwNjJDXHUwNjRBXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiXHUwNjQ2XHUwNkNDXHUwNjdDXHUwNjQ3IFx1MDYyN1x1MDY0OCBcdTA2NDhcdTA2MkVcdTA2MkFcIixkYXRlOlwiXHUwNjQ2XHUwNkQwXHUwNjdDXHUwNjQ3XCIsdGltZTpcIlx1MDY0OFx1MDYyRVx1MDYyQVwiLGR1cmF0aW9uOlwiXHUwNjQ1XHUwNjQ4XHUwNjJGXHUwNjQ3XCIsaXB2NDpcIlx1MDYyRiBJUHY0IFx1MDY3RVx1MDYyQVx1MDY0N1wiLGlwdjY6XCJcdTA2MkYgSVB2NiBcdTA2N0VcdTA2MkFcdTA2NDdcIixjaWRydjQ6XCJcdTA2MkYgSVB2NCBcdTA2MzNcdTA2MjdcdTA2MkRcdTA2NDdcIixjaWRydjY6XCJcdTA2MkYgSVB2NiBcdTA2MzNcdTA2MjdcdTA2MkRcdTA2NDdcIixiYXNlNjQ6XCJiYXNlNjQtZW5jb2RlZCBcdTA2NDVcdTA2MkFcdTA2NDZcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtZW5jb2RlZCBcdTA2NDVcdTA2MkFcdTA2NDZcIixqc29uX3N0cmluZzpcIkpTT04gXHUwNjQ1XHUwNjJBXHUwNjQ2XCIsZTE2NDpcIlx1MDYyRiBFLjE2NCBcdTA2MzRcdTA2NDVcdTA2RDBcdTA2MzFcdTA2NDdcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNjRBXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNjRBOiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHtYLmV4cGVjdGVkfSBcdTA2NDhcdTA2MjdcdTA2Q0MsIFx1MDY0NVx1MDZBQlx1MDYzMSAke0ooWC5pbnB1dCl9IFx1MDYyQVx1MDYzMVx1MDY0NFx1MDYyN1x1MDYzM1x1MDY0NyBcdTA2MzRcdTA2NDhgO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ4XHUwNjMxXHUwNjQ4XHUwNjJGXHUwNjRBOiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHt4KFgudmFsdWVzWzBdKX0gXHUwNjQ4XHUwNjI3XHUwNkNDYDtyZXR1cm5gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1IFx1MDYyN1x1MDY0Nlx1MDYyQVx1MDYyRVx1MDYyN1x1MDYyODogXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGIFx1MDZDQ1x1MDY0OCBcdTA2NDRcdTA2NDcgJHtQKFgudmFsdWVzLFwifFwiKX0gXHUwNjg1XHUwNjJFXHUwNjQ3IFx1MDY0OFx1MDYyN1x1MDZDQ2A7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTA2ODlcdTA2Q0NcdTA2MzEgXHUwNjQ0XHUwNjQ4XHUwNkNDOiAke1gub3JpZ2luPz9cIlx1MDYyN1x1MDYzMVx1MDYzMlx1MDY5QVx1MDYyQVwifSBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMVx1MDY0OFx1MDY0Nlx1MDY0N1wifSBcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFgO3JldHVybmBcdTA2ODlcdTA2Q0NcdTA2MzEgXHUwNjQ0XHUwNjQ4XHUwNkNDOiAke1gub3JpZ2luPz9cIlx1MDYyN1x1MDYzMVx1MDYzMlx1MDY5QVx1MDYyQVwifSBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IFx1MDY0OFx1MDY0QWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDY4OVx1MDZDQ1x1MDYzMSBcdTA2QTlcdTA2NDhcdTA2ODZcdTA2NDZcdTA2Q0M6ICR7WC5vcmlnaW59IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9IFx1MDY0OFx1MDY0NFx1MDYzMVx1MDY0QWA7cmV0dXJuYFx1MDY4OVx1MDZDQ1x1MDYzMSBcdTA2QTlcdTA2NDhcdTA2ODZcdTA2NDZcdTA2Q0M6ICR7WC5vcmlnaW59IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gXHUwNjQ4XHUwNjRBYH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ1XHUwNjJBXHUwNjQ2OiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjJGIFwiJHtXLnByZWZpeH1cIiBcdTA2MzNcdTA2MzFcdTA2NDcgXHUwNjdFXHUwNkNDXHUwNjQ0IFx1MDYzNFx1MDY0QWA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ1XHUwNjJBXHUwNjQ2OiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXHUwNjJGIFwiJHtXLnN1ZmZpeH1cIiBcdTA2MzNcdTA2MzFcdTA2NDcgXHUwNjdFXHUwNjI3XHUwNkNDIFx1MDYyQVx1MDY0NyBcdTA2NDhcdTA2MzFcdTA2MzNcdTA2NEFcdTA2OTZcdTA2NEFgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNjQ1XHUwNjJBXHUwNjQ2OiBcdTA2MjhcdTA2MjdcdTA2Q0NcdTA2MkYgXCIke1cuaW5jbHVkZXN9XCIgXHUwNjQ4XHUwNjQ0XHUwNjMxXHUwNjRBYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1IFx1MDY0NVx1MDYyQVx1MDY0NjogXHUwNjI4XHUwNjI3XHUwNkNDXHUwNjJGIFx1MDYyRiAke1cucGF0dGVybn0gXHUwNjMzXHUwNjMxXHUwNjQ3IFx1MDY0NVx1MDYzN1x1MDYyN1x1MDYyOFx1MDY0Mlx1MDYyQSBcdTA2NDhcdTA2NDRcdTA2MzFcdTA2NEFgO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1IFx1MDYyRlx1MDZDQ2B9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSBcdTA2MzlcdTA2MkZcdTA2MkY6IFx1MDYyOFx1MDYyN1x1MDZDQ1x1MDYyRiBcdTA2MkYgJHtYLmRpdmlzb3J9IFx1MDY0NVx1MDYzNlx1MDYzMVx1MDYyOCBcdTA2NDhcdTA2NEFgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NSAke1gua2V5cy5sZW5ndGg+MT9cIlx1MDZBOVx1MDY0NFx1MDZDQ1x1MDY4OVx1MDY0OFx1MDY0Nlx1MDY0N1wiOlwiXHUwNkE5XHUwNjQ0XHUwNkNDXHUwNjg5XCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA2NDZcdTA2MjdcdTA2MzNcdTA2NDUgXHUwNkE5XHUwNjQ0XHUwNkNDXHUwNjg5IFx1MDY3RVx1MDY0NyAke1gub3JpZ2lufSBcdTA2QTlcdTA2RDBgO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDY0Nlx1MDYyN1x1MDYzM1x1MDY0NVx1MDY0NyBcdTA2NDhcdTA2MzFcdTA2NDhcdTA2MkZcdTA2NEFcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1IFx1MDYzOVx1MDY0Nlx1MDYzNVx1MDYzMSBcdTA2N0VcdTA2NDcgJHtYLm9yaWdpbn0gXHUwNkE5XHUwNkQwYDtkZWZhdWx0OnJldHVyblwiXHUwNjQ2XHUwNjI3XHUwNjMzXHUwNjQ1XHUwNjQ3IFx1MDY0OFx1MDYzMVx1MDY0OFx1MDYyRlx1MDY0QVwifX19O2Z1bmN0aW9uIFNxKCl7cmV0dXJue2xvY2FsZUVycm9yOnh1KCl9fXZhciBmdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJ6bmFrXHUwMEYzd1wiLHZlcmI6XCJtaWVcdTAxMDdcIn0sZmlsZTp7dW5pdDpcImJhanRcdTAwRjN3XCIsdmVyYjpcIm1pZVx1MDEwN1wifSxhcnJheTp7dW5pdDpcImVsZW1lbnRcdTAwRjN3XCIsdmVyYjpcIm1pZVx1MDEwN1wifSxzZXQ6e3VuaXQ6XCJlbGVtZW50XHUwMEYzd1wiLHZlcmI6XCJtaWVcdTAxMDdcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcImxpY3piYVwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwidGFibGljYVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4Olwid3lyYVx1MDE3Q2VuaWVcIixlbWFpbDpcImFkcmVzIGVtYWlsXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdGEgaSBnb2R6aW5hIHcgZm9ybWFjaWUgSVNPXCIsZGF0ZTpcImRhdGEgdyBmb3JtYWNpZSBJU09cIix0aW1lOlwiZ29kemluYSB3IGZvcm1hY2llIElTT1wiLGR1cmF0aW9uOlwiY3phcyB0cndhbmlhIElTT1wiLGlwdjQ6XCJhZHJlcyBJUHY0XCIsaXB2NjpcImFkcmVzIElQdjZcIixjaWRydjQ6XCJ6YWtyZXMgSVB2NFwiLGNpZHJ2NjpcInpha3JlcyBJUHY2XCIsYmFzZTY0OlwiY2lcdTAxMDVnIHpuYWtcdTAwRjN3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjRcIixiYXNlNjR1cmw6XCJjaVx1MDEwNWcgem5ha1x1MDBGM3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiY2lcdTAxMDVnIHpuYWtcdTAwRjN3IHcgZm9ybWFjaWUgSlNPTlwiLGUxNjQ6XCJsaWN6YmEgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwid2VqXHUwMTVCY2llXCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBOaWVwcmF3aWRcdTAxNDJvd2UgZGFuZSB3ZWpcdTAxNUJjaW93ZTogb2N6ZWtpd2FubyAke1guZXhwZWN0ZWR9LCBvdHJ6eW1hbm8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93ZSBkYW5lIHdlalx1MDE1QmNpb3dlOiBvY3pla2l3YW5vICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3dhIG9wY2phOiBvY3pla2l3YW5vIGplZG5laiB6IHdhcnRvXHUwMTVCY2kgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gWmEgZHVcdTAxN0NhIHdhcnRvXHUwMTVCXHUwMTA3OiBvY3pla2l3YW5vLCBcdTAxN0NlICR7WC5vcmlnaW4/P1wid2FydG9cdTAxNUJcdTAxMDdcIn0gYlx1MDExOWR6aWUgbWllXHUwMTA3ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50XHUwMEYzd1wifWA7cmV0dXJuYFpieXQgZHVcdTAxN0MoeS9hL2UpOiBvY3pla2l3YW5vLCBcdTAxN0NlICR7WC5vcmlnaW4/P1wid2FydG9cdTAxNUJcdTAxMDdcIn0gYlx1MDExOWR6aWUgd3lub3NpXHUwMTA3ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFphIG1hXHUwMTQyYSB3YXJ0b1x1MDE1Qlx1MDEwNzogb2N6ZWtpd2FubywgXHUwMTdDZSAke1gub3JpZ2luPz9cIndhcnRvXHUwMTVCXHUwMTA3XCJ9IGJcdTAxMTlkemllIG1pZVx1MDEwNyAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiZWxlbWVudFx1MDBGM3dcIn1gO3JldHVybmBaYnl0IG1hXHUwMTQyKHkvYS9lKTogb2N6ZWtpd2FubywgXHUwMTdDZSAke1gub3JpZ2luPz9cIndhcnRvXHUwMTVCXHUwMTA3XCJ9IGJcdTAxMTlkemllIHd5bm9zaVx1MDEwNyAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93eSBjaVx1MDEwNWcgem5ha1x1MDBGM3c6IG11c2kgemFjenluYVx1MDEwNyBzaVx1MDExOSBvZCBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3d5IGNpXHUwMTA1ZyB6bmFrXHUwMEYzdzogbXVzaSBrb1x1MDE0NGN6eVx1MDEwNyBzaVx1MDExOSBuYSBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBOaWVwcmF3aWRcdTAxNDJvd3kgY2lcdTAxMDVnIHpuYWtcdTAwRjN3OiBtdXNpIHphd2llcmFcdTAxMDcgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBOaWVwcmF3aWRcdTAxNDJvd3kgY2lcdTAxMDVnIHpuYWtcdTAwRjN3OiBtdXNpIG9kcG93aWFkYVx1MDEwNyB3em9yY293aSAke1cucGF0dGVybn1gO3JldHVybmBOaWVwcmF3aWRcdTAxNDJvdyh5L2EvZSkgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3dhIGxpY3piYTogbXVzaSBieVx1MDEwNyB3aWVsb2tyb3Rub1x1MDE1QmNpXHUwMTA1ICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gTmllcm96cG96bmFuZSBrbHVjemUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gTmllcHJhd2lkXHUwMTQyb3d5IGtsdWN6IHcgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIk5pZXByYXdpZFx1MDE0Mm93ZSBkYW5lIHdlalx1MDE1QmNpb3dlXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYE5pZXByYXdpZFx1MDE0Mm93YSB3YXJ0b1x1MDE1Qlx1MDEwNyB3ICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiTmllcHJhd2lkXHUwMTQyb3dlIGRhbmUgd2VqXHUwMTVCY2lvd2VcIn19fTtmdW5jdGlvbiBrcSgpe3JldHVybntsb2NhbGVFcnJvcjpmdSgpfX12YXIgeXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiY2FyYWN0ZXJlc1wiLHZlcmI6XCJ0ZXJcIn0sZmlsZTp7dW5pdDpcImJ5dGVzXCIsdmVyYjpcInRlclwifSxhcnJheTp7dW5pdDpcIml0ZW5zXCIsdmVyYjpcInRlclwifSxzZXQ6e3VuaXQ6XCJpdGVuc1wiLHZlcmI6XCJ0ZXJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcIm5cdTAwRkFtZXJvXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsb1wiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwicGFkclx1MDBFM29cIixlbWFpbDpcImVuZGVyZVx1MDBFN28gZGUgZS1tYWlsXCIsdXJsOlwiVVJMXCIsZW1vamk6XCJlbW9qaVwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcImRhdGEgZSBob3JhIElTT1wiLGRhdGU6XCJkYXRhIElTT1wiLHRpbWU6XCJob3JhIElTT1wiLGR1cmF0aW9uOlwiZHVyYVx1MDBFN1x1MDBFM28gSVNPXCIsaXB2NDpcImVuZGVyZVx1MDBFN28gSVB2NFwiLGlwdjY6XCJlbmRlcmVcdTAwRTdvIElQdjZcIixjaWRydjQ6XCJmYWl4YSBkZSBJUHY0XCIsY2lkcnY2OlwiZmFpeGEgZGUgSVB2NlwiLGJhc2U2NDpcInRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0XCIsYmFzZTY0dXJsOlwiVVJMIGNvZGlmaWNhZGEgZW0gYmFzZTY0XCIsanNvbl9zdHJpbmc6XCJ0ZXh0byBKU09OXCIsZTE2NDpcIm5cdTAwRkFtZXJvIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcImVudHJhZGFcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFRpcG8gaW52XHUwMEUxbGlkbzogZXNwZXJhZG8gJHtYLmV4cGVjdGVkfSwgcmVjZWJpZG8gJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYEVudHJhZGEgaW52XHUwMEUxbGlkYTogZXNwZXJhZG8gJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPcFx1MDBFN1x1MDBFM28gaW52XHUwMEUxbGlkYTogZXNwZXJhZGEgdW1hIGRhcyAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke1gub3JpZ2luPz9cInZhbG9yXCJ9IHRpdmVzc2UgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cImVsZW1lbnRvc1wifWA7cmV0dXJuYE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7WC5vcmlnaW4/P1widmFsb3JcIn0gZm9zc2UgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7WC5vcmlnaW59IHRpdmVzc2UgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke1gub3JpZ2lufSBmb3NzZSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFRleHRvIGludlx1MDBFMWxpZG86IGRldmUgY29tZVx1MDBFN2FyIGNvbSBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gVGV4dG8gaW52XHUwMEUxbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gVGV4dG8gaW52XHUwMEUxbGlkbzogZGV2ZSBpbmNsdWlyIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gVGV4dG8gaW52XHUwMEUxbGlkbzogZGV2ZSBjb3JyZXNwb25kZXIgYW8gcGFkclx1MDBFM28gJHtXLnBhdHRlcm59YDtyZXR1cm5gJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9IGludlx1MDBFMWxpZG9gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOXHUwMEZBbWVybyBpbnZcdTAwRTFsaWRvOiBkZXZlIHNlciBtXHUwMEZBbHRpcGxvIGRlICR7WC5kaXZpc29yfWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gQ2hhdmUke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifSBkZXNjb25oZWNpZGEke1gua2V5cy5sZW5ndGg+MT9cInNcIjpcIlwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gQ2hhdmUgaW52XHUwMEUxbGlkYSBlbSAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiRW50cmFkYSBpbnZcdTAwRTFsaWRhXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFZhbG9yIGludlx1MDBFMWxpZG8gZW0gJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJDYW1wbyBpbnZcdTAwRTFsaWRvXCJ9fX07ZnVuY3Rpb24gdnEoKXtyZXR1cm57bG9jYWxlRXJyb3I6eXUoKX19ZnVuY3Rpb24gQU0oJCxRLEosWSl7bGV0IFg9TWF0aC5hYnMoJCksVz1YJTEwLEc9WCUxMDA7aWYoRz49MTEmJkc8PTE5KXJldHVybiBZO2lmKFc9PT0xKXJldHVybiBRO2lmKFc+PTImJlc8PTQpcmV0dXJuIEo7cmV0dXJuIFl9dmFyIGd1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDp7b25lOlwiXHUwNDQxXHUwNDM4XHUwNDNDXHUwNDMyXHUwNDNFXHUwNDNCXCIsZmV3OlwiXHUwNDQxXHUwNDM4XHUwNDNDXHUwNDMyXHUwNDNFXHUwNDNCXHUwNDMwXCIsbWFueTpcIlx1MDQ0MVx1MDQzOFx1MDQzQ1x1MDQzMlx1MDQzRVx1MDQzQlx1MDQzRVx1MDQzMlwifSx2ZXJiOlwiXHUwNDM4XHUwNDNDXHUwNDM1XHUwNDQyXHUwNDRDXCJ9LGZpbGU6e3VuaXQ6e29uZTpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0MlwiLGZldzpcIlx1MDQzMVx1MDQzMFx1MDQzOVx1MDQ0Mlx1MDQzMFwiLG1hbnk6XCJcdTA0MzFcdTA0MzBcdTA0MzlcdTA0NDJcIn0sdmVyYjpcIlx1MDQzOFx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0Q1wifSxhcnJheTp7dW5pdDp7b25lOlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXCIsZmV3OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDMwXCIsbWFueTpcIlx1MDQ0RFx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQzRVx1MDQzMlwifSx2ZXJiOlwiXHUwNDM4XHUwNDNDXHUwNDM1XHUwNDQyXHUwNDRDXCJ9LHNldDp7dW5pdDp7b25lOlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXCIsZmV3OlwiXHUwNDREXHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDMwXCIsbWFueTpcIlx1MDQ0RFx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQzRVx1MDQzMlwifSx2ZXJiOlwiXHUwNDM4XHUwNDNDXHUwNDM1XHUwNDQyXHUwNDRDXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA0NDdcdTA0MzhcdTA0NDFcdTA0M0JcdTA0M0VcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDQzQ1x1MDQzMFx1MDQ0MVx1MDQ0MVx1MDQzOFx1MDQzMlwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwNDMyXHUwNDMyXHUwNDNFXHUwNDM0XCIsZW1haWw6XCJlbWFpbCBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1MDQ0RFx1MDQzQ1x1MDQzRVx1MDQzNFx1MDQzN1x1MDQzOFwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTTyBcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzAgXHUwNDM4IFx1MDQzMlx1MDQ0MFx1MDQzNVx1MDQzQ1x1MDQ0RlwiLGRhdGU6XCJJU08gXHUwNDM0XHUwNDMwXHUwNDQyXHUwNDMwXCIsdGltZTpcIklTTyBcdTA0MzJcdTA0NDBcdTA0MzVcdTA0M0NcdTA0NEZcIixkdXJhdGlvbjpcIklTTyBcdTA0MzRcdTA0M0JcdTA0MzhcdTA0NDJcdTA0MzVcdTA0M0JcdTA0NENcdTA0M0RcdTA0M0VcdTA0NDFcdTA0NDJcdTA0NENcIixpcHY0OlwiSVB2NCBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcIixpcHY2OlwiSVB2NiBcdTA0MzBcdTA0MzRcdTA0NDBcdTA0MzVcdTA0NDFcIixjaWRydjQ6XCJJUHY0IFx1MDQzNFx1MDQzOFx1MDQzMFx1MDQzRlx1MDQzMFx1MDQzN1x1MDQzRVx1MDQzRFwiLGNpZHJ2NjpcIklQdjYgXHUwNDM0XHUwNDM4XHUwNDMwXHUwNDNGXHUwNDMwXHUwNDM3XHUwNDNFXHUwNDNEXCIsYmFzZTY0OlwiXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwIFx1MDQzMiBcdTA0NDRcdTA0M0VcdTA0NDBcdTA0M0NcdTA0MzBcdTA0NDJcdTA0MzUgYmFzZTY0XCIsYmFzZTY0dXJsOlwiXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwIFx1MDQzMiBcdTA0NDRcdTA0M0VcdTA0NDBcdTA0M0NcdTA0MzBcdTA0NDJcdTA0MzUgYmFzZTY0dXJsXCIsanNvbl9zdHJpbmc6XCJKU09OIFx1MDQ0MVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzQVx1MDQzMFwiLGUxNjQ6XCJcdTA0M0RcdTA0M0VcdTA0M0NcdTA0MzVcdTA0NDAgRS4xNjRcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHUwNDMyXHUwNDMyXHUwNDNFXHUwNDM0XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0NEJcdTA0MzkgXHUwNDMyXHUwNDMyXHUwNDNFXHUwNDM0OiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMgJHtYLmV4cGVjdGVkfSwgXHUwNDNGXHUwNDNFXHUwNDNCXHUwNDQzXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDNFICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0NEJcdTA0MzkgXHUwNDMyXHUwNDMyXHUwNDNFXHUwNDM0OiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0NEJcdTA0MzkgXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDM4XHUwNDMwXHUwNDNEXHUwNDQyOiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMgXHUwNDNFXHUwNDM0XHUwNDNEXHUwNDNFIFx1MDQzOFx1MDQzNyAke1AoWC52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgVz1YLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsRz1RKFgub3JpZ2luKTtpZihHKXtsZXQgVT1OdW1iZXIoWC5tYXhpbXVtKSxIPUFNKFUsRy51bml0Lm9uZSxHLnVuaXQuZmV3LEcudW5pdC5tYW55KTtyZXR1cm5gXHUwNDIxXHUwNDNCXHUwNDM4XHUwNDQ4XHUwNDNBXHUwNDNFXHUwNDNDIFx1MDQzMVx1MDQzRVx1MDQzQlx1MDQ0Q1x1MDQ0OFx1MDQzRVx1MDQzNSBcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzU6IFx1MDQzRVx1MDQzNlx1MDQzOFx1MDQzNFx1MDQzMFx1MDQzQlx1MDQzRVx1MDQ0MVx1MDQ0QywgXHUwNDQ3XHUwNDQyXHUwNDNFICR7WC5vcmlnaW4/P1wiXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDM4XHUwNDM1XCJ9IFx1MDQzMVx1MDQ0M1x1MDQzNFx1MDQzNVx1MDQ0MiBcdTA0MzhcdTA0M0NcdTA0MzVcdTA0NDJcdTA0NEMgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7SH1gfXJldHVybmBcdTA0MjFcdTA0M0JcdTA0MzhcdTA0NDhcdTA0M0FcdTA0M0VcdTA0M0MgXHUwNDMxXHUwNDNFXHUwNDNCXHUwNDRDXHUwNDQ4XHUwNDNFXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQzNTogXHUwNDNFXHUwNDM2XHUwNDM4XHUwNDM0XHUwNDMwXHUwNDNCXHUwNDNFXHUwNDQxXHUwNDRDLCBcdTA0NDdcdTA0NDJcdTA0M0UgJHtYLm9yaWdpbj8/XCJcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzVcIn0gXHUwNDMxXHUwNDQzXHUwNDM0XHUwNDM1XHUwNDQyICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpe2xldCBVPU51bWJlcihYLm1pbmltdW0pLEg9QU0oVSxHLnVuaXQub25lLEcudW5pdC5mZXcsRy51bml0Lm1hbnkpO3JldHVybmBcdTA0MjFcdTA0M0JcdTA0MzhcdTA0NDhcdTA0M0FcdTA0M0VcdTA0M0MgXHUwNDNDXHUwNDMwXHUwNDNCXHUwNDM1XHUwNDNEXHUwNDRDXHUwNDNBXHUwNDNFXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQzNTogXHUwNDNFXHUwNDM2XHUwNDM4XHUwNDM0XHUwNDMwXHUwNDNCXHUwNDNFXHUwNDQxXHUwNDRDLCBcdTA0NDdcdTA0NDJcdTA0M0UgJHtYLm9yaWdpbn0gXHUwNDMxXHUwNDQzXHUwNDM0XHUwNDM1XHUwNDQyIFx1MDQzOFx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0QyAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtIfWB9cmV0dXJuYFx1MDQyMVx1MDQzQlx1MDQzOFx1MDQ0OFx1MDQzQVx1MDQzRVx1MDQzQyBcdTA0M0NcdTA0MzBcdTA0M0JcdTA0MzVcdTA0M0RcdTA0NENcdTA0M0FcdTA0M0VcdTA0MzUgXHUwNDM3XHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM1XHUwNDNEXHUwNDM4XHUwNDM1OiBcdTA0M0VcdTA0MzZcdTA0MzhcdTA0MzRcdTA0MzBcdTA0M0JcdTA0M0VcdTA0NDFcdTA0NEMsIFx1MDQ0N1x1MDQ0Mlx1MDQzRSAke1gub3JpZ2lufSBcdTA0MzFcdTA0NDNcdTA0MzRcdTA0MzVcdTA0NDIgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0MzBcdTA0NEYgXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDNFXHUwNDNBXHUwNDMwOiBcdTA0MzRcdTA0M0VcdTA0M0JcdTA0MzZcdTA0M0RcdTA0MzAgXHUwNDNEXHUwNDMwXHUwNDQ3XHUwNDM4XHUwNDNEXHUwNDMwXHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGIFx1MDQ0MSBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDMwXHUwNDRGIFx1MDQ0MVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzQVx1MDQzMDogXHUwNDM0XHUwNDNFXHUwNDNCXHUwNDM2XHUwNDNEXHUwNDMwIFx1MDQzN1x1MDQzMFx1MDQzQVx1MDQzMFx1MDQzRFx1MDQ0N1x1MDQzOFx1MDQzMlx1MDQzMFx1MDQ0Mlx1MDQ0Q1x1MDQ0MVx1MDQ0RiBcdTA0M0RcdTA0MzAgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDMwXHUwNDRGIFx1MDQ0MVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzQVx1MDQzMDogXHUwNDM0XHUwNDNFXHUwNDNCXHUwNDM2XHUwNDNEXHUwNDMwIFx1MDQ0MVx1MDQzRVx1MDQzNFx1MDQzNVx1MDQ0MFx1MDQzNlx1MDQzMFx1MDQ0Mlx1MDQ0QyBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQzMFx1MDQ0RiBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0M0VcdTA0M0FcdTA0MzA6IFx1MDQzNFx1MDQzRVx1MDQzQlx1MDQzNlx1MDQzRFx1MDQzMCBcdTA0NDFcdTA0M0VcdTA0M0VcdTA0NDJcdTA0MzJcdTA0MzVcdTA0NDJcdTA0NDFcdTA0NDJcdTA0MzJcdTA0M0VcdTA0MzJcdTA0MzBcdTA0NDJcdTA0NEMgXHUwNDQ4XHUwNDMwXHUwNDMxXHUwNDNCXHUwNDNFXHUwNDNEXHUwNDQzICR7Vy5wYXR0ZXJufWA7cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQ0Qlx1MDQzOSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0MzJcdTA0MzVcdTA0NDBcdTA0M0RcdTA0M0VcdTA0MzUgXHUwNDQ3XHUwNDM4XHUwNDQxXHUwNDNCXHUwNDNFOiBcdTA0MzRcdTA0M0VcdTA0M0JcdTA0MzZcdTA0M0RcdTA0M0UgXHUwNDMxXHUwNDRCXHUwNDQyXHUwNDRDIFx1MDQzQVx1MDQ0MFx1MDQzMFx1MDQ0Mlx1MDQzRFx1MDQ0Qlx1MDQzQyAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzRlx1MDQzRVx1MDQzN1x1MDQzRFx1MDQzMFx1MDQzRFx1MDQzRCR7WC5rZXlzLmxlbmd0aD4xP1wiXHUwNDRCXHUwNDM1XCI6XCJcdTA0NEJcdTA0MzlcIn0gXHUwNDNBXHUwNDNCXHUwNDRFXHUwNDQ3JHtYLmtleXMubGVuZ3RoPjE/XCJcdTA0MzhcIjpcIlwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDRCXHUwNDM5IFx1MDQzQVx1MDQzQlx1MDQ0RVx1MDQ0NyBcdTA0MzIgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQ0Qlx1MDQzNSBcdTA0MzJcdTA0NDVcdTA0M0VcdTA0MzRcdTA0M0RcdTA0NEJcdTA0MzUgXHUwNDM0XHUwNDMwXHUwNDNEXHUwNDNEXHUwNDRCXHUwNDM1XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzRFx1MDQzRVx1MDQzNSBcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzUgXHUwNDMyICR7WC5vcmlnaW59YDtkZWZhdWx0OnJldHVyblwiXHUwNDFEXHUwNDM1XHUwNDMyXHUwNDM1XHUwNDQwXHUwNDNEXHUwNDRCXHUwNDM1IFx1MDQzMlx1MDQ0NVx1MDQzRVx1MDQzNFx1MDQzRFx1MDQ0Qlx1MDQzNSBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NEJcdTA0MzVcIn19fTtmdW5jdGlvbiBDcSgpe3JldHVybntsb2NhbGVFcnJvcjpndSgpfX12YXIgaHU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0Olwiem5ha292XCIsdmVyYjpcImltZXRpXCJ9LGZpbGU6e3VuaXQ6XCJiYWp0b3ZcIix2ZXJiOlwiaW1ldGlcIn0sYXJyYXk6e3VuaXQ6XCJlbGVtZW50b3ZcIix2ZXJiOlwiaW1ldGlcIn0sc2V0Ont1bml0OlwiZWxlbWVudG92XCIsdmVyYjpcImltZXRpXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTAxNjF0ZXZpbG9cIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cInRhYmVsYVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4Olwidm5vc1wiLGVtYWlsOlwiZS1wb1x1MDE2MXRuaSBuYXNsb3ZcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIGRhdHVtIGluIFx1MDEwRGFzXCIsZGF0ZTpcIklTTyBkYXR1bVwiLHRpbWU6XCJJU08gXHUwMTBEYXNcIixkdXJhdGlvbjpcIklTTyB0cmFqYW5qZVwiLGlwdjQ6XCJJUHY0IG5hc2xvdlwiLGlwdjY6XCJJUHY2IG5hc2xvdlwiLGNpZHJ2NDpcIm9ic2VnIElQdjRcIixjaWRydjY6XCJvYnNlZyBJUHY2XCIsYmFzZTY0OlwiYmFzZTY0IGtvZGlyYW4gbml6XCIsYmFzZTY0dXJsOlwiYmFzZTY0dXJsIGtvZGlyYW4gbml6XCIsanNvbl9zdHJpbmc6XCJKU09OIG5pelwiLGUxNjQ6XCJFLjE2NCBcdTAxNjF0ZXZpbGthXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcInZub3NcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYE5ldmVsamF2ZW4gdm5vczogcHJpXHUwMTBEYWtvdmFubyAke1guZXhwZWN0ZWR9LCBwcmVqZXRvICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBOZXZlbGphdmVuIHZub3M6IHByaVx1MDEwRGFrb3Zhbm8gJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBOZXZlbGphdm5hIG1vXHUwMTdFbm9zdDogcHJpXHUwMTBEYWtvdmFubyBlbm8gaXptZWQgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gUHJldmVsaWtvOiBwcmlcdTAxMERha292YW5vLCBkYSBibyAke1gub3JpZ2luPz9cInZyZWRub3N0XCJ9IGltZWxvICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50b3ZcIn1gO3JldHVybmBQcmV2ZWxpa286IHByaVx1MDEwRGFrb3Zhbm8sIGRhIGJvICR7WC5vcmlnaW4/P1widnJlZG5vc3RcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gUHJlbWFqaG5vOiBwcmlcdTAxMERha292YW5vLCBkYSBibyAke1gub3JpZ2lufSBpbWVsbyAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gUHJlbWFqaG5vOiBwcmlcdTAxMERha292YW5vLCBkYSBibyAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIHphXHUwMTBEZXRpIHogXCIke1cucHJlZml4fVwiYDtpZihXLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIGtvblx1MDEwRGF0aSB6IFwiJHtXLnN1ZmZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYE5ldmVsamF2ZW4gbml6OiBtb3JhIHVzdHJlemF0aSB2em9yY3UgJHtXLnBhdHRlcm59YDtyZXR1cm5gTmV2ZWxqYXZlbiAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBOZXZlbGphdm5vIFx1MDE2MXRldmlsbzogbW9yYSBiaXRpIHZlXHUwMTBEa3JhdG5payAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYE5lcHJlcG96bmFuJHtYLmtleXMubGVuZ3RoPjE/XCJpIGtsanVcdTAxMERpXCI6XCIga2xqdVx1MDEwRFwifTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gTmV2ZWxqYXZlbiBrbGp1XHUwMTBEIHYgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIk5ldmVsamF2ZW4gdm5vc1wiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBOZXZlbGphdm5hIHZyZWRub3N0IHYgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJOZXZlbGphdmVuIHZub3NcIn19fTtmdW5jdGlvbiBUcSgpe3JldHVybntsb2NhbGVFcnJvcjpodSgpfX12YXIgdXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwidGVja2VuXCIsdmVyYjpcImF0dCBoYVwifSxmaWxlOnt1bml0OlwiYnl0ZXNcIix2ZXJiOlwiYXR0IGhhXCJ9LGFycmF5Ont1bml0Olwib2JqZWt0XCIsdmVyYjpcImF0dCBpbm5laFx1MDBFNWxsYVwifSxzZXQ6e3VuaXQ6XCJvYmpla3RcIix2ZXJiOlwiYXR0IGlubmVoXHUwMEU1bGxhXCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJhbnRhbFwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KFgpKXJldHVyblwibGlzdGFcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcInJlZ3Vsalx1MDBFNHJ0IHV0dHJ5Y2tcIixlbWFpbDpcImUtcG9zdGFkcmVzc1wiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJJU08tZGF0dW0gb2NoIHRpZFwiLGRhdGU6XCJJU08tZGF0dW1cIix0aW1lOlwiSVNPLXRpZFwiLGR1cmF0aW9uOlwiSVNPLXZhcmFrdGlnaGV0XCIsaXB2NDpcIklQdjQtaW50ZXJ2YWxsXCIsaXB2NjpcIklQdjYtaW50ZXJ2YWxsXCIsY2lkcnY0OlwiSVB2NC1zcGVrdHJ1bVwiLGNpZHJ2NjpcIklQdjYtc3Bla3RydW1cIixiYXNlNjQ6XCJiYXNlNjQta29kYWQgc3RyXHUwMEU0bmdcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwta29kYWQgc3RyXHUwMEU0bmdcIixqc29uX3N0cmluZzpcIkpTT04tc3RyXHUwMEU0bmdcIixlMTY0OlwiRS4xNjQtbnVtbWVyXCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIm1hbGwtbGl0ZXJhbFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gT2dpbHRpZyBpbm1hdG5pbmc6IGZcdTAwRjZydlx1MDBFNG50YXQgJHtYLmV4cGVjdGVkfSwgZmljayAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gT2dpbHRpZyBpbm1hdG5pbmc6IGZcdTAwRjZydlx1MDBFNG50YXQgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBPZ2lsdGlndCB2YWw6IGZcdTAwRjZydlx1MDBFNG50YWRlIGVuIGF2ICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYEZcdTAwRjZyIHN0b3IodCk6IGZcdTAwRjZydlx1MDBFNG50YWRlICR7WC5vcmlnaW4/P1widlx1MDBFNHJkZXRcIn0gYXR0IGhhICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJlbGVtZW50XCJ9YDtyZXR1cm5gRlx1MDBGNnIgc3Rvcih0KTogZlx1MDBGNnJ2XHUwMEU0bnRhdCAke1gub3JpZ2luPz9cInZcdTAwRTRyZGV0XCJ9IGF0dCBoYSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBGXHUwMEY2ciBsaXRlKHQpOiBmXHUwMEY2cnZcdTAwRTRudGFkZSAke1gub3JpZ2luPz9cInZcdTAwRTRyZGV0XCJ9IGF0dCBoYSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gRlx1MDBGNnIgbGl0ZSh0KTogZlx1MDBGNnJ2XHUwMEU0bnRhZGUgJHtYLm9yaWdpbj8/XCJ2XHUwMEU0cmRldFwifSBhdHQgaGEgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBPZ2lsdGlnIHN0clx1MDBFNG5nOiBtXHUwMEU1c3RlIGJcdTAwRjZyamEgbWVkIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBPZ2lsdGlnIHN0clx1MDBFNG5nOiBtXHUwMEU1c3RlIHNsdXRhIG1lZCBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBPZ2lsdGlnIHN0clx1MDBFNG5nOiBtXHUwMEU1c3RlIGlubmVoXHUwMEU1bGxhIFwiJHtXLmluY2x1ZGVzfVwiYDtpZihXLmZvcm1hdD09PVwicmVnZXhcIilyZXR1cm5gT2dpbHRpZyBzdHJcdTAwRTRuZzogbVx1MDBFNXN0ZSBtYXRjaGEgbVx1MDBGNm5zdHJldCBcIiR7Vy5wYXR0ZXJufVwiYDtyZXR1cm5gT2dpbHRpZyh0KSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBPZ2lsdGlndCB0YWw6IG1cdTAwRTVzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYCR7WC5rZXlzLmxlbmd0aD4xP1wiT2tcdTAwRTRuZGEgbnlja2xhclwiOlwiT2tcdTAwRTRuZCBueWNrZWxcIn06ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYE9naWx0aWcgbnlja2VsIGkgJHtYLm9yaWdpbj8/XCJ2XHUwMEU0cmRldFwifWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiT2dpbHRpZyBpbnB1dFwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBPZ2lsdGlndCB2XHUwMEU0cmRlIGkgJHtYLm9yaWdpbj8/XCJ2XHUwMEU0cmRldFwifWA7ZGVmYXVsdDpyZXR1cm5cIk9naWx0aWcgaW5wdXRcIn19fTtmdW5jdGlvbiB4cSgpe3JldHVybntsb2NhbGVFcnJvcjp1dSgpfX12YXIgbXU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHUwQjhFXHUwQkI0XHUwQkMxXHUwQkE0XHUwQkNEXHUwQkE0XHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkIzXHUwQkNEXCIsdmVyYjpcIlx1MEI5NVx1MEJDQVx1MEJBM1x1MEJDRFx1MEI5Rlx1MEJCRlx1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RcIn0sZmlsZTp7dW5pdDpcIlx1MEJBQVx1MEJDOFx1MEI5Rlx1MEJDRFx1MEI5Rlx1MEJDMVx1MEI5NVx1MEJCM1x1MEJDRFwiLHZlcmI6XCJcdTBCOTVcdTBCQ0FcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQkZcdTBCQjBcdTBCQzFcdTBCOTVcdTBCQ0RcdTBCOTUgXHUwQkI1XHUwQkM3XHUwQkEzXHUwQkNEXHUwQjlGXHUwQkMxXHUwQkFFXHUwQkNEXCJ9LGFycmF5Ont1bml0OlwiXHUwQjg5XHUwQkIxXHUwQkMxXHUwQkFBXHUwQkNEXHUwQkFBXHUwQkMxXHUwQjk1XHUwQkIzXHUwQkNEXCIsdmVyYjpcIlx1MEI5NVx1MEJDQVx1MEJBM1x1MEJDRFx1MEI5Rlx1MEJCRlx1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RcIn0sc2V0Ont1bml0OlwiXHUwQjg5XHUwQkIxXHUwQkMxXHUwQkFBXHUwQkNEXHUwQkFBXHUwQkMxXHUwQjk1XHUwQkIzXHUwQkNEXCIsdmVyYjpcIlx1MEI5NVx1MEJDQVx1MEJBM1x1MEJDRFx1MEI5Rlx1MEJCRlx1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJcdTBCOEVcdTBCQTNcdTBCQ0QgXHUwQjg1XHUwQkIyXHUwQkNEXHUwQkIyXHUwQkJFXHUwQkE0XHUwQkE0XHUwQkMxXCI6XCJcdTBCOEVcdTBCQTNcdTBCQ0RcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MEI4NVx1MEJBM1x1MEJCRlwiO2lmKFg9PT1udWxsKXJldHVyblwiXHUwQkI1XHUwQkM2XHUwQkIxXHUwQkMxXHUwQkFFXHUwQkM4XCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTBCODlcdTBCQjNcdTBCQ0RcdTBCQjNcdTBCQzBcdTBCOUZcdTBCQzFcIixlbWFpbDpcIlx1MEJBRVx1MEJCRlx1MEJBOVx1MEJDRFx1MEJBOVx1MEI5RVx1MEJDRFx1MEI5QVx1MEJCMlx1MEJDRCBcdTBCQUVcdTBCQzFcdTBCOTVcdTBCQjVcdTBCQjBcdTBCQkZcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIFx1MEJBNFx1MEJDN1x1MEJBNFx1MEJCRiBcdTBCQThcdTBCQzdcdTBCQjBcdTBCQUVcdTBCQ0RcIixkYXRlOlwiSVNPIFx1MEJBNFx1MEJDN1x1MEJBNFx1MEJCRlwiLHRpbWU6XCJJU08gXHUwQkE4XHUwQkM3XHUwQkIwXHUwQkFFXHUwQkNEXCIsZHVyYXRpb246XCJJU08gXHUwQjk1XHUwQkJFXHUwQkIyIFx1MEI4NVx1MEJCM1x1MEJCNVx1MEJDMVwiLGlwdjQ6XCJJUHY0IFx1MEJBRVx1MEJDMVx1MEI5NVx1MEJCNVx1MEJCMFx1MEJCRlwiLGlwdjY6XCJJUHY2IFx1MEJBRVx1MEJDMVx1MEI5NVx1MEJCNVx1MEJCMFx1MEJCRlwiLGNpZHJ2NDpcIklQdjQgXHUwQkI1XHUwQkIwXHUwQkFFXHUwQkNEXHUwQkFBXHUwQkMxXCIsY2lkcnY2OlwiSVB2NiBcdTBCQjVcdTBCQjBcdTBCQUVcdTBCQ0RcdTBCQUFcdTBCQzFcIixiYXNlNjQ6XCJiYXNlNjQtZW5jb2RlZCBcdTBCOUFcdTBCQjBcdTBCQUVcdTBCQ0RcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwtZW5jb2RlZCBcdTBCOUFcdTBCQjBcdTBCQUVcdTBCQ0RcIixqc29uX3N0cmluZzpcIkpTT04gXHUwQjlBXHUwQkIwXHUwQkFFXHUwQkNEXCIsZTE2NDpcIkUuMTY0IFx1MEI4RVx1MEJBM1x1MEJDRFwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJpbnB1dFwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEJDMFx1MEI5Rlx1MEJDMTogXHUwQjhFXHUwQkE0XHUwQkJGXHUwQkIwXHUwQkNEXHUwQkFBXHUwQkJFXHUwQkIwXHUwQkNEXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7WC5leHBlY3RlZH0sIFx1MEJBQVx1MEJDNlx1MEJCMVx1MEJBQVx1MEJDRFx1MEJBQVx1MEI5Rlx1MEJDRFx1MEI5Rlx1MEJBNFx1MEJDMSAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEJDMFx1MEI5Rlx1MEJDMTogXHUwQjhFXHUwQkE0XHUwQkJGXHUwQkIwXHUwQkNEXHUwQkFBXHUwQkJFXHUwQkIwXHUwQkNEXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEJCNVx1MEJCRlx1MEJCMFx1MEJDMVx1MEJBQVx1MEJDRFx1MEJBQVx1MEJBRVx1MEJDRDogXHUwQjhFXHUwQkE0XHUwQkJGXHUwQkIwXHUwQkNEXHUwQkFBXHUwQkJFXHUwQkIwXHUwQkNEXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7UChYLnZhbHVlcyxcInxcIil9IFx1MEI4N1x1MEJCMlx1MEJDRCBcdTBCOTJcdTBCQTlcdTBCQ0RcdTBCQjFcdTBCQzFgO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwQkFFXHUwQkJGXHUwQjk1IFx1MEJBQVx1MEJDNlx1MEJCMFx1MEJCRlx1MEJBRlx1MEJBNFx1MEJDMTogXHUwQjhFXHUwQkE0XHUwQkJGXHUwQkIwXHUwQkNEXHUwQkFBXHUwQkJFXHUwQkIwXHUwQkNEXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7WC5vcmlnaW4/P1wiXHUwQkFFXHUwQkE0XHUwQkJGXHUwQkFBXHUwQkNEXHUwQkFBXHUwQkMxXCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTBCODlcdTBCQjFcdTBCQzFcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCQzFcdTBCOTVcdTBCQjNcdTBCQ0RcIn0gXHUwQjg2XHUwQjk1IFx1MEI4N1x1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO3JldHVybmBcdTBCQUVcdTBCQkZcdTBCOTUgXHUwQkFBXHUwQkM2XHUwQkIwXHUwQkJGXHUwQkFGXHUwQkE0XHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtYLm9yaWdpbj8/XCJcdTBCQUVcdTBCQTRcdTBCQkZcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCQzFcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9IFx1MEI4Nlx1MEI5NSBcdTBCODdcdTBCQjBcdTBCQzFcdTBCOTVcdTBCQ0RcdTBCOTUgXHUwQkI1XHUwQkM3XHUwQkEzXHUwQkNEXHUwQjlGXHUwQkMxXHUwQkFFXHUwQkNEYH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwQkFFXHUwQkJGXHUwQjk1XHUwQjlBXHUwQkNEIFx1MEI5QVx1MEJCRlx1MEJCMVx1MEJCRlx1MEJBRlx1MEJBNFx1MEJDMTogXHUwQjhFXHUwQkE0XHUwQkJGXHUwQkIwXHUwQkNEXHUwQkFBXHUwQkJFXHUwQkIwXHUwQkNEXHUwQjk1XHUwQkNEXHUwQjk1XHUwQkFBXHUwQkNEXHUwQkFBXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkE0XHUwQkMxICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH0gXHUwQjg2XHUwQjk1IFx1MEI4N1x1MEJCMFx1MEJDMVx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO3JldHVybmBcdTBCQUVcdTBCQkZcdTBCOTVcdTBCOUFcdTBCQ0QgXHUwQjlBXHUwQkJGXHUwQkIxXHUwQkJGXHUwQkFGXHUwQkE0XHUwQkMxOiBcdTBCOEVcdTBCQTRcdTBCQkZcdTBCQjBcdTBCQ0RcdTBCQUFcdTBCQkVcdTBCQjBcdTBCQ0RcdTBCOTVcdTBCQ0RcdTBCOTVcdTBCQUFcdTBCQ0RcdTBCQUFcdTBCOUZcdTBCQ0RcdTBCOUZcdTBCQTRcdTBCQzEgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9IFx1MEI4Nlx1MEI5NSBcdTBCODdcdTBCQjBcdTBCQzFcdTBCOTVcdTBCQ0RcdTBCOTUgXHUwQkI1XHUwQkM3XHUwQkEzXHUwQkNEXHUwQjlGXHUwQkMxXHUwQkFFXHUwQkNEYH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjlBXHUwQkIwXHUwQkFFXHUwQkNEOiBcIiR7Vy5wcmVmaXh9XCIgXHUwQjg3XHUwQkIyXHUwQkNEIFx1MEJBNFx1MEJDQVx1MEI5Rlx1MEI5OVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI5QVx1MEJCMFx1MEJBRVx1MEJDRDogXCIke1cuc3VmZml4fVwiIFx1MEI4N1x1MEJCMlx1MEJDRCBcdTBCQUVcdTBCQzFcdTBCOUZcdTBCQkZcdTBCQjVcdTBCOUZcdTBCQzhcdTBCQUYgXHUwQkI1XHUwQkM3XHUwQkEzXHUwQkNEXHUwQjlGXHUwQkMxXHUwQkFFXHUwQkNEYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI5QVx1MEJCMFx1MEJBRVx1MEJDRDogXCIke1cuaW5jbHVkZXN9XCIgXHUwQjkwIFx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEI5Rlx1MEI5NVx1MEJDRFx1MEI5NSBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgXHUwQjlBXHUwQkIwXHUwQkFFXHUwQkNEOiAke1cucGF0dGVybn0gXHUwQkFFXHUwQkMxXHUwQkIxXHUwQkM4XHUwQkFBXHUwQkJFXHUwQjlGXHUwQkNEXHUwQjlGXHUwQkMxXHUwQjlGXHUwQkE5XHUwQkNEIFx1MEJBQVx1MEJDQVx1MEJCMFx1MEJDMVx1MEJBOFx1MEJDRFx1MEJBNCBcdTBCQjVcdTBCQzdcdTBCQTNcdTBCQ0RcdTBCOUZcdTBCQzFcdTBCQUVcdTBCQ0RgO3JldHVybmBcdTBCQTRcdTBCQjVcdTBCQjFcdTBCQkVcdTBCQTkgJHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI4RVx1MEJBM1x1MEJDRDogJHtYLmRpdmlzb3J9IFx1MEI4N1x1MEJBOVx1MEJDRCBcdTBCQUFcdTBCQjJcdTBCQUVcdTBCQkVcdTBCOTUgXHUwQjg3XHUwQkIwXHUwQkMxXHUwQjk1XHUwQkNEXHUwQjk1IFx1MEJCNVx1MEJDN1x1MEJBM1x1MEJDRFx1MEI5Rlx1MEJDMVx1MEJBRVx1MEJDRGA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gXHUwQjg1XHUwQjlGXHUwQkM4XHUwQkFGXHUwQkJFXHUwQkIzXHUwQkFFXHUwQkNEIFx1MEJBNFx1MEJDNlx1MEJCMFx1MEJCRlx1MEJBRlx1MEJCRVx1MEJBNCBcdTBCQjVcdTBCQkZcdTBCOUFcdTBCQzgke1gua2V5cy5sZW5ndGg+MT9cIlx1MEI5NVx1MEJCM1x1MEJDRFwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1gub3JpZ2lufSBcdTBCODdcdTBCQjJcdTBCQ0QgXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEJCNVx1MEJCRlx1MEI5QVx1MEJDOGA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEI4OVx1MEJCM1x1MEJDRFx1MEJCM1x1MEJDMFx1MEI5Rlx1MEJDMVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmAke1gub3JpZ2lufSBcdTBCODdcdTBCQjJcdTBCQ0QgXHUwQkE0XHUwQkI1XHUwQkIxXHUwQkJFXHUwQkE5IFx1MEJBRVx1MEJBNFx1MEJCRlx1MEJBQVx1MEJDRFx1MEJBQVx1MEJDMWA7ZGVmYXVsdDpyZXR1cm5cIlx1MEJBNFx1MEJCNVx1MEJCMVx1MEJCRVx1MEJBOSBcdTBCODlcdTBCQjNcdTBCQ0RcdTBCQjNcdTBCQzBcdTBCOUZcdTBCQzFcIn19fTtmdW5jdGlvbiBmcSgpe3JldHVybntsb2NhbGVFcnJvcjptdSgpfX12YXIgbHU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHUwRTE1XHUwRTMxXHUwRTI3XHUwRTJEXHUwRTMxXHUwRTAxXHUwRTI5XHUwRTIzXCIsdmVyYjpcIlx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNVwifSxmaWxlOnt1bml0OlwiXHUwRTQ0XHUwRTFBXHUwRTE1XHUwRTRDXCIsdmVyYjpcIlx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNVwifSxhcnJheTp7dW5pdDpcIlx1MEUyM1x1MEUzMlx1MEUyMlx1MEUwMVx1MEUzMlx1MEUyM1wiLHZlcmI6XCJcdTBFMDRcdTBFMjdcdTBFMjNcdTBFMjFcdTBFMzVcIn0sc2V0Ont1bml0OlwiXHUwRTIzXHUwRTMyXHUwRTIyXHUwRTAxXHUwRTMyXHUwRTIzXCIsdmVyYjpcIlx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIlx1MEU0NFx1MEUyMVx1MEU0OFx1MEU0M1x1MEUwQVx1MEU0OFx1MEUxNVx1MEUzMVx1MEUyN1x1MEU0MFx1MEUyNVx1MEUwMiAoTmFOKVwiOlwiXHUwRTE1XHUwRTMxXHUwRTI3XHUwRTQwXHUwRTI1XHUwRTAyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJcdTBFMkRcdTBFMzJcdTBFMjNcdTBFNENcdTBFNDBcdTBFMjNcdTBFMjJcdTBFNEMgKEFycmF5KVwiO2lmKFg9PT1udWxsKXJldHVyblwiXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTIxXHUwRTM1XHUwRTA0XHUwRTQ4XHUwRTMyIChudWxsKVwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTIxXHUwRTM5XHUwRTI1XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTFCXHUwRTQ5XHUwRTJEXHUwRTE5XCIsZW1haWw6XCJcdTBFMTdcdTBFMzVcdTBFNDhcdTBFMkRcdTBFMjJcdTBFMzlcdTBFNDhcdTBFMkRcdTBFMzVcdTBFNDBcdTBFMjFcdTBFMjVcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1MEUyRFx1MEUzNFx1MEU0Mlx1MEUyMVx1MEUwOFx1MEUzNFwiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIlx1MEUyN1x1MEUzMVx1MEUxOVx1MEUxN1x1MEUzNVx1MEU0OFx1MEU0MFx1MEUyN1x1MEUyNVx1MEUzMlx1MEU0MVx1MEUxQVx1MEUxQSBJU09cIixkYXRlOlwiXHUwRTI3XHUwRTMxXHUwRTE5XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTQxXHUwRTFBXHUwRTFBIElTT1wiLHRpbWU6XCJcdTBFNDBcdTBFMjdcdTBFMjVcdTBFMzJcdTBFNDFcdTBFMUFcdTBFMUEgSVNPXCIsZHVyYXRpb246XCJcdTBFMEFcdTBFNDhcdTBFMjdcdTBFMDdcdTBFNDBcdTBFMjdcdTBFMjVcdTBFMzJcdTBFNDFcdTBFMUFcdTBFMUEgSVNPXCIsaXB2NDpcIlx1MEUxN1x1MEUzNVx1MEU0OFx1MEUyRFx1MEUyMlx1MEUzOVx1MEU0OCBJUHY0XCIsaXB2NjpcIlx1MEUxN1x1MEUzNVx1MEU0OFx1MEUyRFx1MEUyMlx1MEUzOVx1MEU0OCBJUHY2XCIsY2lkcnY0OlwiXHUwRTBBXHUwRTQ4XHUwRTI3XHUwRTA3IElQIFx1MEU0MVx1MEUxQVx1MEUxQSBJUHY0XCIsY2lkcnY2OlwiXHUwRTBBXHUwRTQ4XHUwRTI3XHUwRTA3IElQIFx1MEU0MVx1MEUxQVx1MEUxQSBJUHY2XCIsYmFzZTY0OlwiXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTQxXHUwRTFBXHUwRTFBIEJhc2U2NFwiLGJhc2U2NHVybDpcIlx1MEUwMlx1MEU0OVx1MEUyRFx1MEUwNFx1MEUyN1x1MEUzMlx1MEUyMVx1MEU0MVx1MEUxQVx1MEUxQSBCYXNlNjQgXHUwRTJBXHUwRTMzXHUwRTJCXHUwRTIzXHUwRTMxXHUwRTFBIFVSTFwiLGpzb25fc3RyaW5nOlwiXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTQxXHUwRTFBXHUwRTFBIEpTT05cIixlMTY0OlwiXHUwRTQwXHUwRTFBXHUwRTJEXHUwRTIzXHUwRTRDXHUwRTQyXHUwRTE3XHUwRTIzXHUwRTI4XHUwRTMxXHUwRTFFXHUwRTE3XHUwRTRDXHUwRTIzXHUwRTMwXHUwRTJCXHUwRTI3XHUwRTQ4XHUwRTMyXHUwRTA3XHUwRTFCXHUwRTIzXHUwRTMwXHUwRTQwXHUwRTE3XHUwRTI4IChFLjE2NClcIixqd3Q6XCJcdTBFNDJcdTBFMTdcdTBFNDBcdTBFMDRcdTBFMTkgSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MEUwMlx1MEU0OVx1MEUyRFx1MEUyMVx1MEUzOVx1MEUyNVx1MEUxN1x1MEUzNVx1MEU0OFx1MEUxQlx1MEU0OVx1MEUyRFx1MEUxOVwifTtyZXR1cm4oWCk9Pntzd2l0Y2goWC5jb2RlKXtjYXNlXCJpbnZhbGlkX3R5cGVcIjpyZXR1cm5gXHUwRTFCXHUwRTIzXHUwRTMwXHUwRTQwXHUwRTIwXHUwRTE3XHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTIxXHUwRTM5XHUwRTI1XHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3OiBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFNDBcdTBFMUJcdTBFNDdcdTBFMTkgJHtYLmV4cGVjdGVkfSBcdTBFNDFcdTBFMTVcdTBFNDhcdTBFNDRcdTBFMTRcdTBFNDlcdTBFMjNcdTBFMzFcdTBFMUEgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MEUwNFx1MEU0OFx1MEUzMlx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTQwXHUwRTFCXHUwRTQ3XHUwRTE5ICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwRTE1XHUwRTMxXHUwRTI3XHUwRTQwXHUwRTI1XHUwRTM3XHUwRTJEXHUwRTAxXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3OiBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFNDBcdTBFMUJcdTBFNDdcdTBFMTlcdTBFMkJcdTBFMTlcdTBFMzZcdTBFNDhcdTBFMDdcdTBFNDNcdTBFMTkgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCJcdTBFNDRcdTBFMjFcdTBFNDhcdTBFNDBcdTBFMDFcdTBFMzRcdTBFMTlcIjpcIlx1MEUxOVx1MEU0OVx1MEUyRFx1MEUyMlx1MEUwMVx1MEUyN1x1MEU0OFx1MEUzMlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwRTQwXHUwRTAxXHUwRTM0XHUwRTE5XHUwRTAxXHUwRTMzXHUwRTJCXHUwRTE5XHUwRTE0OiAke1gub3JpZ2luPz9cIlx1MEUwNFx1MEU0OFx1MEUzMlwifSBcdTBFMDRcdTBFMjdcdTBFMjNcdTBFMjFcdTBFMzUke1d9ICR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0Pz9cIlx1MEUyM1x1MEUzMlx1MEUyMlx1MEUwMVx1MEUzMlx1MEUyM1wifWA7cmV0dXJuYFx1MEU0MFx1MEUwMVx1MEUzNFx1MEUxOVx1MEUwMVx1MEUzM1x1MEUyQlx1MEUxOVx1MEUxNDogJHtYLm9yaWdpbj8/XCJcdTBFMDRcdTBFNDhcdTBFMzJcIn0gXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1JHtXfSAke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiXHUwRTJEXHUwRTIyXHUwRTQ4XHUwRTMyXHUwRTA3XHUwRTE5XHUwRTQ5XHUwRTJEXHUwRTIyXCI6XCJcdTBFMjFcdTBFMzJcdTBFMDFcdTBFMDFcdTBFMjdcdTBFNDhcdTBFMzJcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MEUxOVx1MEU0OVx1MEUyRFx1MEUyMlx1MEUwMVx1MEUyN1x1MEU0OFx1MEUzMlx1MEUwMVx1MEUzM1x1MEUyQlx1MEUxOVx1MEUxNDogJHtYLm9yaWdpbn0gXHUwRTA0XHUwRTI3XHUwRTIzXHUwRTIxXHUwRTM1JHtXfSAke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTBFMTlcdTBFNDlcdTBFMkRcdTBFMjJcdTBFMDFcdTBFMjdcdTBFNDhcdTBFMzJcdTBFMDFcdTBFMzNcdTBFMkJcdTBFMTlcdTBFMTQ6ICR7WC5vcmlnaW59IFx1MEUwNFx1MEUyN1x1MEUyM1x1MEUyMVx1MEUzNSR7V30gJHtYLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2VcImludmFsaWRfZm9ybWF0XCI6e2xldCBXPVg7aWYoVy5mb3JtYXQ9PT1cInN0YXJ0c193aXRoXCIpcmV0dXJuYFx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTAyXHUwRTQ5XHUwRTJEXHUwRTA0XHUwRTI3XHUwRTMyXHUwRTIxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTAyXHUwRTM2XHUwRTQ5XHUwRTE5XHUwRTE1XHUwRTQ5XHUwRTE5XHUwRTE0XHUwRTQ5XHUwRTI3XHUwRTIyIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTBFMjNcdTBFMzlcdTBFMUJcdTBFNDFcdTBFMUFcdTBFMUFcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEUwMlx1MEU0OVx1MEUyRFx1MEUwNFx1MEUyN1x1MEUzMlx1MEUyMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwN1x1MEUyNVx1MEUwN1x1MEUxN1x1MEU0OVx1MEUzMlx1MEUyMlx1MEUxNFx1MEU0OVx1MEUyN1x1MEUyMiBcIiR7Vy5zdWZmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTBFMjNcdTBFMzlcdTBFMUJcdTBFNDFcdTBFMUFcdTBFMUFcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEUwMlx1MEU0OVx1MEUyRFx1MEUwNFx1MEUyN1x1MEUzMlx1MEUyMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwN1x1MEUyMVx1MEUzNSBcIiR7Vy5pbmNsdWRlc31cIiBcdTBFMkRcdTBFMjJcdTBFMzlcdTBFNDhcdTBFNDNcdTBFMTlcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMDRcdTBFMjdcdTBFMzJcdTBFMjFgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTBFMjNcdTBFMzlcdTBFMUJcdTBFNDFcdTBFMUFcdTBFMUFcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwN1x1MEUxNVx1MEUyM1x1MEUwN1x1MEUwMVx1MEUzMVx1MEUxQVx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEUxN1x1MEUzNVx1MEU0OFx1MEUwMVx1MEUzM1x1MEUyQlx1MEUxOVx1MEUxNCAke1cucGF0dGVybn1gO3JldHVybmBcdTBFMjNcdTBFMzlcdTBFMUJcdTBFNDFcdTBFMUFcdTBFMUFcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1MEUxNVx1MEUzMVx1MEUyN1x1MEU0MFx1MEUyNVx1MEUwMlx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNlx1MEUzOVx1MEUwMVx1MEUxNVx1MEU0OVx1MEUyRFx1MEUwNzogXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTQwXHUwRTFCXHUwRTQ3XHUwRTE5XHUwRTA4XHUwRTMzXHUwRTE5XHUwRTI3XHUwRTE5XHUwRTE3XHUwRTM1XHUwRTQ4XHUwRTJCXHUwRTMyXHUwRTIzXHUwRTE0XHUwRTQ5XHUwRTI3XHUwRTIyICR7WC5kaXZpc29yfSBcdTBFNDRcdTBFMTRcdTBFNDlcdTBFMjVcdTBFMDdcdTBFMTVcdTBFMzFcdTBFMjdgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MEUxRVx1MEUxQVx1MEUwNFx1MEUzNVx1MEUyMlx1MEU0Q1x1MEUxN1x1MEUzNVx1MEU0OFx1MEU0NFx1MEUyMVx1MEU0OFx1MEUyM1x1MEUzOVx1MEU0OVx1MEUwOFx1MEUzMVx1MEUwMTogJHtQKFgua2V5cyxcIiwgXCIpfWA7Y2FzZVwiaW52YWxpZF9rZXlcIjpyZXR1cm5gXHUwRTA0XHUwRTM1XHUwRTIyXHUwRTRDXHUwRTQ0XHUwRTIxXHUwRTQ4XHUwRTE2XHUwRTM5XHUwRTAxXHUwRTE1XHUwRTQ5XHUwRTJEXHUwRTA3XHUwRTQzXHUwRTE5ICR7WC5vcmlnaW59YDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMjFcdTBFMzlcdTBFMjVcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDc6IFx1MEU0NFx1MEUyMVx1MEU0OFx1MEUxNVx1MEUyM1x1MEUwN1x1MEUwMVx1MEUzMVx1MEUxQVx1MEUyM1x1MEUzOVx1MEUxQlx1MEU0MVx1MEUxQVx1MEUxQVx1MEUyMlx1MEUzOVx1MEU0MFx1MEUxOVx1MEUzNVx1MEUyMlx1MEUxOVx1MEUxN1x1MEUzNVx1MEU0OFx1MEUwMVx1MEUzM1x1MEUyQlx1MEUxOVx1MEUxNFx1MEU0NFx1MEUyN1x1MEU0OVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmBcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMjFcdTBFMzlcdTBFMjVcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDdcdTBFNDNcdTBFMTkgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTBFMDJcdTBFNDlcdTBFMkRcdTBFMjFcdTBFMzlcdTBFMjVcdTBFNDRcdTBFMjFcdTBFNDhcdTBFMTZcdTBFMzlcdTBFMDFcdTBFMTVcdTBFNDlcdTBFMkRcdTBFMDdcIn19fTtmdW5jdGlvbiB5cSgpe3JldHVybntsb2NhbGVFcnJvcjpsdSgpfX12YXIgY3U9KCQpPT57bGV0IFE9dHlwZW9mICQ7c3dpdGNoKFEpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oJCk/XCJOYU5cIjpcIm51bWJlclwiO2Nhc2VcIm9iamVjdFwiOntpZihBcnJheS5pc0FycmF5KCQpKXJldHVyblwiYXJyYXlcIjtpZigkPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoJCkhPT1PYmplY3QucHJvdG90eXBlJiYkLmNvbnN0cnVjdG9yKXJldHVybiAkLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBRfSxwdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJrYXJha3RlclwiLHZlcmI6XCJvbG1hbFx1MDEzMVwifSxmaWxlOnt1bml0OlwiYmF5dFwiLHZlcmI6XCJvbG1hbFx1MDEzMVwifSxhcnJheTp7dW5pdDpcIlx1MDBGNlx1MDExRmVcIix2ZXJiOlwib2xtYWxcdTAxMzFcIn0sc2V0Ont1bml0OlwiXHUwMEY2XHUwMTFGZVwiLHZlcmI6XCJvbG1hbFx1MDEzMVwifX07ZnVuY3Rpb24gUShZKXtyZXR1cm4gJFtZXT8/bnVsbH1sZXQgSj17cmVnZXg6XCJnaXJkaVwiLGVtYWlsOlwiZS1wb3N0YSBhZHJlc2lcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIHRhcmloIHZlIHNhYXRcIixkYXRlOlwiSVNPIHRhcmloXCIsdGltZTpcIklTTyBzYWF0XCIsZHVyYXRpb246XCJJU08gc1x1MDBGQ3JlXCIsaXB2NDpcIklQdjQgYWRyZXNpXCIsaXB2NjpcIklQdjYgYWRyZXNpXCIsY2lkcnY0OlwiSVB2NCBhcmFsXHUwMTMxXHUwMTFGXHUwMTMxXCIsY2lkcnY2OlwiSVB2NiBhcmFsXHUwMTMxXHUwMTFGXHUwMTMxXCIsYmFzZTY0OlwiYmFzZTY0IGlsZSBcdTAxNUZpZnJlbGVubWlcdTAxNUYgbWV0aW5cIixiYXNlNjR1cmw6XCJiYXNlNjR1cmwgaWxlIFx1MDE1RmlmcmVsZW5taVx1MDE1RiBtZXRpblwiLGpzb25fc3RyaW5nOlwiSlNPTiBkaXplc2lcIixlMTY0OlwiRS4xNjQgc2F5XHUwMTMxc1x1MDEzMVwiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdTAxNUVhYmxvbiBkaXplc2lcIn07cmV0dXJuKFkpPT57c3dpdGNoKFkuY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYEdlXHUwMEU3ZXJzaXogZGVcdTAxMUZlcjogYmVrbGVuZW4gJHtZLmV4cGVjdGVkfSwgYWxcdTAxMzFuYW4gJHtjdShZLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihZLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBHZVx1MDBFN2Vyc2l6IGRlXHUwMTFGZXI6IGJla2xlbmVuICR7eChZLnZhbHVlc1swXSl9YDtyZXR1cm5gR2VcdTAwRTdlcnNpeiBzZVx1MDBFN2VuZWs6IGFcdTAxNUZhXHUwMTFGXHUwMTMxZGFraWxlcmRlbiBiaXJpIG9sbWFsXHUwMTMxOiAke1AoWS52YWx1ZXMsXCJ8XCIpfWA7Y2FzZVwidG9vX2JpZ1wiOntsZXQgWD1ZLmluY2x1c2l2ZT9cIjw9XCI6XCI8XCIsVz1RKFkub3JpZ2luKTtpZihXKXJldHVybmBcdTAwQzdvayBiXHUwMEZDeVx1MDBGQ2s6IGJla2xlbmVuICR7WS5vcmlnaW4/P1wiZGVcdTAxMUZlclwifSAke1h9JHtZLm1heGltdW0udG9TdHJpbmcoKX0gJHtXLnVuaXQ/P1wiXHUwMEY2XHUwMTFGZVwifWA7cmV0dXJuYFx1MDBDN29rIGJcdTAwRkN5XHUwMEZDazogYmVrbGVuZW4gJHtZLm9yaWdpbj8/XCJkZVx1MDExRmVyXCJ9ICR7WH0ke1kubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBYPVkuaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixXPVEoWS5vcmlnaW4pO2lmKFcpcmV0dXJuYFx1MDBDN29rIGtcdTAwRkNcdTAwRTdcdTAwRkNrOiBiZWtsZW5lbiAke1kub3JpZ2lufSAke1h9JHtZLm1pbmltdW0udG9TdHJpbmcoKX0gJHtXLnVuaXR9YDtyZXR1cm5gXHUwMEM3b2sga1x1MDBGQ1x1MDBFN1x1MDBGQ2s6IGJla2xlbmVuICR7WS5vcmlnaW59ICR7WH0ke1kubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFg9WTtpZihYLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gR2VcdTAwRTdlcnNpeiBtZXRpbjogXCIke1gucHJlZml4fVwiIGlsZSBiYVx1MDE1RmxhbWFsXHUwMTMxYDtpZihYLmZvcm1hdD09PVwiZW5kc193aXRoXCIpcmV0dXJuYEdlXHUwMEU3ZXJzaXogbWV0aW46IFwiJHtYLnN1ZmZpeH1cIiBpbGUgYml0bWVsaWA7aWYoWC5mb3JtYXQ9PT1cImluY2x1ZGVzXCIpcmV0dXJuYEdlXHUwMEU3ZXJzaXogbWV0aW46IFwiJHtYLmluY2x1ZGVzfVwiIGlcdTAwRTdlcm1lbGlgO2lmKFguZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBHZVx1MDBFN2Vyc2l6IG1ldGluOiAke1gucGF0dGVybn0gZGVzZW5pbmUgdXltYWxcdTAxMzFgO3JldHVybmBHZVx1MDBFN2Vyc2l6ICR7SltYLmZvcm1hdF0/P1kuZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYEdlXHUwMEU3ZXJzaXogc2F5XHUwMTMxOiAke1kuZGl2aXNvcn0gaWxlIHRhbSBiXHUwMEY2bFx1MDBGQ25lYmlsbWVsaWA7Y2FzZVwidW5yZWNvZ25pemVkX2tleXNcIjpyZXR1cm5gVGFuXHUwMTMxbm1heWFuIGFuYWh0YXIke1kua2V5cy5sZW5ndGg+MT9cImxhclwiOlwiXCJ9OiAke1AoWS5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1kub3JpZ2lufSBpXHUwMEU3aW5kZSBnZVx1MDBFN2Vyc2l6IGFuYWh0YXJgO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIkdlXHUwMEU3ZXJzaXogZGVcdTAxMUZlclwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmAke1kub3JpZ2lufSBpXHUwMEU3aW5kZSBnZVx1MDBFN2Vyc2l6IGRlXHUwMTFGZXJgO2RlZmF1bHQ6cmV0dXJuXCJHZVx1MDBFN2Vyc2l6IGRlXHUwMTFGZXJcIn19fTtmdW5jdGlvbiBncSgpe3JldHVybntsb2NhbGVFcnJvcjpwdSgpfX12YXIgZHU9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHUwNDQxXHUwNDM4XHUwNDNDXHUwNDMyXHUwNDNFXHUwNDNCXHUwNDU2XHUwNDMyXCIsdmVyYjpcIlx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzQ1x1MDQzNVwifSxmaWxlOnt1bml0OlwiXHUwNDMxXHUwNDMwXHUwNDM5XHUwNDQyXHUwNDU2XHUwNDMyXCIsdmVyYjpcIlx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzQ1x1MDQzNVwifSxhcnJheTp7dW5pdDpcIlx1MDQzNVx1MDQzQlx1MDQzNVx1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mlx1MDQ1Nlx1MDQzMlwiLHZlcmI6XCJcdTA0M0NcdTA0MzBcdTA0NDJcdTA0MzhcdTA0M0NcdTA0MzVcIn0sc2V0Ont1bml0OlwiXHUwNDM1XHUwNDNCXHUwNDM1XHUwNDNDXHUwNDM1XHUwNDNEXHUwNDQyXHUwNDU2XHUwNDMyXCIsdmVyYjpcIlx1MDQzQ1x1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzQ1x1MDQzNVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwiXHUwNDQ3XHUwNDM4XHUwNDQxXHUwNDNCXHUwNDNFXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJcdTA0M0NcdTA0MzBcdTA0NDFcdTA0MzhcdTA0MzJcIjtpZihYPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoWCkhPT1PYmplY3QucHJvdG90eXBlJiZYLmNvbnN0cnVjdG9yKXJldHVybiBYLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBXfSxZPXtyZWdleDpcIlx1MDQzMlx1MDQ0NVx1MDQ1Nlx1MDQzNFx1MDQzRFx1MDQ1NiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0NTZcIixlbWFpbDpcIlx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMCBcdTA0MzVcdTA0M0JcdTA0MzVcdTA0M0FcdTA0NDJcdTA0NDBcdTA0M0VcdTA0M0RcdTA0M0RcdTA0M0VcdTA0NTcgXHUwNDNGXHUwNDNFXHUwNDQ4XHUwNDQyXHUwNDM4XCIsdXJsOlwiVVJMXCIsZW1vamk6XCJcdTA0MzVcdTA0M0NcdTA0M0VcdTA0MzRcdTA0MzdcdTA0NTZcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzAgXHUwNDQyXHUwNDMwIFx1MDQ0N1x1MDQzMFx1MDQ0MSBJU09cIixkYXRlOlwiXHUwNDM0XHUwNDMwXHUwNDQyXHUwNDMwIElTT1wiLHRpbWU6XCJcdTA0NDdcdTA0MzBcdTA0NDEgSVNPXCIsZHVyYXRpb246XCJcdTA0NDJcdTA0NDBcdTA0MzhcdTA0MzJcdTA0MzBcdTA0M0JcdTA0NTZcdTA0NDFcdTA0NDJcdTA0NEMgSVNPXCIsaXB2NDpcIlx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMCBJUHY0XCIsaXB2NjpcIlx1MDQzMFx1MDQzNFx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzMCBJUHY2XCIsY2lkcnY0OlwiXHUwNDM0XHUwNDU2XHUwNDMwXHUwNDNGXHUwNDMwXHUwNDM3XHUwNDNFXHUwNDNEIElQdjRcIixjaWRydjY6XCJcdTA0MzRcdTA0NTZcdTA0MzBcdTA0M0ZcdTA0MzBcdTA0MzdcdTA0M0VcdTA0M0QgSVB2NlwiLGJhc2U2NDpcIlx1MDQ0MFx1MDQ0Rlx1MDQzNFx1MDQzRVx1MDQzQSBcdTA0NDMgXHUwNDNBXHUwNDNFXHUwNDM0XHUwNDQzXHUwNDMyXHUwNDMwXHUwNDNEXHUwNDNEXHUwNDU2IGJhc2U2NFwiLGJhc2U2NHVybDpcIlx1MDQ0MFx1MDQ0Rlx1MDQzNFx1MDQzRVx1MDQzQSBcdTA0NDMgXHUwNDNBXHUwNDNFXHUwNDM0XHUwNDQzXHUwNDMyXHUwNDMwXHUwNDNEXHUwNDNEXHUwNDU2IGJhc2U2NHVybFwiLGpzb25fc3RyaW5nOlwiXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBIEpTT05cIixlMTY0OlwiXHUwNDNEXHUwNDNFXHUwNDNDXHUwNDM1XHUwNDQwIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDQzMlx1MDQ0NVx1MDQ1Nlx1MDQzNFx1MDQzRFx1MDQ1NiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0NTZcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ1NiBcdTA0MzJcdTA0NDVcdTA0NTZcdTA0MzRcdTA0M0RcdTA0NTYgXHUwNDM0XHUwNDMwXHUwNDNEXHUwNDU2OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYgJHtYLmV4cGVjdGVkfSwgXHUwNDNFXHUwNDQyXHUwNDQwXHUwNDM4XHUwNDNDXHUwNDMwXHUwNDNEXHUwNDNFICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0NTYgXHUwNDMyXHUwNDQ1XHUwNDU2XHUwNDM0XHUwNDNEXHUwNDU2IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQ1NjogXHUwNDNFXHUwNDQ3XHUwNDU2XHUwNDNBXHUwNDQzXHUwNDU0XHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDMwIFx1MDQzRVx1MDQzRlx1MDQ0Nlx1MDQ1Nlx1MDQ0RjogXHUwNDNFXHUwNDQ3XHUwNDU2XHUwNDNBXHUwNDQzXHUwNDU0XHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGIFx1MDQzRVx1MDQzNFx1MDQzRFx1MDQzNSBcdTA0MzcgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNDE3XHUwNDMwXHUwNDNEXHUwNDMwXHUwNDM0XHUwNDQyXHUwNDNFIFx1MDQzMlx1MDQzNVx1MDQzQlx1MDQzOFx1MDQzQVx1MDQzNTogXHUwNDNFXHUwNDQ3XHUwNDU2XHUwNDNBXHUwNDQzXHUwNDU0XHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGLCBcdTA0NDlcdTA0M0UgJHtYLm9yaWdpbj8/XCJcdTA0MzdcdTA0M0RcdTA0MzBcdTA0NDdcdTA0MzVcdTA0M0RcdTA0M0RcdTA0NEZcIn0gJHtHLnZlcmJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSAke0cudW5pdD8/XCJcdTA0MzVcdTA0M0JcdTA0MzVcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDJcdTA0NTZcdTA0MzJcIn1gO3JldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0M0UgXHUwNDMyXHUwNDM1XHUwNDNCXHUwNDM4XHUwNDNBXHUwNDM1OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYsIFx1MDQ0OVx1MDQzRSAke1gub3JpZ2luPz9cIlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzRFx1MDQ0RlwifSBcdTA0MzFcdTA0NDNcdTA0MzRcdTA0MzUgJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHUwNDE3XHUwNDMwXHUwNDNEXHUwNDMwXHUwNDM0XHUwNDQyXHUwNDNFIFx1MDQzQ1x1MDQzMFx1MDQzQlx1MDQzNTogXHUwNDNFXHUwNDQ3XHUwNDU2XHUwNDNBXHUwNDQzXHUwNDU0XHUwNDQyXHUwNDRDXHUwNDQxXHUwNDRGLCBcdTA0NDlcdTA0M0UgJHtYLm9yaWdpbn0gJHtHLnZlcmJ9ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTA0MTdcdTA0MzBcdTA0M0RcdTA0MzBcdTA0MzRcdTA0NDJcdTA0M0UgXHUwNDNDXHUwNDMwXHUwNDNCXHUwNDM1OiBcdTA0M0VcdTA0NDdcdTA0NTZcdTA0M0FcdTA0NDNcdTA0NTRcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYsIFx1MDQ0OVx1MDQzRSAke1gub3JpZ2lufSBcdTA0MzFcdTA0NDNcdTA0MzRcdTA0MzUgJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzhcdTA0MzkgXHUwNDQwXHUwNDRGXHUwNDM0XHUwNDNFXHUwNDNBOiBcdTA0M0ZcdTA0M0VcdTA0MzJcdTA0MzhcdTA0M0RcdTA0MzVcdTA0M0QgXHUwNDNGXHUwNDNFXHUwNDQ3XHUwNDM4XHUwNDNEXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDQxXHUwNDRGIFx1MDQzNyBcIiR7Vy5wcmVmaXh9XCJgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDM4XHUwNDM5IFx1MDQ0MFx1MDQ0Rlx1MDQzNFx1MDQzRVx1MDQzQTogXHUwNDNGXHUwNDNFXHUwNDMyXHUwNDM4XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzN1x1MDQzMFx1MDQzQVx1MDQ1Nlx1MDQzRFx1MDQ0N1x1MDQ0M1x1MDQzMlx1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQ0MVx1MDQ0RiBcdTA0M0RcdTA0MzAgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDM4XHUwNDM5IFx1MDQ0MFx1MDQ0Rlx1MDQzNFx1MDQzRVx1MDQzQTogXHUwNDNGXHUwNDNFXHUwNDMyXHUwNDM4XHUwNDNEXHUwNDM1XHUwNDNEIFx1MDQzQ1x1MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQzOFx1MDQ0Mlx1MDQzOCBcIiR7Vy5pbmNsdWRlc31cImA7aWYoVy5mb3JtYXQ9PT1cInJlZ2V4XCIpcmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzOFx1MDQzOSBcdTA0NDBcdTA0NEZcdTA0MzRcdTA0M0VcdTA0M0E6IFx1MDQzRlx1MDQzRVx1MDQzMlx1MDQzOFx1MDQzRFx1MDQzNVx1MDQzRCBcdTA0MzJcdTA0NTZcdTA0MzRcdTA0M0ZcdTA0M0VcdTA0MzJcdTA0NTZcdTA0MzRcdTA0MzBcdTA0NDJcdTA0MzggXHUwNDQ4XHUwNDMwXHUwNDMxXHUwNDNCXHUwNDNFXHUwNDNEXHUwNDQzICR7Vy5wYXR0ZXJufWA7cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQzRlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzOFx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQzOFx1MDQzOSAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzUgXHUwNDQ3XHUwNDM4XHUwNDQxXHUwNDNCXHUwNDNFOiBcdTA0M0ZcdTA0M0VcdTA0MzJcdTA0MzhcdTA0M0RcdTA0M0RcdTA0M0UgXHUwNDMxXHUwNDQzXHUwNDQyXHUwNDM4IFx1MDQzQVx1MDQ0MFx1MDQzMFx1MDQ0Mlx1MDQzRFx1MDQzOFx1MDQzQyAke1guZGl2aXNvcn1gO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1MDQxRFx1MDQzNVx1MDQ0MFx1MDQzRVx1MDQzN1x1MDQzRlx1MDQ1Nlx1MDQzN1x1MDQzRFx1MDQzMFx1MDQzRFx1MDQzOFx1MDQzOSBcdTA0M0FcdTA0M0JcdTA0NEVcdTA0NDcke1gua2V5cy5sZW5ndGg+MT9cIlx1MDQ1NlwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmBcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0MzhcdTA0MzkgXHUwNDNBXHUwNDNCXHUwNDRFXHUwNDQ3IFx1MDQ0MyAke1gub3JpZ2lufWA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDU2IFx1MDQzMlx1MDQ0NVx1MDQ1Nlx1MDQzNFx1MDQzRFx1MDQ1NiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0NTZcIjtjYXNlXCJpbnZhbGlkX2VsZW1lbnRcIjpyZXR1cm5gXHUwNDFEXHUwNDM1XHUwNDNGXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM4XHUwNDNCXHUwNDRDXHUwNDNEXHUwNDM1IFx1MDQzN1x1MDQzRFx1MDQzMFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzRFx1MDQ0RiBcdTA0NDMgJHtYLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuXCJcdTA0MURcdTA0MzVcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzhcdTA0M0JcdTA0NENcdTA0M0RcdTA0NTYgXHUwNDMyXHUwNDQ1XHUwNDU2XHUwNDM0XHUwNDNEXHUwNDU2IFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQ1NlwifX19O2Z1bmN0aW9uIGhxKCl7cmV0dXJue2xvY2FsZUVycm9yOmR1KCl9fXZhciBpdT0oKT0+e2xldCAkPXtzdHJpbmc6e3VuaXQ6XCJcdTA2MkRcdTA2MzFcdTA2NDhcdTA2NDFcIix2ZXJiOlwiXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3XCJ9LGZpbGU6e3VuaXQ6XCJcdTA2MjhcdTA2MjdcdTA2MjZcdTA2NzlcdTA2MzNcIix2ZXJiOlwiXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3XCJ9LGFycmF5Ont1bml0OlwiXHUwNjIyXHUwNjI2XHUwNjc5XHUwNjQ1XHUwNjMyXCIsdmVyYjpcIlx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyN1wifSxzZXQ6e3VuaXQ6XCJcdTA2MjJcdTA2MjZcdTA2NzlcdTA2NDVcdTA2MzJcIix2ZXJiOlwiXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3XCJ9fTtmdW5jdGlvbiBRKFgpe3JldHVybiAkW1hdPz9udWxsfWxldCBKPShYKT0+e2xldCBXPXR5cGVvZiBYO3N3aXRjaChXKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKFgpP1wiTmFOXCI6XCJcdTA2NDZcdTA2NDVcdTA2MjhcdTA2MzFcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIlx1MDYyMlx1MDYzMVx1MDZEMlwiO2lmKFg9PT1udWxsKXJldHVyblwiXHUwNjQ2XHUwNjQ0XCI7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKFgpIT09T2JqZWN0LnByb3RvdHlwZSYmWC5jb25zdHJ1Y3RvcilyZXR1cm4gWC5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gV30sWT17cmVnZXg6XCJcdTA2MjdcdTA2NDYgXHUwNjdFXHUwNjc5XCIsZW1haWw6XCJcdTA2MjdcdTA2Q0MgXHUwNjQ1XHUwNkNDXHUwNjQ0IFx1MDYyN1x1MDZDQ1x1MDY4OFx1MDYzMVx1MDZDQ1x1MDYzM1wiLHVybDpcIlx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MzEgXHUwNjI3XHUwNkNDXHUwNjQ0XCIsZW1vamk6XCJcdTA2MjdcdTA2Q0NcdTA2NDVcdTA2NDhcdTA2MkNcdTA2Q0NcIix1dWlkOlwiXHUwNkNDXHUwNjQ4IFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDXCIsdXVpZHY0OlwiXHUwNkNDXHUwNjQ4IFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDIFx1MDY0OFx1MDZDQyA0XCIsdXVpZHY2OlwiXHUwNkNDXHUwNjQ4IFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDIFx1MDY0OFx1MDZDQyA2XCIsbmFub2lkOlwiXHUwNjQ2XHUwNkNDXHUwNjQ2XHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIixndWlkOlwiXHUwNjJDXHUwNkNDIFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDXCIsY3VpZDpcIlx1MDYzM1x1MDZDQyBcdTA2Q0NcdTA2NDggXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY4OFx1MDZDQ1wiLGN1aWQyOlwiXHUwNjMzXHUwNkNDIFx1MDZDQ1x1MDY0OCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDIDJcIix1bGlkOlwiXHUwNkNDXHUwNjQ4IFx1MDYyN1x1MDZDQ1x1MDY0NCBcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjg4XHUwNkNDXCIseGlkOlwiXHUwNjI3XHUwNkNDXHUwNkE5XHUwNjMzIFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIixrc3VpZDpcIlx1MDZBOVx1MDZEMiBcdTA2MjdcdTA2Q0NcdTA2MzMgXHUwNkNDXHUwNjQ4IFx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2ODhcdTA2Q0NcIixkYXRldGltZTpcIlx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2MjdcdTA2Q0NcdTA2MzMgXHUwNjI3XHUwNjQ4IFx1MDY4OFx1MDZDQ1x1MDY3OSBcdTA2NzlcdTA2MjdcdTA2MjZcdTA2NDVcIixkYXRlOlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2MjdcdTA2NDggXHUwNjJBXHUwNjI3XHUwNjMxXHUwNkNDXHUwNjJFXCIsdGltZTpcIlx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2MjdcdTA2Q0NcdTA2MzMgXHUwNjI3XHUwNjQ4IFx1MDY0OFx1MDY0Mlx1MDYyQVwiLGR1cmF0aW9uOlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2MjdcdTA2NDggXHUwNjQ1XHUwNjJGXHUwNjJBXCIsaXB2NDpcIlx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2N0VcdTA2Q0MgXHUwNjQ4XHUwNkNDIDQgXHUwNjI3XHUwNkNDXHUwNjg4XHUwNjMxXHUwNkNDXHUwNjMzXCIsaXB2NjpcIlx1MDYyMlx1MDYyNlx1MDZDQyBcdTA2N0VcdTA2Q0MgXHUwNjQ4XHUwNkNDIDYgXHUwNjI3XHUwNkNDXHUwNjg4XHUwNjMxXHUwNkNDXHUwNjMzXCIsY2lkcnY0OlwiXHUwNjIyXHUwNjI2XHUwNkNDIFx1MDY3RVx1MDZDQyBcdTA2NDhcdTA2Q0MgNCBcdTA2MzFcdTA2Q0NcdTA2NDZcdTA2MkNcIixjaWRydjY6XCJcdTA2MjJcdTA2MjZcdTA2Q0MgXHUwNjdFXHUwNkNDIFx1MDY0OFx1MDZDQyA2IFx1MDYzMVx1MDZDQ1x1MDY0Nlx1MDYyQ1wiLGJhc2U2NDpcIlx1MDYyOFx1MDZDQ1x1MDYzMyA2NCBcdTA2MjdcdTA2NDYgXHUwNkE5XHUwNjQ4XHUwNjg4XHUwNjg4IFx1MDYzM1x1MDY3OVx1MDYzMVx1MDY0Nlx1MDZBRlwiLGJhc2U2NHVybDpcIlx1MDYyOFx1MDZDQ1x1MDYzMyA2NCBcdTA2Q0NcdTA2NDggXHUwNjIyXHUwNjMxIFx1MDYyN1x1MDZDQ1x1MDY0NCBcdTA2MjdcdTA2NDYgXHUwNkE5XHUwNjQ4XHUwNjg4XHUwNjg4IFx1MDYzM1x1MDY3OVx1MDYzMVx1MDY0Nlx1MDZBRlwiLGpzb25fc3RyaW5nOlwiXHUwNjJDXHUwNkQyIFx1MDYyN1x1MDZDQ1x1MDYzMyBcdTA2MjdcdTA2NDggXHUwNjI3XHUwNkNDXHUwNjQ2IFx1MDYzM1x1MDY3OVx1MDYzMVx1MDY0Nlx1MDZBRlwiLGUxNjQ6XCJcdTA2MjdcdTA2Q0MgMTY0IFx1MDY0Nlx1MDY0NVx1MDYyOFx1MDYzMVwiLGp3dDpcIlx1MDYyQ1x1MDZEMiBcdTA2ODhcdTA2MjhcdTA2NDRcdTA2Q0NcdTA2NDggXHUwNjc5XHUwNkNDXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDYyN1x1MDY0NiBcdTA2N0VcdTA2NzlcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MjdcdTA2NDYgXHUwNjdFXHUwNjc5OiAke1guZXhwZWN0ZWR9IFx1MDY0NVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MkFcdTA2QkVcdTA2MjdcdTA2MEMgJHtKKFguaW5wdXQpfSBcdTA2NDVcdTA2NDhcdTA2MzVcdTA2NDhcdTA2NDQgXHUwNkMxXHUwNjQ4XHUwNjI3YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDYyN1x1MDY0NiBcdTA2N0VcdTA2Nzk6ICR7eChYLnZhbHVlc1swXSl9IFx1MDY0NVx1MDYyQVx1MDY0OFx1MDY0Mlx1MDYzOSBcdTA2MkFcdTA2QkVcdTA2MjdgO3JldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjIyXHUwNjdFXHUwNjM0XHUwNjQ2OiAke1AoWC52YWx1ZXMsXCJ8XCIpfSBcdTA2NDVcdTA2Q0NcdTA2QkEgXHUwNjMzXHUwNkQyIFx1MDYyN1x1MDZDQ1x1MDZBOSBcdTA2NDVcdTA2MkFcdTA2NDhcdTA2NDJcdTA2MzkgXHUwNjJBXHUwNkJFXHUwNjI3YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDYyOFx1MDZDMVx1MDYyQSBcdTA2MjhcdTA2OTFcdTA2Mjc6ICR7WC5vcmlnaW4/P1wiXHUwNjQ4XHUwNkNDXHUwNjQ0XHUwNkNDXHUwNjQ4XCJ9IFx1MDZBOVx1MDZEMiAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHUwNjM5XHUwNjQ2XHUwNjI3XHUwNjM1XHUwNjMxXCJ9IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDZEMiBcdTA2NDVcdTA2MkFcdTA2NDhcdTA2NDJcdTA2MzkgXHUwNjJBXHUwNkJFXHUwNkQyYDtyZXR1cm5gXHUwNjI4XHUwNkMxXHUwNjJBIFx1MDYyOFx1MDY5MVx1MDYyNzogJHtYLm9yaWdpbj8/XCJcdTA2NDhcdTA2Q0NcdTA2NDRcdTA2Q0NcdTA2NDhcIn0gXHUwNkE5XHUwNjI3ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfSBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjQ1XHUwNjJBXHUwNjQ4XHUwNjQyXHUwNjM5IFx1MDYyQVx1MDZCRVx1MDYyN2B9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1MDYyOFx1MDZDMVx1MDYyQSBcdTA2ODZcdTA2QkVcdTA2NDhcdTA2NzlcdTA2Mjc6ICR7WC5vcmlnaW59IFx1MDZBOVx1MDZEMiAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDZEMiBcdTA2NDVcdTA2MkFcdTA2NDhcdTA2NDJcdTA2MzkgXHUwNjJBXHUwNkJFXHUwNkQyYDtyZXR1cm5gXHUwNjI4XHUwNkMxXHUwNjJBIFx1MDY4Nlx1MDZCRVx1MDY0OFx1MDY3OVx1MDYyNzogJHtYLm9yaWdpbn0gXHUwNkE5XHUwNjI3ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjQ1XHUwNjJBXHUwNjQ4XHUwNjQyXHUwNjM5IFx1MDYyQVx1MDZCRVx1MDYyN2B9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDYzM1x1MDY3OVx1MDYzMVx1MDY0Nlx1MDZBRjogXCIke1cucHJlZml4fVwiIFx1MDYzM1x1MDZEMiBcdTA2MzRcdTA2MzFcdTA2NDhcdTA2MzkgXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3IFx1MDY4Nlx1MDYyN1x1MDZDMVx1MDZDQ1x1MDZEMmA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGOiBcIiR7Vy5zdWZmaXh9XCIgXHUwNjdFXHUwNjMxIFx1MDYyRVx1MDYyQVx1MDY0NSBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjg2XHUwNjI3XHUwNkMxXHUwNkNDXHUwNkQyYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDYzM1x1MDY3OVx1MDYzMVx1MDY0Nlx1MDZBRjogXCIke1cuaW5jbHVkZXN9XCIgXHUwNjM0XHUwNjI3XHUwNjQ1XHUwNjQ0IFx1MDZDMVx1MDY0OFx1MDY0Nlx1MDYyNyBcdTA2ODZcdTA2MjdcdTA2QzFcdTA2Q0NcdTA2RDJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjMzXHUwNjc5XHUwNjMxXHUwNjQ2XHUwNkFGOiBcdTA2N0VcdTA2Q0NcdTA2NzlcdTA2MzFcdTA2NDYgJHtXLnBhdHRlcm59IFx1MDYzM1x1MDZEMiBcdTA2NDVcdTA2Q0NcdTA2ODYgXHUwNkMxXHUwNjQ4XHUwNjQ2XHUwNjI3IFx1MDY4Nlx1MDYyN1x1MDZDMVx1MDZDQ1x1MDZEMmA7cmV0dXJuYFx1MDYzQVx1MDY0NFx1MDYzNyAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH1gfWNhc2VcIm5vdF9tdWx0aXBsZV9vZlwiOnJldHVybmBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjQ2XHUwNjQ1XHUwNjI4XHUwNjMxOiAke1guZGl2aXNvcn0gXHUwNkE5XHUwNjI3IFx1MDY0NVx1MDYzNlx1MDYyN1x1MDYzOVx1MDY0MSBcdTA2QzFcdTA2NDhcdTA2NDZcdTA2MjcgXHUwNjg2XHUwNjI3XHUwNkMxXHUwNkNDXHUwNkQyYDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTA2M0FcdTA2Q0NcdTA2MzEgXHUwNjJBXHUwNjMzXHUwNjQ0XHUwNkNDXHUwNjQ1IFx1MDYzNFx1MDYyRlx1MDZDMSBcdTA2QTlcdTA2Q0Mke1gua2V5cy5sZW5ndGg+MT9cIlx1MDYzMlwiOlwiXCJ9OiAke1AoWC5rZXlzLFwiXHUwNjBDIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1MDY0NVx1MDZDQ1x1MDZCQSBcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNkE5XHUwNkNDYDtjYXNlXCJpbnZhbGlkX3VuaW9uXCI6cmV0dXJuXCJcdTA2M0FcdTA2NDRcdTA2MzcgXHUwNjI3XHUwNjQ2IFx1MDY3RVx1MDY3OVwiO2Nhc2VcImludmFsaWRfZWxlbWVudFwiOnJldHVybmAke1gub3JpZ2lufSBcdTA2NDVcdTA2Q0NcdTA2QkEgXHUwNjNBXHUwNjQ0XHUwNjM3IFx1MDY0OFx1MDZDQ1x1MDY0NFx1MDZDQ1x1MDY0OGA7ZGVmYXVsdDpyZXR1cm5cIlx1MDYzQVx1MDY0NFx1MDYzNyBcdTA2MjdcdTA2NDYgXHUwNjdFXHUwNjc5XCJ9fX07ZnVuY3Rpb24gdXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6aXUoKX19dmFyIG51PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcImtcdTAwRkQgdFx1MUVGMVwiLHZlcmI6XCJjXHUwMEYzXCJ9LGZpbGU6e3VuaXQ6XCJieXRlXCIsdmVyYjpcImNcdTAwRjNcIn0sYXJyYXk6e3VuaXQ6XCJwaFx1MUVBN24gdFx1MUVFRFwiLHZlcmI6XCJjXHUwMEYzXCJ9LHNldDp7dW5pdDpcInBoXHUxRUE3biB0XHUxRUVEXCIsdmVyYjpcImNcdTAwRjNcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJOYU5cIjpcInNcdTFFRDFcIjtjYXNlXCJvYmplY3RcIjp7aWYoQXJyYXkuaXNBcnJheShYKSlyZXR1cm5cIm1cdTFFQTNuZ1wiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHUwMTExXHUxRUE3dSB2XHUwMEUwb1wiLGVtYWlsOlwiXHUwMTExXHUxRUNCYSBjaFx1MUVDOSBlbWFpbFwiLHVybDpcIlVSTFwiLGVtb2ppOlwiZW1vamlcIix1dWlkOlwiVVVJRFwiLHV1aWR2NDpcIlVVSUR2NFwiLHV1aWR2NjpcIlVVSUR2NlwiLG5hbm9pZDpcIm5hbm9pZFwiLGd1aWQ6XCJHVUlEXCIsY3VpZDpcImN1aWRcIixjdWlkMjpcImN1aWQyXCIsdWxpZDpcIlVMSURcIix4aWQ6XCJYSURcIixrc3VpZDpcIktTVUlEXCIsZGF0ZXRpbWU6XCJuZ1x1MDBFMHkgZ2lcdTFFREQgSVNPXCIsZGF0ZTpcIm5nXHUwMEUweSBJU09cIix0aW1lOlwiZ2lcdTFFREQgSVNPXCIsZHVyYXRpb246XCJraG9cdTFFQTNuZyB0aFx1MUVERGkgZ2lhbiBJU09cIixpcHY0OlwiXHUwMTExXHUxRUNCYSBjaFx1MUVDOSBJUHY0XCIsaXB2NjpcIlx1MDExMVx1MUVDQmEgY2hcdTFFQzkgSVB2NlwiLGNpZHJ2NDpcImRcdTFFQTNpIElQdjRcIixjaWRydjY6XCJkXHUxRUEzaSBJUHY2XCIsYmFzZTY0OlwiY2h1XHUxRUQ3aSBtXHUwMEUzIGhcdTAwRjNhIGJhc2U2NFwiLGJhc2U2NHVybDpcImNodVx1MUVEN2kgbVx1MDBFMyBoXHUwMEYzYSBiYXNlNjR1cmxcIixqc29uX3N0cmluZzpcImNodVx1MUVEN2kgSlNPTlwiLGUxNjQ6XCJzXHUxRUQxIEUuMTY0XCIsand0OlwiSldUXCIsdGVtcGxhdGVfbGl0ZXJhbDpcIlx1MDExMVx1MUVBN3Ugdlx1MDBFMG9cIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1MDExMFx1MUVBN3Ugdlx1MDBFMG8ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBtb25nIFx1MDExMVx1MUVFM2kgJHtYLmV4cGVjdGVkfSwgbmhcdTFFQURuIFx1MDExMVx1MDFCMFx1MUVFM2MgJHtKKFguaW5wdXQpfWA7Y2FzZVwiaW52YWxpZF92YWx1ZVwiOmlmKFgudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYFx1MDExMFx1MUVBN3Ugdlx1MDBFMG8ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBtb25nIFx1MDExMVx1MUVFM2kgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBUXHUwMEY5eSBjaFx1MUVDRG4ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3OiBtb25nIFx1MDExMVx1MUVFM2kgbVx1MUVEOXQgdHJvbmcgY1x1MDBFMWMgZ2lcdTAwRTEgdHJcdTFFQ0IgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gUXVcdTAwRTEgbFx1MUVEQm46IG1vbmcgXHUwMTExXHUxRUUzaSAke1gub3JpZ2luPz9cImdpXHUwMEUxIHRyXHUxRUNCXCJ9ICR7Ry52ZXJifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wicGhcdTFFQTduIHRcdTFFRURcIn1gO3JldHVybmBRdVx1MDBFMSBsXHUxRURCbjogbW9uZyBcdTAxMTFcdTFFRTNpICR7WC5vcmlnaW4/P1wiZ2lcdTAwRTEgdHJcdTFFQ0JcIn0gJHtXfSR7WC5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJ0b29fc21hbGxcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI+PVwiOlwiPlwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gUXVcdTAwRTEgbmhcdTFFQ0Y6IG1vbmcgXHUwMTExXHUxRUUzaSAke1gub3JpZ2lufSAke0cudmVyYn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Ry51bml0fWA7cmV0dXJuYFF1XHUwMEUxIG5oXHUxRUNGOiBtb25nIFx1MDExMVx1MUVFM2kgJHtYLm9yaWdpbn0gJHtXfSR7WC5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlXCJpbnZhbGlkX2Zvcm1hdFwiOntsZXQgVz1YO2lmKFcuZm9ybWF0PT09XCJzdGFydHNfd2l0aFwiKXJldHVybmBDaHVcdTFFRDdpIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNzogcGhcdTFFQTNpIGJcdTFFQUZ0IFx1MDExMVx1MUVBN3UgYlx1MUVCMW5nIFwiJHtXLnByZWZpeH1cImA7aWYoVy5mb3JtYXQ9PT1cImVuZHNfd2l0aFwiKXJldHVybmBDaHVcdTFFRDdpIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNzogcGhcdTFFQTNpIGtcdTFFQkZ0IHRoXHUwMEZBYyBiXHUxRUIxbmcgXCIke1cuc3VmZml4fVwiYDtpZihXLmZvcm1hdD09PVwiaW5jbHVkZXNcIilyZXR1cm5gQ2h1XHUxRUQ3aSBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzc6IHBoXHUxRUEzaSBiYW8gZ1x1MUVEM20gXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBDaHVcdTFFRDdpIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNzogcGhcdTFFQTNpIGtoXHUxRURCcCB2XHUxRURCaSBtXHUxRUFCdSAke1cucGF0dGVybn1gO3JldHVybmAke1lbVy5mb3JtYXRdPz9YLmZvcm1hdH0ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gU1x1MUVEMSBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzc6IHBoXHUxRUEzaSBsXHUwMEUwIGJcdTFFRDlpIHNcdTFFRDEgY1x1MUVFN2EgJHtYLmRpdmlzb3J9YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBLaFx1MDBGM2Ega2hcdTAwRjRuZyBcdTAxMTFcdTAxQjBcdTFFRTNjIG5oXHUxRUFEbiBkXHUxRUExbmc6ICR7UChYLmtleXMsXCIsIFwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYEtoXHUwMEYzYSBraFx1MDBGNG5nIGhcdTFFRTNwIGxcdTFFQzcgdHJvbmcgJHtYLm9yaWdpbn1gO2Nhc2VcImludmFsaWRfdW5pb25cIjpyZXR1cm5cIlx1MDExMFx1MUVBN3Ugdlx1MDBFMG8ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYEdpXHUwMEUxIHRyXHUxRUNCIGtoXHUwMEY0bmcgaFx1MUVFM3AgbFx1MUVDNyB0cm9uZyAke1gub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm5cIlx1MDExMFx1MUVBN3Ugdlx1MDBFMG8ga2hcdTAwRjRuZyBoXHUxRUUzcCBsXHUxRUM3XCJ9fX07ZnVuY3Rpb24gbXEoKXtyZXR1cm57bG9jYWxlRXJyb3I6bnUoKX19dmFyIHJ1PSgpPT57bGV0ICQ9e3N0cmluZzp7dW5pdDpcIlx1NUI1N1x1N0IyNlwiLHZlcmI6XCJcdTUzMDVcdTU0MkJcIn0sZmlsZTp7dW5pdDpcIlx1NUI1N1x1ODI4MlwiLHZlcmI6XCJcdTUzMDVcdTU0MkJcIn0sYXJyYXk6e3VuaXQ6XCJcdTk4NzlcIix2ZXJiOlwiXHU1MzA1XHU1NDJCXCJ9LHNldDp7dW5pdDpcIlx1OTg3OVwiLHZlcmI6XCJcdTUzMDVcdTU0MkJcIn19O2Z1bmN0aW9uIFEoWCl7cmV0dXJuICRbWF0/P251bGx9bGV0IEo9KFgpPT57bGV0IFc9dHlwZW9mIFg7c3dpdGNoKFcpe2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oWCk/XCJcdTk3NUVcdTY1NzBcdTVCNTcoTmFOKVwiOlwiXHU2NTcwXHU1QjU3XCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJcdTY1NzBcdTdFQzRcIjtpZihYPT09bnVsbClyZXR1cm5cIlx1N0E3QVx1NTAzQyhudWxsKVwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHU4RjkzXHU1MTY1XCIsZW1haWw6XCJcdTc1MzVcdTVCNTBcdTkwQUVcdTRFRjZcIix1cmw6XCJVUkxcIixlbW9qaTpcIlx1ODg2OFx1NjBDNVx1N0IyNlx1NTNGN1wiLHV1aWQ6XCJVVUlEXCIsdXVpZHY0OlwiVVVJRHY0XCIsdXVpZHY2OlwiVVVJRHY2XCIsbmFub2lkOlwibmFub2lkXCIsZ3VpZDpcIkdVSURcIixjdWlkOlwiY3VpZFwiLGN1aWQyOlwiY3VpZDJcIix1bGlkOlwiVUxJRFwiLHhpZDpcIlhJRFwiLGtzdWlkOlwiS1NVSURcIixkYXRldGltZTpcIklTT1x1NjVFNVx1NjcxRlx1NjVGNlx1OTVGNFwiLGRhdGU6XCJJU09cdTY1RTVcdTY3MUZcIix0aW1lOlwiSVNPXHU2NUY2XHU5NUY0XCIsZHVyYXRpb246XCJJU09cdTY1RjZcdTk1N0ZcIixpcHY0OlwiSVB2NFx1NTczMFx1NTc0MFwiLGlwdjY6XCJJUHY2XHU1NzMwXHU1NzQwXCIsY2lkcnY0OlwiSVB2NFx1N0Y1MVx1NkJCNVwiLGNpZHJ2NjpcIklQdjZcdTdGNTFcdTZCQjVcIixiYXNlNjQ6XCJiYXNlNjRcdTdGMTZcdTc4MDFcdTVCNTdcdTdCMjZcdTRFMzJcIixiYXNlNjR1cmw6XCJiYXNlNjR1cmxcdTdGMTZcdTc4MDFcdTVCNTdcdTdCMjZcdTRFMzJcIixqc29uX3N0cmluZzpcIkpTT05cdTVCNTdcdTdCMjZcdTRFMzJcIixlMTY0OlwiRS4xNjRcdTUzRjdcdTc4MDFcIixqd3Q6XCJKV1RcIix0ZW1wbGF0ZV9saXRlcmFsOlwiXHU4RjkzXHU1MTY1XCJ9O3JldHVybihYKT0+e3N3aXRjaChYLmNvZGUpe2Nhc2VcImludmFsaWRfdHlwZVwiOnJldHVybmBcdTY1RTBcdTY1NDhcdThGOTNcdTUxNjVcdUZGMUFcdTY3MUZcdTY3MUIgJHtYLmV4cGVjdGVkfVx1RkYwQ1x1NUI5RVx1OTY0NVx1NjNBNVx1NjUzNiAke0ooWC5pbnB1dCl9YDtjYXNlXCJpbnZhbGlkX3ZhbHVlXCI6aWYoWC52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5gXHU2NUUwXHU2NTQ4XHU4RjkzXHU1MTY1XHVGRjFBXHU2NzFGXHU2NzFCICR7eChYLnZhbHVlc1swXSl9YDtyZXR1cm5gXHU2NUUwXHU2NTQ4XHU5MDA5XHU5ODc5XHVGRjFBXHU2NzFGXHU2NzFCXHU0RUU1XHU0RTBCXHU0RTRCXHU0RTAwICR7UChYLnZhbHVlcyxcInxcIil9YDtjYXNlXCJ0b29fYmlnXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPD1cIjpcIjxcIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1NjU3MFx1NTAzQ1x1OEZDN1x1NTkyN1x1RkYxQVx1NjcxRlx1NjcxQiAke1gub3JpZ2luPz9cIlx1NTAzQ1wifSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHU0RTJBXHU1MTQzXHU3RDIwXCJ9YDtyZXR1cm5gXHU2NTcwXHU1MDNDXHU4RkM3XHU1OTI3XHVGRjFBXHU2NzFGXHU2NzFCICR7WC5vcmlnaW4/P1wiXHU1MDNDXCJ9ICR7V30ke1gubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZVwidG9vX3NtYWxsXCI6e2xldCBXPVguaW5jbHVzaXZlP1wiPj1cIjpcIj5cIixHPVEoWC5vcmlnaW4pO2lmKEcpcmV0dXJuYFx1NjU3MFx1NTAzQ1x1OEZDN1x1NUMwRlx1RkYxQVx1NjcxRlx1NjcxQiAke1gub3JpZ2lufSAke1d9JHtYLm1pbmltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXR9YDtyZXR1cm5gXHU2NTcwXHU1MDNDXHU4RkM3XHU1QzBGXHVGRjFBXHU2NzFGXHU2NzFCICR7WC5vcmlnaW59ICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHU2NUUwXHU2NTQ4XHU1QjU3XHU3QjI2XHU0RTMyXHVGRjFBXHU1RkM1XHU5ODdCXHU0RUU1IFwiJHtXLnByZWZpeH1cIiBcdTVGMDBcdTU5MzRgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHU2NUUwXHU2NTQ4XHU1QjU3XHU3QjI2XHU0RTMyXHVGRjFBXHU1RkM1XHU5ODdCXHU0RUU1IFwiJHtXLnN1ZmZpeH1cIiBcdTdFRDNcdTVDM0VgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTY1RTBcdTY1NDhcdTVCNTdcdTdCMjZcdTRFMzJcdUZGMUFcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkIgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTY1RTBcdTY1NDhcdTVCNTdcdTdCMjZcdTRFMzJcdUZGMUFcdTVGQzVcdTk4N0JcdTZFRTFcdThEQjNcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEYgJHtXLnBhdHRlcm59YDtyZXR1cm5gXHU2NUUwXHU2NTQ4JHtZW1cuZm9ybWF0XT8/WC5mb3JtYXR9YH1jYXNlXCJub3RfbXVsdGlwbGVfb2ZcIjpyZXR1cm5gXHU2NUUwXHU2NTQ4XHU2NTcwXHU1QjU3XHVGRjFBXHU1RkM1XHU5ODdCXHU2NjJGICR7WC5kaXZpc29yfSBcdTc2ODRcdTUwMERcdTY1NzBgO2Nhc2VcInVucmVjb2duaXplZF9rZXlzXCI6cmV0dXJuYFx1NTFGQVx1NzNCMFx1NjcyQVx1NzdFNVx1NzY4NFx1OTUyRShrZXkpOiAke1AoWC5rZXlzLFwiLCBcIil9YDtjYXNlXCJpbnZhbGlkX2tleVwiOnJldHVybmAke1gub3JpZ2lufSBcdTRFMkRcdTc2ODRcdTk1MkUoa2V5KVx1NjVFMFx1NjU0OGA7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHU2NUUwXHU2NTQ4XHU4RjkzXHU1MTY1XCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1NEUyRFx1NTMwNVx1NTQyQlx1NjVFMFx1NjU0OFx1NTAzQyh2YWx1ZSlgO2RlZmF1bHQ6cmV0dXJuXCJcdTY1RTBcdTY1NDhcdThGOTNcdTUxNjVcIn19fTtmdW5jdGlvbiBscSgpe3JldHVybntsb2NhbGVFcnJvcjpydSgpfX12YXIgb3U9KCk9PntsZXQgJD17c3RyaW5nOnt1bml0OlwiXHU1QjU3XHU1MTQzXCIsdmVyYjpcIlx1NjRDMVx1NjcwOVwifSxmaWxlOnt1bml0OlwiXHU0RjREXHU1MTQzXHU3RDQ0XCIsdmVyYjpcIlx1NjRDMVx1NjcwOVwifSxhcnJheTp7dW5pdDpcIlx1OTgwNVx1NzZFRVwiLHZlcmI6XCJcdTY0QzFcdTY3MDlcIn0sc2V0Ont1bml0OlwiXHU5ODA1XHU3NkVFXCIsdmVyYjpcIlx1NjRDMVx1NjcwOVwifX07ZnVuY3Rpb24gUShYKXtyZXR1cm4gJFtYXT8/bnVsbH1sZXQgSj0oWCk9PntsZXQgVz10eXBlb2YgWDtzd2l0Y2goVyl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihYKT9cIk5hTlwiOlwibnVtYmVyXCI7Y2FzZVwib2JqZWN0XCI6e2lmKEFycmF5LmlzQXJyYXkoWCkpcmV0dXJuXCJhcnJheVwiO2lmKFg9PT1udWxsKXJldHVyblwibnVsbFwiO2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZihYKSE9PU9iamVjdC5wcm90b3R5cGUmJlguY29uc3RydWN0b3IpcmV0dXJuIFguY29uc3RydWN0b3IubmFtZX19cmV0dXJuIFd9LFk9e3JlZ2V4OlwiXHU4RjM4XHU1MTY1XCIsZW1haWw6XCJcdTkwRjVcdTRFRjZcdTU3MzBcdTU3NDBcIix1cmw6XCJVUkxcIixlbW9qaTpcImVtb2ppXCIsdXVpZDpcIlVVSURcIix1dWlkdjQ6XCJVVUlEdjRcIix1dWlkdjY6XCJVVUlEdjZcIixuYW5vaWQ6XCJuYW5vaWRcIixndWlkOlwiR1VJRFwiLGN1aWQ6XCJjdWlkXCIsY3VpZDI6XCJjdWlkMlwiLHVsaWQ6XCJVTElEXCIseGlkOlwiWElEXCIsa3N1aWQ6XCJLU1VJRFwiLGRhdGV0aW1lOlwiSVNPIFx1NjVFNVx1NjcxRlx1NjY0Mlx1OTU5M1wiLGRhdGU6XCJJU08gXHU2NUU1XHU2NzFGXCIsdGltZTpcIklTTyBcdTY2NDJcdTk1OTNcIixkdXJhdGlvbjpcIklTTyBcdTY3MUZcdTk1OTNcIixpcHY0OlwiSVB2NCBcdTRGNERcdTU3NDBcIixpcHY2OlwiSVB2NiBcdTRGNERcdTU3NDBcIixjaWRydjQ6XCJJUHY0IFx1N0JDNFx1NTcwRFwiLGNpZHJ2NjpcIklQdjYgXHU3QkM0XHU1NzBEXCIsYmFzZTY0OlwiYmFzZTY0IFx1N0RFOFx1NzhCQ1x1NUI1N1x1NEUzMlwiLGJhc2U2NHVybDpcImJhc2U2NHVybCBcdTdERThcdTc4QkNcdTVCNTdcdTRFMzJcIixqc29uX3N0cmluZzpcIkpTT04gXHU1QjU3XHU0RTMyXCIsZTE2NDpcIkUuMTY0IFx1NjU3OFx1NTAzQ1wiLGp3dDpcIkpXVFwiLHRlbXBsYXRlX2xpdGVyYWw6XCJcdThGMzhcdTUxNjVcIn07cmV0dXJuKFgpPT57c3dpdGNoKFguY29kZSl7Y2FzZVwiaW52YWxpZF90eXBlXCI6cmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1OEYzOFx1NTE2NVx1NTAzQ1x1RkYxQVx1OTgxMFx1NjcxRlx1NzBCQSAke1guZXhwZWN0ZWR9XHVGRjBDXHU0RjQ2XHU2NTM2XHU1MjMwICR7SihYLmlucHV0KX1gO2Nhc2VcImludmFsaWRfdmFsdWVcIjppZihYLnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdThGMzhcdTUxNjVcdTUwM0NcdUZGMUFcdTk4MTBcdTY3MUZcdTcwQkEgJHt4KFgudmFsdWVzWzBdKX1gO3JldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdTkwNzhcdTk4MDVcdUZGMUFcdTk4MTBcdTY3MUZcdTcwQkFcdTRFRTVcdTRFMEJcdTUxNzZcdTRFMkRcdTRFNEJcdTRFMDAgJHtQKFgudmFsdWVzLFwifFwiKX1gO2Nhc2VcInRvb19iaWdcIjp7bGV0IFc9WC5pbmNsdXNpdmU/XCI8PVwiOlwiPFwiLEc9UShYLm9yaWdpbik7aWYoRylyZXR1cm5gXHU2NTc4XHU1MDNDXHU5MDRFXHU1OTI3XHVGRjFBXHU5ODEwXHU2NzFGICR7WC5vcmlnaW4/P1wiXHU1MDNDXCJ9IFx1NjFDOVx1NzBCQSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX0gJHtHLnVuaXQ/P1wiXHU1MDBCXHU1MTQzXHU3RDIwXCJ9YDtyZXR1cm5gXHU2NTc4XHU1MDNDXHU5MDRFXHU1OTI3XHVGRjFBXHU5ODEwXHU2NzFGICR7WC5vcmlnaW4/P1wiXHU1MDNDXCJ9IFx1NjFDOVx1NzBCQSAke1d9JHtYLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2VcInRvb19zbWFsbFwiOntsZXQgVz1YLmluY2x1c2l2ZT9cIj49XCI6XCI+XCIsRz1RKFgub3JpZ2luKTtpZihHKXJldHVybmBcdTY1NzhcdTUwM0NcdTkwNEVcdTVDMEZcdUZGMUFcdTk4MTBcdTY3MUYgJHtYLm9yaWdpbn0gXHU2MUM5XHU3MEJBICR7V30ke1gubWluaW11bS50b1N0cmluZygpfSAke0cudW5pdH1gO3JldHVybmBcdTY1NzhcdTUwM0NcdTkwNEVcdTVDMEZcdUZGMUFcdTk4MTBcdTY3MUYgJHtYLm9yaWdpbn0gXHU2MUM5XHU3MEJBICR7V30ke1gubWluaW11bS50b1N0cmluZygpfWB9Y2FzZVwiaW52YWxpZF9mb3JtYXRcIjp7bGV0IFc9WDtpZihXLmZvcm1hdD09PVwic3RhcnRzX3dpdGhcIilyZXR1cm5gXHU3MTIxXHU2NTQ4XHU3Njg0XHU1QjU3XHU0RTMyXHVGRjFBXHU1RkM1XHU5ODA4XHU0RUU1IFwiJHtXLnByZWZpeH1cIiBcdTk1OEJcdTk4MkRgO2lmKFcuZm9ybWF0PT09XCJlbmRzX3dpdGhcIilyZXR1cm5gXHU3MTIxXHU2NTQ4XHU3Njg0XHU1QjU3XHU0RTMyXHVGRjFBXHU1RkM1XHU5ODA4XHU0RUU1IFwiJHtXLnN1ZmZpeH1cIiBcdTdENTBcdTVDM0VgO2lmKFcuZm9ybWF0PT09XCJpbmNsdWRlc1wiKXJldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdTVCNTdcdTRFMzJcdUZGMUFcdTVGQzVcdTk4MDhcdTUzMDVcdTU0MkIgXCIke1cuaW5jbHVkZXN9XCJgO2lmKFcuZm9ybWF0PT09XCJyZWdleFwiKXJldHVybmBcdTcxMjFcdTY1NDhcdTc2ODRcdTVCNTdcdTRFMzJcdUZGMUFcdTVGQzVcdTk4MDhcdTdCMjZcdTU0MDhcdTY4M0NcdTVGMEYgJHtXLnBhdHRlcm59YDtyZXR1cm5gXHU3MTIxXHU2NTQ4XHU3Njg0ICR7WVtXLmZvcm1hdF0/P1guZm9ybWF0fWB9Y2FzZVwibm90X211bHRpcGxlX29mXCI6cmV0dXJuYFx1NzEyMVx1NjU0OFx1NzY4NFx1NjU3OFx1NUI1N1x1RkYxQVx1NUZDNVx1OTgwOFx1NzBCQSAke1guZGl2aXNvcn0gXHU3Njg0XHU1MDBEXHU2NTc4YDtjYXNlXCJ1bnJlY29nbml6ZWRfa2V5c1wiOnJldHVybmBcdTcxMjFcdTZDRDVcdThCNThcdTUyMjVcdTc2ODRcdTkzNzVcdTUwM0Mke1gua2V5cy5sZW5ndGg+MT9cIlx1NTAxMVwiOlwiXCJ9XHVGRjFBJHtQKFgua2V5cyxcIlx1MzAwMVwiKX1gO2Nhc2VcImludmFsaWRfa2V5XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1NEUyRFx1NjcwOVx1NzEyMVx1NjU0OFx1NzY4NFx1OTM3NVx1NTAzQ2A7Y2FzZVwiaW52YWxpZF91bmlvblwiOnJldHVyblwiXHU3MTIxXHU2NTQ4XHU3Njg0XHU4RjM4XHU1MTY1XHU1MDNDXCI7Y2FzZVwiaW52YWxpZF9lbGVtZW50XCI6cmV0dXJuYCR7WC5vcmlnaW59IFx1NEUyRFx1NjcwOVx1NzEyMVx1NjU0OFx1NzY4NFx1NTAzQ2A7ZGVmYXVsdDpyZXR1cm5cIlx1NzEyMVx1NjU0OFx1NzY4NFx1OEYzOFx1NTE2NVx1NTAzQ1wifX19O2Z1bmN0aW9uIGNxKCl7cmV0dXJue2xvY2FsZUVycm9yOm91KCl9fXZhciBYMz1TeW1ib2woXCJab2RPdXRwdXRcIiksWTM9U3ltYm9sKFwiWm9kSW5wdXRcIik7Y2xhc3MgYlF7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQoJCwuLi5RKXtsZXQgSj1RWzBdO2lmKHRoaXMuX21hcC5zZXQoJCxKKSxKJiZ0eXBlb2YgSj09PVwib2JqZWN0XCImJlwiaWRcImluIEope2lmKHRoaXMuX2lkbWFwLmhhcyhKLmlkKSl0aHJvdyBFcnJvcihgSUQgJHtKLmlkfSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVnaXN0cnlgKTt0aGlzLl9pZG1hcC5zZXQoSi5pZCwkKX1yZXR1cm4gdGhpc31yZW1vdmUoJCl7cmV0dXJuIHRoaXMuX21hcC5kZWxldGUoJCksdGhpc31nZXQoJCl7bGV0IFE9JC5fem9kLnBhcmVudDtpZihRKXtsZXQgSj17Li4udGhpcy5nZXQoUSk/P3t9fTtyZXR1cm4gZGVsZXRlIEouaWQsey4uLkosLi4udGhpcy5fbWFwLmdldCgkKX19cmV0dXJuIHRoaXMuX21hcC5nZXQoJCl9aGFzKCQpe3JldHVybiB0aGlzLl9tYXAuaGFzKCQpfX1mdW5jdGlvbiBfUSgpe3JldHVybiBuZXcgYlF9dmFyIEE2PV9RKCk7ZnVuY3Rpb24gVzMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gcHEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixjb2VyY2U6ITAsLi4uUyhRKX0pfWZ1bmN0aW9uIFNRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiZW1haWxcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gczgoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJndWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGtRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXVpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiB2USgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInV1aWRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSx2ZXJzaW9uOlwidjRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gQ1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJ1dWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsdmVyc2lvbjpcInY2XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIFRRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidXVpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLHZlcnNpb246XCJ2N1wiLC4uLlMoUSl9KX1mdW5jdGlvbiB4USgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInVybFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBmUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImVtb2ppXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIHlRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwibmFub2lkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGdRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiY3VpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBoUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImN1aWQyXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIHVRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidWxpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBtUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcInhpZFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBsUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImtzdWlkXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIGNRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiaXB2NFwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGFib3J0OiExLC4uLlMoUSl9KX1mdW5jdGlvbiBwUSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImlwdjZcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gZFEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJjaWRydjRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gaVEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJjaWRydjZcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gblEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJiYXNlNjRcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gclEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJiYXNlNjR1cmxcIixjaGVjazpcInN0cmluZ19mb3JtYXRcIixhYm9ydDohMSwuLi5TKFEpfSl9ZnVuY3Rpb24gb1EoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJlMTY0XCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfWZ1bmN0aW9uIHRRKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0Olwiand0XCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsYWJvcnQ6ITEsLi4uUyhRKX0pfXZhciBHMz17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gZHEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJkYXRldGltZVwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi5TKFEpfSl9ZnVuY3Rpb24gaXEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJkYXRlXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIG5xKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwidGltZVwiLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLHByZWNpc2lvbjpudWxsLC4uLlMoUSl9KX1mdW5jdGlvbiBycSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImR1cmF0aW9uXCIsY2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIFUzKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVtYmVyXCIsY2hlY2tzOltdLC4uLlMoUSl9KX1mdW5jdGlvbiBvcSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bWJlclwiLGNvZXJjZTohMCxjaGVja3M6W10sLi4uUyhRKX0pfWZ1bmN0aW9uIEgzKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVtYmVyXCIsY2hlY2s6XCJudW1iZXJfZm9ybWF0XCIsYWJvcnQ6ITEsZm9ybWF0Olwic2FmZWludFwiLC4uLlMoUSl9KX1mdW5jdGlvbiBLMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bWJlclwiLGNoZWNrOlwibnVtYmVyX2Zvcm1hdFwiLGFib3J0OiExLGZvcm1hdDpcImZsb2F0MzJcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gcTMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudW1iZXJcIixjaGVjazpcIm51bWJlcl9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJmbG9hdDY0XCIsLi4uUyhRKX0pfWZ1bmN0aW9uIFYzKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibnVtYmVyXCIsY2hlY2s6XCJudW1iZXJfZm9ybWF0XCIsYWJvcnQ6ITEsZm9ybWF0OlwiaW50MzJcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gQjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudW1iZXJcIixjaGVjazpcIm51bWJlcl9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJ1aW50MzJcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gejMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJib29sZWFuXCIsLi4uUyhRKX0pfWZ1bmN0aW9uIHRxKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwiYm9vbGVhblwiLGNvZXJjZTohMCwuLi5TKFEpfSl9ZnVuY3Rpb24gTjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJiaWdpbnRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gYXEoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJiaWdpbnRcIixjb2VyY2U6ITAsLi4uUyhRKX0pfWZ1bmN0aW9uIHczKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwiYmlnaW50XCIsY2hlY2s6XCJiaWdpbnRfZm9ybWF0XCIsYWJvcnQ6ITEsZm9ybWF0OlwiaW50NjRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gTzMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJiaWdpbnRcIixjaGVjazpcImJpZ2ludF9mb3JtYXRcIixhYm9ydDohMSxmb3JtYXQ6XCJ1aW50NjRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gRDMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJzeW1ib2xcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gRjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJ1bmRlZmluZWRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gWjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJudWxsXCIsLi4uUyhRKX0pfWZ1bmN0aW9uIE0zKCQpe3JldHVybiBuZXcgJCh7dHlwZTpcImFueVwifSl9ZnVuY3Rpb24gUzAoJCl7cmV0dXJuIG5ldyAkKHt0eXBlOlwidW5rbm93blwifSl9ZnVuY3Rpb24gTDMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJuZXZlclwiLC4uLlMoUSl9KX1mdW5jdGlvbiBqMygkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcInZvaWRcIiwuLi5TKFEpfSl9ZnVuY3Rpb24gQTMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJkYXRlXCIsLi4uUyhRKX0pfWZ1bmN0aW9uIHNxKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwiZGF0ZVwiLGNvZXJjZTohMCwuLi5TKFEpfSl9ZnVuY3Rpb24gSTMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJuYW5cIiwuLi5TKFEpfSl9ZnVuY3Rpb24gYTQoJCxRKXtyZXR1cm4gbmV3IEpZKHtjaGVjazpcImxlc3NfdGhhblwiLC4uLlMoUSksdmFsdWU6JCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiB0NigkLFEpe3JldHVybiBuZXcgSlkoe2NoZWNrOlwibGVzc190aGFuXCIsLi4uUyhRKSx2YWx1ZTokLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIHM0KCQsUSl7cmV0dXJuIG5ldyBYWSh7Y2hlY2s6XCJncmVhdGVyX3RoYW5cIiwuLi5TKFEpLHZhbHVlOiQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gSTYoJCxRKXtyZXR1cm4gbmV3IFhZKHtjaGVjazpcImdyZWF0ZXJfdGhhblwiLC4uLlMoUSksdmFsdWU6JCxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBlcSgkKXtyZXR1cm4gczQoMCwkKX1mdW5jdGlvbiAkVigkKXtyZXR1cm4gYTQoMCwkKX1mdW5jdGlvbiBRVigkKXtyZXR1cm4gdDYoMCwkKX1mdW5jdGlvbiBKVigkKXtyZXR1cm4gSTYoMCwkKX1mdW5jdGlvbiBrMCgkLFEpe3JldHVybiBuZXcgeEsoe2NoZWNrOlwibXVsdGlwbGVfb2ZcIiwuLi5TKFEpLHZhbHVlOiR9KX1mdW5jdGlvbiBlOCgkLFEpe3JldHVybiBuZXcgZ0soe2NoZWNrOlwibWF4X3NpemVcIiwuLi5TKFEpLG1heGltdW06JH0pfWZ1bmN0aW9uIHYwKCQsUSl7cmV0dXJuIG5ldyBoSyh7Y2hlY2s6XCJtaW5fc2l6ZVwiLC4uLlMoUSksbWluaW11bTokfSl9ZnVuY3Rpb24gYVEoJCxRKXtyZXR1cm4gbmV3IHVLKHtjaGVjazpcInNpemVfZXF1YWxzXCIsLi4uUyhRKSxzaXplOiR9KX1mdW5jdGlvbiAkOSgkLFEpe3JldHVybiBuZXcgbUsoe2NoZWNrOlwibWF4X2xlbmd0aFwiLC4uLlMoUSksbWF4aW11bTokfSl9ZnVuY3Rpb24gazEoJCxRKXtyZXR1cm4gbmV3IGxLKHtjaGVjazpcIm1pbl9sZW5ndGhcIiwuLi5TKFEpLG1pbmltdW06JH0pfWZ1bmN0aW9uIFE5KCQsUSl7cmV0dXJuIG5ldyBjSyh7Y2hlY2s6XCJsZW5ndGhfZXF1YWxzXCIsLi4uUyhRKSxsZW5ndGg6JH0pfWZ1bmN0aW9uIHNRKCQsUSl7cmV0dXJuIG5ldyBwSyh7Y2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsZm9ybWF0OlwicmVnZXhcIiwuLi5TKFEpLHBhdHRlcm46JH0pfWZ1bmN0aW9uIGVRKCQpe3JldHVybiBuZXcgZEsoe2NoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLGZvcm1hdDpcImxvd2VyY2FzZVwiLC4uLlMoJCl9KX1mdW5jdGlvbiAkSigkKXtyZXR1cm4gbmV3IGlLKHtjaGVjazpcInN0cmluZ19mb3JtYXRcIixmb3JtYXQ6XCJ1cHBlcmNhc2VcIiwuLi5TKCQpfSl9ZnVuY3Rpb24gUUooJCxRKXtyZXR1cm4gbmV3IG5LKHtjaGVjazpcInN0cmluZ19mb3JtYXRcIixmb3JtYXQ6XCJpbmNsdWRlc1wiLC4uLlMoUSksaW5jbHVkZXM6JH0pfWZ1bmN0aW9uIEpKKCQsUSl7cmV0dXJuIG5ldyBySyh7Y2hlY2s6XCJzdHJpbmdfZm9ybWF0XCIsZm9ybWF0Olwic3RhcnRzX3dpdGhcIiwuLi5TKFEpLHByZWZpeDokfSl9ZnVuY3Rpb24gWEooJCxRKXtyZXR1cm4gbmV3IG9LKHtjaGVjazpcInN0cmluZ19mb3JtYXRcIixmb3JtYXQ6XCJlbmRzX3dpdGhcIiwuLi5TKFEpLHN1ZmZpeDokfSl9ZnVuY3Rpb24gWFYoJCxRLEope3JldHVybiBuZXcgdEsoe2NoZWNrOlwicHJvcGVydHlcIixwcm9wZXJ0eTokLHNjaGVtYTpRLC4uLlMoSil9KX1mdW5jdGlvbiBZSigkLFEpe3JldHVybiBuZXcgYUsoe2NoZWNrOlwibWltZV90eXBlXCIsbWltZTokLC4uLlMoUSl9KX1mdW5jdGlvbiBlNCgkKXtyZXR1cm4gbmV3IHNLKHtjaGVjazpcIm92ZXJ3cml0ZVwiLHR4OiR9KX1mdW5jdGlvbiBXSigkKXtyZXR1cm4gZTQoKFEpPT5RLm5vcm1hbGl6ZSgkKSl9ZnVuY3Rpb24gR0ooKXtyZXR1cm4gZTQoKCQpPT4kLnRyaW0oKSl9ZnVuY3Rpb24gVUooKXtyZXR1cm4gZTQoKCQpPT4kLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIEhKKCl7cmV0dXJuIGU0KCgkKT0+JC50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBLSigkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiYXJyYXlcIixlbGVtZW50OlEsLi4uUyhKKX0pfWZ1bmN0aW9uIHR1KCQsUSxKKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJ1bmlvblwiLG9wdGlvbnM6USwuLi5TKEopfSl9ZnVuY3Rpb24gYXUoJCxRLEosWSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwidW5pb25cIixvcHRpb25zOkosZGlzY3JpbWluYXRvcjpRLC4uLlMoWSl9KX1mdW5jdGlvbiBzdSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiaW50ZXJzZWN0aW9uXCIsbGVmdDpRLHJpZ2h0Okp9KX1mdW5jdGlvbiBZVigkLFEsSixZKXtsZXQgWD1KIGluc3RhbmNlb2YgbztyZXR1cm4gbmV3ICQoe3R5cGU6XCJ0dXBsZVwiLGl0ZW1zOlEscmVzdDpYP0o6bnVsbCwuLi5TKFg/WTpKKX0pfWZ1bmN0aW9uIGV1KCQsUSxKLFkpe3JldHVybiBuZXcgJCh7dHlwZTpcInJlY29yZFwiLGtleVR5cGU6USx2YWx1ZVR5cGU6SiwuLi5TKFkpfSl9ZnVuY3Rpb24gJG0oJCxRLEosWSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwibWFwXCIsa2V5VHlwZTpRLHZhbHVlVHlwZTpKLC4uLlMoWSl9KX1mdW5jdGlvbiBRbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwic2V0XCIsdmFsdWVUeXBlOlEsLi4uUyhKKX0pfWZ1bmN0aW9uIEptKCQsUSxKKXtsZXQgWT1BcnJheS5pc0FycmF5KFEpP09iamVjdC5mcm9tRW50cmllcyhRLm1hcCgoWCk9PltYLFhdKSk6UTtyZXR1cm4gbmV3ICQoe3R5cGU6XCJlbnVtXCIsZW50cmllczpZLC4uLlMoSil9KX1mdW5jdGlvbiBYbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiZW51bVwiLGVudHJpZXM6USwuLi5TKEopfSl9ZnVuY3Rpb24gWW0oJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcImxpdGVyYWxcIix2YWx1ZXM6QXJyYXkuaXNBcnJheShRKT9ROltRXSwuLi5TKEopfSl9ZnVuY3Rpb24gUjMoJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJmaWxlXCIsLi4uUyhRKX0pfWZ1bmN0aW9uIFdtKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwidHJhbnNmb3JtXCIsdHJhbnNmb3JtOlF9KX1mdW5jdGlvbiBHbSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm9wdGlvbmFsXCIsaW5uZXJUeXBlOlF9KX1mdW5jdGlvbiBVbSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcIm51bGxhYmxlXCIsaW5uZXJUeXBlOlF9KX1mdW5jdGlvbiBIbSgkLFEsSil7cmV0dXJuIG5ldyAkKHt0eXBlOlwiZGVmYXVsdFwiLGlubmVyVHlwZTpRLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIEo9PT1cImZ1bmN0aW9uXCI/SigpOkp9fSl9ZnVuY3Rpb24gS20oJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcIm5vbm9wdGlvbmFsXCIsaW5uZXJUeXBlOlEsLi4uUyhKKX0pfWZ1bmN0aW9uIHFtKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwic3VjY2Vzc1wiLGlubmVyVHlwZTpRfSl9ZnVuY3Rpb24gVm0oJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcImNhdGNoXCIsaW5uZXJUeXBlOlEsY2F0Y2hWYWx1ZTp0eXBlb2YgSj09PVwiZnVuY3Rpb25cIj9KOigpPT5KfSl9ZnVuY3Rpb24gQm0oJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcInBpcGVcIixpbjpRLG91dDpKfSl9ZnVuY3Rpb24gem0oJCxRKXtyZXR1cm4gbmV3ICQoe3R5cGU6XCJyZWFkb25seVwiLGlubmVyVHlwZTpRfSl9ZnVuY3Rpb24gTm0oJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcInRlbXBsYXRlX2xpdGVyYWxcIixwYXJ0czpRLC4uLlMoSil9KX1mdW5jdGlvbiB3bSgkLFEpe3JldHVybiBuZXcgJCh7dHlwZTpcImxhenlcIixnZXR0ZXI6UX0pfWZ1bmN0aW9uIE9tKCQsUSl7cmV0dXJuIG5ldyAkKHt0eXBlOlwicHJvbWlzZVwiLGlubmVyVHlwZTpRfSl9ZnVuY3Rpb24gUDMoJCxRLEope2xldCBZPVMoSik7cmV0dXJuIFkuYWJvcnQ/PyhZLmFib3J0PSEwKSxuZXcgJCh7dHlwZTpcImN1c3RvbVwiLGNoZWNrOlwiY3VzdG9tXCIsZm46USwuLi5ZfSl9ZnVuY3Rpb24gRTMoJCxRLEope3JldHVybiBuZXcgJCh7dHlwZTpcImN1c3RvbVwiLGNoZWNrOlwiY3VzdG9tXCIsZm46USwuLi5TKEopfSl9ZnVuY3Rpb24gYjMoJCxRKXtsZXQgSj1TKFEpLFk9Si50cnV0aHk/P1tcInRydWVcIixcIjFcIixcInllc1wiLFwib25cIixcInlcIixcImVuYWJsZWRcIl0sWD1KLmZhbHN5Pz9bXCJmYWxzZVwiLFwiMFwiLFwibm9cIixcIm9mZlwiLFwiblwiLFwiZGlzYWJsZWRcIl07aWYoSi5jYXNlIT09XCJzZW5zaXRpdmVcIilZPVkubWFwKCh3KT0+dHlwZW9mIHc9PT1cInN0cmluZ1wiP3cudG9Mb3dlckNhc2UoKTp3KSxYPVgubWFwKCh3KT0+dHlwZW9mIHc9PT1cInN0cmluZ1wiP3cudG9Mb3dlckNhc2UoKTp3KTtsZXQgVz1uZXcgU2V0KFkpLEc9bmV3IFNldChYKSxVPSQuUGlwZT8/dDgsSD0kLkJvb2xlYW4/P244LHE9JC5TdHJpbmc/P18xLEI9bmV3KCQuVHJhbnNmb3JtPz9vOCkoe3R5cGU6XCJ0cmFuc2Zvcm1cIix0cmFuc2Zvcm06KHcsTyk9PntsZXQgRD13O2lmKEouY2FzZSE9PVwic2Vuc2l0aXZlXCIpRD1ELnRvTG93ZXJDYXNlKCk7aWYoVy5oYXMoRCkpcmV0dXJuITA7ZWxzZSBpZihHLmhhcyhEKSlyZXR1cm4hMTtlbHNlIHJldHVybiBPLmlzc3Vlcy5wdXNoKHtjb2RlOlwiaW52YWxpZF92YWx1ZVwiLGV4cGVjdGVkOlwic3RyaW5nYm9vbFwiLHZhbHVlczpbLi4uVywuLi5HXSxpbnB1dDpPLnZhbHVlLGluc3Q6Qn0pLHt9fSxlcnJvcjpKLmVycm9yfSksej1uZXcgVSh7dHlwZTpcInBpcGVcIixpbjpuZXcgcSh7dHlwZTpcInN0cmluZ1wiLGVycm9yOkouZXJyb3J9KSxvdXQ6QixlcnJvcjpKLmVycm9yfSk7cmV0dXJuIG5ldyBVKHt0eXBlOlwicGlwZVwiLGluOnosb3V0Om5ldyBIKHt0eXBlOlwiYm9vbGVhblwiLGVycm9yOkouZXJyb3J9KSxlcnJvcjpKLmVycm9yfSl9ZnVuY3Rpb24gXzMoJCxRLEosWT17fSl7bGV0IFg9UyhZKSxXPXsuLi5TKFkpLGNoZWNrOlwic3RyaW5nX2Zvcm1hdFwiLHR5cGU6XCJzdHJpbmdcIixmb3JtYXQ6USxmbjp0eXBlb2YgSj09PVwiZnVuY3Rpb25cIj9KOihVKT0+Si50ZXN0KFUpLC4uLlh9O2lmKEogaW5zdGFuY2VvZiBSZWdFeHApVy5wYXR0ZXJuPUo7cmV0dXJuIG5ldyAkKFcpfWNsYXNzIFdWe2NvbnN0cnVjdG9yKCQpe3RoaXMuX2RlZj0kLHRoaXMuZGVmPSR9aW1wbGVtZW50KCQpe2lmKHR5cGVvZiAkIT09XCJmdW5jdGlvblwiKXRocm93IEVycm9yKFwiaW1wbGVtZW50KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uXCIpO2xldCBRPSguLi5KKT0+e2xldCBZPXRoaXMuX2RlZi5pbnB1dD9QMCh0aGlzLl9kZWYuaW5wdXQsSix2b2lkIDAse2NhbGxlZTpRfSk6SjtpZighQXJyYXkuaXNBcnJheShZKSl0aHJvdyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIHNjaGVtYTogbm90IGFuIGFycmF5IG9yIHR1cGxlIHNjaGVtYS5cIik7bGV0IFg9JCguLi5ZKTtyZXR1cm4gdGhpcy5fZGVmLm91dHB1dD9QMCh0aGlzLl9kZWYub3V0cHV0LFgsdm9pZCAwLHtjYWxsZWU6UX0pOlh9O3JldHVybiBRfWltcGxlbWVudEFzeW5jKCQpe2lmKHR5cGVvZiAkIT09XCJmdW5jdGlvblwiKXRocm93IEVycm9yKFwiaW1wbGVtZW50KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uXCIpO2xldCBRPWFzeW5jKC4uLkopPT57bGV0IFk9dGhpcy5fZGVmLmlucHV0P2F3YWl0IEUwKHRoaXMuX2RlZi5pbnB1dCxKLHZvaWQgMCx7Y2FsbGVlOlF9KTpKO2lmKCFBcnJheS5pc0FycmF5KFkpKXRocm93IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgc2NoZW1hOiBub3QgYW4gYXJyYXkgb3IgdHVwbGUgc2NoZW1hLlwiKTtsZXQgWD1hd2FpdCAkKC4uLlkpO3JldHVybiB0aGlzLl9kZWYub3V0cHV0P0UwKHRoaXMuX2RlZi5vdXRwdXQsWCx2b2lkIDAse2NhbGxlZTpRfSk6WH07cmV0dXJuIFF9aW5wdXQoLi4uJCl7bGV0IFE9dGhpcy5jb25zdHJ1Y3RvcjtpZihBcnJheS5pc0FycmF5KCRbMF0pKXJldHVybiBuZXcgUSh7dHlwZTpcImZ1bmN0aW9uXCIsaW5wdXQ6bmV3IFMxKHt0eXBlOlwidHVwbGVcIixpdGVtczokWzBdLHJlc3Q6JFsxXX0pLG91dHB1dDp0aGlzLl9kZWYub3V0cHV0fSk7cmV0dXJuIG5ldyBRKHt0eXBlOlwiZnVuY3Rpb25cIixpbnB1dDokWzBdLG91dHB1dDp0aGlzLl9kZWYub3V0cHV0fSl9b3V0cHV0KCQpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7dHlwZTpcImZ1bmN0aW9uXCIsaW5wdXQ6dGhpcy5fZGVmLmlucHV0LG91dHB1dDokfSl9fWZ1bmN0aW9uIFMzKCQpe3JldHVybiBuZXcgV1Yoe3R5cGU6XCJmdW5jdGlvblwiLGlucHV0OkFycmF5LmlzQXJyYXkoJD8uaW5wdXQpP1lWKFMxLCQ/LmlucHV0KTokPy5pbnB1dD8/S0oocjgsUzAoXzApKSxvdXRwdXQ6JD8ub3V0cHV0Pz9TMChfMCl9KX1jbGFzcyBrM3tjb25zdHJ1Y3RvcigkKXt0aGlzLmNvdW50ZXI9MCx0aGlzLm1ldGFkYXRhUmVnaXN0cnk9JD8ubWV0YWRhdGE/P0E2LHRoaXMudGFyZ2V0PSQ/LnRhcmdldD8/XCJkcmFmdC0yMDIwLTEyXCIsdGhpcy51bnJlcHJlc2VudGFibGU9JD8udW5yZXByZXNlbnRhYmxlPz9cInRocm93XCIsdGhpcy5vdmVycmlkZT0kPy5vdmVycmlkZT8/KCgpPT57fSksdGhpcy5pbz0kPy5pbz8/XCJvdXRwdXRcIix0aGlzLnNlZW49bmV3IE1hcH1wcm9jZXNzKCQsUT17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7dmFyIEo7bGV0IFk9JC5fem9kLmRlZixYPXtndWlkOlwidXVpZFwiLHVybDpcInVyaVwiLGRhdGV0aW1lOlwiZGF0ZS10aW1lXCIsanNvbl9zdHJpbmc6XCJqc29uLXN0cmluZ1wiLHJlZ2V4OlwiXCJ9LFc9dGhpcy5zZWVuLmdldCgkKTtpZihXKXtpZihXLmNvdW50KyssUS5zY2hlbWFQYXRoLmluY2x1ZGVzKCQpKVcuY3ljbGU9US5wYXRoO3JldHVybiBXLnNjaGVtYX1sZXQgRz17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6US5wYXRofTt0aGlzLnNlZW4uc2V0KCQsRyk7bGV0IFU9JC5fem9kLnRvSlNPTlNjaGVtYT8uKCk7aWYoVSlHLnNjaGVtYT1VO2Vsc2V7bGV0IFY9ey4uLlEsc2NoZW1hUGF0aDpbLi4uUS5zY2hlbWFQYXRoLCRdLHBhdGg6US5wYXRofSxCPSQuX3pvZC5wYXJlbnQ7aWYoQilHLnJlZj1CLHRoaXMucHJvY2VzcyhCLFYpLHRoaXMuc2Vlbi5nZXQoQikuaXNQYXJlbnQ9ITA7ZWxzZXtsZXQgej1HLnNjaGVtYTtzd2l0Y2goWS50eXBlKXtjYXNlXCJzdHJpbmdcIjp7bGV0IE49ejtOLnR5cGU9XCJzdHJpbmdcIjtsZXR7bWluaW11bTp3LG1heGltdW06Tyxmb3JtYXQ6RCxwYXR0ZXJuczpNLGNvbnRlbnRFbmNvZGluZzpqfT0kLl96b2QuYmFnO2lmKHR5cGVvZiB3PT09XCJudW1iZXJcIilOLm1pbkxlbmd0aD13O2lmKHR5cGVvZiBPPT09XCJudW1iZXJcIilOLm1heExlbmd0aD1PO2lmKEQpe2lmKE4uZm9ybWF0PVhbRF0/P0QsTi5mb3JtYXQ9PT1cIlwiKWRlbGV0ZSBOLmZvcm1hdH1pZihqKU4uY29udGVudEVuY29kaW5nPWo7aWYoTSYmTS5zaXplPjApe2xldCBBPVsuLi5NXTtpZihBLmxlbmd0aD09PTEpTi5wYXR0ZXJuPUFbMF0uc291cmNlO2Vsc2UgaWYoQS5sZW5ndGg+MSlHLnNjaGVtYS5hbGxPZj1bLi4uQS5tYXAoKGspPT4oey4uLnRoaXMudGFyZ2V0PT09XCJkcmFmdC03XCI/e3R5cGU6XCJzdHJpbmdcIn06e30scGF0dGVybjprLnNvdXJjZX0pKV19YnJlYWt9Y2FzZVwibnVtYmVyXCI6e2xldCBOPXose21pbmltdW06dyxtYXhpbXVtOk8sZm9ybWF0OkQsbXVsdGlwbGVPZjpNLGV4Y2x1c2l2ZU1heGltdW06aixleGNsdXNpdmVNaW5pbXVtOkF9PSQuX3pvZC5iYWc7aWYodHlwZW9mIEQ9PT1cInN0cmluZ1wiJiZELmluY2x1ZGVzKFwiaW50XCIpKU4udHlwZT1cImludGVnZXJcIjtlbHNlIE4udHlwZT1cIm51bWJlclwiO2lmKHR5cGVvZiBBPT09XCJudW1iZXJcIilOLmV4Y2x1c2l2ZU1pbmltdW09QTtpZih0eXBlb2Ygdz09PVwibnVtYmVyXCIpe2lmKE4ubWluaW11bT13LHR5cGVvZiBBPT09XCJudW1iZXJcIilpZihBPj13KWRlbGV0ZSBOLm1pbmltdW07ZWxzZSBkZWxldGUgTi5leGNsdXNpdmVNaW5pbXVtfWlmKHR5cGVvZiBqPT09XCJudW1iZXJcIilOLmV4Y2x1c2l2ZU1heGltdW09ajtpZih0eXBlb2YgTz09PVwibnVtYmVyXCIpe2lmKE4ubWF4aW11bT1PLHR5cGVvZiBqPT09XCJudW1iZXJcIilpZihqPD1PKWRlbGV0ZSBOLm1heGltdW07ZWxzZSBkZWxldGUgTi5leGNsdXNpdmVNYXhpbXVtfWlmKHR5cGVvZiBNPT09XCJudW1iZXJcIilOLm11bHRpcGxlT2Y9TTticmVha31jYXNlXCJib29sZWFuXCI6e2xldCBOPXo7Ti50eXBlPVwiYm9vbGVhblwiO2JyZWFrfWNhc2VcImJpZ2ludFwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIkJpZ0ludCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwic3ltYm9sXCI6e2lmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiU3ltYm9scyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwibnVsbFwiOnt6LnR5cGU9XCJudWxsXCI7YnJlYWt9Y2FzZVwiYW55XCI6YnJlYWs7Y2FzZVwidW5rbm93blwiOmJyZWFrO2Nhc2VcInVuZGVmaW5lZFwiOmNhc2VcIm5ldmVyXCI6e3oubm90PXt9O2JyZWFrfWNhc2VcInZvaWRcIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTticmVha31jYXNlXCJkYXRlXCI6e2lmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwiYXJyYXlcIjp7bGV0IE49eix7bWluaW11bTp3LG1heGltdW06T309JC5fem9kLmJhZztpZih0eXBlb2Ygdz09PVwibnVtYmVyXCIpTi5taW5JdGVtcz13O2lmKHR5cGVvZiBPPT09XCJudW1iZXJcIilOLm1heEl0ZW1zPU87Ti50eXBlPVwiYXJyYXlcIixOLml0ZW1zPXRoaXMucHJvY2VzcyhZLmVsZW1lbnQsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiaXRlbXNcIl19KTticmVha31jYXNlXCJvYmplY3RcIjp7bGV0IE49ejtOLnR5cGU9XCJvYmplY3RcIixOLnByb3BlcnRpZXM9e307bGV0IHc9WS5zaGFwZTtmb3IobGV0IE0gaW4gdylOLnByb3BlcnRpZXNbTV09dGhpcy5wcm9jZXNzKHdbTV0sey4uLlYscGF0aDpbLi4uVi5wYXRoLFwicHJvcGVydGllc1wiLE1dfSk7bGV0IE89bmV3IFNldChPYmplY3Qua2V5cyh3KSksRD1uZXcgU2V0KFsuLi5PXS5maWx0ZXIoKE0pPT57bGV0IGo9WS5zaGFwZVtNXS5fem9kO2lmKHRoaXMuaW89PT1cImlucHV0XCIpcmV0dXJuIGoub3B0aW49PT12b2lkIDA7ZWxzZSByZXR1cm4gai5vcHRvdXQ9PT12b2lkIDB9KSk7aWYoRC5zaXplPjApTi5yZXF1aXJlZD1BcnJheS5mcm9tKEQpO2lmKFkuY2F0Y2hhbGw/Ll96b2QuZGVmLnR5cGU9PT1cIm5ldmVyXCIpTi5hZGRpdGlvbmFsUHJvcGVydGllcz0hMTtlbHNlIGlmKCFZLmNhdGNoYWxsKXtpZih0aGlzLmlvPT09XCJvdXRwdXRcIilOLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExfWVsc2UgaWYoWS5jYXRjaGFsbClOLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPXRoaXMucHJvY2VzcyhZLmNhdGNoYWxsLHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdfSk7YnJlYWt9Y2FzZVwidW5pb25cIjp7bGV0IE49ejtOLmFueU9mPVkub3B0aW9ucy5tYXAoKHcsTyk9PnRoaXMucHJvY2Vzcyh3LHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcImFueU9mXCIsT119KSk7YnJlYWt9Y2FzZVwiaW50ZXJzZWN0aW9uXCI6e2xldCBOPXosdz10aGlzLnByb2Nlc3MoWS5sZWZ0LHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcImFsbE9mXCIsMF19KSxPPXRoaXMucHJvY2VzcyhZLnJpZ2h0LHsuLi5WLHBhdGg6Wy4uLlYucGF0aCxcImFsbE9mXCIsMV19KSxEPShqKT0+KFwiYWxsT2ZcImluIGopJiZPYmplY3Qua2V5cyhqKS5sZW5ndGg9PT0xLE09Wy4uLkQodyk/dy5hbGxPZjpbd10sLi4uRChPKT9PLmFsbE9mOltPXV07Ti5hbGxPZj1NO2JyZWFrfWNhc2VcInR1cGxlXCI6e2xldCBOPXo7Ti50eXBlPVwiYXJyYXlcIjtsZXQgdz1ZLml0ZW1zLm1hcCgoTSxqKT0+dGhpcy5wcm9jZXNzKE0sey4uLlYscGF0aDpbLi4uVi5wYXRoLFwicHJlZml4SXRlbXNcIixqXX0pKTtpZih0aGlzLnRhcmdldD09PVwiZHJhZnQtMjAyMC0xMlwiKU4ucHJlZml4SXRlbXM9dztlbHNlIE4uaXRlbXM9dztpZihZLnJlc3Qpe2xldCBNPXRoaXMucHJvY2VzcyhZLnJlc3Qsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiaXRlbXNcIl19KTtpZih0aGlzLnRhcmdldD09PVwiZHJhZnQtMjAyMC0xMlwiKU4uaXRlbXM9TTtlbHNlIE4uYWRkaXRpb25hbEl0ZW1zPU19aWYoWS5yZXN0KU4uaXRlbXM9dGhpcy5wcm9jZXNzKFkucmVzdCx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJpdGVtc1wiXX0pO2xldHttaW5pbXVtOk8sbWF4aW11bTpEfT0kLl96b2QuYmFnO2lmKHR5cGVvZiBPPT09XCJudW1iZXJcIilOLm1pbkl0ZW1zPU87aWYodHlwZW9mIEQ9PT1cIm51bWJlclwiKU4ubWF4SXRlbXM9RDticmVha31jYXNlXCJyZWNvcmRcIjp7bGV0IE49ejtOLnR5cGU9XCJvYmplY3RcIixOLnByb3BlcnR5TmFtZXM9dGhpcy5wcm9jZXNzKFkua2V5VHlwZSx7Li4uVixwYXRoOlsuLi5WLnBhdGgsXCJwcm9wZXJ0eU5hbWVzXCJdfSksTi5hZGRpdGlvbmFsUHJvcGVydGllcz10aGlzLnByb2Nlc3MoWS52YWx1ZVR5cGUsey4uLlYscGF0aDpbLi4uVi5wYXRoLFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl19KTticmVha31jYXNlXCJtYXBcIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO2JyZWFrfWNhc2VcInNldFwiOntpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwiZW51bVwiOntsZXQgTj16LHc9T1EoWS5lbnRyaWVzKTtpZih3LmV2ZXJ5KChPKT0+dHlwZW9mIE89PT1cIm51bWJlclwiKSlOLnR5cGU9XCJudW1iZXJcIjtpZih3LmV2ZXJ5KChPKT0+dHlwZW9mIE89PT1cInN0cmluZ1wiKSlOLnR5cGU9XCJzdHJpbmdcIjtOLmVudW09dzticmVha31jYXNlXCJsaXRlcmFsXCI6e2xldCBOPXosdz1bXTtmb3IobGV0IE8gb2YgWS52YWx1ZXMpaWYoTz09PXZvaWQgMCl7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKX1lbHNlIGlmKHR5cGVvZiBPPT09XCJiaWdpbnRcIilpZih0aGlzLnVucmVwcmVzZW50YWJsZT09PVwidGhyb3dcIil0aHJvdyBFcnJvcihcIkJpZ0ludCBsaXRlcmFscyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7ZWxzZSB3LnB1c2goTnVtYmVyKE8pKTtlbHNlIHcucHVzaChPKTtpZih3Lmxlbmd0aD09PTApO2Vsc2UgaWYody5sZW5ndGg9PT0xKXtsZXQgTz13WzBdO04udHlwZT1PPT09bnVsbD9cIm51bGxcIjp0eXBlb2YgTyxOLmNvbnN0PU99ZWxzZXtpZih3LmV2ZXJ5KChPKT0+dHlwZW9mIE89PT1cIm51bWJlclwiKSlOLnR5cGU9XCJudW1iZXJcIjtpZih3LmV2ZXJ5KChPKT0+dHlwZW9mIE89PT1cInN0cmluZ1wiKSlOLnR5cGU9XCJzdHJpbmdcIjtpZih3LmV2ZXJ5KChPKT0+dHlwZW9mIE89PT1cImJvb2xlYW5cIikpTi50eXBlPVwic3RyaW5nXCI7aWYody5ldmVyeSgoTyk9Pk89PT1udWxsKSlOLnR5cGU9XCJudWxsXCI7Ti5lbnVtPXd9YnJlYWt9Y2FzZVwiZmlsZVwiOntsZXQgTj16LHc9e3R5cGU6XCJzdHJpbmdcIixmb3JtYXQ6XCJiaW5hcnlcIixjb250ZW50RW5jb2Rpbmc6XCJiaW5hcnlcIn0se21pbmltdW06TyxtYXhpbXVtOkQsbWltZTpNfT0kLl96b2QuYmFnO2lmKE8hPT12b2lkIDApdy5taW5MZW5ndGg9TztpZihEIT09dm9pZCAwKXcubWF4TGVuZ3RoPUQ7aWYoTSlpZihNLmxlbmd0aD09PTEpdy5jb250ZW50TWVkaWFUeXBlPU1bMF0sT2JqZWN0LmFzc2lnbihOLHcpO2Vsc2UgTi5hbnlPZj1NLm1hcCgoaik9PntyZXR1cm57Li4udyxjb250ZW50TWVkaWFUeXBlOmp9fSk7ZWxzZSBPYmplY3QuYXNzaWduKE4sdyk7YnJlYWt9Y2FzZVwidHJhbnNmb3JtXCI6e2lmKHRoaXMudW5yZXByZXNlbnRhYmxlPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKFwiVHJhbnNmb3JtcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7YnJlYWt9Y2FzZVwibnVsbGFibGVcIjp7bGV0IE49dGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpO3ouYW55T2Y9W04se3R5cGU6XCJudWxsXCJ9XTticmVha31jYXNlXCJub25vcHRpb25hbFwiOnt0aGlzLnByb2Nlc3MoWS5pbm5lclR5cGUsViksRy5yZWY9WS5pbm5lclR5cGU7YnJlYWt9Y2FzZVwic3VjY2Vzc1wiOntsZXQgTj16O04udHlwZT1cImJvb2xlYW5cIjticmVha31jYXNlXCJkZWZhdWx0XCI6e3RoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZSx6LmRlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShZLmRlZmF1bHRWYWx1ZSkpO2JyZWFrfWNhc2VcInByZWZhdWx0XCI6e2lmKHRoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZSx0aGlzLmlvPT09XCJpbnB1dFwiKXouX3ByZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWS5kZWZhdWx0VmFsdWUpKTticmVha31jYXNlXCJjYXRjaFwiOnt0aGlzLnByb2Nlc3MoWS5pbm5lclR5cGUsViksRy5yZWY9WS5pbm5lclR5cGU7bGV0IE47dHJ5e049WS5jYXRjaFZhbHVlKHZvaWQgMCl9Y2F0Y2h7dGhyb3cgRXJyb3IoXCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYVwiKX16LmRlZmF1bHQ9TjticmVha31jYXNlXCJuYW5cIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO2JyZWFrfWNhc2VcInRlbXBsYXRlX2xpdGVyYWxcIjp7bGV0IE49eix3PSQuX3pvZC5wYXR0ZXJuO2lmKCF3KXRocm93IEVycm9yKFwiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbFwiKTtOLnR5cGU9XCJzdHJpbmdcIixOLnBhdHRlcm49dy5zb3VyY2U7YnJlYWt9Y2FzZVwicGlwZVwiOntsZXQgTj10aGlzLmlvPT09XCJpbnB1dFwiP1kuaW4uX3pvZC5kZWYudHlwZT09PVwidHJhbnNmb3JtXCI/WS5vdXQ6WS5pbjpZLm91dDt0aGlzLnByb2Nlc3MoTixWKSxHLnJlZj1OO2JyZWFrfWNhc2VcInJlYWRvbmx5XCI6e3RoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZSx6LnJlYWRPbmx5PSEwO2JyZWFrfWNhc2VcInByb21pc2VcIjp7dGhpcy5wcm9jZXNzKFkuaW5uZXJUeXBlLFYpLEcucmVmPVkuaW5uZXJUeXBlO2JyZWFrfWNhc2VcIm9wdGlvbmFsXCI6e3RoaXMucHJvY2VzcyhZLmlubmVyVHlwZSxWKSxHLnJlZj1ZLmlubmVyVHlwZTticmVha31jYXNlXCJsYXp5XCI6e2xldCBOPSQuX3pvZC5pbm5lclR5cGU7dGhpcy5wcm9jZXNzKE4sViksRy5yZWY9TjticmVha31jYXNlXCJjdXN0b21cIjp7aWYodGhpcy51bnJlcHJlc2VudGFibGU9PT1cInRocm93XCIpdGhyb3cgRXJyb3IoXCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO2JyZWFrfWRlZmF1bHQ6fX19bGV0IEg9dGhpcy5tZXRhZGF0YVJlZ2lzdHJ5LmdldCgkKTtpZihIKU9iamVjdC5hc3NpZ24oRy5zY2hlbWEsSCk7aWYodGhpcy5pbz09PVwiaW5wdXRcIiYmdCQoJCkpZGVsZXRlIEcuc2NoZW1hLmV4YW1wbGVzLGRlbGV0ZSBHLnNjaGVtYS5kZWZhdWx0O2lmKHRoaXMuaW89PT1cImlucHV0XCImJkcuc2NoZW1hLl9wcmVmYXVsdCkoSj1HLnNjaGVtYSkuZGVmYXVsdD8/KEouZGVmYXVsdD1HLnNjaGVtYS5fcHJlZmF1bHQpO3JldHVybiBkZWxldGUgRy5zY2hlbWEuX3ByZWZhdWx0LHRoaXMuc2Vlbi5nZXQoJCkuc2NoZW1hfWVtaXQoJCxRKXtsZXQgSj17Y3ljbGVzOlE/LmN5Y2xlcz8/XCJyZWZcIixyZXVzZWQ6UT8ucmV1c2VkPz9cImlubGluZVwiLGV4dGVybmFsOlE/LmV4dGVybmFsPz92b2lkIDB9LFk9dGhpcy5zZWVuLmdldCgkKTtpZighWSl0aHJvdyBFcnJvcihcIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuXCIpO2xldCBYPShxKT0+e2xldCBWPXRoaXMudGFyZ2V0PT09XCJkcmFmdC0yMDIwLTEyXCI/XCIkZGVmc1wiOlwiZGVmaW5pdGlvbnNcIjtpZihKLmV4dGVybmFsKXtsZXQgdz1KLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChxWzBdKT8uaWQ7aWYodylyZXR1cm57cmVmOkouZXh0ZXJuYWwudXJpKHcpfTtsZXQgTz1xWzFdLmRlZklkPz9xWzFdLnNjaGVtYS5pZD8/YHNjaGVtYSR7dGhpcy5jb3VudGVyKyt9YDtyZXR1cm4gcVsxXS5kZWZJZD1PLHtkZWZJZDpPLHJlZjpgJHtKLmV4dGVybmFsLnVyaShcIl9fc2hhcmVkXCIpfSMvJHtWfS8ke099YH19aWYocVsxXT09PVkpcmV0dXJue3JlZjpcIiNcIn07bGV0IHo9YCR7XCIjXCJ9LyR7Vn0vYCxOPXFbMV0uc2NoZW1hLmlkPz9gX19zY2hlbWEke3RoaXMuY291bnRlcisrfWA7cmV0dXJue2RlZklkOk4scmVmOnorTn19LFc9KHEpPT57aWYocVsxXS5zY2hlbWEuJHJlZilyZXR1cm47bGV0IFY9cVsxXSx7cmVmOkIsZGVmSWQ6en09WChxKTtpZihWLmRlZj17Li4uVi5zY2hlbWF9LHopVi5kZWZJZD16O2xldCBOPVYuc2NoZW1hO2ZvcihsZXQgdyBpbiBOKWRlbGV0ZSBOW3ddO04uJHJlZj1CfTtmb3IobGV0IHEgb2YgdGhpcy5zZWVuLmVudHJpZXMoKSl7bGV0IFY9cVsxXTtpZigkPT09cVswXSl7VyhxKTtjb250aW51ZX1pZihKLmV4dGVybmFsKXtsZXQgej1KLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChxWzBdKT8uaWQ7aWYoJCE9PXFbMF0mJnope1cocSk7Y29udGludWV9fWlmKHRoaXMubWV0YWRhdGFSZWdpc3RyeS5nZXQocVswXSk/LmlkKXtXKHEpO2NvbnRpbnVlfWlmKFYuY3ljbGUpe2lmKEouY3ljbGVzPT09XCJ0aHJvd1wiKXRocm93IEVycm9yKGBDeWNsZSBkZXRlY3RlZDogIy8ke1YuY3ljbGU/LmpvaW4oXCIvXCIpfS88cm9vdD5cblxuU2V0IHRoZSBcXGBjeWNsZXNcXGAgcGFyYW1ldGVyIHRvIFxcYFwicmVmXCJcXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKTtlbHNlIGlmKEouY3ljbGVzPT09XCJyZWZcIilXKHEpO2NvbnRpbnVlfWlmKFYuY291bnQ+MSl7aWYoSi5yZXVzZWQ9PT1cInJlZlwiKXtXKHEpO2NvbnRpbnVlfX19bGV0IEc9KHEsVik9PntsZXQgQj10aGlzLnNlZW4uZ2V0KHEpLHo9Qi5kZWY/P0Iuc2NoZW1hLE49ey4uLnp9O2lmKEIucmVmPT09bnVsbClyZXR1cm47bGV0IHc9Qi5yZWY7aWYoQi5yZWY9bnVsbCx3KXtHKHcsVik7bGV0IE89dGhpcy5zZWVuLmdldCh3KS5zY2hlbWE7aWYoTy4kcmVmJiZWLnRhcmdldD09PVwiZHJhZnQtN1wiKXouYWxsT2Y9ei5hbGxPZj8/W10sei5hbGxPZi5wdXNoKE8pO2Vsc2UgT2JqZWN0LmFzc2lnbih6LE8pLE9iamVjdC5hc3NpZ24oeixOKX1pZighQi5pc1BhcmVudCl0aGlzLm92ZXJyaWRlKHt6b2RTY2hlbWE6cSxqc29uU2NoZW1hOnoscGF0aDpCLnBhdGg/P1tdfSl9O2ZvcihsZXQgcSBvZlsuLi50aGlzLnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpRyhxWzBdLHt0YXJnZXQ6dGhpcy50YXJnZXR9KTtsZXQgVT17fTtpZih0aGlzLnRhcmdldD09PVwiZHJhZnQtMjAyMC0xMlwiKVUuJHNjaGVtYT1cImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCI7ZWxzZSBpZih0aGlzLnRhcmdldD09PVwiZHJhZnQtN1wiKVUuJHNjaGVtYT1cImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiO2Vsc2UgY29uc29sZS53YXJuKGBJbnZhbGlkIHRhcmdldDogJHt0aGlzLnRhcmdldH1gKTtPYmplY3QuYXNzaWduKFUsWS5kZWYpO2xldCBIPUouZXh0ZXJuYWw/LmRlZnM/P3t9O2ZvcihsZXQgcSBvZiB0aGlzLnNlZW4uZW50cmllcygpKXtsZXQgVj1xWzFdO2lmKFYuZGVmJiZWLmRlZklkKUhbVi5kZWZJZF09Vi5kZWZ9aWYoIUouZXh0ZXJuYWwmJk9iamVjdC5rZXlzKEgpLmxlbmd0aD4wKWlmKHRoaXMudGFyZ2V0PT09XCJkcmFmdC0yMDIwLTEyXCIpVS4kZGVmcz1IO2Vsc2UgVS5kZWZpbml0aW9ucz1IO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShVKSl9Y2F0Y2gocSl7dGhyb3cgRXJyb3IoXCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLlwiKX19fWZ1bmN0aW9uIEo5KCQsUSl7aWYoJCBpbnN0YW5jZW9mIGJRKXtsZXQgWT1uZXcgazMoUSksWD17fTtmb3IobGV0IFUgb2YgJC5faWRtYXAuZW50cmllcygpKXtsZXRbSCxxXT1VO1kucHJvY2VzcyhxKX1sZXQgVz17fSxHPXtyZWdpc3RyeTokLHVyaTpRPy51cml8fCgoVSk9PlUpLGRlZnM6WH07Zm9yKGxldCBVIG9mICQuX2lkbWFwLmVudHJpZXMoKSl7bGV0W0gscV09VTtXW0hdPVkuZW1pdChxLHsuLi5RLGV4dGVybmFsOkd9KX1pZihPYmplY3Qua2V5cyhYKS5sZW5ndGg+MCl7bGV0IFU9WS50YXJnZXQ9PT1cImRyYWZ0LTIwMjAtMTJcIj9cIiRkZWZzXCI6XCJkZWZpbml0aW9uc1wiO1cuX19zaGFyZWQ9e1tVXTpYfX1yZXR1cm57c2NoZW1hczpXfX1sZXQgSj1uZXcgazMoUSk7cmV0dXJuIEoucHJvY2VzcygkKSxKLmVtaXQoJCxRKX1mdW5jdGlvbiB0JCgkLFEpe2xldCBKPVE/P3tzZWVuOm5ldyBTZXR9O2lmKEouc2Vlbi5oYXMoJCkpcmV0dXJuITE7Si5zZWVuLmFkZCgkKTtsZXQgWD0kLl96b2QuZGVmO3N3aXRjaChYLnR5cGUpe2Nhc2VcInN0cmluZ1wiOmNhc2VcIm51bWJlclwiOmNhc2VcImJpZ2ludFwiOmNhc2VcImJvb2xlYW5cIjpjYXNlXCJkYXRlXCI6Y2FzZVwic3ltYm9sXCI6Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwibnVsbFwiOmNhc2VcImFueVwiOmNhc2VcInVua25vd25cIjpjYXNlXCJuZXZlclwiOmNhc2VcInZvaWRcIjpjYXNlXCJsaXRlcmFsXCI6Y2FzZVwiZW51bVwiOmNhc2VcIm5hblwiOmNhc2VcImZpbGVcIjpjYXNlXCJ0ZW1wbGF0ZV9saXRlcmFsXCI6cmV0dXJuITE7Y2FzZVwiYXJyYXlcIjpyZXR1cm4gdCQoWC5lbGVtZW50LEopO2Nhc2VcIm9iamVjdFwiOntmb3IobGV0IFcgaW4gWC5zaGFwZSlpZih0JChYLnNoYXBlW1ddLEopKXJldHVybiEwO3JldHVybiExfWNhc2VcInVuaW9uXCI6e2ZvcihsZXQgVyBvZiBYLm9wdGlvbnMpaWYodCQoVyxKKSlyZXR1cm4hMDtyZXR1cm4hMX1jYXNlXCJpbnRlcnNlY3Rpb25cIjpyZXR1cm4gdCQoWC5sZWZ0LEopfHx0JChYLnJpZ2h0LEopO2Nhc2VcInR1cGxlXCI6e2ZvcihsZXQgVyBvZiBYLml0ZW1zKWlmKHQkKFcsSikpcmV0dXJuITA7aWYoWC5yZXN0JiZ0JChYLnJlc3QsSikpcmV0dXJuITA7cmV0dXJuITF9Y2FzZVwicmVjb3JkXCI6cmV0dXJuIHQkKFgua2V5VHlwZSxKKXx8dCQoWC52YWx1ZVR5cGUsSik7Y2FzZVwibWFwXCI6cmV0dXJuIHQkKFgua2V5VHlwZSxKKXx8dCQoWC52YWx1ZVR5cGUsSik7Y2FzZVwic2V0XCI6cmV0dXJuIHQkKFgudmFsdWVUeXBlLEopO2Nhc2VcInByb21pc2VcIjpjYXNlXCJvcHRpb25hbFwiOmNhc2VcIm5vbm9wdGlvbmFsXCI6Y2FzZVwibnVsbGFibGVcIjpjYXNlXCJyZWFkb25seVwiOnJldHVybiB0JChYLmlubmVyVHlwZSxKKTtjYXNlXCJsYXp5XCI6cmV0dXJuIHQkKFguZ2V0dGVyKCksSik7Y2FzZVwiZGVmYXVsdFwiOnJldHVybiB0JChYLmlubmVyVHlwZSxKKTtjYXNlXCJwcmVmYXVsdFwiOnJldHVybiB0JChYLmlubmVyVHlwZSxKKTtjYXNlXCJjdXN0b21cIjpyZXR1cm4hMTtjYXNlXCJ0cmFuc2Zvcm1cIjpyZXR1cm4hMDtjYXNlXCJwaXBlXCI6cmV0dXJuIHQkKFguaW4sSil8fHQkKFgub3V0LEopO2Nhc2VcInN1Y2Nlc3NcIjpyZXR1cm4hMTtjYXNlXCJjYXRjaFwiOnJldHVybiExO2RlZmF1bHQ6fXRocm93IEVycm9yKGBVbmtub3duIHNjaGVtYSB0eXBlOiAke1gudHlwZX1gKX12YXIgSU09e307dmFyIEZtPUYoXCJab2RNaW5pVHlwZVwiLCgkLFEpPT57aWYoISQuX3pvZCl0aHJvdyBFcnJvcihcIlVuaW5pdGlhbGl6ZWQgc2NoZW1hIGluIFpvZE1pbmlUeXBlLlwiKTtvLmluaXQoJCxRKSwkLmRlZj1RLCQucGFyc2U9KEosWSk9PlAwKCQsSixZLHtjYWxsZWU6JC5wYXJzZX0pLCQuc2FmZVBhcnNlPShKLFkpPT5QMSgkLEosWSksJC5wYXJzZUFzeW5jPWFzeW5jKEosWSk9PkUwKCQsSixZLHtjYWxsZWU6JC5wYXJzZUFzeW5jfSksJC5zYWZlUGFyc2VBc3luYz1hc3luYyhKLFkpPT5FMSgkLEosWSksJC5jaGVjaz0oLi4uSik9PntyZXR1cm4gJC5jbG9uZSh7Li4uUSxjaGVja3M6Wy4uLlEuY2hlY2tzPz9bXSwuLi5KLm1hcCgoWSk9PnR5cGVvZiBZPT09XCJmdW5jdGlvblwiP3tfem9kOntjaGVjazpZLGRlZjp7Y2hlY2s6XCJjdXN0b21cIn0sb25hdHRhY2g6W119fTpZKV19KX0sJC5jbG9uZT0oSixZKT0+VTYoJCxKLFkpLCQuYnJhbmQ9KCk9PiQsJC5yZWdpc3Rlcj0oSixZKT0+e3JldHVybiBKLmFkZCgkLFkpLCR9fSk7dmFyIFptPUYoXCJab2RNaW5pT2JqZWN0XCIsKCQsUSk9PntSUS5pbml0KCQsUSksRm0uaW5pdCgkLFEpLHYuZGVmaW5lTGF6eSgkLFwic2hhcGVcIiwoKT0+US5zaGFwZSl9KTtmdW5jdGlvbiBHVigkLFEpe2xldCBKPXt0eXBlOlwib2JqZWN0XCIsZ2V0IHNoYXBlKCl7cmV0dXJuIHYuYXNzaWduUHJvcCh0aGlzLFwic2hhcGVcIix7Li4uJH0pLHRoaXMuc2hhcGV9LC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfTtyZXR1cm4gbmV3IFptKEopfWZ1bmN0aW9uIGE2KCQpe3JldHVybiEhJC5fem9kfWZ1bmN0aW9uIEMwKCQpe2xldCBRPU9iamVjdC52YWx1ZXMoJCk7aWYoUS5sZW5ndGg9PT0wKXJldHVybiBHVih7fSk7bGV0IEo9US5ldmVyeShhNiksWT1RLmV2ZXJ5KChYKT0+IWE2KFgpKTtpZihKKXJldHVybiBHVigkKTtpZihZKXJldHVybiBlWigkKTt0aHJvdyBFcnJvcihcIk1peGVkIFpvZCB2ZXJzaW9ucyBkZXRlY3RlZCBpbiBvYmplY3Qgc2hhcGUuXCIpfWZ1bmN0aW9uIHYxKCQsUSl7aWYoYTYoJCkpcmV0dXJuIFAxKCQsUSk7cmV0dXJuICQuc2FmZVBhcnNlKFEpfWFzeW5jIGZ1bmN0aW9uIHYzKCQsUSl7aWYoYTYoJCkpcmV0dXJuIGF3YWl0IEUxKCQsUSk7cmV0dXJuIGF3YWl0ICQuc2FmZVBhcnNlQXN5bmMoUSl9ZnVuY3Rpb24gQzEoJCl7aWYoISQpcmV0dXJuO2xldCBRO2lmKGE2KCQpKVE9JC5fem9kPy5kZWY/LnNoYXBlO2Vsc2UgUT0kLnNoYXBlO2lmKCFRKXJldHVybjtpZih0eXBlb2YgUT09PVwiZnVuY3Rpb25cIil0cnl7cmV0dXJuIFEoKX1jYXRjaHtyZXR1cm59cmV0dXJuIFF9ZnVuY3Rpb24gWDkoJCl7aWYoISQpcmV0dXJuO2lmKHR5cGVvZiAkPT09XCJvYmplY3RcIil7bGV0IFE9JCxKPSQ7aWYoIVEuX2RlZiYmIUouX3pvZCl7bGV0IFk9T2JqZWN0LnZhbHVlcygkKTtpZihZLmxlbmd0aD4wJiZZLmV2ZXJ5KChYKT0+dHlwZW9mIFg9PT1cIm9iamVjdFwiJiZYIT09bnVsbCYmKFguX2RlZiE9PXZvaWQgMHx8WC5fem9kIT09dm9pZCAwfHx0eXBlb2YgWC5wYXJzZT09PVwiZnVuY3Rpb25cIikpKXJldHVybiBDMCgkKX19aWYoYTYoJCkpe2xldCBKPSQuX3pvZD8uZGVmO2lmKEomJihKLnR5cGU9PT1cIm9iamVjdFwifHxKLnNoYXBlIT09dm9pZCAwKSlyZXR1cm4gJH1lbHNlIGlmKCQuc2hhcGUhPT12b2lkIDApcmV0dXJuICQ7cmV0dXJufWZ1bmN0aW9uIEMzKCQpe2lmKCQmJnR5cGVvZiAkPT09XCJvYmplY3RcIil7aWYoXCJtZXNzYWdlXCJpbiAkJiZ0eXBlb2YgJC5tZXNzYWdlPT09XCJzdHJpbmdcIilyZXR1cm4gJC5tZXNzYWdlO2lmKFwiaXNzdWVzXCJpbiAkJiZBcnJheS5pc0FycmF5KCQuaXNzdWVzKSYmJC5pc3N1ZXMubGVuZ3RoPjApe2xldCBRPSQuaXNzdWVzWzBdO2lmKFEmJnR5cGVvZiBRPT09XCJvYmplY3RcIiYmXCJtZXNzYWdlXCJpbiBRKXJldHVybiBTdHJpbmcoUS5tZXNzYWdlKX10cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KCQpfWNhdGNoe3JldHVybiBTdHJpbmcoJCl9fXJldHVybiBTdHJpbmcoJCl9ZnVuY3Rpb24gUk0oJCl7cmV0dXJuICQuZGVzY3JpcHRpb259ZnVuY3Rpb24gUE0oJCl7aWYoYTYoJCkpcmV0dXJuICQuX3pvZD8uZGVmPy50eXBlPT09XCJvcHRpb25hbFwiO2xldCBRPSQ7aWYodHlwZW9mICQuaXNPcHRpb25hbD09PVwiZnVuY3Rpb25cIilyZXR1cm4gJC5pc09wdGlvbmFsKCk7cmV0dXJuIFEuX2RlZj8udHlwZU5hbWU9PT1cIlpvZE9wdGlvbmFsXCJ9ZnVuY3Rpb24gVDMoJCl7aWYoYTYoJCkpe2xldCBXPSQuX3pvZD8uZGVmO2lmKFcpe2lmKFcudmFsdWUhPT12b2lkIDApcmV0dXJuIFcudmFsdWU7aWYoQXJyYXkuaXNBcnJheShXLnZhbHVlcykmJlcudmFsdWVzLmxlbmd0aD4wKXJldHVybiBXLnZhbHVlc1swXX19bGV0IEo9JC5fZGVmO2lmKEope2lmKEoudmFsdWUhPT12b2lkIDApcmV0dXJuIEoudmFsdWU7aWYoQXJyYXkuaXNBcnJheShKLnZhbHVlcykmJkoudmFsdWVzLmxlbmd0aD4wKXJldHVybiBKLnZhbHVlc1swXX1sZXQgWT0kLnZhbHVlO2lmKFkhPT12b2lkIDApcmV0dXJuIFk7cmV0dXJufXZhciBLPXt9O2o0KEsse3hpZDooKT0+Zm0sdm9pZDooKT0+WGwsdXVpZHY3OigpPT5fbSx1dWlkdjY6KCk9PmJtLHV1aWR2NDooKT0+RW0sdXVpZDooKT0+UG0sdXJsOigpPT5TbSx1cHBlcmNhc2U6KCk9PiRKLHVua25vd246KCk9PlMkLHVuaW9uOigpPT5BJCx1bmRlZmluZWQ6KCk9PlFsLHVsaWQ6KCk9PnhtLHVpbnQ2NDooKT0+ZW0sdWludDMyOigpPT50bSx0dXBsZTooKT0+VWwsdHJpbTooKT0+R0osdHJlZWlmeUVycm9yOigpPT5vNSx0cmFuc2Zvcm06KCk9PmdWLHRvVXBwZXJDYXNlOigpPT5ISix0b0xvd2VyQ2FzZTooKT0+VUosdG9KU09OU2NoZW1hOigpPT5KOSx0ZW1wbGF0ZUxpdGVyYWw6KCk9Pk9sLHN5bWJvbDooKT0+JGwsc3VwZXJSZWZpbmU6KCk9PktMLHN1Y2Nlc3M6KCk9Pk5sLHN0cmluZ2Jvb2w6KCk9PlpsLHN0cmluZ0Zvcm1hdDooKT0+aW0sc3RyaW5nOigpPT5MLHN0cmljdE9iamVjdDooKT0+R2wsc3RhcnRzV2l0aDooKT0+Skosc2l6ZTooKT0+YVEsc2V0RXJyb3JNYXA6KCk9PmpsLHNldDooKT0+cWwsc2FmZVBhcnNlQXN5bmM6KCk9Pk5WLHNhZmVQYXJzZTooKT0+elYscmVnaXN0cnk6KCk9Pl9RLHJlZ2V4ZXM6KCk9PmIxLHJlZ2V4OigpPT5zUSxyZWZpbmU6KCk9PkhMLHJlY29yZDooKT0+SSQscmVhZG9ubHk6KCk9PkpMLHByb3BlcnR5OigpPT5YVixwcm9taXNlOigpPT5EbCxwcmV0dGlmeUVycm9yOigpPT50NSxwcmVwcm9jZXNzOigpPT5yMyxwcmVmYXVsdDooKT0+b00scG9zaXRpdmU6KCk9PmVxLHBpcGU6KCk9Pm0zLHBhcnRpYWxSZWNvcmQ6KCk9PkhsLHBhcnNlQXN5bmM6KCk9PkJWLHBhcnNlOigpPT5WVixvdmVyd3JpdGU6KCk9PmU0LG9wdGlvbmFsOigpPT5iJCxvYmplY3Q6KCk9PmgsbnVtYmVyOigpPT56JCxudWxsaXNoOigpPT56bCxudWxsYWJsZTooKT0+dTMsbnVsbDooKT0+bDMsbm9ybWFsaXplOigpPT5XSixub25wb3NpdGl2ZTooKT0+UVYsbm9ub3B0aW9uYWw6KCk9PnRNLG5vbm5lZ2F0aXZlOigpPT5KVixuZXZlcjooKT0+YzMsbmVnYXRpdmU6KCk9PiRWLG5hdGl2ZUVudW06KCk9PlZsLG5hbm9pZDooKT0+dm0sbmFuOigpPT53bCxtdWx0aXBsZU9mOigpPT5rMCxtaW5TaXplOigpPT52MCxtaW5MZW5ndGg6KCk9PmsxLG1pbWU6KCk9PllKLG1heFNpemU6KCk9PmU4LG1heExlbmd0aDooKT0+JDksbWFwOigpPT5LbCxsdGU6KCk9PnQ2LGx0OigpPT5hNCxsb3dlcmNhc2U6KCk9PmVRLGxvb3NlT2JqZWN0OigpPT5INixsb2NhbGVzOigpPT5hOCxsaXRlcmFsOigpPT5sLGxlbmd0aDooKT0+UTksbGF6eTooKT0+V0wsa3N1aWQ6KCk9PnltLGtleW9mOigpPT5XbCxqd3Q6KCk9PmRtLGpzb246KCk9Pk1sLGlzbzooKT0+WTksaXB2NjooKT0+aG0saXB2NDooKT0+Z20saW50ZXJzZWN0aW9uOigpPT53SixpbnQ2NDooKT0+c20saW50MzI6KCk9Pm9tLGludDooKT0+d1YsaW5zdGFuY2VvZjooKT0+RmwsaW5jbHVkZXM6KCk9PlFKLGd1aWQ6KCk9PlJtLGd0ZTooKT0+STYsZ3Q6KCk9PnM0LGdsb2JhbFJlZ2lzdHJ5OigpPT5BNixnZXRFcnJvck1hcDooKT0+QWwsZnVuY3Rpb246KCk9PlMzLGZvcm1hdEVycm9yOigpPT5kOCxmbG9hdDY0OigpPT5ybSxmbG9hdDMyOigpPT5ubSxmbGF0dGVuRXJyb3I6KCk9PnA4LGZpbGU6KCk9PkJsLGVudW06KCk9Pno2LGVuZHNXaXRoOigpPT5YSixlbW9qaTooKT0+a20sZW1haWw6KCk9PkltLGUxNjQ6KCk9PnBtLGRpc2NyaW1pbmF0ZWRVbmlvbjooKT0+aTMsZGF0ZTooKT0+WWwsY3VzdG9tOigpPT5sVixjdWlkMjooKT0+VG0sY3VpZDooKT0+Q20sY29yZTooKT0+cTQsY29uZmlnOigpPT5jJCxjb2VyY2U6KCk9PmNWLGNsb25lOigpPT5VNixjaWRydjY6KCk9Pm1tLGNpZHJ2NDooKT0+dW0sY2hlY2s6KCk9PlVMLGNhdGNoOigpPT5lTSxib29sZWFuOigpPT5pJCxiaWdpbnQ6KCk9PmFtLGJhc2U2NHVybDooKT0+Y20sYmFzZTY0OigpPT5sbSxhcnJheTooKT0+VyQsYW55OigpPT5KbCxfZGVmYXVsdDooKT0+bk0sX1pvZFN0cmluZzooKT0+T1YsWm9kWElEOigpPT5JVixab2RWb2lkOigpPT5mTSxab2RVbmtub3duOigpPT5UTSxab2RVbmlvbjooKT0+eFYsWm9kVW5kZWZpbmVkOigpPT5rTSxab2RVVUlEOigpPT4kMSxab2RVUkw6KCk9PkZWLFpvZFVMSUQ6KCk9PkFWLFpvZFR5cGU6KCk9PkokLFpvZFR1cGxlOigpPT51TSxab2RUcmFuc2Zvcm06KCk9PnlWLFpvZFRlbXBsYXRlTGl0ZXJhbDooKT0+WEwsWm9kU3ltYm9sOigpPT5TTSxab2RTdWNjZXNzOigpPT5hTSxab2RTdHJpbmdGb3JtYXQ6KCk9PkUkLFpvZFN0cmluZzooKT0+VkosWm9kU2V0OigpPT5sTSxab2RSZWNvcmQ6KCk9PmZWLFpvZFJlYWxFcnJvcjooKT0+VzksWm9kUmVhZG9ubHk6KCk9PlFMLFpvZFByb21pc2U6KCk9PkdMLFpvZFByZWZhdWx0OigpPT5yTSxab2RQaXBlOigpPT5tVixab2RPcHRpb25hbDooKT0+aFYsWm9kT2JqZWN0OigpPT5kMyxab2ROdW1iZXJGb3JtYXQ6KCk9Pkc5LFpvZE51bWJlcjooKT0+QkosWm9kTnVsbGFibGU6KCk9PmRNLFpvZE51bGw6KCk9PnZNLFpvZE5vbk9wdGlvbmFsOigpPT51Vixab2ROZXZlcjooKT0+eE0sWm9kTmFub0lEOigpPT5NVixab2ROYU46KCk9PiRMLFpvZE1hcDooKT0+bU0sWm9kTGl0ZXJhbDooKT0+Y00sWm9kTGF6eTooKT0+WUwsWm9kS1NVSUQ6KCk9PlJWLFpvZEpXVDooKT0+Q1YsWm9kSXNzdWVDb2RlOigpPT5MbCxab2RJbnRlcnNlY3Rpb246KCk9PmhNLFpvZElTT1RpbWU6KCk9PnkzLFpvZElTT0R1cmF0aW9uOigpPT5nMyxab2RJU09EYXRlVGltZTooKT0+eDMsWm9kSVNPRGF0ZTooKT0+ZjMsWm9kSVB2NjooKT0+RVYsWm9kSVB2NDooKT0+UFYsWm9kR1VJRDooKT0+aDMsWm9kRmlsZTooKT0+cE0sWm9kRXJyb3I6KCk9PmptLFpvZEVudW06KCk9PnFKLFpvZEVtb2ppOigpPT5aVixab2RFbWFpbDooKT0+RFYsWm9kRTE2NDooKT0+dlYsWm9kRGlzY3JpbWluYXRlZFVuaW9uOigpPT5nTSxab2REZWZhdWx0OigpPT5pTSxab2REYXRlOigpPT5wMyxab2RDdXN0b21TdHJpbmdGb3JtYXQ6KCk9Pl9NLFpvZEN1c3RvbTooKT0+bjMsWm9kQ2F0Y2g6KCk9PnNNLFpvZENVSUQyOigpPT5qVixab2RDVUlEOigpPT5MVixab2RDSURSdjY6KCk9Pl9WLFpvZENJRFJ2NDooKT0+YlYsWm9kQm9vbGVhbjooKT0+ekosWm9kQmlnSW50Rm9ybWF0OigpPT5UVixab2RCaWdJbnQ6KCk9Pk5KLFpvZEJhc2U2NFVSTDooKT0+a1YsWm9kQmFzZTY0OigpPT5TVixab2RBcnJheTooKT0+eU0sWm9kQW55OigpPT5DTSxUaW1lUHJlY2lzaW9uOigpPT5HMyxORVZFUjooKT0+aTUsJG91dHB1dDooKT0+WDMsJGlucHV0OigpPT5ZMywkYnJhbmQ6KCk9Pm41fSk7dmFyIFk5PXt9O2o0KFk5LHt0aW1lOigpPT5LVixkdXJhdGlvbjooKT0+cVYsZGF0ZXRpbWU6KCk9PlVWLGRhdGU6KCk9PkhWLFpvZElTT1RpbWU6KCk9PnkzLFpvZElTT0R1cmF0aW9uOigpPT5nMyxab2RJU09EYXRlVGltZTooKT0+eDMsWm9kSVNPRGF0ZTooKT0+ZjN9KTt2YXIgeDM9RihcIlpvZElTT0RhdGVUaW1lXCIsKCQsUSk9PntRcS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gVVYoJCl7cmV0dXJuIGRxKHgzLCQpfXZhciBmMz1GKFwiWm9kSVNPRGF0ZVwiLCgkLFEpPT57SnEuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIEhWKCQpe3JldHVybiBpcShmMywkKX12YXIgeTM9RihcIlpvZElTT1RpbWVcIiwoJCxRKT0+e1hxLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBLVigkKXtyZXR1cm4gbnEoeTMsJCl9dmFyIGczPUYoXCJab2RJU09EdXJhdGlvblwiLCgkLFEpPT57WXEuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHFWKCQpe3JldHVybiBycShnMywkKX12YXIgYk09KCQsUSk9PntqUS5pbml0KCQsUSksJC5uYW1lPVwiWm9kRXJyb3JcIixPYmplY3QuZGVmaW5lUHJvcGVydGllcygkLHtmb3JtYXQ6e3ZhbHVlOihKKT0+ZDgoJCxKKX0sZmxhdHRlbjp7dmFsdWU6KEopPT5wOCgkLEopfSxhZGRJc3N1ZTp7dmFsdWU6KEopPT4kLmlzc3Vlcy5wdXNoKEopfSxhZGRJc3N1ZXM6e3ZhbHVlOihKKT0+JC5pc3N1ZXMucHVzaCguLi5KKX0saXNFbXB0eTp7Z2V0KCl7cmV0dXJuICQuaXNzdWVzLmxlbmd0aD09PTB9fX0pfSxqbT1GKFwiWm9kRXJyb3JcIixiTSksVzk9RihcIlpvZEVycm9yXCIsYk0se1BhcmVudDpFcnJvcn0pO3ZhciBWVj1hNShXOSksQlY9czUoVzkpLHpWPWU1KFc5KSxOVj0kWShXOSk7dmFyIEokPUYoXCJab2RUeXBlXCIsKCQsUSk9PntyZXR1cm4gby5pbml0KCQsUSksJC5kZWY9USxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcIl9kZWZcIix7dmFsdWU6UX0pLCQuY2hlY2s9KC4uLkopPT57cmV0dXJuICQuY2xvbmUoey4uLlEsY2hlY2tzOlsuLi5RLmNoZWNrcz8/W10sLi4uSi5tYXAoKFkpPT50eXBlb2YgWT09PVwiZnVuY3Rpb25cIj97X3pvZDp7Y2hlY2s6WSxkZWY6e2NoZWNrOlwiY3VzdG9tXCJ9LG9uYXR0YWNoOltdfX06WSldfSl9LCQuY2xvbmU9KEosWSk9PlU2KCQsSixZKSwkLmJyYW5kPSgpPT4kLCQucmVnaXN0ZXI9KEosWSk9PntyZXR1cm4gSi5hZGQoJCxZKSwkfSwkLnBhcnNlPShKLFkpPT5WVigkLEosWSx7Y2FsbGVlOiQucGFyc2V9KSwkLnNhZmVQYXJzZT0oSixZKT0+elYoJCxKLFkpLCQucGFyc2VBc3luYz1hc3luYyhKLFkpPT5CVigkLEosWSx7Y2FsbGVlOiQucGFyc2VBc3luY30pLCQuc2FmZVBhcnNlQXN5bmM9YXN5bmMoSixZKT0+TlYoJCxKLFkpLCQuc3BhPSQuc2FmZVBhcnNlQXN5bmMsJC5yZWZpbmU9KEosWSk9PiQuY2hlY2soSEwoSixZKSksJC5zdXBlclJlZmluZT0oSik9PiQuY2hlY2soS0woSikpLCQub3ZlcndyaXRlPShKKT0+JC5jaGVjayhlNChKKSksJC5vcHRpb25hbD0oKT0+YiQoJCksJC5udWxsYWJsZT0oKT0+dTMoJCksJC5udWxsaXNoPSgpPT5iJCh1MygkKSksJC5ub25vcHRpb25hbD0oSik9PnRNKCQsSiksJC5hcnJheT0oKT0+VyQoJCksJC5vcj0oSik9PkEkKFskLEpdKSwkLmFuZD0oSik9PndKKCQsSiksJC50cmFuc2Zvcm09KEopPT5tMygkLGdWKEopKSwkLmRlZmF1bHQ9KEopPT5uTSgkLEopLCQucHJlZmF1bHQ9KEopPT5vTSgkLEopLCQuY2F0Y2g9KEopPT5lTSgkLEopLCQucGlwZT0oSik9Pm0zKCQsSiksJC5yZWFkb25seT0oKT0+SkwoJCksJC5kZXNjcmliZT0oSik9PntsZXQgWT0kLmNsb25lKCk7cmV0dXJuIEE2LmFkZChZLHtkZXNjcmlwdGlvbjpKfSksWX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KCQsXCJkZXNjcmlwdGlvblwiLHtnZXQoKXtyZXR1cm4gQTYuZ2V0KCQpPy5kZXNjcmlwdGlvbn0sY29uZmlndXJhYmxlOiEwfSksJC5tZXRhPSguLi5KKT0+e2lmKEoubGVuZ3RoPT09MClyZXR1cm4gQTYuZ2V0KCQpO2xldCBZPSQuY2xvbmUoKTtyZXR1cm4gQTYuYWRkKFksSlswXSksWX0sJC5pc09wdGlvbmFsPSgpPT4kLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3MsJC5pc051bGxhYmxlPSgpPT4kLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzLCR9KSxPVj1GKFwiX1pvZFN0cmluZ1wiLCgkLFEpPT57XzEuaW5pdCgkLFEpLEokLmluaXQoJCxRKTtsZXQgSj0kLl96b2QuYmFnOyQuZm9ybWF0PUouZm9ybWF0Pz9udWxsLCQubWluTGVuZ3RoPUoubWluaW11bT8/bnVsbCwkLm1heExlbmd0aD1KLm1heGltdW0/P251bGwsJC5yZWdleD0oLi4uWSk9PiQuY2hlY2soc1EoLi4uWSkpLCQuaW5jbHVkZXM9KC4uLlkpPT4kLmNoZWNrKFFKKC4uLlkpKSwkLnN0YXJ0c1dpdGg9KC4uLlkpPT4kLmNoZWNrKEpKKC4uLlkpKSwkLmVuZHNXaXRoPSguLi5ZKT0+JC5jaGVjayhYSiguLi5ZKSksJC5taW49KC4uLlkpPT4kLmNoZWNrKGsxKC4uLlkpKSwkLm1heD0oLi4uWSk9PiQuY2hlY2soJDkoLi4uWSkpLCQubGVuZ3RoPSguLi5ZKT0+JC5jaGVjayhROSguLi5ZKSksJC5ub25lbXB0eT0oLi4uWSk9PiQuY2hlY2soazEoMSwuLi5ZKSksJC5sb3dlcmNhc2U9KFkpPT4kLmNoZWNrKGVRKFkpKSwkLnVwcGVyY2FzZT0oWSk9PiQuY2hlY2soJEooWSkpLCQudHJpbT0oKT0+JC5jaGVjayhHSigpKSwkLm5vcm1hbGl6ZT0oLi4uWSk9PiQuY2hlY2soV0ooLi4uWSkpLCQudG9Mb3dlckNhc2U9KCk9PiQuY2hlY2soVUooKSksJC50b1VwcGVyQ2FzZT0oKT0+JC5jaGVjayhISigpKX0pLFZKPUYoXCJab2RTdHJpbmdcIiwoJCxRKT0+e18xLmluaXQoJCxRKSxPVi5pbml0KCQsUSksJC5lbWFpbD0oSik9PiQuY2hlY2soU1EoRFYsSikpLCQudXJsPShKKT0+JC5jaGVjayh4UShGVixKKSksJC5qd3Q9KEopPT4kLmNoZWNrKHRRKENWLEopKSwkLmVtb2ppPShKKT0+JC5jaGVjayhmUShaVixKKSksJC5ndWlkPShKKT0+JC5jaGVjayhzOChoMyxKKSksJC51dWlkPShKKT0+JC5jaGVjayhrUSgkMSxKKSksJC51dWlkdjQ9KEopPT4kLmNoZWNrKHZRKCQxLEopKSwkLnV1aWR2Nj0oSik9PiQuY2hlY2soQ1EoJDEsSikpLCQudXVpZHY3PShKKT0+JC5jaGVjayhUUSgkMSxKKSksJC5uYW5vaWQ9KEopPT4kLmNoZWNrKHlRKE1WLEopKSwkLmd1aWQ9KEopPT4kLmNoZWNrKHM4KGgzLEopKSwkLmN1aWQ9KEopPT4kLmNoZWNrKGdRKExWLEopKSwkLmN1aWQyPShKKT0+JC5jaGVjayhoUShqVixKKSksJC51bGlkPShKKT0+JC5jaGVjayh1UShBVixKKSksJC5iYXNlNjQ9KEopPT4kLmNoZWNrKG5RKFNWLEopKSwkLmJhc2U2NHVybD0oSik9PiQuY2hlY2soclEoa1YsSikpLCQueGlkPShKKT0+JC5jaGVjayhtUShJVixKKSksJC5rc3VpZD0oSik9PiQuY2hlY2sobFEoUlYsSikpLCQuaXB2ND0oSik9PiQuY2hlY2soY1EoUFYsSikpLCQuaXB2Nj0oSik9PiQuY2hlY2socFEoRVYsSikpLCQuY2lkcnY0PShKKT0+JC5jaGVjayhkUShiVixKKSksJC5jaWRydjY9KEopPT4kLmNoZWNrKGlRKF9WLEopKSwkLmUxNjQ9KEopPT4kLmNoZWNrKG9RKHZWLEopKSwkLmRhdGV0aW1lPShKKT0+JC5jaGVjayhVVihKKSksJC5kYXRlPShKKT0+JC5jaGVjayhIVihKKSksJC50aW1lPShKKT0+JC5jaGVjayhLVihKKSksJC5kdXJhdGlvbj0oSik9PiQuY2hlY2socVYoSikpfSk7ZnVuY3Rpb24gTCgkKXtyZXR1cm4gVzMoVkosJCl9dmFyIEUkPUYoXCJab2RTdHJpbmdGb3JtYXRcIiwoJCxRKT0+e2okLmluaXQoJCxRKSxPVi5pbml0KCQsUSl9KSxEVj1GKFwiWm9kRW1haWxcIiwoJCxRKT0+e0tZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBJbSgkKXtyZXR1cm4gU1EoRFYsJCl9dmFyIGgzPUYoXCJab2RHVUlEXCIsKCQsUSk9PntVWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gUm0oJCl7cmV0dXJuIHM4KGgzLCQpfXZhciAkMT1GKFwiWm9kVVVJRFwiLCgkLFEpPT57SFkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFBtKCQpe3JldHVybiBrUSgkMSwkKX1mdW5jdGlvbiBFbSgkKXtyZXR1cm4gdlEoJDEsJCl9ZnVuY3Rpb24gYm0oJCl7cmV0dXJuIENRKCQxLCQpfWZ1bmN0aW9uIF9tKCQpe3JldHVybiBUUSgkMSwkKX12YXIgRlY9RihcIlpvZFVSTFwiLCgkLFEpPT57cVkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFNtKCQpe3JldHVybiB4UShGViwkKX12YXIgWlY9RihcIlpvZEVtb2ppXCIsKCQsUSk9PntWWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24ga20oJCl7cmV0dXJuIGZRKFpWLCQpfXZhciBNVj1GKFwiWm9kTmFub0lEXCIsKCQsUSk9PntCWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gdm0oJCl7cmV0dXJuIHlRKE1WLCQpfXZhciBMVj1GKFwiWm9kQ1VJRFwiLCgkLFEpPT57elkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIENtKCQpe3JldHVybiBnUShMViwkKX12YXIgalY9RihcIlpvZENVSUQyXCIsKCQsUSk9PntOWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gVG0oJCl7cmV0dXJuIGhRKGpWLCQpfXZhciBBVj1GKFwiWm9kVUxJRFwiLCgkLFEpPT57d1kuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHhtKCQpe3JldHVybiB1UShBViwkKX12YXIgSVY9RihcIlpvZFhJRFwiLCgkLFEpPT57T1kuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGZtKCQpe3JldHVybiBtUShJViwkKX12YXIgUlY9RihcIlpvZEtTVUlEXCIsKCQsUSk9PntEWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24geW0oJCl7cmV0dXJuIGxRKFJWLCQpfXZhciBQVj1GKFwiWm9kSVB2NFwiLCgkLFEpPT57RlkuaW5pdCgkLFEpLEUkLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGdtKCQpe3JldHVybiBjUShQViwkKX12YXIgRVY9RihcIlpvZElQdjZcIiwoJCxRKT0+e1pZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBobSgkKXtyZXR1cm4gcFEoRVYsJCl9dmFyIGJWPUYoXCJab2RDSURSdjRcIiwoJCxRKT0+e01ZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiB1bSgkKXtyZXR1cm4gZFEoYlYsJCl9dmFyIF9WPUYoXCJab2RDSURSdjZcIiwoJCxRKT0+e0xZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBtbSgkKXtyZXR1cm4gaVEoX1YsJCl9dmFyIFNWPUYoXCJab2RCYXNlNjRcIiwoJCxRKT0+e2pZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBsbSgkKXtyZXR1cm4gblEoU1YsJCl9dmFyIGtWPUYoXCJab2RCYXNlNjRVUkxcIiwoJCxRKT0+e0FZLmluaXQoJCxRKSxFJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBjbSgkKXtyZXR1cm4gclEoa1YsJCl9dmFyIHZWPUYoXCJab2RFMTY0XCIsKCQsUSk9PntJWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gcG0oJCl7cmV0dXJuIG9RKHZWLCQpfXZhciBDVj1GKFwiWm9kSldUXCIsKCQsUSk9PntSWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gZG0oJCl7cmV0dXJuIHRRKENWLCQpfXZhciBfTT1GKFwiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0XCIsKCQsUSk9PntQWS5pbml0KCQsUSksRSQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gaW0oJCxRLEo9e30pe3JldHVybiBfMyhfTSwkLFEsSil9dmFyIEJKPUYoXCJab2ROdW1iZXJcIiwoJCxRKT0+e0FRLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5ndD0oWSxYKT0+JC5jaGVjayhzNChZLFgpKSwkLmd0ZT0oWSxYKT0+JC5jaGVjayhJNihZLFgpKSwkLm1pbj0oWSxYKT0+JC5jaGVjayhJNihZLFgpKSwkLmx0PShZLFgpPT4kLmNoZWNrKGE0KFksWCkpLCQubHRlPShZLFgpPT4kLmNoZWNrKHQ2KFksWCkpLCQubWF4PShZLFgpPT4kLmNoZWNrKHQ2KFksWCkpLCQuaW50PShZKT0+JC5jaGVjayh3VihZKSksJC5zYWZlPShZKT0+JC5jaGVjayh3VihZKSksJC5wb3NpdGl2ZT0oWSk9PiQuY2hlY2soczQoMCxZKSksJC5ub25uZWdhdGl2ZT0oWSk9PiQuY2hlY2soSTYoMCxZKSksJC5uZWdhdGl2ZT0oWSk9PiQuY2hlY2soYTQoMCxZKSksJC5ub25wb3NpdGl2ZT0oWSk9PiQuY2hlY2sodDYoMCxZKSksJC5tdWx0aXBsZU9mPShZLFgpPT4kLmNoZWNrKGswKFksWCkpLCQuc3RlcD0oWSxYKT0+JC5jaGVjayhrMChZLFgpKSwkLmZpbml0ZT0oKT0+JDtsZXQgSj0kLl96b2QuYmFnOyQubWluVmFsdWU9TWF0aC5tYXgoSi5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksSi5leGNsdXNpdmVNaW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpPz9udWxsLCQubWF4VmFsdWU9TWF0aC5taW4oSi5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksSi5leGNsdXNpdmVNYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpPz9udWxsLCQuaXNJbnQ9KEouZm9ybWF0Pz9cIlwiKS5pbmNsdWRlcyhcImludFwiKXx8TnVtYmVyLmlzU2FmZUludGVnZXIoSi5tdWx0aXBsZU9mPz8wLjUpLCQuaXNGaW5pdGU9ITAsJC5mb3JtYXQ9Si5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiB6JCgkKXtyZXR1cm4gVTMoQkosJCl9dmFyIEc5PUYoXCJab2ROdW1iZXJGb3JtYXRcIiwoJCxRKT0+e0VZLmluaXQoJCxRKSxCSi5pbml0KCQsUSl9KTtmdW5jdGlvbiB3VigkKXtyZXR1cm4gSDMoRzksJCl9ZnVuY3Rpb24gbm0oJCl7cmV0dXJuIEszKEc5LCQpfWZ1bmN0aW9uIHJtKCQpe3JldHVybiBxMyhHOSwkKX1mdW5jdGlvbiBvbSgkKXtyZXR1cm4gVjMoRzksJCl9ZnVuY3Rpb24gdG0oJCl7cmV0dXJuIEIzKEc5LCQpfXZhciB6Sj1GKFwiWm9kQm9vbGVhblwiLCgkLFEpPT57bjguaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIGkkKCQpe3JldHVybiB6Myh6SiwkKX12YXIgTko9RihcIlpvZEJpZ0ludFwiLCgkLFEpPT57SVEuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmd0ZT0oWSxYKT0+JC5jaGVjayhJNihZLFgpKSwkLm1pbj0oWSxYKT0+JC5jaGVjayhJNihZLFgpKSwkLmd0PShZLFgpPT4kLmNoZWNrKHM0KFksWCkpLCQuZ3RlPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQubWluPShZLFgpPT4kLmNoZWNrKEk2KFksWCkpLCQubHQ9KFksWCk9PiQuY2hlY2soYTQoWSxYKSksJC5sdGU9KFksWCk9PiQuY2hlY2sodDYoWSxYKSksJC5tYXg9KFksWCk9PiQuY2hlY2sodDYoWSxYKSksJC5wb3NpdGl2ZT0oWSk9PiQuY2hlY2soczQoQmlnSW50KDApLFkpKSwkLm5lZ2F0aXZlPShZKT0+JC5jaGVjayhhNChCaWdJbnQoMCksWSkpLCQubm9ucG9zaXRpdmU9KFkpPT4kLmNoZWNrKHQ2KEJpZ0ludCgwKSxZKSksJC5ub25uZWdhdGl2ZT0oWSk9PiQuY2hlY2soSTYoQmlnSW50KDApLFkpKSwkLm11bHRpcGxlT2Y9KFksWCk9PiQuY2hlY2soazAoWSxYKSk7bGV0IEo9JC5fem9kLmJhZzskLm1pblZhbHVlPUoubWluaW11bT8/bnVsbCwkLm1heFZhbHVlPUoubWF4aW11bT8/bnVsbCwkLmZvcm1hdD1KLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIGFtKCQpe3JldHVybiBOMyhOSiwkKX12YXIgVFY9RihcIlpvZEJpZ0ludEZvcm1hdFwiLCgkLFEpPT57YlkuaW5pdCgkLFEpLE5KLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHNtKCQpe3JldHVybiB3MyhUViwkKX1mdW5jdGlvbiBlbSgkKXtyZXR1cm4gTzMoVFYsJCl9dmFyIFNNPUYoXCJab2RTeW1ib2xcIiwoJCxRKT0+e19ZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiAkbCgkKXtyZXR1cm4gRDMoU00sJCl9dmFyIGtNPUYoXCJab2RVbmRlZmluZWRcIiwoJCxRKT0+e1NZLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBRbCgkKXtyZXR1cm4gRjMoa00sJCl9dmFyIHZNPUYoXCJab2ROdWxsXCIsKCQsUSk9PntrWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gbDMoJCl7cmV0dXJuIFozKHZNLCQpfXZhciBDTT1GKFwiWm9kQW55XCIsKCQsUSk9Pnt2WS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gSmwoKXtyZXR1cm4gTTMoQ00pfXZhciBUTT1GKFwiWm9kVW5rbm93blwiLCgkLFEpPT57XzAuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFMkKCl7cmV0dXJuIFMwKFRNKX12YXIgeE09RihcIlpvZE5ldmVyXCIsKCQsUSk9PntDWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gYzMoJCl7cmV0dXJuIEwzKHhNLCQpfXZhciBmTT1GKFwiWm9kVm9pZFwiLCgkLFEpPT57VFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIFhsKCQpe3JldHVybiBqMyhmTSwkKX12YXIgcDM9RihcIlpvZERhdGVcIiwoJCxRKT0+e3hZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5taW49KFksWCk9PiQuY2hlY2soSTYoWSxYKSksJC5tYXg9KFksWCk9PiQuY2hlY2sodDYoWSxYKSk7bGV0IEo9JC5fem9kLmJhZzskLm1pbkRhdGU9Si5taW5pbXVtP25ldyBEYXRlKEoubWluaW11bSk6bnVsbCwkLm1heERhdGU9Si5tYXhpbXVtP25ldyBEYXRlKEoubWF4aW11bSk6bnVsbH0pO2Z1bmN0aW9uIFlsKCQpe3JldHVybiBBMyhwMywkKX12YXIgeU09RihcIlpvZEFycmF5XCIsKCQsUSk9PntyOC5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQuZWxlbWVudD1RLmVsZW1lbnQsJC5taW49KEosWSk9PiQuY2hlY2soazEoSixZKSksJC5ub25lbXB0eT0oSik9PiQuY2hlY2soazEoMSxKKSksJC5tYXg9KEosWSk9PiQuY2hlY2soJDkoSixZKSksJC5sZW5ndGg9KEosWSk9PiQuY2hlY2soUTkoSixZKSksJC51bndyYXA9KCk9PiQuZWxlbWVudH0pO2Z1bmN0aW9uIFckKCQsUSl7cmV0dXJuIEtKKHlNLCQsUSl9ZnVuY3Rpb24gV2woJCl7bGV0IFE9JC5fem9kLmRlZi5zaGFwZTtyZXR1cm4gbChPYmplY3Qua2V5cyhRKSl9dmFyIGQzPUYoXCJab2RPYmplY3RcIiwoJCxRKT0+e1JRLmluaXQoJCxRKSxKJC5pbml0KCQsUSksdi5kZWZpbmVMYXp5KCQsXCJzaGFwZVwiLCgpPT5RLnNoYXBlKSwkLmtleW9mPSgpPT56NihPYmplY3Qua2V5cygkLl96b2QuZGVmLnNoYXBlKSksJC5jYXRjaGFsbD0oSik9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYsY2F0Y2hhbGw6Sn0pLCQucGFzc3Rocm91Z2g9KCk9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYsY2F0Y2hhbGw6UyQoKX0pLCQubG9vc2U9KCk9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYsY2F0Y2hhbGw6UyQoKX0pLCQuc3RyaWN0PSgpPT4kLmNsb25lKHsuLi4kLl96b2QuZGVmLGNhdGNoYWxsOmMzKCl9KSwkLnN0cmlwPSgpPT4kLmNsb25lKHsuLi4kLl96b2QuZGVmLGNhdGNoYWxsOnZvaWQgMH0pLCQuZXh0ZW5kPShKKT0+e3JldHVybiB2LmV4dGVuZCgkLEopfSwkLm1lcmdlPShKKT0+di5tZXJnZSgkLEopLCQucGljaz0oSik9PnYucGljaygkLEopLCQub21pdD0oSik9PnYub21pdCgkLEopLCQucGFydGlhbD0oLi4uSik9PnYucGFydGlhbChoViwkLEpbMF0pLCQucmVxdWlyZWQ9KC4uLkopPT52LnJlcXVpcmVkKHVWLCQsSlswXSl9KTtmdW5jdGlvbiBoKCQsUSl7bGV0IEo9e3R5cGU6XCJvYmplY3RcIixnZXQgc2hhcGUoKXtyZXR1cm4gdi5hc3NpZ25Qcm9wKHRoaXMsXCJzaGFwZVwiLHsuLi4kfSksdGhpcy5zaGFwZX0sLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9O3JldHVybiBuZXcgZDMoSil9ZnVuY3Rpb24gR2woJCxRKXtyZXR1cm4gbmV3IGQzKHt0eXBlOlwib2JqZWN0XCIsZ2V0IHNoYXBlKCl7cmV0dXJuIHYuYXNzaWduUHJvcCh0aGlzLFwic2hhcGVcIix7Li4uJH0pLHRoaXMuc2hhcGV9LGNhdGNoYWxsOmMzKCksLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX1mdW5jdGlvbiBINigkLFEpe3JldHVybiBuZXcgZDMoe3R5cGU6XCJvYmplY3RcIixnZXQgc2hhcGUoKXtyZXR1cm4gdi5hc3NpZ25Qcm9wKHRoaXMsXCJzaGFwZVwiLHsuLi4kfSksdGhpcy5zaGFwZX0sY2F0Y2hhbGw6UyQoKSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pfXZhciB4Vj1GKFwiWm9kVW5pb25cIiwoJCxRKT0+e1BRLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5vcHRpb25zPVEub3B0aW9uc30pO2Z1bmN0aW9uIEEkKCQsUSl7cmV0dXJuIG5ldyB4Vih7dHlwZTpcInVuaW9uXCIsb3B0aW9uczokLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9dmFyIGdNPUYoXCJab2REaXNjcmltaW5hdGVkVW5pb25cIiwoJCxRKT0+e3hWLmluaXQoJCxRKSxmWS5pbml0KCQsUSl9KTtmdW5jdGlvbiBpMygkLFEsSil7cmV0dXJuIG5ldyBnTSh7dHlwZTpcInVuaW9uXCIsb3B0aW9uczpRLGRpc2NyaW1pbmF0b3I6JCwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhKKX0pfXZhciBoTT1GKFwiWm9kSW50ZXJzZWN0aW9uXCIsKCQsUSk9Pnt5WS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gd0ooJCxRKXtyZXR1cm4gbmV3IGhNKHt0eXBlOlwiaW50ZXJzZWN0aW9uXCIsbGVmdDokLHJpZ2h0OlF9KX12YXIgdU09RihcIlpvZFR1cGxlXCIsKCQsUSk9PntTMS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQucmVzdD0oSik9PiQuY2xvbmUoey4uLiQuX3pvZC5kZWYscmVzdDpKfSl9KTtmdW5jdGlvbiBVbCgkLFEsSil7bGV0IFk9USBpbnN0YW5jZW9mIG8sWD1ZP0o6UTtyZXR1cm4gbmV3IHVNKHt0eXBlOlwidHVwbGVcIixpdGVtczokLHJlc3Q6WT9ROm51bGwsLi4udi5ub3JtYWxpemVQYXJhbXMoWCl9KX12YXIgZlY9RihcIlpvZFJlY29yZFwiLCgkLFEpPT57Z1kuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLmtleVR5cGU9US5rZXlUeXBlLCQudmFsdWVUeXBlPVEudmFsdWVUeXBlfSk7ZnVuY3Rpb24gSSQoJCxRLEope3JldHVybiBuZXcgZlYoe3R5cGU6XCJyZWNvcmRcIixrZXlUeXBlOiQsdmFsdWVUeXBlOlEsLi4udi5ub3JtYWxpemVQYXJhbXMoSil9KX1mdW5jdGlvbiBIbCgkLFEsSil7cmV0dXJuIG5ldyBmVih7dHlwZTpcInJlY29yZFwiLGtleVR5cGU6QSQoWyQsYzMoKV0pLHZhbHVlVHlwZTpRLC4uLnYubm9ybWFsaXplUGFyYW1zKEopfSl9dmFyIG1NPUYoXCJab2RNYXBcIiwoJCxRKT0+e2hZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5rZXlUeXBlPVEua2V5VHlwZSwkLnZhbHVlVHlwZT1RLnZhbHVlVHlwZX0pO2Z1bmN0aW9uIEtsKCQsUSxKKXtyZXR1cm4gbmV3IG1NKHt0eXBlOlwibWFwXCIsa2V5VHlwZTokLHZhbHVlVHlwZTpRLC4uLnYubm9ybWFsaXplUGFyYW1zKEopfSl9dmFyIGxNPUYoXCJab2RTZXRcIiwoJCxRKT0+e3VZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5taW49KC4uLkopPT4kLmNoZWNrKHYwKC4uLkopKSwkLm5vbmVtcHR5PShKKT0+JC5jaGVjayh2MCgxLEopKSwkLm1heD0oLi4uSik9PiQuY2hlY2soZTgoLi4uSikpLCQuc2l6ZT0oLi4uSik9PiQuY2hlY2soYVEoLi4uSikpfSk7ZnVuY3Rpb24gcWwoJCxRKXtyZXR1cm4gbmV3IGxNKHt0eXBlOlwic2V0XCIsdmFsdWVUeXBlOiQsLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX12YXIgcUo9RihcIlpvZEVudW1cIiwoJCxRKT0+e21ZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5lbnVtPVEuZW50cmllcywkLm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhRLmVudHJpZXMpO2xldCBKPW5ldyBTZXQoT2JqZWN0LmtleXMoUS5lbnRyaWVzKSk7JC5leHRyYWN0PShZLFgpPT57bGV0IFc9e307Zm9yKGxldCBHIG9mIFkpaWYoSi5oYXMoRykpV1tHXT1RLmVudHJpZXNbR107ZWxzZSB0aHJvdyBFcnJvcihgS2V5ICR7R30gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHFKKHsuLi5RLGNoZWNrczpbXSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhYKSxlbnRyaWVzOld9KX0sJC5leGNsdWRlPShZLFgpPT57bGV0IFc9ey4uLlEuZW50cmllc307Zm9yKGxldCBHIG9mIFkpaWYoSi5oYXMoRykpZGVsZXRlIFdbR107ZWxzZSB0aHJvdyBFcnJvcihgS2V5ICR7R30gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHFKKHsuLi5RLGNoZWNrczpbXSwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhYKSxlbnRyaWVzOld9KX19KTtmdW5jdGlvbiB6NigkLFEpe2xldCBKPUFycmF5LmlzQXJyYXkoJCk/T2JqZWN0LmZyb21FbnRyaWVzKCQubWFwKChZKT0+W1ksWV0pKTokO3JldHVybiBuZXcgcUooe3R5cGU6XCJlbnVtXCIsZW50cmllczpKLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9ZnVuY3Rpb24gVmwoJCxRKXtyZXR1cm4gbmV3IHFKKHt0eXBlOlwiZW51bVwiLGVudHJpZXM6JCwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pfXZhciBjTT1GKFwiWm9kTGl0ZXJhbFwiLCgkLFEpPT57bFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnZhbHVlcz1uZXcgU2V0KFEudmFsdWVzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxcInZhbHVlXCIse2dldCgpe2lmKFEudmFsdWVzLmxlbmd0aD4xKXRocm93IEVycm9yKFwiVGhpcyBzY2hlbWEgY29udGFpbnMgbXVsdGlwbGUgdmFsaWQgbGl0ZXJhbCB2YWx1ZXMuIFVzZSBgLnZhbHVlc2AgaW5zdGVhZC5cIik7cmV0dXJuIFEudmFsdWVzWzBdfX0pfSk7ZnVuY3Rpb24gbCgkLFEpe3JldHVybiBuZXcgY00oe3R5cGU6XCJsaXRlcmFsXCIsdmFsdWVzOkFycmF5LmlzQXJyYXkoJCk/JDpbJF0sLi4udi5ub3JtYWxpemVQYXJhbXMoUSl9KX12YXIgcE09RihcIlpvZEZpbGVcIiwoJCxRKT0+e2NZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5taW49KEosWSk9PiQuY2hlY2sodjAoSixZKSksJC5tYXg9KEosWSk9PiQuY2hlY2soZTgoSixZKSksJC5taW1lPShKLFkpPT4kLmNoZWNrKFlKKEFycmF5LmlzQXJyYXkoSik/SjpbSl0sWSkpfSk7ZnVuY3Rpb24gQmwoJCl7cmV0dXJuIFIzKHBNLCQpfXZhciB5Vj1GKFwiWm9kVHJhbnNmb3JtXCIsKCQsUSk9PntvOC5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQuX3pvZC5wYXJzZT0oSixZKT0+e0ouYWRkSXNzdWU9KFcpPT57aWYodHlwZW9mIFc9PT1cInN0cmluZ1wiKUouaXNzdWVzLnB1c2godi5pc3N1ZShXLEoudmFsdWUsUSkpO2Vsc2V7bGV0IEc9VztpZihHLmZhdGFsKUcuY29udGludWU9ITE7Ry5jb2RlPz8oRy5jb2RlPVwiY3VzdG9tXCIpLEcuaW5wdXQ/PyhHLmlucHV0PUoudmFsdWUpLEcuaW5zdD8/KEcuaW5zdD0kKSxHLmNvbnRpbnVlPz8oRy5jb250aW51ZT0hMCksSi5pc3N1ZXMucHVzaCh2Lmlzc3VlKEcpKX19O2xldCBYPVEudHJhbnNmb3JtKEoudmFsdWUsSik7aWYoWCBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIFgudGhlbigoVyk9PntyZXR1cm4gSi52YWx1ZT1XLEp9KTtyZXR1cm4gSi52YWx1ZT1YLEp9fSk7ZnVuY3Rpb24gZ1YoJCl7cmV0dXJuIG5ldyB5Vih7dHlwZTpcInRyYW5zZm9ybVwiLHRyYW5zZm9ybTokfSl9dmFyIGhWPUYoXCJab2RPcHRpb25hbFwiLCgkLFEpPT57cFkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBiJCgkKXtyZXR1cm4gbmV3IGhWKHt0eXBlOlwib3B0aW9uYWxcIixpbm5lclR5cGU6JH0pfXZhciBkTT1GKFwiWm9kTnVsbGFibGVcIiwoJCxRKT0+e2RZLmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC51bndyYXA9KCk9PiQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gdTMoJCl7cmV0dXJuIG5ldyBkTSh7dHlwZTpcIm51bGxhYmxlXCIsaW5uZXJUeXBlOiR9KX1mdW5jdGlvbiB6bCgkKXtyZXR1cm4gYiQodTMoJCkpfXZhciBpTT1GKFwiWm9kRGVmYXVsdFwiLCgkLFEpPT57aVkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGUsJC5yZW1vdmVEZWZhdWx0PSQudW53cmFwfSk7ZnVuY3Rpb24gbk0oJCxRKXtyZXR1cm4gbmV3IGlNKHt0eXBlOlwiZGVmYXVsdFwiLGlubmVyVHlwZTokLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIFE9PT1cImZ1bmN0aW9uXCI/USgpOlF9fSl9dmFyIHJNPUYoXCJab2RQcmVmYXVsdFwiLCgkLFEpPT57blkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBvTSgkLFEpe3JldHVybiBuZXcgck0oe3R5cGU6XCJwcmVmYXVsdFwiLGlubmVyVHlwZTokLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIFE9PT1cImZ1bmN0aW9uXCI/USgpOlF9fSl9dmFyIHVWPUYoXCJab2ROb25PcHRpb25hbFwiLCgkLFEpPT57clkuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB0TSgkLFEpe3JldHVybiBuZXcgdVYoe3R5cGU6XCJub25vcHRpb25hbFwiLGlubmVyVHlwZTokLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9dmFyIGFNPUYoXCJab2RTdWNjZXNzXCIsKCQsUSk9PntvWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIE5sKCQpe3JldHVybiBuZXcgYU0oe3R5cGU6XCJzdWNjZXNzXCIsaW5uZXJUeXBlOiR9KX12YXIgc009RihcIlpvZENhdGNoXCIsKCQsUSk9Pnt0WS5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmlubmVyVHlwZSwkLnJlbW92ZUNhdGNoPSQudW53cmFwfSk7ZnVuY3Rpb24gZU0oJCxRKXtyZXR1cm4gbmV3IHNNKHt0eXBlOlwiY2F0Y2hcIixpbm5lclR5cGU6JCxjYXRjaFZhbHVlOnR5cGVvZiBRPT09XCJmdW5jdGlvblwiP1E6KCk9PlF9KX12YXIgJEw9RihcIlpvZE5hTlwiLCgkLFEpPT57YVkuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIHdsKCQpe3JldHVybiBJMygkTCwkKX12YXIgbVY9RihcIlpvZFBpcGVcIiwoJCxRKT0+e3Q4LmluaXQoJCxRKSxKJC5pbml0KCQsUSksJC5pbj1RLmluLCQub3V0PVEub3V0fSk7ZnVuY3Rpb24gbTMoJCxRKXtyZXR1cm4gbmV3IG1WKHt0eXBlOlwicGlwZVwiLGluOiQsb3V0OlF9KX12YXIgUUw9RihcIlpvZFJlYWRvbmx5XCIsKCQsUSk9PntzWS5pbml0KCQsUSksSiQuaW5pdCgkLFEpfSk7ZnVuY3Rpb24gSkwoJCl7cmV0dXJuIG5ldyBRTCh7dHlwZTpcInJlYWRvbmx5XCIsaW5uZXJUeXBlOiR9KX12YXIgWEw9RihcIlpvZFRlbXBsYXRlTGl0ZXJhbFwiLCgkLFEpPT57ZVkuaW5pdCgkLFEpLEokLmluaXQoJCxRKX0pO2Z1bmN0aW9uIE9sKCQsUSl7cmV0dXJuIG5ldyBYTCh7dHlwZTpcInRlbXBsYXRlX2xpdGVyYWxcIixwYXJ0czokLC4uLnYubm9ybWFsaXplUGFyYW1zKFEpfSl9dmFyIFlMPUYoXCJab2RMYXp5XCIsKCQsUSk9PntRMy5pbml0KCQsUSksSiQuaW5pdCgkLFEpLCQudW53cmFwPSgpPT4kLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gV0woJCl7cmV0dXJuIG5ldyBZTCh7dHlwZTpcImxhenlcIixnZXR0ZXI6JH0pfXZhciBHTD1GKFwiWm9kUHJvbWlzZVwiLCgkLFEpPT57JDMuaW5pdCgkLFEpLEokLmluaXQoJCxRKSwkLnVud3JhcD0oKT0+JC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBEbCgkKXtyZXR1cm4gbmV3IEdMKHt0eXBlOlwicHJvbWlzZVwiLGlubmVyVHlwZTokfSl9dmFyIG4zPUYoXCJab2RDdXN0b21cIiwoJCxRKT0+e0ozLmluaXQoJCxRKSxKJC5pbml0KCQsUSl9KTtmdW5jdGlvbiBVTCgkLFEpe2xldCBKPW5ldyBUJCh7Y2hlY2s6XCJjdXN0b21cIiwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pO3JldHVybiBKLl96b2QuY2hlY2s9JCxKfWZ1bmN0aW9uIGxWKCQsUSl7cmV0dXJuIFAzKG4zLCQ/PygoKT0+ITApLFEpfWZ1bmN0aW9uIEhMKCQsUT17fSl7cmV0dXJuIEUzKG4zLCQsUSl9ZnVuY3Rpb24gS0woJCxRKXtsZXQgSj1VTCgoWSk9PntyZXR1cm4gWS5hZGRJc3N1ZT0oWCk9PntpZih0eXBlb2YgWD09PVwic3RyaW5nXCIpWS5pc3N1ZXMucHVzaCh2Lmlzc3VlKFgsWS52YWx1ZSxKLl96b2QuZGVmKSk7ZWxzZXtsZXQgVz1YO2lmKFcuZmF0YWwpVy5jb250aW51ZT0hMTtXLmNvZGU/PyhXLmNvZGU9XCJjdXN0b21cIiksVy5pbnB1dD8/KFcuaW5wdXQ9WS52YWx1ZSksVy5pbnN0Pz8oVy5pbnN0PUopLFcuY29udGludWU/PyhXLmNvbnRpbnVlPSFKLl96b2QuZGVmLmFib3J0KSxZLmlzc3Vlcy5wdXNoKHYuaXNzdWUoVykpfX0sJChZLnZhbHVlLFkpfSxRKTtyZXR1cm4gSn1mdW5jdGlvbiBGbCgkLFE9e2Vycm9yOmBJbnB1dCBub3QgaW5zdGFuY2Ugb2YgJHskLm5hbWV9YH0pe2xldCBKPW5ldyBuMyh7dHlwZTpcImN1c3RvbVwiLGNoZWNrOlwiY3VzdG9tXCIsZm46KFkpPT5ZIGluc3RhbmNlb2YgJCxhYm9ydDohMCwuLi52Lm5vcm1hbGl6ZVBhcmFtcyhRKX0pO3JldHVybiBKLl96b2QuYmFnLkNsYXNzPSQsSn12YXIgWmw9KC4uLiQpPT5iMyh7UGlwZTptVixCb29sZWFuOnpKLFN0cmluZzpWSixUcmFuc2Zvcm06eVZ9LC4uLiQpO2Z1bmN0aW9uIE1sKCQpe2xldCBRPVdMKCgpPT57cmV0dXJuIEEkKFtMKCQpLHokKCksaSQoKSxsMygpLFckKFEpLEkkKEwoKSxRKV0pfSk7cmV0dXJuIFF9ZnVuY3Rpb24gcjMoJCxRKXtyZXR1cm4gbTMoZ1YoJCksUSl9dmFyIExsPXtpbnZhbGlkX3R5cGU6XCJpbnZhbGlkX3R5cGVcIix0b29fYmlnOlwidG9vX2JpZ1wiLHRvb19zbWFsbDpcInRvb19zbWFsbFwiLGludmFsaWRfZm9ybWF0OlwiaW52YWxpZF9mb3JtYXRcIixub3RfbXVsdGlwbGVfb2Y6XCJub3RfbXVsdGlwbGVfb2ZcIix1bnJlY29nbml6ZWRfa2V5czpcInVucmVjb2duaXplZF9rZXlzXCIsaW52YWxpZF91bmlvbjpcImludmFsaWRfdW5pb25cIixpbnZhbGlkX2tleTpcImludmFsaWRfa2V5XCIsaW52YWxpZF9lbGVtZW50OlwiaW52YWxpZF9lbGVtZW50XCIsaW52YWxpZF92YWx1ZTpcImludmFsaWRfdmFsdWVcIixjdXN0b206XCJjdXN0b21cIn07ZnVuY3Rpb24gamwoJCl7YyQoe2N1c3RvbUVycm9yOiR9KX1mdW5jdGlvbiBBbCgpe3JldHVybiBjJCgpLmN1c3RvbUVycm9yfXZhciBjVj17fTtqNChjVix7c3RyaW5nOigpPT5JbCxudW1iZXI6KCk9PlJsLGRhdGU6KCk9PmJsLGJvb2xlYW46KCk9PlBsLGJpZ2ludDooKT0+RWx9KTtmdW5jdGlvbiBJbCgkKXtyZXR1cm4gcHEoVkosJCl9ZnVuY3Rpb24gUmwoJCl7cmV0dXJuIG9xKEJKLCQpfWZ1bmN0aW9uIFBsKCQpe3JldHVybiB0cSh6SiwkKX1mdW5jdGlvbiBFbCgkKXtyZXR1cm4gYXEoTkosJCl9ZnVuY3Rpb24gYmwoJCl7cmV0dXJuIHNxKHAzLCQpfWMkKEVRKCkpO3ZhciBxTD1LO3ZhciBwVj1xTDt2YXIgZFY9XCIyMDI1LTExLTI1XCI7dmFyIFZMPVtkVixcIjIwMjUtMDYtMThcIixcIjIwMjUtMDMtMjZcIixcIjIwMjQtMTEtMDVcIixcIjIwMjQtMTAtMDdcIl0sVDE9XCJpby5tb2RlbGNvbnRleHRwcm90b2NvbC9yZWxhdGVkLXRhc2tcIix0Mz1cIjIuMFwiLGEkPWxWKCgkKT0+JCE9PW51bGwmJih0eXBlb2YgJD09PVwib2JqZWN0XCJ8fHR5cGVvZiAkPT09XCJmdW5jdGlvblwiKSksQkw9QSQoW0woKSx6JCgpLmludCgpXSksekw9TCgpLFpWJD1INih7dHRsOnokKCkub3B0aW9uYWwoKSxwb2xsSW50ZXJ2YWw6eiQoKS5vcHRpb25hbCgpfSksU2w9aCh7dHRsOnokKCkub3B0aW9uYWwoKX0pLGtsPWgoe3Rhc2tJZDpMKCl9KSxpVj1INih7cHJvZ3Jlc3NUb2tlbjpCTC5vcHRpb25hbCgpLFtUMV06a2wub3B0aW9uYWwoKX0pLGc2PWgoe19tZXRhOmlWLm9wdGlvbmFsKCl9KSxPSj1nNi5leHRlbmQoe3Rhc2s6U2wub3B0aW9uYWwoKX0pLE5MPSgkKT0+T0ouc2FmZVBhcnNlKCQpLnN1Y2Nlc3MsSjY9aCh7bWV0aG9kOkwoKSxwYXJhbXM6ZzYubG9vc2UoKS5vcHRpb25hbCgpfSksczY9aCh7X21ldGE6aVYub3B0aW9uYWwoKX0pLGU2PWgoe21ldGhvZDpMKCkscGFyYW1zOnM2Lmxvb3NlKCkub3B0aW9uYWwoKX0pLFg2PUg2KHtfbWV0YTppVi5vcHRpb25hbCgpfSksYTM9QSQoW0woKSx6JCgpLmludCgpXSksd0w9aCh7anNvbnJwYzpsKHQzKSxpZDphMywuLi5KNi5zaGFwZX0pLnN0cmljdCgpLG5WPSgkKT0+d0wuc2FmZVBhcnNlKCQpLnN1Y2Nlc3MsT0w9aCh7anNvbnJwYzpsKHQzKSwuLi5lNi5zaGFwZX0pLnN0cmljdCgpLERMPSgkKT0+T0wuc2FmZVBhcnNlKCQpLnN1Y2Nlc3MsclY9aCh7anNvbnJwYzpsKHQzKSxpZDphMyxyZXN1bHQ6WDZ9KS5zdHJpY3QoKSxESj0oJCk9PnJWLnNhZmVQYXJzZSgkKS5zdWNjZXNzO3ZhciBkOyhmdW5jdGlvbigkKXskWyQuQ29ubmVjdGlvbkNsb3NlZD0tMzIwMDBdPVwiQ29ubmVjdGlvbkNsb3NlZFwiLCRbJC5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPVwiUmVxdWVzdFRpbWVvdXRcIiwkWyQuUGFyc2VFcnJvcj0tMzI3MDBdPVwiUGFyc2VFcnJvclwiLCRbJC5JbnZhbGlkUmVxdWVzdD0tMzI2MDBdPVwiSW52YWxpZFJlcXVlc3RcIiwkWyQuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT1cIk1ldGhvZE5vdEZvdW5kXCIsJFskLkludmFsaWRQYXJhbXM9LTMyNjAyXT1cIkludmFsaWRQYXJhbXNcIiwkWyQuSW50ZXJuYWxFcnJvcj0tMzI2MDNdPVwiSW50ZXJuYWxFcnJvclwiLCRbJC5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09XCJVcmxFbGljaXRhdGlvblJlcXVpcmVkXCJ9KShkfHwoZD17fSkpO3ZhciBvVj1oKHtqc29ucnBjOmwodDMpLGlkOmEzLm9wdGlvbmFsKCksZXJyb3I6aCh7Y29kZTp6JCgpLmludCgpLG1lc3NhZ2U6TCgpLGRhdGE6UyQoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKTt2YXIgRkw9KCQpPT5vVi5zYWZlUGFyc2UoJCkuc3VjY2Vzczt2YXIgTVYkPUEkKFt3TCxPTCxyVixvVl0pLExWJD1BJChbclYsb1ZdKSxzMz1YNi5zdHJpY3QoKSx2bD1zNi5leHRlbmQoe3JlcXVlc3RJZDphMy5vcHRpb25hbCgpLHJlYXNvbjpMKCkub3B0aW9uYWwoKX0pLGUzPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL2NhbmNlbGxlZFwiKSxwYXJhbXM6dmx9KSxDbD1oKHtzcmM6TCgpLG1pbWVUeXBlOkwoKS5vcHRpb25hbCgpLHNpemVzOlckKEwoKSkub3B0aW9uYWwoKSx0aGVtZTp6NihbXCJsaWdodFwiLFwiZGFya1wiXSkub3B0aW9uYWwoKX0pLEZKPWgoe2ljb25zOlckKENsKS5vcHRpb25hbCgpfSksVTk9aCh7bmFtZTpMKCksdGl0bGU6TCgpLm9wdGlvbmFsKCl9KSxaTD1VOS5leHRlbmQoey4uLlU5LnNoYXBlLC4uLkZKLnNoYXBlLHZlcnNpb246TCgpLHdlYnNpdGVVcmw6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCl9KSxUbD13SihoKHthcHBseURlZmF1bHRzOmkkKCkub3B0aW9uYWwoKX0pLEkkKEwoKSxTJCgpKSkseGw9cjMoKCQpPT57aWYoJCYmdHlwZW9mICQ9PT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheSgkKSl7aWYoT2JqZWN0LmtleXMoJCkubGVuZ3RoPT09MClyZXR1cm57Zm9ybTp7fX19cmV0dXJuICR9LHdKKGgoe2Zvcm06VGwub3B0aW9uYWwoKSx1cmw6YSQub3B0aW9uYWwoKX0pLEkkKEwoKSxTJCgpKS5vcHRpb25hbCgpKSksZmw9SDYoe2xpc3Q6YSQub3B0aW9uYWwoKSxjYW5jZWw6YSQub3B0aW9uYWwoKSxyZXF1ZXN0czpINih7c2FtcGxpbmc6SDYoe2NyZWF0ZU1lc3NhZ2U6YSQub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksZWxpY2l0YXRpb246SDYoe2NyZWF0ZTphJC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSx5bD1INih7bGlzdDphJC5vcHRpb25hbCgpLGNhbmNlbDphJC5vcHRpb25hbCgpLHJlcXVlc3RzOkg2KHt0b29sczpINih7Y2FsbDphJC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxnbD1oKHtleHBlcmltZW50YWw6SSQoTCgpLGEkKS5vcHRpb25hbCgpLHNhbXBsaW5nOmgoe2NvbnRleHQ6YSQub3B0aW9uYWwoKSx0b29sczphJC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjp4bC5vcHRpb25hbCgpLHJvb3RzOmgoe2xpc3RDaGFuZ2VkOmkkKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdGFza3M6Zmwub3B0aW9uYWwoKSxleHRlbnNpb25zOkkkKEwoKSxhJCkub3B0aW9uYWwoKX0pLGhsPWc2LmV4dGVuZCh7cHJvdG9jb2xWZXJzaW9uOkwoKSxjYXBhYmlsaXRpZXM6Z2wsY2xpZW50SW5mbzpaTH0pLHRWPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJpbml0aWFsaXplXCIpLHBhcmFtczpobH0pO3ZhciB1bD1oKHtleHBlcmltZW50YWw6SSQoTCgpLGEkKS5vcHRpb25hbCgpLGxvZ2dpbmc6YSQub3B0aW9uYWwoKSxjb21wbGV0aW9uczphJC5vcHRpb25hbCgpLHByb21wdHM6aCh7bGlzdENoYW5nZWQ6aSQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxyZXNvdXJjZXM6aCh7c3Vic2NyaWJlOmkkKCkub3B0aW9uYWwoKSxsaXN0Q2hhbmdlZDppJCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOmgoe2xpc3RDaGFuZ2VkOmkkKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdGFza3M6eWwub3B0aW9uYWwoKSxleHRlbnNpb25zOkkkKEwoKSxhJCkub3B0aW9uYWwoKX0pLG1sPVg2LmV4dGVuZCh7cHJvdG9jb2xWZXJzaW9uOkwoKSxjYXBhYmlsaXRpZXM6dWwsc2VydmVySW5mbzpaTCxpbnN0cnVjdGlvbnM6TCgpLm9wdGlvbmFsKCl9KSxhVj1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZFwiKSxwYXJhbXM6czYub3B0aW9uYWwoKX0pO3ZhciAkVz1KNi5leHRlbmQoe21ldGhvZDpsKFwicGluZ1wiKSxwYXJhbXM6ZzYub3B0aW9uYWwoKX0pLGxsPWgoe3Byb2dyZXNzOnokKCksdG90YWw6YiQoeiQoKSksbWVzc2FnZTpiJChMKCkpfSksY2w9aCh7Li4uczYuc2hhcGUsLi4ubGwuc2hhcGUscHJvZ3Jlc3NUb2tlbjpCTH0pLFFXPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL3Byb2dyZXNzXCIpLHBhcmFtczpjbH0pLHBsPWc2LmV4dGVuZCh7Y3Vyc29yOnpMLm9wdGlvbmFsKCl9KSxaSj1KNi5leHRlbmQoe3BhcmFtczpwbC5vcHRpb25hbCgpfSksTUo9WDYuZXh0ZW5kKHtuZXh0Q3Vyc29yOnpMLm9wdGlvbmFsKCl9KSxkbD16NihbXCJ3b3JraW5nXCIsXCJpbnB1dF9yZXF1aXJlZFwiLFwiY29tcGxldGVkXCIsXCJmYWlsZWRcIixcImNhbmNlbGxlZFwiXSksTEo9aCh7dGFza0lkOkwoKSxzdGF0dXM6ZGwsdHRsOkEkKFt6JCgpLGwzKCldKSxjcmVhdGVkQXQ6TCgpLGxhc3RVcGRhdGVkQXQ6TCgpLHBvbGxJbnRlcnZhbDpiJCh6JCgpKSxzdGF0dXNNZXNzYWdlOmIkKEwoKSl9KSxIOT1YNi5leHRlbmQoe3Rhc2s6TEp9KSxpbD1zNi5tZXJnZShMSiksako9ZTYuZXh0ZW5kKHttZXRob2Q6bChcIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzXCIpLHBhcmFtczppbH0pLEpXPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJ0YXNrcy9nZXRcIikscGFyYW1zOmc2LmV4dGVuZCh7dGFza0lkOkwoKX0pfSksWFc9WDYubWVyZ2UoTEopLFlXPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJ0YXNrcy9yZXN1bHRcIikscGFyYW1zOmc2LmV4dGVuZCh7dGFza0lkOkwoKX0pfSksalYkPVg2Lmxvb3NlKCksV1c9WkouZXh0ZW5kKHttZXRob2Q6bChcInRhc2tzL2xpc3RcIil9KSxHVz1NSi5leHRlbmQoe3Rhc2tzOlckKExKKX0pLFVXPUo2LmV4dGVuZCh7bWV0aG9kOmwoXCJ0YXNrcy9jYW5jZWxcIikscGFyYW1zOmc2LmV4dGVuZCh7dGFza0lkOkwoKX0pfSksTUw9WDYubWVyZ2UoTEopLExMPWgoe3VyaTpMKCksbWltZVR5cGU6YiQoTCgpKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLGpMPUxMLmV4dGVuZCh7dGV4dDpMKCl9KSxzVj1MKCkucmVmaW5lKCgkKT0+e3RyeXtyZXR1cm4gYXRvYigkKSwhMH1jYXRjaHtyZXR1cm4hMX19LHttZXNzYWdlOlwiSW52YWxpZCBCYXNlNjQgc3RyaW5nXCJ9KSxBTD1MTC5leHRlbmQoe2Jsb2I6c1Z9KSxBSj16NihbXCJ1c2VyXCIsXCJhc3Npc3RhbnRcIl0pLEs5PWgoe2F1ZGllbmNlOlckKEFKKS5vcHRpb25hbCgpLHByaW9yaXR5OnokKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDpZOS5kYXRldGltZSh7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLElMPWgoey4uLlU5LnNoYXBlLC4uLkZKLnNoYXBlLHVyaTpMKCksZGVzY3JpcHRpb246YiQoTCgpKSxtaW1lVHlwZTpiJChMKCkpLHNpemU6YiQoeiQoKSksYW5ub3RhdGlvbnM6Szkub3B0aW9uYWwoKSxfbWV0YTpiJChINih7fSkpfSksbmw9aCh7Li4uVTkuc2hhcGUsLi4uRkouc2hhcGUsdXJpVGVtcGxhdGU6TCgpLGRlc2NyaXB0aW9uOmIkKEwoKSksbWltZVR5cGU6YiQoTCgpKSxhbm5vdGF0aW9uczpLOS5vcHRpb25hbCgpLF9tZXRhOmIkKEg2KHt9KSl9KSxIVz1aSi5leHRlbmQoe21ldGhvZDpsKFwicmVzb3VyY2VzL2xpc3RcIil9KSxybD1NSi5leHRlbmQoe3Jlc291cmNlczpXJChJTCl9KSxLVz1aSi5leHRlbmQoe21ldGhvZDpsKFwicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0XCIpfSksb2w9TUouZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpXJChubCl9KSxlVj1nNi5leHRlbmQoe3VyaTpMKCl9KSx0bD1lVixxVz1KNi5leHRlbmQoe21ldGhvZDpsKFwicmVzb3VyY2VzL3JlYWRcIikscGFyYW1zOnRsfSksYWw9WDYuZXh0ZW5kKHtjb250ZW50czpXJChBJChbakwsQUxdKSl9KSxzbD1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkXCIpLHBhcmFtczpzNi5vcHRpb25hbCgpfSksZWw9ZVYsJGM9SjYuZXh0ZW5kKHttZXRob2Q6bChcInJlc291cmNlcy9zdWJzY3JpYmVcIikscGFyYW1zOmVsfSksUWM9ZVYsSmM9SjYuZXh0ZW5kKHttZXRob2Q6bChcInJlc291cmNlcy91bnN1YnNjcmliZVwiKSxwYXJhbXM6UWN9KSxYYz1zNi5leHRlbmQoe3VyaTpMKCl9KSxZYz1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZFwiKSxwYXJhbXM6WGN9KSxXYz1oKHtuYW1lOkwoKSxkZXNjcmlwdGlvbjpiJChMKCkpLHJlcXVpcmVkOmIkKGkkKCkpfSksR2M9aCh7Li4uVTkuc2hhcGUsLi4uRkouc2hhcGUsZGVzY3JpcHRpb246YiQoTCgpKSxhcmd1bWVudHM6YiQoVyQoV2MpKSxfbWV0YTpiJChINih7fSkpfSksVlc9WkouZXh0ZW5kKHttZXRob2Q6bChcInByb21wdHMvbGlzdFwiKX0pLFVjPU1KLmV4dGVuZCh7cHJvbXB0czpXJChHYyl9KSxIYz1nNi5leHRlbmQoe25hbWU6TCgpLGFyZ3VtZW50czpJJChMKCksTCgpKS5vcHRpb25hbCgpfSksQlc9SjYuZXh0ZW5kKHttZXRob2Q6bChcInByb21wdHMvZ2V0XCIpLHBhcmFtczpIY30pLCRCPWgoe3R5cGU6bChcInRleHRcIiksdGV4dDpMKCksYW5ub3RhdGlvbnM6Szkub3B0aW9uYWwoKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLFFCPWgoe3R5cGU6bChcImltYWdlXCIpLGRhdGE6c1YsbWltZVR5cGU6TCgpLGFubm90YXRpb25zOks5Lm9wdGlvbmFsKCksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSxKQj1oKHt0eXBlOmwoXCJhdWRpb1wiKSxkYXRhOnNWLG1pbWVUeXBlOkwoKSxhbm5vdGF0aW9uczpLOS5vcHRpb25hbCgpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSksS2M9aCh7dHlwZTpsKFwidG9vbF91c2VcIiksbmFtZTpMKCksaWQ6TCgpLGlucHV0OkkkKEwoKSxTJCgpKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLHFjPWgoe3R5cGU6bChcInJlc291cmNlXCIpLHJlc291cmNlOkEkKFtqTCxBTF0pLGFubm90YXRpb25zOks5Lm9wdGlvbmFsKCksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSxWYz1JTC5leHRlbmQoe3R5cGU6bChcInJlc291cmNlX2xpbmtcIil9KSxYQj1BJChbJEIsUUIsSkIsVmMscWNdKSxCYz1oKHtyb2xlOkFKLGNvbnRlbnQ6WEJ9KSx6Yz1YNi5leHRlbmQoe2Rlc2NyaXB0aW9uOkwoKS5vcHRpb25hbCgpLG1lc3NhZ2VzOlckKEJjKX0pLE5jPWU2LmV4dGVuZCh7bWV0aG9kOmwoXCJub3RpZmljYXRpb25zL3Byb21wdHMvbGlzdF9jaGFuZ2VkXCIpLHBhcmFtczpzNi5vcHRpb25hbCgpfSksd2M9aCh7dGl0bGU6TCgpLm9wdGlvbmFsKCkscmVhZE9ubHlIaW50OmkkKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6aSQoKS5vcHRpb25hbCgpLGlkZW1wb3RlbnRIaW50OmkkKCkub3B0aW9uYWwoKSxvcGVuV29ybGRIaW50OmkkKCkub3B0aW9uYWwoKX0pLE9jPWgoe3Rhc2tTdXBwb3J0Ono2KFtcInJlcXVpcmVkXCIsXCJvcHRpb25hbFwiLFwiZm9yYmlkZGVuXCJdKS5vcHRpb25hbCgpfSksUkw9aCh7Li4uVTkuc2hhcGUsLi4uRkouc2hhcGUsZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6aCh7dHlwZTpsKFwib2JqZWN0XCIpLHByb3BlcnRpZXM6SSQoTCgpLGEkKS5vcHRpb25hbCgpLHJlcXVpcmVkOlckKEwoKSkub3B0aW9uYWwoKX0pLmNhdGNoYWxsKFMkKCkpLG91dHB1dFNjaGVtYTpoKHt0eXBlOmwoXCJvYmplY3RcIikscHJvcGVydGllczpJJChMKCksYSQpLm9wdGlvbmFsKCkscmVxdWlyZWQ6VyQoTCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoUyQoKSkub3B0aW9uYWwoKSxhbm5vdGF0aW9uczp3Yy5vcHRpb25hbCgpLGV4ZWN1dGlvbjpPYy5vcHRpb25hbCgpLF9tZXRhOkkkKEwoKSxTJCgpKS5vcHRpb25hbCgpfSkselc9WkouZXh0ZW5kKHttZXRob2Q6bChcInRvb2xzL2xpc3RcIil9KSxEYz1NSi5leHRlbmQoe3Rvb2xzOlckKFJMKX0pLE5XPVg2LmV4dGVuZCh7Y29udGVudDpXJChYQikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCksaXNFcnJvcjppJCgpLm9wdGlvbmFsKCl9KSxBViQ9Tlcub3IoWDYuZXh0ZW5kKHt0b29sUmVzdWx0OlMkKCl9KSksRmM9T0ouZXh0ZW5kKHtuYW1lOkwoKSxhcmd1bWVudHM6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSxxOT1KNi5leHRlbmQoe21ldGhvZDpsKFwidG9vbHMvY2FsbFwiKSxwYXJhbXM6RmN9KSxaYz1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWRcIikscGFyYW1zOnM2Lm9wdGlvbmFsKCl9KSxJViQ9aCh7YXV0b1JlZnJlc2g6aSQoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOnokKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KSxJSj16NihbXCJkZWJ1Z1wiLFwiaW5mb1wiLFwibm90aWNlXCIsXCJ3YXJuaW5nXCIsXCJlcnJvclwiLFwiY3JpdGljYWxcIixcImFsZXJ0XCIsXCJlbWVyZ2VuY3lcIl0pLE1jPWc2LmV4dGVuZCh7bGV2ZWw6SUp9KSxZQj1KNi5leHRlbmQoe21ldGhvZDpsKFwibG9nZ2luZy9zZXRMZXZlbFwiKSxwYXJhbXM6TWN9KSxMYz1zNi5leHRlbmQoe2xldmVsOklKLGxvZ2dlcjpMKCkub3B0aW9uYWwoKSxkYXRhOlMkKCl9KSxqYz1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9tZXNzYWdlXCIpLHBhcmFtczpMY30pLEFjPWgoe25hbWU6TCgpLm9wdGlvbmFsKCl9KSxJYz1oKHtoaW50czpXJChBYykub3B0aW9uYWwoKSxjb3N0UHJpb3JpdHk6eiQoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksc3BlZWRQcmlvcml0eTp6JCgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp6JCgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKX0pLFJjPWgoe21vZGU6ejYoW1wiYXV0b1wiLFwicmVxdWlyZWRcIixcIm5vbmVcIl0pLm9wdGlvbmFsKCl9KSxQYz1oKHt0eXBlOmwoXCJ0b29sX3Jlc3VsdFwiKSx0b29sVXNlSWQ6TCgpLmRlc2NyaWJlKFwiVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29ycmVzcG9uZGluZyB0b29sIGNhbGwuXCIpLGNvbnRlbnQ6VyQoWEIpLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50Omgoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOmkkKCkub3B0aW9uYWwoKSxfbWV0YTpJJChMKCksUyQoKSkub3B0aW9uYWwoKX0pLEVjPWkzKFwidHlwZVwiLFskQixRQixKQl0pLG8zPWkzKFwidHlwZVwiLFskQixRQixKQixLYyxQY10pLGJjPWgoe3JvbGU6QUosY29udGVudDpBJChbbzMsVyQobzMpXSksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSxfYz1PSi5leHRlbmQoe21lc3NhZ2VzOlckKGJjKSxtb2RlbFByZWZlcmVuY2VzOkljLm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OkwoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0Ono2KFtcIm5vbmVcIixcInRoaXNTZXJ2ZXJcIixcImFsbFNlcnZlcnNcIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6eiQoKS5vcHRpb25hbCgpLG1heFRva2Vuczp6JCgpLmludCgpLHN0b3BTZXF1ZW5jZXM6VyQoTCgpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmEkLm9wdGlvbmFsKCksdG9vbHM6VyQoUkwpLm9wdGlvbmFsKCksdG9vbENob2ljZTpSYy5vcHRpb25hbCgpfSksU2M9SjYuZXh0ZW5kKHttZXRob2Q6bChcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIikscGFyYW1zOl9jfSksUko9WDYuZXh0ZW5kKHttb2RlbDpMKCksc3RvcFJlYXNvbjpiJCh6NihbXCJlbmRUdXJuXCIsXCJzdG9wU2VxdWVuY2VcIixcIm1heFRva2Vuc1wiXSkub3IoTCgpKSkscm9sZTpBSixjb250ZW50OkVjfSksV0I9WDYuZXh0ZW5kKHttb2RlbDpMKCksc3RvcFJlYXNvbjpiJCh6NihbXCJlbmRUdXJuXCIsXCJzdG9wU2VxdWVuY2VcIixcIm1heFRva2Vuc1wiLFwidG9vbFVzZVwiXSkub3IoTCgpKSkscm9sZTpBSixjb250ZW50OkEkKFtvMyxXJChvMyldKX0pLGtjPWgoe3R5cGU6bChcImJvb2xlYW5cIiksdGl0bGU6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksZGVmYXVsdDppJCgpLm9wdGlvbmFsKCl9KSx2Yz1oKHt0eXBlOmwoXCJzdHJpbmdcIiksdGl0bGU6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksbWluTGVuZ3RoOnokKCkub3B0aW9uYWwoKSxtYXhMZW5ndGg6eiQoKS5vcHRpb25hbCgpLGZvcm1hdDp6NihbXCJlbWFpbFwiLFwidXJpXCIsXCJkYXRlXCIsXCJkYXRlLXRpbWVcIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpMKCkub3B0aW9uYWwoKX0pLENjPWgoe3R5cGU6ejYoW1wibnVtYmVyXCIsXCJpbnRlZ2VyXCJdKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxtaW5pbXVtOnokKCkub3B0aW9uYWwoKSxtYXhpbXVtOnokKCkub3B0aW9uYWwoKSxkZWZhdWx0OnokKCkub3B0aW9uYWwoKX0pLFRjPWgoe3R5cGU6bChcInN0cmluZ1wiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxlbnVtOlckKEwoKSksZGVmYXVsdDpMKCkub3B0aW9uYWwoKX0pLHhjPWgoe3R5cGU6bChcInN0cmluZ1wiKSx0aXRsZTpMKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpMKCkub3B0aW9uYWwoKSxvbmVPZjpXJChoKHtjb25zdDpMKCksdGl0bGU6TCgpfSkpLGRlZmF1bHQ6TCgpLm9wdGlvbmFsKCl9KSxmYz1oKHt0eXBlOmwoXCJzdHJpbmdcIiksdGl0bGU6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksZW51bTpXJChMKCkpLGVudW1OYW1lczpXJChMKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpMKCkub3B0aW9uYWwoKX0pLHljPUEkKFtUYyx4Y10pLGdjPWgoe3R5cGU6bChcImFycmF5XCIpLHRpdGxlOkwoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOkwoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnokKCkub3B0aW9uYWwoKSxtYXhJdGVtczp6JCgpLm9wdGlvbmFsKCksaXRlbXM6aCh7dHlwZTpsKFwic3RyaW5nXCIpLGVudW06VyQoTCgpKX0pLGRlZmF1bHQ6VyQoTCgpKS5vcHRpb25hbCgpfSksaGM9aCh7dHlwZTpsKFwiYXJyYXlcIiksdGl0bGU6TCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246TCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eiQoKS5vcHRpb25hbCgpLG1heEl0ZW1zOnokKCkub3B0aW9uYWwoKSxpdGVtczpoKHthbnlPZjpXJChoKHtjb25zdDpMKCksdGl0bGU6TCgpfSkpfSksZGVmYXVsdDpXJChMKCkpLm9wdGlvbmFsKCl9KSx1Yz1BJChbZ2MsaGNdKSxtYz1BJChbZmMseWMsdWNdKSxsYz1BJChbbWMsa2MsdmMsQ2NdKSxjYz1PSi5leHRlbmQoe21vZGU6bChcImZvcm1cIikub3B0aW9uYWwoKSxtZXNzYWdlOkwoKSxyZXF1ZXN0ZWRTY2hlbWE6aCh7dHlwZTpsKFwib2JqZWN0XCIpLHByb3BlcnRpZXM6SSQoTCgpLGxjKSxyZXF1aXJlZDpXJChMKCkpLm9wdGlvbmFsKCl9KX0pLHBjPU9KLmV4dGVuZCh7bW9kZTpsKFwidXJsXCIpLG1lc3NhZ2U6TCgpLGVsaWNpdGF0aW9uSWQ6TCgpLHVybDpMKCkudXJsKCl9KSxkYz1BJChbY2MscGNdKSxpYz1KNi5leHRlbmQoe21ldGhvZDpsKFwiZWxpY2l0YXRpb24vY3JlYXRlXCIpLHBhcmFtczpkY30pLG5jPXM2LmV4dGVuZCh7ZWxpY2l0YXRpb25JZDpMKCl9KSxyYz1lNi5leHRlbmQoe21ldGhvZDpsKFwibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZVwiKSxwYXJhbXM6bmN9KSxWOT1YNi5leHRlbmQoe2FjdGlvbjp6NihbXCJhY2NlcHRcIixcImRlY2xpbmVcIixcImNhbmNlbFwiXSksY29udGVudDpyMygoJCk9PiQ9PT1udWxsP3ZvaWQgMDokLEkkKEwoKSxBJChbTCgpLHokKCksaSQoKSxXJChMKCkpXSkpLm9wdGlvbmFsKCkpfSksb2M9aCh7dHlwZTpsKFwicmVmL3Jlc291cmNlXCIpLHVyaTpMKCl9KTt2YXIgdGM9aCh7dHlwZTpsKFwicmVmL3Byb21wdFwiKSxuYW1lOkwoKX0pLGFjPWc2LmV4dGVuZCh7cmVmOkEkKFt0YyxvY10pLGFyZ3VtZW50Omgoe25hbWU6TCgpLHZhbHVlOkwoKX0pLGNvbnRleHQ6aCh7YXJndW1lbnRzOkkkKEwoKSxMKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksd1c9SjYuZXh0ZW5kKHttZXRob2Q6bChcImNvbXBsZXRpb24vY29tcGxldGVcIikscGFyYW1zOmFjfSk7ZnVuY3Rpb24gUEwoJCl7aWYoJC5wYXJhbXMucmVmLnR5cGUhPT1cInJlZi9wcm9tcHRcIil0aHJvdyBUeXBlRXJyb3IoYEV4cGVjdGVkIENvbXBsZXRlUmVxdWVzdFByb21wdCwgYnV0IGdvdCAkeyQucGFyYW1zLnJlZi50eXBlfWApfWZ1bmN0aW9uIEVMKCQpe2lmKCQucGFyYW1zLnJlZi50eXBlIT09XCJyZWYvcmVzb3VyY2VcIil0aHJvdyBUeXBlRXJyb3IoYEV4cGVjdGVkIENvbXBsZXRlUmVxdWVzdFJlc291cmNlVGVtcGxhdGUsIGJ1dCBnb3QgJHskLnBhcmFtcy5yZWYudHlwZX1gKX12YXIgc2M9WDYuZXh0ZW5kKHtjb21wbGV0aW9uOkg2KHt2YWx1ZXM6VyQoTCgpKS5tYXgoMTAwKSx0b3RhbDpiJCh6JCgpLmludCgpKSxoYXNNb3JlOmIkKGkkKCkpfSl9KSxlYz1oKHt1cmk6TCgpLnN0YXJ0c1dpdGgoXCJmaWxlOi8vXCIpLG5hbWU6TCgpLm9wdGlvbmFsKCksX21ldGE6SSQoTCgpLFMkKCkpLm9wdGlvbmFsKCl9KSwkcD1KNi5leHRlbmQoe21ldGhvZDpsKFwicm9vdHMvbGlzdFwiKSxwYXJhbXM6ZzYub3B0aW9uYWwoKX0pLEdCPVg2LmV4dGVuZCh7cm9vdHM6VyQoZWMpfSksUXA9ZTYuZXh0ZW5kKHttZXRob2Q6bChcIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkXCIpLHBhcmFtczpzNi5vcHRpb25hbCgpfSksUlYkPUEkKFskVyx0Vix3VyxZQixCVyxWVyxIVyxLVyxxVywkYyxKYyxxOSx6VyxKVyxZVyxXVyxVV10pLFBWJD1BJChbZTMsUVcsYVYsUXAsakpdKSxFViQ9QSQoW3MzLFJKLFdCLFY5LEdCLFhXLEdXLEg5XSksYlYkPUEkKFskVyxTYyxpYywkcCxKVyxZVyxXVyxVV10pLF9WJD1BJChbZTMsUVcsamMsWWMsc2wsWmMsTmMsakoscmNdKSxTViQ9QSQoW3MzLG1sLHNjLHpjLFVjLHJsLG9sLGFsLE5XLERjLFhXLEdXLEg5XSk7Y2xhc3MgYyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCQsUSxKKXtzdXBlcihgTUNQIGVycm9yICR7JH06ICR7UX1gKTt0aGlzLmNvZGU9JCx0aGlzLmRhdGE9Six0aGlzLm5hbWU9XCJNY3BFcnJvclwifXN0YXRpYyBmcm9tRXJyb3IoJCxRLEope2lmKCQ9PT1kLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJkope2xldCBZPUo7aWYoWS5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyBiTChZLmVsaWNpdGF0aW9ucyxRKX1yZXR1cm4gbmV3IGMoJCxRLEopfX1jbGFzcyBiTCBleHRlbmRzIGN7Y29uc3RydWN0b3IoJCxRPWBVUkwgZWxpY2l0YXRpb24keyQubGVuZ3RoPjE/XCJzXCI6XCJcIn0gcmVxdWlyZWRgKXtzdXBlcihkLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQsUSx7ZWxpY2l0YXRpb25zOiR9KX1nZXQgZWxpY2l0YXRpb25zKCl7cmV0dXJuIHRoaXMuZGF0YT8uZWxpY2l0YXRpb25zPz9bXX19ZnVuY3Rpb24geDEoJCl7cmV0dXJuICQ9PT1cImNvbXBsZXRlZFwifHwkPT09XCJmYWlsZWRcInx8JD09PVwiY2FuY2VsbGVkXCJ9dmFyIFNMPVN5bWJvbChcIkxldCB6b2RUb0pzb25TY2hlbWEgZGVjaWRlIG9uIHdoaWNoIHBhcnNlciB0byB1c2VcIik7dmFyIF9MPXtuYW1lOnZvaWQgMCwkcmVmU3RyYXRlZ3k6XCJyb290XCIsYmFzZVBhdGg6W1wiI1wiXSxlZmZlY3RTdHJhdGVneTpcImlucHV0XCIscGlwZVN0cmF0ZWd5OlwiYWxsXCIsZGF0ZVN0cmF0ZWd5OlwiZm9ybWF0OmRhdGUtdGltZVwiLG1hcFN0cmF0ZWd5OlwiZW50cmllc1wiLHJlbW92ZUFkZGl0aW9uYWxTdHJhdGVneTpcInBhc3N0aHJvdWdoXCIsYWxsb3dlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzOiEwLHJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXM6ITEsZGVmaW5pdGlvblBhdGg6XCJkZWZpbml0aW9uc1wiLHRhcmdldDpcImpzb25TY2hlbWE3XCIsc3RyaWN0VW5pb25zOiExLGRlZmluaXRpb25zOnt9LGVycm9yTWVzc2FnZXM6ITEsbWFya2Rvd25EZXNjcmlwdGlvbjohMSxwYXR0ZXJuU3RyYXRlZ3k6XCJlc2NhcGVcIixhcHBseVJlZ2V4RmxhZ3M6ITEsZW1haWxTdHJhdGVneTpcImZvcm1hdDplbWFpbFwiLGJhc2U2NFN0cmF0ZWd5OlwiY29udGVudEVuY29kaW5nOmJhc2U2NFwiLG5hbWVTdHJhdGVneTpcInJlZlwiLG9wZW5BaUFueVR5cGVOYW1lOlwiT3BlbkFpQW55VHlwZVwifSxrTD0oJCk9PnR5cGVvZiAkPT09XCJzdHJpbmdcIj97Li4uX0wsbmFtZTokfTp7Li4uX0wsLi4uJH07dmFyIHZMPSgkKT0+e2xldCBRPWtMKCQpLEo9US5uYW1lIT09dm9pZCAwP1suLi5RLmJhc2VQYXRoLFEuZGVmaW5pdGlvblBhdGgsUS5uYW1lXTpRLmJhc2VQYXRoO3JldHVybnsuLi5RLGZsYWdzOntoYXNSZWZlcmVuY2VkT3BlbkFpQW55VHlwZTohMX0sY3VycmVudFBhdGg6Sixwcm9wZXJ0eVBhdGg6dm9pZCAwLHNlZW46bmV3IE1hcChPYmplY3QuZW50cmllcyhRLmRlZmluaXRpb25zKS5tYXAoKFtZLFhdKT0+W1guX2RlZix7ZGVmOlguX2RlZixwYXRoOlsuLi5RLmJhc2VQYXRoLFEuZGVmaW5pdGlvblBhdGgsWV0sanNvblNjaGVtYTp2b2lkIDB9XSkpfX07ZnVuY3Rpb24gVUIoJCxRLEosWSl7aWYoIVk/LmVycm9yTWVzc2FnZXMpcmV0dXJuO2lmKEopJC5lcnJvck1lc3NhZ2U9ey4uLiQuZXJyb3JNZXNzYWdlLFtRXTpKfX1mdW5jdGlvbiBIJCgkLFEsSixZLFgpeyRbUV09SixVQigkLFEsWSxYKX12YXIgT1c9KCQsUSk9PntsZXQgSj0wO2Zvcig7SjwkLmxlbmd0aCYmSjxRLmxlbmd0aDtKKyspaWYoJFtKXSE9PVFbSl0pYnJlYWs7cmV0dXJuWygkLmxlbmd0aC1KKS50b1N0cmluZygpLC4uLlEuc2xpY2UoSildLmpvaW4oXCIvXCIpfTtmdW5jdGlvbiB4JCgkKXtpZigkLnRhcmdldCE9PVwib3BlbkFpXCIpcmV0dXJue307bGV0IFE9Wy4uLiQuYmFzZVBhdGgsJC5kZWZpbml0aW9uUGF0aCwkLm9wZW5BaUFueVR5cGVOYW1lXTtyZXR1cm4gJC5mbGFncy5oYXNSZWZlcmVuY2VkT3BlbkFpQW55VHlwZT0hMCx7JHJlZjokLiRyZWZTdHJhdGVneT09PVwicmVsYXRpdmVcIj9PVyhRLCQuY3VycmVudFBhdGgpOlEuam9pbihcIi9cIil9fWZ1bmN0aW9uIENMKCQsUSl7bGV0IEo9e3R5cGU6XCJhcnJheVwifTtpZigkLnR5cGU/Ll9kZWYmJiQudHlwZT8uX2RlZj8udHlwZU5hbWUhPT1iLlpvZEFueSlKLml0ZW1zPXIoJC50eXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJpdGVtc1wiXX0pO2lmKCQubWluTGVuZ3RoKUgkKEosXCJtaW5JdGVtc1wiLCQubWluTGVuZ3RoLnZhbHVlLCQubWluTGVuZ3RoLm1lc3NhZ2UsUSk7aWYoJC5tYXhMZW5ndGgpSCQoSixcIm1heEl0ZW1zXCIsJC5tYXhMZW5ndGgudmFsdWUsJC5tYXhMZW5ndGgubWVzc2FnZSxRKTtpZigkLmV4YWN0TGVuZ3RoKUgkKEosXCJtaW5JdGVtc1wiLCQuZXhhY3RMZW5ndGgudmFsdWUsJC5leGFjdExlbmd0aC5tZXNzYWdlLFEpLEgkKEosXCJtYXhJdGVtc1wiLCQuZXhhY3RMZW5ndGgudmFsdWUsJC5leGFjdExlbmd0aC5tZXNzYWdlLFEpO3JldHVybiBKfWZ1bmN0aW9uIFRMKCQsUSl7bGV0IEo9e3R5cGU6XCJpbnRlZ2VyXCIsZm9ybWF0OlwiaW50NjRcIn07aWYoISQuY2hlY2tzKXJldHVybiBKO2ZvcihsZXQgWSBvZiAkLmNoZWNrcylzd2l0Y2goWS5raW5kKXtjYXNlXCJtaW5cIjppZihRLnRhcmdldD09PVwianNvblNjaGVtYTdcIilpZihZLmluY2x1c2l2ZSlIJChKLFwibWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2UgSCQoSixcImV4Y2x1c2l2ZU1pbmltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKTtlbHNle2lmKCFZLmluY2x1c2l2ZSlKLmV4Y2x1c2l2ZU1pbmltdW09ITA7SCQoSixcIm1pbmltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKX1icmVhaztjYXNlXCJtYXhcIjppZihRLnRhcmdldD09PVwianNvblNjaGVtYTdcIilpZihZLmluY2x1c2l2ZSlIJChKLFwibWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2UgSCQoSixcImV4Y2x1c2l2ZU1heGltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKTtlbHNle2lmKCFZLmluY2x1c2l2ZSlKLmV4Y2x1c2l2ZU1heGltdW09ITA7SCQoSixcIm1heGltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKX1icmVhaztjYXNlXCJtdWx0aXBsZU9mXCI6SCQoSixcIm11bHRpcGxlT2ZcIixZLnZhbHVlLFkubWVzc2FnZSxRKTticmVha31yZXR1cm4gSn1mdW5jdGlvbiB4TCgpe3JldHVybnt0eXBlOlwiYm9vbGVhblwifX1mdW5jdGlvbiBEVygkLFEpe3JldHVybiByKCQudHlwZS5fZGVmLFEpfXZhciBmTD0oJCxRKT0+e3JldHVybiByKCQuaW5uZXJUeXBlLl9kZWYsUSl9O2Z1bmN0aW9uIEhCKCQsUSxKKXtsZXQgWT1KPz9RLmRhdGVTdHJhdGVneTtpZihBcnJheS5pc0FycmF5KFkpKXJldHVybnthbnlPZjpZLm1hcCgoWCxXKT0+SEIoJCxRLFgpKX07c3dpdGNoKFkpe2Nhc2VcInN0cmluZ1wiOmNhc2VcImZvcm1hdDpkYXRlLXRpbWVcIjpyZXR1cm57dHlwZTpcInN0cmluZ1wiLGZvcm1hdDpcImRhdGUtdGltZVwifTtjYXNlXCJmb3JtYXQ6ZGF0ZVwiOnJldHVybnt0eXBlOlwic3RyaW5nXCIsZm9ybWF0OlwiZGF0ZVwifTtjYXNlXCJpbnRlZ2VyXCI6cmV0dXJuIEpwKCQsUSl9fXZhciBKcD0oJCxRKT0+e2xldCBKPXt0eXBlOlwiaW50ZWdlclwiLGZvcm1hdDpcInVuaXgtdGltZVwifTtpZihRLnRhcmdldD09PVwib3BlbkFwaTNcIilyZXR1cm4gSjtmb3IobGV0IFkgb2YgJC5jaGVja3Mpc3dpdGNoKFkua2luZCl7Y2FzZVwibWluXCI6SCQoSixcIm1pbmltdW1cIixZLnZhbHVlLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJtYXhcIjpIJChKLFwibWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2JyZWFrfXJldHVybiBKfTtmdW5jdGlvbiB5TCgkLFEpe3JldHVybnsuLi5yKCQuaW5uZXJUeXBlLl9kZWYsUSksZGVmYXVsdDokLmRlZmF1bHRWYWx1ZSgpfX1mdW5jdGlvbiBnTCgkLFEpe3JldHVybiBRLmVmZmVjdFN0cmF0ZWd5PT09XCJpbnB1dFwiP3IoJC5zY2hlbWEuX2RlZixRKTp4JChRKX1mdW5jdGlvbiBoTCgkKXtyZXR1cm57dHlwZTpcInN0cmluZ1wiLGVudW06QXJyYXkuZnJvbSgkLnZhbHVlcyl9fXZhciBYcD0oJCk9PntpZihcInR5cGVcImluICQmJiQudHlwZT09PVwic3RyaW5nXCIpcmV0dXJuITE7cmV0dXJuXCJhbGxPZlwiaW4gJH07ZnVuY3Rpb24gdUwoJCxRKXtsZXQgSj1bcigkLmxlZnQuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFsbE9mXCIsXCIwXCJdfSkscigkLnJpZ2h0Ll9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhbGxPZlwiLFwiMVwiXX0pXS5maWx0ZXIoKFcpPT4hIVcpLFk9US50YXJnZXQ9PT1cImpzb25TY2hlbWEyMDE5LTA5XCI/e3VuZXZhbHVhdGVkUHJvcGVydGllczohMX06dm9pZCAwLFg9W107cmV0dXJuIEouZm9yRWFjaCgoVyk9PntpZihYcChXKSl7aWYoWC5wdXNoKC4uLlcuYWxsT2YpLFcudW5ldmFsdWF0ZWRQcm9wZXJ0aWVzPT09dm9pZCAwKVk9dm9pZCAwfWVsc2V7bGV0IEc9VztpZihcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJpbiBXJiZXLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2xldHthZGRpdGlvbmFsUHJvcGVydGllczpVLC4uLkh9PVc7Rz1IfWVsc2UgWT12b2lkIDA7WC5wdXNoKEcpfX0pLFgubGVuZ3RoP3thbGxPZjpYLC4uLll9OnZvaWQgMH1mdW5jdGlvbiBtTCgkLFEpe2xldCBKPXR5cGVvZiAkLnZhbHVlO2lmKEohPT1cImJpZ2ludFwiJiZKIT09XCJudW1iZXJcIiYmSiE9PVwiYm9vbGVhblwiJiZKIT09XCJzdHJpbmdcIilyZXR1cm57dHlwZTpBcnJheS5pc0FycmF5KCQudmFsdWUpP1wiYXJyYXlcIjpcIm9iamVjdFwifTtpZihRLnRhcmdldD09PVwib3BlbkFwaTNcIilyZXR1cm57dHlwZTpKPT09XCJiaWdpbnRcIj9cImludGVnZXJcIjpKLGVudW06WyQudmFsdWVdfTtyZXR1cm57dHlwZTpKPT09XCJiaWdpbnRcIj9cImludGVnZXJcIjpKLGNvbnN0OiQudmFsdWV9fXZhciBLQj12b2lkIDAsVjQ9e2N1aWQ6L15bY0NdW15cXHMtXXs4LH0kLyxjdWlkMjovXlswLTlhLXpdKyQvLHVsaWQ6L15bMC05QS1ISktNTlAtVFYtWl17MjZ9JC8sZW1haWw6L14oPyFcXC4pKD8hLipcXC5cXC4pKFthLXpBLVowLTlfJytcXC1cXC5dKilbYS16QS1aMC05XystXUAoW2EtekEtWjAtOV1bYS16QS1aMC05XFwtXSpcXC4pK1thLXpBLVpdezIsfSQvLGVtb2ppOigpPT57aWYoS0I9PT12b2lkIDApS0I9UmVnRXhwKFwiXihcXFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxcXFxwe0Vtb2ppX0NvbXBvbmVudH0pKyRcIixcInVcIik7cmV0dXJuIEtCfSx1dWlkOi9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC8saXB2NDovXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLGlwdjRDaWRyOi9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKDNbMC0yXXxbMTJdP1swLTldKSQvLGlwdjY6L14oKFthLWYwLTldezEsNH06KXs3fXw6OihbYS1mMC05XXsxLDR9Oil7MCw2fXwoW2EtZjAtOV17MSw0fTopezF9OihbYS1mMC05XXsxLDR9Oil7MCw1fXwoW2EtZjAtOV17MSw0fTopezJ9OihbYS1mMC05XXsxLDR9Oil7MCw0fXwoW2EtZjAtOV17MSw0fTopezN9OihbYS1mMC05XXsxLDR9Oil7MCwzfXwoW2EtZjAtOV17MSw0fTopezR9OihbYS1mMC05XXsxLDR9Oil7MCwyfXwoW2EtZjAtOV17MSw0fTopezV9OihbYS1mMC05XXsxLDR9Oil7MCwxfSkoW2EtZjAtOV17MSw0fXwoKCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSlcXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpJC8saXB2NkNpZHI6L14oKFswLTlhLWZBLUZdezEsNH06KXs3LDd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXXswLDR9KXswLDR9JVswLTlhLXpBLVpdezEsfXw6OihmZmZmKDowezEsNH0pezAsMX06KXswLDF9KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSkpXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxiYXNlNjQ6L14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvLGJhc2U2NHVybDovXihbMC05YS16QS1aLV9dezR9KSooKFswLTlhLXpBLVotX117Mn0oPT0pPyl8KFswLTlhLXpBLVotX117M30oPSk/KSk/JC8sbmFub2lkOi9eW2EtekEtWjAtOV8tXXsyMX0kLyxqd3Q6L15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokL307ZnVuY3Rpb24gRlcoJCxRKXtsZXQgSj17dHlwZTpcInN0cmluZ1wifTtpZigkLmNoZWNrcylmb3IobGV0IFkgb2YgJC5jaGVja3Mpc3dpdGNoKFkua2luZCl7Y2FzZVwibWluXCI6SCQoSixcIm1pbkxlbmd0aFwiLHR5cGVvZiBKLm1pbkxlbmd0aD09PVwibnVtYmVyXCI/TWF0aC5tYXgoSi5taW5MZW5ndGgsWS52YWx1ZSk6WS52YWx1ZSxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwibWF4XCI6SCQoSixcIm1heExlbmd0aFwiLHR5cGVvZiBKLm1heExlbmd0aD09PVwibnVtYmVyXCI/TWF0aC5taW4oSi5tYXhMZW5ndGgsWS52YWx1ZSk6WS52YWx1ZSxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiZW1haWxcIjpzd2l0Y2goUS5lbWFpbFN0cmF0ZWd5KXtjYXNlXCJmb3JtYXQ6ZW1haWxcIjpCNChKLFwiZW1haWxcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiZm9ybWF0Omlkbi1lbWFpbFwiOkI0KEosXCJpZG4tZW1haWxcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwicGF0dGVybjp6b2RcIjpONihKLFY0LmVtYWlsLFkubWVzc2FnZSxRKTticmVha31icmVhaztjYXNlXCJ1cmxcIjpCNChKLFwidXJpXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcInV1aWRcIjpCNChKLFwidXVpZFwiLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJyZWdleFwiOk42KEosWS5yZWdleCxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiY3VpZFwiOk42KEosVjQuY3VpZCxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiY3VpZDJcIjpONihKLFY0LmN1aWQyLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJzdGFydHNXaXRoXCI6TjYoSixSZWdFeHAoYF4ke3FCKFkudmFsdWUsUSl9YCksWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImVuZHNXaXRoXCI6TjYoSixSZWdFeHAoYCR7cUIoWS52YWx1ZSxRKX0kYCksWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImRhdGV0aW1lXCI6QjQoSixcImRhdGUtdGltZVwiLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJkYXRlXCI6QjQoSixcImRhdGVcIixZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwidGltZVwiOkI0KEosXCJ0aW1lXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImR1cmF0aW9uXCI6QjQoSixcImR1cmF0aW9uXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImxlbmd0aFwiOkgkKEosXCJtaW5MZW5ndGhcIix0eXBlb2YgSi5taW5MZW5ndGg9PT1cIm51bWJlclwiP01hdGgubWF4KEoubWluTGVuZ3RoLFkudmFsdWUpOlkudmFsdWUsWS5tZXNzYWdlLFEpLEgkKEosXCJtYXhMZW5ndGhcIix0eXBlb2YgSi5tYXhMZW5ndGg9PT1cIm51bWJlclwiP01hdGgubWluKEoubWF4TGVuZ3RoLFkudmFsdWUpOlkudmFsdWUsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcImluY2x1ZGVzXCI6e042KEosUmVnRXhwKHFCKFkudmFsdWUsUSkpLFkubWVzc2FnZSxRKTticmVha31jYXNlXCJpcFwiOntpZihZLnZlcnNpb24hPT1cInY2XCIpQjQoSixcImlwdjRcIixZLm1lc3NhZ2UsUSk7aWYoWS52ZXJzaW9uIT09XCJ2NFwiKUI0KEosXCJpcHY2XCIsWS5tZXNzYWdlLFEpO2JyZWFrfWNhc2VcImJhc2U2NHVybFwiOk42KEosVjQuYmFzZTY0dXJsLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJqd3RcIjpONihKLFY0Lmp3dCxZLm1lc3NhZ2UsUSk7YnJlYWs7Y2FzZVwiY2lkclwiOntpZihZLnZlcnNpb24hPT1cInY2XCIpTjYoSixWNC5pcHY0Q2lkcixZLm1lc3NhZ2UsUSk7aWYoWS52ZXJzaW9uIT09XCJ2NFwiKU42KEosVjQuaXB2NkNpZHIsWS5tZXNzYWdlLFEpO2JyZWFrfWNhc2VcImVtb2ppXCI6TjYoSixWNC5lbW9qaSgpLFkubWVzc2FnZSxRKTticmVhaztjYXNlXCJ1bGlkXCI6e042KEosVjQudWxpZCxZLm1lc3NhZ2UsUSk7YnJlYWt9Y2FzZVwiYmFzZTY0XCI6e3N3aXRjaChRLmJhc2U2NFN0cmF0ZWd5KXtjYXNlXCJmb3JtYXQ6YmluYXJ5XCI6e0I0KEosXCJiaW5hcnlcIixZLm1lc3NhZ2UsUSk7YnJlYWt9Y2FzZVwiY29udGVudEVuY29kaW5nOmJhc2U2NFwiOntIJChKLFwiY29udGVudEVuY29kaW5nXCIsXCJiYXNlNjRcIixZLm1lc3NhZ2UsUSk7YnJlYWt9Y2FzZVwicGF0dGVybjp6b2RcIjp7TjYoSixWNC5iYXNlNjQsWS5tZXNzYWdlLFEpO2JyZWFrfX1icmVha31jYXNlXCJuYW5vaWRcIjpONihKLFY0Lm5hbm9pZCxZLm1lc3NhZ2UsUSk7Y2FzZVwidG9Mb3dlckNhc2VcIjpjYXNlXCJ0b1VwcGVyQ2FzZVwiOmNhc2VcInRyaW1cIjpicmVhaztkZWZhdWx0OigoWCk9Pnt9KShZKX1yZXR1cm4gSn1mdW5jdGlvbiBxQigkLFEpe3JldHVybiBRLnBhdHRlcm5TdHJhdGVneT09PVwiZXNjYXBlXCI/V3AoJCk6JH12YXIgWXA9bmV3IFNldChcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHl6MDEyMzQ1Njc4OVwiKTtmdW5jdGlvbiBXcCgkKXtsZXQgUT1cIlwiO2ZvcihsZXQgSj0wO0o8JC5sZW5ndGg7SisrKXtpZighWXAuaGFzKCRbSl0pKVErPVwiXFxcXFwiO1ErPSRbSl19cmV0dXJuIFF9ZnVuY3Rpb24gQjQoJCxRLEosWSl7aWYoJC5mb3JtYXR8fCQuYW55T2Y/LnNvbWUoKFgpPT5YLmZvcm1hdCkpe2lmKCEkLmFueU9mKSQuYW55T2Y9W107aWYoJC5mb3JtYXQpe2lmKCQuYW55T2YucHVzaCh7Zm9ybWF0OiQuZm9ybWF0LC4uLiQuZXJyb3JNZXNzYWdlJiZZLmVycm9yTWVzc2FnZXMmJntlcnJvck1lc3NhZ2U6e2Zvcm1hdDokLmVycm9yTWVzc2FnZS5mb3JtYXR9fX0pLGRlbGV0ZSAkLmZvcm1hdCwkLmVycm9yTWVzc2FnZSl7aWYoZGVsZXRlICQuZXJyb3JNZXNzYWdlLmZvcm1hdCxPYmplY3Qua2V5cygkLmVycm9yTWVzc2FnZSkubGVuZ3RoPT09MClkZWxldGUgJC5lcnJvck1lc3NhZ2V9fSQuYW55T2YucHVzaCh7Zm9ybWF0OlEsLi4uSiYmWS5lcnJvck1lc3NhZ2VzJiZ7ZXJyb3JNZXNzYWdlOntmb3JtYXQ6Sn19fSl9ZWxzZSBIJCgkLFwiZm9ybWF0XCIsUSxKLFkpfWZ1bmN0aW9uIE42KCQsUSxKLFkpe2lmKCQucGF0dGVybnx8JC5hbGxPZj8uc29tZSgoWCk9PlgucGF0dGVybikpe2lmKCEkLmFsbE9mKSQuYWxsT2Y9W107aWYoJC5wYXR0ZXJuKXtpZigkLmFsbE9mLnB1c2goe3BhdHRlcm46JC5wYXR0ZXJuLC4uLiQuZXJyb3JNZXNzYWdlJiZZLmVycm9yTWVzc2FnZXMmJntlcnJvck1lc3NhZ2U6e3BhdHRlcm46JC5lcnJvck1lc3NhZ2UucGF0dGVybn19fSksZGVsZXRlICQucGF0dGVybiwkLmVycm9yTWVzc2FnZSl7aWYoZGVsZXRlICQuZXJyb3JNZXNzYWdlLnBhdHRlcm4sT2JqZWN0LmtleXMoJC5lcnJvck1lc3NhZ2UpLmxlbmd0aD09PTApZGVsZXRlICQuZXJyb3JNZXNzYWdlfX0kLmFsbE9mLnB1c2goe3BhdHRlcm46bEwoUSxZKSwuLi5KJiZZLmVycm9yTWVzc2FnZXMmJntlcnJvck1lc3NhZ2U6e3BhdHRlcm46Sn19fSl9ZWxzZSBIJCgkLFwicGF0dGVyblwiLGxMKFEsWSksSixZKX1mdW5jdGlvbiBsTCgkLFEpe2lmKCFRLmFwcGx5UmVnZXhGbGFnc3x8ISQuZmxhZ3MpcmV0dXJuICQuc291cmNlO2xldCBKPXtpOiQuZmxhZ3MuaW5jbHVkZXMoXCJpXCIpLG06JC5mbGFncy5pbmNsdWRlcyhcIm1cIiksczokLmZsYWdzLmluY2x1ZGVzKFwic1wiKX0sWT1KLmk/JC5zb3VyY2UudG9Mb3dlckNhc2UoKTokLnNvdXJjZSxYPVwiXCIsVz0hMSxHPSExLFU9ITE7Zm9yKGxldCBIPTA7SDxZLmxlbmd0aDtIKyspe2lmKFcpe1grPVlbSF0sVz0hMTtjb250aW51ZX1pZihKLmkpe2lmKEcpe2lmKFlbSF0ubWF0Y2goL1thLXpdLykpe2lmKFUpWCs9WVtIXSxYKz1gJHtZW0gtMl19LSR7WVtIXX1gLnRvVXBwZXJDYXNlKCksVT0hMTtlbHNlIGlmKFlbSCsxXT09PVwiLVwiJiZZW0grMl0/Lm1hdGNoKC9bYS16XS8pKVgrPVlbSF0sVT0hMDtlbHNlIFgrPWAke1lbSF19JHtZW0hdLnRvVXBwZXJDYXNlKCl9YDtjb250aW51ZX19ZWxzZSBpZihZW0hdLm1hdGNoKC9bYS16XS8pKXtYKz1gWyR7WVtIXX0ke1lbSF0udG9VcHBlckNhc2UoKX1dYDtjb250aW51ZX19aWYoSi5tKXtpZihZW0hdPT09XCJeXCIpe1grPWAoXnwoPzw9W1xcclxuXSkpYDtjb250aW51ZX1lbHNlIGlmKFlbSF09PT1cIiRcIil7WCs9YCgkfCg/PVtcXHJcbl0pKWA7Y29udGludWV9fWlmKEoucyYmWVtIXT09PVwiLlwiKXtYKz1HP2Ake1lbSF19XFxyXG5gOmBbJHtZW0hdfVxcclxuXWA7Y29udGludWV9aWYoWCs9WVtIXSxZW0hdPT09XCJcXFxcXCIpVz0hMDtlbHNlIGlmKEcmJllbSF09PT1cIl1cIilHPSExO2Vsc2UgaWYoIUcmJllbSF09PT1cIltcIilHPSEwfXRyeXtuZXcgUmVnRXhwKFgpfWNhdGNoe3JldHVybiBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBjb252ZXJ0IHJlZ2V4IHBhdHRlcm4gYXQgJHtRLmN1cnJlbnRQYXRoLmpvaW4oXCIvXCIpfSB0byBhIGZsYWctaW5kZXBlbmRlbnQgZm9ybSEgRmFsbGluZyBiYWNrIHRvIHRoZSBmbGFnLWlnbm9yYW50IHNvdXJjZWApLCQuc291cmNlfXJldHVybiBYfWZ1bmN0aW9uIFpXKCQsUSl7aWYoUS50YXJnZXQ9PT1cIm9wZW5BaVwiKWNvbnNvbGUud2FybihcIldhcm5pbmc6IE9wZW5BSSBtYXkgbm90IHN1cHBvcnQgcmVjb3JkcyBpbiBzY2hlbWFzISBUcnkgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIGluc3RlYWQuXCIpO2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiJiYkLmtleVR5cGU/Ll9kZWYudHlwZU5hbWU9PT1iLlpvZEVudW0pcmV0dXJue3R5cGU6XCJvYmplY3RcIixyZXF1aXJlZDokLmtleVR5cGUuX2RlZi52YWx1ZXMscHJvcGVydGllczokLmtleVR5cGUuX2RlZi52YWx1ZXMucmVkdWNlKChZLFgpPT4oey4uLlksW1hdOnIoJC52YWx1ZVR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcInByb3BlcnRpZXNcIixYXX0pPz94JChRKX0pLHt9KSxhZGRpdGlvbmFsUHJvcGVydGllczpRLnJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXN9O2xldCBKPXt0eXBlOlwib2JqZWN0XCIsYWRkaXRpb25hbFByb3BlcnRpZXM6cigkLnZhbHVlVHlwZS5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl19KT8/US5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXN9O2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXJldHVybiBKO2lmKCQua2V5VHlwZT8uX2RlZi50eXBlTmFtZT09PWIuWm9kU3RyaW5nJiYkLmtleVR5cGUuX2RlZi5jaGVja3M/Lmxlbmd0aCl7bGV0e3R5cGU6WSwuLi5YfT1GVygkLmtleVR5cGUuX2RlZixRKTtyZXR1cm57Li4uSixwcm9wZXJ0eU5hbWVzOlh9fWVsc2UgaWYoJC5rZXlUeXBlPy5fZGVmLnR5cGVOYW1lPT09Yi5ab2RFbnVtKXJldHVybnsuLi5KLHByb3BlcnR5TmFtZXM6e2VudW06JC5rZXlUeXBlLl9kZWYudmFsdWVzfX07ZWxzZSBpZigkLmtleVR5cGU/Ll9kZWYudHlwZU5hbWU9PT1iLlpvZEJyYW5kZWQmJiQua2V5VHlwZS5fZGVmLnR5cGUuX2RlZi50eXBlTmFtZT09PWIuWm9kU3RyaW5nJiYkLmtleVR5cGUuX2RlZi50eXBlLl9kZWYuY2hlY2tzPy5sZW5ndGgpe2xldHt0eXBlOlksLi4uWH09RFcoJC5rZXlUeXBlLl9kZWYsUSk7cmV0dXJuey4uLkoscHJvcGVydHlOYW1lczpYfX1yZXR1cm4gSn1mdW5jdGlvbiBjTCgkLFEpe2lmKFEubWFwU3RyYXRlZ3k9PT1cInJlY29yZFwiKXJldHVybiBaVygkLFEpO2xldCBKPXIoJC5rZXlUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJpdGVtc1wiLFwiaXRlbXNcIixcIjBcIl19KXx8eCQoUSksWT1yKCQudmFsdWVUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJpdGVtc1wiLFwiaXRlbXNcIixcIjFcIl19KXx8eCQoUSk7cmV0dXJue3R5cGU6XCJhcnJheVwiLG1heEl0ZW1zOjEyNSxpdGVtczp7dHlwZTpcImFycmF5XCIsaXRlbXM6W0osWV0sbWluSXRlbXM6MixtYXhJdGVtczoyfX19ZnVuY3Rpb24gcEwoJCl7bGV0IFE9JC52YWx1ZXMsWT1PYmplY3Qua2V5cygkLnZhbHVlcykuZmlsdGVyKChXKT0+e3JldHVybiB0eXBlb2YgUVtRW1ddXSE9PVwibnVtYmVyXCJ9KS5tYXAoKFcpPT5RW1ddKSxYPUFycmF5LmZyb20obmV3IFNldChZLm1hcCgoVyk9PnR5cGVvZiBXKSkpO3JldHVybnt0eXBlOlgubGVuZ3RoPT09MT9YWzBdPT09XCJzdHJpbmdcIj9cInN0cmluZ1wiOlwibnVtYmVyXCI6W1wic3RyaW5nXCIsXCJudW1iZXJcIl0sZW51bTpZfX1mdW5jdGlvbiBkTCgkKXtyZXR1cm4gJC50YXJnZXQ9PT1cIm9wZW5BaVwiP3ZvaWQgMDp7bm90OngkKHsuLi4kLGN1cnJlbnRQYXRoOlsuLi4kLmN1cnJlbnRQYXRoLFwibm90XCJdfSl9fWZ1bmN0aW9uIGlMKCQpe3JldHVybiAkLnRhcmdldD09PVwib3BlbkFwaTNcIj97ZW51bTpbXCJudWxsXCJdLG51bGxhYmxlOiEwfTp7dHlwZTpcIm51bGxcIn19dmFyIFBKPXtab2RTdHJpbmc6XCJzdHJpbmdcIixab2ROdW1iZXI6XCJudW1iZXJcIixab2RCaWdJbnQ6XCJpbnRlZ2VyXCIsWm9kQm9vbGVhbjpcImJvb2xlYW5cIixab2ROdWxsOlwibnVsbFwifTtmdW5jdGlvbiByTCgkLFEpe2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXJldHVybiBuTCgkLFEpO2xldCBKPSQub3B0aW9ucyBpbnN0YW5jZW9mIE1hcD9BcnJheS5mcm9tKCQub3B0aW9ucy52YWx1ZXMoKSk6JC5vcHRpb25zO2lmKEouZXZlcnkoKFkpPT4oWS5fZGVmLnR5cGVOYW1lIGluIFBKKSYmKCFZLl9kZWYuY2hlY2tzfHwhWS5fZGVmLmNoZWNrcy5sZW5ndGgpKSl7bGV0IFk9Si5yZWR1Y2UoKFgsVyk9PntsZXQgRz1QSltXLl9kZWYudHlwZU5hbWVdO3JldHVybiBHJiYhWC5pbmNsdWRlcyhHKT9bLi4uWCxHXTpYfSxbXSk7cmV0dXJue3R5cGU6WS5sZW5ndGg+MT9ZOllbMF19fWVsc2UgaWYoSi5ldmVyeSgoWSk9PlkuX2RlZi50eXBlTmFtZT09PVwiWm9kTGl0ZXJhbFwiJiYhWS5kZXNjcmlwdGlvbikpe2xldCBZPUoucmVkdWNlKChYLFcpPT57bGV0IEc9dHlwZW9mIFcuX2RlZi52YWx1ZTtzd2l0Y2goRyl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6Y2FzZVwiYm9vbGVhblwiOnJldHVyblsuLi5YLEddO2Nhc2VcImJpZ2ludFwiOnJldHVyblsuLi5YLFwiaW50ZWdlclwiXTtjYXNlXCJvYmplY3RcIjppZihXLl9kZWYudmFsdWU9PT1udWxsKXJldHVyblsuLi5YLFwibnVsbFwiXTtjYXNlXCJzeW1ib2xcIjpjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJmdW5jdGlvblwiOmRlZmF1bHQ6cmV0dXJuIFh9fSxbXSk7aWYoWS5sZW5ndGg9PT1KLmxlbmd0aCl7bGV0IFg9WS5maWx0ZXIoKFcsRyxVKT0+VS5pbmRleE9mKFcpPT09Ryk7cmV0dXJue3R5cGU6WC5sZW5ndGg+MT9YOlhbMF0sZW51bTpKLnJlZHVjZSgoVyxHKT0+e3JldHVybiBXLmluY2x1ZGVzKEcuX2RlZi52YWx1ZSk/VzpbLi4uVyxHLl9kZWYudmFsdWVdfSxbXSl9fX1lbHNlIGlmKEouZXZlcnkoKFkpPT5ZLl9kZWYudHlwZU5hbWU9PT1cIlpvZEVudW1cIikpcmV0dXJue3R5cGU6XCJzdHJpbmdcIixlbnVtOkoucmVkdWNlKChZLFgpPT5bLi4uWSwuLi5YLl9kZWYudmFsdWVzLmZpbHRlcigoVyk9PiFZLmluY2x1ZGVzKFcpKV0sW10pfTtyZXR1cm4gbkwoJCxRKX12YXIgbkw9KCQsUSk9PntsZXQgSj0oJC5vcHRpb25zIGluc3RhbmNlb2YgTWFwP0FycmF5LmZyb20oJC5vcHRpb25zLnZhbHVlcygpKTokLm9wdGlvbnMpLm1hcCgoWSxYKT0+cihZLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhbnlPZlwiLGAke1h9YF19KSkuZmlsdGVyKChZKT0+ISFZJiYoIVEuc3RyaWN0VW5pb25zfHx0eXBlb2YgWT09PVwib2JqZWN0XCImJk9iamVjdC5rZXlzKFkpLmxlbmd0aD4wKSk7cmV0dXJuIEoubGVuZ3RoP3thbnlPZjpKfTp2b2lkIDB9O2Z1bmN0aW9uIG9MKCQsUSl7aWYoW1wiWm9kU3RyaW5nXCIsXCJab2ROdW1iZXJcIixcIlpvZEJpZ0ludFwiLFwiWm9kQm9vbGVhblwiLFwiWm9kTnVsbFwiXS5pbmNsdWRlcygkLmlubmVyVHlwZS5fZGVmLnR5cGVOYW1lKSYmKCEkLmlubmVyVHlwZS5fZGVmLmNoZWNrc3x8ISQuaW5uZXJUeXBlLl9kZWYuY2hlY2tzLmxlbmd0aCkpe2lmKFEudGFyZ2V0PT09XCJvcGVuQXBpM1wiKXJldHVybnt0eXBlOlBKWyQuaW5uZXJUeXBlLl9kZWYudHlwZU5hbWVdLG51bGxhYmxlOiEwfTtyZXR1cm57dHlwZTpbUEpbJC5pbm5lclR5cGUuX2RlZi50eXBlTmFtZV0sXCJudWxsXCJdfX1pZihRLnRhcmdldD09PVwib3BlbkFwaTNcIil7bGV0IFk9cigkLmlubmVyVHlwZS5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoXX0pO2lmKFkmJlwiJHJlZlwiaW4gWSlyZXR1cm57YWxsT2Y6W1ldLG51bGxhYmxlOiEwfTtyZXR1cm4gWSYmey4uLlksbnVsbGFibGU6ITB9fWxldCBKPXIoJC5pbm5lclR5cGUuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFueU9mXCIsXCIwXCJdfSk7cmV0dXJuIEomJnthbnlPZjpbSix7dHlwZTpcIm51bGxcIn1dfX1mdW5jdGlvbiB0TCgkLFEpe2xldCBKPXt0eXBlOlwibnVtYmVyXCJ9O2lmKCEkLmNoZWNrcylyZXR1cm4gSjtmb3IobGV0IFkgb2YgJC5jaGVja3Mpc3dpdGNoKFkua2luZCl7Y2FzZVwiaW50XCI6Si50eXBlPVwiaW50ZWdlclwiLFVCKEosXCJ0eXBlXCIsWS5tZXNzYWdlLFEpO2JyZWFrO2Nhc2VcIm1pblwiOmlmKFEudGFyZ2V0PT09XCJqc29uU2NoZW1hN1wiKWlmKFkuaW5jbHVzaXZlKUgkKEosXCJtaW5pbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZSBIJChKLFwiZXhjbHVzaXZlTWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2V7aWYoIVkuaW5jbHVzaXZlKUouZXhjbHVzaXZlTWluaW11bT0hMDtIJChKLFwibWluaW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpfWJyZWFrO2Nhc2VcIm1heFwiOmlmKFEudGFyZ2V0PT09XCJqc29uU2NoZW1hN1wiKWlmKFkuaW5jbHVzaXZlKUgkKEosXCJtYXhpbXVtXCIsWS52YWx1ZSxZLm1lc3NhZ2UsUSk7ZWxzZSBIJChKLFwiZXhjbHVzaXZlTWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2Vsc2V7aWYoIVkuaW5jbHVzaXZlKUouZXhjbHVzaXZlTWF4aW11bT0hMDtIJChKLFwibWF4aW11bVwiLFkudmFsdWUsWS5tZXNzYWdlLFEpfWJyZWFrO2Nhc2VcIm11bHRpcGxlT2ZcIjpIJChKLFwibXVsdGlwbGVPZlwiLFkudmFsdWUsWS5tZXNzYWdlLFEpO2JyZWFrfXJldHVybiBKfWZ1bmN0aW9uIGFMKCQsUSl7bGV0IEo9US50YXJnZXQ9PT1cIm9wZW5BaVwiLFk9e3R5cGU6XCJvYmplY3RcIixwcm9wZXJ0aWVzOnt9fSxYPVtdLFc9JC5zaGFwZSgpO2ZvcihsZXQgVSBpbiBXKXtsZXQgSD1XW1VdO2lmKEg9PT12b2lkIDB8fEguX2RlZj09PXZvaWQgMCljb250aW51ZTtsZXQgcT1VcChIKTtpZihxJiZKKXtpZihILl9kZWYudHlwZU5hbWU9PT1cIlpvZE9wdGlvbmFsXCIpSD1ILl9kZWYuaW5uZXJUeXBlO2lmKCFILmlzTnVsbGFibGUoKSlIPUgubnVsbGFibGUoKTtxPSExfWxldCBWPXIoSC5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwicHJvcGVydGllc1wiLFVdLHByb3BlcnR5UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcInByb3BlcnRpZXNcIixVXX0pO2lmKFY9PT12b2lkIDApY29udGludWU7aWYoWS5wcm9wZXJ0aWVzW1VdPVYsIXEpWC5wdXNoKFUpfWlmKFgubGVuZ3RoKVkucmVxdWlyZWQ9WDtsZXQgRz1HcCgkLFEpO2lmKEchPT12b2lkIDApWS5hZGRpdGlvbmFsUHJvcGVydGllcz1HO3JldHVybiBZfWZ1bmN0aW9uIEdwKCQsUSl7aWYoJC5jYXRjaGFsbC5fZGVmLnR5cGVOYW1lIT09XCJab2ROZXZlclwiKXJldHVybiByKCQuY2F0Y2hhbGwuX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdfSk7c3dpdGNoKCQudW5rbm93bktleXMpe2Nhc2VcInBhc3N0aHJvdWdoXCI6cmV0dXJuIFEuYWxsb3dlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzO2Nhc2VcInN0cmljdFwiOnJldHVybiBRLnJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXM7Y2FzZVwic3RyaXBcIjpyZXR1cm4gUS5yZW1vdmVBZGRpdGlvbmFsU3RyYXRlZ3k9PT1cInN0cmljdFwiP1EuYWxsb3dlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzOlEucmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllc319ZnVuY3Rpb24gVXAoJCl7dHJ5e3JldHVybiAkLmlzT3B0aW9uYWwoKX1jYXRjaHtyZXR1cm4hMH19dmFyIHNMPSgkLFEpPT57aWYoUS5jdXJyZW50UGF0aC50b1N0cmluZygpPT09US5wcm9wZXJ0eVBhdGg/LnRvU3RyaW5nKCkpcmV0dXJuIHIoJC5pbm5lclR5cGUuX2RlZixRKTtsZXQgSj1yKCQuaW5uZXJUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhbnlPZlwiLFwiMVwiXX0pO3JldHVybiBKP3thbnlPZjpbe25vdDp4JChRKX0sSl19OngkKFEpfTt2YXIgZUw9KCQsUSk9PntpZihRLnBpcGVTdHJhdGVneT09PVwiaW5wdXRcIilyZXR1cm4gcigkLmluLl9kZWYsUSk7ZWxzZSBpZihRLnBpcGVTdHJhdGVneT09PVwib3V0cHV0XCIpcmV0dXJuIHIoJC5vdXQuX2RlZixRKTtsZXQgSj1yKCQuaW4uX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcImFsbE9mXCIsXCIwXCJdfSksWT1yKCQub3V0Ll9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhbGxPZlwiLEo/XCIxXCI6XCIwXCJdfSk7cmV0dXJue2FsbE9mOltKLFldLmZpbHRlcigoWCk9PlghPT12b2lkIDApfX07ZnVuY3Rpb24gJGooJCxRKXtyZXR1cm4gcigkLnR5cGUuX2RlZixRKX1mdW5jdGlvbiBRaigkLFEpe2xldCBZPXt0eXBlOlwiYXJyYXlcIix1bmlxdWVJdGVtczohMCxpdGVtczpyKCQudmFsdWVUeXBlLl9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJpdGVtc1wiXX0pfTtpZigkLm1pblNpemUpSCQoWSxcIm1pbkl0ZW1zXCIsJC5taW5TaXplLnZhbHVlLCQubWluU2l6ZS5tZXNzYWdlLFEpO2lmKCQubWF4U2l6ZSlIJChZLFwibWF4SXRlbXNcIiwkLm1heFNpemUudmFsdWUsJC5tYXhTaXplLm1lc3NhZ2UsUSk7cmV0dXJuIFl9ZnVuY3Rpb24gSmooJCxRKXtpZigkLnJlc3QpcmV0dXJue3R5cGU6XCJhcnJheVwiLG1pbkl0ZW1zOiQuaXRlbXMubGVuZ3RoLGl0ZW1zOiQuaXRlbXMubWFwKChKLFkpPT5yKEouX2RlZix7Li4uUSxjdXJyZW50UGF0aDpbLi4uUS5jdXJyZW50UGF0aCxcIml0ZW1zXCIsYCR7WX1gXX0pKS5yZWR1Y2UoKEosWSk9Plk9PT12b2lkIDA/SjpbLi4uSixZXSxbXSksYWRkaXRpb25hbEl0ZW1zOnIoJC5yZXN0Ll9kZWYsey4uLlEsY3VycmVudFBhdGg6Wy4uLlEuY3VycmVudFBhdGgsXCJhZGRpdGlvbmFsSXRlbXNcIl19KX07ZWxzZSByZXR1cm57dHlwZTpcImFycmF5XCIsbWluSXRlbXM6JC5pdGVtcy5sZW5ndGgsbWF4SXRlbXM6JC5pdGVtcy5sZW5ndGgsaXRlbXM6JC5pdGVtcy5tYXAoKEosWSk9PnIoSi5fZGVmLHsuLi5RLGN1cnJlbnRQYXRoOlsuLi5RLmN1cnJlbnRQYXRoLFwiaXRlbXNcIixgJHtZfWBdfSkpLnJlZHVjZSgoSixZKT0+WT09PXZvaWQgMD9KOlsuLi5KLFldLFtdKX19ZnVuY3Rpb24gWGooJCl7cmV0dXJue25vdDp4JCgkKX19ZnVuY3Rpb24gWWooJCl7cmV0dXJuIHgkKCQpfXZhciBXaj0oJCxRKT0+e3JldHVybiByKCQuaW5uZXJUeXBlLl9kZWYsUSl9O3ZhciBHaj0oJCxRLEopPT57c3dpdGNoKFEpe2Nhc2UgYi5ab2RTdHJpbmc6cmV0dXJuIEZXKCQsSik7Y2FzZSBiLlpvZE51bWJlcjpyZXR1cm4gdEwoJCxKKTtjYXNlIGIuWm9kT2JqZWN0OnJldHVybiBhTCgkLEopO2Nhc2UgYi5ab2RCaWdJbnQ6cmV0dXJuIFRMKCQsSik7Y2FzZSBiLlpvZEJvb2xlYW46cmV0dXJuIHhMKCk7Y2FzZSBiLlpvZERhdGU6cmV0dXJuIEhCKCQsSik7Y2FzZSBiLlpvZFVuZGVmaW5lZDpyZXR1cm4gWGooSik7Y2FzZSBiLlpvZE51bGw6cmV0dXJuIGlMKEopO2Nhc2UgYi5ab2RBcnJheTpyZXR1cm4gQ0woJCxKKTtjYXNlIGIuWm9kVW5pb246Y2FzZSBiLlpvZERpc2NyaW1pbmF0ZWRVbmlvbjpyZXR1cm4gckwoJCxKKTtjYXNlIGIuWm9kSW50ZXJzZWN0aW9uOnJldHVybiB1TCgkLEopO2Nhc2UgYi5ab2RUdXBsZTpyZXR1cm4gSmooJCxKKTtjYXNlIGIuWm9kUmVjb3JkOnJldHVybiBaVygkLEopO2Nhc2UgYi5ab2RMaXRlcmFsOnJldHVybiBtTCgkLEopO2Nhc2UgYi5ab2RFbnVtOnJldHVybiBoTCgkKTtjYXNlIGIuWm9kTmF0aXZlRW51bTpyZXR1cm4gcEwoJCk7Y2FzZSBiLlpvZE51bGxhYmxlOnJldHVybiBvTCgkLEopO2Nhc2UgYi5ab2RPcHRpb25hbDpyZXR1cm4gc0woJCxKKTtjYXNlIGIuWm9kTWFwOnJldHVybiBjTCgkLEopO2Nhc2UgYi5ab2RTZXQ6cmV0dXJuIFFqKCQsSik7Y2FzZSBiLlpvZExhenk6cmV0dXJuKCk9PiQuZ2V0dGVyKCkuX2RlZjtjYXNlIGIuWm9kUHJvbWlzZTpyZXR1cm4gJGooJCxKKTtjYXNlIGIuWm9kTmFOOmNhc2UgYi5ab2ROZXZlcjpyZXR1cm4gZEwoSik7Y2FzZSBiLlpvZEVmZmVjdHM6cmV0dXJuIGdMKCQsSik7Y2FzZSBiLlpvZEFueTpyZXR1cm4geCQoSik7Y2FzZSBiLlpvZFVua25vd246cmV0dXJuIFlqKEopO2Nhc2UgYi5ab2REZWZhdWx0OnJldHVybiB5TCgkLEopO2Nhc2UgYi5ab2RCcmFuZGVkOnJldHVybiBEVygkLEopO2Nhc2UgYi5ab2RSZWFkb25seTpyZXR1cm4gV2ooJCxKKTtjYXNlIGIuWm9kQ2F0Y2g6cmV0dXJuIGZMKCQsSik7Y2FzZSBiLlpvZFBpcGVsaW5lOnJldHVybiBlTCgkLEopO2Nhc2UgYi5ab2RGdW5jdGlvbjpjYXNlIGIuWm9kVm9pZDpjYXNlIGIuWm9kU3ltYm9sOnJldHVybjtkZWZhdWx0OnJldHVybigoWSk9PntyZXR1cm59KShRKX19O2Z1bmN0aW9uIHIoJCxRLEo9ITEpe2xldCBZPVEuc2Vlbi5nZXQoJCk7aWYoUS5vdmVycmlkZSl7bGV0IFU9US5vdmVycmlkZT8uKCQsUSxZLEopO2lmKFUhPT1TTClyZXR1cm4gVX1pZihZJiYhSil7bGV0IFU9SHAoWSxRKTtpZihVIT09dm9pZCAwKXJldHVybiBVfWxldCBYPXtkZWY6JCxwYXRoOlEuY3VycmVudFBhdGgsanNvblNjaGVtYTp2b2lkIDB9O1Euc2Vlbi5zZXQoJCxYKTtsZXQgVz1HaigkLCQudHlwZU5hbWUsUSksRz10eXBlb2YgVz09PVwiZnVuY3Rpb25cIj9yKFcoKSxRKTpXO2lmKEcpS3AoJCxRLEcpO2lmKFEucG9zdFByb2Nlc3Mpe2xldCBVPVEucG9zdFByb2Nlc3MoRywkLFEpO3JldHVybiBYLmpzb25TY2hlbWE9RyxVfXJldHVybiBYLmpzb25TY2hlbWE9RyxHfXZhciBIcD0oJCxRKT0+e3N3aXRjaChRLiRyZWZTdHJhdGVneSl7Y2FzZVwicm9vdFwiOnJldHVybnskcmVmOiQucGF0aC5qb2luKFwiL1wiKX07Y2FzZVwicmVsYXRpdmVcIjpyZXR1cm57JHJlZjpPVyhRLmN1cnJlbnRQYXRoLCQucGF0aCl9O2Nhc2VcIm5vbmVcIjpjYXNlXCJzZWVuXCI6e2lmKCQucGF0aC5sZW5ndGg8US5jdXJyZW50UGF0aC5sZW5ndGgmJiQucGF0aC5ldmVyeSgoSixZKT0+US5jdXJyZW50UGF0aFtZXT09PUopKXJldHVybiBjb25zb2xlLndhcm4oYFJlY3Vyc2l2ZSByZWZlcmVuY2UgZGV0ZWN0ZWQgYXQgJHtRLmN1cnJlbnRQYXRoLmpvaW4oXCIvXCIpfSEgRGVmYXVsdGluZyB0byBhbnlgKSx4JChRKTtyZXR1cm4gUS4kcmVmU3RyYXRlZ3k9PT1cInNlZW5cIj94JChRKTp2b2lkIDB9fX0sS3A9KCQsUSxKKT0+e2lmKCQuZGVzY3JpcHRpb24pe2lmKEouZGVzY3JpcHRpb249JC5kZXNjcmlwdGlvbixRLm1hcmtkb3duRGVzY3JpcHRpb24pSi5tYXJrZG93bkRlc2NyaXB0aW9uPSQuZGVzY3JpcHRpb259cmV0dXJuIEp9O3ZhciBWQj0oJCxRKT0+e2xldCBKPXZMKFEpLFk9dHlwZW9mIFE9PT1cIm9iamVjdFwiJiZRLmRlZmluaXRpb25zP09iamVjdC5lbnRyaWVzKFEuZGVmaW5pdGlvbnMpLnJlZHVjZSgoSCxbcSxWXSk9Pih7Li4uSCxbcV06cihWLl9kZWYsey4uLkosY3VycmVudFBhdGg6Wy4uLkouYmFzZVBhdGgsSi5kZWZpbml0aW9uUGF0aCxxXX0sITApPz94JChKKX0pLHt9KTp2b2lkIDAsWD10eXBlb2YgUT09PVwic3RyaW5nXCI/UTpRPy5uYW1lU3RyYXRlZ3k9PT1cInRpdGxlXCI/dm9pZCAwOlE/Lm5hbWUsVz1yKCQuX2RlZixYPT09dm9pZCAwP0o6ey4uLkosY3VycmVudFBhdGg6Wy4uLkouYmFzZVBhdGgsSi5kZWZpbml0aW9uUGF0aCxYXX0sITEpPz94JChKKSxHPXR5cGVvZiBRPT09XCJvYmplY3RcIiYmUS5uYW1lIT09dm9pZCAwJiZRLm5hbWVTdHJhdGVneT09PVwidGl0bGVcIj9RLm5hbWU6dm9pZCAwO2lmKEchPT12b2lkIDApVy50aXRsZT1HO2lmKEouZmxhZ3MuaGFzUmVmZXJlbmNlZE9wZW5BaUFueVR5cGUpe2lmKCFZKVk9e307aWYoIVlbSi5vcGVuQWlBbnlUeXBlTmFtZV0pWVtKLm9wZW5BaUFueVR5cGVOYW1lXT17dHlwZTpbXCJzdHJpbmdcIixcIm51bWJlclwiLFwiaW50ZWdlclwiLFwiYm9vbGVhblwiLFwiYXJyYXlcIixcIm51bGxcIl0saXRlbXM6eyRyZWY6Si4kcmVmU3RyYXRlZ3k9PT1cInJlbGF0aXZlXCI/XCIxXCI6Wy4uLkouYmFzZVBhdGgsSi5kZWZpbml0aW9uUGF0aCxKLm9wZW5BaUFueVR5cGVOYW1lXS5qb2luKFwiL1wiKX19fWxldCBVPVg9PT12b2lkIDA/WT97Li4uVyxbSi5kZWZpbml0aW9uUGF0aF06WX06Vzp7JHJlZjpbLi4uSi4kcmVmU3RyYXRlZ3k9PT1cInJlbGF0aXZlXCI/W106Si5iYXNlUGF0aCxKLmRlZmluaXRpb25QYXRoLFhdLmpvaW4oXCIvXCIpLFtKLmRlZmluaXRpb25QYXRoXTp7Li4uWSxbWF06V319O2lmKEoudGFyZ2V0PT09XCJqc29uU2NoZW1hN1wiKVUuJHNjaGVtYT1cImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiO2Vsc2UgaWYoSi50YXJnZXQ9PT1cImpzb25TY2hlbWEyMDE5LTA5XCJ8fEoudGFyZ2V0PT09XCJvcGVuQWlcIilVLiRzY2hlbWE9XCJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDE5LTA5L3NjaGVtYSNcIjtpZihKLnRhcmdldD09PVwib3BlbkFpXCImJigoXCJhbnlPZlwiaW4gVSl8fChcIm9uZU9mXCJpbiBVKXx8KFwiYWxsT2ZcImluIFUpfHwoXCJ0eXBlXCJpbiBVKSYmQXJyYXkuaXNBcnJheShVLnR5cGUpKSljb25zb2xlLndhcm4oXCJXYXJuaW5nOiBPcGVuQUkgbWF5IG5vdCBzdXBwb3J0IHNjaGVtYXMgd2l0aCB1bmlvbnMgYXMgcm9vdHMhIFRyeSB3cmFwcGluZyBpdCBpbiBhbiBvYmplY3QgcHJvcGVydHkuXCIpO3JldHVybiBVfTtmdW5jdGlvbiBxcCgkKXtpZighJClyZXR1cm5cImRyYWZ0LTdcIjtpZigkPT09XCJqc29uU2NoZW1hN1wifHwkPT09XCJkcmFmdC03XCIpcmV0dXJuXCJkcmFmdC03XCI7aWYoJD09PVwianNvblNjaGVtYTIwMTktMDlcInx8JD09PVwiZHJhZnQtMjAyMC0xMlwiKXJldHVyblwiZHJhZnQtMjAyMC0xMlwiO3JldHVyblwiZHJhZnQtN1wifWZ1bmN0aW9uIEJCKCQsUSl7aWYoYTYoJCkpcmV0dXJuIEo5KCQse3RhcmdldDpxcChRPy50YXJnZXQpLGlvOlE/LnBpcGVTdHJhdGVneT8/XCJpbnB1dFwifSk7cmV0dXJuIFZCKCQse3N0cmljdFVuaW9uczpRPy5zdHJpY3RVbmlvbnM/PyEwLHBpcGVTdHJhdGVneTpRPy5waXBlU3RyYXRlZ3k/P1wiaW5wdXRcIn0pfWZ1bmN0aW9uIHpCKCQpe2xldCBKPUMxKCQpPy5tZXRob2Q7aWYoIUopdGhyb3cgRXJyb3IoXCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsXCIpO2xldCBZPVQzKEopO2lmKHR5cGVvZiBZIT09XCJzdHJpbmdcIil0aHJvdyBFcnJvcihcIlNjaGVtYSBtZXRob2QgbGl0ZXJhbCBtdXN0IGJlIGEgc3RyaW5nXCIpO3JldHVybiBZfWZ1bmN0aW9uIE5CKCQsUSl7bGV0IEo9djEoJCxRKTtpZighSi5zdWNjZXNzKXRocm93IEouZXJyb3I7cmV0dXJuIEouZGF0YX12YXIgVnA9NjAwMDA7Y2xhc3Mgd0J7Y29uc3RydWN0b3IoJCl7aWYodGhpcy5fb3B0aW9ucz0kLHRoaXMuX3JlcXVlc3RNZXNzYWdlSWQ9MCx0aGlzLl9yZXF1ZXN0SGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnM9bmV3IE1hcCx0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzPW5ldyBNYXAsdGhpcy5fdGltZW91dEluZm89bmV3IE1hcCx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucz1uZXcgU2V0LHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnM9bmV3IE1hcCx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoZTMsKFEpPT57dGhpcy5fb25jYW5jZWwoUSl9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoUVcsKFEpPT57dGhpcy5fb25wcm9ncmVzcyhRKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoJFcsKFEpPT4oe30pKSx0aGlzLl90YXNrU3RvcmU9JD8udGFza1N0b3JlLHRoaXMuX3Rhc2tNZXNzYWdlUXVldWU9JD8udGFza01lc3NhZ2VRdWV1ZSx0aGlzLl90YXNrU3RvcmUpdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihKVyxhc3luYyhRLEopPT57bGV0IFk9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soUS5wYXJhbXMudGFza0lkLEouc2Vzc2lvbklkKTtpZighWSl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsXCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmRcIik7cmV0dXJuey4uLll9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihZVyxhc3luYyhRLEopPT57bGV0IFk9YXN5bmMoKT0+e2xldCBYPVEucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgRzt3aGlsZShHPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZShYLEouc2Vzc2lvbklkKSl7aWYoRy50eXBlPT09XCJyZXNwb25zZVwifHxHLnR5cGU9PT1cImVycm9yXCIpe2xldCBVPUcubWVzc2FnZSxIPVUuaWQscT10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChIKTtpZihxKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKEgpLEcudHlwZT09PVwicmVzcG9uc2VcIilxKFUpO2Vsc2V7bGV0IFY9VSxCPW5ldyBjKFYuZXJyb3IuY29kZSxWLmVycm9yLm1lc3NhZ2UsVi5lcnJvci5kYXRhKTtxKEIpfWVsc2V7bGV0IFY9Ry50eXBlPT09XCJyZXNwb25zZVwiP1wiUmVzcG9uc2VcIjpcIkVycm9yXCI7dGhpcy5fb25lcnJvcihFcnJvcihgJHtWfSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHtIfWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQoRy5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOkoucmVxdWVzdElkfSl9fWxldCBXPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKFgsSi5zZXNzaW9uSWQpO2lmKCFXKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7WH1gKTtpZigheDEoVy5zdGF0dXMpKXJldHVybiBhd2FpdCB0aGlzLl93YWl0Rm9yVGFza1VwZGF0ZShYLEouc2lnbmFsKSxhd2FpdCBZKCk7aWYoeDEoVy5zdGF0dXMpKXtsZXQgRz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChYLEouc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUoWCksey4uLkcsX21ldGE6ey4uLkcuX21ldGEsW1QxXTp7dGFza0lkOlh9fX19cmV0dXJuIGF3YWl0IFkoKX07cmV0dXJuIGF3YWl0IFkoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoV1csYXN5bmMoUSxKKT0+e3RyeXtsZXR7dGFza3M6WSxuZXh0Q3Vyc29yOlh9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3MoUS5wYXJhbXM/LmN1cnNvcixKLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOlksbmV4dEN1cnNvcjpYLF9tZXRhOnt9fX1jYXRjaChZKXt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke1kgaW5zdGFuY2VvZiBFcnJvcj9ZLm1lc3NhZ2U6U3RyaW5nKFkpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoVVcsYXN5bmMoUSxKKT0+e3RyeXtsZXQgWT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhRLnBhcmFtcy50YXNrSWQsSi5zZXNzaW9uSWQpO2lmKCFZKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7US5wYXJhbXMudGFza0lkfWApO2lmKHgxKFkuc3RhdHVzKSl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYENhbm5vdCBjYW5jZWwgdGFzayBpbiB0ZXJtaW5hbCBzdGF0dXM6ICR7WS5zdGF0dXN9YCk7YXdhaXQgdGhpcy5fdGFza1N0b3JlLnVwZGF0ZVRhc2tTdGF0dXMoUS5wYXJhbXMudGFza0lkLFwiY2FuY2VsbGVkXCIsXCJDbGllbnQgY2FuY2VsbGVkIHRhc2sgZXhlY3V0aW9uLlwiLEouc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShRLnBhcmFtcy50YXNrSWQpO2xldCBYPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKFEucGFyYW1zLnRhc2tJZCxKLnNlc3Npb25JZCk7aWYoIVgpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7US5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5YfX1jYXRjaChZKXtpZihZIGluc3RhbmNlb2YgYyl0aHJvdyBZO3Rocm93IG5ldyBjKGQuSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtZIGluc3RhbmNlb2YgRXJyb3I/WS5tZXNzYWdlOlN0cmluZyhZKX1gKX19KX1hc3luYyBfb25jYW5jZWwoJCl7aWYoISQucGFyYW1zLnJlcXVlc3RJZClyZXR1cm47dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldCgkLnBhcmFtcy5yZXF1ZXN0SWQpPy5hYm9ydCgkLnBhcmFtcy5yZWFzb24pfV9zZXR1cFRpbWVvdXQoJCxRLEosWSxYPSExKXt0aGlzLl90aW1lb3V0SW5mby5zZXQoJCx7dGltZW91dElkOnNldFRpbWVvdXQoWSxRKSxzdGFydFRpbWU6RGF0ZS5ub3coKSx0aW1lb3V0OlEsbWF4VG90YWxUaW1lb3V0OkoscmVzZXRUaW1lb3V0T25Qcm9ncmVzczpYLG9uVGltZW91dDpZfSl9X3Jlc2V0VGltZW91dCgkKXtsZXQgUT10aGlzLl90aW1lb3V0SW5mby5nZXQoJCk7aWYoIVEpcmV0dXJuITE7bGV0IEo9RGF0ZS5ub3coKS1RLnN0YXJ0VGltZTtpZihRLm1heFRvdGFsVGltZW91dCYmSj49US5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKCQpLGMuZnJvbUVycm9yKGQuUmVxdWVzdFRpbWVvdXQsXCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWRcIix7bWF4VG90YWxUaW1lb3V0OlEubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpKfSk7cmV0dXJuIGNsZWFyVGltZW91dChRLnRpbWVvdXRJZCksUS50aW1lb3V0SWQ9c2V0VGltZW91dChRLm9uVGltZW91dCxRLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dCgkKXtsZXQgUT10aGlzLl90aW1lb3V0SW5mby5nZXQoJCk7aWYoUSljbGVhclRpbWVvdXQoUS50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZSgkKX1hc3luYyBjb25uZWN0KCQpe2lmKHRoaXMuX3RyYW5zcG9ydCl0aHJvdyBFcnJvcihcIkFscmVhZHkgY29ubmVjdGVkIHRvIGEgdHJhbnNwb3J0LiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgdG8gYSBuZXcgdHJhbnNwb3J0LCBvciB1c2UgYSBzZXBhcmF0ZSBQcm90b2NvbCBpbnN0YW5jZSBwZXIgY29ubmVjdGlvbi5cIik7dGhpcy5fdHJhbnNwb3J0PSQ7bGV0IFE9dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntRPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2xldCBKPXRoaXMudHJhbnNwb3J0Py5vbmVycm9yO3RoaXMuX3RyYW5zcG9ydC5vbmVycm9yPShYKT0+e0o/LihYKSx0aGlzLl9vbmVycm9yKFgpfTtsZXQgWT10aGlzLl90cmFuc3BvcnQ/Lm9ubWVzc2FnZTt0aGlzLl90cmFuc3BvcnQub25tZXNzYWdlPShYLFcpPT57aWYoWT8uKFgsVyksREooWCl8fEZMKFgpKXRoaXMuX29ucmVzcG9uc2UoWCk7ZWxzZSBpZihuVihYKSl0aGlzLl9vbnJlcXVlc3QoWCxXKTtlbHNlIGlmKERMKFgpKXRoaXMuX29ubm90aWZpY2F0aW9uKFgpO2Vsc2UgdGhpcy5fb25lcnJvcihFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoWCl9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2xldCAkPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuY2xlYXIoKSx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuY2xlYXIoKSx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5jbGVhcigpO2ZvcihsZXQgSiBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoSi50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGxldCBKIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlKLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7bGV0IFE9Yy5mcm9tRXJyb3IoZC5Db25uZWN0aW9uQ2xvc2VkLFwiQ29ubmVjdGlvbiBjbG9zZWRcIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2ZvcihsZXQgSiBvZiAkLnZhbHVlcygpKUooUSl9X29uZXJyb3IoJCl7dGhpcy5vbmVycm9yPy4oJCl9X29ubm90aWZpY2F0aW9uKCQpe2xldCBRPXRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmdldCgkLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tOb3RpZmljYXRpb25IYW5kbGVyO2lmKFE9PT12b2lkIDApcmV0dXJuO1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlEoJCkpLmNhdGNoKChKKT0+dGhpcy5fb25lcnJvcihFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7Sn1gKSkpfV9vbnJlcXVlc3QoJCxRKXtsZXQgSj10aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZ2V0KCQubWV0aG9kKT8/dGhpcy5mYWxsYmFja1JlcXVlc3RIYW5kbGVyLFk9dGhpcy5fdHJhbnNwb3J0LFg9JC5wYXJhbXM/Ll9tZXRhPy5bVDFdPy50YXNrSWQ7aWYoSj09PXZvaWQgMCl7bGV0IHE9e2pzb25ycGM6XCIyLjBcIixpZDokLmlkLGVycm9yOntjb2RlOmQuTWV0aG9kTm90Rm91bmQsbWVzc2FnZTpcIk1ldGhvZCBub3QgZm91bmRcIn19O2lmKFgmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKFgse3R5cGU6XCJlcnJvclwiLG1lc3NhZ2U6cSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sWT8uc2Vzc2lvbklkKS5jYXRjaCgoVik9PnRoaXMuX29uZXJyb3IoRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke1Z9YCkpKTtlbHNlIFk/LnNlbmQocSkuY2F0Y2goKFYpPT50aGlzLl9vbmVycm9yKEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtWfWApKSk7cmV0dXJufWxldCBXPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCgkLmlkLFcpO2xldCBHPU5MKCQucGFyYW1zKT8kLnBhcmFtcy50YXNrOnZvaWQgMCxVPXRoaXMuX3Rhc2tTdG9yZT90aGlzLnJlcXVlc3RUYXNrU3RvcmUoJCxZPy5zZXNzaW9uSWQpOnZvaWQgMCxIPXtzaWduYWw6Vy5zaWduYWwsc2Vzc2lvbklkOlk/LnNlc3Npb25JZCxfbWV0YTokLnBhcmFtcz8uX21ldGEsc2VuZE5vdGlmaWNhdGlvbjphc3luYyhxKT0+e2lmKFcuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2xldCBWPXtyZWxhdGVkUmVxdWVzdElkOiQuaWR9O2lmKFgpVi5yZWxhdGVkVGFzaz17dGFza0lkOlh9O2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHEsVil9LHNlbmRSZXF1ZXN0OmFzeW5jKHEsVixCKT0+e2lmKFcuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IGMoZC5Db25uZWN0aW9uQ2xvc2VkLFwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkXCIpO2xldCB6PXsuLi5CLHJlbGF0ZWRSZXF1ZXN0SWQ6JC5pZH07aWYoWCYmIXoucmVsYXRlZFRhc2spei5yZWxhdGVkVGFzaz17dGFza0lkOlh9O2xldCBOPXoucmVsYXRlZFRhc2s/LnRhc2tJZD8/WDtpZihOJiZVKWF3YWl0IFUudXBkYXRlVGFza1N0YXR1cyhOLFwiaW5wdXRfcmVxdWlyZWRcIik7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdChxLFYseil9LGF1dGhJbmZvOlE/LmF1dGhJbmZvLHJlcXVlc3RJZDokLmlkLHJlcXVlc3RJbmZvOlE/LnJlcXVlc3RJbmZvLHRhc2tJZDpYLHRhc2tTdG9yZTpVLHRhc2tSZXF1ZXN0ZWRUdGw6Rz8udHRsLGNsb3NlU1NFU3RyZWFtOlE/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpRPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntpZihHKXRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KCQubWV0aG9kKX0pLnRoZW4oKCk9PkooJCxIKSkudGhlbihhc3luYyhxKT0+e2lmKFcuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2xldCBWPXtyZXN1bHQ6cSxqc29ucnBjOlwiMi4wXCIsaWQ6JC5pZH07aWYoWCYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZSlhd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoWCx7dHlwZTpcInJlc3BvbnNlXCIsbWVzc2FnZTpWLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxZPy5zZXNzaW9uSWQpO2Vsc2UgYXdhaXQgWT8uc2VuZChWKX0sYXN5bmMocSk9PntpZihXLnNpZ25hbC5hYm9ydGVkKXJldHVybjtsZXQgVj17anNvbnJwYzpcIjIuMFwiLGlkOiQuaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIocS5jb2RlKT9xLmNvZGU6ZC5JbnRlcm5hbEVycm9yLG1lc3NhZ2U6cS5tZXNzYWdlPz9cIkludGVybmFsIGVycm9yXCIsLi4ucS5kYXRhIT09dm9pZCAwJiZ7ZGF0YTpxLmRhdGF9fX07aWYoWCYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZSlhd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoWCx7dHlwZTpcImVycm9yXCIsbWVzc2FnZTpWLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxZPy5zZXNzaW9uSWQpO2Vsc2UgYXdhaXQgWT8uc2VuZChWKX0pLmNhdGNoKChxKT0+dGhpcy5fb25lcnJvcihFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7cX1gKSkpLmZpbmFsbHkoKCk9PntpZih0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KCQuaWQpPT09Vyl0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZGVsZXRlKCQuaWQpfSl9X29ucHJvZ3Jlc3MoJCl7bGV0e3Byb2dyZXNzVG9rZW46USwuLi5KfT0kLnBhcmFtcyxZPU51bWJlcihRKSxYPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KFkpO2lmKCFYKXt0aGlzLl9vbmVycm9yKEVycm9yKGBSZWNlaXZlZCBhIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3IgYW4gdW5rbm93biB0b2tlbjogJHtKU09OLnN0cmluZ2lmeSgkKX1gKSk7cmV0dXJufWxldCBXPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KFkpLEc9dGhpcy5fdGltZW91dEluZm8uZ2V0KFkpO2lmKEcmJlcmJkcucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KFkpfWNhdGNoKFUpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKFkpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKFkpLHRoaXMuX2NsZWFudXBUaW1lb3V0KFkpLFcoVSk7cmV0dXJufVgoSil9X29ucmVzcG9uc2UoJCl7bGV0IFE9TnVtYmVyKCQuaWQpLEo9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoUSk7aWYoSil7aWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoUSksREooJCkpSigkKTtlbHNle2xldCBXPW5ldyBjKCQuZXJyb3IuY29kZSwkLmVycm9yLm1lc3NhZ2UsJC5lcnJvci5kYXRhKTtKKFcpfXJldHVybn1sZXQgWT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChRKTtpZihZPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKEVycm9yKGBSZWNlaXZlZCBhIHJlc3BvbnNlIGZvciBhbiB1bmtub3duIG1lc3NhZ2UgSUQ6ICR7SlNPTi5zdHJpbmdpZnkoJCl9YCkpO3JldHVybn10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShRKSx0aGlzLl9jbGVhbnVwVGltZW91dChRKTtsZXQgWD0hMTtpZihESigkKSYmJC5yZXN1bHQmJnR5cGVvZiAkLnJlc3VsdD09PVwib2JqZWN0XCIpe2xldCBXPSQucmVzdWx0O2lmKFcudGFzayYmdHlwZW9mIFcudGFzaz09PVwib2JqZWN0XCIpe2xldCBHPVcudGFzaztpZih0eXBlb2YgRy50YXNrSWQ9PT1cInN0cmluZ1wiKVg9ITAsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLnNldChHLnRhc2tJZCxRKX19aWYoIVgpdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoUSk7aWYoREooJCkpWSgkKTtlbHNle2xldCBXPWMuZnJvbUVycm9yKCQuZXJyb3IuY29kZSwkLmVycm9yLm1lc3NhZ2UsJC5lcnJvci5kYXRhKTtZKFcpfX1nZXQgdHJhbnNwb3J0KCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydH1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuX3RyYW5zcG9ydD8uY2xvc2UoKX1hc3luYypyZXF1ZXN0U3RyZWFtKCQsUSxKKXtsZXR7dGFzazpZfT1KPz97fTtpZighWSl7dHJ5e3lpZWxke3R5cGU6XCJyZXN1bHRcIixyZXN1bHQ6YXdhaXQgdGhpcy5yZXF1ZXN0KCQsUSxKKX19Y2F0Y2goVyl7eWllbGR7dHlwZTpcImVycm9yXCIsZXJyb3I6VyBpbnN0YW5jZW9mIGM/VzpuZXcgYyhkLkludGVybmFsRXJyb3IsU3RyaW5nKFcpKX19cmV0dXJufWxldCBYO3RyeXtsZXQgVz1hd2FpdCB0aGlzLnJlcXVlc3QoJCxIOSxKKTtpZihXLnRhc2spWD1XLnRhc2sudGFza0lkLHlpZWxke3R5cGU6XCJ0YXNrQ3JlYXRlZFwiLHRhc2s6Vy50YXNrfTtlbHNlIHRocm93IG5ldyBjKGQuSW50ZXJuYWxFcnJvcixcIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrXCIpO3doaWxlKCEwKXtsZXQgRz1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDpYfSxKKTtpZih5aWVsZHt0eXBlOlwidGFza1N0YXR1c1wiLHRhc2s6R30seDEoRy5zdGF0dXMpKXtpZihHLnN0YXR1cz09PVwiY29tcGxldGVkXCIpeWllbGR7dHlwZTpcInJlc3VsdFwiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDpYfSxRLEopfTtlbHNlIGlmKEcuc3RhdHVzPT09XCJmYWlsZWRcIil5aWVsZHt0eXBlOlwiZXJyb3JcIixlcnJvcjpuZXcgYyhkLkludGVybmFsRXJyb3IsYFRhc2sgJHtYfSBmYWlsZWRgKX07ZWxzZSBpZihHLnN0YXR1cz09PVwiY2FuY2VsbGVkXCIpeWllbGR7dHlwZTpcImVycm9yXCIsZXJyb3I6bmV3IGMoZC5JbnRlcm5hbEVycm9yLGBUYXNrICR7WH0gd2FzIGNhbmNlbGxlZGApfTtyZXR1cm59aWYoRy5zdGF0dXM9PT1cImlucHV0X3JlcXVpcmVkXCIpe3lpZWxke3R5cGU6XCJyZXN1bHRcIixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6WH0sUSxKKX07cmV0dXJufWxldCBVPUcucG9sbEludGVydmFsPz90aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MTAwMDthd2FpdCBuZXcgUHJvbWlzZSgoSCk9PnNldFRpbWVvdXQoSCxVKSksSj8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpfX1jYXRjaChXKXt5aWVsZHt0eXBlOlwiZXJyb3JcIixlcnJvcjpXIGluc3RhbmNlb2YgYz9XOm5ldyBjKGQuSW50ZXJuYWxFcnJvcixTdHJpbmcoVykpfX19cmVxdWVzdCgkLFEsSil7bGV0e3JlbGF0ZWRSZXF1ZXN0SWQ6WSxyZXN1bXB0aW9uVG9rZW46WCxvbnJlc3VtcHRpb250b2tlbjpXLHRhc2s6RyxyZWxhdGVkVGFzazpVfT1KPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKEgscSk9PntsZXQgVj0oTSk9PntxKE0pfTtpZighdGhpcy5fdHJhbnNwb3J0KXtWKEVycm9yKFwiTm90IGNvbm5lY3RlZFwiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7aWYodGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKCQubWV0aG9kKSxHKXRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkoJC5tZXRob2QpfWNhdGNoKE0pe1YoTSk7cmV0dXJufUo/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtsZXQgQj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssej17Li4uJCxqc29ucnBjOlwiMi4wXCIsaWQ6Qn07aWYoSj8ub25wcm9ncmVzcyl0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldChCLEoub25wcm9ncmVzcyksei5wYXJhbXM9ey4uLiQucGFyYW1zLF9tZXRhOnsuLi4kLnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46Qn19O2lmKEcpei5wYXJhbXM9ey4uLnoucGFyYW1zLHRhc2s6R307aWYoVSl6LnBhcmFtcz17Li4uei5wYXJhbXMsX21ldGE6ey4uLnoucGFyYW1zPy5fbWV0YXx8e30sW1QxXTpVfX07bGV0IE49KE0pPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoQiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoQiksdGhpcy5fY2xlYW51cFRpbWVvdXQoQiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOlwiMi4wXCIsbWV0aG9kOlwibm90aWZpY2F0aW9ucy9jYW5jZWxsZWRcIixwYXJhbXM6e3JlcXVlc3RJZDpCLHJlYXNvbjpTdHJpbmcoTSl9fSx7cmVsYXRlZFJlcXVlc3RJZDpZLHJlc3VtcHRpb25Ub2tlbjpYLG9ucmVzdW1wdGlvbnRva2VuOld9KS5jYXRjaCgoQSk9PnRoaXMuX29uZXJyb3IoRXJyb3IoYEZhaWxlZCB0byBzZW5kIGNhbmNlbGxhdGlvbjogJHtBfWApKSk7bGV0IGo9TSBpbnN0YW5jZW9mIGM/TTpuZXcgYyhkLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhNKSk7cShqKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQoQiwoTSk9PntpZihKPy5zaWduYWw/LmFib3J0ZWQpcmV0dXJuO2lmKE0gaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcShNKTt0cnl7bGV0IGo9djEoUSxNLnJlc3VsdCk7aWYoIWouc3VjY2VzcylxKGouZXJyb3IpO2Vsc2UgSChqLmRhdGEpfWNhdGNoKGope3Eoail9fSksSj8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e04oSj8uc2lnbmFsPy5yZWFzb24pfSk7bGV0IHc9Sj8udGltZW91dD8/VnAsTz0oKT0+TihjLmZyb21FcnJvcihkLlJlcXVlc3RUaW1lb3V0LFwiUmVxdWVzdCB0aW1lZCBvdXRcIix7dGltZW91dDp3fSkpO3RoaXMuX3NldHVwVGltZW91dChCLHcsSj8ubWF4VG90YWxUaW1lb3V0LE8sSj8ucmVzZXRUaW1lb3V0T25Qcm9ncmVzcz8/ITEpO2xldCBEPVU/LnRhc2tJZDtpZihEKXtsZXQgTT0oaik9PntsZXQgQT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChCKTtpZihBKUEoaik7ZWxzZSB0aGlzLl9vbmVycm9yKEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHtCfWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQoQixNKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoRCx7dHlwZTpcInJlcXVlc3RcIixtZXNzYWdlOnosdGltZXN0YW1wOkRhdGUubm93KCl9KS5jYXRjaCgoaik9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChCKSxxKGopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCh6LHtyZWxhdGVkUmVxdWVzdElkOlkscmVzdW1wdGlvblRva2VuOlgsb25yZXN1bXB0aW9udG9rZW46V30pLmNhdGNoKChNKT0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KEIpLHEoTSl9KX0pfWFzeW5jIGdldFRhc2soJCxRKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJ0YXNrcy9nZXRcIixwYXJhbXM6JH0sWFcsUSl9YXN5bmMgZ2V0VGFza1Jlc3VsdCgkLFEsSil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwidGFza3MvcmVzdWx0XCIscGFyYW1zOiR9LFEsSil9YXN5bmMgbGlzdFRhc2tzKCQsUSl7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwidGFza3MvbGlzdFwiLHBhcmFtczokfSxHVyxRKX1hc3luYyBjYW5jZWxUYXNrKCQsUSl7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwidGFza3MvY2FuY2VsXCIscGFyYW1zOiR9LE1MLFEpfWFzeW5jIG5vdGlmaWNhdGlvbigkLFEpe2lmKCF0aGlzLl90cmFuc3BvcnQpdGhyb3cgRXJyb3IoXCJOb3QgY29ubmVjdGVkXCIpO3RoaXMuYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eSgkLm1ldGhvZCk7bGV0IEo9UT8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihKKXtsZXQgRz17Li4uJCxqc29ucnBjOlwiMi4wXCIscGFyYW1zOnsuLi4kLnBhcmFtcyxfbWV0YTp7Li4uJC5wYXJhbXM/Ll9tZXRhfHx7fSxbVDFdOlEucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKEose3R5cGU6XCJub3RpZmljYXRpb25cIixtZXNzYWdlOkcsdGltZXN0YW1wOkRhdGUubm93KCl9KTtyZXR1cm59aWYoKHRoaXMuX29wdGlvbnM/LmRlYm91bmNlZE5vdGlmaWNhdGlvbk1ldGhvZHM/P1tdKS5pbmNsdWRlcygkLm1ldGhvZCkmJiEkLnBhcmFtcyYmIVE/LnJlbGF0ZWRSZXF1ZXN0SWQmJiFRPy5yZWxhdGVkVGFzayl7aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuaGFzKCQubWV0aG9kKSlyZXR1cm47dGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuYWRkKCQubWV0aG9kKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuZGVsZXRlKCQubWV0aG9kKSwhdGhpcy5fdHJhbnNwb3J0KXJldHVybjtsZXQgRz17Li4uJCxqc29ucnBjOlwiMi4wXCJ9O2lmKFE/LnJlbGF0ZWRUYXNrKUc9ey4uLkcscGFyYW1zOnsuLi5HLnBhcmFtcyxfbWV0YTp7Li4uRy5wYXJhbXM/Ll9tZXRhfHx7fSxbVDFdOlEucmVsYXRlZFRhc2t9fX07dGhpcy5fdHJhbnNwb3J0Py5zZW5kKEcsUSkuY2F0Y2goKFUpPT50aGlzLl9vbmVycm9yKFUpKX0pO3JldHVybn1sZXQgVz17Li4uJCxqc29ucnBjOlwiMi4wXCJ9O2lmKFE/LnJlbGF0ZWRUYXNrKVc9ey4uLlcscGFyYW1zOnsuLi5XLnBhcmFtcyxfbWV0YTp7Li4uVy5wYXJhbXM/Ll9tZXRhfHx7fSxbVDFdOlEucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoVyxRKX1zZXRSZXF1ZXN0SGFuZGxlcigkLFEpe2xldCBKPXpCKCQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KEopLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQoSiwoWSxYKT0+e2xldCBXPU5CKCQsWSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShRKFcsWCkpfSl9cmVtb3ZlUmVxdWVzdEhhbmRsZXIoJCl7dGhpcy5fcmVxdWVzdEhhbmRsZXJzLmRlbGV0ZSgkKX1hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcigkKXtpZih0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuaGFzKCQpKXRocm93IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHskfSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIoJCxRKXtsZXQgSj16QigkKTt0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5zZXQoSiwoWSk9PntsZXQgWD1OQigkLFkpO3JldHVybiBQcm9taXNlLnJlc29sdmUoUShYKSl9KX1yZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyKCQpe3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmRlbGV0ZSgkKX1fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoJCl7bGV0IFE9dGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmdldCgkKTtpZihRIT09dm9pZCAwKXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKFEpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUoJCl9YXN5bmMgX2VucXVldWVUYXNrTWVzc2FnZSgkLFEsSil7aWYoIXRoaXMuX3Rhc2tTdG9yZXx8IXRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhyb3cgRXJyb3IoXCJDYW5ub3QgZW5xdWV1ZSB0YXNrIG1lc3NhZ2U6IHRhc2tTdG9yZSBhbmQgdGFza01lc3NhZ2VRdWV1ZSBhcmUgbm90IGNvbmZpZ3VyZWRcIik7bGV0IFk9dGhpcy5fb3B0aW9ucz8ubWF4VGFza1F1ZXVlU2l6ZTthd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmVucXVldWUoJCxRLEosWSl9YXN5bmMgX2NsZWFyVGFza1F1ZXVlKCQsUSl7aWYodGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl7bGV0IEo9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlQWxsKCQsUSk7Zm9yKGxldCBZIG9mIEopaWYoWS50eXBlPT09XCJyZXF1ZXN0XCImJm5WKFkubWVzc2FnZSkpe2xldCBYPVkubWVzc2FnZS5pZCxXPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KFgpO2lmKFcpVyhuZXcgYyhkLkludGVybmFsRXJyb3IsXCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWRcIikpLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKFgpO2Vsc2UgdGhpcy5fb25lcnJvcihFcnJvcihgUmVzb2x2ZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke1h9IGR1cmluZyB0YXNrICR7JH0gY2xlYW51cGApKX19fWFzeW5jIF93YWl0Rm9yVGFza1VwZGF0ZSgkLFEpe2xldCBKPXRoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xMDAwO3RyeXtsZXQgWT1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2soJCk7aWYoWT8ucG9sbEludGVydmFsKUo9WS5wb2xsSW50ZXJ2YWx9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgoWSxYKT0+e2lmKFEuYWJvcnRlZCl7WChuZXcgYyhkLkludmFsaWRSZXF1ZXN0LFwiUmVxdWVzdCBjYW5jZWxsZWRcIikpO3JldHVybn1sZXQgVz1zZXRUaW1lb3V0KFksSik7US5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e2NsZWFyVGltZW91dChXKSxYKG5ldyBjKGQuSW52YWxpZFJlcXVlc3QsXCJSZXF1ZXN0IGNhbmNlbGxlZFwiKSl9LHtvbmNlOiEwfSl9KX1yZXF1ZXN0VGFza1N0b3JlKCQsUSl7bGV0IEo9dGhpcy5fdGFza1N0b3JlO2lmKCFKKXRocm93IEVycm9yKFwiTm8gdGFzayBzdG9yZSBjb25maWd1cmVkXCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jKFkpPT57aWYoISQpdGhyb3cgRXJyb3IoXCJObyByZXF1ZXN0IHByb3ZpZGVkXCIpO3JldHVybiBhd2FpdCBKLmNyZWF0ZVRhc2soWSwkLmlkLHttZXRob2Q6JC5tZXRob2QscGFyYW1zOiQucGFyYW1zfSxRKX0sZ2V0VGFzazphc3luYyhZKT0+e2xldCBYPWF3YWl0IEouZ2V0VGFzayhZLFEpO2lmKCFYKXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxcIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZFwiKTtyZXR1cm4gWH0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKFksWCxXKT0+e2F3YWl0IEouc3RvcmVUYXNrUmVzdWx0KFksWCxXLFEpO2xldCBHPWF3YWl0IEouZ2V0VGFzayhZLFEpO2lmKEcpe2xldCBVPWpKLnBhcnNlKHttZXRob2Q6XCJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1c1wiLHBhcmFtczpHfSk7aWYoYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oVSkseDEoRy5zdGF0dXMpKXRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKFkpfX0sZ2V0VGFza1Jlc3VsdDooWSk9PntyZXR1cm4gSi5nZXRUYXNrUmVzdWx0KFksUSl9LHVwZGF0ZVRhc2tTdGF0dXM6YXN5bmMoWSxYLFcpPT57bGV0IEc9YXdhaXQgSi5nZXRUYXNrKFksUSk7aWYoIUcpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBUYXNrIFwiJHtZfVwiIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKHgxKEcuc3RhdHVzKSl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYENhbm5vdCB1cGRhdGUgdGFzayBcIiR7WX1cIiBmcm9tIHRlcm1pbmFsIHN0YXR1cyBcIiR7Ry5zdGF0dXN9XCIgdG8gXCIke1h9XCIuIFRlcm1pbmFsIHN0YXRlcyAoY29tcGxldGVkLCBmYWlsZWQsIGNhbmNlbGxlZCkgY2Fubm90IHRyYW5zaXRpb24gdG8gb3RoZXIgc3RhdGVzLmApO2F3YWl0IEoudXBkYXRlVGFza1N0YXR1cyhZLFgsVyxRKTtsZXQgVT1hd2FpdCBKLmdldFRhc2soWSxRKTtpZihVKXtsZXQgSD1qSi5wYXJzZSh7bWV0aG9kOlwibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXNcIixwYXJhbXM6VX0pO2lmKGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKEgpLHgxKFUuc3RhdHVzKSl0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihZKX19LGxpc3RUYXNrczooWSk9PntyZXR1cm4gSi5saXN0VGFza3MoWSxRKX19fX1mdW5jdGlvbiBVaigkKXtyZXR1cm4gJCE9PW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmIUFycmF5LmlzQXJyYXkoJCl9ZnVuY3Rpb24gSGooJCxRKXtsZXQgSj17Li4uJH07Zm9yKGxldCBZIGluIFEpe2xldCBYPVksVz1RW1hdO2lmKFc9PT12b2lkIDApY29udGludWU7bGV0IEc9SltYXTtpZihVaihHKSYmVWooVykpSltYXT17Li4uRywuLi5XfTtlbHNlIEpbWF09V31yZXR1cm4gSn12YXIgZFA9QlgoSHooKSwxKSxpUD1CWChwUCgpLDEpO2Z1bmN0aW9uIGpzKCl7bGV0ICQ9bmV3IGRQLmRlZmF1bHQoe3N0cmljdDohMSx2YWxpZGF0ZUZvcm1hdHM6ITAsdmFsaWRhdGVTY2hlbWE6ITEsYWxsRXJyb3JzOiEwfSk7cmV0dXJuIGlQLmRlZmF1bHQoJCksJH1jbGFzcyBGentjb25zdHJ1Y3RvcigkKXt0aGlzLl9hanY9JD8/anMoKX1nZXRWYWxpZGF0b3IoJCl7bGV0IFE9XCIkaWRcImluICQmJnR5cGVvZiAkLiRpZD09PVwic3RyaW5nXCI/dGhpcy5fYWp2LmdldFNjaGVtYSgkLiRpZCk/P3RoaXMuX2Fqdi5jb21waWxlKCQpOnRoaXMuX2Fqdi5jb21waWxlKCQpO3JldHVybihKKT0+e2lmKFEoSikpcmV0dXJue3ZhbGlkOiEwLGRhdGE6SixlcnJvck1lc3NhZ2U6dm9pZCAwfTtlbHNlIHJldHVybnt2YWxpZDohMSxkYXRhOnZvaWQgMCxlcnJvck1lc3NhZ2U6dGhpcy5fYWp2LmVycm9yc1RleHQoUS5lcnJvcnMpfX19fWNsYXNzIFp6e2NvbnN0cnVjdG9yKCQpe3RoaXMuX3NlcnZlcj0kfXJlcXVlc3RTdHJlYW0oJCxRLEope3JldHVybiB0aGlzLl9zZXJ2ZXIucmVxdWVzdFN0cmVhbSgkLFEsSil9Y3JlYXRlTWVzc2FnZVN0cmVhbSgkLFEpe2xldCBKPXRoaXMuX3NlcnZlci5nZXRDbGllbnRDYXBhYmlsaXRpZXMoKTtpZigoJC50b29sc3x8JC50b29sQ2hvaWNlKSYmIUo/LnNhbXBsaW5nPy50b29scyl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHNhbXBsaW5nIHRvb2xzIGNhcGFiaWxpdHkuXCIpO2lmKCQubWVzc2FnZXMubGVuZ3RoPjApe2xldCBZPSQubWVzc2FnZXNbJC5tZXNzYWdlcy5sZW5ndGgtMV0sWD1BcnJheS5pc0FycmF5KFkuY29udGVudCk/WS5jb250ZW50OltZLmNvbnRlbnRdLFc9WC5zb21lKChxKT0+cS50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKSxHPSQubWVzc2FnZXMubGVuZ3RoPjE/JC5tZXNzYWdlc1skLm1lc3NhZ2VzLmxlbmd0aC0yXTp2b2lkIDAsVT1HP0FycmF5LmlzQXJyYXkoRy5jb250ZW50KT9HLmNvbnRlbnQ6W0cuY29udGVudF06W10sSD1VLnNvbWUoKHEpPT5xLnR5cGU9PT1cInRvb2xfdXNlXCIpO2lmKFcpe2lmKFguc29tZSgocSk9PnEudHlwZSE9PVwidG9vbF9yZXN1bHRcIikpdGhyb3cgRXJyb3IoXCJUaGUgbGFzdCBtZXNzYWdlIG11c3QgY29udGFpbiBvbmx5IHRvb2xfcmVzdWx0IGNvbnRlbnQgaWYgYW55IGlzIHByZXNlbnRcIik7aWYoIUgpdGhyb3cgRXJyb3IoXCJ0b29sX3Jlc3VsdCBibG9ja3MgYXJlIG5vdCBtYXRjaGluZyBhbnkgdG9vbF91c2UgZnJvbSB0aGUgcHJldmlvdXMgbWVzc2FnZVwiKX1pZihIKXtsZXQgcT1uZXcgU2V0KFUuZmlsdGVyKChCKT0+Qi50eXBlPT09XCJ0b29sX3VzZVwiKS5tYXAoKEIpPT5CLmlkKSksVj1uZXcgU2V0KFguZmlsdGVyKChCKT0+Qi50eXBlPT09XCJ0b29sX3Jlc3VsdFwiKS5tYXAoKEIpPT5CLnRvb2xVc2VJZCkpO2lmKHEuc2l6ZSE9PVYuc2l6ZXx8IVsuLi5xXS5ldmVyeSgoQik9PlYuaGFzKEIpKSl0aHJvdyBFcnJvcihcImlkcyBvZiB0b29sX3Jlc3VsdCBibG9ja3MgYW5kIHRvb2xfdXNlIGJsb2NrcyBmcm9tIHByZXZpb3VzIG1lc3NhZ2UgZG8gbm90IG1hdGNoXCIpfX1yZXR1cm4gdGhpcy5yZXF1ZXN0U3RyZWFtKHttZXRob2Q6XCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlXCIscGFyYW1zOiR9LFJKLFEpfWVsaWNpdElucHV0U3RyZWFtKCQsUSl7bGV0IEo9dGhpcy5fc2VydmVyLmdldENsaWVudENhcGFiaWxpdGllcygpLFk9JC5tb2RlPz9cImZvcm1cIjtzd2l0Y2goWSl7Y2FzZVwidXJsXCI6e2lmKCFKPy5lbGljaXRhdGlvbj8udXJsKXRocm93IEVycm9yKFwiQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgdXJsIGVsaWNpdGF0aW9uLlwiKTticmVha31jYXNlXCJmb3JtXCI6e2lmKCFKPy5lbGljaXRhdGlvbj8uZm9ybSl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGZvcm0gZWxpY2l0YXRpb24uXCIpO2JyZWFrfX1sZXQgWD1ZPT09XCJmb3JtXCImJiQubW9kZT09PXZvaWQgMD97Li4uJCxtb2RlOlwiZm9ybVwifTokO3JldHVybiB0aGlzLnJlcXVlc3RTdHJlYW0oe21ldGhvZDpcImVsaWNpdGF0aW9uL2NyZWF0ZVwiLHBhcmFtczpYfSxWOSxRKX1hc3luYyBnZXRUYXNrKCQsUSl7cmV0dXJuIHRoaXMuX3NlcnZlci5nZXRUYXNrKHt0YXNrSWQ6JH0sUSl9YXN5bmMgZ2V0VGFza1Jlc3VsdCgkLFEsSil7cmV0dXJuIHRoaXMuX3NlcnZlci5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6JH0sUSxKKX1hc3luYyBsaXN0VGFza3MoJCxRKXtyZXR1cm4gdGhpcy5fc2VydmVyLmxpc3RUYXNrcygkP3tjdXJzb3I6JH06dm9pZCAwLFEpfWFzeW5jIGNhbmNlbFRhc2soJCxRKXtyZXR1cm4gdGhpcy5fc2VydmVyLmNhbmNlbFRhc2soe3Rhc2tJZDokfSxRKX19ZnVuY3Rpb24gblAoJCxRLEope2lmKCEkKXRocm93IEVycm9yKGAke0p9IGRvZXMgbm90IHN1cHBvcnQgdGFzayBjcmVhdGlvbiAocmVxdWlyZWQgZm9yICR7UX0pYCk7c3dpdGNoKFEpe2Nhc2VcInRvb2xzL2NhbGxcIjppZighJC50b29scz8uY2FsbCl0aHJvdyBFcnJvcihgJHtKfSBkb2VzIG5vdCBzdXBwb3J0IHRhc2sgY3JlYXRpb24gZm9yIHRvb2xzL2NhbGwgKHJlcXVpcmVkIGZvciAke1F9KWApO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fWZ1bmN0aW9uIHJQKCQsUSxKKXtpZighJCl0aHJvdyBFcnJvcihgJHtKfSBkb2VzIG5vdCBzdXBwb3J0IHRhc2sgY3JlYXRpb24gKHJlcXVpcmVkIGZvciAke1F9KWApO3N3aXRjaChRKXtjYXNlXCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlXCI6aWYoISQuc2FtcGxpbmc/LmNyZWF0ZU1lc3NhZ2UpdGhyb3cgRXJyb3IoYCR7Sn0gZG9lcyBub3Qgc3VwcG9ydCB0YXNrIGNyZWF0aW9uIGZvciBzYW1wbGluZy9jcmVhdGVNZXNzYWdlIChyZXF1aXJlZCBmb3IgJHtRfSlgKTticmVhaztjYXNlXCJlbGljaXRhdGlvbi9jcmVhdGVcIjppZighJC5lbGljaXRhdGlvbj8uY3JlYXRlKXRocm93IEVycm9yKGAke0p9IGRvZXMgbm90IHN1cHBvcnQgdGFzayBjcmVhdGlvbiBmb3IgZWxpY2l0YXRpb24vY3JlYXRlIChyZXF1aXJlZCBmb3IgJHtRfSlgKTticmVhaztkZWZhdWx0OmJyZWFrfX1jbGFzcyBNeiBleHRlbmRzIHdCe2NvbnN0cnVjdG9yKCQsUSl7c3VwZXIoUSk7aWYodGhpcy5fc2VydmVySW5mbz0kLHRoaXMuX2xvZ2dpbmdMZXZlbHM9bmV3IE1hcCx0aGlzLkxPR19MRVZFTF9TRVZFUklUWT1uZXcgTWFwKElKLm9wdGlvbnMubWFwKChKLFkpPT5bSixZXSkpLHRoaXMuaXNNZXNzYWdlSWdub3JlZD0oSixZKT0+e2xldCBYPXRoaXMuX2xvZ2dpbmdMZXZlbHMuZ2V0KFkpO3JldHVybiBYP3RoaXMuTE9HX0xFVkVMX1NFVkVSSVRZLmdldChKKTx0aGlzLkxPR19MRVZFTF9TRVZFUklUWS5nZXQoWCk6ITF9LHRoaXMuX2NhcGFiaWxpdGllcz1RPy5jYXBhYmlsaXRpZXM/P3t9LHRoaXMuX2luc3RydWN0aW9ucz1RPy5pbnN0cnVjdGlvbnMsdGhpcy5fanNvblNjaGVtYVZhbGlkYXRvcj1RPy5qc29uU2NoZW1hVmFsaWRhdG9yPz9uZXcgRnosdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcih0ViwoSik9PnRoaXMuX29uaW5pdGlhbGl6ZShKKSksdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKGFWLCgpPT50aGlzLm9uaW5pdGlhbGl6ZWQ/LigpKSx0aGlzLl9jYXBhYmlsaXRpZXMubG9nZ2luZyl0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFlCLGFzeW5jKEosWSk9PntsZXQgWD1ZLnNlc3Npb25JZHx8WS5yZXF1ZXN0SW5mbz8uaGVhZGVyc1tcIm1jcC1zZXNzaW9uLWlkXCJdfHx2b2lkIDAse2xldmVsOld9PUoucGFyYW1zLEc9SUouc2FmZVBhcnNlKFcpO2lmKEcuc3VjY2Vzcyl0aGlzLl9sb2dnaW5nTGV2ZWxzLnNldChYLEcuZGF0YSk7cmV0dXJue319KX1nZXQgZXhwZXJpbWVudGFsKCl7aWYoIXRoaXMuX2V4cGVyaW1lbnRhbCl0aGlzLl9leHBlcmltZW50YWw9e3Rhc2tzOm5ldyBaeih0aGlzKX07cmV0dXJuIHRoaXMuX2V4cGVyaW1lbnRhbH1yZWdpc3RlckNhcGFiaWxpdGllcygkKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcihcIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgY29ubmVjdGluZyB0byB0cmFuc3BvcnRcIik7dGhpcy5fY2FwYWJpbGl0aWVzPUhqKHRoaXMuX2NhcGFiaWxpdGllcywkKX1zZXRSZXF1ZXN0SGFuZGxlcigkLFEpe2xldCBZPUMxKCQpPy5tZXRob2Q7aWYoIVkpdGhyb3cgRXJyb3IoXCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsXCIpO2xldCBYO2lmKGE2KFkpKXtsZXQgRz1ZO1g9Ry5fem9kPy5kZWY/LnZhbHVlPz9HLnZhbHVlfWVsc2V7bGV0IEc9WTtYPUcuX2RlZj8udmFsdWU/P0cudmFsdWV9aWYodHlwZW9mIFghPT1cInN0cmluZ1wiKXRocm93IEVycm9yKFwiU2NoZW1hIG1ldGhvZCBsaXRlcmFsIG11c3QgYmUgYSBzdHJpbmdcIik7aWYoWD09PVwidG9vbHMvY2FsbFwiKXtsZXQgRz1hc3luYyhVLEgpPT57bGV0IHE9djEocTksVSk7aWYoIXEuc3VjY2Vzcyl7bGV0IE49cS5lcnJvciBpbnN0YW5jZW9mIEVycm9yP3EuZXJyb3IubWVzc2FnZTpTdHJpbmcocS5lcnJvcik7dGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBJbnZhbGlkIHRvb2xzL2NhbGwgcmVxdWVzdDogJHtOfWApfWxldHtwYXJhbXM6Vn09cS5kYXRhLEI9YXdhaXQgUHJvbWlzZS5yZXNvbHZlKFEoVSxIKSk7aWYoVi50YXNrKXtsZXQgTj12MShIOSxCKTtpZighTi5zdWNjZXNzKXtsZXQgdz1OLmVycm9yIGluc3RhbmNlb2YgRXJyb3I/Ti5lcnJvci5tZXNzYWdlOlN0cmluZyhOLmVycm9yKTt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYEludmFsaWQgdGFzayBjcmVhdGlvbiByZXN1bHQ6ICR7d31gKX1yZXR1cm4gTi5kYXRhfWxldCB6PXYxKE5XLEIpO2lmKCF6LnN1Y2Nlc3Mpe2xldCBOPXouZXJyb3IgaW5zdGFuY2VvZiBFcnJvcj96LmVycm9yLm1lc3NhZ2U6U3RyaW5nKHouZXJyb3IpO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgSW52YWxpZCB0b29scy9jYWxsIHJlc3VsdDogJHtOfWApfXJldHVybiB6LmRhdGF9O3JldHVybiBzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcigkLEcpfXJldHVybiBzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcigkLFEpfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QoJCl7c3dpdGNoKCQpe2Nhc2VcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIjppZighdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy5zYW1wbGluZyl0aHJvdyBFcnJvcihgQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcImVsaWNpdGF0aW9uL2NyZWF0ZVwiOmlmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LmVsaWNpdGF0aW9uKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBlbGljaXRhdGlvbiAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwicm9vdHMvbGlzdFwiOmlmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LnJvb3RzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBsaXN0aW5nIHJvb3RzIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJwaW5nXCI6YnJlYWt9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkoJCl7c3dpdGNoKCQpe2Nhc2VcIm5vdGlmaWNhdGlvbnMvbWVzc2FnZVwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMubG9nZ2luZyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbG9nZ2luZyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZFwiOmNhc2VcIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL2xpc3RfY2hhbmdlZFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMucmVzb3VyY2VzKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBub3RpZnlpbmcgYWJvdXQgcmVzb3VyY2VzIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IG5vdGlmeWluZyBvZiB0b29sIGxpc3QgY2hhbmdlcyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMucHJvbXB0cyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbm90aWZ5aW5nIG9mIHByb21wdCBsaXN0IGNoYW5nZXMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcIm5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGVcIjppZighdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy5lbGljaXRhdGlvbj8udXJsKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBVUkwgZWxpY2l0YXRpb24gKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkXCI6YnJlYWs7Y2FzZVwibm90aWZpY2F0aW9ucy9wcm9ncmVzc1wiOmJyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkoJCl7aWYoIXRoaXMuX2NhcGFiaWxpdGllcylyZXR1cm47c3dpdGNoKCQpe2Nhc2VcImNvbXBsZXRpb24vY29tcGxldGVcIjppZighdGhpcy5fY2FwYWJpbGl0aWVzLmNvbXBsZXRpb25zKXRocm93IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBjb21wbGV0aW9ucyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwibG9nZ2luZy9zZXRMZXZlbFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMubG9nZ2luZyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbG9nZ2luZyAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwicHJvbXB0cy9nZXRcIjpjYXNlXCJwcm9tcHRzL2xpc3RcIjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnByb21wdHMpdGhyb3cgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHByb21wdHMgKHJlcXVpcmVkIGZvciAkeyR9KWApO2JyZWFrO2Nhc2VcInJlc291cmNlcy9saXN0XCI6Y2FzZVwicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0XCI6Y2FzZVwicmVzb3VyY2VzL3JlYWRcIjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnJlc291cmNlcyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcmVzb3VyY2VzIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJ0b29scy9jYWxsXCI6Y2FzZVwidG9vbHMvbGlzdFwiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRvb2xzIChyZXF1aXJlZCBmb3IgJHskfSlgKTticmVhaztjYXNlXCJ0YXNrcy9nZXRcIjpjYXNlXCJ0YXNrcy9saXN0XCI6Y2FzZVwidGFza3MvcmVzdWx0XCI6Y2FzZVwidGFza3MvY2FuY2VsXCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50YXNrcyl0aHJvdyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGFza3MgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7JH0pYCk7YnJlYWs7Y2FzZVwicGluZ1wiOmNhc2VcImluaXRpYWxpemVcIjpicmVha319YXNzZXJ0VGFza0NhcGFiaWxpdHkoJCl7clAodGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy50YXNrcz8ucmVxdWVzdHMsJCxcIkNsaWVudFwiKX1hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkoJCl7aWYoIXRoaXMuX2NhcGFiaWxpdGllcylyZXR1cm47blAodGhpcy5fY2FwYWJpbGl0aWVzLnRhc2tzPy5yZXF1ZXN0cywkLFwiU2VydmVyXCIpfWFzeW5jIF9vbmluaXRpYWxpemUoJCl7bGV0IFE9JC5wYXJhbXMucHJvdG9jb2xWZXJzaW9uO3JldHVybiB0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM9JC5wYXJhbXMuY2FwYWJpbGl0aWVzLHRoaXMuX2NsaWVudFZlcnNpb249JC5wYXJhbXMuY2xpZW50SW5mbyx7cHJvdG9jb2xWZXJzaW9uOlZMLmluY2x1ZGVzKFEpP1E6ZFYsY2FwYWJpbGl0aWVzOnRoaXMuZ2V0Q2FwYWJpbGl0aWVzKCksc2VydmVySW5mbzp0aGlzLl9zZXJ2ZXJJbmZvLC4uLnRoaXMuX2luc3RydWN0aW9ucyYme2luc3RydWN0aW9uczp0aGlzLl9pbnN0cnVjdGlvbnN9fX1nZXRDbGllbnRDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzfWdldENsaWVudFZlcnNpb24oKXtyZXR1cm4gdGhpcy5fY2xpZW50VmVyc2lvbn1nZXRDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0aWVzfWFzeW5jIHBpbmcoKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJwaW5nXCJ9LHMzKX1hc3luYyBjcmVhdGVNZXNzYWdlKCQsUSl7aWYoJC50b29sc3x8JC50b29sQ2hvaWNlKXtpZighdGhpcy5fY2xpZW50Q2FwYWJpbGl0aWVzPy5zYW1wbGluZz8udG9vbHMpdGhyb3cgRXJyb3IoXCJDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyB0b29scyBjYXBhYmlsaXR5LlwiKX1pZigkLm1lc3NhZ2VzLmxlbmd0aD4wKXtsZXQgSj0kLm1lc3NhZ2VzWyQubWVzc2FnZXMubGVuZ3RoLTFdLFk9QXJyYXkuaXNBcnJheShKLmNvbnRlbnQpP0ouY29udGVudDpbSi5jb250ZW50XSxYPVkuc29tZSgoSCk9PkgudHlwZT09PVwidG9vbF9yZXN1bHRcIiksVz0kLm1lc3NhZ2VzLmxlbmd0aD4xPyQubWVzc2FnZXNbJC5tZXNzYWdlcy5sZW5ndGgtMl06dm9pZCAwLEc9Vz9BcnJheS5pc0FycmF5KFcuY29udGVudCk/Vy5jb250ZW50OltXLmNvbnRlbnRdOltdLFU9Ry5zb21lKChIKT0+SC50eXBlPT09XCJ0b29sX3VzZVwiKTtpZihYKXtpZihZLnNvbWUoKEgpPT5ILnR5cGUhPT1cInRvb2xfcmVzdWx0XCIpKXRocm93IEVycm9yKFwiVGhlIGxhc3QgbWVzc2FnZSBtdXN0IGNvbnRhaW4gb25seSB0b29sX3Jlc3VsdCBjb250ZW50IGlmIGFueSBpcyBwcmVzZW50XCIpO2lmKCFVKXRocm93IEVycm9yKFwidG9vbF9yZXN1bHQgYmxvY2tzIGFyZSBub3QgbWF0Y2hpbmcgYW55IHRvb2xfdXNlIGZyb20gdGhlIHByZXZpb3VzIG1lc3NhZ2VcIil9aWYoVSl7bGV0IEg9bmV3IFNldChHLmZpbHRlcigoVik9PlYudHlwZT09PVwidG9vbF91c2VcIikubWFwKChWKT0+Vi5pZCkpLHE9bmV3IFNldChZLmZpbHRlcigoVik9PlYudHlwZT09PVwidG9vbF9yZXN1bHRcIikubWFwKChWKT0+Vi50b29sVXNlSWQpKTtpZihILnNpemUhPT1xLnNpemV8fCFbLi4uSF0uZXZlcnkoKFYpPT5xLmhhcyhWKSkpdGhyb3cgRXJyb3IoXCJpZHMgb2YgdG9vbF9yZXN1bHQgYmxvY2tzIGFuZCB0b29sX3VzZSBibG9ja3MgZnJvbSBwcmV2aW91cyBtZXNzYWdlIGRvIG5vdCBtYXRjaFwiKX19aWYoJC50b29scylyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlXCIscGFyYW1zOiR9LFdCLFEpO3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDpcInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2VcIixwYXJhbXM6JH0sUkosUSl9YXN5bmMgZWxpY2l0SW5wdXQoJCxRKXtzd2l0Y2goJC5tb2RlPz9cImZvcm1cIil7Y2FzZVwidXJsXCI6e2lmKCF0aGlzLl9jbGllbnRDYXBhYmlsaXRpZXM/LmVsaWNpdGF0aW9uPy51cmwpdGhyb3cgRXJyb3IoXCJDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB1cmwgZWxpY2l0YXRpb24uXCIpO2xldCBZPSQ7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwiZWxpY2l0YXRpb24vY3JlYXRlXCIscGFyYW1zOll9LFY5LFEpfWNhc2VcImZvcm1cIjp7aWYoIXRoaXMuX2NsaWVudENhcGFiaWxpdGllcz8uZWxpY2l0YXRpb24/LmZvcm0pdGhyb3cgRXJyb3IoXCJDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBmb3JtIGVsaWNpdGF0aW9uLlwiKTtsZXQgWT0kLm1vZGU9PT1cImZvcm1cIj8kOnsuLi4kLG1vZGU6XCJmb3JtXCJ9LFg9YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6XCJlbGljaXRhdGlvbi9jcmVhdGVcIixwYXJhbXM6WX0sVjksUSk7aWYoWC5hY3Rpb249PT1cImFjY2VwdFwiJiZYLmNvbnRlbnQmJlkucmVxdWVzdGVkU2NoZW1hKXRyeXtsZXQgRz10aGlzLl9qc29uU2NoZW1hVmFsaWRhdG9yLmdldFZhbGlkYXRvcihZLnJlcXVlc3RlZFNjaGVtYSkoWC5jb250ZW50KTtpZighRy52YWxpZCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYEVsaWNpdGF0aW9uIHJlc3BvbnNlIGNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggcmVxdWVzdGVkIHNjaGVtYTogJHtHLmVycm9yTWVzc2FnZX1gKX1jYXRjaChXKXtpZihXIGluc3RhbmNlb2YgYyl0aHJvdyBXO3Rocm93IG5ldyBjKGQuSW50ZXJuYWxFcnJvcixgRXJyb3IgdmFsaWRhdGluZyBlbGljaXRhdGlvbiByZXNwb25zZTogJHtXIGluc3RhbmNlb2YgRXJyb3I/Vy5tZXNzYWdlOlN0cmluZyhXKX1gKX1yZXR1cm4gWH19fWNyZWF0ZUVsaWNpdGF0aW9uQ29tcGxldGlvbk5vdGlmaWVyKCQsUSl7aWYoIXRoaXMuX2NsaWVudENhcGFiaWxpdGllcz8uZWxpY2l0YXRpb24/LnVybCl0aHJvdyBFcnJvcihcIkNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IFVSTCBlbGljaXRhdGlvbiAocmVxdWlyZWQgZm9yIG5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGUpXCIpO3JldHVybigpPT50aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOlwibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZVwiLHBhcmFtczp7ZWxpY2l0YXRpb25JZDokfX0sUSl9YXN5bmMgbGlzdFJvb3RzKCQsUSl7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOlwicm9vdHMvbGlzdFwiLHBhcmFtczokfSxHQixRKX1hc3luYyBzZW5kTG9nZ2luZ01lc3NhZ2UoJCxRKXtpZih0aGlzLl9jYXBhYmlsaXRpZXMubG9nZ2luZyl7aWYoIXRoaXMuaXNNZXNzYWdlSWdub3JlZCgkLmxldmVsLFEpKXJldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOlwibm90aWZpY2F0aW9ucy9tZXNzYWdlXCIscGFyYW1zOiR9KX19YXN5bmMgc2VuZFJlc291cmNlVXBkYXRlZCgkKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDpcIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWRcIixwYXJhbXM6JH0pfWFzeW5jIHNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6XCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWRcIn0pfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQoKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDpcIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkXCJ9KX1hc3luYyBzZW5kUHJvbXB0TGlzdENoYW5nZWQoKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDpcIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWRcIn0pfX12YXIgdFA9U3ltYm9sLmZvcihcIm1jcC5jb21wbGV0YWJsZVwiKTtmdW5jdGlvbiBMeigkKXtyZXR1cm4hISQmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmdFAgaW4gJH1mdW5jdGlvbiBhUCgkKXtyZXR1cm4gJFt0UF0/LmNvbXBsZXRlfXZhciBvUDsoZnVuY3Rpb24oJCl7JC5Db21wbGV0YWJsZT1cIk1jcENvbXBsZXRhYmxlXCJ9KShvUHx8KG9QPXt9KSk7dmFyIEFzPS9eW0EtWmEtejAtOS5fLV17MSwxMjh9JC87ZnVuY3Rpb24gSXMoJCl7bGV0IFE9W107aWYoJC5sZW5ndGg9PT0wKXJldHVybntpc1ZhbGlkOiExLHdhcm5pbmdzOltcIlRvb2wgbmFtZSBjYW5ub3QgYmUgZW1wdHlcIl19O2lmKCQubGVuZ3RoPjEyOClyZXR1cm57aXNWYWxpZDohMSx3YXJuaW5nczpbYFRvb2wgbmFtZSBleGNlZWRzIG1heGltdW0gbGVuZ3RoIG9mIDEyOCBjaGFyYWN0ZXJzIChjdXJyZW50OiAkeyQubGVuZ3RofSlgXX07aWYoJC5pbmNsdWRlcyhcIiBcIikpUS5wdXNoKFwiVG9vbCBuYW1lIGNvbnRhaW5zIHNwYWNlcywgd2hpY2ggbWF5IGNhdXNlIHBhcnNpbmcgaXNzdWVzXCIpO2lmKCQuaW5jbHVkZXMoXCIsXCIpKVEucHVzaChcIlRvb2wgbmFtZSBjb250YWlucyBjb21tYXMsIHdoaWNoIG1heSBjYXVzZSBwYXJzaW5nIGlzc3Vlc1wiKTtpZigkLnN0YXJ0c1dpdGgoXCItXCIpfHwkLmVuZHNXaXRoKFwiLVwiKSlRLnB1c2goXCJUb29sIG5hbWUgc3RhcnRzIG9yIGVuZHMgd2l0aCBhIGRhc2gsIHdoaWNoIG1heSBjYXVzZSBwYXJzaW5nIGlzc3VlcyBpbiBzb21lIGNvbnRleHRzXCIpO2lmKCQuc3RhcnRzV2l0aChcIi5cIil8fCQuZW5kc1dpdGgoXCIuXCIpKVEucHVzaChcIlRvb2wgbmFtZSBzdGFydHMgb3IgZW5kcyB3aXRoIGEgZG90LCB3aGljaCBtYXkgY2F1c2UgcGFyc2luZyBpc3N1ZXMgaW4gc29tZSBjb250ZXh0c1wiKTtpZighQXMudGVzdCgkKSl7bGV0IEo9JC5zcGxpdChcIlwiKS5maWx0ZXIoKFkpPT4hL1tBLVphLXowLTkuXy1dLy50ZXN0KFkpKS5maWx0ZXIoKFksWCxXKT0+Vy5pbmRleE9mKFkpPT09WCk7cmV0dXJuIFEucHVzaChgVG9vbCBuYW1lIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogJHtKLm1hcCgoWSk9PmBcIiR7WX1cImApLmpvaW4oXCIsIFwiKX1gLFwiQWxsb3dlZCBjaGFyYWN0ZXJzIGFyZTogQS1aLCBhLXosIDAtOSwgdW5kZXJzY29yZSAoXyksIGRhc2ggKC0pLCBhbmQgZG90ICguKVwiKSx7aXNWYWxpZDohMSx3YXJuaW5nczpRfX1yZXR1cm57aXNWYWxpZDohMCx3YXJuaW5nczpRfX1mdW5jdGlvbiBScygkLFEpe2lmKFEubGVuZ3RoPjApe2NvbnNvbGUud2FybihgVG9vbCBuYW1lIHZhbGlkYXRpb24gd2FybmluZyBmb3IgXCIkeyR9XCI6YCk7Zm9yKGxldCBKIG9mIFEpY29uc29sZS53YXJuKGAgIC0gJHtKfWApO2NvbnNvbGUud2FybihcIlRvb2wgcmVnaXN0cmF0aW9uIHdpbGwgcHJvY2VlZCwgYnV0IHRoaXMgbWF5IGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzLlwiKSxjb25zb2xlLndhcm4oXCJDb25zaWRlciB1cGRhdGluZyB0aGUgdG9vbCBuYW1lIHRvIGNvbmZvcm0gdG8gdGhlIE1DUCB0b29sIG5hbWluZyBzdGFuZGFyZC5cIiksY29uc29sZS53YXJuKFwiU2VlIFNFUDogU3BlY2lmeSBGb3JtYXQgZm9yIFRvb2wgTmFtZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2RlbGNvbnRleHRwcm90b2NvbC9tb2RlbGNvbnRleHRwcm90b2NvbC9pc3N1ZXMvOTg2KSBmb3IgbW9yZSBkZXRhaWxzLlwiKX19ZnVuY3Rpb24ganooJCl7bGV0IFE9SXMoJCk7cmV0dXJuIFJzKCQsUS53YXJuaW5ncyksUS5pc1ZhbGlkfWNsYXNzIEF6e2NvbnN0cnVjdG9yKCQpe3RoaXMuX21jcFNlcnZlcj0kfXJlZ2lzdGVyVG9vbFRhc2soJCxRLEope2xldCBZPXt0YXNrU3VwcG9ydDpcInJlcXVpcmVkXCIsLi4uUS5leGVjdXRpb259O2lmKFkudGFza1N1cHBvcnQ9PT1cImZvcmJpZGRlblwiKXRocm93IEVycm9yKGBDYW5ub3QgcmVnaXN0ZXIgdGFzay1iYXNlZCB0b29sICckeyR9JyB3aXRoIHRhc2tTdXBwb3J0ICdmb3JiaWRkZW4nLiBVc2UgcmVnaXN0ZXJUb29sKCkgaW5zdGVhZC5gKTtyZXR1cm4gdGhpcy5fbWNwU2VydmVyLl9jcmVhdGVSZWdpc3RlcmVkVG9vbCgkLFEudGl0bGUsUS5kZXNjcmlwdGlvbixRLmlucHV0U2NoZW1hLFEub3V0cHV0U2NoZW1hLFEuYW5ub3RhdGlvbnMsWSxRLl9tZXRhLEopfX1jbGFzcyBSentjb25zdHJ1Y3RvcigkLFEpe3RoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZXM9e30sdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzPXt9LHRoaXMuX3JlZ2lzdGVyZWRUb29scz17fSx0aGlzLl9yZWdpc3RlcmVkUHJvbXB0cz17fSx0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMSx0aGlzLl9jb21wbGV0aW9uSGFuZGxlckluaXRpYWxpemVkPSExLHRoaXMuX3Jlc291cmNlSGFuZGxlcnNJbml0aWFsaXplZD0hMSx0aGlzLl9wcm9tcHRIYW5kbGVyc0luaXRpYWxpemVkPSExLHRoaXMuc2VydmVyPW5ldyBNeigkLFEpfWdldCBleHBlcmltZW50YWwoKXtpZighdGhpcy5fZXhwZXJpbWVudGFsKXRoaXMuX2V4cGVyaW1lbnRhbD17dGFza3M6bmV3IEF6KHRoaXMpfTtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudGFsfWFzeW5jIGNvbm5lY3QoJCl7cmV0dXJuIGF3YWl0IHRoaXMuc2VydmVyLmNvbm5lY3QoJCl9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLnNlcnZlci5jbG9zZSgpfXNldFRvb2xSZXF1ZXN0SGFuZGxlcnMoKXtpZih0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZClyZXR1cm47dGhpcy5zZXJ2ZXIuYXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIoYzEoelcpKSx0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMShxOSkpLHRoaXMuc2VydmVyLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoelcsKCk9Pih7dG9vbHM6T2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFssJF0pPT4kLmVuYWJsZWQpLm1hcCgoWyQsUV0pPT57bGV0IEo9e25hbWU6JCx0aXRsZTpRLnRpdGxlLGRlc2NyaXB0aW9uOlEuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6KCgpPT57bGV0IFk9WDkoUS5pbnB1dFNjaGVtYSk7cmV0dXJuIFk/QkIoWSx7c3RyaWN0VW5pb25zOiEwLHBpcGVTdHJhdGVneTpcImlucHV0XCJ9KTpQc30pKCksYW5ub3RhdGlvbnM6US5hbm5vdGF0aW9ucyxleGVjdXRpb246US5leGVjdXRpb24sX21ldGE6US5fbWV0YX07aWYoUS5vdXRwdXRTY2hlbWEpe2xldCBZPVg5KFEub3V0cHV0U2NoZW1hKTtpZihZKUoub3V0cHV0U2NoZW1hPUJCKFkse3N0cmljdFVuaW9uczohMCxwaXBlU3RyYXRlZ3k6XCJvdXRwdXRcIn0pfXJldHVybiBKfSl9KSksdGhpcy5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIocTksYXN5bmMoJCxRKT0+e3RyeXtsZXQgSj10aGlzLl9yZWdpc3RlcmVkVG9vbHNbJC5wYXJhbXMubmFtZV07aWYoIUopdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBUb29sICR7JC5wYXJhbXMubmFtZX0gbm90IGZvdW5kYCk7aWYoIUouZW5hYmxlZCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFRvb2wgJHskLnBhcmFtcy5uYW1lfSBkaXNhYmxlZGApO2xldCBZPSEhJC5wYXJhbXMudGFzayxYPUouZXhlY3V0aW9uPy50YXNrU3VwcG9ydCxXPVwiY3JlYXRlVGFza1wiaW4gSi5oYW5kbGVyO2lmKChYPT09XCJyZXF1aXJlZFwifHxYPT09XCJvcHRpb25hbFwiKSYmIVcpdGhyb3cgbmV3IGMoZC5JbnRlcm5hbEVycm9yLGBUb29sICR7JC5wYXJhbXMubmFtZX0gaGFzIHRhc2tTdXBwb3J0ICcke1h9JyBidXQgd2FzIG5vdCByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJUb29sVGFza2ApO2lmKFg9PT1cInJlcXVpcmVkXCImJiFZKXRocm93IG5ldyBjKGQuTWV0aG9kTm90Rm91bmQsYFRvb2wgJHskLnBhcmFtcy5uYW1lfSByZXF1aXJlcyB0YXNrIGF1Z21lbnRhdGlvbiAodGFza1N1cHBvcnQ6ICdyZXF1aXJlZCcpYCk7aWYoWD09PVwib3B0aW9uYWxcIiYmIVkmJlcpcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlQXV0b21hdGljVGFza1BvbGxpbmcoSiwkLFEpO2xldCBHPWF3YWl0IHRoaXMudmFsaWRhdGVUb29sSW5wdXQoSiwkLnBhcmFtcy5hcmd1bWVudHMsJC5wYXJhbXMubmFtZSksVT1hd2FpdCB0aGlzLmV4ZWN1dGVUb29sSGFuZGxlcihKLEcsUSk7aWYoWSlyZXR1cm4gVTtyZXR1cm4gYXdhaXQgdGhpcy52YWxpZGF0ZVRvb2xPdXRwdXQoSixVLCQucGFyYW1zLm5hbWUpLFV9Y2F0Y2goSil7aWYoSiBpbnN0YW5jZW9mIGMpe2lmKEouY29kZT09PWQuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCl0aHJvdyBKfXJldHVybiB0aGlzLmNyZWF0ZVRvb2xFcnJvcihKIGluc3RhbmNlb2YgRXJyb3I/Si5tZXNzYWdlOlN0cmluZyhKKSl9fSksdGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITB9Y3JlYXRlVG9vbEVycm9yKCQpe3JldHVybntjb250ZW50Olt7dHlwZTpcInRleHRcIix0ZXh0OiR9XSxpc0Vycm9yOiEwfX1hc3luYyB2YWxpZGF0ZVRvb2xJbnB1dCgkLFEsSil7aWYoISQuaW5wdXRTY2hlbWEpcmV0dXJuO2xldCBYPVg5KCQuaW5wdXRTY2hlbWEpPz8kLmlucHV0U2NoZW1hLFc9YXdhaXQgdjMoWCxRKTtpZighVy5zdWNjZXNzKXtsZXQgRz1cImVycm9yXCJpbiBXP1cuZXJyb3I6XCJVbmtub3duIGVycm9yXCIsVT1DMyhHKTt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYElucHV0IHZhbGlkYXRpb24gZXJyb3I6IEludmFsaWQgYXJndW1lbnRzIGZvciB0b29sICR7Sn06ICR7VX1gKX1yZXR1cm4gVy5kYXRhfWFzeW5jIHZhbGlkYXRlVG9vbE91dHB1dCgkLFEsSil7aWYoISQub3V0cHV0U2NoZW1hKXJldHVybjtpZighKFwiY29udGVudFwiaW4gUSkpcmV0dXJuO2lmKFEuaXNFcnJvcilyZXR1cm47aWYoIVEuc3RydWN0dXJlZENvbnRlbnQpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBPdXRwdXQgdmFsaWRhdGlvbiBlcnJvcjogVG9vbCAke0p9IGhhcyBhbiBvdXRwdXQgc2NoZW1hIGJ1dCBubyBzdHJ1Y3R1cmVkIGNvbnRlbnQgd2FzIHByb3ZpZGVkYCk7bGV0IFk9WDkoJC5vdXRwdXRTY2hlbWEpLFg9YXdhaXQgdjMoWSxRLnN0cnVjdHVyZWRDb250ZW50KTtpZighWC5zdWNjZXNzKXtsZXQgVz1cImVycm9yXCJpbiBYP1guZXJyb3I6XCJVbmtub3duIGVycm9yXCIsRz1DMyhXKTt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYE91dHB1dCB2YWxpZGF0aW9uIGVycm9yOiBJbnZhbGlkIHN0cnVjdHVyZWQgY29udGVudCBmb3IgdG9vbCAke0p9OiAke0d9YCl9fWFzeW5jIGV4ZWN1dGVUb29sSGFuZGxlcigkLFEsSil7bGV0IFk9JC5oYW5kbGVyO2lmKFwiY3JlYXRlVGFza1wiaW4gWSl7aWYoIUoudGFza1N0b3JlKXRocm93IEVycm9yKFwiTm8gdGFzayBzdG9yZSBwcm92aWRlZC5cIik7bGV0IFc9ey4uLkosdGFza1N0b3JlOkoudGFza1N0b3JlfTtpZigkLmlucHV0U2NoZW1hKXJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoWS5jcmVhdGVUYXNrKFEsVykpO2Vsc2UgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShZLmNyZWF0ZVRhc2soVykpfWlmKCQuaW5wdXRTY2hlbWEpcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShZKFEsSikpO2Vsc2UgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShZKEopKX1hc3luYyBoYW5kbGVBdXRvbWF0aWNUYXNrUG9sbGluZygkLFEsSil7aWYoIUoudGFza1N0b3JlKXRocm93IEVycm9yKFwiTm8gdGFzayBzdG9yZSBwcm92aWRlZCBmb3IgdGFzay1jYXBhYmxlIHRvb2wuXCIpO2xldCBZPWF3YWl0IHRoaXMudmFsaWRhdGVUb29sSW5wdXQoJCxRLnBhcmFtcy5hcmd1bWVudHMsUS5wYXJhbXMubmFtZSksWD0kLmhhbmRsZXIsVz17Li4uSix0YXNrU3RvcmU6Si50YXNrU3RvcmV9LEc9WT9hd2FpdCBQcm9taXNlLnJlc29sdmUoWC5jcmVhdGVUYXNrKFksVykpOmF3YWl0IFByb21pc2UucmVzb2x2ZShYLmNyZWF0ZVRhc2soVykpLFU9Ry50YXNrLnRhc2tJZCxIPUcudGFzayxxPUgucG9sbEludGVydmFsPz81MDAwO3doaWxlKEguc3RhdHVzIT09XCJjb21wbGV0ZWRcIiYmSC5zdGF0dXMhPT1cImZhaWxlZFwiJiZILnN0YXR1cyE9PVwiY2FuY2VsbGVkXCIpe2F3YWl0IG5ldyBQcm9taXNlKChCKT0+c2V0VGltZW91dChCLHEpKTtsZXQgVj1hd2FpdCBKLnRhc2tTdG9yZS5nZXRUYXNrKFUpO2lmKCFWKXRocm93IG5ldyBjKGQuSW50ZXJuYWxFcnJvcixgVGFzayAke1V9IG5vdCBmb3VuZCBkdXJpbmcgcG9sbGluZ2ApO0g9Vn1yZXR1cm4gYXdhaXQgSi50YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChVKX1zZXRDb21wbGV0aW9uUmVxdWVzdEhhbmRsZXIoKXtpZih0aGlzLl9jb21wbGV0aW9uSGFuZGxlckluaXRpYWxpemVkKXJldHVybjt0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMSh3VykpLHRoaXMuc2VydmVyLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHtjb21wbGV0aW9uczp7fX0pLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKHdXLGFzeW5jKCQpPT57c3dpdGNoKCQucGFyYW1zLnJlZi50eXBlKXtjYXNlXCJyZWYvcHJvbXB0XCI6cmV0dXJuIFBMKCQpLHRoaXMuaGFuZGxlUHJvbXB0Q29tcGxldGlvbigkLCQucGFyYW1zLnJlZik7Y2FzZVwicmVmL3Jlc291cmNlXCI6cmV0dXJuIEVMKCQpLHRoaXMuaGFuZGxlUmVzb3VyY2VDb21wbGV0aW9uKCQsJC5wYXJhbXMucmVmKTtkZWZhdWx0OnRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgSW52YWxpZCBjb21wbGV0aW9uIHJlZmVyZW5jZTogJHskLnBhcmFtcy5yZWZ9YCl9fSksdGhpcy5fY29tcGxldGlvbkhhbmRsZXJJbml0aWFsaXplZD0hMH1hc3luYyBoYW5kbGVQcm9tcHRDb21wbGV0aW9uKCQsUSl7bGV0IEo9dGhpcy5fcmVnaXN0ZXJlZFByb21wdHNbUS5uYW1lXTtpZighSil0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFByb21wdCAke1EubmFtZX0gbm90IGZvdW5kYCk7aWYoIUouZW5hYmxlZCl0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFByb21wdCAke1EubmFtZX0gZGlzYWJsZWRgKTtpZighSi5hcmdzU2NoZW1hKXJldHVybiB0SjtsZXQgWD1DMShKLmFyZ3NTY2hlbWEpPy5bJC5wYXJhbXMuYXJndW1lbnQubmFtZV07aWYoIUx6KFgpKXJldHVybiB0SjtsZXQgVz1hUChYKTtpZighVylyZXR1cm4gdEo7bGV0IEc9YXdhaXQgVygkLnBhcmFtcy5hcmd1bWVudC52YWx1ZSwkLnBhcmFtcy5jb250ZXh0KTtyZXR1cm4gZVAoRyl9YXN5bmMgaGFuZGxlUmVzb3VyY2VDb21wbGV0aW9uKCQsUSl7bGV0IEo9T2JqZWN0LnZhbHVlcyh0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXMpLmZpbmQoKFcpPT5XLnJlc291cmNlVGVtcGxhdGUudXJpVGVtcGxhdGUudG9TdHJpbmcoKT09PVEudXJpKTtpZighSil7aWYodGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tRLnVyaV0pcmV0dXJuIHRKO3Rocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgUmVzb3VyY2UgdGVtcGxhdGUgJHskLnBhcmFtcy5yZWYudXJpfSBub3QgZm91bmRgKX1sZXQgWT1KLnJlc291cmNlVGVtcGxhdGUuY29tcGxldGVDYWxsYmFjaygkLnBhcmFtcy5hcmd1bWVudC5uYW1lKTtpZighWSlyZXR1cm4gdEo7bGV0IFg9YXdhaXQgWSgkLnBhcmFtcy5hcmd1bWVudC52YWx1ZSwkLnBhcmFtcy5jb250ZXh0KTtyZXR1cm4gZVAoWCl9c2V0UmVzb3VyY2VSZXF1ZXN0SGFuZGxlcnMoKXtpZih0aGlzLl9yZXNvdXJjZUhhbmRsZXJzSW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKEhXKSksdGhpcy5zZXJ2ZXIuYXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIoYzEoS1cpKSx0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMShxVykpLHRoaXMuc2VydmVyLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHtyZXNvdXJjZXM6e2xpc3RDaGFuZ2VkOiEwfX0pLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKEhXLGFzeW5jKCQsUSk9PntsZXQgSj1PYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzKS5maWx0ZXIoKFtYLFddKT0+Vy5lbmFibGVkKS5tYXAoKFtYLFddKT0+KHt1cmk6WCxuYW1lOlcubmFtZSwuLi5XLm1ldGFkYXRhfSkpLFk9W107Zm9yKGxldCBYIG9mIE9iamVjdC52YWx1ZXModGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzKSl7aWYoIVgucmVzb3VyY2VUZW1wbGF0ZS5saXN0Q2FsbGJhY2spY29udGludWU7bGV0IFc9YXdhaXQgWC5yZXNvdXJjZVRlbXBsYXRlLmxpc3RDYWxsYmFjayhRKTtmb3IobGV0IEcgb2YgVy5yZXNvdXJjZXMpWS5wdXNoKHsuLi5YLm1ldGFkYXRhLC4uLkd9KX1yZXR1cm57cmVzb3VyY2VzOlsuLi5KLC4uLlldfX0pLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKEtXLGFzeW5jKCk9PntyZXR1cm57cmVzb3VyY2VUZW1wbGF0ZXM6T2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzKS5tYXAoKFtRLEpdKT0+KHtuYW1lOlEsdXJpVGVtcGxhdGU6Si5yZXNvdXJjZVRlbXBsYXRlLnVyaVRlbXBsYXRlLnRvU3RyaW5nKCksLi4uSi5tZXRhZGF0YX0pKX19KSx0aGlzLnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihxVyxhc3luYygkLFEpPT57bGV0IEo9bmV3IFVSTCgkLnBhcmFtcy51cmkpLFk9dGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tKLnRvU3RyaW5nKCldO2lmKFkpe2lmKCFZLmVuYWJsZWQpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBSZXNvdXJjZSAke0p9IGRpc2FibGVkYCk7cmV0dXJuIFkucmVhZENhbGxiYWNrKEosUSl9Zm9yKGxldCBYIG9mIE9iamVjdC52YWx1ZXModGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzKSl7bGV0IFc9WC5yZXNvdXJjZVRlbXBsYXRlLnVyaVRlbXBsYXRlLm1hdGNoKEoudG9TdHJpbmcoKSk7aWYoVylyZXR1cm4gWC5yZWFkQ2FsbGJhY2soSixXLFEpfXRocm93IG5ldyBjKGQuSW52YWxpZFBhcmFtcyxgUmVzb3VyY2UgJHtKfSBub3QgZm91bmRgKX0pLHRoaXMuX3Jlc291cmNlSGFuZGxlcnNJbml0aWFsaXplZD0hMH1zZXRQcm9tcHRSZXF1ZXN0SGFuZGxlcnMoKXtpZih0aGlzLl9wcm9tcHRIYW5kbGVyc0luaXRpYWxpemVkKXJldHVybjt0aGlzLnNlcnZlci5hc3NlcnRDYW5TZXRSZXF1ZXN0SGFuZGxlcihjMShWVykpLHRoaXMuc2VydmVyLmFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKGMxKEJXKSksdGhpcy5zZXJ2ZXIucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Byb21wdHM6e2xpc3RDaGFuZ2VkOiEwfX0pLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKFZXLCgpPT4oe3Byb21wdHM6T2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFByb21wdHMpLmZpbHRlcigoWywkXSk9PiQuZW5hYmxlZCkubWFwKChbJCxRXSk9PntyZXR1cm57bmFtZTokLHRpdGxlOlEudGl0bGUsZGVzY3JpcHRpb246US5kZXNjcmlwdGlvbixhcmd1bWVudHM6US5hcmdzU2NoZW1hP0VzKFEuYXJnc1NjaGVtYSk6dm9pZCAwfX0pfSkpLHRoaXMuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKEJXLGFzeW5jKCQsUSk9PntsZXQgSj10aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1skLnBhcmFtcy5uYW1lXTtpZighSil0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYFByb21wdCAkeyQucGFyYW1zLm5hbWV9IG5vdCBmb3VuZGApO2lmKCFKLmVuYWJsZWQpdGhyb3cgbmV3IGMoZC5JbnZhbGlkUGFyYW1zLGBQcm9tcHQgJHskLnBhcmFtcy5uYW1lfSBkaXNhYmxlZGApO2lmKEouYXJnc1NjaGVtYSl7bGV0IFk9WDkoSi5hcmdzU2NoZW1hKSxYPWF3YWl0IHYzKFksJC5wYXJhbXMuYXJndW1lbnRzKTtpZighWC5zdWNjZXNzKXtsZXQgVT1cImVycm9yXCJpbiBYP1guZXJyb3I6XCJVbmtub3duIGVycm9yXCIsSD1DMyhVKTt0aHJvdyBuZXcgYyhkLkludmFsaWRQYXJhbXMsYEludmFsaWQgYXJndW1lbnRzIGZvciBwcm9tcHQgJHskLnBhcmFtcy5uYW1lfTogJHtIfWApfWxldCBXPVguZGF0YSxHPUouY2FsbGJhY2s7cmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShHKFcsUSkpfWVsc2V7bGV0IFk9Si5jYWxsYmFjaztyZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFkoUSkpfX0pLHRoaXMuX3Byb21wdEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITB9cmVzb3VyY2UoJCxRLC4uLkope2xldCBZO2lmKHR5cGVvZiBKWzBdPT09XCJvYmplY3RcIilZPUouc2hpZnQoKTtsZXQgWD1KWzBdO2lmKHR5cGVvZiBRPT09XCJzdHJpbmdcIil7aWYodGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tRXSl0aHJvdyBFcnJvcihgUmVzb3VyY2UgJHtRfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgVz10aGlzLl9jcmVhdGVSZWdpc3RlcmVkUmVzb3VyY2UoJCx2b2lkIDAsUSxZLFgpO3JldHVybiB0aGlzLnNldFJlc291cmNlUmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUmVzb3VyY2VMaXN0Q2hhbmdlZCgpLFd9ZWxzZXtpZih0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXNbJF0pdGhyb3cgRXJyb3IoYFJlc291cmNlIHRlbXBsYXRlICR7JH0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IFc9dGhpcy5fY3JlYXRlUmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGUoJCx2b2lkIDAsUSxZLFgpO3JldHVybiB0aGlzLnNldFJlc291cmNlUmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUmVzb3VyY2VMaXN0Q2hhbmdlZCgpLFd9fXJlZ2lzdGVyUmVzb3VyY2UoJCxRLEosWSl7aWYodHlwZW9mIFE9PT1cInN0cmluZ1wiKXtpZih0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VzW1FdKXRocm93IEVycm9yKGBSZXNvdXJjZSAke1F9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBYPXRoaXMuX2NyZWF0ZVJlZ2lzdGVyZWRSZXNvdXJjZSgkLEoudGl0bGUsUSxKLFkpO3JldHVybiB0aGlzLnNldFJlc291cmNlUmVxdWVzdEhhbmRsZXJzKCksdGhpcy5zZW5kUmVzb3VyY2VMaXN0Q2hhbmdlZCgpLFh9ZWxzZXtpZih0aGlzLl9yZWdpc3RlcmVkUmVzb3VyY2VUZW1wbGF0ZXNbJF0pdGhyb3cgRXJyb3IoYFJlc291cmNlIHRlbXBsYXRlICR7JH0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IFg9dGhpcy5fY3JlYXRlUmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGUoJCxKLnRpdGxlLFEsSixZKTtyZXR1cm4gdGhpcy5zZXRSZXNvdXJjZVJlcXVlc3RIYW5kbGVycygpLHRoaXMuc2VuZFJlc291cmNlTGlzdENoYW5nZWQoKSxYfX1fY3JlYXRlUmVnaXN0ZXJlZFJlc291cmNlKCQsUSxKLFksWCl7bGV0IFc9e25hbWU6JCx0aXRsZTpRLG1ldGFkYXRhOlkscmVhZENhbGxiYWNrOlgsZW5hYmxlZDohMCxkaXNhYmxlOigpPT5XLnVwZGF0ZSh7ZW5hYmxlZDohMX0pLGVuYWJsZTooKT0+Vy51cGRhdGUoe2VuYWJsZWQ6ITB9KSxyZW1vdmU6KCk9PlcudXBkYXRlKHt1cmk6bnVsbH0pLHVwZGF0ZTooRyk9PntpZih0eXBlb2YgRy51cmk8XCJ1XCImJkcudXJpIT09Sil7aWYoZGVsZXRlIHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZXNbSl0sRy51cmkpdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tHLnVyaV09V31pZih0eXBlb2YgRy5uYW1lPFwidVwiKVcubmFtZT1HLm5hbWU7aWYodHlwZW9mIEcudGl0bGU8XCJ1XCIpVy50aXRsZT1HLnRpdGxlO2lmKHR5cGVvZiBHLm1ldGFkYXRhPFwidVwiKVcubWV0YWRhdGE9Ry5tZXRhZGF0YTtpZih0eXBlb2YgRy5jYWxsYmFjazxcInVcIilXLnJlYWRDYWxsYmFjaz1HLmNhbGxiYWNrO2lmKHR5cGVvZiBHLmVuYWJsZWQ8XCJ1XCIpVy5lbmFibGVkPUcuZW5hYmxlZDt0aGlzLnNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCl9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlc1tKXT1XLFd9X2NyZWF0ZVJlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlKCQsUSxKLFksWCl7bGV0IFc9e3Jlc291cmNlVGVtcGxhdGU6Six0aXRsZTpRLG1ldGFkYXRhOlkscmVhZENhbGxiYWNrOlgsZW5hYmxlZDohMCxkaXNhYmxlOigpPT5XLnVwZGF0ZSh7ZW5hYmxlZDohMX0pLGVuYWJsZTooKT0+Vy51cGRhdGUoe2VuYWJsZWQ6ITB9KSxyZW1vdmU6KCk9PlcudXBkYXRlKHtuYW1lOm51bGx9KSx1cGRhdGU6KEgpPT57aWYodHlwZW9mIEgubmFtZTxcInVcIiYmSC5uYW1lIT09JCl7aWYoZGVsZXRlIHRoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlc1skXSxILm5hbWUpdGhpcy5fcmVnaXN0ZXJlZFJlc291cmNlVGVtcGxhdGVzW0gubmFtZV09V31pZih0eXBlb2YgSC50aXRsZTxcInVcIilXLnRpdGxlPUgudGl0bGU7aWYodHlwZW9mIEgudGVtcGxhdGU8XCJ1XCIpVy5yZXNvdXJjZVRlbXBsYXRlPUgudGVtcGxhdGU7aWYodHlwZW9mIEgubWV0YWRhdGE8XCJ1XCIpVy5tZXRhZGF0YT1ILm1ldGFkYXRhO2lmKHR5cGVvZiBILmNhbGxiYWNrPFwidVwiKVcucmVhZENhbGxiYWNrPUguY2FsbGJhY2s7aWYodHlwZW9mIEguZW5hYmxlZDxcInVcIilXLmVuYWJsZWQ9SC5lbmFibGVkO3RoaXMuc2VuZFJlc291cmNlTGlzdENoYW5nZWQoKX19O3RoaXMuX3JlZ2lzdGVyZWRSZXNvdXJjZVRlbXBsYXRlc1skXT1XO2xldCBHPUoudXJpVGVtcGxhdGUudmFyaWFibGVOYW1lcztpZihBcnJheS5pc0FycmF5KEcpJiZHLnNvbWUoKEgpPT4hIUouY29tcGxldGVDYWxsYmFjayhIKSkpdGhpcy5zZXRDb21wbGV0aW9uUmVxdWVzdEhhbmRsZXIoKTtyZXR1cm4gV31fY3JlYXRlUmVnaXN0ZXJlZFByb21wdCgkLFEsSixZLFgpe2xldCBXPXt0aXRsZTpRLGRlc2NyaXB0aW9uOkosYXJnc1NjaGVtYTpZPT09dm9pZCAwP3ZvaWQgMDpDMChZKSxjYWxsYmFjazpYLGVuYWJsZWQ6ITAsZGlzYWJsZTooKT0+Vy51cGRhdGUoe2VuYWJsZWQ6ITF9KSxlbmFibGU6KCk9PlcudXBkYXRlKHtlbmFibGVkOiEwfSkscmVtb3ZlOigpPT5XLnVwZGF0ZSh7bmFtZTpudWxsfSksdXBkYXRlOihHKT0+e2lmKHR5cGVvZiBHLm5hbWU8XCJ1XCImJkcubmFtZSE9PSQpe2lmKGRlbGV0ZSB0aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1skXSxHLm5hbWUpdGhpcy5fcmVnaXN0ZXJlZFByb21wdHNbRy5uYW1lXT1XfWlmKHR5cGVvZiBHLnRpdGxlPFwidVwiKVcudGl0bGU9Ry50aXRsZTtpZih0eXBlb2YgRy5kZXNjcmlwdGlvbjxcInVcIilXLmRlc2NyaXB0aW9uPUcuZGVzY3JpcHRpb247aWYodHlwZW9mIEcuYXJnc1NjaGVtYTxcInVcIilXLmFyZ3NTY2hlbWE9QzAoRy5hcmdzU2NoZW1hKTtpZih0eXBlb2YgRy5jYWxsYmFjazxcInVcIilXLmNhbGxiYWNrPUcuY2FsbGJhY2s7aWYodHlwZW9mIEcuZW5hYmxlZDxcInVcIilXLmVuYWJsZWQ9Ry5lbmFibGVkO3RoaXMuc2VuZFByb21wdExpc3RDaGFuZ2VkKCl9fTtpZih0aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1skXT1XLFkpe2lmKE9iamVjdC52YWx1ZXMoWSkuc29tZSgoVSk9PntsZXQgSD1VIGluc3RhbmNlb2YgbzY/VS5fZGVmPy5pbm5lclR5cGU6VTtyZXR1cm4gTHooSCl9KSl0aGlzLnNldENvbXBsZXRpb25SZXF1ZXN0SGFuZGxlcigpfXJldHVybiBXfV9jcmVhdGVSZWdpc3RlcmVkVG9vbCgkLFEsSixZLFgsVyxHLFUsSCl7anooJCk7bGV0IHE9e3RpdGxlOlEsZGVzY3JpcHRpb246SixpbnB1dFNjaGVtYTpzUChZKSxvdXRwdXRTY2hlbWE6c1AoWCksYW5ub3RhdGlvbnM6VyxleGVjdXRpb246RyxfbWV0YTpVLGhhbmRsZXI6SCxlbmFibGVkOiEwLGRpc2FibGU6KCk9PnEudXBkYXRlKHtlbmFibGVkOiExfSksZW5hYmxlOigpPT5xLnVwZGF0ZSh7ZW5hYmxlZDohMH0pLHJlbW92ZTooKT0+cS51cGRhdGUoe25hbWU6bnVsbH0pLHVwZGF0ZTooVik9PntpZih0eXBlb2YgVi5uYW1lPFwidVwiJiZWLm5hbWUhPT0kKXtpZih0eXBlb2YgVi5uYW1lPT09XCJzdHJpbmdcIilqeihWLm5hbWUpO2lmKGRlbGV0ZSB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbJF0sVi5uYW1lKXRoaXMuX3JlZ2lzdGVyZWRUb29sc1tWLm5hbWVdPXF9aWYodHlwZW9mIFYudGl0bGU8XCJ1XCIpcS50aXRsZT1WLnRpdGxlO2lmKHR5cGVvZiBWLmRlc2NyaXB0aW9uPFwidVwiKXEuZGVzY3JpcHRpb249Vi5kZXNjcmlwdGlvbjtpZih0eXBlb2YgVi5wYXJhbXNTY2hlbWE8XCJ1XCIpcS5pbnB1dFNjaGVtYT1DMChWLnBhcmFtc1NjaGVtYSk7aWYodHlwZW9mIFYub3V0cHV0U2NoZW1hPFwidVwiKXEub3V0cHV0U2NoZW1hPUMwKFYub3V0cHV0U2NoZW1hKTtpZih0eXBlb2YgVi5jYWxsYmFjazxcInVcIilxLmhhbmRsZXI9Vi5jYWxsYmFjaztpZih0eXBlb2YgVi5hbm5vdGF0aW9uczxcInVcIilxLmFubm90YXRpb25zPVYuYW5ub3RhdGlvbnM7aWYodHlwZW9mIFYuX21ldGE8XCJ1XCIpcS5fbWV0YT1WLl9tZXRhO2lmKHR5cGVvZiBWLmVuYWJsZWQ8XCJ1XCIpcS5lbmFibGVkPVYuZW5hYmxlZDt0aGlzLnNlbmRUb29sTGlzdENoYW5nZWQoKX19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbJF09cSx0aGlzLnNldFRvb2xSZXF1ZXN0SGFuZGxlcnMoKSx0aGlzLnNlbmRUb29sTGlzdENoYW5nZWQoKSxxfXRvb2woJCwuLi5RKXtpZih0aGlzLl9yZWdpc3RlcmVkVG9vbHNbJF0pdGhyb3cgRXJyb3IoYFRvb2wgJHskfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgSixZLFgsVztpZih0eXBlb2YgUVswXT09PVwic3RyaW5nXCIpSj1RLnNoaWZ0KCk7aWYoUS5sZW5ndGg+MSl7bGV0IFU9UVswXTtpZihJeihVKSl7aWYoWT1RLnNoaWZ0KCksUS5sZW5ndGg+MSYmdHlwZW9mIFFbMF09PT1cIm9iamVjdFwiJiZRWzBdIT09bnVsbCYmIUl6KFFbMF0pKVc9US5zaGlmdCgpfWVsc2UgaWYodHlwZW9mIFU9PT1cIm9iamVjdFwiJiZVIT09bnVsbCl7aWYoT2JqZWN0LnZhbHVlcyhVKS5zb21lKChIKT0+dHlwZW9mIEg9PT1cIm9iamVjdFwiJiZIIT09bnVsbCkpdGhyb3cgRXJyb3IoYFRvb2wgJHskfSBleHBlY3RlZCBhIFpvZCBzY2hlbWEgb3IgVG9vbEFubm90YXRpb25zLCBidXQgcmVjZWl2ZWQgYW4gdW5yZWNvZ25pemVkIG9iamVjdGApO1c9US5zaGlmdCgpfX1sZXQgRz1RWzBdO3JldHVybiB0aGlzLl9jcmVhdGVSZWdpc3RlcmVkVG9vbCgkLHZvaWQgMCxKLFksWCxXLHt0YXNrU3VwcG9ydDpcImZvcmJpZGRlblwifSx2b2lkIDAsRyl9cmVnaXN0ZXJUb29sKCQsUSxKKXtpZih0aGlzLl9yZWdpc3RlcmVkVG9vbHNbJF0pdGhyb3cgRXJyb3IoYFRvb2wgJHskfSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXR7dGl0bGU6WSxkZXNjcmlwdGlvbjpYLGlucHV0U2NoZW1hOlcsb3V0cHV0U2NoZW1hOkcsYW5ub3RhdGlvbnM6VSxfbWV0YTpIfT1RO3JldHVybiB0aGlzLl9jcmVhdGVSZWdpc3RlcmVkVG9vbCgkLFksWCxXLEcsVSx7dGFza1N1cHBvcnQ6XCJmb3JiaWRkZW5cIn0sSCxKKX1wcm9tcHQoJCwuLi5RKXtpZih0aGlzLl9yZWdpc3RlcmVkUHJvbXB0c1skXSl0aHJvdyBFcnJvcihgUHJvbXB0ICR7JH0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IEo7aWYodHlwZW9mIFFbMF09PT1cInN0cmluZ1wiKUo9US5zaGlmdCgpO2xldCBZO2lmKFEubGVuZ3RoPjEpWT1RLnNoaWZ0KCk7bGV0IFg9UVswXSxXPXRoaXMuX2NyZWF0ZVJlZ2lzdGVyZWRQcm9tcHQoJCx2b2lkIDAsSixZLFgpO3JldHVybiB0aGlzLnNldFByb21wdFJlcXVlc3RIYW5kbGVycygpLHRoaXMuc2VuZFByb21wdExpc3RDaGFuZ2VkKCksV31yZWdpc3RlclByb21wdCgkLFEsSil7aWYodGhpcy5fcmVnaXN0ZXJlZFByb21wdHNbJF0pdGhyb3cgRXJyb3IoYFByb21wdCAkeyR9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldHt0aXRsZTpZLGRlc2NyaXB0aW9uOlgsYXJnc1NjaGVtYTpXfT1RLEc9dGhpcy5fY3JlYXRlUmVnaXN0ZXJlZFByb21wdCgkLFksWCxXLEopO3JldHVybiB0aGlzLnNldFByb21wdFJlcXVlc3RIYW5kbGVycygpLHRoaXMuc2VuZFByb21wdExpc3RDaGFuZ2VkKCksR31pc0Nvbm5lY3RlZCgpe3JldHVybiB0aGlzLnNlcnZlci50cmFuc3BvcnQhPT12b2lkIDB9YXN5bmMgc2VuZExvZ2dpbmdNZXNzYWdlKCQsUSl7cmV0dXJuIHRoaXMuc2VydmVyLnNlbmRMb2dnaW5nTWVzc2FnZSgkLFEpfXNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCl7aWYodGhpcy5pc0Nvbm5lY3RlZCgpKXRoaXMuc2VydmVyLnNlbmRSZXNvdXJjZUxpc3RDaGFuZ2VkKCl9c2VuZFRvb2xMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuaXNDb25uZWN0ZWQoKSl0aGlzLnNlcnZlci5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9c2VuZFByb21wdExpc3RDaGFuZ2VkKCl7aWYodGhpcy5pc0Nvbm5lY3RlZCgpKXRoaXMuc2VydmVyLnNlbmRQcm9tcHRMaXN0Q2hhbmdlZCgpfX12YXIgUHM9e3R5cGU6XCJvYmplY3RcIixwcm9wZXJ0aWVzOnt9fTtmdW5jdGlvbiAkRSgkKXtyZXR1cm4gJCE9PW51bGwmJnR5cGVvZiAkPT09XCJvYmplY3RcIiYmXCJwYXJzZVwiaW4gJCYmdHlwZW9mICQucGFyc2U9PT1cImZ1bmN0aW9uXCImJlwic2FmZVBhcnNlXCJpbiAkJiZ0eXBlb2YgJC5zYWZlUGFyc2U9PT1cImZ1bmN0aW9uXCJ9ZnVuY3Rpb24gUUUoJCl7cmV0dXJuXCJfZGVmXCJpbiAkfHxcIl96b2RcImluICR8fCRFKCQpfWZ1bmN0aW9uIEl6KCQpe2lmKHR5cGVvZiAkIT09XCJvYmplY3RcInx8JD09PW51bGwpcmV0dXJuITE7aWYoUUUoJCkpcmV0dXJuITE7aWYoT2JqZWN0LmtleXMoJCkubGVuZ3RoPT09MClyZXR1cm4hMDtyZXR1cm4gT2JqZWN0LnZhbHVlcygkKS5zb21lKCRFKX1mdW5jdGlvbiBzUCgkKXtpZighJClyZXR1cm47aWYoSXooJCkpcmV0dXJuIEMwKCQpO2lmKCFRRSgkKSl0aHJvdyBFcnJvcihcImlucHV0U2NoZW1hIG11c3QgYmUgYSBab2Qgc2NoZW1hIG9yIHJhdyBzaGFwZSwgcmVjZWl2ZWQgYW4gdW5yZWNvZ25pemVkIG9iamVjdFwiKTtyZXR1cm4gJH1mdW5jdGlvbiBFcygkKXtsZXQgUT1DMSgkKTtpZighUSlyZXR1cm5bXTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoUSkubWFwKChbSixZXSk9PntsZXQgWD1STShZKSxXPVBNKFkpO3JldHVybntuYW1lOkosZGVzY3JpcHRpb246WCxyZXF1aXJlZDohV319KX1mdW5jdGlvbiBjMSgkKXtsZXQgSj1DMSgkKT8ubWV0aG9kO2lmKCFKKXRocm93IEVycm9yKFwiU2NoZW1hIGlzIG1pc3NpbmcgYSBtZXRob2QgbGl0ZXJhbFwiKTtsZXQgWT1UMyhKKTtpZih0eXBlb2YgWT09PVwic3RyaW5nXCIpcmV0dXJuIFk7dGhyb3cgRXJyb3IoXCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZ1wiKX1mdW5jdGlvbiBlUCgkKXtyZXR1cm57Y29tcGxldGlvbjp7dmFsdWVzOiQuc2xpY2UoMCwxMDApLHRvdGFsOiQubGVuZ3RoLGhhc01vcmU6JC5sZW5ndGg+MTAwfX19dmFyIHRKPXtjb21wbGV0aW9uOnt2YWx1ZXM6W10saGFzTW9yZTohMX19O2Z1bmN0aW9uIGJzKCQsUSxKLFksWCl7bGV0IFc9e307aWYoWD8uc2VhcmNoSGludClXW1wiYW50aHJvcGljL3NlYXJjaEhpbnRcIl09WC5zZWFyY2hIaW50O2lmKFg/LmFsd2F5c0xvYWQpV1tcImFudGhyb3BpYy9hbHdheXNMb2FkXCJdPSEwO3JldHVybntuYW1lOiQsZGVzY3JpcHRpb246USxpbnB1dFNjaGVtYTpKLGhhbmRsZXI6WSxhbm5vdGF0aW9uczpYPy5hbm5vdGF0aW9ucyxfbWV0YTpPYmplY3Qua2V5cyhXKS5sZW5ndGg+MD9XOnZvaWQgMH19ZnVuY3Rpb24gX3MoJCl7bGV0IFE9bmV3IFJ6KHtuYW1lOiQubmFtZSx2ZXJzaW9uOiQudmVyc2lvbj8/XCIxLjAuMFwifSx7Y2FwYWJpbGl0aWVzOnt0b29sczokLnRvb2xzP3t9OnZvaWQgMH19KTtpZigkLnRvb2xzKSQudG9vbHMuZm9yRWFjaCgoSik9Pntmb3IobGV0IFkgb2YgT2JqZWN0LnZhbHVlcyhKLmlucHV0U2NoZW1hKSl7aWYoIVNzKFkpKWNvbnRpbnVlO2xldCBYPVkuZGVzY3JpcHRpb247aWYoWCYmIUE2LmhhcyhZKSlBNi5hZGQoWSx7ZGVzY3JpcHRpb246WH0pfVEucmVnaXN0ZXJUb29sKEoubmFtZSx7ZGVzY3JpcHRpb246Si5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpKLmlucHV0U2NoZW1hLGFubm90YXRpb25zOkouYW5ub3RhdGlvbnMsX21ldGE6JC5hbHdheXNMb2FkP3tcImFudGhyb3BpYy9hbHdheXNMb2FkXCI6ITAsLi4uSi5fbWV0YX06Si5fbWV0YX0sSi5oYW5kbGVyKX0pO3JldHVybnt0eXBlOlwic2RrXCIsbmFtZTokLm5hbWUsaW5zdGFuY2U6UX19ZnVuY3Rpb24gU3MoJCl7cmV0dXJuIHR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJlwiX3pvZFwiaW4gJH1mdW5jdGlvbiBfKCQpe2xldCBRO3JldHVybigpPT5RPz89JCgpfXZhciBKRT0xNTAwMCxrcz1fKCgpPT5LLm9iamVjdCh7c2Vzc2lvbl9pZDpLLnN0cmluZygpLHdzX3VybDpLLnN0cmluZygpLHdvcmtfZGlyOksuc3RyaW5nKCkub3B0aW9uYWwoKSxzZXNzaW9uX2tleTpLLnN0cmluZygpLm9wdGlvbmFsKCl9KSk7Y2xhc3MgWjQgZXh0ZW5kcyBFcnJvcntjb2RlO2NvbnN0cnVjdG9yKCQsUSl7c3VwZXIoJCk7dGhpcy5uYW1lPVwiRGlyZWN0Q29ubmVjdEVycm9yXCIsdGhpcy5jb2RlPVF9fWNsYXNzIFlFe29wdGlvbnM7d3M7c2Vzc2lvbklkO3dvcmtEaXI7YWJvcnRDb250cm9sbGVyO3JlYWR5U3RhdGU9ITE7Y2xvc2VkPSExO2V4aXRFcnJvcjttZXNzYWdlcz1uZXcgejA7cmVhZHlQcm9taXNlO3JlYWR5UmVzb2x2ZTtyZWFkeVJlamVjdDthYm9ydEhhbmRsZXI7cGFydGlhbENodW5rcz1bXTt0ZWxlbWV0cnlFbWl0dGVkPSExO2NvbnN0cnVjdG9yKCQpe3RoaXMub3B0aW9ucz0kO3RoaXMuYWJvcnRDb250cm9sbGVyPSQuYWJvcnRDb250cm9sbGVyPz9uZXcgQWJvcnRDb250cm9sbGVyLHRoaXMucmVhZHlQcm9taXNlPW5ldyBQcm9taXNlKChRLEopPT57dGhpcy5yZWFkeVJlc29sdmU9USx0aGlzLnJlYWR5UmVqZWN0PUp9KSx0aGlzLnJlYWR5UHJvbWlzZS5jYXRjaCgoKT0+e30pLHRoaXMuaW5pdGlhbGl6ZSgpfWdldCByZWFkeSgpe3JldHVybiB0aGlzLnJlYWR5UHJvbWlzZX1nZXRTZXNzaW9uSWQoKXtyZXR1cm4gdGhpcy5zZXNzaW9uSWR9Z2V0V29ya0Rpcigpe3JldHVybiB0aGlzLndvcmtEaXJ9YXN5bmMgaW5pdGlhbGl6ZSgpe2lmKHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKXt0aGlzLmZhaWxJbml0KG5ldyBxNihcIkNvbm5lY3Rpb24gYWJvcnRlZFwiKSk7cmV0dXJufXRoaXMuYWJvcnRIYW5kbGVyPSgpPT57dGhpcy5jbG9zZSgpLHRoaXMuZXhpdEVycm9yPW5ldyBxNihcIkNvbm5lY3Rpb24gYWJvcnRlZCBieSB1c2VyXCIpfSx0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsdGhpcy5hYm9ydEhhbmRsZXIpO2xldCAkO3RyeXtsZXQgWD1hd2FpdCBDcyh0aGlzLm9wdGlvbnMpO3RoaXMuc2Vzc2lvbklkPVguc2Vzc2lvbklkLHRoaXMud29ya0Rpcj1YLndvcmtEaXIsJD1YLndzVXJsfWNhdGNoKFgpe2xldCBXPUk0KFgpO2lmKCEoVyBpbnN0YW5jZW9mIHE2KSl7bGV0IEc9VyBpbnN0YW5jZW9mIFo0JiZXLmNvZGU/Vy5jb2RlOlwic2Vzc2lvbl9jcmVhdGVfZmFpbGVkXCI7dGhpcy5lbWl0VGVsZW1ldHJ5KFwiYmFkXCIsRyl9dGhpcy5mYWlsSW5pdChXKTtyZXR1cm59aWYodGhpcy5jbG9zZWQpe2lmKHRoaXMub3B0aW9ucy5kZWxldGVTZXNzaW9uT25DbG9zZSYmdGhpcy5zZXNzaW9uSWQpWEUodGhpcy5vcHRpb25zLnNlcnZlclVybCx0aGlzLnNlc3Npb25JZCx0aGlzLm9wdGlvbnMuYXV0aFRva2VuKTtyZXR1cm59bGV0IFE9e307aWYodGhpcy5vcHRpb25zLmF1dGhUb2tlbilRLmF1dGhvcml6YXRpb249YEJlYXJlciAke3RoaXMub3B0aW9ucy5hdXRoVG9rZW59YDtsZXQgSj1uZXcgV2ViU29ja2V0KCQse2hlYWRlcnM6UX0pO3RoaXMud3M9SjtsZXQgWT1zZXRUaW1lb3V0KChYLFcpPT57aWYoIVgucmVhZHlTdGF0ZSl7Vy5jbG9zZSgpO2xldCBHPW5ldyBaNChgV2ViU29ja2V0IGNvbm5lY3Rpb24gdGltZW91dCBhZnRlciAke0pFfW1zYCk7WC5leGl0RXJyb3I9RyxYLnJlYWR5UmVqZWN0Py4oRyksWC5lbWl0VGVsZW1ldHJ5KFwiYmFkXCIsXCJjb25uZWN0X3RpbWVvdXRcIil9fSxKRSx0aGlzLEopO0ouYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwoKT0+e2NsZWFyVGltZW91dChZKSx0aGlzLnJlYWR5U3RhdGU9ITAsWjYoYFtEaXJlY3RDb25uZWN0VHJhbnNwb3J0XSBDb25uZWN0ZWQgdG8gJHt0aGlzLm9wdGlvbnMuc2VydmVyVXJsfSwgc2Vzc2lvbj0ke3RoaXMuc2Vzc2lvbklkfWApLHRoaXMucmVhZHlSZXNvbHZlPy4oKSx0aGlzLmVtaXRUZWxlbWV0cnkoXCJva1wiKX0pLEouYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoWCk9PntsZXQgVz10eXBlb2YgWC5kYXRhPT09XCJzdHJpbmdcIj9YLmRhdGE6XCJcIjtpZihXLmluZGV4T2YoYFxuYCk9PT0tMSl7aWYoVyl0aGlzLnBhcnRpYWxDaHVua3MucHVzaChXKTtyZXR1cm59bGV0IEc9dGhpcy5wYXJ0aWFsQ2h1bmtzLmpvaW4oXCJcIikrVzt0aGlzLnBhcnRpYWxDaHVua3MubGVuZ3RoPTA7bGV0IFU9Ry5zcGxpdChgXG5gKSxIPVUucG9wKCk/P1wiXCI7aWYoSCl0aGlzLnBhcnRpYWxDaHVua3MucHVzaChIKTtmb3IobGV0IHEgb2YgVSl7aWYoIXEpY29udGludWU7bGV0IFY7dHJ5e1Y9bCQocSl9Y2F0Y2goQil7WjYoYERpcmVjdENvbm5lY3Q6IGRyb3BwZWQgbWFsZm9ybWVkIEpTT04gbGluZSAoJHtxLmxlbmd0aH0gYnl0ZXMpOiAke0J9YCk7Y29udGludWV9dGhpcy5tZXNzYWdlcy5lbnF1ZXVlKFYpfX0pLEouYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsKCk9PntjbGVhclRpbWVvdXQoWSk7bGV0IFg9bmV3IFo0KFwiV2ViU29ja2V0IGNvbm5lY3Rpb24gZXJyb3JcIik7aWYodGhpcy5leGl0RXJyb3I9WCx0aGlzLnJlYWR5UmVqZWN0Py4oWCksdGhpcy5tZXNzYWdlcy5kb25lKCksIXRoaXMucmVhZHlTdGF0ZSl0aGlzLmVtaXRUZWxlbWV0cnkoXCJiYWRcIixcIndzX2Vycm9yXCIpfSksSi5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwoWCk9PntsZXQgVz10aGlzLnJlYWR5U3RhdGU7dGhpcy5yZWFkeVN0YXRlPSExLHRoaXMuY2xvc2VkPSEwO2xldCBHPVguY29kZSE9PTEwMDAmJlguY29kZSE9PTEwMDE7aWYoRyYmIXRoaXMuZXhpdEVycm9yKXRoaXMuZXhpdEVycm9yPW5ldyBaNChgV2ViU29ja2V0IGNsb3NlZCBhYm5vcm1hbGx5OiAke1guY29kZX0gJHtYLnJlYXNvbn1gKTtpZih0aGlzLm1lc3NhZ2VzLmRvbmUoKSxXJiZHJiYhdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpdGhpcy5lbWl0VGVsZW1ldHJ5KFwic2FkXCIsXCJ3c19jbG9zZWRfYWJub3JtYWxseVwiKX0pfWVtaXRUZWxlbWV0cnkoJCxRKXtpZih0aGlzLnRlbGVtZXRyeUVtaXR0ZWQpcmV0dXJuO2lmKHRoaXMudGVsZW1ldHJ5RW1pdHRlZD0hMCwkPT09XCJva1wiKW03KFwidHJhbnNwb3J0X2RpcmVjdF9jb25uZWN0XCIpO2Vsc2UgaWYoJD09PVwiYmFkXCIpbDcoXCJ0cmFuc3BvcnRfZGlyZWN0X2Nvbm5lY3RcIixRPz9cInVua25vd25cIik7ZWxzZSBOMihcInRyYW5zcG9ydF9kaXJlY3RfY29ubmVjdFwiLFE/P1widW5rbm93blwiKX1mYWlsSW5pdCgkKXt0aGlzLmV4aXRFcnJvcj0kLHRoaXMuY2xvc2VkPSEwLHRoaXMucmVhZHlSZWplY3Q/LigkKSx0aGlzLm1lc3NhZ2VzLmRvbmUoKX1hc3luYyB3cml0ZSgkKXtpZih0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgcTYoXCJPcGVyYXRpb24gYWJvcnRlZFwiKTtpZighdGhpcy5yZWFkeVN0YXRlKWF3YWl0IHRoaXMucmVhZHlQcm9taXNlO2lmKCF0aGlzLndzfHx0aGlzLndzLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTil0aHJvdyBuZXcgWjQoXCJUcmFuc3BvcnQgaXMgbm90IHJlYWR5IGZvciB3cml0aW5nXCIpO3RoaXMud3Muc2VuZCgkKX1pc1JlYWR5KCl7cmV0dXJuIHRoaXMucmVhZHlTdGF0ZSYmdGhpcy53cz8ucmVhZHlTdGF0ZT09PVdlYlNvY2tldC5PUEVOfWVuZElucHV0KCl7fVtTeW1ib2wuZGlzcG9zZV0oKXt0aGlzLmNsb3NlKCl9Y2xvc2UoKXtpZih0aGlzLmNsb3NlZClyZXR1cm47aWYodGhpcy5jbG9zZWQ9ITAsdGhpcy5yZWFkeVN0YXRlPSExLHRoaXMuYWJvcnRIYW5kbGVyKXRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIix0aGlzLmFib3J0SGFuZGxlciksdGhpcy5hYm9ydEhhbmRsZXI9dm9pZCAwO2lmKCF0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCl0aGlzLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO2lmKHRoaXMud3MmJnRoaXMud3MucmVhZHlTdGF0ZT09PVdlYlNvY2tldC5PUEVOKXRoaXMud3MuY2xvc2UoMTAwMCxcIk5vcm1hbCBjbG9zdXJlXCIpO2lmKHRoaXMubWVzc2FnZXMuZG9uZSgpLHRoaXMub3B0aW9ucy5kZWxldGVTZXNzaW9uT25DbG9zZSYmdGhpcy5zZXNzaW9uSWQpWEUodGhpcy5vcHRpb25zLnNlcnZlclVybCx0aGlzLnNlc3Npb25JZCx0aGlzLm9wdGlvbnMuYXV0aFRva2VuKX1hc3luYypyZWFkTWVzc2FnZXMoKXtpZih5aWVsZCp0aGlzLm1lc3NhZ2VzLHRoaXMuZXhpdEVycm9yKXRocm93IHRoaXMuZXhpdEVycm9yfX1mdW5jdGlvbiB2cygkKXtpZigkLnN0YXJ0c1dpdGgoXCJjYzovL1wiKSl7bGV0IFk9JC5zbGljZSg1KSxYPW5ldyBVUkwoYGh0dHA6Ly8ke1l9YCksVz1YLnBhdGhuYW1lLnNsaWNlKDEpfHx2b2lkIDA7cmV0dXJue3NlcnZlclVybDpgaHR0cDovLyR7WC5ob3N0fWAsYXV0aFRva2VuOld9fWlmKCQuc3RhcnRzV2l0aChcImNjK3VuaXg6Ly9cIikpdGhyb3cgbmV3IFo0KFwiVW5peCBzb2NrZXQgY29ubmVjdCAoY2MrdW5peDovLykgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgU0RLIHRyYW5zcG9ydFwiKTtsZXQgUT0vXmh0dHBzPzpcXC9cXC8vaS50ZXN0KCQpPyQ6YGh0dHA6Ly8keyR9YCxKPW5ldyBVUkwoUSk7cmV0dXJue3NlcnZlclVybDpgJHtKLnByb3RvY29sfS8vJHtKLmhvc3R9YCxhdXRoVG9rZW46dm9pZCAwfX1hc3luYyBmdW5jdGlvbiBDcygkKXtsZXQgUT17XCJjb250ZW50LXR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIn07aWYoJC5hdXRoVG9rZW4pUS5hdXRob3JpemF0aW9uPWBCZWFyZXIgJHskLmF1dGhUb2tlbn1gO2xldCBKPXt9O2lmKCQuY3dkKUouY3dkPSQuY3dkO2lmKCQuc2Vzc2lvbktleSlKLnNlc3Npb25fa2V5PSQuc2Vzc2lvbktleTtpZigkLnBlcm1pc3Npb25Nb2RlKUoucGVybWlzc2lvbl9tb2RlPSQucGVybWlzc2lvbk1vZGU7bGV0IFk7dHJ5e1k9YXdhaXQgZmV0Y2goYCR7JC5zZXJ2ZXJVcmx9L3Nlc3Npb25zYCx7bWV0aG9kOlwiUE9TVFwiLGhlYWRlcnM6USxib2R5OkIkKEopfSl9Y2F0Y2goVyl7dGhyb3cgbmV3IFo0KGBGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXIgYXQgJHskLnNlcnZlclVybH06ICR7VyBpbnN0YW5jZW9mIEVycm9yP1cubWVzc2FnZTpTdHJpbmcoVyl9YCxcInNlc3Npb25fY3JlYXRlX2ZhaWxlZFwiKX1pZighWS5vayl7bGV0IFc9YXdhaXQgWS50ZXh0KCkuY2F0Y2goKCk9PlwiXCIpO3Rocm93IG5ldyBaNChgRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uOiAke1kuc3RhdHVzfSAke1kuc3RhdHVzVGV4dH0ke1c/YCBcdTIwMTQgJHtXfWA6XCJcIn1gLFwic2Vzc2lvbl9jcmVhdGVfZmFpbGVkXCIpfWxldCBYPWtzKCkuc2FmZVBhcnNlKGF3YWl0IFkuanNvbigpKTtpZighWC5zdWNjZXNzKXRocm93IG5ldyBaNChgSW52YWxpZCBzZXNzaW9uIHJlc3BvbnNlOiAke1guZXJyb3IubWVzc2FnZX1gLFwic2Vzc2lvbl9jcmVhdGVfaW52YWxpZF9yZXNwb25zZVwiKTtyZXR1cm57c2Vzc2lvbklkOlguZGF0YS5zZXNzaW9uX2lkLHdzVXJsOlguZGF0YS53c191cmwsd29ya0RpcjpYLmRhdGEud29ya19kaXJ9fWFzeW5jIGZ1bmN0aW9uIFhFKCQsUSxKKXtsZXQgWT17fTtpZihKKVkuYXV0aG9yaXphdGlvbj1gQmVhcmVyICR7Sn1gO3RyeXthd2FpdCBmZXRjaChgJHskfS9zZXNzaW9ucy8ke1F9YCx7bWV0aG9kOlwiREVMRVRFXCIsaGVhZGVyczpZfSl9Y2F0Y2h7fX1pbXBvcnR7cmVzb2x2ZSBhcyBMNiR9ZnJvbVwicGF0aFwiO2ltcG9ydHtqb2luIGFzIFM5fWZyb21cInBhdGhcIjtpbXBvcnR7ZGlybmFtZSBhcyBUc31mcm9tXCJwYXRoXCI7ZnVuY3Rpb24gYUooJCxRLEope2xldCBZPXhzKCk7aWYoIVkpcmV0dXJuO2xldCBYPXt0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLGxldmVsOiQsZXZlbnQ6USxkYXRhOko/P3t9fSxXPW0kKCksRz1CJChYKStgXG5gO3RyeXtXLmFwcGVuZEZpbGVTeW5jKFksRyl9Y2F0Y2h7dHJ5e1cubWtkaXJTeW5jKFRzKFkpKSxXLmFwcGVuZEZpbGVTeW5jKFksRyl9Y2F0Y2h7fX19ZnVuY3Rpb24geHMoKXtyZXR1cm4gcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfRElBR05PU1RJQ1NfRklMRX1mdW5jdGlvbiBmcygkKXtsZXR7YnVmZmVyOlEsYnl0ZXNSZWFkOkp9PW0kKCkucmVhZFN5bmMoJCx7bGVuZ3RoOjQwOTZ9KTtpZihKPT09MClyZXR1cm5cInV0ZjhcIjtpZihKPj0yKXtpZihRWzBdPT09MjU1JiZRWzFdPT09MjU0KXJldHVyblwidXRmMTZsZVwifWlmKEo+PTMmJlFbMF09PT0yMzkmJlFbMV09PT0xODcmJlFbMl09PT0xOTEpcmV0dXJuXCJ1dGY4XCI7cmV0dXJuXCJ1dGY4XCJ9ZnVuY3Rpb24geXMoJCl7bGV0IFE9MCxKPTA7Zm9yKGxldCBZPTA7WTwkLmxlbmd0aDtZKyspaWYoJFtZXT09PWBcbmApaWYoWT4wJiYkW1ktMV09PT1cIlxcclwiKVErKztlbHNlIEorKztyZXR1cm4gUT5KP1wiQ1JMRlwiOlwiTEZcIn1mdW5jdGlvbiBncygkKXtsZXQgUT1tJCgpLHtyZXNvbHZlZFBhdGg6Sixpc1N5bWxpbms6WX09TjUoUSwkKTtpZihZKVgkKGBSZWFkaW5nIHRocm91Z2ggc3ltbGluazogJHskfSAtPiAke0p9YCk7bGV0IFg9ZnMoSiksVz1RLnJlYWRGaWxlU3luYyhKLHtlbmNvZGluZzpYfSksRz15cyhXLnNsaWNlKDAsNDA5NikpO3JldHVybntjb250ZW50OlcucmVwbGFjZUFsbChgXFxyXG5gLGBcbmApLGVuY29kaW5nOlgsbGluZUVuZGluZ3M6R319ZnVuY3Rpb24gdTAoJCl7cmV0dXJuIGdzKCQpLmNvbnRlbnR9dmFyIFdFOyhmdW5jdGlvbigkKXskWyQubGluZUZlZWQ9MTBdPVwibGluZUZlZWRcIiwkWyQuY2FycmlhZ2VSZXR1cm49MTNdPVwiY2FycmlhZ2VSZXR1cm5cIiwkWyQuc3BhY2U9MzJdPVwic3BhY2VcIiwkWyQuXzA9NDhdPVwiXzBcIiwkWyQuXzE9NDldPVwiXzFcIiwkWyQuXzI9NTBdPVwiXzJcIiwkWyQuXzM9NTFdPVwiXzNcIiwkWyQuXzQ9NTJdPVwiXzRcIiwkWyQuXzU9NTNdPVwiXzVcIiwkWyQuXzY9NTRdPVwiXzZcIiwkWyQuXzc9NTVdPVwiXzdcIiwkWyQuXzg9NTZdPVwiXzhcIiwkWyQuXzk9NTddPVwiXzlcIiwkWyQuYT05N109XCJhXCIsJFskLmI9OThdPVwiYlwiLCRbJC5jPTk5XT1cImNcIiwkWyQuZD0xMDBdPVwiZFwiLCRbJC5lPTEwMV09XCJlXCIsJFskLmY9MTAyXT1cImZcIiwkWyQuZz0xMDNdPVwiZ1wiLCRbJC5oPTEwNF09XCJoXCIsJFskLmk9MTA1XT1cImlcIiwkWyQuaj0xMDZdPVwialwiLCRbJC5rPTEwN109XCJrXCIsJFskLmw9MTA4XT1cImxcIiwkWyQubT0xMDldPVwibVwiLCRbJC5uPTExMF09XCJuXCIsJFskLm89MTExXT1cIm9cIiwkWyQucD0xMTJdPVwicFwiLCRbJC5xPTExM109XCJxXCIsJFskLnI9MTE0XT1cInJcIiwkWyQucz0xMTVdPVwic1wiLCRbJC50PTExNl09XCJ0XCIsJFskLnU9MTE3XT1cInVcIiwkWyQudj0xMThdPVwidlwiLCRbJC53PTExOV09XCJ3XCIsJFskLng9MTIwXT1cInhcIiwkWyQueT0xMjFdPVwieVwiLCRbJC56PTEyMl09XCJ6XCIsJFskLkE9NjVdPVwiQVwiLCRbJC5CPTY2XT1cIkJcIiwkWyQuQz02N109XCJDXCIsJFskLkQ9NjhdPVwiRFwiLCRbJC5FPTY5XT1cIkVcIiwkWyQuRj03MF09XCJGXCIsJFskLkc9NzFdPVwiR1wiLCRbJC5IPTcyXT1cIkhcIiwkWyQuST03M109XCJJXCIsJFskLko9NzRdPVwiSlwiLCRbJC5LPTc1XT1cIktcIiwkWyQuTD03Nl09XCJMXCIsJFskLk09NzddPVwiTVwiLCRbJC5OPTc4XT1cIk5cIiwkWyQuTz03OV09XCJPXCIsJFskLlA9ODBdPVwiUFwiLCRbJC5RPTgxXT1cIlFcIiwkWyQuUj04Ml09XCJSXCIsJFskLlM9ODNdPVwiU1wiLCRbJC5UPTg0XT1cIlRcIiwkWyQuVT04NV09XCJVXCIsJFskLlY9ODZdPVwiVlwiLCRbJC5XPTg3XT1cIldcIiwkWyQuWD04OF09XCJYXCIsJFskLlk9ODldPVwiWVwiLCRbJC5aPTkwXT1cIlpcIiwkWyQuYXN0ZXJpc2s9NDJdPVwiYXN0ZXJpc2tcIiwkWyQuYmFja3NsYXNoPTkyXT1cImJhY2tzbGFzaFwiLCRbJC5jbG9zZUJyYWNlPTEyNV09XCJjbG9zZUJyYWNlXCIsJFskLmNsb3NlQnJhY2tldD05M109XCJjbG9zZUJyYWNrZXRcIiwkWyQuY29sb249NThdPVwiY29sb25cIiwkWyQuY29tbWE9NDRdPVwiY29tbWFcIiwkWyQuZG90PTQ2XT1cImRvdFwiLCRbJC5kb3VibGVRdW90ZT0zNF09XCJkb3VibGVRdW90ZVwiLCRbJC5taW51cz00NV09XCJtaW51c1wiLCRbJC5vcGVuQnJhY2U9MTIzXT1cIm9wZW5CcmFjZVwiLCRbJC5vcGVuQnJhY2tldD05MV09XCJvcGVuQnJhY2tldFwiLCRbJC5wbHVzPTQzXT1cInBsdXNcIiwkWyQuc2xhc2g9NDddPVwic2xhc2hcIiwkWyQuZm9ybUZlZWQ9MTJdPVwiZm9ybUZlZWRcIiwkWyQudGFiPTldPVwidGFiXCJ9KShXRXx8KFdFPXt9KSk7dmFyIHVzPUFycmF5KDIwKS5maWxsKDApLm1hcCgoJCxRKT0+e3JldHVyblwiIFwiLnJlcGVhdChRKX0pO3ZhciBtcz17XCIgXCI6e1wiXFxuXCI6QXJyYXkoMjAwKS5maWxsKDApLm1hcCgoJCxRKT0+e3JldHVybmBcbmArXCIgXCIucmVwZWF0KFEpfSksXCJcXHJcIjpBcnJheSgyMDApLmZpbGwoMCkubWFwKCgkLFEpPT57cmV0dXJuXCJcXHJcIitcIiBcIi5yZXBlYXQoUSl9KSxcIlxcclxcblwiOkFycmF5KDIwMCkuZmlsbCgwKS5tYXAoKCQsUSk9PntyZXR1cm5gXFxyXG5gK1wiIFwiLnJlcGVhdChRKX0pfSxcIlxcdFwiOntcIlxcblwiOkFycmF5KDIwMCkuZmlsbCgwKS5tYXAoKCQsUSk9PntyZXR1cm5gXG5gK1wiXFx0XCIucmVwZWF0KFEpfSksXCJcXHJcIjpBcnJheSgyMDApLmZpbGwoMCkubWFwKCgkLFEpPT57cmV0dXJuXCJcXHJcIitcIlxcdFwiLnJlcGVhdChRKX0pLFwiXFxyXFxuXCI6QXJyYXkoMjAwKS5maWxsKDApLm1hcCgoJCxRKT0+e3JldHVybmBcXHJcbmArXCJcXHRcIi5yZXBlYXQoUSl9KX19O3ZhciBVRTsoZnVuY3Rpb24oJCl7JC5ERUZBVUxUPXthbGxvd1RyYWlsaW5nQ29tbWE6ITF9fSkoVUV8fChVRT17fSkpO3ZhciBIRTsoZnVuY3Rpb24oJCl7JFskLk5vbmU9MF09XCJOb25lXCIsJFskLlVuZXhwZWN0ZWRFbmRPZkNvbW1lbnQ9MV09XCJVbmV4cGVjdGVkRW5kT2ZDb21tZW50XCIsJFskLlVuZXhwZWN0ZWRFbmRPZlN0cmluZz0yXT1cIlVuZXhwZWN0ZWRFbmRPZlN0cmluZ1wiLCRbJC5VbmV4cGVjdGVkRW5kT2ZOdW1iZXI9M109XCJVbmV4cGVjdGVkRW5kT2ZOdW1iZXJcIiwkWyQuSW52YWxpZFVuaWNvZGU9NF09XCJJbnZhbGlkVW5pY29kZVwiLCRbJC5JbnZhbGlkRXNjYXBlQ2hhcmFjdGVyPTVdPVwiSW52YWxpZEVzY2FwZUNoYXJhY3RlclwiLCRbJC5JbnZhbGlkQ2hhcmFjdGVyPTZdPVwiSW52YWxpZENoYXJhY3RlclwifSkoSEV8fChIRT17fSkpO3ZhciBLRTsoZnVuY3Rpb24oJCl7JFskLk9wZW5CcmFjZVRva2VuPTFdPVwiT3BlbkJyYWNlVG9rZW5cIiwkWyQuQ2xvc2VCcmFjZVRva2VuPTJdPVwiQ2xvc2VCcmFjZVRva2VuXCIsJFskLk9wZW5CcmFja2V0VG9rZW49M109XCJPcGVuQnJhY2tldFRva2VuXCIsJFskLkNsb3NlQnJhY2tldFRva2VuPTRdPVwiQ2xvc2VCcmFja2V0VG9rZW5cIiwkWyQuQ29tbWFUb2tlbj01XT1cIkNvbW1hVG9rZW5cIiwkWyQuQ29sb25Ub2tlbj02XT1cIkNvbG9uVG9rZW5cIiwkWyQuTnVsbEtleXdvcmQ9N109XCJOdWxsS2V5d29yZFwiLCRbJC5UcnVlS2V5d29yZD04XT1cIlRydWVLZXl3b3JkXCIsJFskLkZhbHNlS2V5d29yZD05XT1cIkZhbHNlS2V5d29yZFwiLCRbJC5TdHJpbmdMaXRlcmFsPTEwXT1cIlN0cmluZ0xpdGVyYWxcIiwkWyQuTnVtZXJpY0xpdGVyYWw9MTFdPVwiTnVtZXJpY0xpdGVyYWxcIiwkWyQuTGluZUNvbW1lbnRUcml2aWE9MTJdPVwiTGluZUNvbW1lbnRUcml2aWFcIiwkWyQuQmxvY2tDb21tZW50VHJpdmlhPTEzXT1cIkJsb2NrQ29tbWVudFRyaXZpYVwiLCRbJC5MaW5lQnJlYWtUcml2aWE9MTRdPVwiTGluZUJyZWFrVHJpdmlhXCIsJFskLlRyaXZpYT0xNV09XCJUcml2aWFcIiwkWyQuVW5rbm93bj0xNl09XCJVbmtub3duXCIsJFskLkVPRj0xN109XCJFT0ZcIn0pKEtFfHwoS0U9e30pKTt2YXIgcUU7KGZ1bmN0aW9uKCQpeyRbJC5JbnZhbGlkU3ltYm9sPTFdPVwiSW52YWxpZFN5bWJvbFwiLCRbJC5JbnZhbGlkTnVtYmVyRm9ybWF0PTJdPVwiSW52YWxpZE51bWJlckZvcm1hdFwiLCRbJC5Qcm9wZXJ0eU5hbWVFeHBlY3RlZD0zXT1cIlByb3BlcnR5TmFtZUV4cGVjdGVkXCIsJFskLlZhbHVlRXhwZWN0ZWQ9NF09XCJWYWx1ZUV4cGVjdGVkXCIsJFskLkNvbG9uRXhwZWN0ZWQ9NV09XCJDb2xvbkV4cGVjdGVkXCIsJFskLkNvbW1hRXhwZWN0ZWQ9Nl09XCJDb21tYUV4cGVjdGVkXCIsJFskLkNsb3NlQnJhY2VFeHBlY3RlZD03XT1cIkNsb3NlQnJhY2VFeHBlY3RlZFwiLCRbJC5DbG9zZUJyYWNrZXRFeHBlY3RlZD04XT1cIkNsb3NlQnJhY2tldEV4cGVjdGVkXCIsJFskLkVuZE9mRmlsZUV4cGVjdGVkPTldPVwiRW5kT2ZGaWxlRXhwZWN0ZWRcIiwkWyQuSW52YWxpZENvbW1lbnRUb2tlbj0xMF09XCJJbnZhbGlkQ29tbWVudFRva2VuXCIsJFskLlVuZXhwZWN0ZWRFbmRPZkNvbW1lbnQ9MTFdPVwiVW5leHBlY3RlZEVuZE9mQ29tbWVudFwiLCRbJC5VbmV4cGVjdGVkRW5kT2ZTdHJpbmc9MTJdPVwiVW5leHBlY3RlZEVuZE9mU3RyaW5nXCIsJFskLlVuZXhwZWN0ZWRFbmRPZk51bWJlcj0xM109XCJVbmV4cGVjdGVkRW5kT2ZOdW1iZXJcIiwkWyQuSW52YWxpZFVuaWNvZGU9MTRdPVwiSW52YWxpZFVuaWNvZGVcIiwkWyQuSW52YWxpZEVzY2FwZUNoYXJhY3Rlcj0xNV09XCJJbnZhbGlkRXNjYXBlQ2hhcmFjdGVyXCIsJFskLkludmFsaWRDaGFyYWN0ZXI9MTZdPVwiSW52YWxpZENoYXJhY3RlclwifSkocUV8fChxRT17fSkpO2Z1bmN0aW9uIEpHKCQpe3JldHVybiAkLnN0YXJ0c1dpdGgoXCJcXHVGRUZGXCIpPyQuc2xpY2UoMSk6JH1pbXBvcnQgZiQgZnJvbVwibm9kZTpwYXRoXCI7aW1wb3J0IFZFIGZyb21cIm5vZGU6b3NcIjtpbXBvcnQgUHogZnJvbVwibm9kZTpwcm9jZXNzXCI7dmFyIHAxPVZFLmhvbWVkaXIoKSxFej1WRS50bXBkaXIoKSx7ZW52Okk5fT1Qeixycz0oJCk9PntsZXQgUT1mJC5qb2luKHAxLFwiTGlicmFyeVwiKTtyZXR1cm57ZGF0YTpmJC5qb2luKFEsXCJBcHBsaWNhdGlvbiBTdXBwb3J0XCIsJCksY29uZmlnOmYkLmpvaW4oUSxcIlByZWZlcmVuY2VzXCIsJCksY2FjaGU6ZiQuam9pbihRLFwiQ2FjaGVzXCIsJCksbG9nOmYkLmpvaW4oUSxcIkxvZ3NcIiwkKSx0ZW1wOmYkLmpvaW4oRXosJCl9fSxvcz0oJCk9PntsZXQgUT1JOS5BUFBEQVRBfHxmJC5qb2luKHAxLFwiQXBwRGF0YVwiLFwiUm9hbWluZ1wiKSxKPUk5LkxPQ0FMQVBQREFUQXx8ZiQuam9pbihwMSxcIkFwcERhdGFcIixcIkxvY2FsXCIpO3JldHVybntkYXRhOmYkLmpvaW4oSiwkLFwiRGF0YVwiKSxjb25maWc6ZiQuam9pbihRLCQsXCJDb25maWdcIiksY2FjaGU6ZiQuam9pbihKLCQsXCJDYWNoZVwiKSxsb2c6ZiQuam9pbihKLCQsXCJMb2dcIiksdGVtcDpmJC5qb2luKEV6LCQpfX0sdHM9KCQpPT57bGV0IFE9ZiQuYmFzZW5hbWUocDEpO3JldHVybntkYXRhOmYkLmpvaW4oSTkuWERHX0RBVEFfSE9NRXx8ZiQuam9pbihwMSxcIi5sb2NhbFwiLFwic2hhcmVcIiksJCksY29uZmlnOmYkLmpvaW4oSTkuWERHX0NPTkZJR19IT01FfHxmJC5qb2luKHAxLFwiLmNvbmZpZ1wiKSwkKSxjYWNoZTpmJC5qb2luKEk5LlhER19DQUNIRV9IT01FfHxmJC5qb2luKHAxLFwiLmNhY2hlXCIpLCQpLGxvZzpmJC5qb2luKEk5LlhER19TVEFURV9IT01FfHxmJC5qb2luKHAxLFwiLmxvY2FsXCIsXCJzdGF0ZVwiKSwkKSx0ZW1wOmYkLmpvaW4oRXosUSwkKX19O2Z1bmN0aW9uIGJ6KCQse3N1ZmZpeDpRPVwibm9kZWpzXCJ9PXt9KXtpZih0eXBlb2YgJCE9PVwic3RyaW5nXCIpdGhyb3cgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZywgZ290ICR7dHlwZW9mICR9YCk7aWYoUSkkKz1gLSR7UX1gO2lmKFB6LnBsYXRmb3JtPT09XCJkYXJ3aW5cIilyZXR1cm4gcnMoJCk7aWYoUHoucGxhdGZvcm09PT1cIndpbjMyXCIpcmV0dXJuIG9zKCQpO3JldHVybiB0cygkKX12YXIgdTIkPWJ6KFwiY2xhdWRlLWNsaVwiKTtmdW5jdGlvbiBhcygpe2lmKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX0RJU0FCTEVfTk9ORVNTRU5USUFMX1RSQUZGSUMpcmV0dXJuXCJlc3NlbnRpYWwtdHJhZmZpY1wiO2lmKHByb2Nlc3MuZW52LkRJU0FCTEVfVEVMRU1FVFJZKXJldHVyblwibm8tdGVsZW1ldHJ5XCI7aWYoUiQocHJvY2Vzcy5lbnYuRE9fTk9UX1RSQUNLKSlyZXR1cm5cIm5vLXRlbGVtZXRyeVwiO3JldHVyblwiZGVmYXVsdFwifWZ1bmN0aW9uIEJFKCl7cmV0dXJuIGFzKCk9PT1cImVzc2VudGlhbC10cmFmZmljXCJ9dmFyIHNzPTEwMCxfej1bXTtmdW5jdGlvbiBlcygkKXtpZihfei5sZW5ndGg+PXNzKV96LnNoaWZ0KCk7X3oucHVzaCgkKX12YXIgJGU9W10sekU9bnVsbDt2YXIgVkQkPXYkKCgpPT57cmV0dXJuIHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0taGFyZC1mYWlsXCIpfSk7ZnVuY3Rpb24gWEcoJCl7bGV0IFE9STQoJCk7dHJ5e2lmKFIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1VTRV9CRURST0NLKXx8UiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfVVNFX1ZFUlRFWCl8fFIkKHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1VTRV9GT1VORFJZKXx8UiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfVVNFX0FOVEhST1BJQ19BV1MpfHxSJChwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9VU0VfTUFOVExFKXx8cHJvY2Vzcy5lbnYuRElTQUJMRV9FUlJPUl9SRVBPUlRJTkd8fEJFKCkpcmV0dXJuO2xldCBZPXtlcnJvcjpRLnN0YWNrfHxRLm1lc3NhZ2UsdGltZXN0YW1wOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX07aWYoZXMoWSksekU9PT1udWxsKXskZS5wdXNoKHt0eXBlOlwiZXJyb3JcIixlcnJvcjpRfSk7cmV0dXJufXpFLmxvZ0Vycm9yKFEpfWNhdGNoe319dmFyIFI5PXR5cGVvZiBwZXJmb3JtYW5jZT09PVwib2JqZWN0XCImJnBlcmZvcm1hbmNlJiZ0eXBlb2YgcGVyZm9ybWFuY2Uubm93PT09XCJmdW5jdGlvblwiP3BlcmZvcm1hbmNlOkRhdGUsd0U9bmV3IFNldCxTej10eXBlb2YgcHJvY2Vzcz09PVwib2JqZWN0XCImJiEhcHJvY2Vzcz9wcm9jZXNzOnt9LE9FPSgkLFEsSixZKT0+e3R5cGVvZiBTei5lbWl0V2FybmluZz09PVwiZnVuY3Rpb25cIj9Tei5lbWl0V2FybmluZygkLFEsSixZKTpjb25zb2xlLmVycm9yKGBbJHtKfV0gJHtRfTogJHskfWApfSxZRz1nbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlcixORT1nbG9iYWxUaGlzLkFib3J0U2lnbmFsO2lmKHR5cGVvZiBZRz5cInVcIil7TkU9Y2xhc3N7b25hYm9ydDtfb25hYm9ydD1bXTtyZWFzb247YWJvcnRlZD0hMTthZGRFdmVudExpc3RlbmVyKFksWCl7dGhpcy5fb25hYm9ydC5wdXNoKFgpfX0sWUc9Y2xhc3N7Y29uc3RydWN0b3IoKXtRKCl9c2lnbmFsPW5ldyBORTthYm9ydChZKXtpZih0aGlzLnNpZ25hbC5hYm9ydGVkKXJldHVybjt0aGlzLnNpZ25hbC5yZWFzb249WSx0aGlzLnNpZ25hbC5hYm9ydGVkPSEwO2ZvcihsZXQgWCBvZiB0aGlzLnNpZ25hbC5fb25hYm9ydClYKFkpO3RoaXMuc2lnbmFsLm9uYWJvcnQ/LihZKX19O2xldCAkPVN6LmVudj8uTFJVX0NBQ0hFX0lHTk9SRV9BQ19XQVJOSU5HIT09XCIxXCIsUT0oKT0+e2lmKCEkKXJldHVybjskPSExLE9FKFwiQWJvcnRDb250cm9sbGVyIGlzIG5vdCBkZWZpbmVkLiBJZiB1c2luZyBscnUtY2FjaGUgaW4gbm9kZSAxNCwgbG9hZCBhbiBBYm9ydENvbnRyb2xsZXIgcG9seWZpbGwgZnJvbSB0aGUgYG5vZGUtYWJvcnQtY29udHJvbGxlcmAgcGFja2FnZS4gQSBtaW5pbWFsIHBvbHlmaWxsIGlzIHByb3ZpZGVkIGZvciB1c2UgYnkgTFJVQ2FjaGUuZmV0Y2goKSwgYnV0IGl0IHNob3VsZCBub3QgYmUgcmVsaWVkIHVwb24gaW4gb3RoZXIgY29udGV4dHMgKGVnLCBwYXNzaW5nIGl0IHRvIG90aGVyIEFQSXMgdGhhdCB1c2UgQWJvcnRDb250cm9sbGVyL0Fib3J0U2lnbmFsIG1pZ2h0IGhhdmUgdW5kZXNpcmFibGUgZWZmZWN0cykuIFlvdSBtYXkgZGlzYWJsZSB0aGlzIHdpdGggTFJVX0NBQ0hFX0lHTk9SRV9BQ19XQVJOSU5HPTEgaW4gdGhlIGVudi5cIixcIk5PX0FCT1JUX0NPTlRST0xMRVJcIixcIkVOT1RTVVBcIixRKX19dmFyIFFlPSgkKT0+IXdFLmhhcygkKSx6RCQ9U3ltYm9sKFwidHlwZVwiKSxkMT0oJCk9PiQmJiQ9PT1NYXRoLmZsb29yKCQpJiYkPjAmJmlzRmluaXRlKCQpLERFPSgkKT0+IWQxKCQpP251bGw6JDw9TWF0aC5wb3coMiw4KT9VaW50OEFycmF5OiQ8PU1hdGgucG93KDIsMTYpP1VpbnQxNkFycmF5OiQ8PU1hdGgucG93KDIsMzIpP1VpbnQzMkFycmF5OiQ8PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSP3NKOm51bGw7Y2xhc3Mgc0ogZXh0ZW5kcyBBcnJheXtjb25zdHJ1Y3RvcigkKXtzdXBlcigkKTt0aGlzLmZpbGwoMCl9fWNsYXNzIFA5e2hlYXA7bGVuZ3RoO3N0YXRpYyNIPSExO3N0YXRpYyBjcmVhdGUoJCl7bGV0IFE9REUoJCk7aWYoIVEpcmV0dXJuW107UDkuI0g9ITA7bGV0IEo9bmV3IFA5KCQsUSk7cmV0dXJuIFA5LiNIPSExLEp9Y29uc3RydWN0b3IoJCxRKXtpZighUDkuI0gpdGhyb3cgVHlwZUVycm9yKFwiaW5zdGFudGlhdGUgU3RhY2sgdXNpbmcgU3RhY2suY3JlYXRlKG4pXCIpO3RoaXMuaGVhcD1uZXcgUSgkKSx0aGlzLmxlbmd0aD0wfXB1c2goJCl7dGhpcy5oZWFwW3RoaXMubGVuZ3RoKytdPSR9cG9wKCl7cmV0dXJuIHRoaXMuaGVhcFstLXRoaXMubGVuZ3RoXX19Y2xhc3MgV0d7I0g7I1Y7I3c7I087I1M7I2s7dHRsO3R0bFJlc29sdXRpb247dHRsQXV0b3B1cmdlO3VwZGF0ZUFnZU9uR2V0O3VwZGF0ZUFnZU9uSGFzO2FsbG93U3RhbGU7bm9EaXNwb3NlT25TZXQ7bm9VcGRhdGVUVEw7bWF4RW50cnlTaXplO3NpemVDYWxjdWxhdGlvbjtub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb247bm9EZWxldGVPblN0YWxlR2V0O2FsbG93U3RhbGVPbkZldGNoQWJvcnQ7YWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb247aWdub3JlRmV0Y2hBYm9ydDsjWTsjRDsjWDsjSjsjJDsjSzsjQjsjVTsjVzsjRjsjRzsjWjsjTTsjejsjTDsjUDsjcTtzdGF0aWMgdW5zYWZlRXhwb3NlSW50ZXJuYWxzKCQpe3JldHVybntzdGFydHM6JC4jTSx0dGxzOiQuI3osc2l6ZXM6JC4jWixrZXlNYXA6JC4jWCxrZXlMaXN0OiQuI0osdmFsTGlzdDokLiMkLG5leHQ6JC4jSyxwcmV2OiQuI0IsZ2V0IGhlYWQoKXtyZXR1cm4gJC4jVX0sZ2V0IHRhaWwoKXtyZXR1cm4gJC4jV30sZnJlZTokLiNGLGlzQmFja2dyb3VuZEZldGNoOihRKT0+JC4jUShRKSxiYWNrZ3JvdW5kRmV0Y2g6KFEsSixZLFgpPT4kLiNUKFEsSixZLFgpLG1vdmVUb1RhaWw6KFEpPT4kLiNfKFEpLGluZGV4ZXM6KFEpPT4kLiNqKFEpLHJpbmRleGVzOihRKT0+JC4jQShRKSxpc1N0YWxlOihRKT0+JC4jTihRKX19Z2V0IG1heCgpe3JldHVybiB0aGlzLiNIfWdldCBtYXhTaXplKCl7cmV0dXJuIHRoaXMuI1Z9Z2V0IGNhbGN1bGF0ZWRTaXplKCl7cmV0dXJuIHRoaXMuI0R9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jWX1nZXQgZmV0Y2hNZXRob2QoKXtyZXR1cm4gdGhpcy4jU31nZXQgbWVtb01ldGhvZCgpe3JldHVybiB0aGlzLiNrfWdldCBkaXNwb3NlKCl7cmV0dXJuIHRoaXMuI3d9Z2V0IGRpc3Bvc2VBZnRlcigpe3JldHVybiB0aGlzLiNPfWNvbnN0cnVjdG9yKCQpe2xldHttYXg6UT0wLHR0bDpKLHR0bFJlc29sdXRpb246WT0xLHR0bEF1dG9wdXJnZTpYLHVwZGF0ZUFnZU9uR2V0OlcsdXBkYXRlQWdlT25IYXM6RyxhbGxvd1N0YWxlOlUsZGlzcG9zZTpILGRpc3Bvc2VBZnRlcjpxLG5vRGlzcG9zZU9uU2V0OlYsbm9VcGRhdGVUVEw6QixtYXhTaXplOno9MCxtYXhFbnRyeVNpemU6Tj0wLHNpemVDYWxjdWxhdGlvbjp3LGZldGNoTWV0aG9kOk8sbWVtb01ldGhvZDpELG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjpNLG5vRGVsZXRlT25TdGFsZUdldDpqLGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkEsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDprLGlnbm9yZUZldGNoQWJvcnQ6dX09JDtpZihRIT09MCYmIWQxKFEpKXRocm93IFR5cGVFcnJvcihcIm1heCBvcHRpb24gbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXJcIik7bGV0IEckPVE/REUoUSk6QXJyYXk7aWYoIUckKXRocm93IEVycm9yKFwiaW52YWxpZCBtYXggdmFsdWU6IFwiK1EpO2lmKHRoaXMuI0g9USx0aGlzLiNWPXosdGhpcy5tYXhFbnRyeVNpemU9Tnx8dGhpcy4jVix0aGlzLnNpemVDYWxjdWxhdGlvbj13LHRoaXMuc2l6ZUNhbGN1bGF0aW9uKXtpZighdGhpcy4jViYmIXRoaXMubWF4RW50cnlTaXplKXRocm93IFR5cGVFcnJvcihcImNhbm5vdCBzZXQgc2l6ZUNhbGN1bGF0aW9uIHdpdGhvdXQgc2V0dGluZyBtYXhTaXplIG9yIG1heEVudHJ5U2l6ZVwiKTtpZih0eXBlb2YgdGhpcy5zaXplQ2FsY3VsYXRpb24hPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKFwic2l6ZUNhbGN1bGF0aW9uIHNldCB0byBub24tZnVuY3Rpb25cIil9aWYoRCE9PXZvaWQgMCYmdHlwZW9mIEQhPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKFwibWVtb01ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgZGVmaW5lZFwiKTtpZih0aGlzLiNrPUQsTyE9PXZvaWQgMCYmdHlwZW9mIE8hPT1cImZ1bmN0aW9uXCIpdGhyb3cgVHlwZUVycm9yKFwiZmV0Y2hNZXRob2QgbXVzdCBiZSBhIGZ1bmN0aW9uIGlmIHNwZWNpZmllZFwiKTtpZih0aGlzLiNTPU8sdGhpcy4jUD0hIU8sdGhpcy4jWD1uZXcgTWFwLHRoaXMuI0o9QXJyYXkoUSkuZmlsbCh2b2lkIDApLHRoaXMuIyQ9QXJyYXkoUSkuZmlsbCh2b2lkIDApLHRoaXMuI0s9bmV3IEckKFEpLHRoaXMuI0I9bmV3IEckKFEpLHRoaXMuI1U9MCx0aGlzLiNXPTAsdGhpcy4jRj1QOS5jcmVhdGUoUSksdGhpcy4jWT0wLHRoaXMuI0Q9MCx0eXBlb2YgSD09PVwiZnVuY3Rpb25cIil0aGlzLiN3PUg7aWYodHlwZW9mIHE9PT1cImZ1bmN0aW9uXCIpdGhpcy4jTz1xLHRoaXMuI0c9W107ZWxzZSB0aGlzLiNPPXZvaWQgMCx0aGlzLiNHPXZvaWQgMDtpZih0aGlzLiNMPSEhdGhpcy4jdyx0aGlzLiNxPSEhdGhpcy4jTyx0aGlzLm5vRGlzcG9zZU9uU2V0PSEhVix0aGlzLm5vVXBkYXRlVFRMPSEhQix0aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbj0hIU0sdGhpcy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbj0hIUEsdGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0PSEhayx0aGlzLmlnbm9yZUZldGNoQWJvcnQ9ISF1LHRoaXMubWF4RW50cnlTaXplIT09MCl7aWYodGhpcy4jViE9PTApe2lmKCFkMSh0aGlzLiNWKSl0aHJvdyBUeXBlRXJyb3IoXCJtYXhTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZFwiKX1pZighZDEodGhpcy5tYXhFbnRyeVNpemUpKXRocm93IFR5cGVFcnJvcihcIm1heEVudHJ5U2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWRcIik7dGhpcy4jbSgpfWlmKHRoaXMuYWxsb3dTdGFsZT0hIVUsdGhpcy5ub0RlbGV0ZU9uU3RhbGVHZXQ9ISFqLHRoaXMudXBkYXRlQWdlT25HZXQ9ISFXLHRoaXMudXBkYXRlQWdlT25IYXM9ISFHLHRoaXMudHRsUmVzb2x1dGlvbj1kMShZKXx8WT09PTA/WToxLHRoaXMudHRsQXV0b3B1cmdlPSEhWCx0aGlzLnR0bD1KfHwwLHRoaXMudHRsKXtpZighZDEodGhpcy50dGwpKXRocm93IFR5cGVFcnJvcihcInR0bCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWRcIik7dGhpcy4jeCgpfWlmKHRoaXMuI0g9PT0wJiZ0aGlzLnR0bD09PTAmJnRoaXMuI1Y9PT0wKXRocm93IFR5cGVFcnJvcihcIkF0IGxlYXN0IG9uZSBvZiBtYXgsIG1heFNpemUsIG9yIHR0bCBpcyByZXF1aXJlZFwiKTtpZighdGhpcy50dGxBdXRvcHVyZ2UmJiF0aGlzLiNIJiYhdGhpcy4jVil7aWYoUWUoXCJMUlVfQ0FDSEVfVU5CT1VOREVEXCIpKXdFLmFkZChcIkxSVV9DQUNIRV9VTkJPVU5ERURcIiksT0UoXCJUVEwgY2FjaGluZyB3aXRob3V0IHR0bEF1dG9wdXJnZSwgbWF4LCBvciBtYXhTaXplIGNhbiByZXN1bHQgaW4gdW5ib3VuZGVkIG1lbW9yeSBjb25zdW1wdGlvbi5cIixcIlVuYm91bmRlZENhY2hlV2FybmluZ1wiLFwiTFJVX0NBQ0hFX1VOQk9VTkRFRFwiLFdHKX19Z2V0UmVtYWluaW5nVFRMKCQpe3JldHVybiB0aGlzLiNYLmhhcygkKT8xLzA6MH0jeCgpe2xldCAkPW5ldyBzSih0aGlzLiNIKSxRPW5ldyBzSih0aGlzLiNIKTt0aGlzLiN6PSQsdGhpcy4jTT1RLHRoaXMuI2Y9KFgsVyxHPVI5Lm5vdygpKT0+e2lmKFFbWF09VyE9PTA/RzowLCRbWF09VyxXIT09MCYmdGhpcy50dGxBdXRvcHVyZ2Upe2xldCBVPXNldFRpbWVvdXQoKCk9PntpZih0aGlzLiNOKFgpKXRoaXMuI0kodGhpcy4jSltYXSxcImV4cGlyZVwiKX0sVysxKTtpZihVLnVucmVmKVUudW5yZWYoKX19LHRoaXMuI0U9KFgpPT57UVtYXT0kW1hdIT09MD9SOS5ub3coKTowfSx0aGlzLiNSPShYLFcpPT57aWYoJFtXXSl7bGV0IEc9JFtXXSxVPVFbV107aWYoIUd8fCFVKXJldHVybjtYLnR0bD1HLFguc3RhcnQ9VSxYLm5vdz1KfHxZKCk7bGV0IEg9WC5ub3ctVTtYLnJlbWFpbmluZ1RUTD1HLUh9fTtsZXQgSj0wLFk9KCk9PntsZXQgWD1SOS5ub3coKTtpZih0aGlzLnR0bFJlc29sdXRpb24+MCl7Sj1YO2xldCBXPXNldFRpbWVvdXQoKCk9Pko9MCx0aGlzLnR0bFJlc29sdXRpb24pO2lmKFcudW5yZWYpVy51bnJlZigpfXJldHVybiBYfTt0aGlzLmdldFJlbWFpbmluZ1RUTD0oWCk9PntsZXQgVz10aGlzLiNYLmdldChYKTtpZihXPT09dm9pZCAwKXJldHVybiAwO2xldCBHPSRbV10sVT1RW1ddO2lmKCFHfHwhVSlyZXR1cm4gMS8wO2xldCBIPShKfHxZKCkpLVU7cmV0dXJuIEctSH0sdGhpcy4jTj0oWCk9PntsZXQgVz1RW1hdLEc9JFtYXTtyZXR1cm4hIUcmJiEhVyYmKEp8fFkoKSktVz5HfX0jRT0oKT0+e307I1I9KCk9Pnt9OyNmPSgpPT57fTsjTj0oKT0+ITE7I20oKXtsZXQgJD1uZXcgc0oodGhpcy4jSCk7dGhpcy4jRD0wLHRoaXMuI1o9JCx0aGlzLiNiPShRKT0+e3RoaXMuI0QtPSRbUV0sJFtRXT0wfSx0aGlzLiN5PShRLEosWSxYKT0+e2lmKHRoaXMuI1EoSikpcmV0dXJuIDA7aWYoIWQxKFkpKWlmKFgpe2lmKHR5cGVvZiBYIT09XCJmdW5jdGlvblwiKXRocm93IFR5cGVFcnJvcihcInNpemVDYWxjdWxhdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb25cIik7aWYoWT1YKEosUSksIWQxKFkpKXRocm93IFR5cGVFcnJvcihcInNpemVDYWxjdWxhdGlvbiByZXR1cm4gaW52YWxpZCAoZXhwZWN0IHBvc2l0aXZlIGludGVnZXIpXCIpfWVsc2UgdGhyb3cgVHlwZUVycm9yKFwiaW52YWxpZCBzaXplIHZhbHVlIChtdXN0IGJlIHBvc2l0aXZlIGludGVnZXIpLiBXaGVuIG1heFNpemUgb3IgbWF4RW50cnlTaXplIGlzIHVzZWQsIHNpemVDYWxjdWxhdGlvbiBvciBzaXplIG11c3QgYmUgc2V0LlwiKTtyZXR1cm4gWX0sdGhpcy4jdj0oUSxKLFkpPT57aWYoJFtRXT1KLHRoaXMuI1Ype2xldCBYPXRoaXMuI1YtJFtRXTt3aGlsZSh0aGlzLiNEPlgpdGhpcy4jQyghMCl9aWYodGhpcy4jRCs9JFtRXSxZKVkuZW50cnlTaXplPUosWS50b3RhbENhbGN1bGF0ZWRTaXplPXRoaXMuI0R9fSNiPSgkKT0+e307I3Y9KCQsUSxKKT0+e307I3k9KCQsUSxKLFkpPT57aWYoSnx8WSl0aHJvdyBUeXBlRXJyb3IoXCJjYW5ub3Qgc2V0IHNpemUgd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplIG9uIGNhY2hlXCIpO3JldHVybiAwfTsqI2ooe2FsbG93U3RhbGU6JD10aGlzLmFsbG93U3RhbGV9PXt9KXtpZih0aGlzLiNZKWZvcihsZXQgUT10aGlzLiNXOzspe2lmKCF0aGlzLiNnKFEpKWJyZWFrO2lmKCR8fCF0aGlzLiNOKFEpKXlpZWxkIFE7aWYoUT09PXRoaXMuI1UpYnJlYWs7ZWxzZSBRPXRoaXMuI0JbUV19fSojQSh7YWxsb3dTdGFsZTokPXRoaXMuYWxsb3dTdGFsZX09e30pe2lmKHRoaXMuI1kpZm9yKGxldCBRPXRoaXMuI1U7Oyl7aWYoIXRoaXMuI2coUSkpYnJlYWs7aWYoJHx8IXRoaXMuI04oUSkpeWllbGQgUTtpZihRPT09dGhpcy4jVylicmVhaztlbHNlIFE9dGhpcy4jS1tRXX19I2coJCl7cmV0dXJuICQhPT12b2lkIDAmJnRoaXMuI1guZ2V0KHRoaXMuI0pbJF0pPT09JH0qZW50cmllcygpe2ZvcihsZXQgJCBvZiB0aGlzLiNqKCkpaWYodGhpcy4jJFskXSE9PXZvaWQgMCYmdGhpcy4jSlskXSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGRbdGhpcy4jSlskXSx0aGlzLiMkWyRdXX0qcmVudHJpZXMoKXtmb3IobGV0ICQgb2YgdGhpcy4jQSgpKWlmKHRoaXMuIyRbJF0hPT12b2lkIDAmJnRoaXMuI0pbJF0hPT12b2lkIDAmJiF0aGlzLiNRKHRoaXMuIyRbJF0pKXlpZWxkW3RoaXMuI0pbJF0sdGhpcy4jJFskXV19KmtleXMoKXtmb3IobGV0ICQgb2YgdGhpcy4jaigpKXtsZXQgUT10aGlzLiNKWyRdO2lmKFEhPT12b2lkIDAmJiF0aGlzLiNRKHRoaXMuIyRbJF0pKXlpZWxkIFF9fSpya2V5cygpe2ZvcihsZXQgJCBvZiB0aGlzLiNBKCkpe2xldCBRPXRoaXMuI0pbJF07aWYoUSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGQgUX19KnZhbHVlcygpe2ZvcihsZXQgJCBvZiB0aGlzLiNqKCkpaWYodGhpcy4jJFskXSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGQgdGhpcy4jJFskXX0qcnZhbHVlcygpe2ZvcihsZXQgJCBvZiB0aGlzLiNBKCkpaWYodGhpcy4jJFskXSE9PXZvaWQgMCYmIXRoaXMuI1EodGhpcy4jJFskXSkpeWllbGQgdGhpcy4jJFskXX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX1bU3ltYm9sLnRvU3RyaW5nVGFnXT1cIkxSVUNhY2hlXCI7ZmluZCgkLFE9e30pe2ZvcihsZXQgSiBvZiB0aGlzLiNqKCkpe2xldCBZPXRoaXMuIyRbSl0sWD10aGlzLiNRKFkpP1kuX19zdGFsZVdoaWxlRmV0Y2hpbmc6WTtpZihYPT09dm9pZCAwKWNvbnRpbnVlO2lmKCQoWCx0aGlzLiNKW0pdLHRoaXMpKXJldHVybiB0aGlzLmdldCh0aGlzLiNKW0pdLFEpfX1mb3JFYWNoKCQsUT10aGlzKXtmb3IobGV0IEogb2YgdGhpcy4jaigpKXtsZXQgWT10aGlzLiMkW0pdLFg9dGhpcy4jUShZKT9ZLl9fc3RhbGVXaGlsZUZldGNoaW5nOlk7aWYoWD09PXZvaWQgMCljb250aW51ZTskLmNhbGwoUSxYLHRoaXMuI0pbSl0sdGhpcyl9fXJmb3JFYWNoKCQsUT10aGlzKXtmb3IobGV0IEogb2YgdGhpcy4jQSgpKXtsZXQgWT10aGlzLiMkW0pdLFg9dGhpcy4jUShZKT9ZLl9fc3RhbGVXaGlsZUZldGNoaW5nOlk7aWYoWD09PXZvaWQgMCljb250aW51ZTskLmNhbGwoUSxYLHRoaXMuI0pbSl0sdGhpcyl9fXB1cmdlU3RhbGUoKXtsZXQgJD0hMTtmb3IobGV0IFEgb2YgdGhpcy4jQSh7YWxsb3dTdGFsZTohMH0pKWlmKHRoaXMuI04oUSkpdGhpcy4jSSh0aGlzLiNKW1FdLFwiZXhwaXJlXCIpLCQ9ITA7cmV0dXJuICR9aW5mbygkKXtsZXQgUT10aGlzLiNYLmdldCgkKTtpZihRPT09dm9pZCAwKXJldHVybjtsZXQgSj10aGlzLiMkW1FdLFk9dGhpcy4jUShKKT9KLl9fc3RhbGVXaGlsZUZldGNoaW5nOko7aWYoWT09PXZvaWQgMClyZXR1cm47bGV0IFg9e3ZhbHVlOll9O2lmKHRoaXMuI3omJnRoaXMuI00pe2xldCBXPXRoaXMuI3pbUV0sRz10aGlzLiNNW1FdO2lmKFcmJkcpe2xldCBVPVctKFI5Lm5vdygpLUcpO1gudHRsPVUsWC5zdGFydD1EYXRlLm5vdygpfX1pZih0aGlzLiNaKVguc2l6ZT10aGlzLiNaW1FdO3JldHVybiBYfWR1bXAoKXtsZXQgJD1bXTtmb3IobGV0IFEgb2YgdGhpcy4jaih7YWxsb3dTdGFsZTohMH0pKXtsZXQgSj10aGlzLiNKW1FdLFk9dGhpcy4jJFtRXSxYPXRoaXMuI1EoWSk/WS5fX3N0YWxlV2hpbGVGZXRjaGluZzpZO2lmKFg9PT12b2lkIDB8fEo9PT12b2lkIDApY29udGludWU7bGV0IFc9e3ZhbHVlOlh9O2lmKHRoaXMuI3omJnRoaXMuI00pe1cudHRsPXRoaXMuI3pbUV07bGV0IEc9Ujkubm93KCktdGhpcy4jTVtRXTtXLnN0YXJ0PU1hdGguZmxvb3IoRGF0ZS5ub3coKS1HKX1pZih0aGlzLiNaKVcuc2l6ZT10aGlzLiNaW1FdOyQudW5zaGlmdChbSixXXSl9cmV0dXJuICR9bG9hZCgkKXt0aGlzLmNsZWFyKCk7Zm9yKGxldFtRLEpdb2YgJCl7aWYoSi5zdGFydCl7bGV0IFk9RGF0ZS5ub3coKS1KLnN0YXJ0O0ouc3RhcnQ9Ujkubm93KCktWX10aGlzLnNldChRLEoudmFsdWUsSil9fXNldCgkLFEsSj17fSl7aWYoUT09PXZvaWQgMClyZXR1cm4gdGhpcy5kZWxldGUoJCksdGhpcztsZXR7dHRsOlk9dGhpcy50dGwsc3RhcnQ6WCxub0Rpc3Bvc2VPblNldDpXPXRoaXMubm9EaXNwb3NlT25TZXQsc2l6ZUNhbGN1bGF0aW9uOkc9dGhpcy5zaXplQ2FsY3VsYXRpb24sc3RhdHVzOlV9PUose25vVXBkYXRlVFRMOkg9dGhpcy5ub1VwZGF0ZVRUTH09SixxPXRoaXMuI3koJCxRLEouc2l6ZXx8MCxHKTtpZih0aGlzLm1heEVudHJ5U2l6ZSYmcT50aGlzLm1heEVudHJ5U2l6ZSl7aWYoVSlVLnNldD1cIm1pc3NcIixVLm1heEVudHJ5U2l6ZUV4Y2VlZGVkPSEwO3JldHVybiB0aGlzLiNJKCQsXCJzZXRcIiksdGhpc31sZXQgVj10aGlzLiNZPT09MD92b2lkIDA6dGhpcy4jWC5nZXQoJCk7aWYoVj09PXZvaWQgMCl7aWYoVj10aGlzLiNZPT09MD90aGlzLiNXOnRoaXMuI0YubGVuZ3RoIT09MD90aGlzLiNGLnBvcCgpOnRoaXMuI1k9PT10aGlzLiNIP3RoaXMuI0MoITEpOnRoaXMuI1ksdGhpcy4jSltWXT0kLHRoaXMuIyRbVl09USx0aGlzLiNYLnNldCgkLFYpLHRoaXMuI0tbdGhpcy4jV109Vix0aGlzLiNCW1ZdPXRoaXMuI1csdGhpcy4jVz1WLHRoaXMuI1krKyx0aGlzLiN2KFYscSxVKSxVKVUuc2V0PVwiYWRkXCI7SD0hMX1lbHNle3RoaXMuI18oVik7bGV0IEI9dGhpcy4jJFtWXTtpZihRIT09Qil7aWYodGhpcy4jUCYmdGhpcy4jUShCKSl7Qi5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChFcnJvcihcInJlcGxhY2VkXCIpKTtsZXR7X19zdGFsZVdoaWxlRmV0Y2hpbmc6en09QjtpZih6IT09dm9pZCAwJiYhVyl7aWYodGhpcy4jTCl0aGlzLiN3Py4oeiwkLFwic2V0XCIpO2lmKHRoaXMuI3EpdGhpcy4jRz8ucHVzaChbeiwkLFwic2V0XCJdKX19ZWxzZSBpZighVyl7aWYodGhpcy4jTCl0aGlzLiN3Py4oQiwkLFwic2V0XCIpO2lmKHRoaXMuI3EpdGhpcy4jRz8ucHVzaChbQiwkLFwic2V0XCJdKX1pZih0aGlzLiNiKFYpLHRoaXMuI3YoVixxLFUpLHRoaXMuIyRbVl09USxVKXtVLnNldD1cInJlcGxhY2VcIjtsZXQgej1CJiZ0aGlzLiNRKEIpP0IuX19zdGFsZVdoaWxlRmV0Y2hpbmc6QjtpZih6IT09dm9pZCAwKVUub2xkVmFsdWU9en19ZWxzZSBpZihVKVUuc2V0PVwidXBkYXRlXCJ9aWYoWSE9PTAmJiF0aGlzLiN6KXRoaXMuI3goKTtpZih0aGlzLiN6KXtpZighSCl0aGlzLiNmKFYsWSxYKTtpZihVKXRoaXMuI1IoVSxWKX1pZighVyYmdGhpcy4jcSYmdGhpcy4jRyl7bGV0IEI9dGhpcy4jRyx6O3doaWxlKHo9Qj8uc2hpZnQoKSl0aGlzLiNPPy4oLi4ueil9cmV0dXJuIHRoaXN9cG9wKCl7dHJ5e3doaWxlKHRoaXMuI1kpe2xldCAkPXRoaXMuIyRbdGhpcy4jVV07aWYodGhpcy4jQyghMCksdGhpcy4jUSgkKSl7aWYoJC5fX3N0YWxlV2hpbGVGZXRjaGluZylyZXR1cm4gJC5fX3N0YWxlV2hpbGVGZXRjaGluZ31lbHNlIGlmKCQhPT12b2lkIDApcmV0dXJuICR9fWZpbmFsbHl7aWYodGhpcy4jcSYmdGhpcy4jRyl7bGV0ICQ9dGhpcy4jRyxRO3doaWxlKFE9JD8uc2hpZnQoKSl0aGlzLiNPPy4oLi4uUSl9fX0jQygkKXtsZXQgUT10aGlzLiNVLEo9dGhpcy4jSltRXSxZPXRoaXMuIyRbUV07aWYodGhpcy4jUCYmdGhpcy4jUShZKSlZLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KEVycm9yKFwiZXZpY3RlZFwiKSk7ZWxzZSBpZih0aGlzLiNMfHx0aGlzLiNxKXtpZih0aGlzLiNMKXRoaXMuI3c/LihZLEosXCJldmljdFwiKTtpZih0aGlzLiNxKXRoaXMuI0c/LnB1c2goW1ksSixcImV2aWN0XCJdKX1pZih0aGlzLiNiKFEpLCQpdGhpcy4jSltRXT12b2lkIDAsdGhpcy4jJFtRXT12b2lkIDAsdGhpcy4jRi5wdXNoKFEpO2lmKHRoaXMuI1k9PT0xKXRoaXMuI1U9dGhpcy4jVz0wLHRoaXMuI0YubGVuZ3RoPTA7ZWxzZSB0aGlzLiNVPXRoaXMuI0tbUV07cmV0dXJuIHRoaXMuI1guZGVsZXRlKEopLHRoaXMuI1ktLSxRfWhhcygkLFE9e30pe2xldHt1cGRhdGVBZ2VPbkhhczpKPXRoaXMudXBkYXRlQWdlT25IYXMsc3RhdHVzOll9PVEsWD10aGlzLiNYLmdldCgkKTtpZihYIT09dm9pZCAwKXtsZXQgVz10aGlzLiMkW1hdO2lmKHRoaXMuI1EoVykmJlcuX19zdGFsZVdoaWxlRmV0Y2hpbmc9PT12b2lkIDApcmV0dXJuITE7aWYoIXRoaXMuI04oWCkpe2lmKEopdGhpcy4jRShYKTtpZihZKVkuaGFzPVwiaGl0XCIsdGhpcy4jUihZLFgpO3JldHVybiEwfWVsc2UgaWYoWSlZLmhhcz1cInN0YWxlXCIsdGhpcy4jUihZLFgpfWVsc2UgaWYoWSlZLmhhcz1cIm1pc3NcIjtyZXR1cm4hMX1wZWVrKCQsUT17fSl7bGV0e2FsbG93U3RhbGU6Sj10aGlzLmFsbG93U3RhbGV9PVEsWT10aGlzLiNYLmdldCgkKTtpZihZPT09dm9pZCAwfHwhSiYmdGhpcy4jTihZKSlyZXR1cm47bGV0IFg9dGhpcy4jJFtZXTtyZXR1cm4gdGhpcy4jUShYKT9YLl9fc3RhbGVXaGlsZUZldGNoaW5nOlh9I1QoJCxRLEosWSl7bGV0IFg9UT09PXZvaWQgMD92b2lkIDA6dGhpcy4jJFtRXTtpZih0aGlzLiNRKFgpKXJldHVybiBYO2xldCBXPW5ldyBZRyx7c2lnbmFsOkd9PUo7Rz8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsKCk9PlcuYWJvcnQoRy5yZWFzb24pLHtzaWduYWw6Vy5zaWduYWx9KTtsZXQgVT17c2lnbmFsOlcuc2lnbmFsLG9wdGlvbnM6Sixjb250ZXh0Oll9LEg9KHcsTz0hMSk9PntsZXR7YWJvcnRlZDpEfT1XLnNpZ25hbCxNPUouaWdub3JlRmV0Y2hBYm9ydCYmdyE9PXZvaWQgMDtpZihKLnN0YXR1cylpZihEJiYhTyl7aWYoSi5zdGF0dXMuZmV0Y2hBYm9ydGVkPSEwLEouc3RhdHVzLmZldGNoRXJyb3I9Vy5zaWduYWwucmVhc29uLE0pSi5zdGF0dXMuZmV0Y2hBYm9ydElnbm9yZWQ9ITB9ZWxzZSBKLnN0YXR1cy5mZXRjaFJlc29sdmVkPSEwO2lmKEQmJiFNJiYhTylyZXR1cm4gVihXLnNpZ25hbC5yZWFzb24pO2xldCBqPXo7aWYodGhpcy4jJFtRXT09PXopaWYodz09PXZvaWQgMClpZihqLl9fc3RhbGVXaGlsZUZldGNoaW5nKXRoaXMuIyRbUV09ai5fX3N0YWxlV2hpbGVGZXRjaGluZztlbHNlIHRoaXMuI0koJCxcImZldGNoXCIpO2Vsc2V7aWYoSi5zdGF0dXMpSi5zdGF0dXMuZmV0Y2hVcGRhdGVkPSEwO3RoaXMuc2V0KCQsdyxVLm9wdGlvbnMpfXJldHVybiB3fSxxPSh3KT0+e2lmKEouc3RhdHVzKUouc3RhdHVzLmZldGNoUmVqZWN0ZWQ9ITAsSi5zdGF0dXMuZmV0Y2hFcnJvcj13O3JldHVybiBWKHcpfSxWPSh3KT0+e2xldHthYm9ydGVkOk99PVcuc2lnbmFsLEQ9TyYmSi5hbGxvd1N0YWxlT25GZXRjaEFib3J0LE09RHx8Si5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbixqPU18fEoubm9EZWxldGVPbkZldGNoUmVqZWN0aW9uLEE9ejtpZih0aGlzLiMkW1FdPT09eil7aWYoIWp8fEEuX19zdGFsZVdoaWxlRmV0Y2hpbmc9PT12b2lkIDApdGhpcy4jSSgkLFwiZmV0Y2hcIik7ZWxzZSBpZighRCl0aGlzLiMkW1FdPUEuX19zdGFsZVdoaWxlRmV0Y2hpbmd9aWYoTSl7aWYoSi5zdGF0dXMmJkEuX19zdGFsZVdoaWxlRmV0Y2hpbmchPT12b2lkIDApSi5zdGF0dXMucmV0dXJuZWRTdGFsZT0hMDtyZXR1cm4gQS5fX3N0YWxlV2hpbGVGZXRjaGluZ31lbHNlIGlmKEEuX19yZXR1cm5lZD09PUEpdGhyb3cgd30sQj0odyxPKT0+e2xldCBEPXRoaXMuI1M/LigkLFgsVSk7aWYoRCYmRCBpbnN0YW5jZW9mIFByb21pc2UpRC50aGVuKChNKT0+dyhNPT09dm9pZCAwP3ZvaWQgMDpNKSxPKTtXLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e2lmKCFKLmlnbm9yZUZldGNoQWJvcnR8fEouYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCl7aWYodyh2b2lkIDApLEouYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCl3PShNKT0+SChNLCEwKX19KX07aWYoSi5zdGF0dXMpSi5zdGF0dXMuZmV0Y2hEaXNwYXRjaGVkPSEwO2xldCB6PW5ldyBQcm9taXNlKEIpLnRoZW4oSCxxKSxOPU9iamVjdC5hc3NpZ24oeix7X19hYm9ydENvbnRyb2xsZXI6VyxfX3N0YWxlV2hpbGVGZXRjaGluZzpYLF9fcmV0dXJuZWQ6dm9pZCAwfSk7aWYoUT09PXZvaWQgMCl0aGlzLnNldCgkLE4sey4uLlUub3B0aW9ucyxzdGF0dXM6dm9pZCAwfSksUT10aGlzLiNYLmdldCgkKTtlbHNlIHRoaXMuIyRbUV09TjtyZXR1cm4gTn0jUSgkKXtpZighdGhpcy4jUClyZXR1cm4hMTtsZXQgUT0kO3JldHVybiEhUSYmUSBpbnN0YW5jZW9mIFByb21pc2UmJlEuaGFzT3duUHJvcGVydHkoXCJfX3N0YWxlV2hpbGVGZXRjaGluZ1wiKSYmUS5fX2Fib3J0Q29udHJvbGxlciBpbnN0YW5jZW9mIFlHfWFzeW5jIGZldGNoKCQsUT17fSl7bGV0e2FsbG93U3RhbGU6Sj10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6WT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpYPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHR0bDpXPXRoaXMudHRsLG5vRGlzcG9zZU9uU2V0Okc9dGhpcy5ub0Rpc3Bvc2VPblNldCxzaXplOlU9MCxzaXplQ2FsY3VsYXRpb246SD10aGlzLnNpemVDYWxjdWxhdGlvbixub1VwZGF0ZVRUTDpxPXRoaXMubm9VcGRhdGVUVEwsbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uOlY9dGhpcy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb246Qj10aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLGlnbm9yZUZldGNoQWJvcnQ6ej10aGlzLmlnbm9yZUZldGNoQWJvcnQsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpOPXRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCxjb250ZXh0OncsZm9yY2VSZWZyZXNoOk89ITEsc3RhdHVzOkQsc2lnbmFsOk19PVE7aWYoIXRoaXMuI1Ape2lmKEQpRC5mZXRjaD1cImdldFwiO3JldHVybiB0aGlzLmdldCgkLHthbGxvd1N0YWxlOkosdXBkYXRlQWdlT25HZXQ6WSxub0RlbGV0ZU9uU3RhbGVHZXQ6WCxzdGF0dXM6RH0pfWxldCBqPXthbGxvd1N0YWxlOkosdXBkYXRlQWdlT25HZXQ6WSxub0RlbGV0ZU9uU3RhbGVHZXQ6WCx0dGw6Vyxub0Rpc3Bvc2VPblNldDpHLHNpemU6VSxzaXplQ2FsY3VsYXRpb246SCxub1VwZGF0ZVRUTDpxLG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjpWLGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkIsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpOLGlnbm9yZUZldGNoQWJvcnQ6eixzdGF0dXM6RCxzaWduYWw6TX0sQT10aGlzLiNYLmdldCgkKTtpZihBPT09dm9pZCAwKXtpZihEKUQuZmV0Y2g9XCJtaXNzXCI7bGV0IGs9dGhpcy4jVCgkLEEsaix3KTtyZXR1cm4gay5fX3JldHVybmVkPWt9ZWxzZXtsZXQgaz10aGlzLiMkW0FdO2lmKHRoaXMuI1Eoaykpe2xldCB1Nj1KJiZrLl9fc3RhbGVXaGlsZUZldGNoaW5nIT09dm9pZCAwO2lmKEQpe2lmKEQuZmV0Y2g9XCJpbmZsaWdodFwiLHU2KUQucmV0dXJuZWRTdGFsZT0hMH1yZXR1cm4gdTY/ay5fX3N0YWxlV2hpbGVGZXRjaGluZzprLl9fcmV0dXJuZWQ9a31sZXQgdT10aGlzLiNOKEEpO2lmKCFPJiYhdSl7aWYoRClELmZldGNoPVwiaGl0XCI7aWYodGhpcy4jXyhBKSxZKXRoaXMuI0UoQSk7aWYoRCl0aGlzLiNSKEQsQSk7cmV0dXJuIGt9bGV0IEckPXRoaXMuI1QoJCxBLGosdykscyQ9RyQuX19zdGFsZVdoaWxlRmV0Y2hpbmchPT12b2lkIDAmJko7aWYoRCl7aWYoRC5mZXRjaD11P1wic3RhbGVcIjpcInJlZnJlc2hcIixzJCYmdSlELnJldHVybmVkU3RhbGU9ITB9cmV0dXJuIHMkP0ckLl9fc3RhbGVXaGlsZUZldGNoaW5nOkckLl9fcmV0dXJuZWQ9RyR9fWFzeW5jIGZvcmNlRmV0Y2goJCxRPXt9KXtsZXQgSj1hd2FpdCB0aGlzLmZldGNoKCQsUSk7aWYoSj09PXZvaWQgMCl0aHJvdyBFcnJvcihcImZldGNoKCkgcmV0dXJuZWQgdW5kZWZpbmVkXCIpO3JldHVybiBKfW1lbW8oJCxRPXt9KXtsZXQgSj10aGlzLiNrO2lmKCFKKXRocm93IEVycm9yKFwibm8gbWVtb01ldGhvZCBwcm92aWRlZCB0byBjb25zdHJ1Y3RvclwiKTtsZXR7Y29udGV4dDpZLGZvcmNlUmVmcmVzaDpYLC4uLld9PVEsRz10aGlzLmdldCgkLFcpO2lmKCFYJiZHIT09dm9pZCAwKXJldHVybiBHO2xldCBVPUooJCxHLHtvcHRpb25zOlcsY29udGV4dDpZfSk7cmV0dXJuIHRoaXMuc2V0KCQsVSxXKSxVfWdldCgkLFE9e30pe2xldHthbGxvd1N0YWxlOko9dGhpcy5hbGxvd1N0YWxlLHVwZGF0ZUFnZU9uR2V0Olk9dGhpcy51cGRhdGVBZ2VPbkdldCxub0RlbGV0ZU9uU3RhbGVHZXQ6WD10aGlzLm5vRGVsZXRlT25TdGFsZUdldCxzdGF0dXM6V309USxHPXRoaXMuI1guZ2V0KCQpO2lmKEchPT12b2lkIDApe2xldCBVPXRoaXMuIyRbR10sSD10aGlzLiNRKFUpO2lmKFcpdGhpcy4jUihXLEcpO2lmKHRoaXMuI04oRykpe2lmKFcpVy5nZXQ9XCJzdGFsZVwiO2lmKCFIKXtpZighWCl0aGlzLiNJKCQsXCJleHBpcmVcIik7aWYoVyYmSilXLnJldHVybmVkU3RhbGU9ITA7cmV0dXJuIEo/VTp2b2lkIDB9ZWxzZXtpZihXJiZKJiZVLl9fc3RhbGVXaGlsZUZldGNoaW5nIT09dm9pZCAwKVcucmV0dXJuZWRTdGFsZT0hMDtyZXR1cm4gSj9VLl9fc3RhbGVXaGlsZUZldGNoaW5nOnZvaWQgMH19ZWxzZXtpZihXKVcuZ2V0PVwiaGl0XCI7aWYoSClyZXR1cm4gVS5fX3N0YWxlV2hpbGVGZXRjaGluZztpZih0aGlzLiNfKEcpLFkpdGhpcy4jRShHKTtyZXR1cm4gVX19ZWxzZSBpZihXKVcuZ2V0PVwibWlzc1wifSNoKCQsUSl7dGhpcy4jQltRXT0kLHRoaXMuI0tbJF09UX0jXygkKXtpZigkIT09dGhpcy4jVyl7aWYoJD09PXRoaXMuI1UpdGhpcy4jVT10aGlzLiNLWyRdO2Vsc2UgdGhpcy4jaCh0aGlzLiNCWyRdLHRoaXMuI0tbJF0pO3RoaXMuI2godGhpcy4jVywkKSx0aGlzLiNXPSR9fWRlbGV0ZSgkKXtyZXR1cm4gdGhpcy4jSSgkLFwiZGVsZXRlXCIpfSNJKCQsUSl7bGV0IEo9ITE7aWYodGhpcy4jWSE9PTApe2xldCBZPXRoaXMuI1guZ2V0KCQpO2lmKFkhPT12b2lkIDApaWYoSj0hMCx0aGlzLiNZPT09MSl0aGlzLiN1KFEpO2Vsc2V7dGhpcy4jYihZKTtsZXQgWD10aGlzLiMkW1ldO2lmKHRoaXMuI1EoWCkpWC5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChFcnJvcihcImRlbGV0ZWRcIikpO2Vsc2UgaWYodGhpcy4jTHx8dGhpcy4jcSl7aWYodGhpcy4jTCl0aGlzLiN3Py4oWCwkLFEpO2lmKHRoaXMuI3EpdGhpcy4jRz8ucHVzaChbWCwkLFFdKX1pZih0aGlzLiNYLmRlbGV0ZSgkKSx0aGlzLiNKW1ldPXZvaWQgMCx0aGlzLiMkW1ldPXZvaWQgMCxZPT09dGhpcy4jVyl0aGlzLiNXPXRoaXMuI0JbWV07ZWxzZSBpZihZPT09dGhpcy4jVSl0aGlzLiNVPXRoaXMuI0tbWV07ZWxzZXtsZXQgVz10aGlzLiNCW1ldO3RoaXMuI0tbV109dGhpcy4jS1tZXTtsZXQgRz10aGlzLiNLW1ldO3RoaXMuI0JbR109dGhpcy4jQltZXX10aGlzLiNZLS0sdGhpcy4jRi5wdXNoKFkpfX1pZih0aGlzLiNxJiZ0aGlzLiNHPy5sZW5ndGgpe2xldCBZPXRoaXMuI0csWDt3aGlsZShYPVk/LnNoaWZ0KCkpdGhpcy4jTz8uKC4uLlgpfXJldHVybiBKfWNsZWFyKCl7cmV0dXJuIHRoaXMuI3UoXCJkZWxldGVcIil9I3UoJCl7Zm9yKGxldCBRIG9mIHRoaXMuI0Eoe2FsbG93U3RhbGU6ITB9KSl7bGV0IEo9dGhpcy4jJFtRXTtpZih0aGlzLiNRKEopKUouX19hYm9ydENvbnRyb2xsZXIuYWJvcnQoRXJyb3IoXCJkZWxldGVkXCIpKTtlbHNle2xldCBZPXRoaXMuI0pbUV07aWYodGhpcy4jTCl0aGlzLiN3Py4oSixZLCQpO2lmKHRoaXMuI3EpdGhpcy4jRz8ucHVzaChbSixZLCRdKX19aWYodGhpcy4jWC5jbGVhcigpLHRoaXMuIyQuZmlsbCh2b2lkIDApLHRoaXMuI0ouZmlsbCh2b2lkIDApLHRoaXMuI3omJnRoaXMuI00pdGhpcy4jei5maWxsKDApLHRoaXMuI00uZmlsbCgwKTtpZih0aGlzLiNaKXRoaXMuI1ouZmlsbCgwKTtpZih0aGlzLiNVPTAsdGhpcy4jVz0wLHRoaXMuI0YubGVuZ3RoPTAsdGhpcy4jRD0wLHRoaXMuI1k9MCx0aGlzLiNxJiZ0aGlzLiNHKXtsZXQgUT10aGlzLiNHLEo7d2hpbGUoSj1RPy5zaGlmdCgpKXRoaXMuI08/LiguLi5KKX19fWZ1bmN0aW9uIEZFKCQsUSxKPTEwMCl7bGV0IFk9bmV3IFdHKHttYXg6Sn0pLFg9KC4uLlcpPT57bGV0IEc9USguLi5XKSxVPVkuZ2V0KEcpO2lmKFUhPT12b2lkIDApcmV0dXJuIFU7bGV0IEg9JCguLi5XKTtyZXR1cm4gWS5zZXQoRyxIKSxIfTtyZXR1cm4gWC5jYWNoZT17Y2xlYXI6KCk9PlkuY2xlYXIoKSxzaXplOigpPT5ZLnNpemUsZGVsZXRlOihXKT0+WS5kZWxldGUoVyksZ2V0OihXKT0+WS5wZWVrKFcpLGhhczooVyk9PlkuaGFzKFcpfSxYfXZhciBKZT04MTkyO2Z1bmN0aW9uIE1FKCQsUSl7dHJ5e3JldHVybntvazohMCx2YWx1ZTpKU09OLnBhcnNlKEpHKCQpKX19Y2F0Y2goSil7aWYoUSlYRyhKKTtyZXR1cm57b2s6ITF9fX12YXIgWkU9RkUoTUUsKCQpPT4kLDUwKSxFOT1PYmplY3QuYXNzaWduKGZ1bmN0aW9uKFEsSj0hMCl7aWYoIVEpcmV0dXJuIG51bGw7bGV0IFk9US5sZW5ndGg+SmU/TUUoUSxKKTpaRShRLEopO3JldHVybiBZLm9rP1kudmFsdWU6bnVsbH0se2NhY2hlOlpFLmNhY2hlfSk7aW1wb3J0e2pvaW4gYXMgWWV9ZnJvbVwicGF0aFwiO2ltcG9ydHtyZWFkZGlyIGFzIGtEJCxyZWFkRmlsZSBhcyBYZX1mcm9tXCJmcy9wcm9taXNlc1wiO2ltcG9ydHtyZWxlYXNlIGFzIExFfWZyb21cIm9zXCI7dmFyIG0wPXYkKCgpPT57dHJ5e2lmKHByb2Nlc3MucGxhdGZvcm09PT1cImRhcndpblwiKXJldHVyblwibWFjb3NcIjtpZihwcm9jZXNzLnBsYXRmb3JtPT09XCJ3aW4zMlwiKXJldHVyblwid2luZG93c1wiO2lmKHByb2Nlc3MucGxhdGZvcm09PT1cImxpbnV4XCIpe3RyeXtsZXQgJD1tJCgpLnJlYWRGaWxlU3luYyhcIi9wcm9jL3ZlcnNpb25cIix7ZW5jb2Rpbmc6XCJ1dGY4XCJ9KTtpZigkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJtaWNyb3NvZnRcIil8fCQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIndzbFwiKSlyZXR1cm5cIndzbFwifWNhdGNoKCQpe1gkKGBGYWlsZWQgdG8gcmVhZCAvcHJvYy92ZXJzaW9uIGZvciBXU0wgZGV0ZWN0aW9uOiAkeyR9YCx7bGV2ZWw6XCJlcnJvclwifSl9cmV0dXJuXCJsaW51eFwifXJldHVyblwidW5rbm93blwifWNhdGNoKCQpe3JldHVybiBYRygkKSxcInVua25vd25cIn19KSx5RCQ9diQoKCk9PntpZihwcm9jZXNzLnBsYXRmb3JtIT09XCJsaW51eFwiKXJldHVybjt0cnl7bGV0ICQ9bSQoKS5yZWFkRmlsZVN5bmMoXCIvcHJvYy92ZXJzaW9uXCIse2VuY29kaW5nOlwidXRmOFwifSksUT0kLm1hdGNoKC9XU0woXFxkKykvaSk7aWYoUSYmUVsxXSlyZXR1cm4gUVsxXTtpZigkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJtaWNyb3NvZnRcIikpcmV0dXJuXCIxXCI7cmV0dXJufWNhdGNoKCQpe1gkKGBGYWlsZWQgdG8gcmVhZCAvcHJvYy92ZXJzaW9uIGZvciBXU0wgZGV0ZWN0aW9uOiAkeyR9YCx7bGV2ZWw6XCJlcnJvclwifSk7cmV0dXJufX0pLGdEJD12JChhc3luYygpPT57aWYocHJvY2Vzcy5wbGF0Zm9ybSE9PVwibGludXhcIilyZXR1cm47bGV0ICQ9e2xpbnV4S2VybmVsOkxFKCl9O3RyeXtsZXQgUT1hd2FpdCBYZShcIi9ldGMvb3MtcmVsZWFzZVwiLFwidXRmOFwiKTtmb3IobGV0IEogb2YgUS5zcGxpdChgXG5gKSl7bGV0IFk9Si5tYXRjaCgvXihJRHxWRVJTSU9OX0lEKT0oLiopJC8pO2lmKFkmJllbMV0mJllbMl0pe2xldCBYPVlbMl0ucmVwbGFjZSgvXlwifFwiJC9nLFwiXCIpO2lmKFlbMV09PT1cIklEXCIpJC5saW51eERpc3Ryb0lkPVg7ZWxzZSAkLmxpbnV4RGlzdHJvVmVyc2lvbj1YfX19Y2F0Y2h7fXJldHVybiAkfSk7dmFyIGhEJD12JCgoKT0+e2lmKHByb2Nlc3MucGxhdGZvcm0hPT1cImRhcndpblwiKXJldHVybjtsZXQgUT1MRSgpLm1hdGNoKC9eKFxcZCspXFwuLyk7aWYoIVF8fCFRWzFdKXJldHVybjtyZXR1cm4gcGFyc2VJbnQoUVsxXSwxMCktOX0pO3ZhciBsMD12JChmdW5jdGlvbigpe3N3aXRjaChtMCgpKXtjYXNlXCJtYWNvc1wiOnJldHVyblwiL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9DbGF1ZGVDb2RlXCI7Y2FzZVwid2luZG93c1wiOnJldHVyblwiQzpcXFxcUHJvZ3JhbSBGaWxlc1xcXFxDbGF1ZGVDb2RlXCI7ZGVmYXVsdDpyZXR1cm5cIi9ldGMvY2xhdWRlLWNvZGVcIn19KSxwRCQ9diQoZnVuY3Rpb24oKXtyZXR1cm4gWWUobDAoKSxcIm1hbmFnZWQtc2V0dGluZ3MuZFwiKX0pO2ltcG9ydHtpc0Fic29sdXRlIGFzIGpFfWZyb21cInBhdGhcIjt2YXIgV2U9XygoKT0+Sy5vYmplY3Qoe2FsbG93ZWREb21haW5zOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKSxkZW5pZWREb21haW5zOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRvbWFpbnMgdGhhdCBhcmUgYWx3YXlzIGJsb2NrZWQsIGV2ZW4gaWYgbWF0Y2hlZCBieSBhbGxvd2VkRG9tYWlucy4gU3VwcG9ydHMgdGhlIHNhbWUgd2lsZGNhcmQgc3ludGF4IGFzIGFsbG93ZWREb21haW5zLiBNZXJnZWQgZnJvbSBhbGwgc2V0dGluZ3Mgc291cmNlcyByZWdhcmRsZXNzIG9mIGFsbG93TWFuYWdlZERvbWFpbnNPbmx5LlwiKSxhbGxvd01hbmFnZWREb21haW5zT25seTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlIChhbmQgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MpLCBvbmx5IGFsbG93ZWREb21haW5zIGFuZCBXZWJGZXRjaChkb21haW46Li4uKSBhbGxvdyBydWxlcyBmcm9tIG1hbmFnZWQgc2V0dGluZ3MgYXJlIHJlc3BlY3RlZC4gVXNlciwgcHJvamVjdCwgbG9jYWwsIGFuZCBmbGFnIHNldHRpbmdzIGRvbWFpbnMgYXJlIGlnbm9yZWQuIERlbmllZCBkb21haW5zIGFyZSBzdGlsbCByZXNwZWN0ZWQgZnJvbSBhbGwgc291cmNlcy5cIiksYWxsb3dVbml4U29ja2V0czpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJtYWNPUyBvbmx5OiBVbml4IHNvY2tldCBwYXRocyB0byBhbGxvdy4gSWdub3JlZCBvbiBMaW51eCAoc2VjY29tcCBjYW5ub3QgZmlsdGVyIGJ5IHBhdGgpLlwiKSxhbGxvd0FsbFVuaXhTb2NrZXRzOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBhbGxvdyBhbGwgVW5peCBzb2NrZXRzIChkaXNhYmxlcyBibG9ja2luZyBvbiBib3RoIHBsYXRmb3JtcykuXCIpLGFsbG93TG9jYWxCaW5kaW5nOksuYm9vbGVhbigpLm9wdGlvbmFsKCksYWxsb3dNYWNoTG9va3VwOksuYXJyYXkoSy5zdHJpbmcoKS5yZWZpbmUoKCQpPT57cmV0dXJuISgkLmVuZHNXaXRoKFwiKlwiKT8kLnNsaWNlKDAsLTEpOiQpLmluY2x1ZGVzKFwiKlwiKX0se21lc3NhZ2U6J1dpbGRjYXJkcyBhcmUgb25seSBhbGxvd2VkIGFzIGEgc2luZ2xlIHRyYWlsaW5nIFwiKlwiIChlLmcuLCBcImNvbS5leGFtcGxlLipcIiBvciBcIipcIiBmb3IgYWxsIHNlcnZpY2VzKS4nfSkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ21hY09TIG9ubHk6IEFkZGl0aW9uYWwgWFBDL01hY2ggc2VydmljZSBuYW1lcyB0byBhbGxvdyBsb29raW5nIHVwLiBTdXBwb3J0cyB0cmFpbGluZy13aWxkY2FyZCBwcmVmaXggbWF0Y2hpbmcgKGUuZy4sIFwiY29tLmFwcGxlLmNvcmVzaW11bGF0b3IuKlwiKS4gTmVlZGVkIGZvciB0b29scyB0aGF0IGNvbW11bmljYXRlIHZpYSBYUEMgc3VjaCBhcyB0aGUgaU9TIFNpbXVsYXRvciBvciBQbGF5d3JpZ2h0LicpLGh0dHBQcm94eVBvcnQ6Sy5udW1iZXIoKS5vcHRpb25hbCgpLHNvY2tzUHJveHlQb3J0OksubnVtYmVyKCkub3B0aW9uYWwoKSx0bHNUZXJtaW5hdGU6Sy5vYmplY3Qoe2NhQ2VydFBhdGg6Sy5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxjYUtleVBhdGg6Sy5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJbRVhQRVJJTUVOVEFMXSBFbmFibGUgaW4tcHJvY2VzcyBUTFMgdGVybWluYXRpb24gc28gdGhlIHBlci1yZXF1ZXN0IGZpbHRlciBjYW4gc2VlIEhUVFBTIHJlcXVlc3QgYm9kaWVzLiBQcm92aWRlIGEgQ0EgY2VydCtrZXksIG9yIG9taXQgYm90aCB0byBoYXZlIHNhbmRib3gtcnVudGltZSBnZW5lcmF0ZSBhbiBlcGhlbWVyYWwgb25lIGZvciB0aGUgc2Vzc2lvbi5cIil9KS5vcHRpb25hbCgpKSxHZT1fKCgpPT5LLm9iamVjdCh7YWxsb3dXcml0ZTpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZGRpdGlvbmFsIHBhdGhzIHRvIGFsbG93IHdyaXRpbmcgd2l0aGluIHRoZSBzYW5kYm94LiBNZXJnZWQgd2l0aCBwYXRocyBmcm9tIEVkaXQoLi4uKSBhbGxvdyBwZXJtaXNzaW9uIHJ1bGVzLlwiKSxkZW55V3JpdGU6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWRkaXRpb25hbCBwYXRocyB0byBkZW55IHdyaXRpbmcgd2l0aGluIHRoZSBzYW5kYm94LiBNZXJnZWQgd2l0aCBwYXRocyBmcm9tIEVkaXQoLi4uKSBkZW55IHBlcm1pc3Npb24gcnVsZXMuXCIpLGRlbnlSZWFkOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFkZGl0aW9uYWwgcGF0aHMgdG8gZGVueSByZWFkaW5nIHdpdGhpbiB0aGUgc2FuZGJveC4gTWVyZ2VkIHdpdGggcGF0aHMgZnJvbSBSZWFkKC4uLikgZGVueSBwZXJtaXNzaW9uIHJ1bGVzLlwiKSxhbGxvd1JlYWQ6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aHMgdG8gcmUtYWxsb3cgcmVhZGluZyB3aXRoaW4gZGVueVJlYWQgcmVnaW9ucy4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIGRlbnlSZWFkIGZvciBtYXRjaGluZyBwYXRocy5cIiksYWxsb3dNYW5hZ2VkUmVhZFBhdGhzT25seTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlIChzZXQgaW4gbWFuYWdlZCBzZXR0aW5ncyksIG9ubHkgYWxsb3dSZWFkIHBhdGhzIGZyb20gcG9saWN5U2V0dGluZ3MgYXJlIHVzZWQuXCIpfSkub3B0aW9uYWwoKSksQUU9XygoKT0+Sy5vYmplY3Qoe2VuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKSxmYWlsSWZVbmF2YWlsYWJsZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRXhpdCB3aXRoIGFuIGVycm9yIGF0IHN0YXJ0dXAgaWYgc2FuZGJveC5lbmFibGVkIGlzIHRydWUgYnV0IHRoZSBzYW5kYm94IGNhbm5vdCBzdGFydCAobWlzc2luZyBkZXBlbmRlbmNpZXMgb3IgdW5zdXBwb3J0ZWQgcGxhdGZvcm0pLiBXaGVuIGZhbHNlIChkZWZhdWx0KSwgYSB3YXJuaW5nIGlzIHNob3duIGFuZCBjb21tYW5kcyBydW4gdW5zYW5kYm94ZWQuIEludGVuZGVkIGZvciBtYW5hZ2VkLXNldHRpbmdzIGRlcGxveW1lbnRzIHRoYXQgcmVxdWlyZSBzYW5kYm94aW5nIGFzIGEgaGFyZCBnYXRlLlwiKSxhdXRvQWxsb3dCYXNoSWZTYW5kYm94ZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKSxhbGxvd1Vuc2FuZGJveGVkQ29tbWFuZHM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFsbG93IGNvbW1hbmRzIHRvIHJ1biBvdXRzaWRlIHRoZSBzYW5kYm94IHZpYSB0aGUgZGFuZ2Vyb3VzbHlEaXNhYmxlU2FuZGJveCBwYXJhbWV0ZXIuIFdoZW4gZmFsc2UsIHRoZSBkYW5nZXJvdXNseURpc2FibGVTYW5kYm94IHBhcmFtZXRlciBpcyBjb21wbGV0ZWx5IGlnbm9yZWQgYW5kIGFsbCBjb21tYW5kcyBtdXN0IHJ1biBzYW5kYm94ZWQuIERlZmF1bHQ6IHRydWUuXCIpLG5ldHdvcms6V2UoKSxmaWxlc3lzdGVtOkdlKCksaWdub3JlVmlvbGF0aW9uczpLLnJlY29yZChLLnN0cmluZygpLEsuYXJyYXkoSy5zdHJpbmcoKSkpLm9wdGlvbmFsKCksZW5hYmxlV2Vha2VyTmVzdGVkU2FuZGJveDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLGVuYWJsZVdlYWtlck5ldHdvcmtJc29sYXRpb246Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIm1hY09TIG9ubHk6IEFsbG93IGFjY2VzcyB0byBjb20uYXBwbGUudHJ1c3RkLmFnZW50IGluIHRoZSBzYW5kYm94LiBOZWVkZWQgZm9yIEdvLWJhc2VkIENMSSB0b29scyAoZ2gsIGdjbG91ZCwgdGVycmFmb3JtLCBldGMuKSB0byB2ZXJpZnkgVExTIGNlcnRpZmljYXRlcyB3aGVuIHVzaW5nIGh0dHBQcm94eVBvcnQgd2l0aCBhIE1JVE0gcHJveHkgYW5kIGN1c3RvbSBDQS4gXCIrXCIqKlJlZHVjZXMgc2VjdXJpdHkqKiBcdTIwMTQgb3BlbnMgYSBwb3RlbnRpYWwgZGF0YSBleGZpbHRyYXRpb24gdmVjdG9yIHRocm91Z2ggdGhlIHRydXN0ZCBzZXJ2aWNlLiBEZWZhdWx0OiBmYWxzZVwiKSxleGNsdWRlZENvbW1hbmRzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKSxyaXBncmVwOksub2JqZWN0KHtjb21tYW5kOksuc3RyaW5nKCksYXJnczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIHJpcGdyZXAgY29uZmlndXJhdGlvbiBmb3IgYnVuZGxlZCByaXBncmVwIHN1cHBvcnRcIiksYndyYXBQYXRoOksucHJlcHJvY2VzcygoJCk9PnR5cGVvZiAkPT09XCJzdHJpbmdcIiYmakUoJCk/JDp2b2lkIDAsSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiTGludXgvV1NMIG9ubHk6IEFic29sdXRlIHBhdGggdG8gdGhlIGJ3cmFwIChidWJibGV3cmFwKSBiaW5hcnkuIE92ZXJyaWRlcyBhdXRvLWRldGVjdGlvbiB2aWEgUEFUSC4gT25seSBob25vcmVkIGZyb20gYWRtaW4tY29udHJvbGxlZCBtYW5hZ2VkIHNldHRpbmdzLlwiKSxzb2NhdFBhdGg6Sy5wcmVwcm9jZXNzKCgkKT0+dHlwZW9mICQ9PT1cInN0cmluZ1wiJiZqRSgkKT8kOnZvaWQgMCxLLnN0cmluZygpKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJMaW51eC9XU0wgb25seTogQWJzb2x1dGUgcGF0aCB0byB0aGUgc29jYXQgYmluYXJ5IHVzZWQgZm9yIHRoZSBzYW5kYm94IG5ldHdvcmsgcHJveHkuIE92ZXJyaWRlcyBhdXRvLWRldGVjdGlvbiB2aWEgUEFUSC4gT25seSBob25vcmVkIGZyb20gYWRtaW4tY29udHJvbGxlZCBtYW5hZ2VkIHNldHRpbmdzLlwiKX0pLnBhc3N0aHJvdWdoKCkpO3ZhciBJRT1bXCJhdXRvXCIsXCJpdGVybTJcIixcIml0ZXJtMl93aXRoX2JlbGxcIixcInRlcm1pbmFsX2JlbGxcIixcImtpdHR5XCIsXCJnaG9zdHR5XCIsXCJub3RpZmljYXRpb25zX2Rpc2FibGVkXCJdLFJFPVtcIm5vcm1hbFwiLFwidmltXCJdLFBFPVtcImF1dG9cIixcInRtdXhcIixcImluLXByb2Nlc3NcIl0sVWU9W1wiZGFya1wiLFwibGlnaHRcIixcImxpZ2h0LWRhbHRvbml6ZWRcIixcImRhcmstZGFsdG9uaXplZFwiLFwibGlnaHQtYW5zaVwiLFwiZGFyay1hbnNpXCJdLEVFPVtcImF1dG9cIiwuLi5VZV07dmFyIHNEJD1tMCgpPT09XCJtYWNvc1wiP1wiXHUyM0ZBXCI6XCJcdTI1Q0ZcIjt2YXIgZUo9W1wiYWNjZXB0RWRpdHNcIixcImF1dG9cIixcImJ5cGFzc1Blcm1pc3Npb25zXCIsXCJkZWZhdWx0XCIsXCJkb250QXNrXCIsXCJwbGFuXCJdLEhlPVsuLi5lSixcImJ1YmJsZVwiXSxiRT1IZTt2YXIgR0YkPV8oKCk9PnBWLmVudW0oYkUpKSxVRiQ9XygoKT0+cFYuZW51bShlSikpO3ZhciBfRT1bXCJiYXNoXCIsXCJwb3dlcnNoZWxsXCJdO3ZhciAkWD1fKCgpPT5LLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1Blcm1pc3Npb24gcnVsZSBzeW50YXggdG8gZmlsdGVyIHdoZW4gdGhpcyBob29rIHJ1bnMgKGUuZy4sIFwiQmFzaChnaXQgKilcIikuIE9ubHkgcnVucyBpZiB0aGUgdG9vbCBjYWxsIG1hdGNoZXMgdGhlIHBhdHRlcm4uIEF2b2lkcyBzcGF3bmluZyBob29rcyBmb3Igbm9uLW1hdGNoaW5nIGNvbW1hbmRzLicpKTtmdW5jdGlvbiBLZSgpe2xldCAkPUsub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcImNvbW1hbmRcIikuZGVzY3JpYmUoXCJTaGVsbCBjb21tYW5kIGhvb2sgdHlwZVwiKSxjb21tYW5kOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJTaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGVcIiksYXJnczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBcmd1bWVudCBsaXN0IGZvciBleGVjIGZvcm0uIFdoZW4gcHJlc2VudCwgYGNvbW1hbmRgIGlzIHJlc29sdmVkIGFzIFwiK1wiYW4gZXhlY3V0YWJsZSBhbmQgc3Bhd25lZCBkaXJlY3RseSB3aXRoIHRoZXNlIGFyZ3VtZW50cyBcdTIwMTQgbm8gc2hlbGwuIFwiK1wiUGF0aCBwbGFjZWhvbGRlcnMgbGlrZSAke0NMQVVERV9QTFVHSU5fUk9PVH0gYXJlIHN1YnN0aXR1dGVkIHBlci1lbGVtZW50IGFzIHBsYWluIHN0cmluZ3MsIHNvIHBhdGhzIHdpdGggcXVvdGVzLCAkLCBvciBiYWNrdGlja3MgbmV2ZXIgcmVhY2ggYSBzaGVsbCBwYXJzZXIuIFdoZW4gYWJzZW50LCBgY29tbWFuZGAgcnVucyB0aHJvdWdoIGEgc2hlbGwgKGJhc2ggb24gUE9TSVgsIFBvd2VyU2hlbGwgb24gV2luZG93cyB3aXRob3V0IEdpdCBCYXNoKS5cIiksaWY6JFgoKSxzaGVsbDpLLmVudW0oX0UpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTaGVsbCBpbnRlcnByZXRlci4gJ2Jhc2gnIHVzZXMgeW91ciAkU0hFTEwgKGJhc2gvenNoL3NoKTsgJ3Bvd2Vyc2hlbGwnIHVzZXMgcHdzaC4gRGVmYXVsdHMgdG8gYmFzaCAocG93ZXJzaGVsbCBvbiBXaW5kb3dzIHdpdGhvdXQgR2l0IEJhc2gpLlwiKSx0aW1lb3V0OksubnVtYmVyKCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZW91dCBpbiBzZWNvbmRzIGZvciB0aGlzIHNwZWNpZmljIGNvbW1hbmRcIiksc3RhdHVzTWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiBzcGlubmVyIHdoaWxlIGhvb2sgcnVuc1wiKSxvbmNlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBob29rIHJ1bnMgb25jZSBhbmQgaXMgcmVtb3ZlZCBhZnRlciBleGVjdXRpb25cIiksYXN5bmM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGhvb2sgcnVucyBpbiBiYWNrZ3JvdW5kIHdpdGhvdXQgYmxvY2tpbmdcIiksYXN5bmNSZXdha2U6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIGhvb2sgcnVucyBpbiBiYWNrZ3JvdW5kIGFuZCB3YWtlcyB0aGUgbW9kZWwgb24gZXhpdCBjb2RlIDIgKGJsb2NraW5nIGVycm9yKS4gSW1wbGllcyBhc3luYy5cIikscmV3YWtlTWVzc2FnZTpLLnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQGludGVybmFsIEN1c3RvbSBwcmVmaXggZm9yIHRoZSBzeXN0ZW0tcmVtaW5kZXIgc2hvd24gdG8gdGhlIG1vZGVsIHdoZW4gYW4gYXN5bmNSZXdha2UgaG9vayBleGl0cyB3aXRoIGNvZGUgMi4gVGhlIGhvb2sgb3V0cHV0IGlzIGFwcGVuZGVkIGFmdGVyIHRoaXMgcHJlZml4LlwiKSxyZXdha2VTdW1tYXJ5Oksuc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0BpbnRlcm5hbCBPbmUtbGluZSBzdW1tYXJ5IHNob3duIHRvIHRoZSB1c2VyIGluIHRoZSB0ZXJtaW5hbCB3aGVuIGFuIGFzeW5jUmV3YWtlIGhvb2sgZXhpdHMgd2l0aCBjb2RlIDIuIERlZmF1bHRzIHRvIFwiU3RvcCBob29rIGZlZWRiYWNrXCIuJyl9KSxRPUsub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcInByb21wdFwiKS5kZXNjcmliZShcIkxMTSBwcm9tcHQgaG9vayB0eXBlXCIpLHByb21wdDpLLnN0cmluZygpLmRlc2NyaWJlKFwiUHJvbXB0IHRvIGV2YWx1YXRlIHdpdGggTExNLiBVc2UgJEFSR1VNRU5UUyBwbGFjZWhvbGRlciBmb3IgaG9vayBpbnB1dCBKU09OLlwiKSxpZjokWCgpLHRpbWVvdXQ6Sy5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaW1lb3V0IGluIHNlY29uZHMgZm9yIHRoaXMgc3BlY2lmaWMgcHJvbXB0IGV2YWx1YXRpb25cIiksbW9kZWw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdNb2RlbCB0byB1c2UgZm9yIHRoaXMgcHJvbXB0IGhvb2sgKGUuZy4sIFwiY2xhdWRlLXNvbm5ldC00LTZcIikuIElmIG5vdCBzcGVjaWZpZWQsIHVzZXMgdGhlIGRlZmF1bHQgc21hbGwgZmFzdCBtb2RlbC4nKSxjb250aW51ZU9uQmxvY2s6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShgU2V0cyB0aGUgY29udGludWUgdmFsdWUgZm9yIHRoZSBkZWNpc2lvbjpcImJsb2NrXCIgcHJvZHVjZWQgd2hlbiBvayBpcyBmYWxzZS4gRGVmYXVsdCBmYWxzZSAodHVybiBlbmRzKS4gV2hldGhlciBjb250aW51ZTp0cnVlIGxldHMgdGhlIHR1cm4gcHJvY2VlZCBkZXBlbmRzIG9uIHRoZSBldmVudCdzIGRlY2lzaW9uOlwiYmxvY2tcIiBzZW1hbnRpY3MuIE9uIFBvc3RUb29sVXNlLCB0aGUgcmVhc29uIGlzIGZlZCBiYWNrIHRvIENsYXVkZSBhbmQgdGhlIHR1cm4gY29udGludWVzLmApLHN0YXR1c01lc3NhZ2U6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIHN0YXR1cyBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gc3Bpbm5lciB3aGlsZSBob29rIHJ1bnNcIiksb25jZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgdHJ1ZSwgaG9vayBydW5zIG9uY2UgYW5kIGlzIHJlbW92ZWQgYWZ0ZXIgZXhlY3V0aW9uXCIpfSksSj1LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJtY3BfdG9vbFwiKS5kZXNjcmliZShcIk1DUCB0b29sIGhvb2sgdHlwZVwiKSxzZXJ2ZXI6Sy5zdHJpbmcoKS5kZXNjcmliZShcIk5hbWUgb2YgYW4gYWxyZWFkeS1jb25maWd1cmVkIE1DUCBzZXJ2ZXIgdG8gaW52b2tlXCIpLHRvb2w6Sy5zdHJpbmcoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIHRvb2wgb24gdGhhdCBzZXJ2ZXIgdG8gY2FsbFwiKSxpbnB1dDpLLnJlY29yZChLLnN0cmluZygpLEsudW5rbm93bigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBNQ1AgdG9vbC4gU3RyaW5nIHZhbHVlcyBzdXBwb3J0ICR7cGF0aH0gaW50ZXJwb2xhdGlvbiBmcm9tIHRoZSBob29rIGlucHV0IEpTT04gKGUuZy4gXCIke3Rvb2xfaW5wdXQuZmlsZV9wYXRofVwiKS4nKSxpZjokWCgpLHRpbWVvdXQ6Sy5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaW1lb3V0IGluIHNlY29uZHMgZm9yIHRoaXMgc3BlY2lmaWMgdG9vbCBjYWxsXCIpLHN0YXR1c01lc3NhZ2U6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIHN0YXR1cyBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gc3Bpbm5lciB3aGlsZSBob29rIHJ1bnNcIiksb25jZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgdHJ1ZSwgaG9vayBydW5zIG9uY2UgYW5kIGlzIHJlbW92ZWQgYWZ0ZXIgZXhlY3V0aW9uXCIpfSksWT1LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJodHRwXCIpLmRlc2NyaWJlKFwiSFRUUCBob29rIHR5cGVcIiksdXJsOksuc3RyaW5nKCkudXJsKCkuZGVzY3JpYmUoXCJVUkwgdG8gUE9TVCB0aGUgaG9vayBpbnB1dCBKU09OIHRvXCIpLGlmOiRYKCksdGltZW91dDpLLm51bWJlcigpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhpcyBzcGVjaWZpYyByZXF1ZXN0XCIpLGhlYWRlcnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBZGRpdGlvbmFsIGhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC4gVmFsdWVzIG1heSByZWZlcmVuY2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHVzaW5nICRWQVJfTkFNRSBvciAke1ZBUl9OQU1FfSBzeW50YXggKGUuZy4sIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciAkTVlfVE9LRU5cIikuIE9ubHkgdmFyaWFibGVzIGxpc3RlZCBpbiBhbGxvd2VkRW52VmFycyB3aWxsIGJlIGludGVycG9sYXRlZC4nKSxhbGxvd2VkRW52VmFyczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFeHBsaWNpdCBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIHRoYXQgbWF5IGJlIGludGVycG9sYXRlZCBpbiBoZWFkZXIgdmFsdWVzLiBPbmx5IHZhcmlhYmxlcyBsaXN0ZWQgaGVyZSB3aWxsIGJlIHJlc29sdmVkOyBhbGwgb3RoZXIgJFZBUiByZWZlcmVuY2VzIGFyZSBsZWZ0IGFzIGVtcHR5IHN0cmluZ3MuIFJlcXVpcmVkIGZvciBlbnYgdmFyIGludGVycG9sYXRpb24gdG8gd29yay5cIiksc3RhdHVzTWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiBzcGlubmVyIHdoaWxlIGhvb2sgcnVuc1wiKSxvbmNlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBob29rIHJ1bnMgb25jZSBhbmQgaXMgcmVtb3ZlZCBhZnRlciBleGVjdXRpb25cIil9KSxYPUsub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcImFnZW50XCIpLmRlc2NyaWJlKFwiQWdlbnRpYyB2ZXJpZmllciBob29rIHR5cGVcIikscHJvbXB0Oksuc3RyaW5nKCkuZGVzY3JpYmUoJ1Byb21wdCBkZXNjcmliaW5nIHdoYXQgdG8gdmVyaWZ5IChlLmcuIFwiVmVyaWZ5IHRoYXQgdW5pdCB0ZXN0cyByYW4gYW5kIHBhc3NlZC5cIikuIFVzZSAkQVJHVU1FTlRTIHBsYWNlaG9sZGVyIGZvciBob29rIGlucHV0IEpTT04uJyksaWY6JFgoKSx0aW1lb3V0OksubnVtYmVyKCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZW91dCBpbiBzZWNvbmRzIGZvciBhZ2VudCBleGVjdXRpb24gKGRlZmF1bHQgNjApXCIpLG1vZGVsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnTW9kZWwgdG8gdXNlIGZvciB0aGlzIGFnZW50IGhvb2sgKGUuZy4sIFwiY2xhdWRlLXNvbm5ldC00LTZcIikuIElmIG5vdCBzcGVjaWZpZWQsIHVzZXMgSGFpa3UuJyksc3RhdHVzTWVzc2FnZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiBzcGlubmVyIHdoaWxlIGhvb2sgcnVuc1wiKSxvbmNlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCBob29rIHJ1bnMgb25jZSBhbmQgaXMgcmVtb3ZlZCBhZnRlciBleGVjdXRpb25cIil9KTtyZXR1cm57QmFzaENvbW1hbmRIb29rU2NoZW1hOiQsUHJvbXB0SG9va1NjaGVtYTpRLEh0dHBIb29rU2NoZW1hOlksQWdlbnRIb29rU2NoZW1hOlgsTWNwVG9vbEhvb2tTY2hlbWE6Sn19dmFyIFNFPV8oKCk9PntsZXR7QmFzaENvbW1hbmRIb29rU2NoZW1hOiQsUHJvbXB0SG9va1NjaGVtYTpRLEFnZW50SG9va1NjaGVtYTpKLEh0dHBIb29rU2NoZW1hOlksTWNwVG9vbEhvb2tTY2hlbWE6WH09S2UoKTtyZXR1cm4gSy5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsWyQsUSxKLFksWF0pfSksa0U9XygoKT0+Sy5vYmplY3Qoe21hdGNoZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdTdHJpbmcgcGF0dGVybiB0byBtYXRjaCAoZS5nLiB0b29sIG5hbWVzIGxpa2UgXCJXcml0ZVwiKScpLGhvb2tzOksuYXJyYXkoU0UoKSkuZGVzY3JpYmUoXCJMaXN0IG9mIGhvb2tzIHRvIGV4ZWN1dGUgd2hlbiB0aGUgbWF0Y2hlciBtYXRjaGVzXCIpfSkpLGMwPV8oKCk9PksucGFydGlhbFJlY29yZChLLmVudW0oczApLEsuYXJyYXkoa0UoKSkpKTt2YXIgREYkPV8oKCk9PksuZW51bShbXCJsb2NhbFwiLFwidXNlclwiLFwicHJvamVjdFwiLFwiZHluYW1pY1wiLFwiZW50ZXJwcmlzZVwiLFwiY2xhdWRlYWlcIixcIm1hbmFnZWRcIixcImFnZW50XCJdKSksRkYkPV8oKCk9PksuZW51bShbXCJzdGRpb1wiLFwic3NlXCIsXCJzc2UtaWRlXCIsXCJodHRwXCIsXCJ3c1wiLFwic2RrXCJdKSkscWU9XygoKT0+Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwic3RkaW9cIikub3B0aW9uYWwoKSxjb21tYW5kOksuc3RyaW5nKCkubWluKDEsXCJDb21tYW5kIGNhbm5vdCBiZSBlbXB0eVwiKSxhcmdzOksuYXJyYXkoSy5zdHJpbmcoKSkuZGVmYXVsdChbXSksZW52OksucmVjb3JkKEsuc3RyaW5nKCksSy5zdHJpbmcoKSkub3B0aW9uYWwoKSxhbHdheXNMb2FkOksuYm9vbGVhbigpLm9wdGlvbmFsKCl9KSksVmU9XygoKT0+Sy5ib29sZWFuKCkpLHZFPV8oKCk9Pksub2JqZWN0KHtjbGllbnRJZDpLLnN0cmluZygpLm9wdGlvbmFsKCksY2FsbGJhY2tQb3J0OksubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLGF1dGhTZXJ2ZXJNZXRhZGF0YVVybDpLLnN0cmluZygpLnVybCgpLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiLHttZXNzYWdlOlwiYXV0aFNlcnZlck1ldGFkYXRhVXJsIG11c3QgdXNlIGh0dHBzOi8vXCJ9KS5vcHRpb25hbCgpLHNjb3BlczpLLnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLHhhYTpWZSgpLm9wdGlvbmFsKCl9KSksQmU9XygoKT0+Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwic3NlXCIpLHVybDpLLnN0cmluZygpLGhlYWRlcnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLGhlYWRlcnNIZWxwZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLG9hdXRoOnZFKCkub3B0aW9uYWwoKSxhbHdheXNMb2FkOksuYm9vbGVhbigpLm9wdGlvbmFsKCl9KSksemU9XygoKT0+Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwic3NlLWlkZVwiKSx1cmw6Sy5zdHJpbmcoKSxpZGVOYW1lOksuc3RyaW5nKCksaWRlUnVubmluZ0luV2luZG93czpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSxOZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJ3cy1pZGVcIiksdXJsOksuc3RyaW5nKCksaWRlTmFtZTpLLnN0cmluZygpLGF1dGhUb2tlbjpLLnN0cmluZygpLm9wdGlvbmFsKCksaWRlUnVubmluZ0luV2luZG93czpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSx3ZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmVudW0oW1wiaHR0cFwiLFwic3RyZWFtYWJsZS1odHRwXCJdKS50cmFuc2Zvcm0oKCk9PlwiaHR0cFwiKSx1cmw6Sy5zdHJpbmcoKSxoZWFkZXJzOksucmVjb3JkKEsuc3RyaW5nKCksSy5zdHJpbmcoKSkub3B0aW9uYWwoKSxoZWFkZXJzSGVscGVyOksuc3RyaW5nKCkub3B0aW9uYWwoKSxvYXV0aDp2RSgpLm9wdGlvbmFsKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkpLE9lPV8oKCk9Pksub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcIndzXCIpLHVybDpLLnN0cmluZygpLGhlYWRlcnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLGhlYWRlcnNIZWxwZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSxEZT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJzZGtcIiksbmFtZTpLLnN0cmluZygpLGFsd2F5c0xvYWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKX0pKSxGZT1fKCgpPT5LLmVudW0oW1wiYWxsb3dcIixcImFza1wiLFwiYmxvY2tlZFwiXSkpLFplPV8oKCk9Pksub2JqZWN0KHt0eXBlOksubGl0ZXJhbChcImNsYXVkZWFpLXByb3h5XCIpLHVybDpLLnN0cmluZygpLGlkOksuc3RyaW5nKCksYWx3YXlzTG9hZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLHRvb2xQZXJtaXNzaW9uczpLLnJlY29yZChLLnN0cmluZygpLEZlKCkpLm9wdGlvbmFsKCl9KSksR0c9XygoKT0+Sy51bmlvbihbcWUoKSxCZSgpLHplKCksTmUoKSx3ZSgpLE9lKCksRGUoKSxaZSgpXSkpLFpGJD1fKCgpPT5LLm9iamVjdCh7bWNwU2VydmVyczpLLnJlY29yZChLLnN0cmluZygpLEdHKCkpfSkpO3ZhciBmRT1uZXcgU2V0KFtcImNsYXVkZS1jb2RlLW1hcmtldHBsYWNlXCIsXCJjbGF1ZGUtY29kZS1wbHVnaW5zXCIsXCJjbGF1ZGUtcGx1Z2lucy1vZmZpY2lhbFwiLFwiYW50aHJvcGljLW1hcmtldHBsYWNlXCIsXCJhbnRocm9waWMtcGx1Z2luc1wiLFwiYWdlbnQtc2tpbGxzXCIsXCJhbnRocm9waWMtYWdlbnQtc2tpbGxzXCIsXCJsaWZlLXNjaWVuY2VzXCIsXCJrbm93bGVkZ2Utd29yay1wbHVnaW5zXCJdKTt2YXIgTWU9Lyg/Om9mZmljaWFsW15hLXowLTldKihhbnRocm9waWN8Y2xhdWRlKXwoPzphbnRocm9waWN8Y2xhdWRlKVteYS16MC05XSpvZmZpY2lhbHxeKD86YW50aHJvcGljfGNsYXVkZSlbXmEtejAtOV0qKG1hcmtldHBsYWNlfHBsdWdpbnN8b2ZmaWNpYWwpKS9pLExlPS9bXlxcdTAwMjAtXFx1MDA3RV0vO2Z1bmN0aW9uIGplKCQpe2lmKGZFLmhhcygkLnRvTG93ZXJDYXNlKCkpKXJldHVybiExO2lmKExlLnRlc3QoJCkpcmV0dXJuITA7cmV0dXJuIE1lLnRlc3QoJCl9dmFyIE00PV8oKCk9Pksuc3RyaW5nKCkuc3RhcnRzV2l0aChcIi4vXCIpKSxwMD1fKCgpPT5NNCgpLmVuZHNXaXRoKFwiLmpzb25cIikpLENFPV8oKCk9PksudW5pb24oW000KCkucmVmaW5lKCgkKT0+JC5lbmRzV2l0aChcIi5tY3BiXCIpfHwkLmVuZHNXaXRoKFwiLmR4dFwiKSx7bWVzc2FnZTpcIk1DUEIgZmlsZSBwYXRoIG11c3QgZW5kIHdpdGggLm1jcGIgb3IgLmR4dFwifSkuZGVzY3JpYmUoXCJQYXRoIHRvIE1DUEIgZmlsZSByZWxhdGl2ZSB0byBwbHVnaW4gcm9vdFwiKSxLLnN0cmluZygpLnVybCgpLnJlZmluZSgoJCk9PiQuZW5kc1dpdGgoXCIubWNwYlwiKXx8JC5lbmRzV2l0aChcIi5keHRcIikse21lc3NhZ2U6XCJNQ1BCIFVSTCBtdXN0IGVuZCB3aXRoIC5tY3BiIG9yIC5keHRcIn0pLmRlc2NyaWJlKFwiVVJMIHRvIE1DUEIgZmlsZVwiKV0pKSx2ej1fKCgpPT5NNCgpLmVuZHNXaXRoKFwiLm1kXCIpKSxDej1fKCgpPT5LLnVuaW9uKFt2eigpLE00KCldKSkseUU9XygoKT0+Sy5zdHJpbmcoKS5taW4oMSxcIk1hcmtldHBsYWNlIG11c3QgaGF2ZSBhIG5hbWVcIikucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIgXCIpLHttZXNzYWdlOidNYXJrZXRwbGFjZSBuYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcy4gVXNlIGtlYmFiLWNhc2UgKGUuZy4sIFwibXktbWFya2V0cGxhY2VcIiknfSkucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIvXCIpJiYhJC5pbmNsdWRlcyhcIlxcXFxcIikmJiEkLmluY2x1ZGVzKFwiLi5cIikmJiQhPT1cIi5cIix7bWVzc2FnZTonTWFya2V0cGxhY2UgbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKC8gb3IgXFxcXCksIFwiLi5cIiBzZXF1ZW5jZXMsIG9yIGJlIFwiLlwiJ30pLnJlZmluZSgoJCk9PiFqZSgkKSx7bWVzc2FnZTpcIk1hcmtldHBsYWNlIG5hbWUgaW1wZXJzb25hdGVzIGFuIG9mZmljaWFsIEFudGhyb3BpYy9DbGF1ZGUgbWFya2V0cGxhY2VcIn0pLnJlZmluZSgoJCk9PiQudG9Mb3dlckNhc2UoKSE9PVwiaW5saW5lXCIse21lc3NhZ2U6J01hcmtldHBsYWNlIG5hbWUgXCJpbmxpbmVcIiBpcyByZXNlcnZlZCBmb3IgLS1wbHVnaW4tZGlyIHNlc3Npb24gcGx1Z2lucyd9KS5yZWZpbmUoKCQpPT4kLnRvTG93ZXJDYXNlKCkhPT1cImJ1aWx0aW5cIix7bWVzc2FnZTonTWFya2V0cGxhY2UgbmFtZSBcImJ1aWx0aW5cIiBpcyByZXNlcnZlZCBmb3IgYnVpbHQtaW4gcGx1Z2lucyd9KS5yZWZpbmUoKCQpPT4kLnRvTG93ZXJDYXNlKCkhPT1cInNraWxscy1kaXJcIix7bWVzc2FnZTonTWFya2V0cGxhY2UgbmFtZSBcInNraWxscy1kaXJcIiBpcyByZXNlcnZlZCBmb3IgcGx1Z2lucyBhdXRvLWxvYWRlZCBmcm9tIC5jbGF1ZGUvc2tpbGxzLyd9KSksVHo9XygoKT0+Sy5vYmplY3Qoe25hbWU6Sy5zdHJpbmcoKS5taW4oMSxcIkF1dGhvciBuYW1lIGNhbm5vdCBiZSBlbXB0eVwiKS5kZXNjcmliZShcIkRpc3BsYXkgbmFtZSBvZiB0aGUgcGx1Z2luIGF1dGhvciBvciBvcmdhbml6YXRpb25cIiksZW1haWw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29udGFjdCBlbWFpbCBmb3Igc3VwcG9ydCBvciBmZWVkYmFja1wiKSx1cmw6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2Vic2l0ZSwgR2l0SHViIHByb2ZpbGUsIG9yIG9yZ2FuaXphdGlvbiBVUkxcIil9KSksQWU9XygoKT0+Sy5vYmplY3QoeyRzY2hlbWE6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSlNPTiBTY2hlbWEgcmVmZXJlbmNlIGZvciBlZGl0b3IgYXV0b2NvbXBsZXRlL3ZhbGlkYXRpb247IGlnbm9yZWQgYXQgbG9hZCB0aW1lXCIpLG5hbWU6Sy5zdHJpbmcoKS5taW4oMSxcIlBsdWdpbiBuYW1lIGNhbm5vdCBiZSBlbXB0eVwiKS5yZWZpbmUoKCQpPT4hJC5pbmNsdWRlcyhcIiBcIikse21lc3NhZ2U6J1BsdWdpbiBuYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcy4gVXNlIGtlYmFiLWNhc2UgKGUuZy4sIFwibXktcGx1Z2luXCIpJ30pLmRlc2NyaWJlKFwiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwbHVnaW4sIHVzZWQgZm9yIG5hbWVzcGFjaW5nIChwcmVmZXIga2ViYWItY2FzZSlcIiksdmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTZW1hbnRpYyB2ZXJzaW9uIChlLmcuLCAxLjIuMykgZm9sbG93aW5nIHNlbXZlci5vcmcgc3BlY2lmaWNhdGlvblwiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJCcmllZiwgdXNlci1mYWNpbmcgZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGUgcGx1Z2luIHByb3ZpZGVzXCIpLGF1dGhvcjpUeigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGx1Z2luIGNyZWF0b3Igb3IgbWFpbnRhaW5lclwiKSxob21lcGFnZTpLLnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQbHVnaW4gaG9tZXBhZ2Ugb3IgZG9jdW1lbnRhdGlvbiBVUkxcIikscmVwb3NpdG9yeTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTb3VyY2UgY29kZSByZXBvc2l0b3J5IFVSTFwiKSxsaWNlbnNlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNQRFggbGljZW5zZSBpZGVudGlmaWVyIChlLmcuLCBNSVQsIEFwYWNoZS0yLjApXCIpLGtleXdvcmRzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRhZ3MgZm9yIHBsdWdpbiBkaXNjb3ZlcnkgYW5kIGNhdGVnb3JpemF0aW9uXCIpLGRlcGVuZGVuY2llczpLLmFycmF5KGRlKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFBsdWdpbnMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoaXMgcGx1Z2luIHRvIGZ1bmN0aW9uLiBCYXJlIG5hbWVzIChubyBcIkBtYXJrZXRwbGFjZVwiKSBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgZGVjbGFyaW5nIHBsdWdpbidzIG93biBtYXJrZXRwbGFjZS5gKX0pKSxFRiQ9XygoKT0+Sy5vYmplY3Qoe2Rlc2NyaXB0aW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkJyaWVmLCB1c2VyLWZhY2luZyBleHBsYW5hdGlvbiBvZiB3aGF0IHRoZXNlIGhvb2tzIHByb3ZpZGVcIiksaG9va3M6Sy5sYXp5KCgpPT5jMCgpKS5kZXNjcmliZShcIlRoZSBob29rcyBwcm92aWRlZCBieSB0aGUgcGx1Z2luLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIG9uZSB1c2VkIGZvciBzZXR0aW5nc1wiKX0pKSxJZT1fKCgpPT5LLm9iamVjdCh7aG9va3M6Sy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gZmlsZSB3aXRoIGFkZGl0aW9uYWwgaG9va3MgKGluIGFkZGl0aW9uIHRvIHRob3NlIGluIGhvb2tzL2hvb2tzLmpzb24sIGlmIGl0IGV4aXN0cyksIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdFwiKSxLLmxhenkoKCk9PmMwKCkpLmRlc2NyaWJlKFwiQWRkaXRpb25hbCBob29rcyAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gaG9va3MvaG9va3MuanNvbiwgaWYgaXQgZXhpc3RzKVwiKSxLLmFycmF5KEsudW5pb24oW3AwKCkuZGVzY3JpYmUoXCJQYXRoIHRvIGZpbGUgd2l0aCBhZGRpdGlvbmFsIGhvb2tzIChpbiBhZGRpdGlvbiB0byB0aG9zZSBpbiBob29rcy9ob29rcy5qc29uLCBpZiBpdCBleGlzdHMpLCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3RcIiksSy5sYXp5KCgpPT5jMCgpKS5kZXNjcmliZShcIkFkZGl0aW9uYWwgaG9va3MgKGluIGFkZGl0aW9uIHRvIHRob3NlIGluIGhvb2tzL2hvb2tzLmpzb24sIGlmIGl0IGV4aXN0cylcIildKSldKX0pKSxSZT1fKCgpPT5LLm9iamVjdCh7c291cmNlOkN6KCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhdGggdG8gY29tbWFuZCBtYXJrZG93biBmaWxlLCByZWxhdGl2ZSB0byBwbHVnaW4gcm9vdFwiKSxjb250ZW50Oksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklubGluZSBtYXJrZG93biBjb250ZW50IGZvciB0aGUgY29tbWFuZFwiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21tYW5kIGRlc2NyaXB0aW9uIG92ZXJyaWRlXCIpLGFyZ3VtZW50SGludDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0hpbnQgZm9yIGNvbW1hbmQgYXJndW1lbnRzIChlLmcuLCBcIltmaWxlXVwiKScpLG1vZGVsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgbW9kZWwgZm9yIHRoaXMgY29tbWFuZFwiKSxhbGxvd2VkVG9vbHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG9vbHMgYWxsb3dlZCB3aGVuIGNvbW1hbmQgcnVuc1wiKX0pLnJlZmluZSgoJCk9PiQuc291cmNlJiYhJC5jb250ZW50fHwhJC5zb3VyY2UmJiQuY29udGVudCx7bWVzc2FnZTonQ29tbWFuZCBtdXN0IGhhdmUgZWl0aGVyIFwic291cmNlXCIgKGZpbGUgcGF0aCkgb3IgXCJjb250ZW50XCIgKGlubGluZSBtYXJrZG93biksIGJ1dCBub3QgYm90aCd9KSksUGU9XygoKT0+Sy5vYmplY3Qoe2NvbW1hbmRzOksudW5pb24oW0N6KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgY29tbWFuZCBmaWxlIG9yIHNraWxsIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBXaGVuIHNldCwgdGhlIGNvbW1hbmRzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkIFx1MjAxNCBsaXN0IGl0cyBmaWxlcyBoZXJlIGlmIHlvdSB3YW50IGJvdGguXCIpLEsuYXJyYXkoQ3ooKS5kZXNjcmliZShcIlBhdGggdG8gYSBjb21tYW5kIGZpbGUgb3Igc2tpbGwgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgY29tbWFuZHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIikpLmRlc2NyaWJlKFwiTGlzdCBvZiBjb21tYW5kIGZpbGUgb3Igc2tpbGwgZGlyZWN0b3J5IHBhdGhzLiBXaGVuIHNldCwgdGhlIGNvbW1hbmRzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkLlwiKSxLLnJlY29yZChLLnN0cmluZygpLFJlKCkpLmRlc2NyaWJlKCdPYmplY3QgbWFwcGluZyBvZiBjb21tYW5kIG5hbWVzIHRvIHRoZWlyIG1ldGFkYXRhIGFuZCBzb3VyY2UgZmlsZXMuIENvbW1hbmQgbmFtZSBiZWNvbWVzIHRoZSBzbGFzaCBjb21tYW5kIG5hbWUgKGUuZy4sIFwiYWJvdXRcIiBcdTIxOTIgXCIvcGx1Z2luOmFib3V0XCIpJyldKX0pKSxFZT1fKCgpPT5LLm9iamVjdCh7YWdlbnRzOksudW5pb24oW3Z6KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGFuIGFnZW50IGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gV2hlbiBzZXQsIHRoZSBhZ2VudHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIiksSy5hcnJheSh2eigpLmRlc2NyaWJlKFwiUGF0aCB0byBhbiBhZ2VudCBmaWxlLCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgYWdlbnRzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkIFx1MjAxNCBsaXN0IGl0cyBmaWxlcyBoZXJlIGlmIHlvdSB3YW50IGJvdGguXCIpKS5kZXNjcmliZShcIkxpc3Qgb2YgYWdlbnQgZmlsZSBwYXRocy4gV2hlbiBzZXQsIHRoZSBhZ2VudHMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQuXCIpXSl9KSksYmU9XygoKT0+Sy5vYmplY3Qoe3NraWxsczpLLnVuaW9uKFtNNCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHNraWxsIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBMb2FkZWQgaW4gYWRkaXRpb24gdG8gdGhlIHNraWxscy8gZGlyZWN0b3J5LlwiKSxLLmFycmF5KE00KCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgc2tpbGwgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIExvYWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgc2tpbGxzLyBkaXJlY3RvcnkuXCIpKS5kZXNjcmliZShcIkxpc3Qgb2Ygc2tpbGwgZGlyZWN0b3J5IHBhdGhzLCBsb2FkZWQgaW4gYWRkaXRpb24gdG8gdGhlIHNraWxscy8gZGlyZWN0b3J5LlwiKV0pfSkpLGdFPV8oKCk9Pksub2JqZWN0KHtvdXRwdXRTdHlsZXM6Sy51bmlvbihbTTQoKS5kZXNjcmliZShcIlBhdGggdG8gYW4gb3V0cHV0LXN0eWxlcyBkaXJlY3Rvcnkgb3IgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBXaGVuIHNldCwgdGhlIG91dHB1dC1zdHlsZXMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIiksSy5hcnJheShNNCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhbiBvdXRwdXQtc3R5bGVzIGRpcmVjdG9yeSBvciBmaWxlLCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3QuIFdoZW4gc2V0LCB0aGUgb3V0cHV0LXN0eWxlcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSkuZGVzY3JpYmUoXCJMaXN0IG9mIG91dHB1dC1zdHlsZSBkaXJlY3Rvcnkgb3IgZmlsZSBwYXRocy4gV2hlbiBzZXQsIHRoZSBvdXRwdXQtc3R5bGVzLyBkaXJlY3RvcnkgaXMgbm90IGF1dG8tbG9hZGVkLlwiKV0pfSkpLGhFPV8oKCk9Pksub2JqZWN0KHt0aGVtZXM6Sy51bmlvbihbTTQoKS5kZXNjcmliZShcIlBhdGggdG8gYSB0aGVtZXMgZGlyZWN0b3J5IG9yIGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gcm9vdC4gV2hlbiBzZXQsIHRoZSB0aGVtZXMvIGRpcmVjdG9yeSBpcyBub3QgYXV0by1sb2FkZWQgXHUyMDE0IGxpc3QgaXRzIGZpbGVzIGhlcmUgaWYgeW91IHdhbnQgYm90aC5cIiksSy5hcnJheShNNCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHRoZW1lcyBkaXJlY3Rvcnkgb3IgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiByb290LiBXaGVuIHNldCwgdGhlIHRoZW1lcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZCBcdTIwMTQgbGlzdCBpdHMgZmlsZXMgaGVyZSBpZiB5b3Ugd2FudCBib3RoLlwiKSkuZGVzY3JpYmUoXCJMaXN0IG9mIHRoZW1lIGRpcmVjdG9yeSBvciBmaWxlIHBhdGhzLiBXaGVuIHNldCwgdGhlIHRoZW1lcy8gZGlyZWN0b3J5IGlzIG5vdCBhdXRvLWxvYWRlZC5cIildKX0pKSxfZT1fKCgpPT5LLm9iamVjdCh7fSkpLFRFPV8oKCk9Pksuc3RyaW5nKCkubWluKDEpKSxTZT1fKCgpPT5LLnN0cmluZygpLm1pbigyKS5yZWZpbmUoKCQpPT4kLnN0YXJ0c1dpdGgoXCIuXCIpLHttZXNzYWdlOidGaWxlIGV4dGVuc2lvbnMgbXVzdCBzdGFydCB3aXRoIGRvdCAoZS5nLiwgXCIudHNcIiwgbm90IFwidHNcIiknfSkpLGtlPV8oKCk9Pksub2JqZWN0KHttY3BTZXJ2ZXJzOksudW5pb24oW3AwKCkuZGVzY3JpYmUoXCJNQ1Agc2VydmVycyB0byBpbmNsdWRlIGluIHRoZSBwbHVnaW4gKGluIGFkZGl0aW9uIHRvIHRob3NlIGluIHRoZSAubWNwLmpzb24gZmlsZSwgaWYgaXQgZXhpc3RzKVwiKSxDRSgpLmRlc2NyaWJlKFwiUGF0aCBvciBVUkwgdG8gTUNQQiBmaWxlIGNvbnRhaW5pbmcgTUNQIHNlcnZlciBjb25maWd1cmF0aW9uXCIpLEsucmVjb3JkKEsuc3RyaW5nKCksR0coKSkuZGVzY3JpYmUoXCJNQ1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zIGtleWVkIGJ5IHNlcnZlciBuYW1lXCIpLEsuYXJyYXkoSy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gTUNQIHNlcnZlcnMgY29uZmlndXJhdGlvbiBmaWxlXCIpLENFKCkuZGVzY3JpYmUoXCJQYXRoIG9yIFVSTCB0byBNQ1BCIGZpbGVcIiksSy5yZWNvcmQoSy5zdHJpbmcoKSxHRygpKS5kZXNjcmliZShcIklubGluZSBNQ1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zXCIpXSkpLmRlc2NyaWJlKFwiQXJyYXkgb2YgTUNQIHNlcnZlciBjb25maWd1cmF0aW9ucyAocGF0aHMsIE1DUEIgZmlsZXMsIG9yIGlubGluZSBkZWZpbml0aW9ucylcIildKX0pKSx1RT1fKCgpPT5LLm9iamVjdCh7dHlwZTpLLmVudW0oW1wic3RyaW5nXCIsXCJudW1iZXJcIixcImJvb2xlYW5cIixcImRpcmVjdG9yeVwiLFwiZmlsZVwiXSkuZGVzY3JpYmUoXCJUeXBlIG9mIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlXCIpLHRpdGxlOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJIdW1hbi1yZWFkYWJsZSBsYWJlbCBzaG93biBpbiB0aGUgY29uZmlnIGRpYWxvZ1wiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLmRlc2NyaWJlKFwiSGVscCB0ZXh0IHNob3duIGJlbmVhdGggdGhlIGZpZWxkIGluIHRoZSBjb25maWcgZGlhbG9nXCIpLHJlcXVpcmVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJZiB0cnVlLCB2YWxpZGF0aW9uIGZhaWxzIHdoZW4gdGhpcyBmaWVsZCBpcyBlbXB0eVwiKSxkZWZhdWx0OksudW5pb24oW0suc3RyaW5nKCksSy5udW1iZXIoKSxLLmJvb2xlYW4oKSxLLmFycmF5KEsuc3RyaW5nKCkpXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgdmFsdWUgdXNlZCB3aGVuIHRoZSB1c2VyIHByb3ZpZGVzIG5vdGhpbmdcIiksbXVsdGlwbGU6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZvciBzdHJpbmcgdHlwZTogYWxsb3cgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiKSxzZW5zaXRpdmU6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHRydWUsIG1hc2tzIGRpYWxvZyBpbnB1dCBhbmQgc3RvcmVzIHZhbHVlIGluIHNlY3VyZSBzdG9yYWdlIChrZXljaGFpbi9jcmVkZW50aWFscyBmaWxlKSBpbnN0ZWFkIG9mIHNldHRpbmdzLmpzb25cIiksbWluOksubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1pbmltdW0gdmFsdWUgKG51bWJlciB0eXBlIG9ubHkpXCIpLG1heDpLLm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIHZhbHVlIChudW1iZXIgdHlwZSBvbmx5KVwiKX0pLnN0cmljdCgpKSx2ZT1fKCgpPT5LLm9iamVjdCh7dXNlckNvbmZpZzpLLnJlY29yZChLLnN0cmluZygpLnJlZ2V4KC9eW0EtWmEtel9dXFx3KiQvLFwiT3B0aW9uIGtleXMgbXVzdCBiZSB2YWxpZCBpZGVudGlmaWVycyAobGV0dGVycywgZGlnaXRzLCB1bmRlcnNjb3JlOyBubyBsZWFkaW5nIGRpZ2l0KSBcdTIwMTQgdGhleSBiZWNvbWUgQ0xBVURFX1BMVUdJTl9PUFRJT05fPEtFWT4gZW52IHZhcnMgaW4gaG9va3NcIiksdUUoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVzZXItY29uZmlndXJhYmxlIHZhbHVlcyB0aGlzIHBsdWdpbiBuZWVkcy4gUHJvbXB0ZWQgYXQgZW5hYmxlIHRpbWUuIE5vbi1zZW5zaXRpdmUgdmFsdWVzIHNhdmVkIHRvIHNldHRpbmdzLmpzb247IHNlbnNpdGl2ZSB2YWx1ZXMgdG8gc2VjdXJlIHN0b3JhZ2UuIEF2YWlsYWJsZSBhcyAke3VzZXJfY29uZmlnLktFWX0gaW4gTUNQL0xTUCBzZXJ2ZXIgY29uZmlnLCBob29rIGNvbW1hbmRzLCBhbmQgKG5vbi1zZW5zaXRpdmUgb25seSkgc2tpbGwvYWdlbnQgY29udGVudC4gS2VlcCBzZW5zaXRpdmUgdmFsdWUgY291bnRzIHNtYWxsLlwiKX0pKSxDZT1fKCgpPT5LLm9iamVjdCh7Y2hhbm5lbHM6Sy5hcnJheShLLm9iamVjdCh7c2VydmVyOksuc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiTmFtZSBvZiB0aGUgTUNQIHNlcnZlciB0aGlzIGNoYW5uZWwgYmluZHMgdG8uIE11c3QgbWF0Y2ggYSBrZXkgaW4gdGhpcyBwbHVnaW4ncyBtY3BTZXJ2ZXJzLlwiKSxkaXNwbGF5TmFtZTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0h1bWFuLXJlYWRhYmxlIG5hbWUgc2hvd24gaW4gdGhlIGNvbmZpZyBkaWFsb2cgdGl0bGUgKGUuZy4sIFwiVGVsZWdyYW1cIikuIERlZmF1bHRzIHRvIHRoZSBzZXJ2ZXIgbmFtZS4nKSx1c2VyQ29uZmlnOksucmVjb3JkKEsuc3RyaW5nKCksdUUoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZpZWxkcyB0byBwcm9tcHQgdGhlIHVzZXIgZm9yIHdoZW4gZW5hYmxpbmcgdGhpcyBwbHVnaW4gaW4gYXNzaXN0YW50IG1vZGUuIFNhdmVkIHZhbHVlcyBhcmUgc3Vic3RpdHV0ZWQgaW50byAke3VzZXJfY29uZmlnLktFWX0gcmVmZXJlbmNlcyBpbiB0aGUgbWNwU2VydmVycyBlbnYuXCIpfSkuc3RyaWN0KCkpLmRlc2NyaWJlKFwiQ2hhbm5lbHMgdGhpcyBwbHVnaW4gcHJvdmlkZXMuIEVhY2ggZW50cnkgZGVjbGFyZXMgYW4gTUNQIHNlcnZlciBhcyBhIG1lc3NhZ2UgY2hhbm5lbCBhbmQgb3B0aW9uYWxseSBzcGVjaWZpZXMgdXNlciBjb25maWd1cmF0aW9uIHRvIHByb21wdCBmb3IgYXQgZW5hYmxlIHRpbWUuXCIpfSkpLHhFPV8oKCk9Pksuc3RyaWN0T2JqZWN0KHtjb21tYW5kOksuc3RyaW5nKCkubWluKDEpLnJlZmluZSgoJCk9PntpZigkLmluY2x1ZGVzKFwiIFwiKSYmISQuc3RhcnRzV2l0aChcIi9cIikpcmV0dXJuITE7cmV0dXJuITB9LHttZXNzYWdlOlwiQ29tbWFuZCBzaG91bGQgbm90IGNvbnRhaW4gc3BhY2VzLiBVc2UgYXJncyBhcnJheSBmb3IgYXJndW1lbnRzLlwifSkuZGVzY3JpYmUoJ0NvbW1hbmQgdG8gZXhlY3V0ZSB0aGUgTFNQIHNlcnZlciAoZS5nLiwgXCJ0eXBlc2NyaXB0LWxhbmd1YWdlLXNlcnZlclwiKScpLGFyZ3M6Sy5hcnJheShURSgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29tbWFuZC1saW5lIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBzZXJ2ZXJcIiksZXh0ZW5zaW9uVG9MYW5ndWFnZTpLLnJlY29yZChTZSgpLFRFKCkpLnJlZmluZSgoJCk9Pk9iamVjdC5rZXlzKCQpLmxlbmd0aD4wLHttZXNzYWdlOlwiZXh0ZW5zaW9uVG9MYW5ndWFnZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG1hcHBpbmdcIn0pLmRlc2NyaWJlKFwiTWFwcGluZyBmcm9tIGZpbGUgZXh0ZW5zaW9uIHRvIExTUCBsYW5ndWFnZSBJRC4gRmlsZSBleHRlbnNpb25zIGFuZCBsYW5ndWFnZXMgYXJlIGRlcml2ZWQgZnJvbSB0aGlzIG1hcHBpbmcuXCIpLHRyYW5zcG9ydDpLLmVudW0oW1wic3RkaW9cIixcInNvY2tldFwiXSkuZGVmYXVsdChcInN0ZGlvXCIpLmRlc2NyaWJlKFwiQ29tbXVuaWNhdGlvbiB0cmFuc3BvcnQgbWVjaGFuaXNtXCIpLGVudjpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IHdoZW4gc3RhcnRpbmcgdGhlIHNlcnZlclwiKSxpbml0aWFsaXphdGlvbk9wdGlvbnM6Sy51bmtub3duKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkluaXRpYWxpemF0aW9uIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIGluaXRpYWxpemF0aW9uXCIpLHNldHRpbmdzOksudW5rbm93bigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTZXR0aW5ncyBwYXNzZWQgdG8gdGhlIHNlcnZlciB2aWEgd29ya3NwYWNlL2RpZENoYW5nZUNvbmZpZ3VyYXRpb25cIiksd29ya3NwYWNlRm9sZGVyOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldvcmtzcGFjZSBmb2xkZXIgcGF0aCB0byB1c2UgZm9yIHRoZSBzZXJ2ZXJcIiksc3RhcnR1cFRpbWVvdXQ6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3Igc2VydmVyIHN0YXJ0dXAgKG1pbGxpc2Vjb25kcylcIiksc2h1dGRvd25UaW1lb3V0OksubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIGdyYWNlZnVsIHNodXRkb3duIChtaWxsaXNlY29uZHMpXCIpLHJlc3RhcnRPbkNyYXNoOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRvIHJlc3RhcnQgdGhlIHNlcnZlciBpZiBpdCBjcmFzaGVzXCIpLG1heFJlc3RhcnRzOksubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWF4aW11bSBudW1iZXIgb2YgcmVzdGFydCBhdHRlbXB0cyBiZWZvcmUgZ2l2aW5nIHVwXCIpfSkpLFRlPV8oKCk9Pksuc3RyaWN0T2JqZWN0KHtuYW1lOksuc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiSWRlbnRpZmllciBmb3IgdGhpcyBtb25pdG9yLCB1bmlxdWUgd2l0aGluIHRoZSBwbHVnaW4uIFVzZWQgdG8gZGVkdXBlIHNvIHJlLWFybWluZyAocGx1Z2luIHJlbG9hZCwgcmVwZWF0IHNraWxsIGludm9rZSkgZG9lcyBub3Qgc3Bhd24gZHVwbGljYXRlcy5cIiksY29tbWFuZDpLLnN0cmluZygpLm1pbigxKS5kZXNjcmliZSgnU2hlbGwgY29tbWFuZCB0byBydW4gYXMgYSBwZXJzaXN0ZW50IGJhY2tncm91bmQgbW9uaXRvci4gRWFjaCBzdGRvdXQgbGluZSBpcyBkZWxpdmVyZWQgdG8gdGhlIG1vZGVsIGFzIGEgPHRhc2tfbm90aWZpY2F0aW9uPiBldmVudDsgdGhlIHByb2Nlc3MgcnVucyBmb3IgdGhlIHNlc3Npb24gbGlmZXRpbWUuICR7Q0xBVURFX1BMVUdJTl9ST09UfSwgJHtDTEFVREVfUExVR0lOX0RBVEF9LCAke0NMQVVERV9QUk9KRUNUX0RJUn0sICR7dXNlcl9jb25maWcuKn0sIGFuZCAke0VOVl9WQVJ9IGFyZSBzdWJzdGl0dXRlZC4gUnVucyBpbiB0aGUgc2Vzc2lvbiBjd2QgXHUyMDE0IHByZWZpeCB3aXRoIGBjZCBcIiR7Q0xBVURFX1BMVUdJTl9ST09UfVwiICYmIGAgaWYgdGhlIHNjcmlwdCBuZWVkcyBpdHMgb3duIGRpcmVjdG9yeS4nKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm1pbigxKS5kZXNjcmliZShcIlNob3J0IGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHdoYXQgaXMgYmVpbmcgbW9uaXRvcmVkIChzaG93biBpbiB0YXNrIHBhbmVsIGFuZCBub3RpZmljYXRpb24gc3VtbWFyeSkuXCIpLHdoZW46Sy51bmlvbihbSy5saXRlcmFsKFwiYWx3YXlzXCIpLEsuc3RyaW5nKCkuc3RhcnRzV2l0aChcIm9uLXNraWxsLWludm9rZTpcIikucmVmaW5lKCgkKT0+JC5sZW5ndGg+MTYse21lc3NhZ2U6XCJvbi1za2lsbC1pbnZva2U6IG11c3Qgc3BlY2lmeSBhIHNraWxsIG5hbWVcIn0pXSkuZGVmYXVsdChcImFsd2F5c1wiKS5kZXNjcmliZSgnQXJtIHRyaWdnZXIuIFwiYWx3YXlzXCIgYXJtcyBhdCBzZXNzaW9uIHN0YXJ0IGFuZCBvbiBwbHVnaW4gcmVsb2FkLiBcIm9uLXNraWxsLWludm9rZTo8c2tpbGw+XCIgYXJtcyB0aGUgZmlyc3QgdGltZSB0aGF0IHNraWxsIGlzIGRpc3BhdGNoZWQgKHZpYSBTa2lsbCB0b29sIG9yIHNsYXNoIGNvbW1hbmQpLicpfSkpLHhlPV8oKCk9PksuYXJyYXkoVGUoKSkucmVmaW5lKCgkKT0+bmV3IFNldCgkLm1hcCgoUSk9PlEubmFtZSkpLnNpemU9PT0kLmxlbmd0aCx7bWVzc2FnZTpcIk1vbml0b3IgbmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgcGx1Z2luXCJ9KSksbUU9XygoKT0+Sy5vYmplY3Qoe21vbml0b3JzOksudW5pb24oW3AwKCkuZGVzY3JpYmUoXCJQYXRoIHRvIGEgSlNPTiBmaWxlIGNvbnRhaW5pbmcgdGhlIG1vbml0b3JzIGFycmF5LCByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHJvb3RcIikseGUoKV0pLmRlc2NyaWJlKFwiQmFja2dyb3VuZCB3YXRjaCBzY3JpcHRzIHRoZSBob3N0IGFybXMgYXMgcGVyc2lzdGVudCBNb25pdG9yIHRhc2tzICh1bnNhbmRib3hlZCwgc2FtZSB0cnVzdCB0aWVyIGFzIGhvb2tzKSBzbyBwbHVnaW5zIG5lZWQgbm90IGluc3RydWN0IHRoZSBtb2RlbCB0byBhcm0gdGhlbS4gV2hlbiBvbWl0dGVkLCBtb25pdG9ycy9tb25pdG9ycy5qc29uIGF0IHRoZSBwbHVnaW4gcm9vdCBpcyBsb2FkZWQgaWYgcHJlc2VudC5cIil9KSksZmU9XygoKT0+Sy5vYmplY3Qoe2xzcFNlcnZlcnM6Sy51bmlvbihbcDAoKS5kZXNjcmliZShcIlBhdGggdG8gLmxzcC5qc29uIGNvbmZpZ3VyYXRpb24gZmlsZSByZWxhdGl2ZSB0byBwbHVnaW4gcm9vdFwiKSxLLnJlY29yZChLLnN0cmluZygpLHhFKCkpLmRlc2NyaWJlKFwiTFNQIHNlcnZlciBjb25maWd1cmF0aW9ucyBrZXllZCBieSBzZXJ2ZXIgbmFtZVwiKSxLLmFycmF5KEsudW5pb24oW3AwKCkuZGVzY3JpYmUoXCJQYXRoIHRvIExTUCBjb25maWd1cmF0aW9uIGZpbGVcIiksSy5yZWNvcmQoSy5zdHJpbmcoKSx4RSgpKS5kZXNjcmliZShcIklubGluZSBMU1Agc2VydmVyIGNvbmZpZ3VyYXRpb25zXCIpXSkpLmRlc2NyaWJlKFwiQXJyYXkgb2YgTFNQIHNlcnZlciBjb25maWd1cmF0aW9ucyAocGF0aHMgb3IgaW5saW5lIGRlZmluaXRpb25zKVwiKV0pfSkpLGxFPV8oKCk9Pksuc3RyaW5nKCkucmVmaW5lKCgkKT0+ISQuaW5jbHVkZXMoXCIuLlwiKSYmISQuaW5jbHVkZXMoXCIvL1wiKSxcIlBhY2thZ2UgbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHRyYXZlcnNhbCBwYXR0ZXJuc1wiKS5yZWZpbmUoKCQpPT57bGV0IFE9L15AW2EtejAtOV1bYS16MC05LS5fXSpcXC9bYS16MC05XVthLXowLTktLl9dKiQvLEo9L15bYS16MC05XVthLXowLTktLl9dKiQvO3JldHVybiBRLnRlc3QoJCl8fEoudGVzdCgkKX0sXCJJbnZhbGlkIG5wbSBwYWNrYWdlIG5hbWUgZm9ybWF0XCIpKSx5ZT1fKCgpPT5LLm9iamVjdCh7c2V0dGluZ3M6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnVua25vd24oKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNldHRpbmdzIHRvIG1lcmdlIGludG8gdGhlIHVzZXIgc2V0dGluZ3Mgd2hpbGUgdGhpcyBwbHVnaW4gaXMgZW5hYmxlZC4gT25seSB0aGUgZG9jdW1lbnRlZCBhbGxvd2xpc3RlZCBrZXlzIGFyZSBhcHBsaWVkLlwiKX0pKSxnZT1fKCgpPT5LLm9iamVjdCh7ZXhwZXJpbWVudGFsOksucHJlcHJvY2VzcygoJCk9PnR5cGVvZiAkPT09XCJvYmplY3RcIiYmJCE9PW51bGwmJiFBcnJheS5pc0FycmF5KCQpPyQ6dm9pZCAwLEsub2JqZWN0KHsuLi5oRSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5tRSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5nRSgpLnBhcnRpYWwoKS5zaGFwZSxldmFsczpLLnVuaW9uKFtLLnN0cmluZygpLEsuYXJyYXkoSy5zdHJpbmcoKSldKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aChzKSB0byBldmFsdWF0aW9uIHF1ZXJ5IGZpbGVzIGZvciBgY2xhdWRlIHBsdWdpbiBldmFsYC4gRGVmYXVsdHMgdG8gYGV2YWxzL2AuXCIpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbXBvbmVudHMgd2hvc2UgbWFuaWZlc3Qgc2hhcGUgbWF5IGNoYW5nZSB3aXRob3V0IGEgZGVwcmVjYXRpb24gY3ljbGUuIE1vdmUgYSBrZXkgb3V0IG9mIGhlcmUgb25jZSBpdCBpcyBwcm9tb3RlZCB0byBzdGFibGUuXCIpKX0pKSxoZT1fKCgpPT5LLm9iamVjdCh7Li4uQWUoKS5zaGFwZSwuLi5JZSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5QZSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5FZSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5iZSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5nRSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5oRSgpLnBhcnRpYWwoKS5zaGFwZSwuLi5fZSgpLnNoYXBlLC4uLkNlKCkucGFydGlhbCgpLnNoYXBlLC4uLmtlKCkucGFydGlhbCgpLnNoYXBlLC4uLmZlKCkucGFydGlhbCgpLnNoYXBlLC4uLm1FKCkucGFydGlhbCgpLnNoYXBlLC4uLnllKCkucGFydGlhbCgpLnNoYXBlLC4uLnZlKCkucGFydGlhbCgpLnNoYXBlLC4uLmdlKCkucGFydGlhbCgpLnNoYXBlfSkpLFFYPV8oKCk9PksuZGlzY3JpbWluYXRlZFVuaW9uKFwic291cmNlXCIsW0sub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwidXJsXCIpLHVybDpLLnN0cmluZygpLnVybCgpLmRlc2NyaWJlKFwiRGlyZWN0IFVSTCB0byBtYXJrZXRwbGFjZS5qc29uIGZpbGVcIiksaGVhZGVyczpLLnJlY29yZChLLnN0cmluZygpLEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gSFRUUCBoZWFkZXJzIChlLmcuLCBmb3IgYXV0aGVudGljYXRpb24pXCIpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJnaXRodWJcIikscmVwbzpLLnN0cmluZygpLmRlc2NyaWJlKFwiR2l0SHViIHJlcG9zaXRvcnkgaW4gb3duZXIvcmVwbyBmb3JtYXRcIikscmVmOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnR2l0IGJyYW5jaCBvciB0YWcgdG8gdXNlIChlLmcuLCBcIm1haW5cIiwgXCJ2MS4wLjBcIikuIERlZmF1bHRzIHRvIHJlcG9zaXRvcnkgZGVmYXVsdCBicmFuY2guJykscGF0aDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQYXRoIHRvIG1hcmtldHBsYWNlLmpzb24gd2l0aGluIHJlcG8gKGRlZmF1bHRzIHRvIC5jbGF1ZGUtcGx1Z2luL21hcmtldHBsYWNlLmpzb24pXCIpLHNwYXJzZVBhdGhzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgnRGlyZWN0b3JpZXMgdG8gaW5jbHVkZSB2aWEgZ2l0IHNwYXJzZS1jaGVja291dCAoY29uZSBtb2RlKS4gVXNlIGZvciBtb25vcmVwb3Mgd2hlcmUgdGhlIG1hcmtldHBsYWNlIGxpdmVzIGluIGEgc3ViZGlyZWN0b3J5LiBFeGFtcGxlOiBbXCIuY2xhdWRlLXBsdWdpblwiLCBcInBsdWdpbnNcIl0uIElmIG9taXR0ZWQsIHRoZSBmdWxsIHJlcG9zaXRvcnkgaXMgY2xvbmVkLicpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJnaXRcIiksdXJsOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJGdWxsIGdpdCByZXBvc2l0b3J5IFVSTFwiKSxyZWY6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdHaXQgYnJhbmNoIG9yIHRhZyB0byB1c2UgKGUuZy4sIFwibWFpblwiLCBcInYxLjAuMFwiKS4gRGVmYXVsdHMgdG8gcmVwb3NpdG9yeSBkZWZhdWx0IGJyYW5jaC4nKSxwYXRoOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhdGggdG8gbWFya2V0cGxhY2UuanNvbiB3aXRoaW4gcmVwbyAoZGVmYXVsdHMgdG8gLmNsYXVkZS1wbHVnaW4vbWFya2V0cGxhY2UuanNvbilcIiksc3BhcnNlUGF0aHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdEaXJlY3RvcmllcyB0byBpbmNsdWRlIHZpYSBnaXQgc3BhcnNlLWNoZWNrb3V0IChjb25lIG1vZGUpLiBVc2UgZm9yIG1vbm9yZXBvcyB3aGVyZSB0aGUgbWFya2V0cGxhY2UgbGl2ZXMgaW4gYSBzdWJkaXJlY3RvcnkuIEV4YW1wbGU6IFtcIi5jbGF1ZGUtcGx1Z2luXCIsIFwicGx1Z2luc1wiXS4gSWYgb21pdHRlZCwgdGhlIGZ1bGwgcmVwb3NpdG9yeSBpcyBjbG9uZWQuJyl9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcIm5wbVwiKSxwYWNrYWdlOmxFKCkuZGVzY3JpYmUoXCJOUE0gcGFja2FnZSBjb250YWluaW5nIG1hcmtldHBsYWNlLmpzb25cIil9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcImZpbGVcIikscGF0aDpLLnN0cmluZygpLmRlc2NyaWJlKFwiTG9jYWwgZmlsZSBwYXRoIHRvIG1hcmtldHBsYWNlLmpzb25cIil9KSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcImRpcmVjdG9yeVwiKSxwYXRoOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJMb2NhbCBkaXJlY3RvcnkgY29udGFpbmluZyAuY2xhdWRlLXBsdWdpbi9tYXJrZXRwbGFjZS5qc29uXCIpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJza2lsbHMtZGlyXCIpfSkuZGVzY3JpYmUoXCJQb2xpY3ktbGlzdCBzZW50aW5lbCBmb3IgdGhlIH4vLmNsYXVkZS9za2lsbHMvIGF1dG8tbG9hZCAoQHNraWxscy1kaXIgcGx1Z2lucykuIEluIHN0cmljdEtub3duTWFya2V0cGxhY2VzOiBvcHQgdGhlIHNjYW4gYmFjayBJTiAoYnkgZGVmYXVsdCBhbnkgYWxsb3dsaXN0IGJsb2NrcyBpdCkuIEluIGJsb2NrZWRNYXJrZXRwbGFjZXM6IHR1cm4gdGhlIHNjYW4gT0ZGIHdpdGhvdXQgb3RoZXJ3aXNlIHJlc3RyaWN0aW5nIG1hcmtldHBsYWNlcy4gT25seSBtZWFuaW5nZnVsIGluIHRob3NlIHR3byBtYW5hZ2VkLXNldHRpbmdzIGxpc3RzIChhcmVMb2NhbFBsdWdpbkRpcnNBbGxvd2VkQnlQb2xpY3kpOyBrbm93bl9tYXJrZXRwbGFjZXMuanNvbiAvIG1hcmtldHBsYWNlIGFkZCBldGMuIGlnbm9yZSBpdC5cIiksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJob3N0UGF0dGVyblwiKSxob3N0UGF0dGVybjpLLnN0cmluZygpLmRlc2NyaWJlKCdSZWdleCBwYXR0ZXJuIHRvIG1hdGNoIHRoZSBob3N0L2RvbWFpbiBleHRyYWN0ZWQgZnJvbSBhbnkgbWFya2V0cGxhY2Ugc291cmNlIHR5cGUuIEZvciBnaXRodWIgc291cmNlcywgbWF0Y2hlcyBhZ2FpbnN0IFwiZ2l0aHViLmNvbVwiLiBGb3IgZ2l0IHNvdXJjZXMgKFNTSCBvciBIVFRQUyksIGV4dHJhY3RzIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBVUkwuIFVzZSBpbiBzdHJpY3RLbm93bk1hcmtldHBsYWNlcyB0byBhbGxvdyBhbGwgbWFya2V0cGxhY2VzIGZyb20gYSBzcGVjaWZpYyBob3N0IChlLmcuLCBcIl5naXRodWJcXFxcLm15Y29tcGFueVxcXFwuY29tJFwiKS4nKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwicGF0aFBhdHRlcm5cIikscGF0aFBhdHRlcm46Sy5zdHJpbmcoKS5kZXNjcmliZSgnUmVnZXggcGF0dGVybiBtYXRjaGVkIGFnYWluc3QgdGhlIC5wYXRoIGZpZWxkIG9mIGZpbGUgYW5kIGRpcmVjdG9yeSBzb3VyY2VzLiBVc2UgaW4gc3RyaWN0S25vd25NYXJrZXRwbGFjZXMgdG8gYWxsb3cgZmlsZXN5c3RlbS1iYXNlZCBtYXJrZXRwbGFjZXMgYWxvbmdzaWRlIGhvc3RQYXR0ZXJuIHJlc3RyaWN0aW9ucyBmb3IgbmV0d29yayBzb3VyY2VzLiBVc2UgXCIuKlwiIHRvIGFsbG93IGFsbCBmaWxlc3lzdGVtIHBhdGhzLCBvciBhIG5hcnJvd2VyIHBhdHRlcm4gKGUuZy4sIFwiXi9vcHQvYXBwcm92ZWQvXCIpIHRvIHJlc3RyaWN0IHRvIHNwZWNpZmljIGRpcmVjdG9yaWVzLicpfSksSy5vYmplY3Qoe3NvdXJjZTpLLmxpdGVyYWwoXCJzZXR0aW5nc1wiKSxuYW1lOnlFKCkucmVmaW5lKCgkKT0+IWZFLmhhcygkLnRvTG93ZXJDYXNlKCkpLHttZXNzYWdlOlwiUmVzZXJ2ZWQgb2ZmaWNpYWwgbWFya2V0cGxhY2UgbmFtZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBzZXR0aW5ncyBzb3VyY2VzLiB2YWxpZGF0ZU9mZmljaWFsTmFtZVNvdXJjZSBvbmx5IGFjY2VwdHMgZ2l0aHViL2dpdCBzb3VyY2VzIGZyb20gYW50aHJvcGljcy8qIGZvciB0aGVzZSBuYW1lczsgYSBzZXR0aW5ncyBzb3VyY2Ugd291bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgbG9hZEFuZENhY2hlTWFya2V0cGxhY2UgaGFzIGFscmVhZHkgd3JpdHRlbiB0byBkaXNrIHdpdGggY2xlYW51cE5lZWRlZD1mYWxzZS5cIn0pLmRlc2NyaWJlKFwiTWFya2V0cGxhY2UgbmFtZS4gTXVzdCBtYXRjaCB0aGUgZXh0cmFLbm93bk1hcmtldHBsYWNlcyBrZXkgKGVuZm9yY2VkKTsgdGhlIHN5bnRoZXRpYyBtYW5pZmVzdCBpcyB3cml0dGVuIHVuZGVyIHRoaXMgbmFtZS4gU2FtZSB2YWxpZGF0aW9uIFwiK1wiYXMgUGx1Z2luTWFya2V0cGxhY2VTY2hlbWEgcGx1cyByZXNlcnZlZC1uYW1lIHJlamVjdGlvbiBcdTIwMTQgXCIrXCJ2YWxpZGF0ZU9mZmljaWFsTmFtZVNvdXJjZSBydW5zIGFmdGVyIHRoZSBkaXNrIHdyaXRlLCB0b28gbGF0ZSB0byBjbGVhbiB1cC5cIikscGx1Z2luczpLLmFycmF5KHVlKCkpLmRlc2NyaWJlKFwiUGx1Z2luIGVudHJpZXMgZGVjbGFyZWQgaW5saW5lIGluIHNldHRpbmdzLmpzb25cIiksb3duZXI6VHooKS5vcHRpb25hbCgpfSkuZGVzY3JpYmUoXCJJbmxpbmUgbWFya2V0cGxhY2UgbWFuaWZlc3QgZGVmaW5lZCBkaXJlY3RseSBpbiBzZXR0aW5ncy5qc29uLiBUaGUgcmVjb25jaWxlciB3cml0ZXMgYSBzeW50aGV0aWMgbWFya2V0cGxhY2UuanNvbiB0byB0aGUgY2FjaGU7IGRpZmZNYXJrZXRwbGFjZXMgZGV0ZWN0cyBlZGl0cyB2aWEgaXNFcXVhbCBvbiB0aGUgc3RvcmVkIHNvdXJjZSAodGhlIHBsdWdpbnMgYXJyYXkgaXMgaW5zaWRlIHRoaXMgb2JqZWN0LCBzbyBlZGl0cyBzdXJmYWNlIGFzIHNvdXJjZUNoYW5nZWQpLlwiKV0pKSxrej1fKCgpPT5LLnN0cmluZygpLmxlbmd0aCg0MCkucmVnZXgoL15bYS1mMC05XXs0MH0kLyxcIk11c3QgYmUgYSBmdWxsIDQwLWNoYXJhY3RlciBsb3dlcmNhc2UgZ2l0IGNvbW1pdCBTSEFcIikpLGNFPV8oKCk9PksudW5pb24oW000KCkuZGVzY3JpYmUoXCJQYXRoIHRvIHRoZSBwbHVnaW4gcm9vdCwgcmVsYXRpdmUgdG8gdGhlIG1hcmtldHBsYWNlIHJvb3QgKHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAuY2xhdWRlLXBsdWdpbi8sIG5vdCAuY2xhdWRlLXBsdWdpbi8gaXRzZWxmKVwiKSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcIm5wbVwiKSxwYWNrYWdlOmxFKCkub3IoSy5zdHJpbmcoKS5yZWZpbmUoKCQpPT4vXig/OmZpbGV8aHR0cHM/fGdpdCg/OlxcK2h0dHBzP3xcXCtzc2gpP3xzc2h8Z2l0aHVifGdpdGxhYnxiaXRidWNrZXQpOi9pLnRlc3QoJCl8fCEkLmluY2x1ZGVzKFwiLi5cIiksJ1BhY2thZ2UgcmVmZXJlbmNlIGNhbm5vdCBjb250YWluIFwiLi5cIiBwYXRoIHNlZ21lbnRzJykpLmRlc2NyaWJlKFwiUGFja2FnZSBuYW1lIChvciB1cmwsIG9yIGxvY2FsIHBhdGgsIG9yIGFueXRoaW5nIGVsc2UgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGBucG1gIGFzIGEgcGFja2FnZSlcIiksdmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTcGVjaWZpYyB2ZXJzaW9uIG9yIHZlcnNpb24gcmFuZ2UgKGUuZy4sIF4xLjAuMCwgfjIuMS4wKVwiKSxyZWdpc3RyeTpLLnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gTlBNIHJlZ2lzdHJ5IFVSTCAoZGVmYXVsdHMgdG8gdXNpbmcgc3lzdGVtIGRlZmF1bHQsIGxpa2VseSBucG1qcy5vcmcpXCIpfSkuZGVzY3JpYmUoXCJOUE0gcGFja2FnZSBhcyBwbHVnaW4gc291cmNlXCIpLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwidXJsXCIpLHVybDpLLnN0cmluZygpLmRlc2NyaWJlKFwiRnVsbCBnaXQgcmVwb3NpdG9yeSBVUkwgKGh0dHBzOi8vIG9yIGdpdEApXCIpLHJlZjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0dpdCBicmFuY2ggb3IgdGFnIHRvIHVzZSAoZS5nLiwgXCJtYWluXCIsIFwidjEuMC4wXCIpLiBEZWZhdWx0cyB0byByZXBvc2l0b3J5IGRlZmF1bHQgYnJhbmNoLicpLHNoYTpreigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTcGVjaWZpYyBjb21taXQgU0hBIHRvIHVzZVwiKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwiZ2l0aHViXCIpLHJlcG86Sy5zdHJpbmcoKS5kZXNjcmliZShcIkdpdEh1YiByZXBvc2l0b3J5IGluIG93bmVyL3JlcG8gZm9ybWF0XCIpLHJlZjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0dpdCBicmFuY2ggb3IgdGFnIHRvIHVzZSAoZS5nLiwgXCJtYWluXCIsIFwidjEuMC4wXCIpLiBEZWZhdWx0cyB0byByZXBvc2l0b3J5IGRlZmF1bHQgYnJhbmNoLicpLHNoYTpreigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTcGVjaWZpYyBjb21taXQgU0hBIHRvIHVzZVwiKX0pLEsub2JqZWN0KHtzb3VyY2U6Sy5saXRlcmFsKFwiZ2l0LXN1YmRpclwiKSx1cmw6Sy5zdHJpbmcoKS5kZXNjcmliZShcIkdpdCByZXBvc2l0b3J5OiBHaXRIdWIgb3duZXIvcmVwbyBzaG9ydGhhbmQsIGh0dHBzOi8vLCBvciBnaXRAIFVSTFwiKSxwYXRoOksuc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKCdTdWJkaXJlY3Rvcnkgd2l0aGluIHRoZSByZXBvIGNvbnRhaW5pbmcgdGhlIHBsdWdpbiAoZS5nLiwgXCJ0b29scy9jbGF1ZGUtcGx1Z2luXCIpLiBDbG9uZWQgc3BhcnNlbHkgdXNpbmcgcGFydGlhbCBjbG9uZSAoLS1maWx0ZXI9dHJlZTowKSB0byBtaW5pbWl6ZSBiYW5kd2lkdGggZm9yIG1vbm9yZXBvcy4nKSxyZWY6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdHaXQgYnJhbmNoIG9yIHRhZyB0byB1c2UgKGUuZy4sIFwibWFpblwiLCBcInYxLjAuMFwiKS4gRGVmYXVsdHMgdG8gcmVwb3NpdG9yeSBkZWZhdWx0IGJyYW5jaC4nKSxzaGE6a3ooKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU3BlY2lmaWMgY29tbWl0IFNIQSB0byB1c2VcIil9KS5kZXNjcmliZShcIlBsdWdpbiBsb2NhdGVkIGluIGEgc3ViZGlyZWN0b3J5IG9mIGEgbGFyZ2VyIHJlcG9zaXRvcnkgKG1vbm9yZXBvKS4gT25seSB0aGUgc3BlY2lmaWVkIHN1YmRpcmVjdG9yeSBpcyBtYXRlcmlhbGl6ZWQ7IHRoZSByZXN0IG9mIHRoZSByZXBvIGlzIG5vdCBkb3dubG9hZGVkLlwiKSxLLm9iamVjdCh7c291cmNlOksubGl0ZXJhbChcInVuc3VwcG9ydGVkXCIpfSkuZGVzY3JpYmUoXCJQbGFjZWhvbGRlciBmb3Igc291cmNlIHR5cGVzIHRoaXMgQ2xhdWRlIENvZGUgdmVyc2lvbiBkb2VzIG5vdCBcIitcInJlY29nbml6ZS4gTmV2ZXIgYXV0aG9yZWQgYnkgaGFuZCBcdTIwMTQgUGx1Z2luTWFya2V0cGxhY2VTY2hlbWEgcmV3cml0ZXMgXCIrJ3VucGFyc2VhYmxlIHNvdXJjZXMgdG8gdGhpcyBzbyB0aGUgZW50cnkgcmVtYWlucyBpbiBtYXJrZXRwbGFjZS5wbHVnaW5zIChkZXRlY3REZWxpc3RlZFBsdWdpbnMgbXVzdCBub3Qgc2VlIGl0IGFzIHJlbW92ZWQpLiBJbnN0YWxsIGF0dGVtcHRzIGZhaWwgYXQgY2FjaGVQbHVnaW4gd2l0aCBhIGNsZWFyIFwidXBkYXRlIENsYXVkZSBDb2RlXCIgbWVzc2FnZS4nKV0pKSx1ZT1fKCgpPT5LLm9iamVjdCh7bmFtZTpLLnN0cmluZygpLm1pbigxLFwiUGx1Z2luIG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLnJlZmluZSgoJCk9PiEkLmluY2x1ZGVzKFwiIFwiKSx7bWVzc2FnZTonUGx1Z2luIG5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiBVc2Uga2ViYWItY2FzZSAoZS5nLiwgXCJteS1wbHVnaW5cIiknfSkuZGVzY3JpYmUoXCJQbHVnaW4gbmFtZSBhcyBpdCBhcHBlYXJzIGluIHRoZSB0YXJnZXQgcmVwb3NpdG9yeVwiKSxzb3VyY2U6Y0UoKS5kZXNjcmliZShcIldoZXJlIHRvIGZldGNoIHRoZSBwbHVnaW4gZnJvbS4gTXVzdCBiZSBhIHJlbW90ZSBzb3VyY2UgXHUyMDE0IHJlbGF0aXZlIFwiK1wicGF0aHMgaGF2ZSBubyBtYXJrZXRwbGFjZSByZXBvc2l0b3J5IHRvIHJlc29sdmUgYWdhaW5zdC5cIiksZGVzY3JpcHRpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLHZlcnNpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLHN0cmljdDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpfSkucmVmaW5lKCgkKT0+dHlwZW9mICQuc291cmNlIT09XCJzdHJpbmdcIix7bWVzc2FnZTonUGx1Z2lucyBpbiBhIHNldHRpbmdzLXNvdXJjZWQgbWFya2V0cGxhY2UgbXVzdCB1c2UgcmVtb3RlIHNvdXJjZXMgKGdpdGh1YiwgZ2l0LXN1YmRpciwgbnBtLCB1cmwpLiBSZWxhdGl2ZS1wYXRoIHNvdXJjZXMgbGlrZSBcIi4vZm9vXCIgaGF2ZSBubyBtYXJrZXRwbGFjZSByZXBvc2l0b3J5IHRvIHJlc29sdmUgYWdhaW5zdC4nfSkucmVmaW5lKCgkKT0+dHlwZW9mICQuc291cmNlPT09XCJzdHJpbmdcInx8JC5zb3VyY2Uuc291cmNlIT09XCJ1bnN1cHBvcnRlZFwiLHttZXNzYWdlOlwic291cmNlLnNvdXJjZTogJ3Vuc3VwcG9ydGVkJyBpcyBhIHBhcnNlLXRpbWUgcGxhY2Vob2xkZXIgYW5kIGNhbm5vdCBiZSBhdXRob3JlZC4gVXNlIGEgcmVtb3RlIHNvdXJjZSAoZ2l0aHViLCBnaXQtc3ViZGlyLCBucG0sIHVybCkuXCJ9KSk7dmFyIG1lPV8oKCk9PmhlKCkucGFydGlhbCgpLmV4dGVuZCh7bmFtZTpLLnN0cmluZygpLm1pbigxLFwiUGx1Z2luIG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLnJlZmluZSgoJCk9PiEkLmluY2x1ZGVzKFwiIFwiKSx7bWVzc2FnZTonUGx1Z2luIG5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiBVc2Uga2ViYWItY2FzZSAoZS5nLiwgXCJteS1wbHVnaW5cIiknfSkuZGVzY3JpYmUoXCJVbmlxdWUgaWRlbnRpZmllciBtYXRjaGluZyB0aGUgcGx1Z2luIG5hbWVcIiksc291cmNlOmNFKCkuZGVzY3JpYmUoXCJXaGVyZSB0byBmZXRjaCB0aGUgcGx1Z2luIGZyb21cIiksY2F0ZWdvcnk6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdDYXRlZ29yeSBmb3Igb3JnYW5pemluZyBwbHVnaW5zIChlLmcuLCBcInByb2R1Y3Rpdml0eVwiLCBcImRldmVsb3BtZW50XCIpJyksdGFnczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUYWdzIGZvciBzZWFyY2hhYmlsaXR5IGFuZCBkaXNjb3ZlcnlcIiksc3RyaWN0OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdCghMCkuZGVzY3JpYmUoXCJSZXF1aXJlIHRoZSBwbHVnaW4gbWFuaWZlc3QgdG8gYmUgcHJlc2VudCBpbiB0aGUgcGx1Z2luIGZvbGRlci4gSWYgZmFsc2UsIHRoZSBtYXJrZXRwbGFjZSBlbnRyeSBwcm92aWRlcyB0aGUgbWFuaWZlc3QuXCIpfSkpLGxlPV8oKCk9Pksub2JqZWN0KHtuYW1lOksuc3RyaW5nKCkubWluKDEpLnJlZmluZSgoJCk9PiEkLmluY2x1ZGVzKFwiIFwiKSl9KSk7ZnVuY3Rpb24gY2UoJCl7bGV0IFE9bWUoKTtyZXR1cm4gJC5mbGF0TWFwKChKLFkpPT57bGV0IFg9US5zYWZlUGFyc2UoSik7aWYoWC5zdWNjZXNzKXJldHVybltYLmRhdGFdO2xldCBXPWxlKCkuc2FmZVBhcnNlKEopLmRhdGE/Lm5hbWUsRz1YLmVycm9yLmlzc3Vlcy5tYXAoKFUpPT5gJHtVLnBhdGguam9pbihcIi5cIil9OiAke1UubWVzc2FnZX1gKS5qb2luKFwiLCBcIik7aWYoVylyZXR1cm4gWCQoYFN0dWJiaW5nIHVucGFyc2VhYmxlIG1hcmtldHBsYWNlIHBsdWdpbiBlbnRyeSAoJHtXfSk6ICR7R31gLHtsZXZlbDpcIndhcm5cIn0pLFt7bmFtZTpXLHNvdXJjZTp7c291cmNlOlwidW5zdXBwb3J0ZWRcIn0sc3RyaWN0OiEwfV07cmV0dXJuIFgkKGBEcm9wcGluZyB1bnBhcnNlYWJsZSBtYXJrZXRwbGFjZSBwbHVnaW4gZW50cnkgKGluZGV4ICR7WX0pOiAke0d9YCx7bGV2ZWw6XCJ3YXJuXCJ9KSxbXX0pfXZhciBiRiQ9XygoKT0+Sy5vYmplY3QoeyRzY2hlbWE6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSlNPTiBTY2hlbWEgcmVmZXJlbmNlIGZvciBlZGl0b3IgYXV0b2NvbXBsZXRlL3ZhbGlkYXRpb247IGlnbm9yZWQgYXQgbG9hZCB0aW1lXCIpLG5hbWU6eUUoKSx2ZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1hcmtldHBsYWNlIG1hbmlmZXN0IHZlcnNpb25cIiksZGVzY3JpcHRpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhpcyBtYXJrZXRwbGFjZVwiKSxvd25lcjpUeigpLmRlc2NyaWJlKFwiTWFya2V0cGxhY2UgbWFpbnRhaW5lciBvciBjdXJhdG9yIGluZm9ybWF0aW9uXCIpLHBsdWdpbnM6Sy5hcnJheShLLnVua25vd24oKSkudHJhbnNmb3JtKGNlKS5kZXNjcmliZShcIkNvbGxlY3Rpb24gb2YgYXZhaWxhYmxlIHBsdWdpbnMgaW4gdGhpcyBtYXJrZXRwbGFjZVwiKSxmb3JjZVJlbW92ZURlbGV0ZWRQbHVnaW5zOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUsIHBsdWdpbnMgcmVtb3ZlZCBmcm9tIHRoaXMgbWFya2V0cGxhY2Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVuaW5zdGFsbGVkIGFuZCBmbGFnZ2VkIGZvciB1c2Vyc1wiKSxtZXRhZGF0YTpLLm9iamVjdCh7cGx1Z2luUm9vdDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJCYXNlIHBhdGggZm9yIHJlbGF0aXZlIHBsdWdpbiBzb3VyY2VzXCIpLHZlcnNpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWFya2V0cGxhY2UgdmVyc2lvblwiKSxkZXNjcmlwdGlvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXJrZXRwbGFjZSBkZXNjcmlwdGlvblwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJPcHRpb25hbCBtYXJrZXRwbGFjZSBtZXRhZGF0YVwiKSxhbGxvd0Nyb3NzTWFya2V0cGxhY2VEZXBlbmRlbmNpZXNPbjpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXJrZXRwbGFjZSBuYW1lcyB3aG9zZSBwbHVnaW5zIG1heSBiZSBhdXRvLWluc3RhbGxlZCBhcyBkZXBlbmRlbmNpZXMuIE9ubHkgdGhlIHJvb3QgbWFya2V0cGxhY2UncyBhbGxvd2xpc3QgYXBwbGllcyBcdTIwMTQgbm8gdHJhbnNpdGl2ZSB0cnVzdC5cIil9KSkscEU9XygoKT0+Sy5zdHJpbmcoKS5yZWdleCgvXltBLVphLXowLTldWy1BLVphLXowLTkuX10qQFtBLVphLXowLTldWy1BLVphLXowLTkuX10qJC8sXCJQbHVnaW4gSUQgbXVzdCBiZSBpbiBmb3JtYXQ6IHBsdWdpbkBtYXJrZXRwbGFjZVwiKSkscGU9L15bQS1aYS16MC05XVstQS1aYS16MC05Ll9dKihAW0EtWmEtejAtOV1bLUEtWmEtejAtOS5fXSopPyhAXFxeW15AXSopPyQvLGRlPV8oKCk9PksudW5pb24oW0suc3RyaW5nKCkucmVnZXgocGUsXCJEZXBlbmRlbmN5IG11c3QgYmUgYSBwbHVnaW4gbmFtZSwgb3B0aW9uYWxseSBxdWFsaWZpZWQgd2l0aCBAbWFya2V0cGxhY2VcIikudHJhbnNmb3JtKCgkKT0+JC5yZXBsYWNlKC9AXFxeW15AXSokLyxcIlwiKSksSy5vYmplY3Qoe25hbWU6Sy5zdHJpbmcoKS5taW4oMSkucmVnZXgoL15bQS1aYS16MC05XVstQS1aYS16MC05Ll9dKiQvKSxtYXJrZXRwbGFjZTpLLnN0cmluZygpLm1pbigxKS5yZWdleCgvXltBLVphLXowLTldWy1BLVphLXowLTkuX10qJC8pLm9wdGlvbmFsKCl9KS5sb29zZSgpLnRyYW5zZm9ybSgoJCk9PiQubWFya2V0cGxhY2U/YCR7JC5uYW1lfUAkeyQubWFya2V0cGxhY2V9YDokLm5hbWUpXSkpLGllPV8oKCk9Pksub2JqZWN0KHt2ZXJzaW9uOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJDdXJyZW50bHkgaW5zdGFsbGVkIHZlcnNpb25cIiksaW5zdGFsbGVkQXQ6Sy5zdHJpbmcoKS5kZXNjcmliZShcIklTTyA4NjAxIHRpbWVzdGFtcCBvZiBpbnN0YWxsYXRpb25cIiksbGFzdFVwZGF0ZWQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSVNPIDg2MDEgdGltZXN0YW1wIG9mIGxhc3QgdXBkYXRlXCIpLGluc3RhbGxQYXRoOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJBYnNvbHV0ZSBwYXRoIHRvIHRoZSBpbnN0YWxsZWQgcGx1Z2luIGRpcmVjdG9yeVwiKSxnaXRDb21taXRTaGE6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2l0IGNvbW1pdCBTSEEgZm9yIGdpdC1iYXNlZCBwbHVnaW5zIChmb3IgdmVyc2lvbiB0cmFja2luZylcIikscmVzb2x2ZWRWZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRhZy1kZXJpdmVkIHNlbXZlciB0aGlzIGluc3RhbGwgcmVzb2x2ZWQgdG8gKHdoZW4gZmV0Y2hlZCB2aWEgYSB2ZXJzaW9uIGNvbnN0cmFpbnQpLiBVc2VkIGJ5IHZlcmlmeUFuZERlbW90ZSBpbiBwcmVmZXJlbmNlIHRvIG1hbmlmZXN0LnZlcnNpb24sIHNpbmNlIHRoZSB1cHN0cmVhbSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gYnVtcCBwbHVnaW4uanNvbi5cIiksYXV0bzpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoaXMgcGx1Z2luIHdhcyBwdWxsZWQgaW4gYXMgYSBkZXBlbmRlbmN5IHJhdGhlciB0aGFuIGluc3RhbGxlZCBleHBsaWNpdGx5LiBBdXRvLWluc3RhbGxlZCBwbHVnaW5zIGFyZSBlbGlnaWJsZSBmb3IgcmVtb3ZhbCBieSB0aGUgb3JwaGFuIHN3ZWVwIHdoZW4gbm90aGluZyBkZXBlbmRzIG9uIHRoZW0uIEFic2VudCA9IG1hbnVhbCAocHJlc2VydmVzIHByZS1mbGFnIGluc3RhbGxzKS5cIil9KSksbmU9XygoKT0+Sy5vYmplY3Qoe3ZlcnNpb246Sy5saXRlcmFsKDEpLmRlc2NyaWJlKFwiU2NoZW1hIHZlcnNpb24gMVwiKSxwbHVnaW5zOksucmVjb3JkKHBFKCksaWUoKSkuZGVzY3JpYmUoXCJNYXAgb2YgcGx1Z2luIElEcyB0byB0aGVpciBpbnN0YWxsYXRpb24gbWV0YWRhdGFcIil9KSkscmU9XygoKT0+Sy5lbnVtKFtcIm1hbmFnZWRcIixcInVzZXJcIixcInByb2plY3RcIixcImxvY2FsXCJdKSksb2U9XygoKT0+Sy5vYmplY3Qoe3Njb3BlOnJlKCkuZGVzY3JpYmUoXCJJbnN0YWxsYXRpb24gc2NvcGVcIikscHJvamVjdFBhdGg6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHJvamVjdCBwYXRoIChyZXF1aXJlZCBmb3IgcHJvamVjdC9sb2NhbCBzY29wZXMpXCIpLGluc3RhbGxQYXRoOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJBYnNvbHV0ZSBwYXRoIHRvIHRoZSB2ZXJzaW9uZWQgcGx1Z2luIGRpcmVjdG9yeVwiKSx2ZXJzaW9uOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1cnJlbnRseSBpbnN0YWxsZWQgdmVyc2lvblwiKSxpbnN0YWxsZWRBdDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJU08gODYwMSB0aW1lc3RhbXAgb2YgaW5zdGFsbGF0aW9uXCIpLGxhc3RVcGRhdGVkOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklTTyA4NjAxIHRpbWVzdGFtcCBvZiBsYXN0IHVwZGF0ZVwiKSxnaXRDb21taXRTaGE6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2l0IGNvbW1pdCBTSEEgZm9yIGdpdC1iYXNlZCBwbHVnaW5zXCIpLHJlc29sdmVkVmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUYWctZGVyaXZlZCBzZW12ZXIgdGhpcyBpbnN0YWxsIHJlc29sdmVkIHRvXCIpLGF1dG86Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRydWUgd2hlbiBwdWxsZWQgaW4gYXMgYSBkZXBlbmRlbmN5LiBFbGlnaWJsZSBmb3Igb3JwaGFuIHN3ZWVwLlwiKX0pKSx0ZT1fKCgpPT5LLm9iamVjdCh7dmVyc2lvbjpLLmxpdGVyYWwoMikuZGVzY3JpYmUoXCJTY2hlbWEgdmVyc2lvbiAyXCIpLHBsdWdpbnM6Sy5yZWNvcmQocEUoKSxLLmFycmF5KG9lKCkpKS5kZXNjcmliZShcIk1hcCBvZiBwbHVnaW4gSURzIHRvIGFycmF5cyBvZiBpbnN0YWxsYXRpb24gZW50cmllc1wiKX0pKSxfRiQ9XygoKT0+Sy51bmlvbihbbmUoKSx0ZSgpXSkpLGFlPV8oKCk9Pksub2JqZWN0KHtzb3VyY2U6UVgoKS5kZXNjcmliZShcIldoZXJlIHRvIGZldGNoIHRoZSBtYXJrZXRwbGFjZSBmcm9tXCIpLGluc3RhbGxMb2NhdGlvbjpLLnN0cmluZygpLmRlc2NyaWJlKFwiTG9jYWwgY2FjaGUgcGF0aCB3aGVyZSBtYXJrZXRwbGFjZSBtYW5pZmVzdCBpcyBzdG9yZWRcIiksbGFzdFVwZGF0ZWQ6Sy5zdHJpbmcoKS5kZXNjcmliZShcIklTTyA4NjAxIHRpbWVzdGFtcCBvZiBsYXN0IG1hcmtldHBsYWNlIHJlZnJlc2hcIiksYXV0b1VwZGF0ZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGlzIG1hcmtldHBsYWNlIGFuZCBpdHMgaW5zdGFsbGVkIHBsdWdpbnMgb24gc3RhcnR1cFwiKX0pKSxTRiQ9XygoKT0+Sy5yZWNvcmQoSy5zdHJpbmcoKSxhZSgpKSk7dmFyIHNlPVtcInVzZXJTZXR0aW5nc1wiLFwicHJvamVjdFNldHRpbmdzXCIsXCJsb2NhbFNldHRpbmdzXCIsXCJmbGFnU2V0dGluZ3NcIixcInBvbGljeVNldHRpbmdzXCJdO3ZhciB4ejtmdW5jdGlvbiBVRygpe2xldCAkPXo1KCk7aWYoeHo/LmFsbG93ZWQ9PT0kKXJldHVybiB4ei5yZXN1bHQ7bGV0IFE9bmV3IFNldCgkKTtRLmFkZChcImZsYWdTZXR0aW5nc1wiKSxRLmFkZChcInBvbGljeVNldHRpbmdzXCIpO2xldCBKPXNlLmZpbHRlcigoWSk9PlEuaGFzKFkpKTtyZXR1cm4geHo9e2FsbG93ZWQ6JCxyZXN1bHQ6Sn0sSn12YXIgZEU9XCJodHRwczovL2pzb24uc2NoZW1hc3RvcmUub3JnL2NsYXVkZS1jb2RlLXNldHRpbmdzLmpzb25cIjt2YXIgZWU9W1wiYXV0b01vZGVcIixcImRlZXBMaW5rXCIsXCJ2b2ljZVwiLFwiYXNzaXN0YW50XCIsXCJicmllZlZpZXdcIl0sSEc9e30sS0c9e2F1dG9Nb2RlOntidWlsZEdhdGU6KCk9PiExLHNoYXBlOigpPT5IRyxwZXJtaXNzaW9uc1NoYXBlOigpPT5IRyxwZXJtaXNzaW9uTW9kZXM6KCk9PltdfSxkZWVwTGluazp7YnVpbGRHYXRlOigpPT4hMCxzaGFwZTooKT0+KHtkaXNhYmxlRGVlcExpbmtSZWdpc3RyYXRpb246Sy5lbnVtKFtcImRpc2FibGVcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQcmV2ZW50IGNsYXVkZS1jbGk6Ly8gcHJvdG9jb2wgaGFuZGxlciByZWdpc3RyYXRpb24gd2l0aCB0aGUgT1NcIil9KX0sdm9pY2U6e2J1aWxkR2F0ZTooKT0+ITEsc2hhcGU6KCk9PkhHfSxhc3Npc3RhbnQ6e2J1aWxkR2F0ZTooKT0+ITEsc2hhcGU6KCk9PkhHfSxicmllZlZpZXc6e2J1aWxkR2F0ZTooKT0+ITAsc2hhcGU6KCk9Pih7ZGVmYXVsdFZpZXc6Sy5lbnVtKFtcImNoYXRcIixcInRyYW5zY3JpcHRcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEZWZhdWx0IHRyYW5zY3JpcHQgdmlldzogY2hhdCAoU2VuZFVzZXJNZXNzYWdlIGNoZWNrcG9pbnRzIG9ubHkpIG9yIHRyYW5zY3JpcHQgKGZ1bGwpXCIpfSl9fTtmdW5jdGlvbiBmeigpe3JldHVybiBlZS5maWx0ZXIoKCQpPT5LR1skXS5idWlsZEdhdGUoKSl9ZnVuY3Rpb24gaUUoJCl7bGV0IFE9e307Zm9yKGxldCBKIG9mICQpUT17Li4uUSwuLi5LR1tKXS5zaGFwZSgpfTtyZXR1cm4gUX1mdW5jdGlvbiBuRSgkKXtsZXQgUT17fTtmb3IobGV0IEogb2YgJClRPXsuLi5RLC4uLktHW0pdLnBlcm1pc3Npb25zU2hhcGU/LigpfTtyZXR1cm4gUX1mdW5jdGlvbiByRSgkKXtsZXQgUT1bXTtmb3IobGV0IEogb2YgJClRLnB1c2goLi4uS0dbSl0ucGVybWlzc2lvbk1vZGVzPy4oKT8/W10pO3JldHVybiBRfWZ1bmN0aW9uIG9FKCQpe2xldCBRPSQuc3BsaXQoXCJfX1wiKSxbSixZLC4uLlhdPVE7aWYoSiE9PVwibWNwXCJ8fCFZKXJldHVybiBudWxsO2xldCBXPVgubGVuZ3RoPjA/WC5qb2luKFwiX19cIik6dm9pZCAwO3JldHVybntzZXJ2ZXJOYW1lOlksdG9vbE5hbWU6V319dmFyIHRFPXtUYXNrOlwiQWdlbnRcIixLaWxsU2hlbGw6XCJUYXNrU3RvcFwiLEFnZW50T3V0cHV0VG9vbDpcIlRhc2tPdXRwdXRcIixCYXNoT3V0cHV0VG9vbDpcIlRhc2tPdXRwdXRcIixMaXN0UGVlcnM6XCJMaXN0QWdlbnRzXCIsQnJpZWY6XCJTZW5kVXNlck1lc3NhZ2VcIn07ZnVuY3Rpb24gYjkoJCl7cmV0dXJuIE9iamVjdC5oYXNPd24odEUsJCk/dEVbJF06JH12YXIgYUU9XCJ3b3Jrc3BhY2VcIixjRiQ9YG1jcF9fJHthRX1fX2Jhc2hgLHBGJD1gbWNwX18ke2FFfV9fd2ViX2ZldGNoYDtmdW5jdGlvbiAkJCQoJCl7cmV0dXJuICQucmVwbGFjZUFsbChcIlxcXFwoXCIsXCIoXCIpLnJlcGxhY2VBbGwoXCJcXFxcKVwiLFwiKVwiKS5yZXBsYWNlQWxsKFwiXFxcXFxcXFxcIixcIlxcXFxcIil9ZnVuY3Rpb24gc0UoJCl7bGV0IFE9USQkKCQsXCIoXCIpO2lmKFE9PT0tMSlyZXR1cm57dG9vbE5hbWU6YjkoJCl9O2xldCBKPUokJCgkLFwiKVwiKTtpZihKPT09LTF8fEo8PVEpcmV0dXJue3Rvb2xOYW1lOmI5KCQpfTtpZihKIT09JC5sZW5ndGgtMSlyZXR1cm57dG9vbE5hbWU6YjkoJCl9O2xldCBZPSQuc3Vic3RyaW5nKDAsUSksWD0kLnN1YnN0cmluZyhRKzEsSik7aWYoIVkpcmV0dXJue3Rvb2xOYW1lOmI5KCQpfTtpZihYPT09XCJcInx8WD09PVwiKlwiKXJldHVybnt0b29sTmFtZTpiOShZKX07bGV0IFc9JCQkKFgpO3JldHVybnt0b29sTmFtZTpiOShZKSxydWxlQ29udGVudDpXfX1mdW5jdGlvbiBRJCQoJCxRKXtmb3IobGV0IEo9MDtKPCQubGVuZ3RoO0orKylpZigkW0pdPT09USl7bGV0IFk9MCxYPUotMTt3aGlsZShYPj0wJiYkW1hdPT09XCJcXFxcXCIpWSsrLFgtLTtpZihZJTI9PT0wKXJldHVybiBKfXJldHVybi0xfWZ1bmN0aW9uIEokJCgkLFEpe2ZvcihsZXQgSj0kLmxlbmd0aC0xO0o+PTA7Si0tKWlmKCRbSl09PT1RKXtsZXQgWT0wLFg9Si0xO3doaWxlKFg+PTAmJiRbWF09PT1cIlxcXFxcIilZKyssWC0tO2lmKFklMj09PTApcmV0dXJuIEp9cmV0dXJuLTF9dmFyIHFHPXtmaWxlUGF0dGVyblRvb2xzOltcIlJlYWRcIixcIldyaXRlXCIsXCJFZGl0XCIsXCJHbG9iXCIsXCJOb3RlYm9va1JlYWRcIixcIk5vdGVib29rRWRpdFwiXSxiYXNoUHJlZml4VG9vbHM6W1wiQmFzaFwiXSxjdXN0b21WYWxpZGF0aW9uOntXZWJTZWFyY2g6KCQpPT57aWYoJC5pbmNsdWRlcyhcIipcIil8fCQuaW5jbHVkZXMoXCI/XCIpKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIldlYlNlYXJjaCBkb2VzIG5vdCBzdXBwb3J0IHdpbGRjYXJkc1wiLHN1Z2dlc3Rpb246XCJVc2UgZXhhY3Qgc2VhcmNoIHRlcm1zIHdpdGhvdXQgKiBvciA/XCIsZXhhbXBsZXM6W1wiV2ViU2VhcmNoKGNsYXVkZSBhaSlcIixcIldlYlNlYXJjaCh0eXBlc2NyaXB0IHR1dG9yaWFsKVwiXX07cmV0dXJue3ZhbGlkOiEwfX0sV2ViRmV0Y2g6KCQpPT57aWYoJC5pbmNsdWRlcyhcIjovL1wiKXx8JC5zdGFydHNXaXRoKFwiaHR0cFwiKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJXZWJGZXRjaCBwZXJtaXNzaW9ucyB1c2UgZG9tYWluIGZvcm1hdCwgbm90IFVSTHNcIixzdWdnZXN0aW9uOidVc2UgXCJkb21haW46aG9zdG5hbWVcIiBmb3JtYXQnLGV4YW1wbGVzOltcIldlYkZldGNoKGRvbWFpbjpleGFtcGxlLmNvbSlcIixcIldlYkZldGNoKGRvbWFpbjpnaXRodWIuY29tKVwiXX07aWYoISQuc3RhcnRzV2l0aChcImRvbWFpbjpcIikpcmV0dXJue3ZhbGlkOiExLGVycm9yOidXZWJGZXRjaCBwZXJtaXNzaW9ucyBtdXN0IHVzZSBcImRvbWFpbjpcIiBwcmVmaXgnLHN1Z2dlc3Rpb246J1VzZSBcImRvbWFpbjpob3N0bmFtZVwiIGZvcm1hdCcsZXhhbXBsZXM6W1wiV2ViRmV0Y2goZG9tYWluOmV4YW1wbGUuY29tKVwiLFwiV2ViRmV0Y2goZG9tYWluOiouZ29vZ2xlLmNvbSlcIl19O3JldHVybnt2YWxpZDohMH19fX07ZnVuY3Rpb24gZUUoJCl7cmV0dXJuIHFHLmZpbGVQYXR0ZXJuVG9vbHMuaW5jbHVkZXMoJCl9ZnVuY3Rpb24gJGIoJCl7cmV0dXJuIHFHLmJhc2hQcmVmaXhUb29scy5pbmNsdWRlcygkKX1mdW5jdGlvbiBRYigkKXtyZXR1cm4gT2JqZWN0Lmhhc093bihxRy5jdXN0b21WYWxpZGF0aW9uLCQpP3FHLmN1c3RvbVZhbGlkYXRpb25bJF06dm9pZCAwfWZ1bmN0aW9uIEpiKCQsUSl7bGV0IEo9MCxZPVEtMTt3aGlsZShZPj0wJiYkW1ldPT09XCJcXFxcXCIpSisrLFktLTtyZXR1cm4gSiUyIT09MH1mdW5jdGlvbiB5eigkLFEpe2xldCBKPTA7Zm9yKGxldCBZPTA7WTwkLmxlbmd0aDtZKyspaWYoJFtZXT09PVEmJiFKYigkLFkpKUorKztyZXR1cm4gSn1mdW5jdGlvbiBYJCQoJCl7Zm9yKGxldCBRPTA7UTwkLmxlbmd0aC0xO1ErKylpZigkW1FdPT09XCIoXCImJiRbUSsxXT09PVwiKVwiKXtpZighSmIoJCxRKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBneigkKXtpZighJHx8JC50cmltKCk9PT1cIlwiKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIlBlcm1pc3Npb24gcnVsZSBjYW5ub3QgYmUgZW1wdHlcIn07bGV0IFE9eXooJCxcIihcIiksSj15eigkLFwiKVwiKTtpZihRIT09SilyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJNaXNtYXRjaGVkIHBhcmVudGhlc2VzXCIsc3VnZ2VzdGlvbjpcIkVuc3VyZSBhbGwgb3BlbmluZyBwYXJlbnRoZXNlcyBoYXZlIG1hdGNoaW5nIGNsb3NpbmcgcGFyZW50aGVzZXNcIn07aWYoWCQkKCQpKXtsZXQgRz0kLnN1YnN0cmluZygwLCQuaW5kZXhPZihcIihcIikpO2lmKCFHKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIkVtcHR5IHBhcmVudGhlc2VzIHdpdGggbm8gdG9vbCBuYW1lXCIsc3VnZ2VzdGlvbjpcIlNwZWNpZnkgYSB0b29sIG5hbWUgYmVmb3JlIHRoZSBwYXJlbnRoZXNlc1wifTtyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJFbXB0eSBwYXJlbnRoZXNlc1wiLHN1Z2dlc3Rpb246YEVpdGhlciBzcGVjaWZ5IGEgcGF0dGVybiBvciB1c2UganVzdCBcIiR7R31cIiB3aXRob3V0IHBhcmVudGhlc2VzYCxleGFtcGxlczpbYCR7R31gLGAke0d9KHNvbWUtcGF0dGVybilgXX19bGV0IFk9c0UoJCksWD1vRShZLnRvb2xOYW1lKTtpZihYKXtpZihZLnJ1bGVDb250ZW50IT09dm9pZCAwfHx5eigkLFwiKFwiKT4wKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIk1DUCBydWxlcyBkbyBub3Qgc3VwcG9ydCBwYXR0ZXJucyBpbiBwYXJlbnRoZXNlc1wiLHN1Z2dlc3Rpb246YFVzZSBcIiR7WS50b29sTmFtZX1cIiB3aXRob3V0IHBhcmVudGhlc2VzLCBvciB1c2UgXCJtY3BfXyR7WC5zZXJ2ZXJOYW1lfV9fKlwiIGZvciBhbGwgdG9vbHNgLGV4YW1wbGVzOltgbWNwX18ke1guc2VydmVyTmFtZX1gLGBtY3BfXyR7WC5zZXJ2ZXJOYW1lfV9fKmAsWC50b29sTmFtZSYmWC50b29sTmFtZSE9PVwiKlwiP2BtY3BfXyR7WC5zZXJ2ZXJOYW1lfV9fJHtYLnRvb2xOYW1lfWA6dm9pZCAwXS5maWx0ZXIoQm9vbGVhbil9O3JldHVybnt2YWxpZDohMH19aWYoIVkudG9vbE5hbWV8fFkudG9vbE5hbWUubGVuZ3RoPT09MClyZXR1cm57dmFsaWQ6ITEsZXJyb3I6XCJUb29sIG5hbWUgY2Fubm90IGJlIGVtcHR5XCJ9O2lmKCFZLnRvb2xOYW1lLmluY2x1ZGVzKFwiX1wiKSYmWS50b29sTmFtZVswXSE9PVkudG9vbE5hbWVbMF0/LnRvVXBwZXJDYXNlKCkpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiVG9vbCBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggdXBwZXJjYXNlXCIsc3VnZ2VzdGlvbjpgVXNlIFwiJHtBVShTdHJpbmcoWS50b29sTmFtZSkpfVwiYH07bGV0IFc9UWIoWS50b29sTmFtZSk7aWYoVyYmWS5ydWxlQ29udGVudCE9PXZvaWQgMCl7bGV0IEc9VyhZLnJ1bGVDb250ZW50KTtpZighRy52YWxpZClyZXR1cm4gR31pZigkYihZLnRvb2xOYW1lKSYmWS5ydWxlQ29udGVudCE9PXZvaWQgMCl7bGV0IEc9WS5ydWxlQ29udGVudDtpZihHLmluY2x1ZGVzKFwiOipcIikmJiFHLmVuZHNXaXRoKFwiOipcIikpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiVGhlIDoqIHBhdHRlcm4gbXVzdCBiZSBhdCB0aGUgZW5kXCIsc3VnZ2VzdGlvbjpcIk1vdmUgOiogdG8gdGhlIGVuZCBmb3IgcHJlZml4IG1hdGNoaW5nLCBvciB1c2UgKiBmb3Igd2lsZGNhcmQgbWF0Y2hpbmdcIixleGFtcGxlczpbXCJCYXNoKG5wbSBydW46KikgLSBwcmVmaXggbWF0Y2hpbmcgKGxlZ2FjeSlcIixcIkJhc2gobnBtIHJ1biAqKSAtIHdpbGRjYXJkIG1hdGNoaW5nXCJdfTtpZihHPT09XCI6KlwiKXJldHVybnt2YWxpZDohMSxlcnJvcjpcIlByZWZpeCBjYW5ub3QgYmUgZW1wdHkgYmVmb3JlIDoqXCIsc3VnZ2VzdGlvbjpcIlNwZWNpZnkgYSBjb21tYW5kIHByZWZpeCBiZWZvcmUgOipcIixleGFtcGxlczpbXCJCYXNoKG5wbSAqKVwiLFwiQmFzaChnaXQgKilcIl19fWlmKGVFKFkudG9vbE5hbWUpJiZZLnJ1bGVDb250ZW50IT09dm9pZCAwKXtsZXQgRz1ZLnJ1bGVDb250ZW50O2lmKEcuaW5jbHVkZXMoXCI6KlwiKSlyZXR1cm57dmFsaWQ6ITEsZXJyb3I6J1RoZSBcIjoqXCIgc3ludGF4IGlzIG9ubHkgZm9yIEJhc2ggcHJlZml4IHJ1bGVzJyxzdWdnZXN0aW9uOidVc2UgZ2xvYiBwYXR0ZXJucyBsaWtlIFwiKlwiIG9yIFwiKipcIiBmb3IgZmlsZSBtYXRjaGluZycsZXhhbXBsZXM6W2Ake1kudG9vbE5hbWV9KCoudHMpIC0gbWF0Y2hlcyAudHMgZmlsZXNgLGAke1kudG9vbE5hbWV9KHNyYy8qKikgLSBtYXRjaGVzIGFsbCBmaWxlcyBpbiBzcmNgLGAke1kudG9vbE5hbWV9KCoqLyoudGVzdC50cykgLSBtYXRjaGVzIHRlc3QgZmlsZXNgXX07aWYoRy5pbmNsdWRlcyhcIipcIikmJiFHLm1hdGNoKC9eXFwqfFxcKiR8XFwqXFwqfFxcL1xcKnxcXCpcXC58XFwqXFwpLykmJiFHLmluY2x1ZGVzKFwiKipcIikpcmV0dXJue3ZhbGlkOiExLGVycm9yOlwiV2lsZGNhcmQgcGxhY2VtZW50IG1pZ2h0IGJlIGluY29ycmVjdFwiLHN1Z2dlc3Rpb246XCJXaWxkY2FyZHMgYXJlIHR5cGljYWxseSB1c2VkIGF0IHBhdGggYm91bmRhcmllc1wiLGV4YW1wbGVzOltgJHtZLnRvb2xOYW1lfSgqLmpzKSAtIGFsbCAuanMgZmlsZXNgLGAke1kudG9vbE5hbWV9KHNyYy8qKSAtIGFsbCBmaWxlcyBkaXJlY3RseSBpbiBzcmNgLGAke1kudG9vbE5hbWV9KHNyYy8qKikgLSBhbGwgZmlsZXMgcmVjdXJzaXZlbHkgaW4gc3JjYF19fXJldHVybnt2YWxpZDohMH19dmFyIFZHPV8oKCk9Pksuc3RyaW5nKCkuc3VwZXJSZWZpbmUoKCQsUSk9PntsZXQgSj1neigkKTtpZighSi52YWxpZCl7bGV0IFk9Si5lcnJvcjtpZihKLnN1Z2dlc3Rpb24pWSs9YC4gJHtKLnN1Z2dlc3Rpb259YDtpZihKLmV4YW1wbGVzJiZKLmV4YW1wbGVzLmxlbmd0aD4wKVkrPWAuIEV4YW1wbGVzOiAke0ouZXhhbXBsZXMuam9pbihcIiwgXCIpfWA7US5hZGRJc3N1ZSh7Y29kZTpLLlpvZElzc3VlQ29kZS5jdXN0b20sbWVzc2FnZTpZLHBhcmFtczp7cmVjZWl2ZWQ6JH19KX19KSk7dmFyIFkkJD1fKCgpPT5LLnJlY29yZChLLnN0cmluZygpLEsuY29lcmNlLnN0cmluZygpKSk7ZnVuY3Rpb24gWWIoJCl7cmV0dXJuIEsub2JqZWN0KHthbGxvdzpLLmFycmF5KFZHKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIHBlcm1pc3Npb24gcnVsZXMgZm9yIGFsbG93ZWQgb3BlcmF0aW9uc1wiKSxkZW55OksuYXJyYXkoVkcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgcGVybWlzc2lvbiBydWxlcyBmb3IgZGVuaWVkIG9wZXJhdGlvbnNcIiksYXNrOksuYXJyYXkoVkcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgcGVybWlzc2lvbiBydWxlcyB0aGF0IHNob3VsZCBhbHdheXMgcHJvbXB0IGZvciBjb25maXJtYXRpb25cIiksZGVmYXVsdE1vZGU6Sy5lbnVtKFsuLi5lSiwuLi5yRSgkKV0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEZWZhdWx0IHBlcm1pc3Npb24gbW9kZSB3aGVuIENsYXVkZSBDb2RlIG5lZWRzIGFjY2Vzc1wiKSxkaXNhYmxlQnlwYXNzUGVybWlzc2lvbnNNb2RlOksuZW51bShbXCJkaXNhYmxlXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzYWJsZSB0aGUgYWJpbGl0eSB0byBieXBhc3MgcGVybWlzc2lvbiBwcm9tcHRzXCIpLC4uLm5FKCQpLGFkZGl0aW9uYWxEaXJlY3RvcmllczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZGRpdGlvbmFsIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUgaW4gdGhlIHBlcm1pc3Npb24gc2NvcGVcIil9KS5wYXNzdGhyb3VnaCgpfXZhciBCWiQ9XygoKT0+WWIoZnooKSkpLFckJD1fKCgpPT5LLm9iamVjdCh7c291cmNlOlFYKCkuZGVzY3JpYmUoXCJXaGVyZSB0byBmZXRjaCB0aGUgbWFya2V0cGxhY2UgZnJvbVwiKSxpbnN0YWxsTG9jYXRpb246Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTG9jYWwgY2FjaGUgcGF0aCB3aGVyZSBtYXJrZXRwbGFjZSBtYW5pZmVzdCBpcyBzdG9yZWQgKGF1dG8tZ2VuZXJhdGVkIGlmIG5vdCBwcm92aWRlZClcIiksYXV0b1VwZGF0ZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGlzIG1hcmtldHBsYWNlIGFuZCBpdHMgaW5zdGFsbGVkIHBsdWdpbnMgb24gc3RhcnR1cFwiKX0pKSxHJCQ9XygoKT0+Sy5vYmplY3Qoe3NlcnZlck5hbWU6Sy5zdHJpbmcoKS5yZWdleCgvXlthLXpBLVowLTlfLV0rJC8sXCJTZXJ2ZXIgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIGFuZCB1bmRlcnNjb3Jlc1wiKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTmFtZSBvZiB0aGUgTUNQIHNlcnZlciB0aGF0IHVzZXJzIGFyZSBhbGxvd2VkIHRvIGNvbmZpZ3VyZVwiKSxzZXJ2ZXJDb21tYW5kOksuYXJyYXkoSy5zdHJpbmcoKSkubWluKDEsXCJTZXJ2ZXIgY29tbWFuZCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQgKHRoZSBjb21tYW5kKVwiKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ29tbWFuZCBhcnJheSBbY29tbWFuZCwgLi4uYXJnc10gdG8gbWF0Y2ggZXhhY3RseSBmb3IgYWxsb3dlZCBzdGRpbyBzZXJ2ZXJzXCIpLHNlcnZlclVybDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1VSTCBwYXR0ZXJuIHdpdGggd2lsZGNhcmQgc3VwcG9ydCAoZS5nLiwgXCJodHRwczovLyouZXhhbXBsZS5jb20vKlwiKSBmb3IgYWxsb3dlZCByZW1vdGUgTUNQIHNlcnZlcnMnKX0pLnJlZmluZSgoJCk9PntyZXR1cm4gY0goWyQuc2VydmVyTmFtZSE9PXZvaWQgMCwkLnNlcnZlckNvbW1hbmQhPT12b2lkIDAsJC5zZXJ2ZXJVcmwhPT12b2lkIDBdLEJvb2xlYW4pPT09MX0se21lc3NhZ2U6J0VudHJ5IG11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBcInNlcnZlck5hbWVcIiwgXCJzZXJ2ZXJDb21tYW5kXCIsIG9yIFwic2VydmVyVXJsXCInfSkpLFUkJD1fKCgpPT5LLm9iamVjdCh7c2VydmVyTmFtZTpLLnN0cmluZygpLnJlZ2V4KC9eW2EtekEtWjAtOV8tXSskLyxcIlNlcnZlciBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzXCIpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJOYW1lIG9mIHRoZSBNQ1Agc2VydmVyIHRoYXQgaXMgZXhwbGljaXRseSBibG9ja2VkXCIpLHNlcnZlckNvbW1hbmQ6Sy5hcnJheShLLnN0cmluZygpKS5taW4oMSxcIlNlcnZlciBjb21tYW5kIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCAodGhlIGNvbW1hbmQpXCIpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21tYW5kIGFycmF5IFtjb21tYW5kLCAuLi5hcmdzXSB0byBtYXRjaCBleGFjdGx5IGZvciBibG9ja2VkIHN0ZGlvIHNlcnZlcnNcIiksc2VydmVyVXJsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnVVJMIHBhdHRlcm4gd2l0aCB3aWxkY2FyZCBzdXBwb3J0IChlLmcuLCBcImh0dHBzOi8vKi5leGFtcGxlLmNvbS8qXCIpIGZvciBibG9ja2VkIHJlbW90ZSBNQ1Agc2VydmVycycpfSkucmVmaW5lKCgkKT0+e3JldHVybiBjSChbJC5zZXJ2ZXJOYW1lIT09dm9pZCAwLCQuc2VydmVyQ29tbWFuZCE9PXZvaWQgMCwkLnNlcnZlclVybCE9PXZvaWQgMF0sQm9vbGVhbik9PT0xfSx7bWVzc2FnZTonRW50cnkgbXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIFwic2VydmVyTmFtZVwiLCBcInNlcnZlckNvbW1hbmRcIiwgb3IgXCJzZXJ2ZXJVcmxcIid9KSksSCQkPV8oKCk9Pksub2JqZWN0KHtwYXRoOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJBYnNvbHV0ZSBwYXRoIHRvIHRoZSBoZWxwZXIgZXhlY3V0YWJsZVwiKSx0aW1lb3V0TXM6Sy5udW1iZXIoKS5pbnQoKS5taW4oMTAwMCkub3B0aW9uYWwoKSxyZWZyZXNoSW50ZXJ2YWxNczpLLnVuaW9uKFtLLmxpdGVyYWwoMCksSy5udW1iZXIoKS5pbnQoKS5taW4oNjAwMDApXSkub3B0aW9uYWwoKX0pKSxYYj1bXCJza2lsbHNcIixcImFnZW50c1wiLFwiaG9va3NcIixcIm1jcFwiXTtmdW5jdGlvbiBXYigkKXtyZXR1cm4gSy5vYmplY3QoeyRzY2hlbWE6Sy5saXRlcmFsKGRFKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSlNPTiBTY2hlbWEgcmVmZXJlbmNlIGZvciBDbGF1ZGUgQ29kZSBzZXR0aW5nc1wiKSxhcGlLZXlIZWxwZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHNjcmlwdCB0aGF0IG91dHB1dHMgYXV0aGVudGljYXRpb24gdmFsdWVzXCIpLHByb3h5QXV0aEhlbHBlcjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTaGVsbCBjb21tYW5kIHRoYXQgb3V0cHV0cyBhIFByb3h5LUF1dGhvcml6YXRpb24gaGVhZGVyIHZhbHVlIChFQVApXCIpLGF3c0NyZWRlbnRpYWxFeHBvcnQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHNjcmlwdCB0aGF0IGV4cG9ydHMgQVdTIGNyZWRlbnRpYWxzXCIpLGF3c0F1dGhSZWZyZXNoOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhdGggdG8gYSBzY3JpcHQgdGhhdCByZWZyZXNoZXMgQVdTIGF1dGhlbnRpY2F0aW9uXCIpLGdjcEF1dGhSZWZyZXNoOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbW1hbmQgdG8gcmVmcmVzaCBHQ1AgYXV0aGVudGljYXRpb24gKGUuZy4sIGdjbG91ZCBhdXRoIGFwcGxpY2F0aW9uLWRlZmF1bHQgbG9naW4pXCIpLHBvbGljeUhlbHBlcjpIJCQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRXhlY3V0YWJsZSB0aGF0IGNvbXB1dGVzIG1hbmFnZWQgc2V0dGluZ3MgYXQgc3RhcnR1cC4gSG9ub3JlZCBvbmx5IGZyb20gYWRtaW4tY29udHJvbGxlZCBwb2xpY3kgc291cmNlcy5cIiksLi4uUiQocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfRU5BQkxFX1hBQSkmJnt4YWFJZHA6Sy5vYmplY3Qoe2lzc3VlcjpLLnN0cmluZygpLnVybCgpLmRlc2NyaWJlKFwiSWRQIGlzc3VlciBVUkwgZm9yIE9JREMgZGlzY292ZXJ5XCIpLGNsaWVudElkOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJDbGF1ZGUgQ29kZSdzIGNsaWVudF9pZCByZWdpc3RlcmVkIGF0IHRoZSBJZFBcIiksY2FsbGJhY2tQb3J0OksubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRml4ZWQgbG9vcGJhY2sgY2FsbGJhY2sgcG9ydCBmb3IgdGhlIElkUCBPSURDIGxvZ2luLiBPbmx5IG5lZWRlZCBpZiB0aGUgSWRQIGRvZXMgbm90IGhvbm9yIFJGQyA4MjUyIHBvcnQtYW55IG1hdGNoaW5nLlwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJYQUEgKFNFUC05OTApIElkUCBjb25uZWN0aW9uLiBDb25maWd1cmUgb25jZTsgYWxsIFhBQS1lbmFibGVkIE1DUCBzZXJ2ZXJzIHJldXNlIHRoaXMuXCIpfSxmaWxlU3VnZ2VzdGlvbjpLLm9iamVjdCh7dHlwZTpLLmxpdGVyYWwoXCJjb21tYW5kXCIpLGNvbW1hbmQ6Sy5zdHJpbmcoKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gZmlsZSBzdWdnZXN0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIEAgbWVudGlvbnNcIikscmVzcGVjdEdpdGlnbm9yZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciBmaWxlIHBpY2tlciBzaG91bGQgcmVzcGVjdCAuZ2l0aWdub3JlIGZpbGVzIChkZWZhdWx0OiB0cnVlKS4gTm90ZTogLmlnbm9yZSBmaWxlcyBhcmUgYWx3YXlzIHJlc3BlY3RlZC5cIiksY2xlYW51cFBlcmlvZERheXM6Sy5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJOdW1iZXIgb2YgZGF5cyB0byByZXRhaW4gY2hhdCB0cmFuc2NyaXB0cyBiZWZvcmUgYXV0b21hdGljIGNsZWFudXAgKGRlZmF1bHQ6IDMwKS4gTWluaW11bSAxLiBVc2UgYSBsYXJnZSB2YWx1ZSBmb3IgbG9uZyByZXRlbnRpb247IHVzZSAtLW5vLXNlc3Npb24tcGVyc2lzdGVuY2UgdG8gZGlzYWJsZSB0cmFuc2NyaXB0IHdyaXRlcyBlbnRpcmVseS5cIiksc2tpbGxMaXN0aW5nTWF4RGVzY0NoYXJzOksubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGVyLXNraWxsIGRlc2NyaXB0aW9uIGNoYXJhY3RlciBjYXAgaW4gdGhlIHNraWxsIGxpc3Rpbmcgc2VudCB0byBDbGF1ZGUgKGRlZmF1bHQ6IDE1MzYpLiBEZXNjcmlwdGlvbnMgbG9uZ2VyIHRoYW4gdGhpcyBhcmUgdHJ1bmNhdGVkLiBSYWlzZSB0byBvcHQgaW4gdG8gaGlnaGVyIHBlci10dXJuIGNvbnRleHQgY29zdC5cIiksc2tpbGxMaXN0aW5nQnVkZ2V0RnJhY3Rpb246Sy5udW1iZXIoKS5ndCgwKS5sdGUoMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZyYWN0aW9uIG9mIHRoZSBjb250ZXh0IHdpbmRvdyAoaW4gY2hhcmFjdGVycykgcmVzZXJ2ZWQgZm9yIHRoZSBza2lsbCBsaXN0aW5nIHNlbnQgdG8gQ2xhdWRlIChkZWZhdWx0OiAwLjAxID0gMSUpLiBXaGVuIHRoZSBsaXN0aW5nIGV4Y2VlZHMgdGhpcywgZGVzY3JpcHRpb25zIGFyZSBzaG9ydGVuZWQgdG8gZml0LiBSYWlzZSB0byBvcHQgaW4gdG8gaGlnaGVyIHBlci10dXJuIGNvbnRleHQgY29zdC5cIiksd3NsSW5oZXJpdHNXaW5kb3dzU2V0dGluZ3M6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gc2V0IHRvIHRydWUgaW4gZWl0aGVyIGFkbWluLW9ubHkgV2luZG93cyBzb3VyY2UgXHUyMDE0IHRoZSBIS0xNIFNPRlRXQVJFL1BvbGljaWVzL0NsYXVkZUNvZGUgcmVnaXN0cnkga2V5IG9yIEM6L1Byb2dyYW0gRmlsZXMvQ2xhdWRlQ29kZS9tYW5hZ2VkLXNldHRpbmdzLmpzb24gXHUyMDE0IFdTTCByZWFkcyBtYW5hZ2VkIHNldHRpbmdzIGZyb20gdGhlIGZ1bGwgV2luZG93cyBwb2xpY3kgY2hhaW4gKEhLTE0sIEM6L1Byb2dyYW0gRmlsZXMvQ2xhdWRlQ29kZSB2aWEgRHJ2RnMsIEhLQ1UpIGluIGFkZGl0aW9uIHRvIC9ldGMvY2xhdWRlLWNvZGUuIFdpbmRvd3Mgc291cmNlcyB0YWtlIHByaW9yaXR5LiBUaGUgZmxhZyBpcyBhbHNvIHJlcXVpcmVkIGluIEhLQ1UgaXRzZWxmIGZvciBIS0NVIHBvbGljeSB0byBhcHBseSBvbiBXU0wgKGRvdWJsZSBvcHQtaW46IGFkbWluIGVuYWJsZXMgdGhlIGNoYWluLCB1c2VyIGNvbmZpcm1zIEhLQ1UpLiBPbiBuYXRpdmUgV2luZG93cyB0aGUgZmxhZyBoYXMgbm8gZWZmZWN0LlwiKSxlbnY6WSQkKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgZm9yIENsYXVkZSBDb2RlIHNlc3Npb25zXCIpLGF0dHJpYnV0aW9uOksub2JqZWN0KHtjb21taXQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQXR0cmlidXRpb24gdGV4dCBmb3IgZ2l0IGNvbW1pdHMsIGluY2x1ZGluZyBhbnkgdHJhaWxlcnMuIEVtcHR5IHN0cmluZyBoaWRlcyBhdHRyaWJ1dGlvbi5cIikscHI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQXR0cmlidXRpb24gdGV4dCBmb3IgcHVsbCByZXF1ZXN0IGRlc2NyaXB0aW9ucy4gRW1wdHkgc3RyaW5nIGhpZGVzIGF0dHJpYnV0aW9uLlwiKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b21pemUgYXR0cmlidXRpb24gdGV4dCBmb3IgY29tbWl0cyBhbmQgUFJzLiBFYWNoIGZpZWxkIGRlZmF1bHRzIHRvIHRoZSBzdGFuZGFyZCBDbGF1ZGUgQ29kZSBhdHRyaWJ1dGlvbiBpZiBub3Qgc2V0LlwiKSxpbmNsdWRlQ29BdXRob3JlZEJ5OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEZXByZWNhdGVkOiBVc2UgYXR0cmlidXRpb24gaW5zdGVhZC4gV2hldGhlciB0byBpbmNsdWRlIENsYXVkZSdzIGNvLWF1dGhvcmVkIGJ5IGF0dHJpYnV0aW9uIGluIGNvbW1pdHMgYW5kIFBScyAoZGVmYXVsdHMgdG8gdHJ1ZSlcIiksaW5jbHVkZUdpdEluc3RydWN0aW9uczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW5jbHVkZSBidWlsdC1pbiBjb21taXQgYW5kIFBSIHdvcmtmbG93IGluc3RydWN0aW9ucyBpbiBDbGF1ZGUncyBzeXN0ZW0gcHJvbXB0IChkZWZhdWx0OiB0cnVlKVwiKSxwZXJtaXNzaW9uczpZYigkKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG9vbCB1c2FnZSBwZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uXCIpLG1vZGVsOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk92ZXJyaWRlIHRoZSBkZWZhdWx0IG1vZGVsIHVzZWQgYnkgQ2xhdWRlIENvZGVcIiksYXZhaWxhYmxlTW9kZWxzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgnQWxsb3dsaXN0IG9mIG1vZGVscyB0aGF0IHVzZXJzIGNhbiBzZWxlY3QuIEFjY2VwdHMgZmFtaWx5IGFsaWFzZXMgKFwib3B1c1wiIGFsbG93cyBhbnkgb3B1cyB2ZXJzaW9uKSwgdmVyc2lvbiBwcmVmaXhlcyAoXCJvcHVzLTQtNVwiIGFsbG93cyBvbmx5IHRoYXQgdmVyc2lvbiksIGFuZCBmdWxsIG1vZGVsIElEcy4gSWYgdW5kZWZpbmVkLCBhbGwgbW9kZWxzIGFyZSBhdmFpbGFibGUuIElmIGVtcHR5IGFycmF5LCBvbmx5IHRoZSBkZWZhdWx0IG1vZGVsIGlzIGF2YWlsYWJsZS4gVHlwaWNhbGx5IHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzIGJ5IGVudGVycHJpc2UgYWRtaW5pc3RyYXRvcnMuJyksbW9kZWxPdmVycmlkZXM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdPdmVycmlkZSBtYXBwaW5nIGZyb20gQW50aHJvcGljIG1vZGVsIElEIChlLmcuIFwiY2xhdWRlLW9wdXMtNC02XCIpIHRvIHByb3ZpZGVyLXNwZWNpZmljIG1vZGVsIElEIChlLmcuIGEgQmVkcm9jayBpbmZlcmVuY2UgcHJvZmlsZSBBUk4pLiBUeXBpY2FsbHkgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MgYnkgZW50ZXJwcmlzZSBhZG1pbmlzdHJhdG9ycy4nKSxlbmFibGVBbGxQcm9qZWN0TWNwU2VydmVyczpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGFwcHJvdmUgYWxsIE1DUCBzZXJ2ZXJzIGluIHRoZSBwcm9qZWN0XCIpLGVuYWJsZWRNY3Bqc29uU2VydmVyczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIGFwcHJvdmVkIE1DUCBzZXJ2ZXJzIGZyb20gLm1jcC5qc29uXCIpLGRpc2FibGVkTWNwanNvblNlcnZlcnM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTGlzdCBvZiByZWplY3RlZCBNQ1Agc2VydmVycyBmcm9tIC5tY3AuanNvblwiKSxza2lsbE92ZXJyaWRlczpLLnJlY29yZChLLnN0cmluZygpLEsuZW51bShbXCJvblwiLFwibmFtZS1vbmx5XCIsXCJ1c2VyLWludm9jYWJsZS1vbmx5XCIsXCJvZmZcIl0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdQZXItc2tpbGwgbGlzdGluZyBvdmVycmlkZXMga2V5ZWQgYnkgc2tpbGwgbmFtZS4gXCJuYW1lLW9ubHlcIiBsaXN0cyB0aGUgc2tpbGwgd2l0aG91dCBpdHMgZGVzY3JpcHRpb247IFwidXNlci1pbnZvY2FibGUtb25seVwiIGhpZGVzIGl0IGZyb20gdGhlIG1vZGVsIGJ1dCBrZWVwcyAvbmFtZTsgXCJvZmZcIiBoaWRlcyBpdCBmcm9tIGJvdGguIEFic2VudCA9IG9uLicpLGFsbG93ZWRNY3BTZXJ2ZXJzOksuYXJyYXkoRyQkKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbnRlcnByaXNlIGFsbG93bGlzdCBvZiBNQ1Agc2VydmVycyB0aGF0IGNhbiBiZSB1c2VkLiBBcHBsaWVzIHRvIGFsbCBzY29wZXMgaW5jbHVkaW5nIGVudGVycHJpc2Ugc2VydmVycyBmcm9tIG1hbmFnZWQtbWNwLmpzb24uIElmIHVuZGVmaW5lZCwgYWxsIHNlcnZlcnMgYXJlIGFsbG93ZWQuIElmIGVtcHR5IGFycmF5LCBubyBzZXJ2ZXJzIGFyZSBhbGxvd2VkLiBEZW55bGlzdCB0YWtlcyBwcmVjZWRlbmNlIC0gaWYgYSBzZXJ2ZXIgaXMgb24gYm90aCBsaXN0cywgaXQgaXMgZGVuaWVkLlwiKSxkZW5pZWRNY3BTZXJ2ZXJzOksuYXJyYXkoVSQkKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFbnRlcnByaXNlIGRlbnlsaXN0IG9mIE1DUCBzZXJ2ZXJzIHRoYXQgYXJlIGV4cGxpY2l0bHkgYmxvY2tlZC4gSWYgYSBzZXJ2ZXIgaXMgb24gdGhlIGRlbnlsaXN0LCBpdCB3aWxsIGJlIGJsb2NrZWQgYWNyb3NzIGFsbCBzY29wZXMgaW5jbHVkaW5nIGVudGVycHJpc2UuIERlbnlsaXN0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhbGxvd2xpc3QgLSBpZiBhIHNlcnZlciBpcyBvbiBib3RoIGxpc3RzLCBpdCBpcyBkZW5pZWQuXCIpLGhvb2tzOmMwKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBjb21tYW5kcyB0byBydW4gYmVmb3JlL2FmdGVyIHRvb2wgZXhlY3V0aW9uc1wiKSx3b3JrdHJlZTpLLm9iamVjdCh7c3ltbGlua0RpcmVjdG9yaWVzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgnRGlyZWN0b3JpZXMgdG8gc3ltbGluayBmcm9tIG1haW4gcmVwb3NpdG9yeSB0byB3b3JrdHJlZXMgdG8gYXZvaWQgZGlzayBibG9hdC4gTXVzdCBiZSBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgLSBubyBkaXJlY3RvcmllcyBhcmUgc3ltbGlua2VkIGJ5IGRlZmF1bHQuIENvbW1vbiBleGFtcGxlczogXCJub2RlX21vZHVsZXNcIiwgXCIuY2FjaGVcIiwgXCIuYmluXCInKSxzcGFyc2VQYXRoczpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXJlY3RvcmllcyB0byBpbmNsdWRlIHdoZW4gY3JlYXRpbmcgd29ya3RyZWVzLCB2aWEgZ2l0IHNwYXJzZS1jaGVja291dCAoY29uZSBtb2RlKS4gXCIrXCJEcmFtYXRpY2FsbHkgZmFzdGVyIGluIGxhcmdlIG1vbm9yZXBvcyBcdTIwMTQgb25seSB0aGUgbGlzdGVkIHBhdGhzIGFyZSB3cml0dGVuIHRvIGRpc2suXCIpLGJhc2VSZWY6Sy5lbnVtKFtcImZyZXNoXCIsXCJoZWFkXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hpY2ggcmVmIG5ldyB3b3JrdHJlZXMgYnJhbmNoIGZyb20uICdmcmVzaCcgKGRlZmF1bHQpIGJyYW5jaGVzIGZyb20gb3JpZ2luLzxkZWZhdWx0LWJyYW5jaD4gZm9yIGEgY2xlYW4gdHJlZS4gJ2hlYWQnIGJyYW5jaGVzIGZyb20geW91ciBjdXJyZW50IGxvY2FsIEhFQUQgc28gdW5wdXNoZWQgY29tbWl0cyBhbmQgZmVhdHVyZS1icmFuY2ggc3RhdGUgYXJlIHByZXNlbnQuIEFwcGxpZXMgdG8gLS13b3JrdHJlZSwgRW50ZXJXb3JrdHJlZSwgYW5kIGFnZW50IGlzb2xhdGlvbi5cIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2l0IHdvcmt0cmVlIGNvbmZpZ3VyYXRpb24gZm9yIC0td29ya3RyZWUgZmxhZy5cIiksZGlzYWJsZUFsbEhvb2tzOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGFsbCBob29rcyBhbmQgc3RhdHVzTGluZSBleGVjdXRpb25cIiksZGlzYWJsZUFnZW50VmlldzpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzYWJsZSBhZ2VudCB2aWV3IChgY2xhdWRlIGFnZW50c2AsIGAtLWJnYCwgL2JhY2tncm91bmQsIHRoZSBvbi1kZW1hbmQgZGFlbW9uKS4gVHlwaWNhbGx5IHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzLiBFcXVpdmFsZW50IHRvIENMQVVERV9DT0RFX0RJU0FCTEVfQUdFTlRfVklFVz0xLlwiKSxkaXNhYmxlUmVtb3RlQ29udHJvbDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzYWJsZSBSZW1vdGUgQ29udHJvbCAoY2xhdWRlLmFpL2NvZGUsIGBjbGF1ZGUgcmVtb3RlLWNvbnRyb2xgLCBgLS1yZW1vdGUtY29udHJvbGAvYC0tcmNgLCBhdXRvLXN0YXJ0LCBhbmQgdGhlIGluLXNlc3Npb24gdG9nZ2xlKS4gVHlwaWNhbGx5IHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzLlwiKSxkaXNhYmxlU2tpbGxTaGVsbEV4ZWN1dGlvbjpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzYWJsZSBpbmxpbmUgc2hlbGwgZXhlY3V0aW9uIGluIHNraWxscyBhbmQgY3VzdG9tIHNsYXNoIGNvbW1hbmRzIGZyb20gdXNlciwgcHJvamVjdCwgb3IgcGx1Z2luIHNvdXJjZXMuIENvbW1hbmRzIGFyZSByZXBsYWNlZCB3aXRoIGEgcGxhY2Vob2xkZXIgaW5zdGVhZCBvZiBiZWluZyBydW4uXCIpLGRlZmF1bHRTaGVsbDpLLmVudW0oW1wiYmFzaFwiLFwicG93ZXJzaGVsbFwiXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgc2hlbGwgZm9yIGlucHV0LWJveCAhIGNvbW1hbmRzLiBEZWZhdWx0cyB0byAnYmFzaCcgb24gYWxsIHBsYXRmb3JtcyAobm8gV2luZG93cyBhdXRvLWZsaXApLlwiKSxhbGxvd01hbmFnZWRIb29rc09ubHk6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gdHJ1ZSAoYW5kIHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzKSwgb25seSBob29rcyBmcm9tIG1hbmFnZWQgc2V0dGluZ3MgcnVuLiBVc2VyLCBwcm9qZWN0LCBhbmQgbG9jYWwgaG9va3MgYXJlIGlnbm9yZWQuXCIpLGFsbG93ZWRIdHRwSG9va1VybHM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBbGxvd2xpc3Qgb2YgVVJMIHBhdHRlcm5zIHRoYXQgSFRUUCBob29rcyBtYXkgdGFyZ2V0LiBTdXBwb3J0cyAqIGFzIGEgd2lsZGNhcmQgKGUuZy4gXCJodHRwczovL2hvb2tzLmV4YW1wbGUuY29tLypcIikuIFdoZW4gc2V0LCBIVFRQIGhvb2tzIHdpdGggbm9uLW1hdGNoaW5nIFVSTHMgYXJlIGJsb2NrZWQuIElmIHVuZGVmaW5lZCwgYWxsIFVSTHMgYXJlIGFsbG93ZWQuIElmIGVtcHR5IGFycmF5LCBubyBIVFRQIGhvb2tzIGFyZSBhbGxvd2VkLiBBcnJheXMgbWVyZ2UgYWNyb3NzIHNldHRpbmdzIHNvdXJjZXMgKHNhbWUgc2VtYW50aWNzIGFzIGFsbG93ZWRNY3BTZXJ2ZXJzKS4nKSxodHRwSG9va0FsbG93ZWRFbnZWYXJzOksuYXJyYXkoSy5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFsbG93bGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBIVFRQIGhvb2tzIG1heSBpbnRlcnBvbGF0ZSBpbnRvIGhlYWRlcnMuIFdoZW4gc2V0LCBlYWNoIGhvb2sncyBlZmZlY3RpdmUgYWxsb3dlZEVudlZhcnMgaXMgdGhlIGludGVyc2VjdGlvbiB3aXRoIHRoaXMgbGlzdC4gSWYgdW5kZWZpbmVkLCBubyByZXN0cmljdGlvbiBpcyBhcHBsaWVkLiBBcnJheXMgbWVyZ2UgYWNyb3NzIHNldHRpbmdzIHNvdXJjZXMgKHNhbWUgc2VtYW50aWNzIGFzIGFsbG93ZWRNY3BTZXJ2ZXJzKS5cIiksYWxsb3dNYW5hZ2VkUGVybWlzc2lvblJ1bGVzT25seTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlIChhbmQgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MpLCBvbmx5IHBlcm1pc3Npb24gcnVsZXMgKGFsbG93L2RlbnkvYXNrKSBmcm9tIG1hbmFnZWQgc2V0dGluZ3MgYXJlIHJlc3BlY3RlZC4gVXNlciwgcHJvamVjdCwgbG9jYWwsIGFuZCBDTEkgYXJndW1lbnQgcGVybWlzc2lvbiBydWxlcyBhcmUgaWdub3JlZC5cIiksYWxsb3dNYW5hZ2VkTWNwU2VydmVyc09ubHk6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gdHJ1ZSAoYW5kIHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzKSwgYWxsb3dlZE1jcFNlcnZlcnMgaXMgb25seSByZWFkIGZyb20gbWFuYWdlZCBzZXR0aW5ncy4gZGVuaWVkTWNwU2VydmVycyBzdGlsbCBtZXJnZXMgZnJvbSBhbGwgc291cmNlcywgc28gdXNlcnMgY2FuIGRlbnkgc2VydmVycyBmb3IgdGhlbXNlbHZlcy4gVXNlcnMgY2FuIHN0aWxsIGFkZCB0aGVpciBvd24gTUNQIHNlcnZlcnMsIGJ1dCBvbmx5IHRoZSBhZG1pbi1kZWZpbmVkIGFsbG93bGlzdCBhcHBsaWVzLlwiKSxzdHJpY3RQbHVnaW5Pbmx5Q3VzdG9taXphdGlvbjpLLnByZXByb2Nlc3MoKFEpPT5BcnJheS5pc0FycmF5KFEpP1EuZmlsdGVyKChKKT0+WGIuaW5jbHVkZXMoSikpOlEsSy51bmlvbihbSy5ib29sZWFuKCksSy5hcnJheShLLmVudW0oWGIpKV0pKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoJ1doZW4gc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MsIGJsb2NrcyBub24tcGx1Z2luIGN1c3RvbWl6YXRpb24gc291cmNlcyBmb3IgdGhlIGxpc3RlZCBzdXJmYWNlcy4gQXJyYXkgZm9ybSBsb2NrcyBzcGVjaWZpYyBzdXJmYWNlcyAoZS5nLiBbXCJza2lsbHNcIiwgXCJob29rc1wiXSk7IGB0cnVlYCBsb2NrcyBhbGwgZm91cjsgYGZhbHNlYCBpcyBhbiBleHBsaWNpdCBuby1vcC4gQmxvY2tlZDogfi8uY2xhdWRlL3tzdXJmYWNlfS8sIC5jbGF1ZGUve3N1cmZhY2V9LyAocHJvamVjdCksIHNldHRpbmdzLmpzb24gaG9va3MsIC5tY3AuanNvbi4gTk9UIGJsb2NrZWQ6IG1hbmFnZWQgKHBvbGljeVNldHRpbmdzKSBzb3VyY2VzLCBwbHVnaW4tcHJvdmlkZWQgY3VzdG9taXphdGlvbnMuICcrXCJDb21wb3NlcyB3aXRoIHN0cmljdEtub3duTWFya2V0cGxhY2VzIGZvciBlbmQtdG8tZW5kIGFkbWluIGNvbnRyb2wgXHUyMDE0IHBsdWdpbnMgZ2F0ZWQgYnkgXCIrXCJtYXJrZXRwbGFjZSBhbGxvd2xpc3QsIGV2ZXJ5dGhpbmcgZWxzZSBibG9ja2VkIGhlcmUuXCIpLHN0YXR1c0xpbmU6Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwiY29tbWFuZFwiKSxjb21tYW5kOksuc3RyaW5nKCkscGFkZGluZzpLLm51bWJlcigpLm9wdGlvbmFsKCkscmVmcmVzaEludGVydmFsOksubnVtYmVyKCkubWluKDEpLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIlJlLXJ1biB0aGUgc3RhdHVzIGxpbmUgY29tbWFuZCBldmVyeSBOIHNlY29uZHMgaW4gYWRkaXRpb24gdG8gZXZlbnQtZHJpdmVuIHVwZGF0ZXNcIiksaGlkZVZpbU1vZGVJbmRpY2F0b3I6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkhpZGUgdGhlIGJ1aWx0LWluIGAtLSBJTlNFUlQgLS1gIC8gYC0tIFZJU1VBTCAtLWAgaW5kaWNhdG9yIGJlbG93IHRoZSBwcm9tcHQuIFVzZSB0aGlzIHdoZW4geW91ciBzdGF0dXMgbGluZSBzY3JpcHQgcmVuZGVycyBgdmltLm1vZGVgIGl0c2VsZi5cIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIHN0YXR1cyBsaW5lIGRpc3BsYXkgY29uZmlndXJhdGlvblwiKSxwclVybFRlbXBsYXRlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnVVJMIHRlbXBsYXRlIGZvciBQUiBsaW5rcyBpbiB0aGUgZm9vdGVyIGJhZGdlIGFuZCBpbmxpbmUgbWVzc2FnZXMuIFBsYWNlaG9sZGVyczoge2hvc3R9IHtvd25lcn0ge3JlcG99IHtudW1iZXJ9IHt1cmx9LiBFeGFtcGxlOiBcImh0dHBzOi8vcmV2aWV3cy5leGFtcGxlLmNvbS97b3duZXJ9L3tyZXBvfS9wdWxsL3tudW1iZXJ9XCInKSxzdWJhZ2VudFN0YXR1c0xpbmU6Sy5vYmplY3Qoe3R5cGU6Sy5saXRlcmFsKFwiY29tbWFuZFwiKSxjb21tYW5kOksuc3RyaW5nKCl9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIHBlci1zdWJhZ2VudCBzdGF0dXMgbGluZSBzaG93biBpbiB0aGUgYWdlbnQgcGFuZWw7IHJlY2VpdmVzIHJvdyBjb250ZXh0IGFzIEpTT04gb24gc3RkaW5cIiksZW5hYmxlZFBsdWdpbnM6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLnVuaW9uKFtLLmFycmF5KEsuc3RyaW5nKCkpLEsuYm9vbGVhbigpLEsudW5kZWZpbmVkKCldKSkub3B0aW9uYWwoKS5kZXNjcmliZSgnRW5hYmxlZCBwbHVnaW5zIHVzaW5nIHBsdWdpbi1pZEBtYXJrZXRwbGFjZS1pZCBmb3JtYXQuIEV4YW1wbGU6IHsgXCJmb3JtYXR0ZXJAYW50aHJvcGljLXRvb2xzXCI6IHRydWUgfS4gQWxzbyBzdXBwb3J0cyBleHRlbmRlZCBmb3JtYXQgd2l0aCB2ZXJzaW9uIGNvbnN0cmFpbnRzLiBTZXR0aW5ncyBwcmVjZWRlbmNlIGlzIHVzZXIgPCBwcm9qZWN0IDwgbG9jYWwgPCBmbGFnIDwgcG9saWN5LCBzbyB0byBkaXNhYmxlIGEgcGx1Z2luIHRoYXQgcHJvamVjdCBzZXR0aW5ncyBlbmFibGUsIHNldCBpdCB0byBmYWxzZSBpbiAuY2xhdWRlL3NldHRpbmdzLmxvY2FsLmpzb24gXHUyMDE0IHNldHRpbmcgZmFsc2UgaW4gfi8uY2xhdWRlL3NldHRpbmdzLmpzb24gaXMgb3ZlcnJpZGRlbiBieSB0aGUgcHJvamVjdC4nKSxleHRyYUtub3duTWFya2V0cGxhY2VzOksucmVjb3JkKEsuc3RyaW5nKCksVyQkKCkpLmNoZWNrKChRKT0+e2ZvcihsZXRbSixZXW9mIE9iamVjdC5lbnRyaWVzKFEudmFsdWUpKWlmKFkuc291cmNlLnNvdXJjZT09PVwic2V0dGluZ3NcIiYmWS5zb3VyY2UubmFtZSE9PUopUS5pc3N1ZXMucHVzaCh7Y29kZTpcImN1c3RvbVwiLGlucHV0Olkuc291cmNlLm5hbWUscGF0aDpbSixcInNvdXJjZVwiLFwibmFtZVwiXSxtZXNzYWdlOmBTZXR0aW5ncy1zb3VyY2VkIG1hcmtldHBsYWNlIG5hbWUgbXVzdCBtYXRjaCBpdHMgZXh0cmFLbm93bk1hcmtldHBsYWNlcyBrZXkgKGdvdCBrZXkgXCIke0p9XCIgYnV0IHNvdXJjZS5uYW1lIFwiJHtZLnNvdXJjZS5uYW1lfVwiKWB9KX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZGRpdGlvbmFsIG1hcmtldHBsYWNlcyB0byBtYWtlIGF2YWlsYWJsZSBmb3IgdGhpcyByZXBvc2l0b3J5LiBUeXBpY2FsbHkgdXNlZCBpbiByZXBvc2l0b3J5IC5jbGF1ZGUvc2V0dGluZ3MuanNvbiB0byBlbnN1cmUgdGVhbSBtZW1iZXJzIGhhdmUgcmVxdWlyZWQgcGx1Z2luIHNvdXJjZXMuXCIpLHN0cmljdEtub3duTWFya2V0cGxhY2VzOksuYXJyYXkoUVgoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudGVycHJpc2Ugc3RyaWN0IGxpc3Qgb2YgYWxsb3dlZCBtYXJrZXRwbGFjZSBzb3VyY2VzLiBXaGVuIHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzLCBPTkxZIHRoZXNlIGV4YWN0IHNvdXJjZXMgY2FuIGJlIGFkZGVkIGFzIG1hcmtldHBsYWNlcy4gVGhlIGNoZWNrIGhhcHBlbnMgQkVGT1JFIGRvd25sb2FkaW5nLCBzbyBibG9ja2VkIHNvdXJjZXMgbmV2ZXIgdG91Y2ggdGhlIGZpbGVzeXN0ZW0uIFwiK1wiTm90ZTogdGhpcyBpcyBhIHBvbGljeSBnYXRlIG9ubHkgXHUyMDE0IGl0IGRvZXMgTk9UIHJlZ2lzdGVyIG1hcmtldHBsYWNlcy4gXCIrXCJUbyBwcmUtcmVnaXN0ZXIgYWxsb3dlZCBtYXJrZXRwbGFjZXMgZm9yIHVzZXJzLCBhbHNvIHNldCBleHRyYUtub3duTWFya2V0cGxhY2VzLlwiKSxibG9ja2VkTWFya2V0cGxhY2VzOksuYXJyYXkoUVgoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkVudGVycHJpc2UgYmxvY2tsaXN0IG9mIG1hcmtldHBsYWNlIHNvdXJjZXMuIFdoZW4gc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MsIHRoZXNlIGV4YWN0IHNvdXJjZXMgYXJlIGJsb2NrZWQgZnJvbSBiZWluZyBhZGRlZCBhcyBtYXJrZXRwbGFjZXMuIFRoZSBjaGVjayBoYXBwZW5zIEJFRk9SRSBkb3dubG9hZGluZywgc28gYmxvY2tlZCBzb3VyY2VzIG5ldmVyIHRvdWNoIHRoZSBmaWxlc3lzdGVtLlwiKSxmb3JjZUxvZ2luTWV0aG9kOksuZW51bShbXCJjbGF1ZGVhaVwiLFwiY29uc29sZVwiXSkub3B0aW9uYWwoKS5kZXNjcmliZSgnRm9yY2UgYSBzcGVjaWZpYyBsb2dpbiBtZXRob2Q6IFwiY2xhdWRlYWlcIiBmb3IgQ2xhdWRlIFByby9NYXgsIFwiY29uc29sZVwiIGZvciBDb25zb2xlIGJpbGxpbmcnKSxwYXJlbnRTZXR0aW5nc0JlaGF2aW9yOksuZW51bShbXCJmaXJzdC13aW5zXCIsXCJtZXJnZVwiXSkub3B0aW9uYWwoKS5kZXNjcmliZSgnQ29udHJvbHMgd2hldGhlciB0aGUgU0RLIHBhcmVudCB0aWVyIChPcHRpb25zLm1hbmFnZWRTZXR0aW5ncyAvIC0tbWFuYWdlZC1zZXR0aW5ncykgbGF5ZXJzIHVuZGVyIHRoaXMgYWRtaW4gdGllci4gXCJmaXJzdC13aW5zXCIgJytcIihkZWZhdWx0KTogcGFyZW50IGlzIGRyb3BwZWQgXHUyMDE0IGFkbWluIHRpZXJzIGFyZSB0aGUgb25seSBwb2xpY3kgXCIrYHNvdXJjZS4gXCJtZXJnZVwiOiBwYXJlbnQncyByZXN0cmljdGl2ZS1vbmx5LWZpbHRlcmVkIHNldHRpbmdzIHVuaW9uIHVuZGVyIHRoZSBhZG1pbiB3aW5uZXIuIEhhcyBubyBlZmZlY3Qgd2hlbiBubyBhZG1pbiB0aWVyIGV4aXN0cyAocGFyZW50IGFwcGxpZXMgYXMgdGhlIHNvbGUgcG9saWN5IHRpZXIsIHN0aWxsIGZpbHRlcmVkIHJlc3RyaWN0aXZlLW9ubHkpLmApLGZvcmNlTG9naW5PcmdVVUlEOksudW5pb24oW0suc3RyaW5nKCksSy5hcnJheShLLnN0cmluZygpKV0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJPcmdhbml6YXRpb24gVVVJRCB0byByZXF1aXJlIGZvciBPQXV0aCBsb2dpbi4gQWNjZXB0cyBhIHNpbmdsZSBVVUlEIHN0cmluZyBvciBhbiBhcnJheSBvZiBVVUlEcyAoYW55IG9uZSBpcyBwZXJtaXR0ZWQpLiBXaGVuIHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzLCBsb2dpbiBmYWlscyBpZiB0aGUgYXV0aGVudGljYXRlZCBhY2NvdW50IGRvZXMgbm90IGJlbG9uZyB0byBhIGxpc3RlZCBvcmdhbml6YXRpb24uXCIpLGZvcmNlUmVtb3RlU2V0dGluZ3NSZWZyZXNoOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHNldCBpbiBtYW5hZ2VkIHNldHRpbmdzLCB0aGUgQ0xJIGJsb2NrcyBzdGFydHVwIHVudGlsIHJlbW90ZSBtYW5hZ2VkIHNldHRpbmdzIGFyZSBmcmVzaGx5IGZldGNoZWQsIGFuZCBleGl0cyBpZiB0aGUgZmV0Y2ggZmFpbHNcIiksb3RlbEhlYWRlcnNIZWxwZXI6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGF0aCB0byBhIHNjcmlwdCB0aGF0IG91dHB1dHMgT3BlblRlbGVtZXRyeSBoZWFkZXJzXCIpLG91dHB1dFN0eWxlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkNvbnRyb2xzIHRoZSBvdXRwdXQgc3R5bGUgZm9yIGFzc2lzdGFudCByZXNwb25zZXNcIiksdmlld01vZGU6Sy5lbnVtKFtcImRlZmF1bHRcIixcInZlcmJvc2VcIixcImZvY3VzXCJdKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJEZWZhdWx0IHRyYW5zY3JpcHQgdmlldyBtb2RlIG9uIHN0YXJ0dXBcIiksbGFuZ3VhZ2U6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdQcmVmZXJyZWQgbGFuZ3VhZ2UgZm9yIENsYXVkZSByZXNwb25zZXMgYW5kIHZvaWNlIGRpY3RhdGlvbiAoZS5nLiwgXCJqYXBhbmVzZVwiLCBcInNwYW5pc2hcIiknKSxza2lwV2ViRmV0Y2hQcmVmbGlnaHQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNraXAgdGhlIFdlYkZldGNoIGJsb2NrbGlzdCBjaGVjayBmb3IgZW50ZXJwcmlzZSBlbnZpcm9ubWVudHMgd2l0aCByZXN0cmljdGl2ZSBzZWN1cml0eSBwb2xpY2llc1wiKSxzYW5kYm94OkFFKCkub3B0aW9uYWwoKSxmZWVkYmFja1N1cnZleVJhdGU6Sy5udW1iZXIoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQcm9iYWJpbGl0eSAoMFx1MjAxMzEpIHRoYXQgdGhlIHNlc3Npb24gcXVhbGl0eSBzdXJ2ZXkgYXBwZWFycyB3aGVuIGVsaWdpYmxlLiAwLjA1IGlzIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludC5cIiksc3Bpbm5lclRpcHNFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRvIHNob3cgdGlwcyBpbiB0aGUgc3Bpbm5lclwiKSxzcGlubmVyVmVyYnM6Sy5vYmplY3Qoe21vZGU6Sy5lbnVtKFtcImFwcGVuZFwiLFwicmVwbGFjZVwiXSksdmVyYnM6Sy5hcnJheShLLnN0cmluZygpKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0N1c3RvbWl6ZSBzcGlubmVyIHZlcmJzLiBtb2RlOiBcImFwcGVuZFwiIGFkZHMgdmVyYnMgdG8gZGVmYXVsdHMsIFwicmVwbGFjZVwiIHVzZXMgb25seSB5b3VyIHZlcmJzLicpLHNwaW5uZXJUaXBzT3ZlcnJpZGU6Sy5vYmplY3Qoe2V4Y2x1ZGVEZWZhdWx0OksuYm9vbGVhbigpLm9wdGlvbmFsKCksdGlwczpLLmFycmF5KEsuc3RyaW5nKCkpfSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk92ZXJyaWRlIHNwaW5uZXIgdGlwcy4gdGlwczogYXJyYXkgb2YgdGlwIHN0cmluZ3MuIGV4Y2x1ZGVEZWZhdWx0OiBpZiB0cnVlLCBvbmx5IHNob3cgY3VzdG9tIHRpcHMgKGRlZmF1bHQ6IGZhbHNlKS5cIiksc3ludGF4SGlnaGxpZ2h0aW5nRGlzYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZXRoZXIgdG8gZGlzYWJsZSBzeW50YXggaGlnaGxpZ2h0aW5nIGluIGRpZmZzXCIpLHRlcm1pbmFsVGl0bGVGcm9tUmVuYW1lOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGV0aGVyIC9yZW5hbWUgdXBkYXRlcyB0aGUgdGVybWluYWwgdGFiIHRpdGxlIChkZWZhdWx0cyB0byB0cnVlKS4gU2V0IHRvIGZhbHNlIHRvIGtlZXAgYXV0by1nZW5lcmF0ZWQgdG9waWMgdGl0bGVzLlwiKSxhbHdheXNUaGlua2luZ0VuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gZmFsc2UsIHRoaW5raW5nIGlzIGRpc2FibGVkLiBXaGVuIGFic2VudCBvciB0cnVlLCB0aGlua2luZyBpcyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgZm9yIHN1cHBvcnRlZCBtb2RlbHMuXCIpLGVmZm9ydExldmVsOksuZW51bShbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl0pLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIlBlcnNpc3RlZCBlZmZvcnQgbGV2ZWwgZm9yIHN1cHBvcnRlZCBtb2RlbHMuXCIpLGF1dG9Db21wYWN0V2luZG93OksubnVtYmVyKCkuaW50KCkubWluKDFlNSkubWF4KDFlNikub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiQXV0by1jb21wYWN0IHdpbmRvdyBzaXplXCIpLGFkdmlzb3JNb2RlbDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZHZpc29yIG1vZGVsIGZvciB0aGUgc2VydmVyLXNpZGUgYWR2aXNvciB0b29sLlwiKSxmYXN0TW9kZTpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hlbiB0cnVlLCBmYXN0IG1vZGUgaXMgZW5hYmxlZC4gV2hlbiBhYnNlbnQgb3IgZmFsc2UsIGZhc3QgbW9kZSBpcyBvZmYuXCIpLGZhc3RNb2RlUGVyU2Vzc2lvbk9wdEluOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUsIGZhc3QgbW9kZSBkb2VzIG5vdCBwZXJzaXN0IGFjcm9zcyBzZXNzaW9ucy4gRWFjaCBzZXNzaW9uIHN0YXJ0cyB3aXRoIGZhc3QgbW9kZSBvZmYuXCIpLHByb21wdFN1Z2dlc3Rpb25FbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIGZhbHNlLCBwcm9tcHQgc3VnZ2VzdGlvbnMgYXJlIGRpc2FibGVkLiBXaGVuIGFic2VudCBvciB0cnVlLCBwcm9tcHQgc3VnZ2VzdGlvbnMgYXJlIGVuYWJsZWQuXCIpLGF3YXlTdW1tYXJ5RW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQGludGVybmFsIFdoZW4gZmFsc2UsIHRoZSBzZXNzaW9uIHJlY2FwIChzaG93biB3aGVuIHlvdSByZXR1cm4gYWZ0ZXIgYmVpbmcgYXdheSBmb3IgNSsgbWludXRlcykgaXMgZGlzYWJsZWQuIFdoZW4gYWJzZW50IG9yIHRydWUsIHJlY2FwIGlzIGVuYWJsZWQuIEhpZGRlbiBmcm9tIHB1YmxpYyBTREsgdHlwZXMgdW50aWwgZXh0ZXJuYWwgbGF1bmNoLlwiKSxzaG93Q2xlYXJDb250ZXh0T25QbGFuQWNjZXB0OksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1doZW4gdHJ1ZSwgdGhlIHBsYW4tYXBwcm92YWwgZGlhbG9nIG9mZmVycyBhIFwiY2xlYXIgY29udGV4dFwiIG9wdGlvbi4gRGVmYXVsdHMgdG8gZmFsc2UuJyksYWdlbnQ6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTmFtZSBvZiBhbiBhZ2VudCAoYnVpbHQtaW4gb3IgY3VzdG9tKSB0byB1c2UgZm9yIHRoZSBtYWluIHRocmVhZC4gQXBwbGllcyB0aGUgYWdlbnQncyBzeXN0ZW0gcHJvbXB0LCB0b29sIHJlc3RyaWN0aW9ucywgYW5kIG1vZGVsLlwiKSxjb21wYW55QW5ub3VuY2VtZW50czpLLmFycmF5KEsuc3RyaW5nKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21wYW55IGFubm91bmNlbWVudHMgdG8gZGlzcGxheSBhdCBzdGFydHVwIChvbmUgd2lsbCBiZSByYW5kb21seSBzZWxlY3RlZCBpZiBtdWx0aXBsZSBhcmUgcHJvdmlkZWQpXCIpLHBsdWdpbkNvbmZpZ3M6Sy5yZWNvcmQoSy5zdHJpbmcoKSxLLm9iamVjdCh7bWNwU2VydmVyczpLLnJlY29yZChLLnN0cmluZygpLEsucmVjb3JkKEsuc3RyaW5nKCksSy51bmlvbihbSy5zdHJpbmcoKSxLLm51bWJlcigpLEsuYm9vbGVhbigpLEsuYXJyYXkoSy5zdHJpbmcoKSldKSkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVc2VyIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciBNQ1Agc2VydmVycyBrZXllZCBieSBzZXJ2ZXIgbmFtZVwiKSxvcHRpb25zOksucmVjb3JkKEsuc3RyaW5nKCksSy51bmlvbihbSy5zdHJpbmcoKSxLLm51bWJlcigpLEsuYm9vbGVhbigpLEsuYXJyYXkoSy5zdHJpbmcoKSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk5vbi1zZW5zaXRpdmUgb3B0aW9uIHZhbHVlcyBmcm9tIHBsdWdpbiBtYW5pZmVzdCB1c2VyQ29uZmlnLCBrZXllZCBieSBvcHRpb24gbmFtZS4gU2Vuc2l0aXZlIHZhbHVlcyBnbyB0byBzZWN1cmUgc3RvcmFnZSBpbnN0ZWFkLlwiKX0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGVyLXBsdWdpbiBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBNQ1Agc2VydmVyIHVzZXIgY29uZmlncywga2V5ZWQgYnkgcGx1Z2luIElEIChwbHVnaW5AbWFya2V0cGxhY2UgZm9ybWF0KVwiKSxyZW1vdGU6Sy5vYmplY3Qoe2RlZmF1bHRFbnZpcm9ubWVudElkOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlZmF1bHQgZW52aXJvbm1lbnQgSUQgdG8gdXNlIGZvciByZW1vdGUgc2Vzc2lvbnNcIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVtb3RlIHNlc3Npb24gY29uZmlndXJhdGlvblwiKSxhdXRvVXBkYXRlc0NoYW5uZWw6Sy5lbnVtKFtcImxhdGVzdFwiLFwic3RhYmxlXCIsXCJyY1wiXSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlbGVhc2UgY2hhbm5lbCBmb3IgYXV0by11cGRhdGVzIChsYXRlc3Qgb3Igc3RhYmxlKVwiKSxtaW5pbXVtVmVyc2lvbjpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNaW5pbXVtIHZlcnNpb24gdG8gc3RheSBvbiAtIHByZXZlbnRzIGRvd25ncmFkZXMgd2hlbiBzd2l0Y2hpbmcgdG8gc3RhYmxlIGNoYW5uZWxcIikscGxhbnNEaXJlY3Rvcnk6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIGRpcmVjdG9yeSBmb3IgcGxhbiBmaWxlcywgcmVsYXRpdmUgdG8gcHJvamVjdCByb290LiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byB+Ly5jbGF1ZGUvcGxhbnMvXCIpLHR1aTpLLmVudW0oW1wiZGVmYXVsdFwiLFwiZnVsbHNjcmVlblwiXSkub3B0aW9uYWwoKS5kZXNjcmliZSgnVGVybWluYWwgVUkgcmVuZGVyZXIuIFwiZnVsbHNjcmVlblwiIHVzZXMgdGhlIGZsaWNrZXItZnJlZSBhbHQtc2NyZWVuIHJlbmRlcmVyIHdpdGggdmlydHVhbGl6ZWQgc2Nyb2xsYmFjayAoZXF1aXZhbGVudCB0byBDTEFVREVfQ09ERV9OT19GTElDS0VSPTEpLiBcImRlZmF1bHRcIiB1c2VzIHRoZSBjbGFzc2ljIG1haW4tc2NyZWVuIHJlbmRlcmVyLicpLC4uLiExLHZvaWNlOksub2JqZWN0KHtlbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCksbW9kZTpLLmVudW0oW1wiaG9sZFwiLFwidGFwXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiJ2hvbGQnIChkZWZhdWx0KTogaG9sZCB0byB0YWxrLiAndGFwJzogdGFwIHRvIHN0YXJ0LCB0YXAgdG8gc3RvcCtzdWJtaXQuXCIpLGF1dG9TdWJtaXQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlN1Ym1pdCB0aGUgcHJvbXB0IHdoZW4gaG9sZC10by10YWxrIGlzIHJlbGVhc2VkIChob2xkIG1vZGUgb25seSlcIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVm9pY2UgbW9kZSBzZXR0aW5ncyAoaG9sZC10by10YWxrIC8gdGFwLXRvLXRvZ2dsZSBkaWN0YXRpb24pXCIpLGNoYW5uZWxzRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWFuYWdlZC1vcmcgb3B0LWluIGZvciBjaGFubmVsIG5vdGlmaWNhdGlvbnMgKE1DUCBzZXJ2ZXJzIHdpdGggdGhlIGNsYXVkZS9jaGFubmVsIGNhcGFiaWxpdHkgcHVzaGluZyBpbmJvdW5kIG1lc3NhZ2VzKS4gY2xhdWRlLmFpIFRlYW1zL0VudGVycHJpc2U6IGRlZmF1bHQgb2ZmLiBDb25zb2xlOiBkZWZhdWx0IG9uIHVubGVzcyBtYW5hZ2VkIHNldHRpbmdzIGV4aXN0LiBTZXQgdHJ1ZSB0byBhbGxvdzsgdXNlcnMgdGhlbiBzZWxlY3Qgc2VydmVycyB2aWEgLS1jaGFubmVscy5cIiksYWxsb3dlZENoYW5uZWxQbHVnaW5zOksuYXJyYXkoSy5vYmplY3Qoe21hcmtldHBsYWNlOksuc3RyaW5nKCkscGx1Z2luOksuc3RyaW5nKCl9KSkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1hbmFnZWQtb3JnIGFsbG93bGlzdCBvZiBjaGFubmVsIHBsdWdpbnMuIFdoZW4gc2V0LCBcIitcInJlcGxhY2VzIHRoZSBkZWZhdWx0IEFudGhyb3BpYyBhbGxvd2xpc3QgXHUyMDE0IGFkbWlucyBkZWNpZGUgd2hpY2ggXCIrXCJwbHVnaW5zIG1heSBwdXNoIGluYm91bmQgbWVzc2FnZXMuIFVuZGVmaW5lZCBmYWxscyBiYWNrIHRvIHRoZSBkZWZhdWx0LiBSZXF1aXJlcyBjaGFubmVsc0VuYWJsZWQ6IHRydWUuXCIpLHByZWZlcnNSZWR1Y2VkTW90aW9uOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZWR1Y2Ugb3IgZGlzYWJsZSBhbmltYXRpb25zIGZvciBhY2Nlc3NpYmlsaXR5IChzcGlubmVyIHNoaW1tZXIsIGZsYXNoIGVmZmVjdHMsIGV0Yy4pXCIpLGRvbmVNZWFuc01lcmdlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQGludGVybmFsIFdoZW4gdHJ1ZSwgQ2xhdWRlIGtlZXBzIHdvcmtpbmcgdW50aWwgdGhlIFBSIGlzIHJlYWR5IGZvciB5b3UgdG8gbWVyZ2UsIGEgY3Jvbi9Nb25pdG9yIGlzIGFybWVkIHRvIHJlc3VtZSBsYXRlciwgb3IgaXQgaGFuZHMgeW91IGEgc2VsZi1jb250YWluZWQgbmV4dCBzdGVwLlwiKSxhdXRvTWVtb3J5RW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW5hYmxlIGF1dG8tbWVtb3J5IGZvciB0aGlzIHByb2plY3QuIFdoZW4gZmFsc2UsIENsYXVkZSB3aWxsIG5vdCByZWFkIGZyb20gb3Igd3JpdGUgdG8gdGhlIGF1dG8tbWVtb3J5IGRpcmVjdG9yeS5cIiksYXV0b01lbW9yeURpcmVjdG9yeTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXN0b20gZGlyZWN0b3J5IHBhdGggZm9yIGF1dG8tbWVtb3J5IHN0b3JhZ2UuIFN1cHBvcnRzIH4vIHByZWZpeCBmb3IgaG9tZSBkaXJlY3RvcnkgZXhwYW5zaW9uLiBJZ25vcmVkIGlmIHNldCBpbiBwcm9qZWN0U2V0dGluZ3MgKGNoZWNrZWQtaW4gLmNsYXVkZS9zZXR0aW5ncy5qc29uKSBmb3Igc2VjdXJpdHkuIFdoZW4gdW5zZXQsIGRlZmF1bHRzIHRvIH4vLmNsYXVkZS9wcm9qZWN0cy88c2FuaXRpemVkLWN3ZD4vbWVtb3J5Ly5cIiksYXV0b0RyZWFtRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW5hYmxlIGJhY2tncm91bmQgbWVtb3J5IGNvbnNvbGlkYXRpb24gKGF1dG8tZHJlYW0pLiBXaGVuIHNldCwgb3ZlcnJpZGVzIHRoZSBzZXJ2ZXItc2lkZSBkZWZhdWx0LlwiKSxzaG93VGhpbmtpbmdTdW1tYXJpZXM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNob3cgdGhpbmtpbmcgc3VtbWFyaWVzIGluIHRoZSB0cmFuc2NyaXB0IHZpZXcgKGN0cmwrbykuIERlZmF1bHQ6IGZhbHNlLlwiKSxza2lwRGFuZ2Vyb3VzTW9kZVBlcm1pc3Npb25Qcm9tcHQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZXRoZXIgdGhlIHVzZXIgaGFzIGFjY2VwdGVkIHRoZSBieXBhc3MgcGVybWlzc2lvbnMgbW9kZSBkaWFsb2dcIiksZGlzYWJsZUF1dG9Nb2RlOksuZW51bShbXCJkaXNhYmxlXCJdKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzYWJsZSBhdXRvIG1vZGVcIiksc3NoQ29uZmlnczpLLmFycmF5KEsub2JqZWN0KHtpZDpLLnN0cmluZygpLmRlc2NyaWJlKFwiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgU1NIIGNvbmZpZy4gVXNlZCB0byBtYXRjaCBjb25maWdzIGFjcm9zcyBzZXR0aW5ncyBzb3VyY2VzLlwiKSxuYW1lOksuc3RyaW5nKCkuZGVzY3JpYmUoXCJEaXNwbGF5IG5hbWUgZm9yIHRoZSBTU0ggY29ubmVjdGlvblwiKSxzc2hIb3N0Oksuc3RyaW5nKCkuZGVzY3JpYmUoJ1NTSCBob3N0IGluIGZvcm1hdCBcInVzZXJAaG9zdG5hbWVcIiBvciBcImhvc3RuYW1lXCIsIG9yIGEgaG9zdCBhbGlhcyBmcm9tIH4vLnNzaC9jb25maWcnKSxzc2hQb3J0OksubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNTSCBwb3J0IChkZWZhdWx0OiAyMilcIiksc3NoSWRlbnRpdHlGaWxlOksuc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhdGggdG8gU1NIIGlkZW50aXR5IGZpbGUgKHByaXZhdGUga2V5KVwiKSxzdGFydERpcmVjdG9yeTpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEZWZhdWx0IHdvcmtpbmcgZGlyZWN0b3J5IG9uIHRoZSByZW1vdGUgaG9zdC4gU3VwcG9ydHMgdGlsZGUgZXhwYW5zaW9uIChlLmcuIH4vcHJvamVjdHMpLiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byB0aGUgcmVtb3RlIHVzZXIgaG9tZSBkaXJlY3RvcnkuIENhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBbZGlyXSBwb3NpdGlvbmFsIGFyZ3VtZW50IGluIGBjbGF1ZGUgc3NoIDxjb25maWc+IFtkaXJdYC5cIil9KSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNTSCBjb25uZWN0aW9uIGNvbmZpZ3VyYXRpb25zIGZvciByZW1vdGUgZW52aXJvbm1lbnRzLiBUeXBpY2FsbHkgc2V0IGluIG1hbmFnZWQgc2V0dGluZ3MgYnkgZW50ZXJwcmlzZSBhZG1pbmlzdHJhdG9ycyB0byBwcmUtY29uZmlndXJlIFNTSCBjb25uZWN0aW9ucyBmb3IgdGVhbSBtZW1iZXJzLlwiKSxjbGF1ZGVNZDpLLnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDTEFVREUubWQtc3R5bGUgaW5zdHJ1Y3Rpb25zIGluamVjdGVkIGFzIG9yZ2FuaXphdGlvbi1tYW5hZ2VkIG1lbW9yeS4gT25seSBob25vcmVkIGZyb20gbWFuYWdlZC9wb2xpY3kgc2V0dGluZ3MuXCIpLGNsYXVkZU1kRXhjbHVkZXM6Sy5hcnJheShLLnN0cmluZygpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdHbG9iIHBhdHRlcm5zIG9yIGFic29sdXRlIHBhdGhzIG9mIENMQVVERS5tZCBmaWxlcyB0byBleGNsdWRlIGZyb20gbG9hZGluZy4gUGF0dGVybnMgYXJlIG1hdGNoZWQgYWdhaW5zdCBhYnNvbHV0ZSBmaWxlIHBhdGhzIHVzaW5nIHBpY29tYXRjaC4gT25seSBhcHBsaWVzIHRvIFVzZXIsIFByb2plY3QsIGFuZCBMb2NhbCBtZW1vcnkgdHlwZXMgKE1hbmFnZWQvcG9saWN5IGZpbGVzIGNhbm5vdCBiZSBleGNsdWRlZCkuIEV4YW1wbGVzOiBcIi9ob21lL3VzZXIvbW9ub3JlcG8vQ0xBVURFLm1kXCIsIFwiKiovY29kZS9DTEFVREUubWRcIiwgXCIqKi9zb21lLWRpci8uY2xhdWRlL3J1bGVzLyoqXCInKSxwbHVnaW5UcnVzdE1lc3NhZ2U6Sy5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdDdXN0b20gbWVzc2FnZSB0byBhcHBlbmQgdG8gdGhlIHBsdWdpbiB0cnVzdCB3YXJuaW5nIHNob3duIGJlZm9yZSBpbnN0YWxsYXRpb24uIE9ubHkgcmVhZCBmcm9tIHBvbGljeSBzZXR0aW5ncyAobWFuYWdlZC1zZXR0aW5ncy5qc29uIC8gTURNKS4gVXNlZnVsIGZvciBlbnRlcnByaXNlIGFkbWluaXN0cmF0b3JzIHRvIGFkZCBvcmdhbml6YXRpb24tc3BlY2lmaWMgY29udGV4dCAoZS5nLiwgXCJBbGwgcGx1Z2lucyBmcm9tIG91ciBpbnRlcm5hbCBtYXJrZXRwbGFjZSBhcmUgdmV0dGVkIGFuZCBhcHByb3ZlZC5cIikuJyksdGhlbWU6Sy51bmlvbihbSy5lbnVtKEVFKSxLLnN0cmluZygpLnN0YXJ0c1dpdGgoXCJjdXN0b206XCIpLnRyYW5zZm9ybSgoUSk9PlEpXSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiQ29sb3IgdGhlbWUgZm9yIHRoZSBVSVwiKSxlZGl0b3JNb2RlOksuZW51bShSRSkub3B0aW9uYWwoKS5jYXRjaCh2b2lkIDApLmRlc2NyaWJlKFwiS2V5IGJpbmRpbmcgbW9kZSBmb3IgdGhlIHByb21wdCBpbnB1dFwiKSx2ZXJib3NlOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTaG93IGZ1bGwgdG9vbCBvdXRwdXQgaW5zdGVhZCBvZiB0cnVuY2F0ZWQgc3VtbWFyaWVzXCIpLHByZWZlcnJlZE5vdGlmQ2hhbm5lbDpLLmVudW0oSUUpLm9wdGlvbmFsKCkuY2F0Y2godm9pZCAwKS5kZXNjcmliZShcIlByZWZlcnJlZCBPUyBub3RpZmljYXRpb24gY2hhbm5lbFwiKSxhdXRvQ29tcGFjdEVuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkF1dG9tYXRpY2FsbHkgY29tcGFjdCBjb252ZXJzYXRpb24gd2hlbiBjb250ZXh0IGZpbGxzXCIpLGF1dG9TY3JvbGxFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBdXRvLXNjcm9sbCB0aGUgY29udmVyc2F0aW9uIHZpZXcgdG8gYm90dG9tIChmdWxsc2NyZWVuIG1vZGUgb25seSlcIiksZmlsZUNoZWNrcG9pbnRpbmdFbmFibGVkOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTbmFwc2hvdCBmaWxlcyBiZWZvcmUgZWRpdHMgc28gL3Jld2luZCBjYW4gcmVzdG9yZSB0aGVtXCIpLHNob3dUdXJuRHVyYXRpb246Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnU2hvdyBcIkNvb2tlZCBmb3IgTm0gTnNcIiBhZnRlciBlYWNoIGFzc2lzdGFudCB0dXJuJyksc2hvd01lc3NhZ2VUaW1lc3RhbXBzOksuYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTdGFtcCBlYWNoIGFzc2lzdGFudCBtZXNzYWdlIHdpdGggaXRzIGFycml2YWwgdGltZVwiKSx0ZXJtaW5hbFByb2dyZXNzQmFyRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW1pdCBPU0MgOTs0IHByb2dyZXNzIHNlcXVlbmNlcyBkdXJpbmcgbG9uZyBvcGVyYXRpb25zXCIpLHRvZG9GZWF0dXJlRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRW5hYmxlIHRoZSB0b2RvIC8gdGFzayB0cmFja2luZyBwYW5lbFwiKSx0ZWFtbWF0ZU1vZGU6Sy5lbnVtKFBFKS5vcHRpb25hbCgpLmNhdGNoKHZvaWQgMCkuZGVzY3JpYmUoXCJIb3cgc3Bhd25lZCB0ZWFtbWF0ZXMgZXhlY3V0ZSAodG11eCwgaW4tcHJvY2VzcywgYXV0bylcIikscmVtb3RlQ29udHJvbEF0U3RhcnR1cDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU3RhcnQgUmVtb3RlIENvbnRyb2wgYnJpZGdlIGF1dG9tYXRpY2FsbHkgZWFjaCBzZXNzaW9uXCIpLGlzb2xhdGVQZWVyTWFjaGluZXM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlcXVpcmUgZXhwbGljaXQgYXBwcm92YWwgYmVmb3JlIFNlbmRNZXNzYWdlIGNhbiByZWFjaCBhIHBlZXIgc2Vzc2lvbiBvbiBhbm90aGVyIG1hY2hpbmUgdmlhIFJlbW90ZSBDb250cm9sXCIpLGRhZW1vbkNvbGRTdGFydDpLLmVudW0oW1widHJhbnNpZW50XCIsXCJhc2tcIl0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIG5vIGJhY2tncm91bmQgc2VydmljZSBpcyBydW5uaW5nOiAndHJhbnNpZW50JyBzcGF3bnMgb25lIGZvciB0aGlzIGxvZ2luIHNlc3Npb247ICdhc2snIG9mZmVycyB0byBpbnN0YWxsIGl0IHBlcnNpc3RlbnRseVwiKSxhdXRvVXBsb2FkU2Vzc2lvbnM6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1pcnJvciBsb2NhbCBzZXNzaW9ucyB0byBjbGF1ZGUuYWkgYXMgdmlldy1vbmx5IChubyByZW1vdGUgY29udHJvbClcIiksaW5wdXROZWVkZWROb3RpZkVuYWJsZWQ6Sy5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlB1c2ggdG8gbW9iaWxlIHdoZW4gYSBwZXJtaXNzaW9uIHByb21wdCBvciBxdWVzdGlvbiBpcyB3YWl0aW5nXCIpLGFnZW50UHVzaE5vdGlmRW5hYmxlZDpLLmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWxsb3cgQ2xhdWRlIHRvIHB1c2ggcHJvYWN0aXZlIG1vYmlsZSBub3RpZmljYXRpb25zXCIpLC4uLmlFKCQpfSkucGFzc3Rocm91Z2goKX12YXIgdjQ9XygoKT0+V2IoZnooKSkpO3ZhciBLJCQ9W3ttYXRjaGVzOigkKT0+JC5wYXRoPT09XCJwZXJtaXNzaW9ucy5kZWZhdWx0TW9kZVwiJiYkLmNvZGU9PT1cImludmFsaWRfdmFsdWVcIix0aXA6e3N1Z2dlc3Rpb246J1ZhbGlkIG1vZGVzOiBcImFjY2VwdEVkaXRzXCIgKGFzayBiZWZvcmUgZmlsZSBjaGFuZ2VzKSwgXCJwbGFuXCIgKGFuYWx5c2lzIG9ubHkpLCBcImJ5cGFzc1Blcm1pc3Npb25zXCIgKGF1dG8tYWNjZXB0IGFsbCksIG9yIFwiZGVmYXVsdFwiIChzdGFuZGFyZCBiZWhhdmlvciknLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2lhbSNwZXJtaXNzaW9uLW1vZGVzXCJ9fSx7bWF0Y2hlczooJCk9PiQucGF0aD09PVwiYXBpS2V5SGVscGVyXCImJiQuY29kZT09PVwiaW52YWxpZF90eXBlXCIsdGlwOntzdWdnZXN0aW9uOidQcm92aWRlIGEgc2hlbGwgY29tbWFuZCB0aGF0IG91dHB1dHMgeW91ciBBUEkga2V5IHRvIHN0ZG91dC4gVGhlIHNjcmlwdCBzaG91bGQgb3V0cHV0IG9ubHkgdGhlIEFQSSBrZXkuIEV4YW1wbGU6IFwiL2Jpbi9nZW5lcmF0ZV90ZW1wX2FwaV9rZXkuc2hcIid9fSx7bWF0Y2hlczooJCk9PiQucGF0aD09PVwiY2xlYW51cFBlcmlvZERheXNcIiYmJC5jb2RlPT09XCJ0b29fc21hbGxcIix0aXA6e3N1Z2dlc3Rpb246J2NsZWFudXBQZXJpb2REYXlzIG11c3QgYmUgYXQgbGVhc3QgMS4gVG8ga2VlcCB0cmFuc2NyaXB0cyBmb3IgYSBsb25nIHRpbWUsIHNldCBhIGxhcmdlIG51bWJlciAoZS5nLiAzNjUwIGZvciB+MTAgeWVhcnMpLiBUbyBkaXNhYmxlIHRyYW5zY3JpcHQgd3JpdGVzIGVudGlyZWx5LCByZW1vdmUgdGhpcyBzZXR0aW5nIGFuZCB1c2UgdGhlIC0tbm8tc2Vzc2lvbi1wZXJzaXN0ZW5jZSBDTEkgZmxhZyBvciB0aGUgU0RLIHBlcnNpc3RTZXNzaW9uOmZhbHNlIG9wdGlvbiBpbnN0ZWFkLiAoMCBpcyByZWplY3RlZCBiZWNhdXNlIGl0IHByZXZpb3VzbHkgc2lsZW50bHkgZGlzYWJsZWQgYWxsIHRyYW5zY3JpcHQgd3JpdGVzLCB3aGljaCB1c2VycyBzZXR0aW5nIGl0IHRvIG1lYW4gXCJuZXZlciBjbGVhbiB1cFwiIGRpZCBub3QgZXhwZWN0LiknfX0se21hdGNoZXM6KCQpPT4kLnBhdGguc3RhcnRzV2l0aChcImVudi5cIikmJiQuY29kZT09PVwiaW52YWxpZF90eXBlXCIsdGlwOntzdWdnZXN0aW9uOidFbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzdHJpbmdzLiBXcmFwIG51bWJlcnMgYW5kIGJvb2xlYW5zIGluIHF1b3Rlcy4gRXhhbXBsZTogXCJERUJVR1wiOiBcInRydWVcIiwgXCJQT1JUXCI6IFwiMzAwMFwiJyxkb2NMaW5rOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9zZXR0aW5ncyNlbnZpcm9ubWVudC12YXJpYWJsZXNcIn19LHttYXRjaGVzOigkKT0+KCQucGF0aD09PVwicGVybWlzc2lvbnMuYWxsb3dcInx8JC5wYXRoPT09XCJwZXJtaXNzaW9ucy5kZW55XCIpJiYkLmNvZGU9PT1cImludmFsaWRfdHlwZVwiJiYkLmV4cGVjdGVkPT09XCJhcnJheVwiLHRpcDp7c3VnZ2VzdGlvbjonUGVybWlzc2lvbiBydWxlcyBtdXN0IGJlIGluIGFuIGFycmF5LiBGb3JtYXQ6IFtcIlRvb2woc3BlY2lmaWVyKVwiXS4gRXhhbXBsZXM6IFtcIkJhc2gobnBtIHJ1biBidWlsZClcIiwgXCJFZGl0KGRvY3MvKiopXCIsIFwiUmVhZCh+Ly56c2hyYylcIl0uIFVzZSAqIGZvciB3aWxkY2FyZHMuJ319LHttYXRjaGVzOigkKT0+JC5wYXRoLnN0YXJ0c1dpdGgoXCJob29rcy5cIikmJiQuY29kZT09PVwiaW52YWxpZF9rZXlcIix0aXA6e3N1Z2dlc3Rpb246XCJOb3QgYSByZWNvZ25pemVkIGhvb2sgZXZlbnQuIENvbW1vbiBldmVudHM6IFByZVRvb2xVc2UsIFBvc3RUb29sVXNlLCBVc2VyUHJvbXB0U3VibWl0LCBTZXNzaW9uU3RhcnQsIFNlc3Npb25FbmQsIFN0b3AuIENoZWNrIHNwZWxsaW5nIGFuZCBjYXBpdGFsaXphdGlvbi5cIixkb2NMaW5rOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9ob29rc1wifX0se21hdGNoZXM6KCQpPT4kLnBhdGguaW5jbHVkZXMoXCJob29rc1wiKSYmJC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIix0aXA6e3N1Z2dlc3Rpb246J0hvb2tzIHVzZSBhIG1hdGNoZXIgKyBob29rcyBhcnJheS4gVGhlIG1hdGNoZXIgaXMgYSBzdHJpbmc6IGEgdG9vbCBuYW1lIChcIkJhc2hcIiksIHBpcGUtc2VwYXJhdGVkIGxpc3QgKFwiRWRpdHxXcml0ZVwiKSwgb3IgZW1wdHkgdG8gbWF0Y2ggYWxsLiBFeGFtcGxlOiB7XCJQb3N0VG9vbFVzZVwiOiBbe1wibWF0Y2hlclwiOiBcIkVkaXR8V3JpdGVcIiwgXCJob29rc1wiOiBbe1widHlwZVwiOiBcImNvbW1hbmRcIiwgXCJjb21tYW5kXCI6IFwiZWNobyBEb25lXCJ9XX1dfSd9fSx7bWF0Y2hlczooJCk9PiQuY29kZT09PVwiaW52YWxpZF90eXBlXCImJiQuZXhwZWN0ZWQ9PT1cImJvb2xlYW5cIix0aXA6e3N1Z2dlc3Rpb246J1VzZSB0cnVlIG9yIGZhbHNlIHdpdGhvdXQgcXVvdGVzLiBFeGFtcGxlOiBcImluY2x1ZGVDb0F1dGhvcmVkQnlcIjogdHJ1ZSd9fSx7bWF0Y2hlczooJCk9PiQuY29kZT09PVwidW5yZWNvZ25pemVkX2tleXNcIix0aXA6e3N1Z2dlc3Rpb246XCJDaGVjayBmb3IgdHlwb3Mgb3IgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHZhbGlkIGZpZWxkc1wiLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL3NldHRpbmdzXCJ9fSx7bWF0Y2hlczooJCk9PiQuY29kZT09PVwiaW52YWxpZF92YWx1ZVwiJiYkLmVudW1WYWx1ZXMhPT12b2lkIDAsdGlwOntzdWdnZXN0aW9uOnZvaWQgMH19LHttYXRjaGVzOigkKT0+JC5jb2RlPT09XCJpbnZhbGlkX3R5cGVcIiYmJC5leHBlY3RlZD09PVwib2JqZWN0XCImJiQucmVjZWl2ZWQ9PT1udWxsJiYkLnBhdGg9PT1cIlwiLHRpcDp7c3VnZ2VzdGlvbjpcIkNoZWNrIGZvciBtaXNzaW5nIGNvbW1hcywgdW5tYXRjaGVkIGJyYWNrZXRzLCBvciB0cmFpbGluZyBjb21tYXMuIFVzZSBhIEpTT04gdmFsaWRhdG9yIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBzeW50YXggZXJyb3IuXCJ9fSx7bWF0Y2hlczooJCk9PiQucGF0aD09PVwicGVybWlzc2lvbnMuYWRkaXRpb25hbERpcmVjdG9yaWVzXCImJiQuY29kZT09PVwiaW52YWxpZF90eXBlXCIsdGlwOntzdWdnZXN0aW9uOidNdXN0IGJlIGFuIGFycmF5IG9mIGRpcmVjdG9yeSBwYXRocy4gRXhhbXBsZTogW1wifi9wcm9qZWN0c1wiLCBcIi90bXAvd29ya3NwYWNlXCJdLiBZb3UgY2FuIGFsc28gdXNlIC0tYWRkLWRpciBmbGFnIG9yIC9hZGQtZGlyIGNvbW1hbmQnLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2lhbSN3b3JraW5nLWRpcmVjdG9yaWVzXCJ9fV0scSQkPXtwZXJtaXNzaW9uczpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaWFtI2NvbmZpZ3VyaW5nLXBlcm1pc3Npb25zXCIsZW52OlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9zZXR0aW5ncyNlbnZpcm9ubWVudC12YXJpYWJsZXNcIixob29rczpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaG9va3NcIn07ZnVuY3Rpb24gR2IoJCl7bGV0IFE9SyQkLmZpbmQoKFkpPT5ZLm1hdGNoZXMoJCkpO2lmKCFRKXJldHVybiBudWxsO2xldCBKPXsuLi5RLnRpcH07aWYoJC5jb2RlPT09XCJpbnZhbGlkX3ZhbHVlXCImJiQuZW51bVZhbHVlcyYmIUouc3VnZ2VzdGlvbilKLnN1Z2dlc3Rpb249YFZhbGlkIHZhbHVlczogJHskLmVudW1WYWx1ZXMubWFwKChZKT0+YFwiJHtZfVwiYCkuam9pbihcIiwgXCIpfWA7aWYoIUouZG9jTGluayYmJC5wYXRoKXtsZXQgWT0kLnBhdGguc3BsaXQoXCIuXCIpWzBdO2lmKFkpSi5kb2NMaW5rPXEkJFtZXX1yZXR1cm4gSn12YXIgYlokPV8oKCk9PnY0KCkuc3RyaWN0KCkpO2Z1bmN0aW9uIFViKCQpe3JldHVybiAkLmNvZGU9PT1cImludmFsaWRfdHlwZVwifWZ1bmN0aW9uIEhiKCQpe3JldHVybiAkLmNvZGU9PT1cImludmFsaWRfdmFsdWVcIn1mdW5jdGlvbiBWJCQoJCl7cmV0dXJuICQuY29kZT09PVwidW5yZWNvZ25pemVkX2tleXNcIn1mdW5jdGlvbiBLYigkKXtyZXR1cm4gJC5jb2RlPT09XCJ0b29fc21hbGxcIn1mdW5jdGlvbiBKWCgkKXtpZigkPT09bnVsbClyZXR1cm5cIm51bGxcIjtpZigkPT09dm9pZCAwKXJldHVyblwidW5kZWZpbmVkXCI7aWYoQXJyYXkuaXNBcnJheSgkKSlyZXR1cm5cImFycmF5XCI7cmV0dXJuIHR5cGVvZiAkfWZ1bmN0aW9uIHFiKCQpe2xldCBRPSQubWF0Y2goL3JlY2VpdmVkIChcXHcrKS8pO3JldHVybiBRP1FbMV06dm9pZCAwfWZ1bmN0aW9uIGkwKCQsUSl7cmV0dXJuICQuaXNzdWVzLm1hcCgoSik9PntsZXQgWT1KLnBhdGgubWFwKFN0cmluZykuam9pbihcIi5cIiksWD1KLm1lc3NhZ2UsVyxHLFUsSCxxO2lmKEhiKEopKUc9Si52YWx1ZXMubWFwKChCKT0+U3RyaW5nKEIpKSxVPUcuam9pbihcIiB8IFwiKSxIPXZvaWQgMCxxPXZvaWQgMDtlbHNlIGlmKFViKEopKXtVPUouZXhwZWN0ZWQ7bGV0IEI9cWIoSi5tZXNzYWdlKTtIPUI/P0pYKEouaW5wdXQpLHE9Qj8/SlgoSi5pbnB1dCl9ZWxzZSBpZihLYihKKSlVPVN0cmluZyhKLm1pbmltdW0pO2Vsc2UgaWYoSi5jb2RlPT09XCJjdXN0b21cIiYmXCJwYXJhbXNcImluIEopSD1KLnBhcmFtcy5yZWNlaXZlZCxxPUg7bGV0IFY9R2Ioe3BhdGg6WSxjb2RlOkouY29kZSxleHBlY3RlZDpVLHJlY2VpdmVkOkgsZW51bVZhbHVlczpHLG1lc3NhZ2U6Si5tZXNzYWdlLHZhbHVlOkh9KTtpZihIYihKKSlXPUc/Lm1hcCgoQik9PmBcIiR7Qn1cImApLmpvaW4oXCIsIFwiKSxYPWBJbnZhbGlkIHZhbHVlLiBFeHBlY3RlZCBvbmUgb2Y6ICR7V31gO2Vsc2UgaWYoVWIoSikpe2xldCBCPXFiKEoubWVzc2FnZSk/P0pYKEouaW5wdXQpO2lmKEouZXhwZWN0ZWQ9PT1cIm9iamVjdFwiJiZCPT09XCJudWxsXCImJlk9PT1cIlwiKVg9XCJJbnZhbGlkIG9yIG1hbGZvcm1lZCBKU09OXCI7ZWxzZSBYPWBFeHBlY3RlZCAke0ouZXhwZWN0ZWR9LCBidXQgcmVjZWl2ZWQgJHtCfWB9ZWxzZSBpZihWJCQoSikpe2xldCBCPUoua2V5cy5qb2luKFwiLCBcIik7WD1gVW5yZWNvZ25pemVkICR7c08oSi5rZXlzLmxlbmd0aCxcImZpZWxkXCIpfTogJHtCfWB9ZWxzZSBpZihLYihKKSlYPWBOdW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtKLm1pbmltdW19YCxXPVN0cmluZyhKLm1pbmltdW0pO3JldHVybntmaWxlOlEscGF0aDpZLG1lc3NhZ2U6WCxleHBlY3RlZDpXLGludmFsaWRWYWx1ZTpxLHN1Z2dlc3Rpb246Vj8uc3VnZ2VzdGlvbixkb2NMaW5rOlY/LmRvY0xpbmt9fSl9ZnVuY3Rpb24gQiQkKCQsUSl7aWYoISR8fHR5cGVvZiAkIT09XCJvYmplY3RcIilyZXR1cm5bXTtsZXQgSj0kO2lmKCFKLnBlcm1pc3Npb25zfHx0eXBlb2YgSi5wZXJtaXNzaW9ucyE9PVwib2JqZWN0XCIpcmV0dXJuW107bGV0IFk9Si5wZXJtaXNzaW9ucyxYPVtdO2ZvcihsZXQgVyBvZltcImFsbG93XCIsXCJkZW55XCIsXCJhc2tcIl0pe2xldCBHPVlbV107aWYoIUFycmF5LmlzQXJyYXkoRykpY29udGludWU7WVtXXT1HLmZpbHRlcigoVSk9PntpZih0eXBlb2YgVSE9PVwic3RyaW5nXCIpcmV0dXJuIFgucHVzaCh7ZmlsZTpRLHBhdGg6YHBlcm1pc3Npb25zLiR7V31gLG1lc3NhZ2U6YE5vbi1zdHJpbmcgdmFsdWUgaW4gJHtXfSBhcnJheSB3YXMgcmVtb3ZlZGAsc2V2ZXJpdHk6XCJ3YXJuaW5nXCIsaW52YWxpZFZhbHVlOlV9KSwhMTtsZXQgSD1neihVKTtpZighSC52YWxpZCl7bGV0IHE9YEludmFsaWQgcGVybWlzc2lvbiBydWxlIFwiJHtVfVwiIHdhcyBza2lwcGVkOiAke0guZXJyb3J9YDtpZihILnN1Z2dlc3Rpb24pcSs9YC4gJHtILnN1Z2dlc3Rpb259YDtyZXR1cm4gWC5wdXNoKHtmaWxlOlEscGF0aDpgcGVybWlzc2lvbnMuJHtXfWAsbWVzc2FnZTpxLHNldmVyaXR5Olwid2FybmluZ1wiLGludmFsaWRWYWx1ZTpVfSksITF9cmV0dXJuITB9KX1yZXR1cm4gWH12YXIgeiQkPW5ldyBTZXQoczApO2Z1bmN0aW9uIE4kJCgkLFEpe2lmKCEkfHx0eXBlb2YgJCE9PVwib2JqZWN0XCIpcmV0dXJuW107bGV0IEo9JDtpZighKFwiaG9va3NcImluIEopKXJldHVybltdO2lmKEouaG9va3M9PT1udWxsfHx0eXBlb2YgSi5ob29rcyE9PVwib2JqZWN0XCJ8fEFycmF5LmlzQXJyYXkoSi5ob29rcykpe2xldCBXPUpYKEouaG9va3MpO3JldHVybiBkZWxldGUgSi5ob29rcyxbe2ZpbGU6USxwYXRoOlwiaG9va3NcIixtZXNzYWdlOmBcImhvb2tzXCIgbXVzdCBiZSBhbiBvYmplY3QgbWFwcGluZyBldmVudCBuYW1lcyB0byBtYXRjaGVyIGFycmF5czsgcmVjZWl2ZWQgJHtXfS4gVGhpcyBmaWVsZCB3YXMgaWdub3JlZC5gLHNldmVyaXR5Olwid2FybmluZ1wiLGludmFsaWRWYWx1ZTpXLGRvY0xpbms6XCJodHRwczovL2NvZGUuY2xhdWRlLmNvbS9kb2NzL2VuL2hvb2tzXCJ9XX1sZXQgWT1KLmhvb2tzLFg9W107Zm9yKGxldCBXIG9mIE9iamVjdC5rZXlzKFkpKXtpZigheiQkLmhhcyhXKSl7ZGVsZXRlIFlbV10sWC5wdXNoKHtmaWxlOlEscGF0aDpgaG9va3MuJHtXfWAsbWVzc2FnZTpgVW5rbm93biBob29rIGV2ZW50IFwiJHtXfVwiIHdhcyBpZ25vcmVkLiBWYWxpZCBldmVudHM6ICR7czAuam9pbihcIiwgXCIpfWAsc2V2ZXJpdHk6XCJ3YXJuaW5nXCIsaW52YWxpZFZhbHVlOlcsZG9jTGluazpcImh0dHBzOi8vY29kZS5jbGF1ZGUuY29tL2RvY3MvZW4vaG9va3NcIn0pO2NvbnRpbnVlfWlmKCFBcnJheS5pc0FycmF5KFlbV10pKXtsZXQgRz1KWChZW1ddKTtkZWxldGUgWVtXXSxYLnB1c2goe2ZpbGU6USxwYXRoOmBob29rcy4ke1d9YCxtZXNzYWdlOmBIb29rIGV2ZW50IFwiJHtXfVwiIG11c3QgYmUgYW4gYXJyYXkgb2YgbWF0Y2hlcnM7IHJlY2VpdmVkICR7R30uIFRoaXMgZW50cnkgd2FzIGlnbm9yZWQuYCxzZXZlcml0eTpcIndhcm5pbmdcIixpbnZhbGlkVmFsdWU6Ryxkb2NMaW5rOlwiaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9ob29rc1wifSl9fWlmKFgubGVuZ3RoPjAmJk9iamVjdC5rZXlzKFkpLmxlbmd0aD09PTApZGVsZXRlIEouaG9va3M7cmV0dXJuIFh9ZnVuY3Rpb24gaTEoJCxRKXtyZXR1cm5bLi4uQiQkKCQsUSksLi4uTiQkKCQsUSldfWltcG9ydHt1c2VySW5mbyBhcyB3JCR9ZnJvbVwib3NcIjt2YXIgVmI9XCJjb20uYW50aHJvcGljLmNsYXVkZWNvZGVcIixYWD1cIkhLTE1cXFxcU09GVFdBUkVcXFxcUG9saWNpZXNcXFxcQ2xhdWRlQ29kZVwiLFlYPVwiSEtDVVxcXFxTT0ZUV0FSRVxcXFxQb2xpY2llc1xcXFxDbGF1ZGVDb2RlXCIsbjE9XCJTZXR0aW5nc1wiLEJiPVwiL3Vzci9iaW4vcGx1dGlsXCIsemI9W1wiLWNvbnZlcnRcIixcImpzb25cIixcIi1vXCIsXCItXCIsXCItLVwiXSxOYj01MDAwLGh6PVwiL21udC9jL1dpbmRvd3MvU3lzdGVtMzIvcmVnLmV4ZVwiLF85PVwiL21udC9jL1Byb2dyYW0gRmlsZXMvQ2xhdWRlQ29kZVwiO2Z1bmN0aW9uIEJHKCl7aWYocHJvY2Vzcy5wbGF0Zm9ybSE9PVwibGludXhcIilyZXR1cm4hMTtpZihwcm9jZXNzLmVudi5XU0xfRElTVFJPX05BTUUpcmV0dXJuITA7dHJ5e2xldCAkPVM2KFwiZnNcIikucmVhZEZpbGVTeW5jKFwiL3Byb2MvdmVyc2lvblwiLFwidXRmOFwiKS50b0xvd2VyQ2FzZSgpO3JldHVybiAkLmluY2x1ZGVzKFwibWljcm9zb2Z0XCIpfHwkLmluY2x1ZGVzKFwid3NsXCIpfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiB3Yigpe2xldCAkPVwiXCI7dHJ5eyQ9dyQkKCkudXNlcm5hbWV9Y2F0Y2h7fWxldCBRPVtdO2lmKCQpUS5wdXNoKHtwYXRoOmAvTGlicmFyeS9NYW5hZ2VkIFByZWZlcmVuY2VzLyR7JH0vJHtWYn0ucGxpc3RgLGxhYmVsOlwicGVyLXVzZXIgbWFuYWdlZCBwcmVmZXJlbmNlc1wifSk7cmV0dXJuIFEucHVzaCh7cGF0aDpgL0xpYnJhcnkvTWFuYWdlZCBQcmVmZXJlbmNlcy8ke1ZifS5wbGlzdGAsbGFiZWw6XCJkZXZpY2UtbGV2ZWwgbWFuYWdlZCBwcmVmZXJlbmNlc1wifSksUX1pbXBvcnR7ZXhlY0ZpbGUgYXMgTyQkfWZyb21cImNoaWxkX3Byb2Nlc3NcIjtpbXBvcnR7ZXhpc3RzU3luYyBhcyBEJCR9ZnJvbVwiZnNcIjt2YXIgRiQkPW51bGw7ZnVuY3Rpb24gV1goJCxRKXtyZXR1cm4gbmV3IFByb21pc2UoKEopPT57dHJ5e08kJCgkLFEse2VuY29kaW5nOlwidXRmLThcIix0aW1lb3V0Ok5ifSwoWSxYKT0+e0ooe3N0ZG91dDpYPz9cIlwiLGNvZGU6WT8xOjB9KX0pfWNhdGNoe0ooe3N0ZG91dDpcIlwiLGNvZGU6MX0pfX0pfWZ1bmN0aW9uIE9iKCl7cmV0dXJuKGFzeW5jKCk9PntpZihwcm9jZXNzLnBsYXRmb3JtPT09XCJkYXJ3aW5cIil7bGV0ICQ9d2IoKSxKPShhd2FpdCBQcm9taXNlLmFsbCgkLm1hcChhc3luYyh7cGF0aDpZLGxhYmVsOlh9KT0+e2lmKCFEJCQoWSkpcmV0dXJue3N0ZG91dDpcIlwiLGxhYmVsOlgsb2s6ITF9O2xldHtzdGRvdXQ6Vyxjb2RlOkd9PWF3YWl0IFdYKEJiLFsuLi56YixZXSk7cmV0dXJue3N0ZG91dDpXLGxhYmVsOlgsb2s6Rz09PTAmJiEhV319KSkpLmZpbmQoKFkpPT5ZLm9rKTtyZXR1cm57cGxpc3RTdGRvdXRzOko/W3tzdGRvdXQ6Si5zdGRvdXQsbGFiZWw6Si5sYWJlbH1dOltdLGhrbG1TdGRvdXQ6bnVsbCxoa2N1U3Rkb3V0Om51bGx9fWlmKHByb2Nlc3MucGxhdGZvcm09PT1cIndpbjMyXCIpe2xldCBRPWAke3Byb2Nlc3MuZW52LlNZU1RFTVJPT1R8fFwiQzpcXFxcV2luZG93c1wifVxcXFxTeXN0ZW0zMlxcXFxyZWcuZXhlYCxbSixZXT1hd2FpdCBQcm9taXNlLmFsbChbV1goUSxbXCJxdWVyeVwiLFhYLFwiL3ZcIixuMV0pLFdYKFEsW1wicXVlcnlcIixZWCxcIi92XCIsbjFdKV0pO3JldHVybntwbGlzdFN0ZG91dHM6bnVsbCxoa2xtU3Rkb3V0OkouY29kZT09PTA/Si5zdGRvdXQ6bnVsbCxoa2N1U3Rkb3V0OlkuY29kZT09PTA/WS5zdGRvdXQ6bnVsbH19aWYoQkcoKSl7bGV0WyQsUV09YXdhaXQgUHJvbWlzZS5hbGwoW1dYKGh6LFtcInF1ZXJ5XCIsWFgsXCIvdlwiLG4xXSksV1goaHosW1wicXVlcnlcIixZWCxcIi92XCIsbjFdKV0pO3JldHVybntwbGlzdFN0ZG91dHM6bnVsbCxoa2xtU3Rkb3V0OiQuY29kZT09PTA/JC5zdGRvdXQ6bnVsbCxoa2N1U3Rkb3V0OlEuY29kZT09PTA/US5zdGRvdXQ6bnVsbH19cmV0dXJue3BsaXN0U3Rkb3V0czpudWxsLGhrbG1TdGRvdXQ6bnVsbCxoa2N1U3Rkb3V0Om51bGx9fSkoKX1mdW5jdGlvbiBEYigpe3JldHVybiBGJCR9dmFyIHIxPU9iamVjdC5mcmVlemUoe3NldHRpbmdzOnt9LGVycm9yczpbXX0pLExiPW51bGwsamI9bnVsbCxBYj0hMSx6Rz1udWxsO2Z1bmN0aW9uIFokJCgpe2lmKHpHKXJldHVybjt6Rz0oYXN5bmMoKT0+e2xldCAkPURhdGUubm93KCksUT1EYigpPz9PYigpLHttZG06Sixoa2N1Olksd3NsSW5oZXJpdHM6WH09TSQkKGF3YWl0IFEpO0xiPUosamI9WSxBYj1YO2xldCBXPURhdGUubm93KCktJDtpZihYJChgTURNIHNldHRpbmdzIGxvYWQgY29tcGxldGVkIGluICR7V31tc2ApLE9iamVjdC5rZXlzKEouc2V0dGluZ3MpLmxlbmd0aD4wKXtYJChgTURNIHNldHRpbmdzIGZvdW5kOiAke09iamVjdC5rZXlzKEouc2V0dGluZ3MpLmpvaW4oXCIsIFwiKX1gKTt0cnl7YUooXCJpbmZvXCIsXCJtZG1fc2V0dGluZ3NfbG9hZGVkXCIse2R1cmF0aW9uX21zOlcsa2V5X2NvdW50Ok9iamVjdC5rZXlzKEouc2V0dGluZ3MpLmxlbmd0aCxlcnJvcl9jb3VudDpKLmVycm9ycy5sZW5ndGh9KX1jYXRjaHt9fX0pKCl9YXN5bmMgZnVuY3Rpb24gSWIoKXtpZighekcpWiQkKCk7YXdhaXQgekd9ZnVuY3Rpb24gUmIoKXtyZXR1cm4gTGI/P3IxfWZ1bmN0aW9uIFBiKCl7cmV0dXJuIGpiPz9yMX1mdW5jdGlvbiBFYigpe3JldHVybiBBYn1mdW5jdGlvbiB1eigkLFEpe2xldCBKPVI0KEU5KCQsITEpKTtpZighSnx8dHlwZW9mIEohPT1cIm9iamVjdFwiKXJldHVybntzZXR0aW5nczp7fSxlcnJvcnM6W119O2xldCBZPWkxKEosUSksWD12NCgpLnNhZmVQYXJzZShKKTtpZighWC5zdWNjZXNzKXtsZXQgVz1pMChYLmVycm9yLFEpO3JldHVybntzZXR0aW5nczp7fSxlcnJvcnM6Wy4uLlksLi4uV119fXJldHVybntzZXR0aW5nczpYLmRhdGEsZXJyb3JzOll9fWZ1bmN0aW9uIEZiKCQsUT1cIlNldHRpbmdzXCIpe2xldCBKPSQuc3BsaXQoL1xccj9cXG4vKSxZPVEucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csXCJcXFxcJCZcIiksWD1uZXcgUmVnRXhwKGBeXFxcXHMrJHtZfVxcXFxzK1JFR18oPzpFWFBBTkRfKT9TWlxcXFxzKyguKikkYCxcImlcIik7Zm9yKGxldCBXIG9mIEope2xldCBHPVcubWF0Y2goWCk7aWYoRyYmR1sxXSlyZXR1cm4gR1sxXS50cmltRW5kKCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gTSQkKCQpe2xldCBRPVtdO2lmKCQucGxpc3RTdGRvdXRzJiYkLnBsaXN0U3Rkb3V0cy5sZW5ndGg+MCl7bGV0e3N0ZG91dDpHLGxhYmVsOlV9PSQucGxpc3RTdGRvdXRzWzBdLEg9dXooRyxVKSx7d3NsSW5oZXJpdHNXaW5kb3dzU2V0dGluZ3M6cSwuLi5WfT1ILnNldHRpbmdzO2lmKE9iamVjdC5rZXlzKFYpLmxlbmd0aD4wKXJldHVybnttZG06SCxoa2N1OnIxLHdzbEluaGVyaXRzOiExfTtRLnB1c2goLi4uSC5lcnJvcnMpfWxldCBKPW51bGw7aWYoJC5oa2xtU3Rkb3V0KXtsZXQgRz1GYigkLmhrbG1TdGRvdXQpO2lmKEcpSj11eihHLGBSZWdpc3RyeTogJHtYWH1cXFxcJHtuMX1gKX1pZihKKVEucHVzaCguLi5KLmVycm9ycyk7bGV0IFk9US5sZW5ndGg+MD97c2V0dGluZ3M6e30sZXJyb3JzOlF9OnIxLFg9QkcoKSxXPSExO2lmKFgpe2lmKFc9Sj8uc2V0dGluZ3Mud3NsSW5oZXJpdHNXaW5kb3dzU2V0dGluZ3M9PT0hMHx8aiQkKCksIVcpcmV0dXJue21kbTpZLGhrY3U6cjEsd3NsSW5oZXJpdHM6ITF9fWlmKEope2xldHt3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpHLC4uLlV9PUouc2V0dGluZ3M7aWYoT2JqZWN0LmtleXMoVSkubGVuZ3RoPjApcmV0dXJue21kbTpKLGhrY3U6cjEsd3NsSW5oZXJpdHM6V319aWYoTCQkKFcpKXJldHVybnttZG06WSxoa2N1OnIxLHdzbEluaGVyaXRzOld9O2lmKCQuaGtjdVN0ZG91dCl7bGV0IEc9RmIoJC5oa2N1U3Rkb3V0KTtpZihHKXtsZXQgVT11eihHLGBSZWdpc3RyeTogJHtZWH1cXFxcJHtuMX1gKTtpZighWHx8VS5zZXR0aW5ncy53c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5ncz09PSEwKXtsZXR7d3NsSW5oZXJpdHNXaW5kb3dzU2V0dGluZ3M6SCwuLi5xfT1VLnNldHRpbmdzO3JldHVybnttZG06WSxoa2N1OntzZXR0aW5nczpxLGVycm9yczpVLmVycm9yc30sd3NsSW5oZXJpdHM6V319aWYoVS5lcnJvcnMubGVuZ3RoPjApcmV0dXJue21kbTpZLGhrY3U6e3NldHRpbmdzOnt9LGVycm9yczpVLmVycm9yc30sd3NsSW5oZXJpdHM6V319fXJldHVybnttZG06WSxoa2N1OnIxLHdzbEluaGVyaXRzOld9fWZ1bmN0aW9uIEwkJCgkKXtpZigkJiZNYihfOSkpcmV0dXJuITA7cmV0dXJuIE1iKGwwKCkpfWZ1bmN0aW9uIFpiKCQpe2xldCBRPVI0KEU5KHUwKCQpLCExKSk7aWYoIVF8fHR5cGVvZiBRIT09XCJvYmplY3RcIilyZXR1cm4hMTtpMShRLCQpO2xldHt3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpKLC4uLll9PVE7cmV0dXJuIE9iamVjdC5rZXlzKFkpLmxlbmd0aD4wfWZ1bmN0aW9uIGokJCgpe2Z1bmN0aW9uICQoUSl7dHJ5e2xldCBKPUU5KHUwKFEpLCExKTtyZXR1cm4hIUomJnR5cGVvZiBKPT09XCJvYmplY3RcIiYmXCJ3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nc1wiaW4gSiYmSi53c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5ncz09PSEwfWNhdGNoe3JldHVybiExfX1pZigkKFM5KF85LFwibWFuYWdlZC1zZXR0aW5ncy5qc29uXCIpKSlyZXR1cm4hMDt0cnl7bGV0IFE9UzkoXzksXCJtYW5hZ2VkLXNldHRpbmdzLmRcIik7Zm9yKGxldCBKIG9mIG0kKCkucmVhZGRpclN5bmMoUSkpaWYoKEouaXNGaWxlKCl8fEouaXNTeW1ib2xpY0xpbmsoKSkmJkoubmFtZS5lbmRzV2l0aChcIi5qc29uXCIpJiYhSi5uYW1lLnN0YXJ0c1dpdGgoXCIuXCIpJiYkKFM5KFEsSi5uYW1lKSkpcmV0dXJuITB9Y2F0Y2h7fXJldHVybiExfWZ1bmN0aW9uIE1iKCQpe3RyeXtpZihaYihTOSgkLFwibWFuYWdlZC1zZXR0aW5ncy5qc29uXCIpKSlyZXR1cm4hMH1jYXRjaHt9dHJ5e2xldCBRPVM5KCQsXCJtYW5hZ2VkLXNldHRpbmdzLmRcIiksSj1tJCgpLnJlYWRkaXJTeW5jKFEpO2ZvcihsZXQgWSBvZiBKKXtpZighKFkuaXNGaWxlKCl8fFkuaXNTeW1ib2xpY0xpbmsoKSl8fCFZLm5hbWUuZW5kc1dpdGgoXCIuanNvblwiKXx8WS5uYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKWNvbnRpbnVlO3RyeXtpZihaYihTOShRLFkubmFtZSkpKXJldHVybiEwfWNhdGNoe319fWNhdGNoe31yZXR1cm4hMX1mdW5jdGlvbiBBJCQoJCxRLEope2lmKEohPT12b2lkIDAmJiFLMSgkW1FdLEopfHxKPT09dm9pZCAwJiYhKFEgaW4gJCkpQTgoJCxRLEopfXZhciBHWD1BJCQ7ZnVuY3Rpb24gSSQkKCQpe3JldHVybiBmdW5jdGlvbihRLEosWSl7dmFyIFg9LTEsVz1PYmplY3QoUSksRz1ZKFEpLFU9Ry5sZW5ndGg7d2hpbGUoVS0tKXt2YXIgSD1HWyQ/VTorK1hdO2lmKEooV1tIXSxILFcpPT09ITEpYnJlYWt9cmV0dXJuIFF9fXZhciBiYj1JJCQ7dmFyIFIkJD1iYigpLF9iPVIkJDtmdW5jdGlvbiBQJCQoJCl7cmV0dXJuIHI2KCQpJiZSOCgkKX12YXIgU2I9UCQkO3ZhciBFJCQ9XCJbb2JqZWN0IE9iamVjdF1cIixiJCQ9RnVuY3Rpb24ucHJvdG90eXBlLF8kJD1PYmplY3QucHJvdG90eXBlLGtiPWIkJC50b1N0cmluZyxTJCQ9XyQkLmhhc093blByb3BlcnR5LGskJD1rYi5jYWxsKE9iamVjdCk7ZnVuY3Rpb24gdiQkKCQpe2lmKCFyNigkKXx8QTQoJCkhPUUkJClyZXR1cm4hMTt2YXIgUT1INSgkKTtpZihRPT09bnVsbClyZXR1cm4hMDt2YXIgSj1TJCQuY2FsbChRLFwiY29uc3RydWN0b3JcIikmJlEuY29uc3RydWN0b3I7cmV0dXJuIHR5cGVvZiBKPT1cImZ1bmN0aW9uXCImJkogaW5zdGFuY2VvZiBKJiZrYi5jYWxsKEopPT1rJCR9dmFyIHZiPXYkJDtmdW5jdGlvbiBDJCQoJCxRKXtpZihRPT09XCJjb25zdHJ1Y3RvclwiJiZ0eXBlb2YgJFtRXT09PVwiZnVuY3Rpb25cIilyZXR1cm47aWYoUT09XCJfX3Byb3RvX19cIilyZXR1cm47cmV0dXJuICRbUV19dmFyIFVYPUMkJDtmdW5jdGlvbiBUJCQoJCl7cmV0dXJuIHJ3KCQsVzUoJCkpfXZhciBDYj1UJCQ7ZnVuY3Rpb24geCQkKCQsUSxKLFksWCxXLEcpe3ZhciBVPVVYKCQsSiksSD1VWChRLEopLHE9Ry5nZXQoSCk7aWYocSl7R1goJCxKLHEpO3JldHVybn12YXIgVj1XP1coVSxILEorXCJcIiwkLFEsRyk6dm9pZCAwLEI9Vj09PXZvaWQgMDtpZihCKXt2YXIgej1WNihIKSxOPSF6JiZDNyhIKSx3PSF6JiYhTiYmWDUoSCk7aWYoVj1ILHp8fE58fHcpaWYoVjYoVSkpVj1VO2Vsc2UgaWYoU2IoVSkpVj16TyhVKTtlbHNlIGlmKE4pQj0hMSxWPXpVKEgsITApO2Vsc2UgaWYodylCPSExLFY9T08oSCwhMCk7ZWxzZSBWPVtdO2Vsc2UgaWYodmIoSCl8fG00KEgpKXtpZihWPVUsbTQoVSkpVj1DYihVKTtlbHNlIGlmKCEkNihVKXx8JDgoVSkpVj1aTyhIKX1lbHNlIEI9ITF9aWYoQilHLnNldChILFYpLFgoVixILFksVyxHKSxHLmRlbGV0ZShIKTtHWCgkLEosVil9dmFyIFRiPXgkJDtmdW5jdGlvbiB4YigkLFEsSixZLFgpe2lmKCQ9PT1RKXJldHVybjtfYihRLGZ1bmN0aW9uKFcsRyl7aWYoWHx8KFg9bmV3IG53KSwkNihXKSlUYigkLFEsRyxKLHhiLFksWCk7ZWxzZXt2YXIgVT1ZP1koVVgoJCxHKSxXLEcrXCJcIiwkLFEsWCk6dm9pZCAwO2lmKFU9PT12b2lkIDApVT1XO0dYKCQsRyxVKX19LFc1KX12YXIgZmI9eGI7ZnVuY3Rpb24gZiQkKCQsUSxKKXtzd2l0Y2goSi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gJC5jYWxsKFEpO2Nhc2UgMTpyZXR1cm4gJC5jYWxsKFEsSlswXSk7Y2FzZSAyOnJldHVybiAkLmNhbGwoUSxKWzBdLEpbMV0pO2Nhc2UgMzpyZXR1cm4gJC5jYWxsKFEsSlswXSxKWzFdLEpbMl0pfXJldHVybiAkLmFwcGx5KFEsSil9dmFyIHliPWYkJDt2YXIgZ2I9TWF0aC5tYXg7ZnVuY3Rpb24geSQkKCQsUSxKKXtyZXR1cm4gUT1nYihRPT09dm9pZCAwPyQubGVuZ3RoLTE6USwwKSxmdW5jdGlvbigpe3ZhciBZPWFyZ3VtZW50cyxYPS0xLFc9Z2IoWS5sZW5ndGgtUSwwKSxHPUFycmF5KFcpO3doaWxlKCsrWDxXKUdbWF09WVtRK1hdO1g9LTE7dmFyIFU9QXJyYXkoUSsxKTt3aGlsZSgrK1g8USlVW1hdPVlbWF07cmV0dXJuIFVbUV09SihHKSx5YigkLHRoaXMsVSl9fXZhciBORz15JCQ7ZnVuY3Rpb24gZyQkKCQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiAkfX12YXIgaGI9ZyQkO3ZhciBoJCQ9IWo4P0s1OmZ1bmN0aW9uKCQsUSl7cmV0dXJuIGo4KCQsXCJ0b1N0cmluZ1wiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpoYihRKSx3cml0YWJsZTohMH0pfSx1Yj1oJCQ7dmFyIHUkJD04MDAsbSQkPTE2LGwkJD1EYXRlLm5vdztmdW5jdGlvbiBjJCQoJCl7dmFyIFE9MCxKPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFk9bCQkKCksWD1tJCQtKFktSik7aWYoSj1ZLFg+MCl7aWYoKytRPj11JCQpcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIFE9MDtyZXR1cm4gJC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19dmFyIG1iPWMkJDt2YXIgcCQkPW1iKHViKSx3Rz1wJCQ7ZnVuY3Rpb24gZCQkKCQsUSl7cmV0dXJuIHdHKE5HKCQsUSxLNSksJCtcIlwiKX12YXIgbGI9ZCQkO2Z1bmN0aW9uIGkkJCgkLFEsSil7aWYoISQ2KEopKXJldHVybiExO3ZhciBZPXR5cGVvZiBRO2lmKFk9PVwibnVtYmVyXCI/UjgoSikmJloxKFEsSi5sZW5ndGgpOlk9PVwic3RyaW5nXCImJihRIGluIEopKXJldHVybiBLMShKW1FdLCQpO3JldHVybiExfXZhciBjYj1pJCQ7ZnVuY3Rpb24gbiQkKCQpe3JldHVybiBsYihmdW5jdGlvbihRLEope3ZhciBZPS0xLFg9Si5sZW5ndGgsVz1YPjE/SltYLTFdOnZvaWQgMCxHPVg+Mj9KWzJdOnZvaWQgMDtpZihXPSQubGVuZ3RoPjMmJnR5cGVvZiBXPT1cImZ1bmN0aW9uXCI/KFgtLSxXKTp2b2lkIDAsRyYmY2IoSlswXSxKWzFdLEcpKVc9WDwzP3ZvaWQgMDpXLFg9MTtRPU9iamVjdChRKTt3aGlsZSgrK1k8WCl7dmFyIFU9SltZXTtpZihVKSQoUSxVLFksVyl9cmV0dXJuIFF9KX12YXIgcGI9biQkO3ZhciByJCQ9cGIoZnVuY3Rpb24oJCxRLEosWSl7ZmIoJCxRLEosWSl9KSxHMT1yJCQ7ZnVuY3Rpb24gbyQkKCQsUSxKLFkpe2lmKCEkNigkKSlyZXR1cm4gJDtRPU0xKFEsJCk7dmFyIFg9LTEsVz1RLmxlbmd0aCxHPVctMSxVPSQ7d2hpbGUoVSE9bnVsbCYmKytYPFcpe3ZhciBIPUU4KFFbWF0pLHE9SjtpZihIPT09XCJfX3Byb3RvX19cInx8SD09PVwiY29uc3RydWN0b3JcInx8SD09PVwicHJvdG90eXBlXCIpcmV0dXJuICQ7aWYoWCE9Ryl7dmFyIFY9VVtIXTtpZihxPVk/WShWLEgsVSk6dm9pZCAwLHE9PT12b2lkIDApcT0kNihWKT9WOloxKFFbWCsxXSk/W106e319YVgoVSxILHEpLFU9VVtIXX1yZXR1cm4gJH12YXIgZGI9byQkO2Z1bmN0aW9uIHQkJCgkLFEsSil7dmFyIFk9LTEsWD1RLmxlbmd0aCxXPXt9O3doaWxlKCsrWTxYKXt2YXIgRz1RW1ldLFU9X08oJCxHKTtpZihKKFUsRykpZGIoVyxNMShHLCQpLFUpfXJldHVybiBXfXZhciBpYj10JCQ7ZnVuY3Rpb24gYSQkKCQsUSl7cmV0dXJuIGliKCQsUSxmdW5jdGlvbihKLFkpe3JldHVybiB2TygkLFkpfSl9dmFyIG5iPWEkJDt2YXIgcmI9YzY/YzYuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtmdW5jdGlvbiBzJCQoJCl7cmV0dXJuIFY2KCQpfHxtNCgkKXx8ISEocmImJiQmJiRbcmJdKX12YXIgb2I9cyQkO2Z1bmN0aW9uIHRiKCQsUSxKLFksWCl7dmFyIFc9LTEsRz0kLmxlbmd0aDtKfHwoSj1vYiksWHx8KFg9W10pO3doaWxlKCsrVzxHKXt2YXIgVT0kW1ddO2lmKFE+MCYmSihVKSlpZihRPjEpdGIoVSxRLTEsSixZLFgpO2Vsc2UgTk8oWCxVKTtlbHNlIGlmKCFZKVhbWC5sZW5ndGhdPVV9cmV0dXJuIFh9dmFyIGFiPXRiO2Z1bmN0aW9uIGUkJCgkKXt2YXIgUT0kPT1udWxsPzA6JC5sZW5ndGg7cmV0dXJuIFE/YWIoJCwxKTpbXX12YXIgc2I9ZSQkO2Z1bmN0aW9uICQ2JCgkKXtyZXR1cm4gd0coTkcoJCx2b2lkIDAsc2IpLCQrXCJcIil9dmFyIGViPSQ2JDt2YXIgUTYkPWViKGZ1bmN0aW9uKCQsUSl7cmV0dXJuICQ9PW51bGw/e306bmIoJCxRKX0pLE9HPVE2JDtpbXBvcnR7ZGlybmFtZSBhcyBVNiQsam9pbiBhcyB0MSxyZXNvbHZlIGFzIEhYfWZyb21cInBhdGhcIjtpbXBvcnR7am9pbiBhcyBKNiR9ZnJvbVwicGF0aFwiO3ZhciBYNiQ9XCJyZW1vdGUtc2V0dGluZ3MuanNvblwiLG16PW51bGwsWTYkO2Z1bmN0aW9uICRfKCl7cmV0dXJufWZ1bmN0aW9uIFc2JCgpe3JldHVybiAkXygpPz9KNiQocDYoKSxYNiQpfWZ1bmN0aW9uIEc2JCgpe3RyeXtsZXQgJD11MChXNiQoKSksUT1sJChKRygkKSk7aWYoIVF8fHR5cGVvZiBRIT09XCJvYmplY3RcInx8QXJyYXkuaXNBcnJheShRKSlyZXR1cm4gbnVsbDtyZXR1cm4gUX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gUV8oKXtpZighJF8oKSYmWTYkIT09ITApcmV0dXJuIG51bGw7aWYobXopcmV0dXJuIG16O2xldCAkPUc2JCgpO2lmKCQpcmV0dXJuIG16PSQsQjAoKSwkO3JldHVybiBudWxsfWZ1bmN0aW9uIEg2JCgpe3JldHVybiB0MShsMCgpLFwibWFuYWdlZC1zZXR0aW5ncy5qc29uXCIpfWZ1bmN0aW9uIFhfKCQpe2lmKG0wKCk9PT1cIndzbFwiJiYkLndzbEluaGVyaXRzPy4oKSl7bGV0IFE9bHooXzksJCk7aWYoUS5zZXR0aW5ncylyZXR1cm4gUTtsZXQgSj1seihsMCgpLCQpO3JldHVybntzZXR0aW5nczpKLnNldHRpbmdzLGVycm9yczpbLi4uUS5lcnJvcnMsLi4uSi5lcnJvcnNdfX1yZXR1cm4gbHoobDAoKSwkKX1mdW5jdGlvbiBseigkLFEpe2xldCBKPVtdLFk9e30sWD0hMSx7c2V0dGluZ3M6VyxlcnJvcnM6R309REcodDEoJCxcIm1hbmFnZWQtc2V0dGluZ3MuanNvblwiKSxRKTtpZihKLnB1c2goLi4uRyksVyYmT2JqZWN0LmtleXMoVykubGVuZ3RoPjApWT1HMShZLFcsbzEpLFg9ITA7bGV0IFU9dDEoJCxcIm1hbmFnZWQtc2V0dGluZ3MuZFwiKTt0cnl7bGV0IFY9bSQoKS5yZWFkZGlyU3luYyhVKS5maWx0ZXIoKEIpPT4oQi5pc0ZpbGUoKXx8Qi5pc1N5bWJvbGljTGluaygpKSYmQi5uYW1lLmVuZHNXaXRoKFwiLmpzb25cIikmJiFCLm5hbWUuc3RhcnRzV2l0aChcIi5cIikpLm1hcCgoQik9PkIubmFtZSkuc29ydCgpO2ZvcihsZXQgQiBvZiBWKXtsZXR7c2V0dGluZ3M6eixlcnJvcnM6Tn09REcodDEoVSxCKSxRKTtpZihKLnB1c2goLi4uTikseiYmT2JqZWN0LmtleXMoeikubGVuZ3RoPjApWT1HMShZLHosbzEpLFg9ITB9fWNhdGNoKFYpe2xldCBCPW8kKFYpO2lmKEIhPT1cIkVOT0VOVFwiJiZCIT09XCJFTk9URElSXCIpaWYoUT8ub25Gc0Vycm9yKVEub25Gc0Vycm9yKFYpO2Vsc2UgWCQoYG1hbmFnZWQtc2V0dGluZ3MuZCByZWFkIGZhaWxlZDogJHtWfWAse2xldmVsOlwiZXJyb3JcIn0pfWxldHt3c2xJbmhlcml0c1dpbmRvd3NTZXR0aW5nczpILC4uLnF9PVk7cmV0dXJue3NldHRpbmdzOlgmJk9iamVjdC5rZXlzKHEpLmxlbmd0aD4wP1k6bnVsbCxlcnJvcnM6Sn19ZnVuY3Rpb24gSzYkKCQsUSxKKXtpZihGMSgkKSlYJChgQnJva2VuIHN5bWxpbmsgb3IgbWlzc2luZyBmaWxlIGVuY291bnRlcmVkIGZvciBzZXR0aW5ncy5qc29uIGF0IHBhdGg6ICR7UX1gKTtlbHNlIGlmKEo/Lm9uRnNFcnJvcilKLm9uRnNFcnJvcigkKTtlbHNlIFgkKGBzZXR0aW5ncyBmaWxlIHJlYWQgZmFpbGVkIGF0ICR7UX06ICR7JH1gLHtsZXZlbDpcImVycm9yXCJ9KX1mdW5jdGlvbiBERygkLFEpe2xldCBKPXlPKCQpO2lmKEopcmV0dXJue3NldHRpbmdzOkouc2V0dGluZ3M/UjQoSi5zZXR0aW5ncyk6bnVsbCxlcnJvcnM6Si5lcnJvcnN9O2xldCBZPXE2JCgkLFEpO3JldHVybiBnTygkLFkpLHtzZXR0aW5nczpZLnNldHRpbmdzP1I0KFkuc2V0dGluZ3MpOm51bGwsZXJyb3JzOlkuZXJyb3JzfX1mdW5jdGlvbiBZXygkKXtpZighJC5tZG0pcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOltdfTtsZXQgUT0kLm1kbSgpO3JldHVybntzZXR0aW5nczpPYmplY3Qua2V5cyhRLnNldHRpbmdzKS5sZW5ndGg+MD9RLnNldHRpbmdzOm51bGwsZXJyb3JzOlEuZXJyb3JzfX1mdW5jdGlvbiBXXygkKXtsZXQgUT0kPy5yZW1vdGU/JC5yZW1vdGUoKTpRXygpO2lmKCFRfHxPYmplY3Qua2V5cyhRKS5sZW5ndGg9PT0wKXJldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbXX07bGV0IEo9UjQoUSksWT1pMShKLFwicmVtb3RlIG1hbmFnZWQgc2V0dGluZ3NcIiksWD12NCgpLnNhZmVQYXJzZShKKTtpZighWC5zdWNjZXNzKXJldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbLi4uWSwuLi5pMChYLmVycm9yLFwicmVtb3RlIG1hbmFnZWQgc2V0dGluZ3NcIildfTtyZXR1cm57c2V0dGluZ3M6T2JqZWN0LmtleXMoWC5kYXRhKS5sZW5ndGg+MD9YLmRhdGE6bnVsbCxlcnJvcnM6WX19ZnVuY3Rpb24gR18oKXtsZXQgJD1CNSgpO2lmKCEkfHxPYmplY3Qua2V5cygkKS5sZW5ndGg9PT0wKXJldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbXX07bGV0IFE9UjQoJCksSj1pMShRLFwicGFyZW50IG1hbmFnZWQgc2V0dGluZ3NcIiksWT12NCgpLnNhZmVQYXJzZShRKTtpZighWS5zdWNjZXNzKXJldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbLi4uSiwuLi5pMChZLmVycm9yLFwicGFyZW50IG1hbmFnZWQgc2V0dGluZ3NcIildfTtyZXR1cm4gT2JqZWN0LmtleXMoWS5kYXRhKS5sZW5ndGg+MD97c2V0dGluZ3M6WS5kYXRhLGVycm9yczpKfTp7c2V0dGluZ3M6bnVsbCxlcnJvcnM6Sn19ZnVuY3Rpb24gVV8oKXtsZXQgJD1WNSgpO2lmKCEkKXJldHVybntzZXR0aW5nczpudWxsLGVycm9yczpbXX07bGV0IFE9UjQoJCksSj1pMShRLFwiU0RLIGlubGluZSBzZXR0aW5nc1wiKSxZPXY0KCkuc2FmZVBhcnNlKFEpO2lmKCFZLnN1Y2Nlc3MpcmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOlsuLi5KLC4uLmkwKFkuZXJyb3IsXCJTREsgaW5saW5lIHNldHRpbmdzXCIpXX07cmV0dXJue3NldHRpbmdzOlkuZGF0YSxlcnJvcnM6Sn19ZnVuY3Rpb24gcTYkKCQsUSl7dHJ5e2xldHtyZXNvbHZlZFBhdGg6Sn09TjUobSQoKSwkKSxZPXUwKEopO2lmKFkudHJpbSgpPT09XCJcIilyZXR1cm57c2V0dGluZ3M6e30sZXJyb3JzOltdfTtsZXQgWD1SNChFOShZLCExKSksVz1pMShYLCQpLEc9djQoKS5zYWZlUGFyc2UoWCk7aWYoIUcuc3VjY2Vzcyl7bGV0IFU9aTAoRy5lcnJvciwkKTtyZXR1cm57c2V0dGluZ3M6bnVsbCxlcnJvcnM6Wy4uLlcsLi4uVV19fXJldHVybntzZXR0aW5nczpHLmRhdGEsZXJyb3JzOld9fWNhdGNoKEope3JldHVybiBLNiQoSiwkLFEpLHtzZXR0aW5nczpudWxsLGVycm9yczpbXX19fWZ1bmN0aW9uIEpfKCQpe3N3aXRjaCgkKXtjYXNlXCJ1c2VyU2V0dGluZ3NcIjpyZXR1cm4gSFgocDYoKSk7Y2FzZVwicG9saWN5U2V0dGluZ3NcIjpjYXNlXCJwcm9qZWN0U2V0dGluZ3NcIjpjYXNlXCJsb2NhbFNldHRpbmdzXCI6cmV0dXJuIEhYKGY3KCkpO2Nhc2VcImZsYWdTZXR0aW5nc1wiOntsZXQgUT15NygpO3JldHVybiBRP1U2JChIWChRKSk6SFgoZjcoKSl9fX1mdW5jdGlvbiBWNiQoKXtpZihjTygpfHxSJChwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9VU0VfQ09XT1JLX1BMVUdJTlMpKXJldHVyblwiY293b3JrX3NldHRpbmdzLmpzb25cIjtyZXR1cm5cInNldHRpbmdzLmpzb25cIn1mdW5jdGlvbiBLWCgkKXtzd2l0Y2goJCl7Y2FzZVwidXNlclNldHRpbmdzXCI6cmV0dXJuIHQxKEpfKCQpLFY2JCgpKTtjYXNlXCJwcm9qZWN0U2V0dGluZ3NcIjpjYXNlXCJsb2NhbFNldHRpbmdzXCI6cmV0dXJuIHQxKEpfKCQpLEI2JCgkKSk7Y2FzZVwicG9saWN5U2V0dGluZ3NcIjpyZXR1cm4gSDYkKCk7Y2FzZVwiZmxhZ1NldHRpbmdzXCI6cmV0dXJuIHk3KCl9fWZ1bmN0aW9uIEI2JCgkKXtzd2l0Y2goJCl7Y2FzZVwicHJvamVjdFNldHRpbmdzXCI6cmV0dXJuIHQxKFwiLmNsYXVkZVwiLFwic2V0dGluZ3MuanNvblwiKTtjYXNlXCJsb2NhbFNldHRpbmdzXCI6cmV0dXJuIHQxKFwiLmNsYXVkZVwiLFwic2V0dGluZ3MubG9jYWwuanNvblwiKX19ZnVuY3Rpb24gSF8oJCxRKXtsZXQgSj14TygkKTtpZihKIT09dm9pZCAwKXJldHVybiBKO2xldCBZPU82JCgkLFEpO3JldHVybiBmTygkLFkpLFl9ZnVuY3Rpb24gejYkKCQpe3JldHVybiEkfHwkLnBhcmVudFNldHRpbmdzQmVoYXZpb3I9PT1cIm1lcmdlXCJ9ZnVuY3Rpb24gTjYkKCQsUSl7bGV0IEo9e307aWYoJC5hbGxvd01hbmFnZWRIb29rc09ubHk9PT0hMClKLmFsbG93TWFuYWdlZEhvb2tzT25seT0hMDtpZigkLmFsbG93TWFuYWdlZE1jcFNlcnZlcnNPbmx5PT09ITApSi5hbGxvd01hbmFnZWRNY3BTZXJ2ZXJzT25seT0hMDtpZigkLmFsbG93TWFuYWdlZFBlcm1pc3Npb25SdWxlc09ubHk9PT0hMClKLmFsbG93TWFuYWdlZFBlcm1pc3Npb25SdWxlc09ubHk9ITA7bGV0IFk9JC5zdHJpY3RQbHVnaW5Pbmx5Q3VzdG9taXphdGlvbjtpZihZPT09ITB8fEFycmF5LmlzQXJyYXkoWSkmJlkubGVuZ3RoPjApSi5zdHJpY3RQbHVnaW5Pbmx5Q3VzdG9taXphdGlvbj1ZO2lmKCQuZGVuaWVkTWNwU2VydmVycylKLmRlbmllZE1jcFNlcnZlcnM9JC5kZW5pZWRNY3BTZXJ2ZXJzO2lmKFEuZm9yY2VMb2dpbk9yZ1VVSUQ9PT12b2lkIDAmJiQuZm9yY2VMb2dpbk9yZ1VVSUQpSi5mb3JjZUxvZ2luT3JnVVVJRD0kLmZvcmNlTG9naW5PcmdVVUlEO2lmKFEuYWxsb3dlZE1jcFNlcnZlcnM9PT12b2lkIDAmJiQuYWxsb3dlZE1jcFNlcnZlcnMpSi5hbGxvd2VkTWNwU2VydmVycz0kLmFsbG93ZWRNY3BTZXJ2ZXJzO2lmKCQucGVybWlzc2lvbnMpe2xldCBYPU9HKCQucGVybWlzc2lvbnMsW1wiZGVueVwiLFwiYXNrXCJdKTtpZigkLnBlcm1pc3Npb25zLmRpc2FibGVCeXBhc3NQZXJtaXNzaW9uc01vZGU9PT1cImRpc2FibGVcIilYLmRpc2FibGVCeXBhc3NQZXJtaXNzaW9uc01vZGU9XCJkaXNhYmxlXCI7aWYoUS5hbGxvd01hbmFnZWRQZXJtaXNzaW9uUnVsZXNPbmx5IT09ITApe2xldHthbGxvdzpXLGFkZGl0aW9uYWxEaXJlY3RvcmllczpHfT0kLnBlcm1pc3Npb25zO2lmKFcmJlEuc2FuZGJveD8ubmV0d29yaz8uYWxsb3dNYW5hZ2VkRG9tYWluc09ubHkhPT0hMClYLmFsbG93PVc7aWYoRylYLmFkZGl0aW9uYWxEaXJlY3Rvcmllcz1HfWlmKE9iamVjdC5rZXlzKFgpLmxlbmd0aD4wKUoucGVybWlzc2lvbnM9WH1pZigkLnNhbmRib3gpe2xldHtuZXR3b3JrOlgsZmlsZXN5c3RlbTpXfT0kLnNhbmRib3gsRz17fTtpZigkLnNhbmRib3guZW5hYmxlZD09PSEwKUcuZW5hYmxlZD0hMDtpZigkLnNhbmRib3guZmFpbElmVW5hdmFpbGFibGU9PT0hMClHLmZhaWxJZlVuYXZhaWxhYmxlPSEwO2lmKCQuc2FuZGJveC5hbGxvd1Vuc2FuZGJveGVkQ29tbWFuZHM9PT0hMSlHLmFsbG93VW5zYW5kYm94ZWRDb21tYW5kcz0hMTtpZigkLnNhbmRib3guYXV0b0FsbG93QmFzaElmU2FuZGJveGVkPT09ITEpRy5hdXRvQWxsb3dCYXNoSWZTYW5kYm94ZWQ9ITE7aWYoWCl7bGV0IFU9T0coWCxbXCJkZW5pZWREb21haW5zXCJdKTtpZihYLmFsbG93TWFuYWdlZERvbWFpbnNPbmx5PT09ITApVS5hbGxvd01hbmFnZWREb21haW5zT25seT0hMDtpZihRLnNhbmRib3g/Lm5ldHdvcms/LmFsbG93TWFuYWdlZERvbWFpbnNPbmx5IT09ITAmJlguYWxsb3dlZERvbWFpbnMpVS5hbGxvd2VkRG9tYWlucz1YLmFsbG93ZWREb21haW5zO2lmKE9iamVjdC5rZXlzKFUpLmxlbmd0aD4wKUcubmV0d29yaz1VfWlmKFcpe2xldCBVPU9HKFcsW1wiZGVueVJlYWRcIixcImRlbnlXcml0ZVwiXSk7aWYoVy5hbGxvd01hbmFnZWRSZWFkUGF0aHNPbmx5PT09ITApVS5hbGxvd01hbmFnZWRSZWFkUGF0aHNPbmx5PSEwO2lmKFEuc2FuZGJveD8uZmlsZXN5c3RlbT8uYWxsb3dNYW5hZ2VkUmVhZFBhdGhzT25seSE9PSEwJiZXLmFsbG93UmVhZClVLmFsbG93UmVhZD1XLmFsbG93UmVhZDtpZihPYmplY3Qua2V5cyhVKS5sZW5ndGg+MClHLmZpbGVzeXN0ZW09VX1pZihPYmplY3Qua2V5cyhHKS5sZW5ndGg+MClKLnNhbmRib3g9R31yZXR1cm4gSn1mdW5jdGlvbiBLXygkKXtpZigkLmhlbHBlcj8uKCkpcmV0dXJuXCJoZWxwZXJcIjtpZihXXygkKS5zZXR0aW5ncylyZXR1cm5cInJlbW90ZVwiO2lmKFlfKCQpLnNldHRpbmdzKXJldHVybiBtMCgpPT09XCJtYWNvc1wiP1wicGxpc3RcIjpcImhrbG1cIjtpZigoJC5maWxlPy4oKT8/WF8oJCkpLnNldHRpbmdzKXJldHVyblwiZmlsZVwiO2lmKEdfKCkuc2V0dGluZ3MpcmV0dXJuXCJwYXJlbnRcIjtsZXQgUT0kLmhrY3U/LigpO3JldHVybiBRJiZPYmplY3Qua2V5cyhRLnNldHRpbmdzKS5sZW5ndGg+MD9cImhrY3VcIjpudWxsfWZ1bmN0aW9uIHc2JCgkKXtsZXQgUT1bXSx7c2V0dGluZ3M6SixlcnJvcnM6WX09V18oJCk7US5wdXNoKC4uLlkpO2xldHtzZXR0aW5nczpYLGVycm9yczpXfT1ZXygkKTtRLnB1c2goLi4uVyk7bGV0e3NldHRpbmdzOkcsZXJyb3JzOlV9PSQuZmlsZT8uKCk/P1hfKCQpO1EucHVzaCguLi5VKTtsZXR7c2V0dGluZ3M6SCxlcnJvcnM6cX09R18oKTtRLnB1c2goLi4ucSk7bGV0IFY9W0osWCxHXS5maWx0ZXIoKHcpPT53IT09bnVsbCksQj1WWzBdPz9udWxsLHo9e2FsbG93TWFuYWdlZFBlcm1pc3Npb25SdWxlc09ubHk6Vi5zb21lKCh3KT0+dy5hbGxvd01hbmFnZWRQZXJtaXNzaW9uUnVsZXNPbmx5PT09ITApfHx2b2lkIDAsZm9yY2VMb2dpbk9yZ1VVSUQ6Vi5maW5kKCh3KT0+dy5mb3JjZUxvZ2luT3JnVVVJRCE9PXZvaWQgMCk/LmZvcmNlTG9naW5PcmdVVUlELGFsbG93ZWRNY3BTZXJ2ZXJzOlYuZmluZCgodyk9PncuYWxsb3dlZE1jcFNlcnZlcnMhPT12b2lkIDApPy5hbGxvd2VkTWNwU2VydmVycyxzYW5kYm94OntuZXR3b3JrOnthbGxvd01hbmFnZWREb21haW5zT25seTpWLnNvbWUoKHcpPT53LnNhbmRib3g/Lm5ldHdvcms/LmFsbG93TWFuYWdlZERvbWFpbnNPbmx5PT09ITApfHx2b2lkIDB9LGZpbGVzeXN0ZW06e2FsbG93TWFuYWdlZFJlYWRQYXRoc09ubHk6Vi5zb21lKCh3KT0+dy5zYW5kYm94Py5maWxlc3lzdGVtPy5hbGxvd01hbmFnZWRSZWFkUGF0aHNPbmx5PT09ITApfHx2b2lkIDB9fX0sTj1IJiZ6NiQoQik/TjYkKEgseik6bnVsbDtyZXR1cm57dGllcnM6VixhZG1pbjpCLHBhcmVudFNsaWNlOk4sZXJyb3JzOlF9fWZ1bmN0aW9uIHFfKCQpe2xldCBRPSQuaGVscGVyPy4oKTtpZihRKXJldHVybntzZXR0aW5nczpRLGVycm9yczokLmhlbHBlcldhcm5pbmdzPy4oKT8/W119O2xldHthZG1pbjpKLHBhcmVudFNsaWNlOlksZXJyb3JzOlh9PXc2JCgkKTtpZighSiYmIVkpe2xldCBXPSQuaGtjdT8uKCk7aWYoVyYmT2JqZWN0LmtleXMoVy5zZXR0aW5ncykubGVuZ3RoPjApcmV0dXJue3NldHRpbmdzOlcuc2V0dGluZ3MsZXJyb3JzOlsuLi5YLC4uLlcuZXJyb3JzXX07cmV0dXJue3NldHRpbmdzOm51bGwsZXJyb3JzOlsuLi5YLC4uLlc/LmVycm9ycz8/W11dfX1yZXR1cm57c2V0dGluZ3M6RzEoe30sWT8/e30sSj8/e30sbzEpLGVycm9yczpYfX1mdW5jdGlvbiBPNiQoJCxRKXtpZigkPT09XCJwb2xpY3lTZXR0aW5nc1wiKXJldHVybiBxXyhRKS5zZXR0aW5ncztsZXQgSj1LWCgkKSx7c2V0dGluZ3M6WX09Sj9ERyhKLFEpOntzZXR0aW5nczpudWxsfTtpZigkPT09XCJmbGFnU2V0dGluZ3NcIil7bGV0e3NldHRpbmdzOlh9PVVfKCk7aWYoWClyZXR1cm4gRzEoWXx8e30sWCxvMSl9cmV0dXJuIFl9ZnVuY3Rpb24gRDYkKCQsUSl7cmV0dXJuIGY1KFsuLi4kLC4uLlFdKX1mdW5jdGlvbiBvMSgkLFEpe2lmKEFycmF5LmlzQXJyYXkoJCkmJkFycmF5LmlzQXJyYXkoUSkpcmV0dXJuIEQ2JCgkLFEpO3JldHVybn12YXIgY3o9ITE7ZnVuY3Rpb24gRjYkKCQpe2lmKGN6KXJldHVybntzZXR0aW5nczp7fSxlcnJvcnM6W119O2xldCBRPURhdGUubm93KCk7YUooXCJpbmZvXCIsXCJzZXR0aW5nc19sb2FkX3N0YXJ0ZWRcIiksY3o9ITA7dHJ5e2xldCBKPWhPKCksWT17fTtpZihKKVk9RzEoWSxKLG8xKTtsZXQgWD1bXSxXPW5ldyBTZXQsRz1uZXcgU2V0O2ZvcihsZXQgVSBvZiBVRygpKXtpZihVPT09XCJwb2xpY3lTZXR0aW5nc1wiKXtsZXR7c2V0dGluZ3M6cSxlcnJvcnM6Vn09cV8oJCk7aWYocSlZPUcxKFkscSxvMSk7Zm9yKGxldCBCIG9mIFYpe2xldCB6PWAke0IuZmlsZX06JHtCLnBhdGh9OiR7Qi5tZXNzYWdlfWA7aWYoIVcuaGFzKHopKVcuYWRkKHopLFgucHVzaChCKX1jb250aW51ZX1sZXQgSD1LWChVKTtpZihIKXtsZXQgcT1IWChIKTtpZighRy5oYXMocSkpe0cuYWRkKHEpO2xldHtzZXR0aW5nczpWLGVycm9yczpCfT1ERyhILCQpO2ZvcihsZXQgeiBvZiBCKXtsZXQgTj1gJHt6LmZpbGV9OiR7ei5wYXRofToke3oubWVzc2FnZX1gO2lmKCFXLmhhcyhOKSlXLmFkZChOKSxYLnB1c2goeil9aWYoVilZPUcxKFksVixvMSl9fWlmKFU9PT1cImZsYWdTZXR0aW5nc1wiKXtsZXR7c2V0dGluZ3M6cSxlcnJvcnM6Vn09VV8oKTtmb3IobGV0IEIgb2YgVil7bGV0IHo9YCR7Qi5maWxlfToke0IucGF0aH06JHtCLm1lc3NhZ2V9YDtpZighVy5oYXMoeikpVy5hZGQoeiksWC5wdXNoKEIpfWlmKHEpWT1HMShZLHEsbzEpfX1yZXR1cm4gYUooXCJpbmZvXCIsXCJzZXR0aW5nc19sb2FkX2NvbXBsZXRlZFwiLHtkdXJhdGlvbl9tczpEYXRlLm5vdygpLVEsc291cmNlX2NvdW50Okcuc2l6ZSxlcnJvcl9jb3VudDpYLmxlbmd0aH0pLHtzZXR0aW5nczpZLGVycm9yczpYfX1maW5hbGx5e2N6PSExfX1mdW5jdGlvbiBaNiQoJCl7bGV0IFE9Q08oKTtpZihRIT09bnVsbClyZXR1cm4gUTtsZXQgSj1GNiQoJCk7cmV0dXJuIFRPKEopLEp9ZnVuY3Rpb24gTTYkKCQpe2xldHtzZXR0aW5nczpRfT1aNiQoJCk7cmV0dXJuIFF8fHt9fWZ1bmN0aW9uIFZfKCQpe0IwKCk7bGV0IFE9W107Zm9yKGxldCBKIG9mIFVHKCkpe2xldCBZPUhfKEosJCk7aWYoWSYmT2JqZWN0LmtleXMoWSkubGVuZ3RoPjApUS5wdXNoKHtzb3VyY2U6SixzZXR0aW5nczpZfSl9cmV0dXJue2VmZmVjdGl2ZTpNNiQoJCksc291cmNlczpRfX1mdW5jdGlvbiBCXygkLFEpe2xldCBKPVVHKCk7Zm9yKGxldCBZPUoubGVuZ3RoLTE7WT49MDtZLS0pe2xldCBYPUpbWV07aWYoSF8oWCxRKT8uWyRdIT09dm9pZCAwKXJldHVybiBYfXJldHVybiBudWxsfXZhciBqNiQ9e3VzZXI6XCJ1c2VyU2V0dGluZ3NcIixwcm9qZWN0OlwicHJvamVjdFNldHRpbmdzXCIsbG9jYWw6XCJsb2NhbFNldHRpbmdzXCJ9LHpfPXt1c2VyU2V0dGluZ3M6XCJ1c2VyXCIscHJvamVjdFNldHRpbmdzOlwicHJvamVjdFwiLGxvY2FsU2V0dGluZ3M6XCJsb2NhbFwiLGZsYWdTZXR0aW5nczpcImZsYWdcIixwb2xpY3lTZXR0aW5nczpcIm1hbmFnZWRcIn0sQTYkPVtcInVzZXJcIixcInByb2plY3RcIixcImxvY2FsXCJdLEk2JD1uZXcgU2V0KFtcImJ5cGFzc1Blcm1pc3Npb25zXCIsXCJhdXRvXCIsXCJhY2NlcHRFZGl0c1wiXSksUjYkPW5ldyBTZXQoW1wicHJvamVjdFwiXSk7ZnVuY3Rpb24gUDYkKCQpe2xldCBRPSQuZWZmZWN0aXZlLnBlcm1pc3Npb25zPy5kZWZhdWx0TW9kZTtpZighUXx8IUk2JC5oYXMoUSkpcmV0dXJuICQuZWZmZWN0aXZlO2ZvcihsZXQgSj0kLnNvdXJjZXMubGVuZ3RoLTE7Sj49MDtKLS0pe2xldCBZPSQuc291cmNlc1tKXTtpZihZLnNldHRpbmdzLnBlcm1pc3Npb25zPy5kZWZhdWx0TW9kZSE9PXZvaWQgMCl7aWYoUjYkLmhhcyhZLnNvdXJjZSkpe2xldHtkZWZhdWx0TW9kZTpYLC4uLld9PSQuZWZmZWN0aXZlLnBlcm1pc3Npb25zPz97fTtyZXR1cm57Li4uJC5lZmZlY3RpdmUscGVybWlzc2lvbnM6V319cmV0dXJuICQuZWZmZWN0aXZlfX1yZXR1cm4gJC5lZmZlY3RpdmV9YXN5bmMgZnVuY3Rpb24gTl8oJD17fSl7YXdhaXQgSWIoKTtsZXQgUT1mNygpLEo9ejUoKSxZPUI1KCksWD1WNSgpLFc9eTcoKTt0cnl7RlUoTDYkKCQuY3dkPz9tJCgpLmN3ZCgpKSksalUoKCQuc2V0dGluZ1NvdXJjZXM/P0E2JCkubWFwKCh6KT0+ajYkW3pdKSksTFUoJC5tYW5hZ2VkU2V0dGluZ3M/P251bGwpLE1VKG51bGwpLFpVKHZvaWQgMCk7bGV0IEc9e21kbTpSYixoa2N1OlBiLHdzbEluaGVyaXRzOkViLC4uLiQuc2VydmVyTWFuYWdlZFNldHRpbmdzIT09dm9pZCAwJiZ7cmVtb3RlOigpPT4kLnNlcnZlck1hbmFnZWRTZXR0aW5nc319LHtlZmZlY3RpdmU6VSxzb3VyY2VzOkh9PVZfKEcpLHE9S18oRyk/P3ZvaWQgMCxWPUgubWFwKCh7c291cmNlOnosc2V0dGluZ3M6Tn0pPT4oe3NvdXJjZTp6X1t6XSxzZXR0aW5nczpOLHBhdGg6ej09PVwicG9saWN5U2V0dGluZ3NcIj92b2lkIDA6S1goeiksLi4uej09PVwicG9saWN5U2V0dGluZ3NcIiYme3BvbGljeU9yaWdpbjpxfX0pKSxCPXt9O2ZvcihsZXQgeiBvZiBPYmplY3Qua2V5cyhVKSl7bGV0IE49Ql8oeixHKTtpZihOKUJbel09e3NvdXJjZTp6X1tOXSxwYXRoOk49PT1cInBvbGljeVNldHRpbmdzXCI/dm9pZCAwOktYKE4pLC4uLk49PT1cInBvbGljeVNldHRpbmdzXCImJntwb2xpY3lPcmlnaW46cX19fXJldHVybntlZmZlY3RpdmU6VSxwcm92ZW5hbmNlOkIsc291cmNlczpWfX1maW5hbGx5e0ZVKFEpLGpVKEopLExVKFkpLE1VKFgpLFpVKFcpLEIwKCl9fWFzeW5jIGZ1bmN0aW9uICRBJCgkKXtyZXR1cm4gTl8oJCl9YXN5bmMgZnVuY3Rpb24geTYkKCQsUSl7dHJ5e2F3YWl0IFM2JCgkLFEpfWNhdGNoKEope2lmKCFGMShKKSl0aHJvdyBKfX1hc3luYyBmdW5jdGlvbiBnNiQoJCxRKXtpZighJClyZXR1cm47bGV0IEo9JDt0cnl7bGV0IFk9bCQoJCk7aWYoWT8uY2xhdWRlQWlPYXV0aD8ucmVmcmVzaFRva2VuKWRlbGV0ZSBZLmNsYXVkZUFpT2F1dGgucmVmcmVzaFRva2VuLEo9QiQoWSl9Y2F0Y2h7fWF3YWl0IExfKFEsSix7bW9kZTozODR9KX1mdW5jdGlvbiBoNiQoKXtpZihwcm9jZXNzLnBsYXRmb3JtIT09XCJkYXJ3aW5cIilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZvaWQgMCk7bGV0ICQ9aVooZFopO3JldHVybiBuZXcgUHJvbWlzZSgoUSk9PntFNiQoXCJzZWN1cml0eVwiLFtcImZpbmQtZ2VuZXJpYy1wYXNzd29yZFwiLFwiLWFcIixuWigpLFwiLXdcIixcIi1zXCIsJF0se2VuY29kaW5nOlwidXRmLThcIix0aW1lb3V0OjUwMDB9LChKLFkpPT5RKEo/dm9pZCAwOlkudHJpbSgpfHx2b2lkIDApKX0pfWFzeW5jIGZ1bmN0aW9uIElfKCQsUSxKLFksWD02MDAwMCl7aWYoIUwkKFEpKXJldHVybjtsZXQgVz1KNChKKSxHPWF3YWl0IFQ0KCQubG9hZCh7cHJvamVjdEtleTpXLHNlc3Npb25JZDpRfSksWCxgU2Vzc2lvblN0b3JlLmxvYWQoKSB0aW1lZCBvdXQgYWZ0ZXIgJHtYfW1zIGZvciBzZXNzaW9uICR7UX1gKTtpZighR3x8Ry5sZW5ndGg9PT0wKXJldHVybjtsZXQgVT1oNihUNiQoKSxgY2xhdWRlLXJlc3VtZS0ke3J6KCl9YCk7dHJ5e2xldCBIPWg2KFUsXCJwcm9qZWN0c1wiLFcpO2F3YWl0IHB6KEgse3JlY3Vyc2l2ZTohMH0pO2xldCBxPWg2KEgsYCR7UX0uanNvbmxgKTthd2FpdCBzNyhxLEcpO2xldCBWPVk/LkNMQVVERV9DT05GSUdfRElSPz9wcm9jZXNzLmVudi5DTEFVREVfQ09ORklHX0RJUixCPVY/P2g2KGR6KCksXCIuY2xhdWRlXCIpLHo7dHJ5e3o9YXdhaXQgTV8oaDYoQixcIi5jcmVkZW50aWFscy5qc29uXCIpLFwidXRmLThcIil9Y2F0Y2goTil7aWYoIUYxKE4pKXRocm93IE59aWYoIVYmJiEoWT8/cHJvY2Vzcy5lbnYpLkFOVEhST1BJQ19BUElfS0VZJiYhKFk/P3Byb2Nlc3MuZW52KS5DTEFVREVfQ09ERV9PQVVUSF9UT0tFTil6PWF3YWl0IGg2JCgpPz96O2lmKGF3YWl0IGc2JCh6LGg2KFUsXCIuY3JlZGVudGlhbHMuanNvblwiKSksYXdhaXQgeTYkKGg2KFY/P2R6KCksXCIuY2xhdWRlLmpzb25cIiksaDYoVSxcIi5jbGF1ZGUuanNvblwiKSksJC5saXN0U3Via2V5cyl7bGV0IE49aDYoSCxRKSx3PWF3YWl0IFQ0KCQubGlzdFN1YmtleXMoe3Byb2plY3RLZXk6VyxzZXNzaW9uSWQ6UX0pLFgsYFNlc3Npb25TdG9yZS5saXN0U3Via2V5cygpIHRpbWVkIG91dCBhZnRlciAke1h9bXMgZm9yIHNlc3Npb24gJHtRfWApO2ZvcihsZXQgTyBvZiB3KXtsZXQgRD1xWChOLE8rXCIuanNvbmxcIik7aWYoIU98fGpfKE8pfHxPLnNwbGl0KC9bXFxcXC9dLykuaW5jbHVkZXMoXCIuLlwiKXx8IUQuc3RhcnRzV2l0aChOK296KSl7WCQoYFtTZXNzaW9uU3RvcmVdIHNraXBwaW5nIHVuc2FmZSBzdWJwYXRoIGZyb20gbGlzdFN1YmtleXM6ICR7T31gLHtsZXZlbDpcIndhcm5cIn0pO2NvbnRpbnVlfWxldCBNPWF3YWl0IFQ0KCQubG9hZCh7cHJvamVjdEtleTpXLHNlc3Npb25JZDpRLHN1YnBhdGg6T30pLFgsYFNlc3Npb25TdG9yZS5sb2FkKCkgdGltZWQgb3V0IGFmdGVyICR7WH1tcyBmb3Igc2Vzc2lvbiAke1F9IHN1YnBhdGggJHtPfWApO2lmKCFNfHxNLmxlbmd0aD09PTApY29udGludWU7bGV0IGo9W10sQT1bXTtmb3IobGV0IGsgb2YgTSlpZihFXyhrKSlqLnB1c2goayk7ZWxzZSBBLnB1c2goayk7aWYoQS5sZW5ndGg+MClhd2FpdCBweih3XyhEKSx7cmVjdXJzaXZlOiEwfSksYXdhaXQgczcoRCxBKTtpZihqLmxlbmd0aD4wKXtsZXQgaz1qLmF0KC0xKSx1PXFYKE4sTytcIi5tZXRhLmpzb25cIik7YXdhaXQgcHood18odSkse3JlY3Vyc2l2ZTohMH0pO2xldHt0eXBlOkckLC4uLmgkfT1rO2F3YWl0IExfKHUsQiQoaCQpLHttb2RlOjM4NH0pfX19cmV0dXJuIFV9Y2F0Y2goSCl7dGhyb3cgYXdhaXQgRkcoVSksSH19ZnVuY3Rpb24gaXooJCxRLEosWSl7bGV0e3N5c3RlbVByb21wdDpYLHNldHRpbmdzOlcsbWFuYWdlZFNldHRpbmdzOkcsc2V0dGluZ1NvdXJjZXM6VSxzYW5kYm94OkgsLi4ucX09JD8/e30sVixCLHo7aWYoWD09PXZvaWQgMClWPVwiXCI7ZWxzZSBpZih0eXBlb2YgWD09PVwic3RyaW5nXCIpVj1YO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShYKSlWPVg7ZWxzZSBpZihYLnR5cGU9PT1cInByZXNldFwiKUI9WC5hcHBlbmQsej1YLmV4Y2x1ZGVEeW5hbWljU2VjdGlvbnM7bGV0IE49cS5wYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZTtpZighTil7bGV0IF82PWY2JChpbXBvcnQubWV0YS51cmwpLG02PUM2JChfNiksczE9RjUoKHQwKT0+bTYucmVzb2x2ZSh0MCkpO2lmKHMxKU49czE7ZWxzZSB0cnl7Tj1tNi5yZXNvbHZlKFwiLi9jbGkuanNcIil9Y2F0Y2h7dGhyb3cgRXJyb3IoYE5hdGl2ZSBDTEkgYmluYXJ5IGZvciAke3Byb2Nlc3MucGxhdGZvcm19LSR7cHJvY2Vzcy5hcmNofSBub3QgZm91bmQuIFJlaW5zdGFsbCBAYW50aHJvcGljLWFpL2NsYXVkZS1hZ2VudC1zZGsgd2l0aG91dCAtLW9taXQ9b3B0aW9uYWwsIG9yIHNldCBvcHRpb25zLnBhdGhUb0NsYXVkZUNvZGVFeGVjdXRhYmxlLmApfX1wcm9jZXNzLmVudi5DTEFVREVfQUdFTlRfU0RLX1ZFUlNJT049XCIwLjIuMTQxXCI7bGV0e2Fib3J0Q29udHJvbGxlcjp3PWEwKCksYWRkaXRpb25hbERpcmVjdG9yaWVzOk89W10sYWdlbnQ6RCxhZ2VudHM6TSxhbGxvd2VkVG9vbHM6aj1bXSxiZXRhczpBLGNhblVzZVRvb2w6ayxjb250aW51ZTp1LGN3ZDpHJCxkZWJ1ZzpoJCxkZWJ1Z0ZpbGU6cyQsZGlzYWxsb3dlZFRvb2xzOnU2PVtdLHRvb2xzOkM0LGVudjpMNCxleGVjdXRhYmxlOm4wPWUwKCk/XCJidW5cIjpcIm5vZGVcIixleGVjdXRhYmxlQXJnczpVMT1bXSxleHRyYUFyZ3M6cjA9e30sZmFsbGJhY2tNb2RlbDphMSxlbmFibGVGaWxlQ2hlY2twb2ludGluZzppLHRvb2xDb25maWc6azksZm9ya1Nlc3Npb246TUcsaG9va3M6bzAsaW5jbHVkZUhvb2tFdmVudHM6djksaW5jbHVkZVBhcnRpYWxNZXNzYWdlczpDOSxmb3J3YXJkU3ViYWdlbnRUZXh0OlZYLG9uRWxpY2l0YXRpb246ZCQscGVyc2lzdFNlc3Npb246WDQsc2Vzc2lvblN0b3JlOmUkLHNlc3Npb25TdG9yZUZsdXNoOlNfLHRoaW5raW5nOlQ5LGVmZm9ydDprXyxtYXhUaGlua2luZ1Rva2VuczpMRyxtYXhUdXJuczp2XyxtYXhCdWRnZXRVc2Q6Q18sdGFza0J1ZGdldDpUXyxtY3BTZXJ2ZXJzOnR6LG1vZGVsOnhfLG91dHB1dEZvcm1hdDpheixwZXJtaXNzaW9uTW9kZTpmXz1cImRlZmF1bHRcIixhbGxvd0Rhbmdlcm91c2x5U2tpcFBlcm1pc3Npb25zOnlfPSExLHBlcm1pc3Npb25Qcm9tcHRUb29sTmFtZTpnXyxwbHVnaW5zOmhfLGdldE9BdXRoVG9rZW46c3osd29ya2xvYWQ6ZXoscmVzdW1lOiROLHJlc3VtZVNlc3Npb25BdDp1XyxzZXNzaW9uSWQ6bV8sc2tpbGxzOlFOLHN0ZGVycjpsXyxzdHJpY3RNY3BDb25maWc6Y199PXE7aWYoZSQmJlg0PT09ITEpdGhyb3cgRXJyb3IoXCJzZXNzaW9uU3RvcmUgY2Fubm90IGJlIHVzZWQgd2l0aCBwZXJzaXN0U2Vzc2lvbjogZmFsc2UgLS0gdGhlIHN0b3JhZ2UgYWRhcHRlciByZXF1aXJlcyBsb2NhbCB3cml0ZXMgdG8gbWlycm9yIGZyb20uIFVzZSBDTEFVREVfQ09ORklHX0RJUj0vdG1wIGZvciBlcGhlbWVyYWwgbG9jYWwgd3JpdGVzIHdpdGggZXh0ZXJuYWwgbWlycm9yaW5nLlwiKTtpZihlJCYmdSYmISROJiYhZSQubGlzdFNlc3Npb25zKXRocm93IEVycm9yKFwiT3B0aW9ucy5jb250aW51ZSB3aXRoIHNlc3Npb25TdG9yZSByZXF1aXJlcyBzdG9yZS5saXN0U2Vzc2lvbnMgdG8gYmUgaW1wbGVtZW50ZWRcIik7aWYoZSQmJmkpdGhyb3cgRXJyb3IoXCJlbmFibGVGaWxlQ2hlY2twb2ludGluZyBpcyBub3QgeWV0IHN1cHBvcnRlZCB3aXRoIHNlc3Npb25TdG9yZSAoYmFja3VwIGJsb2JzIGFyZSBub3QgbWlycm9yZWQsIHNvIHJld2luZEZpbGVzKCkgZmFpbHMgYWZ0ZXIgYSBzdG9yZS1iYWNrZWQgcmVzdW1lKS5cIik7aWYoZSQmJnEuc3Bhd25DbGF1ZGVDb2RlUHJvY2VzcylYJChcInNlc3Npb25TdG9yZSB3aXRoIGN1c3RvbSBzcGF3bkNsYXVkZUNvZGVQcm9jZXNzOiBlbnN1cmUgdGhlIHN1YnByb2Nlc3MgQ0xBVURFX0NPTkZJR19ESVIgbWF0Y2hlcyB0aGUgcGFyZW50IChzYW1lIHBhdGgsIHNhbWUgc2VwYXJhdG9ycykgb3IgdHJhbnNjcmlwdF9taXJyb3IgZnJhbWVzIHdpbGwgYmUgZHJvcHBlZC5cIix7bGV2ZWw6XCJ3YXJuXCJ9KTtsZXQgSk49YXo/LnR5cGU9PT1cImpzb25fc2NoZW1hXCI/YXouc2NoZW1hOnZvaWQgMCxZND1MND97Li4uTDR9OnsuLi5wcm9jZXNzLmVudn07aWYoIVk0LkNMQVVERV9DT0RFX0VOVFJZUE9JTlQpWTQuQ0xBVURFX0NPREVfRU5UUllQT0lOVD1cInNkay10c1wiO2lmKGkpWTQuQ0xBVURFX0NPREVfRU5BQkxFX1NES19GSUxFX0NIRUNLUE9JTlRJTkc9XCJ0cnVlXCI7aWYoc3opWTQuQ0xBVURFX0NPREVfU0RLX0hBU19PQVVUSF9SRUZSRVNIPVwiMVwiO2lmKGs5Py5hc2tVc2VyUXVlc3Rpb24/LnByZXZpZXdGb3JtYXQpWTQuQ0xBVURFX0NPREVfUVVFU1RJT05fUFJFVklFV19GT1JNQVQ9azkuYXNrVXNlclF1ZXN0aW9uLnByZXZpZXdGb3JtYXQ7bGV0IGpHPXt9O2lmKFpHLnByb3BhZ2F0aW9uLmluamVjdChaRy5jb250ZXh0LmFjdGl2ZSgpLGpHKSxcInRyYWNlcGFyZW50XCJpbiBqRyl7Zm9yKGxldCBfNiBvZltcIlRSQUNFUEFSRU5UXCIsXCJUUkFDRVNUQVRFXCJdKWlmKCEoXzYgaW4oTDQ/P3t9KSkpZGVsZXRlIFk0W182XX1mb3IobGV0W182LG02XW9mIE9iamVjdC5lbnRyaWVzKGpHKSl7bGV0IHMxPV82LnRvVXBwZXJDYXNlKCk7aWYoIShzMSBpbihMND8/e30pKSlZNFtzMV09bTZ9bGV0IFhOPXt9LFlOPW5ldyBNYXA7aWYodHopZm9yKGxldFtfNixtNl1vZiBPYmplY3QuZW50cmllcyh0eikpaWYobTYudHlwZT09PVwic2RrXCImJm02Lmluc3RhbmNlKVlOLnNldChfNixtNi5pbnN0YW5jZSk7ZWxzZSBYTltfNl09bTY7bGV0IHg5O2lmKFQ5KXN3aXRjaChUOS50eXBlKXtjYXNlXCJhZGFwdGl2ZVwiOng5PXt0eXBlOlwiYWRhcHRpdmVcIixkaXNwbGF5OlQ5LmRpc3BsYXl9O2JyZWFrO2Nhc2VcImVuYWJsZWRcIjp4OT17dHlwZTpcImVuYWJsZWRcIixidWRnZXRUb2tlbnM6VDkuYnVkZ2V0VG9rZW5zLGRpc3BsYXk6VDkuZGlzcGxheX07YnJlYWs7Y2FzZVwiZGlzYWJsZWRcIjp4OT17dHlwZTpcImRpc2FibGVkXCJ9O2JyZWFrfWVsc2UgaWYoTEchPT12b2lkIDApeDk9TEc9PT0wP3t0eXBlOlwiZGlzYWJsZWRcIn06e3R5cGU6XCJlbmFibGVkXCIsYnVkZ2V0VG9rZW5zOkxHfTtpZihKKVk0LkNMQVVERV9DT05GSUdfRElSPUo7bGV0IFdOPW5ldyBoNyh7YWJvcnRDb250cm9sbGVyOncsYWRkaXRpb25hbERpcmVjdG9yaWVzOk8sYWdlbnQ6RCxiZXRhczpBLGN3ZDpHJCxkZWJ1ZzpoJCxkZWJ1Z0ZpbGU6cyQsZXhlY3V0YWJsZTpuMCxleGVjdXRhYmxlQXJnczpVMSxleHRyYUFyZ3M6ZXo/ey4uLnIwLHdvcmtsb2FkOmV6fTpyMCxwYXRoVG9DbGF1ZGVDb2RlRXhlY3V0YWJsZTpOLGVudjpZNCxmb3JrU2Vzc2lvbjpNRyxzdGRlcnI6bF8sdGhpbmtpbmdDb25maWc6eDksZWZmb3J0OmtfLG1heFR1cm5zOnZfLG1heEJ1ZGdldFVzZDpDXyx0YXNrQnVkZ2V0OlRfLG1vZGVsOnhfLGZhbGxiYWNrTW9kZWw6YTEsanNvblNjaGVtYTpKTixwZXJtaXNzaW9uTW9kZTpmXyxhbGxvd0Rhbmdlcm91c2x5U2tpcFBlcm1pc3Npb25zOnlfLHBlcm1pc3Npb25Qcm9tcHRUb29sTmFtZTpnXyxjb250aW51ZUNvbnZlcnNhdGlvbjplJD92b2lkIDA6dSxyZXN1bWU6JE4scmVzdW1lU2Vzc2lvbkF0OnVfLHNlc3Npb25JZDptXyxzZXR0aW5nczp0eXBlb2YgVz09PVwib2JqZWN0XCI/QiQoVyk6VyxtYW5hZ2VkU2V0dGluZ3M6Rz9CJChHKTp2b2lkIDAsc2V0dGluZ1NvdXJjZXM6VSxza2lsbHM6UU4sYWxsb3dlZFRvb2xzOmosZGlzYWxsb3dlZFRvb2xzOnU2LHRvb2xzOkM0LG1jcFNlcnZlcnM6WE4sc3RyaWN0TWNwQ29uZmlnOmNfLGNhblVzZVRvb2w6ISFrLGhvb2tzOiEhbzAsaW5jbHVkZUhvb2tFdmVudHM6djksaW5jbHVkZVBhcnRpYWxNZXNzYWdlczpDOSxwZXJzaXN0U2Vzc2lvbjpYNCxzZXNzaW9uTWlycm9yOiEhZSQscGx1Z2luczpoXyxzYW5kYm94Okgsc3Bhd25DbGF1ZGVDb2RlUHJvY2VzczpxLnNwYXduQ2xhdWRlQ29kZVByb2Nlc3MsZGVmZXJTcGF3bjpZfSkscF89e3N5c3RlbVByb21wdDpWLGFwcGVuZFN5c3RlbVByb21wdDpCLHBsYW5Nb2RlSW5zdHJ1Y3Rpb25zOnEucGxhbk1vZGVJbnN0cnVjdGlvbnMsYXBwZW5kU3ViYWdlbnRTeXN0ZW1Qcm9tcHQ6cS5hcHBlbmRTdWJhZ2VudFN5c3RlbVByb21wdCxleGNsdWRlRHluYW1pY1NlY3Rpb25zOnosYWdlbnRzOk0sdGl0bGU6cS50aXRsZSxza2lsbHM6UU4sd2ViU2VhcmNoSXNvbGF0aW9uRXhlbXB0TWNwU2VydmVyczpxLndlYlNlYXJjaElzb2xhdGlvbkV4ZW1wdE1jcFNlcnZlcnMscHJvbXB0U3VnZ2VzdGlvbnM6cS5wcm9tcHRTdWdnZXN0aW9ucyxhZ2VudFByb2dyZXNzU3VtbWFyaWVzOnEuYWdlbnRQcm9ncmVzc1N1bW1hcmllcyxmb3J3YXJkU3ViYWdlbnRUZXh0OlZYfSxBRz1uZXcgYzcoV04sUSxrLG8wLHcsWU4sSk4scF8sZCQsc3opO2lmKGUkKXtsZXQgXzY9KCk9Pmg2KFk0LkNMQVVERV9DT05GSUdfRElSPz9oNihkeigpLFwiLmNsYXVkZVwiKSxcInByb2plY3RzXCIpLG02PVNfPT09XCJlYWdlclwiLHMxPW5ldyBDVShhc3luYyh0MCxJRyk9PntsZXQgZjk9Wl8odDAsXzYoKSk7aWYoZjkpYXdhaXQgZSQuYXBwZW5kKGY5LElHKTtlbHNlIFgkKGBbU2Vzc2lvblN0b3JlXSBkcm9wcGluZyBtaXJyb3IgZnJhbWU6IGZpbGVQYXRoICR7dDB9IGlzIG5vdCB1bmRlciAke182KCl9IC0tIHN1YnByb2Nlc3MgQ0xBVURFX0NPTkZJR19ESVIgbGlrZWx5IGRpZmZlcnMgZnJvbSBwYXJlbnQgKGN1c3RvbSBzcGF3bkNsYXVkZUNvZGVQcm9jZXNzIC8gY29udGFpbmVyPylgLHtsZXZlbDpcIndhcm5cIn0pfSx2b2lkIDAsKHQwLElHKT0+e2xldCBmOT1aXyh0MCxfNigpKTtpZihmOSlBRy5yZXBvcnRNaXJyb3JFcnJvcihmOSxJRy5tZXNzYWdlKX0sbTY/MDpNNSxtNj8wOkw1KTtBRy5zZXRUcmFuc2NyaXB0TWlycm9yQmF0Y2hlcihzMSl9cmV0dXJue3F1ZXJ5SW5zdGFuY2U6QUcsdHJhbnNwb3J0OldOLGFib3J0Q29udHJvbGxlcjp3LHByb2Nlc3NFbnY6WTR9fWZ1bmN0aW9uIG56KCQsUSxKLFkpe2lmKHR5cGVvZiBKPT09XCJzdHJpbmdcIilRLndyaXRlKEIkKHt0eXBlOlwidXNlclwiLHNlc3Npb25faWQ6XCJcIixtZXNzYWdlOntyb2xlOlwidXNlclwiLGNvbnRlbnQ6W3t0eXBlOlwidGV4dFwiLHRleHQ6Sn1dfSxwYXJlbnRfdG9vbF91c2VfaWQ6bnVsbH0pK2BcbmApO2Vsc2UgJC5zdHJlYW1JbnB1dChKKS5jYXRjaCgoWCk9PlkuYWJvcnQoWCkpfXZhciB1NiQ9bmV3IFNldChbXCJFQlVTWVwiLFwiRU1GSUxFXCIsXCJFTkZJTEVcIixcIkVOT1RFTVBUWVwiLFwiRVBFUk1cIl0pO2FzeW5jIGZ1bmN0aW9uIEZHKCQpe2ZvcihsZXQgUT0wOztRKyspdHJ5e3JldHVybiBhd2FpdCB2NiQoJCx7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSl9Y2F0Y2goSil7aWYoUT49NHx8IXU2JC5oYXMobyQoSik/P1wiXCIpKXJldHVybjthd2FpdCB6WCgoUSsxKSoxMDApfX1mdW5jdGlvbiBtNiQoJCxRKXskLndhaXRGb3JFeGl0KCkuY2F0Y2goKCk9Pnt9KS5maW5hbGx5KCgpPT5GRyhRKSl9ZnVuY3Rpb24gUUEkKHtwcm9tcHQ6JCxvcHRpb25zOlF9KXtpZigoUT8ucmVzdW1lfHxRPy5jb250aW51ZSkmJlE/LnNlc3Npb25TdG9yZSl7bGV0e3F1ZXJ5SW5zdGFuY2U6Vyx0cmFuc3BvcnQ6RyxhYm9ydENvbnRyb2xsZXI6VSxwcm9jZXNzRW52Okh9PWl6KHsuLi5RfSx0eXBlb2YgJD09PVwic3RyaW5nXCIsdm9pZCAwLCEwKSxxPXFYKFEuY3dkPz9cIi5cIiksVj1RLnNlc3Npb25TdG9yZSxCPVEubG9hZFRpbWVvdXRNcz8/NjAwMDAsej1RLnJlc3VtZTtyZXR1cm4oYXN5bmMoKT0+e2lmKCF6KXo9KGF3YWl0IFQ0KFYubGlzdFNlc3Npb25zKEo0KHEpKSxCLGBTZXNzaW9uU3RvcmUubGlzdFNlc3Npb25zKCkgdGltZWQgb3V0IGFmdGVyICR7Qn1tc2ApKS5zbGljZSgpLnNvcnQoKE8sRCk9PkQubXRpbWUtTy5tdGltZSlbMF0/LnNlc3Npb25JZDtpZigheilyZXR1cm47cmV0dXJuIElfKFYseixxLFEuZW52LFEubG9hZFRpbWVvdXRNcyl9KSgpLnRoZW4oKHcpPT57aWYodylHLnVwZGF0ZVJlc3VtZSh6KSxHLnVwZGF0ZUVudih7Q0xBVURFX0NPTkZJR19ESVI6d30pLEguQ0xBVURFX0NPTkZJR19ESVI9dyxXLmFkZENsZWFudXBDYWxsYmFjaygoKT0+bTYkKEcsdykpO2lmKCFXLmlzQ2xvc2VkKCkpRy5zcGF3bigpfSkuY2F0Y2goKHcpPT57bGV0IE89STQodyk7Ry5zcGF3bkFib3J0KE8pLFcuc2V0RXJyb3IoTyl9KSxueihXLEcsJCxVKSxXfWxldHtxdWVyeUluc3RhbmNlOkosdHJhbnNwb3J0OlksYWJvcnRDb250cm9sbGVyOlh9PWl6KFEsdHlwZW9mICQ9PT1cInN0cmluZ1wiKTtyZXR1cm4gbnooSixZLCQsWCksSn1hc3luYyBmdW5jdGlvbiBKQSQoe29wdGlvbnM6JCxpbml0aWFsaXplVGltZW91dE1zOlE9NjAwMDB9PXt9KXtsZXQgSixZPSQ/LnJlc3VtZTtpZigoWXx8JD8uY29udGludWUpJiYkPy5zZXNzaW9uU3RvcmUpe2xldCBVPXFYKCQuY3dkPz9cIi5cIik7aWYoIVkpe2lmKCEkLnNlc3Npb25TdG9yZS5saXN0U2Vzc2lvbnMpdGhyb3cgRXJyb3IoXCJPcHRpb25zLmNvbnRpbnVlIHdpdGggc2Vzc2lvblN0b3JlIHJlcXVpcmVzIHN0b3JlLmxpc3RTZXNzaW9ucyB0byBiZSBpbXBsZW1lbnRlZFwiKTtsZXQgSD0kLmxvYWRUaW1lb3V0TXM/PzYwMDAwO1k9KGF3YWl0IFQ0KCQuc2Vzc2lvblN0b3JlLmxpc3RTZXNzaW9ucyhKNChVKSksSCxgU2Vzc2lvblN0b3JlLmxpc3RTZXNzaW9ucygpIHRpbWVkIG91dCBhZnRlciAke0h9bXNgKSkuc2xpY2UoKS5zb3J0KChWLEIpPT5CLm10aW1lLVYubXRpbWUpWzBdPy5zZXNzaW9uSWR9aWYoWSlKPWF3YWl0IElfKCQuc2Vzc2lvblN0b3JlLFksVSwkLmVudiwkLmxvYWRUaW1lb3V0TXMpfWxldCBYLFcsRzt0cnl7bGV0IHo9ZnVuY3Rpb24oKXtpZihCKXJldHVybjtCPSEwLFYuY2xvc2UoKX0sVT1peihKJiZZJiZZIT09JD8ucmVzdW1lP3suLi4kLHJlc3VtZTpZfTokLCExLEopO1g9VS5xdWVyeUluc3RhbmNlO2xldHt0cmFuc3BvcnQ6SCxhYm9ydENvbnRyb2xsZXI6cX09VTtXPUg7bGV0IFY9VS5xdWVyeUluc3RhbmNlO2lmKEope2xldCBOPUo7Vi5hZGRDbGVhbnVwQ2FsbGJhY2soKCk9PntHPUgud2FpdEZvckV4aXQoKS5jYXRjaCgoKT0+e30pLnRoZW4oKCk9PkZHKE4pKX0pfWF3YWl0IFQ0KFYuaW5pdGlhbGl6YXRpb25SZXN1bHQoKSxRLGBTdWJwcm9jZXNzIGluaXRpYWxpemF0aW9uIGRpZCBub3QgY29tcGxldGUgd2l0aGluICR7UX1tcyBcdTIwMTQgY2hlY2sgYXV0aGVudGljYXRpb24gYW5kIG5ldHdvcmsgY29ubmVjdGl2aXR5YCk7bGV0IEI9ITE7cmV0dXJue3F1ZXJ5KE4pe2lmKEIpdGhyb3cgRXJyb3IoXCJXYXJtUXVlcnkucXVlcnkoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZVwiKTtCPSEwO3RyeXtueihWLEgsTixxKX1jYXRjaCh3KXt0aHJvdyBWLmNsb3NlKCksd31pZih0eXBlb2YgTj09PVwic3RyaW5nXCIpVi5zZXRJc1NpbmdsZVVzZXJUdXJuKCEwKTtyZXR1cm4gVn0sY2xvc2U6eixhc3luY1tTeW1ib2wuYXN5bmNEaXNwb3NlXSgpe0I9ITAsVi5jbG9zZSgpLGF3YWl0IEd9fX1jYXRjaChVKXtpZihYPy5jbG9zZSgpLEomJiFHKXtsZXQgSD1XO0c9KEg/SC53YWl0Rm9yRXhpdCgpLmNhdGNoKCgpPT57fSk6UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9PkZHKEopKX10aHJvdyBhd2FpdCBHLFV9fWZ1bmN0aW9uIFhBJCgkKXtyZXR1cm4gX0goJCl9ZnVuY3Rpb24gWUEkKCQsUSl7cmV0dXJuIHFaKCQsUSl9YXN5bmMgZnVuY3Rpb24gV0EkKCQsUSl7bGV0IFk9W107dHJ5e2NvbnN0IEo9WiQoWSxfSChRKSwxKTthd2FpdCBKLnNlbmQoJCk7Zm9yIGF3YWl0KGxldCBIIG9mIEouc3RyZWFtKCkpaWYoSC50eXBlPT09XCJyZXN1bHRcIilyZXR1cm4gSDt0aHJvdyBFcnJvcihcIlNlc3Npb24gZW5kZWQgd2l0aG91dCByZXN1bHQgbWVzc2FnZVwiKX1jYXRjaChYKXt2YXIgVz1YLEc9MX1maW5hbGx5e3ZhciBVPU0kKFksVyxHKTtVJiZhd2FpdCBVfX1hc3luYyBmdW5jdGlvbiBHQSQoJCxRKXtpZihRPy5zZXNzaW9uU3RvcmUpcmV0dXJuIGQ2JChRLnNlc3Npb25TdG9yZSwkLFEpO3JldHVybiBNWigkLFEpfWFzeW5jIGZ1bmN0aW9uIFVBJCgkKXtpZigkPy5zZXNzaW9uU3RvcmUpcmV0dXJuIGM2JCgkLnNlc3Npb25TdG9yZSwkKTtyZXR1cm4galooJCl9YXN5bmMgZnVuY3Rpb24gSEEkKCQsUSl7aWYoUT8uc2Vzc2lvblN0b3JlKXJldHVybiBpNiQoUS5zZXNzaW9uU3RvcmUsJCxRKTtyZXR1cm4gQVooJCxRKX1hc3luYyBmdW5jdGlvbiBLQSQoJCxRLEope2lmKEo/LnNlc3Npb25TdG9yZSlyZXR1cm4gbjYkKEouc2Vzc2lvblN0b3JlLCQsUSxKLmRpcik7cmV0dXJuIEVaKCQsUSxKKX1hc3luYyBmdW5jdGlvbiBxQSQoJCxRLEope2lmKEo/LnNlc3Npb25TdG9yZSlyZXR1cm4gcjYkKEouc2Vzc2lvblN0b3JlLCQsUSxKLmRpcik7cmV0dXJuIGJaKCQsUSxKKX1hc3luYyBmdW5jdGlvbiBWQSQoJCxRKXtpZighTCQoJCkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAkeyR9YCk7aWYoUT8uc2Vzc2lvblN0b3JlKXtpZighUS5zZXNzaW9uU3RvcmUuZGVsZXRlKXJldHVybjtsZXQgSj1KNChRLmRpcik7YXdhaXQgUS5zZXNzaW9uU3RvcmUuZGVsZXRlKHtwcm9qZWN0S2V5Okosc2Vzc2lvbklkOiR9KTtyZXR1cm59cmV0dXJuIF9aKCQsUSl9YXN5bmMgZnVuY3Rpb24gQkEkKCQsUSl7aWYoUT8uc2Vzc2lvblN0b3JlKXJldHVybiBvNiQoUS5zZXNzaW9uU3RvcmUsJCxRKTtyZXR1cm4geFooJCxRKX1hc3luYyBmdW5jdGlvbiB6QSQoJCxRLEope2lmKCFMJCgkKSl0aHJvdyBFcnJvcihgSW52YWxpZCBzZXNzaW9uSWQ6ICR7JH1gKTtsZXQgWT1hd2FpdCBqMSgkLEo/LmRpcik7aWYoIVkpdGhyb3cgRXJyb3IoYFNlc3Npb24gJHskfSBub3QgZm91bmRgKTtsZXQgWD1KNChKPy5kaXIpLFc9Sj8uYmF0Y2hTaXplJiZKLmJhdGNoU2l6ZT4wP0ouYmF0Y2hTaXplOk01O2lmKGF3YWl0IE9fKFkuZmlsZVBhdGgse3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6JH0sUSxXKSxKPy5pbmNsdWRlU3ViYWdlbnRzPT09ITEpcmV0dXJuO2xldCBHPVkuZmlsZVBhdGgucmVwbGFjZSgvXFwuanNvbmwkLyxcIlwiKSxVPWg2KEcsXCJzdWJhZ2VudHNcIik7Zm9yKGxldCBIIG9mIGF3YWl0IGw2JChVKSl7bGV0IHE9QV8oRyxIKS5zcGxpdChveik7cVtxLmxlbmd0aC0xXT1xLmF0KC0xKS5yZXBsYWNlKC9cXC5qc29ubCQvLFwiXCIpO2xldCBWPXtwcm9qZWN0S2V5Olgsc2Vzc2lvbklkOiQsc3VicGF0aDpxLmpvaW4oXCIvXCIpfTthd2FpdCBPXyhILFYsUSxXKTtsZXQgQj1ILnJlcGxhY2UoL1xcLmpzb25sJC8sXCIubWV0YS5qc29uXCIpO3RyeXtsZXQgej1sJChhd2FpdCBNXyhCLFwidXRmOFwiKSk7YXdhaXQgUS5hcHBlbmQoVixbe3R5cGU6XCJhZ2VudF9tZXRhZGF0YVwiLC4uLnp9XSl9Y2F0Y2goeil7aWYoIUYxKHopKXRocm93IHp9fX1hc3luYyBmdW5jdGlvbiBPXygkLFEsSixZKXtsZXQgWD14NiQoe2lucHV0OmI2JCgkLHtlbmNvZGluZzpcInV0ZjhcIn0pLGNybGZEZWxheToxLzB9KSxXPVtdLEc9MDtmb3IgYXdhaXQobGV0IFUgb2YgWCl7aWYoIVUpY29udGludWU7aWYoVy5wdXNoKGwkKFUpKSxHKz1VLmxlbmd0aCxXLmxlbmd0aD49WXx8Rz49TDUpYXdhaXQgSi5hcHBlbmQoUSxXKSxXPVtdLEc9MH1pZihXLmxlbmd0aD4wKWF3YWl0IEouYXBwZW5kKFEsVyl9YXN5bmMgZnVuY3Rpb24gbDYkKCQpe2xldCBRPVtdO2FzeW5jIGZ1bmN0aW9uIEooWSl7bGV0IFg7dHJ5e1g9YXdhaXQgazYkKFkse3dpdGhGaWxlVHlwZXM6ITB9KX1jYXRjaHtyZXR1cm59Zm9yKGxldCBXIG9mIFgpe2xldCBHPWg2KFksVy5uYW1lKTtpZihXLmlzRGlyZWN0b3J5KCkpYXdhaXQgSihHKTtlbHNlIGlmKFcuaXNGaWxlKCkmJlcubmFtZS5lbmRzV2l0aChcIi5qc29ubFwiKSlRLnB1c2goRyl9fXJldHVybiBhd2FpdCBKKCQpLFF9YXN5bmMgZnVuY3Rpb24gTkEkKCQsUSl7aWYoUT8uc2Vzc2lvblN0b3JlKXJldHVybiB0NiQoUS5zZXNzaW9uU3RvcmUsJCxRLmRpcik7cmV0dXJuIHVaKCQsUSl9YXN5bmMgZnVuY3Rpb24gd0EkKCQsUSxKKXtpZihKPy5zZXNzaW9uU3RvcmUpcmV0dXJuIGE2JChKLnNlc3Npb25TdG9yZSwkLFEsSik7cmV0dXJuIG1aKCQsUSxKKX1mdW5jdGlvbiBSXygkKXtsZXQgUT1xWCgkPz9cIi5cIiksSjt0cnl7Sj1fNiQoUSl9Y2F0Y2h7Sj1RfXJldHVybiBKLm5vcm1hbGl6ZShcIk5GQ1wiKX1mdW5jdGlvbiBKNCgkKXtyZXR1cm4gTTAoUl8oJCkpfWZ1bmN0aW9uIFBfKCQpe3JldHVybiAkLm1hcCgoUSk9PkIkKFEpKS5qb2luKGBcbmApK2BcbmB9ZnVuY3Rpb24gRF8oJCxRLEope2lmKFEhPT12b2lkIDAmJlE+MClyZXR1cm4gJC5zbGljZShKLEorUSk7aWYoSj4wKXJldHVybiAkLnNsaWNlKEopO3JldHVybiAkfWZ1bmN0aW9uIEVfKCQpe3JldHVybiB0eXBlb2YgJD09PVwib2JqZWN0XCImJiQhPT1udWxsJiZcInR5cGVcImluICQmJiQudHlwZT09PVwiYWdlbnRfbWV0YWRhdGFcIn1hc3luYyBmdW5jdGlvbiBjNiQoJCxRKXtsZXQgSj1SXyhRLmRpciksWT1NMChKKSxYPVEub2Zmc2V0Pz8wLFc9US5saW1pdDtpZigkLmxpc3RTZXNzaW9uU3VtbWFyaWVzKXtsZXQgcT1hd2FpdCAkLmxpc3RTZXNzaW9uU3VtbWFyaWVzKFkpLFY9JC5saXN0U2Vzc2lvbnM/bmV3IE1hcCgoYXdhaXQgJC5saXN0U2Vzc2lvbnMoWSkpLm1hcCgodyk9Plt3LnNlc3Npb25JZCx3XSkpOnZvaWQgMCxCPVtdO2ZvcihsZXQgdyBvZiBxKXtsZXQgTz1WPy5nZXQody5zZXNzaW9uSWQpO2lmKFYmJiFPKWNvbnRpbnVlO2xldCBEPU8hPT12b2lkIDAmJncubXRpbWU8Ty5tdGltZTtCLnB1c2goe3Nlc3Npb25JZDp3LnNlc3Npb25JZCxtdGltZTpEP08ubXRpbWU6dy5tdGltZSxpbmZvOkQ/dm9pZCAwOkdOKHcsSil9KX1pZihWKXtsZXQgdz1uZXcgU2V0KHEubWFwKChPKT0+Ty5zZXNzaW9uSWQpKTtmb3IobGV0W08sRF1vZiBWKWlmKCF3LmhhcyhPKSlCLnB1c2goe3Nlc3Npb25JZDpPLG10aW1lOkQubXRpbWV9KX1lbHNlIFgkKFwibGlzdFNlc3Npb25TdW1tYXJpZXMgd2l0aG91dCBsaXN0U2Vzc2lvbnM6IGdhcC1maWxsIHNraXBwZWQ7IHNlc3Npb25zIGxhY2tpbmcgYSBzaWRlY2FyIHdpbGwgYmUgb21pdHRlZFwiKTtCLnNvcnQoKHcsTyk9Pk8ubXRpbWUtdy5tdGltZSk7bGV0IHo9RF8oQixXLFgpLE49ei5maWx0ZXIoKHcpPT53LmluZm89PT12b2lkIDApO2lmKE4ubGVuZ3RoPjApe2xldCB3PWF3YWl0IEZfKCQsTixRLmRpcixKKSxPPW5ldyBNYXAody5tYXAoKEQpPT5bRC5zZXNzaW9uSWQsRF0pKTtmb3IobGV0IEQgb2YgeilpZihELmluZm89PT12b2lkIDApRC5pbmZvPU8uZ2V0KEQuc2Vzc2lvbklkKT8/bnVsbH1yZXR1cm4gei5mbGF0TWFwKCh3KT0+dy5pbmZvP1t3LmluZm9dOltdKX1pZighJC5saXN0U2Vzc2lvbnMpdGhyb3cgRXJyb3IoXCJzZXNzaW9uU3RvcmUubGlzdFNlc3Npb25zIGlzIG5vdCBpbXBsZW1lbnRlZCAtLSBjYW5ub3QgbGlzdCBzZXNzaW9ucy4gUHJvdmlkZSBhIHN0b3JlIHdpdGggYSBsaXN0U2Vzc2lvbnMoKSBtZXRob2QuXCIpO2xldCBVPShhd2FpdCAkLmxpc3RTZXNzaW9ucyhZKSkuc2xpY2UoKS5zb3J0KChxLFYpPT5WLm10aW1lLXEubXRpbWUpLEg9RF8oVSxXLFgpO3JldHVybiBGXygkLEgsUS5kaXIsSil9YXN5bmMgZnVuY3Rpb24gRl8oJCxRLEosWSl7cmV0dXJuKGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChRLm1hcChhc3luYyhXKT0+e2xldCBHPWF3YWl0IF9fKCQsVy5zZXNzaW9uSWQsSik7aWYoIUcpcmV0dXJuIG51bGw7bGV0IFU9QzgoVy5zZXNzaW9uSWQsYl8oRyxXLm10aW1lKSxZKTtyZXR1cm4gVT97Li4uVSxsYXN0TW9kaWZpZWQ6Vy5tdGltZX06bnVsbH0pKSkuZmxhdE1hcCgoVyxHKT0+e2xldCBVPVFbR107aWYoVy5zdGF0dXM9PT1cImZ1bGZpbGxlZFwiKXJldHVybiBXLnZhbHVlP1tXLnZhbHVlXTpbXTtyZXR1cm5be3Nlc3Npb25JZDpVLnNlc3Npb25JZCxzdW1tYXJ5OlwiXCIsbGFzdE1vZGlmaWVkOlUubXRpbWV9XX0pfWZ1bmN0aW9uIGJfKCQsUSl7bGV0IEo9QnVmZmVyLmZyb20oJCxcInV0Zi04XCIpLFk9Si5sZW5ndGgsWD1KLnN1YmFycmF5KDAsVTQpLnRvU3RyaW5nKFwidXRmLThcIiksVz1ZPlU0P0ouc3ViYXJyYXkoWS1VNCkudG9TdHJpbmcoXCJ1dGYtOFwiKTpYO3JldHVybnttdGltZTpRLHNpemU6WSxoZWFkOlgsdGFpbDpXfX1mdW5jdGlvbiBwNiQoJCl7bGV0IFE9JC50cmltRW5kKCksSj1RLnNsaWNlKFEubGFzdEluZGV4T2YoYFxuYCkrMSk7dHJ5e2xldCBZPWwkKEopO2lmKHR5cGVvZiBZPT09XCJvYmplY3RcIiYmWSE9PW51bGwmJlwidGltZXN0YW1wXCJpbiBZJiZ0eXBlb2YgWS50aW1lc3RhbXA9PT1cInN0cmluZ1wiKXtsZXQgWD1EYXRlLnBhcnNlKFkudGltZXN0YW1wKTtpZighTnVtYmVyLmlzTmFOKFgpKXJldHVybiBYfX1jYXRjaHt9cmV0dXJuIERhdGUubm93KCl9YXN5bmMgZnVuY3Rpb24gX18oJCxRLEope2xldCBZPUo0KEopLFg9YXdhaXQgJC5sb2FkKHtwcm9qZWN0S2V5Olksc2Vzc2lvbklkOlF9KTtpZighWHx8WC5sZW5ndGg9PT0wKXJldHVybiBudWxsO3JldHVybiBQXyhYKX1hc3luYyBmdW5jdGlvbiBkNiQoJCxRLEope2lmKCFMJChRKSlyZXR1cm5bXTtsZXQgWT1KNChKLmRpciksWD1hd2FpdCAkLmxvYWQoe3Byb2plY3RLZXk6WSxzZXNzaW9uSWQ6UX0pO2lmKCFYfHxYLmxlbmd0aD09PTApcmV0dXJuW107cmV0dXJuIEZaKFgse2xpbWl0OkoubGltaXQsb2Zmc2V0Okoub2Zmc2V0LGluY2x1ZGVTeXN0ZW1NZXNzYWdlczpKLmluY2x1ZGVTeXN0ZW1NZXNzYWdlc30pfWFzeW5jIGZ1bmN0aW9uIGk2JCgkLFEsSil7aWYoIUwkKFEpKXJldHVybjtsZXQgWT1hd2FpdCBfXygkLFEsSi5kaXIpO2lmKCFZKXJldHVybjtsZXQgWD1iXyhZLHA2JChZKSk7cmV0dXJuIEM4KFEsWCk/P3ZvaWQgMH1hc3luYyBmdW5jdGlvbiBuNiQoJCxRLEosWSl7aWYoIUwkKFEpKXRocm93IEVycm9yKGBJbnZhbGlkIHNlc3Npb25JZDogJHtRfWApO2lmKCFKLnRyaW0oKSl0aHJvdyBFcnJvcihcInRpdGxlIG11c3QgYmUgbm9uLWVtcHR5XCIpO2xldCBYPUo0KFkpO2F3YWl0ICQuYXBwZW5kKHtwcm9qZWN0S2V5Olgsc2Vzc2lvbklkOlF9LFt7dHlwZTpcImN1c3RvbS10aXRsZVwiLGN1c3RvbVRpdGxlOkoudHJpbSgpLHNlc3Npb25JZDpRLHV1aWQ6cnooKSx0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfV0pfWFzeW5jIGZ1bmN0aW9uIHI2JCgkLFEsSixZKXtpZighTCQoUSkpdGhyb3cgRXJyb3IoYEludmFsaWQgc2Vzc2lvbklkOiAke1F9YCk7aWYoSiE9PW51bGwpe2xldCBXPUYwKEopLnRyaW0oKTtpZighVyl0aHJvdyBFcnJvcihcInRhZyBtdXN0IGJlIG5vbi1lbXB0eSAodXNlIG51bGwgdG8gY2xlYXIpXCIpO0o9V31sZXQgWD1KNChZKTthd2FpdCAkLmFwcGVuZCh7cHJvamVjdEtleTpYLHNlc3Npb25JZDpRfSxbe3R5cGU6XCJ0YWdcIix0YWc6Sj8/XCJcIixzZXNzaW9uSWQ6USx1dWlkOnJ6KCksdGltZXN0YW1wOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX1dKX1hc3luYyBmdW5jdGlvbiBvNiQoJCxRLEope2lmKCFMJChRKSl0aHJvdyBFcnJvcihgSW52YWxpZCBzZXNzaW9uSWQ6ICR7UX1gKTtpZihKLnVwVG9NZXNzYWdlSWQmJiFMJChKLnVwVG9NZXNzYWdlSWQpKXRocm93IEVycm9yKGBJbnZhbGlkIHVwVG9NZXNzYWdlSWQ6ICR7Si51cFRvTWVzc2FnZUlkfWApO2xldCBZPUo0KEouZGlyKSxYPWF3YWl0ICQubG9hZCh7cHJvamVjdEtleTpZLHNlc3Npb25JZDpRfSk7aWYoIVh8fFgubGVuZ3RoPT09MCl0aHJvdyBFcnJvcihgU2Vzc2lvbiAke1F9IG5vdCBmb3VuZGApO2xldHtlbnRyaWVzOlcsZm9ya2VkU2Vzc2lvbklkOkd9PWZaKFgsUSxKKTtyZXR1cm4gYXdhaXQgJC5hcHBlbmQoe3Byb2plY3RLZXk6WSxzZXNzaW9uSWQ6R30sVykse3Nlc3Npb25JZDpHfX1hc3luYyBmdW5jdGlvbiB0NiQoJCxRLEope2lmKCFMJChRKSlyZXR1cm5bXTtpZighJC5saXN0U3Via2V5cyl0aHJvdyBFcnJvcihcInNlc3Npb25TdG9yZS5saXN0U3Via2V5cyBpcyBub3QgaW1wbGVtZW50ZWQgLS0gY2Fubm90IGxpc3Qgc3ViYWdlbnRzLiBQcm92aWRlIGEgc3RvcmUgd2l0aCBhIGxpc3RTdWJrZXlzKCkgbWV0aG9kLlwiKTtsZXQgWT1KNChKKSxYPWF3YWl0ICQubGlzdFN1YmtleXMoe3Byb2plY3RLZXk6WSxzZXNzaW9uSWQ6UX0pLFc9bmV3IFNldDtmb3IobGV0IEcgb2YgWCl7aWYoIUcuc3RhcnRzV2l0aChcInN1YmFnZW50cy9cIikpY29udGludWU7bGV0IFU9Ry5zcGxpdChcIi9cIikuYXQoLTEpO2lmKFUuc3RhcnRzV2l0aChcImFnZW50LVwiKSlXLmFkZChVLnNsaWNlKDYpKX1yZXR1cm5bLi4uV119YXN5bmMgZnVuY3Rpb24gYTYkKCQsUSxKLFkpe2lmKCFMJChRKSlyZXR1cm5bXTtpZighSilyZXR1cm5bXTtsZXQgWD1KNChZLmRpciksVz1gc3ViYWdlbnRzL2FnZW50LSR7Sn1gO2lmKCQubGlzdFN1YmtleXMpe2xldCBIPWF3YWl0ICQubGlzdFN1YmtleXMoe3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6UX0pLHE9YGFnZW50LSR7Sn1gLFY9SC5maW5kKChCKT0+Qi5zdGFydHNXaXRoKFwic3ViYWdlbnRzL1wiKSYmQi5zcGxpdChcIi9cIikuYXQoLTEpPT09cSk7aWYoIVYpcmV0dXJuW107Vz1WfWxldCBHPWF3YWl0ICQubG9hZCh7cHJvamVjdEtleTpYLHNlc3Npb25JZDpRLHN1YnBhdGg6V30pO2lmKCFHfHxHLmxlbmd0aD09PTApcmV0dXJuW107bGV0IFU9Ry5maWx0ZXIoKEgpPT4hRV8oSCkpO2lmKFUubGVuZ3RoPT09MClyZXR1cm5bXTtyZXR1cm4gbEgoQnVmZmVyLmZyb20oUF8oVSkpLHtsaW1pdDpZLmxpbWl0LG9mZnNldDpZLm9mZnNldH0pfWZ1bmN0aW9uIFpfKCQsUSl7bGV0IEo9QV8oUSwkKSxZPUouc3BsaXQob3opO2lmKFlbMF09PT1cIi4uXCJ8fGpfKEopKXJldHVybiBudWxsO2lmKFkubGVuZ3RoPDIpcmV0dXJuIG51bGw7bGV0IFg9WVswXSxXPVlbMV07aWYoWS5sZW5ndGg9PT0yJiZXLmVuZHNXaXRoKFwiLmpzb25sXCIpKXJldHVybntwcm9qZWN0S2V5Olgsc2Vzc2lvbklkOlcucmVwbGFjZSgvXFwuanNvbmwkLyxcIlwiKX07aWYoWS5sZW5ndGg+PTQpe2xldCBHPVkuc2xpY2UoMiksVT1HLmxlbmd0aC0xO3JldHVybiBHW1VdPUcuYXQoLTEpLnJlcGxhY2UoL1xcLmpzb25sJC8sXCJcIikse3Byb2plY3RLZXk6WCxzZXNzaW9uSWQ6VyxzdWJwYXRoOkcuam9pbihcIi9cIil9fXJldHVybiBudWxsfWV4cG9ydHtZQSQgYXMgdW5zdGFibGVfdjJfcmVzdW1lU2Vzc2lvbixXQSQgYXMgdW5zdGFibGVfdjJfcHJvbXB0LFhBJCBhcyB1bnN0YWJsZV92Ml9jcmVhdGVTZXNzaW9uLGJzIGFzIHRvb2wscUEkIGFzIHRhZ1Nlc3Npb24sSkEkIGFzIHN0YXJ0dXAsJEEkIGFzIHJlc29sdmVTZXR0aW5ncyxLQSQgYXMgcmVuYW1lU2Vzc2lvbixRQSQgYXMgcXVlcnksdnMgYXMgcGFyc2VEaXJlY3RDb25uZWN0VXJsLE5BJCBhcyBsaXN0U3ViYWdlbnRzLFVBJCBhcyBsaXN0U2Vzc2lvbnMsekEkIGFzIGltcG9ydFNlc3Npb25Ub1N0b3JlLHdBJCBhcyBnZXRTdWJhZ2VudE1lc3NhZ2VzLEdBJCBhcyBnZXRTZXNzaW9uTWVzc2FnZXMsSEEkIGFzIGdldFNlc3Npb25JbmZvLEJBJCBhcyBmb3JrU2Vzc2lvbixOWCBhcyBmb2xkU2Vzc2lvblN1bW1hcnksUDYkIGFzIGZpbHRlckVzY2FsYXRpbmdEZWZhdWx0TW9kZSxWQSQgYXMgZGVsZXRlU2Vzc2lvbixfcyBhcyBjcmVhdGVTZGtNY3BTZXJ2ZXIsVVMgYXMgU1lTVEVNX1BST01QVF9EWU5BTUlDX0JPVU5EQVJZLFBHIGFzIEluTWVtb3J5U2Vzc2lvblN0b3JlLHMwIGFzIEhPT0tfRVZFTlRTLEdTIGFzIEVYSVRfUkVBU09OUyxZRSBhcyBEaXJlY3RDb25uZWN0VHJhbnNwb3J0LFo0IGFzIERpcmVjdENvbm5lY3RFcnJvcixxNiBhcyBBYm9ydEVycm9yfTtcbiIsICJleHBvcnQgY29uc3QgaWdub3JlT3ZlcnJpZGUgPSBTeW1ib2woXCJMZXQgem9kVG9Kc29uU2NoZW1hIGRlY2lkZSBvbiB3aGljaCBwYXJzZXIgdG8gdXNlXCIpO1xuZXhwb3J0IGNvbnN0IGpzb25EZXNjcmlwdGlvbiA9IChqc29uU2NoZW1hLCBkZWYpID0+IHtcbiAgICBpZiAoZGVmLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmpzb25TY2hlbWEsXG4gICAgICAgICAgICAgICAgLi4uSlNPTi5wYXJzZShkZWYuZGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7IH1cbiAgICB9XG4gICAgcmV0dXJuIGpzb25TY2hlbWE7XG59O1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAkcmVmU3RyYXRlZ3k6IFwicm9vdFwiLFxuICAgIGJhc2VQYXRoOiBbXCIjXCJdLFxuICAgIGVmZmVjdFN0cmF0ZWd5OiBcImlucHV0XCIsXG4gICAgcGlwZVN0cmF0ZWd5OiBcImFsbFwiLFxuICAgIGRhdGVTdHJhdGVneTogXCJmb3JtYXQ6ZGF0ZS10aW1lXCIsXG4gICAgbWFwU3RyYXRlZ3k6IFwiZW50cmllc1wiLFxuICAgIHJlbW92ZUFkZGl0aW9uYWxTdHJhdGVneTogXCJwYXNzdGhyb3VnaFwiLFxuICAgIGFsbG93ZWRBZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZSxcbiAgICByZWplY3RlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICBkZWZpbml0aW9uUGF0aDogXCJkZWZpbml0aW9uc1wiLFxuICAgIHRhcmdldDogXCJqc29uU2NoZW1hN1wiLFxuICAgIHN0cmljdFVuaW9uczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHt9LFxuICAgIGVycm9yTWVzc2FnZXM6IGZhbHNlLFxuICAgIG1hcmtkb3duRGVzY3JpcHRpb246IGZhbHNlLFxuICAgIHBhdHRlcm5TdHJhdGVneTogXCJlc2NhcGVcIixcbiAgICBhcHBseVJlZ2V4RmxhZ3M6IGZhbHNlLFxuICAgIGVtYWlsU3RyYXRlZ3k6IFwiZm9ybWF0OmVtYWlsXCIsXG4gICAgYmFzZTY0U3RyYXRlZ3k6IFwiY29udGVudEVuY29kaW5nOmJhc2U2NFwiLFxuICAgIG5hbWVTdHJhdGVneTogXCJyZWZcIixcbiAgICBvcGVuQWlBbnlUeXBlTmFtZTogXCJPcGVuQWlBbnlUeXBlXCJcbn07XG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdE9wdGlvbnMgPSAob3B0aW9ucykgPT4gKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiXG4gICAgPyB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zLFxuICAgIH1cbiAgICA6IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4iLCAiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9PcHRpb25zLmpzXCI7XG5leHBvcnQgY29uc3QgZ2V0UmVmcyA9IChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgX29wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IF9vcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IFsuLi5fb3B0aW9ucy5iYXNlUGF0aCwgX29wdGlvbnMuZGVmaW5pdGlvblBhdGgsIF9vcHRpb25zLm5hbWVdXG4gICAgICAgIDogX29wdGlvbnMuYmFzZVBhdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uX29wdGlvbnMsXG4gICAgICAgIGZsYWdzOiB7IGhhc1JlZmVyZW5jZWRPcGVuQWlBbnlUeXBlOiBmYWxzZSB9LFxuICAgICAgICBjdXJyZW50UGF0aDogY3VycmVudFBhdGgsXG4gICAgICAgIHByb3BlcnR5UGF0aDogdW5kZWZpbmVkLFxuICAgICAgICBzZWVuOiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKF9vcHRpb25zLmRlZmluaXRpb25zKS5tYXAoKFtuYW1lLCBkZWZdKSA9PiBbXG4gICAgICAgICAgICBkZWYuX2RlZixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkZWY6IGRlZi5fZGVmLFxuICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5fb3B0aW9ucy5iYXNlUGF0aCwgX29wdGlvbnMuZGVmaW5pdGlvblBhdGgsIG5hbWVdLFxuICAgICAgICAgICAgICAgIC8vIFJlc29sdXRpb24gb2YgcmVmZXJlbmNlcyB3aWxsIGJlIGZvcmNlZCBldmVuIHRob3VnaCBzZWVuLCBzbyBpdCdzIG9rIHRoYXQgdGhlIHNjaGVtYSBpcyB1bmRlZmluZWQgaGVyZSBmb3Igbm93LlxuICAgICAgICAgICAgICAgIGpzb25TY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pKSxcbiAgICB9O1xufTtcbiIsICJleHBvcnQgZnVuY3Rpb24gYWRkRXJyb3JNZXNzYWdlKHJlcywga2V5LCBlcnJvck1lc3NhZ2UsIHJlZnMpIHtcbiAgICBpZiAoIXJlZnM/LmVycm9yTWVzc2FnZXMpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHJlcy5lcnJvck1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAuLi5yZXMuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgW2tleV06IGVycm9yTWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIGtleSwgdmFsdWUsIGVycm9yTWVzc2FnZSwgcmVmcykge1xuICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgYWRkRXJyb3JNZXNzYWdlKHJlcywga2V5LCBlcnJvck1lc3NhZ2UsIHJlZnMpO1xufVxuIiwgImV4cG9ydCBjb25zdCBnZXRSZWxhdGl2ZVBhdGggPSAocGF0aEEsIHBhdGhCKSA9PiB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoOyBpIDwgcGF0aEEubGVuZ3RoICYmIGkgPCBwYXRoQi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocGF0aEFbaV0gIT09IHBhdGhCW2ldKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBbKHBhdGhBLmxlbmd0aCAtIGkpLnRvU3RyaW5nKCksIC4uLnBhdGhCLnNsaWNlKGkpXS5qb2luKFwiL1wiKTtcbn07XG4iLCAiZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaGVscGVycy90eXBlQWxpYXNlcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaGVscGVycy91dGlsLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vWm9kRXJyb3IuanNcIjtcbiIsICJleHBvcnQgdmFyIHV0aWw7XG4oZnVuY3Rpb24gKHV0aWwpIHtcbiAgICB1dGlsLmFzc2VydEVxdWFsID0gKF8pID0+IHsgfTtcbiAgICBmdW5jdGlvbiBhc3NlcnRJcyhfYXJnKSB7IH1cbiAgICB1dGlsLmFzc2VydElzID0gYXNzZXJ0SXM7XG4gICAgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICAgIHV0aWwuYXNzZXJ0TmV2ZXIgPSBhc3NlcnROZXZlcjtcbiAgICB1dGlsLmFycmF5VG9FbnVtID0gKGl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIG9ialtpdGVtXSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICAgIHV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzID0gKG9iaikgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZEtleXMgPSB1dGlsLm9iamVjdEtleXMob2JqKS5maWx0ZXIoKGspID0+IHR5cGVvZiBvYmpbb2JqW2tdXSAhPT0gXCJudW1iZXJcIik7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0ge307XG4gICAgICAgIGZvciAoY29uc3QgayBvZiB2YWxpZEtleXMpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tdID0gb2JqW2tdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1dGlsLm9iamVjdFZhbHVlcyhmaWx0ZXJlZCk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdFZhbHVlcyA9IChvYmopID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwub2JqZWN0S2V5cyhvYmopLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9ialtlXTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdEtleXMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFwiZnVuY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgPyAob2JqKSA9PiBPYmplY3Qua2V5cyhvYmopIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgICA6IChvYmplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9O1xuICAgIHV0aWwuZmluZCA9IChhcnIsIGNoZWNrZXIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICAgICAgaWYgKGNoZWNrZXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIHV0aWwuaXNJbnRlZ2VyID0gdHlwZW9mIE51bWJlci5pc0ludGVnZXIgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/ICh2YWwpID0+IE51bWJlci5pc0ludGVnZXIodmFsKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgOiAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWwpICYmIE1hdGguZmxvb3IodmFsKSA9PT0gdmFsO1xuICAgIGZ1bmN0aW9uIGpvaW5WYWx1ZXMoYXJyYXksIHNlcGFyYXRvciA9IFwiIHwgXCIpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5Lm1hcCgodmFsKSA9PiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiA/IGAnJHt2YWx9J2AgOiB2YWwpKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuICAgIHV0aWwuam9pblZhbHVlcyA9IGpvaW5WYWx1ZXM7XG4gICAgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59KSh1dGlsIHx8ICh1dGlsID0ge30pKTtcbmV4cG9ydCB2YXIgb2JqZWN0VXRpbDtcbihmdW5jdGlvbiAob2JqZWN0VXRpbCkge1xuICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXMgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmlyc3QsXG4gICAgICAgICAgICAuLi5zZWNvbmQsIC8vIHNlY29uZCBvdmVyd3JpdGVzIGZpcnN0XG4gICAgICAgIH07XG4gICAgfTtcbn0pKG9iamVjdFV0aWwgfHwgKG9iamVjdFV0aWwgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFpvZFBhcnNlZFR5cGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgICBcInN0cmluZ1wiLFxuICAgIFwibmFuXCIsXG4gICAgXCJudW1iZXJcIixcbiAgICBcImludGVnZXJcIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJiaWdpbnRcIixcbiAgICBcInN5bWJvbFwiLFxuICAgIFwiZnVuY3Rpb25cIixcbiAgICBcInVuZGVmaW5lZFwiLFxuICAgIFwibnVsbFwiLFxuICAgIFwiYXJyYXlcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwidW5rbm93blwiLFxuICAgIFwicHJvbWlzZVwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcIm1hcFwiLFxuICAgIFwic2V0XCIsXG5dKTtcbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZDtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3RyaW5nO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gWm9kUGFyc2VkVHlwZS5uYW4gOiBab2RQYXJzZWRUeXBlLm51bWJlcjtcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJvb2xlYW47XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZnVuY3Rpb247XG4gICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJpZ2ludDtcbiAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3ltYm9sO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5udWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEudGhlbiAmJiB0eXBlb2YgZGF0YS50aGVuID09PSBcImZ1bmN0aW9uXCIgJiYgZGF0YS5jYXRjaCAmJiB0eXBlb2YgZGF0YS5jYXRjaCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUucHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLm9iamVjdDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XG4gICAgfVxufTtcbiIsICJpbXBvcnQgeyB1dGlsIH0gZnJvbSBcIi4vaGVscGVycy91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgWm9kSXNzdWVDb2RlID0gdXRpbC5hcnJheVRvRW51bShbXG4gICAgXCJpbnZhbGlkX3R5cGVcIixcbiAgICBcImludmFsaWRfbGl0ZXJhbFwiLFxuICAgIFwiY3VzdG9tXCIsXG4gICAgXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgXCJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3JcIixcbiAgICBcImludmFsaWRfZW51bV92YWx1ZVwiLFxuICAgIFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICBcImludmFsaWRfYXJndW1lbnRzXCIsXG4gICAgXCJpbnZhbGlkX3JldHVybl90eXBlXCIsXG4gICAgXCJpbnZhbGlkX2RhdGVcIixcbiAgICBcImludmFsaWRfc3RyaW5nXCIsXG4gICAgXCJ0b29fc21hbGxcIixcbiAgICBcInRvb19iaWdcIixcbiAgICBcImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzXCIsXG4gICAgXCJub3RfbXVsdGlwbGVfb2ZcIixcbiAgICBcIm5vdF9maW5pdGVcIixcbl0pO1xuZXhwb3J0IGNvbnN0IHF1b3RlbGVzc0pzb24gPSAob2JqKSA9PiB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMik7XG4gICAgcmV0dXJuIGpzb24ucmVwbGFjZSgvXCIoW15cIl0rKVwiOi9nLCBcIiQxOlwiKTtcbn07XG5leHBvcnQgY2xhc3MgWm9kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgZ2V0IGVycm9ycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNzdWVzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihpc3N1ZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5pc3N1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5hZGRJc3N1ZSA9IChzdWIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNzdWVzID0gWy4uLnRoaXMuaXNzdWVzLCBzdWJdO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZElzc3VlcyA9IChzdWJzID0gW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNzdWVzID0gWy4uLnRoaXMuaXNzdWVzLCAuLi5zdWJzXTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWN0dWFsUHJvdG8gPSBuZXcudGFyZ2V0LnByb3RvdHlwZTtcbiAgICAgICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGJhbi9iYW5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBhY3R1YWxQcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9fcHJvdG9fXyA9IGFjdHVhbFByb3RvO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmFtZSA9IFwiWm9kRXJyb3JcIjtcbiAgICAgICAgdGhpcy5pc3N1ZXMgPSBpc3N1ZXM7XG4gICAgfVxuICAgIGZvcm1hdChfbWFwcGVyKSB7XG4gICAgICAgIGNvbnN0IG1hcHBlciA9IF9tYXBwZXIgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChpc3N1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgIGNvbnN0IHByb2Nlc3NFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3VuaW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWUudW5pb25FcnJvcnMubWFwKHByb2Nlc3NFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9yZXR1cm5fdHlwZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5yZXR1cm5UeXBlRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfYXJndW1lbnRzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKGlzc3VlLmFyZ3VtZW50c0Vycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUucGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnMuX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnIgPSBmaWVsZEVycm9ycztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGlzc3VlLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGlzc3VlLnBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGlzc3VlLnBhdGgubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVybWluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodHlwZW9mIGVsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHR5cGVvZiBlbCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3QgZXJyb3JBcnJheTogYW55ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBlcnJvckFycmF5Ll9lcnJvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgZXJyb3JBcnJheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXS5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3VycltlbF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NFcnJvcih0aGlzKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xuICAgIH1cbiAgICBzdGF0aWMgYXNzZXJ0KHZhbHVlKSB7XG4gICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgWm9kRXJyb3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhIFpvZEVycm9yOiAke3ZhbHVlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICAgIH1cbiAgICBnZXQgbWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaXNzdWVzLCB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlciwgMik7XG4gICAgfVxuICAgIGdldCBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc3N1ZXMubGVuZ3RoID09PSAwO1xuICAgIH1cbiAgICBmbGF0dGVuKG1hcHBlciA9IChpc3N1ZSkgPT4gaXNzdWUubWVzc2FnZSkge1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCBmb3JtRXJyb3JzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIHRoaXMuaXNzdWVzKSB7XG4gICAgICAgICAgICBpZiAoc3ViLnBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWwgPSBzdWIucGF0aFswXTtcbiAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tmaXJzdEVsXSA9IGZpZWxkRXJyb3JzW2ZpcnN0RWxdIHx8IFtdO1xuICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW2ZpcnN0RWxdLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9ybUVycm9ycy5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBmb3JtRXJyb3JzLCBmaWVsZEVycm9ycyB9O1xuICAgIH1cbiAgICBnZXQgZm9ybUVycm9ycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxhdHRlbigpO1xuICAgIH1cbn1cblpvZEVycm9yLmNyZWF0ZSA9IChpc3N1ZXMpID0+IHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihpc3N1ZXMpO1xuICAgIHJldHVybiBlcnJvcjtcbn07XG4iLCAiaW1wb3J0IHsgWm9kSXNzdWVDb2RlIH0gZnJvbSBcIi4uL1pvZEVycm9yLmpzXCI7XG5pbXBvcnQgeyB1dGlsLCBab2RQYXJzZWRUeXBlIH0gZnJvbSBcIi4uL2hlbHBlcnMvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3JNYXAgPSAoaXNzdWUsIF9jdHgpID0+IHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlOlxuICAgICAgICAgICAgaWYgKGlzc3VlLnJlY2VpdmVkID09PSBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIlJlcXVpcmVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEV4cGVjdGVkICR7aXNzdWUuZXhwZWN0ZWR9LCByZWNlaXZlZCAke2lzc3VlLnJlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGxpdGVyYWwgdmFsdWUsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoaXNzdWUuZXhwZWN0ZWQsIHV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyKX1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBVbnJlY29nbml6ZWQga2V5KHMpIGluIG9iamVjdDogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb246XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXRgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5vcHRpb25zKX1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBlbnVtIHZhbHVlLiBFeHBlY3RlZCAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5vcHRpb25zKX0sIHJlY2VpdmVkICcke2lzc3VlLnJlY2VpdmVkfSdgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50c2A7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiByZXR1cm4gdHlwZWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGRhdGVgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpc3N1ZS52YWxpZGF0aW9uID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKFwiaW5jbHVkZXNcIiBpbiBpc3N1ZS52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dDogbXVzdCBpbmNsdWRlIFwiJHtpc3N1ZS52YWxpZGF0aW9uLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpc3N1ZS52YWxpZGF0aW9uLnBvc2l0aW9uID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYCR7bWVzc2FnZX0gYXQgb25lIG9yIG1vcmUgcG9zaXRpb25zIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2lzc3VlLnZhbGlkYXRpb24ucG9zaXRpb259YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcInN0YXJ0c1dpdGhcIiBpbiBpc3N1ZS52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLnN0YXJ0c1dpdGh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcImVuZHNXaXRoXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXQ6IG11c3QgZW5kIHdpdGggXCIke2lzc3VlLnZhbGlkYXRpb24uZW5kc1dpdGh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihpc3N1ZS52YWxpZGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS52YWxpZGF0aW9uICE9PSBcInJlZ2V4XCIpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgJHtpc3N1ZS52YWxpZGF0aW9ufWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUudG9vX3NtYWxsOlxuICAgICAgICAgICAgaWYgKGlzc3VlLnR5cGUgPT09IFwiYXJyYXlcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke2lzc3VlLmV4YWN0ID8gXCJleGFjdGx5XCIgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbGVhc3RgIDogYG1vcmUgdGhhbmB9ICR7aXNzdWUubWluaW11bX0gZWxlbWVudChzKWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgU3RyaW5nIG11c3QgY29udGFpbiAke2lzc3VlLmV4YWN0ID8gXCJleGFjdGx5XCIgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbGVhc3RgIDogYG92ZXJgfSAke2lzc3VlLm1pbmltdW19IGNoYXJhY3RlcihzKWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5IGVxdWFsIHRvIGAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAgOiBgZ3JlYXRlciB0aGFuIGB9JHtpc3N1ZS5taW5pbXVtfWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5IGVxdWFsIHRvIGAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAgOiBgZ3JlYXRlciB0aGFuIGB9JHtpc3N1ZS5taW5pbXVtfWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcImRhdGVcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYERhdGUgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHkgZXF1YWwgdG8gYCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYCA6IGBncmVhdGVyIHRoYW4gYH0ke25ldyBEYXRlKE51bWJlcihpc3N1ZS5taW5pbXVtKSl9YDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkIGlucHV0XCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUudG9vX2JpZzpcbiAgICAgICAgICAgIGlmIChpc3N1ZS50eXBlID09PSBcImFycmF5XCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBBcnJheSBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGBsZXNzIHRoYW5gfSAke2lzc3VlLm1heGltdW19IGVsZW1lbnQocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYFN0cmluZyBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGB1bmRlcmB9ICR7aXNzdWUubWF4aW11bX0gY2hhcmFjdGVyKHMpYDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSAke2lzc3VlLmV4YWN0ID8gYGV4YWN0bHlgIDogaXNzdWUuaW5jbHVzaXZlID8gYGxlc3MgdGhhbiBvciBlcXVhbCB0b2AgOiBgbGVzcyB0aGFuYH0gJHtpc3N1ZS5tYXhpbXVtfWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgQmlnSW50IG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBsZXNzIHRoYW4gb3IgZXF1YWwgdG9gIDogYGxlc3MgdGhhbmB9ICR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJkYXRlXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBEYXRlIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBzbWFsbGVyIHRoYW4gb3IgZXF1YWwgdG9gIDogYHNtYWxsZXIgdGhhbmB9ICR7bmV3IERhdGUoTnVtYmVyKGlzc3VlLm1heGltdW0pKX1gO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkludmFsaWQgaW5wdXRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5jdXN0b206XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXRgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnRlcnNlY3Rpb24gcmVzdWx0cyBjb3VsZCBub3QgYmUgbWVyZ2VkYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2Y6XG4gICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtpc3N1ZS5tdWx0aXBsZU9mfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUubm90X2Zpbml0ZTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIk51bWJlciBtdXN0IGJlIGZpbml0ZVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBtZXNzYWdlID0gX2N0eC5kZWZhdWx0RXJyb3I7XG4gICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgbWVzc2FnZSB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGVycm9yTWFwO1xuIiwgImltcG9ydCBkZWZhdWx0RXJyb3JNYXAgZnJvbSBcIi4vbG9jYWxlcy9lbi5qc1wiO1xubGV0IG92ZXJyaWRlRXJyb3JNYXAgPSBkZWZhdWx0RXJyb3JNYXA7XG5leHBvcnQgeyBkZWZhdWx0RXJyb3JNYXAgfTtcbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvck1hcChtYXApIHtcbiAgICBvdmVycmlkZUVycm9yTWFwID0gbWFwO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWFwKCkge1xuICAgIHJldHVybiBvdmVycmlkZUVycm9yTWFwO1xufVxuIiwgImltcG9ydCB7IGdldEVycm9yTWFwIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuaW1wb3J0IGRlZmF1bHRFcnJvck1hcCBmcm9tIFwiLi4vbG9jYWxlcy9lbi5qc1wiO1xuZXhwb3J0IGNvbnN0IG1ha2VJc3N1ZSA9IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCB7IGRhdGEsIHBhdGgsIGVycm9yTWFwcywgaXNzdWVEYXRhIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgZnVsbFBhdGggPSBbLi4ucGF0aCwgLi4uKGlzc3VlRGF0YS5wYXRoIHx8IFtdKV07XG4gICAgY29uc3QgZnVsbElzc3VlID0ge1xuICAgICAgICAuLi5pc3N1ZURhdGEsXG4gICAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgIH07XG4gICAgaWYgKGlzc3VlRGF0YS5tZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgICAgICAgICAgbWVzc2FnZTogaXNzdWVEYXRhLm1lc3NhZ2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBcIlwiO1xuICAgIGNvbnN0IG1hcHMgPSBlcnJvck1hcHNcbiAgICAgICAgLmZpbHRlcigobSkgPT4gISFtKVxuICAgICAgICAuc2xpY2UoKVxuICAgICAgICAucmV2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgbWFwIG9mIG1hcHMpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gbWFwKGZ1bGxJc3N1ZSwgeyBkYXRhLCBkZWZhdWx0RXJyb3I6IGVycm9yTWVzc2FnZSB9KS5tZXNzYWdlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5pc3N1ZURhdGEsXG4gICAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgRU1QVFlfUEFUSCA9IFtdO1xuZXhwb3J0IGZ1bmN0aW9uIGFkZElzc3VlVG9Db250ZXh0KGN0eCwgaXNzdWVEYXRhKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGVNYXAgPSBnZXRFcnJvck1hcCgpO1xuICAgIGNvbnN0IGlzc3VlID0gbWFrZUlzc3VlKHtcbiAgICAgICAgaXNzdWVEYXRhOiBpc3N1ZURhdGEsXG4gICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgZXJyb3JNYXBzOiBbXG4gICAgICAgICAgICBjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCwgLy8gY29udGV4dHVhbCBlcnJvciBtYXAgaXMgZmlyc3QgcHJpb3JpdHlcbiAgICAgICAgICAgIGN0eC5zY2hlbWFFcnJvck1hcCwgLy8gdGhlbiBzY2hlbWEtYm91bmQgbWFwIGlmIGF2YWlsYWJsZVxuICAgICAgICAgICAgb3ZlcnJpZGVNYXAsIC8vIHRoZW4gZ2xvYmFsIG92ZXJyaWRlIG1hcFxuICAgICAgICAgICAgb3ZlcnJpZGVNYXAgPT09IGRlZmF1bHRFcnJvck1hcCA/IHVuZGVmaW5lZCA6IGRlZmF1bHRFcnJvck1hcCwgLy8gdGhlbiBnbG9iYWwgZGVmYXVsdCBtYXBcbiAgICAgICAgXS5maWx0ZXIoKHgpID0+ICEheCksXG4gICAgfSk7XG4gICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaChpc3N1ZSk7XG59XG5leHBvcnQgY2xhc3MgUGFyc2VTdGF0dXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gXCJ2YWxpZFwiO1xuICAgIH1cbiAgICBkaXJ0eSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IFwidmFsaWRcIilcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBcImRpcnR5XCI7XG4gICAgfVxuICAgIGFib3J0KCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gXCJhYm9ydGVkXCI7XG4gICAgfVxuICAgIHN0YXRpYyBtZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0cykge1xuICAgICAgICBjb25zdCBhcnJheVZhbHVlID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICBpZiAocy5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKHMuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICBhcnJheVZhbHVlLnB1c2gocy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBhcnJheVZhbHVlIH07XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKHN0YXR1cywgcGFpcnMpIHtcbiAgICAgICAgY29uc3Qgc3luY1BhaXJzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHBhaXIudmFsdWU7XG4gICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHN5bmNQYWlycyk7XG4gICAgfVxuICAgIHN0YXRpYyBtZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycykge1xuICAgICAgICBjb25zdCBmaW5hbE9iamVjdCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcjtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIGlmIChrZXkudmFsdWUgIT09IFwiX19wcm90b19fXCIgJiYgKHR5cGVvZiB2YWx1ZS52YWx1ZSAhPT0gXCJ1bmRlZmluZWRcIiB8fCBwYWlyLmFsd2F5c1NldCkpIHtcbiAgICAgICAgICAgICAgICBmaW5hbE9iamVjdFtrZXkudmFsdWVdID0gdmFsdWUudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE9iamVjdCB9O1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBJTlZBTElEID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgc3RhdHVzOiBcImFib3J0ZWRcIixcbn0pO1xuZXhwb3J0IGNvbnN0IERJUlRZID0gKHZhbHVlKSA9PiAoeyBzdGF0dXM6IFwiZGlydHlcIiwgdmFsdWUgfSk7XG5leHBvcnQgY29uc3QgT0sgPSAodmFsdWUpID0+ICh7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZSB9KTtcbmV4cG9ydCBjb25zdCBpc0Fib3J0ZWQgPSAoeCkgPT4geC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiO1xuZXhwb3J0IGNvbnN0IGlzRGlydHkgPSAoeCkgPT4geC5zdGF0dXMgPT09IFwiZGlydHlcIjtcbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKHgpID0+IHguc3RhdHVzID09PSBcInZhbGlkXCI7XG5leHBvcnQgY29uc3QgaXNBc3luYyA9ICh4KSA9PiB0eXBlb2YgUHJvbWlzZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB4IGluc3RhbmNlb2YgUHJvbWlzZTtcbiIsICJleHBvcnQgdmFyIGVycm9yVXRpbDtcbihmdW5jdGlvbiAoZXJyb3JVdGlsKSB7XG4gICAgZXJyb3JVdGlsLmVyclRvT2JqID0gKG1lc3NhZ2UpID0+IHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8geyBtZXNzYWdlIH0gOiBtZXNzYWdlIHx8IHt9O1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50OlxuICAgIGVycm9yVXRpbC50b1N0cmluZyA9IChtZXNzYWdlKSA9PiB0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UgOiBtZXNzYWdlPy5tZXNzYWdlO1xufSkoZXJyb3JVdGlsIHx8IChlcnJvclV0aWwgPSB7fSkpO1xuIiwgImltcG9ydCB7IFpvZEVycm9yLCBab2RJc3N1ZUNvZGUsIH0gZnJvbSBcIi4vWm9kRXJyb3IuanNcIjtcbmltcG9ydCB7IGRlZmF1bHRFcnJvck1hcCwgZ2V0RXJyb3JNYXAgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCB7IGVycm9yVXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvZXJyb3JVdGlsLmpzXCI7XG5pbXBvcnQgeyBESVJUWSwgSU5WQUxJRCwgT0ssIFBhcnNlU3RhdHVzLCBhZGRJc3N1ZVRvQ29udGV4dCwgaXNBYm9ydGVkLCBpc0FzeW5jLCBpc0RpcnR5LCBpc1ZhbGlkLCBtYWtlSXNzdWUsIH0gZnJvbSBcIi4vaGVscGVycy9wYXJzZVV0aWwuanNcIjtcbmltcG9ydCB7IHV0aWwsIFpvZFBhcnNlZFR5cGUsIGdldFBhcnNlZFR5cGUgfSBmcm9tIFwiLi9oZWxwZXJzL3V0aWwuanNcIjtcbmNsYXNzIFBhcnNlSW5wdXRMYXp5UGF0aCB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCB2YWx1ZSwgcGF0aCwga2V5KSB7XG4gICAgICAgIHRoaXMuX2NhY2hlZFBhdGggPSBbXTtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMuZGF0YSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9wYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5fa2V5ID0ga2V5O1xuICAgIH1cbiAgICBnZXQgcGF0aCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYWNoZWRQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLCAuLi50aGlzLl9rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsIHRoaXMuX2tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFBhdGg7XG4gICAgfVxufVxuY29uc3QgaGFuZGxlUmVzdWx0ID0gKGN0eCwgcmVzdWx0KSA9PiB7XG4gICAgaWYgKGlzVmFsaWQocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICghY3R4LmNvbW1vbi5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWYWxpZGF0aW9uIGZhaWxlZCBidXQgbm8gaXNzdWVzIGRldGVjdGVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBnZXQgZXJyb3IoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Vycm9yKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3I7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgWm9kRXJyb3IoY3R4LmNvbW1vbi5pc3N1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9yID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59O1xuZnVuY3Rpb24gcHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpIHtcbiAgICBpZiAoIXBhcmFtcylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGNvbnN0IHsgZXJyb3JNYXAsIGludmFsaWRfdHlwZV9lcnJvciwgcmVxdWlyZWRfZXJyb3IsIGRlc2NyaXB0aW9uIH0gPSBwYXJhbXM7XG4gICAgaWYgKGVycm9yTWFwICYmIChpbnZhbGlkX3R5cGVfZXJyb3IgfHwgcmVxdWlyZWRfZXJyb3IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgdXNlIFwiaW52YWxpZF90eXBlX2Vycm9yXCIgb3IgXCJyZXF1aXJlZF9lcnJvclwiIGluIGNvbmp1bmN0aW9uIHdpdGggY3VzdG9tIGVycm9yIG1hcC5gKTtcbiAgICB9XG4gICAgaWYgKGVycm9yTWFwKVxuICAgICAgICByZXR1cm4geyBlcnJvck1hcDogZXJyb3JNYXAsIGRlc2NyaXB0aW9uIH07XG4gICAgY29uc3QgY3VzdG9tTWFwID0gKGlzcywgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gcGFyYW1zO1xuICAgICAgICBpZiAoaXNzLmNvZGUgPT09IFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2U6IG1lc3NhZ2UgPz8gY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGEgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2U6IG1lc3NhZ2UgPz8gcmVxdWlyZWRfZXJyb3IgPz8gY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc3MuY29kZSAhPT0gXCJpbnZhbGlkX3R5cGVcIilcbiAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2U6IGN0eC5kZWZhdWx0RXJyb3IgfTtcbiAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyBpbnZhbGlkX3R5cGVfZXJyb3IgPz8gY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgIH07XG4gICAgcmV0dXJuIHsgZXJyb3JNYXA6IGN1c3RvbU1hcCwgZGVzY3JpcHRpb24gfTtcbn1cbmV4cG9ydCBjbGFzcyBab2RUeXBlIHtcbiAgICBnZXQgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIF9nZXRUeXBlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpO1xuICAgIH1cbiAgICBfZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCkge1xuICAgICAgICByZXR1cm4gKGN0eCB8fCB7XG4gICAgICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgICAgICBkYXRhOiBpbnB1dC5kYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgICAgICAgcGFyZW50OiBpbnB1dC5wYXJlbnQsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IG5ldyBQYXJzZVN0YXR1cygpLFxuICAgICAgICAgICAgY3R4OiB7XG4gICAgICAgICAgICAgICAgY29tbW9uOiBpbnB1dC5wYXJlbnQuY29tbW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG4gICAgICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcbiAgICAgICAgICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICAgICAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBpbnB1dC5wYXJlbnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfcGFyc2VTeW5jKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKGlzQXN5bmMocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3luY2hyb25vdXMgcGFyc2UgZW5jb3VudGVyZWQgcHJvbWlzZS5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgX3BhcnNlQXN5bmMoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgfVxuICAgIHBhcnNlKGRhdGEsIHBhcmFtcykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhZmVQYXJzZShkYXRhLCBwYXJhbXMpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICB9XG4gICAgc2FmZVBhcnNlKGRhdGEsIHBhcmFtcykge1xuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICBjb21tb246IHtcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGFzeW5jOiBwYXJhbXM/LmFzeW5jID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoOiBwYXJhbXM/LnBhdGggfHwgW10sXG4gICAgICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcnNlZFR5cGU6IGdldFBhcnNlZFR5cGUoZGF0YSksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlU3luYyh7IGRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVJlc3VsdChjdHgsIHJlc3VsdCk7XG4gICAgfVxuICAgIFwifnZhbGlkYXRlXCIoZGF0YSkge1xuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICBjb21tb246IHtcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGFzeW5jOiAhIXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGF0aDogW10sXG4gICAgICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcnNlZFR5cGU6IGdldFBhcnNlZFR5cGUoZGF0YSksXG4gICAgICAgIH07XG4gICAgICAgIGlmICghdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZVN5bmMoeyBkYXRhLCBwYXRoOiBbXSwgcGFyZW50OiBjdHggfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQocmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IGN0eC5jb21tb24uaXNzdWVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChlcnI/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKFwiZW5jb3VudGVyZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN0eC5jb21tb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlQXN5bmMoeyBkYXRhLCBwYXRoOiBbXSwgcGFyZW50OiBjdHggfSkudGhlbigocmVzdWx0KSA9PiBpc1ZhbGlkKHJlc3VsdClcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQudmFsdWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IGN0eC5jb21tb24uaXNzdWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKTtcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgfVxuICAgIGFzeW5jIHNhZmVQYXJzZUFzeW5jKGRhdGEsIHBhcmFtcykge1xuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICBjb21tb246IHtcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgICAgICAgICAgICBhc3luYzogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoOiBwYXJhbXM/LnBhdGggfHwgW10sXG4gICAgICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcnNlZFR5cGU6IGdldFBhcnNlZFR5cGUoZGF0YSksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1heWJlQXN5bmNSZXN1bHQgPSB0aGlzLl9wYXJzZSh7IGRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGlzQXN5bmMobWF5YmVBc3luY1Jlc3VsdCkgPyBtYXliZUFzeW5jUmVzdWx0IDogUHJvbWlzZS5yZXNvbHZlKG1heWJlQXN5bmNSZXN1bHQpKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVJlc3VsdChjdHgsIHJlc3VsdCk7XG4gICAgfVxuICAgIHJlZmluZShjaGVjaywgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCBnZXRJc3N1ZVByb3BlcnRpZXMgPSAodmFsKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG1lc3NhZ2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtZXNzYWdlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UodmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNoZWNrKHZhbCk7XG4gICAgICAgICAgICBjb25zdCBzZXRFcnJvciA9ICgpID0+IGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgICAgICAgICAuLi5nZXRJc3N1ZVByb3BlcnRpZXModmFsKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2V0RXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlZmluZW1lbnQoY2hlY2ssIHJlZmluZW1lbnREYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KCh2YWwsIGN0eCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGVjayh2YWwpKSB7XG4gICAgICAgICAgICAgICAgY3R4LmFkZElzc3VlKHR5cGVvZiByZWZpbmVtZW50RGF0YSA9PT0gXCJmdW5jdGlvblwiID8gcmVmaW5lbWVudERhdGEodmFsLCBjdHgpIDogcmVmaW5lbWVudERhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3JlZmluZW1lbnQocmVmaW5lbWVudCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgICAgICAgZWZmZWN0OiB7IHR5cGU6IFwicmVmaW5lbWVudFwiLCByZWZpbmVtZW50IH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdXBlclJlZmluZShyZWZpbmVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KHJlZmluZW1lbnQpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihkZWYpIHtcbiAgICAgICAgLyoqIEFsaWFzIG9mIHNhZmVQYXJzZUFzeW5jICovXG4gICAgICAgIHRoaXMuc3BhID0gdGhpcy5zYWZlUGFyc2VBc3luYztcbiAgICAgICAgdGhpcy5fZGVmID0gZGVmO1xuICAgICAgICB0aGlzLnBhcnNlID0gdGhpcy5wYXJzZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNhZmVQYXJzZSA9IHRoaXMuc2FmZVBhcnNlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucGFyc2VBc3luYyA9IHRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNhZmVQYXJzZUFzeW5jID0gdGhpcy5zYWZlUGFyc2VBc3luYy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNwYSA9IHRoaXMuc3BhLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucmVmaW5lID0gdGhpcy5yZWZpbmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZWZpbmVtZW50ID0gdGhpcy5yZWZpbmVtZW50LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc3VwZXJSZWZpbmUgPSB0aGlzLnN1cGVyUmVmaW5lLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMubnVsbGFibGUgPSB0aGlzLm51bGxhYmxlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMubnVsbGlzaCA9IHRoaXMubnVsbGlzaC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmFycmF5ID0gdGhpcy5hcnJheS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnByb21pc2UgPSB0aGlzLnByb21pc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vciA9IHRoaXMub3IuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5hbmQgPSB0aGlzLmFuZC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuYnJhbmQgPSB0aGlzLmJyYW5kLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZGVmYXVsdC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmNhdGNoID0gdGhpcy5jYXRjaC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmRlc2NyaWJlID0gdGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnBpcGUgPSB0aGlzLnBpcGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMucmVhZG9ubHkuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pc051bGxhYmxlID0gdGhpcy5pc051bGxhYmxlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaXNPcHRpb25hbCA9IHRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzW1wifnN0YW5kYXJkXCJdID0ge1xuICAgICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgICAgIHZlbmRvcjogXCJ6b2RcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoZGF0YSkgPT4gdGhpc1tcIn52YWxpZGF0ZVwiXShkYXRhKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgb3B0aW9uYWwoKSB7XG4gICAgICAgIHJldHVybiBab2RPcHRpb25hbC5jcmVhdGUodGhpcywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgbnVsbGFibGUoKSB7XG4gICAgICAgIHJldHVybiBab2ROdWxsYWJsZS5jcmVhdGUodGhpcywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgbnVsbGlzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubnVsbGFibGUoKS5vcHRpb25hbCgpO1xuICAgIH1cbiAgICBhcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZEFycmF5LmNyZWF0ZSh0aGlzKTtcbiAgICB9XG4gICAgcHJvbWlzZSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZFByb21pc2UuY3JlYXRlKHRoaXMsIHRoaXMuX2RlZik7XG4gICAgfVxuICAgIG9yKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gWm9kVW5pb24uY3JlYXRlKFt0aGlzLCBvcHRpb25dLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBhbmQoaW5jb21pbmcpIHtcbiAgICAgICAgcmV0dXJuIFpvZEludGVyc2VjdGlvbi5jcmVhdGUodGhpcywgaW5jb21pbmcsIHRoaXMuX2RlZik7XG4gICAgfVxuICAgIHRyYW5zZm9ybSh0cmFuc2Zvcm0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgICAgICAgIGVmZmVjdDogeyB0eXBlOiBcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0gfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRlZmF1bHQoZGVmKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZ1bmMgPSB0eXBlb2YgZGVmID09PSBcImZ1bmN0aW9uXCIgPyBkZWYgOiAoKSA9PiBkZWY7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRGVmYXVsdCh7XG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHRoaXMuX2RlZiksXG4gICAgICAgICAgICBpbm5lclR5cGU6IHRoaXMsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZUZ1bmMsXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBicmFuZCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RCcmFuZGVkKHtcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQnJhbmRlZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMsXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHRoaXMuX2RlZiksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYXRjaChkZWYpIHtcbiAgICAgICAgY29uc3QgY2F0Y2hWYWx1ZUZ1bmMgPSB0eXBlb2YgZGVmID09PSBcImZ1bmN0aW9uXCIgPyBkZWYgOiAoKSA9PiBkZWY7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQ2F0Y2goe1xuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlzLl9kZWYpLFxuICAgICAgICAgICAgaW5uZXJUeXBlOiB0aGlzLFxuICAgICAgICAgICAgY2F0Y2hWYWx1ZTogY2F0Y2hWYWx1ZUZ1bmMsXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZENhdGNoLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVzY3JpYmUoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29uc3QgVGhpcyA9IHRoaXMuY29uc3RydWN0b3I7XG4gICAgICAgIHJldHVybiBuZXcgVGhpcyh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBpcGUodGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBab2RQaXBlbGluZS5jcmVhdGUodGhpcywgdGFyZ2V0KTtcbiAgICB9XG4gICAgcmVhZG9ubHkoKSB7XG4gICAgICAgIHJldHVybiBab2RSZWFkb25seS5jcmVhdGUodGhpcyk7XG4gICAgfVxuICAgIGlzT3B0aW9uYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVQYXJzZSh1bmRlZmluZWQpLnN1Y2Nlc3M7XG4gICAgfVxuICAgIGlzTnVsbGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzO1xuICAgIH1cbn1cbmNvbnN0IGN1aWRSZWdleCA9IC9eY1teXFxzLV17OCx9JC9pO1xuY29uc3QgY3VpZDJSZWdleCA9IC9eWzAtOWEtel0rJC87XG5jb25zdCB1bGlkUmVnZXggPSAvXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kL2k7XG4vLyBjb25zdCB1dWlkUmVnZXggPVxuLy8gICAvXihbYS1mMC05XXs4fS1bYS1mMC05XXs0fS1bMS01XVthLWYwLTldezN9LVthLWYwLTldezR9LVthLWYwLTldezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pO1xuY29uc3QgdXVpZFJlZ2V4ID0gL15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kL2k7XG5jb25zdCBuYW5vaWRSZWdleCA9IC9eW2EtejAtOV8tXXsyMX0kL2k7XG5jb25zdCBqd3RSZWdleCA9IC9eW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10qJC87XG5jb25zdCBkdXJhdGlvblJlZ2V4ID0gL15bLStdP1AoPyEkKSg/Oig/OlstK10/XFxkK1kpfCg/OlstK10/XFxkK1suLF1cXGQrWSQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86KD86Wy0rXT9cXGQrVyl8KD86Wy0rXT9cXGQrWy4sXVxcZCtXJCkpPyg/Oig/OlstK10/XFxkK0QpfCg/OlstK10/XFxkK1suLF1cXGQrRCQpKT8oPzpUKD89W1xcZCstXSkoPzooPzpbLStdP1xcZCtIKXwoPzpbLStdP1xcZCtbLixdXFxkK0gkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/OlstK10/XFxkKyg/OlsuLF1cXGQrKT9TKT8pPz8kLztcbi8vIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ2MTgxLzE1NTAxNTVcbi8vIG9sZCB2ZXJzaW9uOiB0b28gc2xvdywgZGlkbid0IHN1cHBvcnQgdW5pY29kZVxuLy8gY29uc3QgZW1haWxSZWdleCA9IC9eKCgoW2Etel18XFxkfFshI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKyhcXC4oW2Etel18XFxkfFshI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKykqKXwoKFxceDIyKSgoKChcXHgyMHxcXHgwOSkqKFxceDBkXFx4MGEpKT8oXFx4MjB8XFx4MDkpKyk/KChbXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3Zl18XFx4MjF8W1xceDIzLVxceDViXXxbXFx4NWQtXFx4N2VdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoXFxcXChbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpKSooKChcXHgyMHxcXHgwOSkqKFxceDBkXFx4MGEpKT8oXFx4MjB8XFx4MDkpKyk/KFxceDIyKSkpQCgoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKFthLXpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKihbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSlcXC4pKygoW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCgoW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKFthLXpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKihbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKSQvaTtcbi8vb2xkIGVtYWlsIHJlZ2V4XG4vLyBjb25zdCBlbWFpbFJlZ2V4ID0gL14oKFtePD4oKVtcXF0uLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXS4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKCg/IS0pKFtePD4oKVtcXF0uLDs6XFxzQFwiXStcXC4pK1tePD4oKVtcXF0uLDs6XFxzQFwiXXsxLH0pW14tPD4oKVtcXF0uLDs6XFxzQFwiXSQvaTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXFxcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFxcWygoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcXSl8KFxcW0lQdjY6KChbYS1mMC05XXsxLDR9Oil7N318OjooW2EtZjAtOV17MSw0fTopezAsNn18KFthLWYwLTldezEsNH06KXsxfTooW2EtZjAtOV17MSw0fTopezAsNX18KFthLWYwLTldezEsNH06KXsyfTooW2EtZjAtOV17MSw0fTopezAsNH18KFthLWYwLTldezEsNH06KXszfTooW2EtZjAtOV17MSw0fTopezAsM318KFthLWYwLTldezEsNH06KXs0fTooW2EtZjAtOV17MSw0fTopezAsMn18KFthLWYwLTldezEsNH06KXs1fTooW2EtZjAtOV17MSw0fTopezAsMX0pKFthLWYwLTldezEsNH18KCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpKVxcXSl8KFtBLVphLXowLTldKFtBLVphLXowLTktXSpbQS1aYS16MC05XSkqKFxcLltBLVphLXpdezIsfSkrKSkkLztcbi8vIGNvbnN0IGVtYWlsUmVnZXggPVxuLy8gICAvXlthLXpBLVowLTlcXC5cXCFcXCNcXCRcXCVcXCZcXCdcXCpcXCtcXC9cXD1cXD9cXF5cXF9cXGBcXHtcXHxcXH1cXH5cXC1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eKD86W2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKnxcIig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3Zl18XFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZS1cXHg3Zl0pKlwiKUAoPzooPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/fFxcWyg/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/fFthLXowLTktXSpbYS16MC05XTooPzpbXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHgyMS1cXHg1YVxceDUzLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkrKVxcXSkkL2k7XG5jb25zdCBlbWFpbFJlZ2V4ID0gL14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVowLTlfJytcXC1cXC5dKilbQS1aMC05XystXUAoW0EtWjAtOV1bQS1aMC05XFwtXSpcXC4pK1tBLVpdezIsfSQvaTtcbi8vIGNvbnN0IGVtYWlsUmVnZXggPVxuLy8gICAvXlthLXowLTkuISMkJSZcdTIwMTkqKy89P15fYHt8fX4tXStAW2EtejAtOS1dKyg/OlxcLlthLXowLTlcXC1dKykqJC9pO1xuLy8gZnJvbSBodHRwczovL3RoZWtldmluc2NvdHQuY29tL2Vtb2ppcy1pbi1qYXZhc2NyaXB0LyN3cml0aW5nLWEtcmVndWxhci1leHByZXNzaW9uXG5jb25zdCBfZW1vamlSZWdleCA9IGBeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJGA7XG5sZXQgZW1vamlSZWdleDtcbi8vIGZhc3Rlciwgc2ltcGxlciwgc2FmZXJcbmNvbnN0IGlwdjRSZWdleCA9IC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC87XG5jb25zdCBpcHY0Q2lkclJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oM1swLTJdfFsxMl0/WzAtOV0pJC87XG4vLyBjb25zdCBpcHY2UmVnZXggPVxuLy8gL14oKFthLWYwLTldezEsNH06KXs3fXw6OihbYS1mMC05XXsxLDR9Oil7MCw2fXwoW2EtZjAtOV17MSw0fTopezF9OihbYS1mMC05XXsxLDR9Oil7MCw1fXwoW2EtZjAtOV17MSw0fTopezJ9OihbYS1mMC05XXsxLDR9Oil7MCw0fXwoW2EtZjAtOV17MSw0fTopezN9OihbYS1mMC05XXsxLDR9Oil7MCwzfXwoW2EtZjAtOV17MSw0fTopezR9OihbYS1mMC05XXsxLDR9Oil7MCwyfXwoW2EtZjAtOV17MSw0fTopezV9OihbYS1mMC05XXsxLDR9Oil7MCwxfSkoW2EtZjAtOV17MSw0fXwoKCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSlcXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpJC87XG5jb25zdCBpcHY2UmVnZXggPSAvXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSkkLztcbmNvbnN0IGlwdjZDaWRyUmVnZXggPSAvXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvO1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzg2MDM5Mi9kZXRlcm1pbmUtaWYtc3RyaW5nLWlzLWluLWJhc2U2NC11c2luZy1qYXZhc2NyaXB0XG5jb25zdCBiYXNlNjRSZWdleCA9IC9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLztcbi8vIGh0dHBzOi8vYmFzZTY0Lmd1cnUvc3RhbmRhcmRzL2Jhc2U2NHVybFxuY29uc3QgYmFzZTY0dXJsUmVnZXggPSAvXihbMC05YS16QS1aLV9dezR9KSooKFswLTlhLXpBLVotX117Mn0oPT0pPyl8KFswLTlhLXpBLVotX117M30oPSk/KSk/JC87XG4vLyBzaW1wbGVcbi8vIGNvbnN0IGRhdGVSZWdleFNvdXJjZSA9IGBcXFxcZHs0fS1cXFxcZHsyfS1cXFxcZHsyfWA7XG4vLyBubyBsZWFwIHllYXIgdmFsaWRhdGlvblxuLy8gY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYFxcXFxkezR9LSgoMFsxMzU3OF18MTB8MTIpLTMxfCgwWzEzLTldfDFbMC0yXSktMzB8KDBbMS05XXwxWzAtMl0pLSgwWzEtOV18MVxcXFxkfDJcXFxcZCkpYDtcbi8vIHdpdGggbGVhcCB5ZWFyIHZhbGlkYXRpb25cbmNvbnN0IGRhdGVSZWdleFNvdXJjZSA9IGAoKFxcXFxkXFxcXGRbMjQ2OF1bMDQ4XXxcXFxcZFxcXFxkWzEzNTc5XVsyNl18XFxcXGRcXFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcXFxkezR9LSgoMFsxMzU3OF18MVswMl0pLSgwWzEtOV18WzEyXVxcXFxkfDNbMDFdKXwoMFs0NjldfDExKS0oMFsxLTldfFsxMl1cXFxcZHwzMCl8KDAyKS0oMFsxLTldfDFcXFxcZHwyWzAtOF0pKSlgO1xuY29uc3QgZGF0ZVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7ZGF0ZVJlZ2V4U291cmNlfSRgKTtcbmZ1bmN0aW9uIHRpbWVSZWdleFNvdXJjZShhcmdzKSB7XG4gICAgbGV0IHNlY29uZHNSZWdleFNvdXJjZSA9IGBbMC01XVxcXFxkYDtcbiAgICBpZiAoYXJncy5wcmVjaXNpb24pIHtcbiAgICAgICAgc2Vjb25kc1JlZ2V4U291cmNlID0gYCR7c2Vjb25kc1JlZ2V4U291cmNlfVxcXFwuXFxcXGR7JHthcmdzLnByZWNpc2lvbn19YDtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXJncy5wcmVjaXNpb24gPT0gbnVsbCkge1xuICAgICAgICBzZWNvbmRzUmVnZXhTb3VyY2UgPSBgJHtzZWNvbmRzUmVnZXhTb3VyY2V9KFxcXFwuXFxcXGQrKT9gO1xuICAgIH1cbiAgICBjb25zdCBzZWNvbmRzUXVhbnRpZmllciA9IGFyZ3MucHJlY2lzaW9uID8gXCIrXCIgOiBcIj9cIjsgLy8gcmVxdWlyZSBzZWNvbmRzIGlmIHByZWNpc2lvbiBpcyBub256ZXJvXG4gICAgcmV0dXJuIGAoWzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZCg6JHtzZWNvbmRzUmVnZXhTb3VyY2V9KSR7c2Vjb25kc1F1YW50aWZpZXJ9YDtcbn1cbmZ1bmN0aW9uIHRpbWVSZWdleChhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4ke3RpbWVSZWdleFNvdXJjZShhcmdzKX0kYCk7XG59XG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzMxNDMyMzFcbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZVJlZ2V4KGFyZ3MpIHtcbiAgICBsZXQgcmVnZXggPSBgJHtkYXRlUmVnZXhTb3VyY2V9VCR7dGltZVJlZ2V4U291cmNlKGFyZ3MpfWA7XG4gICAgY29uc3Qgb3B0cyA9IFtdO1xuICAgIG9wdHMucHVzaChhcmdzLmxvY2FsID8gYFo/YCA6IGBaYCk7XG4gICAgaWYgKGFyZ3Mub2Zmc2V0KVxuICAgICAgICBvcHRzLnB1c2goYChbKy1dXFxcXGR7Mn06P1xcXFxkezJ9KWApO1xuICAgIHJlZ2V4ID0gYCR7cmVnZXh9KCR7b3B0cy5qb2luKFwifFwiKX0pYDtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7cmVnZXh9JGApO1xufVxuZnVuY3Rpb24gaXNWYWxpZElQKGlwLCB2ZXJzaW9uKSB7XG4gICAgaWYgKCh2ZXJzaW9uID09PSBcInY0XCIgfHwgIXZlcnNpb24pICYmIGlwdjRSZWdleC50ZXN0KGlwKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh2ZXJzaW9uID09PSBcInY2XCIgfHwgIXZlcnNpb24pICYmIGlwdjZSZWdleC50ZXN0KGlwKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNWYWxpZEpXVChqd3QsIGFsZykge1xuICAgIGlmICghand0UmVnZXgudGVzdChqd3QpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgW2hlYWRlcl0gPSBqd3Quc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoIWhlYWRlcilcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gQ29udmVydCBiYXNlNjR1cmwgdG8gYmFzZTY0XG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IGhlYWRlclxuICAgICAgICAgICAgLnJlcGxhY2UoLy0vZywgXCIrXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXy9nLCBcIi9cIilcbiAgICAgICAgICAgIC5wYWRFbmQoaGVhZGVyLmxlbmd0aCArICgoNCAtIChoZWFkZXIubGVuZ3RoICUgNCkpICUgNCksIFwiPVwiKTtcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoYXRvYihiYXNlNjQpKTtcbiAgICAgICAgaWYgKHR5cGVvZiBkZWNvZGVkICE9PSBcIm9iamVjdFwiIHx8IGRlY29kZWQgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChcInR5cFwiIGluIGRlY29kZWQgJiYgZGVjb2RlZD8udHlwICE9PSBcIkpXVFwiKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWRlY29kZWQuYWxnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoYWxnICYmIGRlY29kZWQuYWxnICE9PSBhbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc1ZhbGlkQ2lkcihpcCwgdmVyc2lvbikge1xuICAgIGlmICgodmVyc2lvbiA9PT0gXCJ2NFwiIHx8ICF2ZXJzaW9uKSAmJiBpcHY0Q2lkclJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjZcIiB8fCAhdmVyc2lvbikgJiYgaXB2NkNpZHJSZWdleC50ZXN0KGlwKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0IGNsYXNzIFpvZFN0cmluZyBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgaW5wdXQuZGF0YSA9IFN0cmluZyhpbnB1dC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnN0cmluZykge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zdHJpbmcsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgbGV0IGN0eCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA+IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibGVuZ3RoXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29CaWcgPSBpbnB1dC5kYXRhLmxlbmd0aCA+IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gaW5wdXQuZGF0YS5sZW5ndGggPCBjaGVjay52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9vQmlnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZW1haWxcIikge1xuICAgICAgICAgICAgICAgIGlmICghZW1haWxSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImVtb2ppXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWVtb2ppUmVnZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZW1vamlSZWdleCA9IG5ldyBSZWdFeHAoX2Vtb2ppUmVnZXgsIFwidVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFlbW9qaVJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJlbW9qaVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidXVpZFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1dWlkUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInV1aWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm5hbm9pZFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW5vaWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwibmFub2lkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJjdWlkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiY3VpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiY3VpZDJcIikge1xuICAgICAgICAgICAgICAgIGlmICghY3VpZDJSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiY3VpZDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInVsaWRcIikge1xuICAgICAgICAgICAgICAgIGlmICghdWxpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJ1bGlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1cmxcIikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBVUkwoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJ1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInJlZ2V4XCIpIHtcbiAgICAgICAgICAgICAgICBjaGVjay5yZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBjaGVjay5yZWdleC50ZXN0KGlucHV0LmRhdGEpO1xuICAgICAgICAgICAgICAgIGlmICghdGVzdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInJlZ2V4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0cmltXCIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5kYXRhID0gaW5wdXQuZGF0YS50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImluY2x1ZGVzXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRhdGEuaW5jbHVkZXMoY2hlY2sudmFsdWUsIGNoZWNrLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7IGluY2x1ZGVzOiBjaGVjay52YWx1ZSwgcG9zaXRpb246IGNoZWNrLnBvc2l0aW9uIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0b0xvd2VyQ2FzZVwiKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidG9VcHBlckNhc2VcIikge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBpbnB1dC5kYXRhLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInN0YXJ0c1dpdGhcIikge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGF0YS5zdGFydHNXaXRoKGNoZWNrLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7IHN0YXJ0c1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbmRzV2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dC5kYXRhLmVuZHNXaXRoKGNoZWNrLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7IGVuZHNXaXRoOiBjaGVjay52YWx1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gZGF0ZXRpbWVSZWdleChjaGVjayk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImRhdGVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gZGF0ZVJlZ2V4O1xuICAgICAgICAgICAgICAgIGlmICghcmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRpbWVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGltZVJlZ2V4KGNoZWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJ0aW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJkdXJhdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkdXJhdGlvblJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJkdXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiaXBcIikge1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZElQKGlucHV0LmRhdGEsIGNoZWNrLnZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiaXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImp3dFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSldUKGlucHV0LmRhdGEsIGNoZWNrLmFsZykpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJqd3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImNpZHJcIikge1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZENpZHIoaW5wdXQuZGF0YSwgY2hlY2sudmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjaWRyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJiYXNlNjRcIikge1xuICAgICAgICAgICAgICAgIGlmICghYmFzZTY0UmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImJhc2U2NFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiYmFzZTY0dXJsXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJhc2U2NHVybFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgX3JlZ2V4KHJlZ2V4LCB2YWxpZGF0aW9uLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmluZW1lbnQoKGRhdGEpID0+IHJlZ2V4LnRlc3QoZGF0YSksIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24sXG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZW1haWwobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImVtYWlsXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgdXJsKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1cmxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBlbW9qaShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiZW1vamlcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1dWlkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1dWlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgbmFub2lkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJuYW5vaWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBjdWlkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJjdWlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgY3VpZDIobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImN1aWQyXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgdWxpZChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwidWxpZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGJhc2U2NChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiYmFzZTY0XCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgYmFzZTY0dXJsKG1lc3NhZ2UpIHtcbiAgICAgICAgLy8gYmFzZTY0dXJsIGVuY29kaW5nIGlzIGEgbW9kaWZpY2F0aW9uIG9mIGJhc2U2NCB0aGF0IGNhbiBzYWZlbHkgYmUgdXNlZCBpbiBVUkxzIGFuZCBmaWxlbmFtZXNcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiYmFzZTY0dXJsXCIsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBqd3Qob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImp3dFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucykgfSk7XG4gICAgfVxuICAgIGlwKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJpcFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucykgfSk7XG4gICAgfVxuICAgIGNpZHIob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImNpZHJcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnMpIH0pO1xuICAgIH1cbiAgICBkYXRldGltZShvcHRpb25zKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgICAgICBraW5kOiBcImRhdGV0aW1lXCIsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgIG9mZnNldDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJkYXRldGltZVwiLFxuICAgICAgICAgICAgcHJlY2lzaW9uOiB0eXBlb2Ygb3B0aW9ucz8ucHJlY2lzaW9uID09PSBcInVuZGVmaW5lZFwiID8gbnVsbCA6IG9wdGlvbnM/LnByZWNpc2lvbixcbiAgICAgICAgICAgIG9mZnNldDogb3B0aW9ucz8ub2Zmc2V0ID8/IGZhbHNlLFxuICAgICAgICAgICAgbG9jYWw6IG9wdGlvbnM/LmxvY2FsID8/IGZhbHNlLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnM/Lm1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGF0ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiZGF0ZVwiLCBtZXNzYWdlIH0pO1xuICAgIH1cbiAgICB0aW1lKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAgICAgIGtpbmQ6IFwidGltZVwiLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwidGltZVwiLFxuICAgICAgICAgICAgcHJlY2lzaW9uOiB0eXBlb2Ygb3B0aW9ucz8ucHJlY2lzaW9uID09PSBcInVuZGVmaW5lZFwiID8gbnVsbCA6IG9wdGlvbnM/LnByZWNpc2lvbixcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zPy5tZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGR1cmF0aW9uKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJkdXJhdGlvblwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIHJlZ2V4KHJlZ2V4LCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcInJlZ2V4XCIsXG4gICAgICAgICAgICByZWdleDogcmVnZXgsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbmNsdWRlcyh2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJpbmNsdWRlc1wiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgcG9zaXRpb246IG9wdGlvbnM/LnBvc2l0aW9uLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnM/Lm1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhcnRzV2l0aCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJzdGFydHNXaXRoXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbmRzV2l0aCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJlbmRzV2l0aFwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWluKG1pbkxlbmd0aCwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBtaW5MZW5ndGgsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtYXgobWF4TGVuZ3RoLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IG1heExlbmd0aCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxlbmd0aChsZW4sIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibGVuZ3RoXCIsXG4gICAgICAgICAgICB2YWx1ZTogbGVuLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXF1aXZhbGVudCB0byBgLm1pbigxKWBcbiAgICAgKi9cbiAgICBub25lbXB0eShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbigxLCBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkpO1xuICAgIH1cbiAgICB0cmltKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCB7IGtpbmQ6IFwidHJpbVwiIH1dLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgdG9Mb3dlckNhc2UoKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIHsga2luZDogXCJ0b0xvd2VyQ2FzZVwiIH1dLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgdG9VcHBlckNhc2UoKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIHsga2luZDogXCJ0b1VwcGVyQ2FzZVwiIH1dLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IGlzRGF0ZXRpbWUoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZGF0ZXRpbWVcIik7XG4gICAgfVxuICAgIGdldCBpc0RhdGUoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZGF0ZVwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVGltZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ0aW1lXCIpO1xuICAgIH1cbiAgICBnZXQgaXNEdXJhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkdXJhdGlvblwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRW1haWwoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1haWxcIik7XG4gICAgfVxuICAgIGdldCBpc1VSTCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1cmxcIik7XG4gICAgfVxuICAgIGdldCBpc0Vtb2ppKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImVtb2ppXCIpO1xuICAgIH1cbiAgICBnZXQgaXNVVUlEKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInV1aWRcIik7XG4gICAgfVxuICAgIGdldCBpc05BTk9JRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJuYW5vaWRcIik7XG4gICAgfVxuICAgIGdldCBpc0NVSUQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiY3VpZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ1VJRDIoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiY3VpZDJcIik7XG4gICAgfVxuICAgIGdldCBpc1VMSUQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidWxpZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzSVAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiaXBcIik7XG4gICAgfVxuICAgIGdldCBpc0NJRFIoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiY2lkclwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQmFzZTY0KCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImJhc2U2NFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQmFzZTY0dXJsKCkge1xuICAgICAgICAvLyBiYXNlNjR1cmwgZW5jb2RpbmcgaXMgYSBtb2RpZmljYXRpb24gb2YgYmFzZTY0IHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGluIFVSTHMgYW5kIGZpbGVuYW1lc1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImJhc2U2NHVybFwiKTtcbiAgICB9XG4gICAgZ2V0IG1pbkxlbmd0aCgpIHtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBnZXQgbWF4TGVuZ3RoKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxufVxuWm9kU3RyaW5nLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nLFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlID8/IGZhbHNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzk2NjQ4NC93aHktZG9lcy1tb2R1bHVzLW9wZXJhdG9yLXJldHVybi1mcmFjdGlvbmFsLW51bWJlci1pbi1qYXZhc2NyaXB0LzMxNzExMDM0IzMxNzExMDM0XG5mdW5jdGlvbiBmbG9hdFNhZmVSZW1haW5kZXIodmFsLCBzdGVwKSB7XG4gICAgY29uc3QgdmFsRGVjQ291bnQgPSAodmFsLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBzdGVwRGVjQ291bnQgPSAoc3RlcC50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSB8fCBcIlwiKS5sZW5ndGg7XG4gICAgY29uc3QgZGVjQ291bnQgPSB2YWxEZWNDb3VudCA+IHN0ZXBEZWNDb3VudCA/IHZhbERlY0NvdW50IDogc3RlcERlY0NvdW50O1xuICAgIGNvbnN0IHZhbEludCA9IE51bWJlci5wYXJzZUludCh2YWwudG9GaXhlZChkZWNDb3VudCkucmVwbGFjZShcIi5cIiwgXCJcIikpO1xuICAgIGNvbnN0IHN0ZXBJbnQgPSBOdW1iZXIucGFyc2VJbnQoc3RlcC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgcmV0dXJuICh2YWxJbnQgJSBzdGVwSW50KSAvIDEwICoqIGRlY0NvdW50O1xufVxuZXhwb3J0IGNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm1pbiA9IHRoaXMuZ3RlO1xuICAgICAgICB0aGlzLm1heCA9IHRoaXMubHRlO1xuICAgICAgICB0aGlzLnN0ZXAgPSB0aGlzLm11bHRpcGxlT2Y7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgaW5wdXQuZGF0YSA9IE51bWJlcihpbnB1dC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udW1iZXIsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3R4ID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJpbnRcIikge1xuICAgICAgICAgICAgICAgIGlmICghdXRpbC5pc0ludGVnZXIoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcImludGVnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBcImZsb2F0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gY2hlY2suaW5jbHVzaXZlID8gaW5wdXQuZGF0YSA8IGNoZWNrLnZhbHVlIDogaW5wdXQuZGF0YSA8PSBjaGVjay52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29CaWcgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhID4gY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhID49IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm11bHRpcGxlT2ZcIikge1xuICAgICAgICAgICAgICAgIGlmIChmbG9hdFNhZmVSZW1haW5kZXIoaW5wdXQuZGF0YSwgY2hlY2sudmFsdWUpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImZpbml0ZVwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLm5vdF9maW5pdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxuICAgIGd0ZSh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgZ3QodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBsdGUodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGx0KHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgc2V0TGltaXQoa2luZCwgdmFsdWUsIGluY2x1c2l2ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZE51bWJlcih7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWYuY2hlY2tzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2luZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2FkZENoZWNrKGNoZWNrKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIGNoZWNrXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGludChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImludFwiLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcG9zaXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25wb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25uZWdhdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtdWx0aXBsZU9mKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm11bHRpcGxlT2ZcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZpbml0ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImZpbml0ZVwiLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2FmZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KS5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBtaW5WYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG4gICAgZ2V0IGlzSW50KCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImludFwiIHx8IChjaC5raW5kID09PSBcIm11bHRpcGxlT2ZcIiAmJiB1dGlsLmlzSW50ZWdlcihjaC52YWx1ZSkpKTtcbiAgICB9XG4gICAgZ2V0IGlzRmluaXRlKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwiZmluaXRlXCIgfHwgY2gua2luZCA9PT0gXCJpbnRcIiB8fCBjaC5raW5kID09PSBcIm11bHRpcGxlT2ZcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobWluKSAmJiBOdW1iZXIuaXNGaW5pdGUobWF4KTtcbiAgICB9XG59XG5ab2ROdW1iZXIuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROdW1iZXIsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgfHwgZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kQmlnSW50IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubWluID0gdGhpcy5ndGU7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5sdGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpbnB1dC5kYXRhID0gQmlnSW50KGlucHV0LmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoaW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYmlnaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3R4ID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gY2hlY2suaW5jbHVzaXZlID8gaW5wdXQuZGF0YSA8IGNoZWNrLnZhbHVlIDogaW5wdXQuZGF0YSA8PSBjaGVjay52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29CaWcgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhID4gY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhID49IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm11bHRpcGxlT2ZcIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhICUgY2hlY2sudmFsdWUgIT09IEJpZ0ludCgwKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVPZjogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxuICAgIF9nZXRJbnZhbGlkSW5wdXQoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5iaWdpbnQsXG4gICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgZ3RlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBndCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGx0ZSh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHQodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBzZXRMaW1pdChraW5kLCB2YWx1ZSwgaW5jbHVzaXZlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQmlnSW50KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RCaWdJbnQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcG9zaXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBCaWdJbnQoMCksXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmVnYXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiBCaWdJbnQoMCksXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbm9ucG9zaXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiBCaWdJbnQoMCksXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25uZWdhdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG11bHRpcGxlT2YodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibXVsdGlwbGVPZlwiLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgbWluVmFsdWUoKSB7XG4gICAgICAgIGxldCBtaW4gPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgZ2V0IG1heFZhbHVlKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxufVxuWm9kQmlnSW50LmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQmlnSW50LFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlID8/IGZhbHNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEJvb2xlYW4gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIGlucHV0LmRhdGEgPSBCb29sZWFuKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYm9vbGVhbikge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5ib29sZWFuLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZEJvb2xlYW4uY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQm9vbGVhbih7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQm9vbGVhbixcbiAgICAgICAgY29lcmNlOiBwYXJhbXM/LmNvZXJjZSB8fCBmYWxzZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2REYXRlIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gbmV3IERhdGUoaW5wdXQuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5kYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmRhdGUsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGlucHV0LmRhdGEuZ2V0VGltZSgpKSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gbmV3IFBhcnNlU3RhdHVzKCk7XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoZWNrLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5nZXRUaW1lKCkgPCBjaGVjay52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEuZ2V0VGltZSgpID4gY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0ZShpbnB1dC5kYXRhLmdldFRpbWUoKSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZERhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWluKG1pbkRhdGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogbWluRGF0ZS5nZXRUaW1lKCksXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtYXgobWF4RGF0ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiBtYXhEYXRlLmdldFRpbWUoKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBtaW5EYXRlKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW4gIT0gbnVsbCA/IG5ldyBEYXRlKG1pbikgOiBudWxsO1xuICAgIH1cbiAgICBnZXQgbWF4RGF0ZSgpIHtcbiAgICAgICAgbGV0IG1heCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KVxuICAgICAgICAgICAgICAgICAgICBtYXggPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4ICE9IG51bGwgPyBuZXcgRGF0ZShtYXgpIDogbnVsbDtcbiAgICB9XG59XG5ab2REYXRlLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZERhdGUoe1xuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlIHx8IGZhbHNlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERhdGUsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kU3ltYm9sIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3ltYm9sKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN5bWJvbCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RTeW1ib2wuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU3ltYm9sKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTeW1ib2wsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVW5kZWZpbmVkIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RVbmRlZmluZWQuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVW5kZWZpbmVkKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmRlZmluZWQsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTnVsbCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubnVsbCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2ROdWxsLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGwoe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGwsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kQW55IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIC8vIHRvIHByZXZlbnQgaW5zdGFuY2VzIG9mIG90aGVyIGNsYXNzZXMgZnJvbSBleHRlbmRpbmcgWm9kQW55LiB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBjYXRjaGFsbCBpbiBab2RPYmplY3QuXG4gICAgICAgIHRoaXMuX2FueSA9IHRydWU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kQW55LmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFueSh7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQW55LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZFVua25vd24gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgLy8gcmVxdWlyZWRcbiAgICAgICAgdGhpcy5fdW5rbm93biA9IHRydWU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kVW5rbm93bi5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmtub3duKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmtub3duLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZE5ldmVyIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmV2ZXIsXG4gICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG59XG5ab2ROZXZlci5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROZXZlcih7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmV2ZXIsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVm9pZCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS52b2lkLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFZvaWQuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVm9pZCh7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVm9pZCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RBcnJheSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCwgc3RhdHVzIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5hcnJheSkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5hcnJheSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYuZXhhY3RMZW5ndGggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGN0eC5kYXRhLmxlbmd0aCA+IGRlZi5leGFjdExlbmd0aC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gY3R4LmRhdGEubGVuZ3RoIDwgZGVmLmV4YWN0TGVuZ3RoLnZhbHVlO1xuICAgICAgICAgICAgaWYgKHRvb0JpZyB8fCB0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiB0b29CaWcgPyBab2RJc3N1ZUNvZGUudG9vX2JpZyA6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW06ICh0b29TbWFsbCA/IGRlZi5leGFjdExlbmd0aC52YWx1ZSA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06ICh0b29CaWcgPyBkZWYuZXhhY3RMZW5ndGgudmFsdWUgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5leGFjdExlbmd0aC5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYubWluTGVuZ3RoICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgZGVmLm1pbkxlbmd0aC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluTGVuZ3RoLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWluTGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5tYXhMZW5ndGggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPiBkZWYubWF4TGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4TGVuZ3RoLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uY3R4LmRhdGFdLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VBc3luYyhuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKTtcbiAgICAgICAgICAgIH0pKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBbLi4uY3R4LmRhdGFdLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRlZi50eXBlLl9wYXJzZVN5bmMobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGl0ZW0sIGN0eC5wYXRoLCBpKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdCk7XG4gICAgfVxuICAgIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGU7XG4gICAgfVxuICAgIG1pbihtaW5MZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBtaW5MZW5ndGg6IHsgdmFsdWU6IG1pbkxlbmd0aCwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtYXgobWF4TGVuZ3RoLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgbWF4TGVuZ3RoOiB7IHZhbHVlOiBtYXhMZW5ndGgsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGVuZ3RoKGxlbiwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGV4YWN0TGVuZ3RoOiB7IHZhbHVlOiBsZW4sIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbm9uZW1wdHkobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSk7XG4gICAgfVxufVxuWm9kQXJyYXkuY3JlYXRlID0gKHNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICAgIHR5cGU6IHNjaGVtYSxcbiAgICAgICAgbWluTGVuZ3RoOiBudWxsLFxuICAgICAgICBtYXhMZW5ndGg6IG51bGwsXG4gICAgICAgIGV4YWN0TGVuZ3RoOiBudWxsLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZnVuY3Rpb24gZGVlcFBhcnRpYWxpZnkoc2NoZW1hKSB7XG4gICAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9iamVjdCkge1xuICAgICAgICBjb25zdCBuZXdTaGFwZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEuc2hhcGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gc2NoZW1hLnNoYXBlW2tleV07XG4gICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gWm9kT3B0aW9uYWwuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KGZpZWxkU2NoZW1hKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RBcnJheSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgICAgIC4uLnNjaGVtYS5fZGVmLFxuICAgICAgICAgICAgdHlwZTogZGVlcFBhcnRpYWxpZnkoc2NoZW1hLmVsZW1lbnQpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kT3B0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEudW53cmFwKCkpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kTnVsbGFibGUpIHtcbiAgICAgICAgcmV0dXJuIFpvZE51bGxhYmxlLmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEudW53cmFwKCkpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kVHVwbGUpIHtcbiAgICAgICAgcmV0dXJuIFpvZFR1cGxlLmNyZWF0ZShzY2hlbWEuaXRlbXMubWFwKChpdGVtKSA9PiBkZWVwUGFydGlhbGlmeShpdGVtKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kT2JqZWN0IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX2NhY2hlZCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBJbiBtb3N0IGNhc2VzLCB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgLSB1bmtub3duIHByb3BlcnRpZXMgYXJlIG5vdyBzaWxlbnRseSBzdHJpcHBlZC5cbiAgICAgICAgICogSWYgeW91IHdhbnQgdG8gcGFzcyB0aHJvdWdoIHVua25vd24gcHJvcGVydGllcywgdXNlIGAucGFzc3Rocm91Z2goKWAgaW5zdGVhZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubm9uc3RyaWN0ID0gdGhpcy5wYXNzdGhyb3VnaDtcbiAgICAgICAgLy8gZXh0ZW5kPFxuICAgICAgICAvLyAgIEF1Z21lbnRhdGlvbiBleHRlbmRzIFpvZFJhd1NoYXBlLFxuICAgICAgICAvLyAgIE5ld091dHB1dCBleHRlbmRzIHV0aWwuZmxhdHRlbjx7XG4gICAgICAgIC8vICAgICBbayBpbiBrZXlvZiBBdWdtZW50YXRpb24gfCBrZXlvZiBPdXRwdXRdOiBrIGV4dGVuZHMga2V5b2YgQXVnbWVudGF0aW9uXG4gICAgICAgIC8vICAgICAgID8gQXVnbWVudGF0aW9uW2tdW1wiX291dHB1dFwiXVxuICAgICAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBPdXRwdXRcbiAgICAgICAgLy8gICAgICAgPyBPdXRwdXRba11cbiAgICAgICAgLy8gICAgICAgOiBuZXZlcjtcbiAgICAgICAgLy8gICB9PixcbiAgICAgICAgLy8gICBOZXdJbnB1dCBleHRlbmRzIHV0aWwuZmxhdHRlbjx7XG4gICAgICAgIC8vICAgICBbayBpbiBrZXlvZiBBdWdtZW50YXRpb24gfCBrZXlvZiBJbnB1dF06IGsgZXh0ZW5kcyBrZXlvZiBBdWdtZW50YXRpb25cbiAgICAgICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfaW5wdXRcIl1cbiAgICAgICAgLy8gICAgICAgOiBrIGV4dGVuZHMga2V5b2YgSW5wdXRcbiAgICAgICAgLy8gICAgICAgPyBJbnB1dFtrXVxuICAgICAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgICAgICAvLyAgIH0+XG4gICAgICAgIC8vID4oXG4gICAgICAgIC8vICAgYXVnbWVudGF0aW9uOiBBdWdtZW50YXRpb25cbiAgICAgICAgLy8gKTogWm9kT2JqZWN0PFxuICAgICAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIEF1Z21lbnRhdGlvbj4sXG4gICAgICAgIC8vICAgVW5rbm93bktleXMsXG4gICAgICAgIC8vICAgQ2F0Y2hhbGwsXG4gICAgICAgIC8vICAgTmV3T3V0cHV0LFxuICAgICAgICAvLyAgIE5ld0lucHV0XG4gICAgICAgIC8vID4ge1xuICAgICAgICAvLyAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgLy8gICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgLy8gICAgIHNoYXBlOiAoKSA9PiAoe1xuICAgICAgICAvLyAgICAgICAuLi50aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgLy8gICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgICAgICAvLyAgICAgfSksXG4gICAgICAgIC8vICAgfSkgYXMgYW55O1xuICAgICAgICAvLyB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYC5leHRlbmRgIGluc3RlYWRcbiAgICAgICAgICogICovXG4gICAgICAgIHRoaXMuYXVnbWVudCA9IHRoaXMuZXh0ZW5kO1xuICAgIH1cbiAgICBfZ2V0Q2FjaGVkKCkge1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZDtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB0aGlzLl9kZWYuc2hhcGUoKTtcbiAgICAgICAgY29uc3Qga2V5cyA9IHV0aWwub2JqZWN0S2V5cyhzaGFwZSk7XG4gICAgICAgIHRoaXMuX2NhY2hlZCA9IHsgc2hhcGUsIGtleXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZDtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IHsgc2hhcGUsIGtleXM6IHNoYXBlS2V5cyB9ID0gdGhpcy5fZ2V0Q2FjaGVkKCk7XG4gICAgICAgIGNvbnN0IGV4dHJhS2V5cyA9IFtdO1xuICAgICAgICBpZiAoISh0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBab2ROZXZlciAmJiB0aGlzLl9kZWYudW5rbm93bktleXMgPT09IFwic3RyaXBcIikpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGN0eC5kYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzaGFwZUtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBleHRyYUtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYWlycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFwZUtleXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleVZhbGlkYXRvciA9IHNoYXBlW2tleV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGN0eC5kYXRhW2tleV07XG4gICAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXk6IHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBrZXkgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZToga2V5VmFsaWRhdG9yLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBrZXkpKSxcbiAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBab2ROZXZlcikge1xuICAgICAgICAgICAgY29uc3QgdW5rbm93bktleXMgPSB0aGlzLl9kZWYudW5rbm93bktleXM7XG4gICAgICAgICAgICBpZiAodW5rbm93bktleXMgPT09IFwicGFzc3Rocm91Z2hcIikge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgICAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBjdHguZGF0YVtrZXldIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHVua25vd25LZXlzID09PSBcInN0cmljdFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5czogZXh0cmFLZXlzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodW5rbm93bktleXMgPT09IFwic3RyaXBcIikge1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnRlcm5hbCBab2RPYmplY3QgZXJyb3I6IGludmFsaWQgdW5rbm93bktleXMgdmFsdWUuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBydW4gY2F0Y2hhbGwgdmFsaWRhdGlvblxuICAgICAgICAgICAgY29uc3QgY2F0Y2hhbGwgPSB0aGlzLl9kZWYuY2F0Y2hhbGw7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBleHRyYUtleXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGN0eC5kYXRhW2tleV07XG4gICAgICAgICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0Y2hhbGwuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIGtleSkgLy8sIGN0eC5jaGlsZChrZXkpLCB2YWx1ZSwgZ2V0UGFyc2VkVHlwZSh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYWx3YXlzU2V0OiBrZXkgaW4gY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzeW5jUGFpcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3luY1BhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IHBhaXIuYWx3YXlzU2V0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQYWlycztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHN5bmNQYWlycykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBzeW5jUGFpcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgcGFpcnMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zaGFwZSgpO1xuICAgIH1cbiAgICBzdHJpY3QobWVzc2FnZSkge1xuICAgICAgICBlcnJvclV0aWwuZXJyVG9PYmo7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHVua25vd25LZXlzOiBcInN0cmljdFwiLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1hcDogKGlzc3VlLCBjdHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRFcnJvciA9IHRoaXMuX2RlZi5lcnJvck1hcD8uKGlzc3VlLCBjdHgpLm1lc3NhZ2UgPz8gY3R4LmRlZmF1bHRFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcInVucmVjb2duaXplZF9rZXlzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLm1lc3NhZ2UgPz8gZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZmF1bHRFcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RyaXAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHVua25vd25LZXlzOiBcInN0cmlwXCIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwYXNzdGhyb3VnaCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwicGFzc3Rocm91Z2hcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGNvbnN0IEF1Z21lbnRGYWN0b3J5ID1cbiAgICAvLyAgIDxEZWYgZXh0ZW5kcyBab2RPYmplY3REZWY+KGRlZjogRGVmKSA9PlxuICAgIC8vICAgPEF1Z21lbnRhdGlvbiBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICAvLyAgICAgYXVnbWVudGF0aW9uOiBBdWdtZW50YXRpb25cbiAgICAvLyAgICk6IFpvZE9iamVjdDxcbiAgICAvLyAgICAgZXh0ZW5kU2hhcGU8UmV0dXJuVHlwZTxEZWZbXCJzaGFwZVwiXT4sIEF1Z21lbnRhdGlvbj4sXG4gICAgLy8gICAgIERlZltcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgICBEZWZbXCJjYXRjaGFsbFwiXVxuICAgIC8vICAgPiA9PiB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgICAuLi5kZWYsXG4gICAgLy8gICAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgLy8gICAgICAgICAuLi5kZWYuc2hhcGUoKSxcbiAgICAvLyAgICAgICAgIC4uLmF1Z21lbnRhdGlvbixcbiAgICAvLyAgICAgICB9KSxcbiAgICAvLyAgICAgfSkgYXMgYW55O1xuICAgIC8vICAgfTtcbiAgICBleHRlbmQoYXVnbWVudGF0aW9uKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5zaGFwZSgpLFxuICAgICAgICAgICAgICAgIC4uLmF1Z21lbnRhdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJpb3IgdG8gem9kQDEuMC4xMiB0aGVyZSB3YXMgYSBidWcgaW4gdGhlXG4gICAgICogaW5mZXJyZWQgdHlwZSBvZiBtZXJnZWQgb2JqZWN0cy4gUGxlYXNlXG4gICAgICogdXBncmFkZSBpZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBpc3N1ZXMuXG4gICAgICovXG4gICAgbWVyZ2UobWVyZ2luZykge1xuICAgICAgICBjb25zdCBtZXJnZWQgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIHVua25vd25LZXlzOiBtZXJnaW5nLl9kZWYudW5rbm93bktleXMsXG4gICAgICAgICAgICBjYXRjaGFsbDogbWVyZ2luZy5fZGVmLmNhdGNoYWxsLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLnNoYXBlKCksXG4gICAgICAgICAgICAgICAgLi4ubWVyZ2luZy5fZGVmLnNoYXBlKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1lcmdlZDtcbiAgICB9XG4gICAgLy8gbWVyZ2U8XG4gICAgLy8gICBJbmNvbWluZyBleHRlbmRzIEFueVpvZE9iamVjdCxcbiAgICAvLyAgIEF1Z21lbnRhdGlvbiBleHRlbmRzIEluY29taW5nW1wic2hhcGVcIl0sXG4gICAgLy8gICBOZXdPdXRwdXQgZXh0ZW5kcyB7XG4gICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIE91dHB1dF06IGsgZXh0ZW5kcyBrZXlvZiBBdWdtZW50YXRpb25cbiAgICAvLyAgICAgICA/IEF1Z21lbnRhdGlvbltrXVtcIl9vdXRwdXRcIl1cbiAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBPdXRwdXRcbiAgICAvLyAgICAgICA/IE91dHB1dFtrXVxuICAgIC8vICAgICAgIDogbmV2ZXI7XG4gICAgLy8gICB9LFxuICAgIC8vICAgTmV3SW5wdXQgZXh0ZW5kcyB7XG4gICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIElucHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgIC8vICAgICAgID8gQXVnbWVudGF0aW9uW2tdW1wiX2lucHV0XCJdXG4gICAgLy8gICAgICAgOiBrIGV4dGVuZHMga2V5b2YgSW5wdXRcbiAgICAvLyAgICAgICA/IElucHV0W2tdXG4gICAgLy8gICAgICAgOiBuZXZlcjtcbiAgICAvLyAgIH1cbiAgICAvLyA+KFxuICAgIC8vICAgbWVyZ2luZzogSW5jb21pbmdcbiAgICAvLyApOiBab2RPYmplY3Q8XG4gICAgLy8gICBleHRlbmRTaGFwZTxULCBSZXR1cm5UeXBlPEluY29taW5nW1wiX2RlZlwiXVtcInNoYXBlXCJdPj4sXG4gICAgLy8gICBJbmNvbWluZ1tcIl9kZWZcIl1bXCJ1bmtub3duS2V5c1wiXSxcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcImNhdGNoYWxsXCJdLFxuICAgIC8vICAgTmV3T3V0cHV0LFxuICAgIC8vICAgTmV3SW5wdXRcbiAgICAvLyA+IHtcbiAgICAvLyAgIGNvbnN0IG1lcmdlZDogYW55ID0gbmV3IFpvZE9iamVjdCh7XG4gICAgLy8gICAgIHVua25vd25LZXlzOiBtZXJnaW5nLl9kZWYudW5rbm93bktleXMsXG4gICAgLy8gICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgLy8gICAgIHNoYXBlOiAoKSA9PlxuICAgIC8vICAgICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXModGhpcy5fZGVmLnNoYXBlKCksIG1lcmdpbmcuX2RlZi5zaGFwZSgpKSxcbiAgICAvLyAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgLy8gICB9KSBhcyBhbnk7XG4gICAgLy8gICByZXR1cm4gbWVyZ2VkO1xuICAgIC8vIH1cbiAgICBzZXRLZXkoa2V5LCBzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXVnbWVudCh7IFtrZXldOiBzY2hlbWEgfSk7XG4gICAgfVxuICAgIC8vIG1lcmdlPEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0PihcbiAgICAvLyAgIG1lcmdpbmc6IEluY29taW5nXG4gICAgLy8gKTogLy9ab2RPYmplY3Q8VCAmIEluY29taW5nW1wiX3NoYXBlXCJdLCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+ID0gKG1lcmdpbmcpID0+IHtcbiAgICAvLyBab2RPYmplY3Q8XG4gICAgLy8gICBleHRlbmRTaGFwZTxULCBSZXR1cm5UeXBlPEluY29taW5nW1wiX2RlZlwiXVtcInNoYXBlXCJdPj4sXG4gICAgLy8gICBJbmNvbWluZ1tcIl9kZWZcIl1bXCJ1bmtub3duS2V5c1wiXSxcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcImNhdGNoYWxsXCJdXG4gICAgLy8gPiB7XG4gICAgLy8gICAvLyBjb25zdCBtZXJnZWRTaGFwZSA9IG9iamVjdFV0aWwubWVyZ2VTaGFwZXMoXG4gICAgLy8gICAvLyAgIHRoaXMuX2RlZi5zaGFwZSgpLFxuICAgIC8vICAgLy8gICBtZXJnaW5nLl9kZWYuc2hhcGUoKVxuICAgIC8vICAgLy8gKTtcbiAgICAvLyAgIGNvbnN0IG1lcmdlZDogYW55ID0gbmV3IFpvZE9iamVjdCh7XG4gICAgLy8gICAgIHVua25vd25LZXlzOiBtZXJnaW5nLl9kZWYudW5rbm93bktleXMsXG4gICAgLy8gICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgLy8gICAgIHNoYXBlOiAoKSA9PlxuICAgIC8vICAgICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXModGhpcy5fZGVmLnNoYXBlKCksIG1lcmdpbmcuX2RlZi5zaGFwZSgpKSxcbiAgICAvLyAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgLy8gICB9KSBhcyBhbnk7XG4gICAgLy8gICByZXR1cm4gbWVyZ2VkO1xuICAgIC8vIH1cbiAgICBjYXRjaGFsbChpbmRleCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjYXRjaGFsbDogaW5kZXgsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwaWNrKG1hc2spIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKG1hc2spKSB7XG4gICAgICAgICAgICBpZiAobWFza1trZXldICYmIHRoaXMuc2hhcGVba2V5XSkge1xuICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IHNoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgb21pdChtYXNrKSB7XG4gICAgICAgIGNvbnN0IHNoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSkge1xuICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pIHtcbiAgICAgICAgICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgZGVlcFBhcnRpYWwoKSB7XG4gICAgICAgIHJldHVybiBkZWVwUGFydGlhbGlmeSh0aGlzKTtcbiAgICB9XG4gICAgcGFydGlhbChtYXNrKSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICBpZiAobWFzayAmJiAhbWFza1trZXldKSB7XG4gICAgICAgICAgICAgICAgbmV3U2hhcGVba2V5XSA9IGZpZWxkU2NoZW1hO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U2hhcGVba2V5XSA9IGZpZWxkU2NoZW1hLm9wdGlvbmFsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVxdWlyZWQobWFzaykge1xuICAgICAgICBjb25zdCBuZXdTaGFwZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpIHtcbiAgICAgICAgICAgIGlmIChtYXNrICYmICFtYXNrW2tleV0pIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICAgICAgbGV0IG5ld0ZpZWxkID0gZmllbGRTY2hlbWE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG5ld0ZpZWxkIGluc3RhbmNlb2YgWm9kT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RmllbGQgPSBuZXdGaWVsZC5fZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2hhcGVba2V5XSA9IG5ld0ZpZWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGtleW9mKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlWm9kRW51bSh1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpO1xuICAgIH1cbn1cblpvZE9iamVjdC5jcmVhdGUgPSAoc2hhcGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgc2hhcGU6ICgpID0+IHNoYXBlLFxuICAgICAgICB1bmtub3duS2V5czogXCJzdHJpcFwiLFxuICAgICAgICBjYXRjaGFsbDogWm9kTmV2ZXIuY3JlYXRlKCksXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuWm9kT2JqZWN0LnN0cmljdENyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIHVua25vd25LZXlzOiBcInN0cmljdFwiLFxuICAgICAgICBjYXRjaGFsbDogWm9kTmV2ZXIuY3JlYXRlKCksXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuWm9kT2JqZWN0LmxhenljcmVhdGUgPSAoc2hhcGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIHVua25vd25LZXlzOiBcInN0cmlwXCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVW5pb24gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9kZWYub3B0aW9ucztcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVzdWx0cyhyZXN1bHRzKSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gZmlyc3QgaXNzdWUtZnJlZSB2YWxpZGF0aW9uIGlmIGl0IGV4aXN0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0LnN0YXR1cyA9PT0gXCJ2YWxpZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhZGQgaXNzdWVzIGZyb20gZGlydHkgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGN0eC5jb21tb24uaXNzdWVzLnB1c2goLi4ucmVzdWx0LmN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmV0dXJuIGludmFsaWRcbiAgICAgICAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gbmV3IFpvZEVycm9yKHJlc3VsdC5jdHguY29tbW9uLmlzc3VlcykpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXG4gICAgICAgICAgICAgICAgdW5pb25FcnJvcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3B0aW9ucy5tYXAoYXN5bmMgKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3R4ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogYXdhaXQgb3B0aW9uLl9wYXJzZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgY3R4OiBjaGlsZEN0eCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkpLnRoZW4oaGFuZGxlUmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZGlydHkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBpc3N1ZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEN0eCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3R4LFxuICAgICAgICAgICAgICAgICAgICBjb21tb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN0eC5jb21tb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRpb24uX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjaGlsZEN0eCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJ2YWxpZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIiAmJiAhZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlydHkgPSB7IHJlc3VsdCwgY3R4OiBjaGlsZEN0eCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRDdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzLnB1c2goY2hpbGRDdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5kaXJ0eS5jdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpcnR5LnJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gaXNzdWVzLm1hcCgoaXNzdWVzKSA9PiBuZXcgWm9kRXJyb3IoaXNzdWVzKSk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbixcbiAgICAgICAgICAgICAgICB1bmlvbkVycm9ycyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcbiAgICB9XG59XG5ab2RVbmlvbi5jcmVhdGUgPSAodHlwZXMsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVW5pb24oe1xuICAgICAgICBvcHRpb25zOiB0eXBlcyxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmlvbixcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2REaXNjcmltaW5hdGVkVW5pb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5jb25zdCBnZXREaXNjcmltaW5hdG9yID0gKHR5cGUpID0+IHtcbiAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZExhenkpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS5zY2hlbWEpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kRWZmZWN0cykge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLmlubmVyVHlwZSgpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZExpdGVyYWwpIHtcbiAgICAgICAgcmV0dXJuIFt0eXBlLnZhbHVlXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZEVudW0pIHtcbiAgICAgICAgcmV0dXJuIHR5cGUub3B0aW9ucztcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZE5hdGl2ZUVudW0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGJhbi9iYW5cbiAgICAgICAgcmV0dXJuIHV0aWwub2JqZWN0VmFsdWVzKHR5cGUuZW51bSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2REZWZhdWx0KSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuX2RlZi5pbm5lclR5cGUpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kVW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZE51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtudWxsXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZE9wdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkLCAuLi5nZXREaXNjcmltaW5hdG9yKHR5cGUudW53cmFwKCkpXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZE51bGxhYmxlKSB7XG4gICAgICAgIHJldHVybiBbbnVsbCwgLi4uZ2V0RGlzY3JpbWluYXRvcih0eXBlLnVud3JhcCgpKV07XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RCcmFuZGVkKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUudW53cmFwKCkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kUmVhZG9ubHkpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RDYXRjaCkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLl9kZWYuaW5uZXJUeXBlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG59O1xuZXhwb3J0IGNsYXNzIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5vYmplY3QsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gdGhpcy5kaXNjcmltaW5hdG9yO1xuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yVmFsdWUgPSBjdHguZGF0YVtkaXNjcmltaW5hdG9yXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zTWFwLmdldChkaXNjcmltaW5hdG9yVmFsdWUpO1xuICAgICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBBcnJheS5mcm9tKHRoaXMub3B0aW9uc01hcC5rZXlzKCkpLFxuICAgICAgICAgICAgICAgIHBhdGg6IFtkaXNjcmltaW5hdG9yXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRpc2NyaW1pbmF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuZGlzY3JpbWluYXRvcjtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnNNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9uc01hcDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBkaXNjcmltaW5hdGVkIHVuaW9uIHNjaGVtYS4gSXRzIGJlaGF2aW91ciBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgbm9ybWFsIHoudW5pb24oKSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBIb3dldmVyLCBpdCBvbmx5IGFsbG93cyBhIHVuaW9uIG9mIG9iamVjdHMsIGFsbCBvZiB3aGljaCBuZWVkIHRvIHNoYXJlIGEgZGlzY3JpbWluYXRvciBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBtdXN0XG4gICAgICogaGF2ZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgZWFjaCBvYmplY3QgaW4gdGhlIHVuaW9uLlxuICAgICAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIHRoZSBuYW1lIG9mIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHR5cGVzIGFuIGFycmF5IG9mIG9iamVjdCBzY2hlbWFzXG4gICAgICogQHBhcmFtIHBhcmFtc1xuICAgICAqL1xuICAgIHN0YXRpYyBjcmVhdGUoZGlzY3JpbWluYXRvciwgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgICAgIC8vIEdldCBhbGwgdGhlIHZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWVzXG4gICAgICAgIGNvbnN0IG9wdGlvbnNNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIC8vIHRyeSB7XG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yVmFsdWVzID0gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnNoYXBlW2Rpc2NyaW1pbmF0b3JdKTtcbiAgICAgICAgICAgIGlmICghZGlzY3JpbWluYXRvclZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgZGlzY3JpbWluYXRvciB2YWx1ZSBmb3Iga2V5IFxcYCR7ZGlzY3JpbWluYXRvcn1cXGAgY291bGQgbm90IGJlIGV4dHJhY3RlZCBmcm9tIGFsbCBzY2hlbWEgb3B0aW9uc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkaXNjcmltaW5hdG9yVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnNNYXAuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NyaW1pbmF0b3IgcHJvcGVydHkgJHtTdHJpbmcoZGlzY3JpbWluYXRvcil9IGhhcyBkdXBsaWNhdGUgdmFsdWUgJHtTdHJpbmcodmFsdWUpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zTWFwLnNldCh2YWx1ZSwgdHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2REaXNjcmltaW5hdGVkVW5pb24oe1xuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REaXNjcmltaW5hdGVkVW5pb24sXG4gICAgICAgICAgICBkaXNjcmltaW5hdG9yLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnNNYXAsXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1lcmdlVmFsdWVzKGEsIGIpIHtcbiAgICBjb25zdCBhVHlwZSA9IGdldFBhcnNlZFR5cGUoYSk7XG4gICAgY29uc3QgYlR5cGUgPSBnZXRQYXJzZWRUeXBlKGIpO1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLm9iamVjdCAmJiBiVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgY29uc3QgYktleXMgPSB1dGlsLm9iamVjdEtleXMoYik7XG4gICAgICAgIGNvbnN0IHNoYXJlZEtleXMgPSB1dGlsLm9iamVjdEtleXMoYSkuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLmEsIC4uLmIgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcmVkS2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhhW2tleV0sIGJba2V5XSk7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5hcnJheSAmJiBiVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5hcnJheSkge1xuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1BID0gYVtpbmRleF07XG4gICAgICAgICAgICBjb25zdCBpdGVtQiA9IGJbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhpdGVtQSwgaXRlbUIpO1xuICAgICAgICAgICAgaWYgKCFzaGFyZWRWYWx1ZS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3QXJyYXkucHVzaChzaGFyZWRWYWx1ZS5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3QXJyYXkgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYVR5cGUgPT09IFpvZFBhcnNlZFR5cGUuZGF0ZSAmJiBiVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmICthID09PSArYikge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogYSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZEludGVyc2VjdGlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBoYW5kbGVQYXJzZWQgPSAocGFyc2VkTGVmdCwgcGFyc2VkUmlnaHQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0Fib3J0ZWQocGFyc2VkTGVmdCkgfHwgaXNBYm9ydGVkKHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gbWVyZ2VWYWx1ZXMocGFyc2VkTGVmdC52YWx1ZSwgcGFyc2VkUmlnaHQudmFsdWUpO1xuICAgICAgICAgICAgaWYgKCFtZXJnZWQudmFsaWQpIHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRGlydHkocGFyc2VkTGVmdCkgfHwgaXNEaXJ0eShwYXJzZWRSaWdodCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogbWVyZ2VkLmRhdGEgfTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLmxlZnQuX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRoaXMuX2RlZi5yaWdodC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdKS50aGVuKChbbGVmdCwgcmlnaHRdKSA9PiBoYW5kbGVQYXJzZWQobGVmdCwgcmlnaHQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVQYXJzZWQodGhpcy5fZGVmLmxlZnQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KSwgdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZSA9IChsZWZ0LCByaWdodCwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RJbnRlcnNlY3Rpb24oe1xuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8gdHlwZSBab2RUdXBsZUl0ZW1zID0gW1pvZFR5cGVBbnksIC4uLlpvZFR5cGVBbnlbXV07XG5leHBvcnQgY2xhc3MgWm9kVHVwbGUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA8IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgbWluaW11bTogdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdCA9IHRoaXMuX2RlZi5yZXN0O1xuICAgICAgICBpZiAoIXJlc3QgJiYgY3R4LmRhdGEubGVuZ3RoID4gdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgbWF4aW11bTogdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4uY3R4LmRhdGFdXG4gICAgICAgICAgICAubWFwKChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuX2RlZi5pdGVtc1tpdGVtSW5kZXhdIHx8IHRoaXMuX2RlZi5yZXN0O1xuICAgICAgICAgICAgaWYgKCFzY2hlbWEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGl0ZW1JbmRleCkpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4gISF4KTsgLy8gZmlsdGVyIG51bGxzXG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoaXRlbXMpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgaXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaXRlbXM7XG4gICAgfVxuICAgIHJlc3QocmVzdCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFR1cGxlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHJlc3QsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblpvZFR1cGxlLmNyZWF0ZSA9IChzY2hlbWFzLCBwYXJhbXMpID0+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2NoZW1hcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IG11c3QgcGFzcyBhbiBhcnJheSBvZiBzY2hlbWFzIHRvIHoudHVwbGUoWyAuLi4gXSlcIik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICBpdGVtczogc2NoZW1hcyxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RUdXBsZSxcbiAgICAgICAgcmVzdDogbnVsbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RSZWNvcmQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQga2V5U2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmtleVR5cGU7XG4gICAgfVxuICAgIGdldCB2YWx1ZVNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgICAgIGNvbnN0IGtleVR5cGUgPSB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleToga2V5VHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGtleSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBjdHguZGF0YVtrZXldLCBjdHgucGF0aCwga2V5KSksXG4gICAgICAgICAgICAgICAgYWx3YXlzU2V0OiBrZXkgaW4gY3R4LmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0QXN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgcGFpcnMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShmaXJzdCwgc2Vjb25kLCB0aGlyZCkge1xuICAgICAgICBpZiAoc2Vjb25kIGluc3RhbmNlb2YgWm9kVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBab2RSZWNvcmQoe1xuICAgICAgICAgICAgICAgIGtleVR5cGU6IGZpcnN0LFxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZTogc2Vjb25kLFxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVjb3JkLFxuICAgICAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcmQpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RSZWNvcmQoe1xuICAgICAgICAgICAga2V5VHlwZTogWm9kU3RyaW5nLmNyZWF0ZSgpLFxuICAgICAgICAgICAgdmFsdWVUeXBlOiBmaXJzdCxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVjb3JkLFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhzZWNvbmQpLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kTWFwIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgZ2V0IGtleVNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgIH1cbiAgICBnZXQgdmFsdWVTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm1hcCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5tYXAsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlUeXBlID0gdGhpcy5fZGVmLmtleVR5cGU7XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgICAgIGNvbnN0IHBhaXJzID0gWy4uLmN0eC5kYXRhLmVudHJpZXMoKV0ubWFwKChba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleToga2V5VHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGtleSwgY3R4LnBhdGgsIFtpbmRleCwgXCJrZXlcIl0pKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBbaW5kZXgsIFwidmFsdWVcIl0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgY29uc3QgZmluYWxNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHBhaXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImFib3J0ZWRcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbE1hcC5zZXQoa2V5LnZhbHVlLCB2YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogZmluYWxNYXAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZmluYWxNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwYWlyLmtleTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhaXIudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogZmluYWxNYXAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cblpvZE1hcC5jcmVhdGUgPSAoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE1hcCh7XG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RNYXAsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kU2V0IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zZXQpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc2V0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmID0gdGhpcy5fZGVmO1xuICAgICAgICBpZiAoZGVmLm1pblNpemUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5zaXplIDwgZGVmLm1pblNpemUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogZGVmLm1pblNpemUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWluU2l6ZS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYubWF4U2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPiBkZWYubWF4U2l6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogZGVmLm1heFNpemUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4U2l6ZS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgICAgIGZ1bmN0aW9uIGZpbmFsaXplU2V0KGVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRTZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgcGFyc2VkU2V0LmFkZChlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogcGFyc2VkU2V0IH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbLi4uY3R4LmRhdGEudmFsdWVzKCldLm1hcCgoaXRlbSwgaSkgPT4gdmFsdWVUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKSk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZWxlbWVudHMpLnRoZW4oKGVsZW1lbnRzKSA9PiBmaW5hbGl6ZVNldChlbGVtZW50cykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsaXplU2V0KGVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtaW4obWluU2l6ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBtaW5TaXplOiB7IHZhbHVlOiBtaW5TaXplLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhTaXplLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1heFNpemU6IHsgdmFsdWU6IG1heFNpemUsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2l6ZShzaXplLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbihzaXplLCBtZXNzYWdlKS5tYXgoc2l6ZSwgbWVzc2FnZSk7XG4gICAgfVxuICAgIG5vbmVtcHR5KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKDEsIG1lc3NhZ2UpO1xuICAgIH1cbn1cblpvZFNldC5jcmVhdGUgPSAodmFsdWVUeXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgbWluU2l6ZTogbnVsbCxcbiAgICAgICAgbWF4U2l6ZTogbnVsbCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTZXQsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kRnVuY3Rpb24gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZSA9IHRoaXMuaW1wbGVtZW50O1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5mdW5jdGlvbikge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5mdW5jdGlvbixcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VBcmdzSXNzdWUoYXJncywgZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGFyZ3MsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgZXJyb3JNYXBzOiBbY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIGN0eC5zY2hlbWFFcnJvck1hcCwgZ2V0RXJyb3JNYXAoKSwgZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoKHgpID0+ICEheCksXG4gICAgICAgICAgICAgICAgaXNzdWVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzRXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBtYWtlUmV0dXJuc0lzc3VlKHJldHVybnMsIGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFrZUlzc3VlKHtcbiAgICAgICAgICAgICAgICBkYXRhOiByZXR1cm5zLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIGVycm9yTWFwczogW2N0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLCBjdHguc2NoZW1hRXJyb3JNYXAsIGdldEVycm9yTWFwKCksIGRlZmF1bHRFcnJvck1hcF0uZmlsdGVyKCh4KSA9PiAhIXgpLFxuICAgICAgICAgICAgICAgIGlzc3VlRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZUVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAgfTtcbiAgICAgICAgY29uc3QgZm4gPSBjdHguZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5yZXR1cm5zIGluc3RhbmNlb2YgWm9kUHJvbWlzZSkge1xuICAgICAgICAgICAgLy8gV291bGQgbG92ZSBhIHdheSB0byBhdm9pZCBkaXNhYmxpbmcgdGhpcyBydWxlLCBidXQgd2UgbmVlZFxuICAgICAgICAgICAgLy8gYW4gYWxpYXMgKHVzaW5nIGFuIGFycm93IGZ1bmN0aW9uIHdhcyB3aGF0IGNhdXNlZCAyNjUxKS5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgICAgICAgY29uc3QgbWUgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIE9LKGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgWm9kRXJyb3IoW10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBhd2FpdCBtZS5fZGVmLmFyZ3MucGFyc2VBc3luYyhhcmdzLCBwYXJhbXMpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VBcmdzSXNzdWUoYXJncywgZSkpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBSZWZsZWN0LmFwcGx5KGZuLCB0aGlzLCBwYXJzZWRBcmdzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRSZXR1cm5zID0gYXdhaXQgbWUuX2RlZi5yZXR1cm5zLl9kZWYudHlwZVxuICAgICAgICAgICAgICAgICAgICAucGFyc2VBc3luYyhyZXN1bHQsIHBhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRSZXR1cm5zO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBXb3VsZCBsb3ZlIGEgd2F5IHRvIGF2b2lkIGRpc2FibGluZyB0aGlzIHJ1bGUsIGJ1dCB3ZSBuZWVkXG4gICAgICAgICAgICAvLyBhbiBhbGlhcyAodXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gd2FzIHdoYXQgY2F1c2VkIDI2NTEpLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICAgICAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gT0soZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRBcmdzID0gbWUuX2RlZi5hcmdzLnNhZmVQYXJzZShhcmdzLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyc2VkQXJncy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBab2RFcnJvcihbbWFrZUFyZ3NJc3N1ZShhcmdzLCBwYXJzZWRBcmdzLmVycm9yKV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LmFwcGx5KGZuLCB0aGlzLCBwYXJzZWRBcmdzLmRhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJldHVybnMgPSBtZS5fZGVmLnJldHVybnMuc2FmZVBhcnNlKHJlc3VsdCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFJldHVybnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWm9kRXJyb3IoW21ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBwYXJzZWRSZXR1cm5zLmVycm9yKV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkUmV0dXJucy5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGFyYW1ldGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5hcmdzO1xuICAgIH1cbiAgICByZXR1cm5UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnJldHVybnM7XG4gICAgfVxuICAgIGFyZ3MoLi4uaXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBhcmdzOiBab2RUdXBsZS5jcmVhdGUoaXRlbXMpLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm5zKHJldHVyblR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICByZXR1cm5zOiByZXR1cm5UeXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW1wbGVtZW50KGZ1bmMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkRnVuYyA9IHRoaXMucGFyc2UoZnVuYyk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRGdW5jO1xuICAgIH1cbiAgICBzdHJpY3RJbXBsZW1lbnQoZnVuYykge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYXJncywgcmV0dXJucywgcGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRnVuY3Rpb24oe1xuICAgICAgICAgICAgYXJnczogKGFyZ3MgPyBhcmdzIDogWm9kVHVwbGUuY3JlYXRlKFtdKS5yZXN0KFpvZFVua25vd24uY3JlYXRlKCkpKSxcbiAgICAgICAgICAgIHJldHVybnM6IHJldHVybnMgfHwgWm9kVW5rbm93bi5jcmVhdGUoKSxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRnVuY3Rpb24sXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RMYXp5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgZ2V0IHNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5nZXR0ZXIoKTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBsYXp5U2NoZW1hID0gdGhpcy5fZGVmLmdldHRlcigpO1xuICAgICAgICByZXR1cm4gbGF6eVNjaGVtYS5fcGFyc2UoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgIH1cbn1cblpvZExhenkuY3JlYXRlID0gKGdldHRlciwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RMYXp5KHtcbiAgICAgICAgZ2V0dGVyOiBnZXR0ZXIsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTGF6eSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RMaXRlcmFsIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhICE9PSB0aGlzLl9kZWYudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiB0aGlzLl9kZWYudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWU7XG4gICAgfVxufVxuWm9kTGl0ZXJhbC5jcmVhdGUgPSAodmFsdWUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTGl0ZXJhbCh7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMaXRlcmFsLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZnVuY3Rpb24gY3JlYXRlWm9kRW51bSh2YWx1ZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFbnVtLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY2xhc3MgWm9kRW51bSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0LmRhdGEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdGhpcy5fZGVmLnZhbHVlcztcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiB1dGlsLmpvaW5WYWx1ZXMoZXhwZWN0ZWRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IG5ldyBTZXQodGhpcy5fZGVmLnZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9jYWNoZS5oYXMoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdGhpcy5fZGVmLnZhbHVlcztcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGV4cGVjdGVkVmFsdWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxuICAgIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlcztcbiAgICB9XG4gICAgZ2V0IGVudW0oKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcykge1xuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVmFsdWVzO1xuICAgIH1cbiAgICBnZXQgVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBlbnVtVmFsdWVzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuX2RlZi52YWx1ZXMpIHtcbiAgICAgICAgICAgIGVudW1WYWx1ZXNbdmFsXSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW51bVZhbHVlcztcbiAgICB9XG4gICAgZ2V0IEVudW0oKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcykge1xuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVmFsdWVzO1xuICAgIH1cbiAgICBleHRyYWN0KHZhbHVlcywgbmV3RGVmID0gdGhpcy5fZGVmKSB7XG4gICAgICAgIHJldHVybiBab2RFbnVtLmNyZWF0ZSh2YWx1ZXMsIHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIC4uLm5ld0RlZixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV4Y2x1ZGUodmFsdWVzLCBuZXdEZWYgPSB0aGlzLl9kZWYpIHtcbiAgICAgICAgcmV0dXJuIFpvZEVudW0uY3JlYXRlKHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gIXZhbHVlcy5pbmNsdWRlcyhvcHQpKSwge1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgLi4ubmV3RGVmLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5ab2RFbnVtLmNyZWF0ZSA9IGNyZWF0ZVpvZEVudW07XG5leHBvcnQgY2xhc3MgWm9kTmF0aXZlRW51bSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBuYXRpdmVFbnVtVmFsdWVzID0gdXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnN0cmluZyAmJiBjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdXRpbC5vYmplY3RWYWx1ZXMobmF0aXZlRW51bVZhbHVlcyk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogdXRpbC5qb2luVmFsdWVzKGV4cGVjdGVkVmFsdWVzKSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9jYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FjaGUgPSBuZXcgU2V0KHV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyhpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGV4cGVjdGVkVmFsdWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxuICAgIGdldCBlbnVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlcztcbiAgICB9XG59XG5ab2ROYXRpdmVFbnVtLmNyZWF0ZSA9ICh2YWx1ZXMsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTmF0aXZlRW51bSh7XG4gICAgICAgIHZhbHVlczogdmFsdWVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW0sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kUHJvbWlzZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5wcm9taXNlICYmIGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnByb21pc2UsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9taXNpZmllZCA9IGN0eC5wYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLnByb21pc2UgPyBjdHguZGF0YSA6IFByb21pc2UucmVzb2x2ZShjdHguZGF0YSk7XG4gICAgICAgIHJldHVybiBPSyhwcm9taXNpZmllZC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGUucGFyc2VBc3luYyhkYXRhLCB7XG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgZXJyb3JNYXA6IGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG59XG5ab2RQcm9taXNlLmNyZWF0ZSA9IChzY2hlbWEsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kUHJvbWlzZSh7XG4gICAgICAgIHR5cGU6IHNjaGVtYSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEVmZmVjdHMgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBpbm5lclR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hO1xuICAgIH1cbiAgICBzb3VyY2VUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICAgICAgICAgICAgPyB0aGlzLl9kZWYuc2NoZW1hLnNvdXJjZVR5cGUoKVxuICAgICAgICAgICAgOiB0aGlzLl9kZWYuc2NoZW1hO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3QgZWZmZWN0ID0gdGhpcy5fZGVmLmVmZmVjdCB8fCBudWxsO1xuICAgICAgICBjb25zdCBjaGVja0N0eCA9IHtcbiAgICAgICAgICAgIGFkZElzc3VlOiAoYXJnKSA9PiB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCBhcmcpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcuZmF0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHBhdGgoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXRoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY2hlY2tDdHguYWRkSXNzdWUgPSBjaGVja0N0eC5hZGRJc3N1ZS5iaW5kKGNoZWNrQ3R4KTtcbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcInByZXByb2Nlc3NcIikge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkID0gZWZmZWN0LnRyYW5zZm9ybShjdHguZGF0YSwgY2hlY2tDdHgpO1xuICAgICAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHByb2Nlc3NlZCkudGhlbihhc3luYyAocHJvY2Vzc2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMudmFsdWUgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERJUlRZKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMudmFsdWUgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShyZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHByb2Nlc3NlZCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERJUlRZKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlZmZlY3QudHlwZSA9PT0gXCJyZWZpbmVtZW50XCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVSZWZpbmVtZW50ID0gKGFjYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC5yZWZpbmVtZW50KGFjYywgY2hlY2tDdHgpO1xuICAgICAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXN5bmMgcmVmaW5lbWVudCBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXIuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkXG4gICAgICAgICAgICAgICAgZXhlY3V0ZVJlZmluZW1lbnQoaW5uZXIudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5uZXIudmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KS50aGVuKChpbm5lcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXIuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXIuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZWZpbmVtZW50KGlubmVyLnZhbHVlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5uZXIudmFsdWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcInRyYW5zZm9ybVwiKSB7XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQoYmFzZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXN5bmNocm9ub3VzIHRyYW5zZm9ybSBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiByZXN1bHQgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KS50aGVuKChiYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpKS50aGVuKChyZXN1bHQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGVmZmVjdCk7XG4gICAgfVxufVxuWm9kRWZmZWN0cy5jcmVhdGUgPSAoc2NoZW1hLCBlZmZlY3QsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgICBlZmZlY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RFZmZlY3RzLmNyZWF0ZVdpdGhQcmVwcm9jZXNzID0gKHByZXByb2Nlc3MsIHNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBlZmZlY3Q6IHsgdHlwZTogXCJwcmVwcm9jZXNzXCIsIHRyYW5zZm9ybTogcHJlcHJvY2VzcyB9LFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgeyBab2RFZmZlY3RzIGFzIFpvZFRyYW5zZm9ybWVyIH07XG5leHBvcnQgY2xhc3MgWm9kT3B0aW9uYWwgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBPSyh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShpbnB1dCk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kT3B0aW9uYWwuY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT3B0aW9uYWwoe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT3B0aW9uYWwsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTnVsbGFibGUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5udWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gT0sobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICB9XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgICB9XG59XG5ab2ROdWxsYWJsZS5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XG4gICAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROdWxsYWJsZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2REZWZhdWx0IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBsZXQgZGF0YSA9IGN0eC5kYXRhO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlbW92ZURlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZERlZmF1bHQuY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGVmYXVsdCh7XG4gICAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REZWZhdWx0LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHR5cGVvZiBwYXJhbXMuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zLmRlZmF1bHQgOiAoKSA9PiBwYXJhbXMuZGVmYXVsdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RDYXRjaCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgLy8gbmV3Q3R4IGlzIHVzZWQgdG8gbm90IGNvbGxlY3QgaXNzdWVzIGZyb20gaW5uZXIgdHlwZXMgaW4gY3R4XG4gICAgICAgIGNvbnN0IG5ld0N0eCA9IHtcbiAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIC4uLmN0eC5jb21tb24sXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtcbiAgICAgICAgICAgIGRhdGE6IG5ld0N0eC5kYXRhLFxuICAgICAgICAgICAgcGF0aDogbmV3Q3R4LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IHtcbiAgICAgICAgICAgICAgICAuLi5uZXdDdHgsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzQXN5bmMocmVzdWx0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IFwidmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZXN1bHQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fZGVmLmNhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBab2RFcnJvcihuZXdDdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHN0YXR1czogXCJ2YWxpZFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgPyByZXN1bHQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQgZXJyb3IoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBab2RFcnJvcihuZXdDdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IG5ld0N0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlQ2F0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZENhdGNoLmNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZENhdGNoKHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZENhdGNoLFxuICAgICAgICBjYXRjaFZhbHVlOiB0eXBlb2YgcGFyYW1zLmNhdGNoID09PSBcImZ1bmN0aW9uXCIgPyBwYXJhbXMuY2F0Y2ggOiAoKSA9PiBwYXJhbXMuY2F0Y2gsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTmFOIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubmFuKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm5hbixcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICAgIH1cbn1cblpvZE5hTi5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROYU4oe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hTixcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjb25zdCBCUkFORCA9IFN5bWJvbChcInpvZF9icmFuZFwiKTtcbmV4cG9ydCBjbGFzcyBab2RCcmFuZGVkIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBkYXRhID0gY3R4LmRhdGE7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5fcGFyc2Uoe1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1bndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kUGlwZWxpbmUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUFzeW5jID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluUmVzdWx0ID0gYXdhaXQgdGhpcy5fZGVmLmluLl9wYXJzZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgaWYgKGluUmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkoaW5SZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vdXQuX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaW5SZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUFzeW5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpblJlc3VsdCA9IHRoaXMuX2RlZi5pbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGluUmVzdWx0LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IFwiZGlydHlcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGluUmVzdWx0LnZhbHVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaW5SZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgY3JlYXRlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RQaXBlbGluZSh7XG4gICAgICAgICAgICBpbjogYSxcbiAgICAgICAgICAgIG91dDogYixcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUGlwZWxpbmUsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RSZWFkb25seSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShpbnB1dCk7XG4gICAgICAgIGNvbnN0IGZyZWV6ZSA9IChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEudmFsdWUgPSBPYmplY3QuZnJlZXplKGRhdGEudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0FzeW5jKHJlc3VsdCkgPyByZXN1bHQudGhlbigoZGF0YSkgPT4gZnJlZXplKGRhdGEpKSA6IGZyZWV6ZShyZXN1bHQpO1xuICAgIH1cbiAgICB1bndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZFJlYWRvbmx5LmNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFJlYWRvbmx5KHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFJlYWRvbmx5LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIHouY3VzdG9tICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZnVuY3Rpb24gY2xlYW5QYXJhbXMocGFyYW1zLCBkYXRhKSB7XG4gICAgY29uc3QgcCA9IHR5cGVvZiBwYXJhbXMgPT09IFwiZnVuY3Rpb25cIiA/IHBhcmFtcyhkYXRhKSA6IHR5cGVvZiBwYXJhbXMgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2U6IHBhcmFtcyB9IDogcGFyYW1zO1xuICAgIGNvbnN0IHAyID0gdHlwZW9mIHAgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2U6IHAgfSA6IHA7XG4gICAgcmV0dXJuIHAyO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbShjaGVjaywgX3BhcmFtcyA9IHt9LCBcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqXG4gKiBQYXNzIGBmYXRhbGAgaW50byB0aGUgcGFyYW1zIG9iamVjdCBpbnN0ZWFkOlxuICpcbiAqIGBgYHRzXG4gKiB6LnN0cmluZygpLmN1c3RvbSgodmFsKSA9PiB2YWwubGVuZ3RoID4gNSwgeyBmYXRhbDogZmFsc2UgfSlcbiAqIGBgYFxuICpcbiAqL1xuZmF0YWwpIHtcbiAgICBpZiAoY2hlY2spXG4gICAgICAgIHJldHVybiBab2RBbnkuY3JlYXRlKCkuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgciA9IGNoZWNrKGRhdGEpO1xuICAgICAgICAgICAgaWYgKHIgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHIudGhlbigocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGNsZWFuUGFyYW1zKF9wYXJhbXMsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX2ZhdGFsID0gcGFyYW1zLmZhdGFsID8/IGZhdGFsID8/IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHguYWRkSXNzdWUoeyBjb2RlOiBcImN1c3RvbVwiLCAuLi5wYXJhbXMsIGZhdGFsOiBfZmF0YWwgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGNsZWFuUGFyYW1zKF9wYXJhbXMsIGRhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF9mYXRhbCA9IHBhcmFtcy5mYXRhbCA/PyBmYXRhbCA/PyB0cnVlO1xuICAgICAgICAgICAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIC4uLnBhcmFtcywgZmF0YWw6IF9mYXRhbCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIFpvZEFueS5jcmVhdGUoKTtcbn1cbmV4cG9ydCB7IFpvZFR5cGUgYXMgU2NoZW1hLCBab2RUeXBlIGFzIFpvZFNjaGVtYSB9O1xuZXhwb3J0IGNvbnN0IGxhdGUgPSB7XG4gICAgb2JqZWN0OiBab2RPYmplY3QubGF6eWNyZWF0ZSxcbn07XG5leHBvcnQgdmFyIFpvZEZpcnN0UGFydHlUeXBlS2luZDtcbihmdW5jdGlvbiAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKSB7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kU3RyaW5nXCJdID0gXCJab2RTdHJpbmdcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROdW1iZXJcIl0gPSBcIlpvZE51bWJlclwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE5hTlwiXSA9IFwiWm9kTmFOXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQmlnSW50XCJdID0gXCJab2RCaWdJbnRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RCb29sZWFuXCJdID0gXCJab2RCb29sZWFuXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRGF0ZVwiXSA9IFwiWm9kRGF0ZVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFN5bWJvbFwiXSA9IFwiWm9kU3ltYm9sXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVW5kZWZpbmVkXCJdID0gXCJab2RVbmRlZmluZWRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROdWxsXCJdID0gXCJab2ROdWxsXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQW55XCJdID0gXCJab2RBbnlcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmtub3duXCJdID0gXCJab2RVbmtub3duXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTmV2ZXJcIl0gPSBcIlpvZE5ldmVyXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVm9pZFwiXSA9IFwiWm9kVm9pZFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEFycmF5XCJdID0gXCJab2RBcnJheVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE9iamVjdFwiXSA9IFwiWm9kT2JqZWN0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVW5pb25cIl0gPSBcIlpvZFVuaW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRGlzY3JpbWluYXRlZFVuaW9uXCJdID0gXCJab2REaXNjcmltaW5hdGVkVW5pb25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RJbnRlcnNlY3Rpb25cIl0gPSBcIlpvZEludGVyc2VjdGlvblwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFR1cGxlXCJdID0gXCJab2RUdXBsZVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFJlY29yZFwiXSA9IFwiWm9kUmVjb3JkXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTWFwXCJdID0gXCJab2RNYXBcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RTZXRcIl0gPSBcIlpvZFNldFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEZ1bmN0aW9uXCJdID0gXCJab2RGdW5jdGlvblwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZExhenlcIl0gPSBcIlpvZExhenlcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RMaXRlcmFsXCJdID0gXCJab2RMaXRlcmFsXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRW51bVwiXSA9IFwiWm9kRW51bVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEVmZmVjdHNcIl0gPSBcIlpvZEVmZmVjdHNcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROYXRpdmVFbnVtXCJdID0gXCJab2ROYXRpdmVFbnVtXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kT3B0aW9uYWxcIl0gPSBcIlpvZE9wdGlvbmFsXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTnVsbGFibGVcIl0gPSBcIlpvZE51bGxhYmxlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRGVmYXVsdFwiXSA9IFwiWm9kRGVmYXVsdFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZENhdGNoXCJdID0gXCJab2RDYXRjaFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFByb21pc2VcIl0gPSBcIlpvZFByb21pc2VcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RCcmFuZGVkXCJdID0gXCJab2RCcmFuZGVkXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUGlwZWxpbmVcIl0gPSBcIlpvZFBpcGVsaW5lXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUmVhZG9ubHlcIl0gPSBcIlpvZFJlYWRvbmx5XCI7XG59KShab2RGaXJzdFBhcnR5VHlwZUtpbmQgfHwgKFpvZEZpcnN0UGFydHlUeXBlS2luZCA9IHt9KSk7XG4vLyByZXF1aXJlcyBUUyA0LjQrXG5jbGFzcyBDbGFzcyB7XG4gICAgY29uc3RydWN0b3IoLi4uXykgeyB9XG59XG5jb25zdCBpbnN0YW5jZU9mVHlwZSA9IChcbi8vIGNvbnN0IGluc3RhbmNlT2ZUeXBlID0gPFQgZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuY2xzLCBwYXJhbXMgPSB7XG4gICAgbWVzc2FnZTogYElucHV0IG5vdCBpbnN0YW5jZSBvZiAke2Nscy5uYW1lfWAsXG59KSA9PiBjdXN0b20oKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsIHBhcmFtcyk7XG5jb25zdCBzdHJpbmdUeXBlID0gWm9kU3RyaW5nLmNyZWF0ZTtcbmNvbnN0IG51bWJlclR5cGUgPSBab2ROdW1iZXIuY3JlYXRlO1xuY29uc3QgbmFuVHlwZSA9IFpvZE5hTi5jcmVhdGU7XG5jb25zdCBiaWdJbnRUeXBlID0gWm9kQmlnSW50LmNyZWF0ZTtcbmNvbnN0IGJvb2xlYW5UeXBlID0gWm9kQm9vbGVhbi5jcmVhdGU7XG5jb25zdCBkYXRlVHlwZSA9IFpvZERhdGUuY3JlYXRlO1xuY29uc3Qgc3ltYm9sVHlwZSA9IFpvZFN5bWJvbC5jcmVhdGU7XG5jb25zdCB1bmRlZmluZWRUeXBlID0gWm9kVW5kZWZpbmVkLmNyZWF0ZTtcbmNvbnN0IG51bGxUeXBlID0gWm9kTnVsbC5jcmVhdGU7XG5jb25zdCBhbnlUeXBlID0gWm9kQW55LmNyZWF0ZTtcbmNvbnN0IHVua25vd25UeXBlID0gWm9kVW5rbm93bi5jcmVhdGU7XG5jb25zdCBuZXZlclR5cGUgPSBab2ROZXZlci5jcmVhdGU7XG5jb25zdCB2b2lkVHlwZSA9IFpvZFZvaWQuY3JlYXRlO1xuY29uc3QgYXJyYXlUeXBlID0gWm9kQXJyYXkuY3JlYXRlO1xuY29uc3Qgb2JqZWN0VHlwZSA9IFpvZE9iamVjdC5jcmVhdGU7XG5jb25zdCBzdHJpY3RPYmplY3RUeXBlID0gWm9kT2JqZWN0LnN0cmljdENyZWF0ZTtcbmNvbnN0IHVuaW9uVHlwZSA9IFpvZFVuaW9uLmNyZWF0ZTtcbmNvbnN0IGRpc2NyaW1pbmF0ZWRVbmlvblR5cGUgPSBab2REaXNjcmltaW5hdGVkVW5pb24uY3JlYXRlO1xuY29uc3QgaW50ZXJzZWN0aW9uVHlwZSA9IFpvZEludGVyc2VjdGlvbi5jcmVhdGU7XG5jb25zdCB0dXBsZVR5cGUgPSBab2RUdXBsZS5jcmVhdGU7XG5jb25zdCByZWNvcmRUeXBlID0gWm9kUmVjb3JkLmNyZWF0ZTtcbmNvbnN0IG1hcFR5cGUgPSBab2RNYXAuY3JlYXRlO1xuY29uc3Qgc2V0VHlwZSA9IFpvZFNldC5jcmVhdGU7XG5jb25zdCBmdW5jdGlvblR5cGUgPSBab2RGdW5jdGlvbi5jcmVhdGU7XG5jb25zdCBsYXp5VHlwZSA9IFpvZExhenkuY3JlYXRlO1xuY29uc3QgbGl0ZXJhbFR5cGUgPSBab2RMaXRlcmFsLmNyZWF0ZTtcbmNvbnN0IGVudW1UeXBlID0gWm9kRW51bS5jcmVhdGU7XG5jb25zdCBuYXRpdmVFbnVtVHlwZSA9IFpvZE5hdGl2ZUVudW0uY3JlYXRlO1xuY29uc3QgcHJvbWlzZVR5cGUgPSBab2RQcm9taXNlLmNyZWF0ZTtcbmNvbnN0IGVmZmVjdHNUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGU7XG5jb25zdCBvcHRpb25hbFR5cGUgPSBab2RPcHRpb25hbC5jcmVhdGU7XG5jb25zdCBudWxsYWJsZVR5cGUgPSBab2ROdWxsYWJsZS5jcmVhdGU7XG5jb25zdCBwcmVwcm9jZXNzVHlwZSA9IFpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3M7XG5jb25zdCBwaXBlbGluZVR5cGUgPSBab2RQaXBlbGluZS5jcmVhdGU7XG5jb25zdCBvc3RyaW5nID0gKCkgPT4gc3RyaW5nVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvbnVtYmVyID0gKCkgPT4gbnVtYmVyVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvYm9vbGVhbiA9ICgpID0+IGJvb2xlYW5UeXBlKCkub3B0aW9uYWwoKTtcbmV4cG9ydCBjb25zdCBjb2VyY2UgPSB7XG4gICAgc3RyaW5nOiAoKGFyZykgPT4gWm9kU3RyaW5nLmNyZWF0ZSh7IC4uLmFyZywgY29lcmNlOiB0cnVlIH0pKSxcbiAgICBudW1iZXI6ICgoYXJnKSA9PiBab2ROdW1iZXIuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxuICAgIGJvb2xlYW46ICgoYXJnKSA9PiBab2RCb29sZWFuLmNyZWF0ZSh7XG4gICAgICAgIC4uLmFyZyxcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgIH0pKSxcbiAgICBiaWdpbnQ6ICgoYXJnKSA9PiBab2RCaWdJbnQuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxuICAgIGRhdGU6ICgoYXJnKSA9PiBab2REYXRlLmNyZWF0ZSh7IC4uLmFyZywgY29lcmNlOiB0cnVlIH0pKSxcbn07XG5leHBvcnQgeyBhbnlUeXBlIGFzIGFueSwgYXJyYXlUeXBlIGFzIGFycmF5LCBiaWdJbnRUeXBlIGFzIGJpZ2ludCwgYm9vbGVhblR5cGUgYXMgYm9vbGVhbiwgZGF0ZVR5cGUgYXMgZGF0ZSwgZGlzY3JpbWluYXRlZFVuaW9uVHlwZSBhcyBkaXNjcmltaW5hdGVkVW5pb24sIGVmZmVjdHNUeXBlIGFzIGVmZmVjdCwgZW51bVR5cGUgYXMgZW51bSwgZnVuY3Rpb25UeXBlIGFzIGZ1bmN0aW9uLCBpbnN0YW5jZU9mVHlwZSBhcyBpbnN0YW5jZW9mLCBpbnRlcnNlY3Rpb25UeXBlIGFzIGludGVyc2VjdGlvbiwgbGF6eVR5cGUgYXMgbGF6eSwgbGl0ZXJhbFR5cGUgYXMgbGl0ZXJhbCwgbWFwVHlwZSBhcyBtYXAsIG5hblR5cGUgYXMgbmFuLCBuYXRpdmVFbnVtVHlwZSBhcyBuYXRpdmVFbnVtLCBuZXZlclR5cGUgYXMgbmV2ZXIsIG51bGxUeXBlIGFzIG51bGwsIG51bGxhYmxlVHlwZSBhcyBudWxsYWJsZSwgbnVtYmVyVHlwZSBhcyBudW1iZXIsIG9iamVjdFR5cGUgYXMgb2JqZWN0LCBvYm9vbGVhbiwgb251bWJlciwgb3B0aW9uYWxUeXBlIGFzIG9wdGlvbmFsLCBvc3RyaW5nLCBwaXBlbGluZVR5cGUgYXMgcGlwZWxpbmUsIHByZXByb2Nlc3NUeXBlIGFzIHByZXByb2Nlc3MsIHByb21pc2VUeXBlIGFzIHByb21pc2UsIHJlY29yZFR5cGUgYXMgcmVjb3JkLCBzZXRUeXBlIGFzIHNldCwgc3RyaWN0T2JqZWN0VHlwZSBhcyBzdHJpY3RPYmplY3QsIHN0cmluZ1R5cGUgYXMgc3RyaW5nLCBzeW1ib2xUeXBlIGFzIHN5bWJvbCwgZWZmZWN0c1R5cGUgYXMgdHJhbnNmb3JtZXIsIHR1cGxlVHlwZSBhcyB0dXBsZSwgdW5kZWZpbmVkVHlwZSBhcyB1bmRlZmluZWQsIHVuaW9uVHlwZSBhcyB1bmlvbiwgdW5rbm93blR5cGUgYXMgdW5rbm93biwgdm9pZFR5cGUgYXMgdm9pZCwgfTtcbmV4cG9ydCBjb25zdCBORVZFUiA9IElOVkFMSUQ7XG4iLCAiaW1wb3J0IHsgZ2V0UmVsYXRpdmVQYXRoIH0gZnJvbSBcIi4uL2dldFJlbGF0aXZlUGF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQW55RGVmKHJlZnMpIHtcbiAgICBpZiAocmVmcy50YXJnZXQgIT09IFwib3BlbkFpXCIpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBhbnlEZWZpbml0aW9uUGF0aCA9IFtcbiAgICAgICAgLi4ucmVmcy5iYXNlUGF0aCxcbiAgICAgICAgcmVmcy5kZWZpbml0aW9uUGF0aCxcbiAgICAgICAgcmVmcy5vcGVuQWlBbnlUeXBlTmFtZSxcbiAgICBdO1xuICAgIHJlZnMuZmxhZ3MuaGFzUmVmZXJlbmNlZE9wZW5BaUFueVR5cGUgPSB0cnVlO1xuICAgIHJldHVybiB7XG4gICAgICAgICRyZWY6IHJlZnMuJHJlZlN0cmF0ZWd5ID09PSBcInJlbGF0aXZlXCJcbiAgICAgICAgICAgID8gZ2V0UmVsYXRpdmVQYXRoKGFueURlZmluaXRpb25QYXRoLCByZWZzLmN1cnJlbnRQYXRoKVxuICAgICAgICAgICAgOiBhbnlEZWZpbml0aW9uUGF0aC5qb2luKFwiL1wiKSxcbiAgICB9O1xufVxuIiwgImltcG9ydCB7IFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2QvdjNcIjtcbmltcG9ydCB7IHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMgfSBmcm9tIFwiLi4vZXJyb3JNZXNzYWdlcy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFycmF5RGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgIH07XG4gICAgaWYgKGRlZi50eXBlPy5fZGVmICYmXG4gICAgICAgIGRlZi50eXBlPy5fZGVmPy50eXBlTmFtZSAhPT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFueSkge1xuICAgICAgICByZXMuaXRlbXMgPSBwYXJzZURlZihkZWYudHlwZS5fZGVmLCB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIml0ZW1zXCJdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGRlZi5taW5MZW5ndGgpIHtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWluSXRlbXNcIiwgZGVmLm1pbkxlbmd0aC52YWx1ZSwgZGVmLm1pbkxlbmd0aC5tZXNzYWdlLCByZWZzKTtcbiAgICB9XG4gICAgaWYgKGRlZi5tYXhMZW5ndGgpIHtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4SXRlbXNcIiwgZGVmLm1heExlbmd0aC52YWx1ZSwgZGVmLm1heExlbmd0aC5tZXNzYWdlLCByZWZzKTtcbiAgICB9XG4gICAgaWYgKGRlZi5leGFjdExlbmd0aCkge1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5JdGVtc1wiLCBkZWYuZXhhY3RMZW5ndGgudmFsdWUsIGRlZi5leGFjdExlbmd0aC5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4SXRlbXNcIiwgZGVmLmV4YWN0TGVuZ3RoLnZhbHVlLCBkZWYuZXhhY3RMZW5ndGgubWVzc2FnZSwgcmVmcyk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG4iLCAiaW1wb3J0IHsgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCaWdpbnREZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgICAgZm9ybWF0OiBcImludDY0XCIsXG4gICAgfTtcbiAgICBpZiAoIWRlZi5jaGVja3MpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgZm9yIChjb25zdCBjaGVjayBvZiBkZWYuY2hlY2tzKSB7XG4gICAgICAgIHN3aXRjaCAoY2hlY2sua2luZCkge1xuICAgICAgICAgICAgY2FzZSBcIm1pblwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJqc29uU2NoZW1hN1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1pbmltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwiZXhjbHVzaXZlTWluaW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2suaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuZXhjbHVzaXZlTWluaW11bSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWluaW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJqc29uU2NoZW1hN1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm1heGltdW1cIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwiZXhjbHVzaXZlTWF4aW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2suaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuZXhjbHVzaXZlTWF4aW11bSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4aW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlT2ZcIjpcbiAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtdWx0aXBsZU9mXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZUJvb2xlYW5EZWYoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQnJhbmRlZERlZihfZGVmLCByZWZzKSB7XG4gICAgcmV0dXJuIHBhcnNlRGVmKF9kZWYudHlwZS5fZGVmLCByZWZzKTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlQ2F0Y2hEZWYgPSAoZGVmLCByZWZzKSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlRGVmKGRlZi5pbm5lclR5cGUuX2RlZiwgcmVmcyk7XG59O1xuIiwgImltcG9ydCB7IHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMgfSBmcm9tIFwiLi4vZXJyb3JNZXNzYWdlcy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGF0ZURlZihkZWYsIHJlZnMsIG92ZXJyaWRlRGF0ZVN0cmF0ZWd5KSB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSBvdmVycmlkZURhdGVTdHJhdGVneSA/PyByZWZzLmRhdGVTdHJhdGVneTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdHJhdGVneSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFueU9mOiBzdHJhdGVneS5tYXAoKGl0ZW0sIGkpID0+IHBhcnNlRGF0ZURlZihkZWYsIHJlZnMsIGl0ZW0pKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGNhc2UgXCJmb3JtYXQ6ZGF0ZS10aW1lXCI6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcImRhdGUtdGltZVwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSBcImZvcm1hdDpkYXRlXCI6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcImRhdGVcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICAgICAgICByZXR1cm4gaW50ZWdlckRhdGVQYXJzZXIoZGVmLCByZWZzKTtcbiAgICB9XG59XG5jb25zdCBpbnRlZ2VyRGF0ZVBhcnNlciA9IChkZWYsIHJlZnMpID0+IHtcbiAgICBjb25zdCByZXMgPSB7XG4gICAgICAgIHR5cGU6IFwiaW50ZWdlclwiLFxuICAgICAgICBmb3JtYXQ6IFwidW5peC10aW1lXCIsXG4gICAgfTtcbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIikge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIGRlZi5jaGVja3MpIHtcbiAgICAgICAgc3dpdGNoIChjaGVjay5raW5kKSB7XG4gICAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWluaW11bVwiLCBjaGVjay52YWx1ZSwgLy8gVGhpcyBpcyBpbiBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgICAgICBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJtYXhcIjpcbiAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCAvLyBUaGlzIGlzIGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgICAgIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZWZhdWx0RGVmKF9kZWYsIHJlZnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5wYXJzZURlZihfZGVmLmlubmVyVHlwZS5fZGVmLCByZWZzKSxcbiAgICAgICAgZGVmYXVsdDogX2RlZi5kZWZhdWx0VmFsdWUoKSxcbiAgICB9O1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWZmZWN0c0RlZihfZGVmLCByZWZzKSB7XG4gICAgcmV0dXJuIHJlZnMuZWZmZWN0U3RyYXRlZ3kgPT09IFwiaW5wdXRcIlxuICAgICAgICA/IHBhcnNlRGVmKF9kZWYuc2NoZW1hLl9kZWYsIHJlZnMpXG4gICAgICAgIDogcGFyc2VBbnlEZWYocmVmcyk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRW51bURlZihkZWYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBlbnVtOiBBcnJheS5mcm9tKGRlZi52YWx1ZXMpLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmNvbnN0IGlzSnNvblNjaGVtYTdBbGxPZlR5cGUgPSAodHlwZSkgPT4ge1xuICAgIGlmIChcInR5cGVcIiBpbiB0eXBlICYmIHR5cGUudHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBcImFsbE9mXCIgaW4gdHlwZTtcbn07XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbnRlcnNlY3Rpb25EZWYoZGVmLCByZWZzKSB7XG4gICAgY29uc3QgYWxsT2YgPSBbXG4gICAgICAgIHBhcnNlRGVmKGRlZi5sZWZ0Ll9kZWYsIHtcbiAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYWxsT2ZcIiwgXCIwXCJdLFxuICAgICAgICB9KSxcbiAgICAgICAgcGFyc2VEZWYoZGVmLnJpZ2h0Ll9kZWYsIHtcbiAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYWxsT2ZcIiwgXCIxXCJdLFxuICAgICAgICB9KSxcbiAgICBdLmZpbHRlcigoeCkgPT4gISF4KTtcbiAgICBsZXQgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzID0gcmVmcy50YXJnZXQgPT09IFwianNvblNjaGVtYTIwMTktMDlcIlxuICAgICAgICA/IHsgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZSB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1lcmdlZEFsbE9mID0gW107XG4gICAgLy8gSWYgZWl0aGVyIG9mIHRoZSBzY2hlbWFzIGlzIGFuIGFsbE9mLCBtZXJnZSB0aGVtIGludG8gYSBzaW5nbGUgYWxsT2ZcbiAgICBhbGxPZi5mb3JFYWNoKChzY2hlbWEpID0+IHtcbiAgICAgICAgaWYgKGlzSnNvblNjaGVtYTdBbGxPZlR5cGUoc2NoZW1hKSkge1xuICAgICAgICAgICAgbWVyZ2VkQWxsT2YucHVzaCguLi5zY2hlbWEuYWxsT2YpO1xuICAgICAgICAgICAgaWYgKHNjaGVtYS51bmV2YWx1YXRlZFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgc2NoZW1hcyBoYXMgbm8gdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIHNldCxcbiAgICAgICAgICAgICAgICAvLyB0aGUgbWVyZ2VkIHNjaGVtYSBzaG91bGQgYWxzbyBoYXZlIG5vIHVuZXZhbHVhdGVkUHJvcGVydGllcyBzZXRcbiAgICAgICAgICAgICAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmVzdGVkU2NoZW1hID0gc2NoZW1hO1xuICAgICAgICAgICAgaWYgKFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIiBpbiBzY2hlbWEgJiZcbiAgICAgICAgICAgICAgICBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhZGRpdGlvbmFsUHJvcGVydGllcywgLi4ucmVzdCB9ID0gc2NoZW1hO1xuICAgICAgICAgICAgICAgIG5lc3RlZFNjaGVtYSA9IHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBcyBzb29uIGFzIG9uZSBvZiB0aGUgc2NoZW1hcyBoYXMgYWRkaXRpb25hbFByb3BlcnRpZXMgc2V0IG5vdCB0byBmYWxzZSwgd2UgYWxsb3cgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWVyZ2VkQWxsT2YucHVzaChuZXN0ZWRTY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1lcmdlZEFsbE9mLmxlbmd0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGFsbE9mOiBtZXJnZWRBbGxPZixcbiAgICAgICAgICAgIC4uLnVuZXZhbHVhdGVkUHJvcGVydGllcyxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VMaXRlcmFsRGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0eXBlb2YgZGVmLnZhbHVlO1xuICAgIGlmIChwYXJzZWRUeXBlICE9PSBcImJpZ2ludFwiICYmXG4gICAgICAgIHBhcnNlZFR5cGUgIT09IFwibnVtYmVyXCIgJiZcbiAgICAgICAgcGFyc2VkVHlwZSAhPT0gXCJib29sZWFuXCIgJiZcbiAgICAgICAgcGFyc2VkVHlwZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogQXJyYXkuaXNBcnJheShkZWYudmFsdWUpID8gXCJhcnJheVwiIDogXCJvYmplY3RcIixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcIm9wZW5BcGkzXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IHBhcnNlZFR5cGUgPT09IFwiYmlnaW50XCIgPyBcImludGVnZXJcIiA6IHBhcnNlZFR5cGUsXG4gICAgICAgICAgICBlbnVtOiBbZGVmLnZhbHVlXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogcGFyc2VkVHlwZSA9PT0gXCJiaWdpbnRcIiA/IFwiaW50ZWdlclwiIDogcGFyc2VkVHlwZSxcbiAgICAgICAgY29uc3Q6IGRlZi52YWx1ZSxcbiAgICB9O1xufVxuIiwgImltcG9ydCB7IHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMgfSBmcm9tIFwiLi4vZXJyb3JNZXNzYWdlcy5qc1wiO1xubGV0IGVtb2ppUmVnZXggPSB1bmRlZmluZWQ7XG4vKipcbiAqIEdlbmVyYXRlZCBmcm9tIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIGZvdW5kIGhlcmUgYXMgb2YgMjAyNC0wNS0yMjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9ibG9iL21hc3Rlci9zcmMvdHlwZXMudHMuXG4gKlxuICogRXhwcmVzc2lvbnMgd2l0aCAvaSBmbGFnIGhhdmUgYmVlbiBjaGFuZ2VkIGFjY29yZGluZ2x5LlxuICovXG5leHBvcnQgY29uc3Qgem9kUGF0dGVybnMgPSB7XG4gICAgLyoqXG4gICAgICogYGNgIHdhcyBjaGFuZ2VkIHRvIGBbY0NdYCB0byByZXBsaWNhdGUgL2kgZmxhZ1xuICAgICAqL1xuICAgIGN1aWQ6IC9eW2NDXVteXFxzLV17OCx9JC8sXG4gICAgY3VpZDI6IC9eWzAtOWEtel0rJC8sXG4gICAgdWxpZDogL15bMC05QS1ISktNTlAtVFYtWl17MjZ9JC8sXG4gICAgLyoqXG4gICAgICogYGEtemAgd2FzIGFkZGVkIHRvIHJlcGxpY2F0ZSAvaSBmbGFnXG4gICAgICovXG4gICAgZW1haWw6IC9eKD8hXFwuKSg/IS4qXFwuXFwuKShbYS16QS1aMC05XycrXFwtXFwuXSopW2EtekEtWjAtOV8rLV1AKFthLXpBLVowLTldW2EtekEtWjAtOVxcLV0qXFwuKStbYS16QS1aXXsyLH0kLyxcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RlZCBhIHZhbGlkIFVuaWNvZGUgUmVnRXhwXG4gICAgICpcbiAgICAgKiBMYXppbHkgaW5zdGFudGlhdGUgc2luY2UgdGhpcyB0eXBlIG9mIHJlZ2V4IGlzbid0IHN1cHBvcnRlZFxuICAgICAqIGluIGFsbCBlbnZzIChlLmcuIFJlYWN0IE5hdGl2ZSkuXG4gICAgICpcbiAgICAgKiBTZWU6XG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kL2lzc3Vlcy8yNDMzXG4gICAgICogRml4IGluIFpvZDpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvY29tbWl0LzkzNDBmZDUxZTQ4NTc2YTc1YWRjOTE5YmZmNjVkYmM0YTVkNGM5OWJcbiAgICAgKi9cbiAgICBlbW9qaTogKCkgPT4ge1xuICAgICAgICBpZiAoZW1vamlSZWdleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbW9qaVJlZ2V4ID0gUmVnRXhwKFwiXihcXFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxcXFxwe0Vtb2ppX0NvbXBvbmVudH0pKyRcIiwgXCJ1XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbW9qaVJlZ2V4O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW51c2VkXG4gICAgICovXG4gICAgdXVpZDogL15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kLyxcbiAgICAvKipcbiAgICAgKiBVbnVzZWRcbiAgICAgKi9cbiAgICBpcHY0OiAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLFxuICAgIGlwdjRDaWRyOiAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLyxcbiAgICAvKipcbiAgICAgKiBVbnVzZWRcbiAgICAgKi9cbiAgICBpcHY2OiAvXigoW2EtZjAtOV17MSw0fTopezd9fDo6KFthLWYwLTldezEsNH06KXswLDZ9fChbYS1mMC05XXsxLDR9Oil7MX06KFthLWYwLTldezEsNH06KXswLDV9fChbYS1mMC05XXsxLDR9Oil7Mn06KFthLWYwLTldezEsNH06KXswLDR9fChbYS1mMC05XXsxLDR9Oil7M306KFthLWYwLTldezEsNH06KXswLDN9fChbYS1mMC05XXsxLDR9Oil7NH06KFthLWYwLTldezEsNH06KXswLDJ9fChbYS1mMC05XXsxLDR9Oil7NX06KFthLWYwLTldezEsNH06KXswLDF9KShbYS1mMC05XXsxLDR9fCgoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKSkkLyxcbiAgICBpcHY2Q2lkcjogL14oKFswLTlhLWZBLUZdezEsNH06KXs3LDd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXXswLDR9KXswLDR9JVswLTlhLXpBLVpdezEsfXw6OihmZmZmKDowezEsNH0pezAsMX06KXswLDF9KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSkpXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxcbiAgICBiYXNlNjQ6IC9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLyxcbiAgICBiYXNlNjR1cmw6IC9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLyxcbiAgICBuYW5vaWQ6IC9eW2EtekEtWjAtOV8tXXsyMX0kLyxcbiAgICBqd3Q6IC9eW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10qJC8sXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyaW5nRGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICB9O1xuICAgIGlmIChkZWYuY2hlY2tzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgc3dpdGNoIChjaGVjay5raW5kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm1pblwiOlxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5MZW5ndGhcIiwgdHlwZW9mIHJlcy5taW5MZW5ndGggPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5tYXgocmVzLm1pbkxlbmd0aCwgY2hlY2sudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhMZW5ndGhcIiwgdHlwZW9mIHJlcy5tYXhMZW5ndGggPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5taW4ocmVzLm1heExlbmd0aCwgY2hlY2sudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVmcy5lbWFpbFN0cmF0ZWd5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybWF0OmVtYWlsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJlbWFpbFwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtYXQ6aWRuLWVtYWlsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJpZG4tZW1haWxcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicGF0dGVybjp6b2RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQYXR0ZXJuKHJlcywgem9kUGF0dGVybnMuZW1haWwsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJ1cmlcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1dWlkXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZEZvcm1hdChyZXMsIFwidXVpZFwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInJlZ2V4XCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCBjaGVjay5yZWdleCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjdWlkXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5jdWlkLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImN1aWQyXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5jdWlkMiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdGFydHNXaXRoXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCBSZWdFeHAoYF4ke2VzY2FwZUxpdGVyYWxDaGVja1ZhbHVlKGNoZWNrLnZhbHVlLCByZWZzKX1gKSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJlbmRzV2l0aFwiOlxuICAgICAgICAgICAgICAgICAgICBhZGRQYXR0ZXJuKHJlcywgUmVnRXhwKGAke2VzY2FwZUxpdGVyYWxDaGVja1ZhbHVlKGNoZWNrLnZhbHVlLCByZWZzKX0kYCksIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJkYXRlLXRpbWVcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZEZvcm1hdChyZXMsIFwiZGF0ZVwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJ0aW1lXCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJkdXJhdGlvblwiLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImxlbmd0aFwiOlxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5MZW5ndGhcIiwgdHlwZW9mIHJlcy5taW5MZW5ndGggPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5tYXgocmVzLm1pbkxlbmd0aCwgY2hlY2sudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4TGVuZ3RoXCIsIHR5cGVvZiByZXMubWF4TGVuZ3RoID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IE1hdGgubWluKHJlcy5tYXhMZW5ndGgsIGNoZWNrLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCBSZWdFeHAoZXNjYXBlTGl0ZXJhbENoZWNrVmFsdWUoY2hlY2sudmFsdWUsIHJlZnMpKSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiaXBcIjoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2sudmVyc2lvbiAhPT0gXCJ2NlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRGb3JtYXQocmVzLCBcImlwdjRcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLnZlcnNpb24gIT09IFwidjRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJpcHY2XCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiYmFzZTY0dXJsXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5iYXNlNjR1cmwsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiand0XCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5qd3QsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiY2lkclwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVjay52ZXJzaW9uICE9PSBcInY2XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5pcHY0Q2lkciwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLnZlcnNpb24gIT09IFwidjRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkUGF0dGVybihyZXMsIHpvZFBhdHRlcm5zLmlwdjZDaWRyLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcImVtb2ppXCI6XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5lbW9qaSgpLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInVsaWRcIjoge1xuICAgICAgICAgICAgICAgICAgICBhZGRQYXR0ZXJuKHJlcywgem9kUGF0dGVybnMudWxpZCwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiYmFzZTY0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWZzLmJhc2U2NFN0cmF0ZWd5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybWF0OmJpbmFyeVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRm9ybWF0KHJlcywgXCJiaW5hcnlcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY29udGVudEVuY29kaW5nOmJhc2U2NFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwiY29udGVudEVuY29kaW5nXCIsIFwiYmFzZTY0XCIsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInBhdHRlcm46em9kXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQYXR0ZXJuKHJlcywgem9kUGF0dGVybnMuYmFzZTY0LCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcIm5hbm9pZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFBhdHRlcm4ocmVzLCB6b2RQYXR0ZXJucy5uYW5vaWQsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwidG9Mb3dlckNhc2VcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwidG9VcHBlckNhc2VcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwidHJpbVwiOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAoKF8pID0+IHsgfSkoY2hlY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5mdW5jdGlvbiBlc2NhcGVMaXRlcmFsQ2hlY2tWYWx1ZShsaXRlcmFsLCByZWZzKSB7XG4gICAgcmV0dXJuIHJlZnMucGF0dGVyblN0cmF0ZWd5ID09PSBcImVzY2FwZVwiXG4gICAgICAgID8gZXNjYXBlTm9uQWxwaGFOdW1lcmljKGxpdGVyYWwpXG4gICAgICAgIDogbGl0ZXJhbDtcbn1cbmNvbnN0IEFMUEhBX05VTUVSSUMgPSBuZXcgU2V0KFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVlhZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4eXowMTIzNDU2Nzg5XCIpO1xuZnVuY3Rpb24gZXNjYXBlTm9uQWxwaGFOdW1lcmljKHNvdXJjZSkge1xuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghQUxQSEFfTlVNRVJJQy5oYXMoc291cmNlW2ldKSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwiXFxcXFwiO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBzb3VyY2VbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyBBZGRzIGEgXCJmb3JtYXRcIiBrZXl3b3JkIHRvIHRoZSBzY2hlbWEuIElmIGEgZm9ybWF0IGV4aXN0cywgYm90aCBmb3JtYXRzIHdpbGwgYmUgam9pbmVkIGluIGFuIGFsbE9mLW5vZGUsIGFsb25nIHdpdGggc3Vic2VxdWVudCBvbmVzLlxuZnVuY3Rpb24gYWRkRm9ybWF0KHNjaGVtYSwgdmFsdWUsIG1lc3NhZ2UsIHJlZnMpIHtcbiAgICBpZiAoc2NoZW1hLmZvcm1hdCB8fCBzY2hlbWEuYW55T2Y/LnNvbWUoKHgpID0+IHguZm9ybWF0KSkge1xuICAgICAgICBpZiAoIXNjaGVtYS5hbnlPZikge1xuICAgICAgICAgICAgc2NoZW1hLmFueU9mID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5mb3JtYXQpIHtcbiAgICAgICAgICAgIHNjaGVtYS5hbnlPZi5wdXNoKHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHNjaGVtYS5mb3JtYXQsXG4gICAgICAgICAgICAgICAgLi4uKHNjaGVtYS5lcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmcy5lcnJvck1lc3NhZ2VzICYmIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB7IGZvcm1hdDogc2NoZW1hLmVycm9yTWVzc2FnZS5mb3JtYXQgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS5mb3JtYXQ7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWEuZXJyb3JNZXNzYWdlLmZvcm1hdDtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hLmVycm9yTWVzc2FnZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWEuZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzY2hlbWEuYW55T2YucHVzaCh7XG4gICAgICAgICAgICBmb3JtYXQ6IHZhbHVlLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICByZWZzLmVycm9yTWVzc2FnZXMgJiYgeyBlcnJvck1lc3NhZ2U6IHsgZm9ybWF0OiBtZXNzYWdlIH0gfSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhzY2hlbWEsIFwiZm9ybWF0XCIsIHZhbHVlLCBtZXNzYWdlLCByZWZzKTtcbiAgICB9XG59XG4vLyBBZGRzIGEgXCJwYXR0ZXJuXCIga2V5d29yZCB0byB0aGUgc2NoZW1hLiBJZiBhIHBhdHRlcm4gZXhpc3RzLCBib3RoIHBhdHRlcm5zIHdpbGwgYmUgam9pbmVkIGluIGFuIGFsbE9mLW5vZGUsIGFsb25nIHdpdGggc3Vic2VxdWVudCBvbmVzLlxuZnVuY3Rpb24gYWRkUGF0dGVybihzY2hlbWEsIHJlZ2V4LCBtZXNzYWdlLCByZWZzKSB7XG4gICAgaWYgKHNjaGVtYS5wYXR0ZXJuIHx8IHNjaGVtYS5hbGxPZj8uc29tZSgoeCkgPT4geC5wYXR0ZXJuKSkge1xuICAgICAgICBpZiAoIXNjaGVtYS5hbGxPZikge1xuICAgICAgICAgICAgc2NoZW1hLmFsbE9mID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5wYXR0ZXJuKSB7XG4gICAgICAgICAgICBzY2hlbWEuYWxsT2YucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0dGVybjogc2NoZW1hLnBhdHRlcm4sXG4gICAgICAgICAgICAgICAgLi4uKHNjaGVtYS5lcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmcy5lcnJvck1lc3NhZ2VzICYmIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB7IHBhdHRlcm46IHNjaGVtYS5lcnJvck1lc3NhZ2UucGF0dGVybiB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWxldGUgc2NoZW1hLnBhdHRlcm47XG4gICAgICAgICAgICBpZiAoc2NoZW1hLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWEuZXJyb3JNZXNzYWdlLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNjaGVtYS5lcnJvck1lc3NhZ2UpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2NoZW1hLmVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hLmFsbE9mLnB1c2goe1xuICAgICAgICAgICAgcGF0dGVybjogc3RyaW5naWZ5UmVnRXhwV2l0aEZsYWdzKHJlZ2V4LCByZWZzKSxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlICYmXG4gICAgICAgICAgICAgICAgcmVmcy5lcnJvck1lc3NhZ2VzICYmIHsgZXJyb3JNZXNzYWdlOiB7IHBhdHRlcm46IG1lc3NhZ2UgfSB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHNjaGVtYSwgXCJwYXR0ZXJuXCIsIHN0cmluZ2lmeVJlZ0V4cFdpdGhGbGFncyhyZWdleCwgcmVmcyksIG1lc3NhZ2UsIHJlZnMpO1xuICAgIH1cbn1cbi8vIE11dGF0ZSB6LnN0cmluZy5yZWdleCgpIGluIGEgYmVzdCBhdHRlbXB0IHRvIGFjY29tbW9kYXRlIGZvciByZWdleCBmbGFncyB3aGVuIGFwcGx5UmVnZXhGbGFncyBpcyB0cnVlXG5mdW5jdGlvbiBzdHJpbmdpZnlSZWdFeHBXaXRoRmxhZ3MocmVnZXgsIHJlZnMpIHtcbiAgICBpZiAoIXJlZnMuYXBwbHlSZWdleEZsYWdzIHx8ICFyZWdleC5mbGFncykge1xuICAgICAgICByZXR1cm4gcmVnZXguc291cmNlO1xuICAgIH1cbiAgICAvLyBDdXJyZW50bHkgaGFuZGxlZCBmbGFnc1xuICAgIGNvbnN0IGZsYWdzID0ge1xuICAgICAgICBpOiByZWdleC5mbGFncy5pbmNsdWRlcyhcImlcIiksXG4gICAgICAgIG06IHJlZ2V4LmZsYWdzLmluY2x1ZGVzKFwibVwiKSxcbiAgICAgICAgczogcmVnZXguZmxhZ3MuaW5jbHVkZXMoXCJzXCIpLCAvLyBgLmAgbWF0Y2hlcyBuZXdsaW5lc1xuICAgIH07XG4gICAgLy8gVGhlIGdlbmVyYWwgcHJpbmNpcGxlIGhlcmUgaXMgdG8gc3RlcCB0aHJvdWdoIGVhY2ggY2hhcmFjdGVyLCBvbmUgYXQgYSB0aW1lLCBhcHBseWluZyBtdXRhdGlvbnMgYXMgZmxhZ3MgcmVxdWlyZS4gV2Uga2VlcCB0cmFjayB3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyBlc2NhcGVkLCBhbmQgd2hlbiBpdCdzIGluc2lkZSBhIGdyb3VwIC9saWtlIFt0aGlzXS8gb3IgKGFsc28pIGEgcmFuZ2UgbGlrZSAvW2Etel0vLiBUaGUgZm9sbG93aW5nIGlzIGZhaXJseSBicml0dGxlIGltcGVyYXRpdmUgY29kZTsgZWRpdCBhdCB5b3VyIHBlcmlsIVxuICAgIGNvbnN0IHNvdXJjZSA9IGZsYWdzLmkgPyByZWdleC5zb3VyY2UudG9Mb3dlckNhc2UoKSA6IHJlZ2V4LnNvdXJjZTtcbiAgICBsZXQgcGF0dGVybiA9IFwiXCI7XG4gICAgbGV0IGlzRXNjYXBlZCA9IGZhbHNlO1xuICAgIGxldCBpbkNoYXJHcm91cCA9IGZhbHNlO1xuICAgIGxldCBpbkNoYXJSYW5nZSA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc0VzY2FwZWQpIHtcbiAgICAgICAgICAgIHBhdHRlcm4gKz0gc291cmNlW2ldO1xuICAgICAgICAgICAgaXNFc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmxhZ3MuaSkge1xuICAgICAgICAgICAgaWYgKGluQ2hhckdyb3VwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtpXS5tYXRjaCgvW2Etel0vKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5DaGFyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gc291cmNlW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArPSBgJHtzb3VyY2VbaSAtIDJdfS0ke3NvdXJjZVtpXX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbkNoYXJSYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZVtpICsgMV0gPT09IFwiLVwiICYmIHNvdXJjZVtpICsgMl0/Lm1hdGNoKC9bYS16XS8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IHNvdXJjZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluQ2hhclJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gYCR7c291cmNlW2ldfSR7c291cmNlW2ldLnRvVXBwZXJDYXNlKCl9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzb3VyY2VbaV0ubWF0Y2goL1thLXpdLykpIHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IGBbJHtzb3VyY2VbaV19JHtzb3VyY2VbaV0udG9VcHBlckNhc2UoKX1dYDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmxhZ3MubSkge1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSA9PT0gXCJeXCIpIHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IGAoXnwoPzw9W1xcclxcbl0pKWA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzb3VyY2VbaV0gPT09IFwiJFwiKSB7XG4gICAgICAgICAgICAgICAgcGF0dGVybiArPSBgKCR8KD89W1xcclxcbl0pKWA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZsYWdzLnMgJiYgc291cmNlW2ldID09PSBcIi5cIikge1xuICAgICAgICAgICAgcGF0dGVybiArPSBpbkNoYXJHcm91cCA/IGAke3NvdXJjZVtpXX1cXHJcXG5gIDogYFske3NvdXJjZVtpXX1cXHJcXG5dYDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHBhdHRlcm4gKz0gc291cmNlW2ldO1xuICAgICAgICBpZiAoc291cmNlW2ldID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgaXNFc2NhcGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbkNoYXJHcm91cCAmJiBzb3VyY2VbaV0gPT09IFwiXVwiKSB7XG4gICAgICAgICAgICBpbkNoYXJHcm91cCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbkNoYXJHcm91cCAmJiBzb3VyY2VbaV0gPT09IFwiW1wiKSB7XG4gICAgICAgICAgICBpbkNoYXJHcm91cCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBjb252ZXJ0IHJlZ2V4IHBhdHRlcm4gYXQgJHtyZWZzLmN1cnJlbnRQYXRoLmpvaW4oXCIvXCIpfSB0byBhIGZsYWctaW5kZXBlbmRlbnQgZm9ybSEgRmFsbGluZyBiYWNrIHRvIHRoZSBmbGFnLWlnbm9yYW50IHNvdXJjZWApO1xuICAgICAgICByZXR1cm4gcmVnZXguc291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gcGF0dGVybjtcbn1cbiIsICJpbXBvcnQgeyBab2RGaXJzdFBhcnR5VHlwZUtpbmQsIH0gZnJvbSBcInpvZC92M1wiO1xuaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmltcG9ydCB7IHBhcnNlU3RyaW5nRGVmIH0gZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUJyYW5kZWREZWYgfSBmcm9tIFwiLi9icmFuZGVkLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL2FueS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVjb3JkRGVmKGRlZiwgcmVmcykge1xuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQWlcIikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBPcGVuQUkgbWF5IG5vdCBzdXBwb3J0IHJlY29yZHMgaW4gc2NoZW1hcyEgVHJ5IGFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyBpbnN0ZWFkLlwiKTtcbiAgICB9XG4gICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcIm9wZW5BcGkzXCIgJiZcbiAgICAgICAgZGVmLmtleVR5cGU/Ll9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFbnVtKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGRlZi5rZXlUeXBlLl9kZWYudmFsdWVzLFxuICAgICAgICAgICAgcHJvcGVydGllczogZGVmLmtleVR5cGUuX2RlZi52YWx1ZXMucmVkdWNlKChhY2MsIGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgW2tleV06IHBhcnNlRGVmKGRlZi52YWx1ZVR5cGUuX2RlZiwge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwicHJvcGVydGllc1wiLCBrZXldLFxuICAgICAgICAgICAgICAgIH0pID8/IHBhcnNlQW55RGVmKHJlZnMpLFxuICAgICAgICAgICAgfSksIHt9KSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiByZWZzLnJlamVjdGVkQWRkaXRpb25hbFByb3BlcnRpZXMsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHBhcnNlRGVmKGRlZi52YWx1ZVR5cGUuX2RlZiwge1xuICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSxcbiAgICAgICAgfSkgPz8gcmVmcy5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXMsXG4gICAgfTtcbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIikge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbiAgICBpZiAoZGVmLmtleVR5cGU/Ll9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmcgJiZcbiAgICAgICAgZGVmLmtleVR5cGUuX2RlZi5jaGVja3M/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIC4uLmtleVR5cGUgfSA9IHBhcnNlU3RyaW5nRGVmKGRlZi5rZXlUeXBlLl9kZWYsIHJlZnMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc2NoZW1hLFxuICAgICAgICAgICAgcHJvcGVydHlOYW1lczoga2V5VHlwZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGVmLmtleVR5cGU/Ll9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFbnVtKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zY2hlbWEsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzOiB7XG4gICAgICAgICAgICAgICAgZW51bTogZGVmLmtleVR5cGUuX2RlZi52YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWYua2V5VHlwZT8uX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJyYW5kZWQgJiZcbiAgICAgICAgZGVmLmtleVR5cGUuX2RlZi50eXBlLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmcgJiZcbiAgICAgICAgZGVmLmtleVR5cGUuX2RlZi50eXBlLl9kZWYuY2hlY2tzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCAuLi5rZXlUeXBlIH0gPSBwYXJzZUJyYW5kZWREZWYoZGVmLmtleVR5cGUuX2RlZiwgcmVmcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zY2hlbWEsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzOiBrZXlUeXBlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVJlY29yZERlZiB9IGZyb20gXCIuL3JlY29yZC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9hbnkuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1hcERlZihkZWYsIHJlZnMpIHtcbiAgICBpZiAocmVmcy5tYXBTdHJhdGVneSA9PT0gXCJyZWNvcmRcIikge1xuICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmREZWYoZGVmLCByZWZzKTtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IHBhcnNlRGVmKGRlZi5rZXlUeXBlLl9kZWYsIHtcbiAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIml0ZW1zXCIsIFwiaXRlbXNcIiwgXCIwXCJdLFxuICAgIH0pIHx8IHBhcnNlQW55RGVmKHJlZnMpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHBhcnNlRGVmKGRlZi52YWx1ZVR5cGUuX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiaXRlbXNcIiwgXCJpdGVtc1wiLCBcIjFcIl0sXG4gICAgfSkgfHwgcGFyc2VBbnlEZWYocmVmcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICBtYXhJdGVtczogMTI1LFxuICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgaXRlbXM6IFtrZXlzLCB2YWx1ZXNdLFxuICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgfSxcbiAgICB9O1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZU5hdGl2ZUVudW1EZWYoZGVmKSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gZGVmLnZhbHVlcztcbiAgICBjb25zdCBhY3R1YWxLZXlzID0gT2JqZWN0LmtleXMoZGVmLnZhbHVlcykuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmplY3Rbb2JqZWN0W2tleV1dICE9PSBcIm51bWJlclwiO1xuICAgIH0pO1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlcyA9IGFjdHVhbEtleXMubWFwKChrZXkpID0+IG9iamVjdFtrZXldKTtcbiAgICBjb25zdCBwYXJzZWRUeXBlcyA9IEFycmF5LmZyb20obmV3IFNldChhY3R1YWxWYWx1ZXMubWFwKCh2YWx1ZXMpID0+IHR5cGVvZiB2YWx1ZXMpKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogcGFyc2VkVHlwZXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IHBhcnNlZFR5cGVzWzBdID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgPyBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgOiBcIm51bWJlclwiXG4gICAgICAgICAgICA6IFtcInN0cmluZ1wiLCBcIm51bWJlclwiXSxcbiAgICAgICAgZW51bTogYWN0dWFsVmFsdWVzLFxuICAgIH07XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9hbnkuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5ldmVyRGVmKHJlZnMpIHtcbiAgICByZXR1cm4gcmVmcy50YXJnZXQgPT09IFwib3BlbkFpXCJcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiB7XG4gICAgICAgICAgICBub3Q6IHBhcnNlQW55RGVmKHtcbiAgICAgICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJub3RcIl0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VOdWxsRGVmKHJlZnMpIHtcbiAgICByZXR1cm4gcmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIlxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGVudW06IFtcIm51bGxcIl0sXG4gICAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR5cGU6IFwibnVsbFwiLFxuICAgICAgICB9O1xufVxuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5leHBvcnQgY29uc3QgcHJpbWl0aXZlTWFwcGluZ3MgPSB7XG4gICAgWm9kU3RyaW5nOiBcInN0cmluZ1wiLFxuICAgIFpvZE51bWJlcjogXCJudW1iZXJcIixcbiAgICBab2RCaWdJbnQ6IFwiaW50ZWdlclwiLFxuICAgIFpvZEJvb2xlYW46IFwiYm9vbGVhblwiLFxuICAgIFpvZE51bGw6IFwibnVsbFwiLFxufTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaW9uRGVmKGRlZiwgcmVmcykge1xuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJvcGVuQXBpM1wiKVxuICAgICAgICByZXR1cm4gYXNBbnlPZihkZWYsIHJlZnMpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBkZWYub3B0aW9ucyBpbnN0YW5jZW9mIE1hcCA/IEFycmF5LmZyb20oZGVmLm9wdGlvbnMudmFsdWVzKCkpIDogZGVmLm9wdGlvbnM7XG4gICAgLy8gVGhpcyBibG9ja3MgdHJpZXMgdG8gbG9vayBhaGVhZCBhIGJpdCB0byBwcm9kdWNlIG5pY2VyIGxvb2tpbmcgc2NoZW1hcyB3aXRoIHR5cGUgYXJyYXkgaW5zdGVhZCBvZiBhbnlPZi5cbiAgICBpZiAob3B0aW9ucy5ldmVyeSgoeCkgPT4geC5fZGVmLnR5cGVOYW1lIGluIHByaW1pdGl2ZU1hcHBpbmdzICYmXG4gICAgICAgICgheC5fZGVmLmNoZWNrcyB8fCAheC5fZGVmLmNoZWNrcy5sZW5ndGgpKSkge1xuICAgICAgICAvLyBhbGwgdHlwZXMgaW4gdW5pb24gYXJlIHByaW1pdGl2ZSBhbmQgbGFjayBjaGVja3MsIHNvIG1pZ2h0IGFzIHdlbGwgc3F1YXNoIGludG8ge3R5cGU6IFsuLi5dfVxuICAgICAgICBjb25zdCB0eXBlcyA9IG9wdGlvbnMucmVkdWNlKCh0eXBlcywgeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHByaW1pdGl2ZU1hcHBpbmdzW3guX2RlZi50eXBlTmFtZV07IC8vQ2FuIGJlIHNhZmVseSBjYXN0ZWQgZHVlIHRvIHJvdyA0M1xuICAgICAgICAgICAgcmV0dXJuIHR5cGUgJiYgIXR5cGVzLmluY2x1ZGVzKHR5cGUpID8gWy4uLnR5cGVzLCB0eXBlXSA6IHR5cGVzO1xuICAgICAgICB9LCBbXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlcy5sZW5ndGggPiAxID8gdHlwZXMgOiB0eXBlc1swXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucy5ldmVyeSgoeCkgPT4geC5fZGVmLnR5cGVOYW1lID09PSBcIlpvZExpdGVyYWxcIiAmJiAheC5kZXNjcmlwdGlvbikpIHtcbiAgICAgICAgLy8gYWxsIG9wdGlvbnMgbGl0ZXJhbHNcbiAgICAgICAgY29uc3QgdHlwZXMgPSBvcHRpb25zLnJlZHVjZSgoYWNjLCB4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIHguX2RlZi52YWx1ZTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hY2MsIHR5cGVdO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hY2MsIFwiaW50ZWdlclwiXTtcbiAgICAgICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgICAgIGlmICh4Ll9kZWYudmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFjYywgXCJudWxsXCJdO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwidW5kZWZpbmVkXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgICAgICBpZiAodHlwZXMubGVuZ3RoID09PSBvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gYWxsIHRoZSBsaXRlcmFscyBhcmUgcHJpbWl0aXZlLCBhcyBmYXIgYXMgbnVsbCBjYW4gYmUgY29uc2lkZXJlZCBwcmltaXRpdmVcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZVR5cGVzID0gdHlwZXMuZmlsdGVyKCh4LCBpLCBhKSA9PiBhLmluZGV4T2YoeCkgPT09IGkpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiB1bmlxdWVUeXBlcy5sZW5ndGggPiAxID8gdW5pcXVlVHlwZXMgOiB1bmlxdWVUeXBlc1swXSxcbiAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25zLnJlZHVjZSgoYWNjLCB4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2MuaW5jbHVkZXMoeC5fZGVmLnZhbHVlKSA/IGFjYyA6IFsuLi5hY2MsIHguX2RlZi52YWx1ZV07XG4gICAgICAgICAgICAgICAgfSwgW10pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChvcHRpb25zLmV2ZXJ5KCh4KSA9PiB4Ll9kZWYudHlwZU5hbWUgPT09IFwiWm9kRW51bVwiKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGVudW06IG9wdGlvbnMucmVkdWNlKChhY2MsIHgpID0+IFtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgLi4ueC5fZGVmLnZhbHVlcy5maWx0ZXIoKHgpID0+ICFhY2MuaW5jbHVkZXMoeCkpLFxuICAgICAgICAgICAgXSwgW10pLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYXNBbnlPZihkZWYsIHJlZnMpO1xufVxuY29uc3QgYXNBbnlPZiA9IChkZWYsIHJlZnMpID0+IHtcbiAgICBjb25zdCBhbnlPZiA9IChkZWYub3B0aW9ucyBpbnN0YW5jZW9mIE1hcFxuICAgICAgICA/IEFycmF5LmZyb20oZGVmLm9wdGlvbnMudmFsdWVzKCkpXG4gICAgICAgIDogZGVmLm9wdGlvbnMpXG4gICAgICAgIC5tYXAoKHgsIGkpID0+IHBhcnNlRGVmKHguX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYW55T2ZcIiwgYCR7aX1gXSxcbiAgICB9KSlcbiAgICAgICAgLmZpbHRlcigoeCkgPT4gISF4ICYmXG4gICAgICAgICghcmVmcy5zdHJpY3RVbmlvbnMgfHxcbiAgICAgICAgICAgICh0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyh4KS5sZW5ndGggPiAwKSkpO1xuICAgIHJldHVybiBhbnlPZi5sZW5ndGggPyB7IGFueU9mIH0gOiB1bmRlZmluZWQ7XG59O1xuIiwgImltcG9ydCB7IHBhcnNlRGVmIH0gZnJvbSBcIi4uL3BhcnNlRGVmLmpzXCI7XG5pbXBvcnQgeyBwcmltaXRpdmVNYXBwaW5ncyB9IGZyb20gXCIuL3VuaW9uLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdWxsYWJsZURlZihkZWYsIHJlZnMpIHtcbiAgICBpZiAoW1wiWm9kU3RyaW5nXCIsIFwiWm9kTnVtYmVyXCIsIFwiWm9kQmlnSW50XCIsIFwiWm9kQm9vbGVhblwiLCBcIlpvZE51bGxcIl0uaW5jbHVkZXMoZGVmLmlubmVyVHlwZS5fZGVmLnR5cGVOYW1lKSAmJlxuICAgICAgICAoIWRlZi5pbm5lclR5cGUuX2RlZi5jaGVja3MgfHwgIWRlZi5pbm5lclR5cGUuX2RlZi5jaGVja3MubGVuZ3RoKSkge1xuICAgICAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBwcmltaXRpdmVNYXBwaW5nc1tkZWYuaW5uZXJUeXBlLl9kZWYudHlwZU5hbWVdLFxuICAgICAgICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogW1xuICAgICAgICAgICAgICAgIHByaW1pdGl2ZU1hcHBpbmdzW2RlZi5pbm5lclR5cGUuX2RlZi50eXBlTmFtZV0sXG4gICAgICAgICAgICAgICAgXCJudWxsXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFwaTNcIikge1xuICAgICAgICBjb25zdCBiYXNlID0gcGFyc2VEZWYoZGVmLmlubmVyVHlwZS5fZGVmLCB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChiYXNlICYmIFwiJHJlZlwiIGluIGJhc2UpXG4gICAgICAgICAgICByZXR1cm4geyBhbGxPZjogW2Jhc2VdLCBudWxsYWJsZTogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4gYmFzZSAmJiB7IC4uLmJhc2UsIG51bGxhYmxlOiB0cnVlIH07XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSBwYXJzZURlZihkZWYuaW5uZXJUeXBlLl9kZWYsIHtcbiAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFueU9mXCIsIFwiMFwiXSxcbiAgICB9KTtcbiAgICByZXR1cm4gYmFzZSAmJiB7IGFueU9mOiBbYmFzZSwgeyB0eXBlOiBcIm51bGxcIiB9XSB9O1xufVxuIiwgImltcG9ydCB7IGFkZEVycm9yTWVzc2FnZSwgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycywgfSBmcm9tIFwiLi4vZXJyb3JNZXNzYWdlcy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyRGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICB9O1xuICAgIGlmICghZGVmLmNoZWNrcylcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIGRlZi5jaGVja3MpIHtcbiAgICAgICAgc3dpdGNoIChjaGVjay5raW5kKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW50XCI6XG4gICAgICAgICAgICAgICAgcmVzLnR5cGUgPSBcImludGVnZXJcIjtcbiAgICAgICAgICAgICAgICBhZGRFcnJvck1lc3NhZ2UocmVzLCBcInR5cGVcIiwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWE3XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWluaW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJleGNsdXNpdmVNaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5leGNsdXNpdmVNaW5pbXVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtaW5pbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibWF4XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZnMudGFyZ2V0ID09PSBcImpzb25TY2hlbWE3XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyhyZXMsIFwibWF4aW11bVwiLCBjaGVjay52YWx1ZSwgY2hlY2subWVzc2FnZSwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJleGNsdXNpdmVNYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjay5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5leGNsdXNpdmVNYXhpbXVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRSZXNwb25zZVZhbHVlQW5kRXJyb3JzKHJlcywgXCJtYXhpbXVtXCIsIGNoZWNrLnZhbHVlLCBjaGVjay5tZXNzYWdlLCByZWZzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibXVsdGlwbGVPZlwiOlxuICAgICAgICAgICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMocmVzLCBcIm11bHRpcGxlT2ZcIiwgY2hlY2sudmFsdWUsIGNoZWNrLm1lc3NhZ2UsIHJlZnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9iamVjdERlZihkZWYsIHJlZnMpIHtcbiAgICBjb25zdCBmb3JjZU9wdGlvbmFsSW50b051bGxhYmxlID0gcmVmcy50YXJnZXQgPT09IFwib3BlbkFpXCI7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICB9O1xuICAgIGNvbnN0IHJlcXVpcmVkID0gW107XG4gICAgY29uc3Qgc2hhcGUgPSBkZWYuc2hhcGUoKTtcbiAgICBmb3IgKGNvbnN0IHByb3BOYW1lIGluIHNoYXBlKSB7XG4gICAgICAgIGxldCBwcm9wRGVmID0gc2hhcGVbcHJvcE5hbWVdO1xuICAgICAgICBpZiAocHJvcERlZiA9PT0gdW5kZWZpbmVkIHx8IHByb3BEZWYuX2RlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvcE9wdGlvbmFsID0gc2FmZUlzT3B0aW9uYWwocHJvcERlZik7XG4gICAgICAgIGlmIChwcm9wT3B0aW9uYWwgJiYgZm9yY2VPcHRpb25hbEludG9OdWxsYWJsZSkge1xuICAgICAgICAgICAgaWYgKHByb3BEZWYuX2RlZi50eXBlTmFtZSA9PT0gXCJab2RPcHRpb25hbFwiKSB7XG4gICAgICAgICAgICAgICAgcHJvcERlZiA9IHByb3BEZWYuX2RlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXByb3BEZWYuaXNOdWxsYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgcHJvcERlZiA9IHByb3BEZWYubnVsbGFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BPcHRpb25hbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZERlZiA9IHBhcnNlRGVmKHByb3BEZWYuX2RlZiwge1xuICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJwcm9wZXJ0aWVzXCIsIHByb3BOYW1lXSxcbiAgICAgICAgICAgIHByb3BlcnR5UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwicHJvcGVydGllc1wiLCBwcm9wTmFtZV0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocGFyc2VkRGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5wcm9wZXJ0aWVzW3Byb3BOYW1lXSA9IHBhcnNlZERlZjtcbiAgICAgICAgaWYgKCFwcm9wT3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcXVpcmVkLnB1c2gocHJvcE5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZXF1aXJlZC5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0LnJlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgfVxuICAgIGNvbnN0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZGVjaWRlQWRkaXRpb25hbFByb3BlcnRpZXMoZGVmLCByZWZzKTtcbiAgICBpZiAoYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXN1bHQuYWRkaXRpb25hbFByb3BlcnRpZXMgPSBhZGRpdGlvbmFsUHJvcGVydGllcztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGRlY2lkZUFkZGl0aW9uYWxQcm9wZXJ0aWVzKGRlZiwgcmVmcykge1xuICAgIGlmIChkZWYuY2F0Y2hhbGwuX2RlZi50eXBlTmFtZSAhPT0gXCJab2ROZXZlclwiKSB7XG4gICAgICAgIHJldHVybiBwYXJzZURlZihkZWYuY2F0Y2hhbGwuX2RlZiwge1xuICAgICAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN3aXRjaCAoZGVmLnVua25vd25LZXlzKSB7XG4gICAgICAgIGNhc2UgXCJwYXNzdGhyb3VnaFwiOlxuICAgICAgICAgICAgcmV0dXJuIHJlZnMuYWxsb3dlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICBjYXNlIFwic3RyaWN0XCI6XG4gICAgICAgICAgICByZXR1cm4gcmVmcy5yZWplY3RlZEFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICBjYXNlIFwic3RyaXBcIjpcbiAgICAgICAgICAgIHJldHVybiByZWZzLnJlbW92ZUFkZGl0aW9uYWxTdHJhdGVneSA9PT0gXCJzdHJpY3RcIlxuICAgICAgICAgICAgICAgID8gcmVmcy5hbGxvd2VkQWRkaXRpb25hbFByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICA6IHJlZnMucmVqZWN0ZWRBZGRpdGlvbmFsUHJvcGVydGllcztcbiAgICB9XG59XG5mdW5jdGlvbiBzYWZlSXNPcHRpb25hbChzY2hlbWEpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmlzT3B0aW9uYWwoKTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vYW55LmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2VPcHRpb25hbERlZiA9IChkZWYsIHJlZnMpID0+IHtcbiAgICBpZiAocmVmcy5jdXJyZW50UGF0aC50b1N0cmluZygpID09PSByZWZzLnByb3BlcnR5UGF0aD8udG9TdHJpbmcoKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VEZWYoZGVmLmlubmVyVHlwZS5fZGVmLCByZWZzKTtcbiAgICB9XG4gICAgY29uc3QgaW5uZXJTY2hlbWEgPSBwYXJzZURlZihkZWYuaW5uZXJUeXBlLl9kZWYsIHtcbiAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFueU9mXCIsIFwiMVwiXSxcbiAgICB9KTtcbiAgICByZXR1cm4gaW5uZXJTY2hlbWFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBhbnlPZjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm90OiBwYXJzZUFueURlZihyZWZzKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlubmVyU2NoZW1hLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgICA6IHBhcnNlQW55RGVmKHJlZnMpO1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlUGlwZWxpbmVEZWYgPSAoZGVmLCByZWZzKSA9PiB7XG4gICAgaWYgKHJlZnMucGlwZVN0cmF0ZWd5ID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRGVmKGRlZi5pbi5fZGVmLCByZWZzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmcy5waXBlU3RyYXRlZ3kgPT09IFwib3V0cHV0XCIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRGVmKGRlZi5vdXQuX2RlZiwgcmVmcyk7XG4gICAgfVxuICAgIGNvbnN0IGEgPSBwYXJzZURlZihkZWYuaW4uX2RlZiwge1xuICAgICAgICAuLi5yZWZzLFxuICAgICAgICBjdXJyZW50UGF0aDogWy4uLnJlZnMuY3VycmVudFBhdGgsIFwiYWxsT2ZcIiwgXCIwXCJdLFxuICAgIH0pO1xuICAgIGNvbnN0IGIgPSBwYXJzZURlZihkZWYub3V0Ll9kZWYsIHtcbiAgICAgICAgLi4ucmVmcyxcbiAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcImFsbE9mXCIsIGEgPyBcIjFcIiA6IFwiMFwiXSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbGxPZjogW2EsIGJdLmZpbHRlcigoeCkgPT4geCAhPT0gdW5kZWZpbmVkKSxcbiAgICB9O1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJvbWlzZURlZihkZWYsIHJlZnMpIHtcbiAgICByZXR1cm4gcGFyc2VEZWYoZGVmLnR5cGUuX2RlZiwgcmVmcyk7XG59XG4iLCAiaW1wb3J0IHsgc2V0UmVzcG9uc2VWYWx1ZUFuZEVycm9ycyB9IGZyb20gXCIuLi9lcnJvck1lc3NhZ2VzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2V0RGVmKGRlZiwgcmVmcykge1xuICAgIGNvbnN0IGl0ZW1zID0gcGFyc2VEZWYoZGVmLnZhbHVlVHlwZS5fZGVmLCB7XG4gICAgICAgIC4uLnJlZnMsXG4gICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJpdGVtc1wiXSxcbiAgICB9KTtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgIGl0ZW1zLFxuICAgIH07XG4gICAgaWYgKGRlZi5taW5TaXplKSB7XG4gICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMoc2NoZW1hLCBcIm1pbkl0ZW1zXCIsIGRlZi5taW5TaXplLnZhbHVlLCBkZWYubWluU2l6ZS5tZXNzYWdlLCByZWZzKTtcbiAgICB9XG4gICAgaWYgKGRlZi5tYXhTaXplKSB7XG4gICAgICAgIHNldFJlc3BvbnNlVmFsdWVBbmRFcnJvcnMoc2NoZW1hLCBcIm1heEl0ZW1zXCIsIGRlZi5tYXhTaXplLnZhbHVlLCBkZWYubWF4U2l6ZS5tZXNzYWdlLCByZWZzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZURlZiB9IGZyb20gXCIuLi9wYXJzZURlZi5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHVwbGVEZWYoZGVmLCByZWZzKSB7XG4gICAgaWYgKGRlZi5yZXN0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBtaW5JdGVtczogZGVmLml0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgIGl0ZW1zOiBkZWYuaXRlbXNcbiAgICAgICAgICAgICAgICAubWFwKCh4LCBpKSA9PiBwYXJzZURlZih4Ll9kZWYsIHtcbiAgICAgICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJpdGVtc1wiLCBgJHtpfWBdLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCB4KSA9PiAoeCA9PT0gdW5kZWZpbmVkID8gYWNjIDogWy4uLmFjYywgeF0pLCBbXSksXG4gICAgICAgICAgICBhZGRpdGlvbmFsSXRlbXM6IHBhcnNlRGVmKGRlZi5yZXN0Ll9kZWYsIHtcbiAgICAgICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4ucmVmcy5jdXJyZW50UGF0aCwgXCJhZGRpdGlvbmFsSXRlbXNcIl0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBtaW5JdGVtczogZGVmLml0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgIG1heEl0ZW1zOiBkZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgaXRlbXM6IGRlZi5pdGVtc1xuICAgICAgICAgICAgICAgIC5tYXAoKHgsIGkpID0+IHBhcnNlRGVmKHguX2RlZiwge1xuICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmN1cnJlbnRQYXRoLCBcIml0ZW1zXCIsIGAke2l9YF0sXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChhY2MsIHgpID0+ICh4ID09PSB1bmRlZmluZWQgPyBhY2MgOiBbLi4uYWNjLCB4XSksIFtdKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VBbnlEZWYgfSBmcm9tIFwiLi9hbnkuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuZGVmaW5lZERlZihyZWZzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm90OiBwYXJzZUFueURlZihyZWZzKSxcbiAgICB9O1xufVxuIiwgImltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vYW55LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbmtub3duRGVmKHJlZnMpIHtcbiAgICByZXR1cm4gcGFyc2VBbnlEZWYocmVmcyk7XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi4vcGFyc2VEZWYuanNcIjtcbmV4cG9ydCBjb25zdCBwYXJzZVJlYWRvbmx5RGVmID0gKGRlZiwgcmVmcykgPT4ge1xuICAgIHJldHVybiBwYXJzZURlZihkZWYuaW5uZXJUeXBlLl9kZWYsIHJlZnMpO1xufTtcbiIsICJpbXBvcnQgeyBab2RGaXJzdFBhcnR5VHlwZUtpbmQgfSBmcm9tIFwiem9kL3YzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURlZiB9IGZyb20gXCIuL3BhcnNlcnMvYW55LmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFycmF5RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9hcnJheS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VCaWdpbnREZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2JpZ2ludC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VCb29sZWFuRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9ib29sZWFuLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUJyYW5kZWREZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2JyYW5kZWQuanNcIjtcbmltcG9ydCB7IHBhcnNlQ2F0Y2hEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2NhdGNoLmpzXCI7XG5pbXBvcnQgeyBwYXJzZURhdGVEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2RhdGUuanNcIjtcbmltcG9ydCB7IHBhcnNlRGVmYXVsdERlZiB9IGZyb20gXCIuL3BhcnNlcnMvZGVmYXVsdC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VFZmZlY3RzRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9lZmZlY3RzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUVudW1EZWYgfSBmcm9tIFwiLi9wYXJzZXJzL2VudW0uanNcIjtcbmltcG9ydCB7IHBhcnNlSW50ZXJzZWN0aW9uRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9pbnRlcnNlY3Rpb24uanNcIjtcbmltcG9ydCB7IHBhcnNlTGl0ZXJhbERlZiB9IGZyb20gXCIuL3BhcnNlcnMvbGl0ZXJhbC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VNYXBEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL21hcC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOYXRpdmVFbnVtRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9uYXRpdmVFbnVtLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5ldmVyRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9uZXZlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdWxsRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9udWxsLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bGxhYmxlRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9udWxsYWJsZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXJEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL251bWJlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VPYmplY3REZWYgfSBmcm9tIFwiLi9wYXJzZXJzL29iamVjdC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VPcHRpb25hbERlZiB9IGZyb20gXCIuL3BhcnNlcnMvb3B0aW9uYWwuanNcIjtcbmltcG9ydCB7IHBhcnNlUGlwZWxpbmVEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3BpcGVsaW5lLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVByb21pc2VEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3Byb21pc2UuanNcIjtcbmltcG9ydCB7IHBhcnNlUmVjb3JkRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9yZWNvcmQuanNcIjtcbmltcG9ydCB7IHBhcnNlU2V0RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9zZXQuanNcIjtcbmltcG9ydCB7IHBhcnNlU3RyaW5nRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9zdHJpbmcuanNcIjtcbmltcG9ydCB7IHBhcnNlVHVwbGVEZWYgfSBmcm9tIFwiLi9wYXJzZXJzL3R1cGxlLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVVuZGVmaW5lZERlZiB9IGZyb20gXCIuL3BhcnNlcnMvdW5kZWZpbmVkLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVVuaW9uRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy91bmlvbi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VVbmtub3duRGVmIH0gZnJvbSBcIi4vcGFyc2Vycy91bmtub3duLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVJlYWRvbmx5RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9yZWFkb25seS5qc1wiO1xuZXhwb3J0IGNvbnN0IHNlbGVjdFBhcnNlciA9IChkZWYsIHR5cGVOYW1lLCByZWZzKSA9PiB7XG4gICAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVtYmVyOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU9iamVjdERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCaWdJbnQ6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VCaWdpbnREZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQm9vbGVhbjpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJvb2xlYW5EZWYoKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZURhdGVEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5kZWZpbmVkOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlVW5kZWZpbmVkRGVmKHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROdWxsOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlTnVsbERlZihyZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXk6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJheURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmlvbjpcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGlzY3JpbWluYXRlZFVuaW9uOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlVW5pb25EZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50ZXJzZWN0aW9uRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlVHVwbGVEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVjb3JkOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVjb3JkRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWw6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VMaXRlcmFsRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW06XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VFbnVtRGVmKGRlZik7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW06XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOYXRpdmVFbnVtRGVmKGRlZik7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlTnVsbGFibGVEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT3B0aW9uYWw6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VPcHRpb25hbERlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RNYXA6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VNYXBEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU2V0OlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU2V0RGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExhenk6XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gZGVmLmdldHRlcigpLl9kZWY7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFByb21pc2U6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VQcm9taXNlRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hTjpcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmV2ZXI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOZXZlckRlZihyZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0czpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUVmZmVjdHNEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQW55OlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQW55RGVmKHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmtub3duOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlVW5rbm93bkRlZihyZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZURlZmF1bHREZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQnJhbmRlZDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJyYW5kZWREZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHk6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VSZWFkb25seURlZihkZWYsIHJlZnMpO1xuICAgICAgICBjYXNlIFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RDYXRjaDpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUNhdGNoRGVmKGRlZiwgcmVmcyk7XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFBpcGVsaW5lOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGlwZWxpbmVEZWYoZGVmLCByZWZzKTtcbiAgICAgICAgY2FzZSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRnVuY3Rpb246XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFZvaWQ6XG4gICAgICAgIGNhc2UgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN5bWJvbDpcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gKChfKSA9PiB1bmRlZmluZWQpKHR5cGVOYW1lKTtcbiAgICB9XG59O1xuIiwgImltcG9ydCB7IGlnbm9yZU92ZXJyaWRlIH0gZnJvbSBcIi4vT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0UGFyc2VyIH0gZnJvbSBcIi4vc2VsZWN0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBnZXRSZWxhdGl2ZVBhdGggfSBmcm9tIFwiLi9nZXRSZWxhdGl2ZVBhdGguanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9hbnkuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURlZihkZWYsIHJlZnMsIGZvcmNlUmVzb2x1dGlvbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2Vlbkl0ZW0gPSByZWZzLnNlZW4uZ2V0KGRlZik7XG4gICAgaWYgKHJlZnMub3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3Qgb3ZlcnJpZGVSZXN1bHQgPSByZWZzLm92ZXJyaWRlPy4oZGVmLCByZWZzLCBzZWVuSXRlbSwgZm9yY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgaWYgKG92ZXJyaWRlUmVzdWx0ICE9PSBpZ25vcmVPdmVycmlkZSkge1xuICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRlUmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzZWVuSXRlbSAmJiAhZm9yY2VSZXNvbHV0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNlZW5TY2hlbWEgPSBnZXQkcmVmKHNlZW5JdGVtLCByZWZzKTtcbiAgICAgICAgaWYgKHNlZW5TY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlZW5TY2hlbWE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV3SXRlbSA9IHsgZGVmLCBwYXRoOiByZWZzLmN1cnJlbnRQYXRoLCBqc29uU2NoZW1hOiB1bmRlZmluZWQgfTtcbiAgICByZWZzLnNlZW4uc2V0KGRlZiwgbmV3SXRlbSk7XG4gICAgY29uc3QganNvblNjaGVtYU9yR2V0dGVyID0gc2VsZWN0UGFyc2VyKGRlZiwgZGVmLnR5cGVOYW1lLCByZWZzKTtcbiAgICAvLyBJZiB0aGUgcmV0dXJuIHdhcyBhIGZ1bmN0aW9uLCB0aGVuIHRoZSBpbm5lciBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCBiZWZvcmUgYSBjYWxsIHRvIHBhcnNlRGVmIChyZWN1cnNpdmUpXG4gICAgY29uc3QganNvblNjaGVtYSA9IHR5cGVvZiBqc29uU2NoZW1hT3JHZXR0ZXIgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/IHBhcnNlRGVmKGpzb25TY2hlbWFPckdldHRlcigpLCByZWZzKVxuICAgICAgICA6IGpzb25TY2hlbWFPckdldHRlcjtcbiAgICBpZiAoanNvblNjaGVtYSkge1xuICAgICAgICBhZGRNZXRhKGRlZiwgcmVmcywganNvblNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChyZWZzLnBvc3RQcm9jZXNzKSB7XG4gICAgICAgIGNvbnN0IHBvc3RQcm9jZXNzUmVzdWx0ID0gcmVmcy5wb3N0UHJvY2Vzcyhqc29uU2NoZW1hLCBkZWYsIHJlZnMpO1xuICAgICAgICBuZXdJdGVtLmpzb25TY2hlbWEgPSBqc29uU2NoZW1hO1xuICAgICAgICByZXR1cm4gcG9zdFByb2Nlc3NSZXN1bHQ7XG4gICAgfVxuICAgIG5ld0l0ZW0uanNvblNjaGVtYSA9IGpzb25TY2hlbWE7XG4gICAgcmV0dXJuIGpzb25TY2hlbWE7XG59XG5jb25zdCBnZXQkcmVmID0gKGl0ZW0sIHJlZnMpID0+IHtcbiAgICBzd2l0Y2ggKHJlZnMuJHJlZlN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgXCJyb290XCI6XG4gICAgICAgICAgICByZXR1cm4geyAkcmVmOiBpdGVtLnBhdGguam9pbihcIi9cIikgfTtcbiAgICAgICAgY2FzZSBcInJlbGF0aXZlXCI6XG4gICAgICAgICAgICByZXR1cm4geyAkcmVmOiBnZXRSZWxhdGl2ZVBhdGgocmVmcy5jdXJyZW50UGF0aCwgaXRlbS5wYXRoKSB9O1xuICAgICAgICBjYXNlIFwibm9uZVwiOlxuICAgICAgICBjYXNlIFwic2VlblwiOiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5wYXRoLmxlbmd0aCA8IHJlZnMuY3VycmVudFBhdGgubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgaXRlbS5wYXRoLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHJlZnMuY3VycmVudFBhdGhbaW5kZXhdID09PSB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlY3Vyc2l2ZSByZWZlcmVuY2UgZGV0ZWN0ZWQgYXQgJHtyZWZzLmN1cnJlbnRQYXRoLmpvaW4oXCIvXCIpfSEgRGVmYXVsdGluZyB0byBhbnlgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VBbnlEZWYocmVmcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVmcy4kcmVmU3RyYXRlZ3kgPT09IFwic2VlblwiID8gcGFyc2VBbnlEZWYocmVmcykgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59O1xuY29uc3QgYWRkTWV0YSA9IChkZWYsIHJlZnMsIGpzb25TY2hlbWEpID0+IHtcbiAgICBpZiAoZGVmLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGpzb25TY2hlbWEuZGVzY3JpcHRpb24gPSBkZWYuZGVzY3JpcHRpb247XG4gICAgICAgIGlmIChyZWZzLm1hcmtkb3duRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGpzb25TY2hlbWEubWFya2Rvd25EZXNjcmlwdGlvbiA9IGRlZi5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn07XG4iLCAiaW1wb3J0IHsgcGFyc2VEZWYgfSBmcm9tIFwiLi9wYXJzZURlZi5qc1wiO1xuaW1wb3J0IHsgZ2V0UmVmcyB9IGZyb20gXCIuL1JlZnMuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGVmIH0gZnJvbSBcIi4vcGFyc2Vycy9hbnkuanNcIjtcbmNvbnN0IHpvZFRvSnNvblNjaGVtYSA9IChzY2hlbWEsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByZWZzID0gZ2V0UmVmcyhvcHRpb25zKTtcbiAgICBsZXQgZGVmaW5pdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIiAmJiBvcHRpb25zLmRlZmluaXRpb25zXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5kZWZpbml0aW9ucykucmVkdWNlKChhY2MsIFtuYW1lLCBzY2hlbWFdKSA9PiAoe1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW25hbWVdOiBwYXJzZURlZihzY2hlbWEuX2RlZiwge1xuICAgICAgICAgICAgICAgIC4uLnJlZnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmJhc2VQYXRoLCByZWZzLmRlZmluaXRpb25QYXRoLCBuYW1lXSxcbiAgICAgICAgICAgIH0sIHRydWUpID8/IHBhcnNlQW55RGVmKHJlZnMpLFxuICAgICAgICB9KSwge30pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IG9wdGlvbnNcbiAgICAgICAgOiBvcHRpb25zPy5uYW1lU3RyYXRlZ3kgPT09IFwidGl0bGVcIlxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogb3B0aW9ucz8ubmFtZTtcbiAgICBjb25zdCBtYWluID0gcGFyc2VEZWYoc2NoZW1hLl9kZWYsIG5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHJlZnNcbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5yZWZzLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFsuLi5yZWZzLmJhc2VQYXRoLCByZWZzLmRlZmluaXRpb25QYXRoLCBuYW1lXSxcbiAgICAgICAgfSwgZmFsc2UpID8/IHBhcnNlQW55RGVmKHJlZnMpO1xuICAgIGNvbnN0IHRpdGxlID0gdHlwZW9mIG9wdGlvbnMgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgb3B0aW9ucy5uYW1lU3RyYXRlZ3kgPT09IFwidGl0bGVcIlxuICAgICAgICA/IG9wdGlvbnMubmFtZVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYWluLnRpdGxlID0gdGl0bGU7XG4gICAgfVxuICAgIGlmIChyZWZzLmZsYWdzLmhhc1JlZmVyZW5jZWRPcGVuQWlBbnlUeXBlKSB7XG4gICAgICAgIGlmICghZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZWZpbml0aW9uc1tyZWZzLm9wZW5BaUFueVR5cGVOYW1lXSkge1xuICAgICAgICAgICAgZGVmaW5pdGlvbnNbcmVmcy5vcGVuQWlBbnlUeXBlTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgLy8gU2tpcHBpbmcgXCJvYmplY3RcIiBhcyBubyBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIGFuZCBhZGRpdGlvbmFsUHJvcGVydGllcyBtdXN0IGJlIFwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIHR5cGU6IFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImludGVnZXJcIiwgXCJib29sZWFuXCIsIFwiYXJyYXlcIiwgXCJudWxsXCJdLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICRyZWY6IHJlZnMuJHJlZlN0cmF0ZWd5ID09PSBcInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlZnMuYmFzZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcy5kZWZpbml0aW9uUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzLm9wZW5BaUFueVR5cGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXS5qb2luKFwiL1wiKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb21iaW5lZCA9IG5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IGRlZmluaXRpb25zXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAuLi5tYWluLFxuICAgICAgICAgICAgICAgIFtyZWZzLmRlZmluaXRpb25QYXRoXTogZGVmaW5pdGlvbnMsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG1haW5cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAkcmVmOiBbXG4gICAgICAgICAgICAgICAgLi4uKHJlZnMuJHJlZlN0cmF0ZWd5ID09PSBcInJlbGF0aXZlXCIgPyBbXSA6IHJlZnMuYmFzZVBhdGgpLFxuICAgICAgICAgICAgICAgIHJlZnMuZGVmaW5pdGlvblBhdGgsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIF0uam9pbihcIi9cIiksXG4gICAgICAgICAgICBbcmVmcy5kZWZpbml0aW9uUGF0aF06IHtcbiAgICAgICAgICAgICAgICAuLi5kZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICBbbmFtZV06IG1haW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIGlmIChyZWZzLnRhcmdldCA9PT0gXCJqc29uU2NoZW1hN1wiKSB7XG4gICAgICAgIGNvbWJpbmVkLiRzY2hlbWEgPSBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiO1xuICAgIH1cbiAgICBlbHNlIGlmIChyZWZzLnRhcmdldCA9PT0gXCJqc29uU2NoZW1hMjAxOS0wOVwiIHx8IHJlZnMudGFyZ2V0ID09PSBcIm9wZW5BaVwiKSB7XG4gICAgICAgIGNvbWJpbmVkLiRzY2hlbWEgPSBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvc2NoZW1hI1wiO1xuICAgIH1cbiAgICBpZiAocmVmcy50YXJnZXQgPT09IFwib3BlbkFpXCIgJiZcbiAgICAgICAgKFwiYW55T2ZcIiBpbiBjb21iaW5lZCB8fFxuICAgICAgICAgICAgXCJvbmVPZlwiIGluIGNvbWJpbmVkIHx8XG4gICAgICAgICAgICBcImFsbE9mXCIgaW4gY29tYmluZWQgfHxcbiAgICAgICAgICAgIChcInR5cGVcIiBpbiBjb21iaW5lZCAmJiBBcnJheS5pc0FycmF5KGNvbWJpbmVkLnR5cGUpKSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiV2FybmluZzogT3BlbkFJIG1heSBub3Qgc3VwcG9ydCBzY2hlbWFzIHdpdGggdW5pb25zIGFzIHJvb3RzISBUcnkgd3JhcHBpbmcgaXQgaW4gYW4gb2JqZWN0IHByb3BlcnR5LlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJpbmVkO1xufTtcbmV4cG9ydCB7IHpvZFRvSnNvblNjaGVtYSB9O1xuIiwgImltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiQGFjdGlvbnMvY29yZVwiO1xuaW1wb3J0IHsgcmV0cnlXaXRoQmFja29mZiwgcnVuQ2FwdHVyaW5nIH0gZnJvbSBcIi4vaW5zdGFsbGVyLXN1cHBvcnQuanNcIjtcblxuLy8gUGlubmVkIHRvIG1hdGNoIEBhbnRocm9waWMtYWkvY2xhdWRlLWFnZW50LXNka0AwLjIuMTQxIGluIHBhY2thZ2UuanNvbi5cbi8vIEJ1bXAgaW4gbG9ja3N0ZXAgd2l0aCB0aGUgU0RLIGRlcGVuZGVuY3kuXG5jb25zdCBDTElfVkVSU0lPTiA9IFwiMi4xLjE0MVwiO1xuXG4vLyBUaGUgaW5zdGFsbCBydW5zIGBjdXJsIHwgYmFzaGAgYWdhaW5zdCBjbGF1ZGUuYWkvaW5zdGFsbC5zaCwgd2hpY2ggaXRzZWxmXG4vLyBwdWxscyB0aGUgbmF0aXZlIGJ1aWxkIGZyb20gZG93bmxvYWRzLmNsYXVkZS5haS4gQm90aCBsZWdzIGFyZSBuZXR3b3JrIGNhbGxzXG4vLyBvbiBhIENJIHJ1bm5lciBhbmQgZmFpbCB0cmFuc2llbnRseSAoRE5TIFNFUlZGQUlMLCBjb25uZWN0aW9uIHJlc2V0cykuIFJldHJ5XG4vLyBhIGZldyB0aW1lcyB3aXRoIGxpbmVhciBiYWNrb2ZmIGJlZm9yZSBnaXZpbmcgdXAuXG5jb25zdCBJTlNUQUxMX0FUVEVNUFRTID0gMztcbmNvbnN0IElOU1RBTExfUkVUUllfQkFTRV9ERUxBWV9NUyA9IDIwMDA7XG5cbmxldCBjYWNoZWQ6IFByb21pc2U8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmICghY2FjaGVkKSBjYWNoZWQgPSByZXNvbHZlQ2xhdWRlQ2xpKCk7XG4gIHJldHVybiBjYWNoZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldENsYXVkZUNsaUNhY2hlKCk6IHZvaWQge1xuICBjYWNoZWQgPSBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvY2Vzcy5lbnYuU0hPUEZMT09SX0NMQVVERV9DTElfUEFUSDtcbiAgaWYgKG92ZXJyaWRlKSB7XG4gICAgaWYgKCFleGlzdHNTeW5jKG92ZXJyaWRlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTSE9QRkxPT1JfQ0xBVURFX0NMSV9QQVRIPSR7b3ZlcnJpZGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ2xhdWRlIENMSSBmcm9tIFNIT1BGTE9PUl9DTEFVREVfQ0xJX1BBVEg6ICR7b3ZlcnJpZGV9YCk7XG4gICAgcmV0dXJuIG92ZXJyaWRlO1xuICB9XG5cbiAgY29uc3Qgb25QYXRoID0gd2hpY2hDbGF1ZGUoKTtcbiAgaWYgKG9uUGF0aCkge1xuICAgIGNvcmUuaW5mbyhgVXNpbmcgQ2xhdWRlIENMSSBvbiBQQVRIOiAke29uUGF0aH1gKTtcbiAgICByZXR1cm4gb25QYXRoO1xuICB9XG5cbiAgcmV0dXJuIGluc3RhbGxDbGF1ZGVDbGkoKTtcbn1cblxuZnVuY3Rpb24gd2hpY2hDbGF1ZGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcInNoXCIsIFtcIi1jXCIsIFwiY29tbWFuZCAtdiBjbGF1ZGVcIl0sIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pO1xuICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHBhdGggPSByZXN1bHQuc3Rkb3V0LnNwbGl0KC9cXHI/XFxuLylbMF0/LnRyaW0oKTtcbiAgcmV0dXJuIHBhdGggJiYgZXhpc3RzU3luYyhwYXRoKSA/IHBhdGggOiBudWxsO1xufVxuXG4vLyBSdW4gdW5kZXIgYmFzaCB3aXRoIGBzZXQgLW8gcGlwZWZhaWxgIHNvIGEgY3VybCBmYWlsdXJlIChlLmcuIEROUyBTRVJWRkFJTFxuLy8gYmVmb3JlIGluc3RhbGwuc2ggaXMgZXZlbiBmZXRjaGVkKSBwcm9wYWdhdGVzIGFzIHRoZSBwaXBlbGluZSdzIGV4aXQgY29kZVxuLy8gaW5zdGVhZCBvZiBiZWluZyBtYXNrZWQgYnkgYmFzaCBleGl0aW5nIDAgb24gZW1wdHkgc3RkaW4uIFRoZSBjb21tYW5kIGFscmVhZHlcbi8vIHBpcGVzIGludG8gYmFzaCwgc28gcmVxdWlyaW5nIGJhc2ggaGVyZSBhZGRzIG5vIG5ldyBkZXBlbmRlbmN5LiBXaXRob3V0XG4vLyBwaXBlZmFpbCB0aGUgY2FwdHVyZWQgZGlhZ25vc3RpYyB0YWlsIHdvdWxkIGJlIGRpc2NhcmRlZCBhbmQgdGhlIGZhaWx1cmVcbi8vIHdvdWxkIHN1cmZhY2UgYXMgYSBtaXNsZWFkaW5nIFwibm8gYmluYXJ5IGZvdW5kXCIuXG5mdW5jdGlvbiBydW5JbnN0YWxsU2NyaXB0KCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcnVuQ2FwdHVyaW5nKFxuICAgIFwiYmFzaFwiLFxuICAgIFtcbiAgICAgIFwiLWNcIixcbiAgICAgIGBzZXQgLW8gcGlwZWZhaWw7IGN1cmwgLWZzU0wgaHR0cHM6Ly9jbGF1ZGUuYWkvaW5zdGFsbC5zaCB8IGJhc2ggLXMgLS0gJHtDTElfVkVSU0lPTn1gLFxuICAgIF0sXG4gICAgXCJDbGF1ZGUgQ0xJIGluc3RhbGxlclwiLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQ2xhdWRlQ2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvcmUuaW5mbyhcbiAgICBgQ2xhdWRlIENMSSBub3QgZm91bmQgb24gUEFUSC4gSW5zdGFsbGluZyB2JHtDTElfVkVSU0lPTn0gdmlhIGNsYXVkZS5haS9pbnN0YWxsLnNoYCxcbiAgKTtcbiAgLy8gaW5zdGFsbC5zaCBkZWZhdWx0cyB0byB+Ly5sb2NhbC9iaW4vY2xhdWRlLlxuICBjb25zdCBkZWZhdWx0UGF0aCA9IGpvaW4oaG9tZWRpcigpLCBcIi5sb2NhbFwiLCBcImJpblwiLCBcImNsYXVkZVwiKTtcblxuICByZXR1cm4gcmV0cnlXaXRoQmFja29mZihcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBydW5JbnN0YWxsU2NyaXB0KCk7XG4gICAgICBpZiAoZXhpc3RzU3luYyhkZWZhdWx0UGF0aCkpIHtcbiAgICAgICAgY29yZS5pbmZvKGBJbnN0YWxsZWQgQ2xhdWRlIENMSSBhdCAke2RlZmF1bHRQYXRofWApO1xuICAgICAgICByZXR1cm4gZGVmYXVsdFBhdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBvblBhdGggPSB3aGljaENsYXVkZSgpO1xuICAgICAgaWYgKG9uUGF0aCkge1xuICAgICAgICBjb3JlLmluZm8oYEluc3RhbGxlZCBDbGF1ZGUgQ0xJIHJlc29sdmVkIHZpYSBQQVRIOiAke29uUGF0aH1gKTtcbiAgICAgICAgcmV0dXJuIG9uUGF0aDtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENsYXVkZSBDTEkgaW5zdGFsbGVyIHN1Y2NlZWRlZCBidXQgbm8gYmluYXJ5IGZvdW5kIGF0ICR7ZGVmYXVsdFBhdGh9IG9yIG9uIFBBVEhgLFxuICAgICAgKTtcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dGVtcHRzOiBJTlNUQUxMX0FUVEVNUFRTLFxuICAgICAgYmFzZURlbGF5TXM6IElOU1RBTExfUkVUUllfQkFTRV9ERUxBWV9NUyxcbiAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT5cbiAgICAgICAgY29yZS53YXJuaW5nKFxuICAgICAgICAgIGBDbGF1ZGUgQ0xJIGluc3RhbGwgYXR0ZW1wdCAke2F0dGVtcHR9LyR7SU5TVEFMTF9BVFRFTVBUU30gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9LiBSZXRyeWluZy4uLmAsXG4gICAgICAgICksXG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcblxuLy8gU2hhcmVkIGhlbHBlcnMgZm9yIHRoZSBuYXRpdmUtQ0xJIGluc3RhbGxlcnMgKENsYXVkZSBhbmQgQ29kZXgpLiBCb3RoIHB1bGwgYVxuLy8gYmluYXJ5IG92ZXIgdGhlIG5ldHdvcmsgb24gYSBDSSBydW5uZXIsIHNvIGJvdGggbmVlZCB0cmFuc2llbnQtZmFpbHVyZSByZXRyeVxuLy8gYW5kIGRpYWdub3N0aWNzIHRoYXQgc3VyZmFjZSB0aGUgcmVhbCBjYXVzZSBpbnN0ZWFkIG9mIGEgYmFyZSBleGl0IGNvZGUuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgYmFzZURlbGF5TXM6IG51bWJlcjtcbiAgc2xlZXA/OiAobXM6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb25SZXRyeT86IChhdHRlbXB0OiBudW1iZXIsIGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhCYWNrb2ZmPFQ+KFxuICBmbjogKGF0dGVtcHQ6IG51bWJlcikgPT4gUHJvbWlzZTxUPixcbiAgb3B0czogUmV0cnlPcHRpb25zLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHNsZWVwID0gb3B0cy5zbGVlcCA/PyBkZWZhdWx0U2xlZXA7XG4gIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMTsgYXR0ZW1wdCA8PSBvcHRzLmF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKGF0dGVtcHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbGFzdEVycm9yID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpO1xuICAgICAgaWYgKGF0dGVtcHQgPCBvcHRzLmF0dGVtcHRzKSB7XG4gICAgICAgIG9wdHMub25SZXRyeT8uKGF0dGVtcHQsIGxhc3RFcnJvcik7XG4gICAgICAgIGF3YWl0IHNsZWVwKG9wdHMuYmFzZURlbGF5TXMgKiBhdHRlbXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdGhyb3cgbGFzdEVycm9yID8/IG5ldyBFcnJvcihcInJldHJ5V2l0aEJhY2tvZmY6IG5vIGF0dGVtcHRzIHdlcmUgbWFkZVwiKTtcbn1cblxuLy8gSW5zdGFsbGVycyBzdHJlYW0gdGhlaXIgb3duIHByb2dyZXNzLCBidXQgYSB0aHJvd24gRXJyb3IgdGhhdCBjYXJyaWVzIG9ubHlcbi8vIHRoZSBleGl0IGNvZGUgc3VyZmFjZXMgYXMgdGhlIG9wYXF1ZSBcImV4aXRlZCB3aXRoIGNvZGUgMVwiLiBBcHBlbmQgdGhlIHRhaWwgb2Zcbi8vIHRoZSBjYXB0dXJlZCBvdXRwdXQgKGUuZy4gXCJnZXRhZGRyaW5mbyBFU0VSVkZBSUwgZG93bmxvYWRzLmNsYXVkZS5haVwiKSBzbyB0aGVcbi8vIHJlYWwgY2F1c2UgaXMgdmlzaWJsZSB3aGVyZXZlciB0aGUgZXJyb3IgaXMgcmVwb3J0ZWQsIGluY2x1ZGluZyB0aGUgcmV2aWV3XG4vLyBsZW5zIGZhaWx1cmUgc3VtbWFyeS5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRJbnN0YWxsZXJFcnJvcihcbiAgbGFiZWw6IHN0cmluZyxcbiAgY29kZTogbnVtYmVyIHwgbnVsbCxcbiAgb3V0cHV0OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBiYXNlID0gYCR7bGFiZWx9IGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWA7XG4gIGNvbnN0IHRhaWwgPSBvdXRwdXRcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KC9cXHI/XFxuLylcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLnNsaWNlKC01KVxuICAgIC5qb2luKFwiIHwgXCIpO1xuICByZXR1cm4gdGFpbCA/IGAke2Jhc2V9OiAke3RhaWx9YCA6IGJhc2U7XG59XG5cbi8vIFNwYXduIGEgY29tbWFuZCwgY2FwdHVyaW5nIHN0ZG91dC9zdGRlcnIgZm9yIGRpYWdub3N0aWNzIHdoaWxlIHN0aWxsXG4vLyBzdHJlYW1pbmcgaXQgdG8gdGhlIGFjdGlvbiBsb2csIGFuZCByZWplY3Qgd2l0aCBhIGZvcm1hdHRlZCBlcnJvciAoY2Fycnlpbmdcbi8vIHRoZSBjYXB0dXJlZCB0YWlsKSBvbiBhIG5vbi16ZXJvIGV4aXQuXG5leHBvcnQgZnVuY3Rpb24gcnVuQ2FwdHVyaW5nKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBsYWJlbDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHsgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCJdIH0pO1xuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIHByb2Muc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICAgIG91dHB1dCArPSBjaHVuay50b1N0cmluZygpO1xuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoY2h1bmspO1xuICAgIH0pO1xuICAgIHByb2Muc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICAgIG91dHB1dCArPSBjaHVuay50b1N0cmluZygpO1xuICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2h1bmspO1xuICAgIH0pO1xuICAgIHByb2Mub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIHByb2Mub24oXCJjbG9zZVwiLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHJlc29sdmUoKTtcbiAgICAgIGVsc2UgcmVqZWN0KG5ldyBFcnJvcihmb3JtYXRJbnN0YWxsZXJFcnJvcihsYWJlbCwgY29kZSwgb3V0cHV0KSkpO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IEVmZm9ydCB9IGZyb20gXCIuLi9jb25maWcvaW5wdXRzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vdG9vbHMvdHlwZXMuanNcIjtcblxuZXhwb3J0IHR5cGUgQWdlbnRFcnJvcktpbmQgPVxuICB8IFwiYWdlbnRfdGltZW91dFwiXG4gIHwgXCJhZ2VudF9idWRnZXRcIlxuICB8IFwiYWdlbnRfbWF4X3R1cm5zXCJcbiAgfCBcImFnZW50X2ludmFsaWRfb3V0cHV0XCJcbiAgfCBcImFnZW50X2V4ZWN1dGlvblwiO1xuXG5leHBvcnQgY2xhc3MgQWdlbnRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGtpbmQ6IEFnZW50RXJyb3JLaW5kLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VidHlwZT86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJBZ2VudEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5TdGFnZUFyZ3M8VD4ge1xuICBzeXN0ZW1Qcm9tcHQ6IHN0cmluZztcbiAgdXNlclByb21wdDogc3RyaW5nO1xuICB0b29sczogU2RrVG9vbFtdO1xuICAvLyBMb29zZW5lZCBpbnB1dCB0eXBlIHRvIGB1bmtub3duYCBzbyBzY2hlbWFzIHdpdGggYC5kZWZhdWx0KClgICh3aG9zZSBpbnB1dFxuICAvLyBpcyBhIHBhcnRpYWwgb2YgdGhlIG91dHB1dCkgc3RpbGwgc2F0aXNmeSB0aGUgY29uc3RyYWludC5cbiAgZGVjaXNpb25TY2hlbWE6IHouWm9kVHlwZTxULCB6LlpvZFR5cGVEZWYsIHVua25vd24+O1xuICBtb2RlbDogc3RyaW5nO1xuICBlZmZvcnQ/OiBFZmZvcnQ7XG4gIGJ1ZGdldFVzZD86IG51bWJlcjtcbiAgbWF4VHVybnM/OiBudW1iZXI7XG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50QWRhcHRlciB7XG4gIHJ1blN0YWdlPFQ+KGFyZ3M6IFJ1blN0YWdlQXJnczxUPik6IFByb21pc2U8VD47XG59XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiQGFjdGlvbnMvY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBcHByb3ZhbE1vZGUsXG4gIENvZGV4LFxuICB0eXBlIENvZGV4T3B0aW9ucyxcbiAgdHlwZSBNb2RlbFJlYXNvbmluZ0VmZm9ydCxcbiAgdHlwZSBTYW5kYm94TW9kZSxcbiAgdHlwZSBUaHJlYWRPcHRpb25zLFxufSBmcm9tIFwiQG9wZW5haS9jb2RleC1zZGtcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IHpvZFRvSnNvblNjaGVtYSB9IGZyb20gXCJ6b2QtdG8tanNvbi1zY2hlbWFcIjtcbmltcG9ydCB7IGVuc3VyZUNvZGV4Q2xpIH0gZnJvbSBcIi4uL3NldHVwL2Vuc3VyZS1jb2RleC1jbGkuanNcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRBZGFwdGVyLCBSdW5TdGFnZUFyZ3MgfSBmcm9tIFwiLi9hZGFwdGVyLmpzXCI7XG5pbXBvcnQgeyBBZ2VudEVycm9yIH0gZnJvbSBcIi4vYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgc3RhcnRUb29sQnJpZGdlLCB0eXBlIFRvb2xCcmlkZ2UgfSBmcm9tIFwiLi9tY3AtaHR0cC1icmlkZ2UuanNcIjtcblxuLy8gUmVzb2x2ZWQgQ29kZXggY29uZmlndXJhdGlvbiB0aGUgYWRhcHRlciBob2xkcy4gQnVpbHQgb25jZSBhdCBzdGFydHVwIGJ5XG4vLyBidWlsZENvZGV4T3B0aW9ucygpIGluIHNyYy9jb25maWcvY29kZXgtb3B0aW9ucy50cyAoYXV0aCBicmFuY2gsIHRlbXBcbi8vIENPREVYX0hPTUUgd3JpdGUsIHNhbmRib3ggZGVmYXVsdHMpIFx1MjAxNCB0aGUgYWRhcHRlciBvd25zIHRoZSBjb250cmFjdCwgdGhlXG4vLyBjb25maWcgbGF5ZXIgcHJvZHVjZXMgaXQsIG1pcnJvcmluZyBob3cgQ2xhdWRlQWdlbnRBZGFwdGVyIHRha2VzIGFuIGBlbnZgLlxuZXhwb3J0IGludGVyZmFjZSBDb2RleEFkYXB0ZXJPcHRpb25zIHtcbiAgLy8gT3BlbkFJIEFQSSBrZXkgcGF0aC4gRm9yd2FyZGVkIHRvIHRoZSBDTEkgYXMgQ09ERVhfQVBJX0tFWSBieSB0aGUgU0RLLlxuICBhcGlLZXk/OiBzdHJpbmc7XG4gIC8vIEVudmlyb25tZW50IGZvciB0aGUgQ29kZXggQ0xJIHByb2Nlc3MuIFRoZSBTREsgZG9lcyBOT1QgaW5oZXJpdFxuICAvLyBwcm9jZXNzLmVudiB3aGVuIGVudiBpcyBzZXQsIHNvIHRoaXMgbXVzdCBjYXJyeSBQQVRIL0hPTUUvZXRjLiBwbHVzIGFueVxuICAvLyBhdXRoIHZhcnMgKGUuZy4gQ09ERVhfSE9NRSBmb3IgdGhlIENoYXRHUFQgYXV0aC5qc29uIHBhdGgpLlxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEFkZGl0aW9uYWwgYC0tY29uZmlnIGtleT12YWx1ZWAgb3ZlcnJpZGVzIGZsYXR0ZW5lZCBieSB0aGUgU0RLIChlLmcuXG4gIC8vIGNsaV9hdXRoX2NyZWRlbnRpYWxzX3N0b3JlLCBzYW5kYm94IHR3ZWFrcykuXG4gIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHNhbmRib3hNb2RlOiBTYW5kYm94TW9kZTtcbiAgYXBwcm92YWxQb2xpY3k6IEFwcHJvdmFsTW9kZTtcbiAgbmV0d29ya0FjY2Vzc0VuYWJsZWQ6IGJvb2xlYW47XG4gIHNraXBHaXRSZXBvQ2hlY2s6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvZGV4Q2xpUmVzb2x2ZXIgPSAoKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbmV4cG9ydCBjbGFzcyBDb2RleEFnZW50QWRhcHRlciBpbXBsZW1lbnRzIEFnZW50QWRhcHRlciB7XG4gIC8vIExhdGNoZXMgdGhlIG9uZS10aW1lIFwiY2FwcyBhcmUgaWdub3JlZFwiIHdhcm5pbmcgc28gaXQgZmlyZXMgb25jZSBwZXJcbiAgLy8gYWRhcHRlciBpbnN0YW5jZSBpbnN0ZWFkIG9mIG9uIGV2ZXJ5IHN0YWdlIChidWRnZXRVc2QgYWx3YXlzIGNhcnJpZXMgYVxuICAvLyBudW1lcmljIGRlZmF1bHQsIHNvIGFuIHVuY29uZGl0aW9uYWwgd2FybiB3b3VsZCBzcGFtIGV2ZXJ5IHJ1bikuXG4gIHByaXZhdGUgY2Fwc1dhcm5lZCA9IGZhbHNlO1xuXG4gIC8vIHJlc29sdmVDbGkgaXMgaW52b2tlZCBsYXppbHkgb24gdGhlIGZpcnN0IHJ1blN0YWdlIGNhbGwuIExpa2UgdGhlIENsYXVkZVxuICAvLyBhZGFwdGVyLCBpdCBsb2NhdGVzIChvciBpbnN0YWxscykgdGhlIG5hdGl2ZSBgY29kZXhgIGJpbmFyeSwgd2hpY2ggc2hpcHNcbiAgLy8gYXMgcGxhdGZvcm0tc3BlY2lmaWMgYXJ0aWZhY3RzIHRoYXQgd29uJ3QgYmUgcHJlc2VudCBpbiB0aGUgY29tbWl0dGVkXG4gIC8vIGRpc3QvIGJ1bmRsZSBvbiBhIHJ1bm5lciB3aG9zZSBhcmNoIGRpZmZlcnMgZnJvbSB0aGUgYnVpbGQgaG9zdC5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRzOiBDb2RleEFkYXB0ZXJPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZUNsaTogQ29kZXhDbGlSZXNvbHZlciA9IGVuc3VyZUNvZGV4Q2xpLFxuICApIHt9XG5cbiAgYXN5bmMgcnVuU3RhZ2U8VD4oYXJnczogUnVuU3RhZ2VBcmdzPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgLy8gQ3JlZGVudGlhbHMgYXJlIHZhbGlkYXRlZCBoZXJlLCBvbiBmaXJzdCB1c2UsIHJhdGhlciB0aGFuIGF0IGNvbnN0cnVjdGlvblxuICAgIC8vIHRpbWUuIENvbnN0cnVjdGluZyB0aGUgYWRhcHRlciBtdXN0IG5vdCB0aHJvdzogZW50cnkudHMgYnVpbGRzIGl0XG4gICAgLy8gdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgZm9yIGBtb2RlOiByZXNvbHZlYCByb3V0ZXIgam9icyB0aGF0IG5ldmVyIHJ1blxuICAgIC8vIGFuIGFnZW50LiBBIHNwbGl0LXJ1bm5lciBzZXR1cCBtYXkgbGVnaXRpbWF0ZWx5IHNjb3BlIENvZGV4IGNyZWRzIHRvIHRoZVxuICAgIC8vIGV4ZWN1dGUgam9iIG9ubHksIHNvIGEgY29uc3RydWN0aW9uLXRpbWUgdGhyb3cgd291bGQgZGVhZGxvY2sgdGhlIHJvdXRlci5cbiAgICAvLyBUaGlzIG1pcnJvcnMgdGhlIENsYXVkZSBwYXRoLCB3aG9zZSBlbnYgYnVpbGRlciBuZXZlciB0aHJvd3MgZWl0aGVyLlxuICAgIGlmIChcbiAgICAgIHRoaXMub3B0cy5hcGlLZXkgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5vcHRzLmVudi5DT0RFWF9IT01FID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICBcImFnZW50X2V4ZWN1dGlvblwiLFxuICAgICAgICBcImFnZW50X3Byb3ZpZGVyPWNvZGV4IHJlcXVpcmVzIG9uZSBvZiBvcGVuYWlfYXBpX2tleSBvciBjb2RleF9hdXRoX2pzb24uXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBhcmdzLmFib3J0Q29udHJvbGxlciA/PyBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gRGlzdGluZ3Vpc2ggb3VyIG93biB0aW1lb3V0IGZyb20gYSBjYWxsZXItaW5pdGlhdGVkIGFib3J0IHNvIHRoZSBjYXRjaFxuICAgIC8vIGNhbiBtYXAgdGhlbSB0byBkaWZmZXJlbnQgQWdlbnRFcnJvciBraW5kcy5cbiAgICBsZXQgdGltZWRPdXQgPSBmYWxzZTtcbiAgICBjb25zdCB0aW1lciA9XG4gICAgICBhcmdzLnRpbWVvdXRNcyAhPSBudWxsXG4gICAgICAgID8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgICAgfSwgYXJncy50aW1lb3V0TXMpXG4gICAgICAgIDogbnVsbDtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLmNhcHNXYXJuZWQgJiZcbiAgICAgIChhcmdzLmJ1ZGdldFVzZCAhPT0gdW5kZWZpbmVkIHx8IGFyZ3MubWF4VHVybnMgIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHRoaXMuY2Fwc1dhcm5lZCA9IHRydWU7XG4gICAgICBjb3JlLndhcm5pbmcoXG4gICAgICAgIFwiQ29kZXggZG9lcyBub3QgZW5mb3JjZSBidWRnZXRVc2Qgb3IgbWF4VHVybnM7IHRoZXNlIGNhcHMgYXJlIGlnbm9yZWQgdW5kZXIgYWdlbnRfcHJvdmlkZXI9Y29kZXguXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBicmlkZ2U6IFRvb2xCcmlkZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb2RleFBhdGhPdmVycmlkZSA9IGF3YWl0IHRoaXMucmVzb2x2ZUNsaSgpO1xuXG4gICAgICBjb25zdCBlbnYgPSB7IC4uLnRoaXMub3B0cy5lbnYgfTtcbiAgICAgIGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLnRoaXMub3B0cy5jb25maWcgfTtcblxuICAgICAgaWYgKGFyZ3MudG9vbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBicmlkZ2UgPSBhd2FpdCBzdGFydFRvb2xCcmlkZ2UoYXJncy50b29scyk7XG4gICAgICAgIGVudi5TSE9QRkxPT1JfTUNQX1RPS0VOID0gYnJpZGdlLnRva2VuO1xuICAgICAgICBjb25maWcubWNwX3NlcnZlcnMgPSB7XG4gICAgICAgICAgLi4uKGNvbmZpZy5tY3Bfc2VydmVycyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCksXG4gICAgICAgICAgc2hvcGZsb29yOiB7XG4gICAgICAgICAgICB1cmw6IGJyaWRnZS51cmwsXG4gICAgICAgICAgICBiZWFyZXJfdG9rZW5fZW52X3ZhcjogXCJTSE9QRkxPT1JfTUNQX1RPS0VOXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgbG9nQWdlbnRJbnB1dChhcmdzKTtcblxuICAgICAgY29uc3QgY29kZXggPSBuZXcgQ29kZXgoe1xuICAgICAgICAuLi4odGhpcy5vcHRzLmFwaUtleSAhPT0gdW5kZWZpbmVkID8geyBhcGlLZXk6IHRoaXMub3B0cy5hcGlLZXkgfSA6IHt9KSxcbiAgICAgICAgZW52LFxuICAgICAgICAvLyBUaGUgU0RLIGZsYXR0ZW5zIGNvbmZpZyB0byBkb3R0ZWQgYC0tY29uZmlnIGtleT12YWx1ZWAgb3ZlcnJpZGVzIGFuZFxuICAgICAgICAvLyBzZXJpYWxpemVzIHZhbHVlcyBhcyBUT01MIGxpdGVyYWxzLiBUaGUgbmVzdGVkIG9iamVjdHMgd2UgYnVpbGQgaGVyZVxuICAgICAgICAvLyAoZS5nLiBtY3Bfc2VydmVycy5zaG9wZmxvb3IpIGFyZSB2YWxpZCBjb25maWcgdmFsdWVzIGF0IHJ1bnRpbWU7IHRoZVxuICAgICAgICAvLyBjYXN0IGJyaWRnZXMgb3VyIG5ldXRyYWwgUmVjb3JkIHRvIHRoZSBTREsncyByZWN1cnNpdmUgY29uZmlnIHR5cGUuXG4gICAgICAgIGNvbmZpZzogY29uZmlnIGFzIE5vbk51bGxhYmxlPENvZGV4T3B0aW9uc1tcImNvbmZpZ1wiXT4sXG4gICAgICAgIGNvZGV4UGF0aE92ZXJyaWRlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENvZGV4IGhhcyBubyBzZXBhcmF0ZSBzeXN0ZW0tcHJvbXB0IGZpZWxkOyBpdCBjb25jYXRlbmF0ZXMgdGV4dCBpbnB1dC5cbiAgICAgIGNvbnN0IGlucHV0ID0gYCR7YXJncy5zeXN0ZW1Qcm9tcHR9XFxuXFxuJHthcmdzLnVzZXJQcm9tcHR9YDtcblxuICAgICAgY29uc3QgdGhyZWFkT3B0aW9uczogVGhyZWFkT3B0aW9ucyA9IHtcbiAgICAgICAgbW9kZWw6IGFyZ3MubW9kZWwsXG4gICAgICAgIHNhbmRib3hNb2RlOiB0aGlzLm9wdHMuc2FuZGJveE1vZGUsXG4gICAgICAgIGFwcHJvdmFsUG9saWN5OiB0aGlzLm9wdHMuYXBwcm92YWxQb2xpY3ksXG4gICAgICAgIG5ldHdvcmtBY2Nlc3NFbmFibGVkOiB0aGlzLm9wdHMubmV0d29ya0FjY2Vzc0VuYWJsZWQsXG4gICAgICAgIHNraXBHaXRSZXBvQ2hlY2s6IHRoaXMub3B0cy5za2lwR2l0UmVwb0NoZWNrLFxuICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAuLi4oYXJncy5lZmZvcnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8geyBtb2RlbFJlYXNvbmluZ0VmZm9ydDogYXJncy5lZmZvcnQgYXMgTW9kZWxSZWFzb25pbmdFZmZvcnQgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGhyZWFkID0gY29kZXguc3RhcnRUaHJlYWQodGhyZWFkT3B0aW9ucyk7XG5cbiAgICAgIGNvcmUuc3RhcnRHcm91cChcIkNvZGV4IGFnZW50IHJ1blwiKTtcbiAgICAgIGxldCB0dXJuOiB7IGZpbmFsUmVzcG9uc2U6IHN0cmluZyB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgdHVybiA9IGF3YWl0IHRocmVhZC5ydW4oaW5wdXQsIHtcbiAgICAgICAgICBvdXRwdXRTY2hlbWE6IHpvZFRvSnNvblNjaGVtYShhcmdzLmRlY2lzaW9uU2NoZW1hIGFzIHouWm9kVHlwZUFueSwge1xuICAgICAgICAgICAgdGFyZ2V0OiBcIm9wZW5BaVwiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgICBsb2dUdXJuKHR1cm4pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29yZS5lbmRHcm91cCgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByYXcgPSB0dXJuLmZpbmFsUmVzcG9uc2U7XG4gICAgICBpZiAodHlwZW9mIHJhdyAhPT0gXCJzdHJpbmdcIiB8fCByYXcudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgIFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIixcbiAgICAgICAgICBcImNvZGV4IHR1cm4gcmV0dXJuZWQgYW4gZW1wdHkgZmluYWxSZXNwb25zZVwiLFxuICAgICAgICAgIFwiZW1wdHlfZmluYWxfcmVzcG9uc2VcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlZEpzb246IHVua25vd247XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWRKc29uID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgIFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIixcbiAgICAgICAgICBgY29kZXggZmluYWxSZXNwb25zZSB3YXMgbm90IHZhbGlkIEpTT046ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWAsXG4gICAgICAgICAgXCJqc29uX3BhcnNlX2Vycm9yXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcmdzLmRlY2lzaW9uU2NoZW1hLnBhcnNlKHN0cmlwTnVsbFByb3BlcnRpZXMocGFyc2VkSnNvbikpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBBZ2VudEVycm9yKFxuICAgICAgICAgIFwiYWdlbnRfaW52YWxpZF9vdXRwdXRcIixcbiAgICAgICAgICBgY29kZXggZmluYWxSZXNwb25zZSBmYWlsZWQgc2NoZW1hIHZhbGlkYXRpb246ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWAsXG4gICAgICAgICAgXCJzY2hlbWFfdmFsaWRhdGlvbl9lcnJvclwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEFnZW50RXJyb3IpIHRocm93IGVycjtcbiAgICAgIGlmICh0aW1lZE91dCkge1xuICAgICAgICB0aHJvdyBuZXcgQWdlbnRFcnJvcihcbiAgICAgICAgICBcImFnZW50X3RpbWVvdXRcIixcbiAgICAgICAgICBgY29kZXggcnVuIGV4Y2VlZGVkICR7YXJncy50aW1lb3V0TXN9bXNgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFnZW50RXJyb3IoXCJhZ2VudF9leGVjdXRpb25cIiwgXCJjb2RleCBydW4gd2FzIGFib3J0ZWRcIik7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgQWdlbnRFcnJvcihcbiAgICAgICAgXCJhZ2VudF9leGVjdXRpb25cIixcbiAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpLFxuICAgICAgKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgaWYgKGJyaWRnZSkgYXdhaXQgYnJpZGdlLmNsb3NlKCkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgfVxufVxuXG4vLyBPcGVuQUkgc3RyaWN0IHN0cnVjdHVyZWQgb3V0cHV0cyBjYW5ub3QgZXhwcmVzcyBhbiBvcHRpb25hbCBwcm9wZXJ0eTogZXZlcnlcbi8vIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBhbiBhYnNlbnQgdmFsdWUgaXMgcmV0dXJuZWQgYXMgZXhwbGljaXQgYG51bGxgLlxuLy8gem9kVG9Kc29uU2NoZW1hKHRhcmdldDogXCJvcGVuQWlcIikgdGhlcmVmb3JlIHJlbmRlcnMgb3VyIGAub3B0aW9uYWwoKWAgZmllbGRzXG4vLyBhcyBudWxsYWJsZSwgYW5kIENvZGV4IGVtaXRzIGBudWxsYCBmb3IgdGhlIG9uZXMgaXQgY2hvc2UgdG8gb21pdCAoZS5nLiBhXG4vLyByZXZpZXcgY29tbWVudCdzIHN0YXJ0X2xpbmUvc3RhcnRfc2lkZSkuIFpvZCBgLm9wdGlvbmFsKClgIGFjY2VwdHNcbi8vIGB1bmRlZmluZWRgLCBub3QgYG51bGxgLCBzbyB0aG9zZSBkZWNpc2lvbnMgd291bGQgZmFpbCBzY2hlbWEgdmFsaWRhdGlvbi5cbi8vIFJlY3Vyc2l2ZWx5IGRyb3AgbnVsbC12YWx1ZWQgcHJvcGVydGllcyBiZWZvcmUgcGFyc2luZyBzbyB0aGV5IHJlYWQgYXNcbi8vIFwiYWJzZW50XCIuIEZpZWxkcyB0aGF0IGFyZSBnZW51aW5lbHkgYC5udWxsYWJsZSgpYCBpbiBvdXIgc2NoZW1hcyBwYWlyIGl0XG4vLyB3aXRoIGAuZGVmYXVsdChudWxsKWAsIHNvIGEgc3RyaXBwZWQgbnVsbCByb3VuZC10cmlwcyBiYWNrIHRvIG51bGwgdmlhIHRoZVxuLy8gZGVmYXVsdCBhbmQgbm8gaW5mb3JtYXRpb24gaXMgbG9zdC5cbmZ1bmN0aW9uIHN0cmlwTnVsbFByb3BlcnRpZXModmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzdHJpcE51bGxQcm9wZXJ0aWVzKTtcbiAgfVxuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgb3V0W2tleV0gPSBzdHJpcE51bGxQcm9wZXJ0aWVzKHZhbCk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBsb2dBZ2VudElucHV0PFQ+KGFyZ3M6IFJ1blN0YWdlQXJnczxUPik6IHZvaWQge1xuICBjb3JlLnN0YXJ0R3JvdXAoYENvZGV4IGFnZW50IGlucHV0ICgke2FyZ3MubW9kZWx9KWApO1xuICB0cnkge1xuICAgIGNvcmUuaW5mbyhgbW9kZWw6ICR7YXJncy5tb2RlbH1gKTtcbiAgICBpZiAoYXJncy5lZmZvcnQgIT09IHVuZGVmaW5lZCkgY29yZS5pbmZvKGBlZmZvcnQ6ICR7YXJncy5lZmZvcnR9YCk7XG4gICAgaWYgKGFyZ3MudGltZW91dE1zICE9PSB1bmRlZmluZWQpIGNvcmUuaW5mbyhgdGltZW91dE1zOiAke2FyZ3MudGltZW91dE1zfWApO1xuICAgIGNvbnN0IHRvb2xMaXN0ID0gYXJncy50b29scy5sZW5ndGhcbiAgICAgID8gYXJncy50b29scy5tYXAoKHQpID0+IGAtICR7dC5uYW1lfTogJHt0LmRlc2NyaXB0aW9uID8/IFwiXCJ9YCkuam9pbihcIlxcblwiKVxuICAgICAgOiBcIihub25lKVwiO1xuICAgIGNvcmUuaW5mbyhgdG9vbHM6XFxuJHt0b29sTGlzdH1gKTtcbiAgICBjb3JlLmluZm8oYHN5c3RlbVByb21wdDpcXG4ke2FyZ3Muc3lzdGVtUHJvbXB0fWApO1xuICAgIGNvcmUuaW5mbyhgdXNlclByb21wdDpcXG4ke2FyZ3MudXNlclByb21wdH1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjb3JlLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nVHVybih0dXJuOiB7IGZpbmFsUmVzcG9uc2U6IHN0cmluZyB9KTogdm9pZCB7XG4gIGNvbnN0IHByZXZpZXcgPVxuICAgIHR1cm4uZmluYWxSZXNwb25zZS5sZW5ndGggPiA2MDBcbiAgICAgID8gYCR7dHVybi5maW5hbFJlc3BvbnNlLnNsaWNlKDAsIDYwMCl9Li4uIFt0cnVuY2F0ZWQsICR7dHVybi5maW5hbFJlc3BvbnNlLmxlbmd0aH0gY2hhcnNdYFxuICAgICAgOiB0dXJuLmZpbmFsUmVzcG9uc2U7XG4gIGNvcmUuaW5mbyhgW2ZpbmFsXSAke3ByZXZpZXd9YCk7XG59XG4iLCAiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmV4cG9ydCB0eXBlIE91dHB1dFNjaGVtYUZpbGUgPSB7XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmc7XG4gIGNsZWFudXA6ICgpID0+IFByb21pc2U8dm9pZD47XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3V0cHV0U2NoZW1hRmlsZShzY2hlbWE6IHVua25vd24pOiBQcm9taXNlPE91dHB1dFNjaGVtYUZpbGU+IHtcbiAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgY2xlYW51cDogYXN5bmMgKCkgPT4ge30gfTtcbiAgfVxuXG4gIGlmICghaXNKc29uT2JqZWN0KHNjaGVtYSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJvdXRwdXRTY2hlbWEgbXVzdCBiZSBhIHBsYWluIEpTT04gb2JqZWN0XCIpO1xuICB9XG5cbiAgY29uc3Qgc2NoZW1hRGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwiY29kZXgtb3V0cHV0LXNjaGVtYS1cIikpO1xuICBjb25zdCBzY2hlbWFQYXRoID0gcGF0aC5qb2luKHNjaGVtYURpciwgXCJzY2hlbWEuanNvblwiKTtcbiAgY29uc3QgY2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMucm0oc2NoZW1hRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBzdXBwcmVzc1xuICAgIH1cbiAgfTtcblxuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShzY2hlbWFQYXRoLCBKU09OLnN0cmluZ2lmeShzY2hlbWEpLCBcInV0ZjhcIik7XG4gICAgcmV0dXJuIHsgc2NoZW1hUGF0aCwgY2xlYW51cCB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGF3YWl0IGNsZWFudXAoKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0pzb25PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIiwgImltcG9ydCB7IENvZGV4T3B0aW9ucyB9IGZyb20gXCIuL2NvZGV4T3B0aW9uc1wiO1xuaW1wb3J0IHsgVGhyZWFkRXZlbnQsIFRocmVhZEVycm9yLCBVc2FnZSB9IGZyb20gXCIuL2V2ZW50c1wiO1xuaW1wb3J0IHsgQ29kZXhFeGVjIH0gZnJvbSBcIi4vZXhlY1wiO1xuaW1wb3J0IHsgVGhyZWFkSXRlbSB9IGZyb20gXCIuL2l0ZW1zXCI7XG5pbXBvcnQgeyBUaHJlYWRPcHRpb25zIH0gZnJvbSBcIi4vdGhyZWFkT3B0aW9uc1wiO1xuaW1wb3J0IHsgVHVybk9wdGlvbnMgfSBmcm9tIFwiLi90dXJuT3B0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NoZW1hRmlsZSB9IGZyb20gXCIuL291dHB1dFNjaGVtYUZpbGVcIjtcblxuLyoqIENvbXBsZXRlZCB0dXJuLiAqL1xuZXhwb3J0IHR5cGUgVHVybiA9IHtcbiAgaXRlbXM6IFRocmVhZEl0ZW1bXTtcbiAgZmluYWxSZXNwb25zZTogc3RyaW5nO1xuICB1c2FnZTogVXNhZ2UgfCBudWxsO1xufTtcblxuLyoqIEFsaWFzIGZvciBgVHVybmAgdG8gZGVzY3JpYmUgdGhlIHJlc3VsdCBvZiBgcnVuKClgLiAqL1xuZXhwb3J0IHR5cGUgUnVuUmVzdWx0ID0gVHVybjtcblxuLyoqIFRoZSByZXN1bHQgb2YgdGhlIGBydW5TdHJlYW1lZGAgbWV0aG9kLiAqL1xuZXhwb3J0IHR5cGUgU3RyZWFtZWRUdXJuID0ge1xuICBldmVudHM6IEFzeW5jR2VuZXJhdG9yPFRocmVhZEV2ZW50Pjtcbn07XG5cbi8qKiBBbGlhcyBmb3IgYFN0cmVhbWVkVHVybmAgdG8gZGVzY3JpYmUgdGhlIHJlc3VsdCBvZiBgcnVuU3RyZWFtZWQoKWAuICovXG5leHBvcnQgdHlwZSBSdW5TdHJlYW1lZFJlc3VsdCA9IFN0cmVhbWVkVHVybjtcblxuLyoqIEFuIGlucHV0IHRvIHNlbmQgdG8gdGhlIGFnZW50LiAqL1xuZXhwb3J0IHR5cGUgVXNlcklucHV0ID1cbiAgfCB7XG4gICAgICB0eXBlOiBcInRleHRcIjtcbiAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJsb2NhbF9pbWFnZVwiO1xuICAgICAgcGF0aDogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIElucHV0ID0gc3RyaW5nIHwgVXNlcklucHV0W107XG5cbi8qKiBSZXByZXNlbnQgYSB0aHJlYWQgb2YgY29udmVyc2F0aW9uIHdpdGggdGhlIGFnZW50LiBPbmUgdGhyZWFkIGNhbiBoYXZlIG11bHRpcGxlIGNvbnNlY3V0aXZlIHR1cm5zLiAqL1xuZXhwb3J0IGNsYXNzIFRocmVhZCB7XG4gIHByaXZhdGUgX2V4ZWM6IENvZGV4RXhlYztcbiAgcHJpdmF0ZSBfb3B0aW9uczogQ29kZXhPcHRpb25zO1xuICBwcml2YXRlIF9pZDogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSBfdGhyZWFkT3B0aW9uczogVGhyZWFkT3B0aW9ucztcblxuICAvKiogUmV0dXJucyB0aGUgSUQgb2YgdGhlIHRocmVhZC4gUG9wdWxhdGVkIGFmdGVyIHRoZSBmaXJzdCB0dXJuIHN0YXJ0cy4gKi9cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZXhlYzogQ29kZXhFeGVjLFxuICAgIG9wdGlvbnM6IENvZGV4T3B0aW9ucyxcbiAgICB0aHJlYWRPcHRpb25zOiBUaHJlYWRPcHRpb25zLFxuICAgIGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgdGhpcy5fZXhlYyA9IGV4ZWM7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5faWQgPSBpZDtcbiAgICB0aGlzLl90aHJlYWRPcHRpb25zID0gdGhyZWFkT3B0aW9ucztcbiAgfVxuXG4gIC8qKiBQcm92aWRlcyB0aGUgaW5wdXQgdG8gdGhlIGFnZW50IGFuZCBzdHJlYW1zIGV2ZW50cyBhcyB0aGV5IGFyZSBwcm9kdWNlZCBkdXJpbmcgdGhlIHR1cm4uICovXG4gIGFzeW5jIHJ1blN0cmVhbWVkKGlucHV0OiBJbnB1dCwgdHVybk9wdGlvbnM6IFR1cm5PcHRpb25zID0ge30pOiBQcm9taXNlPFN0cmVhbWVkVHVybj4ge1xuICAgIHJldHVybiB7IGV2ZW50czogdGhpcy5ydW5TdHJlYW1lZEludGVybmFsKGlucHV0LCB0dXJuT3B0aW9ucykgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgKnJ1blN0cmVhbWVkSW50ZXJuYWwoXG4gICAgaW5wdXQ6IElucHV0LFxuICAgIHR1cm5PcHRpb25zOiBUdXJuT3B0aW9ucyA9IHt9LFxuICApOiBBc3luY0dlbmVyYXRvcjxUaHJlYWRFdmVudD4ge1xuICAgIGNvbnN0IHsgc2NoZW1hUGF0aCwgY2xlYW51cCB9ID0gYXdhaXQgY3JlYXRlT3V0cHV0U2NoZW1hRmlsZSh0dXJuT3B0aW9ucy5vdXRwdXRTY2hlbWEpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl90aHJlYWRPcHRpb25zO1xuICAgIGNvbnN0IHsgcHJvbXB0LCBpbWFnZXMgfSA9IG5vcm1hbGl6ZUlucHV0KGlucHV0KTtcbiAgICBjb25zdCBnZW5lcmF0b3IgPSB0aGlzLl9leGVjLnJ1bih7XG4gICAgICBpbnB1dDogcHJvbXB0LFxuICAgICAgYmFzZVVybDogdGhpcy5fb3B0aW9ucy5iYXNlVXJsLFxuICAgICAgYXBpS2V5OiB0aGlzLl9vcHRpb25zLmFwaUtleSxcbiAgICAgIHRocmVhZElkOiB0aGlzLl9pZCxcbiAgICAgIGltYWdlcyxcbiAgICAgIG1vZGVsOiBvcHRpb25zPy5tb2RlbCxcbiAgICAgIHNhbmRib3hNb2RlOiBvcHRpb25zPy5zYW5kYm94TW9kZSxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnksXG4gICAgICBza2lwR2l0UmVwb0NoZWNrOiBvcHRpb25zPy5za2lwR2l0UmVwb0NoZWNrLFxuICAgICAgb3V0cHV0U2NoZW1hRmlsZTogc2NoZW1hUGF0aCxcbiAgICAgIG1vZGVsUmVhc29uaW5nRWZmb3J0OiBvcHRpb25zPy5tb2RlbFJlYXNvbmluZ0VmZm9ydCxcbiAgICAgIHNpZ25hbDogdHVybk9wdGlvbnMuc2lnbmFsLFxuICAgICAgbmV0d29ya0FjY2Vzc0VuYWJsZWQ6IG9wdGlvbnM/Lm5ldHdvcmtBY2Nlc3NFbmFibGVkLFxuICAgICAgd2ViU2VhcmNoTW9kZTogb3B0aW9ucz8ud2ViU2VhcmNoTW9kZSxcbiAgICAgIHdlYlNlYXJjaEVuYWJsZWQ6IG9wdGlvbnM/LndlYlNlYXJjaEVuYWJsZWQsXG4gICAgICBhcHByb3ZhbFBvbGljeTogb3B0aW9ucz8uYXBwcm92YWxQb2xpY3ksXG4gICAgICBhZGRpdGlvbmFsRGlyZWN0b3JpZXM6IG9wdGlvbnM/LmFkZGl0aW9uYWxEaXJlY3RvcmllcyxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGdlbmVyYXRvcikge1xuICAgICAgICBsZXQgcGFyc2VkOiBUaHJlYWRFdmVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGl0ZW0pIGFzIFRocmVhZEV2ZW50O1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIGl0ZW06ICR7aXRlbX1gLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VkLnR5cGUgPT09IFwidGhyZWFkLnN0YXJ0ZWRcIikge1xuICAgICAgICAgIHRoaXMuX2lkID0gcGFyc2VkLnRocmVhZF9pZDtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBwYXJzZWQ7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFudXAoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUHJvdmlkZXMgdGhlIGlucHV0IHRvIHRoZSBhZ2VudCBhbmQgcmV0dXJucyB0aGUgY29tcGxldGVkIHR1cm4uICovXG4gIGFzeW5jIHJ1bihpbnB1dDogSW5wdXQsIHR1cm5PcHRpb25zOiBUdXJuT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUdXJuPiB7XG4gICAgY29uc3QgZ2VuZXJhdG9yID0gdGhpcy5ydW5TdHJlYW1lZEludGVybmFsKGlucHV0LCB0dXJuT3B0aW9ucyk7XG4gICAgY29uc3QgaXRlbXM6IFRocmVhZEl0ZW1bXSA9IFtdO1xuICAgIGxldCBmaW5hbFJlc3BvbnNlOiBzdHJpbmcgPSBcIlwiO1xuICAgIGxldCB1c2FnZTogVXNhZ2UgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdHVybkZhaWx1cmU6IFRocmVhZEVycm9yIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBnZW5lcmF0b3IpIHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSBcIml0ZW0uY29tcGxldGVkXCIpIHtcbiAgICAgICAgaWYgKGV2ZW50Lml0ZW0udHlwZSA9PT0gXCJhZ2VudF9tZXNzYWdlXCIpIHtcbiAgICAgICAgICBmaW5hbFJlc3BvbnNlID0gZXZlbnQuaXRlbS50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLnB1c2goZXZlbnQuaXRlbSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IFwidHVybi5jb21wbGV0ZWRcIikge1xuICAgICAgICB1c2FnZSA9IGV2ZW50LnVzYWdlO1xuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSBcInR1cm4uZmFpbGVkXCIpIHtcbiAgICAgICAgdHVybkZhaWx1cmUgPSBldmVudC5lcnJvcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0dXJuRmFpbHVyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHR1cm5GYWlsdXJlLm1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4geyBpdGVtcywgZmluYWxSZXNwb25zZSwgdXNhZ2UgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVJbnB1dChpbnB1dDogSW5wdXQpOiB7IHByb21wdDogc3RyaW5nOyBpbWFnZXM6IHN0cmluZ1tdIH0ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHsgcHJvbXB0OiBpbnB1dCwgaW1hZ2VzOiBbXSB9O1xuICB9XG4gIGNvbnN0IHByb21wdFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBpbWFnZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpbnB1dCkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICBwcm9tcHRQYXJ0cy5wdXNoKGl0ZW0udGV4dCk7XG4gICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFwibG9jYWxfaW1hZ2VcIikge1xuICAgICAgaW1hZ2VzLnB1c2goaXRlbS5wYXRoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcHJvbXB0OiBwcm9tcHRQYXJ0cy5qb2luKFwiXFxuXFxuXCIpLCBpbWFnZXMgfTtcbn1cbiIsICJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHN0YXRTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCByZWFkbGluZSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvZGV4Q29uZmlnT2JqZWN0LCBDb2RleENvbmZpZ1ZhbHVlIH0gZnJvbSBcIi4vY29kZXhPcHRpb25zXCI7XG5pbXBvcnQgeyBTYW5kYm94TW9kZSwgTW9kZWxSZWFzb25pbmdFZmZvcnQsIEFwcHJvdmFsTW9kZSwgV2ViU2VhcmNoTW9kZSB9IGZyb20gXCIuL3RocmVhZE9wdGlvbnNcIjtcblxuZXhwb3J0IHR5cGUgQ29kZXhFeGVjQXJncyA9IHtcbiAgaW5wdXQ6IHN0cmluZztcblxuICBiYXNlVXJsPzogc3RyaW5nO1xuICBhcGlLZXk/OiBzdHJpbmc7XG4gIHRocmVhZElkPzogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VzPzogc3RyaW5nW107XG4gIC8vIC0tbW9kZWxcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIC8vIC0tc2FuZGJveFxuICBzYW5kYm94TW9kZT86IFNhbmRib3hNb2RlO1xuICAvLyAtLWNkXG4gIHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8vIC0tYWRkLWRpclxuICBhZGRpdGlvbmFsRGlyZWN0b3JpZXM/OiBzdHJpbmdbXTtcbiAgLy8gLS1za2lwLWdpdC1yZXBvLWNoZWNrXG4gIHNraXBHaXRSZXBvQ2hlY2s/OiBib29sZWFuO1xuICAvLyAtLW91dHB1dC1zY2hlbWFcbiAgb3V0cHV0U2NoZW1hRmlsZT86IHN0cmluZztcbiAgLy8gLS1jb25maWcgbW9kZWxfcmVhc29uaW5nX2VmZm9ydFxuICBtb2RlbFJlYXNvbmluZ0VmZm9ydD86IE1vZGVsUmVhc29uaW5nRWZmb3J0O1xuICAvLyBBYm9ydFNpZ25hbCB0byBjYW5jZWwgdGhlIGV4ZWN1dGlvblxuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLy8gLS1jb25maWcgc2FuZGJveF93b3Jrc3BhY2Vfd3JpdGUubmV0d29ya19hY2Nlc3NcbiAgbmV0d29ya0FjY2Vzc0VuYWJsZWQ/OiBib29sZWFuO1xuICAvLyAtLWNvbmZpZyB3ZWJfc2VhcmNoXG4gIHdlYlNlYXJjaE1vZGU/OiBXZWJTZWFyY2hNb2RlO1xuICAvLyBsZWdhY3kgLS1jb25maWcgZmVhdHVyZXMud2ViX3NlYXJjaF9yZXF1ZXN0XG4gIHdlYlNlYXJjaEVuYWJsZWQ/OiBib29sZWFuO1xuICAvLyAtLWNvbmZpZyBhcHByb3ZhbF9wb2xpY3lcbiAgYXBwcm92YWxQb2xpY3k/OiBBcHByb3ZhbE1vZGU7XG59O1xuXG5jb25zdCBJTlRFUk5BTF9PUklHSU5BVE9SX0VOViA9IFwiQ09ERVhfSU5URVJOQUxfT1JJR0lOQVRPUl9PVkVSUklERVwiO1xuY29uc3QgVFlQRVNDUklQVF9TREtfT1JJR0lOQVRPUiA9IFwiY29kZXhfc2RrX3RzXCI7XG5jb25zdCBDT0RFWF9OUE1fTkFNRSA9IFwiQG9wZW5haS9jb2RleFwiO1xuXG5jb25zdCBQTEFURk9STV9QQUNLQUdFX0JZX1RBUkdFVDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsXCI6IFwiQG9wZW5haS9jb2RleC1saW51eC14NjRcIixcbiAgXCJhYXJjaDY0LXVua25vd24tbGludXgtbXVzbFwiOiBcIkBvcGVuYWkvY29kZXgtbGludXgtYXJtNjRcIixcbiAgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCI6IFwiQG9wZW5haS9jb2RleC1kYXJ3aW4teDY0XCIsXG4gIFwiYWFyY2g2NC1hcHBsZS1kYXJ3aW5cIjogXCJAb3BlbmFpL2NvZGV4LWRhcndpbi1hcm02NFwiLFxuICBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIjogXCJAb3BlbmFpL2NvZGV4LXdpbjMyLXg2NFwiLFxuICBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCI6IFwiQG9wZW5haS9jb2RleC13aW4zMi1hcm02NFwiLFxufTtcblxuY29uc3QgbW9kdWxlUmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxudHlwZSBDb2RleFBhdGhSZXNvbHV0aW9uID0ge1xuICBleGVjdXRhYmxlUGF0aDogc3RyaW5nO1xuICBwYXRoRGlyczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgY2xhc3MgQ29kZXhFeGVjIHtcbiAgcHJpdmF0ZSBleGVjdXRhYmxlUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHBhdGhEaXJzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBlbnZPdmVycmlkZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgY29uZmlnT3ZlcnJpZGVzPzogQ29kZXhDb25maWdPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZXhlY3V0YWJsZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgY29uZmlnT3ZlcnJpZGVzPzogQ29kZXhDb25maWdPYmplY3QsXG4gICkge1xuICAgIGlmIChleGVjdXRhYmxlUGF0aCkge1xuICAgICAgdGhpcy5leGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoO1xuICAgICAgdGhpcy5wYXRoRGlycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGZpbmRDb2RleFBhdGgoKTtcbiAgICAgIHRoaXMuZXhlY3V0YWJsZVBhdGggPSByZXNvbHZlZC5leGVjdXRhYmxlUGF0aDtcbiAgICAgIHRoaXMucGF0aERpcnMgPSByZXNvbHZlZC5wYXRoRGlycztcbiAgICB9XG4gICAgdGhpcy5lbnZPdmVycmlkZSA9IGVudjtcbiAgICB0aGlzLmNvbmZpZ092ZXJyaWRlcyA9IGNvbmZpZ092ZXJyaWRlcztcbiAgfVxuXG4gIGFzeW5jICpydW4oYXJnczogQ29kZXhFeGVjQXJncyk6IEFzeW5jR2VuZXJhdG9yPHN0cmluZz4ge1xuICAgIGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcImV4ZWNcIiwgXCItLWV4cGVyaW1lbnRhbC1qc29uXCJdO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnT3ZlcnJpZGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IG92ZXJyaWRlIG9mIHNlcmlhbGl6ZUNvbmZpZ092ZXJyaWRlcyh0aGlzLmNvbmZpZ092ZXJyaWRlcykpIHtcbiAgICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tY29uZmlnXCIsIG92ZXJyaWRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5iYXNlVXJsKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFxuICAgICAgICBcIi0tY29uZmlnXCIsXG4gICAgICAgIGBvcGVuYWlfYmFzZV91cmw9JHt0b1RvbWxWYWx1ZShhcmdzLmJhc2VVcmwsIFwib3BlbmFpX2Jhc2VfdXJsXCIpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLm1vZGVsKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1tb2RlbFwiLCBhcmdzLm1vZGVsKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5zYW5kYm94TW9kZSkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tc2FuZGJveFwiLCBhcmdzLnNhbmRib3hNb2RlKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy53b3JraW5nRGlyZWN0b3J5KSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1jZFwiLCBhcmdzLndvcmtpbmdEaXJlY3RvcnkpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmFkZGl0aW9uYWxEaXJlY3Rvcmllcz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGRpciBvZiBhcmdzLmFkZGl0aW9uYWxEaXJlY3Rvcmllcykge1xuICAgICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1hZGQtZGlyXCIsIGRpcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3Muc2tpcEdpdFJlcG9DaGVjaykge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tc2tpcC1naXQtcmVwby1jaGVja1wiKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5vdXRwdXRTY2hlbWFGaWxlKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1vdXRwdXQtc2NoZW1hXCIsIGFyZ3Mub3V0cHV0U2NoZW1hRmlsZSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubW9kZWxSZWFzb25pbmdFZmZvcnQpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWNvbmZpZ1wiLCBgbW9kZWxfcmVhc29uaW5nX2VmZm9ydD1cIiR7YXJncy5tb2RlbFJlYXNvbmluZ0VmZm9ydH1cImApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLm5ldHdvcmtBY2Nlc3NFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXG4gICAgICAgIFwiLS1jb25maWdcIixcbiAgICAgICAgYHNhbmRib3hfd29ya3NwYWNlX3dyaXRlLm5ldHdvcmtfYWNjZXNzPSR7YXJncy5uZXR3b3JrQWNjZXNzRW5hYmxlZH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy53ZWJTZWFyY2hNb2RlKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1jb25maWdcIiwgYHdlYl9zZWFyY2g9XCIke2FyZ3Mud2ViU2VhcmNoTW9kZX1cImApO1xuICAgIH0gZWxzZSBpZiAoYXJncy53ZWJTZWFyY2hFbmFibGVkID09PSB0cnVlKSB7XG4gICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1jb25maWdcIiwgYHdlYl9zZWFyY2g9XCJsaXZlXCJgKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3Mud2ViU2VhcmNoRW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbW1hbmRBcmdzLnB1c2goXCItLWNvbmZpZ1wiLCBgd2ViX3NlYXJjaD1cImRpc2FibGVkXCJgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5hcHByb3ZhbFBvbGljeSkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcIi0tY29uZmlnXCIsIGBhcHByb3ZhbF9wb2xpY3k9XCIke2FyZ3MuYXBwcm92YWxQb2xpY3l9XCJgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy50aHJlYWRJZCkge1xuICAgICAgY29tbWFuZEFyZ3MucHVzaChcInJlc3VtZVwiLCBhcmdzLnRocmVhZElkKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5pbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBhcmdzLmltYWdlcykge1xuICAgICAgICBjb21tYW5kQXJncy5wdXNoKFwiLS1pbWFnZVwiLCBpbWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKHRoaXMuZW52T3ZlcnJpZGUpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oZW52LCB0aGlzLmVudk92ZXJyaWRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW52W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWVudltJTlRFUk5BTF9PUklHSU5BVE9SX0VOVl0pIHtcbiAgICAgIGVudltJTlRFUk5BTF9PUklHSU5BVE9SX0VOVl0gPSBUWVBFU0NSSVBUX1NES19PUklHSU5BVE9SO1xuICAgIH1cbiAgICBpZiAoYXJncy5hcGlLZXkpIHtcbiAgICAgIGVudi5DT0RFWF9BUElfS0VZID0gYXJncy5hcGlLZXk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBhdGhEaXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHByZXBlbmRQYXRoRGlycyhlbnYsIHRoaXMucGF0aERpcnMpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24odGhpcy5leGVjdXRhYmxlUGF0aCwgY29tbWFuZEFyZ3MsIHtcbiAgICAgIGVudixcbiAgICAgIHNpZ25hbDogYXJncy5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBsZXQgc3Bhd25FcnJvcjogdW5rbm93biB8IG51bGwgPSBudWxsO1xuICAgIGNoaWxkLm9uY2UoXCJlcnJvclwiLCAoZXJyKSA9PiAoc3Bhd25FcnJvciA9IGVycikpO1xuXG4gICAgaWYgKCFjaGlsZC5zdGRpbikge1xuICAgICAgY2hpbGQua2lsbCgpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hpbGQgcHJvY2VzcyBoYXMgbm8gc3RkaW5cIik7XG4gICAgfVxuICAgIGNoaWxkLnN0ZGluLndyaXRlKGFyZ3MuaW5wdXQpO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgaWYgKCFjaGlsZC5zdGRvdXQpIHtcbiAgICAgIGNoaWxkLmtpbGwoKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNoaWxkIHByb2Nlc3MgaGFzIG5vIHN0ZG91dFwiKTtcbiAgICB9XG4gICAgY29uc3Qgc3RkZXJyQ2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuXG4gICAgaWYgKGNoaWxkLnN0ZGVycikge1xuICAgICAgY2hpbGQuc3RkZXJyLm9uKFwiZGF0YVwiLCAoZGF0YSkgPT4ge1xuICAgICAgICBzdGRlcnJDaHVua3MucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXRQcm9taXNlID0gbmV3IFByb21pc2U8eyBjb2RlOiBudW1iZXIgfCBudWxsOyBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbCB9PihcbiAgICAgIChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGNoaWxkLm9uY2UoXCJleGl0XCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHsgY29kZSwgc2lnbmFsIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICAgIGlucHV0OiBjaGlsZC5zdGRvdXQsXG4gICAgICBjcmxmRGVsYXk6IEluZmluaXR5LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgbGluZSBvZiBybCkge1xuICAgICAgICAvLyBgbGluZWAgaXMgYSBzdHJpbmcgKE5vZGUgc2V0cyBkZWZhdWx0IGVuY29kaW5nIHRvIHV0ZjggZm9yIHJlYWRsaW5lKVxuICAgICAgICB5aWVsZCBsaW5lIGFzIHN0cmluZztcbiAgICAgIH1cblxuICAgICAgaWYgKHNwYXduRXJyb3IpIHRocm93IHNwYXduRXJyb3I7XG4gICAgICBjb25zdCB7IGNvZGUsIHNpZ25hbCB9ID0gYXdhaXQgZXhpdFByb21pc2U7XG4gICAgICBpZiAoY29kZSAhPT0gMCB8fCBzaWduYWwpIHtcbiAgICAgICAgY29uc3Qgc3RkZXJyQnVmZmVyID0gQnVmZmVyLmNvbmNhdChzdGRlcnJDaHVua3MpO1xuICAgICAgICBjb25zdCBkZXRhaWwgPSBzaWduYWwgPyBgc2lnbmFsICR7c2lnbmFsfWAgOiBgY29kZSAke2NvZGUgPz8gMX1gO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvZGV4IEV4ZWMgZXhpdGVkIHdpdGggJHtkZXRhaWx9OiAke3N0ZGVyckJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIil9YCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICBjaGlsZC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghY2hpbGQua2lsbGVkKSBjaGlsZC5raWxsKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNvbmZpZ092ZXJyaWRlcyhjb25maWdPdmVycmlkZXM6IENvZGV4Q29uZmlnT2JqZWN0KTogc3RyaW5nW10ge1xuICBjb25zdCBvdmVycmlkZXM6IHN0cmluZ1tdID0gW107XG4gIGZsYXR0ZW5Db25maWdPdmVycmlkZXMoY29uZmlnT3ZlcnJpZGVzLCBcIlwiLCBvdmVycmlkZXMpO1xuICByZXR1cm4gb3ZlcnJpZGVzO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuQ29uZmlnT3ZlcnJpZGVzKFxuICB2YWx1ZTogQ29kZXhDb25maWdWYWx1ZSxcbiAgcHJlZml4OiBzdHJpbmcsXG4gIG92ZXJyaWRlczogc3RyaW5nW10sXG4pOiB2b2lkIHtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIG92ZXJyaWRlcy5wdXNoKGAke3ByZWZpeH09JHt0b1RvbWxWYWx1ZSh2YWx1ZSwgcHJlZml4KX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29kZXggY29uZmlnIG92ZXJyaWRlcyBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0XCIpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmICghcHJlZml4ICYmIGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHByZWZpeCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIG92ZXJyaWRlcy5wdXNoKGAke3ByZWZpeH09e31gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIGNoaWxkXSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvZGV4IGNvbmZpZyBvdmVycmlkZSBrZXlzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3NcIik7XG4gICAgfVxuICAgIGlmIChjaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IHByZWZpeCA/IGAke3ByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChjaGlsZCkpIHtcbiAgICAgIGZsYXR0ZW5Db25maWdPdmVycmlkZXMoY2hpbGQsIHBhdGgsIG92ZXJyaWRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG92ZXJyaWRlcy5wdXNoKGAke3BhdGh9PSR7dG9Ub21sVmFsdWUoY2hpbGQsIHBhdGgpfWApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0b1RvbWxWYWx1ZSh2YWx1ZTogQ29kZXhDb25maWdWYWx1ZSwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvZGV4IGNvbmZpZyBvdmVycmlkZSBhdCAke3BhdGh9IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyYCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gdmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGNvbnN0IHJlbmRlcmVkID0gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4gdG9Ub21sVmFsdWUoaXRlbSwgYCR7cGF0aH1bJHtpbmRleH1dYCkpO1xuICAgIHJldHVybiBgWyR7cmVuZGVyZWQuam9pbihcIiwgXCIpfV1gO1xuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBba2V5LCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICBpZiAoIWtleSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2RleCBjb25maWcgb3ZlcnJpZGUga2V5cyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKGAke2Zvcm1hdFRvbWxLZXkoa2V5KX0gPSAke3RvVG9tbFZhbHVlKGNoaWxkLCBgJHtwYXRofS4ke2tleX1gKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGB7JHtwYXJ0cy5qb2luKFwiLCBcIil9fWA7XG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvZGV4IGNvbmZpZyBvdmVycmlkZSBhdCAke3BhdGh9IGNhbm5vdCBiZSBudWxsYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlb2YgdmFsdWU7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBDb2RleCBjb25maWcgb3ZlcnJpZGUgdmFsdWUgYXQgJHtwYXRofTogJHt0eXBlTmFtZX1gKTtcbiAgfVxufVxuXG5jb25zdCBUT01MX0JBUkVfS0VZID0gL15bQS1aYS16MC05Xy1dKyQvO1xuZnVuY3Rpb24gZm9ybWF0VG9tbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBUT01MX0JBUkVfS0VZLnRlc3Qoa2V5KSA/IGtleSA6IEpTT04uc3RyaW5naWZ5KGtleSk7XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDb2RleENvbmZpZ09iamVjdCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBmaW5kQ29kZXhQYXRoKCk6IENvZGV4UGF0aFJlc29sdXRpb24ge1xuICBjb25zdCB7IHBsYXRmb3JtLCBhcmNoIH0gPSBwcm9jZXNzO1xuXG4gIGxldCB0YXJnZXRUcmlwbGUgPSBudWxsO1xuICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgY2FzZSBcImxpbnV4XCI6XG4gICAgY2FzZSBcImFuZHJvaWRcIjpcbiAgICAgIHN3aXRjaCAoYXJjaCkge1xuICAgICAgICBjYXNlIFwieDY0XCI6XG4gICAgICAgICAgdGFyZ2V0VHJpcGxlID0gXCJ4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJhcm02NFwiOlxuICAgICAgICAgIHRhcmdldFRyaXBsZSA9IFwiYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkYXJ3aW5cIjpcbiAgICAgIHN3aXRjaCAoYXJjaCkge1xuICAgICAgICBjYXNlIFwieDY0XCI6XG4gICAgICAgICAgdGFyZ2V0VHJpcGxlID0gXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJhcm02NFwiOlxuICAgICAgICAgIHRhcmdldFRyaXBsZSA9IFwiYWFyY2g2NC1hcHBsZS1kYXJ3aW5cIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ3aW4zMlwiOlxuICAgICAgc3dpdGNoIChhcmNoKSB7XG4gICAgICAgIGNhc2UgXCJ4NjRcIjpcbiAgICAgICAgICB0YXJnZXRUcmlwbGUgPSBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFybTY0XCI6XG4gICAgICAgICAgdGFyZ2V0VHJpcGxlID0gXCJhYXJjaDY0LXBjLXdpbmRvd3MtbXN2Y1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKCF0YXJnZXRUcmlwbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBsYXRmb3JtOiAke3BsYXRmb3JtfSAoJHthcmNofSlgKTtcbiAgfVxuXG4gIGNvbnN0IHBsYXRmb3JtUGFja2FnZSA9IFBMQVRGT1JNX1BBQ0tBR0VfQllfVEFSR0VUW3RhcmdldFRyaXBsZV07XG4gIGlmICghcGxhdGZvcm1QYWNrYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0YXJnZXQgdHJpcGxlOiAke3RhcmdldFRyaXBsZX1gKTtcbiAgfVxuXG4gIGxldCB2ZW5kb3JSb290OiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgY29uc3QgY29kZXhQYWNrYWdlSnNvblBhdGggPSBtb2R1bGVSZXF1aXJlLnJlc29sdmUoYCR7Q09ERVhfTlBNX05BTUV9L3BhY2thZ2UuanNvbmApO1xuICAgIGNvbnN0IGNvZGV4UmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoY29kZXhQYWNrYWdlSnNvblBhdGgpO1xuICAgIGNvbnN0IHBsYXRmb3JtUGFja2FnZUpzb25QYXRoID0gY29kZXhSZXF1aXJlLnJlc29sdmUoYCR7cGxhdGZvcm1QYWNrYWdlfS9wYWNrYWdlLmpzb25gKTtcbiAgICB2ZW5kb3JSb290ID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShwbGF0Zm9ybVBhY2thZ2VKc29uUGF0aCksIFwidmVuZG9yXCIpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIGxvY2F0ZSBDb2RleCBDTEkgYmluYXJpZXMuIEVuc3VyZSAke0NPREVYX05QTV9OQU1FfSBpcyBpbnN0YWxsZWQgd2l0aCBvcHRpb25hbCBkZXBlbmRlbmNpZXMuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgY29kZXhCaW5hcnlOYW1lID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJjb2RleC5leGVcIiA6IFwiY29kZXhcIjtcbiAgY29uc3QgbmF0aXZlUGFja2FnZSA9IHJlc29sdmVOYXRpdmVQYWNrYWdlKHZlbmRvclJvb3QsIHRhcmdldFRyaXBsZSwgY29kZXhCaW5hcnlOYW1lKTtcbiAgaWYgKCFuYXRpdmVQYWNrYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBsb2NhdGUgQ29kZXggQ0xJIGJpbmFyaWVzIGZvciAke3RhcmdldFRyaXBsZX0uIEVuc3VyZSAke0NPREVYX05QTV9OQU1FfSBpcyBpbnN0YWxsZWQgd2l0aCBvcHRpb25hbCBkZXBlbmRlbmNpZXMuYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5hdGl2ZVBhY2thZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTmF0aXZlUGFja2FnZShcbiAgdmVuZG9yUm9vdDogc3RyaW5nLFxuICB0YXJnZXRUcmlwbGU6IHN0cmluZyxcbiAgY29kZXhCaW5hcnlOYW1lOiBzdHJpbmcsXG4pOiBDb2RleFBhdGhSZXNvbHV0aW9uIHwgbnVsbCB7XG4gIGNvbnN0IHBhY2thZ2VSb290ID0gcGF0aC5qb2luKHZlbmRvclJvb3QsIHRhcmdldFRyaXBsZSk7XG4gIGNvbnN0IHBhY2thZ2VCaW5hcnlQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VSb290LCBcImJpblwiLCBjb2RleEJpbmFyeU5hbWUpO1xuICBpZiAoaXNGaWxlKHBhY2thZ2VCaW5hcnlQYXRoKSAmJiBpc0ZpbGUocGF0aC5qb2luKHBhY2thZ2VSb290LCBcImNvZGV4LXBhY2thZ2UuanNvblwiKSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhlY3V0YWJsZVBhdGg6IHBhY2thZ2VCaW5hcnlQYXRoLFxuICAgICAgcGF0aERpcnM6IGV4aXN0aW5nRGlycyhwYXRoLmpvaW4ocGFja2FnZVJvb3QsIFwiY29kZXgtcGF0aFwiKSksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGxlZ2FjeUJpbmFyeVBhdGggPSBwYXRoLmpvaW4ocGFja2FnZVJvb3QsIFwiY29kZXhcIiwgY29kZXhCaW5hcnlOYW1lKTtcbiAgaWYgKGlzRmlsZShsZWdhY3lCaW5hcnlQYXRoKSkge1xuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRhYmxlUGF0aDogbGVnYWN5QmluYXJ5UGF0aCxcbiAgICAgIHBhdGhEaXJzOiBleGlzdGluZ0RpcnMocGF0aC5qb2luKHBhY2thZ2VSb290LCBcInBhdGhcIikpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZXhpc3RpbmdEaXJzKC4uLmRpcnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gZGlycy5maWx0ZXIoaXNEaXJlY3RvcnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGVuZFBhdGhEaXJzKFxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIHBhdGhEaXJzOiBzdHJpbmdbXSxcbiAgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSA9IHByb2Nlc3MucGxhdGZvcm0sXG4pOiB2b2lkIHtcbiAgY29uc3QgcGF0aEtleSA9IHBhdGhFbnZLZXkoZW52LCBwbGF0Zm9ybSk7XG4gIGlmIChwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW52KSkge1xuICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSBcInBhdGhcIiAmJiBrZXkgIT09IHBhdGhLZXkpIHtcbiAgICAgICAgZGVsZXRlIGVudltrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRW50cmllcyA9IChlbnZbcGF0aEtleV0gPz8gXCJcIilcbiAgICAuc3BsaXQocGF0aC5kZWxpbWl0ZXIpXG4gICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lmxlbmd0aCA+IDAgJiYgIXBhdGhEaXJzLmluY2x1ZGVzKGVudHJ5KSk7XG4gIGVudltwYXRoS2V5XSA9IFsuLi5wYXRoRGlycywgLi4uZXhpc3RpbmdFbnRyaWVzXS5qb2luKHBhdGguZGVsaW1pdGVyKTtcbn1cblxuZnVuY3Rpb24gcGF0aEVudktleShlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBzdHJpbmcge1xuICBpZiAocGxhdGZvcm0gIT09IFwid2luMzJcIikge1xuICAgIHJldHVybiBcIlBBVEhcIjtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoaW5nS2V5cyA9IE9iamVjdC5rZXlzKGVudikuZmlsdGVyKChrZXkpID0+IGtleS50b0xvd2VyQ2FzZSgpID09PSBcInBhdGhcIik7XG4gIHJldHVybiBtYXRjaGluZ0tleXMuaW5jbHVkZXMoXCJQYXRoXCIpID8gXCJQYXRoXCIgOiAobWF0Y2hpbmdLZXlzLmF0KC0xKSA/PyBcIlBBVEhcIik7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZShmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0YXRTeW5jKGZpbGVQYXRoKS5pc0ZpbGUoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRGlyZWN0b3J5KGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RhdFN5bmMoZmlsZVBhdGgpLmlzRGlyZWN0b3J5KCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IENvZGV4T3B0aW9ucyB9IGZyb20gXCIuL2NvZGV4T3B0aW9uc1wiO1xuaW1wb3J0IHsgQ29kZXhFeGVjIH0gZnJvbSBcIi4vZXhlY1wiO1xuaW1wb3J0IHsgVGhyZWFkIH0gZnJvbSBcIi4vdGhyZWFkXCI7XG5pbXBvcnQgeyBUaHJlYWRPcHRpb25zIH0gZnJvbSBcIi4vdGhyZWFkT3B0aW9uc1wiO1xuXG4vKipcbiAqIENvZGV4IGlzIHRoZSBtYWluIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBDb2RleCBhZ2VudC5cbiAqXG4gKiBVc2UgdGhlIGBzdGFydFRocmVhZCgpYCBtZXRob2QgdG8gc3RhcnQgYSBuZXcgdGhyZWFkIG9yIGByZXN1bWVUaHJlYWQoKWAgdG8gcmVzdW1lIGEgcHJldmlvdXNseSBzdGFydGVkIHRocmVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZGV4IHtcbiAgcHJpdmF0ZSBleGVjOiBDb2RleEV4ZWM7XG4gIHByaXZhdGUgb3B0aW9uczogQ29kZXhPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvZGV4T3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBjb2RleFBhdGhPdmVycmlkZSwgZW52LCBjb25maWcgfSA9IG9wdGlvbnM7XG4gICAgdGhpcy5leGVjID0gbmV3IENvZGV4RXhlYyhjb2RleFBhdGhPdmVycmlkZSwgZW52LCBjb25maWcpO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgbmV3IGNvbnZlcnNhdGlvbiB3aXRoIGFuIGFnZW50LlxuICAgKiBAcmV0dXJucyBBIG5ldyB0aHJlYWQgaW5zdGFuY2UuXG4gICAqL1xuICBzdGFydFRocmVhZChvcHRpb25zOiBUaHJlYWRPcHRpb25zID0ge30pOiBUaHJlYWQge1xuICAgIHJldHVybiBuZXcgVGhyZWFkKHRoaXMuZXhlYywgdGhpcy5vcHRpb25zLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1bWVzIGEgY29udmVyc2F0aW9uIHdpdGggYW4gYWdlbnQgYmFzZWQgb24gdGhlIHRocmVhZCBpZC5cbiAgICogVGhyZWFkcyBhcmUgcGVyc2lzdGVkIGluIH4vLmNvZGV4L3Nlc3Npb25zLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSB0aHJlYWQgdG8gcmVzdW1lLlxuICAgKiBAcmV0dXJucyBBIG5ldyB0aHJlYWQgaW5zdGFuY2UuXG4gICAqL1xuICByZXN1bWVUaHJlYWQoaWQ6IHN0cmluZywgb3B0aW9uczogVGhyZWFkT3B0aW9ucyA9IHt9KTogVGhyZWFkIHtcbiAgICByZXR1cm4gbmV3IFRocmVhZCh0aGlzLmV4ZWMsIHRoaXMub3B0aW9ucywgb3B0aW9ucywgaWQpO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQgeyByZXRyeVdpdGhCYWNrb2ZmLCBydW5DYXB0dXJpbmcgfSBmcm9tIFwiLi9pbnN0YWxsZXItc3VwcG9ydC5qc1wiO1xuXG4vLyBQaW5uZWQgdG8gbWF0Y2ggQG9wZW5haS9jb2RleC1zZGsgLyBAb3BlbmFpL2NvZGV4IGluIHBhY2thZ2UuanNvbi5cbi8vIEJ1bXAgaW4gbG9ja3N0ZXAgd2l0aCB0aG9zZSBkZXBlbmRlbmNpZXMuXG5jb25zdCBDTElfVkVSU0lPTiA9IFwiMC4xMzkuMFwiO1xuXG4vLyBgbnBtIGluc3RhbGwgLWdgIGlzIGEgbmV0d29yayBjYWxsIG9uIGEgQ0kgcnVubmVyIGFuZCBmYWlscyB0cmFuc2llbnRseVxuLy8gKEROUyBTRVJWRkFJTCwgcmVnaXN0cnkgY29ubmVjdGlvbiByZXNldHMpLiBSZXRyeSB3aXRoIGxpbmVhciBiYWNrb2ZmLFxuLy8gbWlycm9yaW5nIHRoZSBDbGF1ZGUgaW5zdGFsbGVyLlxuY29uc3QgSU5TVEFMTF9BVFRFTVBUUyA9IDM7XG5jb25zdCBJTlNUQUxMX1JFVFJZX0JBU0VfREVMQVlfTVMgPSAyMDAwO1xuXG5sZXQgY2FjaGVkOiBQcm9taXNlPHN0cmluZz4gfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUNvZGV4Q2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmICghY2FjaGVkKSBjYWNoZWQgPSByZXNvbHZlQ29kZXhDbGkoKTtcbiAgcmV0dXJuIGNhY2hlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Q29kZXhDbGlDYWNoZSgpOiB2b2lkIHtcbiAgY2FjaGVkID0gbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNvZGV4Q2xpKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvY2Vzcy5lbnYuU0hPUEZMT09SX0NPREVYX0NMSV9QQVRIO1xuICBpZiAob3ZlcnJpZGUpIHtcbiAgICBpZiAoIWV4aXN0c1N5bmMob3ZlcnJpZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNIT1BGTE9PUl9DT0RFWF9DTElfUEFUSD0ke292ZXJyaWRlfSBkb2VzIG5vdCBleGlzdGApO1xuICAgIH1cbiAgICBjb3JlLmluZm8oYFVzaW5nIENvZGV4IENMSSBmcm9tIFNIT1BGTE9PUl9DT0RFWF9DTElfUEFUSDogJHtvdmVycmlkZX1gKTtcbiAgICByZXR1cm4gb3ZlcnJpZGU7XG4gIH1cblxuICBjb25zdCBvblBhdGggPSB3aGljaENvZGV4KCk7XG4gIGlmIChvblBhdGgpIHtcbiAgICBjb3JlLmluZm8oYFVzaW5nIENvZGV4IENMSSBvbiBQQVRIOiAke29uUGF0aH1gKTtcbiAgICByZXR1cm4gb25QYXRoO1xuICB9XG5cbiAgcmV0dXJuIGluc3RhbGxDb2RleENsaSgpO1xufVxuXG5mdW5jdGlvbiB3aGljaENvZGV4KCk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJzaFwiLCBbXCItY1wiLCBcImNvbW1hbmQgLXYgY29kZXhcIl0sIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pO1xuICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHBhdGggPSByZXN1bHQuc3Rkb3V0LnNwbGl0KC9cXHI/XFxuLylbMF0/LnRyaW0oKTtcbiAgcmV0dXJuIHBhdGggJiYgZXhpc3RzU3luYyhwYXRoKSA/IHBhdGggOiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQ29kZXhDbGkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29yZS5pbmZvKFxuICAgIGBDb2RleCBDTEkgbm90IGZvdW5kIG9uIFBBVEguIEluc3RhbGxpbmcgQG9wZW5haS9jb2RleEAke0NMSV9WRVJTSU9OfSBnbG9iYWxseSB2aWEgbnBtLmAsXG4gICk7XG5cbiAgcmV0dXJuIHJldHJ5V2l0aEJhY2tvZmYoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcnVuQ2FwdHVyaW5nKFxuICAgICAgICBcIm5wbVwiLFxuICAgICAgICBbXCJpbnN0YWxsXCIsIFwiLWdcIiwgYEBvcGVuYWkvY29kZXhAJHtDTElfVkVSU0lPTn1gXSxcbiAgICAgICAgXCJDb2RleCBDTEkgaW5zdGFsbGVyXCIsXG4gICAgICApO1xuICAgICAgY29uc3Qgb25QYXRoID0gd2hpY2hDb2RleCgpO1xuICAgICAgaWYgKG9uUGF0aCkge1xuICAgICAgICBjb3JlLmluZm8oYEluc3RhbGxlZCBDb2RleCBDTEkgcmVzb2x2ZWQgdmlhIFBBVEg6ICR7b25QYXRofWApO1xuICAgICAgICByZXR1cm4gb25QYXRoO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvZGV4IENMSSBpbnN0YWxsZXIgc3VjY2VlZGVkIGJ1dCBubyBgY29kZXhgIGJpbmFyeSB3YXMgZm91bmQgb24gUEFUSFwiLFxuICAgICAgKTtcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dGVtcHRzOiBJTlNUQUxMX0FUVEVNUFRTLFxuICAgICAgYmFzZURlbGF5TXM6IElOU1RBTExfUkVUUllfQkFTRV9ERUxBWV9NUyxcbiAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT5cbiAgICAgICAgY29yZS53YXJuaW5nKFxuICAgICAgICAgIGBDb2RleCBDTEkgaW5zdGFsbCBhdHRlbXB0ICR7YXR0ZW1wdH0vJHtJTlNUQUxMX0FUVEVNUFRTfSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX0uIFJldHJ5aW5nLi4uYCxcbiAgICAgICAgKSxcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHJhbmRvbUJ5dGVzLCByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQge1xuICBjcmVhdGVTZXJ2ZXIsXG4gIHR5cGUgSW5jb21pbmdNZXNzYWdlLFxuICB0eXBlIFNlcnZlcixcbiAgdHlwZSBTZXJ2ZXJSZXNwb25zZSxcbn0gZnJvbSBcIm5vZGU6aHR0cFwiO1xuaW1wb3J0IHR5cGUgeyBBZGRyZXNzSW5mbyB9IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0IHsgTWNwU2VydmVyIH0gZnJvbSBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL21jcC5qc1wiO1xuaW1wb3J0IHsgU3RyZWFtYWJsZUhUVFBTZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tIFwiQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RyZWFtYWJsZUh0dHAuanNcIjtcbmltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi90b29scy90eXBlcy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xCcmlkZ2Uge1xuICAvKiogRnVsbCBNQ1AgZW5kcG9pbnQgVVJMLCBlLmcuIGh0dHA6Ly8xMjcuMC4wLjE6PHBvcnQ+L21jcCAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIFJhbmRvbSBwZXItcnVuIGJlYXJlciB0b2tlbiBndWFyZGluZyB0aGUgZW5kcG9pbnQuICovXG4gIHRva2VuOiBzdHJpbmc7XG4gIC8qKiBTaHV0IHRoZSBsaXN0ZW5lciBhbmQgTUNQIHRyYW5zcG9ydCBkb3duLiAqL1xuICBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5jb25zdCBFTkRQT0lOVF9QQVRIID0gXCIvbWNwXCI7XG5cbi8vIEV4cG9zZXMgU2hvcGZsb29yJ3MgbmV1dHJhbCBTZGtUb29sW10gdG8gdGhlIENvZGV4IENMSSBzdWJwcm9jZXNzIGFzIGEgcmVhbFxuLy8gTUNQIHNlcnZlciBvdmVyIFN0cmVhbWFibGUgSFRUUCwgYm91bmQgdG8gbG9vcGJhY2sgb24gYW4gZXBoZW1lcmFsIHBvcnQgYW5kXG4vLyBndWFyZGVkIGJ5IGEgcmFuZG9tIGJlYXJlciB0b2tlbi4gVGhlIHRvb2wgaGFuZGxlcnMgcnVuIGluLXByb2Nlc3MgYWdhaW5zdFxuLy8gdGhlIHNhbWUgbGl2ZSBPY3Rva2l0IHRoZSByZXN0IG9mIHRoZSBhY3Rpb24gdXNlcyBcdTIwMTQgbm8gc2Vjb25kIEdpdEh1YlxuLy8gY3JlZGVudGlhbCBhbmQgbm8gc2VwYXJhdGUgc3VicHJvY2VzcyBlbnRyeSBtb2RlLlxuLy9cbi8vIEEgc2luZ2xlIGxvbmctbGl2ZWQgc2VydmVyK3RyYW5zcG9ydCBwYWlyIGluIHN0YXRlZnVsIG1vZGU6IHRoZSB0cmFuc3BvcnRcbi8vIGlzc3VlcyBhbiBNY3AtU2Vzc2lvbi1JZCBvbiB0aGUgaW5pdGlhbGl6ZSByZXNwb25zZSBhbmQgdGhlIGNsaWVudCBlY2hvZXMgaXRcbi8vIG9uIGV2ZXJ5IHN1YnNlcXVlbnQgcmVxdWVzdCwgc28gdGhlIGluaXRpYWxpemUgaGFuZHNoYWtlIHBlcnNpc3RzIGFjcm9zcyB0aGVcbi8vIGltcGxlbWVudC1zdGFnZSBDb2RleCBydW4uIChTdGF0ZWxlc3MgbW9kZSBpcyBub3QgYW4gb3B0aW9uIGhlcmUgXHUyMDE0IHRoZVxuLy8gdHJhbnNwb3J0IHJlZnVzZXMgbW9yZSB0aGFuIG9uZSByZXF1ZXN0IHBlciBpbnN0YW5jZSwgZXhwZWN0aW5nIGEgZnJlc2hcbi8vIHRyYW5zcG9ydCBwZXIgY2FsbCwgd2hpY2ggd291bGQgbG9zZSB0aGUgaGFuZHNoYWtlIGEgcGVyc2lzdGVudCBjbGllbnRcbi8vIHJlbGllcyBvbi4pIGVuYWJsZUpzb25SZXNwb25zZSBrZWVwcyBlYWNoIHRvb2wgY2FsbCBhIHBsYWluIHJlcXVlc3QvcmVzcG9uc2Vcbi8vIHJhdGhlciB0aGFuIGFuIFNTRSBzdHJlYW0uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRUb29sQnJpZGdlKHRvb2xzOiBTZGtUb29sW10pOiBQcm9taXNlPFRvb2xCcmlkZ2U+IHtcbiAgY29uc3QgdG9rZW4gPSByYW5kb21CeXRlcygzMikudG9TdHJpbmcoXCJoZXhcIik7XG5cbiAgY29uc3QgbWNwU2VydmVyID0gbmV3IE1jcFNlcnZlcih7IG5hbWU6IFwic2hvcGZsb29yXCIsIHZlcnNpb246IFwiMi4wLjBcIiB9KTtcbiAgZm9yIChjb25zdCB0IG9mIHRvb2xzKSB7XG4gICAgbWNwU2VydmVyLnJlZ2lzdGVyVG9vbChcbiAgICAgIHQubmFtZSxcbiAgICAgIHsgZGVzY3JpcHRpb246IHQuZGVzY3JpcHRpb24sIGlucHV0U2NoZW1hOiB0LmlucHV0U2NoZW1hIH0sXG4gICAgICAvLyByZWdpc3RlclRvb2wgcGFzc2VzIHZhbGlkYXRlZCBhcmdzIChtYXRjaGluZyBpbnB1dFNjaGVtYSkgcGx1cyBhblxuICAgICAgLy8gYGV4dHJhYCBhcmcgd2UgaWdub3JlLiBUaGUgbmV1dHJhbCBoYW5kbGVyIHJldHVybnMgdGhlIHNhbWVcbiAgICAgIC8vIHsgY29udGVudCwgaXNFcnJvciB9IHNoYXBlIE1DUCBleHBlY3RzIGZvciBhIHRvb2wgcmVzdWx0LlxuICAgICAgKGFzeW5jIChhcmdzOiB1bmtub3duKSA9PiB0LmhhbmRsZXIoYXJncykpIGFzIG5ldmVyLFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RyZWFtYWJsZUhUVFBTZXJ2ZXJUcmFuc3BvcnQoe1xuICAgIHNlc3Npb25JZEdlbmVyYXRvcjogKCkgPT4gcmFuZG9tVVVJRCgpLFxuICAgIGVuYWJsZUpzb25SZXNwb25zZTogdHJ1ZSxcbiAgfSk7XG4gIC8vIFRoZSBTREsncyB0cmFuc3BvcnQgY2xhc3MgdHlwZXMgYG9uY2xvc2VgIGFzIG5vbi1vcHRpb25hbCB3aGlsZSB0aGVcbiAgLy8gVHJhbnNwb3J0IGludGVyZmFjZSBtYXJrcyBpdCBvcHRpb25hbDsgdW5kZXIgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNcbiAgLy8gdGhhdCByZWFkIGFzIGluY29tcGF0aWJsZS4gVGhlIGluc3RhbmNlIGlzIGEgdmFsaWQgVHJhbnNwb3J0IGF0IHJ1bnRpbWUuXG4gIGF3YWl0IG1jcFNlcnZlci5jb25uZWN0KFxuICAgIHRyYW5zcG9ydCBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8dHlwZW9mIG1jcFNlcnZlci5jb25uZWN0PlswXSxcbiAgKTtcblxuICBjb25zdCBodHRwU2VydmVyOiBTZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIoXG4gICAgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICB2b2lkIGhhbmRsZShyZXEsIHJlcywgdHJhbnNwb3J0LCB0b2tlbik7XG4gICAgfSxcbiAgKTtcblxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaHR0cFNlcnZlci5vbmNlKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBodHRwU2VydmVyLmxpc3RlbigwLCBcIjEyNy4wLjAuMVwiLCAoKSA9PiB7XG4gICAgICBodHRwU2VydmVyLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWRkciA9IGh0dHBTZXJ2ZXIuYWRkcmVzcygpIGFzIEFkZHJlc3NJbmZvO1xuICBjb25zdCB1cmwgPSBgaHR0cDovLzEyNy4wLjAuMToke2FkZHIucG9ydH0ke0VORFBPSU5UX1BBVEh9YDtcblxuICByZXR1cm4ge1xuICAgIHVybCxcbiAgICB0b2tlbixcbiAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgIGF3YWl0IHRyYW5zcG9ydC5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIGF3YWl0IG1jcFNlcnZlci5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIC8vIGh0dHBTZXJ2ZXIuY2xvc2UoKSdzIGNhbGxiYWNrIG9ubHkgZmlyZXMgb25jZSBldmVyeSBjb25uZWN0aW9uIGhhc1xuICAgICAgLy8gZHJhaW5lZCwgYW5kIFNlcnZlci5jbG9zZSgpIGRvZXMgbm90IHRlcm1pbmF0ZSBpZGxlIGtlZXAtYWxpdmVcbiAgICAgIC8vIHNvY2tldHMuIFRoZSBDb2RleCBNQ1AgY2xpZW50IGhvbGRzIGEgcGVyc2lzdGVudCBrZWVwLWFsaXZlIHNvY2tldCBmb3JcbiAgICAgIC8vIHRoZSBzdGF0ZWZ1bCBzZXNzaW9uLCBzbyB3aXRob3V0IGZvcmNpYmx5IGRlc3Ryb3lpbmcgbGl2ZSBjb25uZWN0aW9uc1xuICAgICAgLy8gdGhpcyBhd2FpdCB3b3VsZCBoYW5nIGluZGVmaW5pdGVseSAod2VkZ2luZyB0aGUgc3RhZ2UgaW4gaXRzIGZpbmFsbHkpLlxuICAgICAgaHR0cFNlcnZlci5jbG9zZUFsbENvbm5lY3Rpb25zKCk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gaHR0cFNlcnZlci5jbG9zZSgoKSA9PiByZXNvbHZlKCkpKTtcbiAgICB9LFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGUoXG4gIHJlcTogSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFNlcnZlclJlc3BvbnNlLFxuICB0cmFuc3BvcnQ6IFN0cmVhbWFibGVIVFRQU2VydmVyVHJhbnNwb3J0LFxuICB0b2tlbjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaGFzVmFsaWRCZWFyZXIocmVxLCB0b2tlbikpIHtcbiAgICByZXMud3JpdGVIZWFkKDQwMSwgeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KTtcbiAgICByZXMuZW5kKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxuICAgICAgICBlcnJvcjogeyBjb2RlOiAtMzIwMDEsIG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSxcbiAgICAgICAgaWQ6IG51bGwsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRKc29uQm9keShyZXEpO1xuICAgIGF3YWl0IHRyYW5zcG9ydC5oYW5kbGVSZXF1ZXN0KHJlcSwgcmVzLCBib2R5KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgIHJlcy53cml0ZUhlYWQoNTAwLCB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pO1xuICAgICAgcmVzLmVuZChcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGpzb25ycGM6IFwiMi4wXCIsXG4gICAgICAgICAgZXJyb3I6IHsgY29kZTogLTMyNjAzLCBtZXNzYWdlOiBTdHJpbmcoZXJyKSB9LFxuICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkQmVhcmVyKHJlcTogSW5jb21pbmdNZXNzYWdlLCB0b2tlbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGhlYWRlciA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb247XG4gIGlmICghaGVhZGVyKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHByZWZpeCA9IFwiQmVhcmVyIFwiO1xuICBpZiAoIWhlYWRlci5zdGFydHNXaXRoKHByZWZpeCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGhlYWRlci5zbGljZShwcmVmaXgubGVuZ3RoKSA9PT0gdG9rZW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRKc29uQm9keShyZXE6IEluY29taW5nTWVzc2FnZSk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcmVxKSB7XG4gICAgY2h1bmtzLnB1c2goY2h1bmsgYXMgQnVmZmVyKTtcbiAgfVxuICBpZiAoY2h1bmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgcmF3ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKFwidXRmOFwiKTtcbiAgaWYgKCFyYXcpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBKU09OLnBhcnNlKHJhdyk7XG59XG4iLCAiLyoqIEEgc3BlY2lhbCBjb25zdGFudCB3aXRoIHR5cGUgYG5ldmVyYCAqL1xuZXhwb3J0IGNvbnN0IE5FVkVSID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgc3RhdHVzOiBcImFib3J0ZWRcIixcbn0pO1xuZXhwb3J0IC8qQF9fTk9fU0lERV9FRkZFQ1RTX18qLyBmdW5jdGlvbiAkY29uc3RydWN0b3IobmFtZSwgaW5pdGlhbGl6ZXIsIHBhcmFtcykge1xuICAgIGZ1bmN0aW9uIGluaXQoaW5zdCwgZGVmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiX3pvZFwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogaW5zdC5fem9kID8/IHt9LFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICAoX2EgPSBpbnN0Ll96b2QpLnRyYWl0cyA/PyAoX2EudHJhaXRzID0gbmV3IFNldCgpKTtcbiAgICAgICAgaW5zdC5fem9kLnRyYWl0cy5hZGQobmFtZSk7XG4gICAgICAgIGluaXRpYWxpemVyKGluc3QsIGRlZik7XG4gICAgICAgIC8vIHN1cHBvcnQgcHJvdG90eXBlIG1vZGlmaWNhdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBrIGluIF8ucHJvdG90eXBlKSB7XG4gICAgICAgICAgICBpZiAoIShrIGluIGluc3QpKVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBrLCB7IHZhbHVlOiBfLnByb3RvdHlwZVtrXS5iaW5kKGluc3QpIH0pO1xuICAgICAgICB9XG4gICAgICAgIGluc3QuX3pvZC5jb25zdHIgPSBfO1xuICAgICAgICBpbnN0Ll96b2QuZGVmID0gZGVmO1xuICAgIH1cbiAgICAvLyBkb2Vzbid0IHdvcmsgaWYgUGFyZW50IGhhcyBhIGNvbnN0cnVjdG9yIHdpdGggYXJndW1lbnRzXG4gICAgY29uc3QgUGFyZW50ID0gcGFyYW1zPy5QYXJlbnQgPz8gT2JqZWN0O1xuICAgIGNsYXNzIERlZmluaXRpb24gZXh0ZW5kcyBQYXJlbnQge1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGVmaW5pdGlvbiwgXCJuYW1lXCIsIHsgdmFsdWU6IG5hbWUgfSk7XG4gICAgZnVuY3Rpb24gXyhkZWYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnN0ID0gcGFyYW1zPy5QYXJlbnQgPyBuZXcgRGVmaW5pdGlvbigpIDogdGhpcztcbiAgICAgICAgaW5pdChpbnN0LCBkZWYpO1xuICAgICAgICAoX2EgPSBpbnN0Ll96b2QpLmRlZmVycmVkID8/IChfYS5kZWZlcnJlZCA9IFtdKTtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBpbnN0Ll96b2QuZGVmZXJyZWQpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfLCBcImluaXRcIiwgeyB2YWx1ZTogaW5pdCB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXywgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgICAgIHZhbHVlOiAoaW5zdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmFtcz8uUGFyZW50ICYmIGluc3QgaW5zdGFuY2VvZiBwYXJhbXMuUGFyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGluc3Q/Ll96b2Q/LnRyYWl0cz8uaGFzKG5hbWUpO1xuICAgICAgICB9LFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfLCBcIm5hbWVcIiwgeyB2YWx1ZTogbmFtZSB9KTtcbiAgICByZXR1cm4gXztcbn1cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgIFVUSUxJVElFUyAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGNvbnN0ICRicmFuZCA9IFN5bWJvbChcInpvZF9icmFuZFwiKTtcbmV4cG9ydCBjbGFzcyAkWm9kQXN5bmNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoYEVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLmApO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBnbG9iYWxDb25maWcgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBjb25maWcobmV3Q29uZmlnKSB7XG4gICAgaWYgKG5ld0NvbmZpZylcbiAgICAgICAgT2JqZWN0LmFzc2lnbihnbG9iYWxDb25maWcsIG5ld0NvbmZpZyk7XG4gICAgcmV0dXJuIGdsb2JhbENvbmZpZztcbn1cbiIsICIvLyBmdW5jdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbCh2YWwpIHtcbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsKHZhbCkge1xuICAgIHJldHVybiB2YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXMoX2FyZykgeyB9XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoXykgeyB9XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bVZhbHVlcyhlbnRyaWVzKSB7XG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlcyA9IE9iamVjdC52YWx1ZXMoZW50cmllcykuZmlsdGVyKCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIik7XG4gICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmVudHJpZXMoZW50cmllcylcbiAgICAgICAgLmZpbHRlcigoW2ssIF9dKSA9PiBudW1lcmljVmFsdWVzLmluZGV4T2YoK2spID09PSAtMSlcbiAgICAgICAgLm1hcCgoW18sIHZdKSA9PiB2KTtcbiAgICByZXR1cm4gdmFsdWVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGpvaW5WYWx1ZXMoYXJyYXksIHNlcGFyYXRvciA9IFwifFwiKSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgodmFsKSA9PiBzdHJpbmdpZnlQcmltaXRpdmUodmFsKSkuam9pbihzZXBhcmF0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGpzb25TdHJpbmdpZnlSZXBsYWNlcihfLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZWQoZ2V0dGVyKSB7XG4gICAgY29uc3Qgc2V0ID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgaWYgKCFzZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldHRlcigpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInZhbHVlXCIsIHsgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FjaGVkIHZhbHVlIGFscmVhZHkgc2V0XCIpO1xuICAgICAgICB9LFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gbnVsbGlzaChpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dCA9PT0gbnVsbCB8fCBpbnB1dCA9PT0gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuUmVnZXgoc291cmNlKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBzb3VyY2Uuc3RhcnRzV2l0aChcIl5cIikgPyAxIDogMDtcbiAgICBjb25zdCBlbmQgPSBzb3VyY2UuZW5kc1dpdGgoXCIkXCIpID8gc291cmNlLmxlbmd0aCAtIDEgOiBzb3VyY2UubGVuZ3RoO1xuICAgIHJldHVybiBzb3VyY2Uuc2xpY2Uoc3RhcnQsIGVuZCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmxvYXRTYWZlUmVtYWluZGVyKHZhbCwgc3RlcCkge1xuICAgIGNvbnN0IHZhbERlY0NvdW50ID0gKHZhbC50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSB8fCBcIlwiKS5sZW5ndGg7XG4gICAgY29uc3Qgc3RlcERlY0NvdW50ID0gKHN0ZXAudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IGRlY0NvdW50ID0gdmFsRGVjQ291bnQgPiBzdGVwRGVjQ291bnQgPyB2YWxEZWNDb3VudCA6IHN0ZXBEZWNDb3VudDtcbiAgICBjb25zdCB2YWxJbnQgPSBOdW1iZXIucGFyc2VJbnQodmFsLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICBjb25zdCBzdGVwSW50ID0gTnVtYmVyLnBhcnNlSW50KHN0ZXAudG9GaXhlZChkZWNDb3VudCkucmVwbGFjZShcIi5cIiwgXCJcIikpO1xuICAgIHJldHVybiAodmFsSW50ICUgc3RlcEludCkgLyAxMCAqKiBkZWNDb3VudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMYXp5KG9iamVjdCwga2V5LCBnZXR0ZXIpIHtcbiAgICBjb25zdCBzZXQgPSBmYWxzZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgaWYgKCFzZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldHRlcigpO1xuICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FjaGVkIHZhbHVlIGFscmVhZHkgc2V0XCIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQodikge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgICAgLy8gY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBvYmplY3Rba2V5XSA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25Qcm9wKHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRBdFBhdGgob2JqLCBwYXRoKSB7XG4gICAgaWYgKCFwYXRoKVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIHJldHVybiBwYXRoLnJlZHVjZSgoYWNjLCBrZXkpID0+IGFjYz8uW2tleV0sIG9iaik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZUFsbE9iamVjdChwcm9taXNlc09iaikge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9taXNlc09iaik7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBrZXlzLm1hcCgoa2V5KSA9PiBwcm9taXNlc09ialtrZXldKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPYmogPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNvbHZlZE9ialtrZXlzW2ldXSA9IHJlc3VsdHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmVkT2JqO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZyhsZW5ndGggPSAxMCkge1xuICAgIGNvbnN0IGNoYXJzID0gXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO1xuICAgIGxldCBzdHIgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3RyICs9IGNoYXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCldO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVzYyhzdHIpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3RyKTtcbn1cbmV4cG9ydCBjb25zdCBjYXB0dXJlU3RhY2tUcmFjZSA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlXG4gICAgPyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICAgIDogKC4uLl9hcmdzKSA9PiB7IH07XG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoZGF0YSkge1xuICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIiAmJiBkYXRhICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGRhdGEpO1xufVxuZXhwb3J0IGNvbnN0IGFsbG93c0V2YWwgPSBjYWNoZWQoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIG5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcyhcIkNsb3VkZmxhcmVcIikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBGID0gRnVuY3Rpb247XG4gICAgICAgIG5ldyBGKFwiXCIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qobykge1xuICAgIGlmIChpc09iamVjdChvKSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBtb2RpZmllZCBjb25zdHJ1Y3RvclxuICAgIGNvbnN0IGN0b3IgPSBvLmNvbnN0cnVjdG9yO1xuICAgIGlmIChjdG9yID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIC8vIG1vZGlmaWVkIHByb3RvdHlwZVxuICAgIGNvbnN0IHByb3QgPSBjdG9yLnByb3RvdHlwZTtcbiAgICBpZiAoaXNPYmplY3QocHJvdCkgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gY3RvciBkb2Vzbid0IGhhdmUgc3RhdGljIGBpc1Byb3RvdHlwZU9mYFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvdCwgXCJpc1Byb3RvdHlwZU9mXCIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG51bUtleXMoZGF0YSkge1xuICAgIGxldCBrZXlDb3VudCA9IDA7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgIGtleUNvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleUNvdW50O1xufVxuZXhwb3J0IGNvbnN0IGdldFBhcnNlZFR5cGUgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHQgPSB0eXBlb2YgZGF0YTtcbiAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCI7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gXCJuYW5cIiA6IFwibnVtYmVyXCI7XG4gICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIjtcbiAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiYmlnaW50XCI7XG4gICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICAgIHJldHVybiBcInN5bWJvbFwiO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImFycmF5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLnRoZW4gJiYgdHlwZW9mIGRhdGEudGhlbiA9PT0gXCJmdW5jdGlvblwiICYmIGRhdGEuY2F0Y2ggJiYgdHlwZW9mIGRhdGEuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInByb21pc2VcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJtYXBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgU2V0ICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzZXRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgRmlsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImZpbGVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIm9iamVjdFwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEgdHlwZTogJHt0fWApO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgcHJvcGVydHlLZXlUeXBlcyA9IG5ldyBTZXQoW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwic3ltYm9sXCJdKTtcbmV4cG9ydCBjb25zdCBwcmltaXRpdmVUeXBlcyA9IG5ldyBTZXQoW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiYmlnaW50XCIsIFwiYm9vbGVhblwiLCBcInN5bWJvbFwiLCBcInVuZGVmaW5lZFwiXSk7XG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXgoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7XG59XG4vLyB6b2Qtc3BlY2lmaWMgdXRpbHNcbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShpbnN0LCBkZWYsIHBhcmFtcykge1xuICAgIGNvbnN0IGNsID0gbmV3IGluc3QuX3pvZC5jb25zdHIoZGVmID8/IGluc3QuX3pvZC5kZWYpO1xuICAgIGlmICghZGVmIHx8IHBhcmFtcz8ucGFyZW50KVxuICAgICAgICBjbC5fem9kLnBhcmVudCA9IGluc3Q7XG4gICAgcmV0dXJuIGNsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKSB7XG4gICAgY29uc3QgcGFyYW1zID0gX3BhcmFtcztcbiAgICBpZiAoIXBhcmFtcylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4geyBlcnJvcjogKCkgPT4gcGFyYW1zIH07XG4gICAgaWYgKHBhcmFtcz8ubWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXJhbXM/LmVycm9yICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXNcIik7XG4gICAgICAgIHBhcmFtcy5lcnJvciA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIH1cbiAgICBkZWxldGUgcGFyYW1zLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiBwYXJhbXMuZXJyb3IgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiB7IC4uLnBhcmFtcywgZXJyb3I6ICgpID0+IHBhcmFtcy5lcnJvciB9O1xuICAgIHJldHVybiBwYXJhbXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNwYXJlbnRQcm94eShnZXR0ZXIpIHtcbiAgICBsZXQgdGFyZ2V0O1xuICAgIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgZ2V0KF8sIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICB0YXJnZXQgPz8gKHRhcmdldCA9IGdldHRlcigpKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KF8sIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBoYXMoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlUHJvcGVydHkoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzKF8pIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVmaW5lUHJvcGVydHkoXywgcHJvcCwgZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3AsIGRlc2NyaXB0b3IpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpICsgXCJuXCI7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIGBcIiR7dmFsdWV9XCJgO1xuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsS2V5cyhzaGFwZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzaGFwZSkuZmlsdGVyKChrKSA9PiB7XG4gICAgICAgIHJldHVybiBzaGFwZVtrXS5fem9kLm9wdGluID09PSBcIm9wdGlvbmFsXCIgJiYgc2hhcGVba10uX3pvZC5vcHRvdXQgPT09IFwib3B0aW9uYWxcIjtcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JBTkdFUyA9IHtcbiAgICBzYWZlaW50OiBbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXSxcbiAgICBpbnQzMjogWy0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3XSxcbiAgICB1aW50MzI6IFswLCA0Mjk0OTY3Mjk1XSxcbiAgICBmbG9hdDMyOiBbLTMuNDAyODIzNDY2Mzg1Mjg4NmUzOCwgMy40MDI4MjM0NjYzODUyODg2ZTM4XSxcbiAgICBmbG9hdDY0OiBbLU51bWJlci5NQVhfVkFMVUUsIE51bWJlci5NQVhfVkFMVUVdLFxufTtcbmV4cG9ydCBjb25zdCBCSUdJTlRfRk9STUFUX1JBTkdFUyA9IHtcbiAgICBpbnQ2NDogWy8qIEBfX1BVUkVfXyovIEJpZ0ludChcIi05MjIzMzcyMDM2ODU0Nzc1ODA4XCIpLCAvKiBAX19QVVJFX18qLyBCaWdJbnQoXCI5MjIzMzcyMDM2ODU0Nzc1ODA3XCIpXSxcbiAgICB1aW50NjQ6IFsvKiBAX19QVVJFX18qLyBCaWdJbnQoMCksIC8qIEBfX1BVUkVfXyovIEJpZ0ludChcIjE4NDQ2NzQ0MDczNzA5NTUxNjE1XCIpXSxcbn07XG5leHBvcnQgZnVuY3Rpb24gcGljayhzY2hlbWEsIG1hc2spIHtcbiAgICBjb25zdCBuZXdTaGFwZSA9IHt9O1xuICAgIGNvbnN0IGN1cnJEZWYgPSBzY2hlbWEuX3pvZC5kZWY7IC8vLnNoYXBlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG1hc2spIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGN1cnJEZWYuc2hhcGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hc2tba2V5XSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAvLyBwaWNrIGtleVxuICAgICAgICBuZXdTaGFwZVtrZXldID0gY3VyckRlZi5zaGFwZVtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmUoc2NoZW1hLCB7XG4gICAgICAgIC4uLnNjaGVtYS5fem9kLmRlZixcbiAgICAgICAgc2hhcGU6IG5ld1NoYXBlLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9taXQoc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3QgbmV3U2hhcGUgPSB7IC4uLnNjaGVtYS5fem9kLmRlZi5zaGFwZSB9O1xuICAgIGNvbnN0IGN1cnJEZWYgPSBzY2hlbWEuX3pvZC5kZWY7IC8vLnNoYXBlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG1hc2spIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGN1cnJEZWYuc2hhcGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hc2tba2V5XSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWxldGUgbmV3U2hhcGVba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIHNoYXBlOiBuZXdTaGFwZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQoc2NoZW1hLCBzaGFwZSkge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChzaGFwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnB1dCB0byBleHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0XCIpO1xuICAgIH1cbiAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgIC4uLnNjaGVtYS5fem9kLmRlZixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NoYXBlID0geyAuLi5zY2hlbWEuX3pvZC5kZWYuc2hhcGUsIC4uLnNoYXBlIH07XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgX3NoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gX3NoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjaGVja3M6IFtdLCAvLyBkZWxldGUgZXhpc3RpbmcgY2hlY2tzXG4gICAgfTtcbiAgICByZXR1cm4gY2xvbmUoc2NoZW1hLCBkZWYpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgICByZXR1cm4gY2xvbmUoYSwge1xuICAgICAgICAuLi5hLl96b2QuZGVmLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICBjb25zdCBfc2hhcGUgPSB7IC4uLmEuX3pvZC5kZWYuc2hhcGUsIC4uLmIuX3pvZC5kZWYuc2hhcGUgfTtcbiAgICAgICAgICAgIGFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCBfc2hhcGUpOyAvLyBzZWxmLWNhY2hpbmdcbiAgICAgICAgICAgIHJldHVybiBfc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNhdGNoYWxsOiBiLl96b2QuZGVmLmNhdGNoYWxsLFxuICAgICAgICBjaGVja3M6IFtdLCAvLyBkZWxldGUgZXhpc3RpbmcgY2hlY2tzXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFydGlhbChDbGFzcywgc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3Qgb2xkU2hhcGUgPSBzY2hlbWEuX3pvZC5kZWYuc2hhcGU7XG4gICAgY29uc3Qgc2hhcGUgPSB7IC4uLm9sZFNoYXBlIH07XG4gICAgaWYgKG1hc2spIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFzaykge1xuICAgICAgICAgICAgaWYgKCEoa2V5IGluIG9sZFNoYXBlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke2tleX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBpZiAob2xkU2hhcGVba2V5XSEuX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSBjb250aW51ZTtcbiAgICAgICAgICAgIHNoYXBlW2tleV0gPSBDbGFzc1xuICAgICAgICAgICAgICAgID8gbmV3IENsYXNzKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICBpbm5lclR5cGU6IG9sZFNoYXBlW2tleV0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IG9sZFNoYXBlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9sZFNoYXBlKSB7XG4gICAgICAgICAgICAvLyBpZiAob2xkU2hhcGVba2V5XSEuX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSBjb250aW51ZTtcbiAgICAgICAgICAgIHNoYXBlW2tleV0gPSBDbGFzc1xuICAgICAgICAgICAgICAgID8gbmV3IENsYXNzKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICBpbm5lclR5cGU6IG9sZFNoYXBlW2tleV0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IG9sZFNoYXBlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKENsYXNzLCBzY2hlbWEsIG1hc2spIHtcbiAgICBjb25zdCBvbGRTaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICBjb25zdCBzaGFwZSA9IHsgLi4ub2xkU2hhcGUgfTtcbiAgICBpZiAobWFzaykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgICAgICBpZiAoIShrZXkgaW4gc2hhcGUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7a2V5fVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hc2tba2V5XSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIG92ZXJ3cml0ZSB3aXRoIG5vbi1vcHRpb25hbFxuICAgICAgICAgICAgc2hhcGVba2V5XSA9IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIGlubmVyVHlwZTogb2xkU2hhcGVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRTaGFwZSkge1xuICAgICAgICAgICAgLy8gb3ZlcndyaXRlIHdpdGggbm9uLW9wdGlvbmFsXG4gICAgICAgICAgICBzaGFwZVtrZXldID0gbmV3IENsYXNzKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICAvLyBvcHRpb25hbDogW10sXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYWJvcnRlZCh4LCBzdGFydEluZGV4ID0gMCkge1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgeC5pc3N1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHguaXNzdWVzW2ldPy5jb250aW51ZSAhPT0gdHJ1ZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJlZml4SXNzdWVzKHBhdGgsIGlzc3Vlcykge1xuICAgIHJldHVybiBpc3N1ZXMubWFwKChpc3MpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBpc3MpLnBhdGggPz8gKF9hLnBhdGggPSBbXSk7XG4gICAgICAgIGlzcy5wYXRoLnVuc2hpZnQocGF0aCk7XG4gICAgICAgIHJldHVybiBpc3M7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTWVzc2FnZShtZXNzYWdlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59XG5leHBvcnQgZnVuY3Rpb24gZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29uZmlnKSB7XG4gICAgY29uc3QgZnVsbCA9IHsgLi4uaXNzLCBwYXRoOiBpc3MucGF0aCA/PyBbXSB9O1xuICAgIC8vIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIGlmICghaXNzLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHVud3JhcE1lc3NhZ2UoaXNzLmluc3Q/Ll96b2QuZGVmPy5lcnJvcj8uKGlzcykpID8/XG4gICAgICAgICAgICB1bndyYXBNZXNzYWdlKGN0eD8uZXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgdW53cmFwTWVzc2FnZShjb25maWcuY3VzdG9tRXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgdW53cmFwTWVzc2FnZShjb25maWcubG9jYWxlRXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgXCJJbnZhbGlkIGlucHV0XCI7XG4gICAgICAgIGZ1bGwubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgfVxuICAgIC8vIGRlbGV0ZSAoZnVsbCBhcyBhbnkpLmRlZjtcbiAgICBkZWxldGUgZnVsbC5pbnN0O1xuICAgIGRlbGV0ZSBmdWxsLmNvbnRpbnVlO1xuICAgIGlmICghY3R4Py5yZXBvcnRJbnB1dCkge1xuICAgICAgICBkZWxldGUgZnVsbC5pbnB1dDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2l6YWJsZU9yaWdpbihpbnB1dCkge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFNldClcbiAgICAgICAgcmV0dXJuIFwic2V0XCI7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgTWFwKVxuICAgICAgICByZXR1cm4gXCJtYXBcIjtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBGaWxlKVxuICAgICAgICByZXR1cm4gXCJmaWxlXCI7XG4gICAgcmV0dXJuIFwidW5rbm93blwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExlbmd0aGFibGVPcmlnaW4oaW5wdXQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpXG4gICAgICAgIHJldHVybiBcImFycmF5XCI7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgcmV0dXJuIFwidW5rbm93blwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzc3VlKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbaXNzLCBpbnB1dCwgaW5zdF0gPSBhcmdzO1xuICAgIGlmICh0eXBlb2YgaXNzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtZXNzYWdlOiBpc3MsXG4gICAgICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5pc3MgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkVudW0ob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcbiAgICAgICAgLmZpbHRlcigoW2ssIF9dKSA9PiB7XG4gICAgICAgIC8vIHJldHVybiB0cnVlIGlmIE5hTiwgbWVhbmluZyBpdCdzIG5vdCBhIG51bWJlciwgdGh1cyBhIHN0cmluZyBrZXlcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIucGFyc2VJbnQoaywgMTApKTtcbiAgICB9KVxuICAgICAgICAubWFwKChlbCkgPT4gZWxbMV0pO1xufVxuLy8gaW5zdGFuY2VvZlxuZXhwb3J0IGNsYXNzIENsYXNzIHtcbiAgICBjb25zdHJ1Y3RvciguLi5fYXJncykgeyB9XG59XG4iLCAiaW1wb3J0IHsgJGNvbnN0cnVjdG9yIH0gZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5jb25zdCBpbml0aWFsaXplciA9IChpbnN0LCBkZWYpID0+IHtcbiAgICBpbnN0Lm5hbWUgPSBcIiRab2RFcnJvclwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIl96b2RcIiwge1xuICAgICAgICB2YWx1ZTogaW5zdC5fem9kLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJpc3N1ZXNcIiwge1xuICAgICAgICB2YWx1ZTogZGVmLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJtZXNzYWdlXCIsIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZiwgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIsIDIpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAvLyBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcInRvU3RyaW5nXCIsIHtcbiAgICAgICAgdmFsdWU6ICgpID0+IGluc3QubWVzc2FnZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgfSk7XG59O1xuZXhwb3J0IGNvbnN0ICRab2RFcnJvciA9ICRjb25zdHJ1Y3RvcihcIiRab2RFcnJvclwiLCBpbml0aWFsaXplcik7XG5leHBvcnQgY29uc3QgJFpvZFJlYWxFcnJvciA9ICRjb25zdHJ1Y3RvcihcIiRab2RFcnJvclwiLCBpbml0aWFsaXplciwgeyBQYXJlbnQ6IEVycm9yIH0pO1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5FcnJvcihlcnJvciwgbWFwcGVyID0gKGlzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlKSB7XG4gICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICBjb25zdCBmb3JtRXJyb3JzID0gW107XG4gICAgZm9yIChjb25zdCBzdWIgb2YgZXJyb3IuaXNzdWVzKSB7XG4gICAgICAgIGlmIChzdWIucGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaWVsZEVycm9yc1tzdWIucGF0aFswXV0gPSBmaWVsZEVycm9yc1tzdWIucGF0aFswXV0gfHwgW107XG4gICAgICAgICAgICBmaWVsZEVycm9yc1tzdWIucGF0aFswXV0ucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3JtRXJyb3JzLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZvcm1FcnJvcnMsIGZpZWxkRXJyb3JzIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXJyb3IsIF9tYXBwZXIpIHtcbiAgICBjb25zdCBtYXBwZXIgPSBfbWFwcGVyIHx8XG4gICAgICAgIGZ1bmN0aW9uIChpc3N1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzc3VlLm1lc3NhZ2U7XG4gICAgICAgIH07XG4gICAgY29uc3QgZmllbGRFcnJvcnMgPSB7IF9lcnJvcnM6IFtdIH07XG4gICAgY29uc3QgcHJvY2Vzc0Vycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaXNzdWUgb2YgZXJyb3IuaXNzdWVzKSB7XG4gICAgICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3VuaW9uXCIgJiYgaXNzdWUuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlzc3VlLmVycm9ycy5tYXAoKGlzc3VlcykgPT4gcHJvY2Vzc0Vycm9yKHsgaXNzdWVzIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9rZXlcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2VsZW1lbnRcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUucGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmaWVsZEVycm9ycy5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VyciA9IGZpZWxkRXJyb3JzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGlzc3VlLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gaXNzdWUucGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWwgPSBpID09PSBpc3N1ZS5wYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVybWluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXS5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwcm9jZXNzRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBmaWVsZEVycm9ycztcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlaWZ5RXJyb3IoZXJyb3IsIF9tYXBwZXIpIHtcbiAgICBjb25zdCBtYXBwZXIgPSBfbWFwcGVyIHx8XG4gICAgICAgIGZ1bmN0aW9uIChpc3N1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzc3VlLm1lc3NhZ2U7XG4gICAgICAgIH07XG4gICAgY29uc3QgcmVzdWx0ID0geyBlcnJvcnM6IFtdIH07XG4gICAgY29uc3QgcHJvY2Vzc0Vycm9yID0gKGVycm9yLCBwYXRoID0gW10pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfdW5pb25cIiAmJiBpc3N1ZS5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVndWxhciB1bmlvbiBlcnJvclxuICAgICAgICAgICAgICAgIGlzc3VlLmVycm9ycy5tYXAoKGlzc3VlcykgPT4gcHJvY2Vzc0Vycm9yKHsgaXNzdWVzIH0sIGlzc3VlLnBhdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9rZXlcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0sIGlzc3VlLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2VsZW1lbnRcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0sIGlzc3VlLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbHBhdGggPSBbLi4ucGF0aCwgLi4uaXNzdWUucGF0aF07XG4gICAgICAgICAgICAgICAgaWYgKGZ1bGxwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgY3VyciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBmdWxscGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBmdWxscGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWwgPSBpID09PSBmdWxscGF0aC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyLnByb3BlcnRpZXMgPz8gKGN1cnIucHJvcGVydGllcyA9IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IGN1cnIucHJvcGVydGllcylbZWxdID8/IChfYVtlbF0gPSB7IGVycm9yczogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci5wcm9wZXJ0aWVzW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIuaXRlbXMgPz8gKGN1cnIuaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSBjdXJyLml0ZW1zKVtlbF0gPz8gKF9iW2VsXSA9IHsgZXJyb3JzOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLml0ZW1zW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIuZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcHJvY2Vzc0Vycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqIEZvcm1hdCBhIFpvZEVycm9yIGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIGluIHRoZSBmb2xsb3dpbmcgZm9ybS5cbiAqXG4gKiBGcm9tXG4gKlxuICogYGBgdHNcbiAqIFpvZEVycm9yIHtcbiAqICAgaXNzdWVzOiBbXG4gKiAgICAge1xuICogICAgICAgZXhwZWN0ZWQ6ICdzdHJpbmcnLFxuICogICAgICAgY29kZTogJ2ludmFsaWRfdHlwZScsXG4gKiAgICAgICBwYXRoOiBbICd1c2VybmFtZScgXSxcbiAqICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGlucHV0OiBleHBlY3RlZCBzdHJpbmcnXG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBleHBlY3RlZDogJ251bWJlcicsXG4gKiAgICAgICBjb2RlOiAnaW52YWxpZF90eXBlJyxcbiAqICAgICAgIHBhdGg6IFsgJ2Zhdm9yaXRlTnVtYmVycycsIDEgXSxcbiAqICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGlucHV0OiBleHBlY3RlZCBudW1iZXInXG4gKiAgICAgfVxuICogICBdO1xuICogfVxuICogYGBgXG4gKlxuICogdG9cbiAqXG4gKiBgYGBcbiAqIHVzZXJuYW1lXG4gKiAgIFx1MjcxNiBFeHBlY3RlZCBudW1iZXIsIHJlY2VpdmVkIHN0cmluZyBhdCBcInVzZXJuYW1lXG4gKiBmYXZvcml0ZU51bWJlcnNbMF1cbiAqICAgXHUyNzE2IEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIG51bWJlclxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RvdFBhdGgocGF0aCkge1xuICAgIGNvbnN0IHNlZ3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHNlZyBvZiBwYXRoKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VnID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtzZWd9XWApO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygc2VnID09PSBcInN5bWJvbFwiKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcoc2VnKSl9XWApO1xuICAgICAgICBlbHNlIGlmICgvW15cXHckXS8udGVzdChzZWcpKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShzZWcpfV1gKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2Vncy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgc2Vncy5wdXNoKFwiLlwiKTtcbiAgICAgICAgICAgIHNlZ3MucHVzaChzZWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWdzLmpvaW4oXCJcIik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJldHRpZnlFcnJvcihlcnJvcikge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgLy8gc29ydCBieSBwYXRoIGxlbmd0aFxuICAgIGNvbnN0IGlzc3VlcyA9IFsuLi5lcnJvci5pc3N1ZXNdLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sZW5ndGggLSBiLnBhdGgubGVuZ3RoKTtcbiAgICAvLyBQcm9jZXNzIGVhY2ggaXNzdWVcbiAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGlzc3Vlcykge1xuICAgICAgICBsaW5lcy5wdXNoKGBcdTI3MTYgJHtpc3N1ZS5tZXNzYWdlfWApO1xuICAgICAgICBpZiAoaXNzdWUucGF0aD8ubGVuZ3RoKVxuICAgICAgICAgICAgbGluZXMucHVzaChgICBcdTIxOTIgYXQgJHt0b0RvdFBhdGgoaXNzdWUucGF0aCl9YCk7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgTWFwIHRvIGZvcm1hdHRlZCBzdHJpbmdcbiAgICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCAqIGFzIGVycm9ycyBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0IF9wYXJzZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCwgX3BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyBPYmplY3QuYXNzaWduKF9jdHgsIHsgYXN5bmM6IGZhbHNlIH0pIDogeyBhc3luYzogZmFsc2UgfTtcbiAgICBjb25zdCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RBc3luY0Vycm9yKCk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBlID0gbmV3IChfcGFyYW1zPy5FcnIgPz8gX0VycikocmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSkpO1xuICAgICAgICB1dGlsLmNhcHR1cmVTdGFja1RyYWNlKGUsIF9wYXJhbXM/LmNhbGxlZSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gLyogQF9fUFVSRV9fKi8gX3BhcnNlKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfcGFyc2VBc3luYyA9IChfRXJyKSA9PiBhc3luYyAoc2NoZW1hLCB2YWx1ZSwgX2N0eCwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/IE9iamVjdC5hc3NpZ24oX2N0eCwgeyBhc3luYzogdHJ1ZSB9KSA6IHsgYXN5bmM6IHRydWUgfTtcbiAgICBsZXQgcmVzdWx0ID0gc2NoZW1hLl96b2QucnVuKHsgdmFsdWUsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0O1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBlID0gbmV3IChwYXJhbXM/LkVyciA/PyBfRXJyKShyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSk7XG4gICAgICAgIHV0aWwuY2FwdHVyZVN0YWNrVHJhY2UoZSwgcGFyYW1zPy5jYWxsZWUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xufTtcbmV4cG9ydCBjb25zdCBwYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fKi8gX3BhcnNlQXN5bmMoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9zYWZlUGFyc2UgPSAoX0VycikgPT4gKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8geyAuLi5fY3R4LCBhc3luYzogZmFsc2UgfSA6IHsgYXN5bmM6IGZhbHNlIH07XG4gICAgY29uc3QgcmVzdWx0ID0gc2NoZW1hLl96b2QucnVuKHsgdmFsdWUsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0Lmlzc3Vlcy5sZW5ndGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBuZXcgKF9FcnIgPz8gZXJyb3JzLiRab2RFcnJvcikocmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSkpLFxuICAgICAgICB9XG4gICAgICAgIDogeyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbn07XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlID0gLyogQF9fUFVSRV9fKi8gX3NhZmVQYXJzZShlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX3NhZmVQYXJzZUFzeW5jID0gKF9FcnIpID0+IGFzeW5jIChzY2hlbWEsIHZhbHVlLCBfY3R4KSA9PiB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/IE9iamVjdC5hc3NpZ24oX2N0eCwgeyBhc3luYzogdHJ1ZSB9KSA6IHsgYXN5bmM6IHRydWUgfTtcbiAgICBsZXQgcmVzdWx0ID0gc2NoZW1hLl96b2QucnVuKHsgdmFsdWUsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0O1xuICAgIHJldHVybiByZXN1bHQuaXNzdWVzLmxlbmd0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IG5ldyBfRXJyKHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKSxcbiAgICAgICAgfVxuICAgICAgICA6IHsgc3VjY2VzczogdHJ1ZSwgZGF0YTogcmVzdWx0LnZhbHVlIH07XG59O1xuZXhwb3J0IGNvbnN0IHNhZmVQYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fKi8gX3NhZmVQYXJzZUFzeW5jKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbiIsICJleHBvcnQgY29uc3QgY3VpZCA9IC9eW2NDXVteXFxzLV17OCx9JC87XG5leHBvcnQgY29uc3QgY3VpZDIgPSAvXlswLTlhLXpdKyQvO1xuZXhwb3J0IGNvbnN0IHVsaWQgPSAvXlswLTlBLUhKS01OUC1UVi1aYS1oamttbnAtdHYtel17MjZ9JC87XG5leHBvcnQgY29uc3QgeGlkID0gL15bMC05YS12QS1WXXsyMH0kLztcbmV4cG9ydCBjb25zdCBrc3VpZCA9IC9eW0EtWmEtejAtOV17Mjd9JC87XG5leHBvcnQgY29uc3QgbmFub2lkID0gL15bYS16QS1aMC05Xy1dezIxfSQvO1xuLyoqIElTTyA4NjAxLTEgZHVyYXRpb24gcmVnZXguIERvZXMgbm90IHN1cHBvcnQgdGhlIDg2MDEtMiBleHRlbnNpb25zIGxpa2UgbmVnYXRpdmUgZHVyYXRpb25zIG9yIGZyYWN0aW9uYWwvbmVnYXRpdmUgY29tcG9uZW50cy4gKi9cbmV4cG9ydCBjb25zdCBkdXJhdGlvbiA9IC9eUCg/OihcXGQrVyl8KD8hLipXKSg/PVxcZHxUXFxkKShcXGQrWSk/KFxcZCtNKT8oXFxkK0QpPyhUKD89XFxkKShcXGQrSCk/KFxcZCtNKT8oXFxkKyhbLixdXFxkKyk/Uyk/KT8pJC87XG4vKiogSW1wbGVtZW50cyBJU08gODYwMS0yIGV4dGVuc2lvbnMgbGlrZSBleHBsaWNpdCArLSBwcmVmaXhlcywgbWl4aW5nIHdlZWtzIHdpdGggb3RoZXIgdW5pdHMsIGFuZCBmcmFjdGlvbmFsL25lZ2F0aXZlIGNvbXBvbmVudHMuICovXG5leHBvcnQgY29uc3QgZXh0ZW5kZWREdXJhdGlvbiA9IC9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xcZCtZKXwoPzpbLStdP1xcZCtbLixdXFxkK1kkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/Oig/OlstK10/XFxkK1cpfCg/OlstK10/XFxkK1suLF1cXGQrVyQpKT8oPzooPzpbLStdP1xcZCtEKXwoPzpbLStdP1xcZCtbLixdXFxkK0QkKSk/KD86VCg/PVtcXGQrLV0pKD86KD86Wy0rXT9cXGQrSCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtIJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzpbLStdP1xcZCsoPzpbLixdXFxkKyk/Uyk/KT8/JC87XG4vKiogQSByZWdleCBmb3IgYW55IFVVSUQtbGlrZSBpZGVudGlmaWVyOiA4LTQtNC00LTEyIGhleCBwYXR0ZXJuICovXG5leHBvcnQgY29uc3QgZ3VpZCA9IC9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSkkLztcbi8qKiBSZXR1cm5zIGEgcmVnZXggZm9yIHZhbGlkYXRpbmcgYW4gUkZDIDQxMjIgVVVJRC5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvbiBPcHRpb25hbGx5IHNwZWNpZnkgYSB2ZXJzaW9uIDEtOC4gSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGFsbCB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkLiAqL1xuZXhwb3J0IGNvbnN0IHV1aWQgPSAodmVyc2lvbikgPT4ge1xuICAgIGlmICghdmVyc2lvbilcbiAgICAgICAgcmV0dXJuIC9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwKSQvO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LSR7dmVyc2lvbn1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfSkkYCk7XG59O1xuZXhwb3J0IGNvbnN0IHV1aWQ0ID0gLypAX19QVVJFX18qLyB1dWlkKDQpO1xuZXhwb3J0IGNvbnN0IHV1aWQ2ID0gLypAX19QVVJFX18qLyB1dWlkKDYpO1xuZXhwb3J0IGNvbnN0IHV1aWQ3ID0gLypAX19QVVJFX18qLyB1dWlkKDcpO1xuLyoqIFByYWN0aWNhbCBlbWFpbCB2YWxpZGF0aW9uICovXG5leHBvcnQgY29uc3QgZW1haWwgPSAvXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWmEtejAtOV8nK1xcLVxcLl0qKVtBLVphLXowLTlfKy1dQChbQS1aYS16MC05XVtBLVphLXowLTlcXC1dKlxcLikrW0EtWmEtel17Mix9JC87XG4vKiogRXF1aXZhbGVudCB0byB0aGUgSFRNTDUgaW5wdXRbdHlwZT1lbWFpbF0gdmFsaWRhdGlvbiBpbXBsZW1lbnRlZCBieSBicm93c2Vycy4gU291cmNlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvZW1haWwgKi9cbmV4cG9ydCBjb25zdCBodG1sNUVtYWlsID0gL15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvO1xuLyoqIFRoZSBjbGFzc2ljIGVtYWlscmVnZXguY29tIHJlZ2V4IGZvciBSRkMgNTMyMi1jb21wbGlhbnQgZW1haWxzICovXG5leHBvcnQgY29uc3QgcmZjNTMyMkVtYWlsID0gL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC87XG4vKiogQSBsb29zZSByZWdleCB0aGF0IGFsbG93cyBVbmljb2RlIGNoYXJhY3RlcnMsIGVuZm9yY2VzIGxlbmd0aCBsaW1pdHMsIGFuZCB0aGF0J3MgYWJvdXQgaXQuICovXG5leHBvcnQgY29uc3QgdW5pY29kZUVtYWlsID0gL15bXlxcc0BcIl17MSw2NH1AW15cXHNAXXsxLDI1NX0kL3U7XG5leHBvcnQgY29uc3QgYnJvd3NlckVtYWlsID0gL15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvO1xuLy8gZnJvbSBodHRwczovL3RoZWtldmluc2NvdHQuY29tL2Vtb2ppcy1pbi1qYXZhc2NyaXB0LyN3cml0aW5nLWEtcmVndWxhci1leHByZXNzaW9uXG5leHBvcnQgY29uc3QgX2Vtb2ppID0gYF4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskYDtcbmV4cG9ydCBmdW5jdGlvbiBlbW9qaSgpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChfZW1vamksIFwidVwiKTtcbn1cbmV4cG9ydCBjb25zdCBpcHY0ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLztcbmV4cG9ydCBjb25zdCBpcHY2ID0gL14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSkkLztcbmV4cG9ydCBjb25zdCBjaWRydjQgPSAvXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLztcbmV4cG9ydCBjb25zdCBjaWRydjYgPSAvXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC87XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83ODYwMzkyL2RldGVybWluZS1pZi1zdHJpbmctaXMtaW4tYmFzZTY0LXVzaW5nLWphdmFzY3JpcHRcbmV4cG9ydCBjb25zdCBiYXNlNjQgPSAvXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLztcbmV4cG9ydCBjb25zdCBiYXNlNjR1cmwgPSAvXltBLVphLXowLTlfLV0qJC87XG4vLyBiYXNlZCBvbiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDYxNzkvcmVndWxhci1leHByZXNzaW9uLXRvLW1hdGNoLWRucy1ob3N0bmFtZS1vci1pcC1hZGRyZXNzXG4vLyBleHBvcnQgY29uc3QgaG9zdG5hbWU6IFJlZ0V4cCA9XG4vLyAgIC9eKChbYS16QS1aMC05XXxbYS16QS1aMC05XVthLXpBLVowLTlcXC1dKlthLXpBLVowLTldKVxcLikrKFtBLVphLXowLTldfFtBLVphLXowLTldW0EtWmEtejAtOVxcLV0qW0EtWmEtejAtOV0pJC87XG5leHBvcnQgY29uc3QgaG9zdG5hbWUgPSAvXihbYS16QS1aMC05LV0rXFwuKSpbYS16QS1aMC05LV0rJC87XG5leHBvcnQgY29uc3QgZG9tYWluID0gL14oW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XFwuKStbYS16QS1aXXsyLH0kLztcbi8vIGh0dHBzOi8vYmxvZy5zdGV2ZW5sZXZpdGhhbi5jb20vYXJjaGl2ZXMvdmFsaWRhdGUtcGhvbmUtbnVtYmVyI3I0LTMgKHJlZ2V4IHNhbnMgc3BhY2VzKVxuZXhwb3J0IGNvbnN0IGUxNjQgPSAvXlxcKyg/OlswLTldKXs2LDE0fVswLTldJC87XG4vLyBjb25zdCBkYXRlU291cmNlID0gYCgoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKWA7XG5jb25zdCBkYXRlU291cmNlID0gYCg/Oig/OlxcXFxkXFxcXGRbMjQ2OF1bMDQ4XXxcXFxcZFxcXFxkWzEzNTc5XVsyNl18XFxcXGRcXFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcXFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcXFxkfDNbMDFdKXwoPzowWzQ2OV18MTEpLSg/OjBbMS05XXxbMTJdXFxcXGR8MzApfCg/OjAyKS0oPzowWzEtOV18MVxcXFxkfDJbMC04XSkpKWA7XG5leHBvcnQgY29uc3QgZGF0ZSA9IC8qQF9fUFVSRV9fKi8gbmV3IFJlZ0V4cChgXiR7ZGF0ZVNvdXJjZX0kYCk7XG5mdW5jdGlvbiB0aW1lU291cmNlKGFyZ3MpIHtcbiAgICBjb25zdCBoaG1tID0gYCg/OlswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGRgO1xuICAgIGNvbnN0IHJlZ2V4ID0gdHlwZW9mIGFyZ3MucHJlY2lzaW9uID09PSBcIm51bWJlclwiXG4gICAgICAgID8gYXJncy5wcmVjaXNpb24gPT09IC0xXG4gICAgICAgICAgICA/IGAke2hobW19YFxuICAgICAgICAgICAgOiBhcmdzLnByZWNpc2lvbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gYCR7aGhtbX06WzAtNV1cXFxcZGBcbiAgICAgICAgICAgICAgICA6IGAke2hobW19OlswLTVdXFxcXGRcXFxcLlxcXFxkeyR7YXJncy5wcmVjaXNpb259fWBcbiAgICAgICAgOiBgJHtoaG1tfSg/OjpbMC01XVxcXFxkKD86XFxcXC5cXFxcZCspPyk/YDtcbiAgICByZXR1cm4gcmVnZXg7XG59XG5leHBvcnQgZnVuY3Rpb24gdGltZShhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4ke3RpbWVTb3VyY2UoYXJncyl9JGApO1xufVxuLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMTQzMjMxXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWUoYXJncykge1xuICAgIGNvbnN0IHRpbWUgPSB0aW1lU291cmNlKHsgcHJlY2lzaW9uOiBhcmdzLnByZWNpc2lvbiB9KTtcbiAgICBjb25zdCBvcHRzID0gW1wiWlwiXTtcbiAgICBpZiAoYXJncy5sb2NhbClcbiAgICAgICAgb3B0cy5wdXNoKFwiXCIpO1xuICAgIGlmIChhcmdzLm9mZnNldClcbiAgICAgICAgb3B0cy5wdXNoKGAoWystXVxcXFxkezJ9OlxcXFxkezJ9KWApO1xuICAgIGNvbnN0IHRpbWVSZWdleCA9IGAke3RpbWV9KD86JHtvcHRzLmpvaW4oXCJ8XCIpfSlgO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtkYXRlU291cmNlfVQoPzoke3RpbWVSZWdleH0pJGApO1xufVxuZXhwb3J0IGNvbnN0IHN0cmluZyA9IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCByZWdleCA9IHBhcmFtcyA/IGBbXFxcXHNcXFxcU117JHtwYXJhbXM/Lm1pbmltdW0gPz8gMH0sJHtwYXJhbXM/Lm1heGltdW0gPz8gXCJcIn19YCA6IGBbXFxcXHNcXFxcU10qYDtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7cmVnZXh9JGApO1xufTtcbmV4cG9ydCBjb25zdCBiaWdpbnQgPSAvXlxcZCtuPyQvO1xuZXhwb3J0IGNvbnN0IGludGVnZXIgPSAvXlxcZCskLztcbmV4cG9ydCBjb25zdCBudW1iZXIgPSAvXi0/XFxkKyg/OlxcLlxcZCspPy9pO1xuZXhwb3J0IGNvbnN0IGJvb2xlYW4gPSAvdHJ1ZXxmYWxzZS9pO1xuY29uc3QgX251bGwgPSAvbnVsbC9pO1xuZXhwb3J0IHsgX251bGwgYXMgbnVsbCB9O1xuY29uc3QgX3VuZGVmaW5lZCA9IC91bmRlZmluZWQvaTtcbmV4cG9ydCB7IF91bmRlZmluZWQgYXMgdW5kZWZpbmVkIH07XG4vLyByZWdleCBmb3Igc3RyaW5nIHdpdGggbm8gdXBwZXJjYXNlIGxldHRlcnNcbmV4cG9ydCBjb25zdCBsb3dlcmNhc2UgPSAvXlteQS1aXSokLztcbi8vIHJlZ2V4IGZvciBzdHJpbmcgd2l0aCBubyBsb3dlcmNhc2UgbGV0dGVyc1xuZXhwb3J0IGNvbnN0IHVwcGVyY2FzZSA9IC9eW15hLXpdKiQvO1xuIiwgIi8vIGltcG9ydCB7ICRab2RUeXBlIH0gZnJvbSBcIi4vc2NoZW1hcy5qc1wiO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi9jb3JlLmpzXCI7XG5pbXBvcnQgKiBhcyByZWdleGVzIGZyb20gXCIuL3JlZ2V4ZXMuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVjayA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpbnN0Ll96b2QgPz8gKGluc3QuX3pvZCA9IHt9KTtcbiAgICBpbnN0Ll96b2QuZGVmID0gZGVmO1xuICAgIChfYSA9IGluc3QuX3pvZCkub25hdHRhY2ggPz8gKF9hLm9uYXR0YWNoID0gW10pO1xufSk7XG5jb25zdCBudW1lcmljT3JpZ2luTWFwID0ge1xuICAgIG51bWJlcjogXCJudW1iZXJcIixcbiAgICBiaWdpbnQ6IFwiYmlnaW50XCIsXG4gICAgb2JqZWN0OiBcImRhdGVcIixcbn07XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTGVzc1RoYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTGVzc1RoYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3Qgb3JpZ2luID0gbnVtZXJpY09yaWdpbk1hcFt0eXBlb2YgZGVmLnZhbHVlXTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBjb25zdCBjdXJyID0gKGRlZi5pbmNsdXNpdmUgPyBiYWcubWF4aW11bSA6IGJhZy5leGNsdXNpdmVNYXhpbXVtKSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIGlmIChkZWYudmFsdWUgPCBjdXJyKSB7XG4gICAgICAgICAgICBpZiAoZGVmLmluY2x1c2l2ZSlcbiAgICAgICAgICAgICAgICBiYWcubWF4aW11bSA9IGRlZi52YWx1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBiYWcuZXhjbHVzaXZlTWF4aW11bSA9IGRlZi52YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChkZWYuaW5jbHVzaXZlID8gcGF5bG9hZC52YWx1ZSA8PSBkZWYudmFsdWUgOiBwYXlsb2FkLnZhbHVlIDwgZGVmLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgIG1heGltdW06IGRlZi52YWx1ZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBkZWYuaW5jbHVzaXZlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrR3JlYXRlclRoYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrR3JlYXRlclRoYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3Qgb3JpZ2luID0gbnVtZXJpY09yaWdpbk1hcFt0eXBlb2YgZGVmLnZhbHVlXTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBjb25zdCBjdXJyID0gKGRlZi5pbmNsdXNpdmUgPyBiYWcubWluaW11bSA6IGJhZy5leGNsdXNpdmVNaW5pbXVtKSA/PyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIGlmIChkZWYudmFsdWUgPiBjdXJyKSB7XG4gICAgICAgICAgICBpZiAoZGVmLmluY2x1c2l2ZSlcbiAgICAgICAgICAgICAgICBiYWcubWluaW11bSA9IGRlZi52YWx1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBiYWcuZXhjbHVzaXZlTWluaW11bSA9IGRlZi52YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChkZWYuaW5jbHVzaXZlID8gcGF5bG9hZC52YWx1ZSA+PSBkZWYudmFsdWUgOiBwYXlsb2FkLnZhbHVlID4gZGVmLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgbWluaW11bTogZGVmLnZhbHVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGRlZi5pbmNsdXNpdmUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNdWx0aXBsZU9mID0gXG4vKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTXVsdGlwbGVPZlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IGluc3QuX3pvZC5iYWcpLm11bHRpcGxlT2YgPz8gKF9hLm11bHRpcGxlT2YgPSBkZWYudmFsdWUpO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSAhPT0gdHlwZW9mIGRlZi52YWx1ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtaXggbnVtYmVyIGFuZCBiaWdpbnQgaW4gbXVsdGlwbGVfb2YgY2hlY2suXCIpO1xuICAgICAgICBjb25zdCBpc011bHRpcGxlID0gdHlwZW9mIHBheWxvYWQudmFsdWUgPT09IFwiYmlnaW50XCJcbiAgICAgICAgICAgID8gcGF5bG9hZC52YWx1ZSAlIGRlZi52YWx1ZSA9PT0gQmlnSW50KDApXG4gICAgICAgICAgICA6IHV0aWwuZmxvYXRTYWZlUmVtYWluZGVyKHBheWxvYWQudmFsdWUsIGRlZi52YWx1ZSkgPT09IDA7XG4gICAgICAgIGlmIChpc011bHRpcGxlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdHlwZW9mIHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBjb2RlOiBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuICAgICAgICAgICAgZGl2aXNvcjogZGVmLnZhbHVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tOdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTnVtYmVyRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzXG4gICAgZGVmLmZvcm1hdCA9IGRlZi5mb3JtYXQgfHwgXCJmbG9hdDY0XCI7XG4gICAgY29uc3QgaXNJbnQgPSBkZWYuZm9ybWF0Py5pbmNsdWRlcyhcImludFwiKTtcbiAgICBjb25zdCBvcmlnaW4gPSBpc0ludCA/IFwiaW50XCIgOiBcIm51bWJlclwiO1xuICAgIGNvbnN0IFttaW5pbXVtLCBtYXhpbXVtXSA9IHV0aWwuTlVNQkVSX0ZPUk1BVF9SQU5HRVNbZGVmLmZvcm1hdF07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGJhZy5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgYmFnLm1heGltdW0gPSBtYXhpbXVtO1xuICAgICAgICBpZiAoaXNJbnQpXG4gICAgICAgICAgICBiYWcucGF0dGVybiA9IHJlZ2V4ZXMuaW50ZWdlcjtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpc0ludCkge1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIC8vIGludmFsaWRfZm9ybWF0IGlzc3VlXG4gICAgICAgICAgICAgICAgLy8gcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgLy8gICBleHBlY3RlZDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAvLyAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICAvLyAgIGlucHV0LFxuICAgICAgICAgICAgICAgIC8vICAgaW5zdCxcbiAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAvLyBpbnZhbGlkX3R5cGUgaXNzdWVcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBkZWYuZm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gbm90X211bHRpcGxlX29mIGlzc3VlXG4gICAgICAgICAgICAgICAgLy8gcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgLy8gICBjb2RlOiBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuICAgICAgICAgICAgICAgIC8vICAgb3JpZ2luOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIC8vICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgLy8gICBpbnN0LFxuICAgICAgICAgICAgICAgIC8vICAgZGl2aXNvcjogMSxcbiAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0b29fYmlnXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRvb19zbWFsbFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCA8IG1pbmltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgICAgIG1pbmltdW0sXG4gICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgPiBtYXhpbXVtKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICAgICAgbWF4aW11bSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0JpZ0ludEZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTsgLy8gbm8gZm9ybWF0IGNoZWNrc1xuICAgIGNvbnN0IFttaW5pbXVtLCBtYXhpbXVtXSA9IHV0aWwuQklHSU5UX0ZPUk1BVF9SQU5HRVNbZGVmLmZvcm1hdF07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGJhZy5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgYmFnLm1heGltdW0gPSBtYXhpbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0IDwgbWluaW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICAgICAgbWluaW11bTogbWluaW11bSxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCA+IG1heGltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgICAgICBtYXhpbXVtLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNYXhTaXplID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01heFNpemVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5zaXplICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgY3VyciA9IChpbnN0Ll96b2QuYmFnLm1heGltdW0gPz8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgaWYgKGRlZi5tYXhpbXVtIDwgY3VycilcbiAgICAgICAgICAgIGluc3QuX3pvZC5iYWcubWF4aW11bSA9IGRlZi5tYXhpbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGlucHV0LnNpemU7XG4gICAgICAgIGlmIChzaXplIDw9IGRlZi5tYXhpbXVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdXRpbC5nZXRTaXphYmxlT3JpZ2luKGlucHV0KSxcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgbWF4aW11bTogZGVmLm1heGltdW0sXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01pblNpemUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTWluU2l6ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLnNpemUgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyID0gKGluc3QuX3pvZC5iYWcubWluaW11bSA/PyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBpZiAoZGVmLm1pbmltdW0gPiBjdXJyKVxuICAgICAgICAgICAgaW5zdC5fem9kLmJhZy5taW5pbXVtID0gZGVmLm1pbmltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBzaXplID0gaW5wdXQuc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgPj0gZGVmLm1pbmltdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiB1dGlsLmdldFNpemFibGVPcmlnaW4oaW5wdXQpLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgIG1pbmltdW06IGRlZi5taW5pbXVtLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tTaXplRXF1YWxzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1NpemVFcXVhbHNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5zaXplICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLm1pbmltdW0gPSBkZWYuc2l6ZTtcbiAgICAgICAgYmFnLm1heGltdW0gPSBkZWYuc2l6ZTtcbiAgICAgICAgYmFnLnNpemUgPSBkZWYuc2l6ZTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNpemUgPSBpbnB1dC5zaXplO1xuICAgICAgICBpZiAoc2l6ZSA9PT0gZGVmLnNpemUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHRvb0JpZyA9IHNpemUgPiBkZWYuc2l6ZTtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IHV0aWwuZ2V0U2l6YWJsZU9yaWdpbihpbnB1dCksXG4gICAgICAgICAgICAuLi4odG9vQmlnID8geyBjb2RlOiBcInRvb19iaWdcIiwgbWF4aW11bTogZGVmLnNpemUgfSA6IHsgY29kZTogXCJ0b29fc21hbGxcIiwgbWluaW11bTogZGVmLnNpemUgfSksXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWF4TGVuZ3RoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01heExlbmd0aFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5tYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWF4aW11bSA8IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1heGltdW0gPSBkZWYubWF4aW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA8PSBkZWYubWF4aW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdXRpbC5nZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KTtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhpbXVtLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNaW5MZW5ndGggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTWluTGVuZ3RoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgY3VyciA9IChpbnN0Ll96b2QuYmFnLm1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgaWYgKGRlZi5taW5pbXVtID4gY3VycilcbiAgICAgICAgICAgIGluc3QuX3pvZC5iYWcubWluaW11bSA9IGRlZi5taW5pbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID49IGRlZi5taW5pbXVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvcmlnaW4gPSB1dGlsLmdldExlbmd0aGFibGVPcmlnaW4oaW5wdXQpO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluaW11bSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTGVuZ3RoRXF1YWxzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0xlbmd0aEVxdWFsc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5taW5pbXVtID0gZGVmLmxlbmd0aDtcbiAgICAgICAgYmFnLm1heGltdW0gPSBkZWYubGVuZ3RoO1xuICAgICAgICBiYWcubGVuZ3RoID0gZGVmLmxlbmd0aDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gZGVmLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdXRpbC5nZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KTtcbiAgICAgICAgY29uc3QgdG9vQmlnID0gbGVuZ3RoID4gZGVmLmxlbmd0aDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAuLi4odG9vQmlnID8geyBjb2RlOiBcInRvb19iaWdcIiwgbWF4aW11bTogZGVmLmxlbmd0aCB9IDogeyBjb2RlOiBcInRvb19zbWFsbFwiLCBtaW5pbXVtOiBkZWYubGVuZ3RoIH0pLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgZXhhY3Q6IHRydWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1N0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcuZm9ybWF0ID0gZGVmLmZvcm1hdDtcbiAgICAgICAgaWYgKGRlZi5wYXR0ZXJuKSB7XG4gICAgICAgICAgICBiYWcucGF0dGVybnMgPz8gKGJhZy5wYXR0ZXJucyA9IG5ldyBTZXQoKSk7XG4gICAgICAgICAgICBiYWcucGF0dGVybnMuYWRkKGRlZi5wYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChkZWYucGF0dGVybilcbiAgICAgICAgKF9hID0gaW5zdC5fem9kKS5jaGVjayA/PyAoX2EuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgZGVmLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGlmIChkZWYucGF0dGVybi50ZXN0KHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBkZWYuZm9ybWF0LFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLihkZWYucGF0dGVybiA/IHsgcGF0dGVybjogZGVmLnBhdHRlcm4udG9TdHJpbmcoKSB9IDoge30pLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgZWxzZVxuICAgICAgICAoX2IgPSBpbnN0Ll96b2QpLmNoZWNrID8/IChfYi5jaGVjayA9ICgpID0+IHsgfSk7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tSZWdleCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tSZWdleFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBkZWYucGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICAgICAgICBpZiAoZGVmLnBhdHRlcm4udGVzdChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwicmVnZXhcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgcGF0dGVybjogZGVmLnBhdHRlcm4udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0xvd2VyQ2FzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tMb3dlckNhc2VcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMubG93ZXJjYXNlKTtcbiAgICAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrVXBwZXJDYXNlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1VwcGVyQ2FzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51cHBlcmNhc2UpO1xuICAgICRab2RDaGVja1N0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tJbmNsdWRlcyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tJbmNsdWRlc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBlc2NhcGVkUmVnZXggPSB1dGlsLmVzY2FwZVJlZ2V4KGRlZi5pbmNsdWRlcyk7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAodHlwZW9mIGRlZi5wb3NpdGlvbiA9PT0gXCJudW1iZXJcIiA/IGBeLnske2RlZi5wb3NpdGlvbn19JHtlc2NhcGVkUmVnZXh9YCA6IGVzY2FwZWRSZWdleCk7XG4gICAgZGVmLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5wYXR0ZXJucyA/PyAoYmFnLnBhdHRlcm5zID0gbmV3IFNldCgpKTtcbiAgICAgICAgYmFnLnBhdHRlcm5zLmFkZChwYXR0ZXJuKTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZS5pbmNsdWRlcyhkZWYuaW5jbHVkZXMsIGRlZi5wb3NpdGlvbikpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcImluY2x1ZGVzXCIsXG4gICAgICAgICAgICBpbmNsdWRlczogZGVmLmluY2x1ZGVzLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tTdGFydHNXaXRoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1N0YXJ0c1dpdGhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYF4ke3V0aWwuZXNjYXBlUmVnZXgoZGVmLnByZWZpeCl9LipgKTtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSBwYXR0ZXJuKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcucGF0dGVybnMgPz8gKGJhZy5wYXR0ZXJucyA9IG5ldyBTZXQoKSk7XG4gICAgICAgIGJhZy5wYXR0ZXJucy5hZGQocGF0dGVybik7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUuc3RhcnRzV2l0aChkZWYucHJlZml4KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwic3RhcnRzX3dpdGhcIixcbiAgICAgICAgICAgIHByZWZpeDogZGVmLnByZWZpeCxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrRW5kc1dpdGggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrRW5kc1dpdGhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYC4qJHt1dGlsLmVzY2FwZVJlZ2V4KGRlZi5zdWZmaXgpfSRgKTtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSBwYXR0ZXJuKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcucGF0dGVybnMgPz8gKGJhZy5wYXR0ZXJucyA9IG5ldyBTZXQoKSk7XG4gICAgICAgIGJhZy5wYXR0ZXJucy5hZGQocGF0dGVybik7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUuZW5kc1dpdGgoZGVmLnN1ZmZpeCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcImVuZHNfd2l0aFwiLFxuICAgICAgICAgICAgc3VmZml4OiBkZWYuc3VmZml4LFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLyAgICAkWm9kQ2hlY2tQcm9wZXJ0eSAgICAvLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmZ1bmN0aW9uIGhhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBwcm9wZXJ0eSkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKHByb3BlcnR5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0ICRab2RDaGVja1Byb3BlcnR5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1Byb3BlcnR5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5zY2hlbWEuX3pvZC5ydW4oe1xuICAgICAgICAgICAgdmFsdWU6IHBheWxvYWQudmFsdWVbZGVmLnByb3BlcnR5XSxcbiAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVDaGVja1Byb3BlcnR5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgZGVmLnByb3BlcnR5KSk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGRlZi5wcm9wZXJ0eSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWltZVR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTWltZVR5cGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgbWltZVNldCA9IG5ldyBTZXQoZGVmLm1pbWUpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGluc3QuX3pvZC5iYWcubWltZSA9IGRlZi5taW1lO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChtaW1lU2V0LmhhcyhwYXlsb2FkLnZhbHVlLnR5cGUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgdmFsdWVzOiBkZWYubWltZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLnR5cGUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrT3ZlcndyaXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja092ZXJ3cml0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLnR4KHBheWxvYWQudmFsdWUpO1xuICAgIH07XG59KTtcbiIsICJleHBvcnQgY2xhc3MgRG9jIHtcbiAgICBjb25zdHJ1Y3RvcihhcmdzID0gW10pIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gW107XG4gICAgICAgIHRoaXMuaW5kZW50ID0gMDtcbiAgICAgICAgaWYgKHRoaXMpXG4gICAgICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIH1cbiAgICBpbmRlbnRlZChmbikge1xuICAgICAgICB0aGlzLmluZGVudCArPSAxO1xuICAgICAgICBmbih0aGlzKTtcbiAgICAgICAgdGhpcy5pbmRlbnQgLT0gMTtcbiAgICB9XG4gICAgd3JpdGUoYXJnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIGFyZyh0aGlzLCB7IGV4ZWN1dGlvbjogXCJzeW5jXCIgfSk7XG4gICAgICAgICAgICBhcmcodGhpcywgeyBleGVjdXRpb246IFwiYXN5bmNcIiB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZW50ID0gYXJnO1xuICAgICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIikuZmlsdGVyKCh4KSA9PiB4KTtcbiAgICAgICAgY29uc3QgbWluSW5kZW50ID0gTWF0aC5taW4oLi4ubGluZXMubWFwKCh4KSA9PiB4Lmxlbmd0aCAtIHgudHJpbVN0YXJ0KCkubGVuZ3RoKSk7XG4gICAgICAgIGNvbnN0IGRlZGVudGVkID0gbGluZXMubWFwKCh4KSA9PiB4LnNsaWNlKG1pbkluZGVudCkpLm1hcCgoeCkgPT4gXCIgXCIucmVwZWF0KHRoaXMuaW5kZW50ICogMikgKyB4KTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGRlZGVudGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICBjb25zdCBGID0gRnVuY3Rpb247XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzPy5hcmdzO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcz8uY29udGVudCA/PyBbYGBdO1xuICAgICAgICBjb25zdCBsaW5lcyA9IFsuLi5jb250ZW50Lm1hcCgoeCkgPT4gYCAgJHt4fWApXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2cobGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgICAgIHJldHVybiBuZXcgRiguLi5hcmdzLCBsaW5lcy5qb2luKFwiXFxuXCIpKTtcbiAgICB9XG59XG4iLCAiZXhwb3J0IGNvbnN0IHZlcnNpb24gPSB7XG4gICAgbWFqb3I6IDQsXG4gICAgbWlub3I6IDAsXG4gICAgcGF0Y2g6IDAsXG59O1xuIiwgImltcG9ydCAqIGFzIGNoZWNrcyBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0IHsgRG9jIH0gZnJvbSBcIi4vZG9jLmpzXCI7XG5pbXBvcnQgeyBzYWZlUGFyc2UsIHNhZmVQYXJzZUFzeW5jIH0gZnJvbSBcIi4vcGFyc2UuanNcIjtcbmltcG9ydCAqIGFzIHJlZ2V4ZXMgZnJvbSBcIi4vcmVnZXhlcy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSBcIi4vdmVyc2lvbnMuanNcIjtcbmV4cG9ydCBjb25zdCAkWm9kVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGluc3QgPz8gKGluc3QgPSB7fSk7XG4gICAgaW5zdC5fem9kLmRlZiA9IGRlZjsgLy8gc2V0IF9kZWYgcHJvcGVydHlcbiAgICBpbnN0Ll96b2QuYmFnID0gaW5zdC5fem9kLmJhZyB8fCB7fTsgLy8gaW5pdGlhbGl6ZSBfYmFnIG9iamVjdFxuICAgIGluc3QuX3pvZC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICBjb25zdCBjaGVja3MgPSBbLi4uKGluc3QuX3pvZC5kZWYuY2hlY2tzID8/IFtdKV07XG4gICAgLy8gaWYgaW5zdCBpcyBpdHNlbGYgYSBjaGVja3MuJFpvZENoZWNrLCBydW4gaXQgYXMgYSBjaGVja1xuICAgIGlmIChpbnN0Ll96b2QudHJhaXRzLmhhcyhcIiRab2RDaGVja1wiKSkge1xuICAgICAgICBjaGVja3MudW5zaGlmdChpbnN0KTtcbiAgICB9XG4gICAgLy9cbiAgICBmb3IgKGNvbnN0IGNoIG9mIGNoZWNrcykge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGNoLl96b2Qub25hdHRhY2gpIHtcbiAgICAgICAgICAgIGZuKGluc3QpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjaGVja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIGRlZmVycmVkIGluaXRpYWxpemVyXG4gICAgICAgIC8vIGluc3QuX3pvZC5wYXJzZSBpcyBub3QgeWV0IGRlZmluZWRcbiAgICAgICAgKF9hID0gaW5zdC5fem9kKS5kZWZlcnJlZCA/PyAoX2EuZGVmZXJyZWQgPSBbXSk7XG4gICAgICAgIGluc3QuX3pvZC5kZWZlcnJlZD8ucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICBpbnN0Ll96b2QucnVuID0gaW5zdC5fem9kLnBhcnNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ1bkNoZWNrcyA9IChwYXlsb2FkLCBjaGVja3MsIGN0eCkgPT4ge1xuICAgICAgICAgICAgbGV0IGlzQWJvcnRlZCA9IHV0aWwuYWJvcnRlZChwYXlsb2FkKTtcbiAgICAgICAgICAgIGxldCBhc3luY1Jlc3VsdDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2ggb2YgY2hlY2tzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoLl96b2QuZGVmLndoZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkUnVuID0gY2guX3pvZC5kZWYud2hlbihwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRSdW4pXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyTGVuID0gcGF5bG9hZC5pc3N1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IF8gPSBjaC5fem9kLmNoZWNrKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGlmIChfIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBjdHg/LmFzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXN5bmNSZXN1bHQgfHwgXyBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXN5bmNSZXN1bHQgPSAoYXN5bmNSZXN1bHQgPz8gUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMZW4gPSBwYXlsb2FkLmlzc3Vlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dExlbiA9PT0gY3VyckxlbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQWJvcnRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Fib3J0ZWQgPSB1dGlsLmFib3J0ZWQocGF5bG9hZCwgY3Vyckxlbik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dExlbiA9IHBheWxvYWQuaXNzdWVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRMZW4gPT09IGN1cnJMZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Fib3J0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0Fib3J0ZWQgPSB1dGlsLmFib3J0ZWQocGF5bG9hZCwgY3Vyckxlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFzeW5jUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jUmVzdWx0LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9O1xuICAgICAgICBpbnN0Ll96b2QucnVuID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdC5fem9kLnBhcnNlKHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGlmIChjdHguYXN5bmMgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiBydW5DaGVja3MocmVzdWx0LCBjaGVja3MsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJ1bkNoZWNrcyhyZXN1bHQsIGNoZWNrcywgY3R4KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaW5zdFtcIn5zdGFuZGFyZFwiXSA9IHtcbiAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gc2FmZVBhcnNlKGluc3QsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gci5zdWNjZXNzID8geyB2YWx1ZTogci5kYXRhIH0gOiB7IGlzc3Vlczogci5lcnJvcj8uaXNzdWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYWZlUGFyc2VBc3luYyhpbnN0LCB2YWx1ZSkudGhlbigocikgPT4gKHIuc3VjY2VzcyA/IHsgdmFsdWU6IHIuZGF0YSB9IDogeyBpc3N1ZXM6IHIuZXJyb3I/Lmlzc3VlcyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZlbmRvcjogXCJ6b2RcIixcbiAgICAgICAgdmVyc2lvbjogMSxcbiAgICB9O1xufSk7XG5leHBvcnQgeyBjbG9uZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmV4cG9ydCBjb25zdCAkWm9kU3RyaW5nID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IFsuLi4oaW5zdD8uX3pvZC5iYWc/LnBhdHRlcm5zID8/IFtdKV0ucG9wKCkgPz8gcmVnZXhlcy5zdHJpbmcoaW5zdC5fem9kLmJhZyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF8pID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBTdHJpbmcocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTdHJpbmdGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIGNoZWNrIGluaXRpYWxpemF0aW9uIG11c3QgY29tZSBmaXJzdFxuICAgIGNoZWNrcy4kWm9kQ2hlY2tTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEdVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEdVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZ3VpZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVVVJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVVVJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgaWYgKGRlZi52ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb25NYXAgPSB7XG4gICAgICAgICAgICB2MTogMSxcbiAgICAgICAgICAgIHYyOiAyLFxuICAgICAgICAgICAgdjM6IDMsXG4gICAgICAgICAgICB2NDogNCxcbiAgICAgICAgICAgIHY1OiA1LFxuICAgICAgICAgICAgdjY6IDYsXG4gICAgICAgICAgICB2NzogNyxcbiAgICAgICAgICAgIHY4OiA4LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB2ID0gdmVyc2lvbk1hcFtkZWYudmVyc2lvbl07XG4gICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiBcIiR7ZGVmLnZlcnNpb259XCJgKTtcbiAgICAgICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51dWlkKHYpKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLnV1aWQoKSk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRW1haWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEVtYWlsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmVtYWlsKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RVUkwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWcgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChvcmlnKTtcbiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgICAgIGlmIChkZWYuaG9zdG5hbWUpIHtcbiAgICAgICAgICAgICAgICBkZWYuaG9zdG5hbWUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZi5ob3N0bmFtZS50ZXN0KHVybC5ob3N0bmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludmFsaWQgaG9zdG5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHJlZ2V4ZXMuaG9zdG5hbWUuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZWYucHJvdG9jb2wpIHtcbiAgICAgICAgICAgICAgICBkZWYucHJvdG9jb2wubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZi5wcm90b2NvbC50ZXN0KHVybC5wcm90b2NvbC5lbmRzV2l0aChcIjpcIikgPyB1cmwucHJvdG9jb2wuc2xpY2UoMCwgLTEpIDogdXJsLnByb3RvY29sKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogXCJ1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSW52YWxpZCBwcm90b2NvbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogZGVmLnByb3RvY29sLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwYXlsb2FkLnZhbHVlID0gdXJsLmhyZWY7XG4gICAgICAgICAgICBpZiAoIW9yaWcuZW5kc1dpdGgoXCIvXCIpICYmIGhyZWYuZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGhyZWYuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGhyZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RFbW9qaSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRW1vamlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZW1vamkoKSk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTmFub0lEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMubmFub2lkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmN1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDVUlEMlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jdWlkMik7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVUxJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51bGlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RYSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFhJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy54aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RLU1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5rc3VpZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVNPRGF0ZVRpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT0RhdGVUaW1lXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmRhdGV0aW1lKGRlZikpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0RhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT0RhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZGF0ZSk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVNPVGltZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVNPVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy50aW1lKGRlZikpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0R1cmF0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EdXJhdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5kdXJhdGlvbik7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVB2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5pcHY0KTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcuZm9ybWF0ID0gYGlwdjRgO1xuICAgIH0pO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElQdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElQdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuaXB2Nik7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGBpcHY2YDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTChgaHR0cDovL1ske3BheWxvYWQudmFsdWV9XWApO1xuICAgICAgICAgICAgLy8gcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwiaXB2NlwiLFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ0lEUnY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY2lkcnY0KTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENJRFJ2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jaWRydjYpOyAvLyBub3QgdXNlZCBmb3IgdmFsaWRhdGlvblxuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IFthZGRyZXNzLCBwcmVmaXhdID0gcGF5bG9hZC52YWx1ZS5zcGxpdChcIi9cIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXByZWZpeClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeE51bSA9IE51bWJlcihwcmVmaXgpO1xuICAgICAgICAgICAgaWYgKGAke3ByZWZpeE51bX1gICE9PSBwcmVmaXgpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgICAgICBpZiAocHJlZml4TnVtIDwgMCB8fCBwcmVmaXhOdW0gPiAxMjgpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgICAgICBuZXcgVVJMKGBodHRwOi8vWyR7YWRkcmVzc31dYCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogXCJjaWRydjZcIixcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gICBab2RCYXNlNjQgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQmFzZTY0KGRhdGEpIHtcbiAgICBpZiAoZGF0YSA9PT0gXCJcIilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKGRhdGEubGVuZ3RoICUgNCAhPT0gMClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICAgIGF0b2IoZGF0YSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgJFpvZEJhc2U2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmFzZTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmJhc2U2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgaW5zdC5fem9kLmJhZy5jb250ZW50RW5jb2RpbmcgPSBcImJhc2U2NFwiO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkQmFzZTY0KHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJiYXNlNjRcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gICBab2RCYXNlNjQgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQmFzZTY0VVJMKGRhdGEpIHtcbiAgICBpZiAoIXJlZ2V4ZXMuYmFzZTY0dXJsLnRlc3QoZGF0YSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBiYXNlNjQgPSBkYXRhLnJlcGxhY2UoL1stX10vZywgKGMpID0+IChjID09PSBcIi1cIiA/IFwiK1wiIDogXCIvXCIpKTtcbiAgICBjb25zdCBwYWRkZWQgPSBiYXNlNjQucGFkRW5kKE1hdGguY2VpbChiYXNlNjQubGVuZ3RoIC8gNCkgKiA0LCBcIj1cIik7XG4gICAgcmV0dXJuIGlzVmFsaWRCYXNlNjQocGFkZGVkKTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kQmFzZTY0VVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RCYXNlNjRVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuYmFzZTY0dXJsKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBpbnN0Ll96b2QuYmFnLmNvbnRlbnRFbmNvZGluZyA9IFwiYmFzZTY0dXJsXCI7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGlzVmFsaWRCYXNlNjRVUkwocGF5bG9hZC52YWx1ZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcImJhc2U2NHVybFwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRTE2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRTE2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5lMTY0KTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kSldUICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEpXVCh0b2tlbiwgYWxnb3JpdGhtID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRva2Vuc1BhcnRzID0gdG9rZW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAodG9rZW5zUGFydHMubGVuZ3RoICE9PSAzKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBbaGVhZGVyXSA9IHRva2Vuc1BhcnRzO1xuICAgICAgICBpZiAoIWhlYWRlcilcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgcGFyc2VkSGVhZGVyID0gSlNPTi5wYXJzZShhdG9iKGhlYWRlcikpO1xuICAgICAgICBpZiAoXCJ0eXBcIiBpbiBwYXJzZWRIZWFkZXIgJiYgcGFyc2VkSGVhZGVyPy50eXAgIT09IFwiSldUXCIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghcGFyc2VkSGVhZGVyLmFsZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGFsZ29yaXRobSAmJiAoIShcImFsZ1wiIGluIHBhcnNlZEhlYWRlcikgfHwgcGFyc2VkSGVhZGVyLmFsZyAhPT0gYWxnb3JpdGhtKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RKV1RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkSldUKHBheWxvYWQudmFsdWUsIGRlZi5hbGcpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJqd3RcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmZuKHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE51bWJlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTnVtYmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBpbnN0Ll96b2QuYmFnLnBhdHRlcm4gPz8gcmVnZXhlcy5udW1iZXI7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBOdW1iZXIocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIiAmJiAhTnVtYmVyLmlzTmFOKGlucHV0KSAmJiBOdW1iZXIuaXNGaW5pdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWNlaXZlZCA9IHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBOdW1iZXIuaXNOYU4oaW5wdXQpXG4gICAgICAgICAgICAgICAgPyBcIk5hTlwiXG4gICAgICAgICAgICAgICAgOiAhTnVtYmVyLmlzRmluaXRlKGlucHV0KVxuICAgICAgICAgICAgICAgICAgICA/IFwiSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgLi4uKHJlY2VpdmVkID8geyByZWNlaXZlZCB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY2hlY2tzLiRab2RDaGVja051bWJlckZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgJFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7IC8vIG5vIGZvcm1hdCBjaGVja3NwXG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQm9vbGVhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQm9vbGVhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gcmVnZXhlcy5ib29sZWFuO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gQm9vbGVhbihwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcImJvb2xlYW5cIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEJpZ0ludCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmlnSW50XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLmJpZ2ludDtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmNvZXJjZSlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IEJpZ0ludChwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLnZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiYmlnaW50XCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RCaWdJbnRGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJpZ0ludFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY2hlY2tzLiRab2RDaGVja0JpZ0ludEZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgJFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7IC8vIG5vIGZvcm1hdCBjaGVja3Ncbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RTeW1ib2wgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFN5bWJvbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzeW1ib2xcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcInN5bWJvbFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVW5kZWZpbmVkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVbmRlZmluZWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IHJlZ2V4ZXMudW5kZWZpbmVkO1xuICAgIGluc3QuX3pvZC52YWx1ZXMgPSBuZXcgU2V0KFt1bmRlZmluZWRdKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgaW5zdC5fem9kLm9wdG91dCA9IFwib3B0aW9uYWxcIjtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJ1bmRlZmluZWRcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE51bGwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bGxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IHJlZ2V4ZXMubnVsbDtcbiAgICBpbnN0Ll96b2QudmFsdWVzID0gbmV3IFNldChbbnVsbF0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibnVsbFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQW55ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RBbnlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCkgPT4gcGF5bG9hZDtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RVbmtub3duID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVbmtub3duXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQpID0+IHBheWxvYWQ7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTmV2ZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE5ldmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJuZXZlclwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVm9pZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVm9pZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcInZvaWRcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZERhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZERhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3IERhdGUocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoX2VycikgeyB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBpc0RhdGUgPSBpbnB1dCBpbnN0YW5jZW9mIERhdGU7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREYXRlID0gaXNEYXRlICYmICFOdW1iZXIuaXNOYU4oaW5wdXQuZ2V0VGltZSgpKTtcbiAgICAgICAgaWYgKGlzVmFsaWREYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiZGF0ZVwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgLi4uKGlzRGF0ZSA/IHsgcmVjZWl2ZWQ6IFwiSW52YWxpZCBEYXRlXCIgfSA6IHt9KSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVBcnJheVJlc3VsdChyZXN1bHQsIGZpbmFsLCBpbmRleCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhpbmRleCwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbiAgICBmaW5hbC52YWx1ZVtpbmRleF0gPSByZXN1bHQudmFsdWU7XG59XG5leHBvcnQgY29uc3QgJFpvZEFycmF5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RBcnJheVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IEFycmF5KGlucHV0Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpbnB1dFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5lbGVtZW50Ll96b2QucnVuKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVBcnJheVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVBcnJheVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDsgLy9oYW5kbGVBcnJheVJlc3VsdHNBc3luYyhwYXJzZVJlc3VsdHMsIGZpbmFsKTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVPYmplY3RSZXN1bHQocmVzdWx0LCBmaW5hbCwga2V5KSB7XG4gICAgLy8gaWYoaXNPcHRpb25hbClcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG59XG5mdW5jdGlvbiBoYW5kbGVPcHRpb25hbE9iamVjdFJlc3VsdChyZXN1bHQsIGZpbmFsLCBrZXksIGlucHV0KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIHZhbGlkYXRpb24gZmFpbGVkIGFnYWluc3QgdmFsdWUgc2NoZW1hXG4gICAgICAgIGlmIChpbnB1dFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGlmIGlucHV0IHdhcyB1bmRlZmluZWQsIGlnbm9yZSB0aGUgZXJyb3JcbiAgICAgICAgICAgIGlmIChrZXkgaW4gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBmaW5hbC52YWx1ZVtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluYWwudmFsdWVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlc3VsdC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHZhbGlkYXRpb24gcmV0dXJuZWQgYHVuZGVmaW5lZGBcbiAgICAgICAgaWYgKGtleSBpbiBpbnB1dClcbiAgICAgICAgICAgIGZpbmFsLnZhbHVlW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBub24tdW5kZWZpbmVkIHZhbHVlXG4gICAgICAgIGZpbmFsLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0ICRab2RPYmplY3QgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE9iamVjdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gcmVxdWlyZXMgY2FzdCBiZWNhdXNlIHRlY2huaWNhbGx5ICRab2RPYmplY3QgZG9lc24ndCBleHRlbmRcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgX25vcm1hbGl6ZWQgPSB1dGlsLmNhY2hlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkZWYuc2hhcGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKCEoZGVmLnNoYXBlW2tdIGluc3RhbmNlb2YgJFpvZFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5IFwiJHtrfVwiOiBleHBlY3RlZCBhIFpvZCBzY2hlbWFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBva2V5cyA9IHV0aWwub3B0aW9uYWxLZXlzKGRlZi5zaGFwZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaGFwZTogZGVmLnNoYXBlLFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIGtleVNldDogbmV3IFNldChrZXlzKSxcbiAgICAgICAgICAgIG51bUtleXM6IGtleXMubGVuZ3RoLFxuICAgICAgICAgICAgb3B0aW9uYWxLZXlzOiBuZXcgU2V0KG9rZXlzKSxcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaGFwZSA9IGRlZi5zaGFwZTtcbiAgICAgICAgY29uc3QgcHJvcFZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzaGFwZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzaGFwZVtrZXldLl96b2Q7XG4gICAgICAgICAgICBpZiAoZmllbGQudmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trZXldID8/IChwcm9wVmFsdWVzW2tleV0gPSBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBmaWVsZC52YWx1ZXMpXG4gICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba2V5XS5hZGQodik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BWYWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3QgZ2VuZXJhdGVGYXN0cGFzcyA9IChzaGFwZSkgPT4ge1xuICAgICAgICBjb25zdCBkb2MgPSBuZXcgRG9jKFtcInNoYXBlXCIsIFwicGF5bG9hZFwiLCBcImN0eFwiXSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBfbm9ybWFsaXplZC52YWx1ZTtcbiAgICAgICAgY29uc3QgcGFyc2VTdHIgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrID0gdXRpbC5lc2Moa2V5KTtcbiAgICAgICAgICAgIHJldHVybiBgc2hhcGVbJHtrfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtrfV0sIGlzc3VlczogW10gfSwgY3R4KWA7XG4gICAgICAgIH07XG4gICAgICAgIGRvYy53cml0ZShgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO2ApO1xuICAgICAgICBjb25zdCBpZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIG5vcm1hbGl6ZWQua2V5cykge1xuICAgICAgICAgICAgaWRzW2tleV0gPSBga2V5XyR7Y291bnRlcisrfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQTogcHJlc2VydmUga2V5IG9yZGVyIHtcbiAgICAgICAgZG9jLndyaXRlKGBjb25zdCBuZXdSZXN1bHQgPSB7fWApO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBub3JtYWxpemVkLmtleXMpIHtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkLm9wdGlvbmFsS2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gaWRzW2tleV07XG4gICAgICAgICAgICAgICAgZG9jLndyaXRlKGBjb25zdCAke2lkfSA9ICR7cGFyc2VTdHIoa2V5KX07YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IHV0aWwuZXNjKGtleSk7XG4gICAgICAgICAgICAgICAgZG9jLndyaXRlKGBcbiAgICAgICAgaWYgKCR7aWR9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoaW5wdXRbJHtrfV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCR7a30gaW4gaW5wdXQpIHtcbiAgICAgICAgICAgICAgbmV3UmVzdWx0WyR7a31dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdChcbiAgICAgICAgICAgICAgJHtpZH0uaXNzdWVzLm1hcCgoaXNzKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmlzcyxcbiAgICAgICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske2t9LCAuLi5pc3MucGF0aF0gOiBbJHtrfV0sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoJHtpZH0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSBuZXdSZXN1bHRbJHtrfV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3UmVzdWx0WyR7a31dID0gJHtpZH0udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGlkc1trZXldO1xuICAgICAgICAgICAgICAgIC8vICBjb25zdCBpZCA9IGlkc1trZXldO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgY29uc3QgJHtpZH0gPSAke3BhcnNlU3RyKGtleSl9O2ApO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgXG4gICAgICAgICAgaWYgKCR7aWR9Lmlzc3Vlcy5sZW5ndGgpIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7aWR9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7XG4gICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske3V0aWwuZXNjKGtleSl9LCAuLi5pc3MucGF0aF0gOiBbJHt1dGlsLmVzYyhrZXkpfV1cbiAgICAgICAgICB9KSkpO2ApO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgbmV3UmVzdWx0WyR7dXRpbC5lc2Moa2V5KX1dID0gJHtpZH0udmFsdWVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkb2Mud3JpdGUoYHBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7YCk7XG4gICAgICAgIGRvYy53cml0ZShgcmV0dXJuIHBheWxvYWQ7YCk7XG4gICAgICAgIGNvbnN0IGZuID0gZG9jLmNvbXBpbGUoKTtcbiAgICAgICAgcmV0dXJuIChwYXlsb2FkLCBjdHgpID0+IGZuKHNoYXBlLCBwYXlsb2FkLCBjdHgpO1xuICAgIH07XG4gICAgbGV0IGZhc3RwYXNzO1xuICAgIGNvbnN0IGlzT2JqZWN0ID0gdXRpbC5pc09iamVjdDtcbiAgICBjb25zdCBqaXQgPSAhY29yZS5nbG9iYWxDb25maWcuaml0bGVzcztcbiAgICBjb25zdCBhbGxvd3NFdmFsID0gdXRpbC5hbGxvd3NFdmFsO1xuICAgIGNvbnN0IGZhc3RFbmFibGVkID0gaml0ICYmIGFsbG93c0V2YWwudmFsdWU7IC8vICYmICFkZWYuY2F0Y2hhbGw7XG4gICAgY29uc3QgY2F0Y2hhbGwgPSBkZWYuY2F0Y2hhbGw7XG4gICAgbGV0IHZhbHVlO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgdmFsdWUgPz8gKHZhbHVlID0gX25vcm1hbGl6ZWQudmFsdWUpO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGlmIChqaXQgJiYgZmFzdEVuYWJsZWQgJiYgY3R4Py5hc3luYyA9PT0gZmFsc2UgJiYgY3R4LmppdGxlc3MgIT09IHRydWUpIHtcbiAgICAgICAgICAgIC8vIGFsd2F5cyBzeW5jaHJvbm91c1xuICAgICAgICAgICAgaWYgKCFmYXN0cGFzcylcbiAgICAgICAgICAgICAgICBmYXN0cGFzcyA9IGdlbmVyYXRlRmFzdHBhc3MoZGVmLnNoYXBlKTtcbiAgICAgICAgICAgIHBheWxvYWQgPSBmYXN0cGFzcyhwYXlsb2FkLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHt9O1xuICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSB2YWx1ZS5zaGFwZTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlLmtleXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IHNoYXBlW2tleV07XG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBvbWl0dGVkIG9wdGlvbmFsIGtleXNcbiAgICAgICAgICAgICAgICAvLyBpZiAoIShrZXkgaW4gaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgLy8gICBpZiAob3B0aW9uYWxLZXlzLmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC8vICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIC8vICAgICBwYXRoOiBba2V5XSxcbiAgICAgICAgICAgICAgICAvLyAgICAgZXhwZWN0ZWQ6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAvLyAgICAgbm90ZTogYE1pc3NpbmcgcmVxdWlyZWQga2V5OiBcIiR7a2V5fVwiYCxcbiAgICAgICAgICAgICAgICAvLyAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgLy8gICAgIGluc3QsXG4gICAgICAgICAgICAgICAgLy8gICB9KTtcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IGVsLl96b2QucnVuKHsgdmFsdWU6IGlucHV0W2tleV0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc09wdGlvbmFsID0gZWwuX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiICYmIGVsLl96b2Qub3B0b3V0ID09PSBcIm9wdGlvbmFsXCI7XG4gICAgICAgICAgICAgICAgaWYgKHIgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21zLnB1c2goci50aGVuKChyKSA9PiBpc09wdGlvbmFsID8gaGFuZGxlT3B0aW9uYWxPYmplY3RSZXN1bHQociwgcGF5bG9hZCwga2V5LCBpbnB1dCkgOiBoYW5kbGVPYmplY3RSZXN1bHQociwgcGF5bG9hZCwga2V5KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc09wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wdGlvbmFsT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghY2F0Y2hhbGwpIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgcmV0dXJuIHByb21zLmxlbmd0aCA/IFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpIDogcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1bnJlY29nbml6ZWQgPSBbXTtcbiAgICAgICAgLy8gaXRlcmF0ZSBvdmVyIGlucHV0IGtleXNcbiAgICAgICAgY29uc3Qga2V5U2V0ID0gdmFsdWUua2V5U2V0O1xuICAgICAgICBjb25zdCBfY2F0Y2hhbGwgPSBjYXRjaGFsbC5fem9kO1xuICAgICAgICBjb25zdCB0ID0gX2NhdGNoYWxsLmRlZi50eXBlO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dCkpIHtcbiAgICAgICAgICAgIGlmIChrZXlTZXQuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBpZiAodCA9PT0gXCJuZXZlclwiKSB7XG4gICAgICAgICAgICAgICAgdW5yZWNvZ25pemVkLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHIgPSBfY2F0Y2hhbGwucnVuKHsgdmFsdWU6IGlucHV0W2tleV0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2goci50aGVuKChyKSA9PiBoYW5kbGVPYmplY3RSZXN1bHQociwgcGF5bG9hZCwga2V5KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVucmVjb2duaXplZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICAgICAgICAgICAgICBrZXlzOiB1bnJlY29nbml6ZWQsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlVW5pb25SZXN1bHRzKHJlc3VsdHMsIGZpbmFsLCBpbnN0LCBjdHgpIHtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZmluYWwudmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gZmluYWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluYWwuaXNzdWVzLnB1c2goe1xuICAgICAgICBjb2RlOiBcImludmFsaWRfdW5pb25cIixcbiAgICAgICAgaW5wdXQ6IGZpbmFsLnZhbHVlLFxuICAgICAgICBpbnN0LFxuICAgICAgICBlcnJvcnM6IHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKSxcbiAgICB9KTtcbiAgICByZXR1cm4gZmluYWw7XG59XG5leHBvcnQgY29uc3QgJFpvZFVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVbmlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gZGVmLm9wdGlvbnMuc29tZSgobykgPT4gby5fem9kLm9wdGluID09PSBcIm9wdGlvbmFsXCIpID8gXCJvcHRpb25hbFwiIDogdW5kZWZpbmVkKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBkZWYub3B0aW9ucy5zb21lKChvKSA9PiBvLl96b2Qub3B0b3V0ID09PSBcIm9wdGlvbmFsXCIpID8gXCJvcHRpb25hbFwiIDogdW5kZWZpbmVkKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIGlmIChkZWYub3B0aW9ucy5ldmVyeSgobykgPT4gby5fem9kLnZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2V0KGRlZi5vcHRpb25zLmZsYXRNYXAoKG9wdGlvbikgPT4gQXJyYXkuZnJvbShvcHRpb24uX3pvZC52YWx1ZXMpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInBhdHRlcm5cIiwgKCkgPT4ge1xuICAgICAgICBpZiAoZGVmLm9wdGlvbnMuZXZlcnkoKG8pID0+IG8uX3pvZC5wYXR0ZXJuKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybnMgPSBkZWYub3B0aW9ucy5tYXAoKG8pID0+IG8uX3pvZC5wYXR0ZXJuKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKCR7cGF0dGVybnMubWFwKChwKSA9PiB1dGlsLmNsZWFuUmVnZXgocC5zb3VyY2UpKS5qb2luKFwifFwiKX0pJGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBsZXQgYXN5bmMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBkZWYub3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9uLl96b2QucnVuKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYXN5bmMpXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlVW5pb25SZXN1bHRzKHJlc3VsdHMsIHBheWxvYWQsIGluc3QsIGN0eCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlVW5pb25SZXN1bHRzKHJlc3VsdHMsIHBheWxvYWQsIGluc3QsIGN0eCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRGlzY3JpbWluYXRlZFVuaW9uID0gXG4vKkBfX1BVUkVfXyovXG5jb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REaXNjcmltaW5hdGVkVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgX3N1cGVyID0gaW5zdC5fem9kLnBhcnNlO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BWYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHB2ID0gb3B0aW9uLl96b2QucHJvcFZhbHVlcztcbiAgICAgICAgICAgIGlmICghcHYgfHwgT2JqZWN0LmtleXMocHYpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggXCIke2RlZi5vcHRpb25zLmluZGV4T2Yob3B0aW9uKX1cImApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHYpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWVzW2tdKVxuICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWVzW2tdID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsIG9mIHYpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trXS5hZGQodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BWYWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3QgZGlzYyA9IHV0aWwuY2FjaGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IGRlZi5vcHRpb25zO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbyBvZiBvcHRzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBvLl96b2QucHJvcFZhbHVlc1tkZWYuZGlzY3JpbWluYXRvcl07XG4gICAgICAgICAgICBpZiAoIXZhbHVlcyB8fCB2YWx1ZXMuc2l6ZSA9PT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggXCIke2RlZi5vcHRpb25zLmluZGV4T2Yobyl9XCJgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFwLmhhcyh2KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlIFwiJHtTdHJpbmcodil9XCJgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwLnNldCh2LCBvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIXV0aWwuaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IGRpc2MudmFsdWUuZ2V0KGlucHV0Py5bZGVmLmRpc2NyaW1pbmF0b3JdKTtcbiAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdC5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYudW5pb25GYWxsYmFjaykge1xuICAgICAgICAgICAgcmV0dXJuIF9zdXBlcihwYXlsb2FkLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3JcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdW5pb25cIixcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBub3RlOiBcIk5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3JcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgcGF0aDogW2RlZi5kaXNjcmltaW5hdG9yXSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEludGVyc2VjdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSW50ZXJzZWN0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBkZWYubGVmdC5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dCwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICBjb25zdCByaWdodCA9IGRlZi5yaWdodC5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dCwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICBjb25zdCBhc3luYyA9IGxlZnQgaW5zdGFuY2VvZiBQcm9taXNlIHx8IHJpZ2h0IGluc3RhbmNlb2YgUHJvbWlzZTtcbiAgICAgICAgaWYgKGFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2xlZnQsIHJpZ2h0XSkudGhlbigoW2xlZnQsIHJpZ2h0XSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVJbnRlcnNlY3Rpb25SZXN1bHRzKHBheWxvYWQsIGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVJbnRlcnNlY3Rpb25SZXN1bHRzKHBheWxvYWQsIGxlZnQsIHJpZ2h0KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBtZXJnZVZhbHVlcyhhLCBiKSB7XG4gICAgLy8gY29uc3QgYVR5cGUgPSBwYXJzZS50KGEpO1xuICAgIC8vIGNvbnN0IGJUeXBlID0gcGFyc2UudChiKTtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogYSB9O1xuICAgIH1cbiAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUgJiYgK2EgPT09ICtiKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gICAgfVxuICAgIGlmICh1dGlsLmlzUGxhaW5PYmplY3QoYSkgJiYgdXRpbC5pc1BsYWluT2JqZWN0KGIpKSB7XG4gICAgICAgIGNvbnN0IGJLZXlzID0gT2JqZWN0LmtleXMoYik7XG4gICAgICAgIGNvbnN0IHNoYXJlZEtleXMgPSBPYmplY3Qua2V5cyhhKS5maWx0ZXIoKGtleSkgPT4gYktleXMuaW5kZXhPZihrZXkpICE9PSAtMSk7XG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHsgLi4uYSwgLi4uYiB9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlRXJyb3JQYXRoOiBba2V5LCAuLi5zaGFyZWRWYWx1ZS5tZXJnZUVycm9yUGF0aF0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld09ialtrZXldID0gc2hhcmVkVmFsdWUuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3T2JqIH07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBtZXJnZUVycm9yUGF0aDogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1BID0gYVtpbmRleF07XG4gICAgICAgICAgICBjb25zdCBpdGVtQiA9IGJbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhpdGVtQSwgaXRlbUIpO1xuICAgICAgICAgICAgaWYgKCFzaGFyZWRWYWx1ZS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VFcnJvclBhdGg6IFtpbmRleCwgLi4uc2hhcmVkVmFsdWUubWVyZ2VFcnJvclBhdGhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICAgIH1cbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIG1lcmdlRXJyb3JQYXRoOiBbXSB9O1xufVxuZnVuY3Rpb24gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhyZXN1bHQsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQuaXNzdWVzLnB1c2goLi4ubGVmdC5pc3N1ZXMpO1xuICAgIH1cbiAgICBpZiAocmlnaHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQuaXNzdWVzLnB1c2goLi4ucmlnaHQuaXNzdWVzKTtcbiAgICB9XG4gICAgaWYgKHV0aWwuYWJvcnRlZChyZXN1bHQpKVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIGNvbnN0IG1lcmdlZCA9IG1lcmdlVmFsdWVzKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKTtcbiAgICBpZiAoIW1lcmdlZC52YWxpZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiBgICsgYCR7SlNPTi5zdHJpbmdpZnkobWVyZ2VkLm1lcmdlRXJyb3JQYXRoKX1gKTtcbiAgICB9XG4gICAgcmVzdWx0LnZhbHVlID0gbWVyZ2VkLmRhdGE7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBjb25zdCAkWm9kVHVwbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFR1cGxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgaXRlbXMgPSBkZWYuaXRlbXM7XG4gICAgY29uc3Qgb3B0U3RhcnQgPSBpdGVtcy5sZW5ndGggLSBbLi4uaXRlbXNdLnJldmVyc2UoKS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uX3pvZC5vcHRpbiAhPT0gXCJvcHRpb25hbFwiKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJ0dXBsZVwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBbXTtcbiAgICAgICAgY29uc3QgcHJvbXMgPSBbXTtcbiAgICAgICAgaWYgKCFkZWYucmVzdCkge1xuICAgICAgICAgICAgY29uc3QgdG9vQmlnID0gaW5wdXQubGVuZ3RoID4gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBpbnB1dC5sZW5ndGggPCBvcHRTdGFydCAtIDE7XG4gICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgLi4uKHRvb0JpZyA/IHsgY29kZTogXCJ0b29fYmlnXCIsIG1heGltdW06IGl0ZW1zLmxlbmd0aCB9IDogeyBjb2RlOiBcInRvb19zbWFsbFwiLCBtaW5pbXVtOiBpdGVtcy5sZW5ndGggfSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSAtMTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBpZiAoaSA+PSBpbnB1dC5sZW5ndGgpXG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gb3B0U3RhcnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbS5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGlucHV0W2ldLFxuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICB9LCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5yZXN0KSB7XG4gICAgICAgICAgICBjb25zdCByZXN0ID0gaW5wdXQuc2xpY2UoaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgcmVzdCkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYucmVzdC5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbCxcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICB9LCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlVHVwbGVSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHVwbGVSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlVHVwbGVSZXN1bHQocmVzdWx0LCBmaW5hbCwgaW5kZXgpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoaW5kZXgsIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICB9XG4gICAgZmluYWwudmFsdWVbaW5kZXhdID0gcmVzdWx0LnZhbHVlO1xufVxuZXhwb3J0IGNvbnN0ICRab2RSZWNvcmQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFJlY29yZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIXV0aWwuaXNQbGFpbk9iamVjdChpbnB1dCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcInJlY29yZFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvbXMgPSBbXTtcbiAgICAgICAgaWYgKGRlZi5rZXlUeXBlLl96b2QudmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBkZWYua2V5VHlwZS5fem9kLnZhbHVlcztcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYudmFsdWVUeXBlLl96b2QucnVuKHsgdmFsdWU6IGlucHV0W2tleV0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHVucmVjb2duaXplZDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWNvZ25pemVkID0gdW5yZWNvZ25pemVkID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICB1bnJlY29nbml6ZWQucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1bnJlY29nbml6ZWQgJiYgdW5yZWNvZ25pemVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogXCJ1bnJlY29nbml6ZWRfa2V5c1wiLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAga2V5czogdW5yZWNvZ25pemVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleVJlc3VsdCA9IGRlZi5rZXlUeXBlLl96b2QucnVuKHsgdmFsdWU6IGtleSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXlSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHlcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChrZXlSZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogXCJyZWNvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9rZXlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3Vlczoga2V5UmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW2tleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXlSZXN1bHQudmFsdWVdID0ga2V5UmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXlSZXN1bHQudmFsdWVdID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXlSZXN1bHQudmFsdWVdID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RNYXAgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE1hcFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIShpbnB1dCBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcIm1hcFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvbXMgPSBbXTtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgaW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleVJlc3VsdCA9IGRlZi5rZXlUeXBlLl96b2QucnVuKHsgdmFsdWU6IGtleSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVSZXN1bHQgPSBkZWYudmFsdWVUeXBlLl96b2QucnVuKHsgdmFsdWU6IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAoa2V5UmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSB8fCB2YWx1ZVJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKFByb21pc2UuYWxsKFtrZXlSZXN1bHQsIHZhbHVlUmVzdWx0XSkudGhlbigoW2tleVJlc3VsdCwgdmFsdWVSZXN1bHRdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU1hcFJlc3VsdChrZXlSZXN1bHQsIHZhbHVlUmVzdWx0LCBwYXlsb2FkLCBrZXksIGlucHV0LCBpbnN0LCBjdHgpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZU1hcFJlc3VsdChrZXlSZXN1bHQsIHZhbHVlUmVzdWx0LCBwYXlsb2FkLCBrZXksIGlucHV0LCBpbnN0LCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZU1hcFJlc3VsdChrZXlSZXN1bHQsIHZhbHVlUmVzdWx0LCBmaW5hbCwga2V5LCBpbnB1dCwgaW5zdCwgY3R4KSB7XG4gICAgaWYgKGtleVJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmICh1dGlsLnByb3BlcnR5S2V5VHlwZXMuaGFzKHR5cGVvZiBrZXkpKSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIGtleVJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2tleVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBrZXlSZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh2YWx1ZVJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmICh1dGlsLnByb3BlcnR5S2V5VHlwZXMuaGFzKHR5cGVvZiBrZXkpKSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHZhbHVlUmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJtYXBcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZWxlbWVudFwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgaXNzdWVzOiB2YWx1ZVJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluYWwudmFsdWUuc2V0KGtleVJlc3VsdC52YWx1ZSwgdmFsdWVSZXN1bHQudmFsdWUpO1xufVxuZXhwb3J0IGNvbnN0ICRab2RTZXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFNldFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIShpbnB1dCBpbnN0YW5jZW9mIFNldCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic2V0XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvbXMgPSBbXTtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGlucHV0KSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYudmFsdWVUeXBlLl96b2QucnVuKHsgdmFsdWU6IGl0ZW0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVTZXRSZXN1bHQocmVzdWx0LCBwYXlsb2FkKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGhhbmRsZVNldFJlc3VsdChyZXN1bHQsIHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVNldFJlc3VsdChyZXN1bHQsIGZpbmFsKSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnJlc3VsdC5pc3N1ZXMpO1xuICAgIH1cbiAgICBmaW5hbC52YWx1ZS5hZGQocmVzdWx0LnZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kRW51bSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRW51bVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHV0aWwuZ2V0RW51bVZhbHVlcyhkZWYuZW50cmllcyk7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQodmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IG5ldyBSZWdFeHAoYF4oJHt2YWx1ZXNcbiAgICAgICAgLmZpbHRlcigoaykgPT4gdXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2YgaykpXG4gICAgICAgIC5tYXAoKG8pID0+ICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIiA/IHV0aWwuZXNjYXBlUmVnZXgobykgOiBvLnRvU3RyaW5nKCkpKVxuICAgICAgICAuam9pbihcInxcIil9KSRgKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpbnN0Ll96b2QudmFsdWVzLmhhcyhpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3ZhbHVlXCIsXG4gICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZExpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZExpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QudmFsdWVzID0gbmV3IFNldChkZWYudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IG5ldyBSZWdFeHAoYF4oJHtkZWYudmFsdWVzXG4gICAgICAgIC5tYXAoKG8pID0+ICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIiA/IHV0aWwuZXNjYXBlUmVnZXgobykgOiBvID8gby50b1N0cmluZygpIDogU3RyaW5nKG8pKSlcbiAgICAgICAgLmpvaW4oXCJ8XCIpfSkkYCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5zdC5fem9kLnZhbHVlcy5oYXMoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgdmFsdWVzOiBkZWYudmFsdWVzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RGaWxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBGaWxlKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiZmlsZVwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVHJhbnNmb3JtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RUcmFuc2Zvcm1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBfb3V0ID0gZGVmLnRyYW5zZm9ybShwYXlsb2FkLnZhbHVlLCBwYXlsb2FkKTtcbiAgICAgICAgaWYgKF9jdHguYXN5bmMpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IF9vdXQgaW5zdGFuY2VvZiBQcm9taXNlID8gX291dCA6IFByb21pc2UucmVzb2x2ZShfb3V0KTtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQudGhlbigob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfb3V0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gX291dDtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RPcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgaW5zdC5fem9kLm9wdG91dCA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzID8gbmV3IFNldChbLi4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcywgdW5kZWZpbmVkXSkgOiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IGRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gcGF0dGVybiA/IG5ldyBSZWdFeHAoYF4oJHt1dGlsLmNsZWFuUmVnZXgocGF0dGVybi5zb3VyY2UpfSk/JGApIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdWxsYWJsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IGRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gcGF0dGVybiA/IG5ldyBSZWdFeHAoYF4oJHt1dGlsLmNsZWFuUmVnZXgocGF0dGVybi5zb3VyY2UpfXxudWxsKSRgKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzID8gbmV3IFNldChbLi4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcywgbnVsbF0pIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcmV0dXJuIGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZERlZmF1bHQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZERlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICAvLyBpbnN0Ll96b2QucWluID0gXCJ0cnVlXCI7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqICRab2REZWZhdWx0IGFsd2F5cyByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICogSXQgZG9lc24ndCBwYXNzIHRoZSBkZWZhdWx0IHZhbHVlIGludG8gdGhlIHZhbGlkYXRvciAoXCJwcmVmYXVsdFwiKS4gVGhlcmUncyBubyByZWFzb24gdG8gcGFzcyB0aGUgZGVmYXVsdCB2YWx1ZSB0aHJvdWdoIHZhbGlkYXRpb24uIFRoZSB2YWxpZGl0eSBvZiB0aGUgZGVmYXVsdCBpcyBlbmZvcmNlZCBieSBUeXBlU2NyaXB0IHN0YXRpY2FsbHkuIE90aGVyd2lzZSwgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVzZXIgdG8gZW5zdXJlIHRoZSBkZWZhdWx0IGlzIHZhbGlkLiBJbiB0aGUgY2FzZSBvZiBwaXBlcyB3aXRoIGRpdmVyZ2VudCBpbi9vdXQgdHlwZXMsIHlvdSBjYW4gc3BlY2lmeSB0aGUgZGVmYXVsdCBvbiB0aGUgYGluYCBzY2hlbWEgb2YgeW91ciBab2RQaXBlIHRvIHNldCBhIFwicHJlZmF1bHRcIiBmb3IgdGhlIHBpcGUuICAgKi9cbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVEZWZhdWx0UmVzdWx0KHJlc3VsdCwgZGVmKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZURlZmF1bHRSZXN1bHQocmVzdWx0LCBkZWYpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZURlZmF1bHRSZXN1bHQocGF5bG9hZCwgZGVmKSB7XG4gICAgaWYgKHBheWxvYWQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBheWxvYWQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFByZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RQcmVmYXVsdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROb25PcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTm9uT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO1xuICAgICAgICByZXR1cm4gdiA/IG5ldyBTZXQoWy4uLnZdLmZpbHRlcigoeCkgPT4geCAhPT0gdW5kZWZpbmVkKSkgOiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocmVzdWx0LCBpbnN0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHJlc3VsdCwgaW5zdCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocGF5bG9hZCwgaW5zdCkge1xuICAgIGlmICghcGF5bG9hZC5pc3N1ZXMubGVuZ3RoICYmIHBheWxvYWQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBleHBlY3RlZDogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBheWxvYWQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFN1Y2Nlc3NcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHJlc3VsdC5pc3N1ZXMubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHJlc3VsdC5pc3N1ZXMubGVuZ3RoID09PSAwO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENhdGNoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDYXRjaFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0b3V0KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5jYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogcmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5jYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzc3VlczogcmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE5hTiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTmFOXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLnZhbHVlICE9PSBcIm51bWJlclwiIHx8ICFOdW1iZXIuaXNOYU4ocGF5bG9hZC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibmFuXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RQaXBlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RQaXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmluLl96b2QudmFsdWVzKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5pbi5fem9kLm9wdGluKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBkZWYub3V0Ll96b2Qub3B0b3V0KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBkZWYuaW4uX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdC50aGVuKChsZWZ0KSA9PiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIGRlZiwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZVBpcGVSZXN1bHQobGVmdCwgZGVmLCBjdHgpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVBpcGVSZXN1bHQobGVmdCwgZGVmLCBjdHgpIHtcbiAgICBpZiAodXRpbC5hYm9ydGVkKGxlZnQpKSB7XG4gICAgICAgIHJldHVybiBsZWZ0O1xuICAgIH1cbiAgICByZXR1cm4gZGVmLm91dC5fem9kLnJ1bih7IHZhbHVlOiBsZWZ0LnZhbHVlLCBpc3N1ZXM6IGxlZnQuaXNzdWVzIH0sIGN0eCk7XG59XG5leHBvcnQgY29uc3QgJFpvZFJlYWRvbmx5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RSZWFkb25seVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKGhhbmRsZVJlYWRvbmx5UmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlUmVhZG9ubHlSZXN1bHQocmVzdWx0KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVSZWFkb25seVJlc3VsdChwYXlsb2FkKSB7XG4gICAgcGF5bG9hZC52YWx1ZSA9IE9iamVjdC5mcmVlemUocGF5bG9hZC52YWx1ZSk7XG4gICAgcmV0dXJuIHBheWxvYWQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFRlbXBsYXRlTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVGVtcGxhdGVMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgcmVnZXhQYXJ0cyA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBkZWYucGFydHMpIHtcbiAgICAgICAgaWYgKHBhcnQgaW5zdGFuY2VvZiAkWm9kVHlwZSkge1xuICAgICAgICAgICAgaWYgKCFwYXJ0Ll96b2QucGF0dGVybikge1xuICAgICAgICAgICAgICAgIC8vIGlmICghc291cmNlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLnBhcnQuX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwYXJ0Ll96b2QucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCA/IHBhcnQuX3pvZC5wYXR0ZXJuLnNvdXJjZSA6IHBhcnQuX3pvZC5wYXR0ZXJuO1xuICAgICAgICAgICAgaWYgKCFzb3VyY2UpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtwYXJ0Ll96b2QudHJhaXRzfWApO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzb3VyY2Uuc3RhcnRzV2l0aChcIl5cIikgPyAxIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IHNvdXJjZS5lbmRzV2l0aChcIiRcIikgPyBzb3VyY2UubGVuZ3RoIC0gMSA6IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICByZWdleFBhcnRzLnB1c2goc291cmNlLnNsaWNlKHN0YXJ0LCBlbmQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYXJ0ID09PSBudWxsIHx8IHV0aWwucHJpbWl0aXZlVHlwZXMuaGFzKHR5cGVvZiBwYXJ0KSkge1xuICAgICAgICAgICAgcmVnZXhQYXJ0cy5wdXNoKHV0aWwuZXNjYXBlUmVnZXgoYCR7cGFydH1gKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke3BhcnR9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeJHtyZWdleFBhcnRzLmpvaW4oXCJcIil9JGApO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdC5fem9kLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFpbnN0Ll96b2QucGF0dGVybi50ZXN0KHBheWxvYWQudmFsdWUpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IGluc3QuX3pvZC5wYXR0ZXJuLnNvdXJjZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RQcm9taXNlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RQcm9taXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBheWxvYWQudmFsdWUpLnRoZW4oKGlubmVyKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHsgdmFsdWU6IGlubmVyLCBpc3N1ZXM6IFtdIH0sIGN0eCkpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTGF6eSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTGF6eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwiaW5uZXJUeXBlXCIsICgpID0+IGRlZi5nZXR0ZXIoKSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4gaW5zdC5fem9kLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gaW5zdC5fem9kLmlubmVyVHlwZS5fem9kLm9wdGluKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBpbnN0Ll96b2QuaW5uZXJUeXBlLl96b2Qub3B0b3V0KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gaW5zdC5fem9kLmlubmVyVHlwZTtcbiAgICAgICAgcmV0dXJuIGlubmVyLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDdXN0b20gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEN1c3RvbVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY2hlY2tzLiRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfKSA9PiB7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCByID0gZGVmLmZuKGlucHV0KTtcbiAgICAgICAgaWYgKHIgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gci50aGVuKChyKSA9PiBoYW5kbGVSZWZpbmVSZXN1bHQociwgcGF5bG9hZCwgaW5wdXQsIGluc3QpKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVSZWZpbmVSZXN1bHQociwgcGF5bG9hZCwgaW5wdXQsIGluc3QpO1xuICAgICAgICByZXR1cm47XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlUmVmaW5lUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaW5wdXQsIGluc3QpIHtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBjb25zdCBfaXNzID0ge1xuICAgICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCwgLy8gaW5jb3Jwb3JhdGVzIHBhcmFtcy5lcnJvciBpbnRvIGlzc3VlIHJlcG9ydGluZ1xuICAgICAgICAgICAgcGF0aDogWy4uLihpbnN0Ll96b2QuZGVmLnBhdGggPz8gW10pXSwgLy8gaW5jb3Jwb3JhdGVzIHBhcmFtcy5lcnJvciBpbnRvIGlzc3VlIHJlcG9ydGluZ1xuICAgICAgICAgICAgY29udGludWU6ICFpbnN0Ll96b2QuZGVmLmFib3J0LFxuICAgICAgICAgICAgLy8gcGFyYW1zOiBpbnN0Ll96b2QuZGVmLnBhcmFtcyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGluc3QuX3pvZC5kZWYucGFyYW1zKVxuICAgICAgICAgICAgX2lzcy5wYXJhbXMgPSBpbnN0Ll96b2QuZGVmLnBhcmFtcztcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh1dGlsLmlzc3VlKF9pc3MpKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2VkVHlwZSA9IChkYXRhKSA9PiB7XG4gICAgY29uc3QgdCA9IHR5cGVvZiBkYXRhO1xuICAgIHN3aXRjaCAodCkge1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0YSkgPyBcIk5hTlwiIDogXCJudW1iZXJcIjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYXJyYXlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihkYXRhKSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBkYXRhLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJjaGFyYWN0ZXJzXCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJieXRlc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcIml0ZW1zXCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIml0ZW1zXCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgTm91bnMgPSB7XG4gICAgICAgIHJlZ2V4OiBcImlucHV0XCIsXG4gICAgICAgIGVtYWlsOiBcImVtYWlsIGFkZHJlc3NcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08gZGF0ZXRpbWVcIixcbiAgICAgICAgZGF0ZTogXCJJU08gZGF0ZVwiLFxuICAgICAgICB0aW1lOiBcIklTTyB0aW1lXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTyBkdXJhdGlvblwiLFxuICAgICAgICBpcHY0OiBcIklQdjQgYWRkcmVzc1wiLFxuICAgICAgICBpcHY2OiBcIklQdjYgYWRkcmVzc1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCByYW5nZVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiByYW5nZVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWVuY29kZWQgc3RyaW5nXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiBzdHJpbmdcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCBudW1iZXJcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtpc3N1ZS5leHBlY3RlZH0sIHJlY2VpdmVkICR7cGFyc2VkVHlwZShpc3N1ZS5pbnB1dCl9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUb28gYmlnOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IHRvIGhhdmUgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJlbGVtZW50c1wifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUb28gYmlnOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IHRvIGJlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVG9vIHNtYWxsOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbn0gdG8gaGF2ZSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtpc3N1ZS5vcmlnaW59IHRvIGJlICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHN0cmluZzogbXVzdCBzdGFydCB3aXRoIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBzdHJpbmc6IG11c3QgaW5jbHVkZSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCAke05vdW5zW19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVW5yZWNvZ25pemVkIGtleSR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIGtleSBpbiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJJbnZhbGlkIGlucHV0XCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlIGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dGA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIiwgImV4cG9ydCBjb25zdCAkb3V0cHV0ID0gU3ltYm9sKFwiWm9kT3V0cHV0XCIpO1xuZXhwb3J0IGNvbnN0ICRpbnB1dCA9IFN5bWJvbChcIlpvZElucHV0XCIpO1xuZXhwb3J0IGNsYXNzICRab2RSZWdpc3RyeSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5faWRtYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGFkZChzY2hlbWEsIC4uLl9tZXRhKSB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSBfbWV0YVswXTtcbiAgICAgICAgdGhpcy5fbWFwLnNldChzY2hlbWEsIG1ldGEpO1xuICAgICAgICBpZiAobWV0YSAmJiB0eXBlb2YgbWV0YSA9PT0gXCJvYmplY3RcIiAmJiBcImlkXCIgaW4gbWV0YSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lkbWFwLmhhcyhtZXRhLmlkKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSUQgJHttZXRhLmlkfSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVnaXN0cnlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2lkbWFwLnNldChtZXRhLmlkLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLl9pZG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHJlbW92ZShzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuX21hcC5nZXQoc2NoZW1hKTtcbiAgICAgICAgaWYgKG1ldGEgJiYgdHlwZW9mIG1ldGEgPT09IFwib2JqZWN0XCIgJiYgXCJpZFwiIGluIG1ldGEpIHtcbiAgICAgICAgICAgIHRoaXMuX2lkbWFwLmRlbGV0ZShtZXRhLmlkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYXAuZGVsZXRlKHNjaGVtYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBnZXQoc2NoZW1hKSB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLl9tYXAuZ2V0KHNjaGVtYSkgYXMgYW55O1xuICAgICAgICAvLyBpbmhlcml0IG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHAgPSBzY2hlbWEuX3pvZC5wYXJlbnQ7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBjb25zdCBwbSA9IHsgLi4uKHRoaXMuZ2V0KHApID8/IHt9KSB9O1xuICAgICAgICAgICAgZGVsZXRlIHBtLmlkOyAvLyBkbyBub3QgaW5oZXJpdCBpZFxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucG0sIC4uLnRoaXMuX21hcC5nZXQoc2NoZW1hKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAuZ2V0KHNjaGVtYSk7XG4gICAgfVxuICAgIGhhcyhzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5oYXMoc2NoZW1hKTtcbiAgICB9XG59XG4vLyByZWdpc3RyaWVzXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIG5ldyAkWm9kUmVnaXN0cnkoKTtcbn1cbmV4cG9ydCBjb25zdCBnbG9iYWxSZWdpc3RyeSA9IC8qQF9fUFVSRV9fKi8gcmVnaXN0cnkoKTtcbiIsICJpbXBvcnQgKiBhcyBjaGVja3MgZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5pbXBvcnQgKiBhcyBzY2hlbWFzIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIF9zdHJpbmcoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkU3RyaW5nKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9lbWFpbChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJlbWFpbFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZ3VpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJndWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91dWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3V1aWR2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1dWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBcInY0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3V1aWR2NihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1dWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBcInY2XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3V1aWR2NyhDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1dWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBcInY3XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VybChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1cmxcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Vtb2ppKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImVtb2ppXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9uYW5vaWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwibmFub2lkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jdWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImN1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2N1aWQyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImN1aWQyXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91bGlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInVsaWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3hpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ4aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2tzdWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImtzdWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pcHY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImlwdjRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2lwdjYoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiaXB2NlwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY2lkcnY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImNpZHJ2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY2lkcnY2KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImNpZHJ2NlwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYmFzZTY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImJhc2U2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYmFzZTY0dXJsKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImJhc2U2NHVybFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZTE2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJlMTY0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9qd3QoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiand0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFRpbWVQcmVjaXNpb24gPSB7XG4gICAgQW55OiBudWxsLFxuICAgIE1pbnV0ZTogLTEsXG4gICAgU2Vjb25kOiAwLFxuICAgIE1pbGxpc2Vjb25kOiAzLFxuICAgIE1pY3Jvc2Vjb25kOiA2LFxufTtcbmV4cG9ydCBmdW5jdGlvbiBfaXNvRGF0ZVRpbWUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgIHByZWNpc2lvbjogbnVsbCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaXNvRGF0ZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJkYXRlXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaXNvVGltZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ0aW1lXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pc29EdXJhdGlvbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJkdXJhdGlvblwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX251bWJlcihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWROdW1iZXIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ludChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwic2FmZWludFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9mbG9hdDMyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2s6IFwibnVtYmVyX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJmbG9hdDMyXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Zsb2F0NjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcImZsb2F0NjRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaW50MzIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcImludDMyXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VpbnQzMihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwidWludDMyXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Jvb2xlYW4oQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZEJvb2xlYW4oQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9iaWdpbnQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkQmlnaW50KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbnQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIGNoZWNrOiBcImJpZ2ludF9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiaW50NjRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdWludDY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgY2hlY2s6IFwiYmlnaW50X2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJ1aW50NjRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc3ltYm9sKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzeW1ib2xcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdW5kZWZpbmVkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ1bmRlZmluZWRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbnVsbChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVsbFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9hbnkoQ2xhc3MpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJhbnlcIixcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdW5rbm93bihDbGFzcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVua25vd25cIixcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbmV2ZXIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm5ldmVyXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3ZvaWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInZvaWRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZGF0ZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkRGF0ZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX25hbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibmFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2x0KHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tMZXNzVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImxlc3NfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbHRlKHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tMZXNzVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImxlc3NfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGB6Lmx0ZSgpYCBpbnN0ZWFkLiAqL1xuX2x0ZSBhcyBfbWF4LCB9O1xuZXhwb3J0IGZ1bmN0aW9uIF9ndCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrR3JlYXRlclRoYW4oe1xuICAgICAgICBjaGVjazogXCJncmVhdGVyX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2d0ZSh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrR3JlYXRlclRoYW4oe1xuICAgICAgICBjaGVjazogXCJncmVhdGVyX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IFxuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5ndGUoKWAgaW5zdGVhZC4gKi9cbl9ndGUgYXMgX21pbiwgfTtcbmV4cG9ydCBmdW5jdGlvbiBfcG9zaXRpdmUocGFyYW1zKSB7XG4gICAgcmV0dXJuIF9ndCgwLCBwYXJhbXMpO1xufVxuLy8gbmVnYXRpdmVcbmV4cG9ydCBmdW5jdGlvbiBfbmVnYXRpdmUocGFyYW1zKSB7XG4gICAgcmV0dXJuIF9sdCgwLCBwYXJhbXMpO1xufVxuLy8gbm9ucG9zaXRpdmVcbmV4cG9ydCBmdW5jdGlvbiBfbm9ucG9zaXRpdmUocGFyYW1zKSB7XG4gICAgcmV0dXJuIF9sdGUoMCwgcGFyYW1zKTtcbn1cbi8vIG5vbm5lZ2F0aXZlXG5leHBvcnQgZnVuY3Rpb24gX25vbm5lZ2F0aXZlKHBhcmFtcykge1xuICAgIHJldHVybiBfZ3RlKDAsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gX211bHRpcGxlT2YodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja011bHRpcGxlT2Yoe1xuICAgICAgICBjaGVjazogXCJtdWx0aXBsZV9vZlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWF4U2l6ZShtYXhpbXVtLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNYXhTaXplKHtcbiAgICAgICAgY2hlY2s6IFwibWF4X3NpemVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWF4aW11bSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWluU2l6ZShtaW5pbXVtLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNaW5TaXplKHtcbiAgICAgICAgY2hlY2s6IFwibWluX3NpemVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWluaW11bSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc2l6ZShzaXplLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tTaXplRXF1YWxzKHtcbiAgICAgICAgY2hlY2s6IFwic2l6ZV9lcXVhbHNcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgc2l6ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWF4TGVuZ3RoKG1heGltdW0sIHBhcmFtcykge1xuICAgIGNvbnN0IGNoID0gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNYXhMZW5ndGgoe1xuICAgICAgICBjaGVjazogXCJtYXhfbGVuZ3RoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1heGltdW0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9taW5MZW5ndGgobWluaW11bSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWluTGVuZ3RoKHtcbiAgICAgICAgY2hlY2s6IFwibWluX2xlbmd0aFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBtaW5pbXVtLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9sZW5ndGgobGVuZ3RoLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tMZW5ndGhFcXVhbHMoe1xuICAgICAgICBjaGVjazogXCJsZW5ndGhfZXF1YWxzXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIGxlbmd0aCxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcmVnZXgocGF0dGVybiwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrUmVnZXgoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJyZWdleFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBwYXR0ZXJuLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9sb3dlcmNhc2UocGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTG93ZXJDYXNlKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwibG93ZXJjYXNlXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VwcGVyY2FzZShwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tVcHBlckNhc2Uoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJ1cHBlcmNhc2VcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaW5jbHVkZXMoaW5jbHVkZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0luY2x1ZGVzKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwiaW5jbHVkZXNcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgaW5jbHVkZXMsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3N0YXJ0c1dpdGgocHJlZml4LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tTdGFydHNXaXRoKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwic3RhcnRzX3dpdGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgcHJlZml4LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9lbmRzV2l0aChzdWZmaXgsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0VuZHNXaXRoKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwiZW5kc193aXRoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHN1ZmZpeCxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcHJvcGVydHkocHJvcGVydHksIHNjaGVtYSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrUHJvcGVydHkoe1xuICAgICAgICBjaGVjazogXCJwcm9wZXJ0eVwiLFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9taW1lKHR5cGVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNaW1lVHlwZSh7XG4gICAgICAgIGNoZWNrOiBcIm1pbWVfdHlwZVwiLFxuICAgICAgICBtaW1lOiB0eXBlcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfb3ZlcndyaXRlKHR4KSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrT3ZlcndyaXRlKHtcbiAgICAgICAgY2hlY2s6IFwib3ZlcndyaXRlXCIsXG4gICAgICAgIHR4LFxuICAgIH0pO1xufVxuLy8gbm9ybWFsaXplXG5leHBvcnQgZnVuY3Rpb24gX25vcm1hbGl6ZShmb3JtKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC5ub3JtYWxpemUoZm9ybSkpO1xufVxuLy8gdHJpbVxuZXhwb3J0IGZ1bmN0aW9uIF90cmltKCkge1xuICAgIHJldHVybiBfb3ZlcndyaXRlKChpbnB1dCkgPT4gaW5wdXQudHJpbSgpKTtcbn1cbi8vIHRvTG93ZXJDYXNlXG5leHBvcnQgZnVuY3Rpb24gX3RvTG93ZXJDYXNlKCkge1xuICAgIHJldHVybiBfb3ZlcndyaXRlKChpbnB1dCkgPT4gaW5wdXQudG9Mb3dlckNhc2UoKSk7XG59XG4vLyB0b1VwcGVyQ2FzZVxuZXhwb3J0IGZ1bmN0aW9uIF90b1VwcGVyQ2FzZSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0LnRvVXBwZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9hcnJheShDbGFzcywgZWxlbWVudCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgLy8gZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIC8vICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VuaW9uKENsYXNzLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9kaXNjcmltaW5hdGVkVW5pb24oQ2xhc3MsIGRpc2NyaW1pbmF0b3IsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ludGVyc2VjdGlvbihDbGFzcywgbGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJpbnRlcnNlY3Rpb25cIixcbiAgICAgICAgbGVmdCxcbiAgICAgICAgcmlnaHQsXG4gICAgfSk7XG59XG4vLyBleHBvcnQgZnVuY3Rpb24gX3R1cGxlKFxuLy8gICBDbGFzczogdXRpbC5TY2hlbWFDbGFzczxzY2hlbWFzLiRab2RUdXBsZT4sXG4vLyAgIGl0ZW1zOiBbXSxcbi8vICAgcGFyYW1zPzogc3RyaW5nIHwgJFpvZFR1cGxlUGFyYW1zXG4vLyApOiBzY2hlbWFzLiRab2RUdXBsZTxbXSwgbnVsbD47XG5leHBvcnQgZnVuY3Rpb24gX3R1cGxlKENsYXNzLCBpdGVtcywgX3BhcmFtc09yUmVzdCwgX3BhcmFtcykge1xuICAgIGNvbnN0IGhhc1Jlc3QgPSBfcGFyYW1zT3JSZXN0IGluc3RhbmNlb2Ygc2NoZW1hcy4kWm9kVHlwZTtcbiAgICBjb25zdCBwYXJhbXMgPSBoYXNSZXN0ID8gX3BhcmFtcyA6IF9wYXJhbXNPclJlc3Q7XG4gICAgY29uc3QgcmVzdCA9IGhhc1Jlc3QgPyBfcGFyYW1zT3JSZXN0IDogbnVsbDtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ0dXBsZVwiLFxuICAgICAgICBpdGVtcyxcbiAgICAgICAgcmVzdCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcmVjb3JkKENsYXNzLCBrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInJlY29yZFwiLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX21hcChDbGFzcywga2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zZXQoQ2xhc3MsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZW51bShDbGFzcywgdmFsdWVzLCBwYXJhbXMpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlcy5tYXAoKHYpID0+IFt2LCB2XSkpIDogdmFsdWVzO1xuICAgIC8vIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAvLyAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgLy8gICAgIGVudHJpZXNbdmFsdWVdID0gdmFsdWU7XG4gICAgLy8gICB9XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIE9iamVjdC5hc3NpZ24oZW50cmllcywgdmFsdWVzKTtcbiAgICAvLyB9XG4gICAgLy8gY29uc3QgZW50cmllczogdXRpbC5FbnVtTGlrZSA9IHt9O1xuICAgIC8vIGZvciAoY29uc3QgdmFsIG9mIHZhbHVlcykge1xuICAgIC8vICAgZW50cmllc1t2YWxdID0gdmFsO1xuICAgIC8vIH1cbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vKiogQGRlcHJlY2F0ZWQgVGhpcyBBUEkgaGFzIGJlZW4gbWVyZ2VkIGludG8gYHouZW51bSgpYC4gVXNlIGB6LmVudW0oKWAgaW5zdGVhZC5cbiAqXG4gKiBgYGB0c1xuICogZW51bSBDb2xvcnMgeyByZWQsIGdyZWVuLCBibHVlIH1cbiAqIHouZW51bShDb2xvcnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfbmF0aXZlRW51bShDbGFzcywgZW50cmllcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9saXRlcmFsKENsYXNzLCB2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibGl0ZXJhbFwiLFxuICAgICAgICB2YWx1ZXM6IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9maWxlKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3RyYW5zZm9ybShDbGFzcywgZm4pIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgdHJhbnNmb3JtOiBmbixcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfb3B0aW9uYWwoQ2xhc3MsIGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbnVsbGFibGUoQ2xhc3MsIGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bGxhYmxlXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZGVmYXVsdChDbGFzcywgaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJkZWZhdWx0XCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbm9ub3B0aW9uYWwoQ2xhc3MsIGlubmVyVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zdWNjZXNzKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY2F0Y2goQ2xhc3MsIGlubmVyVHlwZSwgY2F0Y2hWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImNhdGNoXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICAgICAgY2F0Y2hWYWx1ZTogKHR5cGVvZiBjYXRjaFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBjYXRjaFZhbHVlIDogKCkgPT4gY2F0Y2hWYWx1ZSksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3BpcGUoQ2xhc3MsIGluXywgb3V0KSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogaW5fLFxuICAgICAgICBvdXQsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3JlYWRvbmx5KENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJyZWFkb25seVwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3RlbXBsYXRlTGl0ZXJhbChDbGFzcywgcGFydHMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInRlbXBsYXRlX2xpdGVyYWxcIixcbiAgICAgICAgcGFydHMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2xhenkoQ2xhc3MsIGdldHRlcikge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImxhenlcIixcbiAgICAgICAgZ2V0dGVyLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9wcm9taXNlKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJwcm9taXNlXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY3VzdG9tKENsYXNzLCBmbiwgX3BhcmFtcykge1xuICAgIGNvbnN0IG5vcm0gPSB1dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKTtcbiAgICBub3JtLmFib3J0ID8/IChub3JtLmFib3J0ID0gdHJ1ZSk7IC8vIGRlZmF1bHQgdG8gYWJvcnQ6ZmFsc2VcbiAgICBjb25zdCBzY2hlbWEgPSBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgICBjaGVjazogXCJjdXN0b21cIixcbiAgICAgICAgZm46IGZuLFxuICAgICAgICAuLi5ub3JtLFxuICAgIH0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59XG4vLyBleHBvcnQgZnVuY3Rpb24gX3JlZmluZTxUPihcbi8vICAgQ2xhc3M6IHV0aWwuU2NoZW1hQ2xhc3M8c2NoZW1hcy4kWm9kQ3VzdG9tPixcbi8vICAgZm46IChhcmc6IE5vSW5mZXI8VD4pID0+IHV0aWwuTWF5YmVBc3luYzx1bmtub3duPixcbi8vICAgX3BhcmFtczogc3RyaW5nIHwgJFpvZEN1c3RvbVBhcmFtcyA9IHt9XG4vLyApOiBjaGVja3MuJFpvZENoZWNrPFQ+IHtcbi8vICAgcmV0dXJuIF9jdXN0b20oQ2xhc3MsIGZuLCBfcGFyYW1zKTtcbi8vIH1cbi8vIHNhbWUgYXMgX2N1c3RvbSBidXQgZGVmYXVsdHMgdG8gYWJvcnQ6ZmFsc2VcbmV4cG9ydCBmdW5jdGlvbiBfcmVmaW5lKENsYXNzLCBmbiwgX3BhcmFtcykge1xuICAgIGNvbnN0IHNjaGVtYSA9IG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogZm4sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpLFxuICAgIH0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59XG5leHBvcnQgZnVuY3Rpb24gX3N0cmluZ2Jvb2woQ2xhc3NlcywgX3BhcmFtcykge1xuICAgIGNvbnN0IHBhcmFtcyA9IHV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpO1xuICAgIGxldCB0cnV0aHlBcnJheSA9IHBhcmFtcy50cnV0aHkgPz8gW1widHJ1ZVwiLCBcIjFcIiwgXCJ5ZXNcIiwgXCJvblwiLCBcInlcIiwgXCJlbmFibGVkXCJdO1xuICAgIGxldCBmYWxzeUFycmF5ID0gcGFyYW1zLmZhbHN5ID8/IFtcImZhbHNlXCIsIFwiMFwiLCBcIm5vXCIsIFwib2ZmXCIsIFwiblwiLCBcImRpc2FibGVkXCJdO1xuICAgIGlmIChwYXJhbXMuY2FzZSAhPT0gXCJzZW5zaXRpdmVcIikge1xuICAgICAgICB0cnV0aHlBcnJheSA9IHRydXRoeUFycmF5Lm1hcCgodikgPT4gKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiID8gdi50b0xvd2VyQ2FzZSgpIDogdikpO1xuICAgICAgICBmYWxzeUFycmF5ID0gZmFsc3lBcnJheS5tYXAoKHYpID0+ICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHYudG9Mb3dlckNhc2UoKSA6IHYpKTtcbiAgICB9XG4gICAgY29uc3QgdHJ1dGh5U2V0ID0gbmV3IFNldCh0cnV0aHlBcnJheSk7XG4gICAgY29uc3QgZmFsc3lTZXQgPSBuZXcgU2V0KGZhbHN5QXJyYXkpO1xuICAgIGNvbnN0IF9QaXBlID0gQ2xhc3Nlcy5QaXBlID8/IHNjaGVtYXMuJFpvZFBpcGU7XG4gICAgY29uc3QgX0Jvb2xlYW4gPSBDbGFzc2VzLkJvb2xlYW4gPz8gc2NoZW1hcy4kWm9kQm9vbGVhbjtcbiAgICBjb25zdCBfU3RyaW5nID0gQ2xhc3Nlcy5TdHJpbmcgPz8gc2NoZW1hcy4kWm9kU3RyaW5nO1xuICAgIGNvbnN0IF9UcmFuc2Zvcm0gPSBDbGFzc2VzLlRyYW5zZm9ybSA/PyBzY2hlbWFzLiRab2RUcmFuc2Zvcm07XG4gICAgY29uc3QgdHggPSBuZXcgX1RyYW5zZm9ybSh7XG4gICAgICAgIHR5cGU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybTogKGlucHV0LCBwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YSA9IGlucHV0O1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5jYXNlICE9PSBcInNlbnNpdGl2ZVwiKVxuICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAodHJ1dGh5U2V0LmhhcyhkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmFsc3lTZXQuaGFzKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJzdHJpbmdib29sXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogWy4uLnRydXRoeVNldCwgLi4uZmFsc3lTZXRdLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5zdDogdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogcGFyYW1zLmVycm9yLFxuICAgIH0pO1xuICAgIC8vIHBhcmFtcy5lcnJvcjtcbiAgICBjb25zdCBpbm5lclBpcGUgPSBuZXcgX1BpcGUoe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IG5ldyBfU3RyaW5nKHsgdHlwZTogXCJzdHJpbmdcIiwgZXJyb3I6IHBhcmFtcy5lcnJvciB9KSxcbiAgICAgICAgb3V0OiB0eCxcbiAgICAgICAgZXJyb3I6IHBhcmFtcy5lcnJvcixcbiAgICB9KTtcbiAgICBjb25zdCBvdXRlclBpcGUgPSBuZXcgX1BpcGUoe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IGlubmVyUGlwZSxcbiAgICAgICAgb3V0OiBuZXcgX0Jvb2xlYW4oe1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBlcnJvcjogcGFyYW1zLmVycm9yLFxuICAgICAgICB9KSxcbiAgICAgICAgZXJyb3I6IHBhcmFtcy5lcnJvcixcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0ZXJQaXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zdHJpbmdGb3JtYXQoQ2xhc3MsIGZvcm1hdCwgZm5PclJlZ2V4LCBfcGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBwYXJhbXMgPSB1dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKTtcbiAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdCxcbiAgICAgICAgZm46IHR5cGVvZiBmbk9yUmVnZXggPT09IFwiZnVuY3Rpb25cIiA/IGZuT3JSZWdleCA6ICh2YWwpID0+IGZuT3JSZWdleC50ZXN0KHZhbCksXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICB9O1xuICAgIGlmIChmbk9yUmVnZXggaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgZGVmLnBhdHRlcm4gPSBmbk9yUmVnZXg7XG4gICAgfVxuICAgIGNvbnN0IGluc3QgPSBuZXcgQ2xhc3MoZGVmKTtcbiAgICByZXR1cm4gaW5zdDtcbn1cbiIsICJpbXBvcnQgeyAkWm9kUmVnaXN0cnksIGdsb2JhbFJlZ2lzdHJ5IH0gZnJvbSBcIi4vcmVnaXN0cmllcy5qc1wiO1xuaW1wb3J0IHsgZ2V0RW51bVZhbHVlcyB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmV4cG9ydCBjbGFzcyBKU09OU2NoZW1hR2VuZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICAgICAgdGhpcy5tZXRhZGF0YVJlZ2lzdHJ5ID0gcGFyYW1zPy5tZXRhZGF0YSA/PyBnbG9iYWxSZWdpc3RyeTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBwYXJhbXM/LnRhcmdldCA/PyBcImRyYWZ0LTIwMjAtMTJcIjtcbiAgICAgICAgdGhpcy51bnJlcHJlc2VudGFibGUgPSBwYXJhbXM/LnVucmVwcmVzZW50YWJsZSA/PyBcInRocm93XCI7XG4gICAgICAgIHRoaXMub3ZlcnJpZGUgPSBwYXJhbXM/Lm92ZXJyaWRlID8/ICgoKSA9PiB7IH0pO1xuICAgICAgICB0aGlzLmlvID0gcGFyYW1zPy5pbyA/PyBcIm91dHB1dFwiO1xuICAgICAgICB0aGlzLnNlZW4gPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHByb2Nlc3Moc2NoZW1hLCBfcGFyYW1zID0geyBwYXRoOiBbXSwgc2NoZW1hUGF0aDogW10gfSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICAgICAgY29uc3QgZm9ybWF0TWFwID0ge1xuICAgICAgICAgICAgZ3VpZDogXCJ1dWlkXCIsXG4gICAgICAgICAgICB1cmw6IFwidXJpXCIsXG4gICAgICAgICAgICBkYXRldGltZTogXCJkYXRlLXRpbWVcIixcbiAgICAgICAgICAgIGpzb25fc3RyaW5nOiBcImpzb24tc3RyaW5nXCIsXG4gICAgICAgICAgICByZWdleDogXCJcIiwgLy8gZG8gbm90IHNldFxuICAgICAgICB9O1xuICAgICAgICAvLyBjaGVjayBmb3Igc2NoZW1hIGluIHNlZW5zXG4gICAgICAgIGNvbnN0IHNlZW4gPSB0aGlzLnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBzZWVuLmNvdW50Kys7XG4gICAgICAgICAgICAvLyBjaGVjayBpZiBjeWNsZVxuICAgICAgICAgICAgY29uc3QgaXNDeWNsZSA9IF9wYXJhbXMuc2NoZW1hUGF0aC5pbmNsdWRlcyhzY2hlbWEpO1xuICAgICAgICAgICAgaWYgKGlzQ3ljbGUpIHtcbiAgICAgICAgICAgICAgICBzZWVuLmN5Y2xlID0gX3BhcmFtcy5wYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNlZW4uc2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluaXRpYWxpemVcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geyBzY2hlbWE6IHt9LCBjb3VudDogMSwgY3ljbGU6IHVuZGVmaW5lZCwgcGF0aDogX3BhcmFtcy5wYXRoIH07XG4gICAgICAgIHRoaXMuc2Vlbi5zZXQoc2NoZW1hLCByZXN1bHQpO1xuICAgICAgICAvLyBjdXN0b20gbWV0aG9kIG92ZXJyaWRlcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICAgIGNvbnN0IG92ZXJyaWRlU2NoZW1hID0gc2NoZW1hLl96b2QudG9KU09OU2NoZW1hPy4oKTtcbiAgICAgICAgaWYgKG92ZXJyaWRlU2NoZW1hKSB7XG4gICAgICAgICAgICByZXN1bHQuc2NoZW1hID0gb3ZlcnJpZGVTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4uX3BhcmFtcyxcbiAgICAgICAgICAgICAgICBzY2hlbWFQYXRoOiBbLi4uX3BhcmFtcy5zY2hlbWFQYXRoLCBzY2hlbWFdLFxuICAgICAgICAgICAgICAgIHBhdGg6IF9wYXJhbXMucGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBzY2hlbWEuX3pvZC5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gc2NoZW1hIHdhcyBjbG9uZWQgZnJvbSBhbm90aGVyIHNjaGVtYVxuICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKHBhcmVudCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlZW4uZ2V0KHBhcmVudCkuaXNQYXJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2pzb24gPSByZXN1bHQuc2NoZW1hO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtLCBmb3JtYXQsIHBhdHRlcm5zLCBjb250ZW50RW5jb2RpbmcgfSA9IHNjaGVtYS5fem9kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJhZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWluaW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1pbkxlbmd0aCA9IG1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXhMZW5ndGggPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tIHBhdHRlcm4gb3ZlcnJpZGVzIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZm9ybWF0ID0gZm9ybWF0TWFwW2Zvcm1hdF0gPz8gZm9ybWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmZvcm1hdCA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24uZm9ybWF0OyAvLyBlbXB0eSBmb3JtYXQgaXMgbm90IHZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudEVuY29kaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uY29udGVudEVuY29kaW5nID0gY29udGVudEVuY29kaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm5zICYmIHBhdHRlcm5zLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhlcyA9IFsuLi5wYXR0ZXJuc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2V4ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnBhdHRlcm4gPSByZWdleGVzWzBdLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWdleGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNjaGVtYS5hbGxPZiA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlZ2V4ZXMubWFwKChyZWdleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4odGhpcy50YXJnZXQgPT09IFwiZHJhZnQtN1wiID8geyB0eXBlOiBcInN0cmluZ1wiIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogcmVnZXguc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtLCBmb3JtYXQsIG11bHRpcGxlT2YsIGV4Y2x1c2l2ZU1heGltdW0sIGV4Y2x1c2l2ZU1pbmltdW0gfSA9IHNjaGVtYS5fem9kLmJhZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSBcInN0cmluZ1wiICYmIGZvcm1hdC5pbmNsdWRlcyhcImludFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcImludGVnZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleGNsdXNpdmVNaW5pbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZXhjbHVzaXZlTWluaW11bSA9IGV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1pbmltdW0gPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWluaW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhjbHVzaXZlTWluaW11bSA+PSBtaW5pbXVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ubWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24uZXhjbHVzaXZlTWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV4Y2x1c2l2ZU1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5leGNsdXNpdmVNYXhpbXVtID0gZXhjbHVzaXZlTWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4aW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWF4aW11bSA9IG1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleGNsdXNpdmVNYXhpbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNsdXNpdmVNYXhpbXVtIDw9IG1heGltdW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUganNvbi5tYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUganNvbi5leGNsdXNpdmVNYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbXVsdGlwbGVPZiA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm11bHRpcGxlT2YgPSBtdWx0aXBsZU9mO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJib29sZWFuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLnR5cGUgPSBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJhbnlcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVua25vd25cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidm9pZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZvaWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm5ldmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLm5vdCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG1pbmltdW0sIG1heGltdW0gfSA9IHNjaGVtYS5fem9kLmJhZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWluaW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1pbkl0ZW1zID0gbWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4aW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1heEl0ZW1zID0gbWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYXJyYXlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSB0aGlzLnByb2Nlc3MoZGVmLmVsZW1lbnQsIHsgLi4ucGFyYW1zLCBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiaXRlbXNcIl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwib2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnByb3BlcnRpZXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gZGVmLnNoYXBlOyAvLyBwYXJhbXMuc2hhcGVDYWNoZS5nZXQoc2NoZW1hKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucHJvcGVydGllc1trZXldID0gdGhpcy5wcm9jZXNzKHNoYXBlW2tleV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwicHJvcGVydGllc1wiLCBrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZWQga2V5c1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoc2hhcGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IG9wdGlvbmFsS2V5cyA9IG5ldyBTZXQoZGVmLm9wdGlvbmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkS2V5cyA9IG5ldyBTZXQoWy4uLmFsbEtleXNdLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGRlZi5zaGFwZVtrZXldLl96b2Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW8gPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5vcHRpbiA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYub3B0b3V0ID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkS2V5cy5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucmVxdWlyZWQgPSBBcnJheS5mcm9tKHJlcXVpcmVkS2V5cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRjaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZi5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZSA9PT0gXCJuZXZlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsUHJvcGVydGllcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWRlZi5jYXRjaGFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ3VsYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJvdXRwdXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsUHJvcGVydGllcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVmLmNhdGNoYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsUHJvcGVydGllcyA9IHRoaXMucHJvY2VzcyhkZWYuY2F0Y2hhbGwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidW5pb25cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hbnlPZiA9IGRlZi5vcHRpb25zLm1hcCgoeCwgaSkgPT4gdGhpcy5wcm9jZXNzKHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFueU9mXCIsIGldLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImludGVyc2VjdGlvblwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhpcy5wcm9jZXNzKGRlZi5sZWZ0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhbGxPZlwiLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYiA9IHRoaXMucHJvY2VzcyhkZWYucmlnaHQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFsbE9mXCIsIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1NpbXBsZUludGVyc2VjdGlvbiA9ICh2YWwpID0+IFwiYWxsT2ZcIiBpbiB2YWwgJiYgT2JqZWN0LmtleXModmFsKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxPZiA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNTaW1wbGVJbnRlcnNlY3Rpb24oYSkgPyBhLmFsbE9mIDogW2FdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNTaW1wbGVJbnRlcnNlY3Rpb24oYikgPyBiLmFsbE9mIDogW2JdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmFsbE9mID0gYWxsT2Y7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidHVwbGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJhcnJheVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlZml4SXRlbXMgPSBkZWYuaXRlbXMubWFwKCh4LCBpKSA9PiB0aGlzLnByb2Nlc3MoeCwgeyAuLi5wYXJhbXMsIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJwcmVmaXhJdGVtc1wiLCBpXSB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wcmVmaXhJdGVtcyA9IHByZWZpeEl0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5pdGVtcyA9IHByZWZpeEl0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZi5yZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdCA9IHRoaXMucHJvY2VzcyhkZWYucmVzdCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJpdGVtc1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSByZXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsSXRlbXMgPSByZXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWxJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZi5yZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5pdGVtcyA9IHRoaXMucHJvY2VzcyhkZWYucmVzdCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJpdGVtc1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5JdGVtcyA9IG1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXhJdGVtcyA9IG1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVjb3JkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwib2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnByb3BlcnR5TmFtZXMgPSB0aGlzLnByb2Nlc3MoZGVmLmtleVR5cGUsIHsgLi4ucGFyYW1zLCBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwicHJvcGVydHlOYW1lc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSB0aGlzLnByb2Nlc3MoZGVmLnZhbHVlVHlwZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtYXBcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNldFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZW51bVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBnZXRFbnVtVmFsdWVzKGRlZi5lbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE51bWJlciBlbnVtcyBjYW4gaGF2ZSBib3RoIHN0cmluZyBhbmQgbnVtYmVyIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwibnVtYmVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZW51bSA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsIG9mIGRlZi52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpdGVyYWwgYHVuZGVmaW5lZGAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCB0byB2YWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHMucHVzaChOdW1iZXIodmFsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHMucHVzaCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcgKGFuIHVuZGVmaW5lZCBsaXRlcmFsIHdhcyBzdHJpcHBlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gdmFsc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSB2YWwgPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5jb25zdCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwibnVtYmVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdiA9PT0gbnVsbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwibnVsbFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZW51bSA9IHZhbHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZmlsZVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBcImJpbmFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRFbmNvZGluZzogXCJiaW5hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG1pbmltdW0sIG1heGltdW0sIG1pbWUgfSA9IHNjaGVtYS5fem9kLmJhZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW5pbXVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5taW5MZW5ndGggPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heGltdW0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm1heExlbmd0aCA9IG1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW1lLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmNvbnRlbnRNZWRpYVR5cGUgPSBtaW1lWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hbnlPZiA9IG1pbWUubWFwKChtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtRmlsZSA9IHsgLi4uZmlsZSwgY29udGVudE1lZGlhVHlwZTogbSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1GaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidHJhbnNmb3JtXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJhbnNmb3JtcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVsbGFibGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLmFueU9mID0gW2lubmVyLCB7IHR5cGU6IFwibnVsbFwiIH1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm5vbm9wdGlvbmFsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5kZWZhdWx0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicHJlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlvID09PSBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2pzb24uX3ByZWZhdWx0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2F0Y2hcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIGNvbmRpdGlvbmFsc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXRjaFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaFZhbHVlID0gZGVmLmNhdGNoVmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLmRlZmF1bHQgPSBjYXRjaFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm5hblwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5hTiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGVtcGxhdGVfbGl0ZXJhbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gc2NoZW1hLl96b2QucGF0dGVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGF0dGVybilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucGF0dGVybiA9IHBhdHRlcm4uc291cmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInBpcGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5uZXJUeXBlID0gdGhpcy5pbyA9PT0gXCJpbnB1dFwiID8gKGRlZi5pbi5fem9kLmRlZi50eXBlID09PSBcInRyYW5zZm9ybVwiID8gZGVmLm91dCA6IGRlZi5pbikgOiBkZWYub3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBpbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVhZG9ubHlcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3N0aHJvdWdoIHR5cGVzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJwcm9taXNlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwib3B0aW9uYWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJsYXp5XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyVHlwZSA9IHNjaGVtYS5fem9kLmlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzcyhpbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImN1c3RvbVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1c3RvbSB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWV0YWRhdGFcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMubWV0YWRhdGFSZWdpc3RyeS5nZXQoc2NoZW1hKTtcbiAgICAgICAgaWYgKG1ldGEpXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdC5zY2hlbWEsIG1ldGEpO1xuICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJpbnB1dFwiICYmIGlzVHJhbnNmb3JtaW5nKHNjaGVtYSkpIHtcbiAgICAgICAgICAgIC8vIGV4YW1wbGVzL2RlZmF1bHRzIG9ubHkgYXBwbHkgdG8gb3V0cHV0IHR5cGUgb2YgcGlwZVxuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC5zY2hlbWEuZXhhbXBsZXM7XG4gICAgICAgICAgICBkZWxldGUgcmVzdWx0LnNjaGVtYS5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIC8vIHNldCBwcmVmYXVsdCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICh0aGlzLmlvID09PSBcImlucHV0XCIgJiYgcmVzdWx0LnNjaGVtYS5fcHJlZmF1bHQpXG4gICAgICAgICAgICAoX2EgPSByZXN1bHQuc2NoZW1hKS5kZWZhdWx0ID8/IChfYS5kZWZhdWx0ID0gcmVzdWx0LnNjaGVtYS5fcHJlZmF1bHQpO1xuICAgICAgICBkZWxldGUgcmVzdWx0LnNjaGVtYS5fcHJlZmF1bHQ7XG4gICAgICAgIC8vIHB1bGxpbmcgZnJlc2ggZnJvbSB0aGlzLnNlZW4gaW4gY2FzZSBpdCB3YXMgb3ZlcndyaXR0ZW5cbiAgICAgICAgY29uc3QgX3Jlc3VsdCA9IHRoaXMuc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIF9yZXN1bHQuc2NoZW1hO1xuICAgIH1cbiAgICBlbWl0KHNjaGVtYSwgX3BhcmFtcykge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBjeWNsZXM6IF9wYXJhbXM/LmN5Y2xlcyA/PyBcInJlZlwiLFxuICAgICAgICAgICAgcmV1c2VkOiBfcGFyYW1zPy5yZXVzZWQgPz8gXCJpbmxpbmVcIixcbiAgICAgICAgICAgIC8vIHVucmVwcmVzZW50YWJsZTogX3BhcmFtcz8udW5yZXByZXNlbnRhYmxlID8/IFwidGhyb3dcIixcbiAgICAgICAgICAgIC8vIHVyaTogX3BhcmFtcz8udXJpID8/ICgoaWQpID0+IGAke2lkfWApLFxuICAgICAgICAgICAgZXh0ZXJuYWw6IF9wYXJhbXM/LmV4dGVybmFsID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gaXRlcmF0ZSBvdmVyIHNlZW4gbWFwO1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5zZWVuLmdldChzY2hlbWEpO1xuICAgICAgICBpZiAoIXJvb3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLlwiKTtcbiAgICAgICAgLy8gaW5pdGlhbGl6ZSByZXN1bHQgd2l0aCByb290IHNjaGVtYSBmaWVsZHNcbiAgICAgICAgLy8gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHNlZW4uY2FjaGVkKTtcbiAgICAgICAgLy8gcmV0dXJucyBhIHJlZiB0byB0aGUgc2NoZW1hXG4gICAgICAgIC8vIGRlZklkIHdpbGwgYmUgZW1wdHkgaWYgdGhlIHJlZiBwb2ludHMgdG8gYW4gZXh0ZXJuYWwgc2NoZW1hIChvciAjKVxuICAgICAgICBjb25zdCBtYWtlVVJJID0gKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAvLyBjb21wYXJpbmcgdGhlIHNlZW4gb2JqZWN0cyBiZWNhdXNlIHNvbWV0aW1lc1xuICAgICAgICAgICAgLy8gbXVsdGlwbGUgc2NoZW1hcyBtYXAgdG8gdGhlIHNhbWUgc2VlbiBvYmplY3QuXG4gICAgICAgICAgICAvLyBlLmcuIGxhenlcbiAgICAgICAgICAgIC8vIGV4dGVybmFsIGlzIGNvbmZpZ3VyZWRcbiAgICAgICAgICAgIGNvbnN0IGRlZnNTZWdtZW50ID0gdGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiID8gXCIkZGVmc1wiIDogXCJkZWZpbml0aW9uc1wiO1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsSWQgPSBwYXJhbXMuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGVudHJ5WzBdKT8uaWQ7IC8vID8/IFwiX19zaGFyZWRcIjsvLyBgX19zY2hlbWEke3RoaXMuY291bnRlcisrfWA7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgc2NoZW1hIGlzIGluIHRoZSBleHRlcm5hbCByZWdpc3RyeVxuICAgICAgICAgICAgICAgIGNvbnN0IHVyaUdlbmVyYXRvciA9IHBhcmFtcy5leHRlcm5hbC51cmkgPz8gKChpZCkgPT4gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChleHRlcm5hbElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHJlZjogdXJpR2VuZXJhdG9yKGV4dGVybmFsSWQpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgYWRkIHRvIF9fc2hhcmVkXG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBlbnRyeVsxXS5kZWZJZCA/PyBlbnRyeVsxXS5zY2hlbWEuaWQgPz8gYHNjaGVtYSR7dGhpcy5jb3VudGVyKyt9YDtcbiAgICAgICAgICAgICAgICBlbnRyeVsxXS5kZWZJZCA9IGlkOyAvLyBzZXQgZGVmSWQgc28gaXQgd2lsbCBiZSByZXVzZWQgaWYgbmVlZGVkXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZGVmSWQ6IGlkLCByZWY6IGAke3VyaUdlbmVyYXRvcihcIl9fc2hhcmVkXCIpfSMvJHtkZWZzU2VnbWVudH0vJHtpZH1gIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW50cnlbMV0gPT09IHJvb3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IFwiI1wiIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBzZWxmLWNvbnRhaW5lZCBzY2hlbWFcbiAgICAgICAgICAgIGNvbnN0IHVyaVByZWZpeCA9IGAjYDtcbiAgICAgICAgICAgIGNvbnN0IGRlZlVyaVByZWZpeCA9IGAke3VyaVByZWZpeH0vJHtkZWZzU2VnbWVudH0vYDtcbiAgICAgICAgICAgIGNvbnN0IGRlZklkID0gZW50cnlbMV0uc2NoZW1hLmlkID8/IGBfX3NjaGVtYSR7dGhpcy5jb3VudGVyKyt9YDtcbiAgICAgICAgICAgIHJldHVybiB7IGRlZklkLCByZWY6IGRlZlVyaVByZWZpeCArIGRlZklkIH07XG4gICAgICAgIH07XG4gICAgICAgIC8vIHN0b3JlZCBjYWNoZWQgdmVyc2lvbiBpbiBgZGVmYCBwcm9wZXJ0eVxuICAgICAgICAvLyByZW1vdmUgYWxsIHByb3BlcnRpZXMsIHNldCAkcmVmXG4gICAgICAgIGNvbnN0IGV4dHJhY3RUb0RlZiA9IChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgLy8gaWYgdGhlIHNjaGVtYSBpcyBhbHJlYWR5IGEgcmVmZXJlbmNlLCBkbyBub3QgZXh0cmFjdCBpdFxuICAgICAgICAgICAgaWYgKGVudHJ5WzFdLnNjaGVtYS4kcmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2VlbiA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgY29uc3QgeyByZWYsIGRlZklkIH0gPSBtYWtlVVJJKGVudHJ5KTtcbiAgICAgICAgICAgIHNlZW4uZGVmID0geyAuLi5zZWVuLnNjaGVtYSB9O1xuICAgICAgICAgICAgLy8gZGVmSWQgd29uJ3QgYmUgc2V0IGlmIHRoZSBzY2hlbWEgaXMgYSByZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc2NoZW1hXG4gICAgICAgICAgICBpZiAoZGVmSWQpXG4gICAgICAgICAgICAgICAgc2Vlbi5kZWZJZCA9IGRlZklkO1xuICAgICAgICAgICAgLy8gd2lwZSBhd2F5IGFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCAkcmVmXG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSBzZWVuLnNjaGVtYTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjaGVtYS4kcmVmID0gcmVmO1xuICAgICAgICB9O1xuICAgICAgICAvLyB0aHJvdyBvbiBjeWNsZXNcbiAgICAgICAgLy8gYnJlYWsgY3ljbGVzXG4gICAgICAgIGlmIChwYXJhbXMuY3ljbGVzID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5zZWVuLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoc2Vlbi5jeWNsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDeWNsZSBkZXRlY3RlZDogXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCMvJHtzZWVuLmN5Y2xlPy5qb2luKFwiL1wiKX0vPHJvb3Q+YCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuXFxuU2V0IHRoZSBgY3ljbGVzYCBwYXJhbWV0ZXIgdG8gYFwicmVmXCJgIHRvIHJlc29sdmUgY3ljbGljYWwgc2NoZW1hcyB3aXRoIGRlZnMuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGV4dHJhY3Qgc2NoZW1hcyBpbnRvICRkZWZzXG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5zZWVuLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VlbiA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgLy8gY29udmVydCByb290IHNjaGVtYSB0byAjICRyZWZcbiAgICAgICAgICAgIGlmIChzY2hlbWEgPT09IGVudHJ5WzBdKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTsgLy8gdGhpcyBoYXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIHJvb3Qgc2NoZW1hXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBleHRyYWN0IHNjaGVtYXMgdGhhdCBhcmUgaW4gdGhlIGV4dGVybmFsIHJlZ2lzdHJ5XG4gICAgICAgICAgICBpZiAocGFyYW1zLmV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gcGFyYW1zLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEgIT09IGVudHJ5WzBdICYmIGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBleHRyYWN0VG9EZWYoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBleHRyYWN0IHNjaGVtYXMgd2l0aCBgaWRgIG1ldGFcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5tZXRhZGF0YVJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkO1xuICAgICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGJyZWFrIGN5Y2xlc1xuICAgICAgICAgICAgaWYgKHNlZW4uY3ljbGUpIHtcbiAgICAgICAgICAgICAgICAvLyBhbnlcbiAgICAgICAgICAgICAgICBleHRyYWN0VG9EZWYoZW50cnkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXh0cmFjdCByZXVzZWQgc2NoZW1hc1xuICAgICAgICAgICAgaWYgKHNlZW4uY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXVzZWQgPT09IFwicmVmXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBmbGF0dGVuIF9yZWZzXG4gICAgICAgIGNvbnN0IGZsYXR0ZW5SZWYgPSAoem9kU2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSB0aGlzLnNlZW4uZ2V0KHpvZFNjaGVtYSk7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSBzZWVuLmRlZiA/PyBzZWVuLnNjaGVtYTtcbiAgICAgICAgICAgIGNvbnN0IF9jYWNoZWQgPSB7IC4uLnNjaGVtYSB9O1xuICAgICAgICAgICAgLy8gYWxyZWFkeSBzZWVuXG4gICAgICAgICAgICBpZiAoc2Vlbi5yZWYgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmbGF0dGVuIHJlZiBpZiBkZWZpbmVkXG4gICAgICAgICAgICBjb25zdCByZWYgPSBzZWVuLnJlZjtcbiAgICAgICAgICAgIHNlZW4ucmVmID0gbnVsbDsgLy8gcHJldmVudCByZWN1cnNpb25cbiAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICBmbGF0dGVuUmVmKHJlZiwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAvLyBtZXJnZSByZWZlcmVuY2VkIHNjaGVtYSBpbnRvIGN1cnJlbnRcbiAgICAgICAgICAgICAgICBjb25zdCByZWZTY2hlbWEgPSB0aGlzLnNlZW4uZ2V0KHJlZikuc2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChyZWZTY2hlbWEuJHJlZiAmJiBwYXJhbXMudGFyZ2V0ID09PSBcImRyYWZ0LTdcIikge1xuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuYWxsT2YgPSBzY2hlbWEuYWxsT2YgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5hbGxPZi5wdXNoKHJlZlNjaGVtYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHNjaGVtYSwgcmVmU2NoZW1hKTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzY2hlbWEsIF9jYWNoZWQpOyAvLyBwcmV2ZW50IG92ZXJ3cml0aW5nIGFueSBmaWVsZHMgaW4gdGhlIG9yaWdpbmFsIHNjaGVtYVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGV4ZWN1dGUgb3ZlcnJpZGVzXG4gICAgICAgICAgICBpZiAoIXNlZW4uaXNQYXJlbnQpXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZSh7XG4gICAgICAgICAgICAgICAgICAgIHpvZFNjaGVtYTogem9kU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBqc29uU2NoZW1hOiBzY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IHNlZW4ucGF0aCA/PyBbXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBbLi4udGhpcy5zZWVuLmVudHJpZXMoKV0ucmV2ZXJzZSgpKSB7XG4gICAgICAgICAgICBmbGF0dGVuUmVmKGVudHJ5WzBdLCB7IHRhcmdldDogdGhpcy50YXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdC4kc2NoZW1hID0gXCJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTdcIikge1xuICAgICAgICAgICAgcmVzdWx0LiRzY2hlbWEgPSBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIHRhcmdldDogJHt0aGlzLnRhcmdldH1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zLmV4dGVybmFsPy51cmkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gcGFyYW1zLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChzY2hlbWEpPy5pZDtcbiAgICAgICAgICAgIGlmICghaWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eVwiKTtcbiAgICAgICAgICAgIHJlc3VsdC4kaWQgPSBwYXJhbXMuZXh0ZXJuYWwudXJpKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgcm9vdC5kZWYpO1xuICAgICAgICAvLyBidWlsZCBkZWZzIG9iamVjdFxuICAgICAgICBjb25zdCBkZWZzID0gcGFyYW1zLmV4dGVybmFsPy5kZWZzID8/IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIGlmIChzZWVuLmRlZiAmJiBzZWVuLmRlZklkKSB7XG4gICAgICAgICAgICAgICAgZGVmc1tzZWVuLmRlZklkXSA9IHNlZW4uZGVmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNldCBkZWZpbml0aW9ucyBpbiByZXN1bHRcbiAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbCkge1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRlZnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC4kZGVmcyA9IGRlZnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZGVmaW5pdGlvbnMgPSBkZWZzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gdGhpcyBcImZpbmFsaXplc1wiIHRoaXMgc2NoZW1hIGFuZCBlbnN1cmVzIGFsbCBjeWNsZXMgYXJlIHJlbW92ZWRcbiAgICAgICAgICAgIC8vIGVhY2ggY2FsbCB0byAuZW1pdCgpIGlzIGZ1bmN0aW9uYWxseSBpbmRlcGVuZGVudFxuICAgICAgICAgICAgLy8gdGhvdWdoIHRoZSBzZWVuIG1hcCBpcyBzaGFyZWRcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLlwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiB0b0pTT05TY2hlbWEoaW5wdXQsIF9wYXJhbXMpIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiAkWm9kUmVnaXN0cnkpIHtcbiAgICAgICAgY29uc3QgZ2VuID0gbmV3IEpTT05TY2hlbWFHZW5lcmF0b3IoX3BhcmFtcyk7XG4gICAgICAgIGNvbnN0IGRlZnMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBpbnB1dC5faWRtYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBbXywgc2NoZW1hXSA9IGVudHJ5O1xuICAgICAgICAgICAgZ2VuLnByb2Nlc3Moc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY2hlbWFzID0ge307XG4gICAgICAgIGNvbnN0IGV4dGVybmFsID0ge1xuICAgICAgICAgICAgcmVnaXN0cnk6IGlucHV0LFxuICAgICAgICAgICAgdXJpOiBfcGFyYW1zPy51cmksXG4gICAgICAgICAgICBkZWZzLFxuICAgICAgICB9O1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGlucHV0Ll9pZG1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtrZXksIHNjaGVtYV0gPSBlbnRyeTtcbiAgICAgICAgICAgIHNjaGVtYXNba2V5XSA9IGdlbi5lbWl0KHNjaGVtYSwge1xuICAgICAgICAgICAgICAgIC4uLl9wYXJhbXMsXG4gICAgICAgICAgICAgICAgZXh0ZXJuYWwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZGVmcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZGVmc1NlZ21lbnQgPSBnZW4udGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIiA/IFwiJGRlZnNcIiA6IFwiZGVmaW5pdGlvbnNcIjtcbiAgICAgICAgICAgIHNjaGVtYXMuX19zaGFyZWQgPSB7XG4gICAgICAgICAgICAgICAgW2RlZnNTZWdtZW50XTogZGVmcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc2NoZW1hcyB9O1xuICAgIH1cbiAgICBjb25zdCBnZW4gPSBuZXcgSlNPTlNjaGVtYUdlbmVyYXRvcihfcGFyYW1zKTtcbiAgICBnZW4ucHJvY2VzcyhpbnB1dCk7XG4gICAgcmV0dXJuIGdlbi5lbWl0KGlucHV0LCBfcGFyYW1zKTtcbn1cbmZ1bmN0aW9uIGlzVHJhbnNmb3JtaW5nKF9zY2hlbWEsIF9jdHgpIHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8/IHsgc2VlbjogbmV3IFNldCgpIH07XG4gICAgaWYgKGN0eC5zZWVuLmhhcyhfc2NoZW1hKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGN0eC5zZWVuLmFkZChfc2NoZW1hKTtcbiAgICBjb25zdCBzY2hlbWEgPSBfc2NoZW1hO1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICBjYXNlIFwiYW55XCI6XG4gICAgICAgIGNhc2UgXCJ1bmtub3duXCI6XG4gICAgICAgIGNhc2UgXCJuZXZlclwiOlxuICAgICAgICBjYXNlIFwidm9pZFwiOlxuICAgICAgICBjYXNlIFwibGl0ZXJhbFwiOlxuICAgICAgICBjYXNlIFwiZW51bVwiOlxuICAgICAgICBjYXNlIFwibmFuXCI6XG4gICAgICAgIGNhc2UgXCJmaWxlXCI6XG4gICAgICAgIGNhc2UgXCJ0ZW1wbGF0ZV9saXRlcmFsXCI6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNhc2UgXCJhcnJheVwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmVsZW1lbnQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkZWYuc2hhcGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcoZGVmLnNoYXBlW2tleV0sIGN0eCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ1bmlvblwiOiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBkZWYub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybWluZyhvcHRpb24sIGN0eCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJpbnRlcnNlY3Rpb25cIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5sZWZ0LCBjdHgpIHx8IGlzVHJhbnNmb3JtaW5nKGRlZi5yaWdodCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidHVwbGVcIjoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRlZi5pdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybWluZyhpdGVtLCBjdHgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZWYucmVzdCAmJiBpc1RyYW5zZm9ybWluZyhkZWYucmVzdCwgY3R4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwicmVjb3JkXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYua2V5VHlwZSwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYudmFsdWVUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtYXBcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5rZXlUeXBlLCBjdHgpIHx8IGlzVHJhbnNmb3JtaW5nKGRlZi52YWx1ZVR5cGUsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNldFwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLnZhbHVlVHlwZSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbm5lciB0eXBlc1xuICAgICAgICBjYXNlIFwicHJvbWlzZVwiOlxuICAgICAgICBjYXNlIFwib3B0aW9uYWxcIjpcbiAgICAgICAgY2FzZSBcIm5vbm9wdGlvbmFsXCI6XG4gICAgICAgIGNhc2UgXCJudWxsYWJsZVwiOlxuICAgICAgICBjYXNlIFwicmVhZG9ubHlcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW5uZXJUeXBlLCBjdHgpO1xuICAgICAgICBjYXNlIFwibGF6eVwiOlxuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5nZXR0ZXIoKSwgY3R4KTtcbiAgICAgICAgY2FzZSBcImRlZmF1bHRcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5pbm5lclR5cGUsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInByZWZhdWx0XCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW5uZXJUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjdXN0b21cIjoge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ0cmFuc2Zvcm1cIjoge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInBpcGVcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5pbiwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYub3V0LCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2F0Y2hcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBkZWY7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzY2hlbWEgdHlwZTogJHtkZWYudHlwZX1gKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIHBhcnNlIGZyb20gXCIuL3BhcnNlLmpzXCI7XG5leHBvcnQgY29uc3QgWm9kTWluaVR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVR5cGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGlmICghaW5zdC5fem9kKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmluaXRpYWxpemVkIHNjaGVtYSBpbiBab2RNaW5pVHlwZS5cIik7XG4gICAgY29yZS4kWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5kZWYgPSBkZWY7XG4gICAgaW5zdC5wYXJzZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2UgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5zYWZlUGFyc2UoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnBhcnNlQXN5bmMgPSBhc3luYyAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2VBc3luYyB9KTtcbiAgICBpbnN0LnNhZmVQYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlQXN5bmMoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LmNoZWNrID0gKC4uLmNoZWNrcykgPT4ge1xuICAgICAgICByZXR1cm4gaW5zdC5jbG9uZSh7XG4gICAgICAgICAgICAuLi5kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFtcbiAgICAgICAgICAgICAgICAuLi4oZGVmLmNoZWNrcyA/PyBbXSksXG4gICAgICAgICAgICAgICAgLi4uY2hlY2tzLm1hcCgoY2gpID0+IHR5cGVvZiBjaCA9PT0gXCJmdW5jdGlvblwiID8geyBfem9kOiB7IGNoZWNrOiBjaCwgZGVmOiB7IGNoZWNrOiBcImN1c3RvbVwiIH0sIG9uYXR0YWNoOiBbXSB9IH0gOiBjaCksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICAgIC8vIHsgcGFyZW50OiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9O1xuICAgIGluc3QuY2xvbmUgPSAoX2RlZiwgcGFyYW1zKSA9PiBjb3JlLmNsb25lKGluc3QsIF9kZWYsIHBhcmFtcyk7XG4gICAgaW5zdC5icmFuZCA9ICgpID0+IGluc3Q7XG4gICAgaW5zdC5yZWdpc3RlciA9ICgocmVnLCBtZXRhKSA9PiB7XG4gICAgICAgIHJlZy5hZGQoaW5zdCwgbWV0YSk7XG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH0pO1xufSk7XG5leHBvcnQgY29uc3QgWm9kTWluaVN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pU3RyaW5nXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nKFpvZE1pbmlTdHJpbmcsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgWm9kTWluaUVtYWlsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlFbWFpbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRW1haWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZW1haWwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2VtYWlsKFpvZE1pbmlFbWFpbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pR1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pR1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kR1VJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBndWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9ndWlkKFpvZE1pbmlHVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWQoWm9kTWluaVVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjQoWm9kTWluaVVVSUQsIHBhcmFtcyk7XG59XG4vLyBab2RNaW5pVVVJRHY2XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY2KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjYoWm9kTWluaVVVSUQsIHBhcmFtcyk7XG59XG4vLyBab2RNaW5pVVVJRHY3XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY3KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjcoWm9kTWluaVVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdXJsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91cmwoWm9kTWluaVVSTCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRW1vamkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFbW9qaS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbW9qaShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1vamkoWm9kTWluaUVtb2ppLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOYW5vSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU5hbm9JRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTmFub0lELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5hbm9pZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmFub2lkKFpvZE1pbmlOYW5vSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUNVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUNVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZChab2RNaW5pQ1VJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ1VJRDIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUNVSUQyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDVUlEMi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjdWlkMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZDIoWm9kTWluaUNVSUQyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVTElEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVTElEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVTElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVsaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VsaWQoWm9kTWluaVVMSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVhJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pWElEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RYSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24geGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl94aWQoWm9kTWluaVhJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pS1NVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUtTVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RLU1VJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBrc3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fa3N1aWQoWm9kTWluaUtTVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlJUHY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlJUHY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJUHY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlwdjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lwdjQoWm9kTWluaUlQdjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUlQdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUlQdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElQdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2Nihab2RNaW5pSVB2NiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ0lEUnY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjaWRydjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NpZHJ2NChab2RNaW5pQ0lEUnY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUNJRFJ2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ0lEUnY2LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY2KFpvZE1pbmlDSURSdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUJhc2U2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQmFzZTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCYXNlNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9iYXNlNjQoWm9kTWluaUJhc2U2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQmFzZTY0VVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlCYXNlNjRVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJhc2U2NFVSTC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjR1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NHVybChab2RNaW5pQmFzZTY0VVJMLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlFMTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlFMTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFMTY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGUxNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2UxNjQoWm9kTWluaUUxNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUpXVCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pSldUXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RKV1QuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gand0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9qd3QoWm9kTWluaUpXVCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ3VzdG9tU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDdXN0b21TdHJpbmdGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kTWluaUN1c3RvbVN0cmluZ0Zvcm1hdCwgZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOdW1iZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVtYmVyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBudW1iZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX251bWJlcihab2RNaW5pTnVtYmVyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU51bWJlckZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVtYmVyRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pTnVtYmVyLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8gaW50XG5leHBvcnQgZnVuY3Rpb24gaW50KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQoWm9kTWluaU51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIGZsb2F0MzJcbmV4cG9ydCBmdW5jdGlvbiBmbG9hdDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9mbG9hdDMyKFpvZE1pbmlOdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyBmbG9hdDY0XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQ2NChab2RNaW5pTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuLy8gaW50MzJcbmV4cG9ydCBmdW5jdGlvbiBpbnQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faW50MzIoWm9kTWluaU51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIHVpbnQzMlxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWludDMyKFpvZE1pbmlOdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUJvb2xlYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUJvb2xlYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJvb2xlYW4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jvb2xlYW4oWm9kTWluaUJvb2xlYW4sIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUJpZ0ludCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQmlnSW50XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJpZ2ludChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmlnaW50KFpvZE1pbmlCaWdJbnQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUJpZ0ludEZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQmlnSW50Rm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnRGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIGludDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQ2NChab2RNaW5pQmlnSW50Rm9ybWF0LCBwYXJhbXMpO1xufVxuLy8gdWludDY0XG5leHBvcnQgZnVuY3Rpb24gdWludDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91aW50NjQoWm9kTWluaUJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pU3ltYm9sID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlTeW1ib2xcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN5bWJvbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3ltYm9sKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zeW1ib2woWm9kTWluaVN5bWJvbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVW5kZWZpbmVkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVbmRlZmluZWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuZGVmaW5lZC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfdW5kZWZpbmVkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91bmRlZmluZWQoWm9kTWluaVVuZGVmaW5lZCwgcGFyYW1zKTtcbn1cbmV4cG9ydCB7IF91bmRlZmluZWQgYXMgdW5kZWZpbmVkIH07XG5leHBvcnQgY29uc3QgWm9kTWluaU51bGwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU51bGxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX251bGwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX251bGwoWm9kTWluaU51bGwsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfbnVsbCBhcyBudWxsIH07XG5leHBvcnQgY29uc3QgWm9kTWluaUFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQW55XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RBbnkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGFueSgpIHtcbiAgICByZXR1cm4gY29yZS5fYW55KFpvZE1pbmlBbnkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVbmtub3duID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVbmtub3duXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmtub3duLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmtub3duKCkge1xuICAgIHJldHVybiBjb3JlLl91bmtub3duKFpvZE1pbmlVbmtub3duKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTmV2ZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU5ldmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROZXZlci5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmV2ZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX25ldmVyKFpvZE1pbmlOZXZlciwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVm9pZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVm9pZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVm9pZC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfdm9pZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdm9pZChab2RNaW5pVm9pZCwgcGFyYW1zKTtcbn1cbmV4cG9ydCB7IF92b2lkIGFzIHZvaWQgfTtcbmV4cG9ydCBjb25zdCBab2RNaW5pRGF0ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRGF0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRGF0ZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZGF0ZShab2RNaW5pRGF0ZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQXJyYXkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUFycmF5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RBcnJheS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYXJyYXkoZWxlbWVudCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pQXJyYXkoe1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyAua2V5b2ZcbmV4cG9ydCBmdW5jdGlvbiBrZXlvZihzY2hlbWEpIHtcbiAgICBjb25zdCBzaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICByZXR1cm4gbGl0ZXJhbChPYmplY3Qua2V5cyhzaGFwZSkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlPYmplY3QgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU9iamVjdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kT2JqZWN0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QsIFwic2hhcGVcIiwgKCkgPT4gZGVmLnNoYXBlKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICB1dGlsLmFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCB7IC4uLnNoYXBlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlPYmplY3QoZGVmKTtcbn1cbi8vIHN0cmljdE9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIHN0cmljdE9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgLy8gc2hhcGU6IHNoYXBlIGFzIGNvcmUuJFpvZExvb3NlU2hhcGUsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIHV0aWwuYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHsgLi4uc2hhcGUgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgY2F0Y2hhbGw6IG5ldmVyKCksXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBsb29zZU9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIGxvb3NlT2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlPYmplY3Qoe1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAvLyBzaGFwZTogc2hhcGUgYXMgY29yZS4kWm9kTG9vc2VTaGFwZSxcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICAvLyBnZXQgb3B0aW9uYWwoKSB7XG4gICAgICAgIC8vICAgcmV0dXJuIHV0aWwub3B0aW9uYWxLZXlzKHNoYXBlKTtcbiAgICAgICAgLy8gfSxcbiAgICAgICAgY2F0Y2hhbGw6IHVua25vd24oKSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIG9iamVjdCBtZXRob2RzXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHNjaGVtYSwgc2hhcGUpIHtcbiAgICByZXR1cm4gdXRpbC5leHRlbmQoc2NoZW1hLCBzaGFwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2Uoc2NoZW1hLCBzaGFwZSkge1xuICAgIHJldHVybiB1dGlsLmV4dGVuZChzY2hlbWEsIHNoYXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwaWNrKHNjaGVtYSwgbWFzaykge1xuICAgIHJldHVybiB1dGlsLnBpY2soc2NoZW1hLCBtYXNrKTtcbn1cbi8vIC5vbWl0XG5leHBvcnQgZnVuY3Rpb24gb21pdChzY2hlbWEsIG1hc2spIHtcbiAgICByZXR1cm4gdXRpbC5vbWl0KHNjaGVtYSwgbWFzayk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFydGlhbChzY2hlbWEsIG1hc2spIHtcbiAgICByZXR1cm4gdXRpbC5wYXJ0aWFsKFpvZE1pbmlPcHRpb25hbCwgc2NoZW1hLCBtYXNrKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChzY2hlbWEsIG1hc2spIHtcbiAgICByZXR1cm4gdXRpbC5yZXF1aXJlZChab2RNaW5pTm9uT3B0aW9uYWwsIHNjaGVtYSwgbWFzayk7XG59XG5leHBvcnQgZnVuY3Rpb24gY2F0Y2hhbGwoaW5zdCwgY2F0Y2hhbGwpIHtcbiAgICByZXR1cm4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiBjYXRjaGFsbCB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVW5pb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdW5pb24ob3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pVW5pb24oe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaURpc2NyaW1pbmF0ZWRVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRGlzY3JpbWluYXRlZFVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REaXNjcmltaW5hdGVkVW5pb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2NyaW1pbmF0ZWRVbmlvbihkaXNjcmltaW5hdG9yLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlEaXNjcmltaW5hdGVkVW5pb24oe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUludGVyc2VjdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pSW50ZXJzZWN0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJbnRlcnNlY3Rpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdGlvbihsZWZ0LCByaWdodCkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUludGVyc2VjdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW50ZXJzZWN0aW9uXCIsXG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVHVwbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVR1cGxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUdXBsZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdHVwbGUoaXRlbXMsIF9wYXJhbXNPclJlc3QsIF9wYXJhbXMpIHtcbiAgICBjb25zdCBoYXNSZXN0ID0gX3BhcmFtc09yUmVzdCBpbnN0YW5jZW9mIGNvcmUuJFpvZFR5cGU7XG4gICAgY29uc3QgcGFyYW1zID0gaGFzUmVzdCA/IF9wYXJhbXMgOiBfcGFyYW1zT3JSZXN0O1xuICAgIGNvbnN0IHJlc3QgPSBoYXNSZXN0ID8gX3BhcmFtc09yUmVzdCA6IG51bGw7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pVHVwbGUoe1xuICAgICAgICB0eXBlOiBcInR1cGxlXCIsXG4gICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgcmVzdCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlSZWNvcmRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFJlY29yZC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFydGlhbFJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGU6IHVuaW9uKFtrZXlUeXBlLCBuZXZlcigpXSksXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlNYXAgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU1hcFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTWFwLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBtYXAoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlNYXAoe1xuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBrZXlUeXBlOiBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pU2V0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlTZXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFNldC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc2V0KHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pU2V0KHtcbiAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUVudW0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUVudW1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEVudW0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX2VudW0odmFsdWVzLCBwYXJhbXMpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlcy5tYXAoKHYpID0+IFt2LCB2XSkpIDogdmFsdWVzO1xuICAgIHJldHVybiBuZXcgWm9kTWluaUVudW0oe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IF9lbnVtIGFzIGVudW0gfTtcbi8qKiBAZGVwcmVjYXRlZCBUaGlzIEFQSSBoYXMgYmVlbiBtZXJnZWQgaW50byBgei5lbnVtKClgLiBVc2UgYHouZW51bSgpYCBpbnN0ZWFkLlxuICpcbiAqIGBgYHRzXG4gKiBlbnVtIENvbG9ycyB7IHJlZCwgZ3JlZW4sIGJsdWUgfVxuICogei5lbnVtKENvbG9ycyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hdGl2ZUVudW0oZW50cmllcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RMaXRlcmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJsaXRlcmFsXCIsXG4gICAgICAgIHZhbHVlczogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUZpbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUZpbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEZpbGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ZpbGUoWm9kTWluaUZpbGUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVRyYW5zZm9ybSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVHJhbnNmb3JtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUcmFuc2Zvcm0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVRyYW5zZm9ybSh7XG4gICAgICAgIHR5cGU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybTogZm4sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU9wdGlvbmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlPcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kT3B0aW9uYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU9wdGlvbmFsKHtcbiAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU51bGxhYmxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdWxsYWJsZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGUoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pTnVsbGFibGUoe1xuICAgICAgICB0eXBlOiBcIm51bGxhYmxlXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuLy8gbnVsbGlzaFxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpc2goaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG9wdGlvbmFsKG51bGxhYmxlKGlubmVyVHlwZSkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlEZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlEZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBfZGVmYXVsdChpbm5lclR5cGUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaURlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcImRlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVByZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlQcmVmYXVsdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJlZmF1bHQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZhdWx0KGlubmVyVHlwZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUHJlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcInByZWZhdWx0XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOb25PcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTm9uT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5vbk9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBub25vcHRpb25hbChpbm5lclR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU5vbk9wdGlvbmFsKHtcbiAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pU3VjY2VzcyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pU3VjY2Vzc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3VjY2Vzcy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3VjY2Vzcyhpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlTdWNjZXNzKHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDYXRjaCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ2F0Y2hcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENhdGNoLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF9jYXRjaChpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlDYXRjaCh7XG4gICAgICAgIHR5cGU6IFwiY2F0Y2hcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGNhdGNoVmFsdWU6ICh0eXBlb2YgY2F0Y2hWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gY2F0Y2hWYWx1ZSA6ICgpID0+IGNhdGNoVmFsdWUpLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgX2NhdGNoIGFzIGNhdGNoIH07XG5leHBvcnQgY29uc3QgWm9kTWluaU5hTiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTmFOXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROYU4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5hbihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmFuKFpvZE1pbmlOYU4sIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVBpcGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVBpcGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFBpcGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHBpcGUoaW5fLCBvdXQpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlQaXBlKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbl8sXG4gICAgICAgIG91dDogb3V0LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlSZWFkb25seSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pUmVhZG9ubHlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFJlYWRvbmx5LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWFkb25seShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlSZWFkb25seSh7XG4gICAgICAgIHR5cGU6IFwicmVhZG9ubHlcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVRlbXBsYXRlTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVGVtcGxhdGVMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUZW1wbGF0ZUxpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlTGl0ZXJhbChwYXJ0cywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pVGVtcGxhdGVMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgIHBhcnRzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlMYXp5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlMYXp5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RMYXp5LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGV4cG9ydCBmdW5jdGlvbiBsYXp5PFQgZXh0ZW5kcyBvYmplY3Q+KGdldHRlcjogKCkgPT4gVCk6IFQge1xuLy8gICByZXR1cm4gdXRpbC5jcmVhdGVUcmFuc3BhcmVudFByb3h5PFQ+KGdldHRlcik7XG4vLyB9XG5mdW5jdGlvbiBfbGF6eShnZXR0ZXIpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlMYXp5KHtcbiAgICAgICAgdHlwZTogXCJsYXp5XCIsXG4gICAgICAgIGdldHRlcjogZ2V0dGVyLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgX2xhenkgYXMgbGF6eSB9O1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlQcm9taXNlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlQcm9taXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQcm9taXNlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNlKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVByb21pc2Uoe1xuICAgICAgICB0eXBlOiBcInByb21pc2VcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUN1c3RvbSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ3VzdG9tXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDdXN0b20uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8gY3VzdG9tIGNoZWNrc1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKGZuLCBwYXJhbXMpIHtcbiAgICBjb25zdCBjaCA9IG5ldyBjb3JlLiRab2RDaGVjayh7XG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICAgIGNoLl96b2QuY2hlY2sgPSBmbjtcbiAgICByZXR1cm4gY2g7XG59XG4vLyBab2RDdXN0b21cbi8vIGN1c3RvbSBzY2hlbWFcbmV4cG9ydCBmdW5jdGlvbiBjdXN0b20oZm4sIF9wYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VzdG9tKFpvZE1pbmlDdXN0b20sIGZuID8/ICgoKSA9PiB0cnVlKSwgX3BhcmFtcyk7XG59XG4vLyByZWZpbmVcbmV4cG9ydCBmdW5jdGlvbiByZWZpbmUoZm4sIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9yZWZpbmUoWm9kTWluaUN1c3RvbSwgZm4sIF9wYXJhbXMpO1xufVxuLy8gaW5zdGFuY2VvZlxuY2xhc3MgQ2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKC4uLl9hcmdzKSB7IH1cbn1cbmZ1bmN0aW9uIF9pbnN0YW5jZW9mKGNscywgcGFyYW1zID0ge1xuICAgIGVycm9yOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pIHtcbiAgICBjb25zdCBpbnN0ID0gY3VzdG9tKChkYXRhKSA9PiBkYXRhIGluc3RhbmNlb2YgY2xzLCBwYXJhbXMpO1xuICAgIGluc3QuX3pvZC5iYWcuQ2xhc3MgPSBjbHM7XG4gICAgcmV0dXJuIGluc3Q7XG59XG5leHBvcnQgeyBfaW5zdGFuY2VvZiBhcyBpbnN0YW5jZW9mIH07XG4vLyBzdHJpbmdib29sXG5leHBvcnQgY29uc3Qgc3RyaW5nYm9vbCA9ICguLi5hcmdzKSA9PiBjb3JlLl9zdHJpbmdib29sKHtcbiAgICBQaXBlOiBab2RNaW5pUGlwZSxcbiAgICBCb29sZWFuOiBab2RNaW5pQm9vbGVhbixcbiAgICBTdHJpbmc6IFpvZE1pbmlTdHJpbmcsXG4gICAgVHJhbnNmb3JtOiBab2RNaW5pVHJhbnNmb3JtLFxufSwgLi4uYXJncyk7XG5leHBvcnQgZnVuY3Rpb24ganNvbigpIHtcbiAgICBjb25zdCBqc29uU2NoZW1hID0gX2xhenkoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdW5pb24oW3N0cmluZygpLCBudW1iZXIoKSwgYm9vbGVhbigpLCBfbnVsbCgpLCBhcnJheShqc29uU2NoZW1hKSwgcmVjb3JkKHN0cmluZygpLCBqc29uU2NoZW1hKV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBqc29uU2NoZW1hO1xufVxuIiwgbnVsbCwgImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIHNjaGVtYXMgZnJvbSBcIi4vc2NoZW1hcy5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZElTT0RhdGVUaW1lID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT0RhdGVUaW1lXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09EYXRlVGltZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb0RhdGVUaW1lKFpvZElTT0RhdGVUaW1lLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT0RhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPRGF0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPRGF0ZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvRGF0ZShab2RJU09EYXRlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT1RpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPVGltZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdGltZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvVGltZShab2RJU09UaW1lLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT0R1cmF0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT0R1cmF0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09EdXJhdGlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZHVyYXRpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb0R1cmF0aW9uKFpvZElTT0R1cmF0aW9uLCBwYXJhbXMpO1xufVxuIiwgImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7ICRab2RFcnJvciB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5jb25zdCBpbml0aWFsaXplciA9IChpbnN0LCBpc3N1ZXMpID0+IHtcbiAgICAkWm9kRXJyb3IuaW5pdChpbnN0LCBpc3N1ZXMpO1xuICAgIGluc3QubmFtZSA9IFwiWm9kRXJyb3JcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpbnN0LCB7XG4gICAgICAgIGZvcm1hdDoge1xuICAgICAgICAgICAgdmFsdWU6IChtYXBwZXIpID0+IGNvcmUuZm9ybWF0RXJyb3IoaW5zdCwgbWFwcGVyKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBmbGF0dGVuOiB7XG4gICAgICAgICAgICB2YWx1ZTogKG1hcHBlcikgPT4gY29yZS5mbGF0dGVuRXJyb3IoaW5zdCwgbWFwcGVyKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBhZGRJc3N1ZToge1xuICAgICAgICAgICAgdmFsdWU6IChpc3N1ZSkgPT4gaW5zdC5pc3N1ZXMucHVzaChpc3N1ZSksXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWRkSXNzdWVzOiB7XG4gICAgICAgICAgICB2YWx1ZTogKGlzc3VlcykgPT4gaW5zdC5pc3N1ZXMucHVzaCguLi5pc3N1ZXMpLFxuICAgICAgICAgICAgLy8gZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGlzRW1wdHk6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdC5pc3N1ZXMubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcImlzRW1wdHlcIiwge1xuICAgIC8vICAgZ2V0KCkge1xuICAgIC8vICAgICByZXR1cm4gaW5zdC5pc3N1ZXMubGVuZ3RoID09PSAwO1xuICAgIC8vICAgfSxcbiAgICAvLyB9KTtcbn07XG5leHBvcnQgY29uc3QgWm9kRXJyb3IgPSBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVycm9yXCIsIGluaXRpYWxpemVyKTtcbmV4cG9ydCBjb25zdCBab2RSZWFsRXJyb3IgPSBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVycm9yXCIsIGluaXRpYWxpemVyLCB7XG4gICAgUGFyZW50OiBFcnJvcixcbn0pO1xuLy8gLyoqIEBkZXByZWNhdGVkIFVzZSBgei5jb3JlLiRab2RFcnJvck1hcEN0eGAgaW5zdGVhZC4gKi9cbi8vIGV4cG9ydCB0eXBlIEVycm9yTWFwQ3R4ID0gY29yZS4kWm9kRXJyb3JNYXBDdHg7XG4iLCAiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgWm9kUmVhbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2UgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fcGFyc2UoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBwYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3BhcnNlQXN5bmMoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBzYWZlUGFyc2UgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZVBhcnNlKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZVBhcnNlQXN5bmMoWm9kUmVhbEVycm9yKTtcbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIGNoZWNrcyBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmltcG9ydCAqIGFzIGlzbyBmcm9tIFwiLi9pc28uanNcIjtcbmltcG9ydCAqIGFzIHBhcnNlIGZyb20gXCIuL3BhcnNlLmpzXCI7XG5leHBvcnQgY29uc3QgWm9kVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUeXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmRlZiA9IGRlZjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJfZGVmXCIsIHsgdmFsdWU6IGRlZiB9KTtcbiAgICAvLyBiYXNlIG1ldGhvZHNcbiAgICBpbnN0LmNoZWNrID0gKC4uLmNoZWNrcykgPT4ge1xuICAgICAgICByZXR1cm4gaW5zdC5jbG9uZSh7XG4gICAgICAgICAgICAuLi5kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFtcbiAgICAgICAgICAgICAgICAuLi4oZGVmLmNoZWNrcyA/PyBbXSksXG4gICAgICAgICAgICAgICAgLi4uY2hlY2tzLm1hcCgoY2gpID0+IHR5cGVvZiBjaCA9PT0gXCJmdW5jdGlvblwiID8geyBfem9kOiB7IGNoZWNrOiBjaCwgZGVmOiB7IGNoZWNrOiBcImN1c3RvbVwiIH0sIG9uYXR0YWNoOiBbXSB9IH0gOiBjaCksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICAgIC8vIHsgcGFyZW50OiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9O1xuICAgIGluc3QuY2xvbmUgPSAoZGVmLCBwYXJhbXMpID0+IGNvcmUuY2xvbmUoaW5zdCwgZGVmLCBwYXJhbXMpO1xuICAgIGluc3QuYnJhbmQgPSAoKSA9PiBpbnN0O1xuICAgIGluc3QucmVnaXN0ZXIgPSAoKHJlZywgbWV0YSkgPT4ge1xuICAgICAgICByZWcuYWRkKGluc3QsIG1ldGEpO1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9KTtcbiAgICAvLyBwYXJzaW5nXG4gICAgaW5zdC5wYXJzZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2UgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5zYWZlUGFyc2UoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnBhcnNlQXN5bmMgPSBhc3luYyAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2VBc3luYyB9KTtcbiAgICBpbnN0LnNhZmVQYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlQXN5bmMoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnNwYSA9IGluc3Quc2FmZVBhcnNlQXN5bmM7XG4gICAgLy8gcmVmaW5lbWVudHNcbiAgICBpbnN0LnJlZmluZSA9IChjaGVjaywgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKHJlZmluZShjaGVjaywgcGFyYW1zKSk7XG4gICAgaW5zdC5zdXBlclJlZmluZSA9IChyZWZpbmVtZW50KSA9PiBpbnN0LmNoZWNrKHN1cGVyUmVmaW5lKHJlZmluZW1lbnQpKTtcbiAgICBpbnN0Lm92ZXJ3cml0ZSA9IChmbikgPT4gaW5zdC5jaGVjayhjaGVja3Mub3ZlcndyaXRlKGZuKSk7XG4gICAgLy8gd3JhcHBlcnNcbiAgICBpbnN0Lm9wdGlvbmFsID0gKCkgPT4gb3B0aW9uYWwoaW5zdCk7XG4gICAgaW5zdC5udWxsYWJsZSA9ICgpID0+IG51bGxhYmxlKGluc3QpO1xuICAgIGluc3QubnVsbGlzaCA9ICgpID0+IG9wdGlvbmFsKG51bGxhYmxlKGluc3QpKTtcbiAgICBpbnN0Lm5vbm9wdGlvbmFsID0gKHBhcmFtcykgPT4gbm9ub3B0aW9uYWwoaW5zdCwgcGFyYW1zKTtcbiAgICBpbnN0LmFycmF5ID0gKCkgPT4gYXJyYXkoaW5zdCk7XG4gICAgaW5zdC5vciA9IChhcmcpID0+IHVuaW9uKFtpbnN0LCBhcmddKTtcbiAgICBpbnN0LmFuZCA9IChhcmcpID0+IGludGVyc2VjdGlvbihpbnN0LCBhcmcpO1xuICAgIGluc3QudHJhbnNmb3JtID0gKHR4KSA9PiBwaXBlKGluc3QsIHRyYW5zZm9ybSh0eCkpO1xuICAgIGluc3QuZGVmYXVsdCA9IChkZWYpID0+IF9kZWZhdWx0KGluc3QsIGRlZik7XG4gICAgaW5zdC5wcmVmYXVsdCA9IChkZWYpID0+IHByZWZhdWx0KGluc3QsIGRlZik7XG4gICAgLy8gaW5zdC5jb2FsZXNjZSA9IChkZWYsIHBhcmFtcykgPT4gY29hbGVzY2UoaW5zdCwgZGVmLCBwYXJhbXMpO1xuICAgIGluc3QuY2F0Y2ggPSAocGFyYW1zKSA9PiBfY2F0Y2goaW5zdCwgcGFyYW1zKTtcbiAgICBpbnN0LnBpcGUgPSAodGFyZ2V0KSA9PiBwaXBlKGluc3QsIHRhcmdldCk7XG4gICAgaW5zdC5yZWFkb25seSA9ICgpID0+IHJlYWRvbmx5KGluc3QpO1xuICAgIC8vIG1ldGFcbiAgICBpbnN0LmRlc2NyaWJlID0gKGRlc2NyaXB0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsID0gaW5zdC5jbG9uZSgpO1xuICAgICAgICBjb3JlLmdsb2JhbFJlZ2lzdHJ5LmFkZChjbCwgeyBkZXNjcmlwdGlvbiB9KTtcbiAgICAgICAgcmV0dXJuIGNsO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiZGVzY3JpcHRpb25cIiwge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29yZS5nbG9iYWxSZWdpc3RyeS5nZXQoaW5zdCk/LmRlc2NyaXB0aW9uO1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgaW5zdC5tZXRhID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29yZS5nbG9iYWxSZWdpc3RyeS5nZXQoaW5zdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2wgPSBpbnN0LmNsb25lKCk7XG4gICAgICAgIGNvcmUuZ2xvYmFsUmVnaXN0cnkuYWRkKGNsLCBhcmdzWzBdKTtcbiAgICAgICAgcmV0dXJuIGNsO1xuICAgIH07XG4gICAgLy8gaGVscGVyc1xuICAgIGluc3QuaXNPcHRpb25hbCA9ICgpID0+IGluc3Quc2FmZVBhcnNlKHVuZGVmaW5lZCkuc3VjY2VzcztcbiAgICBpbnN0LmlzTnVsbGFibGUgPSAoKSA9PiBpbnN0LnNhZmVQYXJzZShudWxsKS5zdWNjZXNzO1xuICAgIHJldHVybiBpbnN0O1xufSk7XG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX1pvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJfWm9kU3RyaW5nXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgaW5zdC5mb3JtYXQgPSBiYWcuZm9ybWF0ID8/IG51bGw7XG4gICAgaW5zdC5taW5MZW5ndGggPSBiYWcubWluaW11bSA/PyBudWxsO1xuICAgIGluc3QubWF4TGVuZ3RoID0gYmFnLm1heGltdW0gPz8gbnVsbDtcbiAgICAvLyB2YWxpZGF0aW9uc1xuICAgIGluc3QucmVnZXggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MucmVnZXgoLi4uYXJncykpO1xuICAgIGluc3QuaW5jbHVkZXMgPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MuaW5jbHVkZXMoLi4uYXJncykpO1xuICAgIGluc3Quc3RhcnRzV2l0aCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5zdGFydHNXaXRoKC4uLmFyZ3MpKTtcbiAgICBpbnN0LmVuZHNXaXRoID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLmVuZHNXaXRoKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lm1pbiA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgoLi4uYXJncykpO1xuICAgIGluc3QubWF4ID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLm1heExlbmd0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5sZW5ndGggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MubGVuZ3RoKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lm5vbmVtcHR5ID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLm1pbkxlbmd0aCgxLCAuLi5hcmdzKSk7XG4gICAgaW5zdC5sb3dlcmNhc2UgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sb3dlcmNhc2UocGFyYW1zKSk7XG4gICAgaW5zdC51cHBlcmNhc2UgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy51cHBlcmNhc2UocGFyYW1zKSk7XG4gICAgLy8gdHJhbnNmb3Jtc1xuICAgIGluc3QudHJpbSA9ICgpID0+IGluc3QuY2hlY2soY2hlY2tzLnRyaW0oKSk7XG4gICAgaW5zdC5ub3JtYWxpemUgPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3Mubm9ybWFsaXplKC4uLmFyZ3MpKTtcbiAgICBpbnN0LnRvTG93ZXJDYXNlID0gKCkgPT4gaW5zdC5jaGVjayhjaGVja3MudG9Mb3dlckNhc2UoKSk7XG4gICAgaW5zdC50b1VwcGVyQ2FzZSA9ICgpID0+IGluc3QuY2hlY2soY2hlY2tzLnRvVXBwZXJDYXNlKCkpO1xufSk7XG5leHBvcnQgY29uc3QgWm9kU3RyaW5nID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFN0cmluZ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbiAgICBfWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmVtYWlsID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9lbWFpbChab2RFbWFpbCwgcGFyYW1zKSk7XG4gICAgaW5zdC51cmwgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3VybChab2RVUkwsIHBhcmFtcykpO1xuICAgIGluc3Quand0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9qd3QoWm9kSldULCBwYXJhbXMpKTtcbiAgICBpbnN0LmVtb2ppID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9lbW9qaShab2RFbW9qaSwgcGFyYW1zKSk7XG4gICAgaW5zdC5ndWlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9ndWlkKFpvZEdVSUQsIHBhcmFtcykpO1xuICAgIGluc3QudXVpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdXVpZChab2RVVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWR2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdXVpZHY0KFpvZFVVSUQsIHBhcmFtcykpO1xuICAgIGluc3QudXVpZHY2ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91dWlkdjYoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC51dWlkdjcgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWR2Nyhab2RVVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5hbm9pZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbmFub2lkKFpvZE5hbm9JRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5ndWlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9ndWlkKFpvZEdVSUQsIHBhcmFtcykpO1xuICAgIGluc3QuY3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY3VpZChab2RDVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LmN1aWQyID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9jdWlkMihab2RDVUlEMiwgcGFyYW1zKSk7XG4gICAgaW5zdC51bGlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91bGlkKFpvZFVMSUQsIHBhcmFtcykpO1xuICAgIGluc3QuYmFzZTY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9iYXNlNjQoWm9kQmFzZTY0LCBwYXJhbXMpKTtcbiAgICBpbnN0LmJhc2U2NHVybCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fYmFzZTY0dXJsKFpvZEJhc2U2NFVSTCwgcGFyYW1zKSk7XG4gICAgaW5zdC54aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3hpZChab2RYSUQsIHBhcmFtcykpO1xuICAgIGluc3Qua3N1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2tzdWlkKFpvZEtTVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LmlwdjQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2lwdjQoWm9kSVB2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5pcHY2ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9pcHY2KFpvZElQdjYsIHBhcmFtcykpO1xuICAgIGluc3QuY2lkcnY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9jaWRydjQoWm9kQ0lEUnY0LCBwYXJhbXMpKTtcbiAgICBpbnN0LmNpZHJ2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY2lkcnY2KFpvZENJRFJ2NiwgcGFyYW1zKSk7XG4gICAgaW5zdC5lMTY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9lMTY0KFpvZEUxNjQsIHBhcmFtcykpO1xuICAgIC8vIGlzb1xuICAgIGluc3QuZGF0ZXRpbWUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby5kYXRldGltZShwYXJhbXMpKTtcbiAgICBpbnN0LmRhdGUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby5kYXRlKHBhcmFtcykpO1xuICAgIGluc3QudGltZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soaXNvLnRpbWUocGFyYW1zKSk7XG4gICAgaW5zdC5kdXJhdGlvbiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soaXNvLmR1cmF0aW9uKHBhcmFtcykpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmcoWm9kU3RyaW5nLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTdHJpbmdGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgX1pvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCBab2RFbWFpbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFbWFpbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RFbWFpbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lbWFpbChab2RFbWFpbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RHVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEdVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kR1VJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2d1aWQoWm9kR1VJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RVVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFVVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kVVVJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWQoWm9kVVVJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2NChab2RVVUlELCBwYXJhbXMpO1xufVxuLy8gWm9kVVVJRHY2XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY2KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjYoWm9kVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZFVVSUR2N1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY3KFpvZFVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VybChab2RVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kRW1vamkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRW1vamlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kRW1vamkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbW9qaShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1vamkoWm9kRW1vamksIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTmFub0lEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE5hbm9JRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2ROYW5vSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuYW5vaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX25hbm9pZChab2ROYW5vSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZENVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjdWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jdWlkKFpvZENVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ1VJRDIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ1VJRDJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kQ1VJRDIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjdWlkMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZDIoWm9kQ1VJRDIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVUxJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVTElEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZFVMSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91bGlkKFpvZFVMSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kWElEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFhJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RYSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB4aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3hpZChab2RYSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kS1NVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kS1NVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kS1NVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBrc3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fa3N1aWQoWm9kS1NVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSVB2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJUHY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZElQdjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpcHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pcHY0KFpvZElQdjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSVB2NiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJUHY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZElQdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpcHY2KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pcHY2KFpvZElQdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ0lEUnY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENJRFJ2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ0lEUnY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY2lkcnY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jaWRydjQoWm9kQ0lEUnY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENJRFJ2NiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDSURSdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2Ni5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY2KFpvZENJRFJ2NiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCYXNlNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmFzZTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEJhc2U2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmFzZTY0KFpvZEJhc2U2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCYXNlNjRVUkwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmFzZTY0VVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEJhc2U2NFVSTC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NHVybChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmFzZTY0dXJsKFpvZEJhc2U2NFVSTCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RFMTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEUxNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kRTE2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGUxNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2UxNjQoWm9kRTE2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RKV1QgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSldUXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEpXVC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGp3dChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fand0KFpvZEpXVCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RDdXN0b21TdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0Zvcm1hdChmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyA9IHt9KSB7XG4gICAgcmV0dXJuIGNvcmUuX3N0cmluZ0Zvcm1hdChab2RDdXN0b21TdHJpbmdGb3JtYXQsIGZvcm1hdCwgZm5PclJlZ2V4LCBfcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2ROdW1iZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVtYmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdW1iZXIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZ3QgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3QodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuZ3RlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5pbnQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGludChwYXJhbXMpKTtcbiAgICBpbnN0LnNhZmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGludChwYXJhbXMpKTtcbiAgICBpbnN0LnBvc2l0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3QoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5ub25uZWdhdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSgwLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5lZ2F0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHQoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5ub25wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZSgwLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm11bHRpcGxlT2YgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5zdGVwID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm11bHRpcGxlT2YodmFsdWUsIHBhcmFtcykpO1xuICAgIC8vIGluc3QuZmluaXRlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLmZpbml0ZShwYXJhbXMpKTtcbiAgICBpbnN0LmZpbml0ZSA9ICgpID0+IGluc3Q7XG4gICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0Lm1pblZhbHVlID1cbiAgICAgICAgTWF0aC5tYXgoYmFnLm1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBiYWcuZXhjbHVzaXZlTWluaW11bSA/PyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpID8/IG51bGw7XG4gICAgaW5zdC5tYXhWYWx1ZSA9XG4gICAgICAgIE1hdGgubWluKGJhZy5tYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgYmFnLmV4Y2x1c2l2ZU1heGltdW0gPz8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSA/PyBudWxsO1xuICAgIGluc3QuaXNJbnQgPSAoYmFnLmZvcm1hdCA/PyBcIlwiKS5pbmNsdWRlcyhcImludFwiKSB8fCBOdW1iZXIuaXNTYWZlSW50ZWdlcihiYWcubXVsdGlwbGVPZiA/PyAwLjUpO1xuICAgIGluc3QuaXNGaW5pdGUgPSB0cnVlO1xuICAgIGluc3QuZm9ybWF0ID0gYmFnLmZvcm1hdCA/PyBudWxsO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9udW1iZXIoWm9kTnVtYmVyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE51bWJlckZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROdW1iZXJGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bWJlckZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTnVtYmVyLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGludChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faW50KFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbG9hdDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9mbG9hdDMyKFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbG9hdDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9mbG9hdDY0KFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faW50MzIoWm9kTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWludDMyKFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCb29sZWFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJvb2xlYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJvb2xlYW4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYm9vbGVhbihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYm9vbGVhbihab2RCb29sZWFuLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEJpZ0ludCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5ndGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1pbiA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuZ3QgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3QodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuZ3RlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5uZWdhdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5ub25wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZShCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3Qubm9ubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUoQmlnSW50KDApLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm11bHRpcGxlT2YgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSk7XG4gICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0Lm1pblZhbHVlID0gYmFnLm1pbmltdW0gPz8gbnVsbDtcbiAgICBpbnN0Lm1heFZhbHVlID0gYmFnLm1heGltdW0gPz8gbnVsbDtcbiAgICBpbnN0LmZvcm1hdCA9IGJhZy5mb3JtYXQgPz8gbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJpZ2ludChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmlnaW50KFpvZEJpZ0ludCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCaWdJbnRGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmlnSW50Rm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnRGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGludDY0XG5leHBvcnQgZnVuY3Rpb24gaW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDY0KFpvZEJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIHVpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWludDY0KFpvZEJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RTeW1ib2wgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3ltYm9sXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTeW1ib2wuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3ltYm9sKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zeW1ib2woWm9kU3ltYm9sLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVuZGVmaW5lZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVbmRlZmluZWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuZGVmaW5lZC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF91bmRlZmluZWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VuZGVmaW5lZChab2RVbmRlZmluZWQsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB9O1xuZXhwb3J0IGNvbnN0IFpvZE51bGwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVsbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVsbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF9udWxsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9udWxsKFpvZE51bGwsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfbnVsbCBhcyBudWxsIH07XG5leHBvcnQgY29uc3QgWm9kQW55ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEFueVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQW55LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGFueSgpIHtcbiAgICByZXR1cm4gY29yZS5fYW55KFpvZEFueSk7XG59XG5leHBvcnQgY29uc3QgWm9kVW5rbm93biA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVbmtub3duXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmtub3duLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVua25vd24oKSB7XG4gICAgcmV0dXJuIGNvcmUuX3Vua25vd24oWm9kVW5rbm93bik7XG59XG5leHBvcnQgY29uc3QgWm9kTmV2ZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTmV2ZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5ldmVyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5ldmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uZXZlcihab2ROZXZlciwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RWb2lkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFZvaWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFZvaWQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfdm9pZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdm9pZChab2RWb2lkLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX3ZvaWQgYXMgdm9pZCB9O1xuZXhwb3J0IGNvbnN0IFpvZERhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRGF0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRGF0ZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGNvbnN0IGMgPSBpbnN0Ll96b2QuYmFnO1xuICAgIGluc3QubWluRGF0ZSA9IGMubWluaW11bSA/IG5ldyBEYXRlKGMubWluaW11bSkgOiBudWxsO1xuICAgIGluc3QubWF4RGF0ZSA9IGMubWF4aW11bSA/IG5ldyBEYXRlKGMubWF4aW11bSkgOiBudWxsO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZGF0ZShab2REYXRlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEFycmF5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEFycmF5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RBcnJheS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5lbGVtZW50ID0gZGVmLmVsZW1lbnQ7XG4gICAgaW5zdC5taW4gPSAobWluTGVuZ3RoLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm1pbkxlbmd0aChtaW5MZW5ndGgsIHBhcmFtcykpO1xuICAgIGluc3Qubm9uZW1wdHkgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgoMSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAobWF4TGVuZ3RoLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm1heExlbmd0aChtYXhMZW5ndGgsIHBhcmFtcykpO1xuICAgIGluc3QubGVuZ3RoID0gKGxlbiwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sZW5ndGgobGVuLCBwYXJhbXMpKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuZWxlbWVudDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5KGVsZW1lbnQsIHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9hcnJheShab2RBcnJheSwgZWxlbWVudCwgcGFyYW1zKTtcbn1cbi8vIC5rZXlvZlxuZXhwb3J0IGZ1bmN0aW9uIGtleW9mKHNjaGVtYSkge1xuICAgIGNvbnN0IHNoYXBlID0gc2NoZW1hLl96b2QuZGVmLnNoYXBlO1xuICAgIHJldHVybiBsaXRlcmFsKE9iamVjdC5rZXlzKHNoYXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE9iamVjdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kT2JqZWN0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdCwgXCJzaGFwZVwiLCAoKSA9PiBkZWYuc2hhcGUpO1xuICAgIGluc3Qua2V5b2YgPSAoKSA9PiBfZW51bShPYmplY3Qua2V5cyhpbnN0Ll96b2QuZGVmLnNoYXBlKSk7XG4gICAgaW5zdC5jYXRjaGFsbCA9IChjYXRjaGFsbCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiBjYXRjaGFsbCB9KTtcbiAgICBpbnN0LnBhc3N0aHJvdWdoID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiB1bmtub3duKCkgfSk7XG4gICAgLy8gaW5zdC5ub25zdHJpY3QgPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IGFwaS51bmtub3duKCkgfSk7XG4gICAgaW5zdC5sb29zZSA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogdW5rbm93bigpIH0pO1xuICAgIGluc3Quc3RyaWN0ID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiBuZXZlcigpIH0pO1xuICAgIGluc3Quc3RyaXAgPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IHVuZGVmaW5lZCB9KTtcbiAgICBpbnN0LmV4dGVuZCA9IChpbmNvbWluZykgPT4ge1xuICAgICAgICByZXR1cm4gdXRpbC5leHRlbmQoaW5zdCwgaW5jb21pbmcpO1xuICAgIH07XG4gICAgaW5zdC5tZXJnZSA9IChvdGhlcikgPT4gdXRpbC5tZXJnZShpbnN0LCBvdGhlcik7XG4gICAgaW5zdC5waWNrID0gKG1hc2spID0+IHV0aWwucGljayhpbnN0LCBtYXNrKTtcbiAgICBpbnN0Lm9taXQgPSAobWFzaykgPT4gdXRpbC5vbWl0KGluc3QsIG1hc2spO1xuICAgIGluc3QucGFydGlhbCA9ICguLi5hcmdzKSA9PiB1dGlsLnBhcnRpYWwoWm9kT3B0aW9uYWwsIGluc3QsIGFyZ3NbMF0pO1xuICAgIGluc3QucmVxdWlyZWQgPSAoLi4uYXJncykgPT4gdXRpbC5yZXF1aXJlZChab2ROb25PcHRpb25hbCwgaW5zdCwgYXJnc1swXSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIGNvbnN0IGRlZiA9IHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3QoZGVmKTtcbn1cbi8vIHN0cmljdE9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIHN0cmljdE9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICB1dGlsLmFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCB7IC4uLnNoYXBlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNhdGNoYWxsOiBuZXZlcigpLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gbG9vc2VPYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBsb29zZU9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICB1dGlsLmFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCB7IC4uLnNoYXBlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNhdGNoYWxsOiB1bmtub3duKCksXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kVW5pb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Lm9wdGlvbnMgPSBkZWYub3B0aW9ucztcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uKG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kVW5pb24oe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRGlzY3JpbWluYXRlZFVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgWm9kVW5pb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZERpc2NyaW1pbmF0ZWRVbmlvbi5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkaXNjcmltaW5hdGVkVW5pb24oZGlzY3JpbWluYXRvciwgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgLy8gY29uc3QgW29wdGlvbnMsIHBhcmFtc10gPSBhcmdzO1xuICAgIHJldHVybiBuZXcgWm9kRGlzY3JpbWluYXRlZFVuaW9uKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkaXNjcmltaW5hdG9yLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZEludGVyc2VjdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJbnRlcnNlY3Rpb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEludGVyc2VjdGlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbmV3IFpvZEludGVyc2VjdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW50ZXJzZWN0aW9uXCIsXG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RUdXBsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUdXBsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHVwbGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QucmVzdCA9IChyZXN0KSA9PiBpbnN0LmNsb25lKHtcbiAgICAgICAgLi4uaW5zdC5fem9kLmRlZixcbiAgICAgICAgcmVzdDogcmVzdCxcbiAgICB9KTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHR1cGxlKGl0ZW1zLCBfcGFyYW1zT3JSZXN0LCBfcGFyYW1zKSB7XG4gICAgY29uc3QgaGFzUmVzdCA9IF9wYXJhbXNPclJlc3QgaW5zdGFuY2VvZiBjb3JlLiRab2RUeXBlO1xuICAgIGNvbnN0IHBhcmFtcyA9IGhhc1Jlc3QgPyBfcGFyYW1zIDogX3BhcmFtc09yUmVzdDtcbiAgICBjb25zdCByZXN0ID0gaGFzUmVzdCA/IF9wYXJhbXNPclJlc3QgOiBudWxsO1xuICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICB0eXBlOiBcInR1cGxlXCIsXG4gICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgcmVzdCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RSZWNvcmQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUmVjb3JkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWNvcmQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3Qua2V5VHlwZSA9IGRlZi5rZXlUeXBlO1xuICAgIGluc3QudmFsdWVUeXBlID0gZGVmLnZhbHVlVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyB0eXBlIGFsa3NqZiA9IGNvcmUub3V0cHV0PGNvcmUuJFpvZFJlY29yZEtleT47XG5leHBvcnQgZnVuY3Rpb24gcGFydGlhbFJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZTogdW5pb24oW2tleVR5cGUsIG5ldmVyKCldKSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWFwID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1hcFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTWFwLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmtleVR5cGUgPSBkZWYua2V5VHlwZTtcbiAgICBpbnN0LnZhbHVlVHlwZSA9IGRlZi52YWx1ZVR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBtYXAoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1hcCh7XG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIGtleVR5cGU6IGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFNldCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTZXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFNldC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5taW4gPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjb3JlLl9taW5TaXplKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lm5vbmVtcHR5ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9taW5TaXplKDEsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY29yZS5fbWF4U2l6ZSguLi5hcmdzKSk7XG4gICAgaW5zdC5zaXplID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY29yZS5fc2l6ZSguLi5hcmdzKSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzZXQodmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZEVudW0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRW51bVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRW51bS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5lbnVtID0gZGVmLmVudHJpZXM7XG4gICAgaW5zdC5vcHRpb25zID0gT2JqZWN0LnZhbHVlcyhkZWYuZW50cmllcyk7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZGVmLmVudHJpZXMpKTtcbiAgICBpbnN0LmV4dHJhY3QgPSAodmFsdWVzLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGtleXMuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG5ld0VudHJpZXNbdmFsdWVdID0gZGVmLmVudHJpZXNbdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5ICR7dmFsdWV9IG5vdCBmb3VuZCBpbiBlbnVtYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgICAgIC4uLmRlZixcbiAgICAgICAgICAgIGNoZWNrczogW10sXG4gICAgICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICAgICAgZW50cmllczogbmV3RW50cmllcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBpbnN0LmV4Y2x1ZGUgPSAodmFsdWVzLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHsgLi4uZGVmLmVudHJpZXMgfTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGlmIChrZXlzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RW50cmllc1t2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHt2YWx1ZX0gbm90IGZvdW5kIGluIGVudW1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZEVudW0oe1xuICAgICAgICAgICAgLi4uZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgICAgICBlbnRyaWVzOiBuZXdFbnRyaWVzLFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBfZW51bSh2YWx1ZXMsIHBhcmFtcykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyBPYmplY3QuZnJvbUVudHJpZXModmFsdWVzLm1hcCgodikgPT4gW3YsIHZdKSkgOiB2YWx1ZXM7XG4gICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfZW51bSBhcyBlbnVtIH07XG4vKiogQGRlcHJlY2F0ZWQgVGhpcyBBUEkgaGFzIGJlZW4gbWVyZ2VkIGludG8gYHouZW51bSgpYC4gVXNlIGB6LmVudW0oKWAgaW5zdGVhZC5cbiAqXG4gKiBgYGB0c1xuICogZW51bSBDb2xvcnMgeyByZWQsIGdyZWVuLCBibHVlIH1cbiAqIHouZW51bShDb2xvcnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXRpdmVFbnVtKGVudHJpZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZExpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC52YWx1ZXMgPSBuZXcgU2V0KGRlZi52YWx1ZXMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcInZhbHVlXCIsIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgaWYgKGRlZi52YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgc2NoZW1hIGNvbnRhaW5zIG11bHRpcGxlIHZhbGlkIGxpdGVyYWwgdmFsdWVzLiBVc2UgYC52YWx1ZXNgIGluc3RlYWQuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZi52YWx1ZXNbMF07XG4gICAgICAgIH0sXG4gICAgfSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZExpdGVyYWwoe1xuICAgICAgICB0eXBlOiBcImxpdGVyYWxcIixcbiAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RGaWxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEZpbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEZpbGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QubWluID0gKHNpemUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9taW5TaXplKHNpemUsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKHNpemUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9tYXhTaXplKHNpemUsIHBhcmFtcykpO1xuICAgIGluc3QubWltZSA9ICh0eXBlcywgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pbWUoQXJyYXkuaXNBcnJheSh0eXBlcykgPyB0eXBlcyA6IFt0eXBlc10sIHBhcmFtcykpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZmlsZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmlsZShab2RGaWxlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFRyYW5zZm9ybSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUcmFuc2Zvcm1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFRyYW5zZm9ybS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgcGF5bG9hZC5hZGRJc3N1ZSA9IChpc3N1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpc3N1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShpc3N1ZSwgcGF5bG9hZC52YWx1ZSwgZGVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgWm9kIDMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZhdGFsKVxuICAgICAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29kZSA/PyAoX2lzc3VlLmNvZGUgPSBcImN1c3RvbVwiKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5wdXQgPz8gKF9pc3N1ZS5pbnB1dCA9IHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIF9pc3N1ZS5pbnN0ID8/IChfaXNzdWUuaW5zdCA9IGluc3QpO1xuICAgICAgICAgICAgICAgIF9pc3N1ZS5jb250aW51ZSA/PyAoX2lzc3VlLmNvbnRpbnVlID0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh1dGlsLmlzc3VlKF9pc3N1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBkZWYudHJhbnNmb3JtKHBheWxvYWQudmFsdWUsIHBheWxvYWQpO1xuICAgICAgICBpZiAob3V0cHV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIG91dHB1dC50aGVuKChvdXRwdXQpID0+IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG91dHB1dDtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIHJldHVybiBuZXcgWm9kVHJhbnNmb3JtKHtcbiAgICAgICAgdHlwZTogXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgdHJhbnNmb3JtOiBmbixcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RPcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RPcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kT3B0aW9uYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbChpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE9wdGlvbmFsKHtcbiAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2ROdWxsYWJsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROdWxsYWJsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVsbGFibGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBudWxsYWJsZShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGxhYmxlKHtcbiAgICAgICAgdHlwZTogXCJudWxsYWJsZVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbi8vIG51bGxpc2hcbmV4cG9ydCBmdW5jdGlvbiBudWxsaXNoKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBvcHRpb25hbChudWxsYWJsZShpbm5lclR5cGUpKTtcbn1cbmV4cG9ydCBjb25zdCBab2REZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZERlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERlZmF1bHQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG4gICAgaW5zdC5yZW1vdmVEZWZhdWx0ID0gaW5zdC51bndyYXA7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBfZGVmYXVsdChpbm5lclR5cGUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kRGVmYXVsdCh7XG4gICAgICAgIHR5cGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RQcmVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RQcmVmYXVsdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJlZmF1bHQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcmVmYXVsdChpbm5lclR5cGUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kUHJlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcInByZWZhdWx0XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5vbk9wdGlvbmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE5vbk9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROb25PcHRpb25hbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5vbm9wdGlvbmFsKGlubmVyVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2ROb25PcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kU3VjY2VzcyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTdWNjZXNzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdWNjZXNzLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3VjY2Vzcyhpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFN1Y2Nlc3Moe1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kQ2F0Y2ggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ2F0Y2hcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENhdGNoLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xuICAgIGluc3QucmVtb3ZlQ2F0Y2ggPSBpbnN0LnVud3JhcDtcbn0pO1xuZnVuY3Rpb24gX2NhdGNoKGlubmVyVHlwZSwgY2F0Y2hWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kQ2F0Y2goe1xuICAgICAgICB0eXBlOiBcImNhdGNoXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICBjYXRjaFZhbHVlOiAodHlwZW9mIGNhdGNoVmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGNhdGNoVmFsdWUgOiAoKSA9PiBjYXRjaFZhbHVlKSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IF9jYXRjaCBhcyBjYXRjaCB9O1xuZXhwb3J0IGNvbnN0IFpvZE5hTiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROYU5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5hTi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX25hbihab2ROYU4sIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kUGlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RQaXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQaXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmluID0gZGVmLmluO1xuICAgIGluc3Qub3V0ID0gZGVmLm91dDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHBpcGUoaW5fLCBvdXQpIHtcbiAgICByZXR1cm4gbmV3IFpvZFBpcGUoe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IGluXyxcbiAgICAgICAgb3V0OiBvdXQsXG4gICAgICAgIC8vIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUmVhZG9ubHkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUmVhZG9ubHlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFJlYWRvbmx5LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRvbmx5KGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kUmVhZG9ubHkoe1xuICAgICAgICB0eXBlOiBcInJlYWRvbmx5XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFRlbXBsYXRlTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUZW1wbGF0ZUxpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFRlbXBsYXRlTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZUxpdGVyYWwocGFydHMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kVGVtcGxhdGVMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgIHBhcnRzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZExhenkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTGF6eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGF6eS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmdldHRlcigpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbGF6eShnZXR0ZXIpIHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgICB0eXBlOiBcImxhenlcIixcbiAgICAgICAgZ2V0dGVyOiBnZXR0ZXIsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUHJvbWlzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RQcm9taXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQcm9taXNlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFByb21pc2Uoe1xuICAgICAgICB0eXBlOiBcInByb21pc2VcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kQ3VzdG9tID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEN1c3RvbVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ3VzdG9tLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8gY3VzdG9tIGNoZWNrc1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKGZuKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY29yZS4kWm9kQ2hlY2soe1xuICAgICAgICBjaGVjazogXCJjdXN0b21cIixcbiAgICAgICAgLy8gLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgICBjaC5fem9kLmNoZWNrID0gZm47XG4gICAgcmV0dXJuIGNoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbShmbiwgX3BhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jdXN0b20oWm9kQ3VzdG9tLCBmbiA/PyAoKCkgPT4gdHJ1ZSksIF9wYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlZmluZShmbiwgX3BhcmFtcyA9IHt9KSB7XG4gICAgcmV0dXJuIGNvcmUuX3JlZmluZShab2RDdXN0b20sIGZuLCBfcGFyYW1zKTtcbn1cbi8vIHN1cGVyUmVmaW5lXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJSZWZpbmUoZm4pIHtcbiAgICBjb25zdCBjaCA9IGNoZWNrKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHBheWxvYWQuYWRkSXNzdWUgPSAoaXNzdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoaXNzdWUsIHBheWxvYWQudmFsdWUsIGNoLl96b2QuZGVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgWm9kIDMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZhdGFsKVxuICAgICAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29kZSA/PyAoX2lzc3VlLmNvZGUgPSBcImN1c3RvbVwiKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5wdXQgPz8gKF9pc3N1ZS5pbnB1dCA9IHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIF9pc3N1ZS5pbnN0ID8/IChfaXNzdWUuaW5zdCA9IGNoKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPz8gKF9pc3N1ZS5jb250aW51ZSA9ICFjaC5fem9kLmRlZi5hYm9ydCk7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh1dGlsLmlzc3VlKF9pc3N1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZm4ocGF5bG9hZC52YWx1ZSwgcGF5bG9hZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoO1xufVxuZnVuY3Rpb24gX2luc3RhbmNlb2YoY2xzLCBwYXJhbXMgPSB7XG4gICAgZXJyb3I6IGBJbnB1dCBub3QgaW5zdGFuY2Ugb2YgJHtjbHMubmFtZX1gLFxufSkge1xuICAgIGNvbnN0IGluc3QgPSBuZXcgWm9kQ3VzdG9tKHtcbiAgICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIGZuOiAoZGF0YSkgPT4gZGF0YSBpbnN0YW5jZW9mIGNscyxcbiAgICAgICAgYWJvcnQ6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmJhZy5DbGFzcyA9IGNscztcbiAgICByZXR1cm4gaW5zdDtcbn1cbmV4cG9ydCB7IF9pbnN0YW5jZW9mIGFzIGluc3RhbmNlb2YgfTtcbi8vIHN0cmluZ2Jvb2xcbmV4cG9ydCBjb25zdCBzdHJpbmdib29sID0gKC4uLmFyZ3MpID0+IGNvcmUuX3N0cmluZ2Jvb2woe1xuICAgIFBpcGU6IFpvZFBpcGUsXG4gICAgQm9vbGVhbjogWm9kQm9vbGVhbixcbiAgICBTdHJpbmc6IFpvZFN0cmluZyxcbiAgICBUcmFuc2Zvcm06IFpvZFRyYW5zZm9ybSxcbn0sIC4uLmFyZ3MpO1xuZXhwb3J0IGZ1bmN0aW9uIGpzb24ocGFyYW1zKSB7XG4gICAgY29uc3QganNvblNjaGVtYSA9IGxhenkoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdW5pb24oW3N0cmluZyhwYXJhbXMpLCBudW1iZXIoKSwgYm9vbGVhbigpLCBfbnVsbCgpLCBhcnJheShqc29uU2NoZW1hKSwgcmVjb3JkKHN0cmluZygpLCBqc29uU2NoZW1hKV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBqc29uU2NoZW1hO1xufVxuLy8gcHJlcHJvY2Vzc1xuLy8gLyoqIEBkZXByZWNhdGVkIFVzZSBgei5waXBlKClgIGFuZCBgei50cmFuc2Zvcm0oKWAgaW5zdGVhZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzKGZuLCBzY2hlbWEpIHtcbiAgICByZXR1cm4gcGlwZSh0cmFuc2Zvcm0oZm4pLCBzY2hlbWEpO1xufVxuIiwgImV4cG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoZWNrcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcGF0LmpzXCI7XG4vLyB6b2Qtc3BlY2lmaWVkXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IGVuIGZyb20gXCIuLi9sb2NhbGVzL2VuLmpzXCI7XG5jb25maWcoZW4oKSk7XG5leHBvcnQgeyBnbG9iYWxSZWdpc3RyeSwgcmVnaXN0cnksIGNvbmZpZywgZnVuY3Rpb24sICRvdXRwdXQsICRpbnB1dCwgJGJyYW5kLCBjbG9uZSwgcmVnZXhlcywgdHJlZWlmeUVycm9yLCBwcmV0dGlmeUVycm9yLCBmb3JtYXRFcnJvciwgZmxhdHRlbkVycm9yLCB0b0pTT05TY2hlbWEsIFRpbWVQcmVjaXNpb24sIE5FVkVSLCB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5leHBvcnQgKiBhcyBsb2NhbGVzIGZyb20gXCIuLi9sb2NhbGVzL2luZGV4LmpzXCI7XG4vLyBpc29cbi8vIG11c3QgYmUgZXhwb3J0ZWQgZnJvbSB0b3AtbGV2ZWxcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9pc3N1ZXMvNDQ5MVxuZXhwb3J0IHsgWm9kSVNPRGF0ZVRpbWUsIFpvZElTT0RhdGUsIFpvZElTT1RpbWUsIFpvZElTT0R1cmF0aW9uIH0gZnJvbSBcIi4vaXNvLmpzXCI7XG5leHBvcnQgKiBhcyBpc28gZnJvbSBcIi4vaXNvLmpzXCI7XG5leHBvcnQgKiBhcyBjb2VyY2UgZnJvbSBcIi4vY29lcmNlLmpzXCI7XG4iLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiLy8gc3JjL3NlcnZlci50c1xuaW1wb3J0IHsgY3JlYXRlU2VydmVyIGFzIGNyZWF0ZVNlcnZlckhUVFAgfSBmcm9tIFwiaHR0cFwiO1xuXG4vLyBzcmMvbGlzdGVuZXIudHNcbmltcG9ydCB7IEh0dHAyU2VydmVyUmVxdWVzdCBhcyBIdHRwMlNlcnZlclJlcXVlc3QyLCBjb25zdGFudHMgYXMgaDJjb25zdGFudHMgfSBmcm9tIFwiaHR0cDJcIjtcblxuLy8gc3JjL3JlcXVlc3QudHNcbmltcG9ydCB7IEh0dHAyU2VydmVyUmVxdWVzdCB9IGZyb20gXCJodHRwMlwiO1xuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tIFwic3RyZWFtXCI7XG52YXIgUmVxdWVzdEVycm9yID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcbiAgICB0aGlzLm5hbWUgPSBcIlJlcXVlc3RFcnJvclwiO1xuICB9XG59O1xudmFyIHRvUmVxdWVzdEVycm9yID0gKGUpID0+IHtcbiAgaWYgKGUgaW5zdGFuY2VvZiBSZXF1ZXN0RXJyb3IpIHtcbiAgICByZXR1cm4gZTtcbiAgfVxuICByZXR1cm4gbmV3IFJlcXVlc3RFcnJvcihlLm1lc3NhZ2UsIHsgY2F1c2U6IGUgfSk7XG59O1xudmFyIEdsb2JhbFJlcXVlc3QgPSBnbG9iYWwuUmVxdWVzdDtcbnZhciBSZXF1ZXN0ID0gY2xhc3MgZXh0ZW5kcyBHbG9iYWxSZXF1ZXN0IHtcbiAgY29uc3RydWN0b3IoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcIm9iamVjdFwiICYmIGdldFJlcXVlc3RDYWNoZSBpbiBpbnB1dCkge1xuICAgICAgaW5wdXQgPSBpbnB1dFtnZXRSZXF1ZXN0Q2FjaGVdKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucz8uYm9keT8uZ2V0UmVhZGVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICA7XG4gICAgICBvcHRpb25zLmR1cGxleCA/Pz0gXCJoYWxmXCI7XG4gICAgfVxuICAgIHN1cGVyKGlucHV0LCBvcHRpb25zKTtcbiAgfVxufTtcbnZhciBuZXdIZWFkZXJzRnJvbUluY29taW5nID0gKGluY29taW5nKSA9PiB7XG4gIGNvbnN0IGhlYWRlclJlY29yZCA9IFtdO1xuICBjb25zdCByYXdIZWFkZXJzID0gaW5jb21pbmcucmF3SGVhZGVycztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXdIZWFkZXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgY29uc3QgeyBbaV06IGtleSwgW2kgKyAxXTogdmFsdWUgfSA9IHJhd0hlYWRlcnM7XG4gICAgaWYgKGtleS5jaGFyQ29kZUF0KDApICE9PSAvKjoqL1xuICAgIDU4KSB7XG4gICAgICBoZWFkZXJSZWNvcmQucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3IEhlYWRlcnMoaGVhZGVyUmVjb3JkKTtcbn07XG52YXIgd3JhcEJvZHlTdHJlYW0gPSBTeW1ib2woXCJ3cmFwQm9keVN0cmVhbVwiKTtcbnZhciBuZXdSZXF1ZXN0RnJvbUluY29taW5nID0gKG1ldGhvZCwgdXJsLCBoZWFkZXJzLCBpbmNvbWluZywgYWJvcnRDb250cm9sbGVyKSA9PiB7XG4gIGNvbnN0IGluaXQgPSB7XG4gICAgbWV0aG9kLFxuICAgIGhlYWRlcnMsXG4gICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gIH07XG4gIGlmIChtZXRob2QgPT09IFwiVFJBQ0VcIikge1xuICAgIGluaXQubWV0aG9kID0gXCJHRVRcIjtcbiAgICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdCh1cmwsIGluaXQpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsIFwibWV0aG9kXCIsIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIFwiVFJBQ0VcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVxO1xuICB9XG4gIGlmICghKG1ldGhvZCA9PT0gXCJHRVRcIiB8fCBtZXRob2QgPT09IFwiSEVBRFwiKSkge1xuICAgIGlmIChcInJhd0JvZHlcIiBpbiBpbmNvbWluZyAmJiBpbmNvbWluZy5yYXdCb2R5IGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBpbml0LmJvZHkgPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGluY29taW5nLnJhd0JvZHkpO1xuICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpbmNvbWluZ1t3cmFwQm9keVN0cmVhbV0pIHtcbiAgICAgIGxldCByZWFkZXI7XG4gICAgICBpbml0LmJvZHkgPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVhZGVyIHx8PSBSZWFkYWJsZS50b1dlYihpbmNvbWluZykuZ2V0UmVhZGVyKCk7XG4gICAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdC5ib2R5ID0gUmVhZGFibGUudG9XZWIoaW5jb21pbmcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3IFJlcXVlc3QodXJsLCBpbml0KTtcbn07XG52YXIgZ2V0UmVxdWVzdENhY2hlID0gU3ltYm9sKFwiZ2V0UmVxdWVzdENhY2hlXCIpO1xudmFyIHJlcXVlc3RDYWNoZSA9IFN5bWJvbChcInJlcXVlc3RDYWNoZVwiKTtcbnZhciBpbmNvbWluZ0tleSA9IFN5bWJvbChcImluY29taW5nS2V5XCIpO1xudmFyIHVybEtleSA9IFN5bWJvbChcInVybEtleVwiKTtcbnZhciBoZWFkZXJzS2V5ID0gU3ltYm9sKFwiaGVhZGVyc0tleVwiKTtcbnZhciBhYm9ydENvbnRyb2xsZXJLZXkgPSBTeW1ib2woXCJhYm9ydENvbnRyb2xsZXJLZXlcIik7XG52YXIgZ2V0QWJvcnRDb250cm9sbGVyID0gU3ltYm9sKFwiZ2V0QWJvcnRDb250cm9sbGVyXCIpO1xudmFyIHJlcXVlc3RQcm90b3R5cGUgPSB7XG4gIGdldCBtZXRob2QoKSB7XG4gICAgcmV0dXJuIHRoaXNbaW5jb21pbmdLZXldLm1ldGhvZCB8fCBcIkdFVFwiO1xuICB9LFxuICBnZXQgdXJsKCkge1xuICAgIHJldHVybiB0aGlzW3VybEtleV07XG4gIH0sXG4gIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzW2hlYWRlcnNLZXldIHx8PSBuZXdIZWFkZXJzRnJvbUluY29taW5nKHRoaXNbaW5jb21pbmdLZXldKTtcbiAgfSxcbiAgW2dldEFib3J0Q29udHJvbGxlcl0oKSB7XG4gICAgdGhpc1tnZXRSZXF1ZXN0Q2FjaGVdKCk7XG4gICAgcmV0dXJuIHRoaXNbYWJvcnRDb250cm9sbGVyS2V5XTtcbiAgfSxcbiAgW2dldFJlcXVlc3RDYWNoZV0oKSB7XG4gICAgdGhpc1thYm9ydENvbnRyb2xsZXJLZXldIHx8PSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgcmV0dXJuIHRoaXNbcmVxdWVzdENhY2hlXSB8fD0gbmV3UmVxdWVzdEZyb21JbmNvbWluZyhcbiAgICAgIHRoaXMubWV0aG9kLFxuICAgICAgdGhpc1t1cmxLZXldLFxuICAgICAgdGhpcy5oZWFkZXJzLFxuICAgICAgdGhpc1tpbmNvbWluZ0tleV0sXG4gICAgICB0aGlzW2Fib3J0Q29udHJvbGxlcktleV1cbiAgICApO1xuICB9XG59O1xuW1xuICBcImJvZHlcIixcbiAgXCJib2R5VXNlZFwiLFxuICBcImNhY2hlXCIsXG4gIFwiY3JlZGVudGlhbHNcIixcbiAgXCJkZXN0aW5hdGlvblwiLFxuICBcImludGVncml0eVwiLFxuICBcIm1vZGVcIixcbiAgXCJyZWRpcmVjdFwiLFxuICBcInJlZmVycmVyXCIsXG4gIFwicmVmZXJyZXJQb2xpY3lcIixcbiAgXCJzaWduYWxcIixcbiAgXCJrZWVwYWxpdmVcIlxuXS5mb3JFYWNoKChrKSA9PiB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1ZXN0UHJvdG90eXBlLCBrLCB7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXNbZ2V0UmVxdWVzdENhY2hlXSgpW2tdO1xuICAgIH1cbiAgfSk7XG59KTtcbltcImFycmF5QnVmZmVyXCIsIFwiYmxvYlwiLCBcImNsb25lXCIsIFwiZm9ybURhdGFcIiwgXCJqc29uXCIsIFwidGV4dFwiXS5mb3JFYWNoKChrKSA9PiB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1ZXN0UHJvdG90eXBlLCBrLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXNbZ2V0UmVxdWVzdENhY2hlXSgpW2tdKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVlc3RQcm90b3R5cGUsIFN5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKSwge1xuICB2YWx1ZTogZnVuY3Rpb24oZGVwdGgsIG9wdGlvbnMsIGluc3BlY3RGbikge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICBuYXRpdmVSZXF1ZXN0OiB0aGlzW3JlcXVlc3RDYWNoZV1cbiAgICB9O1xuICAgIHJldHVybiBgUmVxdWVzdCAobGlnaHR3ZWlnaHQpICR7aW5zcGVjdEZuKHByb3BzLCB7IC4uLm9wdGlvbnMsIGRlcHRoOiBkZXB0aCA9PSBudWxsID8gbnVsbCA6IGRlcHRoIC0gMSB9KX1gO1xuICB9XG59KTtcbk9iamVjdC5zZXRQcm90b3R5cGVPZihyZXF1ZXN0UHJvdG90eXBlLCBSZXF1ZXN0LnByb3RvdHlwZSk7XG52YXIgbmV3UmVxdWVzdCA9IChpbmNvbWluZywgZGVmYXVsdEhvc3RuYW1lKSA9PiB7XG4gIGNvbnN0IHJlcSA9IE9iamVjdC5jcmVhdGUocmVxdWVzdFByb3RvdHlwZSk7XG4gIHJlcVtpbmNvbWluZ0tleV0gPSBpbmNvbWluZztcbiAgY29uc3QgaW5jb21pbmdVcmwgPSBpbmNvbWluZy51cmwgfHwgXCJcIjtcbiAgaWYgKGluY29taW5nVXJsWzBdICE9PSBcIi9cIiAmJiAvLyBzaG9ydC1jaXJjdWl0IGZvciBwZXJmb3JtYW5jZS4gbW9zdCByZXF1ZXN0cyBhcmUgcmVsYXRpdmUgVVJMLlxuICAoaW5jb21pbmdVcmwuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgfHwgaW5jb21pbmdVcmwuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSkge1xuICAgIGlmIChpbmNvbWluZyBpbnN0YW5jZW9mIEh0dHAyU2VydmVyUmVxdWVzdCkge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihcIkFic29sdXRlIFVSTCBmb3IgOnBhdGggaXMgbm90IGFsbG93ZWQgaW4gSFRUUC8yXCIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsMiA9IG5ldyBVUkwoaW5jb21pbmdVcmwpO1xuICAgICAgcmVxW3VybEtleV0gPSB1cmwyLmhyZWY7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcihcIkludmFsaWQgYWJzb2x1dGUgVVJMXCIsIHsgY2F1c2U6IGUgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXE7XG4gIH1cbiAgY29uc3QgaG9zdCA9IChpbmNvbWluZyBpbnN0YW5jZW9mIEh0dHAyU2VydmVyUmVxdWVzdCA/IGluY29taW5nLmF1dGhvcml0eSA6IGluY29taW5nLmhlYWRlcnMuaG9zdCkgfHwgZGVmYXVsdEhvc3RuYW1lO1xuICBpZiAoIWhvc3QpIHtcbiAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKFwiTWlzc2luZyBob3N0IGhlYWRlclwiKTtcbiAgfVxuICBsZXQgc2NoZW1lO1xuICBpZiAoaW5jb21pbmcgaW5zdGFuY2VvZiBIdHRwMlNlcnZlclJlcXVlc3QpIHtcbiAgICBzY2hlbWUgPSBpbmNvbWluZy5zY2hlbWU7XG4gICAgaWYgKCEoc2NoZW1lID09PSBcImh0dHBcIiB8fCBzY2hlbWUgPT09IFwiaHR0cHNcIikpIHtcbiAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoXCJVbnN1cHBvcnRlZCBzY2hlbWVcIik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNjaGVtZSA9IGluY29taW5nLnNvY2tldCAmJiBpbmNvbWluZy5zb2NrZXQuZW5jcnlwdGVkID8gXCJodHRwc1wiIDogXCJodHRwXCI7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgJHtzY2hlbWV9Oi8vJHtob3N0fSR7aW5jb21pbmdVcmx9YCk7XG4gIGlmICh1cmwuaG9zdG5hbWUubGVuZ3RoICE9PSBob3N0Lmxlbmd0aCAmJiB1cmwuaG9zdG5hbWUgIT09IGhvc3QucmVwbGFjZSgvOlxcZCskLywgXCJcIikpIHtcbiAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKFwiSW52YWxpZCBob3N0IGhlYWRlclwiKTtcbiAgfVxuICByZXFbdXJsS2V5XSA9IHVybC5ocmVmO1xuICByZXR1cm4gcmVxO1xufTtcblxuLy8gc3JjL3Jlc3BvbnNlLnRzXG52YXIgcmVzcG9uc2VDYWNoZSA9IFN5bWJvbChcInJlc3BvbnNlQ2FjaGVcIik7XG52YXIgZ2V0UmVzcG9uc2VDYWNoZSA9IFN5bWJvbChcImdldFJlc3BvbnNlQ2FjaGVcIik7XG52YXIgY2FjaGVLZXkgPSBTeW1ib2woXCJjYWNoZVwiKTtcbnZhciBHbG9iYWxSZXNwb25zZSA9IGdsb2JhbC5SZXNwb25zZTtcbnZhciBSZXNwb25zZTIgPSBjbGFzcyBfUmVzcG9uc2Uge1xuICAjYm9keTtcbiAgI2luaXQ7XG4gIFtnZXRSZXNwb25zZUNhY2hlXSgpIHtcbiAgICBkZWxldGUgdGhpc1tjYWNoZUtleV07XG4gICAgcmV0dXJuIHRoaXNbcmVzcG9uc2VDYWNoZV0gfHw9IG5ldyBHbG9iYWxSZXNwb25zZSh0aGlzLiNib2R5LCB0aGlzLiNpbml0KTtcbiAgfVxuICBjb25zdHJ1Y3Rvcihib2R5LCBpbml0KSB7XG4gICAgbGV0IGhlYWRlcnM7XG4gICAgdGhpcy4jYm9keSA9IGJvZHk7XG4gICAgaWYgKGluaXQgaW5zdGFuY2VvZiBfUmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IGNhY2hlZEdsb2JhbFJlc3BvbnNlID0gaW5pdFtyZXNwb25zZUNhY2hlXTtcbiAgICAgIGlmIChjYWNoZWRHbG9iYWxSZXNwb25zZSkge1xuICAgICAgICB0aGlzLiNpbml0ID0gY2FjaGVkR2xvYmFsUmVzcG9uc2U7XG4gICAgICAgIHRoaXNbZ2V0UmVzcG9uc2VDYWNoZV0oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jaW5pdCA9IGluaXQuI2luaXQ7XG4gICAgICAgIGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0LiNpbml0LmhlYWRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNpbml0ID0gaW5pdDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBib2R5Py5nZXRSZWFkZXIgIT09IFwidW5kZWZpbmVkXCIgfHwgYm9keSBpbnN0YW5jZW9mIEJsb2IgfHwgYm9keSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIDtcbiAgICAgIHRoaXNbY2FjaGVLZXldID0gW2luaXQ/LnN0YXR1cyB8fCAyMDAsIGJvZHksIGhlYWRlcnMgfHwgaW5pdD8uaGVhZGVyc107XG4gICAgfVxuICB9XG4gIGdldCBoZWFkZXJzKCkge1xuICAgIGNvbnN0IGNhY2hlID0gdGhpc1tjYWNoZUtleV07XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICBpZiAoIShjYWNoZVsyXSBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICAgIGNhY2hlWzJdID0gbmV3IEhlYWRlcnMoXG4gICAgICAgICAgY2FjaGVbMl0gfHwgeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIiB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FjaGVbMl07XG4gICAgfVxuICAgIHJldHVybiB0aGlzW2dldFJlc3BvbnNlQ2FjaGVdKCkuaGVhZGVycztcbiAgfVxuICBnZXQgc3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzW2NhY2hlS2V5XT8uWzBdID8/IHRoaXNbZ2V0UmVzcG9uc2VDYWNoZV0oKS5zdGF0dXM7XG4gIH1cbiAgZ2V0IG9rKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfVxufTtcbltcImJvZHlcIiwgXCJib2R5VXNlZFwiLCBcInJlZGlyZWN0ZWRcIiwgXCJzdGF0dXNUZXh0XCIsIFwidHJhaWxlcnNcIiwgXCJ0eXBlXCIsIFwidXJsXCJdLmZvckVhY2goKGspID0+IHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlc3BvbnNlMi5wcm90b3R5cGUsIGssIHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpc1tnZXRSZXNwb25zZUNhY2hlXSgpW2tdO1xuICAgIH1cbiAgfSk7XG59KTtcbltcImFycmF5QnVmZmVyXCIsIFwiYmxvYlwiLCBcImNsb25lXCIsIFwiZm9ybURhdGFcIiwgXCJqc29uXCIsIFwidGV4dFwiXS5mb3JFYWNoKChrKSA9PiB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNwb25zZTIucHJvdG90eXBlLCBrLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXNbZ2V0UmVzcG9uc2VDYWNoZV0oKVtrXSgpO1xuICAgIH1cbiAgfSk7XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNwb25zZTIucHJvdG90eXBlLCBTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIiksIHtcbiAgdmFsdWU6IGZ1bmN0aW9uKGRlcHRoLCBvcHRpb25zLCBpbnNwZWN0Rm4pIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICBvazogdGhpcy5vayxcbiAgICAgIG5hdGl2ZVJlc3BvbnNlOiB0aGlzW3Jlc3BvbnNlQ2FjaGVdXG4gICAgfTtcbiAgICByZXR1cm4gYFJlc3BvbnNlIChsaWdodHdlaWdodCkgJHtpbnNwZWN0Rm4ocHJvcHMsIHsgLi4ub3B0aW9ucywgZGVwdGg6IGRlcHRoID09IG51bGwgPyBudWxsIDogZGVwdGggLSAxIH0pfWA7XG4gIH1cbn0pO1xuT2JqZWN0LnNldFByb3RvdHlwZU9mKFJlc3BvbnNlMiwgR2xvYmFsUmVzcG9uc2UpO1xuT2JqZWN0LnNldFByb3RvdHlwZU9mKFJlc3BvbnNlMi5wcm90b3R5cGUsIEdsb2JhbFJlc3BvbnNlLnByb3RvdHlwZSk7XG5cbi8vIHNyYy91dGlscy50c1xuYXN5bmMgZnVuY3Rpb24gcmVhZFdpdGhvdXRCbG9ja2luZyhyZWFkUHJvbWlzZSkge1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyZWFkUHJvbWlzZSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBQcm9taXNlLnJlc29sdmUodm9pZCAwKSldKTtcbn1cbmZ1bmN0aW9uIHdyaXRlRnJvbVJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihyZWFkZXIsIHdyaXRhYmxlLCBjdXJyZW50UmVhZFByb21pc2UpIHtcbiAgY29uc3QgY2FuY2VsID0gKGVycm9yKSA9PiB7XG4gICAgcmVhZGVyLmNhbmNlbChlcnJvcikuY2F0Y2goKCkgPT4ge1xuICAgIH0pO1xuICB9O1xuICB3cml0YWJsZS5vbihcImNsb3NlXCIsIGNhbmNlbCk7XG4gIHdyaXRhYmxlLm9uKFwiZXJyb3JcIiwgY2FuY2VsKTtcbiAgKGN1cnJlbnRSZWFkUHJvbWlzZSA/PyByZWFkZXIucmVhZCgpKS50aGVuKGZsb3csIGhhbmRsZVN0cmVhbUVycm9yKTtcbiAgcmV0dXJuIHJlYWRlci5jbG9zZWQuZmluYWxseSgoKSA9PiB7XG4gICAgd3JpdGFibGUub2ZmKFwiY2xvc2VcIiwgY2FuY2VsKTtcbiAgICB3cml0YWJsZS5vZmYoXCJlcnJvclwiLCBjYW5jZWwpO1xuICB9KTtcbiAgZnVuY3Rpb24gaGFuZGxlU3RyZWFtRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHdyaXRhYmxlLmRlc3Ryb3koZXJyb3IpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBvbkRyYWluKCkge1xuICAgIHJlYWRlci5yZWFkKCkudGhlbihmbG93LCBoYW5kbGVTdHJlYW1FcnJvcik7XG4gIH1cbiAgZnVuY3Rpb24gZmxvdyh7IGRvbmUsIHZhbHVlIH0pIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgd3JpdGFibGUuZW5kKCk7XG4gICAgICB9IGVsc2UgaWYgKCF3cml0YWJsZS53cml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgd3JpdGFibGUub25jZShcImRyYWluXCIsIG9uRHJhaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihmbG93LCBoYW5kbGVTdHJlYW1FcnJvcik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiB3cml0ZUZyb21SZWFkYWJsZVN0cmVhbShzdHJlYW0sIHdyaXRhYmxlKSB7XG4gIGlmIChzdHJlYW0ubG9ja2VkKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZC5cIik7XG4gIH0gZWxzZSBpZiAod3JpdGFibGUuZGVzdHJveWVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiB3cml0ZUZyb21SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoc3RyZWFtLmdldFJlYWRlcigpLCB3cml0YWJsZSk7XG59XG52YXIgYnVpbGRPdXRnb2luZ0h0dHBIZWFkZXJzID0gKGhlYWRlcnMpID0+IHtcbiAgY29uc3QgcmVzID0ge307XG4gIGlmICghKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSkge1xuICAgIGhlYWRlcnMgPSBuZXcgSGVhZGVycyhoZWFkZXJzID8/IHZvaWQgMCk7XG4gIH1cbiAgY29uc3QgY29va2llcyA9IFtdO1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBoZWFkZXJzKSB7XG4gICAgaWYgKGsgPT09IFwic2V0LWNvb2tpZVwiKSB7XG4gICAgICBjb29raWVzLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trXSA9IHY7XG4gICAgfVxuICB9XG4gIGlmIChjb29raWVzLmxlbmd0aCA+IDApIHtcbiAgICByZXNbXCJzZXQtY29va2llXCJdID0gY29va2llcztcbiAgfVxuICByZXNbXCJjb250ZW50LXR5cGVcIl0gPz89IFwidGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiO1xuICByZXR1cm4gcmVzO1xufTtcblxuLy8gc3JjL3V0aWxzL3Jlc3BvbnNlL2NvbnN0YW50cy50c1xudmFyIFhfQUxSRUFEWV9TRU5UID0gXCJ4LWhvbm8tYWxyZWFkeS1zZW50XCI7XG5cbi8vIHNyYy9nbG9iYWxzLnRzXG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmlmICh0eXBlb2YgZ2xvYmFsLmNyeXB0byA9PT0gXCJ1bmRlZmluZWRcIikge1xuICBnbG9iYWwuY3J5cHRvID0gY3J5cHRvO1xufVxuXG4vLyBzcmMvbGlzdGVuZXIudHNcbnZhciBvdXRnb2luZ0VuZGVkID0gU3ltYm9sKFwib3V0Z29pbmdFbmRlZFwiKTtcbnZhciBpbmNvbWluZ0RyYWluaW5nID0gU3ltYm9sKFwiaW5jb21pbmdEcmFpbmluZ1wiKTtcbnZhciBEUkFJTl9USU1FT1VUX01TID0gNTAwO1xudmFyIE1BWF9EUkFJTl9CWVRFUyA9IDY0ICogMTAyNCAqIDEwMjQ7XG52YXIgZHJhaW5JbmNvbWluZyA9IChpbmNvbWluZykgPT4ge1xuICBjb25zdCBpbmNvbWluZ1dpdGhEcmFpblN0YXRlID0gaW5jb21pbmc7XG4gIGlmIChpbmNvbWluZy5kZXN0cm95ZWQgfHwgaW5jb21pbmdXaXRoRHJhaW5TdGF0ZVtpbmNvbWluZ0RyYWluaW5nXSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpbmNvbWluZ1dpdGhEcmFpblN0YXRlW2luY29taW5nRHJhaW5pbmddID0gdHJ1ZTtcbiAgaWYgKGluY29taW5nIGluc3RhbmNlb2YgSHR0cDJTZXJ2ZXJSZXF1ZXN0Mikge1xuICAgIHRyeSB7XG4gICAgICA7XG4gICAgICBpbmNvbWluZy5zdHJlYW0/LmNsb3NlPy4oaDJjb25zdGFudHMuTkdIVFRQMl9OT19FUlJPUik7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBsZXQgYnl0ZXNSZWFkID0gMDtcbiAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIGluY29taW5nLm9mZihcImRhdGFcIiwgb25EYXRhKTtcbiAgICBpbmNvbWluZy5vZmYoXCJlbmRcIiwgY2xlYW51cCk7XG4gICAgaW5jb21pbmcub2ZmKFwiZXJyb3JcIiwgY2xlYW51cCk7XG4gIH07XG4gIGNvbnN0IGZvcmNlQ2xvc2UgPSAoKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IHNvY2tldCA9IGluY29taW5nLnNvY2tldDtcbiAgICBpZiAoc29ja2V0ICYmICFzb2NrZXQuZGVzdHJveWVkKSB7XG4gICAgICBzb2NrZXQuZGVzdHJveVNvb24oKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dChmb3JjZUNsb3NlLCBEUkFJTl9USU1FT1VUX01TKTtcbiAgdGltZXIudW5yZWY/LigpO1xuICBjb25zdCBvbkRhdGEgPSAoY2h1bmspID0+IHtcbiAgICBieXRlc1JlYWQgKz0gY2h1bmsubGVuZ3RoO1xuICAgIGlmIChieXRlc1JlYWQgPiBNQVhfRFJBSU5fQllURVMpIHtcbiAgICAgIGZvcmNlQ2xvc2UoKTtcbiAgICB9XG4gIH07XG4gIGluY29taW5nLm9uKFwiZGF0YVwiLCBvbkRhdGEpO1xuICBpbmNvbWluZy5vbihcImVuZFwiLCBjbGVhbnVwKTtcbiAgaW5jb21pbmcub24oXCJlcnJvclwiLCBjbGVhbnVwKTtcbiAgaW5jb21pbmcucmVzdW1lKCk7XG59O1xudmFyIGhhbmRsZVJlcXVlc3RFcnJvciA9ICgpID0+IG5ldyBSZXNwb25zZShudWxsLCB7XG4gIHN0YXR1czogNDAwXG59KTtcbnZhciBoYW5kbGVGZXRjaEVycm9yID0gKGUpID0+IG5ldyBSZXNwb25zZShudWxsLCB7XG4gIHN0YXR1czogZSBpbnN0YW5jZW9mIEVycm9yICYmIChlLm5hbWUgPT09IFwiVGltZW91dEVycm9yXCIgfHwgZS5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIlRpbWVvdXRFcnJvclwiKSA/IDUwNCA6IDUwMFxufSk7XG52YXIgaGFuZGxlUmVzcG9uc2VFcnJvciA9IChlLCBvdXRnb2luZykgPT4ge1xuICBjb25zdCBlcnIgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFwidW5rbm93biBlcnJvclwiLCB7IGNhdXNlOiBlIH0pO1xuICBpZiAoZXJyLmNvZGUgPT09IFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIikge1xuICAgIGNvbnNvbGUuaW5mbyhcIlRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0LlwiKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIGlmICghb3V0Z29pbmcuaGVhZGVyc1NlbnQpIHtcbiAgICAgIG91dGdvaW5nLndyaXRlSGVhZCg1MDAsIHsgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L3BsYWluXCIgfSk7XG4gICAgfVxuICAgIG91dGdvaW5nLmVuZChgRXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgb3V0Z29pbmcuZGVzdHJveShlcnIpO1xuICB9XG59O1xudmFyIGZsdXNoSGVhZGVycyA9IChvdXRnb2luZykgPT4ge1xuICBpZiAoXCJmbHVzaEhlYWRlcnNcIiBpbiBvdXRnb2luZyAmJiBvdXRnb2luZy53cml0YWJsZSkge1xuICAgIG91dGdvaW5nLmZsdXNoSGVhZGVycygpO1xuICB9XG59O1xudmFyIHJlc3BvbnNlVmlhQ2FjaGUgPSBhc3luYyAocmVzLCBvdXRnb2luZykgPT4ge1xuICBsZXQgW3N0YXR1cywgYm9keSwgaGVhZGVyXSA9IHJlc1tjYWNoZUtleV07XG4gIGxldCBoYXNDb250ZW50TGVuZ3RoID0gZmFsc2U7XG4gIGlmICghaGVhZGVyKSB7XG4gICAgaGVhZGVyID0geyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIiB9O1xuICB9IGVsc2UgaWYgKGhlYWRlciBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoYXNDb250ZW50TGVuZ3RoID0gaGVhZGVyLmhhcyhcImNvbnRlbnQtbGVuZ3RoXCIpO1xuICAgIGhlYWRlciA9IGJ1aWxkT3V0Z29pbmdIdHRwSGVhZGVycyhoZWFkZXIpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVyKSkge1xuICAgIGNvbnN0IGhlYWRlck9iaiA9IG5ldyBIZWFkZXJzKGhlYWRlcik7XG4gICAgaGFzQ29udGVudExlbmd0aCA9IGhlYWRlck9iai5oYXMoXCJjb250ZW50LWxlbmd0aFwiKTtcbiAgICBoZWFkZXIgPSBidWlsZE91dGdvaW5nSHR0cEhlYWRlcnMoaGVhZGVyT2JqKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBoZWFkZXIpIHtcbiAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxNCAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gXCJjb250ZW50LWxlbmd0aFwiKSB7XG4gICAgICAgIGhhc0NvbnRlbnRMZW5ndGggPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNDb250ZW50TGVuZ3RoKSB7XG4gICAgaWYgKHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoZWFkZXJbXCJDb250ZW50LUxlbmd0aFwiXSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGJvZHkpO1xuICAgIH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIGhlYWRlcltcIkNvbnRlbnQtTGVuZ3RoXCJdID0gYm9keS5ieXRlTGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgIGhlYWRlcltcIkNvbnRlbnQtTGVuZ3RoXCJdID0gYm9keS5zaXplO1xuICAgIH1cbiAgfVxuICBvdXRnb2luZy53cml0ZUhlYWQoc3RhdHVzLCBoZWFkZXIpO1xuICBpZiAodHlwZW9mIGJvZHkgPT09IFwic3RyaW5nXCIgfHwgYm9keSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICBvdXRnb2luZy5lbmQoYm9keSk7XG4gIH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICBvdXRnb2luZy5lbmQobmV3IFVpbnQ4QXJyYXkoYXdhaXQgYm9keS5hcnJheUJ1ZmZlcigpKSk7XG4gIH0gZWxzZSB7XG4gICAgZmx1c2hIZWFkZXJzKG91dGdvaW5nKTtcbiAgICBhd2FpdCB3cml0ZUZyb21SZWFkYWJsZVN0cmVhbShib2R5LCBvdXRnb2luZyk/LmNhdGNoKFxuICAgICAgKGUpID0+IGhhbmRsZVJlc3BvbnNlRXJyb3IoZSwgb3V0Z29pbmcpXG4gICAgKTtcbiAgfVxuICA7XG4gIG91dGdvaW5nW291dGdvaW5nRW5kZWRdPy4oKTtcbn07XG52YXIgaXNQcm9taXNlID0gKHJlcykgPT4gdHlwZW9mIHJlcy50aGVuID09PSBcImZ1bmN0aW9uXCI7XG52YXIgcmVzcG9uc2VWaWFSZXNwb25zZU9iamVjdCA9IGFzeW5jIChyZXMsIG91dGdvaW5nLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKGlzUHJvbWlzZShyZXMpKSB7XG4gICAgaWYgKG9wdGlvbnMuZXJyb3JIYW5kbGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBhd2FpdCByZXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgZXJyUmVzID0gYXdhaXQgb3B0aW9ucy5lcnJvckhhbmRsZXIoZXJyKTtcbiAgICAgICAgaWYgKCFlcnJSZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gZXJyUmVzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBhd2FpdCByZXMuY2F0Y2goaGFuZGxlRmV0Y2hFcnJvcik7XG4gICAgfVxuICB9XG4gIGlmIChjYWNoZUtleSBpbiByZXMpIHtcbiAgICByZXR1cm4gcmVzcG9uc2VWaWFDYWNoZShyZXMsIG91dGdvaW5nKTtcbiAgfVxuICBjb25zdCByZXNIZWFkZXJSZWNvcmQgPSBidWlsZE91dGdvaW5nSHR0cEhlYWRlcnMocmVzLmhlYWRlcnMpO1xuICBpZiAocmVzLmJvZHkpIHtcbiAgICBjb25zdCByZWFkZXIgPSByZXMuYm9keS5nZXRSZWFkZXIoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgIGxldCBjdXJyZW50UmVhZFByb21pc2UgPSB2b2lkIDA7XG4gICAgaWYgKHJlc0hlYWRlclJlY29yZFtcInRyYW5zZmVyLWVuY29kaW5nXCJdICE9PSBcImNodW5rZWRcIikge1xuICAgICAgbGV0IG1heFJlYWRDb3VudCA9IDI7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFJlYWRDb3VudDsgaSsrKSB7XG4gICAgICAgIGN1cnJlbnRSZWFkUHJvbWlzZSB8fD0gcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBhd2FpdCByZWFkV2l0aG91dEJsb2NraW5nKGN1cnJlbnRSZWFkUHJvbWlzZSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFjaHVuaykge1xuICAgICAgICAgIGlmIChpID09PSAxKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlKSk7XG4gICAgICAgICAgICBtYXhSZWFkQ291bnQgPSAzO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRSZWFkUHJvbWlzZSA9IHZvaWQgMDtcbiAgICAgICAgaWYgKGNodW5rLnZhbHVlKSB7XG4gICAgICAgICAgdmFsdWVzLnB1c2goY2h1bmsudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaHVuay5kb25lKSB7XG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkb25lICYmICEoXCJjb250ZW50LWxlbmd0aFwiIGluIHJlc0hlYWRlclJlY29yZCkpIHtcbiAgICAgICAgcmVzSGVhZGVyUmVjb3JkW1wiY29udGVudC1sZW5ndGhcIl0gPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbHVlKSA9PiBhY2MgKyB2YWx1ZS5sZW5ndGgsIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXRnb2luZy53cml0ZUhlYWQocmVzLnN0YXR1cywgcmVzSGVhZGVyUmVjb3JkKTtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIDtcbiAgICAgIG91dGdvaW5nLndyaXRlKHZhbHVlKTtcbiAgICB9KTtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgb3V0Z29pbmcuZW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZsdXNoSGVhZGVycyhvdXRnb2luZyk7XG4gICAgICB9XG4gICAgICBhd2FpdCB3cml0ZUZyb21SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocmVhZGVyLCBvdXRnb2luZywgY3VycmVudFJlYWRQcm9taXNlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocmVzSGVhZGVyUmVjb3JkW1hfQUxSRUFEWV9TRU5UXSkge1xuICB9IGVsc2Uge1xuICAgIG91dGdvaW5nLndyaXRlSGVhZChyZXMuc3RhdHVzLCByZXNIZWFkZXJSZWNvcmQpO1xuICAgIG91dGdvaW5nLmVuZCgpO1xuICB9XG4gIDtcbiAgb3V0Z29pbmdbb3V0Z29pbmdFbmRlZF0/LigpO1xufTtcbnZhciBnZXRSZXF1ZXN0TGlzdGVuZXIgPSAoZmV0Y2hDYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IGF1dG9DbGVhbnVwSW5jb21pbmcgPSBvcHRpb25zLmF1dG9DbGVhbnVwSW5jb21pbmcgPz8gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMub3ZlcnJpZGVHbG9iYWxPYmplY3RzICE9PSBmYWxzZSAmJiBnbG9iYWwuUmVxdWVzdCAhPT0gUmVxdWVzdCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsIFwiUmVxdWVzdFwiLCB7XG4gICAgICB2YWx1ZTogUmVxdWVzdFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsIFwiUmVzcG9uc2VcIiwge1xuICAgICAgdmFsdWU6IFJlc3BvbnNlMlxuICAgIH0pO1xuICB9XG4gIHJldHVybiBhc3luYyAoaW5jb21pbmcsIG91dGdvaW5nKSA9PiB7XG4gICAgbGV0IHJlcywgcmVxO1xuICAgIHRyeSB7XG4gICAgICByZXEgPSBuZXdSZXF1ZXN0KGluY29taW5nLCBvcHRpb25zLmhvc3RuYW1lKTtcbiAgICAgIGxldCBpbmNvbWluZ0VuZGVkID0gIWF1dG9DbGVhbnVwSW5jb21pbmcgfHwgaW5jb21pbmcubWV0aG9kID09PSBcIkdFVFwiIHx8IGluY29taW5nLm1ldGhvZCA9PT0gXCJIRUFEXCI7XG4gICAgICBpZiAoIWluY29taW5nRW5kZWQpIHtcbiAgICAgICAgO1xuICAgICAgICBpbmNvbWluZ1t3cmFwQm9keVN0cmVhbV0gPSB0cnVlO1xuICAgICAgICBpbmNvbWluZy5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgaW5jb21pbmdFbmRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5jb21pbmcgaW5zdGFuY2VvZiBIdHRwMlNlcnZlclJlcXVlc3QyKSB7XG4gICAgICAgICAgO1xuICAgICAgICAgIG91dGdvaW5nW291dGdvaW5nRW5kZWRdID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpbmNvbWluZ0VuZGVkKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaW5jb21pbmdFbmRlZCkge1xuICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRyYWluSW5jb21pbmcoaW5jb21pbmcpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIG91dGdvaW5nLm9uKFwiZmluaXNoXCIsICgpID0+IHtcbiAgICAgICAgICBpZiAoIWluY29taW5nRW5kZWQpIHtcbiAgICAgICAgICAgIGRyYWluSW5jb21pbmcoaW5jb21pbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBvdXRnb2luZy5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gcmVxW2Fib3J0Q29udHJvbGxlcktleV07XG4gICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgICAgICBpZiAoaW5jb21pbmcuZXJyb3JlZCkge1xuICAgICAgICAgICAgcmVxW2Fib3J0Q29udHJvbGxlcktleV0uYWJvcnQoaW5jb21pbmcuZXJyb3JlZC50b1N0cmluZygpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFvdXRnb2luZy53cml0YWJsZUZpbmlzaGVkKSB7XG4gICAgICAgICAgICByZXFbYWJvcnRDb250cm9sbGVyS2V5XS5hYm9ydChcIkNsaWVudCBjb25uZWN0aW9uIHByZW1hdHVyZWx5IGNsb3NlZC5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaW5jb21pbmdFbmRlZCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpbmNvbWluZ0VuZGVkKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRyYWluSW5jb21pbmcoaW5jb21pbmcpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXMgPSBmZXRjaENhbGxiYWNrKHJlcSwgeyBpbmNvbWluZywgb3V0Z29pbmcgfSk7XG4gICAgICBpZiAoY2FjaGVLZXkgaW4gcmVzKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVZpYUNhY2hlKHJlcywgb3V0Z29pbmcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghcmVzKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmVycm9ySGFuZGxlcikge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IG9wdGlvbnMuZXJyb3JIYW5kbGVyKHJlcSA/IGUgOiB0b1JlcXVlc3RFcnJvcihlKSk7XG4gICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXJlcSkge1xuICAgICAgICAgIHJlcyA9IGhhbmRsZVJlcXVlc3RFcnJvcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcyA9IGhhbmRsZUZldGNoRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVSZXNwb25zZUVycm9yKGUsIG91dGdvaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZVZpYVJlc3BvbnNlT2JqZWN0KHJlcywgb3V0Z29pbmcsIG9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBoYW5kbGVSZXNwb25zZUVycm9yKGUsIG91dGdvaW5nKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBzcmMvc2VydmVyLnRzXG52YXIgY3JlYXRlQWRhcHRvclNlcnZlciA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IGZldGNoQ2FsbGJhY2sgPSBvcHRpb25zLmZldGNoO1xuICBjb25zdCByZXF1ZXN0TGlzdGVuZXIgPSBnZXRSZXF1ZXN0TGlzdGVuZXIoZmV0Y2hDYWxsYmFjaywge1xuICAgIGhvc3RuYW1lOiBvcHRpb25zLmhvc3RuYW1lLFxuICAgIG92ZXJyaWRlR2xvYmFsT2JqZWN0czogb3B0aW9ucy5vdmVycmlkZUdsb2JhbE9iamVjdHMsXG4gICAgYXV0b0NsZWFudXBJbmNvbWluZzogb3B0aW9ucy5hdXRvQ2xlYW51cEluY29taW5nXG4gIH0pO1xuICBjb25zdCBjcmVhdGVTZXJ2ZXIgPSBvcHRpb25zLmNyZWF0ZVNlcnZlciB8fCBjcmVhdGVTZXJ2ZXJIVFRQO1xuICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIob3B0aW9ucy5zZXJ2ZXJPcHRpb25zIHx8IHt9LCByZXF1ZXN0TGlzdGVuZXIpO1xuICByZXR1cm4gc2VydmVyO1xufTtcbnZhciBzZXJ2ZSA9IChvcHRpb25zLCBsaXN0ZW5pbmdMaXN0ZW5lcikgPT4ge1xuICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVBZGFwdG9yU2VydmVyKG9wdGlvbnMpO1xuICBzZXJ2ZXIubGlzdGVuKG9wdGlvbnM/LnBvcnQgPz8gM2UzLCBvcHRpb25zLmhvc3RuYW1lLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVySW5mbyA9IHNlcnZlci5hZGRyZXNzKCk7XG4gICAgbGlzdGVuaW5nTGlzdGVuZXIgJiYgbGlzdGVuaW5nTGlzdGVuZXIoc2VydmVySW5mbyk7XG4gIH0pO1xuICByZXR1cm4gc2VydmVyO1xufTtcbmV4cG9ydCB7XG4gIFJlcXVlc3RFcnJvcixcbiAgY3JlYXRlQWRhcHRvclNlcnZlcixcbiAgZ2V0UmVxdWVzdExpc3RlbmVyLFxuICBzZXJ2ZVxufTtcbiIsIG51bGwsIG51bGwsICJpbXBvcnQgdHlwZSB7IFN0YWdlIH0gZnJvbSBcIi4uL3N0YXRlL2xhYmVscy5qc1wiO1xuXG5leHBvcnQgdHlwZSBBdWRpdEV2ZW50ID1cbiAgfCB7XG4gICAgICB0eXBlOiBcInN0YWdlX3Jlc29sdmVkXCI7XG4gICAgICBzdGFnZTogU3RhZ2UgfCBcIm5vbmVcIjtcbiAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgaXNzdWVOdW1iZXI/OiBudW1iZXI7XG4gICAgICAvLyBFdmVudCBjb250ZXh0IGNhcHR1cmVkIGF0IHJvdXRpbmcgdGltZS4gTGV0cyBhIHNpbmdsZSBsb2cgbGluZSBhbnN3ZXJcbiAgICAgIC8vIFwid2hpY2ggd2ViaG9vayBkZWxpdmVyeSBkaWQgdGhlIHJvdXRlciBzZWUsIGFuZCB3aGljaCBsYWJlbHMgZGlkIGl0XG4gICAgICAvLyByZXNvbHZlIGFnYWluc3RcIiB3aXRob3V0IHRyYXdsaW5nIHRoZSB3b3JrZmxvdyBldmVudCBwYXlsb2FkLlxuICAgICAgZXZlbnROYW1lPzogc3RyaW5nO1xuICAgICAgYWN0aW9uPzogc3RyaW5nO1xuICAgICAgbGFiZWxOYW1lPzogc3RyaW5nO1xuICAgICAgcGF5bG9hZExhYmVscz86IHN0cmluZ1tdO1xuICAgICAgbGl2ZUxhYmVscz86IHN0cmluZ1tdO1xuICAgIH1cbiAgfCB7IHR5cGU6IFwicHJlY2hlY2tfZmFpbGVkXCI7IHN0YWdlOiBTdGFnZTsgcmVhc29uOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJzdGFnZV9zdGFydGVkXCI7IHN0YWdlOiBTdGFnZTsgbW9kZWw6IHN0cmluZzsgcnVuSWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcImFnZW50X3Rvb2xfY2FsbFwiOyBzdGFnZTogU3RhZ2U7IHRvb2w6IHN0cmluZzsgYXJnc1ByZXZpZXc6IHN0cmluZyB9XG4gIHwge1xuICAgICAgdHlwZTogXCJzdGFnZV9kZWNpZGVkXCI7XG4gICAgICBzdGFnZTogU3RhZ2U7XG4gICAgICBkZWNpc2lvbjogdW5rbm93bjtcbiAgICAgIHRva2Vuc1VzZWQ6IG51bWJlcjtcbiAgICAgIGNvc3RVc2Q6IG51bWJlcjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCI7XG4gICAgICBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICAgICAgYWRkOiBzdHJpbmdbXTtcbiAgICAgIHJlbW92ZTogc3RyaW5nW107XG4gICAgfVxuICB8IHtcbiAgICAgIC8vIExvdy1sZXZlbCBtdXRhdGlvbiByZWNvcmQgZW1pdHRlZCBieSB0aGUgR2l0SHViIGFkYXB0ZXIgZm9yIGV2ZXJ5XG4gICAgICAvLyBzaW5nbGUgYWRkTGFiZWwgLyByZW1vdmVMYWJlbCBBUEkgY2FsbC4gbGFiZWxfYXBwbGllZCAoYWJvdmUpIGNhcnJpZXNcbiAgICAgIC8vIHRoZSBvcmNoZXN0cmF0b3IncyBJTlRFTlQgZm9yIGEgdHJhbnNpdGlvbjsgbGFiZWxfbXV0YXRlZCBpcyB0aGVcbiAgICAgIC8vIGdyb3VuZC10cnV0aCBBUEkgd3JpdGUuIEJvdGggYXJlIGVtaXR0ZWQ6IHRoZSBoaWdoLWxldmVsIGV2ZW50IHRlbGxzXG4gICAgICAvLyB5b3Ugd2hhdCB0aGUgc3RhZ2Ugd2FudGVkOyB0aGUgbG93LWxldmVsIGV2ZW50cyB0ZWxsIHlvdSB3aGF0XG4gICAgICAvLyBhY3R1YWxseSBoaXQgR2l0SHViIChpbmNsdWRpbmcgbXV0ZXggYWNxdWlyZS9yZWxlYXNlIGFuZCBhbnkgcmV0cmllcykuXG4gICAgICB0eXBlOiBcImxhYmVsX211dGF0ZWRcIjtcbiAgICAgIGlzc3VlTnVtYmVyOiBudW1iZXI7XG4gICAgICBvcDogXCJhZGRcIiB8IFwicmVtb3ZlXCI7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1cbiAgfCB7IHR5cGU6IFwicHJfb3BlbmVkXCI7IHN0YWdlOiBTdGFnZTsgcHJOdW1iZXI6IG51bWJlciB9XG4gIHwge1xuICAgICAgdHlwZTogXCJyZXZpZXdfcG9zdGVkXCI7XG4gICAgICBwck51bWJlcjogbnVtYmVyO1xuICAgICAgdmVyZGljdDogXCJhcHByb3ZlXCIgfCBcInJlcXVlc3RfY2hhbmdlc1wiIHwgXCJlcnJvcmVkXCI7XG4gICAgICBpdGVyYXRpb246IG51bWJlcjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJzdGFnZV9mYWlsZWRcIjtcbiAgICAgIHN0YWdlOiBTdGFnZTtcbiAgICAgIGVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsga2luZDogc3RyaW5nIH07XG4gICAgfVxuICB8IHsgdHlwZTogXCJidWRnZXRfZXhjZWVkZWRcIjsgc3RhZ2U6IFN0YWdlOyBzcGVudFVzZDogbnVtYmVyOyBjYXBVc2Q6IG51bWJlciB9XG4gIHwgeyB0eXBlOiBcImxhYmVsc19ib290c3RyYXBwZWRcIjsgY3JlYXRlZDogc3RyaW5nW10gfTtcblxuZXhwb3J0IHR5cGUgQXVkaXRFbWl0dGVyID0gKGV2ZW50OiBBdWRpdEV2ZW50KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUF1ZGl0RW1pdHRlckFyZ3Mge1xuICBydW5JZDogc3RyaW5nO1xuICBzaW5rPzogKGxpbmU6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUF1ZGl0RW1pdHRlcihhcmdzOiBDcmVhdGVBdWRpdEVtaXR0ZXJBcmdzKTogQXVkaXRFbWl0dGVyIHtcbiAgY29uc3Qgc2luayA9IGFyZ3Muc2luayA/PyAoKGxpbmUpID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2xpbmV9XFxuYCkpO1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBydW5JZDogYXJncy5ydW5JZCxcbiAgICAgIC4uLmV2ZW50LFxuICAgIH07XG4gICAgc2luayhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gIH07XG59XG5cbi8vIENvbWJpbmUgbXVsdGlwbGUgZW1pdHRlcnMgaW50byBvbmUgLS0gdXNlZnVsIGZvciBmYW5uaW5nIGEgc2luZ2xlIHN0cmVhbSBvdXRcbi8vIHRvIEpTT05MIHN0ZG91dCBhbmQgYSBzdGVwLXN1bW1hcnkgbWFya2Rvd24gbWlycm9yLlxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVFbWl0dGVycyguLi5lbWl0dGVyczogQXVkaXRFbWl0dGVyW10pOiBBdWRpdEVtaXR0ZXIge1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgZm9yIChjb25zdCBlIG9mIGVtaXR0ZXJzKSBlKGV2ZW50KTtcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBhcHBlbmRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgdHlwZSB7IEF1ZGl0RW1pdHRlciwgQXVkaXRFdmVudCB9IGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuXG5jb25zdCBNSVJST1JFRCA9IG5ldyBTZXQ8QXVkaXRFdmVudFtcInR5cGVcIl0+KFtcbiAgXCJzdGFnZV9zdGFydGVkXCIsXG4gIFwic3RhZ2VfZGVjaWRlZFwiLFxuICBcInN0YWdlX2ZhaWxlZFwiLFxuICBcImxhYmVsX2FwcGxpZWRcIixcbiAgXCJwcl9vcGVuZWRcIixcbiAgXCJyZXZpZXdfcG9zdGVkXCIsXG4gIFwiYnVkZ2V0X2V4Y2VlZGVkXCIsXG5dKTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVNaXJyb3JBcmdzIHtcbiAgcGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0ZXBTdW1tYXJ5TWlycm9yKFxuICBhcmdzOiBDcmVhdGVNaXJyb3JBcmdzID0ge30sXG4pOiBBdWRpdEVtaXR0ZXIge1xuICBjb25zdCBwYXRoID0gYXJncy5wYXRoID8/IHByb2Nlc3MuZW52LkdJVEhVQl9TVEVQX1NVTU1BUlk7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBpZiAoIXBhdGgpIHJldHVybjtcbiAgICBpZiAoIU1JUlJPUkVELmhhcyhldmVudC50eXBlKSkgcmV0dXJuO1xuICAgIGFwcGVuZEZpbGVTeW5jKHBhdGgsIGAke3JlbmRlclJvdyhldmVudCl9XFxuYCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclJvdyhlOiBBdWRpdEV2ZW50KTogc3RyaW5nIHtcbiAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICBjYXNlIFwic3RhZ2Vfc3RhcnRlZFwiOlxuICAgICAgcmV0dXJuIGAtICoqJHtlLnN0YWdlfSoqIHN0YXJ0ZWQgd2l0aCBtb2RlbCBcXGAke2UubW9kZWx9XFxgYDtcbiAgICBjYXNlIFwic3RhZ2VfZGVjaWRlZFwiOlxuICAgICAgcmV0dXJuIGAtICoqJHtlLnN0YWdlfSoqIGRlY2lkZWQgKHRva2VuczogJHtlLnRva2Vuc1VzZWR9LCBjb3N0OiAkJHtlLmNvc3RVc2QudG9GaXhlZCg0KX0pYDtcbiAgICBjYXNlIFwic3RhZ2VfZmFpbGVkXCI6XG4gICAgICByZXR1cm4gYC0gKioke2Uuc3RhZ2V9KiogZmFpbGVkOiBcXGAke2UuZXJyb3Iua2luZH1cXGA6ICR7ZS5lcnJvci5tZXNzYWdlfWA7XG4gICAgY2FzZSBcImxhYmVsX2FwcGxpZWRcIjpcbiAgICAgIHJldHVybiBgLSBsYWJlbHMgb24gIyR7ZS5pc3N1ZU51bWJlcn06ICtbJHtlLmFkZC5qb2luKFwiLCBcIil9XSAtWyR7ZS5yZW1vdmUuam9pbihcIiwgXCIpfV1gO1xuICAgIGNhc2UgXCJwcl9vcGVuZWRcIjpcbiAgICAgIHJldHVybiBgLSBQUiBvcGVuZWQgZm9yICoqJHtlLnN0YWdlfSoqIHN0YWdlOiAjJHtlLnByTnVtYmVyfWA7XG4gICAgY2FzZSBcInJldmlld19wb3N0ZWRcIjpcbiAgICAgIHJldHVybiBgLSByZXZpZXcgIyR7ZS5pdGVyYXRpb259IG9uIFBSICMke2UucHJOdW1iZXJ9OiAqKiR7ZS52ZXJkaWN0fSoqYDtcbiAgICBjYXNlIFwiYnVkZ2V0X2V4Y2VlZGVkXCI6XG4gICAgICByZXR1cm4gYC0gYnVkZ2V0IGV4Y2VlZGVkIGluICoqJHtlLnN0YWdlfSoqOiAkJHtlLnNwZW50VXNkLnRvRml4ZWQoMil9IC8gJCR7ZS5jYXBVc2QudG9GaXhlZCgyKX1gO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYC0gJHsoZSBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlfWA7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuL2lucHV0cy5qc1wiO1xuXG4vLyBBbGxvd2xpc3Qgb2YgaG9zdCBlbnYgdmFycyB0byBmb3J3YXJkIHRvIHRoZSBDbGF1ZGUgQWdlbnQgU0RLLiBUaGUgU0RLIHVzZXNcbi8vIHRoaXMgZW52IHdoZW4gc2hlbGxpbmcgb3V0IHRvIHRvb2xzIChnaXQsIGJhc2gpIGR1cmluZyB0aGUgaW1wbGVtZW50IHN0YWdlO1xuLy8gb3RoZXIgc3RhZ2VzIHJ1biB0aGVpciB0b29scyBpbi1wcm9jZXNzIHZpYSB0aGUgc2hvcGZsb29yIE1DUCBzZXJ2ZXIgYW5kXG4vLyB0b3VjaCB0aGUgaG9zdCBlbnYgbWluaW1hbGx5LiBTcHJlYWRpbmcgdGhlIGZ1bGwgR2l0SHViIEFjdGlvbnMgZW52aXJvbm1lbnRcbi8vIHdvdWxkIGxlYWsgSU5QVVRfKiBzZWNyZXRzLCBBQ1RJT05TX1JVTlRJTUVfVE9LRU4sIGFuZCBHSVRIVUJfVE9LRU4gaW50b1xuLy8gZXZlcnkgc3VicHJvY2VzcyB0aGUgU0RLIHNwYXducyBcdTIwMTQga2VlcCB0aGlzIGxpc3QgdGlnaHQgYW5kIGdyb3cgaXQgb25cbi8vIGRlbWFuZCB3aGVuIGEgc3RhZ2UgYWN0dWFsbHkgbmVlZHMgc29tZXRoaW5nLlxuZXhwb3J0IGNvbnN0IFBBU1NUSFJPVUdIX0tFWVMgPSBbXG4gIFwiUEFUSFwiLFxuICBcIkhPTUVcIixcbiAgXCJCQVNIXCIsXG4gIFwiVE1QRElSXCIsXG4gIFwiVVNFUlwiLFxuICBcIlRFUk1cIixcbiAgXCJFRElUT1JcIixcbiAgXCJMQU5HXCIsXG4gIFwiUEFHRVJcIixcbiAgXCJMRVNTXCIsXG4gIFwiTUFOUEFUSFwiLFxuXSBhcyBjb25zdDtcblxuLy8gQ29weSB0aGUgYWxsb3dsaXN0ZWQgaG9zdCB2YXJzICh0aG9zZSB0aGF0IGFyZSBzZXQgYW5kIG5vbi1lbXB0eSkgaW50byBhXG4vLyBmcmVzaCByZWNvcmQuIFNoYXJlZCBieSBib3RoIGFnZW50IGFkYXB0ZXJzJyBlbnYgYnVpbGRlcnMgc28gdGhlIGFsbG93bGlzdFxuLy8gaGFzIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBcdTIwMTQgdGhlIENsYXVkZSBhbmQgQ29kZXggc3VicHJvY2VzcyBlbnZpcm9ubWVudHNcbi8vIG11c3Qgbm90IHNpbGVudGx5IGRpdmVyZ2Ugd2hlbiBhIGtleSBpcyBhZGRlZCBvciByZW1vdmVkLlxuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RQYXNzdGhyb3VnaEVudihcbiAgaG9zdEVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSBwcm9jZXNzLmVudixcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBrIG9mIFBBU1NUSFJPVUdIX0tFWVMpIHtcbiAgICBjb25zdCB2ID0gaG9zdEVudltrXTtcbiAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIgJiYgdi5sZW5ndGggPiAwKSBlbnZba10gPSB2O1xuICB9XG4gIHJldHVybiBlbnY7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRBZ2VudEVudk9wdGlvbnMge1xuICBhbnRocm9waWNBcGlLZXk6IHN0cmluZztcbiAgY2xhdWRlQ29kZU9BdXRoVG9rZW46IHN0cmluZztcbiAgaG9zdEVudj86IE5vZGVKUy5Qcm9jZXNzRW52O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBZ2VudEVudihcbiAgb3B0czogQnVpbGRBZ2VudEVudk9wdGlvbnMsXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZW52ID0gY29sbGVjdFBhc3N0aHJvdWdoRW52KG9wdHMuaG9zdEVudiA/PyBwcm9jZXNzLmVudik7XG4gIC8vIE9BdXRoIHRva2VuIHdpbnMgd2hlbiBib3RoIGFyZSBzZXQuIFNldHRpbmcgYm90aCBjb25mdXNlcyB0aGUgU0RLJ3MgYXV0aFxuICAvLyByZXNvbHV0aW9uOyB0aGUgWm9kIHJlZmluZW1lbnQgdXBzdHJlYW0gb25seSBlbmZvcmNlcyBcImF0IGxlYXN0IG9uZS5cIlxuICBpZiAob3B0cy5jbGF1ZGVDb2RlT0F1dGhUb2tlbikge1xuICAgIGVudi5DTEFVREVfQ09ERV9PQVVUSF9UT0tFTiA9IG9wdHMuY2xhdWRlQ29kZU9BdXRoVG9rZW47XG4gIH0gZWxzZSBpZiAob3B0cy5hbnRocm9waWNBcGlLZXkpIHtcbiAgICBlbnYuQU5USFJPUElDX0FQSV9LRVkgPSBvcHRzLmFudGhyb3BpY0FwaUtleTtcbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBZ2VudEVudkZyb21Db25maWcoXG4gIGNvbmZpZzogQ29uZmlnLFxuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiBidWlsZEFnZW50RW52KHtcbiAgICBhbnRocm9waWNBcGlLZXk6IGNvbmZpZy5hbnRocm9waWNBcGlLZXksXG4gICAgY2xhdWRlQ29kZU9BdXRoVG9rZW46IGNvbmZpZy5jbGF1ZGVDb2RlT0F1dGhUb2tlbixcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgbWtkdGVtcFN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IENvZGV4QWRhcHRlck9wdGlvbnMgfSBmcm9tIFwiLi4vYWdlbnRzL2NvZGV4LmpzXCI7XG5pbXBvcnQgeyBjb2xsZWN0UGFzc3Rocm91Z2hFbnYgfSBmcm9tIFwiLi9hZ2VudC1lbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSBcIi4vaW5wdXRzLmpzXCI7XG5cbi8vIFJlc29sdmVzIENvZGV4IGF1dGggKyBlbnYgKyBzYW5kYm94IGRlZmF1bHRzIG9uY2UgYXQgc3RhcnR1cCwgbWlycm9yaW5nXG4vLyBidWlsZEFnZW50RW52RnJvbUNvbmZpZyBmb3IgdGhlIENsYXVkZSBhZGFwdGVyLiBBdXRoIHJlc29sdXRpb24gb3JkZXJcbi8vIChzcmMvYWdlbnRzL2NvZGV4LnRzIGRlc2lnbiBzZWN0aW9uIDYpOlxuLy8gICAxLiBvcGVuYWlfYXBpX2tleSAgLT4gYXBpS2V5IChmb3J3YXJkZWQgYXMgQ09ERVhfQVBJX0tFWSBieSB0aGUgU0RLKS5cbi8vICAgMi4gY29kZXhfYXV0aF9qc29uIC0+IHZlcmJhdGltIGNvbnRlbnRzIHdyaXR0ZW4gdG8gYSBydW4tc2NvcGVkIHRlbXBcbi8vICAgICAgQ09ERVhfSE9NRS9hdXRoLmpzb24gKGNobW9kIDYwMCksIGNsaV9hdXRoX2NyZWRlbnRpYWxzX3N0b3JlPVwiZmlsZVwiLlxuLy8gICAgICBTdGF0ZWxlc3M6IHJlc2VlZGVkIGVhY2ggcnVuLCBhbnkgaW4tcnVuIHJlZnJlc2ggZGlzY2FyZGVkLlxuLy8gICAzLiBuZWl0aGVyICAgICAgICAgLT4gcmV0dXJuIG9wdGlvbnMgd2l0aG91dCBhdXRoOyB0aGUgYWRhcHRlciByYWlzZXMgYVxuLy8gICAgICBjbGVhciBlcnJvciBvbiBmaXJzdCBydW5TdGFnZSAoY29uc3RydWN0aW9uIG11c3Qgbm90IHRocm93IFx1MjAxNCBzZWUgYmVsb3cpLlxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29kZXhPcHRpb25zKGNvbmZpZzogQ29uZmlnKTogQ29kZXhBZGFwdGVyT3B0aW9ucyB7XG4gIGNvbnN0IGVudiA9IGNvbGxlY3RQYXNzdGhyb3VnaEVudigpO1xuICBjb25zdCBjb2RleENvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgbGV0IGFwaUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChjb25maWcub3BlbmFpQXBpS2V5KSB7XG4gICAgYXBpS2V5ID0gY29uZmlnLm9wZW5haUFwaUtleTtcbiAgfSBlbHNlIGlmIChjb25maWcuY29kZXhBdXRoSnNvbikge1xuICAgIGNvbnN0IGNvZGV4SG9tZSA9IG1rZHRlbXBTeW5jKGpvaW4odG1wZGlyKCksIFwiY29kZXgtaG9tZS1cIikpO1xuICAgIGNvbnN0IGF1dGhQYXRoID0gam9pbihjb2RleEhvbWUsIFwiYXV0aC5qc29uXCIpO1xuICAgIC8vIG1rZHRlbXBTeW5jIG1ha2VzIGEgZnJlc2ggZGlyLCBzbyBhdXRoUGF0aCBuZXZlciBwcmUtZXhpc3RzIGFuZCB0aGVcbiAgICAvLyBjcmVhdGUtdGltZSBtb2RlIGlzIGhvbm9yZWQgYXRvbWljYWxseSAobm8gd29ybGQtcmVhZGFibGUgd2luZG93KS4gMG82MDBcbiAgICAvLyBzdXJ2aXZlcyBhbnkgc2FuZSB1bWFzayBzaW5jZSB1bWFzayBvbmx5IGNsZWFycyBiaXRzIGFuZCAwbzYwMCBoYXMgbm9uZVxuICAgIC8vIHRvIGNsZWFyLCBzbyBhIGZvbGxvdy11cCBjaG1vZCB3b3VsZCBiZSByZWR1bmRhbnQuXG4gICAgd3JpdGVGaWxlU3luYyhhdXRoUGF0aCwgY29uZmlnLmNvZGV4QXV0aEpzb24sIHsgbW9kZTogMG82MDAgfSk7XG4gICAgZW52LkNPREVYX0hPTUUgPSBjb2RleEhvbWU7XG4gICAgY29kZXhDb25maWcuY2xpX2F1dGhfY3JlZGVudGlhbHNfc3RvcmUgPSBcImZpbGVcIjtcbiAgfVxuICAvLyBXaGVuIG5laXRoZXIgY3JlZGVudGlhbCBpcyBzZXQsIHJldHVybiBvcHRpb25zIHdpdGhvdXQgYXV0aC4gVGhlIG1pc3NpbmctXG4gIC8vIGNyZWRlbnRpYWwgZmFpbHVyZSBpcyByYWlzZWQgYnkgdGhlIGFkYXB0ZXIgb24gZmlyc3QgcnVuU3RhZ2UgKHNlZVxuICAvLyBDb2RleEFnZW50QWRhcHRlciksIG5vdCBoZXJlOiBjb25zdHJ1Y3Rpb24gbXVzdCBub3QgdGhyb3cgYmVjYXVzZSBlbnRyeS50c1xuICAvLyBidWlsZHMgdGhlIGFkYXB0ZXIgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgZm9yIGBtb2RlOiByZXNvbHZlYCBqb2JzIHRoYXRcbiAgLy8gbmV2ZXIgcnVuIGFuIGFnZW50LlxuXG4gIHJldHVybiB7XG4gICAgLi4uKGFwaUtleSAhPT0gdW5kZWZpbmVkID8geyBhcGlLZXkgfSA6IHt9KSxcbiAgICBlbnYsXG4gICAgY29uZmlnOiBjb2RleENvbmZpZyxcbiAgICBzYW5kYm94TW9kZTogY29uZmlnLmNvZGV4U2FuZGJveE1vZGUsXG4gICAgYXBwcm92YWxQb2xpY3k6IGNvbmZpZy5jb2RleEFwcHJvdmFsUG9saWN5LFxuICAgIG5ldHdvcmtBY2Nlc3NFbmFibGVkOiBjb25maWcuY29kZXhOZXR3b3JrQWNjZXNzLFxuICAgIHNraXBHaXRSZXBvQ2hlY2s6IGNvbmZpZy5jb2RleFNraXBHaXRSZXBvQ2hlY2ssXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuY29uc3QgbnVtID0gKG1pbiA9IDApID0+XG4gIHouc3RyaW5nKCkudHJhbnNmb3JtKChzLCBjdHgpID0+IHtcbiAgICBjb25zdCBuID0gTnVtYmVyKHMpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG4pIHx8IG4gPCBtaW4pIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBleHBlY3RlZCBudW1iZXIgPj0gJHttaW59LCBnb3QgJHtzfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB6Lk5FVkVSO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSk7XG5cbmNvbnN0IFNUQUdFX05BTUVTID0gW1widHJpYWdlXCIsIFwic3BlY1wiLCBcInBsYW5cIiwgXCJpbXBsZW1lbnRcIiwgXCJyZXZpZXdcIl0gYXMgY29uc3Q7XG50eXBlIFN0YWdlTmFtZSA9ICh0eXBlb2YgU1RBR0VfTkFNRVMpW251bWJlcl07XG5cbi8vIFByb3ZpZGVyLWF3YXJlIGRlZmF1bHQgbW9kZWwgaWRzLiBBY3Rpb24gaW5wdXRzIGxlZnQgdW5zZXQgYXJyaXZlIGFzIFwiXCIgKHRoZVxuLy8gYWN0aW9uLnltbCBtb2RlbCBkZWZhdWx0cyBhcmUgYmxhbmspLCBzbyBwYXJzZUNvbmZpZyBzdWJzdGl0dXRlcyB0aGUgZGVmYXVsdFxuLy8gZm9yIHRoZSBzZWxlY3RlZCBhZ2VudF9wcm92aWRlci4gQ2xhdWRlIGtlZXBzIHRoZSBjaGVhcGVyIHRyaWFnZSB0aWVyOyBDb2RleFxuLy8gdXNlcyBvbmUgbW9kZWwgYWNyb3NzIGV2ZXJ5IHN0YWdlLlxudHlwZSBNb2RlbEtleSA9IFwidHJpYWdlXCIgfCBcInNwZWNcIiB8IFwicGxhblwiIHwgXCJpbXBsXCIgfCBcInJldmlld1wiO1xuY29uc3QgREVGQVVMVF9NT0RFTFM6IFJlY29yZDxcImNsYXVkZVwiIHwgXCJjb2RleFwiLCBSZWNvcmQ8TW9kZWxLZXksIHN0cmluZz4+ID0ge1xuICBjbGF1ZGU6IHtcbiAgICB0cmlhZ2U6IFwiY2xhdWRlLXNvbm5ldC00LTZcIixcbiAgICBzcGVjOiBcImNsYXVkZS1vcHVzLTQtOFsxbV1cIixcbiAgICBwbGFuOiBcImNsYXVkZS1vcHVzLTQtOFsxbV1cIixcbiAgICBpbXBsOiBcImNsYXVkZS1vcHVzLTQtOFsxbV1cIixcbiAgICByZXZpZXc6IFwiY2xhdWRlLW9wdXMtNC04WzFtXVwiLFxuICB9LFxuICBjb2RleDoge1xuICAgIHRyaWFnZTogXCJncHQtNS41XCIsXG4gICAgc3BlYzogXCJncHQtNS41XCIsXG4gICAgcGxhbjogXCJncHQtNS41XCIsXG4gICAgaW1wbDogXCJncHQtNS41XCIsXG4gICAgcmV2aWV3OiBcImdwdC01LjVcIixcbiAgfSxcbn07XG5cbmNvbnN0IEVGRk9SVF9MRVZFTFMgPSBbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCIsIFwieGhpZ2hcIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBFZmZvcnQgPSAodHlwZW9mIEVGRk9SVF9MRVZFTFMpW251bWJlcl07XG5jb25zdCBlZmZvcnQgPSAoKSA9PiB6LmVudW0oRUZGT1JUX0xFVkVMUykuZGVmYXVsdChcImhpZ2hcIik7XG5cbmNvbnN0IFNBTkRCT1hfTU9ERVMgPSBbXG4gIFwicmVhZC1vbmx5XCIsXG4gIFwid29ya3NwYWNlLXdyaXRlXCIsXG4gIFwiZGFuZ2VyLWZ1bGwtYWNjZXNzXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgQVBQUk9WQUxfUE9MSUNJRVMgPSBbXG4gIFwibmV2ZXJcIixcbiAgXCJvbi1yZXF1ZXN0XCIsXG4gIFwib24tZmFpbHVyZVwiLFxuICBcInVudHJ1c3RlZFwiLFxuXSBhcyBjb25zdDtcblxuLy8gQWN0aW9uIGlucHV0cyBhcnJpdmUgYXMgc3RyaW5ncy4gVmFsaWRhdGUgYm9vbGVhbiB0b2dnbGVzIHN0cmljdGx5IGFnYWluc3Rcbi8vIGV4YWN0bHkgXCJ0cnVlXCIvXCJmYWxzZVwiIChsaWtlIHRoZSBlbnVtIGlucHV0cykgc28gYSB0eXBvIG9uIGEgc2VjdXJpdHktXG4vLyByZWxldmFudCBzd2l0Y2ggc3VjaCBhcyBjb2RleF9uZXR3b3JrX2FjY2VzcyBpcyByZWplY3RlZCBsb3VkbHkgcmF0aGVyIHRoYW5cbi8vIHNpbGVudGx5IGNvZXJjZWQgdG8gYSBmYWlsLW9wZW4gZGVmYXVsdC5cbmNvbnN0IHN0cmljdEJvb2wgPSAoZGVmOiBcInRydWVcIiB8IFwiZmFsc2VcIikgPT5cbiAgelxuICAgIC5lbnVtKFtcInRydWVcIiwgXCJmYWxzZVwiXSlcbiAgICAuZGVmYXVsdChkZWYpXG4gICAgLnRyYW5zZm9ybSgocykgPT4gcyA9PT0gXCJ0cnVlXCIpO1xuXG4vLyBPcHRpb25hbCBwb3NpdGl2ZS1pbnRlZ2VyIGlucHV0LiBFbXB0eSBzdHJpbmcgbWVhbnMgdW5zZXQgKG5vIGNhcCkuXG5jb25zdCBvcHRpb25hbFR1cm5zID0gKCkgPT5cbiAgelxuICAgIC5zdHJpbmcoKVxuICAgIC5kZWZhdWx0KFwiXCIpXG4gICAgLnRyYW5zZm9ybSgocywgY3R4KSA9PiB7XG4gICAgICBpZiAocyA9PT0gXCJcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIocyk7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobikgfHwgbiA8IDEpIHtcbiAgICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGBleHBlY3RlZCBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgJHtzfWAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gei5ORVZFUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuO1xuICAgIH0pO1xuXG5mdW5jdGlvbiBwYXJzZVN0YWdlc0xpc3QocmF3OiBzdHJpbmcpOiBTdGFnZU5hbWVbXSB7XG4gIGlmICghcmF3LnRyaW0oKSkgcmV0dXJuIFtdO1xuICBjb25zdCBwYXJ0cyA9IHJhd1xuICAgIC5zcGxpdChcIixcIilcbiAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICBmb3IgKGNvbnN0IHAgb2YgcGFydHMpIHtcbiAgICBpZiAoIShTVEFHRV9OQU1FUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMocCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGludmFsaWQgc3RhZ2UgbmFtZSBpbiBzdGFnZXM6ICR7cH0gKHZhbGlkOiAke1NUQUdFX05BTUVTLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJ0cyBhcyBTdGFnZU5hbWVbXTtcbn1cblxuY29uc3QgUmF3SW5wdXRzID0gelxuICAub2JqZWN0KHtcbiAgICBhbnRocm9waWNfYXBpX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgY2xhdWRlX2NvZGVfb2F1dGhfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZWZhdWx0KFwiXCIpLFxuICAgIGFnZW50X3Byb3ZpZGVyOiB6LmVudW0oW1wiY2xhdWRlXCIsIFwiY29kZXhcIl0pLmRlZmF1bHQoXCJjbGF1ZGVcIiksXG4gICAgb3BlbmFpX2FwaV9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZWZhdWx0KFwiXCIpLFxuICAgIGNvZGV4X2F1dGhfanNvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgY29kZXhfc2FuZGJveF9tb2RlOiB6LmVudW0oU0FOREJPWF9NT0RFUykuZGVmYXVsdChcIndvcmtzcGFjZS13cml0ZVwiKSxcbiAgICBjb2RleF9hcHByb3ZhbF9wb2xpY3k6IHouZW51bShBUFBST1ZBTF9QT0xJQ0lFUykuZGVmYXVsdChcIm5ldmVyXCIpLFxuICAgIGNvZGV4X25ldHdvcmtfYWNjZXNzOiBzdHJpY3RCb29sKFwidHJ1ZVwiKSxcbiAgICBjb2RleF9za2lwX2dpdF9yZXBvX2NoZWNrOiBzdHJpY3RCb29sKFwidHJ1ZVwiKSxcbiAgICBnaXRodWJfYXBwX2NsaWVudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgZ2l0aHViX2FwcF9wcml2YXRlX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgZ2l0aHViX2FwcF9yZXZpZXdfY2xpZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICBnaXRodWJfYXBwX3Jldmlld19wcml2YXRlX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJcIiksXG4gICAgc3NoX3NpZ25pbmdfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVmYXVsdChcIlwiKSxcbiAgICB0cmlnZ2VyX2xhYmVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgbWF4X3Jldmlld19pdGVyYXRpb25zOiBudW0oMSkuZGVmYXVsdChcIjNcIiksXG4gICAgLy8gQmxhbmsgYnkgZGVmYXVsdDsgcGFyc2VDb25maWcgZmlsbHMgaW4gdGhlIHByb3ZpZGVyLWF3YXJlIGRlZmF1bHRcbiAgICAvLyAoREVGQVVMVF9NT0RFTFMpIHdoZW4gdGhlIGlucHV0IGlzIGVtcHR5LiBBbiBleHBsaWNpdCB2YWx1ZSBhbHdheXMgd2lucy5cbiAgICB0cmlhZ2VfbW9kZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICBzcGVjX21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgcGxhbl9tb2RlbDogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICAgIGltcGxfbW9kZWw6IHouc3RyaW5nKCkuZGVmYXVsdChcIlwiKSxcbiAgICByZXZpZXdfY29tcGxpYW5jZV9tb2RlbDogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICAgIHJldmlld19idWdzX21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgcmV2aWV3X3NlY3VyaXR5X21vZGVsOiB6LnN0cmluZygpLmRlZmF1bHQoXCJcIiksXG4gICAgcmV2aWV3X3NtZWxsc19tb2RlbDogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICAgIHRyaWFnZV9lZmZvcnQ6IGVmZm9ydCgpLFxuICAgIHNwZWNfZWZmb3J0OiBlZmZvcnQoKSxcbiAgICBwbGFuX2VmZm9ydDogZWZmb3J0KCksXG4gICAgaW1wbF9lZmZvcnQ6IGVmZm9ydCgpLFxuICAgIHJldmlld19jb21wbGlhbmNlX2VmZm9ydDogZWZmb3J0KCksXG4gICAgcmV2aWV3X2J1Z3NfZWZmb3J0OiBlZmZvcnQoKSxcbiAgICByZXZpZXdfc2VjdXJpdHlfZWZmb3J0OiBlZmZvcnQoKSxcbiAgICByZXZpZXdfc21lbGxzX2VmZm9ydDogZWZmb3J0KCksXG4gICAgdHJpYWdlX21heF9idWRnZXRfdXNkOiBudW0oMCkuZGVmYXVsdChcIjAuMjVcIiksXG4gICAgc3BlY19tYXhfYnVkZ2V0X3VzZDogbnVtKDApLmRlZmF1bHQoXCIxLjUwXCIpLFxuICAgIHBsYW5fbWF4X2J1ZGdldF91c2Q6IG51bSgwKS5kZWZhdWx0KFwiMS41MFwiKSxcbiAgICBpbXBsX21heF9idWRnZXRfdXNkOiBudW0oMCkuZGVmYXVsdChcIjIuNTBcIiksXG4gICAgcmV2aWV3X21heF9idWRnZXRfdXNkX3Blcl9sZW5zOiBudW0oMCkuZGVmYXVsdChcIjIuMDBcIiksXG4gICAgdHJpYWdlX21heF90dXJuczogb3B0aW9uYWxUdXJucygpLFxuICAgIHNwZWNfbWF4X3R1cm5zOiBvcHRpb25hbFR1cm5zKCksXG4gICAgcGxhbl9tYXhfdHVybnM6IG9wdGlvbmFsVHVybnMoKSxcbiAgICBpbXBsX21heF90dXJuczogb3B0aW9uYWxUdXJucygpLFxuICAgIHJldmlld19tYXhfdHVybnNfcGVyX2xlbnM6IG9wdGlvbmFsVHVybnMoKSxcbiAgICB0cmlhZ2VfdGltZW91dF9tczogbnVtKDEwMDApLmRlZmF1bHQoXCIzMDAwMDBcIiksXG4gICAgc3BlY190aW1lb3V0X21zOiBudW0oMTAwMCkuZGVmYXVsdChcIjEyMDAwMDBcIiksXG4gICAgcGxhbl90aW1lb3V0X21zOiBudW0oMTAwMCkuZGVmYXVsdChcIjEyMDAwMDBcIiksXG4gICAgaW1wbF90aW1lb3V0X21zOiBudW0oMTAwMCkuZGVmYXVsdChcIjM2MDAwMDBcIiksXG4gICAgcmV2aWV3X3RpbWVvdXRfbXNfcGVyX2xlbnM6IG51bSgxMDAwKS5kZWZhdWx0KFwiOTAwMDAwXCIpLFxuICAgIG1vZGU6IHouZW51bShbXCJhdXRvXCIsIFwicmVzb2x2ZVwiLCBcImV4ZWN1dGVcIl0pLmRlZmF1bHQoXCJhdXRvXCIpLFxuICAgIHN0YWdlczogei5zdHJpbmcoKS5kZWZhdWx0KFwiXCIpLFxuICB9KVxuICAucmVmaW5lKFxuICAgICh2KSA9PlxuICAgICAgdi5hZ2VudF9wcm92aWRlciA9PT0gXCJjb2RleFwiIHx8XG4gICAgICB2LmFudGhyb3BpY19hcGlfa2V5IHx8XG4gICAgICB2LmNsYXVkZV9jb2RlX29hdXRoX3Rva2VuLFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwib25lIG9mIGFudGhyb3BpY19hcGlfa2V5IG9yIGNsYXVkZV9jb2RlX29hdXRoX3Rva2VuIGlzIHJlcXVpcmVkIHdoZW4gYWdlbnRfcHJvdmlkZXI9Y2xhdWRlXCIsXG4gICAgfSxcbiAgKTtcblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gUmV0dXJuVHlwZTx0eXBlb2YgcGFyc2VDb25maWc+O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWcocmF3OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KSB7XG4gIGNvbnN0IGNsZWFuZWQgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMocmF3KS5tYXAoKFtrLCB2XSkgPT4gW2ssIHYgPz8gXCJcIl0pLFxuICApO1xuICBjb25zdCBwYXJzZWQgPSBSYXdJbnB1dHMucGFyc2UoY2xlYW5lZCk7XG4gIGNvbnN0IG1vZGVsRGVmYXVsdHMgPSBERUZBVUxUX01PREVMU1twYXJzZWQuYWdlbnRfcHJvdmlkZXJdO1xuICBjb25zdCBtb2RlbCA9ICh2YWx1ZTogc3RyaW5nLCBrZXk6IE1vZGVsS2V5KSA9PiB2YWx1ZSB8fCBtb2RlbERlZmF1bHRzW2tleV07XG4gIHJldHVybiB7XG4gICAgYW50aHJvcGljQXBpS2V5OiBwYXJzZWQuYW50aHJvcGljX2FwaV9rZXksXG4gICAgY2xhdWRlQ29kZU9BdXRoVG9rZW46IHBhcnNlZC5jbGF1ZGVfY29kZV9vYXV0aF90b2tlbixcbiAgICBhZ2VudFByb3ZpZGVyOiBwYXJzZWQuYWdlbnRfcHJvdmlkZXIsXG4gICAgb3BlbmFpQXBpS2V5OiBwYXJzZWQub3BlbmFpX2FwaV9rZXksXG4gICAgY29kZXhBdXRoSnNvbjogcGFyc2VkLmNvZGV4X2F1dGhfanNvbixcbiAgICBjb2RleFNhbmRib3hNb2RlOiBwYXJzZWQuY29kZXhfc2FuZGJveF9tb2RlLFxuICAgIGNvZGV4QXBwcm92YWxQb2xpY3k6IHBhcnNlZC5jb2RleF9hcHByb3ZhbF9wb2xpY3ksXG4gICAgY29kZXhOZXR3b3JrQWNjZXNzOiBwYXJzZWQuY29kZXhfbmV0d29ya19hY2Nlc3MsXG4gICAgY29kZXhTa2lwR2l0UmVwb0NoZWNrOiBwYXJzZWQuY29kZXhfc2tpcF9naXRfcmVwb19jaGVjayxcbiAgICBnaXRodWJBcHA6XG4gICAgICBwYXJzZWQuZ2l0aHViX2FwcF9jbGllbnRfaWQgJiYgcGFyc2VkLmdpdGh1Yl9hcHBfcHJpdmF0ZV9rZXlcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjbGllbnRJZDogcGFyc2VkLmdpdGh1Yl9hcHBfY2xpZW50X2lkLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogcGFyc2VkLmdpdGh1Yl9hcHBfcHJpdmF0ZV9rZXksXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgcmV2aWV3R2l0aHViQXBwOiBwYXJzZWQuZ2l0aHViX2FwcF9yZXZpZXdfY2xpZW50X2lkXG4gICAgICA/IHtcbiAgICAgICAgICBjbGllbnRJZDogcGFyc2VkLmdpdGh1Yl9hcHBfcmV2aWV3X2NsaWVudF9pZCxcbiAgICAgICAgICBwcml2YXRlS2V5OiBwYXJzZWQuZ2l0aHViX2FwcF9yZXZpZXdfcHJpdmF0ZV9rZXksXG4gICAgICAgIH1cbiAgICAgIDogbnVsbCxcbiAgICBzc2hTaWduaW5nS2V5OiBwYXJzZWQuc3NoX3NpZ25pbmdfa2V5IHx8IG51bGwsXG4gICAgdHJpZ2dlckxhYmVsOiBwYXJzZWQudHJpZ2dlcl9sYWJlbCB8fCBudWxsLFxuICAgIG1heFJldmlld0l0ZXJhdGlvbnM6IHBhcnNlZC5tYXhfcmV2aWV3X2l0ZXJhdGlvbnMsXG4gICAgdHJpYWdlTW9kZWw6IG1vZGVsKHBhcnNlZC50cmlhZ2VfbW9kZWwsIFwidHJpYWdlXCIpLFxuICAgIHNwZWNNb2RlbDogbW9kZWwocGFyc2VkLnNwZWNfbW9kZWwsIFwic3BlY1wiKSxcbiAgICBwbGFuTW9kZWw6IG1vZGVsKHBhcnNlZC5wbGFuX21vZGVsLCBcInBsYW5cIiksXG4gICAgaW1wbE1vZGVsOiBtb2RlbChwYXJzZWQuaW1wbF9tb2RlbCwgXCJpbXBsXCIpLFxuICAgIHJldmlld01vZGVsczoge1xuICAgICAgY29tcGxpYW5jZTogbW9kZWwocGFyc2VkLnJldmlld19jb21wbGlhbmNlX21vZGVsLCBcInJldmlld1wiKSxcbiAgICAgIGJ1Z3M6IG1vZGVsKHBhcnNlZC5yZXZpZXdfYnVnc19tb2RlbCwgXCJyZXZpZXdcIiksXG4gICAgICBzZWN1cml0eTogbW9kZWwocGFyc2VkLnJldmlld19zZWN1cml0eV9tb2RlbCwgXCJyZXZpZXdcIiksXG4gICAgICBzbWVsbHM6IG1vZGVsKHBhcnNlZC5yZXZpZXdfc21lbGxzX21vZGVsLCBcInJldmlld1wiKSxcbiAgICB9LFxuICAgIHRyaWFnZUVmZm9ydDogcGFyc2VkLnRyaWFnZV9lZmZvcnQsXG4gICAgc3BlY0VmZm9ydDogcGFyc2VkLnNwZWNfZWZmb3J0LFxuICAgIHBsYW5FZmZvcnQ6IHBhcnNlZC5wbGFuX2VmZm9ydCxcbiAgICBpbXBsRWZmb3J0OiBwYXJzZWQuaW1wbF9lZmZvcnQsXG4gICAgcmV2aWV3RWZmb3J0czoge1xuICAgICAgY29tcGxpYW5jZTogcGFyc2VkLnJldmlld19jb21wbGlhbmNlX2VmZm9ydCxcbiAgICAgIGJ1Z3M6IHBhcnNlZC5yZXZpZXdfYnVnc19lZmZvcnQsXG4gICAgICBzZWN1cml0eTogcGFyc2VkLnJldmlld19zZWN1cml0eV9lZmZvcnQsXG4gICAgICBzbWVsbHM6IHBhcnNlZC5yZXZpZXdfc21lbGxzX2VmZm9ydCxcbiAgICB9LFxuICAgIHRyaWFnZU1heEJ1ZGdldFVzZDogcGFyc2VkLnRyaWFnZV9tYXhfYnVkZ2V0X3VzZCxcbiAgICBzcGVjTWF4QnVkZ2V0VXNkOiBwYXJzZWQuc3BlY19tYXhfYnVkZ2V0X3VzZCxcbiAgICBwbGFuTWF4QnVkZ2V0VXNkOiBwYXJzZWQucGxhbl9tYXhfYnVkZ2V0X3VzZCxcbiAgICBpbXBsTWF4QnVkZ2V0VXNkOiBwYXJzZWQuaW1wbF9tYXhfYnVkZ2V0X3VzZCxcbiAgICByZXZpZXdNYXhCdWRnZXRVc2RQZXJMZW5zOiBwYXJzZWQucmV2aWV3X21heF9idWRnZXRfdXNkX3Blcl9sZW5zLFxuICAgIHRyaWFnZU1heFR1cm5zOiBwYXJzZWQudHJpYWdlX21heF90dXJucyxcbiAgICBzcGVjTWF4VHVybnM6IHBhcnNlZC5zcGVjX21heF90dXJucyxcbiAgICBwbGFuTWF4VHVybnM6IHBhcnNlZC5wbGFuX21heF90dXJucyxcbiAgICBpbXBsTWF4VHVybnM6IHBhcnNlZC5pbXBsX21heF90dXJucyxcbiAgICByZXZpZXdNYXhUdXJuc1BlckxlbnM6IHBhcnNlZC5yZXZpZXdfbWF4X3R1cm5zX3Blcl9sZW5zLFxuICAgIHRyaWFnZVRpbWVvdXRNczogcGFyc2VkLnRyaWFnZV90aW1lb3V0X21zLFxuICAgIHNwZWNUaW1lb3V0TXM6IHBhcnNlZC5zcGVjX3RpbWVvdXRfbXMsXG4gICAgcGxhblRpbWVvdXRNczogcGFyc2VkLnBsYW5fdGltZW91dF9tcyxcbiAgICBpbXBsVGltZW91dE1zOiBwYXJzZWQuaW1wbF90aW1lb3V0X21zLFxuICAgIHJldmlld1RpbWVvdXRNc1BlckxlbnM6IHBhcnNlZC5yZXZpZXdfdGltZW91dF9tc19wZXJfbGVucyxcbiAgICBtb2RlOiBwYXJzZWQubW9kZSxcbiAgICBzdGFnZXM6IHBhcnNlU3RhZ2VzTGlzdChwYXJzZWQuc3RhZ2VzKSxcbiAgfSBhcyBjb25zdDtcbn1cbiIsICJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNobW9kU3luYywgbWtkdGVtcFN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQgeyBjcmVhdGVBcHBBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtYXBwXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L3Jlc3RcIjtcbmltcG9ydCB0eXBlIHsgQXV0aFNwZWMgfSBmcm9tIFwiLi4vZ2l0aHViL2FwcC10b2tlbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdpdElkZW50aXR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG5jb25zdCBGQUxMQkFDS19JREVOVElUWTogR2l0SWRlbnRpdHkgPSB7XG4gIG5hbWU6IFwic2hvcGZsb29yW2JvdF1cIixcbiAgZW1haWw6IFwic2hvcGZsb29yQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbVwiLFxufTtcblxuLy8gR2l0SHViIHB1Ymxpc2hlcyA0MTg5ODI4MiBhcyB0aGUgY2Fub25pY2FsIHVzZXIgaWQgZm9yIHRoZSBnaXRodWItYWN0aW9uc1xuLy8gYm90IGFjY291bnQuIFVzZWQgaW4gdGhlIGRlZmF1bHQgZW1haWwgZm9ybWF0IGZvciBjb21taXRzIGF1dGhvcmVkIHZpYSB0aGVcbi8vIHdvcmtmbG93J3MgYnVpbHQtaW4gR0lUSFVCX1RPS0VOLlxuY29uc3QgR0lUSFVCX0FDVElPTlNfSURFTlRJVFk6IEdpdElkZW50aXR5ID0ge1xuICBuYW1lOiBcImdpdGh1Yi1hY3Rpb25zW2JvdF1cIixcbiAgZW1haWw6IFwiNDE4OTgyODIrZ2l0aHViLWFjdGlvbnNbYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb21cIixcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUJvdElkZW50aXR5RGVwcyB7XG4gIGFwcEF1dGhGYWN0b3J5PzogdHlwZW9mIGNyZWF0ZUFwcEF1dGg7XG4gIGZldGNoQXBwU2x1Zz86IChqd3Q6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBmZXRjaEJvdFVzZXJJZD86IChzbHVnOiBzdHJpbmcpID0+IFByb21pc2U8bnVtYmVyPjtcbn1cblxuLy8gUmVzb2x2ZXMgdGhlIGNvbW1pdCBpZGVudGl0eSBTaG9wZmxvb3Igc2hvdWxkIHVzZSBnaXZlbiB0aGUgcmVzb2x2ZWQgYXV0aFxuLy8gc3VyZmFjZS4gVGhlIFwiYXBwXCIgcGF0aCBtYWtlcyB0d28gY2hlYXAgQVBJIGNhbGxzOiBvbmUgdG8gL2FwcCB0byBsZWFybiB0aGVcbi8vIEFwcCBzbHVnLCBvbmUgdG8gL3VzZXJzLzxzbHVnPltib3RdIGZvciB0aGUgYm90IHVzZXIgaWQuIFRvZ2V0aGVyIHRoZXlcbi8vIHByb2R1Y2UgdGhlIGNhbm9uaWNhbCBgPGlkPis8c2x1Zz5bYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb21gIGVtYWlsXG4vLyB0aGF0IGF0dHJpYnV0ZXMgY29tbWl0cyB0byB0aGUgQXBwJ3MgYm90IGFjY291bnQgaW4gdGhlIEdpdEh1YiBVSS4gVGhlXG4vLyBvdGhlciBhdXRoIHN1cmZhY2VzIChnaXRodWJfdG9rZW4sIHByZW1pbnRlZCkgZmFsbCBiYWNrIHRvIGlkZW50aXRpZXMgdGhhdFxuLy8gYXQgbGVhc3QgbGV0IGBnaXQgY29tbWl0YCBzdWNjZWVkLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVCb3RJZGVudGl0eShcbiAgYXV0aDogQXV0aFNwZWMsXG4gIGRlcHM6IFJlc29sdmVCb3RJZGVudGl0eURlcHMgPSB7fSxcbik6IFByb21pc2U8R2l0SWRlbnRpdHk+IHtcbiAgaWYgKGF1dGgua2luZCA9PT0gXCJ0b2tlblwiICYmIGF1dGguc291cmNlID09PSBcImdpdGh1Yl90b2tlblwiKSB7XG4gICAgcmV0dXJuIEdJVEhVQl9BQ1RJT05TX0lERU5USVRZO1xuICB9XG4gIGlmIChhdXRoLmtpbmQgIT09IFwiYXBwXCIpIHtcbiAgICBjb3JlLndhcm5pbmcoXG4gICAgICBcIlNob3BmbG9vciBpcyBydW5uaW5nIHdpdGggYSBwcmVtaW50ZWQgaW5zdGFsbGF0aW9uIHRva2VuOyBjYW5ub3QgcmVzb2x2ZSB0aGUgQXBwJ3MgYm90IGlkZW50aXR5LiBDb21taXRzIHdpbGwgdXNlIGEgZ2VuZXJpYyBpZGVudGl0eS4gU3dpdGNoIHRvIGdpdGh1Yl9hcHBfY2xpZW50X2lkICsgZ2l0aHViX2FwcF9wcml2YXRlX2tleSBmb3IgcHJvcGVyIGF0dHJpYnV0aW9uLlwiLFxuICAgICk7XG4gICAgcmV0dXJuIEZBTExCQUNLX0lERU5USVRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBhcHBBdXRoRmFjdG9yeSA9IGRlcHMuYXBwQXV0aEZhY3RvcnkgPz8gY3JlYXRlQXBwQXV0aDtcbiAgICBjb25zdCBmZXRjaEFwcFNsdWcgPSBkZXBzLmZldGNoQXBwU2x1ZyA/PyBkZWZhdWx0RmV0Y2hBcHBTbHVnO1xuICAgIGNvbnN0IGZldGNoQm90VXNlcklkID0gZGVwcy5mZXRjaEJvdFVzZXJJZCA/PyBkZWZhdWx0RmV0Y2hCb3RVc2VySWQ7XG5cbiAgICBjb25zdCBhdXRoRm4gPSBhcHBBdXRoRmFjdG9yeSh7XG4gICAgICBhcHBJZDogYXV0aC5jbGllbnRJZCxcbiAgICAgIHByaXZhdGVLZXk6IGF1dGgucHJpdmF0ZUtleSxcbiAgICB9KTtcbiAgICBjb25zdCB7IHRva2VuOiBqd3QgfSA9IGF3YWl0IGF1dGhGbih7IHR5cGU6IFwiYXBwXCIgfSk7XG4gICAgY29uc3Qgc2x1ZyA9IGF3YWl0IGZldGNoQXBwU2x1Zyhqd3QpO1xuICAgIGNvbnN0IHVzZXJJZCA9IGF3YWl0IGZldGNoQm90VXNlcklkKHNsdWcpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBgJHtzbHVnfVtib3RdYCxcbiAgICAgIGVtYWlsOiBgJHt1c2VySWR9KyR7c2x1Z31bYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb21gLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvcmUud2FybmluZyhcbiAgICAgIGBDb3VsZCBub3QgcmVzb2x2ZSBBcHAgYm90IGlkZW50aXR5ICgkeyhlcnIgYXMgRXJyb3IpLm1lc3NhZ2V9KTsgZmFsbGluZyBiYWNrIHRvIGEgZ2VuZXJpYyBpZGVudGl0eS5gLFxuICAgICk7XG4gICAgcmV0dXJuIEZBTExCQUNLX0lERU5USVRZO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRGZXRjaEFwcFNsdWcoand0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvY3Rva2l0ID0gbmV3IE9jdG9raXQoeyBhdXRoOiBqd3QgfSk7XG4gIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgb2N0b2tpdC5yZXN0LmFwcHMuZ2V0QXV0aGVudGljYXRlZCgpO1xuICBjb25zdCBzbHVnID0gZGF0YT8uc2x1ZztcbiAgaWYgKCFzbHVnKSB0aHJvdyBuZXcgRXJyb3IoXCJHRVQgL2FwcCBkaWQgbm90IHJldHVybiBhIHNsdWdcIik7XG4gIHJldHVybiBzbHVnO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0RmV0Y2hCb3RVc2VySWQoc2x1Zzogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgLy8gVGhlIGJvdCB1c2VyIChlLmcuIGBzaG9wZmxvb3JbYm90XWApIGlzIGEgcHVibGljIGFjY291bnQ7IG5vIGF1dGggbmVlZGVkLlxuICBjb25zdCBvY3Rva2l0ID0gbmV3IE9jdG9raXQoKTtcbiAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBvY3Rva2l0LnJlc3QudXNlcnMuZ2V0QnlVc2VybmFtZSh7XG4gICAgdXNlcm5hbWU6IGAke3NsdWd9W2JvdF1gLFxuICB9KTtcbiAgcmV0dXJuIGRhdGEuaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlHaXRJZGVudGl0eU9wdHMge1xuICBjd2Q6IHN0cmluZztcbiAgaWRlbnRpdHk6IEdpdElkZW50aXR5O1xuICBzc2hTaWduaW5nS2V5Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gV3JpdGVzIHRoZSByZXNvbHZlZCBpZGVudGl0eSB0byB0aGUgcmVwby1sb2NhbCBnaXQgY29uZmlnIChOT1QgLS1nbG9iYWwpLlxuLy8gUmVwby1sb2NhbCBtYXR0ZXJzIGJlY2F1c2UgdGhlIGFjdGlvbidzIE5vZGUgcHJvY2VzcyBydW5zIGluIHRoZSBzYW1lXG4vLyBjaGVja291dCB0aGUgQ2xhdWRlIGFnZW50IGxhdGVyIGluaGVyaXRzOyB0aGUgYWdlbnQncyBgZ2l0IGNvbW1pdGAgcmVhZHNcbi8vIC5naXQvY29uZmlnIGFuZCBnZXRzIHRoZSBpZGVudGl0eSBmb3IgZnJlZS4gUmVwby1sb2NhbCBhbHNvIGF2b2lkc1xuLy8gY2xvYmJlcmluZyBhIGRldmVsb3BlcidzIH4vLmdpdGNvbmZpZyBpZiB0aGUgYWN0aW9uIGlzIGV2ZXIgZXhlcmNpc2VkXG4vLyBsb2NhbGx5IHZpYSBgYWN0YCBvciBhIHNpbWlsYXIgaGFybmVzcy5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUdpdElkZW50aXR5KFxuICBvcHRzOiBBcHBseUdpdElkZW50aXR5T3B0cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImNvbmZpZ1wiLCBcInVzZXIubmFtZVwiLCBvcHRzLmlkZW50aXR5Lm5hbWVdKTtcbiAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJjb25maWdcIiwgXCJ1c2VyLmVtYWlsXCIsIG9wdHMuaWRlbnRpdHkuZW1haWxdKTtcblxuICBjb25zdCBrZXkgPSBvcHRzLnNzaFNpZ25pbmdLZXk/LnRyaW0oKTtcbiAgaWYgKCFrZXkpIHJldHVybjtcblxuICAvLyBNYXRlcmlhbGlzZSB0aGUgc2lnbmluZyBrZXkgdG8gYSAwNjAwLW1vZGUgZmlsZS4gUGF0aCBpcyBpbiBhIGZyZXNobHlcbiAgLy8gbWludGVkIHRlbXAgZGlyIHNvIHdlIGRvbid0IGZpZ2h0IGFuIGV4aXN0aW5nIH4vLnNzaCBvbiB0aGUgcnVubmVyLlxuICBjb25zdCBkaXIgPSBta2R0ZW1wU3luYyhqb2luKHRtcGRpcigpLCBcInNob3BmbG9vci1zc2gtXCIpKTtcbiAgY29uc3Qga2V5UGF0aCA9IGpvaW4oZGlyLCBcInNpZ25pbmdfa2V5XCIpO1xuICB3cml0ZUZpbGVTeW5jKGtleVBhdGgsIGtleS5lbmRzV2l0aChcIlxcblwiKSA/IGtleSA6IGAke2tleX1cXG5gKTtcbiAgY2htb2RTeW5jKGtleVBhdGgsIDBvNjAwKTtcblxuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImNvbmZpZ1wiLCBcImdwZy5mb3JtYXRcIiwgXCJzc2hcIl0pO1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcImNvbmZpZ1wiLCBcInVzZXIuc2lnbmluZ2tleVwiLCBrZXlQYXRoXSk7XG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY29uZmlnXCIsIFwiY29tbWl0LmdwZ3NpZ25cIiwgXCJ0cnVlXCJdKTtcbiAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJjb25maWdcIiwgXCJ0YWcuZ3Bnc2lnblwiLCBcInRydWVcIl0pO1xufVxuXG5mdW5jdGlvbiBydW5HaXQoY3dkOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihcImdpdFwiLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gICAgfSk7XG4gICAgbGV0IHN0ZGVyciA9IFwiXCI7XG4gICAgY2hpbGQuc3RkZXJyLm9uKFwiZGF0YVwiLCAoZDogQnVmZmVyKSA9PiB7XG4gICAgICBzdGRlcnIgKz0gZC50b1N0cmluZygpO1xuICAgIH0pO1xuICAgIGNoaWxkLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBjaGlsZC5vbihcImV4aXRcIiwgKGNvZGUpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoYGdpdCAke2FyZ3Muam9pbihcIiBcIil9IGZhaWxlZCAoJHtjb2RlfSk6ICR7c3RkZXJyLnRyaW0oKX1gKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQgeyB0eXBlIEF1dGhTcGVjLCBtaW50SW5zdGFsbGF0aW9uVG9rZW4gfSBmcm9tIFwiLi4vZ2l0aHViL2FwcC10b2tlbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVJbXBsQ2hlY2tvdXRPcHRzIHtcbiAgY3dkOiBzdHJpbmc7XG4gIGJyYW5jaE5hbWU6IHN0cmluZztcbiAgYmFzZUJyYW5jaDogc3RyaW5nO1xuICByZXZpc2lvbk1vZGU6IGJvb2xlYW47XG4gIG93bmVyOiBzdHJpbmc7XG4gIHJlcG86IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIE92ZXJyaWRlIHRoZSByZW1vdGUgbmFtZS4gRGVmYXVsdHMgdG8gXCJvcmlnaW5cIi4gKi9cbiAgcmVtb3RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hJbXBsQ29tbWl0c09wdHMge1xuICBjd2Q6IHN0cmluZztcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHJlbW90ZT86IHN0cmluZztcbn1cblxuLy8gQ29uZmlndXJlcyB0aGUgbG9jYWwgd29ya2luZyB0cmVlIHNvIHRoZSBpbXBsIGFnZW50J3MgY29tbWl0cyBsYW5kIG9uIHRoZVxuLy8gcmlnaHQgYnJhbmNoLiBGb3IgZmlyc3QgcnVucyB3ZSBjcmVhdGUgdGhlIGJyYW5jaCBmcm9tIHRoZSBkZWZhdWx0LWJyYW5jaFxuLy8gSEVBRCB0aGF0IGFjdGlvbnMvY2hlY2tvdXQgYWxyZWFkeSBwcm92aXNpb25lZC4gRm9yIHJldmlzaW9uIHJ1bnMgd2UgZmV0Y2hcbi8vIHRoZSBwcmlvciBpdGVyYXRpb24ncyBicmFuY2ggZnJvbSB0aGUgcmVtb3RlIGFuZCByZXNldCB0aGUgd29ya2luZyB0cmVlXG4vLyBvbnRvIGl0LCBzbyB0aGUgYWdlbnQgc2VlcyB0aGUgcHJldmlvdXMgcm91bmQncyBoaXN0b3J5IGJlZm9yZSBtYWtpbmcgbmV3XG4vLyBjb21taXRzLiBJbiBldmVyeSBjYXNlIHdlIHJld3JpdGUgb3JpZ2luJ3MgVVJMIHRvIGVtYmVkIHRoZSBBcHBcbi8vIGluc3RhbGxhdGlvbiB0b2tlbiBzbyB0aGUgcG9zdC1hZ2VudCBwdXNoIGNhbiBhdXRoZW50aWNhdGUgd2l0aG91dFxuLy8gcmVseWluZyBvbiBhIGNyZWRlbnRpYWwgaGVscGVyLiBhY3Rpb25zL2NoZWNrb3V0IGluIHRoZSBjb25zdW1lciB3b3JrZmxvd1xuLy8gbXVzdCBydW4gd2l0aCBgcGVyc2lzdC1jcmVkZW50aWFsczogZmFsc2VgOyBvdGhlcndpc2UgaXRzIEdJVEhVQl9UT0tFTlxuLy8gaHR0cCBleHRyYWhlYWRlciBzaGFkb3dzIHRoZSBlbWJlZGRlZCB4LWFjY2Vzcy10b2tlbiBjcmVkZW50aWFsIGhlcmUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUltcGxDaGVja291dChcbiAgb3B0czogUHJlcGFyZUltcGxDaGVja291dE9wdHMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVtb3RlID0gb3B0cy5yZW1vdGUgPz8gXCJvcmlnaW5cIjtcbiAgYXdhaXQgc2V0UmVtb3RlV2l0aFRva2VuKG9wdHMuY3dkLCByZW1vdGUsIG9wdHMub3duZXIsIG9wdHMucmVwbywgb3B0cy50b2tlbik7XG4gIGF3YWl0IGNoZWNrb3V0SW1wbEJyYW5jaCh7XG4gICAgY3dkOiBvcHRzLmN3ZCxcbiAgICBicmFuY2hOYW1lOiBvcHRzLmJyYW5jaE5hbWUsXG4gICAgcmV2aXNpb25Nb2RlOiBvcHRzLnJldmlzaW9uTW9kZSxcbiAgICByZW1vdGUsXG4gIH0pO1xufVxuXG4vLyBQdXNoZXMgd2hhdGV2ZXIgY29tbWl0cyB0aGUgYWdlbnQgbGFuZGVkIG9uIGBicmFuY2hOYW1lYCB0byBvcmlnaW4uIFRoaXMgaXNcbi8vIHRoZSBtb21lbnQgdGhlIGltcGwgYnJhbmNoIGZpcnN0IGFwcGVhcnMgb24gdGhlIHJlbW90ZSAoZm9yIGZpcnN0IHJ1bnMpIG9yXG4vLyBnYWlucyBpdHMgbmV3IGl0ZXJhdGlvbiAoZm9yIHJldmlzaW9uIHJ1bnMpLiBUaGUgcHVzaCBpcyBwZXJmb3JtZWQgQUZURVJcbi8vIHRoZSBhZ2VudCBmaW5pc2hlcyBzbyB0aGUgcmVzdWx0aW5nIGBwdXNoYCBldmVudCAob3Jcbi8vIGBwdWxsX3JlcXVlc3Quc3luY2hyb25pemVgIHdoZW4gYSBQUiBhbHJlYWR5IGV4aXN0cykgaXMgYXR0cmlidXRlZCB0byB0aGVcbi8vIEFwcCBpZGVudGl0eSwgd2hpY2ggbGV0cyBkb3duc3RyZWFtIHJldmlldyB3b3JrZmxvd3MgdHJpZ2dlci4gQSBwdXNoXG4vLyBhdXRoZW50aWNhdGVkIGJ5IHRoZSB3b3JrZmxvdydzIEdJVEhVQl9UT0tFTiB3b3VsZCBOT1QgdHJpZ2dlciBkb3duc3RyZWFtXG4vLyB3b3JrZmxvd3M7IHRoaXMgaXMgd2h5IHRoZSBBcHAgY3JlZGVudGlhbHMgYXJlIHN0cm9uZ2x5IHByZWZlcnJlZC5cbi8vXG4vLyBXZSBhbHdheXMgcmUtc2V0IHRoZSByZW1vdGUgVVJMIHdpdGggYSBmcmVzaGx5IHJlc29sdmVkIHRva2VuIGluIGNhc2UgdGhlXG4vLyBwcmUtYWdlbnQgdG9rZW4gaGFzIGFnZWQgcGFzdCBpdHMgaW5zdGFsbGF0aW9uLXRva2VuIFRUTCBkdXJpbmcgYSBsb25nXG4vLyBydW4uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVzaEltcGxDb21taXRzKFxuICBvcHRzOiBQdXNoSW1wbENvbW1pdHNPcHRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlbW90ZSA9IG9wdHMucmVtb3RlID8/IFwib3JpZ2luXCI7XG4gIGF3YWl0IHNldFJlbW90ZVdpdGhUb2tlbihvcHRzLmN3ZCwgcmVtb3RlLCBvcHRzLm93bmVyLCBvcHRzLnJlcG8sIG9wdHMudG9rZW4pO1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcInB1c2hcIiwgcmVtb3RlLCBvcHRzLmJyYW5jaE5hbWVdKTtcbn1cblxuLy8gUmV0dXJucyBhIGNsb3N1cmUgdGhhdCB5aWVsZHMgYSB1c2FibGUgZ2l0IHRva2VuIGZvciB0aGUgZ2l2ZW4gYXV0aFxuLy8gc3VyZmFjZS4gRm9yIHByZW1pbnRlZCBvciBHSVRIVUJfVE9LRU4gYXV0aCB0aGUgY2xvc3VyZSByZXR1cm5zIHRoZSBzdGF0aWNcbi8vIHRva2VuIG9uIGV2ZXJ5IGNhbGwuIEZvciBBcHAgYXV0aCBpdCBtaW50cyAob3IgcmV0dXJucyBhIGNhY2hlZCwgaW4tbWFyZ2luKVxuLy8gaW5zdGFsbGF0aW9uIHRva2VuIHZpYSBAb2N0b2tpdC9hdXRoLWFwcCwgc28gYSBsb25nLXJ1bm5pbmcgaW1wbCBhZ2VudCdzXG4vLyBwb3N0LWFnZW50IHB1c2ggYWx3YXlzIHVzZXMgYSBmcmVzaCB0b2tlbi5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlblJlc29sdmVyRm9yKFxuICBhdXRoOiBBdXRoU3BlYyxcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuKTogKCkgPT4gUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKGF1dGgua2luZCA9PT0gXCJ0b2tlblwiKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IGF1dGgudG9rZW47XG4gIH1cbiAgcmV0dXJuICgpID0+XG4gICAgbWludEluc3RhbGxhdGlvblRva2VuKHtcbiAgICAgIGNsaWVudElkOiBhdXRoLmNsaWVudElkLFxuICAgICAgcHJpdmF0ZUtleTogYXV0aC5wcml2YXRlS2V5LFxuICAgICAgb3duZXIsXG4gICAgICByZXBvLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGF1dGguaW5zdGFsbGF0aW9uSWQsXG4gICAgfSk7XG59XG5cbi8vIFJld3JpdGVzIGA8cmVtb3RlPmAncyBVUkwgdG8gaHR0cHM6Ly94LWFjY2Vzcy10b2tlbjo8dG9rZW4+QGdpdGh1Yi5jb20vPG93bmVyPi88cmVwbz4uZ2l0LlxuLy8gRXhwb3J0ZWQgc28gdGVzdHMgY2FuIGV4ZXJjaXNlIFVSTCBmb3JtYXR0aW5nIHdpdGhvdXQgZXhlcmNpc2luZyB0aGUgZnVsbFxuLy8gcHJlcGFyZS9wdXNoIGZsb3cuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0UmVtb3RlV2l0aFRva2VuKFxuICBjd2Q6IHN0cmluZyxcbiAgcmVtb3RlOiBzdHJpbmcsXG4gIG93bmVyOiBzdHJpbmcsXG4gIHJlcG86IHN0cmluZyxcbiAgdG9rZW46IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly94LWFjY2Vzcy10b2tlbjoke3Rva2VufUBnaXRodWIuY29tLyR7b3duZXJ9LyR7cmVwb30uZ2l0YDtcbiAgLy8gTWFzayB0aGUgdG9rZW4gaW4gY2FzZSBpdCBlbmRzIHVwIGluIGFueSBlcnJvciBvdXRwdXQuIFRoZSB0b2tlbiBpcyBhbHNvXG4gIC8vIGFscmVhZHkgbWFza2VkIGJ5IGVudHJ5LnRzIHZpYSB0aGUgQXBwIGF1dGggbWFjaGluZXJ5OyB0aGlzIGlzIGJlbHQtYW5kLVxuICAvLyBicmFjZXMgZm9yIGNhbGxlcnMgdGhhdCB3aXJlIGhlbHBlcnMgZGlyZWN0bHkuXG4gIGNvcmUuc2V0U2VjcmV0KHRva2VuKTtcbiAgYXdhaXQgcnVuR2l0KGN3ZCwgW1wicmVtb3RlXCIsIFwic2V0LXVybFwiLCByZW1vdGUsIHVybF0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoUmV2aWV3QmFzZU9wdHMge1xuICBjd2Q6IHN0cmluZztcbiAgYmFzZVJlZjogc3RyaW5nO1xuICAvKiogT3ZlcnJpZGUgdGhlIHJlbW90ZSBuYW1lLiBEZWZhdWx0cyB0byBcIm9yaWdpblwiLiAqL1xuICByZW1vdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZVJldmlld0Jhc2VPcHRzIGV4dGVuZHMgRmV0Y2hSZXZpZXdCYXNlT3B0cyB7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHJlcG86IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbn1cblxuLy8gUHJvdmlzaW9ucyB0aGUgYmFzZSBicmFuY2ggYXMgYSBsb2NhbCBgcmVmcy9yZW1vdGVzLzxyZW1vdGU+LzxiYXNlPmAgcmVmIHNvXG4vLyB0aGUgcmV2aWV3IGxlbnNlcyBjYW4gZGlmZiB0aGUgUFIgYWdhaW5zdCBpdC4gQSBgcHVsbC9OL21lcmdlYCBjaGVja291dCBpcyBhXG4vLyBzaGFsbG93IG1lcmdlIGNvbW1pdCB3aG9zZSBwYXJlbnRzIGFyZSBub3QgcHJlc2VudCBhcyBvYmplY3RzIGFuZCB3aG9zZVxuLy8gYmFzZS1icmFuY2ggdHJhY2tpbmcgcmVmIGRvZXMgbm90IGV4aXN0LCBzbyBhbnkgYG9yaWdpbi88YmFzZT4uLi5IRUFEYCB0aGVcbi8vIGxlbnMgYWdlbnQgdHJpZXMgZmFpbHMgb3V0cmlnaHQuIFdlIGZldGNoIHRoZSBiYXNlIHRpcCBhdCBkZXB0aCAxIChlbm91Z2gsXG4vLyBiZWNhdXNlIHRoZSBsZW5zZXMgdXNlIGEgdHdvLWRvdCBgZ2l0IGRpZmYgb3JpZ2luLzxiYXNlPiBIRUFEYCwgd2hpY2hcbi8vIGNvbXBhcmVzIHRyZWUgc25hcHNob3RzIGFuZCBuZWVkcyBubyBzaGFyZWQgYW5jZXN0cnkpLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUmV2aWV3QmFzZShcbiAgb3B0czogRmV0Y2hSZXZpZXdCYXNlT3B0cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZW1vdGUgPSBvcHRzLnJlbW90ZSA/PyBcIm9yaWdpblwiO1xuICBhd2FpdCBydW5HaXQob3B0cy5jd2QsIFtcbiAgICBcImZldGNoXCIsXG4gICAgXCItLW5vLXRhZ3NcIixcbiAgICBcIi0tZGVwdGg9MVwiLFxuICAgIHJlbW90ZSxcbiAgICBgK3JlZnMvaGVhZHMvJHtvcHRzLmJhc2VSZWZ9OnJlZnMvcmVtb3Rlcy8ke3JlbW90ZX0vJHtvcHRzLmJhc2VSZWZ9YCxcbiAgXSk7XG59XG5cbi8vIEVtYmVkcyB0aGUgQXBwIGluc3RhbGxhdGlvbiB0b2tlbiBpbiB0aGUgcmVtb3RlIFVSTCAodGhlIHJldmlldyBjaGVja291dFxuLy8gcnVucyB3aXRoIGBwZXJzaXN0LWNyZWRlbnRpYWxzOiBmYWxzZWAsIHNvIHRoZSBhZ2VudCBoYXMgbm8gdXNhYmxlIGdpdFxuLy8gY3JlZGVudGlhbCkgYW5kIHRoZW4gZmV0Y2hlcyB0aGUgYmFzZSByZWYuIE1pcnJvcnMgcHJlcGFyZUltcGxDaGVja291dCdzXG4vLyBzZXQtdXJsLXRoZW4tZmV0Y2ggc2hhcGUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVJldmlld0Jhc2UoXG4gIG9wdHM6IFByZXBhcmVSZXZpZXdCYXNlT3B0cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZW1vdGUgPSBvcHRzLnJlbW90ZSA/PyBcIm9yaWdpblwiO1xuICBhd2FpdCBzZXRSZW1vdGVXaXRoVG9rZW4ob3B0cy5jd2QsIHJlbW90ZSwgb3B0cy5vd25lciwgb3B0cy5yZXBvLCBvcHRzLnRva2VuKTtcbiAgYXdhaXQgZmV0Y2hSZXZpZXdCYXNlKHsgY3dkOiBvcHRzLmN3ZCwgYmFzZVJlZjogb3B0cy5iYXNlUmVmLCByZW1vdGUgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tvdXRJbXBsQnJhbmNoT3B0cyB7XG4gIGN3ZDogc3RyaW5nO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIHJldmlzaW9uTW9kZTogYm9vbGVhbjtcbiAgcmVtb3RlPzogc3RyaW5nO1xufVxuXG4vLyBUaGUgYnJhbmNoLWNyZWF0aW9uIGhhbGYgb2YgcHJlcGFyZUltcGxDaGVja291dC4gU2VwYXJhdGVkIGZyb20gdGhlIFVSTFxuLy8gcmV3cml0aW5nIHNvIHRlc3RzIGNhbiBkcml2ZSBpdCBhZ2FpbnN0IGEgbG9jYWwgZmlsZS1zeXN0ZW0gcmVtb3RlXG4vLyB3aXRob3V0IGZ1bm5lbGluZyB0aHJvdWdoIGh0dHBzOi8veC1hY2Nlc3MtdG9rZW4gVVJMcy5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja291dEltcGxCcmFuY2goXG4gIG9wdHM6IENoZWNrb3V0SW1wbEJyYW5jaE9wdHMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVtb3RlID0gb3B0cy5yZW1vdGUgPz8gXCJvcmlnaW5cIjtcbiAgaWYgKG9wdHMucmV2aXNpb25Nb2RlKSB7XG4gICAgYXdhaXQgcnVuR2l0KG9wdHMuY3dkLCBbXCJmZXRjaFwiLCByZW1vdGUsIG9wdHMuYnJhbmNoTmFtZV0pO1xuICAgIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY2hlY2tvdXRcIiwgXCItQlwiLCBvcHRzLmJyYW5jaE5hbWUsIFwiRkVUQ0hfSEVBRFwiXSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEZpcnN0IHJ1bi4gYWN0aW9ucy9jaGVja291dCBsZWZ0IEhFQUQgYXQgdGhlIGRlZmF1bHQgYnJhbmNoIHRpcCwgd2hpY2ggaXNcbiAgLy8gZXhhY3RseSB3aGVyZSB0aGUgaW1wbCBicmFuY2ggc2hvdWxkIGRpdmVyZ2UgZnJvbS4gYGNoZWNrb3V0IC1CYCByZXVzZXNcbiAgLy8gdGhlIGJyYW5jaCBpZiBhIHByaW9yIGZhaWxlZCBydW4gbGVmdCBvbmUgYmVoaW5kIGxvY2FsbHksIHNvIHJlLXJ1bnMgYXJlXG4gIC8vIGlkZW1wb3RlbnQuXG4gIGF3YWl0IHJ1bkdpdChvcHRzLmN3ZCwgW1wiY2hlY2tvdXRcIiwgXCItQlwiLCBvcHRzLmJyYW5jaE5hbWVdKTtcbn1cblxuZnVuY3Rpb24gcnVuR2l0KGN3ZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oXCJnaXRcIiwgYXJncywge1xuICAgICAgY3dkLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCJdLFxuICAgIH0pO1xuICAgIGxldCBzdGRlcnIgPSBcIlwiO1xuICAgIGNoaWxkLnN0ZGVyci5vbihcImRhdGFcIiwgKGQ6IEJ1ZmZlcikgPT4ge1xuICAgICAgc3RkZXJyICs9IGQudG9TdHJpbmcoKTtcbiAgICB9KTtcbiAgICBjaGlsZC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgY2hpbGQub24oXCJleGl0XCIsIChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTdHJpcCBhbnkgbGVha2VkIHRva2VuIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgYmVmb3JlIGJ1YmJsaW5nLlxuICAgICAgICBjb25zdCBjbGVhbmVkID0gc3RkZXJyLnJlcGxhY2UoXG4gICAgICAgICAgL3gtYWNjZXNzLXRva2VuOlteQF0rQC9nLFxuICAgICAgICAgIFwieC1hY2Nlc3MtdG9rZW46KioqQFwiLFxuICAgICAgICApO1xuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYGdpdCAke2FyZ3Muam9pbihcIiBcIil9IGZhaWxlZCAoJHtjb2RlfSk6ICR7Y2xlYW5lZC50cmltKCl9YCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVBcHBBdXRoIH0gZnJvbSBcIkBvY3Rva2l0L2F1dGgtYXBwXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L3Jlc3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNaW50QXJncyB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgb3duZXI6IHN0cmluZztcbiAgcmVwbzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgaW5zdGFsbGF0aW9uIGlkLiBXaGVuIG9taXR0ZWQgYW5kIGF1dGhGYWN0b3J5IGlzIHByb3ZpZGVkLCBhXG4gICAqICBzZW50aW5lbCB2YWx1ZSBvZiAwIGlzIHVzZWQgKHRoZSBtb2NrIGlnbm9yZXMgaXQpLiBGb3IgcmVhbCBjYWxsZXJzLFxuICAgKiAgc3VwcGx5IHRoaXMgZXhwbGljaXRseTsgcmVzb2x2ZUluc3RhbGxhdGlvbklkIHdpbGwgdGhyb3cgb3RoZXJ3aXNlLiAqL1xuICBpbnN0YWxsYXRpb25JZD86IG51bWJlcjtcbiAgLyoqIEluamVjdCBmb3IgdGVzdHMgKi9cbiAgYXV0aEZhY3Rvcnk/OiAob3B0czoge1xuICAgIGFwcElkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICB9KSA9PiAocmVxOiB7XG4gICAgdHlwZTogXCJpbnN0YWxsYXRpb25cIjtcbiAgICBpbnN0YWxsYXRpb25JZDogbnVtYmVyO1xuICB9KSA9PiBQcm9taXNlPHsgdG9rZW46IHN0cmluZzsgZXhwaXJlc0F0OiBzdHJpbmcgfT47XG4gIC8qKiBSZWZyZXNoIHRva2VucyB0aGF0IGV4cGlyZSB3aXRoaW4gdGhpcyBtYXJnaW4uIERlZmF1bHQgNSBtaW51dGVzLiAqL1xuICBleHBpcnlNYXJnaW5Ncz86IG51bWJlcjtcbn1cblxudHlwZSBDYWNoZUVudHJ5ID0geyB0b2tlbjogc3RyaW5nOyBleHBpcmVzQXQ6IG51bWJlciB9O1xuY29uc3QgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzZXRUb2tlbkNhY2hlKCk6IHZvaWQge1xuICBjYWNoZS5jbGVhcigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWludEluc3RhbGxhdGlvblRva2VuKGFyZ3M6IE1pbnRBcmdzKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgbWFyZ2luID0gYXJncy5leHBpcnlNYXJnaW5NcyA/PyA1ICogNjBfMDAwO1xuICBjb25zdCBrZXkgPSBgJHthcmdzLmNsaWVudElkfXwke2FyZ3Mub3duZXJ9LyR7YXJncy5yZXBvfWA7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChrZXkpO1xuICBpZiAoY2FjaGVkICYmIGNhY2hlZC5leHBpcmVzQXQgLSBEYXRlLm5vdygpID4gbWFyZ2luKSByZXR1cm4gY2FjaGVkLnRva2VuO1xuXG4gIGNvbnN0IGF1dGhGbiA9IGFyZ3MuYXV0aEZhY3RvcnlcbiAgICA/IGFyZ3MuYXV0aEZhY3RvcnkoeyBhcHBJZDogYXJncy5jbGllbnRJZCwgcHJpdmF0ZUtleTogYXJncy5wcml2YXRlS2V5IH0pXG4gICAgOiBjcmVhdGVBcHBBdXRoKHsgYXBwSWQ6IGFyZ3MuY2xpZW50SWQsIHByaXZhdGVLZXk6IGFyZ3MucHJpdmF0ZUtleSB9KTtcblxuICAvLyBXaGVuIGF1dGhGYWN0b3J5IGlzIGluamVjdGVkICh0ZXN0cyksIHRoZSBtb2NrIGRvZXMgbm90IHZhbGlkYXRlXG4gIC8vIGluc3RhbGxhdGlvbklkLCBzbyB3ZSBmYWxsIGJhY2sgdG8gMCByYXRoZXIgdGhhbiBjYWxsaW5nIHRoZSB0aHJvd2luZ1xuICAvLyBzdHViLiBSZWFsIGNhbGxlcnMgbXVzdCBzdXBwbHkgaW5zdGFsbGF0aW9uSWQgZXhwbGljaXRseSB1bnRpbCBQbGFuIDNcbiAgLy8gd2lyZXMgcmVzb2x2ZUluc3RhbGxhdGlvbklkIGZyb20gdGhlIEFjdGlvbnMgZXZlbnQgcGF5bG9hZC5cbiAgY29uc3QgaW5zdGFsbGF0aW9uSWQgPVxuICAgIGFyZ3MuaW5zdGFsbGF0aW9uSWQgPz9cbiAgICAoYXJncy5hdXRoRmFjdG9yeSA/IDAgOiBhd2FpdCByZXNvbHZlSW5zdGFsbGF0aW9uSWQoYXJncykpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF1dGhGbih7IHR5cGU6IFwiaW5zdGFsbGF0aW9uXCIsIGluc3RhbGxhdGlvbklkIH0pO1xuICBjYWNoZS5zZXQoa2V5LCB7XG4gICAgdG9rZW46IHJlc3VsdC50b2tlbixcbiAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKHJlc3VsdC5leHBpcmVzQXQpLmdldFRpbWUoKSxcbiAgfSk7XG4gIHJldHVybiByZXN1bHQudG9rZW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVJbnN0YWxsYXRpb25JZChhcmdzOiBNaW50QXJncyk6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBkaXNjb3Zlckluc3RhbGxhdGlvbklkKHtcbiAgICBjbGllbnRJZDogYXJncy5jbGllbnRJZCxcbiAgICBwcml2YXRlS2V5OiBhcmdzLnByaXZhdGVLZXksXG4gICAgb3duZXI6IGFyZ3Mub3duZXIsXG4gICAgcmVwbzogYXJncy5yZXBvLFxuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNjb3Zlckluc3RhbGxhdGlvbklkQXJncyB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgb3duZXI6IHN0cmluZztcbiAgcmVwbzogc3RyaW5nO1xufVxuXG4vLyBNaW50cyBhIHNob3J0LWxpdmVkIEpXVCBmb3IgdGhlIEFwcCwgdGhlbiBxdWVyaWVzIHRoZSBpbnN0YWxsYXRpb24gdGhhdFxuLy8gY292ZXJzIG93bmVyL3JlcG8uIENhbGxlZCBvbmNlIHBlciBwcm9jZXNzIGF0IHN0YXJ0dXA7IHRoZSByZXN1bHRpbmcgaWQgaXNcbi8vIGhhbmRlZCB0byBPY3Rva2l0J3MgYXV0aC1hcHAgc3RyYXRlZ3ksIHdoaWNoIGtlZXBzIHJlZnJlc2hpbmcgdGhlXG4vLyBpbnN0YWxsYXRpb24gdG9rZW4gdHJhbnNwYXJlbnRseSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBydW4uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGlzY292ZXJJbnN0YWxsYXRpb25JZChcbiAgYXJnczogRGlzY292ZXJJbnN0YWxsYXRpb25JZEFyZ3MsXG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBhdXRoRm4gPSBjcmVhdGVBcHBBdXRoKHtcbiAgICBhcHBJZDogYXJncy5jbGllbnRJZCxcbiAgICBwcml2YXRlS2V5OiBhcmdzLnByaXZhdGVLZXksXG4gIH0pO1xuICBjb25zdCB7IHRva2VuOiBqd3QgfSA9IGF3YWl0IGF1dGhGbih7IHR5cGU6IFwiYXBwXCIgfSk7XG4gIGNvbnN0IHByb2JlID0gbmV3IE9jdG9raXQoeyBhdXRoOiBqd3QgfSk7XG4gIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgcHJvYmUucmVzdC5hcHBzLmdldFJlcG9JbnN0YWxsYXRpb24oe1xuICAgIG93bmVyOiBhcmdzLm93bmVyLFxuICAgIHJlcG86IGFyZ3MucmVwbyxcbiAgfSk7XG4gIHJldHVybiBkYXRhLmlkO1xufVxuXG4vLyBBdXRoU3BlYyBkZXNjcmliZXMgdGhlIHJlc29sdmVkIGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWd5IGhhbmRlZCB0byBPY3Rva2l0LlxuLy8gYGFwcGAgbGV0cyBPY3Rva2l0J3MgYXV0aC1hcHAgc3RyYXRlZ3kgbWludCBpbnN0YWxsYXRpb24gdG9rZW5zIG9uIGRlbWFuZFxuLy8gYW5kIHJlZnJlc2ggdGhlbSBiZWZvcmUgZXhwaXJ5IFx1MjAxNCByZXF1aXJlZCBmb3Igc3RhZ2VzIHRoYXQgbWF5IG91dHJ1biB0aGVcbi8vIG9uZS1ob3VyIGluc3RhbGxhdGlvbiB0b2tlbiBUVEwuIGB0b2tlbmAgaXMgYSBzdGF0aWMgYmVhcmVyIChhIHByZW1pbnRlZFxuLy8gaW5zdGFsbGF0aW9uIHRva2VuIG9yIHRoZSB3b3JrZmxvdydzIEdJVEhVQl9UT0tFTiBmYWxsYmFjaykuXG5leHBvcnQgdHlwZSBBdXRoU3BlYyA9XG4gIHwgeyBraW5kOiBcInRva2VuXCI7IHRva2VuOiBzdHJpbmc7IHNvdXJjZTogXCJwcmVtaW50ZWRcIiB8IFwiZ2l0aHViX3Rva2VuXCIgfVxuICB8IHtcbiAgICAgIGtpbmQ6IFwiYXBwXCI7XG4gICAgICBjbGllbnRJZDogc3RyaW5nO1xuICAgICAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICAgICAgaW5zdGFsbGF0aW9uSWQ6IG51bWJlcjtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVBdXRoSW5wdXRzIHtcbiAgcHJlbWludGVkPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBwPzogeyBjbGllbnRJZDogc3RyaW5nOyBwcml2YXRlS2V5OiBzdHJpbmcgfSB8IG51bGw7XG4gIGZhbGxiYWNrVG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG59XG5cbi8vIFBpY2tzIHRoZSBzdHJvbmdlc3QgYXV0aCBhdmFpbGFibGUuIE9yZGVyOiBwcmVtaW50ZWQgdG9rZW4sIEFwcCBjcmVkZW50aWFsc1xuLy8gKGluLXByb2Nlc3MgbWludGluZyB3aXRoIHJlZnJlc2gpLCBHSVRIVUJfVE9LRU4gZmFsbGJhY2suIFJldHVybnMgbnVsbCB3aGVuXG4vLyBubyBzb3VyY2UgaXMgY29uZmlndXJlZDsgY2FsbGVycyBkZWNpZGUgd2hldGhlciB0aGF0J3MgZmF0YWwuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUF1dGgoXG4gIGlucHV0OiBSZXNvbHZlQXV0aElucHV0cyxcbik6IFByb21pc2U8QXV0aFNwZWMgfCBudWxsPiB7XG4gIGlmIChpbnB1dC5wcmVtaW50ZWQpIHtcbiAgICByZXR1cm4geyBraW5kOiBcInRva2VuXCIsIHRva2VuOiBpbnB1dC5wcmVtaW50ZWQsIHNvdXJjZTogXCJwcmVtaW50ZWRcIiB9O1xuICB9XG4gIGlmIChpbnB1dC5hcHApIHtcbiAgICBjb25zdCBpbnN0YWxsYXRpb25JZCA9IGF3YWl0IGRpc2NvdmVySW5zdGFsbGF0aW9uSWQoe1xuICAgICAgY2xpZW50SWQ6IGlucHV0LmFwcC5jbGllbnRJZCxcbiAgICAgIHByaXZhdGVLZXk6IGlucHV0LmFwcC5wcml2YXRlS2V5LFxuICAgICAgb3duZXI6IGlucHV0Lm93bmVyLFxuICAgICAgcmVwbzogaW5wdXQucmVwbyxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogXCJhcHBcIixcbiAgICAgIGNsaWVudElkOiBpbnB1dC5hcHAuY2xpZW50SWQsXG4gICAgICBwcml2YXRlS2V5OiBpbnB1dC5hcHAucHJpdmF0ZUtleSxcbiAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgIH07XG4gIH1cbiAgaWYgKGlucHV0LmZhbGxiYWNrVG9rZW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogXCJ0b2tlblwiLFxuICAgICAgdG9rZW46IGlucHV0LmZhbGxiYWNrVG9rZW4sXG4gICAgICBzb3VyY2U6IFwiZ2l0aHViX3Rva2VuXCIsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlIH0gZnJvbSBcIi4vbGFiZWxzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJNZXRhZGF0YSB7XG4gIGlzc3VlTnVtYmVyOiBudW1iZXI7XG4gIHN0YWdlOiBTdGFnZTtcbiAgcmV2aWV3SXRlcmF0aW9uOiBudW1iZXI7XG4gIHJldmlld0Vycm9yQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJc3N1ZU1ldGFkYXRhIHtcbiAgc2x1Zz86IHN0cmluZztcbiAgc3BlY1BhdGg/OiBzdHJpbmc7XG4gIHBsYW5QYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQnJhbmNoUmVmIHtcbiAgc3RhZ2U6IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBcImltcGxcIjtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgc2x1Zzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQck1ldGFkYXRhKFxuICBib2R5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUHJNZXRhZGF0YSB8IG51bGwge1xuICBpZiAoIWJvZHkpIHJldHVybiBudWxsO1xuICBjb25zdCBpc3N1ZU1hdGNoID0gYm9keS5tYXRjaCgvU2hvcGZsb29yLUlzc3VlOlxccyojKFxcZCspLyk7XG4gIGNvbnN0IHN0YWdlTWF0Y2ggPSBib2R5Lm1hdGNoKFxuICAgIC9TaG9wZmxvb3ItU3RhZ2U6XFxzKihzcGVjfHBsYW58aW1wbGVtZW50fHJldmlldykvLFxuICApO1xuICBjb25zdCBpdGVyTWF0Y2ggPSBib2R5Lm1hdGNoKC9TaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjpcXHMqKFxcZCspLyk7XG4gIGNvbnN0IGVyck1hdGNoID0gYm9keS5tYXRjaCgvU2hvcGZsb29yLVJldmlldy1FcnJvci1Db3VudDpcXHMqKFxcZCspLyk7XG4gIGlmICghaXNzdWVNYXRjaCB8fCAhc3RhZ2VNYXRjaCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7XG4gICAgaXNzdWVOdW1iZXI6IE51bWJlcihpc3N1ZU1hdGNoWzFdKSxcbiAgICBzdGFnZTogc3RhZ2VNYXRjaFsxXSBhcyBFeGNsdWRlPFN0YWdlLCBcInRyaWFnZVwiPixcbiAgICByZXZpZXdJdGVyYXRpb246IGl0ZXJNYXRjaCA/IE51bWJlcihpdGVyTWF0Y2hbMV0pIDogMCxcbiAgICByZXZpZXdFcnJvckNvdW50OiBlcnJNYXRjaCA/IE51bWJlcihlcnJNYXRjaFsxXSkgOiAwLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhbmNoU2x1Zyh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2x1ZyA9IHRpdGxlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIiBcIilcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAuZmlsdGVyKCh3KSA9PiB3Lmxlbmd0aCA+IDApXG4gICAgLnNsaWNlKDAsIDUpXG4gICAgLmpvaW4oXCItXCIpXG4gICAgLnNsaWNlKDAsIDQwKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csIFwiXCIpO1xuICByZXR1cm4gc2x1Zy5sZW5ndGggPiAwID8gc2x1ZyA6IFwiaXNzdWVcIjtcbn1cblxuLy8gQ2Fub25pY2FsIHN0YWdlLWJyYW5jaCBzaGFwZSBmb3Igc3BlYywgcGxhbiwgYW5kIGltcGwgYnJhbmNoZXM6XG4vLyBgc2hvcGZsb29yLzxzdGFnZT4vPGlzc3VlTnVtYmVyPi08c2x1Zz5gLiBSZXR1cm5zIG51bGwgZm9yIG1hbGZvcm1lZCByZWZzIHNvXG4vLyByZXZpc2lvbi1tb2RlIGNhbGxlcnMgY2FuIGZhaWwgY2xvc2VkLiBUaGUgc3RhZ2UgaXMgYXV0by1kZXRlY3RlZCBmcm9tIHRoZVxuLy8gYnJhbmNoIHByZWZpeCwgc28gY2FsbGVycyBzd2l0Y2ggb24gdGhlIHJldHVybmVkIGAuc3RhZ2VgIGZpZWxkIHJhdGhlciB0aGFuXG4vLyBwYXNzaW5nIGEga2luZCBhcmd1bWVudC5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0YWdlQnJhbmNoUmVmKHJlZjogc3RyaW5nKTogU3RhZ2VCcmFuY2hSZWYgfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSByZWYubWF0Y2goL15zaG9wZmxvb3JcXC8oc3BlY3xwbGFufGltcGwpXFwvKFxcZCspLSguKykkLyk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFnZVJhdyA9IG1hdGNoWzFdO1xuICBjb25zdCBpc3N1ZVJhdyA9IG1hdGNoWzJdO1xuICBjb25zdCBzbHVnID0gbWF0Y2hbM107XG4gIGlmICghc3RhZ2VSYXcgfHwgIWlzc3VlUmF3IHx8ICFzbHVnKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhZ2UgPSBzdGFnZVJhdyBhcyBTdGFnZUJyYW5jaFJlZltcInN0YWdlXCJdO1xuICBjb25zdCBpc3N1ZU51bWJlciA9IE51bWJlcihpc3N1ZVJhdyk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGlzc3VlTnVtYmVyKSB8fCBzbHVnLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7IHN0YWdlLCBpc3N1ZU51bWJlciwgc2x1ZyB9O1xufVxuXG4vLyBUaGUgbWV0YWRhdGEgYmxvY2sgaXMgYSBzaW5nbGUgSFRNTCBjb21tZW50IGFwcGVuZGVkIGJ5IHRoZSB0cmlhZ2UgaGVscGVyLlxuLy8gSFRNTCBjb21tZW50cyBkb24ndCByZW5kZXIgaW4gR2l0SHViJ3Mgd2ViIFVJLCBzbyB1c2VycyBzZWUgdGhlIGJsb2NrIG9ubHlcbi8vIGlmIHRoZXkgZWRpdCB0aGUgaXNzdWUuIFRoZSBibG9jaydzIHNjaGVtYSBpcyBvcGVuOiBleHRyYSBrZXlzIGFyZSBpZ25vcmVkXG4vLyBzbyBuZXcgbWV0YWRhdGEgY2FuIGJlIGFkZGVkIGxhdGVyIHdpdGhvdXQgYnJlYWtpbmcgdGhpcyBwYXJzZXIuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJc3N1ZU1ldGFkYXRhKFxuICBib2R5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogSXNzdWVNZXRhZGF0YSB8IG51bGwge1xuICBpZiAoIWJvZHkpIHJldHVybiBudWxsO1xuICBjb25zdCBibG9ja01hdGNoID0gYm9keS5tYXRjaCgvPCEtLVxccypzaG9wZmxvb3I6bWV0YWRhdGFcXHMqKFtcXHNcXFNdKj8pLS0+Lyk7XG4gIGlmICghYmxvY2tNYXRjaCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGJsb2NrID0gYmxvY2tNYXRjaFsxXTtcbiAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG1ldGFkYXRhOiBJc3N1ZU1ldGFkYXRhID0ge307XG4gIGNvbnN0IHNsdWdNYXRjaCA9IGJsb2NrLm1hdGNoKC9eXFxzKlNob3BmbG9vci1TbHVnOlxccyooXFxTKylcXHMqJC9tKTtcbiAgY29uc3Qgc2x1Z1ZhbCA9IHNsdWdNYXRjaD8uWzFdO1xuICBpZiAoc2x1Z1ZhbCkgbWV0YWRhdGEuc2x1ZyA9IHNsdWdWYWw7XG4gIGNvbnN0IHNwZWNQYXRoTWF0Y2ggPSBibG9jay5tYXRjaCgvXlxccypTaG9wZmxvb3ItU3BlYy1QYXRoOlxccyooXFxTKylcXHMqJC9tKTtcbiAgY29uc3Qgc3BlY1BhdGhWYWwgPSBzcGVjUGF0aE1hdGNoPy5bMV07XG4gIGlmIChzcGVjUGF0aFZhbCkgbWV0YWRhdGEuc3BlY1BhdGggPSBzcGVjUGF0aFZhbDtcbiAgY29uc3QgcGxhblBhdGhNYXRjaCA9IGJsb2NrLm1hdGNoKC9eXFxzKlNob3BmbG9vci1QbGFuLVBhdGg6XFxzKihcXFMrKVxccyokL20pO1xuICBjb25zdCBwbGFuUGF0aFZhbCA9IHBsYW5QYXRoTWF0Y2g/LlsxXTtcbiAgaWYgKHBsYW5QYXRoVmFsKSBtZXRhZGF0YS5wbGFuUGF0aCA9IHBsYW5QYXRoVmFsO1xuICByZXR1cm4gbWV0YWRhdGE7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBdWRpdEVtaXR0ZXIgfSBmcm9tIFwiLi4vYXVkaXQvZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUlzc3VlTWV0YWRhdGEgfSBmcm9tIFwiLi4vc3RhdGUvbWV0YWRhdGEuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPY3Rva2l0TGlrZSB7XG4gIHJlc3Q6IHtcbiAgICBpc3N1ZXM6IHtcbiAgICAgIGFkZExhYmVscyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBpc3N1ZV9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgICAgIH0pOiBQcm9taXNlPHVua25vd24+O1xuICAgICAgcmVtb3ZlTGFiZWwocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIH0pOiBQcm9taXNlPHVua25vd24+O1xuICAgICAgY3JlYXRlQ29tbWVudChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBpc3N1ZV9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgYm9keTogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiB7IGlkOiBudW1iZXIgfSB9PjtcbiAgICAgIHVwZGF0ZUNvbW1lbnQocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgY29tbWVudF9pZDogbnVtYmVyO1xuICAgICAgICBib2R5OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGNyZWF0ZUxhYmVsKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sb3I6IHN0cmluZztcbiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGxpc3RMYWJlbHNGb3JSZXBvKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHBlcl9wYWdlPzogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiBBcnJheTx7IG5hbWU6IHN0cmluZyB9PiB9PjtcbiAgICAgIHVwZGF0ZShwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBpc3N1ZV9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgc3RhdGU/OiBcIm9wZW5cIiB8IFwiY2xvc2VkXCI7XG4gICAgICAgIGJvZHk/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGdldChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBpc3N1ZV9udW1iZXI6IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGxhYmVsczogdW5rbm93bjtcbiAgICAgICAgICBzdGF0ZTogc3RyaW5nO1xuICAgICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfT47XG4gICAgICBsaXN0Q29tbWVudHMocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIHBlcl9wYWdlPzogbnVtYmVyO1xuICAgICAgICBwYWdlPzogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICBkYXRhOiBBcnJheTx7XG4gICAgICAgICAgdXNlcjogdW5rbm93bjtcbiAgICAgICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICAgICAgYm9keTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfT47XG4gICAgICB9PjtcbiAgICB9O1xuICAgIHB1bGxzOiB7XG4gICAgICBjcmVhdGUocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgYmFzZTogc3RyaW5nO1xuICAgICAgICBoZWFkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGJvZHk6IHN0cmluZztcbiAgICAgICAgZHJhZnQ/OiBib29sZWFuO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiB7IG51bWJlcjogbnVtYmVyOyBodG1sX3VybDogc3RyaW5nIH0gfT47XG4gICAgICBsaXN0KHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIGhlYWQ/OiBzdHJpbmc7XG4gICAgICAgIHN0YXRlPzogXCJvcGVuXCIgfCBcImNsb3NlZFwiIHwgXCJhbGxcIjtcbiAgICAgICAgcGVyX3BhZ2U/OiBudW1iZXI7XG4gICAgICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgICB9KTogUHJvbWlzZTx7XG4gICAgICAgIGRhdGE6IEFycmF5PHtcbiAgICAgICAgICBudW1iZXI6IG51bWJlcjtcbiAgICAgICAgICBodG1sX3VybDogc3RyaW5nO1xuICAgICAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGhlYWQ/OiB7IHJlZjogc3RyaW5nIH07XG4gICAgICAgIH0+O1xuICAgICAgfT47XG4gICAgICB1cGRhdGUocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcHVsbF9udW1iZXI6IG51bWJlcjtcbiAgICAgICAgYm9keT86IHN0cmluZztcbiAgICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGdldChwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwdWxsX251bWJlcjogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiB7IG5vZGVfaWQ/OiBzdHJpbmcgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+O1xuICAgICAgbGlzdEZpbGVzKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHB1bGxfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIHBlcl9wYWdlPzogbnVtYmVyO1xuICAgICAgICBwYWdlPzogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICBkYXRhOiBBcnJheTx7XG4gICAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgICAgICBwYXRjaD86IHN0cmluZztcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfT47XG4gICAgICB9PjtcbiAgICAgIGNyZWF0ZVJldmlldyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwdWxsX251bWJlcjogbnVtYmVyO1xuICAgICAgICBjb21taXRfaWQ/OiBzdHJpbmc7XG4gICAgICAgIGV2ZW50OiBcIkFQUFJPVkVcIiB8IFwiUkVRVUVTVF9DSEFOR0VTXCIgfCBcIkNPTU1FTlRcIjtcbiAgICAgICAgYm9keTogc3RyaW5nO1xuICAgICAgICBjb21tZW50cz86IEFycmF5PHVua25vd24+O1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgICBsaXN0UmV2aWV3cyhwYXJhbXM6IHtcbiAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgICBwdWxsX251bWJlcjogbnVtYmVyO1xuICAgICAgICBwZXJfcGFnZT86IG51bWJlcjtcbiAgICAgIH0pOiBQcm9taXNlPHtcbiAgICAgICAgZGF0YTogQXJyYXk8e1xuICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgdXNlcjogdW5rbm93bjtcbiAgICAgICAgICBib2R5OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGNvbW1pdF9pZDogc3RyaW5nO1xuICAgICAgICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgICAgICAgc3VibWl0dGVkX2F0OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9PjtcbiAgICAgIH0+O1xuICAgICAgbGlzdFJldmlld0NvbW1lbnRzKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHB1bGxfbnVtYmVyOiBudW1iZXI7XG4gICAgICAgIHBlcl9wYWdlPzogbnVtYmVyO1xuICAgICAgICBwYWdlPzogbnVtYmVyO1xuICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICBkYXRhOiBBcnJheTx7XG4gICAgICAgICAgaWQ6IG51bWJlcjtcbiAgICAgICAgICBwdWxsX3JlcXVlc3RfcmV2aWV3X2lkOiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICBsaW5lOiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIHNpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiIHwgbnVsbDtcbiAgICAgICAgICBzdGFydF9saW5lOiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIHN0YXJ0X3NpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiIHwgbnVsbDtcbiAgICAgICAgICBib2R5OiBzdHJpbmc7XG4gICAgICAgIH0+O1xuICAgICAgfT47XG4gICAgfTtcbiAgICByZXBvczoge1xuICAgICAgZ2V0KHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx7IGRhdGE6IHsgZGVmYXVsdF9icmFuY2g6IHN0cmluZyB9IH0+O1xuICAgICAgY3JlYXRlQ29tbWl0U3RhdHVzKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHNoYTogc3RyaW5nO1xuICAgICAgICBzdGF0ZTogXCJwZW5kaW5nXCIgfCBcInN1Y2Nlc3NcIiB8IFwiZmFpbHVyZVwiIHwgXCJlcnJvclwiO1xuICAgICAgICBjb250ZXh0OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIHRhcmdldF91cmw/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIGdldENvbnRlbnQocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICByZWY/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx7XG4gICAgICAgIGRhdGE6IHsgc2hhOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9IHwgQXJyYXk8dW5rbm93bj47XG4gICAgICB9PjtcbiAgICAgIGNyZWF0ZU9yVXBkYXRlRmlsZUNvbnRlbnRzKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgYnJhbmNoOiBzdHJpbmc7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgY29udGVudDogc3RyaW5nO1xuICAgICAgICBzaGE/OiBzdHJpbmc7XG4gICAgICB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgICB9O1xuICAgIGdpdDoge1xuICAgICAgZ2V0UmVmKHBhcmFtczoge1xuICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICByZXBvOiBzdHJpbmc7XG4gICAgICAgIHJlZjogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8eyBkYXRhOiB7IG9iamVjdDogeyBzaGE6IHN0cmluZyB9IH0gfT47XG4gICAgICBjcmVhdGVSZWYocGFyYW1zOiB7XG4gICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgIHJlcG86IHN0cmluZztcbiAgICAgICAgcmVmOiBzdHJpbmc7XG4gICAgICAgIHNoYTogc3RyaW5nO1xuICAgICAgfSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgfTtcbiAgfTtcbiAgZ3JhcGhxbDxUID0gdW5rbm93bj4oXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogUHJvbWlzZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvQ29udGV4dCB7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHJlcG86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuU3RhZ2VQcklucHV0IHtcbiAgYmFzZTogc3RyaW5nO1xuICBoZWFkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgc3RhZ2U6IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBcImltcGxlbWVudFwiO1xuICBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICByZXZpZXdJdGVyYXRpb24/OiBudW1iZXI7XG4gIGRyYWZ0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSBhbmQgYW4gb3BlbiBQUiBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBoZWFkIGJyYW5jaCwgcmV0dXJuIHRoZVxuICAgKiBleGlzdGluZyBQUiB3aXRob3V0IG92ZXJ3cml0aW5nIGl0cyB0aXRsZSBvciBib2R5LiBVc2VkIGZvciB0aGUgaW1wbGVtZW50XG4gICAqIHN0YWdlIHdoZXJlIHRoZSBib2R5IG1heSBhbHJlYWR5IGNvbnRhaW4gYSBTaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvblxuICAgKiBtYXJrZXIgZnJvbSBhIHJ1bm5pbmcgcmV2aWV3IGxvb3AgdGhhdCBtdXN0IG5vdCBiZSBjbG9iYmVyZWQuXG4gICAqL1xuICBwcmVzZXJ2ZUJvZHlJZkV4aXN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV2aWV3Q29tbWVudCB7XG4gIHBhdGg6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBsaW5lOiBudW1iZXI7XG4gIHNpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiO1xuICBzdGFydF9saW5lPzogbnVtYmVyO1xuICBzdGFydF9zaWRlPzogXCJMRUZUXCIgfCBcIlJJR0hUXCI7XG59XG5cbnR5cGUgUHJSZXZpZXdSb3cgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHVzZXI6IHsgbG9naW46IHN0cmluZyB9IHwgbnVsbDtcbiAgYm9keTogc3RyaW5nO1xuICBjb21taXRfaWQ6IHN0cmluZztcbiAgc3RhdGU6IHN0cmluZztcbiAgc3VibWl0dGVkX2F0OiBzdHJpbmcgfCBudWxsO1xufTtcblxudHlwZSBQclJldmlld0NvbW1lbnRSb3cgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHB1bGxfcmVxdWVzdF9yZXZpZXdfaWQ6IG51bWJlciB8IG51bGw7XG4gIHBhdGg6IHN0cmluZztcbiAgbGluZTogbnVtYmVyIHwgbnVsbDtcbiAgc2lkZTogXCJMRUZUXCIgfCBcIlJJR0hUXCIgfCBudWxsO1xuICBzdGFydF9saW5lOiBudW1iZXIgfCBudWxsO1xuICBzdGFydF9zaWRlOiBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IG51bGw7XG4gIGJvZHk6IHN0cmluZztcbn07XG5cbnR5cGUgSXNzdWVDb21tZW50Um93ID0ge1xuICB1c2VyOiB7IGxvZ2luOiBzdHJpbmcgfSB8IG51bGw7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgYm9keTogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmNvbnN0IE1FVEFEQVRBX09QRU5FUiA9IFwiPCEtLSBzaG9wZmxvb3I6bWV0YWRhdGFcIjtcbmNvbnN0IE1FVEFEQVRBX0NMT1NFUiA9IFwiLS0+XCI7XG5jb25zdCBNRVRBREFUQV9XRUxMX0ZPUk1FRCA9IC88IS0tXFxzKnNob3BmbG9vcjptZXRhZGF0YVtcXHNcXFNdKj8tLT4vO1xuY29uc3QgTUVUQURBVEFfTUFMRk9STUVEX1RBSUwgPSAvPCEtLVxccypzaG9wZmxvb3I6bWV0YWRhdGFbXFxzXFxTXSokLztcblxuZnVuY3Rpb24gcmVuZGVySXNzdWVNZXRhZGF0YUJsb2NrKGZpZWxkczoge1xuICBzbHVnPzogc3RyaW5nO1xuICBzcGVjUGF0aD86IHN0cmluZztcbiAgcGxhblBhdGg/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBbTUVUQURBVEFfT1BFTkVSXTtcbiAgaWYgKGZpZWxkcy5zbHVnICE9PSB1bmRlZmluZWQpIGxpbmVzLnB1c2goYFNob3BmbG9vci1TbHVnOiAke2ZpZWxkcy5zbHVnfWApO1xuICBpZiAoZmllbGRzLnNwZWNQYXRoICE9PSB1bmRlZmluZWQpXG4gICAgbGluZXMucHVzaChgU2hvcGZsb29yLVNwZWMtUGF0aDogJHtmaWVsZHMuc3BlY1BhdGh9YCk7XG4gIGlmIChmaWVsZHMucGxhblBhdGggIT09IHVuZGVmaW5lZClcbiAgICBsaW5lcy5wdXNoKGBTaG9wZmxvb3ItUGxhbi1QYXRoOiAke2ZpZWxkcy5wbGFuUGF0aH1gKTtcbiAgbGluZXMucHVzaChNRVRBREFUQV9DTE9TRVIpO1xuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlNZXRhZGF0YUJsb2NrKGJvZHk6IHN0cmluZyB8IG51bGwsIGJsb2NrOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYm9keSA9PT0gbnVsbCB8fCBib2R5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGJsb2NrO1xuICBpZiAoTUVUQURBVEFfV0VMTF9GT1JNRUQudGVzdChib2R5KSkge1xuICAgIHJldHVybiBib2R5LnJlcGxhY2UoTUVUQURBVEFfV0VMTF9GT1JNRUQsIGJsb2NrKTtcbiAgfVxuICBpZiAoTUVUQURBVEFfTUFMRk9STUVEX1RBSUwudGVzdChib2R5KSkge1xuICAgIHJldHVybiBib2R5LnJlcGxhY2UoTUVUQURBVEFfTUFMRk9STUVEX1RBSUwsIGJsb2NrKTtcbiAgfVxuICBjb25zdCBzZXAgPSBib2R5LmVuZHNXaXRoKFwiXFxuXCIpID8gXCJcXG5cIiA6IFwiXFxuXFxuXCI7XG4gIHJldHVybiBgJHtib2R5fSR7c2VwfSR7YmxvY2t9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEdpdEh1YkFkYXB0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9jdG9raXQ6IE9jdG9raXRMaWtlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwbzogUmVwb0NvbnRleHQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdWRpdD86IEF1ZGl0RW1pdHRlcixcbiAgKSB7fVxuXG4gIGFzeW5jIGFkZExhYmVsKGlzc3VlTnVtYmVyOiBudW1iZXIsIGxhYmVsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMuYWRkTGFiZWxzKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICBsYWJlbHM6IFtsYWJlbF0sXG4gICAgfSk7XG4gICAgdGhpcy5hdWRpdD8uKHsgdHlwZTogXCJsYWJlbF9tdXRhdGVkXCIsIGlzc3VlTnVtYmVyLCBvcDogXCJhZGRcIiwgbGFiZWwgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVMYWJlbChpc3N1ZU51bWJlcjogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5yZW1vdmVMYWJlbCh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBpc3N1ZU51bWJlcixcbiAgICAgICAgbmFtZTogbGFiZWwsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIC8vIFRoZSBsYWJlbCB3YXMgYWxyZWFkeSBhYnNlbnQuIFNraXAgdGhlIGF1ZGl0IGVudHJ5OiBubyBtdXRhdGlvblxuICAgICAgLy8gYWN0dWFsbHkgaGFwcGVuZWQsIGFuZCBlbWl0dGluZyBvbmUgd291bGQgZmFsc2VseSBpbXBseSBhIHdyaXRlLlxuICAgICAgaWYgKChlcnIgYXMgeyBzdGF0dXM/OiBudW1iZXIgfSkuc3RhdHVzID09PSA0MDQpIHJldHVybjtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgdGhpcy5hdWRpdD8uKHsgdHlwZTogXCJsYWJlbF9tdXRhdGVkXCIsIGlzc3VlTnVtYmVyLCBvcDogXCJyZW1vdmVcIiwgbGFiZWwgfSk7XG4gIH1cblxuICAvLyBCYXRjaGVzIGEgbGFiZWwgdHJhbnNpdGlvbjogcmVtb3ZlIHRoZSBsaXN0ZWQgbGFiZWxzICg0MDQtdG9sZXJhbnQgdmlhXG4gIC8vIHJlbW92ZUxhYmVsKSBhbmQgdGhlbiBhZGQgdGhlIGxpc3RlZCBsYWJlbHMuIFRoZSBvcmNoZXN0cmF0b3IgdXNlcyB0aGlzIHNvXG4gIC8vIGVhY2ggc3RhZ2UgdHJhbnNpdGlvbiBpcyBhIHNpbmdsZSBjYWxsIHNpdGUgdGhhdCBtaXJyb3JzIGEgc2luZ2xlXG4gIC8vIGxhYmVsX2FwcGxpZWQgYXVkaXQgZXZlbnQuXG4gIGFzeW5jIHJlcGxhY2VMYWJlbHMoXG4gICAgaXNzdWVOdW1iZXI6IG51bWJlcixcbiAgICBjaGFuZ2U6IHsgYWRkOiBzdHJpbmdbXTsgcmVtb3ZlOiBzdHJpbmdbXSB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGNoYW5nZS5yZW1vdmUpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIGxhYmVsKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZS5hZGQubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmFkZExhYmVscyh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgaXNzdWVfbnVtYmVyOiBpc3N1ZU51bWJlcixcbiAgICAgICAgbGFiZWxzOiBjaGFuZ2UuYWRkLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGNoYW5nZS5hZGQpIHtcbiAgICAgICAgdGhpcy5hdWRpdD8uKHsgdHlwZTogXCJsYWJlbF9tdXRhdGVkXCIsIGlzc3VlTnVtYmVyLCBvcDogXCJhZGRcIiwgbGFiZWwgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcG9zdElzc3VlQ29tbWVudChpc3N1ZU51bWJlcjogbnVtYmVyLCBib2R5OiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5jcmVhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGF0YS5pZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUNvbW1lbnQoY29tbWVudElkOiBudW1iZXIsIGJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGNvbW1lbnRfaWQ6IGNvbW1lbnRJZCxcbiAgICAgIGJvZHksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBmaW5kT3BlblByQnlIZWFkKFxuICAgIGhlYWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IG51bWJlcjogbnVtYmVyOyB1cmw6IHN0cmluZyB9IHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmxpc3Qoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgaGVhZDogYCR7dGhpcy5yZXBvLm93bmVyfToke2hlYWR9YCxcbiAgICAgIHN0YXRlOiBcIm9wZW5cIixcbiAgICAgIHBlcl9wYWdlOiAxLFxuICAgIH0pO1xuICAgIGlmICghcmVzLmRhdGEgfHwgcmVzLmRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwciA9IHJlcy5kYXRhWzBdO1xuICAgIGlmICghcHIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7IG51bWJlcjogcHIubnVtYmVyLCB1cmw6IHByLmh0bWxfdXJsIH07XG4gIH1cblxuICAvLyBHaXRIdWIncyBwdWxscy5saXN0IGBoZWFkYCBmaWx0ZXIgcmVxdWlyZXMgYW4gZXhhY3QgYDxvd25lcj46PGJyYW5jaD5gXG4gIC8vIG1hdGNoIC0tIG5vIHByZWZpeCBvciB3aWxkY2FyZCBzdXBwb3J0IC0tIGFuZCB0aGUgaXNzdWUtdW5sYWJlbCBwYXlsb2FkXG4gIC8vIG9ubHkgY2FycmllcyB0aGUgaXNzdWUgbnVtYmVyLCBub3QgdGhlIHNsdWcuIFNvIHdlIHBhZ2UgdGhyb3VnaCBvcGVuIFBSc1xuICAvLyBhbmQgZmlsdGVyIGNsaWVudC1zaWRlIG9uIHRoZSBjYW5vbmljYWwgaW1wbCBicmFuY2ggcHJlZml4LlxuICBhc3luYyBmaW5kT3BlbkltcGxQckZvcklzc3VlKFxuICAgIGlzc3VlTnVtYmVyOiBudW1iZXIsXG4gICk6IFByb21pc2U8eyBudW1iZXI6IG51bWJlcjsgYm9keTogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbD4ge1xuICAgIGNvbnN0IHByZWZpeCA9IGBzaG9wZmxvb3IvaW1wbC8ke2lzc3VlTnVtYmVyfS1gO1xuICAgIGxldCBwYWdlID0gMTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0KHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICBzdGF0ZTogXCJvcGVuXCIsXG4gICAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgICAgIHBhZ2UsXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgcHIgb2YgcmVzLmRhdGEpIHtcbiAgICAgICAgaWYgKHByLmhlYWQ/LnJlZj8uc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgcmV0dXJuIHsgbnVtYmVyOiBwci5udW1iZXIsIGJvZHk6IHByLmJvZHkgPz8gbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzLmRhdGEubGVuZ3RoIDwgMTAwKSByZXR1cm4gbnVsbDtcbiAgICAgIHBhZ2UrKztcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuU3RhZ2VQcihcbiAgICBpbnB1dDogT3BlblN0YWdlUHJJbnB1dCxcbiAgKTogUHJvbWlzZTx7IG51bWJlcjogbnVtYmVyOyB1cmw6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgbWV0YWRhdGFMaW5lczogc3RyaW5nW10gPSBbXG4gICAgICBcIlwiLFxuICAgICAgXCItLS1cIixcbiAgICAgIGBTaG9wZmxvb3ItSXNzdWU6ICMke2lucHV0Lmlzc3VlTnVtYmVyfWAsXG4gICAgICBgU2hvcGZsb29yLVN0YWdlOiAke2lucHV0LnN0YWdlfWAsXG4gICAgXTtcbiAgICBpZiAoaW5wdXQuc3RhZ2UgPT09IFwiaW1wbGVtZW50XCIpIHtcbiAgICAgIG1ldGFkYXRhTGluZXMucHVzaChcbiAgICAgICAgYFNob3BmbG9vci1SZXZpZXctSXRlcmF0aW9uOiAke2lucHV0LnJldmlld0l0ZXJhdGlvbiA/PyAwfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYCR7aW5wdXQuYm9keX1cXG4ke21ldGFkYXRhTGluZXMuam9pbihcIlxcblwiKX1cXG5gO1xuXG4gICAgLy8gVXBzZXJ0OiBpZiBhIHByZXZpb3VzIHJ1biAob3IgYW4gb3BlbiByZXZpZXcgbG9vcCkgYWxyZWFkeSBsZWZ0IGFuIG9wZW5cbiAgICAvLyBQUiBmb3IgdGhpcyBoZWFkIGJyYW5jaCwgcmV1c2UgaXQgaW5zdGVhZCBvZiBmYWlsaW5nIHdpdGggXCJBIHB1bGxcbiAgICAvLyByZXF1ZXN0IGFscmVhZHkgZXhpc3RzXCIuIEZvciBzcGVjL3BsYW4gd2UgYWxzbyByZWZyZXNoIHRoZSB0aXRsZS9ib2R5XG4gICAgLy8gc28gdGhlIFBSIHJlZmxlY3RzIHRoZSBsYXRlc3Qgc3RhZ2Ugb3V0cHV0LiBGb3IgaW1wbGVtZW50IHdlIHByZXNlcnZlXG4gICAgLy8gd2hhdGV2ZXIncyBvbiB0aGUgUFIgKHBlciBwcmVzZXJ2ZUJvZHlJZkV4aXN0cykgYmVjYXVzZSB0aGUgYm9keSBtYXlcbiAgICAvLyBjYXJyeSBhIFNob3BmbG9vci1SZXZpZXctSXRlcmF0aW9uIG1hcmtlciBmcm9tIHRoZSByZXZpZXcgZmxvdy5cbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZmluZE9wZW5QckJ5SGVhZChpbnB1dC5oZWFkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGlmICghaW5wdXQucHJlc2VydmVCb2R5SWZFeGlzdHMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMudXBkYXRlKHtcbiAgICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgICAgcHVsbF9udW1iZXI6IGV4aXN0aW5nLm51bWJlcixcbiAgICAgICAgICB0aXRsZTogaW5wdXQudGl0bGUsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMuY3JlYXRlKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGJhc2U6IGlucHV0LmJhc2UsXG4gICAgICBoZWFkOiBpbnB1dC5oZWFkLFxuICAgICAgdGl0bGU6IGlucHV0LnRpdGxlLFxuICAgICAgYm9keSxcbiAgICAgIGRyYWZ0OiBpbnB1dC5kcmFmdCA/PyBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4geyBudW1iZXI6IHJlcy5kYXRhLm51bWJlciwgdXJsOiByZXMuZGF0YS5odG1sX3VybCB9O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJCb2R5KHByTnVtYmVyOiBudW1iZXIsIGJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLnVwZGF0ZSh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHIoXG4gICAgcHJOdW1iZXI6IG51bWJlcixcbiAgICBmaWVsZHM6IHsgdGl0bGU/OiBzdHJpbmc7IGJvZHk/OiBzdHJpbmcgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMudXBkYXRlKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICAgIC4uLmZpZWxkcyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHBvc3RSZXZpZXcocGFyYW1zOiB7XG4gICAgcHJOdW1iZXI6IG51bWJlcjtcbiAgICBjb21taXRTaGE6IHN0cmluZztcbiAgICBldmVudDogXCJBUFBST1ZFXCIgfCBcIlJFUVVFU1RfQ0hBTkdFU1wiIHwgXCJDT01NRU5UXCI7XG4gICAgYm9keTogc3RyaW5nO1xuICAgIGNvbW1lbnRzOiBSZXZpZXdDb21tZW50W107XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5jcmVhdGVSZXZpZXcoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgcHVsbF9udW1iZXI6IHBhcmFtcy5wck51bWJlcixcbiAgICAgIGNvbW1pdF9pZDogcGFyYW1zLmNvbW1pdFNoYSxcbiAgICAgIGV2ZW50OiBwYXJhbXMuZXZlbnQsXG4gICAgICBib2R5OiBwYXJhbXMuYm9keSxcbiAgICAgIGNvbW1lbnRzOiBwYXJhbXMuY29tbWVudHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRSZXZpZXdTdGF0dXMoXG4gICAgc2hhOiBzdHJpbmcsXG4gICAgc3RhdGU6IFwicGVuZGluZ1wiIHwgXCJzdWNjZXNzXCIgfCBcImZhaWx1cmVcIiB8IFwiZXJyb3JcIixcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHRhcmdldFVybD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucmVwb3MuY3JlYXRlQ29tbWl0U3RhdHVzKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHNoYSxcbiAgICAgIHN0YXRlLFxuICAgICAgY29udGV4dDogXCJzaG9wZmxvb3IvcmV2aWV3XCIsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24uc2xpY2UoMCwgMTQwKSxcbiAgICAgIC4uLih0YXJnZXRVcmwgIT09IHVuZGVmaW5lZCA/IHsgdGFyZ2V0X3VybDogdGFyZ2V0VXJsIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0UmVwb0xhYmVscygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmxpc3RMYWJlbHNGb3JSZXBvKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy5kYXRhLm1hcCgobCkgPT4gbC5uYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUxhYmVsKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb2xvcjogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmNyZWF0ZUxhYmVsKHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjb2xvcixcbiAgICAgICAgLi4uKGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgPyB7IGRlc2NyaXB0aW9uIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmICgoZXJyIGFzIHsgc3RhdHVzPzogbnVtYmVyIH0pLnN0YXR1cyA9PT0gNDIyKSByZXR1cm47XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLy8gTGlzdCB0aGUgcmVwbydzIGV4aXN0aW5nIGxhYmVscyBvbmNlIGFuZCBjcmVhdGUgYW55IGZyb20gYGRlZnNgIHRoYXQgYXJlXG4gIC8vIG1pc3NpbmcuIElkZW1wb3RlbnQ6IGV4aXN0aW5nIGxhYmVscyBhcmUgbGVmdCBhbG9uZSAoY29sb3JzIC8gZGVzY3JpcHRpb25zXG4gIC8vIG9uIGEgbGFiZWwgYWxyZWFkeSBwcm92aXNpb25lZCBieSBhbiBlYXJsaWVyIHJ1biAtLSBvciBoYW5kLWVkaXRlZCBieSBhXG4gIC8vIG1haW50YWluZXIgLS0gYXJlIG5vdCBvdmVyd3JpdHRlbikuXG4gIGFzeW5jIGJvb3RzdHJhcExhYmVscyhcbiAgICBkZWZzOiBSZWFkb25seUFycmF5PHsgbmFtZTogc3RyaW5nOyBjb2xvcjogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+LFxuICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KGF3YWl0IHRoaXMubGlzdFJlcG9MYWJlbHMoKSk7XG4gICAgY29uc3QgY3JlYXRlZDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRlZiBvZiBkZWZzKSB7XG4gICAgICBpZiAoZXhpc3RpbmcuaGFzKGRlZi5uYW1lKSkgY29udGludWU7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUxhYmVsKGRlZi5uYW1lLCBkZWYuY29sb3IsIGRlZi5kZXNjcmlwdGlvbik7XG4gICAgICBjcmVhdGVkLnB1c2goZGVmLm5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlSXNzdWUoaXNzdWVOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGUoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgaXNzdWVfbnVtYmVyOiBpc3N1ZU51bWJlcixcbiAgICAgIHN0YXRlOiBcImNsb3NlZFwiLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UHIocHJOdW1iZXI6IG51bWJlcik6IFByb21pc2U8e1xuICAgIHN0YXRlOiBcIm9wZW5cIiB8IFwiY2xvc2VkXCI7XG4gICAgZHJhZnQ6IGJvb2xlYW47XG4gICAgbWVyZ2VkOiBib29sZWFuO1xuICAgIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG4gICAgaGVhZDogeyBzaGE6IHN0cmluZyB9O1xuICAgIGJhc2U6IHsgcmVmOiBzdHJpbmcgfTtcbiAgICBib2R5OiBzdHJpbmcgfCBudWxsO1xuICB9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMuZ2V0KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzLmRhdGEgYXMgbmV2ZXI7XG4gIH1cblxuICBhc3luYyBnZXREZWZhdWx0QnJhbmNoKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucmVwb3MuZ2V0KHsgLi4udGhpcy5yZXBvIH0pO1xuICAgIHJldHVybiByZXMuZGF0YS5kZWZhdWx0X2JyYW5jaDtcbiAgfVxuXG4gIGFzeW5jIGxpc3RDaGFuZ2VkRmlsZXMocHJOdW1iZXI6IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgcGFnZSA9IDE7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMubGlzdEZpbGVzKHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgICAgIHBhZ2UsXG4gICAgICB9KTtcbiAgICAgIGZpbGVzLnB1c2goLi4ucmVzLmRhdGEubWFwKChmKSA9PiBmLmZpbGVuYW1lKSk7XG4gICAgICBpZiAocmVzLmRhdGEubGVuZ3RoIDwgMTAwKSBicmVhaztcbiAgICAgIHBhZ2UrKztcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgYXN5bmMgbGlzdENoYW5nZWRGaWxlUGF0Y2hlcyhwck51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxcbiAgICBBcnJheTx7XG4gICAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgcGF0Y2g/OiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICB9PlxuICA+IHtcbiAgICBjb25zdCBvdXQ6IEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgcGF0Y2g/OiBzdHJpbmc7IHN0YXR1czogc3RyaW5nIH0+ID0gW107XG4gICAgbGV0IHBhZ2UgPSAxO1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmxpc3RGaWxlcyh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgcHVsbF9udW1iZXI6IHByTnVtYmVyLFxuICAgICAgICBwZXJfcGFnZTogMTAwLFxuICAgICAgICBwYWdlLFxuICAgICAgfSk7XG4gICAgICBvdXQucHVzaChcbiAgICAgICAgLi4ucmVzLmRhdGEubWFwKChmKSA9PiAoe1xuICAgICAgICAgIGZpbGVuYW1lOiBmLmZpbGVuYW1lLFxuICAgICAgICAgIC4uLihmLnBhdGNoICE9PSB1bmRlZmluZWQgPyB7IHBhdGNoOiBmLnBhdGNoIH0gOiB7fSksXG4gICAgICAgICAgc3RhdHVzOiBmLnN0YXR1cyxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcbiAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGggPCAxMDApIGJyZWFrO1xuICAgICAgcGFnZSsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgYXN5bmMgZ2V0SXNzdWUoaXNzdWVOdW1iZXI6IG51bWJlcik6IFByb21pc2U8e1xuICAgIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG4gICAgc3RhdGU6IFwib3BlblwiIHwgXCJjbG9zZWRcIjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGJvZHk6IHN0cmluZyB8IG51bGw7XG4gIH0+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5pc3N1ZXMuZ2V0KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsczogcmVzLmRhdGEubGFiZWxzIGFzIEFycmF5PHsgbmFtZTogc3RyaW5nIH0+LFxuICAgICAgc3RhdGU6IHJlcy5kYXRhLnN0YXRlIGFzIFwib3BlblwiIHwgXCJjbG9zZWRcIixcbiAgICAgIHRpdGxlOiAocmVzLmRhdGEudGl0bGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyBcIlwiLFxuICAgICAgYm9keTogKHJlcy5kYXRhLmJvZHkgYXMgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPz8gbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlSXNzdWVCb2R5KGlzc3VlTnVtYmVyOiBudW1iZXIsIGJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGUoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgaXNzdWVfbnVtYmVyOiBpc3N1ZU51bWJlcixcbiAgICAgIGJvZHksXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIHRoZSBjdXJyZW50IHNob3BmbG9vcjptZXRhZGF0YSBibG9jayBmcm9tIHRoZSBpc3N1ZSBib2R5LCBtZXJnZSB0aGVcbiAgLy8gc3VwcGxpZWQgZmllbGRzIG9uIHRvcCwgYW5kIHdyaXRlIHRoZSByZXN1bHRpbmcgYm9keSBiYWNrLiBNZXJnaW5nIG1lYW5zXG4gIC8vIGEgY2FsbGVyIGNhbiB1cHNlcnQgb25lIGZpZWxkIGF0IGEgdGltZSAoZS5nLiB0cmlhZ2Ugd3JpdGVzIHNsdWcsIHBsYW5cbiAgLy8gbGF0ZXIgd3JpdGVzIHBsYW5QYXRoKSB3aXRob3V0IGNsb2JiZXJpbmcgZWFybGllciBmaWVsZHMuIFRoZSBibG9jayBsaXZlc1xuICAvLyBpbiBhbiBIVE1MIGNvbW1lbnQgc28gaXQgZG9lcyBub3QgcmVuZGVyIGluIEdpdEh1YidzIHdlYiBVSS5cbiAgYXN5bmMgdXBzZXJ0SXNzdWVNZXRhZGF0YShcbiAgICBpc3N1ZU51bWJlcjogbnVtYmVyLFxuICAgIGZpZWxkczogeyBzbHVnPzogc3RyaW5nOyBzcGVjUGF0aD86IHN0cmluZzsgcGxhblBhdGg/OiBzdHJpbmcgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHRoaXMuZ2V0SXNzdWUoaXNzdWVOdW1iZXIpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gcGFyc2VJc3N1ZU1ldGFkYXRhKGN1cnJlbnQuYm9keSk7XG4gICAgY29uc3QgbWVyZ2VkID0geyAuLi4oZXhpc3RpbmcgPz8ge30pLCAuLi5maWVsZHMgfTtcbiAgICBjb25zdCBibG9jayA9IHJlbmRlcklzc3VlTWV0YWRhdGFCbG9jayhtZXJnZWQpO1xuICAgIGNvbnN0IG5leHRCb2R5ID0gYXBwbHlNZXRhZGF0YUJsb2NrKGN1cnJlbnQuYm9keSwgYmxvY2spO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlSXNzdWVCb2R5KGlzc3VlTnVtYmVyLCBuZXh0Qm9keSk7XG4gIH1cblxuICAvLyBUaGUgR2l0SHViIFJFU1QgQVBJIGRvZXMgbm90IGV4cG9zZSBhIHdheSB0byBmbGlwIGEgUFIgZnJvbSBkcmFmdCB0b1xuICAvLyByZWFkeS1mb3ItcmV2aWV3LiBUaGUgR3JhcGhRTCBtdXRhdGlvbiBtYXJrUHVsbFJlcXVlc3RSZWFkeUZvclJldmlldyBpc1xuICAvLyB0aGUgb25seSBwYXRoLiBXZSBmaXJzdCBmZXRjaCB0aGUgUFIncyBub2RlX2lkIHZpYSBSRVNUIHRvIGF2b2lkIGEgc2Vjb25kXG4gIC8vIEdyYXBoUUwgbG9va3VwLlxuICBhc3luYyBtYXJrUHVsbFJlcXVlc3RSZWFkeUZvclJldmlldyhwck51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucHVsbHMuZ2V0KHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICB9KTtcbiAgICBjb25zdCBub2RlSWQgPSByZXMuZGF0YS5ub2RlX2lkO1xuICAgIGlmICghbm9kZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBtYXJrUHVsbFJlcXVlc3RSZWFkeUZvclJldmlldzogUFIgIyR7cHJOdW1iZXJ9IGhhcyBubyBub2RlX2lkYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5ncmFwaHFsKFxuICAgICAgYG11dGF0aW9uKCRpZDogSUQhKSB7XG4gICAgICAgICBtYXJrUHVsbFJlcXVlc3RSZWFkeUZvclJldmlldyhpbnB1dDogeyBwdWxsUmVxdWVzdElkOiAkaWQgfSkge1xuICAgICAgICAgICBwdWxsUmVxdWVzdCB7IGlkIGlzRHJhZnQgfVxuICAgICAgICAgfVxuICAgICAgIH1gLFxuICAgICAgeyBpZDogbm9kZUlkIH0sXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldFByUmV2aWV3c0F0U2hhKFxuICAgIHByTnVtYmVyOiBudW1iZXIsXG4gICAgc2hhOiBzdHJpbmcsXG4gICk6IFByb21pc2U8XG4gICAgQXJyYXk8eyBpZDogbnVtYmVyOyB1c2VyOiB7IGxvZ2luOiBzdHJpbmcgfSB8IG51bGw7IGJvZHk6IHN0cmluZyB9PlxuICA+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0UmV2aWV3cyh7XG4gICAgICAuLi50aGlzLnJlcG8sXG4gICAgICBwdWxsX251bWJlcjogcHJOdW1iZXIsXG4gICAgICBwZXJfcGFnZTogMTAwLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGF0YVxuICAgICAgLmZpbHRlcigocikgPT4gci5jb21taXRfaWQgPT09IHNoYSlcbiAgICAgIC5tYXAoKHIpID0+ICh7XG4gICAgICAgIGlkOiByLmlkLFxuICAgICAgICB1c2VyOiByLnVzZXIgYXMgeyBsb2dpbjogc3RyaW5nIH0gfCBudWxsLFxuICAgICAgICBib2R5OiByLmJvZHkgPz8gXCJcIixcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQclJldmlld3MocHJOdW1iZXI6IG51bWJlcik6IFByb21pc2U8UHJSZXZpZXdSb3dbXT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnB1bGxzLmxpc3RSZXZpZXdzKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy5kYXRhLm1hcCgocikgPT4gKHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgdXNlcjogci51c2VyIGFzIHsgbG9naW46IHN0cmluZyB9IHwgbnVsbCxcbiAgICAgIGJvZHk6IHIuYm9keSA/PyBcIlwiLFxuICAgICAgY29tbWl0X2lkOiByLmNvbW1pdF9pZCxcbiAgICAgIHN0YXRlOiByLnN0YXRlLnRvTG93ZXJDYXNlKCksXG4gICAgICBzdWJtaXR0ZWRfYXQ6IHIuc3VibWl0dGVkX2F0LFxuICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQclJldmlld0NvbW1lbnRzKHByTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFByUmV2aWV3Q29tbWVudFJvd1tdPiB7XG4gICAgY29uc3QgYWxsOiBQclJldmlld0NvbW1lbnRSb3dbXSA9IFtdO1xuICAgIGxldCBwYWdlID0gMTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5wdWxscy5saXN0UmV2aWV3Q29tbWVudHMoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIHB1bGxfbnVtYmVyOiBwck51bWJlcixcbiAgICAgICAgcGVyX3BhZ2U6IDEwMCxcbiAgICAgICAgcGFnZSxcbiAgICAgIH0pO1xuICAgICAgYWxsLnB1c2goXG4gICAgICAgIC4uLnJlcy5kYXRhLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICBpZDogYy5pZCxcbiAgICAgICAgICBwdWxsX3JlcXVlc3RfcmV2aWV3X2lkOiBjLnB1bGxfcmVxdWVzdF9yZXZpZXdfaWQsXG4gICAgICAgICAgcGF0aDogYy5wYXRoLFxuICAgICAgICAgIGxpbmU6IGMubGluZSxcbiAgICAgICAgICBzaWRlOiBjLnNpZGUsXG4gICAgICAgICAgc3RhcnRfbGluZTogYy5zdGFydF9saW5lLFxuICAgICAgICAgIHN0YXJ0X3NpZGU6IGMuc3RhcnRfc2lkZSxcbiAgICAgICAgICBib2R5OiBjLmJvZHksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgICBpZiAocmVzLmRhdGEubGVuZ3RoIDwgMTAwKSBicmVhaztcbiAgICAgIHBhZ2UrKztcbiAgICB9XG4gICAgcmV0dXJuIGFsbDtcbiAgfVxuXG4gIGFzeW5jIGdldFJlZlNoYShicmFuY2hOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LmdpdC5nZXRSZWYoe1xuICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgcmVmOiBgaGVhZHMvJHticmFuY2hOYW1lfWAsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy5kYXRhLm9iamVjdC5zaGE7XG4gIH1cblxuICBhc3luYyBjcmVhdGVSZWYoYnJhbmNoTmFtZTogc3RyaW5nLCBzaGE6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9jdG9raXQucmVzdC5naXQuY3JlYXRlUmVmKHtcbiAgICAgICAgLi4udGhpcy5yZXBvLFxuICAgICAgICByZWY6IGByZWZzL2hlYWRzLyR7YnJhbmNoTmFtZX1gLFxuICAgICAgICBzaGEsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgaWYgKChlcnIgYXMgeyBzdGF0dXM/OiBudW1iZXIgfSkuc3RhdHVzID09PSA0MjIpIHJldHVybiBmYWxzZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRGaWxlU2hhKHBhdGg6IHN0cmluZywgYnJhbmNoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QucmVwb3MuZ2V0Q29udGVudCh7XG4gICAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICB9KTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcy5kYXRhKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcmVzLmRhdGEuc2hhO1xuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgaWYgKChlcnIgYXMgeyBzdGF0dXM/OiBudW1iZXIgfSkuc3RhdHVzID09PSA0MDQpIHJldHVybiBudWxsO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHB1dEZpbGVDb250ZW50cyhpbnB1dDoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBicmFuY2g6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIHNoYT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0LnJlcG9zLmNyZWF0ZU9yVXBkYXRlRmlsZUNvbnRlbnRzKHtcbiAgICAgIC4uLnRoaXMucmVwbyxcbiAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICBicmFuY2g6IGlucHV0LmJyYW5jaCxcbiAgICAgIG1lc3NhZ2U6IGlucHV0Lm1lc3NhZ2UsXG4gICAgICBjb250ZW50OiBCdWZmZXIuZnJvbShpbnB1dC5jb250ZW50LCBcInV0ZjhcIikudG9TdHJpbmcoXCJiYXNlNjRcIiksXG4gICAgICAuLi4oaW5wdXQuc2hhID8geyBzaGE6IGlucHV0LnNoYSB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdElzc3VlQ29tbWVudHMoaXNzdWVOdW1iZXI6IG51bWJlcik6IFByb21pc2U8SXNzdWVDb21tZW50Um93W10+IHtcbiAgICBjb25zdCBhbGw6IElzc3VlQ29tbWVudFJvd1tdID0gW107XG4gICAgbGV0IHBhZ2UgPSAxO1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0Q29tbWVudHMoe1xuICAgICAgICAuLi50aGlzLnJlcG8sXG4gICAgICAgIGlzc3VlX251bWJlcjogaXNzdWVOdW1iZXIsXG4gICAgICAgIHBlcl9wYWdlOiAxMDAsXG4gICAgICAgIHBhZ2UsXG4gICAgICB9KTtcbiAgICAgIGFsbC5wdXNoKFxuICAgICAgICAuLi5yZXMuZGF0YS5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgdXNlcjogYy51c2VyIGFzIHsgbG9naW46IHN0cmluZyB9IHwgbnVsbCxcbiAgICAgICAgICBjcmVhdGVkX2F0OiBjLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgYm9keTogYy5ib2R5LFxuICAgICAgICB9KSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA8IDEwMCkgYnJlYWs7XG4gICAgICBwYWdlKys7XG4gICAgfVxuICAgIHJldHVybiBhbGw7XG4gIH1cbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCJAYWN0aW9ucy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuL3N0YWdlcy9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IGNyZWF0ZVByb2dyZXNzQ29tbWVudCB9IGZyb20gXCIuL3N0YWdlcy9fc2hhcmVkL3Byb2dyZXNzLWNvbW1lbnQuanNcIjtcbmltcG9ydCB7IGFwcGx5SW1wbGVtZW50IH0gZnJvbSBcIi4vc3RhZ2VzL2ltcGxlbWVudC9hcHBseS5qc1wiO1xuaW1wb3J0IHsgcnVuSW1wbGVtZW50IH0gZnJvbSBcIi4vc3RhZ2VzL2ltcGxlbWVudC9ydW5uZXIuanNcIjtcbmltcG9ydCB7IGFwcGx5UGxhbiB9IGZyb20gXCIuL3N0YWdlcy9wbGFuL2FwcGx5LmpzXCI7XG5pbXBvcnQgeyBydW5QbGFuIH0gZnJvbSBcIi4vc3RhZ2VzL3BsYW4vcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGVGaW5kaW5ncyB9IGZyb20gXCIuL3N0YWdlcy9yZXZpZXcvYWdncmVnYXRlLmpzXCI7XG5pbXBvcnQgeyBhcHBseVJldmlldyB9IGZyb20gXCIuL3N0YWdlcy9yZXZpZXcvYXBwbHkuanNcIjtcbmltcG9ydCB7IHJ1blJldmlldyB9IGZyb20gXCIuL3N0YWdlcy9yZXZpZXcvcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBhcHBseVNwZWMgfSBmcm9tIFwiLi9zdGFnZXMvc3BlYy9hcHBseS5qc1wiO1xuaW1wb3J0IHsgcnVuU3BlYyB9IGZyb20gXCIuL3N0YWdlcy9zcGVjL3J1bm5lci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlUcmlhZ2UgfSBmcm9tIFwiLi9zdGFnZXMvdHJpYWdlL2FwcGx5LmpzXCI7XG5pbXBvcnQgeyBydW5UcmlhZ2UgfSBmcm9tIFwiLi9zdGFnZXMvdHJpYWdlL3J1bm5lci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZSB9IGZyb20gXCIuL3N0YXRlL2xhYmVscy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJc3N1ZU1ldGFkYXRhIH0gZnJvbSBcIi4vc3RhdGUvbWV0YWRhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgUm91dGVyRGVjaXNpb24gfSBmcm9tIFwiLi9zdGF0ZS90eXBlcy5qc1wiO1xuXG5jb25zdCBDT05GSURFTkNFX1RIUkVTSE9MRCA9IDYwO1xuLy8gQ29uc2VjdXRpdmUgZXJyb3JlZCByZXZpZXcgcnVucyAoZXZlcnkgbGVucyBmYWlsZWQgdG8gc3RhcnQpIHRvbGVyYXRlZCBiZWZvcmVcbi8vIHRoZSByZXZpZXcgZXNjYWxhdGVzIHRvIHJldmlldy1zdHVjayBhbmQgcGFnZXMgYSBodW1hbi4gRWFjaCBydW4gYWxyZWFkeVxuLy8gcmV0cmllcyB0aGUgQ0xJIGluc3RhbGwgaW50ZXJuYWxseSwgc28gdGhpcyBndWFyZHMgYWdhaW5zdCBhIHBlcnNpc3RlbnRcbi8vIGluZnJhc3RydWN0dXJlIGZhaWx1cmUgcGFya2luZyB0aGUgcGlwZWxpbmUgc2lsZW50bHkuXG5jb25zdCBNQVhfQ09OU0VDVVRJVkVfUkVWSUVXX0VSUk9SUyA9IDM7XG5cbi8vIEVhY2ggc3RhZ2UgaGFuZGxlciBhc3NlbWJsZXMgaXRzIG93biBleHRyYXMgKHJldmlzaW9uIGNvbnRleHQsIHByb2dyZXNzXG4vLyBjb21tZW50LCBQUi9maWxlIGxvb2t1cHMpIHNvIHRoZSBvcmNoZXN0cmF0b3Igc3RheXMgZ2VuZXJpYy4gUmV0dXJuaW5nIHRoZVxuLy8gc3RhZ2UgbmFtZSBpcyBwdXJlbHkgaW5mb3JtYXRpb25hbCBmb3IgYXVkaXQgbG9ncy5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VIYW5kbGVyIHtcbiAgZXhlY3V0ZShjdHg6IFN0YWdlQ29udGV4dCwgZGVjaXNpb246IFJvdXRlckRlY2lzaW9uKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRTcGVjUmV2aXNpb25CbG9jayhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGJyYW5jaE5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmICghY3R4Lmlzc3VlKSByZXR1cm4gXCJcIjtcbiAgY29uc3Qgb3BlbiA9IGF3YWl0IGN0eC5naXRodWIuZmluZE9wZW5QckJ5SGVhZChicmFuY2hOYW1lKTtcbiAgaWYgKCFvcGVuKSByZXR1cm4gXCJcIjtcbiAgY29uc3QgcmV2aWV3cyA9IGF3YWl0IGN0eC5naXRodWIubGlzdFByUmV2aWV3cyhvcGVuLm51bWJlcik7XG4gIGNvbnN0IHJlcXVlc3RDaGFuZ2VzID0gcmV2aWV3c1xuICAgIC5maWx0ZXIoKHIpID0+IHIuc3RhdGUgPT09IFwiY2hhbmdlc19yZXF1ZXN0ZWRcIilcbiAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYVQgPSBhLnN1Ym1pdHRlZF9hdCA/PyBcIlwiO1xuICAgICAgY29uc3QgYlQgPSBiLnN1Ym1pdHRlZF9hdCA/PyBcIlwiO1xuICAgICAgY29uc3QgY21wID0gYlQubG9jYWxlQ29tcGFyZShhVCk7XG4gICAgICByZXR1cm4gY21wICE9PSAwID8gY21wIDogYi5pZCAtIGEuaWQ7XG4gICAgfSk7XG4gIGlmIChyZXF1ZXN0Q2hhbmdlcy5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuICBjb25zdCBsYXRlc3QgPSByZXF1ZXN0Q2hhbmdlc1swXSE7XG4gIHJldHVybiBbXG4gICAgXCIjIyBSZXZpc2lvbiBmZWVkYmFja1wiLFxuICAgIFwiXCIsXG4gICAgXCJUaGUgcHJldmlvdXMgUFIgZm9yIHRoaXMgc3RhZ2Ugd2FzIHJldmlld2VkIGFuZCB0aGUgcmV2aWV3ZXIgcmVxdWVzdGVkXCIsXG4gICAgXCJjaGFuZ2VzLiBBZGRyZXNzIHRoZSBmb2xsb3dpbmcgYmVmb3JlIHJlc3VibWl0dGluZzpcIixcbiAgICBcIlwiLFxuICAgIGxhdGVzdC5ib2R5IHx8IFwiKG5vIHN1bW1hcnkpXCIsXG4gIF0uam9pbihcIlxcblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZm9ybWF0SXNzdWVDb21tZW50cyhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGlzc3VlTnVtYmVyOiBudW1iZXIsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21tZW50cyA9IGF3YWl0IGN0eC5naXRodWIubGlzdElzc3VlQ29tbWVudHMoaXNzdWVOdW1iZXIpO1xuICBpZiAoY29tbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcbiAgcmV0dXJuIGNvbW1lbnRzXG4gICAgLm1hcChcbiAgICAgIChjKSA9PlxuICAgICAgICBgKipAJHtjLnVzZXI/LmxvZ2luID8/IFwidW5rbm93blwifSoqICgke2MuY3JlYXRlZF9hdH0pOlxcbiR7Yy5ib2R5ID8/IFwiXCJ9YCxcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cXG4tLS1cXG5cXG5cIik7XG59XG5cbmV4cG9ydCBjb25zdCBSVU5ORVJTOiBSZWNvcmQ8U3RhZ2UsIFN0YWdlSGFuZGxlcj4gPSB7XG4gIHRyaWFnZToge1xuICAgIGFzeW5jIGV4ZWN1dGUoY3R4KSB7XG4gICAgICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwidHJpYWdlIHN0YWdlIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgICAgIGNvbnN0IGlzc3VlQ29tbWVudHMgPSBhd2FpdCBmb3JtYXRJc3N1ZUNvbW1lbnRzKGN0eCwgY3R4Lmlzc3VlLm51bWJlcik7XG4gICAgICBjb25zdCBkZWNpc2lvbiA9IGF3YWl0IHJ1blRyaWFnZShjdHgsIHsgaXNzdWVDb21tZW50cyB9KTtcbiAgICAgIGF3YWl0IGFwcGx5VHJpYWdlKGN0eCwgeyBkZWNpc2lvbiwgYmFzZUJyYW5jaDogY3R4LmRlZmF1bHRCcmFuY2ggfSk7XG4gICAgfSxcbiAgfSxcblxuICBzcGVjOiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjdHgsIHJvdXRlZCkge1xuICAgICAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcInNwZWMgc3RhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICAgICAgY29uc3QgYnJhbmNoTmFtZSA9IHJvdXRlZC5icmFuY2hOYW1lO1xuICAgICAgY29uc3Qgc3BlY0ZpbGVQYXRoID0gcm91dGVkLnNwZWNGaWxlUGF0aDtcbiAgICAgIGlmICghYnJhbmNoTmFtZSB8fCAhc3BlY0ZpbGVQYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNwZWMgc3RhZ2UgcmVxdWlyZXMgYnJhbmNoTmFtZSBhbmQgc3BlY0ZpbGVQYXRoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBwYXJzZUlzc3VlTWV0YWRhdGEoY3R4Lmlzc3VlLmJvZHkpO1xuICAgICAgY29uc3QgdHJpYWdlUmF0aW9uYWxlID0gbWV0YWRhdGE/LnNsdWcgPz8gXCJcIjtcbiAgICAgIGNvbnN0IGlzc3VlQ29tbWVudHMgPSBhd2FpdCBmb3JtYXRJc3N1ZUNvbW1lbnRzKGN0eCwgY3R4Lmlzc3VlLm51bWJlcik7XG4gICAgICBjb25zdCByZXZpc2lvbkJsb2NrID0gcm91dGVkLnJldmlzaW9uTW9kZVxuICAgICAgICA/IGF3YWl0IGJ1aWxkU3BlY1JldmlzaW9uQmxvY2soY3R4LCBicmFuY2hOYW1lKVxuICAgICAgICA6IFwiXCI7XG4gICAgICBjb25zdCBkZWNpc2lvbiA9IGF3YWl0IHJ1blNwZWMoY3R4LCB7XG4gICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgICAgcmV2aXNpb25CbG9jayxcbiAgICAgICAgaXNzdWVDb21tZW50cyxcbiAgICAgICAgdHJpYWdlUmF0aW9uYWxlLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBhcHBseVNwZWMoY3R4LCB7XG4gICAgICAgIGRlY2lzaW9uLFxuICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICBiYXNlQnJhbmNoOiBjdHguZGVmYXVsdEJyYW5jaCxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG5cbiAgcGxhbjoge1xuICAgIGFzeW5jIGV4ZWN1dGUoY3R4LCByb3V0ZWQpIHtcbiAgICAgIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJwbGFuIHN0YWdlIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgICAgIGNvbnN0IGJyYW5jaE5hbWUgPSByb3V0ZWQuYnJhbmNoTmFtZTtcbiAgICAgIGNvbnN0IHNwZWNGaWxlUGF0aCA9IHJvdXRlZC5zcGVjRmlsZVBhdGggPz8gXCJcIjtcbiAgICAgIGNvbnN0IHBsYW5GaWxlUGF0aCA9IHJvdXRlZC5wbGFuRmlsZVBhdGg7XG4gICAgICBpZiAoIWJyYW5jaE5hbWUgfHwgIXBsYW5GaWxlUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwbGFuIHN0YWdlIHJlcXVpcmVzIGJyYW5jaE5hbWUgYW5kIHBsYW5GaWxlUGF0aFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzc3VlQ29tbWVudHMgPSBhd2FpdCBmb3JtYXRJc3N1ZUNvbW1lbnRzKGN0eCwgY3R4Lmlzc3VlLm51bWJlcik7XG4gICAgICBjb25zdCByZXZpc2lvbkJsb2NrID0gcm91dGVkLnJldmlzaW9uTW9kZVxuICAgICAgICA/IGF3YWl0IGJ1aWxkU3BlY1JldmlzaW9uQmxvY2soY3R4LCBicmFuY2hOYW1lKVxuICAgICAgICA6IFwiXCI7XG4gICAgICBjb25zdCBkZWNpc2lvbiA9IGF3YWl0IHJ1blBsYW4oY3R4LCB7XG4gICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgIHBsYW5GaWxlUGF0aCxcbiAgICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgICAgICByZXZpc2lvbkJsb2NrLFxuICAgICAgICBpc3N1ZUNvbW1lbnRzLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBhcHBseVBsYW4oY3R4LCB7XG4gICAgICAgIGRlY2lzaW9uLFxuICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICBiYXNlQnJhbmNoOiBjdHguZGVmYXVsdEJyYW5jaCxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG5cbiAgaW1wbGVtZW50OiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjdHgsIHJvdXRlZCkge1xuICAgICAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcImltcGxlbWVudCBzdGFnZSByZXF1aXJlcyBjdHguaXNzdWVcIik7XG4gICAgICBjb25zdCBicmFuY2hOYW1lID0gcm91dGVkLmJyYW5jaE5hbWU7XG4gICAgICBjb25zdCBzcGVjRmlsZVBhdGggPSByb3V0ZWQuc3BlY0ZpbGVQYXRoID8/IFwiXCI7XG4gICAgICBjb25zdCBwbGFuRmlsZVBhdGggPSByb3V0ZWQucGxhbkZpbGVQYXRoID8/IFwiXCI7XG4gICAgICBpZiAoIWJyYW5jaE5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW1wbGVtZW50IHN0YWdlIHJlcXVpcmVzIGJyYW5jaE5hbWVcIik7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgb3IgY3JlYXRlIHRoZSBpbXBsIFBSIHNoZWxsIHNvIHdlIGNhbiBwaW4gdGhlIHByb2dyZXNzIGNvbW1lbnQgdG9cbiAgICAgIC8vIGl0LiBUaGUgUFIgaXMgY3JlYXRlZCBieSBhcHBseUltcGxlbWVudCBhdCB0aGUgZW5kOyB3ZSB1c2UgYSBwbGFjZWhvbGRlclxuICAgICAgLy8gUFIgbnVtYmVyIHNvdXJjZWQgZnJvbSBhbiBleGlzdGluZyBvcGVuIGltcGwgUFIgKHJldmlzaW9uIG1vZGUpIG9yIHRoZVxuICAgICAgLy8gaXNzdWUgbnVtYmVyIChmaXJzdCBydW4pIHNvIHRoZSBjb21tZW50IGhhcyBhIHRhcmdldC5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgY3R4LmdpdGh1Yi5maW5kT3BlbkltcGxQckZvcklzc3VlKFxuICAgICAgICBjdHguaXNzdWUubnVtYmVyLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbW1lbnRUYXJnZXQgPSBleGlzdGluZz8ubnVtYmVyID8/IGN0eC5pc3N1ZS5udW1iZXI7XG4gICAgICBjb25zdCBwcm9ncmVzc0NvbW1lbnRJZCA9IGF3YWl0IGNyZWF0ZVByb2dyZXNzQ29tbWVudChcbiAgICAgICAgY3R4LmdpdGh1YixcbiAgICAgICAgY29tbWVudFRhcmdldCxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJldmlzaW9uQmxvY2sgPVxuICAgICAgICByb3V0ZWQucmV2aXNpb25Nb2RlICYmIHJvdXRlZC5pbXBsUHJOdW1iZXJcbiAgICAgICAgICA/IGF3YWl0IGJ1aWxkU3BlY1JldmlzaW9uQmxvY2soY3R4LCBicmFuY2hOYW1lKVxuICAgICAgICAgIDogXCJcIjtcbiAgICAgIGNvbnN0IGlzc3VlQ29tbWVudHMgPSBhd2FpdCBmb3JtYXRJc3N1ZUNvbW1lbnRzKGN0eCwgY3R4Lmlzc3VlLm51bWJlcik7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSB0aGUgbG9jYWwgd29ya2luZyB0cmVlIGJlZm9yZSB0aGUgYWdlbnQgcnVucy4gRmlyc3QgcnVucyBnZXRcbiAgICAgIC8vIGEgZnJlc2ggYnJhbmNoIG9mZiB0aGUgZGVmYXVsdC1icmFuY2ggSEVBRCB0aGF0IGFjdGlvbnMvY2hlY2tvdXQgbGVmdFxuICAgICAgLy8gaW4gcGxhY2U7IHJldmlzaW9uIHJ1bnMgZmV0Y2ggdGhlIHByaW9yIGl0ZXJhdGlvbidzIGJyYW5jaCBzbyB0aGVcbiAgICAgIC8vIGFnZW50IGluaGVyaXRzIHRoZSBwcmV2aW91cyByb3VuZCdzIHdvcmtpbmcgdHJlZS4gRG9uZSBhZnRlciB0aGVcbiAgICAgIC8vIHByb2dyZXNzIGNvbW1lbnQgaXMgY3JlYXRlZCBzbyB3ZSBkb24ndCBzdHJhbmQgdGhlIG9yY2hlc3RyYXRvciB3aXRoXG4gICAgICAvLyBhIGhhbGYtd3JpdHRlbiBjb21tZW50IHdoZW4gZ2l0IGZhaWxzLlxuICAgICAgaWYgKGN0eC5naXRPcHMpIHtcbiAgICAgICAgYXdhaXQgY3R4LmdpdE9wcy5wcmVwYXJlSW1wbENoZWNrb3V0KHtcbiAgICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICAgIGJhc2VCcmFuY2g6IGN0eC5kZWZhdWx0QnJhbmNoLFxuICAgICAgICAgIHJldmlzaW9uTW9kZTogcm91dGVkLnJldmlzaW9uTW9kZSA9PT0gdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3JlLndhcm5pbmcoXG4gICAgICAgICAgXCJTaG9wZmxvb3IgaW1wbGVtZW50IHN0YWdlIHJhbiB3aXRob3V0IGdpdE9wcyBjb25maWd1cmVkOyB0aGUgYWdlbnQncyBjb21taXRzIHdpbGwgbm90IGJlIHB1c2hlZCBhbmQgb3BlblN0YWdlUHIgd2lsbCBmYWlsIGJlY2F1c2UgdGhlIGJyYW5jaCBkb2VzIG5vdCBleGlzdCBvbiBvcmlnaW4uIFdpcmUgT3JjaGVzdHJhdG9yQXJncy5naXRPcHMgaW4gcHJvZHVjdGlvbiBjYWxsZXJzLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWNpc2lvbiA9IGF3YWl0IHJ1bkltcGxlbWVudChjdHgsIHtcbiAgICAgICAgcHJvZ3Jlc3NDb21tZW50SWQsXG4gICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgICAgcGxhbkZpbGVQYXRoLFxuICAgICAgICBiYXNoQWxsb3dsaXN0OiBcIlwiLFxuICAgICAgICByZXZpc2lvbkJsb2NrLFxuICAgICAgICBpc3N1ZUNvbW1lbnRzLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFB1c2ggdGhlIGFnZW50J3MgY29tbWl0cyB0byBvcmlnaW4gYmVmb3JlIG9wZW5pbmcgdGhlIFBSLiBUaGUgcm91dGVyXG4gICAgICAvLyAobm90IHRoZSBhZ2VudCkgb3ducyB0aGUgbmV0d29yayBwYXRoOyB0aGUgYWdlbnQgaXMgZXhwbGljaXRseSBkZW5pZWRcbiAgICAgIC8vIGBnaXQgcHVzaGAgaW4gc3JjL2FnZW50cy9jbGF1ZGUudHMgc28gYSBtYWxmb3JtZWQgcnVuIGNhbm5vdCBwdWJsaXNoXG4gICAgICAvLyB0byB0aGUgcmVtb3RlLiBQZXJmb3JtaW5nIHRoZSBwdXNoIGhlcmUsIGFmdGVyIHRoZSBhZ2VudCBmaW5pc2hlc1xuICAgICAgLy8gY2xlYW5seSwgYWxzbyBtZWFucyB0aGUgcmVzdWx0aW5nIHB1c2ggZXZlbnQgaXMgYXR0cmlidXRlZCB0byB0aGVcbiAgICAgIC8vIEFwcCBpZGVudGl0eSBzbyBkb3duc3RyZWFtIHJldmlldyB3b3JrZmxvd3MgdHJpZ2dlci5cbiAgICAgIGlmIChjdHguZ2l0T3BzKSB7XG4gICAgICAgIGF3YWl0IGN0eC5naXRPcHMucHVzaEltcGxDb21taXRzKHsgYnJhbmNoTmFtZSB9KTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYXBwbHlJbXBsZW1lbnQoY3R4LCB7XG4gICAgICAgIGRlY2lzaW9uLFxuICAgICAgICBwcm9ncmVzc0NvbW1lbnRJZCxcbiAgICAgICAgYnJhbmNoTmFtZSxcbiAgICAgICAgYmFzZUJyYW5jaDogY3R4LmRlZmF1bHRCcmFuY2gsXG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxuXG4gIHJldmlldzoge1xuICAgIGFzeW5jIGV4ZWN1dGUoY3R4LCByb3V0ZWQpIHtcbiAgICAgIGlmICghY3R4LnByKSB0aHJvdyBuZXcgRXJyb3IoXCJyZXZpZXcgc3RhZ2UgcmVxdWlyZXMgY3R4LnByXCIpO1xuICAgICAgLy8gSW4gcmV2aWV3T25seSBtb2RlIHRoZSBQUiBpcyBodW1hbi1hdXRob3JlZCBhbmQgU2hvcGZsb29yIGFjdHMgYXMgYVxuICAgICAgLy8gc3RhdGVsZXNzIHJldmlld2VyOiBubyBpdGVyYXRpb24gY291bnRlciBpcyBwZXJzaXN0ZWQsIGV2ZXJ5IHB1c2hcbiAgICAgIC8vIGdldHMgYSBmcmVzaCByZXZpZXcsIGFuZCB0aGUgaXRlcmF0aW9uIGNhcCBuZXZlciBmaXJlcy5cbiAgICAgIGNvbnN0IGl0ZXJhdGlvbiA9IGN0eC5yZXZpZXdPbmx5ID8gMCA6IChyb3V0ZWQucmV2aWV3SXRlcmF0aW9uID8/IDApO1xuICAgICAgY29uc3QgZXJyb3JDb3VudCA9IGN0eC5yZXZpZXdPbmx5ID8gMCA6IChyb3V0ZWQucmV2aWV3RXJyb3JDb3VudCA/PyAwKTtcbiAgICAgIGNvbnN0IG1heENvbnNlY3V0aXZlUmV2aWV3RXJyb3JzID0gY3R4LnJldmlld09ubHlcbiAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgOiBNQVhfQ09OU0VDVVRJVkVfUkVWSUVXX0VSUk9SUztcbiAgICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPSBjdHgucmV2aWV3T25seVxuICAgICAgICA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICAgICAgICA6IGN0eC5jb25maWcubWF4UmV2aWV3SXRlcmF0aW9ucztcbiAgICAgIC8vIFByb3Zpc2lvbiBvcmlnaW4vPGJhc2U+IHNvIHRoZSBsZW5zZXMgY2FuIHJ1biBgZ2l0IGRpZmYgb3JpZ2luLzxiYXNlPlxuICAgICAgLy8gSEVBRGAuIFRoZSByZXZpZXcgY2hlY2tvdXQgaXMgYSBzaGFsbG93IGBwdWxsL04vbWVyZ2VgIGNvbW1pdCB3aXRoIG5vXG4gICAgICAvLyBiYXNlIHRyYWNraW5nIHJlZiBhbmQgYHBlcnNpc3QtY3JlZGVudGlhbHM6IGZhbHNlYCwgc28gd2l0aG91dCB0aGlzXG4gICAgICAvLyB0aGUgYWdlbnRzIGNhbm5vdCBmZXRjaCBvciBuYW1lIHRoZSBiYXNlIGFuZCBidXJuIHR1cm5zIGZsYWlsaW5nXG4gICAgICAvLyB0aHJvdWdoIGZhaWxpbmcgZ2l0IGNvbW1hbmRzLiBBIGZldGNoIGhpY2N1cCBkZWdyYWRlcyB0aGUgZGlmZiBidXRcbiAgICAgIC8vIHNob3VsZCBub3QgZmFpbCBhbiBlbnRpcmUgUFIgY2hlY2ssIHNvIHdlIHdhcm4gYW5kIGNvbnRpbnVlLlxuICAgICAgaWYgKGN0eC5naXRPcHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBjdHguZ2l0T3BzLnByZXBhcmVSZXZpZXdCYXNlKHsgYmFzZVJlZjogY3R4LnByLmJhc2VSZWYgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvcmUud2FybmluZyhcbiAgICAgICAgICAgIGBTaG9wZmxvb3IgcmV2aWV3IGNvdWxkIG5vdCBmZXRjaCBiYXNlIHJlZiAnJHtjdHgucHIuYmFzZVJlZn0nOyBsZW5zZXMgbWF5IGJlIHVuYWJsZSB0byBkaWZmLiAke1xuICAgICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycilcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0Y2hlcyA9IGF3YWl0IGN0eC5naXRodWIubGlzdENoYW5nZWRGaWxlUGF0Y2hlcyhjdHgucHIubnVtYmVyKTtcbiAgICAgIGNvbnN0IGNoYW5nZWRGaWxlcyA9IHBhdGNoZXMubWFwKChwKSA9PiBwLmZpbGVuYW1lKTtcblxuICAgICAgY29uc3QgcGxhbkZpbGVDb250ZW50cyA9IHJvdXRlZC5wbGFuRmlsZVBhdGhcbiAgICAgICAgPyBhd2FpdCByZWFkRmlsZVNhZmUoY3R4LCByb3V0ZWQucGxhbkZpbGVQYXRoLCBjdHgucHIuYmFzZVJlZilcbiAgICAgICAgOiBcIlwiO1xuICAgICAgY29uc3QgaXNzdWVCb2R5ID0gY3R4Lmlzc3VlPy5ib2R5ID8/IFwiXCI7XG5cbiAgICAgIGNvbnN0IHByZXZpb3VzUmV2aWV3Q29tbWVudHMgPSBhd2FpdCBjdHguZ2l0aHViLmxpc3RQclJldmlld0NvbW1lbnRzKFxuICAgICAgICBjdHgucHIubnVtYmVyLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzUmV2aWV3Q29tbWVudHNKc29uID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHByZXZpb3VzUmV2aWV3Q29tbWVudHMubWFwKChjKSA9PiAoe1xuICAgICAgICAgIHBhdGg6IGMucGF0aCxcbiAgICAgICAgICBsaW5lOiBjLmxpbmUsXG4gICAgICAgICAgc2lkZTogYy5zaWRlLFxuICAgICAgICAgIGJvZHk6IGMuYm9keSxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgb3V0Y29tZXMgPSBhd2FpdCBydW5SZXZpZXcoY3R4LCB7XG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgICAgYmFzZVJlZjogY3R4LnByLmJhc2VSZWYsXG4gICAgICAgIGNoYW5nZWRGaWxlcyxcbiAgICAgICAgcGxhbkZpbGVDb250ZW50cyxcbiAgICAgICAgaXNzdWVCb2R5LFxuICAgICAgICBwcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZ2dyZWdhdGUgPSBhZ2dyZWdhdGVGaW5kaW5ncyh7XG4gICAgICAgIG91dGNvbWVzLFxuICAgICAgICBwYXRjaGVzOiBwYXRjaGVzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICBmaWxlbmFtZTogcC5maWxlbmFtZSxcbiAgICAgICAgICAuLi4ocC5wYXRjaCAhPT0gdW5kZWZpbmVkID8geyBwYXRjaDogcC5wYXRjaCB9IDoge30pLFxuICAgICAgICAgIHN0YXR1czogcC5zdGF0dXMsXG4gICAgICAgIH0pKSxcbiAgICAgICAgY3VycmVudEl0ZXJhdGlvbjogaXRlcmF0aW9uLFxuICAgICAgICBtYXhJdGVyYXRpb25zLFxuICAgICAgICBjb25maWRlbmNlVGhyZXNob2xkOiBDT05GSURFTkNFX1RIUkVTSE9MRCxcbiAgICAgICAgY3VycmVudEVycm9yQ291bnQ6IGVycm9yQ291bnQsXG4gICAgICAgIG1heENvbnNlY3V0aXZlUmV2aWV3RXJyb3JzLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFBpcGVsaW5lIG1vZGUgKFNob3BmbG9vci1hdXRob3JlZCBpbXBsIFBScykgd3JpdGVzIHBpcGVsaW5lLXN0YXRlXG4gICAgICAvLyBsYWJlbHMgb250byB0aGUgaXNzdWUsIG5vdCB0aGUgUFIuIFRoZSBvcmNoZXN0cmF0b3IgaHlkcmF0ZXMgY3R4Lmlzc3VlXG4gICAgICAvLyBmcm9tIHRoZSBQUiBmb290ZXIncyBTaG9wZmxvb3ItSXNzdWU6ICNOIGJlZm9yZSBkaXNwYXRjaGluZzsgaWYgaXQgaXNcbiAgICAgIC8vIHN0aWxsIG51bGwgaGVyZSwgc29tZXRoaW5nIHVwc3RyZWFtIGlzIGJyb2tlbiBhbmQgd2Ugd2FudCB0byBmYWlsXG4gICAgICAvLyBsb3VkIHJhdGhlciB0aGFuIHNpbGVudGx5IHJldGFyZ2V0IHRoZSBQUi4gcmV2aWV3T25seSBtb2RlIChodW1hbi1cbiAgICAgIC8vIGF1dGhvcmVkIFBScyB0aHJvdWdoIGRvZ2Zvb2QtcmV2aWV3LnltbCkgd3JpdGVzIG5vIGxhYmVscyBhdCBhbGwsIHNvXG4gICAgICAvLyBsYWJlbFRhcmdldCBpcyBuZXZlciByZWFkIGluIHRoYXQgcGF0aDsgd2UgcGFzcyB0aGUgUFIgbnVtYmVyIGFzIGFuXG4gICAgICAvLyB1bnVzZWQgcGxhY2Vob2xkZXIgdG8gc2F0aXNmeSB0aGUgQXBwbHlSZXZpZXdBcmdzIGNvbnRyYWN0LlxuICAgICAgbGV0IGxhYmVsVGFyZ2V0OiBudW1iZXI7XG4gICAgICBpZiAoY3R4LnJldmlld09ubHkpIHtcbiAgICAgICAgbGFiZWxUYXJnZXQgPSBjdHgucHIubnVtYmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjdHguaXNzdWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcInJldmlldyBzdGFnZSByZXF1aXJlcyBjdHguaXNzdWUgaW4gcGlwZWxpbmUgbW9kZTsgb3JjaGVzdHJhdG9yIGh5ZHJhdGlvbiBtdXN0IHBvcHVsYXRlIGl0IGZyb20gdGhlIFBSIGZvb3RlcidzIFNob3BmbG9vci1Jc3N1ZTogI05cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsVGFyZ2V0ID0gY3R4Lmlzc3VlLm51bWJlcjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5UmV2aWV3KGN0eCwgeyBvdXRjb21lOiBhZ2dyZWdhdGUsIGxhYmVsVGFyZ2V0IH0pO1xuICAgIH0sXG4gIH0sXG59O1xuXG5hc3luYyBmdW5jdGlvbiByZWFkRmlsZVNhZmUoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBwYXRoOiBzdHJpbmcsXG4gIGJyYW5jaDogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaGEgPSBhd2FpdCBjdHguZ2l0aHViLmdldEZpbGVTaGEocGF0aCwgYnJhbmNoKTtcbiAgICBpZiAoIXNoYSkgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBHaXRIdWJBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2dpdGh1Yi9hZGFwdGVyLmpzXCI7XG5cbi8vIE9wZW4gdGhlIHBpbm5lZCBpbXBsZW1lbnRhdGlvbi1wcm9ncmVzcyBjb21tZW50IGJlZm9yZSB0aGUgYWdlbnQgcnVucy4gVGhlXG4vLyBjb21tZW50IGlkIGlzIHBhc3NlZCB0byB0aGUgYWdlbnQgc28gaXQgY2FuIGNhbGwgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc1xuLy8gdG8gZmxpcCBjaGVja2JveGVzIGFzIGl0IGZpbmlzaGVzIHBsYW4gdGFza3MuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJvZ3Jlc3NDb21tZW50KFxuICBhZGFwdGVyOiBHaXRIdWJBZGFwdGVyLFxuICBwck51bWJlcjogbnVtYmVyLFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIGFkYXB0ZXIucG9zdElzc3VlQ29tbWVudChcbiAgICBwck51bWJlcixcbiAgICBcIioqU2hvcGZsb29yIGltcGxlbWVudGF0aW9uIGluIHByb2dyZXNzLioqXFxuXFxuSSB3aWxsIHVwZGF0ZSB0aGlzIGNvbW1lbnQgd2l0aCBwcm9ncmVzcyBhcyBJIHdvcmsuIFN0YW5kIGJ5LlwiLFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluYWxpemVQcm9ncmVzc0NvbW1lbnQoXG4gIGFkYXB0ZXI6IEdpdEh1YkFkYXB0ZXIsXG4gIGNvbW1lbnRJZDogbnVtYmVyLFxuICB0ZXJtaW5hbFN0YXRlOiBcInN1Y2Nlc3NcIiB8IFwiZmFpbHVyZVwiLFxuICBmaW5hbEJvZHk6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBoZWFkZXIgPVxuICAgIHRlcm1pbmFsU3RhdGUgPT09IFwic3VjY2Vzc1wiXG4gICAgICA/IFwiKipTaG9wZmxvb3IgaW1wbGVtZW50YXRpb24gY29tcGxldGUuKipcIlxuICAgICAgOiBcIioqU2hvcGZsb29yIGltcGxlbWVudGF0aW9uIGVuZGVkIHdpdGggZXJyb3JzLioqXCI7XG4gIGF3YWl0IGFkYXB0ZXIudXBkYXRlQ29tbWVudChjb21tZW50SWQsIGAke2hlYWRlcn1cXG5cXG4ke2ZpbmFsQm9keX1gKTtcbn1cbiIsICJleHBvcnQgY29uc3QgU1RBR0VTID0gW1xuICBcInRyaWFnZVwiLFxuICBcInNwZWNcIixcbiAgXCJwbGFuXCIsXG4gIFwiaW1wbGVtZW50XCIsXG4gIFwicmV2aWV3XCIsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3RhZ2UgPSAodHlwZW9mIFNUQUdFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IENPTVBMRVhJVElFUyA9IFtcInF1aWNrXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb21wbGV4aXR5ID0gKHR5cGVvZiBDT01QTEVYSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBMQUJFTFMgPSB7XG4gIC8vIHN0YXRlIGxhYmVsc1xuICB0cmlhZ2luZzogXCJzaG9wZmxvb3I6dHJpYWdpbmdcIixcbiAgYXdhaXRpbmdJbmZvOiBcInNob3BmbG9vcjphd2FpdGluZy1pbmZvXCIsXG4gIG5lZWRzU3BlYzogXCJzaG9wZmxvb3I6bmVlZHMtc3BlY1wiLFxuICBzcGVjSW5SZXZpZXc6IFwic2hvcGZsb29yOnNwZWMtaW4tcmV2aWV3XCIsXG4gIG5lZWRzUGxhbjogXCJzaG9wZmxvb3I6bmVlZHMtcGxhblwiLFxuICBwbGFuSW5SZXZpZXc6IFwic2hvcGZsb29yOnBsYW4taW4tcmV2aWV3XCIsXG4gIG5lZWRzSW1wbDogXCJzaG9wZmxvb3I6bmVlZHMtaW1wbFwiLFxuICBpbXBsSW5SZXZpZXc6IFwic2hvcGZsb29yOmltcGwtaW4tcmV2aWV3XCIsXG4gIG5lZWRzUmV2aWV3OiBcInNob3BmbG9vcjpuZWVkcy1yZXZpZXdcIixcbiAgcmV2aWV3UmVxdWVzdGVkQ2hhbmdlczogXCJzaG9wZmxvb3I6cmV2aWV3LXJlcXVlc3RlZC1jaGFuZ2VzXCIsXG4gIHJldmlld0FwcHJvdmVkOiBcInNob3BmbG9vcjpyZXZpZXctYXBwcm92ZWRcIixcbiAgcmV2aWV3U3R1Y2s6IFwic2hvcGZsb29yOnJldmlldy1zdHVja1wiLFxuICBkb25lOiBcInNob3BmbG9vcjpkb25lXCIsXG4gIHJldmlzZTogXCJzaG9wZmxvb3I6cmV2aXNlXCIsXG4gIC8vIG11dGV4IG1hcmtlcnNcbiAgc3BlY1J1bm5pbmc6IFwic2hvcGZsb29yOnNwZWMtcnVubmluZ1wiLFxuICBwbGFuUnVubmluZzogXCJzaG9wZmxvb3I6cGxhbi1ydW5uaW5nXCIsXG4gIGltcGxlbWVudGluZzogXCJzaG9wZmxvb3I6aW1wbGVtZW50aW5nXCIsXG4gIHJldmlld1J1bm5pbmc6IFwic2hvcGZsb29yOnJldmlldy1ydW5uaW5nXCIsXG4gIC8vIGNvbXBsZXhpdHlcbiAgY29tcGxleGl0eVF1aWNrOiBcInNob3BmbG9vcjpxdWlja1wiLFxuICBjb21wbGV4aXR5TWVkaXVtOiBcInNob3BmbG9vcjptZWRpdW1cIixcbiAgY29tcGxleGl0eUxhcmdlOiBcInNob3BmbG9vcjpsYXJnZVwiLFxuICAvLyB1c2VyLXNldCBiZWhhdmlvciBtb2RpZmllcnNcbiAgc2tpcFJldmlldzogXCJzaG9wZmxvb3I6c2tpcC1yZXZpZXdcIixcbiAgd2lwOiBcInNob3BmbG9vcjp3aXBcIixcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFJVTk5JTkdfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgTEFCRUxTLnRyaWFnaW5nLFxuICBMQUJFTFMuc3BlY1J1bm5pbmcsXG4gIExBQkVMUy5wbGFuUnVubmluZyxcbiAgTEFCRUxTLmltcGxlbWVudGluZyxcbiAgTEFCRUxTLnJldmlld1J1bm5pbmcsXG5dKTtcblxuY29uc3QgUlVOTklOR19MQUJFTF9GT1I6IFJlY29yZDxTdGFnZSwgc3RyaW5nPiA9IHtcbiAgdHJpYWdlOiBMQUJFTFMudHJpYWdpbmcsXG4gIHNwZWM6IExBQkVMUy5zcGVjUnVubmluZyxcbiAgcGxhbjogTEFCRUxTLnBsYW5SdW5uaW5nLFxuICBpbXBsZW1lbnQ6IExBQkVMUy5pbXBsZW1lbnRpbmcsXG4gIHJldmlldzogTEFCRUxTLnJldmlld1J1bm5pbmcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTaG9wZmxvb3JMYWJlbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5hbWUuc3RhcnRzV2l0aChcInNob3BmbG9vcjpcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1J1bm5pbmdMYWJlbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFJVTk5JTkdfTEFCRUxTLmhhcyhuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFpbGVkTGFiZWwobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoXCJzaG9wZmxvb3I6ZmFpbGVkOlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZhaWxlZExhYmVsRm9yKHN0YWdlOiBTdGFnZSk6IHN0cmluZyB7XG4gIHJldHVybiBgc2hvcGZsb29yOmZhaWxlZDoke3N0YWdlfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5uaW5nTGFiZWxGb3Ioc3RhZ2U6IFN0YWdlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFJVTk5JTkdfTEFCRUxfRk9SW3N0YWdlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXhpdHlMYWJlbChjOiBDb21wbGV4aXR5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGBzaG9wZmxvb3I6JHtjfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0xhYmVsRm9yKFxuICBzdGFnZTogRXhjbHVkZTxTdGFnZSwgXCJ0cmlhZ2VcIiB8IFwicmV2aWV3XCI+LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbWFwOiBSZWNvcmQ8RXhjbHVkZTxTdGFnZSwgXCJ0cmlhZ2VcIiB8IFwicmV2aWV3XCI+LCBzdHJpbmc+ID0ge1xuICAgIHNwZWM6IExBQkVMUy5uZWVkc1NwZWMsXG4gICAgcGxhbjogTEFCRUxTLm5lZWRzUGxhbixcbiAgICBpbXBsZW1lbnQ6IExBQkVMUy5uZWVkc0ltcGwsXG4gIH07XG4gIHJldHVybiBtYXBbc3RhZ2VdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsRGVmIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vLyBDYW5vbmljYWwgY29sb3IgcGFsZXR0ZS4gU3RhdGUgbGFiZWxzIHNoYXJlIGEgY29vbCBibHVlLCBjb21wbGV4aXR5IGxhYmVsc1xuLy8gc2hhcmUgYSBwZXItYnVja2V0IGNvbG9yLCB0cmFuc2llbnQgbWFya2VycyBhcmUgYW1iZXIsIHRlcm1pbmFsIGZhaWx1cmVzIGFuZFxuLy8gc3R1Y2sgc3RhdGVzIGFyZSByZWQsIHN1Y2Nlc3MgaXMgZ3JlZW4uIEJvb3RzdHJhcC1sYWJlbHMgcmVhZHMgdGhpcyBsaXN0IGFuZFxuLy8gY3JlYXRlcyBhbnkgdGhhdCBkb24ndCBhbHJlYWR5IGV4aXN0IG9uIHRoZSByZXBvLlxuZXhwb3J0IGNvbnN0IExBQkVMX0RFRlM6IExhYmVsRGVmW10gPSBbXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMudHJpYWdpbmcsXG4gICAgY29sb3I6IFwiZmJjYTA0XCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2hvcGZsb29yIHRyaWFnZSBhZ2VudCBpcyBldmFsdWF0aW5nIHRoaXMgaXNzdWUuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuYXdhaXRpbmdJbmZvLFxuICAgIGNvbG9yOiBcImQ5M2YwYlwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJTaG9wZmxvb3IgaXMgd2FpdGluZyBmb3IgdGhlIGlzc3VlIGF1dGhvciB0byBhbnN3ZXIgY2xhcmlmeWluZyBxdWVzdGlvbnMuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuY29tcGxleGl0eVF1aWNrLFxuICAgIGNvbG9yOiBcIjBlOGExNlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNsYXNzaWZpZWQgYXMgYSBxdWljayBmaXggKHN0cmFpZ2h0IHRvIGltcGxlbWVudGF0aW9uKS5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5jb21wbGV4aXR5TWVkaXVtLFxuICAgIGNvbG9yOiBcIjFkNzZkYlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNsYXNzaWZpZWQgYXMgbWVkaXVtIChza2lwIHNwZWMsIGdvIHRvIHBsYW4pLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLmNvbXBsZXhpdHlMYXJnZSxcbiAgICBjb2xvcjogXCI1MzE5ZTdcIixcbiAgICBkZXNjcmlwdGlvbjogXCJDbGFzc2lmaWVkIGFzIGxhcmdlIChmdWxsIHNwZWMsIHBsYW4sIGltcGwgZmxvdykuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMubmVlZHNTcGVjLFxuICAgIGNvbG9yOiBcImEyZWVlZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJlYWR5IGZvciB0aGUgc3BlYyBhZ2VudC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5zcGVjSW5SZXZpZXcsXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3BlYyBQUiBhd2FpdGluZyBodW1hbiByZXZpZXcuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMubmVlZHNQbGFuLFxuICAgIGNvbG9yOiBcImEyZWVlZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJlYWR5IGZvciB0aGUgcGxhbiBhZ2VudC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5wbGFuSW5SZXZpZXcsXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUGxhbiBQUiBhd2FpdGluZyBodW1hbiByZXZpZXcuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMubmVlZHNJbXBsLFxuICAgIGNvbG9yOiBcImEyZWVlZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJlYWR5IGZvciB0aGUgaW1wbGVtZW50YXRpb24gYWdlbnQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMubmVlZHNSZXZpZXcsXG4gICAgY29sb3I6IFwiYTJlZWVmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiSW1wbGVtZW50YXRpb24gY29tcGxldGUsIGFnZW50IHJldmlldyBxdWV1ZWQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyxcbiAgICBjb2xvcjogXCJlOTk2OTVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBZ2VudCByZXZpZXcgcmVxdWVzdGVkIGNoYW5nZXM7IGltcGwgd2lsbCByZS1ydW4uXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMucmV2aWV3QXBwcm92ZWQsXG4gICAgY29sb3I6IFwiMGU4YTE2XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQWdlbnQgcmV2aWV3IHBhc3NlZDsgcmVhZHkgZm9yIGh1bWFuIG1lcmdlLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnJldmlld1N0dWNrLFxuICAgIGNvbG9yOiBcImI2MDIwNVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJldmlldyBsb29wIGV4Y2VlZGVkIGl0ZXJhdGlvbiBjYXA7IG5lZWRzIGh1bWFuLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLmltcGxJblJldmlldyxcbiAgICBjb2xvcjogXCJhMmVlZWZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJJbXBsIFBSIGF3YWl0aW5nIGh1bWFuIHJldmlldyAoc2tpcC1yZXZpZXcgY2FzZSkuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuc2tpcFJldmlldyxcbiAgICBjb2xvcjogXCJlZGVkZWRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJCeXBhc3MgdGhlIGFnZW50IHJldmlldyBzdGFnZSBmb3IgdGhpcyB0aWNrZXQuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuZG9uZSxcbiAgICBjb2xvcjogXCIwZThhMTZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJJbXBsZW1lbnRhdGlvbiBtZXJnZWQuIFBpcGVsaW5lIGNvbXBsZXRlLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnJldmlzZSxcbiAgICBjb2xvcjogXCJlZGVkZWRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJNYW51YWwgdHJpZ2dlciB0byByZS1ydW4gdGhlIGN1cnJlbnQgc3RhZ2UuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBmYWlsZWRMYWJlbEZvcihcInRyaWFnZVwiKSxcbiAgICBjb2xvcjogXCJiNjAyMDVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJUcmlhZ2Ugc3RhZ2UgZmFpbGVkLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogZmFpbGVkTGFiZWxGb3IoXCJzcGVjXCIpLFxuICAgIGNvbG9yOiBcImI2MDIwNVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNwZWMgc3RhZ2UgZmFpbGVkLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogZmFpbGVkTGFiZWxGb3IoXCJwbGFuXCIpLFxuICAgIGNvbG9yOiBcImI2MDIwNVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBsYW4gc3RhZ2UgZmFpbGVkLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogZmFpbGVkTGFiZWxGb3IoXCJpbXBsZW1lbnRcIiksXG4gICAgY29sb3I6IFwiYjYwMjA1XCIsXG4gICAgZGVzY3JpcHRpb246IFwiSW1wbGVtZW50YXRpb24gc3RhZ2UgZmFpbGVkLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogZmFpbGVkTGFiZWxGb3IoXCJyZXZpZXdcIiksXG4gICAgY29sb3I6IFwiYjYwMjA1XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmV2aWV3IHN0YWdlIGZhaWxlZC5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5zcGVjUnVubmluZyxcbiAgICBjb2xvcjogXCJmYmNhMDRcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVHJhbnNpZW50IG1hcmtlcjogYSBzcGVjIHN0YWdlIGpvYiBpcyBhY3RpdmVseSBydW5uaW5nIGZvciB0aGlzIGlzc3VlLiBSZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc3RhZ2UgY29tcGxldGVzLlwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogTEFCRUxTLnBsYW5SdW5uaW5nLFxuICAgIGNvbG9yOiBcImZiY2EwNFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUcmFuc2llbnQgbWFya2VyOiBhIHBsYW4gc3RhZ2Ugam9iIGlzIGFjdGl2ZWx5IHJ1bm5pbmcgZm9yIHRoaXMgaXNzdWUuIFJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzdGFnZSBjb21wbGV0ZXMuXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBMQUJFTFMuaW1wbGVtZW50aW5nLFxuICAgIGNvbG9yOiBcImZiY2EwNFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUcmFuc2llbnQgbWFya2VyOiBhbiBpbXBsZW1lbnQgc3RhZ2Ugam9iIGlzIGFjdGl2ZWx5IHJ1bm5pbmcgZm9yIHRoaXMgaXNzdWUuIFJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzdGFnZSBjb21wbGV0ZXMuIElmIHRoaXMgbGFiZWwgaXMgc3R1Y2sgYWZ0ZXIgYSBjcmFzaCwgcmVtb3ZlIGl0IG1hbnVhbGx5IHRvIHVuYmxvY2sgcmV0cmllcy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy5yZXZpZXdSdW5uaW5nLFxuICAgIGNvbG9yOiBcImZiY2EwNFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUcmFuc2llbnQgbWFya2VyOiBhIHJldmlldyBzdGFnZSBqb2IgaXMgYWN0aXZlbHkgcnVubmluZyBmb3IgdGhpcyBpc3N1ZS4gUmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHN0YWdlIGNvbXBsZXRlcy5cIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IExBQkVMUy53aXAsXG4gICAgY29sb3I6IFwiZmJjYTA0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkltcGxlbWVudGF0aW9uIGluIHByb2dyZXNzLiBTdXBwcmVzc2VzIHJldmlldyB0cmlnZ2VycyB1bnRpbCByZW1vdmVkLlwiLFxuICB9LFxuXTtcbiIsICJpbXBvcnQgdHlwZSB7IEdpdEh1YkFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZ2l0aHViL2FkYXB0ZXIuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDaGVja1Jldmlld1NraXBSZXN1bHQge1xuICBza2lwOiBib29sZWFuO1xuICByZWFzb24/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSXNzdWVOdW1iZXJGcm9tQm9keShib2R5OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICghYm9keSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG0gPSBib2R5Lm1hdGNoKC9TaG9wZmxvb3ItSXNzdWU6XFxzKiMoXFxkKykvKTtcbiAgcmV0dXJuIG0gPyBOdW1iZXIobVsxXSkgOiBudWxsO1xufVxuXG4vLyBEZWNpZGUgd2hldGhlciB0byBza2lwIHRoZSByZXZpZXcgc3RhZ2UgZm9yIGEgZ2l2ZW4gUFIuIFJldHVybnMgYSByZWFzb25cbi8vIHN0cmluZyBzbyBhdWRpdCBlbWl0dGVycyBjYW4gc3VyZmFjZSB3aHkgcmV2aWV3IHdhcyBza2lwcGVkLiBQb3J0IG9mIHYxJ3Ncbi8vIHJvdXRlci9zcmMvaGVscGVycy9jaGVjay1yZXZpZXctc2tpcC50cy5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja1Jldmlld1NraXAoXG4gIGFkYXB0ZXI6IEdpdEh1YkFkYXB0ZXIsXG4gIHByTnVtYmVyOiBudW1iZXIsXG4pOiBQcm9taXNlPENoZWNrUmV2aWV3U2tpcFJlc3VsdD4ge1xuICBjb25zdCBwciA9IGF3YWl0IGFkYXB0ZXIuZ2V0UHIocHJOdW1iZXIpO1xuICBpZiAocHIuc3RhdGUgPT09IFwiY2xvc2VkXCIpIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJwcl9jbG9zZWRcIiB9O1xuICBpZiAocHIuZHJhZnQpIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJwcl9kcmFmdFwiIH07XG4gIGlmIChwci5sYWJlbHMuc29tZSgobCkgPT4gbC5uYW1lID09PSBcInNob3BmbG9vcjp3aXBcIikpIHtcbiAgICByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwicHJfd2lwX2xhYmVsXCIgfTtcbiAgfVxuICBpZiAocHIubGFiZWxzLnNvbWUoKGwpID0+IGwubmFtZSA9PT0gXCJzaG9wZmxvb3I6c2tpcC1yZXZpZXdcIikpIHtcbiAgICByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfcHJcIiB9O1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luSXNzdWVOdW1iZXIgPSBwYXJzZUlzc3VlTnVtYmVyRnJvbUJvZHkocHIuYm9keSA/PyBudWxsKTtcbiAgaWYgKG9yaWdpbklzc3VlTnVtYmVyICE9PSBudWxsKSB7XG4gICAgY29uc3QgaXNzdWUgPSBhd2FpdCBhZGFwdGVyLmdldElzc3VlKG9yaWdpbklzc3VlTnVtYmVyKTtcbiAgICBpZiAoaXNzdWUuc3RhdGUgPT09IFwiY2xvc2VkXCIpXG4gICAgICByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwib3JpZ2luX2lzc3VlX2Nsb3NlZFwiIH07XG4gICAgaWYgKGlzc3VlLmxhYmVscy5zb21lKChsKSA9PiBsLm5hbWUgPT09IFwic2hvcGZsb29yOnNraXAtcmV2aWV3XCIpKSB7XG4gICAgICByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfaXNzdWVcIiB9O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgYWRhcHRlci5saXN0Q2hhbmdlZEZpbGVzKHByTnVtYmVyKTtcbiAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgc2tpcDogdHJ1ZSwgcmVhc29uOiBcIm5vX2NoYW5nZWRfZmlsZXNcIiB9O1xuICBpZiAoZmlsZXMuZXZlcnkoKGYpID0+IGYuc3RhcnRzV2l0aChcImRvY3Mvc2hvcGZsb29yL1wiKSkpIHtcbiAgICByZXR1cm4geyBza2lwOiB0cnVlLCByZWFzb246IFwib25seV9zaG9wZmxvb3JfZG9jc1wiIH07XG4gIH1cblxuICBjb25zdCByZXZpZXdzID0gYXdhaXQgYWRhcHRlci5nZXRQclJldmlld3NBdFNoYShwck51bWJlciwgcHIuaGVhZC5zaGEpO1xuICBjb25zdCBoYXNTaG9wZmxvb3JSZXZpZXcgPSByZXZpZXdzLnNvbWUoKHIpID0+XG4gICAgci5ib2R5LnN0YXJ0c1dpdGgoXCI8IS0tIHNob3BmbG9vci1yZXZpZXcgLS0+XCIpLFxuICApO1xuICBpZiAoaGFzU2hvcGZsb29yUmV2aWV3KVxuICAgIHJldHVybiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJhbHJlYWR5X3Jldmlld2VkX2F0X3NoYVwiIH07XG5cbiAgcmV0dXJuIHsgc2tpcDogZmFsc2UgfTtcbn1cbiIsICJpbXBvcnQgeyBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Jldmlld1NraXAgfSBmcm9tIFwiLi4vX3NoYXJlZC9jaGVjay1yZXZpZXctc2tpcC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBmaW5hbGl6ZVByb2dyZXNzQ29tbWVudCB9IGZyb20gXCIuLi9fc2hhcmVkL3Byb2dyZXNzLWNvbW1lbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgSW1wbGVtZW50RGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5SW1wbGVtZW50QXJncyB7XG4gIGRlY2lzaW9uOiBJbXBsZW1lbnREZWNpc2lvbjtcbiAgcHJvZ3Jlc3NDb21tZW50SWQ6IG51bWJlcjtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG59XG5cbmNvbnN0IElURVJBVElPTl9MSU5FID0gL1Nob3BmbG9vci1SZXZpZXctSXRlcmF0aW9uOlxccyooXFxkKykvO1xuXG5mdW5jdGlvbiBwYXJzZUl0ZXJhdGlvbkZyb21Cb2R5KGJvZHk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICBpZiAoIWJvZHkpIHJldHVybiAwO1xuICBjb25zdCBtID0gYm9keS5tYXRjaChJVEVSQVRJT05fTElORSk7XG4gIGlmICghbT8uWzFdKSByZXR1cm4gMDtcbiAgcmV0dXJuIE51bWJlcihtWzFdKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRJbXBsUHJCb2R5KFxuICBhZ2VudEJvZHk6IHN0cmluZyxcbiAgaXNzdWVOdW1iZXI6IG51bWJlcixcbiAgcmV2aWV3SXRlcmF0aW9uOiBudW1iZXIsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7YWdlbnRCb2R5LnRyaW1FbmQoKX1cXG5cXG4tLS1cXG5TaG9wZmxvb3ItSXNzdWU6ICMke2lzc3VlTnVtYmVyfVxcblNob3BmbG9vci1TdGFnZTogaW1wbGVtZW50XFxuU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb246ICR7cmV2aWV3SXRlcmF0aW9ufVxcbmA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlJbXBsZW1lbnRSZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbiAgbmV4dExhYmVsOiB0eXBlb2YgTEFCRUxTLm5lZWRzUmV2aWV3IHwgdHlwZW9mIExBQkVMUy5pbXBsSW5SZXZpZXc7XG4gIHNraXBSZWFzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUltcGxlbWVudChcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5SW1wbGVtZW50QXJncyxcbik6IFByb21pc2U8QXBwbHlJbXBsZW1lbnRSZXN1bHQ+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcImFwcGx5SW1wbGVtZW50IHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgeyBkZWNpc2lvbiwgcHJvZ3Jlc3NDb21tZW50SWQsIGJyYW5jaE5hbWUsIGJhc2VCcmFuY2ggfSA9IGFyZ3M7XG4gIGNvbnN0IGlzc3VlTnVtYmVyID0gY3R4Lmlzc3VlLm51bWJlcjtcblxuICAvLyBQcmUtY29uZGl0aW9uOiB0aGUgb3JjaGVzdHJhdG9yIHNldCBzaG9wZmxvb3I6aW1wbGVtZW50aW5nIGJlZm9yZVxuICAvLyBpbnZva2luZyB0aGUgaW1wbCBhZ2VudC4gUmVmdXNlIHRvIGZpbmFsaXplIGlmIHRoZSBtYXJrZXIgaXMgbWlzc2luZy5cbiAgaWYgKCFjdHguaXNzdWUubGFiZWxzLmluY2x1ZGVzKExBQkVMUy5pbXBsZW1lbnRpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGFwcGx5SW1wbGVtZW50OiByZWZ1c2luZyB0byBmaW5hbGl6ZSBpbXBsZW1lbnQgZm9yIGlzc3VlICMke2lzc3VlTnVtYmVyfTogc2hvcGZsb29yOmltcGxlbWVudGluZyBtYXJrZXIgaXMgbm90IHByZXNlbnQuYCxcbiAgICApO1xuICB9XG5cbiAgLy8gT3BlbiAob3IgdXBzZXJ0KSB0aGUgaW1wbCBQUiBhcyBhIGRyYWZ0LiBUaGUgcm91dGVyIHB1c2hlZCB0aGUgYWdlbnQnc1xuICAvLyBjb21taXRzIHRvIGJyYW5jaE5hbWUgdXBzdHJlYW0gb2YgdGhpcyBjYWxsIChzZWUgc3JjL3J1bm5lcnMudHMgYW5kXG4gIC8vIHNyYy9naXQvaW1wbC1jaGVja291dC50cyk7IHRoZSBicmFuY2ggaXMgb24gb3JpZ2luIGJ5IHRoZSB0aW1lIHdlIGdldFxuICAvLyBoZXJlLiBwcmVzZXJ2ZUJvZHlJZkV4aXN0cyBpcyB0cnVlIG9uIHRoZSBvcGVuU3RhZ2VQciBhZGFwdGVyIGNhbGwgc28gYW5cbiAgLy8gaW4tZmxpZ2h0IHJldmlldy1pdGVyYXRpb24gZm9vdGVyIGlzIG5vdCBjbG9iYmVyZWQ7IHdlIHRoZW4gdXBkYXRlXG4gIC8vIHRpdGxlK2JvZHkgZXhwbGljaXRseSBoZXJlLlxuICBjb25zdCBvcGVuZWQgPSBhd2FpdCBjdHguZ2l0aHViLm9wZW5TdGFnZVByKHtcbiAgICBiYXNlOiBiYXNlQnJhbmNoLFxuICAgIGhlYWQ6IGJyYW5jaE5hbWUsXG4gICAgdGl0bGU6IGRlY2lzaW9uLnByX3RpdGxlLFxuICAgIGJvZHk6IGRlY2lzaW9uLnByX2JvZHksXG4gICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZHJhZnQ6IHRydWUsXG4gICAgcHJlc2VydmVCb2R5SWZFeGlzdHM6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFJlLXJlYWQgc28gd2UgY2FuIHByZXNlcnZlIHRoZSByZXZpZXcgaXRlcmF0aW9uIGNvdW50ZXIuXG4gIGNvbnN0IGV4aXN0aW5nUHIgPSBhd2FpdCBjdHguZ2l0aHViLmdldFByKG9wZW5lZC5udW1iZXIpO1xuICBjb25zdCByZXZpZXdJdGVyYXRpb24gPSBwYXJzZUl0ZXJhdGlvbkZyb21Cb2R5KGV4aXN0aW5nUHIuYm9keSk7XG4gIGNvbnN0IGJvZHlXaXRoRm9vdGVyID0gYnVpbGRJbXBsUHJCb2R5KFxuICAgIGRlY2lzaW9uLnByX2JvZHksXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgcmV2aWV3SXRlcmF0aW9uLFxuICApO1xuICBhd2FpdCBjdHguZ2l0aHViLnVwZGF0ZVByKG9wZW5lZC5udW1iZXIsIHtcbiAgICB0aXRsZTogZGVjaXNpb24ucHJfdGl0bGUsXG4gICAgYm9keTogYm9keVdpdGhGb290ZXIsXG4gIH0pO1xuXG4gIC8vIEZpbmFsaXplIHRoZSBwcm9ncmVzcyBjb21tZW50IHdpdGggdGhlIGFnZW50J3Mgc3RydWN0dXJlZCBzdW1tYXJ5LlxuICBjb25zdCBmaW5hbEJvZHkgPSByZW5kZXJGaW5hbFByb2dyZXNzKGRlY2lzaW9uKTtcbiAgYXdhaXQgZmluYWxpemVQcm9ncmVzc0NvbW1lbnQoXG4gICAgY3R4LmdpdGh1YixcbiAgICBwcm9ncmVzc0NvbW1lbnRJZCxcbiAgICBcInN1Y2Nlc3NcIixcbiAgICBmaW5hbEJvZHksXG4gICk7XG5cbiAgLy8gRmxpcCB0aGUgZHJhZnQgdG8gcmVhZHkgc28gdGhlIHJldmlldyBzdGFnZSBjYW4gZmlyZS5cbiAgYXdhaXQgY3R4LmdpdGh1Yi5tYXJrUHVsbFJlcXVlc3RSZWFkeUZvclJldmlldyhvcGVuZWQubnVtYmVyKTtcblxuICAvLyBEZWNpZGUgbmV4dCBsYWJlbDogcmV2aWV3LXNraXAgY2hlY2tzIChkcmFmdCwgd2lwLCBza2lwLXJldmlldywgZG9jLW9ubHksXG4gIC8vIGFscmVhZHktcmV2aWV3ZWQpIHNob3J0LWNpcmN1aXQgdG8gaW1wbC1pbi1yZXZpZXcuIEFsc28gc2hvcnQtY2lyY3VpdFxuICAvLyB3aGVuIG5vIHNlcGFyYXRlIHJldmlldyBBcHAgaXMgY29uZmlndXJlZCAtLSByb3V0aW5nIHRvIG5lZWRzLXJldmlld1xuICAvLyB3b3VsZCBzdHJhbmQgdGhlIGlzc3VlIGJlY2F1c2UgdGhlIHJldmlldyBzdGFnZSBjYW5ub3QgcG9zdC5cbiAgY29uc3QgaGFzUmV2aWV3QXBwID0gY3R4LnJldmlld0dpdGh1YiAhPT0gbnVsbDtcbiAgY29uc3Qgc2tpcCA9IGhhc1Jldmlld0FwcFxuICAgID8gYXdhaXQgY2hlY2tSZXZpZXdTa2lwKGN0eC5naXRodWIsIG9wZW5lZC5udW1iZXIpXG4gICAgOiB7IHNraXA6IHRydWUsIHJlYXNvbjogXCJub19yZXZpZXdfYXBwX2NvbmZpZ3VyZWRcIiB9O1xuICBjb25zdCBuZXh0TGFiZWwgPSBza2lwLnNraXAgPyBMQUJFTFMuaW1wbEluUmV2aWV3IDogTEFCRUxTLm5lZWRzUmV2aWV3O1xuXG4gIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIG5leHRMYWJlbCk7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5uZWVkc0ltcGwpO1xuICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMuaW1wbGVtZW50aW5nKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMucmV2aXNlKTtcbiAgLy8gQSBuZXcgaW1wbCBydW4gcHJvZHVjZXMgYSBuZXcgaGVhZCBTSEEsIHNvIGFueSBwcmlvciByZXZpZXctYXBwcm92ZWRcbiAgLy8gbGFiZWwgaXMgc3RhbGUuIFN0cmlwIGl0IHNvIGRvd25zdHJlYW0gY29uc3VtZXJzIHNlZSB0aGUgY29ycmVjdCBzdGF0ZS5cbiAgaWYgKG5leHRMYWJlbCA9PT0gTEFCRUxTLm5lZWRzUmV2aWV3KSB7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnJldmlld0FwcHJvdmVkKTtcbiAgfVxuXG4gIGN0eC5hdWRpdCh7IHR5cGU6IFwicHJfb3BlbmVkXCIsIHN0YWdlOiBcImltcGxlbWVudFwiLCBwck51bWJlcjogb3BlbmVkLm51bWJlciB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBhZGQ6IFtuZXh0TGFiZWxdLFxuICAgIHJlbW92ZTogW1xuICAgICAgTEFCRUxTLm5lZWRzSW1wbCxcbiAgICAgIExBQkVMUy5pbXBsZW1lbnRpbmcsXG4gICAgICBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyxcbiAgICAgIC4uLihuZXh0TGFiZWwgPT09IExBQkVMUy5uZWVkc1JldmlldyA/IFtMQUJFTFMucmV2aWV3QXBwcm92ZWRdIDogW10pLFxuICAgIF0sXG4gIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfZGVjaWRlZFwiLFxuICAgIHN0YWdlOiBcImltcGxlbWVudFwiLFxuICAgIGRlY2lzaW9uLFxuICAgIHRva2Vuc1VzZWQ6IDAsXG4gICAgY29zdFVzZDogMCxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwck51bWJlcjogb3BlbmVkLm51bWJlcixcbiAgICB1cmw6IG9wZW5lZC51cmwsXG4gICAgbmV4dExhYmVsLFxuICAgIC4uLihza2lwLnJlYXNvbiA/IHsgc2tpcFJlYXNvbjogc2tpcC5yZWFzb24gfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmluYWxQcm9ncmVzcyhkOiBJbXBsZW1lbnREZWNpc2lvbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gW1xuICAgIGQuc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudCxcbiAgICBcIlwiLFxuICAgIFwiIyMjIEZpbGVzIGNoYW5nZWRcIixcbiAgICAuLi5kLmNoYW5nZWRfZmlsZXMubWFwKChmKSA9PiBgLSBcXGAke2Z9XFxgYCksXG4gIF07XG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuIiwgIjx0ZGRfYW5kX3Rlc3RpbmdfZGlzY2lwbGluZT5cblRoZSBydWxlcyBiZWxvdyBnb3Zlcm4gZXZlcnkgaW1wbGVtZW50ZXIgc3ViYWdlbnQgeW91IGRpc3BhdGNoIGFuZCBldmVyeSBjb21taXQgeW91IG1ha2UuIFRoZXkgYXBwbHkgb24gdG9wIG9mIHRoZSBwbGFuLCB0aGUgaXNzdWUsIG9yIHlvdXIgb3duIHJlYXNvbmluZy5cblxuKipUREQgaXJvbiBydWxlcy4qKiBVc2UgdGhpcyBsb29wIGZvciBldmVyeSB0YXNrIHRoYXQgY2hhbmdlcyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuXG4xLiAqKlJFRC4qKiBXcml0ZSBvbmUgZmFpbGluZyB0ZXN0IHRoYXQgbmFtZXMgdGhlIGJlaGF2aW9yIHlvdSBpbnRlbmQgdG8gYWRkIG9yIGZpeC5cbjIuICoqVmVyaWZ5IHRoZSBmYWlsdXJlLioqIFJ1biB0aGUgdGVzdC4gV2F0Y2hpbmcgdGhlIGZhaWx1cmUgaXMgbWFuZGF0b3J5OyBhIHRlc3QgdGhhdCBoYXMgbmV2ZXIgZmFpbGVkIGlzIG5vdCBhIHJlZ3Jlc3Npb24gZ3VhcmQuXG4zLiAqKkdSRUVOLioqIFdyaXRlIHRoZSBtaW5pbXVtIHByb2R1Y3Rpb24gY29kZSB0aGF0IG1ha2VzIHRoZSB0ZXN0IHBhc3MuIE5vIGV4dHJhIGZpZWxkcywgbm8gZXh0cmEgYnJhbmNoZXMsIG5vIGFudGljaXBhdGluZyB0aGUgbmV4dCB0ZXN0LlxuNC4gKipWZXJpZnkgdGhlIHBhc3MuKiogUmUtcnVuIHRoZSBmYWlsaW5nIHRlc3QsIHRoZW4gcmUtcnVuIHRoZSBicm9hZGVyIHN1aXRlIGF0IHRoZSBsYXllciB0aGUgcGxhbiBuYW1lZCBmb3IgdGhpcyB0YXNrLlxuNS4gKipSRUZBQ1RPUioqIG9ubHkgd2hlbiB0aGUgcmVmYWN0b3IgaXMganVzdGlmaWVkIGJ5IHRoZSBjaGFuZ2UgeW91IGp1c3QgbWFkZS4gVGVzdHMgc3RheSBncmVlbiB0aHJvdWdob3V0LlxuXG5BZGRpdGlvbmFsIHJ1bGVzOlxuXG4tIFRlc3QgbmFtZXMgZGVzY3JpYmUgYmVoYXZpb3IgKGByZXR1cm5zXzQwNF93aGVuX3VzZXJfaXNfbWlzc2luZ2ApLCBub3QgaW1wbGVtZW50YXRpb24gKGBjYWxsc19sb29rdXBfdGhlbl9yZXR1cm5zYCkuXG4tIE9uZSBhc3NlcnRpb24gcGVyIGJlaGF2aW9yLiBEaWZmZXJlbnQgYmVoYXZpb3JzIGdldCBkaWZmZXJlbnQgdGVzdHMsIG5vdCBzdGFja2VkIGFzc2VydGlvbnMuXG4tIFByZWZlciByZWFsIGNvZGUgb3ZlciBtb2Nrcy4gUmVhY2ggZm9yIGEgbW9jayBvbmx5IHdoZW4gdGhlIHJlYWwgZGVwZW5kZW5jeSBpcyBub24tZGV0ZXJtaW5pc3RpYywgc2xvdywgb3Igb3V0IG9mIHByb2Nlc3MuXG4tIEJ1Zy1maXggZGlzY2lwbGluZTogdGhlIGZpcnN0IGNvbW1pdCBvbiBhIGJ1ZyBmaXggaXMgdGhlIHJlcHJvZHVjaW5nIHRlc3QuIFRoZSBmaXggaXMgdGhlIHNlY29uZCBjb21taXQuIFRoZSByZXByb2R1Y2luZyB0ZXN0IG11c3QgaGF2ZSBiZWVuIHNlZW4gdG8gZmFpbCBiZWZvcmUgdGhlIGZpeCBsYW5kcy5cblxuKipFeGNlcHRpb24gY2xhdXNlLioqIE5vbi10ZXN0YWJsZSBjaGFuZ2VzIHNraXAgdGhlIFJFRC9HUkVFTiBjeWNsZSBlbnRpcmVseS4gVGhlc2UgaW5jbHVkZTogZG9jLW9ubHkgZWRpdHMsIGZvcm1hdHRpbmcgcGFzc2VzLCBkaXN0LWJ1bmRsZSByZWJ1aWxkcywgcHJvbXB0LW9ubHkgZWRpdHMsIGFuZCBhbnkgY2hhbmdlIHRoYXQgaGFzIG5vIGV4ZWN1dGFibGUgYmVoYXZpb3IgdG8gYXNzZXJ0IGFnYWluc3QuIFdoZW4geW91IHNraXAgdGhlIGN5Y2xlLCBuYW1lIHRoZSBleGNlcHRpb24gdGhhdCBhcHBsaWVzIGluIHRoZSBjb21taXQgYm9keSBvciB0aGUgcHJvZ3Jlc3MgdXBkYXRlIHNvIHRoZSByZXZpZXdlciBjYW4gc2VlIHRoZSBvbWlzc2lvbiB3YXMgaW50ZW50aW9uYWwuXG48L3RkZF9hbmRfdGVzdGluZ19kaXNjaXBsaW5lPlxuXG48dGVzdGluZ19hbnRpX3BhdHRlcm5zPlxuQmVmb3JlIHdyaXRpbmcgYW55IHRlc3QsIG1vY2ssIG9yIGZpeHR1cmUsIHdhbGsgdGhlc2UgZ2F0ZXMuIEVhY2ggb25lIGNhdGNoZXMgYSBmYWlsdXJlIG1vZGUgdGhhdCBwcm9kdWNlcyBncmVlbiB0ZXN0cyBmb3IgYnJva2VuIGNvZGUuXG5cbi0gKipObyBtb2NrLWlkZW50aXR5IGFzc2VydGlvbnMuKiogQXNzZXJ0aW5nIHRoYXQgYSBtb2NrIHJldHVybmVkIGEgdmFsdWUgeW91IHlvdXJzZWxmIGluamVjdGVkIHJldHVybnMgbm8gaW5mb3JtYXRpb24gYWJvdXQgcHJvZHVjdGlvbiBiZWhhdmlvci4gSWYgdGhlIG9ubHkgd2F5IHRvIG1ha2UgYSB0ZXN0IHBhc3MgaXMgdG8gcmVhZCBiYWNrIHRoZSBtb2NrJ3Mgc2V0dXAsIHRoZSB0ZXN0IGlzIHRlc3RpbmcgdGhlIHRlc3QsIG5vdCB0aGUgc3lzdGVtLiBUaGlzIGluY2x1ZGVzIGFzc2VydGluZyBvbiBgKi1tb2NrYCB0ZXN0IElEcywgc2VudGluZWwgc3RyaW5ncywgb3IgYW55IHZhbHVlIHRoZSB0ZXN0IGl0c2VsZiB3aXJlZCBpbnRvIHRoZSBkZXBlbmRlbmN5LlxuLSAqKk5vIHRlc3Qtb25seSBtZXRob2RzIG9uIHByb2R1Y3Rpb24gY2xhc3Nlcy4qKiBBIG1ldGhvZCB0aGF0IGV4aXN0cyBzb2xlbHkgdG8gbWFrZSB0ZXN0aW5nIGVhc2llciBpcyBhIGRlc2lnbiBzbWVsbC4gVGhlIGJlaGF2aW9yIGlzIGhhcmQgdG8gdGVzdCBiZWNhdXNlIHRoZSBzZWFtcyBhcmUgd3Jvbmc7IGZpeCB0aGUgc2VhbXMgaW5zdGVhZCBvZiB3aWRlbmluZyB0aGUgcHJvZHVjdGlvbiBzdXJmYWNlLlxuLSAqKk1hcCB0aGUgZnVsbCBzaWRlLWVmZmVjdCBzdXJmYWNlIGJlZm9yZSBtb2NraW5nLioqIEEgbW9jayB0aGF0IHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGJ1dCBza2lwcyBhIHNpZGUgZWZmZWN0ICh3cml0ZXMgYSByb3csIGZpcmVzIGFuIGV2ZW50LCBhZHZhbmNlcyBhIGNsb2NrLCBtdXRhdGVzIGEgc2luZ2xldG9uKSBwcm9kdWNlcyBhIGdyZWVuIHRlc3QgZm9yIGNvZGUgdGhhdCBpcyBzaWxlbnRseSBicm9rZW4uIFJlYWQgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24gZmlyc3QsIHRoZW4gc3R1Yi5cbi0gKipNaXJyb3IgdGhlIGNvbXBsZXRlIHJlYWwgc2hhcGUgaW4gbW9jayByZXNwb25zZXMuKiogQSBgeyBpZDogMSB9YCBzdHViIGZvciBhIHJlYWwgc2hhcGUgd2l0aCB0aGlydHkgZmllbGRzIGhpZGVzIGV2ZXJ5IG51bGwtZGVyZWYgdGhlIHByb2R1Y3Rpb24gY29kZSB3b3VsZCBvdGhlcndpc2UgY3Jhc2ggb24uIEVpdGhlciByZXR1cm4gdGhlIGZ1bGwgc2hhcGUgb3Igd2lyZSBhIHJlYWwgZmFrZS5cbiAgPC90ZXN0aW5nX2FudGlfcGF0dGVybnM+XG5cbjxtaW5pbWl6ZV9vdmVyZW5naW5lZXJpbmc+XG5NYWtlIG9ubHkgdGhlIGNoYW5nZXMgdGhlIHRhc2sgZGlyZWN0bHkgcmVxdWlyZXMuIFJlc2lzdCB0aGUgaW1wdWxzZSB0byBsZWF2ZSB0aGUgY29kZSBcImJldHRlciB0aGFuIHlvdSBmb3VuZCBpdFwiIGlmIHRoZSBpbXByb3ZlbWVudCBpcyBvdXRzaWRlIHRoZSB0YXNrJ3Mgc2NvcGUuXG5cbi0gKipTY29wZToqKiBEbyBub3QgYWRkIGZlYXR1cmVzLCByZWZhY3RvciB1bnJlbGF0ZWQgY29kZSwgb3IgbWFrZSBcImltcHJvdmVtZW50c1wiIGJleW9uZCB3aGF0IHRoZSB0YXNrIGFza3MgZm9yLiBBIGJ1ZyBmaXggZG9lcyBub3QgbmVlZCBzdXJyb3VuZGluZyBjbGVhbnVwOyBhIG9uZS1zaG90IG9wZXJhdGlvbiBkb2VzIG5vdCBuZWVkIGEgaGVscGVyLlxuLSAqKkRvY3VtZW50YXRpb246KiogRG8gbm90IGFkZCBkb2NzdHJpbmdzLCBjb21tZW50cywgb3IgdHlwZSBhbm5vdGF0aW9ucyB0byBjb2RlIHlvdSBkaWQgbm90IGNoYW5nZS4gRG8gbm90IGV4cGxhaW4gV0hBVCBjb2RlIGRvZXMgaW4gY29tbWVudHM7IHdlbGwtbmFtZWQgaWRlbnRpZmllcnMgYWxyZWFkeSBkbyB0aGF0LiBPbmx5IGNvbW1lbnQgd2hlbiB0aGUgV0hZIGlzIG5vbi1vYnZpb3VzIChhIGhpZGRlbiBjb25zdHJhaW50LCBhIHN1YnRsZSBpbnZhcmlhbnQsIGEgd29ya2Fyb3VuZCBmb3IgYSBzcGVjaWZpYyBidWcpLlxuLSAqKkRlZmVuc2l2ZSBjb2Rpbmc6KiogRG8gbm90IGFkZCBlcnJvciBoYW5kbGluZywgZmFsbGJhY2tzLCBvciB2YWxpZGF0aW9uIGZvciBzY2VuYXJpb3MgdGhhdCBjYW5ub3QgaGFwcGVuLiBUcnVzdCBpbnRlcm5hbCBjYWxsZXJzIGFuZCBmcmFtZXdvcmsgZ3VhcmFudGVlcy4gVmFsaWRhdGUgb25seSBhdCBzeXN0ZW0gYm91bmRhcmllcyAodXNlciBpbnB1dCwgZXh0ZXJuYWwgQVBJcykuXG4tICoqQWJzdHJhY3Rpb25zOioqIERvIG5vdCBjcmVhdGUgaGVscGVycywgYmFzZSBjbGFzc2VzLCBvciB3cmFwcGVycyBmb3Igb25lLXRpbWUgb3BlcmF0aW9ucy4gRG8gbm90IGRlc2lnbiBmb3IgaHlwb3RoZXRpY2FsIGZ1dHVyZSByZXF1aXJlbWVudHMuIFRocmVlIHNpbWlsYXIgbGluZXMgYmVhdCBhIHByZW1hdHVyZSBhYnN0cmFjdGlvbi5cbiAgPC9taW5pbWl6ZV9vdmVyZW5naW5lZXJpbmc+XG5cbjxwcmVfb3V0cHV0X2NoZWNrbGlzdD5cbkJlZm9yZSBlbWl0dGluZyB0aGUgc3RydWN0dXJlZCBvdXRwdXQsIHdhbGsgdGhpcyBjaGVja2xpc3QgaW4gb3JkZXIuIElmIGFueSBpdGVtIGZhaWxzLCBmaXggdGhlIHVuZGVybHlpbmcgcHJvYmxlbSBhbmQgcmUtd2FsayB0aGUgbGlzdDsgZG8gTk9UIHJlbGF4IHRoZSBydWxlIHRvIGZpdCBhIHBhcnRpYWwgcmVzdWx0LlxuXG4xLiBgZ2l0IHN0YXR1c2AgaXMgY2xlYW4uIEV2ZXJ5IG1vZGlmaWNhdGlvbiBpcyBjb21taXR0ZWQuXG4yLiBFdmVyeSBjb21taXQgbWVzc2FnZSBzdGFydHMgd2l0aCBhIHZhbGlkIENvbnZlbnRpb25hbCBDb21taXRzIHR5cGUgKGBmZWF0YCwgYGZpeGAsIGBkb2NzYCwgYHN0eWxlYCwgYHJlZmFjdG9yYCwgYHBlcmZgLCBgdGVzdGAsIGBjaG9yZWAsIGBidWlsZGAsIGBjaWAsIGByZXZlcnRgKSwgYW4gb3B0aW9uYWwgc2NvcGUgaW4gcGFyZW5zLCB0aGVuIGA6IGRlc2NyaXB0aW9uYCwgYW5kIHRoZSBkZXNjcmlwdGlvbiBhY2N1cmF0ZWx5IHJlZmxlY3RzIHRoZSBkaWZmLlxuMy4gVGVzdHMgcGFzcyBhdCBldmVyeSBsYXllciBuYW1lZCBpbiB0aGUgdGVzdGluZyBzdHJhdGVneSBmb3IgdGhlIGFyZWEgeW91IHRvdWNoZWQuIElmIGEgbGF5ZXIgd2FzIGludGVudGlvbmFsbHkgc2tpcHBlZCB1bmRlciB0aGUgZXhjZXB0aW9uIGNsYXVzZSwgdGhlIGNvbW1pdCBib2R5IG9yIHRoZSBwcm9ncmVzcyB1cGRhdGUgbmFtZXMgd2hpY2ggZXhjZXB0aW9uIGFwcGxpZWQuXG40LiBObyB0ZXN0LW9ubHkgbWV0aG9kcywgZml4dHVyZXMsIG9yIGhvb2tzIHdlcmUgYWRkZWQgdG8gcHJvZHVjdGlvbiBzb3VyY2UuXG41LiBObyBhc3NlcnRpb24gaW4gYW55IG5ldyB0ZXN0IHJlYWRzIGJhY2sgYSB2YWx1ZSB0aGUgdGVzdCBpdHNlbGYgd2lyZWQgaW50byBhIG1vY2suXG42LiBObyBlbSBkYXNoZXMgYXBwZWFyIGluIGNvbW1pdCBtZXNzYWdlcywgY29kZSwgY29tbWVudHMsIG9yIGFueSBvdGhlciBjb250ZW50IHRoZSBkaWZmIGludHJvZHVjZXMuXG43LiBObyBgQ28tQXV0aG9yZWQtQnlgIHRyYWlsZXIgYXBwZWFycyBpbiBhbnkgY29tbWl0IHlvdSBhdXRob3JlZC5cbiAgIDwvcHJlX291dHB1dF9jaGVja2xpc3Q+XG4iLCAiLy8gUHJvbXB0IGZpbGVzIGFyZSBpbmxpbmVkIGFzIHRleHQgaW1wb3J0cyBhdCBidWlsZCB0aW1lIChlc2J1aWxkIHRleHQgbG9hZGVyKVxuLy8gYW5kIGF0IHRlc3QgdGltZSAodml0ZXN0IGlubGluZS10ZXh0IHBsdWdpbiksIHNvIG5vIHJ1bnRpbWUgZnMgcmVhZCBpc1xuLy8gbmVlZGVkLiByZW5kZXJUZW1wbGF0ZSBzdGF5cyBcdTIwMTQgaXQgaW50ZXJwb2xhdGVzIGB7eyBrZXkgfX1gIHBsYWNlaG9sZGVyc1xuLy8gZnJvbSB0aGUgaW5saW5lZCBwcm9tcHQgc3RyaW5ncy5cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRlbXBsYXRlKFxuICB0cGw6IHN0cmluZyxcbiAgdmFyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBzdHJpbmcge1xuICByZXR1cm4gdHBsLnJlcGxhY2UoXG4gICAgL1xce1xce1xccyooW2EtekEtWl9dW2EtekEtWjAtOV9dKilcXHMqXFx9XFx9L2csXG4gICAgKF9tYXRjaCwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghKGtleSBpbiB2YXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlbmRlclRlbXBsYXRlOiBtaXNzaW5nIHZhcmlhYmxlIFwiJHtrZXl9XCJgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHYgPSB2YXJzW2tleV07XG4gICAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyB2IDogSlNPTi5zdHJpbmdpZnkodik7XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vLyBNaXJyb3JzIHYxJ3MgVHJpYWdlT3V0cHV0IHNoYXBlIGZvciB0aGUgaW1wbGVtZW50IGFnZW50LiBDQyB2YWxpZGF0aW9uXG4vLyBpcyBwZXJtaXNzaXZlOiBvbmx5IHJlcXVpcmUgYSByZWNvZ25pemVkIHByZWZpeDsgYWxsb3cgb3B0aW9uYWwgc2NvcGUgYW5kXG4vLyB0cmFpbGluZyBpc3N1ZS1yZWZlcmVuY2UgcGFyZW5zLlxuY29uc3QgQ0NfUFJFRklYX1JFID1cbiAgL14oZmVhdHxmaXh8ZG9jc3xzdHlsZXxyZWZhY3RvcnxwZXJmfHRlc3R8Y2hvcmV8YnVpbGR8Y2l8cmV2ZXJ0KShcXChbXildK1xcKSk/OlxccysuKy9pO1xuXG5leHBvcnQgY29uc3QgSW1wbGVtZW50RGVjaXNpb24gPSB6Lm9iamVjdCh7XG4gIHByX3RpdGxlOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm1pbig1KVxuICAgIC5yZWZpbmUoKHMpID0+IENDX1BSRUZJWF9SRS50ZXN0KHMpLCB7XG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcInByX3RpdGxlIG11c3QgZm9sbG93IENvbnZlbnRpb25hbCBDb21taXRzICh0eXBlKHNjb3BlKT86IHN1YmplY3QpXCIsXG4gICAgfSksXG4gIHByX2JvZHk6IHouc3RyaW5nKCkubWluKDEpLFxuICBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50OiB6LnN0cmluZygpLm1pbigxKSxcbiAgY2hhbmdlZF9maWxlczogei5hcnJheSh6LnN0cmluZygpLm1pbigxKSkuZGVmYXVsdChbXSksXG59KTtcbmV4cG9ydCB0eXBlIEltcGxlbWVudERlY2lzaW9uID0gei5pbmZlcjx0eXBlb2YgSW1wbGVtZW50RGVjaXNpb24+O1xuIiwgIllvdSBhcmUgdGhlIFNob3BmbG9vciBpbXBsZW1lbnRhdGlvbiBhZ2VudC4gWW91ciBzaW5nbGUgam9iIGlzIHRvIGV4ZWN1dGUgb25lIGltcGxlbWVudGF0aW9uIHBsYW4gZW5kLXRvLWVuZCBpbnNpZGUgb25lIHByZS1jcmVhdGVkIGJyYW5jaCBvbiBvbmUgcHJlLW9wZW5lZCBwdWxsIHJlcXVlc3QsIGtlZXBpbmcgYSBsaXZlIHByb2dyZXNzIGNoZWNrbGlzdCBhbmQgcmV0dXJuaW5nIGEgc3RydWN0dXJlZCBzdW1tYXJ5IHdoZW4gZG9uZS4gVGhlIFNob3BmbG9vciByb3V0ZXIgaGFuZGxlcyBhbGwgR2l0SHViIHNpZGUgZWZmZWN0cyBleGNlcHQgdGhlIGNvZGUgY29tbWl0cyB0aGVtc2VsdmVzLlxuXG48cm9sZT5cbllvdSBhcmUgYSBkaXNjaXBsaW5lZCBzZW5pb3IgZW5naW5lZXIuIFlvdSBmb2xsb3cgdGhlIHBsYW4gdGFzayBieSB0YXNrLCBydW4gdGVzdHMgYXMgc3BlY2lmaWVkLCBjb21taXQgd2l0aCB0aGUgZXhhY3QgQ29udmVudGlvbmFsIENvbW1pdHMgbWVzc2FnZXMgdGhlIHBsYW4gc3VwcGxpZXMsIGFuZCBrZWVwIHRoZSBwcm9ncmVzcyBjb21tZW50IHVwZGF0ZWQgc28gYSBodW1hbiBjYW4gd2F0Y2ggeW91ciB3b3JrLlxuPC9yb2xlPlxuXG48cHJpbWFyeV9tZXRob2RvbG9neT5cbllvdSBvcGVyYXRlIGF1dG9ub21vdXNseSBpbnNpZGUgb25lIHByZS1jcmVhdGVkIGJyYW5jaCB0aGF0IGlzIGFscmVhZHkgY2hlY2tlZCBvdXQgZm9yIHlvdS4gVGhlIFNob3BmbG9vciByb3V0ZXIgcHVzaGVzIHRoZSBicmFuY2ggYXQgdGhlIGVuZCBvZiB0aGUgcnVuLCBvcGVucyB0aGUgcHVsbCByZXF1ZXN0LCBhbmQgcmVwb3J0cyBiYWNrIHRvIHRoZSBpc3N1ZS4gVGhlcmUgaXMgbm8gaHVtYW4gcGFydG5lciBkdXJpbmcgdGhlIHJ1bjsgdGhlIGh1bWFuIHNlZXMgeW91ciB3b3JrIGluIHRoZSBQUiBhZnRlciB0aGUgZmFjdC4gRG8gbm90IGNyZWF0ZSBnaXQgd29ya3RyZWVzLCBkbyBub3QgY3JlYXRlIG5ldyBicmFuY2hlcywgZG8gbm90IHJlYmFzZSwgZG8gbm90IHB1c2guIFRoZSByb3V0ZXIgZG9lcyBhbGwgb2YgdGhhdC5cblxuKipQbGFuLWZpcnN0IHJlYWRpbmcuKiogQmVmb3JlIGFueSBjb2RlIGNoYW5nZTpcblxuMS4gUmVhZCB0aGUgcGxhbiBhdCBgcGxhbl9maWxlX3BhdGhgIGVuZCB0byBlbmQuIFJlYWQgdGhlIHNwZWMgYXQgYHNwZWNfZmlsZV9wYXRoYCBpZiBvbmUgZXhpc3RzLlxuMi4gTm90ZSBhbnkgaW50ZXJuYWwgY29udHJhZGljdGlvbnMgaW4gdGhlIHBsYW4sIGFueSBzcGVjIGRlY2lzaW9ucyB0aGUgcGxhbiBjb250cmFkaWN0cywgYW5kIGFueSB0YXNrIHdob3NlIHZlcmlmaWNhdGlvbiBzdGVwIGRvZXMgbm90IG1hdGNoIHRoZSB0ZXN0aW5nIHN0cmF0ZWd5LiBSZWNvcmQgZWFjaCBjb250cmFkaWN0aW9uIGluIHRoZSBwcm9ncmVzcyBjb21tZW50IHdpdGggYSBgWyFdYCBtYXJrZXIgYW5kIGEgb25lLWxpbmUgZGVzY3JpcHRpb24uIFBpY2sgdGhlIG1vc3QgZGVmZW5zaWJsZSBpbnRlcnByZXRhdGlvbiBhbmQgY29udGludWU7IGRvIE5PVCBpbnZlbnQgbWlzc2luZyB0YXNrIGNvbnRlbnQgZnJvbSBzY3JhdGNoLlxuMy4gVHJ1c3QgdGhlIHRlc3RpbmctbGF5ZXIgZGVjaXNpb25zIGluIHRoZSBwbGFuJ3MgYFRlc3Rpbmcgc3RyYXRlZ3lgIHNlY3Rpb24gdmVyYmF0aW0uIFlvdSBkbyBub3QgcmUtZGVyaXZlIHdoaWNoIGxheWVycyB0byB0ZXN0LiBJZiB0aGUgcGxhbiBzYXlzIGEgdGFzayB0ZXN0cyBhdCB1bml0IGFuZCBpbnRlZ3JhdGlvbiwgeW91IHdyaXRlIGJvdGguXG5cbioqUGVyLXRhc2sgZXhlY3V0aW9uIGxvb3AuKiogRm9yIGVhY2ggdGFzayBpbiB0aGUgcGxhbiwgaW4gb3JkZXI6XG5cbjEuIERpc3BhdGNoIGEgZnJlc2ggaW1wbGVtZW50ZXIgc3ViYWdlbnQgdmlhIHRoZSBgQWdlbnRgIHRvb2wuIEdpdmUgaXQgb25seSB0aGUgY29udGVudCBvZiB0aGlzIG9uZSB0YXNrICh2ZXJiYXRpbSBmcm9tIHRoZSBwbGFuKSwgdGhlIHNwZWMgcGF0aCBmb3IgcmVmZXJlbmNlLCBhbmQgdGhlIGJhc2ggYWxsb3dsaXN0LiBEbyBOT1QgaW5jbHVkZSB1bnJlbGF0ZWQgdGFza3M7IGZyZXNoIGNvbnRleHQgcGVyIHRhc2sgaXMgdGhlIGRpc2NpcGxpbmUgdGhhdCBwcmV2ZW50cyBkcmlmdC5cbjIuIFdoZW4gdGhlIGltcGxlbWVudGVyIHJldHVybnMsIGRpc3BhdGNoIGEgc2luZ2xlIHJldmlldyBzdWJhZ2VudCBmb3IgYSBmb2N1c2VkIGRpZmYgcmV2aWV3IGNvdmVyaW5nIGJvdGggc3BlYy9wbGFuIGNvbXBsaWFuY2UgYW5kIGNvZGUgcXVhbGl0eSBpbiBvbmUgY2FsbC4gUGFzcyB0aGUgdGFzayBjb250ZW50LCB0aGUgc3BlYyBwYXRoLCB0aGUgcGxhbiBwYXRoLCBhbmQgdGhlIGRpZmYgcHJvZHVjZWQuIFRoZSByZXZpZXcgc3ViYWdlbnQgcmVwb3J0cyBlaXRoZXIgYGFwcHJvdmVgIG9yIGByZXZpc2U6YCB3aXRoIGEgbGlzdCBvZiBzcGVjaWZpYyBpc3N1ZXMuXG4zLiBJZiB0aGUgcmV2aWV3IHN1YmFnZW50IHJlcG9ydHMgYHJldmlzZWAsIGRpc3BhdGNoIHRoZSBpbXBsZW1lbnRlciBzdWJhZ2VudCBhZ2FpbiB3aXRoIHRoZSB0YXNrIGNvbnRlbnQgcGx1cyB0aGUgcmV2aXNpb24gbGlzdC4gUmVwZWF0IHVudGlsIHRoZSByZXZpZXcgc3ViYWdlbnQgcmVwb3J0cyBgYXBwcm92ZWAsIG9yIHVudGlsIHRocmVlIGltcGxlbWVudC10aGVuLXJldmlldyBpdGVyYXRpb25zIG9uIHRoZSBzYW1lIHRhc2sgaGF2ZSBmYWlsZWQgdG8gY29udmVyZ2UgKHRyZWF0IHRoZSB0aGlyZCBmYWlsdXJlIGFzIGEgYmxvY2tlciwgc2VlIGJlbG93KS5cbjQuIFdoZW4gdGhlIHJldmlldyBzdWJhZ2VudCByZXBvcnRzIGBhcHByb3ZlYCwgY29tbWl0IHRoZSB3b3JrIHdpdGggdGhlIENvbnZlbnRpb25hbCBDb21taXRzIG1lc3NhZ2UgdGhlIHBsYW4gc3VwcGxpZXMgZm9yIHRoaXMgdGFzay4gVXBkYXRlIHRoZSBwcm9ncmVzcyBjb21tZW50LCBmbGlwcGluZyB0aGUgYm94IHRvIGBbeF1gIGZvciB0aGlzIHRhc2sgb25seS4gT25lIHByb2dyZXNzLWNvbW1lbnQgdXBkYXRlIHBlciBjb21wbGV0ZWQgdGFzazsgbm90IGFmdGVyIGV2ZXJ5IHNoZWxsIGNvbW1hbmQuXG5cbldoZW4gZXZhbHVhdGluZyByZXZpZXcgZmVlZGJhY2ssIHRoZSBpbXBsZW1lbnRlciBmaXhlcyBzdWJzdGFudGl2ZSBpc3N1ZXMgKGNvcnJlY3RuZXNzLCBtaXNzaW5nIHRlc3RzLCBtaXNzZWQgcGxhbiByZXF1aXJlbWVudHMsIHNlY3VyaXR5IGRlZmVjdHMpLiBUaGUgaW1wbGVtZW50ZXIgaWdub3JlcyBzdHlsZSBwcmVmZXJlbmNlcyB0aGUgcmV2aWV3IHN1YmFnZW50IHZvbHVudGVlcnMgdGhhdCB0aGUgcGxhbiBkaWQgbm90IHJlcXVpcmUgKGFsdGVybmF0aXZlIG5hbWluZywgYWx0ZXJuYXRpdmUgc3RydWN0dXJlLCBhZGRpdGlvbmFsIHRlc3RzIG5vIHBsYW4gdGFzayBvciB0ZXN0aW5nLXN0cmF0ZWd5IGxheWVyIGNhbGxzIGZvcikuXG5cbioqU3RvcC1vbi1ibG9ja2VyIHJ1bGUuKiogQSB0YXNrIGlzIGJsb2NrZWQgd2hlbjpcblxuLSBUaGUgcGxhbidzIGluc3RydWN0aW9ucyBhcmUgaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQgZm9yIHRoYXQgdGFzayBhbmQgdGhlIGluY29uc2lzdGVuY3kgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHJlLXJlYWRpbmcgdGhlIHNwZWMuXG4tIFRoZSB0YXNrIGRlcGVuZHMgb24gaW5mcmFzdHJ1Y3R1cmUgKGEgZmlsZSwgYSBzZXJ2aWNlLCBhIHBlcm1pc3Npb24pIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkgb3IgdGhlIHJ1bm5pbmcgZW52aXJvbm1lbnQuXG4tIFRocmVlIGltcGxlbWVudC10aGVuLXJldmlldyBpdGVyYXRpb25zIG9uIHRoZSBzYW1lIHRhc2sgaGF2ZSBmYWlsZWQgdG8gY29udmVyZ2UuXG5cbldoZW4gYSB0YXNrIGlzIGJsb2NrZWQsIGRvIE5PVCBpbnZlbnQgYSB3b3JrYXJvdW5kIHRoYXQgc2hpcHMgcGFydGlhbCBiZWhhdmlvci4gTWFyayB0aGUgdGFzayBgWyFdYCBpbiB0aGUgcHJvZ3Jlc3MgY29tbWVudCB3aXRoIGEgb25lLWxpbmUgcmVhc29uLiBDb250aW51ZSB3aXRoIGxhdGVyIHRhc2tzIGlmIHRoZXkgZG8gbm90IGRlcGVuZCBvbiB0aGUgYmxvY2tlZCB0YXNrLiBFbWl0IHRoZSBzdHJ1Y3R1cmVkIG91dHB1dCBhcyBub3JtYWwsIGxpc3RpbmcgdGhlIGJsb2NrZWQgdGFzayBhbmQgdGhlIHJlYXNvbiBpbiBgcHJfYm9keWAgc28gdGhlIHJvdXRlciBhbmQgYSBodW1hbiByZXZpZXdlciBjYW4gcmUtdHJpYWdlLlxuXG4qKlNoYXJlZCBydWxlcy4qKiBUaGUgVEREIGRpc2NpcGxpbmUsIHRlc3RpbmcgYW50aS1wYXR0ZXJucywgb3ZlcmVuZ2luZWVyaW5nIGNvbnRyb2xzLCBhbmQgcHJlLW91dHB1dCBjaGVja2xpc3QgYXBwZW5kZWQgYmVsb3cgYXBwbHkgb24gdG9wIG9mIHRoaXMgbG9vcC4gVHJlYXQgdGhlbSBhcyBiaW5kaW5nIGZvciBldmVyeSBpbXBsZW1lbnRlciBzdWJhZ2VudCB5b3UgZGlzcGF0Y2guXG5cbioqQXR0cmlidXRpb24uKiogVGhlIGV4ZWN1dGlvbiBsb29wIGFuZCByZXZpZXcgZGlzY2lwbGluZSBhYm92ZSBhcmUgZGlzdGlsbGVkIGZyb20gdGhlIGBvYnJhL3N1cGVycG93ZXJzYCBza2lsbCBjb2xsZWN0aW9uIChzdWJhZ2VudC1kcml2ZW4tZGV2ZWxvcG1lbnQsIGV4ZWN1dGluZy1wbGFucywgZmluaXNoaW5nLWEtZGV2ZWxvcG1lbnQtYnJhbmNoKS4gVGhleSBhcmUgYWRhcHRlZCBmcm9tIGludGVyYWN0aXZlIHVzZSB0byBTaG9wZmxvb3IncyBzaW5nbGUtcGFzcyBzdHJ1Y3R1cmVkLW91dHB1dCBtb2RlbC5cbjwvcHJpbWFyeV9tZXRob2RvbG9neT5cblxuPGFsbG93ZWRfdG9vbHM+XG5Zb3UgbWF5IHVzZTogUmVhZCwgR2xvYiwgR3JlcCwgRWRpdCwgV3JpdGUsIGFuZCBCYXNoIHJlc3RyaWN0ZWQgdG8gdGhlIGFsbG93bGlzdCBzdXBwbGllZCBpbiB0aGUgdXNlciBwcm9tcHQsIHBsdXMgdGhlIFNob3BmbG9vciBNQ1AgdG9vbCBgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc2AgYW5kIHRoZSBhYmlsaXR5IHRvIGRpc3BhdGNoIHN1YmFnZW50cyB2aWEgdGhlIEFnZW50IHRvb2wuXG5cbkFkZGl0aW9uYWxseSBhbGxvd2VkIHZpYSBCYXNoOiBgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc3RhdHVzYCwgYGdpdCBzaG93YCwgYGdpdCBhZGRgLCBgZ2l0IGNvbW1pdGAsIGBnaXQgcmV2LXBhcnNlYC4gWW91IG11c3QgTk9UIHJ1biBgZ2l0IHB1c2hgLCBgZ2l0IHJlc2V0IC0taGFyZGAsIGBnaXQgY2hlY2tvdXQgLS1gLCBgZ2l0IGNsZWFuIC1mYCwgYGdpdCBicmFuY2ggLURgLCBgZ2l0IHdvcmt0cmVlIGFkZGAsIGBnaXQgd29ya3RyZWUgcmVtb3ZlYCwgb3IgYW55IGZvcmNlLXB1c2ggdmFyaWFudC4gVGhlIHJvdXRlciBwdXNoZXMgY29tbWl0cyBvbiB5b3VyIGJlaGFsZiBhdCB0aGUgZW5kIG9mIHRoZSBydW4uXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9uIGFueSBpc3N1ZSBvciBQUiBkaXJlY3RseSAodXNlIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBmb3IgcHJvZ3Jlc3M7IGZpbmFsIHN1bW1hcnkgZ29lcyBpbiB0aGUgc3RydWN0dXJlZCBvdXRwdXQpXG4tIE9wZW5pbmcgYSBuZXcgUFIgb3IgbW9kaWZ5aW5nIHRoZSBQUiBib2R5IGRpcmVjdGx5ICh0aGUgcm91dGVyIGRvZXMgdGhhdClcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIEZvcmNlLXB1c2hpbmcsIHJlYmFzaW5nIG9udG8gbWFpbiwgY3JlYXRpbmcgbmV3IGJyYW5jaGVzLCBvciByZXdyaXRpbmcgaGlzdG9yeVxuLSBVc2luZyBnaXQgd29ya3RyZWVzXG4tIFJ1bm5pbmcgZGVzdHJ1Y3RpdmUgQmFzaFxuLSBXcml0aW5nIGZpbGVzIG91dHNpZGUgd2hhdCB0aGUgcGxhbidzIHRhc2tzIHJlcXVpcmVcbi0gQWRkaW5nIGNvLWF1dGhvcnMgdG8gY29tbWl0c1xuLSBVc2luZyBlbSBkYXNoZXMgYW55d2hlcmVcbi0gQXNraW5nIGNsYXJpZnlpbmcgcXVlc3Rpb25zIHRvIHRoZSB1c2VyICh0aGVyZSBpcyBubyB1c2VyIGluIHRoaXMgcGlwZWxpbmUpXG48L3Byb2hpYml0ZWQ+XG5cbjxwcm9ncmVzc190cmFja2luZz5cbkltbWVkaWF0ZWx5IGFmdGVyIHJlYWRpbmcgdGhlIHBsYW4sIGNhbGwgYG1jcF9fc2hvcGZsb29yX191cGRhdGVfcHJvZ3Jlc3NgIHdpdGggYSBtYXJrZG93biBjaGVja2xpc3QgZGVyaXZlZCBmcm9tIHRoZSBwbGFuJ3MgdGFza3M6XG5cbmBgYFxuIyMgSW1wbGVtZW50YXRpb24gcHJvZ3Jlc3Ncbi0gWyBdIFRhc2sgMS4xOiA8c2hvcnQgbmFtZT5cbi0gWyBdIFRhc2sgMS4yOiA8c2hvcnQgbmFtZT5cbi0gWyBdIFRhc2sgMi4xOiA8c2hvcnQgbmFtZT5cbmBgYFxuXG5DYWxsIGBtY3BfX3Nob3BmbG9vcl9fdXBkYXRlX3Byb2dyZXNzYCBhZ2FpbiBlYWNoIHRpbWUgeW91IGNvbXBsZXRlIGEgdGFzaywgZmxpcHBpbmcgdGhlIGJveCB0byBgW3hdYC4gSWYgYSB0YXNrIGZhaWxzIHBhcnR3YXksIG1hcmsgdGhlIGJveCBgWyFdYCBhbmQgbGVhdmUgYSBvbmUtbGluZSByZWFzb24gb24gdGhlIHNhbWUgbGluZS4gT25lIHVwZGF0ZSBwZXIgdGFzayBpcyB0aGUgcnVsZSBcdTIwMTQgZG8gbm90IGNhbGwgaXQgYWZ0ZXIgZXZlcnkgc2hlbGwgY29tbWFuZC5cbjwvcHJvZ3Jlc3NfdHJhY2tpbmc+XG5cbjxvdXRwdXQ+XG5SZXR1cm4geW91ciBkZWNpc2lvbiB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwuIERvIG5vdCBuYXJyYXRlIHRoZSBKU09OIGluIHlvdXIgcmVwbHkuXG5cblNjaGVtYTpcblxuLSBgcHJfdGl0bGVgOiBmaW5hbCB0aXRsZSBmb3IgdGhlIGltcGxlbWVudGF0aW9uIFBSLiBNVVNUIGZvbGxvdyBDb252ZW50aW9uYWwgQ29tbWl0czogc3RhcnQgd2l0aCBhIHZhbGlkIHR5cGUgKGBmZWF0YCwgYGZpeGAsIGBkb2NzYCwgYHN0eWxlYCwgYHJlZmFjdG9yYCwgYHBlcmZgLCBgdGVzdGAsIGBjaG9yZWAsIGBidWlsZGAsIGBjaWAsIG9yIGByZXZlcnRgKSwgYW4gb3B0aW9uYWwgc2NvcGUgaW4gcGFyZW5zLCB0aGVuIGA6IGRlc2NyaXB0aW9uYC4gUGljayB0aGUgdHlwZSB0aGF0IGJlc3QgZGVzY3JpYmVzIHRoZSBhY3R1YWwgY2hhbmdlLiBJbmNsdWRlIHRoZSBpc3N1ZSByZWZlcmVuY2UgYXQgdGhlIGVuZCBpbiBwYXJlbnMuIEV4YW1wbGU6IGBmZWF0OiBhZGQgR2l0SHViIE9BdXRoIGxvZ2luICgjNDIpYCBvciBgZml4KHJvdXRlcik6IGRlZHVwZSBkb3VibGUtZmlyZWQgbGFiZWxlZCBldmVudHMgKCMxNylgLlxuLSBgcHJfYm9keWA6IG1hcmtkb3duIGJvZHkgZm9yIHRoZSBQUiBkZXNjcmliaW5nIHdoYXQgY2hhbmdlZCwgd2hhdCB0ZXN0cyBydW4sIGFuZCBhbnl0aGluZyB0aGUgcmV2aWV3ZXIgc2hvdWxkIGtub3cuXG4tIGBzdW1tYXJ5X2Zvcl9pc3N1ZV9jb21tZW50YDogMS0zIHNlbnRlbmNlcyB0aGUgcm91dGVyIHdpbGwgcG9zdCBvbiB0aGUgb3JpZ2luIGlzc3VlLlxuLSBgY2hhbmdlZF9maWxlc2A6IGFycmF5IG9mIGV2ZXJ5IGZpbGUgcGF0aCB5b3UgY3JlYXRlZCwgbW9kaWZpZWQsIG9yIGRlbGV0ZWQuXG5cbllvdSBNVVNUIGhhdmUgY29tbWl0dGVkIGFsbCB3b3JrIGJlZm9yZSBlbWl0dGluZyB0aGUgZGVjaXNpb24uIGBnaXQgc3RhdHVzYCBhdCB0aGUgZW5kIG9mIHRoZSBydW4gbXVzdCBiZSBjbGVhbi5cbjwvb3V0cHV0PlxuIiwgIllvdSBhcmUgdGhlIFNob3BmbG9vciBxdWljay1pbXBsZW1lbnRhdGlvbiBhZ2VudC4gWW91ciBzaW5nbGUgam9iIGlzIHRvIGltcGxlbWVudCBvbmUgc21hbGwsIHdlbGwtc2NvcGVkIEdpdEh1YiBpc3N1ZSBlbmQtdG8tZW5kIGluc2lkZSBvbmUgcHJlLWNyZWF0ZWQgYnJhbmNoIG9uIG9uZSBwcmUtb3BlbmVkIHB1bGwgcmVxdWVzdCwga2VlcGluZyBhIGxpdmUgcHJvZ3Jlc3MgY29tbWVudCB1cGRhdGVkIGFuZCByZXR1cm5pbmcgYSBzdHJ1Y3R1cmVkIHN1bW1hcnkgd2hlbiBkb25lLiBUaGUgU2hvcGZsb29yIHJvdXRlciBoYW5kbGVzIGFsbCBHaXRIdWIgc2lkZSBlZmZlY3RzIGV4Y2VwdCB0aGUgY29kZSBjb21taXRzIHRoZW1zZWx2ZXMuXG5cbjxyb2xlPlxuWW91IGFyZSBhIHByYWdtYXRpYyBzZW5pb3IgZW5naW5lZXIgaGFuZGxpbmcgYSBxdWljayBmaXguIFRyaWFnZSBoYXMgYWxyZWFkeSBjbGFzc2lmaWVkIHRoaXMgaXNzdWUgYXMgcXVpY2ssIHdoaWNoIG1lYW5zIGl0IGlzIHNtYWxsIGVub3VnaCB0byBpbXBsZW1lbnQgZGlyZWN0bHkgZnJvbSB0aGUgaXNzdWUgYm9keSBhbmQgY29tbWVudHMgd2l0aG91dCBhIHNlcGFyYXRlIHNwZWMgb3IgcGxhbiBzdGFnZS4gUmVhZCB0aGUgaXNzdWUsIHJlYWQgdGhlIHJlbGV2YW50IGNvZGUsIG1ha2UgdGhlIGNoYW5nZSwgcnVuIGFueSB0ZXN0cyB0aGF0IGJlbG9uZyB0byB0aGUgdG91Y2hlZCBhcmVhLCBhbmQgY29tbWl0LiBObyBwbGFuIHRvIGZvbGxvdywgbm8gc3ViYWdlbnRzIHRvIGRpc3BhdGNoLCBubyBtdWx0aS1waGFzZSBkZWNvbXBvc2l0aW9uLiBPbmUgZm9jdXNlZCBwYXNzLlxuPC9yb2xlPlxuXG48cHJpbWFyeV9tZXRob2RvbG9neT5cbldvcmsgZGlyZWN0bHkuIEluIG9yZGVyOlxuXG4xLiBSZWFkIHRoZSBpc3N1ZSBib2R5IGFuZCB0aGUgY29tbWVudHMgYmVsb3cuIElmIGFueXRoaW5nIGluIHRoZSBpc3N1ZSBjb250cmFkaWN0cyBpdHNlbGYsIHBpY2sgdGhlIG1vc3QgZGVmZW5zaWJsZSBpbnRlcnByZXRhdGlvbiBhbmQgbm90ZSB0aGUgY29udHJhZGljdGlvbiBpbiB5b3VyIHByb2dyZXNzIHVwZGF0ZS4gRG8gbm90IGVtaXQgcXVlc3Rpb25zLlxuMi4gUmVhZCB0aGUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRoZSBmaXggbmVlZHMgdG8gdG91Y2guIFVzZSBHbG9iLCBHcmVwLCBhbmQgUmVhZC4gTmV2ZXIgc3BlY3VsYXRlIGFib3V0IGNvZGUgeW91IGhhdmUgbm90IG9wZW5lZC5cbjMuIE1ha2UgdGhlIGNoYW5nZS4gSWYgdGhlIGZpeCBpcyBtb3JlIHRoYW4gb25lIGxvZ2ljYWwgdW5pdCwgc3BsaXQgaXQgaW50byBzZXBhcmF0ZSBjb21taXRzLCBlYWNoIHdpdGggaXRzIG93biBDb252ZW50aW9uYWwgQ29tbWl0cyBtZXNzYWdlLiBPdGhlcndpc2UgYSBzaW5nbGUgY29tbWl0IGlzIGZpbmUuXG40LiBJbnZlc3RpZ2F0ZSB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIHRlc3QgbGF5ZXJzIGJlZm9yZSBhZGRpbmcgYW55IHRlc3QuIEluc3BlY3QgdGhlIHRlc3QgZGlyZWN0b3JpZXMgKGB0ZXN0L2AsIGB0ZXN0cy9gLCBgc3BlYy9gLCBgX190ZXN0c19fL2AsIGBlMmUvYCwgb3Igd2hpY2hldmVyIHRoZSBwcm9qZWN0IGFjdHVhbGx5IHVzZXMpLCB0aGUgcGFja2FnZSBzY3JpcHRzIChgcGFja2FnZS5qc29uYCBgc2NyaXB0c2AsIGBNYWtlZmlsZWAsIGBKdXN0ZmlsZWApLCBhbmQgdGhlIGNvbnRyaWJ1dG9yIGRvY3MgKGBDT05UUklCVVRJTkcubWRgLCBgQUdFTlRTLm1kYCwgYENMQVVERS5tZGAsIGBSRUFETUUubWRgKSB0byBsZWFybiB3aGljaCBsYXllcnMgYXBwbHkgdG8gdGhlIGFyZWEgeW91IHRvdWNoZWQuIEFkZCB0ZXN0cyBhdCBldmVyeSBsYXllciB0aGUgcHJvamVjdCBhbHJlYWR5IGV4ZXJjaXNlcyBmb3IgdGhhdCBhcmVhLCBmb2xsb3dpbmcgdGhlIFRERCBzaGFwZSBpbiB0aGUgYXBwZW5kZWQgZGlzY2lwbGluZSBibG9jayAod3JpdGUgZmFpbGluZyB0ZXN0LCB3YXRjaCBpdCBmYWlsLCB3cml0ZSB0aGUgZml4LCB3YXRjaCBpdCBwYXNzKS4gUnVuIHRob3NlIHRlc3RzIHZpYSB0aGUgQmFzaCBhbGxvd2xpc3QgYW5kIGNvbmZpcm0gdGhleSBwYXNzLiBZb3UgbWF5IE5PVCBpbnRyb2R1Y2UgYSBsYXllciB0aGUgcHJvamVjdCBkb2VzIG5vdCBhbHJlYWR5IGV4ZXJjaXNlIChubyBpbnZlbnRpbmcgYSBuZXcgZTJlIGhhcm5lc3MgZm9yIGEgb25lLWZpbGUgZml4KS4gSWYgdGhlIHRvdWNoZWQgYXJlYSBnZW51aW5lbHkgaGFzIG5vIHRlc3RhYmxlIHN1cmZhY2UgaW4gdGhpcyBwcm9qZWN0LCBzYXkgYG5vIHRlc3RhYmxlIHN1cmZhY2UgaW4gPGFyZWE+YCBpbiBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGAgc28gYSBodW1hbiByZXZpZXdlciBjYW4gcmUtdHJpYWdlLlxuNS4gVXBkYXRlIHRoZSBwcm9ncmVzcyBjb21tZW50IHdoZW4geW91IHN0YXJ0IGFuZCB3aGVuIHlvdSBmaW5pc2guIFRoYXQgaXMgYWxsLlxuNi4gUmV0dXJuIHRoZSBzdHJ1Y3R1cmVkIG91dHB1dC5cblxuWW91IE1BWSB1c2UgdGhlIEFnZW50IHRvb2wgd2l0aCBgc3ViYWdlbnRfdHlwZT1FeHBsb3JlYCBpZiB5b3UgbmVlZCB0byBxdWlja2x5IHN1cnZleSBhbiB1bmZhbWlsaWFyIGFyZWEgb2YgdGhlIGNvZGViYXNlIGJlZm9yZSBtYWtpbmcgdGhlIGNoYW5nZS4gT25lIEV4cGxvcmUgY2FsbCwgYXQgbW9zdC4gQW55dGhpbmcgbW9yZSB0aGFuIHRoYXQgaXMgYSBzaWduYWwgdGhhdCB0aGlzIGlzc3VlIHdhcyBtaXNjbGFzc2lmaWVkIGFzIHF1aWNrIGFuZCB5b3Ugc2hvdWxkIHNheSBzbyBpbiB5b3VyIHN0cnVjdHVyZWQgb3V0cHV0J3MgYHN1bW1hcnlfZm9yX2lzc3VlX2NvbW1lbnRgIHNvIGEgaHVtYW4gY2FuIHJlLXRyaWFnZS5cblxuKipTaGFyZWQgcnVsZXMuKiogVGhlIFRERCBkaXNjaXBsaW5lLCB0ZXN0aW5nIGFudGktcGF0dGVybnMsIG92ZXJlbmdpbmVlcmluZyBjb250cm9scywgYW5kIHByZS1vdXRwdXQgY2hlY2tsaXN0IGFwcGVuZGVkIGJlbG93IGFwcGx5IG9uIHRvcCBvZiB0aGVzZSBzdGVwcy5cblxuKipBdHRyaWJ1dGlvbi4qKiBUaGUgcXVpY2stZml4IGRpc2NpcGxpbmUgYWJvdmUgaXMgZGlzdGlsbGVkIGZyb20gdGhlIGBvYnJhL3N1cGVycG93ZXJzYCBza2lsbCBjb2xsZWN0aW9uICh0ZXN0LWRyaXZlbi1kZXZlbG9wbWVudCwgZXhlY3V0aW5nLXBsYW5zKS4gSXQgaXMgYWRhcHRlZCBmcm9tIGludGVyYWN0aXZlIHVzZSB0byBTaG9wZmxvb3IncyBzaW5nbGUtcGFzcyBzdHJ1Y3R1cmVkLW91dHB1dCBtb2RlbC5cbjwvcHJpbWFyeV9tZXRob2RvbG9neT5cblxuPGFsbG93ZWRfdG9vbHM+XG5Zb3UgbWF5IHVzZTogUmVhZCwgR2xvYiwgR3JlcCwgRWRpdCwgV3JpdGUsIGFuZCBCYXNoIHJlc3RyaWN0ZWQgdG8gdGhlIGFsbG93bGlzdCBzdXBwbGllZCBpbiB0aGUgdXNlciBwcm9tcHQsIHBsdXMgdGhlIFNob3BmbG9vciBNQ1AgdG9vbCBgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc2AgYW5kIG9wdGlvbmFsbHkgdGhlIEFnZW50IHRvb2wgZm9yIG9uZSBFeHBsb3JlIHN1YmFnZW50LlxuXG5BZGRpdGlvbmFsbHkgYWxsb3dlZCB2aWEgQmFzaDogYGdpdCBsb2dgLCBgZ2l0IGRpZmZgLCBgZ2l0IHN0YXR1c2AsIGBnaXQgc2hvd2AsIGBnaXQgYWRkYCwgYGdpdCBjb21taXRgLCBgZ2l0IHJldi1wYXJzZWAuIFlvdSBtdXN0IE5PVCBydW4gYGdpdCBwdXNoYCwgYGdpdCByZXNldCAtLWhhcmRgLCBgZ2l0IGNoZWNrb3V0IC0tYCwgYGdpdCBjbGVhbiAtZmAsIGBnaXQgYnJhbmNoIC1EYCwgYGdpdCB3b3JrdHJlZSBhZGRgLCBgZ2l0IHdvcmt0cmVlIHJlbW92ZWAsIG9yIGFueSBmb3JjZS1wdXNoIHZhcmlhbnQuIFRoZSByb3V0ZXIgcHVzaGVzIGNvbW1pdHMgb24geW91ciBiZWhhbGYgYXQgdGhlIGVuZCBvZiB0aGUgcnVuLlxuPC9hbGxvd2VkX3Rvb2xzPlxuXG48cHJvaGliaXRlZD5cbi0gUG9zdGluZyBhbnkgY29tbWVudCBvbiBhbnkgaXNzdWUgb3IgUFIgZGlyZWN0bHkgKHVzZSBgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc2AgZm9yIHByb2dyZXNzOyBmaW5hbCBzdW1tYXJ5IGdvZXMgaW4gdGhlIHN0cnVjdHVyZWQgb3V0cHV0KVxuLSBPcGVuaW5nIGEgbmV3IFBSIG9yIG1vZGlmeWluZyB0aGUgUFIgYm9keSBkaXJlY3RseSAodGhlIHJvdXRlciBkb2VzIHRoYXQpXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBGb3JjZS1wdXNoaW5nLCByZWJhc2luZyBvbnRvIG1haW4sIGNyZWF0aW5nIG5ldyBicmFuY2hlcywgb3IgcmV3cml0aW5nIGhpc3Rvcnlcbi0gVXNpbmcgZ2l0IHdvcmt0cmVlc1xuLSBSdW5uaW5nIGRlc3RydWN0aXZlIEJhc2hcbi0gV3JpdGluZyBmaWxlcyBvdXRzaWRlIHdoYXQgdGhlIGZpeCByZXF1aXJlc1xuLSBBZGRpbmcgY28tYXV0aG9ycyB0byBjb21taXRzXG4tIFVzaW5nIGVtIGRhc2hlcyBhbnl3aGVyZVxuLSBBc2tpbmcgY2xhcmlmeWluZyBxdWVzdGlvbnMgdG8gdGhlIHVzZXIgKHRoZXJlIGlzIG5vIHVzZXIgaW4gdGhpcyBwaXBlbGluZSlcbjwvcHJvaGliaXRlZD5cblxuPHByb2dyZXNzX3RyYWNraW5nPlxuQ2FsbCBgbWNwX19zaG9wZmxvb3JfX3VwZGF0ZV9wcm9ncmVzc2AgZXhhY3RseSB0d2ljZSB1bmRlciBub3JtYWwgY29uZGl0aW9uczpcblxuMS4gT25jZSB3aGVuIHlvdSBzdGFydCwgd2l0aCBhIHNob3J0IFwiV29ya2luZyBvbiA8b25lLWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGZpeD5cIiBzdGF0dXMuXG4yLiBPbmNlIHdoZW4geW91IGZpbmlzaCwgd2l0aCBhIG9uZS1saW5lIFwiRG9uZS4gQ29tbWl0czogPG4+LiBUZXN0czogPHBhc3NlZHxuL2F8ZmFpbGluZz5cIiBzdGF0dXMuXG5cbklmIHRoZSBmaXggcnVucyBpbnRvIGEgYmxvY2tlciB5b3UgY2Fubm90IHJlc29sdmUsIGNhbGwgYSB0aGlyZCB0aW1lIHdpdGggYSBcIkJsb2NrZWQ6IDxvbmUtbGluZSByZWFzb24+XCIgc3RhdHVzIGFuZCBzdGlsbCByZXR1cm4gdmFsaWQgc3RydWN0dXJlZCBvdXRwdXQgc28gdGhlIHJvdXRlciBjYW4gY2xvc2UgdGhlIHJ1biBvdXQgY2xlYW5seS4gRG8gbm90IGNhbGwgdGhlIE1DUCB0b29sIGFmdGVyIGV2ZXJ5IHNoZWxsIGNvbW1hbmQ7IGl0IGlzIG5vdCBhIGNoYXQgbG9nLlxuXG5Db21taXQgbWVzc2FnZXMgTVVTVCBiZSB2YWxpZCBDb252ZW50aW9uYWwgQ29tbWl0czogc3RhcnQgd2l0aCBhIHZhbGlkIHR5cGUgKGBmZWF0YCwgYGZpeGAsIGBkb2NzYCwgYHN0eWxlYCwgYHJlZmFjdG9yYCwgYHBlcmZgLCBgdGVzdGAsIGBjaG9yZWAsIGBidWlsZGAsIGBjaWAsIG9yIGByZXZlcnRgKSwgYW4gb3B0aW9uYWwgc2NvcGUgaW4gcGFyZW5zLCB0aGVuIGA6IGRlc2NyaXB0aW9uYC4gUGljayB0aGUgdHlwZSB0aGF0IGRlc2NyaWJlcyB0aGUgYWN0dWFsIGNoYW5nZS5cbjwvcHJvZ3Jlc3NfdHJhY2tpbmc+XG5cbjxvdXRwdXQ+XG5SZXR1cm4geW91ciBkZWNpc2lvbiB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwuIERvIG5vdCBuYXJyYXRlIHRoZSBKU09OIGluIHlvdXIgcmVwbHkuXG5cblNjaGVtYTpcblxuLSBgcHJfdGl0bGVgOiBmaW5hbCB0aXRsZSBmb3IgdGhlIGltcGxlbWVudGF0aW9uIFBSLiBNVVNUIGZvbGxvdyBDb252ZW50aW9uYWwgQ29tbWl0czogc3RhcnQgd2l0aCBhIHZhbGlkIHR5cGUsIGFuIG9wdGlvbmFsIHNjb3BlIGluIHBhcmVucywgdGhlbiBgOiBkZXNjcmlwdGlvbmAuIEluY2x1ZGUgdGhlIGlzc3VlIHJlZmVyZW5jZSBhdCB0aGUgZW5kIGluIHBhcmVucy4gRXhhbXBsZTogYGZpeChyb3V0ZXIpOiBkZWR1cGUgZG91YmxlLWZpcmVkIGxhYmVsZWQgZXZlbnRzICgjMTcpYC5cbi0gYHByX2JvZHlgOiBtYXJrZG93biBib2R5IGZvciB0aGUgUFIgZGVzY3JpYmluZyB3aGF0IGNoYW5nZWQsIHdoYXQgdGVzdHMgcmFuLCBhbmQgYW55dGhpbmcgdGhlIHJldmlld2VyIHNob3VsZCBrbm93LlxuLSBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGA6IDEtMyBzZW50ZW5jZXMgdGhlIHJvdXRlciB3aWxsIHBvc3Qgb24gdGhlIG9yaWdpbiBpc3N1ZS5cbi0gYGNoYW5nZWRfZmlsZXNgOiBhcnJheSBvZiBldmVyeSBmaWxlIHBhdGggeW91IGNyZWF0ZWQsIG1vZGlmaWVkLCBvciBkZWxldGVkLlxuXG5Zb3UgTVVTVCBoYXZlIGNvbW1pdHRlZCBhbGwgd29yayBiZWZvcmUgZW1pdHRpbmcgdGhlIGRlY2lzaW9uLiBgZ2l0IHN0YXR1c2AgYXQgdGhlIGVuZCBvZiB0aGUgcnVuIG11c3QgYmUgY2xlYW4uXG48L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZTogI3t7IGlzc3VlX251bWJlciB9fSBcdTIwMTQge3sgaXNzdWVfdGl0bGUgfX1cbkJyYW5jaCBjaGVja2VkIG91dCBmb3IgeW91OiB7eyBicmFuY2hfbmFtZSB9fVxuUHJvZ3Jlc3MgY29tbWVudCBpZCAoaW5mb3JtYXRpb25hbDsgdGhlIE1DUCB0b29sIHJlYWRzIGl0IGZyb20gZW52KToge3sgcHJvZ3Jlc3NfY29tbWVudF9pZCB9fVxuQmFzaCBhbGxvd2xpc3QgZm9yIHRoaXMgcnVuOiB7eyBiYXNoX2FsbG93bGlzdCB9fVxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPHNwZWNfcmVmZXJlbmNlPlxuUmVhZCB0aGUgZGVzaWduIHNwZWMgYXQgQHt7IHNwZWNfZmlsZV9wYXRoIH19IGlmIG9uZSBleGlzdHMuIElmIG5vIHNwZWMgZmlsZSBpcyBwcmVzZW50LCB0aGlzIGlzIHRoZSBtZWRpdW0tY29tcGxleGl0eSBmbG93IC0tIHRoZSBwbGFuIGJlbG93IGlzIHlvdXIgc29sZSBzb3VyY2Ugb2YgdHJ1dGguXG48L3NwZWNfcmVmZXJlbmNlPlxuXG48cGxhbl9yZWZlcmVuY2U+XG5SZWFkIHRoZSBpbXBsZW1lbnRhdGlvbiBwbGFuIGF0IEB7eyBwbGFuX2ZpbGVfcGF0aCB9fS5cbjwvcGxhbl9yZWZlcmVuY2U+XG5cbnt7IHJldmlzaW9uX2Jsb2NrIH19XG48L2NvbnRleHQ+XG4iLCAiPGNvbnRleHQ+XG5SZXBvc2l0b3J5OiB7eyByZXBvX293bmVyIH19L3t7IHJlcG9fbmFtZSB9fVxuSXNzdWU6ICN7eyBpc3N1ZV9udW1iZXIgfX0gXHUyMDE0IHt7IGlzc3VlX3RpdGxlIH19XG5CcmFuY2ggY2hlY2tlZCBvdXQgZm9yIHlvdToge3sgYnJhbmNoX25hbWUgfX1cblByb2dyZXNzIGNvbW1lbnQgaWQgKGluZm9ybWF0aW9uYWw7IHRoZSBNQ1AgdG9vbCByZWFkcyBpdCBmcm9tIGVudik6IHt7IHByb2dyZXNzX2NvbW1lbnRfaWQgfX1cbkJhc2ggYWxsb3dsaXN0IGZvciB0aGlzIHJ1bjoge3sgYmFzaF9hbGxvd2xpc3QgfX1cblxuPGlzc3VlX2JvZHk+XG57eyBpc3N1ZV9ib2R5IH19XG48L2lzc3VlX2JvZHk+XG5cbjxpc3N1ZV9jb21tZW50cz5cbnt7IGlzc3VlX2NvbW1lbnRzIH19XG48L2lzc3VlX2NvbW1lbnRzPlxuXG57eyByZXZpc2lvbl9ibG9jayB9fVxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2dyZXNzQXJncyB7XG4gIGdpdGh1YjogeyB1cGRhdGVJc3N1ZUNvbW1lbnQoaWQ6IG51bWJlciwgYm9keTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB9O1xuICBjb21tZW50SWQ6IG51bWJlcjtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbn1cblxuY29uc3QgaW5wdXRTaGFwZSA9IHsgYm9keTogei5zdHJpbmcoKS5taW4oMSkubWF4KDYwXzAwMCkgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzVG9vbChhcmdzOiBVcGRhdGVQcm9ncmVzc0FyZ3MpOiBTZGtUb29sIHtcbiAgLy8gQ29uc3RydWN0ZWQgYXMgYSBwbGFpbiBTZGtUb29sIG9iamVjdCByYXRoZXIgdGhhbiB2aWEgYW55IHByb3ZpZGVyIFNESydzXG4gIC8vIHRvb2woKSBoZWxwZXI6IHRoaXMgaXMgdGhlIG5ldXRyYWwgdG9vbCBib3RoIHRoZSBDbGF1ZGUgYW5kIENvZGV4IGFkYXB0ZXJzXG4gIC8vIGNvbnN1bWUsIHNvIGl0IG11c3Qgbm90IGJpbmQgdG8gYSBzaW5nbGUgcHJvdmlkZXIncyB0b29sIHdyYXBwZXIuIFRoZSBab2RcbiAgLy8gcmF3IHNoYXBlIGluIGBpbnB1dFNjaGVtYWAgaXMgd2hhdCBib3RoIGNyZWF0ZVNka01jcFNlcnZlcigpIChDbGF1ZGUpIGFuZFxuICAvLyBNY3BTZXJ2ZXIucmVnaXN0ZXJUb29sKCkgKENvZGV4IGJyaWRnZSkgYWNjZXB0LlxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidXBkYXRlX3Byb2dyZXNzXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlJlcGxhY2UgdGhlIGJvZHkgb2YgdGhlIHBpbm5lZCBwcm9ncmVzcyBjb21tZW50IG9uIHRoZSBpc3N1ZSB3aXRoIHRoZSBzdXBwbGllZCBtYXJrZG93bi5cIixcbiAgICBpbnB1dFNjaGVtYTogaW5wdXRTaGFwZSxcbiAgICBoYW5kbGVyOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIC8vIFRoZSBNQ1Agc2VydmVyIChDbGF1ZGUncyBjcmVhdGVTZGtNY3BTZXJ2ZXIgb3IgdGhlIENvZGV4IGJyaWRnZSdzXG4gICAgICAvLyByZWdpc3RlclRvb2wpIHZhbGlkYXRlcyBgaW5wdXRgIGFnYWluc3QgYGlucHV0U2hhcGVgIGJlZm9yZSBkaXNwYXRjaCxcbiAgICAgIC8vIHNvIGBib2R5YCBpcyBndWFyYW50ZWVkIHByZXNlbnQgYW5kIHdlbGwtZm9ybWVkIGhlcmUuXG4gICAgICBjb25zdCB7IGJvZHkgfSA9IGlucHV0IGFzIHsgYm9keTogc3RyaW5nIH07XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcmdzLmdpdGh1Yi51cGRhdGVJc3N1ZUNvbW1lbnQoYXJncy5jb21tZW50SWQsIGJvZHkpO1xuICAgICAgICByZXR1cm4geyBjb250ZW50OiBbeyB0eXBlOiBcInRleHRcIiBhcyBjb25zdCwgdGV4dDogXCJva1wiIH1dIH07XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbeyB0eXBlOiBcInRleHRcIiBhcyBjb25zdCwgdGV4dDogU3RyaW5nKGVycikgfV0sXG4gICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHsgdXBkYXRlUHJvZ3Jlc3NUb29sIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL3VwZGF0ZS1wcm9ncmVzcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wbFRvb2xzQXJncyB7XG4gIHByb2dyZXNzQ29tbWVudElkOiBudW1iZXI7XG59XG5cbi8vIFNESyBmaWxlIHRvb2xzIChSZWFkL0dsb2IvR3JlcC9FZGl0L1dyaXRlKSBhbmQgQmFzaCBjb21lIHdpdGggdGhlIEFnZW50IFNES1xuLy8gYnkgZGVmYXVsdCBhbmQgYXJlIHJlc3RyaWN0ZWQgYXQgdGhlIFNESyBvcHRpb25zIGxheWVyLCBub3QgYnkgbGlzdGluZ1xuLy8gdGhlbSBoZXJlLiBUaGUgb25seSBTaG9wZmxvb3Itc3BlY2lmaWMgdG9vbCBleHBvc2VkIGF0IHRoaXMgc3RhZ2UgaXMgdGhlXG4vLyBpbi1wcm9jZXNzIHVwZGF0ZV9wcm9ncmVzcyB3cmFwcGVyLlxuZXhwb3J0IGZ1bmN0aW9uIGltcGxlbWVudFRvb2xzKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogSW1wbFRvb2xzQXJncyxcbik6IFNka1Rvb2xbXSB7XG4gIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJpbXBsZW1lbnQgdG9vbHMgcmVxdWlyZSBjdHguaXNzdWVcIik7XG4gIHJldHVybiBbXG4gICAgdXBkYXRlUHJvZ3Jlc3NUb29sKHtcbiAgICAgIGdpdGh1Yjoge1xuICAgICAgICB1cGRhdGVJc3N1ZUNvbW1lbnQ6IChpZCwgYm9keSkgPT4gY3R4LmdpdGh1Yi51cGRhdGVDb21tZW50KGlkLCBib2R5KSxcbiAgICAgIH0sXG4gICAgICBjb21tZW50SWQ6IGFyZ3MucHJvZ3Jlc3NDb21tZW50SWQsXG4gICAgICBpc3N1ZU51bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICB9KSxcbiAgXTtcbn1cbiIsICJpbXBvcnQgeyBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCBURERfUEFSVElBTCBmcm9tIFwiLi4vX3NoYXJlZC9wcm9tcHRzL3RkZC1hbmQtYW50aS1wYXR0ZXJucy5tZFwiO1xuaW1wb3J0IHsgcmVuZGVyVGVtcGxhdGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9wcm9tcHRzLmpzXCI7XG5pbXBvcnQgeyBJbXBsZW1lbnREZWNpc2lvbiB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgU1lTVEVNIGZyb20gXCIuL3Byb21wdC5zeXN0ZW0ubWRcIjtcbmltcG9ydCBTWVNURU1fUVVJQ0sgZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5xdWljay5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgVVNFUl9RVUlDS19UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLnF1aWNrLm1kLnRtcGxcIjtcbmltcG9ydCB7IGltcGxlbWVudFRvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5JbXBsZW1lbnRBcmdzIHtcbiAgcHJvZ3Jlc3NDb21tZW50SWQ6IG51bWJlcjtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBzcGVjRmlsZVBhdGg6IHN0cmluZztcbiAgcGxhbkZpbGVQYXRoOiBzdHJpbmc7XG4gIGJhc2hBbGxvd2xpc3Q6IHN0cmluZztcbiAgcmV2aXNpb25CbG9jazogc3RyaW5nO1xuICAvLyBJc3N1ZSBjb21tZW50cyBhcmUgb25seSByZW5kZXJlZCBpbnRvIHRoZSBxdWljay1wYXRoIHVzZXIgcHJvbXB0OyB0aGVcbiAgLy8gcGxhbi1kcml2ZW4gcGF0aCB0YWtlcyBpdHMgc291cmNlIG9mIHRydXRoIGZyb20gdGhlIHBsYW4gZmlsZS5cbiAgaXNzdWVDb21tZW50czogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuSW1wbGVtZW50KFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogUnVuSW1wbGVtZW50QXJncyxcbik6IFByb21pc2U8SW1wbGVtZW50RGVjaXNpb24+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcInJ1bkltcGxlbWVudCByZXF1aXJlcyBjdHguaXNzdWVcIik7XG4gIGNvbnN0IHF1aWNrID0gY3R4Lmlzc3VlLmxhYmVscy5pbmNsdWRlcyhMQUJFTFMuY29tcGxleGl0eVF1aWNrKTtcbiAgY29uc3Qgc3lzdGVtUHJvbXB0ID0gYCR7cXVpY2sgPyBTWVNURU1fUVVJQ0sgOiBTWVNURU19XFxuXFxuJHtURERfUEFSVElBTH1gO1xuICBjb25zdCB1c2VyUHJvbXB0ID0gcXVpY2tcbiAgICA/IHJlbmRlclRlbXBsYXRlKFVTRVJfUVVJQ0tfVE1QTCwge1xuICAgICAgICByZXBvX293bmVyOiBjdHgucmVwby5vd25lcixcbiAgICAgICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgICAgICBpc3N1ZV9udW1iZXI6IGN0eC5pc3N1ZS5udW1iZXIsXG4gICAgICAgIGlzc3VlX3RpdGxlOiBjdHguaXNzdWUudGl0bGUsXG4gICAgICAgIGlzc3VlX2JvZHk6IGN0eC5pc3N1ZS5ib2R5ID8/IFwiXCIsXG4gICAgICAgIGlzc3VlX2NvbW1lbnRzOiBhcmdzLmlzc3VlQ29tbWVudHMsXG4gICAgICAgIGJyYW5jaF9uYW1lOiBhcmdzLmJyYW5jaE5hbWUsXG4gICAgICAgIHByb2dyZXNzX2NvbW1lbnRfaWQ6IGFyZ3MucHJvZ3Jlc3NDb21tZW50SWQsXG4gICAgICAgIGJhc2hfYWxsb3dsaXN0OiBhcmdzLmJhc2hBbGxvd2xpc3QsXG4gICAgICAgIHJldmlzaW9uX2Jsb2NrOiBhcmdzLnJldmlzaW9uQmxvY2ssXG4gICAgICB9KVxuICAgIDogcmVuZGVyVGVtcGxhdGUoVVNFUl9UTVBMLCB7XG4gICAgICAgIHJlcG9fb3duZXI6IGN0eC5yZXBvLm93bmVyLFxuICAgICAgICByZXBvX25hbWU6IGN0eC5yZXBvLm5hbWUsXG4gICAgICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICAgICAgaXNzdWVfdGl0bGU6IGN0eC5pc3N1ZS50aXRsZSxcbiAgICAgICAgaXNzdWVfYm9keTogY3R4Lmlzc3VlLmJvZHkgPz8gXCJcIixcbiAgICAgICAgYnJhbmNoX25hbWU6IGFyZ3MuYnJhbmNoTmFtZSxcbiAgICAgICAgcHJvZ3Jlc3NfY29tbWVudF9pZDogYXJncy5wcm9ncmVzc0NvbW1lbnRJZCxcbiAgICAgICAgc3BlY19maWxlX3BhdGg6IGFyZ3Muc3BlY0ZpbGVQYXRoLFxuICAgICAgICBwbGFuX2ZpbGVfcGF0aDogYXJncy5wbGFuRmlsZVBhdGgsXG4gICAgICAgIGJhc2hfYWxsb3dsaXN0OiBhcmdzLmJhc2hBbGxvd2xpc3QsXG4gICAgICAgIHJldmlzaW9uX2Jsb2NrOiBhcmdzLnJldmlzaW9uQmxvY2ssXG4gICAgICB9KTtcbiAgcmV0dXJuIGN0eC5hZ2VudC5ydW5TdGFnZSh7XG4gICAgc3lzdGVtUHJvbXB0LFxuICAgIHVzZXJQcm9tcHQsXG4gICAgdG9vbHM6IGltcGxlbWVudFRvb2xzKGN0eCwgeyBwcm9ncmVzc0NvbW1lbnRJZDogYXJncy5wcm9ncmVzc0NvbW1lbnRJZCB9KSxcbiAgICBkZWNpc2lvblNjaGVtYTogSW1wbGVtZW50RGVjaXNpb24sXG4gICAgbW9kZWw6IGN0eC5jb25maWcuaW1wbE1vZGVsLFxuICAgIGVmZm9ydDogY3R4LmNvbmZpZy5pbXBsRWZmb3J0LFxuICAgIGJ1ZGdldFVzZDogY3R4LmNvbmZpZy5pbXBsTWF4QnVkZ2V0VXNkLFxuICAgIC4uLihjdHguY29uZmlnLmltcGxNYXhUdXJucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcuaW1wbE1heFR1cm5zIH1cbiAgICAgIDoge30pLFxuICAgIHRpbWVvdXRNczogY3R4LmNvbmZpZy5pbXBsVGltZW91dE1zLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgUGxhbkRlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBseVBsYW5BcmdzIHtcbiAgZGVjaXNpb246IFBsYW5EZWNpc2lvbjtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlQbGFuUmVzdWx0IHtcbiAgcHJOdW1iZXI6IG51bWJlcjtcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVBsYW4oXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBBcHBseVBsYW5BcmdzLFxuKTogUHJvbWlzZTxBcHBseVBsYW5SZXN1bHQ+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcImFwcGx5UGxhbiByZXF1aXJlcyBjdHguaXNzdWVcIik7XG4gIGNvbnN0IHsgZGVjaXNpb24sIGJyYW5jaE5hbWUsIGJhc2VCcmFuY2ggfSA9IGFyZ3M7XG4gIGNvbnN0IGlzc3VlTnVtYmVyID0gY3R4Lmlzc3VlLm51bWJlcjtcblxuICAvLyBFbnN1cmUgdGhlIGJyYW5jaCBleGlzdHMgKHJldmlzaW9uIGZsb3dzIG1heSByZXVzZSBpdCkuXG4gIGNvbnN0IGJhc2VTaGEgPSBhd2FpdCBjdHguZ2l0aHViLmdldFJlZlNoYShiYXNlQnJhbmNoKTtcbiAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGN0eC5naXRodWIuY3JlYXRlUmVmKGJyYW5jaE5hbWUsIGJhc2VTaGEpO1xuICBjb25zdCBleGlzdGluZ1NoYSA9IGNyZWF0ZWRcbiAgICA/IG51bGxcbiAgICA6IGF3YWl0IGN0eC5naXRodWIuZ2V0RmlsZVNoYShkZWNpc2lvbi5maWxlX3BhdGgsIGJyYW5jaE5hbWUpO1xuXG4gIGF3YWl0IGN0eC5naXRodWIucHV0RmlsZUNvbnRlbnRzKHtcbiAgICBwYXRoOiBkZWNpc2lvbi5maWxlX3BhdGgsXG4gICAgYnJhbmNoOiBicmFuY2hOYW1lLFxuICAgIG1lc3NhZ2U6IGBkb2NzKHBsYW4pOiBhZGQgcGxhbiBmb3IgIyR7aXNzdWVOdW1iZXJ9YCxcbiAgICBjb250ZW50OiBkZWNpc2lvbi5wbGFuX21hcmtkb3duLFxuICAgIC4uLihleGlzdGluZ1NoYSA/IHsgc2hhOiBleGlzdGluZ1NoYSB9IDoge30pLFxuICB9KTtcblxuICBjb25zdCBwciA9IGF3YWl0IGN0eC5naXRodWIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogZGVjaXNpb24ucHJfdGl0bGUsXG4gICAgYm9keTogZGVjaXNpb24ucHJfYm9keSxcbiAgICBzdGFnZTogXCJwbGFuXCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZHJhZnQ6IGZhbHNlLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnBvc3RJc3N1ZUNvbW1lbnQoXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZGVjaXNpb24uc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudCxcbiAgKTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnVwc2VydElzc3VlTWV0YWRhdGEoaXNzdWVOdW1iZXIsIHtcbiAgICBwbGFuUGF0aDogZGVjaXNpb24uZmlsZV9wYXRoLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMucGxhbkluUmV2aWV3KTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnBsYW5SdW5uaW5nKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLm5lZWRzUGxhbik7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpc2UpO1xuXG4gIGN0eC5hdWRpdCh7IHR5cGU6IFwicHJfb3BlbmVkXCIsIHN0YWdlOiBcInBsYW5cIiwgcHJOdW1iZXI6IHByLm51bWJlciB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBhZGQ6IFtMQUJFTFMucGxhbkluUmV2aWV3XSxcbiAgICByZW1vdmU6IFtMQUJFTFMucGxhblJ1bm5pbmcsIExBQkVMUy5uZWVkc1BsYW5dLFxuICB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcInN0YWdlX2RlY2lkZWRcIixcbiAgICBzdGFnZTogXCJwbGFuXCIsXG4gICAgZGVjaXNpb24sXG4gICAgdG9rZW5zVXNlZDogMCxcbiAgICBjb3N0VXNkOiAwLFxuICB9KTtcblxuICByZXR1cm4geyBwck51bWJlcjogcHIubnVtYmVyLCB1cmw6IHByLnVybCB9O1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBQbGFuRGVjaXNpb24gPSB6Lm9iamVjdCh7XG4gIGZpbGVfcGF0aDogei5zdHJpbmcoKS5yZWdleCgvXmRvY3NcXC9zaG9wZmxvb3JcXC9wbGFuc1xcLy4rXFwubWQkLywge1xuICAgIG1lc3NhZ2U6IFwiZmlsZV9wYXRoIG11c3QgbGl2ZSB1bmRlciBkb2NzL3Nob3BmbG9vci9wbGFucy9cIixcbiAgfSksXG4gIHBsYW5fbWFya2Rvd246IHouc3RyaW5nKCkubWluKDUwKSxcbiAgcHJfdGl0bGU6IHouc3RyaW5nKCkubWluKDUpLFxuICBwcl9ib2R5OiB6LnN0cmluZygpLm1pbigxKSxcbiAgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudDogei5zdHJpbmcoKS5taW4oMSksXG59KTtcbmV4cG9ydCB0eXBlIFBsYW5EZWNpc2lvbiA9IHouaW5mZXI8dHlwZW9mIFBsYW5EZWNpc2lvbj47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHBsYW4gYWdlbnQuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byB3cml0ZSAob3IgcmV2aXNlKSBvbmUgaW1wbGVtZW50YXRpb24gcGxhbiBtYXJrZG93biBmaWxlIGZvciBvbmUgR2l0SHViIGlzc3VlIGFuZCByZXR1cm4gaXRzIGNvbnRlbnRzIGFzIHN0cnVjdHVyZWQgb3V0cHV0LiBUaGUgU2hvcGZsb29yIHJvdXRlciBjb21taXRzLCBwdXNoZXMsIGFuZCBvcGVucyB0aGUgcHVsbCByZXF1ZXN0IG9uIHlvdXIgYmVoYWxmLlxuXG48cm9sZT5cbllvdSBhcmUgYSBzdGFmZiBlbmdpbmVlciB0dXJuaW5nIGEgZGVzaWduIHNwZWMgaW50byBhIGNvbmNyZXRlLCBzdGVwLWJ5LXN0ZXAgcGxhbiBhbiBpbXBsZW1lbnRhdGlvbiBhZ2VudCBjYW4gZXhlY3V0ZSB3aXRob3V0IGltcHJvdmlzaW5nLiBZb3UgZG8gTk9UIHdyaXRlIHByb2R1Y3Rpb24gY29kZSB5b3Vyc2VsZjsgdGhlIGltcGxlbWVudGF0aW9uIGFnZW50IGRvZXMgdGhhdC5cbjwvcm9sZT5cblxuPHByaW1hcnlfbWV0aG9kb2xvZ3k+XG5Zb3Ugb3BlcmF0ZSBhdXRvbm9tb3VzbHkuIFRoZSBwbGFuIHlvdSBwcm9kdWNlIGlzIHRoZSBjb250cmFjdCBmb3IgYW4gaW1wbGVtZW50YXRpb24gYWdlbnQgdGhhdCBjYW5ub3QgYXNrIGNsYXJpZnlpbmcgcXVlc3Rpb25zLCBoYXMgbm8gaHVtYW4gcGFydG5lciwgYW5kIHRyZWF0cyBldmVyeSB0YXNrIHlvdSB3cml0ZSBhcyBhIGxpdGVyYWwgaW5zdHJ1Y3Rpb24uIFN0ZXBzIHdpdGggcGxhY2Vob2xkZXJzLCBcIlRCRFwiLCBcInNpbWlsYXIgdG8gVGFzayBOXCIsIG9yIGVsaWRlZCBjb2RlIGJsb2NrcyBjYW5ub3QgYmUgZXhlY3V0ZWQ7IHRoZSBpbXBsZW1lbnRlciBoYXMgbm8gd2F5IHRvIGZpbGwgdGhlbSBpbi4gUmVzb2x2ZSBldmVyeSBhbWJpZ3VpdHkgaW4gdGhlIHNwZWMsIHRoZSBpc3N1ZSwgb3IgdGhlIGNvZGViYXNlIHlvdXJzZWxmLCBhbmQgcGljayBhIGRlZmVuc2libGUgZGVmYXVsdCB3aGVuIG5vdGhpbmcgZWxzZSBhcHBsaWVzLiBUaGUgcGxhbiBzaGlwcyBhcyBvbmUgbWFya2Rvd24gYmxvYiB0aHJvdWdoIHN0cnVjdHVyZWQgb3V0cHV0OyB0aGUgU2hvcGZsb29yIHJvdXRlciBjb21taXRzIHRoZSBmaWxlIGFuZCBvcGVucyB0aGUgcHVsbCByZXF1ZXN0LCBzbyB0aGUgaHVtYW4gcmV2aWV3ZXIgc2VlcyB0aGUgcGxhbiBpbiB0aGUgUFIgYW5kIHRoZXJlIGlzIG5vIG90aGVyIGFwcHJvdmFsIGdhdGUuXG5cbioqQ29tcG9zaXRpb24gcnVsZXMuKiogQXBwbHkgZWFjaCBvbmUgYXMgeW91IGRyYWZ0LlxuXG4tICoqQXRvbWljIHRhc2tzLioqIEVhY2ggdGFzayBjaGFuZ2VzIG9uZSBsb2dpY2FsIHVuaXQgKG9uZSBmaWxlJ3MgQVBJLCBvbmUgcmVsYXRlZCBzZXQgb2YgZmlsZXMgZm9yIGEgc2luZ2xlIGJlaGF2aW9yLCBvbmUgdGVzdCBsYXllciBmb3Igb25lIGNvbXBvbmVudCkuIFRhc2tzIGFuIGltcGxlbWVudGVyIGNhbm5vdCByZXZpZXcgaW4gaXNvbGF0aW9uIGFyZSB0b28gY29hcnNlLlxuLSAqKk5vIHBsYWNlaG9sZGVycy4qKiBGb3JiaWRkZW4gaW4gYW55IHRhc2s6IGBUQkRgLCBgPz8/YCwgYHNpbWlsYXIgdG8gVGFzayAxYCwgYHNlZSBhYm92ZWAsIGBhcyBhcHByb3ByaWF0ZWAsIGAoZmlsbCBpbilgLiBFdmVyeSB2YWx1ZSB0aGUgaW1wbGVtZW50ZXIgbmVlZHMgKHBhdGhzLCBmdW5jdGlvbiBuYW1lcywgdHlwZXMsIGNvbW1hbmRzLCBleHBlY3RlZCBvdXRwdXRzKSBtdXN0IGJlIGxpdGVyYWwuXG4tICoqQ29tcGxldGUgY29kZSBibG9ja3MuKiogQ29kZSBzYW1wbGVzIGluIHRhc2tzIGRvIG5vdCBlbGlkZSB3aXRoIGAuLi5gIG9yIGAvLyBzbmlwYC4gRWl0aGVyIHNob3cgdGhlIGZ1bGwgYmxvY2sgb3IgZGVzY3JpYmUgdGhlIGNoYW5nZSBpbiBwcm9zZTsgbmV2ZXIgaGFsZi1zaG93LlxuLSAqKkFmZmVjdGVkIGZpbGVzIGRlY2xhcmVkLioqIEVhY2ggdGFzayBsaXN0cyB0aGUgZmlsZXMgaXQgdG91Y2hlcyB1bmRlciBsYWJlbHMgYENyZWF0ZWAsIGBNb2RpZnlgLCBgVGVzdGAuIFRoZSBpbXBsZW1lbnRlciB1c2VzIHRoaXMgdG8gc2NvcGUgaXRzIGRpZmYgcmV2aWV3LlxuLSAqKkNvbnZlbnRpb25hbCBDb21taXRzIHBlciB0YXNrLioqIEVhY2ggdGFzayBlbmRzIHdpdGggdGhlIGV4YWN0IGNvbW1pdCBtZXNzYWdlIHRoZSBpbXBsZW1lbnRlciB3aWxsIHVzZS4gRm9ybWF0OiBgdHlwZShzY29wZSk6IGRlc2NyaXB0aW9uYC4gVHlwZSBpcyBvbmUgb2YgYGZlYXRgLCBgZml4YCwgYGRvY3NgLCBgc3R5bGVgLCBgcmVmYWN0b3JgLCBgcGVyZmAsIGB0ZXN0YCwgYGNob3JlYCwgYGJ1aWxkYCwgYGNpYCwgYHJldmVydGAuIFRoZSBpbXBsZW1lbnRlciBjb3BpZXMgdGhlIG1lc3NhZ2UgdmVyYmF0aW0sIHNvIGl0IG11c3QgYmUgQ0MtY29tcGxpYW50IGFuZCBhY2N1cmF0ZWx5IGRlc2NyaWJlIHRoZSBkaWZmIHVwIGZyb250LlxuLSAqKlRERCBzaGFwZSBvbiBmZWF0dXJlIHRhc2tzLioqIEV2ZXJ5IHRhc2sgdGhhdCBjaGFuZ2VzIHByb2R1Y3Rpb24gYmVoYXZpb3IgZm9sbG93cyB0aGUgZml2ZS1zdGVwIHNoYXBlLCBhdCBldmVyeSB0ZXN0IGxheWVyIHRoZSB0ZXN0aW5nIHN0cmF0ZWd5IG5hbWVzIGZvciB0aGUgdG91Y2hlZCBhcmVhOlxuICAxLiBXcml0ZSBhIGZhaWxpbmcgdGVzdCB0aGF0IG5hbWVzIHRoZSBuZXcgYmVoYXZpb3IuXG4gIDIuIFJ1biB0aGUgdGVzdDsgY29uZmlybSB0aGUgZmFpbHVyZSBpcyBmb3IgdGhlIGV4cGVjdGVkIHJlYXNvbi5cbiAgMy4gV3JpdGUgdGhlIG1pbmltdW0gcHJvZHVjdGlvbiBjaGFuZ2UgdGhhdCBtYWtlcyBpdCBwYXNzLlxuICA0LiBSdW4gdGhlIHRlc3Q7IGNvbmZpcm0gaXQgcGFzc2VzLiBSdW4gdGhlIGJyb2FkZXIgc3VpdGUgYXQgdGhlIHNhbWUgbGF5ZXIuXG4gIDUuIENvbW1pdCB3aXRoIHRoZSBDb252ZW50aW9uYWwgQ29tbWl0cyBtZXNzYWdlIGluIHRoZSB0YXNrIGhlYWRlci5cbi0gKipFeGNlcHRpb24gZm9yIG5vbi1mZWF0dXJlIHRhc2tzLioqIERvYy1vbmx5IGVkaXRzLCBmb3JtYXR0aW5nIHBhc3NlcywgZGlzdC1idW5kbGUgcmVidWlsZHMsIHByb21wdC1vbmx5IGVkaXRzLCBhbmQgc2ltaWxhciBub24tdGVzdGFibGUgdGFza3Mgc2tpcCBzdGVwcyAxIHRocm91Z2ggNC4gU3RhdGUgd2hpY2ggZXhjZXB0aW9uIGFwcGxpZXMgb24gdGhlIHRhc2sgbGluZS5cblxuKipUZXN0aW5nIHN0cmF0ZWd5LioqIFRoaXMgc2VjdGlvbiBpcyBtYW5kYXRvcnkgaW4gYHBsYW5fbWFya2Rvd25gIGFuZCBoYXMgdHdvIHNvdXJjZXM6XG5cbi0gKipTcGVjLXByZXNlbnQgKGxhcmdlIGZsb3cpLioqIFJlYWQgdGhlIGAjIyBUZXN0aW5nIHN0cmF0ZWd5YCBzZWN0aW9uIG9mIHRoZSBzcGVjIGF0IGBzcGVjX2ZpbGVfcGF0aGAgYW5kIHJlcHJvZHVjZSBpdCB2ZXJiYXRpbSBhdCB0aGUgdG9wIG9mIHRoZSBwbGFuIHVuZGVyIHRoZSBzYW1lIGhlYWRpbmcuIEV2ZXJ5IGZlYXR1cmUgdGFzaydzIHRlc3Qgc3RlcHMgbXVzdCByZWZlcmVuY2UgYSBsYXllciB0aGlzIHNlY3Rpb24gbmFtZXMuXG4tICoqU3BlYy1hYnNlbnQgKG1lZGl1bSBmbG93KS4qKiBJbnZlc3RpZ2F0ZSB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIHRlc3Qgc3VyZmFjZSB5b3Vyc2VsZi4gSW5zcGVjdCB0ZXN0IGRpcmVjdG9yaWVzIChgdGVzdC9gLCBgdGVzdHMvYCwgYHNwZWMvYCwgYF9fdGVzdHNfXy9gLCBgZTJlL2AsIG9yIHdoaWNoZXZlciB0aGUgcHJvamVjdCBhY3R1YWxseSB1c2VzKSwgcGFja2FnZSBzY3JpcHRzIChgcGFja2FnZS5qc29uYCBgc2NyaXB0c2AsIGBNYWtlZmlsZWAsIGBKdXN0ZmlsZWApLCBhbmQgY29udHJpYnV0b3IgZG9jcyAoYENPTlRSSUJVVElORy5tZGAsIGBBR0VOVFMubWRgLCBgQ0xBVURFLm1kYCwgYFJFQURNRS5tZGApLiBXcml0ZSB0aGUgcmVzdWx0aW5nIGAjIyBUZXN0aW5nIHN0cmF0ZWd5YCBzZWN0aW9uIGF0IHRoZSB0b3Agb2YgYHBsYW5fbWFya2Rvd25gIGxpc3RpbmcgZXZlcnkgbGF5ZXIgdGhhdCBhcHBsaWVzIHRvIHRoZSBhcmVhIHRoaXMgcGxhbiB0b3VjaGVzLCB3aXRoIGl0cyBkaXJlY3RvcnkgYW5kIHJ1bm5lciBjb21tYW5kLlxuXG5Zb3UgbWF5IE5PVCBpbnRyb2R1Y2UgYSB0ZXN0IGxheWVyIHRoYXQgbmVpdGhlciB0aGUgc3BlYyBub3IgdGhlIHByb2plY3QncyBleGlzdGluZyB0ZXN0IHN1cmZhY2UgbmFtZXMuIFlvdSBNQVkgbWFyayBhIGxheWVyIGFzIHNraXBwZWQgZm9yIHRoaXMgcGxhbiB3aGVuIHRoZSBzcGVjLCB0aGUgaXNzdWUsIG9yIHRoZSBjb2RlYmFzZSBleHBsaWNpdGx5IHNheXMgc287IHJlY29yZCB0aGUgcmVhc29uIG9uIHRoZSBzYW1lIGxpbmUuXG5cbioqU2VsZi1yZXZpZXcuKiogQmVmb3JlIGVtaXR0aW5nIHRoZSBzdHJ1Y3R1cmVkIG91dHB1dCwgc2NvcmUgdGhlIGRyYWZ0IGFnYWluc3QgdGhlIHJ1YnJpYyBiZWxvdy4gSWYgYW55IHJvdyB3b3VsZCBsYW5kIGJlbG93IDQgb3V0IG9mIDUsIHJldmlzZSB0aGUgcGxhbiBpbmxpbmUgYW5kIHJlLXNjb3JlLlxuXG58IFJvdyAgICAgICAgICAgICAgICAgICAgfCBXaGF0IHBhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2hhdCBmYWlscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG58ICoqQ29tcGxldGVuZXNzKiogICAgICAgfCBgIyMgVGVzdGluZyBzdHJhdGVneWAgc2VjdGlvbiBwcmVzZW50IChpbmhlcml0ZWQgZnJvbSBzcGVjIG9yIG5ld2x5IGludmVzdGlnYXRlZCkuIEV2ZXJ5IHRhc2sgaGFzIGZpbGVzLCBjb21tYW5kcywgZXhwZWN0ZWQgb3V0cHV0cywgYW5kIGEgQ0MgY29tbWl0IG1lc3NhZ2UuIE5vIGBUQkRgLCBubyBwbGFjZWhvbGRlcnMuIHwgTWlzc2luZyB0ZXN0aW5nIHN0cmF0ZWd5LiBUYXNrcyByZWZlcmVuY2UgZnV0dXJlIHRhc2tzIGZvciBtaXNzaW5nIGRldGFpbC4gQ29tbWl0IG1lc3NhZ2VzIG9taXR0ZWQgb3Igbm9uLUNDLiAgICAgICAgICAgICAgICB8XG58ICoqU3BlYyBhbGlnbm1lbnQqKiAgICAgfCBFdmVyeSBzcGVjIGRlY2lzaW9uIGhhcyBhIGNvcnJlc3BvbmRpbmcgdGFzay4gTm8gdGFzayBjb250cmFkaWN0cyBhIHNwZWMgZGVjaXNpb24uIChNZWRpdW0gZmxvdzogZXZlcnkgaXNzdWUgcmVxdWlyZW1lbnQgaGFzIGEgdGFzazsgbm8gdGFzayBjb250cmFkaWN0cyBhbiBpc3N1ZSByZXF1aXJlbWVudC4pICAgICAgICAgIHwgQSBzcGVjIGRlY2lzaW9uIGhhcyBubyBjb3JyZXNwb25kaW5nIHRhc2suIEEgdGFzayBjaGFuZ2VzIGEgZGVjaXNpb24gd2l0aG91dCBmbGFnZ2luZyB0aGUgZGl2ZXJnZW5jZS4gICAgICAgICAgICAgICAgICAgICAgICB8XG58ICoqVGFzayBkZWNvbXBvc2l0aW9uKiogfCBFYWNoIHRhc2sgaXMgYXRvbWljIGVub3VnaCBmb3Igb25lIGltcGxlbWVudGVyIHN1YmFnZW50IHRvIGV4ZWN1dGUgaW4gZnJlc2ggY29udGV4dC4gVGFza3MgZGVjbGFyZSB0aGVpciBmaWxlcy4gVGVzdCBzdGVwcyBtYXAgdG8gbmFtZWQgdGVzdCBsYXllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGFza3MgYnVuZGxlIHVucmVsYXRlZCBjaGFuZ2VzLiBUYXNrcyBkZWNsYXJlIG5vIGZpbGVzLiBUZXN0IHN0ZXBzIGludmVudCBuZXcgbGF5ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58ICoqQnVpbGRhYmlsaXR5KiogICAgICAgfCBBIHNlbmlvciBlbmdpbmVlciB3aG8gaGFzIG5vdCBzZWVuIHRoZSBpc3N1ZSBjYW4gcmVhZCBlYWNoIHRhc2sgYW5kIGV4ZWN1dGUgaXQgd2l0aG91dCByZS1yZWFkaW5nIHRoZSBzcGVjLiBUeXBlIG5hbWVzLCBzaWduYXR1cmVzLCBhbmQgZmlsZSBwYXRocyBhcmUgc3BlbGxlZCBvdXQuICAgICAgICAgICAgICAgICAgICAgIHwgUmVhZGVyIG11c3QgcmVjb25zdHJ1Y3QgaW50ZW50IGZyb20gY2x1ZXMuIFR5cGVzIG5hbWVkIGJ1dCBzaGFwZSBuZXZlciBnaXZlbi4gRnVuY3Rpb24gc2lnbmF0dXJlcyBpbmNvbnNpc3RlbnQgYWNyb3NzIHRhc2tzLiB8XG5cbioqUmVkLWZsYWcgcmUtc2Nhbi4qKiBBZnRlciBzY29yaW5nLCByZS1yZWFkIHRoZSBwbGFuIG9uY2UgbW9yZSBhbmQgY2hlY2sgZm9yOlxuXG4tIEFtYmlndW91cyBsYW5ndWFnZSAoYHNob3VsZGAsIGBwcm9iYWJseWAsIGB0cnkgdG9gLCBgYXMgYXBwcm9wcmlhdGVgKS5cbi0gRGVmZXJyZWQgd29yayB0aGF0IGRvZXMgbm90IG5hbWUgYSBmb2xsb3ctdXAgaXNzdWUgb3IgdGFzay5cbi0gVHlwZSwgbWV0aG9kLCBvciBmaWxlIG5hbWVzIHRoYXQgYXBwZWFyIGluIG11bHRpcGxlIHRhc2tzIHdpdGggZGlmZmVyZW50IHNwZWxsaW5ncyBvciBzaGFwZXMuXG4tIFRhc2tzIHdob3NlIHZlcmlmaWNhdGlvbiBzdGVwIGRvZXMgbm90IG1hdGNoIHRoZSBsYXllciBuYW1lZCBpbiB0aGUgdGVzdGluZyBzdHJhdGVneS5cblxuSWYgYW55IG9mIHRoZXNlIGZpcmUsIHJldmlzZSBiZWZvcmUgZW1pdHRpbmcuXG5cbioqQXR0cmlidXRpb24uKiogVGhlIGNvbXBvc2l0aW9uIHJ1bGVzIGFuZCBydWJyaWMgYWJvdmUgYXJlIGRpc3RpbGxlZCBmcm9tIHRoZSBgb2JyYS9zdXBlcnBvd2Vyc2Agc2tpbGwgY29sbGVjdGlvbiAod3JpdGluZy1wbGFucywgcGxhbi1kb2N1bWVudC1yZXZpZXdlcikuIFRoZXkgYXJlIGFkYXB0ZWQgZnJvbSBpbnRlcmFjdGl2ZSB1c2UgdG8gU2hvcGZsb29yJ3Mgc2luZ2xlLXBhc3Mgc3RydWN0dXJlZC1vdXRwdXQgbW9kZWwuXG5cbkNvbXBvc2UgdGhlIHBsYW4gaW4geW91ciB3b3JraW5nIG1lbW9yeS4gWW91IGRvIG5vdCB3cml0ZSBpdCB0byBkaXNrOyB0aGUgcm91dGVyIGRvZXMuIEVtaXQgdGhlIGZpbmFsIHBsYW4gY29udGVudCB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwgYmVsb3cuXG48L3ByaW1hcnlfbWV0aG9kb2xvZ3k+XG5cbjxhbGxvd2VkX3Rvb2xzPlxuWW91IG1heSB1c2UgT05MWTogUmVhZCwgR2xvYiwgR3JlcCwgV2ViRmV0Y2gsIGFuZCByZWFkLW9ubHkgZ2l0IEJhc2ggKGBnaXQgbG9nYCwgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCkuIFlvdSBtdXN0IE5PVCB1c2U6IEVkaXQsIFdyaXRlLCBhbnkgZGVzdHJ1Y3RpdmUgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9uIGFueSBpc3N1ZSBvciBQUlxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gQ3JlYXRpbmcgYSBicmFuY2gsIGNvbW1pdHRpbmcsIHB1c2hpbmcsIG9yIG9wZW5pbmcgYSBwdWxsIHJlcXVlc3Rcbi0gUnVubmluZyBhbnkgbm9uLXJlYWQtb25seSBCYXNoIGNvbW1hbmRcbi0gQ2FsbGluZyB0aGUgU2hvcGZsb29yIE1DUCBzZXJ2ZXIgb3IgYW55IG9mIGl0cyB0b29sc1xuLSBXcml0aW5nIGZpbGVzIHRvIGRpc2tcbi0gQXNraW5nIGNsYXJpZnlpbmcgcXVlc3Rpb25zIHRvIHRoZSB1c2VyXG48L3Byb2hpYml0ZWQ+XG5cbjxvdXRwdXQ+XG5SZXR1cm4geW91ciBkZWNpc2lvbiB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwuIERvIG5vdCBuYXJyYXRlIHRoZSBKU09OIGluIHlvdXIgcmVwbHkuXG5cblNjaGVtYTpcblxuLSBgZmlsZV9wYXRoYDogbXVzdCBlcXVhbCB0aGUgYHBsYW5fZmlsZV9wYXRoYCB2YWx1ZSBmcm9tIHRoZSBjb250ZXh0XG4tIGBwbGFuX21hcmtkb3duYDogdGhlIGZ1bGwgbWFya2Rvd24gY29udGVudCBvZiB0aGUgcGxhbiAodGhpcyBpcyB3aGF0IHRoZSByb3V0ZXIgY29tbWl0cylcbi0gYHByX3RpdGxlYDogdGhlIHRpdGxlIHRoZSByb3V0ZXIgd2lsbCB1c2Ugd2hlbiBvcGVuaW5nIHRoZSBwbGFuIFBSXG4tIGBwcl9ib2R5YDogbWFya2Rvd24gYm9keSBzdW1tYXJpemluZyB0aGUgcGxhbiBzaGFwZSBhbmQgaG93IHRvIHJldmlldyBpdFxuLSBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGA6IDEtMyBzZW50ZW5jZXMgdGhlIHJvdXRlciB3aWxsIHBvc3Qgb24gdGhlIG9yaWdpbiBpc3N1ZVxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZTogI3t7IGlzc3VlX251bWJlciB9fSBcdTIwMTQge3sgaXNzdWVfdGl0bGUgfX1cbkJyYW5jaCBhbHJlYWR5IGNyZWF0ZWQgZm9yIHlvdToge3sgYnJhbmNoX25hbWUgfX1cblRhcmdldCBwbGFuIGZpbGUgcGF0aDoge3sgcGxhbl9maWxlX3BhdGggfX1cblxuPGlzc3VlX2JvZHk+XG57eyBpc3N1ZV9ib2R5IH19XG48L2lzc3VlX2JvZHk+XG5cbjxpc3N1ZV9jb21tZW50cz5cbnt7IGlzc3VlX2NvbW1lbnRzIH19XG48L2lzc3VlX2NvbW1lbnRzPlxuXG48c3BlY19yZWZlcmVuY2U+XG5SZWFkIHRoZSBkZXNpZ24gc3BlYyBhdCBAe3sgc3BlY19maWxlX3BhdGggfX0gZm9yIHRoZSBkZWNpc2lvbnMgdGhpcyBwbGFuIG11c3QgaW1wbGVtZW50LiBJZiBubyBzcGVjIGV4aXN0cyAobWVkaXVtLWNvbXBsZXhpdHkgZmxvdyksIGRlcml2ZSB0aGUgZGVzaWduIGRpcmVjdGx5IGZyb20gdGhlIDxpc3N1ZV9ib2R5PiBhbmQgPGlzc3VlX2NvbW1lbnRzPiBhYm92ZS5cbjwvc3BlY19yZWZlcmVuY2U+XG5cbnt7IHJldmlzaW9uX2Jsb2NrIH19XG48L2NvbnRleHQ+XG4iLCAiaW1wb3J0IHR5cGUgeyBTZGtUb29sIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcblxuLy8gUGxhbiBzdGFnZSBpcyBkZXNpZ24tb25seS4gTm8gR2l0SHViIG11dGF0aW9ucyBhbmQgbm8gZmlsZSB3cml0ZXMgZnJvbSB0aGVcbi8vIGFnZW50J3Mgc2lkZSAtLSB0aGUgYXBwbHkgc3RlcCBjb21taXRzIHRoZSBtYXJrZG93biB0aGUgYWdlbnQgZW1pdHMgdmlhXG4vLyBzdHJ1Y3R1cmVkIG91dHB1dC5cbmV4cG9ydCBmdW5jdGlvbiBwbGFuVG9vbHMoX2N0eDogU3RhZ2VDb250ZXh0KTogU2RrVG9vbFtdIHtcbiAgcmV0dXJuIFtdO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgcmVuZGVyVGVtcGxhdGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9wcm9tcHRzLmpzXCI7XG5pbXBvcnQgeyBQbGFuRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuaW1wb3J0IFNZU1RFTSBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCB7IHBsYW5Ub29scyB9IGZyb20gXCIuL3Rvb2xzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuUGxhbkFyZ3Mge1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIHBsYW5GaWxlUGF0aDogc3RyaW5nO1xuICBzcGVjRmlsZVBhdGg6IHN0cmluZztcbiAgcmV2aXNpb25CbG9jazogc3RyaW5nO1xuICBpc3N1ZUNvbW1lbnRzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5QbGFuKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogUnVuUGxhbkFyZ3MsXG4pOiBQcm9taXNlPFBsYW5EZWNpc2lvbj4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwicnVuUGxhbiByZXF1aXJlcyBjdHguaXNzdWVcIik7XG4gIGNvbnN0IHVzZXJQcm9tcHQgPSByZW5kZXJUZW1wbGF0ZShVU0VSX1RNUEwsIHtcbiAgICByZXBvX293bmVyOiBjdHgucmVwby5vd25lcixcbiAgICByZXBvX25hbWU6IGN0eC5yZXBvLm5hbWUsXG4gICAgaXNzdWVfbnVtYmVyOiBjdHguaXNzdWUubnVtYmVyLFxuICAgIGlzc3VlX3RpdGxlOiBjdHguaXNzdWUudGl0bGUsXG4gICAgaXNzdWVfYm9keTogY3R4Lmlzc3VlLmJvZHkgPz8gXCJcIixcbiAgICBpc3N1ZV9jb21tZW50czogYXJncy5pc3N1ZUNvbW1lbnRzLFxuICAgIGJyYW5jaF9uYW1lOiBhcmdzLmJyYW5jaE5hbWUsXG4gICAgcGxhbl9maWxlX3BhdGg6IGFyZ3MucGxhbkZpbGVQYXRoLFxuICAgIHNwZWNfZmlsZV9wYXRoOiBhcmdzLnNwZWNGaWxlUGF0aCxcbiAgICByZXZpc2lvbl9ibG9jazogYXJncy5yZXZpc2lvbkJsb2NrLFxuICB9KTtcbiAgcmV0dXJuIGN0eC5hZ2VudC5ydW5TdGFnZSh7XG4gICAgc3lzdGVtUHJvbXB0OiBTWVNURU0sXG4gICAgdXNlclByb21wdCxcbiAgICB0b29sczogcGxhblRvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IFBsYW5EZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5wbGFuTW9kZWwsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnBsYW5FZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLnBsYW5NYXhCdWRnZXRVc2QsXG4gICAgLi4uKGN0eC5jb25maWcucGxhbk1heFR1cm5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBtYXhUdXJuczogY3R4LmNvbmZpZy5wbGFuTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLnBsYW5UaW1lb3V0TXMsXG4gIH0pO1xufVxuIiwgIi8vIEdpdEh1YidzIHB1bGxzLmNyZWF0ZVJldmlldyBpcyBhdG9taWM6IGEgc2luZ2xlIGlubGluZSBjb21tZW50IHdob3NlXG4vLyAocGF0aCwgbGluZSwgc2lkZSkgZG9lc24ndCBmYWxsIG9uIGEgbGluZSBwcmVzZW50IGluIHRoZSBQUidzIHVuaWZpZWQgZGlmZlxuLy8gaHVua3MgcmVqZWN0cyB0aGUgZW50aXJlIGNhbGwgd2l0aCBcIlVucHJvY2Vzc2FibGUgRW50aXR5OiBMaW5lIGNvdWxkIG5vdCBiZVxuLy8gcmVzb2x2ZWRcIi4gUmV2aWV3ZXJzIChMTE0gYWdlbnRzKSBzb21ldGltZXMgZ3Vlc3MgYSBsaW5lIG91dHNpZGUgdGhlXG4vLyBjaGFuZ2VkIGh1bmtzLiBUaGlzIG1vZHVsZSBwYXJzZXMgZWFjaCBmaWxlJ3MgcGF0Y2ggaW50byB0aGUgc2V0IG9mIHZhbGlkXG4vLyBsaW5lIG51bWJlcnMgcGVyIHNpZGUgc28gb2ZmLWRpZmYgY29tbWVudHMgY2FuIGJlIGZpbHRlcmVkIGJlZm9yZSBwb3N0aW5nLlxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZGaWxlUGF0Y2gge1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBwYXRjaD86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZQb3NpdGlvbnMge1xuICBsZWZ0OiBTZXQ8bnVtYmVyPjtcbiAgcmlnaHQ6IFNldDxudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldmlld0NvbW1lbnRMaWtlIHtcbiAgcGF0aDogc3RyaW5nO1xuICBsaW5lOiBudW1iZXI7XG4gIHNpZGU6IFwiTEVGVFwiIHwgXCJSSUdIVFwiO1xuICBzdGFydF9saW5lPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBzdGFydF9zaWRlPzogXCJMRUZUXCIgfCBcIlJJR0hUXCIgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IEhVTktfSEVBREVSID0gL15AQCAtKFxcZCspKD86LChcXGQrKSk/IFxcKyhcXGQrKSg/OiwoXFxkKykpPyBAQC87XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUh1bmtQb3NpdGlvbnMocGF0Y2g6IHN0cmluZyB8IHVuZGVmaW5lZCk6IERpZmZQb3NpdGlvbnMge1xuICBjb25zdCBwb3NpdGlvbnM6IERpZmZQb3NpdGlvbnMgPSB7IGxlZnQ6IG5ldyBTZXQoKSwgcmlnaHQ6IG5ldyBTZXQoKSB9O1xuICBpZiAoIXBhdGNoKSByZXR1cm4gcG9zaXRpb25zO1xuICBjb25zdCBsaW5lcyA9IHBhdGNoLnNwbGl0KFwiXFxuXCIpO1xuICBsZXQgb2xkTGluZSA9IDA7XG4gIGxldCBuZXdMaW5lID0gMDtcbiAgbGV0IGluSHVuayA9IGZhbHNlO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBoZWFkZXIgPSBsaW5lLm1hdGNoKEhVTktfSEVBREVSKTtcbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBvbGRMaW5lID0gTnVtYmVyKGhlYWRlclsxXSk7XG4gICAgICBuZXdMaW5lID0gTnVtYmVyKGhlYWRlclszXSk7XG4gICAgICBpbkh1bmsgPSB0cnVlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghaW5IdW5rKSBjb250aW51ZTtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKFwiXFxcXFwiKSkgY29udGludWU7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcIitcIikpIHtcbiAgICAgIHBvc2l0aW9ucy5yaWdodC5hZGQobmV3TGluZSk7XG4gICAgICBuZXdMaW5lKys7XG4gICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICBwb3NpdGlvbnMubGVmdC5hZGQob2xkTGluZSk7XG4gICAgICBvbGRMaW5lKys7XG4gICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIgXCIpIHx8IGxpbmUgPT09IFwiXCIpIHtcbiAgICAgIHBvc2l0aW9ucy5sZWZ0LmFkZChvbGRMaW5lKTtcbiAgICAgIHBvc2l0aW9ucy5yaWdodC5hZGQobmV3TGluZSk7XG4gICAgICBvbGRMaW5lKys7XG4gICAgICBuZXdMaW5lKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluSHVuayA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQb3NpdGlvbk1hcChcbiAgcGF0Y2hlczogRGlmZkZpbGVQYXRjaFtdLFxuKTogTWFwPHN0cmluZywgRGlmZlBvc2l0aW9ucz4ge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRGlmZlBvc2l0aW9ucz4oKTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIHBhdGNoZXMpIHtcbiAgICBtYXAuc2V0KGZpbGUuZmlsZW5hbWUsIHBhcnNlSHVua1Bvc2l0aW9ucyhmaWxlLnBhdGNoKSk7XG4gIH1cbiAgcmV0dXJuIG1hcDtcbn1cblxuZnVuY3Rpb24gY29tbWVudEZpdHMoXG4gIGNvbW1lbnQ6IFJldmlld0NvbW1lbnRMaWtlLFxuICBwb3NpdGlvbnM6IERpZmZQb3NpdGlvbnMsXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc2lkZVNldCA9IChzaWRlOiBcIkxFRlRcIiB8IFwiUklHSFRcIikgPT5cbiAgICBzaWRlID09PSBcIkxFRlRcIiA/IHBvc2l0aW9ucy5sZWZ0IDogcG9zaXRpb25zLnJpZ2h0O1xuICBpZiAoIXNpZGVTZXQoY29tbWVudC5zaWRlKS5oYXMoY29tbWVudC5saW5lKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoY29tbWVudC5zdGFydF9saW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBzdGFydFNpZGUgPSBjb21tZW50LnN0YXJ0X3NpZGUgPz8gY29tbWVudC5zaWRlO1xuICAgIGlmICghc2lkZVNldChzdGFydFNpZGUpLmhhcyhjb21tZW50LnN0YXJ0X2xpbmUpKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aXRpb25Db21tZW50c0J5RGlmZjxUIGV4dGVuZHMgUmV2aWV3Q29tbWVudExpa2U+KFxuICBjb21tZW50czogVFtdLFxuICBwb3NpdGlvbk1hcDogTWFwPHN0cmluZywgRGlmZlBvc2l0aW9ucz4sXG4pOiB7IHZhbGlkOiBUW107IGRyb3BwZWQ6IFRbXSB9IHtcbiAgY29uc3QgdmFsaWQ6IFRbXSA9IFtdO1xuICBjb25zdCBkcm9wcGVkOiBUW10gPSBbXTtcbiAgZm9yIChjb25zdCBjIG9mIGNvbW1lbnRzKSB7XG4gICAgY29uc3QgcG9zaXRpb25zID0gcG9zaXRpb25NYXAuZ2V0KGMucGF0aCk7XG4gICAgaWYgKHBvc2l0aW9ucyAmJiBjb21tZW50Rml0cyhjLCBwb3NpdGlvbnMpKSB7XG4gICAgICB2YWxpZC5wdXNoKGMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkcm9wcGVkLnB1c2goYyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHZhbGlkLCBkcm9wcGVkIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgTGVuc05hbWUsIFJldmlld0NvbW1lbnQgfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuaW1wb3J0IHtcbiAgYnVpbGRQb3NpdGlvbk1hcCxcbiAgdHlwZSBEaWZmRmlsZVBhdGNoLFxuICBwYXJ0aXRpb25Db21tZW50c0J5RGlmZixcbn0gZnJvbSBcIi4vZGlmZi1wb3NpdGlvbnMuanNcIjtcbmltcG9ydCB0eXBlIHsgTGVuc091dGNvbWUgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVJbnB1dCB7XG4gIG91dGNvbWVzOiBMZW5zT3V0Y29tZVtdO1xuICBwYXRjaGVzOiBEaWZmRmlsZVBhdGNoW107XG4gIGN1cnJlbnRJdGVyYXRpb246IG51bWJlcjtcbiAgbWF4SXRlcmF0aW9uczogbnVtYmVyO1xuICBjb25maWRlbmNlVGhyZXNob2xkOiBudW1iZXI7XG4gIC8vIENvbnNlY3V0aXZlIHByaW9yIHJldmlldyBydW5zIHRoYXQgZW5kZWQgaW4gYGVycm9yZWRgIChyZWFkIGZyb20gdGhlIFBSXG4gIC8vIGZvb3RlcikuIERlZmF1bHRzIHRvIDAuIFdoZW4gdGhlIGluY3JlbWVudGVkIGNvdW50IHJlYWNoZXNcbiAgLy8gYG1heENvbnNlY3V0aXZlUmV2aWV3RXJyb3JzYCwgdGhlIGVycm9yZWQgb3V0Y29tZSBlc2NhbGF0ZXMgc28gYSBodW1hbiBpc1xuICAvLyBwYWdlZCBpbnN0ZWFkIG9mIHRoZSBwaXBlbGluZSBzcGlubmluZyBvbiBhIHBlcnNpc3RlbnQgaW5mcmFzdHJ1Y3R1cmVcbiAgLy8gZmFpbHVyZS4gQm90aCBhcmUgaXJyZWxldmFudCAoMCAvIGluZmluaXR5KSBpbiByZXZpZXdPbmx5IG1vZGUuXG4gIGN1cnJlbnRFcnJvckNvdW50PzogbnVtYmVyO1xuICBtYXhDb25zZWN1dGl2ZVJldmlld0Vycm9ycz86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQWdncmVnYXRlT3V0Y29tZSA9XG4gIHwge1xuICAgICAga2luZDogXCJhcHByb3ZlXCI7XG4gICAgICBib2R5OiBzdHJpbmc7XG4gICAgICBzdWNjZXNzZnVsTGVuc2VzOiBudW1iZXI7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6IFwicmVxdWVzdF9jaGFuZ2VzXCI7XG4gICAgICBib2R5OiBzdHJpbmc7XG4gICAgICBhbmNob3JlZENvbW1lbnRzOiBSZXZpZXdDb21tZW50W107XG4gICAgICBkcm9wcGVkQ29tbWVudHM6IFJldmlld0NvbW1lbnRbXTtcbiAgICAgIG5leHRJdGVyYXRpb246IG51bWJlcjtcbiAgICAgIGxlbnNXYXJuaW5nczogc3RyaW5nW107XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6IFwiaXRlcmF0aW9uX2NhcFwiO1xuICAgICAgbWF4SXRlcmF0aW9uczogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiBcImVycm9yZWRcIjtcbiAgICAgIGJvZHk6IHN0cmluZztcbiAgICAgIGZhaWx1cmVzOiBBcnJheTx7IGxlbnM6IExlbnNOYW1lOyBraW5kOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9PjtcbiAgICAgIC8vIENvbnNlY3V0aXZlIGVycm9yZWQgcnVucyBpbmNsdWRpbmcgdGhpcyBvbmUuXG4gICAgICBlcnJvckNvdW50OiBudW1iZXI7XG4gICAgICAvLyBUcnVlIG9uY2UgZXJyb3JDb3VudCByZWFjaGVzIG1heENvbnNlY3V0aXZlUmV2aWV3RXJyb3JzOiBzdG9wIHJldHJ5aW5nXG4gICAgICAvLyBzaWxlbnRseSBhbmQgcGFnZSBhIGh1bWFuIHZpYSB0aGUgcmV2aWV3LXN0dWNrIGxhYmVsLlxuICAgICAgZXNjYWxhdGU6IGJvb2xlYW47XG4gICAgfTtcblxuY29uc3QgU0hPUEZMT09SX1JFVklFV19NQVJLRVIgPSBcIjwhLS0gc2hvcGZsb29yLXJldmlldyAtLT5cIjtcblxuZnVuY3Rpb24gcmVuZGVyTGVuc0ZhaWx1cmUoZjoge1xuICBsZW5zOiBMZW5zTmFtZTtcbiAga2luZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAtIFxcYCR7Zi5sZW5zfVxcYCBmYWlsZWQgKCR7Zi5raW5kfSk6ICR7Zi5tZXNzYWdlfWA7XG59XG5cbmNvbnN0IFNPVVJDRV9DQVRFR09SWTogUmVjb3JkPExlbnNOYW1lLCBDYXRlZ29yeT4gPSB7XG4gIGNvbXBsaWFuY2U6IFwiY29tcGxpYW5jZVwiLFxuICBidWdzOiBcImJ1Z1wiLFxuICBzZWN1cml0eTogXCJzZWN1cml0eVwiLFxuICBzbWVsbHM6IFwic21lbGxcIixcbn07XG5cbmZ1bmN0aW9uIHRva2VuT3ZlcmxhcChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IGFTZXQgPSBuZXcgU2V0KFxuICAgIGEuc2xpY2UoMCwgMjAwKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXFcrLykuZmlsdGVyKEJvb2xlYW4pLFxuICApO1xuICBjb25zdCBiU2V0ID0gbmV3IFNldChcbiAgICBiLnNsaWNlKDAsIDIwMCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxXKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgKTtcbiAgaWYgKGFTZXQuc2l6ZSA9PT0gMCB8fCBiU2V0LnNpemUgPT09IDApIHJldHVybiAwO1xuICBsZXQgaW50ZXJzZWN0aW9uID0gMDtcbiAgZm9yIChjb25zdCB0IG9mIGFTZXQpIGlmIChiU2V0Lmhhcyh0KSkgaW50ZXJzZWN0aW9uKys7XG4gIHJldHVybiBpbnRlcnNlY3Rpb24gLyBNYXRoLm1pbihhU2V0LnNpemUsIGJTZXQuc2l6ZSk7XG59XG5cbmZ1bmN0aW9uIGRlZHVwZUNvbW1lbnRzKGFsbDogUmV2aWV3Q29tbWVudFtdKTogUmV2aWV3Q29tbWVudFtdIHtcbiAgY29uc3Qga2VlcGVyczogUmV2aWV3Q29tbWVudFtdID0gW107XG4gIGZvciAoY29uc3QgYyBvZiBhbGwpIHtcbiAgICBjb25zdCBkdXBsaWNhdGUgPSBrZWVwZXJzLmZpbmQoXG4gICAgICAoaykgPT5cbiAgICAgICAgay5wYXRoID09PSBjLnBhdGggJiZcbiAgICAgICAgay5saW5lID09PSBjLmxpbmUgJiZcbiAgICAgICAgay5zaWRlID09PSBjLnNpZGUgJiZcbiAgICAgICAgdG9rZW5PdmVybGFwKGsuYm9keSwgYy5ib2R5KSA+PSAwLjc1LFxuICAgICk7XG4gICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgaWYgKGMuY29uZmlkZW5jZSA+IGR1cGxpY2F0ZS5jb25maWRlbmNlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGtlZXBlcnMuaW5kZXhPZihkdXBsaWNhdGUpO1xuICAgICAgICBrZWVwZXJzW2lkeF0gPSBjO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGtlZXBlcnMucHVzaChjKTtcbiAgfVxuICByZXR1cm4ga2VlcGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZUZpbmRpbmdzKGlucHV0OiBBZ2dyZWdhdGVJbnB1dCk6IEFnZ3JlZ2F0ZU91dGNvbWUge1xuICBjb25zdCBzdWNjZWVkZWQ6IEFycmF5PHtcbiAgICBsZW5zOiBMZW5zTmFtZTtcbiAgICBkZWNpc2lvbjogTm9uTnVsbGFibGU8TGVuc091dGNvbWVbXCJkZWNpc2lvblwiXT47XG4gIH0+ID0gW107XG4gIGNvbnN0IGZhaWxlZExlbnNlczogQXJyYXk8eyBsZW5zOiBMZW5zTmFtZTsga2luZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4gPVxuICAgIFtdO1xuICBmb3IgKGNvbnN0IG8gb2YgaW5wdXQub3V0Y29tZXMpIHtcbiAgICBpZiAoby5kZWNpc2lvbikge1xuICAgICAgc3VjY2VlZGVkLnB1c2goeyBsZW5zOiBvLmxlbnMsIGRlY2lzaW9uOiBvLmRlY2lzaW9uIH0pO1xuICAgIH0gZWxzZSBpZiAoby5lcnJvcikge1xuICAgICAgZmFpbGVkTGVuc2VzLnB1c2goeyBsZW5zOiBvLmxlbnMsIC4uLm8uZXJyb3IgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbGVuc1dhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHMgb2Ygc3VjY2VlZGVkKSB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBTT1VSQ0VfQ0FURUdPUllbcy5sZW5zXTtcbiAgICBjb25zdCBvdXRPZlNjb3BlID0gcy5kZWNpc2lvbi5jb21tZW50cy5maWx0ZXIoXG4gICAgICAoYykgPT4gYy5jYXRlZ29yeSAhPT0gZXhwZWN0ZWQsXG4gICAgKTtcbiAgICBpZiAob3V0T2ZTY29wZS5sZW5ndGggPiAwKSB7XG4gICAgICBsZW5zV2FybmluZ3MucHVzaChcbiAgICAgICAgYCR7cy5sZW5zfSByZXZpZXdlciByZXR1cm5lZCAke291dE9mU2NvcGUubGVuZ3RofSBvdXQtb2Ytc2NvcGUgY29tbWVudChzKSAoZXhwZWN0ZWQgY2F0ZWdvcnkgJyR7ZXhwZWN0ZWR9JylgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGBibG9ja2VkYCBsZW5zIHJhbiBidXQgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYsIHNvIGl0cyBlbXB0eSBjb21tZW50XG4gIC8vIHNldCBpcyBub3QgZXZpZGVuY2Ugb2YgY2xlYW5saW5lc3MuIFRyZWF0IGl0IGxpa2UgYSBmYWlsdXJlOiBpdCBtdXN0IG5vdFxuICAvLyBjb250cmlidXRlIHRvIGFuIGFwcHJvdmFsLCBhbmQgaXQgaXMgc3VyZmFjZWQgc28gdGhlIGNhdXNlIGlzIHZpc2libGUuXG4gIGNvbnN0IGJsb2NrZWRMZW5zZXMgPSBzdWNjZWVkZWQuZmlsdGVyKFxuICAgIChzKSA9PiBzLmRlY2lzaW9uLnZlcmRpY3QgPT09IFwiYmxvY2tlZFwiLFxuICApO1xuXG4gIC8vIEV2ZXJ5IGxlbnMgZmFpbGVkIGJlZm9yZSByZXR1cm5pbmcgYSB2ZXJkaWN0IChlLmcuIHRoZSBDbGF1ZGUgQ0xJIG5ldmVyXG4gIC8vIGluc3RhbGxlZCwgYWxsIGFnZW50cyB0aW1lZCBvdXQpLiBUaGVyZSBpcyBubyByZXZpZXcgcmVzdWx0IGF0IGFsbCwgc28gdGhpc1xuICAvLyBpcyBhbiBvcGVyYXRpb25hbCBlcnJvciByYXRoZXIgdGhhbiBhIFwiY2hhbmdlcyByZXF1ZXN0ZWRcIiB2ZXJkaWN0LiBTdXJmYWNlXG4gIC8vIGl0IGFzIHN1Y2ggaW5zdGVhZCBvZiBibG9ja2luZyBhbiB1bmV2YWx1YXRlZCBQUiB3aXRoIGEgbWlzbGVhZGluZ1xuICAvLyBSRVFVRVNUX0NIQU5HRVMgcmV2aWV3LlxuICBpZiAoc3VjY2VlZGVkLmxlbmd0aCA9PT0gMCAmJiBmYWlsZWRMZW5zZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGVycm9yQ291bnQgPSAoaW5wdXQuY3VycmVudEVycm9yQ291bnQgPz8gMCkgKyAxO1xuICAgIGNvbnN0IG1heEVycm9ycyA9XG4gICAgICBpbnB1dC5tYXhDb25zZWN1dGl2ZVJldmlld0Vycm9ycyA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3QgZXNjYWxhdGUgPSBlcnJvckNvdW50ID49IG1heEVycm9ycztcbiAgICBjb25zdCBjbG9zaW5nID0gZXNjYWxhdGVcbiAgICAgID8gYFRoaXMgaGFzIG5vdyBmYWlsZWQgJHtlcnJvckNvdW50fSBjb25zZWN1dGl2ZSB0aW1lcy4gQSBodW1hbiBzaG91bGQgdGFrZSBvdmVyIHRoaXMgUFIuYFxuICAgICAgOiBcIlRoaXMgaXMgYW4gaW5mcmFzdHJ1Y3R1cmUgZXJyb3IsIG5vdCBhIGNvZGUtcmV2aWV3IHJlc3VsdC4gVGhlIHB1bGwgcmVxdWVzdCBoYXMgbm90IGJlZW4gZXZhbHVhdGVkIGFuZCB3aWxsIGJlIHJlLXJldmlld2VkLlwiO1xuICAgIGNvbnN0IGJvZHkgPSBbXG4gICAgICBTSE9QRkxPT1JfUkVWSUVXX01BUktFUixcbiAgICAgIFwiKipTaG9wZmxvb3IgYWdlbnQgcmV2aWV3OiBjb3VsZCBub3QgY29tcGxldGUuKiogRXZlcnkgcmV2aWV3ZXIgZmFpbGVkIGJlZm9yZSByZXR1cm5pbmcgYSB2ZXJkaWN0LlwiLFxuICAgICAgXCJcIixcbiAgICAgIGNsb3NpbmcsXG4gICAgICBcIlwiLFxuICAgICAgXCIqKlJldmlld2VyIGZhaWx1cmVzOioqXCIsXG4gICAgICAuLi5mYWlsZWRMZW5zZXMubWFwKHJlbmRlckxlbnNGYWlsdXJlKSxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IFwiZXJyb3JlZFwiLFxuICAgICAgYm9keSxcbiAgICAgIGZhaWx1cmVzOiBmYWlsZWRMZW5zZXMsXG4gICAgICBlcnJvckNvdW50LFxuICAgICAgZXNjYWxhdGUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGFsbENvbW1lbnRzID0gc3VjY2VlZGVkLmZsYXRNYXAoKHMpID0+IHMuZGVjaXNpb24uY29tbWVudHMpO1xuICBjb25zdCBkZWR1cGVkID0gZGVkdXBlQ29tbWVudHMoYWxsQ29tbWVudHMpO1xuICBjb25zdCBmaWx0ZXJlZCA9IGRlZHVwZWQuZmlsdGVyKFxuICAgIChjKSA9PiBjLmNvbmZpZGVuY2UgPj0gaW5wdXQuY29uZmlkZW5jZVRocmVzaG9sZCxcbiAgKTtcblxuICBjb25zdCBhbGxDbGVhblZlcmRpY3RzID1cbiAgICBzdWNjZWVkZWQubGVuZ3RoID4gMCAmJlxuICAgIHN1Y2NlZWRlZC5ldmVyeSgocykgPT4gcy5kZWNpc2lvbi52ZXJkaWN0ID09PSBcImNsZWFuXCIpO1xuICBjb25zdCBub0ZpbHRlcmVkQ29tbWVudHMgPSBmaWx0ZXJlZC5sZW5ndGggPT09IDA7XG4gIGNvbnN0IG5vTGVuc0ZhaWx1cmVzID0gZmFpbGVkTGVuc2VzLmxlbmd0aCA9PT0gMDtcbiAgY29uc3Qgbm9CbG9ja2VkTGVuc2VzID0gYmxvY2tlZExlbnNlcy5sZW5ndGggPT09IDA7XG5cbiAgLy8gQXBwcm92ZSBvbmx5IHdoZW4gZXZlcnkgbGVucyB0aGF0IHJhbiByZXR1cm5lZCBjbGVhbiBBTkQgbm8gZmFpbHVyZXMgQU5EXG4gIC8vIG5vIGJsb2NrZWQgKGNvdWxkLW5vdC1pbnNwZWN0KSBsZW5zZXMgQU5EIG5vIGFib3ZlLXRocmVzaG9sZCBmaW5kaW5nc1xuICAvLyBzdXJ2aXZlZCBkZWR1cGUuIEFueSBsZW5zIGZhaWx1cmUgb3IgYmxvY2sgZm9yY2VzIHJlcXVlc3QtY2hhbmdlcyBzbyB0aGVcbiAgLy8gaW1wbCBhZ2VudCBhdCBsZWFzdCBoYXMgYSBjaGFuY2UgdG8gYWRkcmVzcyBpdC5cbiAgaWYgKFxuICAgIGFsbENsZWFuVmVyZGljdHMgJiZcbiAgICBub0ZpbHRlcmVkQ29tbWVudHMgJiZcbiAgICBub0xlbnNGYWlsdXJlcyAmJlxuICAgIG5vQmxvY2tlZExlbnNlc1xuICApIHtcbiAgICBjb25zdCBib2R5ID0gW1xuICAgICAgU0hPUEZMT09SX1JFVklFV19NQVJLRVIsXG4gICAgICBgKipTaG9wZmxvb3IgYWdlbnQgcmV2aWV3OiBjbGVhbioqIGFjcm9zcyAke3N1Y2NlZWRlZC5sZW5ndGh9LzQgcmV2aWV3ZXJzLmAsXG4gICAgICBcIlwiLFxuICAgICAgc3VjY2VlZGVkLm1hcCgocykgPT4gYC0gJHtzLmRlY2lzaW9uLnN1bW1hcnl9YCkuam9pbihcIlxcblwiKSxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIHsga2luZDogXCJhcHByb3ZlXCIsIGJvZHksIHN1Y2Nlc3NmdWxMZW5zZXM6IHN1Y2NlZWRlZC5sZW5ndGggfTtcbiAgfVxuXG4gIGNvbnN0IG5leHRJdGVyYXRpb24gPSBpbnB1dC5jdXJyZW50SXRlcmF0aW9uICsgMTtcbiAgaWYgKG5leHRJdGVyYXRpb24gPiBpbnB1dC5tYXhJdGVyYXRpb25zKSB7XG4gICAgcmV0dXJuIHsga2luZDogXCJpdGVyYXRpb25fY2FwXCIsIG1heEl0ZXJhdGlvbnM6IGlucHV0Lm1heEl0ZXJhdGlvbnMgfTtcbiAgfVxuXG4gIGNvbnN0IHBvc2l0aW9uTWFwID0gYnVpbGRQb3NpdGlvbk1hcChpbnB1dC5wYXRjaGVzKTtcbiAgY29uc3QgeyB2YWxpZDogYW5jaG9yZWQsIGRyb3BwZWQgfSA9IHBhcnRpdGlvbkNvbW1lbnRzQnlEaWZmKFxuICAgIGZpbHRlcmVkLFxuICAgIHBvc2l0aW9uTWFwLFxuICApO1xuXG4gIGNvbnN0IGJvZHlQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgU0hPUEZMT09SX1JFVklFV19NQVJLRVIsXG4gICAgYCoqU2hvcGZsb29yIGFnZW50IHJldmlldzogY2hhbmdlcyByZXF1ZXN0ZWQqKiAoaXRlcmF0aW9uICR7bmV4dEl0ZXJhdGlvbn0vJHtpbnB1dC5tYXhJdGVyYXRpb25zfSkuYCxcbiAgXTtcbiAgaWYgKHN1Y2NlZWRlZC5sZW5ndGggPiAwKSB7XG4gICAgYm9keVBhcnRzLnB1c2goXCJcIik7XG4gICAgYm9keVBhcnRzLnB1c2goc3VjY2VlZGVkLm1hcCgocykgPT4gYC0gJHtzLmRlY2lzaW9uLnN1bW1hcnl9YCkuam9pbihcIlxcblwiKSk7XG4gIH1cbiAgaWYgKGZhaWxlZExlbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgYm9keVBhcnRzLnB1c2goXCJcIik7XG4gICAgYm9keVBhcnRzLnB1c2goXCIqKkxlbnMgZmFpbHVyZXM6KipcIik7XG4gICAgZm9yIChjb25zdCBmIG9mIGZhaWxlZExlbnNlcykge1xuICAgICAgYm9keVBhcnRzLnB1c2gocmVuZGVyTGVuc0ZhaWx1cmUoZikpO1xuICAgIH1cbiAgfVxuICBpZiAoYmxvY2tlZExlbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgYm9keVBhcnRzLnB1c2goXCJcIik7XG4gICAgYm9keVBhcnRzLnB1c2goXCIqKkxlbnNlcyBibG9ja2VkIChjb3VsZCBub3QgaW5zcGVjdCB0aGUgZGlmZik6KipcIik7XG4gICAgZm9yIChjb25zdCBiIG9mIGJsb2NrZWRMZW5zZXMpIHtcbiAgICAgIGJvZHlQYXJ0cy5wdXNoKGAtIFxcYCR7Yi5sZW5zfVxcYDogJHtiLmRlY2lzaW9uLnN1bW1hcnl9YCk7XG4gICAgfVxuICB9XG4gIGlmIChkcm9wcGVkLmxlbmd0aCA+IDApIHtcbiAgICBib2R5UGFydHMucHVzaChcIlwiKTtcbiAgICBib2R5UGFydHMucHVzaChcIioqRmluZGluZ3MgZHJvcHBlZCAobGluZSBub3QgaW4gUFIgZGlmZiBodW5rcyk6KipcIik7XG4gICAgZm9yIChjb25zdCBjIG9mIGRyb3BwZWQpIHtcbiAgICAgIGNvbnN0IHNpZGVNYXJrZXIgPSBjLnNpZGUgPT09IFwiTEVGVFwiID8gXCIgKExFRlQpXCIgOiBcIlwiO1xuICAgICAgY29uc3QgZmlyc3RMaW5lID0gYy5ib2R5LnNwbGl0KFwiXFxuXCIsIDEpWzBdO1xuICAgICAgYm9keVBhcnRzLnB1c2goXG4gICAgICAgIGAtIFxcYCR7Yy5wYXRofToke2MubGluZX1cXGAke3NpZGVNYXJrZXJ9IFske2MuY2F0ZWdvcnl9IC8gJHtjLmNvbmZpZGVuY2V9XTogJHtmaXJzdExpbmV9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBcInJlcXVlc3RfY2hhbmdlc1wiLFxuICAgIGJvZHk6IGJvZHlQYXJ0cy5qb2luKFwiXFxuXCIpLFxuICAgIGFuY2hvcmVkQ29tbWVudHM6IGFuY2hvcmVkLFxuICAgIGRyb3BwZWRDb21tZW50czogZHJvcHBlZCxcbiAgICBuZXh0SXRlcmF0aW9uLFxuICAgIGxlbnNXYXJuaW5ncyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRlT3V0Y29tZSB9IGZyb20gXCIuL2FnZ3JlZ2F0ZS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5UmV2aWV3QXJncyB7XG4gIG91dGNvbWU6IEFnZ3JlZ2F0ZU91dGNvbWU7XG4gIGxhYmVsVGFyZ2V0OiBudW1iZXI7XG4gIHdvcmtmbG93UnVuVXJsPzogc3RyaW5nO1xufVxuXG5jb25zdCBJVEVSQVRJT05fTElORSA9IC9TaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjpcXHMqXFxkKy87XG5jb25zdCBFUlJPUl9DT1VOVF9MSU5FID0gL1xcbj9TaG9wZmxvb3ItUmV2aWV3LUVycm9yLUNvdW50OlxccypcXGQrL2c7XG5cbmZ1bmN0aW9uIHdyaXRlSXRlcmF0aW9uVG9Cb2R5KGJvZHk6IHN0cmluZyB8IG51bGwsIGl0ZXJhdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZUJvZHkgPSBib2R5ID8/IFwiXCI7XG4gIGlmICghYmFzZUJvZHkubWF0Y2goSVRFUkFUSU9OX0xJTkUpKSB7XG4gICAgcmV0dXJuIGAke2Jhc2VCb2R5LnRyaW1FbmQoKX1cXG5cXG5TaG9wZmxvb3ItUmV2aWV3LUl0ZXJhdGlvbjogJHtpdGVyYXRpb259XFxuYDtcbiAgfVxuICByZXR1cm4gYmFzZUJvZHkucmVwbGFjZShcbiAgICBJVEVSQVRJT05fTElORSxcbiAgICBgU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb246ICR7aXRlcmF0aW9ufWAsXG4gICk7XG59XG5cbi8vIFRoZSBjb25zZWN1dGl2ZS1lcnJvciBjb3VudGVyIGlzIGEgZm9vdGVyIGxpbmUgdGhhdCBvbmx5IHRoZSBlcnJvcmVkIHBhdGhcbi8vIHdyaXRlcy4gQSByZXZpZXcgdGhhdCBhY3R1YWxseSBjb21wbGV0ZXMgKGNsZWFuIG9yIHdpdGggZmluZGluZ3MpIHByb3ZlcyB0aGVcbi8vIENMSSB3b3Jrcywgc28gc3RyaXAgdGhlIGxpbmUgdG8gcmVzZXQgdGhlIGNvdW50IGZvciBhbnkgZnV0dXJlIHRyYW5zaWVudCBydW4uXG5mdW5jdGlvbiBzdHJpcEVycm9yQ291bnRMaW5lKGJvZHk6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICByZXR1cm4gKGJvZHkgPz8gXCJcIikucmVwbGFjZShFUlJPUl9DT1VOVF9MSU5FLCBcIlwiKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVFcnJvckNvdW50VG9Cb2R5KGJvZHk6IHN0cmluZyB8IG51bGwsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c3RyaXBFcnJvckNvdW50TGluZShib2R5KS50cmltRW5kKCl9XFxuXFxuU2hvcGZsb29yLVJldmlldy1FcnJvci1Db3VudDogJHtjb3VudH1cXG5gO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlSZXZpZXcoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBBcHBseVJldmlld0FyZ3MsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFjdHgucHIpIHRocm93IG5ldyBFcnJvcihcImFwcGx5UmV2aWV3IHJlcXVpcmVzIGN0eC5wclwiKTtcbiAgLy8gY3R4LnJldmlld0dpdGh1YiBpZGVudGlmaWVzIGEgZGlzdGluY3QgQXBwIHNvIEdpdEh1YiBkb2VzIG5vdCByZWplY3RcbiAgLy8gQVBQUk9WRSAvIFJFUVVFU1RfQ0hBTkdFUyBvbiB0aGUgYm90J3Mgb3duIFBSLiBGYWxsaW5nIGJhY2sgdG8gY3R4LmdpdGh1YlxuICAvLyBpcyBmaW5lIGZvciBDT01NRU5UIGV2ZW50cyBidXQgbm90IGZvciB2ZXJkaWN0IGV2ZW50cy5cbiAgY29uc3QgcmV2aWV3ZXIgPSBjdHgucmV2aWV3R2l0aHViID8/IGN0eC5naXRodWI7XG4gIGNvbnN0IHByTnVtYmVyID0gY3R4LnByLm51bWJlcjtcbiAgY29uc3QgaGVhZFNoYSA9IGN0eC5wci5oZWFkU2hhO1xuICBjb25zdCB7IG91dGNvbWUsIGxhYmVsVGFyZ2V0LCB3b3JrZmxvd1J1blVybCB9ID0gYXJncztcblxuICBhd2FpdCBjdHguZ2l0aHViLnNldFJldmlld1N0YXR1cyhcbiAgICBoZWFkU2hhLFxuICAgIFwicGVuZGluZ1wiLFxuICAgIFwiU2hvcGZsb29yIHJldmlldzogYWdncmVnYXRpbmcgZmluZGluZ3MuLi5cIixcbiAgICB3b3JrZmxvd1J1blVybCxcbiAgKTtcblxuICBpZiAob3V0Y29tZS5raW5kID09PSBcImFwcHJvdmVcIikge1xuICAgIGF3YWl0IHJldmlld2VyLnBvc3RSZXZpZXcoe1xuICAgICAgcHJOdW1iZXIsXG4gICAgICBjb21taXRTaGE6IGhlYWRTaGEsXG4gICAgICBldmVudDogXCJBUFBST1ZFXCIsXG4gICAgICBib2R5OiBvdXRjb21lLmJvZHksXG4gICAgICBjb21tZW50czogW10sXG4gICAgfSk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5zZXRSZXZpZXdTdGF0dXMoXG4gICAgICBoZWFkU2hhLFxuICAgICAgXCJzdWNjZXNzXCIsXG4gICAgICBcIlNob3BmbG9vciByZXZpZXcgcGFzc2VkXCIsXG4gICAgICB3b3JrZmxvd1J1blVybCxcbiAgICApO1xuICAgIC8vIFNob3BmbG9vciBsYWJlbHMgYXJlIHBpcGVsaW5lLXN0YXRlIG1hcmtlcnMgYW5kIGhhdmUgbm8gbWVhbmluZyBvbiBhXG4gICAgLy8gaHVtYW4tYXV0aG9yZWQgUFIgcm91dGVkIHRocm91Z2ggcmV2aWV3T25seSBtb2RlLlxuICAgIGlmICghY3R4LnJldmlld09ubHkpIHtcbiAgICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5yZXZpZXdBcHByb3ZlZCk7XG4gICAgICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMubmVlZHNSZXZpZXcpO1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgICAgLy8gQSBjbGVhbiBhcHByb3ZhbCBwcm92ZXMgdGhlIENMSSB3b3Jrcywgc28gcmVzZXQgYW55IGNvbnNlY3V0aXZlLWVycm9yXG4gICAgICAvLyBjb3VudGVyIChvbmx5IHJld3JpdGUgdGhlIGJvZHkgd2hlbiBvbmUgaXMgYWN0dWFsbHkgcHJlc2VudCkuXG4gICAgICBpZiAoY3R4LnByLmJvZHk/LmluY2x1ZGVzKFwiU2hvcGZsb29yLVJldmlldy1FcnJvci1Db3VudFwiKSkge1xuICAgICAgICBhd2FpdCBjdHguZ2l0aHViLnVwZGF0ZVByQm9keShcbiAgICAgICAgICBwck51bWJlcixcbiAgICAgICAgICBzdHJpcEVycm9yQ291bnRMaW5lKGN0eC5wci5ib2R5KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY3R4LmF1ZGl0KHtcbiAgICAgIHR5cGU6IFwicmV2aWV3X3Bvc3RlZFwiLFxuICAgICAgcHJOdW1iZXIsXG4gICAgICB2ZXJkaWN0OiBcImFwcHJvdmVcIixcbiAgICAgIGl0ZXJhdGlvbjogMCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob3V0Y29tZS5raW5kID09PSBcIml0ZXJhdGlvbl9jYXBcIikge1xuICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcyk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgcHJOdW1iZXIsXG4gICAgICBgU2hvcGZsb29yIGFnZW50IHJldmlldyBoYXMgYmVlbiB0aHJvdWdoICR7b3V0Y29tZS5tYXhJdGVyYXRpb25zfSBpdGVyYXRpb25zIHdpdGhvdXQgY29udmVyZ2luZy4gQSBodW1hbiBzaG91bGQgdGFrZSBvdmVyIHRoaXMgUFIuIFNlZSBjb21taXQgc3RhdHVzIGZvciB0aGUgY3VycmVudCBmaW5kaW5ncyBsaXN0LmAsXG4gICAgKTtcbiAgICBhd2FpdCBjdHguZ2l0aHViLnNldFJldmlld1N0YXR1cyhcbiAgICAgIGhlYWRTaGEsXG4gICAgICBcImZhaWx1cmVcIixcbiAgICAgIGBTaG9wZmxvb3IgcmV2aWV3OiBpdGVyYXRpb24gY2FwIHJlYWNoZWQgKCR7b3V0Y29tZS5tYXhJdGVyYXRpb25zfSlgLFxuICAgICAgd29ya2Zsb3dSdW5VcmwsXG4gICAgKTtcbiAgICBjdHguYXVkaXQoe1xuICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICBpc3N1ZU51bWJlcjogbGFiZWxUYXJnZXQsXG4gICAgICBhZGQ6IFtMQUJFTFMucmV2aWV3U3R1Y2tdLFxuICAgICAgcmVtb3ZlOiBbTEFCRUxTLm5lZWRzUmV2aWV3LCBMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlc10sXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKG91dGNvbWUua2luZCA9PT0gXCJlcnJvcmVkXCIpIHtcbiAgICAvLyBObyB2ZXJkaWN0IHdhcyBwcm9kdWNlZDogZXZlcnkgcmV2aWV3ZXIgZmFpbGVkIGJlZm9yZSBpbnNwZWN0aW5nIHRoZVxuICAgIC8vIGRpZmYuIEFsd2F5cyBwb3N0IGEgbm9uLWJsb2NraW5nIENPTU1FTlQgKG5vIGRpc3RpbmN0IHJldmlldyBBcHAgbmVlZGVkKTtcbiAgICAvLyB0aGlzIGlzIGFuIG9wZXJhdGlvbmFsIGZhaWx1cmUsIG5vdCBhIGNvZGUgdmVyZGljdC5cbiAgICBhd2FpdCBjdHguZ2l0aHViLnBvc3RSZXZpZXcoe1xuICAgICAgcHJOdW1iZXIsXG4gICAgICBjb21taXRTaGE6IGhlYWRTaGEsXG4gICAgICBldmVudDogXCJDT01NRU5UXCIsXG4gICAgICBib2R5OiBvdXRjb21lLmJvZHksXG4gICAgICBjb21tZW50czogW10sXG4gICAgfSk7XG5cbiAgICAvLyByZXZpZXdPbmx5OiBzdGF0ZWxlc3MgcGVyLXB1c2ggcmV2aWV3LCBzbyBuZXZlciBwZXJzaXN0IGEgY291bnRlciBvclxuICAgIC8vIHRvdWNoIGxhYmVscy4gRWFjaCBwdXNoIGlzIHJldmlld2VkIGZyZXNoLlxuICAgIGlmIChjdHgucmV2aWV3T25seSkge1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5zZXRSZXZpZXdTdGF0dXMoXG4gICAgICAgIGhlYWRTaGEsXG4gICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgXCJTaG9wZmxvb3IgcmV2aWV3IGNvdWxkIG5vdCBjb21wbGV0ZSAoaW5mcmFzdHJ1Y3R1cmUgZXJyb3IpXCIsXG4gICAgICAgIHdvcmtmbG93UnVuVXJsLFxuICAgICAgKTtcbiAgICAgIGN0eC5hdWRpdCh7XG4gICAgICAgIHR5cGU6IFwicmV2aWV3X3Bvc3RlZFwiLFxuICAgICAgICBwck51bWJlcixcbiAgICAgICAgdmVyZGljdDogXCJlcnJvcmVkXCIsXG4gICAgICAgIGl0ZXJhdGlvbjogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvdXRjb21lLmVzY2FsYXRlKSB7XG4gICAgICAvLyBQZXJzaXN0ZW50IGluZnJhc3RydWN0dXJlIGZhaWx1cmU6IHN0b3AgcmV0cnlpbmcgc2lsZW50bHkgYW5kIHBhZ2UgYVxuICAgICAgLy8gaHVtYW4sIG1pcnJvcmluZyB0aGUgaXRlcmF0aW9uLWNhcCBiYWNrc3RvcC5cbiAgICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgICBhd2FpdCBjdHguZ2l0aHViLnJlbW92ZUxhYmVsKGxhYmVsVGFyZ2V0LCBMQUJFTFMubmVlZHNSZXZpZXcpO1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBwck51bWJlcixcbiAgICAgICAgYFNob3BmbG9vciBhZ2VudCByZXZpZXcgY291bGQgbm90IGNvbXBsZXRlIGFmdGVyICR7b3V0Y29tZS5lcnJvckNvdW50fSBjb25zZWN1dGl2ZSBhdHRlbXB0cyAoaW5mcmFzdHJ1Y3R1cmUgZmFpbHVyZXMpLiBBIGh1bWFuIHNob3VsZCB0YWtlIG92ZXIgdGhpcyBQUi4gU2VlIGNvbW1pdCBzdGF0dXMgZm9yIHRoZSBsYXRlc3QgZmFpbHVyZSBkZXRhaWwuYCxcbiAgICAgICk7XG4gICAgICBhd2FpdCBjdHguZ2l0aHViLnNldFJldmlld1N0YXR1cyhcbiAgICAgICAgaGVhZFNoYSxcbiAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICBgU2hvcGZsb29yIHJldmlldyBjb3VsZCBub3QgY29tcGxldGUgYWZ0ZXIgJHtvdXRjb21lLmVycm9yQ291bnR9IGF0dGVtcHRzYCxcbiAgICAgICAgd29ya2Zsb3dSdW5VcmwsXG4gICAgICApO1xuICAgICAgY3R4LmF1ZGl0KHtcbiAgICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBsYWJlbFRhcmdldCxcbiAgICAgICAgYWRkOiBbTEFCRUxTLnJldmlld1N0dWNrXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLm5lZWRzUmV2aWV3XSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEJlbG93IHRoZSB0aHJlc2hvbGQ6IHBlcnNpc3QgdGhlIGluY3JlbWVudGVkIGNvdW50IHNvIGEgc3Vic2VxdWVudCBydW5cbiAgICAvLyBjYW4gZXNjYWxhdGUsIGFuZCBsZWF2ZSB0aGUgdmVyZGljdCBsYWJlbHMgdW50b3VjaGVkIHNvIGEgcmUtdHJpZ2dlclxuICAgIC8vIHJlLXJldmlld3MgcmF0aGVyIHRoYW4gdGhlIFBSIGJlaW5nIHBhcmtlZCBhcyByZXF1ZXN0LWNoYW5nZXMuXG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5zZXRSZXZpZXdTdGF0dXMoXG4gICAgICBoZWFkU2hhLFxuICAgICAgXCJlcnJvclwiLFxuICAgICAgXCJTaG9wZmxvb3IgcmV2aWV3IGNvdWxkIG5vdCBjb21wbGV0ZSAoaW5mcmFzdHJ1Y3R1cmUgZXJyb3IpXCIsXG4gICAgICB3b3JrZmxvd1J1blVybCxcbiAgICApO1xuICAgIGF3YWl0IGN0eC5naXRodWIudXBkYXRlUHJCb2R5KFxuICAgICAgcHJOdW1iZXIsXG4gICAgICB3cml0ZUVycm9yQ291bnRUb0JvZHkoY3R4LnByLmJvZHksIG91dGNvbWUuZXJyb3JDb3VudCksXG4gICAgKTtcbiAgICBjdHguYXVkaXQoe1xuICAgICAgdHlwZTogXCJyZXZpZXdfcG9zdGVkXCIsXG4gICAgICBwck51bWJlcixcbiAgICAgIHZlcmRpY3Q6IFwiZXJyb3JlZFwiLFxuICAgICAgaXRlcmF0aW9uOiAwLFxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHJlcXVlc3RfY2hhbmdlc1xuICBhd2FpdCByZXZpZXdlci5wb3N0UmV2aWV3KHtcbiAgICBwck51bWJlcixcbiAgICBjb21taXRTaGE6IGhlYWRTaGEsXG4gICAgZXZlbnQ6IFwiUkVRVUVTVF9DSEFOR0VTXCIsXG4gICAgYm9keTogb3V0Y29tZS5ib2R5LFxuICAgIGNvbW1lbnRzOiBvdXRjb21lLmFuY2hvcmVkQ29tbWVudHMubWFwKChjKSA9PiAoe1xuICAgICAgcGF0aDogYy5wYXRoLFxuICAgICAgbGluZTogYy5saW5lLFxuICAgICAgc2lkZTogYy5zaWRlLFxuICAgICAgLi4uKGMuc3RhcnRfbGluZSAhPT0gdW5kZWZpbmVkID8geyBzdGFydF9saW5lOiBjLnN0YXJ0X2xpbmUgfSA6IHt9KSxcbiAgICAgIC4uLihjLnN0YXJ0X3NpZGUgIT09IHVuZGVmaW5lZCA/IHsgc3RhcnRfc2lkZTogYy5zdGFydF9zaWRlIH0gOiB7fSksXG4gICAgICBib2R5OiBgWyR7Yy5jYXRlZ29yeX0gLyBjb25maWRlbmNlICR7Yy5jb25maWRlbmNlfV1cXG5cXG4ke2MuYm9keX1gLFxuICAgIH0pKSxcbiAgfSk7XG4gIGNvbnN0IHN0YXR1c0Rlc2NyaXB0aW9uID0gY3R4LnJldmlld09ubHlcbiAgICA/IFwiU2hvcGZsb29yIHJldmlldyByZXF1ZXN0ZWQgY2hhbmdlc1wiXG4gICAgOiBgU2hvcGZsb29yIHJldmlldyByZXF1ZXN0ZWQgY2hhbmdlcyAoaXRlcmF0aW9uICR7b3V0Y29tZS5uZXh0SXRlcmF0aW9ufSlgO1xuICBhd2FpdCBjdHguZ2l0aHViLnNldFJldmlld1N0YXR1cyhcbiAgICBoZWFkU2hhLFxuICAgIFwiZmFpbHVyZVwiLFxuICAgIHN0YXR1c0Rlc2NyaXB0aW9uLFxuICAgIHdvcmtmbG93UnVuVXJsLFxuICApO1xuICAvLyBJbiByZXZpZXdPbmx5IG1vZGUgd2UgdHJlYXQgZWFjaCBwdXNoIGFzIGFuIGluZGVwZW5kZW50IHJldmlldyBwYXNzOiBub1xuICAvLyBTaG9wZmxvb3IgbGFiZWxzICh0aGUgaHVtYW4gZGlkIG5vdCBvcHQgaW50byB0aGUgcGlwZWxpbmUpLCBhbmQgbm9cbiAgLy8gaXRlcmF0aW9uIGNvdW50ZXIgd3JpdHRlbiBpbnRvIHRoZSBQUiBib2R5LlxuICBpZiAoIWN0eC5yZXZpZXdPbmx5KSB7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5hZGRMYWJlbChsYWJlbFRhcmdldCwgTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwobGFiZWxUYXJnZXQsIExBQkVMUy5uZWVkc1Jldmlldyk7XG4gICAgLy8gQSBjb21wbGV0ZWQgcmV2aWV3IHByb3ZlcyB0aGUgQ0xJIHdvcmtzLCBzbyByZXNldCBhbnkgY29uc2VjdXRpdmUtZXJyb3JcbiAgICAvLyBjb3VudGVyIHdoaWxlIHdyaXRpbmcgdGhlIGl0ZXJhdGlvbiBsaW5lLlxuICAgIGNvbnN0IG5ld0JvZHkgPSB3cml0ZUl0ZXJhdGlvblRvQm9keShcbiAgICAgIHN0cmlwRXJyb3JDb3VudExpbmUoY3R4LnByLmJvZHkpLFxuICAgICAgb3V0Y29tZS5uZXh0SXRlcmF0aW9uLFxuICAgICk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi51cGRhdGVQckJvZHkocHJOdW1iZXIsIG5ld0JvZHkpO1xuICB9XG4gIGN0eC5hdWRpdCh7XG4gICAgdHlwZTogXCJyZXZpZXdfcG9zdGVkXCIsXG4gICAgcHJOdW1iZXIsXG4gICAgdmVyZGljdDogXCJyZXF1ZXN0X2NoYW5nZXNcIixcbiAgICBpdGVyYXRpb246IG91dGNvbWUubmV4dEl0ZXJhdGlvbixcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IExlbnNOYW1lID0gei5lbnVtKFtcImNvbXBsaWFuY2VcIiwgXCJidWdzXCIsIFwic2VjdXJpdHlcIiwgXCJzbWVsbHNcIl0pO1xuZXhwb3J0IHR5cGUgTGVuc05hbWUgPSB6LmluZmVyPHR5cGVvZiBMZW5zTmFtZT47XG5cbmV4cG9ydCBjb25zdCBDYXRlZ29yeSA9IHouZW51bShbXCJjb21wbGlhbmNlXCIsIFwiYnVnXCIsIFwic2VjdXJpdHlcIiwgXCJzbWVsbFwiXSk7XG5leHBvcnQgdHlwZSBDYXRlZ29yeSA9IHouaW5mZXI8dHlwZW9mIENhdGVnb3J5PjtcblxuLy8gTWlycm9ycyB2MSdzIFJldmlld2VyT3V0cHV0IHNoYXBlIHNvIHRoZSB2MSBsZW5zIHByb21wdHMgY2FuIGJlIHBvcnRlZFxuLy8gdmVyYmF0aW0uIFRoZSBhZ2dyZWdhdG9yIGRvZXMgZGVkdXBlLCBjb25maWRlbmNlIGZpbHRlcmluZywgYW5kIGRpZmZcbi8vIHBhcnRpdGlvbmluZyAtLSB0aGUgc2NoZW1hIGRvZXMgbm90IGVuZm9yY2UgYmxvY2tlcnMvc2V2ZXJpdHkgYnVja2V0cy5cbmV4cG9ydCBjb25zdCBSZXZpZXdDb21tZW50ID0gei5vYmplY3Qoe1xuICBwYXRoOiB6LnN0cmluZygpLm1pbigxKSxcbiAgbGluZTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICBzaWRlOiB6LmVudW0oW1wiTEVGVFwiLCBcIlJJR0hUXCJdKSxcbiAgc3RhcnRfbGluZTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCksXG4gIHN0YXJ0X3NpZGU6IHouZW51bShbXCJMRUZUXCIsIFwiUklHSFRcIl0pLm9wdGlvbmFsKCksXG4gIGJvZHk6IHouc3RyaW5nKCkubWluKDEpLFxuICBjb25maWRlbmNlOiB6Lm51bWJlcigpLmludCgpLm1pbigwKS5tYXgoMTAwKSxcbiAgY2F0ZWdvcnk6IENhdGVnb3J5LFxufSk7XG5leHBvcnQgdHlwZSBSZXZpZXdDb21tZW50ID0gei5pbmZlcjx0eXBlb2YgUmV2aWV3Q29tbWVudD47XG5cbi8vIGBibG9ja2VkYCBpcyBkaXN0aW5jdCBmcm9tIGBjbGVhbmA6IGl0IG1lYW5zIHRoZSBsZW5zIGNvdWxkIG5vdCBpbnNwZWN0IHRoZVxuLy8gZGlmZiBhdCBhbGwgKGUuZy4gdGhlIHJlYWQtb25seSBnaXQvUmVhZCBjb21tYW5kcyBmYWlsZWQgaW4gdGhlIHNhbmRib3gpLCBzb1xuLy8gaXRzIHNpbGVuY2UgaXMgbm90IGV2aWRlbmNlIG9mIGNvcnJlY3RuZXNzLiBUaGUgYWdncmVnYXRvciBuZXZlciBhcHByb3ZlcyBvblxuLy8gYSBibG9ja2VkIGxlbnMuIGBjbGVhbmAgYXNzZXJ0cyB0aGUgbGVucyBsb29rZWQgYW5kIGZvdW5kIG5vdGhpbmcuXG5leHBvcnQgY29uc3QgTGVuc0RlY2lzaW9uID0gei5vYmplY3Qoe1xuICB2ZXJkaWN0OiB6LmVudW0oW1wiY2xlYW5cIiwgXCJpc3N1ZXNfZm91bmRcIiwgXCJibG9ja2VkXCJdKSxcbiAgc3VtbWFyeTogei5zdHJpbmcoKS5taW4oMSksXG4gIGNvbW1lbnRzOiB6LmFycmF5KFJldmlld0NvbW1lbnQpLmRlZmF1bHQoW10pLFxufSk7XG5leHBvcnQgdHlwZSBMZW5zRGVjaXNpb24gPSB6LmluZmVyPHR5cGVvZiBMZW5zRGVjaXNpb24+O1xuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgcmVuZGVyVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vX3NoYXJlZC9wcm9tcHRzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVuc1J1bm5lckFyZ3Mge1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgYmFzZVJlZjogc3RyaW5nO1xuICBjaGFuZ2VkRmlsZXM6IHN0cmluZ1tdO1xuICBwbGFuRmlsZUNvbnRlbnRzOiBzdHJpbmc7XG4gIGlzc3VlQm9keTogc3RyaW5nO1xuICBwcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTGVuc1VzZXJQcm9tcHQoXG4gIHRwbDogc3RyaW5nLFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBzdHJpbmcge1xuICBpZiAoIWN0eC5wcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInJldmlldyBsZW5zIHJlcXVpcmVzIGN0eC5wclwiKTtcbiAgfVxuICByZXR1cm4gcmVuZGVyVGVtcGxhdGUodHBsLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIHByX251bWJlcjogY3R4LnByLm51bWJlcixcbiAgICBwcl90aXRsZTogY3R4LnByLnRpdGxlLFxuICAgIHByX2JvZHk6IGN0eC5wci5ib2R5ID8/IFwiXCIsXG4gICAgaXRlcmF0aW9uX2NvdW50OiBhcmdzLml0ZXJhdGlvbixcbiAgICBiYXNlX3JlZjogYXJncy5iYXNlUmVmLFxuICAgIGNoYW5nZWRfZmlsZXM6IEpTT04uc3RyaW5naWZ5KGFyZ3MuY2hhbmdlZEZpbGVzKSxcbiAgICBwbGFuX2ZpbGVfY29udGVudHM6IGFyZ3MucGxhbkZpbGVDb250ZW50cyxcbiAgICBpc3N1ZV9ib2R5OiBhcmdzLmlzc3VlQm9keSxcbiAgICBwcmV2aW91c19yZXZpZXdfY29tbWVudHNfanNvbjogYXJncy5wcmV2aW91c1Jldmlld0NvbW1lbnRzSnNvbixcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIGJ1Z3MgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyBtaXNzZWQgc3BlYyByZXF1aXJlbWVudHMsIGxvZ2ljIGJ1Z3MsIGFuZCBvYnZpb3VzIGRlZmVjdHMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2Vycy5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgZGVidWdnaW5nLW1pbmRlZCByZXZpZXdlciBmb2N1c2VkIG9ubHkgb24gY29ycmVjdG5lc3M6IGRvZXMgdGhpcyBQUiBkbyB3aGF0IHRoZSBzcGVjIHNhaWQgaXQgc2hvdWxkLCBhbmQgaXMgdGhlIGNvZGUgaXQgYWRkcyBjb3JyZWN0PyBZb3UgZG8gTk9UIGNvbW1lbnQgb24gc3R5bGUsIGNvbXBsaWFuY2UsIG9yIHNlY3VyaXR5IFx1MjAxNCBvdGhlciByZXZpZXdlcnMgb3duIHRob3NlIGNhdGVnb3JpZXMuXG48L3JvbGU+XG5cbjxhbGxvd2VkX3Rvb2xzPlxuWW91IG1heSB1c2UgT05MWTogUmVhZCwgR2xvYiwgR3JlcCwgYW5kIHJlYWQtb25seSBnaXQgQmFzaCAoYGdpdCBsb2dgLCBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgKS4gWW91IG11c3QgTk9UIHVzZTogRWRpdCwgV3JpdGUsIGFueSBub24tcmVhZC1vbmx5IEJhc2gsIGFueSBHaXRIdWIgQ0xJLCBhbnkgTUNQIHRvb2wsIGFueSBzaG9wZmxvb3IgaGVscGVyLlxuPC9hbGxvd2VkX3Rvb2xzPlxuXG48cHJvaGliaXRlZD5cbi0gUG9zdGluZyBhbnkgY29tbWVudCBvciByZXZpZXcgb24gYW55IFBSIG9yIGlzc3VlXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBDcmVhdGluZyBhIGJyYW5jaCwgY29tbWl0dGluZywgcHVzaGluZywgb3Igb3BlbmluZyBhIHB1bGwgcmVxdWVzdFxuLSBNb2RpZnlpbmcgYW55IGZpbGUgb24gZGlza1xuLSBDYWxsaW5nIHRoZSBTaG9wZmxvb3IgTUNQIHNlcnZlciBvciBhbnkgb2YgaXRzIHRvb2xzXG4tIEVtaXR0aW5nIGNvbW1lbnRzIGluIGFueSBjYXRlZ29yeSBvdGhlciB0aGFuIGBidWdgXG48L3Byb2hpYml0ZWQ+XG5cbjx3aGF0X3RvX2NoZWNrPlxuQ2hlY2sgdGhlIFBSIGFnYWluc3QgdGhlIHNwZWMgYW5kIHBsYW4sIG5vdCBhZ2FpbnN0IHdoYXQgeW91IHBlcnNvbmFsbHkgd291bGQgaGF2ZSBidWlsdC4gTG9vayBmb3I6XG5cbi0gU3BlYyByZXF1aXJlbWVudHMgdGhlIGltcGxlbWVudGF0aW9uIHF1aWV0bHkgc2tpcHBlZCBvciBjaGFuZ2VkLlxuLSBFZGdlIGNhc2VzIHRoZSBzcGVjIG5hbWVkIHRoYXQgdGhlIGNvZGUgZG9lcyBub3QgaGFuZGxlLlxuLSBPZmYtYnktb25lIGVycm9ycywgaW5jb3JyZWN0IG9wZXJhdG9yIHByZWNlZGVuY2UsIHN3YXBwZWQgYXJndW1lbnRzLCB3cm9uZyByZXR1cm4gdmFsdWVzLlxuLSBSYWNlIGNvbmRpdGlvbnMgaW4gY29uY3VycmVudCBjb2RlICh0aGUgc3BlYydzIGNvbmN1cnJlbmN5IHNlY3Rpb24gaXMgdGhlIGJhc2VsaW5lKS5cbi0gVGVzdHMgdGhhdCBwYXNzIHZhY3VvdXNseSAoZS5nLiwgYXNzZXJ0IG5vdGhpbmcsIGFsd2F5cyB0cnVlLCBtb2NrIGV2ZXJ5dGhpbmcpLlxuLSBUeXBlIGNvbmZ1c2lvbiB0aGF0IFR5cGVTY3JpcHQgbWlzc2VkIChmb3IgZXhhbXBsZSwgYSBjYXN0IHRoYXQgc2lsZW5jZXMgYW4gZXJyb3IpLlxuXG5EbyBOT1QgZmxhZzpcblxuLSBDb21wbGlhbmNlIHJ1bGVzIFx1MjAxNCB0aGUgY29tcGxpYW5jZSByZXZpZXdlciBvd25zIHRob3NlLlxuLSBTZWN1cml0eSBoYXJkZW5pbmcgXHUyMDE0IHRoZSBzZWN1cml0eSByZXZpZXdlciBvd25zIHRob3NlLlxuLSBTdHlsZSBvciByZWFkYWJpbGl0eSBcdTIwMTQgdGhlIHNtZWxscyByZXZpZXdlciBvd25zIHRob3NlLlxuLSBNaXNzaW5nIHRlc3RzIHRoZSBzcGVjIGRpZCBub3QgcmVxdWlyZS5cbiAgPC93aGF0X3RvX2NoZWNrPlxuXG48Y29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cbkZvciBlYWNoIGNvbW1lbnQsIGFzc2lnbiBhIGBjb25maWRlbmNlYCBzY29yZSBmcm9tIDAtMTAwLiBVc2U6XG5cbi0gOTAtMTAwOiBZb3UgaGF2ZSB0cmFjZWQgYSBjb25jcmV0ZSBleGVjdXRpb24gcGF0aCB0aGF0IHByb2R1Y2VzIHRoZSB3cm9uZyBvdXRjb21lLlxuLSA3NS04OTogQSBjYXJlZnVsIHJldmlld2VyIHdvdWxkIHZlcnkgbGlrZWx5IGFncmVlIHRoZSBiZWhhdmlvciBpcyB3cm9uZywgYnV0IHlvdSBoYXZlIG5vdCBmdWxseSB0cmFjZWQgaXQuXG4tIEJlbG93IDc1OiBEbyBOT1QgZW1pdCB0aGUgY29tbWVudC4gRmlsZWQgaW50dWl0aW9ucyB3aXRob3V0IHRyYWNlcyBjcmVhdGUgbm9pc2UgdGhhdCBtYWtlcyBpdGVyYXRpb24gbG9vcHMgbG9uZ2VyLlxuXG5XaGVuIGluIGRvdWJ0LCBvcGVuIHRoZSBmaWxlIGFuZCB0cmFjZSB0aGUgY29udHJvbCBmbG93IGJlZm9yZSBkZWNpZGluZy5cbjwvY29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC5cblxuU2NoZW1hOlxuXG4tIGB2ZXJkaWN0YDogXCJjbGVhblwiIHwgXCJpc3N1ZXNfZm91bmRcIiB8IFwiYmxvY2tlZFwiXG4tIGBzdW1tYXJ5YDogb25lLXNlbnRlbmNlIHN1bW1hcnlcbi0gYGNvbW1lbnRzYDogYXJyYXkgb2YgcmV2aWV3LWNvbW1lbnQgb2JqZWN0cyAoc2VlIGJlbG93KVxuXG5FYWNoIGNvbW1lbnQgb2JqZWN0IGluY2x1ZGVzIGBwYXRoYCwgYGxpbmVgLCBgc2lkZWAgKFwiTEVGVFwiIG9yIFwiUklHSFRcIiksIG9wdGlvbmFsIGBzdGFydF9saW5lYCArIGBzdGFydF9zaWRlYCAobXVsdGktbGluZSBvbmx5KSwgYGJvZHlgLCBgY29uZmlkZW5jZWAgKDAtMTAwKSwgYW5kIGBjYXRlZ29yeWAgTVVTVCBiZSB0aGUgbGl0ZXJhbCBzdHJpbmcgYGJ1Z2AuXG5cblJ1bGVzOlxuXG4tIGB2ZXJkaWN0OiBcImNsZWFuXCJgIHJlcXVpcmVzIGBjb21tZW50czogW11gLlxuLSBJZiB5b3UgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYgYXQgYWxsIFx1MjAxNCBmb3IgZXhhbXBsZSBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgLCBvciBmaWxlIHJlYWRzIGZhaWxlZCBhbmQgeW91IG5ldmVyIHNhdyB0aGUgY2hhbmdlZCBjb2RlIFx1MjAxNCByZXR1cm4gYHZlcmRpY3Q6IFwiYmxvY2tlZFwiYCB3aXRoIGEgYHN1bW1hcnlgIG5hbWluZyB0aGUgY29tbWFuZCB0aGF0IGZhaWxlZCBhbmQgYGNvbW1lbnRzOiBbXWAuIERvIE5PVCByZXR1cm4gYGNsZWFuYCB3aGVuIHlvdSB3ZXJlIHVuYWJsZSB0byBsb29rOyBgY2xlYW5gIG1lYW5zIHlvdSBpbnNwZWN0ZWQgdGhlIGNoYW5nZXMgYW5kIGZvdW5kIG5vdGhpbmcuXG4tIEV2ZXJ5IGJ1ZyBjb21tZW50IG11c3QgY2l0ZSB0aGUgZXhlY3V0aW9uIHBhdGggb3IgZXhwZWN0ZWQtdnMtYWN0dWFsIGJlaGF2aW9yIGV4cGxpY2l0bHkgaW4gdGhlIGJvZHkuIFwiVGhpcyBtaWdodCBiZSB3cm9uZyBiZWNhdXNlIFggYW5kIFkgd291bGQgY2F1c2UgWlwiIGlzIGFjY2VwdGFibGU7IFwiTG9va3Mgb2ZmXCIgaXMgbm90LlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5QdWxsIHJlcXVlc3Q6ICN7eyBwcl9udW1iZXIgfX0gXHUyMDE0IHt7IHByX3RpdGxlIH19XG5SZXZpZXcgaXRlcmF0aW9uOiB7eyBpdGVyYXRpb25fY291bnQgfX1cblxuPHByX2JvZHk+XG57eyBwcl9ib2R5IH19XG48L3ByX2JvZHk+XG5cbjxiYXNlX3JlZj57eyBiYXNlX3JlZiB9fTwvYmFzZV9yZWY+XG5cbjxjaGFuZ2VkX2ZpbGVzPlxue3sgY2hhbmdlZF9maWxlcyB9fVxuPC9jaGFuZ2VkX2ZpbGVzPlxuXG5gPGNoYW5nZWRfZmlsZXM+YCBpcyBhIEpTT04gYXJyYXkgb2YgcmVwb3NpdG9yeS1yZWxhdGl2ZSBwYXRocy4gVGhlIGRpZmYgaXMgbm90IGlubGluZWQuIFJ1biBPTkUgYmF0Y2hlZCBjb21tYW5kIHRvIGdldCB0aGUgZnVsbCBkaWZmIGZvciBldmVyeSBjaGFuZ2VkIGZpbGUgYXQgb25jZTpcblxuYGBgXG5naXQgZGlmZiAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEXG5gYGBcblxuRG8gTk9UIHJ1biBhIHNlcGFyYXRlIGBnaXQgZGlmZmAgcGVyIGZpbGU7IG9uZSBiYXRjaGVkIGNvbW1hbmQga2VlcHMgdGhlIHJldmlldyBmYXN0IGFuZCBhdm9pZHMgZG96ZW5zIG9mIHJlZHVuZGFudCB0b29sIGNhbGxzLiBUbyBuYXJyb3cgdGhlIGRpZmYgdG8gc3BlY2lmaWMgcGF0aHMsIGFwcGVuZCBgLS0gJzxwYXRoPicgJzxwYXRoPicgLi4uYCB1c2luZyBwYXRocyBjb3BpZWQgdmVyYmF0aW0gZnJvbSBgPGNoYW5nZWRfZmlsZXM+YC4gVXNlIFRXTyByZWZzIHNlcGFyYXRlZCBieSBhIHNwYWNlIChgJ29yaWdpbi97eyBiYXNlX3JlZiB9fScgSEVBRGApLCBOT1QgdGhlIHRocmVlLWRvdCBgLi4uYCBmb3JtOiB0aGUgcmV2aWV3IGNoZWNrb3V0IGlzIGEgc2hhbGxvdyBtZXJnZSBjb21taXQgd2l0aCBubyBzaGFyZWQgaGlzdG9yeSwgc28gYSB0aHJlZS1kb3QvbWVyZ2UtYmFzZSBkaWZmIGZhaWxzLiBXcmFwIHRoZSByZWYgYW5kIGV2ZXJ5IHBhdGggaW4gc2luZ2xlIHF1b3RlcyBzbyB0aGUgc2hlbGwgY2Fubm90IHNwbGl0LCBnbG9iLCBvciBpbnRlcnByZXQgdGhlbTsgcmVmcyBhbmQgcGF0aHMgY2FuIGNvbnRhaW4gc2hlbGwgbWV0YWNoYXJhY3RlcnMuIElmIGEgdmFsdWUgaXRzZWxmIGNvbnRhaW5zIGEgbGl0ZXJhbCBzaW5nbGUgcXVvdGUsIGVzY2FwZSBpdCBhcyBgJ1xcJydgLiBOZXZlciBpbnRlcnBvbGF0ZSwgY29uY2F0ZW5hdGUsIG9yIHdvcmQtc3BsaXQgdGhlc2UgdmFsdWVzIGludG8gdGhlIGNvbW1hbmQuXG5cbjxwbGFuX2ZpbGVfY29udGVudHM+XG57eyBwbGFuX2ZpbGVfY29udGVudHMgfX1cbjwvcGxhbl9maWxlX2NvbnRlbnRzPlxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPHByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbnt7IHByZXZpb3VzX3Jldmlld19jb21tZW50c19qc29uIH19XG48L3ByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVnc1Rvb2xzKF9jdHg6IFN0YWdlQ29udGV4dCk6IFNka1Rvb2xbXSB7XG4gIHJldHVybiBbXTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IExlbnNEZWNpc2lvbiB9IGZyb20gXCIuLi8uLi9kZWNpc2lvbi5qc1wiO1xuaW1wb3J0IHsgdHlwZSBMZW5zUnVubmVyQXJncywgcmVuZGVyTGVuc1VzZXJQcm9tcHQgfSBmcm9tIFwiLi4vc2hhcmVkLmpzXCI7XG5pbXBvcnQgU1lTVEVNIGZyb20gXCIuL3Byb21wdC5zeXN0ZW0ubWRcIjtcbmltcG9ydCBVU0VSX1RNUEwgZnJvbSBcIi4vcHJvbXB0LnVzZXIubWQudG1wbFwiO1xuaW1wb3J0IHsgYnVnc1Rvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1Z3NMZW5zKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBQcm9taXNlPExlbnNEZWNpc2lvbj4ge1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQ6IFNZU1RFTSxcbiAgICB1c2VyUHJvbXB0OiByZW5kZXJMZW5zVXNlclByb21wdChVU0VSX1RNUEwsIGN0eCwgYXJncyksXG4gICAgdG9vbHM6IGJ1Z3NUb29scyhjdHgpLFxuICAgIGRlY2lzaW9uU2NoZW1hOiBMZW5zRGVjaXNpb24sXG4gICAgbW9kZWw6IGN0eC5jb25maWcucmV2aWV3TW9kZWxzLmJ1Z3MsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnJldmlld0VmZm9ydHMuYnVncyxcbiAgICBidWRnZXRVc2Q6IGN0eC5jb25maWcucmV2aWV3TWF4QnVkZ2V0VXNkUGVyTGVucyxcbiAgICAuLi4oY3R4LmNvbmZpZy5yZXZpZXdNYXhUdXJuc1BlckxlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG1heFR1cm5zOiBjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyB9XG4gICAgICA6IHt9KSxcbiAgICB0aW1lb3V0TXM6IGN0eC5jb25maWcucmV2aWV3VGltZW91dE1zUGVyTGVucyxcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIGNvbXBsaWFuY2UgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyB2aW9sYXRpb25zIG9mIHRoZSByZXBvc2l0b3J5J3MgY29kaW5nIHN0YW5kYXJkcyBhbmQgYWdlbnQgY29udmVudGlvbnMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2VycyBhbmQgcG9zdCBvbmUgY29tYmluZWQgcmV2aWV3LlxuXG48cm9sZT5cbllvdSBhcmUgYSBzdHJpY3QgYnV0IGZhaXIgcmV2aWV3ZXIgZm9jdXNlZCBvbmx5IG9uIGNvbXBsaWFuY2U6IGRvZXMgdGhpcyBQUiBmb2xsb3cgdGhlIHJ1bGVzIGxhaWQgZG93biBpbiBDTEFVREUubWQsIEFHRU5UUy5tZCwgQ09OVFJJQlVUSU5HLm1kLCBhbmQgYW55IHByb2plY3QtbGV2ZWwgY29udmVudGlvbnMgcmVmZXJlbmNlZCBpbiB0aGUgc3BlYz8gWW91IGRvIE5PVCBjb21tZW50IG9uIGJ1Z3MsIHNlY3VyaXR5LCBvciBzdHlsZSBzbWVsbHMgXHUyMDE0IG90aGVyIHJldmlld2VycyBvd24gdGhvc2UgY2F0ZWdvcmllcy5cbjwvcm9sZT5cblxuPGFsbG93ZWRfdG9vbHM+XG5Zb3UgbWF5IHVzZSBPTkxZOiBSZWFkLCBHbG9iLCBHcmVwLCBhbmQgcmVhZC1vbmx5IGdpdCBCYXNoIChgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc2hvd2ApLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgYW55IG5vbi1yZWFkLW9ubHkgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9yIHJldmlldyBvbiBhbnkgUFIgb3IgaXNzdWVcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIENyZWF0aW5nIGEgYnJhbmNoLCBjb21taXR0aW5nLCBwdXNoaW5nLCBvciBvcGVuaW5nIGEgcHVsbCByZXF1ZXN0XG4tIE1vZGlmeWluZyBhbnkgZmlsZSBvbiBkaXNrXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gRW1pdHRpbmcgY29tbWVudHMgaW4gYW55IGNhdGVnb3J5IG90aGVyIHRoYW4gYGNvbXBsaWFuY2VgXG48L3Byb2hpYml0ZWQ+XG5cbjx3aGF0X3RvX2NoZWNrPlxuUmVhZCBDTEFVREUubWQsIEFHRU5UUy5tZCwgYW5kIENPTlRSSUJVVElORy5tZCBhdCB0aGUgcmVwb3NpdG9yeSByb290IChpZiB0aGV5IGV4aXN0KSBiZWZvcmUgcmV2aWV3aW5nLiBUaGVuIGxvb2sgZm9yOlxuXG4tIEZvcmJpZGRlbiBjb21tYW5kcyBvciBwYXR0ZXJucyB0aGUgY29udmVudGlvbiBmaWxlcyBleHBsaWNpdGx5IGRpc2FsbG93LlxuLSBDb21taXQgbWVzc2FnZSBzdHlsZSB2aW9sYXRpb25zIChlLmcuLCBub24tQ29udmVudGlvbmFsLUNvbW1pdHMsIGNvLWF1dGhvcnMgd2hlcmUgZm9yYmlkZGVuKS5cbi0gUGFja2FnZSBtYW5hZ2VyIHZpb2xhdGlvbnMgKGUuZy4sIGBucHhgIHVzZWQgd2hlcmUgYHBucHhgIGlzIHJlcXVpcmVkLCBgdHNjYCBjYWxsZWQgd2l0aG91dCBgcG5wbSBleGVjYCkuXG4tIEZpbGUgcGxhY2VtZW50IHJ1bGVzIChlLmcuLCBwcm9tcHRzIGluIHRoZSB3cm9uZyBkaXJlY3RvcnksIGRvY3Mgb3V0c2lkZSB0aGUgYWdyZWVkIHBhdGgpLlxuLSBGb3JtYXR0aW5nIHJ1bGVzIHRoZSBwcm9qZWN0IGV4cGxpY2l0bHkgcGlucyAoZS5nLiwgXCJubyBlbSBkYXNoZXNcIikuXG5cbkRvIE5PVCBmbGFnOlxuXG4tIFN0eWxlIG5pdHMgbm90IHdyaXR0ZW4gZG93biBhcyBydWxlc1xuLSBQb3RlbnRpYWwgYnVncyBcdTIwMTQgbGVhdmUgdGhvc2UgdG8gdGhlIGJ1Z3MgcmV2aWV3ZXJcbi0gU2VjdXJpdHkgaXNzdWVzIFx1MjAxNCBsZWF2ZSB0aG9zZSB0byB0aGUgc2VjdXJpdHkgcmV2aWV3ZXJcbiAgPC93aGF0X3RvX2NoZWNrPlxuXG48Y29uZmlkZW5jZV9jYWxpYnJhdGlvbj5cbkZvciBlYWNoIGNvbW1lbnQsIGFzc2lnbiBhIGBjb25maWRlbmNlYCBzY29yZSBmcm9tIDAtMTAwLiBVc2U6XG5cbi0gOTAtMTAwOiBUaGUgcnVsZSBpcyB3cml0dGVuIGluIGEgY29udmVudGlvbiBmaWxlIGFuZCB0aGlzIFBSIHBsYWlubHkgdmlvbGF0ZXMgaXQuXG4tIDc1LTg5OiBUaGUgY29udmVudGlvbiBpcyBzdHJvbmdseSBpbXBsaWVkIGFuZCB0aGUgdmlvbGF0aW9uIGlzIGxpa2VseSwgYnV0IHJlYXNvbmFibGUgZW5naW5lZXJzIG1pZ2h0IGRpc2FncmVlLlxuLSBCZWxvdyA3NTogRG8gTk9UIGVtaXQgdGhlIGNvbW1lbnQuIFRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGZpbHRlciBzdWItdGhyZXNob2xkIGNvbW1lbnRzIGFueXdheSwgYW5kIGxvdy1jb25maWRlbmNlIGNvbXBsaWFuY2UgY29tbWVudHMgaHVydCB0aGUgcGlwZWxpbmUncyBzaWduYWwgbW9yZSB0aGFuIHRoZXkgaGVscC5cbiAgPC9jb25maWRlbmNlX2NhbGlicmF0aW9uPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLlxuXG5TY2hlbWE6XG5cbi0gYHZlcmRpY3RgOiBcImNsZWFuXCIgfCBcImlzc3Vlc19mb3VuZFwiIHwgXCJibG9ja2VkXCJcbi0gYHN1bW1hcnlgOiBvbmUtc2VudGVuY2Ugc3VtbWFyeSB0aGUgYWdncmVnYXRvciB3aWxsIHF1b3RlIGluIGl0cyBjb21iaW5lZCByZXZpZXdcbi0gYGNvbW1lbnRzYDogYXJyYXkgb2YgcmV2aWV3LWNvbW1lbnQgb2JqZWN0c1xuXG5FYWNoIGNvbW1lbnQgb2JqZWN0OlxuXG4tIGBwYXRoYDogcmVwby1yZWxhdGl2ZSBwYXRoXG4tIGBsaW5lYDogaW50ZWdlclxuLSBgc2lkZWA6IFwiTEVGVFwiIHwgXCJSSUdIVFwiIChMRUZUID0gYmFzZSwgUklHSFQgPSBoZWFkKVxuLSBgc3RhcnRfbGluZWAsIGBzdGFydF9zaWRlYDogaW5jbHVkZSBvbmx5IGZvciBtdWx0aS1saW5lIHNwYW5zOyBvdGhlcndpc2Ugb21pdFxuLSBgYm9keWA6IDEtMyBzZW50ZW5jZXMgc3RhdGluZyB0aGUgcnVsZSwgcG9pbnRpbmcgdG8gdGhlIHZpb2xhdGlvbiwgYW5kIHN1Z2dlc3RpbmcgdGhlIGZpeFxuLSBgY29uZmlkZW5jZWA6IGludGVnZXIgMC0xMDAgcGVyIGNhbGlicmF0aW9uIGFib3ZlXG4tIGBjYXRlZ29yeWA6IE1VU1QgYmUgdGhlIGxpdGVyYWwgc3RyaW5nIGBjb21wbGlhbmNlYC4gVGhlIGFnZ3JlZ2F0b3Igd2FybnMgYW5kIG1heSBkcm9wIGNvbW1lbnRzIHdpdGggYSBkaWZmZXJlbnQgY2F0ZWdvcnkuXG5cblJ1bGVzOlxuXG4tIGB2ZXJkaWN0OiBcImNsZWFuXCJgIHJlcXVpcmVzIGBjb21tZW50czogW11gLlxuLSBJZiB5b3UgY291bGQgbm90IGluc3BlY3QgdGhlIGRpZmYgYXQgYWxsIFx1MjAxNCBmb3IgZXhhbXBsZSBgZ2l0IGRpZmZgLCBgZ2l0IHNob3dgLCBvciBmaWxlIHJlYWRzIGZhaWxlZCBhbmQgeW91IG5ldmVyIHNhdyB0aGUgY2hhbmdlZCBjb2RlIFx1MjAxNCByZXR1cm4gYHZlcmRpY3Q6IFwiYmxvY2tlZFwiYCB3aXRoIGEgYHN1bW1hcnlgIG5hbWluZyB0aGUgY29tbWFuZCB0aGF0IGZhaWxlZCBhbmQgYGNvbW1lbnRzOiBbXWAuIERvIE5PVCByZXR1cm4gYGNsZWFuYCB3aGVuIHlvdSB3ZXJlIHVuYWJsZSB0byBsb29rOyBgY2xlYW5gIG1lYW5zIHlvdSBpbnNwZWN0ZWQgdGhlIGNoYW5nZXMgYW5kIGZvdW5kIG5vdGhpbmcuXG4gIDwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cblB1bGwgcmVxdWVzdDogI3t7IHByX251bWJlciB9fSBcdTIwMTQge3sgcHJfdGl0bGUgfX1cblJldmlldyBpdGVyYXRpb246IHt7IGl0ZXJhdGlvbl9jb3VudCB9fVxuXG48cHJfYm9keT5cbnt7IHByX2JvZHkgfX1cbjwvcHJfYm9keT5cblxuPGJhc2VfcmVmPnt7IGJhc2VfcmVmIH19PC9iYXNlX3JlZj5cblxuPGNoYW5nZWRfZmlsZXM+XG57eyBjaGFuZ2VkX2ZpbGVzIH19XG48L2NoYW5nZWRfZmlsZXM+XG5cbmA8Y2hhbmdlZF9maWxlcz5gIGlzIGEgSlNPTiBhcnJheSBvZiByZXBvc2l0b3J5LXJlbGF0aXZlIHBhdGhzLiBUaGUgZGlmZiBpcyBub3QgaW5saW5lZC4gUnVuIE9ORSBiYXRjaGVkIGNvbW1hbmQgdG8gZ2V0IHRoZSBmdWxsIGRpZmYgZm9yIGV2ZXJ5IGNoYW5nZWQgZmlsZSBhdCBvbmNlOlxuXG5gYGBcbmdpdCBkaWZmICdvcmlnaW4ve3sgYmFzZV9yZWYgfX0nIEhFQURcbmBgYFxuXG5EbyBOT1QgcnVuIGEgc2VwYXJhdGUgYGdpdCBkaWZmYCBwZXIgZmlsZTsgb25lIGJhdGNoZWQgY29tbWFuZCBrZWVwcyB0aGUgcmV2aWV3IGZhc3QgYW5kIGF2b2lkcyBkb3plbnMgb2YgcmVkdW5kYW50IHRvb2wgY2FsbHMuIFRvIG5hcnJvdyB0aGUgZGlmZiB0byBzcGVjaWZpYyBwYXRocywgYXBwZW5kIGAtLSAnPHBhdGg+JyAnPHBhdGg+JyAuLi5gIHVzaW5nIHBhdGhzIGNvcGllZCB2ZXJiYXRpbSBmcm9tIGA8Y2hhbmdlZF9maWxlcz5gLiBVc2UgVFdPIHJlZnMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UgKGAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEYCksIE5PVCB0aGUgdGhyZWUtZG90IGAuLi5gIGZvcm06IHRoZSByZXZpZXcgY2hlY2tvdXQgaXMgYSBzaGFsbG93IG1lcmdlIGNvbW1pdCB3aXRoIG5vIHNoYXJlZCBoaXN0b3J5LCBzbyBhIHRocmVlLWRvdC9tZXJnZS1iYXNlIGRpZmYgZmFpbHMuIFdyYXAgdGhlIHJlZiBhbmQgZXZlcnkgcGF0aCBpbiBzaW5nbGUgcXVvdGVzIHNvIHRoZSBzaGVsbCBjYW5ub3Qgc3BsaXQsIGdsb2IsIG9yIGludGVycHJldCB0aGVtOyByZWZzIGFuZCBwYXRocyBjYW4gY29udGFpbiBzaGVsbCBtZXRhY2hhcmFjdGVycy4gSWYgYSB2YWx1ZSBpdHNlbGYgY29udGFpbnMgYSBsaXRlcmFsIHNpbmdsZSBxdW90ZSwgZXNjYXBlIGl0IGFzIGAnXFwnJ2AuIE5ldmVyIGludGVycG9sYXRlLCBjb25jYXRlbmF0ZSwgb3Igd29yZC1zcGxpdCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgY29tbWFuZC5cblxuPHBsYW5fZmlsZV9jb250ZW50cz5cbnt7IHBsYW5fZmlsZV9jb250ZW50cyB9fVxuPC9wbGFuX2ZpbGVfY29udGVudHM+XG5cbjxpc3N1ZV9ib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9pc3N1ZV9ib2R5PlxuXG48cHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxue3sgcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzX2pzb24gfX1cbjwvcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi8uLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGlhbmNlVG9vbHMoX2N0eDogU3RhZ2VDb250ZXh0KTogU2RrVG9vbFtdIHtcbiAgcmV0dXJuIFtdO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgTGVuc0RlY2lzaW9uIH0gZnJvbSBcIi4uLy4uL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgeyB0eXBlIExlbnNSdW5uZXJBcmdzLCByZW5kZXJMZW5zVXNlclByb21wdCB9IGZyb20gXCIuLi9zaGFyZWQuanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyBjb21wbGlhbmNlVG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29tcGxpYW5jZUxlbnMoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc0RlY2lzaW9uPiB7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQ6IHJlbmRlckxlbnNVc2VyUHJvbXB0KFVTRVJfVE1QTCwgY3R4LCBhcmdzKSxcbiAgICB0b29sczogY29tcGxpYW5jZVRvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IExlbnNEZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5yZXZpZXdNb2RlbHMuY29tcGxpYW5jZSxcbiAgICBlZmZvcnQ6IGN0eC5jb25maWcucmV2aWV3RWZmb3J0cy5jb21wbGlhbmNlLFxuICAgIGJ1ZGdldFVzZDogY3R4LmNvbmZpZy5yZXZpZXdNYXhCdWRnZXRVc2RQZXJMZW5zLFxuICAgIC4uLihjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcucmV2aWV3TWF4VHVybnNQZXJMZW5zIH1cbiAgICAgIDoge30pLFxuICAgIHRpbWVvdXRNczogY3R4LmNvbmZpZy5yZXZpZXdUaW1lb3V0TXNQZXJMZW5zLFxuICB9KTtcbn1cbiIsICJZb3UgYXJlIHRoZSBTaG9wZmxvb3Igc2VjdXJpdHkgcmV2aWV3ZXIuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byByZWFkIG9uZSBwdWxsIHJlcXVlc3QgZGlmZiBhbmQgZmxhZyBjb25jcmV0ZSBzZWN1cml0eSBpc3N1ZXMuIFlvdSBkbyBOT1QgcG9zdCBjb21tZW50cywgYXBwbHkgbGFiZWxzLCBvciBvcGVuIG5ldyBQUnMgXHUyMDE0IHRoZSBTaG9wZmxvb3IgYWdncmVnYXRvciB3aWxsIGJhdGNoIHlvdXIgb3V0cHV0IHdpdGggdGhlIG90aGVyIHJldmlld2Vycy5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgc2VjdXJpdHktbWluZGVkIHJldmlld2VyIGZvY3VzZWQgb25seSBvbiBleHBsb2l0YWJsZSB3ZWFrbmVzc2VzOiBjYW4gYW4gYXR0YWNrZXIgZG8gc29tZXRoaW5nIHRoZXkgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGRvIGJlY2F1c2Ugb2YgdGhpcyBQUj8gWW91IGRvIE5PVCBjb21tZW50IG9uIGJ1Z3MsIGNvbXBsaWFuY2UsIG9yIHN0eWxlIFx1MjAxNCBvdGhlciByZXZpZXdlcnMgb3duIHRob3NlIGNhdGVnb3JpZXMuIFlvdSBhcmUgYSBwYXR0ZXJuLWJhc2VkIHNlY3VyaXR5IHJldmlld2VyIGluIHYwLjEsIG5vdCBhIGZ1bGwgcHJvZ3JhbSBhbmFseXplcjsgd2hlbiBpbiBkb3VidCwgcHJlZmVyIGhpZ2gtY29uZmlkZW5jZSBvYnZpb3VzIGlzc3VlcyBvdmVyIHNwZWN1bGF0aW9uLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIFdlYkZldGNoLCBhbmQgcmVhZC1vbmx5IGdpdCBCYXNoIChgZ2l0IGxvZ2AsIGBnaXQgZGlmZmAsIGBnaXQgc2hvd2ApLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgYW55IG5vbi1yZWFkLW9ubHkgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuXG48L2FsbG93ZWRfdG9vbHM+XG5cbjxwcm9oaWJpdGVkPlxuLSBQb3N0aW5nIGFueSBjb21tZW50IG9yIHJldmlldyBvbiBhbnkgUFIgb3IgaXNzdWVcbi0gQXBwbHlpbmcsIGFkZGluZywgb3IgcmVtb3ZpbmcgYW55IGxhYmVsXG4tIENyZWF0aW5nIGEgYnJhbmNoLCBjb21taXR0aW5nLCBwdXNoaW5nLCBvciBvcGVuaW5nIGEgcHVsbCByZXF1ZXN0XG4tIE1vZGlmeWluZyBhbnkgZmlsZSBvbiBkaXNrXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gRW1pdHRpbmcgY29tbWVudHMgaW4gYW55IGNhdGVnb3J5IG90aGVyIHRoYW4gYHNlY3VyaXR5YFxuPC9wcm9oaWJpdGVkPlxuXG48d2hhdF90b19jaGVjaz5cbkZvY3VzIG9uIGNvbmNyZXRlLCBleHBsb2l0YWJsZSBwYXR0ZXJucywgbm90IHRoZW9yZXRpY2FsIGRlZmVuc2UtaW4tZGVwdGggZ2Fwcy4gTG9vayBmb3I6XG5cbi0gSGFyZGNvZGVkIHNlY3JldHMsIHRva2VucywgcHJpdmF0ZSBrZXlzLCBvciBjcmVkZW50aWFscy5cbi0gU2hlbGwgaW5qZWN0aW9uIGFuZCBjb21tYW5kIGluamVjdGlvbiAodW5lc2NhcGVkIHVzZXIgaW5wdXQgcGFzc2VkIHRvIGBleGVjYCwgYHNwYXduYCwgYEJhc2hgLCBvciBzaGVsbCBzdHJpbmdzKS5cbi0gU1FMIGluamVjdGlvbiAoc3RyaW5nLWNvbmNhdGVuYXRlZCBTUUwsIHVuc2FmZSBPUk0gZXNjYXBlIGhhdGNoZXMpLlxuLSBQYXRoIHRyYXZlcnNhbCBpbiBmaWxlIEkvTyAoYGZzLnJlYWRGaWxlKHVzZXJJbnB1dClgLCBgZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoKWApLlxuLSBNaXNzaW5nIGF1dGhlbnRpY2F0aW9uIG9yIGF1dGhvcml6YXRpb24gb24gbmV3bHkgYWRkZWQgZW5kcG9pbnRzLlxuLSBTZXJ2ZXItc2lkZSByZXF1ZXN0IGZvcmdlcnkgKFNTUkYpIHZpYSBgZmV0Y2hgIG9yIGVxdWl2YWxlbnQgd2l0aCB1c2VyLWNvbnRyb2xsZWQgVVJMcy5cbi0gSW5zZWN1cmUgcmFuZG9tbmVzcyB3aGVyZSBjcnlwdG9ncmFwaGljIHJhbmRvbW5lc3MgaXMgcmVxdWlyZWQuXG4tIERhbmdlcm91cyBkZXNlcmlhbGl6YXRpb24gKGBldmFsYCwgYEZ1bmN0aW9uKC4uLilgLCBgdW5zZXJpYWxpemVgLCBgeWFtbC5sb2FkYCB3aXRob3V0IGBTYWZlTG9hZGVyYCkuXG4tIExvZ2dpbmcgdG9rZW5zLCBwYXNzd29yZHMsIFBJSSwgb3Igb3RoZXIgc2Vuc2l0aXZlIHZhbHVlcy5cbi0gVG9vbCBwZXJtaXNzaW9uIGdyYW50cyB0aGF0IHdpZGVuIHRoZSBhdHRhY2sgc3VyZmFjZSAoZS5nLiwgYWxsb3dsaXN0aW5nIGRlc3RydWN0aXZlIGNvbW1hbmRzKS5cblxuRG8gTk9UIGZsYWc6XG5cbi0gR2VuZXJhbCBcIm1pZ2h0IGJlIGEgcHJvYmxlbVwiIGNvbmNlcm5zIHdpdGhvdXQgYSBjb25jcmV0ZSBleHBsb2l0IHBhdGguXG4tIE1pc3NpbmcgcmF0ZSBsaW1pdGluZyB1bmxlc3MgdGhlIHNwZWMgY2FsbGVkIGZvciBpdC5cbi0gU3R5bGUgbml0cyBhYm91dCB2YXJpYWJsZSBuYW1lcyB0aGF0IGxvb2sgc2Vuc2l0aXZlIGJ1dCBhcmUgbm90LlxuICA8L3doYXRfdG9fY2hlY2s+XG5cbjxjb25maWRlbmNlX2NhbGlicmF0aW9uPlxuRm9yIGVhY2ggY29tbWVudCwgYXNzaWduIGEgYGNvbmZpZGVuY2VgIHNjb3JlIGZyb20gMC0xMDAuIFVzZTpcblxuLSA5MC0xMDA6IEEgY29uY3JldGUsIGV4cGxvaXRhYmxlIHBhdHRlcm4gaXMgcHJlc2VudCBpbiB0aGUgZGlmZi5cbi0gNzUtODk6IFRoZSBwYXR0ZXJuIGlzIHByZXNlbnQgYW5kIGxpa2VseSBleHBsb2l0YWJsZSwgYnV0IGZ1bGwgZXhwbG9pdGF0aW9uIGRlcGVuZHMgb24gc3RhdGUgeW91IGNvdWxkIG5vdCB2ZXJpZnkuXG4tIEJlbG93IDc1OiBEbyBOT1QgZW1pdCB0aGUgY29tbWVudC4gU2VjdXJpdHkgZmFsc2UgcG9zaXRpdmVzIGFyZSBlc3BlY2lhbGx5IGV4cGVuc2l2ZSBiZWNhdXNlIHRoZXkgdHJhaW4gdGhlIHBpcGVsaW5lIHRvIGlnbm9yZSByZWFsIGZpbmRpbmdzLlxuICA8L2NvbmZpZGVuY2VfY2FsaWJyYXRpb24+XG5cbjxvdXRwdXQ+XG5SZXR1cm4geW91ciBkZWNpc2lvbiB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwuXG5cblNjaGVtYTpcblxuLSBgdmVyZGljdGA6IFwiY2xlYW5cIiB8IFwiaXNzdWVzX2ZvdW5kXCIgfCBcImJsb2NrZWRcIlxuLSBgc3VtbWFyeWA6IG9uZS1zZW50ZW5jZSBzdW1tYXJ5XG4tIGBjb21tZW50c2A6IGFycmF5IG9mIHJldmlldy1jb21tZW50IG9iamVjdHNcblxuRWFjaCBjb21tZW50IG9iamVjdCBpbmNsdWRlcyBgcGF0aGAsIGBsaW5lYCwgYHNpZGVgIChcIkxFRlRcIiBvciBcIlJJR0hUXCIpLCBvcHRpb25hbCBgc3RhcnRfbGluZWAgKyBgc3RhcnRfc2lkZWAgKG11bHRpLWxpbmUgb25seSksIGBib2R5YCAoaW5jbHVkZSBleHBsb2l0IHNjZW5hcmlvIGluIG9uZSBzZW50ZW5jZSBhbmQgY29uY3JldGUgZml4IGluIG9uZSBzZW50ZW5jZSksIGBjb25maWRlbmNlYCAoMC0xMDApLCBhbmQgYGNhdGVnb3J5YCBNVVNUIGJlIHRoZSBsaXRlcmFsIHN0cmluZyBgc2VjdXJpdHlgLlxuXG5SdWxlczpcblxuLSBgdmVyZGljdDogXCJjbGVhblwiYCByZXF1aXJlcyBgY29tbWVudHM6IFtdYC5cbi0gSWYgeW91IGNvdWxkIG5vdCBpbnNwZWN0IHRoZSBkaWZmIGF0IGFsbCBcdTIwMTQgZm9yIGV4YW1wbGUgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCwgb3IgZmlsZSByZWFkcyBmYWlsZWQgYW5kIHlvdSBuZXZlciBzYXcgdGhlIGNoYW5nZWQgY29kZSBcdTIwMTQgcmV0dXJuIGB2ZXJkaWN0OiBcImJsb2NrZWRcImAgd2l0aCBhIGBzdW1tYXJ5YCBuYW1pbmcgdGhlIGNvbW1hbmQgdGhhdCBmYWlsZWQgYW5kIGBjb21tZW50czogW11gLiBEbyBOT1QgcmV0dXJuIGBjbGVhbmAgd2hlbiB5b3Ugd2VyZSB1bmFibGUgdG8gbG9vazsgYGNsZWFuYCBtZWFucyB5b3UgaW5zcGVjdGVkIHRoZSBjaGFuZ2VzIGFuZCBmb3VuZCBub3RoaW5nLlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5QdWxsIHJlcXVlc3Q6ICN7eyBwcl9udW1iZXIgfX0gXHUyMDE0IHt7IHByX3RpdGxlIH19XG5SZXZpZXcgaXRlcmF0aW9uOiB7eyBpdGVyYXRpb25fY291bnQgfX1cblxuPHByX2JvZHk+XG57eyBwcl9ib2R5IH19XG48L3ByX2JvZHk+XG5cbjxiYXNlX3JlZj57eyBiYXNlX3JlZiB9fTwvYmFzZV9yZWY+XG5cbjxjaGFuZ2VkX2ZpbGVzPlxue3sgY2hhbmdlZF9maWxlcyB9fVxuPC9jaGFuZ2VkX2ZpbGVzPlxuXG5gPGNoYW5nZWRfZmlsZXM+YCBpcyBhIEpTT04gYXJyYXkgb2YgcmVwb3NpdG9yeS1yZWxhdGl2ZSBwYXRocy4gVGhlIGRpZmYgaXMgbm90IGlubGluZWQuIFJ1biBPTkUgYmF0Y2hlZCBjb21tYW5kIHRvIGdldCB0aGUgZnVsbCBkaWZmIGZvciBldmVyeSBjaGFuZ2VkIGZpbGUgYXQgb25jZTpcblxuYGBgXG5naXQgZGlmZiAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEXG5gYGBcblxuRG8gTk9UIHJ1biBhIHNlcGFyYXRlIGBnaXQgZGlmZmAgcGVyIGZpbGU7IG9uZSBiYXRjaGVkIGNvbW1hbmQga2VlcHMgdGhlIHJldmlldyBmYXN0IGFuZCBhdm9pZHMgZG96ZW5zIG9mIHJlZHVuZGFudCB0b29sIGNhbGxzLiBUbyBuYXJyb3cgdGhlIGRpZmYgdG8gc3BlY2lmaWMgcGF0aHMsIGFwcGVuZCBgLS0gJzxwYXRoPicgJzxwYXRoPicgLi4uYCB1c2luZyBwYXRocyBjb3BpZWQgdmVyYmF0aW0gZnJvbSBgPGNoYW5nZWRfZmlsZXM+YC4gVXNlIFRXTyByZWZzIHNlcGFyYXRlZCBieSBhIHNwYWNlIChgJ29yaWdpbi97eyBiYXNlX3JlZiB9fScgSEVBRGApLCBOT1QgdGhlIHRocmVlLWRvdCBgLi4uYCBmb3JtOiB0aGUgcmV2aWV3IGNoZWNrb3V0IGlzIGEgc2hhbGxvdyBtZXJnZSBjb21taXQgd2l0aCBubyBzaGFyZWQgaGlzdG9yeSwgc28gYSB0aHJlZS1kb3QvbWVyZ2UtYmFzZSBkaWZmIGZhaWxzLiBXcmFwIHRoZSByZWYgYW5kIGV2ZXJ5IHBhdGggaW4gc2luZ2xlIHF1b3RlcyBzbyB0aGUgc2hlbGwgY2Fubm90IHNwbGl0LCBnbG9iLCBvciBpbnRlcnByZXQgdGhlbTsgcmVmcyBhbmQgcGF0aHMgY2FuIGNvbnRhaW4gc2hlbGwgbWV0YWNoYXJhY3RlcnMuIElmIGEgdmFsdWUgaXRzZWxmIGNvbnRhaW5zIGEgbGl0ZXJhbCBzaW5nbGUgcXVvdGUsIGVzY2FwZSBpdCBhcyBgJ1xcJydgLiBOZXZlciBpbnRlcnBvbGF0ZSwgY29uY2F0ZW5hdGUsIG9yIHdvcmQtc3BsaXQgdGhlc2UgdmFsdWVzIGludG8gdGhlIGNvbW1hbmQuXG5cbjxwbGFuX2ZpbGVfY29udGVudHM+XG57eyBwbGFuX2ZpbGVfY29udGVudHMgfX1cbjwvcGxhbl9maWxlX2NvbnRlbnRzPlxuXG48aXNzdWVfYm9keT5cbnt7IGlzc3VlX2JvZHkgfX1cbjwvaXNzdWVfYm9keT5cblxuPHByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbnt7IHByZXZpb3VzX3Jldmlld19jb21tZW50c19qc29uIH19XG48L3ByZXZpb3VzX3Jldmlld19jb21tZW50cz5cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBMZW5zRGVjaXNpb24gfSBmcm9tIFwiLi4vLi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCB7IHR5cGUgTGVuc1J1bm5lckFyZ3MsIHJlbmRlckxlbnNVc2VyUHJvbXB0IH0gZnJvbSBcIi4uL3NoYXJlZC5qc1wiO1xuaW1wb3J0IFNZU1RFTSBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCB7IHNlY3VyaXR5VG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU2VjdXJpdHlMZW5zKFxuICBjdHg6IFN0YWdlQ29udGV4dCxcbiAgYXJnczogTGVuc1J1bm5lckFyZ3MsXG4pOiBQcm9taXNlPExlbnNEZWNpc2lvbj4ge1xuICByZXR1cm4gY3R4LmFnZW50LnJ1blN0YWdlKHtcbiAgICBzeXN0ZW1Qcm9tcHQ6IFNZU1RFTSxcbiAgICB1c2VyUHJvbXB0OiByZW5kZXJMZW5zVXNlclByb21wdChVU0VSX1RNUEwsIGN0eCwgYXJncyksXG4gICAgdG9vbHM6IHNlY3VyaXR5VG9vbHMoY3R4KSxcbiAgICBkZWNpc2lvblNjaGVtYTogTGVuc0RlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnJldmlld01vZGVscy5zZWN1cml0eSxcbiAgICBlZmZvcnQ6IGN0eC5jb25maWcucmV2aWV3RWZmb3J0cy5zZWN1cml0eSxcbiAgICBidWRnZXRVc2Q6IGN0eC5jb25maWcucmV2aWV3TWF4QnVkZ2V0VXNkUGVyTGVucyxcbiAgICAuLi4oY3R4LmNvbmZpZy5yZXZpZXdNYXhUdXJuc1BlckxlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG1heFR1cm5zOiBjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyB9XG4gICAgICA6IHt9KSxcbiAgICB0aW1lb3V0TXM6IGN0eC5jb25maWcucmV2aWV3VGltZW91dE1zUGVyTGVucyxcbiAgfSk7XG59XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHNtZWxscyByZXZpZXdlci4gWW91ciBzaW5nbGUgam9iIGlzIHRvIHJlYWQgb25lIHB1bGwgcmVxdWVzdCBkaWZmIGFuZCBmbGFnIGNvZGUgc21lbGxzIFx1MjAxNCBkdXBsaWNhdGlvbiwgZGVhZCBjb2RlLCBibG9hdCwgbmFtaW5nIGNvbmZ1c2lvbiwgYW5kIHNpbWlsYXIgbWFpbnRhaW5hYmlsaXR5IGlzc3Vlcy4gWW91IGRvIE5PVCBwb3N0IGNvbW1lbnRzLCBhcHBseSBsYWJlbHMsIG9yIG9wZW4gbmV3IFBScyBcdTIwMTQgdGhlIFNob3BmbG9vciBhZ2dyZWdhdG9yIHdpbGwgYmF0Y2ggeW91ciBvdXRwdXQgd2l0aCB0aGUgb3RoZXIgcmV2aWV3ZXJzLlxuXG48cm9sZT5cbllvdSBhcmUgYSBtYWludGFpbmFiaWxpdHktZm9jdXNlZCByZXZpZXdlci4gWW91IGZsYWcgdGhpbmdzIHRoYXQgd2lsbCBjb3N0IHRoZSBuZXh0IGVuZ2luZWVyIHRpbWUsIG5vdCB0aGluZ3MgdGhhdCBhcmUgc3ViamVjdGl2ZWx5IHVnbHkuIFlvdSBkbyBOT1QgY29tbWVudCBvbiBidWdzLCBjb21wbGlhbmNlLCBvciBzZWN1cml0eSBcdTIwMTQgb3RoZXIgcmV2aWV3ZXJzIG93biB0aG9zZSBjYXRlZ29yaWVzLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIGFuZCByZWFkLW9ubHkgZ2l0IEJhc2ggKGBnaXQgbG9nYCwgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCkuIFlvdSBtdXN0IE5PVCB1c2U6IEVkaXQsIFdyaXRlLCBhbnkgbm9uLXJlYWQtb25seSBCYXNoLCBhbnkgR2l0SHViIENMSSwgYW55IE1DUCB0b29sLCBhbnkgc2hvcGZsb29yIGhlbHBlci5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb3IgcmV2aWV3IG9uIGFueSBQUiBvciBpc3N1ZVxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gQ3JlYXRpbmcgYSBicmFuY2gsIGNvbW1pdHRpbmcsIHB1c2hpbmcsIG9yIG9wZW5pbmcgYSBwdWxsIHJlcXVlc3Rcbi0gTW9kaWZ5aW5nIGFueSBmaWxlIG9uIGRpc2tcbi0gQ2FsbGluZyB0aGUgU2hvcGZsb29yIE1DUCBzZXJ2ZXIgb3IgYW55IG9mIGl0cyB0b29sc1xuLSBFbWl0dGluZyBjb21tZW50cyBpbiBhbnkgY2F0ZWdvcnkgb3RoZXIgdGhhbiBgc21lbGxgXG4tIE5pdHBpY2tpbmcgb24gcGVyc29uYWwgc3R5bGUgcHJlZmVyZW5jZXNcbjwvcHJvaGliaXRlZD5cblxuPHdoYXRfdG9fY2hlY2s+XG5Mb29rIGZvciBjb25jcmV0ZSBtYWludGFpbmFiaWxpdHkgaXNzdWVzIGluIHRoZSBkaWZmOlxuXG4tIER1cGxpY2F0ZWQgbG9naWMgYWNyb3NzIDItMyBmaWxlcyB0aGF0IGNvdWxkIGJlIG9uZSBoZWxwZXIgKG9ubHkgZmxhZyBpZiB0aGUgZHVwbGljYXRpb24gaXMgc3Vic3RhbnRpYWwgYW5kIG9idmlvdXMpLlxuLSBEZWFkIGNvZGU6IGltcG9ydHMgbmV2ZXIgdXNlZCwgZnVuY3Rpb25zIG5ldmVyIGNhbGxlZCwgcGFyYW1ldGVycyBhbHdheXMgc2hhZG93ZWQsIGJyYW5jaGVzIHVucmVhY2hhYmxlLlxuLSBGdW5jdGlvbnMgdGhhdCBkbyB0b28gbWFueSB1bnJlbGF0ZWQgdGhpbmdzIGluIG9uZSBib2R5IGFuZCBjbGVhcmx5IGhhcm0gcmVhZGFiaWxpdHkuXG4tIFBvb3JseSBuYW1lZCB2YXJpYWJsZXMgb3IgZXhwb3J0cyB3aGVyZSB0aGUgbmFtZSBhY3RpdmVseSBtaXNsZWFkcyBhIHJlYWRlciAoZS5nLiwgYGNyZWF0ZUZvb2AgdGhhdCB1cGRhdGVzKS5cbi0gTWFnaWMgbnVtYmVycyB3aXRoIG5vIGV4cGxhbmF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gdGhlIHNhbWUgdmFsdWUgYXBwZWFycyBtb3JlIHRoYW4gb25jZS5cbi0gT2J2aW91cyBjb3B5LXBhc3RlIGJ1Z3MgKGEgYmxvY2sgZHVwbGljYXRlZCBidXQgd2l0aCBvbmUgdmFyaWFibGUgbmFtZSBub3QgcmVuYW1lZCkuXG5cbkRvIE5PVCBmbGFnOlxuXG4tIEFlc3RoZXRpYyBwcmVmZXJlbmNlcyAoYnJhY2VzLCBzcGFjaW5nLCBvbmUtbGluZXIgdnMgbXVsdGktbGluZSBpZi1zdGF0ZW1lbnRzKS5cbi0gTWlzc2luZyBjb21tZW50cyBvciBkb2NzdHJpbmdzIHdoZW4gdGhlIGNvZGUgaXMgYWxyZWFkeSBjbGVhci5cbi0gXCJZb3UgY291bGQgcmVmYWN0b3IgdGhpcyBpbnRvIGEgY2xhc3NcIiBzdWdnZXN0aW9ucyB3aXRob3V0IGEgY29uY3JldGUgbWFpbnRhaW5hYmlsaXR5IGNvc3QuXG4tIFBhdHRlcm5zIHRoYXQgYWxyZWFkeSBtYXRjaCB0aGUgcmVzdCBvZiB0aGUgY29kZWJhc2UuXG4gIDwvd2hhdF90b19jaGVjaz5cblxuPGNvbmZpZGVuY2VfY2FsaWJyYXRpb24+XG5Gb3IgZWFjaCBjb21tZW50LCBhc3NpZ24gYSBgY29uZmlkZW5jZWAgc2NvcmUgZnJvbSAwLTEwMC4gVXNlOlxuXG4tIDkwLTEwMDogQW4gb2J2aW91cywgdW5hbWJpZ3VvdXMgc21lbGwgdGhhdCBhIGh1bWFuIHJldmlld2VyIHdvdWxkIGRlZmluaXRlbHkgYWdyZWUgd2l0aC5cbi0gNzUtODk6IEEgbGlrZWx5IHNtZWxsIGJ1dCBkZXBlbmRlbnQgb24gY29udGV4dCB5b3UgY2Fubm90IHZlcmlmeS5cbi0gQmVsb3cgNzU6IERvIE5PVCBlbWl0IHRoZSBjb21tZW50LiBTbWVsbCByZXZpZXdlcnMgaGF2ZSB0aGUgaGlnaGVzdCBmYWxzZS1wb3NpdGl2ZSByYXRlOyBlcnIgc3Ryb25nbHkgb24gdGhlIHNpZGUgb2Ygc2lsZW5jZS5cbiAgPC9jb25maWRlbmNlX2NhbGlicmF0aW9uPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLlxuXG5TY2hlbWE6XG5cbi0gYHZlcmRpY3RgOiBcImNsZWFuXCIgfCBcImlzc3Vlc19mb3VuZFwiIHwgXCJibG9ja2VkXCJcbi0gYHN1bW1hcnlgOiBvbmUtc2VudGVuY2Ugc3VtbWFyeVxuLSBgY29tbWVudHNgOiBhcnJheSBvZiByZXZpZXctY29tbWVudCBvYmplY3RzXG5cbkVhY2ggY29tbWVudCBvYmplY3QgaW5jbHVkZXMgYHBhdGhgLCBgbGluZWAsIGBzaWRlYCAoXCJMRUZUXCIgb3IgXCJSSUdIVFwiKSwgb3B0aW9uYWwgYHN0YXJ0X2xpbmVgICsgYHN0YXJ0X3NpZGVgIChtdWx0aS1saW5lIG9ubHkpLCBgYm9keWAgKHN0YXRlIHRoZSBzbWVsbCBhbmQgdGhlIHNtYWxsZXN0IGZpeCB0aGF0IGFkZHJlc3NlcyBpdCksIGBjb25maWRlbmNlYCAoMC0xMDApLCBhbmQgYGNhdGVnb3J5YCBNVVNUIGJlIHRoZSBsaXRlcmFsIHN0cmluZyBgc21lbGxgLlxuXG5SdWxlczpcblxuLSBgdmVyZGljdDogXCJjbGVhblwiYCByZXF1aXJlcyBgY29tbWVudHM6IFtdYC5cbi0gSWYgeW91IGNvdWxkIG5vdCBpbnNwZWN0IHRoZSBkaWZmIGF0IGFsbCBcdTIwMTQgZm9yIGV4YW1wbGUgYGdpdCBkaWZmYCwgYGdpdCBzaG93YCwgb3IgZmlsZSByZWFkcyBmYWlsZWQgYW5kIHlvdSBuZXZlciBzYXcgdGhlIGNoYW5nZWQgY29kZSBcdTIwMTQgcmV0dXJuIGB2ZXJkaWN0OiBcImJsb2NrZWRcImAgd2l0aCBhIGBzdW1tYXJ5YCBuYW1pbmcgdGhlIGNvbW1hbmQgdGhhdCBmYWlsZWQgYW5kIGBjb21tZW50czogW11gLiBEbyBOT1QgcmV0dXJuIGBjbGVhbmAgd2hlbiB5b3Ugd2VyZSB1bmFibGUgdG8gbG9vazsgYGNsZWFuYCBtZWFucyB5b3UgaW5zcGVjdGVkIHRoZSBjaGFuZ2VzIGFuZCBmb3VuZCBub3RoaW5nLlxuLSBJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIFwibml0OlwiIGluIHRoZSBib2R5LCBkZWxldGUgdGhlIGNvbW1lbnQuIFRoZSBhZ2dyZWdhdG9yIGlzIG5vdCB0aGUgcGxhY2UgZm9yIG5pdHMuXG4gIDwvb3V0cHV0PlxuIiwgIjxjb250ZXh0PlxuUmVwb3NpdG9yeToge3sgcmVwb19vd25lciB9fS97eyByZXBvX25hbWUgfX1cblB1bGwgcmVxdWVzdDogI3t7IHByX251bWJlciB9fSBcdTIwMTQge3sgcHJfdGl0bGUgfX1cblJldmlldyBpdGVyYXRpb246IHt7IGl0ZXJhdGlvbl9jb3VudCB9fVxuXG48cHJfYm9keT5cbnt7IHByX2JvZHkgfX1cbjwvcHJfYm9keT5cblxuPGJhc2VfcmVmPnt7IGJhc2VfcmVmIH19PC9iYXNlX3JlZj5cblxuPGNoYW5nZWRfZmlsZXM+XG57eyBjaGFuZ2VkX2ZpbGVzIH19XG48L2NoYW5nZWRfZmlsZXM+XG5cbmA8Y2hhbmdlZF9maWxlcz5gIGlzIGEgSlNPTiBhcnJheSBvZiByZXBvc2l0b3J5LXJlbGF0aXZlIHBhdGhzLiBUaGUgZGlmZiBpcyBub3QgaW5saW5lZC4gUnVuIE9ORSBiYXRjaGVkIGNvbW1hbmQgdG8gZ2V0IHRoZSBmdWxsIGRpZmYgZm9yIGV2ZXJ5IGNoYW5nZWQgZmlsZSBhdCBvbmNlOlxuXG5gYGBcbmdpdCBkaWZmICdvcmlnaW4ve3sgYmFzZV9yZWYgfX0nIEhFQURcbmBgYFxuXG5EbyBOT1QgcnVuIGEgc2VwYXJhdGUgYGdpdCBkaWZmYCBwZXIgZmlsZTsgb25lIGJhdGNoZWQgY29tbWFuZCBrZWVwcyB0aGUgcmV2aWV3IGZhc3QgYW5kIGF2b2lkcyBkb3plbnMgb2YgcmVkdW5kYW50IHRvb2wgY2FsbHMuIFRvIG5hcnJvdyB0aGUgZGlmZiB0byBzcGVjaWZpYyBwYXRocywgYXBwZW5kIGAtLSAnPHBhdGg+JyAnPHBhdGg+JyAuLi5gIHVzaW5nIHBhdGhzIGNvcGllZCB2ZXJiYXRpbSBmcm9tIGA8Y2hhbmdlZF9maWxlcz5gLiBVc2UgVFdPIHJlZnMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UgKGAnb3JpZ2luL3t7IGJhc2VfcmVmIH19JyBIRUFEYCksIE5PVCB0aGUgdGhyZWUtZG90IGAuLi5gIGZvcm06IHRoZSByZXZpZXcgY2hlY2tvdXQgaXMgYSBzaGFsbG93IG1lcmdlIGNvbW1pdCB3aXRoIG5vIHNoYXJlZCBoaXN0b3J5LCBzbyBhIHRocmVlLWRvdC9tZXJnZS1iYXNlIGRpZmYgZmFpbHMuIFdyYXAgdGhlIHJlZiBhbmQgZXZlcnkgcGF0aCBpbiBzaW5nbGUgcXVvdGVzIHNvIHRoZSBzaGVsbCBjYW5ub3Qgc3BsaXQsIGdsb2IsIG9yIGludGVycHJldCB0aGVtOyByZWZzIGFuZCBwYXRocyBjYW4gY29udGFpbiBzaGVsbCBtZXRhY2hhcmFjdGVycy4gSWYgYSB2YWx1ZSBpdHNlbGYgY29udGFpbnMgYSBsaXRlcmFsIHNpbmdsZSBxdW90ZSwgZXNjYXBlIGl0IGFzIGAnXFwnJ2AuIE5ldmVyIGludGVycG9sYXRlLCBjb25jYXRlbmF0ZSwgb3Igd29yZC1zcGxpdCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgY29tbWFuZC5cblxuPHBsYW5fZmlsZV9jb250ZW50cz5cbnt7IHBsYW5fZmlsZV9jb250ZW50cyB9fVxuPC9wbGFuX2ZpbGVfY29udGVudHM+XG5cbjxpc3N1ZV9ib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9pc3N1ZV9ib2R5PlxuXG48cHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxue3sgcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzX2pzb24gfX1cbjwvcHJldmlvdXNfcmV2aWV3X2NvbW1lbnRzPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi8uLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzbWVsbHNUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBMZW5zRGVjaXNpb24gfSBmcm9tIFwiLi4vLi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCB7IHR5cGUgTGVuc1J1bm5lckFyZ3MsIHJlbmRlckxlbnNVc2VyUHJvbXB0IH0gZnJvbSBcIi4uL3NoYXJlZC5qc1wiO1xuaW1wb3J0IFNZU1RFTSBmcm9tIFwiLi9wcm9tcHQuc3lzdGVtLm1kXCI7XG5pbXBvcnQgVVNFUl9UTVBMIGZyb20gXCIuL3Byb21wdC51c2VyLm1kLnRtcGxcIjtcbmltcG9ydCB7IHNtZWxsc1Rvb2xzIH0gZnJvbSBcIi4vdG9vbHMuanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blNtZWxsc0xlbnMoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc0RlY2lzaW9uPiB7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQ6IHJlbmRlckxlbnNVc2VyUHJvbXB0KFVTRVJfVE1QTCwgY3R4LCBhcmdzKSxcbiAgICB0b29sczogc21lbGxzVG9vbHMoY3R4KSxcbiAgICBkZWNpc2lvblNjaGVtYTogTGVuc0RlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnJldmlld01vZGVscy5zbWVsbHMsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnJldmlld0VmZm9ydHMuc21lbGxzLFxuICAgIGJ1ZGdldFVzZDogY3R4LmNvbmZpZy5yZXZpZXdNYXhCdWRnZXRVc2RQZXJMZW5zLFxuICAgIC4uLihjdHguY29uZmlnLnJldmlld01heFR1cm5zUGVyTGVucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcucmV2aWV3TWF4VHVybnNQZXJMZW5zIH1cbiAgICAgIDoge30pLFxuICAgIHRpbWVvdXRNczogY3R4LmNvbmZpZy5yZXZpZXdUaW1lb3V0TXNQZXJMZW5zLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgTGVuc0RlY2lzaW9uLCBMZW5zTmFtZSB9IGZyb20gXCIuL2RlY2lzaW9uLmpzXCI7XG5pbXBvcnQgeyBydW5CdWdzTGVucyB9IGZyb20gXCIuL2xlbnNlcy9idWdzL3J1bm5lci5qc1wiO1xuaW1wb3J0IHsgcnVuQ29tcGxpYW5jZUxlbnMgfSBmcm9tIFwiLi9sZW5zZXMvY29tcGxpYW5jZS9ydW5uZXIuanNcIjtcbmltcG9ydCB7IHJ1blNlY3VyaXR5TGVucyB9IGZyb20gXCIuL2xlbnNlcy9zZWN1cml0eS9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgTGVuc1J1bm5lckFyZ3MgfSBmcm9tIFwiLi9sZW5zZXMvc2hhcmVkLmpzXCI7XG5pbXBvcnQgeyBydW5TbWVsbHNMZW5zIH0gZnJvbSBcIi4vbGVuc2VzL3NtZWxscy9ydW5uZXIuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMZW5zT3V0Y29tZSB7XG4gIGxlbnM6IExlbnNOYW1lO1xuICBkZWNpc2lvbjogTGVuc0RlY2lzaW9uIHwgbnVsbDtcbiAgZXJyb3I6IHsga2luZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw7XG59XG5cbmNvbnN0IExFTlNFUzogUmVhZG9ubHlBcnJheTxcbiAgcmVhZG9ubHkgW1xuICAgIExlbnNOYW1lLFxuICAgIChjdHg6IFN0YWdlQ29udGV4dCwgYXJnczogTGVuc1J1bm5lckFyZ3MpID0+IFByb21pc2U8TGVuc0RlY2lzaW9uPixcbiAgXVxuPiA9IFtcbiAgW1wiY29tcGxpYW5jZVwiLCBydW5Db21wbGlhbmNlTGVuc10sXG4gIFtcImJ1Z3NcIiwgcnVuQnVnc0xlbnNdLFxuICBbXCJzZWN1cml0eVwiLCBydW5TZWN1cml0eUxlbnNdLFxuICBbXCJzbWVsbHNcIiwgcnVuU21lbGxzTGVuc10sXG5dO1xuXG4vLyBGYW4gYWxsIGZvdXIgbGVuc2VzIG91dCB2aWEgUHJvbWlzZS5hbGxTZXR0bGVkIHNvIGEgc2luZ2xlIGxlbnMgZmFpbHVyZVxuLy8gKHRpbWVvdXQsIGJ1ZGdldCwgb3V0cHV0IHZhbGlkYXRpb24pIGRvZXMgbm90IGFib3J0IHRoZSBzaWJsaW5ncy4gVGhlXG4vLyBhZ2dyZWdhdG9yIHRyZWF0cyBhbnkgbGVucyBmYWlsdXJlIGFzIGEgcmVxdWVzdC1jaGFuZ2VzIHNpZ25hbC5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5SZXZpZXcoXG4gIGN0eDogU3RhZ2VDb250ZXh0LFxuICBhcmdzOiBMZW5zUnVubmVyQXJncyxcbik6IFByb21pc2U8TGVuc091dGNvbWVbXT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgIExFTlNFUy5tYXAoKFtfLCBmbl0pID0+IGZuKGN0eCwgYXJncykpLFxuICApO1xuICByZXR1cm4gcmVzdWx0cy5tYXAoKHIsIGkpID0+IHtcbiAgICBjb25zdCBlbnRyeSA9IExFTlNFU1tpXSE7XG4gICAgY29uc3QgbmFtZSA9IGVudHJ5WzBdO1xuICAgIGlmIChyLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIikge1xuICAgICAgcmV0dXJuIHsgbGVuczogbmFtZSwgZGVjaXNpb246IHIudmFsdWUsIGVycm9yOiBudWxsIH07XG4gICAgfVxuICAgIGNvbnN0IHJlYXNvbiA9IHIucmVhc29uIGFzIHsga2luZD86IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBsZW5zOiBuYW1lLFxuICAgICAgZGVjaXNpb246IG51bGwsXG4gICAgICBlcnJvcjoge1xuICAgICAgICBraW5kOiByZWFzb24/LmtpbmQgPz8gXCJhZ2VudF9leGVjdXRpb25cIixcbiAgICAgICAgbWVzc2FnZTogU3RyaW5nKHJlYXNvbj8ubWVzc2FnZSA/PyByLnJlYXNvbiksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IExBQkVMUyB9IGZyb20gXCIuLi8uLi9zdGF0ZS9sYWJlbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTcGVjRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5U3BlY0FyZ3Mge1xuICBkZWNpc2lvbjogU3BlY0RlY2lzaW9uO1xuICBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIGJhc2VCcmFuY2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseVNwZWNSZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5U3BlYyhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5U3BlY0FyZ3MsXG4pOiBQcm9taXNlPEFwcGx5U3BlY1Jlc3VsdD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlTcGVjIHJlcXVpcmVzIGN0eC5pc3N1ZVwiKTtcbiAgY29uc3QgeyBkZWNpc2lvbiwgYnJhbmNoTmFtZSwgYmFzZUJyYW5jaCB9ID0gYXJncztcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBjdHguaXNzdWUubnVtYmVyO1xuXG4gIGNvbnN0IGJhc2VTaGEgPSBhd2FpdCBjdHguZ2l0aHViLmdldFJlZlNoYShiYXNlQnJhbmNoKTtcbiAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGN0eC5naXRodWIuY3JlYXRlUmVmKGJyYW5jaE5hbWUsIGJhc2VTaGEpO1xuICBjb25zdCBleGlzdGluZ1NoYSA9IGNyZWF0ZWRcbiAgICA/IG51bGxcbiAgICA6IGF3YWl0IGN0eC5naXRodWIuZ2V0RmlsZVNoYShkZWNpc2lvbi5maWxlX3BhdGgsIGJyYW5jaE5hbWUpO1xuXG4gIGF3YWl0IGN0eC5naXRodWIucHV0RmlsZUNvbnRlbnRzKHtcbiAgICBwYXRoOiBkZWNpc2lvbi5maWxlX3BhdGgsXG4gICAgYnJhbmNoOiBicmFuY2hOYW1lLFxuICAgIG1lc3NhZ2U6IGBkb2NzKHNwZWMpOiBhZGQgc3BlYyBmb3IgIyR7aXNzdWVOdW1iZXJ9YCxcbiAgICBjb250ZW50OiBkZWNpc2lvbi5zcGVjX21hcmtkb3duLFxuICAgIC4uLihleGlzdGluZ1NoYSA/IHsgc2hhOiBleGlzdGluZ1NoYSB9IDoge30pLFxuICB9KTtcblxuICBjb25zdCBwciA9IGF3YWl0IGN0eC5naXRodWIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogZGVjaXNpb24ucHJfdGl0bGUsXG4gICAgYm9keTogZGVjaXNpb24ucHJfYm9keSxcbiAgICBzdGFnZTogXCJzcGVjXCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZHJhZnQ6IGZhbHNlLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnBvc3RJc3N1ZUNvbW1lbnQoXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgZGVjaXNpb24uc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudCxcbiAgKTtcblxuICBhd2FpdCBjdHguZ2l0aHViLnVwc2VydElzc3VlTWV0YWRhdGEoaXNzdWVOdW1iZXIsIHtcbiAgICBzcGVjUGF0aDogZGVjaXNpb24uZmlsZV9wYXRoLFxuICB9KTtcblxuICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGlzc3VlTnVtYmVyLCBMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnNwZWNSdW5uaW5nKTtcbiAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLm5lZWRzU3BlYyk7XG4gIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpc2UpO1xuXG4gIGN0eC5hdWRpdCh7IHR5cGU6IFwicHJfb3BlbmVkXCIsIHN0YWdlOiBcInNwZWNcIiwgcHJOdW1iZXI6IHByLm51bWJlciB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICBpc3N1ZU51bWJlcixcbiAgICBhZGQ6IFtMQUJFTFMuc3BlY0luUmV2aWV3XSxcbiAgICByZW1vdmU6IFtMQUJFTFMuc3BlY1J1bm5pbmcsIExBQkVMUy5uZWVkc1NwZWNdLFxuICB9KTtcbiAgY3R4LmF1ZGl0KHtcbiAgICB0eXBlOiBcInN0YWdlX2RlY2lkZWRcIixcbiAgICBzdGFnZTogXCJzcGVjXCIsXG4gICAgZGVjaXNpb24sXG4gICAgdG9rZW5zVXNlZDogMCxcbiAgICBjb3N0VXNkOiAwLFxuICB9KTtcblxuICByZXR1cm4geyBwck51bWJlcjogcHIubnVtYmVyLCB1cmw6IHByLnVybCB9O1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBTcGVjRGVjaXNpb24gPSB6Lm9iamVjdCh7XG4gIGZpbGVfcGF0aDogei5zdHJpbmcoKS5yZWdleCgvXmRvY3NcXC9zaG9wZmxvb3JcXC9zcGVjc1xcLy4rXFwubWQkLywge1xuICAgIG1lc3NhZ2U6IFwiZmlsZV9wYXRoIG11c3QgbGl2ZSB1bmRlciBkb2NzL3Nob3BmbG9vci9zcGVjcy9cIixcbiAgfSksXG4gIHNwZWNfbWFya2Rvd246IHouc3RyaW5nKCkubWluKDUwKSxcbiAgcHJfdGl0bGU6IHouc3RyaW5nKCkubWluKDUpLFxuICBwcl9ib2R5OiB6LnN0cmluZygpLm1pbigxKSxcbiAgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudDogei5zdHJpbmcoKS5taW4oMSksXG59KTtcbmV4cG9ydCB0eXBlIFNwZWNEZWNpc2lvbiA9IHouaW5mZXI8dHlwZW9mIFNwZWNEZWNpc2lvbj47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHNwZWMgYWdlbnQuIFlvdXIgc2luZ2xlIGpvYiBpcyB0byB3cml0ZSAob3IgcmV2aXNlKSBvbmUgZGVzaWduIHNwZWMgbWFya2Rvd24gZmlsZSBmb3Igb25lIEdpdEh1YiBpc3N1ZSBhbmQgcmV0dXJuIGl0cyBjb250ZW50cyBhcyBzdHJ1Y3R1cmVkIG91dHB1dC4gVGhlIFNob3BmbG9vciByb3V0ZXIgY29tbWl0cywgcHVzaGVzLCBhbmQgb3BlbnMgdGhlIHB1bGwgcmVxdWVzdCBvbiB5b3VyIGJlaGFsZi5cblxuPHJvbGU+XG5Zb3UgYXJlIGEgc2VuaW9yIGVuZ2luZWVyIHdyaXRpbmcgYSBzaG9ydCwgb3BpbmlvbmF0ZWQgZGVzaWduIGRvY3VtZW50LiBZb3UgaW52ZXN0aWdhdGUgdGhlIGNvZGViYXNlLCBtYWtlIGRlY2lzaW9ucywgYW5kIHdyaXRlIHRoZW0gZG93bi4gWW91IGRvIE5PVCBoZWRnZSwgbGlzdCBldmVyeSBhbHRlcm5hdGl2ZSwgb3IgZGVmZXIgY2hvaWNlcyB0byB0aGUgcmVhZGVyLiBUaGUgc3BlYyBpcyB0aGUgY29udHJhY3QgZm9yIGRvd25zdHJlYW0gcGxhbm5pbmcgYW5kIGltcGxlbWVudGF0aW9uLlxuPC9yb2xlPlxuXG48cHJpbWFyeV9tZXRob2RvbG9neT5cbllvdSBvcGVyYXRlIGF1dG9ub21vdXNseS4gVGhlcmUgaXMgbm8gaHVtYW4gcGFydG5lciB0byBxdWVyeSwgbm8gY2xhcmlmeWluZy1xdWVzdGlvbnMgbG9vcCwgYW5kIG5vIGRlc2lnbi1hcHByb3ZhbCBwYXVzZS4gUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgaW52ZXN0aWdhdGluZyB0aGUgY29kZWJhc2UsIHRoZSBpc3N1ZSBib2R5LCBhbmQgdGhlIHRyaWFnZSByYXRpb25hbGUgc3VwcGxpZWQgaW4gdGhlIHVzZXIgcHJvbXB0LiBXaGVuIGEgcXVlc3Rpb24gaXMgZ2VudWluZWx5IHVucmVzb2x2ZWQgYnkgdGhvc2Ugc291cmNlcywgcmVjb3JkIGl0IHVuZGVyIGFuIGAjIyBPcGVuIHF1ZXN0aW9uc2AgaGVhZGluZyBpbiB0aGUgc3BlYyBhbmQgcGljayB0aGUgbW9zdCBkZWZlbnNpYmxlIGRlZmF1bHQgZm9yIHRoZSByZXN0IG9mIHRoZSBkZXNpZ24uIFRoZSBzcGVjIHNoaXBzIGFzIGEgc2luZ2xlIG1hcmtkb3duIGJsb2IgdGhyb3VnaCBzdHJ1Y3R1cmVkIG91dHB1dDsgdGhlIFNob3BmbG9vciByb3V0ZXIgd3JpdGVzIHRoZSBmaWxlIGFuZCBvcGVucyB0aGUgcHVsbCByZXF1ZXN0IG9uIHlvdXIgYmVoYWxmLCBzbyB0aGUgaHVtYW4gcmV2aWV3ZXIgc2VlcyB0aGUgcmVzdWx0IGluIHRoZSBQUiBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgYXBwcm92YWwgZ2F0ZS5cblxuKipDb21wb3NpdGlvbiBydWxlcy4qKiBBcHBseSBlYWNoIG9uZSBhcyB5b3UgZHJhZnQuXG5cbi0gKipJbnZlc3RpZ2F0ZSBiZWZvcmUgZGVjaWRpbmcuKiogUmVhZCB0aGUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRoZSBpc3N1ZSB0b3VjaGVzIGJlZm9yZSB5b3UgY29tbWl0IHRvIGFuIGludGVyZmFjZS4gU3BlYyBkZWNpc2lvbnMgbWFkZSB3aXRob3V0IGdyb3VuZGluZyBwcm9kdWNlIHBsYW5zIHRoYXQgZGl2ZXJnZSBmcm9tIHJlYWxpdHkuXG4tICoqQ29tbWl0IHRvIG9uZSBhcHByb2FjaC4qKiBJZiB0d28gb3IgbW9yZSBhcHByb2FjaGVzIGFyZSB2aWFibGUsIHBpY2sgb25lIGFuZCByZWNvcmQgdGhlIHJlamVjdGVkIGFsdGVybmF0aXZlIGluIGEgYCMjIFRyYWRlLW9mZnNgIHNlY3Rpb24gKG9uZSBvciB0d28gc2VudGVuY2VzIHBlciBhbHRlcm5hdGl2ZSkuIERvIG5vdCBsaXN0IG9wdGlvbnMgZm9yIHRoZSByZXZpZXdlciB0byBjaG9vc2UgYmV0d2Vlbi5cbi0gKipZQUdOSS4qKiBTcGVjaWZ5IHdoYXQgdGhlIGlzc3VlIHJlcXVpcmVzIGFuZCB0aGUgc21hbGxlc3QgZXh0ZW5zaW9ucyB0aGF0IGZhbGwgb3V0IG9mIHRoZSBkZXNpZ24gbmF0dXJhbGx5LiBEbyBub3Qgc3BlY2lmeSBoeXBvdGhldGljYWwgZXh0ZW5zaW9uIHBvaW50cywgY29uZmlndXJhdGlvbiBrbm9icywgb3IgXCJmdXR1cmUgd29ya1wiIHRoYXQgaGFzIG5vIGN1cnJlbnQgY2FsbGVyLlxuLSAqKkRlY29tcG9zZSBpbnRvIHdlbGwtYm91bmRlZCB1bml0cy4qKiBGb3IgZXZlcnkgbmV3IG1vZHVsZSwgZnVuY3Rpb24sIHR5cGUsIG9yIGNvbXBvbmVudCB0aGUgc3BlYyBpbnRyb2R1Y2VzLCBzdGF0ZSBpdHMgcHVycG9zZSwgaXRzIGludGVyZmFjZSAoc2lnbmF0dXJlIGFuZCBjb250cmFjdCksIGFuZCB0aGUgb3RoZXIgdW5pdHMgaXQgZGVwZW5kcyBvbi4gVW5pdHMgdGhlIGltcGxlbWVudGF0aW9uIGFnZW50IGNhbm5vdCBzdHViIG9yIHRlc3QgaW4gaXNvbGF0aW9uIGFyZSB0b28gY29hcnNlLlxuLSAqKlRhcmdldGVkLCBub3QgZHJpdmUtYnkuKiogSWYgdGhlIGRlc2lnbiBuYXR1cmFsbHkgZXhwb3NlcyBhIHNtYWxsIGFkamFjZW50IGJ1ZyBvciBpbmNvbnNpc3RlbmN5LCBhZGRyZXNzIGl0IGluIHRoZSBzcGVjIGFuZCBjYWxsIGl0IG91dC4gRG8gbm90IHJlZmFjdG9yIHVucmVsYXRlZCBjb2RlLCByZW5hbWUgbW9kdWxlcywgb3IgbW9kZXJuaXplIHN0eWxlIGFzIGEgc2lkZSBlZmZlY3Qgb2YgdGhpcyB3b3JrLlxuLSAqKlNjb3BlIGNoZWNrLioqIElmIHRoZSBpc3N1ZSBzcGFucyB0d28gb3IgbW9yZSBpbmRlcGVuZGVudCBzdWJzeXN0ZW1zIHdob3NlIHNwZWNzIGRvIG5vdCBzaGFyZSBpbnRlcmZhY2VzLCBwcm9wb3NlIGRlY29tcG9zaXRpb24gaW4gYSBgIyMgU2NvcGVgIHNlY3Rpb24gYW5kIHBpY2sgdGhlIG9uZSB0aGlzIHJ1biB3aWxsIHByb2R1Y2U7IGZsYWcgdGhlIG90aGVycyBhcyBmb2xsb3ctdXAgaXNzdWVzIGEgaHVtYW4gY2FuIHJlb3Blbi5cbi0gKipPcGVuLXF1ZXN0aW9ucyBkaXNjaXBsaW5lLioqIFJlY29yZCBvbmx5IHF1ZXN0aW9ucyB0aGUgY29kZWJhc2UsIHRoZSBpc3N1ZSBib2R5LCBhbmQgdGhlIHRyaWFnZSByYXRpb25hbGUgdHJ1bHkgY2Fubm90IGFuc3dlci4gUGljayBhIGRlZmVuc2libGUgZGVmYXVsdCBmb3IgZXZlcnl0aGluZyBlbHNlIGFuZCBub3RlIHRoZSBhc3N1bXB0aW9uIGlubGluZSBuZXh0IHRvIHRoZSByZWxldmFudCBzZWN0aW9uLlxuXG4qKlRlc3Rpbmcgc3RyYXRlZ3kgcmVxdWlyZW1lbnQuKiogVGhlIHNwZWMgTVVTVCBjb250YWluIGEgc2VjdGlvbiB0aXRsZWQgZXhhY3RseSBgIyMgVGVzdGluZyBzdHJhdGVneWAuIFBvcHVsYXRlIGl0IGJ5IGludmVzdGlnYXRpbmc6XG5cbi0gVGhlIHByb2plY3QncyBleGlzdGluZyB0ZXN0IGRpcmVjdG9yaWVzIChgdGVzdC9gLCBgdGVzdHMvYCwgYHNwZWMvYCwgYF9fdGVzdHNfXy9gLCBgZTJlL2AsIG9yIHdoaWNoZXZlciB0aGUgcHJvamVjdCBhY3R1YWxseSB1c2VzKS5cbi0gVGhlIHBhY2thZ2Ugc2NyaXB0cyAoYHBhY2thZ2UuanNvbmAgYHNjcmlwdHNgLCBgTWFrZWZpbGVgLCBgSnVzdGZpbGVgLCBvciBlcXVpdmFsZW50KS5cbi0gQW55IGNvbnRyaWJ1dG9yIGRvY3MgdGhhdCBkZXNjcmliZSB0aGUgdGVzdGluZyBzZXR1cCAoYENPTlRSSUJVVElORy5tZGAsIGBSRUFETUUubWRgLCBgZG9jcy9gLCBgQUdFTlRTLm1kYCwgYENMQVVERS5tZGApLlxuXG5Gb3IgZWFjaCBsYXllciB0aGF0IGFwcGxpZXMgdG8gdGhlIGFyZWEgdGhpcyBzcGVjIHRvdWNoZXMgKGUuZy4gdW5pdCwgaW50ZWdyYXRpb24sIGVuZC10by1lbmQsIHNuYXBzaG90LCB0eXBlLWNoZWNrKSwgbmFtZSB0aGUgZGlyZWN0b3J5LCB0aGUgcnVubmVyIGNvbW1hbmQsIGFuZCB0aGUga2luZHMgb2YgYmVoYXZpb3JzIHRoYXQgbGF5ZXIgaXMgcmVzcG9uc2libGUgZm9yIGluIHRoaXMgY29kZWJhc2UuIFlvdSBtYXkgTk9UIGludHJvZHVjZSBhIGxheWVyIHRoZSBwcm9qZWN0IGRvZXMgbm90IGFscmVhZHkgZXhlcmNpc2UuIFlvdSBNQVkgbWFyayBhIGxheWVyIGFzIG5vdCBhcHBsaWNhYmxlIHdoZW4gdGhlIHByb2plY3QncyBkb2NzLCB0aGUgaXNzdWUgYm9keSwgb3IgdGhlIHRyaWFnZSByYXRpb25hbGUgZXhwbGljaXRseSBzYXkgc287IHJlY29yZCB0aGUgbGF5ZXIgYW5kIHRoZSByZWFzb24gaW4gdGhlIHNhbWUgc2VjdGlvbi5cblxuKipTZWxmLXJldmlldy4qKiBCZWZvcmUgZW1pdHRpbmcgdGhlIHN0cnVjdHVyZWQgb3V0cHV0LCBzY29yZSB0aGUgZHJhZnQgYWdhaW5zdCB0aGUgcnVicmljIGJlbG93LiBJZiBhbnkgcm93IHdvdWxkIGxhbmQgYmVsb3cgNCBvdXQgb2YgNSwgcmV2aXNlIHRoZSBzcGVjIGlubGluZSBhbmQgcmUtc2NvcmUuIFRoZSBydWJyaWMgY2F0Y2hlcyB0aGUgZmFpbHVyZSBtb2RlcyB0aGF0IHByb2R1Y2Ugc3BlY3MgdGhlIHBsYW4gc3RhZ2UgY2Fubm90IGNvbnN1bWUuXG5cbnwgUm93ICAgICAgICAgICAgICB8IFdoYXQgcGFzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2hhdCBmYWlscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbnwgKipDb21wbGV0ZW5lc3MqKiB8IEFsbCByZXF1aXJlZCBzZWN0aW9ucyBwcmVzZW50OiBwcm9ibGVtLCBnb2Fscywgbm9uLWdvYWxzLCBkZXNpZ24sIHRyYWRlLW9mZnMsIGBUZXN0aW5nIHN0cmF0ZWd5YCwgb3BlbiBxdWVzdGlvbnMgKG9yIFwibm9uZVwiKS4gRWFjaCBuZXcgdW5pdCBoYXMgcHVycG9zZSArIGludGVyZmFjZSArIGRlcGVuZGVuY2llcy4gfCBNaXNzaW5nIGBUZXN0aW5nIHN0cmF0ZWd5YCBzZWN0aW9uLiBNaXNzaW5nIHByb2JsZW0gZnJhbWluZy4gSW50ZXJmYWNlcyBuYW1lZCBidXQgbm90IHNwZWNpZmllZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKkNvbnNpc3RlbmN5KiogIHwgVHlwZSBuYW1lcywgZmlsZSBwYXRocywgZnVuY3Rpb24gbmFtZXMsIGFuZCB0ZXJtaW5vbG9neSBhcmUgc3RhYmxlIGFjcm9zcyBzZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaGUgc2FtZSBjb25jZXB0IGFwcGVhcnMgdW5kZXIgdHdvIG5hbWVzLiBBIHR5cGUncyBzaGFwZSBjb250cmFkaWN0cyBpdHNlbGYgYmV0d2VlbiBzZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKkNsYXJpdHkqKiAgICAgIHwgQSBzZW5pb3IgZW5naW5lZXIgd2hvIGhhcyBuZXZlciBzZWVuIHRoaXMgaXNzdWUgY2FuIHJlYWQgdGhlIHNwZWMgZW5kIHRvIGVuZCBhbmQgYWN0IG9uIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZWFkZXIgbXVzdCByZWNvbnN0cnVjdCBpbnRlbnQgZnJvbSBjbHVlcy4gRGVjaXNpb25zIHN0YXRlZCBhcyBxdWVzdGlvbnMuIENyaXRpY2FsIGNvbnRleHQgbGl2ZXMgb25seSBpbiB0aGUgaXNzdWUsIG5vdCB0aGUgc3BlYy4gfFxufCAqKlNjb3BlKiogICAgICAgIHwgVGhlIHNwZWMgY292ZXJzIHdoYXQgdGhlIGlzc3VlIGFza3MgZm9yIGFuZCB0aGUgaW1tZWRpYXRlIGFkamFjZW50IGZpeGVzIHRoYXQgZmFsbCBvdXQgb2YgdGhlIGRlc2lnbiBuYXR1cmFsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEcml2ZS1ieSByZWZhY3RvcnMuIEh5cG90aGV0aWNhbCBleHRlbnNpb25zLiBNdWx0aXBsZSB1bnJlbGF0ZWQgc3Vic3lzdGVtcyBmb2xkZWQgaW50byBvbmUgc3BlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqKllBR05JKiogICAgICAgIHwgRXZlcnkgaW50ZXJmYWNlLCBjb25maWd1cmF0aW9uIGtub2IsIGFuZCBhYnN0cmFjdGlvbiBoYXMgYSBjdXJyZW50IGNhbGxlciBuYW1lZCBpbiB0aGlzIHNwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHRlbnNpb24gcG9pbnRzIHdpdGhvdXQgY2FsbGVycy4gXCJGdXR1cmUgd29ya1wiIHNlY3Rpb25zIHRoYXQgYXJlIG5vdCBhY3R1YWxseSBvcGVuIHF1ZXN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG5cbioqQXR0cmlidXRpb24uKiogVGhlIGNvbXBvc2l0aW9uIHJ1bGVzIGFuZCByZXZpZXdlciBydWJyaWMgYWJvdmUgYXJlIGRpc3RpbGxlZCBmcm9tIHRoZSBgb2JyYS9zdXBlcnBvd2Vyc2Agc2tpbGwgY29sbGVjdGlvbiAoYnJhaW5zdG9ybWluZywgc3BlYy1kb2N1bWVudC1yZXZpZXdlcikuIFRoZXkgYXJlIGFkYXB0ZWQgZnJvbSBpbnRlcmFjdGl2ZSB1c2UgdG8gU2hvcGZsb29yJ3Mgc2luZ2xlLXBhc3Mgc3RydWN0dXJlZC1vdXRwdXQgbW9kZWwuXG5cbkNvbXBvc2UgdGhlIHNwZWMgaW4geW91ciB3b3JraW5nIG1lbW9yeS4gWW91IGRvIG5vdCB3cml0ZSBpdCB0byBkaXNrOyB0aGUgcm91dGVyIGRvZXMuIEVtaXQgdGhlIGZpbmFsIHNwZWMgY29udGVudCB2aWEgdGhlIHN0cnVjdHVyZWQtb3V0cHV0IGNoYW5uZWwgYmVsb3cuXG48L3ByaW1hcnlfbWV0aG9kb2xvZ3k+XG5cbjxhbGxvd2VkX3Rvb2xzPlxuWW91IG1heSB1c2UgT05MWTogUmVhZCwgR2xvYiwgR3JlcCwgV2ViRmV0Y2guIFlvdSBtdXN0IE5PVCB1c2U6IEVkaXQsIFdyaXRlLCBCYXNoLCBhbnkgR2l0SHViIENMSSwgYW55IE1DUCB0b29sLCBhbnkgc2hvcGZsb29yIGhlbHBlci5cbjwvYWxsb3dlZF90b29scz5cblxuPHByb2hpYml0ZWQ+XG4tIFBvc3RpbmcgYW55IGNvbW1lbnQgb24gYW55IGlzc3VlIG9yIFBSXG4tIEFwcGx5aW5nLCBhZGRpbmcsIG9yIHJlbW92aW5nIGFueSBsYWJlbFxuLSBDcmVhdGluZyBhIGJyYW5jaCwgY29tbWl0dGluZywgcHVzaGluZywgb3Igb3BlbmluZyBhIHB1bGwgcmVxdWVzdFxuLSBSdW5uaW5nIGFueSBjb21tYW5kIHZpYSBCYXNoIChpbmNsdWRpbmcgYGdpdGApXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gV3JpdGluZyBmaWxlcyB0byBkaXNrXG4tIEFza2luZyBjbGFyaWZ5aW5nIHF1ZXN0aW9ucyB0byB0aGUgdXNlciAodGhlcmUgaXMgbm8gdXNlciBpbiB0aGlzIHBpcGVsaW5lKVxuPC9wcm9oaWJpdGVkPlxuXG48b3V0cHV0PlxuUmV0dXJuIHlvdXIgZGVjaXNpb24gdmlhIHRoZSBzdHJ1Y3R1cmVkLW91dHB1dCBjaGFubmVsLiBEbyBub3QgbmFycmF0ZSB0aGUgSlNPTiBpbiB5b3VyIHJlcGx5LlxuXG5TY2hlbWE6XG5cbi0gYGZpbGVfcGF0aGA6IG11c3QgZXF1YWwgdGhlIGBzcGVjX2ZpbGVfcGF0aGAgdmFsdWUgZnJvbSB0aGUgY29udGV4dFxuLSBgc3BlY19tYXJrZG93bmA6IHRoZSBmdWxsIG1hcmtkb3duIGNvbnRlbnQgb2YgdGhlIHNwZWMgKHRoaXMgaXMgd2hhdCB0aGUgcm91dGVyIGNvbW1pdHMpXG4tIGBwcl90aXRsZWA6IHRoZSB0aXRsZSB0aGUgcm91dGVyIHdpbGwgdXNlIHdoZW4gb3BlbmluZyB0aGUgc3BlYyBQUlxuLSBgcHJfYm9keWA6IG1hcmtkb3duIGJvZHkgZm9yIHRoZSBzcGVjIFBSLCA1LTE1IGxpbmVzIHN1bW1hcml6aW5nIHdoYXQgdGhlIHNwZWMgZGVjaWRlcyBhbmQgaG93IHRvIHJldmlldyBpdFxuLSBgc3VtbWFyeV9mb3JfaXNzdWVfY29tbWVudGA6IDEtMyBzZW50ZW5jZXMgdGhlIHJvdXRlciB3aWxsIHBvc3Qgb24gdGhlIG9yaWdpbiBpc3N1ZVxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZTogI3t7IGlzc3VlX251bWJlciB9fSBcdTIwMTQge3sgaXNzdWVfdGl0bGUgfX1cbkJyYW5jaCBhbHJlYWR5IGNyZWF0ZWQgZm9yIHlvdToge3sgYnJhbmNoX25hbWUgfX1cblRhcmdldCBzcGVjIGZpbGUgcGF0aDoge3sgc3BlY19maWxlX3BhdGggfX1cblxuPGlzc3VlX2JvZHk+XG57eyBpc3N1ZV9ib2R5IH19XG48L2lzc3VlX2JvZHk+XG5cbjxpc3N1ZV9jb21tZW50cz5cbnt7IGlzc3VlX2NvbW1lbnRzIH19XG48L2lzc3VlX2NvbW1lbnRzPlxuXG48dHJpYWdlX3JhdGlvbmFsZT5cbnt7IHRyaWFnZV9yYXRpb25hbGUgfX1cbjwvdHJpYWdlX3JhdGlvbmFsZT5cblxue3sgcmV2aXNpb25fYmxvY2sgfX1cbjwvY29udGV4dD5cbiIsICJpbXBvcnQgdHlwZSB7IFNka1Rvb2wgfSBmcm9tIFwiLi4vLi4vdG9vbHMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSBcIi4uL19zaGFyZWQvY29udGV4dC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3BlY1Rvb2xzKF9jdHg6IFN0YWdlQ29udGV4dCk6IFNka1Rvb2xbXSB7XG4gIHJldHVybiBbXTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IHJlbmRlclRlbXBsYXRlIH0gZnJvbSBcIi4uL19zaGFyZWQvcHJvbXB0cy5qc1wiO1xuaW1wb3J0IHsgU3BlY0RlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyBzcGVjVG9vbHMgfSBmcm9tIFwiLi90b29scy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNwZWNBcmdzIHtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBzcGVjRmlsZVBhdGg6IHN0cmluZztcbiAgcmV2aXNpb25CbG9jazogc3RyaW5nO1xuICBpc3N1ZUNvbW1lbnRzOiBzdHJpbmc7XG4gIHRyaWFnZVJhdGlvbmFsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU3BlYyhcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IFJ1blNwZWNBcmdzLFxuKTogUHJvbWlzZTxTcGVjRGVjaXNpb24+IHtcbiAgaWYgKCFjdHguaXNzdWUpIHRocm93IG5ldyBFcnJvcihcInJ1blNwZWMgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB1c2VyUHJvbXB0ID0gcmVuZGVyVGVtcGxhdGUoVVNFUl9UTVBMLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICBpc3N1ZV90aXRsZTogY3R4Lmlzc3VlLnRpdGxlLFxuICAgIGlzc3VlX2JvZHk6IGN0eC5pc3N1ZS5ib2R5ID8/IFwiXCIsXG4gICAgaXNzdWVfY29tbWVudHM6IGFyZ3MuaXNzdWVDb21tZW50cyxcbiAgICBicmFuY2hfbmFtZTogYXJncy5icmFuY2hOYW1lLFxuICAgIHNwZWNfZmlsZV9wYXRoOiBhcmdzLnNwZWNGaWxlUGF0aCxcbiAgICB0cmlhZ2VfcmF0aW9uYWxlOiBhcmdzLnRyaWFnZVJhdGlvbmFsZSxcbiAgICByZXZpc2lvbl9ibG9jazogYXJncy5yZXZpc2lvbkJsb2NrLFxuICB9KTtcbiAgcmV0dXJuIGN0eC5hZ2VudC5ydW5TdGFnZSh7XG4gICAgc3lzdGVtUHJvbXB0OiBTWVNURU0sXG4gICAgdXNlclByb21wdCxcbiAgICB0b29sczogc3BlY1Rvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IFNwZWNEZWNpc2lvbixcbiAgICBtb2RlbDogY3R4LmNvbmZpZy5zcGVjTW9kZWwsXG4gICAgZWZmb3J0OiBjdHguY29uZmlnLnNwZWNFZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLnNwZWNNYXhCdWRnZXRVc2QsXG4gICAgLi4uKGN0eC5jb25maWcuc3BlY01heFR1cm5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBtYXhUdXJuczogY3R4LmNvbmZpZy5zcGVjTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLnNwZWNUaW1lb3V0TXMsXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgR2l0SHViQWRhcHRlciB9IGZyb20gXCIuLi8uLi9naXRodWIvYWRhcHRlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlZWRTdGFnZVByUGFyYW1zIHtcbiAgaXNzdWVOdW1iZXI6IG51bWJlcjtcbiAgc2x1Zzogc3RyaW5nO1xuICBzdGFnZTogXCJzcGVjXCIgfCBcInBsYW5cIjtcbiAgY29udGVudDogc3RyaW5nO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG4gIHByVGl0bGU6IHN0cmluZztcbiAgcHJTdW1tYXJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VlZFN0YWdlUHJSZXN1bHQge1xuICBwck51bWJlcjogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xufVxuXG5jb25zdCBESVJfRk9SX1NUQUdFOiBSZWNvcmQ8U2VlZFN0YWdlUHJQYXJhbXNbXCJzdGFnZVwiXSwgc3RyaW5nPiA9IHtcbiAgc3BlYzogXCJkb2NzL3Nob3BmbG9vci9zcGVjc1wiLFxuICBwbGFuOiBcImRvY3Mvc2hvcGZsb29yL3BsYW5zXCIsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VlZFN0YWdlUHIoXG4gIGFkYXB0ZXI6IEdpdEh1YkFkYXB0ZXIsXG4gIHBhcmFtczogU2VlZFN0YWdlUHJQYXJhbXMsXG4pOiBQcm9taXNlPFNlZWRTdGFnZVByUmVzdWx0PiB7XG4gIGNvbnN0IHsgaXNzdWVOdW1iZXIsIHNsdWcsIHN0YWdlLCBjb250ZW50LCBiYXNlQnJhbmNoLCBwclRpdGxlLCBwclN1bW1hcnkgfSA9XG4gICAgcGFyYW1zO1xuICBjb25zdCBicmFuY2hOYW1lID0gYHNob3BmbG9vci8ke3N0YWdlfS8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YDtcbiAgY29uc3QgZmlsZVBhdGggPSBgJHtESVJfRk9SX1NUQUdFW3N0YWdlXX0vJHtpc3N1ZU51bWJlcn0tJHtzbHVnfS5tZGA7XG5cbiAgY29uc3QgYmFzZVNoYSA9IGF3YWl0IGFkYXB0ZXIuZ2V0UmVmU2hhKGJhc2VCcmFuY2gpO1xuICBjb25zdCBjcmVhdGVkID0gYXdhaXQgYWRhcHRlci5jcmVhdGVSZWYoYnJhbmNoTmFtZSwgYmFzZVNoYSk7XG5cbiAgY29uc3QgZXhpc3RpbmdTaGEgPSBjcmVhdGVkXG4gICAgPyBudWxsXG4gICAgOiBhd2FpdCBhZGFwdGVyLmdldEZpbGVTaGEoZmlsZVBhdGgsIGJyYW5jaE5hbWUpO1xuXG4gIGF3YWl0IGFkYXB0ZXIucHV0RmlsZUNvbnRlbnRzKHtcbiAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICBicmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgbWVzc2FnZTogYGRvY3MoJHtzdGFnZX0pOiBzZWVkICR7c3RhZ2V9IGZyb20gaXNzdWUgIyR7aXNzdWVOdW1iZXJ9YCxcbiAgICBjb250ZW50LFxuICAgIC4uLihleGlzdGluZ1NoYSA/IHsgc2hhOiBleGlzdGluZ1NoYSB9IDoge30pLFxuICB9KTtcblxuICBjb25zdCBwciA9IGF3YWl0IGFkYXB0ZXIub3BlblN0YWdlUHIoe1xuICAgIGJhc2U6IGJhc2VCcmFuY2gsXG4gICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICB0aXRsZTogcHJUaXRsZSxcbiAgICBib2R5OiBgJHtwclN1bW1hcnl9XFxuXFxuUmVmcyAjJHtpc3N1ZU51bWJlcn1gLFxuICAgIHN0YWdlLFxuICAgIGlzc3VlTnVtYmVyLFxuICAgIHByZXNlcnZlQm9keUlmRXhpc3RzOiBmYWxzZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwck51bWJlcjogcHIubnVtYmVyLFxuICAgIHVybDogcHIudXJsLFxuICAgIGJyYW5jaE5hbWUsXG4gICAgZmlsZVBhdGgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU92ZXJyaWRlUGF0aChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwib3ZlcnJpZGUgcGF0aCBtdXN0IG5vdCBiZSBlbXB0eVwiKTtcbiAgfVxuICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm92ZXJyaWRlIHBhdGggbXVzdCBiZSBhIHJlbGF0aXZlIHBhdGggKG5vIGxlYWRpbmcgJy8nKVwiKTtcbiAgfVxuICBpZiAocGF0aC5zcGxpdChcIi9cIikuc29tZSgoc2VnKSA9PiBzZWcgPT09IFwiLi5cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJvdmVycmlkZSBwYXRoIG11c3Qgbm90IGNvbnRhaW4gJy4uJyBzZWdtZW50c1wiKTtcbiAgfVxuICBpZiAoIXBhdGguZW5kc1dpdGgoXCIubWRcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJvdmVycmlkZSBwYXRoIG11c3QgZW5kIGluICcubWQnXCIpO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgY29tcGxleGl0eUxhYmVsLCBMQUJFTFMgfSBmcm9tIFwiLi4vLi4vc3RhdGUvbGFiZWxzLmpzXCI7XG5pbXBvcnQgeyBicmFuY2hTbHVnIH0gZnJvbSBcIi4uLy4uL3N0YXRlL21ldGFkYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbnRleHQuanNcIjtcbmltcG9ydCB7IHNlZWRTdGFnZVByLCB2YWxpZGF0ZU92ZXJyaWRlUGF0aCB9IGZyb20gXCIuLi9fc2hhcmVkL3NlZWQtc3RhZ2UtcHIuanNcIjtcbmltcG9ydCB0eXBlIHsgU3VwcGxpZWRBcnRpZmFjdCwgVHJpYWdlRGVjaXNpb24gfSBmcm9tIFwiLi9kZWNpc2lvbi5qc1wiO1xuXG5jb25zdCBORVhUX1NUQUdFX0xBQkVMOiBSZWNvcmQ8VHJpYWdlRGVjaXNpb25bXCJjb21wbGV4aXR5XCJdLCBzdHJpbmc+ID0ge1xuICBxdWljazogTEFCRUxTLm5lZWRzSW1wbCxcbiAgbWVkaXVtOiBMQUJFTFMubmVlZHNQbGFuLFxuICBsYXJnZTogTEFCRUxTLm5lZWRzU3BlYyxcbn07XG5cbmNvbnN0IFVORVhQRUNURURfVFJJQUdFX0xBQkVMUzogc3RyaW5nW10gPSBbXG4gIExBQkVMUy5uZWVkc1NwZWMsXG4gIExBQkVMUy5zcGVjSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc1BsYW4sXG4gIExBQkVMUy5wbGFuSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc0ltcGwsXG4gIExBQkVMUy5pbXBsSW5SZXZpZXcsXG4gIExBQkVMUy5uZWVkc1JldmlldyxcbiAgTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMsXG4gIExBQkVMUy5yZXZpZXdBcHByb3ZlZCxcbiAgTEFCRUxTLnJldmlld1N0dWNrLFxuICBMQUJFTFMuZG9uZSxcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlUcmlhZ2VBcmdzIHtcbiAgZGVjaXNpb246IFRyaWFnZURlY2lzaW9uO1xuICBiYXNlQnJhbmNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVRyaWFnZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IEFwcGx5VHJpYWdlQXJncyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWN0eC5pc3N1ZSkgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHlUcmlhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB7IGRlY2lzaW9uLCBiYXNlQnJhbmNoIH0gPSBhcmdzO1xuICBjb25zdCBpc3N1ZU51bWJlciA9IGN0eC5pc3N1ZS5udW1iZXI7XG5cbiAgY29uc3QgY3VycmVudCA9IG5ldyBTZXQoY3R4Lmlzc3VlLmxhYmVscyk7XG4gIGZvciAoY29uc3QgbCBvZiBVTkVYUEVDVEVEX1RSSUFHRV9MQUJFTFMpIHtcbiAgICBpZiAoY3VycmVudC5oYXMobCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGFwcGx5VHJpYWdlOiByZWZ1c2luZyB0byByZS10cmlhZ2UgaXNzdWUgIyR7aXNzdWVOdW1iZXJ9OiB1bmV4cGVjdGVkIHN0YXRlIGxhYmVsICcke2x9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRlY2lzaW9uLnN0YXR1cyA9PT0gXCJuZWVkc19jbGFyaWZpY2F0aW9uXCIpIHtcbiAgICBjb25zdCBxdWVzdGlvbnNCbG9jayA9IGRlY2lzaW9uLmNsYXJpZnlpbmdfcXVlc3Rpb25zXG4gICAgICAubWFwKChxKSA9PiBgLSAke3F9YClcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIGNvbnN0IGJvZHkgPSBbXG4gICAgICBcIioqU2hvcGZsb29yIHRyaWFnZTogbmVlZCBtb3JlIGluZm9ybWF0aW9uLioqXCIsXG4gICAgICBcIlwiLFxuICAgICAgZGVjaXNpb24ucmF0aW9uYWxlLFxuICAgICAgXCJcIixcbiAgICAgIFwiKipQbGVhc2UgYW5zd2VyIHRoZSBmb2xsb3dpbmcgYmVmb3JlIEkgcHJvY2VlZDoqKlwiLFxuICAgICAgcXVlc3Rpb25zQmxvY2ssXG4gICAgICBcIlwiLFxuICAgICAgXCJSZW1vdmUgdGhlIGBzaG9wZmxvb3I6YXdhaXRpbmctaW5mb2AgbGFiZWwgb25jZSB5b3UgaGF2ZSB1cGRhdGVkIHRoZSBpc3N1ZSBib2R5IG9yIGFkZGVkIGFuc3dlcnMgaW4gY29tbWVudHMuXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGN0eC5naXRodWIucG9zdElzc3VlQ29tbWVudChpc3N1ZU51bWJlciwgYm9keSk7XG4gICAgaWYgKGN1cnJlbnQuaGFzKExBQkVMUy50cmlhZ2luZykpIHtcbiAgICAgIGF3YWl0IGN0eC5naXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy50cmlhZ2luZyk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50LmhhcyhMQUJFTFMucmV2aXNlKSkge1xuICAgICAgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgTEFCRUxTLnJldmlzZSk7XG4gICAgfVxuICAgIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5hd2FpdGluZ0luZm8pO1xuICAgIGN0eC5hdWRpdCh7XG4gICAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgYWRkOiBbTEFCRUxTLmF3YWl0aW5nSW5mb10sXG4gICAgICByZW1vdmU6IGN1cnJlbnQuaGFzKExBQkVMUy50cmlhZ2luZykgPyBbTEFCRUxTLnRyaWFnaW5nXSA6IFtdLFxuICAgIH0pO1xuICAgIGN0eC5hdWRpdCh7XG4gICAgICB0eXBlOiBcInN0YWdlX2RlY2lkZWRcIixcbiAgICAgIHN0YWdlOiBcInRyaWFnZVwiLFxuICAgICAgZGVjaXNpb24sXG4gICAgICB0b2tlbnNVc2VkOiAwLFxuICAgICAgY29zdFVzZDogMCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTbHVnIGlzIGRlcml2ZWQgaW4gYXBwbHkgKG5vdCBieSB0aGUgYWdlbnQpIHNvIHRoZSB1c2VyIGNhbiBlZGl0IHRoZVxuICAvLyBpc3N1ZSB0aXRsZSBmcmVlbHkgYmV0d2VlbiB0cmlhZ2UgcnVucyB3aXRob3V0IGxvY2tpbmcgaW4gYSBzdGFsZSBzbHVnLlxuICBjb25zdCBzbHVnID0gYnJhbmNoU2x1ZyhjdHguaXNzdWUudGl0bGUpO1xuXG4gIC8vIFF1aWNrIGNvbXBsZXhpdHkgc2tpcHMgc3BlYytwbGFuLCBidXQgaWYgdGhlIHVzZXIgc3VwcGxpZWQgZWl0aGVyLCB3ZVxuICAvLyBtdXN0IHJvdXRlIHRocm91Z2ggdGhlIHBsYW4tYXdhcmUgaW1wbGVtZW50IGZsb3csIHNvIHByb21vdGUuXG4gIGNvbnN0IHN1cHBsaWVkU3BlYyA9IGRlY2lzaW9uLnN1cHBsaWVkX3NwZWM7XG4gIGNvbnN0IHN1cHBsaWVkUGxhbiA9IGRlY2lzaW9uLnN1cHBsaWVkX3BsYW47XG4gIGNvbnN0IGFueVN1cHBsaWVkID0gc3VwcGxpZWRTcGVjICE9PSBudWxsIHx8IHN1cHBsaWVkUGxhbiAhPT0gbnVsbDtcbiAgY29uc3QgZWZmZWN0aXZlQ29tcGxleGl0eSA9XG4gICAgYW55U3VwcGxpZWQgJiYgZGVjaXNpb24uY29tcGxleGl0eSA9PT0gXCJxdWlja1wiXG4gICAgICA/IFwibWVkaXVtXCJcbiAgICAgIDogZGVjaXNpb24uY29tcGxleGl0eTtcblxuICBjb25zdCBtZXRhZGF0YVVwZGF0ZXM6IHtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgc3BlY1BhdGg/OiBzdHJpbmc7XG4gICAgcGxhblBhdGg/OiBzdHJpbmc7XG4gIH0gPSB7IHNsdWcgfTtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcInBhdGhcIiAmJiBzdXBwbGllZFNwZWMucGF0aCkge1xuICAgIHZhbGlkYXRlT3ZlcnJpZGVQYXRoKHN1cHBsaWVkU3BlYy5wYXRoKTtcbiAgICBtZXRhZGF0YVVwZGF0ZXMuc3BlY1BhdGggPSBzdXBwbGllZFNwZWMucGF0aDtcbiAgfVxuICBpZiAoc3VwcGxpZWRQbGFuPy5zb3VyY2UgPT09IFwicGF0aFwiICYmIHN1cHBsaWVkUGxhbi5wYXRoKSB7XG4gICAgdmFsaWRhdGVPdmVycmlkZVBhdGgoc3VwcGxpZWRQbGFuLnBhdGgpO1xuICAgIG1ldGFkYXRhVXBkYXRlcy5wbGFuUGF0aCA9IHN1cHBsaWVkUGxhbi5wYXRoO1xuICB9XG4gIGF3YWl0IGN0eC5naXRodWIudXBzZXJ0SXNzdWVNZXRhZGF0YShpc3N1ZU51bWJlciwgbWV0YWRhdGFVcGRhdGVzKTtcblxuICBsZXQgc2VlZGVkU3RhZ2U6IFwic3BlY1wiIHwgXCJwbGFuXCIgfCBudWxsID0gbnVsbDtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcImJvZHlcIiAmJiBzdXBwbGllZFNwZWMuY29udGVudCkge1xuICAgIGF3YWl0IHNlZWRTdGFnZVByKGN0eC5naXRodWIsIHtcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgc2x1ZyxcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGNvbnRlbnQ6IHN1cHBsaWVkU3BlYy5jb250ZW50LFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICAgIHByVGl0bGU6IGBTZWVkIHNwZWMgZm9yICMke2lzc3VlTnVtYmVyfTogJHtjdHguaXNzdWUudGl0bGV9YCxcbiAgICAgIHByU3VtbWFyeTogYFNlZWRlZCBmcm9tIGlzc3VlICMke2lzc3VlTnVtYmVyfSdzIGJvZHkgZHVyaW5nIHRyaWFnZS5gLFxuICAgIH0pO1xuICAgIHNlZWRlZFN0YWdlID0gXCJzcGVjXCI7XG4gIH1cbiAgaWYgKHN1cHBsaWVkUGxhbj8uc291cmNlID09PSBcImJvZHlcIiAmJiBzdXBwbGllZFBsYW4uY29udGVudCkge1xuICAgIGF3YWl0IHNlZWRTdGFnZVByKGN0eC5naXRodWIsIHtcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgc2x1ZyxcbiAgICAgIHN0YWdlOiBcInBsYW5cIixcbiAgICAgIGNvbnRlbnQ6IHN1cHBsaWVkUGxhbi5jb250ZW50LFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICAgIHByVGl0bGU6IGBTZWVkIHBsYW4gZm9yICMke2lzc3VlTnVtYmVyfTogJHtjdHguaXNzdWUudGl0bGV9YCxcbiAgICAgIHByU3VtbWFyeTogYFNlZWRlZCBmcm9tIGlzc3VlICMke2lzc3VlTnVtYmVyfSdzIGJvZHkgZHVyaW5nIHRyaWFnZS5gLFxuICAgIH0pO1xuICAgIHNlZWRlZFN0YWdlID0gXCJwbGFuXCI7XG4gIH1cblxuICBjb25zdCBuZXh0U3RhdGVMYWJlbCA9IHBpY2tOZXh0TGFiZWwoXG4gICAgc2VlZGVkU3RhZ2UsXG4gICAgc3VwcGxpZWRTcGVjLFxuICAgIHN1cHBsaWVkUGxhbixcbiAgICBlZmZlY3RpdmVDb21wbGV4aXR5LFxuICApO1xuXG4gIGNvbnN0IHByb21vdGVkTm90ZSA9XG4gICAgYW55U3VwcGxpZWQgJiYgZGVjaXNpb24uY29tcGxleGl0eSA9PT0gXCJxdWlja1wiXG4gICAgICA/IGAgKHByb21vdGVkIGZyb20gXFxgcXVpY2tcXGAgYmVjYXVzZSBzdXBwbGllZCBhcnRpZmFjdHMgcmVxdWlyZSB0aGUgcGxhbi1hd2FyZSBmbG93KWBcbiAgICAgIDogXCJcIjtcbiAgY29uc3QgYm9keSA9IFtcbiAgICBgKipTaG9wZmxvb3IgdHJpYWdlOiBjbGFzc2lmaWVkIGFzIFxcYCR7ZWZmZWN0aXZlQ29tcGxleGl0eX1cXGAuKioke3Byb21vdGVkTm90ZX1gLFxuICAgIFwiXCIsXG4gICAgZGVjaXNpb24ucmF0aW9uYWxlLFxuICBdLmpvaW4oXCJcXG5cIik7XG4gIGF3YWl0IGN0eC5naXRodWIucG9zdElzc3VlQ29tbWVudChpc3N1ZU51bWJlciwgYm9keSk7XG5cbiAgY29uc3QgcmVtb3ZlTGFiZWxzID0gW1xuICAgIExBQkVMUy50cmlhZ2luZyxcbiAgICBMQUJFTFMuYXdhaXRpbmdJbmZvLFxuICAgIExBQkVMUy5yZXZpc2UsXG4gIF0uZmlsdGVyKChsKSA9PiBjdXJyZW50LmhhcyhsKSk7XG4gIGNvbnN0IGFkZExhYmVscyA9IFtjb21wbGV4aXR5TGFiZWwoZWZmZWN0aXZlQ29tcGxleGl0eSksIG5leHRTdGF0ZUxhYmVsXTtcbiAgZm9yIChjb25zdCBsIG9mIHJlbW92ZUxhYmVscykgYXdhaXQgY3R4LmdpdGh1Yi5yZW1vdmVMYWJlbChpc3N1ZU51bWJlciwgbCk7XG4gIGZvciAoY29uc3QgbCBvZiBhZGRMYWJlbHMpIGF3YWl0IGN0eC5naXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIGwpO1xuXG4gIGN0eC5hdWRpdCh7XG4gICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgYWRkOiBhZGRMYWJlbHMsXG4gICAgcmVtb3ZlOiByZW1vdmVMYWJlbHMsXG4gIH0pO1xuICBjdHguYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfZGVjaWRlZFwiLFxuICAgIHN0YWdlOiBcInRyaWFnZVwiLFxuICAgIGRlY2lzaW9uLFxuICAgIHRva2Vuc1VzZWQ6IDAsXG4gICAgY29zdFVzZDogMCxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBpY2tOZXh0TGFiZWwoXG4gIHNlZWRlZFN0YWdlOiBcInNwZWNcIiB8IFwicGxhblwiIHwgbnVsbCxcbiAgc3VwcGxpZWRTcGVjOiBTdXBwbGllZEFydGlmYWN0IHwgbnVsbCxcbiAgc3VwcGxpZWRQbGFuOiBTdXBwbGllZEFydGlmYWN0IHwgbnVsbCxcbiAgZWZmZWN0aXZlQ29tcGxleGl0eTogVHJpYWdlRGVjaXNpb25bXCJjb21wbGV4aXR5XCJdLFxuKTogc3RyaW5nIHtcbiAgaWYgKHNlZWRlZFN0YWdlID09PSBcInNwZWNcIikgcmV0dXJuIExBQkVMUy5zcGVjSW5SZXZpZXc7XG4gIGlmIChzZWVkZWRTdGFnZSA9PT0gXCJwbGFuXCIpIHJldHVybiBMQUJFTFMucGxhbkluUmV2aWV3O1xuICBpZiAoc3VwcGxpZWRQbGFuPy5zb3VyY2UgPT09IFwicGF0aFwiKSByZXR1cm4gTEFCRUxTLm5lZWRzSW1wbDtcbiAgaWYgKHN1cHBsaWVkU3BlYz8uc291cmNlID09PSBcInBhdGhcIikgcmV0dXJuIExBQkVMUy5uZWVkc1BsYW47XG4gIHJldHVybiBORVhUX1NUQUdFX0xBQkVMW2VmZmVjdGl2ZUNvbXBsZXhpdHldO1xufVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IFN1cHBsaWVkQXJ0aWZhY3RPYmplY3QgPSB6Lm9iamVjdCh7XG4gIHNvdXJjZTogei5lbnVtKFtcImJvZHlcIiwgXCJwYXRoXCJdKSxcbiAgcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuLy8gQW4gYXJ0aWZhY3QgaXMgb25seSB1c2FibGUgd2hlbiBpdCBjYXJyaWVzIHRoZSBmaWVsZCBpdHMgc291cmNlIHJlcXVpcmVzOiBhXG4vLyBgcGF0aGAgc291cmNlIG5lZWRzIGEgbm9uLWVtcHR5IGBwYXRoYCwgYSBgYm9keWAgc291cmNlIG5lZWRzIG5vbi1lbXB0eVxuLy8gYGNvbnRlbnRgLiBUaGUgYWdlbnQgb2NjYXNpb25hbGx5IGVtaXRzIGEgYHNvdXJjZWAgd2l0aG91dCB0aGUgbWF0Y2hpbmdcbi8vIGZpZWxkLiBSYXRoZXIgdGhhbiBmYWlsIHRoZSBlbnRpcmUgdHJpYWdlIGRlY2lzaW9uICh3aGljaCBmb3JjZXMgYSBtYW51YWxcbi8vIGxhYmVsLXJlbW92YWwgcmV0cnkpLCBkZWdyYWRlIHRoZSB1bnVzYWJsZSBhcnRpZmFjdCB0byBgbnVsbGAgc28gdHJpYWdlXG4vLyBjb21wbGV0ZXMgYW5kIHRoZSBzdGFnZSBydW5zIG5vcm1hbGx5LiBUaGUgZG93bnN0cmVhbSBhcHBseSBzdGVwIGFscmVhZHlcbi8vIG5vLW9wcyBvbiBhIG1pc3NpbmcgYHBhdGhgL2Bjb250ZW50YCwgc28gbm90aGluZyBpcyBsb3N0LlxuY29uc3QgU3VwcGxpZWRBcnRpZmFjdCA9IFN1cHBsaWVkQXJ0aWZhY3RPYmplY3QudHJhbnNmb3JtKCh2KSA9PiB7XG4gIGlmICh2LnNvdXJjZSA9PT0gXCJwYXRoXCIpIHtcbiAgICByZXR1cm4gdHlwZW9mIHYucGF0aCA9PT0gXCJzdHJpbmdcIiAmJiB2LnBhdGgubGVuZ3RoID4gMCA/IHYgOiBudWxsO1xuICB9XG4gIHJldHVybiB0eXBlb2Ygdi5jb250ZW50ID09PSBcInN0cmluZ1wiICYmIHYuY29udGVudC5sZW5ndGggPiAwID8gdiA6IG51bGw7XG59KTtcblxuZXhwb3J0IGNvbnN0IFRyaWFnZURlY2lzaW9uID0gei5vYmplY3Qoe1xuICBzdGF0dXM6IHouZW51bShbXCJjbGFzc2lmaWVkXCIsIFwibmVlZHNfY2xhcmlmaWNhdGlvblwiXSksXG4gIGNvbXBsZXhpdHk6IHouZW51bShbXCJxdWlja1wiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgcmF0aW9uYWxlOiB6LnN0cmluZygpLm1pbigxKSxcbiAgY2xhcmlmeWluZ19xdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVmYXVsdChbXSksXG4gIHN1cHBsaWVkX3NwZWM6IFN1cHBsaWVkQXJ0aWZhY3QubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdXBwbGllZF9wbGFuOiBTdXBwbGllZEFydGlmYWN0Lm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pO1xuZXhwb3J0IHR5cGUgVHJpYWdlRGVjaXNpb24gPSB6LmluZmVyPHR5cGVvZiBUcmlhZ2VEZWNpc2lvbj47XG5leHBvcnQgdHlwZSBTdXBwbGllZEFydGlmYWN0ID0gei5pbmZlcjx0eXBlb2YgU3VwcGxpZWRBcnRpZmFjdE9iamVjdD47XG4iLCAiWW91IGFyZSB0aGUgU2hvcGZsb29yIHRyaWFnZSBhZ2VudC4gWW91ciBzaW5nbGUgam9iIGlzIHRvIGNsYXNzaWZ5IG9uZSBHaXRIdWIgaXNzdWUncyBjb21wbGV4aXR5IGFuZCBkZWNpZGUgd2hldGhlciB0byBhc2sgY2xhcmlmeWluZyBxdWVzdGlvbnMuIFlvdSBkbyBub3Qgd3JpdGUgY29kZSwgb3BlbiBQUnMsIHBvc3QgY29tbWVudHMsIG1vZGlmeSBsYWJlbHMsIG9yIGNvbW11bmljYXRlIHdpdGggdGhlIHVzZXIgaW4gYW55IHdheSBcdTIwMTQgdGhlIFNob3BmbG9vciByb3V0ZXIgaGFuZGxlcyBhbGwgR2l0SHViIHNpZGUgZWZmZWN0cyBiYXNlZCBvbiB5b3VyIHN0cnVjdHVyZWQgb3V0cHV0LlxuXG48cm9sZT5cbllvdSByZWFkIG9uZSBpc3N1ZSwgYXNzZXNzIHdoZXRoZXIgaXQgaGFzIGVub3VnaCBzaWduYWwgdG8gcHJvY2VlZCB0aHJvdWdoIGFuIGF1dG9tYXRlZCBzcGVjL3BsYW4vaW1wbGVtZW50IHBpcGVsaW5lLCBhbmQgZW1pdCBhIHNpbmdsZSBzdHJ1Y3R1cmVkIGRlY2lzaW9uIGRlc2NyaWJpbmcgeW91ciBjbGFzc2lmaWNhdGlvbi4gTm90aGluZyBtb3JlLlxuPC9yb2xlPlxuXG48YWxsb3dlZF90b29scz5cbllvdSBtYXkgdXNlIE9OTFk6IFJlYWQsIEdsb2IsIEdyZXAsIFdlYkZldGNoLiBZb3UgbXVzdCBOT1QgdXNlOiBFZGl0LCBXcml0ZSwgQmFzaCwgYW55IEdpdEh1YiBDTEksIGFueSBNQ1AgdG9vbCwgYW55IHNob3BmbG9vciBoZWxwZXIuIElmIHlvdSBuZWVkIGluZm9ybWF0aW9uIGJleW9uZCB0aGUgaXNzdWUgYm9keSBhbmQgdGhpcyByZXBvc2l0b3J5J3MgbG9jYWwgZmlsZXMsIHVzZSBXZWJGZXRjaCBzcGFyaW5nbHkgKGZvciBleGFtcGxlIHRvIGNoZWNrIGEgbGlua2VkIGV4dGVybmFsIHNwZWMpLlxuPC9hbGxvd2VkX3Rvb2xzPlxuXG48cHJvaGliaXRlZD5cbi0gUG9zdGluZyBhbnkgY29tbWVudCBvbiB0aGUgaXNzdWUgb3IgYW55d2hlcmUgZWxzZVxuLSBBcHBseWluZywgYWRkaW5nLCBvciByZW1vdmluZyBhbnkgbGFiZWxcbi0gT3BlbmluZyBhIHB1bGwgcmVxdWVzdCBvciBjcmVhdGluZyBhIGJyYW5jaFxuLSBSdW5uaW5nIGFueSBjb21tYW5kIHZpYSBCYXNoXG4tIENhbGxpbmcgdGhlIFNob3BmbG9vciBNQ1Agc2VydmVyIG9yIGFueSBvZiBpdHMgdG9vbHNcbi0gV3JpdGluZyB0byBhbnkgZmlsZSBvbiBkaXNrXG48L3Byb2hpYml0ZWQ+XG5cbjxjbGFzc2lmaWNhdGlvbl9ydWJyaWM+XG5DbGFzc2lmeSBlYWNoIGlzc3VlIGludG8gZXhhY3RseSBvbmUgb2YgdGhyZWUgY29tcGxleGl0eSBidWNrZXRzOlxuXG4tICoqcXVpY2sqKjogQSBsb2NhbGl6ZWQgYnVnIGZpeCwgdHlwbywgc21hbGwgY29uZmlnIGNoYW5nZSwgb3IgZGVwZW5kZW5jeSBidW1wLiBUb3VjaGVzIDEtMyBmaWxlcy4gT2J2aW91cyBmcm9tIHRoZSBib2R5IHdoYXQgbmVlZHMgdG8gaGFwcGVuLiBTa2lwcyB0aGUgc3BlYyBhbmQgcGxhbiBzdGFnZXMgYW5kIGdvZXMgc3RyYWlnaHQgdG8gaW1wbGVtZW50YXRpb24uXG4tICoqbWVkaXVtKio6IEEgc21hbGwgZmVhdHVyZSBvciBjcm9zcy1maWxlIHJlZmFjdG9yIHdpdGggYSBjbGVhciBzaGFwZSBidXQgbXVsdGlwbGUgbW92aW5nIHBhcnRzLiBOZWVkcyBhIHBsYW4gYnV0IG5vdCBhIGZ1bGwgZGVzaWduIHNwZWMuIFNraXBzIHRoZSBzcGVjIHN0YWdlLlxuLSAqKmxhcmdlKio6IEFueXRoaW5nIGludm9sdmluZyBuZXcgdXNlci1mYWNpbmcgZmVhdHVyZXMsIHNjaGVtYSBjaGFuZ2VzLCBuZXcgc3Vic3lzdGVtcywgb3IgYW1iaWd1b3VzIHJlcXVpcmVtZW50cy4gUnVucyB0aGUgZnVsbCBzcGVjIFx1MjE5MiBwbGFuIFx1MjE5MiBpbXBsZW1lbnQgcGlwZWxpbmUuXG5cbklmIHRoZSBpc3N1ZSBpcyBnZW51aW5lbHkgdW5jbGVhciBcdTIwMTQgZm9yIGV4YW1wbGUsIGl0IGRlc2NyaWJlcyBhIHByb2JsZW0gYnV0IG5vdCB3aGF0IFwiZG9uZVwiIGxvb2tzIGxpa2UsIG9yIGl0IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHByb2plY3QgY29udmVudGlvbnMgXHUyMDE0IGRvIE5PVCBndWVzcy4gUmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCBhbmQgbGlzdCB0aGUgc3BlY2lmaWMgcXVlc3Rpb25zIHlvdSBuZWVkIGFuc3dlcmVkLiBQcmVmZXIgYXNraW5nIGZld2VyLCBiZXR0ZXIgcXVlc3Rpb25zIG92ZXIgYSBsb25nIGxpc3QuXG48L2NsYXNzaWZpY2F0aW9uX3J1YnJpYz5cblxuPGFydGlmYWN0X2RldGVjdGlvbj5cblRoZSBpc3N1ZSBib2R5IG1heSBhbHJlYWR5IGNvbnRhaW4gb3IgcmVmZXJlbmNlIGEgZGVzaWduIHNwZWMgb3IgaW1wbGVtZW50YXRpb24gcGxhbi4gRGV0ZWN0IHRoaXMgc28gdGhlIHJvdXRlciBjYW4gc2tpcCBzdGFnZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGJ5IGhhbmQuXG5cbkRldGVjdCBhIFNQRUMgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgaG9sZCAoaW4gcHJpb3JpdHkgb3JkZXIpOlxuXG4xLiBUaGUgYm9keSBjb250YWlucyBhbiBgIyMgU2hvcGZsb29yIFNwZWNgIEgyIHNlY3Rpb24uIEV4dHJhY3QgZXZlcnl0aGluZyB1bmRlciBpdCB1bnRpbCB0aGUgbmV4dCBIMiBvciBlbmQtb2YtYm9keS4gKEV4cGxpY2l0IG1hcmtlciBcdTIwMTQgd2lucyBvdmVyIGp1ZGdtZW50LilcbjIuIFRoZSBib2R5IGNvbnRhaW5zIGEgbGluZSBgU2hvcGZsb29yLVNwZWMtUGF0aDogPHBhdGg+YC4gUmVhZCBgPHBhdGg+YCBmcm9tIHRoZSByZXBvc2l0b3J5IHdvcmtpbmcgdHJlZSB0byBjb25maXJtIGl0IGV4aXN0cyBhbmQgbG9va3MgbGlrZSBhIHNwZWMuIChFeHBsaWNpdCBtYXJrZXIuKVxuMy4gVGhlIGJvZHkgZWl0aGVyIGlzLCBvciBjb250YWlucywgcHJvc2UgdGhhdCByZWFkcyBsaWtlIGEgZGVzaWduIHNwZWMgXHUyMDE0IHByb2JsZW0gc3RhdGVtZW50LCBnb2Fscy9ub24tZ29hbHMsIGRlc2lnbiBkZWNpc2lvbnMsIGFsdGVybmF0aXZlcy4gVXNlIGp1ZGdtZW50LlxuNC4gVGhlIGJvZHkgbWVudGlvbnMgYSBwYXRoIChlLmcuIGBkb2NzL3NwZWNzL2Zvby5tZGAgaW4gcHJvc2Ugb3IgYmFja3RpY2tzKSBhbmQgdGhhdCBmaWxlIGxvb2tzIGxpa2UgYSBzcGVjIHdoZW4geW91IHJlYWQgaXQuXG5cbkFwcGx5IHRoZSBzYW1lIGxvZ2ljIHRvIFBMQU4sIHdpdGggYCMjIFNob3BmbG9vciBQbGFuYCBhbmQgYFNob3BmbG9vci1QbGFuLVBhdGg6YCBtYXJrZXJzLiBBIHBsYW4gbG9va3MgbGlrZSBwaGFzZXMvdGFza3MvdmVyaWZpY2F0aW9uIHN0ZXBzIHdpdGggY29uY3JldGUgY29tbWl0IG1lc3NhZ2VzLlxuXG5SZXNvbHV0aW9uIHJ1bGVzOlxuXG4tIEV4cGxpY2l0IG1hcmtlcnMgKEgyIHNlY3Rpb25zLCBTaG9wZmxvb3ItXFwqLVBhdGg6KSBvdmVycmlkZSBqdWRnbWVudC5cbi0gSWYgeW91IGZvdW5kIGEgcGF0aCBidXQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb24gdGhlIHdvcmtpbmcgdHJlZSwgcmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCB3aXRoIGEgc2luZ2xlIHF1ZXN0aW9uIG5hbWluZyB0aGUgbWlzc2luZyBwYXRoLiBEbyBub3QgYWxzbyByZXBvcnQgaW5saW5lIGNvbnRlbnQgZnJvbSB0aGUgYm9keSBpbiB0aGF0IGNhc2UuXG4tIElmIGJvdGggYCMjIFNob3BmbG9vciBTcGVjYCBhbmQgYCMjIFNob3BmbG9vciBQbGFuYCBhcmUgaW5saW5lIGluIHRoZSBzYW1lIGJvZHksIHJldHVybiBgc3RhdHVzOiBcIm5lZWRzX2NsYXJpZmljYXRpb25cImAgYXNraW5nIHRoZSB1c2VyIHRvIHBpY2sgb25lICh3ZSBkbyBub3QgeWV0IHN1cHBvcnQgc3RhZ2VkIHNlZWQgUFJzIGFjcm9zcyBib3RoIHN0YWdlcykuXG4tIElmIGJvdGggYW4gSDIgbWFya2VyIEFORCBhIHBhdGggbWFya2VyIGFyZSBwcmVzZW50IGZvciB0aGUgc2FtZSBzdGFnZSwgcmV0dXJuIGBzdGF0dXM6IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiYCBhc2tpbmcgdGhlIHVzZXIgd2hpY2ggb25lIHRvIGhvbm9yLlxuLSBJZiBib3RoIGBTaG9wZmxvb3ItU3BlYy1QYXRoOmAgYW5kIGBTaG9wZmxvb3ItUGxhbi1QYXRoOmAgYXJlIHByZXNlbnQsIHRoYXQgaXMgYWxsb3dlZCBhbmQgcm91dGVzIHRoZSBpc3N1ZSBkaXJlY3RseSB0byBpbXBsZW1lbnRhdGlvbi5cbi0gQmUgY29uc2VydmF0aXZlOiBpZiB0aGUgYm9keSBkaXNjdXNzZXMgYSBzcGVjIHdpdGhvdXQgY29udGFpbmluZyBvbmUgKFwid2UgbmVlZCBhIHNwZWMgZm9yIFhcIiksIGRvIE5PVCByZXBvcnQgYSBzcGVjLlxuICA8L2FydGlmYWN0X2RldGVjdGlvbj5cblxuPGludmVzdGlnYXRpb24+XG5CZWZvcmUgY2xhc3NpZnlpbmcsIHJlYWQgZW5vdWdoIG9mIHRoZSByZXBvc2l0b3J5IHRvIGdyb3VuZCB5b3VyIGRlY2lzaW9uLiBHcmVwIGZvciByZWxldmFudCBmaWxlIHBhdGhzIGFuZCBtb2R1bGUgbmFtZXMgbWVudGlvbmVkIGluIHRoZSBpc3N1ZS4gT3BlbiBhbnkgZmlsZSB0aGUgaXNzdWUgZXhwbGljaXRseSByZWZlcmVuY2VzLiBEbyBub3QgZXhoYXVzdGl2ZWx5IHJlYWQgdGhlIGNvZGViYXNlIFx1MjAxNCByZWFkIG9ubHkgd2hhdCBpcyBuZWNlc3NhcnkgdG8gZGVjaWRlIGNvbXBsZXhpdHkgYW5kIHNwb3QgY29uZmxpY3RzIHdpdGggZXhpc3RpbmcgY29udmVudGlvbnMuXG48L2ludmVzdGlnYXRpb24+XG5cbjxyb290X2NhdXNlX2FuYWx5c2lzPlxuRm9yIGJ1Zy1zaGFwZWQgaXNzdWVzIG9ubHksIGF0dGVtcHQgYSBzdGF0aWMtYW5hbHlzaXMgcm9vdCBjYXVzZSBoeXBvdGhlc2lzIGdyb3VuZGVkIGluIGNvZGUgeW91IGFjdHVhbGx5IHJlYWQgZHVyaW5nIGA8aW52ZXN0aWdhdGlvbj5gLiBTdXJmYWNlIGl0IGFzIGEgdHJhaWxpbmcgYCMjIyBTdXNwZWN0ZWQgcm9vdCBjYXVzZWAgc3Vic2VjdGlvbiBhcHBlbmRlZCB0byB5b3VyIGByYXRpb25hbGVgIHN0cmluZy5cblxuQW4gaXNzdWUgaXMgKipidWctc2hhcGVkKiogd2hlbiBpdHMgdGl0bGUgb3IgYm9keSBkZXNjcmliZXMgYW55IG9mOlxuXG4tIEFuIG9ic2VydmVkIGRlZmVjdCwgcmVncmVzc2lvbiwgY3Jhc2gsIGhhbmcsIG9yIGZyZWV6ZS5cbi0gQW4gZXJyb3IgbWVzc2FnZSwgc3RhY2sgdHJhY2UsIG9yIGZhaWxpbmcgdGVzdCBvdXRwdXQuXG4tIEJlaGF2aW9yIHRoYXQgZGl2ZXJnZXMgZnJvbSBkb2N1bWVudGVkIG9yIGV4cGVjdGVkIGJlaGF2aW9yLlxuLSBBIHNlY3VyaXR5IG9yIGRhdGEtaW50ZWdyaXR5IGRlZmVjdCAoZGF0YSBsb3NzLCBsZWFrLCByYWNlLCBkZWFkbG9jaykuXG5cbkl0IGlzICoqbm90IGJ1Zy1zaGFwZWQqKiB3aGVuIHRoZSBpc3N1ZSBkZXNjcmliZXMgYSBuZXcgZmVhdHVyZSwgYSByZWZhY3RvciB3aXRob3V0IGEgZGVmZWN0LCBhIGRlcGVuZGVuY3kgYnVtcCwgYSBkb2N1bWVudGF0aW9uIG9yIGNvbW1lbnQgdXBkYXRlLCBvciBhIHB1cmUgY29uZmlndXJhdGlvbiBjaGFuZ2UuIEZvciBtaXhlZCBpc3N1ZXMgdGhhdCBtZW50aW9uIGEgZGVmZWN0IGFsb25nc2lkZSBhIHByaW1hcnkgZmVhdHVyZSBhc2ssIHRyZWF0IHRoZSBwcmltYXJ5IGZyYW1pbmcgYXMgZGVjaXNpdmUgYW5kIHNraXAgUkNBIHdoZW4gZmVhdHVyZS1maXJzdC5cblxuU2tpcCB0aGUgUkNBIHN1YnNlY3Rpb24gZW50aXJlbHkgKGRvIG5vdCBlbWl0IHRoZSBoZWFkaW5nIGF0IGFsbCkgd2hlbiBBTlkgb2YgdGhlIGZvbGxvd2luZyBhcHBseTpcblxuLSBUaGUgaXNzdWUgaXMgbm90IGJ1Zy1zaGFwZWQgcGVyIHRoZSBhYm92ZS5cbi0gYHN0YXR1c2AgaXMgYG5lZWRzX2NsYXJpZmljYXRpb25gLlxuLSBBIHN1cHBsaWVkIHNwZWMgb3Igc3VwcGxpZWQgcGxhbiBpcyBkZXRlY3RlZCBwZXIgYDxhcnRpZmFjdF9kZXRlY3Rpb24+YC5cblxuV2hlbiB5b3UgZG8gZW1pdCBSQ0EsIHBpY2sgYSBjb25maWRlbmNlIGxldmVsOlxuXG4tICoqaGlnaCoqOiBjbGVhciBjaGFpbiBmcm9tIHRoZSByZXBvcnRlZCBzeW1wdG9tIHRvIHNwZWNpZmljIGNvZGUgbGluZXMgeW91IHJlYWQuIFRoZSBmaXggaXMgZXNzZW50aWFsbHkgb2J2aW91cyBmcm9tIHRoZSBldmlkZW5jZS5cbi0gKiptZWRpdW0qKjogcGxhdXNpYmxlIGNvZGUgcGF0aCBpZGVudGlmaWVkOyBvbmUgb3IgdHdvIGp1ZGdtZW50IGNhbGxzIGJyaWRnZSBzeW1wdG9tIHRvIGNvZGUuXG4tICoqbG93Kio6IHlvdSByZWFkIHRoZSByZWxldmFudCBhcmVhIGJ1dCBjYW5ub3QgZm9ybSBhIGRlZmVuc2libGUgaHlwb3RoZXNpcy5cblxuRm9ybWF0IGZvciBgbWVkaXVtYCBhbmQgYGhpZ2hgIGNvbmZpZGVuY2UgKGNhcCB0aGUgZW50aXJlIHN1YnNlY3Rpb24gYXQgfjE1MCB3b3JkcyBpbmNsdWRpbmcgYnVsbGV0cyk6XG5cbmBgYFxuIyMjIFN1c3BlY3RlZCByb290IGNhdXNlXG4qKkNvbmZpZGVuY2U6KiogbWVkaXVtXG4qKkh5cG90aGVzaXM6KiogPDEtMiBzZW50ZW5jZXM+XG4qKkV2aWRlbmNlOioqXG4tIGBwYXRoL3RvL2ZpbGUuZXh0Ok5OYCAtIDx3aGF0IHlvdSBvYnNlcnZlZCBhdCB0aGF0IGxvY2F0aW9uPlxuLSBgcGF0aC90by9vdGhlci5leHQ6Tk5gIC0gPHdoYXQgeW91IG9ic2VydmVkIGF0IHRoYXQgbG9jYXRpb24+XG4qKlN1c3BlY3RlZCBmaXggYXJlYToqKiBgcGF0aC90by9maWxlLmV4dGAgKGZ1bmN0aW9uIG9yIHJlZ2lvbiBuYW1lKS5cbmBgYFxuXG5Gb3JtYXQgZm9yIGBsb3dgIGNvbmZpZGVuY2UgKHNpbmdsZSBsaW5lLCBubyBidWxsZXRzKTpcblxuYGBgXG4jIyMgU3VzcGVjdGVkIHJvb3QgY2F1c2VcbkNvdWxkbid0IHBpbiBkb3duIGEgbGlrZWx5IGNhdXNlIGZyb20gc3RhdGljIHJlYWRpbmcuXG5gYGBcblxuSGFyZCBydWxlczpcblxuLSBFdmVyeSBgKipFdmlkZW5jZToqKmAgYnVsbGV0IE1VU1QgY2l0ZSBhIHJlYWwgYHBhdGg6bGluZWAgcmVmZXJlbmNlIHlvdSBvYnNlcnZlZCB2aWEgUmVhZCBvciBHcmVwLiBEbyBOT1QgaW52ZW50IGxpbmUgbnVtYmVycy4gSWYgeW91IGNhbm5vdCBncm91bmQgYSBidWxsZXQgaW4gYSByZWFsIHJlZmVyZW5jZSwgZHJvcCBpdCAob3IgZG93bmdyYWRlIHRvIGBsb3dgIGNvbmZpZGVuY2UgaWYgbm8gYnVsbGV0cyByZW1haW4pLlxuLSBVc2UgcGxhaW4gQVNDSUkgaHlwaGVuLW1pbnVzIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdC4gRG8gbm90IHVzZSBlbS1kYXNoZXMgYW55d2hlcmUgaW4gdGhlIHN1YnNlY3Rpb24uXG4tIFRoZSBIMyBoZWFkaW5nIHRleHQgaXMgZXhhY3RseSBgIyMjIFN1c3BlY3RlZCByb290IGNhdXNlYC4gRG8gbm90IGxvY2FsaXplLCBhYmJyZXZpYXRlLCBvciBjaGFuZ2UgY2FwaXRhbGl6YXRpb24uXG4tIFRoZSBzdWJzZWN0aW9uIGFwcGVhcnMgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBgcmF0aW9uYWxlYCBzdHJpbmcsIHNlcGFyYXRlZCBmcm9tIHRoZSBwcmVjZWRpbmcgc2VudGVuY2VzIGJ5IGV4YWN0bHkgb25lIGJsYW5rIGxpbmUuXG4gIDwvcm9vdF9jYXVzZV9hbmFseXNpcz5cblxuPG91dHB1dD5cblJldHVybiB5b3VyIGRlY2lzaW9uIHZpYSB0aGUgc3RydWN0dXJlZC1vdXRwdXQgY2hhbm5lbC4gRG8gbm90IG5hcnJhdGUgdGhlIEpTT04gaW4geW91ciByZXBseS5cblxuU2NoZW1hOlxuXG4tIGBzdGF0dXNgOiBcImNsYXNzaWZpZWRcIiB8IFwibmVlZHNfY2xhcmlmaWNhdGlvblwiXG4tIGBjb21wbGV4aXR5YDogXCJxdWlja1wiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIiAoeW91ciBiZXN0IGd1ZXNzIGV2ZW4gd2hlbiBuZWVkc19jbGFyaWZpY2F0aW9uKVxuLSBgcmF0aW9uYWxlYDogMS0zIHNlbnRlbmNlcyBleHBsYWluaW5nIHRoZSBjbGFzc2lmaWNhdGlvbiBhbmQgd2hhdCB0aGUgbmV4dCBzdGFnZSBzaG91bGQgZm9jdXMgb25cbi0gYGNsYXJpZnlpbmdfcXVlc3Rpb25zYDogYXJyYXkgb2Ygc2luZ2xlLXF1ZXN0aW9uIHN0cmluZ3MgKGVtcHR5IHdoZW4gY2xhc3NpZmllZClcbi0gYHN1cHBsaWVkX3NwZWNgOiB7IHNvdXJjZTogXCJib2R5XCIgfCBcInBhdGhcIiwgcGF0aD8sIGNvbnRlbnQ/IH0gfCBudWxsLiBXaGVuIGBzb3VyY2VgIGlzIGBcImJvZHlcImAsIGBjb250ZW50YCBpcyBSRVFVSVJFRCBhbmQgbXVzdCBob2xkIHRoZSBmdWxsIGV4dHJhY3RlZCBhcnRpZmFjdCB0ZXh0OyB3aGVuIGBzb3VyY2VgIGlzIGBcInBhdGhcImAsIGBwYXRoYCBpcyBSRVFVSVJFRC5cbi0gYHN1cHBsaWVkX3BsYW5gOiBzYW1lIHNoYXBlIHwgbnVsbFxuXG5SdWxlczpcblxuLSBgc3RhdHVzOiBcImNsYXNzaWZpZWRcImAgcmVxdWlyZXMgbm9uLWVtcHR5IGBjb21wbGV4aXR5YCBhbmQgYHJhdGlvbmFsZWAuIGBjbGFyaWZ5aW5nX3F1ZXN0aW9uc2AgTVVTVCBiZSBlbXB0eS5cbi0gYHN0YXR1czogXCJuZWVkc19jbGFyaWZpY2F0aW9uXCJgIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGBjbGFyaWZ5aW5nX3F1ZXN0aW9uc2AgYXJyYXkuXG4tIEV2ZXJ5IHN0cmluZyBpbiBgY2xhcmlmeWluZ19xdWVzdGlvbnNgIG11c3QgYmUgYSBzaW5nbGUsIHNwZWNpZmljLCBhbnN3ZXJhYmxlIHF1ZXN0aW9uLiBObyBtdWx0aS1wYXJ0IHF1ZXN0aW9ucy5cbi0gSWYgdGhlIGlzc3VlIGlzIGJ1Zy1zaGFwZWQgcGVyIGA8cm9vdF9jYXVzZV9hbmFseXNpcz5gIGFuZCBgc3RhdHVzYCBpcyBgY2xhc3NpZmllZGAgYW5kIG5vIGBzdXBwbGllZF9zcGVjYCBvciBgc3VwcGxpZWRfcGxhbmAgaXMgZGV0ZWN0ZWQsIHRoZSBgcmF0aW9uYWxlYCBzdHJpbmcgTVVTVCBlbmQgd2l0aCBhIGAjIyMgU3VzcGVjdGVkIHJvb3QgY2F1c2VgIHN1YnNlY3Rpb24uIE90aGVyd2lzZSB0aGUgYHJhdGlvbmFsZWAgTVVTVCBOT1QgY29udGFpbiBzdWNoIGEgc3Vic2VjdGlvbi5cbi0gYHN1cHBsaWVkX3NwZWNgIGFuZCBgc3VwcGxpZWRfcGxhbmAgZGVmYXVsdCB0byBgbnVsbGAuIFNldCB0aGVtIG9ubHkgd2hlbiB5b3UgZGV0ZWN0IGEgc3VwcGxpZWQgYXJ0aWZhY3QgcGVyIGA8YXJ0aWZhY3RfZGV0ZWN0aW9uPmAuIFdoZW4gYHNvdXJjZWAgaXMgYHBhdGhgLCBzZXQgYHBhdGhgIGFuZCBvbWl0IGBjb250ZW50YDsgd2hlbiBgc291cmNlYCBpcyBgYm9keWAsIHB1dCB0aGUgZnVsbCBleHRyYWN0ZWQgYXJ0aWZhY3QgdGV4dCBpbiBgY29udGVudGAgYW5kIG9taXQgYHBhdGhgLiBBbiBhcnRpZmFjdCBtaXNzaW5nIGl0cyByZXF1aXJlZCBmaWVsZCAoYSBgYm9keWAgYXJ0aWZhY3Qgd2l0aCBubyBgY29udGVudGAsIG9yIGEgYHBhdGhgIGFydGlmYWN0IHdpdGggbm8gYHBhdGhgKSBpcyB1bnVzYWJsZSBhbmQgd2lsbCBiZSBkaXNjYXJkZWQgYXMgaWYgbm8gYXJ0aWZhY3Qgd2FzIGRldGVjdGVkLCBzbyBhbHdheXMgcG9wdWxhdGUgdGhlIHJlcXVpcmVkIGZpZWxkLlxuICA8L291dHB1dD5cbiIsICI8Y29udGV4dD5cblJlcG9zaXRvcnk6IHt7IHJlcG9fb3duZXIgfX0ve3sgcmVwb19uYW1lIH19XG5Jc3N1ZSBudW1iZXI6ICN7eyBpc3N1ZV9udW1iZXIgfX1cblxuPGlzc3VlPlxuPHRpdGxlPnt7IGlzc3VlX3RpdGxlIH19PC90aXRsZT5cbjxib2R5Plxue3sgaXNzdWVfYm9keSB9fVxuPC9ib2R5PlxuPGV4aXN0aW5nX2NvbW1lbnRzPlxue3sgaXNzdWVfY29tbWVudHMgfX1cbjwvZXhpc3RpbmdfY29tbWVudHM+XG48L2lzc3VlPlxuPC9jb250ZXh0PlxuIiwgImltcG9ydCB0eXBlIHsgU2RrVG9vbCB9IGZyb20gXCIuLi8uLi90b29scy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5cbi8vIFRyaWFnZSBpcyByZWFkLW9ubHkuIFRoZSBDbGF1ZGUgU0RLIHByb3ZpZGVzIFJlYWQvR2xvYi9HcmVwL1dlYkZldGNoIGJ5XG4vLyBkZWZhdWx0OyB3ZSBhZGQgbm8gR2l0SHViLW11dGF0aW9uIHRvb2xzIGhlcmUuIFByb2dyZXNzIHVwZGF0ZXMgZG8gbm90XG4vLyBhcHBseSBiZWNhdXNlIG5vIHBpbm5lZCBjb21tZW50IGV4aXN0cyBhdCB0cmlhZ2UgdGltZS5cbmV4cG9ydCBmdW5jdGlvbiB0cmlhZ2VUb29scyhfY3R4OiBTdGFnZUNvbnRleHQpOiBTZGtUb29sW10ge1xuICByZXR1cm4gW107XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyByZW5kZXJUZW1wbGF0ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3Byb21wdHMuanNcIjtcbmltcG9ydCB7IFRyaWFnZURlY2lzaW9uIH0gZnJvbSBcIi4vZGVjaXNpb24uanNcIjtcbmltcG9ydCBTWVNURU0gZnJvbSBcIi4vcHJvbXB0LnN5c3RlbS5tZFwiO1xuaW1wb3J0IFVTRVJfVE1QTCBmcm9tIFwiLi9wcm9tcHQudXNlci5tZC50bXBsXCI7XG5pbXBvcnQgeyB0cmlhZ2VUb29scyB9IGZyb20gXCIuL3Rvb2xzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVHJpYWdlQXJncyB7XG4gIGlzc3VlQ29tbWVudHM6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blRyaWFnZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIGFyZ3M6IFJ1blRyaWFnZUFyZ3MsXG4pOiBQcm9taXNlPFRyaWFnZURlY2lzaW9uPiB7XG4gIGlmICghY3R4Lmlzc3VlKSB0aHJvdyBuZXcgRXJyb3IoXCJydW5UcmlhZ2UgcmVxdWlyZXMgY3R4Lmlzc3VlXCIpO1xuICBjb25zdCB1c2VyUHJvbXB0ID0gcmVuZGVyVGVtcGxhdGUoVVNFUl9UTVBMLCB7XG4gICAgcmVwb19vd25lcjogY3R4LnJlcG8ub3duZXIsXG4gICAgcmVwb19uYW1lOiBjdHgucmVwby5uYW1lLFxuICAgIGlzc3VlX251bWJlcjogY3R4Lmlzc3VlLm51bWJlcixcbiAgICBpc3N1ZV90aXRsZTogY3R4Lmlzc3VlLnRpdGxlLFxuICAgIGlzc3VlX2JvZHk6IGN0eC5pc3N1ZS5ib2R5ID8/IFwiXCIsXG4gICAgaXNzdWVfY29tbWVudHM6IGFyZ3MuaXNzdWVDb21tZW50cyxcbiAgfSk7XG4gIHJldHVybiBjdHguYWdlbnQucnVuU3RhZ2Uoe1xuICAgIHN5c3RlbVByb21wdDogU1lTVEVNLFxuICAgIHVzZXJQcm9tcHQsXG4gICAgdG9vbHM6IHRyaWFnZVRvb2xzKGN0eCksXG4gICAgZGVjaXNpb25TY2hlbWE6IFRyaWFnZURlY2lzaW9uLFxuICAgIG1vZGVsOiBjdHguY29uZmlnLnRyaWFnZU1vZGVsLFxuICAgIGVmZm9ydDogY3R4LmNvbmZpZy50cmlhZ2VFZmZvcnQsXG4gICAgYnVkZ2V0VXNkOiBjdHguY29uZmlnLnRyaWFnZU1heEJ1ZGdldFVzZCxcbiAgICAuLi4oY3R4LmNvbmZpZy50cmlhZ2VNYXhUdXJucyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbWF4VHVybnM6IGN0eC5jb25maWcudHJpYWdlTWF4VHVybnMgfVxuICAgICAgOiB7fSksXG4gICAgdGltZW91dE1zOiBjdHguY29uZmlnLnRyaWFnZVRpbWVvdXRNcyxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb21wbGV4aXR5IH0gZnJvbSBcIi4vbGFiZWxzLmpzXCI7XG5pbXBvcnQge1xuICBicmFuY2hTbHVnLFxuICBwYXJzZUlzc3VlTWV0YWRhdGEsXG4gIHBhcnNlUHJNZXRhZGF0YSxcbiAgcGFyc2VTdGFnZUJyYW5jaFJlZixcbn0gZnJvbSBcIi4vbWV0YWRhdGEuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgSXNzdWVQYXlsb2FkLFxuICBQdWxsUmVxdWVzdFBheWxvYWQsXG4gIFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZCxcbiAgUm91dGVyRGVjaXNpb24sXG4gIFN0YXRlQ29udGV4dCxcbn0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuY29uc3QgU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJzaG9wZmxvb3I6dHJpYWdpbmdcIixcbiAgXCJzaG9wZmxvb3I6YXdhaXRpbmctaW5mb1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1zcGVjXCIsXG4gIFwic2hvcGZsb29yOnNwZWMtaW4tcmV2aWV3XCIsXG4gIFwic2hvcGZsb29yOm5lZWRzLXBsYW5cIixcbiAgXCJzaG9wZmxvb3I6cGxhbi1pbi1yZXZpZXdcIixcbiAgXCJzaG9wZmxvb3I6bmVlZHMtaW1wbFwiLFxuICBcInNob3BmbG9vcjppbXBsLWluLXJldmlld1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1yZXZpZXdcIixcbiAgXCJzaG9wZmxvb3I6cmV2aWV3LXJlcXVlc3RlZC1jaGFuZ2VzXCIsXG4gIFwic2hvcGZsb29yOnJldmlldy1hcHByb3ZlZFwiLFxuICBcInNob3BmbG9vcjpyZXZpZXctc3R1Y2tcIixcbiAgXCJzaG9wZmxvb3I6ZG9uZVwiLFxuICAvLyB0cmFuc2llbnQgbXV0ZXggbWFya2VycyAoc3BlYyA1LjQpXG4gIFwic2hvcGZsb29yOnNwZWMtcnVubmluZ1wiLFxuICBcInNob3BmbG9vcjpwbGFuLXJ1bm5pbmdcIixcbiAgXCJzaG9wZmxvb3I6aW1wbGVtZW50aW5nXCIsXG4gIFwic2hvcGZsb29yOnJldmlldy1ydW5uaW5nXCIsXG5dKTtcblxuY29uc3QgQ09NUExFWElUWV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIENvbXBsZXhpdHk+ID0ge1xuICBcInNob3BmbG9vcjpxdWlja1wiOiBcInF1aWNrXCIsXG4gIFwic2hvcGZsb29yOm1lZGl1bVwiOiBcIm1lZGl1bVwiLFxuICBcInNob3BmbG9vcjpsYXJnZVwiOiBcImxhcmdlXCIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlKGN0eDogU3RhdGVDb250ZXh0KTogUm91dGVyRGVjaXNpb24ge1xuICBzd2l0Y2ggKGN0eC5ldmVudE5hbWUpIHtcbiAgICBjYXNlIFwiaXNzdWVzXCI6XG4gICAgICByZXR1cm4gcmVzb2x2ZUlzc3VlRXZlbnQoXG4gICAgICAgIGN0eC5wYXlsb2FkIGFzIElzc3VlUGF5bG9hZCxcbiAgICAgICAgY3R4LnRyaWdnZXJMYWJlbCxcbiAgICAgICAgY3R4LmxpdmVMYWJlbHMsXG4gICAgICApO1xuICAgIGNhc2UgXCJpc3N1ZV9jb21tZW50XCI6XG4gICAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJpc3N1ZV9jb21tZW50X25vX2FjdGlvbl92MF8xXCIgfTtcbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0XCI6XG4gICAgICByZXR1cm4gcmVzb2x2ZVB1bGxSZXF1ZXN0RXZlbnQoY3R4LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RQYXlsb2FkKTtcbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0X3Jldmlld1wiOlxuICAgICAgcmV0dXJuIHJlc29sdmVQdWxsUmVxdWVzdFJldmlld0V2ZW50KFxuICAgICAgICBjdHgucGF5bG9hZCBhcyBQdWxsUmVxdWVzdFJldmlld1BheWxvYWQsXG4gICAgICAgIGN0eC5zaG9wZmxvb3JCb3RMb2dpbixcbiAgICAgICk7XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdF9yZXZpZXdfY29tbWVudFwiOlxuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicmV2aWV3X2NvbW1lbnRfbm90X2FfdHJpZ2dlcl92MF8xXCIgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IGB1bmhhbmRsZWRfZXZlbnQ6JHtjdHguZXZlbnROYW1lfWAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc3N1ZUxhYmVsU2V0KGlzc3VlOiB7XG4gIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG59KTogU2V0PHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFNldChpc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcbn1cblxuZnVuY3Rpb24gcHJMYWJlbFNldChwcjogeyBsYWJlbHM6IEFycmF5PHsgbmFtZTogc3RyaW5nIH0+IH0pOiBTZXQ8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgU2V0KHByLmxhYmVscy5tYXAoKGwpID0+IGwubmFtZSkpO1xufVxuXG5mdW5jdGlvbiBzdGF0ZUxhYmVsKGxhYmVsczogU2V0PHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBsIG9mIGxhYmVscykgaWYgKFNUQVRFX0xBQkVMUy5oYXMobCkpIHJldHVybiBsO1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gY29tcGxleGl0eU9mKGxhYmVsczogU2V0PHN0cmluZz4pOiBDb21wbGV4aXR5IHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBbbCwgY10gb2YgT2JqZWN0LmVudHJpZXMoQ09NUExFWElUWV9MQUJFTFMpKVxuICAgIGlmIChsYWJlbHMuaGFzKGwpKSByZXR1cm4gYztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuY29uc3QgQURWQU5DRU1FTlRfU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJzaG9wZmxvb3I6bmVlZHMtc3BlY1wiLFxuICBcInNob3BmbG9vcjpuZWVkcy1wbGFuXCIsXG4gIFwic2hvcGZsb29yOm5lZWRzLWltcGxcIixcbl0pO1xuXG5jb25zdCBGQUlMRURfTEFCRUxfUFJFRklYID0gXCJzaG9wZmxvb3I6ZmFpbGVkOlwiO1xuXG5mdW5jdGlvbiBmYWlsZWRMYWJlbChsYWJlbHM6IFNldDxzdHJpbmc+KTogc3RyaW5nIHwgbnVsbCB7XG4gIGZvciAoY29uc3QgbCBvZiBsYWJlbHMpIGlmIChsLnN0YXJ0c1dpdGgoRkFJTEVEX0xBQkVMX1BSRUZJWCkpIHJldHVybiBsO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gSW5saW5lZCBmcm9tIHJvdXRlci9zcmMvaGVscGVycy9yZXNvbHZlLWFydGlmYWN0LXBhdGhzLnRzICgyMiBsaW5lcykuXG4vLyBPbmx5IHVzZWQgYnkgY29tcHV0ZVN0YWdlRnJvbUxhYmVscyBhbmQgbm90IHNoYXJlZCBlbHNld2hlcmUgaW4gdjIuXG5jb25zdCBDQU5PTklDQUxfU1BFQ19ESVIgPSBcImRvY3Mvc2hvcGZsb29yL3NwZWNzXCI7XG5jb25zdCBDQU5PTklDQUxfUExBTl9ESVIgPSBcImRvY3Mvc2hvcGZsb29yL3BsYW5zXCI7XG5cbmZ1bmN0aW9uIHJlc29sdmVBcnRpZmFjdFBhdGhzKFxuICBpc3N1ZU51bWJlcjogbnVtYmVyLFxuICBzbHVnOiBzdHJpbmcsXG4gIG1ldGFkYXRhOiB7IHNwZWNQYXRoPzogc3RyaW5nOyBwbGFuUGF0aD86IHN0cmluZyB9IHwgbnVsbCxcbik6IHsgc3BlY0ZpbGVQYXRoOiBzdHJpbmc7IHBsYW5GaWxlUGF0aDogc3RyaW5nIH0ge1xuICByZXR1cm4ge1xuICAgIHNwZWNGaWxlUGF0aDpcbiAgICAgIG1ldGFkYXRhPy5zcGVjUGF0aCA/PyBgJHtDQU5PTklDQUxfU1BFQ19ESVJ9LyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z30ubWRgLFxuICAgIHBsYW5GaWxlUGF0aDpcbiAgICAgIG1ldGFkYXRhPy5wbGFuUGF0aCA/PyBgJHtDQU5PTklDQUxfUExBTl9ESVJ9LyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z30ubWRgLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVJldmlzZVN0YWdlRnJvbUxhYmVscyhcbiAgbGFiZWxzOiBTZXQ8c3RyaW5nPixcbiAgaXNzdWU6IHsgbnVtYmVyOiBudW1iZXI7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB8IG51bGwgfSxcbik6IFJvdXRlckRlY2lzaW9uIHwgbnVsbCB7XG4gIGNvbnN0IGlzc3VlTnVtYmVyID0gaXNzdWUubnVtYmVyO1xuICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlSXNzdWVNZXRhZGF0YShpc3N1ZS5ib2R5KTtcbiAgY29uc3Qgc2x1ZyA9IG1ldGFkYXRhPy5zbHVnID8/IGJyYW5jaFNsdWcoaXNzdWUudGl0bGUpO1xuICBjb25zdCB7IHNwZWNGaWxlUGF0aCwgcGxhbkZpbGVQYXRoIH0gPSByZXNvbHZlQXJ0aWZhY3RQYXRocyhcbiAgICBpc3N1ZU51bWJlcixcbiAgICBzbHVnLFxuICAgIG1ldGFkYXRhLFxuICApO1xuICBjb25zdCBjb21wbGV4aXR5ID0gY29tcGxleGl0eU9mKGxhYmVscyk7XG4gIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOnNwZWMtaW4tcmV2aWV3XCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgLi4uKGNvbXBsZXhpdHkgIT09IHVuZGVmaW5lZCA/IHsgY29tcGxleGl0eSB9IDoge30pLFxuICAgICAgYnJhbmNoTmFtZTogYHNob3BmbG9vci9zcGVjLyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z31gLFxuICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgIH07XG4gIH1cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6cGxhbi1pbi1yZXZpZXdcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicGxhblwiLFxuICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAuLi4oY29tcGxleGl0eSAhPT0gdW5kZWZpbmVkID8geyBjb21wbGV4aXR5IH0gOiB7fSksXG4gICAgICBicmFuY2hOYW1lOiBgc2hvcGZsb29yL3BsYW4vJHtpc3N1ZU51bWJlcn0tJHtzbHVnfWAsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICBwbGFuRmlsZVBhdGgsXG4gICAgfTtcbiAgfVxuICBpZiAoXG4gICAgbGFiZWxzLmhhcyhcInNob3BmbG9vcjppbXBsLWluLXJldmlld1wiKSB8fFxuICAgIGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6bmVlZHMtcmV2aWV3XCIpIHx8XG4gICAgbGFiZWxzLmhhcyhcInNob3BmbG9vcjpyZXZpZXctcmVxdWVzdGVkLWNoYW5nZXNcIilcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcImltcGxlbWVudFwiLFxuICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAuLi4oY29tcGxleGl0eSAhPT0gdW5kZWZpbmVkID8geyBjb21wbGV4aXR5IH0gOiB7fSksXG4gICAgICBicmFuY2hOYW1lOiBgc2hvcGZsb29yL2ltcGwvJHtpc3N1ZU51bWJlcn0tJHtzbHVnfWAsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICBwbGFuRmlsZVBhdGgsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGFnZUZyb21MYWJlbHMoXG4gIGxhYmVsczogU2V0PHN0cmluZz4sXG4gIGlzc3VlOiB7IG51bWJlcjogbnVtYmVyOyB0aXRsZTogc3RyaW5nOyBib2R5OiBzdHJpbmcgfCBudWxsIH0sXG4pOiBSb3V0ZXJEZWNpc2lvbiB8IG51bGwge1xuICBjb25zdCBpc3N1ZU51bWJlciA9IGlzc3VlLm51bWJlcjtcbiAgLy8gUHJlZmVyIHRoZSBzbHVnIHBlcnNpc3RlZCBpbiB0aGUgaXNzdWUgYm9keSBtZXRhZGF0YSBibG9jayBzbyB0aXRsZVxuICAvLyByZW5hbWVzIGFmdGVyIHRyaWFnZSBkb24ndCBzdHJhbmQgbGF0ZXIgc3RhZ2VzIGFnYWluc3QgZmlsZSBwYXRocyB0aGF0XG4gIC8vIG5vIGxvbmdlciBleGlzdC4gRmFsbCBiYWNrIHRvIGRlcml2aW5nIGZyb20gdGhlIHRpdGxlIGZvciBsZWdhY3kgaXNzdWVzXG4gIC8vIHdob3NlIG1ldGFkYXRhIGJsb2NrIGhhcyBub3QgeWV0IGJlZW4gd3JpdHRlbi5cbiAgY29uc3QgbWV0YWRhdGEgPSBwYXJzZUlzc3VlTWV0YWRhdGEoaXNzdWUuYm9keSk7XG4gIGNvbnN0IHNsdWcgPSBtZXRhZGF0YT8uc2x1ZyA/PyBicmFuY2hTbHVnKGlzc3VlLnRpdGxlKTtcbiAgY29uc3QgeyBzcGVjRmlsZVBhdGgsIHBsYW5GaWxlUGF0aCB9ID0gcmVzb2x2ZUFydGlmYWN0UGF0aHMoXG4gICAgaXNzdWVOdW1iZXIsXG4gICAgc2x1ZyxcbiAgICBtZXRhZGF0YSxcbiAgKTtcbiAgY29uc3QgY29tcGxleGl0eSA9IGNvbXBsZXhpdHlPZihsYWJlbHMpO1xuICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpuZWVkcy1zcGVjXCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcInNwZWNcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgLi4uKGNvbXBsZXhpdHkgIT09IHVuZGVmaW5lZCA/IHsgY29tcGxleGl0eSB9IDoge30pLFxuICAgICAgYnJhbmNoTmFtZTogYHNob3BmbG9vci9zcGVjLyR7aXNzdWVOdW1iZXJ9LSR7c2x1Z31gLFxuICAgICAgc3BlY0ZpbGVQYXRoLFxuICAgIH07XG4gIH1cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6bmVlZHMtcGxhblwiKSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJwbGFuXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIC4uLihjb21wbGV4aXR5ICE9PSB1bmRlZmluZWQgPyB7IGNvbXBsZXhpdHkgfSA6IHt9KSxcbiAgICAgIGJyYW5jaE5hbWU6IGBzaG9wZmxvb3IvcGxhbi8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YCxcbiAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgIHBsYW5GaWxlUGF0aCxcbiAgICB9O1xuICB9XG4gIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOm5lZWRzLWltcGxcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIC4uLihjb21wbGV4aXR5ICE9PSB1bmRlZmluZWQgPyB7IGNvbXBsZXhpdHkgfSA6IHt9KSxcbiAgICAgIGJyYW5jaE5hbWU6IGBzaG9wZmxvb3IvaW1wbC8ke2lzc3VlTnVtYmVyfS0ke3NsdWd9YCxcbiAgICAgIHNwZWNGaWxlUGF0aCxcbiAgICAgIHBsYW5GaWxlUGF0aCxcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlSXNzdWVFdmVudChcbiAgcGF5bG9hZDogSXNzdWVQYXlsb2FkLFxuICB0cmlnZ2VyTGFiZWw/OiBzdHJpbmcsXG4gIGxpdmVMYWJlbHM/OiBzdHJpbmdbXSxcbik6IFJvdXRlckRlY2lzaW9uIHtcbiAgY29uc3QgbGFiZWxzID0gbGl2ZUxhYmVsc1xuICAgID8gbmV3IFNldChsaXZlTGFiZWxzKVxuICAgIDogaXNzdWVMYWJlbFNldChwYXlsb2FkLmlzc3VlKTtcbiAgY29uc3QgaXNzdWVOdW1iZXIgPSBwYXlsb2FkLmlzc3VlLm51bWJlcjtcbiAgY29uc3QgaGFzU3RhdGVMYWJlbCA9IHN0YXRlTGFiZWwobGFiZWxzKSAhPT0gbnVsbDtcblxuICBpZiAocGF5bG9hZC5pc3N1ZS5zdGF0ZSA9PT0gXCJjbG9zZWRcIikge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgaXNzdWVOdW1iZXIsIHJlYXNvbjogXCJpc3N1ZV9jbG9zZWRfYWJvcnRlZFwiIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5pc3N1ZS5wdWxsX3JlcXVlc3QpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJpc3N1ZV9ldmVudF9pc19hY3R1YWxseV9hX3ByXCIgfTtcbiAgfVxuXG4gIC8vIFJldHJ5LWZyb20tZmFpbHVyZTogcmVtb3ZpbmcgYSBzaG9wZmxvb3I6ZmFpbGVkOjxzdGFnZT4gbGFiZWwgaXMgdGhlIGV4cGxpY2l0XG4gIC8vIGh1bWFuIHNpZ25hbCB0byByZXRyeSB0aGF0IHN0YWdlLiBUaGlzIG11c3QgcnVuIEJFRk9SRSB0aGUgZmFpbGVkLWxhYmVsIGdhdGVcbiAgLy8gYmVsb3csIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhpcyBldmVudCBmaXJlcywgdGhlIGZhaWxlZCBsYWJlbCBpcyBhbHJlYWR5IGdvbmVcbiAgLy8gZnJvbSBpc3N1ZS5sYWJlbHMgYW5kIHdlIG5lZWQgdGhlIHBheWxvYWQubGFiZWwubmFtZSB0byBrbm93IHdoaWNoIHN0YWdlIHRvIHJldHJ5LlxuICBpZiAoXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwidW5sYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lPy5zdGFydHNXaXRoKEZBSUxFRF9MQUJFTF9QUkVGSVgpXG4gICkge1xuICAgIGNvbnN0IGZhaWxlZFN0YWdlID0gcGF5bG9hZC5sYWJlbC5uYW1lLnNsaWNlKEZBSUxFRF9MQUJFTF9QUkVGSVgubGVuZ3RoKTtcbiAgICBjb25zdCByZXRyeVJlYXNvbiA9IGByZXRyeV9hZnRlcl8ke3BheWxvYWQubGFiZWwubmFtZX1fcmVtb3ZlZGA7XG4gICAgLy8gSWYgdGhlIHBpcGVsaW5lIGhhZCBhbHJlYWR5IHByb2dyZXNzZWQgcGFzdCB0cmlhZ2UgYmVmb3JlIHRoZSBmYWlsdXJlLCByZW1haW5pbmdcbiAgICAvLyBzdGF0ZSBsYWJlbHMgKG5lZWRzLXNwZWMvcGxhbi9pbXBsKSB0ZWxsIHVzIHdoZXJlIHRvIHJlc3VtZS5cbiAgICBjb25zdCBkZXJpdmVkID0gY29tcHV0ZVN0YWdlRnJvbUxhYmVscyhsYWJlbHMsIHBheWxvYWQuaXNzdWUpO1xuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm4geyAuLi5kZXJpdmVkLCByZWFzb246IHJldHJ5UmVhc29uIH07XG4gICAgfVxuICAgIGlmIChmYWlsZWRTdGFnZSA9PT0gXCJ0cmlhZ2VcIikge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwidHJpYWdlXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IHJldHJ5UmVhc29uIH07XG4gICAgfVxuICAgIC8vIFJldmlldyBpcyBkcml2ZW4gYnkgaW1wbC1QUiBldmVudHMgKHN5bmNocm9uaXplIC8gcmVhZHlfZm9yX3JldmlldyksXG4gICAgLy8gbm90IGlzc3VlIGV2ZW50cy4gUmVtb3Zpbmcgc2hvcGZsb29yOmZhaWxlZDpyZXZpZXcgY2xlYXJzIHRoZVxuICAgIC8vIGZhaWxlZC1sYWJlbCBnYXRlIHNvIHRoZSBuZXh0IHB1c2ggdG8gdGhlIGltcGwgUFIgY2FuIHJldHJpZ2dlclxuICAgIC8vIHJldmlldyBuYXR1cmFsbHk7IHRoZXJlIGlzIG5vIGlzc3VlLXNpZGUgYWN0aW9uIHRvIHRha2UgaGVyZS4gVGhlXG4gICAgLy8gZGVzY3JpcHRpdmUgcmVhc29uIG1ha2VzIHRoaXMgdmlzaWJsZSBpbiByb3V0ZXIgbG9ncyBhbmQgbWF0Y2hlcyB0aGVcbiAgICAvLyByZXRyeSBpbnN0cnVjdGlvbnMgc3VyZmFjZWQgYnkgcmVwb3J0LWZhaWx1cmUgZm9yIHN0YWdlPXJldmlldy5cbiAgICBpZiAoZmFpbGVkU3RhZ2UgPT09IFwicmV2aWV3XCIgJiYgbGFiZWxzLmhhcyhcInNob3BmbG9vcjpuZWVkcy1yZXZpZXdcIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAgIHJlYXNvbjogXCJyZXRyeV9yZXZpZXdfY2xlYXJlZF9hd2FpdGluZ19uZXh0X3B1c2hcIixcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYHJldHJ5XyR7ZmFpbGVkU3RhZ2V9X25vX3N0YXRlX2xhYmVsX3ByZXNlbnRgLFxuICAgIH07XG4gIH1cblxuICAvLyBGYWlsZWQtbGFiZWwgZ2F0ZTogYW55IGlzc3VlIGNhcnJ5aW5nIHNob3BmbG9vcjpmYWlsZWQ6KiBpcyBwYXJrZWQgdW50aWwgYVxuICAvLyBodW1hbiByZW1vdmVzIHRoYXQgbGFiZWwuIFRoaXMgcHJldmVudHMgdGhlIHNlY29uZCBydW4gb2YgYSBkb3VibGUtZmlyZWQgZXZlbnRcbiAgLy8gKG9wZW5lZCArIGxhYmVsZWQgb24gdGhlIHNhbWUgb3BlbikgZnJvbSByZS10cmlnZ2VyaW5nIHRyaWFnZSBhZnRlciB0aGUgZmlyc3RcbiAgLy8gcnVuIGFscmVhZHkgcmVjb3JkZWQgYSBmYWlsdXJlLlxuICBjb25zdCBibG9ja2luZ0ZhaWxlZCA9IGZhaWxlZExhYmVsKGxhYmVscyk7XG4gIGlmIChibG9ja2luZ0ZhaWxlZCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYGJsb2NrZWRfYnlfJHtibG9ja2luZ0ZhaWxlZH1gLFxuICAgIH07XG4gIH1cblxuICBpZiAoXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwidW5sYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lID09PSBcInNob3BmbG9vcjpyZXZpZXctc3R1Y2tcIlxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogXCJyZXZpZXdfc3R1Y2tfcmVtb3ZlZF9mb3JjZV9yZXZpZXdcIixcbiAgICB9O1xuICB9XG5cbiAgLy8gVHJpZ2dlci1sYWJlbCBnYXRpbmc6IHdoZW4gYSB0cmlnZ2VyIGxhYmVsIGlzIGNvbmZpZ3VyZWQsIHdlIG9ubHkgbGV0IGlzc3Vlc1xuICAvLyBlbnRlciB0aGUgcGlwZWxpbmUgaWYgdGhleSBjYXJyeSBpdC4gSXNzdWVzIGFscmVhZHkgbWlkLXBpcGVsaW5lIChpZGVudGlmaWVkIGJ5XG4gIC8vIGFueSBzaG9wZmxvb3I6KiBzdGF0ZSBsYWJlbCkgYXJlIGdyYW5kZmF0aGVyZWQgaW4gc28gcmVtb3ZpbmcgdGhlIHRyaWdnZXIgbGFiZWxcbiAgLy8gbGF0ZXIgZG9lcyBub3Qgc3RyYW5kIGluLWZsaWdodCB3b3JrLlxuICBpZiAoXG4gICAgdHJpZ2dlckxhYmVsICYmXG4gICAgdHJpZ2dlckxhYmVsLmxlbmd0aCA+IDAgJiZcbiAgICAhbGFiZWxzLmhhcyh0cmlnZ2VyTGFiZWwpICYmXG4gICAgIWhhc1N0YXRlTGFiZWxcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCBpc3N1ZU51bWJlciwgcmVhc29uOiBcInRyaWdnZXJfbGFiZWxfYWJzZW50XCIgfTtcbiAgfVxuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJ1bmxhYmVsZWRcIiAmJlxuICAgIHBheWxvYWQubGFiZWw/Lm5hbWUgPT09IFwic2hvcGZsb29yOmF3YWl0aW5nLWluZm9cIlxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwidHJpYWdlXCIsXG4gICAgICBpc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogXCJyZV90cmlhZ2VfYWZ0ZXJfY2xhcmlmaWNhdGlvblwiLFxuICAgIH07XG4gIH1cblxuICAvLyBNYW51YWwgc3RhZ2UgcmUtcnVuOiBhZGRpbmcgc2hvcGZsb29yOnJldmlzZSB0ZWxscyBTaG9wZmxvb3IgdG8gcmUtcnVuXG4gIC8vIHdoYXRldmVyIHN0YWdlIHRoZSBpc3N1ZSBpcyBjdXJyZW50bHkgcGFya2VkIGluICgqLWluLXJldmlldykuIFRoZSBzdGFnZSdzXG4gIC8vIGFwcGx5IHN0ZXAgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSByZXZpc2UgbGFiZWwgc28gdGhlIHRyaWdnZXJcbiAgLy8gZG9lcyBub3QgZG91YmxlLWZpcmUuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJsYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lID09PSBcInNob3BmbG9vcjpyZXZpc2VcIlxuICApIHtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjphd2FpdGluZy1pbmZvXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFnZTogXCJ0cmlhZ2VcIixcbiAgICAgICAgaXNzdWVOdW1iZXIsXG4gICAgICAgIHJlYXNvbjogXCJyZXZpc2VfbGFiZWxfYWRkZWRfcmVfdHJpYWdlXCIsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkZXJpdmVkID0gY29tcHV0ZVJldmlzZVN0YWdlRnJvbUxhYmVscyhsYWJlbHMsIHBheWxvYWQuaXNzdWUpO1xuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm4geyAuLi5kZXJpdmVkLCByZWFzb246IFwicmV2aXNlX2xhYmVsX2FkZGVkXCIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgcmVhc29uOiBcInJldmlzZV9sYWJlbF9hZGRlZF9ub19pbl9yZXZpZXdfc3RhdGVcIixcbiAgICB9O1xuICB9XG5cbiAgLy8gV2hlbiBhIHRyaWdnZXIgbGFiZWwgaXMgY29uZmlndXJlZCwgb3BlbmluZyBhbiBpc3N1ZSB3aXRoIHRoYXQgbGFiZWwgYWxyZWFkeVxuICAvLyBwcmVzZW50IGZpcmVzIEJPVEggYW4gJ29wZW5lZCcgZXZlbnQgYW5kIGEgJ2xhYmVsZWQnIGV2ZW50LiBXZSB0cmVhdCB0aGVcbiAgLy8gJ2xhYmVsZWQnIGV2ZW50IGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBlbnRyeSBhbmQgc3VwcHJlc3MgJ29wZW5lZCdcbiAgLy8gdG8gYXZvaWQgZG91YmxlLXRyaWdnZXJpbmcgdHJpYWdlLiBJZiB0aGUgdHJpZ2dlciBsYWJlbCBpcyBhYnNlbnQsIHRoZSBnYXRlXG4gIC8vIGFib3ZlIGFscmVhZHkgcmV0dXJuZWQ7IHRoaXMgYnJhbmNoIG9ubHkgcnVucyB3aGVuIHRoZSBsYWJlbCBJUyBwcmVzZW50LlxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwib3BlbmVkXCIgJiYgdHJpZ2dlckxhYmVsICYmIHRyaWdnZXJMYWJlbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIGlzc3VlTnVtYmVyLFxuICAgICAgcmVhc29uOiBcIm9wZW5lZF9kZWZlcnJlZF90b19sYWJlbGVkX2V2ZW50XCIsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gXCJvcGVuZWRcIiAmJiAhaGFzU3RhdGVMYWJlbCkge1xuICAgIHJldHVybiB7IHN0YWdlOiBcInRyaWFnZVwiLCBpc3N1ZU51bWJlciB9O1xuICB9XG5cbiAgLy8gV2hlbiBhIHRyaWdnZXIgbGFiZWwgaXMgY29uZmlndXJlZCwgYWRkaW5nIGl0IHRvIGEgcHJldmlvdXNseS1pZ25vcmVkIGlzc3VlXG4gIC8vIChvciBvcGVuaW5nIGFuIGlzc3VlIHdpdGggaXQgYWxyZWFkeSBwcmVzZW50KSBlbnRlcnMgdGhlIHBpcGVsaW5lIGF0IHRyaWFnZS5cbiAgaWYgKFxuICAgIHRyaWdnZXJMYWJlbCAmJlxuICAgIHRyaWdnZXJMYWJlbC5sZW5ndGggPiAwICYmXG4gICAgcGF5bG9hZC5hY3Rpb24gPT09IFwibGFiZWxlZFwiICYmXG4gICAgcGF5bG9hZC5sYWJlbD8ubmFtZSA9PT0gdHJpZ2dlckxhYmVsICYmXG4gICAgIWhhc1N0YXRlTGFiZWxcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwidHJpYWdlXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IFwidHJpZ2dlcl9sYWJlbF9hZGRlZFwiIH07XG4gIH1cblxuICAvLyBTdGF0ZS1sYWJlbCBhZHZhbmNlbWVudDogb25seSBmaXJlIHdoZW4gdGhlIGV2ZW50IGlzIGEgJ2xhYmVsZWQnIGFjdGlvbiBBTkQgdGhlXG4gIC8vIGxhYmVsIHRoYXQgd2FzIGp1c3QgYWRkZWQgaXMgb25lIG9mIHRoZSBhZHZhbmNlbWVudCBzdGF0ZSBsYWJlbHMuIFRoaXMgcHJldmVudHNcbiAgLy8gaW5jaWRlbnRhbCBldmVudHMgKGVkaXRlZCwgYXNzaWduZWQsIHVucmVsYXRlZCBsYWJlbHMsIHF1ZXVlZCByZS1ydW5zIG9mIGVhcmxpZXJcbiAgLy8gZXZlbnRzKSBmcm9tIHJlLWVudGVyaW5nIHNwZWMvcGxhbi9pbXBsZW1lbnQgZm9yIGFuIGFscmVhZHktYWR2YW5jZWQgaXNzdWUuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJsYWJlbGVkXCIgJiZcbiAgICBwYXlsb2FkLmxhYmVsPy5uYW1lICYmXG4gICAgQURWQU5DRU1FTlRfU1RBVEVfTEFCRUxTLmhhcyhwYXlsb2FkLmxhYmVsLm5hbWUpXG4gICkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBjb21wdXRlU3RhZ2VGcm9tTGFiZWxzKGxhYmVscywgcGF5bG9hZC5pc3N1ZSk7XG4gICAgaWYgKGRlcml2ZWQpIHJldHVybiBkZXJpdmVkO1xuICB9XG5cbiAgaWYgKGxhYmVscy5oYXMoXCJzaG9wZmxvb3I6YXdhaXRpbmctaW5mb1wiKSkge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgaXNzdWVOdW1iZXIsIHJlYXNvbjogXCJhd2FpdGluZ19pbmZvX3BhdXNlZFwiIH07XG4gIH1cblxuICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGlzc3VlTnVtYmVyLCByZWFzb246IFwibm9fbWF0Y2hpbmdfbGFiZWxfcnVsZVwiIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQdWxsUmVxdWVzdEV2ZW50KHBheWxvYWQ6IFB1bGxSZXF1ZXN0UGF5bG9hZCk6IFJvdXRlckRlY2lzaW9uIHtcbiAgY29uc3QgcHIgPSBwYXlsb2FkLnB1bGxfcmVxdWVzdDtcbiAgY29uc3QgbWV0YSA9IHBhcnNlUHJNZXRhZGF0YShwci5ib2R5KTtcbiAgaWYgKCFtZXRhKSByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJwcl9oYXNfbm9fc2hvcGZsb29yX21ldGFkYXRhXCIgfTtcblxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwiY2xvc2VkXCIgJiYgcHIubWVyZ2VkKSB7XG4gICAgLy8gUmV2aWV3IFBScyBkb24ndCBoYXZlIGEgbWVyZ2UtZHJpdmVuIHRyYW5zaXRpb246IHRoZSByZXZpZXcgc3RhZ2Unc1xuICAgIC8vIHZlcmRpY3QgYWxyZWFkeSBhZHZhbmNlZCBzdGF0ZS4gT25seSB0aGUgdGhyZWUgYXJ0aWZhY3QtcHJvZHVjaW5nIHN0YWdlc1xuICAgIC8vIG5lZWQgdGhlIG1lcmdlLXRpbWUgbGFiZWwgZmxpcC5cbiAgICBpZiAoXG4gICAgICBtZXRhLnN0YWdlID09PSBcInNwZWNcIiB8fFxuICAgICAgbWV0YS5zdGFnZSA9PT0gXCJwbGFuXCIgfHxcbiAgICAgIG1ldGEuc3RhZ2UgPT09IFwiaW1wbGVtZW50XCJcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgICAgaXNzdWVOdW1iZXI6IG1ldGEuaXNzdWVOdW1iZXIsXG4gICAgICAgIGFkdmFuY2VPbk1lcmdlOiB7IG1lcmdlZFN0YWdlOiBtZXRhLnN0YWdlLCBwck51bWJlcjogcHIubnVtYmVyIH0sXG4gICAgICAgIHJlYXNvbjogYHByX21lcmdlZF8ke21ldGEuc3RhZ2V9X3RyaWdnZXJlZF9sYWJlbF9mbGlwYCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIHJlYXNvbjogYHByX21lcmdlZF8ke21ldGEuc3RhZ2V9X25vX3RyYW5zaXRpb25gLFxuICAgIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IFwiY2xvc2VkXCIpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJwcl9jbG9zZWRfbm90X21lcmdlZF9pZ25vcmVkXCIgfTtcbiAgfVxuXG4gIC8vIFdJUCBsYWJlbCByZW1vdmFsIG9uIGFuIGltcGwgUFIgdHJpZ2dlcnMgcmV2aWV3IC0tIHRoZSBub24tZHJhZnRcbiAgLy8gZXF1aXZhbGVudCBvZiByZWFkeV9mb3JfcmV2aWV3LiBOb24tV0lQIHVubGFiZWxlZCBldmVudHMgZmFsbFxuICAvLyB0aHJvdWdoIHRvIHRoZSBjYXRjaC1hbGwgYW5kIHJldHVybiBzdGFnZTogXCJub25lXCIuXG4gIGlmIChcbiAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJ1bmxhYmVsZWRcIiAmJlxuICAgIHBheWxvYWQubGFiZWw/Lm5hbWUgPT09IFwic2hvcGZsb29yOndpcFwiICYmXG4gICAgbWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIlxuICApIHtcbiAgICBjb25zdCBsYWJlbHMgPSBwckxhYmVsU2V0KHByKTtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpza2lwLXJldmlld1wiKSkge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfcHJlc2VudFwiIH07XG4gICAgfVxuICAgIGlmIChwci5kcmFmdCkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICAgIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfY2xvc2VkXCIgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgcmV2aWV3SXRlcmF0aW9uOiBtZXRhLnJldmlld0l0ZXJhdGlvbixcbiAgICAgIHJldmlld0Vycm9yQ291bnQ6IG1ldGEucmV2aWV3RXJyb3JDb3VudCxcbiAgICB9O1xuICB9XG5cbiAgLy8gYHN5bmNocm9uaXplYCBmaXJlcyBvbiBldmVyeSBwdXNoIHRvIHRoZSBpbXBsIGJyYW5jaCAoZmlyc3QgaW1wbCBydW4gYW5kXG4gIC8vIGV2ZXJ5IHN1YnNlcXVlbnQgcmV2aXNpb24pLiBgcmVhZHlfZm9yX3Jldmlld2AgZmlyZXMgb25jZSB3aGVuIHRoZSBpbXBsXG4gIC8vIGpvYiB1bi1kcmFmdHMgdGhlIFBSIGFmdGVyIGl0cyBmaW5hbCBwb3N0LWFnZW50IHB1c2g6IHRoZSBpbml0aWFsXG4gIC8vIHN5bmNocm9uaXplIGFycml2ZXMgd2hpbGUgdGhlIFBSIGlzIHN0aWxsIGEgZHJhZnQgKGFuZCBpcyBjb3JyZWN0bHlcbiAgLy8gaWdub3JlZCBiZWxvdyksIHNvIHJlYWR5X2Zvcl9yZXZpZXcgaXMgdGhlIGV2ZW50IHRoYXQgYWN0dWFsbHkgcHJvbW90ZXNcbiAgLy8gdGhlIGZpcnN0LWl0ZXJhdGlvbiBpbXBsIHJ1biBpbnRvIHJldmlldy5cbiAgaWYgKFxuICAgIChwYXlsb2FkLmFjdGlvbiA9PT0gXCJzeW5jaHJvbml6ZVwiIHx8XG4gICAgICBwYXlsb2FkLmFjdGlvbiA9PT0gXCJyZWFkeV9mb3JfcmV2aWV3XCIpICYmXG4gICAgbWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIlxuICApIHtcbiAgICBjb25zdCBsYWJlbHMgPSBwckxhYmVsU2V0KHByKTtcbiAgICBpZiAobGFiZWxzLmhhcyhcInNob3BmbG9vcjpza2lwLXJldmlld1wiKSkge1xuICAgICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwic2tpcF9yZXZpZXdfbGFiZWxfcHJlc2VudFwiIH07XG4gICAgfVxuICAgIGlmIChwci5kcmFmdCkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICAgIGlmIChsYWJlbHMuaGFzKFwic2hvcGZsb29yOndpcFwiKSlcbiAgICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgcmVhc29uOiBcInByX2hhc193aXBfbGFiZWxcIiB9O1xuICAgIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfY2xvc2VkXCIgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwicmV2aWV3XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgcmV2aWV3SXRlcmF0aW9uOiBtZXRhLnJldmlld0l0ZXJhdGlvbixcbiAgICAgIHJldmlld0Vycm9yQ291bnQ6IG1ldGEucmV2aWV3RXJyb3JDb3VudCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogXCJub25lXCIsXG4gICAgcmVhc29uOiBgcHJfYWN0aW9uXyR7cGF5bG9hZC5hY3Rpb259X29uXyR7bWV0YS5zdGFnZX1fbm9fYWN0aW9uYCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVB1bGxSZXF1ZXN0UmV2aWV3RXZlbnQoXG4gIHBheWxvYWQ6IFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZCxcbiAgc2hvcGZsb29yQm90TG9naW4/OiBzdHJpbmcsXG4pOiBSb3V0ZXJEZWNpc2lvbiB7XG4gIGNvbnN0IHByID0gcGF5bG9hZC5wdWxsX3JlcXVlc3Q7XG4gIGNvbnN0IG1ldGEgPSBwYXJzZVByTWV0YWRhdGEocHIuYm9keSk7XG4gIGlmICghbWV0YSkgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaGFzX25vX3Nob3BmbG9vcl9tZXRhZGF0YVwiIH07XG5cbiAgaWYgKHBheWxvYWQuYWN0aW9uICE9PSBcInN1Ym1pdHRlZFwiKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IGByZXZpZXdfYWN0aW9uXyR7cGF5bG9hZC5hY3Rpb259X2lnbm9yZWRgIH07XG4gIH1cblxuICBpZiAocGF5bG9hZC5yZXZpZXcuc3RhdGUgIT09IFwiY2hhbmdlc19yZXF1ZXN0ZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICByZWFzb246IGByZXZpZXdfc3RhdGVfJHtwYXlsb2FkLnJldmlldy5zdGF0ZX1fbm9fYWN0aW9uYCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaXNTaG9wZmxvb3JSZXZpZXcgPVxuICAgIHNob3BmbG9vckJvdExvZ2luICE9PSB1bmRlZmluZWQgJiZcbiAgICBwYXlsb2FkLnJldmlldy51c2VyLmxvZ2luID09PSBzaG9wZmxvb3JCb3RMb2dpbjtcblxuICBpZiAobWV0YS5zdGFnZSA9PT0gXCJpbXBsZW1lbnRcIikge1xuICAgIC8vIHYyOiBwYXJzZVN0YWdlQnJhbmNoUmVmIGlzIHNpbmdsZS1hcmc7IGNoZWNrIHBhcnNlZC5zdGFnZSA9PT0gXCJpbXBsXCJcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVN0YWdlQnJhbmNoUmVmKHByLmhlYWQucmVmKTtcbiAgICBpZiAoIXBhcnNlZCB8fCBwYXJzZWQuc3RhZ2UgIT09IFwiaW1wbFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFnZTogXCJub25lXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBtZXRhLmlzc3VlTnVtYmVyLFxuICAgICAgICByZWFzb246IFwiaW1wbF9yZXZpc2lvbl91bnBhcnNlYWJsZV9icmFuY2hfcmVmXCIsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2U6IFwiaW1wbGVtZW50XCIsXG4gICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgIHJldmlzaW9uTW9kZTogdHJ1ZSxcbiAgICAgIHJldmlld0l0ZXJhdGlvbjogbWV0YS5yZXZpZXdJdGVyYXRpb24sXG4gICAgICBicmFuY2hOYW1lOiBwci5oZWFkLnJlZixcbiAgICAgIGltcGxQck51bWJlcjogcHIubnVtYmVyLFxuICAgICAgc3BlY0ZpbGVQYXRoOiBgZG9jcy9zaG9wZmxvb3Ivc3BlY3MvJHtwYXJzZWQuaXNzdWVOdW1iZXJ9LSR7cGFyc2VkLnNsdWd9Lm1kYCxcbiAgICAgIHBsYW5GaWxlUGF0aDogYGRvY3Mvc2hvcGZsb29yL3BsYW5zLyR7cGFyc2VkLmlzc3VlTnVtYmVyfS0ke3BhcnNlZC5zbHVnfS5tZGAsXG4gICAgICByZWFzb246IGlzU2hvcGZsb29yUmV2aWV3XG4gICAgICAgID8gXCJhZ2VudF9yZXF1ZXN0ZWRfY2hhbmdlc1wiXG4gICAgICAgIDogXCJodW1hbl9yZXF1ZXN0ZWRfY2hhbmdlc1wiLFxuICAgIH07XG4gIH1cblxuICAvLyBTcGVjIGFuZCBwbGFuIFBScyBnbyB0aHJvdWdoIGh1bWFuIHJldmlldy4gQSBSRVFVRVNUX0NIQU5HRVMgaGVyZSBtZWFuc1xuICAvLyB0aGUgaHVtYW4gd2FudHMgdGhlIGFnZW50IHRvIHJld3JpdGUgdGhlIGRlc2lnbiBhcnRpZmFjdC4gUmVjb3ZlciB0aGVcbiAgLy8gYnJhbmNoIG5hbWUgYW5kIHRoZSBjYW5vbmljYWwgc3BlYy9wbGFuIGZpbGUgcGF0aCBmcm9tIHRoZSBQUidzIGhlYWRcbiAgLy8gcmVmIHNvIHRoZSBkb3duc3RyZWFtIHN0YWdlIGhhcyBldmVyeXRoaW5nIGl0IG5lZWRzIHRvIHVwc2VydCB0aGVcbiAgLy8gZXhpc3RpbmcgUFIgaW5zdGVhZCBvZiBvcGVuaW5nIGEgbmV3IG9uZS4gRmFpbCBjbG9zZWQgb24gdW5wYXJzZWFibGVcbiAgLy8gcmVmcyB0aGUgc2FtZSB3YXkgdGhlIGltcGxlbWVudCBicmFuY2ggZG9lcy5cbiAgaWYgKG1ldGEuc3RhZ2UgPT09IFwic3BlY1wiIHx8IG1ldGEuc3RhZ2UgPT09IFwicGxhblwiKSB7XG4gICAgLy8gdjI6IHBhcnNlU3RhZ2VCcmFuY2hSZWYgaXMgc2luZ2xlLWFyZzsgY2hlY2sgcGFyc2VkLnN0YWdlIG1hdGNoZXMgbWV0YS5zdGFnZVxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3RhZ2VCcmFuY2hSZWYocHIuaGVhZC5yZWYpO1xuICAgIGlmICghcGFyc2VkIHx8IHBhcnNlZC5zdGFnZSAhPT0gbWV0YS5zdGFnZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhZ2U6IFwibm9uZVwiLFxuICAgICAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICAgICAgcmVhc29uOiBgJHttZXRhLnN0YWdlfV9yZXZpc2lvbl91bnBhcnNlYWJsZV9icmFuY2hfcmVmYCxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNwZWNGaWxlUGF0aCA9IGBkb2NzL3Nob3BmbG9vci9zcGVjcy8ke3BhcnNlZC5pc3N1ZU51bWJlcn0tJHtwYXJzZWQuc2x1Z30ubWRgO1xuICAgIGNvbnN0IHBsYW5GaWxlUGF0aCA9IGBkb2NzL3Nob3BmbG9vci9wbGFucy8ke3BhcnNlZC5pc3N1ZU51bWJlcn0tJHtwYXJzZWQuc2x1Z30ubWRgO1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZTogbWV0YS5zdGFnZSxcbiAgICAgIGlzc3VlTnVtYmVyOiBtZXRhLmlzc3VlTnVtYmVyLFxuICAgICAgcmV2aXNpb25Nb2RlOiB0cnVlLFxuICAgICAgYnJhbmNoTmFtZTogcHIuaGVhZC5yZWYsXG4gICAgICBzcGVjRmlsZVBhdGgsXG4gICAgICAuLi4obWV0YS5zdGFnZSA9PT0gXCJwbGFuXCIgPyB7IHBsYW5GaWxlUGF0aCB9IDoge30pLFxuICAgICAgcmVhc29uOiBpc1Nob3BmbG9vclJldmlld1xuICAgICAgICA/IFwiYWdlbnRfcmVxdWVzdGVkX2NoYW5nZXNcIlxuICAgICAgICA6IFwiaHVtYW5fcmVxdWVzdGVkX2NoYW5nZXNcIixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogbWV0YS5zdGFnZSxcbiAgICBpc3N1ZU51bWJlcjogbWV0YS5pc3N1ZU51bWJlcixcbiAgICByZXZpc2lvbk1vZGU6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmV2aWV3T25seShwYXlsb2FkOiBQdWxsUmVxdWVzdFBheWxvYWQpOiBSb3V0ZXJEZWNpc2lvbiB7XG4gIGNvbnN0IHByID0gcGF5bG9hZC5wdWxsX3JlcXVlc3Q7XG5cbiAgLy8gUFJzIGF1dGhvcmVkIGJ5IHRoZSBmdWxsIFNob3BmbG9vciBwaXBlbGluZSBjYXJyeSBtZXRhZGF0YS4gTGV0IHRoZVxuICAvLyBmdWxsIHBpcGVsaW5lIGhhbmRsZSB0aGVtOyB0aGlzIHdvcmtmbG93IGlzIGZvciBodW1hbi1hdXRob3IgUFJzIG9ubHkuXG4gIGNvbnN0IG1ldGEgPSBwYXJzZVByTWV0YWRhdGEocHIuYm9keSk7XG4gIGlmIChtZXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlOiBcIm5vbmVcIixcbiAgICAgIHJlYXNvbjogXCJwcl9oYXNfc2hvcGZsb29yX21ldGFkYXRhX3VzZV9mdWxsX3BpcGVsaW5lXCIsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChwci5zdGF0ZSA9PT0gXCJjbG9zZWRcIikge1xuICAgIHJldHVybiB7IHN0YWdlOiBcIm5vbmVcIiwgcmVhc29uOiBcInByX2lzX2Nsb3NlZFwiIH07XG4gIH1cbiAgaWYgKHByLmRyYWZ0KSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IFwibm9uZVwiLCByZWFzb246IFwicHJfaXNfZHJhZnRcIiB9O1xuICB9XG4gIGlmIChwckxhYmVsU2V0KHByKS5oYXMoXCJzaG9wZmxvb3I6c2tpcC1yZXZpZXdcIikpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIHJlYXNvbjogXCJza2lwX3Jldmlld19sYWJlbF9wcmVzZW50XCIgfTtcbiAgfVxuXG4gIC8vIEZpcnN0IHJldmlldyBjeWNsZSBzdGFydHMgYXQgMDsgc3Vic2VxdWVudCBydW5zIHJlYWQgdGhlIGZvb3RlciB0aGF0XG4gIC8vIGFnZ3JlZ2F0ZS1yZXZpZXcgYXBwZW5kcyBvbiB0aGUgZmlyc3QgUkVRVUVTVF9DSEFOR0VTLlxuICBjb25zdCBpdGVyTWF0Y2ggPSBwci5ib2R5Py5tYXRjaCgvU2hvcGZsb29yLVJldmlldy1JdGVyYXRpb246XFxzKihcXGQrKS8pO1xuICBjb25zdCByZXZpZXdJdGVyYXRpb24gPSBpdGVyTWF0Y2ggPyBOdW1iZXIoaXRlck1hdGNoWzFdKSA6IDA7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFnZTogXCJyZXZpZXdcIixcbiAgICBpbXBsUHJOdW1iZXI6IHByLm51bWJlcixcbiAgICByZXZpZXdJdGVyYXRpb24sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBZ2VudEFkYXB0ZXIgfSBmcm9tIFwiLi9hZ2VudHMvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgQWdlbnRFcnJvciB9IGZyb20gXCIuL2FnZW50cy9hZGFwdGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEF1ZGl0RW1pdHRlciB9IGZyb20gXCIuL2F1ZGl0L2V2ZW50cy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi9jb25maWcvaW5wdXRzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdpdEh1YkFkYXB0ZXIgfSBmcm9tIFwiLi9naXRodWIvYWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgUlVOTkVSUyB9IGZyb20gXCIuL3J1bm5lcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgR2l0T3BzLCBTdGFnZUNvbnRleHQgfSBmcm9tIFwiLi9zdGFnZXMvX3NoYXJlZC9jb250ZXh0LmpzXCI7XG5pbXBvcnQge1xuICBmYWlsZWRMYWJlbEZvcixcbiAgTEFCRUxfREVGUyxcbiAgTEFCRUxTLFxuICBydW5uaW5nTGFiZWxGb3IsXG4gIHR5cGUgU3RhZ2UsXG59IGZyb20gXCIuL3N0YXRlL2xhYmVscy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVJldmlld09ubHksIHJlc29sdmVTdGFnZSB9IGZyb20gXCIuL3N0YXRlL21hY2hpbmUuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnRQYXlsb2FkLFxuICBJc3N1ZVBheWxvYWQsXG4gIFB1bGxSZXF1ZXN0UGF5bG9hZCxcbiAgUHVsbFJlcXVlc3RSZXZpZXdQYXlsb2FkLFxuICBSb3V0ZXJEZWNpc2lvbixcbn0gZnJvbSBcIi4vc3RhdGUvdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcmNoZXN0cmF0b3JSZXN1bHQge1xuICBzdGFnZTogU3RhZ2UgfCBcIm5vbmVcIjtcbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JjaGVzdHJhdG9yQXJncyB7XG4gIGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcGF5bG9hZDogRXZlbnRQYXlsb2FkIH07XG4gIHJlcG86IHsgb3duZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG4gIGdpdGh1YjogR2l0SHViQWRhcHRlcjtcbiAgcmV2aWV3R2l0aHViOiBHaXRIdWJBZGFwdGVyIHwgbnVsbDtcbiAgYWdlbnQ6IEFnZW50QWRhcHRlcjtcbiAgYXVkaXQ6IEF1ZGl0RW1pdHRlcjtcbiAgY29uZmlnOiBDb25maWc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHNob3BmbG9vckJvdExvZ2luPzogc3RyaW5nO1xuICAvLyBXaGVuIHRydWUsIHJvdXRlIHB1bGxfcmVxdWVzdCBldmVudHMgdmlhIHJlc29sdmVSZXZpZXdPbmx5KCkgaW5zdGVhZCBvZlxuICAvLyByZXNvbHZlU3RhZ2UoKS4gVXNlZCBieSB0aGUgcmV2aWV3LW9ubHkgY2FsbGVyIHdvcmtmbG93IChlLmcuXG4gIC8vIGRvZ2Zvb2QtcmV2aWV3LnltbCkgdG8gYWRkIGFnZW50IHJldmlldyBvbiBodW1hbi1hdXRob3JlZCBQUnMgdGhhdFxuICAvLyBjYXJyeSBubyBTaG9wZmxvb3IgbWV0YWRhdGEuIE5vLW9wIGZvciBub24tcHVsbF9yZXF1ZXN0IGV2ZW50cy5cbiAgcmV2aWV3T25seT86IGJvb2xlYW47XG4gIC8vIEdpdCBoZWxwZXJzIHNlZWRlZCB3aXRoIHRoZSByZXNvbHZlZCBBdXRoU3BlYyBieSBlbnRyeS50cy4gUGx1bWJlZCBpbnRvXG4gIC8vIFN0YWdlQ29udGV4dCBzbyB0aGUgaW1wbGVtZW50IHJ1bm5lciBjYW4gY29uZmlndXJlIHRoZSB3b3JraW5nIHRyZWUgYW5kXG4gIC8vIHB1c2ggdGhlIGFnZW50J3MgY29tbWl0cy4gT3B0aW9uYWwgZm9yIHVuaXQvZTJlIHRlc3RzIHRoYXQgZHJpdmUgdGhlXG4gIC8vIG9yY2hlc3RyYXRvciB3aXRob3V0IGEgcmVhbCBjaGVja291dC5cbiAgZ2l0T3BzPzogR2l0T3BzO1xufVxuXG5jb25zdCBUUklBR0VfQkxPQ0tJTkdfU1RBVEVfTEFCRUxTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgTEFCRUxTLnRyaWFnaW5nLFxuICBMQUJFTFMubmVlZHNTcGVjLFxuICBMQUJFTFMubmVlZHNQbGFuLFxuICBMQUJFTFMubmVlZHNJbXBsLFxuICBMQUJFTFMuaW1wbEluUmV2aWV3LFxuICBMQUJFTFMubmVlZHNSZXZpZXcsXG4gIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzLFxuICBMQUJFTFMucmV2aWV3QXBwcm92ZWQsXG4gIExBQkVMUy5yZXZpZXdTdHVjayxcbiAgTEFCRUxTLmRvbmUsXG4gIExBQkVMUy5jb21wbGV4aXR5UXVpY2ssXG4gIExBQkVMUy5jb21wbGV4aXR5TWVkaXVtLFxuICBMQUJFTFMuY29tcGxleGl0eUxhcmdlLFxuXSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5PcmNoZXN0cmF0b3IoXG4gIGFyZ3M6IE9yY2hlc3RyYXRvckFyZ3MsXG4pOiBQcm9taXNlPE9yY2hlc3RyYXRvclJlc3VsdD4ge1xuICBjb25zdCBsaXZlTGFiZWxzID0gZXh0cmFjdEV2ZW50TGFiZWxzKGFyZ3MuZXZlbnQpO1xuICBjb25zdCB0cmlnZ2VyTGFiZWwgPSBhcmdzLmNvbmZpZy50cmlnZ2VyTGFiZWwgPz8gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGRlY2lzaW9uID1cbiAgICBhcmdzLnJldmlld09ubHkgJiYgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdFwiXG4gICAgICA/IHJlc29sdmVSZXZpZXdPbmx5KGFyZ3MuZXZlbnQucGF5bG9hZCBhcyBQdWxsUmVxdWVzdFBheWxvYWQpXG4gICAgICA6IHJlc29sdmVTdGFnZSh7XG4gICAgICAgICAgZXZlbnROYW1lOiBhcmdzLmV2ZW50Lm5hbWUsXG4gICAgICAgICAgcGF5bG9hZDogYXJncy5ldmVudC5wYXlsb2FkLFxuICAgICAgICAgIC4uLih0cmlnZ2VyTGFiZWwgIT09IHVuZGVmaW5lZCA/IHsgdHJpZ2dlckxhYmVsIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxpdmVMYWJlbHMgIT09IHVuZGVmaW5lZCA/IHsgbGl2ZUxhYmVscyB9IDoge30pLFxuICAgICAgICAgIC4uLihhcmdzLnNob3BmbG9vckJvdExvZ2luICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8geyBzaG9wZmxvb3JCb3RMb2dpbjogYXJncy5zaG9wZmxvb3JCb3RMb2dpbiB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG5cbiAgY29uc3Qgcm91dGluZ0NvbnRleHQgPSBleHRyYWN0Um91dGluZ0NvbnRleHQoYXJncy5ldmVudCwgbGl2ZUxhYmVscyk7XG4gIGFyZ3MuYXVkaXQoe1xuICAgIHR5cGU6IFwic3RhZ2VfcmVzb2x2ZWRcIixcbiAgICBzdGFnZTogZGVjaXNpb24uc3RhZ2UsXG4gICAgcmVhc29uOiBkZWNpc2lvbi5yZWFzb24gPz8gXCJcIixcbiAgICAuLi4oZGVjaXNpb24uaXNzdWVOdW1iZXIgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IGlzc3VlTnVtYmVyOiBkZWNpc2lvbi5pc3N1ZU51bWJlciB9XG4gICAgICA6IHt9KSxcbiAgICBldmVudE5hbWU6IGFyZ3MuZXZlbnQubmFtZSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQuYWN0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBhY3Rpb246IHJvdXRpbmdDb250ZXh0LmFjdGlvbiB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQubGFiZWxOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBsYWJlbE5hbWU6IHJvdXRpbmdDb250ZXh0LmxhYmVsTmFtZSB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocm91dGluZ0NvbnRleHQucGF5bG9hZExhYmVscyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgcGF5bG9hZExhYmVsczogcm91dGluZ0NvbnRleHQucGF5bG9hZExhYmVscyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4obGl2ZUxhYmVscyAhPT0gdW5kZWZpbmVkID8geyBsaXZlTGFiZWxzIH0gOiB7fSksXG4gIH0pO1xuXG4gIC8vIGFkdmFuY2VPbk1lcmdlIGlzIGEgcHVyZSBsYWJlbC1mbGlwIHRyYW5zaXRpb24gdGhhdCB0aGUgc3RhdGUgbWFjaGluZVxuICAvLyBhdHRhY2hlcyB0byBhIHN0YWdlPVwibm9uZVwiIGRlY2lzaW9uIHdoZW4gYSBTaG9wZmxvb3Igc3RhZ2UgUFIgbWVyZ2VzLlxuICAvLyBJdCBpcyBvd25lZCBieSB0aGUgcm91dGVyLXNpZGUgcHJpbWFyeSBBcHAgdG9rZW4sIHJlcXVpcmVzIG5vIGFnZW50XG4gIC8vIGludm9jYXRpb24sIG11dGV4LCBvciBwcmVjaGVjay4gSW4gc3BsaXQtcnVubmVyIHdvcmtmbG93cyB0aGUgcmVzb2x2ZVxuICAvLyBqb2IgaXMgdGhlIG9ubHkgam9iIHRoYXQgcnVucyBmb3IgbWVyZ2UgZXZlbnRzICh0aGUgZXhlY3V0ZSBqb2JzIGdhdGVcbiAgLy8gb24gc3RhZ2UgIT0gXCJub25lXCIpLCBzbyB0aGUgZmxpcCBtdXN0IGhhcHBlbiBoZXJlIG9yIGl0IGlzIGRyb3BwZWQgb25cbiAgLy8gdGhlIGZsb29yIGFuZCB0aGUgaXNzdWUgc3RyYW5kcyBhdCA8c3RhZ2U+LWluLXJldmlldy5cbiAgaWYgKFxuICAgIGRlY2lzaW9uLnN0YWdlID09PSBcIm5vbmVcIiAmJlxuICAgIGRlY2lzaW9uLmFkdmFuY2VPbk1lcmdlICE9PSB1bmRlZmluZWQgJiZcbiAgICBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGNvbnN0IGFkdmFuY2VkID0gYXdhaXQgYWR2YW5jZU9uTWVyZ2UoYXJncy5naXRodWIsIGFyZ3MuYXVkaXQsIHtcbiAgICAgIGlzc3VlTnVtYmVyOiBkZWNpc2lvbi5pc3N1ZU51bWJlcixcbiAgICAgIG1lcmdlZFN0YWdlOiBkZWNpc2lvbi5hZHZhbmNlT25NZXJnZS5tZXJnZWRTdGFnZSxcbiAgICAgIHByTnVtYmVyOiBkZWNpc2lvbi5hZHZhbmNlT25NZXJnZS5wck51bWJlcixcbiAgICB9KTtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGV4ZWN1dGVkOiBhZHZhbmNlZCB9O1xuICB9XG5cbiAgaWYgKGFyZ3MuY29uZmlnLm1vZGUgPT09IFwicmVzb2x2ZVwiKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IGRlY2lzaW9uLnN0YWdlLCBleGVjdXRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGlmIChcbiAgICBhcmdzLmNvbmZpZy5tb2RlID09PSBcImV4ZWN1dGVcIiAmJlxuICAgIGFyZ3MuY29uZmlnLnN0YWdlcy5sZW5ndGggPiAwICYmXG4gICAgZGVjaXNpb24uc3RhZ2UgIT09IFwibm9uZVwiICYmXG4gICAgIWFyZ3MuY29uZmlnLnN0YWdlcy5pbmNsdWRlcyhkZWNpc2lvbi5zdGFnZSBhcyBTdGFnZSlcbiAgKSB7XG4gICAgcmV0dXJuIHsgc3RhZ2U6IGRlY2lzaW9uLnN0YWdlLCBleGVjdXRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGlmIChkZWNpc2lvbi5zdGFnZSA9PT0gXCJub25lXCIpIHtcbiAgICByZXR1cm4geyBzdGFnZTogXCJub25lXCIsIGV4ZWN1dGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3Qgc3RhZ2UgPSBkZWNpc2lvbi5zdGFnZSBhcyBTdGFnZTtcbiAgbGV0IGlzc3VlID0gbG9hZElzc3VlRnJvbUV2ZW50KGFyZ3MuZXZlbnQsIGxpdmVMYWJlbHMpO1xuICBjb25zdCBwciA9IGF3YWl0IGxvYWRQckZvclN0YWdlKGFyZ3MsIGRlY2lzaW9uKTtcbiAgLy8gUmVzb2x2ZSB0aGUgcmVwbydzIGRlZmF1bHQgYnJhbmNoIGxhemlseSwgb25seSBvbmNlIHBlciBleGVjdXRlIHBhdGguXG4gIC8vIFN0YWdlIFBScyB0YXJnZXQgdGhpcyBicmFuY2g7IGFzc3VtaW5nIFwibWFpblwiIHNpbGVudGx5IGJyZWFrcyByZXBvcyB0aGF0XG4gIC8vIHNoaXAgZnJvbSBhbnkgb3RoZXIgdHJ1bmsuXG4gIGNvbnN0IGRlZmF1bHRCcmFuY2ggPSBhd2FpdCBhcmdzLmdpdGh1Yi5nZXREZWZhdWx0QnJhbmNoKCk7XG4gIC8vIFByb3Zpc2lvbiBhbnkgbWlzc2luZyBzaG9wZmxvb3I6KiBsYWJlbHMgd2l0aCB0aGVpciBjYW5vbmljYWwgY29sb3JzIGFuZFxuICAvLyBkZXNjcmlwdGlvbnMuIElkZW1wb3RlbnQ6IG9ubHkgY3JlYXRlcyBsYWJlbHMgdGhhdCBkb24ndCBhbHJlYWR5IGV4aXN0LCBzb1xuICAvLyBoYW5kLWVkaXRzIGFuZCByZS1ydW5zIGFyZSBib3RoIHNhZmUuXG4gIGNvbnN0IGNyZWF0ZWRMYWJlbHMgPSBhd2FpdCBhcmdzLmdpdGh1Yi5ib290c3RyYXBMYWJlbHMoTEFCRUxfREVGUyk7XG4gIGlmIChjcmVhdGVkTGFiZWxzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzLmF1ZGl0KHsgdHlwZTogXCJsYWJlbHNfYm9vdHN0cmFwcGVkXCIsIGNyZWF0ZWQ6IGNyZWF0ZWRMYWJlbHMgfSk7XG4gIH1cblxuICAvLyBIeWRyYXRlIHRoZSBpc3N1ZSBmcm9tIHRoZSBBUEkgd2hlbiB0aGUgZXZlbnQgcGF5bG9hZCBkb2Vzbid0IGNhcnJ5IG9uZVxuICAvLyAocHVsbF9yZXF1ZXN0LCBwdWxsX3JlcXVlc3RfcmV2aWV3KS4gQWxsIHN0YWdlcyB0aGF0IHJvdXRlIGZyb20gYSBQUiBldmVudFxuICAvLyBuZWVkIGN0eC5pc3N1ZTogaW1wbGVtZW50IHJlLWVudGVycyB3aGVuIGEgcmV2aWV3ZXIgcmVxdWVzdHMgY2hhbmdlcywgYW5kXG4gIC8vIHJldmlldyB3cml0ZXMgcGlwZWxpbmUtc3RhdGUgbGFiZWxzIChuZWVkcy1yZXZpZXcgXHUyMTkyIHJldmlldy1hcHByb3ZlZCkgb250b1xuICAvLyB0aGUgaXNzdWUsIG5vdCB0aGUgUFIuIFdpdGhvdXQgaHlkcmF0aW9uLCBhcHBseVJldmlldydzIGxhYmVsVGFyZ2V0IGZhbGxzXG4gIC8vIGJhY2sgdG8gdGhlIFBSIG51bWJlciBhbmQgdGhlIGlzc3VlIHN0cmFuZHMgd2l0aCBzdGFsZSBuZWVkcy1yZXZpZXcgd2hpbGVcbiAgLy8gcmV2aWV3LWFwcHJvdmVkIGxhbmRzIG9uIHRoZSB3cm9uZyBvYmplY3QuXG4gIGlmIChpc3N1ZSA9PT0gbnVsbCAmJiBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGl2ZSA9IGF3YWl0IGFyZ3MuZ2l0aHViLmdldElzc3VlKGRlY2lzaW9uLmlzc3VlTnVtYmVyKTtcbiAgICBpc3N1ZSA9IHtcbiAgICAgIG51bWJlcjogZGVjaXNpb24uaXNzdWVOdW1iZXIsXG4gICAgICB0aXRsZTogbGl2ZS50aXRsZSxcbiAgICAgIGJvZHk6IGxpdmUuYm9keSxcbiAgICAgIGxhYmVsczogbGl2ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBjdHg6IFN0YWdlQ29udGV4dCA9IHtcbiAgICBldmVudDogYXJncy5ldmVudC5wYXlsb2FkLFxuICAgIHJlcG86IGFyZ3MucmVwbyxcbiAgICBkZWZhdWx0QnJhbmNoLFxuICAgIGRlY2lzaW9uLFxuICAgIGdpdGh1YjogYXJncy5naXRodWIsXG4gICAgcmV2aWV3R2l0aHViOiBhcmdzLnJldmlld0dpdGh1YixcbiAgICBhZ2VudDogYXJncy5hZ2VudCxcbiAgICBhdWRpdDogYXJncy5hdWRpdCxcbiAgICBjb25maWc6IGFyZ3MuY29uZmlnLFxuICAgIHJ1bklkOiBhcmdzLnJ1bklkLFxuICB9O1xuICBpZiAoaXNzdWUgIT09IG51bGwpIGN0eC5pc3N1ZSA9IGlzc3VlO1xuICBpZiAocHIgIT09IG51bGwpIGN0eC5wciA9IHByO1xuICBpZiAoYXJncy5yZXZpZXdPbmx5ID09PSB0cnVlKSBjdHgucmV2aWV3T25seSA9IHRydWU7XG4gIGlmIChhcmdzLmdpdE9wcyAhPT0gdW5kZWZpbmVkKSBjdHguZ2l0T3BzID0gYXJncy5naXRPcHM7XG5cbiAgLy8gSW4gZXhlY3V0ZSBtb2RlLCB0aGUgcmVzb2x2ZS0+ZXhlY3V0ZSBnYXAgY2FuIGJlIDMwLTYwcywgbG9uZyBlbm91Z2ggZm9yXG4gIC8vIGxhYmVscyB0byBmbGlwIGFmdGVyIHRoZSBldmVudCBmaXJlZC4gRmV0Y2ggbGl2ZSBsYWJlbHMgZnJvbSB0aGUgQVBJIHNvXG4gIC8vIHByZWNoZWNrIHNlZXMgY3VycmVudCBzdGF0ZS4gdjEgY29tbWl0IGFhZWY5NWYuXG4gIGxldCBwcmVjaGVja0xhYmVsczogU2V0PHN0cmluZz47XG4gIGlmIChhcmdzLmNvbmZpZy5tb2RlID09PSBcImV4ZWN1dGVcIiAmJiBkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGl2ZSA9IGF3YWl0IGFyZ3MuZ2l0aHViLmdldElzc3VlKGRlY2lzaW9uLmlzc3VlTnVtYmVyKTtcbiAgICBwcmVjaGVja0xhYmVscyA9IG5ldyBTZXQobGl2ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICBwcmVjaGVja0xhYmVscyA9IG5ldyBTZXQoaXNzdWU/LmxhYmVscyA/PyBbXSk7XG4gIH1cblxuICAvLyBBIGh1bWFuIFJFUVVFU1RfQ0hBTkdFUyBvbiBhbiBpbXBsIFBSIHJvdXRlcyB0aGUgc3RhdGUgbWFjaGluZSB0b1xuICAvLyBpbXBsZW1lbnQrcmV2aXNpb25Nb2RlLCBidXQgdGhlIGlzc3VlIHN0aWxsIGNhcnJpZXMgc2hvcGZsb29yOm5lZWRzLXJldmlld1xuICAvLyAoYW5kIHBvc3NpYmx5IHNob3BmbG9vcjpyZXZpZXctc3R1Y2spLiBBcHBseSB0aGUgdjEgYXBwbHktcmV2aWV3LXJldmlzaW9uXG4gIC8vIGZsaXAgYmVmb3JlIHByZWNoZWNrIHNvIHRoZSBpbXBsZW1lbnQgcHJlY29uZGl0aW9ucyBob2xkIGFuZCB0aGUgbG9vcFxuICAvLyB1bnN0aWNrcy4gVGhlIGFnZW50IHBhdGggKGFnZ3JlZ2F0ZS1yZXZpZXcgdmVyZGljdD1SRVFVRVNUX0NIQU5HRVMpIHdyaXRlc1xuICAvLyB0aGVzZSBsYWJlbHMgaXRzZWxmIGluIHJldmlldy9hcHBseS50czsgb25seSB0aGUgaHVtYW4gcGF0aCBuZWVkcyBoZWxwLlxuICBpZiAoXG4gICAgc3RhZ2UgPT09IFwiaW1wbGVtZW50XCIgJiZcbiAgICBkZWNpc2lvbi5yZXZpc2lvbk1vZGUgPT09IHRydWUgJiZcbiAgICBkZWNpc2lvbi5yZWFzb24gPT09IFwiaHVtYW5fcmVxdWVzdGVkX2NoYW5nZXNcIiAmJlxuICAgIGRlY2lzaW9uLmlzc3VlTnVtYmVyICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgYXdhaXQgYXBwbHlIdW1hblJldmlld1JldmlzaW9uKFxuICAgICAgYXJncy5naXRodWIsXG4gICAgICBhcmdzLmF1ZGl0LFxuICAgICAgZGVjaXNpb24uaXNzdWVOdW1iZXIsXG4gICAgICBwcmVjaGVja0xhYmVscyxcbiAgICApO1xuICAgIGlmIChjdHguaXNzdWUpIGN0eC5pc3N1ZS5sYWJlbHMgPSBBcnJheS5mcm9tKHByZWNoZWNrTGFiZWxzKTtcbiAgfVxuXG4gIGNvbnN0IHByZWNoZWNrID0gcHJlY2hlY2tTdGFnZShzdGFnZSwgcHJlY2hlY2tMYWJlbHMpO1xuICBpZiAoIXByZWNoZWNrLm9rKSB7XG4gICAgYXJncy5hdWRpdCh7IHR5cGU6IFwicHJlY2hlY2tfZmFpbGVkXCIsIHN0YWdlLCByZWFzb246IHByZWNoZWNrLnJlYXNvbiB9KTtcbiAgICByZXR1cm4geyBzdGFnZSwgZXhlY3V0ZWQ6IGZhbHNlIH07XG4gIH1cblxuICBhcmdzLmF1ZGl0KHtcbiAgICB0eXBlOiBcInN0YWdlX3N0YXJ0ZWRcIixcbiAgICBzdGFnZSxcbiAgICBtb2RlbDogbW9kZWxGb3JTdGFnZShzdGFnZSwgYXJncy5jb25maWcpLFxuICAgIHJ1bklkOiBhcmdzLnJ1bklkLFxuICB9KTtcblxuICAvLyBBY3F1aXJlIHRoZSBtdXRleCBtYXJrZXIgYmVmb3JlIHRoZSBzdGFnZSBydW5zLiBFdmVyeSBzdGFnZSBoYXMgYSBtdXRleFxuICAvLyBsYWJlbCAodHJpYWdpbmcgLyBzcGVjLXJ1bm5pbmcgLyBwbGFuLXJ1bm5pbmcgLyBpbXBsZW1lbnRpbmcgLyByZXZpZXctXG4gIC8vIHJ1bm5pbmcpLiBVcGRhdGUgdGhlIGluLW1lbW9yeSBpc3N1ZSBsYWJlbCBzbmFwc2hvdCB0b28gc28gYXBwbHkoKSBndWFyZHNcbiAgLy8gdGhhdCByZWFkIGN0eC5pc3N1ZS5sYWJlbHMgY2FuIG9ic2VydmUgaXQuXG4gIGNvbnN0IG11dGV4ID0gcnVubmluZ0xhYmVsRm9yKHN0YWdlKTtcbiAgaWYgKGRlY2lzaW9uLmlzc3VlTnVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICBhd2FpdCBhcmdzLmdpdGh1Yi5hZGRMYWJlbChkZWNpc2lvbi5pc3N1ZU51bWJlciwgbXV0ZXgpO1xuICAgIGlmIChjdHguaXNzdWUgJiYgIWN0eC5pc3N1ZS5sYWJlbHMuaW5jbHVkZXMobXV0ZXgpKSB7XG4gICAgICBjdHguaXNzdWUubGFiZWxzLnB1c2gobXV0ZXgpO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgUlVOTkVSU1tzdGFnZV0uZXhlY3V0ZShjdHgsIGRlY2lzaW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYXdhaXQgcmVwb3J0RmFpbHVyZShjdHgsIHN0YWdlLCBlcnIpO1xuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBSZWxlYXNlIHRoZSBtdXRleCBldmVuIG9uIGZhaWx1cmUuIFRoZSBzdGFnZSdzIG93biBhcHBseSgpIG1heSBoYXZlXG4gICAgLy8gYWxyZWFkeSByZW1vdmVkIGl0OyByZW1vdmVMYWJlbCB0b2xlcmF0ZXMgNDA0LlxuICAgIGlmIChkZWNpc2lvbi5pc3N1ZU51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCBhcmdzLmdpdGh1Yi5yZW1vdmVMYWJlbChkZWNpc2lvbi5pc3N1ZU51bWJlciwgbXV0ZXgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBzdGFnZSwgZXhlY3V0ZWQ6IHRydWUgfTtcbn1cblxuLy8gUGVyZm9ybXMgdGhlIHYxIGhhbmRsZS1tZXJnZSB0cmFuc2l0aW9uIGZvciB0aGUgdGhyZWUgYXJ0aWZhY3QtcHJvZHVjaW5nXG4vLyBzdGFnZXMuIElkZW1wb3RlbnQ6IGlmIHRoZSBkb3duc3RyZWFtIGxhYmVsIGlzIGFscmVhZHkgcHJlc2VudCwgc2tpcHMgd2l0aFxuLy8gbm8gQVBJIHdyaXRlcyAoaGFuZGxlcyBkb3VibGUtZmlyZWQgY2xvc2UgZXZlbnRzIGFuZCB3b3JrZmxvdyByYWNlcykuXG4vLyBSZXR1cm5zIHRydWUgd2hlbiBhbnkgbXV0YXRpb24gd2FzIHBlcmZvcm1lZC5cbmFzeW5jIGZ1bmN0aW9uIGFkdmFuY2VPbk1lcmdlKFxuICBnaXRodWI6IEdpdEh1YkFkYXB0ZXIsXG4gIGF1ZGl0OiBBdWRpdEVtaXR0ZXIsXG4gIGFyZ3M6IHtcbiAgICBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICAgIG1lcmdlZFN0YWdlOiBcInNwZWNcIiB8IFwicGxhblwiIHwgXCJpbXBsZW1lbnRcIjtcbiAgICBwck51bWJlcjogbnVtYmVyO1xuICB9LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGlzc3VlID0gYXdhaXQgZ2l0aHViLmdldElzc3VlKGFyZ3MuaXNzdWVOdW1iZXIpO1xuICBjb25zdCBjdXJyZW50ID0gbmV3IFNldChpc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpKTtcblxuICBzd2l0Y2ggKGFyZ3MubWVyZ2VkU3RhZ2UpIHtcbiAgICBjYXNlIFwic3BlY1wiOiB7XG4gICAgICBpZiAoY3VycmVudC5oYXMoTEFCRUxTLm5lZWRzUGxhbikpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5hZGRMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMubmVlZHNQbGFuKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgU3BlYyBtZXJnZWQgaW4gIyR7YXJncy5wck51bWJlcn0uIE1vdmluZyB0byBwbGFubmluZyBzdGFnZS5gLFxuICAgICAgKTtcbiAgICAgIGF1ZGl0KHtcbiAgICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBhZGQ6IFtMQUJFTFMubmVlZHNQbGFuXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLnNwZWNJblJldmlld10sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXNlIFwicGxhblwiOiB7XG4gICAgICBpZiAoY3VycmVudC5oYXMoTEFCRUxTLm5lZWRzSW1wbCkpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMucGxhbkluUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5hZGRMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMubmVlZHNJbXBsKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgUGxhbiBtZXJnZWQgaW4gIyR7YXJncy5wck51bWJlcn0uIE1vdmluZyB0byBpbXBsZW1lbnRhdGlvbiBzdGFnZS5gLFxuICAgICAgKTtcbiAgICAgIGF1ZGl0KHtcbiAgICAgICAgdHlwZTogXCJsYWJlbF9hcHBsaWVkXCIsXG4gICAgICAgIGlzc3VlTnVtYmVyOiBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBhZGQ6IFtMQUJFTFMubmVlZHNJbXBsXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLnBsYW5JblJldmlld10sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXNlIFwiaW1wbGVtZW50XCI6IHtcbiAgICAgIGlmIChjdXJyZW50LmhhcyhMQUJFTFMuZG9uZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMuaW1wbEluUmV2aWV3KTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5yZW1vdmVMYWJlbChhcmdzLmlzc3VlTnVtYmVyLCBMQUJFTFMucmV2aWV3QXBwcm92ZWQpO1xuICAgICAgYXdhaXQgZ2l0aHViLmFkZExhYmVsKGFyZ3MuaXNzdWVOdW1iZXIsIExBQkVMUy5kb25lKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgICBhcmdzLmlzc3VlTnVtYmVyLFxuICAgICAgICBgSW1wbGVtZW50YXRpb24gbWVyZ2VkIGluICMke2FyZ3MucHJOdW1iZXJ9LiBQaXBlbGluZSBjb21wbGV0ZS5gLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IGdpdGh1Yi5jbG9zZUlzc3VlKGFyZ3MuaXNzdWVOdW1iZXIpO1xuICAgICAgYXVkaXQoe1xuICAgICAgICB0eXBlOiBcImxhYmVsX2FwcGxpZWRcIixcbiAgICAgICAgaXNzdWVOdW1iZXI6IGFyZ3MuaXNzdWVOdW1iZXIsXG4gICAgICAgIGFkZDogW0xBQkVMUy5kb25lXSxcbiAgICAgICAgcmVtb3ZlOiBbTEFCRUxTLmltcGxJblJldmlldywgTEFCRUxTLnJldmlld0FwcHJvdmVkXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8vIE1pcnJvcnMgdjEncyBhcHBseS1yZXZpZXctcmV2aXNpb24gaGVscGVyLiBSdW4gYmVmb3JlIHRoZSBpbXBsZW1lbnQgc3RhZ2Vcbi8vIHdoZW4gYSBodW1hbiByZXZpZXdlciBzdWJtaXRzIFJFUVVFU1RfQ0hBTkdFUyBvbiBhbiBpbXBsIFBSOiB0aGUgc3RhdGVcbi8vIG1hY2hpbmUgaGFzIGFscmVhZHkgcm91dGVkIHRvIGltcGxlbWVudCtyZXZpc2lvbk1vZGUsIGJ1dCB0aGUgaXNzdWUgc3RpbGxcbi8vIGhhcyBzaG9wZmxvb3I6bmVlZHMtcmV2aWV3IChhbmQgcG9zc2libHkgc2hvcGZsb29yOnJldmlldy1zdHVjayksIHNvIHRoZVxuLy8gaW1wbGVtZW50IHByZWNoZWNrIHdvdWxkIHJlZnVzZS4gTXV0YXRlcyBgcHJlY2hlY2tMYWJlbHNgIHNvIHRoZSBwcmVjaGVja1xuLy8gcnVuIHRoYXQgZm9sbG93cyBzZWVzIHRoZSBwb3N0LWZsaXAgc3RhdGUuXG5hc3luYyBmdW5jdGlvbiBhcHBseUh1bWFuUmV2aWV3UmV2aXNpb24oXG4gIGdpdGh1YjogR2l0SHViQWRhcHRlcixcbiAgYXVkaXQ6IEF1ZGl0RW1pdHRlcixcbiAgaXNzdWVOdW1iZXI6IG51bWJlcixcbiAgcHJlY2hlY2tMYWJlbHM6IFNldDxzdHJpbmc+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFkZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgcmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoIXByZWNoZWNrTGFiZWxzLmhhcyhMQUJFTFMucmV2aWV3UmVxdWVzdGVkQ2hhbmdlcykpIHtcbiAgICBhd2FpdCBnaXRodWIuYWRkTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzKTtcbiAgICBwcmVjaGVja0xhYmVscy5hZGQoTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgIGFkZC5wdXNoKExBQkVMUy5yZXZpZXdSZXF1ZXN0ZWRDaGFuZ2VzKTtcbiAgfVxuICBpZiAocHJlY2hlY2tMYWJlbHMuaGFzKExBQkVMUy5uZWVkc1JldmlldykpIHtcbiAgICBhd2FpdCBnaXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5uZWVkc1Jldmlldyk7XG4gICAgcHJlY2hlY2tMYWJlbHMuZGVsZXRlKExBQkVMUy5uZWVkc1Jldmlldyk7XG4gICAgcmVtb3ZlLnB1c2goTEFCRUxTLm5lZWRzUmV2aWV3KTtcbiAgfVxuICBpZiAocHJlY2hlY2tMYWJlbHMuaGFzKExBQkVMUy5yZXZpZXdTdHVjaykpIHtcbiAgICBhd2FpdCBnaXRodWIucmVtb3ZlTGFiZWwoaXNzdWVOdW1iZXIsIExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgcHJlY2hlY2tMYWJlbHMuZGVsZXRlKExBQkVMUy5yZXZpZXdTdHVjayk7XG4gICAgcmVtb3ZlLnB1c2goTEFCRUxTLnJldmlld1N0dWNrKTtcbiAgfVxuICBpZiAoYWRkLmxlbmd0aCA+IDAgfHwgcmVtb3ZlLmxlbmd0aCA+IDApIHtcbiAgICBhdWRpdCh7IHR5cGU6IFwibGFiZWxfYXBwbGllZFwiLCBpc3N1ZU51bWJlciwgYWRkLCByZW1vdmUgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbW9kZWxGb3JTdGFnZShzdGFnZTogU3RhZ2UsIGNmZzogQ29uZmlnKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGFnZSkge1xuICAgIGNhc2UgXCJ0cmlhZ2VcIjpcbiAgICAgIHJldHVybiBjZmcudHJpYWdlTW9kZWw7XG4gICAgY2FzZSBcInNwZWNcIjpcbiAgICAgIHJldHVybiBjZmcuc3BlY01vZGVsO1xuICAgIGNhc2UgXCJwbGFuXCI6XG4gICAgICByZXR1cm4gY2ZnLnBsYW5Nb2RlbDtcbiAgICBjYXNlIFwiaW1wbGVtZW50XCI6XG4gICAgICByZXR1cm4gY2ZnLmltcGxNb2RlbDtcbiAgICBjYXNlIFwicmV2aWV3XCI6XG4gICAgICByZXR1cm4gY2ZnLnJldmlld01vZGVscy5jb21wbGlhbmNlO1xuICB9XG59XG5cbmludGVyZmFjZSBSb3V0aW5nQ29udGV4dCB7XG4gIGFjdGlvbj86IHN0cmluZztcbiAgbGFiZWxOYW1lPzogc3RyaW5nO1xuICBwYXlsb2FkTGFiZWxzPzogc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RSb3V0aW5nQ29udGV4dChcbiAgZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBFdmVudFBheWxvYWQgfSxcbiAgbGl2ZUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4pOiBSb3V0aW5nQ29udGV4dCB7XG4gIHN3aXRjaCAoZXZlbnQubmFtZSkge1xuICAgIGNhc2UgXCJpc3N1ZXNcIjoge1xuICAgICAgY29uc3QgcCA9IGV2ZW50LnBheWxvYWQgYXMgSXNzdWVQYXlsb2FkO1xuICAgICAgY29uc3QgY3R4OiBSb3V0aW5nQ29udGV4dCA9IHt9O1xuICAgICAgaWYgKHAuYWN0aW9uICE9PSB1bmRlZmluZWQpIGN0eC5hY3Rpb24gPSBwLmFjdGlvbjtcbiAgICAgIGlmIChwLmxhYmVsPy5uYW1lICE9PSB1bmRlZmluZWQpIGN0eC5sYWJlbE5hbWUgPSBwLmxhYmVsLm5hbWU7XG4gICAgICBpZiAocC5pc3N1ZSkge1xuICAgICAgICBjb25zdCBwYXlsb2FkTGFiZWxzID0gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgICAgICAvLyBPbmx5IGF0dGFjaCBwYXlsb2FkTGFiZWxzIHdoZW4gaXQgZGlmZmVycyBmcm9tIGxpdmVMYWJlbHMgLS0gaWYgYVxuICAgICAgICAvLyByb3V0ZSBjYWxsZXIgYWxyZWFkeSByZWZldGNoZWQsIHRoZSB0d28gYXJyYXlzIGNhcnJ5IHRoZSBzYW1lXG4gICAgICAgIC8vIGluZm9ybWF0aW9uIGFuZCBkdXBsaWNhdGluZyB0aGVtIGNvc3RzIGxvZyBieXRlcyBmb3Igbm8gc2lnbmFsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgbGl2ZUxhYmVscyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgIWFycmF5c0VxdWFsKHBheWxvYWRMYWJlbHMsIGxpdmVMYWJlbHMpXG4gICAgICAgICkge1xuICAgICAgICAgIGN0eC5wYXlsb2FkTGFiZWxzID0gcGF5bG9hZExhYmVscztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eDtcbiAgICB9XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdFwiOlxuICAgIGNhc2UgXCJwdWxsX3JlcXVlc3RfcmV2aWV3XCI6IHtcbiAgICAgIGNvbnN0IHAgPSBldmVudC5wYXlsb2FkIGFzIFB1bGxSZXF1ZXN0UGF5bG9hZCB8IFB1bGxSZXF1ZXN0UmV2aWV3UGF5bG9hZDtcbiAgICAgIGNvbnN0IGN0eDogUm91dGluZ0NvbnRleHQgPSB7fTtcbiAgICAgIGlmIChcImFjdGlvblwiIGluIHAgJiYgdHlwZW9mIHAuYWN0aW9uID09PSBcInN0cmluZ1wiKSBjdHguYWN0aW9uID0gcC5hY3Rpb247XG4gICAgICBpZiAoXCJsYWJlbFwiIGluIHAgJiYgcC5sYWJlbD8ubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGN0eC5sYWJlbE5hbWUgPSBwLmxhYmVsLm5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH1cbiAgICBjYXNlIFwiaXNzdWVfY29tbWVudFwiOiB7XG4gICAgICBjb25zdCBwID0gZXZlbnQucGF5bG9hZCBhcyB7IGFjdGlvbj86IHN0cmluZyB9O1xuICAgICAgcmV0dXJuIHAuYWN0aW9uICE9PSB1bmRlZmluZWQgPyB7IGFjdGlvbjogcC5hY3Rpb24gfSA6IHt9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsKGE6IHN0cmluZ1tdLCBiOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHNvcnRlZEEgPSBbLi4uYV0uc29ydCgpO1xuICBjb25zdCBzb3J0ZWRCID0gWy4uLmJdLnNvcnQoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNvcnRlZEFbaV0gIT09IHNvcnRlZEJbaV0pIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEV2ZW50TGFiZWxzKGV2ZW50OiB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF5bG9hZDogRXZlbnRQYXlsb2FkO1xufSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XG4gICAgY2FzZSBcImlzc3Vlc1wiOiB7XG4gICAgICBjb25zdCBwID0gZXZlbnQucGF5bG9hZCBhcyBJc3N1ZVBheWxvYWQ7XG4gICAgICBpZiAoIXAuaXNzdWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgIH1cbiAgICBjYXNlIFwicHVsbF9yZXF1ZXN0XCI6XG4gICAgY2FzZSBcInB1bGxfcmVxdWVzdF9yZXZpZXdcIjoge1xuICAgICAgY29uc3QgcCA9IGV2ZW50LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RQYXlsb2FkIHwgUHVsbFJlcXVlc3RSZXZpZXdQYXlsb2FkO1xuICAgICAgaWYgKCFwLnB1bGxfcmVxdWVzdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBwLnB1bGxfcmVxdWVzdC5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSXNzdWVDb250ZXh0IHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZyB8IG51bGw7XG4gIGxhYmVsczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQckNvbnRleHQge1xuICBudW1iZXI6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nIHwgbnVsbDtcbiAgaGVhZFJlZjogc3RyaW5nO1xuICBoZWFkU2hhOiBzdHJpbmc7XG4gIGJhc2VSZWY6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gbG9hZElzc3VlRnJvbUV2ZW50KFxuICBldmVudDogeyBuYW1lOiBzdHJpbmc7IHBheWxvYWQ6IEV2ZW50UGF5bG9hZCB9LFxuICBsaXZlTGFiZWxzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbik6IElzc3VlQ29udGV4dCB8IG51bGwge1xuICBpZiAoZXZlbnQubmFtZSAhPT0gXCJpc3N1ZXNcIikgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHAgPSBldmVudC5wYXlsb2FkIGFzIElzc3VlUGF5bG9hZDtcbiAgaWYgKCFwLmlzc3VlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHAuaXNzdWUubnVtYmVyLFxuICAgIHRpdGxlOiBwLmlzc3VlLnRpdGxlLFxuICAgIGJvZHk6IHAuaXNzdWUuYm9keSxcbiAgICBsYWJlbHM6IGxpdmVMYWJlbHMgPz8gcC5pc3N1ZS5sYWJlbHMubWFwKChsKSA9PiBsLm5hbWUpLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkUHJGb3JTdGFnZShcbiAgYXJnczogT3JjaGVzdHJhdG9yQXJncyxcbiAgZGVjaXNpb246IFJvdXRlckRlY2lzaW9uLFxuKTogUHJvbWlzZTxQckNvbnRleHQgfCBudWxsPiB7XG4gIC8vIFByZWZlciB0aGUgZXZlbnQgcGF5bG9hZCB3aGVuIGF2YWlsYWJsZSAtLSBpdCBjYXJyaWVzIGhlYWQvYmFzZSBTSEFzIGF0XG4gIC8vIHRoZSBtb21lbnQgdGhlIGV2ZW50IGZpcmVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgcmV2aWV3IG5lZWRzIHRvIGFuY2hvclxuICAvLyBhZ2FpbnN0LlxuICBpZiAoXG4gICAgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdFwiIHx8XG4gICAgYXJncy5ldmVudC5uYW1lID09PSBcInB1bGxfcmVxdWVzdF9yZXZpZXdcIlxuICApIHtcbiAgICBjb25zdCBwID0gYXJncy5ldmVudC5wYXlsb2FkIGFzXG4gICAgICB8IFB1bGxSZXF1ZXN0UGF5bG9hZFxuICAgICAgfCBQdWxsUmVxdWVzdFJldmlld1BheWxvYWQ7XG4gICAgaWYgKHAucHVsbF9yZXF1ZXN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBudW1iZXI6IHAucHVsbF9yZXF1ZXN0Lm51bWJlcixcbiAgICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICAgIGJvZHk6IHAucHVsbF9yZXF1ZXN0LmJvZHksXG4gICAgICAgIGhlYWRSZWY6IHAucHVsbF9yZXF1ZXN0LmhlYWQucmVmLFxuICAgICAgICBoZWFkU2hhOiBwLnB1bGxfcmVxdWVzdC5oZWFkLnNoYSxcbiAgICAgICAgYmFzZVJlZjogcC5wdWxsX3JlcXVlc3QuYmFzZS5yZWYsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICAvLyBJc3N1ZS1zaWRlIGV2ZW50cyB0aGF0IHJvdXRlIHRvIHJldmlldyAoZS5nLiB1bmxhYmVsKHJldmlldy1zdHVjaykpXG4gIC8vIGlkZW50aWZ5IHRoZSBpbXBsIFBSIHZpYSBkZWNpc2lvbi5pbXBsUHJOdW1iZXI7IHB1bGwgaXQgdmlhIHRoZSBBUEkuXG4gIGlmIChkZWNpc2lvbi5zdGFnZSA9PT0gXCJyZXZpZXdcIiAmJiBkZWNpc2lvbi5pbXBsUHJOdW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhcmdzLmdpdGh1Yi5nZXRQcihkZWNpc2lvbi5pbXBsUHJOdW1iZXIpO1xuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6IGRlY2lzaW9uLmltcGxQck51bWJlcixcbiAgICAgIHRpdGxlOiBcIlwiLFxuICAgICAgYm9keTogZGF0YS5ib2R5LFxuICAgICAgaGVhZFJlZjogXCJcIixcbiAgICAgIGhlYWRTaGE6IGRhdGEuaGVhZC5zaGEsXG4gICAgICBiYXNlUmVmOiBkYXRhLmJhc2UucmVmLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmludGVyZmFjZSBQcmVjaGVja1Jlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICByZWFzb246IHN0cmluZztcbn1cblxuLy8gUG9ydGVkIGZyb20gcm91dGVyL3NyYy9oZWxwZXJzL3ByZWNoZWNrLXN0YWdlLnRzLiBDYXRjaGVzIHN0YWxlIGV2ZW50cyB0aGF0XG4vLyB0aGUgc3RhdGUgbWFjaGluZSB3b3VsZCBvdGhlcndpc2Ugcm91dGUgdG8gYSBzdGFnZSB3aG9zZSBwcmVjb25kaXRpb25zIGhhdmVcbi8vIGFscmVhZHkgYmVlbiBjbGVhcmVkIGJ5IGFuIGVhcmxpZXIgcnVuLlxuZnVuY3Rpb24gcHJlY2hlY2tTdGFnZShzdGFnZTogU3RhZ2UsIGxhYmVsczogU2V0PHN0cmluZz4pOiBQcmVjaGVja1Jlc3VsdCB7XG4gIHN3aXRjaCAoc3RhZ2UpIHtcbiAgICBjYXNlIFwidHJpYWdlXCI6IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBUUklBR0VfQkxPQ0tJTkdfU1RBVEVfTEFCRUxTKSB7XG4gICAgICAgIGlmIChsYWJlbHMuaGFzKGwpKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYXNvbjogYHRyaWFnZV9hbHJlYWR5X2NvbXBsZXRlZF9zdGF0ZV9sYWJlbF8ke2x9X3ByZXNlbnRgLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwidHJpYWdlX3ByZWNvbmRpdGlvbnNfaG9sZFwiIH07XG4gICAgfVxuICAgIGNhc2UgXCJzcGVjXCI6IHtcbiAgICAgIGNvbnN0IG5lZWRzID0gbGFiZWxzLmhhcyhMQUJFTFMubmVlZHNTcGVjKTtcbiAgICAgIGNvbnN0IGluUmV2aWV3ID0gbGFiZWxzLmhhcyhMQUJFTFMuc3BlY0luUmV2aWV3KTtcbiAgICAgIGlmICghbmVlZHMgJiYgIWluUmV2aWV3KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHJlYXNvbjogXCJzcGVjX25laXRoZXJfbmVlZHNfc3BlY19ub3JfaW5fcmV2aWV3X2xhYmVsX3ByZXNlbnRcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsYWJlbHMuaGFzKExBQkVMUy5zcGVjUnVubmluZykpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246IFwic3BlY19hbHJlYWR5X2luX3Byb2dyZXNzXCIgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwic3BlY19wcmVjb25kaXRpb25zX2hvbGRcIiB9O1xuICAgIH1cbiAgICBjYXNlIFwicGxhblwiOiB7XG4gICAgICBjb25zdCBuZWVkcyA9IGxhYmVscy5oYXMoTEFCRUxTLm5lZWRzUGxhbik7XG4gICAgICBjb25zdCBpblJldmlldyA9IGxhYmVscy5oYXMoTEFCRUxTLnBsYW5JblJldmlldyk7XG4gICAgICBpZiAoIW5lZWRzICYmICFpblJldmlldykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICByZWFzb246IFwicGxhbl9uZWl0aGVyX25lZWRzX3BsYW5fbm9yX2luX3Jldmlld19sYWJlbF9wcmVzZW50XCIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAobGFiZWxzLmhhcyhMQUJFTFMucGxhblJ1bm5pbmcpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiBcInBsYW5fYWxyZWFkeV9pbl9wcm9ncmVzc1wiIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgcmVhc29uOiBcInBsYW5fcHJlY29uZGl0aW9uc19ob2xkXCIgfTtcbiAgICB9XG4gICAgY2FzZSBcImltcGxlbWVudFwiOiB7XG4gICAgICBjb25zdCBuZWVkcyA9IGxhYmVscy5oYXMoTEFCRUxTLm5lZWRzSW1wbCk7XG4gICAgICBjb25zdCByZXZpc2lvbiA9IGxhYmVscy5oYXMoTEFCRUxTLnJldmlld1JlcXVlc3RlZENoYW5nZXMpO1xuICAgICAgY29uc3QgcmV2aXNlID0gbGFiZWxzLmhhcyhMQUJFTFMucmV2aXNlKTtcbiAgICAgIGlmICghbmVlZHMgJiYgIXJldmlzaW9uICYmICFyZXZpc2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgcmVhc29uOiBcImltcGxlbWVudF9uZWl0aGVyX25lZWRzX2ltcGxfbm9yX3JldmlzaW9uX2xhYmVsX3ByZXNlbnRcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsYWJlbHMuaGFzKExBQkVMUy5pbXBsZW1lbnRpbmcpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiBcImltcGxlbWVudF9hbHJlYWR5X2luX3Byb2dyZXNzXCIgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCByZWFzb246IFwiaW1wbGVtZW50X3ByZWNvbmRpdGlvbnNfaG9sZFwiIH07XG4gICAgfVxuICAgIGNhc2UgXCJyZXZpZXdcIjoge1xuICAgICAgLy8gUmV2aWV3IHByZWNvbmRpdGlvbnMgYXJlIHZhbGlkYXRlZCBieSB0aGUgc3RhdGUgbWFjaGluZSBvbiBldmVyeVxuICAgICAgLy8gc3luY2hyb25pemUvcmVhZHlfZm9yX3JldmlldyBldmVudDsgdGhlIG9yY2hlc3RyYXRvciBkb2VzIG5vdCBnYXRlLlxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHJlYXNvbjogXCJyZXZpZXdfcHJlY29uZGl0aW9uc19ob2xkXCIgfTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVwb3J0RmFpbHVyZShcbiAgY3R4OiBTdGFnZUNvbnRleHQsXG4gIHN0YWdlOiBTdGFnZSxcbiAgZXJyOiB1bmtub3duLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGtpbmQgPSBlcnIgaW5zdGFuY2VvZiBBZ2VudEVycm9yID8gZXJyLmtpbmQgOiBcImludGVybmFsXCI7XG4gIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG4gIGlmIChjdHguaXNzdWUpIHtcbiAgICBhd2FpdCBjdHguZ2l0aHViLmFkZExhYmVsKGN0eC5pc3N1ZS5udW1iZXIsIGZhaWxlZExhYmVsRm9yKHN0YWdlKSk7XG4gICAgYXdhaXQgY3R4LmdpdGh1Yi5wb3N0SXNzdWVDb21tZW50KFxuICAgICAgY3R4Lmlzc3VlLm51bWJlcixcbiAgICAgIGZvcm1hdEZhaWx1cmVDb21tZW50KHN0YWdlLCBraW5kLCBtZXNzYWdlLCBjdHgucnVuSWQpLFxuICAgICk7XG4gIH1cbiAgY3R4LmF1ZGl0KHsgdHlwZTogXCJzdGFnZV9mYWlsZWRcIiwgc3RhZ2UsIGVycm9yOiB7IGtpbmQsIG1lc3NhZ2UgfSB9KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmFpbHVyZUNvbW1lbnQoXG4gIHN0YWdlOiBTdGFnZSxcbiAga2luZDogc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHJ1bklkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gW1xuICAgIGAjIyBTaG9wZmxvb3IgJHtzdGFnZX0gZmFpbHVyZWAsXG4gICAgXCJcIixcbiAgICBgKipLaW5kOioqIFxcYCR7a2luZH1cXGBgLFxuICAgIGAqKlJ1bjoqKiBcXGAke3J1bklkfVxcYGAsXG4gICAgXCJcIixcbiAgICBcImBgYFwiLFxuICAgIG1lc3NhZ2Uuc2xpY2UoMCwgNDAwMCksXG4gICAgXCJgYGBcIixcbiAgICBcIlwiLFxuICAgIGBSZW1vdmUgdGhlIFxcYHNob3BmbG9vcjpmYWlsZWQ6JHtzdGFnZX1cXGAgbGFiZWwgdG8gcmV0cnkuYCxcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsYUFBZ0IsZUFBZSxPQUFVO0FBQ3ZDLFVBQUksVUFBVSxRQUFRLFVBQVUsUUFBVztBQUN6QyxlQUFPO2lCQUNFLE9BQU8sVUFBVSxZQUFZLGlCQUFpQixRQUFRO0FBQy9ELGVBQU87O0FBRVQsYUFBTyxLQUFLLFVBQVUsS0FBSztJQUM3QjtBQVBBLElBQUFBLFNBQUEsaUJBQUE7QUFlQSxhQUFnQixvQkFDZCxzQkFBMEM7QUFFMUMsVUFBSSxDQUFDLE9BQU8sS0FBSyxvQkFBb0IsRUFBRSxRQUFRO0FBQzdD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TUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNyT0E7QUFBQSwrRUFBQUMsVUFBQUMsU0FBQTtBQUFBO0FBR0EsUUFBTSw2QkFBNkIsQ0FBQztBQUdwQyxRQUFNLHVCQUF1QjtBQUFBLE1BQzNCO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFD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T0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUNuRSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFBUSxPQUFPO0FBQUEsTUFDbkUsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQVEsT0FBTztBQUFBLE1BQ25FLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFBQSxNQUFRLE9BQU87QUFB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LE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUM3QztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQzdDO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxJQUMvQztBQUVBLGFBQVMsVUFBVztBQUNsQixXQUFLLFNBQVM7QUFBQSxJQUNoQjtBQUNBLFlBQVEsVUFBVSxRQUFRLFNBQVUsS0FBSztBQUV2QyxZQUFNLElBQUksUUFBUSxTQUFTLEdBQUc7QUFDOUIsVUFBSSxNQUFNO0FBQ1YsVUFBSSxJQUFJO0FBQUcs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QSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxXQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxLQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxZQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxXQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxhQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxZQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxLQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxlQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxlQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxVQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsU0FBQUEsU0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBRUEsTUFBQUEsU0FBQUEsU0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0lBQ0YsR0ExRFksVUFBQUosU0FBQSxZQUFBQSxTQUFBLFVBQU8sQ0FBQSxFQUFBO0FBNEROLElBQUFBLFNBQUEsZUFBZTtNQUMxQixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRLFVBQVU7TUFDbEIsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7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QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxL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QUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxtQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsbUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFlBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGNBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxXQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxrQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZUFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsNkJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGdCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxVQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxNQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxpQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEscUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGdCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxZQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxvQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFB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R0FBRyxHQUFFLEtBQUc7QUFBZ0MsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFJLElBQUUsb0JBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLElBQUUsb0JBQUksT0FBSSxJQUFFLEVBQUUsTUFBTSxFQUFFO0FBQUUsUUFBRyxDQUFDLEVBQUUsUUFBTSxNQUFJO0FBQUcsUUFBSSxJQUFFLEVBQUMsT0FBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLE9BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRSxPQUFNLENBQUMsRUFBRSxDQUFDLEdBQUUsWUFBVyxFQUFFLENBQUMsRUFBQztBQUFFLFFBQUcsRUFBRSxjQUFZLEtBQUssUUFBTyxTQUFTLEdBQUU7QUFBQyxhQUFPLE1BQUk7QUFBQSxJQUFDO0FBQUUsYUFBUyxFQUFFLEdBQUU7QUFBQyxhQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUU7QUFBQSxJQUFFO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxhQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUU7QUFBQSxJQUFFO0FBQUMsV0FBTyxTQUFTLEdBQUU7QUFBQyxVQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsUUFBTTtBQUFHLFVBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFNO0FBQUcsVUFBSSxJQUFFLEVBQUUsTUFBTSxFQUFFO0FBQUUsVUFBRyxDQUFDLEVBQUUsUUFBTyxFQUFFLENBQUM7QUFBRSxVQUFJLElBQUUsRUFBQyxPQUFNLENBQUMsRUFBRSxDQUFDLEdBQUUsT0FBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLE9BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRSxZQUFXLEVBQUUsQ0FBQyxFQUFDO0FBQUUsVUFBRyxFQUFFLGNBQVksS0FBSyxRQUFPLEVBQUUsQ0FBQztBQUFFLFVBQUcsRUFBRSxVQUFRLEVBQUUsTUFBTSxRQUFPLEVBQUUsQ0FBQztBQUFFLFVBQUcsRUFBRSxVQUFRLEdBQUU7QUFBQyxZQUFHLEVBQUUsVUFBUSxFQUFFLFNBQU8sRUFBRSxTQUFPLEVBQUUsTUFBTSxRQUFPLEVBQUUsQ0FBQztBQUFFLGVB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QUEsSUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU87QUFBRSxVQUFHLEVBQUUsZUFBZSxJQUFJLENBQUMsRUFBRSxHQUFFLGVBQWUsT0FBTyxDQUFDO0FBQUUsYUFBTyxFQUFFLGVBQWUsSUFBSSxHQUFFLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU87QUFBRSxhQUFPLEVBQUUsZUFBZSxPQUFPLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRTtBQUFDLGFBQU8sS0FBSyxlQUFlLElBQUksQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFlBQVc7QUFBQyxhQUFPLEtBQUssTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxlQUFPLEVBQUUsS0FBSyxJQUFFLEtBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFFO0FBQUEsTUFBQyxHQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLFVBQUcsRUFBRSxTQUFPLEdBQUc7QUFBTyxVQUFHLEtBQUssaUJBQWUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSTtBQUFDLFlBQUksSUFBRSxFQUFFLEtBQUssR0FBRSxJQUFFLEVBQUUsUUFBUSxFQUFFO0FBQUUsWUFBRyxNQUFJLElBQUc7QUFBQyxjQUFJLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNLElBQUUsR0FBRSxFQUFFLE1BQU07QUFBRSxlQUFJLEdBQUUsR0FBRyxhQUFhLENBQUMsTUFBSSxHQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUUsR0FBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBQyxHQUFFLG9CQUFJLEtBQUcsR0FBRSxLQUFLLGVBQWUsT0FBSyxHQUFHLE1BQUssaUJBQWUsSUFBSSxJQUFJ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QUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQWMsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsbUJBQWtCLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQWUsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsd0JBQXVCLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQW9CLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsV0FBVSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFPLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsUUFBTyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFJLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsV0FBVSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFPLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsZUFBYyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFXLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsU0FBUSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFLLEVBQUMsQ0FBQztBQUFFLEtBQUcsVUFBUSxFQUFDLFNBQVEsR0FBRyxTQUFRLE1BQUssR0FBRyxNQUFLLFNBQVEsR0FBRyxTQUFRLGFBQVksR0FBRyxhQUFZLE9BQU0sR0FBRyxNQUFLO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsYUFBVyxHQUFHLG1CQUFpQixHQUFHLGNBQVksR0FBRyxnQkFBYyxHQUFHLFlBQVUsR0FBRyxZQUFVLEdBQUcsYUFBVyxHQUFHLE1BQUksR0FBRyxJQUFFLEdBQUcsTUFBSSxHQUFHLFFBQU0sR0FBRyxPQUFLLEdBQUcsYUFBVyxHQUFHLGNBQVk7QUFBQSxFQUFPLE1BQU0sR0FBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLGNBQVk7QUFBRyxLQUFHLGFBQVc7QUFBQSxFQUF3QixNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsWUFBTTtBQUFFLFVBQUcsQ0FBQyxHQUFHLFdBQVcsS0FBSyxDQUFDLEVBQUUsT0FBTSxNQUFNLDBDQUEwQztBQUFFLFdBQUssTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLFdBQVU7QUFBQyxhQUFPLEtBQUs7QUFBQSxJQUFHO0FBQUEsSUFBQyxXQUFVO0FBQUMsYUFBTTtBQUFBLElBQUU7QUFBQSxJQUFDLElBQUksUUFBTztBQUFDLGFBQU0sRUFBQyxDQUFDLEtBQUssR0FBRyxHQUFFLEVBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQUcsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFNBQU8sT0FBTyxNQUFJLFdBQVMsQ0FBQyxDQUFDLElBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxXQUFVO0FBQUMsYUFBTyxLQUFLO0FBQUEsSUFBRztBQUFBLElBQUMsV0FBVTtBQUFDLFVBQUcsS0FBSyxPQUFPLFNBQU8sRUFBRSxRQUFNO0FBQUcsVUFBSSxJQUFFLEtBQUssT0FBTyxDQUFDO0FBQUUsYUFBTyxNQUFJLE1BQUksTUFBSTtBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksTUFBSztBQUFDLFVBQUk7QUFBRSxjQUFPLElBQUUsS0FBSyxVQUFRLFFBQU0sTUFBSSxTQUFPLElBQUUsS0FBSyxPQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRSxNQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsVUFBSTtBQUFFLGNBQU8sSUFBRSxLQUFLLFlBQVUsUUFBTSxNQUFJLFNBQU8sSUFBRSxLQUFLLFNBQU8sS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxZQUFHLGFBQWEsR0FBRyxHQUFFLEVBQUUsR0FBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUcsS0FBRztBQUFFLGVBQU87QUFBQSxNQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLFFBQU07QUFBRyxLQUFHLE1BQUksSUFBSSxHQUFHLEVBQUU7QUFBRSxXQUFTLEdBQUcsTUFBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUUsV0FBTSxJQUFFLEVBQUUsT0FBTyxJQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUFFLFdBQU8sSUFBSSxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxJQUFFO0FBQUcsTUFBSSxLQUFHLElBQUksR0FBRyxHQUFHO0FBQUUsV0FBUyxHQUFHLE1BQUssR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRSxXQUFNLElBQUUsRUFBRSxPQUFPLEdBQUUsS0FBSyxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsQ0FBQyxHQUFFLElBQUksR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsTUFBSTtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLGFBQWEsR0FBRyxHQUFFLEtBQUssR0FBRyxFQUFFLE1BQU07QUFBQSxhQUFVLGFBQWEsR0FBRyxHQUFFLEtBQUssQ0FBQztBQUFBLFFBQU8sR0FBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsYUFBVztBQUFHLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFO0FBQUUsV0FBTSxJQUFFLEVBQUUsU0FBTyxHQUFFO0FBQUMsVUFBRyxFQUFFLENBQUMsTUFBSSxJQUFHO0FBQUMsWUFBSSxJQUFFLEdBQUcsRUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUUsQ0FBQyxDQUFDO0FBQUUsWUFBRyxNQUFJLFFBQU87QUFBQyxZQUFFLE9BQU8sSUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsUUFBUTtBQUFDLFVBQUUsR0FBRyxJQUFFO0FBQUEsTUFBRztBQUFDO0FBQUEsSUFBRztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxNQUFJLEtBQUssUUFBTztBQUFFLFFBQUcsTUFBSSxLQUFLLFFBQU87QUFBRSxRQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsVUFBRyxhQUFhLE1BQUksRUFBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJLElBQUk7QUFBTyxVQUFHLE9BQU8sS0FBRyxTQUFTLFFBQU0sR0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQUksVUFBRyxFQUFFLENBQUMsTUFBSSxJQUFJLFFBQU8sRUFBRSxNQUFNLEdBQUUsRUFBRSxJQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUU7QUFBQSxJQUFNO0FBQUMsUUFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLENBQUMsTUFBSSxPQUFLLEVBQUUsYUFBYSxJQUFJLFFBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUFHO0FBQUEsRUFBTTtBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsU0FBUyxJQUFFLElBQUUsRUFBRSxTQUFTLElBQUUsSUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQUEsRUFBRTtBQUFDLEtBQUcsWUFBVTtBQUFHLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxPQUFPLEtBQUcsWUFBVSxPQUFPLEtBQUcsYUFBVyxNQUFJLE9BQUssSUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUcsSUFBRSxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxZQUFVO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxDQUFDLEVBQUUsUUFBUSxXQUFVLFNBQVMsRUFBRSxRQUFRLFdBQVUsU0FBUztBQUFBLEVBQUM7QUFBQyxLQUFHLGdCQUFjO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLE9BQU8sS0FBRyxZQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsSUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBRSxNQUFNLENBQUM7QUFBQSxFQUFHO0FBQUMsS0FBRyxjQUFZO0FBQUcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE9BQU8sS0FBRyxZQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsRUFBRSxRQUFPLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtBQUFFLFVBQU0sTUFBTSxpQ0FBaUMsQ0FBQyxpQ0FBaUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxtQkFBaUI7QUFBRyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sSUFBSSxHQUFHLEVBQUUsU0FBUyxDQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsYUFBVztBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLGFBQVcsR0FBRyxpQkFBZSxHQUFHLFFBQU0sR0FBRyxXQUFTLEdBQUcsaUJBQWU7QUFBTyxNQUFJLEtBQUcsR0FBRztBQUFBLEVBQUUsTUFBTSxXQUFXLE1BQUs7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU0sdUJBQXVCLENBQUMsY0FBYztBQUFFLFdBQUssUUFBTSxFQUFFO0FBQUEsSUFBSztBQUFBLEVBQUM7QUFBQyxNQUFJO0FBQUcsR0FBQyxTQUFTLEdBQUU7QUFBQyxNQUFFLEVBQUUsVUFBUSxDQUFDLElBQUUsV0FBVSxFQUFFLEVBQUUsWUFBVSxDQUFDLElBQUU7QUFBQSxFQUFXLEdBQUcsT0FBSyxHQUFHLGlCQUFlLEtBQUcsQ0FBQyxFQUFFO0FBQUUsS0FBRyxXQUFTLEVBQUMsT0FBTSxJQUFJLEdBQUcsS0FBSyxPQUFPLEdBQUUsS0FBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUM7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsWUFBWSxFQUFDLFVBQVMsR0FBRSxRQUFPLEVBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQyxXQUFLLFNBQU8sQ0FBQyxHQUFFLEtBQUssWUFBVSxHQUFFLEtBQUssVUFBUTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU8sYUFBYSxHQUFHLE9BQUssSUFBRSxLQUFLLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLEtBQUssR0FBRTtBQUFDLGFBQU8sSUFBSSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFNBQVMsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU8sQ0FBQyxLQUFHLEtBQUssV0FBVyxDQUFDO0FBQUUsYUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU87QUFBQSxJQUFFO0FBQUEsSUFBQyxXQUFXLEdBQUU7QUFBQyxVQUFJLEdBQUU7QUFBRSxZQUFLLEtBQUcsSUFBRSxLQUFLLGFBQVcsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLGVBQWEsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLElBQUksQ0FBQyxNQUFJLEtBQUssYUFBVyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsRUFBRSxPQUFNLE1BQU0sb0JBQW9CLENBQUMsZ0NBQWdDO0FBQUUsYUFBTyxLQUFLLE9BQU8sQ0FBQyxJQUFFLEVBQUMsUUFBTyxHQUFFLE9BQU0sRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxRQUFNO0FBQUEsRUFBRyxNQUFNLFdBQVcsR0FBRyxLQUFJO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLFlBQU0sQ0FBQztBQUFFLFdBQUssU0FBTztBQUFBLElBQUM7QUFBQSxJQUFDLFNBQVMsR0FBRSxFQUFDLFVBQVMsR0FBRSxXQUFVLEVBQUMsR0FBRTtBQUFDLFdBQUssUUFBTSxHQUFFLEtBQUssWUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztBQUFBLElBQUc7QUFBQSxFQUFDO0FBQUMsS0FBRyxpQkFBZTtBQUFHLE1BQUksS0FBRyxHQUFHO0FBQUEsRUFBTSxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsWUFBTSxDQUFDO0FBQUUsV0FBSyxVQUFRLENBQUMsR0FBRSxLQUFLLFNBQU8sRUFBRSxPQUFNLEtBQUssT0FBSyxFQUFDLEdBQUcsR0FBRSxJQUFHLEVBQUUsUUFBTSxLQUFHLEdBQUcsSUFBRztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQUs7QUFBQyxhQUFPLEtBQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxLQUFLLEdBQUU7QUFBQyxhQUFPLElBQUksR0FBRyxHQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUUsR0FBRTtBQUFDLFVBQUk7QUFBRSxVQUFHLEVBQUUsUUFBTSxPQUFPLE9BQU0sTUFBTSxzQ0FBc0M7QUFBRSxVQUFJLElBQUUsS0FBSyxPQUFPLENBQUMsR0FBRSxFQUFDLFFBQU8sRUFBQyxJQUFFLEdBQUUsS0FBRyxJQUFFLEVBQUUsU0FBTyxRQUFNLE1BQUksU0FBTyxJQUFFLEVB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LEdBQUc7QUFBRSxTQUFPLGVBQWUsSUFBRyxLQUFJLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsT0FBTSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFHLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGFBQVksRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBUyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxPQUFNLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQUcsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsZUFBYyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFXLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGFBQVksRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBUyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQVUsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsUUFBTyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFJLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsU0FBUSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFLLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBVSxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxrQkFBaUIsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBYyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxZQUFXLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQVEsRUFBQyxDQUFDO0FBQUUsS0FBRyxZQUFVLEVBQUMsSUFBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxLQUFLLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUUsSUFBRyxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLEdBQUUsS0FBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEVBQUM7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsZ0JBQWU7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssVUFBUSxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxLQUFJLEdBQUUsSUFBRyxFQUFDLEdBQUU7QUFBQyxVQUFJLElBQUUsSUFBRSxHQUFHLFNBQVMsTUFBSSxLQUFLLFNBQVEsSUFBRSxLQUFLLFFBQU0sU0FBTyxLQUFHLE1BQU0sS0FBSyxHQUFHO0FBQUcsYUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQUk7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFBTyxVQUFHLEtBQUssSUFBSSxNQUFLLE1BQUksR0FBRyxLQUFLLEtBQUksR0FBRSxDQUFDO0FBQUUsYUFBTztBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksUUFBTztBQUFDLGFBQU8sS0FBSyxlQUFlLEdBQUcsY0FBWSxLQUFLLElBQUksUUFBTSxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssTUFBSSxHQUFFLEtBQUssTUFBSSxHQUFFLEtBQUssY0FBWTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLEdBQUcsTUFBTSxLQUFLLEdBQUcsTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLGNBQWMsR0FBRSxHQUFFO0FBQUMsVUFBRyxLQUFLLGVBQWUsR0FBRyxRQUFNLENBQUMsRUFBRSxLQUFLLElBQUksR0FBRyxLQUFHLENBQUMsS0FBSyxZQUFZO0FBQU8sYUFBTyxLQUFLLE1BQUksR0FBRyxLQUFLLEtBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxlQUFlLEdBQUcsT0FBSyxDQUFDLElBQUUsRUFBQyxHQUFHLEtBQUssSUFBSSxNQUFLO0FBQUUsYUFBTyxHQUFHLEdBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFNLEdBQUUsR0FBRSxDQUFDO0FBQUUsV0FBSyxLQUFHO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxFQUFDLElBQUcsRUFBQyxHQUFFO0FBQUMsYUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxLQUFLLEtBQUssR0FBRyxNQUFJO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxRQUFNLEdBQUUsS0FBSyxRQUFNLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEVBQUMsSUFBRyxFQUFDLEdBQUU7QUFBQyxhQUFNLEdBQUcsS0FBSyxLQUFLLE1BQUk7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sUUFBUSxLQUFLLFFBQU0sSUFBSSxLQUFLLEtBQUssS0FBRyxFQUFFLE1BQUk7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU07QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEVBQUMsSUFBRyxFQUFDLEdBQUU7QUFBQyxhQUFNLFNBQVMsS0FBSyxLQUFLLE1BQUk7QUFBQSxJQUFDO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEtBQUssTUFBTTtBQUFBLElBQUs7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssT0FBSztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sRUFBQyxJQUFHLEVBQUMsR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLElBQUksTUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLGdCQUFlO0FBQUMsYUFBTSxHQUFHLEtBQUssSUFBSSxLQUFHLE9BQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLGFBQU8sS0FBSyxPQUFLLEdBQUcsS0FBSyxNQUFLLEdBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsYUFBTyxLQUFLLGdCQUFnQixHQUFHLGNBQVksS0FBSyxLQUFLLFFBQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsWUFBWSxJQUFFLENBQUMsR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFFBQU07QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLENBQUMsR0FBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxVQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsTUFBSyxJQUFFLEVBQUU7QUFBTyxhQUFNLEtBQUk7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDLEVBQUUsY0FBYztBQUFFLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxHQUFFLE9BQU8sR0FBRSxHQUFFLEdBQUcsQ0FBQztBQUFBLGlCQUFVLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxZQUFPLEdBQUUsT0FBTyxHQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFLFNBQU8sSUFBRSxPQUFLO0FBQUEsSUFBTTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsTUFBSyxJQUFFLEVBQUU7QUFBTyxhQUFNLEtBQUk7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLGNBQWMsR0FBRSxDQUFDLEVBQUU7QUFBUyxXQUFHLEdBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxPQUFPLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUUsU0FBTyxJQUFFLE9BQUs7QUFBQSxJQUFNO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLENBQUMsR0FBRSxNQUFJLEdBQUcsR0FBRSxFQUFFLEtBQUssR0FBRSxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sTUFBSSxFQUFFLEtBQUcsTUFBTSxPQUFPLENBQUMsSUFBRSxNQUFJLEVBQUU7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFPLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLFlBQU0sQ0FBQztBQUFFLFdBQUssWUFBVTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxNQUFNLEtBQUssU0FBUyxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUUsVUFBRyxLQUFLLEtBQUssTUFBRyxVQUFRLEtBQUssS0FBSyxPQUFPLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxZQUFNLGNBQWM7QUFBRSxVQUFJLElBQUUsS0FBSztBQUFVLFVBQUcsTUFBSSxLQUFHLFFBQU8sS0FBSztBQUFNLFVBQUksSUFBRSxLQUFLO0FBQUssVUFBRyxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUUsY0FBYztBQUFFLFlBQUUsS0FBSyxPQUFLLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBSSxHQUFHLENBQUMsSUFBRTtBQUFBLE1BQUM7QUFBQyxVQUFHLEdBQUU7QUFBQyxZQUFHLE1BQUksTUFBRyxRQUFPLGFBQWEsS0FBRyxJQUFFLEVBQUU7QUFBTSxZQUFHLEtBQUssTUFBTSxPQUFPLFFBQU87QUFBSyxlQUFPLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRSxhQUFhLEtBQUcsQ0FBQyxDQUFDLElBQUUsRUFBRSxLQUFLO0FBQUEsTUFBQztBQUFDLFVBQUcsTUFBSSxTQUFJLENBQUMsS0FBSyxNQUFNLE9BQU87QUFBTyxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFJO0FBQUUsVUFBRyxLQUFLLFFBQU0sSUFBRSxLQUFLLFVBQVEsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFNLGNBQWMsR0FBRSxDQUFDLEtBQUcsS0FBSyxNQUFNO0FBQU8sYUFBTyxLQUFLLFlBQVUsR0FBRyxLQUFLLFdBQVUsR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsTUFBTTtBQUFNLFVBQUcsR0FBRyxHQUFFLEtBQUssU0FBUyxHQUFFLEtBQUssS0FBSyxJQUFHLEdBQUUsS0FBSyxLQUFLLEtBQUs7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFLLE1BQU0sV0FBVyxHQUFFO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQU0sTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFlBQVU7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFNLE9BQU8sS0FBSyxTQUFTLE1BQUksTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUcsQ0FBQyxNQUFNLGNBQWMsR0FBRSxDQUFDLEVBQUU7QUFBTyxhQUFPLEtBQUssWUFBVSxHQUFHLEtBQUssV0FBVSxHQUFFLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLElBQUksUUFBTztBQUFDLGFBQU8sR0FBRyxNQUFNLE9BQU0sS0FBSyxVQUFVLEtBQUs7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFlBQU07QUFBRSxXQUFLLFVBQVEsR0FBRSxLQUFLLE9BQUssR0FBRSxLQUFLLE9BQUssR0FBRSxLQUFLLEtBQUc7QUFBQSxJQUFDO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFJLEdBQUcsU0FBUyxNQUFJLEtBQUssU0FBUSxFQUFDLE1BQUssR0FBRSxNQUFLLEdBQUUsSUFBRyxFQUFDLElBQUU7QUFBSyxhQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQU0sTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsR0FBRyxNQUFNLE9BQU0sS0FBSyxJQUFJO0FBQUUsYUFBTyxHQUFHLEdBQUUsS0FBSyxFQUFFO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxPQUFLLEdBQUUsS0FBSyxVQUFRLEdBQUUsS0FBSyxPQUFLLEdBQUUsS0FBSyxXQUFTO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTSxPQUFPLEtBQUssT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssUUFBUSxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFHLENBQUMsTUFBTSxjQUFjLEdBQUUsQ0FBQyxFQUFFO0FBQU8sYUFBTyxLQUFLLFdBQVMsR0FBRyxLQUFLLFVBQVMsR0FBRSxDQUFDLEdBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxJQUFJLFFBQU87QUFBQyxhQUFPLEdBQUcsTUFBTSxPQUFNLEtBQUssU0FBUyxLQUFLO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBTTtBQUFFLFdBQUssT0FBSyxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssUUFBTTtBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sR0FBRyxLQUFLLFFBQU0sV0FBUyxFQUFFLFlBQVksS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLE1BQUksTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQU8sTUFBTSxXQUFXLEdBQUU7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLGFBQU0sWUFBVSxNQUFNLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxPQUFLO0FBQUEsRUFBUyxNQUFNLFdBQVcsR0FBRTtBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsVUFBSSxJQUFFLFFBQU0sTUFBTSxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssTUFBTSxNQUFHLEtBQUssTUFBTSxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssUUFBUSxNQUFHLEtBQUssUUFBUSxPQUFPLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLElBQUMsZ0JBQWU7QUFBQyxVQUFJLEdBQUU7QUFBRSxhQUFPLE1BQU0sY0FBYyxJQUFHLElBQUUsS0FBSyxXQUFTLFFBQU0sTUFBSSxVQUFRLEVBQUUsY0FBYyxJQUFHLElBQUUsS0FBSyxhQUFXLFFBQU0sTUFBSSxVQUFRLEVBQUUsY0FBYyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxVQUFJLEdBQUU7QUFBRSxhQUFPLE1BQU0sY0FBYyxHQUFFLENBQUMsSUFBRyxJQUFFLEtBQUssV0FBUyxRQUFNLE1BQUksVUFBUSxFQUFFLGNBQWMsR0FBRSxDQUFDLElBQUcsSUFBRSxLQUFLLGFBQVcsUUFBTSxNQUFJLFVBQVEsRUFBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsVUFBSSxJQUFFLE1BQU07QUFBTSxVQUFHLEtBQUssTUFBTSxJQUFHLEdBQUUsS0FBSyxNQUFNLEtBQUs7QUFBRSxVQUFHLEtBQUssUUFBUSxJQUFHLEdBQUUsS0FBSyxRQUFRLEtBQUs7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUU7QUFBQyxZQUFNO0FBQUUsV0FBSyxRQUFNO0FBQUEsSUFBQztBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTSxTQUFTLEtBQUssS0FBSyxNQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxLQUFHLE9BQUs7QUFBQSxFQUFRLE1BQU0sV0FBVyxHQUFFO0FBQUEsSUFBQyxPQUFPLEdBQUU7QUFBQyxhQUFNLFlBQVUsTUFBTSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLEtBQUcsT0FBSztBQUFBLEVBQVUsTUFBTSxHQUFFO0FBQUEsSUFBQyxZQUFZLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxXQUFLLFVBQVEsQ0FBQyxHQUFFLEtBQUssZUFBYSxDQUFDLEdBQUUsS0FBSyxhQUFXLENBQUMsR0FBRSxLQUFLLE9BQUssRUFBQyxHQUFHLEdBQUUsSUFBRyxFQUFFLFFBQU07QUFBQSxJQUMxMHNDLEdBQUUsR0FBRSxLQUFLLFlBQVUsR0FBRSxLQUFLLFNBQU8sSUFBSSxHQUFHLE1BQU0sRUFBQyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUssU0FBTyxDQUFDLElBQUksSUFBRTtBQUFBLElBQUM7QUFBQSxJQUFDLFdBQVU7QUFBQyxhQUFPLEtBQUssTUFBTSxPQUFPLEtBQUssSUFBSTtBQUFBLElBQUM7QUFBQSxJQUFDLEtBQUssR0FBRTtBQUFDLGFBQU8sS0FBSyxPQUFPLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsR0FBRTtBQUFDLGFBQU8sS0FBSyxVQUFVLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssVUFBVSxNQUFNLEdBQUUsQ0FBQztBQUFFLGNBQU8sS0FBSyxRQUFRLEVBQUUsTUFBTSxNQUFJLEtBQUssUUFBUSxFQUFFLE1BQU0sSUFBRSxvQkFBSSxRQUFNLElBQUksQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxTQUFTLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLFVBQVUsR0FBRTtBQUFDLGFBQU8sS0FBSyxVQUFVLFVBQVUsR0FBRSxLQUFLLE9BQU87QUFBQSxJQUFDO0FBQUEsSUFBQyxZQUFXO0FBQUMsYUFBTyxLQUFLLFVBQVUsVUFBVSxLQUFLLE9BQU87QUFBQSxJQUFDO0FBQUEsSUFBQyxLQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxPQUFPLE9BQU8sQ0FBQztBQUFFLFVBQUcsTUFBSSxVQUFRLEVBQUUsTUFBSyxXQUFXLEVBQUUsR0FBRyxJQUFFO0FBQUUsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsT0FBTSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxHQUFHLFNBQVMsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLEdBQUUsR0FBRyxVQUFVLEtBQUksQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsS0FBSyxHQUFFO0FBQUMsVUFBRyxPQUFPLEtBQUcsV0FBVyxHQUFFO0FBQUEsZUFBVSxNQUFJLEdBQUcsSUFBSSxNQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFJO0FBQUEsSUFBQyxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsQ0FBQyxHQUFHO0FBQUUsZUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxZQUFHLEVBQUUsU0FBTyxFQUFFLEdBQUUsS0FBSyxHQUFHO0FBQUUsWUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLE1BQUksS0FBRyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssR0FBRyxJQUFHLEdBQUUsR0FBRyxZQUFZLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUUsS0FBSyxHQUFHLEdBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLE1BQUssS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU07QUFBQSxlQUFVLEVBQUUsTUFBSyxLQUFLLENBQUMsRUFBRSxNQUFNO0FBQUEsZUFBVSxFQUFFLE9BQU0sTUFBTSwwQ0FBMEM7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsT0FBTyxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU07QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLElBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxRQUFPO0FBQUMsYUFBTyxLQUFLLGNBQWMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsS0FBSyxHQUFFLEdBQUU7QUFBQyxVQUFHLEtBQUssV0FBVyxDQUFDLEdBQUUsRUFBRSxNQUFLLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxhQUFPLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssTUFBSSxHQUFHLFNBQVMsTUFBSSxHQUFHLFNBQVMsS0FBSTtBQUFDLFVBQUksSUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDO0FBQUUsYUFBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUcsU0FBUyxPQUFNO0FBQUMsVUFBSSxJQUFFLEtBQUssT0FBTyxPQUFPLENBQUM7QUFBRSxVQUFHLEtBQUssS0FBSyxLQUFJO0FBQUMsWUFBSSxJQUFFLGFBQWEsR0FBRyxPQUFLLElBQUUsS0FBSyxJQUFJLFFBQU8sQ0FBQztBQUFFLGVBQU8sS0FBSyxTQUFTLE1BQUssR0FBRSxHQUFHLElBQUksQ0FBQyxXQUFVLENBQUMsTUFBSTtBQUFDLGVBQUssSUFBSSxHQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUUsRUFBRSxDQUFDO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sS0FBSyxLQUFLLElBQUksR0FBRyxNQUFLLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssTUFBSSxHQUFHLFNBQVMsTUFBSSxHQUFHLFNBQVMsT0FBTTtBQUFDLFVBQUcsS0FBSyxLQUFLLGNBQWMsUUFBTyxLQUFLLE1BQU0sR0FBRSxHQUFHLGdCQUFnQixDQUFDLEtBQUksQ0FBQztBQUFFLFVBQUksSUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDO0FBQUUsYUFBTyxLQUFLLEtBQUssSUFBSSxHQUFHLE1BQUssR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsU0FBUTtBQUFDLGFBQU8sS0FBSyxjQUFjLEVBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUU7QUFBQyxhQUFPLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxJQUFJO0FBQUcsVUFBRyxLQUFLLFdBQVcsQ0FBQyxHQUFFLEtBQUssS0FBSyxDQUFDLEdBQUUsRUFBRSxNQUFNLFdBQVMsRUFBRSxPQUFNLE1BQU0sd0NBQXdDO0FBQUUsYUFBTyxLQUFLLGNBQWMsRUFBRTtBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFHLENBQUMsS0FBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLDhDQUE4QztBQUFFLFVBQUksSUFBRSxJQUFJO0FBQUcsVUFBRyxLQUFLLFdBQVcsQ0FBQyxHQUFFLEtBQUssS0FBSyxDQUFDLEdBQUUsR0FBRTtBQUFDLFlBQUksSUFBRSxLQUFLLEtBQUssR0FBRztBQUFFLGFBQUssWUFBVSxFQUFFLFFBQU0sSUFBSSxHQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsVUFBRyxFQUFFLE1BQUssWUFBVSxFQUFFLFVBQVEsSUFBSSxNQUFHLEtBQUssS0FBSyxDQUFDO0FBQUUsYUFBTyxLQUFLLGNBQWMsSUFBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsTUFBTSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLE1BQU0sR0FBRSxHQUFFO0FBQUMsVUFBRyxLQUFLLGFBQWEsS0FBSyxLQUFLLE9BQU8sTUFBTSxHQUFFLEVBQUUsTUFBSyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsU0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssYUFBYSxJQUFJO0FBQUUsVUFBRyxNQUFJLE9BQU8sT0FBTSxNQUFNLHNDQUFzQztBQUFFLFVBQUksSUFBRSxLQUFLLE9BQU8sU0FBTztBQUFFLFVBQUcsSUFBRSxLQUFHLE1BQUksVUFBUSxNQUFJLEVBQUUsT0FBTSxNQUFNLG1DQUFtQyxDQUFDLE9BQU8sQ0FBQyxXQUFXO0FBQUUsYUFBTyxLQUFLLE9BQU8sU0FBTyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsS0FBSyxHQUFFLElBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRTtBQUFDLFVBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLEtBQUssQ0FBQyxFQUFFLFFBQVE7QUFBRSxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsVUFBUztBQUFDLGFBQU8sS0FBSyxjQUFjLEVBQUU7QUFBQSxJQUFDO0FBQUEsSUFBQyxTQUFTLElBQUUsR0FBRTtBQUFDLGFBQU0sTUFBSyxFQUFFLE1BQUssTUFBTSxjQUFjLEdBQUUsS0FBSyxNQUFNLGNBQWMsS0FBSyxNQUFNLE9BQU0sS0FBSyxVQUFVO0FBQUEsSUFBQztBQUFBLElBQUMsVUFBVSxHQUFFO0FBQUMsYUFBTyxLQUFLLFVBQVUsTUFBTSxLQUFLLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLFdBQVcsR0FBRTtBQUFDLFdBQUssVUFBVSxNQUFNLEtBQUssQ0FBQyxHQUFFLEtBQUssT0FBTyxLQUFLLENBQUM7QUFBQSxJQUFDO0FBQUEsSUFBQyxjQUFjLEdBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLO0FBQVUsVUFBRyxhQUFhLEtBQUcsS0FBRyxhQUFhLEVBQUUsUUFBTyxLQUFLLE9BQU8sSUFBSSxHQUFFO0FBQUssWUFBTSxNQUFNLDBCQUEwQixJQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUcsRUFBRSxJQUFJLEdBQUc7QUFBQSxJQUFDO0FBQUEsSUFBQyxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFVLFVBQUcsRUFBRSxhQUFhLElBQUksT0FBTSxNQUFNLDhCQUE4QjtBQUFFLGFBQU8sS0FBSyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUEsSUFBSTtBQUFBLElBQUMsSUFBSSxRQUFPO0FBQUMsYUFBTyxLQUFLLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxJQUFDLElBQUksWUFBVztBQUFDLFVBQUksSUFBRSxLQUFLO0FBQU8sYUFBTyxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBSSxVQUFVLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFPLFFBQUUsRUFBRSxTQUFPLENBQUMsSUFBRTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGFBQVEsS0FBSyxFQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxLQUFHLE1BQUksRUFBRSxDQUFDLEtBQUc7QUFBRyxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLGFBQWEsR0FBRyxjQUFZLEdBQUcsR0FBRSxFQUFFLEtBQUssSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLGFBQWEsR0FBRyxLQUFLLFFBQU8sRUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQU87QUFBRSxXQUFPLElBQUksR0FBRyxNQUFNLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBRyxhQUFhLEdBQUcsS0FBSyxLQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsYUFBYSxHQUFHLE1BQU0sR0FBRSxLQUFLLEdBQUcsRUFBRSxNQUFNO0FBQUEsVUFBTyxHQUFFLEtBQUssQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxhQUFTLEVBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLEVBQUUsR0FBRztBQUFFLFVBQUcsTUFBSSxVQUFRLEVBQUUsRUFBRSxHQUFHLE1BQUksRUFBRSxRQUFPO0FBQUUsYUFBTyxPQUFPLEVBQUUsRUFBRSxHQUFHLEdBQUU7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxhQUFPLGFBQWEsR0FBRyxTQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsTUFBSSxhQUFhLEdBQUcsUUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFJLEtBQUcsRUFBRSxFQUFFLEdBQUcsTUFBSSxNQUFNO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsYUFBUSxLQUFLLEVBQUUsR0FBRSxDQUFDLEtBQUcsRUFBRSxDQUFDLEtBQUcsTUFBSSxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sT0FBTyxLQUFHLGFBQVcsT0FBTyxLQUFHLFlBQVUsTUFBSSxPQUFLLENBQUMsSUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFFO0FBQUMsS0FBRyxNQUFJO0FBQUcsTUFBSSxLQUFHLEdBQUcsR0FBRyxVQUFVLEdBQUc7QUFBRSxXQUFTLE1BQU0sR0FBRTtBQUFDLFdBQU8sRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUFDO0FBQUMsS0FBRyxNQUFJO0FBQUcsTUFBSSxLQUFHLEdBQUcsR0FBRyxVQUFVLEVBQUU7QUFBRSxXQUFTLE1BQU0sR0FBRTtBQUFDLFdBQU8sRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUFDO0FBQUMsS0FBRyxLQUFH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SUFBSSxTQUFRLElBQUU7QUFBRSxRQUFJLElBQUUsRUFBRSxJQUFJLFNBQVEsR0FBRyxLQUFLO0FBQUUsUUFBRyxNQUFJLE9BQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsS0FBRyx1QkFBcUI7QUFBRyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFJLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFHLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGVBQWE7QUFBRyxNQUFJLEtBQUcsQ0FBQztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsV0FBVyxRQUFPLEVBQUMsS0FBSSxHQUFFLE1BQUssR0FBRyxFQUFFLElBQUksTUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFFLElBQUksR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUcsTUFBSTtBQUFHLEdBQUMsU0FBUyxHQUFFO0FBQUMsTUFBRSxFQUFFLE1BQUksQ0FBQyxJQUFFLE9BQU0sRUFBRSxFQUFFLE1BQUksQ0FBQyxJQUFFO0FBQUEsRUFBSyxHQUFHLE9BQUssR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFO0FBQUUsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxhQUFhLEdBQUcsTUFBSztBQUFDLFVBQUksSUFBRSxNQUFJLEdBQUc7QUFBSSxhQUFPLElBQUUsSUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFTLEdBQUcsV0FBVyxDQUFDLFlBQVUsSUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFHLEdBQUcsVUFBVSxDQUFDO0FBQUEsSUFBNEM7QUFBQyxXQUFPLEtBQUcsR0FBRSxHQUFHLGFBQWEsQ0FBQyxFQUFFLFNBQVMsSUFBRSxNQUFJLEdBQUcsQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGVB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U0FBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUUsR0FBRyxJQUFJLEdBQUcsUUFBUSxPQUFPLFNBQVMsQ0FBQyxHQUFHLEdBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLFFBQVEsTUFBTSxJQUFJO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLGNBQWEsR0FBRSxXQUFVLEVBQUMsSUFBRTtBQUFFLFFBQUcsRUFBRSxPQUFPLEdBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxlQUFlLElBQUksQ0FBQyxHQUFHO0FBQUEsUUFBTyxHQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVSxDQUFDLEdBQUUsRUFBRSxPQUFPLEtBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsU0FBUSxJQUFJLEdBQUcsS0FBSyxTQUFTLEdBQUUsWUFBVyxJQUFJLEdBQUcsS0FBSyxZQUFZLEdBQUUsUUFBTyxJQUFJLEdBQUcsS0FBSyxRQUFRLEdBQUUsY0FBYSxJQUFJLEdBQUcsS0FBSyxjQUFjLEdBQUUsU0FBUSxJQUFJLEdBQUcsS0FBSyxTQUFTLEdBQUUsUUFBTyxJQUFJLEdBQUcsS0FBSyxRQUFRLEdBQUUsY0FBYSxJQUFJLEdBQUcsS0FBSyxjQUFjLEVBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsY0FBYSxFQUFDLElBQUUsRUFBRTtBQUFHLFFBQUcsTUFBSSxNQUFHLFFBQU8sR0FBRztBQUFNLFdBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksR0FBRSxJQUFHLEVBQUMsSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxFQUFDLFdBQVUsRUFBQyxHQUFFLEVBQUMsY0FBYSxFQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUUsR0FBRyxjQUFjLEdBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFHO0FBQUUsV0FBTSxDQUFDLEdBQUcsUUFBUSxlQUFjLEdBQUUsR0FBRyxXQUFXLEdBQUcsUUFBUSxjQUFhLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsRUFBQyxTQUFRLEdBQUUsSUFBRyxFQUFDLGVBQWMsRUFBQyxFQUFDLEdBQUUsRUFBQyxZQUFXLEdBQUUsY0FBYSxFQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRSxJQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUFHLFFBQUcsRUFBRSxLQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRSxHQUFHLGNBQWMsR0FBRSxHQUFHLEtBQUssR0FBRyxDQUFDO0FBQUcsV0FBTSxDQUFDLEdBQUcsWUFBVyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEVBQUMsUUFBTyxHQUFFLFNBQVEsRUFBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsU0FBUSxHQUFFLE1BQUssR0FBRSxhQUFZLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxFQUFDLE1BQUssR0FBRSxjQUFhLEdBQUUsY0FBYSxHQUFFLFlBQVcsRUFBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRyxRQUFPLE9BQU8sS0FBRyxhQUFXLEVBQUUsQ0FBQyxJQUFFLEtBQUcsR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLFNBQVMsR0FBRSxLQUFLLENBQUMsR0FBRyxTQUFRLE9BQU8sS0FBRyxhQUFXLEVBQUUsQ0FBQyxJQUFFLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxRQUFRLEdBQUUsS0FBSyxDQUFDLEdBQUcsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFHLGNBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUcsUUFBUSxNQUFLLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxHQUFFLEtBQUssQ0FBQyxHQUFHLGNBQWEsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLG9CQUFrQixHQUFHLHVCQUFxQjtBQUFPLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsMEJBQXlCO0FBQUUsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxjQUFhLEVBQUMsSUFBRTtBQUFFLFFBQUcsTUFBSSxNQUFHLElBQUcsR0FBRSxLQUFFO0FBQUEsYUFBVSxPQUFPLEtBQUcsWUFBVSxFQUFFLFdBQVMsS0FBRyxHQUFFLE9BQU8sR0FBRyxRQUFRLElBQUk7QUFBQSxRQUFPLEdBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFVLElBQUksR0FBRSxFQUFFLE9BQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLHVCQUFxQjtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsUUFBRyxNQUFJLE1BQUcsR0FBRSxJQUFJLEdBQUUsS0FBRSxHQUFFLEdBQUcsQ0FBQztBQUFBLFFBQU8sR0FBRSxJQUFJLEdBQUUsSUFBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLG9CQUFrQjtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLE1BQUssRUFBQyxJQUFFLEdBQUUsSUFBRSxFQUFDLEtBQUksR0FBRSxTQUFRLGdCQUFlLE1BQUssR0FBRSxRQUFPLE9BQUcsWUFBVyxPQUFHLGFBQVksT0FBRyxRQUFPLENBQUMsR0FBRSxJQUFHLEVBQUM7QUFBRSxLQUFDLEdBQUUsR0FBRyxhQUFhLEdBQUUsSUFBRyxRQUFPLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsV0FBUyxHQUFHLGFBQVc7QUFBTyxNQUFJLEtBQUcsQ0FBQyxVQUFTLFVBQVMsV0FBVSxXQUFVLFFBQU8sVUFBUyxPQUFPLEdBQUUsS0FBRyxJQUFJLElBQUksRUFBRTtBQUFFLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxPQUFPLEtBQUcsWUFBVSxHQUFHLElBQUksQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGFBQVc7QUFBRyxXQUFTLEtBQUk7QUFBQyxRQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxVQUFTLE9BQU0sQ0FBQyxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssVUFBUyxPQUFNLENBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFNBQVEsT0FBTSxDQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxVQUFTLE9BQU0sQ0FBQyxFQUFDLEVBQUM7QUFBRSxXQUFNLEVBQUMsT0FBTSxFQUFDLEdBQUcsR0FBRSxTQUFRLE1BQUcsU0FBUSxNQUFHLE1BQUssS0FBRSxHQUFFLE9BQU0sQ0FBQyxFQUFDLE9BQU0sQ0FBQyxFQUFDLEdBQUUsRUFBRSxRQUFPLEVBQUUsUUFBTyxFQUFFLE9BQU0sRUFBRSxNQUFNLEdBQUUsTUFBSyxFQUFDLE9BQU0sQ0FBQyxFQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsVUFBUyxDQUFDLEVBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxXQUFTO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsZ0JBQWMsR0FB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LEdBQUUsSUFBRyxFQUFDLElBQUU7QUFBRSxPQUFHLEdBQUUsQ0FBQztBQUFFLFFBQUksSUFBRSxDQUFDLEtBQUcsRUFBRSxVQUFRLEVBQUUsUUFBUSxLQUFLLEVBQUUsTUFBSyxHQUFFLEdBQUUsQ0FBQyxJQUFFLEVBQUUsVUFBUyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxPQUFPO0FBQUUsTUFBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBSSxJQUFFLEVBQUUsV0FBUyxRQUFNLE1BQUksU0FBTyxJQUFFLENBQUM7QUFBRSxhQUFTLElBQUc7QUFBQyxVQUFHLEVBQUUsV0FBUyxPQUFHO0FBQUMsWUFBRyxFQUFFLEdBQUUsRUFBRSxVQUFVLElBQUcsQ0FBQztBQUFFLFVBQUUsTUFBSSxFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUksSUFBRSxFQUFFLFFBQU0sRUFBRSxJQUFFLEVBQUU7QUFBRSxZQUFHLEVBQUUsVUFBVSxJQUFHLENBQUM7QUFBRSxVQUFFLE1BQUksR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxJQUFHO0FBQUMsVUFBSSxJQUFFLEVBQUUsSUFBSSxZQUFXLElBQUk7QUFBRSxhQUFPLEVBQUUsSUFBSSxNQUFJLEVBQUUsR0FBRyxTQUFTLEdBQUUsQ0FBQyxNQUFJLEVBQUUsT0FBTyxHQUFFLEtBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLElBQUcsTUFBSSxFQUFFLE9BQU8sR0FBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUUsTUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxhQUFTLElBQUc7QUFBQyxVQUFJLElBQUUsR0FBRyxJQUFJLENBQUM7QUFBVSxhQUFPLEVBQUUsT0FBTyxHQUFFLElBQUksR0FBRSxFQUFFLEdBQUcsR0FBRyxHQUFFO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxJQUFF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S0FBRyxZQUFVLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBQSxJQUFFO0FBQUMsV0FBTTtBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLGFBQVEsS0FBSyxHQUFFO0FBQUMsVUFBRyxNQUFJLE9BQU8sUUFBTyxJQUFFO0FBQUUsVUFBRyxLQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFBUyxVQUFHLE9BQU8sRUFBRSxDQUFDLEtBQUcsU0FBUyxFQUFDLEdBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFFLENBQUMsTUFBSSxLQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUUsVUFBRyxNQUFJLElBQUUsRUFBRSxRQUFPLElBQUU7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxJQUFFLElBQUcsR0FBRTtBQUFDLFFBQUcsTUFBSSxNQUFHLEtBQUUsR0FBRyxDQUFDO0FBQUUsUUFBSSxJQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxLQUFHLGNBQVk7QUFBRyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBRTtBQUFBLEVBQUc7QUFBQyxLQUFHLGVBQWE7QUFBRyxNQUFJLEtBQUc7QUFBUSxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sSUFBRSxFQUFFLFFBQVEsSUFBRyxFQUFFLElBQUU7QUFBQSxFQUFFO0FBQUMsS0FBRyxjQUFZO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsUUFBUSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxhQUFXO0FBQUcsTUFBSSxLQUFHO0FBQXdCLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLE9BQU8sS0FBRyxVQUFVLFFBQU0sQ0FBQztBQUFFLFFBQUcsRUFBQyxVQUFTLEdBQUUsYUFBWSxFQUFDLElBQUUsS0FBSyxNQUFLLElBQUUsR0FBRyxFQUFFLENBQUMsS0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFDLElBQUcsRUFBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsb0JBQUk7QUFBSSxXQUFPLEdBQUcsR0FBRSxFQUFDLFNBQVEsS0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsTUFBSTtBQUFDLFVBQUcsTUFBSSxPQUFPO0FBQU8sVUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsT0FBTyxFQUFFLENBQUMsS0FBRyxTQUFTLEtBQUUsRUFBRSxLQUFLLE1BQUssRUFBRSxDQUFDLENBQUM7QUFBRSxRQUFFLEtBQUssTUFBSyxFQUFFLE9BQU8sR0FBRSxFQUFFLEtBQUssTUFBSyxFQUFFLGNBQWMsR0FBRSxFQUFFLENBQUMsSUFBRTtBQUFFLGVBQVMsRUFBRSxHQUFFO0FBQUMsWUFBSSxJQUFFLEtBQUssS0FBSyxZQUFZO0FBQVEsWUFBRyxJQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUksQ0FBQyxFQUFFLE9BQU0sRUFBRSxDQUFDO0FBQUUsVUFBRSxJQUFJLENBQUM7QUFBRSxZQUFJLElBQUUsS0FBSyxLQUFLLENBQUM7QUFBRSxZQUFHLE9BQU8sS0FBRyxTQUFTLEtBQUUsS0FBSyxLQUFLLENBQUM7QUFBRSxZQUFHLE9BQU8sS0FBRyxTQUFTLEdBQUUsR0FBRSxFQUFFLFFBQU8sQ0FBQztBQUFBLGlCQUFVLE1BQUksR0FBRyxDQUFDLEVBQUUsS0FBRyxFQUFFLENBQUMsTUFBSSxJQUFJLEdBQUUsR0FBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLElBQUU7QUFBQSxZQUFPLE1BQUssS0FBSyxDQUFDLElBQUU7QUFBRSxlQUFPO0FBQUEsTUFBQztBQUFDLGVBQVMsRUFBRSxHQUFFO0FBQUMsWUFBRyxPQUFPLEtB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QU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxVQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsaUJBQWdCLE1BQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsVUFBUyxFQUFFLFlBQVksQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sS0FBRyxZQUFVLEVBQUUsRUFBRSxRQUFRO0FBQUUsV0FBTyxNQUFJLEVBQUUsS0FBSyxVQUFRLEVBQUUsS0FBSyxXQUFTLEVBQUUsa0JBQWtCLENBQUMsUUFBTSxFQUFFO0FBQUEsRUFBRztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRTtBQUFDLFdBQUcsR0FBRSxDQUFDO0FBQUU7QUFBQSxNQUFNO0FBQUEsSUFBQztBQUFDLEtBQUMsR0FBRSxHQUFHLG1CQUFtQixHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEVBQUMsUUFBTyxHQUFFLE1BQUssRUFBQyxHQUFFO0FBQUMsUUFBRyxPQUFPLEtBQUcsVUFBVSxRQUFNLENBQUM7QUFBRSxhQUFRLEtBQUssRUFBRSxLQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxRQUFNO0FBQUcsV0FBTTtBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU8sT0FBTyxFQUFFLFVBQVE7QUFBQSxFQUFTO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxRQUFPLEdBQUUsS0FBSSxHQUFFLE1BQUssRUFBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLFlBQVUsRUFBRSxTQUFTLElBQUcsQ0FBQztBQUFFLE9BQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFLFFBQUksSUFBRSxFQUFFLE1BQU0sU0FBUSxFQUFFLFFBQVEsTUFBTTtBQUFFLE9BQUcsR0FBRSxD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QUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxLQUFJLEdBQUUsUUFBTyxHQUFFLE1BQUssRUFBQyxhQUFZLEVBQUMsRUFBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLEVBQUMsR0FBRSxHQUFHLGdCQUFnQixHQUFFLEVBQUUsSUFBSTtBQUFFLE1BQUUsTUFBTSxNQUFJO0FBQUMsZUFBUSxLQUFLLEVBQUUsTUFBTSxNQUFJLEdBQUUsR0FBRyxlQUFlLEdBQUUsQ0FBQyxFQUFFLElBQUcsR0FBRSxFQUFFLFNBQVEsRUFBRSxZQUFXLEVBQUUsSUFBSTtBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLFVBQVUsUUFBTSxDQUFDLEVBQUUsS0FBSyxZQUFZO0FBQU8sUUFBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxLQUFLLGdCQUFnQixJQUFHLEdBQUUsQ0FBQztBQUFFLE9BQUcsR0FBRSxFQUFFLFNBQVM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsQ0FBQyxFQUFFLE9BQU87QUFBTyxRQUFHLENBQUMsRUFBRSxVQUFVLFFBQU87QUFBQyxRQUFFLFlBQVU7QUFBRTtBQUFBLElBQU07QUFBQyxNQUFFLFFBQVEsQ0FBQyxNQUFJO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxXQUFVLENBQUMsRUFBRSxJQUFHLEdBQUUsU0FBUyxDQUFDLDZCQUE2QixFQUFFLFVBQVUsS0FBSyxHQUFHLENBQUMsR0FBRztBQUFBLElBQUMsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUUsU0FBTyxLQUFHLEVBQUUsRUFBRSxXQUFTLEtBQUcsRUFBRSxTQUFTLE1BQU0sR0FBRyxJQUFHLEdBQUUsaURBQWlEO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFB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QUFFLEdBQUcsS0FBSyxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxhQUFRLEtBQUssS0FBSyxjQUFjLEtBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxRQUFPO0FBQUEsRUFBQztBQUFDLEtBQUcscUJBQW1CO0FBQUcsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxXQUFTLEVBQUUsVUFBUSxFQUFFLFNBQU8sRUFBRSxRQUFNLEVBQUUsV0FBUyxFQUFFO0FBQUEsRUFBTTtBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJO0FBQUUsV0FBTSxRQUFPLElBQUUsS0FBSyxLQUFLLENBQUMsTUFBSSxTQUFTLEtBQUU7QUFBRSxXQUFPLEtBQUcsS0FBSyxRQUFRLENBQUMsS0FBRyxHQUFHLEtBQUssTUFBSyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLEtBQUssWUFBWSxNQUFNLENBQUMsR0FBRSxLQUFHLEdBQUUsR0FBRyxjQUFjLEtBQUssS0FBSyxhQUFZLENBQUMsR0FBRSxLQUFHLEdBQUUsR0FBRyxhQUFhLEtBQUssS0FBSyxhQUFZLEVBQUUsUUFBTyxNQUFNO0FBQUUsUUFBRyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBTyxLQUFHLE1BQUksRUFBRSxRQUFPLEdBQUcsS0FBSyxNQUFLLEdBQUUsQ0FBQztBQUFFLFFBQUksS0FBRyxHQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUUsSUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFHLEtBQUssUUFBUSxDQUFDO0FBQUUsUUFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLFVBQUksSUFBRSxHQUFHLEtBQUssTUFBSyxHQUFFLENBQUM7QUFBRSxVQUFHLFFBQU8sTUFBSSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsWUFBVSxTQUFTO0FBQU8sYUFBTyxHQUFHLEtBQUssTUFBSyxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxRQUFP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QUksR0FBRTtBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLEtBQUksT0FBSztBQUFDLE1BQUcsRUFBQyxLQUFJLEdBQUUsSUFBRSxHQUFHLEdBQUUsS0FBRztBQUEyRixXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsR0FBRyxHQUFFLEdBQUcsSUFBRSxFQUFFLFFBQU0sRUFBQyxNQUFLLEdBQUUsUUFBTyxNQUFFO0FBQUUsUUFBSSxJQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLFFBQU0sRUFBQyxNQUFLLEdBQUcsR0FBRSxHQUFHLEdBQUUsUUFBTyxLQUFFO0FBQUEsUUFBTyxRQUFNLEVBQUMsTUFBSyxHQUFFLFFBQU8sTUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxJQUFFLE9BQUc7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFO0FBQUcsYUFBUSxLQUFLLEdBQUU7QUFBQyxVQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU87QUFBTyxVQUFHLE1BQUksT0FBSyxNQUFJLEtBQUcsS0FBRTtBQUFHLFVBQUcsQ0FBQyxFQUFFLE1BQUc7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFHLEVBQUUsV0FBUyxFQUFFLEtBQUU7QUFBSSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFDLE9BQU0sT0FBRyxTQUFRLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFHLElBQUUsT0FBRyxJQUFFO0FBQUcsYUFBUyxJQUFHO0FBQUMsVUFBRyxFQUFFLFFBQU87QUFBQyxZQUFHLE1BQUksT0FBRztBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxjQUFHLE1BQUksT0FBTyxHQUFFLEtBQUssQ0FBQztBQUFBLGNBQU8sUUFBTyxFQUFFLFFBQU0sTUFBRztBQUFBLFFBQUU7QUFBQyxVQUFFLFNBQU87QUFBQSxNQUFDO0FBQUMsYUFBTTtBQUFBLElBQUU7QUFBQyxhQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFLLE1BQUksSUFBSTtBQUFTLFVBQUcsTUFBSSxLQUFJO0FBQUMsWUFBRyxNQUFJLEtBQUcsS0FBRTtBQUFHLFlBQUcsQ0FBQyxFQUFFLEVBQUU7QUFBTSxZQUFHLEtBQUksRUFBRSxLQUFLLEdBQUcsR0FBRSxJQUFFLEdBQUU7QUFBQyxZQUFFLFFBQU07QUFBRztBQUFBLFFBQUs7QUFBQyxZQUFHLElBQUUsS0FBRyxLQUFHLEVBQUUsSUFBRSxDQUFDLE1BQUksSUFBSSxLQUFFO0FBQUc7QUFBQSxNQUFRLFdBQVMsTUFBSSxLQUFJO0FBQUMsWUFBRyxDQUFDLEVBQUUsRUFBRTtBQUFNLFlBQUU7QUFBQSxNQUFFLE9BQUs7QUFBQyxVQUFFLEtBQUssQ0FBQztBQUFFO0FBQUEsTUFBUTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxLQUFHLEVBQUUsR0FBRSxPQUFLLEVBQUUsS0FBSyxFQUFFO0FBQUEsYUFBVSxFQUFFLEdBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQUEsUUFBTyxHQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsVUFBUSxFQUFFLEtBQUssRUFBRSxHQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBRyxHQUFHLEdBQUUsR0FBRyxJQUFFLEVBQUUsUUFBTSxFQUFDLE1BQUssR0FBRSxRQUFPLE1BQUU7QUFBRSxRQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTTtBQUFDLFVBQUcsRUFBQyxTQUFRLEdBQUUsU0FBUSxFQUFDLElBQUU7QUFBRSxVQUFHLEVBQUUsS0FBSyxNQUFHLE1BQUksRUFBRSxNQUFLLEtBQUcsUUFBTSxFQUFFO0FBQUssYUFBTSxFQUFDLE1BQUssR0FBRSxhQUFZLEdBQUUsUUFBTyxLQUFFO0FBQUEsSUFBQyxNQUFNLFFBQU0sRUFBQyxNQUFLLEdBQUUsUUFBTyxNQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFLE1BQUcsSUFBRSxFQUFFO0FBQU8sYUFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUk7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxNQUFJLE9BQUssR0FBRTtBQUFDLFlBQUcsSUFBRSxLQUFHLEtBQUcsRUFBRSxJQUFFLENBQUMsTUFBSSxLQUFHLElBQUUsTUFBSSxFQUFFLE1BQUcsR0FBRSxJQUFFO0FBQUEsTUFBRSxPQUFLO0FBQUMsWUFBRyxNQUFJLEVBQUUsS0FBRTtBQUFBLFlBQVEsS0FBRTtBQUFHLGFBQUc7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUksS0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFO0FBQUksV0FBTztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsYUFBWSxLQUFHLGtCQUFpQixLQUFHLG9CQUFtQixLQUFHO0FBQTBCLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUM7QUFBRSxXQUFNLEVBQUUsT0FBTyxLQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBRSxFQUFFLFFBQVEsSUFBRyxFQUFFO0FBQUEsYUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUUsRUFBRSxRQUFRLElBQUcsR0FBRztBQUFBLGFBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFFLEVBQUUsUUFBUSxJQUFHLEdBQUcsR0FBRSxFQUFFLElBQUk7QUFBQSxhQUFVLE1BQUksT0FBSyxNQUFJLEtBQUssS0FBRTtBQUFBLFNBQU87QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFNLEVBQUU7QUFBRSxVQUFHLEdBQUU7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsWUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFDLE1BQU0sT0FBTSxNQUFNLGtDQUFrQztBQUFBLElBQUM7QUFBQyxXQUFPLEVBQUUsS0FBSyxFQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsTUFBSSxPQUFHLFNBQU87QUFBUyxRQUFHLEVBQUUsV0FBUyxPQUFPLEdBQUUsU0FBTyxFQUFFLEVBQUUsTUFBTTtBQUFFLFFBQUcsRUFBRSxhQUFXLE9BQU8sR0FBRSxXQUFTLEVBQUUsRUFBRSxRQUFRO0FBQUUsUUFBRyxFQUFFLFNBQU8sT0FBTyxHQUFFLE9BQUssRUFBRSxFQUFFLElBQUk7QUFBRSxRQUFHLEVBQUUsU0FBTyxPQUFPLEdBQUUsT0FBSyxFQUFFLEVBQUUsSUFBSTtBQUFFLFFBQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEVBQUUsRUFBRSxLQUFLO0FBQUUsUUFBRyxFQUFFLGFBQVcsT0FBTyxHQUFFLFdBQVMsRUFBRSxFQUFFLFFBQVE7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsYUFBVyxPQUFPLEdBQUUsS0FBSyxFQUFFLFFBQVEsR0FBRSxFQUFFLEtBQUssR0FBRztBQUFFLFFBQUcsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFJLElBQUUsU0FBUyxFQUFFLElBQUksR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUcsRUFBRSxPQUFPLEtBQUUsRUFBRTtBQUFBLFdBQVM7QUFBQyxZQUFJLElBQUUsR0FBRyxFQUFFLElBQUk7QUFBRSxZQUFHLEVBQUUsV0FBUyxLQUFHLEtBQUUsSUFBSSxFQUFFLFdBQVc7QUFBQSxZQUFTLEtBQUUsRUFBRTtBQUFBLE1BQUk7QUFBQyxRQUFFLEtBQUssQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLE9BQU8sRUFBRSxTQUFPLFlBQVUsT0FBTyxFQUFFLFNBQU8sU0FBUyxHQUFFLEtBQUssR0FBRyxHQUFFLEVBQUUsS0FBSyxPQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUUsV0FBTyxFQUFFLFNBQU8sRUFBRSxLQUFLLEVBQUUsSUFBRTtBQUFBLEVBQU07QUFBQyxLQUFHLFVBQVEsRUFBQyxvQkFBbUIsSUFBRyw0QkFBMkIsSUFBRyxtQkFBa0IsSUFBRyxlQUFjLElBQUcsZUFBYyxJQUFHLDBCQUF5QixHQUFFO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsS0FBSSxPQUFLO0FBQUMsTUFBSSxLQUFHLCtEQUE4RCxLQUFHO0FBQW9FLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxPQUFPLEVBQUUsV0FBUyxZQUFVLEVBQUUsU0FBTyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksTUFBSTtBQUFBLEVBQUs7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRSxRQUFNLEVBQUUsU0FBTztBQUE4QixXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxNQUFJO0FBQVEsUUFBRyxFQUFFLFVBQVEsSUFBRSxNQUFJLE9BQUssRUFBRSxTQUFPLEdBQUcsR0FBRSxPQUFLO0FBQU8sUUFBRyxDQUFDLEVBQUUsS0FBSyxHQUFFLE9BQUs7QUFBSSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxFQUFFLFNBQU8sR0FBRyxDQUFDLEdBQUUsRUFBRSxnQkFBYyxFQUFFLFFBQU0sUUFBTSxFQUFFLFFBQU0sTUFBSSxFQUFFLFFBQU0sS0FBSSxFQUFFLE9BQUssUUFBTyxFQUFFLFFBQU0sUUFBTztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsRUFBRSxVQUFRLEdBQUcsQ0FBQyxJQUFFLE1BQUksT0FBSyxFQUFFLFNBQU8sR0FBRyxHQUFFLE9BQUs7QUFBTyxRQUFHLE9BQU8sRUFBRSxXQUFTLFVBQVUsR0FBRSxTQUFPLEVBQUUsU0FBTyxRQUFNLE1BQUssRUFBRSxTQUFPO0FBQU8sUUFBRyxFQUFFLGNBQWE7QUFBQyxVQUFHLENBQUMsR0FBRSxDQUFDLElBQUUsRUFBRSxhQUFhLE1BQU0sR0FBRztBQUFFLFFBQUUsT0FBSyxLQUFHLE1BQUksTUFBSSxJQUFFLFFBQU8sRUFBRSxRQUFNLEdBQUUsRUFBRSxlQUFhO0FBQUEsSUFBTTtBQUFDLFdBQU8sRUFBRSxXQUFTLFFBQU87QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUcsQ0FBQyxFQUFFLEtBQUssUUFBTyxFQUFFLFFBQU0seUJBQXdCO0FBQUUsUUFBSSxJQUFFLEVBQUUsS0FBSyxNQUFNLEVBQUU7QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxVQUFRLEVBQUUsVUFBUTtBQUFNLFFBQUUsTUFBSSxFQUFFLENBQUMsRUFBRSxZQUFZLEdBQUUsRUFBRSxNQUFJLEVBQUUsQ0FBQztBQUFFLFVBQUksSUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQUssRUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLENBQUM7QUFBRSxVQUFHLEVBQUUsT0FBSyxRQUFPLEVBQUUsS0FBRSxFQUFFLE1BQU0sR0FBRSxDQUFDO0FBQUEsSUFBQyxNQUFNLEdBQUUsUUFBTSxFQUFFLFNBQU87QUFBeUIsV0FBTztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsVUFBUSxFQUFFLFVBQVEsT0FBTSxJQUFFLEVBQUUsSUFBSSxZQUFZLEdBQUUsSUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQUssQ0FBQyxJQUFHLElBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxFQUFFLEtBQUUsRUFBRSxVQUFVLEdBQUUsQ0FBQztBQUFFLFFBQUksSUFBRSxHQUFFLElBQUUsRUFBRTtBQUFJLFdBQU8sRUFBRSxPQUFLLEdBQUcsS0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUcsRUFBRSxhQUFXLE1BQUc7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLFFBQUcsRUFBRSxPQUFLLEVBQUUsS0FBSSxFQUFFLE1BQUksUUFBTyxDQUFDLEVBQUUsYUFBVyxDQUFDLEVBQUUsUUFBTSxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxHQUFFLFFBQU0sRUFBRSxTQUFPO0FBQXFCLFdBQU87QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFJLElBQUU7QUFBRSxXQUFPLEVBQUUsT0FBSyxFQUFFLFFBQU0sSUFBSSxZQUFZLEdBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsUUFBTyxRQUFPLFlBQVcsTUFBRyxPQUFNLElBQUcsV0FBVSxHQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sU0FBUSxZQUFXLEdBQUcsWUFBVyxPQUFNLElBQUcsV0FBVSxHQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sTUFBSyxZQUFXLE1BQUcsT0FBTSxJQUFHLFdBQVUsR0FBRSxHQUFFLEtBQUcsRUFBQyxRQUFPLE9BQU0sWUFBVyxHQUFHLFlBQVcsT0FBTSxHQUFHLE9BQU0sV0FBVSxHQUFHLFVBQVMsR0FBRSxLQUFHLEVBQUMsUUFBTyxPQUFNLE9BQU0sSUFBRyxXQUFVLElBQUcsZUFBYyxLQUFFLEdBQUUsS0FBRyxFQUFDLFFBQU8sWUFBVyxPQUFNLElBQUcsV0FBVSxJQUFHLGVBQWMsS0FBRSxHQUFFLEtBQUcsRUFBQyxNQUFLLElBQUcsT0FBTSxJQUFHLElBQUcsSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFlBQVcsR0FBRTtBQUFFLEtBQUcsVUFBUTtBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLEtBQUksT0FBSztBQUFDLE1BQUcsRUFBQyxlQUFjLElBQUcsZUFBYyxJQUFHLG1CQUFrQixJQUFHLG9CQUFtQixJQUFHLDRCQUEyQixHQUFFLElBQUUsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxhQUFVLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxPQUFPLE9BQU8sRUFBQyxRQUFPLE9BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUU7QUFBRSxXQUFPLEdBQUcsR0FBRSxFQUFDLEdBQUcsR0FBRSxZQUFXLEtBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxRQUFHLElBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxFQUFFLFlBQVUsRUFBRSxPQUFPLEdBQUUsU0FBTyxFQUFFLFFBQU8sRUFBRSxXQUFTLEVBQUUsVUFBUyxFQUFFLE9BQUssRUFBRSxNQUFLLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxPQUFLLEdBQUcsRUFBRSxRQUFNLEVBQUUsR0FBRSxFQUFFLFFBQU0sRUFBRTtBQUFBLFNBQVU7QUFBQyxVQUFHLEVBQUUsYUFBVyxVQUFRLEVBQUUsU0FBTyxVQUFRLEVBQUUsU0FBTyxPQUFPLEdBQUUsV0FBUyxFQUFFLFVBQVMsRUFBRSxPQUFLLEVBQUUsTUFBSyxFQUFFLE9BQUssRUFBRSxNQUFLLEVBQUUsT0FBSyxHQUFHLEVBQUUsUUFBTSxFQUFFLEdBQUUsRUFBRSxRQUFNLEVBQUU7QUFBQSxXQUFVO0FBQUMsWUFBRyxDQUFDLEVBQUUsS0FBSyxLQUFHLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEVBQUU7QUFBQSxZQUFXLEdBQUUsUUFBTSxFQUFFO0FBQUEsYUFBVTtBQUFDLGNBQUcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxNQUFJLElBQUksR0FBRSxPQUFLLEdBQUcsRUFBRSxJQUFJO0FBQUEsZUFBTTtBQUFDLGlCQUFJLEVBQUUsYUFBVyxVQUFRLEVBQUUsU0FBTyxVQUFRLEVBQUUsU0FBTyxXQUFTLENBQUMsRUFBRSxLQUFLLEdBQUUsT0FBSyxNQUFJLEVBQUU7QUFBQSxxQkFBYSxDQUFDLEVBQUUsS0FBSyxHQUFFLE9BQUssRUFBRTtBQUFBLGdCQUFVLEdBQUUsT0FBSyxFQUFFLEtBQUssTUFBTSxHQUFFLEVBQUUsS0FBSyxZQUFZLEdBQUcsSUFBRSxDQUFDLElBQUUsRUFBRTtBQUFLLGNBQUUsT0FBSyxHQUFHLEVBQUUsSUFBSTtBQUFBLFVBQUM7QUFBQyxZQUFFLFFBQU0sRUFBRTtBQUFBLFFBQUs7QUFBQyxVQUFFLFdBQVMsRUFBRSxVQUFTLEVBQUUsT0FBSyxFQUFFLE1BQUssRUFBRSxPQUFLLEVBQUU7QUFBQSxNQUFJO0FBQUMsUUFBRSxTQUFPLEVBQUU7QUFBQSxJQUFNO0FBQUMsV0FBTyxFQUFFLFdBQVMsRUFBRSxVQUFTO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsT0FBTyxNQUFJLFNBQVMsS0FBRSxTQUFTLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxFQUFDLEdBQUcsR0FBRSxZQUFXLEtBQUUsQ0FBQztBQUFBLGFBQVUsT0FBTyxNQUFJLFNBQVMsS0FBRSxHQUFHLEdBQUcsR0FBRSxJQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsWUFBVyxLQUFFLENBQUM7QUFBRSxRQUFHLE9BQU8sTUFBSSxTQUFTLEtBQUUsU0FBUyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsWUFBVyxLQUFFLENBQUM7QUFBQSxhQUFVLE9BQU8sTUFBSSxTQUFTLEtBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRSxHQUFFLEVBQUMsR0FBRyxHQUFFLFlBQVcsS0FBRSxDQUFDO0FBQUUsV0FBTyxFQUFFLFlBQVksTUFBSSxFQUFFLFlBQVk7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFDLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBRSxRQUFPLFVBQVMsRUFBRSxVQUFTLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLE9BQU0sRUFBRSxPQUFNLEtBQUksRUFBRSxLQUFJLEtBQUksRUFBRSxLQUFJLE1BQUssRUFBRSxNQUFLLFVBQVMsRUFBRSxVQUFTLFdBQVUsRUFBRSxXQUFVLGNBQWEsRUFBRSxjQUFhLFFBQU8sRUFBRSxRQUFPLE9BQU0sR0FBRSxHQUFFLElBQUUsT0FBTyxPQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxJQUFJLEVBQUUsVUFBUSxFQUFFLFVBQVEsSUFBSSxZQUFZLENBQUM7QUFBRSxRQUFHLEtBQUcsRUFBRSxVQUFVLEdBQUUsVUFBVSxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsU0FBTyxPQUFPLEtBQUcsQ0FBQyxFQUFFLFlBQVc7QUFBQyxVQUFHLEVBQUUsT0FBSyxPQUFPLEVBQUUsSUFBSSxHQUFFLEVBQUUsV0FBUyxPQUFPLEdBQUUsT0FBSyxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQyxNQUFNLEdBQUUsT0FBSyxTQUFTLEVBQUUsSUFBSTtBQUFFLFFBQUcsRUFBRSxjQUFZLFlBQVUsRUFBRSxPQUFPLEdBQUUsS0FBSyxFQUFFLFFBQU8sR0FBRztBQUFFLFFBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxRQUFHLE1BQUksUUFBTztBQUFDLFVBQUcsRUFBRSxjQUFZLFNBQVMsR0FBRSxLQUFLLElBQUk7QUFBRSxVQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxRQUFNLEVBQUUsS0FBSyxPQUFPLENBQUMsTUFBSSxJQUFJLEdBQUUsS0FBSyxHQUFHO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFJLElBQUUsRUFBRTtBQUFLLFVBQUcsQ0FBQyxFQUFFLGlCQUFlLENBQUMsS0FBRyxDQUFDLEVBQUUsY0FBYyxLQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFPLEtBQUUsRUFBRSxRQUFRLFVBQVMsTUFBTTtBQUFFLFFBQUUsS0FBSyxDQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxLQUFLLEtBQUksRUFBRSxLQUFLO0FBQUUsUUFBRyxFQUFFLGFBQVcsT0FBTyxHQUFFLEtBQUssS0FBSSxFQUFFLFFBQVE7QUFBRSxXQUFPLEVBQUUsS0FBSyxFQUFFO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxNQUFNLEtBQUssRUFBQyxRQUFPLElBQUcsR0FBRSxDQUFDLEdBQUUsTUFBSSw4QkFBOEIsS0FBSyxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUksSUFBRTtBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRSxFQUFFLEVBQUUsS0FBRyxJQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsSUFBRSxPQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFBRTtBQUFDLE1BQUksS0FBRztBQUE4SCxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBQyxRQUFPLFFBQU8sVUFBUyxRQUFPLE1BQUssSUFBRyxNQUFLLFFBQU8sTUFBSyxJQUFHLE9BQU0sUUFBTyxVQUFTLE9BQU0sR0FBRSxJQUFFLEVBQUUsUUFBUSxHQUFHLE1BQUksSUFBRyxJQUFF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MEMsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLEtBQUcsVUFBUSxHQUFHLE9BQUssR0FBRyxNQUFJLEdBQUcsWUFBVSxHQUFHLE1BQUksR0FBRyxJQUFFLEdBQUcsYUFBVztBQUFPLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFVLEVBQUMsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHO0FBQUUsU0FBTyxlQUFlLElBQUcsS0FBSSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFDLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLE9BQU0sRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBRyxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxhQUFZLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQVMsRUFBQyxDQUFDO0FBQUUsU0FBTyxlQUFlLElBQUcsT0FBTSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUc7QUFBQSxFQUFHLEVBQUMsQ0FBQztBQUFFLFNBQU8sZUFBZSxJQUFHLFFBQU8sRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHO0FBQUEsRUFBSSxFQUFDLENBQUM7QUFBRSxTQUFPLGVBQWUsSUFBRyxXQUFVLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRztBQUFBLEVBQU8sRUFBQyxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdB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QWMsRUFBRSxVQUFVLEVBQUM7QUFBRSxjQUFPLEdBQUUsR0FBRyxVQUFVLEdBQUUsRUFBRSxLQUFLLFdBQVMsSUFBRSxDQUFDLE1BQUksR0FBRyxLQUFLLE1BQUssR0FBRSxDQUFDLElBQUUsQ0FBQyxNQUFJLEVBQUUsS0FBSyxRQUFRLENBQUMsTUFBSSxHQUFHLEtBQUssTUFBSyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLFdBQVcsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDO0FBQUUsYUFBTyxPQUFPLEtBQUcsV0FBUyxFQUFFLGFBQVcsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFBLElBQUMsY0FBYyxHQUFFO0FBQUMsVUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQUssYUFBTyxFQUFFLFNBQVMsQ0FBQyxHQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFBRSxlQUFRLEtBQUssRUFBRSxPQUFNO0FBQUMsWUFBSSxJQUFFLEVBQUUsTUFBTSxVQUFVLENBQUMsTUFBSSxFQUFFLFlBQVUsQ0FBQztBQUFFLFlBQUcsS0FBRyxFQUFFLEdBQUUsTUFBTSxPQUFPLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFBLElBQUMsVUFBVSxHQUFFLEdBQUU7QUFBQyxVQUFHLE9BQU8sS0FBRyxTQUFTLEtBQUUsSUFBSSxPQUFPLENBQUM7QUFBRSxhQUFPLEtBQUssUUFBUSxDQUFDLElBQUUsR0FBRTtBQUFBLElBQUk7QUFBQSxJQUFDLFdBQVcsSUFBRSxLQUFLLFFBQU8sRUFBQyxXQUFVLElBQUUsTUFBSyxTQUFRLElBQUUsT0FBTSxJQUFFLENBQUMsR0FBRTtBQUFDLFVBQUcsQ0FBQyxLQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU07QUFBWSxhQUFPLEVBQUUsSUFBSSxDQUFDLE1BQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxZQUFZLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLElB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QUFHO0FBQVEsS0FBRyxrQkFBZ0IsR0FBRztBQUFRLEtBQUcsVUFBUTtBQUFHLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFFLFNBQVE7QUFBQyxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUksSUFBRTtBQUFFLFVBQUcsS0FBSyxFQUFFLE1BQUssT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxLQUFHLEdBQUUsR0FBRyxhQUFhLENBQUMsR0FBRSxLQUFLLFFBQVEsQ0FBQyxLQUFHLEtBQUssS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFFBQUksSUFBRSxLQUFLLEtBQUs7QUFBUSxRQUFHLENBQUMsRUFBRTtBQUFPLFFBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxNQUFLLFVBQVUsQ0FBQztBQUFBLFFBQU8sVUFBUSxLQUFLLEVBQUUsTUFBSyxVQUFVLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsYUFBUSxLQUFLLEtBQUssS0FBSyxTQUFRO0FBQUMsVUFBSSxJQUFFLEtBQUssS0FBSyxRQUFRLENBQUM7QUFBRSxVQUFHLEVBQUUsTUFBSyxVQUFVLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxXQUFLLGNBQWMsQ0FBQztBQUFFO0FBQUEsSUFBTTtBQUFDLFNBQUssT0FBTyxLQUFLLGtEQUFrRDtBQUFFLGFBQVEsS0FBSyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRSxVQUFRO0FBQUUsV0FBSyxXQUFXLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFFBQUksSUFBRSxFQUFDLEdBQUcsS0FBSyxLQUFJO0FBQUUsYUFBUSxLQUFLLEdBQUcsUUFBTyxFQUFFLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxFQUFDLE1BQUs7QUFBQSxFQUFDLEdBQUUsT0FBTTtBQUFBLEVBQUMsR0FBRSxRQUFPO0FBQUEsRUFBQyxFQUFDO0FBQUUsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLE1BQUksTUFBRyxRQUFPO0FBQUcsUUFBRyxNQUFJLE9BQU8sUUFBTztBQUFRLFFBQUcsRUFBRSxPQUFLLEVBQUUsUUFBTSxFQUFFLE1BQU0sUUFBTztBQUFFLFVBQU0sTUFBTSxtREFBbUQ7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQTBCLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBSyxTQUFJLEdBQUUsR0FBRyxVQUFVLEdBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLE9BQU0sTUFBTSxXQUFXLENBQUMscUJBQXFCO0FBQUUsVUFBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsT0FBTSxNQUFNLFdBQVcsQ0FBQyxtQkFBbUI7QUFBQSxJQUFDLENBQUMsR0FBRSxDQUFDLEVBQUU7QUFBTyxRQUFHLEVBQUUsU0FBTyxFQUFHLFVBQVMsS0FBSyxjQUFhLEdBQUksT0FBTSxNQUFNLHVEQUF1RDtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFJO0FBQUUsUUFBSSxJQUFFLE1BQUksUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUssUUFBRyxLQUFHLEVBQUUsT0FBTSxNQUFNLDZDQUE2QztBQUFFLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxNQUFLLElBQUUsSUFBRSxFQUFFLE9BQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFDLE1BQUssRUFBQyxNQUFJLE1BQUksQ0FBQztBQUFFLFFBQUcsQ0FBQyxFQUFFLEtBQUUsRUFBQyxNQUFLLEdBQUUsT0FBTSxDQUFDLEVBQUMsR0FBRSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUUsUUFBRyxFQUFFLFNBQVMsQ0FBQyxJQUFFLE1BQUcsQ0FBQyxFQUFFO0FBQU8sUUFBSSxJQUFFLEVBQUMsU0FBUSxHQUFFLFlBQVcsRUFBQyxHQUFHLEdBQUUsT0FBTSxHQUFFLEdBQUcsY0FBYyxFQUFFLElBQUksR0FBRSxhQUFZLEdBQUUsR0FBRyxjQUFjLEVBQUUsVUFBVSxFQUFDLEVBQUM7QUFBRSxRQUFHLEVBQUUsT0FBTyxJQUFHLEtBQUssTUFBSyxHQUFFLEdBQUUsRUFBRSxNQUFNO0FBQUEsUUFBTyxHQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUUsTUFBRSxJQUFJLENBQUMsSUFBRSxJQUFHLElBQUUsRUFBRSxnQkFBYyxRQUFNLE1BQUksVUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFJLEtBQUssV0FBVyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBTSxVQUFVLENBQUMsTUFBSSxFQUFFLFlBQVUsQ0FBQztBQUFFLFFBQUcsS0FBRyxFQUFFLEdBQUUsTUFBTSxPQUFPLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBTyxHQUFFLE1BQU0sS0FBSyxDQUFDLEdBQUUsS0FBSyxPQUFPLEtBQUssUUFBUSxDQUFDLGlCQUFpQjtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUcsRUFBQyxZQUFXLEVBQUMsSUFBRTtBQUFFLFFBQUcsTUFBSSxPQUFPO0FBQU8sUUFBRyxFQUFFLFNBQU8sS0FBSyxLQUFLLE1BQU0sS0FBRSxHQUFHLENBQUM7QUFBRSxNQUFFLGlCQUFlLEtBQUssUUFBUSxHQUFFLElBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLEVBQUMsTUFBSyxpRkFBZ0Y7QUFBRSxXQUFTLEdBQUcsR0FBRTtBQUFDLFdBQU0sRUFBQyxPQUFNLENBQUMsR0FBRSxFQUFFLEVBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxFQUFDLFNBQVEsTUFBSyxPQUFNO0FBQUMsVUFBTSxNQUFNLHNEQUFzRDtBQUFBLEVBQUMsRUFBQztBQUFFLEtBQUcsVUFBUTtBQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLFVBQVEsR0FBRyxjQUFZO0FBQU8sTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxRQUFPLFlBQVcsVUFBUyxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLFFBQU8sR0FBRSxJQUFHLEVBQUMsSUFBRSxHQUFFLEVBQUMsUUFBTyxHQUFFLFdBQVUsR0FBRSxjQUFhLEdBQUUsTUFBSyxHQUFFLE1BQUssRUFBQyxJQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLFNBQUksTUFBSSxPQUFLLE1BQUksU0FBTyxNQUFJLEVBQUUsT0FBTyxRQUFPLEVBQUU7QUFBRSxRQUFJLElBQUUsR0FBRyxXQUFXLEtBQUssR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLFFBQUcsTUFBSSxPQUFPLE9BQU0sSUFBSSxHQUFHLFFBQVEsRUFBRSxLQUFLLGFBQVksR0FBRSxDQUFDO0FBQUUsUUFBRyxhQUFhLEdBQUcsVUFBVSxRQUFPLEVBQUUsQ0FBQztBQUFFLFdBQU8sRUFBRSxDQUFDO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBRyxNQUFJLEVBQUUsUUFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsTUFBTTtBQUFFLFVBQUksSUFBRSxFQUFFLFdBQVcsUUFBTyxFQUFDLEtBQUksRUFBQyxDQUFDO0FBQUUsYUFBTyxHQUFHLEdBQUUsR0FBRyxJQUFJLENBQUMsYUFBWSxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxhQUFTLEVBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsV0FBVyxVQUFTLEVBQUUsS0FBSyxXQUFTLE9BQUcsRUFBQyxLQUFJLEdBQUUsT0FBTSxHQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUMsSUFBRSxFQUFDLEtBQUksRUFBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEtBQUssT0FBTyxHQUFFLElBQUUsRUFBRSxVQUFVLEVBQUMsUUFBTyxHQUFFLFdBQVUsQ0FBQyxHQUFFLFlBQVcsR0FBRyxLQUFJLGNBQWEsR0FBRSxlQUFjLEVBQUMsR0FBRSxDQUFDO0FBQUUsUUFBRSxlQUFlLENBQUMsR0FBRSxFQUFFLEdBQUcsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDLEVBQUM7QUFBRSxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksRUFBQyxJQUFFO0FBQUUsV0FBTyxFQUFFLFdBQVMsRUFBRSxXQUFXLFlBQVcsRUFBQyxLQUFJLEVBQUUsU0FBUSxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUUsV0FBVyxXQUFVLEVBQUMsS0FBSSxFQUFDLENBQUMsQ0FBQztBQUFBLEVBQVc7QUFBQyxLQUFHLGNBQVk7QUFBRyxXQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxLQUFJLEdBQUUsSUFBRyxFQUFDLElBQUUsR0FBRSxFQUFDLFdBQVUsR0FBRSxXQUFVLEdBQUUsTUFBSyxFQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsY0FBWSxHQUFHLFFBQVEsT0FBSyxHQUFHO0FBQUksUUFBRyxFQUFFLEdBQUU7QUFBQSxRQUFPLEdBQUU7QUFBRSxhQUFTLElBQUc7QUFBQyxVQUFHLENBQUMsRUFB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LEVBQUUsU0FBTyxLQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSSxNQUFJLFlBQVUsTUFBSSxPQUFPO0FBQUEsSUFBQztBQUFDLGFBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxLQUFLLE1BQU0sR0FBRSxLQUFHLEdBQUUsR0FBRyxnQkFBZ0IsR0FBRSxHQUFFLEVBQUUsS0FBSyxlQUFjLEdBQUcsU0FBUyxLQUFLLEdBQUUsSUFBRSxFQUFFLE1BQU0sV0FBVSxHQUFHLEtBQUs7QUFBRSxRQUFFLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTSxNQUFJO0FBQUMsWUFBRyxFQUFFLElBQUksR0FBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFFLEVBQUUsR0FBRyxHQUFFLEdBQUcsV0FBVyxHQUFFLEVBQUUsU0FBTyxFQUFFLEdBQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTO0FBQUUsVUFBRSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBZ0IsTUFBSTtBQUFDLFlBQUUsT0FBTyxHQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBRSxFQUFFLE1BQU07QUFBQSxRQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsVUFBSSxLQUFHLEdBQUUsR0FBRyxTQUFTLEdBQUUsR0FBRyxPQUFPLEdBQUUsSUFBRSxFQUFFLEtBQUssT0FBTztBQUFFLFFBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFNLE1BQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTSxNQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBSyxNQUFJO0FBQUMsVUFBRSxNQUFNLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxFQUFDO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsNkJBQTRCLFFBQU8sQ0FBQyxFQUFDLFlBQVcsRUFBQyxNQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBRyxHQUFFLEtBQUcsRUFBQyxTQUFRLFNBQVEsT0FBTSxNQUFHLE9BQU0sSUFBRyxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxHQUFFLE1BQUssR0FBRSxPQUFNLEdBQUUsWUFBVyxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsUUFBRyxLQUFHLEtBQUcsT0FBTyxLQUFHLFNBQVMsR0FBRSxVQUFVLEdBQUcsTUFBTSxHQUFFLEdBQUcsU0FBUyxHQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztBQUFBLFFBQU8sR0FBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQUEsRUFBQyxFQUFDO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsOENBQTZDLFFBQU8sQ0FBQyxFQUFDLFlBQVcsRUFBQyxNQUFJLEdBQUcsb0JB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QUUsRUFBRSxlQUFlLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDLEVBQUM7QUFBRSxLQUFHLFVBQVE7QUFBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsQ0FBQyxPQUFLO0FBQUMsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxDQUFDLEVBQUMsUUFBTyxFQUFDLE1BQUksR0FBRyxrQkFBa0IsRUFBRSxRQUFRLFlBQVcsUUFBTyxDQUFDLEVBQUMsUUFBTyxFQUFDLE1BQUksR0FBRyxxQkFBcUIsRUFBRSxRQUFRLElBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxNQUFLLFlBQVcsQ0FBQyxVQUFTLFNBQVMsR0FBRSxhQUFZLE1BQUcsT0FBTSxJQUFHLEtBQUssR0FBRTtBQUFDLFFBQUcsRUFBQyxLQUFJLEdBQUUsY0FBYSxHQUFFLElBQUcsRUFBQyxJQUFFO0FBQUUsUUFBRyxFQUFFLFNBQU8sVUFBUSxFQUFFLFNBQU8sT0FBTyxFQUFDLEdBQUUsR0FBRyxpQkFBaUIsR0FBRSwyQ0FBMkM7QUFBRSxRQUFJLElBQUUsR0FBRyxHQUFFLE1BQU0sR0FBRSxJQUFFLEdBQUcsR0FBRSxNQUFNO0FBQUUsUUFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFO0FBQU8sUUFBSSxJQUFFLEVBQUUsSUFBSSxTQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFRO0FBQUUsUUFBRyxFQUFFLEdBQUUsRUFBRSxNQUFNLEdBQUUsS0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsSUFBSSxVQUFVO0FBQUUsUUFBRSxVQUFVLEVBQUMsVUFBUyxFQUFDLENBQUMsR0FBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsUUFBTyxDQUFDLENBQUM7QUFBQSxJQUFDLFdBQVMsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFBLFFBQU8sR0FBRSxJQUFJLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLE1BQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLElBQUUsQ0FBQztBQUFFLGFBQVMsSUFBRztBQUFDLFVBQUksSUFBRSxFQUFFLFVBQVUsRUFBQyxTQUFRLE1BQUssZUFBYyxNQUFHLGNBQWEsT0FBRyxXQUFVLE1BQUUsR0FBRSxDQUFDO0FBQUUsUUFBRSxlQUFlLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGFBQU0sTUFBSTtBQUFDLFlBQUksSUFBRSxFQUFFLFVBQVUsRUFBQyxTQUFRLEVBQUMsR0FBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLE9BQU8sR0FBRSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQUEsWUFBTyxHQUFFLFVBQVUsRUFBQyxVQUFTLEVBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxFQUFDO0FBQUUsV0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE9BQU8sQ0FBQztBQUFFLFdBQU8sTUFBSSxVQUFRLEVBQUUsR0FBRSxHQUFHLG1CQUFtQixHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsT0FBSztBQUFDLFNBQU8sZUFBZSxJQUFHLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFDLFNBQVEsQ0FBQyxRQUFPLE1BQU0sR0FBRSxZQUFXLENBQUMsVUFBUyxTQUFTLEdBQUUsS0FBSyxFQUFDLFNBQVEsR0FBRSxjQUFhLEdBQUUsSUFBRyxFQUFDLEdBQUU7QUFBQyxRQUFHLEVBQUUsT0FBSyxPQUFPLEVBQUMsR0FBRSxHQUFHLGlCQUFpQixHQUFFLElBQUksQ0FBQywyQkFBMkI7QUFBQSxFQUFDLEVBQUM7QUFBRSxLQUFHLFVBQVE7QUFBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsQ0FBQyxPQUFLO0FBQUMsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFTLEdBQUcsSUFBRSxPQUFHO0FBQUMsUUFBSSxJQUFFLENBQUMsR0FBRyxTQUFRLEdBQUcsU0FBUSxHQUFHLFNBQVEsR0FBRyxTQUFRLEdBQUcsU0FBUSxHQUFHLFNBQVEsR0FBRyxTQUFRLEdBQUcsU0FBUSxHQUFHLFNBQVEsR0FBRyxTQUFRLEdBQUcsT0FBTztBQUFFLFFBQUcsRUFBRSxHQUFFLEtBQUssR0FBRyxTQUFRLEdBQUcsT0FBTztBQUFBLFFBQU8sR0FBRSxLQUFLLEdBQUcsU0FBUSxHQUFHLE9BQU87QUFBRSxXQUFPLEVBQUUsS0FBSyxHQUFHLE9BQU8sR0FBRTtBQUFBLEVBQUM7QUFBQyxLQUFHLFVBQVE7QUFBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsQ0FBQyxPQUFLO0FBQUMsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxDQUFDLEVBQUMsWUFBVyxFQUFDLE1BQUksR0FBRyx5QkFBeUIsQ0FBQyxLQUFJLFFBQU8sQ0FBQyxFQUFDLFlBQVcsRUFBQyxNQUFJLEdBQUcsYUFBYSxDQUFDLElBQUcsR0FBRSxLQUFHLEVBQUMsU0FBUSxVQUFT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QUFNLHlDQUF5QztBQUFFLFFBQUcsQ0FBQyxFQUFFLE9BQU0sTUFBTSx1Q0FBdUM7QUFBRSxRQUFJLElBQUUsRUFBRSxJQUFJLFNBQVEsS0FBRSxHQUFFLElBQUUsRUFBRSxNQUFNLE9BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsRUFBRTtBQUFFLE1BQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZSxNQUFJLEVBQUUsR0FBRSxNQUFJLEVBQUUsTUFBTSxPQUFHLEVBQUMsWUFBVyxHQUFHLFdBQVcsS0FBSSxLQUFJLEdBQUUsU0FBUSxFQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBSSxJQUFFLEVBQUU7QUFBRSxRQUFFLEdBQUcsS0FBRTtBQUFFLGVBQVEsS0FBSyxFQUFFLEdBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFFLEVBQUUsT0FBTyxHQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUFFLFFBQUUsS0FBSyxHQUFFLEVBQUUsTUFBTSxPQUFHLEVBQUMsWUFBVyxHQUFHLFdBQVcsU0FBUSxLQUFJLEdBQUUsU0FBUSxFQUFDLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxLQUFLLE9BQU8sR0FBRSxJQUFFLEVBQUUsVUFBVSxFQUFDLFNBQVEsU0FBUSxZQUFXLEVBQUMsR0FBRSxDQUFDO0FBQUUsYUFBTyxFQUFFLGVBQWUsR0FBRSxHQUFHLElBQUksR0FBRTtBQUFBLElBQUM7QUFBQyxhQUFTLElBQUc7QUFBQyxVQUFJO0FBQUUsVUFBSSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRyxlQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsWUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLGFBQUksTUFBSSxRQUFNLE1BQUksU0FBTyxT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U0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLEdBQUcsS0FBSyxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsUUFBTTtBQUFHLFVBQUksSUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxNQUFJLE1BQUksS0FBRyxHQUFFLElBQUUsRUFBRSxFQUFFLENBQUMsS0FBRyxJQUFHLElBQUUsRUFBRSxFQUFFLENBQUMsS0FBRztBQUFHLFVBQUcsSUFBRSxNQUFJLElBQUUsTUFBSSxLQUFHLENBQUMsRUFBRSxRQUFNO0FBQUcsVUFBRyxLQUFHLE1BQUksS0FBRyxNQUFJLElBQUUsR0FBRyxRQUFNO0FBQUcsVUFBSSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUU7QUFBRyxjQUFPLE1BQUksTUFBSSxNQUFJLFFBQU0sTUFBSSxNQUFJLE1BQUksT0FBSyxJQUFFO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUksS0FBRSxvQkFBSSxLQUFLLGdCQUFjLENBQUMsR0FBRSxRQUFRLEdBQUUsS0FBRSxvQkFBSSxLQUFLLGdCQUFjLENBQUMsR0FBRSxRQUFRO0FBQUUsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFdBQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUksSUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFFLElBQUUsR0FBRyxLQUFLLENBQUM7QUFBRSxRQUFHLEVBQUUsS0FBRyxHQUFHO0FBQU8sUUFBRyxJQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBRSxRQUFHLElBQUUsRUFBRSxRQUFNO0FBQUcsV0FBTztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUc7QUFBUSxXQUFTLEdBQUcsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxXQUFPLFNBQVMsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU0sRUFBRTtBQUFFLGFBQU8sRUFBRSxXQUFTLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBRyxHQUFHO0FBQU8sUUFBSSxJQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsUUFBUSxHQUFFLElBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxRQUFRO0FBQUUsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFdBQU8sSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUcsR0FBRztBQUFPLFFBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsUUFBRyxNQUFJLE9BQU87QUFBTyxXQUFPLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLFFBQU8sS0FBRztBQUErbkMsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUcsR0FBRyxLQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQXFFLFdBQVMsR0FBRyxHQUFFO0FBQUMsV0FBTyxHQUFHLFlBQVUsR0FBRSxHQUFHLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsYUFBWSxLQUFHO0FBQVcsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLE9BQU8sVUFBVSxDQUFDLEtBQUcsS0FBRyxNQUFJLEtBQUc7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHLEdBQUU7QUFBQyxXQUFPLE9BQU8sVUFBVSxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQU07QUFBQSxFQUFFO0FBQUMsTUFBSSxLQUFHO0FBQVcsV0FBUyxHQUFHLEdBQUU7QUFBQyxRQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsUUFBTTtBQUFHLFFBQUc7QUFBQyxhQUFPLElBQUksT0FBTyxDQUFDLEdBQUU7QUFBQSxJQUFFLFNBQU8sR0FBRTtBQUFDLGFBQU07QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBRSxDQUFDLE9BQUs7QUFBQyxTQUFPLGVBQWUsSUFBRyxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxLQUFHLHdCQUFzQjtBQUFPLE1BQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFdBQVUsS0FBRyxFQUFDLGVBQWMsRUFBQyxPQUFNLE1BQUssSUFBRyxHQUFHLEtBQUksTUFBSyxHQUFHLEdBQUUsR0FBRSxlQUFjLEVBQUMsT0FBTSxNQUFLLElBQUcsR0FBRyxLQUFJLE1BQUssR0FBRyxHQUFFLEdBQUUsd0JBQXVCLEVBQUMsT0FBTSxLQUFJLElBQUcsR0FBRyxJQUFHLE1BQUssR0FBRyxJQUFHLEdBQUUsd0JBQXVCLEVBQUMsT0FBTSxLQUFJLElBQUcsR0FBRyxJQUFHLE1BQUssR0FBRyxJQUFHLEVBQUMsR0FBRSxLQUFHLEVBQUMsU0FBUSxDQUFDLEVBQUMsU0FBUSxHQUFFLFlBQVcsRUFBQyxNQUFJLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUcsUUFBTyxDQUFDLEVBQUMsU0FBUSxHQUFFLFlBQVcsRUFBQyxNQUFJLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLElBQUc7QUFBRSxLQUFHLHdCQUFzQixFQUFDLFNBQVEsT0FBTyxLQUFLLEVBQUUsR0FBRSxNQUFLLFVBQVMsWUFBVyxVQUFTLE9BQU0sTUFBRyxPQUFNLElBQUcsS0FBSyxHQUFFO0FBQUMsUUFBRyxFQUFDLEtBQUksR0FBRSxNQUFLLEdBQUUsWUFBVyxHQUFFLFNBQVEsR0FBRSxJQUFHLEVBQUMsSUFBRSxHQUFFLEVBQUMsTUFBSyxHQUFFLE1BQUssRUFBQyxJQUFFO0FBQUUsUUFBRyxDQUFDLEVBQUUsZ0JBQWdCO0FBQU8sUUFBSSxJQUFFLElBQUksR0FBRyxXQUFXLEdBQUUsRUFBRSxNQUFNLElBQUksT0FBTyxZQUFXLFFBQVE7QUFBRSxRQUFHLEVBQUUsTUFBTSxHQUFFO0FBQUEsUUFBTyxHQUFFO0FBQUUsYUFBUyxJQUFHO0FBQUMsVUFBSSxJQUFFLEVBQUUsV0FBVyxXQUFVLEVBQUMsS0FBSSxFQUFFLFNBQVEsTUFBSyxFQUFFLEtBQUssUUFBTyxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU0sT0FBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0FBQUUsUUFBRSxXQUFXLEdBQUUsR0FBRyxJQUFJLEdBQUcsV0FBVyxDQUFDLGdCQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFxQixHQUFHLFdBQVcsQ0FBQywwQkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxhQUFTLElBQUc7QUFBQyxVQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxRQUFRLENBQUM7QUFBRSxVQUFHLENBQUMsS0FBRyxNQUFJLEtBQUc7QUFBTyxVQUFHLE9BQU8sS0FBRyxZQUFVLGFBQWEsVUFBUSxPQUFPLEVBQUUsV0FBUyxXQUFXLE9BQU0sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHNDQUFzQztBQUFFLFVBQUksSUFBRSxFQUFFLFdBQVcsV0FBVSxFQUFDLEtBQUksR0FBRSxLQUFJLEdBQUUsTUFBSyxFQUFFLEtBQUssVUFBUSxHQUFHLElBQUksRUFBRSxLQUFLLE9BQU8sSUFBSSxHQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsS0FBRyxPQUFNLENBQUM7QUFBRSxRQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUU7QUFBQyxhQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJO0FBQUEsSUFBSTtBQUFBLEVBQUMsR0FBRSxjQUFhLENBQUMsUUFBUSxFQUFDO0FBQUUsTUFBSSxLQUFHLENBQUMsTUFBSTtBQUFDLFdBQU8sRUFBRSxXQUFXLEdBQUcscUJBQXFCLEdBQUU7QUFBQSxFQUFDO0FBQUUsS0FBRyxVQUFRO0FBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsU0FBTyxlQUFlLElBQUcsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsTUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLElBQUksR0FBRyxLQUFLLGFBQWEsR0FBRSxLQUFHLElBQUksR0FBRyxLQUFLLGFBQWEsR0FBRSxLQUFHLENBQUMsR0FBRSxJQUFFLEVBQUMsVUFBUyxLQUFFLE1BQUk7QUFBQyxRQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLGFBQVksRUFBRSxHQUFFO0FBQUUsUUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFLEVBQUUsU0FBTyxTQUFPLENBQUMsR0FBRyxhQUFZLEVBQUUsSUFBRSxDQUFDLEdBQUcsYUFBWSxFQUFFLEdBQUUsSUFBRSxFQUFFLFdBQVMsR0FBRztBQUFZLFFBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLFNBQVMsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUUsS0FBRyxNQUFJLENBQUMsR0FBRSxJQUFFLFdBQVM7QUFBQyxRQUFJLEtBQUcsTUFBSSxTQUFPLEdBQUcsY0FBWSxHQUFHLGFBQWEs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RztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUssSUFBSSxDQUFDLEtBQUcsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUFFLFNBQU8sS0FBSyxRQUFNLElBQUUsSUFBRSxHQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBUCxJQUFtQyxLQUFHLE9BQU87QUFBN0MsSUFBdUQsS0FBRyxHQUFHO0FBQWUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBSztBQUFTLE1BQUcsSUFBRztBQUFDLFFBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxXQUFPLE1BQUksS0FBRyxTQUFPO0FBQUEsRUFBQztBQUFDLFNBQU8sR0FBRyxLQUFLLEdBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFO0FBQU07QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsT0FBTztBQUFkLElBQXdCLEtBQUcsR0FBRztBQUFlLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUs7QUFBUyxTQUFPLEtBQUcsRUFBRSxDQUFDLE1BQUksU0FBTyxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBNEIsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLO0FBQVMsU0FBTyxLQUFLLFFBQU0sS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLEdBQUUsRUFBRSxDQUFDLElBQUUsTUFBSSxNQUFJLFNBQU8sS0FBRyxHQUFFO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFBRSxJQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxVQUFVLFFBQU07QUFBRyxHQUFHLFVBQVUsU0FBTztBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLElBQUksS0FBRztBQUFHLFNBQVMsS0FBSTtBQUFDLE9BQUssV0FBUyxDQUFDLEdBQUUsS0FBSyxPQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUk7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRTtBQUFPLFNBQU0sSUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxRQUFPO0FBQUUsU0FBTTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHLE1BQU07QUFBYixJQUF1QixLQUFHLEdBQUc7QUFBTyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUcsSUFBRSxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsRUFBRSxTQUFPO0FBQUUsTUFBRyxLQUFHLEVBQUUsR0FBRSxJQUFJO0FBQUEsTUFBTyxJQUFHLEtBQUssR0FBRSxHQUFFLENBQUM7QUFBRSxTQUFNLEVBQUUsS0FBSyxNQUFLO0FBQUU7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sSUFBRSxJQUFFLFNBQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsS0FBSyxVQUFTLENBQUMsSUFBRTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUcsSUFBRSxFQUFFLEdBQUUsS0FBSyxNQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBTyxHQUFFLENBQUMsRUFBRSxDQUFDLElBQUU7QUFBRSxTQUFPO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFBRSxJQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxVQUFVLFFBQU07QUFBRyxHQUFHLFVBQVUsU0FBTztBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLElBQUksS0FBRztBQUFHLElBQUksS0FBRyxHQUFHLElBQUcsS0FBSztBQUFsQixJQUFvQixLQUFHO0FBQUcsU0FBUyxLQUFJO0FBQUMsT0FBSyxPQUFLLEdBQUUsS0FBSyxXQUFTLEVBQUMsTUFBSyxJQUFJLE1BQUcsS0FBSSxLQUFJLE1BQUksT0FBSSxRQUFPLElBQUksS0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTztBQUFFLFNBQU8sS0FBRyxZQUFVLEtBQUcsWUFBVSxLQUFHLFlBQVUsS0FBRyxZQUFVLE1BQUksY0FBWSxNQUFJO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUU7QUFBUyxTQUFPLEdBQUcsQ0FBQyxJQUFFLEVBQUUsT0FBTyxLQUFHLFdBQVMsV0FBUyxNQUFNLElBQUUsRUFBRTtBQUFHO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxNQUFLLENBQUMsRUFBRSxPQUFPLENBQUM7QUFBRSxTQUFPLEtBQUssUUFBTSxJQUFFLElBQUUsR0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsTUFBSyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxNQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxNQUFLLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBSyxTQUFPLEVBQUUsSUFBSSxHQUFFLENBQUMsR0FBRSxLQUFLLFFBQU0sRUFBRSxRQUFNLElBQUUsSUFBRSxHQUFFO0FBQUk7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsS0FBRyxPQUFLLElBQUUsRUFBRTtBQUFPLE9BQUssTUFBTTtBQUFFLFNBQU0sRUFBRSxJQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxVQUFVLFFBQU07QUFBRyxHQUFHLFVBQVUsU0FBTztBQUFHLEdBQUcsVUFBVSxNQUFJO0FBQUcsR0FBRyxVQUFVLE1BQUk7QUFBRyxHQUFHLFVBQVUsTUFBSTtBQUFHLElBQUksS0FBRztBQUFHLElBQUksS0FBRztBQUFzQixTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxPQUFPLEtBQUcsY0FBWSxLQUFHLFFBQU0sT0FBTyxLQUFHLFdBQVcsT0FBTSxVQUFVLEVBQUU7QUFBRSxNQUFJLElBQUUsV0FBVTtBQUFDLFFBQUksSUFBRSxXQUFVLElBQUUsSUFBRSxFQUFF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LEVBQUUsU0FBUyxPQUFPLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQyxNQUFHO0FBQUMsUUFBSSxJQUFFLE1BQU0sRUFBRSxTQUFTLEtBQUssR0FBRSxHQUFHO0FBQUUsUUFBRztBQUFDLFlBQU0sRUFBRSxLQUFLO0FBQUEsSUFBQyxVQUFDO0FBQVEsWUFBTSxFQUFFLE1BQU07QUFBQSxJQUFDO0FBQUEsRUFBQyxRQUFNO0FBQUEsRUFBQztBQUFDO0FBQUMsZUFBZSxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRSxLQUFLLFFBQU07QUFBRyxNQUFJLElBQUUsRUFBRSxLQUFLLFVBQVUsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFO0FBQUUsYUFBTztBQUFDLFFBQUcsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLElBQUUsTUFBTSxFQUFFLEtBQUs7QUFBRSxRQUFHLEVBQUU7QUFBTSxRQUFHLElBQUUsRUFBRSxTQUFPLElBQUc7QUFBQyxVQUFJLElBQUUsS0FBRztBQUFFLFVBQUcsSUFBRSxFQUFFLEdBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRSxDQUFDLENBQUM7QUFBRSxZQUFNLEVBQUUsT0FBTztBQUFFO0FBQUEsSUFBSztBQUFDLE1BQUUsS0FBSyxDQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUEsRUFBTTtBQUFDLE1BQUk7QUFBRSxNQUFHLEVBQUUsV0FBUyxFQUFFLEtBQUUsRUFBRSxDQUFDO0FBQUEsT0FBTTtBQUFDLFFBQUUsSUFBSSxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSSxJQUFFLEVBQUUsUUFBTyxDQUFDLENBQUM7QUFBRSxRQUFJLElBQUU7QUFBRSxhQUFRLEtBQUssRUFBRSxHQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUEsRUFBTTtBQUFDLFNBQU8sSUFBSSxZQUFZLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUUsSUFB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QyxLQUFJLEdBQUUsT0FBTSxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksT0FBTSxJQUFHO0FBQW5ELElBQXFELEtBQUcsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLE1BQUcsQ0FBQyxFQUFFO0FBQU8sTUFBRyxHQUFHLElBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxLQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxDQUFDLENBQUMscUJBQXFCLEtBQUssVUFBVSxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtBQUFFO0FBQU07QUFBRSxTQUFTLEtBQUk7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBQSxNQUFRLFFBQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxPQUFNLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxPQUFNLEdBQUU7QUFBekMsSUFBMkMsS0FBRyxvQkFBSTtBQUFRLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsWUFBVTtBQUFNLE1BQUcsQ0FBQyxFQUFFLFFBQU87QUFBRyxNQUFJLElBQUUsR0FBRyxJQUFJLENBQUM7QUFBRSxNQUFHLEtBQUcsRUFBRSxDQUFDLE1BQUksRUFBRSxRQUFPLEVBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFDLE9BQU0sR0FBRyxTQUFRLEdBQUUsQ0FBQyxHQUFFLE1BQUssR0FBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLE1BQUssR0FBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRyxTQUFRLEdBQUUsQ0FBQyxFQUFDO0FBQUUsU0FBTyxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLE1BQUk7QUFBQyxNQUFHLEVBQUUsUUFBUSxH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TztBQUFHLElBQU0sS0FBTixNQUFRO0FBQUEsRUFBQyxjQUFhO0FBQUMsT0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxFQUFFLE1BQUssSUFBRyxJQUFJLGNBQVcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLE1BQUssR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFFBQUcsS0FBRyxLQUFLLFFBQU0sQ0FBQztBQUFFLFFBQUksSUFBRSxhQUFhLGNBQVksSUFBSSxXQUFXLENBQUMsSUFBRSxPQUFPLE1BQUksV0FBUyxHQUFHLENBQUMsSUFBRTtBQUFFLE1BQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRztBQUFFLFFBQUksSUFBRSxDQUFDLEdBQUU7QUFBRSxZQUFPLElBQUUsR0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDLE1BQUksTUFBSztBQUFDLFVBQUcsRUFBRSxZQUFVLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxNQUFLO0FBQUMsVUFBRSxNQUFLLElBQUcsRUFBRSxPQUFNLEdBQUc7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxTQUFPLEVBQUUsVUFBUSxFQUFFLE1BQUssSUFBRyxHQUFHLElBQUUsS0FBRyxFQUFFLFdBQVU7QUFBQyxVQUFFLEtBQUssR0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsSUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxNQUFLLEdBQUc7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFJLElBQUUsRUFB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QVEsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU07QUFBRSxlQUFRLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTTtBQUFBLElBQUM7QUFBQyxvQkFBZSxJQUFHO0FBQUMsVUFBRyxFQUFFLE9BQU0sSUFBSSxFQUFFLDBFQUEwRTtBQUFFLFVBQUU7QUFBRyxVQUFJLElBQUU7QUFBRyxVQUFHO0FBQUMsdUJBQWMsS0FBSyxFQUFFLEdBQUU7QUFBQyxjQUFHLEVBQUU7QUFBUyxjQUFHLEVBQUUsT0FBTSxLQUFLLE1BQU0sQ0FBQztBQUFBLFFBQUM7QUFBQyxZQUFFO0FBQUEsTUFBRSxTQUFPLEdBQUU7QUFBQyxZQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQU8sY0FBTTtBQUFBLE1BQUMsVUFBQztBQUFRLFlBQUcsQ0FBQyxFQUFFLEdBQUUsTUFBTTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxJQUFJLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxFQUFFLEtBQUcsb0JBQUksV0FBUSxPQUFPLGNBQWMsSUFBRztBQUFDLFdBQU8sS0FBSyxTQUFTO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBSztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFLLFNBQVMsR0FBRSxJQUFFLENBQUMsTUFBSTtBQUFDLGFBQU0sRUFBQyxNQUFLLE1BQUk7QUFBQyxZQUFHLEVBQUUsV0FBUyxHQUFFO0FBQUMsY0FBSSxJQUFFLEVBQUUsS0FBSztBQUFFLFlBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTyxFQUFFLE1BQU07QUFBQSxNQUFDLEVBQUM7QUFBQSxJQUFDO0FBQUUsV0FBTSxDQUFDLElBQUksSUFBRyxNQUFJLEVBQUUsQ0FBQyxHQUFFLEtBQUssWUFBVyxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxJQUFJLElBQUcsTUFBSSxFQUFFLENBQUMsR0FBRSxLQUFLLFlBQVcsRUFBRSxNQUFLLElB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RSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxJQUFJLEtBQUssR0FBRSxLQUFHLGdCQUFlLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTyxNQUFJLFlBQVUsTUFBSSxTQUFRLFVBQVMsS0FBSSxFQUFFLFFBQU0sT0FBTyxFQUFFLElBQUksS0FBSSxTQUFRLEtBQUksRUFBRSxPQUFLLE9BQU8sRUFBRSxHQUFHLEtBQUksY0FBYSxLQUFJLEVBQUUsWUFBVSxPQUFPLEVBQUUsUUFBUSxLQUFJLFVBQVMsS0FBSSxFQUFFLFFBQU0sT0FBTyxFQUFFLElBQUksTUFBSTtBQUFHLFNBQU8sSUFBRSxFQUFFLE1BQU0sT0FBTyxFQUFFLElBQUksS0FBRyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxNQUFJLEtBQUcsUUFBTSxPQUFPLE1BQUksWUFBVSxPQUFPLEVBQUUsT0FBTyxhQUFhLE1BQUk7QUFBVyxJQUFJLEtBQUcsT0FBTSxHQUFFLEdBQUUsSUFBRSxTQUFLO0FBQUMsU0FBTSxFQUFDLEdBQUcsR0FBRSxNQUFLLE1BQU0sR0FBRyxFQUFFLE1BQUssR0FBRSxDQUFDLEVBQUM7QUFBQztBQUEvRCxJQUFpRSxLQUFHLG9CQUFJO0FBQVEsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTyxNQUFJLGFBQVcsSUFBRSxFQUFFLE9BQU0sSUFBRSxHQUFHLElBQUksQ0FBQztBQUFFLE1BQUcsRUFBRSxRQUFPO0FBQUUsTUFBSSxLQUFHLFlBQVM7QUFBQyxRQUFHO0FBQUMsVUFBSSxJQUFFLGNBQWEsSUFBRSxFQUFFLFlBQVUsTUFBTSxFQUFFLFFBQVEsR0FBRyxhQUFZLElBQUUsSUFBSTtBQUFTLFVBQUcsRUFBRSxTQUFTLE1BQUksTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFNO0FBQUcsYUFBTTtBQUFBLElBQUUsUUFBTTtBQUFDLGFBQU07QUFBQSxJQUFFO0FBQUEsRUFBQyxHQUFHO0FBQUUsU0FBTyxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRyxPQUFNLEdBQUUsR0FBRSxJQUFFLFNBQUs7QUFBQyxNQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFNLFVBQVUsbUdBQW1HO0FBQUUsTUFBSSxJQUFFLElBQUk7QUFBUyxTQUFPLE1BQU0sUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUUsQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRTtBQUFDO0FBQTVQLElBQThQLEtBQUcsQ0FBQyxNQUFJLGFBQWEsUUFBTyxVQUFTO0FBQUcsSUFBSSxLQUFHLE9BQU0sR0FBRSxHQUFFLEdBQUUsTUFBSTtBQUFDLE1BQUcsTUFBSSxPQUFPO0FBQU8sTUFBRyxLQUFHLEtBQUssT0FBTSxVQUFVLHNCQUFzQixDQUFDLDZEQUE2RDtBQUFFLE1BQUcsT0FBTyxNQUFJLFlBQVUsT0FBTyxNQUFJLFlBQVUsT0FBTyxNQUFJLFVBQVUsR0FBRSxPQUFPLEdBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsVUFBUztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQVEsSUFBSSxjQUFjO0FBQUUsUUFBRyxFQUFFLEtBQUUsRUFBQyxNQUFLLEVBQUM7QUFBRSxNQUFFLE9BQU8sR0FBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQyxXQUFTLEdBQUcsQ0FBQyxFQUFFLEdBQUUsT0FBTyxHQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFdBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRSxPQUFPLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUMsTUFBSyxFQUFFLEtBQUksQ0FBQyxDQUFDO0FBQUEsV0FBVSxNQUFNLFFBQVEsQ0FBQyxFQUFFLE9BQU0sUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLElBQUUsTUFBSyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsV0FBVSxPQUFPLE1BQUksU0FBUyxPQUFNLFFBQVEsSUFBSSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUUsQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUksR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQU8sT0FBTSxVQUFVLHdHQUF3RyxDQUFDLFVBQVU7QUFBQztBQUFFLElBQUksS0FBRyxDQUFDLE1BQUksS0FBRyxRQUFNLE9BQU8sTUFBSSxZQUFVLE9BQU8sRUFBRSxTQUFPLFlBQVUsT0FBTyxFQUFFLFNBQU8sWUFBVSxPQUFPLEVBQUUsU0FBTyxjQUFZLE9BQU8sRUFBRSxVQUFRLGNBQVksT0FBTyxFQUFFLGdCQUFjO0FBQTlLLElBQXlMLEtBQUcsQ0FBQyxNQUFJLEtBQUcsUUFBTSxPQUFPLE1BQUksWUFBVSxPQUFPLEVBQUUsU0FBTyxZQUFVLE9BQU8sRUFBRSxpQkFBZSxZQUFVLEdBQUcsQ0FBQztBQUEvUixJQUFpUyxLQUFHLENBQUMsTUFBSSxLQUFHLFFBQU0sT0FBTyxNQUFJLFlBQVUsT0FBTyxFQUFFLFFBQU0sWUFBVSxPQUFPLEVBQUUsU0FBTztBQUFXLGVBQWUsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxHQUFFLElBQUUsTUFBTSxHQUFFLE1BQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBRyxhQUFhLFFBQU0sS0FBRyxRQUFNLEtBQUcsS0FBSyxRQUFPO0FBQUUsV0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFFLEtBQUcsRUFBRSxNQUFLLEVBQUMsTUFBSyxFQUFFLE1BQUssY0FBYSxFQUFFLGNBQWEsR0FBRyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEVBQUUsS0FBSztBQUFFLFdBQU8sTUFBSSxJQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLE1BQU0sT0FBTyxFQUFFLElBQUksSUFBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksSUFBRSxNQUFNLEdBQUcsQ0FBQztBQUFFLE1BQUcsQ0FBQyxHQUFHLE1BQUs7QUFBQyxRQUFJLElBQUUsRUFBRSxLQUFLLENBQUMsTUFBSSxPQUFPLE1BQUksWUFBVyxVQUFTLEtBQUksRUFBRSxJQUFJO0FBQUUsUUFBRyxPQUFPLE1BQUksU0FBUyxLQUFFLEVBQUMsR0FBRyxHQUFFLE1BQUssRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQztBQUFDLGVBQWUsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLENBQUM7QUFBRSxNQUFHLE9BQU8sTUFBSSxZQUFVLFlBQVksT0FBTyxDQUFDLEtBQUcsYUFBYSxZQUFZLEdBQUUsS0FBSyxDQUFDO0FBQUEsV0FBVSxHQUFHLENBQUMsRUFBRSxHQUFFLEtBQUssYUFBYSxPQUFLLElBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQztBQUFBLFdBQVUsR0FBRyxDQUFDLEVBQUUsZ0JBQWMsS0FBSyxFQUFFLEdBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQSxPQUFNO0FBQUMsUUFBSSxJQUFFLEdBQUcsYUFBYTtBQUFLLFVBQU0sTUFBTSx5QkFBeUIsT0FBTyxDQUFDLEdBQUcsSUFBRSxrQkFBa0IsQ0FBQyxLQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLE1BQUksWUFBVSxNQUFJLEtBQUssUUFBTTtBQUFHLFNBQU0sYUFBYSxPQUFPLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFHO0FBQUMsSUFBTSxJQUFOLE1BQU87QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFNBQUssVUFBUTtBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxPQUFPLElBQUksOEJBQThCO0FBQUUsVUFBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUcsTUFBTSxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLFdBQU0sRUFBRSxRQUFRO0FBQUUsYUFBUSxLQUFLLEVBQUUsT0FBSyxDQUFDLEdBQUUsSUFBSTtBQUFFO0FBQUEsRUFBTTtBQUFDLE1BQUksSUFBRSxPQUFHO0FBQUUsTUFBRyxhQUFhLFFBQVEsS0FBRSxFQUFFLFFBQVE7QUFBQSxXQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUU7QUFBQSxNQUFPLEtBQUUsTUFBRyxJQUFFLE9BQU8sUUFBUSxLQUFHLENBQUMsQ0FBQztBQUFFLFdBQVEsS0FBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsT0FBTyxNQUFJLFNBQVMsT0FBTSxVQUFVLHFDQUFxQztBQUFFLFFBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRyxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUcsTUFBSSxPQUFPO0FBQVMsVUFBRyxLQUFHLENBQUMsRUFBRSxLQUFFLE1BQUcsTUFBSyxDQUFDLEdBQUUsSUFBSTtBQUFFLFlBQUssQ0FBQyxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLE1BQUksSUFBRSxJQUFJLFdBQVEsSUFBRSxvQkFBSTtBQUFJLFdBQVEsS0FBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLG9CQUFJO0FBQUksYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsWUFBWTtBQUFFLFVBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxJQUFJLENBQUM7QUFBRSxVQUFHLE1BQUksS0FBSyxHQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUEsVUFBTyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU0sRUFBQyxDQUFDLEVBQUUsR0FBRSxNQUFHLFFBQU8sR0FBRSxPQUFNLEVBQUM7QUFBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxFQUFFLFFBQVEsb0NBQW1DLGtCQUFrQjtBQUFDO0FBQUMsSUFBSSxLQUFHLE9BQU8sT0FBTyx1QkFBTyxPQUFPLElBQUksQ0FBQztBQUF4QyxJQUEwQyxLQUFHLENBQUMsSUFBRSxPQUFLLFNBQVMsTUFBSyxHQUFFO0FBQUMsTUFBRyxFQUFFLFdBQVMsRUFBRSxRQUFPLEVBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxPQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQyxRQUFHLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBRTtBQUFHLFFBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLElBQUUscUJBQW1CLEdBQUcsS0FBRyxDQUFDO0FBQUUsUUFBRyxNQUFJLEVBQUUsV0FBUyxLQUFHLFFBQU0sT0FBTyxNQUFJLFlBQVUsRUFBRSxhQUFXLE9BQU8sZUFBZSxPQUFPLGVBQWUsRUFBRSxrQkFBZ0IsRUFBRSxLQUFHLEVBQUUsR0FBRyxVQUFVLEtBQUUsSUFBRSxJQUFHLEVBQUUsS0FBSyxFQUFDLE9BQU0sRUFBRSxTQUFPLEVBQUUsUUFBTyxRQUFPLEVBQUUsUUFBTyxPQUFNLGlCQUFpQixPQUFPLFVBQVUsU0FBUyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUUsRUFBRSxDQUFDLGlDQUFnQyxDQUFDO0FBQUUsV0FBTyxJQUFFLEtBQUcsTUFBSSxFQUFFLFNBQU8sS0FBRztBQUFBLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLE1BQU0sUUFBTyxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUUsc0NBQXFDO0FBQUUsVUFBTyxJQUFFLEVBQUUsS0FBSyxDQUFDLE9BQUssS0FBSyxHQUFFLEtBQUssRUFBQyxPQUFNLEVBQUUsT0FBTSxRQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQU8sT0FBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDLCtDQUE4QyxDQUFDO0FBQUUsTUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxRQUFNLEVBQUUsS0FBSyxHQUFFLEVBQUUsU0FBTyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsSUFBSSxPQUFPLEVBQUUsUUFBTSxDQUFDLEdBQUUsSUFBRSxJQUFJLE9BQU8sRUFBRSxNQUFNO0FBQUUsYUFBTyxJQUFFLEVBQUUsUUFBTSxFQUFFLFFBQU8sSUFBRSxJQUFFO0FBQUEsSUFBQyxHQUFFLEVBQUU7QUFBRSxVQUFNLElBQUksRUFBRTtBQUFBLEVBQ3oyUixFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7QUFBQSxDQUMxQixDQUFDO0FBQUEsRUFDQSxDQUFDO0FBQUEsRUFDRCxDQUFDLEVBQUU7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBSjY4UCxJQUkzOFAsSUFBRSxHQUFHLEVBQUU7QUFBRSxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyw4QkFBNkIsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLHFCQUFxQixDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxjQUFhLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLDhCQUE2QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsT0FBTyxxQkFBcUIsQ0FBQyxjQUFhLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHFCQUFxQixDQUFDLHNCQUFxQixFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE9BQU8sK0JBQStCO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE9BQU8sTUFBSSxZQUFVLE1BQUksUUFBTSxNQUFNO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLG9CQUFJO0FBQUksTUFBRyxHQUFFO0FBQUMsYUFBUSxLQUFLLEVBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxFQUFFLFVBQVEsS0FBSyxHQUFFO0FBQUMsUUFBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBRSxRQUFHLE1BQU0sUUFBUSxFQUFFLE9BQU8sR0FBRTtBQUFDLGVBQVEsS0FBSyxFQUFFLFFBQVEsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLElBQUksRUFBRSxFQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU8sTUFBTSxLQUFLLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU0sQ0FBQztBQUFFLFNBQU0sRUFBQyxzQkFBcUIsRUFBRSxLQUFLLElBQUksRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU0sRUFBQyxzQkFBcUIsRUFBRSxFQUFFLEVBQUM7QUFBRSxTQUFNLENBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsdUJBQXNCLElBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxPQUFPLGNBQWMsQ0FBQyxjQUFhLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxzQkFBcUIsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLHNCQUFzQixFQUFFLFNBQVMsR0FBRSxRQUFPLHFCQUFvQixHQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUUsa0JBQWlCLEtBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGlCQUFpQixHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUMsY0FBYSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyx1QkFBc0IsR0FBRyxFQUFDLE1BQUssR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxHQUFFLEtBQUssT0FBTyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksZUFBZSxDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUcsU0FBUyxLQUFHLE9BQUssRUFBQyxrQkFBaUIsR0FBRyxTQUFTLEVBQUMsSUFBRSxPQUFNLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLHdCQUF1QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBRyxTQUFTLEtBQUcsT0FBSyxFQUFDLGtCQUFpQixHQUFHLFNBQVMsRUFBQyxJQUFFLE9BQU0sR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSywrQkFBOEIsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLHNCQUFzQixDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDBCQUEwQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFO0FBQUUsV0FBTyxLQUFLLFFBQVEsS0FBSyxzQkFBc0IsQ0FBQyxjQUFhLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLCtCQUE4QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsb0JBQW9CLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHNCQUFzQixDQUFDLDZCQUE0QixFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLGVBQWUsQ0FBQyx1QkFBc0IsSUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsVUFBTSxHQUFHLFNBQVM7QUFBRSxTQUFLLFdBQVMsSUFBSSxHQUFHLEtBQUssT0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssd0JBQXVCLEVBQUMsTUFBSyxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksZUFBZSxDQUFDLGNBQWEsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssZUFBZSxDQUFDLGNBQWEsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsd0JBQXVCLElBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLGVBQWUsQ0FBQyxzQkFBcUIsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsV0FBUztBQUFHLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE1BQUssR0FBRSxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHNCQUFzQixDQUFDLHVCQUFzQixFQUFDLE9BQU0sRUFBQyxNQUFLLEVBQUMsR0FBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLGlCQUFnQixHQUFFLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksc0JBQXNCLENBQUMsYUFBYSxDQUFDLGNBQWEsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLGlCQUFnQixHQUFFLE1BQUssR0FBRSxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxjQUFhLEVBQUMsT0FBTSxFQUFDLE1BQUssRUFBQyxHQUFFLE1BQUssR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLHNCQUFzQixDQUFDLHVCQUFzQixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxpQkFBZ0IsR0FBRSx5QkFBd0IsR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLE9BQU8sc0JBQXNCLENBQUMsYUFBYSxDQUFDLGNBQWEsRUFBQyxPQUFNLEVBQUMseUJBQXdCLEVBQUMsR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLGlCQUFnQixHQUFFLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsY0FBYSxFQUFDLE9BQU0sR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLHNCQUFzQixDQUFDLDhCQUE2QixJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxpQkFBZ0IsR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssc0JBQXNCLENBQUMsb0JBQW9CLENBQUMscUJBQW9CLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLEVBQUMsY0FBYTtBQUFDLFVBQU0sR0FBRyxTQUFTO0FBQUUsU0FBSyxXQUFTLElBQUksR0FBRyxLQUFLLE9BQU8sR0FBRSxLQUFLLGlCQUFlLElBQUksR0FBRyxLQUFLLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLCtCQUE4QixFQUFDLE1BQUssR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUksc0JBQXNCLENBQUMsY0FBYSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsMkJBQTJCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHNCQUFzQixDQUFDLGNBQWEsRUFBQyxNQUFLLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLFdBQVcsK0JBQThCLElBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxPQUFPLHNCQUFzQixDQUFDLGNBQWEsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQVEsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLEtBQUssc0JBQXNCLENBQUMsc0JBQXFCLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFdBQVM7QUFBRyxHQUFHLGlCQUFlO0FBQUcsSUFBTSxLQUFOLE1BQU0sSUFBRTtBQUFBLEVBQUMsWUFBWSxHQUFFLEdBQUU7QUFBQyxTQUFLLFdBQVMsR0FBRSxLQUFLLGFBQVc7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFNLFVBQVM7QUFBQyxRQUFJLElBQUUsSUFBSTtBQUFHLG1CQUFjLEtBQUssS0FBSyxTQUFTLFVBQVEsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU0sS0FBSyxNQUFNLENBQUM7QUFBRSxhQUFRLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTSxLQUFLLE1BQU0sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLENBQUMsT0FBTyxhQUFhLElBQUc7QUFBQyxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sYUFBYSxHQUFFLEdBQUU7QUFBQyxRQUFHLENBQUMsRUFBRSxNQUFLO0FBQUMsVUFBRyxFQUFFLE1BQU0sR0FBRSxPQUFPLFdBQVcsWUFBVSxPQUFLLFdBQVcsVUFBVSxZQUFVLGNBQWMsT0FBTSxJQUFJLEVBQUUsZ0tBQWdLO0FBQUUsWUFBTSxJQUFJLEVBQUUsbURBQW1EO0FBQUEsSUFBQztBQUFDLFdBQU8sSUFBSSxJQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQU0sS0FBTixjQUFpQixFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEdBQUUsR0FBRyxFQUFDLElBQUU7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLGtDQUFpQyxFQUFDLE1BQUssR0FBRSxHQUFHLEdBQUUsU0FBUSxFQUFFLENBQUMsRUFBQyxrQkFBaUIsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBQyxHQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFLEtBQUcsQ0FBQztBQUFFLFdBQU8sS0FBSyxRQUFRLElBQUkseUJBQXlCLENBQUMsY0FBYSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxJQUFFLENBQUMsR0FBRSxHQUFFO0FBQUMsUUFBRyxFQUFDLE9BQU0sR0FBRSxHQUFHLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxXQUFXLGtDQUFpQyxJQUFHLEVBQUMsT0FBTSxHQUFFLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUU7QUFBQyxRQUFHLEVBQUMsT0FBTSxFQUFDLElBQUUsS0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLFFBQVEsT0FBTyx5QkFBeUIsQ0FBQyxjQUFhLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBRSxDQUFDLEVBQUMsa0JBQWlCLENBQUMsR0FBRyxLQUFHLENBQUMsR0FBRSw0QkFBNEIsRUFBRSxTQUFTLEVBQUMsR0FBRSxHQUFHLE9BQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxLQUFLLHlCQUF5QixDQUFDLHFCQUFvQixFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFDLEdBQUUsR0FBRyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsWUFBWSxPQUFNLElBQUksRUFBRSx5REFBeUQsRUFBRSxpQkFBaUIsTUFBTSxFQUFFLEVBQUUsRUFBRTtBQUFFLFFBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssUUFBUSxJQUFJLEVBQUUsYUFBWSxFQUFDLEdBQUcsR0FBRSxTQUFRLEVBQUUsQ0FBQyxFQUFDLGtCQUFpQixDQUFDLEdBQUcsS0FBRyxDQUFDLEdBQUUsNEJBQTRCLEVBQUUsU0FBUyxHQUFFLFFBQU8scUJBQW9CLEdBQUUsR0FBRyxPQUFPLENBQUMsR0FBRSxRQUFPLE1BQUcsa0JBQWlCLEtBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFFLE1BQUksR0FBRyxhQUFhLEVBQUUsVUFBUyxFQUFFLFVBQVUsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFDLDBCQUF5QixNQUFLLG1CQUFrQixNQUFLLDBCQUF5QixNQUFLLHlDQUF3QyxNQUFLLDBCQUF5QixNQUFLLDRCQUEyQixNQUFLLDJDQUEwQyxNQUFLLDRCQUEyQixLQUFJO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsaUJBQWUsR0FBRyxlQUFlO0FBQU07QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsTUFBRyxDQUFDLEtBQUcsRUFBRSxZQUFVLEtBQUcsQ0FBQyxJQUFJLFFBQU0sRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFFLFFBQVEsSUFBSSxDQUFDLE1BQUk7QUFBQyxRQUFHLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBSSxJQUFFLE9BQU8sZUFBZSxFQUFDLEdBQUcsRUFBQyxHQUFFLGlCQUFnQixFQUFDLE9BQU0sTUFBSyxZQUFXLE1BQUUsQ0FBQztBQUFFLGFBQU8sT0FBTyxlQUFlLEdBQUUsVUFBUyxFQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsT0FBTyxLQUFLLDJGQUEyRixHQUFFO0FBQUEsTUFBSSxHQUFFLFlBQVcsTUFBRSxDQUFDO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLENBQUMsR0FBRSxlQUFjLEtBQUk7QUFBRSxTQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxNQUFLLElBQUUsRUFBRSxRQUFRLElBQUksQ0FBQyxNQUFJO0FBQUMsUUFBRyxFQUFFLFNBQU8sUUFBTztBQUFDLFVBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFJO0FBQUUsVUFBRyxNQUFJLEtBQUssS0FBRTtBQUFFLFVBQUksSUFBRSxPQUFPLGVBQWUsRUFBQyxHQUFHLEVBQUMsR0FBRSxpQkFBZ0IsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLENBQUM7QUFBRSxhQUFPLE9BQU8sZUFBZSxHQUFFLFVBQVMsRUFBQyxNQUFLO0FBQUMsZUFBTyxFQUFFLE9BQU8sS0FBSywyRkFBMkYsR0FBRTtBQUFBLE1BQUMsR0FBRSxZQUFXLE1BQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxDQUFDO0FBQUUsU0FBTSxFQUFDLEdBQUcsR0FBRSxTQUFRLEdBQUUsZUFBYyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLE1BQUcsR0FBRyxTQUFPLGNBQWMsUUFBTztBQUFLLE1BQUc7QUFBQyxRQUFHLFdBQVUsRUFBRSxRQUFPLEVBQUUsTUFBTSxDQUFDO0FBQUUsV0FBTyxLQUFLLE1BQU0sQ0FBQztBQUFBLEVBQUMsU0FBTyxHQUFFO0FBQUMsVUFBTSxJQUFJLEVBQUUsc0NBQXNDLENBQUMsRUFBRTtBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRSxJQUFFLENBQUM7QUFBRSxTQUFNLElBQUUsRUFBRSxRQUFPO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsTUFBSSxNQUFLO0FBQUM7QUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBSTtBQUFDLFFBQUUsS0FBSyxFQUFDLE1BQUssU0FBUSxPQUFNLElBQUcsQ0FBQyxHQUFFO0FBQUk7QUFBQSxJQUFRO0FBQUMsUUFBRyxNQUFJLEtBQUk7QUFBQyxRQUFFLEtBQUssRUFBQyxNQUFLLFNBQVEsT0FBTSxJQUFHLENBQUMsR0FBRTtBQUFJO0FBQUEsSUFBUTtBQUFDLFFBQUcsTUFBSSxLQUFJO0FBQUMsUUFBRSxLQUFLLEVBQUMsTUFBSyxTQUFRLE9BQU0sSUFBRyxDQUFDLEdBQUU7QUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBSTtBQUFDLFFBQUUsS0FBSyxFQUFDLE1BQUssU0FBUSxPQUFNLElBQUcsQ0FBQyxHQUFFO0FBQUk7QUFBQSxJQUFRO0FBQUMsUUFBRyxNQUFJLEtBQUk7QUFBQyxRQUFFLEtBQUssRUFBQyxNQUFLLGFBQVksT0FBTSxJQUFHLENBQUMsR0FBRTtBQUFJO0FBQUEsSUFBUTtBQUFDLFFBQUcsTUFBSSxLQUFJO0FBQUMsUUFBRSxLQUFLLEVBQUMsTUFBSyxhQUFZLE9BQU0sSUFBRyxDQUFDLEdBQUU7QUFBSTtBQUFBLElBQVE7QUFBQyxRQUFHLE1BQUksS0FBSTtBQUFDLFVBQUksSUFBRSxJQUFHLElBQUU7QUFBRyxVQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUUsYUFBTSxNQUFJLEtBQUk7QUFBQyxZQUFHLE1BQUksRUFBRSxRQUFPO0FBQUMsY0FBRTtBQUFHO0FBQUEsUUFBSztBQUFDLFlBQUcsTUFBSSxNQUFLO0FBQUMsY0FBRyxLQUFJLE1BQUksRUFBRSxRQUFPO0FBQUMsZ0JBQUU7QUFBRztBQUFBLFVBQUs7QUFBQyxlQUFHLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLFFBQUMsTUFBTSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxVQUFHLElBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEVBQUUsR0FBRSxLQUFLLEVBQUMsTUFBSyxVQUFTLE9BQU0sRUFBQyxDQUFDO0FBQUU7QUFBQSxJQUFRO0FBQUMsUUFBRyxLQUFHLEtBQUssS0FBSyxDQUFDLEdBQUU7QUFBQztBQUFJO0FBQUEsSUFBUTtBQUFDLFFBQUksSUFBRTtBQUFRLFFBQUcsS0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFHLE1BQUksT0FBSyxNQUFJLEtBQUk7QUFBQyxVQUFJLElBQUU7QUFBRyxVQUFHLE1BQUksSUFBSSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLGFBQU0sS0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFHLE1BQUksSUFBSSxNQUFHLEdBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUUsS0FBSyxFQUFDLE1BQUssVUFBUyxPQUFNLEVBQUMsQ0FBQztBQUFFO0FBQUEsSUFBUTtBQUFDLFFBQUksSUFBRTtBQUFTLFFBQUcsS0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFO0FBQUcsYUFBTSxLQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUU7QUFBQyxZQUFHLE1BQUksRUFBRSxPQUFPO0FBQU0sYUFBRyxHQUFFLElBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSxNQUFDO0FBQUMsVUFBRyxLQUFHLFVBQVEsS0FBRyxXQUFTLE1BQUksT0FBTyxHQUFFLEtBQUssRUFBQyxNQUFLLFFBQU8sT0FBTSxFQUFDLENBQUM7QUFBQSxXQUFNO0FBQUM7QUFBSTtBQUFBLE1BQVE7QUFBQztBQUFBLElBQVE7QUFBQztBQUFBLEVBQUc7QUFBQyxTQUFPO0FBQUM7QUFBaGlDLElBQWtpQyxLQUFHLENBQUMsTUFBSTtBQUFDLE1BQUcsRUFBRSxXQUFTLEVBQUUsUUFBTztBQUFFLE1BQUksSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUUsVUFBTyxFQUFFLE1BQUs7QUFBQSxJQUFDLEtBQUk7QUFBWSxhQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFTLFVBQUksSUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQU8sQ0FBQztBQUFFLFVBQUcsTUFBSSxPQUFLLE1BQUksSUFBSSxRQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxJQUFFLEtBQUk7QUFBUyxVQUFJLElBQUUsRUFBRSxFQUFFLFNBQU8sQ0FBQztBQUFFLFVBQUcsR0FBRyxTQUFPLFlBQVksUUFBTyxJQUFFLEVBQUUsTUFBTSxHQUFFLEVBQUUsU0FBTyxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUEsZUFBVSxHQUFHLFNBQU8sV0FBUyxFQUFFLFVBQVEsSUFBSSxRQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFZLGFBQU8sSUFBRSxFQUFFLE1BQU0sR0FBRSxFQUFFLFNBQU8sQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUEsRUFBSztBQUFDLFNBQU87QUFBQztBQUE5L0MsSUFBZ2dELEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBSSxJQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsSUFBSSxDQUFDLE1BQUk7QUFBQyxRQUFHLEVBQUUsU0FBTyxRQUFRLEtBQUcsRUFBRSxVQUFRLElBQUksR0FBRSxL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QUFDO0FBQUUsVUFBRyxhQUFhLEVBQUUsUUFBTyxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUUsVUFBRyxhQUFhLE9BQU07QUFBQyxZQUFJLElBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTztBQUFFLGVBQU8sRUFBRSxRQUFNLEdBQUUsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFBLE1BQUM7QUFBQyxhQUFPLEtBQUssTUFBTSxTQUFRLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRztBQUFBLElBQUMsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsTUFBTSxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU0sTUFBSTtBQUFBLElBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsVUFBUSxTQUFRLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLGFBQVk7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLGVBQWM7QUFBQyxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUc7QUFBRSxRQUFJLElBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsUUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLHVDQUF1QztBQUFFLFdBQU0sRUFBQyxNQUFLLE1BQUssVUFBUyxHQUFFLFlBQVcsRUFBRSxRQUFRLElBQUksWUFBWSxFQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxtQkFBbUIsR0FBRTtBQUFDLFFBQUksSUFBRSxJQUFJLElBQUcsSUFBSTtBQUFFLFdBQU8sRUFBRSxLQUFLLE1BQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLGNBQWMsR0FBRSxHQUFFLEdBQUUsRUFBQyxRQUFPLEVBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBSSxJQUFHLEdBQUUsRUFBQyxRQUFPLEVBQUMsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLFNBQVMsR0FBRSxpQkFBaUIsQ0FBQztBQUFFLFdBQU8sRUFBRSxHQUFFLElBQUcsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsS0FBSyxNQUFJLEVBQUUsZUFBZSxHQUFFLEVBQUMsR0FBRyxHQUFFLFFBQU8sS0FBRSxHQUFFLEVBQUMsR0FBRyxHQUFFLFNBQVEsRUFBQyxHQUFHLEdBQUcsU0FBUSw2QkFBNEIsU0FBUSxFQUFDLENBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsTUFBRSxFQUFFLEtBQUssTUFBSTtBQUFDLFdBQUssV0FBVyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUEsSUFBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGlCQUFpQixHQUFFO0FBQUMsU0FBSyxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRSxJQUFFLE1BQUc7QUFBQyxRQUFHLEtBQUssaUJBQWlCLEtBQUssQ0FBQyxHQUFFLEVBQUUsTUFBSyxNQUFNLFdBQVUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBZSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLFFBQU87QUFBRSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsUUFBUSxNQUFLLFdBQVcsTUFBTTtBQUFFLFVBQUUsS0FBSyxXQUFXLE1BQU0sS0FBSyxLQUFLLFVBQVUsR0FBRSxFQUFFLGlCQUFpQixTQUFRLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRztBQUFDLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFFLFVBQUcsRUFBQyxVQUFTLEdBQUUsTUFBSyxFQUFDLElBQUUsTUFBTSxFQUFFLE9BQU8sRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFLLFdBQVcsT0FBTSxDQUFDLEVBQUUsYUFBYTtBQUFFLFdBQUssV0FBVyxDQUFDO0FBQUUscUJBQWMsS0FBSyxFQUFFLEdBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssTUFBSyxDQUFDO0FBQUUsVUFBRyxFQUFFLFdBQVcsUUFBUSxRQUFRLE9BQU0sSUFBSTtBQUFHLFFBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFBLElBQUMsVUFBQztBQUFRLFVBQUcsS0FBRyxFQUFFLEdBQUUsb0JBQW9CLFNBQVEsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFXLEdBQUU7QUFBQyxRQUFHLEtBQUssTUFBTTtBQUFPLE1BQUUsTUFBSyxJQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsUUFBUSxJQUFJLFlBQVksR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLEtBQUssTUFBSyxDQUFDLEdBQUUsS0FBSyxNQUFNLFNBQVM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFPO0FBQUMsU0FBSyxXQUFXLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUUsR0FBRTtBQUFDLFlBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFFLENBQUMsSUFBSSxLQUFLLEVBQUMsVUFBUyxFQUFDLENBQUMsR0FBRTtBQUFBLEVBQUk7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEVBQUUsUUFBTztBQUFLLFFBQUksSUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFJLEVBQUUsYUFBVyxDQUFDO0FBQUUsUUFBRyxLQUFHLEVBQUUsR0FBRSxPQUFPLEdBQUUsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFJO0FBQUEsRUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLFlBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsTUFBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFFLENBQUMsSUFBSSxLQUFLLEVBQUMsVUFBUyxHQUFFLE1BQUssS0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFJO0FBQUEsRUFBQyxRQUFRLEdBQUU7QUFBQyxXQUFPLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUcsRUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsTUFBSSxRQUFRLE1BQUssS0FBSyxTQUFRLENBQUM7QUFBRSxXQUFLLEtBQUssR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxPQUFNO0FBQUMsTUFBRSxNQUFLLElBQUcsTUFBRyxHQUFHLEdBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxpQkFBZ0I7QUFBQyxXQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLGVBQWM7QUFBQyxXQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUUsRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxZQUFXO0FBQUMsV0FBTyxNQUFNLEtBQUssS0FBSyxHQUFFLEVBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sTUFBSyxHQUFFO0FBQUMsUUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUU7QUFBTyxRQUFHLE1BQUksTUFBTSxHQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxJQUFJO0FBQUUsUUFBSSxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLEdBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxPQUFPLENBQUMsTUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUMsVUFBUyxFQUFDLE1BQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUFFLFFBQUcsTUFBSSxTQUFRO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsQ0FBQyxHQUFHLE9BQU8sU0FBUSxPQUFPLENBQUM7QUFBRSxRQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxNQUFLLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxNQUFLLENBQUMsR0FBRSxLQUFLLE1BQU0sS0FBSztBQUFFO0FBQUEsSUFBTTtBQUFDLFFBQUcsTUFBSSxTQUFRO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcs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QUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPLE9BQU0sSUFBRSxFQUFFLGlCQUFlLElBQUcsSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTztBQUFTLFFBQUcsRUFBRSxFQUFFLFNBQU8sQ0FBQyxFQUFFLFNBQU8sYUFBWTtBQUFDLFVBQUksSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDO0FBQUUsVUFBRyxNQUFNLFFBQVEsRUFBRSxPQUFPLEdBQUU7QUFBQyxZQUFJLElBQUUsRUFBRSxRQUFRLE9BQU8sQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUUsWUFBRyxFQUFFLFdBQVMsRUFBRSxHQUFFLElBQUk7QUFBQSxZQUFPLEdBQUUsVUFBUTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLE1BQU0sS0FBSyxPQUFPLEtBQUssU0FBUyxPQUFPLEVBQUMsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFHLEdBQUUsRUFBQyxNQUFLLFFBQU8sU0FBUSxDQUFDLEVBQUMsTUFBSyxRQUFPLE1BQUssRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLFlBQVcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sV0FBVSxHQUFFLEVBQUMsUUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsUUFBTyxTQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUSxFQUFDLHNCQUFxQixhQUFZLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsU0FBTyxPQUFPLE9BQU0sSUFBSSxFQUFFLHVDQUF1QztBQUFFLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sV0FBUyxDQUFDLEVBQUMsTUFBSyxRQUFPLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRTtBQUFBLEVBQUUsR0FBRSxPQUFPLGNBQWMsSUFBRztBQUFDLFFBQUk7QUFBRSxRQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFNLElBQUksRUFBRSx1Q0FBdUM7QUFBRSxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxRQUFPLEdBQUc7QUFBRSxRQUFHO0FBQUMsYUFBTSxNQUFHO0FBQUMsWUFBSTtBQUFFLFlBQUc7QUFBQyxjQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPLGtCQUFnQixFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sZUFBZTtBQUFNLFlBQUUsTUFBSyxJQUFHLE9BQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLFFBQU8sR0FBRyxHQUFFLEVBQUUsTUFBSyxLQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEtBQUksSUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsUUFBTyxHQUFHO0FBQUUsY0FBRyxFQUFDLGdCQUFlLEdBQUUsbUJBQWtCLEdBQUUsR0FBRyxFQUFDLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFO0FBQU8sY0FBRyxFQUFFLE9BQU8sS0FBRSxLQUFLLE9BQU8sS0FBSyxTQUFTLE9BQU8sRUFBQyxHQUFHLEVBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxFQUFFLGFBQWEsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU0sTUFBSTtBQUFBLFVBQUMsQ0FBQyxHQUFFLE1BQU07QUFBQSxjQUFPLEdBQUUsTUFBSyxJQUFHLEtBQUssT0FBTyxLQUFLLFNBQVMsT0FBTyxFQUFDLEdBQUcsR0FBRSxRQUFPLE1BQUUsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUUsY0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLEdBQUU7QUFBQyxnQkFBRyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRTtBQUFDLGtCQUFHLEVBQUMsTUFBSyxHQUFFLFNBQVEsRUFBQyxJQUFFLE1BQU0sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFFLGdCQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEtBQUssRUFBQyxNQUFLLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksSUFBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEtBQUksRUFBRSxFQUFFLEtBQUssTUFBSyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBRSxHQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEtBQUssQ0FBQztBQUFBLHFCQUFVLENBQUMsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFO0FBQUEsVUFBSztBQUFBLFFBQUMsVUFBQztBQUFRLGNBQUcsRUFBRSxHQUFFLE1BQU07QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFDLFVBQUcsQ0FBQyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBTSxJQUFJLEVBQUUsd0RBQXdEO0FBQUUsUUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFFBQVEsTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUM7QUFBQSxJQUFDLFNBQU8sR0FBRTtBQUFDLFlBQU0sRUFBRSxNQUFLLElBQUcsT0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFFBQVEsTUFBTSxNQUFJO0FBQUEsTUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUU7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsa0JBQWtCLEdBQUU7QUFBQyxRQUFHLE9BQU8sTUFBSSxXQUFXLEdBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFPLEVBQUUsRUFBRSxNQUFLLElBQUcs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QUFHLGFBQWEsR0FBRyxRQUFPLEVBQUUsTUFBSyxJQUFHLE1BQUcsR0FBRyxHQUFFLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxVQUFHLGFBQWEsRUFBRSxRQUFPLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxVQUFHLGFBQWEsT0FBTTtBQUFDLFlBQUksSUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPO0FBQUUsZUFBTyxFQUFFLFFBQU0sR0FBRSxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sS0FBSyxNQUFNLFNBQVEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxJQUFJLFFBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFFLE1BQUssSUFBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFFLEdBQUc7QUFBQSxJQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHO0FBQUEsSUFBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsTUFBTSxNQUFJO0FBQUEsSUFBQyxDQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxVQUFRLFNBQVEsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBYztBQUFDLE1BQUUsTUFBSyxJQUFHLE1BQUcsR0FBRztBQUFFLFFBQUksSUFBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBRSxRQUFHLENBQUMsRUFBRSxPQUFNLE1BQU0sdUNBQXVDO0FBQUUsV0FBTSxFQUFDLE1BQUssTUFBSyxVQUFTLEdBQUUsWUFBVyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLG1CQUFtQixHQUFFO0FBQUMsUUFBSSxJQUFFLElBQUksSUFBRyxJQUFJO0FBQUUsV0FBTyxFQUFFLEtBQUssTUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sY0FBYyxHQUFFLEdBQUUsR0FBRSxFQUFDLFFBQU8sRUFBQyxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxJQUFJLElBQUcsR0FBRSxFQUFDLFFBQU8sRUFBQyxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsU0FBUyxHQUFFLGlCQUFpQixDQUFDO0FBQUUsV0FBTyxFQUFFLEdBQUUsSUFBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLE1BQUksRUFBRSxlQUFlLEdBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxLQUFFLEdBQUUsRUFBQyxHQUFHLEdBQUUsU0FBUSxFQUFDLEdBQUcsR0FBRyxTQUFRLDZCQUE0QixTQUFRLEVBQUMsQ0FBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxNQUFFLEVBQUUsS0FBSyxNQUFJO0FBQUMsV0FBSyxXQUFXLEdBQUUsS0FBSyxNQUFNLEtBQUs7QUFBQSxJQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsaUJBQWlCLEdBQUU7QUFBQyxTQUFLLFNBQVMsS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFLElBQUUsTUFBRztBQUFDLFFBQUcsS0FBSyxpQkFBaUIsS0FBSyxDQUFDLEdBQUUsRUFBRSxNQUFLLE1BQU0sV0FBVSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxlQUFlLEdBQUUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsUUFBTztBQUFFLFFBQUcsR0FBRTtBQUFDLFVBQUcsRUFBRSxRQUFRLE1BQUssV0FBVyxNQUFNO0FBQUUsVUFBRSxLQUFLLFdBQVcsTUFBTSxLQUFLLEtBQUssVUFBVSxHQUFFLEVBQUUsaUJBQWlCLFNBQVEsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHO0FBQUMsUUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUUsVUFBRyxFQUFDLFVBQVMsR0FBRSxNQUFLLEVBQUMsSUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUUsR0FBRSxFQUFDLEdBQUcsR0FBRSxRQUFPLEtBQUssV0FBVyxPQUFNLENBQUMsRUFBRSxhQUFhO0FBQUUsV0FBSyxXQUFXLENBQUM7QUFBRSxxQkFBYyxLQUFLLEVBQUUsR0FBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxNQUFLLENBQUM7QUFBRSxVQUFHLEVBQUUsV0FBVyxRQUFRLFFBQVEsT0FBTSxJQUFJO0FBQUcsUUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFBQyxVQUFDO0FBQVEsVUFBRyxLQUFHLEVBQUUsR0FBRSxvQkFBb0IsU0FBUSxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRTtBQUFDLFFBQUcsS0FBSyxNQUFNO0FBQU8sTUFBRSxNQUFLLElBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxRQUFRLElBQUksWUFBWSxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxNQUFLLENBQUMsR0FBRSxLQUFLLE1BQU0sU0FBUztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxTQUFLLFdBQVcsTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLEdBQUcsR0FBRSxHQUFFO0FBQUMsWUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxNQUFJLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsQ0FBQyxJQUFJLEtBQUssRUFBQyxVQUFTLEVBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBSTtBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxRQUFPO0FBQUssUUFBSSxJQUFFLEVBQUUsVUFBVSxDQUFDLE1BQUksRUFBRSxhQUFXLENBQUM7QUFBRSxRQUFHLEtBQUcsRUFBRSxHQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUk7QUFBQSxFQUFDLEtBQUssR0FBRSxHQUFFO0FBQUMsWUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsQ0FBQyxNQUFJLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxDQUFDLElBQUUsQ0FBQyxJQUFJLEtBQUssRUFBQyxVQUFTLEdBQUUsTUFBSyxLQUFFLENBQUMsR0FBRTtBQUFBLEVBQUk7QUFBQSxFQUFDLFFBQVEsR0FBRTtBQUFDLFdBQU8sSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBRyxFQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxNQUFJLFFBQVEsTUFBSyxLQUFLLFNBQVEsQ0FBQztBQUFFLFdBQUssS0FBSyxHQUFFLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLE9BQU07QUFBQyxNQUFFLE1BQUssSUFBRyxNQUFHLEdBQUcsR0FBRSxNQUFNLEVBQUUsTUFBSyxJQUFHLEdBQUc7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLGlCQUFnQjtBQUFDLFdBQU8sRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sZUFBYztBQUFDLFdBQU8sTUFBTSxLQUFLLEtBQUssR0FBRSxFQUFFLE1BQUssSUFBRyxLQUFJLEVBQUUsRUFBRSxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFlBQVc7QUFBQyxXQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUUsRUFBRSxNQUFLLElBQUcsS0FBSSxFQUFFLEVBQUUsS0FBSyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxNQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRTtBQUFPLFFBQUcsTUFBSSxNQUFNLEdBQUUsTUFBSyxJQUFHLE1BQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLElBQUk7QUFBRSxRQUFJLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsR0FBRSxNQUFLLElBQUcsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFJLENBQUMsRUFBRSxJQUFJLEdBQUUsRUFBRSxRQUFRLENBQUMsRUFBQyxVQUFTLEVBQUMsTUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsUUFBRyxNQUFJLFNBQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxDQUFDLEdBQUcsT0FBTyxTQUFRLE9BQU8sQ0FBQztBQUFFLFFBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLE1BQUssQ0FBQyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUU7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RSxLQUFLLElBQUUsRUFBQyxHQUFHLEdBQUUsVUFBUyxFQUFFLFdBQVMsRUFBRSxNQUFNLFNBQVE7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDLEtBQUksbUJBQWtCO0FBQUMsZ0JBQUcsR0FBRyxTQUFPLFdBQVcsR0FBRSxRQUFRLEVBQUUsS0FBSyxJQUFFLEVBQUMsR0FBRyxHQUFFLFdBQVUsRUFBRSxNQUFNLFVBQVM7QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDO0FBQVEsZUFBRyxFQUFFLEtBQUs7QUFBQSxRQUFDO0FBQUMsZUFBTztBQUFBLE1BQUM7QUFBQSxNQUFDLEtBQUk7QUFBcUIsZUFBTztBQUFBLElBQUM7QUFBQSxFQUFDLEdBQUUsT0FBTyxjQUFjLElBQUc7QUFBQyxRQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRyxXQUFPLEtBQUssR0FBRyxlQUFjLENBQUMsTUFBSTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU07QUFBRSxVQUFHLEVBQUUsR0FBRSxRQUFRLENBQUM7QUFBQSxVQUFPLEdBQUUsS0FBSyxDQUFDO0FBQUEsSUFBQyxDQUFDLEdBQUUsS0FBSyxHQUFHLE9BQU0sTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLFFBQVEsTUFBTTtBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEtBQUssR0FBRyxTQUFRLENBQUMsTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLE9BQU8sQ0FBQztBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEtBQUssR0FBRyxTQUFRLENBQUMsTUFBSTtBQUFDLFVBQUU7QUFBRyxlQUFRLEtBQUssRUFBRSxHQUFFLE9BQU8sQ0FBQztBQUFFLFFBQUUsU0FBTztBQUFBLElBQUMsQ0FBQyxHQUFFLEVBQUMsTUFBSyxZQUFTO0FBQUMsVUFBRyxDQUFDLEVBQUUsUUFBTztBQUFDLFlBQUcsRUFBRSxRQUFNLEVBQUMsT0FBTSxRQUFPLE1BQUssS0FBRTtBQUFF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QUFJLEtBQUssR0FBRSxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQUE7QUFDbkssS0FBRyxFQUFFLEtBQUssTUFBSTtBQUFDLFFBQUcsR0FBRyxzQkFBQUMsWUFBRyxJQUFHLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsS0FBSTtBQUFDLE9BQUssV0FBUyxJQUFJLE1BQUcsS0FBSyxPQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLFVBQVMsSUFBRSxFQUFFLE9BQU8sQ0FBQztBQUFFLFNBQU8sS0FBSyxPQUFLLEVBQUUsTUFBSztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEtBQUssU0FBUyxJQUFJLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUs7QUFBUyxNQUFHLGFBQWEsSUFBRztBQUFDLFFBQUksSUFBRSxFQUFFO0FBQVMsUUFBRyxDQUFDLE1BQUksRUFBRSxTQUFPLEtBQUcsRUFBRSxRQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFLLEVBQUUsRUFBRSxNQUFLO0FBQUssUUFBRSxLQUFLLFdBQVMsSUFBSSxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUMsU0FBTyxFQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBSyxPQUFLLEVBQUUsTUFBSztBQUFJO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBSyxXQUFTLElBQUksR0FBRyxDQUFDO0FBQUUsT0FBSyxPQUFLLEVBQUU7QUFBSTtBQUFDLEdBQUcsVUFB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RSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRTtBQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsRUFBRSxNQUFNLEtBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxTQUFTLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLElBQUksS0FBRyxDQUFDO0FBQUUsR0FBRyxJQUFHLEVBQUMsU0FBUSxNQUFJLEdBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxPQUFPLE1BQUksWUFBVSxNQUFJLENBQUMsR0FBRyxZQUFVO0FBQTlDLElBQWlELEtBQUcsTUFBSSxPQUFPLE1BQUksWUFBVSxNQUFJLENBQUMsR0FBRyxZQUFVO0FBQS9GLElBQWtHLEtBQUcsTUFBSSxHQUFHLFlBQVU7QUFBdEgsSUFBeUgsS0FBRyxNQUFJLEdBQUc7QUFBbkksSUFBMkksS0FBRyxXQUFVO0FBQUMsTUFBRztBQUFDLFFBQUksSUFBRSxNQUFJLEdBQUcsV0FBUyxHQUFHLFFBQVEsTUFBTSxFQUFFO0FBQU0sUUFBRyxFQUFFLFFBQU87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QUFFLFFBQU8sRUFBRSxNQUFNO0FBQUUsTUFBSSxJQUFFLEVBQUUsUUFBTyxJQUFFLEtBQUcsR0FBRyxDQUFDLElBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQztBQUFFLFNBQU8sRUFBRSxLQUFLLENBQUMsR0FBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFHLElBQUUsRUFBRTtBQUFPLFFBQUksSUFBRSxNQUFNLENBQUM7QUFBRyxTQUFNLEVBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUU7QUFBTyxTQUFNLEVBQUUsSUFBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHLEdBQUcsT0FBTyxnQkFBZSxNQUFNO0FBQXRDLElBQXdDLEtBQUc7QUFBRyxJQUFJLEtBQUcsR0FBRztBQUFWLElBQXFCLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVU7QUFBRSxTQUFPLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFFLEVBQUU7QUFBTyxTQUFPLElBQUksRUFBRSxZQUFZLEdBQUUsRUFBRSxZQUFXLEVBQUUsTUFBTTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHLE9BQU87QUFBZCxJQUFxQixLQUFHLDJCQUFVO0FBQUMsV0FBUyxJQUFHO0FBQUEsRUFBQztBQUFDLFNBQU8sU0FBUyxHQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU0sQ0FBQztBQUFFLFFBQUcsR0FBRyxRQUFPLEdBQUcsQ0FBQztBQUFFLE1BQUUsWUFBVTtBQUFFLFFBQUksSUFBRSxJQUFJO0FBQUUsV0FBTyxFQUFFLFlBQVUsUUFBTztBQUFBLEVBQUM7QUFBQyxFQUFFO0FBQWxLLElBQW9LLEtBQUc7QUFBRyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sT0FBTyxFQUFFLGVBQWEsY0FBWSxDQUFDLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBc0MsSUFBSSxLQUFHO0FBQWtCLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxPQUFPLEtBQUcsWUFBVSxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsS0FBRztBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHO0FBQVAsSUFBMEQsS0FBRztBQUFRLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsT0FBTztBQUFFLE1BQUcsS0FBRyxZQUFVLEtBQUcsWUFBVSxLQUFHLGFBQVcsS0FBRyxRQUFNLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxTQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFHLEtBQUcsUUFBTSxLQUFLLE9BQU8sQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsSUFBSSxLQUFHO0FBQUksU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxHQUFFLFNBQVMsR0FBRTtBQUFDLFFBQUcsRUFBRSxTQUFPLEdBQUcsR0FBRSxNQUFNO0FBQUUsV0FBTztBQUFBLEVBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFNLFNBQU87QUFBQztBQUFDLElBQUksS0FBRztBQUFHLElBQUksS0FBRztBQUFQLElBQTBHLEtBQUc7QUFBN0csSUFBd0gsS0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDO0FBQUUsTUFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJLEdBQUcsR0FBRSxLQUFLLEVBQUU7QUFBRSxTQUFPLEVBQUUsUUFBUSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUUsS0FBSyxJQUFFLEVBQUUsUUFBUSxJQUFHLElBQUksSUFBRSxLQUFHLENBQUM7QUFBQSxFQUFDLENBQUMsR0FBRTtBQUFDLENBQUM7QUFBbFEsSUFBb1EsS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRyxJQUFFLEtBQUcsT0FBSyxJQUFFLEVBQUUsUUFBTyxJQUFFLE1BQU0sQ0FBQztBQUFFLFNBQU0sRUFBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsSUFBRTtBQUFULElBQVcsS0FBRyxLQUFHLEdBQUcsWUFBVTtBQUE5QixJQUFxQyxLQUFHLEtBQUcsR0FBRyxXQUFTO0FBQU8sU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLE9BQU8sS0FBRyxTQUFTLFFBQU87QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRTtBQUFHLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTyxLQUFHLEdBQUcsS0FBSyxDQUFDLElBQUU7QUFBRyxNQUFJLElBQUUsSUFBRTtBQUFHLFNBQU8sS0FBRyxPQUFLLElBQUUsS0FBRyxDQUFDLEtBQUcsT0FBSztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEtBQUcsT0FBSyxLQUFHLEdBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTztBQUFFLFNBQU8sR0FBRyxHQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsSUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUcsSUFBRTtBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLEtBQUcsWUFBVSxHQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsTUFBSSxJQUFFLElBQUU7QUFBRyxTQUFPLEtBQUcsT0FBSyxJQUFFLEtBQUcsQ0FBQyxLQUFHLE9BQUs7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQU8sU0FBTSxLQUFHLFFBQU0sSUFBRSxFQUFFLEtBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSxTQUFPLEtBQUcsS0FBRyxJQUFFLElBQUU7QUFBTTtBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLEtBQUcsUUFBTSxLQUFLLE9BQU8sQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUcsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxJQUFHLElBQUUsRUFBRSxRQUFPLElBQUU7QUFBRyxTQUFNLEVBQUUsSUFBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSxRQUFHLEVBQUUsSUFBRSxLQUFHLFFBQU0sRUFBRSxHQUFFLENBQUMsR0FBRztBQUFNLFFBQUUsRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFDLE1BQUcsS0FBRyxFQUFFLEtBQUcsRUFBRSxRQUFPO0FBQUUsU0FBTyxJQUFFLEtBQUcsT0FBSyxJQUFFLEVBQUUsUUFBTyxDQUFDLENBQUMsS0FBRyxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FB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UyxJQUFHO0FBQUMsUUFBRyxDQUFDLEVBQUUsS0FBRSxXQUFXLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTLElBQUc7QUFBQyxRQUFHLEdBQUU7QUFBQyxRQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLEVBQUU7QUFBRTtBQUFBLElBQU07QUFBQyxRQUFJLElBQUU7QUFBRSxRQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRSxhQUFhLE1BQUk7QUFBQyxVQUFJLElBQUU7QUFBRSxVQUFHLElBQUUsTUFBSyxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxHQUFFO0FBQUMsUUFBRSxDQUFDO0FBQUU7QUFBQSxJQUFNO0FBQUMsUUFBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLEtBQUcsRUFBRSxRQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVEsS0FBRyxLQUFHLEVBQUUsR0FBRTtBQUFBLEVBQUMsR0FBRSxPQUFNLEdBQUUsVUFBUztBQUFDLE1BQUU7QUFBQSxFQUFDLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxvQkFBSTtBQUFJLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxPQUFPLE1BQUksV0FBVyxRQUFPO0FBQUUsTUFBRyxPQUFPLGdCQUFnQixFQUFFLFFBQU0sTUFBSSxFQUFFLE9BQU8sWUFBWSxFQUFFO0FBQUUsU0FBTSxNQUFJLEVBQUUsT0FBTyxPQUFPLEVBQUU7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLEtBQUcsSUFBSSxDQUFDO0FBQUUsTUFBSSxJQUFFLE1BQUk7QUFBQyxPQUFHLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBRSxTQUFPLE9BQU8sT0FBTyxHQUFFLEVBQUMsQ0FBQyxPQUFPLE9BQU8sR0FBRSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxHQUFHLENBQUMsTUFBSTtBQUFDLE1BQUcsQ0FBQyxLQUFHLEVBQUUsS0FBSyxNQUFJLEdBQUcsUUFBTztBQUFLLE1BQUksSUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxPQUFPO0FBQUUsTUFBRyxFQUFFLFdBQVMsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxXQUFXLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxLQUFLLENBQUMsTUFBSSxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUM7QUFBRSxNQUFHLEtBQUcsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxRQUFRLE1BQUssRUFBRSxFQUFFLFlBQVksQ0FBQztBQUFFLFNBQU0sRUFBQyxTQUFRLElBQUUsQ0FBQyxJQUFFLEdBQUUsU0FBUSxJQUFFLElBQUUsQ0FBQyxHQUFFLGFBQVksRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU0sOEJBQThCO0FBQUUsTUFBRyxLQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxLQUFLLEdBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztBQUFBLE9BQU07QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFNLFlBQVk7QUFBRSxRQUFHLEtBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUUsTUFBTSxjQUFjO0FBQUUsTUFBRyxLQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDO0FBQUUsTUFBRyxFQUFFLFlBQVksRUFBRSxTQUFTLFdBQVcsRUFBRSxHQUFFLEtBQUssSUFB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RSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxTQUFRLEdBQUUsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLEdBQUUsT0FBTSxFQUFDO0FBQS9DLElBQWlELEtBQUcsR0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLFFBQVEsSUFBSSw2QkFBNkIsWUFBWSxFQUFFLEtBQUs7QUFBRSxNQUFHLEtBQUcsT0FBTyxPQUFPLElBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxTQUFNO0FBQU8sQ0FBQztBQUFqTCxJQUFtTCxLQUFHO0FBQUcsU0FBUyxLQUFJO0FBQUMsU0FBTyxPQUFPLFVBQVEsT0FBSyxNQUFNLFFBQVEsUUFBUSxJQUFJLElBQUUsUUFBUSxPQUFLLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRztBQUFFLFNBQU8sTUFBSSxHQUFHLFFBQVEsSUFBSSxLQUFLLEtBQUcsR0FBRyxRQUFRLElBQUksU0FBUyxLQUFHLEVBQUUsU0FBUyxTQUFTLEtBQUcsRUFBRSxTQUFTLElBQUksS0FBRyxHQUFHLEtBQUcsRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFdBQVcsVUFBVSxDQUFDLEtBQUcsR0FBRyxNQUFJO0FBQUksQ0FBQztBQUFFLElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFJLEVBQUUsV0FBVyxVQUFVLENBQUM7QUFBRSxNQUFHLENBQUMsRUFBRSxRQUFPO0FBQUssTUFBSSxJQUFFLEVBQUUsVUFBVSxDQUFDO0FBQUUsU0FBTyxHQUFHLENBQUM7QUFBQyxDQUFDO0FBQWxILElBQW9ILEtBQUcsR0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEdBQUc7QUFBRSxTQUFPLEVBQUUsU0FBUyxtQkFBbUIsS0FBRyxFQUFFLFNBQVMsTUFBTTtBQUFDLENBQUM7QUFBck0sSUFBdU0sS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsR0FBRztBQUFFLFdBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLFdBQVcsZUFBZSxFQUFFLFFBQU8sRUFBRSxVQUFVLEVBQUU7QUFBRSxRQUFHLE1BQUksa0JBQWdCLElBQUUsSUFBRSxFQUFFLE9BQU8sUUFBTyxFQUFFLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUksQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUcsRUFBRSxRQUFNO0FBQUcsTUFBRyxPQUFPLFVBQVEsT0FBSyxPQUFPLFFBQVEsV0FBUyxPQUFLLE9BQU8sUUFBUSxTQUFTLE9BQUssSUFBSSxRQUFNO0FBQUcsTUFBSSxJQUFFLEdBQUc7QUFBRSxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxJQUFJLEtBQUc7QUFBUCxJQUFnQixLQUFHO0FBQW5CLElBQXdCLEtBQUcsUUFBUSxRQUFRO0FBQTNDLElBQTZDLEtBQUc7QUFBaEQsSUFBbUQsS0FBRztBQUF0RCxJQUF5RCxLQUFHO0FBQUssZUFBZSxHQUFHLEdBQUUsR0FBRSxJQUFFLElBQUc7QUFBQyxNQUFHLEtBQUcsRUFBRSxNQUFHLFVBQU0saUJBQUFDLE1BQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBSSxDQUFDO0FBQUEsTUFBTyxPQUFJO0FBQUUsTUFBRyxNQUFJLEtBQUcsR0FBRztBQUFPLE9BQUc7QUFBRyxNQUFHO0FBQUMsUUFBSSxJQUFFLEVBQUUsU0FBUyxNQUFNLElBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLENBQUMsV0FBUyxHQUFHLENBQUM7QUFBSyxRQUFHO0FBQUMsZ0JBQU0saUJBQUFDLFFBQUcsR0FBRSxDQUFDO0FBQUEsSUFBQyxTQUFPLEdBQUU7QUFBQyxVQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBTSxpQkFBQUMsUUFBRyxDQUFDLEVBQUUsTUFBTSxNQUFJO0FBQUEsTUFBQyxDQUFDLEdBQUUsVUFBTSxpQkFBQUQsUUFBRyxHQUFFLENBQUMsRUFBRSxNQUFNLFVBQUksaUJBQUFDLFFBQUcsQ0FBQyxFQUFFLE1BQU0sTUFBSTtBQUFBLE1BQUMsQ0FBQyxDQUFDO0FBQUEsSUFBQztBQUFDLFNBQUc7QUFBQSxFQUFDLFVBQUM7QUFBUSxTQUFHO0FBQUEsRUFBRTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLFNBQUcsYUFBQUMsTUFBRyxHQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRTtBQUFFO0FBQUMsZUFBZSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsV0FBTSxpQkFBQUMsT0FBRyxHQUFFLEVBQUMsV0FBVSxLQUFFLENBQUMsRUFBRSxNQUFNLE1BQUk7QUFBQSxFQUFDLENBQUM7QUFBRSxNQUFJLElBQUU7QUFBRSxNQUFHO0FBQUMsY0FBTSxpQkFBQUMsWUFBRyxHQUFFLENBQUM7QUFBQSxFQUFDLFNBQU8sR0FBRTtBQUFDLFFBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFNO0FBQUUsUUFBRSxHQUFHLENBQUMsR0FBRSxVQUFNLGlCQUFBQSxZQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxRQUFNLEdBQUcsR0FBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUUsR0FBRztBQUFDO0FBQUMsU0FBUyxLQUFJO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxNQUFHLENBQUMsSUFBRztBQUFDLFFBQUksSUFBRTtBQUFLLFNBQUcsR0FBRyxFQUFDLFNBQVEsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEdBQUcsR0FBRSxRQUFFLGFBQUFDLFNBQUcsQ0FBQyxHQUFFLElBQUUsTUFBSTtBQUFFLFVBQUcsSUFBRSxHQUFFLEdBQUcsR0FBRTtBQUFDLFlBQUcsRUFBRSxLQUFHO0FBQUMsYUFBRyxFQUFFLFVBQVUsQ0FBQztBQUFBLFFBQUMsUUFBTTtBQUFBLFFBQUM7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHO0FBQUMsYUFBRyxF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RUFBUyxVQUFRO0FBQUEsRUFBRyxZQUFZLEdBQUU7QUFBQyxTQUFLLFdBQVM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sYUFBYSxJQUFHO0FBQUMsUUFBRyxLQUFLLFFBQVEsT0FBTSxNQUFNLGtDQUFrQztBQUFFLFdBQU8sS0FBSyxVQUFRLE1BQUc7QUFBQSxFQUFJO0FBQUEsRUFBQyxPQUFNO0FBQUMsUUFBRyxLQUFLLE1BQU0sU0FBTyxFQUFFLFFBQU8sUUFBUSxRQUFRLEVBQUMsTUFBSyxPQUFHLE9BQU0sS0FBSyxNQUFNLE1BQU0sRUFBQyxDQUFDO0FBQUUsUUFBRyxLQUFLLE9BQU8sUUFBTyxRQUFRLFFBQVEsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBRSxRQUFHLEtBQUssU0FBUyxRQUFPLFFBQVEsT0FBTyxLQUFLLFFBQVE7QUFBRSxXQUFPLElBQUksUUFBUSxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQUssY0FBWSxHQUFFLEtBQUssYUFBVztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQVEsR0FBRTtBQUFDLFFBQUcsS0FBSyxhQUFZO0FBQUMsVUFBSSxJQUFFLEtBQUs7QUFBWSxXQUFLLGNBQVksUUFBTyxLQUFLLGFBQVcsUUFBTyxFQUFFLEVBQUMsTUFBSyxPQUFHLE9BQU0sRUFBQyxDQUFDO0FBQUEsSUFBQyxNQUFNLE1BQUssTUFBTSxLQUFLLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFNO0FBQUMsUUFBRyxLQUFLLFNBQU8sTUFBRyxLQUFLLGFBQVk7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFZLFdBQUssY0FBWSxRQUFPLEtBQUssYUFBVyxRQUFPLEVBQUUsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxLQUFLLFdBQVMsR0FBRSxLQUFLLFlBQVc7QUFBQyxVQUFJLElBQUUsS0FBSztBQUFXLFdBQUssY0FBWSxRQUFPLEtBQUssYUFBVyxRQUFPLEVBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFRO0FBQUMsUUFBRyxLQUFLLFNBQU8sTUFBRyxLQUFLLFNBQVMsTUFBSyxTQUFTO0FBQUUsV0FBTyxRQUFRLFFBQVEsRUFBQyxNQUFLLE1BQUcsT0FBTSxPQUFNLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsWUFBVyxDQUFDLEdBQUUsTUFBSyxLQUFJO0FBQUM7QUFBQyxJQUFJLEtBQUcsR0FBRztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUU7QUFBRyxNQUFHLEVBQUUsU0FBTyxNQUFLO0FBQUMsTUFBRSxXQUFXLEtBQUssRUFBQyxXQUFVLEdBQUUsVUFBUyxHQUFFLE9BQU0sTUFBRSxDQUFDO0FBQUU7QUFBQSxFQUFNO0FBQUMsSUFBRSxLQUFLLFNBQVMsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLEtBQUcsb0JBQW1CLEVBQUMsY0FBYSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLEtBQUcscUJBQW9CLEVBQUMsY0FBYSxHQUFFLFlBQVcsR0FBRSxHQUFHLEVBQUMsQ0FBQztBQUFDO0FBQXdFLGVBQWUsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUc7QUFBQyxRQUFJLElBQUUsTUFBTSxFQUFFO0FBQUUsV0FBTyxHQUFHLENBQUMsR0FBRTtBQUFBLEVBQUMsU0FBTyxHQUFFO0FBQUMsVUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLEtBQUcsT0FBTyxHQUFFO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQVE7QUFBQSxFQUFDO0FBQUEsRUFBZSxXQUFTO0FBQUEsRUFBRyxZQUFZLEdBQUU7QUFBQyxTQUFLLGlCQUFlO0FBQUEsRUFBQztBQUFBLEVBQUM7QUFBQSxFQUFRO0FBQUEsRUFBUTtBQUFBLEVBQVUsTUFBTSxRQUFPO0FBQUEsRUFBQztBQUFBLEVB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Q0FBQyxHQUFFLGdCQUFlLEtBQUssS0FBSyxVQUFTLFFBQU8sTUFBSyxNQUFLLEdBQUUsWUFBVyxHQUFHLENBQUMsRUFBQyxHQUFFLElBQUUsS0FBSyxXQUFXLEVBQUMsTUFBSyxHQUFFLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxRQUFPLENBQUMsR0FBRSxPQUFNLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxNQUFLLEdBQUUsTUFBSyxDQUFDLEdBQUUsZ0JBQWUsS0FBSyxLQUFLLFVBQVMsUUFBTyxNQUFLLE1BQUssR0FBRSxZQUFXLEdBQUcsQ0FBQyxFQUFDO0FBQUUsUUFBRyxDQUFDLEtBQUssV0FBVyxFQUFFLE1BQU0sS0FBRztBQUFDLFVBQUksSUFBRSxLQUFLLFdBQVcsRUFBQyxNQUFLLEdBQUUsTUFBSyxDQUFDLEdBQUUsUUFBTyxFQUFDLENBQUM7QUFBRSxhQUFPLEdBQUcsQ0FBQyxJQUFFLEVBQUMsT0FBTSxFQUFFLE1BQUssSUFBRSxFQUFDLFFBQU8sRUFBRSxPQUFPLE9BQU07QUFBQSxJQUFDLFNBQU8sR0FBRTtBQUFDLFVBQUcsR0FBRyxTQUFTLFlBQVksR0FBRyxTQUFTLGFBQWEsRUFBRSxNQUFLLFdBQVcsRUFBRSxRQUFNO0FBQUcsUUFBRSxTQUFPLEVBQUMsUUFBTyxDQUFDLEdBQUUsT0FBTSxLQUFFO0FBQUEsSUFBQztBQUFDLFdBQU8sS0FBSyxZQUFZLEVBQUMsTUFBSyxHQUFFLE1BQUssQ0FBQyxHQUFFLFFBQU8sRUFBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxDQUFDLElBQUUsRUFBQyxPQUFNLEVBQUUsTUFBSyxJQUFFLEVBQUMsUUFBTyxFQUFFLE9BQU8sT0FBTSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEtBQUssZUFBZSxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBUSxRQUFPLEVBQUU7QUFBSyxVQUFNLEVBQUU7QUFBQSxFQUFLO0FBQUEsRUFBQyxNQUFNLGVBQWUsR0FBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLFFBQU8sQ0FBQyxHQUFFLG9CQUFtQixHQUFHLFVBQVMsT0FBTSxLQUFFLEdBQUUsTUFBSyxHQUFHLFFBQU0sQ0FBQyxHQUFFLGdCQUFlLEtBQUssS0FBSyxVQUFTLFFBQU8sTUFBSyxNQUFLLEdBQUUsWUFBVyxHQUFHLENBQUMsRUFBQyxHQUFFLElBQUUsS0FBSyxPQUFPLEVBQUMsTUFBSyxHQUFFLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLEdBQUUsSUFBRSxPQUFNLEdBQUcsQ0FBQyxJQUFFLElBQUUsUUFBUSxRQUFRLENBQUM7QUFBRyxXQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRyxPQUFPLE1BQUksWUFBVSxPQUFPLElBQUUsSUFBSSxRQUFNLEVBQUMsU0FBUSxFQUFDO0FBQUEsZUFBVSxPQUFPLE1BQUksV0FBVyxRQUFPLEVBQUUsQ0FBQztBQUFBLFVBQU8sUUFBTztBQUFBLElBQUM7QUFBRSxXQUFPLEtBQUssWUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksRUFBRSxTQUFTLEVBQUMsTUFBSyxFQUFFLFFBQU8sR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUUsVUFBRyxPQUFPLFVBQVEsT0FBSyxhQUFhLFFBQVEsUUFBTyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsWUFBRyxDQUFDLEVBQUUsUUFBTyxFQUFFLEdBQUU7QUFBQSxZQUFRLFFBQU07QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFHLENBQUMsRUFBRSxRQUFPLEVBQUUsR0FBRTtBQUFBLFVBQVEsUUFBTTtBQUFBLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBTyxFQUFFLFNBQVMsT0FBTyxNQUFJLGFBQVcsRUFBRSxHQUFFLENBQUMsSUFBRSxDQUFDLEdBQUU7QUFBQSxVQUFRLFFBQU07QUFBQSxJQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sTUFBSyxVQUFTLEVBQUUsWUFBVyxRQUFPLEVBQUMsTUFBSyxjQUFhLFlBQVcsRUFBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLEtBQUssWUFBWSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFO0FBQUMsU0FBSyxNQUFJLEtBQUssZ0JBQWUsS0FBSyxPQUFLLEdBQUUsS0FBSyxRQUFNLEtBQUssTUFBTSxLQUFLLElBQUksR0FBRSxLQUFLLFlBQVUsS0FBSyxVQUFVLEtBQUssSUFBSSxHQUFFLEtBQUssYUFBVyxLQUFLLFdBQVcsS0FBSyxJQUFJLEdBQUUsS0FBSyxpQkFBZSxLQUFLLGVBQWUsS0FBSyxJQUFJLEdBQUUsS0FBSyxNQUFJLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxLQUFLLFNBQU8sS0FBSyxPQUFPLEtBQUssSUFBSSxHQUFFLEtBQUssYUFBVyxLQUFLLFdBQVcsS0FBSyxJQUFJLEdBQUUsS0FBSyxjQUFZLEtBQUssWUFBWSxLQUFLLElBQUksR0FBRSxLQUFLLFdBQVMsS0FBSyxTQUFTLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBUyxLQUFLLFNBQVMsS0FBSyxJQUFJLEdBQUUsS0FBSyxVQUFRLEtBQUssUUFBUSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQU0sS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFFLEtBQUssVUFBUSxLQUFLLFFBQVEsS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFHLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRSxLQUFLLE1BQUksS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLEtBQUssWUFBVSxLQUFLLFVBQVUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFNLEtBQUssTUFBTSxLQUFLLElBQUksR0FBRSxLQUFLLFVBQVEsS0FBSyxRQUFRLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBTSxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUUsS0FBSyxXQUFTLEtBQUssU0FBUyxLQUFLLElBQUksR0FBRSxLQUFLLE9BQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBUyxLQUFLLFNBQVMsS0FBSyxJQUFJLEdBQUUsS0FBSyxhQUFXLEtBQUssV0FBVyxLQUFLLElBQUksR0FBRSxLQUFLLGFBQVcsS0FBSyxXQUFXLEtBQUssSUFBSSxHQUFFLEtBQUssV0FBVyxJQUFFLEVBQUMsU0FBUSxHQUFFLFFBQU8sT0FBTSxVQUFTLENBQUMsTUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDLEVBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFTO0FBQUMsV0FBTyxLQUFLLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFBQztBQUFBLEVBQUMsUUFBTztBQUFDLFdBQU8sR0FBRyxPQUFPLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFTO0FBQUMsV0FBTyxHQUFHLE9BQU8sTUFBSyxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUU7QUFBQyxXQUFPLEdBQUcsT0FBTyxDQUFDLE1BQUssQ0FBQyxHQUFFLEtBQUssSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRTtBQUFDLFdBQU8sR0FBRyxPQUFPLE1BQUssR0FBRSxLQUFLLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxVQUFVLEdBQUU7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRSxRQUFPLE1BQUssVUFBUyxFQUFFLFlBQVcsUUFBTyxFQUFDLE1BQUssYUFBWSxXQUFVLEVBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsUUFBUSxHQUFFO0FBQUMsUUFBSSxJQUFFLE9BQU8sTUFBSSxhQUFXLElBQUUsTUFBSTtBQUFFLFdBQU8sSUFBSSxHQUFHLEVBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFFLFdBQVUsTUFBSyxjQUFhLEdBQUUsVUFBUyxFQUFFLFdBQVUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLFVBQVMsRUFBRSxZQUFXLE1BQUssTUFBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFFBQUksSUFBRSxPQUFPLE1BQUksYUFBVyxJQUFFLE1BQUk7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRSxXQUFVLE1BQUssWUFBVyxHQUFFLFVBQVMsRUFBRSxTQUFRLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUU7QUFBQyxXQUFPLElBQUksS0FBSyxZQUFZLEVBQUMsR0FBRyxLQUFLLE1BQUssYUFBWSxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxXQUFPLEdBQUcsT0FBTyxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFVO0FBQUMsV0FBTyxHQUFHLE9BQU8sSUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFDLGFBQVk7QUFBQyxXQUFPLEtBQUssVUFBVSxNQUFNLEVBQUU7QUFBQSxFQUFPO0FBQUEsRUFBQyxhQUFZO0FBQUMsV0FBTyxLQUFLLFVBQVUsSUFBSSxFQUFFO0FBQUEsRUFBTztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQVAsSUFBd0IsS0FBRztBQUEzQixJQUF5QyxLQUFHO0FBQTVDLElBQXdFLEtBQUc7QUFBM0UsSUFBb0ssS0FBRztBQUF2SyxJQUEyTCxLQUFHO0FBQTlMLElBQWlQLEtBQUc7QUFBcFAsSUFBK2hCLEtBQUc7QUFBbGlCLElBQXVuQixLQUFHO0FBQTFuQixJQUFpckI7QUFBanJCLElBQW9yQixLQUFHO0FBQXZyQixJQUE2eUIsS0FBRztBQUFoekIsSUFBMjdCLEtBQUc7QUFBOTdCLElBQXNsRCxLQUFHO0FBQXpsRCxJQUFteEUsS0FBRztBQUF0eEUsSUFBeTFFLEtBQUc7QUFBNTFFLElBQXE2RSxLQUFHO0FBQXg2RSxJQUE0bUYsS0FBRyxJQUFJLE9BQU8sSUFBSSxFQUFFLEdBQUc7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRTtBQUFXLE1BQUcsRUFBRSxVQUFVLEtBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTO0FBQUEsV0FBWSxFQUFFLGFBQVcsS0FBSyxLQUFFLEdBQUcsQ0FBQztBQUFhLE1BQUksSUFBRSxFQUFFLFlBQVUsTUFBSTtBQUFJLFNBQU0sOEJBQThCLENBQUMsSUFBSSxDQUFDO0FBQUU7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBRyxJQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsS0FBSyxFQUFFLFFBQU0sT0FBSyxHQUFHLEdBQUUsRUFBRSxPQUFPLEdBQUUsS0FBSyxzQkFBc0I7QUFBRSxTQUFPLElBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFJLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE9BQUksTUFBSSxRQUFNLENBQUMsTUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLFFBQU07QUFBRyxPQUFJLE1BQUksUUFBTSxDQUFDLE1BQUksR0FBRyxLQUFLLENBQUMsRUFBRSxRQUFNO0FBQUcsU0FBTTtBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFHO0FBQUMsUUFBRyxDQUFDLENBQUMsSUFBRSxFQUFFLE1BQU0sR0FBRztBQUFFLFFBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxRQUFJLElBQUUsRUFBRSxRQUFRLE1BQUssR0FBRyxFQUFFLFFBQVEsTUFBSyxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVEsSUFBRSxFQUFFLFNBQU8sS0FBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLEtBQUssTUFBTSxLQUFLLENBQUMsQ0FBQztBQUFFLFFBQUcsT0FBTyxNQUFJLFlBQVUsTUFBSSxLQUFLLFFBQU07QUFBRyxRQUFHLFNBQVEsS0FBRyxHQUFHLFFBQU0sTUFBTSxRQUFNO0FBQUcsUUFBRyxDQUFDLEVBQUUsSUFBSSxRQUFNO0FBQUcsUUFBRyxLQUFHLEVBQUUsUUFBTSxFQUFFLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFBRSxRQUFNO0FBQUMsV0FBTTtBQUFBLEVBQUU7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxPQUFJLE1BQUksUUFBTSxDQUFDLE1BQUksR0FBRyxLQUFLLENBQUMsRUFBRSxRQUFNO0FBQUcsT0FBSSxNQUFJLFFBQU0sQ0FBQyxNQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsUUFBTTtBQUFHLFNBQU07QUFBRTtBQUFDLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxLQUFLLEtBQUssT0FBTyxHQUFFLE9BQUssT0FBTyxFQUFFLElBQUk7QUFBRSxRQUFHLEtBQUssU0FBUyxDQUFDLE1BQUksRUFBRSxRQUFPO0FBQUMsVUFBSSxJQUFFLEtBQUssZ0JBQWdCLENBQUM7QUFBRSxhQUFPLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxjQUFhLFVBQVMsRUFBRSxRQUFPLFVBQVMsRUFBRSxXQUFVLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxRQUFJLElBQUUsSUFBSSxNQUFHLElBQUU7QUFBTyxhQUFRLEtBQUssS0FBSyxLQUFLLE9BQU8sS0FBRyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxLQUFLLFNBQU8sRUFBRSxNQUFNLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFdBQVUsU0FBUSxFQUFFLE9BQU0sTUFBSyxVQUFTLFdBQVUsTUFBRyxPQUFNLE9BQUcsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxLQUFLLFNBQU8sRUFBRSxNQUFNLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFNBQVEsU0FBUSxFQUFFLE9BQU0sTUFBSyxVQUFTLFdBQVUsTUFBRyxPQUFNLE9BQUcsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sVUFBUztBQUFDLFVBQUksSUFBRSxFQUFFLEtBQUssU0FBTyxFQUFFLE9BQU0sSUFBRSxFQUFFLEtBQUssU0FBTyxFQUFFO0FBQU0sVUFBRyxLQUFHLEdBQUU7QUFBQyxZQUFHLElBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsT0FBTSxNQUFLLFVBQVMsV0FBVSxNQUFHLE9BQU0sTUFBRyxTQUFRLEVBQUUsUUFBTyxDQUFDO0FBQUEsaUJBQVUsRUFBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEVBQUUsT0FBTSxNQUFLLFVBQVMsV0FBVSxNQUFHLE9BQU0sTUFBRyxTQUFRLEVBQUUsUUFBTyxDQUFDO0FBQUUsVUFBRSxNQUFNO0FBQUEsTUFBQztBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sU0FBUTtBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLFNBQVEsTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFNBQVE7QUFBQyxVQUFHLENBQUMsR0FBRyxNQUFHLElBQUksT0FBTyxJQUFHLEdBQUc7QUFBRSxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxTQUFRLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsUUFBTyxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sVUFBUztBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLFVBQVMsTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVB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QVMsRUFBRSxTQUFPLFFBQU87QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGdCQUFlLFlBQVcsUUFBTyxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsZ0JBQWUsWUFBVyxRQUFPLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLFlBQVc7QUFBQyxVQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxZQUFXLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxNQUFLO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxNQUFLLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxPQUFNLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxRQUFPO0FBQUMsVUFBRyxDQUFDLEdBQUcsRUFBRSxNQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsWUFBVyxRQUFPLE1BQUssRUFBRSxnQkFBZSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxVQUFTO0FBQUMsVUFBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsVUFBUyxNQUFLLEVBQUUsZ0JBQWUsU0FBUSxFQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sYUFBWTtBQUFDLFVBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxZQUFXLGFBQVksTUFBSyxFQUFFLGdCQUFlLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLE1BQU0sSUFBRyxZQUFZLENBQUM7QUFBRSxXQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLEtBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFdBQVcsQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBQyxZQUFXLEdBQUUsTUFBSyxFQUFFLGdCQUFlLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsVUFBVSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxTQUFRLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssU0FBUSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLFVBQVMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxTQUFRLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLFFBQU8sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssVUFBUyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxhQUFZLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssTUFBSyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksU0FBUyxRQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssWUFBVyxXQUFVLE1BQUssUUFBTyxPQUFHLE9BQU0sT0FBRyxTQUFRLEVBQUMsQ0FBQztBQUFFLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLFdBQVUsT0FBTyxHQUFHLFlBQVUsTUFBSSxPQUFLLEdBQUcsV0FBVSxRQUFPLEdBQUcsVUFBUSxPQUFHLE9BQU0sR0FBRyxTQUFPLE9BQUcsR0FBRyxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxRQUFPLFNBQVEsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksU0FBUyxRQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxXQUFVLE1BQUssU0FBUSxFQUFDLENBQUM7QUFBRSxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssUUFBTyxXQUFVLE9BQU8sR0FBRyxZQUFVLE1BQUksT0FBSyxHQUFHLFdBQVUsR0FBRyxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssU0FBUSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLE9BQU0sR0FBRSxVQUFTLEdBQUcsVUFBUyxHQUFHLEVBQUUsU0FBUyxHQUFHLE9BQU8sRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsV0FBVyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssY0FBYSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxZQUFXLE9BQU0sR0FBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxHQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLEdBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxPQUFPLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxVQUFTLE9BQU0sR0FBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLEdBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU07QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFFBQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxRQUFPLEVBQUMsTUFBSyxPQUFNLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsY0FBYTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssUUFBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLFFBQU8sRUFBQyxNQUFLLGNBQWEsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxFQUFDLE1BQUssY0FBYSxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFNBQVE7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksYUFBWTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxVQUFVO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxVQUFTO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sS0FBSztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksVUFBUztBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxPQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sUUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksU0FBUTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxNQUFNO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxVQUFTO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE9BQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFNBQVE7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sTUFBTTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksT0FBTTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxJQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxTQUFRO0FBQUMsV0FBTSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLE1BQU07QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sUUFBUTtBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksY0FBYTtBQUFDLFdBQU0sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFJLEVBQUUsU0FBTyxXQUFXO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxZQUFXO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLE1BQUksUUFBTSxFQUFFLFFBQU0sRUFBRSxLQUFFLEVBQUU7QUFBQSxJQUFLO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksWUFBVztBQUFDLFFBQUksSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxNQUFJO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLEVBQUUsV0FBVSxRQUFPLEdBQUcsVUFBUSxPQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUcsSUFBSSxRQUFPLEtBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFHLElBQUksUUFBTyxJQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDO0FB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QyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssU0FBUyxPQUFNLEdBQUUsT0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxFQUFDLE1BQUssR0FBRSxPQUFNLEdBQUUsV0FBVSxHQUFFLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssUUFBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sR0FBRSxXQUFVLE9BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLEdBQUUsV0FBVSxPQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsWUFBWSxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxHQUFFLFdBQVUsTUFBRyxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sR0FBRSxXQUFVLE1BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxXQUFXLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxjQUFhLE9BQU0sR0FBRSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxVQUFTLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sV0FBVSxNQUFHLE9BQU0sT0FBTyxrQkFBaUIsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBRSxVQUFVLEVBQUMsTUFBSyxPQUFNLFdBQVUsTUFBRyxPQUFNLE9BQU8sa0JBQWlCLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLE1BQUksUUFBTSxFQUFFLFFBQU0sRUFBRSxLQUFFLEVBQUU7QUFBQSxJQUFLO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksV0FBVTtBQUFDLFFBQUksSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sU0FBTyxFQUFFLFNBQU8sZ0JBQWMsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFLE1BQUssSUFBRTtBQUFLLGFBQVEsS0FBSyxLQUFLLEtBQUssT0FBTyxLQUFHLEVBQUUsU0FBTyxZQUFVLEVBQUUsU0FBTyxTQUFPLEVBQUUsU0FBTyxhQUFhLFFBQU07QUFBQSxhQUFXLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSyxXQUFTLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxNQUFJLFFBQU0sRUFBRSxRQUFNLEVBQUUsS0FBRSxFQUFFO0FBQUEsSUFBSztBQUFDLFdBQU8sT0FBTyxTQUFTLENBQUMsS0FBRyxPQUFPLFNBQVMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sQ0FBQyxHQUFFLFVBQVMsRUFBRSxXQUFVLFFBQU8sR0FBRyxVQUFRLE9BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBRSxJQUFNLEtBQU4sTUFBTSxZQUFXLEdBQUU7QUFBQSxFQUFDLGNBQWE7QUFBQyxVQUFNLEdBQUcsU0FBUztBQUFFLFNBQUssTUFBSSxLQUFLLEtBQUksS0FBSyxNQUFJLEtBQUs7QUFBQSxFQUFHO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEtBQUssS0FBSyxPQUFPLEtBQUc7QUFBQyxRQUFFLE9BQUssT0FBTyxFQUFFLElBQUk7QUFBQSxJQUFDLFFBQU07QUFBQyxhQUFPLEtBQUssaUJBQWlCLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFLLFNBQVMsQ0FBQyxNQUFJLEVBQUUsT0FBTyxRQUFPLEtBQUssaUJBQWlCLENBQUM7QUFBRSxRQUFJLElBQUUsUUFBTyxJQUFFLElBQUk7QUFBRyxhQUFRLEtBQUssS0FBSyxLQUFLLE9BQU8sS0FBRyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxZQUFVLEVBQUUsT0FBSyxFQUFFLFFBQU0sRUFBRSxRQUFNLEVBQUUsTUFBTSxLQUFFLEtBQUssZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxXQUFVLE1BQUssVUFBUyxTQUFRLEVBQUUsT0FBTSxXQUFVLEVBQUUsV0FBVSxTQUFRLEVBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxXQUFTLEVBQUUsU0FBTyxPQUFNO0FBQUMsVUFBRyxFQUFFLFlBQVUsRUFBRSxPQUFLLEVBQUUsUUFBTSxFQUFFLFFBQU0sRUFBRSxNQUFNLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFNBQVEsTUFBSyxVQUFTLFNBQVEsRUFBRSxPQUFNLFdBQVUsRUFBRSxXQUFVLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLFdBQVMsRUFBRSxTQUFPLGNBQWE7QUFBQyxVQUFHLEVBQUUsT0FBSyxFQUFFLFVBQVEsT0FBTyxDQUFDLEVBQUUsS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsaUJBQWdCLFlBQVcsRUFBRSxPQUFNLFNBQVEsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBQSxJQUFDLE1BQU0sSUFBRyxZQUFZLENBQUM7QUFBRSxXQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLEtBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxpQkFBaUIsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLGdCQUFnQixDQUFDO0FBQUUsV0FBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsY0FBYSxVQUFTLEVBQUUsUUFBTyxVQUFTLEVBQUUsV0FBVSxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxTQUFTLE9BQU0sR0FBRSxNQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxTQUFTLE9BQU0sR0FBRSxPQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxTQUFTLE9BQU0sR0FBRSxNQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxTQUFTLE9BQU0sR0FBRSxPQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFFBQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxRQUFPLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxXQUFVLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsVUFBVSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxRQUFPLENBQUMsR0FBRyxLQUFLLEtBQUssUUFBTyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sT0FBTyxDQUFDLEdBQUUsV0FBVSxPQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsV0FBTyxLQUFLLFVBQVUsRUFBQyxNQUFLLE9BQU0sT0FBTSxPQUFPLENBQUMsR0FBRSxXQUFVLE9BQUcsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxZQUFZLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssT0FBTSxPQUFNLE9BQU8sQ0FBQyxHQUFFLFdBQVUsTUFBRyxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sT0FBTyxDQUFDLEdBQUUsV0FBVSxNQUFHLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsV0FBVyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssVUFBVSxFQUFDLE1BQUssY0FBYSxPQUFNLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFdBQVU7QUFBQyxRQUFJLElBQUU7QUFBSyxhQUFRLEtBQUssS0FBSyxLQUFLLE9BQU8sS0FBRyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsTUFBSSxRQUFNLEVBQUUsUUFBTSxFQUFFLEtBQUUsRUFBRTtBQUFBLElBQUs7QUFBQyxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxXQUFVO0FBQUMsUUFBSSxJQUFFO0FBQUssYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLE1BQUksUUFBTSxFQUFFLFFBQU0sRUFBRSxLQUFFLEVBQUU7QUFBQSxJQUFLO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sQ0FBQyxHQUFFLFVBQVMsRUFBRSxXQUFVLFFBQU8sR0FBRyxVQUFRLE9BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBRSxJQUFNLEtBQU4sY0FBaUIsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxLQUFLLEtBQUssT0FBTyxHQUFFLE9BQUssUUFBUSxFQUFFLElBQUk7QUFBRSxRQUFHLEtBQUssU0FBUyxDQUFDLE1BQUksRUFBRSxTQUFRO0FBQUMsVUFBSSxJQUFFLEtBQUssZ0JBQWdCLENBQUM7QUFBRSxhQUFPLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxjQUFhLFVBQVMsRUFBRSxTQUFRLFVBQVMsRUFBRSxXQUFVLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxXQUFPLEdBQUcsRUFBRSxJQUFJO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxTQUFPLENBQUMsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsVUFBUyxFQUFFLFlBQVcsUUFBTyxHQUFHLFVBQVEsT0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxLQUFLLEtBQUssT0FBTyxHQUFFLE9BQUssSUFBSSxLQUFLLEVBQUUsSUFBSTtBQUFFLFFBQUcsS0FBSyxTQUFTLENBQUMsTUFBSSxFQUFFLE1BQUs7QUFBQyxVQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLGFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGNBQWEsVUFBUyxFQUFFLE1BQUssVUFBUyxFQUFFLFdBQVUsQ0FBQyxHQUFFO0FBQUEsSUFBQztBQUFDLFFBQUcsT0FBTyxNQUFNLEVBQUUsS0FBSyxRQUFRLENBQUMsR0FBRTtBQUFDLFVBQUksSUFBRSxLQUFLLGdCQUFnQixDQUFDO0FBQUUsYUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsYUFBWSxDQUFDLEdBQUU7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLElBQUksTUFBRyxJQUFFO0FBQU8sYUFBUSxLQUFLLEtBQUssS0FBSyxPQUFPLEtBQUcsRUFBRSxTQUFPLE9BQU07QUFBQyxVQUFHLEVBQUUsS0FBSyxRQUFRLElBQUUsRUFBRSxNQUFNLEtBQUUsS0FBSyxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFdBQVUsU0FBUSxFQUFFLFNBQVEsV0FBVSxNQUFHLE9BQU0sT0FBRyxTQUFRLEVBQUUsT0FBTSxNQUFLLE9BQU0sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUMsV0FBUyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsRUFBRSxLQUFLLFFBQVEsSUFBRSxFQUFFLE1BQU0sS0FBRSxLQUFLLGdCQUFnQixHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsU0FBUSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxPQUFNLE1BQUssT0FBTSxDQUFDLEdBQUUsRUFBRSxNQUFNO0FBQUEsSUFBQyxNQUFNLElBQUcsWUFBWSxDQUFDO0FBQUUsV0FBTSxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sSUFBSSxLQUFLLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssUUFBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sRUFBRSxRQUFRLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxVQUFVLEVBQUMsTUFBSyxPQUFNLE9BQU0sRUFBRSxRQUFRLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxRQUFJLElBQUU7QUFBSyxhQUFRLEtBQUssS0FBSyxLQUFLLE9BQU8sS0FBRyxFQUFFLFNBQU8sT0FBTTtBQUFDLFVBQUcsTUFBSSxRQUFNLEVBQUUsUUFBTSxFQUFFLEtBQUUsRUFBRTtBQUFBLElBQUs7QUFBQyxXQUFPLEtBQUcsT0FBSyxJQUFJLEtBQUssQ0FBQyxJ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QUUsZ0JBQWMsTUFBSztBQUFDLFVBQUksSUFBRSxFQUFFLEtBQUssU0FBTyxFQUFFLFlBQVksT0FBTSxJQUFFLEVBQUUsS0FBSyxTQUFPLEVBQUUsWUFBWTtBQUFNLFVBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssSUFBRSxFQUFFLFVBQVEsRUFBRSxXQUFVLFNBQVEsSUFBRSxFQUFFLFlBQVksUUFBTSxRQUFPLFNBQVEsSUFBRSxFQUFFLFlBQVksUUFBTSxRQUFPLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxNQUFHLFNBQVEsRUFBRSxZQUFZLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsY0FBWSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssU0FBTyxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEVBQUUsVUFBVSxPQUFNLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxVQUFVLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsY0FBWSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssU0FBTyxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsVUFBVSxPQUFNLE1BQUssU0FBUSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxVQUFVLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxNQUFNLFFBQU8sUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsYUFBTyxFQUFFLEtBQUssWUFBWSxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsYUFBTyxHQUFHLFdBQVcsR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUUsUUFBSSxJQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsYUFBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsV0FBVyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFVBQVM7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQUk7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxXQUFVLEVBQUMsT0FBTSxHQUFFLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssV0FBVSxFQUFDLE9BQU0sR0FBRSxTQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLGFBQVksRUFBQyxPQUFNLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxHQUFFLFdBQVUsTUFBSyxXQUFVLE1BQUssYUFBWSxNQUFLLFVBQVMsRUFBRSxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLGFBQWEsSUFBRztBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsT0FBTTtBQUFDLFVBQUksSUFBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLFFBQUUsQ0FBQyxJQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsRUFBRSxNQUFLLE9BQU0sTUFBSSxFQUFDLENBQUM7QUFBQSxFQUFDLFdBQVMsYUFBYSxHQUFHLFFBQU8sSUFBSSxHQUFHLEVBQUMsR0FBRyxFQUFFLE1BQUssTUFBSyxHQUFHLEVBQUUsT0FBTyxFQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxXQUFVLGFBQWEsR0FBRyxRQUFPLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQU8sUUFBTztBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxjQUFhO0FBQUMsVUFBTSxHQUFHLFNBQVM7QUFBRSxTQUFLLFVBQVEsTUFBSyxLQUFLLFlBQVUsS0FBSyxhQUFZLEtBQUssVUFBUSxLQUFLO0FBQUEsRUFBTTtBQUFBLEVBQUMsYUFBWTtBQUFDLFFBQUcsS0FBSyxZQUFVLEtBQUssUUFBTyxLQUFLO0FBQVEsUUFBSSxJQUFFLEtBQUssS0FBSyxNQUFNLEdBQUUsSUFBRSxHQUFHLFdBQVcsQ0FBQztBQUFFLFdBQU8sS0FBSyxVQUFRLEVBQUMsT0FBTSxHQUFFLE1BQUssRUFBQyxHQUFFLEtBQUs7QUFBQSxFQUFPO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEtBQUssU0FBUyxDQUFDLE1BQUksRUFBRSxRQUFPO0FBQUMsVUFBSSxJQUFFLEtBQUssZ0JBQWdCLENBQUM7QUFBRSxhQUFPLEVBQUUsR0FBRSxFQUFD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QUMsRUFBRSxXQUFTLEVBQUM7QUFBRSxhQUFNLEVBQUMsU0FBUSxFQUFDO0FBQUEsSUFBQyxFQUFDLElBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFPO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxhQUFZLFFBQU8sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLGNBQWE7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLGFBQVksY0FBYSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxPQUFNLE9BQUssRUFBQyxHQUFHLEtBQUssS0FBSyxNQUFNLEdBQUUsR0FBRyxFQUFDLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsYUFBWSxFQUFFLEtBQUssYUFBWSxVQUFTLEVBQUUsS0FBSyxVQUFTLE9BQU0sT0FBSyxFQUFDLEdBQUcsS0FBSyxLQUFLLE1BQU0sR0FBRSxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUMsSUFBRyxVQUFTLEVBQUUsVUFBUyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxFQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssVUFBUyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxHQUFHLFdBQVcsQ0FBQyxFQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsS0FBSyxNQUFNLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFFLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUcsV0FBVyxLQUFLLEtBQUssRUFBRSxLQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLE9BQU0sTUFBSSxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxjQUFhO0FBQUMsV0FBTyxHQUFHLElBQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUU7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxHQUFHLFdBQVcsS0FBSyxLQUFLLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxVQUFHLEtBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLFVBQU8sR0FBRSxDQUFDLElBQUUsRUFBRSxTQUFTO0FBQUEsSUFBQztBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVMsR0FBRTtBQUFDLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUcsV0FBVyxLQUFLLEtBQUssRUFBRSxLQUFHLEtBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFBLFNBQU07QUFBQyxVQUFJLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxhQUFNLGFBQWEsR0FBRyxLQUFFLEVBQUUsS0FBSztBQUFVLFFBQUUsQ0FBQyxJQUFFO0FBQUEsSUFBQztBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssT0FBTSxNQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxXQUFPLEdBQUcsR0FBRyxXQUFXLEtBQUssS0FBSyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxTQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLE1BQUksR0FBRSxhQUFZLFNBQVEsVUFBUyxHQUFHLE9BQU8sR0FBRSxVQUFTLEVBQUUsV0FBVSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLEdBQUcsZUFBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxNQUFJLEdBQUUsYUFBWSxVQUFTLFVBQVMsR0FBRyxPQUFPLEdBQUUsVUFBUyxFQUFFLFdBQVUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBRSxHQUFHLGFBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sR0FBRSxhQUFZLFNBQVEsVUFBUyxHQUFHLE9BQU8sR0FBRSxVQUFTLEVBQUUsV0FBVSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixjQUFpQixHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxFQUFDLElBQUUsS0FBSyxvQkFBb0IsQ0FBQyxHQUFFLElBQUUsS0FBSyxLQUFLO0FBQVEsYUFBUyxFQUFFLEdBQUU7QUFBQyxlQUFRLEtBQUssRUFBRSxLQUFHLEVBQUUsT0FBTyxXQUFTLFFBQVEsUUFBTyxFQUFFO0FBQU8sZUFBUSxLQUFLLEVBQUUsS0FBRyxFQUFFLE9BQU8sV0FBUyxRQUFRLFFBQU8sRUFBRSxPQUFPLE9BQU8sS0FBSyxHQUFHLEVBQUUsSUFBSSxPQUFPLE1BQU0sR0FBRSxFQUFFO0FBQU8sVUFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUFFLGFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGVBQWMsYUFBWSxFQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxNQUFNLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSSxPQUFNLE1BQUk7QUFBQyxVQUFJLElBQUUsRUFBQyxHQUFHLEdBQUUsUUFBTyxFQUFDLEdBQUcsRUFBRSxRQUFPLFFBQU8sQ0FBQyxFQUFDLEdBQUUsUUFBTyxLQUFJO0FBQUUsYUFBTSxFQUFDLFFBQU8sTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUksRUFBQztBQUFBLElBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxRQUFPLElBQUUsQ0FBQztBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUMsWUFBSSxJQUFFLEVBQUMsR0FBRyxHQUFFLFFBQU8sRUFBQyxHQUFHLEVBQUUsUUFBTyxRQUFPLENBQUMsRUFBQyxHQUFFLFFBQU8sS0FBSSxHQUFFLElBQUUsRUFBRSxXQUFXLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU87QUFBQSxpQkFBVSxFQUFFLFdBQVMsV0FBUyxDQUFDLEVBQUUsS0FBRSxFQUFDLFFBQU8sR0FBRSxLQUFJLEVBQUM7QUFBRSxZQUFHLEVBQUUsT0FBTyxPQUFPLE9BQU8sR0FBRSxLQUFLLEVBQUUsT0FBTyxNQUFNO0FBQUEsTUFBQztBQUFDLFVBQUcsRUFBRSxRQUFPLEVBQUUsT0FBTyxPQUFPLEtBQUssR0FBRyxFQUFFLElBQUksT0FBTyxNQUFNLEdBQUUsRUFBRTtBQUFPLFVBQUksSUFBRSxFQUFFLElBQUksQ0FBQyxNQUFJLElBQUksR0FBRyxDQUFDLENBQUM7QUFBRSxhQUFPLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxlQUFjLGFBQVksRUFBQyxDQUFDLEdBQUU7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFB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RSxJQUFJLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxVQUFTLEVBQUUsdUJBQXNCLGVBQWMsR0FBRSxTQUFRLEdBQUUsWUFBVyxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxNQUFHLE1BQUksRUFBRSxRQUFNLEVBQUMsT0FBTSxNQUFHLE1BQUssRUFBQztBQUFBLFdBQVUsTUFBSSxFQUFFLFVBQVEsTUFBSSxFQUFFLFFBQU87QUFBQyxRQUFJLElBQUUsR0FBRyxXQUFXLENBQUMsR0FBRSxJQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQUksRUFBRSxRQUFRLENBQUMsTUFBSSxFQUFFLEdBQUUsSUFBRSxFQUFDLEdBQUcsR0FBRSxHQUFHLEVBQUM7QUFBRSxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBTSxRQUFNLEVBQUMsT0FBTSxNQUFFO0FBQUUsUUFBRSxDQUFDLElBQUUsRUFBRTtBQUFBLElBQUk7QUFBQyxXQUFNLEVBQUMsT0FBTSxNQUFHLE1BQUssRUFBQztBQUFBLEVBQUMsV0FBUyxNQUFJLEVBQUUsU0FBTyxNQUFJLEVBQUUsT0FBTTtBQUFDLFFBQUcsRUFBRSxXQUFTLEVBQUUsT0FBTyxRQUFNLEVBQUMsT0FBTSxNQUFFO0FBQUUsUUFBSSxJQUFFLENBQUM7QUFBRSxhQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLE1BQU0sUUFBTSxFQUFDLE9BQU0sTUFBRTtBQUFFLFFBQUUsS0FBSyxFQUFFLElBQUk7QUFBQSxJQUFDO0FBQUMsV0FBTSxFQUFDLE9BQU0sTUFBRyxNQUFLLEVBQUM7QUFBQSxFQUFDLFdBQVMsTUFBSSxFQUFFLFFBQU0sTUFBSSxFQUFFLFFBQU0sQ0FBQyxNQUFJLENBQUMsRUFBRSxRQUFNLEVBQUMsT0FBTSxNQUFHLE1BQUssRUFBQztBQUFBLE1BQU8sUUFBTSxFQUFDLE9BQU0sTUFBRTtBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEdBQUU7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFFBQUcsRUFBQyxRQUFPLEdBQUUsS0FBSSxFQUFDLElBQUUsS0FBSyxvQkFBb0IsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxVQUFJLElBQUUsR0FBRyxFQUFFLE9BQU0sRUFBRSxLQUFLO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBTSxRQUFPLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSwyQkFBMEIsQ0FBQyxHQUFFO0FBQUUsVUFBRyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLE1BQU07QUFBRSxhQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLEtBQUk7QUFBQSxJQUFDO0FBQUUsUUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxHQUFFLEtBQUssS0FBSyxNQUFNLFlBQVksRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFFLENBQUMsTUFBSSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBTyxRQUFPLEVBQUUsS0FBSyxLQUFLLEtBQUssV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLEdBQUUsS0FBSyxLQUFLLE1BQU0sV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxVQUFTLEVBQUUsaUJBQWdCLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsUUFBTyxHQUFFLEtBQUksRUFBQyxJQUFFLEtBQUssb0JBQW9CLENBQUM7QUFBRSxRQUFHLEVBQUUsZUFBYSxFQUFFLE1BQU0sUUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsY0FBYSxVQUFTLEVBQUUsT0FBTSxVQUFTLEVBQUUsV0FBVSxDQUFDLEdBQUU7QUFBRSxRQUFHLEVBQUUsS0FBSyxTQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sUUFBTyxFQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEtBQUssS0FBSyxNQUFNLFFBQU8sV0FBVSxNQUFHLE9BQU0sT0FBRyxNQUFLLFFBQU8sQ0FBQyxHQUFFO0FBQUUsUUFBRyxDQUFDLEtBQUssS0FBSyxRQUFNLEVBQUUsS0FBSyxTQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sR0FBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLFNBQVEsU0FBUSxLQUFLLEtBQUssTUFBTSxRQUFPLFdBQVUsTUFBRyxPQUFNLE9BQUcsTUFBSyxRQUFPLENBQUMsR0FBRSxFQUFFLE1BQU07QUFBRSxRQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFHLEtBQUssS0FBSztBQUFLLFVBQUcsQ0FBQyxFQUFFLFFBQU87QUFBSyxhQUFPLEVBQUUsT0FBTyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBSyxDQUFDLENBQUM7QUFBQSxJQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxDQUFDLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxPQUFPLE1BQU0sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsYUFBTyxHQUFHLFdBQVcsR0FBRSxDQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsUUFBTyxRQUFPLEdBQUcsV0FBVyxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxJQUFJLFFBQU87QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQUs7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFdBQU8sSUFBSSxJQUFHLEVBQUMsR0FBRyxLQUFLLE1BQUssTUFBSyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxNQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxPQUFNLE1BQU0sdURBQXVEO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLEdBQUUsVUFBUyxFQUFFLFVBQVMsTUFBSyxNQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLE1BQU0sWUFBVyxHQUFFO0FBQUEsRUFBQyxJQUFJLFlBQVc7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQU87QUFBQSxFQUFDLElBQUksY0FBYTtBQUFDLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBUztBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxLQUFJLEVBQUMsSUFBRSxLQUFLLG9CQUFvQixDQUFDO0FBQUUsUUFBRyxFQUFFLGVBQWEsRUFBRSxPQUFPLFFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGNBQWEsVUFBUyxFQUFFLFFBQU8sVUFBUyxFQUFFLFdBQVUsQ0FB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RSxNQUFNO0FBQUUsVUFBRSxJQUFJLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQSxNQUFDO0FBQUMsYUFBTSxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsV0FBVSxHQUFFLFNBQVEsR0FBRSxVQUFTLEVBQUUsUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxLQUFJLEVBQUMsSUFBRSxLQUFLLG9CQUFvQixDQUFDO0FBQUUsUUFBRyxFQUFFLGVBQWEsRUFBRSxJQUFJLFFBQU8sRUFBRSxHQUFFLEVBQUMsTUFBSyxFQUFFLGNBQWEsVUFBUyxFQUFFLEtBQUksVUFBUyxFQUFFLFdBQVUsQ0FBQyxHQUFFO0FBQUUsUUFBSSxJQUFFLEtBQUs7QUFBSyxRQUFHLEVBQUUsWUFBVSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssT0FBSyxFQUFFLFFBQVEsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsV0FBVSxTQUFRLEVBQUUsUUFBUSxPQUFNLE1BQUssT0FBTSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxRQUFRLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsWUFBVSxNQUFLO0FBQUMsVUFBRyxFQUFFLEtBQUssT0FBSyxFQUFFLFFBQVEsTUFBTSxHQUFFLEdBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUSxTQUFRLEVBQUUsUUFBUSxPQUFNLE1BQUssT0FBTSxXQUFVLE1BQUcsT0FBTSxPQUFHLFNBQVEsRUFBRSxRQUFRLFFBQU8sQ0FBQyxHQUFFLEVBQUUsTUFBTTtBQUFBLElBQUM7QUFBQyxRQUFJLElBQUUsS0FBSyxLQUFLO0FBQVUsYUFBUyxFQUFFLEdBQUU7QUFBQyxVQUFJLElBQUUsb0JBQUk7QUFBSSxlQUFRLEtBQUssR0FBRTtBQUFDLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsVUFBRSxJQUFJLEVBQUUsS0FBSztBQUFBLE1BQUM7QUFBQyxhQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFDO0FBQUEsSUFBQztBQUFDLFFBQUksSUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxPQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsRUFBRSxNQUFLLENBQUMsQ0FBQyxDQUFDO0FBQUUsUUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUM7QUFBQSxRQUFPLFFBQU8sRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUksSUFBRyxFQUFDLEdBQUcsS0FBSyxNQUFLLFNBQVEsRUFBQyxPQUFNLEdBQUUsU0FBUSxFQUFFLFNBQVMsQ0FBQyxFQUFDLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtBQUssTUFBSyxTQUFRLEVBQUMsT0FBTSxHQUFFLFNBQVEsRUFBRSxTQUFTLENBQUMsRUFBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLEdBQUUsQ0FBQyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsR0FBRyxTQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxXQUFVLEdBQUUsU0FBUSxNQUFLLFNBQVEsTUFBSyxVQUFTLEVBQUUsUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsY0FBYTtBQUFDLFVBQU0sR0FBRyxTQUFTO0FBQUUsU0FBSyxXQUFTLEtBQUs7QUFBQSxFQUFTO0FBQUEsRUFBQyxPQUFPLEdBQUU7QUFBQyxRQUFHLEVBQUMsS0FBSSxFQUFDLElBQUUsS0FBSyxvQkFBb0IsQ0FBQztBQUFFLFFBQUcsRUFBRSxlQUFhLEVBQUUsU0FBUyxRQUFPLEVBQUUsR0FBRSxFQUFDLE1BQUssRUFBRSxjQUFhLFVBQVMsRUFBRSxVQUFTLFVBQVMsRUFBRSxXQUFVLENBQUMsR0FBRTtBQUFFLGFBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxhQUFPLEdBQUcsRUFBQyxNQUFLLEdBQUUsTUFBSyxFQUFFLE1BQUssV0FBVSxDQUFDLEVBQUUsT0FBTyxvQkFBbUIsRUFBRSxnQkFBZSxHQUFHLEdBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssRUFBRSxtQkFBa0IsZ0JBQWUsRUFBQyxFQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGFBQU8sR0FBRyxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUUsTUFBSyxXQUFVLENBQUMsRUFBRSxPQUFPLG9CQUFtQixFQUFFLGdCQUFlLEdBQUcsR0FBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxXQUFVLEVBQUMsTUFBSyxFQUFFLHFCQUFvQixpQkFBZ0IsRUFBQyxFQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBSSxJQUFFLEVBQUMsVUFBUyxFQUFFLE9BQU8sbUJBQWtCLEdBQUUsSUFBRSxFQUFFO0FBQUssUUFBRyxLQUFLLEtBQUssbUJBQW1CLElBQUc7QUFBQyxVQUFJLElBQUU7QUFBSyxhQUFPLEdBQUcsa0JBQWtCLEdBQUU7QUFBQyxZQUFJLElBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsTUFBTSxFQUFFLEtBQUssS0FBSyxXQUFXLEdBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFJO0FBQUMsZ0JBQU0sRUFBRSxTQUFTLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRTtBQUFBLFFBQUMsQ0FBQyxHQUFFLElBQUUsTUFBTSxRQUFRLE1BQU0sR0FBRSxNQUFLLENBQUM7QUFBRSxlQUFPLE1BQU0sRUFBRSxLQUFLLFFBQVEsS0FBSyxLQUFLLFdBQVcsR0FBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQUk7QUFBQyxnQkFBTSxFQUFFLFNBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUEsSUFBQyxPQUFLO0FBQUMsVUFBSSxJQUFFO0FBQUssYUFBTyxHQUFHLFlBQVksR0FBRTtBQUFDLFlBQUksSUFBRSxFQUFFLEtBQUssS0FBSyxVQUFVLEdBQUUsQ0FBQztBQUFFLFlBQUcsQ0FBQyxFQUFFLFFBQVEsT0FBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFFLFlBQUksSUFBRSxRQUFRLE1BQU0sR0FBRSxNQUFLLEVBQUUsSUFBSSxHQUFFLElBQUUsRUFBRSxLQUFLLFFBQVEsVUFBVSxHQUFFLENBQUM7QUFBRSxZQUFHLENBQUMsRUFBRSxRQUFRLE9BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFBRSxlQUFPLEVBQUU7QUFBQSxNQUFJLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsYUFBWTtBQUFDLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBSTtBQUFBLEVBQUMsYUFBWTtBQUFDLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBTztBQUFBLEVBQUMsUUFBUSxHQUFFO0FBQUMsV0FBTyxJQUFJLElBQUcsRUFBQyxHQUFHLEtB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LE9BQU8sWUFBWSxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQztBQUFFLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTyxHQUFHLEVBQUUsS0FBSztBQUFFLFlBQUcsRUFBRSxVQUFRLFFBQVEsUUFBTyxHQUFHLEVBQUUsS0FBSztBQUFFLGVBQU87QUFBQSxNQUFDLENBQUM7QUFBQSxXQUFNO0FBQUMsWUFBRyxFQUFFLFVBQVEsVUFBVSxRQUFPO0FBQUUsWUFBSSxJQUFFLEtBQUssS0FBSyxPQUFPLFdBQVcsRUFBQyxNQUFLLEdBQUUsTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxZQUFHLEVBQUUsV0FBUyxVQUFVLFFBQU87QUFBRSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU8sR0FBRyxFQUFFLEtBQUs7QUFBRSxZQUFHLEVBQUUsVUFBUSxRQUFRLFFBQU8sR0FBRyxFQUFFLEtBQUs7QUFBRSxlQUFPO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsU0FBTyxjQUFhO0FBQUMsVUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFlBQUksSUFBRSxFQUFFLFdBQVcsR0FBRSxDQUFDO0FBQUUsWUFBRyxFQUFFLE9BQU8sTUFBTSxRQUFPLFFBQVEsUUFBUSxDQUFDO0FBQUUsWUFBRyxhQUFhLFFBQVEsT0FBTSxNQUFNLDJGQUEyRjtBQUFFLGVBQU87QUFBQSxNQUFDO0FBQUUsVUFBRyxFQUFFLE9BQU8sVUFBUSxPQUFHO0FBQUMsWUFBSSxJQUFFLEtBQUssS0FBSyxPQUFPLFdBQVcsRUFBQyxNQUFLLEVBQUUsTUFBSyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQztBQUFFLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsZUFBTyxFQUFFLEVBQUUsS0FBSyxHQUFFLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLE1BQUs7QUFBQSxNQUFDLE1BQU0sUUFBTyxLQUFLLEtBQUssT0FBTyxZQUFZLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLFlBQUcsRUFBRSxXQUFTLFVBQVUsUUFBTztBQUFFLFlBQUcsRUFBRSxXQUFTLFFBQVEsR0FBRSxNQUFNO0FBQUUsZUFBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssTUFBSTtBQUFDLGlCQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU0sT0FBTSxFQUFFLE1BQUs7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFHLEVBQUUsT0FBTyxVQUFRLE9BQUc7QUFBQyxVQUFJLElBQUUsS0FBSyxLQUFLLE9BQU8sV0FBVyxFQUFDLE1BQUssRUFBRSxNQUFLLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUUsVUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxVQUFJLElBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsT0FBTSxNQUFNLGlHQUFpRztBQUFFLGFBQU0sRUFBQyxRQUFPLEVBQUUsT0FBTSxPQUFNLEVBQUM7QUFBQSxJQUFDLE1BQU0sUUFBTyxLQUFLLEtBQUssT0FBTyxZQUFZLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLFVBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsYUFBTyxRQUFRLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBSyxFQUFDLFFBQU8sRUFBRSxPQUFNLE9BQU0sRUFBQyxFQUFFO0FBQUEsSUFBQyxDQUFDO0FBQUUsT0FBRyxZQUFZLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxHQUFHLFNBQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsUUFBTyxHQUFFLFVBQVMsRUFBRSxZQUFXLFFBQU8sR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFFLEdBQUcsdUJBQXFCLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLFFBQU8sR0FBRSxRQUFPLEVBQUMsTUFBSyxjQUFhLFdBQVUsRUFBQyxHQUFFLFVBQVMsRUFBRSxZQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLGNBQWlCLEdBQUU7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFFBQUcsS0FBSyxTQUFTLENBQUMsTUFBSSxFQUFFLFVBQVUsUUFBTyxHQUFHLE1BQU07QUFBRSxXQUFPLEtBQUssS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVE7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQVM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsV0FBVSxHQUFFLFVBQVMsRUFBRSxhQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLGNBQWlCLEdBQUU7QUFBQSxFQUFDLE9BQU8sR0FBRTtBQUFDLFFBQUcsS0FBSyxTQUFTLENBQUMsTUFBSSxFQUFFLEtBQUssUUFBTyxHQUFHLElBQUk7QUFBRSxXQUFPLEtBQUssS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVE7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQVM7QUFBQztBQUFDLEdBQUcsU0FBTyxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsV0FBVSxHQUFFLFVBQVMsRUFBRSxhQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUUsSUFBTSxLQUFOLGNBQWlC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QU8sS0FBSyxLQUFLLEtBQUssT0FBTyxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFNBQVE7QUFBQyxXQUFPLEtBQUssS0FBSztBQUFBLEVBQUk7QUFBQztBQUFDLElBQU0sS0FBTixNQUFNLFlBQVcsR0FBRTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsUUFBRyxFQUFDLFFBQU8sR0FBRSxLQUFJLEVBQUMsSUFBRSxLQUFLLG9CQUFvQixDQUFDO0FBQUUsUUFBRyxFQUFFLE9BQU8sTUFBTSxTQUFPLFlBQVM7QUFBQyxVQUFJLElBQUUsTUFBTSxLQUFLLEtBQUssR0FBRyxZQUFZLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxVQUFHLEVBQUUsV0FBUyxVQUFVLFFBQU87QUFBRSxVQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU8sRUFBRSxNQUFNLEdBQUUsR0FBRyxFQUFFLEtBQUs7QUFBQSxVQUFPLFFBQU8sS0FBSyxLQUFLLElBQUksWUFBWSxFQUFDLE1BQUssRUFBRSxPQUFNLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUEsSUFBQyxHQUFHO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxLQUFLLEtBQUssR0FBRyxXQUFXLEVBQUMsTUFBSyxFQUFFLE1BQUssTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFDLENBQUM7QUFBRSxVQUFHLEVBQUUsV0FBUyxVQUFVLFFBQU87QUFBRSxVQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU8sRUFBRSxNQUFNLEdBQUUsRUFBQyxRQUFPLFNBQVEsT0FBTSxFQUFFLE1BQUs7QUFBQSxVQUFPLFFBQU8sS0FBSyxLQUFLLElBQUksV0FBVyxFQUFDLE1BQUssRUFBRSxPQUFNLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBQyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU8sT0FBTyxHQUFFLEdBQUU7QUFBQyxXQUFPLElBQUks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Z0IsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE9B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O0FBQUUsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLEVBQUMsSUFBSSxRQUFPO0FBQUM7QUFBQyxVQUFJLElBQUUsRUFBRTtBQUFFLGFBQU8sT0FBTyxlQUFlLE1BQUssU0FBUSxFQUFDLE9BQU0sRUFBQyxDQUFDLEdBQUU7QUFBQSxJQUFDO0FBQUMsVUFBTSxNQUFNLDBCQUEwQjtBQUFBLEVBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE1BQUksUUFBTSxNQUFJO0FBQU07QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsU0FBUyxHQUFHLElBQUUsRUFBRSxTQUFPLElBQUUsRUFBRTtBQUFPLFNBQU8sRUFBRSxNQUFNLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUcsSUFBSSxRQUFPLEtBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFHLElBQUksUUFBTyxJQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFPLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEtBQUksRUFBRSxDQUFDO0FBQUUsU0FBTyxJQUFFLElBQUUsTUFBSTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE1BQUs7QUFBQztBQUFDLFVBQUksSUFBRSxFQUFFO0FBQUUsYUFBTyxFQUFFLENBQUMsSUFBRSxHQUFFO0FBQUEsSUFBQztBQUFDLFVBQU0sTUFBTSwwQkFBMEI7QUFBQSxFQUFDLEdBQUUsSUFBSSxHQUFFO0FBQUMsV0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE9BQU0sRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLGNBQWEsS0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsT0FBTSxHQUFFLFVBQVMsTUFBRyxZQUFXLE1BQUcsY0FBYSxLQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsU0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksSUFBSSxDQUFDLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsT0FBTyxLQUFLLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUM7QUFBRSxTQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUksR0FBRSxFQUFFLENBQUMsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxJQUFFLElBQUc7QUFBQyxNQUFJLElBQUU7QUFBRyxXQUFRLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBSSxNQUFHLDZCQUE2QixLQUFLLE1BQU0sS0FBSyxPQUFPLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEtBQUssVUFBVSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBTSxvQkFBa0IsTUFBTSxvQkFBa0IsSUFBSSxNQUFJO0FBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sT0FBTyxNQUFJLFlBQVUsTUFBSSxRQUFNLENBQUMsTUFBTSxRQUFRLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxHQUFHLE1BQUk7QUFBQyxNQUFHLE9BQU8sWUFBVSxPQUFLLFdBQVcsV0FBVyxTQUFTLFlBQVksRUFBRSxRQUFNO0FBQUcsTUFBRztBQUFDLFdBQU8sSUFBSSxTQUFTLEVBQUUsR0FBRTtBQUFBLEVBQUUsU0FBTyxHQUFFO0FBQUMsV0FBTTtBQUFBLEVBQUU7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxNQUFJLE1BQUcsUUFBTTtBQUFHLE1BQUksSUFBRSxFQUFFO0FBQVksTUFBRyxNQUFJLE9BQU8sUUFBTTtBQUFHLE1BQUksSUFBRSxFQUFFO0FBQVUsTUFBRyxHQUFHLENBQUMsTUFBSSxNQUFHLFFBQU07QUFBRyxNQUFHLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxlQUFlLE1BQUksTUFBRyxRQUFNO0FBQUcsU0FBTTtBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUU7QUFBRSxXQUFRLEtBQUssRUFBRSxLQUFHLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxDQUFDLEVBQUU7QUFBSSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBSSxJQUFFLE9BQU87QUFBRSxVQUFPLEdBQUU7QUFBQSxJQUFDLEtBQUk7QUFBWSxhQUFNO0FBQUEsSUFBWSxLQUFJO0FBQVMsYUFBTTtBQUFBLElBQVMsS0FBSTtBQUFTLGFBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsSUFBUyxLQUFJO0FBQVUsYUFBTTtBQUFBLElBQVUsS0FBSTtBQUFXLGFBQU07QUFBQSxJQUFXLEtBQUk7QUFBUyxhQUFNO0FBQUEsSUFBUyxLQUFJO0FBQVMsYUFBTTtBQUFBLElBQVMsS0FBSTtBQUFTLFVBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsVUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFVBQUcsRUFBRSxRQUFNLE9BQU8sRUFBRSxTQUFPLGNBQVksRUFBRSxTQUFPLE9BQU8sRUFBRSxVQUFRLFdBQVcsUUFBTTtBQUFVLFVBQUcsT0FBTyxNQUFJ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LFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLGtEQUFrRDtBQUFFLE1BQUksSUFBRSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksSUFBSSxRQUFPO0FBQUMsUUFBSSxJQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxPQUFNLEdBQUcsRUFBQztBQUFFLFdBQU8sR0FBRyxNQUFLLFNBQVEsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLFFBQU8sQ0FBQyxFQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxJQUFJLFFBQU87QUFBQyxRQUFJLElBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLE9BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxNQUFLO0FBQUUsV0FBTyxHQUFHLE1BQUssU0FBUSxDQUFDLEdBQUU7QUFBQSxFQUFDLEdBQUUsVUFBUyxFQUFFLEtBQUssSUFBSSxVQUFTLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLEtBQUssSUFBSSxPQUFNLElBQUUsRUFBQyxHQUFHLEVBQUM7QUFBRSxNQUFHLEVBQUUsVUFBUSxLQUFLLEdBQUU7QUFBQyxRQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU0sTUFBTSxzQkFBc0IsQ0FBQyxHQUFHO0FBQUUsUUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQVMsTUFBRSxDQUFDLElBQUUsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUEsRUFBQztBQUFBLE1BQU0sVUFBUSxLQUFLLEVBQUUsR0FBRSxDQUFDLElBQUUsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxLQUFJLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUksT0FBTSxJQUFFLEVBQUMsR0FBRyxFQUFDO0FBQUUsTUFBRyxFQUFFLFVBQVEsS0FBSyxHQUFFO0FBQUMsUUFBRyxFQUFFLEtBQUssR0FBRyxPQUFNLE1BQU0sc0JBQXNCLENBQUMsR0FBRztBQUFFLFFBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUFTLE1BQUUsQ0FBQyxJQUFFLElBQUksRUFBRSxFQUFDLE1BQUssZUFBYyxXQUFVLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsTUFBTSxVQUFRLEtBQUssRUFBRSxHQUFFLENBQUMsSUFBRSxJQUFJLEVBQUUsRUFBQyxNQUFLLGVBQWMsV0FBVSxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUUsU0FBTyxHQUFHLEdBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxLQUFJLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxJQUFFLEdBQUU7QUFBQyxXQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTyxRQUFPLElBQUksS0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQVcsS0FBRyxRQUFNO0FBQUcsU0FBTTtBQUFFO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sRUFBRSxJQUFJLENBQUMsTUFBSTtBQUFDLFFBQUk7QUFBRSxZQUFPLElBQUUsR0FBRyxTQUFPLEVBQUUsT0FBSyxDQUFDLElBQUcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxHQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sT0FBTyxNQUFJLFdBQVMsSUFBRSxHQUFHO0FBQU87QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxHQUFHLEdBQUUsTUFBSyxFQUFFLFFBQU0sQ0FBQyxFQUFDO0FBQUUsTUFBRyxDQUFDLEVBQUUsU0FBUTtBQUFDLFFBQUksSUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsS0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsS0FBRyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsS0FBRyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsS0FBRztBQUFnQixNQUFFLFVBQVE7QUFBQSxFQUFDO0FBQUMsTUFBRyxPQUFPLEVBQUUsTUFBSyxPQUFPLEVBQUUsVUFBUyxDQUFDLEdBQUcsWUFBWSxRQUFPLEVBQUU7QUFBTSxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUcsYUFBYSxJQUFJLFFBQU07QUFBTSxNQUFHLGFBQWEsSUFBSSxRQUFNO0FBQU0sTUFBRyxhQUFhLEtBQUssUUFBTTtBQUFPLFNBQU07QUFBUztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxNQUFHLE9BQU8sTUFBSSxTQUFTLFFBQU07QUFBUyxTQUFNO0FBQVM7QUFBQyxTQUFTLE1BQU0sR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUUsTUFBRyxPQUFPLE1BQUksU0FBUyxRQUFNLEVBQUMsU0FBUSxHQUFFLE1BQUssVUFBUyxPQUFNLEdBQUUsTUFBSyxFQUFDO0FBQUUsU0FBTSxFQUFDLEdBQUcsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLE9BQU8sUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRSxDQUFDLE1BQUk7QUFBQyxXQUFPLE9BQU8sTUFBTSxPQUFPLFNBQVMsR0FBRSxFQUFFLENBQUM7QUFBQSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBSSxFQUFFLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBTSxLQUFOLE1BQVE7QUFBQSxFQUFDLGVBQWUsR0FBRTtBQUFBLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsT0FBSyxhQUFZLE9BQU8sZUFBZSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUUsTUFBSyxZQUFXLE1BQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZSxHQUFFLFVBQVMsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxXQUFVLEVBQUMsTUFBSztBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsSUFBRyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsS0FBRSxDQUFDO0FBQUM7QUFBaFAsSUFBa1AsS0FBRyxFQUFFLGFBQVksRUFBRTtBQUFyUSxJQUF1USxLQUFHLEVBQUUsYUFBWSxJQUFHLEVBQUMsUUFBTyxNQUFLLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxJQUFFLENBQUMsTUFBSSxFQUFFLFNBQVE7QUFBQyxNQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFLFdBQVEsS0FBSyxFQUFFLE9BQU8sS0FBRyxFQUFFLEtBQUssU0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBTyxHQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFBRSxTQUFNLEVBQUMsWUFBVyxHQUFFLGFBQVksRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLFdBQU8sRUFBRTtBQUFBLEVBQU8sR0FBRSxJQUFFLEVBQUMsU0FBUSxDQUFDLEVBQUMsR0FBRSxJQUFFLENBQUMsTUFBSTtBQUFDLGFBQVEsS0FBSyxFQUFFLE9BQU8sS0FB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QUUsTUFBSTtBQUFDLE1BQUksSUFBRSxJQUFFLE9BQU8sT0FBTyxHQUFFLEVBQUMsT0FBTSxLQUFFLENBQUMsSUFBRSxFQUFDLE9BQU0sS0FBRSxHQUFFLElBQUUsRUFBRSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsTUFBRyxhQUFhLFFBQVEsS0FBRSxNQUFNO0FBQUUsU0FBTyxFQUFFLE9BQU8sU0FBTyxFQUFDLFNBQVEsT0FBRyxPQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUUsRUFBQyxTQUFRLE1BQUcsTUFBSyxFQUFFLE1BQUs7QUFBQztBQUFyZ0MsSUFBdWdDLEtBQUcsR0FBRyxFQUFFO0FBQUUsSUFBSSxLQUFHLENBQUM7QUFBRSxHQUFHLElBQUcsRUFBQyxLQUFJLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxrQkFBaUIsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLE1BQUssTUFBSSxJ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LEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUM7QUFBRSxNQUFHLENBQUMsR0FBRSxDQUFDLElBQUUsR0FBRyxFQUFFLE1BQU07QUFBRSxJQUFFLEtBQUssU0FBUyxLQUFLLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLEtBQUs7QUFBSSxNQUFFLFNBQU8sRUFBRSxRQUFPLEVBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUTtBQUFBLEVBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sUUFBRyxJQUFFLEVBQUUsR0FBRSxPQUFPLEtBQUssRUFBQyxRQUFPLFVBQVMsT0FBTSxHQUFFLE1BQUssYUFBWSxTQUFRLEdBQUUsV0FBVSxNQUFHLE1BQUssR0FBRSxVQUFTLENBQUMsRUFBRSxNQUFLLENBQUM7QUFBRSxRQUFHLElBQUUsRUFBRSxHQUFFLE9BQU8sS0FBSyxFQUFDLFFBQU8sVUFBUyxPQUFNLEdBQUUsTUFBSyxXQUFVLFNBQVEsR0FBRSxNQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQTMxRixJQUE2MUYsS0FBRyxFQUFFLG9CQUFtQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssT0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFdBQU0sQ0FBQyxHQUFHLENBQUMsS0FBRyxFQUFFLFNBQU87QUFBQSxFQUFNLEdBQUUsRUFBRSxLQUFLLFNBQVMsS0FBSyxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxLQUFLLElBQUksV0FBUyxPQUFPO0FBQWtCLFFBQUcsRUFBRSxVQUFRLEVBQUUsR0FBRSxLQUFLLElBQUksVUFBUSxFQUFFO0FBQUEsRUFBTyxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLEVBQUUsUUFBTSxFQUFFLFFBQVE7QUFBTyxNQUFFLE9B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QUFTLEtBQUssQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsS0FBSztBQUFJLE1BQUUsYUFBVyxFQUFFLFdBQVMsb0JBQUksUUFBSyxFQUFFLFNBQVMsSUFBSSxDQUFDO0FBQUEsRUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBRyxFQUFFLE1BQU0sU0FBUyxFQUFFLE1BQU0sRUFBRTtBQUFPLE1BQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxVQUFTLE1BQUssa0JBQWlCLFFBQU8sYUFBWSxRQUFPLEVBQUUsUUFBTyxPQUFNLEVBQUUsT0FBTSxNQUFLLEdBQUUsVUFBUyxDQUFDLEVBQUUsTUFBSyxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsT0FBTyxPQUFPLEdBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxxQkFBb0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsT0FBTyxLQUFLLElBQUksRUFBQyxPQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUMsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxFQUFFLFFBQVEsQ0FBQztBQUFFLE9BQUcsR0FBRSxHQUFFLEVBQUUsUUFBUTtBQUFFO0FBQUEsRUFBTTtBQUFDLENBQUM7QUFBak8sSUFBbU8sS0FBRyxFQUFFLHFCQUFvQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUM7QUFBRSxNQUFJLElBQUUsSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUFFLElBQUUsS0FBSyxTQUFTLEtBQUssQ0FBQyxNQUFJO0FBQUMsTUFBRSxLQUFLLElBQUksT0FBSyxFQUFFO0FBQUEsRUFBSSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBRyxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksRUFBRTtBQUFPLE1BQUUsT0FBTyxLQUFLLEVBQUMsTUFBSyxpQkFBZ0IsUUFBTyxFQUFFLE1BQUssT0FBTSxFQUFFLE1BQU0sTUFBSyxNQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQTNkLElBQTZkLEtBQUcsRUFBRSxzQkFBcUIsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsTUFBRSxRQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUs7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLElBQU0sS0FBTixNQUFRO0FBQUEsRUFBQyxZQUFZLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxLQUFLLFVBQVEsQ0FBQyxHQUFFLEtBQUssU0FBTyxHQUFFLEtBQUssTUFBSyxPQUFLO0FBQUEsRUFBQztBQUFBLEVBQUMsU0FBUyxHQUFFO0FBQUMsU0FBSyxVQUFRLEdBQUUsRUFBRSxJQUFJLEdBQUUsS0FBSyxVQUFRO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxHQUFFO0FBQUMsUUFBRyxPQUFPLE1BQUksWUFBVztBQUFDLFFBQUUsTUFBSyxFQUFDLFdBQVUsT0FBTSxDQUFDLEdBQUUsRUFBRSxNQUFLLEVBQUMsV0FBVSxRQUFPLENBQUM7QUFBRTtBQUFBLElBQU07QUFBQyxRQUFJLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDdHRhLEVBQUUsT0FBTyxDQUFDLE1BQUksQ0FBQyxHQUFFLElBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBSSxFQUFFLFNBQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFPLENBQUMsSUFBRSxDQUFDO0FBQUUsYUFBUSxLQUFLLEVBQUUsTUFBSyxRQUFRLEtBQUssQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLFVBQVM7QUFBQyxRQUFJLElBQUUsVUFBUyxJQUFFLE1BQU0sTUFBSyxJQUFFLENBQUMsSUFBSSxNQUFNLFdBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUFFLFdBQU8sSUFBSSxFQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUs7QUFBQSxDQUM1UixDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUMsT0FBTSxHQUFFLE9BQU0sR0FBRSxPQUFNLEVBQUM7QUFBRSxJQUFJLElBQUUsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsTUFBSTtBQUFFLFFBQUksSUFBRSxDQUFDLElBQUcsRUFBRSxLQUFLLE1BQUksR0FBRSxFQUFFLEtBQUssTUFBSSxFQUFFLEtBQUssT0FBSyxDQUFDLEdBQUUsRUFBRSxLQUFLLFVBQVE7QUFBRyxNQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLFVBQVEsQ0FBQyxDQUFDO0FBQUUsTUFBRyxFQUFFLEtBQUssT0FBTyxJQUFJLFdBQVcsRUFBRSxHQUFFLFFBQVEsQ0FBQztBQUFFLFdBQVEsS0FBSyxFQUFFLFVBQVEsS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsV0FBUyxFQUFFLEVBQUMsSUFBRSxFQUFFLE1BQU0sYUFBVyxFQUFFLFdBQVMsQ0FBQyxJQUFHLEVBQUUsS0FBSyxVQUFVLEtBQUssTUFBSTtBQUFDLE1BQUUsS0FBSyxNQUFJLEVBQUUsS0FBSztBQUFBLEVBQUssQ0FBQztBQUFBLE9BQU07QUFBQyxRQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFVBQUksSUFBRSxHQUFHLENBQUMsR0FBRTtBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUMsWUFBRyxFQUFFLEtBQUssTUFBSztBQUFDLGNBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFBQSxRQUFRLFdBQVMsRUFBRTtBQUFTLFlBQUksSUFBRSxFQUFFLE9BQU8sUUFBTyxJQUFFLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFBRSxZQUFHLGFBQWEsV0FBUyxHQUFHLFVBQVEsTUFBRyxPQUFNLElBQUk7QUFBRyxZQUFHLEtBQUcsYUFBYSxRQUFRLE1BQUcsS0FBRyxRQUFRLFFBQVEsR0FBRyxLQUFLLFlBQVM7QUFBQyxjQUFHLE1BQU0sR0FBRSxFQUFFLE9BQU8sV0FBUyxFQUFFO0FBQU8sY0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLFFBQUMsQ0FBQztBQUFBLGFBQU07QUFBQyxjQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUU7QUFBUyxjQUFHLENBQUMsRUFBRSxLQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxVQUFHLEVBQUUsUUFBTyxFQUFFLEtBQUssTUFBSTtBQUFDLGVBQU87QUFBQSxNQUFDLENBQUM7QUFBRSxhQUFPO0FBQUEsSUFBQztBQUFFLE1BQUUsS0FBSyxNQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsS0FBSyxNQUFNLEdBQUUsQ0FBQztBQUFFLFVBQUcsYUFBYSxTQUFRO0FBQUMsWUFBRyxFQUFFLFVBQVEsTUFBRyxPQUFNLElBQUk7QUFBRyxlQUFPLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsSUFBRSxXQUFXLElBQUUsRUFBQyxVQUFTLENBQUMsTUFBSTtBQUFDLFFBQUc7QUFBQyxVQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxhQUFPLEVBQUUsVUFBUSxFQUFDLE9BQU0sRUFBRSxLQUFJLElBQUUsRUFBQyxRQUFPLEVBQUUsT0FB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a0JBQWdCO0FBQUEsRUFBVyxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBRyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQU8sTUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGtCQUFpQixRQUFPLGFBQVksT0FBTSxFQUFFLE9BQU0sTUFBSyxHQUFFLFVBQVMsQ0FBQyxFQUFFLE1BQUssQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQXZSLElBQXlSLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxZQUFVLEVBQUUsVUFBUSxLQUFJLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsSUFBRSxNQUFLO0FBQUMsTUFBRztBQUFDLFFBQUksSUFBRSxFQUFFLE1BQU0sR0FBRztBQUFFLFFBQUcsRUFBRSxXQUFTLEVBQUUsUUFBTTtBQUFHLFFBQUcsQ0FBQyxDQUFDLElBQUU7QUFBRSxRQUFHLENBQUMsRUFBRSxRQUFNO0FBQUcsUUFBSSxJQUFFLEtBQUssTUFBTSxLQUFLLENBQUMsQ0FBQztBQUFFLFFBQUcsU0FBUSxLQUFHLEdBQUcsUUFBTSxNQUFNLFFBQU07QUFBRyxRQUFHLENBQUMsRUFBRSxJQUFJLFFBQU07QUFBRyxRQUFHLE1BQUksRUFBRSxTQUFRLE1BQUksRUFBRSxRQUFNLEdBQUcsUUFBTTtBQUFHLFdBQU07QUFBQSxFQUFFLFFBQU07QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsV0FBVSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLE1BQUk7QUFBQyxRQUFHLEdBQUcsRUFBRSxPQUFNLEVBQUUsR0FBRyxFQUFFO0FBQU8sTUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGtCQUFpQixRQUFPLE9BQU0sT0FBTSxFQUFFLE9BQU0sTUFBSyxHQUFFLFVBQVMsQ0FBQyxFQUFFLE1BQUssQ0FBQztBQUFBLEVB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LENBQUMsT0FBTyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsUUFBTztBQUFFLFdBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLFFBQU8sTUFBSyxnQkFBZSxPQUFNLEdBQUUsR0FBRyxJQUFFLEVBQUMsVUFBUyxlQUFjLElBQUUsQ0FBQyxHQUFFLE1BQUssRUFBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxJQUFFLE1BQU0sQ0FBQyxJQUFFLEVBQUU7QUFBSztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLFNBQVEsTUFBSyxnQkFBZSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLE1BQUUsUUFBTSxNQUFNLEVBQUUsTUFBTTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsYUFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE9BQU8sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtB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TUFBSztBQUFDLFlBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsS0FBSyxVQUFRLGNBQVksRUFBRSxLQUFLLFdBQVM7QUFBVyxZQUFHLGNBQWMsUUFBUSxHQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBSyxLQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsaUJBQVUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFPLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxTQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUMsSUFBRTtBQUFFLFFBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLE1BQUssSUFBRSxFQUFFLElBQUk7QUFBSyxhQUFRLEtBQUssT0FBTyxLQUFLLENBQUMsR0FBRTtBQUFDLFVBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtBQUFTLFVBQUcsTUFBSSxTQUFRO0FBQUMsVUFBRSxLQUFLLENBQUM7QUFBRTtBQUFBLE1BQVE7QUFBQyxVQUFJLElBQUUsRUFBRSxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxVQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFVBQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxHQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUsscUJBQW9CLE1BQUssR0FBRSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxPQUFPLFFBQU87QUFBRSxXQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJO0FBQUMsYUFBTztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxXQUFRLEtBQUssRUFBRSxLQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTyxFQUFFLFFBQU0sRUFBRSxPQUFNO0FBQUUsU0FBTyxFQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUssaUJBQWdCLE9BQU0sRUFBRSxPQUFNLE1BQUssR0FBRSxRQUFPLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssU0FBUSxNQUFJLEVBQUUsUUFBUSxLQUFLLENBQUMsTUFBSSxFQUFFLEtBQUssVUFBUSxVQUFVLElBQUUsYUFBVyxNQUFNLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJLEVBQUUsUUFBUSxLQUFLLENBQUMsTUFBSSxFQUFFLEtBQUssV0FBUyxVQUFVLElBQUUsYUFBVyxNQUFNLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJO0FBQUMsUUFBRyxFQUFFLFFBQVEsTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxRQUFPLElBQUksSUFBSSxFQUFFLFFBQVEsUUFBUSxDQUFDLE1BQUksTUFBTSxLQUFLLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUFFO0FBQUEsRUFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssV0FBVSxNQUFJO0FBQUMsUUFBRyxFQUFFLFFBQVEsTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFLLE9BQU8s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LEdBQUUsR0FBRyxFQUFDO0FBQUUsYUFBUSxLQUFLLEdBQUU7QUFBQyxVQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFFLFVBQUcsQ0FBQyxFQUFFLE1BQU0sUUFBTSxFQUFDLE9BQU0sT0FBRyxnQkFBZSxDQUFDLEdBQUUsR0FBRyxFQUFFLGNBQWMsRUFBQztBQUFFLFFBQUUsQ0FBQyxJQUFFLEVBQUU7QUFBQSxJQUFJO0FBQUMsV0FBTSxFQUFDLE9BQU0sTUFBRyxNQUFLLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxNQUFNLFFBQVEsQ0FBQyxLQUFHLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxRQUFHLEVBQUUsV0FBUyxFQUFFLE9BQU8sUUFBTSxFQUFDLE9BQU0sT0FBRyxnQkFBZSxDQUFDLEVBQUM7QUFBRSxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxVQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEVBQUUsTUFBTSxRQUFNLEVBQUMsT0FBTSxPQUFHLGdCQUFlLENBQUMsR0FBRSxHQUFHLEVBQUUsY0FBYyxFQUFDO0FBQUUsUUFBRSxLQUFLLEVBQUUsSUFBSTtBQUFBLElBQUM7QUFBQyxXQUFNLEVBQUMsT0FBTSxNQUFHLE1BQUssRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsT0FBTSxPQUFHLGdCQUFlLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUFFLE1BQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxFQUFFLE1BQU07QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxNQUFJLElBQUUsR0FBRyxFQUFFLE9BQU0sRUFBRSxLQUFLO0FBQUUsTUFBRyxDQUFDLEVBQUUsTUFBTSxPQUFNLE1BQU0sd0NBQXdDLEtBQUssVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUFFO0FBQUUsU0FBTyxFQUFFLFFBQU0sRUFBRSxNQUFLO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxhQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLE9BQU0sSUFBRSxFQUFFLFNBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLE1BQUksRUFBRSxLQUFLLFVBQVEsVUFBVTtBQUFFLElBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFPLEVBQUUsT0FBTyxLQUFLLEVBQUMsT0FBTSxHQUFFLE1BQUssR0FBRSxVQUFTLFNBQVEsTUFBSyxlQUFjLENBQUMsR0FBRTtBQUFFLE1BQUUsUUFBTSxDQUFDO0FBQUUsUUFBSSxJQUFFLENBQUM7QUFBRSxRQUFHLENBQUMsRUFBRSxNQUFLO0FBQUMsVUFBSSxJQUFFLEVBQUUsU0FBTyxFQUFFLFFBQU8sSUFBRSxFQUFFLFNBQU8sSUFBRTtBQUFFLFVBQUcsS0FBRyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxPQUFNLEdBQUUsTUFBSyxHQUFFLFFBQU8sU0FBUSxHQUFHLElBQUUsRUFBQyxNQUFLLFdBQVUsU0FBUSxFQUFFLE9BQU0sSUFBRSxFQUFDLE1BQUssYUFBWSxTQUFRLEVBQUUsT0FBTSxFQUFDLENBQUMsR0FBRTtBQUFBLElBQUM7QUFBQyxRQUFJLElBQUU7QUFBRyxhQUFRLEtBQUssR0FBRTtBQUFDLFVBQUcsS0FBSSxLQUFHLEVBQUUsUUFBTztBQUFDLFlBQUcsS0FBRyxFQUFFO0FBQUEsTUFBUTtBQUFDLFVBQUksSUFBRSxFQUFFLEtBQUssSUFBSSxFQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE1BQUs7QUFBQyxVQUFJLElBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTTtBQUFFLGVBQVEsS0FBSyxHQUFFO0FBQUM7QUFBSSxZQUFJLElBQUUsRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFDLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxZQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFlBQU8sSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE9BQU8sUUFBTyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBSSxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLElBQUUsTUFBTSxDQUFDLElBQUUsRUFBRTtBQUFLO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFO0FBQU0sUUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLFVBQVMsTUFBSyxnQkFBZSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsUUFBRyxFQUFFLFFBQVEsS0FBSyxRQUFPO0FBQUMsVUFBSSxJQUFFLEVBQUUsUUFBUSxLQUFLO0FBQU8sUUFBRSxRQUFNLENBQUM7QUFBRSxlQUFRLEtBQUssRUFBRSxLQUFHLE9BQU8sTUFBSSxZQUFVLE9BQU8sTUFBSSxZQUFVLE9BQU8sTUFBSSxVQUFTO0FBQUMsWUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEVBQUUsQ0FBQyxHQUFFLFFBQU8sQ0FBQyxFQUFDLEdBQUUsQ0FBQztBQUFFLFlBQUcsYUFBYSxRQUFRLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFJO0FBQUMsY0FBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLFlBQUUsTUFBTSxDQUFDLElBQUUsRUFBRTtBQUFBLFFBQUssQ0FBQyxDQUFDO0FBQUEsYUFBTTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sQ0FBQyxJQUFFLEVBQUU7QUFBQSxRQUFLO0FBQUEsTUFBQztBQUFDLFVBQUk7QUFBRSxlQUFRLEtBQUssRUFBRSxLQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUUsVUFBRyxLQUFHLEVBQUUsU0FBTyxFQUFFLEdBQUUsT0FBTyxLQUFLLEVBQUMsTUFBSyxxQkFBb0IsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLEVBQUMsQ0FBQztBQUFBLElBQUMsT0FBSztBQUFDLFFBQUUsUUFBTSxDQUFDO0FBQUUsZUFBUSxLQUFLLFFBQVEsUUFBUSxDQUFDLEdBQUU7QUFBQyxZQUFHLE1BQUksWUFBWTtBQUFTLFlBQUksSUFBRSxFQUFFLFFBQVEsS0FBSyxJQUFJLEVBQUMsT0FBTSxHQUFFLFFBQU8sQ0FBQyxFQUFDLEdBQUUsQ0FBQztBQUFFLFlBQUcsYUFBYSxRQUFRLE9BQU0sTUFBTSxzREFBc0Q7QUFBRSxZQUFHLEVBQUUsT0FBTyxRQUFPO0FBQUMsWUFBRSxPQUFPLEtBQUssRUFBQyxRQUFPLFVBQVMsTUFBSyxlQUFjLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsT0FBTSxHQUFFLE1BQUssQ0FBQyxDQUFDLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFNO0FBQUEsUUFBUTtBQUFDLFlBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEVBQUMsT0FBTSxFQUFFLENBQUMsR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUM7QUFBRSxZQUFHLGFBQWEsUUFBUSxHQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFBLFFBQUssQ0FBQyxDQUFDO0FBQUEsYUFBTTtBQUFDLGNBQUcsRUFBRSxPQUFPLE9BQU8sR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxZQUFFLE1BQU0sRUFBRSxLQUFLLElBQUUsRUFBRTtBQUFBLFFBQUs7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxPQUFPLFFBQU8sUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQUksQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUE3M0MsSUFBKzNDLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUU7QUFBTSxRQUFHLEVBQUUsYUFBYSxLQUFLLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxVQUFTLE9BQU0sTUFBSyxnQkFBZSxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFFLFFBQUksSUFBRSxDQUFDO0FBQUUsTUFBRSxRQUFNLG9CQUFJO0FBQUksYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFDLE9BQU0sR0FBRSxRQUFPLENBQUMsRUFBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFdBQVMsYUFBYSxRQUFRLEdBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUUsQ0FBQyxNQUFJO0FBQUMsV0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBQyxDQUFDLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxPQUFPLE9BQU8sS0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUFPLEdBQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxPQUFNLE1BQUssZUFBYyxPQUFNLEdBQUUsTUFBSyxHQUFFLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztBQUFFLE1BQUcsRUFBRSxPQUFPLE9BQU8sS0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRSxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUFPLEdBQUUsT0FBTyxLQUFLLEVBQUMsUUFBTyxPQUFNLE1BQUssbUJBQWtCLE9BQU0sR0FBRSxNQUFLLEdBQUUsS0FBSSxHQUFFLFFBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztBQUFFLElBQUUsTUFBTSxJQUFJLEVBQUUsT0FBTSxFQUFFLEtBQUs7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxhQUFhLEtBQUssUUFBTyxFQUFFLE9BQU8sS0FBSyxFQUFDLE9BQU0sR0FBRSxNQUFLLEdBQUUsVUFBUyxPQUFNLE1BQUssZUFBYyxDQUFDLEdBQUU7QUFBRSxRQUFJLElBQUUsQ0FBQztBQUFFLE1BQUUsUUFBTSxvQkFBSTtBQUFJLGFBQVEsS0FBSyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBQyxPQUFNLEdBQUUsUUFBTyxDQUFDLEVBQUMsR0FBRSxDQUFDO0FBQUUsVUFBRyxhQUFhLFFBQVEsR0FBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQUksR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsVUFBTyxJQUFHLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsT0FBTyxRQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFJLENBQUM7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLE9BQU8sT0FBTyxHQUFFLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUFFLElBQUUsTUFBTSxJQUFJLEVBQUUsS0FBSztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUM7QUFBRSxNQUFJLElBQUUsR0FBRyxFQUFFLE9BQU87QUFBRSxJQUFFLEtBQUssU0FBTyxJQUFJLElBQUksQ0FBQyxHQUFFLEVBQUUsS0FBSyxVQUFRLElBQUksT0FBTyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksT0FBTyxNQUFJLFdBQVMsR0FBRyxDQUFDLElBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQUUsUUFBTztBQUFFLFdBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGlCQUFnQixRQUFPLEdBQUUsT0FBTSxHQUFFLE1BQUssRUFBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFoVyxJQUFrVyxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssU0FBTyxJQUFJLElBQUksRUFBRSxNQUFNLEdBQUUsRUFBRSxLQUFLLFVBQVEsSUFBSSxPQUFPLEtBQUssRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFJLE9BQU8sTUFBSSxXQUFTLEdBQUcsQ0FBQyxJQUFFLElBQUUsRUFBRSxTQUFTLElBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQUUsUUFBTztBQUFFLFdBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGlCQUFnQixRQUFPLEVBQUUsUUFBTyxPQUFNLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQWhyQixJQUFrckIsS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRTtBQUFNLFFBQUcsYUFBYSxLQUFLLFFBQU87QUFBRSxXQUFPLEVBQUUsT0FBTyxLQUFLLEVBQUMsVUFBUyxRQUFPLE1BQUssZ0JBQWUsT0FBTSxHQUFFLE1BQUssRUFBQyxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFyMkIsSUFBdTJCLEtBQUcsRUFBRSxpQkFBZ0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTSxDQUFDO0FBQUUsUUFBRyxFQUFFLE1BQU0sU0FBTyxhQUFhLFVBQVEsSUFBRSxRQUFRLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFJO0FBQUMsYUFBTyxFQUFFLFFBQU0sR0FBRTtBQUFBLElBQUMsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLE9BQU0sSUFBSTtBQUFHLFdBQU8sRUFBRSxRQUFNLEdBQUU7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUF4bEMsSUFBMGxDLEtBQUcsRUFBRSxnQkFBZSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxZQUFXLEVBQUUsS0FBSyxTQUFPLFlBQVcsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJO0FBQUMsV0FBTyxFQUFFLFVBQVUsS0FBSyxTQUFPLG9CQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxLQUFLLFFBQU8sTUFBTSxDQUFDLElBQUU7QUFBQSxFQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsTUFBSyxXQUFVLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxVQUFVLEtBQUs7QUFBUSxXQUFPLElBQUUsSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUU7QUFBQSxFQUFNLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUcsRUFBRSxVQUFVLEtBQUssVUFBUSxXQUFXLFFBQU8sRUFBRSxVQUFVLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU87QUFBRSxXQUFPLEVBQUUsVUFBVSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBemlELElBQTJpRCxLQUFHLEVBQUUsZ0JBQWUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssU0FBUSxNQUFJLEVBQUUsVUFBVSxLQUFLLEtBQUssR0FBRSxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxVQUFVLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFdBQVUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSztBQUFRLFdBQU8sSUFBRSxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBRTtBQUFBLEVBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSTtBQUFDLFdBQU8sRUFBRSxVQUFVLEtBQUssU0FBTyxvQkFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsS0FBSyxRQUFPLElBQUksQ0FBQyxJQUFFO0FBQUEsRUFBTSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxLQUFLLFFBQU87QUFBRSxXQUFPLEVBQUUsVUFBVSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBLzlELElBQWkrRCxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxZQUFXLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRSxRQUFNLEVBQUUsY0FBYTtBQUFFLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxVQUFRLE9BQU8sR0FBRSxRQUFNLEVBQUU7QUFBYSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxnQkFBZSxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxZQUFXLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLEdBQUUsUUFBTSxFQUFFO0FBQWEsV0FBTyxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQXROLElBQXdOLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsVUFBVSxLQUFLO0FBQU8sV0FBTyxJQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFJLE1BQUksTUFBTSxDQUFDLElBQUU7QUFBQSxFQUFNLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsV0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxFQUFFLE9BQU8sVUFBUSxFQUFFLFVBQVEsT0FBTyxHQUFFLE9BQU8sS0FBSyxFQUFDLE1BQUssZ0JBQWUsVUFBUyxlQUFjLE9BQU0sRUFBRSxPQUFNLE1BQUssRUFBQyxDQUFDO0FBQUUsU0FBTztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGFBQU8sRUFBRSxRQUFNLEVBQUUsT0FBTyxXQUFTLEdBQUU7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsUUFBTSxFQUFFLE9BQU8sV0FBUyxHQUFFO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBek4sSUFBMk4sS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sWUFBVyxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxVQUFVLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFVBQVMsTUFBSSxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBRSxVQUFVLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBRSxRQUFHLGFBQWEsUUFBUSxRQUFPLEVBQUUsS0FBSyxDQUFDLE1BQUk7QUFBQyxVQUFHLEVBQUUsUUFBTSxFQUFFLE9BQU0sRUFBRSxPQUFPLE9BQU8sR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLENBQUMsRUFBQyxHQUFFLE9BQU0sRUFBRSxNQUFLLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQztBQUFFLGFBQU87QUFBQSxJQUFDLENBQUM7QUFBRSxRQUFHLEVBQUUsUUFBTSxFQUFFLE9BQU0sRUFBRSxPQUFPLE9BQU8sR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLENBQUMsRUFBQyxHQUFFLE9BQU0sRUFBRSxNQUFLLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQztBQUFFLFdBQU87QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFod0IsSUFBa3dCLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsSUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxRQUFNLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBRyxPQUFPLEVBQUUsVUFBUSxZQUFVLENBQUMsT0FBTyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxPQUFNLEVBQUUsT0FBTSxNQUFLLEdBQUUsVUFBUyxPQUFNLE1BQUssZUFBYyxDQUFDLEdBQUU7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBMzhCLElBQTY4QixLQUFHLEVBQUUsWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFDLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxHQUFHLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFNBQVEsTUFBSSxFQUFFLEdBQUcsS0FBSyxLQUFLLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU0sR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLEdBQUcsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxXQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTztBQUFFLFNBQU8sRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFDLE9BQU0sRUFBRSxPQUFNLFFBQU8sRUFBRSxPQUFNLEdBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsZ0JBQWUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxJQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQUssY0FBYSxNQUFJLEVBQUUsVUFBVSxLQUFLLFVBQVUsR0FBRSxHQUFHLEVBQUUsTUFBSyxVQUFTLE1BQUksRUFBRSxVQUFVLEtBQUssTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFLLFNBQVEsTUFBSSxFQUFFLFVBQVUsS0FBSyxLQUFLLEdBQUUsR0FBRyxFQUFFLE1BQUssVUFBUyxNQUFJLEVBQUUsVUFBVSxLQUFLLE1BQU0sR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJ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S0FBSyxVQUFVLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUMsQ0FBQztBQUF0NkMsSUFBdzZDLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLEVBQUUsT0FBTSxJQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxhQUFhLFFBQVEsUUFBTyxFQUFFLEtBQUssQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsT0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSxFQUFNO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBQyxNQUFLLFVBQVMsT0FBTSxHQUFFLE1BQUssR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxRQUFNLENBQUMsQ0FBQyxHQUFFLFVBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxNQUFLO0FBQUUsUUFBRyxFQUFFLEtBQUssSUFBSSxPQUFPLEdBQUUsU0FBTyxFQUFFLEtBQUssSUFBSTtBQUFPLE1BQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUM7QUFBRSxHQUFHLElBQUcsRUFBQyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxJQUFHLE1BQUksR0FBRSxDQUFDO0FBQUUsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxzQkFBTSxNQUFLLHdDQUFTLEdBQUUsTUFBSyxFQUFDLE1BQUssNEJBQU8sTUFBSyx3Q0FBUyxHQUFFLE9BQU0sRUFBQyxNQUFLLDRCQUFPLE1BQUssd0NBQVMsR0FBRSxLQUFJLEVBQUMsTUFBSyw0QkFBTyxNQUFLLHdDQUFTLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFTLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLDRCQUFPLE9BQU0sNkVBQWdCLEtBQUksNEJBQU8sT0FBTSx3Q0FBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxvR0FBd0IsTUFBSywyRUFBbUIsTUFBSywrREFBaUIsVUFBUywrREFBaUIsTUFBSyx1Q0FBYSxNQUFLLHVDQUFhLFFBQU8sK0ZBQXdCLFFBQU8sK0ZBQXdCLFFBQU8sMEVBQTRCLFdBQVUsNkVBQStCLGFBQVksdUVBQW9CLE1BQUssMEZBQXdCLEtBQUksT0FBTSxrQkFBaUIsMkJBQU07QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSwrSkFBa0MsRUFBRSxRQUFRLCtFQUFtQixFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLCtKQUFrQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sdVBBQW9ELEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLHFKQUFrQyxFQUFFLFVBQVEsc0NBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSwwQkFBTTtBQUFHLGVBQU0sb0pBQWlDLEVBQUUsVUFBUSxzQ0FBUSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDJIQUE0QixFQUFFLE1BQU0sMENBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLDJIQUE0QixFQUFFLE1BQU0sMENBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSxnSkFBa0MsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLHNKQUFtQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0scUpBQWtDLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSx1S0FBcUMsRUFBRSxPQUFPO0FBQUcsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBWTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDBMQUF5QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSwyQkFBTyxFQUFFLEtBQUssU0FBTyxJQUFFLGlCQUFLLEVBQUUsNEJBQVEsRUFBRSxLQUFLLFNBQU8sSUFBRSxXQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxTQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLDJGQUFxQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQWlCLEtBQUk7QUFBa0IsZUFBTSwyRkFBcUIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFnQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxVQUFTLE1BQUssc0JBQVcsR0FBRSxNQUFLLEVBQUMsTUFBSyxRQUFPLE1BQUssc0JBQVcsR0FBRSxPQUFNLEVBQUMsTUFBSyxXQUFVLE1BQUssc0JBQVcsR0FBRSxLQUFJLEVBQUMsTUFBSyxXQUFVLE1BQUssc0JBQVcsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sU0FBUSxPQUFNLGlCQUFnQixLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLGdCQUFlLE1BQUssWUFBVyxNQUFLLFlBQVcsVUFBUyxnQkFBZSxNQUFLLGdCQUFlLE1BQUssZ0JBQWUsUUFBTyxjQUFhLFFBQU8sY0FBYSxRQUFPLHlCQUF3QixXQUFVLDRCQUEyQixhQUFZLGVBQWMsTUFBSyxnQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFFBQU87QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSw2REFBNEIsRUFBRSxRQUFRLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLDZEQUE0QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sNEZBQWlELEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLCtDQUF5QixFQUFFLFVBQVEsaUJBQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxTQUFTO0FBQUcsZUFBTSwrQ0FBeUIsRUFBRSxVQUFRLGlCQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sNENBQXlCLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQUcsZUFBTSw0Q0FBeUIsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSxnQ0FBaUIsRUFBRSxNQUFNO0FBQXFCLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSxnQ0FBaUIsRUFBRSxNQUFNO0FBQW1CLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxnQ0FBaUIsRUFBRSxRQUFRO0FBQW9CLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSwrQkFBZ0IsRUFBRSxPQUFPO0FBQTZCLGVBQU0sb0JBQVUsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sb0NBQWdCLEVBQUUsT0FBTztBQUFBLE1BQThCLEtBQUk7QUFBb0IsZUFBTSwwQkFBa0IsRUFBRSxLQUFLLFNBQU8sSUFBRSxRQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLEdBQUcsRUFBRSxNQUFNO0FBQUEsTUFBeUIsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBZSxLQUFJO0FBQWtCLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUEwQjtBQUFRLGVBQU07QUFBQSxJQUFjO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFLLElBQUksQ0FBQyxHQUFFLElBQUUsSUFBRSxJQUFHLElBQUUsSUFBRTtBQUFJLE1BQUcsS0FBRyxNQUFJLEtBQUcsR0FBRyxRQUFPO0FBQUUsTUFBRyxNQUFJLEVBQUUsUUFBTztBQUFFLE1BQUcsS0FBRyxLQUFHLEtBQUcsRUFBRSxRQUFPO0FBQUUsU0FBTztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxFQUFDLEtBQUksd0NBQVMsS0FBSSw4Q0FBVSxNQUFLLG1EQUFVLEdBQUUsTUFBSywyQkFBTSxHQUFFLE9BQU0sRUFBQyxNQUFLLEVBQUMsS0FBSSw4Q0FBVSxLQUFJLG9EQUFXLE1BQUsseURBQVcsR0FBRSxNQUFLLDJCQUFNLEdBQUUsS0FBSSxFQUFDLE1BQUssRUFBQyxLQUFJLDhDQUFVLEtBQUksb0RBQVcsTUFBSyx5REFBVyxHQUFFLE1BQUssMkJBQU0sR0FBRSxNQUFLLEVBQUMsTUFBSyxFQUFDLEtBQUksNEJBQU8sS0FBSSxrQ0FBUSxNQUFLLHVDQUFRLEdBQUUsTUFBSywyQkFBTSxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBTSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSw0QkFBTyxPQUFNLHdDQUFjLEtBQUksT0FBTSxPQUFNLHdDQUFTLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLDBEQUFpQixNQUFLLGdDQUFXLE1BQUssMEJBQVUsVUFBUywwRUFBa0IsTUFBSyx1Q0FBYSxNQUFLLHVDQUFhLFFBQU8seURBQWdCLFFBQU8seURBQWdCLFFBQU8sMkZBQXlCLFdBQVUsOEZBQTRCLGFBQVksdUNBQWEsTUFBSyx3Q0FBYyxLQUFJLE9BQU0sa0JBQWlCLDJCQUFNO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sMklBQTZCLEVBQUUsUUFBUSxzREFBYyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLGlKQUE4QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sbU1BQXdDLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsR0FBRTtBQUFDLGNBQUksSUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFFLElBQUUsR0FBRyxHQUFFLEVBQUUsS0FBSyxLQUFJLEVBQUUsS0FBSyxLQUFJLEVBQUUsS0FBSyxJQUFJO0FBQUUsaUJBQU0seUpBQWlDLEVBQUUsVUFBUSxrREFBVSwrQ0FBWSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFBQSxRQUFFO0FBQUMsZUFBTSx5SkFBaUMsRUFBRSxVQUFRLGtEQUFVLHdFQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEdBQUU7QUFBQyxjQUFJLElBQUUsT0FBTyxFQUFFLE9BQU8sR0FBRSxJQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssS0FBSSxFQUFFLEtBQUssS0FBSSxFQUFFLEtBQUssSUFBSTtBQUFFLGlCQUFNLDZJQUErQixFQUFFLE1BQU0sK0NBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQUEsUUFBRTtBQUFDLGVBQU0sNklBQStCLEVBQUUsTUFBTSx3RUFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSxnTkFBMkMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLGtPQUE4QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sbU1BQXdDLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSx5UEFBaUQsRUFBRSxPQUFPO0FBQUcsZUFBTSxzRUFBZSxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSx5TUFBeUMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sNEVBQWdCLEVBQUUsS0FBSyxTQUFPLElBQUUsbUNBQVEsMEJBQU0sS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLHNHQUFzQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQW1CLEtBQUk7QUFBa0IsZUFBTSxvSUFBMkIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFrQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxnQkFBWSxNQUFLLFdBQVUsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLE1BQUssV0FBVSxHQUFFLE9BQU0sRUFBQyxNQUFLLFlBQVcsTUFBSyxXQUFVLEdBQUUsS0FBSSxFQUFDLE1BQUssWUFBVyxNQUFLLFdBQVUsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sV0FBVSxPQUFNLDRCQUFxQixLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLG1CQUFrQixNQUFLLFlBQVcsTUFBSyxZQUFXLFVBQVMsY0FBYSxNQUFLLGtCQUFjLE1BQUssa0JBQWMsUUFBTyxhQUFZLFFBQU8sYUFBWSxRQUFPLCtCQUE4QixXQUFVLGtDQUFpQyxhQUFZLGVBQWMsTUFBSyxtQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFVBQVM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxnQ0FBNkIsRUFBRSxRQUFRLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLGdDQUE2QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sMkNBQXFDLEVBQUUsRUFBRSxRQUFPLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxtQkFBYyxZQUFXLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw4QkFBOEIsRUFBRSxVQUFRLFVBQVUsa0JBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sVUFBVTtBQUFHLGVBQU0sOEJBQThCLEVBQUUsVUFBUSxVQUFVLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLG1CQUFjLGFBQVMsSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLCtCQUErQixFQUFFLE1BQU0sa0JBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLCtCQUErQixFQUFFLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDZDQUF1QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sdUNBQW9DLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxxQ0FBa0MsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHNEQUFnRCxFQUFFLE9BQU87QUFBRyxlQUFNLDJCQUF3QixFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxrREFBeUMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sT0FBTyxFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLHNCQUFtQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQW1CLEtBQUk7QUFBa0IsZUFBTSx3QkFBcUIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFrQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxjQUFRLE1BQUssU0FBSyxHQUFFLE1BQUssRUFBQyxNQUFLLGNBQVEsTUFBSyxTQUFLLEdBQUUsT0FBTSxFQUFDLE1BQUssY0FBUSxNQUFLLFNBQUssR0FBRSxLQUFJLEVBQUMsTUFBSyxjQUFRLE1BQUssU0FBSyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUSxLQUFJO0FBQVMsZUFBTTtBQUFBLE1BQVUsS0FBSTtBQUFVLGVBQU07QUFBQSxNQUFVLEtBQUk7QUFBUyxlQUFNO0FBQUEsTUFBUyxLQUFJO0FBQVcsZUFBTTtBQUFBLE1BQVMsS0FBSTtBQUFTLGVBQU07QUFBQSxNQUFTLEtBQUk7QUFBWSxlQUFNO0FBQUEsTUFBWSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFPLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSw0QkFBa0IsT0FBTSx1QkFBbUIsS0FBSSxPQUFNLE9BQU0sU0FBUSxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxzQ0FBNkIsTUFBSywyQkFBdUIsTUFBSyw4QkFBcUIsVUFBUyx5QkFBa0IsTUFBSyxlQUFjLE1BQUssZUFBYyxRQUFPLGVBQWMsUUFBTyxlQUFjLFFBQU8sMkRBQXVDLFdBQVUsOERBQTBDLGFBQVksd0NBQTBCLE1BQUssdUJBQWMsS0FBSSxPQUFNLGtCQUFpQixRQUFPO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sMkNBQTZCLEVBQUUsUUFBUSxtQkFBYyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLDJDQUE2QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0saUVBQThDLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDRDQUE0QixFQUFFLFVBQVEsU0FBUyxtQkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxZQUFPO0FBQUcsZUFBTSw0Q0FBNEIsRUFBRSxVQUFRLFNBQVMsbUJBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sMkNBQTJCLEVBQUUsVUFBUSxTQUFTLG1CQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLFlBQU87QUFBRyxlQUFNLDJDQUEyQixFQUFFLFVBQVEsU0FBUyxtQkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDhEQUFzQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sMERBQXFDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxxREFBcUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLDZEQUEwQyxFQUFFLE9BQU87QUFBRyxlQUFNLHlCQUFtQixFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSx5REFBcUMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sZ0NBQWtCLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sOEJBQW1CLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBaUIsS0FBSTtBQUFrQixlQUFNLHlCQUFzQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWdCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLFdBQVUsTUFBSyxXQUFVLEdBQUUsTUFBSyxFQUFDLE1BQUssU0FBUSxNQUFLLFdBQVUsR0FBRSxPQUFNLEVBQUMsTUFBSyxZQUFXLE1BQUssV0FBVSxHQUFFLEtBQUksRUFBQyxNQUFLLFlBQVcsTUFBSyxXQUFVLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFPLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLFdBQVUsT0FBTSxrQkFBaUIsS0FBSSxPQUFNLE9BQU0sU0FBUSxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUywwQkFBeUIsTUFBSyxhQUFZLE1BQUssZUFBYyxVQUFTLGFBQVksTUFBSyxnQkFBZSxNQUFLLGdCQUFlLFFBQU8sZ0JBQWUsUUFBTyxnQkFBZSxRQUFPLDJCQUEwQixXQUFVLCtCQUE4QixhQUFZLGVBQWMsTUFBSyxnQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFVBQVM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxrQ0FBK0IsRUFBRSxRQUFRLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxrQ0FBK0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLDBDQUF1QyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw4QkFBMkIsRUFBRSxVQUFRLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxVQUFVO0FBQU8sZUFBTSw4QkFBMkIsRUFBRSxVQUFRLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQU07QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw0QkFBNEIsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBTyxlQUFNLDRCQUE0QixFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQU07QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLG1DQUFnQyxFQUFFLE1BQU07QUFBYSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sbUNBQWdDLEVBQUUsTUFBTTtBQUFVLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSwrQkFBNEIsRUFBRSxRQUFRO0FBQWMsWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHlDQUFzQyxFQUFFLE9BQU87QUFBZSxlQUFNLGdCQUFhLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDhDQUEyQyxFQUFFLE9BQU87QUFBQSxNQUFRLEtBQUk7QUFBb0IsZUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFPLElBQUUsNEJBQXVCLDBCQUF1QixLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0saUNBQTJCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBb0IsS0FBSTtBQUFrQixlQUFNLHlCQUFzQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQW1CO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxNQUFJO0FBQUMsTUFBSSxJQUFFLE9BQU87QUFBRSxVQUFPLEdBQUU7QUFBQSxJQUFDLEtBQUk7QUFBUyxhQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLElBQVMsS0FBSSxVQUFTO0FBQUMsVUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxVQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sVUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxJQUFJO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBQztBQUFuUSxJQUFxUSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxjQUFhLE1BQUssVUFBUyxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsTUFBSyxVQUFTLEdBQUUsT0FBTSxFQUFDLE1BQUssU0FBUSxNQUFLLFVBQVMsR0FBRSxLQUFJLEVBQUMsTUFBSyxTQUFRLE1BQUssVUFBUyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLE9BQU0sU0FBUSxPQUFNLGlCQUFnQixLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLGdCQUFlLE1BQUssWUFBVyxNQUFLLFlBQVcsVUFBUyxnQkFBZSxNQUFLLGdCQUFlLE1BQUssZ0JBQWUsUUFBTyxjQUFhLFFBQU8sY0FBYSxRQUFPLHlCQUF3QixXQUFVLDRCQUEyQixhQUFZLGVBQWMsTUFBSyxnQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFFBQU87QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSwyQkFBMkIsRUFBRSxRQUFRLGNBQWMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSwyQkFBMkIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLG1DQUFtQyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxxQkFBcUIsRUFBRSxVQUFRLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxVQUFVO0FBQUcsZUFBTSxxQkFBcUIsRUFBRSxVQUFRLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLG9DQUFvQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sa0NBQWtDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxpQ0FBaUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHNDQUFzQyxFQUFFLE9BQU87QUFBRyxlQUFNLFdBQVcsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0seUNBQXlDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLG1CQUFtQixFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sa0JBQWtCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBZ0IsS0FBSTtBQUFrQixlQUFNLG9CQUFvQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWU7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLE1BQUk7QUFBQyxNQUFJLElBQUUsT0FBTztBQUFFLFVBQU8sR0FBRTtBQUFBLElBQUMsS0FBSTtBQUFTLGFBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsSUFBUyxLQUFJLFVBQVM7QUFBQyxVQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFTLFVBQUcsTUFBSSxLQUFLLFFBQU07QUFBWSxVQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBQXpRLElBQTJRLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGNBQWEsTUFBSyxPQUFNLEdBQUUsTUFBSyxFQUFDLE1BQUssV0FBVSxNQUFLLE9BQU0sR0FBRSxPQUFNLEVBQUMsTUFBSyxjQUFhLE1BQUssT0FBTSxHQUFFLEtBQUksRUFBQyxNQUFLLGNBQWEsTUFBSyxPQUFNLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsT0FBTSxTQUFRLE9BQU0sYUFBWSxLQUFJLE9BQU0sT0FBTSxlQUFTLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLGlCQUFnQixNQUFLLFlBQVcsTUFBSyxhQUFZLFVBQVMsa0JBQVksTUFBSyxlQUFjLE1BQUssZUFBYyxRQUFPLGNBQWEsUUFBTyxjQUFhLFFBQU8sNEJBQTJCLFdBQVUsZ0NBQStCLGFBQVksbUJBQWtCLE1BQUssZ0JBQWUsS0FBSSxPQUFNLGtCQUFpQixRQUFPO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sa0NBQTZCLEVBQUUsUUFBUSxvQkFBZSxHQUFHLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLGtDQUE2QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0seUNBQW9DLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLGlDQUE0QixFQUFFLFVBQVEsUUFBUSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLFlBQVk7QUFBRyxlQUFNLGlDQUE0QixFQUFFLFVBQVEsUUFBUSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLG9DQUErQixFQUFFLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sb0NBQStCLEVBQUUsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sa0RBQTZDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSwrQ0FBMEMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLHlDQUF5QyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sb0RBQW9ELEVBQUUsT0FBTztBQUFHLGVBQU0sWUFBWSxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSx1Q0FBdUMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sV0FBVyxFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxnQkFBVyxFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sNEJBQXVCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBaUIsS0FBSTtBQUFrQixlQUFNLHNCQUFzQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWdCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGNBQWEsTUFBSyxRQUFPLEdBQUUsTUFBSyxFQUFDLE1BQUssU0FBUSxNQUFLLFFBQU8sR0FBRSxPQUFNLEVBQUMsTUFBSyxhQUFZLE1BQUssUUFBTyxHQUFFLEtBQUksRUFBQyxNQUFLLGFBQVksTUFBSyxRQUFPLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFTLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVUsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLFVBQVUsUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sV0FBVSxPQUFNLHlDQUFrQyxLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLG9CQUFtQixNQUFLLGFBQVksTUFBSyxZQUFXLFVBQVMsbUJBQWUsTUFBSyxxQkFBaUIsTUFBSyxxQkFBaUIsUUFBTyxjQUFhLFFBQU8sY0FBYSxRQUFPLCtCQUE4QixXQUFVLDRCQUEyQixhQUFZLGVBQWMsTUFBSyxtQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFVBQVM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxvQ0FBaUMsRUFBRSxRQUFRLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxvQ0FBaUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLDZDQUF1QyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxxQ0FBcUMsRUFBRSxVQUFRLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxXQUFXO0FBQUcsZUFBTSxxQ0FBcUMsRUFBRSxVQUFRLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx5Q0FBc0MsRUFBRSxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLHlDQUFzQyxFQUFFLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDBDQUF1QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0seUNBQXNDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxxQ0FBa0MsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHVEQUFpRCxFQUFFLE9BQU87QUFBRyxlQUFNLGVBQVksRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sa0RBQXlDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLFFBQVEsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sd0JBQXFCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBbUIsS0FBSTtBQUFrQixlQUFNLHdCQUFxQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWtCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLDhDQUFVLE1BQUssMERBQVksR0FBRSxNQUFLLEVBQUMsTUFBSyw0QkFBTyxNQUFLLDBEQUFZLEdBQUUsT0FBTSxFQUFDLE1BQUssNEJBQU8sTUFBSywwREFBWSxHQUFFLEtBQUksRUFBQyxNQUFLLDRCQUFPLE1BQUssMERBQVksRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQU0sS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sa0NBQVEsT0FBTSwyREFBYSxLQUFJLE9BQU0sT0FBTSx3Q0FBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUywyRkFBb0IsTUFBSywyREFBYSxNQUFLLHFEQUFZLFVBQVMsd0VBQWdCLE1BQUssaUNBQVksTUFBSyxpQ0FBWSxRQUFPLHVDQUFhLFFBQU8sdUNBQWEsUUFBTywyQ0FBc0IsV0FBVSw4Q0FBeUIsYUFBWSxpQ0FBWSxNQUFLLDRCQUFZLEtBQUksT0FBTSxrQkFBaUIsaUNBQU87QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSwrSEFBMkIsRUFBRSxRQUFRLCtDQUFZLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFhLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sK0hBQTJCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQVUsZUFBTSwrSkFBa0MsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBVSxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sc0RBQWMsRUFBRSxVQUFRLGdDQUFPLDZCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLDBCQUFNO0FBQVEsZUFBTSxzREFBYyxFQUFFLFVBQVEsZ0NBQU8sNkJBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFPO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sc0RBQWMsRUFBRSxNQUFNLDZCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQVEsZUFBTSxzREFBYyxFQUFFLE1BQU0sNkJBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFPO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSwrR0FBMEIsRUFBRSxNQUFNO0FBQWEsWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLCtHQUEwQixFQUFFLE1BQU07QUFBYSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sMkhBQTRCLEVBQUUsUUFBUTtBQUFTLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSw2SUFBK0IsRUFBRSxPQUFPO0FBQXFCLGVBQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQVU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxvSEFBMEIsRUFBRSxPQUFPO0FBQUEsTUFBUSxLQUFJO0FBQW9CLGVBQU0sMkJBQU8sRUFBRSxLQUFLLFNBQU8sSUFBRSx1QkFBTSxFQUFFLDBDQUFZLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sOEVBQWtCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBZ0IsS0FBSTtBQUFrQixlQUFNLDBGQUFvQixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWU7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssY0FBVSxTQUFRLGNBQWEsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLFNBQVEsWUFBVyxHQUFFLE9BQU0sRUFBQyxNQUFLLFdBQVUsU0FBUSxTQUFRLEdBQUUsS0FBSSxFQUFDLE1BQUssV0FBVSxTQUFRLFNBQVEsR0FBRSxRQUFPLEVBQUMsTUFBSyxJQUFHLFNBQVEsUUFBTyxHQUFFLFFBQU8sRUFBQyxNQUFLLElBQUcsU0FBUSx1QkFBc0IsR0FBRSxLQUFJLEVBQUMsTUFBSyxJQUFHLFNBQVEsZ0JBQWUsR0FBRSxNQUFLLEVBQUMsTUFBSyxJQUFHLFNBQVEsNkJBQWEsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0saUNBQXVCLE9BQU0sMEJBQW1CLEtBQUksY0FBYSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsaUJBQWdCLE1BQUssaUNBQWlCLE1BQUssWUFBVyxVQUFTLGFBQVksTUFBSyxlQUFjLE1BQUssZUFBYyxRQUFPLGFBQVksUUFBTyxhQUFZLFFBQU8sOEJBQTZCLFdBQVUsaUNBQWdDLGFBQVksbUJBQWtCLE1BQUssY0FBYSxLQUFJLE9BQU0sa0JBQWlCLHVCQUFzQjtBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLG1DQUFtQyxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLHlDQUFtQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sMERBQXVELEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLGdCQUFnQixFQUFFLE9BQU8sbUJBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsS0FBSztBQUFFLGVBQU0scUNBQWtDLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLGdCQUFnQixFQUFFLE9BQU8sbUJBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsS0FBSztBQUFFLGVBQU0scUNBQWtDLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sMkNBQXFDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSw0Q0FBc0MsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLHVEQUF3QyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sZ0ZBQThELEVBQUUsT0FBTztBQUFHLGVBQU0sZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDJDQUF3QyxFQUFFLE9BQU87QUFBQSxNQUFhLEtBQUk7QUFBb0IsZUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFPLElBQUUsMEJBQXdCLGtCQUFrQixLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU07QUFBQSxNQUFnQyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFzQixLQUFJO0FBQWtCLGVBQU07QUFBQSxNQUE2QjtBQUFRLGVBQU07QUFBQSxJQUFvQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxpQkFBYSxNQUFLLFFBQU8sR0FBRSxNQUFLLEVBQUMsTUFBSyxVQUFTLE1BQUssUUFBTyxHQUFFLE9BQU0sRUFBQyxNQUFLLGtCQUFXLE1BQUssUUFBTyxHQUFFLEtBQUksRUFBQyxNQUFLLGtCQUFXLE1BQUssUUFBTyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFVLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxhQUFTLE9BQU0sa0JBQWlCLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMscUJBQW9CLE1BQUssWUFBVyxNQUFLLGFBQVksVUFBUyxnQkFBWSxNQUFLLGdCQUFlLE1BQUssZ0JBQWUsUUFBTyxjQUFhLFFBQU8sY0FBYSxRQUFPLGtDQUEyQixXQUFVLHFDQUE4QixhQUFZLGtCQUFjLE1BQUssbUJBQWUsS0FBSSxPQUFNLGtCQUFpQixZQUFRO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sd0JBQXFCLEVBQUUsUUFBUSxhQUFhLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFRLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sd0JBQXFCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQVcsZUFBTSxzQ0FBc0MsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBWSxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sZ0JBQWdCLEVBQUUsVUFBUSxRQUFRLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sa0JBQVk7QUFBRyxlQUFNLGdCQUFnQixFQUFFLFVBQVEsUUFBUSxpQkFBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLGdCQUFnQixFQUFFLE1BQU0saUJBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSw0Q0FBeUMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDhDQUEyQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sc0NBQW1DLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSx1REFBaUQsRUFBRSxPQUFPO0FBQUcsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBVztBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLGlEQUE4QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSxTQUFNLEVBQUUsS0FBSyxTQUFPLElBQUUsTUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sd0JBQXFCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBa0IsS0FBSTtBQUFrQixlQUFNLHdCQUF3QixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWlCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGlCQUFhLE1BQUssUUFBTyxHQUFFLE1BQUssRUFBQyxNQUFLLFVBQVMsTUFBSyxRQUFPLEdBQUUsT0FBTSxFQUFDLE1BQUssa0JBQVcsTUFBSyxRQUFPLEdBQUUsS0FBSSxFQUFDLE1BQUssa0JBQVcsTUFBSyxRQUFPLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFTLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLGFBQVMsT0FBTSxvQkFBbUIsS0FBSSxPQUFNLE9BQU0sU0FBUSxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxrQkFBaUIsTUFBSyxZQUFXLE1BQUssYUFBWSxVQUFTLGdCQUFZLE1BQUssZ0JBQWUsTUFBSyxnQkFBZSxRQUFPLGNBQWEsUUFBTyxjQUFhLFFBQU8sa0NBQTJCLFdBQVUscUNBQThCLGFBQVksa0JBQWMsTUFBSyxtQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFlBQVE7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxnQ0FBNkIsRUFBRSxRQUFRLGFBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxnQ0FBNkIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLHlEQUF5RCxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsV0FBSSxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw0QkFBNEIsRUFBRSxVQUFRLFdBQVcsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sNEJBQTRCLEVBQUUsVUFBUSxXQUFXLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLFdBQUksS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sNEJBQTRCLEVBQUUsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQUcsZUFBTSw0QkFBNEIsRUFBRSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSw0Q0FBeUMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDhDQUEyQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sc0NBQW1DLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSxtREFBZ0QsRUFBRSxPQUFPO0FBQUcsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBVztBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLGlEQUE4QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSxTQUFNLEVBQUUsS0FBSyxTQUFPLElBQUUsTUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sd0JBQXFCLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBa0IsS0FBSTtBQUFrQixlQUFNLHdCQUF3QixFQUFFLE1BQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWlCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLHdDQUFTLE1BQUssaUNBQU8sR0FBRSxNQUFLLEVBQUMsTUFBSyx3Q0FBUyxNQUFLLGlDQUFPLEdBQUUsT0FBTSxFQUFDLE1BQUssd0NBQVMsTUFBSyxpQ0FBTyxHQUFFLEtBQUksRUFBQyxNQUFLLHdDQUFTLE1BQUssaUNBQU8sRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sc0JBQU0sT0FBTSx1RUFBZSxLQUFJLHFEQUFZLE9BQU0seUNBQVUsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsK0RBQWlCLE1BQUssc0NBQVksTUFBSywwQkFBVSxVQUFTLDZDQUFjLE1BQUssdUNBQWEsTUFBSyx1Q0FBYSxRQUFPLGlDQUFZLFFBQU8saUNBQVksUUFBTywwRUFBa0IsV0FBVSx3SUFBOEIsYUFBWSw2Q0FBYyxNQUFLLGtDQUFhLEtBQUksT0FBTSxrQkFBaUIscUJBQUs7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxzRkFBcUIsRUFBRSxRQUFRLG9DQUFXLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sc0ZBQXFCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSx1S0FBcUMsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sZ0RBQWEsRUFBRSxVQUFRLE9BQU8sNERBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sVUFBVTtBQUFHLGVBQU0sZ0RBQWEsRUFBRSxVQUFRLE9BQU8sNERBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sMENBQVksRUFBRSxNQUFNLDREQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQUcsZUFBTSwwQ0FBWSxFQUFFLE1BQU0sNERBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSxnS0FBbUMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLHVLQUFxQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sb0pBQWlDLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSw4TEFBd0MsRUFBRSxPQUFPO0FBQUcsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBVTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLHVLQUFxQyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSwyQkFBTyxFQUFFLEtBQUssU0FBTyxJQUFFLGlCQUFLLEVBQUUseUNBQVcsRUFBRSxLQUFLLFNBQU8sSUFBRSxpQkFBSyxRQUFHLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx3RUFBaUIsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFjLEtBQUk7QUFBa0IsZUFBTSxrRUFBZ0IsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFhO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLFlBQVcsTUFBSyxTQUFRLEdBQUUsTUFBSyxFQUFDLE1BQUssUUFBTyxNQUFLLFNBQVEsR0FBRSxPQUFNLEVBQUMsTUFBSyxRQUFPLE1BQUssU0FBUSxHQUFFLEtBQUksRUFBQyxNQUFLLFFBQU8sTUFBSyxTQUFRLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFPLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQU8sWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLFdBQVUsT0FBTSxnQkFBWSxLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLHlCQUFnQixNQUFLLGdCQUFZLE1BQUssZ0JBQVUsVUFBUywyQkFBcUIsTUFBSyxlQUFXLE1BQUssZUFBVyxRQUFPLHFCQUFpQixRQUFPLHFCQUFpQixRQUFPLDJCQUF1QixXQUFVLDhCQUEwQixhQUFZLGVBQWMsTUFBSyxpQkFBYSxLQUFJLE9BQU0sa0JBQWlCLFVBQVM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxvREFBcUMsRUFBRSxRQUFRLDBCQUFvQixFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLG9EQUFxQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sOERBQTRDLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLGdCQUFhLEVBQUUsVUFBUSxhQUFPLDBCQUFvQixDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxNQUFNO0FBQUcsZUFBTSx1Q0FBOEIsRUFBRSxVQUFRLGFBQU8saUJBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sd0NBQStCLEVBQUUsTUFBTSwyQkFBcUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLHdDQUErQixFQUFFLE1BQU0saUJBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSw4QkFBd0IsRUFBRSxNQUFNO0FBQTRCLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSw4QkFBd0IsRUFBRSxNQUFNO0FBQTRCLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSw4QkFBd0IsRUFBRSxRQUFRO0FBQThCLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSw2QkFBdUIsRUFBRSxPQUFPO0FBQTZCLGVBQU0scUJBQWUsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sOEJBQXFCLEVBQUUsT0FBTztBQUFBLE1BQThCLEtBQUk7QUFBb0IsZUFBTSxtQkFBbUIsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLDJCQUFxQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQXNCLEtBQUk7QUFBa0IsZUFBTSxrQ0FBc0IsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFxQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxZQUFXLE1BQUssV0FBVSxHQUFFLE1BQUssRUFBQyxNQUFLLFFBQU8sTUFBSyxXQUFVLEdBQUUsT0FBTSxFQUFDLE1BQUssUUFBTyxNQUFLLFdBQVUsR0FBRSxLQUFJLEVBQUMsTUFBSyxRQUFPLE1BQUssV0FBVSxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxTQUFRLE9BQU0sZ0JBQWUsS0FBSSxPQUFNLE9BQU0sU0FBUSxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxnQ0FBK0IsTUFBSyxzQkFBcUIsTUFBSyxrQkFBaUIsVUFBUyxxQkFBb0IsTUFBSyxlQUFjLE1BQUssZUFBYyxRQUFPLHVCQUFzQixRQUFPLHVCQUFzQixRQUFPLCtCQUE4QixXQUFVLGtDQUFpQyxhQUFZLGVBQWMsTUFBSyxlQUFjLEtBQUksT0FBTSxrQkFBaUIsUUFBTztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLGlDQUFpQyxFQUFFLFFBQVEsY0FBYyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLGlDQUFpQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sbURBQW1ELEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDZCQUE2QixFQUFFLFVBQVEsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLFFBQVE7QUFBRyxlQUFNLDZCQUE2QixFQUFFLFVBQVEsT0FBTyxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sNkJBQTZCLEVBQUUsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sNkNBQTZDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSw4Q0FBOEMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLDBDQUEwQyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0seUNBQXlDLEVBQUUsT0FBTztBQUFHLGVBQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQWM7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSwyQ0FBMkMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sd0JBQXdCLEVBQUUsS0FBSyxTQUFPLElBQUUsTUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx3QkFBd0IsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFvQixLQUFJO0FBQWtCLGVBQU0sd0JBQXdCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBbUI7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssYUFBWSxNQUFLLFFBQU8sR0FBRSxNQUFLLEVBQUMsTUFBSyxRQUFPLE1BQUssUUFBTyxHQUFFLE9BQU0sRUFBQyxNQUFLLFlBQVcsTUFBSyxRQUFPLEdBQUUsS0FBSSxFQUFDLE1BQUssWUFBVyxNQUFLLFFBQU8sRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBVSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sU0FBUSxPQUFNLG1CQUFrQixLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLGtCQUFpQixNQUFLLFlBQVcsTUFBSyxXQUFVLFVBQVMsY0FBYSxNQUFLLGtCQUFpQixNQUFLLGtCQUFpQixRQUFPLG1CQUFrQixRQUFPLG1CQUFrQixRQUFPLGdDQUErQixXQUFVLDRCQUEyQixhQUFZLGdCQUFlLE1BQUssZ0JBQWUsS0FBSSxPQUFNLGtCQUFpQixRQUFPO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sNEJBQTRCLEVBQUUsUUFBUSxjQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sNEJBQTRCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSxzQ0FBc0MsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sa0JBQWtCLEVBQUUsVUFBUSxRQUFRLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sVUFBVTtBQUFHLGVBQU0sa0JBQWtCLEVBQUUsVUFBUSxRQUFRLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sMENBQTBDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSwyQ0FBMkMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLHVDQUF1QyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0scURBQXFELEVBQUUsT0FBTztBQUFHLGVBQU0sV0FBVyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxpREFBaUQsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sUUFBUSxFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksR0FBRyxtQkFBbUIsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLHdCQUF3QixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQW1CLEtBQUk7QUFBa0IsZUFBTSx3QkFBd0IsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFrQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxnQkFBSyxNQUFLLHFCQUFLLEdBQUUsTUFBSyxFQUFDLE1BQUssc0JBQU0sTUFBSyxxQkFBSyxHQUFFLE9BQU0sRUFBQyxNQUFLLGdCQUFLLE1BQUsscUJBQUssR0FBRSxLQUFJLEVBQUMsTUFBSyxnQkFBSyxNQUFLLHFCQUFLLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFLLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQUssWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLHNCQUFNLE9BQU0sOENBQVUsS0FBSSxPQUFNLE9BQU0sc0JBQU0sTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsbUJBQVEsTUFBSyxtQkFBUSxNQUFLLG1CQUFRLFVBQVMsbUJBQVEsTUFBSyxnQ0FBVyxNQUFLLGdDQUFXLFFBQU8sb0JBQVMsUUFBTyxvQkFBUyxRQUFPLDBEQUFpQixXQUFVLDZEQUFvQixhQUFZLDBCQUFVLE1BQUsscUJBQVUsS0FBSSxPQUFNLGtCQUFpQixxQkFBSztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLG1DQUFVLEVBQUUsUUFBUSwrREFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBVyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLG1DQUFVLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQVcsZUFBTSxtQ0FBVSxFQUFFLEVBQUUsUUFBTyxRQUFHLENBQUM7QUFBQSxNQUFrQixLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLG1DQUFRLGtDQUFRLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx5Q0FBVyxFQUFFLFVBQVEsUUFBRyxTQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQU0sY0FBSSxHQUFHLENBQUM7QUFBVSxlQUFNLHlDQUFXLEVBQUUsVUFBUSxRQUFHLFNBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFBQSxNQUFTO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLG1DQUFRLGtDQUFRLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx5Q0FBVyxFQUFFLE1BQU0sU0FBSSxFQUFFLFFBQVEsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUFVLGVBQU0seUNBQVcsRUFBRSxNQUFNLFNBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFBQSxNQUFTO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSwwQ0FBWSxFQUFFLE1BQU07QUFBZSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sMENBQVksRUFBRSxNQUFNO0FBQWUsWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLDBDQUFZLEVBQUUsUUFBUTtBQUFjLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSxpRUFBZSxFQUFFLE9BQU87QUFBZSxlQUFNLHFCQUFNLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLG1DQUFVLEVBQUUsT0FBTztBQUFBLE1BQWdCLEtBQUk7QUFBb0IsZUFBTSwrREFBYSxFQUFFLEtBQUssU0FBTyxJQUFFLFdBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFLLFFBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUFVLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQVEsS0FBSTtBQUFrQixlQUFNLEdBQUcsRUFBRSxNQUFNO0FBQUEsTUFBUztBQUFRLGVBQU07QUFBQSxJQUFPO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLDhDQUFVLE1BQUssdUNBQVEsR0FBRSxNQUFLLEVBQUMsTUFBSyxnQkFBSyxNQUFLLHVDQUFRLEdBQUUsT0FBTSxFQUFDLE1BQUssNEJBQU8sTUFBSyx1Q0FBUSxHQUFFLEtBQUksRUFBQyxNQUFLLDRCQUFPLE1BQUssdUNBQVEsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsNkVBQW9CO0FBQUEsTUFBTSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFlLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBb0IsWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sd0ZBQWlCLE9BQU0sOEZBQWtCLEtBQUksT0FBTSxPQUFNLGtGQUFnQixNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxxSEFBMEIsTUFBSywwRUFBa0IsTUFBSyxnQ0FBVyxVQUFTLDRDQUFhLE1BQUssK0RBQWlCLE1BQUssK0RBQWlCLFFBQU8saUZBQW9CLFFBQU8saUZBQW9CLFFBQU8scUdBQXlCLFdBQVUsd0dBQTRCLGFBQVksK0RBQWlCLE1BQUssNEJBQVksS0FBSSxPQUFNLGtCQUFpQix1RkFBZ0I7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSw2TkFBeUMsRUFBRSxRQUFRLHlGQUFtQixFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLDZOQUF5QyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0scVBBQTZDLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLHlGQUFtQixFQUFFLFVBQVEsZ0NBQU8sSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSwwQkFBTTtBQUFHLGVBQU0seUZBQW1CLEVBQUUsVUFBUSxnQ0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLCtGQUFvQixFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sK0ZBQW9CLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sc1BBQThDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSxvT0FBMkMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLGdNQUFxQyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0saVdBQStELEVBQUUsT0FBTztBQUFHLGVBQU0sd0ZBQWtCLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLGlOQUF1QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSwwR0FBcUIsRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx3SUFBMEIsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUF3QixLQUFJO0FBQWtCLGVBQU0sNEtBQWdDLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBdUI7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssZ0JBQUssTUFBSyxVQUFTLEdBQUUsTUFBSyxFQUFDLE1BQUssc0JBQU0sTUFBSyxVQUFTLEdBQUUsT0FBTSxFQUFDLE1BQUssVUFBSSxNQUFLLFVBQVMsR0FBRSxLQUFJLEVBQUMsTUFBSyxVQUFJLE1BQUssVUFBUyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxnQkFBSyxPQUFNLG1DQUFTLEtBQUksT0FBTSxPQUFNLHNCQUFNLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLGdDQUFXLE1BQUssb0JBQVMsTUFBSyxvQkFBUyxVQUFTLG9CQUFTLE1BQUsscUJBQVUsTUFBSyxxQkFBVSxRQUFPLHFCQUFVLFFBQU8scUJBQVUsUUFBTyxnREFBaUIsV0FBVSxtREFBb0IsYUFBWSwyQkFBVyxNQUFLLHNCQUFXLEtBQUksT0FBTSxrQkFBaUIsZUFBSTtBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLG9FQUFrQixFQUFFLFFBQVEscUNBQVksRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQU0sS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxpREFBYyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFXLGVBQU0sb0NBQVcsRUFBRSxFQUFFLFFBQU8sZUFBSyxDQUFDO0FBQUEsTUFBYyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLGlCQUFLLGdCQUFLLElBQUUsTUFBSSxpQkFBSywwQ0FBVSxtQ0FBUyxJQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUUsSUFBRSxHQUFHLFFBQU07QUFBSyxZQUFHLEVBQUUsUUFBTSxHQUFHLEVBQUUsVUFBUSxRQUFHLDJDQUFhLEVBQUUsUUFBUSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFBRyxlQUFNLEdBQUcsRUFBRSxVQUFRLFFBQUcsMkNBQWEsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxpQkFBSyxnQkFBSyxJQUFFLE1BQUksaUJBQUssMENBQVUsbUNBQVMsSUFBRSxFQUFFLEVBQUUsTUFBTSxHQUFFLElBQUUsR0FBRyxRQUFNO0FBQUssWUFBRyxFQUFFLFFBQU0sR0FBRyxFQUFFLFVBQVEsUUFBRyxpREFBYyxFQUFFLFFBQVEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUcsZUFBTSxHQUFHLEVBQUUsVUFBUSxRQUFHLGlEQUFjLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDJDQUFhLEVBQUUsTUFBTTtBQUFpQixZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sMkNBQWEsRUFBRSxNQUFNO0FBQWdCLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSwyQ0FBYSxFQUFFLFFBQVE7QUFBaUIsWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLDZEQUFnQixFQUFFLE9BQU87QUFBZ0IsZUFBTSxzQkFBTyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxvQ0FBVyxFQUFFLE9BQU87QUFBQSxNQUFhLEtBQUk7QUFBb0IsZUFBTSxrREFBZSxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLDhCQUFVLEVBQUUsTUFBTTtBQUFBLE1BQUcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBUyxLQUFJO0FBQWtCLGVBQU0sOEJBQVUsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFRO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGtDQUFRLE1BQUssOENBQVUsR0FBRSxNQUFLLEVBQUMsTUFBSyxrQ0FBUSxNQUFLLDhDQUFVLEdBQUUsT0FBTSxFQUFDLE1BQUssd0NBQVMsTUFBSyw4Q0FBVSxHQUFFLEtBQUksRUFBQyxNQUFLLHdDQUFTLE1BQUssOENBQVUsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQU8sS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBTyxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sNEJBQU8sT0FBTSwyRkFBb0IsS0FBSSxPQUFNLE9BQU0sa0NBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsNEVBQW9CLE1BQUssc0NBQVksTUFBSyxzQ0FBWSxVQUFTLDBFQUFrQixNQUFLLDZDQUFjLE1BQUssNkNBQWMsUUFBTyx1Q0FBYSxRQUFPLHVDQUFhLFFBQU8sZ0dBQXlCLFdBQVUsbUdBQTRCLGFBQVksaUNBQVksTUFBSyxrQ0FBYSxLQUFJLE9BQU0sa0JBQWlCLDJCQUFNO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sMEhBQTJCLEVBQUUsUUFBUSxnREFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0scUtBQW1DLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDRJQUE4QixFQUFFLFVBQVEsd0RBQVcsb0NBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sa0RBQVU7QUFBRyxlQUFNLDRJQUE4QixFQUFFLFVBQVEsd0RBQVcsMENBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sZ0lBQTRCLEVBQUUsTUFBTSxvQ0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sZ0lBQTRCLEVBQUUsTUFBTSwwQ0FBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLCtMQUF5QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0seUxBQXdDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSw0S0FBcUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLG1PQUErQyxFQUFFLE9BQU87QUFBRyxlQUFNLFdBQVcsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sNktBQXNDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLEdBQUcsRUFBRSxLQUFLLFNBQU8sSUFBRSw4SEFBd0IsbUdBQW1CLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSw4RUFBa0IsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFjLEtBQUk7QUFBa0IsZUFBTSxzR0FBc0IsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFhO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLFVBQVMsTUFBSyxZQUFXLEdBQUUsTUFBSyxFQUFDLE1BQUssUUFBTyxNQUFLLFlBQVcsR0FBRSxPQUFNLEVBQUMsTUFBSyxVQUFTLE1BQUssWUFBVyxHQUFFLEtBQUksRUFBQyxNQUFLLFVBQVMsTUFBSyxZQUFXLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFTLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLFNBQVEsT0FBTSxnQkFBZSxLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLG1CQUFrQixNQUFLLGNBQWEsTUFBSyxZQUFXLFVBQVMsY0FBYSxNQUFLLGVBQWMsTUFBSyxlQUFjLFFBQU8sY0FBYSxRQUFPLGNBQWEsUUFBTywwQkFBeUIsV0FBVSw2QkFBNEIsYUFBWSxlQUFjLE1BQUssZ0JBQWUsS0FBSSxPQUFNLGtCQUFpQixRQUFPO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sNkJBQTZCLEVBQUUsUUFBUSxjQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sNkJBQTZCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSxtREFBbUQsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sMkJBQTJCLEVBQUUsVUFBUSxPQUFPLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sUUFBUTtBQUFHLGVBQU0sMkJBQTJCLEVBQUUsVUFBUSxPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sMkJBQTJCLEVBQUUsTUFBTSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQUcsZUFBTSwyQkFBMkIsRUFBRSxNQUFNLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSwyQ0FBMkMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDRDQUE0QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sd0NBQXdDLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSxnREFBZ0QsRUFBRSxPQUFPO0FBQUcsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBWTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLG1DQUFtQyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSx5QkFBeUIsRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx5QkFBeUIsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFrQixLQUFJO0FBQWtCLGVBQU0seUJBQXlCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBaUI7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssU0FBUSxHQUFFLE1BQUssRUFBQyxNQUFLLFFBQU8sR0FBRSxPQUFNLEVBQUMsTUFBSyxZQUFXLEdBQUUsS0FBSSxFQUFDLE1BQUssWUFBVyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxVQUFTLE9BQU0sY0FBYSxLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLHFCQUFvQixNQUFLLGFBQVksTUFBSyxZQUFXLFVBQVMsWUFBVyxNQUFLLGNBQWEsTUFBSyxjQUFhLFFBQU8sZUFBYyxRQUFPLGVBQWMsUUFBTywyQkFBMEIsV0FBVSwrQkFBOEIsYUFBWSxlQUFjLE1BQUssZ0JBQWUsS0FBSSxPQUFNLGtCQUFpQixTQUFRO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sOEJBQThCLEVBQUUsUUFBUSxhQUFhLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sOEJBQThCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSwyQ0FBcUMsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0seUJBQXlCLEVBQUUsVUFBUSxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sV0FBVztBQUFTLGVBQU0seUJBQXlCLEVBQUUsVUFBUSxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFLO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0seUJBQXlCLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQVMsZUFBTSx5QkFBeUIsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFLO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSw4QkFBOEIsRUFBRSxNQUFNO0FBQWEsWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDZCQUE2QixFQUFFLE1BQU07QUFBYSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sMEJBQTBCLEVBQUUsUUFBUTtBQUFhLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSxrREFBa0QsRUFBRSxPQUFPO0FBQUcsZUFBTSxhQUFhLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLHlDQUF5QyxFQUFFLE9BQU87QUFBQSxNQUFRLEtBQUk7QUFBb0IsZUFBTSxnQkFBZ0IsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLG9CQUFvQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQW1CLEtBQUk7QUFBa0IsZUFBTSx1QkFBdUIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFrQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxRQUFPLE1BQUssVUFBTSxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsTUFBSyxVQUFNLEdBQUUsT0FBTSxFQUFDLE1BQUssYUFBWSxNQUFLLGlCQUFhLEdBQUUsS0FBSSxFQUFDLE1BQUssYUFBWSxNQUFLLGlCQUFhLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFPLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVEsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLFNBQVEsT0FBTSxpQkFBZ0IsS0FBSSxPQUFNLE9BQU0sU0FBUSxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyw0QkFBMkIsTUFBSyxZQUFXLE1BQUssbUJBQWtCLFVBQVMsZ0JBQWUsTUFBSyxrQkFBYyxNQUFLLGtCQUFjLFFBQU8sZ0JBQWUsUUFBTyxnQkFBZSxRQUFPLHlCQUF3QixXQUFVLDRCQUEyQixhQUFZLGVBQWMsTUFBSyxnQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFFBQU87QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSw0QkFBNEIsRUFBRSxRQUFRLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSw0QkFBNEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLGlDQUFpQyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSwwQkFBMEIsRUFBRSxVQUFRLE9BQU8sZ0JBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sV0FBVztBQUFHLGVBQU0sMEJBQTBCLEVBQUUsVUFBUSxPQUFPLGdCQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDBCQUEwQixFQUFFLE1BQU0sZ0JBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLDBCQUEwQixFQUFFLE1BQU0sZ0JBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSxxQ0FBa0MsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLG1DQUFnQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sb0NBQWlDLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSw2Q0FBdUMsRUFBRSxPQUFPO0FBQUcsZUFBTSxXQUFXLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLCtDQUF5QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFPLElBQUUsc0JBQWlCLGtCQUFlLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx1QkFBb0IsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFnQixLQUFJO0FBQWtCLGVBQU0sbUJBQW1CLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBZTtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxRQUFPLE1BQUssc0JBQVcsR0FBRSxNQUFLLEVBQUMsTUFBSyxRQUFPLE1BQUssc0JBQVcsR0FBRSxPQUFNLEVBQUMsTUFBSyxTQUFRLE1BQUssc0JBQVcsR0FBRSxLQUFJLEVBQUMsTUFBSyxTQUFRLE1BQUssc0JBQVcsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBTSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sU0FBUSxPQUFNLGdCQUFZLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsdUJBQWMsTUFBSyxjQUFhLE1BQUssbUJBQWEsVUFBUyxrQkFBYyxNQUFLLDRCQUFjLE1BQUssNEJBQWMsUUFBTyxnQkFBZSxRQUFPLGdCQUFlLFFBQU8sNkJBQXVCLFdBQVUsZ0NBQTBCLGFBQVksY0FBYSxNQUFLLDBCQUFlLEtBQUksT0FBTSxrQkFBaUIsUUFBTztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLDBCQUF1QixFQUFFLFFBQVEsaUJBQVksRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSwwQkFBdUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLGtDQUE0QixFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxzQkFBZ0IsRUFBRSxVQUFRLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxVQUFVO0FBQW9CLGVBQU0sc0JBQWdCLEVBQUUsVUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFhO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0seUJBQWdCLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQW9CLGVBQU0seUJBQWdCLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBYTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sb0JBQWlCLEVBQUUsTUFBTTtBQUFtQixZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sb0JBQWlCLEVBQUUsTUFBTTtBQUFpQixZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sb0JBQWlCLEVBQUUsUUFBUTtBQUFtQixZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sbUJBQWdCLEVBQUUsT0FBTztBQUFtQixlQUFNLFlBQVMsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sdUJBQWUsRUFBRSxPQUFPO0FBQUEsTUFBbUIsS0FBSTtBQUFvQixlQUFNLDJCQUFzQixFQUFFLEtBQUssU0FBTyxJQUFFLE1BQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFLLElBQUksQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFjLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUFnQyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFvQixLQUFJO0FBQWtCLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUErQjtBQUFRLGVBQU07QUFBQSxJQUFvQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyw0QkFBTyxNQUFLLDJCQUFNLEdBQUUsTUFBSyxFQUFDLE1BQUssa0NBQVEsTUFBSywyQkFBTSxHQUFFLE9BQU0sRUFBQyxNQUFLLDRCQUFPLE1BQUssMkJBQU0sR0FBRSxLQUFJLEVBQUMsTUFBSyw0QkFBTyxNQUFLLDJCQUFNLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFNLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQU0sWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLGtDQUFRLE9BQU0sMERBQVksS0FBSSwwQ0FBVyxPQUFNLHdDQUFTLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLDREQUFjLE1BQUssNEJBQU8sTUFBSyxzQkFBTSxVQUFTLDRCQUFPLE1BQUssa0NBQWEsTUFBSyxrQ0FBYSxRQUFPLHdDQUFjLFFBQU8sd0NBQWMsUUFBTyxxQ0FBcUIsV0FBVSx3Q0FBd0IsYUFBWSwyQkFBVyxNQUFLLCtDQUFnQixLQUFJLE9BQU0sa0JBQWlCLGlDQUFPO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0scUZBQW9CLEVBQUUsUUFBUSwyQ0FBYSxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBYSxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLHFGQUFvQixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFPLGVBQU0scUhBQTJCLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQVcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDBDQUFZLEVBQUUsVUFBUSxnQ0FBTyw2QkFBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSw0Q0FBUztBQUFRLGVBQU0sMENBQVksRUFBRSxVQUFRLGdDQUFPLDZCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBSztBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLHNEQUFjLEVBQUUsTUFBTSw2QkFBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFRLGVBQU0sc0RBQWMsRUFBRSxNQUFNLDZCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBSztBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0saUZBQXFCLEVBQUUsTUFBTTtBQUFlLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSxpRkFBcUIsRUFBRSxNQUFNO0FBQXNCLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSwwRUFBbUIsRUFBRSxRQUFRO0FBQVMsWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLGdGQUFvQixFQUFFLE9BQU87QUFBbUIsZUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBVTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLGdGQUFvQixFQUFFLE9BQU87QUFBQSxNQUFXLEtBQUk7QUFBb0IsZUFBTSw0QkFBUSxFQUFFLEtBQUssU0FBTyxJQUFFLCtDQUFVLDBCQUFNLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxrRUFBZ0IsRUFBRSxNQUFNO0FBQUEsTUFBTSxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFjLEtBQUk7QUFBa0IsZUFBTSxrRUFBZ0IsRUFBRSxNQUFNO0FBQUEsTUFBTTtBQUFRLGVBQU07QUFBQSxJQUFhO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGFBQVMsTUFBSyxZQUFNLEdBQUUsTUFBSyxFQUFDLE1BQUssYUFBUyxNQUFLLFlBQU0sR0FBRSxPQUFNLEVBQUMsTUFBSyxnQkFBWSxNQUFLLFlBQU0sR0FBRSxLQUFJLEVBQUMsTUFBSyxnQkFBWSxNQUFLLFlBQU0sRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBVSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0sa0JBQVksT0FBTSxlQUFjLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsaUNBQWdDLE1BQUssdUJBQXNCLE1BQUssMEJBQXlCLFVBQVMsb0JBQW1CLE1BQUssY0FBYSxNQUFLLGNBQWEsUUFBTyxlQUFjLFFBQU8sZUFBYyxRQUFPLG9EQUEyQyxXQUFVLHVEQUE4QyxhQUFZLHVDQUE4QixNQUFLLGdCQUFlLEtBQUksT0FBTSxrQkFBaUIsZUFBUztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLHNEQUE0QyxFQUFFLFFBQVEsZUFBZSxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWdCLFlBQUcsRUFBRSxPQUFPLFdBQVMsRUFBRSxRQUFNLHNEQUE0QyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sK0RBQXFELEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLHVEQUFtQyxFQUFFLFVBQVEsbUJBQVMsMEJBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLGNBQVc7QUFBRyxlQUFNLDZDQUFtQyxFQUFFLFVBQVEsbUJBQVMsNkJBQW1CLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLHVEQUFtQyxFQUFFLFVBQVEsbUJBQVMsMEJBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLGNBQVc7QUFBRyxlQUFNLDZDQUFtQyxFQUFFLFVBQVEsbUJBQVMsNkJBQW1CLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sMkVBQW9ELEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSwrRUFBbUQsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsV0FBVyxRQUFNLCtEQUE2QyxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0seUVBQXVELEVBQUUsT0FBTztBQUFHLGVBQU0sNEJBQXVCLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLHNFQUFrRCxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSx1QkFBdUIsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLDhCQUF5QixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQStCLEtBQUk7QUFBa0IsZUFBTSwwQ0FBMkIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUE4QjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxjQUFhLE1BQUssTUFBSyxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsTUFBSyxNQUFLLEdBQUUsT0FBTSxFQUFDLE1BQUssU0FBUSxNQUFLLE1BQUssR0FBRSxLQUFJLEVBQUMsTUFBSyxTQUFRLE1BQUssTUFBSyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxhQUFTLE9BQU0seUJBQXFCLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsbUJBQWtCLE1BQUssWUFBVyxNQUFLLFlBQVcsVUFBUyxxQkFBYyxNQUFLLG9CQUFnQixNQUFLLG9CQUFnQixRQUFPLGlCQUFnQixRQUFPLGlCQUFnQixRQUFPLDhCQUE2QixXQUFVLDRCQUEyQixhQUFZLGNBQWEsTUFBSyxtQkFBZSxLQUFJLE9BQU0sa0JBQWlCLFVBQVM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSw4QkFBMkIsRUFBRSxRQUFRLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxpQ0FBOEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLDZDQUFvQyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw4QkFBOEIsRUFBRSxVQUFRLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxXQUFXO0FBQUcsZUFBTSw4QkFBOEIsRUFBRSxVQUFRLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSwrQkFBK0IsRUFBRSxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLCtCQUErQixFQUFFLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDJDQUFxQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0seUNBQXNDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxvQ0FBaUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHFEQUErQyxFQUFFLE9BQU87QUFBRyxlQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFXO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sa0RBQXlDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLFFBQVEsRUFBRSxLQUFLLFNBQU8sSUFBRSxNQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxTQUFPLElBQUUsTUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSx3QkFBcUIsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFtQixLQUFJO0FBQWtCLGVBQU0sd0JBQXFCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBZ0I7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEtBQUssSUFBSSxDQUFDLEdBQUUsSUFBRSxJQUFFLElBQUcsSUFBRSxJQUFFO0FBQUksTUFBRyxLQUFHLE1BQUksS0FBRyxHQUFHLFFBQU87QUFBRSxNQUFHLE1BQUksRUFBRSxRQUFPO0FBQUUsTUFBRyxLQUFHLEtBQUcsS0FBRyxFQUFFLFFBQU87QUFBRSxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLEVBQUMsS0FBSSx3Q0FBUyxLQUFJLDhDQUFVLE1BQUssbURBQVUsR0FBRSxNQUFLLGlDQUFPLEdBQUUsTUFBSyxFQUFDLE1BQUssRUFBQyxLQUFJLDRCQUFPLEtBQUksa0NBQVEsTUFBSywyQkFBTSxHQUFFLE1BQUssaUNBQU8sR0FBRSxPQUFNLEVBQUMsTUFBSyxFQUFDLEtBQUksOENBQVUsS0FBSSxvREFBVyxNQUFLLHlEQUFXLEdBQUUsTUFBSyxpQ0FBTyxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUMsS0FBSSw4Q0FBVSxLQUFJLG9EQUFXLE1BQUsseURBQVcsR0FBRSxNQUFLLGlDQUFPLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFRLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQVMsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLDRCQUFPLE9BQU0sd0NBQWMsS0FBSSxPQUFNLE9BQU0sd0NBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsc0VBQW1CLE1BQUssZ0NBQVcsTUFBSyxzQ0FBWSxVQUFTLGdGQUFtQixNQUFLLHVDQUFhLE1BQUssdUNBQWEsUUFBTyx5REFBZ0IsUUFBTyx5REFBZ0IsUUFBTyxpR0FBMEIsV0FBVSxvR0FBNkIsYUFBWSw2Q0FBYyxNQUFLLHdDQUFjLEtBQUksT0FBTSxrQkFBaUIsMkJBQU07QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxxSUFBNEIsRUFBRSxRQUFRLHNEQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0scUlBQTRCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSw2TEFBdUMsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxHQUFFO0FBQUMsY0FBSSxJQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEtBQUksRUFBRSxLQUFLLEtBQUksRUFBRSxLQUFLLElBQUk7QUFBRSxpQkFBTSxzTkFBNEMsRUFBRSxVQUFRLGtEQUFVLGtFQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFBQSxRQUFFO0FBQUMsZUFBTSxzTkFBNEMsRUFBRSxVQUFRLGtEQUFVLG1DQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsR0FBRTtBQUFDLGNBQUksSUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFFLElBQUUsR0FBRyxHQUFFLEVBQUUsS0FBSyxLQUFJLEVBQUUsS0FBSyxLQUFJLEVBQUUsS0FBSyxJQUFJO0FBQUUsaUJBQU0sa09BQThDLEVBQUUsTUFBTSxrRUFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQUEsUUFBRTtBQUFDLGVBQU0sa09BQThDLEVBQUUsTUFBTSxtQ0FBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLG9NQUF5QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sNE5BQTZDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSx1TEFBc0MsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHFRQUFtRCxFQUFFLE9BQU87QUFBRyxlQUFNLG9EQUFZLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDZMQUF1QyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSwyRUFBZSxFQUFFLEtBQUssU0FBTyxJQUFFLGlCQUFLLGNBQUksNEJBQVEsRUFBRSxLQUFLLFNBQU8sSUFBRSxXQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLG9GQUFtQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQTBCLEtBQUk7QUFBa0IsZUFBTSw0R0FBdUIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUF5QjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxVQUFTLE1BQUssUUFBTyxHQUFFLE1BQUssRUFBQyxNQUFLLFVBQVMsTUFBSyxRQUFPLEdBQUUsT0FBTSxFQUFDLE1BQUssYUFBWSxNQUFLLFFBQU8sR0FBRSxLQUFJLEVBQUMsTUFBSyxhQUFZLE1BQUssUUFBTyxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBVSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFTLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxRQUFPLE9BQU0sd0JBQWtCLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMseUJBQW1CLE1BQUssYUFBWSxNQUFLLGdCQUFVLFVBQVMsZ0JBQWUsTUFBSyxlQUFjLE1BQUssZUFBYyxRQUFPLGNBQWEsUUFBTyxjQUFhLFFBQU8sc0JBQXFCLFdBQVUseUJBQXdCLGFBQVksWUFBVyxNQUFLLHVCQUFpQixLQUFJLE9BQU0sa0JBQWlCLE9BQU07QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxxQ0FBZ0MsRUFBRSxRQUFRLGFBQWEsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxxQ0FBZ0MsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLHVEQUE2QyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxzQ0FBaUMsRUFBRSxVQUFRLFVBQVUsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxXQUFXO0FBQUcsZUFBTSxzQ0FBaUMsRUFBRSxVQUFRLFVBQVUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxzQ0FBaUMsRUFBRSxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLHNDQUFpQyxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDBDQUFxQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sMkNBQXNDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxtQ0FBbUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHlDQUF5QyxFQUFFLE9BQU87QUFBRyxlQUFNLGNBQWMsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sc0RBQTRDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLGNBQWMsRUFBRSxLQUFLLFNBQU8sSUFBRSxrQkFBVyxhQUFRLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSwyQkFBc0IsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFrQixLQUFJO0FBQWtCLGVBQU0seUJBQXlCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBaUI7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssVUFBUyxNQUFLLFNBQVEsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLE1BQUssU0FBUSxHQUFFLE9BQU0sRUFBQyxNQUFLLFVBQVMsTUFBSyxtQkFBZSxHQUFFLEtBQUksRUFBQyxNQUFLLFVBQVMsTUFBSyxtQkFBZSxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUSxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSx3QkFBb0IsT0FBTSxnQkFBZSxLQUFJLE9BQU0sT0FBTSxTQUFRLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLHFCQUFvQixNQUFLLGFBQVksTUFBSyxXQUFVLFVBQVMsbUJBQWtCLE1BQUssa0JBQWlCLE1BQUssa0JBQWlCLFFBQU8saUJBQWdCLFFBQU8saUJBQWdCLFFBQU8sMEJBQXNCLFdBQVUsNkJBQXlCLGFBQVksa0JBQWMsTUFBSyxnQkFBZSxLQUFJLE9BQU0sa0JBQWlCLGVBQWM7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxzQ0FBZ0MsRUFBRSxRQUFRLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxzQ0FBZ0MsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLHdDQUFrQyxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxvQ0FBMkIsRUFBRSxVQUFRLFdBQVEsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxTQUFTO0FBQUcsZUFBTSxtQ0FBMEIsRUFBRSxVQUFRLFdBQVEsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSxvQ0FBMkIsRUFBRSxVQUFRLFdBQVEsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sb0NBQTJCLEVBQUUsVUFBUSxXQUFRLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSw2Q0FBb0MsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDBDQUFvQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sNkNBQW9DLEVBQUUsUUFBUTtBQUFJLFlBQUcsRUFBRSxXQUFTLFFBQVEsUUFBTSxtREFBMEMsRUFBRSxPQUFPO0FBQUksZUFBTSxjQUFjLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDhDQUEyQyxFQUFFLE9BQU87QUFBQSxNQUFHLEtBQUk7QUFBb0IsZUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFPLElBQUUsc0JBQWlCLGlCQUFjLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxvQkFBb0IsRUFBRSxVQUFRLFdBQVE7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQWdCLEtBQUk7QUFBa0IsZUFBTSx1QkFBb0IsRUFBRSxVQUFRLFdBQVE7QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQWU7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssNEVBQWUsTUFBSyxzSEFBc0IsR0FBRSxNQUFLLEVBQUMsTUFBSywwREFBWSxNQUFLLHNIQUFzQixHQUFFLE9BQU0sRUFBQyxNQUFLLGdFQUFhLE1BQUssc0hBQXNCLEdBQUUsS0FBSSxFQUFDLE1BQUssZ0VBQWEsTUFBSyxzSEFBc0IsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsd0VBQWU7QUFBQSxNQUFNLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQU0sWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFTLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLDhDQUFVLE9BQU0scUdBQW9CLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsK0RBQWlCLE1BQUssZ0NBQVcsTUFBSyxzQ0FBWSxVQUFTLG1EQUFlLE1BQUssNkNBQWMsTUFBSyw2Q0FBYyxRQUFPLDZDQUFjLFFBQU8sNkNBQWMsUUFBTywyQ0FBc0IsV0FBVSw4Q0FBeUIsYUFBWSxpQ0FBWSxNQUFLLDRCQUFZLEtBQUksT0FBTSxrQkFBaUIsUUFBTztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLHVNQUF1QyxFQUFFLFFBQVEsd0VBQWlCLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sdU1BQXVDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSxtTkFBeUMsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBYSxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sMkxBQXFDLEVBQUUsVUFBUSw0Q0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLDhEQUFZO0FBQXNCLGVBQU0sMkxBQXFDLEVBQUUsVUFBUSw0Q0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBcUI7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx1TUFBdUMsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBc0IsZUFBTSx1TUFBdUMsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFxQjtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sNkRBQWdCLEVBQUUsTUFBTTtBQUF3QixZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sNkRBQWdCLEVBQUUsTUFBTTtBQUEwQixZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0sNkRBQWdCLEVBQUUsUUFBUTtBQUF3QixZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sNERBQWUsRUFBRSxPQUFPO0FBQWtDLGVBQU0sa0NBQVMsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sc0RBQWMsRUFBRSxPQUFPO0FBQUEsTUFBNkIsS0FBSTtBQUFvQixlQUFNLHVIQUF3QixFQUFFLEtBQUssU0FBTyxJQUFFLHVCQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLEdBQUcsRUFBRSxNQUFNO0FBQUEsTUFBa0IsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBZ0IsS0FBSTtBQUFrQixlQUFNLEdBQUcsRUFBRSxNQUFNO0FBQUEsTUFBcUI7QUFBUSxlQUFNO0FBQUEsSUFBZTtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxvREFBVyxNQUFLLGlDQUFPLEdBQUUsTUFBSyxFQUFDLE1BQUssNEJBQU8sTUFBSyxpQ0FBTyxHQUFFLE9BQU0sRUFBQyxNQUFLLHdDQUFTLE1BQUssaUNBQU8sR0FBRSxLQUFJLEVBQUMsTUFBSyx3Q0FBUyxNQUFLLGlDQUFPLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLG1GQUFxQjtBQUFBLE1BQVMsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBbUIsWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFrQixZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxrRkFBZ0IsT0FBTSw0RUFBZSxLQUFJLE9BQU0sT0FBTSx3Q0FBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFNBQVEsTUFBSyxRQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsVUFBUyxzRkFBb0IsTUFBSyw4REFBZ0IsTUFBSyxrREFBYyxVQUFTLDBFQUFrQixNQUFLLG1EQUFlLE1BQUssbURBQWUsUUFBTyx1REFBbUIsUUFBTyx1REFBbUIsUUFBTyx1RUFBb0IsV0FBVSxnSEFBK0IsYUFBWSxxRUFBa0IsTUFBSyx3S0FBcUMsS0FBSSxzQ0FBWSxrQkFBaUIsaUZBQWU7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxvTEFBbUMsRUFBRSxRQUFRLDJEQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sOEhBQTBCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSxzTUFBc0MsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLCtDQUFVLG9EQUFXLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSwyREFBYyxFQUFFLFVBQVEsb0JBQUssa0NBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sc0NBQVE7QUFBRyxlQUFNLDJEQUFjLEVBQUUsVUFBUSxvQkFBSyxrQ0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsMkRBQVksOENBQVUsSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLG1GQUFrQixFQUFFLE1BQU0sa0NBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLG1GQUFrQixFQUFFLE1BQU0sa0NBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSwyT0FBNkMsRUFBRSxNQUFNO0FBQUksWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLHFPQUE0QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0scUxBQW9DLEVBQUUsUUFBUTtBQUFrQixZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sc1BBQThDLEVBQUUsT0FBTztBQUFHLGVBQU0scUdBQXFCLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLGdQQUE2QyxFQUFFLE9BQU87QUFBQSxNQUFZLEtBQUk7QUFBb0IsZUFBTSxpSEFBdUIsRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxvR0FBb0IsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUFzRCxLQUFJO0FBQWtCLGVBQU0sZ0hBQXNCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBa0I7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLE1BQUk7QUFBQyxNQUFJLElBQUUsT0FBTztBQUFFLFVBQU8sR0FBRTtBQUFBLElBQUMsS0FBSTtBQUFTLGFBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsSUFBUyxLQUFJLFVBQVM7QUFBQyxVQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFVBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxVQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBQW5RLElBQXFRLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLFlBQVcsTUFBSyxjQUFRLEdBQUUsTUFBSyxFQUFDLE1BQUssUUFBTyxNQUFLLGNBQVEsR0FBRSxPQUFNLEVBQUMsTUFBSyxlQUFNLE1BQUssY0FBUSxHQUFFLEtBQUksRUFBQyxNQUFLLGVBQU0sTUFBSyxjQUFRLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsT0FBTSxTQUFRLE9BQU0sa0JBQWlCLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMscUJBQW9CLE1BQUssYUFBWSxNQUFLLFlBQVcsVUFBUyxlQUFXLE1BQUssZUFBYyxNQUFLLGVBQWMsUUFBTywrQkFBZSxRQUFPLCtCQUFlLFFBQU8sMENBQStCLFdBQVUsNkNBQWtDLGFBQVksZUFBYyxNQUFLLDBCQUFlLEtBQUksT0FBTSxrQkFBaUIscUJBQWU7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxvQ0FBNEIsRUFBRSxRQUFRLGlCQUFZLEdBQUcsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sb0NBQTRCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSw0RUFBa0QsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sZ0NBQXVCLEVBQUUsVUFBUSxZQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sYUFBSztBQUFHLGVBQU0sZ0NBQXVCLEVBQUUsVUFBUSxZQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sbUNBQXVCLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQUcsZUFBTSxtQ0FBdUIsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGtCQUFpQjtBQUFDLFlBQUksSUFBRTtBQUFFLFlBQUcsRUFBRSxXQUFTLGNBQWMsUUFBTSx1QkFBb0IsRUFBRSxNQUFNO0FBQWtCLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSx1QkFBb0IsRUFBRSxNQUFNO0FBQWdCLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSx1QkFBb0IsRUFBRSxRQUFRO0FBQWEsWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHNCQUFtQixFQUFFLE9BQU87QUFBbUIsZUFBTSxlQUFZLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDBCQUFrQixFQUFFLE9BQU87QUFBQSxNQUF5QixLQUFJO0FBQW9CLGVBQU0sMEJBQXFCLEVBQUUsS0FBSyxTQUFPLElBQUUsUUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxHQUFHLEVBQUUsTUFBTTtBQUFBLE1BQTJCLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQWlCLEtBQUk7QUFBa0IsZUFBTSxHQUFHLEVBQUUsTUFBTTtBQUFBLE1BQXlCO0FBQVEsZUFBTTtBQUFBLElBQWdCO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLG9EQUFXLE1BQUssdUNBQVEsR0FBRSxNQUFLLEVBQUMsTUFBSyx3Q0FBUyxNQUFLLHVDQUFRLEdBQUUsT0FBTSxFQUFDLE1BQUssMERBQVksTUFBSyx1Q0FBUSxHQUFFLEtBQUksRUFBQyxNQUFLLDBEQUFZLE1BQUssdUNBQVEsRUFBQztBQUFFLFdBQVMsRUFBRSxHQUFFO0FBQUMsV0FBTyxFQUFFLENBQUMsS0FBRztBQUFBLEVBQUk7QUFBQyxNQUFJLElBQUUsQ0FBQyxNQUFJO0FBQUMsUUFBSSxJQUFFLE9BQU87QUFBRSxZQUFPLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBUyxlQUFPLE9BQU8sTUFBTSxDQUFDLElBQUUsUUFBTTtBQUFBLE1BQVEsS0FBSSxVQUFTO0FBQUMsWUFBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQU07QUFBUSxZQUFHLE1BQUksS0FBSyxRQUFNO0FBQU8sWUFBRyxPQUFPLGVBQWUsQ0FBQyxNQUFJLE9BQU8sYUFBVyxFQUFFLFlBQVksUUFBTyxFQUFFLFlBQVk7QUFBQSxNQUFJO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLEdBQUUsSUFBRSxFQUFDLE9BQU0saUVBQWMsT0FBTSwwSUFBMkIsS0FBSSxPQUFNLE9BQU0sd0NBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsZ0VBQWtCLE1BQUssZ0NBQVcsTUFBSywwQkFBVSxVQUFTLG9FQUFpQixNQUFLLDZDQUFjLE1BQUssNkNBQWMsUUFBTyx5REFBZ0IsUUFBTyx5REFBZ0IsUUFBTyx1R0FBMkIsV0FBVSwwR0FBOEIsYUFBWSx1Q0FBYSxNQUFLLHdDQUFjLEtBQUksT0FBTSxrQkFBaUIsZ0VBQWE7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxrTUFBdUMsRUFBRSxRQUFRLHNEQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sa01BQXVDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUcsZUFBTSxtTUFBd0MsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBRyxLQUFJLFdBQVU7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sK0pBQWtDLEVBQUUsVUFBUSxrREFBVSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLHdEQUFXO0FBQUcsZUFBTSwrSkFBa0MsRUFBRSxVQUFRLGtEQUFVLDZCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxhQUFZO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLG1KQUFnQyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtBQUFHLGVBQU0sbUpBQWdDLEVBQUUsTUFBTSw2QkFBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDROQUE2QyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sb1BBQWlELEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxtTUFBd0MsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHFRQUFtRCxFQUFFLE9BQU87QUFBRyxlQUFNLDRFQUFnQixFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxxTkFBMkMsRUFBRSxPQUFPO0FBQUEsTUFBRyxLQUFJO0FBQW9CLGVBQU0sMEdBQXFCLEVBQUUsS0FBSyxTQUFPLElBQUUsV0FBSSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSw0R0FBdUIsRUFBRSxNQUFNO0FBQUEsTUFBRyxLQUFJO0FBQWdCLGVBQU07QUFBQSxNQUEwQixLQUFJO0FBQWtCLGVBQU0sOEhBQTBCLEVBQUUsTUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBeUI7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxNQUFJO0FBQUMsTUFBSSxJQUFFLEVBQUMsUUFBTyxFQUFDLE1BQUssNEJBQU8sTUFBSywyQkFBTSxHQUFFLE1BQUssRUFBQyxNQUFLLGtDQUFRLE1BQUssMkJBQU0sR0FBRSxPQUFNLEVBQUMsTUFBSyxrQ0FBUSxNQUFLLDJCQUFNLEdBQUUsS0FBSSxFQUFDLE1BQUssa0NBQVEsTUFBSywyQkFBTSxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBTyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFNLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBSyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSw2QkFBUSxPQUFNLHdFQUFnQixLQUFJLGdEQUFZLE9BQU0sd0NBQVMsTUFBSyw2REFBZSxRQUFPLDRFQUFvQixRQUFPLDRFQUFvQixRQUFPLDREQUFjLE1BQUssNkRBQWUsTUFBSyw2REFBZSxPQUFNLCtEQUFpQixNQUFLLG1FQUFnQixLQUFJLDREQUFjLE9BQU0sZ0ZBQW1CLFVBQVMsa0dBQXNCLE1BQUsscUZBQW1CLE1BQUsseUVBQWlCLFVBQVMseUVBQWlCLE1BQUssdUZBQXFCLE1BQUssdUZBQXFCLFFBQU8sMkVBQW1CLFFBQU8sMkVBQW1CLFFBQU8sOEZBQXVCLFdBQVUsMklBQWlDLGFBQVksa0dBQXNCLE1BQUssNkNBQWMsS0FBSSw0REFBYyxrQkFBaUIsNEJBQU87QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxpREFBYyxFQUFFLFFBQVEsNERBQWUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQWEsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxpREFBYyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFhLGVBQU0sZ0RBQWEsRUFBRSxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsTUFBd0IsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDBDQUFZLEVBQUUsVUFBUSxnQ0FBTyxpQkFBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBTSxnQ0FBTztBQUFrQixlQUFNLDBDQUFZLEVBQUUsVUFBUSxnQ0FBTyxpQkFBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQWlCO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sc0RBQWMsRUFBRSxNQUFNLGlCQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO0FBQWtCLGVBQU0sc0RBQWMsRUFBRSxNQUFNLGlCQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBaUI7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLHVEQUFlLEVBQUUsTUFBTTtBQUF1QixZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sdURBQWUsRUFBRSxNQUFNO0FBQXNCLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSx1REFBZSxFQUFFLFFBQVE7QUFBb0IsWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLHFGQUFvQixFQUFFLE9BQU87QUFBcUIsZUFBTSxzQkFBTyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxnREFBYSxFQUFFLE9BQU87QUFBQSxNQUF1QixLQUFJO0FBQW9CLGVBQU0sb0ZBQW1CLEVBQUUsS0FBSyxTQUFPLElBQUUsV0FBSSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQUssU0FBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxHQUFHLEVBQUUsTUFBTTtBQUFBLE1BQWMsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBWSxLQUFJO0FBQWtCLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUFpQjtBQUFRLGVBQU07QUFBQSxJQUFXO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGlCQUFRLE1BQUssUUFBSSxHQUFFLE1BQUssRUFBQyxNQUFLLFFBQU8sTUFBSyxRQUFJLEdBQUUsT0FBTSxFQUFDLE1BQUsscUJBQVUsTUFBSyxRQUFJLEdBQUUsS0FBSSxFQUFDLE1BQUsscUJBQVUsTUFBSyxRQUFJLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLFFBQU07QUFBQSxNQUFLLEtBQUksVUFBUztBQUFDLFlBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxRQUFNO0FBQU8sWUFBRyxNQUFJLEtBQUssUUFBTTtBQUFPLFlBQUcsT0FBTyxlQUFlLENBQUMsTUFBSSxPQUFPLGFBQVcsRUFBRSxZQUFZLFFBQU8sRUFBRSxZQUFZO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQyxHQUFFLElBQUUsRUFBQyxPQUFNLHdCQUFVLE9BQU0sZ0NBQWdCLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsd0JBQWUsTUFBSyxlQUFXLE1BQUssZ0JBQVUsVUFBUyxrQ0FBdUIsTUFBSywrQkFBZSxNQUFLLCtCQUFlLFFBQU8saUJBQVcsUUFBTyxpQkFBVyxRQUFPLGtDQUFzQixXQUFVLHFDQUF5QixhQUFZLG1CQUFhLE1BQUssaUJBQVcsS0FBSSxPQUFNLGtCQUFpQix1QkFBUztBQUFFLFNBQU0sQ0FBQyxNQUFJO0FBQUMsWUFBTyxFQUFFLE1BQUs7QUFBQSxNQUFDLEtBQUk7QUFBZSxlQUFNLHNFQUFrQyxFQUFFLFFBQVEsbUNBQWUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxzRUFBa0MsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLHdHQUF5RCxFQUFFLEVBQUUsUUFBTyxHQUFHLENBQUM7QUFBQSxNQUFHLEtBQUksV0FBVTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx1Q0FBcUIsRUFBRSxVQUFRLGlCQUFTLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sbUJBQVM7QUFBRyxlQUFNLHVDQUFxQixFQUFFLFVBQVEsaUJBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSx1Q0FBcUIsRUFBRSxNQUFNLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLHVDQUFxQixFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLHFGQUEwQyxFQUFFLE1BQU07QUFBSSxZQUFHLEVBQUUsV0FBUyxZQUFZLFFBQU0sK0VBQTJDLEVBQUUsTUFBTTtBQUFJLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxpRUFBcUMsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLCtFQUF5QyxFQUFFLE9BQU87QUFBRyxlQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLE1BQU07QUFBQSxNQUFlO0FBQUEsTUFBQyxLQUFJO0FBQWtCLGVBQU0sZ0ZBQXVDLEVBQUUsT0FBTztBQUFBLE1BQUcsS0FBSTtBQUFvQixlQUFNLDZEQUE4QixFQUFFLEVBQUUsTUFBSyxJQUFJLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBYyxlQUFNLDJDQUEyQixFQUFFLE1BQU07QUFBQSxNQUFHLEtBQUk7QUFBZ0IsZUFBTTtBQUFBLE1BQXVCLEtBQUk7QUFBa0IsZUFBTSxtREFBOEIsRUFBRSxNQUFNO0FBQUEsTUFBRztBQUFRLGVBQU07QUFBQSxJQUFzQjtBQUFBLEVBQUM7QUFBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU0sRUFBQyxhQUFZLEdBQUcsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHLE1BQUk7QUFBQyxNQUFJLElBQUUsRUFBQyxRQUFPLEVBQUMsTUFBSyxnQkFBSyxNQUFLLGVBQUksR0FBRSxNQUFLLEVBQUMsTUFBSyxnQkFBSyxNQUFLLGVBQUksR0FBRSxPQUFNLEVBQUMsTUFBSyxVQUFJLE1BQUssZUFBSSxHQUFFLEtBQUksRUFBQyxNQUFLLFVBQUksTUFBSyxlQUFJLEVBQUM7QUFBRSxXQUFTLEVBQUUsR0FBRTtBQUFDLFdBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxFQUFJO0FBQUMsTUFBSSxJQUFFLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxPQUFPO0FBQUUsWUFBTyxHQUFFO0FBQUEsTUFBQyxLQUFJO0FBQVMsZUFBTyxPQUFPLE1BQU0sQ0FBQyxJQUFFLDRCQUFXO0FBQUEsTUFBSyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFLLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBVyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxnQkFBSyxPQUFNLDRCQUFPLEtBQUksT0FBTSxPQUFNLDRCQUFPLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sU0FBUSxNQUFLLFFBQU8sS0FBSSxPQUFNLE9BQU0sU0FBUSxVQUFTLCtCQUFVLE1BQUssbUJBQVEsTUFBSyxtQkFBUSxVQUFTLG1CQUFRLE1BQUssb0JBQVMsTUFBSyxvQkFBUyxRQUFPLG9CQUFTLFFBQU8sb0JBQVMsUUFBTyx3Q0FBYyxXQUFVLDJDQUFpQixhQUFZLDBCQUFVLE1BQUsscUJBQVUsS0FBSSxPQUFNLGtCQUFpQixlQUFJO0FBQUUsU0FBTSxDQUFDLE1BQUk7QUFBQyxZQUFPLEVBQUUsTUFBSztBQUFBLE1BQUMsS0FBSTtBQUFlLGVBQU0sOENBQVcsRUFBRSxRQUFRLGtDQUFTLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxNQUFHLEtBQUk7QUFBZ0IsWUFBRyxFQUFFLE9BQU8sV0FBUyxFQUFFLFFBQU0sOENBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRyxlQUFNLHNFQUFlLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDhDQUFXLEVBQUUsVUFBUSxRQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQU0sb0JBQUs7QUFBRyxlQUFNLDhDQUFXLEVBQUUsVUFBUSxRQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFJLGFBQVk7QUFBQyxZQUFJLElBQUUsRUFBRSxZQUFVLE9BQUssS0FBSSxJQUFFLEVBQUUsRUFBRSxNQUFNO0FBQUUsWUFBRyxFQUFFLFFBQU0sOENBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLDhDQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSSxrQkFBaUI7QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsV0FBUyxjQUFjLFFBQU0sMkRBQWMsRUFBRSxNQUFNO0FBQU8sWUFBRyxFQUFFLFdBQVMsWUFBWSxRQUFNLDJEQUFjLEVBQUUsTUFBTTtBQUFPLFlBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxpRUFBZSxFQUFFLFFBQVE7QUFBSSxZQUFHLEVBQUUsV0FBUyxRQUFRLFFBQU0sOEZBQW1CLEVBQUUsT0FBTztBQUFHLGVBQU0sZUFBSyxFQUFFLEVBQUUsTUFBTSxLQUFHLEVBQUUsTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUk7QUFBa0IsZUFBTSxvREFBWSxFQUFFLE9BQU87QUFBQSxNQUFPLEtBQUk7QUFBb0IsZUFBTSw4Q0FBZ0IsRUFBRSxFQUFFLE1BQUssSUFBSSxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxHQUFHLEVBQUUsTUFBTTtBQUFBLE1BQWMsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBTyxLQUFJO0FBQWtCLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUFpQjtBQUFRLGVBQU07QUFBQSxJQUFNO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxLQUFJO0FBQUMsU0FBTSxFQUFDLGFBQVksR0FBRyxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsTUFBSTtBQUFDLE1BQUksSUFBRSxFQUFDLFFBQU8sRUFBQyxNQUFLLGdCQUFLLE1BQUssZUFBSSxHQUFFLE1BQUssRUFBQyxNQUFLLHNCQUFNLE1BQUssZUFBSSxHQUFFLE9BQU0sRUFBQyxNQUFLLGdCQUFLLE1BQUssZUFBSSxHQUFFLEtBQUksRUFBQyxNQUFLLGdCQUFLLE1BQUssZUFBSSxFQUFDO0FBQUUsV0FBUyxFQUFFLEdBQUU7QUFBQyxXQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksSUFBRSxDQUFDLE1BQUk7QUFBQyxRQUFJLElBQUUsT0FBTztBQUFFLFlBQU8sR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFTLGVBQU8sT0FBTyxNQUFNLENBQUMsSUFBRSxRQUFNO0FBQUEsTUFBUyxLQUFJLFVBQVM7QUFBQyxZQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBTTtBQUFRLFlBQUcsTUFBSSxLQUFLLFFBQU07QUFBTyxZQUFHLE9BQU8sZUFBZSxDQUFDLE1BQUksT0FBTyxhQUFXLEVBQUUsWUFBWSxRQUFPLEVBQUUsWUFBWTtBQUFBLE1BQUk7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxnQkFBSyxPQUFNLDRCQUFPLEtBQUksT0FBTSxPQUFNLFNBQVEsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxTQUFRLE1BQUssUUFBTyxLQUFJLE9BQU0sT0FBTSxTQUFRLFVBQVMsZ0NBQVcsTUFBSyxvQkFBUyxNQUFLLG9CQUFTLFVBQVMsb0JBQVMsTUFBSyxxQkFBVSxNQUFLLHFCQUFVLFFBQU8scUJBQVUsUUFBTyxxQkFBVSxRQUFPLG1DQUFjLFdBQVUsc0NBQWlCLGFBQVkscUJBQVUsTUFBSyxzQkFBVyxLQUFJLE9BQU0sa0JBQWlCLGVBQUk7QUFBRSxTQUFNLENBQUMsTUFBSTtBQUFDLFlBQU8sRUFBRSxNQUFLO0FBQUEsTUFBQyxLQUFJO0FBQWUsZUFBTSxnRUFBYyxFQUFFLFFBQVEsNEJBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUcsS0FBSTtBQUFnQixZQUFHLEVBQUUsT0FBTyxXQUFTLEVBQUUsUUFBTSxnRUFBYyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFHLGVBQU0sOEZBQW1CLEVBQUUsRUFBRSxRQUFPLEdBQUcsQ0FBQztBQUFBLE1BQUcsS0FBSSxXQUFVO0FBQUMsWUFBSSxJQUFFLEVBQUUsWUFBVSxPQUFLLEtBQUksSUFBRSxFQUFFLEVBQUUsTUFBTTtBQUFFLFlBQUcsRUFBRSxRQUFNLDhDQUFXLEVBQUUsVUFBUSxRQUFHLGlCQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFNLG9CQUFLO0FBQUcsZUFBTSw4Q0FBVyxFQUFFLFVBQVEsUUFBRyxpQkFBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksYUFBWTtBQUFDLFlBQUksSUFBRSxFQUFFLFlBQVUsT0FBSyxLQUFJLElBQUUsRUFBRSxFQUFFLE1BQU07QUFBRSxZQUFHLEVBQUUsUUFBTSw4Q0FBVyxFQUFFLE1BQU0saUJBQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUk7QUFBRyxlQUFNLDhDQUFXLEVBQUUsTUFBTSxpQkFBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUksa0JBQWlCO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLFdBQVMsY0FBYyxRQUFNLDJEQUFjLEVBQUUsTUFBTTtBQUFPLFlBQUcsRUFBRSxXQUFTLFlBQVksUUFBTSwyREFBYyxFQUFFLE1BQU07QUFBTyxZQUFHLEVBQUUsV0FBUyxXQUFXLFFBQU0saUVBQWUsRUFBRSxRQUFRO0FBQUksWUFBRyxFQUFFLFdBQVMsUUFBUSxRQUFNLDRFQUFnQixFQUFFLE9BQU87QUFBRyxlQUFNLHNCQUFPLEVBQUUsRUFBRSxNQUFNLEtBQUcsRUFBRSxNQUFNO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSTtBQUFrQixlQUFNLDBEQUFhLEVBQUUsT0FBTztBQUFBLE1BQU8sS0FBSTtBQUFvQixlQUFNLDZDQUFVLEVBQUUsS0FBSyxTQUFPLElBQUUsV0FBSSxFQUFFLFNBQUksRUFBRSxFQUFFLE1BQUssUUFBRyxDQUFDO0FBQUEsTUFBRyxLQUFJO0FBQWMsZUFBTSxHQUFHLEVBQUUsTUFBTTtBQUFBLE1BQVcsS0FBSTtBQUFnQixlQUFNO0FBQUEsTUFBUyxLQUFJO0FBQWtCLGVBQU0sR0FBRyxFQUFFLE1BQU07QUFBQSxNQUFVO0FBQVEsZUFBTTtBQUFBLElBQVE7QUFBQSxFQUFDO0FBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFNLEVBQUMsYUFBWSxHQUFHLEVBQUM7QUFBQztBQUFDLElBQUksS0FBRyxPQUFPLFdBQVc7QUFBekIsSUFBMkIsS0FBRyxPQUFPLFVBQVU7QUFBRSxJQUFNLEtBQU4sTUFBUTtBQUFBLEVBQUMsY0FBYTtBQUFDLFNBQUssT0FBSyxvQkFBSSxXQUFRLEtBQUssU0FBTyxvQkFBSTtBQUFBLEVBQUc7QUFBQSxFQUFDLElBQUksTUFBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsS0FBSyxLQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxPQUFPLE1BQUksWUFBVSxRQUFPLEdBQUU7QUFBQyxVQUFHLEtBQUssT0FBTyxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxpQ0FBaUM7QUFBRSxXQUFLLE9BQU8sSUFBSSxFQUFFLElBQUcsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBSTtBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssT0FBTyxDQUFDLEdBQUU7QUFBQSxFQUFJO0FBQUEsRUFBQyxJQUFJLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxLQUFLO0FBQU8sUUFBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFHLENBQUMsRUFBQztBQUFFLGFBQU8sT0FBTyxFQUFFLElBQUcsRUFBQyxHQUFHLEdBQUUsR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDLEVBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsU0FBUyxLQUFJO0FBQUMsU0FBTyxJQUFJO0FBQUU7QUFBQyxJQUFJLEtBQUcsR0FBRztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxRQUFPLE1BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFVBQVMsUUFBTyxTQUFRLE9BQU0saUJBQWdCLE9BQU0sT0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxRQUFPLFFBQU8sT0FBTSxpQkFBZ0IsT0FBTSxPQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMs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QUFJLEVBQUUsRUFBQyxNQUFLLFVBQVMsT0FBTSxpQkFBZ0IsT0FBTSxPQUFHLFFBQU8sU0FBUSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxPQUFNLGlCQUFnQixPQUFNLE9BQUcsUUFBTyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLFFBQU8sTUFBRyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxRQUFPLE1BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFVBQVMsT0FBTSxpQkFBZ0IsT0FBTSxPQUFHLFFBQU8sU0FBUSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxPQUFNLGlCQUFnQixPQUFNLE9BQUcsUUFBTyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxhQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssTUFBSyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxRQUFPLE1BQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLE9BQU0sR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGFBQVksR0FBRyxFQUFFLENBQUMsR0FBRSxPQUFNLEdBQUUsV0FBVSxNQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sYUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLEtBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxnQkFBZSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLE1BQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxnQkFBZSxHQUFHLEVBQUUsQ0FBQyxHQUFFLE9BQU0sR0FBRSxXQUFVLEtBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGVBQWMsR0FBRyxFQUFFLENBQUMsR0FBRSxPQUFNLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxZQUFXLEdBQUcsRUFBRSxDQUFDLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sWUFBVyxHQUFHLEVBQUUsQ0FBQyxHQUFFLFNBQVEsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGVBQWMsR0FBRyxFQUFFLENBQUMsR0FBRSxNQUFLLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxjQUFhLEdBQUcsRUFBRSxDQUFDLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sY0FBYSxHQUFHLEVBQUUsQ0FBQyxHQUFFLFNBQVEsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGlCQUFnQixHQUFHLEVBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGlCQUFnQixRQUFPLFNBQVEsR0FBRyxFQUFFLENBQUMsR0FBRSxTQUFRLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0saUJBQWdCLFFBQU8sYUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGlCQUFnQixRQUFPLGFBQVksR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGlCQUFnQixRQUFPLFlBQVcsR0FBRyxFQUFFLENBQUMsR0FBRSxVQUFTLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxpQkFBZ0IsUUFBTyxlQUFjLEdBQUcsRUFBRSxDQUFDLEdBQUUsUUFBTyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0saUJBQWdCLFFBQU8sYUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE9BQU0sWUFBVyxVQUFTLEdBQUUsUUFBTyxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsT0FBTSxhQUFZLE1BQUssR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxPQUFNLGFBQVksSUFBRyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLENBQUMsTUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsQ0FBQyxNQUFJLEVBQUUsWUFBWSxDQUFDO0FBQUM7QUFBQyxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsQ0FBQyxNQUFJLEVBQUUsWUFBWSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssU0FBUSxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxTQUFRLFNBQVEsR0FBRSxlQUFjLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssZ0JBQWUsTUFBSyxHQUFFLE9BQU0sRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxhQUFhO0FBQUUsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFNBQVEsT0FBTSxHQUFFLE1BQUssSUFBRSxJQUFFLE1BQUssR0FBRyxFQUFFLElBQUUsSUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssVUFBUyxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssT0FBTSxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLE9BQU0sV0FBVSxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLE1BQU0sUUFBUSxDQUFDLElBQUUsT0FBTyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUU7QUFBRSxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssV0FBVSxRQUFPLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssYUFBWSxXQUFVLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFlBQVcsV0FBVSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLFdBQVUsR0FBRSxJQUFJLGVBQWM7QUFBQyxXQUFPLE9BQU8sTUFBSSxhQUFXLEVBQUUsSUFBRTtBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssZUFBYyxXQUFVLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEVBQUUsRUFBQyxNQUFLLFdBQVUsV0FBVSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxTQUFRLFdBQVUsR0FBRSxZQUFXLE9BQU8sTUFBSSxhQUFXLElBQUUsTUFBSSxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsR0FBRSxLQUFJLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssb0JBQW1CLE9BQU0sR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksRUFBRSxFQUFDLE1BQUssUUFBTyxRQUFPLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxXQUFVLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsU0FBTyxFQUFFLFVBQVEsRUFBRSxRQUFNLE9BQUksSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLEdBQUUsR0FBRyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLEdBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFRLENBQUMsUUFBTyxLQUFJLE9BQU0sTUFBSyxLQUFJLFNBQVMsR0FBRSxJQUFFLEVBQUUsU0FBTyxDQUFDLFNBQVEsS0FBSSxNQUFLLE9BQU0sS0FBSSxVQUFVO0FBQUUsTUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFFLEVBQUUsSUFBSSxDQUFDLE1BQUksT0FBTyxNQUFJLFdBQVMsRUFBRSxZQUFZLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLE1BQUksV0FBUyxFQUFFLFlBQVksSUFBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLElBQUksSUFBSSxDQUFDLEdBQUUsSUFBRSxJQUFJLElBQUksQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFNLElBQUcsSUFBRSxFQUFFLFdBQVMsSUFBRyxJQUFFLEVBQUUsVUFBUSxJQUFHLElBQUUsS0FBSSxFQUFFLGFBQVcsSUFBSSxFQUFDLE1BQUssYUFBWSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsUUFBSSxJQUFFO0FBQUUsUUFBRyxFQUFFLFNBQU8sWUFBWSxLQUFFLEVBQUUsWUFBWTtBQUFFLFFBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFNO0FBQUEsYUFBVyxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQU07QUFBQSxRQUFRLFFBQU8sRUFBRSxPQUFPLEtBQUssRUFBQyxNQUFLLGlCQUFnQixVQUFTLGNBQWEsUUFBTyxDQUFDLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxPQUFNLEVBQUUsT0FBTSxNQUFLLEVBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxFQUFDLEdBQUUsT0FBTSxFQUFFLE1BQUssQ0FBQyxHQUFFLElBQUUsSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsSUFBSSxFQUFFLEVBQUMsTUFBSyxVQUFTLE9BQU0sRUFBRSxNQUFLLENBQUMsR0FBRSxLQUFJLEdBQUUsT0FBTSxFQUFFLE1BQUssQ0FBQztBQUFFLFNBQU8sSUFBSSxFQUFFLEVBQUMsTUFBSyxRQUFPLElBQUcsR0FBRSxLQUFJLElBQUksRUFBRSxFQUFDLE1BQUssV0FBVSxPQUFNLEVBQUUsTUFBSyxDQUFDLEdBQUUsT0FBTSxFQUFFLE1B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QUMsZ0JBQUksSUFBRTtBQUFFLGNBQUUsUUFBTSxFQUFFLFFBQVEsSUFBSSxDQUFDLEdBQUUsTUFBSSxLQUFLLFFBQVEsR0FBRSxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUU7QUFBQSxVQUFLO0FBQUEsVUFBQyxLQUFJLGdCQUFlO0FBQUMsZ0JBQUksSUFBRSxHQUFFLElBQUUsS0FBSyxRQUFRLEVBQUUsTUFBSyxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUUsS0FBSyxRQUFRLEVBQUUsT0FBTSxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssU0FBUSxDQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUUsQ0FBQyxNQUFLLFdBQVUsS0FBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLFdBQVMsR0FBRSxJQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLFFBQU0sQ0FBQyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLFFBQU0sQ0FBQyxDQUFDLENBQUM7QUFBRSxjQUFFLFFBQU07QUFBRTtBQUFBLFVBQUs7QUFBQSxVQUFDLEtBQUksU0FBUTtBQUFDLGdCQUFJLElBQUU7QUFBRSxjQUFFLE9BQUs7QUFBUSxnQkFBSSxJQUFFLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRSxNQUFJLEtBQUssUUFBUSxHQUFFLEVBQUMsR0FBRyxHQUFFLE1BQUssQ0FBQyxHQUFHLEVBQUUsTUFBSyxlQUFjLENBQUMsRUFBQyxDQUFDLENBQUM7QUFBRSxnQkFBRyxLQUFLLFdBQVMsZ0JBQWdCLEdBQUUsY0FBWTtBQUFBLGdCQUFPLEdBQUUsUUFBTTtBQUFFLGdCQUFHLEVBQUUsTUFBSztBQUFDLGtCQUFJLElBQUUsS0FBSyxRQUFRLEVBQUUsTUFBSyxFQUFDLEdBQUcsR0FBRSxNQUFLLENBQUMsR0FBRyxFQUFFLE1BQUssT0FBTyxF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QUFFLE9BQU8sTUFBSSxTQUFTLEtBQUssU0FBUztBQUFHLGVBQU8sRUFBRSxDQUFDLEVBQUUsUUFBTSxHQUFFLEVBQUMsT0FBTSxHQUFFLEtBQUksR0FBRyxFQUFFLFNBQVMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFFO0FBQUEsTUFBQztBQUFDLFVBQUcsRUFBRSxDQUFDLE1BQUksRUFBRSxRQUFNLEVBQUMsS0FBSSxJQUFHO0FBQUUsVUFBSSxJQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSSxJQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sTUFBSSxXQUFXLEtBQUssU0FBUztBQUFHLGFBQU0sRUFBQyxPQUFNLEdBQUUsS0FBSSxJQUFFLEVBQUM7QUFBQSxJQUFDLEdBQUUsSUFBRSxDQUFDLE1BQUk7QUFBQyxVQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sS0FBSztBQUFPLFVBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxFQUFDLEtBQUksR0FBRSxPQUFNLEVBQUMsSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLEVBQUUsTUFBSSxFQUFDLEdBQUcsRUFBRSxPQUFNLEdBQUUsRUFBRSxHQUFFLFFBQU07QUFBRSxVQUFJLElBQUUsRUFBRTtBQUFPLGVBQVEsS0FBSyxFQUFFLFFBQU8sRUFBRSxDQUFDO0FBQUUsUUFBRSxPQUFLO0FBQUEsSUFBQztBQUFFLGFBQVEsS0FBSyxLQUFLLEtBQUssUUFBUSxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUcsTUFBSSxFQUFFLENBQUMsR0FBRTtBQUFDLFVBQUUsQ0FBQztBQUFFO0FBQUEsTUFBUTtBQUFDLFVBQUcsRUFBRSxVQUFTO0FBQUMsWUFBSSxJQUFFLEVBQUUsU0FBUyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRztBQUFHLFlBQUcsTUFBSSxFQUFFLENBQUMsS0FBRyxHQUFFO0FBQUMsWUFBRSxDQUFDO0FBQUU7QUFBQSxRQUFRO0FBQUEsTUFBQztBQUFDLFVBQUcsS0FBSyxpQkFBaUIsSUFBSSxFQUFF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QUUsUUFBRSxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUUsRUFBQyxHQUFHLEdBQUUsVUFBUyxFQUFDLENBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxPQUFPLEtBQUssQ0FBQyxFQUFFLFNBQU8sR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLFdBQVMsa0JBQWdCLFVBQVE7QUFBYyxRQUFFLFdBQVMsRUFBQyxDQUFDLENBQUMsR0FBRSxFQUFDO0FBQUEsSUFBQztBQUFDLFdBQU0sRUFBQyxTQUFRLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLElBQUksR0FBRyxDQUFDO0FBQUUsU0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFFLEVBQUUsS0FBSyxHQUFFLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsS0FBRyxFQUFDLE1BQUssb0JBQUksTUFBRztBQUFFLE1BQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLFFBQU07QUFBRyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsS0FBSztBQUFJLFVBQU8sRUFBRSxNQUFLO0FBQUEsSUFBQyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBWSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBTSxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBUSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBVSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQUEsSUFBTSxLQUFJO0FBQUEsSUFBTyxLQUFJO0FBQW1CLGFBQU07QUFBQSxJQUFHLEtBQUk7QUFBUSxhQUFPLEdBQUcsRUFBRSxTQUFRLENBQUM7QUFBQSxJQUFFLEtBQUksVUFBUztBQUFDLGVBQVEsS0FBSyxFQUFFLE1BQU0sS0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUUsQ0FBQyxFQUFFLFFBQU07QUFBRyxhQUFNO0FBQUEsSUFBRTtBQUFBLElBQUMsS0FBSSxTQUFRO0FBQUMsZUFBUSxLQUFLLEVBQUUsUUFBUSxLQUFHLEdBQUcsR0FBRSxDQUFDLEVBQUUsUUFBTTtBQUFHLGFBQU07QUFBQSxJQUFFO0FBQUEsSUFBQyxLQUFJO0FBQWUsYUFBTyxHQUFHLEVBQUUsTUFBSyxDQUFDLEtBQUcsR0FBRyxFQUFFLE9BQU0sQ0FBQztBQUFBLElBQUUsS0FBSSxTQUFRO0FBQUMsZUFBUSxLQUFLLEVBQUUsTUFBTSxLQUFHLEdBQUcsR0FBRSxDQUFDLEVBQUUsUUFBTTtBQUFHLFVBQUcsRUFBRSxRQUFNLEdBQUcsRUFBRSxNQUFLLENBQUMsRUFBRSxRQUFNO0FBQUcsYUFBTTtBQUFBLElBQUU7QUFBQSxJQUFDLEtBQUk7QUFBUyxhQUFPLEdBQUcsRUFBRSxTQUFRLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQU0sYUFBTyxHQUFHLEVBQUUsU0FBUSxDQUFDLEtBQUcsR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFNLGFBQU8sR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFBLElBQVUsS0FBSTtBQUFBLElBQVcsS0FBSTtBQUFBLElBQWMsS0FBSTtBQUFBLElBQVcsS0FBSTtBQUFXLGFBQU8sR0FBRyxFQUFFLFdBQVUsQ0FBQztBQUFBLElBQUUsS0FBSTtBQUFPLGFBQU8sR0FBRyxFQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVUsYUFBTyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVcsYUFBTyxHQUFHLEVBQUUsV0FBVSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVMsYUFBTTtBQUFBLElBQUcsS0FBSTtBQUFZLGFBQU07QUFBQSxJQUFHLEtBQUk7QUFBTyxhQUFPLEdBQUcsRUFBRSxJQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsS0FBSSxDQUFDO0FBQUEsSUFBRSxLQUFJO0FBQVUsYUFBTTtBQUFBLElBQUcsS0FBSTtBQUFRLGFBQU07QUFBQSxJQUFHO0FBQUEsRUFBUTtBQUFDLFFBQU0sTUFBTSx3QkFBd0IsRUFBRSxJQUFJLEVBQUU7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUcsQ0FBQyxFQUFFLEtBQUssT0FBTSxNQUFNLHNDQUFzQztBQUFFLElBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksR0FBRSxFQUFFLFFBQU0sQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsR0FBRSxFQUFDLFFBQU8sRUFBRSxNQUFLLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsYUFBVyxPQUFNLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUMsUUFBTyxFQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsaUJBQWUsT0FBTSxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxJQUFJLE1BQUk7QUFBQyxXQUFPLEVBQUUsTUFBTSxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRyxFQUFFLFVBQVEsQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLE1BQUksYUFBVyxFQUFDLE1BQUssRUFBQyxPQUFNLEdBQUUsS0FBSSxFQUFDLE9BQU0sU0FBUSxHQUFFLFVBQVMsQ0FBQyxFQUFDLEVBQUMsSUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxRQUFNLE1BQUksR0FBRSxFQUFFLFdBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxXQUFPLEVBQUUsSUFBSSxHQUFFLENBQUMsR0FBRTtBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsSUFBSSxLQUFHLEVBQUUsaUJBQWdCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFdBQVcsR0FBRSxTQUFRLE1BQUksRUFBRSxLQUFLO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxNQUFLLFVBQVMsSUFBSSxRQUFPO0FBQUMsV0FBTyxFQUFFLFdBQVcsTUFBSyxTQUFRLEVBQUMsR0FBRyxFQUFDLENBQUMsR0FBRSxLQUFLO0FBQUEsRUFBSyxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDO0FBQUUsU0FBTyxJQUFJLEdBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLENBQUMsQ0FBQyxFQUFFO0FBQUk7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxPQUFPLE9BQU8sQ0FBQztBQUFFLE1BQUcsRUFBRSxXQUFTLEVBQUUsUUFBTyxHQUFHLENBQUMsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFFLElBQUUsRUFBRSxNQUFNLENBQUMsTUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUUsUUFBTSxNQUFNLDhDQUE4QztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsR0FBRyxDQUFDLEVBQUUsUUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sRUFBRSxVQUFVLENBQUM7QUFBQztBQUFDLGVBQWUsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sTUFBTSxHQUFHLEdBQUUsQ0FBQztBQUFFLFNBQU8sTUFBTSxFQUFFLGVBQWUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUk7QUFBRSxNQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUUsRUFBRSxNQUFNLEtBQUs7QUFBQSxNQUFXLEtBQUUsRUFBRTtBQUFNLE1BQUcsQ0FBQyxFQUFFO0FBQU8sTUFBRyxPQUFPLE1BQUksV0FBVyxLQUFHO0FBQUMsV0FBTyxFQUFFO0FBQUEsRUFBQyxRQUFNO0FBQUM7QUFBQSxFQUFNO0FBQUMsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxRQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsUUFBRyxDQUFDLEVBQUUsUUFBTSxDQUFDLEVBQUUsTUFBSztBQUFDLFVBQUksSUFBRSxPQUFPLE9BQU8sQ0FBQztBQUFFLFVBQUcsRUFBRSxTQUFPLEtBQUcsRUFBRSxNQUFNLENBQUMsTUFBSSxPQUFPLE1BQUksWUFBVSxNQUFJLFNBQU8sRUFBRSxTQUFPLFVBQVEsRUFBRSxTQUFPLFVBQVEsT0FBTyxFQUFFLFVBQVEsV0FBVyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxNQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsTUFBTTtBQUFJLFFBQUcsTUFBSSxFQUFFLFNBQU8sWUFBVSxFQUFFLFVBQVEsUUFBUSxRQUFPO0FBQUEsRUFBQyxXQUFTLEVBQUUsVUFBUSxPQUFPLFFBQU87QUFBRTtBQUFNO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEtBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxRQUFHLGFBQVksS0FBRyxPQUFPLEVBQUUsWUFBVSxTQUFTLFFBQU8sRUFBRTtBQUFRLFFBQUcsWUFBVyxLQUFHLE1BQU0sUUFBUSxFQUFFLE1BQU0sS0FBRyxFQUFFLE9BQU8sU0FBTyxHQUFFO0FBQUMsVUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUUsVUFBRyxLQUFHLE9BQU8sTUFBSSxZQUFVLGFBQVksRUFBRSxRQUFPLE9BQU8sRUFBRSxPQUFPO0FBQUEsSUFBQztBQUFDLFFBQUc7QUFBQyxhQUFPLEtBQUssVUFBVSxDQUFDO0FBQUEsSUFBQyxRQUFNO0FBQUMsYUFBTyxPQUFPLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFNBQU8sT0FBTyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sRUFBRTtBQUFXO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQU8sRUFBRSxNQUFNLEtBQUssU0FBTztBQUFXLE1BQUksSUFBRTtBQUFFLE1BQUcsT0FBTyxFQUFFLGVBQWEsV0FBVyxRQUFPLEVBQUUsV0FBVztBQUFFLFNBQU8sRUFBRSxNQUFNLGFBQVc7QUFBYTtBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE1BQU07QUFBSSxRQUFHLEdBQUU7QUFBQyxVQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRTtBQUFNLFVBQUcsTUFBTSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLEVBQUUsUUFBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUU7QUFBSyxNQUFHLEdBQUU7QUFBQyxRQUFHLEVBQUUsVUFBUSxPQUFPLFFBQU8sRUFBRTtBQUFNLFFBQUcsTUFBTSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLEVBQUUsUUFBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLEVBQUM7QUFBQyxNQUFJLElBQUUsRUFBRTtBQUFNLE1BQUcsTUFBSSxPQUFPLFFBQU87QUFBRTtBQUFNO0FBQUMsSUFBSSxJQUFFLENBQUM7QUFBRSxHQUFHLEdBQUUsRUFBQyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFFBQU8sTUFBSSxHQUFFLGNBQWEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLGFBQVksTUFBSSxJQUFHLEtBQUksTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxlQUFjLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxRQUFPLE1BQUksR0FBRSxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksR0FBRSxRQUFPLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxJQUFHLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsT0FBTSxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsb0JBQW1CLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxPQUFNLE1BQUksSUFBRyxLQUFJLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxjQUFhLE1BQUksSUFBRyxvQkFBbUIsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGlCQUFnQixNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsYUFBWSxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsaUJBQWdCLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxhQUFZLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsV0FBVSxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsY0FBYSxNQUFJLElBQUcsaUJBQWdCLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsZ0JBQWUsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLHVCQUFzQixNQUFJLElBQUcsWUFBVyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsdUJBQXNCLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxXQUFVLE1BQUksSUFBRyxZQUFXLE1BQUksSUFBRyxpQkFBZ0IsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLGNBQWEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLGVBQWMsTUFBSSxJQUFHLE9BQU0sTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFFBQU8sTUFBSSxJQUFHLFFBQU8sTUFBSSxHQUFFLENBQUM7QUFBRSxJQUFJLEtBQUcsQ0FBQztBQUFFLEdBQUcsSUFBRyxFQUFDLE1BQUssTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLGdCQUFlLE1BQUksSUFBRyxnQkFBZSxNQUFJLElBQUcsWUFBVyxNQUFJLEdBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLGtCQUFpQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsa0JBQWlCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFLLFlBQVcsT0FBTyxpQkFBaUIsR0FBRSxFQUFDLFFBQU8sRUFBQyxPQUFNLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE9BQU0sQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEVBQUMsR0FBRSxVQUFTLEVBQUMsT0FBTSxDQUFDLE1BQUksRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLE9BQU0sQ0FBQyxNQUFJLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE1BQUs7QUFBQyxXQUFPLEVBQUUsT0FBTyxXQUFTO0FBQUEsRUFBQyxFQUFDLEVBQUMsQ0FBQztBQUFDO0FBQWpRLElBQW1RLEtBQUcsRUFBRSxZQUFXLEVBQUU7QUFBclIsSUFBdVIsS0FBRyxFQUFFLFlBQVcsSUFBRyxFQUFDLFFBQU8sTUFBSyxDQUFDO0FBQUUsSUFBSSxLQUFHLEdBQUcsRUFBRTtBQUFaLElBQWMsS0FBRyxHQUFHLEVBQUU7QUFBdEIsSUFBd0IsS0FBRyxHQUFHLEVBQUU7QUFBaEMsSUFBa0MsS0FBRyxHQUFHLEVBQUU7QUFBRSxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxFQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFJLEdBQUUsT0FBTyxlQUFlLEdBQUUsUUFBTyxFQUFDLE9BQU0sRUFBQyxDQUFDLEdBQUUsRUFBRSxRQUFNLElBQUksTUFBSTtBQUFDLFdBQU8sRUFBRSxNQUFNLEVBQUMsR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFHLEVBQUUsVUFBUSxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLE9BQU8sTUFBSSxhQUFXLEVBQUMsTUFBSyxFQUFDLE9BQU0sR0FBRSxLQUFJLEVBQUMsT0FBTSxTQUFRLEdBQUUsVUFBUyxDQUFDLEVBQUMsRUFBQyxJQUFFLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsRUFBRSxRQUFNLENBQUMsR0FBRSxNQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFFBQU0sTUFBSSxHQUFFLEVBQUUsV0FBUyxDQUFDLEdBQUUsTUFBSTtBQUFDLFdBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUMsUUFBTyxFQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsWUFBVSxDQUFDLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLE9BQU0sR0FBRSxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBQyxRQUFPLEVBQUUsV0FBVSxDQUFDLEdBQUUsRUFBRSxpQkFBZSxPQUFNLEdBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxNQUFJLEVBQUUsZ0JBQWUsRUFBRSxTQUFPLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxNQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsV0FBUyxNQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsVUFBUSxNQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLGNBQVksQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxRQUFNLE1BQUksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFHLENBQUMsTUFBSSxHQUFHLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxZQUFVLENBQUMsTUFBSSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFVBQVEsQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLE1BQUksR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLE1BQU07QUFBRSxXQUFPLEdBQUcsSUFBSSxHQUFFLEVBQUMsYUFBWSxFQUFDLENBQUMsR0FBRTtBQUFBLEVBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxlQUFjLEVBQUMsTUFBSztBQUFDLFdBQU8sR0FBRyxJQUFJLENBQUMsR0FBRztBQUFBLEVBQVcsR0FBRSxjQUFhLEtBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxJQUFJLE1BQUk7QUFBQyxRQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU8sR0FBRyxJQUFJLENBQUM7QUFBRSxRQUFJLElBQUUsRUFBRSxNQUFNO0FBQUUsV0FBTyxHQUFHLElBQUksR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFO0FBQUEsRUFBQyxHQUFFLEVBQUUsYUFBVyxNQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUSxFQUFFLGFBQVcsTUFBSSxFQUFFLFVBQVUsSUFBSSxFQUFFLFNBQVE7QUFBQyxDQUFDO0FBQWx1QyxJQUFvdUMsS0FBRyxFQUFFLGNBQWEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLEtBQUs7QUFBSSxJQUFFLFNBQU8sRUFBRSxVQUFRLE1BQUssRUFBRSxZQUFVLEVBQUUsV0FBUyxNQUFLLEVBQUUsWUFBVSxFQUFFLFdBQVMsTUFBSyxFQUFFLFFBQU0sSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsYUFBVyxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxZQUFVLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRSxFQUFFLFlBQVUsSUFBSSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLE1BQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFFLEVBQUUsY0FBWSxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFBQyxDQUFDO0FBQXIxRCxJQUF1MUQsS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsWUFBVSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFNLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBN0QsSUFBK0QsS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGdCQUFlLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxVQUFTLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSx5QkFBd0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBRyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBRyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLGNBQVksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxhQUFXLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFLLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUk7QUFBRSxNQUFJLElBQUUsRUFBRSxLQUFLO0FBQUksSUFBRSxXQUFTLEtBQUssSUFBSSxFQUFFLFdBQVMsT0FBTyxtQkFBa0IsRUFBRSxvQkFBa0IsT0FBTyxpQkFBaUIsS0FBRyxNQUFLLEVBQUUsV0FBUyxLQUFLLElBQUksRUFBRSxXQUFTLE9BQU8sbUJBQWtCLEVBQUUsb0JBQWtCLE9BQU8saUJBQWlCLEtBQUcsTUFBSyxFQUFFLFNBQU8sRUFBRSxVQUFRLElBQUksU0FBUyxLQUFLLEtBQUcsT0FBTyxjQUFjLEVBQUUsY0FBWSxHQUFHLEdBQUUsRUFBRSxXQUFTLE1BQUcsRUFBRSxTQUFPLEVBQUUsVUFBUTtBQUFJLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLG1CQUFrQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxhQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxjQUFZLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLGNBQVksQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsYUFBVyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLEtBQUs7QUFBSSxJQUFFLFdBQVMsRUFBRSxXQUFTLE1BQUssRUFBRSxXQUFTLEVBQUUsV0FBUyxNQUFLLEVBQUUsU0FBTyxFQUFFLFVBQVE7QUFBSSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsZ0JBQWUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFdBQVUsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEtBQUk7QUFBQyxTQUFPLEdBQUcsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsS0FBSTtBQUFDLFNBQU8sR0FBRyxFQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxNQUFJLElBQUUsRUFBRSxLQUFLO0FBQUksSUFBRSxVQUFRLEVBQUUsVUFBUSxJQUFJLEtBQUssRUFBRSxPQUFPLElBQUUsTUFBSyxFQUFFLFVBQVEsRUFBRSxVQUFRLElBQUksS0FBSyxFQUFFLE9BQU8sSUFBRTtBQUFJLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxFQUFFLFNBQVEsRUFBRSxNQUFJLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxXQUFTLENBQUMsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsTUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUU7QUFBTyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUk7QUFBTSxTQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFXLEdBQUUsU0FBUSxNQUFJLEVBQUUsS0FBSyxHQUFFLEVBQUUsUUFBTSxNQUFJLEdBQUcsT0FBTyxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFFLEVBQUUsV0FBUyxDQUFDLE1BQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxVQUFTLEVBQUMsQ0FBQyxHQUFFLEVBQUUsY0FBWSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxNQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUksVUFBUyxPQUFNLENBQUMsR0FBRSxFQUFFLFNBQU8sQ0FBQyxNQUFJO0FBQUMsV0FBTyxFQUFFLE9BQU8sR0FBRSxDQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUUsUUFBTSxDQUFDLE1BQUksRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxJQUFJLE1BQUksRUFBRSxRQUFRLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxJQUFJLE1BQUksRUFBRSxTQUFTLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUMsTUFBSyxVQUFTLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxXQUFXLE1BQUssU0FBUSxFQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSztBQUFBLEVBQUssR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQztBQUFFLFNBQU8sSUFBSSxHQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssVUFBUyxJQUFJLFFBQU87QUFBQyxXQUFPLEVBQUUsV0FBVyxNQUFLLFNBQVEsRUFBQyxHQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUs7QUFBQSxFQUFLLEdBQUUsVUFBUyxHQUFHLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxVQUFTLElBQUksUUFBTztBQUFDLFdBQU8sRUFBRSxXQUFXLE1BQUssU0FBUSxFQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSztBQUFBLEVBQUssR0FBRSxVQUFTLEdBQUcsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsRUFBRTtBQUFPLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFNBQVEsU0FBUSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLHlCQUF3QixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxTQUFRLFNBQVEsR0FBRSxlQUFjLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsbUJBQWtCLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxnQkFBZSxNQUFLLEdBQUUsT0FBTSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxDQUFDLE1BQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssS0FBSSxNQUFLLEVBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsYUFBYSxHQUFFLElBQUUsSUFBRSxJQUFFO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFNBQVEsT0FBTSxHQUFFLE1BQUssSUFBRSxJQUFFLE1BQUssR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsYUFBWSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLEVBQUUsU0FBUSxFQUFFLFlBQVUsRUFBRTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssVUFBUyxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxVQUFTLFNBQVEsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxXQUFVLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsVUFBUyxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLEVBQUUsU0FBUSxFQUFFLFlBQVUsRUFBRTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssT0FBTSxTQUFRLEdBQUUsV0FBVSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLFVBQVMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUUsTUFBSSxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLFdBQVMsQ0FBQyxNQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxNQUFJLElBQUksTUFBSSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsT0FBSyxJQUFJLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxPQUFNLFdBQVUsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE9BQUssRUFBRSxTQUFRLEVBQUUsVUFBUSxPQUFPLE9BQU8sRUFBRSxPQUFPO0FBQUUsTUFBSSxJQUFFLElBQUksSUFBSSxPQUFPLEtBQUssRUFBRSxPQUFPLENBQUM7QUFBRSxJQUFFLFVBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxFQUFFLEtBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFFLENBQUMsSUFBRSxFQUFFLFFBQVEsQ0FBQztBQUFBLFFBQU8sT0FBTSxNQUFNLE9BQU8sQ0FBQyxvQkFBb0I7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRSxTQUFRLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxFQUFFLFVBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxRQUFJLElBQUUsRUFBQyxHQUFHLEVBQUUsUUFBTztBQUFFLGFBQVEsS0FBSyxFQUFFLEtBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFPLEVBQUUsQ0FBQztBQUFBLFFBQU8sT0FBTSxNQUFNLE9BQU8sQ0FBQyxvQkFBb0I7QUFBRSxXQUFPLElBQUksR0FBRyxFQUFDLEdBQUcsR0FBRSxRQUFPLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRSxTQUFRLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxNQUFNLFFBQVEsQ0FBQyxJQUFFLE9BQU8sWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFJLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFFO0FBQUUsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFFBQU8sU0FBUSxHQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sR0FBRSxPQUFPLGVBQWUsR0FBRSxTQUFRLEVBQUMsTUFBSztBQUFDLFFBQUcsRUFBRSxPQUFPLFNBQU8sRUFBRSxPQUFNLE1BQU0sNEVBQTRFO0FBQUUsV0FBTyxFQUFFLE9BQU8sQ0FBQztBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUMsQ0FBQztBQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssV0FBVSxRQUFPLE1BQU0sUUFBUSxDQUFDLElBQUUsSUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE9BQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBRSxJQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGdCQUFlLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssUUFBTSxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUUsV0FBUyxDQUFDLE1BQUk7QUFBQyxVQUFHLE9BQU8sTUFBSSxTQUFTLEdBQUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxHQUFFLEVBQUUsT0FBTSxDQUFDLENBQUM7QUFBQSxXQUFNO0FBQUMsWUFBSSxJQUFFO0FBQUUsWUFBRyxFQUFFLE1BQU0sR0FBRSxXQUFTO0FBQUcsVUFBRSxTQUFPLEVBQUUsT0FBSyxXQUFVLEVBQUUsVUFBUSxFQUFFLFFBQU0sRUFBRSxRQUFPLEVBQUUsU0FBTyxFQUFFLE9BQUssSUFBRyxFQUFFLGFBQVcsRUFBRSxXQUFTLE9BQUksRUFBRSxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUUsUUFBSSxJQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU0sQ0FBQztBQUFFLFFBQUcsYUFBYSxRQUFRLFFBQU8sRUFBRSxLQUFLLENBQUMsTUFBSTtBQUFDLGFBQU8sRUFBRSxRQUFNLEdBQUU7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPLEVBQUUsUUFBTSxHQUFFO0FBQUEsRUFBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxhQUFZLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsY0FBYSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLElBQUksV0FBVSxFQUFFLGdCQUFjLEVBQUU7QUFBTSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxXQUFVLFdBQVUsR0FBRSxJQUFJLGVBQWM7QUFBQyxXQUFPLE9BQU8sTUFBSSxhQUFXLEVBQUUsSUFBRTtBQUFBLEVBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxlQUFjLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLFlBQVcsV0FBVSxHQUFFLElBQUksZUFBYztBQUFDLFdBQU8sT0FBTyxNQUFJLGFBQVcsRUFBRSxJQUFFO0FBQUEsRUFBQyxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGtCQUFpQixDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLElBQUk7QUFBUyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxlQUFjLFdBQVUsR0FBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxXQUFVLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSSxXQUFVLEVBQUUsY0FBWSxFQUFFO0FBQU0sQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssU0FBUSxXQUFVLEdBQUUsWUFBVyxPQUFPLE1BQUksYUFBVyxJQUFFLE1BQUksRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxVQUFTLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxXQUFVLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUcsRUFBRSxJQUFHLEVBQUUsTUFBSSxFQUFFO0FBQUcsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxTQUFPLElBQUksR0FBRyxFQUFDLE1BQUssUUFBTyxJQUFHLEdBQUUsS0FBSSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxFQUFFLGVBQWMsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxZQUFXLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxzQkFBcUIsQ0FBQyxHQUFFLE1BQUk7QUFBQyxLQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFJLEdBQUcsRUFBQyxNQUFLLG9CQUFtQixPQUFNLEdBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLEVBQUUsV0FBVSxDQUFDLEdBQUUsTUFBSTtBQUFDLEtBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLElBQUksT0FBTztBQUFDLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxRQUFPLFFBQU8sRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxjQUFhLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLEtBQUssSUFBSTtBQUFTLENBQUM7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sSUFBSSxHQUFHLEVBQUMsTUFBSyxXQUFVLFdBQVUsRUFBQyxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBRSxhQUFZLENBQUMsR0FBRSxNQUFJO0FBQUMsS0FBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBSyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUksSUFBRSxJQUFJLEdBQUcsRUFBQyxPQUFNLFVBQVMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztBQUFFLFNBQU8sRUFBRSxLQUFLLFFBQU0sR0FBRTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLE1BQUksTUFBSSxPQUFJLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsR0FBRSxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJO0FBQUMsV0FBTyxFQUFFLFdBQVMsQ0FBQyxNQUFJO0FBQUMsVUFBRyxPQUFPLE1BQUksU0FBUyxHQUFFLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLE9BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLFdBQU07QUFBQyxZQUFJLElBQUU7QUFBRSxZQUFHLEVBQUUsTUFBTSxHQUFFLFdBQVM7QUFBRyxVQUFFLFNBQU8sRUFBRSxPQUFLLFdBQVUsRUFBRSxVQUFRLEVBQUUsUUFBTSxFQUFFLFFBQU8sRUFBRSxTQUFPLEVBQUUsT0FBSyxJQUFHLEVBQUUsYUFBVyxFQUFFLFdBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxRQUFPLEVBQUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFLEVBQUUsRUFBRSxPQUFNLENBQUM7QUFBQSxFQUFDLEdBQUUsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLElBQUUsRUFBQyxPQUFNLHlCQUF5QixFQUFFLElBQUksR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLElBQUksR0FBRyxFQUFDLE1BQUssVUFBUyxPQUFNLFVBQVMsSUFBRyxDQUFDLE1BQUksYUFBYSxHQUFFLE9BQU0sTUFBRyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0FBQUUsU0FBTyxFQUFFLEtBQUssSUFBSSxRQUFNLEdBQUU7QUFBQztBQUFDLElBQUksS0FBRyxJQUFJLE1BQUksR0FBRyxFQUFDLE1BQUssSUFBRyxTQUFRLElBQUcsUUFBTyxJQUFHLFdBQVUsR0FBRSxHQUFFLEdBQUcsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBSSxJQUFFLEdBQUcsTUFBSTtBQUFDLFdBQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFBQyxDQUFDO0FBQUUsU0FBTztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sR0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxjQUFhLGdCQUFlLFNBQVEsV0FBVSxXQUFVLGFBQVksZ0JBQWUsa0JBQWlCLGlCQUFnQixtQkFBa0IsbUJBQWtCLHFCQUFvQixlQUFjLGlCQUFnQixhQUFZLGVBQWMsaUJBQWdCLG1CQUFrQixlQUFjLGlCQUFnQixRQUFPLFNBQVE7QUFBRSxTQUFTLEdBQUcsR0FBRTtBQUFDLEtBQUcsRUFBQyxhQUFZLEVBQUMsQ0FBQztBQUFDO0FBQUMsU0FBUyxLQUFJO0FBQUMsU0FBTyxHQUFHLEVBQUU7QUFBVztBQUFDLElBQUksS0FBRyxDQUFDO0FBQUUsR0FBRyxJQUFHLEVBQUMsUUFBTyxNQUFJLElBQUcsUUFBTyxNQUFJLElBQUcsTUFBSyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsUUFBTyxNQUFJLEdBQUUsQ0FBQztBQUFFLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sR0FBRyxJQUFHLENBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxHQUFHLElBQUcsQ0FBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUM7QUFBQyxHQUFHLEdBQUcsQ0FBQztBQUFFLElBQUksS0FBRztBQUFFLElBQUksS0FBRztBQUFHLElBQUksS0FBRztBQUFhLElBQUksS0FBRyxDQUFDLElBQUcsY0FBYSxjQUFhLGNBQWEsWUFBWTtBQUE5RCxJQUFnRSxLQUFHO0FBQW5FLElBQTBHLEtBQUc7QUFBN0csSUFBbUgsS0FBRyxHQUFHLENBQUMsTUFBSSxNQUFJLFNBQU8sT0FBTyxNQUFJLFlBQVUsT0FBTyxNQUFJLFdBQVc7QUFBcEwsSUFBc0wsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUE1TSxJQUE4TSxLQUFHLEVBQUU7QUFBbk4sSUFBcU4sTUFBSSxHQUFHLEVBQUMsS0FBSSxHQUFHLEVBQUUsU0FBUyxHQUFFLGNBQWEsR0FBRyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTlRLElBQWdSLEtBQUcsRUFBRSxFQUFDLEtBQUksR0FBRyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTFTLElBQTRTLEtBQUcsRUFBRSxFQUFDLFFBQU8sRUFBRSxFQUFDLENBQUM7QUFBN1QsSUFBK1QsS0FBRyxHQUFHLEVBQUMsZUFBYyxHQUFHLFNBQVMsR0FBRSxDQUFDLEVBQUUsR0FBRSxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQXJYLElBQXVYLEtBQUcsRUFBRSxFQUFDLE9BQU0sR0FBRyxTQUFTLEVBQUMsQ0FBQztBQUFqWixJQUFtWixLQUFHLEdBQUcsT0FBTyxFQUFDLE1BQUssR0FBRyxTQUFTLEVBQUMsQ0FBQztBQUFwYixJQUFzYixLQUFHLENBQUMsTUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQTljLElBQXNkLEtBQUcsRUFBRSxFQUFDLFFBQU8sRUFBRSxHQUFFLFFBQU8sR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBcGdCLElBQXNnQixLQUFHLEVBQUUsRUFBQyxPQUFNLEdBQUcsU0FBUyxFQUFDLENBQUM7QUFBaGlCLElBQWtpQixLQUFHLEVBQUUsRUFBQyxRQUFPLEVBQUUsR0FBRSxRQUFPLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQWhsQixJQUFrbEIsS0FBRyxHQUFHLEVBQUMsT0FBTSxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQTdtQixJQUErbUIsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUFyb0IsSUFBdW9CLEtBQUcsRUFBRSxFQUFDLFNBQVEsRUFBRSxFQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUcsR0FBRyxNQUFLLENBQUMsRUFBRSxPQUFPO0FBQXRyQixJQUF3ckIsS0FBRyxDQUFDLE1BQUksR0FBRyxVQUFVLENBQUMsRUFBRTtBQUFodEIsSUFBd3RCLEtBQUcsRUFBRSxFQUFDLFNBQVEsRUFBRSxFQUFFLEdBQUUsR0FBRyxHQUFHLE1BQUssQ0FBQyxFQUFFLE9BQU87QUFBandCLElBQW13QixLQUFHLENBQUMsTUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQTN4QixJQUFteUIsS0FBRyxFQUFFLEVBQUMsU0FBUSxFQUFFLEVBQUUsR0FBRSxJQUFHLElBQUcsUUFBTyxHQUFFLENBQUMsRUFBRSxPQUFPO0FBQWgxQixJQUFrMUIsS0FBRyxDQUFDLE1BQUksR0FBRyxVQUFVLENBQUMsRUFBRTtBQUFRLElBQUk7QUFBQSxDQUFHLFNBQVMsR0FBRTtBQUFDLElBQUUsRUFBRSxtQkFBaUIsS0FBTSxJQUFFLG9CQUFtQixFQUFFLEVBQUUsaUJBQWUsTUFBTSxJQUFFLGtCQUFpQixFQUFFLEVBQUUsYUFBVyxNQUFNLElBQUUsY0FBYSxFQUFFLEVBQUUsaUJBQWUsTUFBTSxJQUFFLGtCQUFpQixFQUFFLEVBQUUsaUJBQWUsTUFBTSxJQUFFLGtCQUFpQixFQUFFLEVBQUUsZ0JBQWMsTUFBTSxJQUFFLGlCQUFnQixFQUFFLEVBQUUsZ0JBQWMsTUFBTSxJQUFFLGlCQUFnQixFQUFFLEVBQUUseUJBQXVCLE1BQU0sSUFBRTtBQUF3QixHQUFHLE1BQUksSUFBRSxDQUFDLEVBQUU7QUFBRSxJQUFJLEtBQUcsRUFBRSxFQUFDLFNBQVEsRUFBRSxFQUFFLEdBQUUsSUFBRyxHQUFHLFNBQVMsR0FBRSxPQUFNLEVBQUUsRUFBQyxNQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUUsU0FBUSxFQUFFLEdBQUUsTUFBSyxHQUFHLEVBQUUsU0FBUyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsT0FBTztBQUFFLElBQUksS0FBRyxDQUFDLE1BQUksR0FBRyxVQUFVLENBQUMsRUFBRTtBQUFRLElBQUksTUFBSSxHQUFHLENBQUMsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQXhCLElBQTBCLE1BQUksR0FBRyxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQXhDLElBQTBDLEtBQUcsR0FBRyxPQUFPO0FBQXZELElBQXlELEtBQUcsR0FBRyxPQUFPLEVBQUMsV0FBVSxHQUFHLFNBQVMsR0FBRSxRQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUFySCxJQUF1SCxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSx5QkFBeUIsR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUFuTCxJQUFxTCxLQUFHLEVBQUUsRUFBQyxLQUFJLEVBQUUsR0FBRSxVQUFTLEVBQUUsRUFBRSxTQUFTLEdBQUUsT0FBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsR0FBRSxPQUFNLEdBQUcsQ0FBQyxTQUFRLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTFSLElBQTRSLEtBQUcsRUFBRSxFQUFDLE9BQU0sR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBMVQsSUFBNFQsS0FBRyxFQUFFLEVBQUMsTUFBSyxFQUFFLEdBQUUsT0FBTSxFQUFFLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBaFcsSUFBa1csS0FBRyxHQUFHLE9BQU8sRUFBQyxHQUFHLEdBQUcsT0FBTSxHQUFHLEdBQUcsT0FBTSxTQUFRLEVBQUUsR0FBRSxZQUFXLEVBQUUsRUFBRSxTQUFTLEdBQUUsYUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBemMsSUFBMmMsS0FBRyxHQUFHLEVBQUUsRUFBQyxlQUFjLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQWhnQixJQUFrZ0IsS0FBRyxHQUFHLENBQUMsTUFBSTtBQUFDLE1BQUcsS0FBRyxPQUFPLE1BQUksWUFBVSxDQUFDLE1BQU0sUUFBUSxDQUFDLEdBQUU7QUFBQyxRQUFHLE9BQU8sS0FBSyxDQUFDLEVBQUUsV0FBUyxFQUFFLFFBQU0sRUFBQyxNQUFLLENBQUMsRUFBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUMsR0FBRSxHQUFHLEVBQUUsRUFBQyxNQUFLLEdBQUcsU0FBUyxHQUFFLEtBQUksR0FBRyxTQUFTLEVBQUMsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQXhyQixJQUEwckIsS0FBRyxHQUFHLEVBQUMsTUFBSyxHQUFHLFNBQVMsR0FBRSxRQUFPLEdBQUcsU0FBUyxHQUFFLFVBQVMsR0FBRyxFQUFDLFVBQVMsR0FBRyxFQUFDLGVBQWMsR0FBRyxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRSxhQUFZLEdBQUcsRUFBQyxRQUFPLEdBQUcsU0FBUyxFQUFDLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTMyQixJQUE2MkIsS0FBRyxHQUFHLEVBQUMsTUFBSyxHQUFHLFNBQVMsR0FBRSxRQUFPLEdBQUcsU0FBUyxHQUFFLFVBQVMsR0FBRyxFQUFDLE9BQU0sR0FBRyxFQUFDLE1BQUssR0FBRyxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBaCtCLElBQWsrQixLQUFHLEVBQUUsRUFBQyxjQUFhLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUUsVUFBUyxFQUFFLEVBQUMsU0FBUSxHQUFHLFNBQVMsR0FBRSxPQUFNLEdBQUcsU0FBUyxFQUFDLENBQUMsRUFBRSxTQUFTLEdBQUUsYUFBWSxHQUFHLFNBQVMsR0FBRSxPQUFNLEVBQUUsRUFBQyxhQUFZLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRSxPQUFNLEdBQUcsU0FBUyxHQUFFLFlBQVcsR0FBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQS9zQyxJQUFpdEMsS0FBRyxHQUFHLE9BQU8sRUFBQyxpQkFBZ0IsRUFBRSxHQUFFLGNBQWEsSUFBRyxZQUFXLEdBQUUsQ0FBQztBQUFqeEMsSUFBbXhDLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLFlBQVksR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLEVBQUMsY0FBYSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsU0FBUyxHQUFFLFNBQVEsR0FBRyxTQUFTLEdBQUUsYUFBWSxHQUFHLFNBQVMsR0FBRSxTQUFRLEVBQUUsRUFBQyxhQUFZLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRSxXQUFVLEVBQUUsRUFBQyxXQUFVLEdBQUcsRUFBRSxTQUFTLEdBQUUsYUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFDLENBQUMsRUFBRSxTQUFTLEdBQUUsT0FBTSxFQUFFLEVBQUMsYUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFDLENBQUMsRUFBRSxTQUFTLEdBQUUsT0FBTSxHQUFHLFNBQVMsR0FBRSxZQUFXLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUF4VSxJQUEwVSxLQUFHLEdBQUcsT0FBTyxFQUFDLGlCQUFnQixFQUFFLEdBQUUsY0FBYSxJQUFHLFlBQVcsSUFBRyxjQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUF0YSxJQUF3YSxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSwyQkFBMkIsR0FBRSxRQUFPLEdBQUcsU0FBUyxFQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLE1BQU0sR0FBRSxRQUFPLEdBQUcsU0FBUyxFQUFDLENBQUM7QUFBeEQsSUFBMEQsS0FBRyxFQUFFLEVBQUMsVUFBUyxHQUFHLEdBQUUsT0FBTSxHQUFHLEdBQUcsQ0FBQyxHQUFFLFNBQVEsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQTdHLElBQStHLEtBQUcsRUFBRSxFQUFDLEdBQUcsR0FBRyxPQUFNLEdBQUcsR0FBRyxPQUFNLGVBQWMsR0FBRSxDQUFDO0FBQTlKLElBQWdLLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLHdCQUF3QixHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQTNOLElBQTZOLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQWhRLElBQWtRLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQXJTLElBQXVTLEtBQUcsR0FBRyxPQUFPLEVBQUMsWUFBVyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQTlVLElBQWdWLEtBQUcsR0FBRyxDQUFDLFdBQVUsa0JBQWlCLGFBQVksVUFBUyxXQUFXLENBQUM7QUFBblosSUFBcVosS0FBRyxFQUFFLEVBQUMsUUFBTyxFQUFFLEdBQUUsUUFBTyxJQUFHLEtBQUksR0FBRyxDQUFDLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLFdBQVUsRUFBRSxHQUFFLGVBQWMsRUFBRSxHQUFFLGNBQWEsR0FBRyxHQUFHLENBQUMsR0FBRSxlQUFjLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUFoaEIsSUFBa2hCLEtBQUcsR0FBRyxPQUFPLEVBQUMsTUFBSyxHQUFFLENBQUM7QUFBeGlCLElBQTBpQixLQUFHLEdBQUcsTUFBTSxFQUFFO0FBQXhqQixJQUEwakIsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsNEJBQTRCLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBem5CLElBQTJuQixLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxXQUFXLEdBQUUsUUFBTyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUE5ckIsSUFBZ3NCLEtBQUcsR0FBRyxNQUFNLEVBQUU7QUFBOXNCLElBQWd0QixLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxjQUFjLEdBQUUsUUFBTyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUF0eEIsSUFBd3hCLE1BQUksR0FBRyxNQUFNO0FBQXJ5QixJQUF1eUIsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsWUFBWSxFQUFDLENBQUM7QUFBNTBCLElBQTgwQixLQUFHLEdBQUcsT0FBTyxFQUFDLE9BQU0sR0FBRyxFQUFFLEVBQUMsQ0FBQztBQUF6MkIsSUFBMjJCLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLGNBQWMsR0FBRSxRQUFPLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQWo3QixJQUFtN0IsS0FBRyxHQUFHLE1BQU0sRUFBRTtBQUFqOEIsSUFBbThCLEtBQUcsRUFBRSxFQUFDLEtBQUksRUFBRSxHQUFFLFVBQVMsR0FBRyxFQUFFLENBQUMsR0FBRSxPQUFNLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQWhnQyxJQUFrZ0MsS0FBRyxHQUFHLE9BQU8sRUFBQyxNQUFLLEVBQUUsRUFBQyxDQUFDO0FBQXpoQyxJQUEyaEMsS0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQUk7QUFBQyxNQUFHO0FBQUMsV0FBTyxLQUFLLENBQUMsR0FBRTtBQUFBLEVBQUUsUUFBTTtBQUFDLFdBQU07QUFBQSxFQUFFO0FBQUMsR0FBRSxFQUFDLFNBQVEsd0JBQXVCLENBQUM7QUFBdm5DLElBQXluQyxLQUFHLEdBQUcsT0FBTyxFQUFDLE1BQUssR0FBRSxDQUFDO0FBQS9vQyxJQUFpcEMsS0FBRyxHQUFHLENBQUMsUUFBTyxXQUFXLENBQUM7QUFBM3FDLElBQTZxQyxLQUFHLEVBQUUsRUFBQyxVQUFTLEdBQUcsRUFBRSxFQUFFLFNBQVMsR0FBRSxVQUFTLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxTQUFTLEdBQUUsY0FBYSxHQUFHLFNBQVMsRUFBQyxRQUFPLEtBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQXR5QyxJQUF3eUMsS0FBRyxFQUFFLEVBQUMsR0FBRyxHQUFHLE9BQU0sR0FBRyxHQUFHLE9BQU0sS0FBSSxFQUFFLEdBQUUsYUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFFLFVBQVMsR0FBRyxFQUFFLENBQUMsR0FBRSxNQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUUsYUFBWSxHQUFHLFNBQVMsR0FBRSxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBNTZDLElBQTg2QyxLQUFHLEVBQUUsRUFBQyxHQUFHLEdBQUcsT0FBTSxHQUFHLEdBQUcsT0FBTSxhQUFZLEVBQUUsR0FBRSxhQUFZLEdBQUcsRUFBRSxDQUFDLEdBQUUsVUFBUyxHQUFHLEVBQUUsQ0FBQyxHQUFFLGFBQVksR0FBRyxTQUFTLEdBQUUsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQTVpRCxJQUE4aUQsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQztBQUF2bEQsSUFBeWxELEtBQUcsR0FBRyxPQUFPLEVBQUMsV0FBVSxHQUFHLEVBQUUsRUFBQyxDQUFDO0FBQXhuRCxJQUEwbkQsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsMEJBQTBCLEVBQUMsQ0FBQztBQUE3cUQsSUFBK3FELEtBQUcsR0FBRyxPQUFPLEVBQUMsbUJBQWtCLEdBQUcsRUFBRSxFQUFDLENBQUM7QUFBdHRELElBQXd0RCxLQUFHLEdBQUcsT0FBTyxFQUFDLEtBQUksRUFBRSxFQUFDLENBQUM7QUFBOXVELElBQWd2RCxLQUFHO0FBQW52RCxJQUFzdkQsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsZ0JBQWdCLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBenlELElBQTJ5RCxLQUFHLEdBQUcsT0FBTyxFQUFDLFVBQVMsR0FBRyxHQUFHLENBQUMsSUFBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBbDFELElBQW8xRCxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxzQ0FBc0MsR0FBRSxRQUFPLEdBQUcsU0FBUyxFQUFDLENBQUM7QUFBeDZELElBQTA2RCxLQUFHO0FBQTc2RCxJQUFnN0QsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUscUJBQXFCLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBeCtELElBQTArRCxLQUFHO0FBQTcrRCxJQUFnL0QsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsdUJBQXVCLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBMWlFLElBQTRpRSxLQUFHLEdBQUcsT0FBTyxFQUFDLEtBQUksRUFBRSxFQUFDLENBQUM7QUFBbGtFLElBQW9rRSxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxpQ0FBaUMsR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUF4b0UsSUFBMG9FLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxHQUFFLGFBQVksR0FBRyxFQUFFLENBQUMsR0FBRSxVQUFTLEdBQUcsR0FBRyxDQUFDLEVBQUMsQ0FBQztBQUEvckUsSUFBaXNFLEtBQUcsRUFBRSxFQUFDLEdBQUcsR0FBRyxPQUFNLEdBQUcsR0FBRyxPQUFNLGFBQVksR0FBRyxFQUFFLENBQUMsR0FBRSxXQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBenhFLElBQTJ4RSxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxjQUFjLEVBQUMsQ0FBQztBQUFsMEUsSUFBbzBFLEtBQUcsR0FBRyxPQUFPLEVBQUMsU0FBUSxHQUFHLEVBQUUsRUFBQyxDQUFDO0FBQWoyRSxJQUFtMkUsS0FBRyxHQUFHLE9BQU8sRUFBQyxNQUFLLEVBQUUsR0FBRSxXQUFVLEdBQUcsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTM1RSxJQUE2NUUsS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsYUFBYSxHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQTc4RSxJQUErOEUsS0FBRyxFQUFFLEVBQUMsTUFBSyxFQUFFLE1BQU0sR0FBRSxNQUFLLEVBQUUsR0FBRSxhQUFZLEdBQUcsU0FBUyxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBcmlGLElBQXVpRixLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsT0FBTyxHQUFFLE1BQUssSUFBRyxVQUFTLEVBQUUsR0FBRSxhQUFZLEdBQUcsU0FBUyxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBMW9GLElBQTRvRixLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsT0FBTyxHQUFFLE1BQUssSUFBRyxVQUFTLEVBQUUsR0FBRSxhQUFZLEdBQUcsU0FBUyxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBL3VGLElBQWl2RixLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsVUFBVSxHQUFFLE1BQUssRUFBRSxHQUFFLElBQUcsRUFBRSxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsT0FBTSxHQUFHLEVBQUUsR0FBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUEzMEYsSUFBNjBGLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxVQUFVLEdBQUUsVUFBUyxHQUFHLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxhQUFZLEdBQUcsU0FBUyxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBbjdGLElBQXE3RixLQUFHLEdBQUcsT0FBTyxFQUFDLE1BQUssRUFBRSxlQUFlLEVBQUMsQ0FBQztBQUEzOUYsSUFBNjlGLEtBQUcsR0FBRyxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQW4vRixJQUFxL0YsS0FBRyxFQUFFLEVBQUMsTUFBSyxJQUFHLFNBQVEsR0FBRSxDQUFDO0FBQTlnRyxJQUFnaEcsS0FBRyxHQUFHLE9BQU8sRUFBQyxhQUFZLEVBQUUsRUFBRSxTQUFTLEdBQUUsVUFBUyxHQUFHLEVBQUUsRUFBQyxDQUFDO0FBQXprRyxJQUEya0csS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsb0NBQW9DLEdBQUUsUUFBTyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQTdwRyxJQUErcEcsS0FBRyxFQUFFLEVBQUMsT0FBTSxFQUFFLEVBQUUsU0FBUyxHQUFFLGNBQWEsR0FBRyxFQUFFLFNBQVMsR0FBRSxpQkFBZ0IsR0FBRyxFQUFFLFNBQVMsR0FBRSxnQkFBZSxHQUFHLEVBQUUsU0FBUyxHQUFFLGVBQWMsR0FBRyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQXB6RyxJQUFzekcsS0FBRyxFQUFFLEVBQUMsYUFBWSxHQUFHLENBQUMsWUFBVyxZQUFXLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTMzRyxJQUE2M0csS0FBRyxFQUFFLEVBQUMsR0FBRyxHQUFHLE9BQU0sR0FBRyxHQUFHLE9BQU0sYUFBWSxFQUFFLEVBQUUsU0FBUyxHQUFFLGFBQVksRUFBRSxFQUFDLE1BQUssRUFBRSxRQUFRLEdBQUUsWUFBVyxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsU0FBUyxHQUFFLFVBQVMsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEdBQUUsY0FBYSxFQUFFLEVBQUMsTUFBSyxFQUFFLFFBQVEsR0FBRSxZQUFXLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUUsVUFBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUUsYUFBWSxHQUFHLFNBQVMsR0FBRSxXQUFVLEdBQUcsU0FBUyxHQUFFLE9BQU0sR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBOXVILElBQWd2SCxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxZQUFZLEVBQUMsQ0FBQztBQUFyeEgsSUFBdXhILEtBQUcsR0FBRyxPQUFPLEVBQUMsT0FBTSxHQUFHLEVBQUUsRUFBQyxDQUFDO0FBQWx6SCxJQUFvekgsS0FBRyxHQUFHLE9BQU8sRUFBQyxTQUFRLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUUsbUJBQWtCLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRSxTQUFRLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUEvNUgsSUFBaTZILE1BQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxFQUFDLFlBQVcsR0FBRyxFQUFDLENBQUMsQ0FBQztBQUF2OEgsSUFBeThILEtBQUcsR0FBRyxPQUFPLEVBQUMsTUFBSyxFQUFFLEdBQUUsV0FBVSxHQUFHLEVBQUUsR0FBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUFsZ0ksSUFBb2dJLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLFlBQVksR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUFuakksSUFBcWpJLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLGtDQUFrQyxHQUFFLFFBQU8sR0FBRyxTQUFTLEVBQUMsQ0FBQztBQUFyb0ksSUFBdW9JLE1BQUksRUFBRSxFQUFDLGFBQVksR0FBRyxFQUFFLFFBQVEsSUFBRSxHQUFFLFlBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxHQUFHLEVBQUMsQ0FBQztBQUE1dEksSUFBOHRJLEtBQUcsR0FBRyxDQUFDLFNBQVEsUUFBTyxVQUFTLFdBQVUsU0FBUSxZQUFXLFNBQVEsV0FBVyxDQUFDO0FBQTl5SSxJQUFnekksS0FBRyxHQUFHLE9BQU8sRUFBQyxPQUFNLEdBQUUsQ0FBQztBQUF2MEksSUFBeTBJLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLGtCQUFrQixHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQTkzSSxJQUFnNEksS0FBRyxHQUFHLE9BQU8sRUFBQyxPQUFNLElBQUcsUUFBTyxFQUFFLEVBQUUsU0FBUyxHQUFFLE1BQUssR0FBRyxFQUFDLENBQUM7QUFBdjdJLElBQXk3SSxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSx1QkFBdUIsR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUFuL0ksSUFBcS9JLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQS9nSixJQUFpaEosS0FBRyxFQUFFLEVBQUMsT0FBTSxHQUFHLEVBQUUsRUFBRSxTQUFTLEdBQUUsY0FBYSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxHQUFFLGVBQWMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsR0FBRSxzQkFBcUIsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQXpySixJQUEyckosS0FBRyxFQUFFLEVBQUMsTUFBSyxHQUFHLENBQUMsUUFBTyxZQUFXLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQWh2SixJQUFrdkosS0FBRyxFQUFFLEVBQUMsTUFBSyxFQUFFLGFBQWEsR0FBRSxXQUFVLEVBQUUsRUFBRSxTQUFTLHdEQUF3RCxHQUFFLFNBQVEsR0FBRyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRSxtQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFFLFNBQVEsR0FBRyxFQUFFLFNBQVMsR0FBRSxPQUFNLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQTM5SixJQUE2OUosS0FBRyxHQUFHLFFBQU8sQ0FBQyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQXAvSixJQUFzL0osS0FBRyxHQUFHLFFBQU8sQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFuaEssSUFBcWhLLEtBQUcsRUFBRSxFQUFDLE1BQUssSUFBRyxTQUFRLEdBQUcsQ0FBQyxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxPQUFNLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQXpsSyxJQUEybEssS0FBRyxHQUFHLE9BQU8sRUFBQyxVQUFTLEdBQUcsRUFBRSxHQUFFLGtCQUFpQixHQUFHLFNBQVMsR0FBRSxjQUFhLEVBQUUsRUFBRSxTQUFTLEdBQUUsZ0JBQWUsR0FBRyxDQUFDLFFBQU8sY0FBYSxZQUFZLENBQUMsRUFBRSxTQUFTLEdBQUUsYUFBWSxHQUFHLEVBQUUsU0FBUyxHQUFFLFdBQVUsR0FBRyxFQUFFLElBQUksR0FBRSxlQUFjLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxHQUFFLFVBQVMsR0FBRyxTQUFTLEdBQUUsT0FBTSxHQUFHLEVBQUUsRUFBRSxTQUFTLEdBQUUsWUFBVyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQS80SyxJQUFpNUssS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsd0JBQXdCLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBNThLLElBQTg4SyxLQUFHLEdBQUcsT0FBTyxFQUFDLE9BQU0sRUFBRSxHQUFFLFlBQVcsR0FBRyxHQUFHLENBQUMsV0FBVSxnQkFBZSxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSyxJQUFHLFNBQVEsR0FBRSxDQUFDO0FBQTNqTCxJQUE2akwsS0FBRyxHQUFHLE9BQU8sRUFBQyxPQUFNLEVBQUUsR0FBRSxZQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVUsZ0JBQWUsYUFBWSxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSyxJQUFHLFNBQVEsR0FBRyxDQUFDLElBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBanNMLElBQW1zTCxLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsU0FBUyxHQUFFLE9BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRSxhQUFZLEVBQUUsRUFBRSxTQUFTLEdBQUUsU0FBUSxHQUFHLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBbnlMLElBQXF5TCxLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsUUFBUSxHQUFFLE9BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRSxhQUFZLEVBQUUsRUFBRSxTQUFTLEdBQUUsV0FBVSxHQUFHLEVBQUUsU0FBUyxHQUFFLFdBQVUsR0FBRyxFQUFFLFNBQVMsR0FBRSxRQUFPLEdBQUcsQ0FBQyxTQUFRLE9BQU0sUUFBTyxXQUFXLENBQUMsRUFBRSxTQUFTLEdBQUUsU0FBUSxFQUFFLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBaC9MLElBQWsvTCxLQUFHLEVBQUUsRUFBQyxNQUFLLEdBQUcsQ0FBQyxVQUFTLFNBQVMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRSxhQUFZLEVBQUUsRUFBRSxTQUFTLEdBQUUsU0FBUSxHQUFHLEVBQUUsU0FBUyxHQUFFLFNBQVEsR0FBRyxFQUFFLFNBQVMsR0FBRSxTQUFRLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUE5b00sSUFBZ3BNLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxRQUFRLEdBQUUsT0FBTSxFQUFFLEVBQUUsU0FBUyxHQUFFLGFBQVksRUFBRSxFQUFFLFNBQVMsR0FBRSxNQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUUsU0FBUSxFQUFFLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFBM3ZNLElBQTZ2TSxLQUFHLEVBQUUsRUFBQyxNQUFLLEVBQUUsUUFBUSxHQUFFLE9BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRSxhQUFZLEVBQUUsRUFBRSxTQUFTLEdBQUUsT0FBTSxHQUFHLEVBQUUsRUFBQyxPQUFNLEVBQUUsR0FBRSxPQUFNLEVBQUUsRUFBQyxDQUFDLENBQUMsR0FBRSxTQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUE5M00sSUFBZzRNLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxRQUFRLEdBQUUsT0FBTSxFQUFFLEVBQUUsU0FBUyxHQUFFLGFBQVksRUFBRSxFQUFFLFNBQVMsR0FBRSxNQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUUsV0FBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsR0FBRSxTQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUF4Z04sSUFBMGdOLEtBQUcsR0FBRyxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQXZoTixJQUF5aE4sS0FBRyxFQUFFLEVBQUMsTUFBSyxFQUFFLE9BQU8sR0FBRSxPQUFNLEVBQUUsRUFBRSxTQUFTLEdBQUUsYUFBWSxFQUFFLEVBQUUsU0FBUyxHQUFFLFVBQVMsR0FBRyxFQUFFLFNBQVMsR0FBRSxVQUFTLEdBQUcsRUFBRSxTQUFTLEdBQUUsT0FBTSxFQUFFLEVBQUMsTUFBSyxFQUFFLFFBQVEsR0FBRSxNQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFLFNBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUFydE4sSUFBdXROLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxPQUFPLEdBQUUsT0FBTSxFQUFFLEVBQUUsU0FBUyxHQUFFLGFBQVksRUFBRSxFQUFFLFNBQVMsR0FBRSxVQUFTLEdBQUcsRUFBRSxTQUFTLEdBQUUsVUFBUyxHQUFHLEVBQUUsU0FBUyxHQUFFLE9BQU0sRUFBRSxFQUFDLE9BQU0sR0FBRyxFQUFFLEVBQUMsT0FBTSxFQUFFLEdBQUUsT0FBTSxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLFNBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUF4NU4sSUFBMDVOLEtBQUcsR0FBRyxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQXY2TixJQUF5Nk4sS0FBRyxHQUFHLENBQUMsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUF6N04sSUFBMjdOLEtBQUcsR0FBRyxDQUFDLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUE5OE4sSUFBZzlOLEtBQUcsR0FBRyxPQUFPLEVBQUMsTUFBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUUsU0FBUSxFQUFFLEdBQUUsaUJBQWdCLEVBQUUsRUFBQyxNQUFLLEVBQUUsUUFBUSxHQUFFLFlBQVcsR0FBRyxFQUFFLEdBQUUsRUFBRSxHQUFFLFVBQVMsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUM7QUFBNWxPLElBQThsTyxLQUFHLEdBQUcsT0FBTyxFQUFDLE1BQUssRUFBRSxLQUFLLEdBQUUsU0FBUSxFQUFFLEdBQUUsZUFBYyxFQUFFLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBSSxFQUFDLENBQUM7QUFBdHFPLElBQXdxTyxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFyck8sSUFBdXJPLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLG9CQUFvQixHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQTl1TyxJQUFndk8sS0FBRyxHQUFHLE9BQU8sRUFBQyxlQUFjLEVBQUUsRUFBQyxDQUFDO0FBQWh4TyxJQUFreE8sS0FBRyxHQUFHLE9BQU8sRUFBQyxRQUFPLEVBQUUsb0NBQW9DLEdBQUUsUUFBTyxHQUFFLENBQUM7QUFBejFPLElBQTIxTyxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sR0FBRyxDQUFDLFVBQVMsV0FBVSxRQUFRLENBQUMsR0FBRSxTQUFRLEdBQUcsQ0FBQyxNQUFJLE1BQUksT0FBSyxTQUFPLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUMsQ0FBQztBQUFwK08sSUFBcytPLEtBQUcsRUFBRSxFQUFDLE1BQUssRUFBRSxjQUFjLEdBQUUsS0FBSSxFQUFFLEVBQUMsQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFLEVBQUMsTUFBSyxFQUFFLFlBQVksR0FBRSxNQUFLLEVBQUUsRUFBQyxDQUFDO0FBQXhDLElBQTBDLEtBQUcsR0FBRyxPQUFPLEVBQUMsS0FBSSxHQUFHLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxVQUFTLEVBQUUsRUFBQyxNQUFLLEVBQUUsR0FBRSxPQUFNLEVBQUUsRUFBQyxDQUFDLEdBQUUsU0FBUSxFQUFFLEVBQUMsV0FBVSxHQUFHLEVBQUUsR0FBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFDO0FBQWxLLElBQW9LLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLHFCQUFxQixHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEVBQUUsT0FBTyxJQUFJLFNBQU8sYUFBYSxPQUFNLFVBQVUsMkNBQTJDLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRTtBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxNQUFHLEVBQUUsT0FBTyxJQUFJLFNBQU8sZUFBZSxPQUFNLFVBQVUscURBQXFELEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHLEdBQUcsT0FBTyxFQUFDLFlBQVcsR0FBRyxFQUFDLFFBQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRSxPQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFFLFNBQVEsR0FBRyxHQUFHLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUFqRyxJQUFtRyxLQUFHLEVBQUUsRUFBQyxLQUFJLEVBQUUsRUFBRSxXQUFXLFNBQVMsR0FBRSxNQUFLLEVBQUUsRUFBRSxTQUFTLEdBQUUsT0FBTSxHQUFHLEVBQUUsR0FBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUF6TCxJQUEyTCxLQUFHLEdBQUcsT0FBTyxFQUFDLFFBQU8sRUFBRSxZQUFZLEdBQUUsUUFBTyxHQUFHLFNBQVMsRUFBQyxDQUFDO0FBQXJQLElBQXVQLEtBQUcsR0FBRyxPQUFPLEVBQUMsT0FBTSxHQUFHLEVBQUUsRUFBQyxDQUFDO0FBQWxSLElBQW9SLEtBQUcsR0FBRyxPQUFPLEVBQUMsUUFBTyxFQUFFLGtDQUFrQyxHQUFFLFFBQU8sR0FBRyxTQUFTLEVBQUMsQ0FBQztBQUFwVyxJQUFzVyxNQUFJLEdBQUcsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFqYSxJQUFtYSxNQUFJLEdBQUcsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUExYixJQUE0YixNQUFJLEdBQUcsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUE1ZCxJQUE4ZCxNQUFJLEdBQUcsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUE5ZixJQUFnZ0IsTUFBSSxHQUFHLENBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFuaUIsSUFBcWlCLE1BQUksR0FBRyxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFFLElBQU0sSUFBTixNQUFNQyxZQUFVLE1BQUs7QUFBQSxFQUFDLFlBQVksR0FBRSxHQUFFLEdBQUU7QUFBQyxVQUFNLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUFFLFNBQUssT0FBSyxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssT0FBSztBQUFBLEVBQVU7QUFBQSxFQUFDLE9BQU8sVUFBVSxHQUFFLEdBQUUsR0FBRTtBQUFDLFFBQUcsTUFBSSxFQUFFLDBCQUF3QixHQUFFO0FBQUMsVUFBSSxJQUFFO0FBQUUsVUFBRyxFQUFFLGFBQWEsUUFBTyxJQUFJLEdBQUcsRUFBRSxjQUFhLENBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxJQUFJQSxJQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxFQUFDLFlBQVksR0FBRSxJQUFFLGtCQUFrQixFQUFFLFNBQU8sSUFBRSxNQUFJLEVBQUUsYUFBWTtBQUFDLFVBQU0sRUFBRSx3QkFBdUIsR0FBRSxFQUFDLGNBQWEsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxlQUFjO0FBQUMsV0FBTyxLQUFLLE1BQU0sZ0JBQWMsQ0FBQztBQUFBLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxNQUFJLGVBQWEsTUFBSSxZQUFVLE1BQUk7QUFBVztBQUFDLElBQUksS0FBRyxPQUFPLG1EQUFtRDtBQUFFLElBQUksS0FBRyxFQUFDLE1BQUssUUFBTyxjQUFhLFFBQU8sVUFBUyxDQUFDLEdBQUcsR0FBRSxnQkFBZSxTQUFRLGNBQWEsT0FBTSxjQUFhLG9CQUFtQixhQUFZLFdBQVUsMEJBQXlCLGVBQWMsNkJBQTRCLE1BQUcsOEJBQTZCLE9BQUcsZ0JBQWUsZUFBYyxRQUFPLGVBQWMsY0FBYSxPQUFHLGFBQVksQ0FBQyxHQUFFLGVBQWMsT0FBRyxxQkFBb0IsT0FBRyxpQkFBZ0IsVUFBUyxpQkFBZ0IsT0FBRyxlQUFjLGdCQUFlLGdCQUFlLDBCQUF5QixjQUFhLE9BQU0sbUJBQWtCLGdCQUFlO0FBQTNoQixJQUE2aEIsS0FBRyxDQUFDLE1BQUksT0FBTyxNQUFJLFdBQVMsRUFBQyxHQUFHLElBQUcsTUFBSyxFQUFDLElBQUUsRUFBQyxHQUFHLElBQUcsR0FBRyxFQUFDO0FBQUUsSUFBSSxLQUFHLENBQUMsTUFBSTtBQUFDLE1BQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsU0FBTyxTQUFPLENBQUMsR0FBRyxFQUFFLFVBQVMsRUFBRSxnQkFBZSxFQUFFLElBQUksSUFBRSxFQUFFO0FBQVMsU0FBTSxFQUFDLEdBQUcsR0FBRSxPQUFNLEVBQUMsNEJBQTJCLE1BQUUsR0FBRSxhQUFZLEdBQUUsY0FBYSxRQUFPLE1BQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFFLENBQUMsTUFBSSxDQUFDLEVBQUUsTUFBSyxFQUFDLEtBQUksRUFBRSxNQUFLLE1BQUssQ0FBQyxHQUFHLEVBQUUsVUFBUyxFQUFFLGdCQUFlLENBQUMsR0FBRSxZQUFXLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsR0FBRyxjQUFjO0FBQU8sTUFBRyxFQUFFLEdBQUUsZUFBYSxFQUFDLEdBQUcsRUFBRSxjQUFhLENBQUMsQ0FBQyxHQUFFLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxJQUFFLENBQUMsSUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsTUFBSSxJQUFFO0FBQUUsU0FBSyxJQUFFLEVBQUUsVUFBUSxJQUFFLEVBQUUsUUFBTyxJQUFJLEtBQUcsRUFBRSxDQUFDLE1BQUksRUFBRSxDQUFDLEVBQUU7QUFBTSxTQUFNLEVBQUUsRUFBRSxTQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUU7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QU0sS0FBSTtBQUFRLFNBQUcsR0FBRSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFPLFNBQUcsR0FBRSxHQUFHLE1BQUssRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFRLFNBQUcsR0FBRSxHQUFHLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFhLFNBQUcsR0FBRSxPQUFPLElBQUksR0FBRyxFQUFFLE9BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQVcsU0FBRyxHQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTSxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxJQUFNLEtBQUk7QUFBVyxTQUFHLEdBQUUsYUFBWSxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQU8sU0FBRyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFPLFNBQUcsR0FBRSxRQUFPLEVBQUUsU0FBUSxDQUFDO0FBQUU7QUFBQSxJQUFNLEtBQUk7QUFBVyxTQUFHLEdBQUUsWUFBVyxFQUFFLFNBQVEsQ0FBQztBQUFFO0FBQUEsSUFBTSxLQUFJO0FBQVMsU0FBRyxHQUFFLGFBQVksT0FBTyxFQUFFLGNBQVksV0FBUyxLQUFLLElBQUksRUFBRSxXQUFVLEVBQUUsS0FBSyxJQUFFLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQyxHQUFFLEdBQUcsR0FBRSxhQUFZLE9BQU8sRUFBRSxjQUFZLFdBQVMsS0FBSyxJQUFJLEVBQUUsV0FBVSxFQUFFLEtBQUssSUFBRSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSSxZQUFXO0FBQUMsU0FBRyxHQUFFLE9BQU8sR0FBRyxFQUFFLE9BQU0sQ0FBQyxDQUFDLEdBQUUsRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElB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QUcsSUFBRTtBQUFHLFdBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxRQUFHLEdBQUU7QUFBQyxXQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRztBQUFBLElBQVE7QUFBQyxRQUFHLEVBQUUsR0FBRTtBQUFDLFVBQUcsR0FBRTtBQUFDLFlBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPLEdBQUU7QUFBQyxjQUFHLEVBQUUsTUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxJQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFFLElBQUU7QUFBQSxtQkFBVyxFQUFFLElBQUUsQ0FBQyxNQUFJLE9BQUssRUFBRSxJQUFFLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFBRSxNQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUU7QUFBQSxjQUFRLE1BQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztBQUFHO0FBQUEsUUFBUTtBQUFBLE1BQUMsV0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLE9BQU8sR0FBRTtBQUFDLGFBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztBQUFJO0FBQUEsTUFBUTtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsR0FBRTtBQUFDLFVBQUcsRUFBRSxDQUFDLE1BQUksS0FBSTtBQUFDLGFBQUc7QUFBQTtBQUM5MjlDO0FBQUEsTUFBUSxXQUFTLEVBQUUsQ0FBQyxNQUFJLEtBQUk7QUFBQyxhQUFHO0FBQUE7QUFDaEM7QUFBQSxNQUFRO0FBQUEsSUFBQztBQUFDLFFBQUcsRUFBRSxLQUFHLEVBQUUsQ0FBQyxNQUFJLEtBQUk7QUFBQyxXQUFHLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFBLElBQzdDLElBQUksRUFBRSxDQUFDLENBQUM7QUFBQTtBQUNQO0FBQUEsSUFBUTtBQUFDLFFBQUcsS0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsTUFBSSxLQUFLLEtBQUU7QUFBQSxhQUFXLEtBQUcsRUFBRSxDQUFDLE1BQUksSUFBSSxLQUFFO0FBQUEsYUFBVyxDQUFDLEtBQUcsRUFBRSxDQUFDLE1BQUksSUFBSSxLQUFFO0FBQUEsRUFBRTtBQUFDLE1BQUc7QUFBQyxRQUFJLE9BQU8sQ0FBQztBQUFBLEVBQUMsUUFBTTtBQUFDLFdBQU8sUUFBUSxLQUFLLHNDQUFzQyxFQUFFLFlBQVksS0FBSyxHQUFHLENBQUMsdUVBQXVFLEdBQUUsRUFBRTtBQUFBLEVBQU07QUFBQyxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLFdBQVMsU0FBUyxTQUFRLEtBQUssOEZBQThGO0FBQUUsTUFBRyxFQUFFLFdBQVMsY0FBWSxFQUFFLFNBQVMsS0FBSyxhQUFXLEVBQUUsUUFBUSxRQUFNLEVBQUMsTUFBSyxVQUFTLFVBQVMsRUFBRSxRQUFRLEtBQUssUUFBTyxZQUFXLEVBQUUsUUFBUSxLQUFLLE9BQU8sT0FBTyxDQUFDLEdBQUUsT0FBSyxFQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsVUFBVSxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxjQUFhLENBQUMsRUFBQyxDQUFDLEtBQUcsR0FBRyxDQUFDLEVBQUMsSUFBRyxDQUFDLENBQUMsR0FBRSxzQkFBcUIsRUFBRSw2QkFBNEI7QUFBRSxNQUFJLElBQUUsRUFBQyxNQUFLLFVBQVMsc0JBQXFCLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLHNCQUFzQixFQUFDLENBQUMsS0FBRyxFQUFFLDRCQUEyQjtBQUFFLE1BQUcsRUFBRSxXQUFTLFdBQVcsUUFBTztBQUFFLE1BQUcsRUFBRSxTQUFTLEtBQUssYUFBVyxFQUFFLGFBQVcsRUFBRSxRQUFRLEtBQUssUUFBUSxRQUFPO0FBQUMsUUFBRyxFQUFDLE1BQUssR0FBRSxHQUFHLEVBQUMsSUFBRSxHQUFHLEVBQUUsUUFBUSxNQUFLLENBQUM7QUFBRSxXQUFNLEVBQUMsR0FBRyxHQUFFLGVBQWMsRUFBQztBQUFBLEVBQUMsV0FBUyxFQUFFLFNBQVMsS0FBSyxhQUFXLEVBQUUsUUFBUSxRQUFNLEVBQUMsR0FBRyxHQUFFLGVBQWMsRUFBQyxNQUFLLEVBQUUsUUFBUSxLQUFLLE9BQU0sRUFBQztBQUFBLFdBQVUsRUFBRSxTQUFTLEtBQUssYUFBVyxFQUFFLGNBQVksRUFBRSxRQUFRLEtBQUssS0FBSyxLQUFLLGFBQVcsRUFBRSxhQUFXLEVBQUUsUUFBUSxLQUFLLEtBQUssS0FBSyxRQUFRLFFBQU87QUFBQyxRQUFHLEVBQUMsTUFBSyxHQUFFLEdBQUcsRUFBQyxJQUFFLEdBQUcsRUFBRSxRQUFRLE1BQUssQ0FBQztBQUFFLFdBQU0sRUFBQyxHQUFHLEdBQUUsZUFBYyxFQUFDO0FBQUEsRUFBQztBQUFDLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsZ0JBQWMsU0FBUyxRQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsRUFBRSxRQUFRLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsU0FBUSxHQUFHLEVBQUMsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLFVBQVUsTUFBSyxFQUFDLEdBQUcsR0FBRSxhQUFZLENBQUMsR0FBRyxFQUFFLGFBQVksU0FBUSxTQUFRLEdBQUcsRUFBQyxDQUFDLEtBQUcsR0FBRyxDQUFDO0FBQUUsU0FBTSxFQUFDLE1BQUssU0FBUSxVQUFTLEtBQUksT0FBTSxFQUFDLE1BQUssU0FBUSxPQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBUyxHQUFFLFVBQVMsRUFBQyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLE1BQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQUk7QUFBQyxXQUFPLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFJO0FBQUEsRUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQUksRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsTUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUUsU0FBTSxFQUFDLE1BQUssRUFBRSxXQUFTLElBQUUsRUFBRSxDQUFDLE1BQUksV0FBUyxXQUFTLFdBQVMsQ0FBQyxVQUFTLFFBQVEsR0FBRSxNQUFLLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsU0FBTyxFQUFFLFdBQVMsV0FBUyxTQUFPLEVBQUMsS0FBSSxHQUFHLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxLQUFLLEVBQUMsQ0FBQyxFQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRTtBQUFDLFNBQU8sRUFBRSxXQUFTLGFBQVcsRUFBQyxNQUFLLENBQUMsTUFBTSxHQUFFLFVBQVMsS0FBRSxJQUFFLEVBQUMsTUFBSyxPQUFNO0FBQUM7QUFBQyxJQUFJLEtBQUcsRUFBQyxXQUFVLFVBQVMsV0FBVSxVQUFTLFdBQVUsV0FBVSxZQUFXLFdBQVUsU0FBUSxPQUFNO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLE1BQUcsRUFBRSxXQUFTLFdBQVcsUUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxFQUFFLG1CQUFtQixNQUFJLE1BQU0sS0FBSyxFQUFFLFFBQVEsT0FBTyxDQUFDLElBQUUsRUFBRTtBQUFRLE1BQUcsRUFBRSxNQUFNLENBQUMsTUFBSyxFQUFFLEtBQUssWUFBWSxPQUFNLENBQUMsRUFBRSxLQUFLLFVBQVEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLEdBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsVUFBSSxJQUFFLEdBQUcsRUFBRSxLQUFLLFFBQVE7QUFBRSxhQUFPLEtBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsSUFBRTtBQUFBLElBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSxXQUFNLEVBQUMsTUFBSyxFQUFFLFNBQU8sSUFBRSxJQUFFLEVBQUUsQ0FBQyxFQUFDO0FBQUEsRUFBQyxXQUFTLEVBQUUsTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFLLGFBQVcsZ0JBQWMsQ0FBQyxFQUFFLFdBQVcsR0FBRTtBQUFDLFFBQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsT0FBTyxFQUFFLEtBQUs7QUFBTSxjQUFPLEdBQUU7QUFBQSxRQUFDLEtBQUk7QUFBQSxRQUFTLEtBQUk7QUFBQSxRQUFTLEtBQUk7QUFBVSxpQkFBTSxDQUFDLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBRSxLQUFJO0FBQVMsaUJBQU0sQ0FBQyxHQUFHLEdBQUUsU0FBUztBQUFBLFFBQUUsS0FBSTtBQUFTLGNBQUcsRUFBRSxLQUFLLFVBQVEsS0FBSyxRQUFNLENBQUMsR0FBRyxHQUFFLE1BQU07QUFBQSxRQUFFLEtBQUk7QUFBQSxRQUFTLEtBQUk7QUFBQSxRQUFZLEtBQUk7QUFBQSxRQUFXO0FBQVEsaUJBQU87QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFLENBQUMsQ0FBQztBQUFFLFFBQUcsRUFBRSxXQUFTLEVBQUUsUUFBTztBQUFDLFVBQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEdBQUUsTUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFJLENBQUM7QUFBRSxhQUFNLEVBQUMsTUFBSyxFQUFFLFNBQU8sSUFBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUssRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUMsZUFBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEtBQUssSUFBRSxJQUFFLENBQUMsR0FBRyxHQUFFLEVBQUUsS0FBSyxLQUFLO0FBQUEsTUFBQyxHQUFFLENBQUMsQ0FBQyxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUMsV0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFJLEVBQUUsS0FBSyxhQUFXLFNBQVMsRUFBRSxRQUFNLEVBQUMsTUFBSyxVQUFTLE1BQUssRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRyxHQUFFLEdBQUcsRUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDLE1BQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBQztBQUFFLFNBQU8sR0FBRyxHQUFFLENBQUM7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUksS0FBRyxFQUFFLG1CQUFtQixNQUFJLE1BQU0sS0FBSyxFQUFFLFFBQVEsT0FBTyxDQUFDLElBQUUsRUFBRSxTQUFTLElBQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxDQUFDLENBQUMsTUFBSSxDQUFDLEVBQUUsZ0JBQWMsT0FBTyxNQUFJLFlBQVUsT0FBTyxLQUFLLENBQUMsRUFBRSxTQUFPLEVBQUU7QUFBRSxTQUFPLEVBQUUsU0FBTyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQU07QUFBRSxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLGFBQVksYUFBWSxhQUFZLGNBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEtBQUssUUFBUSxNQUFJLENBQUMsRUFBRSxVQUFVLEtBQUssVUFBUSxDQUFDLEVBQUUsVUFBVSxLQUFLLE9BQU8sU0FBUTtBQUFDLFFBQUcsRUFBRSxXQUFTLFdBQVcsUUFBTSxFQUFDLE1BQUssR0FBRyxFQUFFLFVBQVUsS0FBSyxRQUFRLEdBQUUsVUFBUyxLQUFFO0FBQUUsV0FBTSxFQUFDLE1BQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxLQUFLLFFBQVEsR0FBRSxNQUFNLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxFQUFFLFdBQVMsWUFBVztBQUFDLFFBQUksSUFBRSxFQUFFLEVBQUUsVUFBVSxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLENBQUM7QUFBRSxRQUFHLEtBQUcsVUFBUyxFQUFFLFFBQU0sRUFBQyxPQUFNLENBQUMsQ0FBQyxHQUFFLFVBQVMsS0FBRTtBQUFFLFdBQU8sS0FBRyxFQUFDLEdBQUcsR0FBRSxVQUFTLEtBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxJQUFFLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUM7QUFBRSxTQUFPLEtBQUcsRUFBQyxPQUFNLENBQUMsR0FBRSxFQUFDLE1BQUssT0FBTSxDQUFDLEVBQUM7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsRUFBQyxNQUFLLFNBQVE7QUFBRSxNQUFHLENBQUMsRUFBRSxPQUFPLFFBQU87QUFBRSxXQUFRLEtBQUssRUFBRSxPQUFPLFNBQU8sRUFBRSxNQUFLO0FBQUEsSUFBQyxLQUFJO0FBQU0sUUFBRSxPQUFLLFdBQVUsR0FBRyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLElBQU0sS0FBSTtBQUFNLFVBQUcsRUFBRSxXQUFTLGNBQWMsS0FBRyxFQUFFLFVBQVUsSUFBRyxHQUFFLFdBQVUsRUFBRSxPQUFNLEVBQUUsU0FBUSxDQUFDO0FBQUEsVUFBTyxJQUFHLEdBQUUsb0JBQW1CLEVBQUUsT0FBTSxFQUFFLFNBQVEsQ0FBQztBQUFBLFdBQU07QUFBQyxZQUFHLENBQUMsRUFBRSxVQUFVLEdBQUUsbUJBQWlCO0FBQUcsV0FBRyxHQUFFLFdBQVUsRUFBRSxPQUFNLEVBQUUsU0FBUSxDQUFDO0FBQUEsTUFBQztBQUFDO0FBQUEsSUFBTSxLQUFJO0FBQU0sVUFBRyxFQUFFLFdBQVMsY0FBYyxLQUFHLEVBQUUsVUFBVSxJQUFHLEdBQUUsV0FBVSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBQSxVQUFPLElBQUcsR0FBRSxvQkFBbUIsRUFBRSxPQUFNLEVBQUUsU0FBUSxDQUFDO0FBQUEsV0FBTTtBQUFDLFlBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRSxtQkFBaUI7QUFBRyxXQUFHLEdBQUUsV0FBVSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBQSxNQUFDO0FBQUM7QUFBQSxJQUFNLEtBQUk7QUFBYSxTQUFHLEdBQUUsY0FBYSxFQUFFLE9BQU0sRUFBRSxTQUFRLENBQUM7QUFBRTtBQUFBLEVBQUs7QUFBQyxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUUsV0FBUyxVQUFTLElBQUUsRUFBQyxNQUFLLFVBQVMsWUFBVyxDQUFDLEVBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsTUFBTTtBQUFFLFdBQVEsS0FBSyxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsTUFBSSxVQUFRLEVBQUUsU0FBTyxPQUFPO0FBQVMsUUFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLFFBQUcsS0FBRyxHQUFFO0FBQUMsVUFBRyxFQUFFLEtBQUssYUFBVyxjQUFjLEtBQUUsRUFBRSxLQUFLO0FBQVUsVUFBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUUsRUFBRSxTQUFTO0FBQUUsVUFBRTtBQUFBLElBQUU7QUFBQyxRQUFJLElBQUUsRUFBRSxFQUFFLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLGNBQWEsQ0FBQyxHQUFFLGNBQWEsQ0FBQyxHQUFHLEVBQUUsYUFBWSxjQUFhLENBQUMsRUFBQyxDQUFDO0FBQUUsUUFBRyxNQUFJLE9BQU87QUFBUyxRQUFHLEVBQUUsV0FBVyxDQUFDLElBQUUsR0FBRSxDQUFDLEVBQUUsR0FBRSxLQUFLLENBQUM7QUFBQSxFQUFDO0FBQUMsTUFBRyxFQUFFLE9BQU8sR0FBRSxXQUFTO0FBQUUsTUFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsTUFBRyxNQUFJLE9BQU8sR0FBRSx1QkFBcUI7QUFBRSxTQUFPO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxFQUFFLFNBQVMsS0FBSyxhQUFXLFdBQVcsUUFBTyxFQUFFLEVBQUUsU0FBUyxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxzQkFBc0IsRUFBQyxDQUFDO0FBQUUsVUFBTyxFQUFFLGFBQVk7QUFBQSxJQUFDLEtBQUk7QUFBYyxhQUFPLEVBQUU7QUFBQSxJQUE0QixLQUFJO0FBQVMsYUFBTyxFQUFFO0FBQUEsSUFBNkIsS0FBSTtBQUFRLGFBQU8sRUFBRSw2QkFBMkIsV0FBUyxFQUFFLDhCQUE0QixFQUFFO0FBQUEsRUFBNEI7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFO0FBQUMsTUFBRztBQUFDLFdBQU8sRUFBRSxXQUFXO0FBQUEsRUFBQyxRQUFNO0FBQUMsV0FBTTtBQUFBLEVBQUU7QUFBQztBQUFDLElBQUksS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLE1BQUcsRUFBRSxZQUFZLFNBQVMsTUFBSSxFQUFFLGNBQWMsU0FBUyxFQUFFLFFBQU8sRUFBRSxFQUFFLFVBQVUsTUFBSyxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUM7QUFBRSxTQUFPLElBQUUsRUFBQyxPQUFNLENBQUMsRUFBQyxLQUFJLEdBQUcsQ0FBQyxFQUFDLEdBQUUsQ0FBQyxFQUFDLElBQUUsR0FBRyxDQUFDO0FBQUM7QUFBRSxJQUFJLEtBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQyxNQUFHLEVBQUUsaUJBQWUsUUFBUSxRQUFPLEVBQUUsRUFBRSxHQUFHLE1BQUssQ0FBQztBQUFBLFdBQVUsRUFBRSxpQkFBZSxTQUFTLFFBQU8sRUFBRSxFQUFFLElBQUksTUFBSyxDQUFDO0FBQUUsTUFBSSxJQUFFLEVBQUUsRUFBRSxHQUFHLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxFQUFDLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxJQUFJLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsSUFBRSxNQUFJLEdBQUcsRUFBQyxDQUFDO0FBQUUsU0FBTSxFQUFDLE9BQU0sQ0FBQyxHQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBSSxNQUFJLE1BQU0sRUFBQztBQUFDO0FBQUUsU0FBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLFNBQU8sRUFBRSxFQUFFLEtBQUssTUFBSyxDQUFDO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLEVBQUMsTUFBSyxTQUFRLGFBQVksTUFBRyxPQUFNLEVBQUUsRUFBRSxVQUFVLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLE9BQU8sRUFBQyxDQUFDLEVBQUM7QUFBRSxNQUFHLEVBQUUsUUFBUSxJQUFHLEdBQUUsWUFBVyxFQUFFLFFBQVEsT0FBTSxFQUFFLFFBQVEsU0FBUSxDQUFDO0FBQUUsTUFBRyxFQUFFLFFBQVEsSUFBRyxHQUFFLFlBQVcsRUFBRSxRQUFRLE9BQU0sRUFBRSxRQUFRLFNBQVEsQ0FBQztBQUFFLFNBQU87QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLEVBQUUsS0FBSyxRQUFNLEVBQUMsTUFBSyxTQUFRLFVBQVMsRUFBRSxNQUFNLFFBQU8sT0FBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsTUFBSyxFQUFDLEdBQUcsR0FBRSxhQUFZLENBQUMsR0FBRyxFQUFFLGFBQVksU0FBUSxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksTUFBSSxTQUFPLElBQUUsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLGlCQUFnQixFQUFFLEVBQUUsS0FBSyxNQUFLLEVBQUMsR0FBRyxHQUFFLGFBQVksQ0FBQyxHQUFHLEVBQUUsYUFBWSxpQkFBaUIsRUFBQyxDQUFDLEVBQUM7QUFBQSxNQUFPLFFBQU0sRUFBQyxNQUFLLFNBQVEsVUFBUyxFQUFFLE1BQU0sUUFBTyxVQUFTLEVBQUUsTUFBTSxRQUFPLE9BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLE1BQUssRUFBQyxHQUFHLEdBQUUsYUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFZLFNBQVEsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLE1BQUksU0FBTyxJQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFNLEVBQUMsS0FBSSxHQUFHLENBQUMsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTyxFQUFFLEVBQUUsVUFBVSxNQUFLLENBQUM7QUFBQztBQUFFLElBQUksS0FBRyxDQUFDLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBTyxHQUFFO0FBQUEsSUFBQyxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVSxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUc7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFRLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFhLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBUSxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVMsYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUEsSUFBUyxLQUFLLEVBQUU7QUFBc0IsYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQWdCLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFVLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFRLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBYyxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVksYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVksYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQU8sYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQU8sYUFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVEsYUFBTSxNQUFJLEVBQUUsT0FBTyxFQUFFO0FBQUEsSUFBSyxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBQSxJQUFPLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBVyxhQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBTyxhQUFPLEdBQUcsQ0FBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQVcsYUFBTyxHQUFHLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFXLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFZLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFTLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFZLGFBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFBLElBQVksS0FBSyxFQUFFO0FBQUEsSUFBUSxLQUFLLEVBQUU7QUFBVTtBQUFBLElBQU87QUFBUSxhQUFPLGtCQUFDLE1BQUk7QUFBQztBQUFBLE1BQU0sR0FBRyxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRSxJQUFFLE9BQUc7QUFBQyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFFLE1BQUcsRUFBRSxVQUFTO0FBQUMsUUFBSSxJQUFFLEVBQUUsV0FBVyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsUUFBRyxNQUFJLEdBQUcsUUFBTztBQUFBLEVBQUM7QUFBQyxNQUFHLEtBQUcsQ0FBQyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsUUFBRyxNQUFJLE9BQU8sUUFBTztBQUFBLEVBQUM7QUFBQyxNQUFJLElBQUUsRUFBQyxLQUFJLEdBQUUsTUFBSyxFQUFFLGFBQVksWUFBVyxPQUFNO0FBQUUsSUFBRSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUUsTUFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVMsQ0FBQyxHQUFFLElBQUUsT0FBTyxNQUFJLGFBQVcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUUsTUFBRyxFQUFFLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSxNQUFHLEVBQUUsYUFBWTtBQUFDLFFBQUksSUFBRSxFQUFFLFlBQVksR0FBRSxHQUFFLENBQUM7QUFBRSxXQUFPLEVBQUUsYUFBVyxHQUFFO0FB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QU0sMkNBQTJDO0FBQUU7QUFBQSxNQUFLO0FBQUEsSUFBQztBQUFDLFFBQUksSUFBRSxNQUFJLFVBQVEsRUFBRSxTQUFPLFNBQU8sRUFBQyxHQUFHLEdBQUUsTUFBSyxPQUFNLElBQUU7QUFBRSxXQUFPLEtBQUssY0FBYyxFQUFDLFFBQU8sc0JBQXFCLFFBQU8sRUFBQyxHQUFFLElBQUcsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sUUFBUSxHQUFFLEdBQUU7QUFBQyxXQUFPLEtBQUssUUFBUSxRQUFRLEVBQUMsUUFBTyxFQUFDLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLE1BQU0sY0FBYyxHQUFFLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxRQUFRLGNBQWMsRUFBQyxRQUFPLEVBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFVBQVUsR0FBRSxHQUFFO0FBQUMsV0FBTyxLQUFLLFFBQVEsVUFBVSxJQUFFLEVBQUMsUUFBTyxFQUFDLElBQUUsUUFBTyxDQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsTUFBTSxXQUFXLEdBQUUsR0FBRTtBQUFDLFdBQU8sS0FBSyxRQUFRLFdBQVcsRUFBQyxRQUFPLEVBQUMsR0FBRSxDQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxHQUFHO0FBQUUsVUFBTyxHQUFFO0FBQUEsSUFBQyxLQUFJO0FBQWEsVUFBRyxDQUFDLEVBQUUsT0FBTyxLQUFLLE9BQU0sTUFBTSxHQUFHLENBQUMsZ0VBQWdFLENBQUMsR0FBRztBQUFFO0FBQUEsSUFBTTtBQUFRO0FBQUEsRUFBSztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxHQUFHO0FBQUUsVUFBTyxHQUFFO0FBQUEsSUFBQyxLQUFJO0FB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LE1BQU0sT0FBTSxNQUFNLG9EQUFvRDtBQUFBLElBQUM7QUFBQyxRQUFHLEVBQUUsU0FBUyxTQUFPLEdBQUU7QUFBQyxVQUFJLElBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxTQUFPLENBQUMsR0FBRSxJQUFFLE1BQU0sUUFBUSxFQUFFLE9BQU8sSUFBRSxFQUFFLFVBQVEsQ0FBQyxFQUFFLE9BQU8sR0FBRSxJQUFFLEVBQUUsS0FBSyxDQUFDLE1BQUksRUFBRSxTQUFPLGFBQWEsR0FBRSxJQUFFLEVBQUUsU0FBUyxTQUFPLElBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxTQUFPLENBQUMsSUFBRSxRQUFPLElBQUUsSUFBRSxNQUFNLFFBQVEsRUFBRSxPQUFPLElBQUUsRUFBRSxVQUFRLENBQUMsRUFBRSxPQUFPLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sVUFBVTtBQUFFLFVBQUcsR0FBRTtBQUFDLFlBQUcsRUFBRSxLQUFLLENBQUMsTUFBSSxFQUFFLFNBQU8sYUFBYSxFQUFFLE9BQU0sTUFBTSwwRUFBMEU7QUFBRSxZQUFHLENBQUMsRUFBRSxPQUFNLE1BQU0sNEVBQTRFO0FBQUEsTUFBQztBQUFDLFVBQUcsR0FBRTtBQUFDLFlBQUksSUFBRSxJQUFJLElBQUksRUFBRSxPQUFPLENBQUMsTUFBSSxFQUFFLFNBQU8sVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxJQUFJLElBQUksRUFBRSxPQUFPLENBQUMsTUFBSSxFQUFFLFNBQU8sYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFJLEVBQUUsU0FBUyxDQUFDO0FBQUUsWUFBRyxFQUFFLFNBQU8sRUFBRSxRQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTSxNQUFNLGtGQUFrRjtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxFQUFFLE1BQU0sUUFBTyxLQUFLLFFBQVEsRUFBQyxR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LElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsR0FBRyxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLElBQUUsRUFBRSxJQUFFLEtBQUksRUFBRSxFQUFFLFdBQVMsRUFBRSxJQUFFLFlBQVcsRUFBRSxFQUFFLFlBQVUsRUFBRSxJQUFFLGFBQVksRUFBRSxFQUFFLGFBQVcsR0FBRyxJQUFFLGNBQWEsRUFBRSxFQUFFLGVBQWEsRUFBRSxJQUFFLGdCQUFlLEVBQUUsRUFBRSxRQUFNLEVBQUUsSUFBRSxTQUFRLEVBQUUsRUFBRSxRQUFNLEVBQUUsSUFBRSxTQUFRLEVBQUUsRUFBRSxNQUFJLEVBQUUsSUFBRSxPQUFNLEVBQUUsRUFBRSxjQUFZLEVBQUUsSUFBRSxlQUFjLEVBQUUsRUFBRSxRQUFNLEVBQUUsSUFBRSxTQUFRLEVBQUUsRUFBRSxZQUFVLEdBQUcsSUFBRSxhQUFZLEVBQUUsRUFBRSxjQUFZLEVBQUUsSUFBRSxlQUFjLEVBQUUsRUFBRSxPQUFLLEVBQUUsSUFBRSxRQUFPLEVBQUUsRUFBRSxRQUFNLEVBQUUsSUFBRSxTQUFRLEVBQUUsRUFBRSxXQUFTLEVBQUUsSUFBRSxZQUFXLEVBQUUsRUFBRSxNQUFJLENBQUMsSUFBRTtBQUFLLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLElBQUksS0FBRyxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTSxJQUFJLE9BQU8sQ0FBQztBQUFDLENBQUM7QUFBRSxJQUFJLEtBQUcsRUFBQyxLQUFJLEVBQUMsTUFBSyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTTtBQUFBLElBQzFrRCxJQUFJLE9BQU8sQ0FBQztBQUFDLENBQUMsR0FBRSxNQUFLLE1BQU0sR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUk7QUFBQyxTQUFNLE9BQUssSUFBSSxPQUFPLENBQUM7QUFBQyxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTTtBQUFBLElBQzNILElBQUksT0FBTyxDQUFDO0FBQUMsQ0FBQyxFQUFDLEdBQUUsS0FBSyxFQUFDLE1BQUssTUFBTSxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUUsTUFBSTtBQUFDLFNBQU07QUFBQSxJQUNqRSxJQUFLLE9BQU8sQ0FBQztBQUFDLENBQUMsR0FBRSxNQUFLLE1BQU0sR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFFLE1BQUk7QUFBQyxTQUFNLE9BQUssSUFBSyxPQUFPLENBQUM7QUFBQyxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJO0FBQUMsU0FBTTtBQUFBLElBQzdILElBQUssT0FBTyxDQUFDO0FBQUMsQ0FBQyxFQUFDLEVBQUM7QUFBRSxJQUFJO0FBQUEsQ0FB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QUksQ0FBQyxLQUFLLElBQUc7QUFBQyxVQUFHLEdBQUcscUJBQXFCLEVBQUUsSUFBRyxJQUFJLHFCQUFxQixHQUFFLEdBQUcsaUdBQWdHLHlCQUF3Qix1QkFBc0IsR0FBRTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxnQkFBZ0IsR0FBRTtBQUFDLFdBQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUk7QUFBQyxRQUFJLElBQUUsSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFFLElBQUUsSUFBSSxHQUFHLEtBQUssRUFBRTtBQUFFLFNBQUssS0FBRyxHQUFFLEtBQUssS0FBRyxHQUFFLEtBQUssS0FBRyxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUcsSUFBSSxNQUFJO0FBQUMsVUFBRyxFQUFFLENBQUMsSUFBRSxNQUFJLElBQUUsSUFBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLEdBQUUsTUFBSSxLQUFHLEtBQUssY0FBYTtBQUFDLFlBQUksSUFBRSxXQUFXLE1BQUk7QUFBQyxjQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBSyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUUsUUFBUTtBQUFBLFFBQUMsR0FBRSxJQUFFLENBQUM7QUFBRSxZQUFHLEVBQUUsTUFBTSxHQUFFLE1BQU07QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLE1BQUk7QUFBQyxRQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsTUFBSSxJQUFFLEdBQUcsSUFBSSxJQUFFO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFDLFVBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyxZQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSxZQUFHLENBQUMsS0FBRyxDQUFDLEVBQUU7QUFBTyxVQUFFLE1BQUksR0FBRSxFQUFFLFFBQU0sR0FBRSxFQUFFLE1BQUksS0FBRyxFQUFFO0FBQUUsWUFBSSxJQUFFLEVBQUUsTUFBSTtBQUFFLFVBQUUsZUFBYSxJQUFFO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBRSxRQUFJLElBQUUsR0FBRSxJQUFFLE1BQUk7QUFBQyxVQUFJLElBQUUsR0FBRyxJQUFJO0FBQUUsVUFBRyxLQUFLLGdCQUFjLEdBQUU7QUFBQyxZQUFFO0FBQUUsWUFBSSxJQUFFLFdBQVcsTUFBSSxJQUFFLEdBQUUsS0FBSyxhQUFhO0FBQUUsWUFBRyxFQUFFLE1BQU0sR0FBRSxNQUFNO0FBQUEsTUFBQztBQUFDLGFBQU87QUFBQSxJQUFDO0FBQUUsU0FBSyxrQkFBZ0IsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxJQUFJLENBQUM7QUFBRSxVQUFHLE1BQUksT0FBTyxRQUFPO0FBQUUsVUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsVUFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLFFBQU8sSUFBRTtBQUFFLFVBQUksS0FBRyxLQUFHLEVBQUUsS0FBRztBQUFFLGFBQU8sSUFBRTtBQUFBLElBQUMsR0FBRSxLQUFLLEtBQUcsQ0FBQyxNQUFJO0FBQUMsVUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsYUFBTSxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsTUFBSSxLQUFHLEVBQUUsS0FBRyxJQUFFO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUM7QUFBQSxFQUFFLEtBQUcsTUFBSTtBQUFBLEVBQUcsS0FBSTtBQUFDLFFBQUksSUFBRSxJQUFJLEdBQUcsS0FBSyxFQUFFO0FBQUUsU0FBSyxLQUFHLEdBQUUsS0FBSyxLQUFHLEdBQUUsS0FBSyxLQUFHLENBQUMsTUFBSTtBQUFDLFdBQUssTUFBSSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsSUFBRTtBQUFBLElBQUMsR0FBRSxLQUFLLEtBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQU87QUFBRSxVQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBRyxHQUFFO0FBQUMsWUFBRyxPQUFPLE1BQUksV0FBVyxPQUFNLFVBQVUsb0NBQW9DO0FBQUUsWUFBRyxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFNLFVBQVUsMERBQTBEO0FBQUEsTUFBQyxNQUFNLE9BQU0sVUFBVSwySEFBMkg7QUFBRSxhQUFPO0FBQUEsSUFBQyxHQUFFLEtBQUssS0FBRyxDQUFDLEdBQUUsR0FBRSxNQUFJO0FBQUMsVUFBRyxFQUFFLENBQUMsSUFBRSxHQUFFLEtBQUssSUFBRztBQUFDLFlBQUksSUFBRSxLQUFLLEtBQUcsRUFBRSxDQUFDO0FBQUUsZUFBTSxLQUFLLEtBQUcsRUFBRSxNQUFLLEdBQUcsSUFBRTtBQUFBLE1BQUM7QUFBQyxVQUFHLEtBQUssTUFBSSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsWUFBVSxHQUFFLEVBQUUsc0JBQW9CLEtBQUs7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBRyxDQUFDLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsTUFBSTtBQUFDLFFBQUcsS0FBRyxFQUFFLE9BQU0sVUFBVSxrRUFBa0U7QUFBRSxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUUsQ0FBQyxHQUFHLEVBQUMsWUFBVyxJQUFFLEtBQUssV0FBVSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUcsS0FBSyxHQUFHLFVBQVEsSUFBRSxLQUFLLFFBQUs7QUFBQyxVQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtBQUFNLFVBQUcsS0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFFLFVBQUcsTUFBSSxLQUFLLEdBQUc7QUFBQSxVQUFXLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsQ0FBQyxHQUFHLEVBQUMsWUFBVyxJQUFFLEtBQUssV0FBVSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUcsS0FBSyxHQUFHLFVBQVEsSUFBRSxLQUFLLFFBQUs7QUFBQyxVQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtBQUFNLFVBQUcsS0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFFLFVBQUcsTUFBSSxLQUFLLEdBQUc7QUFBQSxVQUFXLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFO0FBQUMsV0FBTyxNQUFJLFVBQVEsS0FBSyxHQUFHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFJO0FBQUEsRUFBQztBQUFBLEVBQUMsQ0FBQyxVQUFTO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUcsS0FBSyxHQUFHLENBQUMsTUFBSSxVQUFRLEtBQUssR0FBRyxDQUFDLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQSxFQUFDLENBQUMsV0FBVTtBQUFDLGFBQVEsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFHLEtBQUssR0FBRyxDQUFDLE1BQUksVUFBUSxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU07QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFFBQU87QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLE1BQUksVUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFNBQVE7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU0sS0FBSyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLFVBQVM7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFJLFVBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU0sS0FBSyxHQUFHLENBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sUUFBUSxJQUFHO0FBQUMsV0FBTyxLQUFLLFFBQVE7QUFBQSxFQUFDO0FBQUEsRUFBQyxDQUFDLE9BQU8sV0FBVyxJQUFFO0FBQUEsRUFBVyxLQUFLLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxhQUFRLEtBQUssS0FBSyxHQUFHLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSx1QkFBcUI7QUFBRSxVQUFHLE1BQUksT0FBTztBQUFTLFVBQUcsRUFBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSSxFQUFFLFFBQU8sS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxRQUFRLEdBQUUsSUFBRSxNQUFLO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLEVBQUUsdUJBQXFCO0FBQUUsVUFBRyxNQUFJLE9BQU87QUFBUyxRQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxTQUFTLEdBQUUsSUFBRSxNQUFLO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLEVBQUUsdUJBQXFCO0FBQUUsVUFBRyxNQUFJLE9BQU87QUFBUyxRQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBSTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUEsRUFBQyxhQUFZO0FBQUMsUUFBSSxJQUFFO0FBQUcsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFDLFlBQVcsS0FBRSxDQUFDLEVBQUUsS0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFFLFFBQVEsR0FBRSxJQUFFO0FBQUcsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLE9BQU87QUFBTyxRQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSx1QkFBcUI7QUFBRSxRQUFHLE1BQUksT0FBTztBQUFPLFFBQUksSUFBRSxFQUFDLE9BQU0sRUFBQztBQUFFLFFBQUcsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLFVBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLEtBQUcsR0FBRTtBQUFDLFlBQUksSUFBRSxLQUFHLEdBQUcsSUFBSSxJQUFFO0FBQUcsVUFBRSxNQUFJLEdBQUUsRUFBRSxRQUFNLEtBQUssSUFBSTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFLLEdBQUcsR0FBRSxPQUFLLEtBQUssR0FBRyxDQUFDO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLE9BQU07QUFBQyxRQUFJLElBQUUsQ0FBQztBQUFFLGFBQVEsS0FBSyxLQUFLLEdBQUcsRUFBQyxZQUFXLEtBQUUsQ0FBQyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBSyxHQUFHLENBQUMsSUFBRSxFQUFFLHVCQUFxQjtBQUFFLFVBQUcsTUFBSSxVQUFRLE1BQUksT0FBTztBQUFTLFVBQUksSUFBRSxFQUFDLE9BQU0sRUFBQztBQUFFLFVBQUcsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLFVBQUUsTUFBSSxLQUFLLEdBQUcsQ0FBQztBQUFFLFlBQUksSUFBRSxHQUFHLElBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFFLFVBQUUsUUFBTSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQyxVQUFHLEtBQUssR0FBRyxHQUFFLE9BQUssS0FBSyxHQUFHLENBQUM7QUFBRSxRQUFFLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBQztBQUFBLEVBQUMsS0FBSyxHQUFFO0FBQUMsU0FBSyxNQUFNO0FBQUUsYUFBTyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEdBQUU7QUFBQyxVQUFHLEVBQUUsT0FBTTtBQUFDLFlBQUksSUFBRSxLQUFLLElBQUksSUFBRSxFQUFFO0FBQU0sVUFBRSxRQUFNLEdBQUcsSUFBSSxJQUFFO0FBQUEsTUFBQztBQUFDLFdBQUssSUFBSSxHQUFFLEVBQUUsT0FBTSxDQUFDO0FBQUEsSUFBQztBQUFBLEVB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R0FBRyxDQUFDO0FBQUUsV0FBTyxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUUsS0FBSyxNQUFLO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxFQUFDLGdCQUFlLElBQUUsS0FBSyxnQkFBZSxRQUFPLEVBQUMsSUFBRSxHQUFFLElBQUUsS0FBSyxHQUFHLElBQUksQ0FBQztBQUFFLFFBQUcsTUFBSSxRQUFPO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsVUFBRyxLQUFLLEdBQUcsQ0FBQyxLQUFHLEVBQUUseUJBQXVCLE9BQU8sUUFBTTtBQUFHLFVBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFFO0FBQUMsWUFBRyxFQUFFLE1BQUssR0FBRyxDQUFDO0FBQUUsWUFBRyxFQUFFLEdBQUUsTUFBSSxPQUFNLEtBQUssR0FBRyxHQUFFLENBQUM7QUFBRSxlQUFNO0FBQUEsTUFBRSxXQUFTLEVBQUUsR0FBRSxNQUFJLFNBQVEsS0FBSyxHQUFHLEdBQUUsQ0FBQztBQUFBLElBQUMsV0FBUyxFQUFFLEdBQUUsTUFBSTtBQUFPLFdBQU07QUFBQSxFQUFFO0FBQUEsRUFBQyxLQUFLLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxRQUFHLEVBQUMsWUFBVyxJQUFFLEtBQUssV0FBVSxJQUFFLEdBQUUsSUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLFVBQVEsQ0FBQyxLQUFHLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFBTyxRQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxXQUFPLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSx1QkFBcUI7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsTUFBSSxTQUFPLFNBQU8sS0FBSyxHQUFHLENBQUM7QUFBRSxRQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBTztBQUFFLFFBQUksSUFBRSxJQUFJLE1BQUcsRUFBQyxRQUFP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QUFHLE1BQUksUUFBTztBQUFDLFVBQUcsRUFBRSxHQUFFLFFBQU07QUFBTyxVQUFJLElBQUUsS0FBSyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxhQUFPLEVBQUUsYUFBVztBQUFBLElBQUMsT0FBSztBQUFDLFVBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFFLFVBQUcsS0FBSyxHQUFHLENBQUMsR0FBRTtBQUFDLFlBQUksS0FBRyxLQUFHLEVBQUUseUJBQXVCO0FBQU8sWUFBRyxHQUFFO0FBQUMsY0FBRyxFQUFFLFFBQU0sWUFBVyxHQUFHLEdBQUUsZ0JBQWM7QUFBQSxRQUFFO0FBQUMsZUFBTyxLQUFHLEVBQUUsdUJBQXFCLEVBQUUsYUFBVztBQUFBLE1BQUM7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLENBQUMsS0FBRyxDQUFDLEdBQUU7QUFBQyxZQUFHLEVBQUUsR0FBRSxRQUFNO0FBQU0sWUFBRyxLQUFLLEdBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSyxHQUFHLENBQUM7QUFBRSxZQUFHLEVBQUUsTUFBSyxHQUFHLEdBQUUsQ0FBQztBQUFFLGVBQU87QUFBQSxNQUFDO0FBQUMsVUFBSSxLQUFHLEtBQUssR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLHlCQUF1QixVQUFRO0FBQUUsVUFBRyxHQUFFO0FBQUMsWUFBRyxFQUFFLFFBQU0sSUFBRSxVQUFRLFdBQVUsTUFBSSxFQUFFLEdBQUUsZ0JBQWM7QUFBQSxNQUFFO0FBQUMsYUFBTyxLQUFHLEdBQUcsdUJBQXFCLEdBQUcsYUFBVztBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxNQUFNLFdBQVcsR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxNQUFNLEtBQUssTUFBTSxHQUFFLENBQUM7QUFBRSxRQUFHLE1BQUksT0FBTyxPQUFNLE1BQU0sNEJBQTRCO0FBQUUsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLEtBQUssR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFDLFFBQUksSUFBRSxLQUFLO0FBQUcsUUFBRyxDQUFDLEVBQUUsT0FBTSxNQUFNLHVDQUF1QztBQUFFLFFBQUcsRUFBQyxTQUFRLEdBQUUsY0FBYSxHQUFFLEdBQUcsRUFBQyxJQUFFLEdBQUUsSUFBRSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLEtBQUcsTUFBSSxPQUFPLFFBQU87QUFBRSxRQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxTQUFRLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBRSxXQUFPLEtBQUssSUFBSSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBQztBQUFBLEVBQUMsSUFBSSxHQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBRyxFQUFDLFlBQVcsSUFBRSxLQUFLLFlBQVcsZ0JBQWUsSUFBRSxLQUFLLGdCQUFlLG9CQUFtQixJQUFFLEtBQUssb0JBQW1CLFFBQU8sRUFBQyxJQUFFLEdBQUUsSUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUUsUUFBRyxNQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsVUFBRyxFQUFFLE1BQUssR0FBRyxHQUFFLENBQUM7QUFBRSxVQUFHLEtBQUssR0FBRyxDQUFDLEdBQUU7QUFBQyxZQUFHLEVBQUUsR0FBRSxNQUFJO0FBQVEsWUFBRyxDQUFDLEdBQUU7QUFBQyxjQUFHLENBQUMsRUFBRSxNQUFLLEdBQUcsR0FBRSxRQUFRO0FBQUUsY0FBRyxLQUFHLEVBQUUsR0FBRSxnQkFBYztBQUFHLGlCQUFPLElBQUUsSUFBRTtBQUFBLFFBQU0sT0FBSztBQUFDLGNBQUcsS0FBRyxLQUFHLEVBQUUseUJBQXVCLE9BQU8sR0FBRSxnQkFBYztBQUFHLGlCQUFPLElBQUUsRUFBRSx1QkFBcUI7QUFBQSxRQUFNO0FBQUEsTUFBQyxPQUFLO0FBQUMsWUFBRyxFQUFFLEdBQUUsTUFBSTtBQUFNLFlBQUcsRUFBRSxRQUFPLEVBQUU7QUFBcUIsWUFBRyxLQUFLLEdBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSyxHQUFHLENBQUM7QUFBRSxlQUFPO0FBQUEsTUFBQztBQUFBLElBQUMsV0FBUyxFQUFFLEdBQUUsTUFBSTtBQUFBLEVBQU07QUFBQSxFQUFDLEdBQUcsR0FBRSxHQUFFO0FBQUMsU0FBSyxHQUFHLENBQUMsSUFBRSxHQUFFLEtBQUssR0FBRyxDQUFDLElBQUU7QUFBQSxFQUFDO0FBQUEsRUFBQyxHQUFHLEdBQUU7QUFBQyxRQUFHLE1BQUksS0FBSyxJQUFHO0FBQUMsVUFBRyxNQUFJLEtBQUssR0FBRyxNQUFLLEtBQUcsS0FBSyxHQUFHLENBQUM7QUFBQSxVQUFPLE1BQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBRSxXQUFLLEdBQUcsS0FBSyxJQUFHLENBQUMsR0FBRSxLQUFLLEtBQUc7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFBLEVBQUMsT0FBTyxHQUFFO0FBQUMsV0FBTyxLQUFLLEdBQUcsR0FBRSxRQUFRO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUU7QUFBRyxRQUFHLEtBQUssT0FBSyxHQUFFO0FBQUMsVUFBSSxJQUFFLEtBQUssR0FBRyxJQUFJLENBQUM7QUFBRSxVQUFHLE1BQUksT0FBTyxLQUFHLElBQUUsTUFBRyxLQUFLLE9BQUssRUFBRSxNQUFLLEdBQUcsQ0FBQztBQUFBLFdBQU07QUFBQyxhQUFLLEdBQUcsQ0FBQztBQUFFLFlBQUksSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFFLFlBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFFLGtCQUFrQixNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQUEsaUJBQVUsS0FBSyxNQUFJLEtBQUssSUFBRztBQUFDLGNBQUcsS0FBSyxHQUFHLE1BQUssS0FBSyxHQUFFLEdBQUUsQ0FBQztBQUFFLGNBQUcsS0FBSyxHQUFHLE1BQUssSUFBSSxLQUFLLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQyxZQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRSxLQUFLLEdBQUcsQ0FBQyxJQUFFLFFBQU8sS0FBSyxHQUFHLENBQUMsSUFBRSxRQUFPLE1BQUksS0FBSyxHQUFHLE1BQUssS0FBRyxLQUFLLEdBQUcsQ0FBQztBQUFBLGlCQUFVLE1BQUksS0FBSyxHQUFHLE1BQUssS0FBRyxLQUFLLEdBQUcsQ0FBQztBQUFBLGFBQU07QUFBQyxjQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxlQUFLLEdBQUcsQ0FBQyxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsY0FBSSxJQUFFLEtBQUssR0FBRyxDQUFDO0FBQUUsZUFBSyxHQUFHLENBQUMsSUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLFFBQUM7QUFBQyxhQUFLLE1BQUssS0FBSyxHQUFHLEtBQUssQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxLQUFLLE1BQUksS0FBSyxJQUFJLFFBQU87QUFBQyxVQUFJLElBQUUsS0FBSyxJQUFHO0FBQUUsYUFBTSxJQUFFLEdBQUcsTUFBTSxFQUFFLE1BQUssS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFBQSxFQUFDLFFBQU87QUFBQyxXQUFPLEtBQUssR0FBRyxRQUFRO0FBQUEsRUFBQztBQUFBLEVBQUMsR0FBRyxHQUFFO0FBQUMsYUFBUSxLQUFLLEtBQUssR0FBRyxFQUFDLFlBQVcsS0FBRSxDQUFDLEdBQUU7QUFBQyxVQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxVQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRSxrQkFBa0IsTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLFdBQU07QUFBQyxZQUFJLElBQUUsS0FBSyxHQUFHLENBQUM7QUFBRSxZQUFHLEtBQUssR0FBRyxNQUFLLEtBQUssR0FBRSxHQUFFLENBQUM7QUFBRSxZQUFHLEtBQUssR0FBRyxNQUFLLElBQUksS0FBSyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRSxLQUFLLEdBQUcsS0FBSyxNQUFNLEdBQUUsS0FBSyxHQUFHLEtBQUssTUFBTSxHQUFFLEtBQUssTUFBSSxLQUFLLEdBQUcsTUFBSyxHQUFHLEtBQUssQ0FBQyxHQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7QUFBRSxRQUFHLEtBQUssR0FBRyxNQUFLLEdBQUcsS0FBSyxDQUFDO0FBQUUsUUFBRyxLQUFLLEtBQUcsR0FBRSxLQUFLLEtBQUcsR0FBRSxLQUFLLEdBQUcsU0FBTyxHQUFFLEtBQUssS0FBRyxHQUFFLEtBQUssS0FBRyxHQUFFLEtBQUssTUFBSSxLQUFLLElBQUc7QUFBQyxVQUFJLElBQUUsS0FBSyxJQUFHO0FBQUUsYUFBTSxJQUFFLEdBQUcsTUFBTSxFQUFFLE1BQUssS0FBSyxHQUFHLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDO0FBQUMsU0FBUyxHQUFHLEdBQUUsR0FBRSxJQUFFLEtBQUk7QUFBQyxNQUFJLElBQUUsSUFBSSxHQUFHLEVBQUMsS0FBSSxFQUFDLENBQUMsR0FBRSxJQUFFLElBQUksTUFBSTtBQUFDLFFBQUksSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFJLENBQUM7QUFBRSxRQUFHLE1BQUksT0FBTyxRQUFPO0FBQUUsUUFBSSxJQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUUsV0FBTyxFQUFFLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFDO0FBQUUsU0FBTyxFQUFFLFFBQU0sRUFBQyxPQUFNLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSyxNQUFJLEVBQUUsTUFBSyxRQUFPLENBQUMsTUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEtBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUUsS0FBSSxDQUFDLE1BQUksRUFBRSxJQUFJLENBQUMsRUFBQyxHQUFFO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRztBQUFDLFdBQU0sRUFBQyxJ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RTtBQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUUsTUFBRyxHQUFFO0FBQUMsT0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsRUFBTTtBQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFLFFBQU8sSUFBRSxNQUFJO0FBQU8sTUFBRyxHQUFFO0FBQUMsUUFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxLQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSxRQUFHLElBQUUsR0FBRSxLQUFHLEtBQUcsRUFBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUU7QUFBQSxhQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUUsR0FBRyxDQUFDO0FBQUEsYUFBVSxFQUFFLEtBQUUsT0FBRyxJQUFFLEdBQUcsR0FBRSxJQUFFO0FBQUEsYUFBVSxFQUFFLEtBQUUsT0FBRyxJQUFFLEdBQUcsR0FBRSxJQUFFO0FBQUEsUUFBTyxLQUFFLENBQUM7QUFBQSxhQUFVLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsVUFBRyxJQUFFLEdBQUUsR0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLENBQUM7QUFBQSxlQUFVLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLEVBQUUsS0FBRSxHQUFHLENBQUM7QUFBQSxJQUFDLE1BQU0sS0FBRTtBQUFBLEVBQUU7QUFBQyxNQUFHLEVBQUUsR0FBRSxJQUFJLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxLQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxNQUFJLEVBQUU7QUFBTyxLQUFHLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxRQUFHLE1BQUksSUFBRSxJQUFJLE9BQUksR0FBRyxDQUFDLEVBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsU0FBTTtBQUFDLFVBQUksSUFBRSxJQUFFLEVBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQU8sVUFBRyxNQUFJLE9BQU8sS0FBRTtBQUFFLFNBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQyxHQUFFLEVBQUU7QUFBQztBQUFDLElBQUksS0FBRztBQUFHLFNBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLFVBQU8sRUFBRSxRQUFPO0FBQUEsSUFBQyxLQUFLO0FBQUUsYUFBTyxFQUFFLEtBQUssQ0FBQztBQUFBLElBQUUsS0FBSztBQUFFLGFBQU8sRUFBRSxLQUFLLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUFFLEtBQUs7QUFBRSxhQUFPLEVBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFBRSxLQUFLO0FBQUUsYUFBTyxFQUFFLEtBQUssR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksS0FBRyxLQUFLO0FBQUksU0FBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxJQUFFLEdBQUcsTUFBSSxTQUFPLEVBQUUsU0FBTyxJQUFFLEdBQUUsQ0FBQyxHQUFFLFdBQVU7QUFBQyxRQUFJLElBQUUsV0FBVSxJQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsU0FBTyxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQU0sQ0FBQztBQUFFLFdBQU0sRUFBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxJQUFFLENBQUM7QUFBRSxRQUFFO0FBQUcsUUFBSSxJQUFFLE1BQU0sSUFBRSxDQUFDO0FBQUUsV0FBTSxFQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsSUFBRSxFQUFFLENBQUM7QUFBRSxXQUFPLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFLLENBQUM7QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRTtBQUFDLFNBQU8sV0FBVTtBQUFDLFdBQU87QUFBQSxFQUFDO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxJQUFJLE1BQUksQ0FBQyxLQUFHLEtBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRSxZQUFXLEVBQUMsY0FBYSxNQUFHLFlBQVcsT0FBRyxPQUFNLEdBQUcsQ0FBQyxHQUFFLFVBQVMsS0FBRSxDQUFDO0FBQUM7QUFBNUcsSUFBOEcsS0FBRztBQUFJLElBQUksTUFBSTtBQUFSLElBQVksTUFBSTtBQUFoQixJQUFtQixNQUFJLEtBQUs7QUFBSSxTQUFTLElBQUksR0FBRTtBQUFDLE1BQUksSUFBRSxHQUFFLElBQUU7QUFBRSxTQUFPLFdBQVU7QUFBQyxRQUFJLElBQUUsSUFBSSxHQUFFLElBQUUsT0FBSyxJQUFFO0FBQUcsUUFBRyxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUMsVUFBRyxFQUFFLEtBQUcsSUFBSSxRQUFPLFVBQVUsQ0FBQztBQUFBLElBQUMsTUFBTSxLQUFFO0FBQUUsV0FBTyxFQUFFLE1BQU0sUUFBTyxTQUFTO0FBQUEsRUFBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksSUFBSSxNQUFJLEdBQUcsRUFBRTtBQUFiLElBQWUsS0FBRztBQUFJLFNBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBRyxNQUFJLElBQUUsT0FBTztBQUFFLE1BQUcsS0FBRyxXQUFTLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFLE1BQU0sSUFBRSxLQUFHLFlBQVcsS0FBSyxFQUFHLFFBQU8sR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsU0FBTTtBQUFFO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxRQUFJLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxJQUFFLElBQUUsSUFBRSxFQUFFLElBQUUsQ0FBQyxJQUFFLFFBQU8sSUFBRSxJQUFFLElBQUUsRUFBRSxDQUFDLElBQUU7QUFBTyxRQUFHLElBQUUsRUFBRSxTQUFPLEtBQUcsT0FBTyxLQUFHLGNBQVksS0FBSSxLQUFHLFFBQU8sS0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxLQUFFLElBQUUsSUFBRSxTQUFPLEdBQUUsSUFBRTtBQUFFLFFBQUUsT0FBTyxDQUFDO0FBQUUsV0FBTSxFQUFFLElBQUUsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksTUFBSSxHQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLEtBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFDLENBQUM7QUFBUyxTQUFTLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLE1BQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFPO0FBQUUsTUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLE1BQUksSUFBRSxJQUFHLElBQUUsRUFBRSxRQUFPLElBQUUsSUFBRSxHQUFFLElBQUU7QUFBRSxTQUFNLEtBQUcsUUFBTSxFQUFFLElBQUUsR0FBRTtBQUFDLFFBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFFLFFBQUcsTUFBSSxlQUFhLE1BQUksaUJBQWUsTUFBSSxZQUFZLFFBQU87QUFBRSxRQUFHLEtBQUcsR0FBRTtBQUFDLFVBQUksSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFHLElBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsUUFBTyxNQUFJLE9BQU8sS0FBRSxHQUFHLENBQUMsSUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLENBQUMsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDO0FBQUEsSUFBQztBQUFDLE9BQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxNQUFJLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxJQUFFLENBQUM7QUFBRSxTQUFNLEVBQUUsSUFBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxRQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsU0FBTyxHQUFHLEdBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLFdBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxFQUFDLENBQUM7QUFBQztBQUFDLElBQUksS0FBRztBQUFJLElBQUksS0FBRyxLQUFHLEdBQUcscUJBQW1CO0FBQU8sU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxNQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUU7QUFBQyxJQUFJLEtBQUc7QUFBSSxTQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsTUFBSSxJQUFFLElBQUcsSUFBRSxFQUFFO0FBQU8sUUFBSSxJQUFFLEtBQUksTUFBSSxJQUFFLENBQUM7QUFBRyxTQUFNLEVBQUUsSUFBRSxHQUFFO0FBQUMsUUFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLFFBQUcsSUFBRSxLQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUcsSUFBRSxFQUFFLElBQUcsR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFPLElBQUcsR0FBRSxDQUFDO0FBQUEsYUFBVSxDQUFDLEVBQUUsR0FBRSxFQUFFLE1BQU0sSUFBRTtBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBQyxJQUFJLEtBQUc7QUFBRyxTQUFTLElBQUksR0FBRTtBQUFDLE1BQUksSUFBRSxLQUFHLE9BQUssSUFBRSxFQUFFO0FBQU8sU0FBTyxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUUsQ0FBQztBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksU0FBUyxJQUFJLEdBQUU7QUFBQyxTQUFPLEdBQUcsR0FBRyxHQUFFLFFBQU8sRUFBRSxHQUFFLElBQUUsRUFBRTtBQUFDO0FBQUMsSUFBSSxLQUFHO0FBQUksSUFBSSxNQUFJLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxTQUFPLEtBQUcsT0FBSyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBQyxDQUFDO0FBQXVqVSxlQUFlLElBQUksR0FBRSxHQUFFO0FBQUMsTUFBRztBQUFDLGNBQU0sZ0JBQUFDLFVBQUksR0FBRSxDQUFDO0FBQUEsRUFBQyxTQUFPLEdBQUU7QUFBQyxRQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFBLEVBQUM7QUFBQztBQUFDLGVBQWUsSUFBSSxHQUFFLEdBQUU7QUFBQyxNQUFHLENBQUMsRUFBRTtBQUFPLE1BQUksSUFBRTtBQUFFLE1BQUc7QUFBQyxRQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsUUFBRyxHQUFHLGVB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LFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUN6RTtBQUFBLEVBQ0EsTUFBTSxTQUFTO0FBQ1gsV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFNBQVMsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUMzRTtBQUFBLEVBQ0EsS0FBSyxTQUFTO0FBQ1YsV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFFBQVEsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUMxRTtBQUFBLEVBQ0EsT0FBTyxTQUFTO0FBQ1osV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFVBQVUsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUM1RTtBQUFBLEVBQ0EsS0FBSyxTQUFTO0FBQ1YsV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFFBQVEsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUMxRTtBQUFBLEVBQ0EsTUFBTSxTQUFTO0FBQ1gsV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFNBQVMsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUMzRTtBQUFBLEVBQ0EsS0FBSyxTQUFTO0FBQ1YsV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFFBQVEsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUMxRTtBQUFBLEVBQ0EsT0FBTyxTQUFTO0FBQ1osV0FBTyxLQUFLLFVBQVUsRUFBRSxNQUFNLFVBQVUsR0FBRyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUM1RTtBQUFBLEVBQ0EsVUFBVSxTQUFTO0FBRWYsV0FBTyxLQUFLLFVBQVU7QUFBQSxNQUNsQixNQUFNO0FBQUEsTUFDTixHQUFHLFVBQVUsU0FBUyxPQUFPO0FBQUEsSUFDakMsQ0FBQztBQUFBLEVBQ0w7QUFBQSxFQUNBLElBQUksU0FBUztBQUNULFdBQU8sS0FBSyxVQUFVLEVBQUUsTUFBTSxPQUFPLEdBQUcsVUFBVSxTQUFTLE9BQU8sRUFBRSxDQUFD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LENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUNBLFFBQU9BLElBQUcsU0FBUyxNQUFNO0FBQUEsRUFDN0Q7QUFBQSxFQUNBLElBQUksYUFBYTtBQUNiLFdBQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQ0EsUUFBT0EsSUFBRyxTQUFTLFVBQVU7QUFBQSxFQUNqRTtBQUFBLEVBQ0EsSUFBSSxVQUFVO0FBQ1YsV0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDQSxRQUFPQSxJQUFHLFNBQVMsT0FBTztBQUFBLEVBQzlEO0FBQUEsRUFDQSxJQUFJLFFBQVE7QUFDUixXQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUNBLFFBQU9BLElBQUcsU0FBUyxLQUFLO0FBQUEsRUFDNUQ7QUFBQSxFQUNBLElBQUksVUFBVTtBQUNWLFdBQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQ0EsUUFBT0EsSUFBRyxTQUFTLE9BQU87QUFBQSxFQUM5RDtBQUFBLEVBQ0EsSUFBSSxTQUFTO0FBQ1QsV0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDQSxRQUFPQSxJQUFHLFNBQVMsTUFBTTtBQUFBLEVBQzdEO0FBQUEsRUFDQSxJQUFJLFdBQVc7QUFDWCxXQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUNBLFFBQU9BLElBQUcsU0FBUyxRQUFRO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLElBQUksU0FBUztBQUNULFdBQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQ0EsUUFBT0EsSUFBRyxTQUFTLE1BQU07QUFBQSxFQUM3RDtBQUFBLEVBQ0EsSUFBSSxVQUFVO0FBQ1YsV0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sS0FBSyxDQUFDQSxRQUFPQSxJQUFHLFNBQVMsT0FBTztBQUFBLEVBQzlEO0FBQUEsRUFDQSxJQUFJLFNBQVM7QUFDVCxXQUFPLENBQUMsQ0FBQyxLQUFLLEtB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QUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBLEVBR0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBLEVBRUE7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUNGO0FBSU8sSUFBTSxxQkFBd0M7QUFBQTtBQUFBLEVBRW5EO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUEsRUFHQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQSxFQUdBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBLEVBRUE7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBSU8sSUFBTSxxQkFBTixNQUFpRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVXRELFlBQ21CLEtBQ0EsYUFBZ0MsaUJBQ2pEO0FBRmlCO0FBQ0E7QUFBQSxFQUNoQjtBQUFBLEVBRUgsTUFBTSxTQUFZLE1BQW1DO0FBQ25ELFVBQU0sYUFBYSxLQUFLLG1CQUFtQixJQUFJLGdCQUFnQjtBQUsvRCxRQUFJLFdBQVc7QUFDZixVQUFNLFFBQ0osS0FBSyxhQUFhLE9BQ2QsV0FBVyxNQUFNO0FBQ2YsaUJBQVc7QUFDWCxpQkFBVyxNQUFNO0FBQUEsSUFDbkIsR0FBRyxLQUFLLFNBQVMsSUFDakI7QUFFTixRQUFJO0FBQ0YsWUFBTSw2QkFBNkIsTUFBTSxLQUFLLFdBQVc7QUFFekQsWUFBTSxZQUFZLEdBQW1CO0FBQUEsUUFDbkMsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsT0FBTyxLQUFLO0FBQUEsTUFDZCxDQUFDO0FBRUQsb0JBQWMsSUFBSTtBQUVsQixZQUFNLFNBQVMsSUFBTTtBQUFBLFFBQ25CLFFBQVEsS0FBSztBQUFBLFFBQ2IsU0FBUztBQUFBLFVBQ1AsT0FBTyxLQUFLO0FBQUEsVUFDWjtBQUFBLFVBQ0EsY0FBYztBQUFBLFlBQ1osTUFBTTtBQUFBLFlBQ04sUUFBUTtBQUFBLFlBQ1IsUUFBUSxLQUFLO0FBQUEsWUFDYix3QkFBd0I7QUFBQSxVQUMxQjtBQUFBLFVBQ0EsVUFBVTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQU1SLGFBQWE7QUFBQSxjQUNYLFFBQVE7QUFBQSxjQUNSLElBQUk7QUFBQSxZQUNOO0FBQUEsWUFDQSxhQUFhO0FBQUEsY0FDWCxPQUFPLENBQUMsR0FBRyxtQkFBbUI7QUFBQSxjQUM5QixNQUFNLENBQUMsR0FBRyxrQkFBa0I7QUFBQSxZQUM5QjtBQUFBLFVBQ0Y7QUFBQSxVQUNBLFlBQVksRUFBRSxXQUFXLFVBQVU7QUFBQSxVQUNuQyxjQUFjLEtBQUssTUFBTSxJQUFJLENBQUNDLE9BQU0sbUJBQW1CQSxHQUFFLElBQUksRUFBRTtBQUFBLFVBQy9ELGdCQUFnQjtBQUFBLFVBQ2hCLGNBQWM7QUFBQSxZQUNaLE1BQU07QUFBQSxZQUNOLFFBQVEsZ0JBQWdCLEtBQUssY0FBOEI7QUFBQSxVQUM3RDtBQUFBLFVBQ0EsR0FBSSxLQUFLLGNBQWMsU0FDbkIsRUFBRSxjQUFjLEtBQUssVUFBVSxJQUMvQixDQUFDO0FBQUEsVUFDTCxHQUFJLEtBQUssYUFBYSxTQUFZLEVBQUUsVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDO0FBQUEsVUFDakUsR0FBSSxLQUFLLFdBQVcsU0FBWSxFQUFFLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQztBQUFBLFVBQzNELEdBQUksS0FBSyxNQUFNLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQUEsVUFDcEMsaUJBQWlCO0FBQUEsUUFDbkI7QUFBQSxNQUNGLENBQUM7QUFFRCxNQUFLLGlCQUFXLHFCQUFxQjtBQUNyQyxVQUFJO0FBQ0YseUJBQWlCLE9BQU8sUUFBUTtBQUM5QixzQkFBWSxHQUFHO0FBQ2YsY0FBSSxJQUFJLFNBQVMsU0FBVTtBQUMzQixjQUFJLElBQUksWUFBWSxXQUFXO0FBQzdCLGdCQUFJLElBQUksc0JBQXNCLFFBQVc7QUFLdkMsb0JBQU0sSUFBSTtBQUFBLGdCQUNSO0FBQUEsZ0JBQ0EsOEJBQThCLEdBQUc7QUFBQSxnQkFDakM7QUFBQSxjQUNGO0FBQUEsWUFDRjtBQUNBLG1CQUFPLEtBQUssZUFBZSxNQUFNLElBQUksaUJBQWlCO0FBQUEsVUFDeEQ7QUFDQSxnQkFBTSxPQUNKLGdCQUFnQixJQUFJLE9BQWlCLEtBQUs7QUFDNUMsZ0JBQU0sSUFBSTtBQUFBLFlBQ1I7QUFBQSxZQUNBLDZCQUE2QixJQUFJLE9BQU87QUFBQSxZQUN4QyxJQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0Y7QUFDQSxjQUFNLElBQUk7QUFBQSxVQUNSO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxNQUNGLFNBQVMsS0FBSztBQUtaLFlBQUksWUFBWSxFQUFFLGVBQWUsYUFBYTtBQUM1QyxnQkFBTSxJQUFJO0FBQUEsWUFDUjtBQUFBLFlBQ0EsOENBQThDLEtBQUssU0FBUztBQUFBLFlBQzVEO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFDQSxjQUFNO0FBQUEsTUFDUixVQUFFO0FBQ0EsUUFBSyxlQUFTO0FBQUEsTUFDaEI7QUFBQSxJQUNGLFVBQUU7QUFDQSxVQUFJLE1BQU8sY0FBYSxLQUFLO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLGNBQWlCLE1BQTZCO0FBQ3JELEVBQUssaUJBQVcsdUJBQXVCLEtBQUssS0FBSyxHQUFHO0FBQ3BELE1BQUk7QUFDRixJQUFLLFdBQUssVUFBVSxLQUFLLEtBQUssRUFBRTtBQUNoQyxRQUFJLEtBQUssV0FBVyxPQUFXLENBQUssV0FBSyxXQUFXLEtBQUssTUFBTSxFQUFFO0FBQ2pFLFFBQUksS0FBSyxjQUFjLE9BQVcsQ0FBSyxXQUFLLGNBQWMsS0FBSyxTQUFTLEVBQUU7QUFDMUUsUUFBSSxLQUFLLGFBQWEsT0FBVyxDQUFLLFdBQUssYUFBYSxLQUFLLFFBQVEsRUFBRTtBQUN2RSxRQUFJLEtBQUssY0FBYyxPQUFXLENBQUssV0FBSyxjQUFjLEtBQUssU0FBUyxFQUFFO0FBQzFFLFVBQU0sV0FBVyxLQUFLLE1BQU0sU0FDeEIsS0FBSyxNQUFNLElBQUksQ0FBQ0EsT0FBTSxLQUFLQSxHQUFFLElBQUksS0FBS0EsR0FBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxJQUN0RTtBQUNKLElBQUssV0FBSztBQUFBLEVBQVcsUUFBUSxFQUFFO0FBQy9CLElBQUssV0FBSztBQUFBLEVBQWtCLEtBQUssWUFBWSxFQUFFO0FBQy9DLElBQUssV0FBSztBQUFBLEVBQWdCLEtBQUssVUFBVSxFQUFFO0FBQUEsRUFDN0MsVUFBRTtBQUNBLElBQUssZUFBUztBQUFBLEVBQ2hCO0FBQ0Y7QUFFQSxTQUFTLFlBQVksS0FBdUI7QUFDMUMsTUFBSSxJQUFJLFNBQVMsWUFBWSxJQUFJLFlBQVksUUFBUTtBQUNuRCxVQUFNLE1BQU0sSUFBSSxZQUFZLElBQUksQ0FBQ0MsT0FBTSxHQUFHQSxHQUFFLElBQUksSUFBSUEsR0FBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEdBQUc7QUFDeEUsSUFBSztBQUFBLE1BQ0gsZ0JBQWdCLElBQUksS0FBSyxRQUFRLElBQUksR0FBRyxVQUFVLElBQUksTUFBTSxNQUFNLFFBQVEsT0FBTyxRQUFRO0FBQUEsSUFDM0Y7QUFDQTtBQUFBLEVBQ0Y7QUFDQSxNQUFJLElBQUksU0FBUyxhQUFhO0FBQzVCLFVBQU0sVUFBVSxJQUFJLFNBQVM7QUFDN0IsUUFBSSxDQUFDLE1BQU0sUUFBUSxPQUFPLEVBQUc7QUFDN0IsZUFBVyxTQUFTLFNBQVM7QUFDM0IsWUFBTUMsS0FBSTtBQUlWLFVBQUlBLEdBQUUsU0FBUyxjQUFjLE9BQU9BLEdBQUUsYUFBYSxVQUFVO0FBQzNELFFBQUssV0FBSyxjQUFjLFNBQVNBLEdBQUUsVUFBVSxHQUFHLENBQUMsRUFBRTtBQUFBLE1BQ3JELFdBQVdBLEdBQUUsU0FBUyxZQUFZO0FBQ2hDLGNBQU0sT0FBTyxPQUFPQSxHQUFFLFNBQVMsV0FBV0EsR0FBRSxPQUFPO0FBQ25ELGNBQU0sUUFBUSxTQUFTLGNBQWNBLEdBQUUsS0FBSyxHQUFHLEdBQUc7QUFDbEQsUUFBSyxXQUFLLGNBQWMsSUFBSSxVQUFVLEtBQUssRUFBRTtBQUFBLE1BQy9DO0FBQUEsSUFDRjtBQUNBO0FBQUEsRUFDRjtBQUNBLE1BQUksSUFBSSxTQUFTLFFBQVE7QUFDdkIsVUFBTSxVQUFVLElBQUksU0FBUztBQUM3QixRQUFJLENBQUMsTUFBTSxRQUFRLE9BQU8sRUFBRztBQUM3QixlQUFXLFNBQVMsU0FBUztBQUMzQixZQUFNQSxLQUFJO0FBSVYsVUFBSUEsR0FBRSxTQUFTLGNBQWU7QUFDOUIsWUFBTSxTQUFTQSxHQUFFLFdBQVcsVUFBVTtBQUN0QyxNQUFLO0FBQUEsUUFDSCxnQkFBZ0IsTUFBTSxLQUFLLFNBQVMsc0JBQXNCQSxHQUFFLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFBQSxNQUM1RTtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLFNBQVNELElBQVcsS0FBcUI7QUFDaEQsTUFBSUEsR0FBRSxVQUFVLElBQUssUUFBT0E7QUFDNUIsU0FBTyxHQUFHQSxHQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsbUJBQW1CQSxHQUFFLE1BQU07QUFDdEQ7QUFFQSxTQUFTLGNBQWMsT0FBd0I7QUFDN0MsTUFBSTtBQUNGLFdBQU8sS0FBSyxVQUFVLEtBQUssS0FBSztBQUFBLEVBQ2xDLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FBUyxzQkFBc0IsU0FBMEI7QUFDdkQsTUFBSSxPQUFPLFlBQVksU0FBVSxRQUFPO0FBQ3hDLE1BQUksQ0FBQyxNQUFNLFFBQVEsT0FBTyxFQUFHLFFBQU8sY0FBYyxPQUFPO0FBQ3pELFNBQU8sUUFDSixJQUFJLENBQUNDLE9BQU07QUFDVixRQUFJQSxNQUFLLE9BQU9BLE9BQU0sVUFBVTtBQUM5QixZQUFNLFFBQVFBO0FBQ2QsVUFBSSxNQUFNLFNBQVMsVUFBVSxPQUFPLE1BQU0sU0FBUyxVQUFVO0FBQzNELGVBQU8sTUFBTTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQ0EsV0FBTyxjQUFjQSxFQUFDO0FBQUEsRUFDeEIsQ0FBQyxFQUNBLEtBQUssR0FBRztBQUNiO0FBRUEsU0FBUyw4QkFBOEIsS0FLNUI7QUFDVCxRQUFNLHVCQUF1QjtBQUM3QixRQUFNLFlBQVksT0FBTyxJQUFJLFdBQVcsV0FBVyxJQUFJLFNBQVM7QUFDaEUsUUFBTSxVQUNKLFVBQVUsU0FBUyx1QkFDZixHQUFHLFVBQVUsTUFBTSxHQUFHLG9CQUFvQixDQUFDLG1CQUFtQixVQUFVLE1BQU0sWUFDOUU7QUFDTixRQUFNLFdBQVcsT0FBTyxJQUFJLGNBQWMsV0FBVyxJQUFJLFlBQVk7QUFDckUsUUFBTSxPQUNKLE9BQU8sSUFBSSxtQkFBbUIsV0FDMUIsSUFBSSxlQUFlLFFBQVEsQ0FBQyxJQUM1QjtBQUNOLFFBQU0sYUFDSixPQUFPLElBQUksZ0JBQWdCLFdBQVcsSUFBSSxjQUFjO0FBQzFELFNBQ0UsOEtBRWEsUUFBUSxhQUFhLElBQUksZ0JBQWdCLFVBQVUscUJBQzdDLFdBQVcsU0FBUztBQUUzQzs7O0FrRGphQSxJQUFBQyxRQUFzQjs7O0FDQXRCLElBQUFDLGFBQStCO0FBQy9CLElBQUFDLGFBQWU7QUFDZixJQUFBQyxlQUFpQjtBRUZqQixJQUFBQyx3QkFBc0I7QUFDdEIsSUFBQUgsYUFBeUI7QUFDekIsSUFBQUUsZUFBaUI7QUFDakIsSUFBQUUsbUJBQXFCO0FBQ3JCLElBQUFDLGlCQUE4QjtBRks5QixlQUFzQix1QkFBdUIsUUFBNEM7QUFDdkYsTUFBSSxXQUFXLFFBQVc7QUFDeEIsV0FBTyxFQUFFLFNBQVMsWUFBWTtJQUFDLEVBQUU7RUFDbkM7QUFFQSxNQUFJLENBQUMsYUFBYSxNQUFNLEdBQUc7QUFDekIsVUFBTSxJQUFJLE1BQU0sMENBQTBDO0VBQzVEO0FBRUEsUUFBTSxZQUFZLE1BQU0sV0FBQUMsU0FBRyxRQUFRLGFBQUFDLFFBQUssS0FBSyxXQUFBQyxRQUFHLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQztBQUNqRixRQUFNLGFBQWEsYUFBQUQsUUFBSyxLQUFLLFdBQVcsYUFBYTtBQUNyRCxRQUFNLFVBQVUsWUFBWTtBQUMxQixRQUFJO0FBQ0YsWUFBTSxXQUFBRCxTQUFHLEdBQUcsV0FBVyxFQUFFLFdBQVcsTUFBTSxPQUFPLEtBQUssQ0FBQztJQUN6RCxRQUFRO0lBRVI7RUFDRjtBQUVBLE1BQUk7QUFDRixVQUFNLFdBQUFBLFNBQUcsVUFBVSxZQUFZLEtBQUssVUFBVSxNQUFNLEdBQUcsTUFBTTtBQUM3RCxXQUFPLEVBQUUsWUFBWSxRQUFRO0VBQy9CLFNBQVNHLFFBQU87QUFDZCxVQUFNLFFBQVE7QUFDZCxVQUFNQTtFQUNSO0FBQ0Y7QUFFQSxTQUFTLGFBQWEsT0FBa0Q7QUFDdEUsU0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSztBQUM1RTtBQ0NPLElBQU0sU0FBTixNQUFhO0VBQ1Y7RUFDQTtFQUNBO0VBQ0E7O0VBR1IsSUFBVyxLQUFvQjtBQUM3QixXQUFPLEtBQUs7RUFDZDs7RUFHQSxZQUNFLE1BQ0EsU0FDQSxlQUNBLEtBQW9CLE1BQ3BCO0FBQ0EsU0FBSyxRQUFRO0FBQ2IsU0FBSyxXQUFXO0FBQ2hCLFNBQUssTUFBTTtBQUNYLFNBQUssaUJBQWlCO0VBQ3hCOztFQUdBLE1BQU0sWUFBWSxPQUFjLGNBQTJCLENBQUMsR0FBMEI7QUFDcEYsV0FBTyxFQUFFLFFBQVEsS0FBSyxvQkFBb0IsT0FBTyxXQUFXLEVBQUU7RUFDaEU7RUFFQSxPQUFlLG9CQUNiLE9BQ0EsY0FBMkIsQ0FBQyxHQUNDO0FBQzdCLFVBQU0sRUFBRSxZQUFZLFFBQVEsSUFBSSxNQUFNLHVCQUF1QixZQUFZLFlBQVk7QUFDckYsVUFBTSxVQUFVLEtBQUs7QUFDckIsVUFBTSxFQUFFLFFBQVEsT0FBTyxJQUFJLGVBQWUsS0FBSztBQUMvQyxVQUFNLFlBQVksS0FBSyxNQUFNLElBQUk7TUFDL0IsT0FBTztNQUNQLFNBQVMsS0FBSyxTQUFTO01BQ3ZCLFFBQVEsS0FBSyxTQUFTO01BQ3RCLFVBQVUsS0FBSztNQUNmO01BQ0EsT0FBTyxTQUFTO01BQ2hCLGFBQWEsU0FBUztNQUN0QixrQkFBa0IsU0FBUztNQUMzQixrQkFBa0IsU0FBUztNQUMzQixrQkFBa0I7TUFDbEIsc0JBQXNCLFNBQVM7TUFDL0IsUUFBUSxZQUFZO01BQ3BCLHNCQUFzQixTQUFTO01BQy9CLGVBQWUsU0FBUztNQUN4QixrQkFBa0IsU0FBUztNQUMzQixnQkFBZ0IsU0FBUztNQUN6Qix1QkFBdUIsU0FBUztJQUNsQyxDQUFDO0FBQ0QsUUFBSTtBQUNGLHVCQUFpQixRQUFRLFdBQVc7QUFDbEMsWUFBSTtBQUNKLFlBQUk7QUFDRixtQkFBUyxLQUFLLE1BQU0sSUFBSTtRQUMxQixTQUFTQSxRQUFPO0FBQ2QsZ0JBQU0sSUFBSSxNQUFNLHlCQUF5QixJQUFJLElBQUksRUFBRSxPQUFPQSxPQUFNLENBQUM7UUFDbkU7QUFDQSxZQUFJLE9BQU8sU0FBUyxrQkFBa0I7QUFDcEMsZUFBSyxNQUFNLE9BQU87UUFDcEI7QUFDQSxjQUFNO01BQ1I7SUFDRixVQUFBO0FBQ0UsWUFBTSxRQUFRO0lBQ2hCO0VBQ0Y7O0VBR0EsTUFBTSxJQUFJLE9BQWMsY0FBMkIsQ0FBQyxHQUFrQjtBQUNwRSxVQUFNLFlBQVksS0FBSyxvQkFBb0IsT0FBTyxXQUFXO0FBQzdELFVBQU0sUUFBc0IsQ0FBQztBQUM3QixRQUFJLGdCQUF3QjtBQUM1QixRQUFJLFFBQXNCO0FBQzFCLFFBQUksY0FBa0M7QUFDdEMscUJBQWlCLFNBQVMsV0FBVztBQUNuQyxVQUFJLE1BQU0sU0FBUyxrQkFBa0I7QUFDbkMsWUFBSSxNQUFNLEtBQUssU0FBUyxpQkFBaUI7QUFDdkMsMEJBQWdCLE1BQU0sS0FBSztRQUM3QjtBQUNBLGNBQU0sS0FBSyxNQUFNLElBQUk7TUFDdkIsV0FBVyxNQUFNLFNBQVMsa0JBQWtCO0FBQzFDLGdCQUFRLE1BQU07TUFDaEIsV0FBVyxNQUFNLFNBQVMsZUFBZTtBQUN2QyxzQkFBYyxNQUFNO0FBQ3BCO01BQ0Y7SUFDRjtBQUNBLFFBQUksYUFBYTtBQUNmLFlBQU0sSUFBSSxNQUFNLFlBQVksT0FBTztJQUNyQztBQUNBLFdBQU8sRUFBRSxPQUFPLGVBQWUsTUFBTTtFQUN2QztBQUNGO0FBRUEsU0FBUyxlQUFlLE9BQW9EO0FBQzFFLE1BQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsV0FBTyxFQUFFLFFBQVEsT0FBTyxRQUFRLENBQUMsRUFBRTtFQUNyQztBQUNBLFFBQU0sY0FBd0IsQ0FBQztBQUMvQixRQUFNLFNBQW1CLENBQUM7QUFDMUIsYUFBVyxRQUFRLE9BQU87QUFDeEIsUUFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QixrQkFBWSxLQUFLLEtBQUssSUFBSTtJQUM1QixXQUFXLEtBQUssU0FBUyxlQUFlO0FBQ3RDLGFBQU8sS0FBSyxLQUFLLElBQUk7SUFDdkI7RUFDRjtBQUNBLFNBQU8sRUFBRSxRQUFRLFlBQVksS0FBSyxNQUFNLEdBQUcsT0FBTztBQUNwRDtBQ2hIQSxJQUFNLDBCQUEwQjtBQUNoQyxJQUFNLDRCQUE0QjtBQUNsQyxJQUFNLGlCQUFpQjtBQUV2QixJQUFNLDZCQUFxRDtFQUN6RCw2QkFBNkI7RUFDN0IsOEJBQThCO0VBQzlCLHVCQUF1QjtFQUN2Qix3QkFBd0I7RUFDeEIsMEJBQTBCO0VBQzFCLDJCQUEyQjtBQUM3QjtBQUVBLElBQU0sb0JBQWdCLDhCQUFjLHdCQUFlO0FBTzVDLElBQU0sWUFBTixNQUFnQjtFQUNiO0VBQ0E7RUFDQTtFQUNBO0VBRVIsWUFDRSxpQkFBZ0MsTUFDaEMsS0FDQSxpQkFDQTtBQUNBLFFBQUksZ0JBQWdCO0FBQ2xCLFdBQUssaUJBQWlCO0FBQ3RCLFdBQUssV0FBVyxDQUFDO0lBQ25CLE9BQU87QUFDTCxZQUFNLFdBQVcsY0FBYztBQUMvQixXQUFLLGlCQUFpQixTQUFTO0FBQy9CLFdBQUssV0FBVyxTQUFTO0lBQzNCO0FBQ0EsU0FBSyxjQUFjO0FBQ25CLFNBQUssa0JBQWtCO0VBQ3pCO0VBRUEsT0FBTyxJQUFJLE1BQTZDO0FBQ3RELFVBQU0sY0FBd0IsQ0FBQyxRQUFRLHFCQUFxQjtBQUU1RCxRQUFJLEtBQUssaUJBQWlCO0FBQ3hCLGlCQUFXLFlBQVkseUJBQXlCLEtBQUssZUFBZSxHQUFHO0FBQ3JFLG9CQUFZLEtBQUssWUFBWSxRQUFRO01BQ3ZDO0lBQ0Y7QUFFQSxRQUFJLEtBQUssU0FBUztBQUNoQixrQkFBWTtRQUNWO1FBQ0EsbUJBQW1CLFlBQVksS0FBSyxTQUFTLGlCQUFpQixDQUFDO01BQ2pFO0lBQ0Y7QUFFQSxRQUFJLEtBQUssT0FBTztBQUNkLGtCQUFZLEtBQUssV0FBVyxLQUFLLEtBQUs7SUFDeEM7QUFFQSxRQUFJLEtBQUssYUFBYTtBQUNwQixrQkFBWSxLQUFLLGFBQWEsS0FBSyxXQUFXO0lBQ2hEO0FBRUEsUUFBSSxLQUFLLGtCQUFrQjtBQUN6QixrQkFBWSxLQUFLLFFBQVEsS0FBSyxnQkFBZ0I7SUFDaEQ7QUFFQSxRQUFJLEtBQUssdUJBQXVCLFFBQVE7QUFDdEMsaUJBQVcsT0FBTyxLQUFLLHVCQUF1QjtBQUM1QyxvQkFBWSxLQUFLLGFBQWEsR0FBRztNQUNuQztJQUNGO0FBRUEsUUFBSSxLQUFLLGtCQUFrQjtBQUN6QixrQkFBWSxLQUFLLHVCQUF1QjtJQUMxQztBQUVBLFFBQUksS0FBSyxrQkFBa0I7QUFDekIsa0JBQVksS0FBSyxtQkFBbUIsS0FBSyxnQkFBZ0I7SUFDM0Q7QUFFQSxRQUFJLEtBQUssc0JBQXNCO0FBQzdCLGtCQUFZLEtBQUssWUFBWSwyQkFBMkIsS0FBSyxvQkFBb0IsR0FBRztJQUN0RjtBQUVBLFFBQUksS0FBSyx5QkFBeUIsUUFBVztBQUMzQyxrQkFBWTtRQUNWO1FBQ0EsMENBQTBDLEtBQUssb0JBQW9CO01BQ3JFO0lBQ0Y7QUFFQSxRQUFJLEtBQUssZUFBZTtBQUN0QixrQkFBWSxLQUFLLFlBQVksZUFBZSxLQUFLLGFBQWEsR0FBRztJQUNuRSxXQUFXLEtBQUsscUJBQXFCLE1BQU07QUFDekMsa0JBQVksS0FBSyxZQUFZLG1CQUFtQjtJQUNsRCxXQUFXLEtBQUsscUJBQXFCLE9BQU87QUFDMUMsa0JBQVksS0FBSyxZQUFZLHVCQUF1QjtJQUN0RDtBQUVBLFFBQUksS0FBSyxnQkFBZ0I7QUFDdkIsa0JBQVksS0FBSyxZQUFZLG9CQUFvQixLQUFLLGNBQWMsR0FBRztJQUN6RTtBQUVBLFFBQUksS0FBSyxVQUFVO0FBQ2pCLGtCQUFZLEtBQUssVUFBVSxLQUFLLFFBQVE7SUFDMUM7QUFFQSxRQUFJLEtBQUssUUFBUSxRQUFRO0FBQ3ZCLGlCQUFXLFNBQVMsS0FBSyxRQUFRO0FBQy9CLG9CQUFZLEtBQUssV0FBVyxLQUFLO01BQ25DO0lBQ0Y7QUFFQSxVQUFNLE1BQThCLENBQUM7QUFDckMsUUFBSSxLQUFLLGFBQWE7QUFDcEIsYUFBTyxPQUFPLEtBQUssS0FBSyxXQUFXO0lBQ3JDLE9BQU87QUFDTCxpQkFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxRQUFRLEdBQUcsR0FBRztBQUN0RCxZQUFJLFVBQVUsUUFBVztBQUN2QixjQUFJLEdBQUcsSUFBSTtRQUNiO01BQ0Y7SUFDRjtBQUNBLFFBQUksQ0FBQyxJQUFJLHVCQUF1QixHQUFHO0FBQ2pDLFVBQUksdUJBQXVCLElBQUk7SUFDakM7QUFDQSxRQUFJLEtBQUssUUFBUTtBQUNmLFVBQUksZ0JBQWdCLEtBQUs7SUFDM0I7QUFDQSxRQUFJLEtBQUssU0FBUyxTQUFTLEdBQUc7QUFDNUIsc0JBQWdCLEtBQUssS0FBSyxRQUFRO0lBQ3BDO0FBRUEsVUFBTSxZQUFRLDZCQUFNLEtBQUssZ0JBQWdCLGFBQWE7TUFDcEQ7TUFDQSxRQUFRLEtBQUs7SUFDZixDQUFDO0FBRUQsUUFBSSxhQUE2QjtBQUNqQyxVQUFNLEtBQUssU0FBUyxDQUFDLFFBQVMsYUFBYSxHQUFJO0FBRS9DLFFBQUksQ0FBQyxNQUFNLE9BQU87QUFDaEIsWUFBTSxLQUFLO0FBQ1gsWUFBTSxJQUFJLE1BQU0sNEJBQTRCO0lBQzlDO0FBQ0EsVUFBTSxNQUFNLE1BQU0sS0FBSyxLQUFLO0FBQzVCLFVBQU0sTUFBTSxJQUFJO0FBRWhCLFFBQUksQ0FBQyxNQUFNLFFBQVE7QUFDakIsWUFBTSxLQUFLO0FBQ1gsWUFBTSxJQUFJLE1BQU0sNkJBQTZCO0lBQy9DO0FBQ0EsVUFBTSxlQUF5QixDQUFDO0FBRWhDLFFBQUksTUFBTSxRQUFRO0FBQ2hCLFlBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTO0FBQ2hDLHFCQUFhLEtBQUssSUFBSTtNQUN4QixDQUFDO0lBQ0g7QUFFQSxVQUFNLGNBQWMsSUFBSTtNQUN0QixDQUFDLFlBQVk7QUFDWCxjQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sV0FBVztBQUNuQyxrQkFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO1FBQzFCLENBQUM7TUFDSDtJQUNGO0FBRUEsVUFBTUMsTUFBSyxpQkFBQUMsUUFBUyxnQkFBZ0I7TUFDbEMsT0FBTyxNQUFNO01BQ2IsV0FBVztJQUNiLENBQUM7QUFFRCxRQUFJO0FBQ0YsdUJBQWlCLFFBQVFELEtBQUk7QUFFM0IsY0FBTTtNQUNSO0FBRUEsVUFBSSxXQUFZLE9BQU07QUFDdEIsWUFBTSxFQUFFLE1BQU0sT0FBTyxJQUFJLE1BQU07QUFDL0IsVUFBSSxTQUFTLEtBQUssUUFBUTtBQUN4QixjQUFNLGVBQWUsT0FBTyxPQUFPLFlBQVk7QUFDL0MsY0FBTSxTQUFTLFNBQVMsVUFBVSxNQUFNLEtBQUssUUFBUSxRQUFRLENBQUM7QUFDOUQsY0FBTSxJQUFJLE1BQU0sMEJBQTBCLE1BQU0sS0FBSyxhQUFhLFNBQVMsTUFBTSxDQUFDLEVBQUU7TUFDdEY7SUFDRixVQUFBO0FBQ0UsTUFBQUEsSUFBRyxNQUFNO0FBQ1QsWUFBTSxtQkFBbUI7QUFDekIsVUFBSTtBQUNGLFlBQUksQ0FBQyxNQUFNLE9BQVEsT0FBTSxLQUFLO01BQ2hDLFFBQVE7TUFFUjtJQUNGO0VBQ0Y7QUFDRjtBQUVBLFNBQVMseUJBQXlCLGlCQUE4QztBQUM5RSxRQUFNLFlBQXNCLENBQUM7QUFDN0IseUJBQXVCLGlCQUFpQixJQUFJLFNBQVM7QUFDckQsU0FBTztBQUNUO0FBRUEsU0FBUyx1QkFDUCxPQUNBLFFBQ0EsV0FDTTtBQUNOLE1BQUksQ0FBQ0UsZUFBYyxLQUFLLEdBQUc7QUFDekIsUUFBSSxRQUFRO0FBQ1YsZ0JBQVUsS0FBSyxHQUFHLE1BQU0sSUFBSSxZQUFZLE9BQU8sTUFBTSxDQUFDLEVBQUU7QUFDeEQ7SUFDRixPQUFPO0FBQ0wsWUFBTSxJQUFJLE1BQU0sK0NBQStDO0lBQ2pFO0VBQ0Y7QUFFQSxRQUFNLFVBQVUsT0FBTyxRQUFRLEtBQUs7QUFDcEMsTUFBSSxDQUFDLFVBQVUsUUFBUSxXQUFXLEdBQUc7QUFDbkM7RUFDRjtBQUVBLE1BQUksVUFBVSxRQUFRLFdBQVcsR0FBRztBQUNsQyxjQUFVLEtBQUssR0FBRyxNQUFNLEtBQUs7QUFDN0I7RUFDRjtBQUVBLGFBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxTQUFTO0FBQ2xDLFFBQUksQ0FBQyxLQUFLO0FBQ1IsWUFBTSxJQUFJLE1BQU0sc0RBQXNEO0lBQ3hFO0FBQ0EsUUFBSSxVQUFVLFFBQVc7QUFDdkI7SUFDRjtBQUNBLFVBQU1MLFFBQU8sU0FBUyxHQUFHLE1BQU0sSUFBSSxHQUFHLEtBQUs7QUFDM0MsUUFBSUssZUFBYyxLQUFLLEdBQUc7QUFDeEIsNkJBQXVCLE9BQU9MLE9BQU0sU0FBUztJQUMvQyxPQUFPO0FBQ0wsZ0JBQVUsS0FBSyxHQUFHQSxLQUFJLElBQUksWUFBWSxPQUFPQSxLQUFJLENBQUMsRUFBRTtJQUN0RDtFQUNGO0FBQ0Y7QUFFQSxTQUFTLFlBQVksT0FBeUJBLE9BQXNCO0FBQ2xFLE1BQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsV0FBTyxLQUFLLFVBQVUsS0FBSztFQUM3QixXQUFXLE9BQU8sVUFBVSxVQUFVO0FBQ3BDLFFBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxHQUFHO0FBQzNCLFlBQU0sSUFBSSxNQUFNLDRCQUE0QkEsS0FBSSwwQkFBMEI7SUFDNUU7QUFDQSxXQUFPLEdBQUcsS0FBSztFQUNqQixXQUFXLE9BQU8sVUFBVSxXQUFXO0FBQ3JDLFdBQU8sUUFBUSxTQUFTO0VBQzFCLFdBQVcsTUFBTSxRQUFRLEtBQUssR0FBRztBQUMvQixVQUFNLFdBQVcsTUFBTSxJQUFJLENBQUMsTUFBTSxVQUFVLFlBQVksTUFBTSxHQUFHQSxLQUFJLElBQUksS0FBSyxHQUFHLENBQUM7QUFDbEYsV0FBTyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUM7RUFDaEMsV0FBV0ssZUFBYyxLQUFLLEdBQUc7QUFDL0IsVUFBTSxRQUFrQixDQUFDO0FBQ3pCLGVBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQVEsS0FBSyxHQUFHO0FBQ2hELFVBQUksQ0FBQyxLQUFLO0FBQ1IsY0FBTSxJQUFJLE1BQU0sc0RBQXNEO01BQ3hFO0FBQ0EsVUFBSSxVQUFVLFFBQVc7QUFDdkI7TUFDRjtBQUNBLFlBQU0sS0FBSyxHQUFHLGNBQWMsR0FBRyxDQUFDLE1BQU0sWUFBWSxPQUFPLEdBQUdMLEtBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0lBQzlFO0FBQ0EsV0FBTyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUM7RUFDN0IsV0FBVyxVQUFVLE1BQU07QUFDekIsVUFBTSxJQUFJLE1BQU0sNEJBQTRCQSxLQUFJLGlCQUFpQjtFQUNuRSxPQUFPO0FBQ0wsVUFBTSxXQUFXLE9BQU87QUFDeEIsVUFBTSxJQUFJLE1BQU0sOENBQThDQSxLQUFJLEtBQUssUUFBUSxFQUFFO0VBQ25GO0FBQ0Y7QUFFQSxJQUFNLGdCQUFnQjtBQUN0QixTQUFTLGNBQWMsS0FBcUI7QUFDMUMsU0FBTyxjQUFjLEtBQUssR0FBRyxJQUFJLE1BQU0sS0FBSyxVQUFVLEdBQUc7QUFDM0Q7QUFFQSxTQUFTSyxlQUFjLE9BQTRDO0FBQ2pFLFNBQU8sT0FBTyxVQUFVLFlBQVksVUFBVSxRQUFRLENBQUMsTUFBTSxRQUFRLEtBQUs7QUFDNUU7QUFFQSxTQUFTLGdCQUFxQztBQUM1QyxRQUFNLEVBQUUsVUFBVSxLQUFLLElBQUk7QUFFM0IsTUFBSSxlQUFlO0FBQ25CLFVBQVEsVUFBVTtJQUNoQixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVEsTUFBTTtRQUNaLEtBQUs7QUFDSCx5QkFBZTtBQUNmO1FBQ0YsS0FBSztBQUNILHlCQUFlO0FBQ2Y7UUFDRjtBQUNFO01BQ0o7QUFDQTtJQUNGLEtBQUs7QUFDSCxjQUFRLE1BQU07UUFDWixLQUFLO0FBQ0gseUJBQWU7QUFDZjtRQUNGLEtBQUs7QUFDSCx5QkFBZTtBQUNmO1FBQ0Y7QUFDRTtNQUNKO0FBQ0E7SUFDRixLQUFLO0FBQ0gsY0FBUSxNQUFNO1FBQ1osS0FBSztBQUNILHlCQUFlO0FBQ2Y7UUFDRixLQUFLO0FBQ0gseUJBQWU7QUFDZjtRQUNGO0FBQ0U7TUFDSjtBQUNBO0lBQ0Y7QUFDRTtFQUNKO0FBRUEsTUFBSSxDQUFDLGNBQWM7QUFDakIsVUFBTSxJQUFJLE1BQU0seUJBQXlCLFFBQVEsS0FBSyxJQUFJLEdBQUc7RUFDL0Q7QUFFQSxRQUFNLGtCQUFrQiwyQkFBMkIsWUFBWTtBQUMvRCxNQUFJLENBQUMsaUJBQWlCO0FBQ3BCLFVBQU0sSUFBSSxNQUFNLDhCQUE4QixZQUFZLEVBQUU7RUFDOUQ7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLFVBQU0sdUJBQXVCLGNBQWMsUUFBUSxHQUFHLGNBQWMsZUFBZTtBQUNuRixVQUFNLG1CQUFlLDhCQUFjLG9CQUFvQjtBQUN2RCxVQUFNLDBCQUEwQixhQUFhLFFBQVEsR0FBRyxlQUFlLGVBQWU7QUFDdEYsaUJBQWFMLGFBQUFBLFFBQUssS0FBS0EsYUFBQUEsUUFBSyxRQUFRLHVCQUF1QixHQUFHLFFBQVE7RUFDeEUsUUFBUTtBQUNOLFVBQU0sSUFBSTtNQUNSLCtDQUErQyxjQUFjO0lBQy9EO0VBQ0Y7QUFFQSxRQUFNLGtCQUFrQixRQUFRLGFBQWEsVUFBVSxjQUFjO0FBQ3JFLFFBQU0sZ0JBQWdCLHFCQUFxQixZQUFZLGNBQWMsZUFBZTtBQUNwRixNQUFJLENBQUMsZUFBZTtBQUNsQixVQUFNLElBQUk7TUFDUiwyQ0FBMkMsWUFBWSxZQUFZLGNBQWM7SUFDbkY7RUFDRjtBQUVBLFNBQU87QUFDVDtBQUVPLFNBQVMscUJBQ2QsWUFDQSxjQUNBLGlCQUM0QjtBQUM1QixRQUFNLGNBQWNBLGFBQUFBLFFBQUssS0FBSyxZQUFZLFlBQVk7QUFDdEQsUUFBTSxvQkFBb0JBLGFBQUFBLFFBQUssS0FBSyxhQUFhLE9BQU8sZUFBZTtBQUN2RSxNQUFJLE9BQU8saUJBQWlCLEtBQUssT0FBT0EsYUFBQUEsUUFBSyxLQUFLLGFBQWEsb0JBQW9CLENBQUMsR0FBRztBQUNyRixXQUFPO01BQ0wsZ0JBQWdCO01BQ2hCLFVBQVUsYUFBYUEsYUFBQUEsUUFBSyxLQUFLLGFBQWEsWUFBWSxDQUFDO0lBQzdEO0VBQ0Y7QUFFQSxRQUFNLG1CQUFtQkEsYUFBQUEsUUFBSyxLQUFLLGFBQWEsU0FBUyxlQUFlO0FBQ3hFLE1BQUksT0FBTyxnQkFBZ0IsR0FBRztBQUM1QixXQUFPO01BQ0wsZ0JBQWdCO01BQ2hCLFVBQVUsYUFBYUEsYUFBQUEsUUFBSyxLQUFLLGFBQWEsTUFBTSxDQUFDO0lBQ3ZEO0VBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLGdCQUFnQixNQUEwQjtBQUNqRCxTQUFPLEtBQUssT0FBTyxXQUFXO0FBQ2hDO0FBRU8sU0FBUyxnQkFDZCxLQUNBLFVBQ0EsV0FBNEIsUUFBUSxVQUM5QjtBQUNOLFFBQU0sVUFBVSxXQUFXLEtBQUssUUFBUTtBQUN4QyxNQUFJLGFBQWEsU0FBUztBQUN4QixlQUFXLE9BQU8sT0FBTyxLQUFLLEdBQUcsR0FBRztBQUNsQyxVQUFJLElBQUksWUFBWSxNQUFNLFVBQVUsUUFBUSxTQUFTO0FBQ25ELGVBQU8sSUFBSSxHQUFHO01BQ2hCO0lBQ0Y7RUFDRjtBQUVBLFFBQU0sbUJBQW1CLElBQUksT0FBTyxLQUFLLElBQ3RDLE1BQU1BLGFBQUFBLFFBQUssU0FBUyxFQUNwQixPQUFPLENBQUMsVUFBVSxNQUFNLFNBQVMsS0FBSyxDQUFDLFNBQVMsU0FBUyxLQUFLLENBQUM7QUFDbEUsTUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxlQUFlLEVBQUUsS0FBS0EsYUFBQUEsUUFBSyxTQUFTO0FBQ3RFO0FBRUEsU0FBUyxXQUFXLEtBQTZCLFVBQW1DO0FBQ2xGLE1BQUksYUFBYSxTQUFTO0FBQ3hCLFdBQU87RUFDVDtBQUVBLFFBQU0sZUFBZSxPQUFPLEtBQUssR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksWUFBWSxNQUFNLE1BQU07QUFDbEYsU0FBTyxhQUFhLFNBQVMsTUFBTSxJQUFJLFNBQVUsYUFBYSxHQUFHLEVBQUUsS0FBSztBQUMxRTtBQUVBLFNBQVMsT0FBTyxVQUEyQjtBQUN6QyxNQUFJO0FBQ0YsZUFBTyxxQkFBUyxRQUFRLEVBQUUsT0FBTztFQUNuQyxRQUFRO0FBQ04sV0FBTztFQUNUO0FBQ0Y7QUFFQSxTQUFTLFlBQVksVUFBMkI7QUFDOUMsTUFBSTtBQUNGLGVBQU8scUJBQVMsUUFBUSxFQUFFLFlBQVk7RUFDeEMsUUFBUTtBQUNOLFdBQU87RUFDVDtBQUNGO0FDemRPLElBQU0sUUFBTixNQUFZO0VBQ1Q7RUFDQTtFQUVSLFlBQVksVUFBd0IsQ0FBQyxHQUFHO0FBQ3RDLFVBQU0sRUFBRSxtQkFBbUIsS0FBSyxRQUFBTSxRQUFPLElBQUk7QUFDM0MsU0FBSyxPQUFPLElBQUksVUFBVSxtQkFBbUIsS0FBS0EsT0FBTTtBQUN4RCxTQUFLLFVBQVU7RUFDakI7Ozs7O0VBTUEsWUFBWSxVQUF5QixDQUFDLEdBQVc7QUFDL0MsV0FBTyxJQUFJLE9BQU8sS0FBSyxNQUFNLEtBQUssU0FBUyxPQUFPO0VBQ3BEOzs7Ozs7OztFQVNBLGFBQWEsSUFBWSxVQUF5QixDQUFDLEdBQVc7QUFDNUQsV0FBTyxJQUFJLE9BQU8sS0FBSyxNQUFNLEtBQUssU0FBUyxTQUFTLEVBQUU7RUFDeEQ7QUFDRjs7O0FDdENBLElBQUFDLDZCQUEwQjtBQUMxQixJQUFBQyxrQkFBMkI7QUFDM0IsSUFBQUMsUUFBc0I7QUFLdEIsSUFBTUMsZUFBYztBQUtwQixJQUFNQyxvQkFBbUI7QUFDekIsSUFBTUMsK0JBQThCO0FBRXBDLElBQUlDLFVBQWlDO0FBRTlCLFNBQVMsaUJBQWtDO0FBQ2hELE1BQUksQ0FBQ0EsUUFBUSxDQUFBQSxVQUFTLGdCQUFnQjtBQUN0QyxTQUFPQTtBQUNUO0FBTUEsZUFBZSxrQkFBbUM7QUFDaEQsUUFBTSxXQUFXLFFBQVEsSUFBSTtBQUM3QixNQUFJLFVBQVU7QUFDWixRQUFJLEtBQUMsNEJBQVcsUUFBUSxHQUFHO0FBQ3pCLFlBQU0sSUFBSSxNQUFNLDRCQUE0QixRQUFRLGlCQUFpQjtBQUFBLElBQ3ZFO0FBQ0EsSUFBSyxXQUFLLGtEQUFrRCxRQUFRLEVBQUU7QUFDdEUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsV0FBVztBQUMxQixNQUFJLFFBQVE7QUFDVixJQUFLLFdBQUssNEJBQTRCLE1BQU0sRUFBRTtBQUM5QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sZ0JBQWdCO0FBQ3pCO0FBRUEsU0FBUyxhQUE0QjtBQUNuQyxRQUFNLGFBQVMsc0NBQVUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7QUFBQSxJQUN6RCxVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0QsTUFBSSxPQUFPLFdBQVcsRUFBRyxRQUFPO0FBQ2hDLFFBQU1DLFFBQU8sT0FBTyxPQUFPLE1BQU0sT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLO0FBQ25ELFNBQU9BLGFBQVEsNEJBQVdBLEtBQUksSUFBSUEsUUFBTztBQUMzQztBQUVBLGVBQWUsa0JBQW1DO0FBQ2hELEVBQUs7QUFBQSxJQUNILHlEQUF5REMsWUFBVztBQUFBLEVBQ3RFO0FBRUEsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUNWLFlBQU07QUFBQSxRQUNKO0FBQUEsUUFDQSxDQUFDLFdBQVcsTUFBTSxpQkFBaUJBLFlBQVcsRUFBRTtBQUFBLFFBQ2hEO0FBQUEsTUFDRjtBQUNBLFlBQU0sU0FBUyxXQUFXO0FBQzFCLFVBQUksUUFBUTtBQUNWLFFBQUssV0FBSywwQ0FBMEMsTUFBTSxFQUFFO0FBQzVELGVBQU87QUFBQSxNQUNUO0FBQ0EsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0UsVUFBVUM7QUFBQSxNQUNWLGFBQWFDO0FBQUEsTUFDYixTQUFTLENBQUMsU0FBU0MsV0FDWjtBQUFBLFFBQ0gsNkJBQTZCLE9BQU8sSUFBSUYsaUJBQWdCLFlBQVlFLE9BQU0sT0FBTztBQUFBLE1BQ25GO0FBQUEsSUFDSjtBQUFBLEVBQ0Y7QUFDRjs7O0FDcEZBLElBQUFDLHNCQUF3QztBQUN4Qyx1QkFLTzs7O0FDTEEsSUFBTUMsU0FBUSxPQUFPLE9BQU87QUFBQSxFQUMvQixRQUFRO0FBQ1osQ0FBQztBQUFBO0FBQytCLFNBQVMsYUFBYSxNQUFNQyxjQUFhLFFBQVE7QUFDN0UsV0FBUyxLQUFLLE1BQU0sS0FBSztBQUNyQixRQUFJO0FBQ0osV0FBTyxlQUFlLE1BQU0sUUFBUTtBQUFBLE1BQ2hDLE9BQU8sS0FBSyxRQUFRLENBQUM7QUFBQSxNQUNyQixZQUFZO0FBQUEsSUFDaEIsQ0FBQztBQUNELEtBQUMsS0FBSyxLQUFLLE1BQU0sV0FBVyxHQUFHLFNBQVMsb0JBQUksSUFBSTtBQUNoRCxTQUFLLEtBQUssT0FBTyxJQUFJLElBQUk7QUFDekIsSUFBQUEsYUFBWSxNQUFNLEdBQUc7QUFFckIsZUFBVyxLQUFLQyxHQUFFLFdBQVc7QUFDekIsVUFBSSxFQUFFLEtBQUs7QUFDUCxlQUFPLGVBQWUsTUFBTSxHQUFHLEVBQUUsT0FBT0EsR0FBRSxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0FBQUEsSUFDM0U7QUFDQSxTQUFLLEtBQUssU0FBU0E7QUFDbkIsU0FBSyxLQUFLLE1BQU07QUFBQSxFQUNwQjtBQUVBLFFBQU0sU0FBUyxRQUFRLFVBQVU7QUFBQSxFQUNqQyxNQUFNLG1CQUFtQixPQUFPO0FBQUEsRUFDaEM7QUFDQSxTQUFPLGVBQWUsWUFBWSxRQUFRLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDekQsV0FBU0EsR0FBRSxLQUFLO0FBQ1osUUFBSTtBQUNKLFVBQU0sT0FBTyxRQUFRLFNBQVMsSUFBSSxXQUFXLElBQUk7QUFDakQsU0FBSyxNQUFNLEdBQUc7QUFDZCxLQUFDLEtBQUssS0FBSyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDN0MsZUFBVyxNQUFNLEtBQUssS0FBSyxVQUFVO0FBQ2pDLFNBQUc7QUFBQSxJQUNQO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDQSxTQUFPLGVBQWVBLElBQUcsUUFBUSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2hELFNBQU8sZUFBZUEsSUFBRyxPQUFPLGFBQWE7QUFBQSxJQUN6QyxPQUFPLENBQUMsU0FBUztBQUNiLFVBQUksUUFBUSxVQUFVLGdCQUFnQixPQUFPO0FBQ3pDLGVBQU87QUFDWCxhQUFPLE1BQU0sTUFBTSxRQUFRLElBQUksSUFBSTtBQUFBLElBQ3ZDO0FBQUEsRUFDSixDQUFDO0FBQ0QsU0FBTyxlQUFlQSxJQUFHLFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNoRCxTQUFPQTtBQUNYO0FBRU8sSUFBTSxTQUFTLE9BQU8sV0FBVztBQUNqQyxJQUFNLGlCQUFOLGNBQTZCLE1BQU07QUFBQSxFQUN0QyxjQUFjO0FBQ1YsVUFBTSwwRUFBMEU7QUFBQSxFQUNwRjtBQUNKO0FBQ08sSUFBTSxlQUFlLENBQUM7QUFDdEIsU0FBUyxPQUFPLFdBQVc7QUFDOUIsTUFBSTtBQUNBLFdBQU8sT0FBTyxjQUFjLFNBQVM7QUFDekMsU0FBTztBQUNYOzs7QUM1REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNEJBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQSx1QkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQSxjQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ08sU0FBUyxZQUFZLEtBQUs7QUFDN0IsU0FBTztBQUNYO0FBQ08sU0FBUyxlQUFlLEtBQUs7QUFDaEMsU0FBTztBQUNYO0FBQ08sU0FBUyxTQUFTLE1BQU07QUFBRTtBQUMxQixTQUFTLFlBQVksSUFBSTtBQUM1QixRQUFNLElBQUksTUFBTTtBQUNwQjtBQUNPLFNBQVMsT0FBT0MsSUFBRztBQUFFO0FBQ3JCLFNBQVMsY0FBYyxTQUFTO0FBQ25DLFFBQU0sZ0JBQWdCLE9BQU8sT0FBTyxPQUFPLEVBQUUsT0FBTyxDQUFDQyxPQUFNLE9BQU9BLE9BQU0sUUFBUTtBQUNoRixRQUFNLFNBQVMsT0FBTyxRQUFRLE9BQU8sRUFDaEMsT0FBTyxDQUFDLENBQUMsR0FBR0QsRUFBQyxNQUFNLGNBQWMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQ25ELElBQUksQ0FBQyxDQUFDQSxJQUFHQyxFQUFDLE1BQU1BLEVBQUM7QUFDdEIsU0FBTztBQUNYO0FBQ08sU0FBUyxXQUFXQyxRQUFPLFlBQVksS0FBSztBQUMvQyxTQUFPQSxPQUFNLElBQUksQ0FBQyxRQUFRLG1CQUFtQixHQUFHLENBQUMsRUFBRSxLQUFLLFNBQVM7QUFDckU7QUFDTyxTQUFTLHNCQUFzQkYsSUFBRyxPQUFPO0FBQzVDLE1BQUksT0FBTyxVQUFVO0FBQ2pCLFdBQU8sTUFBTSxTQUFTO0FBQzFCLFNBQU87QUFDWDtBQUNPLFNBQVNOLFFBQU8sUUFBUTtBQUMzQixRQUFNUyxPQUFNO0FBQ1osU0FBTztBQUFBLElBQ0gsSUFBSSxRQUFRO0FBQ1IsVUFBSSxDQUFDQSxNQUFLO0FBQ04sY0FBTSxRQUFRLE9BQU87QUFDckIsZUFBTyxlQUFlLE1BQU0sU0FBUyxFQUFFLE1BQU0sQ0FBQztBQUM5QyxlQUFPO0FBQUEsTUFDWDtBQUNBLFlBQU0sSUFBSSxNQUFNLDBCQUEwQjtBQUFBLElBQzlDO0FBQUEsRUFDSjtBQUNKO0FBQ08sU0FBUyxRQUFRLE9BQU87QUFDM0IsU0FBTyxVQUFVLFFBQVEsVUFBVTtBQUN2QztBQUNPLFNBQVMsV0FBVyxRQUFRO0FBQy9CLFFBQU0sUUFBUSxPQUFPLFdBQVcsR0FBRyxJQUFJLElBQUk7QUFDM0MsUUFBTSxNQUFNLE9BQU8sU0FBUyxHQUFHLElBQUksT0FBTyxTQUFTLElBQUksT0FBTztBQUM5RCxTQUFPLE9BQU8sTUFBTSxPQUFPLEdBQUc7QUFDbEM7QUFDTyxTQUFTUixvQkFBbUIsS0FBSyxNQUFNO0FBQzFDLFFBQU0sZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSTtBQUN6RCxRQUFNLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSTtBQUMzRCxRQUFNLFdBQVcsY0FBYyxlQUFlLGNBQWM7QUFDNUQsUUFBTSxTQUFTLE9BQU8sU0FBUyxJQUFJLFFBQVEsUUFBUSxFQUFFLFFBQVEsS0FBSyxFQUFFLENBQUM7QUFDckUsUUFBTSxVQUFVLE9BQU8sU0FBUyxLQUFLLFFBQVEsUUFBUSxFQUFFLFFBQVEsS0FBSyxFQUFFLENBQUM7QUFDdkUsU0FBUSxTQUFTLFVBQVcsTUFBTTtBQUN0QztBQUNPLFNBQVMsV0FBV1MsU0FBUSxLQUFLLFFBQVE7QUFDNUMsUUFBTUQsT0FBTTtBQUNaLFNBQU8sZUFBZUMsU0FBUSxLQUFLO0FBQUEsSUFDL0IsTUFBTTtBQUNGLFVBQUksQ0FBQ0QsTUFBSztBQUNOLGNBQU0sUUFBUSxPQUFPO0FBQ3JCLFFBQUFDLFFBQU8sR0FBRyxJQUFJO0FBQ2QsZUFBTztBQUFBLE1BQ1g7QUFDQSxZQUFNLElBQUksTUFBTSwwQkFBMEI7QUFBQSxJQUM5QztBQUFBLElBQ0EsSUFBSUgsSUFBRztBQUNILGFBQU8sZUFBZUcsU0FBUSxLQUFLO0FBQUEsUUFDL0IsT0FBT0g7QUFBQTtBQUFBLE1BRVgsQ0FBQztBQUFBLElBRUw7QUFBQSxJQUNBLGNBQWM7QUFBQSxFQUNsQixDQUFDO0FBQ0w7QUFDTyxTQUFTLFdBQVcsUUFBUSxNQUFNLE9BQU87QUFDNUMsU0FBTyxlQUFlLFFBQVEsTUFBTTtBQUFBLElBQ2hDO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVixZQUFZO0FBQUEsSUFDWixjQUFjO0FBQUEsRUFDbEIsQ0FBQztBQUNMO0FBQ08sU0FBUyxpQkFBaUIsS0FBS0ksT0FBTTtBQUN4QyxNQUFJLENBQUNBO0FBQ0QsV0FBTztBQUNYLFNBQU9BLE1BQUssT0FBTyxDQUFDLEtBQUssUUFBUSxNQUFNLEdBQUcsR0FBRyxHQUFHO0FBQ3BEO0FBQ08sU0FBUyxpQkFBaUIsYUFBYTtBQUMxQyxRQUFNLE9BQU8sT0FBTyxLQUFLLFdBQVc7QUFDcEMsUUFBTSxXQUFXLEtBQUssSUFBSSxDQUFDLFFBQVEsWUFBWSxHQUFHLENBQUM7QUFDbkQsU0FBTyxRQUFRLElBQUksUUFBUSxFQUFFLEtBQUssQ0FBQyxZQUFZO0FBQzNDLFVBQU0sY0FBYyxDQUFDO0FBQ3JCLGFBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxRQUFRLEtBQUs7QUFDbEMsa0JBQVksS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUM7QUFBQSxJQUNwQztBQUNBLFdBQU87QUFBQSxFQUNYLENBQUM7QUFDTDtBQUNPLFNBQVMsYUFBYSxTQUFTLElBQUk7QUFDdEMsUUFBTSxRQUFRO0FBQ2QsTUFBSSxNQUFNO0FBQ1YsV0FBUyxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUs7QUFDN0IsV0FBTyxNQUFNLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ3pEO0FBQ0EsU0FBTztBQUNYO0FBQ08sU0FBUyxJQUFJLEtBQUs7QUFDckIsU0FBTyxLQUFLLFVBQVUsR0FBRztBQUM3QjtBQUNPLElBQU0sb0JBQW9CLE1BQU0sb0JBQ2pDLE1BQU0sb0JBQ04sSUFBSSxVQUFVO0FBQUU7QUFDZixTQUFTLFNBQVMsTUFBTTtBQUMzQixTQUFPLE9BQU8sU0FBUyxZQUFZLFNBQVMsUUFBUSxDQUFDLE1BQU0sUUFBUSxJQUFJO0FBQzNFO0FBQ08sSUFBTSxhQUFhWCxRQUFPLE1BQU07QUFDbkMsTUFBSSxPQUFPLGNBQWMsZUFBZSxXQUFXLFdBQVcsU0FBUyxZQUFZLEdBQUc7QUFDbEYsV0FBTztBQUFBLEVBQ1g7QUFDQSxNQUFJO0FBQ0EsVUFBTVksS0FBSTtBQUNWLFFBQUlBLEdBQUUsRUFBRTtBQUNSLFdBQU87QUFBQSxFQUNYLFNBQ09OLElBQUc7QUFDTixXQUFPO0FBQUEsRUFDWDtBQUNKLENBQUM7QUFDTSxTQUFTSCxlQUFjVSxJQUFHO0FBQzdCLE1BQUksU0FBU0EsRUFBQyxNQUFNO0FBQ2hCLFdBQU87QUFFWCxRQUFNLE9BQU9BLEdBQUU7QUFDZixNQUFJLFNBQVM7QUFDVCxXQUFPO0FBRVgsUUFBTSxPQUFPLEtBQUs7QUFDbEIsTUFBSSxTQUFTLElBQUksTUFBTTtBQUNuQixXQUFPO0FBRVgsTUFBSSxPQUFPLFVBQVUsZUFBZSxLQUFLLE1BQU0sZUFBZSxNQUFNLE9BQU87QUFDdkUsV0FBTztBQUFBLEVBQ1g7QUFDQSxTQUFPO0FBQ1g7QUFDTyxTQUFTLFFBQVEsTUFBTTtBQUMxQixNQUFJLFdBQVc7QUFDZixhQUFXLE9BQU8sTUFBTTtBQUNwQixRQUFJLE9BQU8sVUFBVSxlQUFlLEtBQUssTUFBTSxHQUFHLEdBQUc7QUFDakQ7QUFBQSxJQUNKO0FBQUEsRUFDSjtBQUNBLFNBQU87QUFDWDtBQUNPLElBQU1YLGlCQUFnQixDQUFDLFNBQVM7QUFDbkMsUUFBTVksS0FBSSxPQUFPO0FBQ2pCLFVBQVFBLElBQUc7QUFBQSxJQUNQLEtBQUs7QUFDRCxhQUFPO0FBQUEsSUFDWCxLQUFLO0FBQ0QsYUFBTztBQUFBLElBQ1gsS0FBSztBQUNELGFBQU8sT0FBTyxNQUFNLElBQUksSUFBSSxRQUFRO0FBQUEsSUFDeEMsS0FBSztBQUNELGFBQU87QUFBQSxJQUNYLEtBQUs7QUFDRCxhQUFPO0FBQUEsSUFDWCxLQUFLO0FBQ0QsYUFBTztBQUFBLElBQ1gsS0FBSztBQUNELGFBQU87QUFBQSxJQUNYLEtBQUs7QUFDRCxVQUFJLE1BQU0sUUFBUSxJQUFJLEdBQUc7QUFDckIsZUFBTztBQUFBLE1BQ1g7QUFDQSxVQUFJLFNBQVMsTUFBTTtBQUNmLGVBQU87QUFBQSxNQUNYO0FBQ0EsVUFBSSxLQUFLLFFBQVEsT0FBTyxLQUFLLFNBQVMsY0FBYyxLQUFLLFNBQVMsT0FBTyxLQUFLLFVBQVUsWUFBWTtBQUNoRyxlQUFPO0FBQUEsTUFDWDtBQUNBLFVBQUksT0FBTyxRQUFRLGVBQWUsZ0JBQWdCLEtBQUs7QUFDbkQsZUFBTztBQUFBLE1BQ1g7QUFDQSxVQUFJLE9BQU8sUUFBUSxlQUFlLGdCQUFnQixLQUFLO0FBQ25ELGVBQU87QUFBQSxNQUNYO0FBQ0EsVUFBSSxPQUFPLFNBQVMsZUFBZSxnQkFBZ0IsTUFBTTtBQUNyRCxlQUFPO0FBQUEsTUFDWDtBQUNBLFVBQUksT0FBTyxTQUFTLGVBQWUsZ0JBQWdCLE1BQU07QUFDckQsZUFBTztBQUFBLE1BQ1g7QUFDQSxhQUFPO0FBQUEsSUFDWDtBQUNJLFlBQU0sSUFBSSxNQUFNLHNCQUFzQkEsRUFBQyxFQUFFO0FBQUEsRUFDakQ7QUFDSjtBQUNPLElBQU0sbUJBQW1CLG9CQUFJLElBQUksQ0FBQyxVQUFVLFVBQVUsUUFBUSxDQUFDO0FBQy9ELElBQU0saUJBQWlCLG9CQUFJLElBQUksQ0FBQyxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxDQUFDO0FBQy9GLFNBQVMsWUFBWSxLQUFLO0FBQzdCLFNBQU8sSUFBSSxRQUFRLHVCQUF1QixNQUFNO0FBQ3BEO0FBRU8sU0FBUyxNQUFNLE1BQU0sS0FBSyxRQUFRO0FBQ3JDLFFBQU1DLE1BQUssSUFBSSxLQUFLLEtBQUssT0FBTyxPQUFPLEtBQUssS0FBSyxHQUFHO0FBQ3BELE1BQUksQ0FBQyxPQUFPLFFBQVE7QUFDaEIsSUFBQUEsSUFBRyxLQUFLLFNBQVM7QUFDckIsU0FBT0E7QUFDWDtBQUNPLFNBQVMsZ0JBQWdCLFNBQVM7QUFDckMsUUFBTSxTQUFTO0FBQ2YsTUFBSSxDQUFDO0FBQ0QsV0FBTyxDQUFDO0FBQ1osTUFBSSxPQUFPLFdBQVc7QUFDbEIsV0FBTyxFQUFFLE9BQU8sTUFBTSxPQUFPO0FBQ2pDLE1BQUksUUFBUSxZQUFZLFFBQVc7QUFDL0IsUUFBSSxRQUFRLFVBQVU7QUFDbEIsWUFBTSxJQUFJLE1BQU0sa0RBQWtEO0FBQ3RFLFdBQU8sUUFBUSxPQUFPO0FBQUEsRUFDMUI7QUFDQSxTQUFPLE9BQU87QUFDZCxNQUFJLE9BQU8sT0FBTyxVQUFVO0FBQ3hCLFdBQU8sRUFBRSxHQUFHLFFBQVEsT0FBTyxNQUFNLE9BQU8sTUFBTTtBQUNsRCxTQUFPO0FBQ1g7QUFDTyxTQUFTLHVCQUF1QixRQUFRO0FBQzNDLE1BQUk7QUFDSixTQUFPLElBQUksTUFBTSxDQUFDLEdBQUc7QUFBQSxJQUNqQixJQUFJVCxJQUFHLE1BQU0sVUFBVTtBQUNuQixpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLElBQUksUUFBUSxNQUFNLFFBQVE7QUFBQSxJQUM3QztBQUFBLElBQ0EsSUFBSUEsSUFBRyxNQUFNLE9BQU8sVUFBVTtBQUMxQixpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLElBQUksUUFBUSxNQUFNLE9BQU8sUUFBUTtBQUFBLElBQ3BEO0FBQUEsSUFDQSxJQUFJQSxJQUFHLE1BQU07QUFDVCxpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLElBQUksUUFBUSxJQUFJO0FBQUEsSUFDbkM7QUFBQSxJQUNBLGVBQWVBLElBQUcsTUFBTTtBQUNwQixpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLGVBQWUsUUFBUSxJQUFJO0FBQUEsSUFDOUM7QUFBQSxJQUNBLFFBQVFBLElBQUc7QUFDUCxpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLFFBQVEsTUFBTTtBQUFBLElBQ2pDO0FBQUEsSUFDQSx5QkFBeUJBLElBQUcsTUFBTTtBQUM5QixpQkFBVyxTQUFTLE9BQU87QUFDM0IsYUFBTyxRQUFRLHlCQUF5QixRQUFRLElBQUk7QUFBQSxJQUN4RDtBQUFBLElBQ0EsZUFBZUEsSUFBRyxNQUFNLFlBQVk7QUFDaEMsaUJBQVcsU0FBUyxPQUFPO0FBQzNCLGFBQU8sUUFBUSxlQUFlLFFBQVEsTUFBTSxVQUFVO0FBQUEsSUFDMUQ7QUFBQSxFQUNKLENBQUM7QUFDTDtBQUNPLFNBQVMsbUJBQW1CLE9BQU87QUFDdEMsTUFBSSxPQUFPLFVBQVU7QUFDakIsV0FBTyxNQUFNLFNBQVMsSUFBSTtBQUM5QixNQUFJLE9BQU8sVUFBVTtBQUNqQixXQUFPLElBQUksS0FBSztBQUNwQixTQUFPLEdBQUcsS0FBSztBQUNuQjtBQUNPLFNBQVMsYUFBYSxPQUFPO0FBQ2hDLFNBQU8sT0FBTyxLQUFLLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTTtBQUNwQyxXQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssVUFBVSxjQUFjLE1BQU0sQ0FBQyxFQUFFLEtBQUssV0FBVztBQUFBLEVBQzFFLENBQUM7QUFDTDtBQUNPLElBQU0sdUJBQXVCO0FBQUEsRUFDaEMsU0FBUyxDQUFDLE9BQU8sa0JBQWtCLE9BQU8sZ0JBQWdCO0FBQUEsRUFDMUQsT0FBTyxDQUFDLGFBQWEsVUFBVTtBQUFBLEVBQy9CLFFBQVEsQ0FBQyxHQUFHLFVBQVU7QUFBQSxFQUN0QixTQUFTLENBQUMsdUJBQXdCLG9CQUFxQjtBQUFBLEVBQ3ZELFNBQVMsQ0FBQyxDQUFDLE9BQU8sV0FBVyxPQUFPLFNBQVM7QUFDakQ7QUFDTyxJQUFNLHVCQUF1QjtBQUFBLEVBQ2hDLE9BQU8sQ0FBZ0IsdUJBQU8sc0JBQXNCLEdBQWtCLHVCQUFPLHFCQUFxQixDQUFDO0FBQUEsRUFDbkcsUUFBUSxDQUFnQix1QkFBTyxDQUFDLEdBQWtCLHVCQUFPLHNCQUFzQixDQUFDO0FBQ3BGO0FBQ08sU0FBUyxLQUFLLFFBQVEsTUFBTTtBQUMvQixRQUFNLFdBQVcsQ0FBQztBQUNsQixRQUFNLFVBQVUsT0FBTyxLQUFLO0FBQzVCLGFBQVcsT0FBTyxNQUFNO0FBQ3BCLFFBQUksRUFBRSxPQUFPLFFBQVEsUUFBUTtBQUN6QixZQUFNLElBQUksTUFBTSxzQkFBc0IsR0FBRyxHQUFHO0FBQUEsSUFDaEQ7QUFDQSxRQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1Q7QUFFSixhQUFTLEdBQUcsSUFBSSxRQUFRLE1BQU0sR0FBRztBQUFBLEVBQ3JDO0FBQ0EsU0FBTyxNQUFNLFFBQVE7QUFBQSxJQUNqQixHQUFHLE9BQU8sS0FBSztBQUFBLElBQ2YsT0FBTztBQUFBLElBQ1AsUUFBUSxDQUFDO0FBQUEsRUFDYixDQUFDO0FBQ0w7QUFDTyxTQUFTRCxNQUFLLFFBQVEsTUFBTTtBQUMvQixRQUFNLFdBQVcsRUFBRSxHQUFHLE9BQU8sS0FBSyxJQUFJLE1BQU07QUFDNUMsUUFBTSxVQUFVLE9BQU8sS0FBSztBQUM1QixhQUFXLE9BQU8sTUFBTTtBQUNwQixRQUFJLEVBQUUsT0FBTyxRQUFRLFFBQVE7QUFDekIsWUFBTSxJQUFJLE1BQU0sc0JBQXNCLEdBQUcsR0FBRztBQUFBLElBQ2hEO0FBQ0EsUUFBSSxDQUFDLEtBQUssR0FBRztBQUNUO0FBQ0osV0FBTyxTQUFTLEdBQUc7QUFBQSxFQUN2QjtBQUNBLFNBQU8sTUFBTSxRQUFRO0FBQUEsSUFDakIsR0FBRyxPQUFPLEtBQUs7QUFBQSxJQUNmLE9BQU87QUFBQSxJQUNQLFFBQVEsQ0FBQztBQUFBLEVBQ2IsQ0FBQztBQUNMO0FBQ08sU0FBUyxPQUFPLFFBQVEsT0FBTztBQUNsQyxNQUFJLENBQUNGLGVBQWMsS0FBSyxHQUFHO0FBQ3ZCLFVBQU0sSUFBSSxNQUFNLGtEQUFrRDtBQUFBLEVBQ3RFO0FBQ0EsUUFBTSxNQUFNO0FBQUEsSUFDUixHQUFHLE9BQU8sS0FBSztBQUFBLElBQ2YsSUFBSSxRQUFRO0FBQ1IsWUFBTSxTQUFTLEVBQUUsR0FBRyxPQUFPLEtBQUssSUFBSSxPQUFPLEdBQUcsTUFBTTtBQUNwRCxpQkFBVyxNQUFNLFNBQVMsTUFBTTtBQUNoQyxhQUFPO0FBQUEsSUFDWDtBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUE7QUFBQSxFQUNiO0FBQ0EsU0FBTyxNQUFNLFFBQVEsR0FBRztBQUM1QjtBQUNPLFNBQVNDLE9BQU0sR0FBR1ksSUFBRztBQUN4QixTQUFPLE1BQU0sR0FBRztBQUFBLElBQ1osR0FBRyxFQUFFLEtBQUs7QUFBQSxJQUNWLElBQUksUUFBUTtBQUNSLFlBQU0sU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUksT0FBTyxHQUFHQSxHQUFFLEtBQUssSUFBSSxNQUFNO0FBQzFELGlCQUFXLE1BQU0sU0FBUyxNQUFNO0FBQ2hDLGFBQU87QUFBQSxJQUNYO0FBQUEsSUFDQSxVQUFVQSxHQUFFLEtBQUssSUFBSTtBQUFBLElBQ3JCLFFBQVEsQ0FBQztBQUFBO0FBQUEsRUFDYixDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFDLFFBQU8sUUFBUSxNQUFNO0FBQ3pDLFFBQU0sV0FBVyxPQUFPLEtBQUssSUFBSTtBQUNqQyxRQUFNLFFBQVEsRUFBRSxHQUFHLFNBQVM7QUFDNUIsTUFBSSxNQUFNO0FBQ04sZUFBVyxPQUFPLE1BQU07QUFDcEIsVUFBSSxFQUFFLE9BQU8sV0FBVztBQUNwQixjQUFNLElBQUksTUFBTSxzQkFBc0IsR0FBRyxHQUFHO0FBQUEsTUFDaEQ7QUFDQSxVQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1Q7QUFFSixZQUFNLEdBQUcsSUFBSUEsU0FDUCxJQUFJQSxPQUFNO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixXQUFXLFNBQVMsR0FBRztBQUFBLE1BQzNCLENBQUMsSUFDQyxTQUFTLEdBQUc7QUFBQSxJQUN0QjtBQUFBLEVBQ0osT0FDSztBQUNELGVBQVcsT0FBTyxVQUFVO0FBRXhCLFlBQU0sR0FBRyxJQUFJQSxTQUNQLElBQUlBLE9BQU07QUFBQSxRQUNSLE1BQU07QUFBQSxRQUNOLFdBQVcsU0FBUyxHQUFHO0FBQUEsTUFDM0IsQ0FBQyxJQUNDLFNBQVMsR0FBRztBQUFBLElBQ3RCO0FBQUEsRUFDSjtBQUNBLFNBQU8sTUFBTSxRQUFRO0FBQUEsSUFDakIsR0FBRyxPQUFPLEtBQUs7QUFBQSxJQUNmO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNiLENBQUM7QUFDTDtBQUNPLFNBQVMsU0FBU0EsUUFBTyxRQUFRLE1BQU07QUFDMUMsUUFBTSxXQUFXLE9BQU8sS0FBSyxJQUFJO0FBQ2pDLFFBQU0sUUFBUSxFQUFFLEdBQUcsU0FBUztBQUM1QixNQUFJLE1BQU07QUFDTixlQUFXLE9BQU8sTUFBTTtBQUNwQixVQUFJLEVBQUUsT0FBTyxRQUFRO0FBQ2pCLGNBQU0sSUFBSSxNQUFNLHNCQUFzQixHQUFHLEdBQUc7QUFBQSxNQUNoRDtBQUNBLFVBQUksQ0FBQyxLQUFLLEdBQUc7QUFDVDtBQUVKLFlBQU0sR0FBRyxJQUFJLElBQUlBLE9BQU07QUFBQSxRQUNuQixNQUFNO0FBQUEsUUFDTixXQUFXLFNBQVMsR0FBRztBQUFBLE1BQzNCLENBQUM7QUFBQSxJQUNMO0FBQUEsRUFDSixPQUNLO0FBQ0QsZUFBVyxPQUFPLFVBQVU7QUFFeEIsWUFBTSxHQUFHLElBQUksSUFBSUEsT0FBTTtBQUFBLFFBQ25CLE1BQU07QUFBQSxRQUNOLFdBQVcsU0FBUyxHQUFHO0FBQUEsTUFDM0IsQ0FBQztBQUFBLElBQ0w7QUFBQSxFQUNKO0FBQ0EsU0FBTyxNQUFNLFFBQVE7QUFBQSxJQUNqQixHQUFHLE9BQU8sS0FBSztBQUFBLElBQ2Y7QUFBQTtBQUFBLElBRUEsUUFBUSxDQUFDO0FBQUEsRUFDYixDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFDLElBQUcsYUFBYSxHQUFHO0FBQ3ZDLFdBQVMsSUFBSSxZQUFZLElBQUlBLEdBQUUsT0FBTyxRQUFRLEtBQUs7QUFDL0MsUUFBSUEsR0FBRSxPQUFPLENBQUMsR0FBRyxhQUFhO0FBQzFCLGFBQU87QUFBQSxFQUNmO0FBQ0EsU0FBTztBQUNYO0FBQ08sU0FBUyxhQUFhUCxPQUFNLFFBQVE7QUFDdkMsU0FBTyxPQUFPLElBQUksQ0FBQyxRQUFRO0FBQ3ZCLFFBQUk7QUFDSixLQUFDLEtBQUssS0FBSyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFFBQUksS0FBSyxRQUFRQSxLQUFJO0FBQ3JCLFdBQU87QUFBQSxFQUNYLENBQUM7QUFDTDtBQUNPLFNBQVMsY0FBYyxTQUFTO0FBQ25DLFNBQU8sT0FBTyxZQUFZLFdBQVcsVUFBVSxTQUFTO0FBQzVEO0FBQ08sU0FBUyxjQUFjLEtBQUssS0FBS1EsU0FBUTtBQUM1QyxRQUFNLE9BQU8sRUFBRSxHQUFHLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxFQUFFO0FBRTVDLE1BQUksQ0FBQyxJQUFJLFNBQVM7QUFDZCxVQUFNLFVBQVUsY0FBYyxJQUFJLE1BQU0sS0FBSyxLQUFLLFFBQVEsR0FBRyxDQUFDLEtBQzFELGNBQWMsS0FBSyxRQUFRLEdBQUcsQ0FBQyxLQUMvQixjQUFjQSxRQUFPLGNBQWMsR0FBRyxDQUFDLEtBQ3ZDLGNBQWNBLFFBQU8sY0FBYyxHQUFHLENBQUMsS0FDdkM7QUFDSixTQUFLLFVBQVU7QUFBQSxFQUNuQjtBQUVBLFNBQU8sS0FBSztBQUNaLFNBQU8sS0FBSztBQUNaLE1BQUksQ0FBQyxLQUFLLGFBQWE7QUFDbkIsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFDQSxTQUFPO0FBQ1g7QUFDTyxTQUFTLGlCQUFpQixPQUFPO0FBQ3BDLE1BQUksaUJBQWlCO0FBQ2pCLFdBQU87QUFDWCxNQUFJLGlCQUFpQjtBQUNqQixXQUFPO0FBQ1gsTUFBSSxpQkFBaUI7QUFDakIsV0FBTztBQUNYLFNBQU87QUFDWDtBQUNPLFNBQVMsb0JBQW9CLE9BQU87QUFDdkMsTUFBSSxNQUFNLFFBQVEsS0FBSztBQUNuQixXQUFPO0FBQ1gsTUFBSSxPQUFPLFVBQVU7QUFDakIsV0FBTztBQUNYLFNBQU87QUFDWDtBQUNPLFNBQVMsU0FBUyxNQUFNO0FBQzNCLFFBQU0sQ0FBQyxLQUFLLE9BQU8sSUFBSSxJQUFJO0FBQzNCLE1BQUksT0FBTyxRQUFRLFVBQVU7QUFDekIsV0FBTztBQUFBLE1BQ0gsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ047QUFBQSxNQUNBO0FBQUEsSUFDSjtBQUFBLEVBQ0o7QUFDQSxTQUFPLEVBQUUsR0FBRyxJQUFJO0FBQ3BCO0FBQ08sU0FBUyxVQUFVLEtBQUs7QUFDM0IsU0FBTyxPQUFPLFFBQVEsR0FBRyxFQUNwQixPQUFPLENBQUMsQ0FBQyxHQUFHYixFQUFDLE1BQU07QUFFcEIsV0FBTyxPQUFPLE1BQU0sT0FBTyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQUEsRUFDOUMsQ0FBQyxFQUNJLElBQUksQ0FBQ2MsUUFBT0EsSUFBRyxDQUFDLENBQUM7QUFDMUI7QUFFTyxJQUFNLFFBQU4sTUFBWTtBQUFBLEVBQ2YsZUFBZSxPQUFPO0FBQUEsRUFBRTtBQUM1Qjs7O0FDMWVBLElBQU0sY0FBYyxDQUFDLE1BQU0sUUFBUTtBQUMvQixPQUFLLE9BQU87QUFDWixTQUFPLGVBQWUsTUFBTSxRQUFRO0FBQUEsSUFDaEMsT0FBTyxLQUFLO0FBQUEsSUFDWixZQUFZO0FBQUEsRUFDaEIsQ0FBQztBQUNELFNBQU8sZUFBZSxNQUFNLFVBQVU7QUFBQSxJQUNsQyxPQUFPO0FBQUEsSUFDUCxZQUFZO0FBQUEsRUFDaEIsQ0FBQztBQUNELFNBQU8sZUFBZSxNQUFNLFdBQVc7QUFBQSxJQUNuQyxNQUFNO0FBQ0YsYUFBTyxLQUFLLFVBQVUsS0FBVSx1QkFBdUIsQ0FBQztBQUFBLElBQzVEO0FBQUEsSUFDQSxZQUFZO0FBQUE7QUFBQSxFQUVoQixDQUFDO0FBQ0QsU0FBTyxlQUFlLE1BQU0sWUFBWTtBQUFBLElBQ3BDLE9BQU8sTUFBTSxLQUFLO0FBQUEsSUFDbEIsWUFBWTtBQUFBLEVBQ2hCLENBQUM7QUFDTDtBQUNPLElBQU0sWUFBWSxhQUFhLGFBQWEsV0FBVztBQUN2RCxJQUFNLGdCQUFnQixhQUFhLGFBQWEsYUFBYSxFQUFFLFFBQVEsTUFBTSxDQUFDO0FBQzlFLFNBQVMsYUFBYUMsUUFBTyxTQUFTLENBQUNDLFdBQVVBLE9BQU0sU0FBUztBQUNuRSxRQUFNLGNBQWMsQ0FBQztBQUNyQixRQUFNLGFBQWEsQ0FBQztBQUNwQixhQUFXLE9BQU9ELE9BQU0sUUFBUTtBQUM1QixRQUFJLElBQUksS0FBSyxTQUFTLEdBQUc7QUFDckIsa0JBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDeEQsa0JBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxHQUFHLENBQUM7QUFBQSxJQUM3QyxPQUNLO0FBQ0QsaUJBQVcsS0FBSyxPQUFPLEdBQUcsQ0FBQztBQUFBLElBQy9CO0FBQUEsRUFDSjtBQUNBLFNBQU8sRUFBRSxZQUFZLFlBQVk7QUFDckM7QUFDTyxTQUFTLFlBQVlBLFFBQU8sU0FBUztBQUN4QyxRQUFNLFNBQVMsV0FDWCxTQUFVQyxRQUFPO0FBQ2IsV0FBT0EsT0FBTTtBQUFBLEVBQ2pCO0FBQ0osUUFBTSxjQUFjLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDbEMsUUFBTSxlQUFlLENBQUNELFdBQVU7QUFDNUIsZUFBV0MsVUFBU0QsT0FBTSxRQUFRO0FBQzlCLFVBQUlDLE9BQU0sU0FBUyxtQkFBbUJBLE9BQU0sT0FBTyxRQUFRO0FBQ3ZELFFBQUFBLE9BQU0sT0FBTyxJQUFJLENBQUMsV0FBVyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUN6RCxXQUNTQSxPQUFNLFNBQVMsZUFBZTtBQUNuQyxxQkFBYSxFQUFFLFFBQVFBLE9BQU0sT0FBTyxDQUFDO0FBQUEsTUFDekMsV0FDU0EsT0FBTSxTQUFTLG1CQUFtQjtBQUN2QyxxQkFBYSxFQUFFLFFBQVFBLE9BQU0sT0FBTyxDQUFDO0FBQUEsTUFDekMsV0FDU0EsT0FBTSxLQUFLLFdBQVcsR0FBRztBQUM5QixvQkFBWSxRQUFRLEtBQUssT0FBT0EsTUFBSyxDQUFDO0FBQUEsTUFDMUMsT0FDSztBQUNELFlBQUksT0FBTztBQUNYLFlBQUksSUFBSTtBQUNSLGVBQU8sSUFBSUEsT0FBTSxLQUFLLFFBQVE7QUFDMUIsZ0JBQU1DLE1BQUtELE9BQU0sS0FBSyxDQUFDO0FBQ3ZCLGdCQUFNLFdBQVcsTUFBTUEsT0FBTSxLQUFLLFNBQVM7QUFDM0MsY0FBSSxDQUFDLFVBQVU7QUFDWCxpQkFBS0MsR0FBRSxJQUFJLEtBQUtBLEdBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQUEsVUFDekMsT0FDSztBQUNELGlCQUFLQSxHQUFFLElBQUksS0FBS0EsR0FBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDckMsaUJBQUtBLEdBQUUsRUFBRSxRQUFRLEtBQUssT0FBT0QsTUFBSyxDQUFDO0FBQUEsVUFDdkM7QUFDQSxpQkFBTyxLQUFLQyxHQUFFO0FBQ2Q7QUFBQSxRQUNKO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0EsZUFBYUYsTUFBSztBQUNsQixTQUFPO0FBQ1g7OztBQzlFTyxJQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxPQUFPLE1BQU0sWUFBWTtBQUM5RCxRQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sTUFBTSxFQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLE1BQU07QUFDMUUsUUFBTSxTQUFTLE9BQU8sS0FBSyxJQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDekQsTUFBSSxrQkFBa0IsU0FBUztBQUMzQixVQUFNLElBQVMsZUFBZTtBQUFBLEVBQ2xDO0FBQ0EsTUFBSSxPQUFPLE9BQU8sUUFBUTtBQUN0QixVQUFNRyxLQUFJLEtBQUssU0FBUyxPQUFPLE1BQU0sT0FBTyxPQUFPLElBQUksQ0FBQyxRQUFhLGNBQWMsS0FBSyxLQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUcsSUFBSyxrQkFBa0JBLElBQUcsU0FBUyxNQUFNO0FBQ3pDLFVBQU1BO0FBQUEsRUFDVjtBQUNBLFNBQU8sT0FBTztBQUNsQjtBQUNPLElBQU1DLFNBQXVCLHVCQUFjLGFBQWE7QUFDeEQsSUFBTSxjQUFjLENBQUMsU0FBUyxPQUFPLFFBQVEsT0FBTyxNQUFNLFdBQVc7QUFDeEUsUUFBTSxNQUFNLE9BQU8sT0FBTyxPQUFPLE1BQU0sRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLO0FBQ3hFLE1BQUksU0FBUyxPQUFPLEtBQUssSUFBSSxFQUFFLE9BQU8sUUFBUSxDQUFDLEVBQUUsR0FBRyxHQUFHO0FBQ3ZELE1BQUksa0JBQWtCO0FBQ2xCLGFBQVMsTUFBTTtBQUNuQixNQUFJLE9BQU8sT0FBTyxRQUFRO0FBQ3RCLFVBQU1ELEtBQUksS0FBSyxRQUFRLE9BQU8sTUFBTSxPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQWEsY0FBYyxLQUFLLEtBQVUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMzRyxJQUFLLGtCQUFrQkEsSUFBRyxRQUFRLE1BQU07QUFDeEMsVUFBTUE7QUFBQSxFQUNWO0FBQ0EsU0FBTyxPQUFPO0FBQ2xCO0FBQ08sSUFBTSxhQUE0Qiw0QkFBbUIsYUFBYTtBQUNsRSxJQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxPQUFPLFNBQVM7QUFDekQsUUFBTSxNQUFNLE9BQU8sRUFBRSxHQUFHLE1BQU0sT0FBTyxNQUFNLElBQUksRUFBRSxPQUFPLE1BQU07QUFDOUQsUUFBTSxTQUFTLE9BQU8sS0FBSyxJQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDekQsTUFBSSxrQkFBa0IsU0FBUztBQUMzQixVQUFNLElBQVMsZUFBZTtBQUFBLEVBQ2xDO0FBQ0EsU0FBTyxPQUFPLE9BQU8sU0FDZjtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsT0FBTyxLQUFLLFFBQWUsV0FBVyxPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQWEsY0FBYyxLQUFLLEtBQVUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFBLEVBQ2pILElBQ0UsRUFBRSxTQUFTLE1BQU0sTUFBTSxPQUFPLE1BQU07QUFDOUM7QUFDTyxJQUFNRSxhQUEyQiwyQkFBa0IsYUFBYTtBQUNoRSxJQUFNLGtCQUFrQixDQUFDLFNBQVMsT0FBTyxRQUFRLE9BQU8sU0FBUztBQUNwRSxRQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sTUFBTSxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEtBQUs7QUFDeEUsTUFBSSxTQUFTLE9BQU8sS0FBSyxJQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDdkQsTUFBSSxrQkFBa0I7QUFDbEIsYUFBUyxNQUFNO0FBQ25CLFNBQU8sT0FBTyxPQUFPLFNBQ2Y7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULE9BQU8sSUFBSSxLQUFLLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBYSxjQUFjLEtBQUssS0FBVSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDM0YsSUFDRSxFQUFFLFNBQVMsTUFBTSxNQUFNLE9BQU8sTUFBTTtBQUM5QztBQUNPLElBQU0saUJBQWdDLGdDQUF1QixhQUFhOzs7QUN4RDFFLElBQU0sT0FBTztBQUNiLElBQU0sUUFBUTtBQUNkLElBQU0sT0FBTztBQUNiLElBQU0sTUFBTTtBQUNaLElBQU0sUUFBUTtBQUNkLElBQU0sU0FBUztBQUVmLElBQU0sV0FBVztBQUlqQixJQUFNLE9BQU87QUFJYixJQUFNLE9BQU8sQ0FBQ0MsYUFBWTtBQUM3QixNQUFJLENBQUNBO0FBQ0QsV0FBTztBQUNYLFNBQU8sSUFBSSxPQUFPLG1DQUFtQ0EsUUFBTyx5REFBeUQ7QUFDekg7QUFLTyxJQUFNLFFBQVE7QUFTZCxJQUFNLFNBQVM7QUFDZixTQUFTLFFBQVE7QUFDcEIsU0FBTyxJQUFJLE9BQU8sUUFBUSxHQUFHO0FBQ2pDO0FBQ08sSUFBTSxPQUFPO0FBQ2IsSUFBTSxPQUFPO0FBQ2IsSUFBTSxTQUFTO0FBQ2YsSUFBTSxTQUFTO0FBRWYsSUFBTSxTQUFTO0FBQ2YsSUFBTSxZQUFZO0FBSWxCLElBQU0sV0FBVztBQUdqQixJQUFNLE9BQU87QUFFcEIsSUFBTSxhQUFhO0FBQ1osSUFBTSxPQUFxQixvQkFBSSxPQUFPLElBQUksVUFBVSxHQUFHO0FBQzlELFNBQVMsV0FBVyxNQUFNO0FBQ3RCLFFBQU0sT0FBTztBQUNiLFFBQU0sUUFBUSxPQUFPLEtBQUssY0FBYyxXQUNsQyxLQUFLLGNBQWMsS0FDZixHQUFHLElBQUksS0FDUCxLQUFLLGNBQWMsSUFDZixHQUFHLElBQUksY0FDUCxHQUFHLElBQUksbUJBQW1CLEtBQUssU0FBUyxNQUNoRCxHQUFHLElBQUk7QUFDYixTQUFPO0FBQ1g7QUFDTyxTQUFTLEtBQUssTUFBTTtBQUN2QixTQUFPLElBQUksT0FBTyxJQUFJLFdBQVcsSUFBSSxDQUFDLEdBQUc7QUFDN0M7QUFFTyxTQUFTLFNBQVMsTUFBTTtBQUMzQixRQUFNQyxRQUFPLFdBQVcsRUFBRSxXQUFXLEtBQUssVUFBVSxDQUFDO0FBQ3JELFFBQU0sT0FBTyxDQUFDLEdBQUc7QUFDakIsTUFBSSxLQUFLO0FBQ0wsU0FBSyxLQUFLLEVBQUU7QUFDaEIsTUFBSSxLQUFLO0FBQ0wsU0FBSyxLQUFLLHFCQUFxQjtBQUNuQyxRQUFNQyxhQUFZLEdBQUdELEtBQUksTUFBTSxLQUFLLEtBQUssR0FBRyxDQUFDO0FBQzdDLFNBQU8sSUFBSSxPQUFPLElBQUksVUFBVSxPQUFPQyxVQUFTLElBQUk7QUFDeEQ7QUFDTyxJQUFNLFNBQVMsQ0FBQyxXQUFXO0FBQzlCLFFBQU0sUUFBUSxTQUFTLFlBQVksUUFBUSxXQUFXLENBQUMsSUFBSSxRQUFRLFdBQVcsRUFBRSxNQUFNO0FBQ3RGLFNBQU8sSUFBSSxPQUFPLElBQUksS0FBSyxHQUFHO0FBQ2xDO0FBRU8sSUFBTSxVQUFVO0FBQ2hCLElBQU0sU0FBUztBQUNmLElBQU0sVUFBVTtBQUN2QixJQUFNLFFBQVE7QUFLUCxJQUFNLFlBQVk7QUFFbEIsSUFBTSxZQUFZOzs7QUMxRmxCLElBQU0sWUFBMEIsZ0JBQUssYUFBYSxhQUFhLENBQUMsTUFBTSxRQUFRO0FBQ2pGLE1BQUk7QUFDSixPQUFLLFNBQVMsS0FBSyxPQUFPLENBQUM7QUFDM0IsT0FBSyxLQUFLLE1BQU07QUFDaEIsR0FBQyxLQUFLLEtBQUssTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ2pELENBQUM7QUFDRCxJQUFNLG1CQUFtQjtBQUFBLEVBQ3JCLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFDWjtBQUNPLElBQU0sb0JBQWtDLGdCQUFLLGFBQWEscUJBQXFCLENBQUMsTUFBTSxRQUFRO0FBQ2pHLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsUUFBTSxTQUFTLGlCQUFpQixPQUFPLElBQUksS0FBSztBQUNoRCxPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNDLFVBQVM7QUFDOUIsVUFBTSxNQUFNQSxNQUFLLEtBQUs7QUFDdEIsVUFBTSxRQUFRLElBQUksWUFBWSxJQUFJLFVBQVUsSUFBSSxxQkFBcUIsT0FBTztBQUM1RSxRQUFJLElBQUksUUFBUSxNQUFNO0FBQ2xCLFVBQUksSUFBSTtBQUNKLFlBQUksVUFBVSxJQUFJO0FBQUE7QUFFbEIsWUFBSSxtQkFBbUIsSUFBSTtBQUFBLElBQ25DO0FBQUEsRUFDSixDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFFBQUksSUFBSSxZQUFZLFFBQVEsU0FBUyxJQUFJLFFBQVEsUUFBUSxRQUFRLElBQUksT0FBTztBQUN4RTtBQUFBLElBQ0o7QUFDQSxZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxNQUFNO0FBQUEsTUFDTixTQUFTLElBQUk7QUFBQSxNQUNiLE9BQU8sUUFBUTtBQUFBLE1BQ2YsV0FBVyxJQUFJO0FBQUEsTUFDZjtBQUFBLE1BQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDTDtBQUNKLENBQUM7QUFDTSxJQUFNLHVCQUFxQyxnQkFBSyxhQUFhLHdCQUF3QixDQUFDLE1BQU0sUUFBUTtBQUN2RyxZQUFVLEtBQUssTUFBTSxHQUFHO0FBQ3hCLFFBQU0sU0FBUyxpQkFBaUIsT0FBTyxJQUFJLEtBQUs7QUFDaEQsT0FBSyxLQUFLLFNBQVMsS0FBSyxDQUFDQSxVQUFTO0FBQzlCLFVBQU0sTUFBTUEsTUFBSyxLQUFLO0FBQ3RCLFVBQU0sUUFBUSxJQUFJLFlBQVksSUFBSSxVQUFVLElBQUkscUJBQXFCLE9BQU87QUFDNUUsUUFBSSxJQUFJLFFBQVEsTUFBTTtBQUNsQixVQUFJLElBQUk7QUFDSixZQUFJLFVBQVUsSUFBSTtBQUFBO0FBRWxCLFlBQUksbUJBQW1CLElBQUk7QUFBQSxJQUNuQztBQUFBLEVBQ0osQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixRQUFJLElBQUksWUFBWSxRQUFRLFNBQVMsSUFBSSxRQUFRLFFBQVEsUUFBUSxJQUFJLE9BQU87QUFDeEU7QUFBQSxJQUNKO0FBQ0EsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsTUFBTTtBQUFBLE1BQ04sU0FBUyxJQUFJO0FBQUEsTUFDYixPQUFPLFFBQVE7QUFBQSxNQUNmLFdBQVcsSUFBSTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSxzQkFDQyxnQkFBSyxhQUFhLHVCQUF1QixDQUFDLE1BQU0sUUFBUTtBQUNsRSxZQUFVLEtBQUssTUFBTSxHQUFHO0FBQ3hCLE9BQUssS0FBSyxTQUFTLEtBQUssQ0FBQ0EsVUFBUztBQUM5QixRQUFJO0FBQ0osS0FBQyxLQUFLQSxNQUFLLEtBQUssS0FBSyxlQUFlLEdBQUcsYUFBYSxJQUFJO0FBQUEsRUFDNUQsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixRQUFJLE9BQU8sUUFBUSxVQUFVLE9BQU8sSUFBSTtBQUNwQyxZQUFNLElBQUksTUFBTSxvREFBb0Q7QUFDeEUsVUFBTSxhQUFhLE9BQU8sUUFBUSxVQUFVLFdBQ3RDLFFBQVEsUUFBUSxJQUFJLFVBQVUsT0FBTyxDQUFDLElBQ2pDQyxvQkFBbUIsUUFBUSxPQUFPLElBQUksS0FBSyxNQUFNO0FBQzVELFFBQUk7QUFDQTtBQUNKLFlBQVEsT0FBTyxLQUFLO0FBQUEsTUFDaEIsUUFBUSxPQUFPLFFBQVE7QUFBQSxNQUN2QixNQUFNO0FBQUEsTUFDTixTQUFTLElBQUk7QUFBQSxNQUNiLE9BQU8sUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSx3QkFBc0MsZ0JBQUssYUFBYSx5QkFBeUIsQ0FBQyxNQUFNLFFBQVE7QUFDekcsWUFBVSxLQUFLLE1BQU0sR0FBRztBQUN4QixNQUFJLFNBQVMsSUFBSSxVQUFVO0FBQzNCLFFBQU0sUUFBUSxJQUFJLFFBQVEsU0FBUyxLQUFLO0FBQ3hDLFFBQU0sU0FBUyxRQUFRLFFBQVE7QUFDL0IsUUFBTSxDQUFDLFNBQVMsT0FBTyxJQUFTLHFCQUFxQixJQUFJLE1BQU07QUFDL0QsT0FBSyxLQUFLLFNBQVMsS0FBSyxDQUFDRCxVQUFTO0FBQzlCLFVBQU0sTUFBTUEsTUFBSyxLQUFLO0FBQ3RCLFFBQUksU0FBUyxJQUFJO0FBQ2pCLFFBQUksVUFBVTtBQUNkLFFBQUksVUFBVTtBQUNkLFFBQUk7QUFDQSxVQUFJLFVBQWtCO0FBQUEsRUFDOUIsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLE9BQU87QUFDUCxVQUFJLENBQUMsT0FBTyxVQUFVLEtBQUssR0FBRztBQVUxQixnQkFBUSxPQUFPLEtBQUs7QUFBQSxVQUNoQixVQUFVO0FBQUEsVUFDVixRQUFRLElBQUk7QUFBQSxVQUNaLE1BQU07QUFBQSxVQUNOO0FBQUEsVUFDQTtBQUFBLFFBQ0osQ0FBQztBQUNEO0FBQUEsTUFTSjtBQUNBLFVBQUksQ0FBQyxPQUFPLGNBQWMsS0FBSyxHQUFHO0FBQzlCLFlBQUksUUFBUSxHQUFHO0FBRVgsa0JBQVEsT0FBTyxLQUFLO0FBQUEsWUFDaEI7QUFBQSxZQUNBLE1BQU07QUFBQSxZQUNOLFNBQVMsT0FBTztBQUFBLFlBQ2hCLE1BQU07QUFBQSxZQUNOO0FBQUEsWUFDQTtBQUFBLFlBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxVQUNuQixDQUFDO0FBQUEsUUFDTCxPQUNLO0FBRUQsa0JBQVEsT0FBTyxLQUFLO0FBQUEsWUFDaEI7QUFBQSxZQUNBLE1BQU07QUFBQSxZQUNOLFNBQVMsT0FBTztBQUFBLFlBQ2hCLE1BQU07QUFBQSxZQUNOO0FBQUEsWUFDQTtBQUFBLFlBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxVQUNuQixDQUFDO0FBQUEsUUFDTDtBQUNBO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFDQSxRQUFJLFFBQVEsU0FBUztBQUNqQixjQUFRLE9BQU8sS0FBSztBQUFBLFFBQ2hCLFFBQVE7QUFBQSxRQUNSO0FBQUEsUUFDQSxNQUFNO0FBQUEsUUFDTjtBQUFBLFFBQ0EsV0FBVztBQUFBLFFBQ1g7QUFBQSxRQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsTUFDbkIsQ0FBQztBQUFBLElBQ0w7QUFDQSxRQUFJLFFBQVEsU0FBUztBQUNqQixjQUFRLE9BQU8sS0FBSztBQUFBLFFBQ2hCLFFBQVE7QUFBQSxRQUNSO0FBQUEsUUFDQSxNQUFNO0FBQUEsUUFDTjtBQUFBLFFBQ0E7QUFBQSxNQUNKLENBQUM7QUFBQSxJQUNMO0FBQUEsRUFDSjtBQUNKLENBQUM7QUFzSE0sSUFBTSxxQkFBbUMsZ0JBQUssYUFBYSxzQkFBc0IsQ0FBQyxNQUFNLFFBQVE7QUFDbkcsTUFBSTtBQUNKLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsR0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWTtBQUNqRCxVQUFNLE1BQU0sUUFBUTtBQUNwQixXQUFPLENBQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxXQUFXO0FBQUEsRUFDaEQ7QUFDQSxPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNFLFVBQVM7QUFDOUIsVUFBTSxPQUFRQSxNQUFLLEtBQUssSUFBSSxXQUFXLE9BQU87QUFDOUMsUUFBSSxJQUFJLFVBQVU7QUFDZCxNQUFBQSxNQUFLLEtBQUssSUFBSSxVQUFVLElBQUk7QUFBQSxFQUNwQyxDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sU0FBUyxNQUFNO0FBQ3JCLFFBQUksVUFBVSxJQUFJO0FBQ2Q7QUFDSixVQUFNLFNBQWMsb0JBQW9CLEtBQUs7QUFDN0MsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsTUFBTTtBQUFBLE1BQ04sU0FBUyxJQUFJO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWDtBQUFBLE1BQ0E7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSxxQkFBbUMsZ0JBQUssYUFBYSxzQkFBc0IsQ0FBQyxNQUFNLFFBQVE7QUFDbkcsTUFBSTtBQUNKLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsR0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWTtBQUNqRCxVQUFNLE1BQU0sUUFBUTtBQUNwQixXQUFPLENBQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxXQUFXO0FBQUEsRUFDaEQ7QUFDQSxPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNBLFVBQVM7QUFDOUIsVUFBTSxPQUFRQSxNQUFLLEtBQUssSUFBSSxXQUFXLE9BQU87QUFDOUMsUUFBSSxJQUFJLFVBQVU7QUFDZCxNQUFBQSxNQUFLLEtBQUssSUFBSSxVQUFVLElBQUk7QUFBQSxFQUNwQyxDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sU0FBUyxNQUFNO0FBQ3JCLFFBQUksVUFBVSxJQUFJO0FBQ2Q7QUFDSixVQUFNLFNBQWMsb0JBQW9CLEtBQUs7QUFDN0MsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsTUFBTTtBQUFBLE1BQ04sU0FBUyxJQUFJO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWDtBQUFBLE1BQ0E7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSx3QkFBc0MsZ0JBQUssYUFBYSx5QkFBeUIsQ0FBQyxNQUFNLFFBQVE7QUFDekcsTUFBSTtBQUNKLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsR0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWTtBQUNqRCxVQUFNLE1BQU0sUUFBUTtBQUNwQixXQUFPLENBQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxXQUFXO0FBQUEsRUFDaEQ7QUFDQSxPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNBLFVBQVM7QUFDOUIsVUFBTSxNQUFNQSxNQUFLLEtBQUs7QUFDdEIsUUFBSSxVQUFVLElBQUk7QUFDbEIsUUFBSSxVQUFVLElBQUk7QUFDbEIsUUFBSSxTQUFTLElBQUk7QUFBQSxFQUNyQixDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sU0FBUyxNQUFNO0FBQ3JCLFFBQUksV0FBVyxJQUFJO0FBQ2Y7QUFDSixVQUFNLFNBQWMsb0JBQW9CLEtBQUs7QUFDN0MsVUFBTSxTQUFTLFNBQVMsSUFBSTtBQUM1QixZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxHQUFJLFNBQVMsRUFBRSxNQUFNLFdBQVcsU0FBUyxJQUFJLE9BQU8sSUFBSSxFQUFFLE1BQU0sYUFBYSxTQUFTLElBQUksT0FBTztBQUFBLE1BQ2pHLFdBQVc7QUFBQSxNQUNYLE9BQU87QUFBQSxNQUNQLE9BQU8sUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSx3QkFBc0MsZ0JBQUssYUFBYSx5QkFBeUIsQ0FBQyxNQUFNLFFBQVE7QUFDekcsTUFBSSxJQUFJQztBQUNSLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsT0FBSyxLQUFLLFNBQVMsS0FBSyxDQUFDRCxVQUFTO0FBQzlCLFVBQU0sTUFBTUEsTUFBSyxLQUFLO0FBQ3RCLFFBQUksU0FBUyxJQUFJO0FBQ2pCLFFBQUksSUFBSSxTQUFTO0FBQ2IsVUFBSSxhQUFhLElBQUksV0FBVyxvQkFBSSxJQUFJO0FBQ3hDLFVBQUksU0FBUyxJQUFJLElBQUksT0FBTztBQUFBLElBQ2hDO0FBQUEsRUFDSixDQUFDO0FBQ0QsTUFBSSxJQUFJO0FBQ0osS0FBQyxLQUFLLEtBQUssTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVk7QUFDL0MsVUFBSSxRQUFRLFlBQVk7QUFDeEIsVUFBSSxJQUFJLFFBQVEsS0FBSyxRQUFRLEtBQUs7QUFDOUI7QUFDSixjQUFRLE9BQU8sS0FBSztBQUFBLFFBQ2hCLFFBQVE7QUFBQSxRQUNSLE1BQU07QUFBQSxRQUNOLFFBQVEsSUFBSTtBQUFBLFFBQ1osT0FBTyxRQUFRO0FBQUEsUUFDZixHQUFJLElBQUksVUFBVSxFQUFFLFNBQVMsSUFBSSxRQUFRLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFBQSxRQUN6RDtBQUFBLFFBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxNQUNuQixDQUFDO0FBQUEsSUFDTDtBQUFBO0FBRUEsS0FBQ0MsTUFBSyxLQUFLLE1BQU0sVUFBVUEsSUFBRyxRQUFRLE1BQU07QUFBQSxJQUFFO0FBQ3RELENBQUM7QUFDTSxJQUFNLGlCQUErQixnQkFBSyxhQUFhLGtCQUFrQixDQUFDLE1BQU0sUUFBUTtBQUMzRix3QkFBc0IsS0FBSyxNQUFNLEdBQUc7QUFDcEMsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFFBQUksUUFBUSxZQUFZO0FBQ3hCLFFBQUksSUFBSSxRQUFRLEtBQUssUUFBUSxLQUFLO0FBQzlCO0FBQ0osWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixPQUFPLFFBQVE7QUFBQSxNQUNmLFNBQVMsSUFBSSxRQUFRLFNBQVM7QUFBQSxNQUM5QjtBQUFBLE1BQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDTDtBQUNKLENBQUM7QUFDTSxJQUFNLHFCQUFtQyxnQkFBSyxhQUFhLHNCQUFzQixDQUFDLE1BQU0sUUFBUTtBQUNuRyxNQUFJLFlBQVksSUFBSSxVQUFrQjtBQUN0Qyx3QkFBc0IsS0FBSyxNQUFNLEdBQUc7QUFDeEMsQ0FBQztBQUNNLElBQU0scUJBQW1DLGdCQUFLLGFBQWEsc0JBQXNCLENBQUMsTUFBTSxRQUFRO0FBQ25HLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLHdCQUFzQixLQUFLLE1BQU0sR0FBRztBQUN4QyxDQUFDO0FBQ00sSUFBTSxvQkFBa0MsZ0JBQUssYUFBYSxxQkFBcUIsQ0FBQyxNQUFNLFFBQVE7QUFDakcsWUFBVSxLQUFLLE1BQU0sR0FBRztBQUN4QixRQUFNLGVBQW9CLFlBQVksSUFBSSxRQUFRO0FBQ2xELFFBQU0sVUFBVSxJQUFJLE9BQU8sT0FBTyxJQUFJLGFBQWEsV0FBVyxNQUFNLElBQUksUUFBUSxJQUFJLFlBQVksS0FBSyxZQUFZO0FBQ2pILE1BQUksVUFBVTtBQUNkLE9BQUssS0FBSyxTQUFTLEtBQUssQ0FBQ0QsVUFBUztBQUM5QixVQUFNLE1BQU1BLE1BQUssS0FBSztBQUN0QixRQUFJLGFBQWEsSUFBSSxXQUFXLG9CQUFJLElBQUk7QUFDeEMsUUFBSSxTQUFTLElBQUksT0FBTztBQUFBLEVBQzVCLENBQUM7QUFDRCxPQUFLLEtBQUssUUFBUSxDQUFDLFlBQVk7QUFDM0IsUUFBSSxRQUFRLE1BQU0sU0FBUyxJQUFJLFVBQVUsSUFBSSxRQUFRO0FBQ2pEO0FBQ0osWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixVQUFVLElBQUk7QUFBQSxNQUNkLE9BQU8sUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSxzQkFBb0MsZ0JBQUssYUFBYSx1QkFBdUIsQ0FBQyxNQUFNLFFBQVE7QUFDckcsWUFBVSxLQUFLLE1BQU0sR0FBRztBQUN4QixRQUFNLFVBQVUsSUFBSSxPQUFPLElBQVMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJO0FBQy9ELE1BQUksWUFBWSxJQUFJLFVBQVU7QUFDOUIsT0FBSyxLQUFLLFNBQVMsS0FBSyxDQUFDQSxVQUFTO0FBQzlCLFVBQU0sTUFBTUEsTUFBSyxLQUFLO0FBQ3RCLFFBQUksYUFBYSxJQUFJLFdBQVcsb0JBQUksSUFBSTtBQUN4QyxRQUFJLFNBQVMsSUFBSSxPQUFPO0FBQUEsRUFDNUIsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixRQUFJLFFBQVEsTUFBTSxXQUFXLElBQUksTUFBTTtBQUNuQztBQUNKLFlBQVEsT0FBTyxLQUFLO0FBQUEsTUFDaEIsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUSxJQUFJO0FBQUEsTUFDWixPQUFPLFFBQVE7QUFBQSxNQUNmO0FBQUEsTUFDQSxVQUFVLENBQUMsSUFBSTtBQUFBLElBQ25CLENBQUM7QUFBQSxFQUNMO0FBQ0osQ0FBQztBQUNNLElBQU0sb0JBQWtDLGdCQUFLLGFBQWEscUJBQXFCLENBQUMsTUFBTSxRQUFRO0FBQ2pHLFlBQVUsS0FBSyxNQUFNLEdBQUc7QUFDeEIsUUFBTSxVQUFVLElBQUksT0FBTyxLQUFVLFlBQVksSUFBSSxNQUFNLENBQUMsR0FBRztBQUMvRCxNQUFJLFlBQVksSUFBSSxVQUFVO0FBQzlCLE9BQUssS0FBSyxTQUFTLEtBQUssQ0FBQ0EsVUFBUztBQUM5QixVQUFNLE1BQU1BLE1BQUssS0FBSztBQUN0QixRQUFJLGFBQWEsSUFBSSxXQUFXLG9CQUFJLElBQUk7QUFDeEMsUUFBSSxTQUFTLElBQUksT0FBTztBQUFBLEVBQzVCLENBQUM7QUFDRCxPQUFLLEtBQUssUUFBUSxDQUFDLFlBQVk7QUFDM0IsUUFBSSxRQUFRLE1BQU0sU0FBUyxJQUFJLE1BQU07QUFDakM7QUFDSixZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFFBQVEsSUFBSTtBQUFBLE1BQ1osT0FBTyxRQUFRO0FBQUEsTUFDZjtBQUFBLE1BQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDTDtBQUNKLENBQUM7QUF3Q00sSUFBTSxxQkFBbUMsZ0JBQUssYUFBYSxzQkFBc0IsQ0FBQyxNQUFNLFFBQVE7QUFDbkcsWUFBVSxLQUFLLE1BQU0sR0FBRztBQUN4QixPQUFLLEtBQUssUUFBUSxDQUFDLFlBQVk7QUFDM0IsWUFBUSxRQUFRLElBQUksR0FBRyxRQUFRLEtBQUs7QUFBQSxFQUN4QztBQUNKLENBQUM7OztBQ3BqQk0sSUFBTSxNQUFOLE1BQVU7QUFBQSxFQUNiLFlBQVksT0FBTyxDQUFDLEdBQUc7QUFDbkIsU0FBSyxVQUFVLENBQUM7QUFDaEIsU0FBSyxTQUFTO0FBQ2QsUUFBSTtBQUNBLFdBQUssT0FBTztBQUFBLEVBQ3BCO0FBQUEsRUFDQSxTQUFTLElBQUk7QUFDVCxTQUFLLFVBQVU7QUFDZixPQUFHLElBQUk7QUFDUCxTQUFLLFVBQVU7QUFBQSxFQUNuQjtBQUFBLEVBQ0EsTUFBTSxLQUFLO0FBQ1AsUUFBSSxPQUFPLFFBQVEsWUFBWTtBQUMzQixVQUFJLE1BQU0sRUFBRSxXQUFXLE9BQU8sQ0FBQztBQUMvQixVQUFJLE1BQU0sRUFBRSxXQUFXLFFBQVEsQ0FBQztBQUNoQztBQUFBLElBQ0o7QUFDQSxVQUFNLFVBQVU7QUFDaEIsVUFBTSxRQUFRLFFBQVEsTUFBTSxJQUFJLEVBQUUsT0FBTyxDQUFDRSxPQUFNQSxFQUFDO0FBQ2pELFVBQU0sWUFBWSxLQUFLLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQ0EsT0FBTUEsR0FBRSxTQUFTQSxHQUFFLFVBQVUsRUFBRSxNQUFNLENBQUM7QUFDL0UsVUFBTSxXQUFXLE1BQU0sSUFBSSxDQUFDQSxPQUFNQSxHQUFFLE1BQU0sU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDQSxPQUFNLElBQUksT0FBTyxLQUFLLFNBQVMsQ0FBQyxJQUFJQSxFQUFDO0FBQ2hHLGVBQVcsUUFBUSxVQUFVO0FBQ3pCLFdBQUssUUFBUSxLQUFLLElBQUk7QUFBQSxJQUMxQjtBQUFBLEVBQ0o7QUFBQSxFQUNBLFVBQVU7QUFDTixVQUFNQyxLQUFJO0FBQ1YsVUFBTSxPQUFPLE1BQU07QUFDbkIsVUFBTSxVQUFVLE1BQU0sV0FBVyxDQUFDLEVBQUU7QUFDcEMsVUFBTSxRQUFRLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQ0QsT0FBTSxLQUFLQSxFQUFDLEVBQUUsQ0FBQztBQUU5QyxXQUFPLElBQUlDLEdBQUUsR0FBRyxNQUFNLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFBQSxFQUMxQztBQUNKOzs7QUNsQ08sSUFBTSxVQUFVO0FBQUEsRUFDbkIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUNYOzs7QUNHTyxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUMvRSxNQUFJO0FBQ0osV0FBUyxPQUFPLENBQUM7QUFDakIsT0FBSyxLQUFLLE1BQU07QUFDaEIsT0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLE9BQU8sQ0FBQztBQUNsQyxPQUFLLEtBQUssVUFBVTtBQUNwQixRQUFNLFNBQVMsQ0FBQyxHQUFJLEtBQUssS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFFO0FBRS9DLE1BQUksS0FBSyxLQUFLLE9BQU8sSUFBSSxXQUFXLEdBQUc7QUFDbkMsV0FBTyxRQUFRLElBQUk7QUFBQSxFQUN2QjtBQUVBLGFBQVdDLE9BQU0sUUFBUTtBQUNyQixlQUFXLE1BQU1BLElBQUcsS0FBSyxVQUFVO0FBQy9CLFNBQUcsSUFBSTtBQUFBLElBQ1g7QUFBQSxFQUNKO0FBQ0EsTUFBSSxPQUFPLFdBQVcsR0FBRztBQUdyQixLQUFDLEtBQUssS0FBSyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDN0MsU0FBSyxLQUFLLFVBQVUsS0FBSyxNQUFNO0FBQzNCLFdBQUssS0FBSyxNQUFNLEtBQUssS0FBSztBQUFBLElBQzlCLENBQUM7QUFBQSxFQUNMLE9BQ0s7QUFDRCxVQUFNLFlBQVksQ0FBQyxTQUFTQyxTQUFRLFFBQVE7QUFDeEMsVUFBSUMsYUFBaUIsUUFBUSxPQUFPO0FBQ3BDLFVBQUk7QUFDSixpQkFBV0YsT0FBTUMsU0FBUTtBQUNyQixZQUFJRCxJQUFHLEtBQUssSUFBSSxNQUFNO0FBQ2xCLGdCQUFNLFlBQVlBLElBQUcsS0FBSyxJQUFJLEtBQUssT0FBTztBQUMxQyxjQUFJLENBQUM7QUFDRDtBQUFBLFFBQ1IsV0FDU0UsWUFBVztBQUNoQjtBQUFBLFFBQ0o7QUFDQSxjQUFNLFVBQVUsUUFBUSxPQUFPO0FBQy9CLGNBQU1DLEtBQUlILElBQUcsS0FBSyxNQUFNLE9BQU87QUFDL0IsWUFBSUcsY0FBYSxXQUFXLEtBQUssVUFBVSxPQUFPO0FBQzlDLGdCQUFNLElBQVMsZUFBZTtBQUFBLFFBQ2xDO0FBQ0EsWUFBSSxlQUFlQSxjQUFhLFNBQVM7QUFDckMseUJBQWUsZUFBZSxRQUFRLFFBQVEsR0FBRyxLQUFLLFlBQVk7QUFDOUQsa0JBQU1BO0FBQ04sa0JBQU0sVUFBVSxRQUFRLE9BQU87QUFDL0IsZ0JBQUksWUFBWTtBQUNaO0FBQ0osZ0JBQUksQ0FBQ0Q7QUFDRCxjQUFBQSxhQUFpQixRQUFRLFNBQVMsT0FBTztBQUFBLFVBQ2pELENBQUM7QUFBQSxRQUNMLE9BQ0s7QUFDRCxnQkFBTSxVQUFVLFFBQVEsT0FBTztBQUMvQixjQUFJLFlBQVk7QUFDWjtBQUNKLGNBQUksQ0FBQ0E7QUFDRCxZQUFBQSxhQUFpQixRQUFRLFNBQVMsT0FBTztBQUFBLFFBQ2pEO0FBQUEsTUFDSjtBQUNBLFVBQUksYUFBYTtBQUNiLGVBQU8sWUFBWSxLQUFLLE1BQU07QUFDMUIsaUJBQU87QUFBQSxRQUNYLENBQUM7QUFBQSxNQUNMO0FBQ0EsYUFBTztBQUFBLElBQ1g7QUFDQSxTQUFLLEtBQUssTUFBTSxDQUFDLFNBQVMsUUFBUTtBQUM5QixZQUFNLFNBQVMsS0FBSyxLQUFLLE1BQU0sU0FBUyxHQUFHO0FBQzNDLFVBQUksa0JBQWtCLFNBQVM7QUFDM0IsWUFBSSxJQUFJLFVBQVU7QUFDZCxnQkFBTSxJQUFTLGVBQWU7QUFDbEMsZUFBTyxPQUFPLEtBQUssQ0FBQ0UsWUFBVyxVQUFVQSxTQUFRLFFBQVEsR0FBRyxDQUFDO0FBQUEsTUFDakU7QUFDQSxhQUFPLFVBQVUsUUFBUSxRQUFRLEdBQUc7QUFBQSxJQUN4QztBQUFBLEVBQ0o7QUFDQSxPQUFLLFdBQVcsSUFBSTtBQUFBLElBQ2hCLFVBQVUsQ0FBQyxVQUFVO0FBQ2pCLFVBQUk7QUFDQSxjQUFNQyxLQUFJQyxXQUFVLE1BQU0sS0FBSztBQUMvQixlQUFPRCxHQUFFLFVBQVUsRUFBRSxPQUFPQSxHQUFFLEtBQUssSUFBSSxFQUFFLFFBQVFBLEdBQUUsT0FBTyxPQUFPO0FBQUEsTUFDckUsU0FDT0YsSUFBRztBQUNOLGVBQU8sZUFBZSxNQUFNLEtBQUssRUFBRSxLQUFLLENBQUNFLE9BQU9BLEdBQUUsVUFBVSxFQUFFLE9BQU9BLEdBQUUsS0FBSyxJQUFJLEVBQUUsUUFBUUEsR0FBRSxPQUFPLE9BQU8sQ0FBRTtBQUFBLE1BQ2hIO0FBQUEsSUFDSjtBQUFBLElBQ0EsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ2I7QUFDSixDQUFDO0FBRU0sSUFBTSxhQUEyQixnQkFBSyxhQUFhLGNBQWMsQ0FBQyxNQUFNLFFBQVE7QUFDbkYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixPQUFLLEtBQUssVUFBVSxDQUFDLEdBQUksTUFBTSxLQUFLLEtBQUssWUFBWSxDQUFDLENBQUUsRUFBRSxJQUFJLEtBQWEsT0FBTyxLQUFLLEtBQUssR0FBRztBQUMvRixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVNGLE9BQU07QUFDOUIsUUFBSSxJQUFJO0FBQ0osVUFBSTtBQUNBLGdCQUFRLFFBQVEsT0FBTyxRQUFRLEtBQUs7QUFBQSxNQUN4QyxTQUNPQSxJQUFHO0FBQUEsTUFBRTtBQUNoQixRQUFJLE9BQU8sUUFBUSxVQUFVO0FBQ3pCLGFBQU87QUFDWCxZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLE9BQU8sUUFBUTtBQUFBLE1BQ2Y7QUFBQSxJQUNKLENBQUM7QUFDRCxXQUFPO0FBQUEsRUFDWDtBQUNKLENBQUM7QUFDTSxJQUFNLG1CQUFpQyxnQkFBSyxhQUFhLG9CQUFvQixDQUFDLE1BQU0sUUFBUTtBQUUvRixFQUFPLHNCQUFzQixLQUFLLE1BQU0sR0FBRztBQUMzQyxhQUFXLEtBQUssTUFBTSxHQUFHO0FBQzdCLENBQUM7QUFDTSxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUMvRSxNQUFJLFlBQVksSUFBSSxVQUFrQjtBQUN0QyxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDbkMsQ0FBQztBQUNNLElBQU0sV0FBeUIsZ0JBQUssYUFBYSxZQUFZLENBQUMsTUFBTSxRQUFRO0FBQy9FLE1BQUksSUFBSSxTQUFTO0FBQ2IsVUFBTSxhQUFhO0FBQUEsTUFDZixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsSUFDUjtBQUNBLFVBQU1JLEtBQUksV0FBVyxJQUFJLE9BQU87QUFDaEMsUUFBSUEsT0FBTTtBQUNOLFlBQU0sSUFBSSxNQUFNLDBCQUEwQixJQUFJLE9BQU8sR0FBRztBQUM1RCxRQUFJLFlBQVksSUFBSSxVQUFrQixLQUFLQSxFQUFDO0FBQUEsRUFDaEQ7QUFFSSxRQUFJLFlBQVksSUFBSSxVQUFrQixLQUFLO0FBQy9DLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxZQUEwQixnQkFBSyxhQUFhLGFBQWEsQ0FBQyxNQUFNLFFBQVE7QUFDakYsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQ25DLENBQUM7QUFDTSxJQUFNLFVBQXdCLGdCQUFLLGFBQWEsV0FBVyxDQUFDLE1BQU0sUUFBUTtBQUM3RSxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDL0IsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFFBQUk7QUFDQSxZQUFNLE9BQU8sUUFBUTtBQUNyQixZQUFNLE1BQU0sSUFBSSxJQUFJLElBQUk7QUFDeEIsWUFBTSxPQUFPLElBQUk7QUFDakIsVUFBSSxJQUFJLFVBQVU7QUFDZCxZQUFJLFNBQVMsWUFBWTtBQUN6QixZQUFJLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxRQUFRLEdBQUc7QUFDbEMsa0JBQVEsT0FBTyxLQUFLO0FBQUEsWUFDaEIsTUFBTTtBQUFBLFlBQ04sUUFBUTtBQUFBLFlBQ1IsTUFBTTtBQUFBLFlBQ04sU0FBaUIsU0FBUztBQUFBLFlBQzFCLE9BQU8sUUFBUTtBQUFBLFlBQ2Y7QUFBQSxZQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsVUFDbkIsQ0FBQztBQUFBLFFBQ0w7QUFBQSxNQUNKO0FBQ0EsVUFBSSxJQUFJLFVBQVU7QUFDZCxZQUFJLFNBQVMsWUFBWTtBQUN6QixZQUFJLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxTQUFTLFNBQVMsR0FBRyxJQUFJLElBQUksU0FBUyxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksUUFBUSxHQUFHO0FBQzNGLGtCQUFRLE9BQU8sS0FBSztBQUFBLFlBQ2hCLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE1BQU07QUFBQSxZQUNOLFNBQVMsSUFBSSxTQUFTO0FBQUEsWUFDdEIsT0FBTyxRQUFRO0FBQUEsWUFDZjtBQUFBLFlBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxVQUNuQixDQUFDO0FBQUEsUUFDTDtBQUFBLE1BQ0o7QUFFQSxVQUFJLENBQUMsS0FBSyxTQUFTLEdBQUcsS0FBSyxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQzNDLGdCQUFRLFFBQVEsS0FBSyxNQUFNLEdBQUcsRUFBRTtBQUFBLE1BQ3BDLE9BQ0s7QUFDRCxnQkFBUSxRQUFRO0FBQUEsTUFDcEI7QUFDQTtBQUFBLElBQ0osU0FDT0osSUFBRztBQUNOLGNBQVEsT0FBTyxLQUFLO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsT0FBTyxRQUFRO0FBQUEsUUFDZjtBQUFBLFFBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxNQUNuQixDQUFDO0FBQUEsSUFDTDtBQUFBLEVBQ0o7QUFDSixDQUFDO0FBQ00sSUFBTSxZQUEwQixnQkFBSyxhQUFhLGFBQWEsQ0FBQyxNQUFNLFFBQVE7QUFDakYsTUFBSSxZQUFZLElBQUksVUFBa0IsTUFBTTtBQUM1QyxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDbkMsQ0FBQztBQUNNLElBQU0sYUFBMkIsZ0JBQUssYUFBYSxjQUFjLENBQUMsTUFBTSxRQUFRO0FBQ25GLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxXQUF5QixnQkFBSyxhQUFhLFlBQVksQ0FBQyxNQUFNLFFBQVE7QUFDL0UsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQ25DLENBQUM7QUFDTSxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixNQUFJLFlBQVksSUFBSSxVQUFrQjtBQUN0QyxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDbkMsQ0FBQztBQUNNLElBQU0sV0FBeUIsZ0JBQUssYUFBYSxZQUFZLENBQUMsTUFBTSxRQUFRO0FBQy9FLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxVQUF3QixnQkFBSyxhQUFhLFdBQVcsQ0FBQyxNQUFNLFFBQVE7QUFDN0UsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQ25DLENBQUM7QUFDTSxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixNQUFJLFlBQVksSUFBSSxVQUFrQjtBQUN0QyxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDbkMsQ0FBQztBQUNNLElBQU0sa0JBQWdDLGdCQUFLLGFBQWEsbUJBQW1CLENBQUMsTUFBTSxRQUFRO0FBQzdGLE1BQUksWUFBWSxJQUFJLFVBQWtCLFNBQVMsR0FBRztBQUNsRCxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDbkMsQ0FBQztBQUNNLElBQU0sY0FBNEIsZ0JBQUssYUFBYSxlQUFlLENBQUMsTUFBTSxRQUFRO0FBQ3JGLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxjQUE0QixnQkFBSyxhQUFhLGVBQWUsQ0FBQyxNQUFNLFFBQVE7QUFDckYsTUFBSSxZQUFZLElBQUksVUFBa0IsS0FBSyxHQUFHO0FBQzlDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxrQkFBZ0MsZ0JBQUssYUFBYSxtQkFBbUIsQ0FBQyxNQUFNLFFBQVE7QUFDN0YsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQ25DLENBQUM7QUFDTSxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUMvRSxNQUFJLFlBQVksSUFBSSxVQUFrQjtBQUN0QyxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDL0IsT0FBSyxLQUFLLFNBQVMsS0FBSyxDQUFDSyxVQUFTO0FBQzlCLFVBQU0sTUFBTUEsTUFBSyxLQUFLO0FBQ3RCLFFBQUksU0FBUztBQUFBLEVBQ2pCLENBQUM7QUFDTCxDQUFDO0FBQ00sSUFBTSxXQUF5QixnQkFBSyxhQUFhLFlBQVksQ0FBQyxNQUFNLFFBQVE7QUFDL0UsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQy9CLE9BQUssS0FBSyxTQUFTLEtBQUssQ0FBQ0EsVUFBUztBQUM5QixVQUFNLE1BQU1BLE1BQUssS0FBSztBQUN0QixRQUFJLFNBQVM7QUFBQSxFQUNqQixDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFFBQUk7QUFDQSxVQUFJLElBQUksV0FBVyxRQUFRLEtBQUssR0FBRztBQUFBLElBRXZDLFFBQ007QUFDRixjQUFRLE9BQU8sS0FBSztBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFFBQVE7QUFBQSxRQUNSLE9BQU8sUUFBUTtBQUFBLFFBQ2Y7QUFBQSxRQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsTUFDbkIsQ0FBQztBQUFBLElBQ0w7QUFBQSxFQUNKO0FBQ0osQ0FBQztBQUNNLElBQU0sYUFBMkIsZ0JBQUssYUFBYSxjQUFjLENBQUMsTUFBTSxRQUFRO0FBQ25GLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUNuQyxDQUFDO0FBQ00sSUFBTSxhQUEyQixnQkFBSyxhQUFhLGNBQWMsQ0FBQyxNQUFNLFFBQVE7QUFDbkYsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQy9CLE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixVQUFNLENBQUMsU0FBUyxNQUFNLElBQUksUUFBUSxNQUFNLE1BQU0sR0FBRztBQUNqRCxRQUFJO0FBQ0EsVUFBSSxDQUFDO0FBQ0QsY0FBTSxJQUFJLE1BQU07QUFDcEIsWUFBTSxZQUFZLE9BQU8sTUFBTTtBQUMvQixVQUFJLEdBQUcsU0FBUyxPQUFPO0FBQ25CLGNBQU0sSUFBSSxNQUFNO0FBQ3BCLFVBQUksWUFBWSxLQUFLLFlBQVk7QUFDN0IsY0FBTSxJQUFJLE1BQU07QUFDcEIsVUFBSSxJQUFJLFdBQVcsT0FBTyxHQUFHO0FBQUEsSUFDakMsUUFDTTtBQUNGLGNBQVEsT0FBTyxLQUFLO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsT0FBTyxRQUFRO0FBQUEsUUFDZjtBQUFBLFFBQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxNQUNuQixDQUFDO0FBQUEsSUFDTDtBQUFBLEVBQ0o7QUFDSixDQUFDO0FBRU0sU0FBUyxjQUFjLE1BQU07QUFDaEMsTUFBSSxTQUFTO0FBQ1QsV0FBTztBQUNYLE1BQUksS0FBSyxTQUFTLE1BQU07QUFDcEIsV0FBTztBQUNYLE1BQUk7QUFDQSxTQUFLLElBQUk7QUFDVCxXQUFPO0FBQUEsRUFDWCxRQUNNO0FBQ0YsV0FBTztBQUFBLEVBQ1g7QUFDSjtBQUNPLElBQU0sYUFBMkIsZ0JBQUssYUFBYSxjQUFjLENBQUMsTUFBTSxRQUFRO0FBQ25GLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUMvQixPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNBLFVBQVM7QUFDOUIsSUFBQUEsTUFBSyxLQUFLLElBQUksa0JBQWtCO0FBQUEsRUFDcEMsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixRQUFJLGNBQWMsUUFBUSxLQUFLO0FBQzNCO0FBQ0osWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixPQUFPLFFBQVE7QUFBQSxNQUNmO0FBQUEsTUFDQSxVQUFVLENBQUMsSUFBSTtBQUFBLElBQ25CLENBQUM7QUFBQSxFQUNMO0FBQ0osQ0FBQztBQUVNLFNBQVMsaUJBQWlCLE1BQU07QUFDbkMsTUFBSSxDQUFTLFVBQVUsS0FBSyxJQUFJO0FBQzVCLFdBQU87QUFDWCxRQUFNQyxVQUFTLEtBQUssUUFBUSxTQUFTLENBQUNDLE9BQU9BLE9BQU0sTUFBTSxNQUFNLEdBQUk7QUFDbkUsUUFBTSxTQUFTRCxRQUFPLE9BQU8sS0FBSyxLQUFLQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRztBQUNsRSxTQUFPLGNBQWMsTUFBTTtBQUMvQjtBQUNPLElBQU0sZ0JBQThCLGdCQUFLLGFBQWEsaUJBQWlCLENBQUMsTUFBTSxRQUFRO0FBQ3pGLE1BQUksWUFBWSxJQUFJLFVBQWtCO0FBQ3RDLG1CQUFpQixLQUFLLE1BQU0sR0FBRztBQUMvQixPQUFLLEtBQUssU0FBUyxLQUFLLENBQUNELFVBQVM7QUFDOUIsSUFBQUEsTUFBSyxLQUFLLElBQUksa0JBQWtCO0FBQUEsRUFDcEMsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixRQUFJLGlCQUFpQixRQUFRLEtBQUs7QUFDOUI7QUFDSixZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLE9BQU8sUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFVBQVUsQ0FBQyxJQUFJO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSxXQUF5QixnQkFBSyxhQUFhLFlBQVksQ0FBQyxNQUFNLFFBQVE7QUFDL0UsTUFBSSxZQUFZLElBQUksVUFBa0I7QUFDdEMsbUJBQWlCLEtBQUssTUFBTSxHQUFHO0FBQ25DLENBQUM7QUFFTSxTQUFTRyxZQUFXLE9BQU8sWUFBWSxNQUFNO0FBQ2hELE1BQUk7QUFDQSxVQUFNLGNBQWMsTUFBTSxNQUFNLEdBQUc7QUFDbkMsUUFBSSxZQUFZLFdBQVc7QUFDdkIsYUFBTztBQUNYLFVBQU0sQ0FBQyxNQUFNLElBQUk7QUFDakIsUUFBSSxDQUFDO0FBQ0QsYUFBTztBQUNYLFVBQU0sZUFBZSxLQUFLLE1BQU0sS0FBSyxNQUFNLENBQUM7QUFDNUMsUUFBSSxTQUFTLGdCQUFnQixjQUFjLFFBQVE7QUFDL0MsYUFBTztBQUNYLFFBQUksQ0FBQyxhQUFhO0FBQ2QsYUFBTztBQUNYLFFBQUksY0FBYyxFQUFFLFNBQVMsaUJBQWlCLGFBQWEsUUFBUTtBQUMvRCxhQUFPO0FBQ1gsV0FBTztBQUFBLEVBQ1gsUUFDTTtBQUNGLFdBQU87QUFBQSxFQUNYO0FBQ0o7QUFDTyxJQUFNLFVBQXdCLGdCQUFLLGFBQWEsV0FBVyxDQUFDLE1BQU0sUUFBUTtBQUM3RSxtQkFBaUIsS0FBSyxNQUFNLEdBQUc7QUFDL0IsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQzNCLFFBQUlBLFlBQVcsUUFBUSxPQUFPLElBQUksR0FBRztBQUNqQztBQUNKLFlBQVEsT0FBTyxLQUFLO0FBQUEsTUFDaEIsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsT0FBTyxRQUFRO0FBQUEsTUFDZjtBQUFBLE1BQ0EsVUFBVSxDQUFDLElBQUk7QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDTDtBQUNKLENBQUM7QUFlTSxJQUFNLGFBQTJCLGdCQUFLLGFBQWEsY0FBYyxDQUFDLE1BQU0sUUFBUTtBQUNuRixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxVQUFVLEtBQUssS0FBSyxJQUFJLFdBQW1CO0FBQ3JELE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxTQUFTO0FBQ2pDLFFBQUksSUFBSTtBQUNKLFVBQUk7QUFDQSxnQkFBUSxRQUFRLE9BQU8sUUFBUSxLQUFLO0FBQUEsTUFDeEMsU0FDT0MsSUFBRztBQUFBLE1BQUU7QUFDaEIsVUFBTSxRQUFRLFFBQVE7QUFDdEIsUUFBSSxPQUFPLFVBQVUsWUFBWSxDQUFDLE9BQU8sTUFBTSxLQUFLLEtBQUssT0FBTyxTQUFTLEtBQUssR0FBRztBQUM3RSxhQUFPO0FBQUEsSUFDWDtBQUNBLFVBQU0sV0FBVyxPQUFPLFVBQVUsV0FDNUIsT0FBTyxNQUFNLEtBQUssSUFDZCxRQUNBLENBQUMsT0FBTyxTQUFTLEtBQUssSUFDbEIsYUFDQSxTQUNSO0FBQ04sWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixVQUFVO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0E7QUFBQSxNQUNBLEdBQUksV0FBVyxFQUFFLFNBQVMsSUFBSSxDQUFDO0FBQUEsSUFDbkMsQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQUNNLElBQU0sbUJBQWlDLGdCQUFLLGFBQWEsY0FBYyxDQUFDLE1BQU0sUUFBUTtBQUN6RixFQUFPLHNCQUFzQixLQUFLLE1BQU0sR0FBRztBQUMzQyxhQUFXLEtBQUssTUFBTSxHQUFHO0FBQzdCLENBQUM7QUFDTSxJQUFNLGNBQTRCLGdCQUFLLGFBQWEsZUFBZSxDQUFDLE1BQU0sUUFBUTtBQUNyRixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxVQUFrQjtBQUM1QixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsU0FBUztBQUNqQyxRQUFJLElBQUk7QUFDSixVQUFJO0FBQ0EsZ0JBQVEsUUFBUSxRQUFRLFFBQVEsS0FBSztBQUFBLE1BQ3pDLFNBQ09BLElBQUc7QUFBQSxNQUFFO0FBQ2hCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFFBQUksT0FBTyxVQUFVO0FBQ2pCLGFBQU87QUFDWCxZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLElBQ0osQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQTJETSxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUMvRSxXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxVQUFrQjtBQUM1QixPQUFLLEtBQUssU0FBUyxvQkFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2pDLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxTQUFTO0FBQ2pDLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFFBQUksVUFBVTtBQUNWLGFBQU87QUFDWCxZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLElBQ0osQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQUtNLElBQU0sY0FBNEIsZ0JBQUssYUFBYSxlQUFlLENBQUMsTUFBTSxRQUFRO0FBQ3JGLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsT0FBSyxLQUFLLFFBQVEsQ0FBQyxZQUFZO0FBQ25DLENBQUM7QUFDTSxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxTQUFTO0FBQ2pDLFlBQVEsT0FBTyxLQUFLO0FBQUEsTUFDaEIsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sT0FBTyxRQUFRO0FBQUEsTUFDZjtBQUFBLElBQ0osQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQXdDRCxTQUFTLGtCQUFrQixRQUFRLE9BQU8sT0FBTztBQUM3QyxNQUFJLE9BQU8sT0FBTyxRQUFRO0FBQ3RCLFVBQU0sT0FBTyxLQUFLLEdBQVEsYUFBYSxPQUFPLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDaEU7QUFDQSxRQUFNLE1BQU0sS0FBSyxJQUFJLE9BQU87QUFDaEM7QUFDTyxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFFBQUksQ0FBQyxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3ZCLGNBQVEsT0FBTyxLQUFLO0FBQUEsUUFDaEIsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFFBQ047QUFBQSxRQUNBO0FBQUEsTUFDSixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1g7QUFDQSxZQUFRLFFBQVEsTUFBTSxNQUFNLE1BQU07QUFDbEMsVUFBTSxRQUFRLENBQUM7QUFDZixhQUFTLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxLQUFLO0FBQ25DLFlBQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsWUFBTSxTQUFTLElBQUksUUFBUSxLQUFLLElBQUk7QUFBQSxRQUNoQyxPQUFPO0FBQUEsUUFDUCxRQUFRLENBQUM7QUFBQSxNQUNiLEdBQUcsR0FBRztBQUNOLFVBQUksa0JBQWtCLFNBQVM7QUFDM0IsY0FBTSxLQUFLLE9BQU8sS0FBSyxDQUFDQyxZQUFXLGtCQUFrQkEsU0FBUSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFDN0UsT0FDSztBQUNELDBCQUFrQixRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQ3hDO0FBQUEsSUFDSjtBQUNBLFFBQUksTUFBTSxRQUFRO0FBQ2QsYUFBTyxRQUFRLElBQUksS0FBSyxFQUFFLEtBQUssTUFBTSxPQUFPO0FBQUEsSUFDaEQ7QUFDQSxXQUFPO0FBQUEsRUFDWDtBQUNKLENBQUM7QUFDRCxTQUFTLG1CQUFtQixRQUFRLE9BQU8sS0FBSztBQUU1QyxNQUFJLE9BQU8sT0FBTyxRQUFRO0FBQ3RCLFVBQU0sT0FBTyxLQUFLLEdBQVEsYUFBYSxLQUFLLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDOUQ7QUFDQSxRQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU87QUFDOUI7QUFDQSxTQUFTLDJCQUEyQixRQUFRLE9BQU8sS0FBSyxPQUFPO0FBQzNELE1BQUksT0FBTyxPQUFPLFFBQVE7QUFFdEIsUUFBSSxNQUFNLEdBQUcsTUFBTSxRQUFXO0FBRTFCLFVBQUksT0FBTyxPQUFPO0FBQ2QsY0FBTSxNQUFNLEdBQUcsSUFBSTtBQUFBLE1BQ3ZCLE9BQ0s7QUFDRCxjQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU87QUFBQSxNQUM5QjtBQUFBLElBQ0osT0FDSztBQUNELFlBQU0sT0FBTyxLQUFLLEdBQVEsYUFBYSxLQUFLLE9BQU8sTUFBTSxDQUFDO0FBQUEsSUFDOUQ7QUFBQSxFQUNKLFdBQ1MsT0FBTyxVQUFVLFFBQVc7QUFFakMsUUFBSSxPQUFPO0FBQ1AsWUFBTSxNQUFNLEdBQUcsSUFBSTtBQUFBLEVBQzNCLE9BQ0s7QUFFRCxVQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU87QUFBQSxFQUM5QjtBQUNKO0FBQ08sSUFBTSxhQUEyQixnQkFBSyxhQUFhLGNBQWMsQ0FBQyxNQUFNLFFBQVE7QUFFbkYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixRQUFNLGNBQW1CQyxRQUFPLE1BQU07QUFDbEMsVUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLEtBQUs7QUFDbEMsZUFBVyxLQUFLLE1BQU07QUFDbEIsVUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLGFBQWEsV0FBVztBQUNyQyxjQUFNLElBQUksTUFBTSwyQkFBMkIsQ0FBQywwQkFBMEI7QUFBQSxNQUMxRTtBQUFBLElBQ0o7QUFDQSxVQUFNLFFBQWEsYUFBYSxJQUFJLEtBQUs7QUFDekMsV0FBTztBQUFBLE1BQ0gsT0FBTyxJQUFJO0FBQUEsTUFDWDtBQUFBLE1BQ0EsUUFBUSxJQUFJLElBQUksSUFBSTtBQUFBLE1BQ3BCLFNBQVMsS0FBSztBQUFBLE1BQ2QsY0FBYyxJQUFJLElBQUksS0FBSztBQUFBLElBQy9CO0FBQUEsRUFDSixDQUFDO0FBQ0QsRUFBSyxXQUFXLEtBQUssTUFBTSxjQUFjLE1BQU07QUFDM0MsVUFBTSxRQUFRLElBQUk7QUFDbEIsVUFBTSxhQUFhLENBQUM7QUFDcEIsZUFBVyxPQUFPLE9BQU87QUFDckIsWUFBTSxRQUFRLE1BQU0sR0FBRyxFQUFFO0FBQ3pCLFVBQUksTUFBTSxRQUFRO0FBQ2QsbUJBQVcsR0FBRyxNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFJLElBQUk7QUFDOUMsbUJBQVdDLE1BQUssTUFBTTtBQUNsQixxQkFBVyxHQUFHLEVBQUUsSUFBSUEsRUFBQztBQUFBLE1BQzdCO0FBQUEsSUFDSjtBQUNBLFdBQU87QUFBQSxFQUNYLENBQUM7QUFDRCxRQUFNLG1CQUFtQixDQUFDLFVBQVU7QUFDaEMsVUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsV0FBVyxLQUFLLENBQUM7QUFDL0MsVUFBTSxhQUFhLFlBQVk7QUFDL0IsVUFBTSxXQUFXLENBQUMsUUFBUTtBQUN0QixZQUFNLElBQVMsSUFBSSxHQUFHO0FBQ3RCLGFBQU8sU0FBUyxDQUFDLDZCQUE2QixDQUFDO0FBQUEsSUFDbkQ7QUFDQSxRQUFJLE1BQU0sOEJBQThCO0FBQ3hDLFVBQU0sTUFBTSx1QkFBTyxPQUFPLElBQUk7QUFDOUIsUUFBSSxVQUFVO0FBQ2QsZUFBVyxPQUFPLFdBQVcsTUFBTTtBQUMvQixVQUFJLEdBQUcsSUFBSSxPQUFPLFNBQVM7QUFBQSxJQUMvQjtBQUVBLFFBQUksTUFBTSxzQkFBc0I7QUFDaEMsZUFBVyxPQUFPLFdBQVcsTUFBTTtBQUMvQixVQUFJLFdBQVcsYUFBYSxJQUFJLEdBQUcsR0FBRztBQUNsQyxjQUFNLEtBQUssSUFBSSxHQUFHO0FBQ2xCLFlBQUksTUFBTSxTQUFTLEVBQUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHO0FBQzNDLGNBQU0sSUFBUyxJQUFJLEdBQUc7QUFDdEIsWUFBSSxNQUFNO0FBQUEsY0FDWixFQUFFO0FBQUEsc0JBQ00sQ0FBQztBQUFBLGtCQUNMLENBQUM7QUFBQSwwQkFDTyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBSVgsRUFBRTtBQUFBO0FBQUEsb0NBRWtCLENBQUMscUJBQXFCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFJdEMsRUFBRTtBQUFBLGdCQUNQLENBQUMsd0JBQXdCLENBQUM7QUFBQTtBQUFBLHNCQUVwQixDQUFDLE9BQU8sRUFBRTtBQUFBO0FBQUEsU0FFdkI7QUFBQSxNQUNHLE9BQ0s7QUFDRCxjQUFNLEtBQUssSUFBSSxHQUFHO0FBRWxCLFlBQUksTUFBTSxTQUFTLEVBQUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHO0FBQzNDLFlBQUksTUFBTTtBQUFBLGdCQUNWLEVBQUUsMERBQTBELEVBQUU7QUFBQTtBQUFBLGdDQUV6QyxJQUFJLEdBQUcsQ0FBQyxxQkFBMEIsSUFBSSxHQUFHLENBQUM7QUFBQSxnQkFDL0Q7QUFDQSxZQUFJLE1BQU0sYUFBa0IsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVE7QUFBQSxNQUN6RDtBQUFBLElBQ0o7QUFDQSxRQUFJLE1BQU0sNEJBQTRCO0FBQ3RDLFFBQUksTUFBTSxpQkFBaUI7QUFDM0IsVUFBTSxLQUFLLElBQUksUUFBUTtBQUN2QixXQUFPLENBQUMsU0FBUyxRQUFRLEdBQUcsT0FBTyxTQUFTLEdBQUc7QUFBQSxFQUNuRDtBQUNBLE1BQUk7QUFDSixRQUFNQyxZQUFnQjtBQUN0QixRQUFNLE1BQU0sQ0FBTSxhQUFhO0FBQy9CLFFBQU1DLGNBQWtCO0FBQ3hCLFFBQU0sY0FBYyxPQUFPQSxZQUFXO0FBQ3RDLFFBQU0sV0FBVyxJQUFJO0FBQ3JCLE1BQUk7QUFDSixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsUUFBUTtBQUNoQyxjQUFVLFFBQVEsWUFBWTtBQUM5QixVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLENBQUNELFVBQVMsS0FBSyxHQUFHO0FBQ2xCLGNBQVEsT0FBTyxLQUFLO0FBQUEsUUFDaEIsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFFBQ047QUFBQSxRQUNBO0FBQUEsTUFDSixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1g7QUFDQSxVQUFNLFFBQVEsQ0FBQztBQUNmLFFBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxTQUFTLElBQUksWUFBWSxNQUFNO0FBRXBFLFVBQUksQ0FBQztBQUNELG1CQUFXLGlCQUFpQixJQUFJLEtBQUs7QUFDekMsZ0JBQVUsU0FBUyxTQUFTLEdBQUc7QUFBQSxJQUNuQyxPQUNLO0FBQ0QsY0FBUSxRQUFRLENBQUM7QUFDakIsWUFBTSxRQUFRLE1BQU07QUFDcEIsaUJBQVcsT0FBTyxNQUFNLE1BQU07QUFDMUIsY0FBTUUsTUFBSyxNQUFNLEdBQUc7QUFhcEIsY0FBTUMsS0FBSUQsSUFBRyxLQUFLLElBQUksRUFBRSxPQUFPLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsR0FBRztBQUM1RCxjQUFNLGFBQWFBLElBQUcsS0FBSyxVQUFVLGNBQWNBLElBQUcsS0FBSyxXQUFXO0FBQ3RFLFlBQUlDLGNBQWEsU0FBUztBQUN0QixnQkFBTSxLQUFLQSxHQUFFLEtBQUssQ0FBQ0EsT0FBTSxhQUFhLDJCQUEyQkEsSUFBRyxTQUFTLEtBQUssS0FBSyxJQUFJLG1CQUFtQkEsSUFBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQUEsUUFDbkksV0FDUyxZQUFZO0FBQ2pCLHFDQUEyQkEsSUFBRyxTQUFTLEtBQUssS0FBSztBQUFBLFFBQ3JELE9BQ0s7QUFDRCw2QkFBbUJBLElBQUcsU0FBUyxHQUFHO0FBQUEsUUFDdEM7QUFBQSxNQUNKO0FBQUEsSUFDSjtBQUNBLFFBQUksQ0FBQyxVQUFVO0FBRVgsYUFBTyxNQUFNLFNBQVMsUUFBUSxJQUFJLEtBQUssRUFBRSxLQUFLLE1BQU0sT0FBTyxJQUFJO0FBQUEsSUFDbkU7QUFDQSxVQUFNLGVBQWUsQ0FBQztBQUV0QixVQUFNLFNBQVMsTUFBTTtBQUNyQixVQUFNLFlBQVksU0FBUztBQUMzQixVQUFNQyxLQUFJLFVBQVUsSUFBSTtBQUN4QixlQUFXLE9BQU8sT0FBTyxLQUFLLEtBQUssR0FBRztBQUNsQyxVQUFJLE9BQU8sSUFBSSxHQUFHO0FBQ2Q7QUFDSixVQUFJQSxPQUFNLFNBQVM7QUFDZixxQkFBYSxLQUFLLEdBQUc7QUFDckI7QUFBQSxNQUNKO0FBQ0EsWUFBTUQsS0FBSSxVQUFVLElBQUksRUFBRSxPQUFPLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsR0FBRztBQUM5RCxVQUFJQSxjQUFhLFNBQVM7QUFDdEIsY0FBTSxLQUFLQSxHQUFFLEtBQUssQ0FBQ0EsT0FBTSxtQkFBbUJBLElBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUFBLE1BQ2pFLE9BQ0s7QUFDRCwyQkFBbUJBLElBQUcsU0FBUyxHQUFHO0FBQUEsTUFDdEM7QUFBQSxJQUNKO0FBQ0EsUUFBSSxhQUFhLFFBQVE7QUFDckIsY0FBUSxPQUFPLEtBQUs7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixNQUFNO0FBQUEsUUFDTjtBQUFBLFFBQ0E7QUFBQSxNQUNKLENBQUM7QUFBQSxJQUNMO0FBQ0EsUUFBSSxDQUFDLE1BQU07QUFDUCxhQUFPO0FBQ1gsV0FBTyxRQUFRLElBQUksS0FBSyxFQUFFLEtBQUssTUFBTTtBQUNqQyxhQUFPO0FBQUEsSUFDWCxDQUFDO0FBQUEsRUFDTDtBQUNKLENBQUM7QUFDRCxTQUFTLG1CQUFtQixTQUFTLE9BQU8sTUFBTSxLQUFLO0FBQ25ELGFBQVcsVUFBVSxTQUFTO0FBQzFCLFFBQUksT0FBTyxPQUFPLFdBQVcsR0FBRztBQUM1QixZQUFNLFFBQVEsT0FBTztBQUNyQixhQUFPO0FBQUEsSUFDWDtBQUFBLEVBQ0o7QUFDQSxRQUFNLE9BQU8sS0FBSztBQUFBLElBQ2QsTUFBTTtBQUFBLElBQ04sT0FBTyxNQUFNO0FBQUEsSUFDYjtBQUFBLElBQ0EsUUFBUSxRQUFRLElBQUksQ0FBQyxXQUFXLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBYSxjQUFjLEtBQUssS0FBVSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDM0csQ0FBQztBQUNELFNBQU87QUFDWDtBQUNPLElBQU0sWUFBMEIsZ0JBQUssYUFBYSxhQUFhLENBQUMsTUFBTSxRQUFRO0FBQ2pGLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsRUFBSyxXQUFXLEtBQUssTUFBTSxTQUFTLE1BQU0sSUFBSSxRQUFRLEtBQUssQ0FBQ0UsT0FBTUEsR0FBRSxLQUFLLFVBQVUsVUFBVSxJQUFJLGFBQWEsTUFBUztBQUN2SCxFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTSxJQUFJLFFBQVEsS0FBSyxDQUFDQSxPQUFNQSxHQUFFLEtBQUssV0FBVyxVQUFVLElBQUksYUFBYSxNQUFTO0FBQ3pILEVBQUssV0FBVyxLQUFLLE1BQU0sVUFBVSxNQUFNO0FBQ3ZDLFFBQUksSUFBSSxRQUFRLE1BQU0sQ0FBQ0EsT0FBTUEsR0FBRSxLQUFLLE1BQU0sR0FBRztBQUN6QyxhQUFPLElBQUksSUFBSSxJQUFJLFFBQVEsUUFBUSxDQUFDLFdBQVcsTUFBTSxLQUFLLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztBQUFBLElBQ2xGO0FBQ0EsV0FBTztBQUFBLEVBQ1gsQ0FBQztBQUNELEVBQUssV0FBVyxLQUFLLE1BQU0sV0FBVyxNQUFNO0FBQ3hDLFFBQUksSUFBSSxRQUFRLE1BQU0sQ0FBQ0EsT0FBTUEsR0FBRSxLQUFLLE9BQU8sR0FBRztBQUMxQyxZQUFNLFdBQVcsSUFBSSxRQUFRLElBQUksQ0FBQ0EsT0FBTUEsR0FBRSxLQUFLLE9BQU87QUFDdEQsYUFBTyxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFXLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJO0FBQUEsSUFDdkY7QUFDQSxXQUFPO0FBQUEsRUFDWCxDQUFDO0FBQ0QsT0FBSyxLQUFLLFFBQVEsQ0FBQyxTQUFTLFFBQVE7QUFDaEMsUUFBSSxRQUFRO0FBQ1osVUFBTSxVQUFVLENBQUM7QUFDakIsZUFBVyxVQUFVLElBQUksU0FBUztBQUM5QixZQUFNLFNBQVMsT0FBTyxLQUFLLElBQUk7QUFBQSxRQUMzQixPQUFPLFFBQVE7QUFBQSxRQUNmLFFBQVEsQ0FBQztBQUFBLE1BQ2IsR0FBRyxHQUFHO0FBQ04sVUFBSSxrQkFBa0IsU0FBUztBQUMzQixnQkFBUSxLQUFLLE1BQU07QUFDbkIsZ0JBQVE7QUFBQSxNQUNaLE9BQ0s7QUFDRCxZQUFJLE9BQU8sT0FBTyxXQUFXO0FBQ3pCLGlCQUFPO0FBQ1gsZ0JBQVEsS0FBSyxNQUFNO0FBQUEsTUFDdkI7QUFBQSxJQUNKO0FBQ0EsUUFBSSxDQUFDO0FBQ0QsYUFBTyxtQkFBbUIsU0FBUyxTQUFTLE1BQU0sR0FBRztBQUN6RCxXQUFPLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxDQUFDQyxhQUFZO0FBQzFDLGFBQU8sbUJBQW1CQSxVQUFTLFNBQVMsTUFBTSxHQUFHO0FBQUEsSUFDekQsQ0FBQztBQUFBLEVBQ0w7QUFDSixDQUFDO0FBQ00sSUFBTSx5QkFFYixnQkFBSyxhQUFhLDBCQUEwQixDQUFDLE1BQU0sUUFBUTtBQUN2RCxZQUFVLEtBQUssTUFBTSxHQUFHO0FBQ3hCLFFBQU0sU0FBUyxLQUFLLEtBQUs7QUFDekIsRUFBSyxXQUFXLEtBQUssTUFBTSxjQUFjLE1BQU07QUFDM0MsVUFBTSxhQUFhLENBQUM7QUFDcEIsZUFBVyxVQUFVLElBQUksU0FBUztBQUM5QixZQUFNQyxNQUFLLE9BQU8sS0FBSztBQUN2QixVQUFJLENBQUNBLE9BQU0sT0FBTyxLQUFLQSxHQUFFLEVBQUUsV0FBVztBQUNsQyxjQUFNLElBQUksTUFBTSxnREFBZ0QsSUFBSSxRQUFRLFFBQVEsTUFBTSxDQUFDLEdBQUc7QUFDbEcsaUJBQVcsQ0FBQyxHQUFHUixFQUFDLEtBQUssT0FBTyxRQUFRUSxHQUFFLEdBQUc7QUFDckMsWUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNiLHFCQUFXLENBQUMsSUFBSSxvQkFBSSxJQUFJO0FBQzVCLG1CQUFXLE9BQU9SLElBQUc7QUFDakIscUJBQVcsQ0FBQyxFQUFFLElBQUksR0FBRztBQUFBLFFBQ3pCO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFDQSxXQUFPO0FBQUEsRUFDWCxDQUFDO0FBQ0QsUUFBTSxPQUFZRCxRQUFPLE1BQU07QUFDM0IsVUFBTSxPQUFPLElBQUk7QUFDakIsVUFBTSxNQUFNLG9CQUFJLElBQUk7QUFDcEIsZUFBV08sTUFBSyxNQUFNO0FBQ2xCLFlBQU0sU0FBU0EsR0FBRSxLQUFLLFdBQVcsSUFBSSxhQUFhO0FBQ2xELFVBQUksQ0FBQyxVQUFVLE9BQU8sU0FBUztBQUMzQixjQUFNLElBQUksTUFBTSxnREFBZ0QsSUFBSSxRQUFRLFFBQVFBLEVBQUMsQ0FBQyxHQUFHO0FBQzdGLGlCQUFXTixNQUFLLFFBQVE7QUFDcEIsWUFBSSxJQUFJLElBQUlBLEVBQUMsR0FBRztBQUNaLGdCQUFNLElBQUksTUFBTSxrQ0FBa0MsT0FBT0EsRUFBQyxDQUFDLEdBQUc7QUFBQSxRQUNsRTtBQUNBLFlBQUksSUFBSUEsSUFBR00sRUFBQztBQUFBLE1BQ2hCO0FBQUEsSUFDSjtBQUNBLFdBQU87QUFBQSxFQUNYLENBQUM7QUFDRCxPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsUUFBUTtBQUNoQyxVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLENBQU0sU0FBUyxLQUFLLEdBQUc7QUFDdkIsY0FBUSxPQUFPLEtBQUs7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixVQUFVO0FBQUEsUUFDVjtBQUFBLFFBQ0E7QUFBQSxNQUNKLENBQUM7QUFDRCxhQUFPO0FBQUEsSUFDWDtBQUNBLFVBQU0sTUFBTSxLQUFLLE1BQU0sSUFBSSxRQUFRLElBQUksYUFBYSxDQUFDO0FBQ3JELFFBQUksS0FBSztBQUNMLGFBQU8sSUFBSSxLQUFLLElBQUksU0FBUyxHQUFHO0FBQUEsSUFDcEM7QUFDQSxRQUFJLElBQUksZUFBZTtBQUNuQixhQUFPLE9BQU8sU0FBUyxHQUFHO0FBQUEsSUFDOUI7QUFFQSxZQUFRLE9BQU8sS0FBSztBQUFBLE1BQ2hCLE1BQU07QUFBQSxNQUNOLFFBQVEsQ0FBQztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ047QUFBQSxNQUNBLE1BQU0sQ0FBQyxJQUFJLGFBQWE7QUFBQSxNQUN4QjtBQUFBLElBQ0osQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQUNNLElBQU0sbUJBQWlDLGdCQUFLLGFBQWEsb0JBQW9CLENBQUMsTUFBTSxRQUFRO0FBQy9GLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsT0FBSyxLQUFLLFFBQVEsQ0FBQyxTQUFTLFFBQVE7QUFDaEMsVUFBTSxRQUFRLFFBQVE7QUFDdEIsVUFBTSxPQUFPLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxPQUFPLE9BQU8sUUFBUSxDQUFDLEVBQUUsR0FBRyxHQUFHO0FBQ2hFLFVBQU0sUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsT0FBTyxPQUFPLFFBQVEsQ0FBQyxFQUFFLEdBQUcsR0FBRztBQUNsRSxVQUFNLFFBQVEsZ0JBQWdCLFdBQVcsaUJBQWlCO0FBQzFELFFBQUksT0FBTztBQUNQLGFBQU8sUUFBUSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQ0csT0FBTUMsTUFBSyxNQUFNO0FBQ3RELGVBQU8sMEJBQTBCLFNBQVNELE9BQU1DLE1BQUs7QUFBQSxNQUN6RCxDQUFDO0FBQUEsSUFDTDtBQUNBLFdBQU8sMEJBQTBCLFNBQVMsTUFBTSxLQUFLO0FBQUEsRUFDekQ7QUFDSixDQUFDO0FBQ0QsU0FBU0MsYUFBWSxHQUFHQyxJQUFHO0FBR3ZCLE1BQUksTUFBTUEsSUFBRztBQUNULFdBQU8sRUFBRSxPQUFPLE1BQU0sTUFBTSxFQUFFO0FBQUEsRUFDbEM7QUFDQSxNQUFJLGFBQWEsUUFBUUEsY0FBYSxRQUFRLENBQUMsTUFBTSxDQUFDQSxJQUFHO0FBQ3JELFdBQU8sRUFBRSxPQUFPLE1BQU0sTUFBTSxFQUFFO0FBQUEsRUFDbEM7QUFDQSxNQUFTQyxlQUFjLENBQUMsS0FBVUEsZUFBY0QsRUFBQyxHQUFHO0FBQ2hELFVBQU0sUUFBUSxPQUFPLEtBQUtBLEVBQUM7QUFDM0IsVUFBTSxhQUFhLE9BQU8sS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFO0FBQzNFLFVBQU0sU0FBUyxFQUFFLEdBQUcsR0FBRyxHQUFHQSxHQUFFO0FBQzVCLGVBQVcsT0FBTyxZQUFZO0FBQzFCLFlBQU0sY0FBY0QsYUFBWSxFQUFFLEdBQUcsR0FBR0MsR0FBRSxHQUFHLENBQUM7QUFDOUMsVUFBSSxDQUFDLFlBQVksT0FBTztBQUNwQixlQUFPO0FBQUEsVUFDSCxPQUFPO0FBQUEsVUFDUCxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsWUFBWSxjQUFjO0FBQUEsUUFDdkQ7QUFBQSxNQUNKO0FBQ0EsYUFBTyxHQUFHLElBQUksWUFBWTtBQUFBLElBQzlCO0FBQ0EsV0FBTyxFQUFFLE9BQU8sTUFBTSxNQUFNLE9BQU87QUFBQSxFQUN2QztBQUNBLE1BQUksTUFBTSxRQUFRLENBQUMsS0FBSyxNQUFNLFFBQVFBLEVBQUMsR0FBRztBQUN0QyxRQUFJLEVBQUUsV0FBV0EsR0FBRSxRQUFRO0FBQ3ZCLGFBQU8sRUFBRSxPQUFPLE9BQU8sZ0JBQWdCLENBQUMsRUFBRTtBQUFBLElBQzlDO0FBQ0EsVUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBUyxRQUFRLEdBQUcsUUFBUSxFQUFFLFFBQVEsU0FBUztBQUMzQyxZQUFNLFFBQVEsRUFBRSxLQUFLO0FBQ3JCLFlBQU0sUUFBUUEsR0FBRSxLQUFLO0FBQ3JCLFlBQU0sY0FBY0QsYUFBWSxPQUFPLEtBQUs7QUFDNUMsVUFBSSxDQUFDLFlBQVksT0FBTztBQUNwQixlQUFPO0FBQUEsVUFDSCxPQUFPO0FBQUEsVUFDUCxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsWUFBWSxjQUFjO0FBQUEsUUFDekQ7QUFBQSxNQUNKO0FBQ0EsZUFBUyxLQUFLLFlBQVksSUFBSTtBQUFBLElBQ2xDO0FBQ0EsV0FBTyxFQUFFLE9BQU8sTUFBTSxNQUFNLFNBQVM7QUFBQSxFQUN6QztBQUNBLFNBQU8sRUFBRSxPQUFPLE9BQU8sZ0JBQWdCLENBQUMsRUFBRTtBQUM5QztBQUNBLFNBQVMsMEJBQTBCLFFBQVEsTUFBTSxPQUFPO0FBQ3BELE1BQUksS0FBSyxPQUFPLFFBQVE7QUFDcEIsV0FBTyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU07QUFBQSxFQUNyQztBQUNBLE1BQUksTUFBTSxPQUFPLFFBQVE7QUFDckIsV0FBTyxPQUFPLEtBQUssR0FBRyxNQUFNLE1BQU07QUFBQSxFQUN0QztBQUNBLE1BQVMsUUFBUSxNQUFNO0FBQ25CLFdBQU87QUFDWCxRQUFNLFNBQVNBLGFBQVksS0FBSyxPQUFPLE1BQU0sS0FBSztBQUNsRCxNQUFJLENBQUMsT0FBTyxPQUFPO0FBQ2YsVUFBTSxJQUFJLE1BQU0sd0NBQTZDLEtBQUssVUFBVSxPQUFPLGNBQWMsQ0FBQyxFQUFFO0FBQUEsRUFDeEc7QUFDQSxTQUFPLFFBQVEsT0FBTztBQUN0QixTQUFPO0FBQ1g7QUEyRU8sSUFBTSxhQUEyQixnQkFBSyxhQUFhLGNBQWMsQ0FBQyxNQUFNLFFBQVE7QUFDbkYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsUUFBUTtBQUNoQyxVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLENBQU1HLGVBQWMsS0FBSyxHQUFHO0FBQzVCLGNBQVEsT0FBTyxLQUFLO0FBQUEsUUFDaEIsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFFBQ047QUFBQSxRQUNBO0FBQUEsTUFDSixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1g7QUFDQSxVQUFNLFFBQVEsQ0FBQztBQUNmLFFBQUksSUFBSSxRQUFRLEtBQUssUUFBUTtBQUN6QixZQUFNLFNBQVMsSUFBSSxRQUFRLEtBQUs7QUFDaEMsY0FBUSxRQUFRLENBQUM7QUFDakIsaUJBQVcsT0FBTyxRQUFRO0FBQ3RCLFlBQUksT0FBTyxRQUFRLFlBQVksT0FBTyxRQUFRLFlBQVksT0FBTyxRQUFRLFVBQVU7QUFDL0UsZ0JBQU0sU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsT0FBTyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDNUUsY0FBSSxrQkFBa0IsU0FBUztBQUMzQixrQkFBTSxLQUFLLE9BQU8sS0FBSyxDQUFDQyxZQUFXO0FBQy9CLGtCQUFJQSxRQUFPLE9BQU8sUUFBUTtBQUN0Qix3QkFBUSxPQUFPLEtBQUssR0FBUSxhQUFhLEtBQUtBLFFBQU8sTUFBTSxDQUFDO0FBQUEsY0FDaEU7QUFDQSxzQkFBUSxNQUFNLEdBQUcsSUFBSUEsUUFBTztBQUFBLFlBQ2hDLENBQUMsQ0FBQztBQUFBLFVBQ04sT0FDSztBQUNELGdCQUFJLE9BQU8sT0FBTyxRQUFRO0FBQ3RCLHNCQUFRLE9BQU8sS0FBSyxHQUFRLGFBQWEsS0FBSyxPQUFPLE1BQU0sQ0FBQztBQUFBLFlBQ2hFO0FBQ0Esb0JBQVEsTUFBTSxHQUFHLElBQUksT0FBTztBQUFBLFVBQ2hDO0FBQUEsUUFDSjtBQUFBLE1BQ0o7QUFDQSxVQUFJO0FBQ0osaUJBQVcsT0FBTyxPQUFPO0FBQ3JCLFlBQUksQ0FBQyxPQUFPLElBQUksR0FBRyxHQUFHO0FBQ2xCLHlCQUFlLGdCQUFnQixDQUFDO0FBQ2hDLHVCQUFhLEtBQUssR0FBRztBQUFBLFFBQ3pCO0FBQUEsTUFDSjtBQUNBLFVBQUksZ0JBQWdCLGFBQWEsU0FBUyxHQUFHO0FBQ3pDLGdCQUFRLE9BQU8sS0FBSztBQUFBLFVBQ2hCLE1BQU07QUFBQSxVQUNOO0FBQUEsVUFDQTtBQUFBLFVBQ0EsTUFBTTtBQUFBLFFBQ1YsQ0FBQztBQUFBLE1BQ0w7QUFBQSxJQUNKLE9BQ0s7QUFDRCxjQUFRLFFBQVEsQ0FBQztBQUNqQixpQkFBVyxPQUFPLFFBQVEsUUFBUSxLQUFLLEdBQUc7QUFDdEMsWUFBSSxRQUFRO0FBQ1I7QUFDSixjQUFNLFlBQVksSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDdEUsWUFBSSxxQkFBcUIsU0FBUztBQUM5QixnQkFBTSxJQUFJLE1BQU0sc0RBQXNEO0FBQUEsUUFDMUU7QUFDQSxZQUFJLFVBQVUsT0FBTyxRQUFRO0FBQ3pCLGtCQUFRLE9BQU8sS0FBSztBQUFBLFlBQ2hCLFFBQVE7QUFBQSxZQUNSLE1BQU07QUFBQSxZQUNOLFFBQVEsVUFBVSxPQUFPLElBQUksQ0FBQyxRQUFhLGNBQWMsS0FBSyxLQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQUEsWUFDakYsT0FBTztBQUFBLFlBQ1AsTUFBTSxDQUFDLEdBQUc7QUFBQSxZQUNWO0FBQUEsVUFDSixDQUFDO0FBQ0Qsa0JBQVEsTUFBTSxVQUFVLEtBQUssSUFBSSxVQUFVO0FBQzNDO0FBQUEsUUFDSjtBQUNBLGNBQU0sU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsT0FBTyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDNUUsWUFBSSxrQkFBa0IsU0FBUztBQUMzQixnQkFBTSxLQUFLLE9BQU8sS0FBSyxDQUFDQSxZQUFXO0FBQy9CLGdCQUFJQSxRQUFPLE9BQU8sUUFBUTtBQUN0QixzQkFBUSxPQUFPLEtBQUssR0FBUSxhQUFhLEtBQUtBLFFBQU8sTUFBTSxDQUFDO0FBQUEsWUFDaEU7QUFDQSxvQkFBUSxNQUFNLFVBQVUsS0FBSyxJQUFJQSxRQUFPO0FBQUEsVUFDNUMsQ0FBQyxDQUFDO0FBQUEsUUFDTixPQUNLO0FBQ0QsY0FBSSxPQUFPLE9BQU8sUUFBUTtBQUN0QixvQkFBUSxPQUFPLEtBQUssR0FBUSxhQUFhLEtBQUssT0FBTyxNQUFNLENBQUM7QUFBQSxVQUNoRTtBQUNBLGtCQUFRLE1BQU0sVUFBVSxLQUFLLElBQUksT0FBTztBQUFBLFFBQzVDO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFDQSxRQUFJLE1BQU0sUUFBUTtBQUNkLGFBQU8sUUFBUSxJQUFJLEtBQUssRUFBRSxLQUFLLE1BQU0sT0FBTztBQUFBLElBQ2hEO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSixDQUFDO0FBbUdNLElBQU0sV0FBeUIsZ0JBQUssYUFBYSxZQUFZLENBQUMsTUFBTSxRQUFRO0FBQy9FLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsUUFBTSxTQUFjLGNBQWMsSUFBSSxPQUFPO0FBQzdDLE9BQUssS0FBSyxTQUFTLElBQUksSUFBSSxNQUFNO0FBQ2pDLE9BQUssS0FBSyxVQUFVLElBQUksT0FBTyxLQUFLLE9BQy9CLE9BQU8sQ0FBQyxNQUFXLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQ2pELElBQUksQ0FBQ0MsT0FBTyxPQUFPQSxPQUFNLFdBQWdCLFlBQVlBLEVBQUMsSUFBSUEsR0FBRSxTQUFTLENBQUUsRUFDdkUsS0FBSyxHQUFHLENBQUMsSUFBSTtBQUNsQixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsU0FBUztBQUNqQyxVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLEtBQUssS0FBSyxPQUFPLElBQUksS0FBSyxHQUFHO0FBQzdCLGFBQU87QUFBQSxJQUNYO0FBQ0EsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDSixDQUFDO0FBQ0QsV0FBTztBQUFBLEVBQ1g7QUFDSixDQUFDO0FBQ00sSUFBTSxjQUE0QixnQkFBSyxhQUFhLGVBQWUsQ0FBQyxNQUFNLFFBQVE7QUFDckYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixPQUFLLEtBQUssU0FBUyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQ3JDLE9BQUssS0FBSyxVQUFVLElBQUksT0FBTyxLQUFLLElBQUksT0FDbkMsSUFBSSxDQUFDQSxPQUFPLE9BQU9BLE9BQU0sV0FBZ0IsWUFBWUEsRUFBQyxJQUFJQSxLQUFJQSxHQUFFLFNBQVMsSUFBSSxPQUFPQSxFQUFDLENBQUUsRUFDdkYsS0FBSyxHQUFHLENBQUMsSUFBSTtBQUNsQixPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsU0FBUztBQUNqQyxVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLEtBQUssS0FBSyxPQUFPLElBQUksS0FBSyxHQUFHO0FBQzdCLGFBQU87QUFBQSxJQUNYO0FBQ0EsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixNQUFNO0FBQUEsTUFDTixRQUFRLElBQUk7QUFBQSxNQUNaO0FBQUEsTUFDQTtBQUFBLElBQ0osQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQWdCTSxJQUFNLGdCQUE4QixnQkFBSyxhQUFhLGlCQUFpQixDQUFDLE1BQU0sUUFBUTtBQUN6RixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxTQUFTO0FBQ2pDLFVBQU0sT0FBTyxJQUFJLFVBQVUsUUFBUSxPQUFPLE9BQU87QUFDakQsUUFBSSxLQUFLLE9BQU87QUFDWixZQUFNLFNBQVMsZ0JBQWdCLFVBQVUsT0FBTyxRQUFRLFFBQVEsSUFBSTtBQUNwRSxhQUFPLE9BQU8sS0FBSyxDQUFDQyxZQUFXO0FBQzNCLGdCQUFRLFFBQVFBO0FBQ2hCLGVBQU87QUFBQSxNQUNYLENBQUM7QUFBQSxJQUNMO0FBQ0EsUUFBSSxnQkFBZ0IsU0FBUztBQUN6QixZQUFNLElBQVMsZUFBZTtBQUFBLElBQ2xDO0FBQ0EsWUFBUSxRQUFRO0FBQ2hCLFdBQU87QUFBQSxFQUNYO0FBQ0osQ0FBQztBQUNNLElBQU0sZUFBNkIsZ0JBQUssYUFBYSxnQkFBZ0IsQ0FBQyxNQUFNLFFBQVE7QUFDdkYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixPQUFLLEtBQUssUUFBUTtBQUNsQixPQUFLLEtBQUssU0FBUztBQUNuQixFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTTtBQUN2QyxXQUFPLElBQUksVUFBVSxLQUFLLFNBQVMsb0JBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxVQUFVLEtBQUssUUFBUSxNQUFTLENBQUMsSUFBSTtBQUFBLEVBQzVGLENBQUM7QUFDRCxFQUFLLFdBQVcsS0FBSyxNQUFNLFdBQVcsTUFBTTtBQUN4QyxVQUFNLFVBQVUsSUFBSSxVQUFVLEtBQUs7QUFDbkMsV0FBTyxVQUFVLElBQUksT0FBTyxLQUFVLFdBQVcsUUFBUSxNQUFNLENBQUMsS0FBSyxJQUFJO0FBQUEsRUFDN0UsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFFBQUksSUFBSSxVQUFVLEtBQUssVUFBVSxZQUFZO0FBQ3pDLGFBQU8sSUFBSSxVQUFVLEtBQUssSUFBSSxTQUFTLEdBQUc7QUFBQSxJQUM5QztBQUNBLFFBQUksUUFBUSxVQUFVLFFBQVc7QUFDN0IsYUFBTztBQUFBLElBQ1g7QUFDQSxXQUFPLElBQUksVUFBVSxLQUFLLElBQUksU0FBUyxHQUFHO0FBQUEsRUFDOUM7QUFDSixDQUFDO0FBQ00sSUFBTSxlQUE2QixnQkFBSyxhQUFhLGdCQUFnQixDQUFDLE1BQU0sUUFBUTtBQUN2RixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLEVBQUssV0FBVyxLQUFLLE1BQU0sU0FBUyxNQUFNLElBQUksVUFBVSxLQUFLLEtBQUs7QUFDbEUsRUFBSyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sSUFBSSxVQUFVLEtBQUssTUFBTTtBQUNwRSxFQUFLLFdBQVcsS0FBSyxNQUFNLFdBQVcsTUFBTTtBQUN4QyxVQUFNLFVBQVUsSUFBSSxVQUFVLEtBQUs7QUFDbkMsV0FBTyxVQUFVLElBQUksT0FBTyxLQUFVLFdBQVcsUUFBUSxNQUFNLENBQUMsU0FBUyxJQUFJO0FBQUEsRUFDakYsQ0FBQztBQUNELEVBQUssV0FBVyxLQUFLLE1BQU0sVUFBVSxNQUFNO0FBQ3ZDLFdBQU8sSUFBSSxVQUFVLEtBQUssU0FBUyxvQkFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJO0FBQUEsRUFDdkYsQ0FBQztBQUNELE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFFBQUksUUFBUSxVQUFVO0FBQ2xCLGFBQU87QUFDWCxXQUFPLElBQUksVUFBVSxLQUFLLElBQUksU0FBUyxHQUFHO0FBQUEsRUFDOUM7QUFDSixDQUFDO0FBQ00sSUFBTSxjQUE0QixnQkFBSyxhQUFhLGVBQWUsQ0FBQyxNQUFNLFFBQVE7QUFDckYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUV2QixPQUFLLEtBQUssUUFBUTtBQUNsQixFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNO0FBQ3BFLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFFBQUksUUFBUSxVQUFVLFFBQVc7QUFDN0IsY0FBUSxRQUFRLElBQUk7QUFJcEIsYUFBTztBQUFBLElBQ1g7QUFDQSxVQUFNLFNBQVMsSUFBSSxVQUFVLEtBQUssSUFBSSxTQUFTLEdBQUc7QUFDbEQsUUFBSSxrQkFBa0IsU0FBUztBQUMzQixhQUFPLE9BQU8sS0FBSyxDQUFDQyxZQUFXLG9CQUFvQkEsU0FBUSxHQUFHLENBQUM7QUFBQSxJQUNuRTtBQUNBLFdBQU8sb0JBQW9CLFFBQVEsR0FBRztBQUFBLEVBQzFDO0FBQ0osQ0FBQztBQUNELFNBQVMsb0JBQW9CLFNBQVMsS0FBSztBQUN2QyxNQUFJLFFBQVEsVUFBVSxRQUFXO0FBQzdCLFlBQVEsUUFBUSxJQUFJO0FBQUEsRUFDeEI7QUFDQSxTQUFPO0FBQ1g7QUFDTyxJQUFNLGVBQTZCLGdCQUFLLGFBQWEsZ0JBQWdCLENBQUMsTUFBTSxRQUFRO0FBQ3ZGLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsT0FBSyxLQUFLLFFBQVE7QUFDbEIsRUFBSyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sSUFBSSxVQUFVLEtBQUssTUFBTTtBQUNwRSxPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsUUFBUTtBQUNoQyxRQUFJLFFBQVEsVUFBVSxRQUFXO0FBQzdCLGNBQVEsUUFBUSxJQUFJO0FBQUEsSUFDeEI7QUFDQSxXQUFPLElBQUksVUFBVSxLQUFLLElBQUksU0FBUyxHQUFHO0FBQUEsRUFDOUM7QUFDSixDQUFDO0FBQ00sSUFBTSxrQkFBZ0MsZ0JBQUssYUFBYSxtQkFBbUIsQ0FBQyxNQUFNLFFBQVE7QUFDN0YsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTTtBQUN2QyxVQUFNQyxLQUFJLElBQUksVUFBVSxLQUFLO0FBQzdCLFdBQU9BLEtBQUksSUFBSSxJQUFJLENBQUMsR0FBR0EsRUFBQyxFQUFFLE9BQU8sQ0FBQ0MsT0FBTUEsT0FBTSxNQUFTLENBQUMsSUFBSTtBQUFBLEVBQ2hFLENBQUM7QUFDRCxPQUFLLEtBQUssUUFBUSxDQUFDLFNBQVMsUUFBUTtBQUNoQyxVQUFNLFNBQVMsSUFBSSxVQUFVLEtBQUssSUFBSSxTQUFTLEdBQUc7QUFDbEQsUUFBSSxrQkFBa0IsU0FBUztBQUMzQixhQUFPLE9BQU8sS0FBSyxDQUFDRixZQUFXLHdCQUF3QkEsU0FBUSxJQUFJLENBQUM7QUFBQSxJQUN4RTtBQUNBLFdBQU8sd0JBQXdCLFFBQVEsSUFBSTtBQUFBLEVBQy9DO0FBQ0osQ0FBQztBQUNELFNBQVMsd0JBQXdCLFNBQVMsTUFBTTtBQUM1QyxNQUFJLENBQUMsUUFBUSxPQUFPLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDdkQsWUFBUSxPQUFPLEtBQUs7QUFBQSxNQUNoQixNQUFNO0FBQUEsTUFDTixVQUFVO0FBQUEsTUFDVixPQUFPLFFBQVE7QUFBQSxNQUNmO0FBQUEsSUFDSixDQUFDO0FBQUEsRUFDTDtBQUNBLFNBQU87QUFDWDtBQWVPLElBQU0sWUFBMEIsZ0JBQUssYUFBYSxhQUFhLENBQUMsTUFBTSxRQUFRO0FBQ2pGLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsT0FBSyxLQUFLLFFBQVE7QUFDbEIsRUFBSyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sSUFBSSxVQUFVLEtBQUssTUFBTTtBQUNwRSxFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNO0FBQ3BFLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFVBQU0sU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLFNBQVMsR0FBRztBQUNsRCxRQUFJLGtCQUFrQixTQUFTO0FBQzNCLGFBQU8sT0FBTyxLQUFLLENBQUNHLFlBQVc7QUFDM0IsZ0JBQVEsUUFBUUEsUUFBTztBQUN2QixZQUFJQSxRQUFPLE9BQU8sUUFBUTtBQUN0QixrQkFBUSxRQUFRLElBQUksV0FBVztBQUFBLFlBQzNCLEdBQUc7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNILFFBQVFBLFFBQU8sT0FBTyxJQUFJLENBQUMsUUFBYSxjQUFjLEtBQUssS0FBVSxPQUFPLENBQUMsQ0FBQztBQUFBLFlBQ2xGO0FBQUEsWUFDQSxPQUFPLFFBQVE7QUFBQSxVQUNuQixDQUFDO0FBQ0Qsa0JBQVEsU0FBUyxDQUFDO0FBQUEsUUFDdEI7QUFDQSxlQUFPO0FBQUEsTUFDWCxDQUFDO0FBQUEsSUFDTDtBQUNBLFlBQVEsUUFBUSxPQUFPO0FBQ3ZCLFFBQUksT0FBTyxPQUFPLFFBQVE7QUFDdEIsY0FBUSxRQUFRLElBQUksV0FBVztBQUFBLFFBQzNCLEdBQUc7QUFBQSxRQUNILE9BQU87QUFBQSxVQUNILFFBQVEsT0FBTyxPQUFPLElBQUksQ0FBQyxRQUFhLGNBQWMsS0FBSyxLQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQUEsUUFDbEY7QUFBQSxRQUNBLE9BQU8sUUFBUTtBQUFBLE1BQ25CLENBQUM7QUFDRCxjQUFRLFNBQVMsQ0FBQztBQUFBLElBQ3RCO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSixDQUFDO0FBZ0JNLElBQU0sV0FBeUIsZ0JBQUssYUFBYSxZQUFZLENBQUMsTUFBTSxRQUFRO0FBQy9FLFdBQVMsS0FBSyxNQUFNLEdBQUc7QUFDdkIsRUFBSyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTTtBQUM3RCxFQUFLLFdBQVcsS0FBSyxNQUFNLFNBQVMsTUFBTSxJQUFJLEdBQUcsS0FBSyxLQUFLO0FBQzNELEVBQUssV0FBVyxLQUFLLE1BQU0sVUFBVSxNQUFNLElBQUksSUFBSSxLQUFLLE1BQU07QUFDOUQsT0FBSyxLQUFLLFFBQVEsQ0FBQyxTQUFTLFFBQVE7QUFDaEMsVUFBTSxPQUFPLElBQUksR0FBRyxLQUFLLElBQUksU0FBUyxHQUFHO0FBQ3pDLFFBQUksZ0JBQWdCLFNBQVM7QUFDekIsYUFBTyxLQUFLLEtBQUssQ0FBQ0MsVUFBUyxpQkFBaUJBLE9BQU0sS0FBSyxHQUFHLENBQUM7QUFBQSxJQUMvRDtBQUNBLFdBQU8saUJBQWlCLE1BQU0sS0FBSyxHQUFHO0FBQUEsRUFDMUM7QUFDSixDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsTUFBTSxLQUFLLEtBQUs7QUFDdEMsTUFBUyxRQUFRLElBQUksR0FBRztBQUNwQixXQUFPO0FBQUEsRUFDWDtBQUNBLFNBQU8sSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLE9BQU8sS0FBSyxPQUFPLFFBQVEsS0FBSyxPQUFPLEdBQUcsR0FBRztBQUMzRTtBQUNPLElBQU0sZUFBNkIsZ0JBQUssYUFBYSxnQkFBZ0IsQ0FBQyxNQUFNLFFBQVE7QUFDdkYsV0FBUyxLQUFLLE1BQU0sR0FBRztBQUN2QixFQUFLLFdBQVcsS0FBSyxNQUFNLGNBQWMsTUFBTSxJQUFJLFVBQVUsS0FBSyxVQUFVO0FBQzVFLEVBQUssV0FBVyxLQUFLLE1BQU0sVUFBVSxNQUFNLElBQUksVUFBVSxLQUFLLE1BQU07QUFDcEUsRUFBSyxXQUFXLEtBQUssTUFBTSxTQUFTLE1BQU0sSUFBSSxVQUFVLEtBQUssS0FBSztBQUNsRSxFQUFLLFdBQVcsS0FBSyxNQUFNLFVBQVUsTUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNO0FBQ3BFLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBUyxRQUFRO0FBQ2hDLFVBQU0sU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLFNBQVMsR0FBRztBQUNsRCxRQUFJLGtCQUFrQixTQUFTO0FBQzNCLGFBQU8sT0FBTyxLQUFLLG9CQUFvQjtBQUFBLElBQzNDO0FBQ0EsV0FBTyxxQkFBcUIsTUFBTTtBQUFBLEVBQ3RDO0FBQ0osQ0FBQztBQUNELFNBQVMscUJBQXFCLFNBQVM7QUFDbkMsVUFBUSxRQUFRLE9BQU8sT0FBTyxRQUFRLEtBQUs7QUFDM0MsU0FBTztBQUNYO0FBbUVPLElBQU0sYUFBMkIsZ0JBQUssYUFBYSxjQUFjLENBQUMsTUFBTSxRQUFRO0FBQ25GLEVBQU8sVUFBVSxLQUFLLE1BQU0sR0FBRztBQUMvQixXQUFTLEtBQUssTUFBTSxHQUFHO0FBQ3ZCLE9BQUssS0FBSyxRQUFRLENBQUMsU0FBU0MsT0FBTTtBQUM5QixXQUFPO0FBQUEsRUFDWDtBQUNBLE9BQUssS0FBSyxRQUFRLENBQUMsWUFBWTtBQUMzQixVQUFNLFFBQVEsUUFBUTtBQUN0QixVQUFNQyxLQUFJLElBQUksR0FBRyxLQUFLO0FBQ3RCLFFBQUlBLGNBQWEsU0FBUztBQUN0QixhQUFPQSxHQUFFLEtBQUssQ0FBQ0EsT0FBTSxtQkFBbUJBLElBQUcsU0FBUyxPQUFPLElBQUksQ0FBQztBQUFBLElBQ3BFO0FBQ0EsdUJBQW1CQSxJQUFHLFNBQVMsT0FBTyxJQUFJO0FBQzFDO0FBQUEsRUFDSjtBQUNKLENBQUM7QUFDRCxTQUFTLG1CQUFtQixRQUFRLFNBQVMsT0FBTyxNQUFNO0FBQ3RELE1BQUksQ0FBQyxRQUFRO0FBQ1QsVUFBTSxPQUFPO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0E7QUFBQTtBQUFBLE1BQ0EsTUFBTSxDQUFDLEdBQUksS0FBSyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUU7QUFBQTtBQUFBLE1BQ3BDLFVBQVUsQ0FBQyxLQUFLLEtBQUssSUFBSTtBQUFBO0FBQUEsSUFFN0I7QUFDQSxRQUFJLEtBQUssS0FBSyxJQUFJO0FBQ2QsV0FBSyxTQUFTLEtBQUssS0FBSyxJQUFJO0FBQ2hDLFlBQVEsT0FBTyxLQUFVLE1BQU0sSUFBSSxDQUFDO0FBQUEsRUFDeEM7QUFDSjs7O0FDbnJETyxJQUFNLGFBQWEsQ0FBQyxTQUFTO0FBQ2hDLFFBQU1DLEtBQUksT0FBTztBQUNqQixVQUFRQSxJQUFHO0FBQUEsSUFDUCxLQUFLLFVBQVU7QUFDWCxhQUFPLE9BQU8sTUFBTSxJQUFJLElBQUksUUFBUTtBQUFBLElBQ3hDO0FBQUEsSUFDQSxLQUFLLFVBQVU7QUFDWCxVQUFJLE1BQU0sUUFBUSxJQUFJLEdBQUc7QUFDckIsZUFBTztBQUFBLE1BQ1g7QUFDQSxVQUFJLFNBQVMsTUFBTTtBQUNmLGVBQU87QUFBQSxNQUNYO0FBQ0EsVUFBSSxPQUFPLGVBQWUsSUFBSSxNQUFNLE9BQU8sYUFBYSxLQUFLLGFBQWE7QUFDdEUsZUFBTyxLQUFLLFlBQVk7QUFBQSxNQUM1QjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0EsU0FBT0E7QUFDWDtBQUNBLElBQU0sUUFBUSxNQUFNO0FBQ2hCLFFBQU0sVUFBVTtBQUFBLElBQ1osUUFBUSxFQUFFLE1BQU0sY0FBYyxNQUFNLFVBQVU7QUFBQSxJQUM5QyxNQUFNLEVBQUUsTUFBTSxTQUFTLE1BQU0sVUFBVTtBQUFBLElBQ3ZDLE9BQU8sRUFBRSxNQUFNLFNBQVMsTUFBTSxVQUFVO0FBQUEsSUFDeEMsS0FBSyxFQUFFLE1BQU0sU0FBUyxNQUFNLFVBQVU7QUFBQSxFQUMxQztBQUNBLFdBQVMsVUFBVSxRQUFRO0FBQ3ZCLFdBQU8sUUFBUSxNQUFNLEtBQUs7QUFBQSxFQUM5QjtBQUNBLFFBQU0sUUFBUTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sVUFBVTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sS0FBSztBQUFBLElBQ0wsa0JBQWtCO0FBQUEsRUFDdEI7QUFDQSxTQUFPLENBQUNDLFdBQVU7QUFDZCxZQUFRQSxPQUFNLE1BQU07QUFBQSxNQUNoQixLQUFLO0FBQ0QsZUFBTywyQkFBMkJBLE9BQU0sUUFBUSxjQUFjLFdBQVdBLE9BQU0sS0FBSyxDQUFDO0FBQUEsTUFDekYsS0FBSztBQUNELFlBQUlBLE9BQU0sT0FBTyxXQUFXO0FBQ3hCLGlCQUFPLDJCQUFnQyxtQkFBbUJBLE9BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM5RSxlQUFPLG1DQUF3QyxXQUFXQSxPQUFNLFFBQVEsR0FBRyxDQUFDO0FBQUEsTUFDaEYsS0FBSyxXQUFXO0FBQ1osY0FBTSxNQUFNQSxPQUFNLFlBQVksT0FBTztBQUNyQyxjQUFNLFNBQVMsVUFBVUEsT0FBTSxNQUFNO0FBQ3JDLFlBQUk7QUFDQSxpQkFBTyxxQkFBcUJBLE9BQU0sVUFBVSxPQUFPLFlBQVksR0FBRyxHQUFHQSxPQUFNLFFBQVEsU0FBUyxDQUFDLElBQUksT0FBTyxRQUFRLFVBQVU7QUFDOUgsZUFBTyxxQkFBcUJBLE9BQU0sVUFBVSxPQUFPLFVBQVUsR0FBRyxHQUFHQSxPQUFNLFFBQVEsU0FBUyxDQUFDO0FBQUEsTUFDL0Y7QUFBQSxNQUNBLEtBQUssYUFBYTtBQUNkLGNBQU0sTUFBTUEsT0FBTSxZQUFZLE9BQU87QUFDckMsY0FBTSxTQUFTLFVBQVVBLE9BQU0sTUFBTTtBQUNyQyxZQUFJLFFBQVE7QUFDUixpQkFBTyx1QkFBdUJBLE9BQU0sTUFBTSxZQUFZLEdBQUcsR0FBR0EsT0FBTSxRQUFRLFNBQVMsQ0FBQyxJQUFJLE9BQU8sSUFBSTtBQUFBLFFBQ3ZHO0FBQ0EsZUFBTyx1QkFBdUJBLE9BQU0sTUFBTSxVQUFVLEdBQUcsR0FBR0EsT0FBTSxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQ3RGO0FBQUEsTUFDQSxLQUFLLGtCQUFrQjtBQUNuQixjQUFNLFNBQVNBO0FBQ2YsWUFBSSxPQUFPLFdBQVcsZUFBZTtBQUNqQyxpQkFBTyxvQ0FBb0MsT0FBTyxNQUFNO0FBQUEsUUFDNUQ7QUFDQSxZQUFJLE9BQU8sV0FBVztBQUNsQixpQkFBTyxrQ0FBa0MsT0FBTyxNQUFNO0FBQzFELFlBQUksT0FBTyxXQUFXO0FBQ2xCLGlCQUFPLGlDQUFpQyxPQUFPLFFBQVE7QUFDM0QsWUFBSSxPQUFPLFdBQVc7QUFDbEIsaUJBQU8sc0NBQXNDLE9BQU8sT0FBTztBQUMvRCxlQUFPLFdBQVcsTUFBTSxPQUFPLE1BQU0sS0FBS0EsT0FBTSxNQUFNO0FBQUEsTUFDMUQ7QUFBQSxNQUNBLEtBQUs7QUFDRCxlQUFPLHlDQUF5Q0EsT0FBTSxPQUFPO0FBQUEsTUFDakUsS0FBSztBQUNELGVBQU8sbUJBQW1CQSxPQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sRUFBRSxLQUFVLFdBQVdBLE9BQU0sTUFBTSxJQUFJLENBQUM7QUFBQSxNQUNwRyxLQUFLO0FBQ0QsZUFBTyxrQkFBa0JBLE9BQU0sTUFBTTtBQUFBLE1BQ3pDLEtBQUs7QUFDRCxlQUFPO0FBQUEsTUFDWCxLQUFLO0FBQ0QsZUFBTyxvQkFBb0JBLE9BQU0sTUFBTTtBQUFBLE1BQzNDO0FBQ0ksZUFBTztBQUFBLElBQ2Y7QUFBQSxFQUNKO0FBQ0o7QUFDZSxTQUFSQyxjQUFvQjtBQUN2QixTQUFPO0FBQUEsSUFDSCxhQUFhLE1BQU07QUFBQSxFQUN2QjtBQUNKOzs7QUNwSE8sSUFBTSxVQUFVLE9BQU8sV0FBVztBQUNsQyxJQUFNLFNBQVMsT0FBTyxVQUFVO0FBQ2hDLElBQU0sZUFBTixNQUFtQjtBQUFBLEVBQ3RCLGNBQWM7QUFDVixTQUFLLE9BQU8sb0JBQUksSUFBSTtBQUNwQixTQUFLLFNBQVMsb0JBQUksSUFBSTtBQUFBLEVBQzFCO0FBQUEsRUFDQSxJQUFJLFdBQVcsT0FBTztBQUNsQixVQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLFNBQUssS0FBSyxJQUFJLFFBQVEsSUFBSTtBQUMxQixRQUFJLFFBQVEsT0FBTyxTQUFTLFlBQVksUUFBUSxNQUFNO0FBQ2xELFVBQUksS0FBSyxPQUFPLElBQUksS0FBSyxFQUFFLEdBQUc7QUFDMUIsY0FBTSxJQUFJLE1BQU0sTUFBTSxLQUFLLEVBQUUsaUNBQWlDO0FBQUEsTUFDbEU7QUFDQSxXQUFLLE9BQU8sSUFBSSxLQUFLLElBQUksTUFBTTtBQUFBLElBQ25DO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFBQSxFQUNBLFFBQVE7QUFDSixTQUFLLE9BQU8sb0JBQUksSUFBSTtBQUNwQixTQUFLLFNBQVMsb0JBQUksSUFBSTtBQUN0QixXQUFPO0FBQUEsRUFDWDtBQUFBLEVBQ0EsT0FBTyxRQUFRO0FBQ1gsVUFBTSxPQUFPLEtBQUssS0FBSyxJQUFJLE1BQU07QUFDakMsUUFBSSxRQUFRLE9BQU8sU0FBUyxZQUFZLFFBQVEsTUFBTTtBQUNsRCxXQUFLLE9BQU8sT0FBTyxLQUFLLEVBQUU7QUFBQSxJQUM5QjtBQUNBLFNBQUssS0FBSyxPQUFPLE1BQU07QUFDdkIsV0FBTztBQUFBLEVBQ1g7QUFBQSxFQUNBLElBQUksUUFBUTtBQUdSLFVBQU0sSUFBSSxPQUFPLEtBQUs7QUFDdEIsUUFBSSxHQUFHO0FBQ0gsWUFBTUMsTUFBSyxFQUFFLEdBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUc7QUFDcEMsYUFBT0EsSUFBRztBQUNWLGFBQU8sRUFBRSxHQUFHQSxLQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksTUFBTSxFQUFFO0FBQUEsSUFDN0M7QUFDQSxXQUFPLEtBQUssS0FBSyxJQUFJLE1BQU07QUFBQSxFQUMvQjtBQUFBLEVBQ0EsSUFBSSxRQUFRO0FBQ1IsV0FBTyxLQUFLLEtBQUssSUFBSSxNQUFNO0FBQUEsRUFDL0I7QUFDSjtBQUVPLFNBQVMsV0FBVztBQUN2QixTQUFPLElBQUksYUFBYTtBQUM1QjtBQUNPLElBQU0saUJBQStCLHlCQUFTOzs7QUMvQzlDLFNBQVMsUUFBUUMsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQVFPLFNBQVMsT0FBT0MsUUFBTyxRQUFRO0FBQ2xDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsTUFBTUEsUUFBTyxRQUFRO0FBQ2pDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLElBQ1QsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLElBQ1QsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsUUFBUUEsUUFBTyxRQUFRO0FBQ25DLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLElBQ1QsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVMsS0FBS0EsUUFBTyxRQUFRO0FBQ2hDLFNBQU8sSUFBSUEsT0FBTTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsR0FBUSxnQkFBZ0IsTUFBTTtBQUFBLEVBQ2xDLENBQUM7QUFDTDtBQUNPLFNBQVNDLFFBQU9ELFFBQU8sUUFBUTtBQUNsQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFBLFFBQU8sUUFBUTtBQUNuQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE1BQU1BLFFBQU8sUUFBUTtBQUNqQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE9BQU9BLFFBQU8sUUFBUTtBQUNsQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE1BQU1BLFFBQU8sUUFBUTtBQUNqQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLEtBQUtBLFFBQU8sUUFBUTtBQUNoQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE9BQU9BLFFBQU8sUUFBUTtBQUNsQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE1BQU1BLFFBQU8sUUFBUTtBQUNqQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE1BQU1BLFFBQU8sUUFBUTtBQUNqQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFBLFFBQU8sUUFBUTtBQUNuQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFBLFFBQU8sUUFBUTtBQUNuQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLFFBQVFBLFFBQU8sUUFBUTtBQUNuQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLFdBQVdBLFFBQU8sUUFBUTtBQUN0QyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FBQ0w7QUFDTyxTQUFTLE1BQU1BLFFBQU8sUUFBUTtBQUNqQyxTQUFPLElBQUlBLE9BQU07QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLEdBQVEsZ0JBQWdCLE1BQU07QUFBQSxFQUNsQyxDQUFDO0FB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LENBQUM7QUFJTSxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUUvRSxFQUFLLFVBQVUsS0FBSyxNQUFNLEdBQUc7QUFDN0Isa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFVBQXdCLGdCQUFLLGFBQWEsV0FBVyxDQUFDLE1BQU0sUUFBUTtBQUU3RSxFQUFLLFNBQVMsS0FBSyxNQUFNLEdBQUc7QUFDNUIsa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFNBQXVCLGdCQUFLLGFBQWEsVUFBVSxDQUFDLE1BQU0sUUFBUTtBQUUzRSxFQUFLLFFBQVEsS0FBSyxNQUFNLEdBQUc7QUFDM0Isa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFdBQXlCLGdCQUFLLGFBQWEsWUFBWSxDQUFDLE1BQU0sUUFBUTtBQUUvRSxFQUFLLFVBQVUsS0FBSyxNQUFNLEdBQUc7QUFDN0Isa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFVBQXdCLGdCQUFLLGFBQWEsV0FBVyxDQUFDLE1BQU0sUUFBUTtBQUU3RSxFQUFLLFNBQVMsS0FBSyxNQUFNLEdBQUc7QUFDNUIsa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFVBQXdCLGdCQUFLLGFBQWEsV0FBVyxDQUFDLE1BQU0sUUFBUTtBQUU3RSxFQUFLLFNBQVMsS0FBSyxNQUFNLEdBQUc7QUFDNUIsa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixFQUFLLFdBQVcsS0FBSyxNQUFNLEdBQUc7QUFDOUIsa0JBQWdCLEtBQUssTUFBTSxHQUFHO0FBQ2xDLENBQUM7QUFJTSxJQUFNLFlBQTBCLGdCQUFLLGFBQWEsYUFBYSxDQUFDLE1BQU0sUUFBUTtBQUNqRixFQUFLLFdBQVcsS0FBSyxNQUFNLEdB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ZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxNQUFNLE9BQU87QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLElBQ0UsTUFBTSxPQUFPO0FBQUEsSUFDYixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLE1BQU0sT0FBTztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsYUFB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QUFNLENBQUMsUUFBUTtBQUN4QixJQUFLLGdCQUFVLGVBQWUsUUFBUSxJQUFJLFVBQVUsT0FBTyxHQUFHLENBQUM7QUFDL0QsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbImV4cG9ydHMiLCAib3MiLCAiZXhwb3J0cyIsICJpc3N1ZSIsICJzIiwgImNyeXB0byIsICJmcyIsICJvcyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAieCIsICJleHBvcnRzIiwgImFzc2VydCIsICJ1dGlsIiwgInNlbGYiLCAib3B0aW9ucyIsICJjYiIsICJlcnJvciIsICJzb2NrZXQiLCAicmVxdWlyZV90dW5uZWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgIkJsb2IiLCAidiIsICJvYmplY3QiLCAicGF0aCIsICJpZHgiLCAic3RyZWFtIiwgImVyciIsICJtIiwgIngiLCAibiIsICJoYW5kbGVyIiwgIlJlYWRhYmxlU3RyZWFtIiwgIml0ZXJhdG9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInIiLCAiY2giLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVhZGFibGVTdHJlYW0iLCAibiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzZWxmIiwgInIiLCAibSIsICJoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInNlbGYiLCAiZXYiLCAiY2IiLCAiciIsICJuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImxjIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVhZGFibGUiLCAic2VsZiIsICJjYiIsICJuIiwgInIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXYiLCAiY2IiLCAicmVxdWlyZV9jb25zdGFudHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWVzdENhY2hlIiwgIkRPTUV4Y2VwdGlvbiIsICJzdHJ1Y3R1cmVkQ2xvbmUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV91dGlsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBlcmZvcm1hbmNlIiwgImFzc2VydCIsICJjcnlwdG8iLCAicmVxdWVzdCIsICJvYmplY3QiLCAiYyIsICJpc0Fib3J0ZWQiLCAiaXRlcmF0b3IiLCAia2luZCIsICJlIiwgIlJlYWRhYmxlU3RyZWFtIiwgInJlcXVpcmVfc3ltYm9scyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJJIiwgIngiLCAibiIsICJyIiwgImtleXMiLCAicmVxdWlyZWQiLCAiVCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiYXRvYiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJCbG9iIiwgIkZpbGUiLCAibiIsICJ0IiwgImQiLCAicyIsICJvYmplY3QiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiQmxvYiIsICJGaWxlIiwgIkZvcm1EYXRhIiwgImVudHJ5IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWwiLCAiRm9ybURhdGEiLCAiRE9NRXhjZXB0aW9uIiwgInN0cnVjdHVyZWRDbG9uZSIsICJCbG9iIiwgImFzc2VydCIsICJjcnlwdG8iLCAiUmVhZGFibGVTdHJlYW0iLCAiRmlsZSIsICJvYmplY3QiLCAiZXNjYXBlIiwgImNodW5rIiwgIml0ZXJhdG9yIiwgImVycm9yIiwgImUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgInV0aWwiLCAiUmVxdWVzdCIsICJwYXRoIiwgImhhbmRsZXIiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJlcnIiLCAiaGFuZGxlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAidXRpbCIsICJob3N0bmFtZSIsICJzZXNzaW9uIiwgImNiIiwgIm9uQ29ubmVjdFRpbWVvdXQiLCAiZXhwb3J0cyIsICJFUlJPUiIsICJleHBvcnRzIiwgIlRZUEUiLCAiRkxBR1MiLCAiTEVOSUVOVF9GTEFHUyIsICJNRVRIT0RTIiwgIkZJTklTSCIsICJjIiwgIkhFQURFUl9TVEFURSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgImFzc2VydCIsICJFRSIsICJoYW5kbGVyIiwgImVycm9yIiwgInBhdGgiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaGFuZGxlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAidXRpbCIsICJSZXF1ZXN0IiwgImNvbm5lY3QiLCAiY2IiLCAiaGFuZGxlciIsICJyZXF1ZXN0IiwgImUiLCAiaG9zdG5hbWUiLCAic29ja2V0IiwgInBhdGgiLCAiaGVhZGVycyIsICJwaXBlIiwgImVyciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJvcmlnaW4iLCAiZXJyb3IiLCAiZGlzcGF0Y2hlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiIiwgInBvb2wiLCAiZGlzcGF0Y2hlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgIldlYWtSZWYiLCAiaGFuZGxlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiUmVhZGFibGUiLCAidXRpbCIsICJCbG9iIiwgIm5vb3AiLCAiZXYiLCAic2VsZiIsICJjb25zdW1lIiwgInJlcXVpcmVfdXRpbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic2VsZiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJSZWFkYWJsZSIsICJ1dGlsIiwgInJlcXVlc3QiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJjYWxsYmFjayIsICJyZXMiLCAib3BhcXVlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlYWRhYmxlIiwgInV0aWwiLCAiYXNzZXJ0IiwgImhhbmRsZXIiLCAiYm9keSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgImFzc2VydCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzUHJvbWlzZSIsICJjbG9uZSIsICJtb2NrRGlzcGF0Y2giLCAicGF0aCIsICJxcCIsICJnZXRSZXNwb25zZURhdGEiLCAieCIsICJoYW5kbGVyIiwgImVycm9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldFJlc3BvbnNlRGF0YSIsICJzdGF0dXNDb2RlIiwgImRhdGEiLCAicmVzcG9uc2VPcHRpb25zIiwgIm5ld01vY2tEaXNwYXRjaCIsICJlcnJvciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjYiIsICJwYXRoIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVVJMIiwgIm9wdHMiLCAiaGFuZGxlciIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiY2IiLCAiZXJyIiwgInJlcXVpcmVfZ2xvYmFsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhhbmRsZXIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJhc3NlcnQiLCAib2JqZWN0IiwgIkhlYWRlcnMiLCAiYiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJIZWFkZXJzIiwgInV0aWwiLCAiaXNBYm9ydGVkIiwgIkRPTUV4Y2VwdGlvbiIsICJGb3JtRGF0YSIsICJhc3NlcnQiLCAiUmVhZGFibGVTdHJlYW0iLCAiUmVzcG9uc2UiLCAiX1Jlc3BvbnNlIiwgInJlcXVpcmVfcmVxdWVzdCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJIZWFkZXJzIiwgInV0aWwiLCAicmVxdWVzdENhY2hlIiwgImFzc2VydCIsICJSZXF1ZXN0IiwgInJlcXVlc3QiLCAid2luZG93IiwgImFjIiwgIm5ld1JlcXVlc3QiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVzcG9uc2UiLCAiSGVhZGVycyIsICJSZXF1ZXN0IiwgImlzQWJvcnRlZCIsICJhc3NlcnQiLCAiRE9NRXhjZXB0aW9uIiwgIkVFIiwgIlJlYWRhYmxlIiwgIlJlYWRhYmxlU3RyZWFtIiwgImVycm9yIiwgImZldGNoIiwgImUiLCAicmVxdWVzdCIsICJnbG9iYWxUaGlzIiwgIml0ZXJhdG9yIiwgIm4iLCAieCIsICJyZXF1aXJlX3N5bWJvbHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV91dGlsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkRPTUV4Y2VwdGlvbiIsICJidG9hIiwgImVycm9yIiwgImUiLCAidHlwZSIsICJiIiwgImMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV9zeW1ib2xzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfdXRpbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVzcG9uc2UiLCAiUmVxdWVzdCIsICJhc3NlcnQiLCAicmVxdWVzdCIsICJyIiwgImUiLCAiY2FjaGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWVzdCIsICJjYWNoZSIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX3V0aWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGF0aCIsICJkYXRlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc2VydCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJIZWFkZXJzIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfc3ltYm9scyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX3V0aWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJIZWFkZXJzIiwgImNyeXB0byIsICJyZXF1ZXN0IiwgImVycm9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNyeXB0byIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJfIiwgImJvZHkiLCAibiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJET01FeGNlcHRpb24iLCAiV2ViU29ja2V0IiwgImUiLCAiYWIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJoYW5kbGVyIiwgInBhdGgiLCAiZmV0Y2giLCAiV2ViU29ja2V0IiwgInBtIiwgIkh0dHBDb2RlcyIsICJleHBvcnRzIiwgIkhlYWRlcnMiLCAiTWVkaWFUeXBlcyIsICJ1c2VyQWdlbnQiLCAiaW5mbyIsICJoYW5kbGVyIiwgImhhbmRsZVJlc3VsdCIsICJsb3dlcmNhc2VLZXlzIiwgIl9kZWZhdWx0IiwgIm1zIiwgImMiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAicGF0aCIsICJleHBvcnRzIiwgImZzIiwgInBhdGgiLCAiZXhwb3J0cyIsICJpc0RpcmVjdG9yeSIsICJfYSIsICJwYXRoIiwgImV4cG9ydHMiLCAibXYiLCAiY2hlY2siLCAiZSIsICJvcyIsICJwYXRoIiwgInMiLCAibiIsICJ4IiwgImVycm9yIiwgImV4cG9ydHMiLCAiYyIsICJleHBvcnRzIiwgIl9iIiwgInZlcnNpb24iLCAiX2IiLCAiX2MiLCAiZXhwb3J0cyIsICJvcyIsICJwYXRoIiwgIkV4aXRDb2RlIiwgImV4cG9ydHMiLCAic2V0U2VjcmV0IiwgImdldElucHV0IiwgIngiLCAic2V0T3V0cHV0IiwgInNldEZhaWxlZCIsICJlcnJvciIsICJ3YXJuaW5nIiwgImluZm8iLCAic3RhcnRHcm91cCIsICJlbmRHcm91cCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJOdWxsT2JqZWN0IiwgInBhcnNlIiwgInNhZmVQYXJzZSIsICJleHBvcnRzIiwgInMiLCAiYyIsICJfIiwgInNhZmVTdHJpbmdpZnkiLCAiYiIsICJjMSIsICJ4IiwgIlVzZWRWYWx1ZVN0YXRlIiwgImV4cG9ydHMiLCAiX2IiLCAicyIsICJjIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAibiIsICJlIiwgIl9iIiwgImMiLCAiTjEiLCAieCIsICJ5IiwgImV4cG9ydHMiLCAic2VsZiIsICJmIiwgIngiLCAibWVyZ2VWYWx1ZXMiLCAiVHlwZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiRSIsICJleHBvcnRzIiwgIngiLCAiZXhwb3J0cyIsICJzZWxmIiwgImV4cG9ydHMiLCAiRGF0YVR5cGUiLCAiZXhwb3J0cyIsICJ0cyIsICJ0IiwgIkVRIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImUiLCAiX2EiLCAic2VsZiIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImIiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2IiLCAiZXhwb3J0cyIsICJfIiwgImV4cG9ydHMiLCAic2VsZiIsICJ0IiwgInRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV91dGlscyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpcHY2IiwgInBhdGgiLCAiZXNjIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGFyc2UiLCAicyIsICJlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJvIiwgInMiLCAiX2MiLCAiX2IiLCAiX2UiLCAiX2giLCAiX2siLCAiX20iLCAiX3EiLCAiX3MiLCAiX3UiLCAiX3ciLCAiX3oiLCAiXzAiLCAiQWp2IiwgInYiLCAiZSIsICJjYWNoZUtleSIsICJ0IiwgImV4cG9ydHMiLCAic2VsZiIsICJ2IiwgImV4cG9ydHMiLCAiZSIsICJjb3JlIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAidCIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAidiIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJsIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlcnJvciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXJyb3IiLCAic2VsZiIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIkRpc2NyRXJyb3IiLCAiZXhwb3J0cyIsICJlcnJvciIsICJyZXF1aXJlZCIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkFqdiIsICJ2IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiZGF0ZSIsICJkMSIsICJkMiIsICJ0aW1lIiwgImUiLCAiZXJyb3IiLCAiZXhwb3J0cyIsICJzZWxmIiwgImYiLCAiZnMiLCAiX2IiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiaW1wb3J0X25vZGVfZnMiLCAiY29yZSIsICJvYmplY3QiLCAiYiIsICJjIiwgIl8iLCAibGl0ZXJhbCIsICJWRVJTSU9OIiwgImlzUGxhaW5PYmplY3QiLCAiZmV0Y2giLCAiZXJyb3IiLCAidiIsICJ3aXRoRGVmYXVsdHMiLCAicmVxdWVzdCIsICJlcnJvciIsICJyZXF1ZXN0IiwgInJlcXVlc3QiLCAiYXV0aCIsICJhdXRoMiIsICJyZXF1ZXN0IiwgImVycm9yIiwgImVuZHBvaW50IiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJhdXRoIiwgImVycm9yIiwgImhvb2siLCAicmVxdWVzdCIsICJlbmRwb2ludCIsICJhdXRoIiwgImhvb2siLCAiZW5kcG9pbnQiLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJiYXNlNjQiLCAiaW1wb3J0X25vZGVfY3J5cHRvIiwgIml0ZW0iLCAiZXJyb3IiLCAiY2FjaGUiLCAiY2FjaGVLZXkiLCAic3RyaW5nIiwgInJlcXVlc3QiLCAiciIsICJhdXRoIiwgImMiLCAiaG9vayIsICJlbmRwb2ludCIsICJWRVJTSU9OIiwgIm5hbWUiLCAibWV0aG9kIiwgImhvb2siLCAiZXJyb3IiLCAiaG9vayIsICJWRVJTSU9OIiwgImUiLCAid2l0aERlZmF1bHRzIiwgIm5ld1JlcXVlc3QiLCAiYXV0aCIsICJob29rIiwgInJlcXVlc3QiLCAiZW5kcG9pbnQiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgImhvb2siLCAiYXV0aCIsICJWRVJTSU9OIiwgInJlcXVlc3QiLCAicGF0aCIsICJlcnJvciIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgImVuZHBvaW50IiwgImNhY2hlIiwgIm9wdGlvbnMiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgIk9jdG9raXQiLCAiVkVSU0lPTiIsICJjb3JlIiwgImltcG9ydF9jcnlwdG8iLCAiaW1wb3J0X2NoaWxkX3Byb2Nlc3MiLCAiaW1wb3J0X2ZzIiwgImltcG9ydF9vcyIsICJpbXBvcnRfcGF0aCIsICJpbXBvcnRfY3J5cHRvIiwgImltcG9ydF9wcm9taXNlcyIsICJpbXBvcnRfZXZlbnRzIiwgImltcG9ydF9mcyIsICJpbXBvcnRfY2hpbGRfcHJvY2VzcyIsICJpbXBvcnRfY3J5cHRvIiwgImltcG9ydF9vcyIsICJpbXBvcnRfcGF0aCIsICJpbXBvcnRfcHJvbWlzZXMiLCAiaW1wb3J0X29zIiwgIiRTIiwgIlhTIiwgIlBrIiwgIlJrIiwgImh3IiwgIlN2IiwgInZ2IiwgImt2IiwgIm1PIiwgImJUIiwgIng3IiwgImNUIiwgImhUIiwgInBUIiwgIm1UIiwgImxUIiwgInlUIiwgInRPIiwgInVUIiwgImdUIiwgImVUIiwgIlkyIiwgIlBVIiwgImtVIiwgInNUIiwgIlgyIiwgIlcyIiwgIiR4IiwgIkJ4IiwgIk54IiwgInp4IiwgIk14IiwgIng3IiwgIm55IiwgIml5IiwgIm95IiwgIlZaIiwgImZnIiwgIkdoIiwgIlVoIiwgIl9jIiwgIlZFIiwgIlB6IiwgImYkIiwgIkxFIiwgIlhlIiwgIlllIiwgImpFIiwgIlM2JCIsICJMXyIsICJFNiQiLCAiaDYiLCAiVDYkIiwgInJ6IiwgInB6IiwgImR6IiwgIk1fIiwgInFYIiwgImpfIiwgIm96IiwgIndfIiwgImY2JCIsICJDNiQiLCAidjYkIiwgInFYIiwgIl82JCIsICJBXyIsICJveiIsICJqXyIsICJPSyIsICJ1dGlsIiwgIl8iLCAiYXNzZXJ0SXMiLCAiYXNzZXJ0TmV2ZXIiLCAiZSIsICJvYmplY3QiLCAiam9pblZhbHVlcyIsICJhcnJheSIsICJvYmplY3RVdGlsIiwgInQiLCAiaXNzdWUiLCAiZXJyb3IiLCAiZWwiLCAiaXNzdWUiLCAicGF0aCIsICJtIiwgImlzc3VlIiwgIngiLCAicyIsICJPSyIsICJlcnJvclV0aWwiLCAicGF0aCIsICJlcnJvciIsICJlcnJvck1hcCIsICJjaGVjayIsICJ0cmFuc2Zvcm0iLCAidmVyc2lvbiIsICJiYXNlNjQiLCAiX1pvZFN0cmluZyIsICJwYXJzZWRUeXBlIiwgImN0eCIsICJjaCIsICJPSyIsICJyZXN1bHQiLCAiaXNzdWUiLCAiaXNzdWVzIiwgImIiLCAieCIsICJlbGVtZW50cyIsICJtZSIsICJlIiwgInByb2Nlc3NlZCIsICJwcmVwcm9jZXNzIiwgInBhcnNlZFR5cGUiLCAiT0siLCAicmVzdWx0IiwgImIiLCAiY2hlY2siLCAiciIsICJab2RGaXJzdFBhcnR5VHlwZUtpbmQiLCAiY2hlY2siLCAiY2hlY2siLCAieCIsICJwYXJzZWRUeXBlIiwgImVtb2ppUmVnZXgiLCAiY2hlY2siLCAiXyIsICJsaXRlcmFsIiwgIngiLCAib2JqZWN0IiwgIngiLCAidHlwZXMiLCAiYmFzZSIsICJjaGVjayIsICJyZXF1aXJlZCIsICJiIiwgIngiLCAieCIsICJfIiwgIm5hbWUiLCAic2NoZW1hIiwgImltcG9ydF9ub2RlX2NoaWxkX3Byb2Nlc3MiLCAiaW1wb3J0X25vZGVfb3MiLCAiaW1wb3J0X25vZGVfcGF0aCIsICJtcyIsICJwYXRoIiwgImVycm9yIiwgInQiLCAicyIsICJiIiwgImNvcmUiLCAiaW1wb3J0X2ZzIiwgImltcG9ydF9vcyIsICJpbXBvcnRfcGF0aCIsICJpbXBvcnRfY2hpbGRfcHJvY2VzcyIsICJpbXBvcnRfcmVhZGxpbmUiLCAiaW1wb3J0X21vZHVsZSIsICJmcyIsICJwYXRoIiwgIm9zIiwgImVycm9yIiwgInJsIiwgInJlYWRsaW5lIiwgImlzUGxhaW5PYmplY3QiLCAiY29uZmlnIiwgImltcG9ydF9ub2RlX2NoaWxkX3Byb2Nlc3MiLCAiaW1wb3J0X25vZGVfZnMiLCAiY29yZSIsICJDTElfVkVSU0lPTiIsICJJTlNUQUxMX0FUVEVNUFRTIiwgIklOU1RBTExfUkVUUllfQkFTRV9ERUxBWV9NUyIsICJjYWNoZWQiLCAicGF0aCIsICJDTElfVkVSU0lPTiIsICJJTlNUQUxMX0FUVEVNUFRTIiwgIklOU1RBTExfUkVUUllfQkFTRV9ERUxBWV9NUyIsICJlcnJvciIsICJpbXBvcnRfbm9kZV9jcnlwdG8iLCAiTkVWRVIiLCAiaW5pdGlhbGl6ZXIiLCAiXyIsICJjYWNoZWQiLCAiZmxvYXRTYWZlUmVtYWluZGVyIiwgImdldFBhcnNlZFR5cGUiLCAiaXNQbGFpbk9iamVjdCIsICJtZXJnZSIsICJvbWl0IiwgIl8iLCAidiIsICJhcnJheSIsICJzZXQiLCAib2JqZWN0IiwgInBhdGgiLCAiRiIsICJvIiwgInQiLCAiY2wiLCAiYiIsICJDbGFzcyIsICJ4IiwgImNvbmZpZyIsICJlbCIsICJlcnJvciIsICJpc3N1ZSIsICJlbCIsICJlIiwgInBhcnNlIiwgInNhZmVQYXJzZSIsICJ2ZXJzaW9uIiwgInRpbWUiLCAidGltZVJlZ2V4IiwgImluc3QiLCAiZmxvYXRTYWZlUmVtYWluZGVyIiwgImluc3QiLCAiX2IiLCAieCIsICJGIiwgImNoIiwgImNoZWNrcyIsICJpc0Fib3J0ZWQiLCAiXyIsICJyZXN1bHQiLCAiciIsICJzYWZlUGFyc2UiLCAidiIsICJpbnN0IiwgImJhc2U2NCIsICJjIiwgImlzVmFsaWRKV1QiLCAiXyIsICJyZXN1bHQiLCAiY2FjaGVkIiwgInYiLCAiaXNPYmplY3QiLCAiYWxsb3dzRXZhbCIsICJlbCIsICJyIiwgInQiLCAibyIsICJyZXN1bHRzIiwgInB2IiwgImxlZnQiLCAicmlnaHQiLCAibWVyZ2VWYWx1ZXMiLCAiYiIsICJpc1BsYWluT2JqZWN0IiwgImlzUGxhaW5PYmplY3QiLCAicmVzdWx0IiwgIm8iLCAib3V0cHV0IiwgInJlc3VsdCIsICJ2IiwgIngiLCAicmVzdWx0IiwgImxlZnQiLCAiXyIsICJyIiwgInQiLCAiaXNzdWUiLCAiZW5fZGVmYXVsdCIsICJwbSIsICJDbGFzcyIsICJDbGFzcyIsICJfZW1vamkiLCAiQ2xhc3MiLCAiQ2xhc3MiLCAiQ2xhc3MiLCAiX251bGwiLCAiQ2xhc3MiLCAiQ2xhc3MiLCAiY2giLCAiQ2xhc3MiLCAiQ2xhc3MiLCAidiIsICJ4IiwgImIiLCAibSIsICJpZCIsICJzY2hlbWEiLCAicGFyYW1zIiwgImdlbiIsICJfIiwgInBhcnNlIiwgInNhZmVQYXJzZSIsICJjaCIsICJzIiwgInNhZmVQYXJzZSIsICJyZXN1bHQiLCAic2FmZVBhcnNlQXN5bmMiLCAidiIsICJlcnJvciIsICJkZWYiLCAiaXNvX2V4cG9ydHMiLCAiZGF0ZSIsICJkYXRldGltZSIsICJkdXJhdGlvbiIsICJ0aW1lIiwgImRhdGV0aW1lIiwgImRhdGUiLCAidGltZSIsICJkdXJhdGlvbiIsICJpbml0aWFsaXplciIsICJpc3N1ZSIsICJpc3N1ZXMiLCAiWm9kRXJyb3IiLCAicGFyc2UiLCAicGFyc2VBc3luYyIsICJzYWZlUGFyc2UiLCAic2FmZVBhcnNlQXN5bmMiLCAiWm9kVHlwZSIsICJjaCIsICJkZWYiLCAicGFyc2UiLCAic2FmZVBhcnNlIiwgInBhcnNlQXN5bmMiLCAic2FmZVBhcnNlQXN5bmMiLCAiY2hlY2siLCAiY2wiLCAiWm9kU3RyaW5nIiwgIl9lbW9qaSIsICJkYXRldGltZSIsICJkYXRlIiwgInRpbWUiLCAiZHVyYXRpb24iLCAic3RyaW5nIiwgIlpvZE51bWJlciIsICJab2RUeXBlIiwgIm51bWJlciIsICJab2RCb29sZWFuIiwgIlpvZFR5cGUiLCAiYm9vbGVhbiIsICJab2ROdWxsIiwgIlpvZFR5cGUiLCAiX251bGwiLCAiWm9kVW5rbm93biIsICJab2RUeXBlIiwgIlpvZE5ldmVyIiwgIlpvZEFycmF5IiwgIlpvZFR5cGUiLCAiWm9kT2JqZWN0IiwgIlpvZFR5cGUiLCAiWm9kT3B0aW9uYWwiLCAib2JqZWN0IiwgIlpvZE9iamVjdCIsICJab2RVbmlvbiIsICJab2RUeXBlIiwgIlpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsICJab2RJbnRlcnNlY3Rpb24iLCAiWm9kUmVjb3JkIiwgIlpvZFR5cGUiLCAiWm9kRW51bSIsICJab2RUeXBlIiwgInYiLCAiWm9kTGl0ZXJhbCIsICJab2RUeXBlIiwgIlpvZFR5cGUiLCAiaXNzdWUiLCAib3V0cHV0IiwgIlpvZE9wdGlvbmFsIiwgIlpvZE51bGxhYmxlIiwgIlpvZERlZmF1bHQiLCAiWm9kVHlwZSIsICJab2RDYXRjaCIsICJab2RUeXBlIiwgIlpvZFR5cGUiLCAiWm9kUmVhZG9ubHkiLCAiWm9kVHlwZSIsICJjaCIsICJjdXN0b20iLCAiaXNzdWUiLCAiZW5fZGVmYXVsdCIsICJjdXN0b20iLCAidiIsICJzdHJpbmciLCAibnVtYmVyIiwgIm9iamVjdCIsICJFcnJvckNvZGUiLCAib2JqZWN0IiwgIm51bWJlciIsICJzdHJpbmciLCAic3RyaW5nIiwgIm9iamVjdCIsICJib29sZWFuIiwgIm9iamVjdCIsICJudW1iZXIiLCAic3RyaW5nIiwgIl9udWxsIiwgImlzb19leHBvcnRzIiwgImJvb2xlYW4iLCAib2JqZWN0IiwgInN0cmluZyIsICJyZXF1ZXN0IiwgIm51bWJlciIsICJib29sZWFuIiwgInQiLCAic2FmZVBhcnNlIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAiaW5mbyIsICJoYW5kbGVyIiwgInIiLCAidGFzayIsICJlIiwgInNhZmVQYXJzZSIsICJqc29ucnBjTm90aWZpY2F0aW9uIiwgImlzUGxhaW5PYmplY3QiLCAiQWp2IiwgIl9hZGRGb3JtYXRzIiwgInJlcXVlc3QiLCAiYyIsICJyZXF1ZXN0IiwgImhhbmRsZXIiLCAic2FmZVBhcnNlIiwgImMiLCAiZXJyb3IiLCAiTWNwWm9kVHlwZUtpbmQiLCAiYyIsICJ3YXJuaW5nIiwgImNvbmZpZyIsICJoYW5kbGVyIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAic2FmZVBhcnNlQXN5bmMiLCAiaGFuZGxlciIsICJ0IiwgIl8iLCAiY2IiLCAiY29uZmlnIiwgInYiLCAiaW1wb3J0X2h0dHAyIiwgImltcG9ydF9jcnlwdG8iLCAiUmVxdWVzdEVycm9yIiwgImUiLCAiZXJyb3IiLCAiY2FjaGUiLCAidiIsICJjcnlwdG8iLCAiSHR0cDJTZXJ2ZXJSZXF1ZXN0MiIsICJoMmNvbnN0YW50cyIsICJlcnJvciIsICJtIiwgIl8iLCAiaGFuZGxlciIsICJ0IiwgImNvbmZpZyIsICJsb2dBZ2VudElucHV0IiwgInQiLCAiZSIsICJpbXBvcnRfbm9kZV9mcyIsICJwYXRoIiwgImUiLCAidiIsICJjb25maWciLCAiaW1wb3J0X25vZGVfZnMiLCAiaW1wb3J0X25vZGVfb3MiLCAiaW1wb3J0X25vZGVfcGF0aCIsICJjb25maWciLCAicyIsICJuIiwgInYiLCAiaW1wb3J0X25vZGVfY2hpbGRfcHJvY2VzcyIsICJpbXBvcnRfbm9kZV9mcyIsICJpbXBvcnRfbm9kZV9vcyIsICJpbXBvcnRfbm9kZV9wYXRoIiwgImNvcmUiLCAiYXV0aCIsICJPY3Rva2l0IiwgImQiLCAiaW1wb3J0X25vZGVfY2hpbGRfcHJvY2VzcyIsICJjb3JlIiwgImNhY2hlZCIsICJPY3Rva2l0IiwgInJ1bkdpdCIsICJhdXRoIiwgImQiLCAic2VwIiwgImwiLCAiZiIsICJyIiwgImMiLCAicGF0aCIsICJjb3JlIiwgImMiLCAibSIsICJsIiwgImlzc3VlIiwgImYiLCAiciIsICJtIiwgImQiLCAiZiIsICJ2IiwgInMiLCAicHJvbXB0X3N5c3RlbV9kZWZhdWx0IiwgInByb21wdF91c2VyX21kX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAiYyIsICJmIiwgImIiLCAiaW50ZXJzZWN0aW9uIiwgInQiLCAiYyIsICJvIiwgInMiLCAiSVRFUkFUSU9OX0xJTkUiLCAiYyIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJfIiwgInIiLCAicHJvbXB0X3N5c3RlbV9kZWZhdWx0IiwgInByb21wdF91c2VyX21kX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicGF0aCIsICJsIiwgImJvZHkiLCAidiIsICJwcm9tcHRfc3lzdGVtX2RlZmF1bHQiLCAicHJvbXB0X3VzZXJfbWRfZGVmYXVsdCIsICJwcm9tcHRfdXNlcl9tZF9kZWZhdWx0IiwgInByb21wdF9zeXN0ZW1fZGVmYXVsdCIsICJyIiwgImIiLCAiYVQiLCAiYlQiLCAiYyIsICJwYXRoIiwgImlzc3VlIiwgImwiLCAiYyIsICJpc3N1ZSIsICJsIiwgImIiLCAiY29uZmlnIiwgImF1dGgiLCAiT2N0b2tpdCIsICJ2Il0KfQo= diff --git a/src/audit/events.ts b/src/audit/events.ts index 8bec3da..5cb7c61 100644 --- a/src/audit/events.ts +++ b/src/audit/events.ts @@ -47,7 +47,7 @@ export type AuditEvent = | { type: "review_posted"; prNumber: number; - verdict: "approve" | "request_changes"; + verdict: "approve" | "request_changes" | "errored"; iteration: number; } | { diff --git a/src/runners.ts b/src/runners.ts index ddc2550..6a5fb0e 100644 --- a/src/runners.ts +++ b/src/runners.ts @@ -17,6 +17,11 @@ import { parseIssueMetadata } from "./state/metadata.js"; import type { RouterDecision } from "./state/types.js"; const CONFIDENCE_THRESHOLD = 60; +// Consecutive errored review runs (every lens failed to start) tolerated before +// the review escalates to review-stuck and pages a human. Each run already +// retries the CLI install internally, so this guards against a persistent +// infrastructure failure parking the pipeline silently. +const MAX_CONSECUTIVE_REVIEW_ERRORS = 3; // Each stage handler assembles its own extras (revision context, progress // comment, PR/file lookups) so the orchestrator stays generic. Returning the @@ -217,6 +222,10 @@ export const RUNNERS: Record = { // stateless reviewer: no iteration counter is persisted, every push // gets a fresh review, and the iteration cap never fires. const iteration = ctx.reviewOnly ? 0 : (routed.reviewIteration ?? 0); + const errorCount = ctx.reviewOnly ? 0 : (routed.reviewErrorCount ?? 0); + const maxConsecutiveReviewErrors = ctx.reviewOnly + ? Number.POSITIVE_INFINITY + : MAX_CONSECUTIVE_REVIEW_ERRORS; const maxIterations = ctx.reviewOnly ? Number.POSITIVE_INFINITY : ctx.config.maxReviewIterations; @@ -277,6 +286,8 @@ export const RUNNERS: Record = { currentIteration: iteration, maxIterations, confidenceThreshold: CONFIDENCE_THRESHOLD, + currentErrorCount: errorCount, + maxConsecutiveReviewErrors, }); // Pipeline mode (Shopfloor-authored impl PRs) writes pipeline-state diff --git a/src/setup/ensure-claude-cli.ts b/src/setup/ensure-claude-cli.ts index c8c488a..cb9b026 100644 --- a/src/setup/ensure-claude-cli.ts +++ b/src/setup/ensure-claude-cli.ts @@ -1,13 +1,21 @@ -import { spawn, spawnSync } from "node:child_process"; +import { spawnSync } from "node:child_process"; import { existsSync } from "node:fs"; import { homedir } from "node:os"; import { join } from "node:path"; import * as core from "@actions/core"; +import { retryWithBackoff, runCapturing } from "./installer-support.js"; // Pinned to match @anthropic-ai/claude-agent-sdk@0.2.141 in package.json. // Bump in lockstep with the SDK dependency. const CLI_VERSION = "2.1.141"; +// The install runs `curl | bash` against claude.ai/install.sh, which itself +// pulls the native build from downloads.claude.ai. Both legs are network calls +// on a CI runner and fail transiently (DNS SERVFAIL, connection resets). Retry +// a few times with linear backoff before giving up. +const INSTALL_ATTEMPTS = 3; +const INSTALL_RETRY_BASE_DELAY_MS = 2000; + let cached: Promise | null = null; export function ensureClaudeCli(): Promise { @@ -47,40 +55,53 @@ function whichClaude(): string | null { return path && existsSync(path) ? path : null; } +// Run under bash with `set -o pipefail` so a curl failure (e.g. DNS SERVFAIL +// before install.sh is even fetched) propagates as the pipeline's exit code +// instead of being masked by bash exiting 0 on empty stdin. The command already +// pipes into bash, so requiring bash here adds no new dependency. Without +// pipefail the captured diagnostic tail would be discarded and the failure +// would surface as a misleading "no binary found". +function runInstallScript(): Promise { + return runCapturing( + "bash", + [ + "-c", + `set -o pipefail; curl -fsSL https://claude.ai/install.sh | bash -s -- ${CLI_VERSION}`, + ], + "Claude CLI installer", + ); +} + async function installClaudeCli(): Promise { core.info( `Claude CLI not found on PATH. Installing v${CLI_VERSION} via claude.ai/install.sh`, ); - await new Promise((resolve, reject) => { - const proc = spawn( - "sh", - [ - "-c", - `curl -fsSL https://claude.ai/install.sh | bash -s -- ${CLI_VERSION}`, - ], - { stdio: ["ignore", "inherit", "inherit"] }, - ); - proc.on("error", reject); - proc.on("close", (code) => { - if (code === 0) resolve(); - else reject(new Error(`Claude CLI installer exited with code ${code}`)); - }); - }); - // install.sh defaults to ~/.local/bin/claude. const defaultPath = join(homedir(), ".local", "bin", "claude"); - if (existsSync(defaultPath)) { - core.info(`Installed Claude CLI at ${defaultPath}`); - return defaultPath; - } - - const onPath = whichClaude(); - if (onPath) { - core.info(`Installed Claude CLI resolved via PATH: ${onPath}`); - return onPath; - } - throw new Error( - `Claude CLI installer succeeded but no binary found at ${defaultPath} or on PATH`, + return retryWithBackoff( + async () => { + await runInstallScript(); + if (existsSync(defaultPath)) { + core.info(`Installed Claude CLI at ${defaultPath}`); + return defaultPath; + } + const onPath = whichClaude(); + if (onPath) { + core.info(`Installed Claude CLI resolved via PATH: ${onPath}`); + return onPath; + } + throw new Error( + `Claude CLI installer succeeded but no binary found at ${defaultPath} or on PATH`, + ); + }, + { + attempts: INSTALL_ATTEMPTS, + baseDelayMs: INSTALL_RETRY_BASE_DELAY_MS, + onRetry: (attempt, error) => + core.warning( + `Claude CLI install attempt ${attempt}/${INSTALL_ATTEMPTS} failed: ${error.message}. Retrying...`, + ), + }, ); } diff --git a/src/setup/ensure-codex-cli.ts b/src/setup/ensure-codex-cli.ts index 6e0606e..e7c1b60 100644 --- a/src/setup/ensure-codex-cli.ts +++ b/src/setup/ensure-codex-cli.ts @@ -1,11 +1,18 @@ -import { spawn, spawnSync } from "node:child_process"; +import { spawnSync } from "node:child_process"; import { existsSync } from "node:fs"; import * as core from "@actions/core"; +import { retryWithBackoff, runCapturing } from "./installer-support.js"; // Pinned to match @openai/codex-sdk / @openai/codex in package.json. // Bump in lockstep with those dependencies. const CLI_VERSION = "0.139.0"; +// `npm install -g` is a network call on a CI runner and fails transiently +// (DNS SERVFAIL, registry connection resets). Retry with linear backoff, +// mirroring the Claude installer. +const INSTALL_ATTEMPTS = 3; +const INSTALL_RETRY_BASE_DELAY_MS = 2000; + let cached: Promise | null = null; export function ensureCodexCli(): Promise { @@ -49,26 +56,30 @@ async function installCodexCli(): Promise { core.info( `Codex CLI not found on PATH. Installing @openai/codex@${CLI_VERSION} globally via npm.`, ); - await new Promise((resolve, reject) => { - const proc = spawn( - "npm", - ["install", "-g", `@openai/codex@${CLI_VERSION}`], - { stdio: ["ignore", "inherit", "inherit"] }, - ); - proc.on("error", reject); - proc.on("close", (code) => { - if (code === 0) resolve(); - else reject(new Error(`Codex CLI installer exited with code ${code}`)); - }); - }); - - const onPath = whichCodex(); - if (onPath) { - core.info(`Installed Codex CLI resolved via PATH: ${onPath}`); - return onPath; - } - throw new Error( - "Codex CLI installer succeeded but no `codex` binary was found on PATH", + return retryWithBackoff( + async () => { + await runCapturing( + "npm", + ["install", "-g", `@openai/codex@${CLI_VERSION}`], + "Codex CLI installer", + ); + const onPath = whichCodex(); + if (onPath) { + core.info(`Installed Codex CLI resolved via PATH: ${onPath}`); + return onPath; + } + throw new Error( + "Codex CLI installer succeeded but no `codex` binary was found on PATH", + ); + }, + { + attempts: INSTALL_ATTEMPTS, + baseDelayMs: INSTALL_RETRY_BASE_DELAY_MS, + onRetry: (attempt, error) => + core.warning( + `Codex CLI install attempt ${attempt}/${INSTALL_ATTEMPTS} failed: ${error.message}. Retrying...`, + ), + }, ); } diff --git a/src/setup/installer-support.ts b/src/setup/installer-support.ts new file mode 100644 index 0000000..b9df74c --- /dev/null +++ b/src/setup/installer-support.ts @@ -0,0 +1,84 @@ +import { spawn } from "node:child_process"; + +// Shared helpers for the native-CLI installers (Claude and Codex). Both pull a +// binary over the network on a CI runner, so both need transient-failure retry +// and diagnostics that surface the real cause instead of a bare exit code. + +export interface RetryOptions { + attempts: number; + baseDelayMs: number; + sleep?: (ms: number) => Promise; + onRetry?: (attempt: number, error: Error) => void; +} + +function defaultSleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +export async function retryWithBackoff( + fn: (attempt: number) => Promise, + opts: RetryOptions, +): Promise { + const sleep = opts.sleep ?? defaultSleep; + let lastError: Error | undefined; + for (let attempt = 1; attempt <= opts.attempts; attempt++) { + try { + return await fn(attempt); + } catch (err) { + lastError = err instanceof Error ? err : new Error(String(err)); + if (attempt < opts.attempts) { + opts.onRetry?.(attempt, lastError); + await sleep(opts.baseDelayMs * attempt); + } + } + } + throw lastError ?? new Error("retryWithBackoff: no attempts were made"); +} + +// Installers stream their own progress, but a thrown Error that carries only +// the exit code surfaces as the opaque "exited with code 1". Append the tail of +// the captured output (e.g. "getaddrinfo ESERVFAIL downloads.claude.ai") so the +// real cause is visible wherever the error is reported, including the review +// lens failure summary. +export function formatInstallerError( + label: string, + code: number | null, + output: string, +): string { + const base = `${label} exited with code ${code}`; + const tail = output + .trim() + .split(/\r?\n/) + .map((line) => line.trim()) + .filter(Boolean) + .slice(-5) + .join(" | "); + return tail ? `${base}: ${tail}` : base; +} + +// Spawn a command, capturing stdout/stderr for diagnostics while still +// streaming it to the action log, and reject with a formatted error (carrying +// the captured tail) on a non-zero exit. +export function runCapturing( + command: string, + args: string[], + label: string, +): Promise { + return new Promise((resolve, reject) => { + const proc = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] }); + let output = ""; + proc.stdout?.on("data", (chunk: Buffer) => { + output += chunk.toString(); + process.stdout.write(chunk); + }); + proc.stderr?.on("data", (chunk: Buffer) => { + output += chunk.toString(); + process.stderr.write(chunk); + }); + proc.on("error", reject); + proc.on("close", (code) => { + if (code === 0) resolve(); + else reject(new Error(formatInstallerError(label, code, output))); + }); + }); +} diff --git a/src/stages/review/aggregate.ts b/src/stages/review/aggregate.ts index d6bde2c..d296f81 100644 --- a/src/stages/review/aggregate.ts +++ b/src/stages/review/aggregate.ts @@ -12,6 +12,13 @@ export interface AggregateInput { currentIteration: number; maxIterations: number; confidenceThreshold: number; + // Consecutive prior review runs that ended in `errored` (read from the PR + // footer). Defaults to 0. When the incremented count reaches + // `maxConsecutiveReviewErrors`, the errored outcome escalates so a human is + // paged instead of the pipeline spinning on a persistent infrastructure + // failure. Both are irrelevant (0 / infinity) in reviewOnly mode. + currentErrorCount?: number; + maxConsecutiveReviewErrors?: number; } export type AggregateOutcome = @@ -31,10 +38,28 @@ export type AggregateOutcome = | { kind: "iteration_cap"; maxIterations: number; + } + | { + kind: "errored"; + body: string; + failures: Array<{ lens: LensName; kind: string; message: string }>; + // Consecutive errored runs including this one. + errorCount: number; + // True once errorCount reaches maxConsecutiveReviewErrors: stop retrying + // silently and page a human via the review-stuck label. + escalate: boolean; }; const SHOPFLOOR_REVIEW_MARKER = ""; +function renderLensFailure(f: { + lens: LensName; + kind: string; + message: string; +}): string { + return `- \`${f.lens}\` failed (${f.kind}): ${f.message}`; +} + const SOURCE_CATEGORY: Record = { compliance: "compliance", bugs: "bug", @@ -112,6 +137,37 @@ export function aggregateFindings(input: AggregateInput): AggregateOutcome { (s) => s.decision.verdict === "blocked", ); + // Every lens failed before returning a verdict (e.g. the Claude CLI never + // installed, all agents timed out). There is no review result at all, so this + // is an operational error rather than a "changes requested" verdict. Surface + // it as such instead of blocking an unevaluated PR with a misleading + // REQUEST_CHANGES review. + if (succeeded.length === 0 && failedLenses.length > 0) { + const errorCount = (input.currentErrorCount ?? 0) + 1; + const maxErrors = + input.maxConsecutiveReviewErrors ?? Number.POSITIVE_INFINITY; + const escalate = errorCount >= maxErrors; + const closing = escalate + ? `This has now failed ${errorCount} consecutive times. A human should take over this PR.` + : "This is an infrastructure error, not a code-review result. The pull request has not been evaluated and will be re-reviewed."; + const body = [ + SHOPFLOOR_REVIEW_MARKER, + "**Shopfloor agent review: could not complete.** Every reviewer failed before returning a verdict.", + "", + closing, + "", + "**Reviewer failures:**", + ...failedLenses.map(renderLensFailure), + ].join("\n"); + return { + kind: "errored", + body, + failures: failedLenses, + errorCount, + escalate, + }; + } + const allComments = succeeded.flatMap((s) => s.decision.comments); const deduped = dedupeComments(allComments); const filtered = deduped.filter( @@ -167,7 +223,7 @@ export function aggregateFindings(input: AggregateInput): AggregateOutcome { bodyParts.push(""); bodyParts.push("**Lens failures:**"); for (const f of failedLenses) { - bodyParts.push(`- \`${f.lens}\` failed (${f.kind}): ${f.message}`); + bodyParts.push(renderLensFailure(f)); } } if (blockedLenses.length > 0) { diff --git a/src/stages/review/apply.ts b/src/stages/review/apply.ts index 0e49760..b63f4e2 100644 --- a/src/stages/review/apply.ts +++ b/src/stages/review/apply.ts @@ -9,6 +9,7 @@ export interface ApplyReviewArgs { } const ITERATION_LINE = /Shopfloor-Review-Iteration:\s*\d+/; +const ERROR_COUNT_LINE = /\n?Shopfloor-Review-Error-Count:\s*\d+/g; function writeIterationToBody(body: string | null, iteration: number): string { const baseBody = body ?? ""; @@ -21,6 +22,17 @@ function writeIterationToBody(body: string | null, iteration: number): string { ); } +// The consecutive-error counter is a footer line that only the errored path +// writes. A review that actually completes (clean or with findings) proves the +// CLI works, so strip the line to reset the count for any future transient run. +function stripErrorCountLine(body: string | null): string { + return (body ?? "").replace(ERROR_COUNT_LINE, ""); +} + +function writeErrorCountToBody(body: string | null, count: number): string { + return `${stripErrorCountLine(body).trimEnd()}\n\nShopfloor-Review-Error-Count: ${count}\n`; +} + export async function applyReview( ctx: StageContext, args: ApplyReviewArgs, @@ -61,6 +73,14 @@ export async function applyReview( await ctx.github.addLabel(labelTarget, LABELS.reviewApproved); await ctx.github.removeLabel(labelTarget, LABELS.needsReview); await ctx.github.removeLabel(labelTarget, LABELS.reviewRequestedChanges); + // A clean approval proves the CLI works, so reset any consecutive-error + // counter (only rewrite the body when one is actually present). + if (ctx.pr.body?.includes("Shopfloor-Review-Error-Count")) { + await ctx.github.updatePrBody( + prNumber, + stripErrorCountLine(ctx.pr.body), + ); + } } ctx.audit({ type: "review_posted", @@ -94,6 +114,82 @@ export async function applyReview( return; } + if (outcome.kind === "errored") { + // No verdict was produced: every reviewer failed before inspecting the + // diff. Always post a non-blocking COMMENT (no distinct review App needed); + // this is an operational failure, not a code verdict. + await ctx.github.postReview({ + prNumber, + commitSha: headSha, + event: "COMMENT", + body: outcome.body, + comments: [], + }); + + // reviewOnly: stateless per-push review, so never persist a counter or + // touch labels. Each push is reviewed fresh. + if (ctx.reviewOnly) { + await ctx.github.setReviewStatus( + headSha, + "error", + "Shopfloor review could not complete (infrastructure error)", + workflowRunUrl, + ); + ctx.audit({ + type: "review_posted", + prNumber, + verdict: "errored", + iteration: 0, + }); + return; + } + + if (outcome.escalate) { + // Persistent infrastructure failure: stop retrying silently and page a + // human, mirroring the iteration-cap backstop. + await ctx.github.addLabel(labelTarget, LABELS.reviewStuck); + await ctx.github.removeLabel(labelTarget, LABELS.needsReview); + await ctx.github.postIssueComment( + prNumber, + `Shopfloor agent review could not complete after ${outcome.errorCount} consecutive attempts (infrastructure failures). A human should take over this PR. See commit status for the latest failure detail.`, + ); + await ctx.github.setReviewStatus( + headSha, + "error", + `Shopfloor review could not complete after ${outcome.errorCount} attempts`, + workflowRunUrl, + ); + ctx.audit({ + type: "label_applied", + issueNumber: labelTarget, + add: [LABELS.reviewStuck], + remove: [LABELS.needsReview], + }); + return; + } + + // Below the threshold: persist the incremented count so a subsequent run + // can escalate, and leave the verdict labels untouched so a re-trigger + // re-reviews rather than the PR being parked as request-changes. + await ctx.github.setReviewStatus( + headSha, + "error", + "Shopfloor review could not complete (infrastructure error)", + workflowRunUrl, + ); + await ctx.github.updatePrBody( + prNumber, + writeErrorCountToBody(ctx.pr.body, outcome.errorCount), + ); + ctx.audit({ + type: "review_posted", + prNumber, + verdict: "errored", + iteration: 0, + }); + return; + } + // request_changes await reviewer.postReview({ prNumber, @@ -124,7 +220,12 @@ export async function applyReview( if (!ctx.reviewOnly) { await ctx.github.addLabel(labelTarget, LABELS.reviewRequestedChanges); await ctx.github.removeLabel(labelTarget, LABELS.needsReview); - const newBody = writeIterationToBody(ctx.pr.body, outcome.nextIteration); + // A completed review proves the CLI works, so reset any consecutive-error + // counter while writing the iteration line. + const newBody = writeIterationToBody( + stripErrorCountLine(ctx.pr.body), + outcome.nextIteration, + ); await ctx.github.updatePrBody(prNumber, newBody); } ctx.audit({ diff --git a/src/state/machine.ts b/src/state/machine.ts index e9e7df2..0f318b9 100644 --- a/src/state/machine.ts +++ b/src/state/machine.ts @@ -446,6 +446,7 @@ function resolvePullRequestEvent(payload: PullRequestPayload): RouterDecision { issueNumber: meta.issueNumber, implPrNumber: pr.number, reviewIteration: meta.reviewIteration, + reviewErrorCount: meta.reviewErrorCount, }; } @@ -473,6 +474,7 @@ function resolvePullRequestEvent(payload: PullRequestPayload): RouterDecision { issueNumber: meta.issueNumber, implPrNumber: pr.number, reviewIteration: meta.reviewIteration, + reviewErrorCount: meta.reviewErrorCount, }; } diff --git a/src/state/metadata.ts b/src/state/metadata.ts index 07ea259..043e912 100644 --- a/src/state/metadata.ts +++ b/src/state/metadata.ts @@ -4,6 +4,7 @@ export interface PrMetadata { issueNumber: number; stage: Stage; reviewIteration: number; + reviewErrorCount: number; } export interface IssueMetadata { @@ -27,11 +28,13 @@ export function parsePrMetadata( /Shopfloor-Stage:\s*(spec|plan|implement|review)/, ); const iterMatch = body.match(/Shopfloor-Review-Iteration:\s*(\d+)/); + const errMatch = body.match(/Shopfloor-Review-Error-Count:\s*(\d+)/); if (!issueMatch || !stageMatch) return null; return { issueNumber: Number(issueMatch[1]), stage: stageMatch[1] as Exclude, reviewIteration: iterMatch ? Number(iterMatch[1]) : 0, + reviewErrorCount: errMatch ? Number(errMatch[1]) : 0, }; } diff --git a/src/state/types.ts b/src/state/types.ts index 8561d4d..38a353f 100644 --- a/src/state/types.ts +++ b/src/state/types.ts @@ -41,6 +41,7 @@ export interface RouterDecision { planFilePath?: string; revisionMode?: boolean; reviewIteration?: number; + reviewErrorCount?: number; implPrNumber?: number; // Set when a stage PR was just merged. The orchestrator performs the // corresponding label transition (and, for implement, closes the issue) diff --git a/test/github/pr-metadata.test.ts b/test/github/pr-metadata.test.ts index d74f890..1ff23b3 100644 --- a/test/github/pr-metadata.test.ts +++ b/test/github/pr-metadata.test.ts @@ -30,6 +30,7 @@ describe("renderPrBodyWithMetadata", () => { issueNumber: 42, stage: "spec", reviewIteration: 0, + reviewErrorCount: 0, }); }); diff --git a/test/setup/installer-support.test.ts b/test/setup/installer-support.test.ts new file mode 100644 index 0000000..67cad42 --- /dev/null +++ b/test/setup/installer-support.test.ts @@ -0,0 +1,117 @@ +import { describe, expect, it, vi } from "vitest"; +import { + formatInstallerError, + retryWithBackoff, +} from "../../src/setup/installer-support.js"; + +describe("retryWithBackoff", () => { + it("returns the result on the first successful attempt without sleeping", async () => { + const sleep = vi.fn(async () => {}); + const fn = vi.fn(async () => "ok"); + + const result = await retryWithBackoff(fn, { + attempts: 3, + baseDelayMs: 10, + sleep, + }); + + expect(result).toBe("ok"); + expect(fn).toHaveBeenCalledTimes(1); + expect(sleep).not.toHaveBeenCalled(); + }); + + it("retries after a transient failure and returns the eventual success", async () => { + const sleep = vi.fn(async () => {}); + let calls = 0; + const fn = vi.fn(async () => { + calls++; + if (calls < 3) throw new Error(`fail ${calls}`); + return "recovered"; + }); + + const result = await retryWithBackoff(fn, { + attempts: 3, + baseDelayMs: 10, + sleep, + }); + + expect(result).toBe("recovered"); + expect(fn).toHaveBeenCalledTimes(3); + expect(sleep).toHaveBeenCalledTimes(2); + }); + + it("uses linear backoff between attempts", async () => { + const sleep = vi.fn(async () => {}); + const fn = vi.fn(async () => { + throw new Error("always fails"); + }); + + await expect( + retryWithBackoff(fn, { attempts: 3, baseDelayMs: 100, sleep }), + ).rejects.toThrow("always fails"); + + expect(sleep).toHaveBeenNthCalledWith(1, 100); + expect(sleep).toHaveBeenNthCalledWith(2, 200); + }); + + it("throws the last error after exhausting all attempts", async () => { + const sleep = vi.fn(async () => {}); + let calls = 0; + const fn = vi.fn(async () => { + calls++; + throw new Error(`fail ${calls}`); + }); + + await expect( + retryWithBackoff(fn, { attempts: 3, baseDelayMs: 1, sleep }), + ).rejects.toThrow("fail 3"); + expect(fn).toHaveBeenCalledTimes(3); + expect(sleep).toHaveBeenCalledTimes(2); + }); + + it("invokes onRetry with the attempt number and error before sleeping", async () => { + const sleep = vi.fn(async () => {}); + const onRetry = vi.fn(); + let calls = 0; + const fn = vi.fn(async () => { + calls++; + if (calls < 2) throw new Error("boom"); + return "done"; + }); + + await retryWithBackoff(fn, { + attempts: 3, + baseDelayMs: 5, + sleep, + onRetry, + }); + + expect(onRetry).toHaveBeenCalledTimes(1); + expect(onRetry).toHaveBeenCalledWith(1, expect.any(Error)); + }); +}); + +describe("formatInstallerError", () => { + it("prefixes the supplied installer label and includes the exit code", () => { + const msg = formatInstallerError("Codex CLI installer", 1, ""); + expect(msg).toContain("Codex CLI installer exited with code 1"); + }); + + it("appends the tail of installer output", () => { + const msg = formatInstallerError( + "Claude CLI installer", + 1, + "Installing Claude Code native build 2.1.141...\n✘ Installation failed\ngetaddrinfo ESERVFAIL downloads.claude.ai\n", + ); + + expect(msg).toContain("Claude CLI installer exited with code 1"); + expect(msg).toContain("getaddrinfo ESERVFAIL downloads.claude.ai"); + }); + + it("reports the exit code cleanly when there is no output", () => { + const msg = formatInstallerError("Codex CLI installer", 127, " \n "); + + expect(msg).toContain("exited with code 127"); + expect(msg).not.toContain("undefined"); + }); +}); diff --git a/test/stages/review.test.ts b/test/stages/review.test.ts index e3703fd..6f65736 100644 --- a/test/stages/review.test.ts +++ b/test/stages/review.test.ts @@ -48,6 +48,14 @@ function blockedOutcome(lens: LensOutcome["lens"]): LensOutcome { }; } +function failedOutcome( + lens: LensOutcome["lens"], + kind: string, + message: string, +): LensOutcome { + return { lens, decision: null, error: { kind, message } }; +} + const patch = `@@ -1,1 +1,3 @@ -old line +new line a @@ -211,6 +219,108 @@ describe("aggregateFindings", () => { } }); + it("returns errored when every lens fails to complete", () => { + const result = aggregateFindings({ + outcomes: [ + failedOutcome( + "compliance", + "agent_execution", + "Claude CLI installer exited with code 1: getaddrinfo ESERVFAIL downloads.claude.ai", + ), + failedOutcome( + "bugs", + "agent_execution", + "Claude CLI installer exited with code 1", + ), + failedOutcome( + "security", + "agent_execution", + "Claude CLI installer exited with code 1", + ), + failedOutcome( + "smells", + "agent_execution", + "Claude CLI installer exited with code 1", + ), + ], + patches: [], + currentIteration: 0, + maxIterations: 3, + confidenceThreshold: 80, + }); + expect(result.kind).toBe("errored"); + if (result.kind === "errored") { + expect(result.body).toContain("could not complete"); + expect(result.body).toContain( + "getaddrinfo ESERVFAIL downloads.claude.ai", + ); + expect(result.failures).toHaveLength(4); + // First failure: count increments to 1, no escalation yet. + expect(result.errorCount).toBe(1); + expect(result.escalate).toBe(false); + } + }); + + it("errored increments the consecutive-error count without escalating below the threshold", () => { + const result = aggregateFindings({ + outcomes: [ + failedOutcome("compliance", "agent_execution", "installer failed"), + failedOutcome("bugs", "agent_execution", "installer failed"), + failedOutcome("security", "agent_execution", "installer failed"), + failedOutcome("smells", "agent_execution", "installer failed"), + ], + patches: [], + currentIteration: 0, + maxIterations: 3, + confidenceThreshold: 80, + currentErrorCount: 1, + maxConsecutiveReviewErrors: 3, + }); + expect(result.kind).toBe("errored"); + if (result.kind === "errored") { + expect(result.errorCount).toBe(2); + expect(result.escalate).toBe(false); + } + }); + + it("errored escalates once the consecutive-error count reaches the threshold", () => { + const result = aggregateFindings({ + outcomes: [ + failedOutcome("compliance", "agent_execution", "installer failed"), + failedOutcome("bugs", "agent_execution", "installer failed"), + failedOutcome("security", "agent_execution", "installer failed"), + failedOutcome("smells", "agent_execution", "installer failed"), + ], + patches: [], + currentIteration: 0, + maxIterations: 3, + confidenceThreshold: 80, + currentErrorCount: 2, + maxConsecutiveReviewErrors: 3, + }); + expect(result.kind).toBe("errored"); + if (result.kind === "errored") { + expect(result.errorCount).toBe(3); + expect(result.escalate).toBe(true); + } + }); + + it("does not return errored when at least one lens succeeded", () => { + const result = aggregateFindings({ + outcomes: [ + cleanOutcome("compliance"), + failedOutcome("bugs", "agent_execution", "installer failed"), + failedOutcome("security", "agent_execution", "installer failed"), + failedOutcome("smells", "agent_execution", "installer failed"), + ], + patches: [], + currentIteration: 0, + maxIterations: 3, + confidenceThreshold: 80, + }); + expect(result.kind).toBe("request_changes"); + }); + it("returns iteration_cap when nextIteration > maxIterations", () => { const result = aggregateFindings({ outcomes: [ @@ -318,6 +428,32 @@ describe("applyReview", () => { expect(mg.removeLabel).toHaveBeenCalledWith(42, "shopfloor:needs-review"); }); + it("approve clears a persisted consecutive-error count", async () => { + const reviewGh = makeMockGithub(); + const { ctx, mg } = ctxFor(reviewGh); + ctx.pr!.body = + "PR body\n\nShopfloor-Review-Iteration: 0\nShopfloor-Review-Error-Count: 2"; + await applyReview(ctx, { + outcome: { kind: "approve", body: "clean", successfulLenses: 4 }, + labelTarget: 42, + }); + // A clean approval proves the CLI works, so the counter must be reset. + expect(mg.updatePrBody).toHaveBeenCalledWith( + 100, + expect.not.stringContaining("Shopfloor-Review-Error-Count"), + ); + }); + + it("approve does not rewrite the body when no error count is present", async () => { + const reviewGh = makeMockGithub(); + const { ctx, mg } = ctxFor(reviewGh); + await applyReview(ctx, { + outcome: { kind: "approve", body: "clean", successfulLenses: 4 }, + labelTarget: 42, + }); + expect(mg.updatePrBody).not.toHaveBeenCalled(); + }); + it("posts REQUEST_CHANGES and writes iteration line to PR body", async () => { const reviewGh = makeMockGithub(); const { ctx, mg } = ctxFor(reviewGh); @@ -357,6 +493,87 @@ describe("applyReview", () => { ); }); + function erroredOutcome(errorCount: number, escalate: boolean) { + return { + kind: "errored" as const, + body: "could not complete", + failures: [ + { + lens: "bugs" as const, + kind: "agent_execution", + message: "installer failed", + }, + ], + errorCount, + escalate, + }; + } + + it("errored (below threshold): COMMENTs, errors the status, persists the count, no verdict labels", async () => { + const reviewGh = makeMockGithub(); + const { ctx, mg, audit } = ctxFor(reviewGh); + await applyReview(ctx, { + outcome: erroredOutcome(1, false), + labelTarget: 42, + }); + expect(mg.postReview).toHaveBeenCalledWith( + expect.objectContaining({ event: "COMMENT" }), + ); + expect(mg.setReviewStatus).toHaveBeenCalledWith( + "head-sha", + "error", + expect.stringContaining("could not complete"), + undefined, + ); + // Persist the incremented count so the next run can escalate. + expect(mg.updatePrBody).toHaveBeenCalledWith( + 100, + expect.stringContaining("Shopfloor-Review-Error-Count: 1"), + ); + // No stuck/changes labels and no REQUEST_CHANGES verdict event. + expect(mg.addLabel).not.toHaveBeenCalled(); + expect(reviewGh.postReview).not.toHaveBeenCalled(); + expect(audit).toHaveBeenCalledWith( + expect.objectContaining({ type: "review_posted", verdict: "errored" }), + ); + }); + + it("errored (escalate): flips review-stuck, pages a human, does not persist the count", async () => { + const { ctx, mg } = ctxFor(null); + await applyReview(ctx, { + outcome: erroredOutcome(3, true), + labelTarget: 42, + }); + expect(mg.addLabel).toHaveBeenCalledWith(42, "shopfloor:review-stuck"); + expect(mg.removeLabel).toHaveBeenCalledWith(42, "shopfloor:needs-review"); + expect(mg.postIssueComment).toHaveBeenCalledWith( + 100, + expect.stringContaining("consecutive"), + ); + expect(mg.setReviewStatus).toHaveBeenCalledWith( + "head-sha", + "error", + expect.any(String), + undefined, + ); + expect(mg.updatePrBody).not.toHaveBeenCalled(); + }); + + it("reviewOnly: errored skips error-count persistence and all labels", async () => { + const { ctx, mg } = ctxFor(null); + ctx.reviewOnly = true; + await applyReview(ctx, { + outcome: erroredOutcome(1, false), + labelTarget: 42, + }); + expect(mg.postReview).toHaveBeenCalledWith( + expect.objectContaining({ event: "COMMENT" }), + ); + expect(mg.updatePrBody).not.toHaveBeenCalled(); + expect(mg.addLabel).not.toHaveBeenCalled(); + expect(mg.removeLabel).not.toHaveBeenCalled(); + }); + it("applies review-stuck on iteration_cap", async () => { const { ctx, mg } = ctxFor(null); await applyReview(ctx, { diff --git a/test/state/machine.test.ts b/test/state/machine.test.ts index 6551c2d..dce82fa 100644 --- a/test/state/machine.test.ts +++ b/test/state/machine.test.ts @@ -64,6 +64,24 @@ describe("resolveStage", () => { expect(decision.stage).toBe("review"); expect(decision.implPrNumber).toBe(45); expect(decision.reviewIteration).toBe(0); + expect(decision.reviewErrorCount).toBe(0); + }); + + test("review routing forwards the persisted consecutive-error count", () => { + const base = ctx("pull_request", "pr-synchronize-impl"); + const pr = (base.payload as PullRequestPayload).pull_request; + const decision = resolveStage({ + ...base, + payload: { + ...(base.payload as PullRequestPayload), + pull_request: { + ...pr, + body: `${pr.body ?? ""}\nShopfloor-Review-Error-Count: 2`, + }, + }, + }); + expect(decision.stage).toBe("review"); + expect(decision.reviewErrorCount).toBe(2); }); test("spec PR merged -> none (reason triggers label flip)", () => { diff --git a/test/state/metadata.test.ts b/test/state/metadata.test.ts index 936ba4c..973db81 100644 --- a/test/state/metadata.test.ts +++ b/test/state/metadata.test.ts @@ -179,22 +179,24 @@ describe("parsePrMetadata", () => { expect(parsePrMetadata("No metadata here.")).toBeNull(); }); - test("parses all three fields when present", () => { + test("parses all fields when present", () => { const body = - "Shopfloor-Issue: #42\nShopfloor-Stage: implement\nShopfloor-Review-Iteration: 3"; + "Shopfloor-Issue: #42\nShopfloor-Stage: implement\nShopfloor-Review-Iteration: 3\nShopfloor-Review-Error-Count: 2"; expect(parsePrMetadata(body)).toEqual({ issueNumber: 42, stage: "implement", reviewIteration: 3, + reviewErrorCount: 2, }); }); - test("defaults reviewIteration to 0 when absent", () => { + test("defaults reviewIteration and reviewErrorCount to 0 when absent", () => { const body = "Shopfloor-Issue: #7\nShopfloor-Stage: spec"; expect(parsePrMetadata(body)).toEqual({ issueNumber: 7, stage: "spec", reviewIteration: 0, + reviewErrorCount: 0, }); });